マルチプロセッサとは?1台に複数のCPUを載せて並列実行する設計

公開: 更新: カテゴリ: テクノロジ系

30秒で結論

マルチプロセッサとは(全体像)

マルチプロセッサは、1台のコンピュータに複数のCPUを載せて、仕事を手分けして並列に処理する設計のこと。CPU同士がメモリをどう使うかで、大きく2種類に分かれる。

身近にたとえると、SMPは会議室で全員が共通の資料を見る(みんな同じ距離)、NUMAは各自の机に手元資料があり、他人の机へ行くのは遠回り(近い順に使うと速い)。


詳しく:SMP/NUMAとマルチコアとの関係だけ覚えれば戦える

ここが記事の心臓部。まずSMPとNUMAを対比しよう。

SMPとNUMA

方式メモリ向きたとえ
SMP全CPUが共有メモリに等しくアクセス小規模(〜8コア程度)会議室の共通資料
NUMA各CPUに局所メモリ。他のメモリは遠くて遅い大規模(サーバー・スパコン)各自の机+他人の机は遠回り

ここで取り違えやすいのがNUMA。CPUがたくさんあって速そうに見えるが、他のCPUのメモリ(リモート)へのアクセスは遅い。だから、なるべく自分の手元(局所メモリ)を使うように工夫しないと、かえって遅くなる。「NUMA=必ず速い」ではない。

次に、よく混同されるマルチコアとの関係

方式と実装の違い

用語位置づけ
マルチプロセッサ設計の方式の総称(SMP/NUMA)
マルチコア1つのチップに複数のコアを載せる実装

つまり、マルチプロセッサは「方式」、マルチコアは「実装」で、層が違う。今のパソコンのCPUはほぼマルチコアで、その多くはSMP方式だ。「マルチコア=SMP」と単純にイコールにしないのがコツ、というわけだね。なお、複数CPUのキャッシュが食い違わないようにするキャッシュ一貫性の管理も課題になる。

わかりやすく言い換えると

要するに、ポイントは「メモリのつなぎ方(SMP/NUMA)」と「方式と実装の区別」だ。

SMP … 全員が共通資料(共有メモリ)。小規模向き

NUMA … 各自の手元資料(局所メモリ)。大規模向きだが、他人の机は遠くて遅い

方式と実装 … マルチプロセッサは方式、マルチコアは実装(別の層)

「NUMAは必ず速い、ではない」「マルチコア=SMPではない」だけは取り違えやすい。


試験のツボ

🔴 一番出る:SMPとNUMAの違い

①SMPは全CPUが共有メモリに等しくアクセス(小規模)

②NUMAは各CPUに局所メモリ(大規模・他のメモリは遠い)

🔴 次に出る:NUMAは必ず速いではない

①他のCPUのメモリ(リモート)は遅い

②局所メモリを使う工夫をしないと、かえって遅くなる

🟡 押さえると安定:方式と実装

①マルチプロセッサは方式(SMP/NUMA)

②マルチコアは1チップに複数コアを載せる実装


よくある間違い

「NUMAはコアが多いから必ず速い」→ ✗  他のCPUのメモリ(リモート)は遅い。局所メモリを使う工夫が必要。

「マルチコアはSMPと同じもの」→ ✗  マルチコアは実装、SMPは方式で、層が違う。

「SMPは各CPUに別々の局所メモリを持たせる方式」→ ✗  それはNUMA。SMPは全CPUが共有メモリに等しくアクセスする。


試験での出題パターン

実際の問題でたしかめてみよう。

オリジナル問題1(SMPとNUMA)

📝 オリジナル問題 1 SMPとNUMA

SMPとNUMAに関する次の記述のうち、正しいものはどれか。

  1. SMPは各CPUに局所メモリを持たせ、NUMAは全CPUが共有メモリに等しくアクセスする
  2. SMPもNUMAもまったく同じ方式で、メモリへのつなぎ方に違いはないものとされている
  3. SMPは全CPUが共有メモリに等しくアクセス、NUMAは各CPUに局所メモリを持たせる
  4. SMPもNUMAも単一CPUの方式で、複数CPUにはいっさい使われないものとされている
ネトスパ
ネトスパ 解答・解説

解答は 3 である。

SMPは全CPUが共有メモリに等しくアクセス、NUMAは各CPUに局所メモリを持たせるのだ。会議室の共通資料と各自の机の関係なるぞ。

選択肢1はSMPとNUMAが逆。選択肢2の「同じ方式」、選択肢4の「単一CPU」も誤りである。

選択肢判定理由
1SMPとNUMAが逆
2つなぎ方が違う
3SMP=共有・NUMA=局所
4複数CPUの方式

オリジナル問題2(NUMAは必ず速いではない)

📝 オリジナル問題 2 NUMAの注意点

NUMAに関する次の記述のうち、正しいものはどれか。

  1. NUMAはコアが多いので、どんな使い方をしても必ずSMPより速くなるものとされている
  2. NUMAは他のCPUのメモリ(リモート)が遅いので、局所メモリを使う工夫が必要である
  3. NUMAは局所メモリを持たず、すべてのCPUが共有メモリだけを使う方式とされている
  4. NUMAはメモリをいっさい使わず、すべての計算をCPU内部だけで行うものとされている
ネトスパ
ネトスパ 解答・解説

解答は 2 である。

NUMAは他のCPUのメモリ(リモート)が遅く局所メモリを使う工夫が必要なのだ。「NUMA=必ず速い」ではないなるぞ。

選択肢1の「必ず速い」、選択肢3の「局所メモリを持たない」、選択肢4の「メモリを使わない」はどれも誤りである。

選択肢判定理由
1リモートは遅い
2リモートは遅く局所最適化が必要
3局所メモリを持つ
4メモリを使う

オリジナル問題3(方式と実装)

📝 オリジナル問題 3 マルチコアとの関係

マルチプロセッサとマルチコアの関係に関する次の記述のうち、正しいものはどれか。

  1. マルチプロセッサは方式の総称、マルチコアは1チップに複数コアを載せる実装である
  2. マルチプロセッサは実装、マルチコアは方式という、役割が逆の関係になっている
  3. マルチプロセッサもマルチコアもまったく同じ言葉で、区別はいっさいないものとされる
  4. マルチコアは単一コアの別名で、コアは1つしか載せられないものとされているものだ
ネトスパ
ネトスパ 解答・解説

解答は 1 である。

マルチプロセッサは方式の総称(SMP/NUMA)、マルチコアは1チップに複数コアを載せる実装なのだ。層が違うものなるぞ。

選択肢2の「役割が逆」、選択肢3の「同じ言葉」、選択肢4の「単一コアの別名」はどれも誤りである。

選択肢判定理由
1方式の総称と実装で層が違う
2方式と実装が逆
3層が違う別の概念
4複数コアを載せる

まとめ

押さえどころ

次に学ぶ


執筆: SikakuQuest編集部

勉強は、クエストになった。

資格の勉強を、冒険に変えるRPG学習アプリ

App Storeで見る