load linked/store conditionalについて
MIPSの命令に
load linked/store conditional(以下LL/SC)という命令があり、これらの動作が分かりません。
<私の理解>
LLとSCによる不可分なSWAP
LLの動作
①メモリ上のアドレスを指定し、アドレスに入っている値が1かどうか確かめる
②値が1ならば、ロックがかかっているので何もしない。値が0ならば、ロックするアドレスの値をレジスタにストアする
SC
①メモリ上のアドレスを指定し、対となるLL命令によってロックされているならば、
レジスタの値をメモリ上のアドレスにストアする。
②①が成功したらレジスタの値を1にする。失敗なら0にする。
<質問>
LLやSC自体がbeqなどを含んだ複雑な命令に見えるのですが、
これらは単一の命令なのですか?
LLとSCは一対の命令であると、「コンピュータの構成と設計(上)」に書かれているのですが、一対の命令という意味がわかりません。連続して使うから一対と言うのですか?
マルチプロセッサなどでは、どのプロセッサの命令がどういう順番で実行されるかわからないから、競合が発生する可能性があり、あるプロセッサのLLによりロックされた場合、同じプロセッサのSCであれば、それをアンロックできると言うことですか?