Hierarquia de Memória Prof. André Luis M. Silva e/msn:[email protected] Agenda • • • • • • • • • • Introdução Tipos de Memória Princípio da Localidade Memória Cache Técnicas de Mapeamento Opções de Projeto de Memória Política de Substituição. Política de Falta. Política de Falta em Escrita. Cache Multinível. Introdução “O ideal seria ter uma capacidade de memória infinitamente grande a ponto de qualquer word específica estar imediatamente disponível... Somos ... Forçados a reconhecer a possibilidade de construir uma hierarquia de memórias, cada uma com capacidade maior do que a anterior, mas com acessibilidade menos rápida.” A.W. Burks, H.H. Goldstine e J. Von Neumman Tipos de Memória • SRAM (Static RAM) – Muito rápida, mas ocupa mais espaço que a DRAM. – Tecnologia utilizada na fabriação das memórias caches. • DRAM (Dynamic Ram) – Tecnologia utilizada na fabricação das memórias principais. – Muito pequena, porém mais lenta que a SRAM (fator de 5 a 10 vezes mais lenta). Trabalho sobre memória • Para o banco do conhecimento: – OTP-ROM, EPROM, EEPROM – SRAM, DRAM, PSRAM, NVRAM Tipos de Memória Tecnologia da memória Tempo de acesso típico US$ por GB em 2004 SRAM 0,5 a 5 ns 4000 a 10.000 DRAM 50 a 70 ns 100 a 200 Disco Magnético 5.000.000 a 20.000.000 ns. 0,50 a 2 Alguns Conceitos • Taxa de Falha – A proporção dos acessos à memória não encontrados em um nível da hierarquia de memória. • Taxa de Acertos – A proporção dos acessos à memória encontrados em uma cache. • Tempo de Acerto – O tempo necessário para acessar um nível da hierarquia de memória, incluindo o tempo necessário para determinar se o acesso é um acerto ou uma falha. • Penalidade de Falha – O tempo necessário para buscar um bloco de um nível inferior para um nível superior da hierarquia de memória, incluindo o tempo para acessar o bloco e transmiti-lo de um nível para outro e inseri-lo no nível que experimentou a falha. Princípio da Localidade • Programas acessam uma parte relativamente pequena do seu espaço de endereçamento em qualquer instante do tempo. – Dividi-se em: • Localidade Temporal • Localidade Espacial Princípio da Localidade • Localidade Temporal – Se um item é referenciado, ele tenderá ser referenciado novamente em breve. Princípio da Localidade • Localidade Espacial – Se um item é referenciado, os itens cujos endereços estão próximos tenderão a ser referenciados em breve. Hierarquia de Memória registradores Memória cache Memória Principal Memória Secundária Memórias Cache • Representa o nível mais alto do projeto de hierarquia de memórias. • A arquitetura que faz uso de caches unificados é denominada de arquitetura de Princeton. • A arquitetura que faz uso de caches dedicada para dado e para instrução é denominada de arquitetura de Harvard. Memória Cache • Como sabemos se um item de dado está na cache? • Se estiver, como encontrá-lo? • Para isso empregamos algumas técnicas de mapeamento: – Mapeamento Direto. – Associativo por conjunto. – Totalmente associativo. Técnicas de Mapeamento • Mapeamento Direto – Cada local da memória é mapeado exatamente para um local da cache. Mapeamento Direto Tag: Campo utilizado para localizar os dados Bit de validade: Campo nas tabelas que indica se o dado é válido. Índice: Indica a linha da cache. Armazenar uma palavra por linha é uma boa técnica? Mapeamento Direto Explorando espacial. localidade Cada linha da cache é conhecida como bloco. Podemos desenvolver caches que armazenem mais de uma palavra por linha. Opções de Projeto de Memória Trabalha com requisições de uma única palavra. Abordagem simples, barata porém mais lenta. Opções de Projeto de Memória Trabalha com requisições por blocos. Memória e barramento possuem tamanho do bloco. Possui melhor desempenho, porém mais caro. Opções de Projeto de Memória Trabalha com requisições por blocos. Vários bancos de memória Embora trabalhe com blocos, o barramento trabalha com palavras. Mais barata que a solução anterior, possui desempenho intermediário. Mapeamento Totalmente Associativo • Os blocos podem ser inseridos em qualquer lugar da cache. • Favorece a taxa de acerto. • Implementação complexa. Mapeamento Totalmente Associativo Mapeamento Associativo por Conjunto • Mescla as duas soluções apresentada anteriormente. • Um bloco pode ser inserido em um conjunto restrito de lugares. • Um bloco é mapeado primeiro em um conjunto e depois o bloco pode ser inserido em qualquer lugar dentro desse conjunto. Mapeamento Associativo por Conjunto Mapeamento Associativo por Conjunto Políticas de Substituição • Em caches totalmente associativa e associativas por conjunto, um mesmo endereço pode ser escrito em mais de uma localização. • As políticas de substituição definem qual o lugar onde o dado será escrito. Política de Substituição • As políticas mais utilizadas são: – Randômica • Escolhe o bloco a ser substituído de maneira aleatória. – LRU • Substitui o bloco menos usado recentemente. – FIFO • Substitui o elemento mais antigo. Tipos de Falta • Falta por Capacidade – Faltas que acontecem devido a cache estar preenchida e não poder inserir novos valores. • Falta Compulsória – Faltas que acontecem quando a linha da cache ainda não possui valores. • Faltas por conflito – Faltas que acontecem entre os diferentes dados que são mapeados para uma mesma localização na cache. Políticas de Escrita • Forma como as memórias caches trabalham quando o processador solicita uma escrita de dados. – Write Back • As informações são gravadas no bloco da cache. O bloco da cache será gravado na memória principal somente quando for substituído. – Write Through • As informações são gravados no bloco da cache e no bloco da memória de nível inferior. Política para falta em Escrita • Forma como as memórias caches trabalham quando o processador solicita uma escrita e o endereço a ser escrito não se encontra na cache. – Write Allocate • O bloco é alocado em uma falta de escrita – Write Around • O bloco não é alocado em uma falta de escrita. Somente a memória principal é atualizada. Cache Multinível • Podemos acrescentar um segundo nível na cache: – Normalmente o cache primário está no mesmo chip do processador e o secundário pode estar no mesmo chip ou em um chip separado. – Em geral são maiores que as caches de primeiro nível e são usadas quando acontece alguma falta na cache de nível mais alto. – Ajuda a diminuir a penalidade de falhas. Próxima aula • Avaliando Desempenho. • Memória Virtual. • Técnicas para melhora de desempenho da memória cache. Referências • Organização e Projeto de Computadores Seções 7.1 a 7.3 • Material adicional da página – Até Seção 2.3.