首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果处理器支持无序执行,那么优化数据风险是否有意义?

如果处理器支持无序执行,那么优化数据风险是否有意义?
EN

Stack Overflow用户
提问于 2015-05-03 17:59:59
回答 1查看 355关注 0票数 2

程序员是否仍有可能优化支持完整无序执行n的处理器的数据风险?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-03 20:10:39

能够执行无序操作的处理器不一定能够消除任何数据危险。无序的执行实现可能不包括寄存器重命名,因此WAW和WAR危险将导致管道阻塞。

然而,大多数现代OoOE处理器都实现了寄存器重命名,从而消除了WAW和WAR危险,而不是原始危险。如果一个浮点除法指令后面跟着一系列需要除法结果的指令,那么管道可能会停顿很长一段时间。另一个例子是,分支指令依赖于导致页面错误的加载指令。无论对该分支的预测是否正确,重新排序缓冲区可能已满或几乎已满,可能会导致阻塞。如果分支被错误地预测,惩罚将会更高。所以你通常不用担心注册WAW和战争危险,但是原始的危险是很重要的。

有几种技术可以用来减少原始危险的影响:

  • SIMD指令可用于完全重叠多个数据元素的战争依赖项的延迟。
  • 包含相互独立的依赖链的融合循环,以便在超标量CPU中并行执行这些链。这增加了可用执行单元的利用率。
  • 使用具有较低延迟的指令。例如,乘以2的指令可以替换为移位左指令。

通常,优化编译器能够执行这些优化,尽管它仍然可能产生次优的机器代码。

内存依赖关系也很重要。特别是,如果由于某些结构限制,存储结果不能转发到加载,则内存原始依赖关系将受到惩罚。内存、WAW和战争危险没有惩罚,因为大多数处理器按程序顺序退出指令。也就是说,在具有强内存排序模型(如x86 )的体系结构中,所有存储必须按照程序顺序执行,而不管WAW依赖关系如何。

还有许多其他可能的性能问题。您可以参考正在开发的处理器和/或体系结构的优化指南。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30017403

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档