Mikä on Superscalar?

Superskalaarinen prosessori voi itsenäisesti suorittaa useita käskyjä kerralla yhden kellosyklin aikana. Se sisältää redundantteja suoritusresursseja, kuten useita liukulukuyksiköitä, aritmeettisia logiikkayksiköitä ja kokonaislukujen vaihtimia. Tämäntyyppinen prosessori on suunniteltu rinnakkaislaskentaan ja spekulatiiviseen suorittamiseen ilman erityisiä ohjelmistoja. Se voi parantaa monien prosessori-intensiivisten sovellusten suoritusnopeutta manipuloimalla ja järjestämällä koodia uudelleen. Sitä käytetään usein useissa tietokoneluokissa, mukaan lukien palvelimet, pöytätietokoneet ja jopa kannettavat tietokoneet.

Vaikka joitain arkkitehtuurin piirteitä on käytetty prosessoreissa 1960 -luvulta lähtien, todelliset superskalaariset prosessorit julkaistiin vasta paljon myöhemmin. Jotkut 1980 -luvun lopulla ja 1990 -luvun alussa myydyt RISC -prosessorit olivat superskalareita. Niiden yksinkertaiset ytimet ja kiinteäpituiset ohjeet tekivät rinnakkaisten ohjeiden lähettämisen ja aikatauluttamisen suhteellisen helpoksi. Monilla ei-RISC-prosessoreilla, jotka on valmistettu 1990-luvun lopulta lähtien, on myös superskalaarinen arkkitehtuuri. Sulautetut, pienitehoiset ja muut erikoisprosessorit ovat usein poikkeuksia, jotka optimoivat suunnittelun muita näkökohtia rinnakkaisen suorituksen sijaan.

Jotkut prosessorit voivat jakaa yhden putkilinjan ohjeiden avulla useilta suorituslangoilta, jotka tunnetaan nimellä super-threading. Kun toiminnallinen yksikkö on käyttämättömänä, koska se odottaa parhaillaan suoritettavaa säiettä, se voi suorittaa käskyn toisesta säikeestä sillä välin. Tämä tekniikka auttaa hyödyntämään prosessoria täysin, mutta se ei ole yhtä tehokas kuin samanaikainen monisäikeinen (SMT). Yksi superskalaarinen prosessori voi suorittaa useita ohjeita useista säikeistä samanaikaisesti SMT: tä käyttäen. Samanaikaisesti suorittavat säikeet voivat kuitenkin kilpailla järjestelmän ja prosessorin resursseista, mikä voi hidastaa järjestelmän toimintaa.

Suorittimet, joissa on monivaiheisia putkistoja, voivat suorittaa useita käskyjä samanaikaisesti, kunhan ne ovat eri suoritusvaiheissa. Sitä vastoin useita ohjeita voidaan suorittaa samassa vaiheessa samanaikaisesti superskalaarisessa prosessorissa. Vaikka tämän tyyppisen prosessorin ja moniydinsuorittimen välillä on monia yhtäläisyyksiä, ne eivät ole samat. Monisydäminen prosessori sisältää useita täydellisiä suorittimia, joita kutsutaan ytimiksi, yhdessä laitteessa. Jokainen moniydinprosessorin ydin on yleensä superskalaari ja voi sisältää useita rinnakkaisia ​​putkistoja.

Superskalaarisen prosessorin keskeinen piirre on sen kyky suorittaa ohjelmakoodi epäkunnossa tehokkuussyistä. Tätä varten sen on oltava tietoinen minkä tahansa ohjeen riippuvuudesta toiseen. Jos käsky vaikuttaa toisen tuloksiin tai käyttää toisen resursseja, on erittäin todennäköistä, että niitä ei saa suorittaa rinnakkain. On olemassa tekniikoita joidenkin riippuvuustyyppien poistamiseksi, mutta toisten on viivytettävä käsittelyä, kunnes resursseja on käytettävissä.

Järjestyksenvastaisen suorituksen on myös kyettävä takaamaan rekisterien, lippujen ja muiden resurssien asianmukainen sisältö, jos järjestelmä keskeytyy. Tässä tapauksessa järjestelmän tilan on näytettävä samalta, ikään kuin koodi olisi suoritettu peräkkäin suunnitellulla tavalla. Toinen huomio on se, kuinka monta käskyä prosessorin pitäisi tutkia löytääkseen mahdollisuuksia rinnakkaiseen suoritukseen. Mitä suurempi luku, sitä tehokkaampi suoritus voi olla. Tämä sisältää myös ohjeiden spekulatiivisen suorittamisen tutkitun koodin kunkin haaran toisella puolella.