【发布时间】:2020-02-29 17:35:59
【问题描述】:
有人能解释一下 cpu 核心中的 dispatch、commit、issue 和 squash 宽度之间的区别吗,它以无序的方式执行。
据我所知:
- 问题宽度 - 可以并行执行多少条指令
- 调度宽度 - 重新排序缓冲区中可以有多少条指令(不确定)
我不知道其他两个。解释会很有帮助
【问题讨论】:
-
“壁球宽度”?你确定这是真的吗?压缩指令(例如,从错误预测的分支的错误路径中丢弃指令,并且不将其结果写回架构状态)完全是一回事,但它通常没有有限的宽度。
-
如果您阅读lighterra.com/papers/modernmicroprocessors 之类的内容(这非常好,如果您还没有阅读过),这些术语中的大部分都会从上下文中变得清晰(甚至完全定义)。还有像realworldtech.com/sandy-bridge(David Kanter 对英特尔微架构的深入探讨)或 Agner Fog 的微架构 pdf(同样是 x86 微架构)解释 ROB 的问题和 commit = retire from the ROB。 agner.org/optimize
-
@PeterCordes,壁球宽度,是我试图在 gem5 中建模的无序 cpu 的参数。而“squash”参数定义为宽度,默认值为8。
-
好的,gem5 上下文很重要。英特尔术语使用与许多其他计算机架构人员/教科书相反的“调度”和“问题”。一个是一个周期内可以重命名并添加到ROB+调度器的指令数,另一个是一个周期内可以从调度器发送到执行端口的指令数。 (在 x86 CPU 中,load+ALU(内存源 x86 指令)的微融合意味着问题宽度在融合域中测量,但调度宽度在未融合域中测量。)
-
看来GEM5使用的是非Intel约定,所以dispatch = rename limit (not ROB size)
标签: cpu cpu-architecture instructions gem5