6 de Maio de 2005 1 Caches II Aula 16
Estrutura desta aula Desempenho das caches Melhoria do desempenho das caches Redução da taxa de faltas Redução da penalização por faltas e caches multinível Redução do tempo de acesso à cache, com sucesso Ref: Hennessy e Pattersson, 5.3-5.7 6 de Maio de 2005 Arquitectura de Computadores 2004/05 2-Aula 16
Impacto sobre o ciclo de relógio I -Cache Miss Hit PC Dec Exec A B invalid Mem WB D Cache Hit MEM WB Miss 6 de Maio de 2005 Arquitectura de Computadores 2004/05 3-Aula 16
AMAT Tempo_Execução = Número_Instruções x Tempo_Ciclo x (CPI ideal + Stalls_Memória/Instr + Outros_Stalls/Instr) Stalls_Memória/Instr = Instruction Miss Rate x Instruction Miss Penalty + Loads/Inst x Load Miss Rate x Load Miss Penalty + Stores/Inst x Store Miss Rate x Store Miss Penalty Average Memory Access time (AMAT) = Hit Time + (Miss Rate x Miss Penalty) 6 de Maio de 2005 Arquitectura de Computadores 2004/05 4-Aula 16
Melhoria do desempenho da cache AMAT = Hit Time + (Miss Rate x Miss Penalty) Para melhorar o desempenho de uma cache (ou seja, para diminuir o AMAT) Reduzir a taxa de faltas ( Miss Rate ) Por exemplo, usando uma cache maior Reduzir a penalização por faltas ( Miss Penalty ) Por exemplo, usando uma cache L2 Diminuir o tempo de acesso à cache ( Hit Time ) A estratégia mais simples consiste em projectar a cache com a maior dimensão possível, sem aumentar o período de relógio e sem adicionar andares extra no pipeline Mas as decisões de projecto complicam-se nas CPUs com pipelines profundos e execução fora de ordem 6 de Maio de 2005 Arquitectura de Computadores 2004/05 5-Aula 16
Razões das faltas (recordemos) Faltas obrigatórias (cold start, primeira referência): primeiro acesso a um bloco Nada a fazer Faltas por capacidade reduzida A cache não pode conter todos os blocos a aceder pelo programa Solução: aumentar o tamanho da cache Falts por conflitos Múltiplos endereços de memória são mapeados no mesmo índice da cache Solução 1: aumentar o tamanho da cache Solução 2: aumentar o grau de associatividade Faltas por incoerência (invalidação): outros processos (por ex., I/O) actualizam o conteúdo da memória 6 de Maio de 2005 Arquitectura de Computadores 2004/05 6-Aula 16
Efeito dos parâmetros Primeira abordagem (à frente seremos mais específicos) Cache maior (+) reduz o número de faltas (-) o hit time pode aumentar Blocos maiores (+) localidade espacial reduz faltas obrigatórias e as faltas por capacidade reduzida (-) menos blocos aumenta o miss rate em faltas por conflito (-) blocos maiores podem aumentar a miss penalty Maior associatividade (+) reduz o número de faltas por conflito (até 4 a 8 vias) (-) pode aumentar o tempo de acesso 6 de Maio de 2005 Arquitectura de Computadores 2004/05 7-Aula 16
AMAT Exemplo (1) AMAT = Hit time + (Miss Rate x Miss Penalty) Miss penalty = tempo extra provocado pelas faltas 6 de Maio de 2005 Arquitectura de Computadores 2004/05 8-Aula 16
AMAT Exemplo (2) Hipótese 1 A máquina 1 tem um custo por hit = 1 ciclo de relógio e uma penalização por falta = 10 ciclos (11 ciclos no total por falta) A taxa de faltas num determinado programa é de 10% AMAT = Hit Time + (Miss Rate x Miss Penalty) AMAT = 1 + 0,1 x 10 = 2,0 Hipótese 2 A máquina 2 é igual à máquina 1 O programa tem 100 acessos à memória: 90 acertam, 10 falham 90 hits x 1 ciclo + 10 faltas x 11 ciclos = 200 ciclos AMAT = (Hit Rate x Hit Time) + (Miss Rate x Miss Time) AMAT = # ciclos / # acessos = 200 ciclos/100 acessos = 2,0 6 de Maio de 2005 Arquitectura de Computadores 2004/05 9-Aula 16
AMAT Outro exemplo (1) São dadas 2 hipóteses de projecto Uma máquina com 2 caches separadas, uma de dados e outra de instruções, cada uma com 16 kbytes Uma máquina com uma cache única, de 32 kbytes Admitir que um hit toma 1 ciclo de relógio uma falta precisa de 50 ciclos de relógio um LOAD ou um STORE necessitam de mais 1 ciclo de relógio na cache única Porquê? Porque a cache única apenas possui um porto de entrada/saída, insuficiente para satisfazer pedidos simultâneos de LOAD e de STORE 75% das referências à memória são fetches de instruções Qual a máquina com melhor desempenho? 6 de Maio de 2005 Arquitectura de Computadores 2004/05 10 - Aula 16
AMAT Outro exemplo (2) Vamos utilizar os resultados de simulações, de acordo com o benchmark SPEC92, para caches com mapeamento directo blocos com 32 bytes 6 de Maio de 2005 Arquitectura de Computadores 2004/05 11 - Aula 16
AMAT Outro exemplo (3) Para as caches separadas Taxa de faltas = 75% x 0,64% + 25% x 6,47% = 2,1% Para a cache única (directamente da tabela) Taxa de faltas = 1,99% Se a optimização for baseada na taxa de faltas, a cache única de 32 kbytes é mais vantajosa 6 de Maio de 2005 Arquitectura de Computadores 2004/05 12 - Aula 16
AMAT Outro exemplo (4) Consideremos agora a optimização do AMAT Penalização em ciclos = % instr. x AMAT instr. + % dados x AMAT dados Para as caches separadas Penalização = 75% x (1+0,64% x 50) + 25% x (1+6.47% x 50) = 2,05 ciclos de relógio Para a cache única Penalização = 75% x (1+1,99% x 50) + 25% x (1+1+1,99% x 50) = 2,24 ciclos de relógio Se a optimização for baseada nas penalizações em ciclos de relógio (optimização do tempo médio de acesso à memória, AMAT), as caches separadas de 16 kbytes são mais vantajosas 6 de Maio de 2005 Arquitectura de Computadores 2004/05 13 - Aula 16
Ainda outro exemplo (1) Qual o impacto no desempenho (tempo de CPU) pela inclusão da seguinte cache? 50 ciclos de penalização por cada falta As instruções tomam, em média, 2 ciclos (excluindo stalls de memória, que são considerados à parte) Taxa de faltas = 2% 1,33 acessos em média à memória por instrução Relembrar que: Tempo de CPU = # instr x (CPI exec + stalls memória/instr) x duração do ciclo de relógio 6 de Maio de 2005 Arquitectura de Computadores 2004/05 14 - Aula 16
Ainda outro exemplo (2) Qual o impacto...? Tempo de CPU = # instr x (CPI exec + stalls memória/instr) x duração do ciclo = # instr x (2,0 + 0,02 x 1,33 x 50) x duração ciclo = # instr x 3,33x duração ciclo Duas conlusões importantes Quanto menor o CPI exec, maior é o impacto relativo devido às penalizações por faltas Comparando 2 máquinas com sistemas de memória idênticos, a máquina com maior freq. de relógio necessita de mais ciclos por falta e, portanto, t a parte do CPI devido aos acessos à memória é proprocionalmente maior 6 de Maio de 2005 Arquitectura de Computadores 2004/05 15 - Aula 16
Melhoria do desempenho Três formas de optimização O1: redução da taxa de faltas O2: redução da penalização por faltas O3: redução do tempo de acesso à cache, com sucesso 6 de Maio de 2005 Arquitectura de Computadores 2004/05 16 - Aula 16
Parâmetros de desempenho A organização da cache influencia significativamente o desempenho do processador Parâmetros a ter em conta Tamanho da cache (# bytes na cache) Tamanho dos blocos (# bytes por bloco) Grau de associatividade (# linhas por índice) Largura de banda (# bytes devolvidos à CPU por ciclo) Write-through ou Write-back Partição da cache: caches separadas para instruções e dados ou cache única Tempo de acesso à cache Potência dissipada 6 de Maio de 2005 Arquitectura de Computadores 2004/05 17 - Aula 16
O1: Redução da taxa de faltas (1) Quais são as taxas de faltas encontradas actualmente? Variam muito com a aplicação Usando os dados do SPEC92 anteriores As taxas de faltas da cache-i menores do que 5% e, por vezes, menores do que 1% As taxas de faltas da cache-d podem chegar a 25% O maior problema reside na cache-d 6 de Maio de 2005 Arquitectura de Computadores 2004/05 18 - Aula 16
O1: Redução da taxa de faltas (1) Quais são as taxas de faltas encontradas actualmente? Mas o SPEC92 não é representtivo de muitas aplicações Por exemplo, para aplicações comerciais As bases de dados têm taxas de faltas na cache-i que chegam a 20% (16 kb, mapeamento directo) As taxas de faltas da cache-d podem chegar a 25% O maior problema reside na cache-d 6 de Maio de 2005 Arquitectura de Computadores 2004/05 19 - Aula 16
O1: Redução da taxa de faltas (2) Razões porque ocorrem faltas Obrigatórias (cold start, primeira referência): primeiro acesso a um bloco Nada a fazer Nota: Se se correrem milhões de instruções, as Faltas Obrigatórias tornam-se insignificantes Falta de capacidade: A cache não pode conter todos os blocos a aceder pelo programa Solução: aumentar o tamanho da cache Conflitos (colisão): Múltiplos endereços de memória são mapeados no mesmo índice da cache Solução 1: aumentar o tamanho da cache Solução 2: aumentar o grau de associatividade Incoerência (invalidação): outros processos (por ex., I/O) actualizam o conteúdo da memória 6 de Maio de 2005 Arquitectura de Computadores 2004/05 20 - Aula 16
Taxas de faltas 6 de Maio de 2005 Arquitectura de Computadores 2004/05 21 - Aula 16
O1: Redução da taxa de faltas (3) Técnicas para redução da taxa de faltas T1: Blocos maiores T2: Aumentar o grau de associatividade T3: Utilização de caches vítimas T4: Prefetching por hardware T5: Prefetching pelo compilador 6 de Maio de 2005 Arquitectura de Computadores 2004/05 22 - Aula 16
O1-T1: Blocos maiores (1) Blocos maiores reduzem o número de faltas obrigatórias porque mais dados são enviados para a cache a cada falta Os programas têm, geralmente, uma elevada localidade espacial Infelizmente, blocos maiores podem criar problemas Mais dados são retirados da cache Pode aumentar a taxa de faltas Por outro lado, blocos maiores aumentam a penalização por faltas Levam mais ciclos para preencher a cache 6 de Maio de 2005 Arquitectura de Computadores 2004/05 23 - Aula 16
O1-T1: Blocos maiores (2) A partir de certa altura os blocos maiores deixam de melhorar o desempenho 6 de Maio de 2005 Arquitectura de Computadores 2004/05 24 - Aula 16
O1-T1: Blocos maiores (3) Para caches pequenas, o aumento do tamanho dos blocos aumenta a taxa de faltas 25% Miss Rate 20% 15% 10% 5% 0% 1K 4K 16K 64K 256K 16 32 64 128 256 Block Size (bytes) 6 de Maio de 2005 Arquitectura de Computadores 2004/05 25 - Aula 16
Mínimos a vermelho AMAT 6 de Maio de 2005 Arquitectura de Computadores 2004/05 26 - Aula 16
O1-T2: Maior associatividade d (1) Maiores graus de associatividade reduzem as faltas por conflitos Muitas vezes, as caches associativas de 8 vias são quase tão boas como as caches completamente associativas O aumento da associatividade pode fazer aumentar o tempo de acesso Mais lógica nas comparações Muitas vezes as caches associativas não são utilizadas no nível L1, onde o tempo de acesso é mais importante Em vez disso, são usadas num nível mais baixo onde o tempo de acesso é menos importante 6 de Maio de 2005 Arquitectura de Computadores 2004/05 27 - Aula 16
O1-T2: Maior associatividade d (2) Exemplo Tam. cache Associatividade (kb) 1-via 2-vias 4-vias 8-vias 1 2.33 2.15 2.07 2.01 2 198 1.98 186 1.86 176 1.76 168 1.68 4 1.72 1.67 1.61 1.53 8 1.46 1.48 1.47 1.43 16 129 1.29 132 1.32 132 1.32 132 1.32 32 1.20 1.24 1.25 1.27 64 1.14 1.20 1.21 1.23 128 1.10 1.17 1.18 1.20 Vermelho significa que o A.M.A.T. não melhora com o aumento do grau de associatividade id d 6 de Maio de 2005 Arquitectura de Computadores 2004/05 28 - Aula 16
Exemplo de cache associativa de 2 vias com 8 kbytes (dados) 6 de Maio de 2005 Arquitectura de Computadores 2004/05 29 - Aula 16
O1-T3: Caches vítimas Pequena cache que contém os blocos descartados mais recentemente 1-5 blocos No caso de uma falta, a cache vítima é lida Se o bloco estiver presente na cache vítima, é colocado de volta na cache primária Eficácia? Muito elevada para as caches com mapeamento directo Uma cache vítima com 4 entradas pode remover 20% a 95% das faltas devidas a conflitos numa cache com MD de 4kByte Usada nas máquinas Alpha e HP 6 de Maio de 2005 Arquitectura de Computadores 2004/05 30 - Aula 16
O1-T4: Prefetching por hardware Numa falta, faz o fetch do bloco em falta e de alguns blocos que se seguem Os blocos que são Prefetched não são colocados na cache, mas antes num tampão especial designado por Prefetch Buffer Muito eficaz para rajadas de instruções Alpha 21064 faz o fetch de dois blocos no caso de uma falta (o segundo bloco é um prefetch) Alpha 21164 tem um buffer de prefetch com 6 entradas na ligação à cache de Nível 2 (L2) Também é eficaz com blocos de dados O prefetching depende da existência de uma elevada largura de banda no acesso entre o Prefetch Buffer e a memória 6 de Maio de 2005 Arquitectura de Computadores 2004/05 31 - Aula 16
O1-T5: Prefetching pelo compilador O compilador faz o prefetching de instruções retiradas do programa Por vezes o compilador tem uma boa ideia do que fazer em matéria de prefetch (como e quando) O prefetching possibilita que o compilador se engane, sem que desse facto resulte um comportamento incorrecto para o programa Algumas arquitecturas incluem instruções de prefetch Exemplo: for (i=0; i < 1000; i++){ a[i] = b[i] * c } 6 de Maio de 2005 Arquitectura de Computadores 2004/05 32 - Aula 16
O1-T5: Prefetching pelo compilador O compilador faz for (i=0; i < 1000; i++){ Prefetch a[i+1] Prefetch b[i+1] a[i] = b[i] * c } Quantas faltas com prefetching? Referências iniciais a a[0], b[0] e c Todas as outras referências são prefetched 1000 referências a a[i], b[i] e c 3 faltas / 3000 referências taxa de faltas = 0,1% 6 de Maio de 2005 Arquitectura de Computadores 2004/05 33 - Aula 16
Melhoria do desempenho Três formas de optimização O1: redução da taxa de faltas O2: redução da penalização por faltas O3: redução do tempo de acesso à cache, com sucesso 6 de Maio de 2005 Arquitectura de Computadores 2004/05 34 - Aula 16
O2: Redução da penalização por faltas Há várias técnicas para redução da penalização por faltas Vamos apenas enunciar uma delas, que utiliza Caches multi-nível 6 de Maio de 2005 Arquitectura de Computadores 2004/05 35 - Aula 16
O2: Caches multi-nível l (1) O ideal era que a cache tivesse a dimensão da Memória Principal e o tempo de acesso dos registos das Register Files Impossível porque ao aumentar a capacidade da cache aumenta-se também o tempo de acesso Ideia base: acrescentar níveis intermédios de caches entre a cache original e a Memória Principal O primeiro nível (L1), mais próximo do processador, leva um ciclo de relógio no acesso ritmo da CPU O segundo nível (L2) tipicamente leva <10 ciclos de relógio O terceiro nível é a própria Memória Principal ou então uma cache de nível 3 (L3), com 10 a 100 ciclos de relógio para acesso Reduz o tempo de penalização por falta 6 de Maio de 2005 Arquitectura de Computadores 2004/05 36 - Aula 16
O2: Caches multi-nível l (2) AMAT = Hit_time L1 + Miss Rate L1 * Miss Penalty L1 = = Hit_time time L1 + Miss Rate L1 * (Hit Time L2 + Miss Rate L2 * Miss Penalty L2) A cache L2 pode ter um maior tempo de acesso Pode ser maior Pode ser mais associativa Pode ter linhas (blocos) maiores 6 de Maio de 2005 Arquitectura de Computadores 2004/05 37 - Aula 16
O2: Caches multi-nível l (3) A cache L2 deve ter uma capacidade maior, porque isso reduz o tempo de penalização por falta Reduz-se a taxa de faltas local em L2 mesmo que à custa do tempo de acesso com sucesso As caches L2 têm um maior grau de associatividade que as L1 L2: Intel Pentium4 é associativa com 8 vias e AMD Athlon é associativa com 16 vias Importante saber se os dados (blocos) presentes em L1 também estão presentes em L2 O natural é que estejam porque resolve o problema da consistência princípio da inclusão multi-nível 6 de Maio de 2005 Arquitectura de Computadores 2004/05 38 - Aula 16
O2: Caches multi-nível l (4) Como normalmente L2» L1 blocos de L2 > blocos de L1 para explorar a localidade espacial a inclusão neste caso obriga a mecanismos mais complicados de invalidação de blocos em L1 e pode aumentar a taxa de faltas em L1 Ex: cache do Intel Pentium4: L1 de 8kB e blocos de 64-bytes; L2 unificada de 512kB e blocos de 128-bytes E se L2 não é muito maior que L1? Faz sentido usar espaço de L2 como cópia de L1? Pi Princípio íi da exclusão multi-nível l os blocos presentes em L1 nunca estão presentes em L2 Uma falta em L1 resulta numa troca de blocos entre L1 e L2, em vez da substituição de um bloco em L1 por um bloco em L2 Ex: cache do AMD Athlon: L1 de 64kB e L2 unificada de 256kB/512kB, ambas com blocos de 64-bytes 6 de Maio de 2005 Arquitectura de Computadores 2004/05 39 - Aula 16
O2: Caches multi-nível l (5) Deve-se ter uma cache de instruções separada da cache de dados? O processador pode estar simultaneamente a aceder a palavra de instrução e de dados (LD/ST) conflito estrutural Caches separadas permitem optimizar individualmente Capacidade, dimensão do bloco, organização (associatividade) As faltas por conflitos reduzem-se também em caches separadas Reduz-se a taxa de faltas Caches separadas têm espaço fixo para cada um dos dois tipos (instruções e dados) d Na prática os processadores geralmente usam: Caches L1 separadas para dados e instruções Cache L2 unificada para dados e instruções 6 de Maio de 2005 Arquitectura de Computadores 2004/05 40 - Aula 16
O2: Caches multi-nível l (6) 6 de Maio de 2005 Arquitectura de Computadores 2004/05 41 - Aula 16
E a memória? Considere a seguinte memória 1 ciclo para enviar endereço 6 ciclos para aceder à palavra 1 ciclo para enviar a palavra para a CPU/cache barramento entre a cache e a memória com 1 palavra de capacidade d Qual é a penalização por falta para uma linha (bloco) de cache com 4 palavras? (1 ciclo + 6 ciclos + 1 ciclo) * 4 palavras = 32 ciclos Como melhorar esta penalização? 6 de Maio de 2005 Arquitectura de Computadores 2004/05 42 - Aula 16
Memória mais larga Tornar a memória mais larga Ler/escrever 2 palavras em vez de 1 de cada vez Penalização neste caso (1 ciclo + 6 ciclos + 1 ciclo) * 2 palavras duplas = 16 ciclos/bloco da cache 6 de Maio de 2005 Arquitectura de Computadores 2004/05 43 - Aula 16
Alargamento da memória Larga: Interleaved: CPU/Mux 1 palavra; CPU, Cache, Barramento 1 Mux/Cache, palavra: Memória N Módulos Barramento, Memória, (4 Bancos); exemplo: word N palavras (Alpha: 64 interleaved Simples: bits & 256 bits) CPU, Cache, Barramento, Memória, mesma largura (32 bits) 6 de Maio de 2005 Arquitectura de Computadores 2004/05 44 - Aula 16
Interleaving (4 vias) Sem Interleaving: ng CPU Memory D1 disponível Começa Accesso a D1 Com Interleaving de 4 vias: Banco 0 Accesso Accesso Banco 1 Accesso Banco 2 Começa Accesso a D2 CPU Accesso Banco 3 Podemos aceder ao Banco 0 outra vez Memory Bank 0 Memory Bank 1 Memory Bank 2 Memory Bank 3 6 de Maio de 2005 Arquitectura de Computadores 2004/05 45 - Aula 16
Exemplo Modelo que serve de exemplo 1 ciclo para enviar endereço, 10 ciclos para tempo de acesso por palavra 1 ciclo para receber/enviar uma palavra 1 bloco da cache = 4 palavras Simples. = 4 x (1+10+1) 10 1) = 48 ciclos de miss penalty Larga. = 1 + 10 + 1 = 12 Interleaved = 1 + 10 + 1x4 = 15 endereço 0 4 8 12 endereço 1 5 9 13 endereço 2 6 10 14 endereço 3 7 11 15 Banco 0 Banco 1 Banco 2 Banco 3 6 de Maio de 2005 Arquitectura de Computadores 2004/05 46 - Aula 16
Memória larga vs Interleaved Memória larga Custo associado à ligação larga Precisa de um mux entra a cache e a CPU Memória mais larga mais dispendiosa Memória interleaved Envia endereço a vários bancos em simultâneo Queremos número de bancos >= número de ciclos de relógio necessários para aceder a uma palavra num banco À medida que o tamanho dos circuitos integrados de memória aumenta, torna-se mais dispendioso fazer o interleaving, para uma dada dimensão de Memória Difícil expandir o tamanho da memória em pequenas quantidades Pode não funcionar bem para acessos não sequenciais 6 de Maio de 2005 Arquitectura de Computadores 2004/05 47 - Aula 16
Sumário: níveis hierárquicos 6 de Maio de 2005 Arquitectura de Computadores 2004/05 48 - Aula 16
Pó Próxima aula Memória virtual 6 de Maio de 2005 Arquitectura de Computadores 2004/05 49 - Aula 16