CPUアーキテクチャによる違いとロック
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/07/25 09:42 UTC 版)
「不可分操作」の記事における「CPUアーキテクチャによる違いとロック」の解説
カウンタのインクリメント/デクリメントは、RISCアーキテクチャの場合、上記の例のようにリードとライトが別々の命令で行われるために、そのままでは不可分操作にできない。しかし、x86アーキテクチャのようなCISCでは、インクリメントやデクリメントを1命令で実行する命令が存在するため、それだけで不可分性が成立する。必要最小限の不可分操作は、結局テスト・アンド・セットのような指定されたメモリアドレスへのリードとライトを不可分に行う操作となる。しかし、RISCアーキテクチャは 1命令で複数回のメモリアクセスを行わないのが基本思想であるため、直接テスト・アンド・セット命令を実装することはできない(テスト・アンド・セットを命令として実装する場合、バスをロックしてリードとライトを行って他のバスマスタがメモリアクセスを途中で発行できないようにしている)。そのためにコンペア・アンド・スワップやLoad-Link/Store-Conditionalといった不可分操作が使われるようになった。 上記の例は「クリティカルセクション」のまわりでロックを獲得することで解決するように見える。しかし、ロックもハードウェアのサポート無しでは単なるメモリ上のデータでしかない。スピンロックなどのアルゴリズムをソフトウェアだけで実装することは可能だが、効率的ではない。そのために、上述のテスト・アンド・セットなどの不可分操作が最近のプロセッサで実装されており、そういった機能でロックを実装する。
※この「CPUアーキテクチャによる違いとロック」の解説は、「不可分操作」の解説の一部です。
「CPUアーキテクチャによる違いとロック」を含む「不可分操作」の記事については、「不可分操作」の概要を参照ください。
- CPUアーキテクチャによる違いとロックのページへのリンク