如果有人说要“优化”CPU,一般意思是让它跑得更快。但硬件研究员Christopher Domas做的是完全相反的事:他专门寻找执行得最慢的指令,还为此建了一个“CPU去优化排行榜”。
这个榜单的当前纪录保持者是一条名为fxrstor64的指令,它完成一次执行需要整整62秒,相当于超过1980亿个时钟周期。这种指令原本用于恢复浮点与SIMD寄存器的状态,从内存中加载512字节的数据回处理器,正常情况只需极短时间。然而在某些极端硬件条件下,它变成了一个极慢的“钉子户”。
![]()
具体是怎么做到的?Domas先用自己的mmiotic工具,在CPU内部的PCIe互连结构里找到一处特别慢的区域,然后让CPU从MMIO(内存映射I/O)读取这512字节状态。MMIO设备往往比内存慢得多,这样强制加载后,指令已经能拖到74亿个时钟周期,也就是大约23秒。
这还远没结束。他又往总线里“下毒”:通过一批批4字节读取请求攻击另一个高延迟MMIO寄存器,把CPU的PCIe根复合体喂得满满当当,导致fxrstor64的状态恢复请求只能在队列里慢慢排队。于是最终耗时被推到了62秒。
更夸张的是,这个纪录可能还会被打破。Domas计划利用Intel Sapphire Rapids处理器中的AMX指令集,把状态区域从512字节扩大到8KB。如果沿用同样的拖延战术,单条指令的耗时预计能突破1万亿个时钟周期,换算下来大约5分钟。
这样做的意义在哪里?延迟分析本身是硬件与软件优化的基础,绝大多数人都在寻找“最快路径”;但反过来研究“最慢路径”,能暴露出总线排队、MMIO处理以及特权状态恢复中的脆弱点。对系统安全研究人员来说,这种极端延迟不仅是有趣的实验,更可能成为构造攻击或侧信道的新途径。
当所有人都想让CPU更快的时候,他用一条62秒才执行完的指令提醒我们:快与慢的极限,有时是同一个地方。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
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.