240 likes | 336 Views
Agenda. Memória CACHE. 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. Localidade.
E N D
Agenda • Memória CACHE
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
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
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.
Transferência de Palavras Transferência de Blocos CACHE Organização CPU Memória Principal
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.
Tempo de Acesso TA= p . T1 + (1-p) . (T2 +T1) T1+T2 T2 T1 100 0 % acerto (p)
Memória Cache • Tamanho • Mapeamento • Substituição de dados na Cache • Política de escrita pela Cache
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
Bloco 0 B= N / K = 2E / K Bloco 1 Q << B Bloco B-1 Tag Tamanho do Bloco (K palavras) Mapeamento
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
Exemplo Endereço da palavra Número do quadro Número do bloco no Quadro - TAG
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
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.
Mapeamento Associativo • Cada vez que a CPU realizar um acesso, o controlador de cache deve examinar e comparar os 26 bits do endereço do bloco
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)
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.
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
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.
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.
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
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.
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