#0126（2025/05/07）CPUアーキテクチャとは

# CPUアーキテクチャとは


## 1. 序文

CPUアーキテクチャはハードウェアとソフトウェアをつなぐ“最小の契約書”であり、**Instruction Set Architecture (ISA)**・**マイクロアーキテクチャ**・**半導体実装**という階層に分離されます。本稿では、設計哲学 (CISC/RISC/VLIW)、代表的 ISA、PPA 最適化、セキュリティ、クロスコンパイル/エミュレーション、そして Docker によるマルチアーキテクチャ運用まで、上級エンジニアの武器となる包括的知識を整理します。

---

## 2. アーキテクチャ三層モデル

| 層                   | 役割                  | 変化速度           | 例                                            |
| ------------------- | ------------------- | -------------- | -------------------------------------------- |
| **ISA**             | CPU が理解する命令語とメモリモデル | 数十年単位 (後方互換重視) | x86‑64, AArch64, RV64GCV                     |
| **マイクロアーキテクチャ**     | 命令を実行する内部パイプライン構造   | 2–4 年          | Intel Core Ultra, Apple Firestorm, AMD Zen 4 |
| **実装 (プロセス/レイアウト)** | トランジスタ寸法・電圧・配線      | 1.5–2 年        | TSMC N3E 5 GHz, Intel 20A                    |

**契約境界**は ISA。上層 (OS/アプリ) は ISA のみを意識すればよく、下層は独立に進化できます。

---

## 3. ISA 設計哲学

### 3.1 CISC・RISC・VLIW/EPIC 

| 分類                                    | 秘密兵器                   | 一言              | 採用 ISA / メーカー例                                          |
| ------------------------------------- | ---------------------- | --------------- | ------------------------------------------------------- |
| **CISC**<br>(Complex Instruction Set) | 可変長・高機能命令              | “1 命令で何でも屋”     | x86/x86‑64 (Intel, AMD), 68000, VAX                     |
| **RISC**<br>(Reduced Instruction Set) | 単純固定長 + Deep Pipeline  | “ハードで並列度を稼ぐ”    | ARM/AArch64 (Arm, Apple), POWER 10, MIPS, SPARC, RISC‑V |
| **VLIW / EPIC**                       | 静的命令束 (Very‑Long Word) | “並列性はコンパイラに丸投げ” | Itanium (HP+Intel), TI C66 DSP                          |

> **注意**: 同じメーカーでも複数思想を実装する。Intel = CISC (x86) + GPU RISC + AI NPU。

### 3.2 ハイブリッド化の現在

現代の CISC CPU はデコード後に内部 RISC‑like µOP に翻訳し OoO 実行するため、三分類は“スペクトル”として理解すると実態に近い。

---

## 4. 代表的 ISA と進化年表

| 年    | 主流 ISA            | トピック               |
| ---- | ----------------- | ------------------ |
| 1978 | x86 (8086)        | 16‑bit CISC 誕生     |
| 1985 | MIPS R2000        | RISC 商用化           |
| 1993 | PowerPC 601       | AIM 連合、RISC in Mac |
| 1999 | x86‑64 (AMD64)    | 64‑bit 拡張を AMD が主導 |
| 2011 | ARMv8‑A (AArch64) | スマホ→サーバーの転機        |
| 2015 | RISC‑V RV64G      | オープン ISA 公開        |
| 2020 | Apple M1          | PC 市場へ Arm64 侵攻    |

---

## 5. PPA (Power–Performance–Area)

半導体設計の KPI 三角形。周波数向上は電力 (P) と面積 (A) 増に跳ね返り、P・P・A の重心移動が製品差別化。

* **DVFS**: 需要に応じた電圧/周波数可変。
* **Chiplet**: I/O と演算ダイ分割で A/W あたり性能改善。
* **AI 盛り**: TOPS/W 指標が次世代サーバーで支配的。

---

## 6. セキュリティアーキテクチャ

1. **特権階層**: x86 Ring0‑3, ARM EL0‑3, RISC‑V M/S/U。
2. **MMU & IOMMU**: ページ保護 + デバイス DMA 隔離。
3. **エンクレーブ**: Intel SGX, AMD SEV‑SNP, ARM TrustZone, RISC‑V Keystone。
4. **サイドチャネル対策**: Spectre/Meltdown → 投機制御、キャッシュフラッシュ、FEAT\_DPB+L1D randomize。

---

## 7. クロスコンパイル & エミュレーション

| 技術           | 主目的                   | メリット    | 代表ツール                                                    |
| ------------ | --------------------- | ------- | -------------------------------------------------------- |
| **クロスコンパイル** | 異なる ISA 用バイナリを生成      | ネイティブ速度 | GCC/Clang `--target`, Rust `cargo --target`, Go `GOARCH` |
| **エミュレーション** | 異なる ISA のバイナリをそのまま動かす | 実機不要で検証 | QEMU (TCG), Apple Rosetta 2, Unicorn, Renode             |

```bash
# x86_64 ホストで ARM64 Linux バイナリをビルド
$ aarch64-linux-gnu-gcc main.c -o app_arm64
# QEMU user‑mode で即実行確認
$ qemu-aarch64 -L /usr/aarch64-linux-gnu ./app_arm64
```

---

## 8. Docker × マルチアーキテクチャ

1. **イメージはプラットフォーム固有**: ELF, glibc, musl が ABI を固定。
2. **OCI Manifest List** で 1 タグに複数アーキテクチャ変種を格納。
3. **`buildx` + binfmt\_misc + QEMU** がクロスビルド/テストを自動化。

```bash
# binfmt_misc で全 ISA エミュレータを登録
$ docker run --rm --privileged tonistiigi/binfmt --install all
# マルチプラットフォームイメージをビルド＆Push
$ docker buildx build --platform linux/amd64,linux/arm64 -t user/app:1.0 --push .
```

> **制約**: AVX‑512/SVE などハード固有拡張はエミュレーション不可。GPU パススルーもホスト依存。

---

## 9. マイクロアーキテクチャ最新トピック (2024‑2025)

* **Apple M3**: 3 nm, Aggressive µOP Fusion, HW AMX。
* **Intel Core Ultra (Meteor Lake)**: 3D Foveros、E/P/LP‑E コア 3 タイア。
* **AMD Zen 5**: 4 nm ＋ 3D V‑Cache、AI NPU (XDNA 2)。
* **SiFive P870**: RISC‑V OoO, TileLink 3.x, Vector RVV 1.0。

---

## 10. まとめ & 推奨アクション

1. **抽象化境界を意識**し ISA ↔ µarch ↔ 実装 を分離して学ぶ。
2. **PPA とセキュリティ**のトレードオフを設計初期から数値化。
3. **クロスコンパイル + Docker buildx** を CI に統合し、マルチアーキテクチャのリリースパイプラインを自動化。
4. **VLIW/EPIC の教訓**を AI 専用アクセラレータ設計に活かす (コンパイラ依存度)。

---

## 11. 用語速習リスト

| 略語            | 正式名 / 日本語                           | 意味・用途                                 |
| ------------- | ----------------------------------- | ------------------------------------- |
| **ISA**       | Instruction Set Architecture        | 命令セットとメモリモデルの仕様書                      |
| **PPA**       | Power, Performance, Area            | 電力・性能・面積の最適化指標                        |
| **DVFS**      | Dynamic Voltage & Frequency Scaling | 動的電圧周波数制御                             |
| **SMT**       | Simultaneous Multithreading         | ハード同時マルチスレッド                          |
| **MMU/IOMMU** | Memory/IO Management Unit           | 仮想アドレス変換 & デバイス隔離                     |
| **QEMU**      | Quick EMUlator                      | TCG (Tiny Code Generator) による動的バイナリ翻訳 |
| **OCI**       | Open Container Initiative           | Docker イメージ仕様策定団体                     |

---

## 12. 参考文献

* Patterson & Hennessy, *Computer Architecture – A Quantitative Approach*, 6th Ed.
* ARM ARM v8‑A Architecture Reference Manual
* RISC‑V ISA Spec v2.3 & Vector v1.0
* Intel® 64 and IA‑32 Architectures Optimization Manual (2024)
* AMD Zen 5 Microarchitecture (Hot Chips 2024)
* Apple Silicon SoC Blueprint (WWDC 2024, Session 10205)
* Docker buildx & OCI Image Spec v1.1