---
title: PCIe と高速インターコネクト
url: https://doc.liz6.com/ja/hardware/06-interfaces-and-communication/04-pcie-and-high-speed-interconnects
locale: ja
area: hardware
tags:
- hardware
- interfaces-and-communication
date: 2026-06-30
modified: 2026-07-16
description: 'PCIe と高速インターコネクト PCIe とは PCIe (PCI Express) — 現代のコンピュータにおける高速シリアルバス。CPU と GPU、SSD、ネットワークカードなどの周辺デバイスを接続します。 PCIe ツリートポロジ: 単一 Root Complex 下のデバイス階層 CPU PCIe RC M…'
---

# PCIe と高速インターコネクト

## PCIe とは

**PCIe (PCI Express)** — 現代のコンピュータにおける高速シリアルバス。CPU と GPU、SSD、ネットワークカードなどの周辺デバイスを接続します。

<svg viewBox="0 0 720 360" xmlns="http://www.w3.org/2000/svg" font-family="-apple-system,'Source Han Sans CN','Microsoft YaHei',sans-serif" role="img" aria-label="PCIe ツリートポロジ: 単一 Root Complex 下のデバイス階層">
  <rect width="720" height="360" fill="#ffffff"/>
  <text x="360" y="28" text-anchor="middle" font-size="17" font-weight="700" fill="#1f2933">PCIe ツリートポロジ: 単一 Root Complex 下のデバイス階層</text>

  <rect x="315" y="50" width="90" height="36" rx="6" fill="#4f46e5"/>
  <text x="360" y="73" text-anchor="middle" font-size="13" font-weight="700" fill="#ffffff">CPU</text>

  <line x1="360" y1="86" x2="360" y2="96" stroke="#94a3b8" stroke-width="1.5"/>
  <line x1="220" y1="96" x2="520" y2="96" stroke="#94a3b8" stroke-width="1.5"/>
  <line x1="220" y1="96" x2="220" y2="100" stroke="#94a3b8" stroke-width="1.5"/>
  <line x1="520" y1="96" x2="520" y2="100" stroke="#94a3b8" stroke-width="1.5"/>

  <rect x="165" y="100" width="110" height="38" rx="6" fill="#eef2ff" stroke="#c7d2fe"/>
  <text x="220" y="123" text-anchor="middle" font-size="12" font-weight="700" fill="#3730a3">PCIe RC</text>
  <rect x="445" y="100" width="150" height="38" rx="6" fill="#e2e8f0"/>
  <text x="520" y="123" text-anchor="middle" font-size="11" fill="#475569">Memory Controller</text>

  <line x1="220" y1="138" x2="220" y2="150" stroke="#94a3b8" stroke-width="1.5"/>
  <line x1="140" y1="150" x2="300" y2="150" stroke="#94a3b8" stroke-width="1.5"/>
  <line x1="140" y1="150" x2="140" y2="155" stroke="#94a3b8" stroke-width="1.5"/>
  <line x1="300" y1="150" x2="300" y2="155" stroke="#94a3b8" stroke-width="1.5"/>

  <rect x="95" y="155" width="90" height="36" rx="6" fill="#f0fdfa" stroke="#99f6e4"/>
  <text x="140" y="177" text-anchor="middle" font-size="12" font-weight="700" fill="#115e59">Switch</text>
  <rect x="235" y="155" width="130" height="36" rx="6" fill="#eef2ff" stroke="#c7d2fe"/>
  <text x="300" y="171" text-anchor="middle" font-size="11" font-weight="700" fill="#3730a3">Endpoint</text>
  <text x="300" y="185" text-anchor="middle" font-size="10" fill="#4f46e5">(GPU)</text>

  <line x1="140" y1="191" x2="140" y2="200" stroke="#94a3b8" stroke-width="1.5"/>
  <line x1="70" y1="200" x2="210" y2="200" stroke="#94a3b8" stroke-width="1.5"/>
  <line x1="70" y1="200" x2="70" y2="205" stroke="#94a3b8" stroke-width="1.5"/>
  <line x1="140" y1="200" x2="140" y2="205" stroke="#94a3b8" stroke-width="1.5"/>
  <line x1="210" y1="200" x2="210" y2="205" stroke="#94a3b8" stroke-width="1.5"/>

  <rect x="40" y="205" width="60" height="36" rx="5" fill="#e2e8f0"/>
  <text x="70" y="227" text-anchor="middle" font-size="11" fill="#334155">EP</text>
  <rect x="110" y="205" width="60" height="36" rx="5" fill="#e2e8f0"/>
  <text x="140" y="227" text-anchor="middle" font-size="11" fill="#334155">EP</text>
  <rect x="180" y="205" width="60" height="36" rx="5" fill="#e2e8f0"/>
  <text x="210" y="227" text-anchor="middle" font-size="11" fill="#334155">EP</text>
  <text x="140" y="255" text-anchor="middle" font-size="11" fill="#64748b">(NVMe SSD、ネットワークカード...)</text>

  <rect x="40" y="270" width="640" height="68" rx="8" fill="#eef2ff" stroke="#c7d2fe"/>
  <text x="56" y="292" font-size="12.5" fill="#3730a3">RC = Root Complex(ルートコンプレックス、通常は CPU または PCH 内にあります); Switch = スイッチチップ、さらに多くの PCIe ポートを下位に拡張します</text>
  <text x="56" y="314" font-size="12.5" fill="#3730a3">EP = Endpoint(エンドポイント)、つまり Switch 配下の NVMe SSD、ネットワークカードなどの末端デバイス</text>
</svg>

---

## レーンとジェネレーション

### レーン (Lane)
```
PCIe の最小単位は 1 つのレーンです

x1:  1 レーン
x4:  4 レーン (一般的: NVMe SSD)
x8:  8 レーン
x16: 16 レーン (一般的: GPU)

各レーンは独立したフルデュプレックスのシリアルリンクです
  TX+/TX- (送信) + RX+/RX- (受信) = レーンあたり 4 本の信号線

x16 は物理的に 64 本の信号線 (16×4) に相当します
```

### 各世代の速度

| Gen | レーンあたりの速度 (シングル) | レーンあたりの帯域 (デュプレックス) | x16 帯域 | 年代 |
|-----|-------------------|-------------------|----------|------|
| 1.0 | 2.5 GT/s | 250 MB/s | 4 GB/s | 2003 |
| 2.0 | 5.0 GT/s | 500 MB/s | 8 GB/s | 2007 |
| 3.0 | 8.0 GT/s | ~1 GB/s | ~16 GB/s | 2010 |
| 4.0 | 16.0 GT/s | ~2 GB/s | ~32 GB/s | 2017 |
| 5.0 | 32.0 GT/s | ~4 GB/s | ~64 GB/s | 2019 |
| 6.0 | 64.0 GT/s | ~8 GB/s | ~128 GB/s | 2022 (商用化直後) |

```
8b/10b (Gen1/2): 2.5 GT/s × 8/10 = 2 Gbps = 250 MB/s
128b/130b (Gen3以降): 8 GT/s × 128/130 ≈ 7.88 Gbps ≈ 985 MB/s
→ Gen3以降はエンコーディングオーバーヘッドが大幅に削減されました

"GT/s" = 1秒あたりのギガトランザクション (エンコーディングオーバーヘッドを含む)
"GB/s" = 1秒あたりのギガバイトの有効データ
```

### 一般的な構成
```
コンシューマー向け CPU の典型的な PCIe レーン数:
  AMD Ryzen: 24〜28 レーン (うち 4 が PCH に接続、16+4 が GPU+NVMe に割り当て)
  Intel Core: 16〜20 レーン (うち 4 が PCH に接続)

グラフィックカード: x16 Gen4/5 (ただし x8 で十分であることが多く、性能低下は 1〜3%)
NVMe SSD: x4 Gen4/5 (Gen4 x4 = ~8 GB/s)
10GbE ネットワークカード: x4 Gen3
```

### 下位互換性
```
Gen4 デバイスを Gen3 スロットに挿入 → Gen3 に降速
Gen3 デバイスを Gen4 スロットに挿入 → Gen3 で動作

リンクトレーニング (Link Training):
  電源投入後、両端が自動的にネゴシエーションを行い、実行可能な最高速度と最大レーン数を決定します
```

---

## 物理層

### 信号
```
各レーン:
  TX+ TX- : 差動送信 (AC結合、コンデンサによる直流遮断)
  RX+ RX- : 差動受信 (AC結合)

リファレンスクロック: 100MHz (HCSL または LVDS 差動)
  Common Clock (同源) または Separate Clock (独立)
  現在では SRIS (Separate Refclk Independent SSC) が主流です

Gen3以降は 128b/130b エンコーディングとスクランブル (scramble) を使用
独立したクロック線はなく、受信側でデータからクロックを復元します (CDR)
```

### PCB 設計のポイント
```
PCIe 配線:
  - 差動対の長さを揃える (P/N 差 <5mil)
  - 特性インピーダンス: 85Ω 差動 (Gen3)、場合によっては 100Ω
  - 参照平面の不連続を避ける (スプリットグランドを跨がない)
  - AC結合コンデンサ (100nF〜220nF) は送信端近くに配置
  - スルーホールは最小限に (各スルーホールはインピーダンスを乱す)
```

---

## PCIe プロトコル層

```
3層モデル:

トランザクション層 (Transaction Layer):
  TLP (トランザクションレイヤパケット) の生成/消費
  アドレスルーティング / IDルーティング / 暗黙的ルーティング

データリンク層 (Data Link Layer):
  信頼性の高い伝送を保証
  ACK/NAK、再送、CRC チェック
  DLLP の生成/消費

物理層 (Physical Layer):
  8b/10b または 128b/130b エンコーディング
  シリアル/パラレル変換、リンクトレーニング
```

---

## 一般的な用途

### NVMe over PCIe
```
NVMe プロトコルは PCIe 上で動作します
AHCI (SATA の伝統的なプロトコル) は PCIe 上で動作していましたが、NVMe に置き換えられました

NVMe の利点:
  - キュー深度 64K (AHCI は 32 のみ)
  - キュー数 64K (AHCI は 1 のみ)
  - より低いレイテンシ (SATA コントローラへのアクセスが不要)
```

### GPU 接続
```
コンシューマー向け GPU: x16 PCIe で CPU に直接接続
  Gen3 x16 = 16 GB/s (RTX 20/30 シリーズ)
  Gen4 x16 = 32 GB/s (RTX 40 シリーズ)
  Gen5 x16 = 64 GB/s (RTX 50 シリーズ)

実際のところ: ゲームシーンでは Gen3 x8 でもほぼ性能低下はありません
      Gen4 はコンシューマー向け GPU において主に将来の余裕を持たせるためのものです
      計算/ML シーンでは大きな帯域幅がより重要になります (マルチ GPU インターコネクト)
```

### Resizable BAR (Smart Access Memory)
```
従来: CPU は 256MB の BAR ウィンドウを通じてのみ GPU メモリにアクセス可能
ReBAR: CPU は一度に GPU メモリ全体をマッピング可能 → コピーの削減、性能向上

要件: BIOS のサポート + GPU ドライバのサポート + PCIe のサポート
```

---

## CPU との接続

<svg viewBox="0 0 720 410" xmlns="http://www.w3.org/2000/svg" font-family="-apple-system,'Source Han Sans CN','Microsoft YaHei',sans-serif" role="img" aria-label="PCIe と CPU の接続: 直結 vs PCH経由、Intel と AMD の比較">
  <rect width="720" height="410" fill="#ffffff"/>
  <text x="360" y="28" text-anchor="middle" font-size="17" font-weight="700" fill="#1f2933">PCIe と CPU の接続: 直結 vs PCH経由 (Intel / AMD 比較)</text>

  <rect x="20" y="51" width="60" height="20" rx="5" fill="#334155"/>
  <text x="50" y="65" text-anchor="middle" font-size="11" font-weight="700" fill="#ffffff">Intel</text>

  <rect x="85" y="60" width="110" height="34" rx="6" fill="#4f46e5"/>
  <text x="140" y="81" text-anchor="middle" font-size="13" font-weight="700" fill="#ffffff">CPU</text>
  <rect x="485" y="60" width="130" height="34" rx="6" fill="#0d9488"/>
  <text x="550" y="81" text-anchor="middle" font-size="12" font-weight="700" fill="#ffffff">PCH(チップセット)</text>
  <line x1="195" y1="77" x2="485" y2="77" stroke="#94a3b8" stroke-width="1.5"/>
  <text x="340" y="70" text-anchor="middle" font-size="11" fill="#64748b">DMI(本質的には PCIe x8)</text>

  <line x1="140" y1="94" x2="140" y2="106" stroke="#94a3b8" stroke-width="1.5"/>
  <line x1="70" y1="106" x2="225" y2="106" stroke="#94a3b8" stroke-width="1.5"/>
  <line x1="70" y1="106" x2="70" y2="118" stroke="#94a3b8" stroke-width="1.5"/>
  <line x1="225" y1="106" x2="225" y2="118" stroke="#94a3b8" stroke-width="1.5"/>
  <rect x="5" y="118" width="130" height="34" rx="6" fill="#eef2ff" stroke="#c7d2fe"/>
  <text x="70" y="139" text-anchor="middle" font-size="11" font-weight="700" fill="#3730a3">PCIe x16(直結)</text>
  <rect x="145" y="118" width="160" height="34" rx="6" fill="#eef2ff" stroke="#c7d2fe"/>
  <text x="225" y="139" text-anchor="middle" font-size="11" font-weight="700" fill="#3730a3">PCIe x4(NVMe 直結)</text>

  <line x1="550" y1="94" x2="550" y2="106" stroke="#94a3b8" stroke-width="1.5"/>
  <line x1="470" y1="106" x2="630" y2="106" stroke="#94a3b8" stroke-width="1.5"/>
  <line x1="470" y1="106" x2="470" y2="118" stroke="#94a3b8" stroke-width="1.5"/>
  <line x1="630" y1="106" x2="630" y2="118" stroke="#94a3b8" stroke-width="1.5"/>
  <rect x="385" y="118" width="170" height="34" rx="6" fill="#f0fdfa" stroke="#99f6e4"/>
  <text x="470" y="139" text-anchor="middle" font-size="10" font-weight="700" fill="#115e59">SATA/USB/Ethernet/WiFi</text>
  <rect x="555" y="118" width="150" height="34" rx="6" fill="#f0fdfa" stroke="#99f6e4"/>
  <text x="630" y="139" text-anchor="middle" font-size="11" font-weight="700" fill="#115e59">さらに多くの PCIe レーン</text>

  <rect x="20" y="216" width="60" height="20" rx="5" fill="#334155"/>
  <text x="50" y="230" text-anchor="middle" font-size="11" font-weight="700" fill="#ffffff">AMD</text>

  <rect x="85" y="225" width="110" height="34" rx="6" fill="#4f46e5"/>
  <text x="140" y="246" text-anchor="middle" font-size="13" font-weight="700" fill="#ffffff">CPU</text>
  <rect x="485" y="225" width="130" height="34" rx="6" fill="#0d9488"/>
  <text x="550" y="246" text-anchor="middle" font-size="12" font-weight="700" fill="#ffffff">PCH</text>
  <line x1="195" y1="242" x2="485" y2="242" stroke="#94a3b8" stroke-width="1.5"/>
  <text x="340" y="235" text-anchor="middle" font-size="11" fill="#64748b">PCIe x4(IF バス)</text>

  <line x1="140" y1="259" x2="140" y2="271" stroke="#94a3b8" stroke-width="1.5"/>
  <line x1="70" y1="271" x2="225" y2="271" stroke="#94a3b8" stroke-width="1.5"/>
  <line x1="70" y1="271" x2="70" y2="283" stroke="#94a3b8" stroke-width="1.5"/>
  <line x1="225" y1="271" x2="225" y2="283" stroke="#94a3b8" stroke-width="1.5"/>
  <rect x="5" y="283" width="130" height="34" rx="6" fill="#eef2ff" stroke="#c7d2fe"/>
  <text x="70" y="304" text-anchor="middle" font-size="11" font-weight="700" fill="#3730a3">PCIe x16/x8</text>
  <rect x="145" y="283" width="160" height="34" rx="6" fill="#eef2ff" stroke="#c7d2fe"/>
  <text x="225" y="304" text-anchor="middle" font-size="11" font-weight="700" fill="#3730a3">PCIe x4(NVMe)</text>

  <line x1="550" y1="259" x2="550" y2="283" stroke="#94a3b8" stroke-width="1.5"/>
  <rect x="450" y="283" width="200" height="34" rx="6" fill="#f0fdfa" stroke="#99f6e4"/>
  <text x="550" y="298" text-anchor="middle" font-size="11" font-weight="700" fill="#115e59">Intel と同様のトポロジ</text>
  <text x="550" y="311" text-anchor="middle" font-size="9.5" fill="#0f766e">(SATA/USB/さらに多くのレーン)</text>

  <rect x="40" y="330" width="640" height="64" rx="8" fill="#eef2ff" stroke="#c7d2fe"/>
  <text x="56" y="352" font-size="12.5" fill="#3730a3">CPU に直結された PCIe (独立した x16 グラフィックカード、CPU 直結 NVMe) = より低いレイテンシ、GPU/NVMe に最適;</text>
  <text x="56" y="374" font-size="12.5" fill="#3730a3">PCH経由の PCIe (SATA/USB/ネットワークカードなど) = DMI/IF バス帯域を共有し、さらに CPU へ上行します。</text>
</svg>

---
*キーワード: PCIe, レーン, GT/s, NVMe, Root Complex, Endpoint, 差動信号, ReBAR, Gen*
