「強いメモリモデル」と「弱いメモリモデル」
DRANK

Apple M1についての面白い記事を見かけて、久しぶりにメモリモデル屋(?)の血が騒いだのでブログを書く。 note.com 強いメモリモデル 現代のCPUアーキテクチャでは、x86(64bit, 32bitどちらも)が「強いメモリモデル」を採用しており、それ以外のメジャーなCPUが「弱いメモリモデル」を採用している。この「強いメモリモデル」「弱いメモリモデル」について、まずおさらいしておこう。 以下のように、2つの変数a, bに対して異なるCPUコアが同時にアクセスしたとする。 int a = 0; int b = 0; CPU1: a = 1; b = 1; CPU2: int r1 =…

yamasa.hatenablog.jp
Related Topics:
3 comments
  • 抗いがたい誘惑が待ち受け、飽くなき好奇心が呼び覚まされる、氷の神殿の壮大なクリスタルの扉の魅惑的な魅力を体験してください。moto x3m

  • メモリアクセス順序保証の話。
    プログラムの並列実行において、命令の実行順を入れ替えるアウトオブオーダー実行(OoO)は一般的に行われているが、無条件なリオーダーは逐次実行では起こり得ない状態遷移を引き起こすことがある。
    そのような事態を防ぐために現代のCPUアーキテクチャではメモリモデルと呼ばれるメモリアクセス順序における条件を採用している。
    この記事では「強いメモリモデル」と「弱いメモリモデル」それぞれの特徴について説明している。