当前位置:   article > 正文

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

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

一、基本介绍

简单来说,

硬件推测是一种计算机体系结构的技术,它可以提高处理器的性能,通过预测指令的执行结果或控制流程,从而减少分支延迟或数据依赖。硬件推测有多种形式,例如:

  • 分支预测:根据历史信息或静态信息,预测分支指令的跳转方向,从而提前取指和执行目标指令。如果预测错误,就要撤销错误的指令,并重新执行正确的指令。
  • 数据预测:根据历史信息或静态信息,预测某些指令的操作数或结果,从而避免等待数据的到来。如果预测错误,就要撤销错误的指令,并重新执行正确的指令。
  • 乱序执行:根据数据依赖关系,调整指令的执行顺序,从而充分利用功能单元和流水线。如果发生冒险或异常,就要保证指令的原始顺序和正确性。
  • 事务内存:根据原子性和隔离性,预测一组指令可以作为一个事务执行,从而避免锁的开销。如果发生冲突或异常,就要撤销事务,并重新执行。

硬件推测可以提高处理器的并行度和吞吐率,但也会增加处理器的复杂度和功耗。因此,硬件推测需要权衡成本和效益,设计合适的预测算法和恢复机制。

硬件推测是一种利用动态分支预测和动态调度来提高指令级并行性的技术。

硬件推测的基本思想是,根据分支预测的结果,提前取指和执行分支后面的指令,而不等待分支的真正结果。这样可以克服控制相关性的限制,增加指令流水线的利用率。但是,硬件推测也需要能够处理预测错误的情况,即当分支预测的结果与实际结果不一致时,要能够撤销错误执行的指令,并重新执行正确的指令。

为了实现硬件推测,需要对托马苏洛算法进行扩展,将指令的执行过程分为两个阶段:完成和提交。完成阶段是指指令执行完毕,并将结果传递给其他依赖的指令。提交阶段是指指令确定不再是推测的,并将结果更新到寄存器文件或内存中。提交阶段必须按照指令的原始顺序进行,以保证程序的正确性。在提交之前,任何不可逆的操作(如更新状态或触发异常)都要被禁止或延迟。

为了支持完成和提交两个阶段,需要增加一个额外的硬件缓冲区,叫做重排序缓冲区。重排序缓冲区用来保存已经完成但还没有提交的指令的结果,同时也用来传递可能是推测的操作数。使用重排序缓冲区相当于进行了推测的寄存器读取,因为在提交之前,不能确定提供操作数的指令是否是正确的。重排序缓冲区可以保证在预测错误时,能够恢复到正确的状态,并重新开始执行。

 二、重排序缓冲区ROB

重排序缓冲区(ROB)是一种支持硬件推测的技术,可以让指令乱序执行但按序提交,从而提高指令级并行性。

ROB提供了额外的寄存器空间,类似于托马苏洛算法中的保留站扩展了寄存器集合。ROB用来保存指令的执行结果,在指令完成操作和提交之间的时间段。因此,ROB也是指令获取操作数的一个来源,就像保留站在托马苏洛算法中提供操作数一样。

关键的区别是,在托马苏洛算法中,一旦指令写入结果,所有后续发射的指令都会在寄存器文件中找到结果。而在推测中,寄存器文件不会更新,直到指令提交(并且我们确定地知道指令应该执行);因此,ROB在指令执行完成和提交之间的时间段提供操作数。ROB类似于托马苏洛算法中的存储缓冲区,并且我们为了简单起见,将存储缓冲区的功能集成到ROB中。

与实现Tomasulo算法的图相比,主要的变化是增加了ROB并消除了存储缓冲区,存储缓冲区的功能集成到了ROB中。 通过使 CDB 更宽以允许每个时钟多次完成,可以扩展此机制以允许每个时钟多次发出。 

上图显示了包括ROB的处理器的硬件结构。ROB中的每个条目包含四个字段:指令类型、目标字段、值字段和就绪字段。
指令类型字段表示指令是分支(没有目标结果)、存储(有内存地址目标)还是寄存器操作(ALU操作或加载,有寄存器目标)。
目标字段提供寄存器编号(对于加载和ALU操作)或内存地址(对于存储),指示指令结果应该写入的位置。
值字段用来保存指令结果的值,直到指令提交。
就绪字段表示指令已经完成执行,并且值已经准备好。

ROB取代了存储缓冲区。存储仍然分两步执行,但第二步由指令提交完成。虽然保留站的重命名功能被ROB替代了,但我们仍然需要一个地方来缓冲操作(和操作数),在它们发射和开始执行之间的时间段。这个功能仍然由保留站提供。因为每个指令在提交之前都有一个位置在ROB中,我们用ROB条目号来标记结果,而不是用保留站号。这种标记要求为一个指令分配的ROB必须在保留站中跟踪。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/281202
推荐阅读
相关标签
  

闽ICP备14008679号