Bom, juro que esperava uma pergunta mais especifica por isso não respondi no outro comentário...
Explicar a tabela de tags via texto apenas é complicado.
http://www.inf.pucrs.br/~emoreno/undergraduate/SI/orgarq/class_files/Aula12.pdf
Essa apresentação explica mapeamento direto, e logo como implementar a tabela de tag (matriz de etiqueta).
Como a pergunta é mais geral, sugiro que leia o capitulo 7 do livro "Organização e Projetos de Computadores" do Patterson. É o livro mais didático e contém diversos exercicios que vão sanar suas duvidas de implementação.
https://www.passeidireto.com/arquivo/5944718/organizacao-e-projeto-de-computadores-----david-a-patterson
Mas a ideia de modo geral é simples e genial:
Na sua cache, voce adiciona mais um campo: o campo TAG.
Então voce divide o ENDEREÇO da memória principal em duas partes: os primeiros n bits da esquerda para a direita serão os que indicarão qual a linha da cache os dados estão (com uma cache de tamanho 2^n linhas) e os m bits restantes serão a TAG.
Depois, ainda adicionamos um campo de validade, que verifica se os dados são válidos.
Com essa implementação, fica simples a lógica de acerto e faltas.
Basta comparar a TAG do endereço pedido pelo código com a TAG que está na tabela de TAGs. A saida dessa comparação, você faz um AND com o bit de validade.
Se o a linha não estiver válida ou não for a mesma TAG significa um cache miss(falta), ou seja, o processador vai ter que esperar para que se faça um acesso à memória principal em caso de dependencia de dados (No caso de CACHE L1).
Para exemplos consulte os materiais!
Abraço
Para escrever sua resposta aqui, entre ou crie uma conta
Organização e Arquitetura de Computadores
•ESTÁCIO
Compartilhar