数码科技

AMD Ryzen: 严谨技术解析

相信文章会解答人们的很多问题:电压、体质、频率调整、超频及保护措施、Ryzen移动版、CCX互联缓存等。

名词

– CCX – Compute Complex,内含4个Zen核心,8MB L3。
– PState – Performance State. 不同状态下电压和频率不同。
– Zeppelin ? Summit Ridge (AM4), Snowy Owl (SP4) 和 Naples (SP3) 等Zen架构CPU中die设计的代号。

– dLDO ? Digital low-dropout voltage regulator, 数字低压差稳压器
– XFR ? Extended Frequency Range,拓展频率范围
– MACF – Maximum all core frequency,全核最大频率
– MSCF ? Maximum single core frequency,单核最大频率
– ACXFRC ? All core XFR ceiling,全核XFR上限
– SCXFRC ? Single core XFR ceiling,单核XFR上限
– SMU ? System management unit,系统管理单元

SMU ? 幕后的掌控者
由于集成了系统管理单元SMU,在超频时Ryzen和之前的架构都不一样。

在默频时,Ryzen的功耗全由SMU控制,SMU将发挥它的全部功能,掌管一切。SMU的管理功能包括功耗、电流、温度限制器,电压控制器以及功耗门限等。

如果你不超频,可以无视这些玩意。

为了超频,AMD的工程师还给出了一个特别的模式:“超频模式”,超频模式下会禁用所有的限制器,电压控制器以及保护措施(除了CPU温度保护)。

如果你在默认的P0状态基础上超频,“超频模式”就会自动启用。SMU是通过向主板的诊断显示(80)端口发送“0C”来判断超频模式的。

在Zeppelin上,想了解CPU的不同频率状态(PStates)、电压,特别是实际等效电压是非常困难的,远比之前的架构困难得多。与之前的推土机家族(Family 15h)不同,Zeppelin的加速PStates(Turbo&XFR)是完全不可见的,这也是他们为什么被称为“Shadow PStates”的原因吧。这意味着Zeppelin的PStates不再以标准MSR寄存器定义,也不能被用户修改甚至看到。用户能够确认Shadow PStates生效的唯一方法,就是看到即时频率/电压的上升。

在不超频的状态下,SMU会自动通过电压控制器控制电压。

比如P0状态下,可能会给1.37500V电压,实际等效电压大概在1.26250V,或者稍高。这不是个bug,而是CPU的正常工作状态。基本上来说,MSR中定义的电压只是上限而已,而SMU会在这个值的基础上自动降压。我们测试的样品上,P0(3.6GHz)的调整值为-120mV,P1(3.2GHz)为-144mV。

当“超频模式”激活时,SMU会禁用电压控制器,其他的很多功能也会被禁用。这会造成一个假象:超频后功耗猛增。在技术上来说这是正确的,主要原因是关闭了SMU提供的自动降压预设,导致CPU电压上升50-150mV。也就是说,开始超频的时候电压已经偏高。在这时候不要立马加压,而是先尝试提升频率,在不稳定需要加压的时候再加压。


点击查看原图

同频3.6GHz功耗比较,超频模式下比默认自动电压下功耗高了18.74%


点击查看原图

关闭自动电压,设置同样的电压,功耗相同


“超频模式”的另一个缺点就是会关闭加速和XFR。也就是说如果你全核超不到默认的单核XFR频率,单线程性能会下降。




XFR

XFR实际上是对标准CPB加速算法的拓展或加强。在理想状态下,CPU能够提频到原有的加速频率之上。XFR也有单核和多核的频率上限。

比如1800X,全核频率3.6GHz,单核频率4.0GHz,在全核+XFR下能达到3.7GHz,单核+XFR则是4.1GHz。

XFR的提升频率在不同产品上可能不同。但在1800X上只有100MHz。理论上任何时候都能启用XFR,但在部分情况下(Linpack/P95)下频率通常会降到3.6/4.0GHz。

外频

Ryzen默认并不支持超外频(BLCK)。AM4上超外频是可能的,但并不推荐。因为外频和其他接口挂钩,比如PCIe。而且不像Intel,AM4没有异步模式,不能在调外频的同时保持PCIe频率不变。PCIE3.0通常能到107MHz,再往上需要调到PCIE2.0或1.0。

超外频会带来很多稳定性问题。

部分主板上有额外的第三方时钟生成器,可以超到106MHz左右。





内部电压调整(dLDO

Zeppelin是AMD首次集成电压调节模块。与Haswell/Broadwell上完全集成的电压调节模块(FIVR)不同,AMD的调节器并非基于超高频开关电路,而是超高效数字低压差稳压器(dLDO)。大部分区块(核心/缓存/Data Fabric)都有自己的dLDO,能够分别调整。


当然普通用户可以完全无视。因为零售版Ryzen上大部分的dLDO都是永远处于by-pass模式,实际的调节器处于关闭状态,电压调节全部放在主板上。





CCX之间的频率关系

在内部频率关系上,Zeppelin与之前的架构也很不同。核心、L1、L2的速度永远都是绑定,这和以前一样。但这次的L3也和核心运行在同样频率(全速)。由于L3被整个CCX内的核心所共享,因此L3的频率和该CCX内最高的核心频率一致。正常情况下,同一个CCX内的所有核心都运行在同样频率。


所以CCX的结构给了超频者一些限制。CCX内的4个核心必须运行在同频(处于同样的PState),当然也可以改变每个核心的频率,让他们处于不同的PState之下,但很多情况下结果会和预想的不同。由于L3的频率和该CCX内最高的核心频率相同,如果同一CCX内的核心不是同频,那么请求和实际运行频率就会有差距。


等效CPU倍频与CPUFID 和 CPUDFSId有关。CPUFID是一个范围在16-255的整数值,而CPUDFSId是1-6之间的浮点值。等效倍频=((CPUFID / (CPUDFSId / 8)) / 4)


如果同一CCX内的核心不是同频,等效倍频的计算就更加困难。如果所有核心的PStates都有同样的CPUDFSId值,等效倍频=目标核心CPUFID / (1 + ((最高频率核心CPUFID – 目标核心CPUFID) / 最高频率核心CPUFID)),比如最高频率核心的倍频是36.0x(CPUFID = 144 , CPUDFSId = 1),其他目标核心的倍频为32.0x(CPUFID = 128 , CPUDFSId = 1),等效倍频=128 / (1 + ((144 – 128) / 144)) = 115.2 (28.8x)


启用了CCX中,开启的核心数必须相同,可能的配置为: 1 (1:0), 2 (2:0 or 1:1), 3 (3:0), 4 (4:0或2:2), 6 (3:3), 8 (4:4)





Data Fabric

Zeppelin的北桥,官方称为Data Fabric(DF),双向256bit crossbarDF频率和内存控制器挂钩,比例为1:2【比如DDR4-2667 MEMCLK(内存频率) = 1333MHz DFICLK(DF频率)】。这意味着内存频率直接会影响DF的性能。


在某些情况下,Zeppelin的性能可能会随内存频率提升而大幅提升。

但实际上这不是通过提升内存频率带来的,而是同时提高的DF频率带来了性能提升


零售版Zeppelin官方支持的最高内存频率为DDR4 2667(2x 1R内存模组)或2400MHz(2x 2R内存模组),但2933、3200MHz的频率也可以在部分主板上达成。






超频性能

高端Ryzen的超频空间非常小。因为默频就已经很高,同时本来就是高密度的设计,Zeppelin用的还是低功耗制程(三星 14nm LPP)。


点击查看原图



可以从曲线中看到,Zeppelin的频率在3.3GHz之前是完美的线性增长(每100MHz需要25mV)。首次偏差出现在3.3GHz,第二个也是最后一次偏差出现在3.5GHz。在这之后电压已经不是线性,需要的电压大幅上升。


所以最理想的频率范围在2.1-3.3GHz,再往上每100MHz需要的电压会明显增加。

这意味着3.8GHz+的频率会带来功耗和温度的大幅上升。

OCRU做的表格,完全符合上面的结论,3.8GHz之后每100MHz都需要加0.1V电压。

作为对比,之前AMD两代桌面版的设计:

– Orochi Rev. C,也就是Vishera打桩机,32nm SHP SOI – (第一个关键点出现在4.4GHz,第二个在4.7GHz)

– Kaveri / Godavari,28nm “SHP” HPP Planar – (第一个关键点出现在4.3GHz,第二个在4.5GHz

这个曲线和Ryzen预设的PState电压/频率基本吻合。

在高端型号上,比如1800X,3.6GHz默频实际(等效)电压范围在1.200-1.300V,而加速PState下(XFR,4.1GHz)下频率可以高至1.475V。

测试样品上P0 3.6GHz实际电压为~1.25000V,而单核XFR 4.1GHz实际电压达到了1.47500V。

AMD还没给出最高的安全电压【VDDCR_CPU – CCX电压和VDDCR_SOC – 北桥/SoC电压】,但估计高于1.47500V的电压不会适合超频和长期使用。

高端型号Ryzen的超频是把双刃剑。因为根据加速和XFR的工作原理,可能会降低单线程性能。而且超频空间已经很小。





功耗

功耗包括CPU核心+北桥/SoC,不包括开关和传导损失。

峰值功耗使用Firestarter FMA/AVX,功耗比日常的多核满载使用要高30%左右。

Note:当前的Prime95(28.10)并不能很好地对Ryzen进行压力测试,测得的功耗会更低。使用Firestarter和Linpack的功耗会显著增加。

点击查看原图

下面使用的是MCRT,Monte Carlo raytracer,来模拟真实应用。

点击查看原图

点击查看原图




彩蛋

Zeppelin上采用了非常高级的功耗管理。和Carrizo/BristolRidge相同,Zeppelin也能够支持cTDP。虽然零售版的Ryzen官方不支持cTDP,实际上只是在迷惑人们。


点击查看原图

在30W TDP下,CinebenchR15能够达到850cb。这个分数意味着什么,可想而知。

只要在理想频率范围内,Zeppelin可以达到闻所未闻、怪物级别的效率。

【可以期待一下Q2的Naples 32C,以及H2到来的RavenRidge 4C。】




CCX互连

如果你读过Ryzen的架构解析,你就知道:Ryzen的L3不是真正的general-purpose cache通用缓存,而是victim cache。


Victim Cache是特殊的一类缓存。如果从更低一级缓存上有被驱逐的数据,它将被放进victim cache。然后和通常缓存一样工作,直到有数据需要从中提取,此时victim cache中的数据将与更低一级缓存中的数据进行交换


Haswell的变种Crystal Well/Broadwell上搭载的L4就是victim cache,被CPU和iGPU共享。

Crystal Well的L4结构过为复杂,因此后来Skylake上换回了普通的缓存。

582d1488708878.jpg

CClk(Core Clock):核心频率

MemClk(Memory Clock):内存实际运行频率,DDR4 2667运行在1.3GHz,DF与MemClk同频

LClk(Data Launch Clock):IO 集线器 控制器(PCIe等)运行的固定频率


法国媒体的测试结果CCX互联带宽22GB/s并不是AMD给出的官方数字,只是单方面的猜测。


大多数媒体只看到了22GB/s,而并没有看到这是个假设更没有看到假设前提:采用的是DDR4 2400,而且尚不确定Data Fabric提供的带宽是怎样分配,L3和内存的优先级如何


比如在搭配DDR4 2666时,DF会跑在1333,双向总带宽实际上是有41.6GB/s,内存和CCX共享

使用DDR4 3600时,DF频率1800,双向带宽就有56.25GB/s,提升明显。

所以高频内存对于Ryzen的性能发挥很有必要,因为DF频率也会提升。


而且法国媒体更不清楚的是,除了Data Fabric,Zeppelin内部还有很多其他的Fabric。


一切都不清楚,没有官方解释的情况下就妄加猜测或者说肯定绝对是不对的。

当前版本AIDA64测得的数据有问题,AIDA64表示将在后来的版本中进行修复(刚更新的版本也没有修复)。





其实Ryzen类似于NUMA,问题主要会出现在:


1.某个线程需要8MB以上的L3时。比如如果CCX0中某个线程需要12MB的L3,但另一半4MB L3位于CCX1中。同时发送请求,但需要等待CCX1中的数据。

2.Windows经常切换线程负载,不管数据在缓存的哪个位置。对于Intel和AMD的老产品没问题,因为都是共享L3。


img002.png

img003.png

img004.png

点击查看原图

img001.png

PCPER的延迟图:同CCX内的访问速度AMD比Intel要快,但CCX之间访问较慢

这些问题,虽然有架构本身的限制,但可以通过软件优化在很大程度上解决。比如AMD和微软正在开发补丁解决线程调度问题。这能够给游戏带来很大提升。

在Crystal Well上的L4,Linux的内核+驱动更新后,也提升了一倍性能。软件和系统等优化占有很大地位。


img008.jpg

img009.jpg

img010.jpg


另外,说胶水八核的可以歇歇了。不带这无脑黑的。

来源:Ananctech论坛/Reddit,本站整理、原创翻译,转载务必注明出处。

剧毒术士马文

留学中 Comp.Arch|RISCV|HPC|FPGA 最近沉迷明日方舟日服 联系方式请 discord 或者 weibo 私信。目前不在其他平台活动。 邮箱已更新为[email protected]。 看板娘:ほし先生♥

相关文章

13 评论

  1. 发现一个问题,现在ryzen在游戏环境下,同级别产品,CPU占用率远低于Intel,所以游戏性能跟不上,锐龙推出都一年多了,游戏优化还没跟上吗?在某些游戏下,占用率相近的锐龙与酷睿,锐龙的性能的确更胜一筹

  2. 两个CCX对于没考虑NUMA的游戏来说确实比较麻烦.
    如果只是用了openmp这种自动并行化的库的话,那就更麻烦了.

  3. http://www.ednchina.com/news/article/20170314zen
    看看这个,马文。

  4. 找了几篇国外的评测,但可惜游戏评测只有1080分辨率的,所以就不贴出来地址了。这里给出功率评测结果。
    关于ryzen功耗和电源选择 GTX1080最大功耗180w,(1080ti+70w,vega+45w)
    首先是台GTX1088+16GB2400+风冷,下面是整个系统的功率消耗(含显卡轻载功耗)
    待机-纯CPU负载
    1800x 38-155
    1700x 38-138
    1700 38-109
    17004G 45-214
    另外一个带显卡负载thief(同样是GTX1088),但超频用的水冷
    1800x 45-174-273
    1700x 44-144-261
    1700 43-124-254
    17004G 51-214-288
    所以,不超频,配单1080的话:
    1800x约354w,
    1700约304W
    如果打算升级vega,那就分别再加45w。这样就是400w和350w。
    所以现在配机器,不交火就没有必要买额定功率超过550w的电源了。

  5. 避开雕牌,其他牌子基本问题不大,新BIOS已经发布了,到手先刷BIOS再上机

  6. 太棒了,就算不用高塔散热器,也可以无风扇运行了。另外,从这个评测看,AMD是想先给民用做个测试,做好软件铺垫和宣传工作,然后直接和intel抢最大头市场,发布服务器芯片。真可惜没有同时发布APU。AMD又一次错过笔记本市场,因为大家肯定等10nm的笔记本。货到了,马上装系统去。

  7. 6核的应该全部是这种。即使8核的良率已经非常高,当市场上需要6核产品是,恐怕用完好的8核屏蔽两个当6核也比重新设计生产原生6核要更划算。

  8. 比较关心内存兼容问题,听说好多翻车了,现在还没到货,心里忐忑

  9. 以后的1600X 的六核是不是也是两个四核模块屏蔽两核的呢?

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

返回顶部按钮