Jaka jest różnica między hiperwątkowością a wieloma rdzeniami?

42

W rozmowie z administratorem sieci wspomniałem, że mój komputer jest dwurdzeniowy. Powiedział mi, że tak nie jest. Przywołałem menedżera zadań, przeszedłem do zakładki wydajności i pokazałem mu, że istnieją dwa osobne wykresy wykorzystania procesora. W domu mam czterordzeniową maszynę i ma ona cztery wykresy. Powiedział, że na tej konkretnej maszynie są dwa wykresy z powodu hiperwątkowości. Kiedyś miałem procesor pentium 4 z bardzo krótkim wątkiem, ale nigdy w pełni nie rozumiałem, co to znaczy. Jaka jest różnica między hiperwątkowością a dwurdzeniowym? A jak powiedzieć, który masz?

Josh Stodola
źródło

Odpowiedzi:

20

Hiperwątkowość ujawnia wiele rdzeni logicznych dla jednego fizycznego rdzenia procesora. Mówiąc najprościej, hiperwątkowość sprawia, że przełączanie kontekstu jest bardziej wydajne dla każdego rdzenia procesora.

Z drugiej strony dwurdzeniowe układy faktycznie mają dwa fizyczne rdzenie procesora, które mogą wykonywać różne procesy jednocześnie.

Istnieją również inne wielordzeniowe układy, które mają wiele więcej niż dwa rdzenie, i - jak wspomniał Svish - najnowsze oferty wielordzeniowe Intela również obsługują hiperwątkowanie na wszystkich rdzeniach.

Możesz użyć narzędzia do identyfikacji procesora, takiego jak CPU-Z, aby określić liczbę posiadanych rdzeni. Jak widać w dolnej części zrzutu ekranu, procesor w tym przypadku ma 2 rdzenie fizyczne. Jeśli liczba wątków jest większa niż liczba rdzeni, włącza się Hyper-Threading. Do tej pory wszystkie procesory zorientowane na konsumenta z hiperwątkowością mają 2 wątki na rdzeń, więc jeśli HT jest włączony, liczba wątków będzie dwa razy większa niż liczba rdzeni.

wprowadź opis zdjęcia tutaj

Jeśli masz procesor Intel, możesz zamiast tego pobrać narzędzie Intel ID procesora .

obrabować
źródło
Oraz wielordzeniowe układy, które obsługują hiperwątkowość, dzięki czemu otrzymujesz dwa razy więcej rdzeni logicznych.
Svish,
Podziękować! Jak powiedzieć (z poziomu systemu operacyjnego), jaki rodzaj procesora mam?
Josh Stodola
3
UltraSparc T2 + ma 8 rdzeni, z których każdy obsługuje 8 wątków, co czyni go 64 wirtualnymi procesorami na jednym układzie: en.wikipedia.org/wiki/UltraSPARC_T2
jlliagre
Sposób poznania posiadanego procesora zależy od uruchomionego systemu operacyjnego.
jlliagre
@jilliagre: nice!
okradać
16

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.

Zobacz także: To pytanie

Earlz
źródło
6

Hyperthreading jest tańszą i wolniejszą alternatywą niż posiadanie podwójnych rdzeni

Intel Manual Volume 3 System Programming Guide - 325384-056US wrzesień 2015 8,7 "Intel Hyper-Threading Technology ARCHITEKTURA" opisuje HT krótko. Zawiera następujący schemat:

wprowadź opis zdjęcia tutaj

TODO jest wolniejszy o ile procent średnio w rzeczywistych aplikacjach?

Hyperthreading jest możliwy, ponieważ współczesne pojedyncze rdzenie procesorów wykonują już wiele instrukcji jednocześnie za pomocą potoku instrukcji https://en.wikipedia.org/wiki/Instruction_pipelining

Potok instrukcji jest rozdziałem funkcji wewnątrz jednego rdzenia, aby zapewnić, że każda część obwodu jest używana w danym momencie: czytanie pamięci, instrukcje dekodowania, wykonywanie instrukcji itp.

Hyperthreading oddziela funkcje dalej za pomocą:

  • pojedynczy backend, który faktycznie uruchamia instrukcje za pomocą potoku.

    Dwurdzeniowy ma dwa backendy, co tłumaczy większy koszt i wydajność.

  • dwa interfejsy, które pobierają dwa strumienie instrukcji i porządkują je w taki sposób, aby zmaksymalizować wykorzystanie potokowego pojedynczego zaplecza przez unikanie zagrożeń .

    Dwurdzeniowy miałby również 2 interfejsy, po jednym dla każdego backendu.

    Zdarzają się przypadki skrajne, w których zmiana kolejności instrukcji nie przynosi żadnych korzyści, dzięki czemu hiperwątkowanie jest bezużyteczne. Ale powoduje znaczną poprawę średniej.

Dwa hiperwątki w jednym rdzeniu współużytkują kolejne poziomy pamięci podręcznej (TODO ile? L1?) Niż dwa różne rdzenie, które współużytkują tylko L3, patrz:

Interfejs, który każdy hyperthread udostępnia systemowi operacyjnemu, jest podobny do interfejsu rzeczywistego rdzenia i oba mogą być kontrolowane osobno. To cat /proc/cpuinfopokazuje mi 4 procesory, mimo że mam tylko 2 rdzenie z 2 hiperwątkami każdy.

Systemy operacyjne mogą jednak skorzystać z wiedzy, które hiperwątki znajdują się w tym samym rdzeniu, aby uruchomić wiele wątków danego programu na jednym rdzeniu, co może poprawić wykorzystanie pamięci podręcznej.

Ten film LinusTechTips zawiera beztroskie wyjaśnienie nietechniczne: https://www.youtube.com/watch?v=wnS50lJicXc

Ciro Santilli
źródło
1
Czy zamierzasz odpowiedzieć na pytania „DO ZROBIENIA”?
pacoverflow,
1
@pacoverflow, jeśli kiedyś nauczę się odpowiedzi, lub jeśli ktoś będzie dla mnie edytować odpowiedź :-)
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件