Floating point 算术是否作为浮点运算求反计数?

Floating point 算术是否作为浮点运算求反计数?,floating-point,flops,Floating Point,Flops,我目前正在测试一些代码在触发器中的性能。此代码提供了一些算术求反指令,如下所示: d = -a 其中d和a是浮点变量我当前使用的架构确实有特定的否定指令。我应该考虑这种操作来测量触发器吗?什么样的操作导致了失败?有什么惯例吗 尝试反汇编代码并检查如何执行此操作 如果使用指令 FCHS < /代码>(更改符号),则可以考虑浮点运算。< /P> MSVC(Visual Studio 2008) 看到了吗 尝试反汇编代码并检查如何执行此操作 如果使用指令 FCHS < /代码>(更改符号),则可以考

我目前正在测试一些代码在触发器中的性能。此代码提供了一些算术求反指令,如下所示:

d = -a

其中
d
a
是浮点变量我当前使用的架构确实有特定的否定指令。我应该考虑这种操作来测量触发器吗?什么样的操作导致了失败?有什么惯例吗

尝试反汇编代码并检查如何执行此操作

如果使用指令<代码> FCHS < /代码>(更改符号),则可以考虑浮点运算。< /P> MSVC(Visual Studio 2008)


看到了吗

尝试反汇编代码并检查如何执行此操作

如果使用指令<代码> FCHS < /代码>(更改符号),则可以考虑浮点运算。< /P> MSVC(Visual Studio 2008)


看到了吗

正如@Andrey所说,为了确保您应该检查反汇编代码

但一般来说,是的,指令可能会在FPU上执行。它只是简单地翻转一位,因此也可以在整数单位上完成,但由于您使用的是浮点值,这些值很可能已经加载到FP寄存器中,因此将它们移动到通用寄存器、翻转位并将其移回会有相当大的开销


我不知道是否有一个完整的通用指南来说明“什么应该算作触发器”,但这很可能是一条在FPU上执行的指令,因此它与其他FP指令竞争CPU上的资源,所以是的,我会将其包括在触发器计数中。

正如@Andrey所说,为了确保您应该检查反汇编代码

但一般来说,是的,指令可能会在FPU上执行。它只是简单地翻转一位,因此也可以在整数单位上完成,但由于您使用的是浮点值,这些值很可能已经加载到FP寄存器中,因此将它们移动到通用寄存器、翻转位并将其移回会有相当大的开销


我不知道是否有一个完整的通用指南“什么应该算作一个触发器”,但这很可能是一个在FPU上执行的指令,因此它与其他FP指令竞争CPU上的资源,所以是的,我会把它包括在一个触发器计数中。

有一种惯例是使用LINPACK作为一种标准基准来计算触发器。

有一种惯例是使用LINPACK作为一种标准基准来计算触发器。

在任意代码上测量触发器如何有用?@Jonas:它告诉你利用率有多高CPU上的FPU单元。对于计算量大的程序,这可以很好地衡量有多少空间进行进一步优化。我正在对一些算法进行基准测试,并使用触发器来衡量这些算法的性能(将所获得的性能与我使用的体系结构中可能的最大触发器进行比较)。您的体系结构的触发器数可能是用LINPACK测量的。我一点也不确定你是否真的可以将任意算法与LINPACK进行比较。在任意代码上测量触发器有何用处?@Jonas:它告诉你CPU上FPU单元的利用情况。对于计算量大的程序,这可以很好地衡量有多少空间进行进一步优化。我正在对一些算法进行基准测试,并使用触发器来衡量这些算法的性能(将所获得的性能与我使用的体系结构中可能的最大触发器进行比较)。您的体系结构的触发器数可能是用LINPACK测量的。我一点也不确定你是否真的可以将任意算法与LINPACK.true进行比较,但请注意,他没有说他在x86上运行是的,我肯定我使用的体系结构中有一条否定汇编指令,我已经这样做了,谢谢。是的,但请注意,他没有说他在x86上运行是的,我知道在我使用的体系结构中肯定有否定汇编指令,我已经完成了,谢谢。
    double c = -b;
00971397  fld         qword ptr [b] 
0097139A  fchs             
0097139C  fstp        qword ptr [c]