作者killerjoe (寂寞边界)
看板Grad-ProbAsk
标题Re: [理工] [计组]-同步化指令
时间Fri Dec 4 23:50:02 2009
※ 引述《polomoss (小泽)》之铭言:
: try : add $t0,$zero,$s4
: ll $t1,0($s1)
ll除了读入($s1)外,另外还会在cpu内部的暂存器中设置一个bit用来监视($s1)
是否有被更改,另外还会有一个暂存器存放($s1)的位址
//这边是让你执行atomic operation
cpu会不断的检查($s1)是否有被改变
若被改变就会被设为0
: sc $t0,0($s1)
//若成功则把$t0的值存入($s1)中,并返回一个值1(cpu内的检查bit)
//若失败则返回一个值0(cpu内的检查bit)
: beq $t0,$zero,try
若返回的值为0,即代表ll与sc间的不是atomic则会回到try重新执行
1,即代表ll与sc间的是atomic,则继续往下直行
: add $s4,$zero,$t1
: 可以请问这段程式码每个暂存器各扮演什麽角色吗~?
: 我知道他功能类似OS里面的SWAP,有key
: 但是就是看不懂上面那段程式码~
: 哪个是key,哪一段是swap,
: 以及他要同步化的资料是谁,
: 和ll和sc在这边的用意
: 总之就是都看不懂....希望有人帮忙解释一下
: 谢谢
如有错误请指教~谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.42.204.2
※ 编辑: killerjoe 来自: 114.42.204.2 (12/04 23:50)
※ 编辑: killerjoe 来自: 114.42.204.2 (12/04 23:51)
1F:推 polomoss:这样大概懂了~~我就觉得ll跟sc中间要摆要同步化的指令 12/05 17:32
2F:→ polomoss:谢谢解释~~ 12/05 17:32