虽然我知道,(所以我一直告诉)浮点协处理器工作的速度比任何软件实现浮点运算的,我完全没有了感觉:这种差异有多大,在量值的次序。
答案很可能取决于应用程序与您携手,微处理器和超级计算机所处的位置。 我在计算机模拟特别感兴趣。
你能指出这个问题的文章或论文?
虽然我知道,(所以我一直告诉)浮点协处理器工作的速度比任何软件实现浮点运算的,我完全没有了感觉:这种差异有多大,在量值的次序。
答案很可能取决于应用程序与您携手,微处理器和超级计算机所处的位置。 我在计算机模拟特别感兴趣。
你能指出这个问题的文章或论文?
一般的答案显然是非常模糊的,因为性能取决于很多因素。
但是,根据我的理解,在没有实现浮点处理器的硬件(FP)操作,软件实现通常是10到100倍速度较慢 (或者更糟,如果实现是坏的)比整数操作,这是总是在硬件实现上的CPU。
确切的表现将取决于多种因素,如整数硬件的功能 - 某些CPU缺少FPU,但在他们的整数运算功能,可帮助实现FP计算的快速软件仿真。
通过njuffa,提到的纸克里斯蒂娜Iordache的和平德彼得汤,浮点支持和数学库对英特尔XScale架构的概况图支持这一点。 对于英特尔的XScale处理器的列表作为等待时间(节选):
integer addition or subtraction: 1 cycle
integer multiplication: 2-6 cycles
fp addition (emulated): 34 cycles
fp multiplication (emulated): 35 cycles
因此,这将导致整数和FP算术约10-30的一个因素。 该文件还提到,GNU实现(GNU编译器默认使用的那一个)是慢约10倍,这是100-300总因素。
最后,需要注意的是,以上是其中FP仿真被编译成由编译器程序的情况下。 一些操作系统(例如Linux和WindowsCE的)也有在OS内核的FP仿真。 其优点是,即使代码,而FP仿真编译(即使用FPU指令)可以在没有FPU上一个进程中运行 - 内核将透明地仿效软件不支持的FPU指令。 然而,这种仿真更慢(约另一个10倍),比编入程序的软件仿真,因为额外的开销。 很显然,这种情况下,仅在处理器架构,其中一些处理器避风港的FPU,有的没有(如x86和ARM)有关。
注意:这个答案(仿真)FP操作使用相同的处理器整数运算性能进行比较。 你提的问题也可能被解读为约相比,硬件FP操作(不知道你的意思)(仿真)FP操作的性能。 然而,其结果将是差不多的,因为如果FP在硬件中实现,它通常是(几乎)一样快,整数运算。