承诺与退休指令

has*_*558 3 x86 cpu-architecture instructions cpu-cache

这可能是一个愚蠢的问题,但我无法找到关于教学生活的这两个阶段的明确解释.我最初的想法是他们是同义词但我不确定了.我开始这么想了

  1. 对于加载提交和退出同时发生
  2. 对于存储,当指令更新寄存器时发生提交,而当存储实际离开存储缓冲区时发生退出.

这是错的吗?有没有人有2个清除这些术语的定义?

干杯.

Had*_*ais 5

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

  • 在Intel处理器中,当指令占用的重排序缓冲区条目被去除涂层时,就会发生退出.内存存储有一个名为commit的附加阶段,实际执行存储.这是因为英特尔处理器具有存储缓冲区,其中存储可以标记为已停用.1

  • Hennessy和Patterson的书主要在关于无序执行的章节中使用术语"提交".甚至商店也会在提交阶段执行.有时它使用术语"退休"但没有给出将其与提交区分开的定义.但是,在附录C中,存储在第4阶段执行,称为存储器阶段,而寄存器更新在第5阶段执行,称为写回.

  • 有些书使用术语"完整"和"提交",其中"完整"表示在英特尔处理器中"退休","提交"表示"提交".顺便说一句,英特尔在他们的手册中也使用了"完整"一词,这可能意味着退休以外的其他事情,具体取决于具体情况.
  • 有时,术语"提交"指的是更新寄存器和存储器状态,而术语"退出"指的是解除分配体系结构资源.
  • 有时候可以互换使用.例如,有微架构的学术建议可以无序调度存储但不使用任何存储缓冲区.商店从ROB本身退休时执行.

这些术语可能用于表示其他情境中的其他内容.通常,您可以从作者使用的方式和整体上下文中推断出它们的含义.


脚注1:英特尔拥有一项替代实施方案的专利,该实施允许商店无序地离开商店缓冲区,而这些商店缓冲区并未在其任何CPU中实现.

如果L1D配备有区分全局可见状态和高速缓存中每个有效高速缓存行的本地可见状态的机制,则可以在退出之前无序地提交存储.需要这种机制来维持商店的可见顺序.在这个假设设计中,也可以推测性地提交商店,这需要在错误预测中冲洗(部分或全部)本地可见状态.存储提交的存储缓冲区条目可以选择在存储提交时释放,即使它尚未退出.

  • 英特尔经常说"在本地完成"来讨论ROB的退役,包括从ROB退休的商店,但不一定从内存订单缓冲区提交到L1d缓存.http://felixcloutier.com/x86/LFENCE.html (3认同)