文章目录
- 0. 写此篇博客的原因
- 1. 物理CPU,核,逻辑CPU概念
- 1.1 内核工作方式
- 1.2 超线程
- 1.3 什么是大小核
- 2. CPU信息的查询方法
- 2.1 Windows下查询CPU信息的方法
- 2.2 Linux下查询CPU信息的方法
- 方法一:lscpu 整体查看
- 方法二:分别查看
- 3. 参考
0. 写此篇博客的原因
- 学习多线程的时候,需要了解CPU和线程的相关概念,但是网上给出的概念让我实际操作时产生了混淆。
- 本文与其他文章不一样的点在于,解释为什么逻辑CPU数不是核数的2倍(比较新的处理器会有这种情况),能够解答非计算机专业人士的问题。
CPU信息的查询方法参见本文第二部分
画重点:
大核支持超线程,小核不支持超线程,同时含有大小核的处理器不能简单地用核数乘2得到逻辑CPU的个数!!!
分析过程见 1.2 和 1.3
1. 物理CPU,核,逻辑CPU概念
CPU的核心数和线程数取决于具体的品牌,模型和代数(generation)。
对于AMD芯片和Intel芯片,这两个数字都在持续增加,通常新的CPU要比老的CPU有更多的物理内核数。
CPU的概念比较容易混淆,也可以称宏观肉眼可见的CPU为处理器Processor。
- Processor
- 安装在主板插口(Socket)上的物理芯片,通常也称之为CPU
- CPU内核(Core)
- 是一个物理元件(也即可见可触及的实体),位于处理器(Processor)内部,用于处理繁杂的计算任务。单块CPU上能进行计算的芯片组的数量,如双核,四核等。
- CPU线程(Thread)
- 是一个虚拟元件(也即逻辑层面的,只有操作系统可见),又称为逻辑内核(逻辑处理器)(逻辑CPU),代表了你的CPU内核能够支持的线程数量,帮助CPU更高效地处理任务。如果该核支持超线程技术,那1颗内核可以当成2颗内核来发挥作用。每个线程都作为独立的CPU实例运行。
1.1 内核工作方式
下图给出了内核的工作方式:
1.2 超线程
我们都知道处理器(Processor)是整个系统的大脑,核数越多,线程数越多,CPU性能就越好,因为可以更快地且同时地组织和处理多项任务。
超线程(Hyper-threading)是英特尔(Intel)提出的技术,用于“欺骗”操作系统,使其认为有额外的内核。
因此,如果你的处理器是四核且支持超线程,那么你的操作系统会认为有:1个CPU,4个物理核心,8个逻辑核心。
如果不支持超线程,那么就是:1个CPU,4个物理核心,4个逻辑核心。详见下图:
注意不是所有的CPU都是每个内核两个线程,有的CPU中存在P核和E核,这意味着部分内核支持超线程,而另一部分不支持。
因此!!!
下面公式是不严谨的,没有办法解释大小核的情况,关于大小核我会在后面的章节介绍:
总核数 = 物理CPU个数 × 每颗物理CPU的核数。
总逻辑CPU数 = 物理CPU个数 ×每颗物理CPU的核数 × 超线程数
1.3 什么是大小核
尽管此前的 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)
2. CPU信息的查询方法
2.1 Windows下查询CPU信息的方法
在Windows下,打开任务管理器,选中性能(Performance)—> 选中CPU,就可以看见CPU信息,下图所示的CPU是 Intel Core i7-4790,有4个物理核心,和8个逻辑处理器,说明该CPU支持英特尔的超线程技术。
2.2 Linux下查询CPU信息的方法
方法一:lscpu 整体查看
命令:
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
3. 参考
参考链接:
How Many CPU Cores & Threads Do You have? [How To Check]
P-Cores vs E-Cores & Intel’s New CPUs