Re: [理工] [計組] delayed branch

看板Grad-ProbAsk作者時間14年前 (2011/11/29 00:13), 編輯推噓2(202)
留言4則, 2人參與, 最新討論串1/1
※ 引述《wsx02 (無酒罐)》之銘言: : from before : add $s1, $s2, $s3 : if $s2=0 then : delay slot : 請問為什麼要把add搬到delay slot ? 因為add不管跳不跳都要執行,所以放在delay slot裡, 不管有沒有跳都不會浪費掉那個clock。 : -------------------------------------- : from target : sub $t4, $t5, $t6 : add $s1, $s2, $s3 : if $s1=0 then : delay slot : 請問為什麼要把sub複製到delay slot ? 因為if的$s1與上面的add有RAW dependance, 所以不可以用from target, 而sub是Lebel指的位置(你沒打出來XD), 所以這個case在常跳的情況下都會執行到sub, 所以把sub放到一定會用掉的clock裡面並把Label往下移一格剛好。 這裡有一個地方要注意,就是如果沒跳的話也會多作一次sub, 所以要保證多一次沒差才可以使用。 : ---------------------------------------- : from fall through : add $s1, $s2, $s3 : if $s1=0 then : delay slot : sub $t4, $t5, $t6 : 請問為什麼要把sub搬到delay slot ? 同from target,有RAW dependance, 而這個case在不常跳的情況下都會執行到sub, 一樣把sub放到一定會用掉的clock內剛好, 並且要保證多作一次也沒差。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.30.136 ※ 編輯: wheels 來自: 140.112.30.136 (11/29 00:16)

11/29 00:32, , 1F
請問delay slot裡的指令是不管怎樣 一定要執行的嗎?
11/29 00:32, 1F

11/29 00:41, , 2F
請問為什麼有RAW就不能放delay slot?
11/29 00:41, 2F

11/29 01:03, , 3F
因為if($si=0)這行, $s1的值要先抓前面add指令算好的值
11/29 01:03, 3F

11/29 01:12, , 4F
如果add指令放到delay slot,則if內的$s1值就不保證正確
11/29 01:12, 4F
文章代碼(AID): #1EqxCY3P (Grad-ProbAsk)