Zen2/3与AMD自家的Zen/Zen+、Intel的Core系列相比,有一个很大的不同:内存控制器与CPU内核不在同一块Die(裸片)内,而是在一块单独的IO Die内,并且和包含CPU内核的CCD(Core Chiplet Dies,核心小芯片裸片)封装在同一块基板上。这种封装方式会带来一个问题:同基板封装的不同Die之间数据传输性能下降很严重。毕竟CPU的基板某种角度来说可以理解为精度非常高的印刷电路板——但和今天不到20nm半导体工艺相比,精度还是低得多。因此信号的传输距离远大于同一Die内的不同模块,传输相同的数据量需要消耗更多的能量。按照Intel的PPT,同基板封装传输数据消耗的能量大概是Die内的5~10倍。
就CPU内核与内存控制器/北桥之间的数据传输来说,以前的CPU(Intel的Core 2及更早,AMD的K7及更早)没有集成内存控制器,内存控制器在独立的北桥芯片中,和CPU之间通过主板上的线路传输数据,是上图左边的情况;Zen2/3是同基板上的不同Die,是上图中间的情况;Intel的Core系列及AMD的K8~Zen+之间的产品都是Die内集成内存控制器,是上图右边的情况。需要补充一下的是,对于多Die的Zen/Zen+的EPYC、线程撕裂者来说,CPU内核访问其它Die的内存上的数据是上图中间的情况;对于多路CPU访问其它插槽CPU连接的内存,则是上图左边的情况。
为了降低同基板封装带来的功耗提升,从Zen开始,AMD使用的IFOP(Infinite Fabric On Package)技术,一方面使用差分线传输串行数据,一方面降低了传输频率。但即便如此,每传输1bit数据还是需要消耗2pJ能量。
但这也同时带来两个问题:传输数据时传输方需要串行化,接收方需要解串,带来了更高的延迟;降低了频率导致带宽不足。
延迟方面,Zen2/Zen3都是通过大容量三级缓存来降低影响,Zen2单个CCD含两个CCX,每个CCX四个核心共享16 MB L3$(三级缓存);Zen3则是单个CCD只有一个CCX,这个CCX八个核心共享32 MB L3$。所以Zen2和Zen3都是平均每核心4 MB L3$,但极端情况下,Zen3单个核心理论上可以独占32 MB L3$,而Zen2只能独占16 MB L3$。再加上不同核心需要的缓存数据会有重复的情况,Zen3的L3$效率是更高的。5900X比5950X、5800X都更适合游戏的地方就在这里:5900X每个CCD禁用了2个核心,只有6个核心共享32 MB L3$,平均每核心5.33 MB L3$,增加了33%容量。当然,除了5900X外,其实5600X也一样。
带宽方面,Zen/Zen+的IFOP频率是1333 MHz,Zen2是不超过1933 MHz,Zen3发布时据说有2000 MHz,但很多反馈和Zen2一样。作为对比,Intel Core的Die内RingBus和IFOP同样位宽是256bit,但频率动则3.X GHz最高4.2 GHz。事实上,Zen2的256bit,1800 MHz时IF带宽为57.6 GB/s,和双通道DDR4 3600一致。但CCD和IO Die之间,除了传输内存数据外,还需要传输CPU和PCIe控制器之间的数据,此外,Zen2 CCD和IO Die之间的IFOP宽度是不对称的:读取是256bit,但写入只有128bit。之前据说主流平台的Zen2 Ryzen是读写都是256bit,线程撕裂者和EPYC才是256/128配置,但实际产品中,单CCD的Zen2如3800X的写入带宽远低于读取带宽,双CCD的3900X/3950X才是读写带宽基本一致,而Zen3也是如此[1][2]。
所以,综合延迟、带宽两方面,对于不需要太多核心,但对于内存延迟、带宽都比较敏感的游戏来说,5900X是已经发布的Zen3中游戏性能最强的型号。
以TechPowerup测试的几个游戏综合来看,2080Ti,1440p下,5900X基本和对家的10400F一个水平,和自家上代的3600都拉不开距离(除了Far Cry 5)