作者:超合金彩虹糖
(资料图片)
最近准备来做个AMD这几代内存模式的简单入门,本文主要针对入门级新手,我已经对内容做了大幅度简化了,希望小白们能够看得懂
本文由于是偏科普向,所以不会照顾圈内某些人所谓的共识, 不然必遭后人耻笑,该怎么样就会怎么评价,你们该怎么说留给你们自己背后去讲。
在这之前需要先给几个名词做一些简单解释,那就是Infinity fabric、FCLK、UCLK、MCLK以及CPU频率
CPU频率应该不需要我多说,就是你CPU的核心频率。
infinity fabric是AMD链接不同功能模块的总线,是AMD这次崛起之路的奠基功能
像在Zen1时代,一个CPU die里面两个CCX,这两个CCX就是通过IF总线互联的,此时IF总线还是片内互联的状态。直到现在Zen4乃至于未来的Zen5/Zen6,都会有infinity fabric的身影
infinity fabric一般简称IF,那么IF位宽就是这条总线的位宽,IF频率就是infinity fabric总线的频率
我们常说的FCLK其实就是IF总线的频率,FCLK 1800MHz,那么IF总线的频率就是1800MHz。FCLK和CPU的核心频率是不一样的,大家要注意区分。
MCLK就是内存的频率,比如说DDR5 6000,这6000就是具体的速率,而由于内存是一周期2bit的输出传输,所以MCLK对应的是3000,除以二就行了
而UCLK则指的是内存控制器的频率,所以UCLK和MCLK息息相关,甚至可以说关系到你内存能效的表现
如果你的UCLK/MCLK是1:1,也就是我们常说的不分频模式,此时效能最佳,也是在内存频率发展不算很高的时候的默认 ,而如果你的UCLK/MCLK是1:2的模式了,也就是分频模式,此时意味着你的内存控制器频率下降了一半,会严重影响到内存控制器与核心之间信息交互的效率
那么1:4的模式就你们自行推断吧。
Zen1时期的制程是GF 14nm,然后Zen+时期是12nm,也就是GF的14nm+
那时候AMD的内存控制器能力较弱,作为那个时代的亲历者,我仍然记得那时候的R5/R7基本上内存只能稳2666-3200,能稳超过3200频率的几乎是极少数,我记得大部分还是只能稳3000这个频率,3200都见过不少人报错
这里结合Zen1/Zen+回顾一下前面的内容。如果内存是3200频率,那么意味着UCLK是1600MHz,如果是3000的内存频率,UCLK就是1500,当时对于FCLK的频率挖掘也不算深,内存也没有分频,所以当时的玩家也没有对FCLK深度探索
而到了Zen2时期,AMD开始在消费级玩起了Chiplet,AMD将IO类模块单独拿了出来,用GF 12nm做成了一个单独的IO Die,而CPU的主要计算模块则单独做了CCD,也就是今天Zen4的基本雏形
这之后CPU要访问内存控制器,需要走IF总线跨die去访问IO die,此时IF总线的表现就开始显得重要了。
在这里需要和Intel的总线做个区分,intel的消费级采用的是ring总线
可以说啥都挂在这个ring总线上的,CPU核心、内存控制器还有核显等一大堆东西都挂在ring总线,intel的核心要访问内存控制器,只需要走ring总线就行了,所以ring总线的实际表现就成了关系到intel实际内存效能的主要环节之一
而AMD这边核心要访问内存控制器需要走IF总线(虽然Zen3/Zen4也有了一个Ring总线,但是仅限CCX内CPU核心与核心内互联用),这一点到Zen4也是一样的,
后续Zen5/Zen6应该也还是这样
这里就有一个问题了,需要跨die走基板的信号频率没办法做的太高,所以Zen2/Zen3时期的FCLK基本上只能稳定在1600-1900MHz之间,
而且AMD为了解决内存高频上不去的问题,引入了IF总线与内存的分频机制。
当内存频率超过一定值时,ZEN2架构的锐龙处理器就会自动切换到内存/IF总线2:1分频
比如说DDR4 4000的频率,此时MCLK频率是2000,FCLK和UCLK就只有1000了,如果以不分频的标准来看,FCLK和UCLK应该要2000的频率才对
当然不同主板可能有差异,有些异步之后的FCLK频率会保持分频前的数值
不过由于FCLK上不了这个频率,但是又想实现4000这个频率,就以降低实际效能为代价来实现这个目标了
在这个模式下因为FCLK频率没办法推到太高的问题就被解决了,所以线程撕裂者平台就先intel一把实现了四通道DDR4 4800
根据大量样本来看,AMD官方这个所谓的内存频率一定值的范围大概在3200-3800之间
也就对应了1600-1900MHz的FCLK频率,绝大多数Zen2/Zen3的CPU都只能跑3600-3800的频率不分频,极少数体质极好的可以实现1933MHz的FCLK频率,从而实现3866不分频,而一些体质烂的也就只能稳3200的频率在用。
根据AMD的介绍,这个不分频的区间,FCLK:UCLK:MCLK的比例为1:1:1,这就是不分频的方案
比如内存频率3600,MCLK就是1800,UCLK和FCLK都是1800。如果是3200的内存,那么MCLK、FCLK和UCLK都是1600MHz
而APU则不同,APU是单die设计
CPU核心经过IF总线访问内存控制器不需要去走基板长距离跨die,所以4750G/5700G这些产品的不分频上限就显著更高,FCLK甚至可以达到2300MHz以上
这时候内存就顺理成章可以实现4400以上不分频了,上限显著超过了非APU版。
从这些现象中可以得到结论,在AU内存的这整个一环节中,FCLK是那个瓶颈,如果能提高FCLK的频率,那就能把不分频的上限拉高
时间到了Zen4,AMD更换了全新的AM5插槽,CPU die升级到了5nm,IO die升级到了6nm,同时也放弃了DDR4内存的支持,全面支持DDR5
到这里就又有一个问题了,DDR5内存起步4800,而如果继续按照Zen2/Zen3那一套1:1:1的模式来进行的话,那这DDR5时代就拉不上去了
因为如果要按照这个模式来,哪怕是4800的频率,也会要求FCLK频率达到2400MHz
而如果是DDR5 6000,这会要求FCLK频率达到3000MHz,这显然是超过AMD目前非APU版能力上限的
所以为了解决这个问题,Zen4时代就将1:1:1改成了2:3:3,也就是FCLK:UCLK:MCLK为2:3:3的比例,这样就保证了UCLK和MCLK继续能保持1:1
相较于原本1:1:1的模式,这个模式降低了FCLK的频率,理论上来说效能就会下降
因为IF总线的频率关系到你CPU核心访问内存控制器的速度,这一段路的速度要是下去了,这会在很大程度上影响CPU访问内存控制器的效率,而内存速度和内存控制器的速度大幅提高的时候,IF总线的频率提升速度跟不上,也会拖整体的后腿。
最终在2:3:3的模式下,Zen4这一代内存频率的上限大概就是6400了,此时FCLK的频率为2133
MCLK和UCLK都是3200,不借助特殊设备的情况下我几乎没有看到过有稳定过测更高频率的zen4了
当然这个2:3:3是EXPO下的参考比例,更贴切的描述应该是FCLK频率:1:1
这里FCLK是被解放出来的那个数据,因为跟不上后面两个参数的发展,所以FCLK的频率是你能跑多高就算多高 。
在实际对比中你们就会发现同样DDR5 6000 C30的内存,AMD的7000系列的带宽表现就会逊色于intel平台
这个现象在DDR4时代是没见过的,DDR4时代一般频率和时序一样的时候,带宽表现是差不多的
这也许是IF总线所带来的局限吧,IF总线为AMD提供了高拓展的未来,实现了单CPU 32核到96核的扩展
甚至未来还会上128核,但同时总线速度的提升较为缓慢,尤其是需要跨die传输型号的时候,频率实在是没办法做高
我个人猜想如果AMD想要让FCLK频率大幅提高的话,可能需要改新的布线设计和全新的基板
外置IO die这个设计AMD可能会继续玩下去,那么就无法避免CPU核心跨die走基板长距离去访问内存控制器
而更先进的布线设计以及制程升级可以改善这个问题,Zen4的FCLK频率对Zen3的提升也许就是受益于此
如果下一代Zen5可以让FCLK频率提升到2400的话,那么内存频率就可以提升到7200不分频,而如果像当初Zen3延续Zen2的频率那样,继续保持2000-2133的话,那下一代也只能6000-6400,这样去面对intel未来可能会出现的XMP8000甚至更高频率内存的冲击,也许只能靠推广X3D来辅助了,当然X3D也并不全是好处,这个可以自己挖掘一下。
以上就是台式机锐龙的发展情况,下面来讲几个我个人测到的例外,所谓例外其实就是为他们各自的普通做了特殊优化的,和上面的情况有出入,基本是移动端的锐龙
首先是6nm工艺的RMT,这个系列相信大家也基本都知道
CPU是移动端zen3,但是GPU从vega升级到了RDNA2,然后支持了DDR5和LPDDR5内存。
去年我拿到了天选3,6800H+3060的配置,所以进行了一些测试,发现在DDR5 4800内存下,MCLK和UCLK是1:2的模式,MCLK是2400,UCLK的1200了
而FCLK的频率是1800MHz,这个比例就变成了3:2:4,还是分频的模式,最终AIDA64的CPU带宽测试表现不太好
不过LPDDR5 6400内存下,GPU可用的memory copy这一项就比较高了,这一项改动倒是特别适合核显发挥,因为对GPU来说延迟不太重要,copy带宽非常重要
另一个是上笔记本的台式机版锐龙,前段时间有幸短暂的测试过7945HX(ROG的冰刃7)
我发现7945HX虽然和桌面版的7950X是同核心,但是内存运行模式是有一点区别的,实际抓取运行时的频率之后发现7945HX将2:3:3的模式改成了2:2:3
这次是UCLK的频率和FCLK相同了,而MCLK的频率继续保持高频,这倒是挺让我意外的
这应该算半个分频模式吧,因为这时候UCLK:MCLK的比例变成了1:1.5,没完全变成1:2,但也不是1:1了,不过好在对比桌面端直接跑4800 C40以2:3:3的模式运行时并没有啥落后
所以影响不算大,这个结果就仅供学习参考。
再往前的移动端我就没有留下相关测试信息了,其实Zen4往前的无非就是分频不分频的玩法,具体比例就以实际测试为准就好,这里我还是鼓励大家自己多测测数据,不要只知道看别人的数据,最好是要自己复现一下。
不过这里要打个预防针,如果你们测到这样的表现也不要感到奇怪
这是正常的。换个角度想,这样的设计思路是为了让CPU频率在压力测试时尽可能的高,所以将总线频率降低,这样在应付一些特殊需求的时候是效果非常显著的,建议intel也学一学。
行了,这次的小科普到这里就结束了,本文主要针对入门级新手,所以前面会写的麻烦点,希望小白们都能看得懂,对这几代AMD的内存运行模式有一个基本的了解。