Co to są wątki i co robią w procesorze?

27

Patrzyłem na statystyki dla procesora Intel Pentium e5700 .

Ma dwa rdzenie i dwa wątki. Co robią wątki dla procesora? Czy istnieje jakaś zależność między liczbą rdzeni a liczbą wątków? W jakim celu wątki służą ogólnie systemowi?

niemożliwe 3
źródło
Jest to albo liczba wątków, które procesor może obsłużyć jednocześnie, albo fałszywa statystyka, którą wynalazł Intel.
digitxp
3
Głosowałem na zakończenie jako IMO, co jest zbyt ogólne - chociaż zawsze bardzo waham się mówić „po prostu Google to”, celem Superużytkownika (i podobnych stron) jest udzielenie odpowiedzi na prawdziwe pytania, a nie bycie słownikiem terminów technicznych, które są łatwo wyszukiwane w bardziej odpowiednich zasobach.
Shinrai
3
@Shinrai Zredagowałem to, aby było mniej ogólne
Simon Sheehan

Odpowiedzi:

21

Liczba rdzeni to fizyczna liczba rdzeni na samej matrycy procesora, natomiast liczba wątków to liczba pojedynczych wątków aplikacji, które mogą być wykonywane jednocześnie na samym procesorze. Bez dodatkowego lub specjalnego sprzętu jest to równe liczbie rdzeni. Jednak niektóre procesory będą miały więcej wątków niż rdzeni.

Niektóre procesory Intel mają funkcję zwaną hyperthreading , która pozwala systemowi operacyjnemu zobaczyć podwójną liczbę rdzeni logicznych na rdzeń fizyczny. Pozwala to systemowi operacyjnemu na zaplanowanie i uruchomienie podwójnej liczby wątków jednocześnie, więc w przypadku procesora, do którego podłączyłem powyższe, istnieją cztery rdzenie fizyczne, ale osiem logicznych (więc możesz uruchomić jednocześnie osiem wątków).

Każda pojedyncza aplikacja działająca w systemie operacyjnym jest albo jednowątkowa, albo wielowątkowa (traktuj każdy wątek jako „podaplikację”). Aplikacje jednowątkowe wymagają tylko jednego wątku do działania na procesorze, podczas gdy aplikacje wielowątkowe mają wiele działających wątków jednocześnie. Dodatkowe rdzenie lub hiperwątkowość umożliwiają jednoczesne uruchamianie większej liczby wątków aplikacji.

Dzięki temu aplikacje wielowątkowe ( nie jednowątkowe) działają znacznie szybciej, ponieważ więcej niż jeden wątek może działać jednocześnie na CPU.


Ostatnia uwaga: hyperthreading poprawia wydajność niektórych aplikacji wielowątkowych specjalnie dla niego zoptymalizowanych (ponieważ nadal jest tylko połowa liczby rdzeni fizycznych, ponieważ są one logiczne). W niektórych przypadkach różne aplikacje mogą działać szybciej z HyperThreading wyłączona (choć wiele aplikacji zrobić z niego korzystać). Niezależnie od hiperwątkowania wzrost liczby rdzeni fizycznych zawsze będzie korzystny dla aplikacji wielowątkowych.

Przełom
źródło
1
Czy mógłbyś wyjaśnić, jakie wątki robią dla procesora? +1 za wzmiankę o hiperwątkowaniu, ponieważ jest teraz bardzo powszechna (Wydaje się, że jest we wszystkich i3)
Simon Sheehan
Każdy proces ma co najmniej jeden wątek. Kiedy proces dostanie swoją kolejkę na procesorze, główny wątek będzie działał, dopóki jego kolejność nie wzrośnie. Proces może odrodzić inny wątek, a teraz będą uruchomione dwie części tego samego procesu z prośbą o zwrot procesora. Wszystkie procesy są programami, a dzięki temu mechanizmowi dwie rzeczy w tym samym programie mogą działać jednocześnie. Jest szybszy niż tworzenie nowego procesu (tj. Rozwidlanie lub ładowanie nowego programu), ale mniej bezpieczny. Procesy są odizolowane od siebie, wątki procesu nie są.
LawrenceC
Co się stanie, jeśli utworzyłem wielowątkowy program Java z uruchomionymi 50 współbieżnymi wątkami i uruchomię go na procesorze Intel i7-4790K, który ma 4 rdzenie i 8 wątków. Czy to oznacza, że ​​tylko 8 z tych 50 wątków w aplikacji Java faktycznie wykonuje się jednocześnie, a reszta jest w kolejce? Jak to działa
Donato
@Donato system operacyjny przerywa wszystkie działające wątki, aby dać innym czas na zakończenie pracy. W danym momencie na procesorze działa tylko 8 wątków, a każdy rdzeń stale przełącza się między różnymi wątkami; pomocne jest myślenie o nich jako o „zadaniach” (pamiętając, że zadania mogą być również traktowane priorytetowo). Każdy rdzeń wykona pewną pracę dla danego wątku, a następnie zostanie przerwany przez harmonogram zadań systemu operacyjnego, aby przejść do innego zadania, wykonać trochę pracy na tym zadaniu itd. I tak dalej, aż do zakończenia zadania.
Przełom
@Breakthrough, Re „ abyś mógł uruchomić osiem wątków jednocześnie ”, jakie są ograniczenia takiej jednoczesności w porównaniu do prawdziwej jednoczesności oferowanej przez poszczególne rzeczywiste rdzenie? Jak to możliwe, że „ aplikacje mogą działać szybciej z wyłączonym hyperthreading ”?
Pacerier,
9

„Rdzeń” reprezentuje rzeczywisty podzbiór procesora, który sam może obsłużyć przetwarzanie, natomiast „wątek” określa liczbę faktycznych procesów, które procesor może obsłużyć jednocześnie. Intel opracował technologię, którą nazywają „hiperwątkowością”. Ta technika pozwala jednemu fizycznemu rdzeniu (który normalnie byłby w stanie obsłużyć tylko jeden wątek na raz), aby mógł teraz obsługiwać dwa wątki jednocześnie.

Wątek jest zadaniem, które procesor musi wykonać, dla prostego wyjaśnienia można założyć, że każda otwierana aplikacja (np. Farba, notatnik, odtwarzacz multimedialny) ma swój własny wątek ... teraz nie oznacza to, że można tylko otworzyć 2 aplikacje na raz, po prostu dlatego, że procesor i system operacyjny działają tak szybko przy „przełączaniu wątków”, aby zaspokoić potrzeby każdej otwartej aplikacji. Po prostu uzyskasz lepszą wydajność dzięki większej liczbie rdzeni, ponieważ teraz możesz rozdzielić całą pracę na więcej rdzeni procesorów.

Na przykład mój komputer służbowy ma i7. I7 ma 4 rdzenie fizyczne, ale każdy rdzeń może wykonywać „hiperwątkowość”, co pozwala temu procesorowi obsłużyć 8 wątków jednocześnie. Więc jeśli otworzę menedżera zadań, zobaczę 8 pól dla skali wydajności procesora.

Ogólna zasada jest taka, że ​​więcej fizycznych rdzeni jest lepszych niż więcej wątków. Więc jeśli porównujesz procesory, które mają 4 rdzenie i 4 wątki, byłoby lepiej niż 2 rdzenie 4 wątki. Ale im więcej wątków może obsłużyć procesor, tym lepiej będzie działać podczas wielozadaniowości, a dla niektórych bardzo intensywnych aplikacji (edycja wideo, CAD, CAM, kompresja, szyfrowanie itp.) Będzie wykorzystywał więcej niż jeden rdzeń na raz.

CenterOrbit
źródło
Co rozumiesz przez „pudełka”?
Pacerier,
google.com/…
CenterOrbit
-1

klikanie linków w artykule w IE lub chrome ,, za każdym razem, gdy klikniesz, tworzysz wątek. im więcej klikniesz linków, tym więcej wątków. masz 4-rdzeniowy procesor, masz do 8 wątków, możesz otworzyć 8 łączy zanim zaczniesz mieć problem. bez względu na twoje połączenie internetowe. więc każdy rdzeń obejmuje dwa z tych linków (wątków), które masz otwarte. taki jest pomysł IMO. jeśli ma to jakikolwiek sens dla kogokolwiek.

Marc g.
źródło
Nie, to nie są wątki w kontekście procesorów lub zadane pytanie.
music2myear