CPU之单核、多核、超线程及配置

0    124    1

Tags:

👉 本文共约4974个字,系统预计阅读时间或需19分钟。

图片

在计算机的早期,Intel奔腾处理器时代,他们的主板上的单个处理器CPU是相当大的。为了提升计算机的整体运算处理能力,一般是在主板上安装更多这样的处理器,这样就可以轻松突破晶体管限制。

物理CPU

物理CPU,是硬件上的CPU, 也是主板上CPU的插槽个数,是计算机上实际配置的CPU个数

我们在linux下可以通过指令 cat /proc/cpuinfo | grep 'physical id'| sort| uniq |wc -l 来查看我们计算机的物理CPU个数图片

在windows下,我们可以在cmd命令中输入systeminfo,查看CPU个数图片

物理CPU通过连接器或插槽与其他主板元件通信,通过系统总线完成与系统的不同处理器之间的通信,但是系统总线的传输速度比起CPU的速度来说,是非常慢的通常导致出现瓶颈,使得无法充分利用每个CPU提供的计算能力。所以工程师想 能不能让处理器中的核心组件小型化,并将它们封装在单个芯片中,这些就是物理内核,可以看作是计算单元

CPU核数

CPU核数,物理上真实的cpu核,有独立的电路元件以及L1,L2缓存,可以独立地执行指令。通常每个CPU下的核数都是固定的,如果我们的计算机有两个物理CPU,每个CPU是双核的,那么计算机总共就是四核的

在linux下,我们可以通过指令cat /proc/cpuinfo | grep "cpu cores" | wc -l来统计CPU核数。图片

在windows下,可以通过任务管理器查看:图片

我们分别看下,单核CPU和多核CPU的架构图:

图片

图片

  1. 多个物理CPU,CPU通过系统总线进行通信,效率比较低。
  2. 多核CPU,不同的核通过L3 cache和内部总线进行通信,主存和外设通过总线与CPU通信

为了弥补 CPU 与内存两者之间的性能差异,就在 CPU 内部引入了 CPU Cache,也称高速缓存CPU Cache用的是 SRAM(Static Random-Access Memory)的芯片,也叫静态随机存储器。其只要有电,数据就可以保持存在,而一旦断电,数据就会丢失。

CPU Cache 通常分为大小不等的三级缓存,分别是 L1 CacheL2 CacheL3 Cache

部件CPU访问所需时间备注
L1 高速缓存2~4 个时钟周期每个 CPU 核心都有一块属于自己的 L1 高速缓存,L1 高速缓存通常分成指令缓存数据缓存
L2 高速缓存10~20 个时钟周期L2 高速缓存同样是每个 CPU 核心都有的
L3 高速缓存20~60个时钟周期L3 高速缓存是多个 CPU 核心共用

我们可以发现越靠近 CPU 核心的缓存其访问速度越快,容量也越来越小缓存读取数据过程。就像数据库缓存一样,首先在最快的缓存中找数据,如果缓存没有命中(Cache miss) 则往下一级找, 直到三级缓存都找不到时,最后会去内存找数据。

逻辑CPU

在历史上,为了提升CPU的性能,引入超标量、乱序运行、大量的寄存器及寄存器重命名、多指令解码器、预测运行、高速缓存等特性,这些特性从而让CPU拥有大量资源,并且CPU还能智能的预测执行指令。这就导致实际上CPU在大多数时间上,其资源是被闲置的,浪费是可耻的,为了进一步压榨CPU的性能,工程师发现,完全可以通过复制一些CPU内部组件,例如寄存器或一级缓存,来运行第二个线程,让这些闲置资源运行在另一个线程上。虽然只有一个物理CPU,但操作系统被提供了两个"逻辑CPU" ,而不是单个CPU,这样就成功使得操作系统被"欺骗"了。

逻辑CPU是什么?

操作系统可以使用逻辑CPU来模拟出真实CPU的效果。在从前没有多核处理器的时候,一个物理CPU只有一个物理内核,而现在有了多核技术,让物理核通过高速运算,让应用程序以为有两个CPU在运算,这样就可以把一个物理CPU当作多个"CPU"使用,即逻辑CPU

一般情况下,逻辑CPU=物理CPU个数*每颗核数,如果我们的电脑CPU支持超线程技术且开启的话,逻辑CPU的个数是核数的2倍逻辑CPU=物理CPU个数*每颗核数*2,超线程技术可以使得 处理器中的1 颗内核在操作系统中,如同2 颗内核那样发挥作用。

CPU的线程数?

还有一个我们需要知道:逻辑处理器个数 = CPU的线程数,也就是说有多少个逻辑处理器,就可以开多少个线程。对于一个CPU,线程数总是大于或等于核心数的。一个核心最少对应一个线程,但通过超线程技术,一个核心可以对应两个线程,也就是说它可以同时运行两个线程。

一般来说,物理CPU个数×每颗核数应该等于逻辑CPU的个数,如果不相等的话,则表示windows电脑的CPU支持超线程技术

超线程技术

CPU的线程数概念仅仅只针对Intel的CPU , 对于AMD的CPU来说,只有核心数的概念,没有线程数的概念。因为其是通过Intel超线程技术来实现的,Intel早在2002年推出的Northwood奔腾4 HT处理器就把这一技术带入到消费级市场。

超线程技术(SMT),就是可以把一个物理线程模拟出两个线程来使用,使得单个核心用起来像两个核一样,以充分发挥CPU的性能。

我们需要先了解一下,线程和进程的概念

  1. 进程:

进程可以看作是程序的一次执行过程。一个程序的运行需要CPU时间、内存空间、文件以及I/O等资源。操作系统就是以进程为单位来分配这些资源的,所以说进程是操作系统中资源分配的基本单位进程之间的资源是独立隔离的,能很好的进行资源管理和保护。

本人提供Oracle(OCP、OCM)、MySQL(OCP)、PostgreSQL(PGCA、PGCE、PGCM)等数据库的培训和考证业务,私聊QQ646634621或微信dbaup66,谢谢!
AiDBA后续精彩内容已被站长无情隐藏,请输入验证码解锁本文!
验证码:
获取验证码: 请先关注本站微信公众号,然后回复“验证码”,获取验证码。在微信里搜索“AiDBA”或者“dbaup6”或者微信扫描右侧二维码都可以关注本站微信公众号。

标签:

Avatar photo

小麦苗

学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

您可能还喜欢...

发表回复