作者:深耐猪老汉11_245 | 来源:互联网 | 2023-10-12 17:37
基于硬件的动态预测在解析控件依赖关系之前,继续动态发出并执行在动态预测的分支方向上传递条件分支的指令。这克服了基本块大小的ILP限制。在运行时创建动态推测的指令&
基于硬件的动态预测
在解析控件依赖关系之前,继续动态发出并执行在动态预测的分支方向上传递条件分支的指令。
- 这克服了基本块大小的ILP限制。
- 在运行时创建动态推测的指令,不支持编译器方式。
- 如果一个分支被错误预测,必须防止所有这些动态推测的指令改变机器的状态(寄存器,存储器)。
- 增加提交(退出或重新排序)阶段,并强制指令按照代码中的顺序提交(即将结果写入寄存器或存储器)。
- 精确的异常是可能的,因为指令必须按顺序提交。
算法的四个阶段:
- 发射: 从FP Op队列获取指令。 如果一个预留站和一个重新排序缓冲槽是空闲的,那么发出指令,发送操作数和重新排序缓冲号到目的地(这个阶段有时被称为Dispatch)
- 执行:对操作数进行操作 当两个操作数都就绪时,然后执行;如果没有准备好,观察CDB,当两个操作数都在保留站时,执行;检查RAW
- 结果写回:在公共数据总线上写入所有等待的FU和重新排序缓冲器;标记预定站可用。
- 提交:用重排序的结果更新寄存器。
当一条指令位于重新排序缓冲区的头部&结果出现时,用结果更新寄存器(或存储到内存)并从重新排序缓冲区中删除指令。
重新排序缓冲区头部的错误预测分支将刷新重新排序缓冲区