在上一篇《一文深入了解 CPU 的型号、代际架构与微架构》 中我们介绍了我手头的一颗 Intel(R) Core(TM) i5 的型号规则,以及它的物理硬件的 Die 图结构。以及它对应的 Skylake 核的微架构实现。
不少同学开始问我其它型号的 CPU 和它比有什么区别呢。考虑到了市场上各种新老 CPU 型号太多了,咱们没办法一一介绍。所以我想了一个办法,咱们把这些年 CPU 进化的几个关键点讲一讲。这样将来大家再看其它的 CPU 的时候,也能做到懂得历史,也能展望未来了。最重要的微内核 sunny cove的 介绍在文章的最后。
一、制程工艺的变化
CPU 的生产过程大概是需要经过如下几步:第一步是晶圆的生产。具体过程是将包含有大量硅的石英沙放到一个巨大的石英熔炉中加热融化,然后向熔炉中加入一个小的晶种以便于硅晶体围着这颗晶种生长。直到生成一个单晶硅硅锭。这个硅锭是一个圆柱体,直径大概在 200 mm 或 300 mm。然后对硅锭进行切割,将圆柱体的硅锭切割成圆形的晶圆。
第二步是 CPU 硬件电路的制作。晶圆表面会被涂上一层光阻物质,这种光阻物质后面被紫外线照到的地方会融化。接着使用固定波长的紫外线通过印着 CPU 复杂电路结构图样的模版照射晶圆。用光来对晶圆进行蚀刻。然后再通过沉积的方式加一层硅,涂光阻物质,再次影印,蚀刻重复多遍形成一个多层结构。而且每层中间都要填充金属导体。最终在一个非常小的面积上形成一个比一座城市还要复杂的 3D 结构。
第三步是进行封装和测试。晶圆上的电路被封装起来,然后进行测试合格后就会推向市场销售。
在上面的制作步骤中,最重要的是第二步。在这个过程中追求的是不断底在单位面积的芯片上布局更多的晶体管。每个晶体管的结构大概如下。
晶体管的尺寸越小,单位面积上的电路就越丰富,生产出来的 CPU 的性能就越好。另外还有就是晶体管越小的话,单个晶体管的能耗也会越低,整颗 CPU 也会越省电。
衡量晶体管尺寸大小的标准是晶体管中源极和栅极之间(沟道长度)的距离。在 Intel 历年的 CPU 中,在 2013 年的 Haswell 采用的是 22 nm 的工艺。到了 2014 年的 Broadwell 开始采用 14 nm 工艺。到了 2019 年的 Ice Lake 开始引入 10 nm 工艺。到了 2022 年的 Raptor Lake,已经开始采用 7 nm 工艺了。
一般来说,制程工艺越短,生产出来的 CPU 也就越先进。
二、集成度的变化
CPU 虽然是最精密的设备,但是它也是无法自己完成工作的。需要和计算机中的内存、显卡、硬盘、网卡、USB设备、鼠标键盘等组件配合才行。所以,CPU 需要通过硬件线路来和这些设备相连。
在这些设备中,所有硬件的工作频率都比 CPU 要慢。只不过有的设备虽然速度比不上 CPU,但是还是比较快的。另外一些设备比如硬盘、键盘鼠标相比更慢一些。在老式 Intel CPU 中。
在大约 2000 年前后的老式电脑体系结构中,CPU 在主板上设计了南桥和北桥两个硬件。北桥负责与CPU通信,并且连接高速设备内存和显卡,并且与南桥通信;南桥负责与低速设备硬盘、网卡、键盘鼠标、USB设备通信,并且与北桥通信。
其中北桥芯片是存储控制器(Memory Controller Hub, MCH)。功能包括了 PCIe(Peripheral Component Interconnect Express,是一种高速串行计算机扩展总线标准)总线功能用来连接显卡。也包括了内存控制器,用来连接内存。
后来由于 CPU 对内存和显卡的数据带宽需求越来越大。Intel 从 2011 年正式发布的 SandyBridge 开始,CPU 整合内存控制器和 PCIe 控制器,相当于是把原来北桥的功能集成在 CPU 内部了,北桥从那时开始就消失了(参考https://en.wikichip.org/wiki/intel/microarchitectures/sandy_bridge_(client))。
随着时间的推移,CPU 硬件整合度越来越高。在手机芯片中,已经由于只剩下一个芯片了,也没有“芯片组”的说法了,只剩下孤零零的PCH (Platform Controller Hub)。
未来随着集成度的进一步提高,未来在台式机中南桥也可能会消失。在手机中由于体积的特殊性,已经实现了最高的集成度。通过系统级芯片(System on Chip,SOC)已经把 CPU、GPU、内存、导航定位模块、多媒体模块等全部集成到了一起。
资料直通车:Linux内核源码技术学习路线+视频教程内核源码
学习直通车:Linuxc/c++高级开发【直播公开课】
零声白金VIP体验卡:零声白金VIP体验卡(含基础架构/高性能存储/golang/QT/音视频/Linux内核)
三、内存控制器的变化
每代 CPU 的一大变化就是内存控制器的提升,一般来说,越新的 CPU 所支持的内存代际越来越新、支持的内存频率越来越高。
先看 2011 年第 3 代的 Ivy Bridge。该代际下的的 CPU 支持的还是 DDR3 代的内存。Celeron、Pentium 等系列的 CPU 支持的内存频率大部分都是 DDR3-1333。只有 Core i3 和 Core i5 系列的内存频率支持到了 DDR3-1600。
到了 2014 年第 5 代 Broadwell 开始,Intel 开始在多数的 Core 系列开始大规模地支持 DDR4-2400 内存。2015 年的第 6 代 Skylake,其代际下高端的 Core i9 支持到了 DDR4-2666。到了 2016 年的 Kaby Lake,普通的 Core i5 和 Core i7 也都支持了 DDR4-2666。2019 年的 Ice Lake 的 Core 系列支持了 DDR4 3200。
到了 2021 年的 Alder Lake S 开始,开始支持 DDR5 的新内存。而且还是同时支持 DDR4-3200 和 DDR5-4800。
上面说的是台式机的内存规格。对于笔记本电脑来说,还有对应的低电压规格的内存条代际。低电压标准的内存相对比较省电,但性能会差10%左右。在具体的内存标准上,包括 DDRxL 和 LPDDRx 两个系列标准。其中其中 L 是低电压 Low Voltage 的简写,LP 是 Low Power 的简写。
拿第 4 代内存来举例, DDR4 的工作电压虽然相比 DDR3 的 1.5 v 下降到了 1.2 v,更加省电。但是相比用在笔记本中的话,功耗仍然是比较高的。而 DDR4L 可以同时除了兼容 DDR4 的 1.2 v 电压模式外,还支持 1.05 v 的低电压模式。LPDDR4 的工作电压是 1.1 v,DDR4L 和 LPDDR4 所以更适用于用在笔记本电脑等移动设备上。
CPU支持的内存除了以上指标外,还有另外一个就是通道数。直观理解,就是 CPU 上可以支持几条内存插槽。家用 PC 电脑一般都 2 个或 4 个内存插槽。在英文中对应的叫 channel 数。越多内存插槽的电脑支持的最大内存数量也就越大,整体带宽也就更高。
四、PCIe 插槽变化
前面我们提到 PCIe 总线。它是一种用于连接高速组件的高速串行计算机扩展总线标准,它取代了历史上出现的 AGP、PCI 和 PCI- X 总线标准,并经过了多次调整改进。
最早在 2003 年的时候,PCIe 1.0标准首次发布。后来因为带宽需求增长越来越快,已经陆续出现了 PCIe 1.0、PCIe 2.0、PCIe 3.0、PCIe 4.0 和 PCIe 5.0 等 5 代标准,PCIe 6.0也将在不久后发布。传输速率每过一代就会增加很多。
Intel 的 CPU 发展过程中,在 2015 年的 Skylake 中支持了 PCIe 3.0 标准。在 2020 年的 Tiger Lake 的 CPU 中,开始支持了 PCIe 4.0 标准。在 2021 年的 Alder Lake S 中,提供了 16 通道的 PCIe 5.0 用于连接显卡,同时还支持 4 通道的 PCIe 4.0 通道用于连接固态硬盘。
五、微架构(核)的变化
在每代的 CPU 中,单个物理核的设计结构也是非常不同的。所以隔代的 CPU 性能差异也不尽相同。
在 2013 年和 2014 年,Haswell、Haswell Refresh、Broadwell 等代际采用的核的微架构设计都是一样的,都采用的是 Haswell 微架构。
在 2015 年的 SkyLake、KabyLake、Coffee Lake 等代际中,采用的都是 Skylake 微架构。
到了 2019 年发布的 Ice Lake 代际中,开始引入了 Sunny Cove 微架构。该架构下的单核性能大约比上一代提升了有 18% - 20%(参考 https://en.wikichip.org/wiki/intel/microarchitectures/sunny_cove)
每一种不同的 CPU 微架构,在核的内部实现细节上都会有一些不同。就拿 Ice Lake 中使用的 Sunny Cove 微架构来举例,它相比上一代的 Skylake,具体的改进有如下。
对于负责指令解析的前端部分
- µOP cache提升到了 2.3 k(上一代是 1536)
- 改进的分支预测
- iTLB 缓存翻倍
对于负责指令执行的后端部分
- 顺序重排缓存器(ReOrder Buffer,ROB)提升到了 352 条目(上一代是224条目)
- 调度器(Scheduler)提升到支持 10 路超标量(上一代是 8 路超标量),每个时钟周期最多可以支持 10 个微操作
对于执行引擎部分
- 存储操作端口提升到了 2 个(上一代是 1 个)
- 地址生成端口提升到了 2 个(上一代是 1 个)
对于缓存子系统
- L1 缓存提升到了 48 KiB(上一代是 32 KiB)
- L2 缓存提升到了 512 Kib(上一代是 256 KiB)
- STLB(Shared TLB)缓存提升了到了 2048 条目(上一代是 1536 条目),DTLB也有较大改进
另外 Sunny Cove 还引入了一些新的指令,比如 AVX-512 向量指令。所有这些核设计细节中的提升,铸就了 Sunny Cove 比上一代更强的单核性能。
到了 2020 年之后的 Tiger Lake 中,开始采用 Willow Cove 新微架构中 L2 又进一步提升到了 1.25 MB,L3 提升到了 12 MB。(参考https://en.wikichip.org/wiki/intel/microarchitectures/willow_cove)
后面到了 2021 年的 Alder Lake S 时为了平衡性能和功耗, 又开启了一个新的 CPU 设计趋势。就是借鉴手机 CPU 设计,引入了大核小核的设计区分。
在 CPU 的设计中,在性能核功耗上一直无法兼顾。内置更多的晶体管虽然可以提升性能,但会让发热功耗问题更严重。虽然制程不断提升到了 22nm、14nm、10nm、7nm、...,但是由于芯片功能的增加和性能的提升,功耗上取得的效果一直不能令人满意。
在传统的 CPU 中,不管是什么样的任务,都采用一样的核来调度和使用。但其实很多场景中,并不需要这些性能和能耗都较高的核。在新的设计趋势中,“大核”叫做“Performance Cores”,小核”叫“Efficiency cores”。
当运行各种低负载应用时,可以使用“Efficiency cores”来满足用户需求的同时来节约电量,这种核的性能一般,但优势在于省电。当真正需要有更多性能的时候,才会启动更高性能的“Performance Cores”。
总结
由于市场上各种新老 CPU 型号太多了,咱们没办法一一去了解。我们只要掌握 CPU 发展中的几个关键点的进步,就能够做到对所有 CPU 有个基本的了解了。
其中最重要的进步点是 CPU 制程工艺的变化。衡量 CPU 制程工艺的尺寸的标准是晶体管中源极和栅极之间(沟道长度)的距离。在这些年中,制程一直在进步。从 65 nm、45nm、22nm、...、10nm、7nm一直在进步。但总体上来说,已经快到物理的极限,制程的进步速度在变缓。
另外一个就是集成度的变化。早年的 CPU 中,硬件架构上设计的比较细。在新的 CPU 中,由于对带宽的要求变得越来越高。所以 CPU 硬件开发者们倾向于把更多的模块都集成到 CPU 硬件中。比如历史上的北桥,绝大部分功能都被 CPU 硬件实现了。在手机芯片中,一个 SoC 更是集成了 CPU、RAM、导航定位模块、多媒体模块等众多功能模块。
还有就是 IO 支持上的提升。对于内存控制器部分来说,支持的内存代际越来越高,从 DDR3、DDR4,一直到了今天的 DDR5。另外就是内存的频率,即使是同一代际的内存,频率支持的也是越来越高。还有就是连接显卡和固态硬盘的 PCIe 总线,也是从 1.0 逐步支持到了 5.0。
还有更重要的变化是单核微架构的设计。在新的单核架构中,CPU 中的各种缓存如 TLB、L1、L2变的越来越大,支持的超变量路数也再变多。还有就是一个新的发展趋势,CPU 厂商们引入了一些更省电的“Efficiency cores”,俗称小核。用来在系统计算任务不重的时候,使用小核来调度,节约更多的能耗。
CPU硬件一直在进步,在过去的很多年中,服务器端计算性能的提升都是靠硬件来提升的。但我觉得近些年来,这个提升趋势有变缓的迹象。因此未来更好地理解硬件内部原理,好好设计和调优服务的软件部分,让硬件性能最大程度地发挥,这件事情会变得越来越重要。
原文作者:开发内功修炼