Documente Academic
Documente Profesional
Documente Cultură
MICROPROCESOARE
2014
CURS 12 PROCESOARE PIPEPLINE
INTEL PENTIUM
.l. dr. ing. Radu PIETRARU
radu.pietraru@aii.pub.ro
Input
Processing
circuit
Latch
Processing
circuit
Latch
Processing
circuit
Clock
p perioada ceasului
tb
tb Timpul maxim de
efectuare a unei functii
ntr-o treapt
tl
Latch
IF
ID
OF
EX
WB
PIPELINE PT.
INSTRUCIUNI
Latch
(2)
Instruction
Fetch
IF
Stage 1
Latch
Instruction
Decode
ID
Stage 2
Latch
Operand
Fetch
OF
Registre,
Memorie principala,
Memorie cache
Stage 3
Latch
Execution
EX
Stage 4
Latch
Write back
WB
Stage 5
Instr.
i1
i2
i3
i4
IF
ID
OF
EX
WB
IF
ID
IF
OF
ID
EX
OF
WB
EX WB
IF
ID
OF
EX
WB
8
Generat de
proiectare: daca execuia nu este complet pipeline, secvena
urmtoare de instruciuni nu poate fi emis la perioade ale
ceasului. Se rezolv prin replicare;
tipul resurselor (exemplu: registrele care nu sunt
multiport).
R2 = R3 + R4
R5 = R2 + R1
i1
i2
IF
ID
OF EX WB
IF
ID
OF EX WB
10
i1
IF
ID
OF
EX
WB
IF
ID
3
OF
4
5
EX WB
i2
i1
i2
1
IF
2
ID
IF
ID
OF
EX
WB
OF
EX WB
11
Add
Add
Add
Add
R2, R3, R4
R5, R2, R1
R6, R6, R7
R8, R8, R7
12
i1
i3
i4
i2
Add
Add
Add
Add
1
IF
R2, R3, R4
R5, R2, R1
R6, R6, R7
R8, R8, R7
2
ID
IF
3
OF
ID
IF
4
EX
OF
ID
5
6
7
8
WB
EX WB
OF EX WB
IF
ID
OF
EX
WB
13
Add
Add
R2, R3, R4
R4, R3, R6
WAW
i1
i2
Add,
Mul
R2, R3, R4
R2, R3, R6
16
Tomasulo
Scoreboard
18
20
21
22
8
9
Tag Source 1
Busy
Tag Source 2
Tag
M1
M2
Register
6
7
R1
R2
R3
R4
R5
Set
registre
Tag Source 1
Tag Source 2
Multiplier
Adder
Rezultat
Rezultat
A1
A2
23
Se consider secvena
I1:
I2:
24
25
26
hardware software
Load R1, A
Load R2, B
Load R3, C
Load R4, D
apoi:
a
Mul R5, R1, R2
Add R5, R5, R3
Add R4, R5, R4
28
29
30
Iss
D
OF Ex
D
D
WB
D
Load R2, B
Load R3, C
Load R4, D
31
Unit
Name
Busy
Destination
Register
Source Register
Load /
Store
R4
Mult
R5
R1
R2
Add-1
R2
R3
R4
Add-2
32
Unit ID
R2
R3
R4
R5
R6
33
34
35
Iss
D
OF Ex
D
D
WB
D
Load R2, B
Load R3, C
Load R4, D
38
Unit
Name
Busy
Destination
Register
Source Register
RS1 Ready RS2 Ready
Load /
Store
Mult
Add-1
Add-2
R5
R1
R2
R2
R5
R2
39
R2
R3
R4
R5
R6
40
41
42
salt necondiionat;
salt condiionat;
bucl.
43
44
i2
i3
i4
i5
ik
ik+1
IF
ID
OF
EX
WB
IF
ID
OF
EX
WB
IF
ID
OF
EX
IF
ID
OF
IF
ID
IF
10
ID
OF
EX
WB
IF
ID
OF
EX
11
WB
45
46
47
48
Corect
Predict target path
11
Corect
Gresit
Gresit
Gresit
Corect
Predict sequential
path
00
Predict sequential
path
01
Corect
Gresit
49
Corect
Predict target path
11
Corect
Gresit
Gresit
Corect
Predict sequential
path
01
Gresit
Predict sequential
path
00
Corect
Gresit
50
PREDICIE (1)
Se folosete o mic memorie cache, numit
branch target buffer (BTB) sau target
instruction cache (TIC).
Elementul memorat n cache conine adresa
instructiunii de salt n adresa int i istoria
utilizat de schema de predicie.
La prima execuie a instruciunii de salt datele ei
sunt nregistrate n BTB.
La extragerea codului, procesorul caut n BTB.
Cnd exist date despre instruciunea extras
istoria servete la luarea deciziei.
51
PREDICIE (2)
Predicia statica: necesit hardware modest, dar
un compilator complex.
n general, predicia dinamic este mai eficient.
Pentru evaluarea performanelor trebuie stabilit
numrul de cicluri pe instruciunea de salt.
Dou posibiliti: predicie corect sau fals.
n cazul celei corecte, penalizarea este d cnd
traseul este corespunzator saltului i 0 n cazul
traseului secvenial.
52
53
54
EXEMPLU (1)
Codul original:
I1: Load R1, A
I2: Load R2, B
I3: BRZ R2, I7
I4: Load R3, C
I5: Add R4, R2, R3
I6: Mul R5, R1, R2
I7: Add R4, R1, R2
; salt la I7 daca R2 = 0
; R4 = R2 + R3
; R5 = R1 * R2
; R4 = R1 + R2
55
EXEMPLU (2)
Codul modificat de complilator (s-a consid. k = 2):
I2: Load R2, B
I3: BrzR2, I7
; salt la I7 daca R2 = 0
I1: Load R1, A
NOP
I4: Load R3, C
I5: Add R4, R2, R3
; R4 = R2 + R3
I6: Mul R5, R1, R2
; R5 = R1 * R2
I7: Add R4, R1, R2
; R4 = R1 + R2
56
57
ALTE METODE
Superscalar
Superpipeline
58
SUPERSCALAR
Se bazeaz pe paralelism spaial (operaii
multiple rulnd n paralel pe hardware separate).
Execuia mai multor instruciuni ntr-o singur
perioad de ceas se realizeaz prin emiterea de
instruciuni ctre uniti de execuie multiple.
Un procesor superscalar conine unul sau mai
multe pipeline folosind, n comun, un set de
uniti funcionale (add, multiply, divide, floating
point, graphic).
Se folosete un mecanism de gestiune de ex.
Scoreboard sau Tomasulo.
59
SUPERPIPELINE
60
61
INTEL 486
Primul circuit din familia x86 cu arhitectur
intern pipeline.
5 trepte de execuie:
Instruction Fetch
Stage Decode 1
Stage Decode 2 (address generation)
Execution
Register Write-Back
63
Caracteristic
superscalar: dou linii
pipeline (U i V) pentru
instruciunile cu ntregi
Pipeline-ul V putea
executa doar anumite
instruciuni
Instruciuni ce puteau fi
rulate doar pe pipelineul U: ADC, SBB, SHR,
SAR, SHL, SAL, ROR,
ROL, RCR, RCL
64
65
66
67
68
69
70
FETCH/DECODE UNIT
71
DISPATCH/EXECUTE UNIT
72
73
75
77
DEZVOLTRI ULTERIOARE
Sandy Bridge continu linia de dezvoltare Core 2
i Nehalem. Adaug un cache de
microinstruciuni dup partea de decodare.
Mrete operandul FPU de la 128 bii la 256 bii.
Haswell poate citi cte dou cuvinte per ciclu
main din memoria cache de date. Numrul de
uniti funcionale crescut la 8 (de la 6).
78
In-Order
Execution.
79
80
81
82