[理工] 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