CPU 概述
中央处理器(Central Processing Unit,CPU)是计算机的核心组成,可以根据指令执行基本运算、逻辑运算、逻辑控制以及 IO 操作等。 CPU 的组成部分如下:
- 算术逻辑单元(Arithmetic Logic Unit,ALU),主要执行一些基本运算和逻辑操作
- 处理器寄存器(Processing Registers),主要是给 ALU 提供操作数并存储 ALU 的操作结果
- 控制器(Control Unit),通过协调 ALU,寄存器以及其他组件之间的操作,从主存中取得并执行相应的指令
当前大多数 CPU 都是微处理器,包含在单个集成电路芯片(Integrated Circuit Chip)中。一个包含 CPU 的集成电路可能也包含内存,外围接口以及其他一些计算机组件,这样的集成设备称之为微控制器(Microcontrollers)或者芯片上的系统(SoC)。一些计算机用多核处理器,即单个集成电路芯片上有两个或者更多的 CPU(也被称为 cores),这种情况下,单个集成电路芯片也被称为 Sockets。
CPU、主存与 IO 之间的交互
CPU 主频(时钟频率)
时钟频率是指单位时间内产生数字脉冲的数量。例如时钟速度为为 3.2GHz,那么 CPU 每秒就会执行 32 亿个周期,理论上时钟速度越高,也就是主频越高,CPU运行的速度就越快。
主频的计算公式如下:
主频 = 外频 * 倍频
其中,外频(系统总线频率)是 CPU 与主板之间同步运行的速度,决定着整块主板的运行速度,单位是 MHz。为了追求更高的性能,各大巨头纷纷想办法提升主频。最后虽然主频提升了,但是外部芯片组还是旧有的运行频率,且远远低于CPU 主频,因此性能遭遇到瓶颈。为了解决这个问题,出现了外频和倍频。
倍频,也称为倍频系数,指 CPU 的核心工作频率与外频之间存在着的一个比值关系。在倍频概念出现之前,外频就相当于 CPU 的主频,两者速度一致。随着 CPU 的速度越来越快,倍频技术出现。即使外频工作速度较低,也可以通过倍频来提升 CPU 速度。
CPU 的主频受到实际运算的速度的影响,并不直接代表运算速度,也并不是越高越好,但是提高主频对于提升 CPU 运算速度来说是至关重要的。
:::warning 当前 CPU 主频很难超过 4GHz,主要原因是散热。提升主频超过一定范围后,热密度急剧提高,造成散热困难。 —— 为什么 CPU 主频很难超过 4GHz? :::
多个 CPU
在计算机发展历史中,由于人们的目标一直都是一台计算机可以同时做多件事且做得更快,因此,人们想出增肌 CPU 的数量来增加计算机的计算能力和速度。多个 CPU 在 PC 端并没有得到很好的普及,反而在服务器的应用上大放异彩。多 CPU 的方式被称之为分布式计算,简单理解就是多台计算机相连,各自承担统一工作的不同部分,在人的控制下,同时运行,共同完成一项工作。
多核 CPU
多核 CPU 是把多个 CPU 集成到单个集成电路芯片中,这样的话主板的单个 socket 既可以适应这样的 CPU,也不需要去更改一些硬件结构。多核 CPU 相当于多个单核 CPU 同时工作,因此可以同时处理多个程序,达到并行的效果。
超线程
超线程(Hyper-Threading,也称之为 Simultaneous Multi-Threading),是 Intel 提出的概念,可以是单核 CPU 执行多个控制流程。超线程技术的关键点就是:当我们在处理器中执行代码时,很多时候处理器并不会使用到全部的计算能力,部分计算能力会处于空闲状态,而超线程技术会更大程度地“压榨”处理器。举个例子,如果一个线程必须要等到一些数据加载到缓存中以后才能继续执行,此时 CPU 可以切换到另一个线程去执行,而不用去处于空闲状态,等待当前线程的 IO 执行完毕。
Hyper-Threading 使操作系统认为处理器的核心数是实际核心数的2倍,因此如果有4个核心的处理器,操作系统会认为处理器有8个核心。这项技术通常会对程序有一个性能的提升,通常提升的范围大约在15%-30%之间,对于一些程序来说它的性能甚至会小于20%,其实性能是否提升这完全取决于具体的程序。比如,这2个逻辑核心都需要用到处理器的同一个组件,那么一个线程必须要等待。因此,Hyper-Threading 只是一种“欺骗”手段,对于一些程序来说,它可以更有效地利用CPU的计算能力,但是它的性能远没有真正有2个核心的处理器性能好,因此它不能替代真正有2个核心的处理器。但是同样都是2核的处理器,一个有 Hyper-Threading 技术而另一个没有,那么有这项技术的处理器在大部分情况下都要比没有的好。