Отже, що таке логічні ядра CPU (на відміну від фізичних ядер CPU)?


48

Я гуглився з приводу того, як я міг знайти кількість процесорів на машині, і я знайшов деякі пости, але я збентежений, як деякі згадували, що ви отримуєте логічні ядра проти фізичних ядер і т. Д.
Тож в чому різниця між логічними та фізичними ядрами є спосіб, як я міг отримати лише фізичні ядра? Або має сенс включати логічні ядра до нашого рахунку?

Відповіді:


62

Фізичні ядра - це саме те, фізичні ядра всередині процесора. Логічні ядра - це здатність одного ядра робити одночасно 2 і більше речей. Це випливало з ранньої здатності процесорів Pentium 4 робити те, що називалося Hyper Threading (HTT) .

Це була трохи гра, в яку грали, коли підрозділи ядра не використовувались для певних типів інструкцій, тоді як, можливо, виконувалась інша тривала інструкція. Тож процесор міг би фактично працювати над двома речами одночасно.

Новіші ядра є більш повноцінними процесорами, тому вони працюють над декількома речами одночасно, але вони не є справжніми процесорами, як фізичні ядра. Докладніше про обмеження функцій гіпертренінгу та фізичних можливостей ядра ви можете прочитати тут, на веб-сторінці tomshardware у цій статті під назвою: Intel Core i5 та Core i7: Основний Magnum Opus від Intel .

Ви можете бачити розбиття вашого поля за допомогою lscpuкоманди:

$ 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

У вищезазначеному моєму ноутбуці Intel i5 всього 4 "процесора"

Процесор (и): 4

з яких є 2 фізичні ядра

Ядро в розетці: 2

з яких кожен може працювати до 2-х потоків

Нитка (и) на ядро: 2

в той самий час. Ці нитки є логічними можливостями ядра.


У мене немає. lscpuЧи є альтернативний інструмент?
Джим

1
Сира інформація , яка lscpuвикористовує піддається тут: cat /proc/cpuinfo. Яка ваша ОС?
slm

1
@ThomasWeller - см мій інший A'er тут - unix.stackexchange.com/questions/113544 / ... .
slm

1
Core(s) per socketразів Thread(s) per core: 2= CPU(s): 4? Правильно?
користувач3019105

1
@ user3019105 - правильно
slm

12

Фізичні ядра - це кількість фізичних ядер, фактичних апаратних компонентів.

Логічні ядра - це кількість фізичних ядер, менших за кількість потоків, які можуть працювати на кожному ядрі за допомогою використання гіперточення.

наприклад, мій 4-ядерний процесор працює два потоки на ядро, тому у мене є 8 логічних процесорів.


Тож ця цифра має сенс лише в тому випадку, якщо ви використовуєте процесор, який підтримує гіперточення? І що це означає? Ще одна нитка буде займати кожен процесор одночасно? Отже, що означає це число?
Джим

Отже, яке число я маю на меті отримати?
Джим

необов'язково, одночасне багатопотокове записування , наприклад, дозволяє одночасно запускати дві нитки на одному ядрі. Також є ряд інших переваг.
попіл

Я дивлюся на кількість фізичних ядер.
попіл

1

Технологія Hyperthreading дозволяє одному ядру фізичного процесора поводитись як два логічні процесори.

Таким чином, одне ядро ​​процесора може виконувати два незалежні потоки одночасно .

Intel називає фізичний процесор як сокет.

Hyperthreading змушує фізичний процесор вести себе так, як у нього є два фізичних процесора, які називаються логічними процесорами. чому?

Незважаючи на те, що гіперреалізація не подвоює продуктивність системи, вона може підвищити продуктивність шляхом кращого використання непрацюючих ресурсів, що призводить до більшої пропускної здатності для певних важливих типів навантаження. Додаток, що працює на одному логічному процесорі зайнятого ядра, може очікувати трохи більше половини пропускної здатності, яку він отримує, працюючи в самоті на негіпертокованому процесорі.


Підсумок


Фізичний процесор - це те, що ми можемо бачити і впасти.

Логічний процесор - це, як, фізичне ядро, яке виступає як два фізичних ядра


Пошкоджене посилання на vmware doc.
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

Дві розетки. Кожна розетка має 14 фізичних ядер. Кожне ядро ​​має дві нитки (28/14). Загальна кількість логічних «cpus» або логічних процесорів становить 56 (саме те, що «top» та деякі інші команди показали б вам кількість «cpus»).


Мене бентежить те, що на моєму i3-3220 при вашому підході я отримую ядро ​​2 та кількість ниток 2 (= 4), але lscpu shows CPUs 4 and threads per 2 (=8) but lshw -C cpu` показує 16 логічних процесорів з номером 0 - 15
Старійшина Geek

dmidecode інтерпретує те, що є в BIOS .. не впевнений, що саме у вашому випадку не так, наприклад, у вас може бути відключена гіперреалізація в BIOS або щось подібне. lscpu і lshw - команди ОС, тож показуйте, що ядро ​​ОС розпізнало. Специфікація Intel для вашого процесора показує 2 ядра 4 потоку.
Тагар

Чи не буде вимкнено гіперточення, що призводить до меншої кількості логічних ядер, а не більше?
Старійшина Гік

Я зрозумів, що ви отримали 2 ядра 2 потоку, повідомлені dmidecode замість 2 ядер 4 потоку реальної кількості потоків / ядер, які має i3-3220. Так вона менша. І це було лише здогадкою, я не знаю, у вас насправді у BIOS відключена гіпертренінг чи ні.
Тагар

Здається, я неправильно витлумачив lscpuвихід, і насправді це 4 потоки, але "lshw -C CPU" показує 16 логічних процесорів "Я не впевнений, що з цим зробити.
Старійшина Гік
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.