在锐龙AMD Ryzen处理器游戏帧数低这个问题,AMD CEO苏姿丰女士在reddit上给了我们更详细的答案:在Windows10上,系统并没有正确识别锐龙AMD Ryzen处理器CCX的结构(Zen架构将以四个核心为一个群组“CPU Complex”,也就是“CPU复合体”的意思。),Windows 10认为每个核心(包括超线程)都有一个L2、和L3的缓存,换一种方式来说,就是系统默认锐龙AMD Ryzen处理器一共有136MB缓存。
也就是说Windows10系统目前只能在一个CPU群组中达到负载平衡,不然会导致缓存未命中带来的损失。所以严格意义上来讲,这是Windows 10系统BUG,而不是AMD处理器BUG,因为在Windows 7测试中,游戏性能比Windows 10要高出17.8%。
若想验证AMD说法是否正确,可以看一下PCGH的游戏测试表格。PCGH分别测试了四种情况的游戏帧数,8核(4核心4线程)、6核(3核心3线程)、4核(2核心2线程)、4核(4核心0线程)。
从上图中可以发现,紫色曲线4核心0线程的游戏帧数超过了黄色曲线4核(2核心2线程),而Intel 6950X不会因为超线程降低单核性能。所以超线程会降低Ryzen的单核性能看起来是真的,这或许是因为超线程开启后都会被Windows 10系统将微指令队列(分发器)、退出队列、存储队列强行共享给两个CPU复合群组,导致效率低下。
当然这个问题是可以解决的,我们期待Windows10新的更新,或许会让Ryzen能在游戏中和4核i7x相当。
锐龙AMD Ryzen内存和CPU缓存慢原因分析
其实锐龙AMD Ryzen处理器游戏帧数低,内存也得背锅。很多游戏对内存延迟非常敏感,而锐龙AMD Ryzen处理器的内存延迟过高,也是导致游戏帧数不敌Intel的一个原因。在媒体测试中,Ryzen 1800X的内存延迟结果约为90ns,比Intel i7-6900K还要高,就连自家上一代的FX-8350K的60ns都比不过。难道AMD新工艺还倒退了不成?要分析这个问题,我们还得从锐龙AMD Ryzen处理器的缓存上说起。
当CPU要读取一个数据时,首先从CPU L1缓存中查找,找到就立即读取并送给CPU处理;没有找到,就从L2缓存中查找,然后在L3缓存中查找,最后才会从速率相对较慢的内存中读取。这一点上Intel做的非常好,严格执行这一顺序。如i7-6900K的L1、L2、L3各自分工明确,32KB以下的数据会被优先放在L1中处理,超出容量的数据会顺势溢出至L2当中,而当数据量大于256KB,小于16MB时,L3会担任起大任,只有当数据量超过16MB时,处理器才会向系统内存求助。
但Ryzen 7 1800X却有些不同,虽然L1和L2的分配逻辑较Intel来说没有区别,但L3就不一样了。由于Ryzen采用了CCX设计,在任何时间,每个四核心模组的L3的访问上限都被限制在了8MB,所以即便是两者拥有相同的16MB L3缓存,但实际容量却相差一半。导致Ryzen 1800X在8MB时就像内存求助,从而导致内存延迟大幅增加。
我们来看一下外媒测试的数据,测试处理器包括i7 6900K、Ryzen 1800X