マルチプロセッサ(multiprocessor)
プロセッサを複数並べて同時に処理する構成。主記憶を共有するかどうかで密結合と疎結合に分かれる。
もう少し詳しい説明
マルチプロセッサは、プロセッサ(計算と、命令を実行する仕事を受け持つ部品。CPUと同じものを指します)を複数並べて、同時に処理を進める構成です。
クロック周波数を上げられなくなったあと、プロセッサの性能はこの方向で伸ばされてきました。1人の作業を速くするのをやめて、人数を増やしたということです。
密結合と疎結合
複数のプロセッサをどうつなぐかで、2つに分かれます。分かれ目は、主記憶(いま使うプログラムとデータを置いておく記憶装置)を共有するかどうかです。
密結合マルチプロセッサは、1つの主記憶(プログラムとデータを置いておく記憶装置)を全員で共有します。1つのOS(オペレーティングシステム。Windows、macOS、Android など、機械全体を動かす土台のソフト)が全体を管理し、どのプロセッサにどの仕事を割り振るかを決めます。同じ主記憶を見ているので、データの受け渡しが要りません。
疎結合マルチプロセッサは、プロセッサごとに専用の主記憶を持ちます。それぞれが自分のOS(土台のソフト)で動き、データを渡すときは通信します。
| 密結合 | 疎結合 | |
|---|---|---|
| 主記憶 | 1つを共有 | それぞれが持つ |
| OS | 1つ | プロセッサごと |
| データの受け渡し | 不要(同じ記憶を見る) | 通信が必要 |
| 台数を増やしたとき | 主記憶の順番待ちが増え、処理量は台数ほどには増えない | 処理量は比較的素直に増える |
密結合の弱点:主記憶の順番待ち
全員が同じ主記憶に読み書きしに行くのが、密結合の弱点です。主記憶は一度に1つの相手にしか応じられないので、1つのプロセッサが読んでいるあいだ、ほかのプロセッサは順番を待つことになります。台数が増えるほど、この待ち行列は長くなります。
「増やしても伸びない」とは、何が伸びないのか。 ここでいう伸びとは、同じ時間に片づけられる仕事の量のことです。
プロセッサ1台で、1秒間に100件の処理ができたとします。2台なら200件、4台なら400件になってほしい——これが「台数ぶん伸びる」状態です。ところが実際には、プロセッサが計算ではなく順番待ちに時間を使うようになるので、こうはなりません。
| プロセッサの台数 | 期待する処理量 | 実際の処理量(例) |
|---|---|---|
| 1台 | 100件 | 100件 |
| 2台 | 200件 | 180件 |
| 4台 | 400件 | 300件 |
| 8台 | 800件 | 350件 |
(実際の値はシステムによって変わります。ここでは増え方の形を見てください。)
右の列を縦に見ると、台数を2倍にしても処理量は2倍にならず、しかも台数が多くなるほど増え方が鈍っていくのが分かります。8台のあたりでは、1台足してもほとんど変わりません。これが「台数を増やしても伸びなくなる」ということです。
対策として、キャッシュメモリを各プロセッサに持たせ、主記憶まで行く回数そのものを減らします。ただし今度は、同じデータのコピーが各プロセッサのキャッシュに散らばるという別の問題が起きます。1台が書き換えても、ほかの台のキャッシュには古い値が残ったままになるからです。そこで、コピーどうしが食い違わないようにそろえる仕組み(キャッシュコヒーレンシ)が必要になります。
疎結合の弱点:通信の時間
疎結合では、プロセッサごとに自分の主記憶を持つので、順番待ちは起きません。そのぶん、台数を増やしたときの処理量は素直に増えます。
かわりの弱点は通信です。あるプロセッサが持っているデータを別のプロセッサが使いたいとき、ネットワーク越しに送ってもらう必要があります。主記憶を直接読むのに比べると、通信は桁違いに遅い。そのため、プロセッサどうしでデータをやり取りする回数が多い処理には向きません。
逆に、それぞれが独立して進められる処理(たとえば大量の画像を1枚ずつ変換する、といった仕事)であれば、通信がほとんど発生しないので疎結合が有利になります。
この疎結合の考え方を、プロセッサ単位ではなくコンピュータ単位まで広げたものがクラスタです。
覚え方は「密」は距離が近い。近いから記憶を共有できる、と結びつけてください。
台数を増やしても比例しては速くならない
ここが一番問われる考え方です。プロセッサを4台にしても、処理は4倍速くなりません。
理由は、どんな処理にも分担できない部分があるからです。段取り、結果の集約、順番が決まっている処理。これらは何台あっても1台ぶんの時間がかかります。
この関係を式にしたものがアムダールの法則です。
速度向上率 = 1 ÷ 〔(1 − 並列化できる割合)+ 並列化できる割合 ÷ 台数〕
速度向上率とは、1台でやったときに比べて何倍の速さで終わるかという数です。2.5倍なら、1台で10分かかっていた処理が4分で終わる、という意味になります。
並列化できる割合は、処理全体のうち手分けして同時に進められる部分の割合です。残りは、何台あっても1台ぶんの時間がかかります。
並列化できる割合が80%、プロセッサ4台で計算してみます。
速度向上率 = 1 ÷ 〔0.2 + 0.8 ÷ 4〕 = 1 ÷ 〔0.2 + 0.2〕 = 1 ÷ 0.4 = 2.5倍
4台にしたのに2.5倍です。さらに台数を無限に増やしても、
速度向上率 = 1 ÷ 〔0.2 + 0〕 = 1 ÷ 0.2 = 5倍
5倍が上限で、それ以上はどれだけ台数を積んでも超えられません。並列化できない20%が足を引っ張るからです。
「人数を増やしても、1人しかできない工程があれば全体はそこで詰まる」という、現場でよくある話と同じです。
SISD・SIMD・MISD・MIMD
命令の流れとデータの流れが、それぞれ1本か複数かで4つに分類したものです。フリンの分類と呼ばれます。
| 分類 | 命令の流れ | データの流れ | 例 |
|---|---|---|---|
| SISD | 1本 | 1本 | 昔のシングルコアプロセッサ |
| SIMD | 1本 | 複数 | 1つの命令で大量のデータを一括処理。GPUや画像処理 |
| MISD | 複数 | 1本 | 実用例がほとんどない |
| MIMD | 複数 | 複数 | いまのマルチコアプロセッサ |
S は Single(1つ)、M は Multiple(複数)で、前の2文字が命令(Instruction)、後ろの2文字がデータ(Data)です。SIMD なら Single Instruction Multiple Data なので、命令1つでデータ複数。
SIMDが大事です。 「全部の画素を明るくする」のように、同じ処理を大量のデータに一度にかけるのが得意で、GPUや機械学習の計算がこれにあたります。
MISDは実用例がほぼないので、選択肢にあっても答えにはなりにくいと覚えておいてよいです。
マルチプロセッサとマルチコアの関係
名前が似ていて混同しやすいところです。何を複数にしているのかを、言葉ごとに分けて整理します。
-
コア … 命令を実行する一式(制御装置・演算装置・レジスタ(計算中の値を置くごく小さな入れ物))。計算をする「人」1人ぶんにあたります
-
プロセッサ … 部品(LSI。Large Scale Integration。小さな板の上に大量の回路を焼き付けた部品)としてのひとかたまり。この中にコアが1つ以上入っています
-
マルチコアプロセッサ … 1つの部品の中に、コアが複数入っているもの
-
マルチプロセッサ … プロセッサという部品そのものを、複数使う構成
-
マルチコアプロセッシング … マルチコアプロセッサを使って、複数の処理を同時に進めることそのもの
最後の1つだけ、指しているものが違います。 前の3つは「もの」の名前で、これは「やり方」の名前です。とはいえ試験で区別が問われることはほとんどなく、マルチコアプロセッサの話として読んで差し支えありません。
つまり、増やしているものが違うだけです。
| 増やすもの | 見た目 | |
|---|---|---|
| マルチコアプロセッサ | 部品の中身(コア) | 部品は1つ。中に4コア・8コアが入っている |
| マルチプロセッサ | 部品の数 | 基板にプロセッサが何個も載っている |
昔は、同時に複数の処理を進めたければ、プロセッサという部品を何個も基板に載せるしかありませんでした。いまは1つの部品の中に4コアや8コアが入っているので、部品が1個でも、複数の処理を同時に進められます。
では、マルチコアプロセッサは密結合と疎結合のどちらか。答えは密結合です。 1つの部品の中のコアは、同じ主記憶につながっていて、1つのOSがまとめて管理しているからです。
ということは、密結合の弱点もそのまま受け継いでいます。コアの数を8、16と増やしても、全員が同じ主記憶を見に行くので順番待ちが起きます。コア数を2倍にしても処理量が2倍にならないのは、このためです。
試験で「マルチプロセッサシステム」と書かれていたら、部品が複数なのかコアが複数なのかは気にしなくて構いません。どちらにしても「複数の処理を同時に進める構成」であることは同じで、問われるのは密結合か疎結合かの区別だからです。
試験ではこう出る
科目A(旧・午前)でいちばん多いのは、密結合と疎結合の区別です。説明文を読んでどちらかを選ばせる形で、主記憶を共有しているかだけを見れば判別できます。
次にSISD・SIMD・MIMDの分類。「1つの命令で複数のデータを処理する」はSIMD、です。
応用情報ではアムダールの法則の計算が出ます。並列化できない部分の割合を与えて速度向上率を求める、あるいは上限を求める形です。式を覚えていなくても、「分担できない部分の時間は減らない」という考え方から組み立てられます。
関連する用語
- プロセッサ
- 命令を実行する部品。これを複数並べたのがマルチプロセッサ
- プロセッサの高速化技術
- 1つのプロセッサの中を速くする工夫。数を増やすのとは別の方向
- クラスタ
- 複数のコンピュータを1台のように見せる構成。疎結合をコンピュータ単位でやったもの
- プロセスとスレッド
- 実行の単位。コアが複数あると、複数のスレッドを本当に同時に進められる
ミニクイズ
密結合マルチプロセッサシステムの説明として適切なものはどれか。
正解は 3番:複数のプロセッサが1つの主記憶を共有し、1つのOSが全体を管理する
密結合は主記憶を共有する構成で、OSも1つが全体を管理します。プロセッサごとに主記憶を持つのは疎結合です。命令を段階に分けて重ねるのはパイプライン、1台の故障に備えて処理を振り分けるのはクラスタの説明です。「密」は距離が近い=記憶を共有していると結びつけると取り違えません。
この分野をまとめて解く → コンピュータ構成要素とハードウェアのミニテスト(全33問)
最終更新:2026-10-20