gpt4 book ai didi

performance - 在最近的 Intel x86 上,端口 7 可以存储 AGU 处理什么类型的地址?

转载 作者:行者123 更新时间:2023-12-04 02:49:48 26 4
gpt4 key购买 nike

从 Haswell 开始,Intel CPU 微架构就有了 dedicated store-address unit on port 7它可以处理某些存储操作的地址生成 uop(另一个 uop,存储数据总是转到端口 4)。

最初认为这可以处理任何类型的地址,但事实并非如此。这个端口可以处理什么类型的地址?

最佳答案

此答案适用于 Haswell 和 Skylake(/Kaby Lake/Coffee Lake)。 future 的 ISA(Cannon Lake/Ice Lake)在可用时必须进行检查。港口 7 AGU 在 Haswell 是新的。

对于完全可以使用 port7 的指令(例如,不是 vextracti128 ),任何非索引寻址模式 可以使用端口 7。
这包括相对 RIP 和 64 位绝对值( mov [qword abs buf], eax ,即使在加载高于 2^32 的 PIE 可执行文件中,因此地址确实不适合 32 位),以及正常的 [reg + disp0/8/32]或绝对[disp32] .
索引寄存器总是阻止使用 port7 ,例如[rdi + rax] , 或 [disp32 + rax*2] .偶[NOSPLIT disp32 + rax*1]不能使用端口 7(因此 HSW/SKL 不会在内部将具有 scale=1 且无基址寄存器的索引转换为基址 + disp32 寻址模式。)
我用 ocperf.py stat -etask-clock,context-switches,cpu-migrations,page-faults,cycles,instructions,uops_dispatched_port.port_2,uops_dispatched_port.port_3,uops_dispatched_port.port_7 ./testloop 测试了自己在 Skylake i7-6700k 上。
[+0, +2047]位移范围对商店没有影响:mov [rsi - 4000], rax可以使用端口 7。
具有小正位移的非索引负载具有低 1c 的延迟。英特尔的优化手册中没有提到商店的特殊情况。 Skylake 的可变延迟存储转发(当负载尝试在存储后立即执行时延迟更严重)使得构建包含存储延迟但不受存储地址 uops 与负载竞争更少的影响的微基准测试变得困难端口。我还没有通过存储地址 uop 但没有通过存储数据 uop 提出带有循环携带依赖链的微基准测试。大概是可能的,但可能需要一个数组而不是单个位置。

有些指令根本不能使用port7:vextracti128 [rdi], ymm0, 0包括一个存储地址 uop(当然),但它只能在端口 2 或端口 3 上运行。
不过,Agner Fog 的指令表在这里至少有一个错误:他列出了 pextrb/w/d/q因为只在 p23 上运行 store-address uop,但实际上它可以在 HSW/SKL 上使用任何 p237。

我还没有对此进行详尽的测试,但是 我发现 HSW 和 SKL 之间的一个区别1 VCVTPS2PH [mem], xmm/ymm, imm8 . (指令改为使用更少的 ALU uops,因此这并不表示 HSW 和 SKL 之间 p7 的变化)。

  • 在 Haswell 上:VCVTPS2PH是 4 uops(融合和未融合域):p1 p4 p5 p23(Agner Fog 是对的)。
  • 天湖上:VCVTPS2PH xmm是 2 个已融合/3 个未融合 uops:p01 p4 p237
  • 天湖上:VCVTPS2PH ymm是 3 个已融合/3 个未融合 uops:p01 p4 p237
    (Agner Fog 将 VCVTPS2PH v 列为 3F/3U(两个向量宽度的一个条目),缺少与 xmm 版本的微融合,并且错误地将端口故障列为 p01 p4 p23)。

  • 通常,请注意 Agner 最近的更新似乎有点草率,例如复制/粘贴或拼写错误(例如,Ryzen vbroadcastf128 y,m128 吞吐量为 5 而不是 0.5)。
    1:HSW 测试是在一台不再可用的旧笔记本电脑上进行的(我用它的 RAM 升级了另一台仍然可以正常使用的机器)。我没有要测试的 Broadwell。这个答案中的所有内容在 Skylake 上都是正确的:我刚才仔细检查了一遍。不久前我在 Haswell 上测试了其中的一些,并且仍然有我的笔记。

    关于performance - 在最近的 Intel x86 上,端口 7 可以存储 AGU 处理什么类型的地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50557636/

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