ROB的结构与作用

在流水线的提交(Commit)阶段,之所以能够将乱序执行的指令变回程序中指定的顺序状态,主要是通过重排序缓存(Reorder Buffer, ROB)来实现的

  • ROB本质上是一个FIFO
  • 在它当中存储了一条指令的相关信息,例如这条指令的类型、结果、目的寄存器和异常的类型等

  • ROB 的容量决定了流水线中最多可以同时执行的指令个数
    • complete
      • 当前指令已经执行完毕;
    • Areg
      • 指令在原始程序中指定的源寄存器,放的是逻辑寄存器的编号;
    • Preg
      • 源寄存器,重命名后,对应的物理寄存器编号;
    • OPreg
      • 该寄存器之前对应的旧的Preg;
    • PC
      •  指令对应的PC值,
    • Exception
      • 保存的是异常的类型,指令retire时,根据异常类型做相应的处理;
    • Type
      • 指令的类型,retire时,根据不同的类型,做不同的操作;例如store指令要写D-Cache、分支指令要释放Checkpoint资源等 ;
  • 指令一旦在流水线的分发阶段占据了ROB中的一个表项,这个表项的编号会一直随着这条指令在流水线中流动,这样指令在之后的任何时刻,都可以知道如何在 ROB中找到自己。
  • 一条指令一旦变为 ROB 中最旧的指令并且它的 complete状态位也为1,就表示这条指令已经具备退休(retire)的条件了。
    • 如果这条指令在之前没有发生过异常,也就是它在ROB中对应的exception部分为0,则这条指令可以顺利地离开流水线,它的结果可以对处理器的状态进行更新;
    • 如果这条指令发生过异常,那么就要启动异常的处理过程;

通过如下的例子,来说明ROB的执行情况 

                    

  • i1是除法,i2使用i1的结果,所有这两条指令的执行时间会很长;
  • 因为乱序的存在,i3/i4会先执行;
  • 但是i3/i4执行完成后,不能将结果写入寄存器;
  • 下图中,显示了ROB在三个时间点的情况:

  • i1~i3重命名后,申请对应的ROB entry, 并将相应的信息写入ROB, 包括逻辑寄存器,重命名后的物理寄存器;
  • 经过一段时间,i3/i4结果已经计算出来,标记为complete状态;
  • 因为i3/i4不是ROB中最老的指令,因此虽然标记为complete,仍然不能retire;
  • 当i1变为complete时,因为其是最老的指令,因此,可以retire, ROB的head 指针往下移动;

一般情况下,在流水线的分发(Dispatch)阶段,每周期最多可以进入ROB的指令个数会等于ROB每周期最多可以退休的指令个数,这样可以保持流水线的畅通;

  • 11
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Rob Groves 是一位英国足球运动员和专业球队的主教练。他在英超俱乐部教练过多年,对足球战术和训练方法有着丰富的经验。 Rob Groves 从小就对足球充满热爱,他很早就开始参加校内和校间的足球比赛。他的天赋和努力使他成为一名顶尖的中锋并且得到了许多职业球队的关注。 随着他的职业生涯的发展,Rob Groves 选择了踏入教练的领域。他认为,能够传授自己的经验和知识给年轻球员是一种非常有意义和有益的事情。他希望通过自己的指导和教育,能够帮助年轻球员实现他们的梦想,并成为优秀的足球运动员。 作为一名主教练,Rob Groves 对战术训练非常注重。他相信,良好的战术意识和训练能力是球员成功的关键。他会根据球员的特点和球队的实际情况,制定出最适合的战术策略和训练计划。他始终鼓励球员们保持专注、团结和奋斗的精神,以取得最好的成绩。 Rob Groves 对足球的热忱和敬业精神使他受到了球员们的尊重和信任。他是一位很好的领导者和榜样,通过自己的实际行动和言行,鼓励球员们不断努力进步。他的教练才能和人格魅力使他在足球界广受赞誉。 总之,Rob Groves 是一位充满激情和经验丰富的足球教练。他通过自己的教导和引导,帮助年轻球员实现他们的足球梦想,并为足球界的发展做出了重要的贡献。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值