【发布时间】:2013-02-02 09:07:47
【问题描述】:
另一家公司的一些非常有经验的程序员告诉我一些针对特定 CPU 的低级代码优化技巧,包括管道优化,这意味着以特殊顺序排列代码(显然是内联汇编)以使其适合管道更适合目标硬件。
由于存在乱序和推测执行,我只是想知道做这种低级的事情有什么意义吗?我们主要从事高性能计算,因此我们可以真正专注于一种非常特定的 CPU 类型来进行优化,但我只是不知道是否有任何意义进行这种特定的优化,任何人都在这里有任何经验,从哪里开始?有这种优化的代码示例吗?非常感谢!
【问题讨论】:
-
只有在您完全确定已用尽所有其他优化(锁争用、原子指令、算法复杂性等)时,这样的优化才会有用。
-
如果目标 CPU 支持乱序指令执行,那么简短的回答几乎肯定是“否”。我认为流水线选择对移动平台很有用,因为那些通常缺乏乱序执行。 (虽然很快就会用下一代芯片改变)
-
答案很复杂,但一般情况下是“比较找出来”。
标签: c++ optimization assembly cpu