Ryzen FMA3指令紧紧挂起操作系统



事实证明,在AMD Ryzen处理器上执行某些特定的FMA3指令会导致严重的OS崩溃。

Intel(在Haswell中)和AMD均支持FMA3(融合乘加)等指令。 这些指令类似于d = round(a × b + c) ,其中d必须与abc放在同一寄存器中。 相比之下,FMA4指令仅受AMD支持(在Buldozer和更高版本的处理器中)。 abcd可以位于不同的寄存器中。

Flops版本2中发现了处理器中的错误,这是一个用于测试CPU的简单而鲜为人知的实用程序。 应该注意的是,该实用程序的开发者Alexander“ Mystical” Yee(Alexander“ Mystical” Yee)将其定位为对处理器的微体系结构敏感的特定测试实用程序。 在其他基准测试中,该错误从未出现。

使用Flops version2实用程序,可以为所有主要的x64体系结构(Core2,Bulldozer,Sandy Bridge,Piledriver,Haswell,Skylake)提供特定的二进制文件。 但是目前,在WindowsLinux的二进制程序集中都没有用于测试Zen的版本。 因此,现在为测试Ryzen使用了其他架构的二进制文件,即最接近的Haswell。 FMA3指令的上述错误是两周前由Flops程序的作者发现的 ,当时他在具有以下配置的计算机上对Haswell的二进制股票进行了测试:

  • 锐龙7 1800X
  • 华硕Prime B350M-A(BIOS 0502)
  • 4 x 8GB海盗船CMK32GX4M4A2400C14 @ 2133 MHz
  • Windows 10周年更新

突然发现系统通常在以下操作过程中冻结:

Single-Precision - 128-bit FMA3 - Fused Multiply Add:

有时测试成功通过了此操作,但将来仍会挂在其他操作上。

开发人员解释说,他的测试是开源的,如果您不信任结果,则可以自己在Visual Studio中获取并编译二进制文件,然后仔细检查结果。

Alexander知道在报告所宣传的处理器中的错误时会引起什么注意。 因此,他反复检查了结果。 处理器以所有时钟频率挂起系统。 而且在单线程模式下工作时,每个核心都挂在系统上。

存在一些可能的原因,故障的原因可能仍然不是在处理器中,而是在其他地方。 例如,在特定的主板,特定的BIOS,特定的操作系统中……还可能是什么?

开发人员与同事共享了结果,以便他们在计算机上检查Zen的其他版本。 确认了其他处理器,不同主板,不同版本的Windows和Linux下的故障。

在Alex致电之后的第一天,Ryzen处理器的五个所有者启动了测试。 结果如下:

确认的失败:
  • 1800X +华硕Prime B350M-A(BIOS 0502)
  • 1700 +华硕Prime B350M-A(BIOS ???)
  • 1700 +华硕Crosshair VI Hero
  • 1700 + Asus Crosshair VI Hero(BIOS 5803)(两个G.Skill + Kingston内存库)
  • 1800X + Asus Crosshair VI Hero(Windows 7)-一旦通过测试,反复失败。

确认无故障运行:
  • 还没

基准测试开发人员检查了所有FMA变体(128位,256位,单精度,数字双精度)。 在所有情况下,计算机都会死机。

他仅受到一个细节的困扰:尽管测试编写正确,但由于某些原因,尽管它们也使用FMA进行测试,但由于某些基准(例如prime95和y-cruncher)不适合该测试。

因此,仍然存在一些不确定性。

最终,在3月16日,从AMD代表处收到了一条正式消息 ,该错误将在新的AGESA代码(AMD通用封装软件体系结构)中修复,该协议尤其用于初始化AMD处理器内核。 换句话说,该公司的专家检查并确认了该错误。 后来,AMD代表在对媒体的评论中正式确认了该错误

幸运的是,可以在不更换硬件的情况下修复此类错误,而只需更新微码即可。 该错误无关紧要,因此不会引起处理器审查或对公司造成任何其他问题。 实际上,在现实世界中,几乎没有人会遇到此错误,它不会影响计算机或处理器的性能。

坏消息是攻击者可以将其用于DoS攻击。 即,该错误主要是信息安全性的问题。 毕竟,在用户模式下而不是在操作系统的内核级别上运行的普通用户程序不应将系统挂死。 但这正在发生。

测试是针对另一种体系结构在二进制文件上运行的事实并不那么重要。 基准测试的作者写道,如果任何处理器支持适当的指令集,则必须成功地从任何二进制文件中重现测试。 但是,即使您使用不兼容的说明运行测试,该程序也不应将系统挂死。

甚至可以从虚拟机下运行恶意代码的事实加剧了安全漏洞的危险,它仍然会挂在整个系统上。 装有新Ryzen处理器的计算机可以挂起任何恶意软件。 也许甚至通过浏览器。

如前所述,AMD正在努力更新AGESA协议。 之后,将为所有主板上的所有BIOS版本发布补丁。

Source: https://habr.com/ru/post/zh-CN402551/


All Articles