8b/10bエンコーディング【8b/10b encoding】
概要

デジタル信号をそのまま送信すると、同じビット値が長時間連続することがある。「0」や「1」が延々と続くと、受信側はクロック信号を正確に復元できなくなり、データの区切りを見失う。8b/10bエンコーディングでは、変換後の符号が適度にビット変化を含むよう設計されており、クロック信号を別途送らないシリアル通信との相性がよい。
また、この方式は「DCバランス」と呼ばれる性質を備えている。伝送される信号全体で「0」と「1」の個数がほぼ均等になるよう符号が選ばれるため、電気信号の直流成分(DC)の偏りが抑えられ、光ファイバーや差動伝送といった伝送路での波形の歪みやノイズを低減できる。
変換の仕組みとして、256通りある8ビットのパターンそれぞれに対して10ビットの符号が規格として定義されている。各パターンには複数の符号候補があり、直前の信号状態に応じて選択することでDCバランスを動的に維持する。規格に合致しない10ビットの並びは正当な符号として現れないため、伝送中のビット化けや同期の乱れを検出する手掛かりにもなる。通常のデータとは別に、開始・終了・アイドル状態などを表す制御用の特殊な符号も定義されており、通信の状態管理にも活用される。
1983年に米IBM社が考案した方式で、後に初期世代のPCI ExpressやSerial ATA、USB 3.0、Fibre Channel、ギガビットイーサネットなど様々な高速シリアルインターフェース規格に採用された。一方、8ビットを10ビットに変換することで20%のオーバーヘッドが生じ、実効的な伝送効率は80%に低下する。通信速度の高速化が進むにつれてこの損失が無視できなくなり、64b/66bエンコーディングや128b/130bエンコーディングなどより効率の高い方式へ移行する規格も増えている。