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

标签 compiler-construction cpu compiler-optimization cpu-architecture vliw

关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。












想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。

7年前关闭。




Improve this question




如今,超标量RISC CPU通常支持乱序执行,具有分支预测和推测执行。他们动态安排工作。

与乱序 CPU 的动态调度相比,编译器指令调度的优势是什么?编译时静态调度对于乱序 CPU 还是仅对于简单的有序 CPU 重要吗?

目前似乎大多数软件指令调度工作都集中在 VLIW 或简单的 CPU 上。 GCC wiki's scheduling page也表明对更新 gcc 的调度算法没有太大兴趣。

最佳答案

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

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

  • 动态(处理器调度)的优势:
  • 照顾实际环境(缓存,算术单元因另一个超线程而忙碌);
  • 不要强行为每次架构升级重新编译代码。

  • 目前能想到的就这些。

    关于compiler-construction - 与动态调度相比,编译器指令调度有什么优势?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21928286/

    相关文章:

    c++ - 自定义 C++ 类上的错误

    java - weblogic每分钟检查一次服务器状态

    opengl - GLSL 真的用统一的(不是每个顶点的)值做不必要的计算吗?

    c++ - 数据对齐以实现矢量化/高效缓存访问

    c++ - 关于 C/C++ 编译器优化,我可以假设什么?

    C++ 模板 : Convincing self against code bloat

    gcc - 较高级别的 SSE 标志是否意味着 GCC/clang 中较低级别的标志?

    java - 中央处理器性能

    cpu - 内存数据寄存器 (MDR) 与内存缓冲寄存器 (MBR)

    c# - 是否可以编写会导致编译时间过长的代码?