Niedawno usłyszałem termin „hiperwątkowość”, czym właściwie jest hiperwątkowość i dlaczego jest taki ważny?
Niedawno usłyszałem termin „hiperwątkowość”, czym właściwie jest hiperwątkowość i dlaczego jest taki ważny?
Odpowiedzi:
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.
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 ...
Gdy pojedynczy rdzeń może działać jako podwójny rdzeń
to jest Hyperthreading
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
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
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ć.