标签:计组 异常 寄存器 延迟 ike mars 计算 决定 结果
input:clk, reset, A[31:0], B[31:0], start, busy
output: HI[31:0], LO[31:0]
instr控制control_2内start==1,control_mdu[2:0]控制计算类型
识别start为1,busy置1,且开始计数,计数大小由control_mdu决定取值
识别到start时,计算结果始终存在两个pre寄存器内,当busy计数至目标值时转存给HI和LO
注意busy和start为1时,instr_01为乘除法指令时一律阻塞
同时注意乘除法指令与其他指令的冲突关系
(一)计算类指令
(二) 访存类指令
(三) 跳转类指令
(一) 跳转类条件写地址的冲突
例如_zal 将tnew设置为0时,需要考虑到如果最终没有写入,则会在过程中转发错误值
解决方法1:
解决方法2:(最终采用下面这种,符合全力转发的要求)
(二) 存储类条件写数值的冲突
标签:计组 异常 寄存器 延迟 ike mars 计算 决定 结果
原文地址:https://www.cnblogs.com/Happy-Huan/p/14254726.html