Čo je superskalár?

click fraud protection

Prvé počítače boli úplne sekvenčné. Každá inštrukcia, ktorú procesor dostal, musela byť úplne dokončená, aby mohla byť spustená ďalšia. Väčšina inštrukcií má päť fáz: načítanie inštrukcie, dekódovanie inštrukcie, vykonanie, prístup do pamäte a spätný zápis. Respektíve tieto fázy dostanú inštrukciu, ktorú je potrebné dokončiť, oddeliť operáciu od hodnôt operovaný, vykonajte operáciu, otvorte register, do ktorého sa zapíše výsledok, a zapíšte výsledok do otvoreného Registrovať.

Každá z týchto fáz by mala trvať jeden cyklus. Bohužiaľ, ak údaje nie sú v registri, musia byť vyžiadané z vyrovnávacej pamäte CPU alebo systémovej RAM. Je to oveľa pomalšie a pridáva desiatky alebo stovky hodinových cyklov latencie. Všetko ostatné musí medzitým počkať, pretože nie je možné spracovať žiadne ďalšie údaje ani pokyny. Tento typ konštrukcie procesora sa nazýva subskalárny, pretože beží menej ako jedna inštrukcia na cyklus hodín.

V subskalárnom procesore bez pipeline sa každá časť každej inštrukcie vykonáva v poradí. Tento dizajn môže dosiahnuť len menej ako jednu inštrukciu dokončenú za cyklus.

Prepojenie na skalárne

Skalárny procesor možno dosiahnuť aplikáciou systémového potrubia. Každá z piatich fáz vykonávanej inštrukcie beží v rôznych bitoch hardvéru v jadre skutočného procesora. Ak ste teda opatrní s údajmi, ktoré vkladáte do hardvéru pre každú fázu, môžete každú z nich zamestnať v každom cykle. V dokonalom svete by to mohlo viesť k 5-násobnému zrýchleniu a k tomu, aby bol procesor dokonale skalárny a spustil úplnú inštrukciu za cyklus.

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.

V skutočnosti sú programy zložité a znižujú priepustnosť. Napríklad, ak máte dve inštrukcie na sčítanie „a = b + c“ a „d = e + f“, tieto môžu byť spustené v potrubí bez problémov. Ak však máte „a = b + c“ nasledované „d = a + e“, máte problém. Za predpokladu, že tieto dve inštrukcie sú bezprostredne po sebe, proces výpočtu novej hodnoty „a“ ​​nebude dokončený, nehovoriac o zapísaní späť do pamäte predtým, ako druhá inštrukcia prečíta starú hodnotu „a“ a potom dá nesprávnu odpoveď pre „d“.

Tomuto správaniu sa dá čeliť zahrnutím dispečera, ktorý analyzuje nadchádzajúce inštrukcie a zaisťuje, že žiadna inštrukcia, ktorá je závislá od inej, nebude vykonaná v príliš tesnej postupnosti. V skutočnosti spúšťa program v nesprávnom poradí, aby to vyriešil. Funguje to, pretože mnohé pokyny sa nemusia nevyhnutne spoliehať na výsledok predchádzajúceho.

Rozšírenie potrubia na superskalárnu

Superskalárny procesor je schopný spustiť viac ako jednu úplnú inštrukciu za cyklus. Jedným zo spôsobov, ako to dosiahnuť, je rozšírenie potrubia tak, aby existovali dva alebo viac častí hardvéru, ktoré dokážu zvládnuť každú fázu. Týmto spôsobom môžu byť v každom štádiu potrubia v každom cykle dve inštrukcie. To samozrejme vedie k zvýšenej zložitosti dizajnu, pretože hardvér je duplikovaný, avšak ponúka vynikajúce možnosti škálovania výkonu.

V superskalárnom zreťazenom procesore môže byť v každom cykle v každej fáze potrubia viac ako jedna inštrukcia. To umožňuje maximálnu priepustnosť inštrukcie viac ako jednej dokončenej inštrukcie na cyklus.

Nárast výkonu z rastúcich potrubí sa však zatiaľ efektívne zväčšuje. Tepelné a rozmerové obmedzenia kladú určité limity. Existujú aj značné komplikácie plánovania. Efektívny dispečer je teraz ešte kritickejší, pretože musí zabezpečiť, aby sa ani jedna z dvoch sád inštrukcií nespoliehala na výsledok žiadnej inej spracovávanej inštrukcie.

Prediktor vetvy je časť dispečera, ktorá je čím ďalej tým kritickejšia, čím je procesor viac superskalárny. Niektoré pokyny môžu mať dva potenciálne výsledky, z ktorých každý vedie k rôznym nasledujúcim pokynom. Jednoduchým príkladom by bolo vyhlásenie „ak“. "Ak je to pravda, urob to, inak urob túto inú vec." Prediktor vetvenia sa pokúša predpovedať výsledok operácie vetvenia. Potom preventívne naplánuje a vykoná pokyny podľa toho, čo považuje za pravdepodobný výsledok.

V moderných prediktoroch vetiev je veľa zložitej logiky, ktorá môže viesť k úspešnosti predikcie vetiev rádovo 98 %. Správna predpoveď šetrí čas, ktorý mohol byť premárnený čakaním na skutočný výsledok, nesprávna predpoveď si vyžaduje, aby pokyny a všetky ich výsledky sa zahodia a namiesto nich sa spustia skutočné pokyny, čo prichádza s miernou penalizáciou za to, že čakal. Vysoká miera úspešnosti predpovedí teda môže výrazne zvýšiť výkon.

Záver

Počítačový procesor sa považuje za superskalárny, ak dokáže vykonať viac ako jednu inštrukciu za cyklus hodín. Prvé počítače boli úplne sekvenčné a spúšťali naraz iba jednu inštrukciu. To znamenalo, že dokončenie každej inštrukcie trvalo viac ako jeden cyklus, a preto boli tieto procesory subskalárne. Základná pipeline, ktorá umožňuje využitie hardvéru špecifického pre daný stupeň pre každú fázu inštrukcie, môže vykonávať najviac jednu inštrukciu za cyklus hodín, vďaka čomu je skalárna.

Je potrebné poznamenať, že žiadna individuálna inštrukcia nie je úplne spracovaná v jednom taktovacom cykle. Stále to trvá najmenej päť cyklov. Súčasne však môže byť pripravených viacero inštrukcií. To umožňuje priepustnosť jednej alebo viacerých dokončených pokynov na cyklus.

Superscalar by sa nemal zamieňať s hyperscaler, ktorý sa týka spoločností, ktoré môžu ponúknuť hyperscale výpočtové zdroje. Hyperscale computing zahŕňa možnosť bezproblémového škálovania hardvérových zdrojov, ako sú výpočty, pamäť, šírka pásma siete a úložisko, podľa potreby. Toto sa zvyčajne vyskytuje vo veľkých dátových centrách a prostrediach cloud computingu.