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