[理工] mutiple issue

看板Grad-ProbAsk作者 (萬能史哥)時間5年前 (2019/02/14 21:47), 編輯推噓14(14020)
留言34則, 11人參與, 5年前最新討論串1/1
想請問一下這一題 https://i.imgur.com/zkmFDw7.jpg
答案是 https://i.imgur.com/8IQuhsj.jpg
它們好像把指令重新排序了 但我的疑問是 為何 addi s1, s1 , -4 可以拉上去 它應該要等第三個指令sw把t0存進s1吧? 求解QQ -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 27.247.5.170 ※ 文章網址: https://www.ptt.cc/bbs/Grad-ProbAsk/M.1550152033.A.437.html

02/14 22:01, 5年前 , 1F
s1存的是mem位址 sw存的是mem位址的data @@
02/14 22:01, 1F

02/14 22:28, 5年前 , 2F
同樓上 這個感覺很容易不小心看錯XD
02/14 22:28, 2F

02/14 22:33, 5年前 , 3F
只要記得,有write的指令只有Rtype, addi和lw
02/14 22:33, 3F

02/14 22:46, 5年前 , 4F
那想請問大神 就是 如果是這樣 那應該addi也沒有和lw
02/14 22:46, 4F

02/14 22:47, 5年前 , 5F
有相依 那為什麼addi不能往上拉跟lw 同時為cycle 1 呢
02/14 22:47, 5F

02/14 22:49, 5年前 , 6F
addi不是把常數和暫存器的內容相加嗎 為什麼變成算memory
02/14 22:49, 6F

02/14 22:49, 5年前 , 7F
位置了@@
02/14 22:49, 7F

02/14 22:50, 5年前 , 8F
你是不是沒上課阿 凡神明明有說addi可以放cycle1 也可以
02/14 22:50, 8F

02/14 22:50, 5年前 , 9F
放cycle2 這題只是因為指令數不夠 每個packet才會出現一
02/14 22:50, 9F

02/14 22:51, 5年前 , 10F
堆空格 你要是把addi搬上去也沒差 只是cycle2明顯是空包
02/14 22:51, 10F

02/14 22:51, 5年前 , 11F
彈而已
02/14 22:51, 11F

02/14 22:55, 5年前 , 12F
說不定人家沒上課
02/14 22:55, 12F

02/15 03:45, 5年前 , 13F
addi和lw sw在s1還是有相依性的,不過屬於WAR反相關
02/15 03:45, 13F

02/15 03:47, 5年前 , 14F
移上去之後要調整原本的組語,把存取Men.的位置+4
02/15 03:47, 14F

02/15 03:51, 5年前 , 15F
因為不是真實的data,只是存取位置,稍微改動抵消即可
02/15 03:51, 15F

02/15 07:29, 5年前 , 16F
第一個cycle的兩個指令有先後嗎,為什麼要+4?
02/15 07:29, 16F

02/15 07:31, 5年前 , 17F
(如果把addi移上去的話)
02/15 07:31, 17F

02/15 10:34, 5年前 , 18F
eric理解上有點錯誤 加四的只有第一個cycle以外的所有s1
02/15 10:34, 18F

02/15 10:34, 5年前 , 19F
相關的pc-relative addressing instructions 正常情況下i
02/15 10:34, 19F

02/15 10:34, 5年前 , 20F
ssue排滿addi會在cycle1 所以cycle1的lw會跟addi平行運作
02/15 10:34, 20F

02/15 10:34, 5年前 , 21F
這時候lw的s1是不需要+4的
02/15 10:34, 21F

02/15 10:50, 5年前 , 22F
那agag大說的+4是什麼意思,我也是覺得cycle1讀取的s1
02/15 10:50, 22F

02/15 10:50, 5年前 , 23F
不互相干擾不是嗎,還是我解讀錯誤?
02/15 10:50, 23F

02/15 12:46, 5年前 , 24F
lw不會,在addi後才執行的都要加,應該表示存在forward
02/15 12:46, 24F

02/15 12:52, 5年前 , 25F
不過我很好奇duel issue的add和lw包一起,它不會發現有
02/15 12:52, 25F

02/15 12:52, 5年前 , 26F
相依而在MEstage把alu算出的數據傳給DM用嗎
02/15 12:52, 26F

02/15 14:45, 5年前 , 27F
樓上,它們已經平行執行了,lw在addi後面才有可能
02/15 14:45, 27F

02/15 14:51, 5年前 , 28F
可是DM元件不是在ALU後面嗎?ex/mem.reg.後拉條線給DM
02/15 14:51, 28F

02/15 14:52, 5年前 , 29F
好像理解錯你的問題了,不過你可以觀察一下DM前面有沒
02/15 14:52, 29F

02/15 14:52, 5年前 , 30F
有MUX
02/15 14:52, 30F

02/15 14:55, 5年前 , 31F
另外,可以平行處理的指令,相依問題在更早就處理好了
02/15 14:55, 31F

02/15 14:56, 5年前 , 32F
這邊compiler已經檢查好才包成一個packet,否則不會包
02/15 14:56, 32F

02/15 15:07, 5年前 , 33F
發現是b大欸XD你分享的allocate和FGMT都幫助我很大
02/15 15:07, 33F

02/15 19:04, 5年前 , 34F
推b大 >///<
02/15 19:04, 34F
文章代碼(AID): #1SPN5XGt (Grad-ProbAsk)