Microcontroladores e Interfaces
3º Ano – Eng. Electrónica Industrial
Carlos A. Silva
2º Semestre de 2005/2006
http://www.dei.uminho.pt/lic/mint
Assunto: Sistema de Memória
Aula
#8
Tecnologias de Memória
Memórias SRAM:
As memórias SRAM são memórias rápidas e
eficientes em termos de consumo de energia,
contudo cada célula requer entre 4 a 6 transístores
na sua implementação para armazenar um bit.
Tecnologias de Memória
Memórias DRAM
A vantagem das memórias DRAM
deve-se a podermos construir uma célula de
armazenamento com apenas um
transístor. Esta redução permite a
optimizar o custo de fabricação como
também aumentar a integração.
Contudo, devido a esta simplicidade, as
memórias DRAM requerem que seja feito
o refrescamento da informação, pois esta
perde-se naturalmente ao fim de alguns
ms.
O refrescamento consiste em ler cada
uma das linhas da memória (a memória
está organizada como uma matriz).
Memória: DRAM
O primeiro integrado é uma SRAM de 16 Kb, enquanto o
segundo integrado é uma DRAM também de 16 Kb.
Analise as respectivas caixas. Qual é a diferença ?
Memória: DRAM
A DRAM reduz o número de linhas de endereço em
metade. Então como é possível endereçar 16 kb ?
O endereço é enviado em duas partes. Esta multiplexagem
torna a implementação da interface entre a memória e o
CPU mais complexa.
Qual é a vantagem em reduzir no número de linhas ?
Como as DRAM são usadas na implementação de memórias
de grande capacidade. A multiplexagem permite reduzir no
número de pinos, reduzindo o custo de produção.
Memória DRAM: Revisão
Encontramos duas classes de memórias DRAM:
assíncronas
e
síncronas
.
Como é feita a leitura ?
1. O endereço das linhas é colocado nos pinos
de endereço através do barramento de
endereços.
2. O pino
/RAS (Row Address Strobe)
é activado,
o que coloca o endereço das linhas na latch de
endereço das linhas.
3. O descodificador de endereço de linhas
selecciona a linha correcta que será enviada
ao sensores amplificadores.
Memória DRAM: Revisão
4.
O sinal de
WE
é desactivado, indicando
que não se está a escrever.
5.
O endereço das colunas é colocado nos
pinos de endereço através do barramento
de endereços.
6.
O pino
/CAS*
é activado, o que colocará o
endereço das colunas na respectiva latch.
7.
O pino
/CAS
também serve como sinal de
output enable, por isso assim que o sinal
/CAS tenha estabilizado os amplificadores
sensores colocam o dado da coluna e da
linha seleccionadas no barramento de
dados.
8.
Tanto o sinal de
/RAS
, como o sinal de
/CAS
são desactivados para que um novo
ciclo possa ser iniciado.
Memória DRAM: Módulos
As células nas memórias SDRAM e DRAM apenas
armazenam 1 bit. Por esta razão, um integrado de
memória agregará várias matrizes de células de memória
(uma por bit).
Esta é a razão, porque os
fabricantes denominam os
integrados como tendo uma
capacidade de:
por ex., 64536 x 8 para
denominar uma RAM
de 16 kB.
Memória DRAM: Módulos
Exemplo de uma memória
SIMM (Single In-line
Memory Module)
guarda um dos
Memória DRAM: Temporização
Sabemos que a velocidade de leitura de dados
numa memória é condicionada pela sua latência.
No caso das memórias DRAM, devido a sua construção,
encontramos duas latências importantes:
Access time (tempo de acesso). Define o tempo
decorrido desde a activação de /RAS até ao instante em
que os dados estão disponíveis.
Este atraso deve-se ao encaminhamento dos sinais pelo
circuito interno da DRAM.
Cycle time (tempo do ciclo de leitura). Define o tempo
mínimo que deve ser guardado até iniciar a próxima
leitura/escrita.
Após um acesso à memória, os sinais de /RAS e /CAS
devem ser activado de modo a fazer o precharge.
Memória DRAM: Temporização
Como consequência da latência da memória, se o processador for mais
rápido ter-se-á que introduzir atrasos (wait states), ou seja o
processador ficará parado a espera da memória.
Access time
Memória DRAM: Localidade
A investigação feita no projecto de novas memórias tem
procurado reduzir estas duas latências.
Na verdade, toda investigação tem explorado o princípio da
localidade.
Este princípio afirma que, em qualquer instante, um programa
acede a uma pequena gama do seu espaço de endereços.
Existem dois tipos de localidades:
Localidade temporal:
Este princípio afirma que se um item foi referenciado,
então tenderá a ser referenciado de novo num futuro
muito próximo.
Por exemplo,
int n= 0;
for(int i= 0; i < 10; ++i)
n= n + i;
Memória DRAM: Localidade
Onde encontramos a localidade temporal:
Loops no programa (exemplo anterior).
Funções/métodos nos objectos que são frequentemente
chamadas.
Rotinas de serviço à interrupção que estão frequentemente a
serem executadas.
Localidade espacial:
Este princípio afirma que se um item foi referenciado, então
itens cujo endereço estão próximos tendem a serem
referenciados num futuro próximo.
Por exemplo,
int n= 0, m= 0, i= 20;
n= 2*m + i;
Memória DRAM: Localidade
Onde encontramos a localidade espacial:
Na estrutura dos programas:
Pequenos saltos relativos.
Métodos relacionados no mesmo objecto (p. ex., construtor
seguido por um operador).
Estruturas de dados.
Estruturas (struct em C).
Array de elementos.
Mas de que formas estes princípios permitem construir
memórias mais rápidas ?
Memórias DRAM Assíncronas
Memórias assíncronas:
FPM DRAM (Fast Page Mode DRAM):
Nesta memória, a leitura pode ser feita em blocos.
Na leitura de um bloco, após activar o sinal de /RAS, o
controlador de memória mantém-no activado e envia os
sucessivos sinais de /CAS de modo a ler as várias colunas.
Memórias DRAM Assíncronas
Esta memória é mais rápida que a DRAM normal, porque
reduz o impacto do atraso devido a activação de /RAS em ¾
das leituras. O único atraso que mantém-se é o atraso de
precharge associado ao sinal de /CAS.
Portanto, teremos que a primeira leitura requererá mais ciclos
de CPU, mas as seguintes serão mais rápidas.
É normal dizermos que a memória DRAM tem uma latência de
X-Y-Y-Y, onde ‘X’ denota o primeiro atraso e ‘Y’ os atrasos
seguintes. Estes atrasos são medidos em função do número
de ciclos do relógio do barramento
•
Por ex., poderíamos ter uma DRAM 6-3-3-3.
•
Do diagrama anterior, constatamos que não
podemos escrever o endereço da coluna
seguinte, enquanto o dado anterior não tiver
sido lido, ou seja, tem que existir um tempo
de repouso entre as duas operações.
Memórias DRAM Assíncronas
Memórias assíncronas:
EDO DRAM (Extended Data Out DRAM):
Esta memória permite manter os dados na saída por mais
tempo, mesmo até ao instante de escrita do endereço da
coluna seguinte, /CAS.
Memórias DRAM Assíncronas
Devido a esta característica, as memórias EDO DRAM
permitem ganhos de 20%-40% relativamente as FPM.
Alguns fabricantes foram capazes de produzir memórias
capazes de serem ligadas a uma barramento a 66 MHz com
uma temporização de 5-2-2-2.
Características de DRAM Modernas
Síncronas
SDRAM
DDR (Double Data Rate) SDRAM
RAMbus
As latências dadas incluem apenas a latência do módulo de
memória, não tendo em conta a latência do controlador de memória
ou outros atrasos. Por esta razão a latência real será maior
Memórias DRAM Síncronas
PC-33/PC-66
PC-100, CL= 2
PC-133, CL= 3
SDRAM
EDO DRAM
Memórias DRAM Síncronas
DDR SDRAM
DDR2-400, CL= 3
PC2-3200
DDR2-533, CL= 4
PC2-4200
DDR2-667, CL= 5
PC2-6300
DDR2 SDRAM
DDR-266, CL= 2
PC-2100
DDR-333, CL=2.5
PC-2700
Memória: Tendências na Tecnologia
Capacidade
Velocidade (latência)
Lógica:
2x em 3 anos
2x em 3 anos
DRAM:
4x em 3 anos
2x em 10 anos
Disco:
4x em 3 anos
2x em 10 anos
Gerações de memórias DRAM
Ano
Tamanho RAS (ns) CAS (ns) Cycle Time
1980
64 Kb
150-180
75
250 ns (4 MHz)
1983
256 Kb
120-150
50
220 ns (4.5 MHz)
1986
1 Mb
100-120
25
190 ns (5.3 MHz)
1989
4 Mb
80-100
20
165 ns (6.1 MHz)
1992
16 Mb
60-80
15
120 ns (8.3 MHz)
1996
64 Mb
50-70
12
110 ns (9.1 MHz)
1998
128 Mb
50-70
10 100 ns (10 MHz)
2000
256 Mb
45-65
7
90 ns (11.1 MHz)
2002
512 Mb
40-60
5
80 ns
(12.5 MHz)
8000:1
15:1 3:1
(Capacidade) (~bandwidth) (Latência)
Hierarquia de Memória: Motivação
Primeira motivação
: Custo da memória
$0.5 - $2
5.000.000 – 20.000.000 ns
Disco magnético
$100 - $200
50 – 70 ns
DRAM
$4000 - $10000
0.5 – 5 ns
SRAM
$ por GB em
2004
Tempo de acesso
Típico
Tecnologia
Hierarquia de Memória: Motivação
Segunda motivação
: Diferencial entre a performance do
processador e a performance da memória (DRAM)
µProc
60%/yr.
DRAM
7%/yr.
1
10
100
1000
1980
1981
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
DRAM CPU1982
Processor-Memory
Performance Gap:
(grows 50% / year)
Performance
Hierarquia de Memória: Motivação
• Impacto do diferencial entre a performance do processador
e a performance da memória (DRAM): Exemplo
•
Para ilustrar o impacto do diferencial da performance, assuma um
processador com pipeline com um CPI= 1, usando memória
não-ideal.
•
Ignorando outros factores, o custo mínimo de um acesso em termos
de ciclos de CPU perdidos é:
CPU CPU Memory Minimum CPU cycles or
Year speed cycle Access
instructions wasted
MHZ ns
ns
1986:
8 125 190 190/125 - 1 = 0.5
1989:
33 30 165 165/30 -1 = 4.5
1992:
60 16.6 120 120/16.6 -1 = 6.2
1996:
200 5 110 110/5 -1 = 21
1998:
300 3.33 100 100/3.33 -1 = 29
2000:
1000 1 90 90/1 - 1 = 89
2002:
2000 0.5 80 80/.5 - 1 = 159
Hierarquia de Memória: Motivação
O diferencial entre a performance do processador e da memória
tem aumentado para processadores de elevado desempenho,
criando o estrangulamento no acesso à memória no fetch da
instruções.
A hierarquia de memória está organizada em vários níveis de
memória onde os níveis de memória mais pequenos, mais caros
e mais rápidos estão próximos do CPU:
registos
,
seguido do
primeiro nível de memória cache
(L1),
seguido de
níveis adicionais de memória cache
(L2, L3, ...),
seguido da
memória principal
,
Hierarquia de Memória: Motivação
Cada nível hierárquico é um subconjunto do nível inferior
Os dados encontrados num nível também são achados
no nível inferior, mas a uma velocidade inferior.
Cada nível mapeia endereços de uma memória física maior
dimensão numa memória física de menor dimensão.
Este conceito é fortemente suportado pelo princípio da
localidade (temporal e espacial) que diz que um programa
tende a reutilizar dados e instruções usadas recentemente
ou aquelas que estão guardadas na sua vizinhança.
Hierarquia de Memória: Motivação
Parte do On-chip
CPU Datapath
16-256 Registos
Um ou mais níveis (RAM estática):
Nível 1: On-chip 16-64K
Nível 2: On or Off-chip 256K-2M
Nível 3: On or Off-chip 1M-16M
Registos
Cache
Memória principal
Disco Magnético
Disco óptico ou Tape Magnética
DRAM, RDRAM
16M-16G
Interface:
SCSI, RAID,
IDE, 1394
4G-100G
Quanto mais longe for do
CPU:
• mais baixo é o custo/bit
• maior capacidade
• maior tempo de acesso
• maior latência
• menor throughput
Hierarquia de Memória: Motivação
Virtual
Memory,
Secondary
Storage
(Disk)
Main
Memory
(DRAM)
Second
Level
Cache
(SRAM)
L
2Tertiary
Storage
(Tape)
Control
Datapath
Processor
Registers
On-Chip
Level
One
Cache
L
1Larger Capacity
Faster
1s
10,000,000s
(10s ms)
Speed
(ns):
10s
100s
100s
Gs
Size (bytes):
Ks
Ms
10,000,000,000s
(10s sec)
Ts
Hierarquia de Memória:
Funcionamento
Se uma instrução ou operando é necessário pelo CPU,
os níveis da hierarquia de memória são pesquisados a
começar pelo nível mais próximo do CPU (Cache de
Nível 1).
Se o item é encontrado, este é devolvido ao
processador resultando num ‘hit’ da cache sem que
ocorra a pesquisa dos níveis inferiores.
Se o item não é encontrado no nível superior,
resultando num ‘miss’, então o nível inferior é
pesquisado.
Nos sistemas com vários níveis de memória cache, a
Hierarquia de Memória:
Funcionamento
Se a pesquisa em todos os níveis da cache resultam
num ‘
cache miss
’, então a memória principal é acedida.
CPU ↔ cache ↔ memória
Estes acessos são geridos por hardware especializado
(controlador de memória).
Se o item não é encontrado na memória principal,
resultando num ‘
page fault
’, então o disco (memória
virtual) é acedido.
Hierarquia de Memória: Terminologia
Um bloco
: menor unidade de informação transferida
entre dois níveis hierárquicos.
‘
Hit
’: o item foi encontrado num bloco do nível superior
(p. ex., bloco X).
‘
Hit rate
’: Fracção dos acessos à memória encontrados
no nível superior.
‘
Hit time
’: Tempo necessário para aceder à memória no
nível superior, consistindo de
RAM access time + tempo necessário para determinar
Hierarquia de Memória: Terminologia
‘
Miss
’: o item tem que ser encontrado num bloco do
nível inferior (p. ex., bloco Y).
‘
Miss rate
’: 1 – (
hit rate
).
‘
Miss penalty
’: ‘Tempo necessário para substituir um
bloco no nível superior’ + ‘tempo necessário para
entregar o bloco ao processador’.
‘
Hit time
’ << ‘
Miss penalty
’
Lower Level
Memory
Upper Level
Memory
To Processor
From Processor
Blk X
Blk Y
Memória Cache: Conceitos
A memória cache é o primeiro nível da hierarquia de memória
encontrada assim que o endereço deixa o processador e a
procura do dado é iniciada.
Se o dado pedido pelo processador está presente na cache, este
é retirado da cache e o acesso é denominado de ‘cache hit’, caso
contrário chamamos de ‘cache miss’ e o dado tem que ser
pesquisado da memória principal.
Quando ocorre um ‘cache miss’, um bloco de dados tem que ser
trazido da memória principal para a cache.
Pode ocorrer que um bloco com dados válidos seja substituído.
Os endereços de blocos permitidos onde estes podem ser
mapeados na cache a partir da memória principal é determinado
pela estratégia de colocação da cache (cache placement
Memória Cache: Conceitos
Existe um mecanismo de identificação dos blocos que
permite localizar um bloco de dados na cache.
Na ocorrência de um ‘cache miss’, o bloco da cache
que será substituído é escolhido pela estratégia de
substituição de blocos (block replacement strategy).
Quando é necessário escrever um dado na cache é
necessário actualizar a memória principal. Existem
várias estratégias de escrita da cache (cache write
Memória Cache: Conceitos
Operação de leitura da cache
Memória Cache: Conceitos
Transferência entre a memória
principal e a memória cache
Em blocos de dados (pode ser
várias palavras)
Deve-se a minimizar a
latência da memória DRAM.
Implementa a localidade espacial
Transferência entre o
processador e a cache
Memória Cache: Funcionamento
A resposta as seguintes quatro questões ajudam-nos a perceber o
funcionamento da memória cache:
P1: Em que local um bloco de dados será colocado ?
Esta questão ajuda-nos a perceber as estratégias de colocação de
blocos de dados e a organização interna da cache.
Existem três estratégias: mapeamento directo, memória associativa, set
associative.
P2: Como é que um bloco é localizado caso esteja na cache ?
Esta questão ajuda-nos a perceber as estratégias de localização dos
blocos.
TAG / Block.
P3: Qual bloco deve ser substituído quando há um miss e a cache deve
enchida ?
Esta questão ajuda-nos a perceber as estratégias de substituição de
blocos.
Aleatório, LRU.
P4: O que acontece durante a escrita na memória ?