Motorul de executie

Vom continua discutand despre următorul element, și anume, motorul de execuție (“Execution Engine”). Acesta este împărțit în două elemente de execuție: cel ce efectueaza MOPs cu numere întregi (Integer) și cel ce efecteaza operatii cu numere reale (FP / Floating Point). Ambele arhitecturi, Zen+ si Zen 2 pot efectua până la 6 MOPs de tip Integer și până la 4 MOPs de tip FP per ciclu și pot întoarce, prin intermediul unității de control de întoarcere (RCU) a instrucțiunilor, 8 MOPs de orice tip catre Front-End, per ciclu. La Zen 2, acest RCU dispune de o lățime de bandă sporită, avand 224 de intrări, spre deosebire de Zen+ care are doar de 192 de astfel de intrari.

MOPs de tip Integer, odată primite, sunt trimise către unitatea de execuție a operațiilor de tip Integer. Aceasta este compusă din 5 programatoare, registrul fizic de fișiere(PRF), coada de întoarcere (folosită in comun cu unitatea de executie FP), 4 canale ALU și 3 canale AGU. Cele doua canale AGU cu 14 intrări folosite in arhitectura Zen+ au fost înlocuite, in Zen 2, cu un singur programator cu 28 de intrări. De asemenea, în Zen 2, a fost adăugat un al treilea canal AGU dedicat operațiilor de stocare. Totodată, capacitatea PRF-ului a fost sporită la 180 de intrări și capacitatea cozii de ieșire la 224 de intrari.

Unitatea de redenumire are rolul de a prealoca spațiu în memorie dedicat stocării rezultatelor operațiilor. Arhitecturile Zen pot realiza modificări asupra registrilor fără a utiliza putere de execuție sau de programare. Acest lucru este posibil prin stocarea rezultatelor ALU-urilor în același registru în care era stocată operația, făcând suprascriere. Arhitecturile precedente Zen 2 execută operația de ștergere(zeroificare) similar uneia de tip XOR asupra unui registru, adică o percepe ca pe o operație complexă, fără un rezultat evident. Acest lucru a fost remediat în Zen 2.

Canalele de tip ALQ transmit operații logice și aritmetice de tip Integer. Fiecare dintre aceste canale este directionat de un programator. Programatorul verifica disponibilitatea operatorilor de calcul și trimite cate o µOP pregatita pentru execuție per ciclu. Împreună, toate programatoarele unui nucleu, pot emite 11 µOPs per ciclu. PRF-ul poate emite pana la doi operanzi pentru fiecare canal. Acesta permite execuția în tandem a doua instrucțiuni interdependente, transmițând rezultatele unui ALU la un stadiu anterior pe canal, unde acesta este necesar pentru continuarea executiei.

Canalele de tip Integer sunt asimetrice, astfel, toate ALU pot efectua simultan toate operațiile cu numere întregi, cu excepția inmultirilor, impartirilor și ridicarilor la putere, acestea necesitând câte un ALU dedicat pentru fiecare.

Canalele de tip AGU, adică canalele unității de generat adrese, sunt folosite pentru a stoca temporar µOPs sau valorile operantilor instrucțiunilor. AGU-urile sunt folosite pentru a stoca valorile calculate anterior, pentru mai multor cicluri, valori necesare ulterior. Doar două dintre cele 3 canale AGU pot genera adrese și să le trimită în coada de încărcare (Load Queue). Cel de-al treilea canal este dedicat operațiilor de stocare și le trimite către coada de stocare (Store Queue).

 

Pages ( 5 of 12 ): « Previous1 ... 34 5 67 ... 12Next »

Similar Articles

Lasă un răspuns

Acest site folosește Akismet pentru a reduce spamul. Află cum sunt procesate datele comentariilor tale.