现代芯片上的Float与Integer算术性能

时间:2010-01-06 00:46:31

标签: floating-point performance integer math

考虑添加剂模型上的维特比解码器。它花时间进行添加和比较。现在,考虑两个:一个使用C / C ++ float作为数据类型,另一个使用int。在现代芯片上,您希望int的运行速度明显快于float吗?或者流水线的奇迹(以及没有乘法和除法)是否会使这一切都出现甚至?

1 个答案:

答案 0 :(得分:3)

取决于显着的含义。我通常希望看到它的执行速度提高约2倍,但这一切都取决于发生了什么。能够处理AMD64(AMD / Core2)指令集的现代处理器通常可以在每个周期中有效地进行1次浮点运算,如果它们可以保持流水线供给

他们通常也可以在相同的时间内完成2或3次整数运算。甚至可以同时做两件事。

但编写延迟管道的代码并不困难,你必须避免在完成后立即使用计算结果,否则管道将停止运行,你会得到更多像每个乘法3个周期而不是1个。

在大多数情况下,PowerPC的每个周期的指令与AMD / Intel相同或更好。

附录:

顺便说一句,您可能会发现比较(或者说比较所暗示的分支)最终比增加成本更多。错误预测的分支是昂贵的,特别是在奔腾4处理器上。