作者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/cn.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