1
Capítulo 7
2
• 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)
Memórias: Revisão
Word line
Pass transistor
Capacitor
Bit line
3
• 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.
• Construir uma hierarquia de memória
Explorando Hierarquia de Memória
CPU
Level n
Level 2
Level 1
Levels in thememory hierarchy
Increasing distance from the CPU in
access time
Size of the memory at each level
4
Princípio de Localidade
• Este principio garante a eficiência da hierarquia de memória
• localidade temporal: referência repetida à mesma localidadelocalidade 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
5
• 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
Cache
Duas questões:Como sabemos que um dado item
está no cache?Se estiver, como encontrá-lo?
6
• Mapeamento: a posição no cache é o endereço de memória em modulo do número de slots no cache:
• Ex:
Cache em mapeamento direto
00001 00101 01001 01101 10001 10101 11001 11101
000
Cache
Memory
001
010
011
100
101
110
111
1
25
1 mod 8 = 19 mod 8 = 117 mod 8 = 125 mod 8 = 1
1 9 17
7
• Para MIPS:
Que tipo de localidade está sendo usada?
Cache em mapeamento direto Address (showing bit positions)
20 10
Byteoffset
Valid Tag DataIndex
0
1
2
1021
1022
1023
Tag
Index
Hit Data
20 32
31 30 13 12 11 2 1 0
8
• Levando vantagem sobre a localidade espacial:
Cache em mapeamento direto
Address (showing bit positions)
16 12 Byteoffset
V Tag Data
Hit Data
16 32
4Kentries
16 bits 128 bits
Mux
32 32 32
2
32
Block offsetIndex
Tag
31 16 15 4 32 1 0
9
• 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
Hits vs. Misses
10
• Fazer a leitura de múltiplas palavras usando bancos de memória
Questões de Hardware
CPU
Cache
Bus
Memory
a. One-word-wide memory organization
CPU
Bus
b. Wide memory organization
Memory
Multiplexor
Cache
CPU
Cache
Bus
Memorybank 1
Memorybank 2
Memorybank 3
Memorybank 0
c. Interleaved memory organization
11
Aumentando o tamanho do bloco tende a decrescer o miss rate.
Usar caches repartidos (split) porque existem mais localidade espacial no código.
Desempenho
1 KB
8 KB
16 KB
64 KB
256 KB
256
40%
35%
30%
25%
20%
15%
10%
5%
0%
Mis
s ra
te
64164
Block size (bytes)
ProgramBlock size in
wordsInstruction miss rate
Data miss rate
Effective combined miss rate
gcc 1 6.1% 2.1% 5.4%4 2.0% 1.7% 1.9%
spice 1 1.2% 1.3% 1.2%4 0.3% 0.6% 0.4%
12
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
13
Diminuindo miss rate com associatividade
Tag Data Tag Data Tag Data Tag Data Tag Data Tag Data Tag Data Tag Data
Eight-way set associative (fully associative)
Tag Data Tag Data Tag Data Tag Data
Four-way set associative
Set
0
1
Tag Data
One-way set associative(direct mapped)
Block
0
7
1
2
3
4
5
6
Tag Data
Two-way set associative
Set
0
1
2
3
Tag Data
14
Uma implementaçãoAddress
22 8
V TagIndex
012
253254255
Data V Tag Data V Tag Data V Tag Data
3222
4-to-1 multiplexor
Hit Data
123891011123031 0
15
Desempenho
0%
3%
6%
9%
12%
15%
Eight-wayFour-wayTwo-wayOne-way
1 KB
2 KB
4 KB
8 KB
Mis
s ra
te
Associativity 16 KB
32 KB
64 KB
128 KB
16
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%
17
Caches Multi-Nível
• Opções: caches de dados e instruções separados, ou um cache unificado
size:speed:$/Mbyte:
line size:
200 B3 ns
8 B
8-64 KB3 ns
32 B
128 MB DRAM60 ns$1.50/MB8 KB
30 GB8 ms$0.05/MB
larger, slower, cheaper
MemoryMemory
L1 d-cache
RegsUnified
L2 Cache
UnifiedL2
Cache
Processor
1-4MB SRAM6 ns$100/MB32 B
L1 i-cache
diskdisk
18
Processor ChipProcessor Chip
Hierarquia de cache no Pentium Intel
L1 Data1 cycle latency
16 KB4-way assocWrite-through
32B lines
L1 Instruction16 KB, 4-way
32B lines
Regs. L2 Unified128KB--2 MB4-way assocWrite-back
Write allocate32B lines
L2 Unified128KB--2 MB4-way assocWrite-back
Write allocate32B lines
MainMemory
Up to 4GB
MainMemory
Up to 4GB
19
Memória Virtual
• A memória principal pode agir como um cache para o armazenamento secundário (disco)
• Vantagens:– Ilusão de ter mais memória física– Relocação de programa – proteção
Physical addresses
Disk addresses
Virtual addresses
Address translation
20
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
3 2 1 011 10 9 815 14 13 1231 30 29 28 27
Page offsetVirtual page number
Virtual address
3 2 1 011 10 9 815 14 13 1229 28 27
Page offsetPhysical page number
Physical address
Translation
21
Tabela de páginas
Physical memory
Disk storage
Valid
1
1
1
1
0
1
1
0
1
1
0
1
Page table
Virtual pagenumber
Physical page ordisk address
22
Tabela de páginas
Page offsetVirtual page number
Virtual address
Page offsetPhysical page number
Physical address
Physical page numberValid
If 0 then page is notpresent in memory
Page table register
Page table
20 12
18
31 30 29 28 27 15 14 13 12 11 10 9 8 3 2 1 0
29 28 27 15 14 13 12 11 10 9 8 3 2 1 0
23
Fazendo a tradução de endereço rápida
• Um cache para tradução de endereço: translation lookaside buffer
Valid
1
1
1
1
0
1
1
0
1
1
0
1
Page table
Physical pageaddressValid
TLB
1
1
1
1
0
1
TagVirtual page
number
Physical pageor disk address
Physical memory
Disk storage
24
TLBs e caches
Yes
Deliver datato the CPU
Write?
Try to read datafrom cache
Write data into cache,update the tag, and put
the data and the addressinto the write buffer
Cache hit?Cache miss stall
TLB hit?
TLB access
Virtual address
TLB missexception
No
YesNo
YesNo
Write accessbit on?
YesNo
Write protectionexception
Physical address
25
CPUTLB
LookupCache Main
Memory
VA PA miss
hit
data
Trans-lation
hit
miss
• “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
Acelerando a tradução de endereço com TLB
26
virtual addressvirtual page number page offset
physical address
n–1 0p–1p
valid physical page numbertag
valid tag data
data=
cache hit
tag byte offsetindex
=
TLB hit
TLB
Cache
. ..
Tradução de endereço com TLB
27
• 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 3 2 1 0
11 10 9 8 7 6 5 4 3 2 1 0
VPO
PPOPPN
VPN
(Virtual Page Number) (Virtual Page Offset)
(Physical Page Number) (Physical Page Offset)
Exemplo de sistema de memória simples
28
– 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
Tabela de página
29
• TLB– 16 entradas– Associativo de 4-linhas por conjunto (4-way)
13 12 11 10 9 8 7 6 5 4 3 2 1 0
VPOVPN
TLBITLBT
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
TLB (Translation Look-Aside Buffer)
30
– 16 linhas– Linha de 4-bytes– Mapeamento direto
11 10 9 8 7 6 5 4 3 2 1 0
PPOPPN
COCICT
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 – – – –
Cache
31
• Endereço Virtual 03D4h
VPN ___ TLBI ___TLBT ____ TLB Hit? __ Page Fault? __ PPN: ____
• Endereço físico
Offset ___ CI___ CT ____ Hit? __ Byte: ____
13 12 11 10 9 8 7 6 5 4 3 2 1 0
VPOVPN
TLBITLBT
11 10 9 8 7 6 5 4 3 2 1 0
PPOPPN
COCICT
Exemplo de tradução de endereço #1
32
• Endereço Virtual 0B8Fh
VPN ___ TLBI ___TLBT ____ TLB Hit? __ Page Fault? __ PPN: ____
• Endereço físico
Offset ___ CI___ CT ____ Hit? __ Byte: ____
13 12 11 10 9 8 7 6 5 4 3 2 1 0
VPOVPN
TLBITLBT
11 10 9 8 7 6 5 4 3 2 1 0
PPOPPN
COCICT
Exemplo de tradução de endereço #2
33
• Endereço Virtual 0040h
VPN ___ TLBI ___TLBT ____ TLB Hit? __ Page Fault? __ PPN: ____
• Endereço físico
Offset ___ CI___ CT ____ Hit? __ Byte: ____
13 12 11 10 9 8 7 6 5 4 3 2 1 0
VPOVPN
TLBITLBT
11 10 9 8 7 6 5 4 3 2 1 0
PPOPPN
COCICT
Exemplo de tradução de endereço #3
Top Related