重排序缓冲区
词条百科 0
重新排序缓冲区 (ROB) 是用于扩展 Tomasulo 算法以支持乱序和推测指令执行的硬件单元。 扩展强制指令按顺序提交。
缓冲区是一个循环缓冲区(提供 FIFO 指令排序队列),实现为数组/向量(允许在指令无序完成时记录结果)。
Tomasulo 算法分为三个阶段:发布、执行、写入结果。 在算法的扩展中,有一个额外的提交阶段。 在提交阶段,指令结果存储在寄存器或内存中。 写入结果阶段被修改为将结果放置在重新排序的缓冲区中。 为此,每条指令都在保留站中用其在 ROB 中的索引进行标记。
缓冲区的内容用于缓冲区中调度的其他指令的数据依赖性。 一旦结果有效,缓冲区的头部将被提交。 它的依赖关系将已经计算并提交,因为它们必须在缓冲区中的指令之前,但不一定与它相邻。 指令之间的数据依赖性通常会在指令等待其依赖值时停止流水线。 ROB 允许流水线继续处理其他指令,同时确保提交结果,以防止数据危害,例如先读后写 (RAW)、先写后读 (WAR) 和先写前写 (WAW)。
缓冲区的每个条目中都有附加字段以支持扩展算法:

重新排序缓冲区的后果包括精确异常和目标地址错误预测(分支或跳转)的轻松回滚控制。 当跳转预测不正确或在指令流中遇到不可恢复的异常时,清除 ROB 中的所有指令(通过将循环队列尾部设置为头部)并重新初始化保留站。
内容来源于网络,本内容不代表16map.com立场,内容投诉举报请联系16map.com客服。如若转载,请注明出处:https://16map.com/wiki/nmjeiixlmizu