MEMÓRIA INTERNA Prof. Fernando F. Costa HIERARQUIA DE MEMÓRIA Parâmetros de análise das memórias: Tempo de acesso Ciclo de memória Capacidade Volatilidade Tecnologia de Fabricação Eletrônicas Magnéticas Óticas Temporariamente Custo HIERARQUIA DE MEMÓRIA Processador registradores Cache L1 (32KB) Cache L2 (1 MB) Cache L3 (8 MB) Memória RAM (2 GB) Disco 250 GB maior capacidade, menor custo Os computadores possuem uma hierarquia de memória com vários níveis. Os registradores são pequenas unidades de memória presentes na CPU responsáveis por armazenar dados de instruções durante a execução da mesma. As caches têm cópias das células de memória mais usadas e são de funcionamento automático. A memória central (ou principal) pode servir de cache do disco (memória virtual). O disco pode servir de cache para a informação em servidores. Os “mirrors” são servidores que atuam como caches de outros. menor tempo de acesso MEMÓRIA CACHE As caches são pequenas memórias internas (mais rápidas que a memória externa) que contêm os dados e instruções mais usados (dão ao núcleo do processador a ilusão de memórias separadas). instruções endereços de instruções Núcleo do processador dados dados endereços de dados Cache de instruções endereços Interface de memória Cache de dados Processador dados/instruções WR RD Memória principal (dados e instruções) MEMÓRIA CACHE - EXEMPLOS Fonte: www.clubedohardware.com.br MEMÓRIA CACHE - EXEMPLOS Fonte: www.clubedohardware.com.br PRINCÍPIOS DE FUNCIONAMENTO DAS CACHES Felizmente, os programas acessam a memória com: Localidade temporal. Se um endereço for acessado agora, há uma grande probabilidade de ser acessado no futuro próximo (loops, rotinas de invocação freqüente, dados importantes); Localidade espacial. Se um endereço for acessado, a probabilidade de os próximos acessos serem em endereços próximos é grande (execução seqüencial, loops, arrays cujos dados são acessados seqüencialmente). PRINCÍPIOS DE FUNCIONAMENTO DAS CACHES Assim, a cache só tem as células de memória mais freqüentemente acessadas. Pode ser menor do que a memória completa, logo muito mais rápida sem o custo ser muito elevado. ACESSO ÀS CACHES Quando se acessa um determinado endereço: Se a célula com esse endereço estiver na cache, o acesso é muito rápido (cache hit); Se não estiver, ocorre um cache miss. Tem de se ir à memória principal, carregar essa célula na cache e repetir o acesso. O desempenho das caches normalmente é medido pelo hit rate (percentagem média dos acessos com cache hit, tipicamente superiores a 95%). Também se pode falar na miss rate (percentagem média dos acessos com cache miss = 1 – hit rate), tipicamente inferior a 5%. ACESSO ÀS CACHES DESEMPENHO DAS CACHES Quanto maior for a cache em relação à memória principal, maior será a hit rate. Tem um impacto grande no desempenho, mas também no custo. Ex: Os Celerons mais baratos eram na verdade, Pentiuns com metade da cache. Supondo: Tempo de acesso da cache: 5 ns Tempo de acesso da memória principal: 50 ns Hit rate média: 95% Então, o tempo de acesso médio será: 0.95 * 5 ns + 0.05 * 55 ns = 7. 5 ns Ou seja, 50 ns/7.5 ns = 6.7 vezes mais rápido do que se só tivéssemos a memória principal. ELEMENTOS DO PROJETO DA MEMÓRIA CACHE Endereços de cache Tamanho Função de mapeamento Algoritmos de substituição Política de escrita Tamanho da linha Número de memórias caches ELEMENTOS DO PROJETO DA MEMÓRIA CACHE Endereços de cache Cache Lógica – Entre CPU e MMU Cache Física – Entre MMU e RAM Tamanho Muito grande - Mais lento e Mais caro. Muito pequena – Hit rate baixo Função de mapeamento Direto Associativo Associativo em Conjunto MAPEAMENTO DIRETO Cada bloco da memória principal é mapeado a somente uma linha de cache Endereço é composto por 2 partes Os w bits LSB indentificam a palavra no bloco Os s bits MSB especificam um bloco de memória MAPEAMENTO DIRETO Os p bits LSB do bloco são o índice da cache, tal que a cache possui 2p linhas. Na prática, isto se resume na tabela abaixo: MAPEAMENTO ASSOCIATIVO O mapeamento direto tem o problema de dois blocos com o mesmo índice não poderem coexistir na cache, mesmo que: os dois blocos estejam sendo muito usados o resto da cache esteja vazia!!! No mapeamento associativo qualquer bloco pode ocupar qualquer posição na cache, mas : O rótulo tem de ser o endereço todo (para distinguir quaisquer blocos), exceto os bits de endereço da palavra dentro do bloco A procura do bloco (para ver se é cache hit) já não é por índice. Tem de se comparar o endereço com o rótulo em todos os blocos ao mesmo tempo (para ser rápido) MAPEAMENTO ASSOCIATIVO MAPEAMENTO ASSOCIATIVO POR CONJUNTOS DE K VIAS Uma solução intermediária é usar K caches de mapeamento direto e procurar em todas elas em paralelo (mapeamento associativo de K vias). Uma linha das várias caches de mapeamento direto é um conjunto (uma cache associativa). conjunto conjunto conjunto Via 0 =? rótulo índice palavra dentro do bloco hit Via 1 =? ALGORITMOS DE SUBSTITUIÇÃO Onde colocar uma célula de memória que se foi buscar na memória principal devido a um cache miss? Caches de mapeamento direto: na célula indicada pelo índice Caches de mapeamento completamente associativo: Com lugares vagos: em um lugar vago qualquer Cheia: LRU, FIFO, Random Na prática, costuma usar-se um contador para ir escrevendo na célula seguinte, independentemente de estar cheia ou vazia, de ter sido muito usada ou não. É um método simples e não muito pior que os anteriores Caches associativas com K vias: obtém-se o conjunto através do índice e escolhe-se uma via POLÍTICA DE ESCRITA Temos duas políticas de escrita: Write-through: escreve-se na cache e na memória principal Write-back: escreve-se só na cache e só se atualiza a memória principal quando o bloco tem de sair da cache TAMANHO DA LINHA O tamanho da linha da cache também é outro fator a ser considerado pois a medida que os blocos da memória principal se tornam maiores, temos duas situações Poucos blocos por vez na cache – Grande descarte de dados logo após carregamento As palavras adicionais ficam distantes da solicitada, o que torna menor a chance de serem utilizadas. NÚMEROS DE MEMÓRIAS CACHE Caches Multiníveis – Inicialmente havia apenas uma única cache. Com o passar do tempo surgiram caches multiníveis que em um primeiro momento eram externas a CPU (acessadas por barramento), mas que posteriormente foram introduzidas no chip da CPU. Caches Unificadas versus Separadas – Unificada: Maior taxa de acerto, somente uma cache precisa ser projetada e implementada. Separada: Melhor desempenho, pois evita disputas entre unidades de busca/decodificação de instruções e unidades de execução. EXERCÍCIOS DE CACHES 1. 2. 3. 4. Defina cache hit e cache miss. Como o princípio de localidade se relaciona com o uso de caches multiníveis. Quais são as diferenças entre mapeamento direto e associativo. Cite as vantagens e desvantagens de cada um. Qual a diferença entre localidade espacial e localidade temporal?