Memória cache - função de mapeamento - associativo e associativo por conjunto
Como o número de linhas da memória cache é menor que o número de blocos da memória principal, necessitamos de um mecanismo para saber se a palavra que procuramos está na memória cache. Para isto temos algoritmos desenvolvidos para mapear blocos da memória principal em linhas da memória cache. Estes algoritmos indicam como a memória cache está organizada. Três técnicas podem ser usadas:
• Mapeamento Direto • Mapeamento Associativo • Mapeamento Associativo por Conjunto
Como já foi explanado em aulas anteriores o Mapeamento Direto, estaremos focando a atenção ao Mapeamento Associativo e ao Mapeamento Associativo por Conjunto.
Mapeamento Associativo
Neste mapeamento não temos uma linha específica da memória cache para armazenar as informações contidas em blocos predeterminados na memória principal como descrito no mapeamento direto, ou seja, cada bloco da memória principal pode ser carregado em qualquer linha da memória cache.
O endereço da memória principal é dividido em dois campos: deslocamento dentro da linha (Coluna) e o TAG.
[pic]
O carregamento do bloco da memória principal na linha da cache se dá sob demanda. Quando a CPU solicita o conteúdo de uma determinada célula da memória principal, a memória cache verifica se algum TAG já contém o endereço. Como o bloco pode estar carregado em qualquer linha, a memória cache compara o endereço do bloco, com os TAGs de todas as linhas simultaneamente. Caso ocorra alguma coincidência, então teremos um hit, e neste caso a memória cache fornece o conteúdo correspondente numa velocidade muito superior ao da memória principal. Contudo, se nenhum TAG contiver o endereço do bloco, então teremos um miss, forçando a memória cache a carregar este bloco em uma de suas linhas.
• Vantagem:
Oferece maior flexibilidade para escolha do bloco a ser substituído quando um novo bloco é trazido para a memória cache.
• Desvantagem:
Complexidade do conjunto de circuitos