CATEGORII DOCUMENTE |
UNITATEA INTREAGA
Unitatea de calcul cu numere intregi ofera o executie paralela a
instructiunilor in doua benzi de asamblare pentru numere intregi cu sapte
nivele (Fig. 4). Fiecare din cele doua benzi de asamblare (X si Y) poate
procesa simultan cateva instructiuni.
Benzile de asamblare intregi contin urmatoarele nivele de prelucrare: -aducerea
codului instructiunii (Instruction Fetch ?IF) ,
-primul decodificator pentru instructiuni (Instruction Decode 1 ? ID1 -al doilea decodificator pentru instructiuni
(Instruction Decode 2 ? ID2 -primul bloc de
calculare a adresei (Address Calculation 1 ? AC1
-al doilea bloc de calculare a adresei (Address Calculation 2 ? AC2 -executie (Execute ? EX
-writeback (WB) (Fig. 4).
Nivelul de aducere al codului instructiunii (IF) este impartit de cele doua
benzi de asamblare, aduce cate 16 octeti de cod din unitatea cache intr-un
singur ciclu de tact. In acest nivel se cauta orice instructiune de salt ce
poate apare in fluxul de cod si poate afecta secventierea normala a
programului. Daca este detectata o instructiune de salt neconditionat sau una
de salt conditionat, logica de prezicere a salturilor din acest nivel genereaza
o posibila adresa destinatie pentru instructiunea de salt. Apoi IF aduce codul
instructiunilor incepand cu aceasta adresa.
Functia de decodificare a codului instructiunii este realizata de nivelele ID1
si ID2. Nivelul ID1, folosit de ambele benzi de asamblare, evalueaza sirul de
octeti de cod transmis de nivelul IF si determina numarul de octeti pentru
fiecare instructiune. Acest nivel poate trimite cel mult doua instructiuni
intr-un impuls de tact nivelului ID2, cate una pentru fiecare banda de
asamblare.
Cele doua nivele ID2 decodifica instructiunile si le trimite uneia din cele
doua benzi de asamblare X sau Y spre executie. Banda de asamblare este aleasa
bazata pe tipul instructiunilor aflate deja in fiecare banda si cat de repede
se presupune ca se vor termina.
Functia de calculare a adreselor este realizata tot in doua nivele: AC1 si AC2.
Daca instructiunea are o referinta la un operand in memorie, AC1 calculeaza o
adresa de memorie liniara pentru instructiune.
Nivelul AC2 realizeaza toate functiile de gestiunea memoriei cerute, accesele
la cache si accesele la setul de registre. Daca AC2 detecteaza o instructiune
in virgula flotanta, aceasta este trimisa spre prelucrare unitatii
In nivelul de executie (EX), se executa instructiunile folosind operanzii
primiti din nivelul AC2.
Nivelul writeback (WB) este ultimul din unitatea de lucru cu numere intregi. In
acest nivel sunt stocate rezultatele executiei sau in registre sau in tamponul
de scriere din unitatea cache.
Procesarea in inordine
Daca o instructiune este executata mai repede decat instructiunea precedenta
din cealalta banda de asamblare, instructiunile sunt completate in inordine.
Toate instructiunile sunt prelucrate in ordine pana la nivelul EX. In timp ce
in nivelele EX si WB instructiunile pot fi executate in inordine.
Daca exista dependente de date intre cele doua instructiuni, este necesara
interventia unui bloc care sa asigure executia corecta a programului. Astfel,
chiar daca instructiunile sunt executate in inordine, exceptiile si scrierile
din cadrul instructiunilor sunt intotdeauna efectuate in ordinea ceruta de
program.
Politica de confidentialitate | Termeni si conditii de utilizare |
Vizualizari: 1211
Importanta:
Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved