从零开始写riscv处理器(六)控制冒险:流水线冲刷

本文详细介绍了RISC-V处理器设计过程中的控制冒险和流水线冲刷机制,包括分支指令的处理、流水线的清理策略以及硬件实现,展示了从基础到完整架构的关键步骤。
摘要由CSDN通过智能技术生成

如果我写的文章对你能有些许帮助,说明我做的事还算有点意义,欢迎留个赞哦~
有问题恳请指出,也欢迎探讨qq815506713

专栏其他文章链接:
从零开始写riscv处理器(零)写在前面
从零开始写riscv处理器(一)指令集
从零开始写riscv处理器(二)简单数据通路
从零开始写riscv处理器(三)全部指令数据通路
从零开始写riscv处理器(四)流水线结构
从零开始写riscv处理器(五)数据冒险:停顿与前递
从零开始写riscv处理器(六)控制冒险:流水线冲刷
从零开始写riscv处理器(七)cache基础
从零开始写riscv处理器(八)cache进阶

-----------------------------分割线-----------------------------

1. 控制冒险

1.1 定义

控制冒险:也叫分支冒险,决策依赖于一条指令的结果,而其他指令正在执行中。比如说分支跳转指令,必须等ALU给出结果后才知道该跳转到哪一条语句。

1.2 引例

按照已有的硬件设计,分支指令在EX阶段决定是否跳转,分支指令后续的两条指令都将被取值并且开始执行。如果不进行干预,这两条条后续指令会在 beq 指令跳转之前就开始执行,这样就是我们不期望的。
所以,在BEQ指令的EX阶段,后两条指令分别进入取指和译码阶段,如果要跳转,则需要将后两条指令清理掉,否则放任两条指令继续执行会改变寄存器的值从而导致错误的结果,这就是后面要讲的流水线冲刷机制。

2. 流水线冲刷

将前两级流水线寄存器冲刷掉可以通过插入nop指令(气泡)来实现,当BEQ指令的EX阶段判断要跳转时,给IF_ID、ID_EX流水线寄存器一个clear信号,使得它们在下一周期输出为0。同时,也要将ID_EX流水线寄存器中的控制信号清零。为便于理解,以下链接是流水线冲刷机制的动画示意图(求赞aaa)。
流水线冲刷机制动画_哔哩哔哩_bilibili

3. 流水线冲刷的硬件实现

3.1 多路选择器

为清除ID_EX阶段的控制信号,在控制信号的产生路径上添加一个二选一多选器如图所示,多选器选择信号为1时,多选器输出为0达到清除控制信号的目的。

3.2 跳转控制单元

跳转控制单元输入为jump信号,即跳转指令发生信号;输出有PC_sel、IF_ID_clear、ID_EX_clear、Ctrl_clear,分别是PC跳转地址选择信号,IF_ID流水线寄存器清空信号、ID_EX流水线寄存器清空信号、主控单元清空信号。

将这几个单元添加进已有的硬件架构中如下图所示:

至此,RISCV处理器核基础版本已全部实现,得到最终的硬件架构图如下图所示:

建议将代码搭配最终硬件架构图食用效果更佳hhh
终于整理得差不多了,挺累的,后续有空再继续更新…

  • 10
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Verilog HDL是一种硬件描述语言,可用于开发MIPS流水线处理器。MIPS是一种常见的指令集架构,用于实现高性能和高效能的处理器。 MIPS流水线处理器是一种将指令处理过程划分为多个阶段的处理器设计。这些阶段包括指令取指、指令译码、执行、访存和回等。 在Verilog HDL中,我们可以使用模块化的方式来实现这些阶段。首先,我们可以创建一个指令存储器模块,用于存储并提供指令给处理器。接下来,我们可以创建一个用于译码的模块,将指令编码转换为相应的操作和操作数。然后,我们可以创建一个执行单元模块,用于执行具体的操作。再接下来,我们可以创建一个存储器访问模块,用于进行内存的读操作。最后,我们可以创建一个回模块,将结果回寄存器。 在开发MIPS流水线处理器时,我们需要考虑数据冲突和控制冲突的问题。数据冲突指的是在处理指令时,由于数据依赖引起的冒险问题,可以通过插入气泡(空操作周期)或转发(数据旁路)来解决。控制冲突指的是由于条件分支导致的指令错序问题,可以通过预测分支结果和冲刷流水线来解决。 为了支持50条指令,我们需要对指令存储器进行扩展,以存储更多的指令。此外,我们还需要修改译码模块、执行单元模块和访存模块,以支持新的指令。 总之,Verilog HDL是开发MIPS流水线处理器的一种强大工具,通过模块化的设计和考虑冲突问题,我们可以开发出高性能和高效能的处理器,并支持更多的指令。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值