Você está na página 1de 3

Resumo 4.2 e meio 4.

Princípios da memória cache

A memória cache é desenvolvida para combinar o tempo de acesso de memórias de alto


custo e alta velocidade com as memórias de menor velocidade, maior tamanho e baixo
custo.

O conceito é ilustrado na Figura 4.3a.

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 Figura 4.4 representa a estrutura de um sistema de cache/memória principal. A memória


principal consiste em até 2^n palavras endereçáveis, com cada palavra tendo um endereço
distinto de n bits. Essa memória é considerada como sendo uma série de blocos de
tamanho fixo com K palavras cada.

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.

O tamanho da linha corresponde à extensão da mesma, sem incluir o tag e os bits de


controle. O tamanho da linha pode ter apenas 32 bits, com cada “palavra” sendo um único
byte, logo, o tamanho da linha é de 4 bytes.

O número de linhas na cache é consideravelmente menor que o número de blocos da


memória principal.

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”)

A Figura 4.5 ilustra a operação de leitura.

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.

Nesta organização, a cache se conecta ao processador por meio de linhas de dados,


controle e endereço. As linhas de dados e endereço também se conectam aos buffers de
dados e de endereço , que se conectam ao barramento do sistema, do qual a memória
principal é acessada

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.

Em outras organizações, a cache é fisicamente colocada entre o processador e a memória


principal para todas as linhas de dados, endereço e controle. Nesse caso, para uma falha
de cache, a palavra desejada primeiro é transferida para a cache e depois transferida da
cache para o processador

Elementos de projeto da cache


Nessa parte iremos fornecer uma visão geral dos parâmetros de projeto de memória cache
e sua relevância na computação de alto desempenho (HPC - High Performance
Computing), que envolve supercomputadores e software para aplicações científicas
complexas. O projeto de memória cache para HPC difere significativamente de outras
plataformas, às vezes não funcionando bem. No entanto, pesquisadores mostraram que,
com ajustes no software, uma hierarquia de memória cache pode melhorar o desempenho.
Existem elementos básicos de projeto que diferenciam as arquiteturas de memória cache,
que são:

● 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.

Tamanho da memória cache

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.

Você também pode gostar