Memória Memória Cache Revisão - Memória Principal Memória que armazena os dados e programas em linguagem de máquina em execução corrente Razoavelmente barata Tempo de acesso da ordem de nano-segundos a dezenas de nano-segundos Freqüência de acesso alta Se não existisse a memória Cache, seria acessada a cada ciclo de instrução Revisão - Hierarquia de memória Modelo hierárquico Revisão - Memória Principal Cada posição da memória principal tem um endereço único Geralmente é combinada com uma memória Cache menor e mais veloz – – A Cache geralmente não é visível ao usuário È usada para melhorar o desempenho Evolução O aperfeiçoamento das memórias centrou-se no aumento da sua capacidade de armazenar O aperfeiçoamento das CPU's centrou-se no seu desempenho A memória principal tem grande capacidade de armazenamento porem seu acesso é lento Ela pode se tornar um "gargalo" para a CPU, que deve esperar muito para receber os dados dela Soluções É possível projetar uma memória com velocidade compatível com a CPU? Sim, mas é muito caro! Seria possível embutir a memória no chip da CPU e reduzir o uso do barramento? Sim, mas existem restrições ao aumento do tamanho do chip! A melhor Solução Memória Cache! Memória rápida, porem cara e de menor capacidade Contudo, associada à memória principal, (barata e de grande capacidade), resulta num sistema: – – – razoavelmente barato razoavelmente rápida de grande capacidade Memória Cache Na Cache são mantidas as palavras mais usadas pelo processador Se a maior parte dos acessos for resolvida pela Cache, o tempo médio de acesso será próximo do tempo de acesso ao Cache, que é pequeno. Arquitetura com a Cache Conexão Lógica entre CPU, Cache e Memória Principal. X=X+Y Notas importantes O acesso à RAM não é totalmente aleatório Referências à memória num certo intervalo de tempo pequeno tendem a acessar uma pequena parte da memória total Essa pequena parte é geralmente chamada de bloco Nestes blocos os endereços estão ordenados numa seqüência lógica para a execução da CPU Principio da Localidade Definição: – Existe grande probabilidade que palavras próximas a uma palavra recentemente referenciada também sejam referenciadas nos próximos acessos Aplicação: – Quando uma palavra é referenciada pelo processador, se ela não estiver no Cache, ela é trazida para o mesmo junto com palavras de endereços vizinhos na memória principal Organização Memória principal é divididas em blocos de endereços de tamanho fixo A Cache é dividida em linhas Sempre que uma endereço procurada não estiver no Cache o bloco correspondente é trazido da memória principal É mais eficiente trazer k endereços de uma vez do que uma endereço k vezes Mapeamento Como associar um dado na memória principal a uma posição na Cache? Mapeamento: – – – Direto Associativo Associativo por conjuntos Mapeamento Direto Cada bloco da memória principal é mapeado numa linha na Cache, e cada linha da Cache possui um rótulo Como a Cache é muito menor do que a memória principal, muitos endereços compartilham a mesma linha Um endereço é dividido em: – – – Rótulo Linha Palavra Mapeamento Direto O campo linha do endereço é usado para endereçar a Cache e o campo Rótulo do endereço é comparado com o campo Rótulo da linha na Cache É verificado se, dentre as palavras mapeadas naquele linha existe a palavra que esta sendo buscada Mapeamento Direto Endereços diferentes são mapeados na mesmo linha Isso pode comprometer o desempenho, pois palavras irrelevantes podem estar armazenadas na mesma linha, enquanto palavras importantes podem estar armazenadas em linhas diferentes da Cache Se elas estão em diferentes linhas levará mais tempo para encontra-las Mapeamento Associativo Permite que cada bloco da memória seja carregado em qualquer linha da Cache Nesse sistema a Cache é formada apenas por um Rótulo e uma Palavra Um rótulo identifica um bloco da memória principal Mapeamento Associativo A busca de uma palavra na cache envolve duas fases: Determinação do número do bloco a partir do endereço – Obtido dividindo o endereço pelo tamanho b do bloco. Busca da linha que contém este número de bloco – Comparar simultaneamente os campos de número de bloco de todos os linhas com o número de bloco procurado Mapeamento Associativo Na cache associativa, a ordem das entradas é aleatória O microprograma busca a palavra na cache e, se não estiver lá, vai a memória principal armazenando-a Caso a cache esteja cheia alguma palavra deverá ser descartada, de acordo com uma política de substituição adequada Comparação Direto vs Associativo Acesso Associativo por Conjunto Combinação de cache associativa e cache com mapeamento direto Une as vantagens de ambas e tenta minimizar as suas desvantagens