Memória principal sempre vai ter capacidade de endereçamento que as Cache. O mapeamento é uma função que mapeia blocos de memória em blocos de memória cache.

Direto

Um bloco na memória só pode ser armazenado em uma linha de cache.

Forma mais simples de implementar:

Tag: bits de alta ordem que indicam o endereço do bloco de memória valid: indica se o dado armazenado é válido ou não

Exemplo:

Miss: não há nada armazenado na cache Endereço em binário do item a ser buscado na memória é 10110

Nossa cache tem 3 bits de endereçamento, tendo 8 linhas O mod são os bits de baixa ordem, portanto 110, endereço na cache onde o dado é inserido Tag é igual a 10, sendo os bits de alta ordem que complementam o endereço onde o dado está armazenado fora da cache Data armazena o valor vindo da memória

Totalmente associativo

Um dado da memória principal pode ser mapeado em qualquer linha da cache. Todas as entradas devem ser pesquisadas de uma vez só, bastante caro.

Associativo em conjunto

Cada bloco da memória principal pode ser mapeado para um conjunto determinado (sets) de linhas de cache. Apenas pesquisa nas possíveis posições onde a variável pode ser armazenada. Mais barato que o totalmente associativo.