O unitate de predicție a ramurilor ( unitatea de predicție a ramurilor) este un dispozitiv care face parte din microprocesoare cu o arhitectură pipeline care prezice dacă un salt condiționat va fi efectuat într-un program executabil. Predicția de ramificație reduce timpul de inactivitate a conductei prin preîncărcarea și execuția instrucțiunilor care trebuie executate după ce o instrucțiune de ramificare condiționată este executată. Predicția ramurilor joacă un rol critic, deoarece în majoritatea cazurilor (precizia predicției ramurilor la procesoarele moderne depășește 90%) face posibilă utilizarea optimă a resurselor de calcul ale procesorului [1] .
Fără predicție de ramificare, conducta trebuie să aștepte până când instrucțiunea de ramificare condiționată este executată pentru a face următoarea preluare. Predictorul de ramură evită pierderea timpului încercând să descopere o ramură. Ramura este selectată pe baza rezultatelor anterioare ale verificării stării. Ramura dorită este apoi încărcată și executată parțial. Dacă apoi se constată că predicția a fost incorectă, rezultatele ramurii incorecte sunt aruncate și ramura corectă este încărcată în conductă, provocând o întârziere. Cantitatea de întârziere depinde de lungimea transportorului. Pentru procesorul Intel Core i7 , adâncimea conductei este de 14 etape.
„Jump prediction” ar trebui să fie diferențiat de „jump address prediction” . Scopul predicției adresei de ramificație este de a selecta adresa unei ramuri condiționate sau necondiționate înainte de decodificarea și executarea instrucțiunii de ramificație.
Există două metode principale de predicție a ramurilor:
Metodele de predicție a ramurilor statice sunt cele mai simple. Esența acestor metode este că diferite tipuri de tranziții:
În procesoarele moderne, metodele statice sunt utilizate numai atunci când metodele dinamice nu pot fi utilizate.
Un exemplu de predicție statică trivială implementată în procesoarele timpurii ale arhitecturilor SPARC și MIPS .
În acest caz, se presupune că ramura condiționată nu va fi niciodată executată.
Un exemplu de predicție statică implementată în procesoarele moderne.
În acest caz, se presupune că orice tranziție înapoi va fi efectuată, iar orice tranziție înainte nu. Metoda este folosită ca „plasă de siguranță”.
2a ISIP tat
Este analizat tabelul istoric de navigare. Tabelul contine:
Tabelul este actualizat după fiecare tranziție. Algoritmul modifică alegerea de ramificare dacă rezultatul condiției a deviat de două ori de la rezultatele anterioare. Folosirea celor mai puțin semnificativi biți ai adresei instrucțiunii permite ca mai multe instrucțiuni să fie prezise înainte de a fi decodificate.
Pentru primul nivel se realizează istoricul ultimelor k ramuri, pentru al doilea nivel, k indică tabelul șablon.
Fiecare ramură condiționată dintr-un domeniu are propriul său istoric de ramură. Modelele de tranziție pot fi partajate sau specifice.
Predicția globală a ramurilor nu stochează istoricul separat pentru fiecare tranziție, ci folosește istoricul general. Orice tipare în tranziții afectează această istorie, dar înregistrările irelevante pot polua istoria.
Un predictor hibrid poate alege rezultatele celor mai de succes predictori pe baza istoricului sau poate utiliza funcția majoritară a unui număr impar de predictori.
Predictorul de buclă poate folosi contorul de bucle pentru a număra numărul de salturi până la începutul buclei. Acest predictor poate fi utilizat într-un predictor hibrid.
O ramură indirectă poate avea mai mult de două ramuri. Cele mai recente procesoare au capacitatea de a selecta mai mult de două condiții folosind un predictor adaptiv pe două niveluri. Procesoarele fără suport pentru predicția indirectă a ramurilor pot utiliza predicția statică sau pot lua valoarea anterioară.
Tehnologii de procesoare digitale | |||||||||
---|---|---|---|---|---|---|---|---|---|
Arhitectură | |||||||||
Arhitectura set de instrucțiuni | |||||||||
cuvânt mașină | |||||||||
Paralelism |
| ||||||||
Implementări | |||||||||
Componente | |||||||||
Gestionare a energiei |