Organização de Computadores - FTP da PUC

Propaganda
Agenda
• Memória CACHE
PUCC
1
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
PUCC
2
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
PUCC
3
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.
PUCC
4
Programa
PARTE 1
Chamada de Função
Loop 1
PARTE 2
Loop 2
PARTE 3
Função
PUCC
5
Organização
CPU
Transferência de
Palavras
CACHE
Memória
Principal
PUCC
Transferência de
Blocos
6
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.
PUCC
7
Tempo de Acesso
TA= p . T1 + (1-p) . (T2 +T1)
T1+T2
T2
T1
0
PUCC
100
% acerto (p)
8
Memória Cache
• Tamanho
• Mapeamento
• Substituição de dados na Cache
• Política de escrita pela Cache
PUCC
9
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
PUCC
10
Mapeamento
0
1
2
3
4
5
6
7
8
9
Bloco 0
B= N / K = 2E / K
Bloco 1
Q << B
0
1
2
Q-1
Bloco B-1
N-1
PUCC
Tag Tamanho do Bloco
(K palavras)
11
Mapeamento Direto
• MP= 4G palavras
• Cache= 64 KB
E= 32 bits
Q= 1K
– 1 Quadro possui 64 Bytes ou palavras
• B= 4G / 64 Bytes = 64 M Blocos
• Então:
– cada quadro do cache deverá acomodar
64K Blocos.
PUCC
12
Exemplo
TAG
quadro
quadro
quadro
quadro 1023
BLOCOS
0
63
0
1
2
1
62
2
61
16 bits
63
0
64 Bytes
Endereço da MP possui 32 bits
16 bits
10 bits
6 bits
Endereço da palavra
Número do quadro
Número do bloco no Quadro - TAG
PUCC
13
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
PUCC
14
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.
PUCC
15
Mapeamento Associativo
26 bits
Endereço do Bloco
6 bits
Endereço
da palavra
• Cada vez que a CPU realizar um acesso, o
controlador de cache deve examinar e
comparar os 26 bits do endereço do bloco
PUCC
16
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)
PUCC
17
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.
17 bits
TAG
PUCC
6 bits
9 bits
Número do Conjunto Endereço
da palavra
18
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
PUCC
19
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.
PUCC
20
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.
PUCC
21
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
PUCC
22
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.
PUCC
23
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
PUCC
24
Download