0%

CPU

一、CPU基本概念

CPU(Central Processing Unit):中央处理器,简称“处理器”,是一块超大规模的集成电路,是一台计算机的控制和运算中心。

二、CPU架构

基本概念:

  • CPU:处理器
  • CPU Core:处理器核心
  • CU(Control Unit):控制单元
  • FPU(Floating Point Unit):浮点运算单元
  • ALU(Arithmetic Logic Unit):算术逻辑单元
  • Register:寄存器
  • CPU Cache:高速缓存,包括L1 Cache,L2 Cache和L3 Cache
  • SMT(Simultaneous multithreading):同步多线程技术
  • HT(Hyper-Threading):超线程技术,Intel的SMT落地方案

CPU架构跟制作厂商、具体系列、具体型号等因素有关:

  • AMD CPU架构跟Intel CPU架构一般不同
  • Intel的较老CPU架构是“单CPU,单CPU Core”;较现代CPU架构是“多CPU,多CPU Core”
  • 较老的CPU不含有FPU,而是通过“ALU+软件”实现浮点运算
  • 较老CPU架构中是“多CPU Core共享所在CPU的L2 Cache”;较现代CPU架构中是“多CPU Core共享所在CPU的L3 Cache”

2.1、最经典的CPU架构

CPU上只有一个CPU Core,该CPU(CPU Core)有:

  • 一个CU
  • 一个ALU
  • 一个FPU
  • 一整套Register
  • L1、L2、L3 Cache

2.2、现代CPU架构

首先介绍并行和并发概念,基于线程(当然也可基于CPU指令,线程所执行程序最终会被编译/解释成CPU指令,两者完全等价)进行叙述:

  • 并行:线程A和B逻辑和物理上都同时执行,一般认为调度在不同CPU或者CPU Core上的两个线程逻辑和物理上同时执行,但是须知,并没有纯粹意义上的物理同时执行,比如“不同CPU共享总线等资源”,“同一CPU上不同CPU Core共享所在CPU的CU、L3 Cache、总线等资源”
  • 并发:线程A和B逻辑上同时执行,物理上可同时执行,也可轮流执行(常见的是CPU时间分片方案)

后续如无特别说明,基于并发进行说明。

为提升CPU架构并发性,现代CPU架构演进方向为“多CPU,单CPU上多CPU Core,CPU Core引入SMT技术”,代价是须引入复杂的硬件设计应对随之而来的调度问题,故需要综合权衡考量。
理论上,当其他条件相近时,共享物理资源越少,并发能力越强,故对于以下3种方案,并发能力排序为:多CPU > 多CPU Core > CPU Core引入SMT技术

  • 多CPU:共享物理资源最少,有“总线”等
  • 多CPU Core:共享物理资源次少,有“CU”,“L3 Cache”,“总线”等
  • CPU Core引入SMT技术:共享物理资源最多,几乎可以认为是全部,有“CU”,“ALU”,“FPU”,“一整套Register”,“L1、L2、L3 Cache”,“总线”等

2.2.1、多CPU和多CPU Core

有M(M>1)个CPU,单CPU上有N个(N>1)CPU Core。

CPU Core有:

  • 一个ALU
  • 一个FPU
  • 一整套Register
  • L1、L2 Cache

CPU有:

  • N个CPU Core
  • 一个CU(被其上的N个CPU Core共享。准确来说,此时的CU是一个层次结构,CPU Core中是子CU,CPU中是主CU
  • L3 Cache(被其上的N个CPU Core共享)

2.2.2、同步多线程技术

同步多线程技术:英文名为“Simultaneous multithreading”,简称“SMT”,其具体描述如下:

一个线程A,分配到CPU Core C0的时间分片,在该时间分片的某个时钟周期,C0正在执行A所执行程序对应指令序列中的指令I0,此时C0内物理资源很大可能未被充分利用(比如“正在使用ALU,未使用FPU”,“正在使用CU,未使用ALU”),为充分榨干C0硬件性能,设计引入特殊硬件机制,使得在该时间分片内可同时加载P个线程所执行程序的指令序列,即相当于虚拟出了P个逻辑CPU Core,称之为P路SMT(Intel的实现方案称为“Hyper-Threading”,简称“HT”,默认都是2路SMT)。

以上提及的“特殊硬件机制”,存在多种方案:

  • ILP(Instruction-Level Parallelism)技术。如果两条指令既不互相依赖,又支持同时执行,那么可并行执行,在一个CPU时间分片内,同时加载P个线程所执行程序的指令序列,最大程度并行执行可同时执行的指令对,相当于虚拟出了P个逻辑CPU Core
  • Intel使用自己的硬件方案(具体的硬件方案描述,笔者不甚清晰),默认是将一个CPU Core虚拟成2个逻辑CPU Core,即2路SMT

[备注] 相较于“P个CPU”和“P个CPU Core”,P路SMT中的P最名不符实,因为其共享最多物理资源,因竞争资源而导致其余P-1个线程等待的概率最大。

三、CPU核心参数

在“二、CPU架构”中,我们知道,现代CPU架构下存在“物理CPU -> 物理CPU Core -> 逻辑CPU Core”3个CPU相关概念层次,相应的,CPU的含义也得到了泛化,可能指代“处理器这个广义的概念客体”或者“物理CPU”或者“物理CPU Core”或者“逻辑CPU Core”。

故理清概念如下,后续如无特别说明,基于此进行叙述。

  • 物理CPU
  • 物理CPU Core
  • 逻辑CPU Core

另外特别值得说明的是,对应于“物理CPU -> 物理CPU Core -> 逻辑CPU Core”层级关系,存在CPU参数层级关系,具体是:

  1. 某层的CPU参数,或者来自于继承,或者只属于本层,比如“逻辑CPU Core的逻辑编号只属于本层”,“逻辑CPU Core的主频继承自所在物理CPU Core”,“逻辑CPU Core的L1和L2 Cache继承自所在物理CPU Core,L3 Cache继承自所在物理CPU”
  2. 有时候难以明确逻辑CPU Core的某个参数是继承自所在物理CPU Core还是所在物理CPU,因为这跟具体的CPU架构有关

3.1、CPU相关数量

CPU相关数量有:

  • 物理CPU数量
  • 物理CPU Core数量 = ∑ 物理CPUi上物理CPU Core数量
  • 逻辑CPU Core数量 = ∑ 物理CPUi上逻辑CPU Core数量
  • CPU数量,一般说CPU数量指的就是逻辑CPU Core数量

1、一个例子
一个示例CPU架构描述如下表。

物理CPU编号 物理CPU上物理CPU Core数量 是否开启SMT
CPU1 2 是,开启2-SMT
CPU2 4
CPU3 2

物理CPU数量 = 3
物理CPU Core数量 = 2 + 4 + 2
逻辑CPU Core数量 = 2 * 2 + 4 + 2

[备注] 一般情况下,在一个“多物理CPU,物理CPU上多物理CPU Core”的CPU架构中,物理CPU上的物理CPU Core数量全局一致,是否开启SMT也是全局一致。

3.2、主频

主频是指CPU运算时的工作频率,其倒数指的是时钟周期。通常CPU完成一条指令的执行需要多个操作——“取指、译码、执行”。每个操作可能需要若干个时钟周期。故指令完成执行的时间 = 时钟周期个数 * 时钟周期,而时钟周期是工作频率的倒数,那么在其他条件相同的情况下有:工作频率越高,指令完成执行的时间越少。

须注意的是:评价CPU不能仅看主频维度参数,还需关注其他维度的参数,比如“核心数”,“工艺”,“CPU高速缓存”,“指令版本”等。比如“两代CPU(CPU A和CPU B),其他条件都相同,CPU A的主频是CPU B的两倍,但是CPU A的指令平均时钟周期个数是CPU B的3倍,那么总的来说,CPU A的平均指令时间是CPU B的1.5倍”。

主频可分为两类——额定主频和工作实际主频:

  • 从额定主频视角,一般情况下,所有CPU的额定主频一致,除非有特殊需求
  • 从工作实际主频的视角,不同CPU的工作实际主频可以不同

3.2.1、额定主频

3.2.1.1、额定主频与外频的关系

外频是CPU与主板之间同步工作的频率,一般作为整个计算机的基准频率(BCLK基频)。计算机系统中其他部件的频率都是在外频的基础上,乘以一定的倍数(通过倍频器硬件)来实现,这个倍数可以是大于1(升频)的,也可以是小于1(降频)的。比如“PCI设备的额定频率是33MHz,当外频是100MHz时,倍数就是1/3”。

CPU的额定主频与外频的倍数有个专有称呼,即“倍频”,故有额定主频 = 外频 * 倍频

3.2.1.2、超频

超频就是通过BIOS或者控制软件设置提升CPU额定主频,以获得更好的运算性能,代价是更大的散热和一定的不稳定风险。超频是该特殊升频的专有称呼。
超频的操作粒度是物理CPU Core。

根据额定主频 = 外频 * 倍频可知,超频的实现途径有两种:

  1. 倍频不变,提升外频。但是外频作为基准频率,一旦改变,整个计算机运转就存在巨大的不稳定风险,故一般不选取这种途径
  2. 外频不变,倍频提升。一般选取这种方案。但有些CPU厂商会锁住倍频选项,此时就不能超频

3.2.2、工作实际主频

一般情况下,工作实际主频跟额定主频一致,但现在很多CPU厂商提供动态调节主频的功能,使得工作实际主频跟额定主频不一致。

1、动态升频
以Intel CPU为例进行说明,Intel较为现代的CPU提供睿频加速技术,使得CPU的主频可以在某一范围内根据处理数据需要动态上调处理器电压和内核频率,以达成更高运算性能目的。

2、动态降频
以Intel CPU为例进行说明,Intel较为现代的CPU提供SpeedStep®动态节能技术,它允许系统动态下调处理器电压和内核频率,以达到降低产热和节能目的。

3.3、高速缓存

现代CPU中有三级高速缓存:L1 Cache,L2 Cache和L3 Cache。

3.4、字长

现在常见的都是64位。

参考文献

[1]https://chinalhr.github.io/post/os-heart-multicpu/
[2]https://zhuanlan.zhihu.com/p/352676442
[3]https://www.intel.cn/content/www/cn/zh/gaming/resources/how-to-overclock.html
[4]https://zhuanlan.zhihu.com/p/52112475
[5]https://zhuanlan.zhihu.com/p/30582175
[6]https://superuser.com/questions/1222372/why-do-we-have-cpus-with-all-the-cores-at-the-same-speeds-and-not-combinations-o
[7]https://stackoverflow.com/questions/2619745/mutli-core-processors-does-each-core-run-at-the-full-clock-speed-or-some-frac
[8]https://www.quora.com/Is-it-normal-for-CPU-cores-to-have-different-speeds
[9]https://blog.csdn.net/yhb1206/article/details/120363093
[10]https://juejin.cn/post/7023987432680849438
[11]https://www.intel.cn/content/www/cn/zh/gaming/resources/hyper-threading.html
[12]https://www.tomshardware.com/how-to/how-to-overclock-a-cpu

您的支持将鼓励我继续分享!