PCIe世代と信号品質 ─ PAM4・FEC・イコライゼーション
Gen5やGen6のGT/sが何を意味するのか。NRZからPAM4への転換とFEC・イコライゼーションを押さえれば、世代更新で何が物理的に難しくなるかが腑に落ちます。
- 1.Gen5(32GT/s)まではNRZで転送レートを倍化してきたが、Gen6(64GT/s)はシンボルあたり2ビットを送るPAM4へ移行し、ボーレートを据え置いたまま実効ビットレートを倍にする。
- 2.PAM4は1UIに4値(00/01/10/11)を載せるため信号間隔が狭まりエラー率が急増する。Gen6は固定遅延の前方誤り訂正(FEC)と固定長FLITでこれを補い、信頼性と低レイテンシを両立する。
- 3.高速リンクは配線損失で波形が潰れるため、リンクトレーニングで送信側FFE・受信側CTLE/DFEの係数を調整し、受信端でアイ開口を回復してから本通信に入る。
転送レート倍増の物理的な壁
PCIeは世代ごとにレーンあたり帯域をほぼ倍にしてきました。Gen3からGen5までは方法が単純で、転送レート(GT/s)を倍にするだけです。Gen3が8GT/s、Gen4が16GT/s、Gen5が32GT/s。1ビット=1シンボルを送るNRZ(Non-Return-to-Zero、2値振幅)を保ったまま、シンボルを送る速さ(ボーレート)を倍々にしてきました。
しかしこの方法は32GT/sあたりで物理的な壁にぶつかります。ボーレートを上げるほど信号の基本周波数が上がり、銅配線やコネクタでの**減衰(インサーションロス)**が深刻になります。Gen5の32GT/sでは基本周波数が16GHz付近に達し、ナイキスト周波数での挿入損失はチャネル設計次第で数十dBに及びます。これを64GT/sへ単純倍化すると、減衰量・反射・クロストークが手に負えなくなり、まともなアイ開口(後述)が残りません。
GT/s(Giga-Transfers/秒)は1秒あたりのシンボル転送回数で、物理層の生のレートです。これに「1シンボルあたりのビット数」と「符号化効率」を掛けたものが実効データレートになります。Gen5まではNRZなので1シンボル=1ビットですが、Gen6のPAM4では1シンボル=2ビットになるため、GT/sの定義自体が世代で変わる点に注意します。
NRZからPAM4へ ─ ボーレートを上げずにビットを倍にする
Gen6(64GT/s)はボーレート倍化の路線を捨て、PAM4(4-level Pulse Amplitude Modulation)を採用しました。NRZが2つの電圧レベル(0と1)で1ビットを表すのに対し、PAM4は4つの電圧レベルを使い、1シンボルに2ビットを載せます。
NRZ (2値) PAM4 (4値)
Hi ──── 1 L3 ──── 11
L2 ──── 10
L1 ──── 01
Lo ──── 0 L0 ──── 00
1シンボル=1ビット 1シンボル=2ビット
これにより、シンボルレート(ボーレート)はGen5と同じ32GBaud(32GT/sのボーレートと同じ)に据え置いたまま、実効ビットレートだけを倍にできます。基本周波数が上がらないので、配線損失の悪化を回避できるわけです。
代償は信号品質です。同じ電圧振幅を4レベルに分割するため、レベル間の電圧差はNRZの約3分の1に縮みます。受信側が隣接レベルを見分ける余裕が激減し、わずかなノイズやジッタでも誤判定が起きます。一般にPAM4は等価なNRZに比べ約9.5dBもSNRが不利になります。Gen6はこの劣化を、後述するFECとイコライゼーションの強化で吸収します。
| 観点 | NRZ (〜Gen5) | PAM4 (Gen6) |
|---|---|---|
| 振幅レベル | 2値 (0/1) | 4値 (00/01/10/11) |
| 1シンボルのビット数 | 1ビット | 2ビット |
| 64GT/sでのボーレート | (64GBaud相当・非現実的) | 32GBaud |
| SNRの不利 | 基準 | 約9.5dB悪化 |
| 誤り対策 | 再送中心(CRC+ACK/NAK) | FECで前方訂正+再送 |
アイダイアグラム ─ 信号品質を可視化する
物理層の信号品質を測る古典的な道具がアイダイアグラムです。受信波形を1UI(Unit Interval、1シンボル分の時間)ごとに重ね描きすると、中央に目(アイ)のような開口が現れます。
NRZ : アイは1段(開口は1つ)
__ __
\ / <- 開口が広い=判定マージン大
>< (アイ)
/ \
‾‾ ‾‾
PAM4: アイは3段に縦分割(開口が3つ・各々が狭い)
=== === L3
>< (上アイ)
=== === L2
>< (中アイ)
=== === L1
>< (下アイ)
=== === L0
アイの縦の開きは判定電圧マージン、横の開きはタイミングマージンを表します。開口が広いほど誤判定しにくい良好な信号です。PAM4ではアイが縦に3段へ分割され、各開口がNRZの3分の1程度に狭まります。これがPAM4の難しさを端的に示しています。高速リンクの設計とは、結局のところ受信端でこのアイをいかに開いた状態に保つかの戦いです。
イコライゼーション ─ 潰れた波形を立て直す
銅配線は高周波ほど強く減衰するローパス特性を持ちます。すると、あるシンボルのエネルギーが後続のシンボルへにじみ出し、波形が互いに干渉します。これが符号間干渉(ISI、Inter-Symbol Interference)で、アイを潰す最大要因です。これを補正するのがイコライゼーションで、送信側と受信側で役割分担します。
| 手法 | 位置 | 方式 | 役割 |
|---|---|---|---|
| FFE | 送信側 | プリエンファシス(線形) | あらかじめ高域を強調し、減衰を見越して送り出す |
| CTLE | 受信側 | アナログ線形フィルタ | 高域を持ち上げ平坦化(低域を相対的に抑える) |
| DFE | 受信側 | 判定帰還(非線形) | 確定済みの過去シンボルからISIを差し引く |
- FFE(Feed-Forward Equalizer) はトランスミッタ側で波形を加工し、減衰しやすい高域成分を強めに送ります。「プリエンファシス」「デエンファシス」とも呼ばれます。チャネルで減衰した結果として受信端で平坦になるよう、逆特性をかける考え方です。
- CTLE(Continuous-Time Linear Equalizer) はレシーバ側のアナログフィルタで、高域を増幅して減衰を相殺します。連続時間で動くため消費電力が小さい反面、高域を上げるとノイズも一緒に増幅する弱点があります。
- DFE(Decision Feedback Equalizer) は受信側の非線形フィルタです。すでに判定が確定したシンボルが後続に与えるISIを推定し、現在の受信値から差し引きます。ノイズを増幅しないのが利点ですが、過去の判定が誤ると誤りが連鎖する点には注意が必要です。
CTLEは線形フィルタなので信号もノイズも一緒に持ち上げますが、DFEは確定済みシンボルだけを使うためノイズを増幅しません。そこでGen5/Gen6の受信機は「CTLEで大まかに平坦化し、残ったISIをDFEで精密に除去する」二段構えを取ります。送信FFEと合わせ、損失の大きいチャネルでもアイを開く役割を3手法で分担しているわけです。
リンクトレーニングで係数を合わせ込む
FFE・CTLE・DFEの最適値は配線長・基板材質・コネクタで一台ごとに異なるため、固定値では使えません。そこでリンク確立時のリンクトレーニング(LTSSM、Link Training and Status State Machine)の一段階として、両端がイコライゼーション係数を調整するフェーズを持ちます。
リンクトレーニングの大まかな流れ
1. ビットロック/シンボル同期 : クロックリカバリで受信クロックを合わせる
2. リンク幅・転送レートの合意 : x1〜x16、Gen1〜Gen6を双方の対応範囲で確定
3. イコライゼーション調整 : 受信側がアイ開口を測り、相手にTX係数の増減を要求
4. 通常動作(L0)へ遷移 : アイが十分開いたら本通信を開始
要点は、受信側が自分のアイ開口を観測し、相手の送信FFE係数(プリセット)を増やせ/減らせと要求するクローズドループになっている点です。Gen3で導入されたこの自動調整がなければ、Gen5/Gen6の高損失チャネルは実用になりません。世代が上がるほどトレーニングのプリセット数や手順が増え、収束に要する時間も伸びています。
FECとFLITモード ─ 訂正で信頼性を取り戻す
PAM4はビット誤り率(BER)がNRZより桁違いに高く、Gen5までの「CRCで誤りを検出し、ACK/NAKで再送」だけでは、再送が頻発してレイテンシもスループットも破綻します。そこでGen6は**前方誤り訂正(FEC、Forward Error Correction)**を導入しました。
FECは送信側で冗長なパリティを付加し、受信側が再送なしにその場で誤りを訂正する仕組みです。原理はECCメモリの誤り訂正と同じ系譜で、PCIe Gen6は軽量なFECとCRCを組み合わせます。FECで訂正しきれない残存誤りだけをCRCで検出し、従来通り再送するという多段防御です。
この前提として導入されたのがFLITモードです。Gen5まではTLPが可変長で流れていましたが、Gen6はリンク上を**固定長のFLIT(Flow Control Unit、256バイト)**単位で転送します。
| 観点 | 可変長パケット (〜Gen5) | FLITモード (Gen6) |
|---|---|---|
| 転送単位 | 可変長のTLP/DLLP | 固定長FLIT(256バイト) |
| FEC適用 | 困難(境界が不定) | FLIT単位で固定パリティを付加 |
| 遅延の予測性 | パケット長依存でばらつく | 固定遅延・決定的 |
| オーバーヘッド | TLPごとにヘッダ/CRC | FLITに集約し相対的に削減 |
FECは「固定長・既知の境界」を前提に固定の訂正能力を設計できるため、FLITという固定枠が訂正符号と相性よく噛み合います。さらにFLITは誤り訂正の遅延を一定に保てる(パケット長で変動しない)ため、Gen6が掲げる低レイテンシにも寄与します。FECの追加遅延を1〜2ns程度に抑える設計目標も、この固定枠あればこそ成り立ちます。
FECが訂正できる誤り数には上限があります。Gen6のFECは比較的軽量で、各グループあたり1バイトの誤り訂正に的を絞っています。符号を3ウェイでインターリーブすることで、1レーン上の最大16ビット程度のバースト誤りを各グループ1バイト以内に分散させ、訂正可能にしているのが特徴です。これを超える長いバースト誤りや訂正能力を超える誤りはCRC+再送に委ねる設計です。つまりPAM4で増えたBERを「FECで訂正可能なレベルまで」イコライゼーションで下げておくことが大前提であり、FEC・FLIT・イコライゼーションは独立ではなく一体で機能します。
「Gen5まではNRZでボーレート倍化、Gen6はPAM4で1シンボル2ビット=ボーレート据え置きで倍速」「PAM4はアイが3段に分割されSNRが約9.5dB不利」「FFE=送信側プリエンファシス、CTLE=受信側アナログ線形、DFE=受信側の判定帰還(非線形)」「Gen6はFEC+固定長FLITで高BERと低レイテンシを両立」の4点が核心です。GT/s・ボーレート・実効ビットレートの三者を区別できるかが理解度の分かれ目になります。
まとめ
- Gen5(32GT/s)まではNRZで転送レートを倍化してきたが、配線損失の壁により、Gen6(64GT/s)はPAM4へ移行しボーレート据え置きで実効ビットレートを倍にした。
- PAM4は4値振幅で1シンボル2ビットを送る代わりにアイが3段へ分割され、SNRが約9.5dB不利になる。これをイコライゼーションとFECで補う。
- イコライゼーションは送信FFE・受信CTLE・受信DFEの分担で潰れた波形を立て直し、リンクトレーニングで係数を一台ごとに合わせ込む。
- Gen6は前方誤り訂正(FEC)と固定長FLITを導入し、PAM4の高BERを訂正しつつ遅延を一定に保つことで、信頼性と低レイテンシを両立させた。
レーン・パケット・ツリー型トポロジといったPCIeの全体アーキテクチャを押さえた上で本稿の物理層を重ねると、世代更新の難所が見えてきます。この高速I/Oが活きるのはNVMe SSDの直結やGPUの帯域設計で、PAM4とFECはまさにそれらの帯域要求を支える土台です。
CPU/メモリ/ディスク Article
PCIe世代と信号品質 ─ PAM4・FEC・イコライゼーションを実務で読む
TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。
解決すること
PCIe
比較で見る軸
難易度: advanced / カテゴリ: CPU/メモリ/ディスク / タグ数: 6
導入後に効く点
PAM4は1UIに4値(00/01/10/11)を載せるため信号間隔が狭まりエラー率が急増する。Gen6は固定遅延の前方誤り訂正(FEC)と固定長FLITでこれを補い、信頼性と低レイテンシを両立する。
先に潰すリスク
用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。
- 難易度
- advanced
- カテゴリ
- CPU/メモリ/ディスク
- タグ数
- 6
判断チェックリスト
- 自社の用途が「PCIe / PAM4」に近いか確認する。
- 強みである「Gen5(32GT/s)まではNRZで転送レートを倍化してきたが、Gen6(64GT/s)はシンボルあたり2ビットを送るPAM4へ移行し、ボーレートを据え置いたまま実効ビットレートを倍にする。」が本当に評価軸になるか確認する。
- 注意点の「用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。」を運用で吸収できるか確認する。
- 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
- 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
- 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。