Captulo 7 1 Memrias Reviso SRAM O valor

  • Slides: 33
Download presentation
Capítulo 7 1

Capítulo 7 1

Memórias: Revisão • SRAM: – O valor é armazenado num par de portas inversoras

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) 2

Explorando Hierarquia de Memória • Os usuários desejam memórias de grande capacidade e rápidas!

Explorando Hierarquia de Memória • Os usuários desejam memórias de grande capacidade e rápidas! Tempo de acesso de SRAM = 2 - 25 ns; custo $100 a $250 por Mbyte. Tempo de acesso de DRAM = 60 -120 ns; custo $5 a $10 por Mbyte. Tempo de acesso de Disco = 10 a 20 milhões ns; custo $. 10 a $. 20 por Mbyte. • Construir uma hierarquia de memória 3

Princípio de Localidade • Este principio garante a eficiência da hierarquia de memória •

Princípio de Localidade • Este principio garante a eficiência da hierarquia de memória • localidade temporal: referência repetida à mesma 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

Cache • Cache (nível superior): é uma memória rápida, normalmente implementada em SRAM, que contém cópias dos 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

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 1 mod 8 = 1 9 mod 8 = 1 17 mod 8 = 1 25 mod 8 = 1 1 9 17 25 6

Cache em mapeamento direto • Para MIPS: Que tipo de localidade está sendo usada?

Cache em mapeamento direto • Para MIPS: Que tipo de localidade está sendo usada? 7

Cache em mapeamento direto • Levando vantagem sobre a localidade espacial: 8

Cache em mapeamento direto • Levando vantagem sobre a localidade espacial: 8

Hits vs. Misses • Read hits – É o que se deseja! • Read

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

Questões de Hardware • Fazer a leitura de múltiplas palavras usando bancos de memória 10

Desempenho Aumentando o tamanho do bloco tende a decrescer o miss rate. Usar caches

Desempenho Aumentando o tamanho do bloco tende a decrescer o miss rate. Usar caches repartidos (split) porque existem mais localidade espacial no código. 11

Desempenho tempo de execução = (ciclos de execução + ciclos de parada) ´ tempo

Desempenho tempo de execução = (ciclos de execução + ciclos de parada) ´ tempo de 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 13

Diminuindo miss rate com associatividade 13

Uma implementação 14

Uma implementação 14

Desempenho 15

Desempenho 15

Diminuindo o miss penalty com caches multiníveis • Adicionar um segundo nível de cache:

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 500 Mhz com 5% miss rate, acesso a DRAM de 200 ns – Adicionando cache nível 2 de tempo de acesso = 20 ns diminui o miss rate para 2% 16

Caches Multi-Nível • Opções: caches de dados e instruções separados, ou um cache unificado

Caches Multi-Nível • Opções: caches de dados e instruções separados, ou um cache unificado Processor Regs L 1 d-cache L 1 i-cache size: speed: $/Mbyte: line size: 200 B 3 ns 8 B Unified L 2 Cache Memory 8 -64 KB 1 -4 MB SRAM 3 ns 6 ns $100/MB 32 B 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. L 1 Data 1 cycle latency 16

Hierarquia de cache no Pentium Intel Regs. L 1 Data 1 cycle latency 16 KB 4 -way assoc Write-through 32 B lines L 1 Instruction 16 KB, 4 -way 32 B lines L 2 Unified 128 KB--2 MB 4 -way assoc Write-back Write allocate 32 B lines Main Memory Up to 4 GB Processor Chip 18

Memória Virtual • A memória principal pode agir como um cache para o armazenamento

Memória Virtual • A memória principal pode agir como um cache para o armazenamento secundário (disco) • Vantagens: – Ilusão de ter mais memória física – Relocação de programa – proteção 19

Páginas: “blocos” na memória virtual • Falta de página: os dados não estão na

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. , 4 KB) – É 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 20

Tabela de páginas 21

Tabela de páginas 21

Tabela de páginas 22

Tabela de páginas 22

Fazendo a tradução de endereço rápida • Um cache para tradução de endereço: translation

Fazendo a tradução de endereço rápida • Um cache para tradução de endereço: translation lookaside buffer 23

TLBs e caches 24

TLBs e caches 24

Acelerando a tradução de endereço com TLB • “Translation Lookaside Buffer” (TLB) – Pequeno

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 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

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

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 00

Tabela de página – Somente mostra as primeiras 16 entradas VPN PPN Valid 00 28 1 08 13 1 01 – 0 09 17 1 02 33 1 0 A 09 1 03 02 1 0 B – 0 04 – 0 0 C – 0 05 16 1 0 D 2 D 1 06 – 0 0 E 11 1 07 – 0 0 F 0 D 1 28

TLB (Translation Look-Aside Buffer) • TLB – 16 entradas – Associativo de 4 -linhas

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 0 03 – 0 09 0 D 1 00 – 0 07 02 1 1 03 2 D 1 02 – 0 04 – 0 0 A – 0 2 02 – 0 08 – 0 06 – 0 03 – 0 3 07 – 0 03 0 D 1 0 A 34 1 02 – 0 29

Cache – 16 linhas – Linha de 4 -bytes – Mapeamento direto CI CT

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 B 0 B 1 B 2 B 3 0 19 1 99 11 23 11 8 24 1 3 A 00 51 89 1 15 0 – – 9 2 D 0 – – 2 1 B 1 00 02 04 08 A 2 D 1 93 15 DA 3 B 3 36 0 – – B 0 B 0 – – 4 32 1 43 6 D 8 F 09 C 12 0 – – 5 0 D 1 36 72 F 0 1 D D 16 1 04 96 34 15 6 31 0 – – E 13 1 83 77 1 B D 3 7 16 1 11 C 2 DF 03 F 14 0 – – 30

Exemplo de tradução de endereço #1 • Endereço Virtual 03 D 4 h TLBT

Exemplo de tradução de endereço #1 • Endereço Virtual 03 D 4 h TLBT 13 12 11 TLBI 10 9 8 7 6 5 4 3 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 0 B 8 Fh TLBT

Exemplo de tradução de endereço #2 • Endereço Virtual 0 B 8 Fh TLBT 13 12 11 TLBI 10 9 8 7 6 5 4 3 2 1 0 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 0040 h TLBT 13 12

Exemplo de tradução de endereço #3 • Endereço Virtual 0040 h TLBT 13 12 11 TLBI 10 9 8 7 6 5 4 3 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