CPU 核心数似乎不正确

fox*_*ot9 15 cpu

在此处输入图片说明

如图所示,处理器数量为 4。

但是 intel i5-4210U 只有 2 个内核,如下所示。(英特尔自己的规格。)

在此处输入图片说明

那么,如果 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
Run Code Online (Sandbox Code Playgroud)

Byt*_*der 32

您的 CPU 只有 2 个内核,但支持4 个并发线程

这是通过英特尔的超线程技术实现的,该技术允许在一个内核上同时并行运行两个单独的线程。

所以 2 个内核 x 每个内核 2 个线程意味着每个 CPU 4 个线程。

  • 我真的不能在这里开始解释超线程背后的整个概念,这会破坏答案。相反,我建议您阅读相应的 [维基百科文章](https://en.wikipedia.org/wiki/Hyper-threading) 或使用“超线程”为您最喜欢的搜索引擎提供信息。 (7认同)
  • 简而言之,我们可以说一个具有超线程能力的内核有一些元素(架构状态,即寄存器等)是重复的,而其他元素(执行引擎、缓存)是共享的。 (6认同)
  • @foxtrot9 基本上,单个执行线程通常不会使用接近 100% 的 CPU 内核——CPU 花时间等待数据从内存加载,并且任何给定的指令都不会使用所有的小电路(执行单位)在做各种事情的核心。HT 允许两个执行线程共享核心,因此一个可以在另一个等待时运行,或者如果它们使用不相交的执行单元集,则它们都可以运行。但是因为两个线程要共享资源,有时一个会阻止另一个运行,所以速度不如2个全核。 (5认同)