Superskalarinio
Superskalarinio procesoriaus konstrukcija leidžia viename procesoriuje taikyti lygiagrečiųjų skaičiavimų formą, vadinamą instrukcijų lygmens lygiagretinimu, todėl tuo pačiu taktiniu dažniu galima atlikti daugiau darbų. Tai reiškia, kad CPU per taktinį ciklą vykdo daugiau nei vieną instrukciją, vykdydamas kelias instrukcijas tuo pačiu metu (vadinama instrukcijų siuntimu) dubliuojamuose funkciniuose blokuose. Kiekvienas funkcinis blokas yra tik CPU branduolio viduje esantis vykdymo resursas, pavyzdžiui, aritmetinis loginis blokas (ALU), slankiojo kablelio blokas (FPU), bitų keitiklis arba daugiklis.
Dauguma superskalarinių procesorių taip pat yra su vamzdeliu, tačiau gali būti ir superskalarinių procesorių be vamzdelio arba su vamzdeliu ne superskalarinių procesorių.
Superskalarinį metodą palaiko kelios procesoriaus branduolio savybės:
- Instrukcijos pateikiamos iš užsakyto instrukcijų sąrašo.
- Procesoriaus techninė įranga gali nustatyti, kurios instrukcijos turi kokią duomenų priklausomybę.
- Per vieną taktinį ciklą gali perskaityti kelias instrukcijas
Kiekviena skaliarinio procesoriaus vykdoma instrukcija vienu metu keičia vieną ar du duomenų elementus, o kiekviena vektorinio procesoriaus vykdoma instrukcija vienu metu keičia daug duomenų elementų. Superskalarinis procesorius yra šių dviejų procesų mišinys:
- Kiekviena instrukcija apdoroja vieną duomenų elementą.
- Kiekviename procesoriaus branduolyje yra keli dubliuojantys funkciniai vienetai, todėl kelios instrukcijos vienu metu apdoroja nepriklausomus duomenų elementus.
Superskalariniame procesoriuje instrukcijų dispečeris nuskaito instrukcijas iš atminties ir nusprendžia, kurias iš jų galima vykdyti lygiagrečiai, ir išsiunčia jas į daugybę dubliuojančių funkcinių blokų, esančių procesoriaus viduje.
Projektuojant superskalarinį procesorių siekiama padidinti instrukcijų dispečerio tikslumą ir užtikrinti, kad daugybė funkcinių blokų būtų nuolat užimti. Nuo 2008 m. visi bendrosios paskirties procesoriai yra superskalariniai, tipiniame superskalariniame procesoriuje gali būti iki 4 ALU, 2 FPU ir du SIMD vienetai. Jei dispečeris negali užimti visų blokų, procesoriaus našumas bus mažesnis.
Paprastas superskalarinis vamzdynas. Imant ir siunčiant po dvi instrukcijas vienu metu, per ciklą galima atlikti ne daugiau kaip dvi instrukcijas.
CRAY T3e lygiagrečiojo kompiuterio procesoriaus plokštė su keturiais superskalariniais Alpha procesoriais
Apribojimai
Superscalar procesorių našumo didinimą riboja du dalykai:
- Instrukcijų sąraše integruoto lygiagretumo lygis
- Dispečerio ir duomenų priklausomybės tikrinimo sudėtingumas ir laiko sąnaudos.
Net jei įprastame superskalariniame procesoriuje priklausomybių tikrinimas būtų be galo spartus, jei pats instrukcijų sąrašas turi daug priklausomybių, tai taip pat apribotų galimą našumo padidėjimą, todėl dar vienas apribojimas yra kode integruoto lygiagretumo kiekis.
Nesvarbu, koks didelis būtų dispečerio greitis, yra praktinė riba, kiek instrukcijų galima išsiųsti vienu metu. Nors techninės įrangos pažanga leis sukurti daugiau funkcinių vienetų (pvz., ALU) viename procesoriaus branduolyje, instrukcijų priklausomybių tikrinimo problema padidėja tiek, kad pasiekiama superskalarinio dispečerinio dispečerio riba yra šiek tiek mažesnė. Tikėtina, kad vienu metu siunčiamos penkios-šešios instrukcijos.
Alternatyvos
- Vienalaikis daugiagretis duomenų srautų valdymas (angl. Simultaneous multithreading), dažnai sutrumpintai vadinamas SMT, - tai metodas, kuriuo siekiama padidinti bendrą superskalarinių procesorių spartą. SMT leidžia vykdyti kelis nepriklausomus vykdymo srautus, kad būtų geriau išnaudojami šiuolaikinio superskalarinio procesoriaus turimi ištekliai.
- Daugiabranduoliai procesoriai: superskalariniai procesoriai nuo daugiabranduolinių procesorių skiriasi tuo, kad keli pertekliniai funkciniai vienetai nėra ištisi procesoriai. Vieną superskalarų procesorių sudaro pažangūs funkciniai blokai, tokie kaip ALU, sveikųjų skaičių daugiklis, sveikųjų skaičių keitiklis, slankiojo kablelio blokas (FPU) ir kt. Gali būti kelios kiekvieno funkcinio bloko versijos, kad būtų galima lygiagrečiai vykdyti daug instrukcijų. Tuo skiriasi nuo daugiabranduolinių procesorių, kurie vienu metu apdoroja instrukcijas iš kelių gijų, po vieną giją viename branduolyje.
- Vamzdeliniai procesoriai: superskalariniai procesoriai taip pat skiriasi nuo procesorių su vamzdynais, kuriuose kelios instrukcijos vienu metu gali būti įvairiuose vykdymo etapuose.
Įvairūs alternatyvūs metodai nėra vienas kitam prieštaraujantys - jie gali būti (ir dažnai yra) derinami viename procesoriuje, todėl galima sukurti daugiabranduolį procesorių, kuriame kiekvienas branduolys yra nepriklausomas procesorius su keliais lygiagrečiais superskalariniais vamzdynais. Kai kuriuose daugiabranduoliniuose procesoriuose taip pat yra vektorių funkcija.
Susiję puslapiai
- Lygiagretieji skaičiavimai
- Instrukcijų lygmens lygiagretumas
- Vienalaikis daugiasluoksniškumas (SMT)
- Daugiabranduoliai procesoriai
Klausimai ir atsakymai
K: Kas yra superskalarinė technologija?
A.: Superskalarinė technologija yra pagrindinių lygiagrečiųjų skaičiavimų forma, leidžianti per kiekvieną taktinį ciklą apdoroti daugiau nei vieną instrukciją, vienu metu naudojant kelis vykdymo vienetus.
K: Kaip veikia superskalarinė technologija?
A: Superskalarinė technologija apima instrukcijas, kurios į procesorių patenka eilės tvarka, ieškant duomenų priklausomybės, ir įkraunant daugiau nei vieną instrukciją per kiekvieną taktinį ciklą.
K: Kuo skiriasi skaliariniai ir vektoriniai procesoriai?
A.: Skalariniame procesoriuje instrukcijos paprastai vienu metu dirba su vienu ar dviem duomenų elementais, o vektoriniame procesoriuje instrukcijos paprastai vienu metu dirba su daugeliu duomenų elementų. Superskalarinis procesorius yra abiejų tipų mišinys, nes kiekviena instrukcija apdoroja vieną duomenų elementą, tačiau vienu metu vykdoma daugiau nei viena instrukcija, todėl procesorius vienu metu apdoroja daug duomenų elementų.
Klausimas: Kokį vaidmenį superskalariniame procesoriuje atlieka tikslus instrukcijų dispečeris?
A: Tikslus instrukcijų dispečeris yra labai svarbus superskalariniam procesoriui, nes užtikrina, kad vykdymo vienetai visada būtų užimti darbais, kurių greičiausiai prireiks. Jei instrukcijų dispečeris nėra tikslus, dalį darbo gali tekti išmesti, todėl procesorius nebus greitesnis už skaliarinį procesorių.
Klausimas: Kuriais metais visi įprasti procesoriai tapo superskalariniais?
A: 2008 m. visi įprasti procesoriai tapo superskaliniais.
K: Kiek ALU, FPU ir SIMD blokų gali būti įprastame procesoriuje?
A: Įprastame centriniame procesoriuje gali būti iki 4 ALU, 2 FPU ir 2 SIMD vienetai.