pipelineusers.utcluj.ro/~apateana/c_pipeline.pdf · [prof. jan m. rabaey, spring 2000, “computer...
TRANSCRIPT
Cresterea performantelor calculatoarelor
Pipeline
A N C A A P Ă T E A N - U T C N
CURS 12
2
Introducere
Introducere –reprezentarea informatiei in calculator. Tipuri de
calculatoare
Arhitectura calculatoarelor personale/ PC.
Istoria familiei de procesoare x86
Istoria calculatoarelor. Calculatorul von
Neumann.
Din interiorulPC-ului
Memoria in PC.
Memoria cache.
Echipamente periferice.
Control transfer de date.
Polling, Intreruperi, DMA.
Bus-uri si interfete folosite in PC.
ISA, PCI, PCIe,
IDE/ATA, SCSI, RS232, USB, IEEE 1284, etc
Din exteriorulPC-ului
Echipamente de stocare date: FD, HDD, SSD,CD/DVD, Flash USB
Echipamente de intrare-iesire: monitor,
tastatura, mouse, interfata grafica,
interfete audio, etc
Identificarea
si configurarea resurselor PC
Crestereaperformantelor
PC-ului
Clasificarea Flynn.
Paralelismul în prelucrarea datelor.
CISC vs RISC
Arhitecturi VLIW, EPIC,Prelucrare
secventiala si secvential-paralela
Pipeline/Superpipeline.
Scalar/Superscalar
Comparatie arhitecturi procesoare de uz general
(GPP), DSP, MicroC, DSC, SoC.
Evaluareaperformantelor
PC-ului
Evaluarea performantelor calculatoarelor. Benchmark-uri.
5.4. InstrucŃiuni pentru operaŃii cu şiruri
5.4.1. InstrucŃiuni pentru operaŃii primitive
A N C A A P A T E A N - U T C N
Tematica material
- prezentarea principalelor notiuni despre prelucrarea paralela(pipeline)
- intelegerea si asimilarea principapelor aspecte prin parcurgerea de exemple, exercitii adaptatepreluate din viata de zi cu zi
- intelegerea principalilor indicatori pipeline:
cresterea (castigul) vitezei / eficienta / rata de transfer prin exemple
- urmarirea principalelor probleme care pot sa apara in pipeline si propunerea de solutii pentrurezolvarea acestora
- urmarirea metodelor de crestere a performantelor procesoarelor actuale
A N C A A P Ă T E A N - U T C N
PipelineObiective curs
Exista paralelism :
- vizibil programatorului
=> tehnici noi de programare “concurenta”, adaptate arhitecturilor paralele – dificile, pt ca omulin mod natural are o gandire secventiala
- “ascuns” = ILP (Instruction Level II-ism)
– prin folosirea de arhitecturi de prelucrare de tip PIPELINE- din exterior, pare ca lucreaza secvential
(adica exista o singura secventa de executie a instructiunilor)
- in interior: exista de fapt mai multe unitati functionale ce prelucreaza in paralel mai multeinstructiuni aflate in faze diferite de executie
- e gestionat automat de unitatea centrala a CPU si compilator
Ex: linia de asamblare – ideal (teoretic): creste viteza de prelucrare
de un nr de ori egal cu nr posturilor de lucru
A N C A A P Ă T E A N - U T C N
PipelineParalelismul in prelucrarea datelor
Exemplul unei spalatorii de haine (movie)
4 persoane (Ann, Brian, Cathy, Dave) au haine ce trebuie spalate, uscate si calcate
Spalarea dureaza 30 minute
uscarea dureaza 40 minute
calcarea dureaza 20 minute
A B C D
PipelineUn exemplu cunoscut
A N C A A P A T E A N - U T C N
[Prof. Jan M. Rabaey, Spring 2000, “Computer Architecture in Cory Hall”]
Operarea secventiala a sarcinilor dureaza 6 ore pt cele 4 incarcaturi de haineDaca ar fi folosit pipeline, cat ar fi durat ?
A
B
C
D
30 40 20 30 40 20 30 40 20 30 40 20T
a
s
k
O
r
d
e
r
6 PM 7 8 9 10 11 Midnight
Time
13. PipelineUn exemplu cunoscut (2)
A N C A A P A T E A N - A C E P - U T C N
[Prof. Jan M. Rabaey, Spring 2000, “Computer Architecture in Cory Hall”]
Operarea folosind Pipeline dureaza 3.5 ore pt cele 4 incarcaturi de haine
A
B
C
D
6 PM 7 8 9 10 11 Midnight
T
a
s
k
O
r
d
e
r
Time
30 40 40 40 40 20
13. PipelineUn exemplu cunoscut (3)
A N C A A P A T E A N - A C - U T C N
[Prof. Jan M. Rabaey, Spring 2000, “Computer Architecture in Cory Hall”]
Incepe lucrul ASAP
Specificul liniei pipeline:mai multe sarcini realizate simultan,
in paralel
Eficienta liniei pipeline – afectata (redusa) de :- stagiul cel mai lent (durata lui)
(uscarea dureaza 40 minute vs 30 min sau 20 min)
- durata diferita (neechilibrata) a stagiilor pipeline - timpul de umplere si cel de golire al liniei pipeline
Castigul potential = nr de stagii pipeline
A
B
C
D
6 PM 7 8 9
T
a
s
k
O
r
d
e
r
Time
30 40 40 40 40 20
13. PipelineUn exemplu cunoscut (4)
A N C A A P A T E A N - A C - U T C N
[Prof. Jan M. Rabaey, Spring 2000, “Computer Architecture in Cory Hall”]
PipelinePipeline – ce este ?
p
A N C A A P A T E A N - U T C N
9
Pipelining = o metoda de imbunatatire a performantelor unui procesor sau a unei UAL in care mai multe instructiuni sunt suprapuse in executie
(se executa in paralel faze diferite ale instructiunilor).
- introdusa in 1964 prin calculatoarele IBM 7030 si CDC 6600- reintrodusa incepand cu 1985 de microprocesoarele RISC
Pipelining-ul este cheia vitezei procesoarelor actuale.
Viteza se obtine prin cresterea ratei de executie a instructiunilor.
Caracteristici pipeline - ideal:
- toate instructiunile sa aiba aceeasi lungime
- numar mic de formate de instructiuni
- operanzii din memorie sa apara numai in instructiuni de incarcare si salvare
- in gen sunt caracteristice pentru procesoarele RISC
- procesoarele 80x86 au instr de 1-17 octeti, nr mare de moduri de adresare, instructiuni cu operanzi in memorie => pt sisteme CISC, pipelining-ul e o mare provocare !
10
Un pipeline simplu O instructiune se executa in 3 pasi:F-Fetch, D-Decode, E-Execute
PipelineUn pipeline simplu cu 3 etaje
A N C A A P A T E A N - U T C N
F,D,E = operatii realizate de componente independente unele de altele- fiecare din aceste componente, imediat ce a terminat taskul curent, se pregateste pt urmatoarea operatie: - acest proces de creare a unei cozi de instructiuni = pipelining
F D E
T1 T2 T3
Instructiunea
7 cicluri
F D E
F D E
F D E
F D E
F D E
15 cicluri
F D E
T1 T2 T3
F D E
T1 T2 T3
F D E
T1 T2 T3
F D E
T1 T2 T3
F D E
T1 T2 T3
=> Mai mult de 50% din timp s-a salvat
11
Nr cicluri (fara pipeline): 3 x nr instruct- pt o arhit pipeline sunt necesare 2 cicluri pt “umplerea” structurii de pipeline =>
toate cele 3 componente ale CPU sunt ocupate, dar odata realizata aceasta umplere, se vaexecuta cate o instructiune la fiecare ciclu -> amortizarea sistemului
Nr cicluri (cu pipeline) = 2 + nr instruct- pe masura ce creste nr instruct, eficienta devine tot mai mare
Exemplu: a) comparati nr cicluri necesare pt executia a 50 instruct intre un CPU fara pipeline (secvential) si unul cu pipeline pt sistemul anterior, in care o operatie se executa in 3 stagii; b) acelasi enunt pt un nr de 1000 instructiuni; c) dar daca sistemul ar avea 8 stagii si ar executa 1000 instructiuni ?
Solutie:a) Nr cicluri (fara pipeline) = 3*50=150 cicluri
Nr cicluri (cu pipeline) = 2+50=52 cicluri=> s-au economisit 98 cicluri ! => doar 35% din timp e ocupat !
b) Nr cicluri (fara pipeline) = 3*1000=3000 cicluriNr cicluri (cu pipeline) = 2+1000=1002 cicluri
=> aprox 33,5% din timp e ocupat ! c) Nr cicluri (fara pipeline) = 8*1000=8000 cicluri
Nr cicluri (cu pipeline) = 7+1000=1007 cicluri=> doar 13,3% din timp e ocupat !
PipelineUn pipeline simplu cu 3 etaje (2)
A N C A A P A T E A N - U T C N
12
Principiul pipeline-ului este cel al liniei de montaj (de asamblare):- împărţirea unei sarcini în mai multe sub-sarcini de durate egale, numite etajesau stagii;- executarea simultană a diferitelor sub-sarcini din mai multe sarcini.
=> se măreşte debitul de sarcini al sistemului
Sistemul va fi caracterizat de 2 parametri: - durata individuală a unui etaj (T ) şi - numărul de etaje (l ) din pipeline.
Latenţa L este durata totală de execuţie a unei sarcini: L= l*T
IF ID OF EX WB
Instructiunea
Ex: O instructiune se executa in 5 pasi:1. (IF) Extragere instructiune din memorie 2. (ID) Decodificare instructiune3. (OF) Acces operand in memorie4. (EX) Executie operatie sau calcul adresa memorie5. (WB) Scrie rezultat intr-un registru
T1 T2 T3 T4 T5
PipelinePrincipiul pipeline
A N C A A P A T E A N - U T C N
13
Fazele de executie ale unei instructiuni: (exemplu)1.Incarcare instructiune – citeste instructiunea din memorie (instruction fetch=IF)2.Decodificare instructiune – identifica operatia de executat (instruction decoding=ID)3.Incarcare operand – adresarea si citirea operandului (operand fetch=OF)4.Executie instructiune – executa operatia specifica asupra operandului (execution=EX)5.Scriere rezultat- actualizarea operandului destinatie (write back =WB)
CPI=5 (cicluri per instructiune)
IF ID OF EX WB IF ID OF EX WB IF ID OF EX WB
Instructiunea 1 Instructiunea 2 Instructiunea 3
PipelineExecutia secventiala - arhitectura scalara
A N C A A P A T E A N - U T C N
14
IF ID OF EX WB IF ID OF EX WB
instrucţiunea i1 instrucţiunea i2Execuţie secvenţială: CPI = 5
T1 T2 T3 T4 T5 T6 T7 T8 T9 T10
Execuţie pipeline: CPI=1 (în cazul ideal) – o instructiune e gata intr-un singur ciclu !
i1
i2
i3
i4
i5
IF ID OF EX WB
IF ID OF EX WB
IF ID OF EX WB
IF ID OF EX WB
IF ID OF EX WB
T1 T2 T3 T4 T5 T6 T7 T8 T9 T10
Comparaţie între execuţia secvenţială şi executia de tip pipeline:
In acelasi ciclu de ceas, procesorul scrie rezultatul unei instructiuni in registri, executa operatia aritmetica a instructiunii urmatoare si citeste operanzii instructiunii de dupa instructiunea urmatoare.
PipelineExecutia paralela a instructiunilor
A N C A A P A T E A N - U T C N
15
Procesarea paralelă a instrucţiunilor într-o arhitectură pipeline, poate conduce, în cazul
ideal, la terminarea unei instrucţiuni la fiecare perioadă de
ceas:
ideal - o instrucţiune pe ciclu de ceas : CPI=1
În cazul ideal:performanţa se va îmbunătăţi de un număr de ori = cu numărul de
nivele ale arhitecturii pipeline.
IF ID OF EX WB
Instructiunea 2
IF ID OF EX WB
Instructiunea 3
IF ID OF EX WB
Instructiunea 1
IDEAL
Probleme cheie pt procesoarele paralele : - cum partajeaza datele; - cum se sincronizeaza; - numarul maxim de procesoare.
PipelineExecutia paralela a instructiunilor (2)
A N C A A P A T E A N - U T C N
16
Fie un sistem pipeline cu k stagii (etaje), cu durataciclului de ceas tp si care are de executat un numar de ninstructiuni (taskuri de intrare)
=> prima instructiune, de pe durata TI necesita k*tp timppentru a se executa in structura pipeline = “intarziere”, “latenta” -> executia completa a primului task- cele n-1 instructiuni ramase vor implica fiecare cate un timptp, deci (n-1)*tp pt a realiza toate cele n instructiunicu structura pipeline cu k etajesunt necesare (k*tp ) +(n-1)*tp = (k+n-1)*tp
sau k+(n-1) cicluri de ceas
PipelineCastigul obtinut prin pipeline
A N C A A P A T E A N - U T C N
17
Care este cresterea (castigul) vitezei / eficienta / rata de transfer obt cu structura pipeline ?
Fara pipeline (secvential): tsecvential = n*tn cicluri, unde tn=k*tp
castigul=Tsecvential / Tpipeline => castigul=n*tn / (k+n-1)*tp , cand n >> k, n-> infinit => k+n-1-> n => castigul=k*tp / tp = k=> castigul vitezei e de aproximativ k ori, adica nr de stagii !
Eficienta = Cresterea vitezei / k = n*k / [(k+n-1)*k] = n / k+n-1Eficienta= cresterea vitezei pe etaj are valoarea maxima=1 atunci cand n-> infinitCand n=1 => E= 1/k = valoarea minima ce se poate obtine
Rata de transfer R a unui sistem pipeline = nr de taskuri pe care le poateprelucra in unitatea de timp
R=n/Tpipeline= n / ((k*tp ) +(n-1)*tp ) = cresterea vitezei / k*tp
PipelineCastigul obtinut prin pipeline
A N C A A P A T E A N - U T C N
18
Exemplu:
Fie un sistem pipeline cu 5 stagii (etaje), cu durata ciclului de ceas 2,5 ns
si care are de executat un numar de 4 instructiuni (taskuri de intrare).
Sa se calculeze cresterea vitezei prin pipeline.
Solutie:
Pt executia secventiala sunt necesare: Tsecv=n*k*tp=4*5*2,5ns=50ns,
Iar pt cea cu pipeline sunt necesare Tpipe=k*tp+(n-
1)*tp=5*2,5+3*2,5=20ns
=> Cresterea vitezei = 50/20=2,5
PipelineCastigul obtinut prin pipeline(2)
A N C A A P A T E A N - U T C N
Timpul necesar executiei instructiunilor poate varia:
- 8086 si 8088— in medie 12 cicluri la executia unei instructiuni
- 286 si 386— imbunatatesc valoarea la aproximativ 4,5 cicluri pe
instructiune (CPI)
- 486 si majorit procesoarelor compatibile Intel generatia a IV-a:
aproximativ 2 cicluri pe instructiune (CPI)
- Pentium/K6 si alte procesoare din generatia a V-a — includ 2
benzi pipeline + alte imbunatatiri, ajungand la 1 sau 2 instructiuni pe
ciclu ceas (IPC) = 1/CPI !!!
- generatiile de procesoare P6/P7 si cele mai noi – pot executa 3 sau
mai multe instr pe ciclu ceas (IPC)
A N C A A P Ă T E A N - U T C N
PipelineCompararea procesoarelor GPP la executia paralela a instruct
Procesoare ce ruleaza la aceeasi viteza a ceasului au performante diferite, unele fiind mai rapide decat altele la realizarea unor sarcini.
De ex. Un 486 executa de 2x mai multe instructiuni decat un 386, in acelasi nr de cicluriPentium executa de 2x mai multe instructiuni decat un 486, in acelasi nr de cicluri
- un 486 la 133MHz nu e atat de rapid ca un Pentium la 75MHz, desi frecv ceasului e mai mare
- Pentium II si III sunt de aprox 50% ori mai rapide decat echivalentul lor Pentium la o anumita frecventa a ceasului pt ca pot executa instructiunile mai rapid- dupa Pentium III nu a mai fost atat de usor de comparat procesoarele doar pe bazavitezei ceasului -> au aparut arhitecturi interne mult diferite -> unele mai eficiente caaltele !
A N C A A P Ă T E A N - U T C N
PipelineCompararea procesoarelor la executia paralela a instruct
Procesor Adancimepipeline
Pentium III, M/Core
10 stagii
Athlon/XP 10 stagiiAthlon 64/ Phenom/ II
12 stagii
Core 2/i5/i7 14 stagiiPentium 4 20 stagiiPentium 4 Prescott/ D
31 stagii
A N C A A P Ă T E A N - U T C N
Un pipeline mai adanc (cu mai multe stagii sau etaje) -> imparte instructiunilein microinstructiuni mai mici
-> frecventa ceasului mai ridicata
- daca unitatile de predictie a salturilor sau executiilespeculative esueaza
=> intreaga linie trebuie golita si reumplutacu noile instructiuni
Numarul de etaje pipeline per CPU
PipelineInfluenta numarului de etaje pipeline
A N C A A P Ă T E A N - U T C N
Un CPU Intel CORE i7 executa mai multe instructiuni comparativ cu un Pentium III (ruland la aceeasi frecventa a ceasului)
in acelasi numar de cicluri de ceas (14 stagii vs 10 stagii)- desi odata cu cresterea adancimii pipeline-ului scade eficienta executieiinstructiunilor
(datorita posibilelor predictii eronate sau salturilor)frecventa ce rezulta e mai ridicata si poate compensa pierderea !
Ex: pt aceeasi tehnologie, un Pentium 4 poate rula la 3,4 GHz, iar un Athlon la doar 2,2 GHz- combinarea nr stagii mare + frecv ceas ridicata => cantitate de calduradisipata mare !!!
- in loc sa creasca frecventa ceasului, s-a optat pt cresterea performantelorprin combinarea mai multor procesoare intr-un singur chip (multi-core)
PipelineInfluenta numarului de etaje pipeline
Sistemele pipeline se fol. la executia a miliarde de instructiuni -> banda = cea care conteaza !
In timp, s-au adaugat circuite (componente arhitecturale) care saincerce sa prezica ce va face fiecare componenta a CPU imediat ce va
termina sarcina curenta- in caz ca predictia e eronata, sa nu se piarda nimic,
deci rezultatul sa fie ignorat- in caz pozitiv: timp salvat => cod executat mai rapid
- pipeline-ul permite executia simultana a mai multor instructiuni/operatii:fol paralelismul prin suprapunerea fazelor de executie ale instructiunilor saua etapelor de executie ale unei operatii (extragere, decodificare, executie si
salvare rezultat)
PipelineProbleme ale sistemelor pipeline
A N C A A P A T E A N - U T C N
O struct pipeline functioneaza eficient daca:- linia e complet incarcata si- nu exista situatii de oprire temporara a acesteia !
PROBLEMA este ca predictia trebuie sa fie corecta !- sa nu existe salturi prea multe in programe- de cate ori predictia e eronata, trebuie realizata din nou“umplerea” structurii
In realitate , exista anumite probleme care pot sa apara in pipeline: 1. Indisponibilitatea datelor2. Intarzieri produse de etaje3. Hazard
PipelineProbleme ale sistemelor pipeline
A N C A A P A T E A N - U T C N
1. Indisponibilitatea instructiunilor- exista situatii in care sist. pipeline trebuie golit si reincarcat: la aparitia instructiunilorde salt sau intreruperi- timpul de reincarcare poate fi minimizat prin incarcarea in avans a
instructiunilor/datelor in buffere(in memoria cache de exemplu)
- se fol algoritmi de preincarcare – se asigura ca instructiuni potential necesare vor fi disponibile- prin fol. acestor algoritmi, intarzierile datorate conflictelor de acces la memorie pot fi reduse2. Intarzieri produse de etaje- daca un etaj executa operatii mai complexe comparativ cu alte etaje
=> timpul necesar pt terminarea acestor operatii va creste=> perioada de ceas trebuie aleasa in functie de acesti timpi
-> scade performanta sistemului- solutii posibile: divizarea etajului respectiv in mai multe etaje,
realizarea de copii ale acelui etaj
A N C A A P Ă T E A N - U T C N
PipelineProbleme ale sistemelor pipeline (2)
1. Indisponibilitatea instructiunilor2. Intarzieri produse de etaje3. Situatii de HAZARD – daca o instructiune e disponibila, dar exista un alt motiv pt care ea nu poate fi executata
=> apare un hazard pt acea instructiuneHazardul = eveniment in pipeline care face ca instructiunea urmatoare sa nu poata fi executata
in urmatorul ciclu de ceas.Exista hazard: structural, de date, de control
A N C A A P Ă T E A N - U T C N
PipelineProbleme ale sistemelor pipeline (2)
27
hazardurile structurale= conflicte generate de partajarea resurselor, ex: registre, memorie- apar daca structura hardware-ului nu suporta unele combinatii de instructiuni in
acelasi ciclu de ceas, ca urmare a unui conflict de acces la o resursaEx: 2 faze diferite ale unor instructiuni consecutive solicita aceeasi unitate structurala.Solutionare: - introducerea de stari de asteptare
- reordonarea instructiunilor,- duplicarea/multiplicarea unitatilor solicitate/resurselor din conflict
(memorii separate pt date si instruct)hazardurile de control- apar atunci cand trebuie luata o decizie bazata pe rezultatul unei instructiuni intimp ce alte instructiuni sunt in diferite faze de executie- sunt produse de modificari in ``controlul” (ordinea de executie) a programului,
datorate in special instructiunilor de saltSolutii:- predictia salturilor, memorarea salturilor anterioare, intarzierea executiei salturilor- salt intarziat – instructiunea de dupa instruct de salt se excuta intotdeauna=> rearanjarea instruct de catre compilator sau asamblor, sau introducerea de noop
A N C A A P A T E A N - U T C N
PipelineProbleme ale sistemelor pipeline (3)
28
hazardurile structurale= conflicte generate de partajarea resurselor, ex: registre, memoriehazardurile de control- apar atunci cand trebuie luata o decizie bazata pe rezultatul unei instructiuni intimp ce alte instructiuni sunt in diferite faze de executiehazardurile de date– foarte dese si nu se poate pune baza pe compilator sau asamblor sa le rezolve prinrearanjarea instructiunilor- apar atunci cand o instr foloseste rezultatul instructiunii anterioare (care inca nu efurnizat - este inca in linia pipeline)- apar la existenta dependentelor de date intre instructiuni consecutive- instruct depinde de rezultatul unei instruct dinainte (care inca se executa in linia pipeline)Solutionare: Stari de asteptare, multiplicarea registrelor, reordonarea instructiunilor,forwarding (expedierea in avans a rezultatului catre instructiunea urmatoare), compilerscheduling – rezolvarea/ ordonarea instruct de catre compilator
A N C A A P A T E A N - U T C N
PipelineProbleme ale sistemelor pipeline (3)
Exemplul 1:Se consideră execuția a zece instrucțiuni �� � ��� pe o structură pipeline cu următoarele 4 stagii (etaje):IF (instruction fetch), ID (instruction decode), IE (instruction execute), IS (instruction results store)Se presupune că instrucțiunea �� este un salt conditional și căatunci când este verificată condiția de salt aceasta nu e satisfăcută (deci nu se execută saltul).=> Când instrucțiunea de salt �� este în stagiul IF (adică e adusă din memorie) pipeline-ulse blochează până când rezultatul executiei instrucțiunii de salt este stocat.Ilustrați succesiunea de instructiuni din structura pipeline (diagrama Gantt)
R:
Problema – diagrama Gantt
A N C A A P Ă T E A N - U T C N
Exemplul 2:
Se considera execuția următoarei secvențe de 3 instrucțiuni:
Se presupune că pipeline-ul are cinci etaje: IF, ID, OF(operand fetch), IE, IS.
R: diagrama Gantt:
Desi instrucțiunea ����� a fost decodificată cu success pe perioada k+2, aceasta instrucțiune nu poate înaintaîn etajul OF deoarece operandul ce ar trebui adus (OF) de instrucțiunea ����� pe perioada k+3 este rezultatuldin registrul R3 care va fi obținut abia în etajul IS al instrucțiunii ��� .Dependența datelor a apărut deoarece registrul R3 este destinația ambelor instrucțiuni ����� și ��� .
Problema – diagrama Gantt (2)
A N C A A P Ă T E A N - U T C N
������� � ����, ��, ��; �� ← �� � ������; �� ← �� �������, ��, ��; �� ← �� � ��
31
Cresterea performantelor procesoarelor actuale se realizeaza pe 3 cai de extindere a pipeline-ului:1. Superpipelining (pipeline cu mai multe etaje, de exemplu 8)=> scurtarea duratei ciclului de ceas (cresterea frecventei procesorului,
ex 500 MHz - 1 GHz) prin simplificarea operatiilor executate in fiecare etapa.2. Superscalar (multiplicarea componentelor interne ale procesorului)=> lansarea in executie a mai multor instructiuni simultan
(2, 4, 6, ... instruct in fiecare etapa a pipeline => 2, 4, 6 ... pipeline-uriparalele)=> CPI (clock per instr)=> IPC (instr’s per clock cycle) e actualLanseaza mai multe instructiuni in acelasi ciclu de ceas. Dependenta de date este insa verificata de hardware aditional. Daca nu pot fi lansate in paralel, se va executa cate o instructiune secvential (neavand suport din partea compilatorului, exista si aceasta posibilitate).3. Dynamic pipeline scheduling (planificare dinamica pipeline) => pentru a elimina hazardurile prin hardware, instructiunile sunt lansate in executie fara a respecta secventa lor (daca nu exista dependente de date).=> Control mai complicat. Alte modele de executie (diferite de cel secvential).
PipelineExecutia paralela a instructiunilor
A N C A A P A T E A N - U T C N
32
instr. i+2 IF ID OF EX WB
T1 T2 T3 T4 T5 T6
T1 T2 T3 T4 T5 T6
instr. i+1 IF ID OF EX WB
instr. i IF ID OF EX WB
CPI=1/2Arhitectura superscalara- lansarea simultană a mai multor instrucţiuni pe o perioadă de ceas, spre unităţi de execuţie multiple
CPI=1/2Arhitectura superpipeline- creşterea numărului de etaje pipeline şi lansarea succesivă a mai multor instrucţiuni pe o perioadă de ceas
Comparaţie între arhitectura superscalară şi superpipeline-pipeline cu 5 stagii
instr. i+3 IF ID OF EX WB
instr. i IF ID OF EX WB
instr. i+1 IF ID OF EX WB
instr. i+2 IF ID OF EX WB
instr. i+3 IF ID OF EX WB
PipelineExecutia paralela a instructiunilor
A N C A A P A T E A N - U T C N
33
Obiectiv: reordonarea instruct pt evitarea situatiilor de hazard si implicit pt cresterea perform 1) Planificarea statica:Reordonarea instructiunilor in faza de compilareVLIW – Very Long Instructiun Word - Gruparea instr in super-instructiuni foarte lungi
Lanseaza mai multe instructiuni in acelasi ciclu de ceas. Compilatorul trebuie sa se asigure ca nu exista dependente de date intre acestea. VLIW este constient de numarul de unitati de executie(La procesoarele superscalare, numarul de unitati de executie este transparent pentru setul
de instructiuni)EPIC (Explicitly Parallel Instruction Computing)
asemanator cu VLIW, implementat de procesoarele Itanium si in DSP-uri. -Diferenta majora dintre EPIC si VLIW este aceea ca versiunile de VLIW nu sunt compatibile cu versiunile mai vechi (versiunile de EPIC sunt) - versiuni diferite de VLIW au nr diferit de unitati de executie. -Unele procesoare analizeaza codul in timpul executiei - presupune hardware aditional complex.
Procesoarele EPIC deleaga aceasta sarcina compilatorului. -presupune : compilatorul precizeaza inca de la compilare ce intructiuni se vor executa in paralel-procesorul trebuie sa si poata executa in paralel multe instructiuni-=> un procesor EPIC are multi registri, multe pipelineuri si cai de date largi.
PipelineExecutia paralela a instructiunilor
A N C A A P A T E A N - U T C N
34
Obiectiv: reordonarea instruct pt evitarea situatiilor de hazard si implicit pt crestereaperformantelor1) Planificarea statica:Reordonarea instructiunilor in faza de compilare
2) Planificarea dinamica:- scop: eliminarea pauzelor (golurilor) in linia pipeline, ascunderea intarzierilor datorate memoriei(memory latency), executia speculativa a instr pe timpul cand se asteapta rezolvarea unui hazard Reordonarea instructiunilor in timpul executiei programuluiTehnici folosite: analiza fluxurilor de date, arbori de dependente, predictia salturilorInstructiunile sunt reordonate in timp ce sunt executate => poate sa gaseasca usor instructiuni care nu au dependenta de date intre ele, pentru a fi executate simultan.
PipelineExecutia paralela a instructiunilor
A N C A A P A T E A N - U T C N
35
Procesarea paralelă a informaŃiei conduce la îmbunătăŃirea performanŃelor globale ale maşinii, fărămodificarea ciclurilor de bază ale procesorului.
CondiŃia de funcŃionare a arhitecturilor care permit execuŃia în paralel a mai multor instrucŃiuni:instrucŃiunile să fie independente.
Pipelining-ul = o tehnica care exploateaza paralelismul dintre instructiunile unui program secvential.
Avantajul substantial fata de multiprocesoare: pipelining-ul este fundamental invizibil (transparent) pentruprogramator.
Pipelining-ul creste- nr de instructiuni executate simultan- rata la care instructiunile sunt lansate si terminate.
Pipelining-ul nu scade timpul de executie al unei instructiuni (pentru unele instr acest timp creste - ex: 5 ciclide ceas pentru toate instr)
Setul de instructiuni poate simplifica sau complica munca proiectantilor de pipeline prin hazardurile care potsa apara: structurale, de control si de date.
Tehnici care rezolva problemele legate de hazarduri: predictia salturilor, expedierea in avans, pauzele (nop).
PipelineConcluzii
A N C A A P A T E A N - U T C N
36
Fiecare inovatie (pipeline-uri lungi, executie superscalara, predictie dinamica a ramificarilor) inseamna un consum de milioane de tranzistoare asigurate de avansurile tehnologice.
Cele mai multe dificulati ale pipeliningului vin de la un set de instructiuni complicat- instruct cu lungimi foarte variabile => dezechilibrarea incarcarii etapelor pipeline- complicarea severa a detectiei hazardurilor si gestiunii exceptiilor;- moduri de adresare sofisticate, cu mai multe accese la memorie
=> complica detectia hazardurilor si complica fluxul prin pipeline
Cresterea vitezei e limitata de:- hazardurile de date => cresc timpul/instr prin mai multi cicli de ceas cu goluri- hazardurile de control => lungirea pipeline-ului inseamna ramificari mai lente- gestionarea registrelor pipeline limiteza descresterea lungimii ciclului de ceas.
PipelineConcluzii
A N C A A P A T E A N - U T C N
Pipeline
Bibliografie principala
p
A N C A A P A T E A N - U T C N
37
[Barr2005] – Mostafa Abd-El-Barr, Hesham El-Rewini– “Fundamentals of Computer Organization and Architecture”, 2005
[Baruch2000] - Zoltan Baruch – “Arhitectura calculatoarelor”, Editura Todesco, 2000
[Brey1997] - Barry B. Brey- “The Intel Microprocessors”, 4th edition, 1997
[Henessy2007] - John Hennesy, David Patterson – “Computer Architecture – A quantitative Approach” , 2007
[Hide2001] - Randall Hide – “The Art of Assembly Language”, beta edition
[Lupu2012] – Eugen Lupu, Simina Emerich , Anca Apatean– “Initiere in Limbaj de Asamblare x86. Lucrari practice, teste si probleme”, Editura Galaxia Gutenberg, 2012
[Mueller2012] - Scott Mueller – “Upgrading and Repairing PCs”, 20th edition, 2012
[Null2003] - Linda Null, Julia Lobur– “The essentials of Computer Organization and Architecture”, 2003
[Patterson2009] – David Patterson, John Hennesy– “Computer Organization and Design – the hardware/software interface”, 4th edition, 2009
[Tarnoff2007] - David Tarnoff– “Computer Organization and Design Fundamentals”, editia intai revizuita, 2007