Turbo符号の深堀り:動作原理から実装・標準適用まで
概要 — Turbo符号とは何か
Turbo符号は、1993年にClaude Berrou、Alain Glavieux、Punyashloka Thitimajshimaによって提案された誤り訂正符号の一群で、シャノン限界に非常に近い性能を実現することで注目を浴びました。基本的には、複数の畳み込み符号を並列(あるいは直列)に結合し、インタリーバ(並べ替え器)を挿入した構造を持ちます。復号は反復的(iterative)に行われ、ソフト情報(確率・対数尤度比:LLR)を相互に交換することで性能を向上させます。
歴史的背景と意義
従来、シャノン限界に近い性能は大きなブロック長を持つ符号(例えばターボやLDPC)によって達成されると考えられていました。Turbo符号の登場は、比較的実装可能な複雑度で極めて良好な性能を与えることを示し、実用通信システム(例:3G/UMTSやLTEの一部)への採用を促しました。また、反復復号という概念はターボ等化(equalization)やLDPC、さらに後の極性符号(Polar codes)設計にも影響を与えました。
符号化構造の詳細
典型的なTurbo符号は「並列結合再帰型系(Parallel Concatenated Recursive Systematic Convolutional: PCCC)」が用いられます。主な要素は以下の通りです。
- 二つ(またはそれ以上)の再帰型系符号器(RSC: Recursive Systematic Convolutional)
- インタリーバ(入力ビットの並べ替え器)
- 出力の一部を削る(パンクチャ)ことでレートを調整
入力ビット列はまず第1のRSC符号器へ直接与えられ、そのパリティビットが出力されます。一方、同じ入力列はインタリーバで並べ替えられ、第2のRSC符号器に与えられて別のパリティが生成されます。出力は通常、符号化データ(システムビット)と二つのパリティ列の組合せ(あるいはパンクチャにより一部除去)として送信されます。
復号アルゴリズム(反復復号)の核心
Turbo復号の肝は、SISO(soft-input soft-output)復号器を2つ用い、互いに“外部情報(extrinsic information)”を交換しながら反復処理を行うことです。各SISOは通常、MAP(最大事後確率)推定器を実装します。具体的には以下の流れです:
- チャネルから得た観測(チャネルLLR)を各SISOに入力
- 第1のSISOがAPOSTERIORI LLRを計算し、そこから外部情報(自身の事前情報を除いた成分)を抽出
- 抽出した外部情報をインタリーバを介して第2のSISOに与える(並べ替え)
- 第2のSISOが同様に外部情報を返し、逆インタリーブして第1に戻す
- これを所定の反復回数(例:5〜20回)繰り返す
MAP推定はBCJRアルゴリズム(Bahl-Cocke-Jelinek-Raviv, 1974)に基づきます。実装上は計算量削減や数値安定化のために、対数領域でのLog-MAPや近似のMax-Log-MAPが多用されます。Log-MAPではlog-sum-expの補正項を加えることで性能を維持しますが、Max-Log-MAPは補正を省き計算を単純化します。
インタリーバ設計の重要性
インタリーバはTurbo符号性能の要であり、無作為インタリーバ(ランダム)でも長ブロック長では良好ですが、実装や短〜中程度のブロック長では設計されたインタリーバが重要です。代表的な設計方針には以下があります:
- S‐randomインタリーバ:近接する位置の衝突を避け、低重み入力が重ならないようにする
- ブロック型や円筒型インタリーバ
- 3GPP/LTEで採用されたQPP(Quadratic Permutation Polynomial)インタリーバ:ハードウェア実装が容易で性能と複雑度のバランスが良い
インタリーバ長や構造は、誤り床(error floor)の高さや面倒な低重みコード語の出現確率に強く影響します。
性能特性:シャノン限界への接近と誤り床
Turbo符号は十分長いインタリーバと適切な復号反復により、AWGNチャネルにおいてシャノン限界に非常に近い領域で動作できます。典型的にはSNRが数dBの領域で劇的な性能改善を示します。一方で、BERが極めて低い領域での“誤り床”と呼ばれる現象が問題になります。誤り床は低重み(low-weight)入力によって生ずる誤りパターンや、インタリーバの設計に起因する構造的問題が原因で、深いフェイルを引き起こします。誤り床対策としては:
- インタリーバ設計の見直し
- 符号器のメモリや多重化(例えば直列結合SCCCなど)
- CRCや検出器と組み合わせたハイブリッド復号(HARQでの再送)
実装上の留意点
実用実装では以下の点が重要です:
- 数値表現:固定小数点でのLLR表現、飽和処理、量子化の影響
- 計算複雑度:BCJRは前進後退のアルゴリズムでありメモリと演算を要する。Log領域変換やMax-Log近似で負担を軽減
- 反復回数と遅延:反復回数を増やすほど性能は良くなるが処理遅延と消費電力が増加
- パンクチャとレート適応:HARQやアダプティブ変調符号化に対応するためのパンクチャ部の設計
標準化と応用例
Turbo符号は通信標準で広く採用されました。代表例は以下のとおりです:
- 3G(UMTS)での採用:Turbo符号は上り下り共に採用され、良好な性能を示した
- LTE(E-UTRA):ダウンリンク/アップリンクのデータチャネルにおいて3GPPでTurbo符号が採用された(後に5G NRではLDPCとPolarが採用される)
- 衛星・宇宙通信分野:CCSDS等での採用や研究が行われ、長距離・低SNR領域での信頼性向上に寄与
(詳細な規格参照は参考文献のリンクを参照してください。)
Turbo符号とLDPC・Polarとの比較
近年の通信ではLDPCやPolar符号が注目されています。一般的な比較点は:
- 短〜中ブロック長:Turbo符号は優れた性能を示す場合がある
- 長ブロック長/高スループット:LDPCは並列化しやすく高効率
- 制御情報/短ブロック:Polar符号は5Gで制御チャネルに採用されるなど特性を活かす場面がある
- 誤り床:Turbo符号は特定条件で誤り床が出やすく、その対策が必要
発展と派生技術
Turbo符号の枠組みは多方面に発展しました。代表的なもの:
- 直列結合ターボ(Serially Concatenated Convolutional Codes: SCCC)
- ターボ等化:等化器と符号復号器を反復的に連結し、ISI(符号間干渉)があるチャネルで性能改善
- CRC併用やソフト出力を用いた上での上位層との結合(HARQでのシグナル品質管理など)
設計の実務的アドバイス
エンジニアリング実装の際は以下を検討してください:
- 目標BER/SNRに応じたブロック長とインタリーバの選定
- 復号アルゴリズムの近似(Log-MAP vs Max-Log)と固定小数点設計のトレードオフ
- 反復回数とレイテンシ要件のバランス、早期停止基準の導入(CRCやLLR閾値)
- 誤り床対策としてのインタリーバ改善と、必要ならば多重符号化の検討
まとめ
Turbo符号は、反復復号という革新的なアイデアにより実用的な複雑度でシャノン限界に近い性能を実現した重要な技術です。インタリーバ設計、SISO復号アルゴリズム、実装上の近似や固定小数点化が性能と実効スループットを左右します。現在はLDPCやPolarといった他の符号と使い分けられていますが、短中ブロックや等化器と組み合わせたシステムでは依然として有効な選択肢です。
参考文献
- Turbo code — Wikipedia
- C. Berrou, A. Glavieux and P. Thitimajshima, "Near Shannon limit error-correcting coding and decoding: Turbo-codes," 1993 IEEE International Conference on Communications, Geneva, 1993, pp. 1064-1070.
- L. R. Bahl, J. Cocke, F. Jelinek and J. Raviv, "Optimal decoding of linear codes for minimizing symbol error rate," IEEE Transactions on Information Theory, vol. 20, no. 2, pp. 284-287, Mar. 1974.
- 3GPP Specifications — 3GPP (参照: E-UTRA/TS 36.212 等、Turbo符号に関する記述)
- Quadratic permutation polynomial interleaver — Wikipedia
- LDPC code — Wikipedia (比較参照)


