1PUCC
Agenda
• Memória CACHE
2PUCC
Memória Cache
• Motivo– Melhorar a relação entre o tempo de
acesso a dados e instruções e a velocidade dos processadores.
• Problema– Custo elevado
• Utilização– Praticamente todos os computadores
3PUCC
Localidade
• Constatação: programas são escritos e executados pela CPU em pequenos grupos de instruções
• Então não é necessário ter uma memória rápida e cara muito grande
• Podemos estabelecer um compromisso entre custo e desempenho
4PUCC
Localidade
• Temporal: quando a CPU acessa uma palavra de memória existe uma boa probabilidade que em breve acesse a mesma palavra.
• Espacial: quando a CPU acessa uma palavra de memória existe uma boa probabilidade que o programa acesse uma palavra subsequente.
5PUCC
Programa
Loop 1
Loop 2
PARTE 1
Chamada de Função
Função
PARTE 2
PARTE 3
6PUCC
Organização
CPU
MemóriaPrincipal
Transferência de
Palavras
Transferência de
Blocos
CACHE
7PUCC
Funcionamento
• A CPU sempre acessa a memória Cache (dados ou instruções)
• Acerto: a CPU encontra a informação na memória Cache
• Falta: a informação não está na Cache, a execução é suspensa e a informação é transferida da MP para a memória Cache.
8PUCC
Tempo de Acesso
% acerto (p)
T1
T2
T1+T2
1000
TA= p . T1 + (1-p) . (T2 +T1)
9PUCC
Memória Cache
• Tamanho
• Mapeamento
• Substituição de dados na Cache
• Política de escrita pela Cache
10PUCC
Tamanho
• Quanto maior melhor
• Problema custo elevado
• Relação acertos / faltas
• Relação Tempo Acesso Cache pelo Tempo de Acesso da MP
• Natureza dos Programas
11PUCC
Mapeamento0123456789
N-1
Bloco 0
Bloco 1
Bloco B-1
B= N / K = 2E / K
012
Q-1
Tamanho do Bloco
(K palavras)
Tag
Q << B
12PUCC
Mapeamento Direto
• MP= 4G palavras E= 32 bits
• Cache= 64 KB Q= 1K– 1 Quadro possui 64 Bytes ou palavras
• B= 4G / 64 Bytes =
• Então:– cada quadro do cache deverá acomodar
64K Blocos.
64 M Blocos
13PUCC
Exemplo
TAG BLOCOSquadro 0 0 1 2 63quadro 1quadro 2
quadro 1023 16 bits 64 Bytes
Endereço da MP possui 32 bits
16 bits 6 bits10 bits
Endereço da palavra
Número do quadro
Número do bloco no Quadro - TAG
63 62 61 0
14PUCC
Mapeamento Direto
• Para definir quais blocos da MP serão alocados a um quadro específico: q= N mod Q.
q= número do quadro da Cache
N= endereço da MP
Q= número de quadros da Cache
• q= 0: blocos 0, 1024,2048,...
• q=1023: blocos 1023,2047,.., 64M-1
15PUCC
Mapeamento Associativo
• Os blocos não têm um quadro associado. Se o bloco desejado não está em nenhum quadro da Cache, ele deverá ser transferido para a Cache, substituindo um bloco armazenado nela.
16PUCC
Mapeamento Associativo
6 bitsEndereçoda palavra
26 bitsEndereço do Bloco
• Cada vez que a CPU realizar um acesso, o controlador de cache deve examinar e comparar os 26 bits do endereço do bloco
17PUCC
Associativo por Conjuntos
• Tenta resolver o problema do conflito de blocos em um mesmo quadro (mapeamento direto) e o problema da busca exaustiva e comparação das tags de toda a cache (mapeamento associativo)
18PUCC
Associativo por Conjuntos
• Organiza os quadros da Cache em grupos - conjuntos. Dentro dos conjuntos, os quadros são associativos.
• A cache é dividida em C conjuntos de D quadros, assim, Q = C x D.
6 bitsEndereçoda palavra
17 bitsTAG
9 bitsNúmero do Conjunto
19PUCC
Substituição de dados
• Mapeamento Direto: não há o que se fazer - é pré-definida.
• Mapeamento Associativo ou Associativo por Conjuntos– O que não é usado há mais tempo
– Fila ( first in first out)
– O que tem menos referência
– Escolha aleatória
20PUCC
Escrita na Cache
• Em sistemas com memória Cache, toda vez que a CPU realiza uma operação de escrita, esta ocorre na cache. Portanto, é necessário que em alguns momentos, a MP seja atualizada.
• Antes que um bloco seja substituído na cache, é necessário saber se ele foi alterado ou não.
21PUCC
Escrita na Cache
• Este problema é complicado– a MP pode ser acessada pela cache e
por dispositivos de E/S (DMA), neste caso a palavra da MP pode ter sido alterada e da cache não.
– Computadores que possuam várias CPU´s cada uma com sua cache.
22PUCC
Escrita na Cache
• Write Through– cada escrita na cache acarreta escrita
igual na MP.
– Caso existam outras CPU´s com cache o procedimento se repete
• Pode causar uma grande quantidade de escritas desnecessárias na MP, reduzindo o desempenho do sistema
23PUCC
Escrita na Cache
• Write Back– atualiza a MP quando o bloco foi
substituído e houver ocorrido alguma alteração. Existe um bit de flag para identificar se houve alteração de conteúdo.
• A MP fica potencialmente desatualizada para utilização de outros dispositivos.
24PUCC
Escrita na Cache
• Write Once– apropriada para arquiteturas multi-CPUs.
Por ela, o controlador da cache atualiza a MP sempre que o bloco correspondente na cache foi atualizada pela primeira vez. Essa escrita serve de alerta para os demais componentes. Esse alerta impede o uso da palavra
Top Related