A. *_* S. 1 x86 cpu-architecture
我知道重新排序缓冲区可以用作推测执行需求的历史缓冲区,并且它还允许将寄存器重命名为 ROB 条目(以中断命名依赖项,作为寄存器重命名)。
在线阅读资源/手册,似乎存储缓冲区也用于推测执行。如果路径预测错误,ROB 是否足以丢弃值?
一切都被视为推测性的,直到它达到退休——按顺序退休是 CPU 检查在执行到达某个稍后执行的指令之前应该发生的异常的方式。和分支错误预测等。所以是的。
如果路径预测错误,ROB 是否足以丢弃值?
不,寄存器重命名只处理寄存器,而不是要存储到内存中的值。
您需要一个存储缓冲区,以便您可以尽早执行存储,而不会让其他内核看到潜在的错误推测! 否则,商店将不得不等到他们到达按顺序退休阶段,这样才能知道他们是非投机者,然后才能执行。(并且缓存行必须以 Exclusive 或 Modified 状态存在)。
存储缓冲区对于将执行与缓存未命中分离也很有价值;如果您可以将它留在存储缓冲区中,则无需等到缓存行到达。这甚至适用于有序管道。并且它甚至在退休后也适用于 OoO 执行官,因此缓存未命中存储有一个更大的窗口来不停止管道,不受按顺序退休顺序的约束。
更多细节:推测执行的 CPU 分支是否可以包含访问 RAM 的操作码?
相关:英特尔硬件上的存储缓冲区大小?究竟什么是存储缓冲区?可能还有一堆我写过的其他 SO 答案。 https://stackoverflow.com/search?q=user%3A224132+%5Bcpu-architecture%5D+store+buffer
它还允许将寄存器重命名为 ROB 条目
听起来您在谈论英特尔 P6 系列的实现细节。大多数其他设计(Sandybridge 系列和 AMD)使用单独的物理寄存器文件 (PRF),并且 ROB 只有指向 PRF 条目的指针。这对于寄存器大小较大的 64 位架构更有意义,尤其是当我们考虑 128 位 XMM 寄存器时。
请参阅https://www.realworldtech.com/sandy-bridge/ - SnB 是从 P6 系列到 SnB 系列的主要变化。
| 归档时间: |
|
| 查看次数: |
192 次 |
| 最近记录: |