2024. április 24., szerda

Gyorskeresés

Útvonal

Cikkek » Számtech rovat

Ilyen lesz az AMD Bulldozere?

A következő oldalakon az AMD legújabb mikroarchitektúrájának jópár eddig ismert részletére világítunk rá.

[ ÚJ TESZT ]

Multi-threading mese

Multi-threading mese

A multi-threading (magyarul többszálúsítás) röviden valamilyen speciális hardveres megoldást takar, melyben a végrehajtószálak minden esetben osztoznak bizonyos erőforrásokon. Az hogy ezek a bizonyos egységek pontosan mit takarnak az mindig a koncepciótól függ. A többmagos megoldásokkal (multi-core) szemben, mely több önálló, teljes értékű magot kapcsol egy lapkába a számítási teljesítmény növelése érdekében, ezen eljárás fő célja a már rendelkezésre álló erőforrások minél hatékonyabb kihasználása.

Threads Inside

Az Intel egy az először IBM által 1968-ban lefektetett SMT (simultaneous multi-threading) elvén működő eljárás mellett tette le a voksát melyet végül Hyper-Threading (aka.: HT v. HTT) néven kereszteltek el. A Hyper-Threading egy már meglévő problémára jelentett megoldást. Nagyon röviden és tömören arról szól az egész, hogy egy fizikai magban a feldolgozás során keletkező üresjáratokat is kihasználják egy második szál (thread) hozzáadásával. Az első Hyper-Threading képes Netburst (~P4) alapú Xeon CPU-t 2002-ben dobta piacra az Intel. Nem véletlenül ez az architektúra kapta meg először a HT-t a Netburst ugyanis nagyon sokat vesztett azon, hogy hosszú futószalagja volt. Ezt fel lehetett tölteni egy másik szál utasításaival, mely a már rendelkezésre álló erőforrások hatékonyabb kihasználását tette lehetővé néhány, a plusz egy szálnak szükséges néhány extra dedikált egység hozzáadásával. Ezek csak minimális szilíciumtöbbletet (~5%) jelentettek egy magra levetítve. Ezzel ettől kezdve egy mag két teljesen egyenértékű végrehajtó szállal rendelkezhetett, amiket az operációs rendszerek egy-egy teljesen különálló processzorként/magként érzékelnek és kezelnek.

A Hyper-Threading hatékonysága alkalmazás és architektúra függő, de elmondható, hogy out-of-order felépítésnél optimális esetben durván 20% teljesítménynövekedést hozhat. Asztali és mobil környezetben csak Atomnál láthatunk sokkal nagyobb számokat a kezdetlegesebb in-order felépítésének köszönhetően. A technológia sajátosságai miatt ritkán előfordulhat, hogy a HT jelenléte semmilyen vagy szélsőségesebb esetben negatív hatással van a végrehajtási sebességre. Ezért néhány esetben maguk a szoftverek készítői tanácsolják a kikapcsolását. Az egyik ilyen például a Microsoft által fejlesztett Exchange Server, ahol csak ideiglenes méréseknél javasolják az engedélyezését. Egy másik végletesebb példa a High Performance Linpack, ahol a készítők mérése alapján 10% visszaesés tapasztalható Hyper-Threading mellett.

(A technológiáról jóval részletesebben emvy korábbi cikkében lehet olvasni. Akit kicsit jobban érdekel a téma annak mindenképpen ajánlott olvasmány.)

Az x86-os processzorok világában a Netburst leáldozásával a HT is álomra szenderült, és csak pár évvel később, a Nehalem architektúrával tért vissza a porondra. Napjainkban az i7 és bizonyos i5 valamint i3 típusjelzésű modellekben köszön vissza és a Sandy Bridge is támogatni fogja.

Smarter choice?

A túloldalon multi-threading ügyben irányadónak nevezhető álláspont csak 2005-ben látott hivatalosan napvilágot.

Ahogy a fenti ábráról is lejön az AMD nem igazán preferálta az SMT alapú megoldásokat. Ennek egyik hivatalosan ki nem mondott oka lehetett, hogy az akkoriban aktuális K8/Hammer architektúra merőben eltért az Intel Netburst-jétől. Ez azt jelenti, hogy ha több végrehajtó egység tudna egy utasítást kezelni, akkor az utasítássorrend dönt arról, hogy melyikhez kerül; ez egy szálon is okoz némi problémát, viszont több szál esetében nagyon felerősödik ez a negatív tulajdonság. Ez a K7/K8/K10 belső utasításütemező részének túlzott leegyszerűsítéséből fakad, amin már szintén javít a Bulldozer (az Intel CPU-it ez sosem érintette). Másrészt a Hyper-Threading-ből profitált plusz teljesítményt, feltehetőleg a korábban említett okok miatt nem tartották elég konzisztensnek. A diáról az is könnyen leolvasható, hogy a gyártó figyelme inkább egy úgynevezett Cluster-based multi-threading (klaszter-alapú többszálúsítás) felé irányult, mely még akkor plusz 50% szilícium mellett 80% teljesítmény növekedést ígért.

No de mi is az a Cluster-based multi-threading? A koncepció félig-meddig a Sun által tervezett SPARC architektúrás (nem x86!!) UltraSPARC T1 és T2 esetében bevezetett "Chip multi-threading" nevű rokonára hasonlít. Előbbi dióhéjban arról szól, hogy egy lapkán belül több mag (az említett T1 és T2 kapcsán max. 8) található, melyek osztoznak bizonyos erőforrásokon (cache, FPU, stb.), és emellett egy-mag(uk) képes(ek) SMT szerűen több szálat (4-8) is futtatni, melyeket a rendszer a már Hyper-Threading esetében felvázolt módon külön magoknak ismer fel. Nos ez utóbbit az AMD érkezőben lévő megoldása kapcsán egyelőre felejtsük el, tehát a Bulldozer egyetlen (integer) magja egy időben csak egyetlen szálat lesz képes futtatni.

A képen egy-egy végrehajtó szálhoz tartozó körülbelüli dedikált és megosztott területek aránya látható három különböző megoldás esetén. Felülről lefele: sima dual-core (pl.: Athlon X2), klaszter-alapú koncepció (Bulldozer), simultaneous multi-threading (Intel Hyper-Threading).

A cikk még nem ért véget, kérlek, lapozz!

Hirdetés

Copyright © 2000-2024 PROHARDVER Informatikai Kft.