Sunteți pe pagina 1din 3

Problema 1

Un anumit procesor este implementat ca o structură pipeline cu 6 niveluri şi cu


avansarea datelor pentru eliminarea dependenţelor de tip RAW, dar fără predicţia
salturilor. Unitatea de execuţie este pe al cincilea nivel, ea fiind responsabilă şi de
actualizarea contorului de program în cazul instrucţiunilor de salt condiţionat. Pentru
instrucţiunile de salt necondiţionat contorul de program este actualizat la sfârşitul
nivelului al treilea.
Să se determine randamentul (eficienţa) structurii pipeline, considerându-se că
frecvenţa instrucţiunilor de salt necondiţionat este de 10%, a celor de salt condiţionat de
20%, iar probabilitatea alegerii saltului a fost estimată la 85%.
Randamentul pipeline-ului este raportul dintre creşterea de viteză reală (în prezenţa
dependenţelor) şi cea ideală (fără dependenţe sau cu gestiunea acestora fără sincope).
Fără să ştim detaliile referitoare la rolul tuturor nivelurilor de pipeline, putem să ne
imaginăm structura în felul următor:

Contorul de program este pe primul nivel (F), unitatea de execuţie (EX) pe al cincilea, iar
de pe nivelul al treilea mai avem o cale spre contorul de program.
Când o instrucţiune de salt necondiţionat ajunge în a 3-a etapă de procesare aceasta va
furniza contorului de program adresa de salt, astfel încât în următoarea perioadă de ceas
să se înceapă procesarea instrucţiunii de la adresa de salt. Instrucţiunile care au intrat în
pipeline după instrucţiunea de salt, adică cele din etapele întâia şi a doua, sunt anulate
(înlocuite cu NOP):

PC: n n+1 n+2 tg tg+1


Instr#n JMP tg F 2 3 4 EX
Instr#n+1 F 2 - -
Instr#n+2 F - -
Instr#tg F 2

Instrucţiunea de salt condiţionat este evaluată în etapa de execuţie. În cazul în care


condiţia de salt este adevărată, adresa de salt se va încărca în contorul de program la
sfârşitul acestei etape, astfel că în următoarea perioadă de ceas se va începe procesarea
instrucţiunii de la adresa de salt. Instrucţiunile care au fost citite după instrucţiunea de
salt condiţionat şi care sunt acum în etapele 2, 3 şi 4, precum şi instrucţiunea care este
citită (care se află în etapa 1, cea de Fetch) sunt anulate (înlocuite cu NOP):

PC: n n+1 n+2 n+3 n+4 tg


Instr#n JMPC tg F 2 3 4 EX 6
Instr#n+1 F 2 3 4 -
Instr#n+2 F 2 3 -
Instr#n+3 F 2 -
Instr#n+4 F -
Instr#tg F

Speedup-ul maxim pe care îl poate obţine un pipeline cu 6 niveluri faţă de procesorul


secvenţial dacă nu ar exista sincope datorate dependenţelor este 6. Procesorul ideal
execută câte o instrucţiune în fiecare perioadă de ceas.
În cazul implementării de faţă dependenţele de control impun anularea unora dintre
instrucţiunile intrate în procesare după instrucţiunile de salt. Cu excepţia instrucţiunilor
de salt care se termină cu salt propriu-zis, la fiecare perioadă de ceas este executată o
nouă instrucţiune. Salturile introduc sincope (pauze) în secvenţa de instrucţiuni, de câte
două perioade de ceas după fiecare instrucţiune de salt necondiţionat, respectiv de patru
perioade de ceas după fiecare instrucţiune de salt condiţionat executată cu succes.

Soluţia A
Faţă de timpul (exprimat în perioade de ceas) necesar procesării unei secveţe de
instrucţiuni pe procesorul pipeline ideal (fără dependenţe), implementarea de faţă
necesită un timp de execuţie mai lung (în procente) cu:

10%  2  20%  85%  4  88%

Primul termen este procentul de perioade de ceas introduse ca urmare a instrucţiunilor de


salt necondiţionate, iar al doilea termen este procentul de perioade de ceas introduse ca
urmare a instrucţiunilor de salt condiţionate (20%) terminate cu succes (85%).

Prin urmare timpul de execuţie va fi mai mare cu 88% faţă de cel al procesorului pipeline
ideal. Creşterea de viteză este de doar

Ts 6
speedup    3.19
T p 1.88

Randamentul pipeline-nului este raportul dintre creşterile de viteză practică şi ideală:

speedup real 3.19


randament    0.53  53%
speedup max 6

Soluţia B
Să presupunem, pentru uşurinţa calculelor, că la fiecare 200 de instrucţiuni consecutive
apar 20 de instrucţiuni de salt necondiţionat (10%) şi 40 de instrucţiuni de salt condiţionat
(20%). Dintre ultimele doar 34 (85%) se termină cu execuţia saltului. Aşadar, la cele 200
perioade de ceas necesare pentru execuţia celor 200 instrucţiuni în cazul ideal (când este
menţinut ritmul de o instrucţiune per ciclu de ceas) adăugăm câte 2 perioade de ceas de
pauză (câte două instrucţiuni NOP inserate) după fiecare instrucţiune de salt
necondiţionat şi câte 4 perioade de ceas de pauză (câte patru instrucţiuni NOP inserate)
după fiecare din cele 34 instrucţiuni de salt necondiţionat executate cu succes. Secvenţa
de 200 instrucţiuni va trece prin faza de execuţie într-un interval de:

200  20  2  34  4  376 perioade de ceas

Timpul de execuţie este mai lung cu 176 perioade de ceas:


376  200
 0.88  88%
200

S-ar putea să vă placă și