[理工] 102 交大 計組跟作業系統

作者: pyramidinc (PyramidInc)   2019-12-12 21:21:40
1.
https://i.imgur.com/AnUtU9w.jpg
為什麼是6不是11?跑了兩次的runner值不會更改兩次嗎?
2.
https://i.imgur.com/IsDq5O7.jpg
為什麼第二個是(5-1)+4+1+2?
在ID階段不是只要沖掉一個指令嗎,為什麼是+2?
作者: shinle14   2019-12-12 21:29:00
第二題的2應該是lw跟beq的data hazard
作者: bochengchen (LFII)   2019-12-12 21:29:00
第二題的+2是因為lw接beq要拿到正確的值要stall*2
作者: mistel (Mistel)   2019-12-12 22:10:00
研究了一下 應該是sleep()這個函數的影響,第一條thread進入runner後temp+=5然後睡兩秒,這之間第二條thread進來執行temp+=5,接著第一條thread執行完離開後再換第二條thread離開,造成race conditionhttps://i.imgur.com/6EhrIyy.jpg
作者: pyramidinc (PyramidInc)   2019-12-12 23:11:00
所以沒有sleep的話值會是11嗎?
作者: DLHZ ( )   2019-12-13 11:19:00
如果硬體支援多個thread平行處理 那program沒處理同步的情況一樣會造成race condition還是寫下去另一個就invalidate了?
作者: mistel (Mistel)   2019-12-13 16:51:00
https://i.imgur.com/uLgjTVX.jpg 抱歉忘記補上另一個的,應該要防止的話要自己再做同步措施啦等等 D大的意思是按道理在另一個核心的執行緒按道理他的變數要invalidate嗎?但我猜這個線上compilier只有用到單核

Links booklink

Contact Us: admin [ a t ] ucptt.com