Mapeamento Associativo por Conjuntos
Em toda execução de uma instrução, o processador acessa a memória principal (MP) pelo menos uma vez, para buscar a instrução e transferi-la para um dos registradores do processador. Um ciclo de memória é atualmente bem mais demorado que a execução da instrução propriamente dita.
Para solucionar este atraso, foram incluídos dispositivos de memória CACHE (que são extremamente rápidas) entre o processador e a memória principal de forma que a CACHE armazena informações trocadas entre a MP e o processador, porem esse novo método é muito caro e as CACHES possuem uma pequena capacidade de armazenamento, por isso é feito uma verificação: se a instrução que o processador necessita no momento se encontra nela, dizemos que ocorreu um hit de dados, se não se encontra na mesma, dizemos que ocorreu um miss, e o processador necessita buscar a informação da MP.
O trabalho a seguir apresenta o funcionamento de uma memória tipo CACHE. Existem vários tipos de mapeamentos para elaboração da mesma, porem aqui iremos trabalhos com o Mapeamento Associativo por Conjunto, porem necessitamos relembrar um pouco de dois outros tipos de mapeamentos mais simples: o Direto e o Associativo.
Para trabalhar com a memória CACHE temos elementos como a memória principal (geralmente RAM), composto por um número X de células que podem ser de vários tamanhos (aqui iremos trabalhar com uma memória principal de 64 células e capacidade de 1 bit cada uma) e são divididos por blocos. Cada bloco será direcionado para uma linha da CACHE de modo diferente para cada tipo de mapeamento, de forma que o tamanho de um bloco tem de ser igual ao tamanho de uma linha.
Método de como cada bloco se relaciona com a linha da CACHE:
Mapeamento Direto: Cada bloco se relacionara com uma linha da CACHE, sendo que cada linha pode receber mais de um bloco, tudo depende do tamanho de cada célula e do tamanha da própria linha.
Mapeamento Associativo: