gpt4 book ai didi

c - 混合 SSE 整数/浮点 SIMD 指令时,我会受到性能损失吗

转载 作者:太空狗 更新时间:2023-10-29 16:30:49 26 4
gpt4 key购买 nike

我最近经常使用内部函数形式的 x86 SIMD 指令 (SSE1234)。让我感到沮丧的是,SSE ISA 有几个简单的指令,这些指令仅适用于 float 或整数,但理论上两者的性能应该相同。例如,float 和 double vector 都有从地址加载 128 位 vector 的高 64 位的指令(movhpsmovhpd),但没有这样的整数指令载体。

我的问题:

在整数 vector 上使用浮点指令时,是否有任何理由预期性能会受到影响,例如使用movhps 将数据加载到整数 vector ?

我写了几个测试来检查,但我想他们的结果是不可信的。编写一个正确的测试来探索此类事情的所有极端情况真的很难,尤其是当此处很可能涉及指令调度时。

相关问题:

其他一些非常相似的东西也有几条基本相同的指令。例如,我可以对 pororpsorpd 进行按位或运算。谁能解释这些附加说明的目的是什么?我想这可能与应用于每条指令的不同调度算法有关。

最佳答案

来自专家(显然不是我 :P):http://www.agner.org/optimize/optimizing_assembly.pdf [13.2 将 vector 指令与其他类型的数据一起使用(第 118-119 页)]:

There is a penalty for using the wrong type of instructions on some processors. This is because the processor may have different data buses or different execution units for integer and floating point data. Moving data between the integer and floating point units can take one or more clock cycles depending on the processor, as listed in table 13.2.

Processor                       Bypass delay, clock cycles 
Intel Core 2 and earlier 1
Intel Nehalem 2
Intel Sandy Bridge and later 0-1
Intel Atom 0
AMD 2
VIA Nano 2-3
Table 13.2. Data bypass delays between integer and floating point execution units

关于c - 混合 SSE 整数/浮点 SIMD 指令时,我会受到性能损失吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4996384/

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