CPU 在整个计算机硬件中、技术体系中都算是最最重要的东西了。在 10 月 16 号的时候,Intel 正式发布了第 14 代的酷睿处理器。
一、Intel 的 CPU 型号规则
无论是哪家 CPU 厂商,为了更好地管理自己生产的众多型号的产品,也为了能更好地让消费者对自己家的产品快速地了解,都会定义一套产品规则。对于 Intel 来说,它的命令规则大致如下:
Intel 把 CPU 的编号分成了品牌标志、品牌修饰符、代际编号、SKU、产品线后缀五个部分。接下来我们分别展开对这五个部分来了解。
第一部分是品牌标志。最最常见的 x86 CPU 品牌包括 Intel 和 AMD 两家公司。而 Intel 又面向不同的市场需求,包括凌动、赛扬、奔腾、酷睿、至强等多个子品牌。
-
酷睿(CORE)、赛扬(CELERON)、奔腾(PENTIUM)都是应用在家用 PC 电脑上的品牌。其中奔腾和赛扬这两个品牌已经算作是历史了。奔腾在 1992 年推出,之后在很长一段时间里是 PC 家用电脑的主流。赛扬是 1998 年时为了和 AMD 竞争低价市场推出的产品,可以理解为缩水版的奔腾。酷睿是 2006 年推出,直到现在仍然是 PC 电脑里的主流品牌。
-
志强(Xeon)是企业级的 CPU,多用于服务器和工作站。大家在工作中使用的线上服务器,基本都是这个子品牌旗下的产品。
-
凌动(Atom)主打省电和低功耗,主要用在手机平板等设备上。是的,Intel 也是做过手机 CPU 的,但因为功耗问题在竞争中被 arm 架构各家处理器厂商打败,在 2016 年后逐渐退出市场。
第二部分是品牌修饰符。这个部分是为了区分处理器的市场定位的,一般来说同一年代生产的 CPU 中, i3 i5 i7 i9 的性能是依次递增的,分别代表着低端、中端和高端的定位。
第三部分是 CPU 的代际编号。这一部分有可能是一位数字,也有可能是两位的数字。在我们举例的这颗 CPU 上,代际编号是 “7”。这个代际编号对应的是 Intel 于 2016 年推出的内部代号为 “Kaby Lake” 的 CPU 架构。一般来说,CPU 代际编号越大,则代表架构推出的时间点越新,单核的性能也会更好。关于 “Kaby Lake” ,后面我们还会单独介绍。
第四部分是 SKU 编号。这是 CPU 厂商为了方便对所有的产品进行库存管理而制定的编号。这类似于超市里商品的条形码、图书的 ISBN 号,方便查询和管理产品的库存量。一般来说,这个值也是越大性能越好,但不绝对。
第五部分是产品线后缀。在笔记本电脑中,H 代表的是高性能、U 系列代表的是较低功耗、Y 系列代表的是极低的功耗。在台式机中,X 代表的是最高性能、K 代表的是高性能、T 代表的是功耗优化。
关于型号规则大家也可以参考 Intel 的官网介绍(https://www.intel.cn/content/www/cn/zh/processors/processor-numbers.html)。
现在我们再回头来看一下我们开头提到的 CPU,Intel(R) Core(TM) i5-7200U CPU
。这里面包含的含义就是,这是一个 Intel 的酷睿子品牌的 CPU,i7 代表着中高端,代际编号是 7,这个代际的处理器架构是 2016 年发布的采用的 Kaby Lake 架构生产的。SKU 编号是 200。产品线后缀的 U 代表的是低功耗,比较省电,同时也就代表着性能并不是最强的。
再看最新的发布的酷睿 CPU 型号有,Intel(R) Core(TM) i9-14900K
、Intel(R) Core(TM) i7-14700K
、Intel(R) Core(TM) i5-14600K
等几款 CPU。这里面也表示了还是属于 Intel 酷睿子品牌下的产品。i9、i7、i5 分别代表着每个 CPU 的档次。14 代表的是代际。900、700、600 属于 SKU 编号。
二、CPU 的代际
前面在看到 Kaby Lake 的时候,肯定很多小伙伴都会表示看不懂这是什么意思,所以这里专门准备一个小节来解释下。
前面我们提到每个 CPU 型号中都包含了一个代际编号。比如第 7 代、第 8 代,就在 2023 的 10 月 16 日,已经更新到了第 14 代。
这个代际代表的 CPU 的生产年份不同、生产工艺不同、架构设计的不同。各个代际除了这个数字的编号外,还会有一个英文代号。比如第 7 代的代际编号就是 Kaby Lake。最新的第 14 代的代际编号是 Raptor Lake Refresh。下表是我搜集整理到的各个代际的信息(在手机上看需要往右拖动一下表格才能够看全)。
时间 | 代数 | CPU代际 | 制程工艺 | 微架构 |
---|---|---|---|---|
2013 | 第4代 | Haswell | 22nm | Haswell |
2014 | 第5代 | Broadwell | 14nm | Haswell |
2015 | 第6代 | Skylake(client) | 14nm | Skylake |
2016 | 第7代 | Kaby Lake | 14nm | Skylake |
2017 | 第8代 | Coffee Lake | 14nm | Skylake |
2018 | 第9代 | Coffee Lake Refresh | 14nm | Skylake |
2019 | 第10代 | Ice Lake(client) | 10nm | Sunny Cove |
2020 | 第11代 | Tiger Lake | 10nm | Willow Cove |
2021 | 第12代 | Alder Lake S | 7nm | 大核Golden Cove 小核Gracemont |
2022 | 第13代 | Raptor Lake | 7nm | 大核Raptor Cove 小核Gracemont |
2023 | 第14代 | Raptor Lake Refresh | 7nm | 大核Raptor Cove 小核Gracemont |
在上面的表中,我列出了每一代 CPU 发行的时间、代数、代际编号、制程工艺,还有最后一列是微架构。因为我的老电脑中的 CPU 是 Kaby Lake,所以我把 Kaby Lake 的详细的资料给大家翻出来。
我们这颗 CPU 是双核四线程的。所以对应的 CPU 的 Die 图(CPU芯片的内部物理结构)就是下面这个:
在 Die图中,最上方的 Memory Controller 是内存控制器。当前 CPU 能支持什么样规格的内存,以及能支持多大的内存,都是由 CPU 中的内存控制器来决定的。其中 Kaby Lake 的内存控制器相比上一代 Skylake 来说,将支持的内存频率从 DDR4-2133 提升到了 DDR4-2400。
下方中间位置是两个物理核,这是 CPU 中最重要的部分。还有两块 L3 Cache,要注意的是虽然在硬件上是有两块 L3,但不管有几块,所有的 L3 缓存都是所有核共享的。
在 CPU 的下方最右侧的 Gen9.5 是 CPU 中集成显卡。对这块显卡感兴趣的同学可以移步 https://en.wikichip.org/wiki/intel/microarchitectures/gen9。
在 CPU 的下方最左侧是 System Agent 模块。在该模块中主要包括外围组件快速互联(Peripheral Component Interconnect Express,简称PCIe) 通道、图像处理单元(Image Processing Unit,IPU)等。
在 Kaby Lake 中包含 20 个 PCIe 通道。其中有的通道是用于和显卡通信,有的是通过南桥和硬盘、网卡等设备通信。
南桥芯片是用于帮助 CPU 和外围设备交互的。固态硬盘、机械硬盘、网卡等 IO 设备一般来说都是通过南桥来和 CPU 相连的。南桥会收集好了这些设备上的数据再传输给 CPU 处理。另外现在有些高性能的固态硬盘也是直接通过 PCIe 通道和 CPU 通信,这样的硬盘性能更好。
另外,IPU 的功能是支持视频录制成像、人脸检测识别等图像相关处理的硬件。
以上就是 Kaby Lake 架构下 CPU 的主要物理结构。
另外,从表中还可以看到 Kaby Lake 是 2016 年发布的,制程工艺是 14 nm。CPU 的制程工艺一直在进步,从 2013 年的 22 nm 逐步发展到了今天的 7 nm。制程工艺的进步带来的好处主要是能效比的提升,单位面积上晶体管的数量增加了,但是需要的能耗却变低了。
三、物理核微架构设计
另外,每个代际的 CPU 还有个非常不同的地方在于微架构的不同。微架构指的是每个物理核设计时采用的技术方案。不同的微架构对核的设计是不同的,比如 TLB、L1、L2 等各种缓存,再比如 CPU 核内部的运算单元都会有所不同。
通过上一节中的表格,可以看到我手头的这颗 Intel(R) Core(TM) i5-7200U CPU
代际编号为 Kaby Lake,微架构的设计仍然沿用的是 Skylake 中的核设计。那么 Skylake 中的物理核是怎么设计的呢?我从官网看到了它的内部物理结构。
上面的图中大致可以根据颜色的不同分成三大块区域。
第一块区域是黄色部分的前端,也叫 Front End。
前端部分的作用是从内存中获取指令并解码,然后把解码后的指令放到队列中,等待 CPU 后端处理。还包括了 CPU 中的分支预测的实现 BPU。另外也还包含解析指令时需要用到的 L1 指令缓存和指令 TLB。
其中,从上图中也可以看到,Skylake 核中的 L1 指令缓存的大小是 32 KiB。
第二块区域是绿色的后端,又叫 Execution Engine。
后端模块的作用是从队列中获取前端解码好了的指令开始运行。在后端中包括 Port0、Port1、...、Port7 等 8 个端口。每个端口都支持不同的微操作(uOP)的处理。
其中,Port0、Port1、Port5、Port6 支持整数、浮点数的加法运算,Port2、Port3 用于地址生成和加载,Port4 用于存储操作。
因为有 8 个 Port,所以后端在一个时钟周期内,是可以最多处理 8 个微操作的。
第三块区域是紫色的存储系统,又叫 Momory SubSystem。
在这里包括了 L1 级别的 Data 缓存区,图中也展示了它的大小是 32KiB。还包括 L2 缓存,其大小是 256 KiB。另外还有 Data TLB 等缓存。这些缓存都是位于 CPU 核内部的,访问它们的速度比访问内存更快。