O cache está próximo da CPU e mais rápido do que a memória principal. Mas ao mesmo tempo é menor que a memória principal. A organização do cache consiste em mapear dados na memória para um local no cache.

Uma solução simples:
uma maneira de fazer esse mapeamento é considerar os últimos bits do endereço de memória longo para encontrar o endereço de cache pequeno e colocá-los no endereço encontrado.

Problemas com solução simples:
O problema com essa abordagem é que perdemos as informações sobre os bits de ordem superior e não temos como descobrir se os bits de ordem inferior pertencem a quais bits de ordem superior.

CacheOrg

A solução é Tag:
Para lidar com o problema acima, mais informações são armazenadas no cache para dizer qual bloco de memória está armazenado no cache. Armazenamos informações adicionais como Tag
Tag

O que é um bloco de cache?
Uma vez que os programas têm Localidade Espacial (uma vez que um local é recuperado, é altamente provável que os locais próximos sejam recuperados em um futuro próximo). Portanto, um cache é organizado na forma de blocos. Os tamanhos de bloco de cache típicos são 32 bytes ou 64 bytes.

cacheBlock

O arranjo acima é Direct Mapped Cache e tem o seguinte problema.
Discutimos acima que os últimos bits de endereços de memória estão sendo usados ​​para endereçar em cache e os bits restantes são armazenados como tag. Agora imagine que o cache é muito pequeno e tem endereços de 2 bits. Suponha que usemos os dois últimos bits do endereço da memória principal para decidir o cache (conforme mostrado no diagrama abaixo). Portanto, se um programa acessa 2, 6, 2, 6, 2, ..., todo acesso causaria um acerto, já que 2 e 6 devem ser armazenados no mesmo local no cache.

blocos

Solução para o problema acima - Associatividade
E se pudéssemos armazenar dados em qualquer lugar do cache, o problema acima não estaria lá? Isso tornaria o cache lento, então fazemos algo entre eles.

esconderijo

Fonte:
https://www.youtube.com/watch?v=sg4CmZ-p8rU
<iframe allow="autoplay; encrypted-media" allowfullscreen="" frameborder="0" height="374" src="https://www.youtube.com/embed/sg4CmZ-p8rU?feature=oembed" width="665"></iframe>

Em breve, discutiremos mais detalhes sobre a organização do cache.

Este artigo é uma contribuição de Ankur Gupta . Escreva comentários se encontrar algo incorreto ou se quiser compartilhar mais informações sobre o tópico discutido acima