來源:IT之家查看原文 ↗
原文著作權歸來源方所有,本站僅作收錄、翻譯或格式整理。
媒體:0 則已核驗,3 則僅保留來源
事實脈絡
IT之家 8 月 8 日消息,硬件研究人员 Christopher Domas 昨天在 GitHub 上发起了一项名为“CPU Deoptimization(反优化)”的实验项目。 与传统 CPU 优化方向不同,该项目目标不是让指令运行更快,而是寻找执行延迟最高的单条机器指令。 目前该项目公布的 x86 架构最慢指令记录为 fxrstor64,执行一次耗时约 62 秒,相当于 1980 亿个 CPU 周期。 在软件和硬件优化领域,
解讀與影響
导读摘要
硬件研究员发起“反优化”实验,寻找 x86 架构中延迟最高的指令,目前 fxrstor64 以单次执行耗时约 62 秒、相当于 1980 亿个 CPU 周期的成绩,登顶最慢指令“耻辱榜”。
正文
目前,该项目的“耻辱榜”榜首被 fxrstor64 指令占据。根据项目公布的数据,这条用于恢复 x87 FPU、MMX、XMM 以及 MXCSR 等浮点相关状态的指令,在特定条件下单次执行竟耗时约 62 秒。换算下来,这相当于处理器耗费了约 1980 亿个时钟周期来完成一次操作。作为对比,绝大多数常规指令的执行周期仅为个位数或数十个周期,如此巨大的延迟差距,使得 fxrstor64 在该榜单上显得格外突出 IT之家。
“CPU Deoptimization”项目公布的 x86 最慢指令排行榜
fxrstor64 之所以如此缓慢,与其复杂的微架构实现机制密切相关。当操作系统或虚拟机管理器进行上下文切换,需要恢复一个进程的完整浮点状态时,就会用到该指令。其巨大的延迟可能源于在特定微架构下,处理器需要从内存中加载并解码一个庞大且复杂的状态数据块,这个过程可能触发大量的微码辅助执行、缓存未命中和内部状态序列化操作。Domas 的实验正是通过构造极端的测试条件,将这些平时被流水线和缓存隐藏起来的开销放大并暴露出来 IT之家。
Christopher Domas 发起的“CPU Deoptimization”实验项目页面
这项看似“无聊”的研究,在工程和产品层面却有着实际意义。理解这些指令的性能“陷阱”,对于开发底层系统软件(如操作系统内核、虚拟机监视器)至关重要,可以帮助开发者规避在关键路径上使用它们,从而避免引发难以排查的性能抖动。此外,从安全研究的角度看,这类极端耗时的指令也可能被用于构造侧信道攻击或拒绝服务攻击的向量。该榜单也为芯片设计者提供了来自外部的独特反馈,揭示了未来架构设计中值得优化的微指令实现 IT之家。
參考來源
來源原文
IT之家 8 月 8 日消息,硬件研究人员 Christopher Domas 昨天在 GitHub 上发起了一项名为“CPU Deoptimization(反优化)”的实验项目。 与传统 CPU 优化方向不同,该项目目标不是让指令运行更快,而是寻找执行延迟最高的单条机器指令。 目前该项目公布的 x86 架构最慢指令记录为 fxrstor64,执行一次耗时约 62 秒,相当于 1980 亿个 CPU 周期。 在软件和硬件优化领域,指令延迟分析通常用于研究低级指令执行时间,以改进处理器架构或优化应用程序性能。而 Domas 创建的“CPU 反优化排行榜”则反其道而行之,通过构造特殊运行环境,寻找能够让处理器停顿时间最长的 x86 指令。 目前排名第一的是 fxrstor64 指令。该指令用于恢复 SIMD(单指令多数据)计算相关寄存器状态,需要从 512 字节内存区域加载数据。 为了创造最高延迟记录,Domas 首先使用自己开发的 mmiotic 工具,在处理器内部 PCIe 互连结构中寻找高延迟区域,然后强制 CPU 通过内存映射 I/O(MMIO)读取 512 字节状态数据,使这一过程尽可能缓慢。该步骤耗时约 740 亿个 CPU 周期,即超过 23 秒。 IT之家注:MMIO(Memory-Mapped I/O,内存映射输入输出)是一种让 CPU 通过访问内存地址方式与硬件设备通信的机制,常用于读取设备寄存器数据。 随后,Domas 进一步增加延迟,通过“在加载操作进行期间耗尽互连资源”的方式,让处理器等待更多时间。他利用另一组高延迟 MMIO 寄存器执行连续 4 字节读取操作,持续占用 CPU 的 PCIe 根复合体资源,使 fxrstor64 的状态恢复操作排队等待。 在进一步实验中,Domas 计划利用英特尔 Sapphire Rapids 处理器支持的 AMX 指令测试 xrstore64 指令。由于 AMX 状态数据区域从 512 字节扩大至 8KB,理论上可能让单条指令执行时间超过 1 万亿个 CPU 周期。 目前,x86 架构的“最慢指令排行榜”已经公开在 GitHub 上。Domas 表示,未来还计划建立 ARM 和 RISC-V 架构对应排行榜。 该项目对测试过程设置了一些限制。测试平台可以自由选择,但评分只计算单条指令自身执行时间;可被中断的指令不能参与排名,处理程序中运行的模拟指令也不计入结果。所有测试时间均根据 CPU 基础频率进行标准化,并且测试平台未进行硬件改装。 此次实验并非 Domas 首次进行低级硬件和指令相关研究。他此前还开发过名为 movfuscator 的项目,这是一个只使用 mov(数据移动)指令生成 C 程序代码的编译器。 除了寻找最慢指令外,Domas 开发的 mmiotic 工具还可用于分析 MMIO 访问延迟。该工具通过测量不同物理地址访问时间,可以帮助研究人员分析硬件拓扑结构、发现设备寄存器、识别虚拟化环境,并观察硬件设备活动状态。 IT之家附 GitHub 地址: https://github.com/xoreaxeaxeax/mmiotic