mips的旁路_【参赛手记】MIPS流水线之阵列乘除法的实现

MIPS乘除法运算主要包含四条指令,分别是:mult、mult、div、divu。结果保存在两个体系外寄存器中hi、lo。对于乘法而言,hi寄存器保存高位,lo保存低位;对于除法,hi保存余数,lo保存商。首先,需要注意一点:MIPS Family的乘除法运算都不是集成在ALU内,而是单独built一个乘除法单元(MDU)。之前实现的乘除法运算,需要32个周期左右的延时,因为采用了资源复用的设计,主要算法就是基本的原码一位乘和原码一位除,补码一位乘的校正法我也实现过,Booth算法我没有实现。然而,这些实现都是每个周期只进行一次基本运算,从而叠加30+次,取得最终结果的思路。现假设,这是在流水线中,我们不难想象这样的大幅度延迟会造成大量的转发、冲突等。因为,很多时候我乘法或除法计算后,紧接下来的指令十有八九就是mflo/mfhi/ Integer Operation。所以,先让我们看一看MIPS 24K处理器如何处理乘除法流水线的延时。

首先,可以看到对于MULT/MULTU+MFHI/MFLO,延时为0cycle,如何实现呢,旁路对吧?而对于MUL+Integer Operation,延时0cycle;对于除法,我觉得MIPS 24K设计的很巧妙,通过比较除数的位数,来决定延时,这一做法我们可以学习。延时均很多,当然,我也可以使用一个计数器来算这些延时,同时与MDUctrl做逻辑,来发送MDUdone信号进行握手。但是,我个人觉

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值