与动态调度相比,编译器指令调度有什么优势? [英] What's the advantage of compiler instruction scheduling compared to dynamic scheduling?

查看:536
本文介绍了与动态调度相比,编译器指令调度有什么优势?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

Nowadays, super-scalar RISC cpus usually support out-of-order execution, with branch prediction and speculative execution. They schedule work dynamically.

与乱序CPU的动态调度相比,编译器指令调度的优势是什么?编译时静态调度对于乱序CPU或者对于简单的有序CPU来说是否有问题?

What's the advantage of compiler instruction scheduling, compared to an out-of-order CPU's dynamic scheduling? Does compile-time static scheduling matter at all for an out-of-order CPU, or only for simple in-order CPUs?

目前大多数软件指令调度工作专注于VLIW或简单的CPU。 GCC wiki的调度页面也显示了更新gcc调度算法的兴趣不大。

It seems currently most software instruction scheduling work focuses on VLIW or simple CPUs. The GCC wiki's scheduling page also shows not much interest in updating gcc's scheduling algorithms.

推荐答案

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

Advantage of static (compiler) scheduling:


  • 没有时间限制,因此可以使用非常复杂的算法;

  • 在指令窗口上没有界限。例如,可以用函数调用的整个循环来交换指令。

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

Advantage of dynamic (processor scheduling):


  • 照顾实际环境(缓存,算术单元由于另一个超线程而忙);

  • 强制重新编译每个架构升级的代码。

这是我现在想到的。

这篇关于与动态调度相比,编译器指令调度有什么优势?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆