承诺与退休指令

时间:2018-10-11 13:17:19

标签: x86 cpu-architecture cpu-cache instructions

这可能是一个愚蠢的问题,但我无法对指令生命的这两个阶段找到清晰的解释。我最初的想法是,它们是同义词,但是我不确定。我开始认为

  1. 对于一次负载提交和退出,
  2. 对于存储,提交发生在指令更新寄存器时发生,而退出发生在存储实际离开存储缓冲区时。

这是错误的吗?有人对这些术语有2个明确的定义吗?

干杯。

1 个答案:

答案 0 :(得分:5)

这些术语没有标准定义。我已经看到它们在不同的书籍或处理器设计中被用来表示不同的意思:

  • 在Intel处理器中,当取消分配该指令占用的重排序缓冲区条目时,将退出报废。内存存储还有一个称为提交的阶段,在该阶段实际执行存储。这是因为Intel处理器具有存储缓冲区,可以将存储区标记为已退休。 1

  • Hennessy和Patterson的书在乱序执行一章中主要使用“提交”一词。甚至存储都在提交阶段执行。有时它使用术语“退休”,但没有给出将其与提交区分开的定义。但是,在附录C中,存储在第4阶段(称为存储阶段)执行,而寄存器更新在第5阶段(称为写回)执行。

  • 某些书使用术语“完成”和“提交”,其中“完成”表示英特尔处理器中的“退休”,而“提交”表示“提交”。顺便说一句,英特尔在其手册中还使用了“完成”一词,根据上下文,这可能意味着除退休之外的其他事情。
  • 有时候“提交”是指同时更新寄存器和内存状态,而“退休”则是指分配体系结构资源。
  • 有时可以互换使用。例如,有一些关于微体系结构的学术建议,这些微体系结构可以无序分配商店但不使用任何商店缓冲区。商店是在ROB本身退役时进行的。

在其他上下文中,这些术语可能用来表示其他事物。通常,您可以从作者使用它们的方式以及从整体上下文推断出它们的含义。


脚注1:英特尔在另一种实现方式上有a patent,它允许存储区无序保留存储区缓冲区,而他们没有在任何CPU中实现该缓冲区。

如果L1D配备了区分高速缓存中每个有效高速缓存行的全局可见状态和本地可见状态的机制,则有可能在退役之前无序提交存储。需要这种机制来维护商店的可见顺序。在这种假设的设计中,还可以以推测方式提交存储,这将需要根据错误的预测刷新(部分或全部)本地可见状态。保存该存储的存储缓冲区条目可以有选择地在提交存储时被释放,即使它尚未退休。