Arquitetura e Organização de Computadores. Capítulo 5 Grande e Rápida: Explorando a Hierarquia de Memória

Documentos relacionados
Infraestrutura de Hardware. Explorando Desempenho com a Hierarquia de Memória

Infraestrutura de Hardware. Explorando a Hierarquia de Memória

Capítulo 7 Sistemas de Memória. Ch7a 1

Arquitetura e Organização de Processadores. Aulas 9 e 10. Memória cache

Hierarquia de Memória

Hierarquia de Memória. Sistemas de Computação André Luiz da Costa Carvalho

SSC0611 Arquitetura de Computadores

Memória Cache. Aula 24

Memória cache segunda parte. Organização de Computadores. Aula 17. Memória cache segunda parte. 1. Mapeamento completamente associativo

Princípio da Localidade Apenas uma parte relativamente pequena do espaço de endereçamento dos programas é acessada em um instante qualquer Localidade

Organização e Arquitetura de Computadores. Ivan Saraiva Silva

Organização e Arquitetura de computadores

Cache. Cache. Direct Mapping Cache. Direct Mapping Cache. Internet. Bus CPU Cache Memória. Cache. Endereço Byte offset

Memória e Hierarquia de Memória. Memória Vs. Armazenamento

Memória 21/05/2010. Introdução. Hierarquia de Memória. Hierarquia de Memória. Arquitetura de Computadores

Aula 16: Memória Principal e Memória Virtual

Capítulo 5 Livro do Mário Monteiro Conceituação. Elementos de projeto de memória cache

ELECTRÓNICA DE COMPUTADORES. Sumário

Hierarquia de memória

Hierarquia de memória

FUNDAMENTOS DE ARQUITETURAS DE COMPUTADORES MEMÓRIA CACHE CONTINUAÇÃO CAPÍTULO 5. Cristina Boeres

Memória Cache. Memória Cache. Localidade Espacial. Conceito de Localidade. Diferença de velocidade entre Processador/MP

Memória Virtual. Prof. M.Sc. Bruno R. Silva CEFET-MG Campus VII

Memória Cache Prof. Rômulo Calado Pantaleão Camara. Carga Horária: 60h

Memória Cache. Walter Fetter Lages.

5 de Maio de Aula 15

Aula 16: Memória Principal e Memória Virtual

Organização de Computadores

Gerência de Memória. Paginação

Arquitetura de Computadores. Hierarquia de Memória. Prof. Msc. Eduardo Luzeiro Feitosa

Hierarquia de Memória

Tempo de processador desperdiçado a fazer nada. Processor register 1 clock cycle (0.5 2 GHz) $??? DRAM semiconductor memory ns $10 $20

SSC0112 Organização de Computadores Digitais I

Gerência de Memória. Endereçamento Virtual (1) Paginação. Endereçamento Virtual (2) Endereçamento Virtual (3)

Microprocessadores. Memórias

Memoria. UNIVERSIDADE DA BEIRA INTERIOR Faculdade de Engenharia Departamento de Informática

Capítulo Sistemas de Memória Memória Virtual. Ch7b 1

Universidade Federal de Campina Grande Departamento de Sistemas e Computação Curso de Bacharelado em Ciência da Computação.

Arquitectura de Computadores (ACom)

Arquitetura e Organização de Computadores 2. Organização Hierárquica da Memória. Uma afirmação antiga, mas perfeitamente atual

Organização e Arquitetura de Computadores

Arquitectura de Computadores II

Hierarquia de Memória

SSC0112 Organização de Computadores Digitais I

Memórias cache: uma introdução

Projeto de Caches. Projeto de memórias cache (ii)

Arquitectura de Computadores

Arquitetura de Computadores

Arquitectura de Computadores (ACom)

Organização e Arquitetura de Computadores I

Gerenciamento de memória

MC722. Medidas. Instruções. Funções. Pilha. add $t0,$s1,$s2. slti rt,rs,const if (rs < const) rd=1; else rd=0;

Hierarquia de memória. Melhorando o desempenho

ORGANIZAÇÃO DE COMPUTADORES CAPÍTULO4: MEMÓRIAPRINCIPAL


Sistemas Operacionais

Correção de Erros. Erros de memória de semicondutores podem ser:

Infra-estrutura Hardware

EA960 Memória virtual

FUNDAMENTOS DE ARQUITETURAS DE COMPUTADORES MEMÓRIA CACHE CAPÍTULO 5. Cristina Boeres

Memória virtual. Sistemas de Computação

SSC510 Arquitetura de Computadores. 8ª aula

Sistemas Operacionais. Conceitos de Hardware

ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I AULA 10: MEMÓRIA E HIERARQUIA DE MEMÓRIAS

Memória Cache. Adriano J. Holanda. 12 e 16/5/2017

ü Capítulo 4 Livro do Mário Monteiro ü Introdução ü Hierarquia de memória ü Memória Principal ü Memória principal ü Memória cache

Sistemas Operacionais

Experimentos com o Cache Organização de Computadores

Memória Principal. Tiago Alves de Oliveira

Memória Cache: Funcionamento

Arquitectura de Computadores (ACom)

Arquitetura e Organização de Processadores. Aula 4. Pipelines

Memória cache (cont.) Sistemas de Computação

Aula 06. Slots para Memórias

Níveis de memória. Diferentes velocidades de acesso. Memória Cache. Memórias Auxiliar e Auxiliar-Backup

É um sinal elétrico periódico que é utilizado para cadenciar todas as operações realizadas pelo processador.

DCC-IM/NCE UFRJ Pós-Graduação em Informática. Gabriel P. Silva. Microarquiteturas de Alto Desempenho

Tecnologias de Memória

Microcontroladores e Interfaces

Instituto de Matemática e Estatística - USP MAC Organização de Computadores EP1. Experimentos com o cache. Tiago Andrade Togores

Memória virtual. Pedro Cruz. EEL770 Sistemas Operacionais

Arquitetura de Computadores. Processamento Paralelo

Arquitetura de Computadores. Memórias

Memória. Conceitos gerais Hierarquia de memórias

SSC0640 Sistemas Operacionais I

1. A pastilha do processador Intel possui uma memória cache única para dados e instruções. Esse processador tem capacidade de 8 Kbytes e é

Sistemas Operacionais Gerenciamento de Memória. Carlos Ferraz Jorge Cavalcanti Fonsêca

SSC0611 Arquitetura de Computadores

UNIDADE CENTRAL DE PROCESSAMENTO FELIPE G. TORRES

Sistemas Operacionais. Gerenciamento de Memória

Organização e Arquitetura de Computadores I

Arquitectura de Computadores (ACom)

AULA Nº 11 SISTEMAS OPERACIONAIS. Técnicas de Memória Virtual

Prof. Frank Sill Torres DELT Escola de Engenharia UFMG

Sistemas Operacionais: Memória Virtual

Sistemas de Memória. CES-25 Arquiteturas para Alto Desmpenho. Paulo André Castro

Circuitos Lógicos Aula 26

Arquitetura de Sistemas Operacionais

Transcrição:

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