Hyper Threading - Hyper-threading

W tym wysokopoziomowym przedstawieniu HTT instrukcje są pobierane z pamięci RAM (różne pola reprezentują instrukcje czterech różnych procesów ), dekodowane i porządkowane przez front end (białe pola reprezentują bąbelki potoku ) i przekazywane do rdzenia wykonawczego zdolnego do wykonywanie instrukcji z dwóch różnych programów w tym samym cyklu zegara .

Hyper-Threading (oficjalnie nazywany Hyper-Threading Technology lub Technologia HT i skrótem HTT lub HT ) jest Intel „s zastrzeżony jednoczesna wielowątkowość (SMT) realizacja wykorzystane do poprawy zrównoleglenia obliczeń (robi wiele zadań na raz) przeprowadzono na x86 mikroprocesorów. Został on wprowadzony na Xeon serwerowych procesorów w lutym 2002 roku i na Pentium 4 procesorów desktopowych w listopadzie 2002. Od tego czasu Intel włączyła tę technologię w Itanium , Atom i Rdzenia „I” serii procesorów, między innymi.

W przypadku każdego fizycznie obecnego rdzenia procesora system operacyjny adresuje dwa rdzenie wirtualne (logiczne) i, jeśli to możliwe, dzieli między nimi obciążenie. Główną funkcją hiperwątkowości jest zwiększenie liczby niezależnych instrukcji w potoku; wykorzystuje architekturę superskalarną , w której wiele instrukcji działa równolegle na oddzielnych danych . W przypadku HTT jeden rdzeń fizyczny pojawia się w systemie operacyjnym jako dwa procesory, co pozwala na jednoczesne planowanie dwóch procesów na rdzeń. Ponadto dwa lub więcej procesów może korzystać z tych samych zasobów: jeśli zasoby jednego procesu nie są dostępne, inny proces może być kontynuowany, jeśli jego zasoby są dostępne.

Oprócz jednoczesnej obsługi wielowątkowości w systemie operacyjnym, hiperwątkowość może być właściwie wykorzystywana tylko z systemem operacyjnym specjalnie do tego zoptymalizowanym.

Przegląd

Model 3 GHz procesora Intel Pentium 4 z technologią Hyper-Threading

Technologia Hyper-Threading to forma jednoczesnej technologii wielowątkowości wprowadzona przez firmę Intel, podczas gdy koncepcja tej technologii została opatentowana przez Sun Microsystems . Architektonicznie procesor z technologią Hyper-Threading składa się z dwóch procesorów logicznych na rdzeń, z których każdy ma swój własny stan architektury procesora. Każdy procesor logiczny może być indywidualnie zatrzymany, przerwany lub skierowany do wykonania określonego wątku, niezależnie od innego procesora logicznego współdzielącego ten sam rdzeń fizyczny.

W przeciwieństwie do tradycyjnej konfiguracji dwuprocesorowej, która wykorzystuje dwa oddzielne procesory fizyczne, procesory logiczne w rdzeniu hiperwątkowym współdzielą zasoby wykonawcze. Zasoby te obejmują aparat wykonawczy, pamięci podręczne i interfejs magistrali systemowej; współdzielenie zasobów pozwala dwóm procesorom logicznym na bardziej wydajną współpracę i umożliwia procesorowi logicznemu pożyczanie zasobów z zablokowanego rdzenia logicznego (zakładając, że oba rdzenie logiczne są powiązane z tym samym rdzeniem fizycznym). Procesor zatrzymuje się, gdy czeka na dane, po które wysłał, aby mógł zakończyć przetwarzanie bieżącego wątku. Stopień korzyści widocznych podczas korzystania z procesora wielowątkowego lub wielordzeniowego zależy od potrzeb oprogramowania oraz od tego, jak dobrze jest napisane i system operacyjny, aby efektywnie zarządzać procesorem.

Hyper-threading działa poprzez duplikowanie pewnych sekcji procesora — tych, które przechowują stan architektury — ale nie duplikuje głównych zasobów wykonawczych . Dzięki temu procesor hiperwątkowości może pojawiać się jako zwykły „fizyczny” procesor i jako dodatkowy „ logiczny ” procesor dla systemu operacyjnego hosta (systemy operacyjne nieobsługujące HTTP widzą dwa „fizyczne” procesory), umożliwiając systemowi operacyjnemu zaplanowanie dwóch wątków lub procesów jednocześnie i odpowiednio. Gdy zasoby wykonawcze nie byłyby wykorzystywane przez bieżące zadanie w procesorze bez funkcji hyper-threading, a zwłaszcza gdy procesor jest zatrzymany, procesor wyposażony w funkcję Hyper-Threading może wykorzystać te zasoby wykonawcze do wykonania innego zaplanowanego zadania. (Procesor może się zawiesić z powodu braku pamięci podręcznej , błędnego przewidywania gałęzi lub zależności danych .)

Ta technologia jest przezroczysta dla systemów operacyjnych i programów. Minimum wymagane do skorzystania z hiperwątkowości to obsługa symetrycznego przetwarzania wieloprocesowego (SMP) w systemie operacyjnym, ponieważ procesory logiczne są wyświetlane jako standardowe oddzielne procesory.

Możliwa jest optymalizacja zachowania systemu operacyjnego na wieloprocesorowych systemach obsługujących hiperwątkowość. Rozważmy na przykład system SMP z dwoma procesorami fizycznymi, które są hiperwątkowe (łącznie cztery procesory logiczne). Jeśli harmonogram wątków systemu operacyjnego nie jest świadomy hiperwątkowości, traktuje wszystkie cztery procesory logiczne tak samo. Jeśli tylko dwa wątki są uprawnione do uruchomienia, może zdecydować się na zaplanowanie tych wątków na dwóch procesorach logicznych, które należą do tego samego procesora fizycznego; ten procesor byłby bardzo zajęty, podczas gdy drugi byłby bezczynny, co prowadziłoby do gorszej wydajności niż jest to możliwe przy planowaniu wątków na różnych procesorach fizycznych. Problemu tego można uniknąć, ulepszając program planujący, aby traktował procesory logiczne inaczej niż procesory fizyczne; w pewnym sensie jest to ograniczona forma zmian harmonogramu, które są wymagane dla systemów NUMA .

Historia

Pierwszy opublikowany artykuł opisujący to, co jest obecnie znane jako hiperwątkowość w komputerze ogólnego przeznaczenia, został napisany przez Edwarda S. Davidsona i Leonarda. E. Szara w 1973 roku.

Firma Denelcor, Inc. wprowadziła wielowątkowość w procesorze heterogenicznym (HEP) w 1982 roku. Potok HEP nie mógł przechowywać wielu instrukcji z tego samego procesu. Tylko jedna instrukcja z danego procesu mogła być obecna w potoku w dowolnym momencie. Jeśli instrukcja z danego procesu zablokuje potok, instrukcje z innych procesów będą kontynuowane po opróżnieniu potoku.

Amerykański patent na technologię hiperwątkowości został przyznany Kennethowi Okinowi z Sun Microsystems w listopadzie 1994 roku. W tamtym czasie technologia przetwarzania CMOS nie była wystarczająco zaawansowana, aby umożliwić opłacalną implementację.

Intel wdrożył technologię Hyper-Threading na procesorze o architekturze x86 w 2002 roku z procesorem Xeon opartym na procesorze Foster MP . W tym samym roku był również zawarty w 3,06 GHz Pentium 4 z procesorem Northwood, a następnie pozostał jako funkcja w każdym procesorze Pentium 4 HT, Pentium 4 Extreme Edition i Pentium Extreme Edition. Linie procesorów Intel Core i Core 2 (2006), które zastąpiły linię modeli Pentium 4, nie wykorzystywały hiperwątkowości. Procesory oparte na mikroarchitekturze Core nie miały hiperwątkowości, ponieważ mikroarchitektura Core była potomkiem starszej mikroarchitektury P6 . Mikroarchitektura P6 była używana we wcześniejszych iteracjach procesorów Pentium, a mianowicie Pentium Pro , Pentium II i Pentium III (plus ich pochodne Celeron i Xeon w tym czasie).

Intel wypuścił mikroarchitekturę Nehalem (Core i7) w listopadzie 2008 roku, w której powrócił hiperwątkowość. Pierwsza generacja procesorów Nehalem zawierała cztery fizyczne rdzenie i była efektywnie skalowana do ośmiu wątków. Od tego czasu zostały wydane zarówno modele dwu-, jak i sześciordzeniowe, skalujące odpowiednio cztery i dwanaście wątków. Wcześniejsze rdzenie Intel Atom były procesorami w kolejności, czasami z funkcją hyper-threading, do komputerów przenośnych o niskim poborze mocy i tanich komputerów stacjonarnych. Itanium  9300 uruchomiony osiem nici na procesorze (dwie nici na rdzeń) do ulepszonej technologii hiper gwintów. Kolejny model, Itanium 9500 (Poulson), charakteryzuje się architekturą o szerokości 12 numerów, z ośmioma rdzeniami procesora i obsługą ośmiu dodatkowych rdzeni wirtualnych za pośrednictwem hiperwątkowości. Chipy serwerowe Intel Xeon 5500 wykorzystują również dwukierunkową hiperwątkowość.

Roszczenia dotyczące wydajności

Według Intela, pierwsza implementacja hiperwątkowości wykorzystywała tylko 5% więcej powierzchni matrycy niż porównywalny procesor bez hiperwątkowości, ale wydajność była o 15-30% lepsza. Intel twierdzi, że wydajność wzrosła nawet o 30% w porównaniu z identycznym, niejednoczesnym, wielowątkowym Pentium 4. Tom's Hardware stwierdza: „W niektórych przypadkach P4 działający z 3,0 GHz z włączonym HT może nawet pokonać P4 działający z 3,6 GHz z HT wyłączony." Intel twierdzi również o znacznej poprawie wydajności dzięki procesorowi Pentium 4 z obsługą hiperwątkowości w niektórych algorytmach sztucznej inteligencji.

Ogólnie historia wydajności hyper-threadingu była na początku mieszana. Jak jeden z komentarzy na temat obliczeń o wysokiej wydajności z listopada 2002 r. zauważa:

Hyper-Threading może poprawić wydajność niektórych aplikacji MPI , ale nie wszystkich. W zależności od konfiguracji klastra i, co najważniejsze, charakteru aplikacji działającej w klastrze, wzrost wydajności może się różnić, a nawet być ujemny. Następnym krokiem jest użycie narzędzi wydajności, aby zrozumieć, które obszary przyczyniają się do wzrostu wydajności, a które przyczyniają się do obniżenia wydajności.

W rezultacie ulepszenia wydajności są bardzo zależne od aplikacji; jednak podczas uruchamiania dwóch programów, które wymagają pełnej uwagi procesora, może się wydawać, że jeden lub oba programy nieco spowalniają, gdy włączona jest technologia Hyper-Threading. Wynika to z tego, że system odtwarzania Pentium 4 blokuje cenne zasoby wykonawcze, wyrównując zasoby procesora między dwoma programami, co wydłuża czas wykonywania w różnym stopniu. Procesory Pentium 4 „Prescott” i Xeon „Nocona” otrzymały kolejkę powtórek, która skraca czas potrzebny na system powtórek i całkowicie eliminuje spadek wydajności.

Zgodnie z analizą firmy Intel z listopada 2009 r. wpływ hiperwątkowości na wydajność powoduje zwiększenie ogólnego opóźnienia w przypadku, gdy wykonywanie wątków nie powoduje znacznego ogólnego przyrostu przepustowości, który różni się w zależności od aplikacji. Innymi słowy, ogólne opóźnienie przetwarzania jest znacznie zwiększone z powodu hiperwątkowości, przy czym negatywne skutki stają się mniejsze, ponieważ istnieje więcej jednoczesnych wątków, które mogą efektywnie wykorzystywać dodatkowe wykorzystanie zasobów sprzętowych zapewniane przez hiperwątkowość. Podobna analiza wydajności jest dostępna dla efektów hiperwątkowości, gdy jest używana do obsługi zadań związanych z zarządzaniem ruchem sieciowym, takich jak przetwarzanie żądań przerwań generowanych przez kontrolery interfejsu sieciowego (NIC). Inny artykuł twierdzi, że nie ma poprawy wydajności, gdy hiperwątkowość jest używana do obsługi przerwań.

Wady

Kiedy pojawiły się pierwsze procesory HT, wiele systemów operacyjnych nie było zoptymalizowanych pod kątem technologii hyper-threading (np. Windows 2000 i Linux starsze niż 2.4).

W 2006 roku hyper-threading został skrytykowany za nieefektywność energetyczną. Na przykład firma ARM specjalizująca się w projektowaniu procesorów o niskim poborze mocy stwierdziła, że ​​jednoczesne wielowątkowość może zużywać do 46% więcej energii niż zwykłe projekty dwurdzeniowe. Ponadto twierdzili, że SMT zwiększa thrashing pamięci podręcznej o 42%, podczas gdy dwurdzeniowy powoduje spadek o 37%.

W 2010 r. firma ARM poinformowała, że ​​w swoich przyszłych chipach może uwzględnić jednoczesną wielowątkowość; jednak zostało to odrzucone na korzyść 64-bitowego projektu z 2012 roku.

W 2013 roku Intel spadł SMT na rzecz realizacji out-of-order dla swoich Silvermont rdzeni procesora, jak znaleźli to dało lepsze wyniki z lepszą wydajnością energetyczną niż mniejszej liczby rdzeni z SMT.

W 2017 roku ujawniono, że procesory Skylake i Kaby Lake firmy Intel miały błąd związany z implementacją hiperwątkowości, który mógł spowodować utratę danych. Aktualizacje mikrokodu zostały później wydane w celu rozwiązania tego problemu.

W 2019 roku, dzięki Coffee Lake , Intel zaczął odchodzić od włączania hyper-threadingu do głównych procesorów Core i7 do komputerów stacjonarnych, z wyjątkiem najwyższej klasy części Core i9 lub procesorów Pentium Gold. Zaczęto również zalecać wyłączenie hiperwątkowości, gdy ujawniono nowe ataki na podatność procesora , które można złagodzić poprzez wyłączenie HT.

Bezpieczeństwo

W maju 2005 roku Colin Percival zademonstrował, że złośliwy wątek na Pentium 4 może wykorzystywać oparty na taktowaniu atak kanału bocznego do monitorowania wzorców dostępu do pamięci innego wątku, z którym współdzieli pamięć podręczną, umożliwiając kradzież informacji kryptograficznych. W rzeczywistości nie jest to atak czasowy , ponieważ złośliwy wątek mierzy czas tylko własnego wykonania. Potencjalne rozwiązania tego problemu obejmują zmianę strategii usuwania pamięci podręcznej przez procesor lub system operacyjny uniemożliwiający jednoczesne wykonywanie na tym samym rdzeniu fizycznym wątków o różnych uprawnieniach. W 2018 roku system operacyjny OpenBSD wyłączył hiperwątkowość „w celu uniknięcia potencjalnego wycieku danych z aplikacji do innego oprogramowania” spowodowanego przez luki Foreshadow/L1TF . W 2019 r. zestaw luk w zabezpieczeniach doprowadził do tego, że eksperci ds. bezpieczeństwa zalecili wyłączenie hiperwątkowości na wszystkich urządzeniach.

Zobacz też

Bibliografia

Zewnętrzne linki