Superskalārā
Superskalārā CPU konstrukcija nodrošina paralēlo skaitļošanu, ko sauc par instrukciju līmeņa paralēlismu vienā CPU, kas ļauj veikt vairāk darbu ar to pašu taktātrumu. Tas nozīmē, ka CPU izpilda vairāk nekā vienu instrukciju takts cikla laikā, izpildot vairākas instrukcijas vienlaicīgi (ko sauc par instrukciju dispečerizāciju) dublētās funkcionālajās vienībās. Katra funkcionālā vienība ir tikai izpildes resurss procesora kodolā, piemēram, aritmētiskā loģiskā vienība (ALU), svārstīgā komata vienība (FPU), bitu pārveidotājs vai reizinātājs.
Lielākā daļa superskalāro procesoru ir arī konveijeru procesori, taču ir iespējams arī superskalārais procesors bez konveijera vai konveijeru procesors bez superskalāra procesora.
Superskalāro metodi atbalsta vairākas procesora kodola funkcijas:
- Instrukcijas ir no sakārtota instrukciju saraksta.
- Procesora aparatūra var noteikt, kurām instrukcijām ir kādas datu atkarības.
- Var nolasīt vairākas instrukcijas vienā takts ciklā
Katra skalārā procesora izpildītā instrukcija vienlaikus maina vienu vai divus datu elementus, bet katra vektorprocesora izpildītā instrukcija apstrādā daudzus datu elementus vienlaikus. Superskalārais procesors ir abu šo procesu apvienojums:
- Katra instrukcija apstrādā vienu datu elementu.
- Katrā procesora kodolā ir vairākas dublējošas funkcionālās vienības, tāpēc vairākas instrukcijas vienlaikus apstrādā neatkarīgus datu elementus.
Superskalārajā centrālajā procesorā instrukciju dispečers nolasa instrukcijas no atmiņas un izlemj, kuras instrukcijas var izpildīt paralēli, nosūtot tās uz vairākām dublētām funkcionālajām vienībām, kas pieejamas centrālajā procesorā.
Superskalārā CPU projektēšanā ir svarīgi uzlabot instrukciju dispečera precizitāti un nodrošināt, lai tas vienmēr varētu aizņemt vairākas funkcionālās vienības. No 2008. gada visi vispārējas nozīmes procesori ir superskalāri, tipisks superskalārs procesors var ietvert līdz 4 ALU, 2 FPU un divas SIMD vienības. Ja dispečers nespēj aizņemt visas vienības, procesora veiktspēja būs zemāka.
CRAY T3e paralēlā datora procesora plate ar četriem superskalārajiem Alpha procesoriem
Vienkāršs superskalārais cauruļvads. Saņemot un nosūtot divas instrukcijas vienlaicīgi, vienā ciklā var izpildīt ne vairāk kā divas instrukcijas.
Ierobežojumi
Superscalar procesora konstrukcijas veiktspējas uzlabošanu ierobežo divas lietas:
- Instrukciju sarakstā iebūvētā paralēlisma līmenis
- Dispečera un datu atkarības pārbaudes sarežģītība un laika izmaksas.
Pat ja parastā superskalārajā CPU ir bezgalīgi ātra atkarību pārbaude, ja instrukciju sarakstā ir daudz atkarību, tas arī ierobežotu iespējamo veiktspējas uzlabošanos, tāpēc vēl viens ierobežojums ir kodā iebūvētā paralēlisma apjoms.
Neatkarīgi no dispečera ātruma ir praktiski ierobežots vienlaikus nosūtāmo instrukciju skaits. Lai gan aparatūras attīstība ļaus palielināt funkcionālo vienību skaitu (piemēram, ALU) katrā CPU kodolā, instrukciju atkarību pārbaudes problēma palielinās līdz tādai robežai, ka sasniedzamā superskalārās dispečerēšanas robeža ir nedaudz maza. -- visticamāk, piecas līdz sešas vienlaicīgi dispečējamas instrukcijas.
Alternatīvas
- Vienlaicīga daudzpavedienu apstrāde (Simultaneous multithreading): bieži saīsināti saukta par SMT, ir metode, ar ko uzlabo superskalāro procesoru kopējo ātrumu. SMT ļauj vairākiem neatkarīgiem izpildes pavedieniem labāk izmantot resursus, kas pieejami modernajā superskalārajā procesorā.
- Daudzkodolu procesori: superskalārie procesori atšķiras no daudzkodolu procesoriem ar to, ka vairākas dublētās funkcionālās vienības nav veseli procesori. Viens superskalārais procesors sastāv no modernām funkcionālajām vienībām, piemēram, ALU, veselu skaitļu reizinātāja, veselu skaitļu pārveidotāja, svārstīgā komata vienības (FPU) u. c. Katrai funkcionālajai vienībai var būt vairākas versijas, lai varētu paralēli izpildīt daudzas instrukcijas. Tas atšķiras no daudzkodolu procesoriem, kas vienlaicīgi apstrādā instrukcijas no vairākiem pavedieniem, pa vienam pavedienam katrā kodolā.
- Cauruļveida procesori: superskalārie procesori arī atšķiras no cauruļveida procesora, kurā vairākas instrukcijas var vienlaicīgi atrasties dažādās izpildes stadijās.
Dažādās alternatīvās metodes nav savstarpēji izslēdzošas - tās var apvienot (un bieži vien arī apvieno) vienā procesorā, tāpēc ir iespējams izstrādāt daudzkodolu procesoru, kurā katrs kodols ir neatkarīgs procesors ar vairākiem paralēliem superskalāriem cauruļvadiem. Daži daudzkodolu procesori ietver arī vektoru iespējas.
Saistītās lapas
- Paralēlā skaitļošana
- Instrukciju līmeņa paralēlisms
- Vienlaicīga daudzvirzienu lasīšana (SMT)
- Daudzkodolu procesori
Jautājumi un atbildes
J: Kas ir superskalārā tehnoloģija?
A: Superskalārā tehnoloģija ir paralēlās skaitļošanas pamatveids, kas ļauj apstrādāt vairāk nekā vienu instrukciju katrā takts ciklā, izmantojot vairākas izpildes vienības vienlaicīgi.
J: Kā darbojas superskalārā tehnoloģija?
A.: Superskalārā tehnoloģija paredz, ka instrukcijas tiek ievadītas procesorā secīgi, tā darbības laikā tiek meklētas datu atkarības un katrā takts ciklā tiek ielādēta vairāk nekā viena instrukcija.
J: Kāda ir atšķirība starp skalārajiem un vektoru procesoriem?
A: Skalārajā procesorā instrukcijas parasti strādā ar vienu vai diviem datu elementiem vienlaikus, bet vektoru procesorā instrukcijas parasti strādā ar daudziem datu elementiem vienlaikus. Superskalārais procesors ir abu veidu kombinācija, jo katra instrukcija apstrādā vienu datu elementu, bet vienlaikus tiek izpildītas vairākas instrukcijas, tāpēc procesors vienlaikus apstrādā daudz datu elementu.
J: Kāda loma superskalārajā procesorā ir precīzam instrukciju dispečeram?
A: Precīzs instrukciju dispečers ir ļoti svarīgs superskalārajam procesoram, jo tas nodrošina, ka izpildes vienības vienmēr ir aizņemtas ar darbu, kas, iespējams, būs nepieciešams. Ja instrukciju dispečers nav precīzs, tad daļu darba var nākties izmest, un līdz ar to procesors nebūs ātrāks par skalu procesoru.
Jautājums: Kurā gadā visi parastie procesori kļuva par superskalārajiem?
A: 2008. gadā visi parastie procesori kļuva par superskalārajiem.
Jautājums: Cik daudz ALU, FPU un SIMD vienību var būt parastā CPU?
A: Parastā CPU var būt līdz 4 ALU, 2 FPU un 2 SIMD blokiem.