O Fosso de Performance Arquitectura de Computadores II 5. Hierarquia de Memória 5.1. Cache 2004/2005 Paulo Marques Departamento de Eng. Informática Universidade de Coimbra pmarques@dei.uc.pt 2 Hierarquia de Memória Conceitos Básicos (Cache Directamente Mapeada) Velocidade Preço n Princípio da localidade espacial Se eu acedi a estes dados, é provável que aceda aos dados que estão próximos n Princípio da localidade temporal Se eu acedi à pouco tempo a estes dados, é provável que lhes vá aceder dentro de pouco tempo LD R1, 1012 0 1 2 3 4 5 6 7 Cache Cache Directamente Mapeada 1012 MOD 8 = 4 Registos Cache ~128x32bits, 0.25ns ~1MByte, 10ns $5000/GB Memória Central (RAM) ~512Mbyte, 100ns $100/GB... 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 Memória... Memória de Massa (Disco) ~200Gbyte, 5ms $1/GB Tamanho Cache Hit O bloco está na cache Cache Miss O bloco não está na cache 3 4
Conceitos Básicos (Cache Directamente Mapeada) Cache Directamente Mapeada LB R1, 1012 Cache Line 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111... 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 Memória... 5 6 Associatividade Porquê diferentes tipos de associatividade? n Directamente Mapeada n J Rápida a aceder aos dados (só podem estar num local) n L Sempre que existe um miss, limpa a entrada correspondente (hit rate baixo) n Completamente Associativa n L Lenta a aceder aos dados (têm de se comparar todas as tags) n J Quando existe um miss, podemos escolher qual a entrada a eliminar (hit rate elevado) n [E.g. Caches a nível do sistema operativo] n Associativa Por blocos n O melhor (e/ou pior) de ambos os mundos n [E.g. Caches no processador] 7 8
Uma cache associativa em blocos de 4 Efeito da associatividade no miss rate 15% 12% 9% 6% 3% 0 One-way 1 KB 2 KB 4 KB 8 KB 16 KB 32 KB Two-way Associativity 64 KB 128 KB Four-way Eight-way 9 10 Efeito do tamanho do bloco no miss rate O que acontece num cache read miss? 1. Envia o endereço em falta para a memória 2. Ordena à memória que efectue a leitura e espera que a mesma complete 3. Escreve o valor lido na cache, actualizando os dados, tag e ligando o bit valid No caso das caches associativas utiliza-se uma das seguintes técnicas para seleccionar o bloco: n Random n Least-Recently Used (LRU) n First-in, First-out (FIFO) 4. Efectivamente lê o valor, partindo da cache n À medida que o tamanho do bloco aumenta... J Localidade Espacial (reaproveitamento de dados) L Poucos Blocos (competição pelos mesmos blocos) L Penalidade nos misses aumenta (...o tempo de ir buscar os blocos) 11 12
O que acontece numa escrita? Considerações sobre Memória n A memória central e a cache devem de estar consistentes n Manter ambas consistentes pode sair bastante caro... n Write-through: Sempre que se escreve na cache, os dados são também enviados para a memória central n Utilização de um write-buffer de actualização da memória central n J Simples de implementar n J Coerência de dados (importante em multi-processadores) n L Pode ser lenta, se os programas têm uma taxa de escritas superior ao o write-buffer aguenta n DRAM = Dynamic Random Access n Ênfase na densidade (bits/cm^2) n Latência de acesso / Velocidade de transferência n Tem de ser refrescada periodicamente (basta ler os bits de uma linha) n Write-back: Apenas se escreve na cache; a memória central só é actualizada quando o bloco tem de ser eliminado da cache n É necessária a presença de um dirty-bit a marcar cada entrada em cache n J Utiliza menos largura de banda com a memória (importante em multiprocessadores) n J Várias escritas num bloco apenas implicam uma escrita em memória n L Read misses podem implicar escritas em memória (e.g. se é necessário substituir um bloco dirty) n L Escritas complicadas (e potencialmente lentas). É necessário verificar se se trata de um hit ou miss antes de actualizar a memória; não se pode simplesmente escrever. Utilização de um store-buffer. 13 RAS = Row Access Strobe CAS = Column Access Strobe 14 Evolução da tecnologia DRAM Como aumentar a largura de banda com a memória? CPU CPU CPU Column Access time Year Chip Size $/MB Total Access Time (RAS + CAS) for an Existing Row (CAS) 1985 1 Mbit $200 135 ns 40 ns 1989 4 Mbit $50 110 ns 40 ns 1992 16 Mbit $15 90 ns 30 ns 1996 64 Mbit $10 60 ns 12 ns 1998 128 Mbit $4 60 ns 10 ns 2000 256 Mbit $1 55 ns 7 ns 2002 512 Mbit $0.25 50 ns 5 ns 2004 1024 Mbit $0.10 45 ns 3 ns 15 Cache Bus a. One-word-wide memory organization b. Wide memory organization n (a) (b) (c) Multiplexor Cache Bus bank 0 bank 1 Cache Vencer a latência de acesso é complicado; mas é possível melhorar a largura de banda! Abordagem assumida até agora Bus largo, acede a todas as palavras de um bloco simultaneamente Interleaved memory, evita o custo da latência de acesso (embora ainda pague o custo da transferência dos dados) Bus bank 2 c. Interleaved memory organization bank 3 16
Algumas técnicas para melhorar a performance Exemplos de Caches 1. Hierarquias de Caches 2. Requested Word First & Early Restart 3. Merge Write Buffer 4. Victim Caches 17 18 Conceito Arquitectura de Computadores II n A memória física de um computador pode ser considerada apenas como uma cache para os dados em disco n Os dados em disco correspondem à memória virtual swap file 5. Hierarquia de Memória 5.2. Memória Virtual 2004/2005 Paulo Marques Departamento de Eng. Informática Universidade de Coimbra pmarques@dei.uc.pt 20
Mapeamento de endereços Aspecto de um sistema com memória virtual 4Gb 4Gb 5000 1000 1000 256Mb Disco 0 0 Espaço de Espaço de endereçamento endereçamento do processo A do processo B Tabela(s) de Tradução de Endereços 0 Memória física Atenção: Nada obriga a que os endereços físicos tenham Nota: não existe apenas uma tabela de tradução de endereços, mas várias. A tabela do processo corrente é carregada utilizando um registo especial do processador o mesmo tamanho que os endereços virtuais 21 22 Considerações Importantes Tabela de Páginas (1) n O tamanho das páginas deve ser grande para amortizar o enorme tempo de acesso ao disco n Hoje são tipos valores de 4KB e 16KB. Começam a surgir sistemas de 32KB e 64KB. n É importantíssimo baixar o miss rate n Abordagens completamente associativas n Quando existe uma page fault, a mesma é resolvida em software e não em hardware n O preço de resolver o problema em software é baixo comparado com o preço de ir a disco e/ou de incorporar tal solução em hardware. Para além disso, podem-se utilizar algoritmos mais sofisticados em software. n Write-thought não é uma opção 23 24
Tabela de Páginas (1) Translation-Lookaside Buffer (TLB) O que é que falta neste diagrama??? 25 26 Exemplo de TLB+Cache (Intrinsity FastMATH) Intrinsity FastMATH, c/ TLB hit Nota: Falta mostrar a tabela de páginas (no caso de TLB miss) 27 28
Vários acontecimentos possíveis Alguns Exemplos de Processadores 29 30 AMD Athlon64 3500+ (2.2GHz) Material para ler n Computer Architecture: A Quantitative Approach, 3rd Ed. n Secções 5.1, 5.2, 5.3 n (Brevemente) 5.4 e 5.5 n Secção 5.8 e a parte de 5.9 que diz respeito à tecnologia DRAM n Secção 5.10 n Alternativamente (ou complementarmente), a matéria encontra-se bastante bem explicada no Capítulo 7 do n Computer Organization and Design, 3rd Ed. D. Patterson & J. Hennessy Morgan Kaufmann, ISBN 1-55860-604-1 August 2004 31 32
Questão Interessante» People who are more than casually interested in computers should have at least some idea of what the underlying hardware is like. Otherwise, the programs they write will be pretty weird «Donald Knuth n Multiplicação de Matrizes, 1024x1024 INT n @XTITAN (Dual Xeon 2 GHz) [pmarques@ingrid ~/tmp]./mult 1024 Size = 1024x1024 Total time = 57 sec n @T01 (Pentium Celeron 1 GHz) [pmarques@t10 ~/tmp]./mult 1024 Size = 1024x1024 Total time = 16 sec O que é que se passa aqui?!?!?!?! 33 34 Organização da Memória Latência de Acesso a Memória [pmarques@ingrid ~/tmp] cat /proc/cpuinfo (...) model name : Intel(R) XEON(TM) CPU 2.00GHz cpu MHz : 1993.562 cache size : 512 KB bogomips : 3971.48 (...) [pmarques@ingrid ~/tmp] [pmarques@t01 ~/tmp] cat /proc/cpuinfo (...) model name : Celeron (Coppermine) cpu MHz : 1002.301 cache size : 128 KB bogomips : 1998.84 (...) [pmarques@t01 ~/tmp] Celeron @ 1GHz Xeon @ 2GHz 35 36
Largura de Banda de Acesso a Memória (MB/s) Celeron @ 1GHz Xeon @ 2GHz 37