Czym więc są logiczne rdzenie procesora (w przeciwieństwie do fizycznych rdzeni procesora)?

48

Googlowałem, w jaki sposób mogę znaleźć liczbę procesorów w maszynie i znalazłem kilka postów, ale jestem zdezorientowany, ponieważ niektórzy wspomnieli, że masz rdzenie logiczne vs. rdzenie fizyczne itp.
Więc jaka jest różnica między rdzeniami logicznymi i fizycznymi i jest jest sposób, w jaki mógłbym uzyskać tylko rdzenie fizyczne? Czy może warto uwzględniać rdzenie logiczne w naszych obliczeniach?

Jim
źródło

Odpowiedzi:

62

Rdzenie fizyczne to po prostu rdzenie fizyczne w procesorze. Rdzenie logiczne to zdolności jednego rdzenia do robienia 2 lub więcej rzeczy jednocześnie. Wynikało to z wczesnej zdolności procesorów Pentium 4 do robienia tego, co nazywano Hyper Threading (HTT) .

To była gra, w którą grało się, w której podskładniki rdzenia nie były używane do niektórych rodzajów instrukcji, podczas gdy mogła być wykonywana inna długo działająca instrukcja. Tak więc procesor może w efekcie pracować nad 2 rzeczami jednocześnie.

Nowsze rdzenie są pełnoprawnymi procesorami, więc pracują nad wieloma rzeczami jednocześnie, ale nie są to prawdziwe procesory, jak rdzenie fizyczne. Możesz przeczytać więcej o ograniczeniach funkcji hiperwątkowania w porównaniu do fizycznych możliwości rdzenia tutaj na tomshardware w tym artykule zatytułowanym: Intel Core i5 i Core i7: Intelstream Magnum Opus .

Możesz zobaczyć rozkład swojego urządzenia za pomocą lscpupolecenia:

$ lscpu
Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
CPU(s):                4
Thread(s) per core:    2
Core(s) per socket:    2
CPU socket(s):         1
NUMA node(s):          1
Vendor ID:             GenuineIntel
CPU family:            6
Model:                 37
Stepping:              5
CPU MHz:               2667.000
Virtualization:        VT-x
L1d cache:             32K
L1i cache:             32K
L2 cache:              256K
L3 cache:              3072K
NUMA node0 CPU(s):     0-3

Powyżej mój laptop Intel i5 ma w sumie 4 „Procesory”

Procesory: 4

z tego są 2 rdzenie fizyczne

Rdzeń na gniazdo: 2

z których każdy może mieć do 2 wątków

Gwint (y) na rdzeń: 2

w tym samym czasie. Te wątki stanowią logiczne możliwości rdzenia.

slm
źródło
Nie mam. lscpuCzy istnieje jakieś alternatywne narzędzie?
Jim
1
Surowa informacji, które lscpuwykorzystuje narażony jest tutaj: cat /proc/cpuinfo. Jaki masz system operacyjny?
slm
1
@ThomasWeller - zobacz mój inny A'er tutaj - unix.stackexchange.com/questions/113544/… .
slm
1
Core(s) per socketrazy Thread(s) per core: 2= CPU(s): 4? Poprawny?
user3019105
1
@ user3019105 - poprawnie
slm
12

Rdzenie fizyczne to liczba rdzeni fizycznych, rzeczywiste elementy sprzętowe.

Rdzenie logiczne to liczba rdzeni fizycznych pomnożona przez liczbę wątków, które można uruchomić na każdym rdzeniu za pomocą hiperwątkowania.

na przykład mój 4-rdzeniowy procesor uruchamia dwa wątki na rdzeń, więc mam 8 procesorów logicznych.

popiół
źródło
Więc ta liczba ma sens tylko wtedy, gdy używasz procesora obsługującego hyperthreading? A co to znaczy? Wciąż jeden wątek będzie zajmował każdą jednostkę centralną naraz? Co więc oznacza ta liczba?
Jim
Więc jaki numer powinienem uzyskać?
Jim
niekoniecznie jednoczesne wielowątkowość , na przykład, pozwala na uruchomienie dwóch wątków jednocześnie na jednym rdzeniu. Istnieje również wiele innych zalet.
popiół
Patrzę na liczbę rdzeni fizycznych.
popiół
1

Technologia Hyperthreading pozwala jednemu fizycznemu rdzeniu procesora zachowywać się jak dwa logiczne procesory.

Tak więc pojedynczy rdzeń procesora może wykonywać dwa niezależne wątki jednocześnie .

Intel określa fizyczny procesor jako gniazdo.

Hyperthreading sprawia, że ​​procesor fizyczny zachowuje się tak, jakby miał dwa procesory fizyczne, zwane procesorem logicznym. dlaczego?

Podczas gdy 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.


Podsumowanie


Procesor fizyczny jest tym, co możemy zobaczyć i upaść.

Procesor logiczny przypomina rdzeń fizyczny działający jako dwa rdzenie fizyczne

Johnny Blaze
źródło
Usunięto link do dokumentu vmware.
slm
0
$ sudo dmidecode |egrep "Socket Designation: Proc|((Thread|Core) Count)"
Socket Designation: Proc 1
        Core Count: 14
        Thread Count: 28
Socket Designation: Proc 2
        Core Count: 14
        Thread Count: 28

Dwa gniazda Każde gniazdo ma 14 rdzeni fizycznych. Każdy rdzeń ma dwa wątki (28/14). Całkowita liczba logicznych „cpus” lub logicznych jednostek przetwarzania wynosi 56 (to jest to, co „top”, a niektóre inne polecenia pokazałyby cię jako liczbę „cpus”).

Tagar
źródło
Co mnie zaskakuje, to że na moim i3-3220 z twoim podejściem dostaję liczbę rdzeni 2 i liczbę wątków 2 (= 4), ale lscpu shows CPUs 4 and threads per 2 (=8) but lshw -C procesor pokazuje 16 logicznych procesorów o numerach 0-15
Starszy Geek
dmidecode interpretuje to, co jest w BIOS-ie .. nie jestem pewien, co jest nie tak w twoim przypadku, np. możesz mieć wyłączony hyperthreading w BIOS-ie lub coś takiego. lscpu i lshw są poleceniami systemu operacyjnego, więc pokazują, jakie jądro systemu operacyjnego rozpoznało. Specyfikacja Intel dla twojego procesora pokazuje 2 rdzenie 4 wątki.
Tagar
Czy wyłączenie hiperwątkowania nie spowodowałoby mniejszej liczby rdzeni logicznych niż więcej?
Elder Geek
Zrozumiałem, że masz 2 rdzenie 2 wątki zgłoszone przez dmidecode zamiast 2 rdzeni 4 wątków rzeczywista liczba wątków / rdzeni i3-3220. Więc jest mniejszy. I to tylko przypuszczenie, nie wiem, czy w BIOS-ie masz wyłączone hiperwątkowanie, czy nie.
Tagar
Wygląda na to, że źle zinterpretowałem lscpudane wyjściowe i to w sumie 4 wątki, ale „lshw -C cpu” pokazuje 16 logicznych procesorów ”. Nie jestem pewien, co z tym zrobić.
Starszy Geek