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

Hyper-Threading detailně | Kapitola 4

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

Hyper-Threading

Protože paralelismus v rámci jednoho threadu není schopen ani zdaleka využít všech výpočetních jednotek současně, vznikla otázka, jak jinak by šlo celkovou vytíženost zvednout. Inženýři přemýšleli a přemýšleli, až je napadlo, že by možná nebylo od věci nepoužít paralelismus pouze na úrovni threadu, ale i mezi thready. Tak vzniknul Hyper-Threading, technologie schopná v jednom procesoru zpracovávat dva thready současně.

V praxi se tak mění pouze to, že dekodér teď dostává namísto jednoho threadu dva a produkuje z nich OPs. Některé OPs patří prvnímu threadu, jiné druhému. Protože využití výpočetních jednotek je v každém threadu trochu jiné, dostává teď výpočetní část instrukce, u nichž je pravděpodobnější, že dohromady budou využívat paralelismus více než by tomu bylo v rámci jednoho threadu. Jestliže dříve jeden thread využíval třeba jenom jednu ALU jednotku, může nyní druhý thread využít zbývajících výpočetních částí.

Hyper-Threading detailně
i Zdroj: PCTuning.cz

Jestliže tedy procesor zpracovává dva thready současně, znamená to, že má mnohem více úkolů najednou a že průměrné využití výpočetních jednotek roste. Na obrázku výše je to jasně vidět. V případě ne-multitasking operačního systému, kde se nejdříve dokončí první thread a až po něm následuje další, není využití jednotek nijak závratné. Ještě horší situace je v případě multitaskingového operačního systému (obrázek uprostřed). Zde se jednotlivé thready střídají. Využití jednotek je stále nízké (= stejné jako v prvním případě), ale střídání threadů s sebou přináší další režii v podobě obhospodařování více threadů operačním systémem. Na obrázku to sice není vidět, ale v praxi by vykonání dvou threadů v multitaskingovém operačním systému trvalo déle než když by se thready střídaly způsobem jako v prvním případě.

Na posledním obrázku je technologie Hyper-Threading. Spuštění dvou threadů současně znamená, že využití výpočetních jednotek roste, za stejný čas je teď procesor schopen vypočítat víc. Čas potřebný pro zpracování dvou threadů je kratší.

Možné nevýhody

Ačkoliv může technologie Hyper-Threading vypadat úžasně, má i své nevýhody. Tou hlavní nevýhodou je možnost poklesu výkonu. Proč? Jednoduchá odpověď - co se asi stane, když dvě vlákna požadují stejnou výpočetní jednotku?

Hyper-Threading detailně
i Zdroj: PCTuning.cz

Na tomto obrázku je to jasně vidět - vlákna jsou v konfliktu, hádají se, které z nich bude provedeno dřív. Nezbývá nic jiného, než že jedno musí být na chvíli pozastaveno. Toto pozastavení přitom přináší celkové snížení výkonu až o 20%. Tento problém pochopitelně nastává pouze v případě, kdy je snaha využít jednu specializovanou jednotku. V našem příkladu s Athlonem by se jednalo o využití jedné z dvojic specializovaných FPU subjednotek pro výpočty x87 instrukcí.

Ještě horší ale je, že Hyper-Threading má problémy se spouštěním některých aplikací. O tomto se málo povídá, ale faktem je, že na provozování technologie Hyper-Threading je nutné mít počítač s nainstalovaným systémem Windows XP se Service Pack 1. Všechny starší systémy včetně Windows XP bez Service Pack 1 mohou jevit známky problémů.

Také si všimněte, že všechny recenze Pentia 4 s Hyper-Threading byly právě na systémech s Windows XP SP1.

Důvod je celkem zřejmý - až teprve Windows XP jsou systém, který dokáže Hyper-Threading rozpoznat. A teprve Service Pack 1 dokáže ošetřit problémy se spouštěním starších aplikací. Čím přesně je problém způsobem, bohužel nevím, pravdou ale je, že i systémy s více procesory mají s některými aplikacemi problémy. Patrně dochází k nějakým neshodám při paralelním zpracování threadů, zde ještě posílené nutností thready v případě "bitky" o výpočetní jednotky pozastavovat.

Opravdu nemohu doporučit použití systémů jako Windows NT nebo Windows 2000, které jsou sice optimalizovány pro paralelní spouštění threadů (Windows 2000 je ve své variantě Datacenter dokonce vlajkový serverový systém Microsoftu současnosti), ale již nerozpoznají rozdíl mezi logickým a fyzickým procesorem. Pod těmito systémy tudíž selhává přidělování threadů mezi logické procesory a může docházet k výše zmíněným problémům.

Změny v hardware

Protože Pentium 4 bylo již od začátku navrhováno s Hyper-Threadingem, obsahuje také příslušné hardwarové úpravy nutné k zpracování více (konkrétně dvou) threadů současně.

Hyper-Threading detailně
i Zdroj: PCTuning.cz

Jedná se především o úpravy v oblasti sledování následující instrukce v threadu (další Instruction Pointer) a hlavně úpravy ve stack a registerech. Procesor totiž pro zpracování dvou threadů nutně musí zachovat integritu výpočtů, musí mít například dvě sady registrů, každému threadu je přidělena jedna. Z pohledu programátora se totiž vůbec nic nemění, vše vypadá, jako kdyby zde byly procesory dva. Již od úrovně dekódování je nutné přesně vědět, které OPs náleží ke kterému threadu, tj. samotné OPs v sobě patrně nesou příslušnou informaci k identifikaci té správné sady.

Z ostatních součástí se nic nemění, cache je v případě dvou logických procesorů sdílená, nedochází k jejímu dělení na dvě části. Jediná dělená část je Instruction TLB - ten má za normálních okolností 128 záznamů, při zapnutí Hyper-Threading pak dvakrát 64.

Předchozí
Další
Reklama
Reklama

Komentáře naleznete na konci poslední kapitoly.

Reklama
Reklama