Sistemas de memória
João Canas Ferreira
Arquitectura de Computadores
FEUP/LEIC
Contém figuras de “Computer Organization and Design” (cap. 7, Ap. B), D. Patterson & J. Hennessey, 3ª. ed., Elsevier
Tópicos
1
Memórias
2
Sistemas de memória: aspectos gerais
Descodificação de endereços
Hierarquia de memória
3
Memórias cache
Princípios de funcionamento de memórias cache
Desempenho de memórias cache
4
Memória virtual
ArqComp: Sistemas de memória
2/78
2006-05-25
1
Memórias
2
Sistemas de memória: aspectos gerais
Descodificação de endereços
Hierarquia de memória
3
Memórias cache
Princípios de funcionamento de memórias cache
Desempenho de memórias cache
4
Memória virtual
ArqComp: Sistemas de memória
3/78
2006-05-25
Taxonomia
+ Registos e bancos de registos permitem guardar pequenas
quantidades de dados. Para maiores quantidades, usam-se
memórias de acesso directo.
+ RAM = random access memory (memória de acesso aleatório?):
permitem leitura e escrita.
+ ROM = read-only memory: pemitem apenas leitura.
+ A maior parte das memórias RAM perde os dados quando é
desligada a alimentação (memória volátil). Excepções:
I (E)EPROM: (Electrically) erasable programmable ROM
I memórias FLASH.
+ Dois tipos de memórias RAM voláteis:
I SRAM: memória estática (cada célula de memória é um
“flip-flop”);
I DRAM: memória dinâmica (cada célula deve ser actualizada
periodicamente).
ArqComp: Sistemas de memória
4/78
2006-05-25
Circuitos de memória: organização conceptual
N-1
endereço
(linha)
2
1
0
dados
(M bits)
M bits
+ Para P linhas de endereço: N = 2P
+ Abreviaturas: 210 = 1024 = 1 K, 220 = 1048576 = 1 M
+ O porto de dados é bidireccional: é preciso especificar o tipo de
acesso (leitura ou escrita).
+ M é a largura da memória.
ArqComp: Sistemas de memória
5/78
2006-05-25
Memórias estáticas
As memórias estáticas são as que se aproximam mais do modelo
conceptual de funcionamento.
Address
21
Chip select
SRAM
2M x 16
Output enable
15
Dout[15-0]
Write enable
Din[15-0]
16
+ Para aceder à memória:
I activar o circuito: chip select (CS) activo
I especificar o tipo de acesso: activar output enable (leitura)
OU write enable (escrita).
ArqComp: Sistemas de memória
6/78
2006-05-25
Memórias estáticas: acessos
+ Tempo de acesso para leitura: intervalo entre o instante em que
output enable e endereço estão “correctos” e o aparecimento de
dados na saída.
+ Valores típicos:
I rápidas: 2–4 ns
I típicas: 8–20 ns (cerca de 32 milhões de bits)
I de baixo consumo: 5–10 vezes mais lentas
+ Durante esse tempo, um processador que execute uma instrução
por ciclo e use um relógio de 2 GHz, executa:
I 4–8 instruções
I 16–40 instruções
+ Tempo de acesso para escrita: é preciso respeitar tempos de
setup e hold para endereços e dados. Para além disso, o sinal de
write enable é sensível ao nível (não ao flanco) e deve ter uma
duração mínima para que a escrita se realize.
+ O tempo de escrita é superior ao tempo de leitura.
ArqComp: Sistemas de memória
7/78
2006-05-25
Memórias estáticas: circuito de saída
Buffer tristate (3 estados: 0, 1,
desligado)
Sel = 1
Sel
Out
In
Out
In
Sel = 0
Out
In
Solução: utilizar buffer tristate, cuja saída
pode ter 3 estados (0, 1 ou
alta-impedância).
Circuito de saída:
Select 0
Data 0
Enable
In
Select 1
Data 1
Select 2
Data 2
No estado de alta-impedância, a saída do
circuito está desligada.
Out
Enable
In
Select 3
Data 3
Out
Enable
In
ArqComp: Sistemas de memória
Output
O estado da saída é determinado por uma
entrada de controlo: select.
Out
Enable
In
Ao contrário de um banco de registos, o
circuito de saída não pode ser baseado
num multiplexador: uma SRAM 64K x 1
precisaria de ter um multiplexador
65536-para-1.
Out
Todas as saídas são ligadas em paralelo.
Não pode existir mais que uma saída
activa (i.e., não em alta-impedância) em
cada instante.
8/78
2006-05-25
Estrutura básica de uma memória estática
Din[1]
Din[1]
D
C
Write enable
D
D
latch
Q
C
Enable
D
latch
Q
Enable
0
2-to-4
decoder
D
C
D
D
latch
Q
C
Enable
D
latch
Q
Enable
1
D
C
Address
D
D
latch
Q
C
Enable
D
latch
Q
Enable
SRAM 4x2
2
D
C
D
D
latch
Q
C
Enable
D
latch
Q
Enable
3
Dout[1]
ArqComp: Sistemas de memória
Dout[0]
9/78
2006-05-25
Memórias estáticas organizadas por bancos
Para limitar o tamanho do descodificador de endereços:
12
Address
[21–10]
4K x
4K x
4K x
4K x
4K x
4K x
4K x
4K x
1024
1024
1024
1024
1024
1024
1024
1024
SRAM
SRAM
SRAM
SRAM
SRAM
SRAM
SRAM
SRAM
Mux
Mux
Mux
Mux
Mux
Mux
Mux
Mux
Dout7
Dout6
Dout5
Dout4
Dout3
Dout2
Dout1
Dout0
4096
to
4096
decoder
Address
1024
[9–0]
+ Organização típica de uma memória 4Mx8 como uma colecção de
blocos de memória 4Kx1024.
+ Os blocos MUX são realizados por buffers de três estados.
ArqComp: Sistemas de memória
10/78
2006-05-25
Acessos a uma memória estática
Duas escritas e uma leitura:
Escrita
Escrita
Leitura
OE
tempo mínimo para escrita
WE
End1
Endereço
Dado1
Dados
End2
End1
Dado2
Dado1
Leitura
valor escrito
tempo de acesso
+ OE identifica operação de leitura; endereços devem estar
estáveis antes de o sinal ser activado.
ArqComp: Sistemas de memória
11/78
2006-05-25
Memória dinâmica (DRAM)
+ Valor guardado como carga num condensador.
+ O acesso é feito através de um transístor a operar como
interruptor.
+ Consequência: maior densidade (bit/mm2 ), logo circuitos de
maior capacidade e menor custo.
+ Comparação: SRAM requer 4 a 6 transístores por bit armazenado.
+ Acesso a DRAM é feito em duas etapas:
1. selecção de coluna (usando uma parte do endereço);
2. selecção de linha (usando os restantes bits do endereço).
+ DRAM é mais lenta que SRAM. Valor típico: 2 Gb (512MX4),
tempo de acesso 55 ns.
+ Condensador vai perdendo a carga e deve ser periodicamente
“refrescado”: leitura seguida de escrita (circuito dinâmico).
Refrescamento “consome” 1% a 2% dos acessos.
ArqComp: Sistemas de memória
12/78
2006-05-25
Célula de uma memória dinâmica
Selecção de linha (word line)
Transístor
(interruptor)
Condensador
(armazena carga
eléctrica)
Linha de dados (bit line)
+ Escrita: Valor a armazenar é colocado na linha de bit; wordline
é activada para fechar interruptor.
+ Leitura: Linha de bit é pré-carregada a meia escala; wordline é
activada para fechar interruptor; a variação de tensão na linha
de bit é amplificada para obter valor final.
ArqComp: Sistemas de memória
13/78
2006-05-25
Esquema geral do acesso a uma memória dinâmica
2048 x 2048
Descod.
de linhas
matriz
11-to-2048
Endereço[10-0]
2048 trincos
Mux
Dout
+ Endereço: 11+11 bits.
+ Exemplo: DRAM 4Mx1: 11 bits seleccionam a linha, que é
“copiada” para 2048 trincos.
+ Multiplexer selecciona 1 de 2048 entradas.
ArqComp: Sistemas de memória
14/78
2006-05-25
DRAM: Leitura
Exemplo simplificado de leitura (CE=1, OE=0, WE=0).
RAS = Row Address Strobe (endereço especifica linha)
CAS = Column Address Strobe (endereço especifica coluna)
RAS
CAS
Endereço
End. Linha
x
End. Coluna
Dados
Dados lidos
ArqComp: Sistemas de memória
15/78
2006-05-25
DRAM: Escrita
Exemplo simplificado de escrita (CE=1, OE=1):
RAS
CAS
existe uma largura mínima para este impulso
WE
Endereço
End. Linha
Dados
ArqComp: Sistemas de memória
End. Coluna
x
Dados a escrever
16/78
2006-05-25
Módulos de memória: DIMM
+ CIs individuais podem ser agrupados em módulos. Ex: módulo
32Mx64 (256 MB) pode usar 16 componentes 32Mx4.
a[24:0]
Ram0
Ram1
Ram2
Ram14
Ram15
32Mx4
d [3:0]
4
4
4
4
4
d [7:4]
d[63:0]
d [11:8]
d [59:56]
d[63:60]
ArqComp: Sistemas de memória
17/78
1
Memórias
2
Sistemas de memória: aspectos gerais
Descodificação de endereços
Hierarquia de memória
3
Memórias cache
Princípios de funcionamento de memórias cache
Desempenho de memórias cache
4
Memória virtual
ArqComp: Sistemas de memória
18/78
2006-05-25
2006-05-25
1
Memórias
2
Sistemas de memória: aspectos gerais
Descodificação de endereços
Hierarquia de memória
3
Memórias cache
Princípios de funcionamento de memórias cache
Desempenho de memórias cache
4
Memória virtual
ArqComp: Sistemas de memória
19/78
2006-05-25
Organização da memória de um computador
+ A memória física de um computador é geralmente composta por
vários módulos (circuitos integrados, DIMM, etc.) por forma a
ser possível obter maiores capacidades de armazenamento.
+ Para além dos módulos de memória é necessário ter um circuito
de descodificação de endereços que selecciona quais os módulos
activos durante um dado acesso (com base no endereço
apresentado pelo CPU).
+ Organização típica: os bits menos significativos são ligados
directamente aos módulos individuais, enquanto os bits mais
significativos são usados para fazer a selecção dos módulos.
+ Linhas de dados podem ser “partilhadas” por mais que um
módulo (usando buffers tristate).
+ Alguns módulos usam internamente esta abordagem.
ArqComp: Sistemas de memória
20/78
2006-05-25
Organização da memória: diagrama de blocos
N bits de endereço
End.
End.
End.
End.
N bits
End[N-1:0]
CS
CS
CS
dados
dados
CS
dados
dados
dados[ ]
M-N bits de selecção
End[M-1: N]
Apenas uma saída
activa de cada vez
Descodificador
Endereço tem M bits,
dos quais M-N podem ser
usados na descodificação
Para memórias DRAM a descodificação de endereços é mais
complicada. Apenas abordaremos o caso das memórias SRAM.
ArqComp: Sistemas de memória
21/78
2006-05-25
Regras de descodificação de endereços
+ Para que esta organização funcione bem, a descodificação de
endereços deve garantir que:
Para o conjunto de todos os módulos que partilham uma mesma
linha de dados: apenas um (ou nenhum) deve ser activado durante um acesso.
Se esta condição não for respeitada, os componentes podem ser
definitivamente danificados.
+ O mapeamento de endereços para componentes pode ser
classificado de acordo com o número de endereços que é
mapeado na mesma posição física:
I total: 1 endereço → 1 posição
I parcial: N endereços → 1 posição
+ Na descodificação total, todos os bits do endereço são “usados”:
ligados directamente aos componentes ou utilizados na selecção
dos componentes.
ArqComp: Sistemas de memória
22/78
2006-05-25
Descodificação total: exemplo
RAM1
RAM2
A[11:0]
A[12:0]
RAM1: 4Kx8
RAM2: 8Kx8
Espaço de endereçamento do CPU:
64 K, 1 byte por endereço
CS
CS
RAM 1:
1011 XXXX XXXX XXXX
Gama: B000H a BFFFH
A[15:0]
D[7:0]
D[7:0]
8 bits
8 bits
D[7:0]
8 bits
&
A[15]
A[15]
&
RAM2:
001X XXXX XXXX XXXX
Gama: 2000H a 3FFFH
A[14]
A[14]
A[13]
A[13]
A[12]
I
Endereço B712H (46866) → RAM1
I
Endereço C1E0H (49632) → nenhum circuito
ArqComp: Sistemas de memória
23/78
2006-05-25
Descodificação parcial: exemplo
RAM1: 4Kx8
RAM2: 8Kx8
Espaço de endereçamento do CPU:
64 K, 1 byte por endereço
RAM2
RAM1
A[15:0]
A[12:0]
A[11:0]
CS
CS
D[7:0]
D[7:0]
8 bits
8 bits
D[7:0]
8 bits
A[15]
&
A[14]
I
I
A[15]
&
A[13]
RAM 1:
10?? XXXX XXXX XXXX
Gamas:
8000H a 8FFFH
9000H a 9FFFH
A000H a AFFFH
B000H a BFFFH
RAM2:
0?1X XXXX XXXX XXXX
Gamas:
2000H a 3FFFH
6000H a 7FFFH
O byte 10 de RAM1 pode ser acedido através de que endereços?
800AH, 900AH, A00AH e B00AH
ArqComp: Sistemas de memória
24/78
2006-05-25
1
Memórias
2
Sistemas de memória: aspectos gerais
Descodificação de endereços
Hierarquia de memória
3
Memórias cache
Princípios de funcionamento de memórias cache
Desempenho de memórias cache
4
Memória virtual
ArqComp: Sistemas de memória
25/78
2006-05-25
Observações gerais sobre sistemas de memória
+ O custo dos diferentes tipos de memória é muito diferente:
Tecnologia
Tempo de acesso
Custo ($/GB em 2004)
SRAM
DRAM
disco magnético
0.5–5 ns
50–70 ns
5 × 106 –2 × 107 ns
$4000–$10000
$100–$200
$0.5–$2
+ Organizar o sistema de memória como uma hierarquia: memória
rápida para satisfazer a maior parte dos acessos, memória mais
lenta para armazenar os dados “menos usados”.
+ Princípio de funcionamento (para cada nível):
I Procurar a informação (dados ou instruções) num dado nível
(inicialmente no nível 1, o que está mais próximo do CPU);
I Caso a informação não exista aí, ir buscá-la ao nível seguinte e guardar
uma cópia (pode vir a ser reusada brevemente).
+ Se a maioria dos acessos for satisfeita pelo nível superior,
obtêm-se, em média, os tempos de acesso do nível superior e a
capacidade de armazenamento do nível inferior.
ArqComp: Sistemas de memória
26/78
2006-05-25
Organização hierárquica de sistemas de memória
Tecnologia
Rapidez
CPU
Tamanho
Mais rápido
Memória
Menor
Custo(€/bit)
Maior
Memória
Mais lento
ArqComp: Sistemas de memória
Memória
corrente
SRAM
DRAM
Maior
Menor
27/78
Disco magnético
2006-05-25
Níveis da hierarquia de memória
Processador
Transferências de dados
ArqComp: Sistemas de memória
28/78
2006-05-25
Hierarquia de memória: conceitos básicos
+ Uma hierarquia de memória pode ter vários níveis, mas a informação é
transferida directamente apenas entre níveis adjacentes: o nível superior é
mais rápido e tem menor capacidade que o nível inferior.
+ Bloco: quantidade mínima de informação que pode estar presente ou ausente
de um determinado nível. Tipicamente, a informação entre níveis é transferida
em blocos.
+ Acerto: acesso ao nível superior encontrou a informação pretendida (hit).
+ Falha: acesso ao nível superior não encontrou a informação (miss).
+ Taxa de acertos: (nº de acertos)/(nº de acessos).
+ Taxa de falhas: (nº de falhas)/(nº de acessos) = 1-(taxa de acertos).
+ Tempo de acerto: tempo de acesso ao nível superior, incluindo a verificação
da presença do item pretendido (hit time).
+ Penalidade de falha: tempo necessário para copiar o item pretendido do
nível inferior para o superior mais o tempo necessário para esse nível
completar o atendimento do acesso original (miss penalty).
+ Uma boa compreensão da hierarquia de memória é indispensável para a
elaboração de programas de elevado desempenho.
ArqComp: Sistemas de memória
29/78
2006-05-25
O princípio da proximidade
+ A organização hierárquica de memória dá muito bons resultados
na prática, porque as situações em que é aplicada se comportam
de acordo com o princípio da proximidade.
+ O princípio da proximidade (ou localidade):
Programas em execução acedem apenas a uma pequena parte do seu
espaço de endereçamento (durante um certo intervalo).
+ Proximidade temporal: Se um item de informação é usado,
tenderá ser usado de novo em breve.
Exemplo: instruções no corpo de um ciclo, variáveis.
+ Proximidade espacial: Quando um item de informação é usado,
itens próximos tendarão também a ser usados em breve.
Exemplo: o conjunto de variáveis de uma subrotina, os
elementos de um vector.
ArqComp: Sistemas de memória
30/78
2006-05-25
1
Memórias
2
Sistemas de memória: aspectos gerais
Descodificação de endereços
Hierarquia de memória
3
Memórias cache
Princípios de funcionamento de memórias cache
Desempenho de memórias cache
4
Memória virtual
ArqComp: Sistemas de memória
31/78
1
Memórias
2
Sistemas de memória: aspectos gerais
Descodificação de endereços
Hierarquia de memória
3
Memórias cache
Princípios de funcionamento de memórias cache
Desempenho de memórias cache
4
Memória virtual
ArqComp: Sistemas de memória
32/78
2006-05-25
2006-05-25
Princípio básico de funcionamento
X4
X4
X1
X1
X n -2
X n- 2
X n -1
X n- 1
X2
X2
Duas questões relacionadas:
1. Como determinar a posição
do item pretendido?
Xn
X3
a. Antes de referência a X
2. Como determinar a presença
do item?
X3
n
b. Depois de referência a X
n
I
Se o acesso a memória cache
não encontra item desejado,
I
item é copiado de níveis
inferiores da hierarquia.
ArqComp: Sistemas de memória
O mapeamento
endereço → posição de cache é
sempre muitos→1.
33/78
2006-05-25
Determinação da posição: mapeamento directo
I
I
Índice = (endereço do bloco) % (nº de blocos)
Se (nº de blocos) = 2b , a posição (o índice) é dada pelos b bits
menos significativos do endereço.
000
001
010
011
100
101
110
111
Cache
00001
00101
01001
01101
10001
10101
11001
11101
Memória
Exemplo: Cache: 8 posições, memória principal: 32. I = End % 8
ArqComp: Sistemas de memória
34/78
2006-05-25
Determinação da presença: etiquetas
+ Questão: Dada a posição de um item em cache, como
determinar, se é esse item que, de facto, lá se encontra?
+ Solução: Associar a cada bloco, uma etiqueta (tag) única.
+ A etiqueta pode ser constituída pelos bits mais significativos do
endereço (bits não usados na determinação da posição).
+ No exemplo anterior, a etiqueta teria 2 bits.
4
3
2
0
1
Etiqueta Nº do bloco
+ Em certas situações, tanto o bloco como a etiqueta são
inválidos. Exemplo: arranque do sistema.
+ Para detectar esta situação, cada bloco tem associado um bit de
validade. Se o seu valor for zero, então o bloco é inválido (a
posição está “vazia”).
ArqComp: Sistemas de memória
35/78
2006-05-25
Exemplo: Cache para MIPS
Endereço
31 30
13 12 11
2 10
Byte
offset
20
Acerto
10
Etiqueta
Dados
Índice
Índice
Etiqueta
Válido
Dados
0
1
2
1021
1022
1023
20
32
=
Como cada palavra (item) tem 4 bytes, os dois bits menos significativos não são
usados. (Todos os endereços são alinhados;têm os 2 bits menos significativos a 0).
ArqComp: Sistemas de memória
36/78
2006-05-25
Múltiplas palavras por bloco
+ O armazenamento de uma palavra (item) por bloco não
aproveita a proximidade espacial.
+ Para isso devem ser usados blocos com W itens (W > 1).
+ Para que seja fácil de identificar o item no interior do bloco, o
número W deve ser uma potência de 2: W = 2w .
Nesta situação, o item pode ser identificado por w bits do
endereço. A parte do endereço que especifica a posição dentro
do bloco designa-se por deslocamento (offset).
+ Interpretação de um endereço de N bits:
Etiqueta (N-b-w-x)
Índice (b)
x
Deslocamento (w)
+ Quando os itens não têm apenas um byte (a unidade de
endereçamento), existem alguns bits (menos significativos) do
endereço que não são usados no acesso a memória.
No caso do MIPS, os acessos são feitos por palavras de 4 bytes,
pelo que 2 bits não são usados.
ArqComp: Sistemas de memória
37/78
2006-05-25
Estrutura de cache com múltiplas palavras por bloco
V
Etiqueta
3
2
1
0
0
1
2
3
4
5
6
}
7
verificação
Etiqueta
Índice
Deslocamento
byte
+ Cache com b=3, w=2.
ArqComp: Sistemas de memória
38/78
2006-05-25
Tamanho de bloco vs. taxa de falhas
10%
4K
Taxa de
falhas
5%
16K
64K
0%
256K
16
32
64
256
128
Tamanho do bloco (bytes)
+ Para tamanhos de blocos crescentes, a taxa de falhas diminui.
+ Mas para tamanhos muito grandes, a taxa de falhas aumenta
outra vez!
+ A penalidade de falha tende a aumentar com a dimensão do
bloco, porque é preciso ir buscar mais dados ao nível inferior.
ArqComp: Sistemas de memória
39/78
2006-05-25
Exemplo: Intrinsity FASTMath (1)
Endereço
31
14 13
18
Hit
65
8
210
4
Tag
Byte
offset
Data
Block offset
Index
18 bits
V
512 bits
Tag
Data
256
posições
16
32
32
32
=
Mux
32
ArqComp: Sistemas de memória
40/78
2006-05-25
Exemplo: Intrinsity FASTMath (2)
+ Capacidade: 16 KB, 256 blocos de 16 palavras.
+ Etiquetas: 18 bits.
+ Índice: 8 bits (28 = 256).
+ Deslocamento (no bloco): 4 bits 24 = 16).
+ Exemplo de cálculo de posição:
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Etiqueta (18)
Índice (8)
Endereço = 0x00457544
Desl. —
(455200410 )
Etiqueta: 0000 0000 0100 0101 01|11 ... → 0x00115
Bloco: ... 01|11 0101 01|00 0100 → 0xD5
ArqComp: Sistemas de memória
41/78
(21310 )
2006-05-25
Memórias cache separadas
+ Em muitos sistemas, existem memórias cache separadas para
instruções (I-cache) e dados (D-cache).
+ A I-cache é usada no ciclo IF e apenas permite acessos de
leitura.
+ A D-cache permite leituras e escritas; é usada no tratamento de
instruções load/store.
+ A utilização de caches separadas (split cache), permite evitar
conflitos entre os estados IF e MEM.
+ Para uma mesma capacidade total, caches unificadas permitem
conseguir menores taxas de falha (mas a diferença é pequena).
+ Exemplo: (I-Cache + D-Cache) vs. U-Cache:
I Caches separadas:
I-Cache(16 KB): 0.4%, D-Cache (16 KB): 11.4%,
Média pesada: 3.24%
I Cache unificada de 32 KB: 3.18%
ArqComp: Sistemas de memória
42/78
2006-05-25
Tratamento de falhas de leitura
Quando, no processo de efectuar uma leitura da memória cache, esta detecta que o
item pretendido não existe, são executadas as seguintes operações:
1. O endereço é passado para o nível inferior.
2. A memória cache espera pela nível inferior responda com o bloco pretendido.
3. O novo bloco é colocado na cache (eventualmente usando uma posição já
ocupada), a etiqueta é guardada e o bit de validade correspondente é
colocado a 1.
4. O item pretendido é disponibilizado ao circuito que o solicitou.
Uma falha de leitura pode acontecer durante a obtenção de uma instrução (IF) ou
durante uma leitura de dados (store). Em qualquer dos casos, uma falha de cache
leva a um protelamento longo (tipicament mais de 100 ciclos).
O protelamento pode consistir simplesmente em suspender todas as operações.
I instrução: o CPU protela à espera da memória e repete o ciclo IF até obter a
instrução.
I dado: a instrução de store é protelada durante a escrita (ciclo MEM).
ArqComp: Sistemas de memória
43/78
2006-05-25
Tratamento de operações de escrita: write hit
Só existem operações de escrita em caches de dados ou em caches
unificadas.
Escrita com valor em cache write hit:
+ Operações de escrita levantam a possibilidade de o valor
existente na cache ser diferente do valor em memória principal.
+ Cache write-through: a memória cache é actualizada ao mesmo
tempo que a memória principal.
+ Cache write-back: apenas o valor em cache é actualizado. A
memória é actualizada apenas quando o bloco é substituído.
+ A política write-through deve evitar ficar à espera que a escrita
em memória principal termine. Para isso, o CPU tem uma fila
interna onde coloca os valores a escrever (designada por
write-buffer), continuando entretanto a processar instruções
(pelo menos, enquanto a fila não ficar cheia).
+ A política de write-back reduz o número de acessos ao nível
seguinte, mas é mais complexa de implementar.
ArqComp: Sistemas de memória
44/78
2006-05-25
Tratamento de operações de escrita: write miss
Escrita de valor cujo bloco está ausenta da cache write miss:
+ As duas variantes principais são:
I Política allocate-on-miss: o bloco necessário é obtido do
nível inferior, após o que tudo se passa como no caso de
um write-hit. Pode envolver a substituição de um bloco já
presente em cache.
I Política no-allocate: não alterar o conteúdo da cache e
alterar directamente a memória principal. Funciona como
se a cache não existisse para este tipo de transacções.
+ O tratamento de cache miss é logicamente independente do
tratamento de cache hit. As combinações mais usadas são:
I write-through & no-allocate: ênfase na simplicidade.
I write-back & allocate-on-miss: ênfase na redução de tráfego
para a memória principal.
ArqComp: Sistemas de memória
45/78
1
Memórias
2
Sistemas de memória: aspectos gerais
Descodificação de endereços
Hierarquia de memória
3
Memórias cache
Princípios de funcionamento de memórias cache
Desempenho de memórias cache
4
Memória virtual
ArqComp: Sistemas de memória
46/78
2006-05-25
2006-05-25
Equações básicas de desempenho de caches
+ O tempo (em ciclos) para acerto (hit) faz parte do tempo
“normal” de execução de uma instrução.
+ TCPU = (Cexec + Cprot ) × T
I TCPU : tempo de CPU
I Cexec : nº de ciclos em que CPU executou instruções
I Cprot : nº de ciclos em que o CPU protelou devido a falhas
no acesso a memória cache
+ Assumir: não existem protelamentos causados por write buffer.
+ Assumir que penalidades de falha iguais na escrita e na leitura.
+ Cprot = Nrw × tf × pf
I Nrw : número de acessos do programa (leitura e escrita)
I tf : taxa de falhas
I pf : penalidade de falhas
+ Se taxa de falhas ou penalidade for diferente para leituras e
escritas é preciso separar a equação anterior em duas parcelas.
ArqComp: Sistemas de memória
47/78
2006-05-25
Exemplos de cálculo de desempenho
I
I
I
I
I
Especificação: CPIperf =2, tfi = 0.02 para instrucões e tfd = 0.04
para dados, pf = 100, acessos a memória: 36%.
Comparar o desempenho “real” com o desempenho obtido se a
memória cache fosse perfeita.
Ci : nº de ciclos de protelamento na obtenção de instruções:
Ci = N × 0.02 × 100 = 2 × N
Cd : nº de ciclos de protelamento no acesso a dados:
Cd = N × 0.36 × 0.04 × 100 = 1.44 × N
CPIprot = CPIperf + Ci /N + Cd /N = 2 + 1.44 + 2 = 5.44
I
speedup =
I
I
N × CPIprot × T
5.44
=
= 2.72
N × CPIperf × T
2
E se CPIperf = 1 ?
CPIprot = 4.44 → speedup = 4.4
Percentagem de tempo em protelamento piora:
3.44/5.44 = 63% → 3.44/4.44 = 77%.
ArqComp: Sistemas de memória
48/78
2006-05-25
Efeito do aumento de frequência
I
Melhorar o CPI sem melhorar o subsistema de memória leva a
um aumento da percentagem de tempo perdida em
protelamentos. (cf. exemplo anterior)
I
O que acontece se a frequência de relógio aumentar, mas o
subsistema de memória permanecer igual?
I
Neste caso a penalidade de falha aumenta: pf = 200
I
Ci + Cd = 0.02 × 200 + 0.36 × 0.04 × 200 = 6.88
I
CPIrapido =2 + 6.88 = 8.88
I
speedup =
N × CPIlento × T
5.44
=
= 1.23
8.88 × 0.5
N × CPIrapido × T2
I
Se a influência da cache tivesse sido ignorada, seria speedup=2.
I
Processador que melhore simultaneamente CPI e T sofre um
impacto duplo negativo.
ArqComp: Sistemas de memória
49/78
2006-05-25
Influência do desempenho de cache
1200
2000
Radix sort
Radix sort
1600
800
Clock cycles / item
Instructions / item
1000
600
400
200
Quicksort
1200
800
400
0
Quicksort
0
4
8
16
32
64
128
256
512
1024
2048
4096
4
8
16
Nº de itens ordenados
32
64
128
256
512
1024
2048
4096
Nº de itens ordenados
Nº de instruções executadas
por item
Ciclos de relógio por item
5
Radix sort
Nº de falhas de cache
por item
Cache misses / item
4
3
2
1
Quicksort
0
4
8
16
32
64
128
256
512
1024
2048
4096
Nº de itens ordenados
ArqComp: Sistemas de memória
50/78
2006-05-25
Colocação flexível de blocos
+ Para reduzir a taxa de falhas, pode usar-se uma colocação de
blocos mais flexível. Opções: Um item pode ser colocado
1. num único bloco: mapeamento directo
2. em qualquer bloco: associatividade completa
3. em qualquer bloco de um conjunto: associatividade parcial
+ Número de blocos de um conjunto = número de vias
+ Exemplos: conjunto de 2 blocos: associatividade 2 vias (2-way)
mapeamento directo: associatividade 1-way
associatividade total (cache com M blocos): m-way
+ Índice determina apenas o conjunto, mas não o bloco:
I = End % (nº de conjuntos)
+ Para determinar onde se encontra o item, as etiquetas de todos
os blocos válidos do conjunto devem ser comparadas (em
simultâneo!): implementação mais complexa, que pode levar ao
aumento do tempo de acesso (hit time)
ArqComp: Sistemas de memória
51/78
2006-05-25
Associatividade: exemplo
Mapeamento directo
Bloco #
0 1 2 3 4 5 6 7
Dados
Etiqueta
Associatividade por conjuntos
Conj. #
1
Dados
1
Etiqueta
2
Busca
0
2
Associatividade total
3
Dados
1
Etiqueta
2
Busca
1
2
Busca
+ Resultado empírico: associatividade superior a 8 não é útil (não leva a
qualquer redução da taxa de falhas).
+ Exemplo (Intrinsity FASTMath):
Associatividade taxa de falhas (dados)
1
10.3%
2
8.6%
4
8.3%
8
8.1%
ArqComp: Sistemas de memória
52/78
2006-05-25
Exemplo: organização de cache de 8 blocos
Associatividade: 1 via
(mapeamento directo)
Block
Tag
Data
0
Associatividade: 2 vias
1
Set
2
Tag
Data
Tag
Data
0
3
1
4
2
5
3
6
7
Associatividade: 4 vias
Set
Tag
Data
Tag
Tag
Data
Data
Tag
Data
0
1
Associatividade: 8 vias (associatividade total, neste caso)
Tag
Data
Tag
Data
Tag
Data
Tag
Data
ArqComp: Sistemas de memória
Tag
Data
Tag
Data
Tag
Data
Tag
Data
53/78
2006-05-25
Localização de bloco em cache associativa
Endereço
31 30
12 11 10 9 8
3210
8
22
Etiqueta (tag)
Índice (index)
Index
0
V
Tag
Data
V
Tag
Data
V
Tag
Data
V
Tag
Data
1
2
253
254
255
22
=
=
=
32
=
4-to-1 multiplexor
Hit
ArqComp: Sistemas de memória
Data
54/78
2006-05-25
Número de bits usados para etiquetas
Calcular o nº de bits usados para armazenar as etiquetas.
I Especificação: endereços de 32 bits, cache com 4K blocos,
blocos de 4 palavras, associatividade m=1, m=2, m=4 e
associatividade total (m=4K).
I 16 (=24 ) bytes / bloco → 32-4 = 28 bits para índice e etiqueta.
I m=1: 4K conjuntos, logo 12 bits de índice, e
28-12=16 bits/etiqueta. Total: 16×4K = 64 Kbits
I Cada incremento da associatividade diminiu para metade o
número de conjuntos, logo diminui de 1 o número de bits do
índice e aumenta de 1 o número de bits da etiqueta.
I m=2: 2K conjuntos, 11 bits de índice e 17 bits de etiqueta.
Total: 2K × 2 × 17 = 68 Kbits.
I m=4: 1K conjuntos, 10 bits de índice e 18 bits de etiqueta.
Total: 1K × 4 × 18 = 72 Kbits.
I m=4K: 1 conjunto, 0 bits de índice e 28 bits de etiqueta. Total:
1 × 4K × 28 = 112 Kbits.
ArqComp: Sistemas de memória
55/78
2006-05-25
Política de substituição
+ A política de substituição define qual dos blocos de um
conjunto deve ser substituído quando há uma falha e todos os
blocos do conjunto estão ocupados.
+ Substituição aleatória: o bloco a ser substituído é escolhido
aleatoriamente de entre os elementos do conjunto.
+ LRU (Least Recently Used): o bloco substituído é aquele que
não é usado há mais tempo.
I Implementação para uma cache de 2 vias: para cada bloco
usar um bit para marcar o último a ser acedido (o bit do
outro bloco do conjunto é colocado a zero).
I A complexidade de implementar LRU cresce com a
associatividade.
+ A política LRU tenta aproveitar a proximidade temporal: os itens
usados mais recentemente tendem a permanecer em cache.
ArqComp: Sistemas de memória
56/78
2006-05-25
Múltiplos níveis de memória cache
+ Para reduzir a penalidade de falhas pode aplicar-se a mesma
abordagem que se usa para reduzir o tempo de acesso à
memória principal: usar uma cache para a cache.
+ A cache de nível 2 permite reduzir a penalidade de falha da
cache de nível 1.
+ A cache de nível 2 contém geralmente os dados residente na
cache de nível 1 (hierarquia de memória “inclusiva”) e é de
maior capacidade.
+ Arranjo comum: caches separadas de nível 1 + cache unificada
de nível 2.
+ Em alguns sistemas de elevado desempenho: 2 níveis de cache
on-chip + 1 nível (L3) no exterior.
ArqComp: Sistemas de memória
57/78
2006-05-25
Processador com dois níveis de cache
ArqComp: Sistemas de memória
58/78
I
Usado no Mac G5
I
58 milhões transístores,
2.2 GHz
I
L1-ICache: 64 KB, m=1,
128 bytes/bloco
I
L1-DCache: 32 KB, m=2,
128 bytes/bloco, LRU,
write-through,
no-allocate
I
L2-Cache: 512 KB, m=8,
128 bytes/bloco, LRU,
write-back,
allocate-on-miss
2006-05-25
Desempenho de memórias cache multinível
Cálculo do desempenho de um sistema com dois níveis de cache:
I
Especificação: CPI = 1, F = 5 GHz (T=0.2 ns), acesso a memória
principal: 100 ns, taxa de falhas em L1 de 2%.
Qual a melhoria de desempenho obtida por uma memória cache
L2 (tempo de acesso 5 ns) e com capacidade suficiente para
reduzir a taxa de falhas para memória principal para 0.5%?
I
Penalidade de falha (mem. principal): 100/0.2 = 500 ciclos.
I
CPI1 = 1 + 0.02 × 500 = 11
I
Com 2 níveis:
Penalidade de falha por acesso a L2: 5/0.2 = 25 ciclos
I
CPI2 = 1 + ProtL1 + ProtL2
CPI2 = 1 + 0.02 × 25 + 0.005 × 500 = 1 + 0.5 + 2.5 = 4
I
speedup = 11/4 = 2.8
I
(Extra) taxa de falhas local de L2: 0.005/0.02 = 0.25
ArqComp: Sistemas de memória
59/78
1
Memórias
2
Sistemas de memória: aspectos gerais
Descodificação de endereços
Hierarquia de memória
3
Memórias cache
Princípios de funcionamento de memórias cache
Desempenho de memórias cache
4
Memória virtual
ArqComp: Sistemas de memória
60/78
2006-05-25
2006-05-25
Memória virtual: motivação
+ Conceito: memória principal é uma “cache” para memória
secundária (em disco magnético). Motivação:
1. remover a limitação do tamanho da memória física: o
programa pode usar mais memória que a fisicamente
presente.
Vantagem adicional: programa pode ser executado sem
modificação em computadores com sistemas de memória
diferentes.
2. permitir a utilização comum eficiente e segura de memória
principal por vários programas em execução simultânea
(processos).
+ Aplica-se o princípio da proximidade (local e espacial).
+ Cada programa é compilado (e executado) num espaço de
endereçamento separado (virtual).
Durante a execução, os endereços deste espaço virtual são
convertidos para endereços físicos (de memória física).
ArqComp: Sistemas de memória
61/78
2006-05-25
Memória virtual: termos e conceitos
Cache
Memória virtual
bloco
falha de memória
SRAM → DRAM
página
falha de página
DRAM → disco magnético
+ Durante um acesso a memória principal, o endereço virtual é
convertido (mapeado) num endereço físico.
+ Memória virtual também implementa automaticamente a
“relocação” do programa: o programa pode ser colocado
(“carregado”) para qualquer zona de memória.
+ A relocação é feita por páginas: não é necessário usar uma zona
contígua de memória para todo o programa.
+ Mapeamento virtual→real com base em páginas de dimensão
fixa: paginação.
Alternativa: usar blocos de dimensão variável (segmentos).
ArqComp: Sistemas de memória
62/78
2006-05-25
Modelo conceptual
Endereços virtuais
Endereços físicos
Conversão de
endereços
Endereços de disco
ArqComp: Sistemas de memória
63/78
2006-05-25
Endereços virtuais e reais
Endereço virtual
31 30 29 28 27
15 14 13 12 11 10 9 8
3210
Deslocamento (na página)
Nº de página virtual
Conversão
29 28 27
15 14 13 12 11 10 9 8
Nº de página física
3210
Deslocamento (na página)
Endereço físico
O endereço virtual é dividido num número de página virtual e um deslocamento na
página. O número de página virtual é convertido num número de página real. O
número de bits dos dois números não necessita de ser igual.
ArqComp: Sistemas de memória
64/78
2006-05-25
Penalidade de falha de página
A penalidade de falha de página é enorme : alguns milhões de ciclos
de relógio. (O acesso a memória principal é 100000 mais rápido que
o acesso a disco.)
Consequências:
+ A dimensão de uma página deve permitir amortizar o elevado
tempo de acesso.
Dimensão típica: 4 KB–16 KB, com tendência a aumentar
(32 KB–64 KB).
+ A redução da taxa de falhas é de extrema importância:
utilização de associatividade completa.
+ O tratamento das falhas de página pode ser feito por software
(já que o overhead é comparativamente reduzido), o que
permite a utilização de políticas de substituição sofisticadas.
+ Não se usa write-through, mas apenas write-back (copy-back).
ArqComp: Sistemas de memória
65/78
2006-05-25
Colocação de páginas (conversão virtual→real)
+ O mapeamento virtual→real é completamente associativo.
+ O número de páginas impede uma pesquisa em paralelo (como
nas memórias cache) ou uma pesquisa linear.
+ Usa-se um tabela indexada pelo nº de página virtual: na posição
correspondente a cada página está o nº de página real
associado e informação adicional (p. ex., tipo de acesso
permitido), bem como um bit de validade.
+ A tabela de páginas tem tantas posições como páginas virtuais.
+ A tabela de páginas é mantida em memória e, geralmente,
endereçada a partir de um registo especial: page table register.
+ A tabela é utilizada por hardware (durante os acessos), mas
gerida por software (sistema operativo).
+ A tabela de páginas é mantida em memória principal.
+ Existe uma tabela por processo (e uma para o sistema
operativo).
ArqComp: Sistemas de memória
66/78
2006-05-25
Tabela de páginas: exemplo
Registo de tabela de páginas
Endereço virtual
31 30 29 28 27
15 14 13 12 11 10 9 8
Deslocamento (página)
Nº de página virtualr
12
20
Valid
3210
Nº de página físicar
Tabela de páginas
18
Se 0 a página não está
presente em memória
29 28 27
15 14 13 12 11 10 9 8
Nº de página física
3210
Deslocamento (págia)
Endereço físico
ArqComp: Sistemas de memória
67/78
2006-05-25
Tratamento de faltas de página
+ Quando, durante a conversão virtual→real, o bit de validade da
posição escolhida da tabela de página está a zero, ocorre uma
falta de página.
+ Neste caso, o CPU salta para uma subrotina de atendimento
existente no sistema operativo.
+ O sistema operativo deve encontrar a página em disco. Como?
+ Quando o sistema lança um novo processo, reserva espaço para
todas as páginas numa zona especial do disco designada por
swap space.
+ Ao mesmo tempo, o sistema operativo cria uma estrutura de
dados para registar a posição de cada página em disco. Essa
estrutura pode ficar integrada na tabela de páginas (exemplo
seguinte) ou numa estrutura auxiliar separada.
+ O sistema operativo também regista, para cada página física,
qual o processo que lhe estão associado (bem como a respectiva
página virtual).
ArqComp: Sistemas de memória
68/78
2006-05-25
Tratamento de faltas de página: exemplo
Nº de página
virtual
Válido
Tabela de páginas
Página física ou
endereço de disco
Memória física
1
1
1
1
0
1
1
0
1
1
0
1
ArqComp: Sistemas de memória
Armazenamento em disco
69/78
2006-05-25
Falhas de página e tratamento de escritas
+ Quando ocorre uma falha de página e toda a memória física está
ocupada, o sistema operativo deve escolher uma página física a
libertar.
+ Se alguma das posições de memória dessa página foi alterada, a
página física deve ser copiada para disco (write-back) antes de
ser substituída.
+ Blocos de cache “pertencentes” à página a substituir devem ser
também libertados (incluindo write-back se necessário), se
existirem.
+ O acesso a disco magnético (neste caso, para escrita) é muito
demorado.
+ Para evitar cópias desnecessárias, cada página tem um bit (na
tabela de páginas) a indicar se foi alterada: bit de modificação
(dirty bit). Apenas páginas físicas com esse bit de substituição
a 1 são copiadas para disco.
ArqComp: Sistemas de memória
70/78
2006-05-25
Política de substituição
+ A escolha da página física a substituir aquando de uma falta de
página é geralmente feita segundo o critério LRU (Least
Recently Used):
É substituída a página não usada há mais tempo (as outras têm
mais probabilidade de virem a ser usadas brevemente).
+ A implementação exacta de LRU é muito pesada, já que a
informação correspondente deve ser actualizada a cada acesso.
+ Na prática, os S. O. apenas aproximam a política LRU.
+ Uma abordagem: o CPU associa a cada página um bit de
utilização (ou bit de referência): esse bit é colocado a 1 sempre
que ocorre um acesso à página.
Periodicamente, o S. O. coloca todos os bits de referência a
zero, para depois registar as páginas acedidas durante um certo
intervalo de tempo. Com esta informação de utilização, o S. O.
pode escolher a página a substituir de entre as que foram
referenciadas menos recentemente.
ArqComp: Sistemas de memória
71/78
2006-05-25
Tornar a conversão de endereços mais rápida
+ As tabelas de páginas estão em memória principal. Cada acesso
do programa seria transformado em dois acessos: um acesso à
página e um segundo acesso aos dados/instruções.
+ O princípio da localidade aplica-se: um endereço de página
virtual usado recentemente tem elevada probabilidade de ser
re-utilizado.
+ Solução: usar uma memória cache especial para guardar as
conversões de endereços mais recentes: translation-lookaside
buffer (TLB)
+ A cada acesso, o TLB é consultado para determinar a página real
correspondente à página virtual especificada no endereço. Em
caso de sucesso, o bit de referência é actualizado. No caso de
uma escrita, o mesmo sucede com o bit de modificação.
+ TLB deve conter cópia dos bits de controlo associados a cada
página (incluindo a informação sobre protecção de acesso).
ArqComp: Sistemas de memória
72/78
2006-05-25
TLB: Cache de endereços de página convertidos
TLB
Nº de página
virtual
Endereço de
Valid Dirty Ref
1
1
1
1
0
1
0
1
1
0
0
0
Etiqueta
página física
1
1
1
1
0
1
Memória física
Tabela de páginas
Valid Dirty Ref
1
1
1
1
0
1
1
0
1
1
0
1
1
0
0
0
0
0
0
0
1
1
0
1
Página física
ou end. disco
1
0
0
1
0
1
1
0
1
1
0
1
ArqComp: Sistemas de memória
Disco magnético
73/78
2006-05-25
TLB: aspectos adicionais
+ Falha no TLB: carregar novo valor da tabela de páginas e repetir
o acesso (software ou hardware); da segunda vez pode ocorrer
uma falha de página (software).
+ Durante a substituição de um bloco do TLB, os bits de referência
e de acesso devem ser copiados para a página: write-back.
+ São usados diversos tipos de associatividade:
I TLB pequeno com associatividade total (minimizar a taxa
de falhas) e selecção aleatória do bloco a substituir
(simplicidade) ; ou
I TLB maior, com associatividade reduzida.
+ Características típicas:
I tamanho (nº de endereços): 16–512
I tamanho do bloco: 1–2
I tempo de acesso (hit): 0.5–1 ciclo de relógio
I penalidade de falha: 10-1000 ciclos de relógio
I taxa de falhas: 0.01%–1%
ArqComp: Sistemas de memória
74/78
2006-05-25
Exemplo: TLB do Intrinsity FastMATH
Endereço virtual
31 30 29
14 13 12 11 10 9
3 2 1 0
Deslocamento de página
Nº de página virtual
12
20
Valid
Dirty
Etiqueta
Nº de página física
=
TLB
=
=
TLB hit
=
=
=
20
Deslocamento de página
Nº de página física
Etiqueta física
End. físico
Índice de cache
18
Desl.
bloco
8
4
desl.
byte
2
8
Dados
12
Valid
Etiqueta
Cache
=
Cache hit
32
Dado
ArqComp: Sistemas de memória
75/78
2006-05-25
Caches, TLB e memória virtual
Endereço virtual
acesso TLB
TLB miss
Não
Sim
TLB hit?
Endereço físico
Não
Sim
Escrita?
Try to read data
from cache
Não
Protelar durante
leitura de bloco
(eventualmente
com escrita)
Não
Sim
Acesso de
escrita
permitido?
Sim
Erro de
protecção
Try to write data
to cache
Cache hit?
Fornecer dados
para o CPU
Protelar durante
leitura de bloco
(eventualmente
com escrita)
Sim
Não
Cache hit?
Escrever dados em cache e
actualizar dirty bit (se
cache write-back)
ArqComp: Sistemas de memória
76/78
2006-05-25
Acesso a memória: eventos possíveis
Para um sistema com TLB, um nível de cache e memória principal, um
acesso a memória pode encontrar três eventos: falha TLB, falha de
página (PT) e falha de cache. Que combinações destes eventos
podem realmente ocorrer?
TLB
T. P.
Cache
Possível? Porquê?
hit
miss
miss
miss
hit
hit
hit
miss
miss
hit
miss
miss
Sim. A TP não é verificada.
Sim. Página em memória mas endereço fora da T. P.
Sim. Dados/instruções não estão em cache.
Sim.
hit
hit
miss
miss
miss
miss
miss
hit
hit
Não. Se não existe na T. P. não pode estar em TLB.
Não. (Idem)
Nao. Dados não podem estar em cache se a página não
está em memória.
ArqComp: Sistemas de memória
77/78
2006-05-25
TLB, memória virtual e caches
TLB, memória virtual e caches podem ser caracaterizados pelas
respostas às seguintes questões:
1. Onde pode ser colocado um bloco? Mapeamento directo: 1
posição. Associatividade completa: todas as posições,
associatividade por conjuntos: conjunto restrito de posições.
2. Como encontrar um bloco? Mapeamento directo: índice.
Associatividade por conjuntos: índice para o conjunto +
pesquisa concorrente. Associatividade completa: pesquisa
concorrente (cache) ou tabela separada (mem. virtual).
3. Que bloco substituir?
Mapeamento directo: só um bloco. Outros: selecção aleatória
ou LRU (exacto ou aproximado)
4. Que acontece na escrita?
Write-through ou write-back. Memória virtual usa sempre
write-back.
ArqComp: Sistemas de memória
78/78
2006-05-25