看板 Grad-ProbAsk 關於我們 聯絡資訊
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://www.ptt.cc/bbs/Grad-ProbAsk/M.1576156902.A.77A.html
shinle14: 第二題的2應該是lw跟beq的data hazard 12/12 21:29
bochengchen: 第二題的+2是因為lw接beq要拿到正確的值要stall*2 12/12 21:29
mistel: 研究了一下 應該是sleep()這個函數的影響,第一條thread 12/12 22:10
mistel: 進入runner後temp+=5然後睡兩秒,這之間第二條thread進來 12/12 22:10
mistel: 執行temp+=5,接著第一條thread執行完離開後再換第二條th 12/12 22:10
mistel: read離開,造成race condition 12/12 22:10
mistel: https://i.imgur.com/6EhrIyy.jpg 12/12 22:14
pyramidinc: 所以沒有sleep的話值會是11嗎? 12/12 23:11
DLHZ: 如果硬體支援多個thread平行處理 那program沒處理同步的情況 12/13 11:19
DLHZ: 一樣會造成race condition還是寫下去另一個就invalidate了? 12/13 11:20
mistel: https://i.imgur.com/uLgjTVX.jpg 抱歉忘記補上另一個的 12/13 16:51
mistel: ,應該要防止的話要自己再做同步措施啦 12/13 16:51
mistel: 等等 D大的意思是按道理在另一個核心的執行緒按道理他的 12/13 16:54
mistel: 變數要invalidate嗎?但我猜這個線上compilier只有用到單 12/13 16:54
mistel: 核 12/13 16:54