嘘,你已经中了幻术~
当我们在看技术文档时,经常会发现很多有关cpu的术语,比如cpu、cpu socket、cpu core、hyper-threading等,乱乱的分不清楚,这篇文章我带大家用三分钟时间,快速的过一遍各种术语代表什么,以及它们之间的关系。
0x00 CPU
cpu全称是central processing unit,中文又叫中央处理器,是用来执行我们的代码,处理各种逻辑的地方,它可以被称之为计算机的大脑。
现在cpu的概念已经比较宽泛了,在不同的语境下通常表示不同的意思,不过如果我们没有指定语境,通常cpu就是指这个:
0x01 CPU socket
如果我们自己组装过电脑的话,应该知道cpu是通过一个插槽安装在主板上的,这个插槽就叫做 cpu socket,它长这个样子:
0x02 Core
core的中文意思是核心,它就是我们平时说的,一个cpu中有几核的核的概念。
其实在很久之前是没有core的概念的,一个cpu就是一个完整的物理处理单元,之后由于多核技术的发展,cpu的概念转变为了一个容器,而core则变成了真正的物理处理单元。
一个cpu中可以有多个core,各个core之间是相互独立,且可以并行执行逻辑的,每个core都有自己单独的寄存器,l1, l2 缓存等物理硬件。
0x03 Thread
由于cpu的执行速度非常快,而其他部件相对来说又比较慢,所以cpu经常会处于空闲状态,为了充分利用cpu资源,intel又在core的基础上提出了hyper-threading概念,即一个core里可以模拟多个逻辑核,这个就叫做thread。
与core不同是,thread并不是一个物理概念,而是一个软件概念,它本质上就是利用core的空闲时间,来执行其他代码,所以thread其实只能算是并发,而不能算是并行。
thread和以上术语的关系是:
0x04 vCPU
在我们购买云服务器的时候,经常会遇到一个概念叫vCPU,比如下面这样:
这里的vCPU其实就是指的虚拟核,也就是上面的thread。
0x05 实践
在linux下,我们可以通过以下命令来查看当前机器的cpu拓扑结构:
由上可见,该机器的主板上有一个cpu插槽(socket),这个插槽上的cpu有2核(core),且每核上又有2个线程(thread),也就是说,这个机器是2核4线程的。
上图中thread总数是用cpu来表示的,这也是为什么上文说,cpu是个比较宽泛的概念,在不同的语境下有不同的定义,这里表示的就是逻辑核,也就是thread。
如果我们只想查看该机器上有几个逻辑核,不想看其他数据的话,也可以用下面的命令:
其实在cpu的拓扑结构中,并不只有上面的几个概念,还有很多其他术语,只不过是我们比较少看到。
这些术语可以通过lscpu的man文档查看:
好,就这些,希望对你有所帮助。
方便的话也帮忙转发下,或点个赞,谢谢。
本文分享自 Linux内核及JVM底层相关技术研究 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!