虽然我知道(所以我被告知)浮点协处理器的工作速度比任何浮点算术的软件实现都快,但我完全不知道这种差异有多大(以数量级而言)。
答案可能取决于微处理器和超级计算机之间的应用程序以及您的工作地点。我对计算机模拟特别感兴趣。
你能指出这个问题的文章或论文吗?
一般性的答案显然会非常模糊,因为性能取决于很多因素。
然而,根据我的理解,在不在硬件中实现浮点(FP)运算的处理器中,软件实现通常是慢10到100倍(或者更糟糕的是,如果实现很糟糕)比整数运算总是在 CPU 上的硬件中实现。
确切的性能取决于许多因素,例如整数硬件的功能 - 某些 CPU 缺少 FPU,但其整数运算中具有有助于实现 FP 计算的快速软件模拟的功能。
njuffa提到的论文,Cristina Iordache 和 Ping Tak Peter Tang,英特尔 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)也有 FP 模拟在操作系统内核中。优点是,即使没有 FP 模拟(即使用 FPU 指令)编译的代码也可以在没有 FPU 的进程上运行 - 内核将透明地模拟软件中不支持的 FPU 指令。然而,由于额外的开销,这种仿真比编译到程序中的软件仿真还要慢(大约是另一个因素 10)。显然,这种情况仅与处理器架构相关,其中一些处理器具有 FPU,而另一些则没有(例如 x86 和 ARM)。
Note:该答案将(模拟)FP 运算与同一处理器上的整数运算的性能进行了比较。您的问题也可能被理解为关于性能
(模拟) FP 操作与硬件 FP 操作相比(不确定您的意思)。然而,结果大致相同,因为如果 FP 在硬件中实现,它通常(几乎)与整数运算一样快。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)