9 Mem
9 Mem
9 Mem
Tecnologia
Tecnologia de
de memória/Memória
memória/Memória
cache
cache
Tecnologia para Memória
Sistemas de Computação
• Acesso Randômico:
– “Randômico” é bom: tempo de acesso igual para todas localidades
– DRAM: Dynamic Random Access Memory
• Alta densidade, baixa potência, barata (1x), lenta(10x)
• Dynamic: precisa ser “refrescada” regularmente
– SRAM: Static Random Access Memory
• Baixa densidade, alta potência, cara (100x), rápida (1x)
• Static: conteúdo dura “para sempre”(até ter energia)
Tran. Tempo
por bit de acesso Persistente? Sensível? Custo Aplicações
16 x 8 DRAM chip
colunas
0 1 2 3
RAS = 2
2
/ 0
end
1
Controlador
linhas
de
memória 2
8 3
/
dados
16 x 8 DRAM chip
colunas
0 1 2 3
CAS = 1
2
/ 0
end
Para CPU
1
Controlador linhas
de 2
memória
supercélula 3
8
(2,1) /
dados
supercélula
Buffer de linha interno
(2,1)
Módulos de memória
Sistemas de Computação
end (linha = i, col = j)
: supercélula (i,j)
DRAM 0
módulo de memória
de 64 MB
consistindo de
DRAM 7
oito 8Mx8 DRAMs
63 56 55 48 47 40 39 32 31 24 23 16 15 8 7 0 0 Controlador
de memória
64-bit doubleword
Enhanced DRAMs
Sistemas de Computação
registradores
ALU barramento
do
sistema barramento de memória
eixo
setores
Discos com múltiplos pratos
Sistemas de Computação
cilindro k
superfície 0
prato 0
superfície 1
superfície 2
prato 1
superfície 3
superfície 4
prato 2
superfície 5
eixo
Capacidade do disco
Sistemas de Computação
• Capacidade: número máximo de bits que podem ser
armazenados expresso em gigabytes (1 GB = 10 9)
• Fatores que determinam a capacidade
– Densidade de gravação (bits/in): número de bits que podem ser gravados
em 1 polegada de uma trilha
– Densidade de trilha(trilhas/in): número de trilhas que podem existir em um
segmento radial
– Densidade de armazenamento (bits/in2): produto da densidade de gravação
com densidade de trilha
A superfície do
A cabeça de leitura/escrita
disco gira com
está ligada ao final do braço
uma velocidade
e flutua sobre a superfície
de rotação
do disco em cima de uma
constante
fina camada de ar
spindle
spindle
spindle
spindle
eixo
cabeças de leitura/escrita
se movem em conjunto
de cilindro para cilindro
braço
eixo
Tempo de acesso ao disco
Sistemas de Computação
• Tempo médio de acesso a um setor desejado:
– Tacesso = Tmed procura + Tmed rotação + Tmed transferência
• Teremos:
– Tmed rotação = 1/2 x (60 segs/7200 RPM) x 1000 ms/seg = 4 ms.
– Tmed transferência = 60/7200 RPM x 1/400 segs/trilha x 1000 ms/seg =
0.02 ms
– Tacesso = 9 ms + 4 ms + 0.02 ms
• Pontos importantes:
– Tempo de acesso dominado pelo tempo de procura e latência rotacional
– Tempo de acesso da SRAM é 4 ns/doubleword, DRAM por volta de 60 ns
• Disco é aprox. 40.000 vezes mais devagar que SRAM, e 2.500 vezes
mais devagar que DRAM
Blocos lógicos
Sistemas de Computação
barramento de E/S
Slots de expansão
controlador adaptador controlador para outros
USB gráfico de disco dispositivos tais
como adaptadores
mouse teclado monitor de rede
disco
Tendências de armazenamento
Sistemas de Computação
métrica 1980 1985 1990 1995 2000 2000:1980
SRAM
$/MB 19,200 2,900 320 256 100 190
acesso (ns) 300 150 35 15 2 100
100,000,000
10,000,000
1,000,000
Disk seek time
100,000
DRAM access time
10,000
ns
• E esta ?
Dispositivos L0:
menores, regs registradores da CPU guardam
palavras obtidas da cache L1
mais rápidos,
e L1: on-chip L1
cache (SRAM) Cache L1 guarda linhas de cache
mais caros obtidas da cache L2
(por byte) L2: off-chip L2
Cache L2 guarda linhas de
cache (SRAM) cache obtidas da memória
principal
L3: memória principal
(DRAM) Memória principal guarda
Dispositivos blocos de disco obtidos
maiores, de discos locais
mais lentos, L4: armazenamento secundário local Discos locais
e (discos locais) guardam
arquivos obtidos
mais baratos de discos em
(por byte) servidores
L5: armazenamento secundário remoto remotos
(sistemas de arquivos distribuídos, servidores Web)
Caches
Sistemas de Computação
• Cache: Um dispositivo menor e mais rápido que
age como uma plataforma de acesso para um
subconjunto de dados de um dispositivo maior e
mais lento
• Idéia fundamental:
– Para cada k, o dispositivo mais rápido e menor no nível k serve
com uma cache para um dispositivo maior e mais lento no nível
k+1
• Porque funciona ?
– Programas tendem a acessar dados no nível k mais freqüentemente
que no nível k+1
– Então, o armazenamento em k+1 pode ser mais lento e portanto
maior e mais barato por bit
– Resultado: Uma memória que custa tão barato quanto o
dispositivo mais barato, mas que fornece dados para programas em
uma taxa perto do dispositivo mais rápido
Caching na hierarquia de memórias
Sistemas de Computação
Dispositivo menor, mais rápido,
Nível k: 4
8 9 10
14 3 mais caro no nível k armazena
subconjunto de blocos do
nível k+1
Dados são copiados entre
10
4 níveis em blocos
0 1 2 3
Pede
• Falta de cache (miss)
12
4*
12 – b não está no nível k, então a cache do nível
Nível k precisa pegar o bloco do nível k+1. Ex.,
k+1: bloco 12.
– Se a cache do nível k está cheia, então algum
0 1 2 3 bloco corrente terá que sair para dar lugar ao
novo. Quem será a vítima?
4
4* 5 6 7
• Política de colocação: onde o novo
8 9 10 11 bloco deve ir ? Ex., b mod 4
• Política de substituição: qual bloco
12 13 14 15
deve sair ? Ex., LRU
Terminologia para Hierarquia de
Memória
Sistemas de Computação
• Tipo de faltas:
– Falta compulsória
• Ocorrem porque a cache está vazia.
– Falta por conflito
• Ocorrem quando múltiplos objetos de dados são mapeados em
um mesmo bloco no nível k
• E.g. Suponha que bloco i seja referenciado por i mod 4 no
nível k, então as referências aos blocos 0, 8, 0, 8, 0, 8, ...
sempre acarretarão faltas
– Falta por capacidade
• Ocorrem quando o número de blocos ativos da cache é maior
que a capacidade da cache.
Memórias cache
Sistemas de Computação
CPU
registradores
L1
ALU barramento barramento de
barramento de cache
cache de sistema memória
•••
valid tag 0 1 ••• B–1
conj. S-1: •••
valid tag 0 1 ••• B–1
m-1 0
v tag 0 1 • • • B–1
conj.0: •••
v tag 0 1 • • • B–1 <tag> <índ. conj.> <offset>
v tag 0 1 • • • B–1
conj 1: •••
v tag 0 1 • • • B–1 A palavra no endereço A está na cache
se os bits de tag em uma das linhas válidas
••• no conjunto <ind. conj.> são idênticos
aos bits do campo <tag>.
v tag 0 1 • • • B–1
conj. •••
S-1: v tag 0 1 • • • B–1
O conteúdo da palavra começa no
deslocamento de
<offset> bytes a partir do início do bloco
Cache mapeada diretamente
Sistemas de Computação
•••
0 1 2 3 4 5 6 7
conj. (i)
selecionado: 1 0110 w0 w1 w2 w3
•••
valid tag bloco de cache
conj. S-1:
valid tag bloco de cache
Acesso a caches associativas por
conjuntos
Sistemas de Computação
•••
valid tag bloco de cache
t bits s bits b bits conj. S-1:
valid tag bloco de cache
00 001
m-1 0
tag ìnd. conj. offset
Acesso a caches associativas por
conjunto
Sistemas de Computação
1 1001
conj.(i)
selecionado): 1 0110 w0 w1 w2 w3
1 1001
cache
inteira: 0 0110
1 1001 w0 w1 w2 w3
=?
0 0110
• Políticas de escrita...
– write through
– write back
– write once
Política de escrita II
Sistemas de Computação
• Escrita em ambas (write through)
– Sempre que se escreve na cache, escreve-se na memória principal
– Pode haver queda no desempenho
Processador Regs L1
d-cache
Cache
Cache Memória disco
Memória disco
L2
L2
L1
unificada
unificada
i-cache
L1 Data
1 cycle latency
16 KB
4-way assoc L2
Regs. L2Unified
Unified
Write-through 128KB--2
128KB--2MB MB Main
32B lines 4-way assoc Main
4-way assoc Memory
Write-back Memory
Write-back Up
Write Upto
to4GB
4GB
L1 Instruction Writeallocate
allocate
32B lines
32B lines
16 KB, 4-way
32B lines
Processor
ProcessorChip
Chip
Características de código eficiente para
caching
Sistemas de Computação
• Assuma:
– Tamanho de linha = 32B (pode armazenar 4 64-bit palavras)
– Dimensão N da matriz muito grande (1/N tende a 0.0)
– Cache não tem capacidade para armazenar várias linhas
• Método de análise:
– Veja o padrão de acesso do loop interno
k j j
i k i
A B C
Arrays em C
Sistemas de Computação
• Arrays em C são alocados por linha em lugares
adjacentes na memória
• Acesso a colunas em uma linha:
– for (i = 0; i < N; i++)
sum += a[0][i];
– acessa elementos sucessivos
– se tamanho de bloco (B) > 4 bytes, explora localidade espacial
• taxa de falta compulsória = 4 bytes / B
/*
/* ijk
ijk */
*/ Loop interno:
for
for (i=0;
(i=0; i<n;
i<n; i++)
i++) {{
for (*,j)
for (j=0;
(j=0; j<n;
j<n; j++)
j++) {{
sum (i,j)
sum == 0.0;
0.0; (i,*)
for
for (k=0;
(k=0; k<n;
k<n; k++)
k++)
sum A B C
sum +=+= a[i][k]
a[i][k] ** b[k][j];
b[k][j];
c[i][j]
c[i][j] == sum;
sum;
}}
}} Linha Coluna Fixo
/*
/* jik
jik */
*/ Loop interno:
for
for (j=0;
(j=0; j<n;
j<n; j++)
j++) {{
for (*,j)
for (i=0;
(i=0; i<n;
i<n; i++)
i++) {{
sum (i,j)
sum == 0.0;
0.0; (i,*)
for
for (k=0;
(k=0; k<n;
k<n; k++)
k++)
sum A B C
sum +=+= a[i][k]
a[i][k] ** b[k][j];
b[k][j];
c[i][j]
c[i][j] == sum;
sum;
}}
}} Linha Coluna Fixo
/*
/* kij
kij */
*/ Loop interno:
for
for (k=0;
(k=0; k<n;
k<n; k++)
k++) {{
for
for (i=0;
(i=0; i<n;
i<n; i++)
i++) {{ (i,k) (k,*)
(i,*)
rr == a[i][k];
a[i][k];
for A B C
for (j=0;
(j=0; j<n;
j<n; j++)
j++)
c[i][j]
c[i][j] +=+= rr ** b[k][j];
b[k][j];
}}
}}
Fixo Linha Linha
/*
/* ikj
ikj */*/ Loop interno:
for
for (i=0;
(i=0; i<n;
i<n; i++)
i++) {{
for
for (k=0;
(k=0; k<n;
k<n; k++)
k++) {{ (i,k) (k,*)
rr == a[i][k];
a[i][k]; (i,*)
for
for (j=0;
(j=0; j<n;
j<n; j++)
j++) A B C
c[i][j]
c[i][j] +=+= rr ** b[k][j];
b[k][j];
}}
}}
Fixo Linha Linha
for (i=0; i<n; i++) { for (k=0; k<n; k++) { for (j=0; j<n; j++) {
for (j=0; j<n; j++) { for (i=0; i<n; i++) { for (k=0; k<n; k++) {
sum = 0.0; r = a[i][k]; r = b[k][j];
for (k=0; k<n; k++) for (j=0; j<n; j++) for (i=0; i<n; i++)
sum += a[i][k] * b[k][j]; c[i][j] += r * b[k][j]; c[i][j] += a[i][k] * r;
c[i][j] = sum; } }
} } }
}