与GPU动辄成千上万个核不同,CPU核数目前仍处于百核级别。AMD基于最新Zen 5架构发布的产品中,核数最多的型号AMD EPYC 9965也只有192个核。
GPU之所以能够做到成千上万个核,是因为GPU的设计理念上是并行性和吞吐量有限,要求同时处理数千个相似任务,这使得GPU的核极度简化,仅保留基础算术逻辑单元(ALU)和少量高速缓存。
所以GPU的核能够做到足够小!而CPU的设计理念是追求通用性和灵活性,要求处理复杂的逻辑控制、分支预测、乱序执行等通用计算任务,所以核无法做得很小。
既然单CPU Die核数不能太多,单CPU上的CPU Die也不能太多,那么能不能把多个CPU互联起来,形成一个拥有更多核的服务器呢?
其中原因主要受以下几点限制:
功耗和散热问题。集成更多的CPU Die意味着更高的功耗,散热可能成为问题,会导致芯片温度过高,影响晶体管的寿命。
内存带宽受限。一块芯片上通常只有1个IO Die,其DDR内存通道数是固定的,比如,AMD Zen 5的内存通道数为12。更多的核意味着内存带宽竞争更大,平均单核内存带宽更低。
缓存一致性机制更复杂。虽然可以通过增加IO Die的数量来提升内存带宽,但这同样受功耗和散热问题限制,而且更多的CPU Die会导致缓存一致性机制过于复杂,得不偿失。