在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
芯片精品文章合集(500篇!)    创芯人才网--重磅上线啦!
查看: 4589|回复: 3

[求助] 关于mips的pipeline....forward跟stall unit能否共存问题

[复制链接]
发表于 2013-4-10 04:41:20 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
我最近在写verilogmips。。。是用pipeline写的参考的一本 computer organization and design, hardware/software
我有两个问题:
1. stall 跟 forward不能放在一起写。
上面把stall 跟forward放在一起了。
但是我写完分析结果发现结果不对。
而且我觉得forward是stall的替代方案,不能放在同一个pipeline里面写吧。因为stall 是因为有往同一个register写或者读在三个pipeline之内,比如EX, MEM, WB产生hazard。
而 forward也是在上面三个pipeline之内检测,然后forward回EX stage的 alu 的输入。
如果hazard detection and forward unit 同时存在一个电路的话会有问题的。

2. 这样又有个问题,如果只有forward的话。如果我们运算完数据。 ADD SUB ,下一条语句是 sw: store to the memory. 这个时候就有问题了,因为sw上面的一条语句, Let's say it's  a addition. 这个addtion的结果必须先存回到register里面,然后后面的SW才能从相应的regsiter读出数据,存到memory. 这个时候就需要stall 大概从ID, EX, MEM, WB,这几个stage.  但是我这个时候写的时候仿真结果就是完全不出来了。我在stall 是用的这个: if (opode == sw && rt != dst_wb) 这个语句就不对了,但是奇怪的是如果用上面问题1 也就是那本书上的stall的if 语句就对。那个if是这么写的: if(mem_read_ex && rt_ex == rs_id || rt_ex == rt_id).

不知道是为什么。。。。

我写的有点多并且有点乱,希望各位前辈慢慢看完。。。
小弟在这谢过了。~~~~
发表于 2013-4-10 09:50:25 | 显示全部楼层
不错的挺好的
 楼主| 发表于 2013-4-10 10:17:47 | 显示全部楼层
回复 2# zhuhao461261


   what?!
发表于 2013-4-10 22:49:40 | 显示全部楼层
顶一下
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

关闭

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-3-29 22:00 , Processed in 0.041410 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表