hyper-threading-detailne
Hardware Článek Hyper-Threading detailně

Hyper-Threading detailně

Eagle

Eagle

22. 11. 2002 00:00 33

Seznam kapitol

1. Instrukce a thready 2. Výpočetní jednotky procesoru 3. Zpracování 4. Hyper-Threading 5. Současná inkarnace 6. Budoucnost a závěr

Původně měl název tohoto článku znít "Hyper nebo Hype?" jako reakce na uvedení nového procesoru Pentium 4 na frekvenci 3.06 GHz. Přestože všichni oslavují Hyper-Threading jako převratnou a skvělou technologii, já bych v tak pozitivním hodnocení byl o něco opatrnější. Při bližším pohledu na celou věc a pochopení základních principů zpracování instrukcí uvnitř procesoru je totiž zcela zřejmé, že i zde jsou určitá problémová místa. Chcete-li vědět, co je Hyper-Threading, které programy z něj mohou profitovat, ale i na co byste si měli dát pozor, neměl by vám tento článek uniknout.

Reklama

Instrukční sady

Protože pro pochopení principu technologie Hyper-Threading je nezbytně nutné vědět, jak zhruba pracuje moderní procesor, začnu právě touto problematikou.

Procesor je v zásadě hloupé zařízení, které neumí nic jiného než počítat, případně provádět jiné specifické úkoly jako hlásit svojí teplotu atp. Protože jeho reprezentace v inteligenčním kvocientu (IQ) by byla zhruba kolem nuly, je procesor tak hloupý a nemyslící, že pro něj musí existovat přesně definované příkazy. Těmto příkazům se říká sada instrukcí a v případě procesorů pro platformu PC (Intel) jich dnes existuje hned několik. Ta základní se nazývá x86 a jsou to instrukce pro výpočet celých čísel. První procesory podporovaly pouze tuto instrukční sadu.

Protože sada x86 nepodporuje práci s desetinnými čísly, bylo brzy nutné přidat další sadu instrukcí. Tou sadou byla x87. Hlavním důvodem jejího přidání nebylo ani tak to, že by nešlo počítat s desetinnými čísly - operace šly emulovat na celých číslech a tak to dokonce dělal i například programovací jazyk Pascal - nýbrž fakt, že specifické instrukce a pro ně optimalizované části procesoru (matematický koprocesor) dokázaly tyto operace provádět mnohem rychleji.

Hyper-Threading detailně
i Zdroj: PCTuning.cz


jeden z oficiálních obrázků k tématu Hyper-Threading

Pomineme-li rozšíření sady x86 o operace s 32 bit čísly (zavedeno s procesorem 386), bylo dalším posunem vpřed zavedení SIMD operací. Zkratka SIMD znamená Single Instruction - Multiple Data (jedna instrukce - více dat). Běžné instrukce x86 a x87 jsou schopny pomocí jedné instrukce spočítat pouze jednu informaci (data). Data se načtou do paměti zvané register (značené EAX, EBX...) a poté se provede operace, která tyto data změní. Do jednoho registru je možné nahrát pouze jednu informaci (jedno číslo), proto i provedená operace upravuje pouze toto jedno číslo. SIMD operace spočívají v tom, že do jednoho registru se nahraje víc než jedna informace (víc než jedny data). Na takto "poskládaném" registru se pak provede operace, která změní všechny data naráz. Příklad: do registru se nahrají dvě čísla - 20 a 37, poté se provede operace přičtení čísla 5. Výsledkem budou čísla 25 a 42. Kdyby se tato operace měla provádět přes instrukční sadu x86, budou potřeba dvě instrukce. A vykonání dvou instrukcí bude pochopitelně trvat déle.

Z tohoto popisu je zřejmé, že SIMD operace nelze využít vždy, ale pouze v případě, kdy jsou na velkých blocích dat prováděny stále stejné operace. To je v praxi především v multimédiích. Prvními SIMD instrukcemi implementovanými v Intel kompatibilních procesorech byla sada MMX. Následovaly sady 3Dnow! a SSE.

Krom všech těchto sad s novými procesory přibývaly i samostatné instrukce, například Pentium Pro jich přineslo asi deset navíc oproti Pentiu. Vždy se více méně jednalo o instrukce, které zrychlují stávající operace vyjádřené více instrukcemi (například CMPXCHG - Compare and Exchange (porovnej a vyměň) - ta byla přidána v procesoru 486).

Co je thread

Základní jednotkou zpracování instrukcí je thread (vlákno). Programy samy o sobě jsou sekvence instrukcí a k nim příslušných dat. Instrukce jsou vykonávány v tom pořadí, jak byly napsány. Každá instrukce provádí operace s daty, z čehož pak vychází výsledky (jiná data). Podle výsledků se pak obvykle určuje, co se bude počítat dál.

Jako thread si můžeme, při určitém zjednodušení, představit nějakou sekvenci instrukcí, nějaký výpočet, do nějž se nahrají vstupní data a který poskytne výstupní data, jako jeden program.

Předchozí
Další
Reklama
Reklama

Komentáře naleznete na konci poslední kapitoly.

Reklama
Reklama