Memórias
Capítulo 5 1
Agenda
• Capacidade de gravação na memória e permanência da
informação
• Tipos comuns de memória
• Bancos de memória
• Hierarquia de memória e Cache
• Unidade de Gerenciamento de Memória (MMU)
Embedded Systems Design: A Unified 2
Hardware/Software Introduction, (c) 2000 Vahid/Givargis
Introdução
• Aspectos funcionais de um Sistema embarcado
– Processamento
• Processadores
– Transformação de dados
– Armazenamento
• Memória
– Retenção de dados
– Comunicação
• Barramentos
– Transferência de dados
Embedded Systems Design: A Unified 3
Hardware/Software Introduction, (c) 2000 Vahid/Givargis
Memória – conceitos básicos
• Armazena um grande número de bits 0
– m x n: m palavras de n bits cada 1
– k = Log2(m) entradas de endereço 2
– or m = 2^k palavras 3
– Ex.: memória de 4,096 x 8 .
• 32,768 bits .
• 12 bits de endereço .
• 8 bits dados (entrada/saída) .
.
.
m-2
m-1
m
Embedded Systems Design: A Unified 4
Hardware/Software Introduction, (c) 2000 Vahid/Givargis
Memória – conceitos básicos
• Acesso à memória
– r/w: seleciona operações escrita ou memory external view
leitura
r/w
– enable: escreve ou lê somente quando 2k × n read and write memory
enable
ativo
– multiport: múltiplos acessos à diferentes
A0
posições simultaneamente …
Ak-1
…
Qn-1 Q0
Embedded Systems Design: A Unified 5
Hardware/Software Introduction, (c) 2000 Vahid/Givargis
Capacidade de escrita/ permanência do dado
• Distinção entre ROM/RAM tradicionais
permanence
Storage
– ROM Mask-programmed ROM Ideal memory
• Somente leitura, não volátil
– RAM Life of OTP ROM
product
• Leitura e escrita, volátil
• Distinções podem não valer Tens of
years
EPROM EEPROM FLASH
– Tipos de ROMs podem ser escritas Battery Nonvolatile NVRAM
life (10
• e.g., EEPROM years)
– Tipos de RAMs podem reter a In-system
SRAM/DRAM
informação mesmo sem energia programmable
• Near
e.g., NVRAM zero Write
• Capacidade de escrita ability
During External External External External
– Método e velocidade com que uma fabrication programmer, programmer, programmer programmer
In-system, fast
writes,
only one time only 1,000s OR in-system, OR in-system,
memória é escrita of cycles 1,000s block-oriented
unlimited
cycles
• Permanência do armazenamento (decay) of cycles writes, 1,000s
of cycles
– Capacidade da memória em reter os bits
armazenados após serem escritos Write ability and storage permanence of memories,
showing relative degrees along each axis (not to scale).
Embedded Systems Design: A Unified 6
Hardware/Software Introduction, (c) 2000 Vahid/Givargis
Capacidade de escrita
• Faixas de capacidade de escrita
– Alto nível
• Processador escreve na memória de forma simples e rápida
• Ex.: RAM
– Faixa intermediária
• Processador escreve na memória, mas poucas vezes
• Ex.: FLASH, EEPROM
– Faixa inferior
• Equipamentos especiais (programadores) devem ser usados para
escrever na memória
• Ex.: EPROM, OTP ROM
– Baixo nível
• Bits armazenados somente durante o processo de fabricação
• Ex.: Mask-programmed ROM
• Memória programável pelo próprio sistema
– Pode ser escrita pelo processador do Sistema embarcado que usa a
memória
– Memórias de alto nível e da faixa intermediária
Embedded Systems Design: A Unified 7
Hardware/Software Introduction, (c) 2000 Vahid/Givargis
Permanência do dado
• Faixas de permanência dos dados
– Alto nível
• Essencialmente nunca perdem os bits
• Ex.: mask-programmed ROM
– Faixa intermediária
• Retém os bits por dias, meses, ou anos após a alimentação da memória ter sido desligada
• Ex.: NVRAM
– Faixa inferior
• Retém os bits enquando a alimentação estiver presente
• Ex.: SRAM
– Baixo nível
• Começa a perder bits quase imediatamente após a escrita
• Ex.: DRAM
• Memória não volátil
– Retém os bits após a alimentação ser retirada
– Memórias de alto nivel e da faixa intermediária
Embedded Systems Design: A Unified 8
Hardware/Software Introduction, (c) 2000 Vahid/Givargis
ROM: “Read-Only” Memory
• Memória não volátil
• Pode ser lida mas não escrita por um processador em
um Sistema embarcado
• Tradicionalmente programada antes de inserida em um External view
Sistema embarcado enable 2k × n ROM
• Usos A0
…
– Armazenamento de programas em processadores de Ak-1
…
propósito geral
• Instruções do programa podem estar em uma ou mais Qn-1 Q0
palavras da ROM
– Armazenar dados constantes necessários pelo Sistema
– Implementar circuitos combinacionais
Embedded Systems Design: A Unified 9
Hardware/Software Introduction, (c) 2000 Vahid/Givargis
Examplo: 8 x 4 ROM
• Linhas horizontais= words
• Linhas verticais= data Internal view
• Decodificador seta a linha 2 para 1 8 × 4 ROM
se a entrada é 010 enable 3×8
word 0
word 1
decoder
• As linhas de dados Q3 eaQ1 são A0
word 2
word line
A1
setadas para 1 porque estão A2
conectadas a linha 2 do data line
decodificador programmable
connection wired-OR
• Linha 2 não está conectada com as Q3 Q2 Q1 Q0
linhas de dados Q2 e Q0
• Saída é 1010
Embedded Systems Design: A Unified 10
Hardware/Software Introduction, (c) 2000 Vahid/Givargis
Implementando uma função combinacional
• Qualquer circuito combinacional de n funções das mesmas k
variáveis podem ser realizado com uma ROM 2^k x n
Embedded Systems Design: A Unified 11
Hardware/Software Introduction, (c) 2000 Vahid/Givargis
Mask-programmed ROM
• Conexões programadas na fabricação
– Conjunto de máscaras
• Baixíssima capacidade de escrita
– Somente uma vez
• Altíssima retenção dos dados
– bits nunca mudam, a menos que seja danificada
• Tipicamente usada para projeto final de sistemas com
grande volume de produção
– Distribui o custo NRE para um baixo custo unitário
Embedded Systems Design: A Unified 12
Hardware/Software Introduction, (c) 2000 Vahid/Givargis
OTP ROM: One-time programmable ROM
• Conexões programadas pelo usuário após a fabricação
– Usuário fornece arquivo com o conteúdo da ROM desejado
– Este arquivo é usado como entrada para um programador de ROMs
– Cada conexão programável é um “fusível”
– Programador de ROMs queima os “fusíveis” onde as conexões não devem existir
• Capacidade de escrita muito baixa
– Tipicamente escrita somente uma vez e requer o uso de um dispositivo de
programação
• Capacidade de retenção muito alta
– bits não mudam a menos que conectada ao programador e mais “fusíveis” sejam
queimados
• Comumente usada em produto final
– Barata, difícil de modificar
Embedded Systems Design: A Unified 13
Hardware/Software Introduction, (c) 2000 Vahid/Givargis
EPROM: Erasable programmable ROM
• O componente programável é um transistor MOS
– Transistor tem um gate “flutuando” por um isolante
– (a) Cargas negativas formam um canal entre a fonte e dreno armazenando a floating gate
0V
lógica 1 source drain
– (b) Potencial positive alto no gate levam as cargas negativas a s moverem
para fora do canal e são capturadas pelo gate “flutuante” armazenando a
lógica 0 (a)
– (c) (Apagamento) Exposição a raios UV na superfície do gate “flutuante”
levam as cargas negativas a retornarem para o canal restaurando a lógica 1
– (d) Uma memória EPROM possui uma janela em seu encapsulamento para
que a luz UV possa passar +15V
• Melhor capacidade de escrita source drain
(b)
– Pode ser apagada e reprogramada centenas de vezes
• Capacidade de retenção reduzida
5-30 min
– A programação é perdida em torno de 10 anos e é susceptivel à
radiação e ruido elétrico
• Tipicamente usada durante o desenvolvimento do projeto source drain
(c)
(d)
Embedded Systems Design: A Unified .
14
Hardware/Software Introduction, (c) 2000 Vahid/Givargis
EEPROM: Electrically erasable
programmable ROM
• Programada e apagada eletronicamente
– Tipicamente usando niveis de tensão mais elevados
– Pode programar e apagar palavras individualmente
• Melhor capacidade de escrita
– Pode ser reprogramada in-system com um projeto de circuito apropriado
– Tempos de escritas muito baixos por ter que apagar antes de regravar
• Pino de “ocupado” indica ao processador que ainda está escrevendo
– Pode ser apagada e reprogramada milhares de vezes
• Capacidade de retenção similar ao da EPROM (cerca de 10
anos)
• Mais conveniente que as EPROMs, porém de maior custo
Embedded Systems Design: A Unified 15
Hardware/Software Introduction, (c) 2000 Vahid/Givargis
Flash Memory
• Extensão da EEPROM
– Mesmo princípio do gate “flutuante”
– Mesma capacidade de escrita e de retenção
• Apagamento rápido
– Grande blocos de memória apagados em uma única operação
– Blocos tipicamente de varias centenas de bytes
• Escrita pode ser lenta
– Todo o bloco deve ser lido, a palavra atualizada, e então todo o bloco é
escrito de volta
• Usado em sistemas embarcados com grandes quantidade de
dados armazenados em itens de dados não voláteis
– Ex.: cameras digitais, telefones celulares
Embedded Systems Design: A Unified 16
Hardware/Software Introduction, (c) 2000 Vahid/Givargis
RAM: “Random-access” memory
external view
• Memórias voláteis r/w 2k × n read and write
– bits não são retidos quando a alimentação é retirada enable memory
• Leitura e escrita podem ser feitas facilmente pelo Sistema A0
…
embarcado durante a execução
Ak-1
• Estrutura interna mais complexa que a ROM …
– Uma palavra consistem de várias células de memória,
Qn-1 Q0
cada célula armazenando 1 bit
– Cada linha de dado de entrada e saída conecta com internal view
I3 I2 I1 I0
cada célula na sua coluna
4×4 RAM
– Sinais de controle de rd/wr conectados a todas as
2×4
células enable
decoder
– Quando a linha é habilitada pelo decodificador, cada A0
célula da linha armazena o dado de entrada se for uma A1
Memory
operação de escrita ou apresenta o dado armazenado na cell
rd/wr
saída se for uma operação de leitura To every cell
Q3 Q2 Q1 Q0
Embedded Systems Design: A Unified 17
Hardware/Software Introduction, (c) 2000 Vahid/Givargis
Tipos básicos de RAM
• SRAM: Static RAM
– Células de memória usam flip-flop para armazenar
o bit
– Requer 6 transistores
– Armazena o dado enquanto estiver alimentada
• DRAM: Dynamic RAM
– Células de memória usam transistor MOS e
capacitores para armazenar o bit
– Maior capacidade que a SRAM
– “Refresh” necessário devido ao isolamento do
capacitor
• Células da palavra “refrescadas” quando lidas
– Taxa de refresh típica é de 15.625 microsec.
– Mais lenta que a SRAM
Embedded Systems Design: A Unified 18
Hardware/Software Introduction, (c) 2000 Vahid/Givargis
Variações da RAM
• PSRAM: Pseudo-static RAM
– DRAM com o controle de refresh interno
– Alternativa de baixo custo para a SRAM
• NVRAM: Nonvolatile RAM
– Retém os dados mesmo após removida a alimentação
– Battery-backed RAM
• SRAM com uma bateria permanente própria
• Tempo de escrita igual ao de leitura
• Sem limite para o número de escritas
– SRAM com EEPROM ou flash
• Armazena o conteúdo complete da RAM em uma EEPROM ou flash antes
de remover a alimetação
Embedded Systems Design: A Unified 19
Hardware/Software Introduction, (c) 2000 Vahid/Givargis
Examplo:
HM6264 & 27C256 RAM/ROM devices
• Low-cost low-capacity memory
devices 11-13, 15-19 data<7…0>
11-13, 15-19 data<7…0>
2,23,21,24, addr<15...0> addr<15...0>
• Commonly used in 8-bit 25, 3-10
22 /OE
27,26,2,23,21,
24,25, 3-10
22 /OE
microcontroller-based 27 /WE 20 /CS
embedded systems 20 /CS1
CS2 HM6264 27C256
• First two numeric digits indicate 26
block diagrams
device type Device
HM6264
Access Time (ns)
85-100
Standby Pwr. (mW)
.01
Active Pwr. (mW)
15
Vcc Voltage (V)
5
– RAM: 62 27C256 90 .5 100 5
– ROM: 27 device characteristics
Read operation Write operation
• Subsequent digits indicate data data
capacity in kilobits addr addr
OE WE
/CS1 /CS1
CS2 CS2
timing diagrams
Embedded Systems Design: A Unified 20
Hardware/Software Introduction, (c) 2000 Vahid/Givargis
Example:
TC55V2325FF-100 memory device
• 2-megabit data<31…0> Device
TC55V23
Access Time (ns)
10
Standby Pwr. (mW) Active Pwr. (mW)
na 1200
Vcc Voltage (V)
3.3
synchronous pipelined addr<15…0> 25FF-100
addr<10...0>
burst SRAM memory device characteristics
/CS1
device /CS2 A single read operation
• Designed to be CS3
CLK
interfaced with 32-bit /WE
/ADSP
processors /OE
/ADSC
• Capable of fast MODE
/ADV
/ADSP
sequential reads and /ADSC
addr <15…0>
/WE
writes as well as /ADV /OE
single byte I/O CLK /CS1 and /CS2
TC55V2325F CS3
F-100
data<31…0>
block diagram
timing diagram
Embedded Systems Design: A Unified 21
Hardware/Software Introduction, (c) 2000 Vahid/Givargis
Banco de memória
• Tamanho das memórias diferem normalmente das memórias Increase number of words
disponíveis 2m+1 × n ROM
• Quando a memória disponível é maior, simplesmente os endereços 2m × n ROM
mais elevados são ignorados
A0
• Quando a memória disponível é menor, deve-se compor várias Am-1
… …
memórias menores e formar uma de maior capacidade 1×2 …
–
Am decoder
Conectadas lado-a-lado para aumentar o tamanho da palavra
– 2m × n ROM
Conectar uma sobre a outra para aumentar o número de palavras
• linhas de endereço mais significativas adicionais selecionam uma enable
memória menor contend a palavra desejada usando um …
decodificador …
– Técnicas combinadas para aumentar o número e a largura das palavras
…
Qn-1 Q0
2m × 3n ROM
enable 2m × n ROM 2m × n ROM 2m × n ROM A
Increase width Increase number
A0 and width of
of words … … …
Am words
… … … enable
Q3n-1 Q2n-1 Q0 outputs
Embedded Systems Design: A Unified 22
Hardware/Software Introduction, (c) 2000 Vahid/Givargis
Hierarquia de memória
• Deseja-se uma memória
rápida, grande capacidade
e de baixo custo
• Memória principal
– Grande, barata, armazena
programa e dados
• Cache
– Memória pequena, cara,
rápida que armazena cópias
de partes da memória
principal
– Podem existir múltiplos
níveis de cache
Embedded Systems Design: A Unified 23
Hardware/Software Introduction, (c) 2000 Vahid/Givargis
Princípio da Localidade
• Localidade Temporal:
– Refere-se a tendência dos programas em referenciar num
futuro próximo unidades de memória referenciadas num
passado recente;
• Localidade Espacial:
– Refere-se a tendência dos programas em referenciar
unidades de memória cujos endereços estão próximos uns
dos outros;
Embedded Systems Design: A Unified 24
Hardware/Software Introduction, (c) 2000 Vahid/Givargis
Cache
• Normalmente projetada com SRAM
– Rápida mas de maior custo que a DRAM
• Normalmente no mesmo chip do processador
– Acesso rápido ( 1 cicle vs. vários ciclos para a memória principal)
• Operação da cache:
– Requisição para acesso à memória principal (leitura ou escrita)
– Primeiro verifica por uma cópia na cache
• cache hit
– Cópia está na cache, acesso rápido
• cache miss
– Cópia não está na cache, leitura no endereço requisitado e na sua vizinhança
• Várias escolhas de projeto de memória cache
– Função de mapeamento, políticas de substituição e técnicas de escrita
Embedded Systems Design: A Unified 25
Hardware/Software Introduction, (c) 2000 Vahid/Givargis
Embedded Systems Design: A Unified 26
Hardware/Software Introduction, (c) 2000 Vahid/Givargis
Cache - Função de mapeamento
• Muitos poucos números de endereços na cache
• O conteúdo endereçado está na cache?
• Mapeamento da cache usado para assumir o endereço da memória principal
para o endereço da memória cache e determinar se é hit ou miss
• Três técnicas de mapeamento:
– Mapeamento direto
– Mapeamento totalmente associativo
– Mapeamento associativo por conjunto
• Cache estruturada em linhas formando blocos com vários endereços de
memória adjacentes
– Normalmente 4 ou 8 endereços por linha
Embedded Systems Design: A Unified 27
Hardware/Software Introduction, (c) 2000 Vahid/Givargis
Cache
Embedded Systems Design: A Unified 28
Hardware/Software Introduction, (c) 2000 Vahid/Givargis
Mapeamento direto
• Endereço de memória principal é dividido em tres
campos
– Offset
• Usado para localizar uma palavra dentro de um bloco
– Índice
• Endereço de linha da cache
• Número de bits determinado pelo tamanho da cache Tag Index Offset
– Tag V T D
• Camparada com a tag armazenada na linha da cache
• Se as tags combinarem, verifica o bit de validade do bloco Data
• Bit de validade Valid
– Indica se o dado no slot (linha da cache) contém um =
bloco válido
Embedded Systems Design: A Unified 29
Hardware/Software Introduction, (c) 2000 Vahid/Givargis
Mapeamento totalmente associativo
• Endereço completo armazenado em cada linha da cache
• Todo endereço armazenado na cache é simultaneamento
comparado com o endereço referenciado
• Bit de validade e offset com o mesmo papel do mapeamento
direto
Tag Offset
Data
V T D V T D V T D
…
Valid
= =
=
Embedded Systems Design: A Unified 30
Hardware/Software Introduction, (c) 2000 Vahid/Givargis
Mapeamento associativo por conjunto
• Meio termo entre o mapeamento direto e o
totalmente associativo
• Índice como no mapeamento direta
• Mas, cada linha da cache contém o conteúdo Tag Index Offset
e tag de dois ou mais endereços de memória V T D V T D
• TAGS do conjunto é simultaneamente Data
comparada como no mapeamento Valid
totalmente associativo = =
• Cache com tamanho de conjunto N é
chamada de N-way set-associative
– 2-way, 4-way, 8-way são comuns
Embedded Systems Design: A Unified 31
Hardware/Software Introduction, (c) 2000 Vahid/Givargis
Politica de substituição da cache
• Técnica para escolher qual bloco substituir
• Mapeamento direto não permite escolha
• Randomico
– Substitui o bloco escolhendo de forma aleatória
• LRU: least-recently used
– Substitui o bloco não acessado por mais tempo
• FIFO: first-in-first-out
– Coloca o bloco em uma fila quando acessado
– Escolhe o bloco para substituir no inicio da fila
Embedded Systems Design: A Unified 32
Hardware/Software Introduction, (c) 2000 Vahid/Givargis
Técnicas de escrita em cache
• Na escrita de um dado na cache a memória principal deve ser
atualizada
• Write-through
– Escreve na memória principal e na cache
– Facil de implementar
– Processador deve esperar pela memória principal lenta na escrita
– Potencial para escrita desnecessárias
• Write-back
– Memória principal somente é atualizada com um bloco “alterado” é
substituído na memória cache
– Bit extra necessário para cada bloco para indicar alteração
– Reduz o número de escritas na memória principal
Embedded Systems Design: A Unified 33
Hardware/Software Introduction, (c) 2000 Vahid/Givargis
Impacto do cache no desempenho do sistema
• Parâmetros mais importantes em termos de desempenho:
– Tamanho total do cache
– número total de bytes de dados que o cache pode conter
– etiqueta, bits válidos e de manutenção não incluídos no total
– Grau de associatividade
– Tamanho do bloco de dados
• Caches maiores alcançam taxas de falha mais baixas, mas maior custo de
acesso
• por exemplo
– Cache de 2 Kbytes: taxa de falha = 15%, custo de acerto = 2 ciclos, custo de falha = 20 ciclos
• média custo de acesso à memória = (0,85 * 2) + (0,15 * 20) = 4,7 ciclos
– Cache de 4 Kbyte: taxa de falha = 6,5%, custo de acerto = 3 ciclos, custo de falha não mudará
• média custo de acesso à memória = (0,935 * 3) + (0,065 * 20) = 4,105 ciclos (melhoria)
– Cache de 8 Kbytes: taxa de falha = 5,565%, custo de acerto = 4 ciclos, custo de falha não
mudará
• média custo de acesso à memória = (0,94435 * 4) + (0,05565 * 20) = 4,8904 ciclos (pior)
Embedded Systems Design: A Unified 34
Hardware/Software Introduction, (c) 2000 Vahid/Givargis
Desempenho da Cache
• Melhorar a taxa de hits sem aumentar o tamanho da
cache
– Aumentar o tamanho da linha (bloco)
– Mudar tamanho do conjunto
0.16
0.14
0.12
0.1 1 way
% cache miss
2 way
0.08
4 way
0.06 8 way
0.04
0.02
0
cache size
1 Kb 2 Kb 4 Kb 8 Kb 16 Kb 32 Kb 64 Kb 128 Kb
Embedded Systems Design: A Unified 35
Hardware/Software Introduction, (c) 2000 Vahid/Givargis
Unidade de gerenciamento de memória
(MMU)
• Deveres da MMU
– Lida com atualização de DRAM, interface de
barramento e arbitragem
– Cuida do compartilhamento de memória entre vários
processadores
– Traduz endereços de memória lógica do processador
para endereços de memória física de DRAM
• CPUs modernas geralmente vêm com MMU
embutido
• Processadores de propósito único podem ser usados
Embedded Systems Design: A Unified 36
Hardware/Software Introduction, (c) 2000 Vahid/Givargis
Unidade de gerenciamento de memória
(MMU)
Embedded Systems Design: A Unified 37
Hardware/Software Introduction, (c) 2000 Vahid/Givargis