Vienlaicīga daudzkāršošana, saīsinājums SMT, ir aparatūras metode, kas uzlabo superskalāro procesoru kopējo efektivitāti, ļaujot vienlaikus izpildīt vairākus neatkarīgus izpildes pavedienus. SMT izmanto procesora iekšējo resursu (piem., izpildes vienības, reģistru failu, kešatmiņu) koplietošanu, lai palielinātu procesora caurlaidspēju un labāk aizpildītu izpildes posmus, kuros citaizēti resursi būtu neizmantoti.
Koncepts ir līdzīgs daudzuzdevumu veikšanai, taču modernajos superskalārajos procesoros tas tiek īstenots tieši izpildes pavedienu līmenī, nevis kā atsevišķu programmu pārslēgšana.
Kā palielināt paralēlismu mikroshēmā
Procesoru projektēšanā pastāv divas galvenās pieejas, kā ar mazākiem aparatūras resursiem palielināt paralēlismu:
- Superskalārā metode: mērķis ir palielināt instrukciju līmeņa paralēlismu (ILP), izpildot vairākas instrukcijas vienlaicīgi. To panāk, nosūtot vairākas instrukcijas tajā pašā ciklā uz dažādām izpildes vienībām procesorā.
- Mikroshēmas līmeņa daudvirzienu (CMT) metode: izmanto Thread level parallelism (TLP), lai vienā mikroshēmā vienlaikus izpildītu instrukcijas no vairākiem pavedieniem, tādējādi palielinot kopējo darba slodzē izpildīto instrukciju skaitu.
Galvenie SMT un saistīto tehnoloģiju veidi
Ir vairāki veidi, kā mikroshēmā uzturēt un izpildīt vairāk nekā vienu pavedienu:
- Daudzpavedes daudzpavedienu sistēma (IMT): vairāku instrukciju izdošana no dažādiem pavedieniem (dažkārt saukta par temporal multithreading). To var iedalīt:
- Fine-grain (smalkgraudainā) multithreading: procesors pēc katra cikla vai ļoti bieži pārslēdzas starp pavedieniem, izdodot instrukcijas no atšķirīgiem pavedieniem katrā ciklā. Šī pieeja labi aizpilda izvades caurules gadījumos, kad viena pavediena izvade kavējas.
- Coarse-grain (rupjgraudainā) multithreading: pārslēgšanās starp pavedieniem notiek retāk — tikai tad, kad pašreizējais pavediens saskaras ar ilgstošu kavēšanos (piem., lapas kļūda). Tas samazina konteksta pārslēgšanās izmaksas, bet mazāk agresīvi maskē īslaicīgas kavēšanās.
- Vienlaicīga daudzpavedienu apstrāde (SMT): viena cikla laikā izdod vairākus norādījumus no vairākiem pavedieniem. To var īstenot tikai tad, ja procesoram ir superskalāras iespējas — tas spēj izdot (issue) vairākas instrukcijas vienā ciklā un tām piešķirt izpildes vienības.
- Mikroshēmas līmeņa daudzkodolu procesors (CMP): vienā mikroshēmā integrēti divi vai vairāki superskalāri kodoli, katrs izpilda pavedienus neatkarīgi. Šī pieeja palielina paralēlismu, izvietojot vairāk pilnvērtīgu izpildes vienību blakus.
- Jebkura kombinācija no IMT/SMT/CMP — reālas mikroshēmas bieži izmanto šo pieeju kombinācijas, lai optimizētu veiktspēju un enerģijas efektivitāti konkrētām darba slodzēm.
Kārtība un resursu dalīšana SMT
SMT izejas ideja — vienā fiziskā kodolā virtuāliem pavedieniem (dažkārt saukti par "loģiskiskajiem procesoriem") piešķirt piekļuvi tiem pašiem izpildes blokiem. Daļa no būtiskajām aparatūras daļām tiek dalītas (izpildes vienības, kešatmiņas līmeņi, branch predictor), bet ir arī atsevišķi resursi, kas katram pavedienam ir individuāli (piem., daži reģistri, programmas skaitītājs). Galvenās sekas:
- Palielinās caurlaidspēja — ja viens pavediens gaida datu piegādi, cits var izmantot izpildes vienības.
- Pastāv resursu konkurence — pavedieni var viena otru ietekmēt, sacenšoties par kešatmiņu, atmiņas joslas platumu, TLB un izpildes vienībām.
- Plānošanas (scheduling) un atbalsta aparatūra kļūst sarežģītāka — nepieciešamas mehāniskas, kas izšķir, kuras instrukcijas izdot prioritārāk.
Priekšrocības un trūkumi
- Priekšrocības:
- Labāka aparatūras izmantošana un augstāka caurlaidspēja ar mazāku transitoru skaitu nekā ekvivalenta jauda, pievienojot vēl vienu pilnvērtīgu kodolu.
- Var uzlabot veiktspēju reālās darba slodzēs, kas satur daudz gaidīšanas operāciju (atmiņas pieprasījumu, stāvvietas).
- Efektīva izmantošana enerģijas un platības, salīdzinot ar tikai paralēlu kodolu pievienošanu.
- Trūkumi:
- Veiktspējas pieaugums nav proporcionāls pavedienu skaitam — jo vairāk pavedienu, jo lielāka konkurence par kopējiem resursiem.
- Sarežģītāka aparatūras un mikroarhitektūras projektēšana (plašāka izpildes plānošana, resursu atdales mehānismi).
- Dažām darba slodzēm SMT var pat samazināt veiktspēju (piem., ja pavedieni intensīvi izmanto tos pašus kopējos resursus), tāpēc nepieciešama plānošana un pielāgošana.
Praktiska realizācija un piemēri
SMT ir plaši izmantota komerciālā aparatūrā. Pazīstami piemēri:
- Intel Hyper-Threading (HT) — Intel implementēta SMT forma, kas ļauj vienam fiziskajam kodolam izskatīties kā diviem loģiskiem procesoriem operētājsistēmai, tādējādi palielinot paralēlismu noteiktās darba slodzēs.
- IBM POWER arhitektūra — vairākās POWER mikroshēmās ir izmantota SMT, lai nodrošinātu augstu caurlaidspēju serveru slodzēm.
- SPARC T-series (Sun/Oracle) procesori — izmanto gan daudzkodolu, gan SMT tehnoloģijas, lai optimizētu skaitļošanas jaudu daudzapakāpju serveros.
Veiktspējas apsvērumi un optimizācija
Reāla ieguvuma no SMT apjoms ir atkarīgs no darba slodzes rakstura. Ja lietojumprogramma satur daudz neatkarīgu pavedienu, kas maz izmanto kopējos resursus, SMT sniedz lielu labumu. Tomēr, ja pavedieni konkurē par kešu vai atmiņas joslas platumu, SMT ieguvums var būt ierobežots vai pat negatīvs. Tāpēc:
- Jāveic darbības režīmu analīze un testēšana, lai noteiktu, vai SMT palielina kopējo veiktspēju konkrētai slodzei.
- Operētājsistēmas un lietojumu plānotāji var pielāgot pavedienu izvietojumu (affinitāti), atslēdzot SMT vai ierobežojot pavedienu skaitu uz kodolu, ja tas uzlabo veiktspēju.
- Modernās mikroarhitektūrās tiek iekļauti mehānismi prioritāšu noteikšanai, resursu aizsardzībai un izolācijai, lai mazinātu negatīvo ietekmi starp pavedieniem.
Kopsavilkums
SMT — saīsinājums SMT — ļauj vienā superskalārā procesorā vienlaikus izpildīt instrukcijas no vairākiem pavedieniem, labāk izmantojot iekšējās izpildes vienības. To var kombinēt ar citiem paņēmieniem (IMT, CMP), un galvenais kritērijs, kas tos atšķir, ir tas, cik daudz instrukciju procesors var izdot vienā ciklā un no cik daudziem pavedieniem šīs instrukcijas nāk.