Čo je to zoznam pokynov?

click fraud protection

Každá inštrukcia procesora má niekoľko fáz svojej činnosti. Dokončenie každej z týchto fáz trvá jeden cyklus CPU. Tieto fázy sú načítanie inštrukcie, dekódovanie inštrukcie, vykonanie, prístup do pamäte a spätný zápis. Respektíve tieto dostanú pokyn, ktorý je potrebné dokončiť, oddeliť operáciu od prevádzkovaných hodnôt on, vykonajte proces, otvorte register, do ktorého sa zapíše výsledok, a zapíšte výsledok do open Registrovať.

Historické procesory v poradí

V skorých počítačoch CPU nepoužíval inštrukčný kanál. V týchto CPU sa každá jednocyklová operácia musela uskutočniť pre každú inštrukciu. To znamenalo, že trvalo päť hodinových cyklov, kým bola priemerná inštrukcia úplne spracovaná, kým sa mohla spustiť ďalšia. Niektoré operácie nemusia zapísať žiadny výsledok do registra, čo znamená, že fázy prístupu do pamäte a spätného zápisu možno preskočiť.

V subskalárnom procesore bez pipeline sa každá časť každej inštrukcie vykonáva v poradí.

Pri spustení kompletnej inštrukcie v poradí pred tým, než budete môcť prejsť na ďalšiu inštrukciu, však číha problém. Problém je v cache miss. CPU ukladá dáta, ktoré aktívne spracováva, do registra. To je možné dosiahnuť s jednocyklovou latenciou. Problém je v tom, že register je malý, pretože je zabudovaný do jadra procesora. Ak údaje ešte neboli načítané, CPU musí prejsť do väčšej, ale pomalšej vyrovnávacej pamäte L1. Ak tam nie je, musí znova prejsť do väčšej a pomalšej vyrovnávacej pamäte L2. Ďalším krokom je vyrovnávacia pamäť L3; posledná možnosť je systémová RAM. Kontrola každej z týchto možností vyžaduje viac a viac cyklov CPU.

Teraz môže byť táto dodatočná pridaná latencia veľkým problémom v systéme, ktorý musí dokončiť každú inštrukciu v plnom poradí pred spustením ďalšej inštrukcie. To, čo bolo predtým 5-cyklovým procesorom na inštrukciu, môže zrazu zavesiť na jednu inštrukciu na desiatky alebo stovky hodinových cyklov. Po celú dobu sa na počítači nemôže stať nič iné. Technicky sa to dá trochu zmierniť tým, že máme dve nezávislé jadrá. Nič im však nebráni v tom, aby robili to isté, potenciálne súčasne. Takže prechod na viacjadrovú cestu to nevyrieši.

Klasický RISC Pipeline

RISC je skratka pre Reduced Instruction Set Computer. Je to štýl dizajnu procesora, ktorý optimalizuje výkon tým, že uľahčuje dekódovanie každej inštrukcie. To je v porovnaní s počítačom CISC alebo Complex Instruction Set Computer, ktorý navrhuje komplexnejšie inštrukčné sady, ktoré umožňujú menej inštrukcií potrebných na vykonanie rovnakých úloh.

Klasický dizajn RISC obsahuje potrubie s pokynmi. Namiesto spustenia ktorejkoľvek z piatich etáp inštrukcie v danom cykle, pipeline umožňuje vykonať všetkých päť etáp. Samozrejme, nemôžete spustiť všetkých päť etáp jednej inštrukcie v cykle. Môžete však zaradiť päť po sebe idúcich pokynov s posunom každej jednej fázy. Týmto spôsobom môže byť dokončená nová inštrukcia každý cyklus hodín. Ponúka potenciálne 5-násobné zvýšenie výkonu pre relatívne nízky nárast zložitosti jadra.

V skalárnom zreťazenom procesore môže byť každá fáza vykonávania inštrukcie vykonaná raz za cyklus hodín. To umožňuje maximálnu priepustnosť jednej dokončenej inštrukcie na cyklus.

Procesory, ktoré nemajú pipeline, môžu byť vždy iba subskalárne, pretože nemôžu vykonať jednu úplnú inštrukciu za cyklus. Pomocou tohto primárneho päťstupňového potrubia môžete vytvoriť skalárny procesor, ktorý dokáže dokončiť inštrukciu pre každý proces. Vytvorením ešte ďalekosiahlejších potrubí môžete vytvoriť superskalárne procesory, ktoré dokážu vykonať viac ako jednu inštrukciu za cyklus hodín. Samozrejme, stále existujú potenciálne problémy.

Stále sekvenčné

Nič z toho nerieši problém čakania na odpoveď počas mnohých cyklov pri potrebe dotazu na rôzne úrovne vyrovnávacej pamäte a pamäte RAM. Prináša tiež nový problém. Čo ak sa jedna inštrukcia spolieha na výstup predchádzajúcej inštrukcie? Tieto problémy sú samostatne riešené pokročilým dispečerom. Starostlivo plánuje poradie vykonávania tak, aby žiadne pokyny, ktoré sa spoliehajú na výstup iného, ​​neboli príliš blízko seba. Rieši tiež chýbajúce cache tým, že zaparkuje inštrukciu a nahradí ju inou inštrukcie, ktoré sú pripravené na spustenie a nevyžadujú svoj výsledok, pričom inštrukciu obnovia, keď je pripravený.

Tieto riešenia môžu fungovať na nezreťazených procesoroch, ale sú potrebné pre superskalárny procesor, ktorý beží viac ako jednu inštrukciu na takt. Prediktor vetvy je tiež veľmi užitočný, pretože sa môže pokúsiť predpovedať výsledok pokynu s viac ako jedným potenciálnym výsledkom a naďalej predpokladať, že je správny, pokiaľ sa nepreukáže opak.

Záver

Potrubie umožňuje využitie všetkých odlišných schopností procesora v každom cykle. Robí to tak, že súčasne spúšťa rôzne fázy rôznych inštrukcií. To ani nepridáva veľkú zložitosť dizajnu CPU. Tiež pripravuje cestu k tomu, aby viac ako jedna inštrukcia vykonala jednu fázu na cyklus.