英特尔 Skylake 有一个单一的“统一”调度程序(来自 WikiChip 的左侧图)。
AMD Zen 对每个整数执行单元使用单独的调度程序,对浮点执行单元使用一个调度程序(右侧来自 WikiChip,该图取自 AMD 演示文稿)。
这两种设计的优点和缺点是什么?
它如何影响 x86 代码的微优化? (我知道这可能会变得相当复杂和微妙,请参阅 How are x86 uops scheduled, exactly? 的相关问题,在撰写本文时,该问题更具体针对具有统一调度程序的 Intel CPU)。
最佳答案
分割调度程序的优点可能是
- 它们更小,因此使用的电路更少,内部距离也更短。
- 它们可以放置在更靠近其功能单元的位置。
- 个人决策规模较小,因为它们只能提交给较少的内部部门。
缺点可能是:
- 可供调度的指令较少,当一种类型的指令多于另一种类型的指令时,这就会成为问题。
- 如果一个单元充满了可能在另一个单元上运行的指令,则需要额外的接线来在另一个单元上重新安排时间。
关于optimization - Intel Skylake 的统一调度器与 AMD Zen 的单独调度器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45713948/