Hierarquia de Memória e Caches
A hierarquia de memória organiza o armazenamento em níveis — registradores, caches, memória principal e armazenamento de apoio — de modo que os níveis pequenos e rápidos contenham os dados com maior probabilidade de serem usados, dando aos programas a ilusão de uma memória que é ao mesmo tempo grande e rápida.
Definition
Uma hierarquia de memória é um arranjo em camadas de tecnologias de armazenamento de diferentes velocidades, custos e capacidades, gerenciado de modo que os dados acessados com frequência e recentemente residam nos níveis menores e mais rápidos — principalmente o cache — para minimizar o tempo médio de acesso.
Scope
Esta área abrange o porquê e como a memória é organizada como uma hierarquia, explorando a localidade de referência. Inclui a estrutura do cache (políticas de posicionamento, substituição e escrita), caches multinível, coerência de cache entre processadores, memória virtual e tradução de endereços, e as tecnologias subjacentes de DRAM e memórias emergentes. Exclui a execução do processador em si (microarquitetura do processador) e o armazenamento de arquivos e dispositivos em larga escala (sistemas de armazenamento e E/S), embora faça fronteira com ambos.
Sub-topics
Core questions
- Por que a localidade de referência torna uma hierarquia de memória em camadas eficaz?
- Como os caches são organizados em termos de posicionamento, associatividade, substituição e política de escrita?
- Como a coerência é mantida quando múltiplos caches contêm cópias da mesma memória?
- Como a memória virtual traduz endereços e fornece proteção e a ilusão de uma memória grande?
- Como as características da DRAM e das memórias emergentes moldam o desempenho do sistema?
Key concepts
- localidade temporal e espacial
- acerto e falha de cache (cache hit and miss)
- associatividade e política de substituição
- write-through e write-back
- caches multinível
- coerência de cache
- memória virtual e paginação
- buffer de lookaside de tradução (translation lookaside buffer)
- DRAM e largura de banda da memória
- tempo médio de acesso à memória
Key theories
- Localidade de referência
- Os programas tendem a reutilizar dados acessados recentemente (localidade temporal) e acessar endereços próximos (localidade espacial); a hierarquia de memória explora ambos, armazenando em cache blocos usados recentemente e buscando vizinhos juntos.
- Compromissos de design de cache
- O desempenho do cache é governado pela taxa de falhas (miss rate), penalidade de falha (miss penalty) e tempo de acerto (hit time), e ajustado através do tamanho, tamanho do bloco, associatividade e políticas de substituição e escrita; análises clássicas identificam falhas compulsórias, de capacidade e de conflito como os alvos dessas escolhas.
Mechanisms
Quando o processador solicita dados, o cache é verificado primeiro; um acerto (hit) retorna os dados rapidamente, enquanto uma falha (miss) busca um bloco de um nível inferior e pode desalojar outro por uma política de substituição. As escritas são propagadas por esquemas write-through ou write-back, e os protocolos de coerência mantêm múltiplos caches consistentes. A memória virtual adiciona uma etapa de tradução — via tabelas de páginas e um buffer de lookaside de tradução (TLB) — mapeando endereços de programa para DRAM física enquanto impõe proteção.
Clinical relevance
A hierarquia de memória frequentemente domina o desempenho real: como os processadores são muito mais rápidos que a memória principal, o comportamento do cache e a localidade muitas vezes importam mais do que a velocidade bruta das instruções. Layouts de dados cientes do cache, bloqueio e pré-busca são centrais para computação de alto desempenho, bancos de dados e kernels de aprendizado de máquina, e o tempo do cache tornou-se uma fonte de canais laterais de segurança.
History
Maurice Wilkes propôs o cache (uma 'memória escrava') em 1965, e os caches entraram em máquinas comerciais como o IBM System/360 Modelo 85. A memória virtual originou-se com o computador Atlas no início dos anos 1960, formalizada pelo modelo de conjunto de trabalho de Denning. A pesquisa de Alan Jay Smith de 1982 consolidou o conhecimento de design de cache, e caches multinível e protocolos de coerência sofisticados tornaram-se padrão à medida que as lacunas de velocidade processador-memória se ampliavam.
Debates
- Gerenciamento de localidade por hardware versus software
- Existe uma tensão contínua entre o cache transparente por hardware e as memórias explicitamente gerenciadas (scratchpads, pré-busca controlada por software): o cache por hardware é geral e fácil de programar, enquanto o gerenciamento explícito pode ser mais previsível e eficiente para cargas de trabalho especializadas.
Key figures
- Maurice Wilkes
- Alan Jay Smith
- Peter J. Denning
- John L. Hennessy
- David A. Patterson
Related topics
Seminal works
- hennessy2019
- smith1982cache
- patterson2020
Frequently asked questions
- Por que os caches são eficazes se são tão pequenos em comparação com a memória principal?
- Porque os programas exibem localidade: a qualquer momento, eles tocam apenas um pequeno conjunto de dados de trabalho repetidamente, e os acessos se agrupam em endereços próximos. Um cache pequeno que contém esse conjunto de trabalho, portanto, satisfaz a grande maioria das solicitações.
- Qual é a diferença entre um cache e a memória virtual?
- Ambos movem dados entre um nível mais rápido e menor e um nível mais lento e maior. Um cache (gerenciado por hardware) contém blocos da memória principal; a memória virtual (gerenciada com o sistema operacional) mapeia endereços de programa para a memória física e pagina dados de e para o disco, também fornecendo proteção e um espaço de endereço maior do que a RAM física.