Escolar Documentos
Profissional Documentos
Cultura Documentos
Há uma memória principal relativamente grande e lenta junto da memória cache, menor e
mais rápida. Ela contém uma cópia de partes da memória principal.
Quando o processador tenta ler uma palavra da memória, é executada uma verificação para
determinar se a palavra está na cache. Se for o caso, ela é entregue ao processador. Caso
contrário, um bloco da memória principal, formado por algum número fixo de palavras, é
transferido para a cache, e então a palavra é fornecida ao processador.
Quando um bloco de dados é levado para a cache para satisfazer uma única referência de
memória, é provável que haja referências futuras a esse mesmo local da memória ou a
outras palavras no mesmo bloco.
A Figura 4.3b representa o uso de múltiplos níveis de cache. Sendo que a cache L2 é mais
lenta e em geral maior que a cache L1, e a cache L3 é mais lenta e normalmente maior que
a cache L2. (L1 pequena e rápida, L2 maior e mais lenda que L1 e L3 maior e mais lenta que L2)
A cache consiste em m blocos, chamados de linhas. Cada uma contendo K palavras, além
de um tag de alguns bits e bits de controle, que por exemplo, utiliza um bit para indicar se a
linha foi alterada desde que foi carregada na cache.
A qualquer momento, algum subconjunto dos blocos de memória pode residir nas linhas da
cache. Se uma palavra em um bloco de memória for lida, esse bloco é transferido para uma
das linhas da cache e por existir mais blocos do que linhas, uma linha individual não pode
ser dedicada exclusiva e permanentemente a um único bloco. Assim, cada linha inclui um
tag que identifica qual bloco em particular está armazenado atualmente. Ele em geral é uma
parte do endereço da memória principal. (Possível exemplo: Podemos pensar no endereço de
memória como o título daquele ou daqueles dados, como, “Nomes dos alunos de arqcomp” e o tag como
apenas um pedaço ou resumo desse título, que seria, “Alunos arqcomp”)
O processador gera o endereço de leitura de uma palavra a ser lida, se a palavra estiver na
cache, ela é entregue ao processador. Caso contrário, o bloco que contém esta palavra é
carregado na cache e então a palavra é transmitida ao processador. (Mesma explicação dada
anteriormente)
A Figura 4.5 mostra essas duas operações ocorrendo em paralelo e reflete a organização
mostrada na Figura 4.6, típica das organizações de cache modernas.
Quando ocorre um acerto de cache (Quando a palavra necessária já está na cache), os buffers
de dados e endereço são desabilitados e a comunicação ocorre apenas entre o
processador e a memória cache, sem tráfego no barramento do sistema.
Quando ocorre uma falha de cache (Quando a palavra necessária não está na cache), o
endereço desejado é carregado no barramento do sistema e os dados são transferidos pelo
buffer de dados para a cache e para o processador.
● Endereços da cache
● Tamanho da memória cache
● Função de mapeamento
● Algoritmo de substituição
● Política de escrita
● Tamanho da linha
● Número de cache
Endereços da cache.
A maioria dos processadores suporta memória virtual, permitindo que os programas usem
endereços virtuais que são traduzidos em endereços físicos pela MMU (Memory
Management Unit) para acessar a memória principal. De um ponto de vista lógico, a
memória virtual não considera a quantidade de memória principal disponível fisicamente.
Isso simplifica o gerenciamento de memória.
Quando são usados endereços virtuais, o projetista do sistema pode escolher colocar a
cache entre o processador e a MMU ou entre a MMU e a memória principal (Figura 4.7).
Uma cache lógica, também conhecida como cache virtual, armazena dados usando
endereços virtuais. O processador acessa a cache diretamente, sem passar pela MMU.
Uma cache física armazena dados usando endereços físicos da memória principal.
A cache lógica é mais rápida do que a cache física, pois responde antes da tradução de
endereço pela MMU. No entanto, a desvantagem é que cada aplicação tem o mesmo
espaço de endereço virtual, o que significa que um mesmo endereço virtual em duas
aplicações diferentes pode se referir a endereços físicos distintos. Isso requer a limpeza
completa da cache durante a troca de contexto ou o uso de bits extras para identificar o
espaço de endereço virtual.
O tamanho ideal da cache deve encontrar um equilíbrio entre o custo médio por bit, próximo
ao da memória principal, e o tempo médio de acesso, próximo ao da cache isolada. Além
disso, caches maiores envolvem mais portas, o que pode torná-las ligeiramente mais lentas,
mesmo com a mesma tecnologia de circuito integrado e posicionamento no chip. Restrições
de espaço no chip e na placa também limitam o tamanho da cache. Dado que o
desempenho da cache é sensível ao tipo de carga de trabalho, não há um tamanho único
ideal de cache, tornando a otimização um desafio. Portanto, é crucial considerar todas
essas variáveis ao projetar um sistema de cache eficiente.