Execuție extraordinară

Execuția în afara ordinii instrucțiunilor de mașină  este executarea instrucțiunilor de mașină nu în ordinea în care apar în codul mașinii (cum era atunci când se executau instrucțiunile în ordine ( eng .  execuție în ordine )), ci în ordine de disponibilitate pentru executare. Implementat pentru a îmbunătăți performanța dispozitivelor de calcul.  

Printre mașinile binecunoscute, a fost implementat pentru prima dată într-o măsură semnificativă în mașinile CDC 6600 de la Control Data și IBM System / 360 Model 91 de la IBM .

Descriere și comparație

Secvențierea clasică

Când executați instrucțiunile în ordine ( în ordine în engleză  ), sunt efectuate următoarele acțiuni:

  1. instrucțiuni de citire;
  2. opriți procesorul așteptând să încarce operanzi de instrucțiuni;
  3. trimiterea instrucțiunilor de execuție către modulul de execuție corespunzător;
  4. executarea instrucțiunii de către modulul corespunzător;
  5. înregistrarea rezultatului executării instrucțiunii de către modul într-o celulă de registru.

Execuție în afara ordinului

La executarea instrucțiunilor în afara ordinii ( în engleză  out-of-order ), sunt efectuate următoarele acțiuni:

  1. instrucțiuni de citire;
  2. plasarea unei instrucțiuni în coada I (numită coadă de instrucțiuni în limba engleză  , buffer de instrucțiuni sau stații de rezervare );
  3. așteptând până când operanzii oricărei instrucțiuni din coada devin disponibili;
  4. transferarea instrucțiunii, ai cărei operanzi sunt disponibili, pentru execuție către unitatea de execuție corespunzătoare;
  5. executarea instrucțiunii de către modulul corespunzător;
  6. scrierea rezultatului executării instrucțiunii de către modul în coada II;
  7. extragerea din coada II a rezultatelor executării acelor instrucțiuni înaintea cărora nu există instrucțiuni neexecutate în coada I și scrierea rezultatelor într-un fișier registru; eliminarea unor astfel de instrucțiuni din coada I.
Caracteristici și funcționare interioară

Caracteristici ale executiei extraordinare:

  • o instrucțiune poate fi executată mai devreme decât altele, ai căror operanzi vor fi gata înaintea operanzilor altor instrucțiuni;
  • o instrucțiune pusă în coadă I mai târziu poate fi executată mai devreme;
  • timpul de inactivitate cauzat de așteptarea ca operanzii de instrucțiune să fie pregătiți este redus (comparativ cu un procesor care execută instrucțiuni în ordine) prin așteptarea ca operanzii mai multor instrucțiuni să fie pregătiți;
  • datorită utilizării cozii II, rezultatele sunt scrise în fișierul de registru în ordinea instrucțiunilor din codul mașinii (există o apariție a execuției instrucțiunilor în ordine).

Ideea principală a execuției în afara ordinului este capacitatea de a evita timpul de inactivitate a procesorului atunci când datele necesare pentru a executa următoarea instrucțiune nu sunt disponibile. După cum se poate vedea mai sus, procesorul evită timpul de inactivitate care apare în pasul 2 pentru următoarea execuție a instrucțiunilor în cazul în care instrucțiunea nu poate fi executată din cauza indisponibilității operanzilor săi.

Procesorul necomandat execută acele instrucțiuni ai căror operanzi sunt gata, indiferent de ordinea instrucțiunilor din codul programului. Instrucțiunile sunt executate nu în ordinea în care apar în codul programului, ci în ordinea în care datele sunt disponibile în registrele procesorului. Cu ajutorul cozii II, procesorul înregistrează rezultatele execuției instrucțiunilor astfel încât să se creeze apariția unei execuții normale, următoarea.

Evaluarea performanței

Execuția în afara ordinului este mai eficientă cu cât conducta procesorului este mai lungă și diferența dintre viteza memoriei ( RAM sau cache ) și viteza procesorului este mai mare. În modern[ când? ] În computere, procesoarele sunt mult mai rapide decât memoria , așa că în timp ce așteaptă sosirea datelor, procesorul poate executa multe instrucțiuni ai căror operanzi sunt disponibili.

Vezi și

Note

Literatură

Link -uri