pipeline

5. Organizarea pe banda rulanta

operațiunile de prelucrare a multicycle și a mecanismelor de patrulare în benzi transportoare lungi

Așa cum avem în vedere stadiul conductei de comandă (EX) a fost doar un bar, care este destul de acceptabil pentru operații întregi. Cu toate acestea, pentru majoritatea operațiunile cu virgulă mobilă, ar fi imposibil să se impună ca toate acestea au fost efectuate în unul sau două cicluri de ceas. Acest lucru ar duce la o creștere substanțială în sincronizare accident vascular cerebral transportor, sau pentru a crește numărul echipamentelor sverhmernomu (volum logic) pentru punerea în aplicare a dispozitivelor în virgulă mobilă. Cel mai simplu mod de a imagina că plutitoare comenzi de punct utilizați aceeași linie de asamblare ca și instrucțiunile întregi, dar cu două modificări importante. În primul rând, ciclul EX se poate repeta de mai multe ori de câte ori este necesar pentru a efectua operația. În al doilea rând, procesorul poate fi de mai multe unități funcționale, de punere în aplicare operațiuni în virgulă mobilă. Acest lucru se poate produce pe banda rulanta de suspensie atunci când a emis pentru a executa comanda sau produce un dispozitiv funcțional de conflict structural pe care-l folosește, sau există un conflict de date.

Să presupunem că în implementarea noastră, procesorul are patru dispozitive funcționale distincte:

  1. Unitate întreg Main.
  2. Aparate de multiplicare și integer operanzi operanzilor la punctul flotant.
  3. Aparatură plus float.
  4. Aparatul de diviziune întreagă a operanzilor și operanzii la virgulă mobilă.

Fig. 5.18. Transportor cu dispozitive funcționale suplimentare

Unitatea Integer se ocupă de toate de încărcare și de a scrie comenzi în memorie atunci când se lucrează cu două seturi de registre (întregi și virgulă mobilă), toate operațiunile întregi (cu excepția multiplica sau împărți) și toată comanda de tranziție. Presupunând că performanța etapă a altor unități funcționale nekonveyernye, Fig. 5.18 prezintă structura transportorului. Deoarece etapa EX este nekonveyernoy, nici o comandă cu ajutorul unui dispozitiv funcțional nu poate fi emis pentru executarea, atâta timp cât nu comandă anterioară părăsește etapa EX. Mai mult decât atât, în cazul în care echipa nu poate intra în EX etapă, întreaga conducta pentru această echipă va fi suspendat.

De fapt, rezultatele intermediare nu pot fi utilizate în mod ciclic etapa EX, așa cum este prezentat în Fig. 5,18, iar etapa EX are un timp de întârziere de mai mult de un accident vascular cerebral. Putem rezuma structura transportorului punctului plutitor, care permite unele etape înlănțuire și execuția în paralel a mai multor operații. Pentru a descrie funcționarea acestei conducte, trebuie să determinăm întârzierea dispozitivelor funcționale, precum și rata de deschidere sau rata de repetare a operațiunilor. Aceasta este rata la care noi operațiuni de acest tip pot intra dispozitivul funcțional. De exemplu, să presupunem că următoarele unități funcționale și operațiuni de întârziere rată de repetiție:

Fig. 5.19 prezintă structura acestui transportor. Punerea sa în aplicare necesită introducerea unei stații de registru transportor EX1 / EX2 și modificarea conexiunilor dintre registrele ID / EX și EX / MEM.

Fig. 5.19. Transportor cu dispozitive multi-funcțional

Conflictele și accelerate înainte în benzi transportoare lungi

Există mai multe aspecte diferite de detectare a conflictelor și organizarea de transfer rapid de date prin conducte, cum ar fi cea prezentată în fig. 5.19:

  1. Deoarece dispozitivele nu sunt pe deplin pipeline în acest sistem sunt posibile conflicte structurale. Aceste situații trebuie să detecteze și să suspende comenzile emitente.
  2. Deoarece dispozitivele au diferite momente de execuție, numărul de intrări în fișierul registru în fiecare ciclu poate fi mai mare decât 1.
  3. Posibile conflicte, cum ar fi, WAW deoarece echipa nu mai ajunge în etapa BM a procedurii de eliberare a acestora este de a efectua. Rețineți că conflictele de tip WAR sunt posibile, deoarece registrele de citire este întotdeauna efectuată la etapa ID.
  4. Echipele nu poate fi finalizată în ordinea în care au fost emise pentru executarea, care cauzează probleme cu punerea în aplicare a întreruperii.

Înainte de a prezenta soluția generală pentru punerea în aplicare a sistemelor de detectare a coliziunilor, ia în considerare a doua și a treia aspecte.

Presupunând că fișierul registru la TP are un singur port de intrare, secvența de operații din operația de încărcare PT și PT în legătură cu operațiunile PT pot cauza conflicte în portul de intrare în fișierul registru. Luați în considerare secvența instrucțiunilor prezentate în Fig. 5,20. În ciclul 10, toate cele trei echipe a făcut etapa BM și necesitatea de a face o intrare în fișierul registru. În cazul în care există un singur port de intrare în aparatul de fișiere registru ar trebui să ofere o finalizare comandă consistentă. Acesta este singurul registru de port este sursa de conflict structurale. Pentru a rezolva această problemă, puteți mări numărul de porturi într-un fișier registru, dar o astfel de decizie nu poate fi acceptabilă, deoarece aceste porturi suplimentare de intrare sunt susceptibile de a fi utilizate rar. Cu toate acestea, la starea de echilibru, numărul maxim de porturi necesare de intrare este 1. Prin urmare, mașinile reale, dezvoltatorii preferă să monitorizeze tratamentul cu intrările port din registrele și tratează apel simultan la el ca un conflict structural.

Fig. 5,20. Un exemplu al conflictului privind înregistrarea în fișierul registru

Există două modalități de a lucra în jurul acestui conflict. Prima este de a urmări utilizarea portului de intrare în conducta etapă ID și să suspende emiterea de comenzi ca într-un conflict structural. Un astfel de circuit de detectare a conflictelor este pus în aplicare în mod obișnuit cu ajutorul unui registru de deplasare. O schemă alternativă implică suspendarea de comenzi contradictorii, atunci când ea încearcă să ajungă pe conducta scena MEM. Avantajul acestui sistem este că nu are nevoie de detectare a conflictelor, înainte de intrarea în etapa MEM, în cazul în care este mai ușor de făcut. Cu toate acestea, această implementare complică gestionarea transportorului, deoarece suspensia în acest caz poate avea loc în două locații diferite ale transportorului.

O altă problemă este posibilitatea de tipuri de conflicte WAW. Putem lua în considerare același exemplu ca și în Fig. 5,20. În cazul în care comanda LD a fost emis de un ciclu înainte, și a avut ca rezultat locație înregistrare F2, atunci ar fi un tip de conflict WAW, deoarece comanda pentru a înregistra în registru F2 pe un ciclu de ceas înainte de echipa addd. Există două modalități de manipulare a acestui tip de WAW de conflict. Prima abordare este de a emite o instrucțiune addd întârziere de încărcare până la finalizarea etapei de transmisie MEM comandă. A doua abordare este de a suprima rezultatul operației de adunare, atunci când este detectat un conflict și un control de schimbare, astfel încât să adăugați instrucțiuni nu înregistrează rezultatul. Apoi, instrucțiunea LD poate fi eliberat pentru a efectua imediat. Din moment ce un astfel de conflict este rară, ambele circuite vor lucra destul de bine. În orice caz, conflictul poate fi detectat la un act de identitate stadiu incipient, atunci când instrucțiunea LD este emis pentru executarea. Apoi a întrerupe LD comanda sau setarea unui scriere rezultate de blocare echipa addd realizat pur și simplu.

Astfel, pentru a detecta potențialele conflicte între necesitatea de a lua în considerare conflictele comenzi PT, precum și conflictele între comenzile UT și instrucțiunile întregi. Excluzând încărcare / scriere comenzi cu instrucțiunile PT și transfer de date între registre PT și registre întregi, comenzi PT și instrucțiuni întregi suficient de bine separate, și toate instrucțiunile întregi funcționează pe registre întregi, iar echipele PT - înregistrează Fri. Astfel, pentru a detecta conflictele dintre instrucțiuni întregi și comenzile PT ar trebui să fie luate în considerare numai descărca / comenzile de înregistrare de la PT și transferul registrelor echipei PT. Acest control simplificare transportor este un avantaj suplimentar al menținerii fișierului registru separat pentru stocarea de date întregi și date de TP. (Avantajul principal constă în dublarea numărului total de registre și creșterea tranzitată fără a mări numărul de porturi din fiecare set). Presupunând că transportorul realizează detecția conflictelor pe ID-ul de scenă, înainte de a emite comanda pentru a rula în funcționalitatea dispozitivului trebuie să se efectueze trei controale:

  1. Verificați conflictele structurale. În așteptare pentru eliberarea unui dispozitiv funcțional și scrie porturi la registre, dacă este necesar.
  2. Verificați conflictele tip de date RAW. În așteptare, atâta timp cât operanzii registru sursă sunt specificate ca urmare a registrelor de la stația de transport ID / EX (ceea ce corespunde unei comenzi emise în ciclul anterior), EX1 / EX2 sau EX / MEM.
  3. Verificați pentru tipurile WAW de conflicte. Pentru a verifica dacă comenzile găsite în stațiile de transport EX1 și EX2, au ca rezultat locație la registrul rezultat a emis comanda. În caz contrar, problema echipei pe ID-ul scenă, este suspendat.

Deși logica de detectare a conflictelor pentru operațiile Multicycle PT ceva mai complexe, conceptual ea nu diferă de aceeași logică pentru conducta întreg. Aceeași logică se aplică și transferul rapid al datelor. transferul rapid de date Logic poate fi pus în aplicare prin verificarea faptului că transportorul menționat la stațiile / MEM EX și MEM / registru rezultat WB este un PT registru operand. Dacă există o astfel de coincidență, pentru transferul de date a permis recepția pe intrarea corespunzătoare a multiplexorului. operațiuni multicycle PT crea, de asemenea, noi probleme pentru mecanismul de întrerupere.

Suportă întreruperi precise

O altă problemă asociată cu punerea în aplicare a comenzilor, cu un timp mare de execuție poate fi ilustrată prin următoarea secvență de comenzi:

Această secvență de comenzi este foarte simplu. Ea nu are nici un dependențe. Cu toate acestea, ea dă naștere unor noi probleme din cauza faptului că a emis înainte de a comanda poate fi completat după comanda eliberat pentru a efectua mai târziu. În acest exemplu, ne putem aștepta ca ADDF și SUBF echipa finalizată înainte de sfârșitul echipa DIVF. Acest efect este tipic pentru benzi transportoare, cu timpul de execuție de instruire mare și se numește comenzile extraordinare de finalizare (out-of-order finalizare). Apoi, de exemplu, în cazul în care comanda DIVF va întrerupe aritmetică ADDF după finalizarea comenzii, nu putem realiza întreruperea exactă la nivelul echipamentului. De fapt, din moment ce comanda ADDF schimbă valoarea unuia dintre operanzi sale, este imposibil chiar și cu ajutorul unor instrumente software pentru a restaura starea care a existat înainte de a efectua echipa DIVF.

Există patru posibile abordări pentru a lucra în condițiile unei finalizări extraordinare de comandă. Prima dintre ele pur si simplu ignora problema și propune mecanisme de întrerupere inexacte. Această abordare a fost utilizată în anii '60 și '70 și este încă folosit în unele supercomputere, în care unele clase de produse interzise sau întrerupe aparatul de prelucrare fără a opri banda transportoare. Această abordare este dificil de utilizat în mașinile moderne, în prezența conceptului de memorie virtuală și pe un IEEE punct de implementare flotare standard, care necesită întreruperi precise printr-o combinație de hardware și software. În unele mașini, această problemă este rezolvată prin introducerea a două moduri de executare a comenzilor: rapid, dar poate nu întreruperea exactă și lentă, garantează realizarea de întreruperi precise.

Echipa 1 - echipă lungă, care provoacă în cele din urmă o întrerupere

Echipa 2. n-1 echipa - o secvență de comenzi, punerea în aplicare a care nu a fost finalizată

N Team - echipa, punerea în aplicare a care a fost finalizată