Jaka jest różnica między wielowątkowością a hiperwątkowością? [Zamknięte]


10

Słyszałem terminy hiperwątkowość i wielowątkowość, ale jaka dokładnie jest między nimi różnica? Jakiego rodzaju procesor Intel z nich korzysta?


2
Próbujesz porównać rzeczy, które nie są bezpośrednio porównywalne; tylko powiązane. To jak pytanie „Jaka jest różnica między stopą a butem?” Poza tym, co dotychczas ujawniły twoje badania? Gdzie dokładnie się rozłączasz, określając różnicę na podstawie definicji łatwo dostępnych z Internetu?
ᴇcʜιᴇ007


1
nie znam ani wielowątkowości, ani hipertekstu nie jestem poproszony o ich zapoznanie
róża

1
przepełnienie stosu naziści zamknęli ten temat jako „nie na temat” ... To bardzo dobre pytanie, jest popularne i nie powinno być zamykane ..
Robbo_UK

Odpowiedzi:


19

Wielowątkowość odnosi się do ogólnego zadania uruchamiania więcej niż jednego wątku wykonania w systemie operacyjnym. Wielowątkowość jest bardziej ogólnie nazywane „wieloprocesorowe”, która może zawierać wiele procesów systemowych (prosty przykład na Windows byłoby na przykład program Internet Explorer i Microsoft Word w tym samym czasie), lub może składać się z jednego procesu, który ma wiele wątków w obrębie to.

Wielowątkowość (a raczej wielowątkowość) to koncepcja oprogramowania . Praktycznie każdy procesor z pełną obsługą Turinga może wykonywać wielowątkowość, nawet jeśli komputer ma tylko jeden rdzeń procesora i ten rdzeń nie obsługuje hiperwątkowania. W celu obsługi przetwarzania wieloprocesorowego procesor przeplata wykonanie różnych wątków wykonania, wykonując jeden, potem drugi, a następnie inny, w którym system operacyjny podzieli dostępny czas na „wycinki” i da mniej więcej tyle samo czasu na każdy wątek (czas nie musi być równy, ale zazwyczaj tak się dzieje, chyba że proces zażąda wyższego priorytetu).

Zauważ, że ilekroć w danym momencie jest więcej wątków wykonania oprogramowania próbujących wykonać, niż jest dostępnych wątków wykonania sprzętowego (równoczesnego), wątki te zostaną „przeplecione” wśród dostępnych rdzeni. W przypadku „uniprocesora” (jeden rdzeń procesora bez hiperwątkowania), jeśli masz więcej niż jeden wątek oprogramowania, zawsze będąbyć przeplatanym. Jeśli masz 4-rdzeniowy procesor z hyperthreadingiem, to 8 „wątków sprzętowych”, co oznacza, że ​​procesor może wykonać 8 jednoczesnych wątków wykonania w tym samym momencie, więc jeśli miałeś 8 wątków programowych próbujących uruchomić, wszystkie mogłyby działać jednocześnie ; ale jeśli masz 9 wątków oprogramowania, jeden z wątków sprzętowych musiałby przeplatać parę wątków (dokładna para wybranych wątków zależy od implementacji harmonogramu systemu operacyjnego).


Z drugiej strony, hyperthreading odnosi się do bardzo specyficznej technologii sprzętowej stworzonej przez firmę Intel, która pozwala pojedynczemu procesorowi na efektywniejsze przeplatanie wielu wątków. Innymi słowy, procesor z hyperthreading'em zapewni wydajność, która jest nieco większa niż procesor, który w innym przypadku byłby taki sam, ale bez hyperthreadinga, ponieważ hyperthreaded CPU będzie w stanie jednocześnie zrównoważyć dwa (czasami więcej, ale hyperthreading jest zwykle 2 sposób) wątki wykonania na danym rdzeniu.

Jednak hyperthreading jest ściśle wolniejszy niż posiadanie całkowicie oddzielnych rdzeni fizycznych, ponieważ istnieją pewne typy operacji, które mogą zakłócać zalety wydajności hyperthreading, podczas gdy jest mniej operacji, które mogą spowodować takie zdarzenie z całkowicie oddzielnymi rdzeniami.

Weźmy następujący przykład, w którym zakłada się, że „1 rdzeń” działa dokładnie tak samo we wszystkich przykładach:

Przykład 1: 2 rdzenie, bez hipertekstu.
Przykład 2: 4 rdzenie, bez hipertekstu.
Przykład 3: 2 rdzenie z hiperwątkiem.
Przykład 4: 4 rdzenie z hiperwątkiem.

W takim przypadku przykład 4 zawsze będzie najszybszy. Przykład 2 może czasami być tak szybki jak w Przykładzie 4, w przypadku obciążeń, które są wyjątkowo słabo dostosowane do korzystania z optymalizacji hiperwątkowania.

Z drugiej strony przykład 3 może czasami przy obciążeniach, w których hiperwątkowanie jest najbardziej korzystne, być prawie tak szybki jak w przykładzie 2, nawet jeśli ma o połowę mniej rdzeni fizycznych.

Przykład 1, oczywiście, będzie najwolniejszy ze wszystkich przykładów, ale czasami może być tak szybki jak w Przykładzie 3, gdy uruchamia się obciążenie słabo dostosowane do hiperwątkowości.

W rzeczywistych testach porównawczych z nowoczesnymi procesorami Intela zwykle stwierdzamy, że hiperwątkowanie prowadzi, mówiąc bardzo ogólnie, o 20% do 40% poprawy wydajności w porównaniu z brakiem hiperwątkowości (przy analizie przypadku „braku hiperwątkowania” poprzez wyłączenie funkcji hiperwątkowania w BIOS). Czasami zdarzają się obciążenia, w których wyłączenie hiperwątkowania wykazuje przewagę wydajności , ale obciążenia te mogą być rzadkie w rzeczywistym użyciu. Ale gdybym miał wybór między 4 rdzeniami z hiperwątkiem lub 8 rdzeniami, zakładając, że każdy rdzeń ma taką samą wydajność, wybrałbym 8 rdzeni procesora za każdym razem.


2
Mówiąc ściślej, wielowątkowość i wieloprzetwarzanie to nie to samo. Wątki współużytkują kontekst wykonania z procesem, z którym są skojarzone, podczas gdy procesy mają własne konteksty wykonania. Jednak dla tej odpowiedzi to rozróżnienie nie jest aż tak ważne.
Tero Kilkanen

1
Technologia Hyperthreading nie została „stworzona przez Intel”; dla mainline x86 jest to tylko znak towarowy do jednoczesnego wielowątkowości. Gdyby Alpha 21464 została wyprodukowana, byłby to jeden z pierwszych wybitnych użytkowników SMT. Intel wyprodukował pierwsze wydane użycie SMT (być może z wyłączeniem mniej znanych procesorów) z niektórymi Pentium 4, ale podstawową ideą nie był wynalazek Intela.
Paul A. Clayton

2
Quibble: hyperthreading nie jest ściśle wolniejszy niż oddzielne rdzenie. Można wymyślić (sztuczne) przypadki, w których współdzielenie pamięci podręcznych L1 jest większą korzyścią niż pełne wykorzystanie zasobów rdzenia. Innym szczególnym przypadkiem może być sytuacja, gdy jeden wątek jest trwale aktywny, a inny krótko obsługuje zdarzenia przerywane; budzenie rdzenia z przerwami jest droższe niż budzenie nici na aktywnym rdzeniu. W przypadku wątków o wyjątkowo niskim ILP, jeśli rywalizacja o pamięć podręczną nie stanowi problemu, to większa efektywność energetyczna użycia pojedynczego rdzenia może pozwolić na większą turboboosting (lepszą wydajność).
Paul A. Clayton

3
Odpowiedzi są edytowalne na SU, więc jeśli chcecie to poprawić, nie krępuj się. Pamiętaj także o pozornym poziomie wiedzy na temat PO; nawet moja odpowiedź sama w sobie jest prawdopodobnie bardziej techniczna niż się spodziewali lub chcieli. Celowo przeszukałem niektóre szczegóły na rzecz łatwego wyjaśnienia. Wątpię, czy OP zamierza wkrótce zaprojektować procesory i desperacko potrzebuje wszystkich tych szczegółów. Niemniej interesujące komentarze.
allquixotic

1
Sugerowane zmiany, które zmieniają treść (tj. Nie tylko poprawki gramatyczne / literówki lub ponowne sformułowanie w celu zachowania przejrzystości) prawdopodobnie zostaną odrzucone.
Paul A. Clayton

4

Wielowątkowość to termin przetwarzania równoległego na poziomie systemu operacyjnego. Procesor nie ma nic wspólnego z wielowątkowością.

Hyperthreading to koncepcja Intela, która implementuje „jednoczesne” przetwarzanie wielu wątków w jednym rdzeniu procesora. System operacyjny widzi dwa rdzenie procesora, chociaż jest tylko jeden rdzeń fizyczny.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.