Ľudmila Jánošíková | ||
Programovanie v jazyku symbolických adries | ||
pre 32-bitové procesory Intel | ||
|
||
Prúdové spracovanie inštrukcií, architektúra Intel Haswell
Prúdové spracovanie inštrukcií (pipelining) znamená, že naraz sa v procesore spracováva viac inštrukcií. Východiskom tejto technológie je skutočnosť, že spracovanie inštrukcie možno rozložiť na (spravidla) päť jednoduchších úkonov, ktoré na seba nadväzujú:
Každý úkon sa vykonáva v samostatnom funkčnom bloku, prípadne sa rozloží na ešte jednoduchšie operácie a vykonáva sa v niekoľkých funkčných blokoch. Funkčný blok (functional unit) je skupina logických obvodov, ktoré vykonávajú spoločnú prácu (napr. aritmeticko-logická jednotka). Pri klasickom spracovaní údajov by sa ďalšia inštrukcia začala spracovávať až po ukončení spracovania predchádzajúcej inštrukcie. Pri takomto spôsobe práce by funkčné bloky väčšinu času zaháľali a čakali na príchod ďalších údajov. Prúdové spracovanie údajov prebieha tak, že funkčné bloky sú zoradené logicky za sebou a tvoria kanál (pipe). Akonáhle spracovanie inštrukcie postúpi z prvého stupňa (funkčného bloku) do druhého, môže prísť ďalšia inštrukcia a vstúpiť do prvej fázy svojho spracovania. Tým sa dosiahne, že až na niekoľko výnimiek sa v každom hodinovom cykle ukončí jedna inštrukcia. Niekedy sa môže narušiť plynulosť inštrukčného toku. Ide najmä o tieto situácie (označujú sa pojmom pipeline hazards):
Procesory s touto architektúrou uviedol Intel na trh v polovici roku 2013. Je to zatiaľ posledná 64-bitová architektúra (adresa aj univerzálne registre sú 64-bitové). Jadro procesora Haswell tvoria tieto základné bloky:
Obr. 2. Schéma architektúry Haswell Cache pamäť druhej úrovne obsahuje podobne ako hlavná pamäť inštrukcie aj dáta. Výberová jednotka (Instruction Fetch Unit) prináša inštrukcie z cache pamäti druhej úrovne (L2 Cache) do inštrukčnej cache pamäti prvej úrovne (L1 Instruction Cache), ktorá má kratšiu prístupovú dobu. Pred výberom inštrukcie sa vykonáva predpovedanie skokov (Branch Prediction), o ktorom bude reč v nasledujúcej kapitole. Z L1 Instruction Cache sa naraz prenesie 16B do buffra preddekódera, ktorý rozpozná v bloku inštrukcií hranice inštrukcie, lebo inštrukcie v strojovom kóde môžu mať rôznu dĺžku (1 až 17 bajtov). Preddekóder tiež rozpozná prefixy, ktorými sa napríklad mení implicitná veľkosť operandu. Ďalej tok inštrukcií smeruje do štyroch dekóderov, ktoré rozložia inštrukciu na mikrooperácie a uložia ich do L0 Instruction Cache (na obr. 2 označená ako micro-op Queue). L0 Instruction Cache predstavuje "zásobník" dekódovaných inštrukcií, ktoré sú pripravené na vykonanie. Jednotka pre spracovanie inštrukcií mimo poradia (Out-of-Order Unit) pripravuje inštrukcie na vykonanie. Preberá mikrooperácie zo "zásobníka" a prehádže ich tak, aby sa odstránila dátová závislosť a aby výkonné jednotky boli čo najviac využité. Ukladacia jednotka (Retirement Logic) má za úlohu znovu usporiadať inštrukcie vykonané mimo poradia späť do pôvodného poradia podľa programu. Ukladacia jednotka dostáva informáciu o ukončení vykonávania inštrukcie z výkonných jednotiek a ukladá ich výsledky tak, aby sa zachoval stav definovaný programom. To znamená, že výsledky sa do pamäti (L1 dátovej cache) neuložia dovtedy, kým nie sú dokončené predchádzajúce operácie. Podobne interné prerušenie (výnimka) sa spracuje len vtedy, keď inštrukcia, ktorá ho spôsobila, je najstaršou spomedzi nedokončených inštrukcií. Výkonný podsystém (Execution Units) pozostáva z viacerých výkonných jednotiek, ktoré môžu pracovať súčasne. (Architektúra s viacerými výkonnými jednotkami sa nazýva superskalárna architektúra.) V mikroarchitektúre Haswell sú tieto výkonné jednotky:
|
Načo je vám jazyk symbolických adries?
Architektúra moderných procesorov
Služby operačného systému MS-DOS Služby operačného systému Windows 95/98/NT/XP |
|
| ||
Vydala Žilinská univerzita v Žiline, 2000. ISBN 80-7100-723-4. Otázky a pripomienky môžete poslať autorke. Naposledy upravené 25.9.2014. |