Количество ядер процессора кажется неправильным

14

введите описание изображения здесь

Как показывает изображение, количество процессоров 4.

Но у Intel i5-4210U всего 2 ядра, как показано ниже. (Собственные спецификации Intel.)

введите описание изображения здесь

Итак, если у i5-4210U всего 2 ядра, то что означает «4» на первом рисунке?

lscpu дает такой результат:

Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                4
On-line CPU(s) list:   0-3
Thread(s) per core:    2
Core(s) per socket:    2
Socket(s):             1
NUMA node(s):          1
Vendor ID:             GenuineIntel
CPU family:            6
Model:                 69
Stepping:              1
CPU MHz:               989.531
BogoMIPS:              4788.74
Virtualization:        VT-x
L1d cache:             32K
L1i cache:             32K
L2 cache:              256K
L3 cache:              3072K
NUMA node0 CPU(s):     0-3
foxtrot9
источник
10
Потому что у него есть Hyperthreading , что означает, что ЦП представляет четыре ядра ОС, а не только два физических, для повышения производительности. (« Количество потоков » из спецификации - это то, что показывает информация о процессоре в Ubuntu)
JonasCz - Восстановить Монику
3
Другой способ выяснить это состоит в том, чтобы делать lscpuи смотреть CPU(s), Thread(s) per coreи Core(s) per socketи Socket(s).
Edwinksl
@edwinksl, добавлен результат lscpu.
foxtrot9
2
Таким образом, у вас есть 4 «CPU», то есть логические ядра, 2 потока на физическое ядро ​​(это часть с гиперпоточностью), 2 физических ядра на сокет и 1 сокет. 4 = 2 * 2 * 1.
Edwinksl
Вы не слышали гиперпоточность, существующую со времен Pentium 4?
phuclv

Ответы:

31

Ваш процессор имеет только 2 ядра, но поддерживает 4 одновременных потока .

Это достигается с помощью технологии Intel Hyper-Threading, которая позволяет одновременно запускать два отдельных потока на одном ядре.

Таким образом, 2 ядра x 2 потока на ядро ​​означают 4 потока на процессор.

Byte Commander
источник
1
Я немного знаю о потоках, поэтому мне любопытно, как этого можно достичь на аппаратном уровне? Я имею в виду 2 потока на процессор?
foxtrot9
7
Я не могу начать объяснять всю концепцию гиперпоточности здесь, это взорвет ответ. Вместо этого я хотел бы предложить вам прочитать соответствующую статью в Википедии или наполнить вашу любимую поисковую систему «гиперпоточностью».
Byte Commander
6
Вкратце, мы можем сказать, что ядро ​​с поддержкой гиперпоточности имеет дублированные элементы (архитектурное состояние, то есть регистры и т. Д.), В то время как другие (механизм выполнения, кеш) используются совместно.
Byte Commander
5
@ foxtrot9 в основном, один поток выполнения обычно не использует где-то около 100% ядра ЦП - ЦП тратит время на ожидание загрузки данных из памяти, и любая заданная инструкция не использует все маленькие цепочки (выполнение единиц) в основном, которые делают разные вещи. HT позволяет двум потокам выполнения совместно использовать ядро, поэтому один может работать, пока другой ожидает, или они оба могут работать, если они используют непересекающиеся наборы исполнительных блоков. Но поскольку двум потокам приходится совместно использовать ресурсы, иногда один останавливает работу другого, поэтому он не так быстр, как два целых ядра.
Хоббс
@hobbs Подробное, но простое объяснение, отлично! Спасибо за этот информативный комментарий :)
Byte Commander
3

Как вы можете видеть на изображении, которое вы предоставили Intel, количество потоков равно 4.

Так что я бы сказал, что Ubuntu показывает количество потоков, а не ядер

Нико Т
источник
1

В процессоре Intel i5-4210 есть 2 физических ядра, которые далее делятся на 2 логических ядра; Эти логические ядра достигаются с помощью технологии Intel Hyper Threading. Таким образом, в общей сложности 4 ядра, как показано на рис. Эта информация также дана на другой картинке.

Moksh
источник
Я не знаю, почему люди опровергают ваш ответ, то, что вы сказали, правда.
Виртуальная аномалия
Люди тупые, я не против.
Мокш,
В подтверждение этого ответа Википедия говорит: «Для каждого физического ядра процессора операционная система обращается к двум виртуальным (логическим) ядрам».
Виртуальная аномалия
Thnx @lightswitchr
Moksh
1
Я думаю, что люди голосуют против, потому что вы сказали, что есть два физических ядра и два логических ядра. Это не так, каждое физическое ядро ​​разделено на два логических ядра, поэтому существует четыре логических ядра (по два на каждом физическом ядре).
Runemoro