memórias e tipos de memória

Propaganda
MEMÓRIAS E TIPOS DE MEMÓRIA
Aula 08 – Arquitetura de Computadores
Gil Eduardo de Andrade
O conteúdo deste documento é baseado no livro “Princípios Básicos de Arquitetura e
Organização de Computadores” – Linda Null e Julia Labur.
1.
Introdução
A maioria dos computadores são construídos utilizando o modelo Von Neumman,
centrado na memória. Os programas que realizam processamento são armazenados na memória.
As memórias são estruturadas como arrays (vetores) lineares de posições, com endereços de 0
até o tamanho máximo da memória que o processador pode endereçar.
2.
Tipos de Memória
Os vários tipos de memória existentes em um computador estão ligados ao fato de que a
tecnologia evoluiu ao longo dos anos e novos tipos de memória mais avançados foram criadas
com isso, aumentando sua capacidade e velocidade de acesso. Embora exista um grande número
de tecnologias de memória, existem somente dois tipos básicos: RAM (random access memory)
e ROM (ready-only memory).
As memórias RAM são ditas de acesso aleatório, porém é um termo errôneo, ela seria
mais bem definida como memória de leitura e escrita. A memória RAM é aquela a qual as
especificações de um computador se referem. Quando compramos um computador de 128
megabytes de memória, isso significa que ele tem 128 MB de RAM. Ela também é conhecida
como memória principal.
Na memória de escrita-leitura temos armazenados os programas e dados que o
computador necessita durante a sua execução. Contudo a RAM é uma memória volátil, perdendo
suas informações quando a energia do computado é desligada. Exstem dois tipos gerais de chips
usados para construir a maior parte das memórias RAM nos computadores atuais: SRAM (static)
e DRAM (dynamic random access memory).
A DRAM é construída com minúsculos capacitores que deixam escapar eletricidade, a
DRAM requer uma recarga a cada poucos milissegundos para manter os seus dados. A tecnologia
estática (SRAM), em contraste, mantém o seu conteúdo enquanto a alimentação estiver
disponível. A SRAM consiste em circuitos similares aos flip-flops D. A SRAM é muito mais
rápida e cara que a DRAM, entretanto os projetistas usam DRAM porque ela é muito mais densa
(pode armazenar muito mais bits por chip), usando menos energia e gerando menos calor que a
SRAM. Frequentemente ambas as tecnologias são combinadas: DRAM para memória principal e
SRAM para memória cache.
Além da RAM, a maioria dos computadores contém uma pequena quantidade de ROM
que armazena informações importantes, necessárias para operar o sistema, tal como o programa
necessário para a carga inicial do computador. A ROM não é volátil e sempre retém seus dados.
Este tipo de memória é também usado em sistemas embarcados ou em quaisquer sistemas onde a
programação não necessita ser alterada. Existem 5 tipos de ROM: ROM, PROM, EPROM,
EEPROM e memória Flash.
A memória flash é uma evolução da EEPROM, onde dados podem ser escritos ou
apagados em blocos, removendo a limitação de um byte de cada vez. Isto torna a memória flash
mais rápida do que a memória EEPROM.
3.
Hierarquia de Memória
Umas das considerações mais importantes para a compreensão da capacidade de
desempenho de um processador moderno é a hierarquia da memória. Como existem tipos e tipos
de memória (velocidade / custo), os sistemas de computação atuais usam uma contribuição de
tipos de memória para fornecer um melhor desempenho ao melhor custo. Essa abordagem é
designada memória hierárquica. Como regra temos: quanto mais rápida for a memória, mais cara
ela se torna por bit armazenado. Os tipos básicos que normalmente constituem o sistema de
memória hierárquica incluem registradores, cache, memória principal e memória secundária.
Atualmente cada computador possui uma pequena quantidade de uma memória rápida,
chamada cache. Esta memória está conectada a uma memória principal muito maior, que é
geralmente uma memória de média velocidade. Esta memória é complementada por um memória
secundária bastante grande, composta por um disco rígido e diversos meios removíveis. Ao usar
tal esquema é possível melhorar a velocidade de acesso efetivo à memória usando chips rápidos e
caros, permitindo aos projetistas criar um computador com uma performance aceitável.
Classificamos a memória com base na sua “distância” do processador, sendo medida pelo
número de ciclos de máquina necessários para o acesso. Quanto mais próxima do processador
mais rápida ela deve ser. Portanto tecnologias mais lentas são usadas paras memórias mais
distantes da UCP e tecnologias mais rápidas são usadas para memórias mais próximas da UCP.
Sendo assim memórias mais rápidas tendem a ter menos capacidade em relação a memórias mais
lentas devido ao alto custo.
Figura 01: Hierarquia de Memória
3.1
Localidade de Referência
Quando uma posição de memória X é acessada em um tempo t, existe uma alta
probabilidade de que a posição de memória X+1 também será acessada em um futuro próximo.
Este conjunto de referências à memória em grupos é um exemplo de localidade de referência.
Existem três formas básicas de localidade:
•
Localidade temporal – Itens recentemente acessados tendem a ser acessados novamente
em um futuro próximo;
•
Localidade espacial – Acessos tendem a ser agrupados no espaço de endereçamento (por
exemplo, como arrays ou laços);
•
Localidade sequencial – Instruções tendem a ser acessadas sequencialmente
O princípio da localidade fornece para um sistema a oportunidade de usar uma pequena
quantidade de memória muito rápida para acelerar efetivamente a maioria dos acessos à
memória. Normalmente, somente uma pequena quantidade de espaço total de memória está
sendo acessada em um dado momento, e os valores neste espaço estão sendo acessados
repetidamente. Entretanto podemos copiar esses valores de uma memória mais lenta para uma
memória mais rápida, que reside em um nível mais alto da hierarquia.
4.
Memória Cache
Um processador de computador é muito rápido e está constantemente lendo informações
da memória, o que significa que frequentemente tenha que esperar que uma informação chegue,
porque os tempos de acesso à memória são mais lentos do que a velocidade do processador. A
memória cache é uma memória pequena, temporária, porém rápida, que o processador usa para
informações que, provavelmente, serão necessárias a curto prazo.
O tamanho da cache pode variar bastante. Em um computador pessoal típico a cache de
nível 2 (L2) possui 256K ou 512K. A cache de nível 1 (L1) é menor, normalmente 8k ou 16K. A
cache L1 reside no processador, enquanto a cache L2 reside entre a UCP e a memória principal.
A cache L1 é contudo mais rápida que a cache L2. O objetivo da cache é acelerar os acessos a
memória, armazenando dados recentemente usados mais próximo da UCP em vez de armazenálos na memória principal.
O que torna a cache especial é que ela não é acessada por endereço; ela é acessada por
conteúdo. Por esta razão, a cache é, algumas vezes, chamada de memória “endereçável” por
conteúdo. Na maioria dos esquemas de cache, as entradas na cache devem ser verificadas ou
pesquisadas para saber se o valor sendo requisitado está armazenado na cache. Diversos
algoritmos são utilizados para simplificar este processo.
4.1
Mapeamento direto
Como existem mais blocos de memória principal do que de blocos de cache, fica claro
que blocos a memória principal competem por posições na cache. O mapeamento direto mapeia
o bloco C da memória principal no bloco Y da memória cache. Por exemplo se a cache contém
10 blocos, então o bloco 0 da memória principal mapeia o bloco 0 da cache, o bloco 1 da
principal mapeia o 1 da cache e assim por diante, como mostra a imagem abaixo.
Figura 02: Mapeamento direto de blocos da memória principal para blocos da cache.
4.2
Quando a Cache não funciona
Quando programas apresentam localidade, a cache funciona muito bem. Entretanto, se
programas apresentam pouca localidade, a cache não funciona bem e a performance de uma
hierarquia de memória é ruim. Em particular, a programação orientada a objetos pode fazer com
que programas exibam uma localidade abaixo do ideal. Outro exemplo são arrays (matrizes) que
possuem várias linhas de dados. Caso o programa acesse uma linha do array de cada vez, o
primeiro acesso a linha produz uma falha.
4.3
Níveis de Cache
Como visto anteriormente a cache L1, ou cache interna encontra-se dentro do
processador, sendo a cache com velocidade de acesso mais rápido na casa de 4ns. Caso um dado
não seja encontrado na cache L1 uma busca é efetuada na cache L2. A cache L2 é normalmente
localizada externamente ao processador e tem velocidades de acesso de 15-20ns. A cache L2
pode ser encontrada na placa mãe dos sistemas de computação. A cache L2 normalmente é maior
porém mais lenta que a cache L1.
Caso um dado não seja encontrado em L1, mas sim em L2, esse dado é carregado para
L1. Arquiteturas modernas já possuem a cache L2 dentro da UCP tendo uma velocidade de
acesso de aproximadamente 10ns. Nessas arquiteturas o termo cache L3 é usado para se referir a
uma cache externa entre o processador e a memória. Em arquiteturas com cache L3, estas
normalmente variam de tamanho entre 2MB a 256MB
5.
Memória Virtual
O objetivo da memória virtual é usar o disco rígido como extensão da memória RAM,
aumentando assim o espaço de endereçamento disponível que um processador pode usar. A
maioria dos computadores possui uma quantidade relativamente pequena de memória principal,
não sendo suficiente para suportar diversas aplicações concorrentes, tais como uma aplicação de
processamento de texto, um programa de e-mail e um programa gráfico, além do próprio sistema
operacional. Esta área de disco é chamada de arquivo de páginas porque contém porções da
memória principal.
Download