Arquitetura e Organização de Computadores Capítulo 5 Grande e Rápida: Explorando a Hierarquia de Memória
Material adaptado de: Patterson e Henessy, Computer Organization and Design 4 th Edition 2
Static RAM (SRAM): 0,5ns 2,5ns, $2000 - $5000 por GB; Dynamic RAM (DRAM): 50ns 70ns, $20 - $75 por GB; Disco magnético: 5ms 20ms, $0,20 - $2 por GB; Memória ideal: Tempo de acesso da SRAM; Capacidade e custo/gb do disco. Tecnologia da memória 3
Programas acessam uma pequena porção do seu espaço de endereços em qualquer momento; Localidade temporal: Itens acessados recentemente são mais prováveis de serem acessados novamente: Ex: instruções em um loop, variáveis de indução; Localidade espacial: Itens próximos daqueles acessados recentemente são mais prováveis de serem acessados em breve: Ex: acesso a instruções sequenciais, array de dados. Princípio da localidade 4
Hierarquia de memória; Armazene tudo no disco; Copie itens recentemente acessados (e os próximos) do disco para uma memória menor (DRAM): Memória principal; Copie itens mais recentemente acessados (e os próximos) da DRAM para uma memória menor (SRAM): Memória cache anexada a CPU. Aproveitando-se da localidade 5
Bloco (ou linha): unidade de cópia Podem ser várias palavras; Se o dado acessado está presente no nível mais alto: Hit (acerto): acesso satisfeito pelo nível mais alto: Taxa de acerto = hits/acessos; Se dado acesso está ausente: Miss (falta): bloco é copiado de um nível inferior Tempo gasto: miss penalty (penalidade); Taxa de faltas = misses/acessos = 1 taxa de acerto; Por fim, o dado acessado é disponibilizado pelo nível mais alto. Níveis e hierarquia de memória 6
Memória cache: Nível da hierarquia de memória mais próximo à CPU: Dado os acesso X 1,..., X n-1, X n Como saber se o dado está presente? Onde devemos procurar? Memória cache 7
Localização determinada pelo endereço; Mapeamento direto: só uma opção: (endereço do bloco) módulo (#blocos na cache) #Blocos é uma potência de 2. Utilize os bits de baixa ordem do endereço. Cache de mapeamento direto 8
Como nós sabemos qual bloco em particular está armazenado em uma posição da cache? Armazene o endereço do bloco bem como o dado; Na verdade, só é necessário os bits de mais alta ordem do endereço; Chamado Tag; E se não há dados válidos em uma posição? Bit de validade: 1 = presente, 0 = não presente; Inicia com 0. Rótulos (Tags) e bit de validade 9
8 blocos, 1 palavra/bloco, mapeamento 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 10
Word addr Binary addr Hit/miss Cache block 22 10 110 Miss 110 Index V Tag Data 000 N 001 N 010 N 011 N 100 N 101 N 110 Y 10 Mem[10110] 111 N Exemplo de cache 11
Word addr Binary addr Hit/miss Cache block 26 11 010 Miss 010 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 Exemplo de cache 12
Word addr Binary addr Hit/miss Cache block 22 10 110 Hit 110 26 11 010 Hit 010 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 Exemplo de cache 13
Word addr Binary addr Hit/miss Cache block 16 10 000 Miss 000 3 00 011 Miss 011 16 10 000 Hit 000 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 Exemplo de cache 14
Word addr Binary addr Hit/miss Cache block 18 10 010 Miss 010 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 Exemplo de cache 15
Subdivisão do endereço 16
64 blocos, 16 bytes/bloco; Em qual bloco o endereço 1200 é mapeado? Endereço do bloco = 1200/16 = 75 Número do bloco = 75 módulo 64 = 11 31 10 9 4 3 0 Tag Index Offset 22 bits 6 bits 4 bits Exemplo: Tamanho de bloco grande 17
Blocos grandes deveriam reduzir a taxa de faltas: Devido a localidade espacial; Mas em um cache com um tamanho fixo: Blocos grandes poucos blocos; Mais competição por espaço aumento da taxa de faltas; Blocos grandes poluição; Maior penalidade no miss: Pode inverter o benefício de reduzir a taxa de faltas; Reinicio mais cedo possível e palavra crítica primeiro podem ajudar. Considerações do tamanho do bloco 18
Em caso de hit, CPU procede normalmente; Em caso de miss: Stall no pipeline da CPU; Buscar o bloco no próximo nível de memória; Instruction Cache Miss: Reinicia o Fetch da instrução; Data Cache Miss: Completar o acesso ao dado. Cache Misses 19
Em caso de escrita de dados der um hit, simplesmente atualize o bloco na cache; Entretanto cache e memória ficarão inconsistentes; Write-through: também atualize a memória; Faz a escrita demorar mais tempo: Se o CPI base é 1, 10% das instruções são stores e a escrita na memória leva 100 ciclos: CPI Efetivo = 1 + 0,1x100 = 11 Solução: buffer de escrita Armazena o dado esperando para ser escrito na memória; CPU continua imediatamente: Só dá um stall quando o buffer de escrita está cheio. Write-Through 20
Alternativa: caso a escrita de dado der um hit, apenas atualize o bloco da cache: Mantenha a informação que o bloco está inconsistente (dirty); Quando o bloco inconsistente é substituído: Escreva de volta na memória; Pode usar um buffer de escrita para permitir que o bloco substituto seja lido primeiro. Write-Back 21
O que deveria acontecer em caso de falta na escrita? Alternativas para o wirte-through Allocate on miss: busque o bloco; Write around: não busque o bloco: Uma vez que programas normalmente escrevem em todo o bloco antes de o ler (ex: inicialização); Para o write-back: Geralmente busque o bloco. Write Allocation 22
Processador MIPS embarcado: Pipeline de 12 estágios; Acesso a instrução e dados em cada ciclo: Split Caches: caches separadas para instrução (I-cache) e dados (D-cache): Cada 16KB: 256 blocos x 16 palavras/bloco; D-cache: write-through ou write-back; Taxa de faltas no SPEC2000: I-cache: 0,4% D-cache: 11,4% Combinadas: 3,2% Exemplo: Intrinsity FastMATH 23
Exemplo: Intrinsity FastMATH 24
Use DRAMs para a memória principal: Largura fixa (ex: 1 word); Conectada com um barramento síncrono de largura fixa: Frequência de clock do barramento normalmente é menor que a da CPU; Exemplo de leitura de um bloco da cache: 1 ciclo de barramento para enviar o endereço; 15 ciclos de barramento por acesso a DRAM; 1 ciclo de barramento por dado transferido; Para um bloco de 4 palavras, DRAM com largura de 1 palavra: Miss Penalty = 1 + 4x15 + 4x1 = 65 bus cycles Bandwidth = 16 bytes / 65 cycles = 0.25 B/cycle Memória principal com suporte de caches 25
Largura de 4 palavras: Miss Penalty = 1 + 15 + 1 = 17 bus cycles; Bandwith = 16 bytes / 17 cycles = 0,94 B/cycle 4 bancos de memória intercalados: Miss Penalty = 1 + 15 + 4x1 = 20 bus cycles; Bandwith = 16 bytes / 20 cycles = 0,8 B/cycle Aumentando a largura de banda da memória 26
Bits na DRAM são organizados como um array retangular: DRAM acessa um linha inteira; Modo rajada (burst mode): acessa palavras sucessivas de uma linha com latência reduzida; Double data rate (DDR) DRAM: Transfere na subida e descida do clock; Quad data rate (QDR) DRAM: Entradas e saídas DDR separadas. Organização avançada da DRAM 27
Trac = Tempo de acesso a uma lina. Tcac = Tempo de acesso à coluna com a linha já selecionada. Year Capacity $/GB 1980 64Kbit $1500000 1983 256Kbit $500000 1985 1Mbit $200000 1989 4Mbit $50000 1992 16Mbit $15000 1996 64Mbit $10000 1998 128Mbit $4000 2000 256Mbit $1000 2004 512Mbit $250 2007 1Gbit $50 300 250 200 150 100 50 0 '80 '83 '85 '89 '92 '96 '98 '00 '04 '07 Trac Tcac Gerações da DRAM 28
Componentes do tempo de CPU: Execução do programa em ciclos: Inclui o tempo de hit da cache; Ciclos de stall da memória: Principalmente de cache misses; Com hipóteses simplificadas: Memory stall cycles Memory accesses Program Instructions Program Miss rate Miss penalty Misses Instruction Miss penalty Desempenho da cache 29
Dado: I-cache miss rate = 2% D-cache miss rate = 4% Miss penalty = 100 cycles CPI base (cache ideal) = 2 Load & stores são 36% das instruções Ciclos de miss por instrução: I-cache: 0,02 x 100 = 2 D-cache: 0,36 x 0,04 x 100 = 1,44 CPI = 2 + 2 + 1,44 = 5,44 CPU ideal é 5,44/2 = 2,72 vezes mais rápida Exemplo: desempenho da cache 30
Tempo do hit também é importante para o desempenho; Average memory acess time (AMAT): AMAT = Hit time + Miss rate x Miss penalty Exemplo: CPU com clock de 1ns, hit time = 1 ciclo, miss penalty = 20 ciclos, I-cache miss rate = 5% AMAT = 1 + 0,05 x 20 = 2ns 2 ciclos por instrução Tempo de acesso médio 31
Quando o desempenho da CPU aumenta: A penalidade em caso de falta se torna mais significante; Diminuindo o CPI base: Maior a proporção do tempo gasto em stalls da memória; Aumentando a frequência do clock: Stalls da memória gastam mais ciclos da CPU; Não pode ser negligenciado o comportamento da cache durante a avaliação do desempenho do sistema. Resumo do desempenho 32
Totalmente associativa (fully associative): Permite que um dado bloco possa ser armazenado em qualquer entrada da cache; Necessita que todas as entradas sejam avaliadas de uma só vez; Um comparador por entrada da cache (muito caro!); Caches associativas 33
Associativa por conjunto (n-away set associative): Cada conjunto contêm n entradas; Número do bloco determina em qual conjunto ele será armazenado: (Block number) modulo (#Sets in cache) Busca em todas as entradas de um determinado conjunto de um só vez; N comparadores (menos caro!) Caches associativas 34
Exemplo: cache associativa 35
Compare caches de 4 blocos: Mapeamento direto, 2-way associativa por conjunto, totalmente associativa; Sequência de acesso a blocos: 0, 8, 0, 6, 8; Mapeamento Direto: Block address Cache index Hit/miss Cache content after access 0 1 2 3 Exemplo de associatividade 36
Compare caches de 4 blocos: Mapeamento direto, 2-way associativa por conjunto, totalmente associativa; Sequência de acesso a blocos: 0, 8, 0, 6, 8; Mapeamento Direto: Block address Cache index Hit/miss 0 0 miss Mem[0] Cache content after access 0 1 2 3 Exemplo de associatividade 37
Compare caches de 4 blocos: Mapeamento direto, 2-way associativa por conjunto, totalmente associativa; Sequência de acesso a blocos: 0, 8, 0, 6, 8; Mapeamento Direto: Block address Cache index Hit/miss 0 0 miss Mem[0] 8 0 miss Mem[8] Cache content after access 0 1 2 3 Exemplo de associatividade 38
Compare caches de 4 blocos: Mapeamento direto, 2-way associativa por conjunto, totalmente associativa; Sequência de acesso a blocos: 0, 8, 0, 6, 8; Mapeamento Direto: Block address Cache index Hit/miss 0 0 miss Mem[0] 8 0 miss Mem[8] 0 0 miss Mem[0] Cache content after access 0 1 2 3 Exemplo de associatividade 39
Compare caches de 4 blocos: Mapeamento direto, 2-way associativa por conjunto, totalmente associativa; Sequência de acesso a blocos: 0, 8, 0, 6, 8; Mapeamento 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] Exemplo de associatividade 40
Compare caches de 4 blocos: Mapeamento direto, 2-way associativa por conjunto, totalmente associativa; Sequência de acesso a blocos: 0, 8, 0, 6, 8; Mapeamento 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 41
2-way set associative: Block address Cache index Hit/miss Cache content after access Set 0 Set 1 Exemplo de associatividade 42
2-way set associative: Block address Cache index Hit/miss 0 0 miss Mem[0] Cache content after access Set 0 Set 1 Exemplo de associatividade 43
2-way set associative: Block address Cache index Hit/miss 0 0 miss Mem[0] 8 0 miss Mem[0] Mem[8] Cache content after access Set 0 Set 1 Exemplo de associatividade 44
2-way set associative: Block address Cache index Hit/miss 0 0 miss Mem[0] 8 0 miss Mem[0] Mem[8] 0 0 hit Mem[0] Mem[8] Cache content after access Set 0 Set 1 Exemplo de associatividade 45
2-way set associative: Block address Cache index Hit/miss 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] Cache content after access Set 0 Set 1 Exemplo de associatividade 46
2-way set associative: Block address Cache index Hit/miss 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] Cache content after access Set 0 Set 1 Exemplo de associatividade 47
2-way set associative: Block address Cache index Hit/miss 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] Cache content after access Set 0 Set 1 Fully associative: Block address Hit/miss Cache content after access Exemplo de associatividade 48
2-way set associative: Block address Cache index Hit/miss 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] Cache content after access Set 0 Set 1 Fully associative: Block Hit/miss address 0 miss Mem[0] Cache content after access Exemplo de associatividade 49
2-way set associative: Block address Cache index Hit/miss 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] Cache content after access Set 0 Set 1 Fully associative: Block address Hit/miss Cache content after access 0 miss Mem[0] 8 miss Mem[0] Mem[8] Exemplo de associatividade 50
2-way set associative: Block address Cache index Hit/miss 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] Cache content after access Set 0 Set 1 Fully associative: Block address Hit/miss Cache content after access 0 miss Mem[0] 8 miss Mem[0] Mem[8] 0 hit Mem[0] Mem[8] Exemplo de associatividade 51
2-way set associative: Block address Cache index Hit/miss 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] Cache content after access Set 0 Set 1 Fully associative: 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] Exemplo de associatividade 52
2-way set associative: Block address Cache index Hit/miss 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] Cache content after access Set 0 Set 1 Fully associative: 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] Exemplo de associatividade 53
Aumento da associatividade diminui a taxa de faltas: Mas com retornos decrescentes; Simulação de um sistema com 64KB D-cache, blocos de 16-word, SPEC2000: 1-way: 10,3% 2-way: 8,6% 4-way: 8,3% 8-way: 8,1% Quanto do associtividade? 54
Organização da cache associativa por conjunto 55
Mapeamento direto: sem escolha; Associativa por conjunto: Escolha a entrada inválida, se existir uma; Caso contrário, escolher entre as entradas do conjunto; Least-recently used (LRU): Escolha aquela não foi utilizada pelo tempo mais longo: Simples para 2-way, gerenciável para 4-way, muito difícil para maiores que isso; Random: Dá aproximadamente o mesmo desempenho que o LRU para associatividade alta. Política de substituição 56
Cache primária anexa à CPU (Level 1 L1): Pequena, porém rápida; Cache Nível 2 (Level 2 L2) responde aos misses da cache L1: Maior, lenta, entretanto mais rápida que a memória principal; Memória principal responde aos misses da cache L2; Alguns sistemas de alta capacidade incluem uma cache L3. Cache Multinível 57
Dado: CPI base = 1, frequência de clock = 4GHz; Miss rate/instrução = 2%; Tempo de acesso à memória principal = 100ns; Com apenas uma cache primária: Miss penalty = 100ns/0.25ns = 400 cycles; Effective CPI = 1 + 0.02 x 400 = 9. Exemplo: cache multinível 58
Com adição da cache L2: Tempo de acesso = 5ns; Taxa de falta global para memória principal = 0.5%; L1 miss com L2 hit: Penalty = 5ns/0.25ns = 20 cycles; L1 miss com L2 miss: Extra penalty = 400 cycles; CPI = 1 + 0.02 x 20 + 0.005 x 400 = 3.4; Razão de desempenho = 9/3.4 = 2.6. Exemplo: continuação; 59
Cache L1: Foca no tempo de hit mínimo; Cache L2: Foca em um baixa taxa de faltas para evitar acessos à memória; Tempo de hit tem um pequeno impacto; Resultados: Cache L1 normalmente menos que o sistema com cache única; Tamanho do bloco da cache L1 é menor que o da cache L2. Considerações da cache multinível 60
CPUs out-of-order podem executar instruções durante um cache miss: Stores pendentes ficam na unidade load/store; Instruções dependentes esperam nas unidades de reserva; Instruções independentes continuam; Efeito do miss depende fluxo de dados do programa: Muito difícil de analisar; Usar simulação de sistema. Interações com CPU avançadas 61
Misses depende dos padrões de acesso à memória: Comportamento do algoritmo; Otimizações do compilador para acessar à memória. Interações com software 62
MEMÓRIA VIRTUAL 63
Usa a memória principal como uma cache para o armazenamento secundário (disco): Gerenciado em conjunto pela CPU e sistema operacional; Programas compartilham a memória principal: Cada um possui o seu espaço virtual e privado de endereçamento que armazena o seu código e dados frequentemente utilizados; Protegido de outros programas; CPU e SO traduzem endereços virtuais em endereços físicos: Bloco da MV é chamado página; Miss na tradução da MV é chamado de falta de página (page fault). Memória virtual 64
Páginas de tamanho fixo (ex: 4K). Tradução do endereço 65
Em caso de falta de página, ela precisa ser buscada do disco: Leva milhões de ciclo de clocks; Realizada pelo SO; Tentar minimizar a taxa de falta de páginas: Posicionamento totalmente associativo; Algoritmos de substituição mais inteligentes. Page Fault Penalty 66
Armazena informação do posicionamento das páginas: Array de entradas de tabela de páginas (PTE), indexadas pelo número da página virtual; Se a página está presenta na memória: PTE armazena o número da página física; Além de outros bits de status (referenciado, dirty,...); Se a página não está presente: PTE pode referencia para um local espaço de swap no disco. Tabela de páginas 67
Tradução utilizando a tabela de páginas 68
Mapeando páginas no disco 69
Para reduzir a taxa de faltas, normalmente usamos LRU como algoritmo de substituição: Bit de referência (bit de uso) no PTE é setado para 1 quando a página é acessada; Periodicamente é setada para 0 pelo SO; Uma página com bit de referência = 0 não foi recentemente utilizada; Escritas no disco gastam milhões de ciclos: Bloque as escritas de uma vez, sem posições individuais; Write through é impraticável; Usar write-back; Seta o bit de dirty no PTE quando a página é escrita. Substituição e escritas 70
Tradução de endereço pode aparentar o acesso extra à memória: Uma para acessar a tabela de páginas; Depois para acessar o dado na memória; Entretanto o acesso à tabela de páginas apresenta boa localidade: Então usamos uma cache rápida com as entradas de tabela de páginas (PTEs) junto à CPU; Chamada: Translation Look-aside Buffer (TLB); Configurações típicas: 16-512 PTEs, 0.5-1 ciclo por hit, 10-100 ciclos por miss, 0.01%-1% de miss rate; Misses podem ser gerenciados por hardware ou software. Tradução rápida usando a TLB 71
Tradução rápida usando a TLB 72
Se a página está na memória: Carregue a entrada da tabela de página (PTE) da memória e tente novamente; Pode ser tratada por hardware: Pode ficar mais complexo para estruturas de tabelas de página complicadas; Ou por software:\ Levantando um exceção especial, com uma rotina otimizada; Se a página não está na memória (page fault): SO busca a página no disco e atualiza a tabela de páginas; Depois reinicia a instrução que causou a falta. TLB Misses 73
TLB miss indica: Página está presente, mas a entrada da tabela (PTE) não está na TLB; Página não está presente; Deve reconhecer o TLB miss antes da sobrescrita no registrador destino: Levantando uma exceção; Handler copia o PTE da memória para a TLB: Depois reinicia a instrução; Se a página não está presente, então uma falta de página irá ocorrer. TLB Miss Handler 74
Usa o endereço virtual faltante para achar o PTE; Localiza a página no disco; Escolhe a página para substituir: Se a página está modificada (dirty), escreve ela no disco; Carrega a página na memória e atualiza a tabela de páginas; Faça o procedimento executar novamente: Reinicia a instrução que causou a falta. Page Fault Handler 75
Se a tag da cache usa endereços físicos: Necessita de tradução antes de acessar a cache; Alternativa: usar endereços virtuais na tag: Complicações devidos aos apelidos : Endereços virtuais diferentes para endereços físicos compartilhados. Interação entre TLB e Cache 76
Tarefas diferente podem compartilhar partes dos espaços de endereçamento virtual; Entretanto necessitam de proteção contra acessos errantes; Necessita de assistência do SO; Suporte de hardware para a proteção do SO: Modo supervisor privilegiado (kernel mode); Instruções previlegiadas; Tabelas de páginas e outras informações de estados só são acessíveis no modo supervisor; Exceção para as syscalls. Proteção da Memória 77
A HIERARQUIA DE MEMÓRIA 78
Princípios comuns se aplicam a todos os níveis da hierarquia de memória: Baseado na noção de cache; Em cada nível da hierarquia: Posicionamento de blocos; Encontrar um bloco; Substituição na falta; Política de escrita. A hierarquia de memória 79
Determinado pela associatividade; Mapeamento direto (1-way associativo); Uma escolha de posição; N-away associativo (conjunto); N escolhas dentro de um conjunto; Completamente associativa: Qualquer posição; Maior associatividade reduz a taxa de faltas: Aumenta a complexidade, custo e tempo de acesso. Posicionamento do bloco 80
Associativity Location method Tag comparisons Direct mapped Index 1 n-way set associative Caches no hardware: Reduzir as comparações para reduzir os custos; Memória virtual: Set index, then search entries within the set Fully associative Search all entries #entries Full lookup table 0 Busca em toda a tabela faz a associatividade completa factível; Beneficio de reduzir a taxa de faltas. n Encontrando um bloco 81
Escolha a entrada que será substituída no miss: Least recently used (LRU): Complexo e custosa para hardware com grande associatividade; Aleatório: Próximo ao LRU, porém fácil de implementar; Memória virtual: Aproximação de LRU com suporte de hardware. Substituição 82
Write-through: Atualiza ambos níveis superior e inferior; Simplifica a substituição, mas necessita de um buffer de escrita; Write-back: Atualiza apenas o nível superior; Atualiza o nível inferior apenas quando o bloco é substituído; Necessita armazenar o estado do bloco; Memória virtual: Apenas write-back é factível devido a latência de escrita no disco. Políticas de escrita 83
Misses compulsórios (cold start misses): Primeiro acesso a um bloco; Misses de capacidade: Devido ao tamanho finito das caches; Um bloco substituído é acessado mais tarde novamente; Misses de conflito (collisions misses): Em uma cache não completamente associativa; Devido a competição entre as entradas da cache em um conjunto; Não ocorreriam em caches completamente associativas do mesmo tamanho. Fonte dos misses 84
Design change Effect on miss rate Negative performance effect Increase cache size Increase associativity Increase block size Decrease capacity misses Decrease conflict misses Decrease compulsory misses May increase access time May increase access time Increases miss penalty. For very large block size, may increase miss rate due to pollution. Cache Design Trade-offs 85
Host emula sistemas operacionais hóspede e recursos de máquina: Isolamento entre vários hóspedes ; Evita problemas de segurança e confiabilidade; Compartilhamento de recursos; Virtualização tem algum impacto no desempenho: Factível com computadores modernos de alto-desempenho; Exemplos: IBM VM/370 (tecnologia dos anos 1970); VMWare; Microsoft Virtual PC. Máquinas Virtuais 86
Mapeia recursos virtuais em recursos físicos: Memória, dispositivos de I/O, CPUs Código do hóspede executa nativamente no processador em modo usuário: Chama a VMM em instruções privilegiadas e acesso a recursos protegidos; SO hóspede pode ser diferente do SO do host; VMM gerencia dispositivos de I/O reais: Emula dispositivos de I/O genéricos para o hóspede. Monitor da Máquina Virtual - VMM 87
Na máquina nativa, quando ocorre uma interrupção do timer: SO suspende o processo corrente, trata a interrupção, seleciona e executa a próximo processo; Com o Monitor de Máquina Virtual: VMM suspende a VM em execução, trata a interrupção, seleciona e executa a próxima VM; Se a VM requisita interrupções do timer: VMM emula um timer virtual; Emula a interrupção na VM quando uma interrupção do timer físico acontece. Exemplo: Virtualização do Timer 88
Modos Usuário e Sistema; Instruções privilegiadas só estão disponíveis no modo Sistema: Chama o sistema se ela for executada no modo usuário; Todos os recursos físicos só são acessível usando instruções privilegiadas: Incluindo tabela de páginas, controle de interrupções, registradores de I/O; Renascimento do suporte a virtualização: Adaptando ISAs mais recentes (ex. x86). Suporte do conjunto de instruções 89
Exemplo de cache: Mapeamento direto, write-back, write allocate; Tamanho do bloco: 4 palavras (16 bytes); Tamanho da cache: 16 KB (1024 blocos); Endereços de 32 bits; Um bit de validade e outro de modificado ( dirty ) por bloco; Cache bloqueante: CPU espera até que todo o acesso esteja completo. 31 10 9 4 3 0 Tag Index Offset 18 bits 10 bits 4 bits Controlador da Cache 90
Read/Write Read/Write Valid Valid Address 32 Address 32 CPU Write Data 32 Cache Write Data 128 Memory Read Data 32 Read Data 128 Ready Ready Multiple cycles per access Sinais da Interface 91
Could partition into separate states to reduce clock cycle time FSM do controlador de cache 92
Suponha que duas CPUs compartilham o mesmo espaço de endereçamento físico: Cache write-through. Time step Event CPU A s cache CPU B s cache Memory 0 0 1 CPU A reads X 0 0 2 CPU B reads X 0 0 0 3 CPU A writes 1 to X 1 0 1 Problema da Coerência de Cache 93
Informalmente: Leitura de um dado retorna o valor mais recentemente escrito; Formalmente: P escreve em X; P lê X (sem escritas intercaladas) leitura retorna o valor escrito; P 1 escreve em X; P 2 lê X (suficientemente depois) leitura retorna o valor escrito: Ex. CPU B lendo X depois do passo 3 no exemplo anterior; P 1 escreve em X, P 2 escreve em X todos os processadores veem as escritas na mesma ordem: Terminam com mesmo valor final de X. Definição de Coerência 94
Operações executada pelas caches em multiprocessadores para garantir a coerência: Migração de dados para as caches locais: Reduz o consumo de banda da memória compartilhada; Replicação de dado compartilhado para leitura: Reduz a contenção por acesso; Protocolos Snooping: Cada cache monitora as leituras e escritas no barramento; Protocolos baseados em diretórios: O estado de compartilhamento de blocos entre caches e memória é armazenado em um diretório. Protocolos de coerência de cache 95
Cache garante exclusividade de acesso a um bloco antes de ele ser escrito: Broadcast uma mensagem de invalidação no barramento; Leitura posterior do dado em uma falta de outra cache: Envia o dado atualizado; CPU activity Bus activity CPU A s cache CPU B s cache Memory CPU A reads X Cache miss for X 0 0 CPU B reads X Cache miss for X 0 0 0 CPU A writes 1 to X Invalidate for X 1 0 CPU B read X Cache miss for X 1 1 1 0 Invalidanting Snooping Protocols 96
Quando escritas são vistas por todos os processaodres: Vista indica que uma leitura retorna o valor escrito; Não pode ser instantâneo; Pressuposto: Uma escrita só completa quando todos os processadores a tenham visto. Um processador não reordena escritas com outros acessos; Consequência: P escreve X e depois escreve Y todos os processadores que veem o novo valor Y também veem o novo valor X; Processadores podem reordenar leituras mas não escritas. Consistência de Memória 97
Intel Nehalem 4-core processor Per core: 32KB L1 I-cache, 32KB L1 D-cache, 512KB L2 cache Multilevel On-Chip Caches 98
Intel Nehalem AMD Opteron X4 Virtual addr 48 bits 48 bits Physical addr 44 bits 48 bits Page size 4KB, 2/4MB 4KB, 2/4MB L1 TLB (per core) L2 TLB (per core) L1 I-TLB: 128 entries for small pages, 7 per thread (2 ) for large pages L1 D-TLB: 64 entries for small pages, 32 for large pages Both 4-way, LRU replacement Single L2 TLB: 512 entries 4-way, LRU replacement L1 I-TLB: 48 entries L1 D-TLB: 48 entries Both fully associative, LRU replacement L2 I-TLB: 512 entries L2 D-TLB: 512 entries Both 4-way, round-robin LRU TLB misses Handled in hardware Handled in hardware 2-Level TLB Organization 99
L1 caches (per core) L2 unified cache (per core) L3 unified cache (shared) Intel Nehalem L1 I-cache: 32KB, 64-byte blocks, 4-way, approx LRU replacement, hit time n/a L1 D-cache: 32KB, 64-byte blocks, 8-way, approx LRU replacement, writeback/allocate, hit time n/a 256KB, 64-byte blocks, 8-way, approx LRU replacement, writeback/allocate, hit time n/a 8MB, 64-byte blocks, 16-way, replacement n/a, writeback/allocate, hit time n/a AMD Opteron X4 L1 I-cache: 32KB, 64-byte blocks, 2-way, LRU replacement, hit time 3 cycles L1 D-cache: 32KB, 64-byte blocks, 2-way, LRU replacement, writeback/allocate, hit time 9 cycles 512KB, 64-byte blocks, 16-way, approx LRU replacement, writeback/allocate, hit time n/a 2MB, 64-byte blocks, 32-way, replace block shared by fewest cores, write-back/allocate, hit time 32 cycles n/a: data not available 3-Level Cache Organization 100
Retorne a palavra requisitada primeiro: Depois preenche o resto do bloco; Processamento de MISS não bloqueante: Hit sob miss: permita que os hits procedam; Miss sob miss: permita múltiplos misses em aberto; Hardware prefetch: instruções e dados; Redução da Penalidade na Falta 101
Endereçamento a byte vs. Palavra: Exemplo: cache de mapeamento direto de 32 bytes, blocos de 4 bytes: Byte 36 é mapeado no bloco 1; Palavra 36 é mapeada no bloco 4; Ignorar os efeitos do sistema de memória quando escrever ou gerar código: Ex. iterações sobre linhas vs. colunas de um array; Saltos grandes resultam em uma localidade ruim. Armadilhas 102
Em um multiprocessador com caches L2 e L3 compartilhadas: Menos associatividade que núcleos resultam em miss de conflitos; Mais núcleos necessidade de aumentar a associatividade; Usando AMAT para avaliar o desempenho de processadores com execução fora de ordem: Ignora o efeito de acessos não bloqueantes; Ao invés disso, avalie o desempenho com simulação. Armadilhas 103
Aumentar o alcance do endereçamento usando segmentos: Ex. Intel 80286; Entretanto um segmento nem sempre é grande o suficiente; Torna o cálculo do endereço mais complicado; Implementando uma VMM em um ISA que não foi projetada para virtualização: Ex. instruções não privilegiadas acessando recursos de hardware; Ou estenda o ISA, ou faça com que o SO hóspede não use instruções problemáticas. Armadilhas 104
Memórias pequenas são rápidas, memórias grandes são lentas: Nós realmente queremos memórias rápidas e grandes Cache cria essa ilusão Princípio da localidade: Programas usam uma pequena parte de seu espaço de memória frequentemente; Hierarquia de memória: L1 cache L2 cache... Memória DRAM disco; Projeto do sistema de memória é crítico em multiprocessadores. Conclusões 105
Arquitetura e Organização de Computadores Capítulo 5 Grande e Rápida: Explorando a Hierarquia de Memória