HyperThreading

A Wikipédiából, a szabad enciklopédiából
(Hyper-Threading szócikkből átirányítva)
A Hyper-threading technológia sémája

A Hyper-threading (hivatalosan Hyper-Threading technológia, röviden HT vagy HTT) az Intel védett időosztásos szálkezelő megoldása, amelyet a számítások párhuzamosítására használnak.

Részletes leírás[szerkesztés]

A Hyper-threading a processzor bizonyos részeinek megduplázásával működik – azoknak a részeknek, amelyek a processzor állapotát tartalmazzák – ugyanakkor a fő számítási erőforrásokból egy marad. Így egy hyper-threadinggel ellátott processzor egy extra "logikai" processzort tartalmaz. Azok az operációs rendszerek, amelyek nincsenek felkészítve a hyper-threadingre, két különálló processzorként látják. Ez lehetővé teszi, hogy az operációs rendszer két szálat ütemezzen be futtatásra. A processzor átállhat a másik szál végrehajtására, ha az egyik szál végrehajtása valamilyen okból áll. Tipikus ilyen okok lehetnek a gyorsítótár-tévesztés, hibás előrejelzések vagy adatfüggőség.

Ez a technológia az operációs rendszer és a felhasználói programok számára transzparens. A felhasználásához az operációs rendszernek csak több processzort kell tudnia kezelni, mivel a logikai processzor fizikai processzornak látszik.

Lehetséges az operációs rendszer viselkedését optimalizálni hyper-threading processzorokra. Vegyünk például egy két processzorral működő rendszert, amelyben mindkettő processzor képes hyper-threading működésre, így összesen 4 processzornak látszanak az operációs rendszer felé. Amennyiben az operációs rendszer nincs hyper-threading működésre optimalizálva, egyenlőnek fogja venni mind a négy logikai processzort. Ebben az esetben, ha egy időpontban csak két szál áll futásra készen, lehetséges, hogy az operációs rendszer ugyanazon fizikai processzor két logikai processzorára ütemezi azokat. Így a második fizikai processzor kihasználatlan marad, míg az első nagyon leterhelt és rosszabb teljesítményt ad, mint megfelelő kiosztás esetén. Ez a probléma elkerülhető úgy, ha az operációs rendszer a logikai processzorokat eltérően kezeli a fizikai processzoroktól. Bizonyos értelemben ezek a változtatások a NUMA rendszerek támogatásához is szükségesek.

Története[szerkesztés]

A Delencor 1982-ben mutatott be többszálú működést a HEP-ben (Heterogeneous Element Processor – Heterogén Elemekből épülő Processzor). A HEP feldolgozósora nem tudta kezelni két különböző szál utasításait. Egyszerre csak egy szál egy utasítása állt feldolgozás alatt.

Az Intel 2002-ben építette be a hyper-threading rendszert az x86 architektúrához tartozó Xeon processzorba. Ugyanebben az évben került be a 3,06 GHz-es Northwood-alapú Pentium 4-be és mindvégig megmaradt a Pentium 4 HT, Pentium 4 Extreme Edition és Pentium Extreme Edition processzorokban. Az Intel előző processzor generációi nem tartalmaznak hyper-threadinget.

Teljesítménye[szerkesztés]

Hátrányai[szerkesztés]

Az első hyper-threading technológiát alkalmazó processzorok megjelenése idején a legtöbb operációs rendszer még nem volt felkészítve a hyper-threading technológia használatára ill. nem volt erre optimalizálva. Ilyenek voltak pl. a Windows 2000 és a 2.4 előtti Linuxok.[1]

Biztonság[szerkesztés]

2005 májusában Colin Percival bemutatta, hogy Pentium 4 processzoron egy rosszindulatú szál időzítéses támadást hajthat végre és ezáltal egy másik szál memóriahozzáférés-mintáit analizálhatja, amennyiben ugyanazt a gyorsítótárat használják. Ez például kriptográfiai információkhoz biztosíthat illetéktelen hozzáférést.[2] A lehetséges megoldás erre az, ha a processzor változtat a gyorsítótár kiürítésének stratégiáján, illetve ha az operációs rendszer nem enged ugyanazon a fizikai processzormagon különböző privilégiumú szálakat végrehajtani.[2]

Kapcsolódó szócikkek[szerkesztés]

Fordítás[szerkesztés]

Ez a szócikk részben vagy egészben a HyperThreading című angol Wikipédia-szócikk fordításán alapul. Az eredeti cikk szerkesztőit annak laptörténete sorolja fel. Ez a jelzés csupán a megfogalmazás eredetét és a szerzői jogokat jelzi, nem szolgál a cikkben szereplő információk forrásmegjelöléseként.

Jegyzetek[szerkesztés]