CPU相关概念:物理cpu数、核数、逻辑cpu数,12核20线程实例分析

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

猜你喜欢

转载自blog.csdn.net/weixin_45910027/article/details/130526456