Co to jest hiperwątkowość i jak działa?

Odpowiedzi:

38

Hiperwątkowość polega na tym, że twój procesor udaje, że ma 2 fizyczne rdzenie procesora, ale ma tylko 1 i dodatkowe śmieci.

Chodzi o to, że wiele razy podczas wykonywania kodu w procesorze występują części bezczynności procesora. Uwzględniając dodatkowy zestaw rejestrów procesora, procesor może zachowywać się tak, jakby miał dwa rdzenie, a tym samym używać wszystkich części procesora równolegle. Gdy oba rdzenie muszą używać jednego elementu procesora, jeden rdzeń oczywiście czeka. Dlatego nie może zastąpić dwurdzeniowych i takich procesorów.

Earlz
źródło
6
+1 powinien dodać, że hiperwątkowość jest specyficzna dla implementacji SMT Intela, np. Procesor SPARC ma zaimplementowaną inną formę SMT, ale ma podobne cele.
sybreon
@Ellz, czy sugerujesz, że procesor obsługuje dwa wątki, dzieląc rdzenie na dwa? czy też wygląda na to, że równoległość wykonana w rzeczywistości hiperwątkowość powoduje przełączanie procesora z jednego wątku do drugiego?
Doopy Doo
4
@DoopyDoo ani. Zasadniczo procesor ma dwa „rdzenie wykonawcze”, które są potokiem dla instrukcji i takie, a także ma dwa zestawy rejestrów i inne istotne rzeczy. Różnica między hiperwątkowością a zwykłym dwurdzeniowym jest jednak taka, że ​​niektóre rzeczy NIE są zduplikowane. Na przykład może istnieć tylko jeden ALU. Oznaczałoby to, że procesor dwurdzeniowy może jednocześnie dodawać dwa oddzielne zestawy liczb, ponieważ procesor hiperwątkowy będzie musiał sprawić, że jeden z wirtualnych rdzeni zaczeka na zmianę z ALU. oczywiście jest to uproszczony przykład
Earlz
12

Hyper-Threading to miejsce, w którym dwa wątki mogą działać na jednym jednowątkowym rdzeniu. Gdy wątek na danym rdzeniu utknie w miejscu lub w stanie zatrzymania, hiperwątkowanie umożliwia zamianę rdzenia na drugi wątek.

Hiperwątkowość sprawia, że ​​system operacyjny myśli, że procesor ma podwójną liczbę rdzeni i często zapewnia poprawę wydajności, ale tylko w okolicach 15-30% ogółem - chociaż w niektórych okolicznościach może rzeczywiście wystąpić spadek wydajności (= <20%).

Obecnie większość układów Atom i wszystkie układy i7 (i układy równoważne Xeon) mają hiperwątkowość, podobnie jak niektóre starsze P4. W przypadku atomów jest to desperacka próba poprawy wydajności bez znacznego wzrostu zużycia energii; w przypadku i7s odróżnia je od gamy układów i5.

Złożone prace przetwarzania nie przyniosą wiele korzyści z HT, ale niektóre (proste, wielowątkowe) zadania, takie jak kodowanie wideo, korzystają z HT. W rzeczywistości nie ma w tym wiele ...

CJM
źródło
95% poprawne. Jeśli normalny rdzeń = A + B, to rdzeń hiperwątkowy jest bardziej podobny do A + 2 x B. Mogą wykonywać dwa wątki jednocześnie, o ile oba wątki nie potrzebują A.
Vincent Vancalbergh
5

Gdy pojedynczy rdzeń może działać jako podwójny rdzeń

to jest Hyperthreading

Szczegółowo

Implementacja jednoczesnego wielowątkowości firmy Intel jest znana jako technologia hiperwątkowości lub technologia HT.

Technologia HT sprawia, że ​​pojedynczy procesor pojawia się, z
perspektywy oprogramowania , jako wiele procesorów logicznych. Umożliwia to systemom operacyjnym i aplikacjom planowanie wielu wątków w procesorach logicznych, tak jak
w systemach wieloprocesorowych.


Hyperthreading pozwala jednemu procesorowi wykonywać dwa wątki jednocześnie, ale nie we wszystkich warunkach.

Hyperthreading nie podwaja wydajności systemu, może zwiększyć wydajność poprzez lepsze wykorzystanie bezczynnych zasobów, co prowadzi do większej przepustowości dla niektórych ważnych rodzajów obciążenia. Aplikacja działająca na jednym logicznym procesorze zajętego rdzenia może spodziewać się nieco więcej niż połowy przepustowości, którą uzyskuje, pracując samodzielnie na procesorze bez hyperthreaded. Ulepszenia wydajności hiperwątkowania są w dużym stopniu zależne od aplikacji, a niektóre aplikacje mogą odczuwać spadek wydajności w przypadku hiperwątkowania, ponieważ wiele zasobów procesora (takich jak pamięć podręczna) jest współużytkowanych przez procesory logiczne.

Technologia Intel Hyper-Threading sprawia, że ​​każdy rdzeń może mieć dwa logiczne procesory, które współużytkują większość zasobów rdzenia, takie jak pamięci podręczne i jednostki funkcjonalne

Główna funkcja

Hyperthreading ma na celu zwiększenie liczby niezależnych instrukcji w potoku; korzysta z architektury superskalarnej, w której wiele instrukcji działa równolegle na osobnych danych

Intel twierdzi, że hiperwątkowość jest bardzo wydajna, ponieważ wykorzystuje zasoby, które w innym przypadku byłyby bezczynne lub niewykorzystane.

Spinki do mankietów:

Wikipedia
StackOverflow
Programowanie wielordzeniowe Digital_Edition str # 8

wprowadź opis zdjęcia tutaj

Intel Image

Johnny Blaze
źródło
3

Aby rozwinąć to, co już powiedziano, hyperthreading oznacza, że ​​pojedynczy rdzeń procesora może utrzymywać dwa osobne konteksty wykonywania i szybko przełączać się między nimi, skutecznie emulując dwa rdzenie na poziomie sprzętowym.

Uzyskujesz niewielką przewagę prędkości w przypadku wielowątkowych obciążeń w porównaniu do normalnego, pojedynczego rdzenia. Jednak nie jest to bliskie korzyści z posiadania dwóch niezależnych rdzeni. Jeśli chodzi o wydajność, najlepiej myśleć o tym jako o niewielkim wzroście wydajności wielowątkowej w jednym rdzeniu, a nie o wydajności zbliżającej się do dwóch rdzeni. Wielkość przyspieszenia zależy od obciążenia - w rzeczywistości w przypadku niektórych obciążeń zwiększenie wydajności jest całkiem przyzwoite.

Rdzeń hyperthreaded ma tylko jedną główną jednostkę wykonawczą, ale niektóre inne części procesora związane z instrukcjami przygotowania do przetwarzania i utrzymywania stanu wykonania są zduplikowane.

Rdzenie procesorów mają potok instrukcji - kolejkę przyszłych instrukcji do wykonania, która jest ciągle aktualizowana, gotowa do wykonania przez CPU instrukcji na początku tej kolejki. Procesory wykorzystują je do optymalizacji szybkości wykonywania, przeglądając przyszłe instrukcje i wykonując na nich proste, wstępne przetwarzanie niskiego poziomu, o ile to możliwe (takie optymalizacje obejmują „wykonanie poza kolejnością” i „przewidywanie oddziału”).

Rdzenie hiperwątkowe mają potoki z podwójnymi instrukcjami, a to - wraz z drugim zestawem rejestrów - zapewnia korzyści w zakresie prędkości w przypadku obciążeń wielowątkowych. Przełączanie między kontekstami wątków nie powoduje wyrzucenia potoku ani rejestrów, a potok i rejestry dla drugiego wątku pozostają gotowe i „gorące”, aby można je było natychmiast przełączyć i używać.

thomasrutter
źródło