CPU はコンピュータの「脳」。私たちが書く Python や JavaScript は、最終的にすべて CPU の機械語命令に変換されて実行されます。本記事ではその仕組みを、概念図とアセンブリ風の例で見ていきます。
1. CPU の主要構成
- ALU (算術論理演算装置): 足し算・引き算・AND/OR を実行する回路
- レジスタ: CPU 内部の超高速な小さな保管場所 (16〜32 個程度)
- キャッシュ (L1/L2/L3): メモリより速い中間バッファ
- 制御装置: 命令の流れを管理、フェッチ→デコード→実行を指揮
- MMU (メモリ管理ユニット): 仮想メモリと物理メモリの対応
2. 命令サイクル (Fetch / Decode / Execute)
- 1Fetch (取得): プログラムカウンタが指すメモリ位置から命令を読み込む
- 2Decode (解読): 「これは ADD 命令だ」「対象レジスタは R1 と R2 だ」と解釈
- 3Execute (実行): ALU が実際に計算 (例: R1 + R2)
- 4Writeback (書戻し): 結果を R3 に保存
- 5Next: プログラムカウンタを進めて次の命令へ
パイプライン処理で高速化
現代の CPU は、1 つの命令の Fetch 中に、前の命令の Decode、さらに前の命令の Execute を同時並行で進める (パイプライン処理)。これで 1 サイクルあたり実質 1 命令以上を処理できる。
3. 高水準言語 → 機械語の流れ
Python のコードが CPU 命令になるまで
Text
# Python (人間が読める)x = 10 + 5print(x)
# ↓ Python インタプリタが実行
# バイトコード (Python 内部の中間表現)LOAD_CONST 10LOAD_CONST 5BINARY_ADDSTORE_NAME x...
# ↓ CPython 仮想マシンが解釈
# CPU 機械語 (x86 アセンブリ風)mov eax, 10mov ebx, 5add eax, ebxmov [x], eax...
# ↓ CPU が 1 命令ずつ Fetch-Decode-Execute4. クロック周波数とコア数
| 指標 | 意味 | 目安 |
|---|---|---|
| クロック周波数 (GHz) | 1 秒あたりのクロック数 | 現代の CPU は 3-5 GHz |
| コア数 | 並列に動く CPU の数 | デスクトップ 6-16、サーバ 32-128 |
| スレッド数 | 1 コアで同時実行できる流れ | Hyperthreading なら 2 倍 |
| IPC | 1 サイクルで実行できる命令数 | 現代は 3-5 程度 |
| TDP (W) | 発熱の目安 | ノート 15-45W、デスク 65-125W |
5. x86 vs ARM
| 項目 | x86 (Intel/AMD) | ARM (Apple Silicon / Raspberry Pi) |
|---|---|---|
| 設計思想 | CISC (複雑命令) | RISC (単純命令) |
| 消費電力 | 高め | 低い |
| 性能/W 効率 | 中 | 高い |
| 主な用途 | デスクトップ・サーバ | モバイル・Mac・組込み |
| 互換性 | Windows ソフト多い | iOS / Android / 最新 Mac |
6. 現代の CPU の中身
- 数十億個のトランジスタ が 1 cm 角に集積
- プロセスルール: 3nm / 5nm / 7nm = 配線幅。狭いほど高密度
- キャッシュ階層: L1 (32-64KB / コア)、L2 (256KB-1MB / コア)、L3 (8-32MB / 全コア共有)
- SIMD 命令: 1 命令で複数データを処理 (AVX-512 等)、画像・動画処理で活用
- 機械学習加速器: NPU / Tensor Core 等を統合する CPU が増加中
7. 次の話
EP.05 では メモリと記憶階層 に進みます。CPU の隣にある RAM、その下にある SSD/HDD、さらに上にあるキャッシュ。「速さ」と「容量」のトレードオフを見ます。
この記事の感想を教えてください
あなたの 1 クリックで、本当にこの記事は更新されます。「もっと詳しく」「続編希望」が一定数集まった記事は、 ふくふくが 実際に内容を拡充したり続編記事を公開 します。 送信したリアクションはお使いのブラウザに記録され、再カウントされません。