Organização e Arquitetura de Computadores Sequência 18 Memória Cache Understand the CPU-to-memory gap Understand issues and opportunities to fill the CPU-to-memory gap Understand the memory to storage gap Understand issues and opportunities to fill the memory-to-storage gap Seq.18 Memória Cache 1 Increasing core performance Increasing cores Increasing bus speed More memory Increasing density Faster interfaces Increasing latency NAND 1200 1000 800 600 400 200 0 Memory Transfer Rate chart: Micron research 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007
Normalized Latency per Core 1B 100M 10M 1M 1000 100 10 1 Clocks of Latency Level 1 Cache Level 2 Cache Main Memory Disk 32 16 8 4 Number of Cores 2 1 L1 L2 FSBus DRAM HDD Source: Instat, Micron, Intel AMD Barcelona Quad core 2M shared L3 cache Dedicated L2 caches Intel Penryn Dual/Quad core 6MB/12MB L2 cache Intel Nehalem Quad/8 core NAND CPU Relative Relative Latency Cost/bit 1 L1 Cache 200 2.5 L2 Cache 140 35 L3 Cache 120 300 DRAM 8 250,000 SSD 3 25,000,000 HDD 0.7 NAND Flash Closes the Latency Gap Cost/bit Data as of Aug 06
Power Reliability Space Performance Table 1: Observed failure rates System Source Type TerraServer SAN TerraServer Brick Web Property 1 Web Property 2 Barclay SCSI 10krpm Part Years Fails Fails /Year 858 24 2.8% controllers 72 2 2.8% san switch 9 1 11.1% Barclay SATA 7krpm 138 10 7.2% anon anon SCSI 10krpm 15,805 972 6.0% Controllers 900 139 15.4% PATA 7krpm 22,400 740 3.3% motherboard 3,769 66 1.7% HDD Controller ECC Application Operating System File System SSD Flash Translation Layer (FTL) Controller ECC NAND Flash Translation Layer Interfaces to traditional HDD File System Enables sector I/O to Flash Wear leveling Bad block management Automatic reclamation of erased blocks Power loss protection Manages multiple NAND devices Controller Manages Physical Protocol NAND Command encoding High Speed data transport (DMA/FIFO) Error Control Algorithm to control sector-level bit reliability Implemented in hardware with software control Algorithm depends upon Flash technology Source: Microsoft Research Hierarquia de Memória Memória Cache Seq.18 Memória Cache 11 Seq.18 Memória Cache 12
Memória Cache I Memória Cache II Se a memória virtual cria a ilusão de uma memória principal, física, ilimitada e mais rápida que a secundária, o objetivo da memória cache é criar outra grande ilusão: que as referências à memória serão atendidas na velocidade do processador. Seq.18 Memória Cache 13 Seq.18 Memória Cache 14 Princípio da localidade I Localidade espacial Os endereços gerados por um programa normalmente estão restritos a uma pequena região do espaço de endereçamento virtual (instruções de um programa e estruturas de dados). Princípio da localidade II Localidade temporal O conjunto de endereços varia lentamente no tempo. Se um item é referenciado, itens cujos endereços são próximos tendem a ser referenciados brevemente (execução de loops). Seq.18 Memória Cache 15 Seq.18 Memória Cache 16
Medida de Desempenho I Medida de Desempenho II O desempenho de uma memória cache depende de um conjunto de parâmetros tais como tamanho de blocos, tamanho da cache e do tipo de mapeamento utilizado. Cache Miss Quanto uma posição de memória acessada não está na cache. Cache hit Quanto uma posição de memória acessada esta na cache. Taxa de acerto: HR (hit rate) Taxa de falha: MR ( miss rate) MR = 1 - HR Seq.18 Memória Cache 17 Seq.18 Memória Cache 18 Desempenho Tempo de execução Modelo simplificado Tempo_de_execução = (ciclos_de_execução + ciclos_de_pausa) x tempo_de_ciclo Desempenho Tamanho do bloco I Aumentar o tamanho dos blocos tende a diminuir a taxa de falhas: ciclos_de_pausa = # de_instruções x taxa_de_falha x penalidade_de_falha Dois modos de melhorar o desempenho: diminuir a taxa de falha. diminuir a penalidade de falha. O que acontece se aumentarmos o tamanho do bloco? Bancos de Memória Interleaved memory - Intercalada Seq.18 Memória Cache 19 Seq.18 Memória Cache 20
Desempenho Tamanho do bloco II Alocação e Organização Como sabemos se um dado se encontra na cache? Caso afirmativo como localizá-lo? Mapeamento direto Mapeamento totalmente associativo Mapeamento associativo por grupos Seq.18 Memória Cache 21 Seq.18 Memória Cache 22 Para cada item da memória principal existe exatamente uma localização na cache onde o item pode estar. Vários itens da memória principal compartilham localizações na cache. Endereço é: Módulo(número de blocos na cache). Mapeamento direto Seq.18 Memória Cache 23
Mapeamento direto: Vantagens x Desvantagens Vantagens: Não há necessidade de algoritmo de substituição. Hardware simples e de baixo custo. Alta velocidade de operação. Desvantagens: Desempenho cai se acessos consecutivos são feitos a palavras de mesmo índice. Hit ratio inferior ao de caches com mapeamento associativo Mapeamento Set Associativo Set associativo: Do Inglês: "Set Associative". O mapeamento parcial é um projeto intermediário entre o mapeamento direto e o total, Neste caso, existem um número fixo de posições onde a palavra pode ser armazenada (pelo menos duas) que é chamado um conjunto. Uma cache com um conjunto de duas posições é chamada: 2-way set-associativa. Uma cache com um conjunto de quatro posições é chamada: 4-way set-associativa. Seq.18 Memória Cache 25 Seq.18 Memória Cache 26 Mapeamento Set Associativo 4 Way Seq.18 Memória Cache 27 Processador FastMATH, cache 16 KB com 256 blocos De 16 Words por bloco
Mapeamento Completamente Associativo Mapeamento CA : Vantagens x Desvantagens Do Inglês: "Fully-Associative". A palavra pode ser colocada em qualquer lugar da cache. Neste caso deve ser armazenado na cache não somente o dado mas também o endereço. Para descobrir se a posição procurada está armazenada na cache, é feita a comparação simultânea de todos os endereços, caso seja localizado (cache hit) o dado é devolvido ao processador. Caso o endereço pesquisado não se encontre na cache (cache miss) a memória principal é acessada. Vantagens: Máxima flexibilidade no posicionamento de qualquer palavra (ou linha) da memória principal em qualquer palavra (ou linha) da cache. Desvantagens: Custo em hardware da comparação simultânea de todos os endereços armazenados na cache. Algoritmo de substituição (em hardware) para selecionar uma linha da cache como conseqüência de um miss. Seq.18 Memória Cache 29 Seq.18 Memória Cache 30 Mapeamento associativo Estratégias de substituição I Quando ocorre cache miss, uma nova linha deve ser trazida da memória principal para a cache. Em que local da cache será colocada esta linha? A estratégia de substituição define qual linha será tirada da cache para dar lugar a nova. No caso do mapeamento direto, cada palavra tem um lugar pré-definido, então não existe escolha. No caso do mapeamento completamente associativo, pode-se se escolher qualquer posição da cache. No caso do set associativo, qualquer posição dentro do conjunto definido pelo índice. Seq.18 Memória Cache 31 Seq.18 Memória Cache 32
Estratégias de substituição II Substituição aleatória: Neste caso é escolhida uma posição qualquer da cache aleatoriamente para ser substituída. É mais simples de implementar mas não leva em conta o principio da localidade temporal. First-in First-out: Remove a linha que está a mais tempo na cache. Exige a implementação de uma fila em hardware. LRU - Least Recently Used: Menos recentemente utilizado. Remove a linha que a mais tempo não é referenciada. Exige implementação de um contador para cada linha. Quando um Hit ocorre na linha seu contador é zerado, enquanto todos os demais são incrementados. Quando for necessário substituir uma linha, será retirada aquela cujo contador tiver o valor mais alto. Políticas de escritas Como qualquer requisição de acesso à memória é feito através da cache, se a CPU fizer a escrita de uma posição que estiver armazendada na cache, e se esta alteração não for repassada para a memória principal, pode-se perder a atualização quando a linha da cache for substituída. Para evitar esse problema pode-se adotar duas estratégias: Write-Through Write-Back Seq.18 Memória Cache 33 Seq.18 Memória Cache 34 Políticas de escritas Write Through A política Write-Through passa cada operação não somente para a memória cache, mas também para a memória principal, garantindo desta forma que o tem na cache tem na memória principal. Toda vez que escrever na cache, também escreve na principal. Esta política é muito simples e lenta. Políticas de escritas Write Back A política Write-Back só escreve no cache. Quando o barramento estiver livre é que vai procurar na memória principal. Sua desvantagem é que quando a memória cache estiver cheia tem que garantir que o que está na cache, também está na memória principal. A política Write-back é mais complicada para ser implementada, mas fornece mais alta performance que a política write-through Seq.18 Memória Cache 35 Seq.18 Memória Cache 36
AMAT Tempo Médio de Acesso à Memória AMAT Average Memory Access Time Métrica que exprime qual é o tempo médio gasto no acesso a dados no sistema de memória. AMAT = Hit Time + MR * Miss Penalty Hit Time = Tempo gasto para acessar a memória cache. MR = Miss Rate = Taxa de falhas = (1 Hit Rate). Miss Penalty = Penalidade (em tempo) devido ao dado não estar na cache. Exercício típico sobre AMAT 1) Encontre o tempo médio de acesso (AMAT) à memória para uma máquina cujo tempo de ciclo é de 2 ns, cuja penalidade por falta é de 20 ciclos, com uma taxa de falhas de 5% por instrução, e com uma cache cujo tempo de acesso (incluindo a deteção do acerto) é de 1 ciclo de clock. Suponha que as penalidades para leituras e escritas são as mesmas e ignoram qualquer outra parada devida a operações de escrita. Resposta: Seq.18 Memória Cache 37 Seq.18 Memória Cache 38 Exercício típico sobre AMAT 2) Considerando o exercício anterior, suponha que possamos melhorar a taxa de faltas (miss rate) para 3% falta por referência, dobrando o tamanho da cache. Isto faz com que o tempo de acesso cresça para 1,2 ciclo de clock. Usando o AMAT como métrica, determine se as modificações são ou não convenientes. Resposta: Seq.18 Memória Cache 39