Capítulo 7
1
Memórias: Revisão
•
SRAM:
– O valor é armazenado num par de portas inversoras
– Muito rápido mas toma mais espaço que DRAM (4 a 6
transistores)
•
DRAM:
– O valor é armazenado como uma carga num capacitor (deve ser
reavivado, “refreshed” )
– Muito pequeno mas mais lento que SRAM ( 5 a 10 vezes)
Word line
Pass transistor
Capacitor
Bit line
2
Explorando Hierarquia de Memória
•
Os usuários desejam memórias de grande capacidade e rápidas!
Tempo de acesso de SRAM = 2 - 25ns; custo $100 a $250 por Mbyte.
Tempo de acesso de DRAM = 60-120ns;custo $5 a $10 por Mbyte.
Tempo de acesso de Disco = 10 a 20 milhões ns; custo $.10 a $.20 por Mbyte.
CPU
•
Construir uma hierarquia de memória
Level 1
Levels in the
memory hierarchy
Increasing distance
from the CPU in
access time
Level 2
Level n
Size of the memory at each level
3
Princípio de Localidade
•
Este principio garante a eficiência da hierarquia de memória
•
localidade temporal: referência repetida à mesma localidade
localidade espacial: referência a endereços próximos.
Porque existem as localidades acima?
•
Nosso foco inicial: dois níveis (superior,inferior)
– bloco: unidade mínima de dados
– hit: o dado requisitado está no nível superior
– miss: o dado requisitado não está no nível superior
4
Cache
•
Cache (nível superior): é uma memória rápida, normalmente implementada
em SRAM, que contém cópias dos dados da memória principal (nível
inferior)
– Nosso primeiro exemplo: “mapeamento direto"
– O tamanho de bloco é uma palavra de dado
Para cada dado num nível inferior (memória principal), existe exatamente
um endereço (slot) no cache, de onde ele deve estar.
p.ex., muitos blocos no nível inferior compartilham
posições (slots) no nível superior
Duas questões:
Como sabemos que um dado item está no
cache?
Se estiver, como encontrá-lo?
5
Cache em mapeamento direto
•
•
Mapeamento: a posição no cache é o endereço de memória em
modulo do número de slots no cache:
Ex:
1
00101
000
001
010
011
100
101
110
111
1 mod 8 = 1
9 mod 8 = 1
17 mod 8 = 1
25 mod 8 = 1
00001
Cache
1
01001
9
01101
10001
Memory
17
10101
11001
25
11101
6
Cache em mapeamento direto
Address (showing bit positions)
•
31 30
Para MIPS:
Hit
13 12 11
2 1 0
Byte
offset
10
20
Tag
Data
Index
Index
Valid
Tag
Data
0
1
2
1021
1022
1023
20
Que tipo de localidade está sendo usada?
32
7
Cache em mapeamento direto
•
Levando vantagem sobre a localidade espacial:
Address (showing bit positions)
31
16 15
16
Hit
4 32 1 0
12
2 Byte
offset
Tag
Data
Index
V
Block offset
16 bits
128 bits
Tag
Data
4K
entries
16
32
32
32
32
Mux
32
8
Hits vs. Misses
•
Read hits
– É o que se deseja!
•
Read misses
– Pára a CPU, busca um bloco da memória, entrega ao cache, e
reinicia a CPU
•
Write hits:
– Pode substituir dados no cache e memória (write-through)
– Escreve dados somente no cache (faz write-back mais tarde )
•
Write misses:
– Le o bloco inteiro no cache, e depois faz a escrita na palavra
referenciada
9
Questões de Hardware
•
Fazer a leitura de múltiplas palavras usando bancos de memória
CPU
CPU
CPU
Multiplexor
Cache
Cache
Cache
Bus
Memory
Memory
a. One-word-wide
memory organization
Bus
Bus
b. Wide memory organization
Memory
bank 0
Memory
bank 1
Memory
bank 2
Memory
bank 3
c. Interleaved memory organization
10
Desempenho
40%
Aumentando o tamanho do
bloco tende a decrescer
o miss rate.
35%
30%
Miss rate
Usar caches repartidos (split)
porque existem mais
localidade espacial
no código.
25%
20%
15%
10%
5%
0%
4
16
64
Block size (bytes)
Program
gcc
spice
Block size in
words
1
4
1
4
Instruction
miss rate
6.1%
2.0%
1.2%
0.3%
Data miss
rate
2.1%
1.7%
1.3%
0.6%
Effective combined
miss rate
5.4%
1.9%
1.2%
0.4%
256
1 KB
8 KB
16 KB
64 KB
256 KB
11
Desempenho
tempo de execução = (ciclos de execução + ciclos de parada)  tempo
de ciclo
ciclos de parada = # de instruções  miss ratio  miss penalty
Duas formas de melhorar o desempenho:
– Decrementando o miss ratio
– Decrementando o miss penalty
12
Diminuindo miss rate com associatividade
One-way set associative
(direct mapped)
Block
Tag Data
0
Two-way set associative
1
2
Set
3
0
4
1
5
2
6
3
Tag Data Tag Data
7
Four-way set associative
Set
Tag Data Tag Data Tag Data Tag Data
0
1
Eight-way set associative (fully associative)
Tag Data Tag Data Tag Data Tag Data Tag Data Tag Data Tag Data Tag Data
13
Uma implementação
Address
31 30
12 11 10 9 8
8
22
Index
0
1
2
V
Tag
Data
V
321 0
Tag
Data
V
Tag
Data
V
Tag
Data
253
254
255
22
32
4-to-1 multiplexor
Hit
Data
14
Desempenho
15%
12%
Miss rate
9%
6%
3%
0%
One-way
Two-way
Four-way
Associativity
Eight-way
1 KB
16 KB
2 KB
32 KB
4 KB
64 KB
8 KB
128 KB
15
Diminuindo o miss penalty com caches multiníveis
•
Adicionar um segundo nível de cache:
– geralmente o cache nível 1 fica no mesmo chip do processador
– usar SRAMs para adicionar um outro cache acima da memória
primária (DRAM)
– O miss penalty diminui se os dados estão nesse cache nível 2
•
Exemplo:
– CPI de 1.0 numa máquina a 500Mhz com 5% miss rate, acesso a DRAM
de 200ns
– Adicionando cache nível 2 de tempo de acesso = 20ns diminui o miss
rate para 2%
16
Caches Multi-Nível
•
Opções: caches de dados e instruções separados, ou um cache
unificado
Processor
Regs
L1
d-cache
L1
i-cache
size:
speed:
$/Mbyte:
line size:
200 B
3 ns
8B
Unified
L2
Cache
8-64 KB 1-4MB SRAM
3 ns
6 ns
$100/MB
32 B
32 B
Memory
128 MB DRAM
60 ns
$1.50/MB
8 KB
disk
30 GB
8 ms
$0.05/MB
larger, slower, cheaper
17
Hierarquia de cache no Pentium Intel
Regs.
L1 Data
1 cycle latency
16 KB
4-way assoc
Write-through
32B lines
L1 Instruction
16 KB, 4-way
32B lines
L2 Unified
128KB--2 MB
4-way assoc
Write-back
Write allocate
32B lines
Main
Memory
Up to 4GB
Processor Chip
18
Memória Virtual
•
A memória principal pode agir como um cache para o
armazenamento secundário (disco)
Virtual addresses
Physical addresses
Address translation
•
Vantagens:
– Ilusão de ter mais memória física
– Relocação de programa
– proteção
Disk addresses
19
Páginas: “blocos” na memória virtual
•
Falta de página: os dados não estão na memória, deve ser
recuperado do disco
– miss penalty grande, portanto, as páginas devem ser bem
grandes (p.ex., 4KB)
– É importante reduzir as faltas de página
– Pode manipular as faltas em software ao invés de hardware
– usar write-through é muito dispendioso, então usa-se writeback
Virtual address
31 30 29 28 27
15 14 13 12
11 10 9 8
Virtual page number
3210
Page offset
Translation
29 28 27
15 14 13 12
11 10 9 8
Physical page number
Physical address
3210
Page offset
20
Tabela de páginas
Virtual page
number
Valid
Page table
Physical page or
disk address
Physical memory
1
1
1
1
0
1
1
0
1
Disk storage
1
0
1
21
Tabela de páginas
Page table register
Virtual address
31 30 29 28 27
15 14 13 12 11 10 9 8
Virtual page number
Page offset
20
Valid
3 2 1 0
12
Physical page number
Page table
18
If 0 then page is not
present in memory
29 28 27
15 14 13 12 11 10 9 8
Physical page number
Physical address
3 2 1 0
Page offset
22
Fazendo a tradução de endereço rápida
•
Um cache para tradução TLB
de endereço: translation lookaside buffer
Virtual page
number
Valid
Tag
Physical page
address
1
1
Physical memory
1
1
0
1
Page table
Physical page
Valid or disk address
1
1
1
Disk storage
1
0
1
1
0
1
1
0
1
23
TLBs e caches
Virtual address
TLB access
TLB miss
exception
No
Yes
TLB hit?
Physical address
No
Yes
Write?
Try to read data
from cache
No
Write protection
exception
Cache miss stall
No
Cache hit?
Yes
Deliver data
to the CPU
Write access
bit on?
Yes
Write data into cache,
update the tag, and put
the data and the address
into the write buffer
24
Acelerando a tradução de endereço com TLB
• “Translation Lookaside Buffer” (TLB)
– Pequeno cache em MMU
– Mapeia número de página virtual para número de página física
– Contem entradas de tabela de página completas para um
pequeno número de páginas
hit
PA
VA
CPU
miss
TLB
Lookup
miss
Cache
Main
Memory
hit
Translation
data
25
Tradução de endereço com TLB
n–1
p p–1
0
virtual page number page offset
valid
.
virtual address
tag physical page number
.
TLB
.
=
TLB hit
physical address
tag
index
valid tag
byte offset
data
Cache
=
cache hit
data
26
Exemplo de sistema de memória simples
• endereçamento
– Endereço virtual de 14-bits
– Endereço físico de 12-bits
– Tamanho de página = 64 bytes
13
12
11
10
9
8
7
6
5
4
VPN
10
2
1
0
VPO
(Virtual Page Offset)
(Virtual Page Number)
11
3
9
8
7
6
5
4
3
2
1
PPN
PPO
(Physical Page Number)
(Physical Page Offset)
0
27
Tabela de página
– Somente mostra as primeiras 16 entradas
VPN PPN Valid VPN PPN Valid
00
28
1
08
13
1
01
–
0
09
17
1
02
33
1
0A
09
1
03
02
1
0B
–
0
04
–
0
0C
–
0
05
16
1
0D
2D
1
06
–
0
0E
11
1
07
–
0
0F
0D
1
28
TLB (Translation Look-Aside Buffer)
• TLB
– 16 entradas
– Associativo de 4-linhas por conjunto (4-way)
TLBT
13
12
11
10
TLBI
9
8
7
6
5
4
3
VPN
2
1
0
VPO
Set
Tag
PPN
Valid
Tag
PPN
Valid
Tag
PPN
Valid
Tag
PPN
Valid
0
03
–
0
09
0D
1
00
–
0
07
02
1
1
03
2D
1
02
–
0
04
–
0
0A
–
0
2
02
–
0
08
–
0
06
–
0
03
–
0
3
07
–
0
03
0D
1
0A
34
1
02
–
0
29
Cache
– 16 linhas
– Linha de 4-bytes
– Mapeamento direto
CI
CT
11
10
9
8
7
6
5
4
PPN
CO
3
2
1
0
PPO
Idx
Tag
Valid
B0
B1
B2
B3
Idx
Tag
Valid
B0
B1
B2
B3
0
19
1
99
11
23
11
8
24
1
3A
00
51
89
1
15
0
–
–
–
–
9
2D
0
–
–
–
–
2
1B
1
00
02
04
08
A
2D
1
93
15
DA
3B
3
36
0
–
–
–
–
B
0B
0
–
–
–
–
4
32
1
43
6D
8F
09
C
12
0
–
–
–
–
5
0D
1
36
72
F0
1D
D
16
1
04
96
34
15
6
31
0
–
–
–
–
E
13
1
83
77
1B
D3
7
16
1
11
C2
DF
03
F
14
0
–
–
–
–
30
Exemplo de tradução de endereço #1
• Endereço Virtual 03D4h
TLBT
13
12
11
TLBI
10
9
8
7
6
5
4
3
VPN
VPN ___
2
1
0
VPO
TLBI ___ TLBT ____ TLB Hit? __ Page Fault? __ PPN: ____
• Endereço físico
CI
CT
11
10
9
8
7
6
5
PPN
Offset ___ CI___
CT ____
4
CO
3
2
1
0
PPO
Hit? __
Byte: ____
31
Exemplo de tradução de endereço #2
• Endereço Virtual 0B8Fh
TLBT
13
12
11
TLBI
10
9
8
7
6
5
4
3
2
1
0
VPN
VPN ___
VPO
TLBI ___ TLBT ____ TLB Hit? __ Page Fault? __ PPN: ____
• Endereço físico
CI
CT
11
10
9
8
7
6
PPN
Offset ___ CI___
CT ____
5
4
CO
3
2
1
0
PPO
Hit? __
Byte: ____
32
Exemplo de tradução de endereço #3
• Endereço Virtual 0040h
TLBT
13
12
11
TLBI
10
9
8
7
6
5
4
3
VPN
VPN ___
2
1
0
VPO
TLBI ___ TLBT ____ TLB Hit? __ Page Fault? __ PPN: ____
• Endereço físico
CI
CT
11
10
9
8
7
6
PPN
Offset ___ CI___
CT ____
5
4
CO
3
2
1
0
PPO
Hit? __
Byte: ____
33
Download

Cache