20

三分钟速览cpu,socket,core,thread等术语之间的关系

 3 years ago
source link: https://mp.weixin.qq.com/s?__biz=MjM5ODEzNDA4OA%3D%3D&%3Bmid=2650317610&%3Bidx=1&%3Bsn=14b3438b3896b97b797a4d479c486b0c
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

7nEJ7rM.jpg!mobile

嘘,你已经中了幻术~

当我们在看技术文档时,经常会发现很多有关cpu的术语,比如cpu、cpu socket、cpu core、hyper-threading等,乱乱的分不清楚,这篇文章我带大家用三分钟时间,快速的过一遍各种术语代表什么,以及它们之间的关系。

0x00 CPU

cpu全称是central processing unit,中文又叫中央处理器,是用来执行我们的代码,处理各种逻辑的地方,它可以被称之为计算机的大脑。

现在cpu的概念已经比较宽泛了,在不同的语境下通常表示不同的意思,不过如果我们没有指定语境,通常cpu就是指这个:

VnQvEjI.jpg!mobile

0x01 CPU socket

如果我们自己组装过电脑的话,应该知道cpu是通过一个插槽安装在主板上的,这个插槽就叫做 cpu socket,它长这个样子:

FFNjueY.jpg!mobile

0x02 Core

core的中文意思是核心,它就是我们平时说的,一个cpu中有几核的核的概念。

其实在很久之前是没有core的概念的,一个cpu就是一个完整的物理处理单元,之后由于多核技术的发展,cpu的概念转变为了一个容器,而core则变成了真正的物理处理单元。

一个cpu中可以有多个core,各个core之间是相互独立,且可以并行执行逻辑的,每个core都有自己单独的寄存器,l1, l2 缓存等物理硬件。

VfmqUz3.jpg!mobile

0x03 Thread

由于cpu的执行速度非常快,而其他部件相对来说又比较慢,所以cpu经常会处于空闲状态,为了充分利用cpu资源,intel又在core的基础上提出了hyper-threading概念,即一个core里可以模拟多个逻辑核,这个就叫做thread。

与core不同是,thread并不是一个物理概念,而是一个软件概念,它本质上就是利用core的空闲时间,来执行其他代码,所以thread其实只能算是并发,而不能算是并行。

thread和以上术语的关系是:

EZbqyez.jpg!mobile

0x04 vCPU

在我们购买云服务器的时候,经常会遇到一个概念叫vCPU,比如下面这样:

ArIbYfA.png!mobile

这里的vCPU其实就是指的虚拟核,也就是上面的thread。

0x05 实践

在linux下,我们可以通过以下命令来查看当前机器的cpu拓扑结构:

6RRJzmZ.png!mobile

由上可见,该机器的主板上有一个cpu插槽(socket),这个插槽上的cpu有2核(core),且每核上又有2个线程(thread),也就是说,这个机器是2核4线程的。

上图中thread总数是用cpu来表示的,这也是为什么上文说,cpu是个比较宽泛的概念,在不同的语境下有不同的定义,这里表示的就是逻辑核,也就是thread。

如果我们只想查看该机器上有几个逻辑核,不想看其他数据的话,也可以用下面的命令:

NZRbmy.png!mobile

其实在cpu的拓扑结构中,并不只有上面的几个概念,还有很多其他术语,只不过是我们比较少看到。

这些术语可以通过lscpu的man文档查看:

yQfQvmY.png!mobile

好,就这些,希望对你有所帮助。

方便的话也帮忙转发下,或点个赞,谢谢。

QQ群号: 763628645

QQ群二维码如下, 添加请注明:姓名+地区+职位,否则不予通过

qIZJNzj.jpg!mobile


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK