推 box38431: 應該只有第一題需要插2個 nop 10/08 12:33
→ box38431: 另外三個應該都沒 data hazar 還請其他大大確認 10/08 12:34
推 ping780520: 2到4好像沒有Data hazard耶,像第二題SW我記得是讀t0 10/08 12:59
→ ping780520: 跟t1兩個register然後將值當做memory address寫入memo 10/08 12:59
→ ping780520: ry中32(t1)這個位置,所以不會有寫入register的動作 10/08 12:59
推 nat99up: b大正解 10/08 13:01
→ jeff80228: 想請問為什麼第3個不用加入nop呢? 10/08 13:07
→ jeff80228: 如果第3個沒有nop t1會不會讀到還沒取得t0的值呢 10/08 13:25
推 sarsman: sw是參照t1的位置存t0到記憶體中 10/08 13:42
→ sarsman: t1值不會變動,故可拿來運算 10/08 13:43
→ sarsman: 應該說,把t1的值讀出來後,將t0儲存到該值的記憶體位址 10/08 13:46
→ jeff80228: 抱歉s大 我不是很清楚 10/08 14:36
→ jeff80228: t1應該要在mem的時候改成t0的值 但是此時ex用的t1應該 10/08 14:39
→ jeff80228: 還沒被更改 10/08 14:39
推 sarsman: MEM時,暫存器的t1並不會被改,而是把t0的值放到memory中 10/08 16:03
→ sarsman: memory位址是由暫存器t1的值指定而已 10/08 16:05
→ jeff80228: Ex階段t1和t2的暫存器內容已經在ALU中此時的t1應該來 10/08 19:39
→ jeff80228: 不及得到t0的值吧 10/08 19:39
→ jeff80228: 希望大家可以為我解答 感謝 10/08 19:40
推 mloop: 第一句是把t0 register存到位置t1的memory 10/08 20:36
→ mloop: 第二句是把t1 register的值拿出來做事,不會有hazard問題 10/08 20:36
→ jeff80228: 意思是說add中的t1 register的值不會是t0的值對吧? 10/08 20:44
推 mloop: 不會 會是t1原本的值 10/08 20:55
推 ping780520: t0跟t1暫存器都只有被讀取沒有寫入,所以t1值還是原 10/08 20:58
→ ping780520: 本的值 10/08 20:58
→ jeff80228: 了解 謝謝各位大神們的回覆!! 10/08 21:05