Вы находитесь на странице: 1из 113

Arquitetura de Computadores

- Sistemas de Memória Interna

por

Helcio Wagner da Silva

1
Organização da Memória
Registradores

 custo por bit Memória Cache


 capacidade

 tempo de acesso Memória Principal


 freq. de acesso

pelo processador Disco Magnético

CD-R
CD-RW

DVD-R
DVD-RW

Fita Magnética

2
Características fundamentais
 Localização  Unidade de
− Processador Transferência
− Interna (principal) − Palavra
− Externa (secundária) − Bloco
 Capacidade  Método de Acesso
− Tamanho da palavra − Sequencial
− Número de palavras − Direto
− Aleatório
− Associativo
3
Método de Acesso Sequencial
 Os dados são organizados em registros
sequenciais
 Exemplo: fitas magnéticas
Trilha 01 Registro
Trilha 02 físico
Trilha 03
Trilha 04
Trilha 05
Trilha 06
Trilha 07
Trilha 08
Trilha 09 (bit de paridade)
Espaço entre registros

 O tempo de acesso é variável


4
Método de Acesso Direto
 Cada bloco de dados possui um endereço
único, baseado na localização física
 O acesso é feito através do acesso direto a
uma vizinhança genérica do registro, e em
seguida por uma busca seqüencial
 O tempo de acesso é variável
 Exemplo: HD Movimento Movimento
do braço do disco

Dado buscado
(trilha 02, setor 25)

5
Método de Acesso Aleatório
 Cada posição de memória possui um endereço
único
 O tempo de acesso a uma posição é constante,
sendo independente dos acessos anteriores
 Exemplos: Memória principal e alguns sistemas
de memória cache

000 P1
001 P2
acesso 010 P3
endereços P4
011
... ...
P8 6
111
Método de Acesso Associativo
 Tipo de acesso aleatório que compara
simultaneamente certo número de bits de uma
palavra com todas as palavras da memória,
determinando quais delas contêm o mesmo
padrão de bits
 Uma palavra é buscada com base em parte de
seu conteúdo, e não de acordo com o seu
endereço
 Exemplo: Memórias cache

7
Características fundamentais
 Desempenho  Características físicas
− Tempo de Acesso − Volátil/não-volátil
− Tempo de ciclo − Apagável/não-
− Taxa de transferência apagável

 Tecnologia  Organização
− Arranjo físico de
− Semicondutores células
− Magnética − Formas de
− Óptica Encapsulamento
− Detecção e correção
de erros
8
Tempo de Acesso (TA)
 Em memórias de acesso aleatório:
− Tempo decorrido desde o instante em que um
endereço é apresentado à memória até o momento
em que os dados são armazenados ou se tornam
disponíveis para utilização
 Em memórias de acesso não-aleatório:
− Tempo gasto para posicionar o mecanismo de
leitura-escrita na posição desejada

9
Tempo de Ciclo (TC)
 Aplicável principalmente às memórias de
acesso aleatório
 Compreende o tempo de acesso e o tempo
adicional requerido antes que um segundo
acesso possa ser iniciado
 O tempo adicional é necessário para o
desaparecimento de transientes nas linhas de
sinal

10
Taxa de Transferência (R)
 Taxa na qual os dados podem ser transferidos
de 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
− TA é o tempo de acesso médio

11
Tecnologia de Semicondutores
Tipo de memória Categoria Mecanismo de Mecanismo de Volatilidade
apagamento escrita

Memória de acesso Memória de Eletricamente,


leitura e de em Eletricamente Volátil
aleatório (RAM)
escrita nível de Byte
Memória apenas de Máscaras
leitura (ROM) Memória Não é
apenas de possível
ROM Programável leitura
(PROM)

PROM Apagável Luz UV, em nível


(EPROM) de pastilha Não-volátil

Memória Eletricamente, em Eletricamente


Memória Flash principalmente nível de blocos
de leitura
PROM Eletricamente, em
Eletricamente nível de Bytes
Apagável (EEPROM)
12
Memórias RAM
 RAM dinâmica (DRAM)
− 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ó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, que
não pode ser alterado
 Os dados são gravados na pastilha durante o
processo de fabricação

Memória PROM
 O processo de gravação (programação) é
efetuado eletricamente, e pode ser feito pelo
fornecedor ou pelo cliente após a fabricação da
pastilha
14
Memória EPROM
 Pode ser apagada por um processo óptico
(exposição à radiação UV)
 O processo de apagamento pode levar 20 min,
e deve ser feito integralmente em todas as
células de memória antes da gravação de
novos dados
 A gravação e leitura de dados é feita
eletricamente

15
Memória EEPROM
 Tanto a escrita como o apagamento são feitos
eletricamente
 Não há necessidade de apagamento integral;
apenas o Byte ou os Bytes endereçados são
atualizados
 A operação de escrita leva um tempo
consideravelmente maior que a de leitura; da
ordem de centenas de microsegundos por Byte
 É mais cara e menos densa que a EPROM
 Combina não-volatilidade e flexibilidade
16
Memória Flash
 Apresenta características intermediárias entre a
EPROM 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
− Possui três terminais funcionais:

Controle Controle

Dados
de
Seleção Entrada Seleção Estado
Célula Célula

(a) Escrita (a) Leitura


18
Exemplos de Arranjos Físicos das Células

 Exemplo #01: arranjo físico é igual ao arranjo


lógico das palavras na memória – tal como é
percebido pela CPU

EPROM de 8 Mbits 8 bits


(ou 1 MB)

P0
P1

P2
1M Palavras P3
P4
...

P220 - 1 19
Exemplos de Arranjos Físicos das Células

 Formato da pastilha do Exemplo #01:

A19 1 32 Vcc Pino de


A16 2 31 A18 alimentação
32 pinos
1,5 cm2 A15 3 30 A17
A12 4 29 A14
A7 5 28 A13
Pinos de A6 6 27 A8 Pinos de
endereço A5 7 26 endereço
A9
A4 8 25 A11
A3 9 24 Vpp Pino de
A2 10 23 A10 programação
A1 11 22 CE Chip Enable
A0 12 21 D7
D0 13 20 D6
Pinos de Pinos de
Dados D1 14 19 D5 Dados
D2 15 18 D4
Pino de 20
Terra Vss 16 17 D3
Exemplos de Arranjos Físicos das Células

 Exemplo #02: arranjo em matrizes quadradas


contendo grupos de células
DRAM de 2048 colunas
16 Mbits (ou 2 MB)
Decodificador ...

...
de linha

2048
... ... linhas

...

...

...
11
...

11
MUX 4
Decodificador de coluna
11 21
Exemplos de Arranjos Físicos das Células

 Formato da pastilha do Exemplo #02:


16 pinos

Pino de
Alimentação Vcc 1 24 Vss Pino de Terra
Pinos de D0 2 23 D3 Pinos de
Dados D1 3 22 D2 Dados
Write Enable WE 4 21 CAS Column Address
Row Address RAS 5 Strobe
20 OE
Strobe NC 6 Output
19 A9
7 18 A8 Enable
Number of Chip A10
A0 8 17 A7 Pinos de
Pinos de A1 9 16 A6 endereço
endereço A2 10 15 A5
Pino de A3 11 14 A4
Alimentação Vcc 12 13 Vss Pino de Terra
22
Exemplos de Arranjos Físicos das Células

 O arranjo em matrizes quadradas de grupos de


células possibilita pastilhas mais densas
 A adição de uma linha de endereço faz com
que se a quantidade de linhas e colunas da
matriz seja duplicada
 A capacidade total de memória da pastilha é,
portanto, quadruplicada

23
Organização em Módulos
Pastilha #01
512 colunas
256 K x 1 bit
...
...
DRAM de
... 512
linhas 256 KB

...
...
...

...
MAR ...
MBR
Decodificador
de Coluna 1
9 ... 2

...

...
512 colunas
...
9 ... ... 7
... 512
linhas 8
...
...
...

... ...
Decodificador
de Coluna

Pastilha #08 24
Organização em Módulos

A1 B1 C1 D1
1/512

1/512

1/512

1/512
MAR
CE 1/512 1/512 1/512 1/512
CE CE CE MBR
9 1
A2 B2 C2 D2 2
1/512

1/512

1/512

1/512
CE 1/512 1/512 1/512 1/512
CE CE CE

...
9

8
2 A8 B8 C8 D8
1/512

1/512

1/512

1/512
CE 1/512 CE 1/512 CE 1/512 CE 1/512

Grupo A
Habilitação Grupo B DRAM de 1 MB
de Grupo Grupo C
Grupo D 25
Formas de Encapsulamento
 Módulos DIP (Dual Inline Package)
 Usados em PCs
antigos (XTs, 286s e os
primeiros 386)
 Soldados diretamente
na placa mãe ou
encaixados
individualmente em
soquetes disponíveis
na 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 vias
8 MB

− 72 vias
8 MB

27
Formas de Encapsulamento
 Módulos SIMM de 30 vias:

 Observações:
− Os µPs 486 e 386DX acessavam a memória usando
palavras de 32 bits
− O µP 386SX acessava a memória usando palavras de 16
bits
28
Formas de Encapsulamento
 Módulos SIMM de 72 vias:

 Observações:
− Tanto o µP 486 quanto o Pentium trabalham internamente
com palavras de 32 bits
− No entanto, o µP Pentium acessa a memória usando
palavras 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 palavras


de 64 bits

30
Formas de Encapsulamento
 Comparação entre os tamanhos:

Módulo
DIMM

Módulo SIMM
de 72 vias

Módulo SIMM
de 30 vias

31
Detecção e Correção de Erros
 Todo sistema de memória baseado em
semicondutor 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 principal
modernos inclui uma lógica de detecção e
correção de erros

32
Detecção e Correção de Erros
 Um código de correção é caracterizado pelo
número de bits incorretos que ele é capaz de
detectar e corrigir em uma única palavra
 O código de correção de erros mais simples é o
Código de Hamming
 Esse código foi projetado por Richard Hamming
na Bell Labs

33
Detecção e Correção de Erros

Visualização do Código
de Hamming
 Palavras de 4 bits
Diagramas de
Venn

34
Detecção e Correção de Erros
Sinal de erro

Saída de dados M
Correção

Entrada de dados M M K'


f
K Memória K Comparação
f

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)

M K'
f
Memória K Comparação

K + K' = Palavra
Síndrome

 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 dos
bits de teste – nenhuma correção é necessária
 Se a Palavra Síndrome contiver mais de um bit 1, o valor numérico da
Palavra 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 de
dados ou dos K bits de teste, deve-se ter:

 Aumento no tamanho da Palavra com a correção de erros:

Bits de dados Bits de teste Aumento (%)

8 4 50,00
16 5 31,25
32 6 18,75
64 7 10,94
128 8 6,25
256 9 3,52 37
Projeto de um Código de Correção de
Erro Único (SEC)
Posição Posição Bits de Bits de
do bit10 do bit2 Teste Dados

12 1100 M8
11 1011 M7 Cálculo dos Bits de Teste:

10 1010 M6 C1 = M1 + M2 + M4 + M5 + M7
9 1001 M5 C2 = M1 + M3 + M4 + M6 + M7
8 1000 C8
C4 = M2 + M3 + M4 + M8
7 0111 M4
6 0110 M3 C8 = M5 + M6 + M7 + M8
5 0101 M2
4 0100 C4
3 0011 M1
2 0010 C2
1 0001 C1 38
Projeto de um Código de Correção de
Erro Único (SEC)
 Exemplo:
M8 M7 M6 M5 M4 M3 M2 M1
0 0 1 1 1 0 0 1

 Cálculo dos Bits de Teste:


C1 = M1 + M2 + M4 + M5 + M7 = 1 + 0 + 1 + 1 + 0 = 1

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 1 1 1 0 1

 Cálculo dos Bits de Teste:


C1 = M1 + M2 + M4 + M5 + M7 = 1 + 0 + 1 + 1 + 0 = 1

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)!

12 11 10 9 8 7 6 5 4 3 2 1
M8 M7 M6 M5 C8 M4 M3 M2 C4 M1 C2 C1
0 0 1 1 0 1 1 0 1 1 1 1

41
Memória Cache
 Todos os sistemas de memória atuais
contemplam uma memória cache
Transferência Transferência
de Palavras de Blocos

CPU Memória Memória


Cache Principal

 Uma memória principal grande e lenta é


combinada com uma memória cache grande e
rápida
42
Memória Cache
 Em qualquer instante, um subconjunto dos
blocos da memória principal reside na cache
Tamanho
Bloco da
Rótulo Palavra
0
0 1 Blocos
1 2 (K palavras)
2 3
3
K-1
...

...
C-1
Tamanho do Bloco
(K palavras)
n
M = 2 / K Blocos Bloco
C linhas 43
2n - 1
C <<< M
Memória Cache
Área de armazenamento
temporário de endereço

Endereço

Barramento do sistema
Controle Controle
Processador Memória
Cache

Dados

Área de armazenamento
temporário de dados 44
INÍCIO

Operação de Leitura em Memória Cache


Recebe endereço
RA da CPU

O Bloco que contém Não Efetua acesso à memória


o endereço RA está principal para obter o
na memória cache? bloco que contém RA

Aloca linha da cache


Sim para o bloco da
memória principal

Obtém o conteúdo
da palavra no endereço
RA e entrega para a CPU

Carrega o bloco da Entrega a palavra


memória principal na em RA para a CPU
linha da cache

FIM
45
Elementos de Projeto de Memórias
Cache
 Tamanho  Política de escrita
 Função de − Write-through
mapeamento − Write-back
− Direto − Write-once
− Associativo  Tamanho da linha
− Associativo por  Número de Caches
conjuntos
− Um ou dois níveis
 Algoritmo de
substitução − Unificada ou separada
− LRU
− FIFO
− LFU 46
− Aleatório
Tamanho da Cache
 Impossível determinar tamanho ideal
− Deve ser grande para que o tempo médio de
acesso à memória total seja próximo ao tempo de
acesso da memória cache
− Deve ser pequena para que o custo total por bit
seja 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 –
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
número de blocos da memória principal
 Técnicas utilizadas
− Mapeamento Direto
− Mapeamento Associativo
− Mapeamento Associativo por Conjuntos

48
Suposições
 Memória principal com 16 MB (224 B)
 Cada Byte é endereçável diretamente 1 Byte
 Memória principal pode ser vista como

4M (222) blocos de 4 B 000000 P0


000001 P1
Bloco 0
 Memória cache de 64 KB, organizada 000002 P2
000003 P3
em 16 K (214) linhas de 4 B 000004 P4
 Os dados são transferidos da memória 000005 P5
P6
Bloco 1
000006
principal para a cache em blocos de 4B 000007 P7
000008 P8
000009 P9
P10
Bloco 2
Bloco (4 Bytes) 00000A
00000B P11
00000C P12
0000 00000D P13
P14
Bloco 3
0001 00000E
0002 00000F P15

...
...

...
...

FFFFFC P(224 - 4)
FFFFFD P(224 - 3)
Bloco 222 - 1
FFFFFE P(224 - 2)

3FFF FFFFFF P(224 - 1)

49
Memória cache Memória principal
Mapeamento Direto
 Cada bloco da memória principal é mapeado
em 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
 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 da
memória principal é assim mapeado em uma
linha da memória cache:

Linha da memória cache Blocos da memória principal


mapeados na linha

0 0, m, 2m, ..., 2S - m

1 1, m + 1, 2m + 1, ..., 2S - m + 1

m-1 m – 1, 2m – 1, 3m – 1, ..., 2S -1
51
Mapeamento Direto
 Cálculo dos blocos:
− 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-
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 (2S-1) = Bloco (222-1) = Bloco (400000-1) = Bloco
3FFFFF = 000000 + 4 x 3FFFFF = FFFFFC

53
Mapeamento Direto
 Substituindo os valores, teremos:

Linha da memória cache Blocos da memória principal


mapeados na linha

0 000000, 010000, ..., FF0000

1 000004, 010004, ..., FF0004

214 - 1 00FFFC, 01FFFC, ..., FFFFFC

54
Mapeamento Direto
 Interpretação do endereço da memória
principal:
Identificação de um dentre 2S blocos

s w

Rótulo Linha da cache Palavra

s-r r

 No nosso caso:
22 2

Rótulo Linha da cache Palavra

8 14 55
Linha Exemplo de
+
palavra Dados Mapeamento Direto
0000 13579246
Rótulo 0004
00

FFF8
FFFC
Número
...
Rótulo Dados de linha
0000 77777777 00 13579246 0000
0004 11235813 16 11235813 0001
16 339C FEDCBA98 16 FEDCBA98 0CE7
FF 11223344 3FFE
FFFC 12345678 16 12345678 3FFF
...

8 32 bits
0000 bits
0004
FF

FFF8 11223344
FFFC 24682468
32 bits 56
Exemplo de Leitura no Mapeamento Direto
3'

Rótulo Linha Palavra


P0
P1
B0
s-r r w P2
P3

1 3

...
2

4
3
Comparação
P4j
Acerto na cache P(4j+1)
P(4j+2)
Bj
3' P(4j+3)
4'

Falha na cache

57
Mapeamento Associativo
 Vantagem:
− Oferece maior flexibilidade para escolha do bloco a
ser substituído quando um novo bloco é trazido
para a memória cache
 Desvantagem:
− Complexidade do conjunto de circuitos necessários
para a comparação simultânea dos rótulos de todas
as linhas da memória cache

58
Mapeamento Direto
 Vantagens:
− Simplicidade
− Custo baixo de implementação
 Desvantagem:
− Se um programa fizer repetidas referências a
palavras em dois blocos distintos, mapeados em
uma mesma linha, esses blocos serão trocados
continuamente na cache – e a taxa de acertos será
baixa

59
Mapeamento Associativo
 Permite que cada bloco da memória principal
seja carregado em qualquer linha da memória
cache
 Interpretação do endereço da memória
principal: S
Identificação de um dentre 2 blocos

s w

Rótulo Palavra

 No nosso caso:
22 2
Rótulo Palavra
60
Mapeamento Associativo
 O rótulo corresponde aos 22 bits mais
significativos do endereço
 Exemplos de cálculo de rótulos
− 000000 -> 000000
− 16339C -> 058CE7
− FFFFF4 -> 3FFFFD
− FFFFF8 -> 3FFFFE
− FFFFFC -> 3FFFFF

61
Exemplo de
Endereço Dados Mapeamento Associativo
000000 13579246
000004

FFF8
FFFC
...
Rótulo Dados Número
de linha
3FFFFE 13579246 0000
058CE7 FEDCBA98 0001
163398
16339C FEDCBA98 3FFFFD 33333333
1633A0 3FFD
000000 11223344 3FFE
3FFFFF 12345678 3FFF
...

22 bits 32 bits

FFFFF4 33333333
FFFFF8 11223344
FFFFFC 24682468
32 bits 62
Exemplo de Leitura no Mapeamento Associativo
2'

Rótulo Palavra P0
P1
B0
s w P2
P3

2
1

...
3
2
Comparação
P4j
Acerto na cache P(4j+1)
P(4j+2) Bj
3' P(4j+3)
2'

Falha na cache
63
Mapeamento Associativo por
Conjuntos (de k linhas)
 Combina as vantagens do mapeamento direto
e do mapeamento associativo e diminui suas
desvantagens
 A memória cache é dividida em v conjuntos,
cada qual com k linhas

m=vxk
i = j módulo v
Em que:
 i : número do conjunto da memória cache
 j : número do bloco da memória principal
64
 m : número de linhas da memória cache
Mapeamento Associativo por
Conjuntos (de k linhas)
 Interpretação do endereço da memória
principal: Identificação de um dentre 2S blocos

s w

Rótulo Conjunto Palavra

s-d d

 Considerando em nosso caso conjuntos de


duas linhas, temos:
22 2

Rótulo Conjunto Palavra

9 13
65
Mapeamento Associativo por
Conjuntos (de k linhas)
 Segundo i = j módulo v, cada bloco da memória
principal é assim mapeado em um conjunto da
memória cache:

Conjunto da memória cache Blocos da memória principal


mapeados no conjunto

0 0, v, 2v, ..., 2S - v

1 1, v + 1, 2v + 1, ..., 2S - v + 1

v-1 v – 1, 2v – 1, 3v – 1, ..., 2S -1
66
Mapeamento Associativo por
Conjuntos (de k linhas)
 Cálculo dos blocos:
− 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-
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 (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:

Conjunto da memória cache Blocos da memória principal


mapeados no conjunto

0 000000, 008000, ..., FF8000

1 000004, 008004, ..., FF8004

213 - 1 007FFC, 00FFFC, ..., FFFFFC

69
Conjunto
+
Exemplo de Mapeamento
palavra Dados Associativo por Conjuntos
0000 13579246
Rótulo 0004
000

7FF8
7FFC
Número Rótulo Dados
...
Rótulo Dados de conj.
0000 77777777 000 13579246 0000 001 77777777
0004 11235813 001 11235813 0001
02C 339C FEDCBA98 02C FEDCBA98 0CE7
1FF 11223344 1FFE
7FFC 12345678 001 12345678 1FFF 1FF 24682468
...

9 32 bits 9 32 bits
0000 bits bits
0004
1FF

FFF8 11223344
FFFC 24682468
32 bits 70
Exemplo de Leitura no Mapeamento
Associativo por Conjuntos (de k linhas)
3'

Rótulo Conjunto Palavra


P0
P1
B0
s-d d w P2
P3

2
2 C0

...
C1

C2

4
3
Comparação
C(v-1) P4j
Acerto na cache P(4j+1)
P(4j+2) Bj
P(4j+3)
4'
3'
Falha na cache

71
Mapeamento Associativo por
Conjuntos (de k linhas)
 Casos extremos:
− 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 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ído
 No mapeamento direto, não há alternativa –
cada bloco é mapeado em uma única linha
 Para os mapeamentos associativo e
associativo por conjuntos, é necessário um
algoritmo de substituição
 Recomenda-se a implementação em HW, por
motivo de desempenho

73
Algoritmos de Substituição
 Algoritmos disponíveis:
− 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
 Apresenta um desempenho apenas levemente inferior
aos demais

74
Políticas de Substituição
 Antes que um bloco residente na memória
possa ser substituído, é necessário verificar se
ele foi alterado na memória cache
 Se isso não ocorreu, então o novo bloco pode
ser escrito sobre o bloco antigo
 Caso contrário, então a memória principal deve
ser atualizada
 Problema encontrado:
− A memória principal pode ser utilizada tanto por
outros processadores quanto por dispositivos de
E/S
75
Políticas de Substituição
 Escrita Direta (write through)
− 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
− 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
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 atualizado
pela primeira vez (write through)
− 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 na
cache (write back)
78
Tamanho da Linha
 Tamanho da linha = tamanho do bloco
 À 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
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:
− 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
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 DDR2

81
Memórias Regulares
 Foram o primeiro tipo de memória usado em micros
PC
 Acesso era feito enviando primeiro o endereço RAS e
em seguida o endereço CAS, da forma mais simples
possível
 Eram fabricadas inicialmente com tempos de acesso
de 150 ns; depois foram fabricadas com tempos de
acesso de 120, 100 e 80 ns, para operação com o 286
 Utilizadas em computadores XT, 286 e em alguns dos
primeiros 386
 Eram encontradas apenas sob a forma de módulos
DIP
82
Memórias Regulares

83
Memórias FPM (Fast Page Mode)
 Transferem dados em rajadas de 4 palavras em uma
mesma linha, ou página
 Baseadas na idéia de que os dados são gravados
seqüencialmente na memória
 Encontradas na forma de pentes SIMM de 30/72 vias
e com tempos de acesso de 80, 70 e 60 ns
 Foram usadas em computadores 386, 486 e nos
primeiros Pentium
 Tempos de acesso podem também ser dados em
termos 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 de


leitura só pode ser
iniciada quando a
operação anterior é
encerrada

Pequeno atraso imposto

86
Memórias EDO
(Extended Data Output)
 Criadas em 1994
 Caracterizadas pela existência de um pipeline
interno à memória
− Uma nova leitura pode ser iniciada sem que a
leitura atual tenha terminado
 São mais rápidas que as memórias FPM
− 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 72
vias
87
Memórias EDO
(Extended Data Output)

88
Memórias SDRAM
(Synchronous DRAM)
 As memórias anteriores trabalham em seus
próprios ritmos, independentemente do clock
da placa mãe
− Uma FPM projetada para funcionar em placas para
µP 386 e 486 (25/33 MHz) funciona perfeitamente
em placas para µP Pentium (66 MHz)
 Por isso, elas são tidas como memórias
assíncronas
 Todas as ações em uma memória SDRAM
estão sincronizadas com a borda de subida do
sinal de clock da placa mãe
89
Memórias SDRAM
(Synchronous DRAM)
 Estrutura:
SDRAM de 4M x 4 bits = 2 MB

CKE Buffer

Decodificador
CLK de

Decodificador
de Linha
Lógica Entrada
CS# Buffer

de Linha
de 2048x1024x4 DQ0
WE# Controle de Linha ...
2048x1024x4 DQ3
CAS# Registrador
RAS# de Modo Buffer
de
Saída

Lógica de
Controle Decodificador
de Banco Decodificador
de Coluna
de Coluna

Buffer
de
Coluna

90
Memórias SDRAM
(Synchronous DRAM)
 Configuração através do Registrador de Modo
 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)
BA A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0

M11 M10 M9 M8 M7 M6 M5 M4 M3 M2 M1 M0
Reservado WB Código Latência BT Tamanho
de Op. do CAS da rajada

Tamanho da rajada
M2 M1 M0
M3 = 0 M3 = 1

M3 Tipo da rajada 000 1 1

0 Seqüencial 001 2 2

1 Intercalada 010 4 4
011 8 8
100 Reservado Reservado
101 Reservado Reservado
110 Reservado Reservado
92
111 Pág.completa Reservado
Memórias SDRAM
(Synchronous DRAM)
BA A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0

M11 M10 M9 M8 M7 M6 M5 M4 M3 M2 M1 M0
Reservado WB Código Latência BT Tamanho
de Op. do CAS da rajada

M9 Modo de escrita em rajada M6 M5 M4 Latência do CAS


0 Tamanho de rajada programado 000 Reservado
1 Escrita em uma só posição 001 1
010 2
011 3
100 Reservado
M8 M7 M6-M0 Modo de operação 101 Reservado
00 definido Normal 110 Reservado
- - Reservados 111 Reservado
93
Memórias SDRAM
(Synchronous DRAM)
 Configuração do Registrador de Modo se dá
atravé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 durante
estados 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
• Comando ACTIVE
CS#

RAS#

CAS#

Don’t care WE#

Endereço
A0-A10 da Linha

Endereço 95
BA do Banco
Memórias SDRAM
(Synchronous DRAM)
 Outros comandos (cont.):
− PRECHARGE
 Desativa uma linha aberta em um banco
− BURST TERMINATE
 Trunca uma rajada em uma operação de leitura ou
escrita
− AUTO REFRESH
 Regenera os dados
− SELF REFRESH
 Regenera os dados na ausência do clock
− SDRAM provê seu próprio sinal de clock interno
− READ/WRITE
96
 Leitura/escrita de dados
Memórias
CLK
SDRAM
(Synchronous CKE
DRAM)
CS#
• Comando READ
RAS#

CAS#

WE#

Endereço
A0-A9 da Coluna
Don’t care
Habilitar/des
A10 abilitar auto
precharge

Endereço
BA do Banco

97
Memórias SDRAM
(Synchronous DRAM)
CLK

COMANDOS READ NOP NOP

DQ DADOS DADOS

Don’t care Indefinido

 Comando READ com Latência do CAS (CL) = 1


98
Memórias SDRAM
(Synchronous DRAM)
CLK

COMANDOS READ NOP NOP NOP

DQ DADOS DADOS

Don’t care Indefinido

 Comando READ com Latência do CAS (CL) = 2


99
Memórias SDRAM
(Synchronous DRAM)
CLK

COMANDOS READ NOP NOP NOP NOP

DQ DADOS DADOS

Don’t care Indefinido

 Comando READ com Latência do CAS (CL) = 3


100
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
− 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
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ção
propriamente dita
− CMD: define o tempo compreendido entre a seleção de
um banco (CS – Chip Select) e a emissão de um
comando ACTIVE
102
Parâmetros de Especificação

CLK

READ/
COMANDOS ACTIVE NOP NOP WRITE NOP

tRCD
Don’t care

 Visualização do parâmetro tRCD

103
Parâmetros de Especificação
CLK

tRP
PRE
COMANDOS READ NOP CHARGE NOP READ

ENDEREÇOS BANCO a,
COL n
BANCO a,
COL m

DQ DADOS DADOS

Don’t care Indefinido

 Visualização do parâmetro tRP 104


Parâmetros de Especificação
 Exemplo: 2-2-2-5-T1
− CL = 2 (ciclos)
− tRCD = 2 (ciclos)
− tRP = 2 (ciclos)
− tRAS = 5 (ciclos)
− CMD = 1 (ciclo)
 Parâmetros gravados
no módulo
 Podem ser mudados
via SETUP da BIOS
− Configuração do
105
Registrador de Modo
Parâmetros de Especificação
 Memórias SDRAM são especificadas também
de acordo com a freqüência nominal do
barramento, 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 do clock
 Os módulos DIMM DDR e SDRAM são muito
semelhantes, diferenciando-se em:
 SDRAM
 Módulo tem 168 terminais

 Chanfro duplo

 DDR
 Módulo tem 184 terminais

 Chanfro único
107
Memórias DDR
CLK

COMANDOS READ NOP NOP NOP NOP

DQ DADOS DADOS DADOS DADOS

Don’t care

 Comando READ com Latência do CAS = 2


− Valores usuais para CL: 2, 2.5 e 3 108
Memórias DDR2
 Evolução natural das memórias DDR
 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:
 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:
 DDR: Arranjos TSOP (Thin Small-Output Package)
 DDR2: Arranjos BGA (Ball Grid Array)

111
Memórias DDR2
 Diferenças entre DDR2 e DDR (cont.):
− Latência do CAS:
 Valores usuais:
− DDR: 2, 2.5 e 3
− DDR2: 3, 4 e 5
− Memórias DDR2 apresentam uma latência
adicional, denominada AL (Additional Latency)
− A latência total é obtida somando-se o AL ao valor
de CL
− Valor de AL é encontrado na documentação técnica
da memória

112
Parâmetros de Especificação
 DDR(2)xxx/PC(2)yyyy
− 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
 Parâmetros gravados no módulo

113

Вам также может понравиться