作者pyramidinc (PyramidInc)
看板Grad-ProbAsk
標題[理工] 102 交大 計組跟作業系統
時間Thu Dec 12 21:21:40 2019
1.
https://i.imgur.com/AnUtU9w.jpg
為什麼是6不是11?跑了兩次的runner值不會更改兩次嗎?
2.
https://i.imgur.com/IsDq5O7.jpg
為什麼第二個是(5-1)+4+1+2?
在ID階段不是只要沖掉一個指令嗎,為什麼是+2?
-----
Sent from JPTT on my iPhone
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 115.82.25.168 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Grad-ProbAsk/M.1576156902.A.77A.html
1F:推 shinle14: 第二題的2應該是lw跟beq的data hazard 12/12 21:29
2F:推 bochengchen: 第二題的+2是因為lw接beq要拿到正確的值要stall*2 12/12 21:29
3F:推 mistel: 研究了一下 應該是sleep()這個函數的影響,第一條thread 12/12 22:10
4F:→ mistel: 進入runner後temp+=5然後睡兩秒,這之間第二條thread進來 12/12 22:10
5F:→ mistel: 執行temp+=5,接著第一條thread執行完離開後再換第二條th 12/12 22:10
6F:→ mistel: read離開,造成race condition 12/12 22:10
8F:→ pyramidinc: 所以沒有sleep的話值會是11嗎? 12/12 23:11
9F:→ DLHZ: 如果硬體支援多個thread平行處理 那program沒處理同步的情況 12/13 11:19
10F:→ DLHZ: 一樣會造成race condition還是寫下去另一個就invalidate了? 12/13 11:20
12F:→ mistel: ,應該要防止的話要自己再做同步措施啦 12/13 16:51
13F:→ mistel: 等等 D大的意思是按道理在另一個核心的執行緒按道理他的 12/13 16:54
14F:→ mistel: 變數要invalidate嗎?但我猜這個線上compilier只有用到單 12/13 16:54
15F:→ mistel: 核 12/13 16:54