Hyper-threading – Wikipedia, wolna encyklopedia

Schemat funkcjonowania Intel Hyper-Threading Technology

Hyper-threading (nazwa oficjalna Hyper-Threading Technology, nazwy skrócone HT Technology, HTT lub HT) – implementacja wielowątkowości współbieżnej (ang. Simultaneous Multi-Threading, SMT) opracowana przez firmę Intel i stosowana w procesorach Atom, Pentium, Core i3, Core i5, Core i7, Itanium, Pentium 4 oraz Xeon.

Hyper-threading służy zwiększeniu wydajności obliczeń prowadzonych równolegle (czyli wykonywaniu wielu zadań jednocześnie) przez mikroprocesory. Dla każdego fizycznego rdzenia procesora system operacyjny przypisuje dwa procesory wirtualne (ang. virtual processors), a następnie dzieli obciążenie obliczeniami pomiędzy nie, tylko jeżeli jest to możliwe. Hyper-threading wymaga nie tylko wsparcia ze strony systemu operacyjnego, ale również oprogramowania zoptymalizowanego specjalnie do obsługi tej technologii. Intel zaleca wyłączanie jej, jeżeli używany jest system operacyjny bez takiej optymalizacji, gdyż może ona w rezultacie obniżyć ogólną wydajność procesora.

Szczegóły

[edytuj | edytuj kod]
Procesor Intel Pentium 4, który wspiera Hyper-Threading Technology[1]

Hyper-threading działa poprzez duplikowanie pewnych fragmentów procesora – tych, które przechowują stany procesów (architectural state) – ale nie jest to duplikowanie głównych zasobów wykonawczych. To pozwala procesorowi wykorzystującemu Hyper-threading być widocznym dla systemu operacyjnego jako dwa „logiczne” procesory, pozwalając mu na zaplanowanie wykonania dwóch wątków lub procesów jednocześnie. Jeżeli zasoby wykonawcze nie byłyby wykorzystywane przez bieżące zadanie w procesorze bez technologii Hyper-threading, a w szczególności gdy procesor jest w stanie zatrzymania, procesor z technologią Hyper-threading potrafi użyć wolnych w tym momencie zasobów wykonawczych w celu wykonania innych zaplanowanych przez system operacyjny zadań. Procesor może być w stanie zatrzymania ze względu na brak danych w pamięci cache (cache miss), nietrafione przewidywanie rozgałęzień (branch misprediction), lub zależności danych (data dependency).

Technologia ta jest przezroczysta dla systemu operacyjnego i uruchomionych programów. Aby skorzystać z zalet, jakie oferuje Hyper-threading, wymagane jest jedynie wsparcie obsługi maszyn wieloprocesorowych z SMP przez system operacyjny, ponieważ „logiczne” procesory są widziane przez system operacyjny jako dwa odrębne procesory fizyczne.

Możliwa jest optymalizacja zachowania systemu operacyjnego na systemach wieloprocesorowych z Hyper-threading. Na przykład można wyobrazić sobie system SMP, który wyposażony jest w dwa fizyczne procesory, oba z technologią Hyper-threading (czyli cztery „logiczne” procesory). Jeżeli proces zarządzający systemu operacyjnego (process scheduler) nie jest „świadomy” pracy na systemie z wieloma procesorami opartymi na Hyper-threading, wówczas będzie traktował wszystkie cztery procesory w taki sam sposób. Jeżeli tylko dwa procesy są gotowe do uruchomienia, wówczas system operacyjny może przekazać je do wykonania dwóm procesorom logicznym należącym do tego samego procesora fizycznego. W takiej sytuacji procesor ten będzie bardzo obciążony, podczas gdy drugi fizyczny procesor będzie w stanie bezczynności (idle), co doprowadzi do spadku wydajności, która byłaby wyższa przy lepszym zarządzaniu procesami. Problemu tego można uniknąć poprzez usprawnienie procesu zarządzającego systemu operacyjnego, tak aby traktował procesory logiczne inaczej niż traktowane są procesory fizyczne. Chodzi tu o minimalne zmiany w procesie zarządzającym systemu operacyjnego, konieczne dla systemów NUMA.

Historia

[edytuj | edytuj kod]

Technologia Hyper-Threading została zaimplementowana po raz pierwszy w procesorach Xeon Foster MP w marcu 2002. W tym samym roku pojawiła się w procesorach Pentium 4 z jądrem Northwood taktowanych zegarem 3,06 GHz, a później we wszystkich Pentium 4 HT, Pentium 4 Extreme Edition i Pentium Extreme Edition. Pierwsze generacje procesorów firmy Intel zrealizowanych na mikroarchitekturze Core nie posiadają wsparcia dla Hyper-threading, ponieważ Core pochodzi z mikroarchitektury P6, używanej później także w rodzinie procesorów Pentium od czasów Pentium Pro poprzez Pentium III oraz Celeron (opartych na rdzeniach Covington, Mendocino, Coppermine i Tualatin), także modeli Pentium II Xeon i Pentium III Xeon.

W listopadzie 2008 firma Intel rozpoczęła sprzedaż procesorów Nehalem (Core i7), w których technologia Hyper-threading powróciła. Pierwsza generacja układów Nehalem zawierała 4 rdzenie, co efektywnie było skalowalne do 8 wątków. Wkrótce w ofercie pojawiły się również modele 2- i 6-rdzeniowe skalowalne odpowiednio do 4 i 12 wątków[2].

Procesor Intel Atom jest układem będącym wciąż w ofercie firmy Intel, który wyposażony w technologię Hyper-threading, przeznaczony został do zastosowań w tanich urządzeniach przenośnych klasy PC o niskim poborze mocy[3].

Procesor Itanium 9300 został opracowany z możliwością przetwarzania 8 wątków na procesor (2 wątki na jeden rdzeń) dzięki zastosowaniu rozszerzonej wersji technologii Hyper-threading. Poulson, który jest następną generacją procesorów Itanium, został zaplanowany przez Intel jako procesor z dodatkowymi rozszerzeniami dla Hyper-threading[4].

Procesory do zastosowań serwerowych z rodziny Intel Xeon 5500 także wykorzystują technologię dwuwątkową Hyper-threading[5][6].

Wydajność

[edytuj | edytuj kod]

Korzyści z zastosowania technologii Hyper-threading są następujące: udoskonalone wsparcie dla kodu wielowątkowego, pozwalające na jednoczesne wykonywanie wielu wątków, skrócona reakcja i czas odpowiedzi na żądania.

Według Intela układy z zastosowaną technologią Hyper-threading zajmują jedynie 5% większą powierzchnię płytki półprzewodnika die area przy wzroście wydajności w granicach 15-30% w porównaniu z procesorami bez tej technologii.

Intel utrzymuje, że wzrost wydajności w porównaniu z identycznym procesorem Pentium 4 bez technologii współbieżnej wielowątkowości wynosi 30%. Portal Tomshardware.com opublikował opinię: „W niektórych przypadkach P4 taktowany częstotliwością 3,0 GHz z zaimplementowaną technologią HT potrafi przewyższyć wydajnością procesor Pentium 4 bez technologii HT taktowany zegarem 3,6 GHz.”[7][8]. Firma Intel podała również informację o istotnej poprawie wydajności procesorów Pentium 4 zrealizowanych przy użyciu technologii Hyper-threading w zakresie przetwarzania algorytmów sztucznej inteligencji. Uzyskany wzrost wydajności jest wysoce uzależniony od użytego oprogramowania, jakkolwiek w przypadku uruchomienia dwóch programów wymagających całkowitej mocy obliczeniowej procesora w chwili obecnej obserwuje się, że oba lub jeden z nich wykonuje się nieco wolniej w przypadku, gdy technologia HT została włączona. Jest to spowodowane działaniem replay system procesora Pentium 4, które wiąże cenne jednostki wykonawcze, wyrównując dostępne zasoby procesora pomiędzy dwa wykonujące się programy, co skutkuje wydłużeniem całkowitego czasu wykonania programów w różnym stopniu. (Procesor Pentium 4 z jądrem Prescott uzyskał replay queue, która redukuje czas wykonania niezbędny dla działania systemu replay, co jest wystarczające, aby zniwelować ten problem wydajnościowy).

Zwrot w historii

[edytuj | edytuj kod]

W chwili, gdy Intel Pentium 4 3,06 GHz HT wszedł do użycia, dla niektórych programistów specyficznych aplikacji problemem było podjęcie decyzji czy zaimplementować obsługę nowej technologii w swoich programach[9], ponieważ niektórzy z nich wciąż testowali swoje programy przy użyciu systemów operacyjnych, które nie były optymalizowane do obsługi technologii Hyper-threading (np. Windows 2000)[10], oraz to, że w tamtym czasie większość komputerów była wyposażona w procesory jednowątkowe.

W roku 2006 technologia wielowątkowości współbieżnej została skrytykowana za nadmierne zużycie energii. Na przykład konsorcjum specjalizujące się w produkcji układów o niskim zużyciu energii ARM opublikowało informację, że zastosowanie technologii wielowątkowej w maszynach wieloprocesorowych SMT potrafi zużyć do 46% więcej energii niż rozwiązania procesorów dwurdzeniowych. Co więcej, konsorcjum to stwierdziło, że zastosowanie technologii wielowątkowej w maszynach wieloprocesorowych SMT powoduje wzrost o 42% ilości dostępu do pamięci cache (cache thrashing), podczas gdy rozwiązania dwurdzeniowe (Dual Core) powodują spadek występowania tego niekorzystnego zjawiska o 37%[11].

Bezpieczeństwo

[edytuj | edytuj kod]

W maju 2005 Colin Percival zademonstrował, jak złośliwy wątek z ograniczonymi przywilejami może monitorować wykonywanie się innego wątku poprzez wpływ na współdzielone dane pamięci podręcznej, co pozwoliło na kradzież kluczy kryptograficznych[12]. Należy nadmienić, iż w chwili gdy atak został opisany na papierze, został również zademonstrowany na procesorze Intel Pentium 4 z zaimplementowaną technologią HT, te same techniki w teorii mogą być zastosowane w stosunku do jakiegokolwiek systemu, w którym cache jest współdzielony pomiędzy dwa lub więcej wykonujące się wątki, które nie są względem siebie bezpieczne/zaufane; zob. również side channel attack.

Zobacz też

[edytuj | edytuj kod]

Przypisy

[edytuj | edytuj kod]

Linki zewnętrzne

[edytuj | edytuj kod]
Bezpieczeństwo
Wydajność

Replay: Unknown Features of the NetBurst Core [1]