itthon / Vegyes / A hiperszálfűzési technológia támogatása. Hyper-Threading technológia az Inteltől. A termelékenységből sosem elég

A hiperszálfűzési technológia támogatása. Hyper-Threading technológia az Inteltől. A termelékenységből sosem elég

Azok a felhasználók, akik legalább egyszer konfigurálták a BIOS-t, valószínűleg már észrevették, hogy van egy sokak számára érthetetlen Intel Hyper Threading paraméter. Sokan nem tudják, mi ez a technológia és milyen célra használják. Próbáljuk kitalálni, mi az a Hyper Threading, és hogyan engedélyezheti ennek a támogatásnak a használatát. Azt is megpróbáljuk kitalálni, hogy milyen előnyökkel jár a számítógép számára. ezt a beállítást. Elvileg nincs itt semmi nehéz megérteni.

Intel Hyper Threading: mi ez?
Ha nem mész bele mélyen a számítógépes terminológia dzsungelébe, hanem egyszerű nyelvezeten fogalmazod meg, akkor ezt a technológiát célja, hogy növelje a CPU által egyidejűleg feldolgozott parancsok áramlását. A modern processzorchipek általában csak a rendelkezésre álló számítási képességek 70%-át használják ki. A többi úgymond tartalékban marad. Ami az adatfolyam feldolgozását illeti, a legtöbb esetben csak egy szálat használnak, annak ellenére, hogy a rendszer többmagos processzort használ.

A munka alapelvei
A központi processzor képességeinek növelése érdekében speciális Hyper Threading technológiát fejlesztettek ki. Ez a technológia megkönnyíti egy parancsfolyam kettéosztását. Lehetőség van egy második adatfolyam hozzáadására is egy meglévőhöz. Csak egy ilyen adatfolyam virtuális és nem működik fizikai szinten. Ez a megközelítés lehetővé teszi a processzor teljesítményének jelentős növelését. Ennek megfelelően az egész rendszer gyorsabban kezd működni. A CPU teljesítményének növekedése nagyon ingadozhat. Erről külön lesz szó. Maguk a Hyper Threading technológia fejlesztői azonban azt állítják, hogy az elmarad egy teljes értékű magtól. Bizonyos esetekben ennek a technológiának a használata teljes mértékben indokolt. Ha ismeri a Hyper Threading processzorok lényegét, akkor az eredmény nem fog sokáig várni.

Történeti hivatkozás
Merüljünk el egy kicsit ennek a fejlődésnek a történetében. A Hyper Threading támogatása először csak az Intel Pentium 4 processzorokban jelent meg, majd az Intel Core iX sorozatban (az X itt a processzorsorozatot jelenti) folytatódott a technológia megvalósítása. Meg kell jegyezni, hogy valamilyen oknál fogva hiányzik a Core 2 processzorchipek sorából. Igaz, akkor a termelékenység növekedése meglehetősen gyenge volt: valahol 15-20% körül volt. Ez azt jelezte, hogy a processzor nem rendelkezik a szükséges feldolgozási teljesítménnyel, és a megalkotott technológia gyakorlatilag megelőzte korát. Ma már szinte minden modern chipben elérhető a Hyper Threading technológia támogatása. A központi processzor teljesítményének növelése érdekében maga a folyamat csak a kristályfelület 5%-át használja fel, miközben teret hagy a parancsok és adatok feldolgozására.

Konfliktusok és teljesítmény kérdése
Mindez természetesen jó, de bizonyos esetekben az adatok feldolgozása során lassulhat a munka. Ez leginkább az úgynevezett elágazás-előrejelző modulnak és az állandó újratöltéskor elégtelen gyorsítótár-méretnek köszönhető. Ha a fő modulról beszélünk, akkor be ez az eset a helyzet úgy alakul, hogy bizonyos esetekben az első szál a másodiktól kérhet olyan adatokat, amelyek abban a pillanatban nem dolgoznak fel, vagy feldolgozási sorban állnak. Nem kevésbé gyakoriak azok a helyzetek is, amikor a központi processzormag nagyon komoly terhelést szenved, és a fő modul ennek ellenére továbbra is adatokat küld neki. Egyes programok és alkalmazások, például az erőforrás-igényes online játékok, komolyan lelassulhatnak, csak azért, mert nincs optimalizálva a Hyper Threading technológia használatához. Mi történik a játékokkal? A felhasználó számítógépes rendszere a maga részéről igyekszik optimalizálni az adatáramlást az alkalmazástól a szerverig. A probléma az, hogy a játék nem tudja, hogyan kell önállóan elosztani az adatfolyamokat, és mindent egy kupacba dob. Általánosságban elmondható, hogy egyszerűen nem erre tervezték. Néha a kétmagos processzorokban a teljesítménynövekedés lényegesen magasabb, mint a 4 magos processzorokban. Egyszerűen nincs feldolgozási teljesítményük.

Hogyan lehet engedélyezni a Hyper Threading-et a BIOS-ban?
Kicsit kitaláltuk már, hogy mi is az a Hyper Threading technológia, és megismerkedtünk fejlődésének történetével. Közelebb kerültünk a Hyper Threading technológia megértéséhez. Hogyan lehet aktiválni ezt a technológiát a processzorban való használatra? Itt minden nagyon egyszerűen történik. Használnia kell a BIOS felügyeleti alrendszerét. Az alrendszerbe a Del, F1, F2, F3, F8, F12, F2+Del stb. billentyűkkel lehet belépni. Ha Sony Vaio laptopot használ, akkor annak meghatározott bemenete van a dedikált ASSIST gomb használatakor. A BIOS-beállításokban, ha a használt processzor támogatja a Hyper Threading technológiát, egy speciális beállítási sornak kell lennie. A legtöbb esetben úgy néz ki, mint Hyper Threading Technology, és néha úgy néz ki, mint a Function. Az alrendszer fejlesztőjétől és a BIOS verziójától függően ennek a paraméternek a beállítása a főmenüben vagy a speciális beállításokban is megtalálható. A technológia engedélyezéséhez be kell lépnie a beállítások menübe, és be kell állítania az értéket Enabled értékre. Ezt követően el kell mentenie a változtatásokat, és újra kell indítania a rendszert.

Miért hasznos a Hyper Threading?
Befejezésül szeretnék beszélni a Hyper Threading technológia használatának előnyeiről. Minek ez az egész? Miért szükséges a processzor teljesítményének növelése az információfeldolgozás során? Azoknak a felhasználóknak, akik erőforrás-igényes alkalmazásokkal és programokkal dolgoznak, nem kell semmit magyarázniuk. Valószínűleg sokan tudják, hogy a grafikai, matematikai, tervező szoftvercsomagok sok rendszererőforrást igényelnek a munka során. Emiatt az egész rendszer annyira le van terhelve, hogy rettenetesen lassulni kezd. Ennek elkerülése érdekében ajánlott engedélyezni a Hyper Threading támogatást.

Sok Intel processzor tartalmaz modulokat Hiper támogatás- Threading technológia, amely a fejlesztők ötletével összhangban segíti a chip teljesítményének növelését és a PC egészének felgyorsítását. Milyen sajátosságai vannak ennek a megoldásnak egy amerikai vállalattól? Hogyan használhatod ki a Hyper-Threading előnyeit?

Technológiai alapismeretek

Vessünk egy pillantást a Hyper-Threading legfontosabb részleteire. Mi ez a technológia? Az Intel fejlesztette ki, és először 2001-ben mutatták be a nagyközönségnek. Létrehozásának célja a szerverek teljesítményének növelése volt. A Hyper-Threadingben megvalósított fő elv a processzorszámítások több szálra való elosztása. Sőt, ez akkor is lehetséges, ha csak egy mag van telepítve a megfelelő típusú mikroáramkörre (ha viszont 2 vagy több van belőlük, és a processzor szálai már el vannak osztva, a technológia sikeresen kiegészíti ezt a mechanizmust).

A fő PC chip több szálon belüli működésének biztosítása az építészeti állapotok másolatainak a számítások során történő létrehozásával történik. Ebben az esetben a chip ugyanazt az erőforráskészletet használja. Ha az alkalmazás használja a megfelelő képességet, akkor a gyakorlatilag jelentős műveletek sokkal gyorsabban hajthatók végre. Az is fontos, hogy a kérdéses technológiát a számítógép bemeneti/kimeneti rendszere – a BIOS – támogassa.

Hyper-Threading engedélyezése

Ha a PC-be telepített processzor támogatja a megfelelő szabványt, akkor általában automatikusan aktiválódik. Bizonyos esetekben azonban manuálisan kell végrehajtania a szükséges műveleteket a Hyper-Threading technológia működéséhez. Hogyan lehet engedélyezni? Nagyon egyszerű.

Be kell lépnie a fő BIOS interfészbe. Ehhez a számítógép indításának legelején meg kell nyomnia a DEL, néha - F2, F10, ritkábban - más billentyűket, de a kívánt mindig megjelenik a képernyőn közvetlenül azután megjelenő szövegsorok egyikében. a PC bekapcsolása. A BIOS felületén meg kell találni a Hyper-Threading elemet: az I / O rendszer ezt támogató verzióiban általában jól látható helyen található. Miután kiválasztotta a megfelelő opciót, nyomja meg az Enter billentyűt, és aktiválja, és jelölje meg Engedélyezve. Ha ez a mód már be van állítva, akkor a Hyper-Threading technológia működik. Használhatja minden előnyét. Miután aktiválta a technológiát a beállításokban, el kell mentenie az összes bejegyzést a BIOS-ban a Save and Exit Setup kiválasztásával. Ezt követően a számítógép újraindul abban a módban, amikor a processzor Hyper-Theading támogatással dolgozik. Hasonlóképpen, a Hyper-Threading le van tiltva. Ehhez válasszon egy másik lehetőséget a megfelelő elemben - Letiltva, és mentse a beállításokat.

Miután megvizsgálta a Hyper-Threading engedélyezését és deaktiválását, nézzük meg közelebbről a funkcióit.

CPU-k Hyper Threading támogatással

Az első processzor, amelyen egyes források szerint a cég koncepcióját megvalósították, az Intel Xeon MP, más néven Foster MP. Ez a chip számos építészeti alkatrészében hasonlít a Pentium 4-hez, amely később szintén megvalósította a kérdéses technológiát. Ezt követően a többszálú számítási szolgáltatást a Prestonia maggal rendelkező Xeon szerverprocesszorokon valósították meg.

Ha a Hyper-Threading jelenlegi elterjedtségéről beszélünk - mely "profik" támogatják? Az ilyen típusú chipek közül a legnépszerűbbek azok, amelyek a Core és a Xeon családba tartoznak. Arról is van információ, hogy hasonló algoritmusokat valósítanak meg olyan processzorokban, mint az Itanium és az Atom.

Miután megvizsgáltuk a Hyper-Threading alapinformációit, a processzorok támogatását, nézzük meg a technológia fejlődésének történetének legfigyelemreméltóbb tényeit.

Fejlődéstörténet

Ahogy fentebb megjegyeztük, az Intel 2001-ben mutatta be a nyilvánosságnak a kérdéses koncepciót. A technológia létrehozásának első lépéseit azonban a 90-es évek elején tették meg. Az amerikai cég mérnökei észrevették, hogy számos művelet végrehajtása során a PC-processzorok erőforrásai nincsenek teljesen kihasználva.

Az Intel szakértői számításai szerint a felhasználó PC-n végzett munkája során a mikroáramkört jelentős időközönként – szinte a legtöbb esetben – körülbelül 30%-kal nem használják aktívan. A szakértők véleménye erről a számról nagyon eltérő - valaki egyértelműen alábecsültnek tartja, mások teljesen egyetértenek az amerikai fejlesztők tézisével.

Abban azonban az informatikusok többsége egyetértett, hogy ha nem is a processzor kapacitásának 70%-a tétlen, de ennek igen jelentős része.

A fejlesztők fő feladata

Az Intel úgy döntött, hogy javítja ezt az állapotot egy minőségileg új megközelítéssel a fő PC-chipek hatékonyságának biztosítására. Olyan technológia létrehozását javasolták, amely hozzájárulna a processzorok képességeinek aktívabb kihasználásához. 1996-ban az Intel szakemberei megkezdték a gyakorlati fejlesztést.

Egy amerikai vállalat koncepciója szerint a processzor az egyik programból származó adatokat feldolgozva a tétlen erőforrásokat egy másik alkalmazással (vagy a jelenlegi, de más szerkezetű és további erőforrások felhasználását igénylő komponenssel) való munkára irányíthatja. A megfelelő algoritmus hatékony interakciót feltételez más PC-hardver-összetevőkkel – RAM-mal, lapkakészlettel és programokkal.

Az Intelnek sikerült megoldania a problémát. Kezdetben a technológiát Willamette-nek hívták. 1999-ben bekerült néhány processzor architektúrájába, és megkezdődött a tesztelése. Hamarosan a technológia megkapta modern nevét - Hyper-Threading. Nehéz megmondani, mi volt ez pontosan – egyszerű márkaváltás vagy alapvető módosítások a platformon. A technológia nyilvános megjelenéséről és az Intel processzorok különböző modelljeiben való megvalósításáról már további tényeket ismerünk. A ma elterjedt fejlesztési nevek közé tartozik a Hyper-Threading Technology.

A technológiával való kompatibilitás szempontjai

Mennyire van megvalósítva az operációs rendszerekben a Hyper-Threading technológia támogatása? Megjegyezhető, hogy ha a modernről beszélünk Windows verziók, akkor a felhasználónak nem okoz gondot az Intel Hyper-Threading technológia előnyeinek teljes körű kihasználása. Természetesen az is nagyon fontos, hogy az I/O rendszer támogassa a technológiát – erről fentebb volt szó.

Szoftver és hardver tényezők

Ami az operációs rendszer régebbi verzióit – Windows 98, NT és a viszonylag elavult XP – illeti, a Hyper-Threadinggel való kompatibilitás szükséges feltétele az ACPI támogatás. Ha nincs implementálva az operációs rendszerben, akkor a számítógép nem ismeri fel az összes számítási folyamatot, amelyet a megfelelő modulok alkotnak. Vegye figyelembe, hogy a Windows XP egésze biztosítja a szóban forgó technológia előnyeinek kihasználását. Szintén nagyon kívánatos, hogy a többszálú algoritmusokat a számítógép tulajdonosa által használt alkalmazásokban implementálják.

Néha szüksége lehet PC-re – ha Hyper-Threading támogatással rendelkező processzorokat telepít rá az eredetileg rajta lévő és a technológiával nem kompatibilis processzorok helyett. Az operációs rendszerekhez hasonlóan azonban nem lesz különösebb probléma, ha a felhasználó modern PC-vel vagy legalább a megfelelő hardverelemekkel rendelkezik az első Hyper Threading processzorokhoz, amint fentebb megjegyeztük, a Core vonalban implementálva és adaptálva. ehhez az alaplapok chipkészletei teljes mértékben támogatják a chip megfelelő funkcióit.

Gyorsulási kritériumok

Ha a számítógép hardver és szoftver komponensek szintjén nem kompatibilis a Hyper-Threading-el, akkor ez a technológia elméletileg akár le is lassíthatja a munkáját. Ez a helyzet néhány informatikai szakembert arra késztetett, hogy kétségbe vonják az Intel megoldásának kilátásait. Úgy döntöttek, hogy nem technológiai ugrásról, hanem marketing lépésről van szó, amely a Hyper Threading koncepciójának hátterében áll, amely architektúrája miatt nem képes jelentősen meggyorsítani a PC-t. Ám a kritikusok kétségeit az Intel mérnökei gyorsan eloszlatták.

Tehát a technológia sikeres használatának alapvető feltételei:

Az I / O rendszer Hyper-Threading támogatása;

Az alaplap kompatibilitása a megfelelő típusú processzorral;

Egy technológia támogatása az operációs rendszer és a rajta futó konkrét alkalmazás által.

Ha az első két ponton nem lehet különösebb probléma, akkor a programok Hyper-Threadinggel való kompatibilitását illetően még mindig előfordulhatnak átfedések. De meg kell jegyezni, hogy ha egy alkalmazás támogatja például a kétmagos processzorokkal való munkát, akkor szinte garantáltan kompatibilis lesz az Intel technológiájával.

Legalábbis vannak olyan tanulmányok, amelyek megerősítik a kétmagos mikroáramkörökhöz igazított programok teljesítményének 15-18%-os növekedését, ha Intel Hyper Threading modulok működnek a processzorban. Már tudjuk, hogyan lehet ezeket letiltani (ha a felhasználónak kétségei vannak a technológia használatának célszerűségével kapcsolatban). De megjelenésüknek valószínűleg nagyon kevés kézzelfogható oka van.

A Hyper-Threading gyakorlati hasznossága

A szóban forgó technológia tett kézzelfogható hatást az Intelre? Ebben a kérdésben különböző vélemények vannak. De sokan megjegyzik, hogy a Hyper-Threading technológia olyan népszerűvé vált, hogy ez a megoldás számos szerverrendszer-gyártó számára nélkülözhetetlenné vált, és a hétköznapi PC-felhasználók is pozitívan fogadták.

Hardveres adatfeldolgozás

A technológia fő előnye, hogy hardveres formátumban valósítják meg. Ez azt jelenti, hogy a számítások nagy részét a processzoron belül speciális modulokon végzik el, nem pedig a mikroáramkör fő magjának szintjére továbbított szoftveralgoritmusok formájában - ami a mikroáramkör általános teljesítményének csökkenését jelentené. PC. Általánosságban elmondható, hogy informatikai szakértők szerint az Intel mérnökeinek sikerült megoldaniuk azt a problémát, amelyet a technológia fejlesztésének kezdetén azonosítottak – a processzor hatékonyabb működését. Valójában, ahogy a tesztek kimutatták, számos, a felhasználó számára gyakorlatilag jelentős feladat megoldása során a Hyper-Threading használata lehetővé tette a munka jelentős felgyorsítását.

Megjegyezhető, hogy 4 közül azok a mikroáramkörök, amelyek a szóban forgó technológiát támogató modulokkal voltak felszerelve, sokkal hatékonyabban működtek, mint az első módosítások. Ez nagyrészt abban nyilvánult meg, hogy a számítógép képes valódi többfeladatos üzemmódban működni – amikor többféle típusú Windows alkalmazások, és nagyon nem kívánatos, hogy az egyik megnövekedett rendszererőforrás-felhasználása miatt a többiek sebessége csökkenjen.

Különböző feladatok egyidejű megoldása

Így a Hyper-Threading-et támogató processzorok jobban alkalmazkodnak, mint a vele nem kompatibilis mikroáramkörök, hogy egyidejűleg indítsanak el például egy böngészőt, játszanak zenét és dolgozzanak dokumentumokkal. Mindezeket az előnyöket természetesen csak akkor érzi a felhasználó a gyakorlatban, ha a PC szoftver- és hardverelemei kellően kompatibilisek ezzel az üzemmóddal.

Hasonló fejlemények

A Hyper-Threading nem az egyetlen technológia, amelyet a PC teljesítményének javítására terveztek többszálú számítástechnikával. Vannak analógjai.

Például az IBM által kiadott POWER5 processzorok is támogatják a többszálú feldolgozást. Vagyis mindegyik (összesen 2 megfelelő elem van rá telepítve) 2 szálon belül tud feladatokat végrehajtani. Így a mikroáramkör 4 számítási folyamot dolgoz fel egyszerre.

Az AMD remek munkát végzett a többszálú koncepciók területén is. Ismeretes tehát, hogy a Bulldozer architektúra a Hyper-Threading-hez hasonló algoritmusokat használ. Az AMD megoldásának sajátossága, hogy mindegyik szál külön processzorblokkot dolgoz fel. Amikor a második szint közös marad. Hasonló koncepciókat valósít meg az AMD által kifejlesztett Bobcat architektúra, amely laptopokhoz és kisméretű PC-khez igazodik.

Természetesen az AMD, az IBM és az Intel koncepciójának közvetlen analógjai nagyon feltételesen tekinthetők. Valamint általában a processzorok architektúrájának tervezési megközelítései. De az egyes technológiákban megvalósított elvek meglehetősen hasonlónak tekinthetők, és a fejlesztők által kitűzött célok a mikroáramkörök működésének hatékonyságának javítása tekintetében lényegében nagyon közel állnak egymáshoz, ha nem azonosak.

Ezek a legfontosabb tények az Intel legérdekesebb technológiájával kapcsolatban. Mi ez, hogyan lehet engedélyezni a Hyper-Threading-et, vagy fordítva, deaktiválni, azt meghatároztuk. A lényeg valószínűleg az előnyeinek gyakorlati kihasználásában rejlik, amit úgy lehet kihasználni, ha meggyőződünk arról, hogy a PC hardver- és szoftverkomponenseiben támogatja a technológiát.

Hyper Threading (hiperszálfűzés, "hiperszálfűzés", hyper threading - rus.) - a cég által kifejlesztett technológia Intel, amely lehetővé teszi a processzormag számára, hogy egynél több adatfolyamot (általában kettőt) hajtson végre. Mivel kiderült, hogy egy hagyományos processzor a legtöbb feladatban nem használ többet, mint 70% Az összes számítási teljesítményből úgy döntöttek, hogy olyan technológiát alkalmaznak, amely lehetővé teszi, hogy bizonyos számítási egységek tétlensége esetén egy másik szállal töltsék fel őket munkával. Ez lehetővé teszi a kernel teljesítményének növelését 10-80% feladattól függően.

Tekintse meg, hogyan működik a Hyper-Threading .

Tegyük fel, hogy a processzor egyszerű számításokat végez, és ugyanakkor egy utasításblokk tétlen és SIMD kiterjesztések.

A címző modul ezt észleli és oda küldi az adatokat további számításhoz. Ha az adatok specifikusak, akkor ezek a blokkok lassabban hajtják végre őket, de az adatok nem lesznek tétlen. Vagy előfeldolgozzák őket a további gyors feldolgozás érdekében a megfelelő blokk által. Ez további teljesítménynövekedést biztosít.

Természetesen a virtuális szál nem éri el a teljes értékű magot, de ez lehetővé teszi, hogy szinte elérje 100% a számítási teljesítmény hatékonysága, szinte a teljes processzor megterhelése munkával, nem hagyva üresjáratban. Mindezzel együtt HT technológia megvalósítására csak kb. 5% további kockatér, és a teljesítmény néha hozzáadható 50% . Ez a további terület további regiszterblokkokat és elágazás-előrejelzést tartalmaz, amelyek folyam-számítják, hogy egy adott pillanatban hol használható a számítási teljesítmény, és oda küldenek adatokat egy további címblokkból.

A technológia először a processzorokon jelent meg Pentium 4, de nem volt nagy teljesítménynövekedés, hiszen maga a processzor nem rendelkezett nagy számítási teljesítménnyel. A növekedés a legjobb volt 15-20% , és sok feladatban a processzor sokkal lassabban működött, mint anélkül HT.

Lassíts processzor a technológia miatt Hyper Threading, akkor történik, ha:

  • Nincs elég gyorsítótár minden adott és ciklikusan újraindul, lelassítva a processzort.
  • Az adatokat az elágazás-előrejelző nem tudja megfelelően feldolgozni. Főleg annak köszönhető az optimalizálás hiánya adott szoftverhez vagy az operációs rendszer támogatásához.
  • Az is előfordulhat, hogy adatfüggőségek, amikor például az első szál azonnali adatokat kér a másodiktól, de azok még nincsenek készen, vagy egy másik szálra várnak. Vagy a ciklikus adatoknak bizonyos blokkokra van szükségük a gyors feldolgozáshoz, és ezek más adatokkal vannak betöltve. Az adatfüggőségnek számos változata lehet.
  • Ha a mag már erősen le van terhelve, és a „nem elég okos” elágazás-előrejelző modul továbbra is olyan adatokat küld, amelyek lelassítják a processzort (releváns Pentium 4).

Után Pentium 4, Intel től kezdték el használni a technológiát Core i7 első generáció, kihagyva a sorozatot 2 .

A processzorok számítási teljesítménye elegendővé vált a hyperthreading teljes körű megvalósításához, különösebb károk nélkül, még a nem optimalizált alkalmazások esetében is. Majd később, Hyper Threading megjelent a középosztálybeli, sőt a költségvetési és hordozható processzorokon is. Minden sorozatban használt mag i (i3; i5; i7) és tovább mobil processzorok atom(egyáltalán nem). Érdekes módon a kétmagos processzorok HT, nagyobb teljesítménynövekedést érnek el, mint a négymagosok Hyper Threading, állva 75% teljes értékű négy nukleáris.

Hol hasznos a HyperThreading?

Hasznos lesz professzionális, grafikai, elemző, matematikai és tudományos programokkal, videó- ​​és hangszerkesztőkkel, archiválókkal ( Photoshop, Corel Draw, Maya, 3D's Max, WinRar, Sony Vegas &stb). Minden program, amely sok számítást használ, HT biztosan hasznos lesz. Szerencsére be 90% esetekben az ilyen programok jól optimalizáltak a használatára.

hyperthreading nélkülözhetetlen a szerverrendszerekhez. Valójában erre a résre részben fejlesztették ki. Köszönet HT, nagyszámú feladat esetén jelentősen növelheti a processzor megtérülését. Minden szál a felére tehermentesül, ami jótékony hatással van az adatcímzésre és az elágazás előrejelzésére.

Sok számítógépes játékok , negatívan kapcsolódnak a jelenléthez Hyper Threading, ami csökkenti a másodpercenkénti képkockák számát. Ennek oka az optimalizálás hiánya Hyper Threading a játék oldaláról. Egyetlen optimalizálás az operációs rendszer részéről nem mindig elég, különösen, ha szokatlan, heterogén és összetett adatokkal dolgozik.

Azokon az alaplapokon, amelyek támogatják HT, mindig letilthatja a hyperthreading technológiát.

2015. január 20-án 19:43-kor

További információ a Hyper-Threadingről

  • informatikai rendszerek tesztelése,
  • Programozás

Volt idő, amikor a memória teljesítményét a Hyper-threading technológia összefüggésében kellett értékelni. Arra a következtetésre jutottunk, hogy hatása nem mindig pozitív. Amikor megjelent a szabadidő mennyisége, felmerült a vágy a kutatás folytatására és a folyamatban lévő folyamatok gépi ciklusok és bitek pontosságának figyelembevételére. szoftver saját fejlesztés.

Kutatott platform

A kísérletek tárgya - ASUS laptop N750JK Intel Core i7-4700HQ processzorral. Az órajel 2,4 GHz, amit az Intel Turbo Boost mód 3,4 GHz-ig növel. 16 gigabájt telepítve véletlen hozzáférésű memória DDR3-1600 (PC3-12800) kétcsatornás módban működik. Operációs rendszer - Microsoft Windows 8.1 64 bites.

1. ábra A vizsgált platform konfigurációja.

A vizsgált platform processzora 4 magot tartalmaz, amely a Hyper-Threading technológia engedélyezése esetén 8 szálhoz vagy logikai processzorokhoz nyújt hardveres támogatást. A platform firmware ezt az információt a MADT (Multiple APIC Description Table) ACPI táblán keresztül továbbítja az operációs rendszernek. Mivel a platform csak egy RAM-vezérlőt tartalmaz, nincs SRAT (System Resource Affinity Table), amely deklarálja a processzormagok és a memóriavezérlők közelségét. Nyilván a kérdéses laptop nem NUMA platform, hanem operációs rendszer, az egységesítés szempontjából egy tartományú NUMA rendszernek tekinti, amit a NUMA Nodes = 1 sor jelzi. Kísérleteink szempontjából alapvető tény, hogy az első szintű adatgyorsítótár mérete 32 kilobájt mind a négy mag. Két ugyanazon a magon osztozó logikai processzor osztozik az L1 és L2 gyorsítótáron.

Vizsgált működés

Megvizsgáljuk az adatblokk olvasási sebességének a méretétől való függését. Ehhez a legproduktívabb módszert választjuk, nevezetesen a 256 bites operandusok beolvasását a VMOVAPD AVX utasítás segítségével. A diagramokon az X-tengely a blokkméretet, az Y-tengely pedig az olvasási sebességet mutatja. Az L1 gyorsítótár méretének megfelelő X pont közelében inflexiós pontra számítunk, mivel a teljesítménynek csökkennie kell, miután a feldolgozás alatt álló blokk kikerül a gyorsítótárból. Tesztünkben többszálú feldolgozás esetén a 16 kezdeményezett szál mindegyike külön címtartománnyal működik. A Hyper-Threading technológia alkalmazáson belüli vezérléséhez minden szál a SetThreadAffinityMask API függvényt használja, amely beállít egy maszkot, amelyben minden logikai processzor egy bitnek felel meg. A bit egyetlen értéke lehetővé teszi a megadott processzor használatát a megadott szálon, a nulla érték tiltja. A vizsgált platform 8 logikai processzoránál a 11111111b maszk lehetővé teszi az összes processzor használatát (Hyper-Threading engedélyezve), a 01010101b maszk pedig egy logikai processzor használatát teszi lehetővé minden magban (Hyper-Threading letiltva).

A grafikonokon a következő rövidítéseket használjuk:

MBPS (megabájt per másodperc)blokk olvasási sebessége megabájt per másodpercben;

CPI (Óraszám utasításonként)ciklusok száma utasításonként;

TSC (Time Stamp Counter)processzor ciklusszámláló.

Megjegyzés: Előfordulhat, hogy a TSC-regiszter órajele nem egyezik a processzor órajelével, ha Turbo Boost módban fut. Ezt figyelembe kell venni az eredmények értelmezésekor.

A grafikonok jobb oldalán az egyes programszálakban végrehajtott célművelet ciklusának törzsét alkotó utasítások hexadecimális kiíratása, vagy a kód első 128 bájtja látható.

1. számú tapasztalat. Egy szál



2. ábra Olvasás egy szálban

A maximális sebesség 213563 megabájt másodpercenként. Az inflexiós pont körülbelül 32 kilobájt blokkméretnél fordul elő.

2. számú tapasztalat. 16 szál 4 processzoron, a Hyper-Threading letiltva



3. ábra Tizenhat szálban olvasni. A felhasznált logikai processzorok száma négy

A hiperszál le van tiltva. A maximális sebesség 797598 megabájt másodpercenként. Az inflexiós pont körülbelül 32 kilobájt blokkméretnél fordul elő. Ahogy az várható volt, az egyszálas olvasáshoz képest a sebesség körülbelül 4-szeresére nőtt, a működő magok számát tekintve.

3. számú tapasztalat. 16 szál 8 processzoron, a Hyper-Threading engedélyezve



4. ábra Tizenhat szálban olvasni. A felhasznált logikai processzorok száma nyolc

Hyper-threading engedélyezve. A 800 722 megabájt másodpercenkénti maximális sebesség a Hyper-Threading beépítésének eredményeként szinte nem nőtt. A nagy mínusz az, hogy az inflexiós pont körülbelül 16 kilobájt blokkméretnél fordul elő. A Hyper-Threading engedélyezése némileg növelte a maximális sebességet, de most a sebességcsökkenés a blokkméret felénél - körülbelül 16 kilobájtnál - következik be, így az átlagsebesség jelentősen csökkent. Ez nem meglepő, minden magnak saját L1 gyorsítótára van, míg az ugyanabban a magban lévő logikai processzorok megosztják azt.

következtetéseket

A vizsgált működés elég jól skálázható többmagos processzoron. Ennek oka az, hogy mindegyik mag tartalmaz egy saját gyorsítótárat az első és a második szinten, a célblokk mérete összemérhető a cache memória méretével, és mindegyik szál saját címtartományával működik. Akadémiai célokra ilyen feltételeket teremtettünk egy szintetikus tesztben, felismerve, hogy a valódi alkalmazások általában távol állnak az ideális optimalizálástól. De a Hyper-Threading bevonása még ilyen körülmények között is negatív hatással volt, a csúcssebesség enyhe növekedésével jelentős veszteség van a blokkok feldolgozási sebességében, amelyek mérete 16 és 32 között van. kilobájt.

Azt írtuk, hogy az egyprocesszoros Xeon rendszerek használatának nincs értelme, hiszen magasabb áron teljesítményük megegyezik az azonos frekvenciájú Pentium 4-ével. Most, alaposabb vizsgálat után, valószínűleg ezen a kijelentésen kell némileg módosítani. A Prestonia maggal ellátott Intel Xeonban megvalósított Hyper-Threading technológia valóban működik, és egészen kézzelfogható hatást ad. Bár használata során is sok kérdés merül fel...

Adj teljesítményt

"Gyorsabban, még gyorsabban...". Évek óta folyik a versenyfutás a teljesítményért, és néha még azt is nehéz megmondani, hogy melyik számítógép-alkatrész gyorsul gyorsabban. Ennek érdekében egyre több új utat találnak ki, és minél tovább, annál több képzett munkaerőt és jó minőségű agyat fektetnek ebbe a lavinaszerű folyamatba.

A teljesítmény folyamatos növelésére természetesen szükség van. Legalább nyereséges üzletről van szó, és mindig van egy jó módja annak, hogy a felhasználókat arra ösztönözzék, hogy frissítsék a tegnapi „szuperteljesítményű CPU-t” a holnap „még szuperebb…”-re. Például egyidejű beszédfelismerés és egyidejű fordítás egy másik nyelvre – nem ez mindenki álma? Vagy szokatlanul valósághű, szinte „mozi” minőségű játékok (teljesen elnyeli a figyelmet, és néha komoly pszichés változásokhoz vezet) – nem ez a vágya sok fiatalnak és idősnek egyaránt?

De a marketing szempontokat ebben az esetben hagyjuk ki, a technikai szempontokra koncentrálva. Ráadásul nem minden olyan borús: vannak sürgős feladatok (szerveralkalmazások, tudományos számítások, modellezés stb.), ahol minden több. nagy teljesítményű, különösen a központi feldolgozó egységeknél, valóban szükséges.

Tehát mi a módja annak, hogy növeljék a teljesítményüket?

Óranövelés. Tovább "hígítható" technológiai folyamatés növelje a frekvenciát. De, mint tudják, ez nem könnyű, és tele van mindenféle mellékhatással, például a hőelvezetéssel kapcsolatos problémákkal.

A processzor erőforrások növelése- például a gyorsítótár térfogatának növelése, új blokkok (végrehajtási egységek) hozzáadása. Mindez magában foglalja a tranzisztorok számának növekedését, a processzor összetettségét, a kristály területének növekedését, és ennek következtében a költségeket.

Ezenkívül az előző két módszer általában nem ad lineáris termelékenységnövekedést. Ez jól ismert a Pentium 4 példájában: az elágazás előrejelzésében és a megszakításokban előforduló hibák egy hosszú folyamat alaphelyzetbe állítását okozzák, ami nagyban befolyásolja az általános teljesítményt.

több feldolgozás. Több CPU telepítése és a munka elosztása közöttük gyakran meglehetősen hatékony. De ez a megközelítés nem túl olcsó - minden további processzor megnöveli a rendszer költségeit, és a kettős alaplap sokkal drágább, mint egy hagyományos (nem beszélve a négy vagy több CPU-t támogató alaplapokról). Ezen túlmenően nem minden alkalmazás profitál eléggé a többfeldolgozásból, hogy indokolja a költségeket.

A "tiszta" többfeldolgozáson kívül számos "köztes" lehetőség van, amelyek lehetővé teszik az alkalmazások végrehajtásának felgyorsítását:

Chip Multiprocessing (CMP)- két processzormag fizikailag ugyanazon a chipen található, közös vagy különálló gyorsítótár használatával. Természetesen a kristály mérete meglehetősen nagynak bizonyul, és ez nem befolyásolja a költségeket. Vegye figyelembe, hogy ezek közül a "kettős" CPU-k közül több többprocesszoros rendszerben is működhet.

Time Slice Multithreading. A processzor meghatározott időközönként vált a programszálak között. A rezsi néha meglehetősen tetemes lehet, különösen, ha egy folyamat várat magára.

Bekapcsolási esemény többszálú. Feladatváltás hosszú szünetek esetén, például "gyorsítótár kihagyások" (cache misses), amelyek nagy száma a szerveralkalmazásokra jellemző. Ebben az esetben egy folyamat, amely arra vár, hogy adatokat töltsön be a viszonylag lassú memóriából a gyorsítótárba, felfüggesztésre kerül, felszabadítva a CPU erőforrásait más folyamatok számára. Azonban a Switch-on-Event Multithreading, mint például a Time-Slice Multithreading, nem mindig éri el a processzorerőforrások optimális felhasználását, különösen az elágazás előrejelzési hibái, az utasítás-függőségek stb.

Egyidejű többszálú feldolgozás. Ebben az esetben a programszálak ugyanazon a processzoron "egyszerre" futnak le, azaz nem váltanak közöttük. A CPU erőforrásait dinamikusan osztják el, a "ha nem használod, add át másnak" elv szerint. Ez a megközelítés az alapja Intel technológiák Hyper-Threading, amelyre most rátérünk.

Hogyan működik a Hyper-Threading

Mint tudják, a jelenlegi „számítástechnikai paradigma” magában foglalja többszálú számítástechnika. Ez nem csak a szerverekre vonatkozik, ahol kezdetben létezik ilyen koncepció, hanem a munkaállomásokra és az asztali rendszerekre is. A szálak tartozhatnak ugyanahhoz vagy különböző alkalmazásokhoz, de szinte mindig egynél több aktív szál van (ennek megtekintéséhez elég megnyitni a Feladatkezelőt Windows 2000/XP-ben és bekapcsolni a szálak számának megjelenítését). Ugyanakkor egy hagyományos processzor egyszerre csak az egyik szálat tudja végrehajtani, és kénytelen folyamatosan váltani közöttük.

A Hyper-Threading technológiát először az Intel Xeon MP (Foster MP) processzorában valósították meg, amelyen "befutott". Emlékezzünk vissza, hogy a 2002. évi IDF tavaszán hivatalosan bemutatott Xeon MP Pentium 4 Willamette magot használ, 256 KB L2 gyorsítótárat és 512 KB/1 MB L3 gyorsítótárat tartalmaz, és támogatja a 4 processzoros konfigurációkat. A Hyper-Threading támogatás a munkaállomásokhoz készült Intel Xeon processzorban is megtalálható (Prestonia mag, 512 KB L2 cache), amely valamivel korábban jelent meg a piacon, mint a Xeon MP. Olvasóink már ismerik az Intel Xeon kétprocesszoros konfigurációit, ezért a Hyper-Threading lehetőségeit e CPU-k felhasználásával – elméleti és gyakorlati szempontból is – példának tekintjük. Bárhogy is legyen, az "egyszerű" Xeon hétköznapibb és emészthetőbb, mint a 4 processzoros rendszerekben lévő Xeon MP...

A Hyper-Threading működési elve azon alapul, hogy egy adott időpontban a processzor erőforrásainak csak egy része kerül felhasználásra a programkód végrehajtása során. A fel nem használt erőforrások is feltölthetők munkával - például egy további alkalmazás (vagy ugyanazon alkalmazás másik szála) használható párhuzamos végrehajtásra. Egy fizikai Intel Xeon processzorban két logikai processzor (LP - Logical Processor) van kialakítva, amelyek megosztják a CPU számítási erőforrásait. Az operációs rendszer és az alkalmazások pontosan két CPU-t "látnak", és el tudják osztani közöttük a munkát, mint egy teljes értékű kétprocesszoros rendszer esetében.

A Hyper-Threading megvalósításának egyik célja, hogy csak egy aktív szál futhasson ugyanolyan sebességgel, mint egy normál CPU-n. Ehhez a processzornak két fő működési módja van: Single-Task (ST) és Multi-Task (MT). ST módban csak egy logikai processzor aktív, és osztatlanul használja a rendelkezésre álló erőforrásokat (ST0 és ST1 mód); a másik LP-t a HALT parancs leállítja. Amikor megjelenik egy második programszál, az üresjárati logikai processzor aktiválódik (megszakításon keresztül), és a fizikai CPU MT módba kerül. A nem használt LP-k HALT paranccsal történő leállítása az operációs rendszer felelőssége, amely végső soron egy szál ugyanolyan gyors végrehajtásáért felelős, mint a Hyper-Threading nélküli esetben.

Mind a két LP esetében az úgynevezett Architecture State (AS) tárolásra kerül, amely magában foglalja a különféle típusú regiszterek állapotát - általános célú, vezérlés, APIC és szolgáltatás. Minden LP saját APIC-vel (megszakításvezérlővel) és egy regiszterkészlettel rendelkezik a helyes működés érdekében, amelyekkel bevezetik a Register Alias ​​Table (RAT) koncepcióját, amely nyomon követi a megfelelést nyolc IA-32 általános célú regiszter és 128 között. fizikai CPU regiszterek (egy RAT minden LP-hez).

Két szál futtatásakor két megfelelő Következő utasítás-mutató készlet támogatott. Az utasítások nagy része a Trace Cache-ből (TC) származik, ahol dekódolt formában tárolódnak, és a két aktív LP felváltva éri el a TC-t, minden órán. Ugyanakkor, ha csak egy LP aktív, exkluzív hozzáférést kap a TC-hez anélkül, hogy az órákon interleavelne. Hasonló módon történik a Microcode ROM-hoz való hozzáférés. Az ITLB blokkok (Instruction Translation Look-aide Buffer), amelyek az utasítás-gyorsítótárban lévő szükséges utasítások hiányában aktiválódnak, megkettőződnek, és mindegyik saját szálhoz ad utasításokat. Az IA-32 Instruction Decode utasításdekódoló blokk megosztott, és abban az esetben, ha mindkét folyamhoz utasításdekódolás szükséges, egyenként (ismét minden ciklusban) szolgálja ki azokat. Az Uop Queue és Allocator blokkok ketté vannak osztva, és az elemek fele minden LP-hez le van foglalva. Az 5 darabból álló ütemezők a dekódolt parancsok (Uops) sorait dolgozzák fel annak ellenére, hogy az LP0 / LP1-hez tartoznak, és a szükséges végrehajtási egységek által végrehajtandó közvetlen parancsok - az első végrehajtási készenlététől és a második elérhetőségétől függően. Az összes szintű gyorsítótár (L1/L2 Xeon, valamint L3 Xeon MP esetén) teljesen meg van osztva két LP között, azonban az adatok integritásának biztosítása érdekében a DTLB (Data Translation Look-aide Buffer) bejegyzései leírókkal vannak ellátva a logikai processzorazonosítók formája.

Így mindkét logikai CPU utasításai egyidejűleg végrehajthatók egy fizikai processzor erőforrásain, amelyek négy osztályba sorolhatók:

  • sokszorosított (Duplikált);
  • teljesen megosztott (Fully Shared);
  • elemek leíróival (Entry Tagged);
  • dinamikusan osztva (Particionálva) az ST0/ST1 vagy MT működési módjától függően.

A legtöbb, többprocesszoros rendszeren felgyorsult alkalmazás azonban változtatás nélkül felgyorsítható olyan CPU-n is, amelynél engedélyezve van a Hyper-Threading. De vannak problémák is: például ha az egyik folyamat várakozó hurokban van, akkor lefoglalhatja a fizikai CPU összes erőforrását, ami megakadályozza a második LP működését. Így a Hyper-Threading használatakor a teljesítmény néha csökkenhet (akár 20%). Ennek megelőzése érdekében az Intel a PAUSE utasítás használatát javasolja az üres várakozási hurkok helyett (amelyet a Pentium 4-től kezdődő IA-32-ben vezettek be). Komoly munka folyik a kód fordítás közbeni automatikus és félautomata optimalizálásán is – például az Intel OpenMP C ++ / Fortran Compilers () sorozat fordítói jelentős előrelépést értek el e tekintetben.

A Hyper-Threading első implementációjának másik célja az Intel szerint az volt, hogy minimalizálja a tranzisztorok számának, a vágófelületnek és az energiafogyasztásnak a növekedését, miközben érezhetően növeli a teljesítményt. Ennek a kötelezettségvállalásnak az első része már teljesült: a Hyper-Threading támogatás hozzáadásával a Xeon/Xeon MP-hez kevesebb, mint 5%-kal nőtt a szerszámfelület és az energiafogyasztás. Hogy mi történt a második résszel (előadással), azt még ellenőriznünk kell.

Gyakorlati rész

Nyilvánvaló okok miatt nem teszteltük a 4 processzoros szerverrendszereket a Xeon MP-en, ahol a Hyper-Threading engedélyezve van. Először is elég munkaigényes. Másodszor pedig, ha ilyen bravúr mellett döntünk, akkor még most, kevesebb mint egy hónappal a hivatalos bejelentés után teljességgel irreális beszerezni ezt a drága felszerelést. Ezért úgy döntöttünk, hogy ugyanarra a rendszerre korlátozzuk magunkat két Intel Xeon 2,2 GHz-essel, amelyen ezen processzorok első tesztjeit elvégezték (lásd a cikk elején található hivatkozást). A rendszer azon alapult alaplap Supermicro P4DC6+ ( Intel lapkakészlet i860), 512 MB RDRAM-ot tartalmazott, egy videokártyát GeForce3 chipen (64 MB DDR, Detonator 21.85 illesztőprogram), HDD nyugati digitális WD300BB és 6X DVD-ROM; A Windows 2000 Professional SP2 operációs rendszert használták.

Először is néhány általános benyomás. Ha egy Xeont telepít Prestonia kernellel indításkor rendszer BIOSüzenetet jelenít meg két CPU jelenlétéről; ha két processzor van telepítve, a felhasználó négy CPU-ról szóló üzenetet lát. Az operációs rendszer általában "mindkét processzort" felismer, de csak akkor, ha két feltétel teljesül.

Először a CMOS Setupban, az utóbbiban BIOS verziók A Supermicro P4DCxx kártyák bevezették az Enable Hyper-Threading elemet, amely nélkül az operációs rendszer csak a fizikai processzoro(ka)t ismeri fel. Másodszor, az ACPI arra szolgál, hogy közölje az operációs rendszerrel, hogy vannak további logikai processzorok. Ezért a Hyper-Threading engedélyezéséhez engedélyezni kell az ACPI opciót a CMOS telepítőjében, és magához az operációs rendszerhez is telepíteni kell a HAL-t (Hardware Abstraction Layer) ACPI támogatással. Szerencsére a Windows 2000-ben a HAL szabványos PC-ről (vagy MPS Uni-/Multiprocessor PC-ről) ACPI Uni-/Multiprocessor PC-re egyszerűen cserélhető – az eszközkezelőben a "számítógép-illesztőprogram" megváltoztatásával. Ugyanakkor Windows XP esetén az ACPI HAL-ra való átállás egyetlen legális módja a rendszer újratelepítése a meglévő telepítésre.

Most azonban minden előkészület megtörtént, és a Windows 2000 Pro már szilárdan hisz abban, hogy kétprocesszoros rendszeren működik (bár valójában csak egy processzor van telepítve). Most szokás szerint itt az ideje, hogy eldöntsük a tesztelés céljait. Tehát szeretnénk:

  • Mérje fel a Hyper-Threading hatását a különböző osztályokba tartozó alkalmazások teljesítményére.
  • Hasonlítsa össze ezt a hatást egy második processzor telepítésének hatásával.
  • Ellenőrizze, hogy az aktív logikai processzor mennyire „megfelelően” kap erőforrásokat, amikor a második LP tétlen.

A teljesítmény értékeléséhez az olvasók számára már ismert alkalmazáskészletet vettük át, amelyet a munkaállomás-rendszerek tesztelésére használtunk. Kezdjük talán a végéről, és ellenőrizzük a logikai CPU-k "egyenlőségét". Minden rendkívül egyszerű: először lefuttatjuk a teszteket egy processzoron, ahol a Hyper-Threading le van tiltva, majd megismételjük a folyamatot bekapcsolt Hyper-Threading mellett, és a két logikai CPU közül csak az egyiket használjuk (Feladatkezelővel). Mivel ebben az esetben csak a relatív értékekre vagyunk kíváncsiak, ezért minden teszt eredménye a "nagyobb, annál jobb" formára redukálódik és normalizálódik (egy processzoros, Hyper-Threading nélküli rendszer mutatóit egységnek vesszük).

Nos, mint látható, az Intel ígéretei itt teljesülnek: egyetlen aktív szál mellett a két nagylemez teljesítménye pontosan megegyezik egy Hyper-Threading nélküli fizikai CPU teljesítményével. Az üresjárati LP (mind az LP0, mind az LP1) valóban felfüggesztésre kerül, és a megosztott erőforrások, amennyire a kapott eredményekből megítélhető, teljesen átkerülnek az aktív LP használatába.

Ezért levonjuk az első következtetést: két logikai processzor tulajdonképpen egyenlő jogokkal rendelkezik, és a Hyper-Threading engedélyezése "nem zavarja" egy szál működését (ami önmagában nem rossz). Most nézzük meg, hogy ez a beillesztés „segít-e”, és ha igen, hol és hogyan?

renderelés. A 3D Studio MAX 4.26, Lightwave 7b és A|W Maya 4.0.1 3D-modellező csomagok négy tesztjének eredményeit hasonlóságuk miatt egyetlen diagramban egyesítik.

Mind a négy esetben (a Lightwave esetében - két különböző jelenet) a CPU terhelése egy processzor jelenlétében letiltott Hyper-Threading mellett szinte folyamatosan 100% -on marad. Ha viszont a Hyper-Threading engedélyezve van, a jelenetek számítása felgyorsul (ennek eredményeként még viccelődtünk is a 100% feletti CPU-használattal). Három tesztben 14--18%-os teljesítménynövekedést láthatunk a Hyper-Threadingtől - egyrészt a második CPU-hoz képest nem sok, másrészt viszont az "ingyenes" effektust tekintve egész jó. ennek a hatásnak. A Lightwave két teszt közül az egyikben a teljesítménynövekedés majdnem nulla (nyilván ennek a furcsaságokkal teli alkalmazásnak a sajátossága befolyásolja). De negatív eredmény sehol nincs, a másik három esetben pedig az észrevehető növekedés biztató. És mindez annak ellenére, hogy a párhuzamos renderelési folyamatok hasonló munkát végeznek, és az biztos, hogy nem tudják a fizikai CPU erőforrásait egyszerre a legjobban kihasználni.

Photoshop és MP3 kódolás. A GOGO-no-coda 2.39c kodek azon kevesek egyike, amely támogatja az SMP-t, és 34%-os teljesítménynövekedést mutat a két processzorhoz képest. Ugyanakkor a Hyper-Threading hatása ebben az esetben nulla (a 3%-os eltérést nem tekintjük szignifikánsnak). De a Photoshop 6.0.1 tesztben (parancsok és szűrők nagy készletéből álló szkript) lassulást tapasztalhat, ha a Hyper-Threading engedélyezve van, bár a második fizikai CPU ebben az esetben 12%-kal növeli a teljesítményt. Valójában ez az első eset, amikor a Hyper-Threading teljesítménycsökkenést okoz...

Professzionális OpenGL. Régóta ismert, hogy a SPEC ViewPerf és sok más OpenGL alkalmazás gyakran lelassul az SMP rendszereken.

OpenGL és kettős processzor: miért nem barátok

A cikkekben sokszor felhívtuk az olvasók figyelmét arra, hogy a kétprocesszoros platformok ritkán mutatnak számottevő előnyt az egyprocesszorosakkal szemben a professzionális OpenGL tesztek elvégzése során. Ezenkívül vannak olyan esetek, amikor egy második processzor telepítése éppen ellenkezőleg, rontja a rendszer teljesítményét dinamikus háromdimenziós jelenetek megjelenítése során.

Természetesen nem csak mi vettük észre ezt a furcsaságot. Egyes tesztelők egyszerűen némán kitértek e tény elől – például azzal, hogy a SPEC ViewPerf összehasonlítási eredményeket csak kétprocesszoros konfigurációkra vonatkozóan közölték, elkerülve ezzel a magyarázatot, hogy „miért lassabb a kétprocesszoros rendszer?”. Mások mindenféle fantáziadús feltételezést fogalmaztak meg a gyorsítótár koherenciájáról, a karbantartás szükségességéről, az ebből eredő többletköltségről stb. Azon pedig valamiért senki sem lepődött meg, hogy például a processzorok türelmetlenek voltak a koherencia precíz monitorozásában az ablakos OpenGL-megjelenítésben (a maga "számítási" lényegében nem sokban különbözik minden más számítási feladattól).

Valójában a magyarázat véleményünk szerint sokkal egyszerűbb. Mint tudják, egy alkalmazás gyorsabban futhat két processzoron, mint egy, ha:

  • kettőnél több vagy több egyidejűleg futó programszál (szál);
  • ezek a szálak nem zavarják egymás végrehajtását – például nem versengenek egy megosztott erőforrásért, például egy külső meghajtóért vagy hálózati interfészért.

Most pedig vessünk egy egyszerűsített pillantást arra, hogyan néz ki az OpenGL-megjelenítés, amelyet két szál hajt végre. Ha egy alkalmazás két processzort "látva" két OpenGL-renderelő szálat hoz létre, akkor mindegyikhez az OpenGL szabályai szerint saját gl-kontextus jön létre. Ennek megfelelően minden szál a saját gl-környezetében jelenik meg. De a probléma az, hogy abban az ablakban, amelyben a kép megjelenik, mindig csak egy gl-kontextus lehet aktuális. Ennek megfelelően a szálak ebben az esetben egyszerűen "egyenként" kiadják a generált képet az ablakba, felváltva aktuálissá téve a környezetüket. Mondanom sem kell, hogy ez a "kontextusbeillesztés" nagyon költséges lehet a rezsi szempontjából?

Példaként grafikonokat adunk két CPU használatáról számos olyan alkalmazásban, amelyek OpenGL jeleneteket jelenítenek meg. Minden mérést a következő konfigurációjú platformon végeztünk:

  • egy vagy két Intel Xeon 2,2 GHz (Hyper-Threading letiltva);
  • 512 MB RDRAM;
  • Supermicro P4DC6+ alaplap;
  • ASUS V8200 Deluxe videokártya (NVidia GeForce3, 64 MB DDR SDRAM, Detonator 21.85 illesztőprogramok);
  • Windows 2000 Professional SP2;
  • videó mód 1280x1024x32 bpp, 85 Hz, Vsync letiltva.

A kék és a piros a CPU 0, illetve a CPU 1 terhelési grafikonja. A középső vonal a végső CPU-használati grafikon. A három grafikon a 3D Studio MAX 4.26 és a SPEC ViewPerf teszt (AWadvs-04) két jelenetének felel meg.


CPU használat: Animation 3D Studio MAX 4.26 - Anibal (manipulátorokkal).max


CPU használat: Animation 3D Studio MAX 4.26 - Rabbit.max


CPU-használat: SPEC ViewPerf 6.1.2 - AWadvs-04

Ugyanez a minta megismétlődik számos más OpenGL-t használó alkalmazásban. Két processzor egyáltalán nem zavarja a munkát, és a teljes CPU-használat 50-60% körül mozog. Ugyanakkor az egyprocesszoros rendszereknél a CPU-használatot ezekben az esetekben magabiztosan 100%-os szinten tartják.

Így nem meglepő, hogy sok OpenGL-alkalmazás nem lesz sokkal gyorsabb kettős rendszereken. Nos, hogy néha még lassítanak is, annak véleményünk szerint teljesen logikus magyarázata van.

Kijelenthetjük, hogy két logikai CPU-val még jelentősebb a teljesítménycsökkenés, ami teljesen érthető: két logikai processzor ugyanúgy zavarja egymást, mint két fizikai. De általános teljesítményük ebben az esetben természetesen alacsonyabbnak bizonyul, így ha a Hyper-Threading engedélyezve van, akkor még jobban csökken, mint amikor két fizikai CPU fut. Az eredmény megjósolható, a következtetés pedig egyszerű: a Hyper-Threading, mint az "igazi" SMP, néha ellenjavallt az OpenGL-hez.

CAD alkalmazások. Az előző következtetést két CAD-teszt – a SPECapc a SolidEdge V10 és a SPECapc a SolidWorks – eredményei is megerősítik. Ezeknek a Hyper-Threading teszteknek a grafikus teljesítménye hasonló (bár az eredmény valamivel magasabb a SolidEdge V10 SMP rendszere esetén). De a processzort terhelő CPU_Score tesztek eredményei elgondolkodtatnak: 5-10%-os növekedés SMP-től és 14-19%-os lassulás Hyper-Threading-től.

De a nap végén az Intel őszintén elismeri a Hyper-Threading teljesítményromlásának lehetőségét bizonyos esetekben – például üres várakozási hurkok használatakor. Csak feltételezhetjük, hogy ez az oka (a SolidEdge és a SolidWorks kód részletes vizsgálata túlmutat e cikk keretein). Hiszen mindenki ismeri a CAD-alkalmazás-fejlesztők konzervativizmusát, akik a bizonyított megbízhatóságot részesítik előnyben, és nem sietnek a kód átírásával, figyelembe véve a programozás új trendjeit.

Összegzés, vagy "Figyelem, a helyes kérdés"

A Hyper-Threading működik, ehhez nem fér kétség. A technológia persze nem univerzális: vannak olyan alkalmazások, amelyeknél a Hyper-Threading "rosszul" válik, e technológia elterjedése esetén pedig kívánatos lenne ezeket módosítani. De nem ugyanaz történt az MMX-el és az SSE-vel, mint az SSE2-vel?

Ez azonban felveti a kérdést ennek a technológiának a mi valóságunkban való alkalmazhatóságáról. Azonnal elvetjük az egyprocesszoros rendszer lehetőségét Xeon Hyper-Threadinggel (vagy csak átmenetinek tekintjük, a második processzor vásárlása előtt): még a 30%-os teljesítménynövekedés sem indokolja az árat. módon - akkor jobb, ha vesz egy rendes Pentium 4-et. A CPU-k száma kettő vagy több.

Most képzeljük el, hogy veszünk egy kétprocesszoros Xeon rendszert (mondjuk Windows 2000/XP Professional rendszerrel). Két CPU van telepítve, a Hyper-Threading engedélyezve van, a BIOS akár négy logikai processzort is talál, most szálljunk le... Állj. De hány processzort fog látni az operációs rendszerünk? Így van, kettő. Csak kettő, mert egyszerűen nem nagyobb számra tervezték. Ez két fizikai processzor lesz, vagyis minden pontosan ugyanúgy fog működni, mint a letiltott Hyper-Threading esetén - nem lassabban (két "további" logikai CPU egyszerűen leáll), de nem gyorsabban (további tesztekkel ellenőrizve, az eredményeket nem idézik nyilvánvalóságuk). Hmmm, nem túl szórakoztató...

Ami marad? Nos, tényleg ne telepítsük az Advanced Servert vagy a .NET Servert a munkaállomásunkra? Nem, a rendszer telepíti, felismeri mind a négy logikai processzort és működni fog. Ez csak a szerver operációs rendszere nézi a munkaállomást, finoman szólva kicsit furcsán (nem beszélve az anyagi szempontokról). Az egyetlen ésszerű eset az, ha a kétprocesszoros Xeon rendszerünk szerverként fog működni (legalábbis néhány fejlesztő nem habozott kiadni szervereket munkaállomási Xeon processzorokon). De a megfelelő operációs rendszerekkel rendelkező kettős munkaállomások esetében a Hyper-Threading alkalmazhatósága továbbra is kérdéses. Az Intel most aktívan támogatja az operációs rendszer-licencelést a nem logikai, hanem fizikai CPU-k száma alapján. A megbeszélések még folynak, és általában sok múlik azon, hogy látunk-e négy processzort támogató munkaállomás operációs rendszert.

Nos, a szervereknél minden egészen egyszerűen kijön. Például egy kétfoglalatos Xeon rendszerre telepített Windows 2000 Advanced Server, amelyen engedélyezve van a Hyper-Threading, négy logikai processzort lát, és zökkenőmentesen fut rajta. Annak értékeléséhez, hogy a Hyper-Threading mit hoz a szerverrendszerek számára, bemutatjuk az Intel Microprocessor Software Labs eredményeit kétprocesszoros rendszerekre Xeon MP-n és számos Microsoft szerveralkalmazáson.

Egy kétprocesszoros szerver 20-30%-os teljesítménynövekedése "ingyen" több mint csábító (főleg egy "igazi" 4 processzoros rendszer megvásárlásához képest.

Kiderült tehát, hogy a Hyper-Threading gyakorlati alkalmazhatósága jelenleg csak szervereken lehetséges. A munkaállomásokkal kapcsolatos probléma az operációs rendszer licencelésével kapcsolatos megoldástól függ. Bár a Hyper-Threading még egy alkalmazása egészen valóságos – ha az asztali processzorok támogatást kapnak ehhez a technológiához. Például (képzeljük) mi a baj egy Hyper-Threading támogatású Pentium 4 rendszerrel, amelyre SMP támogatással Windows 2000/XP Professional van telepítve? .. Ebben azonban nincs semmi hihetetlen: a lelkes Intel fejlesztők azt ígérik, hogy az elterjedt a Hyper-Threading bevezetése – a szerverektől az asztali és mobil rendszerekig.