computer system foundationCSF 2026
コンピュータの設計 / 03.1

コンピュータ
アーキテクチャ入門

CPU・メモリ・I/O はどうつながり、プログラムを「動かす」のか。基本設計から命令実行、パイプラインまでを体系的に読む。

所要:30–40分 難易度:★★☆ 前提:論理ゲートの基礎
01

フォン・ノイマン型アーキテクチャ

現代のほぼすべてのコンピュータが採用する基本設計である。CPU・主記憶・I/O の3つがバスでつながり、 命令もデータも同じメモリに置く——たったこれだけの構造で、あらゆるプログラムが動く。

構成要素をクリック → 右に詳細

CPU(中央処理装置)
制御
ユニット
ALU
演算器
レジスタ
ファイル
← システムバス(アドレス / データ / 制御) →
主記憶(メモリ)
プログラム + データ
I/O 装置
入出力
左の構成要素をクリックしてください
プログラム内蔵方式(stored-program concept, 1945): 命令(プログラム)もデータも同じメモリに格納し、CPU が順に読み出して実行する。 この設計以前は、プログラムを変えるたびに配線を物理的に組み替える必要があった。 スマートフォンからスパコンまで、いまも同じ基本設計である。
02

命令実行サイクル

CPU は1つの命令を5段階で処理し、それを電源が切れるまで延々と繰り返す。ボタンを押して1周してみましょう。
この5段階は、05 節のパイプラインで重ねられるのと同じ5段階である。パイプラインが段を増やすわけではない。

STEP 01
Fetch
命令フェッチ
STEP 02
Decode
デコード
STEP 03
Execute
実行
STEP 04
Memory
メモリアクセス
STEP 05
Write-back
書き戻し

「次のステップ」を押して命令サイクルを追いかけてみましょう

03

メモリ階層

「速くて・大容量で・安い」メモリは作れない。だから速度と容量の違う記憶装置を積み重ね、 よく使うデータほど上に置く。各層をクリックすると実際の数字が出る。

階層をクリック → 右に詳細

レジスタ
L1 キャッシュ
L2 キャッシュ
L3 キャッシュ
主記憶(RAM)
ストレージ(SSD / HDD)

上ほど 速い・小さい・高価 / 下ほど 遅い・大きい・安価

左の階層をクリックしてください
局所性の原理(locality): プログラムは、最近アクセスした場所をまたアクセスしやすく(時間的局所性)、 アクセスしたアドレスの近くもアクセスしやすい(空間的局所性)。 キャッシュはこの性質を利用して、CPU と RAM のおよそ100倍の速度差を埋めている。
04

RISC と CISC

命令セットアーキテクチャ(ISA)には2つの設計思想がある。 命令を単純にして数を絞るのか、1命令で複雑なことをやらせるのか。

RISC

Reduced Instruction Set Computer
  • 命令数が少なく、すべて固定長
  • メモリにアクセスできるのはロード/ストア命令だけ
  • パイプライン設計が容易
  • 低消費電力に有利
  • 例:ARM(スマートフォン)、RISC-V、Apple Silicon(M1〜M4)

CISC

Complex Instruction Set Computer
  • 命令数が多く、長さも可変
  • 1命令で複雑な操作ができる
  • メモリを直接操作する命令がある
  • コード密度が高い(プログラムのサイズが小さい)
  • 例:Intel x86 / x86-64(PC・サーバ)、AMD Ryzen

同じ処理をするとき、内部で何が違うのか。命令メモリからデータメモリまでの流れを並べてみる。

RISC ARM / RISC-V / Apple M シリーズ 命令メモリ 固定長 32-bit 命令 シンプル デコーダ 固定フォーマット・1クロックで完了 レジスタファイル(多い) R0–R31 汎用 32 本 ALU(演算専用) メモリ直接演算なし LOAD / STORE のみ データメモリ 専用命令(LDR / STR)だけ パイプラインが組みやすい・低消費電力 CISC Intel x86-64 / AMD Ryzen 命令メモリ 可変長(x86 は 1〜15 バイト) 複合デコーダ マイクロコード ROM で µop 列に変換 µops レジスタファイル(少ない) AX / BX / CX… 汎用 8〜16 本 ALU(メモリ直接可) ADD [mem], reg のような直接演算 任意の命令から直接参照可 データメモリ 多くの命令が直接アクセスできる コード密度が高い・互換性を保ちやすい
現代では境界が曖昧である: Intel の x86 CPU も、内部ではマイクロ命令(µop)に変換して RISC 的に実行している。 ARM も高性能化にともなって命令数が増えた。いまは「RISC か CISC か」より、 ISA(外から見える命令)とマイクロアーキテクチャ(内部の実装)を分けて考えることが重要である。
05

パイプライン

02 節で見た5段階を、1命令が終わるのを待たずに次の命令へ重ねていく。コインランドリーと同じ発想である。

パイプラインなし(逐次)

洗濯 → 乾燥 → たたむ を1回分すべて終えてから、次の洗濯物を始める。全工程が終わるまで次に進めない。

命令1: [IF][ID][EX][ME][WB]
命令2:                     [IF][ID][EX]…
パイプラインあり(並行)

1回目を乾燥機に入れたら、すぐ2回目の洗濯を始める。5段階が同時に走り、単位時間あたりの処理量が増える。

命令1: [IF][ID][EX][ME][WB]
命令2:     [IF][ID][EX][ME][WB]
5段パイプライン タイミング図(6命令)
命令 Clk 1Clk 2Clk 3Clk 4Clk 5 Clk 6Clk 7Clk 8Clk 9Clk10
IF = 命令フェッチ ID = デコード EX = 実行 ME = メモリ WB = 書き戻し
理想スループット
1命令 / クロック
パイプラインが満杯のとき
ハザードの種類
構造・データ・制御
パイプラインを止める要因
現代の段数
14〜20段
Intel / AMD の実装例
表を見ると、6命令が終わるのに逐次なら30クロック必要なところ、パイプラインなら10クロックで済んでいる。 ただし1命令あたりの所要時間(レイテンシ)は5クロックのまま——速くなったのは「量」であって「1個の速さ」ではない。 この違いは次の CPU 性能評価 の中心テーマである。