Re: [理工] 计组同步指令

楼主: hackersky109 (riverK)   2016-04-25 18:00:57
※ 引述《gsmzxcvbnm ()》之铭言:
: http://i.imgur.com/BBlAyGm.jpg
: 有人可以跟我解释这段程式到底在表达什么吗?
: 抱歉直接要大家整个解释好像不太好,但我今天已经看了一整天了还看不出来这断程式到
: 底完成了什么
: 如果是以下题目我还会写,就是不让两个处理器同时存取某个参数
: http://i.imgur.com/dNw6Zah.jpg
: 但一开始的范例到底要表达什么啊
这段程式就是$s4跟0($s1)在做atomic swap
第一行
先把$s4的值丢到$t0
(因为如果直接用$s4去做store conditional会有个回传值
如果失败的话连原本的资料都不见了)
第二行
把0($s1)的值丢到$t1
第三行
拿$t0跟0($s1)做store conditinal
如果成功 $t0的值就存到0($s1) 然后会有个回传值$t0 = 1
如果失败(代表有其他人在存取) 0($s1)的值不变 然后回传值 $t0 = 0
(这就是为何不直接拿$s4去做store conditional的原因)
第四行
如果 $t0 = 0 代表交换失败 跳回try这个label从头开始
如果 $t0 = 1 代表交换成功 继续做下一行
第五行
执行到这行代表刚刚store conditional已经成功
$s4的值已经成功经由$t0存到0($s1)
所以最后再把$t1的值丢到$s4 就完成了整个atomic swap
作者: gsmzxcvbnm   2016-04-26 16:09:00
嗯嗯,谢谢你

Links booklink

Contact Us: admin [ a t ] ucptt.com