计组 forwarding 问题

楼主: jeff80228 (X丞)   2017-10-08 12:13:39
https://i.imgur.com/0HVgLfd.jpg
如图
想请问各位
如果没有forwarding的话
1、2、3、4分别需要插入多少nop指令?
感谢大家的帮忙 谢谢!
作者: box38431 (旋风喷射阿姆斯特朗砲)   2017-10-08 12:33:00
应该只有第一题需要插2个 nop另外三个应该都没 data hazar 还请其他大大确认
作者: ping780520 (ping780520)   2017-10-08 12:59:00
2到4好像没有Data hazard耶,像第二题SW我记得是读t0跟t1两个register然后将值当做memory address写入memory中32(t1)这个位置,所以不会有写入register的动作
作者: nat99up (NAt)   2017-10-08 13:01:00
b大正解
楼主: jeff80228 (X丞)   2017-10-08 13:07:00
想请问为什么第3个不用加入nop呢?如果第3个没有nop t1会不会读到还没取得t0的值呢
作者: sarsman (DeNT15T♠)   2017-10-08 13:42:00
sw是参照t1的位置存t0到内存中t1值不会变动,故可拿来运算应该说,把t1的值读出来后,将t0储存到该值的内存位址
楼主: jeff80228 (X丞)   2017-10-08 14:36:00
抱歉s大 我不是很清楚t1应该要在mem的时候改成t0的值 但是此时ex用的t1应该还没被更改
作者: sarsman (DeNT15T♠)   2017-10-08 16:03:00
MEM时,暂存器的t1并不会被改,而是把t0的值放到memory中memory位址是由暂存器t1的值指定而已
楼主: jeff80228 (X丞)   2017-10-08 19:35:00
https://i.imgur.com/SducTc6.jpgEx阶段t1和t2的暂存器内容已经在ALU中此时的t1应该来不及得到t0的值吧希望大家可以为我解答 感谢
作者: mloop (mloop)   2017-10-08 20:36:00
第一句是把t0 register存到位置t1的memory第二句是把t1 register的值拿出来做事,不会有hazard问题
楼主: jeff80228 (X丞)   2017-10-08 20:44:00
意思是说add中的t1 register的值不会是t0的值对吧?
作者: mloop (mloop)   2017-10-08 20:55:00
不会 会是t1原本的值
作者: ping780520 (ping780520)   2017-10-08 20:58:00
t0跟t1暂存器都只有被读取没有写入,所以t1值还是原本的值
楼主: jeff80228 (X丞)   2017-10-08 21:05:00
了解 谢谢各位大神们的回复!!

Links booklink

Contact Us: admin [ a t ] ucptt.com