CPU信息的查询方法参见本文第二部分
画重点:
大核支持超线程,小核不支持超线程,同时含有大小核的处理器不能简单地用核数乘2得到逻辑CPU的个数!!!
分析过程见 1.2 和 1.3
CPU的核心数和线程数取决于具体的品牌,模型和代数(generation)。
对于AMD芯片和Intel芯片,这两个数字都在持续增加,通常新的CPU要比老的CPU有更多的物理内核数。
CPU的概念比较容易混淆,也可以称宏观肉眼可见的CPU为处理器Processor。
我们都知道处理器(Processor)是整个系统的大脑,核数越多,线程数越多,CPU性能就越好,因为可以更快地且同时地组织和处理多项任务。
超线程(Hyper-threading)是英特尔(Intel)提出的技术,用于“欺骗”操作系统,使其认为有额外的内核。
因此,如果你的处理器是四核且支持超线程,那么你的操作系统会认为有:1个CPU,4个物理核心,8个逻辑核心。
如果不支持超线程,那么就是:1个CPU,4个物理核心,4个逻辑核心。详见下图:
注意不是所有的CPU都是每个内核两个线程,有的CPU中存在P核和E核,这意味着部分内核支持超线程,而另一部分不支持。
因此!!!
下面公式是不严谨的,没有办法解释大小核的情况,关于大小核我会在后面的章节介绍:
总核数 = 物理CPU个数 × 每颗物理CPU的核数。
总逻辑CPU数 = 物理CPU个数 ×每颗物理CPU的核数 × 超线程数
尽管此前的 Intel 桌面CPU都打着多核的旗号,但它们在很多方面是相似的。
然而,随着12th Generation Intel Alder Lake CPUs的提出,处理器有了新的特点,那就是同时拥有两种内核:性能核(Performance Cores) + 效率核(Efficient Cores),简称为P核和E核,也就是中文网站所说的大(P)小(E)核。
Alder Lake CPU的问世,意味着我们得习惯用新的方法或者说指标来区分处理器。以前的12核处理器指的是就是它有12个核,而对于12th Gen Intel CPU,这12个核可能会有(8+4)或者 8P+4E或者8C4c(C, big core, c, small core)这样的注释。
P核提供超线程,因此每个P核会有2个thread,E核只支持单线程。
而我的电脑配置是:1个物理CPU,12个核心(8 + 4),20个逻辑CPU
也即
总核数= 物理CPU个数 x ( 每颗物理CPU的P核数 + 每颗物理CPU的E核数)
12 = 1 x (8 + 4)
总逻辑CPU数 = 物理CPU个数 x ( 每颗物理CPU的P核数 x 2 + 每颗物理CPU的E核数 x 1)
20 = 1 x (8 x 2 + 4 x 1)
在Windows下,打开任务管理器,选中性能(Performance)—> 选中CPU,就可以看见CPU信息,下图所示的CPU是 Intel Core i7-4790,有4个物理核心,和8个逻辑处理器,说明该CPU支持英特尔的超线程技术。
命令:
lscpu
我的结果如下图,1个物理CPU,12个核心,20个逻辑CPU
参考:【cpu概念】物理cpu个数、核数、逻辑cpu数的概念
查看物理CPU的个数:
cat /proc/cpuinfo |grep "physical id"|sort |uniq|wc -l
查看CPU是几核:
cat /proc/cpuinfo |grep "cores"|uniq
查看逻辑CPU的个数:
cat /proc/cpuinfo |grep "processor"|wc -l
参考链接:
How Many CPU Cores & Threads Do You have? [How To Check]
P-Cores vs E-Cores & Intel’s New CPUs