计算机体系结构基础知识介绍之硬件预测(二)

一、ROB详述

指令执行的四个步骤是:

  • 发射(Issue):从指令队列中获取一条指令。如果有空闲的保留站和ROB条目,就发射指令;如果寄存器或ROB中有可用的操作数,就发送操作数到保留站。更新控制字段来表示缓冲区正在使用。为结果分配的ROB条目号也发送到保留站,以便在结果放到公共数据总线(CDB)时用来标记结果。如果所有保留站或ROB都满了,就暂停指令发射,直到两者都有可用条目。
  • 执行(Execute):如果一个或多个操作数还没有准备好,就监视CDB,等待寄存器被计算出来。这一步检查RAW(读后写)冒险。当两个操作数都在保留站中可用时,执行操作。指令可能在这一阶段花费多个时钟周期,并且加载仍然需要在这一阶段分两步完成。存储只需要在这一步有基址寄存器,因为存储在这一点的执行只是有效地址计算。
  • 写结果(Write result):当结果可用时,将结果写到CDB(带有发射时发送的ROB标记)和从CDB到ROB,以及任何等待这个结果的保留站。标记保留站为可用。存储指令需要特殊处理。如果要存储的值已经可用,就将它写入对应存储指令的ROB条目的值字段。如果要存储的值还没有准备好,就必须监视CDB,直到该值被广播,在此时更新存储指令的ROB条目的值字段。为了简单起见,我们假设这发生在存储指令的写结果阶段;我们稍后讨论放宽这个要求。
  • 提交(Commit):这是完成指令的最后阶段,在此之后只剩下它的结果。(有些处理器称这个提交阶段为“完成”或“毕业”。)根据提交指令是一个错误预测的分支、一个存储还是其他任何指令(正常提交),提交时有三种不同的操作序列。正常提交情况发生在当一个指令到达ROB头部并且其结果在缓冲区中存在时;此时,处理器用结果更新寄存器,并从ROB中移除指令。提交一个存储类似,只是更新内存而不是结果寄存器。当一个错误预测的分支到达ROB头部时,它表明推测是错误的。ROB被清空,并且在分支正确后继处重新开始执行。如果分支被正确预测,分支就完成了。

一旦一个指令提交,它在ROB中的条目被回收,并且更新寄存器或内存目标,消除了对ROB条目的需要。如果ROB填满了,我们只需停止发射指令,直到有一个条目被释放。

假设浮点功能单元的延迟与前面的示例相同:加法为 2 个时钟周期,乘法为 6 个时钟周期,除法为 12 个时钟周期。 使用以下代码段显示当 fmul.d 准备好提交时状态表的样子。

 

 

请注意,虽然 fsub.d 指令已完成执行,但直到 fmul.d 提交后它才会提交。 保留站和寄存器状态字段包含与 Tomasulo 算法相同的基本信息。 不同之处在于Qj和Qk字段以及寄存器状态字段中的保留站号被替换为ROB条目号,并且我们在保留站中添加了Dest字段。 Dest字段指定ROB条目,该条目是由该保留站条目产生的结果的目的地。 

由于在指令提交之前寄存器值和任何内存值都不会被实际写入,因此当发现分支预测错误时,处理器可以轻松撤消其推测操作。当分支之前的指令到达 ROB 的头部时,将简单地提交;当分支到达该缓冲区的头部时,缓冲区被简单地清除,并且处理器开始从另一条路径获取指令。

在实践中,推测的处理器会在分支预测错误后尝试尽早恢复。 可以通过清除 ROB 中出现在错误预测分支之后的所有条目、允许 ROB 中分支之前的条目继续、并在正确的分支后继处重新启动提取来完成此恢复。 在推测处理器中,性能对分支预测更加敏感,因为错误预测的影响会更大。 因此,处理分支的所有方面,预测准确性、错误预测检测的延迟和错误预测恢复时间的重要性都增加了。

异常的处理方式是在准备好提交之前不识别异常。 如果推测的指令引发异常,则该异常将记录在 ROB 中。 如果出现分支预测错误并且指令不应该被执行,则当 ROB 被清除时,异常将与指令一起刷新。 如果指令到达 ROB 的头部,那么我们就知道它不再是推测的,并且应该真正采取异常。 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

D了一天bug忘了编译

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值