計組 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