Samaaegne mitmikeeramine (SMT): mis see on ja kuidas töötab
SMT ehk samaaegne mitmikeeramine selgitatuna: kuidas see protsessorites töötab, suurendab jõudlust ja ressursikasutust — tehniline juhend ning võrdlus IMT/CMP.
Samaaegne mitmikeeramine, lühend SMT, on tehnika, millega parandatakse üliskalaarsete protsessorite üldist tõhusust riistvaralise mitmikeeramise abil. SMT võimaldab mitut sõltumatut täitmisniiti, et paremini kasutada kaasaegsete arvutiarhitektuuride pakutavaid ressursse.
Mitmesideseade on kontseptsioonilt sarnane multitaskingule, kuid seda rakendatakse moodsates superskalaarsetes protsessorites täitmisniidi tasandil.
Protsessori projekteerimisel on kaks võimalust suurendada kiibilikku paralleelsust väiksema ressursinõudlusega:
- Superskalaarne tehnika: mis püüab suurendada käsu taseme paralleelsust (ILP) mitme käsu üheaegse (nimetatakse: samaaegselt) täitmise kaudu; "samaaegselt" käskude saatmise (nimetatakse: käskude saatmine) kaudu mitmele protsessori sisse ehitatud üleliigsele täitmisüksusele.
- Kiibitasandi mitmikeeramise (CMT) tehnika: kasutatakse niiditasandi paralleelsust (TLP), et täita ühe protsessorikiibi piires korraga mitme niidi käske.
On mitmeid viise, kuidas toetada rohkem kui ühte niiti kiibi sees, nimelt:
- Interleaved multithreading (IMT) : mitme käsu järjestikune väljastamine erinevatest lõimedest, mida nimetatakse ka ajaliseks multithreadinguks. Seda võib jagada edasi peeneteraliseks või jämedateraliseks multitöötluseks sõltuvalt interleaved emissioonide sagedusest. Fine-grain multithreading väljastab erinevate niitide juhiseid iga tsükli järel, samas kui coarse-grain multithreading lülitub teise niidi juhiste väljastamisele ainult siis, kui praegune täitev niit põhjustab mõne pika latentsusega sündmuse (nt lehekülje viga jne). Jämedateraline mitmehäälne muutmine on tavalisem, kuna niidid vahetavad vähem konteksti. Protsessorite puhul, millel on üks torujuhtme tuumade kohta, on interleaved multithreading ainus võimalik viis, sest see võib anda välja ainult ühe käsu tsükli kohta.
- Samaaegne mitmikeeramine (SMT): Mitme käsu väljastamine mitmest lõngast ühes tsüklis. Selleks peab protsessor olema superskalaarne.
- Kiibitasandi multiprotsessor (CMP või multi-core processor): integreerib kaks või enam superskalaarset protsessorit ühele kiibile, millest igaüks täidab niite iseseisvalt.
- IMT/SMT/CMP mis tahes kombinatsioon
Nende eristamise võtmeteguriks on vaadata, kui palju käske protsessor suudab ühe tsükli jooksul välja anda ja kui paljudest lõimedest need käsud pärinevad.
Kuidas SMT töötab lihtsas keeles
SMT võimaldab ühel füüsilisel protsessori tuumal täita samaaegselt mitme tarkvaralise lõime (thread) käske, jagades tuuma sisemisi riistvaralisi ressursse (näiteks täitmisühikud, registerfailid, kaudsed bufrid ja vahemälu) lõimede vahel. Erinevalt superskalaarset käskude taseme paralleelsusest, kus püütakse ühe lõime sees samal ajal täita palju käske, võimaldab SMT koondada ühe tuuma läbi mitme lõime tekkiva töökoormuse ja nii saavutada suuremat läbilaset (throughput).
Peamised eelised
- Parendatud ressursikasutus: kui üks lõim ootab mälu või muid pikki latentsusi, saab teine lõim kasutada täitmisühikuid, mis muidu seisaksid tühjana.
- Suurem läbilase üldjuhul – olenevalt töökoormusest võib SMT anda märgatava jõudluse tõusu (tihti 15–30% mitme lõimega koormustel, mõnikord rohkem).
- Madal lisakulud: SMT annab paralleelsuse kasvatamise riistvaraliselt võrreldes täiendava füüsilise tuuma lisamisega (CMP) väiksema pindala- ja energiakuluga.
Puudused ja riskid
- Üksikniidi jõudlus võib halveneda: kuna lõimed jagavad samu täitmisressursse, võib üksikniidi latentsus või käitumine aeglustada seda lõime täitmist võrreldes puhta ühe lõime tuumaga.
- Ressurssikonfliktid: jagatud vahemälud ja täitmisühikud võivad tekkida kitsaskohtadeks, eriti väga sarnaste töökoormuste puhul.
- Turbekaidlus- ja turvariskid: SMT võib suurendada mikrotasandi külgkanalite (side-channel) ja andmete leket, sest kaks lõime (või kaks virtuaalset protsessorit) võivad jagada samu mikroarhitektuurikomponente. Seetõttu mõnedes turvalistes keskkondades või pilveõppeklastrites on SMT (nt Hyper-Threading) välja lülitatud.
Tüübid ja võrdlus teiste lähenemistega
SMT on üks viis TLP (thread-level parallelism) realiseerimiseks. Muud variandid:
- Interleaved multithreading (IMT) – ajapõhine niitide vahetamine, kus välja antakse käske ühe lõime kaupa tsükli kaupa (fine-grain) või harvem (coarse-grain). IMT nõuab tavaliselt vähem riistvara kui SMT, kuid ei kasuta superskalaarsust mitme käsu samaaegseks väljundiks.
- CMP / multi-core – füüsiliste tuumade lisamine samale kiibile; iga tuum saab eraldi täita lõime ega pea ressursse tingimata teistega jagama.
- Hübriidlahendused – tootjad kombineerivad tihti SMT-i, CMP-d ja superskalaarset projekteerimist (st mitme tuumaga kiibid, kus iga tuum toetab mitut riistvaralist lõime).
Võtmeindikaator on: kui palju käske saab protsessor ühe tsükli jooksul välja anda ning kui paljudest lõimedest need käsud pärinevad — see määrab, kas tegemist on IMT, SMT või lihtsalt superskalaarsusega.
Rakendused ja näited
- Intel Hyper-Threading — varasem ja laialt tuntud kommertsialiseeritud SMT-variatsioon, kasutusel alates Pentium 4 ajast; võimaldab tavaliselt 2 lõime ühe füüsilise tuuma kohta.
- AMD Zen arhitektuur — toetab samuti SMT-i (tavaliselt 2 lõime tuuma kohta).
- Suuremad serveriarhitektuurid (nt IBM POWER, SPARC) — toetavad sageli mitut riistvaralist lõime ühe tuuma kohta (4, 8 või rohkem) ja on optimeeritud palju-paralleelseteks koormateks.
Jõudlus ja optimeerimine
SMT-i kasu sõltub suuresti töökoormusest. Parima tulemuse saab siis, kui mitu lõime kasutavad protsessori erinevaid ressursse: näiteks üks lõim ootab mälu ja teine kasutab ALU-d. Kui mõlemad lõimed võistlevad samade üksuste üle (nt täpselt sama tüüpi aritmeetika või intensiivne L1 vahemälu kasutus), siis võib kasu olla väike või isegi negatiivne.
Operatsioonisüsteem ja ajastaja mängivad olulist rolli: kui OS jagab töökoormust teadlikult (nt ei pane kahte väga intensiivset lõime sama füüsilise tuuma mõlema lõime peale), paraneb kogu süsteemi jõudlus ja stabiilsus.
Praktilised soovitused
- Testige rakendusi reaalsete koormustega — üldised hinnangud ei pruugi kehtida spetsiifilistes olukordades.
- Turvalisuse nõudmiste korral hinnake SMT-keelamise mõju — mõnes majutuskeskkonnas on SMT välja lülitatud, et vähendada külgkanalite riske.
- Kui arendate kõrge jõudlusega tarkvara, mõõtke nii üksikniidi kui mitme-niidi jõudlust ning katsetage erinevaid tuumide/niitide sidumisi (CPU affinity).
Kokkuvõtteks: SMT on võimas tehnika, mis võib parandada protsessori läbilaset ja ressursikasutust, kuid selle tegelik kasu sõltub töökoormusest, arhitektuurist ja süsteemist tervikuna. SMP/CM P, IMT ja SMT on erinevad vahendid paralleelsuse saavutamiseks ning igaühel on oma kompromissid jõudluse, keerukuse ja energiatarbe osas.
Näiteid kaasaegsetest SMT protsessoritest
- Intel Pentium 4 oli esimene kaasaegne lauaarvutiprotsessor, mis rakendas samaaegset mitmikeeramist, alates 2002. aastal välja antud 3,06 GHz mudelist, ja sellest ajast alates võeti see kasutusele mitmetes nende protsessorites. Intel nimetab seda funktsionaalsust Hyper-Threading Technology (HTT) ja pakub põhilist kahe niidi SMT-mootorit. Intel väidab, et kiirus on kuni 30% suurem võrreldes muidu identse, SMT-ta Pentium 4 mudeliga.
- Viimased MIPS-arhitektuuri projektid sisaldavad SMT-süsteemi, mida tuntakse nime all "MIPS MT".
- IBM POWER5, mis kuulutati välja 2004. aasta mais, on kas kahetuumaline DCM või neljatuumaline või kaheksatuumaline MCM, mille iga tuum sisaldab kahe-niidilist SMT-mootorit. IBMi rakendus on keerukam kui eelmised, sest see võib määrata erinevatele lõimedele erineva prioriteedi, on peenema täpsusega ning SMT-mootorit saab dünaamiliselt sisse ja välja lülitada, et paremini täita neid töökoormusi, mille puhul SMT-protsessor ei suurendaks jõudlust. See on IBMi teine üldkasutatava riistvaralise mitmikeeramise rakendus.
- 2008. aastal välja antud Intel Atom on esimene Inteli toode, millel on SMT (mida turustatakse Hyper-threading'ina), kuid mis ei toeta käskude ümberjärjestamist, spekulatiivset täitmist ega registrite ümbernimetamist.
Seotud leheküljed
- Niit (arvutiteadus)
- Paralleelne arvutamine
- Käskude tasandi paralleelsus
- Mitme tuumaga protsessorid
Küsimused ja vastused
K: Mis on samaaegne mitmikeeramine?
V: Samaaegne mitmikeeramine (SMT) on tehnika, millega parandatakse üliskalaarsete protsessorite üldist tõhusust riistvaralise mitmikeeramise abil. See võimaldab mitut sõltumatut täitmisniiti, et paremini kasutada kaasaegsete arvutiarhitektuuride pakutavaid ressursse.
K: Kuidas on SMT võrreldav multitaskinguga?
V: Mitmesidumine on kontseptsioonilt sarnane multitaskinguga, kuid seda rakendatakse kaasaegsetes superskalaarsetes protsessorites täitmisniidi tasandil, samas kui multitasking on rakendatud protsesside tasandil.
K: Millised on kaks võimalust kiibisisese paralleelsuse suurendamiseks?
V: Kaks võimalust kiibisisese paralleelsuse suurendamiseks on superskalaarne tehnika ja kiibitasandi mitmikeeramine (Chip-level multithreading, CMT).
K: Millised on erinevad kiibitasandi mitmeheljelise töötlemise tüübid?
V: Erinevad kiibitasandi multitöötluse tüübid on Interleaved Multithreading (IMT), Fine-Grain Multithreading, Coarse Grain Multithreadin ja Simultaneous Multithreadin (SMT).
K: Kuidas saab vahet teha IMT/SMT/CMP vahel?
V: IMT/SMT/CMP eristamisel on võtmeteguriks see, kui palju käske protsessor suudab ühes tsüklis välja anda ja kui paljudest lõimedest need käsud pärinevad.
K: Millist tüüpi protsessorit tuleb kasutada SMT puhul?
V: SMT puhul tuleb kasutada superskalaarset protsessorit.
K: Millist tüüpi protsessorit kasutab kiibitasandi multiprotsessor?
V: Chip Level MultiProcessing kasutab mitme tuumaga protsessoreid, mis integreerivad ühte kiibile kaks või enam superskalaarset protsessorit, millest igaüks täidab niite iseseisvalt.
Otsige