Szimultán többszálúság (SMT) a CPU-kban — definíció és működés

Szimultán többszálúság (SMT): részletes definíció, működés és architekturális előnyök — hogyan növeli a CPU párhuzamosságát, hatékonyságát és teljesítményét.

Szerző: Leandro Alegsa

A szimultán többszálú futás, rövidítve SMT, egy technika a hardveres többszálú futással rendelkező szuperskalár CPU-k általános hatékonyságának javítására. Az SMT több független végrehajtási szál használatát teszi lehetővé a modern számítógép-architektúrák által biztosított erőforrások jobb kihasználása érdekében.

A többszálú futás koncepciója hasonló a többfeladatos művelethez, de a modern szuperskalár processzorokban a végrehajtás szálszintjén valósul meg.

A processzorok tervezésénél kétféleképpen lehet növelni a chipen belüli párhuzamosságot kisebb erőforrásigény mellett:

  1. Szuperskalár technika: amely az utasításszintű párhuzamosság (ILP) növelésére törekszik azáltal, hogy egyszerre több utasítást hajt végre (kifejezés: egyidejűleg); az utasítások "egyidejű" szétosztásával (kifejezés: utasítás-diszpatching) a processzorban beépített több redundáns végrehajtó egységre.
  2. Chipszintű többszálú futás (CMT) technika: a szálszintű párhuzamosság (TLP) használata annak érdekében, hogy egy processzorchipen belül több szál utasításait egyszerre hajtsák végre.

Egynél több szál támogatása egy chipen belül többféleképpen lehetséges, nevezetesen:

  1. Interleaved multithreading (IMT) : Több utasítás különböző szálakból történő interleaved kiadása, amelyet időbeli multithreadingnek is neveznek. Az átlapolt kiadás gyakoriságától függően tovább osztható finom szemcsés vagy durva szemcsés multithreadingre. A finom szemcsés többszálúság minden ciklus után különböző szálaknak ad ki utasításokat, míg a durva szemcsés többszálúság csak akkor vált át egy másik szál utasításainak kiadására, ha az aktuálisan futó szál valamilyen hosszú késleltetési eseményt okoz (például oldalhiba stb.). A durva szemcseméretű többszálú futás inkább a szálak közötti kevesebb kontextusváltás miatt gyakori. A magonként egy csővezetékkel rendelkező processzorok esetében az egymásra épülő többszálú futás az egyetlen lehetséges mód, mivel ciklusonként legfeljebb egy utasítást tud kiadni.
  2. Egyidejű többszálú futás (SMT): Több utasítás kiadása több szálból egy ciklusban. Ehhez a processzornak szuperskalárnak kell lennie.
  3. Chip-szintű multiprocesszor (CMP vagy többmagos processzor): két vagy több szuperskalár processzort integrál egy chipbe, mindegyik szálakat önállóan hajt végre.
  4. IMT/SMT/CMP bármely kombinációja

A megkülönböztetésükhöz kulcsfontosságú tényező, hogy megnézzük, hány utasítást tud kiadni a processzor egy ciklusban, és hány szálból származnak az utasítások.

Működés — hogyan növeli az SMT a hatékonyságot

Az SMT lényege, hogy egy fizikai mag több logikai végrehajtási szálat támogat, és ezek a szálak egyszerre (egyazon órajelciklusban) is képesek utasításokat kibocsátani és végrehajtani a mag erőforrásain. A gyakorlatban ez úgy valósul meg, hogy a mag több szálból érkező utasításokat megőrzi a fetch/decode/issue csővezetékben, a végrehajtó egységek és a cache-ek pedig megosztottan szolgálják ki a kéréseket.

Tipikus hardverelemek, amelyeket megosztanak vagy szétosztanak a szálak:

  • Megosztott: végrehajtó egységek (ALU, FPU), L1/L2 cache egy része, branch-predictor, memória-alrendszer irányítás.
  • Egyedi/partícionált: program-számláló (PC), néhány szál-specifikus regiszterlogika, és a visszaállításhoz szükséges állapotok.
  • Dinamikusan kezelve: regiszter-átnevezés (register renaming) és utasítás-ütemező (issue queue), amelyek csökkentik a látszólagos függőségek (false dependencies) hatását.

Előnyök és kompromisszumok

  • Előnyök: jobb erőforrás-kihasználtság, növelt áteresztőképesség (magasabb IPC — instructions per cycle) memória- és I/O-késleltetések ellensúlyozásával; költséghatékonyabb, mint az azonos számú teljes mag integrálása.
  • Korlátok: ha két szál egyforma, erőforrás-igényes, CPU-intenzív munkát végez, kölcsönösen csökkenthetik egymás egy szálra jutó teljesítményét (kontenció a végrehajtó egységek és cache miatt). Egyes esetekben a teljesítménynem nő jelentősen, sőt akár csökkenhet is.
  • Biztonsági kockázatok: az SMT megosztott mikroarchitekturális erőforrásai miatt megjelenhetnek időzítésalapú (side-channel) információszivárgások; ezért néhány biztonságkritikus környezetben (például felhőszolgáltatóknál) az SMT-et kikapcsolják vagy különös ütemezési szabályokat alkalmaznak.

SMT a gyakorlatban — példák és tipikus hatások

Ismert implementációk: Intel Hyper‑Threading (HT) és AMD Zen SMT. A gyakorlati teljesítményjavulás erősen függ a munkaterheléstől: memória- vagy I/O-intenzív, vagy sok várakozást tartalmazó feladatoknál jelentős (több tíz százalék), míg számításigényes, nagyon optimalizált egy szálas feladatoknál kisebb vagy semmilyen javulás, sőt néha lassulás mérhető.

Általános útmutató:

  • Használjon SMT-et, ha a munkaterhelés sok várakozást, memóriaműveletet vagy I/O-t tartalmaz (webszerverek, adatbázisok, virtualizációs sűrűszerverek esetén gyakori előny).
  • Ha a feladat nagyon CPU-kötött és alacsony késleltetési igényű (például egyetlen nagy számítási kernel), az SMT bekapcsolása kisebb javulást hozhat vagy ronthatja a teljesítményt.
  • Biztonsági vagy izolációs követelményeknél mérlegelni kell az SMT kikapcsolását vagy az OS/hypervisor szálütemezésének módosítását.

Operációs rendszer és virtualizáció

Az OS és a hypervisor úgy látja a logikai processzorokat, mintha több CPU lenne; emiatt fontos a helyes processzor-affinitás kezelése. Virtualizáció során a vendég-VM-ek vCPU-i is megoszthatják a fizikai mag erőforrásait — ez befolyásolhatja a teljesítményt és izolációt.

Teljesítménymérés

Az SMT hatásának vizsgálatához mérőszámok: IPC (utasítás/ciklus), áteresztőképesség (throughput), késleltetés egy szálra vetítve, cache-miss ráta és végrehajtási egységek kihasználtsága. Célszerű összehasonlítani azonos konfigurációt SMT be/ki állapotban, többféle munkaterheléssel.

Összefoglalás

Az SMT hatékony eszköz a CPU-erőforrások jobb kihasználására: növelheti az áteresztőképességet és javíthatja a rendszer teljesítményét olyan helyzetekben, ahol sok párhuzamos, részben várakozó feladat fut. Cserébe meg kell küzdeni a megosztott erőforrásokból adódó kontencióval és esetleges biztonsági kockázatokkal. A gyakorlati döntéshez mérlegelni kell a várt munkaterhelést, a biztonsági követelményeket és elvégezni a megfelelő méréseket.

Példák a modern SMT CPU-kra

  1. Az Intel Pentium 4 volt az első olyan modern asztali processzor, amely a 2002-ben megjelent 3,06 GHz-es modellel kezdődően megvalósította az egyidejű többszálú futásmódot, és azóta számos processzorukban bevezetésre került. Az Intel a funkciót Hyper-Threading Technology (HTT) néven nevezi, és egy alapszintű, két szálon futó SMT-motort biztosít. Az Intel állítása szerint akár 30%-os sebességnövekedést is elérhet egy egyébként azonos, SMT nélküli Pentium 4-hez képest.
  2. A legújabb MIPS architektúra tervei tartalmaznak egy "MIPS MT" néven ismert SMT rendszert.
  3. A 2004 májusában bejelentett IBM POWER5 kétmagos DCM, négymagos vagy nyolcmagos MCM, mindegyik mag két szálas SMT motorral. Az IBM implementációja kifinomultabb, mint a korábbiaké, mivel a különböző szálakhoz különböző prioritást tud rendelni, finomabb a finomhangolás, és az SMT-motor dinamikusan ki- és bekapcsolható, hogy jobban lehessen végrehajtani azokat a munkaterheléseket, ahol egy SMT processzor nem növelné a teljesítményt. Ez az IBM második megvalósítása az általánosan elérhető hardveres többszálú feldolgozásnak.
  4. A 2008-ban megjelent Intel Atom az első olyan Intel termék, amely SMT-t (amelyet Hyper-threading néven forgalmaznak) tartalmaz, anélkül, hogy támogatná az utasítások átrendezését, a spekulatív végrehajtást vagy a regiszterek átnevezését.

Kapcsolódó oldalak

Kérdések és válaszok

K: Mi az a szimultán többszálú futás?


V: A szimultán többszálú futás (SMT) egy technika a hardveres többszálú futással rendelkező szuperskalár CPU-k általános hatékonyságának javítására. Több független végrehajtószálat tesz lehetővé a modern számítógép-architektúrák által biztosított erőforrások jobb kihasználása érdekében.

K: Hogyan hasonlítható össze az SMT a többfeladatos művelettel?


V: A többszálú futás koncepciója hasonló a többfeladatos futáshoz, de a modern szuperskalár processzorokban a végrehajtás szálszintjén valósul meg, míg a többfeladatos futás folyamatszinten.

K: Mi a chipen belüli párhuzamosság növelésének két módja?


V: A chipen belüli párhuzamosság növelésének két módja a szuperskalár technika és a chipszintű többszálúság (CMT).

K: Melyek a chipszintű többszálú futás különböző típusai?


V: A chipszintű többszálú futás különböző típusai közé tartozik az interleaved multithreading (IMT), a Fine-Grain multithreading, a Coarse Grain multithreadin és a Simultaneous multithreadin (SMT).

K: Hogyan lehet különbséget tenni az IMT/SMT/CMP között?


V: Az IMT/SMT/CMP közötti megkülönböztetés kulcstényezője annak vizsgálata, hogy a processzor hány utasítást képes kiadni egy ciklusban, és hogy hány szálból származnak az utasítások.

K: Milyen típusú processzort kell használni az SMT-hez?


V: Az SMT-hez szuperskalár processzort kell használni.

K: Milyen típusú processzort használ a chipszintű multiprocesszor?


V: A chipszintű multiprocesszálás olyan többmagos processzorokat használ, amelyek két vagy több szuperskalár processzort integrálnak egy chipbe, amelyek mindegyike önállóan hajt végre szálakat.


Keres
AlegsaOnline.com - 2020 / 2025 - License CC3