首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >与动态调度相比,编译器指令调度有什么优势?

与动态调度相比,编译器指令调度有什么优势?
EN

Stack Overflow用户
提问于 2014-02-21 07:44:11
回答 2查看 1.2K关注 0票数 4

目前,超级标量RISC cpus通常支持无序执行,包括分支预测和投机执行.他们会动态地安排工作。

与无序CPU的动态调度相比,编译器指令调度有什么优势?编译时静态调度对无序CPU有影响吗?还是只对简单的内部CPU有影响?

目前,大多数软件指令调度工作主要集中在VLIW或简单CPU上。GCC维基的日程安排页面对gcc的调度算法也没有多大兴趣。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-02-21 07:52:33

静态(编译器)调度的优势:

  • 没有时间限制,因此可以使用非常复杂的算法;
  • 指令窗口上没有绑定。例如,这允许使用整个函数调用循环交换指令。

动态(处理器调度)的优势:

  • 照顾实际环境(缓存、算术单元由于另一个超线程而繁忙);
  • 不要强制为每次架构升级重新编译代码。

这就是我现在所能想到的。

票数 3
EN

Stack Overflow用户

发布于 2014-02-21 07:53:51

首先,我应该指出,当前的RISC体系结构首先是编译,然后进行重新安排,导致“高级”程序集命令被编译成较小的RISC命令。至少对于x86/x64体系结构是正确的。

然后我们可以想象一个执行周期:编译-优化/重新安排-减少规模-编译-优化/重新安排。

这就回答了这个问题,编译器在应用程序中的可见性范围要大得多,因此它主要在宏级别(应用程序命令块)上进行优化,而处理器则主要针对微级别( RISC命令块)进行优化。

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

https://stackoverflow.com/questions/21928286

复制
相关文章

相似问题

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