Vienalaikis daugiasluoksniškumas

Vienalaikis daugiasluoksniškumas, sutrumpintai SMT, yra metodas, skirtas pagerinti bendrą superskalarinių procesorių efektyvumą naudojant aparatinį daugiasluoksniškumą. SMT leidžia vykdyti kelias nepriklausomas vykdymo gijas, kad būtų geriau išnaudojami šiuolaikinių kompiuterių architektūrų teikiami ištekliai.

Daugiagretainis darbas yra panašus į daugiaužduočių darbą, tačiau šiuolaikiniuose superskalariniuose procesoriuose jis įgyvendinamas vykdymo gijų lygmeniu.

Projektuojant procesorius yra du būdai, kaip padidinti lusto lygiagretumą, kai reikia mažiau išteklių:

  1. Superskalarinis metodas: kuriuo bandoma padidinti instrukcijų lygiagretumą (ILP), vienu metu vykdant kelias instrukcijas (vadinama: vienu metu); "vienu metu" siunčiant instrukcijas (vadinama: instrukcijų siuntimas) keliems nereikalingiems procesoriaus viduje esantiems vykdymo blokams.
  2. Daugiagretusis lusto lygmens (angl. Chip-level multithreading, CMT) metodas: Thread level parallelism (TLP) naudojimas, siekiant vienu metu viename procesoriaus luste vykdyti kelių gijų instrukcijas.

Yra daugybė būdų, kaip luste palaikyti daugiau nei vieną giją, būtent:

  1. Perskirstytas daugiasluoksniškumas (angl. Interleaved multithreading, IMT) : kelių instrukcijų išdavimas skirtingais srautais, dar vadinamas laikiniu daugiasluoksniškumu. Jį dar galima skirstyti į smulkiagrūdį daugiasluoksnį arba stambiagrūdį daugiasluoksnį, priklausomai nuo tarpsluoksnių išdavimo dažnumo. Fine-grain multithreading po kiekvieno ciklo išduoda instrukcijas skirtingoms gijoms, o coarse-grain multithreading pereina prie instrukcijų išdavimo iš kitos gijos tik tada, kai šiuo metu vykdoma gija sukelia tam tikrus ilgo uždelsimo įvykius (pvz., puslapio klaidą ir pan.). Šiurkščiagrūdis daugiasluoksniškumas dažniau naudojamas dėl mažesnio konteksto perjungimo tarp gijų. Procesoriuose, kuriuose kiekviename branduolyje yra vienas vamzdynas, daugiasluoksnė tinklaveika yra vienintelis įmanomas būdas, nes per ciklą galima išduoti tik vieną instrukciją.
  2. Vienalaikis daugiasluoksniškumas (angl. Simultaneous multithreading, SMT): Vieno ciklo metu išduodamos kelios instrukcijos iš kelių gijų. Kad tai būtų galima padaryti, procesorius turi būti superskalarus.
  3. Čipo lygmens daugiaprocesorius (CMP arba daugiabranduolinis procesorius): į vieną lustą integruojami du ar daugiau superskalarinių procesorių, kurių kiekvienas savarankiškai vykdo gijas.
  4. Bet koks IMT/SMT/CMP derinys

Pagrindinis veiksnys, padedantis juos atskirti, yra tai, kiek instrukcijų procesorius gali išduoti per vieną ciklą ir iš kiek gijų tos instrukcijos gaunamos.

Šiuolaikinių SMT procesorių pavyzdžiai

  1. "Intel Pentium 4" buvo pirmasis šiuolaikinis stalinių kompiuterių procesorius, kuriame buvo įdiegtas vienalaikis daugiajutiklis duomenų srautų valdymas (nuo 2002 m. išleisto 3,06 GHz modelio ir vėliau įdiegtas daugelyje kitų procesorių). Šią funkciją "Intel" vadina "Hyper-Threading Technology" (HTT) ir pateikia pagrindinį dviejų gijų SMT variklį. "Intel" teigia, kad, palyginti su identišku "Pentium 4" be SMT, jo sparta padidėja iki 30 %.
  2. Naujausiuose MIPS architektūros projektuose yra SMT sistema, vadinama "MIPS MT".
  3. 2004 m. gegužę paskelbta IBM POWER5 yra dviejų branduolių DCM arba keturių branduolių ar 8 branduolių MCM, o kiekvienas branduolys turi dviejų gijų SMT variklį. IBM realizacija yra sudėtingesnė nei ankstesnės, nes gali priskirti skirtingą prioritetą skirtingoms gijoms, yra smulkesnė, o SMT variklį galima dinamiškai įjungti ir išjungti, kad būtų galima geriau vykdyti tas darbo apkrovas, kurių našumo SMT procesorius nepadidintų. Tai antrasis IBM įgyvendintas visuotinai prieinamas aparatūrinis daugiasluoksniškumas.
  4. 2008 m. išleistas "Intel Atom" yra pirmasis "Intel" gaminys, kuriame įdiegta SMT (parduodamas kaip "Hyper-threading"), tačiau nepalaikomas instrukcijų eiliškumo keitimas, spekuliacinis vykdymas ar registrų pervadinimas.

Susiję puslapiai

Klausimai ir atsakymai

K: Kas yra vienalaikis daugiasluoksniškumas?


A: Vienalaikis daugiasluoksniškumas (angl. Simultaneous multithreading, SMT) - tai metodas, skirtas pagerinti bendrą superskalarinių procesorių efektyvumą naudojant aparatinį daugiasluoksniškumą. Jis leidžia vykdyti kelias nepriklausomas vykdymo gijas, kad būtų geriau išnaudojami šiuolaikinių kompiuterių architektūrų teikiami ištekliai.

Klausimas: Kaip SMT galima palyginti su daugiapakopiu valdymu?


A.: Daugiagretaus duomenų srauto koncepcija panaši į daugiaužduočių, tačiau šiuolaikiniuose superskalariniuose procesoriuose jis įgyvendinamas vykdymo gijų lygmeniu, o daugiaužduotys įgyvendinamos procesų lygmeniu.

K: Kokie yra du būdai lusto lygiagretumui padidinti?


A: Du lygiagretumo didinimo luste būdai yra superskalarinis metodas ir lusto lygmens daugiajuostis procesas (CMT).

K: Kokie yra keli skirtingi lusto lygmens daugiasluoksniškumo tipai?


A.: Skirtingi lusto lygmens daugiasluoksniškumo tipai yra šie: "Interleaved Multithreading" (IMT), "Fine-Grain Multithreading", "Coarse Grain Multithreadin" ir "Simultaneous Multithreadin" (SMT).

K.: Kaip galima atskirti IMT/SMT/CMP?


A: Pagrindinis veiksnys, leidžiantis atskirti IMT/SMT/CMP, yra tai, kiek instrukcijų procesorius gali išduoti per vieną ciklą ir iš kiek gijų tos instrukcijos ateina.

K: Kokio tipo procesorius turi būti naudojamas SMT?


A: SMT turi būti naudojamas superskalarus procesorius.

K: Kokio tipo procesorius naudojamas Chip Level MultiProcessing?


A.: "Chip Level MultiProcessing" naudoja daugiabranduolinius procesorius, kurie viename luste integruoja du ar daugiau superskalarinių procesorių, kurių kiekvienas savarankiškai vykdo gijas.

AlegsaOnline.com - 2020 / 2023 - License CC3