当前位置: 首页 > 工具软件 > QuArK > 使用案例 >

【Quark RISC-V】流水线CPU设计(5)控制冒险的处理

端木冷勋
2023-12-01

控制冒险最简单的解决方法是,在译码阶段检测到当前执行的是分支指令时,采用上一小节中的流水线暂停方法,将分支指令后续的指令暂时冻结,直到分支跳转的方向以及目标地址被确定。此法的优点是其简单性,缺点是造成了流水线性能的损失。

为了尽可能保持流水线的性能,一种思路是参考乱序执行的做法,在分支指令后方插入若干条无关指令,使得流水线的所有阶段始终处于工作状态,被插入的指令称为分支延迟槽指令;另一种思路是在分支结果产生之前,预测其可能的跳转方向和跳转目标地址,然后提前执行分支目标处的指令。

分支延迟槽一定程度上降低了汇编程序的可读性。此外,随着流水线深度的增加,延迟槽的实现也变得更加复杂,但其带来的性能提升较为有限。为了简化设计和节省芯片面积,RISC-V ISA没有设置分支延迟槽,而是直接通过分支预测解决控制冒险问题。

1.

 类似资料: