Kaj je superskalar?

Zgodnji računalniki so bili popolnoma zaporedni. Vsako navodilo, ki ga je prejel procesor, je bilo treba dokončati v celoti, preden se je lahko začelo naslednje. Večina navodil ima pet stopenj: pridobivanje navodil, dekodiranje navodil, izvedba, dostop do pomnilnika in povratno pisanje. Oziroma te stopnje dobijo navodila, ki jih je treba dokončati, ločite operacijo od vrednosti operiran, izvedite operacijo, odprite register, v katerega bo zapisan rezultat, in rezultat zapišite v odprto register.

Vsaka od teh stopenj mora trajati en cikel. Na žalost, če podatki niso v registru, jih je treba zahtevati iz predpomnilnika procesorja ali sistemskega RAM-a. To je veliko počasneje, dodaja na desetine ali stotine urnih ciklov zakasnitve. Medtem mora vse drugo počakati, saj drugih podatkov ali navodil ni mogoče obdelati. Ta vrsta zasnove procesorja se imenuje subskalarna, saj izvaja manj kot en ukaz na takt.

V subskalarnem procesorju brez cevovoda se vsak del vsakega ukaza izvede po vrstnem redu. Ta zasnova lahko doseže le manj kot eno dokončano navodilo na cikel.

Cevovod v skalar

Skalarni procesor je mogoče doseči z uporabo sistemskega cevovoda. Vsaka od petih stopenj ukaza, ki se izvaja, se izvaja v različnih delih strojne opreme v dejanskem jedru procesorja. Če ste torej previdni pri podatkih, ki jih vnašate v strojno opremo za vsako stopnjo, lahko vsako od njih zaposlite v vsakem ciklu. V popolnem svetu bi to lahko vodilo do 5-kratne pospešitve in do tega, da bi bil procesor popolnoma skalaren in bi izvajal celoten ukaz na cikel.

V skalarnem cevovodnem procesorju se lahko vsaka stopnja izvajanja ukazov izvede enkrat na takt. To omogoča največjo prepustnost enega dokončanega ukaza na cikel.

V resnici so programi zapleteni in zmanjšujejo prepustnost. Na primer, če imate dve navodili za dodajanje »a = b + c« in »d = e + f«, ju je mogoče brez težav izvajati v cevovodu. Če pa imate "a = b + c", ki mu sledi "d = a + e", imate težavo. Ob predpostavki, da sta ti dve navodili neposredno eno za drugim, se postopek za izračun nove vrednosti »a« ne bo zaključil, kaj šele, da bi bil zapisan nazaj v pomnilnik, preden drugo navodilo prebere staro vrednost "a" in nato poda napačen odgovor za "d".

Temu vedenju se je mogoče zoperstaviti z vključitvijo dispečerja, ki analizira prihajajoča navodila in zagotovi, da se nobeno navodilo, ki je odvisno od drugega, ne izvaja v preblizu zaporedju. Program dejansko zažene v napačnem vrstnem redu, da to popravi. To deluje, ker veliko navodil ni nujno odvisno od rezultatov prejšnjega.

Razširitev cevovoda na superskalarno

Superskalarni procesor lahko izvede več kot en polni ukaz na cikel. Eden od načinov za to je razširitev cevovoda, tako da obstajata dva ali več delov strojne opreme, ki zmorejo vsako stopnjo. Tako sta lahko v vsaki fazi cevovoda v vsakem ciklu dve navodili. Posledica tega je očitno večja zapletenost načrtovanja, saj je strojna oprema podvojena, vendar ponuja odlične možnosti skaliranja zmogljivosti.

V superskalarnem cevovodnem procesorju je lahko v vsaki stopnji cevovoda v vsakem ciklu več kot eno navodilo. To omogoča največjo prepustnost več kot enega zaključenega ukaza na cikel.

Povečanje zmogljivosti zaradi povečanja cevovodov pa je zaenkrat le učinkovito. Toplotne in velikostne omejitve postavljajo nekatere omejitve. Obstajajo tudi precejšnji zapleti pri načrtovanju. Učinkovit dispečer je zdaj še bolj kritičen, saj mora zagotoviti, da se nobeden od dveh nizov navodil ne zanaša na rezultat katerega koli drugega navodila, ki se obdeluje.

Prediktor veje je del dispečerja, ki postaja vedno bolj kritičen, čim bolj je procesor visoko superskalaren. Nekatera navodila imajo lahko dva možna rezultata, od katerih vsak vodi do različnih naslednjih navodil. Preprost primer bi bil stavek "če". "Če je to res, naredi to, sicer pa to drugo." Prediktor razvejanja poskuša napovedati izid operacije razvejanja. Nato vnaprej načrtuje in izvede navodila v skladu s tem, za kar meni, da je verjeten izid.

V sodobnih napovedovalcih vej je veliko zapletene logike, ki lahko povzroči uspešnost napovedi vej reda 98 %. Pravilna napoved prihrani čas, ki bi ga lahko izgubili s čakanjem na dejanski rezultat, napačna napoved zahteva, da se napoved navodila in vse njihove rezultate zavržejo, prava navodila pa zaženejo namesto njih, kar vključuje rahlo kazen glede na to, da ste pravkar čakal. Tako lahko visoka stopnja uspešnosti napovedi opazno poveča učinkovitost.

Zaključek

Računalniški procesor se šteje za superskalaren, če lahko izvede več kot en ukaz na takt. Zgodnji računalniki so bili v celoti zaporedni in so izvajali samo en ukaz naenkrat. To je pomenilo, da je bilo za dokončanje vsakega ukaza potrebnih več kot en cikel, zato so bili ti procesorji subskalarni. Osnovni cevovod, ki omogoča uporabo strojne opreme, specifične za stopnjo, za vsako stopnjo ukaza, lahko izvede največ eno navodilo na takt, zaradi česar je skalaren.

Upoštevati je treba, da nobeno posamezno navodilo ni v celoti obdelano v enem taktu. Še vedno traja vsaj pet ciklov. Več navodil pa je lahko hkrati v pripravi. To omogoča pretok enega ali več dokončanih ukazov na cikel.

Superskalarja ne smemo zamenjevati s hiperskalerjem, ki se nanaša na podjetja, ki lahko ponudijo računalniške vire hiperskalarja. Računalništvo v hiperrazmerju vključuje zmožnost nemotenega prilagajanja virov strojne opreme, kot so računanje, pomnilnik, pasovna širina omrežja in shranjevanje, glede na povpraševanje. To običajno najdemo v velikih podatkovnih centrih in okoljih računalništva v oblaku.