Arquitetura de ComputadoresArquitetura de Computadores- Sistemas de Memória Interna
por
Helcio Wagner da Silva
1
Organização da Memória
Registradores
Memória Cache
Memória Principal
Disco Magnético
CD-RCD-RW
� custo por bit� capacidade� tempo de acesso � freq. de acessopelo processador
CD-RW
DVD-RDVD-RW
Fita Magnética
2
Características fundamentais
� Localização
− Processador
� Unidade de Transferência− Processador
− Interna (principal)
− Externa (secundária)
� Capacidade
− Tamanho da palavra
Transferência
− Palavra
− Bloco
� Método de Acesso
− Sequencial− Tamanho da palavra
− Número de palavras − Direto
− Aleatório
− Associativo3
Método de Acesso Sequencial
� Os dados são organizados em registros sequenciaissequenciais
� Exemplo: fitas magnéticasTrilha 01Trilha 02Trilha 03Trilha 04Trilha 05Trilha 06Trilha 07
Registrofísico
Trilha 07Trilha 08Trilha 09
Espaço entre registros
� O tempo de acesso é variável
(bit de paridade)
4
Método de Acesso Direto
� Cada bloco de dados possui um endereçoúnico, baseado na localização físicaúnico, baseado na localização física
� O acesso é feito através do acesso direto auma vizinhança genérica do registro, e emseguida por uma busca seqüencial
� O tempo de acesso é variável
Exemplo: HD� Exemplo: HD
Dado buscado(trilha 02, setor 25)
Movimentodo braço
Movimentodo disco
5
Método de Acesso Aleatório
� Cada posição de memória possui um endereçoúnicoúnico
� O tempo de acesso a uma posição é constante,sendo independente dos acessos anteriores
� Exemplos: Memória principal e alguns sistemasde memória cache
P1
P2
P3
P4
...P8
000001010011
111
...
endereçosacesso
6
Método de Acesso Associativo
� Tipo de acesso aleatório que comparasimultaneamente certo número de bits de umasimultaneamente certo número de bits de umapalavra com todas as palavras da memória,determinando quais delas contêm o mesmopadrão de bits
� Uma palavra é buscada com base em parte deseu conteúdo, e não de acordo com o seuendereçoseu conteúdo, e não de acordo com o seuendereço
� Exemplo: Memórias cache
7
Características fundamentais
� Desempenho
− Tempo de Acesso
� Características físicas
− Volátil/não-volátil− Tempo de Acesso
− Tempo de ciclo
− Taxa de transferência
� Tecnologia
− Semicondutores
− Volátil/não-volátil
− Apagável/não-apagável
� Organização− Arranjo físico de
células− Semicondutores
− Magnética
− Óptica
células− Formas de
Encapsulamento− Detecção e correção
de erros8
Tempo de Acesso (TA)
� Em memórias de acesso aleatório:− Tempo decorrido desde o instante em que um− Tempo decorrido desde o instante em que um
endereço é apresentado à memória até o momentoem que os dados são armazenados ou se tornamdisponíveis para utilização
� Em memórias de acesso não-aleatório:− Tempo gasto para posicionar o mecanismo de− Tempo gasto para posicionar o mecanismo de
leitura-escrita na posição desejada
9
Tempo de Ciclo (TC)
� Aplicável principalmente às memórias deacesso aleatórioacesso aleatório
� Compreende o tempo de acesso e o tempoadicional requerido antes que um segundoacesso possa ser iniciado
� O tempo adicional é necessário para odesaparecimento de transientes nas linhas dedesaparecimento de transientes nas linhas desinal
10
Taxa de Transferência (R)
� Taxa na qual os dados podem ser transferidosde ou para a unidade de memóriade ou para a unidade de memória
− Para memórias de acesso aleatório:� R = 1/TC
− Para memórias de acesso não-aleatório:� R = N/(TN – TA), em que:
− TN é o tempo médio para ler ou escrever N bits− TN é o tempo médio para ler ou escrever N bits− TA é o tempo de acesso médio
11
Tecnologia de SemicondutoresTipo de memória
Memória de acessoaleatório (RAM)
Categoria
Memória de leitura e de
Mecanismo deapagamento
Eletricamente, em
Mecanismo deescrita
Eletricamente
Volatilidade
Volátilaleatório (RAM)
Memória apenas deleitura (ROM)
ROM Programável (PROM)
PROM Apagável (EPROM)
leitura e deescrita
Memória apenas de
leitura
emnível de Byte
Não épossível
Luz UV, em nível de pastilha
Eletricamente
Máscaras
Volátil
Não-volátil
PROM Eletricamente
Apagável (EEPROM)
Memória FlashMemória
principalmentede leitura
Eletricamente, em nível de blocos
Eletricamente, em nível de Bytes
Eletricamente
12
Memórias RAM
� RAM dinâmica (DRAM) − Células armazenam dados com a carga de− Células armazenam dados com a carga de
capacitores− É necessário um circuito de regeneração (refresh)
� RAM estática (SRAM) − Valores são armazenados usando configurações
de flip-flops com portas lógicasde flip-flops com portas lógicas− Não é necessário o circuito de regeneração− São mais rápidas do que as DRAM, porém são
mais caras
13
Memória ROM
� Possui um padrão permanente de dados, quenão pode ser alteradonão pode ser alterado
� Os dados são gravados na pastilha durante oprocesso de fabricação
Memória PROM
� O processo de gravação (programação) éefetuado eletricamente, e pode ser feito pelofornecedor ou pelo cliente após a fabricação dapastilha
14
Memória EPROM
� Pode ser apagada por um processo óptico(exposição à radiação UV) (exposição à radiação UV)
� O processo de apagamento pode levar 20 min,e deve ser feito integralmente em todas ascélulas de memória antes da gravação denovos dados
� A gravação e leitura de dados é feita� A gravação e leitura de dados é feitaeletricamente
15
Memória EEPROM
� Tanto a escrita como o apagamento são feitoseletricamenteeletricamente
� Não há necessidade de apagamento integral;apenas o Byte ou os Bytes endereçados sãoatualizados
� A operação de escrita leva um tempoconsideravelmente maior que a de leitura; daconsideravelmente maior que a de leitura; daordem de centenas de microsegundos por Byte
� É mais cara e menos densa que a EPROM
� Combina não-volatilidade e flexibilidade16
Memória Flash
� Apresenta características intermediárias entre a EPROM e a EEPROMEPROM e a EEPROM
− Como a EEPROM, o apagamento é elétrico− Como a EEPROM, é possível apagar apenas
alguns blocos de memória− Como a EPROM, ela não permite apagar o
conteúdo de apenas um Byte
17
Organização da Memória de semicondutor
� Elemento básico: célula de memória− Exibe dois estados estáveis− Exibe dois estados estáveis− Possui três terminais funcionais:
Controle
Dados de
Controle
Célula CélulaSeleção
deEntrada Seleção Estado
(a) Escrita (a) Leitura
18
Exemplos de Arranjos Físicos das Células
� Exemplo #01: arranjo físico é igual ao arranjológico das palavras na memória – tal como élógico das palavras na memória – tal como épercebido pela CPU
8 bits
P0
P1
EPROM de 8 Mbits(ou 1 MB)
1M Palavras
P2
P3
P4
P220
- 1
...
19
Exemplos de Arranjos Físicos das Células
� Formato da pastilha do Exemplo #01:
123456789
30292827262524
303132A19
A16A15A12A12
A7A6A5A4A3
VccA18A17A14A13
Vpp
A8A9A11
Pinos deendereço
Pinos deendereço
Pino de alimentação
Pino de
32 pinos1,5 cm2
910111213141516
2423222120191817
A3A2A1A0D0D1D2
Vss
VppA10CED7D6D5D4D3
Pinos deDados
Pinos deDados
Chip Enable
Pino deTerra
Pino de programação
20
Exemplos de Arranjos Físicos das Células
� Exemplo #02: arranjo em matrizes quadradascontendo grupos de célulascontendo grupos de células
...
...
...2048 linhas
2048 colunas
Dec
odifi
cado
rde
linh
a
DRAM de 16 Mbits (ou 2 MB)
...
............
Decodificador de coluna
Dec
odifi
cado
r
MUX11
11
11
4
21
Exemplos de Arranjos Físicos das Células
� Formato da pastilha do Exemplo #02:
16 pinos
123456
242322212019NC
D0D1
VssVcc
CASOEA9
D3D2
Pinos deDados
Pino de Terra
Column AddressStrobe
Pino de Alimentação
WERAS
Pinos deDados
OutputEnable
Row Address Strobe
Write Enable
16 pinos
789101112 13
141516
191817 A7
A6
A3A2A1A0
A10 A8A9
A4A5
Pinos deendereço
Pinos deendereço
Vcc Vss
Enable
Pino de TerraPino de
Alimentação
Number of Chip
22
Exemplos de Arranjos Físicos das Células
� O arranjo em matrizes quadradas de grupos decélulas possibilita pastilhas mais densascélulas possibilita pastilhas mais densas
� A adição de uma linha de endereço faz comque se a quantidade de linhas e colunas damatriz seja duplicada
� A capacidade total de memória da pastilha é,portanto, quadruplicada
23
Organização em Módulos
...
...512 colunas
Pastilha #01
256 K x 1 bit
DRAM de
...
...
... .........
Decodificador de Coluna
512 linhas
...
...512 colunas
9
9
...
7
21
...
...
...
MARMBR
DRAM de256 KB
...
...
...... .........
Decodificador de Coluna
512 linhas
9
Pastilha #08
8
7...
24
Organização em Módulos
1/5121/
512 A1
1/512
1/51
2 B1
1/512
1/51
2 C1
1/512
1/51
2 D1MAR
1/512
1/512
1/51
2 A2
A
1/512
1/512
1/51
2 B2
B
1/512
1/512
1/51
2 C2
C
1/512
1/512
1/51
2 D2
D
9
9
28
2
1
...
MBR
CE
CECE
CECE
CE
CE
CE
1/512
1/51
2 A8
1/512
1/51
2 B8
1/512
1/51
2 C8
1/512
1/51
2 D82
Habilitaçãode Grupo
Grupo AGrupo BGrupo CGrupo D
CE CECECE
DRAM de 1 MB25
Formas de Encapsulamento
� Módulos DIP (Dual Inline Package)
Usados em PCs � Usados em PCs antigos (XTs, 286s e os primeiros 386)
� Soldados diretamente na placa mãe ou encaixados individualmente em soquetes disponíveis na placana placa
� Upgrade de memória ou substituição de módulos era difícil
26
Formas de Encapsulamento
� Módulos SIMM (Single Inline Memory Module)
− 30 vias8 MB
− 30 vias
− 72 vias
8 MB
8 MB8 MB
27
Formas de Encapsulamento
� Módulos SIMM de 30 vias:
� Observações:
− Os µPs 486 e 386DX acessavam a memória usandopalavras de 32 bits
− O µP 386SX acessava a memória usando palavras de 16bits
28
Formas de Encapsulamento
� Módulos SIMM de 72 vias:
� Observações:
− Tanto o µP 486 quanto o Pentium trabalham internamentecom palavras de 32 bits
− No entanto, o µP Pentium acessa a memória usandopalavras de 64 bits
29
Formas de Encapsulamento
� Módulos DIMM (Dual Inline Memory Module)
� Possuem contatos em ambos os lados do módulo
� Têm 168 vias
� Trabalham com palavrasde 64 bits
30
Formas de Encapsulamento
� Comparação entre os tamanhos:
Módulo SIMM
Módulo DIMM
Módulo SIMMde 30 vias
Módulo SIMMde 72 vias
31
Detecção e Correção de Erros
� Todo sistema de memória baseado emsemicondutor está sujeito a errossemicondutor está sujeito a erros
� Tipos:− Falhas graves: células são inutilizadas− Erros moderados: células não são inutilizadas
� A maioria dos sistemas de memória principalmodernos inclui uma lógica de detecção ecorreção de erroscorreção de erros
32
Detecção e Correção de Erros
� Um código de correção é caracterizado pelonúmero de bits incorretos que ele é capaz dedetectar e corrigir em uma única palavranúmero de bits incorretos que ele é capaz dedetectar e corrigir em uma única palavra
� O código de correção de erros mais simples é oCódigo de Hamming
� Esse código foi projetado por Richard Hammingna Bell Labs
33
Detecção e Correção de Erros
� Visualização do Códigode Hamming
� Palavras de 4 bits
� Diagramas deVenn
34
Detecção e Correção de Erros
Sinal de erro
Comparação
Correção
Memória
f
Saída de dados
Entrada de dados M
M
K'M
KK ComparaçãoMemória
fKK
Resultados possíveis:
� Nenhum erro é detectado (linha azul) � Um erro é detectado e é possível corrigi-lo (linha amarela) � Um erro é detectado, mas é impossível corrigi-lo (linha vermelha) 35
Projeto de um Código de Correção de Erro Único (SEC)
K 'M
ComparaçãoMemória
fK 'M
K
K + K' = Palavra Síndrome
Se todos os bits da Palavra Síndrome forem 0s, não houve erro� Se todos os bits da Palavra Síndrome forem 0s, não houve erro
� Se a Palavra Síndrome contiver apenas um bit 1, ocorreu erro em um dosbits de teste – nenhuma correção é necessária
� Se a Palavra Síndrome contiver mais de um bit 1, o valor numérico daPalavra Síndrome indica a posição do bit em que ocorreu erro – a palavra écorrigida invertendo-se o valor desse bit de dado
36
Projeto de um Código de Correção de Erro Único (SEC)
� Como pode ocorrer erro em qualquer um dos M bits dedados ou dos K bits de teste, deve-se ter:
Bits de testeBits de dados Aumento (%)
8 4 50,00
� Aumento no tamanho da Palavra com a correção de erros:
16
32
64
128
256
5
6
7
8
9
31,25
18,75
10,94
6,25
3,52 37
Projeto de um Código de Correção de Erro Único (SEC)
Posição do bit10
Posição do bit2
Bits deTeste
Bits deDados
12
11
10
9
8
7
6 0110
0111
1000
1001
1010
1011
1100
C8
M5
M3
M4
M6
M7
M8
C1 = M1 + M2 + M4 + M5 + M7
C2 = M1 + M3 + M4 + M6 + M7
C4 = M2 + M3 + M4 + M8
C8 = M5 + M6 + M7 + M8
Cálculo dos Bits de Teste:
6
5
4
3
2
1 0001
0010
0011
0100
0101
0110
C1
C4
C2
M1
M2
M3 C8 = M5 + M6 + M7 + M8
38
Projeto de um Código de Correção de Erro Único (SEC)
� Exemplo:
M8 M7 M6 M5 M4 M3 M2 M1
0 0 00 01 1 1 1
C1 = M1 + M2 + M4 + M5 + M7 = 1 + 0 + 1 + 1 + 0 = 1
C2 = M1 + M3 + M4 + M6 + M7 = 1 + 0 + 1 + 1 + 0 = 1
� Cálculo dos Bits de Teste:
C2 = M1 + M3 + M4 + M6 + M7 = 1 + 0 + 1 + 1 + 0 = 1
C4 = M2 + M3 + M4 + M8 = 0 + 0 + 1 + 0 = 1
C8 = M5 + M6 + M7 + M8 = 1 + 1 + 0 + 0 = 0
39
Projeto de um Código de Correção de Erro Único (SEC)
� Supondo-se um erro em M3,
M8 M7 M6 M5 M4 M3 M2 M1
0 0 1 01 1 1 1
C1 = M1 + M2 + M4 + M5 + M7 = 1 + 0 + 1 + 1 + 0 = 1
C2 = M1 + M3 + M4 + M6 + M7 = 1 + 1 + 1 + 1 + 0 = 0
� Cálculo dos Bits de Teste:
C2 = M1 + M3 + M4 + M6 + M7 = 1 + 1 + 1 + 1 + 0 = 0
C4 = M2 + M3 + M4 + M8 = 0 + 1 + 1 + 0 = 0
C8 = M5 + M6 + M7 + M8 = 1 + 1 + 0 + 0 = 0
40
Projeto de um Código de Correção de Erro Único (SEC)
� Cálculo da Palavra Síndrome:
C8 C4 C2 C1
0 1 1 1
0 0 0 1
0 1 1 0
+
610
� Conclusão: há um erro na 6a. posição (bit M3)!
M8 M7 M6 M5 M4 M3 M2 M1
0 0 1 01 1 1 1
C2
1
C1
1
C4
1
C8
0
123456789101112
41
Memória Cache
� Todos os sistemas de memória atuaiscontemplam uma memória cachecontemplam uma memória cache
CPU MemóriaCache
MemóriaPrincipal
Transferência de Palavras
Transferênciade Blocos
� Uma memória principal grande e lenta écombinada com uma memória cache grande erápida
42
Memória Cache
� Em qualquer instante, um subconjunto dosblocos da memória principal reside na cacheblocos da memória principal reside na cache
0123
Blocos(K palavras)
Tamanhoda
Palavra
0123
...
BlocoRótulo
K - 1
...
2n - 1
Bloco
C - 1
Tamanho do Bloco(K palavras)
M = 2n /K BlocosC linhasC <<< M
43
Memória Cache
Endereço
Área de armazenamentotemporário de endereço
Processador MemóriaCache
Controle Controle
Bar
ram
ento
do
sist
ema
Dados
Área de armazenamentotemporário de dados
Bar
ram
ento
do
sist
ema
44
O Bloco que contém
Recebe endereçoRA da CPU
INÍCIO
Efetua acesso à memóriaprincipal para obter o
Não
Operação de Leitura em Memória Cache
O Bloco que contémo endereço RA está na memória cache?
Obtém o conteúdoda palavra no endereço
RA e entrega para a CPU
principal para obter o bloco que contém RA
Aloca linha da cachepara o bloco da
memória principalSim
Não
Carrega o bloco da memória principal na
linha da cache
Entrega a palavraem RA para a CPU
FIM45
Elementos de Projeto de Memórias Cache
� Tamanho� Função de
� Política de escrita− Write-through� Função de
mapeamento− Direto− Associativo− Associativo por
conjuntos
Algoritmo de
− Write-through− Write-back− Write-once
� Tamanho da linha� Número de Caches
− Um ou dois níveis� Algoritmo de
substitução− LRU
− FIFO
− LFU
− Aleatório
− Um ou dois níveis− Unificada ou separada
46
Tamanho da Cache
� Impossível determinar tamanho ideal− Deve ser grande para que o tempo médio de− Deve ser grande para que o tempo médio de
acesso à memória total seja próximo ao tempo deacesso da memória cache
− Deve ser pequena para que o custo total por bitseja próximo do custo por bit da memória principal
� Outros motivos para minimização da cache:− Quanto maior a cache, maior o número de pinos –− Quanto maior a cache, maior o número de pinos –
e mais lento o endereçamento− O espaço limitado na placa de circuitos
47
Função de Mapeamento
� Necessidade− O número de linhas da cache é menor do que o − O número de linhas da cache é menor do que o
número de blocos da memória principal
� Técnicas utilizadas− Mapeamento Direto− Mapeamento Associativo− Mapeamento Associativo por Conjuntos
48
Suposições
000000
1 Byte� Memória principal com 16 MB (224 B) � Cada Byte é endereçável diretamente� Memória principal pode ser vista como
000000000001000002000003
Bloco 0
0000
Bloco (4 Bytes)
000004000005000006000007
Bloco 1
00000800000900000A00000B
Bloco 2
00000C00000D Bloco 3
4M (222) blocos de 4 B� Memória cache de 64 KB, organizadaem 16 K (214) linhas de 4 B
� Os dados são transferidos da memóriaprincipal para a cache em blocos de 4B
P0P1P2P3P4P5P6P7P8P9P10P11P12P13
...
Bloco 222 - 1
0000
...
00000D00000E00000F
Bloco 3
FFFFFFFFFFFEFFFFFDFFFFFC
... ...
00010002
3FFF
Memória cache Memória principal
P14P15
P(224 - 4) P(224 - 3)P(224 - 2) P(224 - 1)
49
Mapeamento Direto
� Cada bloco da memória principal é mapeadoem uma única linha da cacheem uma única linha da cache
� O mapeamento é expresso pela equação:
i = j módulo m,Em que:
� i : número da linha da memória cache� i : número da linha da memória cache� j : número do bloco da memória principal� m : número de linhas da memória cache
50
Mapeamento Direto
� Segundo i = j módulo m, cada bloco damemória principal é assim mapeado em umalinha da memória cache:memória principal é assim mapeado em umalinha da memória cache:
0, m, 2m, ..., 2S - m
1, m + 1, 2m + 1, ..., 2S - m + 1
0
1
Linha da memória cache Blocos da memória principalmapeados na linha
1, m + 1, 2m + 1, ..., 2S - m + 1
m – 1, 2m – 1, 3m – 1, ..., 2S -1
1
m - 151
Mapeamento Direto
� Cálculo dos blocos:− Bloco 0 = 000000− Bloco 0 = 000000− Bloco 1 = 000004 (000000 + 4 X 000001) − Bloco 2 = 000008 (000000 + 4 x 000002) − Bloco 3 = 00000C (000000 + 4 x 000003) − ...− Bloco N = 000000 + 4 x N
� Bloco m = Bloco 214 = Bloco 004000 = 000000 + 4 x 004000 = 010000
� Bloco 2S-m = Bloco (222-214) = Bloco (400000 - 004000)= Bloco 3FC000 = 000000 + 4 x 3FC000 = FF0000
52
Mapeamento Direto
� Bloco m+1 = Bloco (214+1) = Bloco (004000+1) = Bloco 004001 = 000000 + 4 x 004001 = 010004
Bloco 2S-m+1 = Bloco (222-214+1) = Bloco (400000-� Bloco 2S-m+1 = Bloco (222-214+1) = Bloco (400000-004000+1) = Bloco 3FC001 = 000000 + 4 x 3FC001 = FF0004
� Bloco m-1 = Bloco (214-1) = Bloco (004000-1) = Bloco 003FFF = 000000 + 4 x 003FFF = 00FFFC
� Bloco (2m-1) = Bloco (2 x 004000 – 1) = Bloco (008000-1) = Bloco 007FFF = 000000 + 4 x 007FFF = 01FFFC= Bloco 007FFF = 000000 + 4 x 007FFF = 01FFFC
� Bloco (2S-1) = Bloco (222-1) = Bloco (400000-1) = Bloco 3FFFFF = 000000 + 4 x 3FFFFF = FFFFFC
53
Mapeamento Direto
� Substituindo os valores, teremos:
000000, 010000, ..., FF0000
000004, 010004, ..., FF0004
0
1
Linha da memória cache Blocos da memória principalmapeados na linha
00FFFC, 01FFFC, ..., FFFFFC214 - 1
54
Mapeamento Direto
� Interpretação do endereço da memória principal:principal:
PalavraLinha da cacheRótulo
ws
s - r r
No nosso caso:
Identificação de um dentre 2S blocos
� No nosso caso:
PalavraLinha da cacheRótulo
222
8 14 55
Exemplo de Mapeamento Direto
0000 135792460004
FFF8FFFC
00
Rótulo
Linha+
palavra Dados
......
FFFC
0000 777777770004 11235813
339C FEDCBA98
FFFC 12345678
00 1357924616 11235813
16 FEDCBA98
FF 1122334416 12345678
16
00000001
3FFE3FFF
0CE7
Rótulo Dados Númerode linha
8 32 bits
...
00000004
FFF8 11223344FFFC 24682468
FF
8bits
32 bits
32 bits 56
Rótulo Linha PalavraP0P1
P2B0wrs - r
3'
Exemplo de Leitura no Mapeamento Direto
P2P3
B0wrs - r
1
2
3
3
4
...
Comparação
Acerto na cache P4jP(4j+1)
P(4j+2) P(4j+3)
Falha na cache
Bj
3
3' 4'
57
Mapeamento Associativo
� Vantagem:− Oferece maior flexibilidade para escolha do bloco a− Oferece maior flexibilidade para escolha do bloco a
ser substituído quando um novo bloco é trazidopara a memória cache
� Desvantagem:− Complexidade do conjunto de circuitos necessários
para a comparação simultânea dos rótulos de todasas linhas da memória cacheas linhas da memória cache
58
Mapeamento Direto
� Vantagens:− Simplicidade− Simplicidade− Custo baixo de implementação
� Desvantagem:− Se um programa fizer repetidas referências a
palavras em dois blocos distintos, mapeados emuma mesma linha, esses blocos serão trocadoscontinuamente na cache – e a taxa de acertos serácontinuamente na cache – e a taxa de acertos serábaixa
59
Mapeamento Associativo
� Permite que cada bloco da memória principalseja carregado em qualquer linha da memóriacacheseja carregado em qualquer linha da memóriacache
� Interpretação do endereço da memóriaprincipal:
PalavraRótulo
ws
Identificação de um dentre 2S blocos
� No nosso caso:
PalavraRótulo
222
60
Mapeamento Associativo
� O rótulo corresponde aos 22 bits maissignificativos do endereçosignificativos do endereço
� Exemplos de cálculo de rótulos− 000000 -> 000000− 16339C -> 058CE7− FFFFF4 -> 3FFFFD− FFFFF8 -> 3FFFFEFFFFF8 -> 3FFFFE− FFFFFC -> 3FFFFF
61
000000 13579246000004
FFF8FFFC
Endereço Dados
Exemplo de Mapeamento Associativo
......
FFFC
16339C FEDCBA98
3FFFFE 13579246058CE7 FEDCBA98
3FFFFD 33333333000000 112233443FFFFF 12345678
00000001
3FFE3FFF
3FFD
Rótulo Dados Númerode linha
32 bits
163398
1633A0
22 bits
...
FFFFF4 33333333FFFFF8 11223344FFFFFC 24682468
32 bits
32 bits
22 bits
62
Rótulo PalavraP0P1
P2B0ws
2'
Exemplo de Leitura no Mapeamento Associativo
P2P3
B0ws
1
2
2
3
...
Comparação
Acerto na cacheP4j
P(4j+1) P(4j+2)
P(4j+3)
Falha na cache
Bj
2
2'3'
63
Mapeamento Associativo por Conjuntos (de k linhas)
� Combina as vantagens do mapeamento diretoe do mapeamento associativo e diminui suasdesvantagense do mapeamento associativo e diminui suasdesvantagens
� A memória cache é dividida em v conjuntos,cada qual com k linhas
m = v x ki = j módulo v
Em que:� i : número do conjunto da memória cache� j : número do bloco da memória principal� m : número de linhas da memória cache
64
Mapeamento Associativo por Conjuntos (de k linhas)
� Interpretação do endereço da memóriaprincipal:
Identificação de um dentre 2S blocosprincipal:
PalavraConjuntoRótulo
ws
s - d d
Identificação de um dentre 2S blocos
� Considerando em nosso caso conjuntos deduas linhas, temos:duas linhas, temos:
PalavraConjuntoRótulo
222
9 1365
Mapeamento Associativo por Conjuntos (de k linhas)
� Segundo i = j módulo v, cada bloco da memóriaprincipal é assim mapeado em um conjunto damemória cache:principal é assim mapeado em um conjunto damemória cache:
0, v, 2v, ..., 2S - v
1, v + 1, 2v + 1, ..., 2S - v + 1
0
1
Conjunto da memória cache Blocos da memória principalmapeados no conjunto
1, v + 1, 2v + 1, ..., 2S - v + 1
v – 1, 2v – 1, 3v – 1, ..., 2S -1
1
v - 166
Mapeamento Associativo por Conjuntos (de k linhas)
� Cálculo dos blocos:− Bloco 0 = 000000− Bloco 0 = 000000− Bloco 1 = 000004 (000000 + 4 X 000001) − Bloco 2 = 000008 (000000 + 4 x 000002) − Bloco 3 = 00000C (000000 + 4 x 000003) − ...− Bloco N = 000000 + 4 x N
� Bloco v = Bloco 213 = Bloco 002000 = 000000 + 4 x 002000 = 008000
� Bloco 2S-v = Bloco (222-213) = Bloco (400000 - 002000)= Bloco 3FE000 = 000000 + 4 x 3FE000 = FF8000
67
Mapeamento Associativo por Conjuntos (de k linhas)
� Bloco v+1 = Bloco (213+1) = Bloco (002000+1) = Bloco 002001 = 000000 + 4 x 002001 = 008004
Bloco 2S-v+1 = Bloco (222-213+1) = Bloco (400000-� Bloco 2S-v+1 = Bloco (222-213+1) = Bloco (400000-002000+1) = Bloco 3FE001 = 000000 + 4 x 3FE001 = FF8004
� Bloco v-1 = Bloco (213-1) = Bloco (002000-1) = Bloco 001FFF = 000000 + 4 x 001FFF = 007FFC
� Bloco (2v-1) = Bloco (2 x 002000 – 1) = Bloco (004000-1) = Bloco 003FFF = 000000 + 4 x 003FFF = 00FFFC= Bloco 003FFF = 000000 + 4 x 003FFF = 00FFFC
� Bloco (2S-1) = Bloco (222-1) = Bloco (400000-1) = Bloco 3FFFFF = 000000 + 4 x 3FFFFF = FFFFFC
68
Mapeamento Associativo por Conjuntos (de k linhas)
� Substituindo os valores, teremos:
000000, 008000, ..., FF8000
000004, 008004, ..., FF8004
0
1
Conjunto da memória cache Blocos da memória principalmapeados no conjunto
007FFC, 00FFFC, ..., FFFFFC213 - 1
69
Exemplo de Mapeamento Associativo por Conjuntos
0000 135792460004
7FF87FFC
000
Rótulo
Conjunto+
palavra Dados
......
7FFC
0000 777777770004 11235813
339C FEDCBA98
7FFC 12345678
000 13579246001 11235813
02C FEDCBA98
1FF 11223344001 12345678
02C
00000001
1FFE1FFF
0CE7
Rótulo Dados Númerode conj.
9 32 bits
001 77777777
1FF 24682468
9 32 bits
DadosRótulo
...
00000004
FFF8 11223344FFFC 24682468
1FF
9bits
32 bits
32 bits
9bits
32 bits
70
P0P1P2 B0ws - d
3'
Exemplo de Leitura no Mapeamento Associativo por Conjuntos (de k linhas)
Rótulo Conjunto Palavra
d
Comparação
P2P3
B0ws - d
1
2
2
3
...
C0
C1
C2
d
4Comparação
Acerto na cacheP4j
P(4j+1) P(4j+2) P(4j+3)
Falha na cache
Bj
3
3'4'
C(v-1)
71
Mapeamento Associativo por Conjuntos (de k linhas)
� Casos extremos:− v = m e k = 1 : mapeamento direto− v = m e k = 1 : mapeamento direto− v = 1 e k = m : mapeamento associativo
� Configurações comuns:− v = m/2 e k = 2 : taxa de acertos significantemente
maior do que no mapeamento direto− v = m/4 e k = 4 : pequena melhoria a um custo
adicional relativamente pequenoadicional relativamente pequeno− K > 4 : sem melhoras significativas de desempenho
72
Algoritmos de Substituição
� Quando um novo bloco é trazido para a cache,um dos blocos existentes deve ser substituídoum dos blocos existentes deve ser substituído
� No mapeamento direto, não há alternativa –cada bloco é mapeado em uma única linha
� Para os mapeamentos associativo eassociativo por conjuntos, é necessário umalgoritmo de substituiçãoRecomenda-se a implementação em HW, por� Recomenda-se a implementação em HW, pormotivo de desempenho
73
Algoritmos de Substituição
� Algoritmos disponíveis:− LRU (Menos Recentemente Usado)− LRU (Menos Recentemente Usado)
� Implementação com bits de uso− FIFO (First In First Out)
� Implementação com áreas de armazenamento circular− LFU (Menos Frequentemente Usado)
� Implementação com contadores− Aleatório− Aleatório
� Apresenta um desempenho apenas levemente inferioraos demais
74
Políticas de Substituição
� Antes que um bloco residente na memóriapossa ser substituído, é necessário verificar seele foi alterado na memória cachepossa ser substituído, é necessário verificar seele foi alterado na memória cache
� Se isso não ocorreu, então o novo bloco podeser escrito sobre o bloco antigo
� Caso contrário, então a memória principal deveser atualizadaProblema encontrado:� Problema encontrado:
− A memória principal pode ser utilizada tanto poroutros processadores quanto por dispositivos deE/S
75
Políticas de Substituição
� Escrita Direta (write through) − Todas as operações de escrita são feitas tanto na − Todas as operações de escrita são feitas tanto na
memória quanto na cache− Vantagem:
� A memória principal está sempre atualizada− Desvantagem:
� Geração de tráfego de memória considerável
76
Políticas de Substituição
� Escrita de Volta (write back) − Escritas são feitas apenas na cache− Escritas são feitas apenas na cache− Quando uma linha da cache é atualizada, um bit de
atualização associado a ela é setado em 1− Quando um bloco vai ser substituído, ele apenas é
escrito de volta na memória principal se o seu bit de atualização estiver setado em 1
− Vantagem:� Minimiza o número de operações de escrita na memória
− Desvantagem:� Partes da memória principal podem ficar inválidas
− Acesso à memória por módulos de E/S deve ser feita a partir da cache
77
Políticas de Substituição
� Escrita Uma Vez (write once) − Ideal para sistemas multiprocessados com− Ideal para sistemas multiprocessados com
memória principal compartilhada− É uma mistura de write through e write back− Cada µP escreve a memória principal sempre que
o bloco correspondente na cache foi atualizadopela primeira vez (write through)
− Os demais µP são alertados da alteração− Os demais µP são alertados da alteração− Outras alterações naquele bloco são realizadas
apenas na cache local e o bloco da memória sóserá atualizado quando o bloco for substituído nacache (write back)
78
Tamanho da Linha
� Tamanho da linha = tamanho do bloco� À medida em que esse número aumenta, � À medida em que esse número aumenta,
aumenta inicialmente a taxa de acertos� Entretanto, se esse número aumentar muito, a
taxa de acertos diminuirá� Porque não usar blocos muito grandes:
− Para uma dada capacidade, isso diminuirá o − Para uma dada capacidade, isso diminuirá o número de linhas na cache
− Cada palava adicional estará mais distante da usada – e a chance de uso será menor
� Um tamanho de duas a oito palavras está próximo do ótimo 79
Número de Memórias Cache
� Anteriormente, a cache era externa ao µP� Com o avanço da eletrônica, tem-se:� Com o avanço da eletrônica, tem-se:
− Cache L1: interna ao µP− Cache L2: externa ao µP (SRAM)
� Unificadas ou Separadas?− Unificadas (instruções + dados) − Separadas (uma para instruções e outra para os− Separadas (uma para instruções e outra para os
dados) − Projetos atuais baseiam-se em caches separadas,
por motivos de desempenho junto ao pipeline
80
Evolução das Memórias Baseadas em Semicondutores
� Memórias Regulares� Memórias FPM� Memórias EDO� Memórias SDRAM� Memórias DDR� Memórias DDR� Memórias DDR2
81
Memórias Regulares
� Foram o primeiro tipo de memória usado em microsPC
� Acesso era feito enviando primeiro o endereço RAS eem seguida o endereço CAS, da forma mais simplespossível
� Eram fabricadas inicialmente com tempos de acessode 150 ns; depois foram fabricadas com tempos deacesso de 120, 100 e 80 ns, para operação com o 286
Utilizadas em computadores XT, 286 e em alguns dos� Utilizadas em computadores XT, 286 e em alguns dosprimeiros 386
� Eram encontradas apenas sob a forma de módulosDIP
82
Memórias Regulares
83
Memórias FPM (Fast Page Mode)
� Transferem dados em rajadas de 4 palavras em umamesma linha, ou página
� Baseadas na idéia de que os dados são gravadosseqüencialmente na memória
� Encontradas na forma de pentes SIMM de 30/72 viase com tempos de acesso de 80, 70 e 60 ns
� Foram usadas em computadores 386, 486 e nosprimeiros Pentium
� Tempos de acesso podem também ser dados emtermos de ciclos de clock da placa mãe
− por exemplo, 5-3-3-3 em um barramento operando a 66 MHz
84
Memórias FPM (Fast Page Mode)
85
Memórias FPM (Fast Page Mode)
� Uma nova operação deleitura só pode serleitura só pode seriniciada quando aoperação anterior éencerrada
Pequeno atraso imposto
86
Memórias EDO (Extended Data Output)
� Criadas em 1994Caracterizadas pela existência de um pipeline� Caracterizadas pela existência de um pipelineinterno à memória
− Uma nova leitura pode ser iniciada sem que aleitura atual tenha terminado
� São mais rápidas que as memórias FPM− por exemplo, 5-2-2-2 em um barramento operando− por exemplo, 5-2-2-2 em um barramento operando
a 66 MHz (ganho de 25 %) � Fabricadas com tempos de acesso de 70, 60 e
50 ns, encapsuladas em pentes SIMM de 72vias
87
Memórias EDO (Extended Data Output)
88
Memórias SDRAM(Synchronous DRAM)
� As memórias anteriores trabalham em seuspróprios ritmos, independentemente do clockda placa mãepróprios ritmos, independentemente do clockda placa mãe
− Uma FPM projetada para funcionar em placas paraµP 386 e 486 (25/33 MHz) funciona perfeitamenteem placas para µP Pentium (66 MHz)
� Por isso, elas são tidas como memóriasassíncronas
� Todas as ações em uma memória SDRAMestão sincronizadas com a borda de subida dosinal de clock da placa mãe
89
Memórias SDRAM(Synchronous DRAM)
� Estrutura:SDRAM de 4M x 4 bits = 2 MB
Dec
odifi
cado
rde
Lin
ha
Lógicade
Controle 2048x1024x42048x1024x4
Dec
odifi
cado
rde
Lin
ha
CKE
CLK
CS#
WE#CAS#RAS#
Bufferde Linha
Bufferde
Saída
Bufferde
EntradaDQ0
...DQ3
Registrador de Modo
Decodificadorde Coluna
Decodificadorde Coluna
Lógica deControle de Banco
Bufferde
Coluna
90
Memórias SDRAM(Synchronous DRAM)
� Configuração através do Registrador de Modo� Pode-se definir:� Pode-se definir:
− Tamanho das rajadas− Tipo das rajadas
� Seqüenciais � Intercaladas
− Latência do CAS− Modo de operação
� Normal− Modo de escrita em rajadas
� Habilitado� Desabilitado 91
Memórias SDRAM(Synchronous DRAM)
A0A1A2A3A4A5A6A7A8A9A10BA
M0M1M2M3M4M5M6M7M8M9M10M11
TamanhoTamanhoda rajadaBTLatência Latência
do CASCódigo Código de Op.WBReservado
M0M1M2M3M4M5M6M7M8M9M10M11
M2 M1 M0Tamanho da rajada
M3 = 0 M3 = 1
0 0 0 1 1
0 0 1 2 2
M3 Tipo da rajada
0 Seqüencial 0 0 1 2 2
0 1 0 4 4
0 1 1 8 8
1 0 0 Reservado Reservado
1 0 1 Reservado Reservado
1 1 0 Reservado Reservado
1 1 1 Pág.completa Reservado
0 Seqüencial
1 Intercalada
92
Memórias SDRAM(Synchronous DRAM)
A0A1A2A3A4A5A6A7A8A9A10BA
M0M1M2M3M4M5M6M7M8M9M10M11
TamanhoTamanhoda rajadaBTLatência Latência
do CASCódigo Código de Op.WBReservado
M0M1M2M3M4M5M6M7M8M9M10M11
M6 M5 M4 Latência do CAS
0 0 0 Reservado
0 0 1 1
0 1 0 2
M9 Modo de escrita em rajada
0 Tamanho de rajada programado
1 Escrita em uma só posição
93
0 1 1 3
1 0 0 Reservado
1 0 1 Reservado
1 1 0 Reservado
1 1 1 Reservado
M8 M7 M6-M0 Modo de operação
0 0 definido Normal
- - Reservados
Memórias SDRAM(Synchronous DRAM)
� Configuração do Registrador de Modo se dáatravés do comando LOAD MODE REGISTERatravés do comando LOAD MODE REGISTER
� Outros comandos:− COMAND INHIBIT
� Inibe a execução de comandos na SDRAM − NOP
� Previne a emissão de comandos indesejáveis duranteestados de esperaestados de espera
− ACTIVE� Abre (ativa) uma linha de um banco para acesso
subsequente− BA: endereço do banco− A0-A10: endereço da linha no banco 94
Memórias SDRAM(Synchronous DRAM)
CLK
CKE
CS#
RAS#
CAS#
• Comando ACTIVE
95
CAS#
WE#
A0-A10
BA
Endereço da Linha
Endereço do Banco
Don’t care
Memórias SDRAM(Synchronous DRAM)
� Outros comandos (cont.):− PRECHARGE− PRECHARGE
� Desativa uma linha aberta em um banco− BURST TERMINATE
� Trunca uma rajada em uma operação de leitura ouescrita
− AUTO REFRESH� Regenera os dados� Regenera os dados
− SELF REFRESH� Regenera os dados na ausência do clock
− SDRAM provê seu próprio sinal de clock interno
− READ/WRITE� Leitura/escrita de dados 96
Memórias SDRAM
(Synchronous DRAM)
CLK
CKE
CS#
Comando READRAS#
CAS#
WE#
Endereço
• Comando READ
97
A0-A9
BA
Endereço da Coluna
Endereço do Banco
Don’t care
A10Habilitar/desabilitar auto precharge
Memórias SDRAM(Synchronous DRAM)
CLK
NOPREAD NOP
DADOS DADOS
COMANDOS
DQ
98
� Comando READ com Latência do CAS (CL) = 1
Don’t care Indefinido
Memórias SDRAM(Synchronous DRAM)
CLK
READ NOP
DADOSDADOS
NOP NOPCOMANDOS
DQ
99
Don’t care Indefinido
� Comando READ com Latência do CAS (CL) = 2
Memórias SDRAM(Synchronous DRAM)
CLK
DADOS
NOPREAD NOP
DADOS
NOP NOPCOMANDOS
DQ
100
Don’t care Indefinido
� Comando READ com Latência do CAS (CL) = 3
Memórias SDRAM (Synchronous DRAM)
� Por serem sincronizadas com o clock da placa mãe, as SDRAM são mais rápidas
� Comparação entre SDRAM de 12 ns e EDO de 60ns:
− Barramento operando em 66 MHz:� SDRAM: 5+1+1+1 = 8 ciclos em 4 acessos� EDO: 5+2+2+2 = 11 ciclos em 4 acessos � Conclusão: SDRAM é 30% mais rápida que a EDO� Conclusão: SDRAM é 30% mais rápida que a EDO
− Barramento operando em 82 MHz:� SDRAM: 5+1+1+1 = 8 ciclos em 4 acessos� EDO: 6+3+3+3 = 15 ciclos em 4 acessos� Conclusão: SDRAM é 47 % mais rápida que a EDO
101
Parâmetros de Especificação
� CL/tRCD/tRP/tRAS/CMD− CL (CAS Latency): intervalo de tempo entre a ativação − CL (CAS Latency): intervalo de tempo entre a ativação
do CAS e a recepção dos dados− tRCD: tempo compreendido entre a ativação do RAS e
a ativação do CAS− tRP: tempo requerido entre o término do acesso de
uma linha e o início do acesso a uma outra− tRAS: tempo decorrido da recepção do sinal de seleção
de linha no terminal RAS até a sua ativaçãode linha no terminal RAS até a sua ativaçãopropriamente dita
− CMD: define o tempo compreendido entre a seleção deum banco (CS – Chip Select) e a emissão de umcomando ACTIVE
102
Parâmetros de Especificação
CLK
NOP
CLK
ACTIVE NOP NOP READ/WRITE
Don’t care
COMANDOS
tRCD
103
� Visualização do parâmetro tRCD
Parâmetros de Especificação
CLK
BANCO a,COL n
READREAD NOP PRECHARGE NOPCOMANDOS
BANCO a,COL m
ENDEREÇOS
tRP
104
DADOSDADOS
Don’t care Indefinido
DQ
� Visualização do parâmetro tRP
Parâmetros de Especificação
� Exemplo: 2-2-2-5-T1− CL = 2 (ciclos) − CL = 2 (ciclos) − tRCD = 2 (ciclos) − tRP = 2 (ciclos) − tRAS = 5 (ciclos) − CMD = 1 (ciclo)
� Parâmetros gravados no módulo
� Parâmetros gravados no módulo
� Podem ser mudados via SETUP da BIOS
− Configuração do Registrador de Modo 105
Parâmetros de Especificação
� Memórias SDRAM são especificadas tambémde acordo com a freqüência nominal dobarramento, na forma PCxxxde acordo com a freqüência nominal dobarramento, na forma PCxxx
� Exemplos− PC66 → 66 MHz− PC100 → 100 MHz− PC133 → 133 MHz
106
Memórias DDR (Double Data Rate)
� Também chamadas de DDR SDRAM− Transferência de dados se dá na borda de subida e na
borda de descida− Transferência de dados se dá na borda de subida e na
borda de descida do clock
� Os módulos DIMM DDR e SDRAM são muitosemelhantes, diferenciando-se em:
� SDRAM
� Módulo tem 168 terminais
Chanfro duplo
107
� Chanfro duplo
� DDR
� Módulo tem 184 terminais
� Chanfro único
Memórias DDR
CLK
DADOSDADOS DADOS
NOPREAD NOP
DADOS
NOP NOPCOMANDOS
DQ
108
Don’t care
� Comando READ com Latência do CAS = 2− Valores usuais para CL: 2, 2.5 e 3
Memórias DDR2
� Evolução natural das memórias DDR� Transferem dados nas bordas de subida e� Transferem dados nas bordas de subida e
descida do sinal de clock (como as DDR)� Diferenças entre DDR2 e DDR:
− Versões encontradas no mercado:� DDR: 266 MHz, 333 MHz e 400 MHz� DDR2: 533 MHz, 677 MHz e 800 MHz
− Alimentação:� DDR: 2,5 V� DDR2: 1,8 V� (consumos equivalentes)
109
Memórias DDR2
� Diferenças entre DDR2 e DDR (cont.):− Encapsulamento:− Encapsulamento:
� DDR: Módulos DIMM possuem 184 terminais� DDR2: Módulos DIMM possuem 240 terminais
110
Memórias DDR2
� Diferenças entre DDR2 e DDR (cont.):− Arranjos dos chips nos módulos:− Arranjos dos chips nos módulos:
� DDR: Arranjos TSOP (Thin Small-Output Package)� DDR2: Arranjos BGA (Ball Grid Array)
111111
Memórias DDR2
� Diferenças entre DDR2 e DDR (cont.):− Latência do CAS:− Latência do CAS:
� Valores usuais:− DDR: 2, 2.5 e 3− DDR2: 3, 4 e 5
− Memórias DDR2 apresentam uma latênciaadicional, denominada AL (Additional Latency)
− A latência total é obtida somando-se o AL ao valorde CL
112
de CL− Valor de AL é encontrado na documentação técnica
da memória
Parâmetros de Especificação
� DDR(2)xxx/PC(2)yyyy− xxx é o dobro da freqüência nominal de clock− xxx é o dobro da freqüência nominal de clock
suportada pelo chip de memória, em MHz− yyyy é a taxa de transferência máxima alcançada
pelo módulo de memória, em MB/s
� Exemplos:− DDR400 → 200 MHz; PC3200 → 3200 MB/s− DDR2-667 → 333 MHz; PC2-5400 → 5336 MB/s− DDR2-667 → 333 MHz; PC2-5400 → 5336 MB/s
� Parâmetros gravados no módulo
113