【五级流水线CPU】—— 5. 转移指令(14条)

本文深入探讨RISC-V指令集中的跳转与分支指令,包括绝对转移和相对转移两类,详细解析了延迟槽机制,如何在译码阶段进行转移判断,并介绍了不同情况下PC的取值变化。阐述了当转移发生时如何处理延迟指令,以及如何通过系统结构图实现转移目标地址的确定。测试涵盖了8种转移指令,揭示了这些指令在流水线架构中的影响和优化策略。
摘要由CSDN通过智能技术生成

转移指令(14)

一共14条指令,分为两类:

  • 跳转指令(绝对转移):jr、jalr、j、jal
  • 分支指令(相对转移):b、bal、beq、bgez、bgezal、bgtz、blez、bltzal、bne

1. 延迟槽

不MEM进行判断,直接在译码阶段进行判断

在流水线译码阶段进行转移判断,并且转移发生,那么会有1条无效指令,导致浪费了一个时钟周期。为了减少损失,规定转移指令后面的指令位置为“延迟槽”,延迟槽中的指令被称为“延迟指令”。延迟指令总是被执行,与转移发生与否没有关系。

image-20210620164031831

2. 转移分支指令

2.1 分析

主要修改两个地方:
(1) 译码阶段增加转移判断
(2) PC的取值变为三种情况:
情况一:PC=PC+4
情况二:PC不变(流水线暂停时)
情况三:PC为转移判断的结果(转移指令,满足转移条件)

image-20210620115440061

相对应在系统结构图里,若满足转移条件,ID模块branch_target_address_o给出转移地址送PC;同时,设置next_inst_in_delayslot_o,表示下一条是延迟槽指令,经过一个周期,通过ID/EX模块送回ID模块

image-20210620115823174

2.2 测试8 转移指令

image-20210620121334118

image-20210620122103868

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值