IT时代网8月8日消息,硬件研究者Christopher Domas在代码托管平台上线了一个叫「CPU Deoptimization」的项目,中文可以理解成CPU反优化。名字听着别扭,做的事也确实反着来——它不研究怎么让指令跑得更快,而是专门去找那条能把处理器拖得最慢的机器指令。目前x86架构的榜首是fxrstor64,单次执行耗时约62秒,折算下来相当于1980亿个CPU周期。
平时做指令延迟分析,工程师盯的是低级指令的执行时间,目的是改进处理器架构或者优化程序性能。Domas这个排行榜把方向调了个头,通过构造特殊的运行环境,看哪条x86指令能让处理器停得最久。
fxrstor64凭什么拿第一?这条指令负责恢复SIMD(单指令多数据)计算相关的寄存器状态,需要从一块512字节的内存区域把数据加载回来。Domas先用自己写的mmiotic工具,在处理器内部的PCIe互连结构里找出高延迟区域,再强制CPU走内存映射I/O去读那512字节状态数据,让整个过程尽可能磨蹭。光这一步就花掉约740亿个CPU周期,超过23秒。(内存映射I/O是一种让CPU通过访问内存地址与硬件设备通信的机制,常用于读取设备寄存器数据。)
拖到23秒还不够。Domas接着在加载操作进行期间去耗尽互连资源,用另一组高延迟的MMIO寄存器反复做4字节读取,持续占住CPU的PCIe根复合体,逼着fxrstor64的状态恢复操作在队列里干等。62秒的纪录就是这么攒出来的。
他还有更狠的打算。英特尔Sapphire Rapids处理器支持AMX指令,对应的状态数据区域从512字节膨胀到8KB,Domas计划拿xrstore64做测试,理论上单条指令的执行时间有机会突破1万亿个CPU周期。
榜单本身设了几条规矩:测试平台随便挑,但评分只算单条指令自身的执行时间;能被中断的指令没资格参赛;在处理程序中运行的模拟指令同样不计入。所有测试时间要按CPU基础频率做标准化,平台也不许改装硬件。Domas说,ARM和RISC-V架构的对应榜单也在计划里。
这不是他头一回干这类底层实验。此前他做过一个叫movfuscator的编译器,特点是只用mov这一条数据移动指令来生成C程序代码。至于mmiotic工具,除了找最慢指令,还能分析MMIO访问延迟——通过测量不同物理地址的访问时间,帮研究人员摸清硬件拓扑结构、发现设备寄存器、识别虚拟化环境,以及观察硬件设备的活动状态。
![]()
注:本文中包含AI辅助创作的内容。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
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.