Substituição de Blocos na Memória Cache
Ainda sobre a questão de memória cache, considere o exemplo de uma seqüência de endereços acessando a memória principal(endereços referenciado a memória – independente de ser uma leitura de instrução, leitura ou escrita dedados etc.). Considere uma memória cache com somente 4 posições totalmente associativa e algoritmo de substituição FIFO (o primeiro que entra é o primeiro que sai), palavra de apenas um byte. Para uma seqüência de endereços de memória do tipo 8 7 5 2 3 6 5 2 8 ... teremos:
Inicialmente a memória cache está vazia...
Endereço 8 sendo referenciado, ele será armazenado na cache, na primeira posição
O próximo endereço referenciado é o endereço 7, cujo conteúdo será armazenado na próxima posição da memória cache...
Na seqüência, teremos o endereço 5 cujo conteúdo será armazenado na próxima posição...
E agora, a referência ao endereço 2...
Ao ocorrer a referência ao endereço 3, este não encontra mais posições livres de memória, logo deverá ocorrer alguma substituição, e neste caso (FIFO), a primeira posição, com o conteúdo do endereço 8 será substituída pelo conteúdo do endereço 3...
O mesmo acontece com o acesso ao endereço 6...
Ao acessar o endereço 5 (o próximo da lista), este já está presente na memória cache, não necessitando de nenhuma substituição (houve um cache hit! – acerto da cache), assim como o próximo acesso, ao endereço 2.
Ao ocorrer um novo acesso, ao endereço 8, este deverá substituir alguma posição na cache. No nosso exemplo, o resultado será...
Observe que a terceira posição possuía o conteúdo mais antigo da cache...