首页 时政热点 科技头条 智能AI 安全攻防 数码硬件 开发者生态 汽车 游戏 社会热点 开源推荐 医疗健康 归档 标签 关于

耻辱大会堂

摘要

Instruction latency analysis usually focuses on performance optimization —making code run as fast as possible. The Assembly Hall of Shame takes the opposite approach: searching for the absolute floor ...

the data16 CPU latency Strategy instruction fxrstor64 load byte high
2026-08-08 1 阅读 约8分钟阅读 piotrgrabowski
分享:
字号:
指令延迟分析通常侧重于性能优化——使代码尽可能快地运行。耻辱大会堂采取了相反的方法:寻找单指令性能的绝对下限。策略:使用 fxrstor64 从 PCIe 结构中的高延迟 MMIO 区域加载 512 字节 FPU/MMX/XMM 状态,然后在负载运行时使结构处于饥饿状态 — 一组锤子核心通过紧密的 4 字节读取敲击不同的高延迟 MMIO 寄存器,使 PCIe 根复合体和端点充满非发布事务,因此 CPU 0 的 512 字节 fxrstor64 必须在所有竞争的交通后面排队。竞争者:AMD Ryzen 7 5800H; CPU 0 — 定时指令 movl $0xfcc68830 , % rsi fxrstor64 % rsi ; CPU 1..N — 针对不同高延迟位置 movl 0xfcc68858 , % eax 的锤子循环 🏆 分数:198,002,498,236 个周期 🏆 时间:62 秒 违反规范的未对齐 ymm0 负载强制来自停滞的 GPU 寄存器的非发布双字事务被用来破坏系统管理模式的基本设计smiiiiiiiiiiiiiiii 。 vmovdqu 0xfcc003b1 , % ymm0 指令可以使用任何必要的设置,但只有一条指令有资格进行评分。陷阱/模拟/虚拟指令只能对陷阱计时,而不对处理程序计时。指令不得被中断。代表 movs 、 暂停 等被取消资格。时间根据 CPU 基本时钟频率进行标准化。所有平台必须采用工厂库存配置 - 不得进行硬件修改。策略:nop 什么都不做。它会相应地打开排行榜。竞争者:Intel(R) Core(TM) i7-8559U CPU @ 2.70GHz 分数:1 个周期 时间:0 纳秒 策略:常规 nop 太短,但我们如何才能让任何事情都花费更长的时间?尝试 lonnnnnng nop 。竞争者:Intel(R) Core(TM) i7-8559U CPU @ 2.70GHz data16 data16 data16 data16 data16 data16 data16 nopl 0x00000000(%%eax,%%eax,1) 分数:20 个周期 时间:7 纳秒 策略:只是一个参考指令来了解我们的方位。竞争者:Intel(R) Core(TM) i7-8559U CPU @ 2.70GHz 分数:49 个周期 时间:18 纳秒 策略:使用 128 位除数 (rdx:rax=2:0) 和小除数将商推到符号扩展所施加的上限之上,驱动通过除法器微码的最长路径。竞争者:Intel(R) Core(TM) i7-8559U CPU @ 2.70GHz xorq % rax , % rax ; rax = 0(被除数的低 64 位) movq $ 2 , % rdx ; rdx = 2 (高 64 位: 全部股息 = 2^65) movq $ 5 , % rbx ;除数 → 商 = 2^65/5 ≈ 7.4×10^18 idivq % rbx 得分:77 个周期 时间:28 纳秒 策略:使用最大嵌套深度 (31) 强制加载 30 个显示指针并推动微代码显示行走路径。竞争者:Intel(R) Core(TM) i7-8559U CPU @ 2.70GHz 输入 0 美元、31 美元;分配 0 个字节,嵌套深度 31(最大) 分数:112 个周期 时间:41 纳秒 策略:尝试一个小的非正规值来触发 FP 微码辅助。竞争者:Intel(R) Core(TM) i7-8559U CPU @ 2.70GHz movabsq $ 0x0000000000000001 , % rax movq % rax , - 8 (% rsp ) fldl - 8 (% rsp ) 得分:133 个周期 时间:49 纳秒 策略:只要确保缓存行脏了。竞争者:Intel(R) Core(TM) i7-8559U CPU @ 2.70GHz clflush (% rax ) ; rax -> 脏缓存行驻留在 L3 分数:165 个周期时间:60 纳秒策略:使用指数 0x7ff 达到微码中的“特殊值”处理;正/负,NaN/inf 似乎没有什么区别,请使用 QNaN。竞争者:Intel(R) Core(TM) i7-8559U CPU @ 2.70GHz movabsq $ 0x7fffffffffffffff , % rax movq % rax , - 8 (% rsp ) fldl - 8 (% rsp ) fsin 分数:257 个周期 时间:94 纳秒 策略:使所有内容饱和将行填充缓冲区与 movnti 存储结合到不同的缓存行,强制 mfence 在退出之前将完整的 LFB 写入路径耗尽到非核心。竞争者:Intel(R) Core(TM) i7-8559U CPU @ 2.70GHz movnti % r9 , 0 * 64 (% rdi ) ; ×16 个不同的缓存行 — 使写入组合 LFB 饱和; ... movnti % r9 , 15 * 64 (% rdi ) mfence ;必须在退出之前耗尽所有挂起的 LFB 写入 分数:326 个周期 时间:120 纳秒 策略:暂时没有,只需检查使 TLB 失效需要多长时间。竞争者:配备 Radeon Graphics (Trigkey S5) 的 AMD Ryzen 7 5800H 得分:352 个周期 时间:110 纳秒 策略:通过使用非正规源操作数来命中 x87 FP 微代码辅助路径。竞争者:Intel(R) Core(TM) i7-8559U CPU @ 2.70GHz fldl subnorm; 1e-310:值 < DBL_MIN,有偏指数 = 0 faddl subnorm ;源不正常 → FP 微码辅助 分数:677 个周期 时间:249 纳秒 策略:将锁定前缀操作数与跨缓存行边界对齐,迫使 CPU 断言外部总线锁定,而不是使用快速 MESI 缓存一致性路径。竞争者:Intel(R) Core(TM) i7-8559U CPU @ 2.70GHz; split_ptr % 64 == 63 — 双字跨越字节 63(第 N 行)和 64–66(第 N+1 行) lock xaddl % r9d , (% rdi ) 分数:865 个周期 时间:319 纳秒 策略:使用次正规除数,
这篇文章对您有帮助吗?

订阅66必读

每日精选科技资讯,直达你的邮箱