並列処理とは(全体像)
並列処理は、たくさんの計算を同時に進めて、全体を速くするやり方。1人で順番にこなすより、大勢で手分けしたほうが早く終わる、という発想だ。
工場でたとえると、職人1人で順にやる(並列でない)よりも、複数の部門が同時に作業するほうが速い。AIやグラフィックの計算のように「同じような計算が大量にある」場面で特に効く。
押さえたいのは、並列処理にはいくつかのやり方(型)があること。それを整理したのが、次のFlynnの分類だ。
詳しく:Flynn4分類とアムダールの法則だけ覚えれば戦える
ここが記事の心臓部。まずFlynnの4分類を表で押さえよう。「命令」と「データ」がそれぞれ単一か複数かで分ける。
Flynnの4分類
| 分類 | 命令 | データ | 代表例 |
|---|---|---|---|
| SISD | 単一 | 単一 | 昔ながらの1つのCPU(順番に処理) |
| SIMD | 単一 | 複数 | GPU(同じ命令で大量のデータを一気に) |
| MISD | 複数 | 単一 | まれ(ほぼ理論上) |
| MIMD | 複数 | 複数 | マルチコアCPU・分散システム |
現代の主役はSIMDとMIMD。SIMDは「同じ命令を、たくさんのデータに一気に」かける型でGPUが代表。MIMDは「それぞれが別々の命令を」並行で動かす型で、マルチコアCPUが代表だ。MISDはほとんど使われず、出てきたら外す選択肢と思ってよい。
次に大事なのがアムダールの法則。これは「並列にしても、速くなるには限界がある」ことを表す。
アムダールの法則(速くなる限界)
| ポイント | 内容 |
|---|---|
| 言いたいこと | 並列にできない部分(順番にやるしかない部分)が、全体の速さを縛る |
| 例 | 9割を並列にできても、残り1割が順番なら、最大でも約10倍までしか速くならない |
つまり、コアを増やせばその数だけ速くなる、とはならない。順番にやるしかない部分が「足を引っぱる」ので、そこが全体の速さを決める、というわけだね。
わかりやすく言い換えると
要するに、並列処理は「手分けして同時にこなす」やり方だ。
①Flynn4分類 … 命令とデータが単一か複数かで4つに分ける
②主役 … SIMD=GPU(同じ命令で大量データ)、MIMD=マルチコア(別々の命令を並行)
③アムダールの法則 … 順番にやる部分が残ると、いくらコアを増やしても限界がある
「nコアでn倍」とはならない、というのが大事なポイント。
試験のツボ
🔴 一番出る:Flynn4分類
①SISD=単一CPU、SIMD=GPU
②MIMD=マルチコア、MISDはまれ
🔴 次に出る:SIMDとMIMDの違い
①SIMDは同じ命令で大量のデータ(GPU)
②MIMDはそれぞれ別の命令を並行(マルチコア)
🟡 押さえると安定:アムダールの法則
①並列化には限界がある
②順番にやる部分が全体の速さを決める
よくある間違い
①「nコアあれば必ずn倍速くなる」→ ✗ アムダールの法則により、順番にやる部分が残ると限界がある。
②「SIMDとMIMDは同じもの」→ ✗ SIMDは同じ命令で大量データ、MIMDはそれぞれ別の命令。設計が違う。
③「Flynnの分類はデータの量だけで決まる」→ ✗ 命令とデータの「単一か複数か」の組み合わせで4つに分ける。
試験での出題パターン
実際の問題でたしかめてみよう。
オリジナル問題1(Flynn4分類)
Flynnの分類に関する次の記述のうち、正しいものはどれか。
- Flynnの分類はデータの量だけで決まり、命令の数とはいっさい関係がないものとされる
- Flynnの分類は命令とデータが単一か複数かの組み合わせで4種類に分けるものである
- Flynnの分類はSISDの1種類しかなく、ほかの分類は存在しないものとされている
- Flynnの分類は記憶容量の大小で分けるもので、命令やデータとは無関係とされている
解答は 2 である。
Flynnの分類は命令とデータが単一か複数かの組み合わせで4種類に分けるのだ。SISD・SIMD・MISD・MIMDの4つなるぞ。
選択肢1の「データだけ」、選択肢3の「1種類だけ」、選択肢4の「記憶容量」はどれも誤りである。
| 選択肢 | 判定 | 理由 |
|---|---|---|
| 1 | ✗ | 命令の数も使う |
| 2 | ✓ | 命令×データで4分類 |
| 3 | ✗ | 4種類ある |
| 4 | ✗ | 容量では分けない |
オリジナル問題2(SIMDとMIMD)
SIMDとMIMDに関する次の記述のうち、正しいものはどれか。
- SIMDはGPUで同じ命令を大量データに、MIMDはマルチコアで別々の命令を並行する
- SIMDはそれぞれ別の命令を並行し、MIMDは同じ命令を大量データにかけるものとされる
- SIMDもMIMDもまったく同じもので、命令やデータの扱いに違いはないものとされている
- SIMDもMIMDも1つのデータしか扱えず、並列に処理することはできないものである
解答は 1 である。
SIMDはGPUの代表で、同じ命令を大量のデータに、MIMDはマルチコアで、別々の命令を並行するのだ。型の違いを取り違えないことなるぞ。
選択肢2はSIMDとMIMDが逆。選択肢3の「同じ」、選択肢4の「並列できない」も誤りである。
| 選択肢 | 判定 | 理由 |
|---|---|---|
| 1 | ✓ | SIMD=GPU・MIMD=マルチコア |
| 2 | ✗ | SIMDとMIMDが逆 |
| 3 | ✗ | 設計が違う |
| 4 | ✗ | 並列に処理できる |
オリジナル問題3(アムダールの法則)
アムダールの法則に関する次の記述のうち、正しいものはどれか。
- コアを増やせば増やすほど、どんなプログラムも必ずその数だけ速くなるものとされる
- アムダールの法則は並列処理とは無関係で、記憶容量の計算に使うものとされている
- 順番にやるしかない部分が全体の速さを縛るので、並列化には限界があるという法則だ
- すべての処理は並列にでき、順番にやるしかない部分は存在しないものとされている
解答は 3 である。
アムダールの法則は順番にやるしかない部分が全体の速さを縛るので、並列化には限界があるという法則なのだ。「nコアでn倍」とはならぬなるぞ。
選択肢1の「必ずその数だけ速い」、選択肢2の「記憶容量」、選択肢4の「順番の部分はない」はどれも誤りである。
| 選択肢 | 判定 | 理由 |
|---|---|---|
| 1 | ✗ | 並列化には限界がある |
| 2 | ✗ | 並列処理の法則 |
| 3 | ✓ | 逐次部分が全体の速さを縛る |
| 4 | ✗ | 順番の部分は残ることがある |
まとめ
押さえどころ
- 🔴 Flynn4分類 = SISD(単一CPU)・SIMD(GPU)・MISD(まれ)・MIMD(マルチコア)。命令×データで分ける。
- 🔴 SIMDとMIMD = SIMDは同じ命令で大量データ(GPU)、MIMDは別々の命令を並行(マルチコア)。
- 🟡 アムダールの法則 = 順番にやる部分が全体の速さを縛り、並列化には限界がある。
次に学ぶ
- GPU・TPU・NPU ── SIMDで大量の計算を並行するGPUの代表。並列処理の実物がつかめる。
- CPUアーキテクチャ ── マルチコア(MIMD)の土台になるCPUの基本構成が分かる。
執筆: SikakuQuest編集部