IT之家 8 月 8 日消息,当整个行业都在追求“跑得更快”时,硬件研究人员Christopher Domas却反其道而行之——他在GitHub上发起了一项名为“CPU Deoptimization(反优化)”的实验项目,专门寻找执行延迟最高的单条机器指令。 与传统CPU优化方向截然不同,该项目并不试图让指令运行更快,而是通过构造特殊运行环境,找出能让处理器停顿时间最长的x86指令。目前,该项目公布的x86架构最慢指令纪录为fxrstor64,单次执行耗时约62秒,相当于1980亿个CPU周期。 在软件和硬件优化领域,指令延迟分析通常用于研究低级指令的执行时间,以改进处理器架构或优化应用程序性能。而Domas创建的“CPU反优化排行榜”则完全颠覆了这一思路:通过人为构造极端条件,让处理器陷入尽可能长的等待。 目前位列榜首的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的状态恢复操作被迫排队等待,最终将总耗时推高至62秒的惊人水平。 在后续实验中,Domas计划利用英特尔Sapphire Rapids处理器支持的AMX指令测试xrstore64指令。由于AMX状态数据区域从512字节扩大至8KB,理论上可能让单条指令执行时间超过1万亿个CPU周期——这将是当前纪录的数十倍。 目前,x86架构的“最慢指令排行榜”已经公开在GitHub上。Domas表示,未来还计划建立ARM和RISC-V架构的对应排行榜,让“最慢指令”的版图进一步扩大。 值得注意的是,该项目对测试过程设置了一系列严格限制:测试平台可以自由选择,但评分只计算单条指令自身的执行时间;可被中断的指令不能参与排名;处理程序中运行的模拟指令也不计入结果。所有测试时间均根据CPU基础频率进行标准化处理,且测试平台未进行任何硬件改装——这意味着这些惊人的延迟数据,是在完全正常的硬件上实现的。 此次实验并非Domas首次涉足低级硬件与指令相关研究。他此前还开发过名为movfuscator的项目,这是一个只使用mov(数据移动)指令就能生成C程序代码的编译器,同样以“反常规”思路著称。 除了寻找最慢指令外,Domas开发的mmiotic工具本身也具有实用价值。该工具通过测量不同物理地址的访问时间,可以帮助研究人员分析硬件拓扑结构、发现设备寄存器、识别虚拟化环境,并观察硬件设备的活动状态,对底层安全研究和硬件调试均有参考意义。 IT之家附GitHub地址:https://github.com/xoreaxeaxeax/mmiotic
![]()
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.