Computerarchitectuur - UGent

advertisement
Les 10:
Geheugenhiërarchie
Parkinson's laws:
"Work expands so as to fill the time available for its completion“
"Expenditure rises to meet income“
“Programs expand to fill all available memory”
ca10-1
Doelstelling
Aanbieden van de illusie van een zeer
groot, parallel toegankelijk, goedkoop en
snel geheugen, opgebouwd uit
• Kleine snelle geheugens (duur)
• Grote trage geheugens (goedkoop)
ca10-2
Inhoud
•
•
•
•
•
•
Soorten geheugens
Lokaliteit
Caches
Impact op prestatie
Ingebedde systemen
Eindbeschouwingen
ca10-3
Geheugenhiërarchie
Kleiner
Sneller
duurder
registers
elektronisch
on-chip L1
cache (SRAM)
On/off-chip L2/L3
cache (SRAM)
hoofdgeheugen
(DRAM, ROM)
Storage class memory (SCM)
Flash, SSD
Groter
Trager
goedkoper
lokaal secundair geheugen
(mechanische schijven)
mechanisch
gedistribueerd secundair geheugen
(netwerkbestanden, Web servers)
Off-line geheugen (tapes,CD,DVD)
ca10-4
Prijsevolutie $/MiB
1E+09
100000000
10000000
1000000
100000
10000
1000
100
10
RAM
1
0.1
HD
0.01
0.001
0.0001
0.00001
1950
1960
1970
1980
1990
2000
2010
2020
Wet van Machrone: prijs geheugen/hard disk voor
meest krachtige systemen blijft gelijk
ca10-5
Evolutie in de toegangstijd
ns
100000000
10000000
1000000
100000
SCHIJF
‘access time gap’
10000
DRAM
SRAM
1000
SCM
100
geheugenbarrière
10
1
1980
1985
1990
1995
2000
ca10-6
Registers
• Aantal 8  256
• Grootte: 2-8 bytes
• Parallel toegankelijk. Tegelijk lezen en
schrijven mogelijk (meerdere lees- en
schrijfpoorten).
• Extreem snel, parallel toegankelijk, zeer
duur
• Tijdens uitvoering moeten alle gegevens in
registers zitten (IR, data- en adresregisters)
ca10-7
Hoofdgeheugen of RAM:
Random Access Memory
Twee technologieën:
• statisch geheugen: gebaseerd op
latches.
• dynamisch geheugen: gebaseerd op
een lading in een condensator
Niet parallel toegankelijk: ofwel lezen
ofwel schrijven.
ca10-8
Statische geheugencel: principe
Write
enable
(puls)
Chip
select
D
Q
CLK
Output
enable
Data in/uit
ca10-9
Geheugenarray
bitlijn
output enable
w
s
o d
adres
decoder
woordlijn
2
write enable
output enable
D[1]
D[0]
ca10-10
6T SRAM cell
woordllijn
bitlijn
bitlijn
6 transistors
ca10-11
Transistorschakeling T6
ca10-12
Transistorschakeling T4
ca10-13
SRAM Matrix
ca10-14
Geheugenconfiguraties
16 ki x 1 bit
8 ki x 2 bit
4 ki x 4 bit
…
…
…
14 inputs
1 output
13 inputs
2 outputs
12 inputs
4 outputs
hoogte x breedte
ca10-15
Dynamische geheugencel
woordlijn
Schrijven
Lezen
Condensator verliest lading
• bij het lezen
• na 8-64 ms
Bitlijn
ca10-16
Dynamisch geheugen
0
1
0
0
1
1
a5
rijdecoder
byte op adres
010 011
a0
Nu: 4 Gi x 1 bit
kolomdecoder
ca10-17
Refresh
• Geheugen 32 Mib = 225
– Rij-adres = 12 bit
– Kolomadres = 13 bit
• Eerst rij-adres aanleggen, en dan kolomadres
• Per 64 ms moeten 4096 rijen gerefresht
worden (lezen + schrijven), d.i. 1 rij per  15
s (64 kHz).
• Een refresh-cyclus duurt  100 ns per rij en
tijdens een refresh is de geheugenmodule
inactief. De overhead is dus <1%
ca10-18
Kenparameters
Latentie: tijd die verstrijkt tussen het
aanleggen van een adres en het
verschijnen van het eerste byte.
Bandbreedte: aantal byte/s dat maximaal
kan getransfereerd worden (van
opeenvolgende locaties).
Effectieve snelheid van het geheugen wordt
door deze twee parameters bepaald. Hoe
lager in de hiërarchie, des te groter de
discrepantie tussen latentie en bandbreedte
ca10-19
SDRAM
klok
adres
rij
kol
kol
ras
cas
data
ca10-20
Geheugentypes
Statisch
Dynamisch
Snelheid
0,2-25 ns
30-120 ns
Omvang
6 transistors
Verbruik
Groot
Transistor +
condensator
Laag
Prijs
Duur (caches)
Goedkoop
(hoofgeheugen)
ca10-21
Permanente geheugentypes
• ROM: Read Only Memory, eigenlijk geen
geheugen, maar een combinatorisch
circuit.
• PROM: Programmable ROM (1 x)
ca10-22
Permanente geheugentypes
• EPROM: Erasable PROM (n x), wissen
met UV licht
• EEPROM: Electrically Erasable PROM,
elektrisch te wissen via speciale pin
• FLASH: snelle versie van EEPROM
– Compactflash
– USB sticks
– Solid State Disks
ca10-23
Flash geheugencel
woordlijn
Control gate
Floating gate
Multi Level Cell
Bitlijn
Single Level Cell
ca10-24
Secundair geheugen
•
•
•
•
•
•
•
•
Hard disk >100 GB
CD-ROM, CD-RW 650 MB
DVD-ROM, DVD-RAM 4,7-17 GB
Zip-Drive 100-250-750 MB = 95,7-238714MiB
Floppy disk 1,44 MB = 1,38 MiB
Jaz drive 2 GB
HD-DVD (20 GB) Blu-Ray (27 GB) – in
meerdere lagen reeds to 200 GB (één
highres film is ongeveer 12 GB)
Solid State Drive (SSD)
ca10-25
Magnetische opslag
8.5 nm
partikels
100 nm
ca10-26
Inhoud
•
•
•
•
•
•
Soorten geheugens
Lokaliteit
Caches
Impact op prestatie
Ingebedde systemen
Eindbeschouwingen
ca10-27
Instructiegedrag
Buitenlus
Frequentie
5.41%
Veel
programma’s
spenderen
90% van hun
uitvoeringstijd
in 10% van de
code
11.26%
23.24%
Binnenlus
60.09%
Binnenlus
adres
ca10-28
Lokaliteit
• Temporele lokaliteit: sommige
geheugenlocaties komen vaak terug in
in de adresstroom
• Spatiale lokaliteit: geheugenlocaties in
een adresstroom liggen niet ver uit
elkaar (b.v. volgen elkaar op).
Lokaliteit: temporeel
Lokaliteit: spatiaal
ca10-29
Instructieadres
Adresstroom
Tijd
ca10-30
Werkverzameling
(working set)
aantal
Verzameling van alle geheugenlocaties die
een programma tijdens een interval t
gebruikt.
t
ca10-31
Inhoud
• Soorten geheugens
• Lokaliteit
• Caches
–
–
–
–
–
Werking
Indexering
Vervangingsstrategie
Lees/schrijf strategie
Prestatieverbetering
• Impact op prestatie
• Ingebedde systemen
• Eindbeschouwingen
Cache keeps intruders away from
backcountry supplies
ca10-32
Geheugenbarrière
ca10-33
Cachegeheugen
Snel geheugen om een deelverzameling van
de locaties uit de working set bij te houden.
CVE
geheugen
Cache
10.6 GB/s
ca10-34
Werking cache
cache
CVE
00
08
10
18
20
28
30
38
40
48
50
58
60
hoofdgeheugen
ca10-35
Indexering
• Direct-mapped caches
• Set-associatieve caches
• Volledig associatieve caches
ca10-36
Direct-mapped cache
valid dirty
tag
index offset
adres
Cache: direct mapped
=
treffer
data
data eerder
beschikbaar dan
hit/miss-informatie
ca10-37
Direct-mapped cache
ca10-38
Direct-mapped cache
ca10-39
4-wegs set-associatief
adres
=
=
=
=
multiplexer
Cache: set-associatief
ca10-40
Set-associatieve cache
ca10-41
Set-associatieve cache
ca10-42
Volledig associatieve cache
Cache: volledig associatief
ca10-43
Volledig associatieve cache
ca10-44
Cachetypes
#sets
associativiteit
cachetype
N
1
Direct mapped
M
A
A-wegs set-associatief
Direct mapped
1
N
Volledig associatief
Grootte = #sets x associativiteit x blokgrootte
2-wegs SA, 4 sets
= tag
= data
4-wegs SA, 2 sets
Volledig associatief
ca10-45
Tags
tag
index
offset
Direct mapped
Set-associatief
Volledig Assoc
Cache: tags
ca10-46
Vervangingsstrategie
• Als de set volzet is, dan moet er een
blok uit de set verwijderd worden.
• Keuze
– LRU: least recently used (langst niet
gebruikt geweest)
– FIFO: first-in first-out (oudste blok)
– Random: willekeurig blok
– Opt: blok dat het langst niet gebruikt zal
worden
Cache: vervangingsstrategie
ca10-47
Miss rates ifv
vervangingsstrategie
Associativiteit
2-wegs SA
4-wegs SA
grootte
LRU
RND
FIFO
LRU
RND
FIFO
16 kiB
11.41
11.73
11.55
11.17
11.51
11.33
64 kiB
10.34
10.43
10.39
10.24
10.23
10.31
256 kiB
9.22
9.21
9.25
9.21
9.21
9.25
[Data cache, Spec 2000, 64 byte blokken (alpha)]
Associativiteit
2-wegs SA
4-wegs SA
8-wegs SA
grootte
LRU
RND
LRU
RND
LRU
RND
16 KiB
5.18%
5.69%
4.67%
5.29%
4.39%
4.96%
64 KiB
1.88%
2.01%
1.54%
1.66%
1.39%
1.53%
256 KiB
1.15%
1.17%
1.13%
1.13%
1.12%
1.12%
[instructiecache]
ca10-48
Cache leesstrategie
lees
90%-98%
data in cache
cachetreffer
stuur door
naar CVE
data niet in cache
cachemisser
load
through
load &
forward
Cache: leesstrategie
ca10-49
Cache schrijfstrategie
schrijf
data in cache
cachetreffer
write
through
cache +
geheugen
write
back
cache
Cache: schrijfstrategie
data niet in cache
cachemisser
write
write
allocate
no allocate
cache
geheugen
(+ geheugen)
ca10-50
Gemiddelde toegangstijd
Gemiddelde toegangstijd (AMAT)
= Hit Time + (Miss Rate x Miss Penalty)
= (Hit Rate x Hit Time) + (Miss Rate x Miss Time)
[AMAT: Average Memory Access Time]
3 + 0.02 x 100 = 5
0.98 x 3 + 0.02 x 103 = 5
Miss rate ↓ Miss penalty ↓ Hit time ↓
 AMAT ↓
ca10-51
AMAT
Cacheparameters
Hit Time
Miss rate
Miss Penalty
Grootte ↑
↑
↓
-
Associativiteit ↑
↑
↓
-↑
Blokgrootte ↑
-
↑↓
↑
Splitsing ↑
↓
↑↓
-
Niveaus ↑
↓
↑
↓
AMAT = Hit Time + (Miss Rate x Miss Penalty)
ca10-52
Misserclassificatie: 3C model
• Compulsory (cold) of koude missers: nodig
om een blok de eerste keer in de cache te
brengen.
– INF = oneindig grote cache
– koude missers = missers(INF)
• Capaciteitsmissers: cache is te klein om de
werkverzameling te bevatten.
– VA = volledig associatieve cache, LRU vervanging
– capaciteitsmissers
= missers(VA) - missers(INF)
Cache: koude misser
Cache: capaciteitsmisser
ca10-53
Misserclassificatie: 3C model
• Conflict (collision) missers: het blok had
in de cache kunnen zitten maar werd
verdrongen door een ander blok.
– C = te onderzoeken cache met bepaald
vervangingsalgoritme
– Conflictmissers = missers(C) - missers(VA)
Cache: conflictmisser
ca10-54
Cache grootte ↑  Miss rate ↓
Associativiteit ↑  Miss rate ↓
0.14
1-wegs
0.12
2:1 regel
[Spec 92
Benchmarks]
2-wegs
0.1
4-wegs
0.08
0.06
capaciteitsmissers
0.04
koude missers
0.02
64
32
16
Cache size (KiB)
128
[bron: Patterson&Hennessy]
8
4
2
0
1
Miss Rate
8-wegs
ca10-55
3C Relative Miss Rate
100%
1-way
2-way
4-way
8-way
60%
40%
Capaciteitsmissers
20%
Koude missers
64
128
Cache Size (KiB)
32
16
8
4
2
0%
1
Miss Rate per type
80%
Conflictmissers
!
Uitbuiten spatiale lokaliteit
=
multiplexer
ca10-57
Blokgrootte ↑  Miss rate ↓↑
Cachegrootte
Blokgrootte
Miss
Pen
4KiB
16KiB
64KiB
256KiB
16
82
8.027
4.231
2.673
1.894
32
84
7.082
3.411
2.134
1.588
64
88
7.160
3.323
1.933
1.449
128
96
8.469
3.659
1.979
1.470
256
112
11.651
4.685
2.288
1.549
ca10-58
Cachegrootte ↑  hit time ↑
Associativiteit ↑  hit time ↑
Hit time
ns 14
12
assoc
10
1
2
8
4
6
FA
4
2
0
4
8
16
32
64
128
256 KiB
ca10-59
Gesplitste vs. geünificeerde
caches
Grootte
Instructiecache
Data cache
Geünificeerde
cache
1 KiB
3.06%
24.61%
13.34%
2 KiB
2.26%
20.57%
9.78%
4 KiB
1.78%
15.94%
7.24%
8 KiB
1.10%
10.19%
4.57%
16 KiB
0.64%
6.47%
2.87%
32 KiB
0.39%
4.82%
1.99%
64 KiB
0.15%
3.77%
1.35%
128 KiB
0.02%
2.88%
0.95%
Harvard architectuur
ca10-60
Voorbeeld
[20% data cache; 80% instructiecache; 16 KiB
miss penalty = 50 cycli; hit time = 1 cyclus]
Gesplitste cache
Maak het vaak
voorkomende
geval snel!
AMAT = 80% x (1 + 0.64% x 50) +
20% x (1 + 6.47% x 50) = 1.903
Geünificeerde cache
AMAT = 80% x (1 + 1.99% x 50) +
20% x (2 + 1.99% x 50) = 2.195
Extra cyclus:
Cache met 1 toegangspoort
ca10-61
Meerniveaucaches
processor
Intel Core I7
L1 I (32KiB)
L1 D (32KiB)
Cache: hiërarchie
Cycli: 4
L2 cache (256 KiB)
Cycli: 10
L3 cache (2 MiB/core)
Cycli: 35
Geheugen
ca10-62
Cachehiërarchie
L1I
L2
CVE
L3
L1D
ca10-63
Voorbeeld
Processor
Pentium 4
Ultrasparc III
Clock (2001)
2000 Mhz
900 Mhz
L1 I cache
96 KiB TC
32 KiB, 4WSA
Latency
4
2
L1 D cache
8 KiB 4WSA
64 KiB, 4WSA
Latency
2
2
TLB
128
128
L2 cache
256 KiB 8WSA
8 MiB DM (off chip)
Latency
6
15
Block size
64 bytes
32 bytes
Bus width
64 bits
128 bits
Bus clock
400 Mhz
150 Mhz
ca10-64
Inhoud
•
•
•
•
•
•
Soorten geheugens
Lokaliteit
Caches
Impact op prestatie
Ingebedde systemen
Eindbeschouwingen
ca10-65
Instruction
window
ALU
L1 I-cache
ld/st
mov 0 → r1 a
mov 0x0fe0 → r3 b
L: ld MEM[r3] → r2 c
add r2,r1 → r1 d
e
add r3,48 → r3
brl r3,0x10a0 → L f
st r1 → MEM[A]
g
[Lieven Eeckhout]
L2 cache
ALU
front-end
pipeline
L1 D-cache
Branch
predictor
to L1
I-cache
Superscalar out-of-order
processor
out-of-order execution
in-order commit
decoding, register renaming, etc.
bca10-66
a
b
Instruction
window
ALU
ld/st
mov 0 → r1 a
mov 0x0fe0 → r3 b
L: ld MEM[r3] → r2 c
add r2,r1 → r1 d
e
add r3,48 → r3
brl r3,0x10a0 → L f
st r1 → MEM[A]
g
L2 cache
L1 I-cache
ALU
L1 D-cache
Branch
predictor
to L1
I-cache
Cycle 1
Per clock cycle, B instructions are fetched,
With B = processor width
bca10-67
c1 a
d1 b
Instruction
window
ALU
ld/st
L2 cache
L1 I-cache
ALU
L1 D-cache
Branch
predictor
to L1
I-cache
Cycle 2
mov 0 → r1 a
mov 0x0fe0 → r3 b
L: ld MEM[r3] → r2 c
add r2,r1 → r1 d
e
add r3,48 → r3
brl r3,0x10a0 → L f
st r1 → MEM[A]
g
bca10-68
c2 e1 c1 a
d2 f1 d1 b
Instruction
window
ALU
ld/st
mov 0 → r1 a
mov 0x0fe0 → r3 b
L: ld MEM[r3] → r2 c
add r2,r1 → r1 d
e
add r3,48 → r3
brl r3,0x10a0 → L f
st r1 → MEM[A]
g
L2 cache
L1 I-cache
ALU
L1 D-cache
Branch
predictor
to L1
I-cache
Cycle 4
Branch predicted taken
bca10-69
e2 c2 e1 c1
f2 d2 f1 d1
ALU
a
b
ld/st
L2 cache
L1 I-cache
ALU
L1 D-cache
Branch
predictor
to L1
I-cache
Cycle 5
mov 0 → r1 a
mov 0x0fe0 → r3 b
L: ld MEM[r3] → r2 c
add r2,r1 → r1 d
e
add r3,48 → r3
brl r3,0x10a0 → L f
st r1 → MEM[A]
g
bca10-70
a
d1
c3 e2 c2 e1
d3 f2 d2 f1
c1
a
b
ALU
b
ld/st
L2 cache
L1 I-cache
ALU
L1 D-cache
Branch
predictor
to L1
I-cache
Cycle 6
mov 0 → r1 a
mov 0x0fe0 → r3 b
L: ld MEM[r3] → r2 c
add r2,r1 → r1 d
e
add r3,48 → r3
brl r3,0x10a0 → L f
st r1 → MEM[A]
g
bca10-71
d1
L1 I-cache
e3 c3 e2 c2
f3 d3 f2 d2
ALU
c1 e1
a
mov 0 → r1 a
mov 0x0fe0 → r3 b
L: ld MEM[r3] → r2 c
add r2,r1 → r1 d
e
add r3,48 → r3
brl r3,0x10a0 → L f
st r1 → MEM[A]
g
f1
b
operands not yet
available
ld/st
c1
L2 cache
ALU
L1 D-cache
Branch
predictor
to L1
I-cache
Cycle 7
Operands are
available
bca10-72
e1
c2
L1 I-cache
c4 e3 c3 e2
d4 f3 d3 f2
f1
d1
e1
mov 0 → r1 a
mov 0x0fe0 → r3 b
L: ld MEM[r3] → r2 c
add r2,r1 → r1 d
e
add r3,48 → r3
brl r3,0x10a0 → L f
st r1 → MEM[A]
g
ALU
c1
ld/st
L2 cache
ALU
d2
L1 D-cache
Branch
predictor
to L1
I-cache
Cycle 8
c1
out-of-order
execution
bca10-73
f1
f2 c2
L1 I-cache
e4 c4 e3 c3
f4 d4 f3 d3
e2 f1
ALU
d1
e1 c1
mov 0 → r1 a
mov 0x0fe0 → r3 b
L: ld MEM[r3] → r2 c
add r2,r1 → r1 d
e
add r3,48 → r3
brl r3,0x10a0 → L f
st r1 → MEM[A]
g
d1
ld/st
c2
L2 cache
ALU
d2
L1 D-cache
Branch
predictor
to L1
I-cache
Cycle 9
Instruction-level parallelism (ILP)
bca10-74
f2
L1 I-cache
c5 e4 c4 e3
d5 f4 d4 f3
d2
ALU
e2 f1 c2
e1 d1
mov 0 → r1 a
mov 0x0fe0 → r3 b
L: ld MEM[r3] → r2 c
add r2,r1 → r1 d
e
add r3,48 → r3
brl r3,0x10a0 → L f
st r1 → MEM[A]
g
e2
ld/st
L2 cache
c3
ALU
L1 D-cache
d3
Branch
predictor
to L1
I-cache
Cycle 10
c2
in-order
commit
bca10-75
f2
f3 c3
L1 I-cache
e5 c5 e4 c4
f5 d5 f4 d4
e3 f2
ALU
d2
e2 c2
d2
ld/st
c3
L2 cache
ALU
d3
L1 D-cache
Branch
predictor
to L1
I-cache
Cycle 11
mov 0 → r1 a
mov 0x0fe0 → r3 b
L: ld MEM[r3] → r2 c
add r2,r1 → r1 d
e
add r3,48 → r3
brl r3,0x10a0 → L f
st r1 → MEM[A]
g
bca10-76
Instruction Level Parallelism
200
180
160
140
120
100
80
60
40
20
0
bzip2
crafty
eon
gcc
gzip
parser perlbmk twolf
vortex
vpr
[Starting from full trace, SpecInt 2000]
bca10-77
IPC
Performance
t
IPC (8 execution units)
6
5
4
3
2
1
0
bzip2
crafty
eon
gcc
gzip
parser perlbmk twolf
vortex
vpr
bca10-78
IPC = W
32
IPC
16
8
4
2
4
8
16
Size instruction window W
32
64
bca10-79
Branch prediction
?
Fetch &
Decode
Retire
(commit)
Instruction
Window
Fetch width
Memory
Commit width
M
E
E
E
Issue
width
bca10-80
f2
f3 c3
L1 I-cache
e5 c5 e4 c4
f5 d5 f4 d4
e3 f2
ALU
d2
e2 c2
mov 0 → r1 a
mov 0x0fe0 → r3 b
L: ld MEM[r3] → r2 c
add r2,r1 → r1 d
e
add r3,48 → r3
brl r3,0x10a0 → L f
st r1 → MEM[A]
g
d2
ld/st
c3
L2 cache
ALU
d3
L1 D-cache
Branch
predictor
to L1
I-cache
Cycle 11
Mispredicted branch
speculative fetch and execution
bca10-81
f3
f4 c4
L1 I-cache
e6 c6 e5 c5
f6 d6 f5 d5
e4 f3
ALU
d3
e3 c3
d3
ld/st
c4
L2 cache
ALU
d4
L1 D-cache
Branch
predictor
to L1
I-cache
Cycle 13
mov 0 → r1 a
mov 0x0fe0 → r3 b
L: ld MEM[r3] → r2 c
add r2,r1 → r1 d
e
add r3,48 → r3
brl r3,0x10a0 → L f
st r1 → MEM[A]
g
bca10-82
f4
f5 c5
L1 I-cache
e7 c7 e6 c6
f7 d7 f6 d6
e5 f4
ALU
d4
e4 c4
d4
ld/st
c5
L2 cache
ALU
d5
L1 D-cache
Branch
predictor
to L1
I-cache
Cycle 15
mov 0 → r1 a
mov 0x0fe0 → r3 b
L: ld MEM[r3] → r2 c
add r2,r1 → r1 d
e
add r3,48 → r3
brl r3,0x10a0 → L f
st r1 → MEM[A]
g
bca10-83
f5 c5
L1 I-cache
e7 c7 e6 c6
f7 d7 f6 d6
e5 f4
ALU
d4
e4
mov 0 → r1 a
mov 0x0fe0 → r3 b
L: ld MEM[r3] → r2 c
add r2,r1 → r1 d
e
add r3,48 → r3
brl r3,0x10a0 → L f
st r1 → MEM[A]
g
ld/st
c5
L2 cache
ALU
d5
L1 D-cache
Branch
predictor
to L1
I-cache
Cycle 16
Instructions on mispredicted path
must be nullified
bca10-84
g
h
Instruction
window
ALU
ld/st
mov 0 → r1 a
mov 0x0fe0 → r3 b
L: ld MEM[r3] → r2 c
add r2,r1 → r1 d
e
add r3,48 → r3
brl r3,0x10a0 → L f
st r1 → MEM[A]
g
L2 cache
L1 I-cache
ALU
L1 D-cache
Branch
predictor
to L1
I-cache
Cycle 17
Instructions on correct path are fetched
bca10-85
Interval analysis
Mispredicted branch enters
instruction window
Performance recovers
Mispredicted branch
IPC is fetched
IPCmax
Instructions along the
speculative path are executed
Mispredicted branch gets
executed; instructions from
the correct path are fetched
t
Correct instructions
enter the instruction
window
Intervalanalyse
bca10-86
Branch predictor
Fetch &
Decode
Retire
(commit)
Instruction
Window
Branch Predictor
90-95% correct
Memory
M
E
E
E
bca10-87
Branch prediction
IPC
everything perfect
6
real branch predictor
5
4
3
2
1
0
bzip2
crafty
eon
gcc
gzip
parser perlbmk twolf
vortex
vpr
Sprongvoorspeller
bca10-88
f2
L1 I-cache
e4 c4 e3
f4 d4 f3
d2
ALU
e2 f1 c2
e1 d1
mov 0 → r1 a
mov 0x0fe0 → r3 b
L: ld MEM[r3] → r2 c
add r2,r1 → r1 d
e
add r3,48 → r3
brl r3,0x10a0 → L f
st r1 → MEM[A]
g
e2
ld/st
L2 cache
c3
ALU
L1 D-cache
d3
Branch
predictor
to L1
I-cache
Cycle 10
c2
Suppose f4 is correctly predicted,
g causes an I cache miss
I-cache miss latency is 10 cycles
Cache: misser
bca10-89
f3
f4 c4
L1 I-cache
e4 f3
ALU
d3
e3 c3
d3
ld/st
c4
L2 cache
ALU
d4
L1 D-cache
Branch
predictor
to L1
I-cache
Cycle 13
mov 0 → r1 a
mov 0x0fe0 → r3 b
L: ld MEM[r3] → r2 c
add r2,r1 → r1 d
e
add r3,48 → r3
brl r3,0x10a0 → L f
st r1 → MEM[A]
g
bca10-90
e4
f4 c4
L1 I-cache
e4 f3
ALU
d3
e3
ld/st
L2 cache
ALU
d4
L1 D-cache
Branch
predictor
to L1
I-cache
Cycle 14
c4
mov 0 → r1 a
mov 0x0fe0 → r3 b
L: ld MEM[r3] → r2 c
add r2,r1 → r1 d
e
add r3,48 → r3
brl r3,0x10a0 → L f
st r1 → MEM[A]
g
bca10-91
d4
ALU
L1 I-cache
f4
d4
e4
c4
f4
ld/st
L2 cache
ALU
L1 D-cache
Branch
predictor
to L1
I-cache
Cycle 15
mov 0 → r1 a
mov 0x0fe0 → r3 b
L: ld MEM[r3] → r2 c
add r2,r1 → r1 d
e
add r3,48 → r3
brl r3,0x10a0 → L f
st r1 → MEM[A]
g
bca10-92
ALU
L1 I-cache
f4
e4
d4
ld/st
L2 cache
ALU
L1 D-cache
Branch
predictor
to L1
I-cache
Cycle 16
mov 0 → r1 a
mov 0x0fe0 → r3 b
L: ld MEM[r3] → r2 c
add r2,r1 → r1 d
e
add r3,48 → r3
brl r3,0x10a0 → L f
st r1 → MEM[A]
g
bca10-93
ALU
L1 I-cache
ld/st
L2 cache
ALU
L1 D-cache
Branch
predictor
to L1
I-cache
Cycle 17 - 19
mov 0 → r1 a
mov 0x0fe0 → r3 b
L: ld MEM[r3] → r2 c
add r2,r1 → r1 d
e
add r3,48 → r3
brl r3,0x10a0 → L f
st r1 → MEM[A]
g
bca10-94
g
h
ALU
ld/st
L2 cache
L1 I-cache
ALU
L1 D-cache
Branch
predictor
to L1
I-cache
Cycle 20
mov 0 → r1 a
mov 0x0fe0 → r3 b
L: ld MEM[r3] → r2 c
add r2,r1 → r1 d
e
add r3,48 → r3
brl r3,0x10a0 → L f
st r1 → MEM[A]
g
bca10-95
Interval analysis
I-cache miss
Instructions from front-end
pipe line arrive in
instruction window
IPC
Performance recovers
IPCmax
I-cache miss latency
Instruction window empties
t
front-end pipe line
refills
bca10-96
f2
L1 I-cache
c5 e4 c4 e3
d5 f4 d4 f3
d2
ALU
e2 f1 c2
e1 d1
mov 0 → r1 a
mov 0x0fe0 → r3 b
L: ld MEM[r3] → r2 c
add r2,r1 → r1 d
e
add r3,48 → r3
brl r3,0x10a0 → L f
st r1 → MEM[A]
g
e2
ld/st
L2 cache
c3
ALU
L1 D-cache
d3
Branch
predictor
to L1
I-cache
Cycle 10
c2
Assume a
L1 D-cache miss
Cache: misser
bca10-97
f2
f3
e5 c5 e4 c4
f5 d5 f4 d4
e3 c3
f2
d2
e2
mov 0 → r1 a
mov 0x0fe0 → r3 b
L: ld MEM[r3] → r2 c
add r2,r1 → r1 d
e
add r3,48 → r3
brl r3,0x10a0 → L f
st r1 → MEM[A]
g
d3
c2
ALU
ld/st
c3
L2 cache
L1 I-cache
ALU
L1 D-cache
Branch
predictor
to L1
I-cache
Cycle 11
c2
Access time to L2 cache is 10
cycles
bca10-98
f3
c6 e5 c5 e4
d6 f5 d5 f4
e3
d3
e3 c3
f2
d2
e2
ALU
c2
ALU
ld/st
L2 cache
L1 I-cache
c4
d4
L1 D-cache
Branch
predictor
to L1
I-cache
Cycle 12
c2
c3
mov 0 → r1 a
mov 0x0fe0 → r3 b
L: ld MEM[r3] → r2 c
add r2,r1 → r1 d
e
add r3,48 → r3
brl r3,0x10a0 → L f
st r1 → MEM[A]
g
bca10-99
Cycle 13
e6 c6 e5 c5
f6 d6 f5 d5
f3
d3
e3 c3
f2
d2
e2
ALU
c2
ALU
ld/st
c4
L2 cache
L1 I-cache
f3
c4
d4
L1 D-cache
e4
Branch
predictor
to L1
I-cache
f4
c2
c3
mov 0 → r1 a
mov 0x0fe0 → r3 b
L: ld MEM[r3] → r2 c
add r2,r1 → r1 d
e
add r3,48 → r3
brl r3,0x10a0 → L f
st r1 → MEM[A]
g
bca10-100
Cycle 14
c7 e6 c6 e5
d7 f6 d6 f5
mov 0 → r1 a
mov 0x0fe0 → r3 b
L: ld MEM[r3] → r2 c
add r2,r1 → r1 d
e
add r3,48 → r3
brl r3,0x10a0 → L f
st r1 → MEM[A]
g
e4
d3
e3 c3
f2
d2
e2
ALU
c2
ALU
ld/st
c4
L2 cache
L1 I-cache
f3
c4
d4
to L1
I-cache
e4
Branch
predictor
L1 D-cache
f4 c5
to main memory
d5
c2
c3
Instruction window fills up
instruction c2 prohibits commit
bca10-101
Cycle 15
to main memory
f4 c5
e4
L1 I-cache
e7 c7 e6 c6
f7 d7 f6 d6
mov 0 → r1 a
mov 0x0fe0 → r3 b
L: ld MEM[r3] → r2 c
add r2,r1 → r1 d
e
add r3,48 → r3
brl r3,0x10a0 → L f
st r1 → MEM[A]
g
f3
c4
d5
f4
d4
d3
e3 c3
f2
d2
e2
ALU
ALU
ld/st
c5
L2 cache
Branch
predictor
L1 D-cache
e5
to L1
I-cache
f5
c2
c4
c3
c2
bca10-102
Cycle 16
f2
mov 0 → r1 a
mov 0x0fe0 → r3 b
L: ld MEM[r3] → r2 c
add r2,r1 → r1 d
e
add r3,48 → r3
brl r3,0x10a0 → L f
st r1 → MEM[A]
g
e2
d2
ALU
ld/st
to L1
I-cache
e5
c5
L2 cache
L1 I-cache
c8 e7 c7 e6
d8 f7 d7 f6
ALU
L1 D-cache
Branch
predictor
f5 d6
e5 c6
d5
f4 c5
d4
e4
c4
f3
d3
e3 c3
to main memory
c2
c4
c3
c2
bca10-103
Cycle 17
g
h
mov 0 → r1 a
mov 0x0fe0 → r3 b
L: ld MEM[r3] → r2 c
add r2,r1 → r1 d
e
add r3,48 → r3
brl r3,0x10a0 → L f
st r1 → MEM[A]
g
f3
c4
d4
d3
e3 c3
f2
d2
e2
ALU
ld/st
L2 cache
e4
L1 I-cache
ALU
f4
L1 D-cache
Branch
predictor
to L1
I-cache
to main memory
c2
c4
c3
c2
bca10-104
Cycle 20
mov 0 → r1 a
mov 0x0fe0 → r3 b
L: ld MEM[r3] → r2 c
add r2,r1 → r1 d
e
add r3,48 → r3
brl r3,0x10a0 → L f
st r1 → MEM[A]
g
g
h
f3
c4
d4
d3
e3 c3
f2
d2
e2
ALU
ld/st
L2 cache
e4
L1 I-cache
ALU
f4
L1 D-cache
Branch
predictor
to L1
I-cache
to main memory
c2
c4
c3
c2
bca10-105
Cycle 21
e4
f3
L1 I-cache
mov 0 → r1 a
mov 0x0fe0 → r3 b
L: ld MEM[r3] → r2 c
add r2,r1 → r1 d
e
add r3,48 → r3
brl r3,0x10a0 → L f
st r1 → MEM[A]
g
ALU
f4
c4
d4
d3
e3 c3
f2
d2
e2
ALU
ld/st
L2 cache
Branch
predictor
g
L1 D-cache
h
to L1
I-cache
to main memory
c4
c3
c2
bca10-106
Cycle 22
e4
f3
L1 I-cache
mov 0 → r1 a
mov 0x0fe0 → r3 b
L: ld MEM[r3] → r2 c
add r2,r1 → r1 d
e
add r3,48 → r3
brl r3,0x10a0 → L f
st r1 → MEM[A]
g
ALU
d2
f4
c4
d4
d3
e3 c3
f2
d2
ALU
ld/st
L2 cache
Branch
predictor
g
L1 D-cache
h
to L1
I-cache
to main memory
c4
c3
e2
bca10-107
Cycle 23
e4
f3
L1 I-cache
mov 0 → r1 a
mov 0x0fe0 → r3 b
L: ld MEM[r3] → r2 c
add r2,r1 → r1 d
e
add r3,48 → r3
brl r3,0x10a0 → L f
st r1 → MEM[A]
g
ALU
f4
c4
d4
d3
e3 c3
f2
d2
ALU
ld/st
L2 cache
Branch
predictor
g
L1 D-cache
h
to L1
I-cache
to main memory
c4
e2
bca10-108
Cycle 24
e4
f3
L1 I-cache
d3
ALU
f4
e3
c4
d4
d3
ALU
ld/st
L2 cache
Branch
predictor
g
L1 D-cache
h
to L1
I-cache
to main memory
c4
mov 0 → r1 a
mov 0x0fe0 → r3 b
L: ld MEM[r3] → r2 c
add r2,r1 → r1 d
e
add r3,48 → r3
brl r3,0x10a0 → L f
st r1 → MEM[A]
g
bca10-109
Cycle 25
e4
f3
L1 I-cache
ALU
f4
e3
c4
d4
d3
ALU
ld/st
L2 cache
Branch
predictor
g
L1 D-cache
h
to L1
I-cache
to main memory
mov 0 → r1 a
mov 0x0fe0 → r3 b
L: ld MEM[r3] → r2 c
add r2,r1 → r1 d
e
add r3,48 → r3
brl r3,0x10a0 → L f
st r1 → MEM[A]
g
bca10-110
Interval analysis
L2 D-cache miss
Instruction window fills up
Instruction window full
IPC
Performance recovers
IPCmax
L2 D-cache miss latency
t
Instructions that do not depend
on the cache miss are
executed
bca10-111
Prestatie-impact van nietideale geheugens
Alles perfect
Realistische sprongvoorspeller
Realistische sprongvoorspeller; realistische geheugenhiërarchie
IPC
6
5
4
3
2
1
0
bzip2
crafty
eon
gcc
gzip
parser perlbmk
twolf
vortex
vpr
ca10-112
210 miljoen transistors
Itanium 2
ca10-113
Inhoud
•
•
•
•
•
•
Soorten geheugens
Lokaliteit
Caches
Impact op prestatie
Ingebedde systemen
Eindbeschouwingen
ca10-114
verschillende soorten
Vergist U zicht niet…
alle leven op aarde bestaat uit
insecten
9000000
8000000
7000000
6000000
5000000
4000000
3000000
2000000
amfibieën
zoogdieren
reptielen
vogels
vissen
schaaldieren
eencelligen
andere
planten
weekdieren
[bron: Scientific American]
virussen
wormen
algen
bacteriën
insecten
0
schimmels
1000000
ca10-115
Embedded market, 1996 versus 2010.
*CPU licensing data used for 2010. (Source: The Linley Group)
ca10-116
Enkele recente cijfers
• # verkochte PC’s in 2008: 300 miljoen
• # ingebedde processors in 2008
– Automotive: 1,2 miljard (90 miljoen 32 bit)
– GSM’s: 1 miljard
–…
• ARM verkocht in 2012: 8 miljard
processors
ca10-117
1-veel
(R)evolutie
1-1
Functionaliteit
Prijs
Grootte
Autonomie
veel-1
’60-’70
prestatie
’80-’90
Prestatie
prijs
2000ca10-118
“The computer revolution
hasn't happened yet”
• De alomtegenwoordige computer
(ubiquitous computing, pervasive
computing)
• Intelligente omgeving (Ambient
Intelligence)
Alan Kay, HP
ca10-119
Modern ingebed systeem
BMW serie-7
63 processors
ca10-120
Ingebedde systemen
• “Embedded system” of “Dedicated
system”
• Processorchip ingebouwd in een
apparaat
• Voert steeds hetzelfde programma uit
(uit ROM of Flash)
• Vaak met beperkte hardware: geen
cache, geen virtueel geheugen,…
• Vaak in ware tijd (real-time)
ca10-121
Typische configuratie
Analoog/
Digitaal
Conversie
Sensors
“input”
Proc
Digitaal/
Analoog
Conversie
Actuators
“output”
ca10-122
Voorbeelden
•
•
•
•
•
•
•
•
•
•
•
Digitale camera
Alarmsystemen
CD-spelers
Digitale tuners
Domoticasystemen
Afstandsbediening
Microgolfoven
Digitale uurwerken
Telefooncentrale
Netwerkapparatuur, modem
Displaysystemen
•
•
•
•
•
•
•
•
•
•
•
Printers
DVD-spelers
Elektronische agenda’s
Synthesizers
Scanners
GSM Satellieten
Auto’s
Treinen
Vliegtuigen
Raketten
Wapensystemen
ca10-123
Kenmerken
• Klein en licht (draagbare toepassingen)
• Vermogenverbruik minimaal: autonomie >
8 uur, warmteproductie aanvaardbaar.
• Robuust tegen vocht, hitte, vorst,
schokken, straling, enz.
• Interactie is met de buitenwereld:
“tijdigheid” is onderdeel van “correctheid”.
• Betrouwbaar: vliegtuigen, auto’s
• Zeer kostgevoelig: 1 cent x 1 miljoen = …
ca10-124
Ingebedde processors
• Vaak microcontrollers van 4,8 of 16 bit
(computersysteem op 1 chip: geheugen,
input/ouput, enz.)
• Vaak ook gewone processors
• Vermogenverbruik is cruciaal voor
mobiele toepassingen
ca10-125
Digitale-signaalprocessors
• DSP: Digital Signal Processor
• Gespecialiseerde processor om digitale
signalen (b.v. audiosignalen) te verwerken.
• CD-spelers, telefooncentrales,
elektronische muziekinstrumenten, enz.
• Vaak zeer complex en gespecialiseerd voor
het uitvoeren van
signaalverwerkingsalgoritmen: b.v. fast
Fourier transformatie (som van producten)
ca10-126
Inhoud
•
•
•
•
•
•
Soorten geheugens
Lokaliteit
Caches
Impact op prestatie
Ingebedde systemen
Eindbeschouwingen
ca10-127
Vervolg
Parallelle computersystemen
Superscalaire architecturen, outof-order architecturen,
interconnecties en vermogen,
prestatieanalyse, meerdradige
uitvoering, systeemarchitectuur
Digitale elektronica
Besturingssystemen
Procesbeheer, Synchronisatie,
hoofdgeheugen, Bestanden- en
schijfbeheer, Beveiliging,
Systeembeheer
Boole-algebra en functies,
combinatorische poortnetwerken,
teruggekoppelde circuits,
synchrone sequentiële circuits,
systeemrepresentaties, bestaande
bouwblokken, Decompositie en
compositie op logisch niveau,
Extensies naar R/T-niveau
Computerarchitectuur
ca10-128
Pauze
ca10-129
http://www.eetimes.com/document.asp?doc_id=13
26377&_mc=NL_EET_EDT_EET_review_201504
18&cid=NL_EET_EDT_EET_review_20150418&el
q=ffa1b73023664da4bccb7e28d21b2003&elqCam
paignId=22619&elqaid=25441&elqat=1&elqTrackI
d=dae6c67ea56d4963ba0fedcae4bdaaf6
ca10-130
Download