Hyper-Threading pod mikroskopem

Počítačové procesory se potýkají s jedním problémem: Většinu své "pracovní doby" se nudí. V průměru využívaj


Počítačové procesory se potýkají s jedním problémem: Většinu své "pracovní
doby" se nudí. V průměru využívají procesory Pentium 4 a Xeon pouhých 35 %
svých kapacit. Společnost Intel proto přichází s technologií Hyper-Threading,
díky níž dokáže z jednoho procesoru udělat dva.
Současné procesory zpracovávají požadované příkazy ve značné míře sekvenčně,
tj. jeden po druhém. Především procesory Intel s 32bitovou architekturou
dosahují svých výpočetních výkonů díky jejich stále rostoucí pracovní frekvenci
a stále delším sekvencím zpracovávaných příkazů. Architektura Netburst použitá
v procesorech Pentium 4 se vyznačuje 20stupňovou pipeline, díky níž má být v
budoucnu dosaženo taktovací frekvence až 10 GHz. V případě procesorů Athlon
XP/MP se využívá 10stupňové pipeline pro zpracování celých čísel a 15stupňové
pipeline pro jednotku FPU.
První využití paralelizace lze již nalézt u superskalárních architektur. V
tomto případě je v rámci mikroprocesoru implementováno několik pipeline neboli
jednotek pro zpracování instrukcí. Například Pentium 4 je osazeno třemi
procesními jednotkami pro operace s celými čísly a dvěma jednotkami pro práci s
desetinnými čísly. Procesor Athlon XP/MP pracuje v obou případech se třemi
procesními jednotkami.
Pokud ani těmito technologiemi dosažený výpočetní výkon nestačí, lze nechat v
rámci systémů se dvěma (DP) nebo více procesory (MP) paralelně pracovat několik
procesorů. Toto řešení nachází uplatnění zejména v oblasti serverů a pracovních
stanic. Značnou nevýhodou víceprocesorových systémů je ovšem jejich vysoká
cena. Vzhledem k malým výrobním sériím jsou už samotné základní desky mnohem
dražší. Navíc je k tomu nutno připočíst náročnější, a tedy dražší napájení a
samozřejmě náklady na druhý procesor.

Neefektivní procesory
Značná část výkonových možností procesorů zůstává v běžném provozu systémů s
jedním nebo více procesory nevyužita. Společnost Intel udává, že v případě
práce s aplikací s typickým užíváním příkazů jsou možnosti procesorů Pentium 4
a Xeon s 32bitovou architekturou Netburst využívány na už zmíněných pouhých 35
%. Tento smutný výsledek je nutno přičíst na vrub slabinám von Neumannovy
architektury s řízeným tokem.
Je tu však ještě Amdahlova zákonitost, kvůli níž nelze s ohledem na závislost
na konkrétních datech paralelně zpracovávat část toků instrukcí. Toto tvrzení
platí především pro paralelizaci na úrovni příkazů (Instruction Level
Parallelism, ILP), tak jak je realizována mikroprocesory v rámci pipeline.
Mnohem snazší je paralelní zpracování souběžně probíhajících nebo zcela
vzájemně nezávislých procesů. Rozdělení procesů, tzv. threadování na různé
mikroprocesory, je operačními systémy podporováno již delší dobu (Thread Level
Parallelism TLP). Zapojením několika procesorů do práce však nedojde ke zvýšení
efektivity kteréhokoliv z nich.

Procesy a vlákna (threads)
Dříve, než přistoupíme k tématu "Hyper-Threading", definujme základní pojmy a
vysvětleme jejich obsah. Pojmem softwarový proces rozumíme instanci
odvíjejícího se programu. Jeden ze způsobů koordinace mezi jednotlivými procesy
běžícími v rámci systému spočívá v tom, že procesy samy v určitých okamžicích
řídí své aktuální stavy. Druhou možností je existence speciálního procesu s
vyšší prioritou, který ostatní procesy uvádí do předem definovaných stavů.
Procesy jsou spojeny s řadou stavových informací, které jsou uloženy v bloku
Process Control Block (PCB). To však ke koordinaci s ostatními paralelně
běžícími procesy v rámci aplikace nestačí. Možným řešením je zavedení
speciálního nebo řídicího procesu (Thread of Control). Vláknu (threadu) je
přiřazen pouze minimální objem informací, které jsou důležité z hlediska chodu
aplikace: Registry, stav procesoru a stack. Software, který pracuje s takovými
vlákny, nabízí často další úroveň abstrakce. Na této úrovni dochází k
seskupování několika vláken, kterým jsou poté společně přiřazovány chybějící
obsahy.
Operačním systémem, který přispěl k výše zmíněné abstrakci, je Mach Kernel
vyvinutý na Carnegie Mellon University. Mach Kernel dokáže sjednotit několik
vláken do jedné úlohy, která zabírá vlastní prostor v paměti. U tohoto
operačního systému odpovídá jedna úloha s jedním vláknem jednomu procesu v
Unixu. Vlákno je tedy sekvenční řídicí tok, který je vykonáván souběžně s
dalšími vlákny seskupenými ve stejné úloze a zabírající totéž místo v paměti
.
Vlákna (threads)
Technologie vláken nabízí dvě zásadní výhody:
Souběžně probíhající procesy lze elegantně transformovat do aplikačních
programů. Princip paralelního zpracování dat již implementuje řada moderních
programovacíh jazyků. Za všechny jmenujme jazyky Java nebo Microsoft Foundation
Classes (MFC) pro C++.
Závislost mezi příkazy v souběžně pracujících vláknech je většinou velmi
nepatrná, takže představuje vynikající platformu pro rozdílení příkazů na různé
procesní jednotky.
V moderních aplikacích lze pozorovat rozdělení výpočetních úkolů do vzájemně
nezávislých procesů a vláken protože:
Výkonné servery musejí vyřizovat vzájemně nezávislé požadavky četných klientů.
Na pracovních stanicích je spuštěno několik oken aplikace, jejichž práce je
rozčleněna do vícero procesů a threadů. Jako příklad lze uvést 3D grafické
programy.
Avšak i na běžných PC běží stále častěji najednou několik aplikací, které lze
rovněž paralelizovat.

Multi a Hyper-Threading
Procesory umožňující tzv. Multi-Threading disponují hardwarovou podporu
efektivního využívání vláken. Díky nim lze realizovat především rychlé
přepínání mezi vlákny příslušejícími ke stejné úloze. Z tohoto důvodu jsou
multithreadové procesory osazeny několika sadami registrů, které mohou být
přiděleny různým vláknům. O přepínání mezi nimi se stará řídicí jednotka
(Dispatch Unit). Na setkání Intel Developer Forum v srpnu 2001 (IDF Fall 2001)
byla technologie Hyper-Threading představena v podobě rozšíření
Multi-Threadingu na architektuře IA-32. Původní kódové označení této
technologie bylo Jackson, rozšíření však doznal i název Simultaneous
Multi-Threading (SMT). Vývojáři platformy Intel zabývající se technologií
Hyper-Threading vsázejí na koncept, který dokáže inicializovat přepnutí vlákna
z operačního systému a díky tomu nabízí největší možnou flexibilitu. K přepnutí
vlákna může navíc dojít až po uplynutí delšího časového intervalu.
Technologie Hyper-Threading si klade za cíl efektivní využívání procesoru. Toho
dosahuje souběžným zpracováváním různých pipeline jednoho procesoru s využitím
jednoho vlákna.
Programy a operační systémy využívající technologie několika vláken dokáží v
jednom fyzickém procesoru vidět několik logických procesorů.

Konstrukce systému
Společnost Intel zdůrazňuje především tu skutečnost, že zavádění technologie
Hyper-Threading s sebou přináší pouze nepatrné nároky na změnu konstrukce
systémů. Z pohledu konstrukce základní desky není zapotřebí žádných změn, neboť
pouzdro Hyper-Threading procesorů je ve srovnání s běžnými procesory naprosto
shodné.
K určitým změnám je třeba přistoupit, pouze pokud jde o správu systému. Tyto
změny se týkají obou tabulek pro správu procesorů (MP Table) a řadiče přerušení
(APIC Table). Tabulka MP obsahuje jeden záznam pro každý fyzický procesor a
tabulka APIC jeden záznam pro každý řadič přerušení, a tedy pro každý logický
procesor. Tyto záznamy jsou spravovány pomocí tzv. bootstrap procesoru (BSP),
který se stará o spouštění procesů. Dobře nastavit Load Balancing a zajistit
kvalitní správu licencí vztažených k ID je možné pouze za předpokladu, že jsou
správně a úplně přiřazeny ID procesorů k logickým a fyzickým procesorům. Kvůli
označování tabulky APIC navýšila společnost Intel již u své řady procesorů Xeon
délku ID ze 4 na 8 bitů, přičemž poslední bity jsou vyhrazeny pro logická ID.
Díky tomu lze do jednoho "obalu" vtěsnat dva logické procesory.

Výhledy do budoucnosti
Vývojáři firmy Intel se při implementaci technologie Hyper--Threading snažili,
aby nová technologie nezvětšila plochu procesoru. Výsledkem jejich práce je
zvětšení o méně než 5 %. Díky tomu je nová technologie cenově výhodnější než
systémy s několika procesory. O tom, zdali tato výhoda přetrvává i ve srovnání
s monolitickými multiprocesorovými čipy, lze však pochybovat.
Značnou plochu čipu moderních mikroprocesorů zabírá vyrovnávací paměť. V
případě monolitických multiprocesorových čipů se dvě procesorová jádra dělí o
společnou vyrovnávací paměť. Díky tomu se plocha takového procesoru zvýší o
přibližně 20 až 30 procent. Výsledkem jsou však dva mikroprocesory se dvěma
úplnými procesními jednotkami a společně využívanou vyrovnávací pamětí.









Komentáře
K tomuto článku není připojena žádná diskuze, nebo byla zakázána.