Documente Academic
Documente Profesional
Documente Cultură
MICROPROCESOARE
2018
CURS 12 – PROCESOARE PIPEPLINE
INTEL PENTIUM
ș.l. dr. ing. Radu PIETRARU
radu.pietraru@aii.pub.ro
CONCEPTE CHEIE
3
STRUCTURA GENERALĂ A PROCESORULUI
PIPELINE (1)
Input Output
Processing Processing Processing
Latch Latch Latch
circuit circuit circuit
4
Clock
p – perioada ceasului
p
tb – Timpul maxim de
efectuare a unei functii într-
o treaptă
tl – Timpul necesar latch-ului
tb pentru acceptarea datelor
tl
de intrare
STRUCTURA GENERALĂ A PROCESORULUI
PIPELINE (2)
6
PIPELINE PENTRU INSTRUCȚIUNI (1)
În general, execuția instrucțiunii se poate
descompune în următoarele operații mai simple:
Latch
Instruction
Decode Stage 2
ID
Latch
Operand
Fetch Stage 3
OF
Registre,
Memorie principala,
Latch
Memorie cache
Execution Stage 4
EX
Latch
Write back
Stage 5
WB
PIPELINE PENTRU INSTRUCȚIUNI (3)
Perioada= P
Dacă P = 10 ns, 4 instrucțiuni sunt executate în
80 ns:
Tpipe = m * P + (n–1) * P = 5 * 10 + (4–1) * 10 = 80
Tsec = n * m * P = 4 * 5 * 10 = 200 ns.
1 2 3 4 5 6 7 8
Instr.
i1 IF ID OF EX WB
i2 IF ID OF EX WB
i3 IF ID OF EX WB
i4 IF ID OF EX WB
9
SITUAȚII DE HAZARD – HAZARD STRUCTURAL
Conflict privind resursele intre instrucțiuni.
Generat de
proiectare: daca execuția nu este complet pipeline, secvența
următoare de instrucțiuni nu poate fi emisă la perioade ale
ceasului. Se rezolvă prin replicare;
tipul resurselor (exemplu: registrele care nu sunt
multiport).
10
HAZARD DATORAT DATELOR (1)
I1 Add R2, R, R4 R2 = R3 + R4
1 2 3 4 5 6
i1 IF ID OF EX WB
i2 IF ID OF EX WB
11
HAZARD DATORAT DATELOR (2)
1 2 3 4 5 6 7 8
i1 IF ID OF EX WB
i2 – – IF ID OF EX WB
1 2 3 4 5 6 7 8
i1 IF ID OF EX WB
12
i2 IF ID – – OF EX WB
HAZARD DATORAT DATELOR (3)
Introducerea de intârzieri se face cu ajutorul
“pipeline interlocks“ – hardware care detectează
dependența unei instrucțiuni de precedenta și
întârzie instrucțiunile interdependente până la
soluționarea conflictului.
15
HAZARD DATORAT DATELOR (6)
RAW – discutat anterior: i2 citește sursa înainte
ca i1 să o înscrie – rezultat incorect.
19
METODA TOMASULO (1)
Arhitectura hardware este compusă din 5
registre, numite R1, R2, … , R5, un sumator
(Adder) și un multiplicator (Multiplier), ultimele
fiind numite unități funcționale sau stații de
rezervare (reservation stations).
6, 7 – sumatoarelor virtuale
8, 9 – multiplicatoarelor virtuale
22
METODA TOMASULO (4)
23
METODA TOMASULO (5)
Multiplier Adder
Rezultat Rezultat
24
METODA TOMASULO - EXEMPLU
Se consideră secvența
25
METODA TOMASULO (6)
a) i1 emisă catre add station A1
busy bit al lui R2 - set (1)
source -1 încărcat cu (R3), source - 2 – cu (R4)
tagul lui R2 înscris cu 6 (codul lui A1)
27
f) Se execută i2 pe A2, rezultatul in R2.
METODA TOMASULO (8)
Deși hardware-ul suplimentar sugerat de metoda
Tomasulo permite creșterea gradului de execuție
concurentă, un rol important revine și
compilatorului
28
METODA TOMASULO (9)
Ex.: (A * B) + (C + D)
Load R1, A
Load R2, B
Load R3, C
Load R4, D
apoi:
a Mul R5, R1, R2 b Mul R5, R1, R2
Add R5, R5, R3 Add R4, R3, R4
Add R4, R5, R4 Add R4, R4, R5
Load R2, B D D D D
Load R3, C D D D D
Load R4, D D D D
33
DESTINATION REGISTER STATUS – INSTANTANEU 1
R1 R2 R3 R4 R5 R6
Unit ID 3 1 2
34
INSTANTANEU DUPĂ EMITEREA PRIMEI
INSTRUCȚIUNI ADD (1)
36
INSTANTANEU DUPA EMITEREA PRIMEI
INSTRUCȚIUNI ADD (3)
38
INSTRUCTION STATUS – INSTANTANEU 2
Instrucțiune Iss OF Ex WB
Load R1, A D D D D
Load R2, B D D D D
Load R3, C D D D D
Load R4, D D D D D
40
DESTINATION REGISTER STATUS – INSTANTANEU 2
R1 R2 R3 R4 R5 R6
Unit ID 4 2
41
SCOREBOARD – COMENTARII (1)
În primul instantaneu: al 4-lea load în curs de
execuție, primele 3 terminate. Al 4-lea load nu a
înscris încă R4. Multiplicatorul executa Mul,
Adder-0 așteaptă pe R4 (RAW hazard). Al 2-lea
Add nu poate fi emis deoarece folosește R2 ca
destinație, dar R2 este deja folosit de Add-1.
În instantaneul următor: Adder-1 termină
înaintea multiplicatorului, scrie rezultatul în R2
și se emite a 2-a instrucțiune add către Adder-2.
Adder-0 este împiedicat să scrie rezultatul în R2
până când multiplicatorul citește operatorii
(WAR hazard). 42
SCOREBOARD – COMENTARII (2)
44
CONTROL HAZARD (2)
Cel mai dificil de manipulat: salt condiționat
Branch penalty
1 2 3 4 5 6 7 8 9 10 11
i1 IF ID OF EX WB
i2 IF ID OF EX WB
i3 IF ID OF EX
i4 IF ID OF
i5 IF ID
ik IF ID OF EX WB
ik+1 IF ID OF EX WB
46
BRANCH PREDICTION – PREDICȚIA
PRIVIND EXECUȚIA INSTRUCȚIUNII DE SALT
47
BRANCH PREDICTION (1)
In cazul predicției statice decizia este luată
inainte ca programul să ruleze, de ex. se execută
salt. O altă posibilitate: decizia luata în funcție
de tipul saltului.
Corect
Corect
Predict target path Predict target path
10 11
Gresit
Gresit Gresit
Corect
50
MECANISM DE PREDICTIE – EXEMPLUL 2
Corect
Corect
Predict target path Predict target path
10 11
Gresit
Gresit
Gresit
Corect
Predict sequential Predict sequential Corect
path path
01 00
Gresit
51
PREDICȚIE (1)
Se folosește o mică memorie cache, numită
„branch target buffer“ (BTB) sau „target
instruction cache“ (TIC).
Elementul memorat în cache conține adresa
instructiunii de salt în adresa țintă și „istoria“
utilizată de schema de predicție.
La prima execuție a instrucțiunii de salt datele ei
sunt înregistrate în BTB.
La extragerea codului, procesorul caută în BTB.
Când există date despre instrucțiunea extrasă –
istoria servește la luarea deciziei.
52
PREDICȚIE (2)
Predicția statica: necesită hardware modest, dar
un compilator complex.
În general, predicția dinamică este mai eficientă.
53
EFECTUAREA ÎNTÂRZIATĂ A SALTULUI (1)
54
EFECTUAREA ÎNTÂRZIATĂ A SALTULUI (2)
De exemplu, un procesor cu intârziere de k
instrucțiuni în efectuarea saltului, execută k
instrucțiuni urmând celei de salt, după care
fie continuă,
fie alege traseul către o nouă adresă țintă.
55
Când nu se poate, completarea se face cu NOP.
EXEMPLU (1)
Codul original:
I1: Load R1, A
56
EXEMPLU (2)
Codul modificat de complilator (s-a consid. k = 2):
I2: Load R2, B
NOP
Superscalar
Superpipeline
59
SUPERSCALAR
Se bazează pe paralelism spațial (operații
multiple rulând în paralel pe hardware separate).
Execuția mai multor instrucțiuni într-o singură
perioadă de ceas se realizează prin emiterea de
instrucțiuni către unități de execuție multiple.
Un procesor superscalar conține unul sau mai
multe pipeline folosind, în comun, un set de
unități funcționale (add, multiply, divide, floating
point, graphic).
Se folosește un mecanism de gestiune de ex.
Scoreboard sau Tomasulo.
60
SUPERPIPELINE
Creșterea de performanță - realizată prin
suprapunerea executării mai multor instrucțiuni într-
o structura pipeline.
Aceasta are mai multe trepte decât una obișnuită
►operații mai simple ► viteza ceasului crește.
63
INTEL 486
Primul circuit din familia x86 cu arhitectură
internă pipeline.
5 trepte de execuție:
Instruction Fetch
Stage Decode 1
Stage Decode 2 (address generation)
Execution
Register Write-Back
64
INTEL PENTIUM I (P5)
Caracteristică
superscalară: două linii
pipeline (U și V) pentru
instrucțiunile cu întregi
Pipeline-ul V putea
executa doar anumite
instrucțiuni
Instrucțiuni ce puteau fi
rulate doar pe pipeline-
ul U: ADC, SBB, SHR,
SAR, SHL, SAL, ROR,
ROL, RCR, RCL
65
INTEL PENTIUM I (P5)
66
INTEL PENTIUM I (P5)
Pentru instrucțiunile FPU treapta E este
înlocuită cu alte trei trepte (X1, X2, WF).
67
BTB – BRANCH TARGET BUFFER
68
INTEL PENTIUM I MMX (P5)
La fel ca și în cazul FPU instrucțiunile MMX sunt
executate pe o linie pipeline dedicată
69
INTEL PENTIUM PRO, PENTIUM II,
PENTIUM III
70
INTEL PENTIUM II MICROARHITECTURE
71
FETCH/DECODE UNIT
72
DISPATCH/EXECUTE UNIT
73
RETIRE UNIT / BUS INTERFACE UNIT
74
INTEL NETBURST MICROARHITECTURE
(PENTIUM 4, 4HT, 4E, PENTIUM D)
Principalul scop al
arhitecturii Netburst a fost
creșterea frecvenței de
funcționare prin
fragmentarea structurii
pipeline (>20 trepte).
O întoarcere la o
microarhitectură
asemănătoare cu PII,PIII
cu un mecanism pipeline
mai scurt (10-14 trepte).
Mecanism de branch
prediction mai complicat (3
trepte în loc de 2).
76
INTEL CORE MICROARHITECTURE
(CORE 2, CORE 2 DUO, XEON 3000, XEON
1500)
Continuare a
arhitecturii Core
Solo. Poate
prelucra 4
microinstrucțiuni
per ciclu mașină
(față de 3).
O microarhitectură
cu acoperire
completă
(dispozitive mobile,
desktop, servere).
77
INTEL NEHALEM MICROARHITECTURE
(CORE I, XEON 5500)
Cache-ul L1 și L2 separat.
78
DEZVOLTĂRI ULTERIOARE
Sandy Bridge continuă linia de dezvoltare Core 2
și Nehalem. Adaugă un cache de
microinstrucțiuni după partea de decodare.
Mărește operandul FPU de la 128 biți la 256 biți.
Haswell – poate citi câte două cuvinte per ciclu
mașină din memoria cache de date. Numărul de
unități funcționale crescut la 8 (de la 6).
79
INTEL ATOM MICROARHITECTURE
In-Order
Execution.
80
AMD K8 (ATHLON, ATHLON XP)
81
EPIC: INTEL ITANIUM
82
INTEL ITANIUM BLOCK DIAGRAM
83