SlideShare uma empresa Scribd logo
Memória Cache
Gerson Leiria Nunes
Memória cache
• Memória cache
• O nível da hierarquia de memória mais próximo da CPU
• Dados os acessos X1, ..., Xn–1, Xn
◼ Como sabemos se os dados estão
presentes?
◼ Para onde olhamos?
Memória Cache mapeada diretamente
• Localização determinada pelo endereço
• Mapeamento direto: apenas uma opção
• (Endereço do bloco) módulo (blocos no cache)
◼ Blocos são uma potência de 2
◼ Usar bits de endereço de baixa ordem
Tags e bits válidos
• Como sabemos qual bloco específico está armazenado em
um local de cache?
• Armazenar endereço de bloco, bem como os dados
• Na verdade, só precisa dos bits de alta ordem
• Chamou a tag
• E se não houver dados na localidade?
• Bit válido: 1 = presente, 0 = não presente
• Inicialmente 0
Exemplo de cache
• 8 blocos, 1 palavra/bloco, mapeado direto
• Estado inicial
Index V Tag Data
000 N
001 N
010 N
011 N
100 N
101 N
110 N
111 N
Exemplo de cache
Index V Tag Data
000 N
001 N
010 N
011 N
100 N
101 N
110 Y 10 Mem[10110]
111 N
Word addr Binary addr Hit/miss Cache block
22 10 110 Miss 110
Exemplo de cache
Index V Tag Data
000 N
001 N
010 Y 11 Mem[11010]
011 N
100 N
101 N
110 Y 10 Mem[10110]
111 N
Word addr Binary addr Hit/miss Cache block
26 11 010 Miss 010
Exemplo de cache
Index V Tag Data
000 N
001 N
010 Y 11 Mem[11010]
011 N
100 N
101 N
110 Y 10 Mem[10110]
111 N
Word addr Binary addr Hit/miss Cache block
22 10 110 Hit 110
26 11 010 Hit 010
Exemplo de cache
Index V Tag Data
000 Y 10 Mem[10000]
001 N
010 Y 11 Mem[11010]
011 Y 00 Mem[00011]
100 N
101 N
110 Y 10 Mem[10110]
111 N
Word addr Binary addr Hit/miss Cache block
16 10 000 Miss 000
3 00 011 Miss 011
16 10 000 Hit 000
Exemplo de cache
Index V Tag Data
000 Y 10 Mem[10000]
001 N
010 Y 10 Mem[10010]
011 Y 00 Mem[00011]
100 N
101 N
110 Y 10 Mem[10110]
111 N
Word addr Binary addr Hit/miss Cache block
18 10 010 Miss 010
Subdivisão de Endereço
Exemplo: tamanhos de bloco maiores
•64 blocos, 16 bytes/bloco
• Para qual número de bloco o endereço 1200 é mapeado?
•Endereço do bloco = 1200/16 = 75
•Número do bloco = 75 módulo 64 = 11
Tag Index Offset
0
3
4
9
10
31
4 bits
6 bits
22 bits
Considerações sobre o tamanho do bloco
• Aumentar o tamanho de bloco normalmente diminui a taxa de falhas
• Devido à localidade espacial: O princípio da localidade em que, se um local de dados é
referenciado, então, os dados com endereços próximos tenderão a ser referenciados em
breve.
• Mas em um cache de tamanho fixo
• Blocos maiores, menos deles
• Mais competição -> aumenta a taxa de erro de página (misses)
• Blocos maiores -> poluição
• Maior penalidade de busca na ocorrência de erro
• Pode anular o benefício da taxa de falha reduzida
• O reinício precoce e a (critial-word-first) podem ajudar
Considerações sobre o tamanho do bloco
• Um problema mais sério associado ao aumento do tamanho de bloco é
que o custo de uma falha aumenta. A penalidade de falha é determinada
pelo tempo necessário para buscar o bloco do próximo nível mais baixo na
hierarquia e carregá-lo na cache.
• O tempo para buscar o bloco possui duas partes: a latência até a primeira
palavra e o tempo de transferência para o restante do bloco. Claramente,
a menos que mudemos o sistema de memória, o tempo de transferência
— e, portanto, a penalidade de falha — aumentará conforme o tamanho
de bloco aumenta.
• Além disso, o aumento na taxa de falhas começa a reduzir conforme os
blocos se tornam maiores.
• O resultado é que o aumento na penalidade de falha supera o decréscimo
na taxa de falhas para grandes blocos, diminuindo, assim, o desempenho
da cache.
Considerações sobre o tamanho do bloco
Misses: Faltas de página na cache
•Ao acertar o cache, a CPU prossegue normalmente
•Miss, ou seja, falta de página na cache
• Parar o pipeline da CPU
• Buscar bloco do próximo nível de hierarquia
• Falta de página na cache de instrução
• Busca de instrução de reinicialização
• Falta de página na cache de dados
• Acesso completo aos dados
Write-Through
• Um esquema em que as escritas sempre atualizam a cache e o próximo nível inferior
da hierarquia de memória, garantindo que os dados sejam sempre consistentes
entre os dois.
• No acerto de gravação de dados, poderia apenas atualizar o bloco no cache
• Mas então o cache e a memória seriam inconsistentes
• Write through: também atualiza a memória
• Mas faz com que as gravações demorem mais
• por exemplo, se o CPI base = 1, 10% das instruções são armazenadas, a gravação na memória
leva 100 ciclos
• IPC efetivo = 1 + 0,1×100 = 11
• Solução: buffer de gravação
• Contém dados esperando para serem gravados na memória
• A CPU continua imediatamente
• Só é interrompido na gravação se o buffer de gravação já estiver cheio
Write-Back
• Um esquema que trata das escritas atualizando valores apenas no bloco da
cache e, depois, escreve o bloco modificado no nível inferior da hierarquia
quando o bloco é substituído
• Alternativa: No acerto de gravação de dados, basta atualizar o bloco no cache
• Acompanhe se cada bloco está sujo
• Quando um bloco sujo é substituído
• Escreva de volta na memória
• Pode usar um buffer de gravação para permitir que o bloco de substituição
seja lido primeiro
Alocação de gravação
• O que deve acontecer em uma falha de gravação?
• Alternativas para write-through
• Alocar ao errar: buscar o bloco
• Escreva por aí: não busque o bloco
• Como os programas geralmente escrevem um bloco inteiro antes
de lê-lo (por exemplo, inicialização)
•Para write-back
• Geralmente buscar o bloco
Exemplo: Intrinsity FastMATH
• Processador MIPS embarcado
• Pipeline de 12 estágios
• Instrução e acesso a dados em cada ciclo
• Cache dividido: I-cache e D-cache separados
• Cada 16 KB: 256 blocos × 16 palavras/bloco
• D-cache: write-through ou write-back
• SPEC2000 taxas de perda
• Cache: 0,4%
• D-cache: 11,4%
• Média ponderada: 3,2%
Exemplo: Intrinsity FastMATH
Caches de suporte de memória principal
• Usar DRAMs para memória principal
• Largura fixa (por exemplo, 1 palavra)
• Conectado por barramento de largura fixa com clock
• O clock do barramento é normalmente mais lento que o clock da CPU
• Exemplo de leitura de bloco de cache
• 1 ciclo de barramento para transferência de endereço
• 15 ciclos de barramento por acesso DRAM
• 1 ciclo de barramento por transferência de dados
• Para um bloco de 4 palavras e DRAM com largura de 1 palavra
• Penalidade de falha = 1 + 4×15 + 4×1 = 65 ciclos de barramento
• Largura de banda = 16 bytes / 65 ciclos = 0,25 B/ciclo
Medindo o desempenho do cache
• Componentes do tempo de CPU
• Ciclos de execução do programa
• Inclui tempo de acerto do cache
• Ciclos de parada de memória
• Principalmente de falhas de cache
• Com suposições simplificadoras:
Exemplo de desempenho de cache
• Dado
• I-cache taxa de erro de página = 2%
• D-cache taxa de erro de página = 4%
• Penalidade de erro = 100 cycles
• Base CPI (ideal cache) = 2
• Load & stores são 36% das instruções
• Ciclos perdidos por instrução
• I-cache: 0.02 × 100 = 2
• D-cache: 0.36 × 0.04 × 100 = 1.44
• CPI Atual = 2 + 2 + 1.44 = 5.44
• Ideal CPU is 5.44/2 =2.72 vezes mais rápido
Tempo médio de acesso
• O tempo de acerto também é importante para o desempenho
• Tempo médio de acesso à memória (TMAM)
TMAM = Tempo de acerto + Taxa de erro × Penalidade de erro
• Exemplo
• CPU com clock de 1ns, tempo de acerto = 1 ciclo, penalidade de erro
= 20 ciclos, taxa de erro de cache I = 5%
• TMAM = 1 + 0,05 × 20 = 2ns
• 2 ciclos por instrução
Resumo do desempenho
• Quando o desempenho da CPU aumentou
• A penalidade por falta se torna mais significativa
• CPI base decrescente
• Maior proporção de tempo gasto em bloqueios de memória
• Aumentando a taxa de clock
• Paradas de memória são responsáveis por mais ciclos de CPU
• Não se pode negligenciar o comportamento do cache ao avaliar o desempenho
do sistema
Caches associativos
• Totalmente associativo
• Permite que um determinado bloco vá para qualquer entrada de cache
• Requer que todas as entradas sejam pesquisadas de uma só vez
• Comparador por entrada (caro)
• Associativo de conjunto de n vias
• Cada conjunto contém n entradas
• O número do bloco determina qual conjunto
• (Número do bloco) módulo (#Sets no cache)
• Pesquise todas as entradas em um determinado conjunto de uma só vez
• n comparadores (menos caros)
Exemplo de cache associativo
Espectro de Associatividade
• Para um cache com 8 entradas
Exemplo de associatividade
• Comparar caches de 4 blocos
• Mapeamento direto, conjunto associativo de 2 vias, totalmente associativo
• Sequência de acesso em bloco: 0, 8, 0, 6, 8
• Mapeado direto
Block address Cache index Hit/miss Cache content after access
0 1 2 3
0 0 miss Mem[0]
8 0 miss Mem[8]
0 0 miss Mem[0]
6 2 miss Mem[0] Mem[6]
8 0 miss Mem[8] Mem[6]
Exemplo de associatividade
• Conjunto associativo de 2 vias
Block
address
Cache
index
Hit/miss Cache content after access
Set 0 Set 1
0 0 miss Mem[0]
8 0 miss Mem[0] Mem[8]
0 0 hit Mem[0] Mem[8]
6 0 miss Mem[0] Mem[6]
8 0 miss Mem[8] Mem[6]
Block
address
Hit/miss Cache content after access
0 miss Mem[0]
8 miss Mem[0] Mem[8]
0 hit Mem[0] Mem[8]
6 miss Mem[0] Mem[8] Mem[6]
8 hit Mem[0] Mem[8] Mem[6]
• Totalmente associativo
Quanta associatividade
• O aumento da associatividade diminui a taxa de erros
• Mas com retornos decrescentes
• Simulação de um sistema com 64KB D-cache, blocos de 16 palavras,
SPEC2000
• 1 via: 10,3%
• 2 vias: 8,6%
• 4 vias: 8,3%
• 8 vias: 8,1%
Definir organização de cache associativo
Política de substituição
• Mapeado direto: sem escolha
• Conjunto associativo
• Prefira a entrada inválida, se houver uma
• Caso contrário, escolha entre as entradas no set
• LRU – Less Recently Used – bloco menos recentemente utilizado
• Escolha aquele que não foi usado por mais tempo
• Simples para 2 vias, gerenciável para 4 vias, muito difícil além disso
• Aleatório
• Oferece aproximadamente o mesmo desempenho que LRU para alta associatividade
Caches multinível
• Cache primário anexado à CPU
• Pequeno, mas rápido
• Os serviços de cache de nível 2 perdem do cache primário
• Maior, mais lento, mas ainda mais rápido que a memória principal
• Falhas de cache L2 dos serviços de memória principal
• Alguns sistemas high-end incluem cache L3
Exemplo de cache multinível
•Dado
• CPI base da CPU = 1, Frequência de clock = 4GHz
• Taxa de falhas/instrução = 2%
• Tempo de acesso à memória principal = 100ns
•Com apenas cache primário
• Penalidade de erro = 100ns/0.25ns = 400 ciclos
• CPI efetivo = 1 + 0,02 × 400 = 9
Exemplo (cont.)
• Agora adicione cache L2
• Tempo de acesso = 5ns
• Taxa de erro global para a memória principal = 0,5%
• Falha na cache primária com acerto L2
• Penalidade = 5ns/0.25ns = 20 ciclos
• Falha na cache primária com falha na cache L2
• Penalidade extra = 500 ciclos
• CPI = 1 + 0,02 × 20 + 0,005 × 400 = 3,4
• Taxa de desempenho = 9/3,4 = 2,6
Considerações sobre cache multinível
• Cache primário
• Concentre-se no tempo mínimo de acerto
• Cache L2
• Concentre-se na baixa taxa de erros para evitar o acesso à memória principal
• O tempo de acerto tem menos impacto geral
• Resultados
• Cache L1 geralmente menor que um único cache
• Tamanho do bloco L1 menor que o tamanho do bloco L2

Mais conteúdo relacionado

PDF
Arquitetura de computadores - memória cache parte 3
AdministradordeRedes
 
PDF
Memoria cache princípio da localidade
Claudia Costa
 
PDF
Arquitetura de computadores - memória cache parte 1
AdministradordeRedes
 
PPT
Tipos de memoria
Marcelle Guiné
 
PPT
Tipos de memoria
Marcelle Guiné
 
PPT
Tipos de memoria
Marcelle Guiné
 
PPT
Tipos de memoria
Marcelle Guiné
 
PPT
Tipos de memoria
Marcelle Guiné
 
Arquitetura de computadores - memória cache parte 3
AdministradordeRedes
 
Memoria cache princípio da localidade
Claudia Costa
 
Arquitetura de computadores - memória cache parte 1
AdministradordeRedes
 
Tipos de memoria
Marcelle Guiné
 
Tipos de memoria
Marcelle Guiné
 
Tipos de memoria
Marcelle Guiné
 
Tipos de memoria
Marcelle Guiné
 
Tipos de memoria
Marcelle Guiné
 

Semelhante a Arquitetura de computadores - memória cache parte 2 (20)

PPT
Tipos de memoria
Marcelle Guiné
 
PDF
Aula 22 caches associativas e associativas por conjunto
a Nunes
 
PPT
Memórias
wendhel
 
PDF
memorias
Lucas Sansão
 
PPT
Memória Interna - Arquitetura e Organização de Computadores
Wellington Oliveira
 
PDF
Arquitetura de computadores – memórias
Elaine Cecília Gatto
 
PDF
Hierarquia de memória
PAULO Moreira
 
PDF
Chrome server2 print_http_www_hardware_com_br_dicas_entendendo_cache_ht_13737...
Léia de Sousa
 
PDF
1a lista exercicios
redesinforma
 
PPTX
Memória Interna (AOC)
Universidade Federal de Uberlândia
 
PPTX
Cache Associativity: Qual a importância deste Conceito? por Luiz Carlos Orson...
Joao Galdino Mello de Souza
 
PPT
Gerência de Memória: Memória Principal
Alexandre Duarte
 
PDF
Aula 06-oac-memoria-principal
Cristiano Pires Martins
 
PDF
4 memo arq
Wallington Leal
 
DOC
Hardware memória principal
Carlos Henrique de Matos
 
PDF
Aula 16 memórias
Alexandrino Sitoe
 
PPTX
Aula 4 de Arquitetura de Computadores
Marco Silva
 
PPT
Memoria Virtual
audineisilva1
 
PPT
Mistério ou tecnologia? Paralelismo!
Rodrigo Campos
 
Tipos de memoria
Marcelle Guiné
 
Aula 22 caches associativas e associativas por conjunto
a Nunes
 
Memórias
wendhel
 
memorias
Lucas Sansão
 
Memória Interna - Arquitetura e Organização de Computadores
Wellington Oliveira
 
Arquitetura de computadores – memórias
Elaine Cecília Gatto
 
Hierarquia de memória
PAULO Moreira
 
Chrome server2 print_http_www_hardware_com_br_dicas_entendendo_cache_ht_13737...
Léia de Sousa
 
1a lista exercicios
redesinforma
 
Memória Interna (AOC)
Universidade Federal de Uberlândia
 
Cache Associativity: Qual a importância deste Conceito? por Luiz Carlos Orson...
Joao Galdino Mello de Souza
 
Gerência de Memória: Memória Principal
Alexandre Duarte
 
Aula 06-oac-memoria-principal
Cristiano Pires Martins
 
4 memo arq
Wallington Leal
 
Hardware memória principal
Carlos Henrique de Matos
 
Aula 16 memórias
Alexandrino Sitoe
 
Aula 4 de Arquitetura de Computadores
Marco Silva
 
Memoria Virtual
audineisilva1
 
Mistério ou tecnologia? Paralelismo!
Rodrigo Campos
 
Anúncio

Último (7)

PPTX
Computacao-e-Tecnologias-Digitais-Por-Que-Aprender.pptx
RobertaOliveiradaFon1
 
PPTX
aplicativopenseira.pptx Aplicativo que organiza Pensamentos - Peça Publicitária
StelaNorie1
 
PPTX
Gestão de Mudanças - Fases do processo de mudança organizacional
Gateware Group
 
PDF
Explorando o Futuro do Corpo: Implantes Neurais e o Biohacking dos Sentidos
cooperliora
 
PPTX
Gestão de Mudanças - Os maiores desafios da Gestão de Mudanças e Gestão de Pr...
Gateware Group
 
PDF
Certificado em Redes Neurais Artificiais em Python
CaioSilva506151
 
PPTX
Desenvolvimento-de-Produtos-Inovadores.pptx
ssuser1d7565
 
Computacao-e-Tecnologias-Digitais-Por-Que-Aprender.pptx
RobertaOliveiradaFon1
 
aplicativopenseira.pptx Aplicativo que organiza Pensamentos - Peça Publicitária
StelaNorie1
 
Gestão de Mudanças - Fases do processo de mudança organizacional
Gateware Group
 
Explorando o Futuro do Corpo: Implantes Neurais e o Biohacking dos Sentidos
cooperliora
 
Gestão de Mudanças - Os maiores desafios da Gestão de Mudanças e Gestão de Pr...
Gateware Group
 
Certificado em Redes Neurais Artificiais em Python
CaioSilva506151
 
Desenvolvimento-de-Produtos-Inovadores.pptx
ssuser1d7565
 
Anúncio

Arquitetura de computadores - memória cache parte 2

  • 2. Memória cache • Memória cache • O nível da hierarquia de memória mais próximo da CPU • Dados os acessos X1, ..., Xn–1, Xn ◼ Como sabemos se os dados estão presentes? ◼ Para onde olhamos?
  • 3. Memória Cache mapeada diretamente • Localização determinada pelo endereço • Mapeamento direto: apenas uma opção • (Endereço do bloco) módulo (blocos no cache) ◼ Blocos são uma potência de 2 ◼ Usar bits de endereço de baixa ordem
  • 4. Tags e bits válidos • Como sabemos qual bloco específico está armazenado em um local de cache? • Armazenar endereço de bloco, bem como os dados • Na verdade, só precisa dos bits de alta ordem • Chamou a tag • E se não houver dados na localidade? • Bit válido: 1 = presente, 0 = não presente • Inicialmente 0
  • 5. Exemplo de cache • 8 blocos, 1 palavra/bloco, mapeado direto • Estado inicial Index V Tag Data 000 N 001 N 010 N 011 N 100 N 101 N 110 N 111 N
  • 6. Exemplo de cache Index V Tag Data 000 N 001 N 010 N 011 N 100 N 101 N 110 Y 10 Mem[10110] 111 N Word addr Binary addr Hit/miss Cache block 22 10 110 Miss 110
  • 7. Exemplo de cache Index V Tag Data 000 N 001 N 010 Y 11 Mem[11010] 011 N 100 N 101 N 110 Y 10 Mem[10110] 111 N Word addr Binary addr Hit/miss Cache block 26 11 010 Miss 010
  • 8. Exemplo de cache Index V Tag Data 000 N 001 N 010 Y 11 Mem[11010] 011 N 100 N 101 N 110 Y 10 Mem[10110] 111 N Word addr Binary addr Hit/miss Cache block 22 10 110 Hit 110 26 11 010 Hit 010
  • 9. Exemplo de cache Index V Tag Data 000 Y 10 Mem[10000] 001 N 010 Y 11 Mem[11010] 011 Y 00 Mem[00011] 100 N 101 N 110 Y 10 Mem[10110] 111 N Word addr Binary addr Hit/miss Cache block 16 10 000 Miss 000 3 00 011 Miss 011 16 10 000 Hit 000
  • 10. Exemplo de cache Index V Tag Data 000 Y 10 Mem[10000] 001 N 010 Y 10 Mem[10010] 011 Y 00 Mem[00011] 100 N 101 N 110 Y 10 Mem[10110] 111 N Word addr Binary addr Hit/miss Cache block 18 10 010 Miss 010
  • 12. Exemplo: tamanhos de bloco maiores •64 blocos, 16 bytes/bloco • Para qual número de bloco o endereço 1200 é mapeado? •Endereço do bloco = 1200/16 = 75 •Número do bloco = 75 módulo 64 = 11 Tag Index Offset 0 3 4 9 10 31 4 bits 6 bits 22 bits
  • 13. Considerações sobre o tamanho do bloco • Aumentar o tamanho de bloco normalmente diminui a taxa de falhas • Devido à localidade espacial: O princípio da localidade em que, se um local de dados é referenciado, então, os dados com endereços próximos tenderão a ser referenciados em breve. • Mas em um cache de tamanho fixo • Blocos maiores, menos deles • Mais competição -> aumenta a taxa de erro de página (misses) • Blocos maiores -> poluição • Maior penalidade de busca na ocorrência de erro • Pode anular o benefício da taxa de falha reduzida • O reinício precoce e a (critial-word-first) podem ajudar
  • 14. Considerações sobre o tamanho do bloco • Um problema mais sério associado ao aumento do tamanho de bloco é que o custo de uma falha aumenta. A penalidade de falha é determinada pelo tempo necessário para buscar o bloco do próximo nível mais baixo na hierarquia e carregá-lo na cache. • O tempo para buscar o bloco possui duas partes: a latência até a primeira palavra e o tempo de transferência para o restante do bloco. Claramente, a menos que mudemos o sistema de memória, o tempo de transferência — e, portanto, a penalidade de falha — aumentará conforme o tamanho de bloco aumenta. • Além disso, o aumento na taxa de falhas começa a reduzir conforme os blocos se tornam maiores. • O resultado é que o aumento na penalidade de falha supera o decréscimo na taxa de falhas para grandes blocos, diminuindo, assim, o desempenho da cache.
  • 15. Considerações sobre o tamanho do bloco
  • 16. Misses: Faltas de página na cache •Ao acertar o cache, a CPU prossegue normalmente •Miss, ou seja, falta de página na cache • Parar o pipeline da CPU • Buscar bloco do próximo nível de hierarquia • Falta de página na cache de instrução • Busca de instrução de reinicialização • Falta de página na cache de dados • Acesso completo aos dados
  • 17. Write-Through • Um esquema em que as escritas sempre atualizam a cache e o próximo nível inferior da hierarquia de memória, garantindo que os dados sejam sempre consistentes entre os dois. • No acerto de gravação de dados, poderia apenas atualizar o bloco no cache • Mas então o cache e a memória seriam inconsistentes • Write through: também atualiza a memória • Mas faz com que as gravações demorem mais • por exemplo, se o CPI base = 1, 10% das instruções são armazenadas, a gravação na memória leva 100 ciclos • IPC efetivo = 1 + 0,1×100 = 11 • Solução: buffer de gravação • Contém dados esperando para serem gravados na memória • A CPU continua imediatamente • Só é interrompido na gravação se o buffer de gravação já estiver cheio
  • 18. Write-Back • Um esquema que trata das escritas atualizando valores apenas no bloco da cache e, depois, escreve o bloco modificado no nível inferior da hierarquia quando o bloco é substituído • Alternativa: No acerto de gravação de dados, basta atualizar o bloco no cache • Acompanhe se cada bloco está sujo • Quando um bloco sujo é substituído • Escreva de volta na memória • Pode usar um buffer de gravação para permitir que o bloco de substituição seja lido primeiro
  • 19. Alocação de gravação • O que deve acontecer em uma falha de gravação? • Alternativas para write-through • Alocar ao errar: buscar o bloco • Escreva por aí: não busque o bloco • Como os programas geralmente escrevem um bloco inteiro antes de lê-lo (por exemplo, inicialização) •Para write-back • Geralmente buscar o bloco
  • 20. Exemplo: Intrinsity FastMATH • Processador MIPS embarcado • Pipeline de 12 estágios • Instrução e acesso a dados em cada ciclo • Cache dividido: I-cache e D-cache separados • Cada 16 KB: 256 blocos × 16 palavras/bloco • D-cache: write-through ou write-back • SPEC2000 taxas de perda • Cache: 0,4% • D-cache: 11,4% • Média ponderada: 3,2%
  • 22. Caches de suporte de memória principal • Usar DRAMs para memória principal • Largura fixa (por exemplo, 1 palavra) • Conectado por barramento de largura fixa com clock • O clock do barramento é normalmente mais lento que o clock da CPU • Exemplo de leitura de bloco de cache • 1 ciclo de barramento para transferência de endereço • 15 ciclos de barramento por acesso DRAM • 1 ciclo de barramento por transferência de dados • Para um bloco de 4 palavras e DRAM com largura de 1 palavra • Penalidade de falha = 1 + 4×15 + 4×1 = 65 ciclos de barramento • Largura de banda = 16 bytes / 65 ciclos = 0,25 B/ciclo
  • 23. Medindo o desempenho do cache • Componentes do tempo de CPU • Ciclos de execução do programa • Inclui tempo de acerto do cache • Ciclos de parada de memória • Principalmente de falhas de cache • Com suposições simplificadoras:
  • 24. Exemplo de desempenho de cache • Dado • I-cache taxa de erro de página = 2% • D-cache taxa de erro de página = 4% • Penalidade de erro = 100 cycles • Base CPI (ideal cache) = 2 • Load & stores são 36% das instruções • Ciclos perdidos por instrução • I-cache: 0.02 × 100 = 2 • D-cache: 0.36 × 0.04 × 100 = 1.44 • CPI Atual = 2 + 2 + 1.44 = 5.44 • Ideal CPU is 5.44/2 =2.72 vezes mais rápido
  • 25. Tempo médio de acesso • O tempo de acerto também é importante para o desempenho • Tempo médio de acesso à memória (TMAM) TMAM = Tempo de acerto + Taxa de erro × Penalidade de erro • Exemplo • CPU com clock de 1ns, tempo de acerto = 1 ciclo, penalidade de erro = 20 ciclos, taxa de erro de cache I = 5% • TMAM = 1 + 0,05 × 20 = 2ns • 2 ciclos por instrução
  • 26. Resumo do desempenho • Quando o desempenho da CPU aumentou • A penalidade por falta se torna mais significativa • CPI base decrescente • Maior proporção de tempo gasto em bloqueios de memória • Aumentando a taxa de clock • Paradas de memória são responsáveis por mais ciclos de CPU • Não se pode negligenciar o comportamento do cache ao avaliar o desempenho do sistema
  • 27. Caches associativos • Totalmente associativo • Permite que um determinado bloco vá para qualquer entrada de cache • Requer que todas as entradas sejam pesquisadas de uma só vez • Comparador por entrada (caro) • Associativo de conjunto de n vias • Cada conjunto contém n entradas • O número do bloco determina qual conjunto • (Número do bloco) módulo (#Sets no cache) • Pesquise todas as entradas em um determinado conjunto de uma só vez • n comparadores (menos caros)
  • 28. Exemplo de cache associativo
  • 29. Espectro de Associatividade • Para um cache com 8 entradas
  • 30. Exemplo de associatividade • Comparar caches de 4 blocos • Mapeamento direto, conjunto associativo de 2 vias, totalmente associativo • Sequência de acesso em bloco: 0, 8, 0, 6, 8 • Mapeado direto Block address Cache index Hit/miss Cache content after access 0 1 2 3 0 0 miss Mem[0] 8 0 miss Mem[8] 0 0 miss Mem[0] 6 2 miss Mem[0] Mem[6] 8 0 miss Mem[8] Mem[6]
  • 31. Exemplo de associatividade • Conjunto associativo de 2 vias Block address Cache index Hit/miss Cache content after access Set 0 Set 1 0 0 miss Mem[0] 8 0 miss Mem[0] Mem[8] 0 0 hit Mem[0] Mem[8] 6 0 miss Mem[0] Mem[6] 8 0 miss Mem[8] Mem[6] Block address Hit/miss Cache content after access 0 miss Mem[0] 8 miss Mem[0] Mem[8] 0 hit Mem[0] Mem[8] 6 miss Mem[0] Mem[8] Mem[6] 8 hit Mem[0] Mem[8] Mem[6] • Totalmente associativo
  • 32. Quanta associatividade • O aumento da associatividade diminui a taxa de erros • Mas com retornos decrescentes • Simulação de um sistema com 64KB D-cache, blocos de 16 palavras, SPEC2000 • 1 via: 10,3% • 2 vias: 8,6% • 4 vias: 8,3% • 8 vias: 8,1%
  • 33. Definir organização de cache associativo
  • 34. Política de substituição • Mapeado direto: sem escolha • Conjunto associativo • Prefira a entrada inválida, se houver uma • Caso contrário, escolha entre as entradas no set • LRU – Less Recently Used – bloco menos recentemente utilizado • Escolha aquele que não foi usado por mais tempo • Simples para 2 vias, gerenciável para 4 vias, muito difícil além disso • Aleatório • Oferece aproximadamente o mesmo desempenho que LRU para alta associatividade
  • 35. Caches multinível • Cache primário anexado à CPU • Pequeno, mas rápido • Os serviços de cache de nível 2 perdem do cache primário • Maior, mais lento, mas ainda mais rápido que a memória principal • Falhas de cache L2 dos serviços de memória principal • Alguns sistemas high-end incluem cache L3
  • 36. Exemplo de cache multinível •Dado • CPI base da CPU = 1, Frequência de clock = 4GHz • Taxa de falhas/instrução = 2% • Tempo de acesso à memória principal = 100ns •Com apenas cache primário • Penalidade de erro = 100ns/0.25ns = 400 ciclos • CPI efetivo = 1 + 0,02 × 400 = 9
  • 37. Exemplo (cont.) • Agora adicione cache L2 • Tempo de acesso = 5ns • Taxa de erro global para a memória principal = 0,5% • Falha na cache primária com acerto L2 • Penalidade = 5ns/0.25ns = 20 ciclos • Falha na cache primária com falha na cache L2 • Penalidade extra = 500 ciclos • CPI = 1 + 0,02 × 20 + 0,005 × 400 = 3,4 • Taxa de desempenho = 9/3,4 = 2,6
  • 38. Considerações sobre cache multinível • Cache primário • Concentre-se no tempo mínimo de acerto • Cache L2 • Concentre-se na baixa taxa de erros para evitar o acesso à memória principal • O tempo de acerto tem menos impacto geral • Resultados • Cache L1 geralmente menor que um único cache • Tamanho do bloco L1 menor que o tamanho do bloco L2