Documente Academic
Documente Profesional
Documente Cultură
SISTEME PIPELINE
Tehnica pipeline reprezint o metod de mbuntire a performanelor
unui procesor sau a unei uniti aritmetice prin executarea simultan a mai
multor instruciuni sau operaii. Aceast tehnic utilizeaz paralelismul, prin
suprapunerea fazelor de execuie ale instruciunilor sau a etapelor de execuie
ale unei operaii aritmetice. Un sistem pipeline poate fi comparat cu o linie de
asamblare a unui produs, n care exist mai multe posturi de lucru, fiecare dintre
acestea fiind specializat pentru o anumit operaie, iar la captul benzii este
obinut produsul final.
7.1. Structura unui sistem pipeline
Tehnica pipeline descompune un proces secvenial n mai multe
subprocese care sunt executate de uniti (etaje) diferite. Un etaj execut un
subproces i produce un rezultat intermediar, care reprezint o intrare pentru
etajul urmtor. Rezultatul final este obinut numai dup ce toate subprocesele
au trecut prin ntregul sistem pipeline. Figura 7.1 ilustreaz structura de baz a
unui sistem pipeline cu m etaje.
Unitate de Control
Date de
ieire
Date de
intrare
R1
C1
Etaj E1
R2
C2
Etaj E2
Rm
Cm
Etaj Em
Fig. 7.1
Un etaj Ei const dintr-un registru de intrare Ri i un circuit de prelucrare
Ci care poate fi secvenial, combinaional sau inteligent. Registrele pstreaz
rezultatele pariale pe msur ce acestea se deplaseaz prin sistemul pipeline.
Un semnal comun de ceas determin ca registrele s i schimbe starea n mod
sincron. In fiecare ciclu de ceas, fiecare etaj transfer rezultatele sale pariale la
urmtorul etaj i calculeaz un nou set de rezultate. Perioada semnalului de
ceas trebuie s fie suficient de mare pentru ca etajul cel mai lent s termine
execuia operaiei sale. In plus, trebuie s existe un interval de timp suficient
pentru ca un registru s memoreze datele elaborate de etajul anterior. Deci,
perioada ceasului trebuie s fie mai mare dect ntrzierea maxim a etajului
cel mai lent, plus timpul necesar pentru memorarea datelor ntr-un registru.
Intrare
D1, D2
Registru
Etaj 1
Circuit de
prelucrare
Registru
Etaj 2
Circuit de
prelucrare
Registru
Etaj 3
Circuit de
prelucrare
Ieire
Fig. 7.2
7.3. Sisteme pipeline de instruciuni
7.3.1. Principi
In cazul unei arhitecturi von Neumann, procesul de execuie a
instruciunilor implic mai multe faze. Mai nti, unitatea de control a
procesorului ncarc instruciunea din memoria cache sau din memoria
principal. Apoi, unitatea de control decodific instruciunea pentru a determina
tipul operaiei care trebuie executat. Dac operaia necesit operanzi, unitatea
de control determin adresa fiecrui operand dup care i ncarc din memoria
cache sau din memoria principal. Operaia este apoi executat i, n sfrit,
rezultatul este memorat n locaia specificat.
Un sistem pipeline de instruciuni mbuntete performanele unui
procesor prin suprapunerea prelucrrii mai multor instruciuni diferite. Acest
lucru se realizeaz prin divizarea procesului de execuie a instruciunilor n mai
multe faze. Un sistem pipeline de instruciuni este n mod normal transparent
programatorilor i este gestionat automat de ctre unitatea de control a UCP i
de ctre compilatoare.
In general execuia unei instruciuni se poate descompune n urmtoarele
operaii simple:
1. Extragerea instruciunii (IF - Instruction Fetch): aducerea instruciunii din
memoria cache sau din memoria principal.
Registru
Etaj 1
Extragere instruciune IF
Registru
Etaj 2
Decodificare instruciune ID
Registru
Etaj 3
ncrcare operanzi OF
Registre, memorii
cache, memorie
principala
Registru
Etaj 4
Execuie EX
Registru
Etaj 5
Scriere rezultate WB
Fig. 7.4
Ca un exemplu, se consider figura 7.5, care prezint execuia unei
secvene de patru instruciuni.
Cicluri
i1
i2
i3
IF
ID
OF
EX
WB
IF
ID
OF
EX
WB
IF
ID
OF
EX
WB
IF
ID
OF
EX
i4
WB
Fig. 7.5
In timpul primului ciclu, (o perioad de ceas) instruciunea i1 este ncrcat
din memorie. In cel de-al doilea ciclu, instruciunea i1 este decodificat n timp
ce instruciunea i2 este ncrcat din memorie. Acest proces continu pn
cnd toate instruciunile sunt executate. Ultima instruciune se termin dup opt
cicluri de ceas.
Dei, prin utilizarea tehnicii pipeline, crete viteza de execuie a
instruciunilor, aceast tehnic poate pune anumite probleme. Unele din aceste
probleme i soluiile posibile sunt prezentate n seciunile urmtoare.
7.3.2. Indisponibilitatea instruciunilor (The fetching problem)
In general, furnizarea rapid a instruciunilor pentru un sistem pipeline este
costisitoare din punct de vedere al resurselor necesare. O metod simpl pentru
mbuntirea gradului de utilizare al unui sistem pipeline este utilizarea
bufferelor pentru memorarea instruciunilor i a datelor care vor fi transmise la
intrarea sistemului. Gradul de utilizare al unui sistem pipeline este definit ca
raportul ntre timpul n care etajele sistemului sunt utilizate i timpul total. Un
sistem pipeline este utilizat 100% din timp dac fiecare etaj este utilizat n
fiecare ciclu de ceas.
In unele situaii, sistemul pipeline trebuie golit i rencrcat, de exemplu,
atunci cnd apare o instruciune de salt sau o ntrerupere. Timpul necesar
pentru rencrcare poate fi minimizat prin ncrcarea n avans a instruciunilor i
a datelor n memoria cache din cadrul procesorului, fapt care va permite
transferul acestora imediat la intrarea sistemului pipeline. Dac instruciunile i
datele necesare execuiei vor fi ncrcate i memorate n memoria cache nainte
ca acestea s fie necesare, sistemul pipeline va avea o surs continu de
informaii. Utilizarea unor algoritmi de prencrcare adecvai asigur faptul c
instruciunile potenial necesare vor fi disponibile n majoritatea timpului.
Dac, n schimb, nu este asigurat un flux continuu de instruciuni sau
operanzi, sistemul pipeline nu va fi alimentat corespunztor i vor exista etaje
care nu lucreaz n fiecare ciclu de ceas. In aceast situaie gradul de utilizare
al sistemului va scdea.
7.3.3. ntrzierea introduse de etaje (bottleneck problem)
Aceast problem se refer la complexitatea operaiilor executate de
etajele sistemului pipeline. Dac un etaj execut operaii mai complexe fa de
1
IF
2
ID
IF
3
OF
ID
Fig. 7.6
4
EX
OF
5
WB
EX
6
WB
1
IF
Cicluri
i1
i2
1
IF
2
ID
IF
3
OF
ID
2
ID
-
3
OF
-
4
EX
4
EX
IF
Fig. 7.7
5
WB
5
WB
ID
OF
EX
WB
OF
EX
WB
1
IF
2
ID
IF
3
OF
ID
IF
4
EX
OF
ID
IF
5
WB
EX
OF
ID
WB
EX
OF
WB
EX
WB
Fig. 7.8
Dac nu este posibil rearanjarea instruciunilor, ntrzierile necesare pot
fi realizate de ctre compilator prin inserarea un numr necesar de instruciuni
NOP (No Operation).
Exist trei tipuri principale de hazarduri de date: RAW (Read After Write),
WAR (Write After Read) i WAW (Write After Write). Numele hazardului indic
ordinea de execuie a operaiilor pentru a se obine un rezultat valid; dac
aceast ordine nu este respectat, se poate obine un rezultat invalid. Aceste
hazarduri sunt explicate n continuare. Se presupune c exist dou instruciuni
i1 i i2 , iar i2 trebuie executat dup i1 .
RAW. Acest de hazard indic faptul c i2 trebuie s citeasc sursa de
date dup ce i1 a scris aceast dat. Dac aceast ordine nu este respectat se
produce un rezultat invalid deoarece data din locaia citit nu a fost
reactualizat.
De exemplu, n secvena urmtoare:
; R2 = R3 + R4
i1 : ADD R2, R3, R4
; R5 = R2 + R1
i2 : ADD R5, R2, R1
se poate obine un rezultat invalid dac i2 citete registrul R2 nainte ca i1 s
scrie n acest registru.
WAR. Acest hazard indic faptul c i2 trebuie s scrie ntr-o anumit
locaie dup ce i1 a citit data coninut n acea locaie. Dac aceast ordine nu
este pstrat coninutul acelei locaii de memorie este alterat. De exemplu, n
secvena:
; R2 = R3 + R4
i1 : ADD R2, R3 , R4
; R4 = R5 + R6
i2 : ADD R4, R5, R6
R1, A
R2, B
R3, C
R4, D
R5, R1, R2
R2, R3, R4
R2, R2, R5
; R5 = A B
; R2 = C + D
; R2 = R2 + R5 = C + D + A * B
Starea instruciunilor
Lansat
Faza OF
terminat
Faza EX
terminat
Faza WB
terminat
LOAD R1, A
Da
Da
Da
Da
LOAD R2, B
LOAD R3, C
LOAD R4, D
MUL R5, R1, R2
ADD R2, R3, R4
ADD R2, R2, R5
Da
Da
Da
Da
Da
Da
Da
Da
Da
Da
Da
Da
Da
Da
Instruciune
nmulire
Adunare_1
Adunare_2
Da
Da
Nu
Registre surs
Registru
destinaie
RS1 Disp
Rs2
Disp
R1
R3
R2
R4
Da
Nu
R4
R5
R2
Da
Da
R2
3
R3
R4
R5
R6
Fig. 7.9
Presupunem c sistemul de calcul dispune de urmtoarele patru uniti
funcionale: o unitate de ncrcare i memorare - LOAD/STORE, o unitate de
nmulire, i dou uniti de adunare.
Tabela de stare a instruciunilor arat dac o instruciune este sau nu
lansat n execuie. Dac o instruciune este lansat n execuie, tabela arat n
care faz de execuie se afl instruciunea. Dup ce o instruciune este
ncrcat din memorie i decodificat, se va ncerca lansarea execuiei acesteia
Lansat
LOAD R1, A
LOAD R2, B
LOAD R3, C
LOAD R4, D
MUL R5, R1, R2
ADD R2, R3, R4
ADD R2, R2, R5
Faza OF
terminat
Faza EX
terminat
Faza WB
terminat
Da
Da
Da
Da
Da
Da
Da
Da
Da
Da
Da
Da
Da
Da
Da
Da
Da
Da
Da
Da
Da
Da
Da
Da
Nume
unitate
Ocupat
LOAD/STOR
E
nmulire
Nu
Registru
destinaie
Rd
Da
NU
Da
Adunare_1
Adunare_2
Registre surs
Disp
R5
R1
Da
R2
Da
R2
R2
Da
R5
Nu
R2
R3
R4
R5
R6
Fig. 7.10
Componenta principal n cazul metodei tabelei de rezultate este tabela
de stare a registrelor destinaie. Aceast tabel este utilizat pentru a soluiona
hazardurile de date ntre instruciuni. De fiecare dat cnd o instruciune este
lansat n execuie, registrul destinaie al instruciunii este marcat ca fiind
ocupat. Registrul destinaie rmne ocupat pn cnd execuia instruciunii este
terminat. Atunci cnd se pregtete lansarea unei noi instruciuni, sunt testai
operanzii acesteia pentru a nu exista conflicte ntre registre cu instruciunile
precedente a cror execuie nu a fost terminat.