Organização e Hierarquia da Memória em Computadores
Classificado em Computação
Escrito em  em 
português com um tamanho de 14,13 KB
Prof. Me. Newton Carlos Will [email protected] – coens.dv.utfpr.edu.br
Introdução
- A memória é a parte do computador onde são armazenados programas e dados.
 - Sem uma memória da qual os processadores possam ler e na qual possam gravar informações, não haveria computadores digitais com programas armazenados.
 
Hierarquia de Memória (1/3)
- A solução tradicional para armazenar grandes quantidades de dados é uma hierarquia de memória.
 
Componentes da Hierarquia
- Registradores
 - Cache
 - Memória principal
 - Disco magnético
 - Fita
 - Disco óptico
 
Hierarquia de Memória (2/3)
- À medida que descemos na hierarquia, três parâmetros aumentam:
 - O tempo de acesso fica maior.
 - Os registradores da CPU podem ser acessados em alguns nanossegundos.
 - Memórias cache demoram um pequeno múltiplo dos registradores de CPU.
 - Acessos à memória principal normalmente levam algumas dezenas de nanossegundos.
 - Tempos de acesso a discos são no mínimo 10 milissegundos.
 
Hierarquia de Memória (3/3)
- A capacidade de armazenamento aumenta:
 - Registradores de CPU são bons para alguns bytes.
 - Memórias cache para alguns poucos megabytes.
 - Memórias principais para alguns gigabytes.
 - Discos magnéticos para alguns terabytes.
 - O número de bits por dólar gasto também aumenta.
 - Quanto mais descemos na hierarquia, o valor do bit diminui.
 
Tipos de Memória (1/2)
- O elemento básico de uma memória semicondutora é a célula de memória.
 - Embora diversas tecnologias eletrônicas sejam utilizadas, todas as células de memória semicondutora compartilham certas propriedades:
 - Apresentam dois estados estáveis (ou semiestáveis), que podem ser usados para representar o binário 1 e 0.
 - São capazes de ser escritas (pelo menos uma vez), para definir o estado.
 - São capazes de ser lidas, para verificar o estado.
 
Tipos de Memória (2/2)
- Todos os tipos de memória que veremos são de acesso aleatório.
 - Ou seja, palavras (conjunto de bytes) individuais da memória são acessadas diretamente por meio da lógica de endereçamento interna.
 
Memória Cache (1/7)
- Historicamente, as CPUs sempre foram mais rápidas que as memórias.
 - Conforme as memórias melhoraram, as CPUs também melhoraram, mantendo o desequilíbrio.
 - Na prática, o significado desse desequilíbrio é que, após emitir uma requisição de memória, a CPU não obterá a palavra de que necessita por muitos ciclos de CPU.
 - Quanto mais lenta a memória, mais ciclos a CPU terá de esperar.
 
Memória Cache (2/7)
- O problema não é tecnológico, mas econômico.
 - Os engenheiros sabem como construir memórias tão rápidas quanto as CPUs, mas para que executem a toda velocidade, elas têm de estar localizadas no chip da CPU.
 - Instalar uma memória grande no chip da CPU faz com que esta fique maior e, portanto, mais cara.
 - Assim, a opção se resume a ter uma pequena quantidade de memória rápida ou uma grande quantidade de memória lenta.
 
Memória Cache (3/7)
- O interessante é que há técnicas conhecidas para combinar uma pequena quantidade de memória rápida com uma grande quantidade de memória lenta para obter (quase) a velocidade da memória rápida e a capacidade da memória grande a um preço moderado.
 - A memória pequena e rápida é denominada cache.
 
Memória Cache (4/7)
- A ideia básica de uma cache é simples:
 - As palavras de memória usadas com mais frequência são mantidas na cache.
 - Quando o processador solicita um item de dado gerando uma referência para seu endereço, que pode ser físico ou virtual, o gerenciador de memória requisita este item do cache.
 
Memória Cache (5/7)
- Duas situações podem ocorrer:
 - cache hit: o item está presente no cache, é retornado para o processador praticamente sem período de latência.
 - cache miss: o item não está presente no cache e o processador deve aguardar o item ser buscado da memória principal.
 
Memória Cache (6/7)
- O chamado princípio da localidade está por trás da maneira como os programas operam.
 - Este princípio estabelece que os programas acessem uma parte relativamente pequena do seu espaço de endereçamento em um instante qualquer.
 - Existem dois diferentes tipos de localidade:
 - Localidade temporal: se um item é referenciado, ele tende a ser referenciado novamente dentro de um curto espaço de tempo.
 - Localidade espacial: se um item é referenciado, itens cujos endereços sejam próximos a eles tendem a ser logo referenciados.
 
Memória Cache (7/7)
- Para que haja aumento de desempenho, com a inclusão da memória cache, é necessário que exista mais acertos do que faltas.
 - Isto implica no dimensionamento adequado da memória cache como um todo.
 
Memórias Voláteis (1/9)
- O tipo de memória mais comum que permite leitura e escrita são as memórias RAM (Random Access Memories).
 - É um nome suspeito porque todos os chips de memória têm acesso aleatório.
 - RAMs podem ter duas variedades, estáticas e dinâmicas.
 
Memórias Voláteis (2/9)
- Nas estáticas (Static RAM – SRAM) é um dispositivo que, para armazenar informação, usa os mesmos elementos lógicos usados no processador.
 - Uma das propriedades dessas memórias é que seus conteúdos são conservados enquanto houver fornecimento de energia.
 - As SRAMs são muito rápidas.
 - Um tempo de acesso típico é da ordem de alguns nanossegundos e por essa razão elas são muito usadas como memória cache de nível 2.
 
Memórias Voláteis (3/9)
- RAMs dinâmicas (Dynamic RAM – DRAM) são feitas com células que armazenam dados como carga em capacitores.
 - A presença ou ausência de carga em um capacitor é interpretada como um binário 1 ou 0.
 - Como os capacitores possuem uma tendência natural para descarga, as DRAMs exigem recarga periódica (“refresh” de memória) para manter o dado armazenado.
 
Memórias Voláteis (4/9)
- Visto que RAMs dinâmicas precisam de apenas um transistor e um capacitor por bit, em comparação com os seis transistores por bit para a melhor RAM estática, elas têm densidade muito alta (muitos bits por chip).
 - Por essa razão, as memórias principais quase sempre são construídas com DRAMs.
 
Memórias Voláteis (5/9)
- Contudo, essa grande capacidade tem um preço: são lentas (dezenas de nanossegundos).
 - Dessa maneira, a combinação de uma cache de RAM estática e uma memória principal de RAM dinâmica tenta combinar as boas propriedades de cada uma.
 - Existem diversos tipos de RAMs dinâmicas.
 
Memórias Voláteis (6/9)
- A mais antiga é a DRAM FPM (Fast Page Mode).
 - A DRAM FPM foi substituída pela EDO (Extended Data Output), que permite iniciar uma segunda referência à memória antes de ser concluída a referência à memória precedente.
 - Esse paralelismo simples não acelerava uma referência individual à memória, mas melhorava a largura de banda da memória, resultando em mais palavras por segundo.
 
Memórias Voláteis (7/9)
- FPM e EDO funcionavam razoavelmente bem quando os tempos de ciclo de chips de memória eram de 12 nanossegundos ou mais lentos.
 - Quando os processadores ficaram tão rápidos que realmente era preciso ter memórias mais rápidas, a FPM e a EDO foram substituídas pela SDRAM (Synchronous DRAM), que é uma híbrida de RAM estática e dinâmica.
 
Memórias Voláteis (8/9)
- A grande vantagem da SDRAM é que o relógio elimina a necessidade de sinais de controle para informar ao chip de memória quando responder.
 - Em vez disso, a CPU informa à memória por quantos ciclos ela deve funcionar e então a inicia.
 - Eliminar a necessidade de sinais de controle aumenta a taxa de dados entre a CPU e a memória.
 
Memórias Voláteis (9/9)
- A melhoria seguinte em relação à SDRAM foi a SDRAM DDR (Double Data Rate).
 - Com esse tipo de memória, o chip de memória produz a saída na borda ascendente do relógio e também na borda descendente, dobrando a taxa de dados.
 
Memórias Não Voláteis (1/8)
- RAMs não são o único tipo de chip de memória.
 - Em muitas aplicações, como brinquedos, eletrodomésticos e carros, o programa e alguns dos dados devem permanecer armazenados mesmo quando o fornecimento de energia for interrompido.
 - Esses requisitos levaram ao desenvolvimento de ROMs (Read-Only Memories), que não podem ser alteradas nem apagadas, seja ou não intencionalmente.
 
Memórias Não Voláteis (2/8)
- Os dados de uma ROM são inseridos durante sua fabricação por um processo que expõe um material fotossensível por meio de uma máscara que contém o padrão de bits desejado e então grava o padrão sobre a superfície exposta (ou não exposta).
 - A maneira de mudar o programa em uma ROM é substituir o chip inteiro.
 
Memórias Não Voláteis (3/8)
- ROMs são mais baratas que RAMs quando fabricadas em volume suficientemente grandes para cobrir o custo da fabricação da máscara.
 - Todavia, são inflexíveis porque não podem ser alteradas após a manufatura.
 
Memórias Não Voláteis (4/8)
- Para facilitar o desenvolvimento pelas empresas de novos produtos com ROM, foi inventada a PROM (Programmable ROM).
 - Uma PROM é uma ROM, exceto que ela pode ser programada (uma vez) em campo.
 - Muitas PROMs contêm um arranjo de minúsculos fusíveis em seu interior.
 - Um fusível específico pode ser queimado selecionando sua linha e coluna e então aplicando alta tensão a um pino especial no chip.
 
Memórias Não Voláteis (5/8)
- O desenvolvimento seguinte nessa linha foi a EPROM (Erasable PROM), que não somente pode ser programada, mas também apagada em campo.
 - Para apagar a memória, ela é exposta a uma forte luz ultravioleta durante 15 minutos, fazendo com que seus bits fiquem fixados em 1.
 - Se a expectativa é ter muitas alterações durante o ciclo de projeto, as EPROMs são mais econômicas do que as PROMs porque podem ser reutilizadas.
 
Memórias Não Voláteis (6/8)
- Ainda melhor do que a EPROM é a EEPROM, que pode ser apagada aplicando-se pulsos.
 - Além disso, uma EEPROM pode ser reprogramada no local, enquanto uma EPROM tem de ser inserida em um dispositivo especial de programação.
 - Uma desvantagem é que a capacidade das maiores EEPROMs normalmente é somente 1/64 da capacidade das EPROMs comuns, e a sua velocidade é a metade.
 
Memórias Não Voláteis (7/8)
- EEPROMs não podem competir com DRAMs ou SRAMs porque são 10 vezes mais lentas, sua capacidade é 100 vezes menor e são muito mais caras.
 - Elas são usadas somente em situações em que sua não-volatilidade for crucial.
 
Memórias Não Voláteis (8/8)
- Um tipo mais recente de EEPROM é a memória flash.
 - Introduzida inicialmente em meados da década de 1980, a memória flash é intermediária entre a EPROM e a EEPROM tanto no custo quanto na funcionalidade.
 - É possível apagar apenas blocos de memória, ao invés de um chip inteiro.
 - A memória flash usa apenas um transistor por bit e, portanto, consegue ter a alta densidade da EPROM.
 
Endereços de Memória (1/5)
- Memórias consistem em uma quantidade de células (ou endereços), cada uma das quais podendo armazenar uma informação.
 - Cada célula tem um número, denominado seu endereço, pelo qual os programas podem se referir a ela.
 - Se a memória tiver n células, elas terão endereços de 0 a n-1.
 - Todas as células em uma memória contêm o mesmo número de bits.
 
Endereços de Memória (2/5)
- Três organizações diferentes para uma memória de 96 bits.
 
0 1 2 3 4 5 6 7 8 9 10 11 0 1 2 3 4 5 6 7 0 1 2 3 4 5
- Uma célula 16 bits
 - 12 bits
 - 8 bits
 
Endereços de Memória (3/5)
- Computadores que usam o sistema de números binários (incluindo notação octal ou hexadecimal para números binários) expressam endereços de memória como números binários.
 - Se um endereço tiver m bits, o número máximo de células endereçáveis é 2m.
 - O número de bits no endereço determina o número máximo de células diretamente endereçáveis na memória e é independente do número de bits por célula.
 
Endereços de Memória (4/5)
- A significância da célula é que ela é a menor unidade endereçável.
 - Há poucos anos, praticamente todos os fabricantes de computadores padronizaram células de 8 bits, que é determinada um byte.
 - Bytes são agrupados em palavras.
 - Um computador com uma palavra de 32 bits tem 4 bytes/palavra, enquanto um computador com uma palavra de 64 bits tem 8 bytes/palavra.
 
Endereços de Memória (5/5)
- A significância de uma palavra é que grande parte das instruções efetua operações com palavras inteiras.
 - Por exemplo, fazer adição de duas palavras.
 - Assim, uma máquina de 32 bits terá registradores de 32 bits e instruções para manipular palavras de 32 bits, enquanto uma máquina de 64 bits terá registradores de 64 bits e instruções para movimentar, somar, subtrair e, em geral, manipular palavras de 64 bits.
 
Prof. Me. Newton Carlos Will [email protected] – coens.dv.utfpr.edu.br