Sunteți pe pagina 1din 12

1

Predic!ia salturilor

Predic!ia salturilor este o cerin!" important" n sistemele de calcul ce utilizeaz" intens
tehnica pipe-line. Prin predic!ia salturilor se optimizeaz" utilizarea structurii pipe-line
evitndu-se reini!ializarea acesteia dac" intruc!iunile corespunz"toare saltului n program au
fost nc"rcate n mod eronat.
n situa!ia unei instruc!iuni de salt condi!ionat instruc!iunea !int" nu poate fi ncarcat"
n pipe-line dect dup" ce s-a calculat adresa de salt #i nu s-a evaluat condi!ia de salt. Pentru
salturile necondi!ionate trebuie calculat" numai adresa de salt.
Pn" cnd aceste informa!ii snt disponibile structura pipe-line a#teapt" sau ncarc" o
instruc!iune tint" posibil"; n momentul cnd informa!iile snt disponibile se poate decide o
reini!ializare a structurii (n situa!ia n care n pipe-line s-au nc"rcat instruc!iuni !int" n mod
eronat). n ambele situa!ii apare o degradare a performan!ei structurii pipe-line. Utilizarea
predic!iei salturilor conduce la o atenuare a acestei degrad"ri de performan!" datorit"faptului
c" n majoritatea cazurilor instruc!iunile !int" snt nc"rcate correct.
Instruc!iunile de salt se impart n dou" categorii:
- salturi statice ( care se reg"sesc n codul binar #i snt cunoscute nainte de execu!ia
programului)
- salturi dinamice ( care apar n urma execu!iei #i nu snt cunoscute nainte de
execu!ie)
Predic!ia salturilor dinamice este mai dificil" dect predic!ia salturilor statice.

Ideea de baz" a predic!iei salturilor este memorarea istoriei fiec"rui salt (dac" s-a
efectuat sau nu s-a efectuat) #i luarea deciziei (salt efectuat / salt ne-efectuat) pe baza acestei
istorii. Se definesc anumite tipare (pattern) de diferite lungimi care indic" n timp dac" saltul;
s-a efectuat sau nu. Aceste tipare snt dependente de tipul de program care se execut".
Exist" mai multe tipuri de programe (task-uri):

T1 procesarea bazelor de date
T2 programe de c"utare, editare, compilare #i testare
T3 programe de rezervare hotelier", tranzac!ii bancare
T4 programe utilitare pentru manevrarea de date

n tabelul 1 snt prezentate num"rul de isnstruc!iuni de salt pentru fiecare tip de task:

T" T2 T3 T4
Num"rul total de
instruc!iuni
1,300,881 1,325,359 1,309,178 1,667,468
Num"rul salturilor
dinamice
285,528 321,441 312,865 359,550
Num"rul salturilor
statice
19,176 27,878 21,202 15,491

Predic!ia salturilor utilizeaz" un buffer de memorie ( BTB Branch Target Buffer)
care con!ine adresele instruc!iunilor !int" pentru fiecare salt precum #i informa!ia necesar"
predic!iei. Bufferul BTB este adresat cu ajutorul adresei instruc!iunii de salt. Deoarece n mod
evident nu se poate utilize un BTB excesiv de mare se vor utilize tehnici de mapare a adresei
instruc!iunii de salt n spa!iul de adresabilitate al BTB ( tehnici similare map"rii memoriei
cache). Dimensiunea bufferului BTB influen!eaz" rata de predic!ie (figura 1).

2


Figura 1. Varia!ia ratei de predic!ie func!ie de dimensiunea BTB


Dimensiunea mare a BTB poate fi n aparen!" un avantaj. Totu#i un BTB mare are
urm"toarele dezavantaje:
- se reduce din dimensiunea memoriei sistemului
- se stocheaz" adrese effective ( nu adrese fizice) ceea nsemn" c" la comutarea task-
urilor tot con!inutul BTB este inutil sau chiar contraproductiv

Metoda de mapare a BTB ( similar" memoriei cache ) influen!eaz" rata de predic!ie ca
n figura 2.



Figura 2. Varia!ia ratei de predic!ie func!ie de metoda de mapare a BTB

3
n situa!ia n care procesorul ncarc" mai mult de o singur" instruc!iune ntr-un ciclu
atunci bufferul BTB trebuie accesat pe blocuri de date. Rata de predic!ie va scadea u#or ca n
figura 3.




Figura 3. Varia!ia ratei de predic!ie func!ie de modul de adresare a BTB


Predic!ia direc!iei salturilor

Salturile condi!ionate snt prezise utiliznd informa!ia anterioar" despre modul cum s-
au efectuat aceste salturi.
Cea mai simpl" cale de predic!ie a saltului este aceea de a presupune c" un nou salt se
va efectua n aceea#i direc!ie ca salturile anterioare. O asemenea predic!ie se nume#te
predic!ie local" cu o istorie de 1 bit ( local prediction 1 bit history). Evident metoda este mai
bun" dac" istoria are mai mul!i bi!i care memoreaz" direc!ia saltului ( 1 se efectueaz" saltul, 0
nu se efectueaz" saltul). Tabelul 1 ilustreaz" modul de predic!ie a salturilor pentru un tipar de
3 bi!i.

Tabelul 1
Tiparul (pattern) Predic!ie Saltul urmator efectuat
este efectuat(%)
000 ne-efectuat (0) 7.8
001 ne-efectuat (0) 34.1
010 efectuat (1) 51.9
011 efectuat (1) 67.9
100 ne-efectuat (0) 32.6
101 efectuat (1) 64.4
110 efectuat (1) 79.1
111 efectuat (1) 97.7

Se utilizeaz" un registru de deplasare ( cu n bi!i pentru un predictor local cu istorie de
n bi!i). Acest registru de deplasare con!ine ultimele n decizii. Cel mai din stnga bit reprezint"
4
decizia cea mai veche. Construirea istoriei presupune ca bucla s" se fi executat de un anumit
num"r de ori timp n care saltul nu este predictibil).
Istoria fiec"rui salt este stocat" n bufferul BTB.
Analizele pe o gam" variat" de programe indic" faptul c" dac" num"rul de bi!i din
tipar cre#te rata de predic!ie cre#te. Totu#i prin ad"ugarea unui bit ( de la o istorie cu 2 bi!i la o
istorie cu 3 bi!i) cre#terea nu este semnificativ".
Se poate utiliza, pentru fiecare salt, un contor de 2 bi!i care este incrementat ori de cite
ori saltul se efectueaz" #i este decrementat ori de cite ori saltul nu se efectueaz". Opera!iile de
incrementare, respectiv decrementare, se efectueaz" cu saturare astfel nct contorul ia valorile
0,1,2 sau 3. Predic!ia se efectueaz" astfel : dac" valoare contorului este 0 sau 1 saltul nu se
efectueaz", dac" valoarea contorului este 2 sau 3 saltul se efectueaz". Aceast" schem" de
predic!ie poate fi asimilat" unui automat cu 4 st"ri ca n figura 4.

Figura 4. Schema de predic!ie cu contor de 2 bi!i cu saturare

Rezultatele experimentale ob!inute n literatur" pentru un predictor local cu istorie de
3 bi!i #i pentru un predictor cu contor de 2 bi!i cu saturare snt ilustrate n figurile 5 #i 6.



Figura 5. Predic!ia cu un predictor local cu istorie de 3 bi!i
5



Figura 6. Predic!ia cu un predictor cu contor de 2 bi!i cu saturare

O schem" de predic!ie a salturilor mai eficient" este schema de predic!ie adaptiv" cu 2
niveluri. Aceast" schem" presupune existen!a a 2 tabele: o tabel" BTB #i o tabel" de contori
de 2 bi!i cu saturare. Tabela BTB con!ine istoria pe n bi!i a fiec"rui salt; con!inutul BTB
adreseaz" tabela de contori; decizia se ia ca n cazul schemei de predicn cazul schemei de
predic!ie cu contor cu saturare; se actualizeaz" contorii #i tabela BTB. Schema de predic!ie
adaptiv" cu 2 niveluri este ilustrat" n figura 7.


Figura 7. Predic!ia adaptiv" cu 2 niveluri


n figura 8 este ilustrat" rata de predic!ie pentru un predictor adaptive cu 2 niveluri
func!ie de num"rul de bi!i de adres".


6


Figura 8. Evolu! ratei de predic!ie pentru predic!ia adaptiv" cu 2 niveluri


Predic!ia direc!iei salturilor bazat# pe istoria global#

Predic!ia bazat" pe istoria global" a salturilor utilizeaz" un singur registru n care se
memoreaz" istoria pentru toate salturile, n loc s" se nregistreze aceast" istorie separat pentru
fiecare salt.
Pentru fiecare salt executat direc!ia acestuia este nregistrat" n acest registru global
(GR Global Register) #i formeaz" un tipar (pattern) global. Pentru a prezice un anumit salt
trebuie luat" n considerare calea prin program urmat" pentru a se executa saltul.
n mod similar metodei de predic!ie adaptive cu 2 niveluri acest tipar global este
utilizat pentru a adresa o tabel" de contori cu saturare.
Metoda de predic!ie global" este ilustrat" n figura 9.


Figura 9. Predic!ia global" a salturilor

Avantajul metodei de predic!ie globale este acela c" se reduce dimensiunea tabelelor
utilizate pentru memorarea informa!iilor necesare predic!iei. Se pot prezice mai multe salturi
utiliznd o dimensiune de memorie specificat".
7
Problema care apare pentru aceast" metod" de predic!ie este aceea informa!iile pentru
diferite salturi interfer" ntre ele.
Exist" dou" scheme pentru predic!ia global" a salturilor: gselect #i gshare.
Ambele metode ncearc" s" resolve problema interfer"rii informa!iilor ntre salturi
printr-o adresare mai precis" a saltului.
Metoda gselect este ilustrat" n figura 10.


Figura 10. Metoda de predic!ie global" gselect
Adresarea tabelei de contori se realizeaz" utiliznd concatenarea unor bi!i din registrul
GR #i a bitilor mai pu!in semnificativi din adresa instruc!iunii de salt ca n tabelul 3.

Tabelul 3
Adresa instruc!iunii de salt Registrul GR Index n tabela de contori
(gselect)
0000 0000 0000 0001 0000 0001
0000 0000 0000 0000 0000 0000
1111 1111 0000 0000 1111 0000
1111 1111 1000 0000 1111 0000

Metoda gshare este prezentat" n figura 11.



Figura 11. Metoda de predic!ie global" gshare

8
Metoda gshare calculeaz" indexul pentru tabela de contori ca un XOR logic ntre bi!ii
din registrul GR #i bi!ii mai pu!in semnificativi ai adresei instruc!iunii de salt, ca n tabelul 4.

Tabelul 4
Adresa instruc!iunii de salt Registrul GR Index n tabela de contori
(gshare )
0000 0000 0000 0001 0000 0001
0000 0000 0000 0000 0000 0000
1111 1111 0000 0000 1111 1111
1111 1111 1000 0000 0111 1111

Metoda gshare elimin" situa!iile n care indexul pentru tabela de contori ia aceea#i
valoare pentru salturi diferite (tabelul 5).
Tabelul 5
Adresa instruc!iunii
de salt
Registrul GR Index n tabela de
contori (gselect )
Index n tabela de
contori (gshare )
0000 0000 0000 0001 0000 0001 0000 0001
0000 0000 0000 0000 0000 0000 0000 0000
1111 1111 0000 0000 1111 0000 1111 1111
1111 1111 1000 0000 1111 0000 0111 1111
Performan!ele metodelor de predic!ie global" gselect #i gshare snt illustrate n figurile
12. #i 13.



Figura 12. Rata de predic!ie pentru metoda de predic!ie global" gselect

9





Figura 12. Rata de predic!ie pentru metoda de predic!ie global" gshare



n practic" se utilizeaz" metode hibride care utilizeaz" 2 predictori ( de tipuri diferite).
n figura 13 este ilustrat" o metod" de predic!ie cu selec!ia predictorului.


10


Figura 13. Metoda de predic!ie a salturilor cu selec!ia predictorului


Analiza comparativ" a diferitelor metode de predic!ie este ilustrat" n figurile 14 -





Figura 14. Compara!ie ntre predic!ia local" cu BTB #i predic!ia adaptiv" cu 2 niveluri
(bimodal")


11
Figura 15. Compara!ie ntre predic!ia local" cu BTB,predic!ia adaptiv" cu 2 niveluri
(bimodal") #i predic!ia global"


Figura 16. Compara!ie ntre predic!ia local" cu BTB, predic!ia adaptiv" cu 2 niveluri
(bimodal"), predic!ia global" #i metoda gselect



Figura 17. Compara!ie ntre predic!ia local" cu BTB, predic!ia adaptiv" cu 2 niveluri
(bimodal"), predic!ia global", metoda gselect #i metoda gshare


12
Figura 18. Compara!ie ntre predic!ia local" cu BTB, predic!ia adaptiv" cu 2 niveluri
(bimodal"), predic!ia global", metoda gselect, metoda gshare #i predic!ia selectiv"

n concluzie predic!ia salturilor este influen!at" de urm"torii factori:

- identificarea corect" a saltului curent ( pentru metodele de predic!ie globale)
- metodele de predic!ie trebuie s" fie testate pe o gam" larg" de programe
- diferite metode de predic!ie opereaz" mai efficient pe diferite structuri de
instruc!iuni de salt
- predic!ia este influen!at" de combinarea mai multor tipuri de predictori

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