共有メモリコンピュータ(shared memory computer)

複数のプロセッサがメモリを共有しているコンピュータのこと。計算では、入力データの読み込み、中間結果・出力の書き込みに共有メモリを利用する。各プロセッサのアクセスアドレスをずらして、全プロセッサが同時に共有メモリにアクセスすると計算が速くなる。CUDAアーキテクチャはこれかな?

複数のプロセッサが取りうるメモリアーキテクチャなので、「フラインの分類」でいうSISDには関係のない話。(SISDでは複数プロセッサを意味をなさない)

共有メモリコンピュータは同じメモリアドレスに対する読込・書込形式によって4つに分類ができる。排他・同時の組み合わせ。「排他」は「同じメモリアドレスに対する読込 or 書込は排他的」という意味。「同時」は「同じメモリアドレスに対する読込 or 書込は同時実行可能」という意味。

  • EREW : exclusive-read exclusive-write、排他読み出し・排他書込み
  • CREW : concurrent-read exclusive-write、同時読み出し・排他書込み
  • ERCW : exclusive-read concurrent-write、排他読み出し・同時書込み
  • CRCW : concurrent-read concurrent-write、同時読み出し・同時書込み

同時読込の処理結果は常に同じだが、同時書込の処理結果は不定である。不定にならないようなロジック(IDの最も小さいプロセッサの結果が書き込まれるなど)は考えられるが、デバッグ大変そうだし、同時書込みを許容するのは時間の浪費かと。

共有メモリコンピュータによる並列計算モデルのことを並列ランダムアクセスマシン(PRAM : parallel random-access machine)と呼ぶとの事。