丢失增量的案例

主要观点:在计算机增强课程的一些简单机器码中偶然发现了英特尔 Alder Lake 微架构中的性能异常,原本预期简单循环的性能符合预期,但在 Alder Lake 处理器上该循环的性能远超理论最大值,经多种测试和分析,推测可能是 Golden Cove 微架构中重命名阶段自身具备调整立即加法操作以消除依赖的能力,但目前仍缺乏完整的文档描述。
关键信息

  • 简单循环代码inc rax ; cmp rax, rcx ; jb.loop,正常情况下预期每个迭代需一个核心时钟周期,多种 x64 微架构实测符合预期。
  • Alder Lake 的 i7 - 12700K 处理器运行该循环时,实测性能远超理论值,排除了 boost 时钟等因素的影响。
  • 通过事件跟踪 for Windows(ETW)收集的 PMC 计数器数据显示,Alder Lake 核心的指令发出数与周期数的比例异常高,似乎能在每个核心时钟周期处理两个循环迭代。
  • 推测 Golden Cove 微架构中重命名阶段可能具备特殊能力以改变立即加法操作,从而缩短依赖链,但仍存在不确定性。
    重要细节
  • 循环代码的执行过程及各指令的作用,如inc rax增加变量,cmp rax, rcx比较变量与迭代计数等。
  • 不同处理器的规格参数,如 Alder Lake 的 P 核和 E 核的基频和最大 boost 时钟等。
  • 各种测试方法和所使用的工具,如rdtsc读取芯片级时间戳计数器、ETW 收集 PMC 计数器等。
  • 对不同处理器上循环性能测试结果的详细对比和分析,包括周期数、指令数等数据的差异。
  • 对可能的解释机制的探讨,如硬件设计层面的各种假设和软件层面的猜测等。
阅读 10
0 条评论