gpt4 book ai didi

optimization - 长延迟指令

转载 作者:行者123 更新时间:2023-12-03 16:34:46 24 4
gpt4 key购买 nike

我想要一个长延迟的单 uop x861 指令,以便创建长依赖链作为测试微架构功能的一部分。

目前我正在使用 fsqrt,但我想知道是否有更好的东西。

理想情况下,该说明将在以下标准中得分很高:

  • 延迟时间长
  • 稳定/固定延迟
  • 一个或几个 uops(特别是:未微编码)
  • 消耗尽可能少的 uarch 资源(加载/存储缓冲区、页面漫游器等)
  • 能够与自身链接(延迟方面)
  • 能够使用 GP 寄存器链接输入和输出
  • 不干扰正常的 OoO 执行(除了它消耗的任何 ROB、RS 等资源)

所以 fsqrt 在大多数情况下是可以的,但延迟并没有那么长,而且似乎很难与 GP regs 链接。


1 特别是在现代 Intel x86 上,如果它在 AMD Zen* 上也能正常工作,还有加分。

最佳答案

主流 Intel CPU 没有任何延迟很长的单 uop 整数指令。在所有 ALU 端口上都有用于 1 周期延迟微指令的整数 ALU,在端口 1 上有一个 3 周期延迟流水线 ALU。我认为 AMD 类似。

div/sqrt 单元是唯一真正的高延迟 ALU,但整数 div/idiv 在 Intel 上进行了微编码,所以是的,使用 FP,其中 div/sqrt 通常是单 uop 指令。

AMD 的整数 div/idiv 是 2-uop 指令(大概是写 2 个输出),具有数据相关的延迟。

此外,AMD Bulldozer/Piledriver(其中 2 个整数内核共享一个 SIMD/FP 单元)对于 movd xmm, r32(10c 2 uops)和 movd r32, xmm 具有相当高的延迟(8c 1 微指令)。 Steamroller 将其缩短 1c。 Ryzen 在任一方向上都有 3 周期 1 uop。

movd 到/从 XMM regs 在 Intel 上很便宜:具有 1 个周期(Broadwell 和更早版本)或 2 个周期延迟(Skylake)的单 uop。 ( https://agner.org/optimize/ )


sqrtss 具有固定延迟(在 IvB 及更高版本上),除了可能具有次正常输入。如果您的 chain-with-integer 仅涉及任意整数位模式的 movd xmm, r32,您可能希望设置 DAZ/FTZ 以消除 FP 辅助的可能性。 NaN 输入很好;这不会导致 SSE/AVX 数学速度变慢,只有 x87。

其他 CPU(Sandybridge 和更早版本,以及所有 AMD)具有可变延迟 sqrtss,因此您可能希望在那里控制起始位模式。

如果您想使用 sqrtsd 获得比 sqrtss 更高的每 uop 延迟,情况也是如此。即使在 Skylake 上,它仍然是可变延迟。 (15-16 个周期)。

您可以假设延迟是输入位模式的纯函数,因此每次使用相同的输入启动一系列 sqrtss 指令将给出相同的延迟序列。或者使用 0.01.0+infNaN 的起始输入,您将得到 序列中每个 uop 的相同延迟。

(像 1.0 和 0.0 这样的简单输入(输入和输出中很少有有效数字)大概以最低的延迟运行。sqrt(1.0) = 1.0 和 sqrt(0) = 0,所以这些是 self 延续的。同样适用于sqrt(NaN) = NaN)

您可以使用 and reg, 0 或其他非 dep-breaking 归零作为链的一部分来控制输入位模式。或者 或 reg, -1 来创建 NaN。然后,您可以在 Sandybridge 或更早版本以及包括 Zen 在内的 AMD 上获得固定延迟。

或者 pinsrw xmm0, eax, 7(Intel 端口 5 为 2 微指令)仅修改 XMM 的高位 qword,将底部保留为已知 0.01.0。可能比仅使用 0 的 and 和使用 movd 更便宜,除非端口 5 压力不是问题。


要造成吞吐量瓶颈(而非延迟),Skylake 上的最佳选择是 vsqrtpd ymm - p0 1 uop,延迟 = 15-16,吞吐量 = 9 -12.

在 Broadwell 和更早版本上,它是 3 微指令 (2p0 p15),但我认为 Skylake 加宽了 SIMD 分频器(我猜是为 AVX512 做准备)。

关于optimization - 长延迟指令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58566439/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com