8b/10b変換

読み:はちびーじゅうびーへんかん / 英語表記:8b/10b encoding

シリアル転送で、8ビットのデータを10ビットの符号に変換して送る方式。0と1が偏らないようにして、受信側がタイミング(クロック)を取り出しやすくする。伝送の効率は80%になる。

イマシルちゃんの解説

0と1の信号だけを1本の線で送るとき、「0000000000……」みたいに同じ値がずっと続くと、
受け取る側は「今、何個目の0だっけ?」って、数えるタイミングがわからなくなっちゃうんだ。

8b/10b変換は、8ビットのデータを、0と1がほどよく混ざった10ビットの符号に、対応表で置き換えて送るんだよ。
2ビット多く送るぶん、少しだけ効率は落ちるけど、そのかわりに、確実に読み取れるようになるんだ!

より深い解説

定義

8b/10b変換(8b/10b符号化)は、8ビットのデータを、あらかじめ決められた表に従って10ビットの符号に変換する伝送路符号化の方式である。1983年にIBMの研究者が考案した。10ビットの符号のうち、0と1の数のバランスが取れたものだけを使う。

目的

目的内容
クロックの再生同じ値が長く続かない(最大5ビット)ようにして、受信側が信号の変化からタイミングを取り出せるようにする
DCバランス0と1の数をそろえ、信号の直流成分を偏らせない(ACカップリングの伝送路で信号がゆがまないようにする)
誤りの検出使っていない符号を受信したら、誤りと判断できる
制御符号データとは別に、区切りなどを示す特別な符号(Kコード)を送れる

効率とオーバーヘッド

8ビットのデータを送るのに10ビットを使うため、伝送の効率は8 ÷ 10 = 80% で、20%がオーバーヘッドになる。

例:PCI Express 2.0(5GT/s)の1レーン
5Gbit/s × 8/10 = 4Gbit/s = 500Mバイト/秒

より効率のよい符号化方式

高速化に伴い、オーバーヘッドの小さい方式が使われるようになった。

方式効率オーバーヘッド使われている例
8b/10b80%20%PCI Express 1.x・2.0、1000BASE-X(光ファイバのギガビットイーサネット)、SATA、USB 3.0(5Gbit/s)
64b/66b約97%約3%10GBASE-R(10ギガビットイーサネット)
128b/130b約98.5%約1.5%PCI Express 3.0~5.0
128b/132b約97%約3%USB 3.1以降(10Gbit/s)

64b/66bや128b/130bは、データを64ビットや128ビットごとに区切り、先頭に2ビットの同期用のヘッダーを付ける方式である。0と1の偏りは、データをスクランブル(決まった規則でかき混ぜる)することで防ぐ。

符号化方式を見分けるポイント

規格符号化方式
PCI Express 2.0まで8b/10b
PCI Express 3.0、4.0、5.0128b/130b
PCI Express 6.0PAM4による多値伝送と、誤り訂正(FEC)付きのFLIT

「PCI Express 3.0、4.0、5.0は8b/10b変換を採用している」という説明は誤りである。

ほかの伝送路符号化との関係

方式使われている例内容
マンチェスタ符号10BASE-T1ビットごとに信号を変化させる。効率は50%
4B/5B100BASE-TX、100BASE-FX4ビットを5ビットに変換する。効率は80%
8b/10b1000BASE-X8ビットを10ビットに変換する。効率は80%
64b/66b10GBASE-R64ビットに2ビットのヘッダーを付ける

イーサネットでも、速度の向上に合わせて、効率のよい符号化方式へ移り変わってきた。

実際の試験ではここに出る!

この用語が出てくる記事

↑