Capítulo 7 1 Memórias: Revisão • SRAM: – O valor é armazenado num par de portas inversoras – Muito rápido mas toma mais espaço que DRAM (4 a 6 transistores) • DRAM: – O valor é armazenado como uma carga num capacitor (deve ser reavivado, “refreshed” ) – Muito pequeno mas mais lento que SRAM ( 5 a 10 vezes) Word line Pass transistor Capacitor Bit line 2 Explorando Hierarquia de Memória • Os usuários desejam memórias de grande capacidade e rápidas! Tempo de acesso de SRAM = 2 - 25ns; custo $100 a $250 por Mbyte. Tempo de acesso de DRAM = 60-120ns;custo $5 a $10 por Mbyte. Tempo de acesso de Disco = 10 a 20 milhões ns; custo $.10 a $.20 por Mbyte. CPU • Construir uma hierarquia de memória Level 1 Levels in the memory hierarchy Increasing distance from the CPU in access time Level 2 Level n Size of the memory at each level 3 Princípio de Localidade • Este principio garante a eficiência da hierarquia de memória • localidade temporal: referência repetida à mesma localidade localidade espacial: referência a endereços próximos. Porque existem as localidades acima? • Nosso foco inicial: dois níveis (superior,inferior) – bloco: unidade mínima de dados – hit: o dado requisitado está no nível superior – miss: o dado requisitado não está no nível superior 4 Cache • Cache (nível superior): é uma memória rápida, normalmente implementada em SRAM, que contém cópias dos dados da memória principal (nível inferior) – Nosso primeiro exemplo: “mapeamento direto" – O tamanho de bloco é uma palavra de dado Para cada dado num nível inferior (memória principal), existe exatamente um endereço (slot) no cache, de onde ele deve estar. p.ex., muitos blocos no nível inferior compartilham posições (slots) no nível superior Duas questões: Como sabemos que um dado item está no cache? Se estiver, como encontrá-lo? 5 Cache em mapeamento direto • • Mapeamento: a posição no cache é o endereço de memória em modulo do número de slots no cache: Ex: 1 00101 000 001 010 011 100 101 110 111 1 mod 8 = 1 9 mod 8 = 1 17 mod 8 = 1 25 mod 8 = 1 00001 Cache 1 01001 9 01101 10001 Memory 17 10101 11001 25 11101 6 Cache em mapeamento direto Address (showing bit positions) • 31 30 Para MIPS: Hit 13 12 11 2 1 0 Byte offset 10 20 Tag Data Index Index Valid Tag Data 0 1 2 1021 1022 1023 20 Que tipo de localidade está sendo usada? 32 7 Cache em mapeamento direto • Levando vantagem sobre a localidade espacial: Address (showing bit positions) 31 16 15 16 Hit 4 32 1 0 12 2 Byte offset Tag Data Index V Block offset 16 bits 128 bits Tag Data 4K entries 16 32 32 32 32 Mux 32 8 Hits vs. Misses • Read hits – É o que se deseja! • Read misses – Pára a CPU, busca um bloco da memória, entrega ao cache, e reinicia a CPU • Write hits: – Pode substituir dados no cache e memória (write-through) – Escreve dados somente no cache (faz write-back mais tarde ) • Write misses: – Le o bloco inteiro no cache, e depois faz a escrita na palavra referenciada 9 Questões de Hardware • Fazer a leitura de múltiplas palavras usando bancos de memória CPU CPU CPU Multiplexor Cache Cache Cache Bus Memory Memory a. One-word-wide memory organization Bus Bus b. Wide memory organization Memory bank 0 Memory bank 1 Memory bank 2 Memory bank 3 c. Interleaved memory organization 10 Desempenho 40% Aumentando o tamanho do bloco tende a decrescer o miss rate. 35% 30% Miss rate Usar caches repartidos (split) porque existem mais localidade espacial no código. 25% 20% 15% 10% 5% 0% 4 16 64 Block size (bytes) Program gcc spice Block size in words 1 4 1 4 Instruction miss rate 6.1% 2.0% 1.2% 0.3% Data miss rate 2.1% 1.7% 1.3% 0.6% Effective combined miss rate 5.4% 1.9% 1.2% 0.4% 256 1 KB 8 KB 16 KB 64 KB 256 KB 11 Desempenho tempo de execução = (ciclos de execução + ciclos de parada) tempo de ciclo ciclos de parada = # de instruções miss ratio miss penalty Duas formas de melhorar o desempenho: – Decrementando o miss ratio – Decrementando o miss penalty 12 Diminuindo miss rate com associatividade One-way set associative (direct mapped) Block Tag Data 0 Two-way set associative 1 2 Set 3 0 4 1 5 2 6 3 Tag Data Tag Data 7 Four-way set associative Set Tag Data Tag Data Tag Data Tag Data 0 1 Eight-way set associative (fully associative) Tag Data Tag Data Tag Data Tag Data Tag Data Tag Data Tag Data Tag Data 13 Uma implementação Address 31 30 12 11 10 9 8 8 22 Index 0 1 2 V Tag Data V 321 0 Tag Data V Tag Data V Tag Data 253 254 255 22 32 4-to-1 multiplexor Hit Data 14 Desempenho 15% 12% Miss rate 9% 6% 3% 0% One-way Two-way Four-way Associativity Eight-way 1 KB 16 KB 2 KB 32 KB 4 KB 64 KB 8 KB 128 KB 15 Diminuindo o miss penalty com caches multiníveis • Adicionar um segundo nível de cache: – geralmente o cache nível 1 fica no mesmo chip do processador – usar SRAMs para adicionar um outro cache acima da memória primária (DRAM) – O miss penalty diminui se os dados estão nesse cache nível 2 • Exemplo: – CPI de 1.0 numa máquina a 500Mhz com 5% miss rate, acesso a DRAM de 200ns – Adicionando cache nível 2 de tempo de acesso = 20ns diminui o miss rate para 2% 16 Caches Multi-Nível • Opções: caches de dados e instruções separados, ou um cache unificado Processor Regs L1 d-cache L1 i-cache size: speed: $/Mbyte: line size: 200 B 3 ns 8B Unified L2 Cache 8-64 KB 1-4MB SRAM 3 ns 6 ns $100/MB 32 B 32 B Memory 128 MB DRAM 60 ns $1.50/MB 8 KB disk 30 GB 8 ms $0.05/MB larger, slower, cheaper 17 Hierarquia de cache no Pentium Intel Regs. L1 Data 1 cycle latency 16 KB 4-way assoc Write-through 32B lines L1 Instruction 16 KB, 4-way 32B lines L2 Unified 128KB--2 MB 4-way assoc Write-back Write allocate 32B lines Main Memory Up to 4GB Processor Chip 18 Memória Virtual • A memória principal pode agir como um cache para o armazenamento secundário (disco) Virtual addresses Physical addresses Address translation • Vantagens: – Ilusão de ter mais memória física – Relocação de programa – proteção Disk addresses 19 Páginas: “blocos” na memória virtual • Falta de página: os dados não estão na memória, deve ser recuperado do disco – miss penalty grande, portanto, as páginas devem ser bem grandes (p.ex., 4KB) – É importante reduzir as faltas de página – Pode manipular as faltas em software ao invés de hardware – usar write-through é muito dispendioso, então usa-se writeback Virtual address 31 30 29 28 27 15 14 13 12 11 10 9 8 Virtual page number 3210 Page offset Translation 29 28 27 15 14 13 12 11 10 9 8 Physical page number Physical address 3210 Page offset 20 Tabela de páginas Virtual page number Valid Page table Physical page or disk address Physical memory 1 1 1 1 0 1 1 0 1 Disk storage 1 0 1 21 Tabela de páginas Page table register Virtual address 31 30 29 28 27 15 14 13 12 11 10 9 8 Virtual page number Page offset 20 Valid 3 2 1 0 12 Physical page number Page table 18 If 0 then page is not present in memory 29 28 27 15 14 13 12 11 10 9 8 Physical page number Physical address 3 2 1 0 Page offset 22 Fazendo a tradução de endereço rápida • Um cache para tradução TLB de endereço: translation lookaside buffer Virtual page number Valid Tag Physical page address 1 1 Physical memory 1 1 0 1 Page table Physical page Valid or disk address 1 1 1 Disk storage 1 0 1 1 0 1 1 0 1 23 TLBs e caches Virtual address TLB access TLB miss exception No Yes TLB hit? Physical address No Yes Write? Try to read data from cache No Write protection exception Cache miss stall No Cache hit? Yes Deliver data to the CPU Write access bit on? Yes Write data into cache, update the tag, and put the data and the address into the write buffer 24 Acelerando a tradução de endereço com TLB • “Translation Lookaside Buffer” (TLB) – Pequeno cache em MMU – Mapeia número de página virtual para número de página física – Contem entradas de tabela de página completas para um pequeno número de páginas hit PA VA CPU miss TLB Lookup miss Cache Main Memory hit Translation data 25 Tradução de endereço com TLB n–1 p p–1 0 virtual page number page offset valid . virtual address tag physical page number . TLB . = TLB hit physical address tag index valid tag byte offset data Cache = cache hit data 26 Exemplo de sistema de memória simples • endereçamento – Endereço virtual de 14-bits – Endereço físico de 12-bits – Tamanho de página = 64 bytes 13 12 11 10 9 8 7 6 5 4 VPN 10 2 1 0 VPO (Virtual Page Offset) (Virtual Page Number) 11 3 9 8 7 6 5 4 3 2 1 PPN PPO (Physical Page Number) (Physical Page Offset) 0 27 Tabela de página – Somente mostra as primeiras 16 entradas VPN PPN Valid VPN PPN Valid 00 28 1 08 13 1 01 – 0 09 17 1 02 33 1 0A 09 1 03 02 1 0B – 0 04 – 0 0C – 0 05 16 1 0D 2D 1 06 – 0 0E 11 1 07 – 0 0F 0D 1 28 TLB (Translation Look-Aside Buffer) • TLB – 16 entradas – Associativo de 4-linhas por conjunto (4-way) TLBT 13 12 11 10 TLBI 9 8 7 6 5 4 3 VPN 2 1 0 VPO Set Tag PPN Valid Tag PPN Valid Tag PPN Valid Tag PPN Valid 0 03 – 0 09 0D 1 00 – 0 07 02 1 1 03 2D 1 02 – 0 04 – 0 0A – 0 2 02 – 0 08 – 0 06 – 0 03 – 0 3 07 – 0 03 0D 1 0A 34 1 02 – 0 29 Cache – 16 linhas – Linha de 4-bytes – Mapeamento direto CI CT 11 10 9 8 7 6 5 4 PPN CO 3 2 1 0 PPO Idx Tag Valid B0 B1 B2 B3 Idx Tag Valid B0 B1 B2 B3 0 19 1 99 11 23 11 8 24 1 3A 00 51 89 1 15 0 – – – – 9 2D 0 – – – – 2 1B 1 00 02 04 08 A 2D 1 93 15 DA 3B 3 36 0 – – – – B 0B 0 – – – – 4 32 1 43 6D 8F 09 C 12 0 – – – – 5 0D 1 36 72 F0 1D D 16 1 04 96 34 15 6 31 0 – – – – E 13 1 83 77 1B D3 7 16 1 11 C2 DF 03 F 14 0 – – – – 30 Exemplo de tradução de endereço #1 • Endereço Virtual 03D4h TLBT 13 12 11 TLBI 10 9 8 7 6 5 4 3 VPN VPN ___ 2 1 0 VPO TLBI ___ TLBT ____ TLB Hit? __ Page Fault? __ PPN: ____ • Endereço físico CI CT 11 10 9 8 7 6 5 PPN Offset ___ CI___ CT ____ 4 CO 3 2 1 0 PPO Hit? __ Byte: ____ 31 Exemplo de tradução de endereço #2 • Endereço Virtual 0B8Fh TLBT 13 12 11 TLBI 10 9 8 7 6 5 4 3 2 1 0 VPN VPN ___ VPO TLBI ___ TLBT ____ TLB Hit? __ Page Fault? __ PPN: ____ • Endereço físico CI CT 11 10 9 8 7 6 PPN Offset ___ CI___ CT ____ 5 4 CO 3 2 1 0 PPO Hit? __ Byte: ____ 32 Exemplo de tradução de endereço #3 • Endereço Virtual 0040h TLBT 13 12 11 TLBI 10 9 8 7 6 5 4 3 VPN VPN ___ 2 1 0 VPO TLBI ___ TLBT ____ TLB Hit? __ Page Fault? __ PPN: ____ • Endereço físico CI CT 11 10 9 8 7 6 PPN Offset ___ CI___ CT ____ 5 4 CO 3 2 1 0 PPO Hit? __ Byte: ____ 33