考虑添加剂模型上的维特比解码器。它花时间进行添加和比较。现在,考虑两个:一个使用C / C ++ float
作为数据类型,另一个使用int
。在现代芯片上,您希望int
的运行速度明显快于float
吗?或者流水线的奇迹(以及没有乘法和除法)是否会使这一切都出现甚至?
答案 0 :(得分:3)
取决于显着的含义。我通常希望看到它的执行速度提高约2倍,但这一切都取决于发生了什么。能够处理AMD64(AMD / Core2)指令集的现代处理器通常可以在每个周期中有效地进行1次浮点运算,如果它们可以保持流水线供给
他们通常也可以在相同的时间内完成2或3次整数运算。甚至可以同时做两件事。
但编写延迟管道的代码并不困难,你必须避免在完成后立即使用计算结果,否则管道将停止运行,你会得到更多像每个乘法3个周期而不是1个。
在大多数情况下,PowerPC的每个周期的指令与AMD / Intel相同或更好。
附录:
顺便说一句,您可能会发现比较(或者说比较所暗示的分支)最终比增加成本更多。错误预测的分支是昂贵的,特别是在奔腾4处理器上。