第8章:转移指令的实现

本文探讨了在OpenMIPS处理器中如何通过延迟槽技术来减少转移指令带来的效率损失。内容涉及流水线中的控制相关问题,解释了延迟槽的概念,即在转移指令后的指令无论是否转移都会执行。文章详细阐述了在取指、译码和执行阶段对OpenMIPS进行修改以实现这一优化,并提出了测试跳转和分支指令的方案,以验证改进的效果。
摘要由CSDN通过智能技术生成
  • 转移指令包括跳转、分支两种,区别在于前者是绝对转移,后者是相对转移,但实现方法是相似的。转移指令设计延迟槽

8.1 延迟槽

  • 第五章介绍了流水线中存在的三种相关:数据相关、结构相关、控制相关。
  • 其中控制相关是指流水线中的转移指令或者其他需要改写PC的指令造成的相关。这些指令改写了PC的值,所以导致后面已经进入流水线的其他几条指令无效,比如:如果转移指令在流水线的执行阶段进行转移条件判断,在发生转移时,会导致当前处于取指、译码阶段的指令无效,需要重新取指。
    -

在这里插入图片描述
即流水线执行阶段进行转移判断,并且转移发生,会有2条无效指令,浪费了两个时钟周期,为了减少损失,规定转移指令后面的指令位置为“延迟槽”,延迟槽中的指令称为延迟指令,延迟指令总是被执行,与转移发生与否没有关系。所有分支指令在转移到目标地址前都要先执行延迟槽中的指令。

8.3 转移指令实现思路

8.3.1 实现思路

为了尽量减少转移指令带来的损失,OpenMIPS在译码阶段进行转移条件的判断,如果满足转移条件,那么修改PC为转移目标地址。

8.3.2 数据流图的修改

在这里插入图片描述
在这里插入图片描述

8.3.3 系统结构的修改

在这里插入图片描述

8.4 修改OpenMIPS以实现转移指令

8.4.1 修改取指阶段的PC模块

在这里插入图片描述

8.4.2 修改译码阶段

  1. 修改ID模块
    在这里插入图片描述
  2. 修改ID/EX模块
    在这里插入图片描述

8.4.3 修改执行阶段的EX模块在这里插入图片描述

8.4.4 修改OpenMIPS模块

8.5 测试转移指令的实现效果

8.5.1 测试跳转指令

8.5.2 测试分支指令

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值