X86 存储缓冲区和重新排序缓冲区是否都用于推测指令?

X86 存储缓冲区和重新排序缓冲区是否都用于推测指令?,x86,cpu-architecture,X86,Cpu Architecture,据我所知,reorder缓冲区可以用作推测性执行需要的历史缓冲区,它还允许将寄存器重命名为ROB条目(以打破命名依赖关系,如寄存器重命名) 在线阅读参考资料/手册时,存储缓冲区似乎也用于推测性执行。ROB不足以在路径预测错误的情况下丢弃值吗?一切都被视为推测性的,直到它达到失效-顺序失效是CPU如何检查在执行到达某个稍后执行的指令之前应该发生的异常。和分支预测失误等,所以两者都是肯定的 如果路径预测错误,ROB是否足以丢弃值 不,寄存器重命名只处理寄存器,而不处理要存储到内存中的值

据我所知,reorder缓冲区可以用作推测性执行需要的历史缓冲区,它还允许将寄存器重命名为ROB条目(以打破命名依赖关系,如寄存器重命名)

在线阅读参考资料/手册时,存储缓冲区似乎也用于推测性执行。ROB不足以在路径预测错误的情况下丢弃值吗?

一切都被视为推测性的,直到它达到失效-顺序失效是CPU如何检查在执行到达某个稍后执行的指令之前应该发生的异常。和分支预测失误等,所以两者都是肯定的


如果路径预测错误,ROB是否足以丢弃值

不,寄存器重命名只处理寄存器,而不处理要存储到内存中的值

您需要一个存储缓冲区,这样您就可以尽早执行存储,而不会让其他内核看到潜在的错误推测否则,商店将不得不等到订单报废阶段,以便在执行之前就知道它们是非投机性的。(缓存线必须以独占或修改状态出现)

存储缓冲区对于将执行与缓存未命中分离也很有价值;如果可以将缓存线保留在存储缓冲区中,则无需等待缓存线到达。这甚至适用于有序管道。它甚至在退休后也适用于OoO exec,因此缓存未命中存储有一个更大的窗口,可以不暂停管道,而不受退休顺序的限制

更多详细信息:

相关报道:可能还有我写过的其他一些答案


它还允许将寄存器重命名为ROB条目

听起来你在谈论英特尔P6系列的一个实现细节。大多数其他设计(Sandybridge系列和AMD)使用单独的物理寄存器文件(PRF),ROB只有指向PRF条目的指针。这对于登记寄存器的大小更大的64位结构更为合理,尤其是当我们考虑128位XMM寄存器时。 请参阅-SnB是从P6系列到SnB系列的主要变化。

在失效之前,一切都被视为推测性的-顺序失效是CPU如何检查在执行到达某个稍后执行的指令之前应该发生的异常。和分支预测失误等,所以两者都是肯定的


如果路径预测错误,ROB是否足以丢弃值

不,寄存器重命名只处理寄存器,而不处理要存储到内存中的值

您需要一个存储缓冲区,这样您就可以尽早执行存储,而不会让其他内核看到潜在的错误推测否则,商店将不得不等到订单报废阶段,以便在执行之前就知道它们是非投机性的。(缓存线必须以独占或修改状态出现)

存储缓冲区对于将执行与缓存未命中分离也很有价值;如果可以将缓存线保留在存储缓冲区中,则无需等待缓存线到达。这甚至适用于有序管道。它甚至在退休后也适用于OoO exec,因此缓存未命中存储有一个更大的窗口,可以不暂停管道,而不受退休顺序的限制

更多详细信息:

相关报道:可能还有我写过的其他一些答案


它还允许将寄存器重命名为ROB条目

听起来你在谈论英特尔P6系列的一个实现细节。大多数其他设计(Sandybridge系列和AMD)使用单独的物理寄存器文件(PRF),ROB只有指向PRF条目的指针。这对于登记寄存器的大小更大的64位结构更为合理,尤其是当我们考虑128位XMM寄存器时。 See-SnB是从P6家族到SnB家族的主要变化