Kaj je Superskalar?

Superskalarni procesor lahko samostojno izvede več ukazov hkrati v enem ciklu ure. Vključuje odvečne izvedbene vire, kot so večkratne enote s plavajočo vejico, aritmetične logične enote in preklopniki celih števil. Ta tip procesorja je zasnovan za vzporedno računanje in špekulativno izvajanje brez potrebe po posebni programski opremi. Z manipuliranjem in prerazporeditvijo kode lahko izboljša hitrost izvajanja številnih procesorsko intenzivnih aplikacij. Pogosto se uporablja v več razredih računalnikov, vključno s strežniki, namiznimi in celo prenosnimi računalniki.

Čeprav se nekateri vidiki arhitekture uporabljajo v procesorjih že od šestdesetih let prejšnjega stoletja, so bili pravi superskalarni procesorji izdani šele veliko pozneje. Nekateri procesorji za računalništvo z zmanjšanim naborom navodil (RISC), prodani v poznih 1960. in zgodnjih 1980-ih, so bili superskalarni. Njihova preprosta jedra in navodila s fiksno dolžino so olajšala pošiljanje in razporejanje vzporednih navodil. Številni procesorji, ki niso RISC, izdelani od poznih devetdesetih let prejšnjega stoletja, imajo tudi superskalarno arhitekturo. Vgrajeni procesorji z majhno porabo in drugi posebni procesorji so pogosto izjeme, ki optimizirajo druge vidike svojih zasnov namesto vzporedne izvedbe.

Nekateri procesorji lahko delijo en sam cevovod z navodili iz več izvajalskih niti, znanih kot super-nit. Ko funkcionalna enota miruje, ker čaka na trenutno izvajajočo se nit, lahko medtem izvede ukaz iz druge niti. Ta tehnika pomaga pri popolni izrabi procesorja, vendar ni tako učinkovita kot simultano večnitnost (SMT). En sam superskalarni procesor lahko z uporabo SMT izvede več navodil iz več niti hkrati. Niti, ki se hkrati izvajajo, lahko tekmujejo za sistemske in procesorske vire, kar pa lahko upočasni sistem.

Procesorji z večstopenjskimi cevovodi lahko izvajajo več ukazov hkrati, dokler so na različnih stopnjah izvajanja. Nasprotno pa se lahko v superskalarnem procesorju izvaja več ukazov v isti fazi hkrati. Čeprav je med to vrsto procesorja in večjedrnim procesorjem veliko podobnosti, niso enake. Večjedrni procesor vsebuje več celotnih procesorjev, imenovanih jedra, v eni napravi. Vsako jedro večjedrnega procesorja je običajno superskalarno in lahko vključuje več vzporednih cevovodov.

Ključna značilnost superskalarnega procesorja je njegova zmožnost izvajanja programske kode neustrezno zaradi učinkovitosti. Če želite to narediti, se mora zavedati odvisnosti katerega koli navodila od drugega. Če navodilo vpliva na rezultate drugega ali uporablja sredstva drugega, je zelo verjetno, da se oba ne smeta izvajati vzporedno. Obstajajo tehnike za odpravo nekaterih vrst odvisnosti, druge pa morajo obdelavo odložiti, dokler niso na voljo viri.

Izvajanje izven vrstnega reda mora biti sposobno zagotoviti tudi ustrezno vsebino registrov, zastav in drugih virov, če pride do sistemske prekinitve. V tem primeru mora stanje sistema izgledati enako, kot da bi se koda izvajala zaporedno, kot je zasnovano. Drugi premislek je, koliko navodil bi moral procesor preučiti, da bi našel priložnosti za vzporedno izvajanje. Večje kot je število, učinkovitejša je lahko izvedba. To vključuje tudi špekulativno izvajanje navodil na drugi strani vsake veje v pregledani kodi.