Dlaczego mój dwurdzeniowy procesor jest uznawany za czterordzeniowy?

52

Mój procesor to Intel Core i3-380m . Jak widać, są to 2 rdzenie i 4 wątki.

Chociaż zarówno Ubuntu 11.04, jak i Windows 7 wydają się myśleć, że to czterordzeniowy procesor:

wprowadź opis zdjęcia tutaj

wprowadź opis zdjęcia tutaj

Dlaczego to? Czy to dlatego, że są 2 wątki na rdzeń, dzieląc procesor na 4 jednostki przetwarzania?

poważne
źródło

Odpowiedzi:

43

Jak wspomniano, masz system dwurdzeniowy z 2 wątkami na rdzeń.

Jest to sprzedawane przez Intel jako hyperthreading i zostało wykonane na różne sposoby przez lata przez różnych producentów.

Aby wyjaśnić to w najprostszej formie, każdy rdzeń procesora składa się z „rdzenia” i różnych architektur wokół tego rdzenia, które przechowują informacje o stanie i procesie dla każdego wątku. Rdzeń z jednym wątkiem ma architekturę umożliwiającą przechowywanie jednocześnie informacji o stanie o wartości 1 wątku, a rdzeń z hiperwątkiem przechowuje dwa odrębne zestawy informacji o stanie, umożliwiając jednoczesne działanie dwóch oddzielnych procesów, o ile wymagają one różnych części rdzenia ( co prawdopodobnie ma miejsce, ponieważ rdzeń składa się z wielu jednostek z wielu różnych typów jednostek przetwarzania).

Aby uprościć sposób postrzegania procesora przez system, każdy nadpis jest postrzegany jako osobny procesor, dlatego dwurdzeniowy, 2-wątkowy procesor na rdzeń pojawia się jako procesor czterordzeniowy.

Możliwe jest także, że system operacyjny użyje funkcji Core-parking (funkcja w nowszych procesorach Intel), która pozwala systemowi zawiesić połowę rdzenia z wielowątkowością, tak że gdy nie jest wymagana dodatkowa zdolność do hiperwątkowania, wydajność pojedynczego wątku jest zwiększany, ponieważ rdzeń nie współdzieli już swojej pamięci podręcznej w dwóch wątkach i może teraz całkowicie poświęcić pamięć podręczną na jednym wątku.

Mokubai
źródło
Dziękuję za wyjaśnienie. Czy możemy zatem powiedzieć, że wątek jest rdzeniem, a rdzeń procesorem?
poważnedev
2
W pewnym sensie tak. System operacyjny widzi procesor, wie, ile rdzeni jest na tym procesorze, a z kolei, ile wątków obsługuje każdy rdzeń, z tego powodu, że widoczne użycie procesora jest teraz „na wątek”, a nie „na rdzeń”. To nie dość , że proste (jak każdy wątek ma rzeczywiście wydaje się non-HyperThreading świadomy OS jako pełnoprawnej rdzenia CPU), ale jest to ogólna idea niego.
Mokubai
@ Link do rdzenia parkingowego Mokubai nie działa.
Biswapriyo
49

Powodem jest hyperthreading , który obsługuje twój procesor. Hyperthreading nie jest odpowiednikiem dodatkowego procesora, ale może naprawdę zwiększyć wydajność aplikacji wielowątkowych. Dla każdego fizycznie występującego rdzenia procesora system operacyjny adresuje dwa procesory wirtualne i w miarę możliwości dzieli obciążenie między nimi.

Keltari
źródło
7
Czy jest to znane jako rdzenie fizyczne a logiczne?
xdumaine
11
Tak, fizyczny rdzeń jest - cóż ... fizyczny. Możesz go dotknąć. Rdzenie z technologią hyperthreaded nie są rzeczywiste, stąd logiczne. Możesz również podzielić rdzenie fizyczne na rdzenie logiczne poprzez wirtualizację.
Keltari,
3
@ Keltari, w rzeczywistości jest to część fizyczna ... Hyperthreading jest komponentem sprzętowym w rdzeniu procesora (i może być wyłączony tylko na poziomie sprzętowym). Szczegółowe informacje można znaleźć w białej księdze firmy Intel . Zasadniczo dzieli zasoby rdzenia między dwiema fizycznymi jednostkami wykonawczymi. Z technicznego punktu widzenia oba rdzenie widoczne w systemie operacyjnym w rdzeniu hiperwątkowym są „logiczne”, nie ma zarówno fizycznego, jak i logicznego.
Przełom
1
prawda, hiperwątkowość jest fizyczną częścią procesora, ale nie fizycznym rdzeniem.
Keltari,
1
Najlepszym sposobem myślenia o HT jest „półtora rdzenia”, który dzieli ze swoim bratem o wiele więcej zasobów niż oddzielne rdzenie. Jest jednak w stanie wykonać wątek „samodzielnie”, a system operacyjny traktuje go jako jednostkę wykonującą wątek (którą skojarzono z rdzeniem).
crasic
12

Rzeczy są o wiele bardziej skomplikowane niż w czasach, gdy jedna instrukcja procesora na jeden cykl zegara.

Dla każdej instrukcji istnieje teraz potok składający się z kilku kroków. Słyszałem aż 41, choć to było dawno temu i nie mam pojęcia, jak wyglądają obecne potoki procesorów. Wiem, że jeśli potok jest wystarczająco długi, możesz rozpocząć nową instrukcję w dół potoku przed zakończeniem ostatniej instrukcji, czasami w tym samym cyklu zegarowym, tak aby twój pojedynczy rdzeń skutecznie wykonywał dwie rzeczy naraz.

Jest jednak sztuczka. Nie można tego użyć do przyspieszenia tempa, w jakim procesor żuje instrukcje z określonego programu. W grę wchodzi problem poprawności: kolejna instrukcja może zależeć od dotychczas nieokreślonego wyniku poprzedniej instrukcji. Aby skorzystać z długiego rurociągu bezpiecznie , chip zaprezentuje dwa oddzielne rdzenie procesora do planującego system operacyjny i alternatywne instrukcje wysłane do każdego rdzenia tak, że dwie instrukcje do tego samego „rdzenia” nigdy nie są w rurociągu w tym samym czasie. W ten sposób możemy być pewni, że wszelkie instrukcje wykonywane jednocześnie nie będą ze sobą kolidować. Nazywa się to hyperthreading .

Warto tutaj zauważyć, że chociaż hyperthreading może znacznie zwiększyć ilość pracy, jaką dostajesz z procesora, nie jest tak dobry jak posiadanie tak dużej liczby rdzeni fizycznych. W zależności od obciążenia pracą może to oznaczać jedynie 15% poprawę lub nawet 40% poprawę. W niektórych okolicznościach możesz nawet chcieć wyłączyć tę funkcję, aby pozostałe rdzenie miały pełny wyłączny dostęp do pamięci podręcznej L1 / L2 dla tego rdzenia (czasami dzieje się tak w przypadku dedykowanych serwerów baz danych).

Gdy twój układ reklamuje się jako mający 2 rdzenie z 4 wątkami, oznacza to, że jest to dwurdzeniowy procesor, który obsługuje hyperthreading.

Joel Coehoorn
źródło
2

Spójrz na tę stronę wywiadowczą - zawiera wiele animacji pokazujących, jak hyperthreading przyspiesza twoje zadania.

To Utilization of Processor Resourcesnajlepsza animacja, spójrz na nią i kliknij przycisk „postęp”.

woliveirajr
źródło
1

Dlaczego to? Czy to dlatego, że są 2 wątki na rdzeń, dzieląc procesor na 4 jednostki przetwarzania?

Mówiąc prościej, odpowiedź brzmi tak. Każdy rdzeń procesora może obsługiwać dwa niezależne wątki, więc łącznie 4. Ale to nie znaczy, że ma taką samą wydajność jak czterordzeniowe procesory jednowątkowe. praktycznie wydajność dwurdzeniowego procesora dwurdzeniowego jest niższa niż wydajność czterordzeniowego procesora jednordzeniowego. Jak AMD Phenom X4.

aminfar
źródło
Wiesz dlaczego?
poważnedev
1
Powodem jest to, że w dwurdzeniowym rdzeniu zasoby sprzętowe (takie jak bufor zmiany kolejności) są współużytkowane przez dwa wątki, podczas gdy w procesorze jednowątkowym wszystkie zasoby są przeznaczone na jeden rdzeń. Warto wspomnieć, że posiadanie rdzenia z mulczem zwiększa wykorzystanie sprzętu i przepustowość, ale niekorzystnie wpływa na opóźnienia. W grę wchodzi wiele kompromisów. Zatem słowo „wydajność” jest tutaj bardzo niejasne. Dla zwykłych ludzi oznacza to opóźnienie pojedynczego wątku.
aminfar