为什么CPU不能有更多的核?

前言

与GPU动辄成千上万个核不同,CPU核数目前仍处于百核级别。AMD基于最新Zen 5架构发布的产品中,核数最多的型号AMD EPYC™ 9965也只有192个核。

那么,为什么CPU不能有更多的核呢?

这是一个系统工程的问题,涉及到多种因素的权衡。本文将结合AMD Zen 5 EPYC 9005系列(下文简称Zen 5)的架构,从CPU制造流程讲起,带读者理解现代CPU架构的同时,解释为什么CPU不能有更多的核。

从CPU制造流程讲起

CPU的制造过程可以简单总结如下:

晶圆是制作CPU的主要材料,它由圆柱形单晶硅锭(用直拉法从熔融后的高纯度多晶硅中拉出)切片而成,目前主流的晶圆尺寸为12英寸,约7万mm²。

一片晶圆能够光刻若干个芯片,我们把这种未经封装的单个功能芯片称为Die(裸片)。我们很容易想到,如果把Die设计得足够大,一片晶圆只光刻一个Die,那么单Die的核数就能更多了。

然而,受光刻技术限制,当前光刻掩膜版最大面积约858mm²,一旦超过这一阈值,需通过多次曝光拼接完成光刻,但会导致工艺复杂度增加和良率显著下降。

另外,即使在最大光刻掩膜版面积内,Die的面积也不是越大越好。通常来说,晶圆都有一定的缺陷密度,考虑极限场景,晶圆面积=光刻掩膜版最大面积,如下图所示,Die的面积越小,良品率就越高

所以,出于成本的考虑,追求更高的良品率会限制芯片的面积,从而限制了芯片核的数量

既然单块芯片面积受限,那能不能把多块小芯片组合成一块大芯片呢?

当然可以!

Chiplet架构:把小芯片组合起来

Chiplet是一种将传统单片式系统级芯片(SoC)拆分为多个功能模块化小芯片(Die),再通过先进封装技术(如2.5D/3D堆叠)互联集成的设计架构。其核心思想是通过标准化接口将不同工艺节点、不同功能的Die灵活组合,形成高性能异构系统芯片

所以,Chiplet既突破了传统单芯片的物理极限(858mm²),也兼顾架构设计的灵活性。

Chiplet架构下,Die通常会被分成CPU Die(CCD)和IO Die(IOD)两类。

  • CPU Die负责高频计算,集成CPU Core(核)、高速缓存(L2/L3 Cache)等,采用先进的工艺,提供更高的计算密度;
  • IO Die负责资源管控,集成内存控制器、PCIe总线、SATA接口等,采用成熟的工艺,更好保证信号的完整性。

AMD Zen 5采用Chiplet架构设计,一块完整的芯片包含多个CPU Die和1个IO Die。其中,CPU Die采用3nm/4nm工艺,IO Die采用6nm工艺。

虽然Chiplet理论上支持,但通常不会为了得到更多的核而无限制地扩展CPU Die。比如,AMD Zen 5一个CPU Die上有8个核,当前最多支持集成16个CPU Die,共计128核。

其中原因主要受以下几点限制:

  1. 功耗和散热问题。集成更多的CPU Die意味着更高的功耗,散热可能成为问题,会导致芯片温度过高,影响晶体管的寿命。
  2. 内存带宽受限。一块芯片上通常只有1个IO Die,其DDR内存通道数是固定的,比如,AMD Zen 5的内存通道数为12。更多的核意味着内存带宽竞争更大,平均单核内存带宽更低。
  3. 缓存一致性机制更复杂。虽然可以通过增加IO Die的数量来提升内存带宽,但这同样受功耗和散热问题限制,而且更多的CPU Die会导致缓存一致性机制过于复杂,得不偿失。

在拥有一定面积的芯片上,既然无法通过扩展更多的CPU Die来增加核数,那么能否提升单个CPU Die的核数呢?

当然可以!通过把核做得更小,就能让一定面积下的CPU Die拥有更多的核。

更小的核

以AMD Zen 5 EPYC 9005系列为例。

除了前文提到的8核/Die的Zen 5 core,还有16核/Die的Zen 5C core。

它们之间的一些参数如下:

Zen 5 coreZen 5C core
单Die核数8核16核
L2 Cache大小1MB1MB
共享L3 Cache大小32MB32MB
平均单核L3 Cache大小4MB2MB
基础频率2.6-4.2GHZ2.1-2.3GHZ
最高睿频频率5GHZ3.7GHZ

从上述对比可以看出,Zen 5C的核数更多,但单核性能更弱。这很好理解,每个核都由各种单元组成,如下展示了Zen 5的微架构图:

为了把核做得更小,核内各单元的尺寸/电路必然会缩小,性能也就更低了。比如,TAGE分支预测器的BTB容量变小,会导致分支预测准确率下降,从而影响单核性能。

所以,单CPU Die的核数也不能太多,否则单核性能太低,也没有意义

另外,GPU之所以能够做到成千上万个核,是因为GPU的设计理念上是并行性和吞吐量有限,要求同时处理数千个相似任务,这使得GPU的核极度简化,仅保留基础算术逻辑单元(ALU)和少量高速缓存。所以GPU的核能够做到足够小!

CPU的设计理念是追求通用性和灵活性,要求处理复杂的逻辑控制、分支预测、乱序执行等通用计算任务,所以核无法做得很小。

既然单CPU Die核数不能太多,单CPU上的CPU Die也不能太多,那么能不能把多个CPU互联起来,形成一个拥有更多核的服务器呢?

当然可以!

多路CPU系统

如果一块主板上只有1个CPU,通常会把它称为单路(Single-Socket)CPU系统,有2个CPU则称为双路(Two-Socket)CPU系统,以此类推,还有四路CPU、八路CPU等。

如今,单路和双路都是常见的配置,比如,AMD Zen 5提供了单路和双路两种配置。

在多路CPU系统中,CPU之间通过IO Die上的高速互联接口完成互联。AMD的高速互联协议为Infinity Fabric,如下展示了AMD Zen 5在双路配置下的互联结构图:

AMD Zen 5的IO Die中,Infinity Fabric高速互联接口与PCIe接口用的是同一个物理接口,所以这里存在计算和IO的权衡。多路CPU有着更多的计算算力,但更少的IO扩展接口。

类似地,多路CPU系统中的路数也不能无限扩展,整机功耗和散热问题、互联总线的带宽和时延瓶颈、更复杂的缓存一致性协议等都是阻碍因素。

还要考虑业务负载

到目前为止,我们都在围绕成本、物理限制、技术复杂度等维度来讨论。

假如我们克服了这些问题,并生产出一款超多核的CPU型号,那么它就一定能够很受欢迎吗?

未必!我们忽略了最重要的因素,业务负载

比如,对Redis来说,它是一个单线程的业务负载,单实例下,给它再多的核也用不上,它需要的是更强的单核性能。

比如,对IO密集的存储型业务来说,它不需要很强的CPU计算性能,需要的是更大的IO带宽和更低的IO时延。

比如,对云基础设施提供商来说,一台整机服务器上通常运行着多个容器业务。多路CPU系统确实能够减少机柜的数量,从而降低成本。但考虑到系统的可靠性,他们可能更偏爱核数更低的单路CPU服务器,因为单路CPU下,单机故障的业务影响范围会更小。

所以,“为什么CPU不能有更多的核?”这是一个系统工程的问题,要经过多方面因素的综合权衡。

更好的方法是为用户提供多种选择,让用户能够根据自身的业务需求,选取合适的CPU型号

如下为AMD Zen 5 EPYC 9005系列的全部型号,多达27种:

总结

本文主要针对“为什么CPU不能有更多的核?”进行了讨论,总结起来,主要有以下几个原因:

  • 芯片本身的物理限制。更大面积的芯片往往会有着更低的良品率,成本会急剧上升;而且功耗会更大,散热很可能成为问题,从而影响晶体管的寿命。
  • 带宽和时延限制。随着核数增多,内存带宽、高速缓存带宽、CPU的高速互联带宽都会成为瓶颈。
  • 缓存一致性协议限制。更多的核数,特别是在多路CPU系统下,缓存一致性会变得非常复杂,为了追求更多的核数,而让系统复杂性急剧增大,可能会得不偿失。
  • 业务负载不一定合适。技术服务于业务,很多业务并不需要很多的核,所以业务合适最重要。

总之,世上没有有一款完美的CPU,系统设计,一切尽在权衡!

文章配图

可以在 用Keynote画出手绘风格的配图 中找到文章的绘图方法。

参考

[1] 5TH GEN AMD EPYC™ PROCESSOR ARCHITECTURE WHITE PAPER, AMD

[2] AMD EPYC™ 9005 SERIES PROCESSORS DATASHEET, AMD

[3] CPU 是如何制造出来的, 爱涂鸦啊

[4] 现代分支预测:从学术界到工业界, Easton Man

[5] 深入理解分支预测原理,揭开AMD Zen 5的高性能秘诀, 元闰子

[6] DeepSeek

[7] 秘塔AI搜索

更多文章请关注微信公众号:元闰子的邀请

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值