JP2009532952A - トレリスを高速処理するためのパイプライン化された状態更新のスケジューリング - Google Patents
トレリスを高速処理するためのパイプライン化された状態更新のスケジューリング Download PDFInfo
- Publication number
- JP2009532952A JP2009532952A JP2009503186A JP2009503186A JP2009532952A JP 2009532952 A JP2009532952 A JP 2009532952A JP 2009503186 A JP2009503186 A JP 2009503186A JP 2009503186 A JP2009503186 A JP 2009503186A JP 2009532952 A JP2009532952 A JP 2009532952A
- Authority
- JP
- Japan
- Prior art keywords
- state
- trellis
- time index
- metric
- pipelined
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/39—Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes
- H03M13/41—Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes using the Viterbi algorithm or Viterbi processors
- H03M13/4107—Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes using the Viterbi algorithm or Viterbi processors implementing add, compare, select [ACS] operations
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/29—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
- H03M13/2957—Turbo codes and decoding
- H03M13/2978—Particular arrangement of the component decoders
- H03M13/2987—Particular arrangement of the component decoders using more component decoders than component codes, e.g. pipelined turbo iterations
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/39—Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes
- H03M13/3905—Maximum a posteriori probability [MAP] decoding or approximations thereof based on trellis or lattice decoding, e.g. forward-backward algorithm, log-MAP decoding, max-log-MAP decoding
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/39—Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes
- H03M13/3905—Maximum a posteriori probability [MAP] decoding or approximations thereof based on trellis or lattice decoding, e.g. forward-backward algorithm, log-MAP decoding, max-log-MAP decoding
- H03M13/3922—Add-Compare-Select [ACS] operation in forward or backward recursions
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/39—Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes
- H03M13/41—Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes using the Viterbi algorithm or Viterbi processors
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/65—Purpose and implementation aspects
- H03M13/6502—Reduction of hardware complexity or efficient processing
Landscapes
- Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Error Detection And Correction (AREA)
Abstract
複数の状態を有する有限状態機械として表し得るプロセスにより得られる受信信号から情報を抽出する方法、装置及びシステムであり、状態間の遷移を複数の時刻インデックスにわたるトレリスを使用して表すことができ、受信信号を考慮してブランチメトリックを計算するステップと、各時刻インデックスの状態メトリックを、ブランチメトリックを考慮しパイプラインプロセスを使用して計算するステップであって、パイプラインプロセスを使用して第1の時刻インデックスの状態メトリックを計算し、パイプラインプロセスを使用して一以上の非隣接時刻インデックスの状態メトリックを計算し、パイプラインプロセスを使用して隣接時刻インデックスの状態メトリックを計算するステップと、トレリス中の少なくとも一つの選択経路に関連する状態の状態メトリックを考慮して少なくとも一つの出力を生成するステップと、を含む。
【選択図】 図5
【選択図】 図5
Description
[0001]ノイズのあるチャネルを通じてデータを送信すると、データストリームに誤りが発生し得る。送信系列における誤りの量を減少させるために、また、再送を回避するために、系列中の誤りを検出して訂正する能力を提供する符号化手法が開発されている。この能力は、通常、送信の一部として冗長な情報を加えることによって達成される。ここで、「送信」との用語は、様々なタイプの媒体を通じたデータの伝送を含むように、広義に使用される。媒体としては、通信媒体(例えば、有線技術、無線技術、衛星技術、及びその他の技術において使用される通信媒体)を含めることができる。更に、媒体として、記憶媒体(例えば、磁気メモリ、半導体メモリ、及びその他のタイプのメモリ)を含めることができる。
[0002]最も普及している強力な符号化手法の幾つかは、畳み込み符号を、単独で、又は、並列連接畳み込み符号(PCCC又はターボ)、直列連接畳み込み符号(SCCC)、及びその他のターボライク符号(TLC)のような複数の符号を含むより複雑な構成で、使用する。通常の畳み込み符号とTLCとでは、パフォーマンス、構造、及び復号手法の点で大幅に異なるが、それぞれの復号器は、幾つかの共通の特徴を備えている。
[0003]畳み込み符号を復号するために使用される復号構造は、トレリス処理に基づいている。トレリスとは、時間軸に沿って展開された符号化器の状態機械の状態を表したものである。トレリスは、時間軸に沿った畳み込み符号化器の有限状態機械の状態を、受信信号から得られる情報に基づいて推定するために使用される。
[0004]特殊な場合として、単一パリティチェック符号に基づく符号を同じカテゴリに分類することもできる。これは、そのような符号も、トレリスベースの構造を使用して復号することができるからである。パリティチェックの状態機械は、畳み込み符号の2状態の状態機械とみなすことができ、ここでは、パリティビットがこの符号の終端処理ビットである。従って、長さKの単一パリティチェック符号は、長さK+1の終端2状態再帰的畳み込み符号とみなして、復号することができる。
[0005]畳み込み符号の場合にトレリスを復号するための従来のアルゴリズムでは、トレリスの中をその先頭から最後まで一度に1段階ずつ処理しながら、プロセスにおける状態メトリックを更新していく。状態メトリックは、受信器で集められた受信系列の観察値から計算されるブランチメトリック(分岐メトリック)を使用して更新される。従って、トレリスに沿った経路の各々には、その系列が送信された尤度に対応するコストが関連付けられる。次に、復号器は、復号系列について「硬」判定、即ち、ビタビアルゴリズムとして知られているプロセスを行い、或いは、特定の値を想定して、送信されたビットの尤度に対応する軟メトリックを生成する(軟出力ビタビアルゴリズム、即ち、SOVAとして知られているプロセス)。
[0006]TLCの場合には、前向き(順方向)・後向き(逆方向)アルゴリズム(Forward−Backward Algorithm)として知られている従来の復号アルゴリズムによって、トレリスを両方向に処理して、ビタビアルゴリズムと同じように状態メトリックを更新する。次に、二つの経路からの状態メトリックを、ブランチメトリックと共に使用して、トレリスに沿った対象の各ビットに対して軟出力を生成する。このプロセスを実行するモジュールは、軟入力軟出力モジュール、即ち、SISOモジュールと呼ばれる。TLCの場合には、符号化器での各畳み込み符号に対応するそのような一つのSISOモジュールが存在し、各SISOが別のSISOにデータを渡し、何らかの基準が満たされるまでプロセスを繰り返し、基準が満たされた時点で「硬」判定を行う。このような基準は、例えば、反復の最大回数に達したこと、解への収束が達成されたこと等とすることができる。
[0007]トレリスベースの処理における問題は、その再帰性である。ビタビ復号器及びSISOモジュールのいずれの場合にも、処理における重要な手順は、状態更新プロセスである。トレリスの中の各段階の処理は、前の段階(逆方向に処理する場合には次の段階)において生成された値に依存する。このデータの依存性は、前の段階の処理が行われるまで次の段階を処理することができないことを意味する。基本的な方法においては、このデータの依存性はまた、トレリス全体を同じプロセッサによって連続的に処理しなければならないことも意味する。
[0008]設計者がトレリスを複数のセクション(例えば、ウィンドウ、タイル)に分割し、従って、プロセスを並列に処理することのできる小さなブロックに分けることのできる幾つかの手法が開発されている。基本的なコンセプトは、Viterbi氏に発行された米国特許第5,933,462号明細書に記載されている。サイズKのブロック全体を復号する代わりに、米国特許第5,933,462号明細書には、メモリ必要量を減少させるのではなくサイズLのウィンドウを単位として復号するアルゴリズムが記載されている。このコンセプトは、順方向にも拡張することができ、サイズKのトレリスセクションのブロックをより小さいサイズLの独立したセクションに分割するように使用することができる。
[0009]しかしながら、この方法では、データの依存性の問題が解決されず、トレリスプロセッサの現在のハードウェア実装は、再帰的な状態更新計算の最大実行速度に制限される。設計者は、このプロセスを高速化しようとするとき、要求される速度を達成するために、トレリスの複数の異なるセクションに対して複数の状態更新ユニットを並列に使用することがしばしばある。しかしながら、このような方法には本質的な欠点がある。第一に、トレリスの複数の異なるセクションに対する並列の状態更新ユニットは、膨大な同時メモリアクセスを必要とする傾向があり、即ち、アクセスが衝突しないことを保証する目的で、メモリ幅が極めて広くなり、幾つかの制約が課される。更には、トレリスを処理するエンジンに要求されるロジックの量が、使用する並列ユニットの数に伴って線形的に増大する。
[0010]従って、トレリスベースのより効率的な復号手法が、依然として強く求められている。特に、再帰的演算を伴うことのある状態更新の計算を実行するステップにおいて求められている。
[0011]本発明は、複数の状態を有する有限状態機械として表すことのできるプロセスによって得られる受信信号から情報を抽出する方法、装置、及びシステムであって、状態の間の遷移を、複数の時刻インデックス(time index)にわたるトレリスを使用して表すことができ、トレリスが、各時刻インデックスにおいて複数の状態を含んでいる、方法、装置、及びシステムに関する。本方法、本装置、及び本システムは、一つの状態から別の状態への遷移に対応するブランチメトリックを、受信信号を考慮して計算するステップと、各時刻インデックスにおける状態に対応する状態メトリックを、ブランチメトリックを考慮し、パイプライン化されたプロセスを使用することによって、計算するステップであって、パイプライン化されたプロセスを使用して、第1の時刻インデックスにおける状態メトリックを計算し、次いで、パイプライン化されたプロセスを使用して、第1の時刻インデックスに隣接していない一以上の非隣接時刻インデックスにおける状態メトリックを、第1の時刻インデックスにおける状態に対応する状態メトリックの計算の結果を使用せずに計算し、次いで、パイプライン化されたプロセスを使用して、第1の時刻インデックスに隣接している隣接時刻インデックスにおける状態メトリックを、第1の時刻インデックスにおける状態メトリックの計算の結果を使用して計算する、当該ステップと、トレリスの中の少なくとも一つの選択された経路に関連付けられている状態に対する状態メトリックを考慮することによって、少なくとも一つの出力を生成するステップと、を含む。
[0012]トレリスを複数のセクションに分割することができ、各セクションは、より少ない数の複数の時刻インデックスにわたっており、第1の時刻インデックスが、トレリスの第1のセクションからの時刻インデックスであり、一以上の非隣接時刻インデックスが、トレリスの一以上の別のセクションからの時刻インデックスであり、隣接時刻インデックスが、トレリスの第1のセクションからの別の時刻インデックスである。このようにして、パイプライン化されたプロセスを使用して、トレリスの複数の異なるセクションからの時刻インデックスにおける状態メトリックをラウンドロビン方式にて計算することができる。
[0013]一実施形態によれば、パイプライン化されたプロセスはN個のステージ(Nは正の整数)を備えており、トレリスはM個のセクション(MはNに等しい正の整数)に分割されている。別の実施形態によれば、Mは、Nよりも大きい正の整数であり且つNの倍数である。
[0014]状態メトリックの計算は、順方向(前向き)状態メトリック及び/又は逆方向(後ろ向き)状態メトリックの計算を含み得る。一実施形態においては、パイプライン化されたプロセスは、少なくとも一つの加算−比較−選択(ACS)演算を実行するように構成されている。
[0015]パイプライン化されたプロセスは、ゲートロジック(gated logic)を使用したハードウェアで実施することができ、このゲートロジックは、特定用途向け集積回路(ASIC)設計、超大規模集積回路(VLSI)設計、フィールドプログラマブルゲートアレイ(FPGA)設計、及び/又は、その他の設計のうちの一部とすることができる。
[0016]更に、ブランチメトリックの計算と少なくとも一つの出力の生成を、パイプライン化されたプロセスを使用して実行することができる。
[0017]本発明の様々な実施形態によれば、ウィンドウ処理及び/又はタイリングを用いる手法を、パイプライン化された状態更新ユニットと、インターレーススケジューリングアルゴリズムと組み合わせて、トレリスベースの計算の処理速度を向上させることができる。これにより、複数の状態更新ユニットの代わりに一つの状態更新ユニットを使用することができる。重要な点として、トレリスベースの計算を、状態更新値の再帰性に関連する小さな制約下で実行することができる。恩恵として、ハードウェア実装における回路面積が大幅に減少する。更には、メモリアクセス特性が大きく向上する。
I.システムの説明
[0026]図1は、畳み込み符号化器14を採用したデジタル通信システム10を示している。畳み込み符号化器14は、前述したように、単独の畳み込み符号、又は、PCCC符号、SCCC符号、及びその他のターボライク符号のような複数の符号を含むより複雑な構造を採用し得るものである。符号化器14は、有限状態機械(FSM)としてモデル化することのできる多くのプロセスのうちの一つの例である。別のこのようなプロセスとしては、それらに限定されるものではないが、別のタイプの符号に基づく符号化器、準容量マルチユーザ検出(near−capacity multi−user detection)、準最適2次元データ検出(near− optimal two−dimensional data detection)、フェージングチャネル、シンボル間干渉(ISI)チャネルが挙げられる。
[0026]図1は、畳み込み符号化器14を採用したデジタル通信システム10を示している。畳み込み符号化器14は、前述したように、単独の畳み込み符号、又は、PCCC符号、SCCC符号、及びその他のターボライク符号のような複数の符号を含むより複雑な構造を採用し得るものである。符号化器14は、有限状態機械(FSM)としてモデル化することのできる多くのプロセスのうちの一つの例である。別のこのようなプロセスとしては、それらに限定されるものではないが、別のタイプの符号に基づく符号化器、準容量マルチユーザ検出(near−capacity multi−user detection)、準最適2次元データ検出(near− optimal two−dimensional data detection)、フェージングチャネル、シンボル間干渉(ISI)チャネルが挙げられる。
[0027]以下、図1を参照する。デジタル通信システム10は、シンボルの閉集合(closed set)で定義されるシンボルを提供するデータ源12を含んでいる。例えば、バイナリのシンボルの閉集合を使用する場合、シンボルは{0,1}から選択される。データ源12からのシンボルは符号化器14に転送され、この符号化器14が、当該符号化器14の構造に従って、シンボルを符号化シンボルに変換する。次いで、符号化シンボルがチャネル16を通じて送られて受信信号が生成される。このチャネル16は、符号化シンボルに加法性白色ガウスノイズ(AWGN)のようなノイズ及び歪みを加えることがある。受信信号に関連する軟情報が復号器18に送られる。復号器18は、シンボルに関する軟情報を出力し、この情報を閾値処理して、硬判定復号シンボルを生成することができる。
[0028]図1に示したデジタル通信システムは、基本的な機能の説明上の例を提供する機能ブロック図である。別の機能を追加してもよく、一以上の機能を省いてもよい。更に、本明細書に説明する革新的な方法の用途は、この特定のブロック図に限定されない。同様に、以下に説明する他のブロック図は、単に説明上の例であり、本明細書に説明する方法の用途を制限するものではない。
[0029]図2は、畳み込み符号化、ISI干渉、及びその他のようなプロセスをモデル化するFSMを記述したトレリスのセクションを示している。一般的には、FSMは、P個の状態S={S1,S2,...,SP}を有する。状態の数Pは、FSMのメモリ長の関数である。時刻kにおけるFSMの状態は、sk=Si∈Sである。
[0030]一つの状態から別の状態への遷移のそれぞれは、n個の入力とm個の出力を伴う。
[0031]一つの状態Sk(遷移元状態k)から別の状態Sl(遷移先状態l)へのトレリス遷移は、FSMへの入力シンボルbi(i=1..n)によって確定的に駆動される。入力シンボルbiは、データ源(例えば、データ源12)によって提供することができる。従って、各状態遷移は、入力シンボル及び出力シンボルそれぞれの値と、開始状態及び遷移先状態との組合せによって特徴付けられる。
[0032]各入力シンボルbiは、M要素のシンボルの閉集合(M−ary closed set of symbols)から取り出される。以下の段落では、説明を容易にするために、biが2要素のシンボルの閉集合{0,1}から取り出されるものと想定する。即ち、入力シンボルbiはバイナリ(ビット)であるものと想定する。同様に、FSMからの出力シンボルcj(j=1..m)も、バイナリ(ビット)であるものと想定する。
[0033]図2に示した具体的な例は、四つの状態を有する(P=4)FSMであり、各状態遷移が、一つの入力ビットbi(n=1)と一つの出力ビットcj(m=1)とを伴う。遷移先状態lは、遷移元状態kと入力ビットbi(この場合にはただ一つの入力ビットbi)とによって決まる。従って、各遷移元状態は、二つの候補の遷移先状態に遷移することができる。また、各遷移先状態は、二つの候補の遷移元状態から遷移することができる。出力ビットcj(この場合にはただ一つの出力ビットcj)は、遷移元状態kから遷移先状態lへの状態遷移によって決まる。図2に提示したP、n、及びmの具体的な値は、単に説明を目的としたものである。これらの値は、実施する符号に応じて変化しうる。
II.復号におけるメトリックの計算
[0034]復号器(例えば、復号器18)によって実行される復号は、ブランチメトリックと状態メトリックとを伴い得る。このようなメトリックは、送信における特定の時点での符号化器のFSMが特定の状態にあるか、又は特定の状態から別の特定の状態に遷移している尤度が関連付けられている。これらのメトリックは、受信信号からの事後確率を使用して、トレリスに沿って処理することによって計算される。
[0034]復号器(例えば、復号器18)によって実行される復号は、ブランチメトリックと状態メトリックとを伴い得る。このようなメトリックは、送信における特定の時点での符号化器のFSMが特定の状態にあるか、又は特定の状態から別の特定の状態に遷移している尤度が関連付けられている。これらのメトリックは、受信信号からの事後確率を使用して、トレリスに沿って処理することによって計算される。
[0035]具体的には、ブランチメトリックは、一つの状態から別の状態への遷移に関連する確率に関するものである。本技術分野において公知であるように、ブランチメトリックは、通常、受信信号を考慮することによって計算される。従って、受信信号が与えられると、トレリスに沿った各ブランチの事後確率は、その特定のブランチに沿った全てのビットの既知の確率によって形成することができる。このような事後確率を表す値を、ブランチメトリックとみなす。
[0036]状態メトリックは、特定の状態にあることに関連する確率に関するものである。状態メトリックは、一般的には、トレリスに沿った状態それぞれの確率を、初期状態から開始して一度に一つの時刻インデックスを処理しながら計算することにより、ブランチメトリックを使用して計算される。各状態について得られる確率は、状態メトリックとしても知られており、符号化器のFSMが特定の時刻において特定の状態にある確率を、トレリスの先頭からその時点までの受け取った確率又はブランチメトリックを前提として、表している。
[0037]一般的には、ブランチメトリック及び状態メトリックは、特定の入力シンボル、及び/又は、出力シンボが特定の値をとる尤度に関連する何らかの信頼性測度(reliability measure)に基づいて定義される。本技術分野において公知であるように、使用可能な数多くのタイプの信頼性測度が存在する。説明を容易にするため、ここでは、正規化対数尤度メトリック(normalized log−likelihood metrics)として知られているタイプの信頼性測度を採用する。それ以外のタイプの信頼性測度も周知であり、使用することができる。異なるタイプの信頼性測度の間の関係は、この分野において十分に理解されたものである。従って、本明細書に説明する手法は、別のタイプの信頼性測度に容易に拡張することができる。
[0038]ここでは、正規化対数尤度メトリックを、各シンボルzkについて定義する。当該シンボルzkは、入力シンボルbi又は出力シンボルcjのいずれかである。この場合も説明を容易にするため、本明細書においては、入力シンボル又は出力シンボルのそれぞれを、バイナリ(ビット)として説明する。正規化対数尤度メトリックは、軟入力(SI)及び軟出力(SO)といった軟信頼性測度を含んでいる。以下では、最初に軟入力SIについて説明する。
[0039]あるビットを表す軟入力メトリックSIは、そのビットが1である確率の対数から、そのビットが0である確率の対数を減じたものとして定義することができる。この定義では、1の尤度を表す値が必ず符号付きの数量になり、0の尤度が常に0に等しくなる。この表現は極めて実用的である。なぜならば、各ビットを表すのに必要なビットが一つのみであるためである。数学的には、この定義は、任意のビットzkに対して以下の式として表すことができる。
III.min−sumアルゴリズム
[0040]図3は、本発明の実施形態に係る復号器18の更なる詳細を示すブロック図である。この図に示したように、復号器18は、ブランチメトリックユニット302と、状態更新ユニット304と、出力ユニット306と、を含んでいる。これらは、この図においては個別のユニットとして示してあるが、個別に実装しても、或いは、統合形態として実装してもよい。
[0040]図3は、本発明の実施形態に係る復号器18の更なる詳細を示すブロック図である。この図に示したように、復号器18は、ブランチメトリックユニット302と、状態更新ユニット304と、出力ユニット306と、を含んでいる。これらは、この図においては個別のユニットとして示してあるが、個別に実装しても、或いは、統合形態として実装してもよい。
[0041]トレリス処理の最初のステップは、ブランチメトリックユニット302によって実行される。ブランチメトリックユニット302は、トレリスセクションそれぞれのブランチメトリックを計算する。本明細書における表記法を使用する場合、二つの状態の間での遷移についてのブランチメトリックは、その特定のブランチにおいて対応するビットが値1をとる、全てのビットbi及びcjの軟入力メトリックSIの和に等しい。従って、時刻tでの、状態kから開始し状態lで終わるトレリスにおけるブランチメトリックBMt k,lは、以下のように定義することができる。
[0042]明らかに、プロセスのこの部分は、一組の加算を含んでいるに過ぎず、データの依存性が存在しない。従って、フィードフォワード型のデータパスとして実施することができ、トレリス処理の次のステップ(状態更新演算)と少なくとも同じ速度であるよう必要なだけ細かく、容易にパイプライン化することができる。
[0043]トレリスベース処理の2番目のステップは、状態更新ユニット304によって実行される。状態更新ユニット304は、各トレリスセクションの状態メトリックを計算する。これを「状態更新」演算とも称する。状態メトリックは、一般には再帰的に定義される。即ち、遷移先状態の状態メトリックは、遷移先状態に至る一以上の遷移元状態の状態メトリックの関数として定義することができる。以下では、このような再帰的計算について更に詳しく説明する。
[0044]ここで、状態メトリックの計算は、min−sum処理アルゴリズムを使用して実行される。しかしながら、当業者には理解されるように、本発明の教示内容は、max−productアルゴリズム、sum−productアルゴリズム、min*−sumアルゴリズム、max*−sumアルゴリズム(又はこれらの近似のいずれか)といった別のアルゴリズムを選択する場合にも適用することができる。これら演算の組の全ては類似する特性を共有している。なぜならば、これらの演算は、いずれも、状態メトリック及びブランチメトリックの計算に使用される確率のセットを有する半環(semiring)を定義する一対の演算であるからである。
[0045]この技術分野において公知であるように、状態メトリックは、順方向状態メトリックと逆方向状態メトリックとを含み得る。本発明の実施形態によれば、時刻tにおける順方向状態メトリックは、Ft k(k=1..P、t=0..K)として定義される。時刻tにおける逆方向状態メトリックは、Bt k(k=1..P、t=0..K)として定義される。ここで、nは、各状態遷移に関連する入力の数であり、mは、各状態遷移に関連する出力の数である。PはFSMの状態の数であり、Kは復号する符号語の長さ又はブロックのサイズである。
[0046]順方向状態メトリック及び逆方向状態メトリックの使用は、実施されている復号器のタイプに応じて変わり得る。例えば、復号器が、一般にはターボライク符号(TLC)を復号するのに使用される軟入力軟出力(SISO)モジュールを備えている場合には、順方向状態メトリック及び逆方向状態メトリックの双方を計算することができる。復号器が基本ビタビ復号器である場合には、順方向状態メトリックのみを計算する必要がある。以下では、順方向状態更新演算と、逆方向状態更新演算の双方について説明する。
[0047] min−sumアルゴリズムによれば、状態更新演算は、遷移先状態に至る全ての遷移について、対応するブランチメトリックを遷移元状態の状態メトリックに加算し、全ての候補の和のうち最小値に、遷移先状態の状態メトリックを設定する。同様に、この処理ステップの等式は、次のように書くことができる。なお、順方向及び逆方向のいずれの場合にも、この演算は、状態kと状態lとの間の全ての有効な遷移について定義される。
[0048]以下では、単なる一例として、順方向状態メトリックの一つの例示的な計算について説明する。再び図2を参照する。時刻インデックスt+1において特定の遷移先状態l(状態「C」)に遷移し得る時刻インデックスtの遷移元状態kの候補は、二つ存在する(状態「A」及び状態「B」)。時刻インデックスt及び時刻インデックスt+1は、隣接する時刻インデックスの例である。従って、時刻t+1における遷移先状態「C」に関連する順方向状態メトリックFl t+1の計算は、二つの和の比較に基づく。第1の和は、第1の候補の遷移元状態「A」に関連する時刻tの順方向状態メトリックFt kと、状態「A」から状態「C」への遷移に関連する時刻tのブランチメトリックBMt k,lとの和である。第2の和は、第2の候補の遷移元状態「B」に関連する時刻tの順方向状態メトリックFt kと、状態「B」から状態「C」への遷移に関連する時刻tのブランチメトリックBMt k,lとの和である。二つの和のうちの小さい方(又は、三つ以上の遷移元状態が遷移先状態に遷移し得る場合には、三つ以上の和のグループにおける最小値)を、遷移先状態「C」の時刻t+1における新しい順方向メトリックFl t+1として選択する。
[0049]このように、時刻インデックスt+1のそれぞれにおいて、全ての状態について順方向状態メトリックが計算される。この計算は、前の時刻インデックスtの状態の順方向状態メトリックと、該当するブランチメトリックとに基づく。これらの順方向状態メトリックの計算は、図2の場合には左から右へ移動しながら、時刻インデックスそれぞれにおいて繰り返される。従って、順方向状態メトリックは、順方向に再帰的に計算されると言い表される。
[0050]逆方向状態メトリックの計算は、同様の方式で、ただし反対方向に実行することができる。従って、時刻インデックスtのそれぞれにおいて、全ての状態について逆方向状態メトリックが計算される。この計算は、次の時刻インデックスt+1の状態の逆方向状態メトリックと、該当するブランチメトリックとに基づく。これらの逆方向状態メトリックの計算は、図2の場合には右から左へ移動しながら、時刻インデックスそれぞれにおいて繰り返される。従って、逆方向状態メトリックは、逆方向に再帰的に計算されると言い表される。
[0051]明らかに、トレリス処理のこの部分(状態メトリックの計算、即ち「状態更新」)は、このプロセスが再帰的であるため、データの依存性を含んでいる。従来の設計において、処理のこの部分がトレリス処理のボトルネックであるとみなされるのは、このためである。
[0052]トレリスベースの処理の第3のステップは、出力ユニット306において実行される。このステップは、ビタビ復号器とターボ復号器とで異なる。即ち、復号器18はビタビ復号器であってもよい。この場合、システムは、単にトレリスの中でトレースバックを実行して、最も可能性の高い経路を報告し、その報告から、送信されたビット列として最も可能性の高いビット列を導く。従って、このステップは、「硬」判定を行うアルゴリズムである。或いは、復号器18はターボ復号器であってもよい。本技術分野において周知であるように、このようなターボ復号器は、複数の軟入力軟出力(SISO)モジュールを備え得る。ユニット302、ユニット304、及びユニット306は、一つ(又は複数)のこれらSISOモジュール内のコンポーネントである。この場合、硬判定ではなく軟出力が計算され、従って、システムは、解に収束するまで複数の異なるSISOモジュールの間で反復することができる。
[0053]軟出力(SO)の計算は、状態更新ユニット304によって実行された処理の第2のステップにおいて計算された状態メトリックと、ブランチメトリックユニット302によって実行された処理の第1のステップにおいて計算されたブランチメトリックとに基づく。このプロセスは、軟出力計算又は完了演算としても知られている。任意のビットzi(ziはFSMへの入力ビット又は出力ビットのいずれかとすることができる)に対する軟出力の計算を記述する式は、次のとおりである。
[0054]出力ユニット306の演算は、ビタビ復号器におけるトレースバックアルゴリズムと、ターボ復号器のSISOモジュールにおける完了演算のいずれの場合にも、データの依存性が存在しないプロセスである。従って、この演算は、ハードウェア実装において、状態更新演算の速度と同じ又は上回るために必要なだけ細かくパイプライン化することのできるフィードフォワードデータパスを用いて実施することもできる。
III.復号におけるタイリング及びウィンドウ処理
[0055]図4は、本発明の一実施形態による、復号を個別に実行することのできる複数のセクション402,404,及び406へのトレリス400の分割を示している。トレリス400は、番号1〜9が付されている9個の時刻インデックスにわたるように示してある。各時刻インデックスにおいて、トレリス400は、四つの可能な状態「A」、「B」、「C」、及び「D」、を含んでいる。ここでは、トレリス400は三つの(M=3)セクション402、404、及び406に分割されている。セクション402は、時刻インデックス1〜3にわたっており、セクション404は、時刻インデックス4〜6にわたっており、セクション406は、時刻インデックス7〜9にわたっている。図4に示した状態及び時刻インデックスの具体的な数は、説明が明瞭になるように単純なものにしてある。実施形態によっては、より多くの状態及びより多くの時刻インデックスを含め得る。
[0055]図4は、本発明の一実施形態による、復号を個別に実行することのできる複数のセクション402,404,及び406へのトレリス400の分割を示している。トレリス400は、番号1〜9が付されている9個の時刻インデックスにわたるように示してある。各時刻インデックスにおいて、トレリス400は、四つの可能な状態「A」、「B」、「C」、及び「D」、を含んでいる。ここでは、トレリス400は三つの(M=3)セクション402、404、及び406に分割されている。セクション402は、時刻インデックス1〜3にわたっており、セクション404は、時刻インデックス4〜6にわたっており、セクション406は、時刻インデックス7〜9にわたっている。図4に示した状態及び時刻インデックスの具体的な数は、説明が明瞭になるように単純なものにしてある。実施形態によっては、より多くの状態及びより多くの時刻インデックスを含め得る。
[0056]トレリス400を複数の異なるセクションに編成することにより、より効率的な処理を促進することができる。図3までの説明では、データブロック全体をトレリス処理エンジンによって連続的に処理しなければならないことを暗黙的に想定してきた。しかしながら、トレリスの複数の部分を切り離し、これらを個別に(例えば並列に)処理することを可能にする手法が開発されている。タイリング及びウィンドウ処理のコンセプトは、設計者の間で極めて頻繁に使用され、非常に普及した二つの用語である。
[0057]いずれのコンセプトも、同じ論理的背景に基づいており、これらのコンセプトは、用途に応じて、個別に使用し、或いは、同時に使用することができる。タイリングのコンセプトは、ビタビ復号器とSISO設計とに適用することができるのに対し、ウィンドウ処理のコンセプトは、主としてSISOモジュールに関連付けられる。
[0058]タイリングは、トレリスのセクションを切り離してこれらを並列に処理するために、ブロックをより小さい断片に分割することに関する。例えば、並列のM個のユニットが要求される特定のスループットを達成しようとする場合、ブロックを、等しい長さのM個のタイルに分割して(可能な場合)、タイルのそれぞれを異なるプロセッサにおいて処理する。
[0059]一方、ウィンドウ処理は、メモリ及び遅延を低減する手法とみなされており、一つの処理エンジンにおいても採用される。目的は、格納しなければならない逆方向状態メトリックが少なくなり、軟出力の計算を早期に開始することができるように、逆方向再帰(backward recursion)の長さを、トレリスの全長にわたるのではなくウィンドウのみを範囲とするように低減することである。この解決策は、必要であれば順方向再帰に適用することができるが、適用しても同程度の効果が得られないため、めったに使用されることはない。
[0060]トレリスに沿った特定量のノードが処理された後には、メトリックは、たとえ開始点がトレリスの先頭ではない場合であっても、対象の点より前の長さLが十分であれば、信頼することのできる状態メトリックに収束する傾向にある。十分な長さLとは、通常、符号化器のFSMにおけるメモリ素子の量の5〜7倍である。この原則は、順方向再帰及び逆方向再帰に容易に適用することができる。極めて一般的な方法では、トレリスを、等しい長さLのセグメントに分割する。順方向再帰においては、トレリスの全長にわたり通常の方式にて順方向に処理する。逆方向再帰は、長さが2Lであるセグメントを対象として実行する。第1の(最初の)Lの要素は、逆方向再帰をトレーニング又は「準備する(warm up)」ために使用され、第2のLの要素は、軟出力を生成するためにSISOによって使用される。この場合、逆方向再帰における最大レイテンシは2Lであり、逆方向メトリックに必要な最大メモリ量はLである。一般に、逆方向においては、順方向プロセッサに遅れないように、二つのプロセッサを交互に使用する。
[0061]このコンセプトは、反復的な復号プロセスにおいて使用されるSISO設計に適用することができる。したがって、この実行アルゴリズムになし得る更なる改良が存在する。前の反復からの状態メトリックは、長さLのウィンドウの間での開始メトリックとして使用することができる。即ち、もはやトレーニングが必要なく、ただちに復号に使用することのできる長さLに対して逆方向再帰を実行するのみでよい。これにより、更なる係数Lだけ遅延が低減し、更に、第2の逆方向プロセッサの必要性がなくなる。なぜならば、逆方向再帰が順方向プロセッサと同じ速度で処理することができるからである。この改良は、タイルが使用される場合にも適用することができる。
IV.状態更新演算のパイプライン化
[0062]図5は、本発明の実施形態に係るパイプライン化された状態更新ユニット304の詳細を示している。ここで、パイプライン化された状態更新ユニット304は、四つの個別のパイプライン化された加算−比較−選択(ACS)ユニット502,504,506,及び508を備えており、これらのユニットは、並列に動作して、トレリスの各時刻インデックスにおける異なる状態の状態メトリックを計算する。
[0062]図5は、本発明の実施形態に係るパイプライン化された状態更新ユニット304の詳細を示している。ここで、パイプライン化された状態更新ユニット304は、四つの個別のパイプライン化された加算−比較−選択(ACS)ユニット502,504,506,及び508を備えており、これらのユニットは、並列に動作して、トレリスの各時刻インデックスにおける異なる状態の状態メトリックを計算する。
[0063]例えば、再び図4を参照すると、四つの状態メトリック、即ち、トレリス400の時刻インデックス「1」における状態「A」〜状態「D」それぞれに対して一つの状態メトリックの計算を、パイプライン化されたASCユニット502,504,506,及び508を並列に動作させることよって達成することができる。パイプライン化されたASCユニット502は、状態「A」の状態メトリックを計算する。パイプライン化されたASCユニット504は、状態「B」の状態メトリックを計算する。パイプライン化されたASCユニット506は、状態「C」の状態メトリックを計算する。パイプライン化されたASCユニット508は、状態「D」の状態メトリックを計算する。このように、一つの時刻インデックス(例えば「1」)における複数の状態メトリックの計算を実行することができる。
[0064]複数の時刻インデックスにわたる状態メトリックの計算のパイプライン化は、スケジューリングを伴い得る。ここでは、一つの時刻インデックスにおける状態メトリックを計算するうえで、別の時刻インデックスにおける状態メトリックの計算の結果が要求されるので、パイプライン化は単純なタスクではない。本発明の実施形態によれば、複数の異なる時刻インデックスにおける状態メトリックの計算をスケジューリングするシステムを採用して、そのようなデータの依存性が適切に管理されるようにする。パイプライン化された状態メトリック計算のスケジューリングについては、後に更に詳しく説明する。
[0065]パイプライン化されたACSユニット502,504,506,及び508の動作は似ているので、以下では、パイプライン化されたACSユニット502についてのみ具体的に説明する。それ以外のパイプライン化されたACSユニット504,506,及び508は、同じように動作する。
[0066]本発明のこの実施形態においては、パイプライン化されたACSユニット502は三つのステージ521,522,及び523に編成されている。即ち、このACSユニットは、3ステージのパイプライン(N=3)を備えている。機能ユニットを複数の状態のパイプラインに編成することによって、その機能ユニットは、類似する一連の計算をより効率的に処理することができる。従って、パイプライン化されたACSユニット502は、ACSの計算を、三つの個別のステージ、即ち、状態521によって実行される「加算」と、ステージ522によって実行される「比較」と、ステージ523によって実行される「選択」とに分けることができる。このようにして、パイプライン化されたACSユニットは、三つの異なる状態メトリックの計算の処理を同時に実行することができる。例えば、以下の演算(1)〜(3)を同時に行うことができる。(1)ステージ523が、ある状態メトリックの計算における「選択」演算を実行する、(2)ステージ522が、別の状態メトリックの計算における「比較」演算を実行する、(3)ステージ521が、更に別の状態メトリックの計算における「加算」演算を実行する。パイプライン化されていない場合、これら状態メトリックの各計算は、ユニットに入った時点からユニットを出るまで、ACSユニット全体を占有する。例えば、状態メトリックの計算において「選択」ステージを使用しているとき、他の二つのステージ「加算」及び「比較」は、使用されることなくアイドル状態のままである。従って、パイプライン化することによって、ACSユニット502の効率が大幅に向上する。
[0067]図6〜図8は、異なる数のステージに編成されたACSユニットの様々な例を示している。この場合にも同様に、説明を目的として、トレリスを処理するのにmin−sumアルゴリズムを使用することを想定する。説明を単純にするため、2状態のバイナリ符号を示してある。しかしながら、この技術分野における通常の技能を有する者には理解されるように、より複雑な符号を採用することもできる。更に、これら三つの図のそれぞれにおいては、一つのみのACSユニットを示してあるが、状態更新ユニットにおいて、複数のそのようなACSユニット(状態それぞれに一つのACSユニット)を並列に使用することができることを理解されたい。このようなACSユニットは並列に動作するので、より多くの状態を有するバイナリ符号は、ACSユニットの複数のインスタンスを備えるにすぎない。符号がバイナリではない場合、ACSユニットのそれぞれがより多くの比較を実行することができるように(バイナリ符号では一つのみのロジックが必要である)、ACSユニットそれぞれにロジックを追加することができる。
[0068]図6は、一つのみのステージに編成されている(N=1)ACSユニットのブロック図を示している。このACSは、特定の時刻インデックスにおけるトレリスでの複数の状態のうち一つの状態の状態メトリックを計算する。この例では、符号がバイナリであるので、特定の状態に至る経路が二つ存在する。従って、ACSユニットは、最初に、二つの和を形成し、各和は、元の状態の状態メトリックを、対応する遷移のブランチメトリックに加算することによって計算される。次いで、得られたメトリックを互いに比較し、小さい方のメトリックを、現在の状態の状態メトリックとして選択する。この演算は、数学的には式(3)として表現される。番号「1」が付されたボックスは、このACSユニットにおける一つのステージを特定している。元の状態メトリックは、このアルゴリズムの以前の再帰時に計算される。既存のシステムが、一般にはパイプライン化することなくACS演算全体を一つのステージ(N=1)において実行する理由は、計算におけるこの再帰性である。状態更新演算においてパイプライン化を使用することができないことにより、復号器の回路全体のパフォーマンスは制限されている。
[0069]図7は、三つのステージに編成されている(N=3)ACSユニットのブロック図を示している。図示したように、加算−比較−選択プロセスは、演算をより小さい断片に分割するための周知の方式を使用して、三つの状態にパイプライン化されている。図7においては、図6に示したものと同じACS演算が、三つのパイプライン化されたステージに分割されている。番号「1」が付されたボックスは第1のステージを特定しており、番号「2」が付されたボックスは第2のステージを特定しており、番号「3」が付されたボックスは第3のステージを特定している。ACSユニットを三つのステージに編成することによって、前述したように状態更新演算をパイプライン化することができる。例えば、図7は、図5に示した3ステージのACSユニット502,504,506,及び508のそれぞれの実施形態となり得る。
[0070]図8は、六つのステージに編成されている(N=6)ACSユニットのブロック図を示している。ここでは、処理される状態メトリックは8ビット値である。2ビット加算器をもつ三つのグループが使用されている。各グループは、「桁上げ」ラインによって互いに結合された四つの2ビット加算器によって構成されている。この場合にも、ASCユニットは、最初に二つの和を形成し、各和は、元の状態の状態メトリックを、対応する遷移のブランチメトリックに加算することによって計算される。第1のグループの2ビット加算器が、二つの和のうちの一方を計算する。第2のグループの2ビット加算器が、二つの和のうちの他方を計算する。次いで、得られた二つのメトリックを互いに比較する。この比較は、第3のグループの2ビット加算器が、減算演算を行うことによって(即ち、第1の値を第2の値の負値に加算することによって)実行する。図8に示したように、2ビット加算器のグループのそれぞれは、より細かい実行ステージに更に分割されており、これにより、ACSユニットのステージの総数が増している。最終的に、マルチプレクサ(MUX)が選択演算を実行して、得られた二つのメトリックのうちの小さい方を、現在の状態の状態メトリックとして選択する。図8に示したように、ACS演算は六つのステージに編成されている。番号「1」〜「6」が付されたボックスは、これらのステージを特定している。
[0071]図6〜図8に示したステージの数は、ACS演算を達成するために必要なサイクルの数に影響する。例えば、各ステージが完了するのに1サイクルを必要とする場合、必要なサイクルの数は、ステージの数に等しい。望ましい速度及びアーキテクチャに応じて、状態更新ユニット(例えば、ACSユニット)を任意の数のステージに分割することができる。状態更新演算の全ての実施形態(例えば、min*−sum、max−product、sum−product)は、本発明の様々な実施形態に従ってパイプライン化することができる。
V.パイプライン化された状態更新ユニットのスケジューリング
[0072]前述したように、一つの時刻インデックスにおける状態メトリックを計算するうえで、別の時刻インデックスにおける状態メトリックの計算の結果が要求されることがあるので、パイプライン化は単純には実施することができない。本発明の実施形態によれば、複数の異なる時刻インデックスにおける状態メトリックの計算をスケジューリングするシステムを採用して、そのようなデータの依存性が適切に管理されるようにする。
[0072]前述したように、一つの時刻インデックスにおける状態メトリックを計算するうえで、別の時刻インデックスにおける状態メトリックの計算の結果が要求されることがあるので、パイプライン化は単純には実施することができない。本発明の実施形態によれば、複数の異なる時刻インデックスにおける状態メトリックの計算をスケジューリングするシステムを採用して、そのようなデータの依存性が適切に管理されるようにする。
[0073]一般的に言えば、状態更新演算がN個のステージに分割されている場合、状態更新演算の結果は、Nサイクル後に利用することができ(各ステージが1サイクルにて実行されると想定している)、それまでは次の状態メトリックの計算に進むことができない。本発明の実施形態によれば、空の時間スロットを埋めるために、トレリスの別のセクションからの状態に対して状態更新演算を実行する。
[0074]ここで、状態更新演算がNステージのパイプライン(N>1)として設計されているものと想定すると、トレリスによって表されるデータブロックをM個のセクション、即ちM個のサブブロックに分割することができる。好ましい一実施形態では、MはNに等しい。別の好ましい実施形態では、サブブロックの数がNより大きい場合、MはNの整数倍数である。この場合、複数の異なるサブブロックからの状態の状態更新を、状態更新ユニットをその最大速度において使用して、パイプライン化された回路において順に処理することができる。Nサイクルの後、第1のサブブロックの次の状態メトリックが生成される。これら状態メトリックは、その特定のサブブロックに対応する第2のセットのブランチメトリックと共に、状態更新ユニットに再び入力される。次のサイクルにおいて、第2のサブブロックが終了し、その第2の計算を開始する。従って、状態メトリックの計算のそれぞれがNサイクルを要するが、この計算をM個のサブブロックについてインターレース方式において行うことができる。即ち、M個のサブブロックの全てについて、第1の状態更新を、サブブロックのいずれかの第2の状態更新を開始する前に終了しておかなければならない。一実施形態においては、通常のラウンドロビンスケジューリングアルゴリズムに従って、サブブロックに、交代しながらユニットを使用する。
[0075]サブブロック(タイル又はウィンドウとすることができる)の数MがNよりも大きい場合、ユニットが完全に利用されるよう、L個の状態計算全てについてサブブロックを終了した時点で、新しいサブブロックがパイプラインのスケジュールにおいて処理される。この場合、技術的には、サブブロックの長さを同じにする必要はないが、一般には、同じである場合に、ユニットが最適に利用されるはずである。
[0076]再び図4を参照する。この図は、パイプライン化された状態メトリック計算をスケジューリングする例を示している。この場合、状態「A」〜状態「D」の状態メトリックの計算を、一組の計算リソースを使用して実行する。時刻インデックス「1」〜「9」について、同じ組の計算リソースを使用してこれらの状態メトリックを計算する。効率を向上するために、計算リソースをパイプライン化して、二つ以上の時刻インデックスにおける状態メトリックの計算を同時に処理する。しかしながら、一つの時刻インデックスにおける状態メトリックの計算が、別のインデックスにおける状態メトリックの計算の結果に依存し得るので、即ち、計算が再帰性であり得るので、依存するデータがパイプライン化されたプロセスによって常に遅れずに生成されるよう、適切なスケジューリングを適用する。
[0077]ここで、例示のために、順方向状態メトリックのパイプライン化された計算のスケジューリングについて説明する。逆方向状態メトリックのパイプライン化された計算をスケジューリングするときには、同様の手順を逆の時間方向に使用することができる。前述したように、図4におけるトレリス400は、復号を個別に実行することのできる複数のセクション402,404,及び406に分割されている。この場合、パイプライン化された計算リソースが三つのステージ(M=3)に編成されているものと想定する。パイプライン化された計算リソースは、様々な時刻インデックスの状態メトリックを、「1」、「4」、「7」、「2」、「5」、「8」、「3」、「6」、「9」の順序にて処理するよう、使用される。この例での状態メトリック計算の順序によって、以下により詳細に説明するように、データの依存性を適切に管理することができる。
[0078]再び図5を参照する。パイプライン化された計算リソースは、パイプライン化された四つの個々の加算−比較−選択(ACS)ユニット502,504,506,及び508として実施されており、これらのユニットは並列に動作して、トレリスの時刻インデックスそれぞれにおける異なる状態の状態メトリックを計算する。具体的には、ACSユニット502は、状態「A」の状態メトリックを計算する役割を担う。ACSユニット504は、状態「B」の状態メトリックを計算する役割を担う。ACSユニット506は、状態「C」の状態メトリックを計算する役割を担う。ACSユニット508は、状態「D」の状態メトリックを計算する役割を担う。
[0079]ACSユニット502,504,506,及び508のそれぞれは、三つのステージ(N=3)に編成されている。複数の異なる時刻インデックスにおける複数の異なる状態の状態メトリックの計算が、ACSユニット502,504,506,及び508の三つのステージにおいてパイプライン化方式にて進行する。単なる一例として、複数の異なる時刻インデックスにおける状態「A」の状態メトリックを計算するための、ACSユニット502の動作について説明する。図5に示したように、復号プロセスにおける特定の瞬間において、時刻インデックス「1」における状態「A」の状態メトリック(番号「1A」を付してある)を、ACSユニット502の第3の最終のステージ(例えば、「選択」ステージ)において計算する。同時に、時刻インデックス「4」における状態「A」の状態メトリック(番号「4A」を付してある)を、ACSユニット502の第2のステージ(例えば、「比較」ステージ)において計算する。同時に、時刻インデックス「7」における状態「A」の状態メトリック(番号「7A」を付してある)を、ACSユニット502の第1のステージ(例えば、「加算」ステージ)において計算する。
[0080]この場合、パイプライン化された状態メトリック計算は、時刻インデックスの順序「1」、「4」、「7」、「2」、「5」、「8」、「3」、「6」、「9」に従ってスケジューリングされる。順方向状態メトリックの場合、時刻インデックス「2」の状態メトリックは、時刻インデックス「1」の状態メトリックに依存する。このスケジューリングでは、ACSユニット502,504,506,及び508が時刻インデックス「2」の状態メトリックの計算を開始するタイミングまでに、時刻インデックス「1」の状態メトリックが必ず利用可能である。時刻インデックス「1」の状態メトリックの計算は、時刻インデックス「2」の状態メトリックの計算よりも、三つの時刻インデックスだけ先行しており、パイプラインは三つのステージ(M=3)を備えているため、時刻インデックス「1」の結果は、時刻インデックス「2」の計算において使用されるように、パイプラインの第3の最後のステージからちょうど間に合うように出力される。このようにして、状態メトリックの計算をスケジューリングすることによって、状態メトリックの計算において存在するデータの依存性を適切に管理することができる。
[0081]従って、図5は、パイプライン化されたプロセスにおいて計算をスケジューリングする例を示しており、この例では、パイプライン化されたプロセスを使用して、第1の時刻インデックス(例えば、「1」)における状態メトリックを計算し、次いで、パイプライン化されたプロセスを使用して、第1の時刻インデックスに隣接していない一以上の非隣接時刻インデックス(例えば、「4」、「7」)における状態メトリックを、第1のインデックスにおける状態メトリックの計算の結果を使用することなく計算し、次いで、パイプライン化されたプロセスを使用して、第1の時刻インデックスに隣接している隣接時刻インデックス(「2」)における状態メトリックを、第1の時刻インデックスにおける状態メトリックの計算の結果を使用して計算している。この場合、パイプライン化されたプロセスは、ACSユニット502,504,506,及び508としてハードウェアにて実施されている。
[0082]状態更新演算をパイプライン化することにより、大きな恩恵が得られる。一つの恩恵として、トレリスベースの復号演算のハードウェア実装形態に関連する回路の速度が増し、及び/又は、回路面積が減少する。一般的に言えば、演算を、より小さいN個のセグメントに分割すると、最終的な回路は、最大でN倍だけ高速に動作することができる。従って、パイプラインが最大限に利用されるようにスケジューリングを使用する提案アーキテクチャは、パイプライン化されていない並列に動作するN個のユニットの処理速度を、パイプライン化された一つのユニットによって達成する能力を潜在的に備えている。パイプライン化により、順序ロジックは増すが、回路の組合せ部分は変化しない。従って、結果としての回路は、同じロジックをちょうどN個使用しなければならない並列のN個のユニットよりも、小さいはずである。復号器の他の部分についても容易にパイプライン化されるので、このような節減は残りの設計にも拡張される。
[0083]もう一つの大きな恩恵は、一見しただけでは明らかではないが、復号器に要求されるメモリ設計に関する。一般には、システムの統合を容易にするため、メモリは復号器と同じ速度で動作する。複数の遅いユニットを使用する場合、メモリへの複数の同時アクセスが必要であり、このため、複数の浅く広いRAMが要求される。ターボ符号及びターボライク符号の場合、問題は更に厳しいものとなる。なぜならば、これらの並列アクセスの全てが、インターリーバの共有メモリ空間へのアクセスであり、メモリアクセス時に起こる衝突を解決するための特殊なロジック(例えば、クロスバースイッチ)を採用する必要があるからである。たとえ衝突が解決されても、依然としてインターリーブパターンに大きな制約が課される。
[0084]更に、浅く広いRAMでは、同じタイプ及び同じ容量の深く狭いメモリよりも、アクセス時に要求される領域及び電力がずっと大きくなる。代わりに、より少数の高速ユニットを使用することによって、より少ない数の、より深く狭いメモリブロックを使用することができるはずであり、結果として、領域及び電力が大幅に節減される。同時に、並列メモリアクセスを調整するために要求されるロジックが少なく、インターリーバに対する制約が大幅にゆるくなる。ほとんどのASIC技術及びFPGA技術においては、複雑な状態更新演算よりも数倍高速で動作することのできるメモリソリューションが利用可能であるが、現在のところ、それらの能力を利用することができていない。本明細書に記載したアーキテクチャを使用することにより、利用可能なメモリと同じ速度でロジックを実行することができ、メモリの能力を完全に生かすことができる。
VI.結論
[0085]状態更新の計算のパイプライン化は、トレリスの複数の異なるセクションからの状態の計算をスケジューリングすることによって達成される。これにより、ウィンドウ処理及び/又はタイリングを革新的な方式にて採用して、パイプライン化された状態更新計算を容易にすることができる。ウィンドウ処理及びタイリングのコンセプトは、この技術分野において広く知られているが、本発明より以前に、トレリスベースのプロセッサ及び復号器における状態更新の再帰性によるボトルネック問題を解決する目的に採用されたことはない。
[0085]状態更新の計算のパイプライン化は、トレリスの複数の異なるセクションからの状態の計算をスケジューリングすることによって達成される。これにより、ウィンドウ処理及び/又はタイリングを革新的な方式にて採用して、パイプライン化された状態更新計算を容易にすることができる。ウィンドウ処理及びタイリングのコンセプトは、この技術分野において広く知られているが、本発明より以前に、トレリスベースのプロセッサ及び復号器における状態更新の再帰性によるボトルネック問題を解決する目的に採用されたことはない。
[0086]このように、トレリスベースの処理におけるブランチメトリック計算ステップ及びトレースバック/完了ステップのみならず、再帰的な状態更新ステップにも、効率的なパイプライン化を適用することができる。これにより、一つ以上のパイプライン化された計算ユニットを使用して、極めて高いスループットのトレリス処理を実施することができる。幾つかの遅いユニットの代わりに一つの高速ユニットを使用することの恩恵は、回路の総面積及び電力の点と、メモリ設計の点とにおいて重要である。
[0087]以上、2状態のバイナリ符号という単純な場合を想定し、min−sum実施形態を使用する具体的な例について説明した。説明を容易にするために、それほど複雑ではないトレリス構造を示した。しかしながら、より多くの状態を有する、及び/又は、構造がより複雑である別の符号、また、max−productアルゴリズム、sum−productアルゴリズム、min*−sumアルゴリズム、max*−sumアルゴリズム、又は、これらの実用的な近似といった別の復号アルゴリズム(例えば、)に、同じ原理を容易に適用することができる。
[0088]本明細書に提示した手法は、ASIC(特定用途向け集積回路)又はプログラマブルFPGA(フィールドプログラマブルゲートアレイ)といったカスタムチップの一部を形成するゲートロジックを使用してハードウェアにて実施することができる。これらの手法は、復号器、SISOプロセッサ、又はトレリスプロセッサの一部として、或いは場合によっては、これらのタイプの演算を実行する必要のある汎用プロセッサ用のハードウェアアクセラレータとして、使用することができる。
[0089]本発明を、具体的な実施形態に関連して説明してきたが、本発明の範囲は、説明した具体的な実施形態に制限されないことは、当業者には明らかであろう。従って、本明細書及び図面は、本発明を制限するものではなく、説明を目的とするものとみなされる。しかしながら、特許請求の範囲に記載されている本発明の広い概念及び範囲から逸脱することなく、追加、省略、置換、及びその他の修正を行うことができるが明らかであろう。
Claims (31)
- 複数の状態を有する有限状態機械として表すことのできるプロセスによって得られる受信信号から情報を抽出する方法であって、前記状態の間の遷移を、複数の時刻インデックスにわたるトレリスを使用して表すことができ、前記トレリスが、各時刻インデックスにおいて前記複数の状態を含んでおり、
一つの状態から別の状態への遷移に対応するブランチメトリックを、前記受信信号を考慮して計算するステップと、
各時刻インデックスにおける状態に対応する状態メトリックを、前記ブランチメトリックを考慮し、且つ、パイプライン化されたプロセスを使用することによって、計算するステップであって、前記パイプライン化されたプロセスを使用して、第1の時刻インデックスにおける状態メトリックを計算し、次いで、前記パイプライン化されたプロセスを使用して、前記第1の時刻インデックスに隣接していない一以上の非隣接時刻インデックスにおける状態メトリックを、前記第1の時刻インデックスにおける状態に対応する状態メトリックの前記計算の結果を使用せずに計算し、次いで、前記パイプライン化されたプロセスを使用して、前記第1の時刻インデックスに隣接している隣接時刻インデックスにおける状態メトリックを、前記第1の時刻インデックスにおける状態メトリックの前記計算の結果を使用して計算する、該ステップと、
前記トレリスの中の少なくとも一つの選択された経路に関連付けられている状態の状態メトリックを考慮することによって、少なくとも一つの出力を生成するステップと、
を含む方法。 - 前記トレリスを複数のセクションに分割することができ、各セクションが、より少ない数の複数の時刻インデックスにわたっており、
前記第1の時刻インデックスが、前記トレリスの第1のセクションからの時刻インデックスであり、
前記一以上の非隣接時刻インデックスが、前記トレリスの一以上の別のセクションからの時刻インデックスであり、
前記隣接時刻インデックスが、前記トレリスの前記第1のセクションからの別の時刻インデックスである、
請求項1に記載の方法。 - 前記パイプライン化されたプロセスが、前記トレリスの複数の異なるセクションからの時刻インデックスにおける状態メトリックをラウンドロビン方式にて計算するよう、使用される、請求項2に記載の方法。
- 前記パイプライン化されたプロセスがN個のステージを備えており、Nが正の整数であり、
前記トレリスがM個のセクションに分割されており、MがNに等しい正の整数である、
請求項2に記載の方法。 - 前記パイプライン化されたプロセスがN個のステージを備えており、Nが正の整数であり、
前記トレリスがM個のセクションに分割されており、MがNよりも大きい正の整数である、
請求項2に記載の方法。 - MがNの倍数である、請求項5に記載の方法。
- 前記状態メトリックの計算が、順方向状態メトリックの計算を含んでいる、請求項1に記載の方法。
- 前記状態メトリックの計算が、逆方向状態メトリックの計算を含んでいる、請求項1に記載の方法。
- 前記パイプライン化されたプロセスが、少なくとも一つの加算−比較−選択(ACS)演算を実行するように構成されている、請求項1に記載の方法。
- 前記パイプライン化されたプロセスが、ゲートロジックを使用してハードウェアにて実施されている、請求項1に記載の方法。
- 前記ゲートロジックが、特定用途向け集積回路(ASIC)設計の一部である、請求項10に記載の方法。
- 前記ゲートロジックが、超大規模集積回路(VLSI)設計の一部である、請求項10に記載の方法。
- 前記ゲートロジックが、フィールドプログラマブルゲートアレイ(FPGA)設計の一部である、請求項10に記載の方法。
- 前記ブランチメトリックの計算が、パイプライン化されたプロセスを使用して実行される、請求項1に記載の方法。
- 前記少なくとも一つの出力を生成する前記ステップが、パイプライン化されたプロセスを使用して実行される、請求項1に記載の方法。
- 複数の状態を有する有限状態機械として表すことのできるプロセスによって得られる受信信号から情報を抽出する装置であって、前記状態の間の遷移を、複数の時刻インデックスにわたるトレリスを使用して表すことができ、前記トレリスが、各時刻インデックスにおいて前記複数の状態を含んでおり、
一つの状態から別の状態への遷移に対応するブランチメトリックを、前記受信信号を考慮して計算することができるブランチメトリックユニットと、
各時刻インデックスにおける状態に対応する状態メトリックを、前記ブランチメトリックを考慮して計算することができるパイプライン化された状態更新ユニットであって、第1の時刻インデックスにおける状態メトリックを計算することができ、次いで、前記第1の時刻インデックスに隣接していない一以上の非隣接時刻インデックスにおける状態メトリックを、前記第1の時刻インデックスにおける状態に対応する状態メトリックの前記計算の結果を使用せずに計算することができ、次いで、前記第1の時刻インデックスに隣接している隣接時刻インデックスにおける状態メトリックを、前記第1の時刻インデックスにおける状態メトリックの前記計算の結果を使用して計算することができる、該パイプライン化された状態更新ユニットと、
前記トレリスの中の少なくとも一つの選択された経路に関連付けられている状態の状態メトリックを考慮することによって、少なくとも一つの出力を生成することができる出力ユニットと、
を備える装置。 - 前記トレリスを複数のセクションに分割することができ、各セクションが、より少ない数の複数の時刻インデックスにわたっており、
前記第1の時刻インデックスが、前記トレリスの第1のセクションからの時刻インデックスであり、
前記一以上の非隣接時刻インデックスが、前記トレリスの一以上の別のセクションからの時刻インデックスであり、
前記隣接時刻インデックスが、前記トレリスの前記第1のセクションからの別の時刻インデックスである
請求項16に記載の装置。 - 前記パイプライン化された状態更新ユニットが、前記トレリスの複数の異なるセクションからの時刻インデックスにおける状態メトリックをラウンドロビン方式にて計算するよう、使用される、請求項17に記載の装置。
- 前記パイプライン化された状態更新ユニットがN個のステージを備えており、Nが正の整数であり、
前記トレリスがM個のセクションに分割されており、MがNに等しい正の整数である、
請求項17に記載の装置。 - 前記パイプライン化された状態更新ユニットがN個のステージを備えており、Nが正の整数であり、
前記トレリスがM個のセクションに分割されており、MがNより大きい正の整数である、
請求項17に記載の装置。 - MがNの倍数である、請求項20に記載の装置。
- 前記状態メトリックの計算が、順方向状態メトリックの計算を含んでいる、請求項16に記載の装置。
- 前記状態メトリックの計算が、逆方向状態メトリックの計算を含んでいる、請求項16に記載の装置。
- 前記パイプライン化された状態更新ユニットが、少なくとも一つの加算−比較−選択(ACS)演算を実行するように構成されている、請求項16に記載の装置。
- 前記パイプライン化された状態更新ユニットが、ゲートロジックを使用してハードウェアにて実施されている、請求項16に記載の装置。
- 前記ゲートロジックが、特定用途向け集積回路(ASIC)設計の一部である、請求項25に記載の装置。
- 前記ゲートロジックが、超大規模集積回路(VLSI)設計の一部である、請求項25に記載の装置。
- 前記ゲートロジックが、フィールドプログラマブルゲートアレイ(FPGA)設計の一部である、請求項25に記載の装置。
- 前記ブランチメトリックユニットがパイプライン化されている、請求項16に記載の装置。
- 前記出力ユニットがパイプライン化されている、請求項16に記載の装置。
- 複数の状態を有する有限状態機械として表すことのできるプロセスによって得られる受信信号から情報を抽出するシステムであって、前記状態の間の遷移を、複数の時刻インデックスにわたるトレリスを使用して表すことができ、前記トレリスが、各時刻インデックスにおいて前記複数の状態を含んでおり、
一つの状態から別の状態への遷移に対応するブランチメトリックを、前記受信信号を考慮して計算する手段と、
各時刻インデックスにおける状態に対応する状態メトリックを、前記ブランチメトリックを考慮し、且つ、パイプライン化されたプロセスを使用することによって、計算する手段であって、前記パイプライン化されたプロセスを使用して、第1の時刻インデックスにおける状態メトリックを計算し、次いで、前記パイプライン化されたプロセスを使用して、前記第1の時刻インデックスに隣接していない一以上の非隣接時刻インデックスにおける状態メトリックを、前記第1の時刻インデックスにおける状態に対応する状態メトリックの前記計算の結果を使用せずに計算し、次いで、前記パイプライン化されたプロセスを使用して、前記第1の時刻インデックスに隣接している隣接時刻インデックスにおける状態メトリックを、前記第1の時刻インデックスにおける状態メトリックの前記計算の結果を使用して計算する、該手段と、
前記トレリスの中の少なくとも一つの選択された経路に関連付けられている状態の状態メトリックを考慮することによって、少なくとも一つの出力を生成する手段と、
を備えるシステム。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/396,348 US7698624B2 (en) | 2006-03-31 | 2006-03-31 | Scheduling pipelined state update for high-speed trellis processing |
PCT/US2007/064843 WO2007117965A1 (en) | 2006-03-31 | 2007-03-23 | Scheduling pipelined state update for high-speed trellis processing |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2009532952A true JP2009532952A (ja) | 2009-09-10 |
Family
ID=38289420
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2009503186A Pending JP2009532952A (ja) | 2006-03-31 | 2007-03-23 | トレリスを高速処理するためのパイプライン化された状態更新のスケジューリング |
Country Status (5)
Country | Link |
---|---|
US (1) | US7698624B2 (ja) |
EP (1) | EP2005597A1 (ja) |
JP (1) | JP2009532952A (ja) |
KR (1) | KR20090008303A (ja) |
WO (1) | WO2007117965A1 (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2007071192A1 (en) * | 2005-12-22 | 2007-06-28 | Triductor Technology (Suzhou) Inc. | A four-stage pipeline based vdsl2 viterbi decoder |
WO2017120619A1 (en) * | 2016-01-07 | 2017-07-13 | Russell David Wayne | Architecture and method of a flexible pipeline processor |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5530707A (en) * | 1994-03-09 | 1996-06-25 | At&T Corp. | Area-efficient decoders for rate-k/n convolutional codes and other high rate trellis codes |
US5933462A (en) * | 1996-11-06 | 1999-08-03 | Qualcomm Incorporated | Soft decision output decoder for decoding convolutionally encoded codewords |
US6754290B1 (en) | 1999-03-31 | 2004-06-22 | Qualcomm Incorporated | Highly parallel map decoder |
US6980605B2 (en) * | 2000-01-31 | 2005-12-27 | Alan Gatherer | MAP decoding with parallelized sliding window processing |
US7020831B2 (en) * | 2002-12-13 | 2006-03-28 | Broadcom Corporation | Pipelined add-compare-select circuits and methods, and applications thereof |
GB2403111B (en) * | 2003-06-12 | 2005-12-28 | Arithmatica Ltd | A maximum likelihood detector and/or decoder |
US7308640B2 (en) * | 2003-08-19 | 2007-12-11 | Leanics Corporation | Low-latency architectures for high-throughput Viterbi decoders |
-
2006
- 2006-03-31 US US11/396,348 patent/US7698624B2/en active Active
-
2007
- 2007-03-23 JP JP2009503186A patent/JP2009532952A/ja active Pending
- 2007-03-23 WO PCT/US2007/064843 patent/WO2007117965A1/en active Application Filing
- 2007-03-23 KR KR1020087026562A patent/KR20090008303A/ko not_active Application Discontinuation
- 2007-03-23 EP EP07759300A patent/EP2005597A1/en not_active Withdrawn
Also Published As
Publication number | Publication date |
---|---|
US20070234187A1 (en) | 2007-10-04 |
US7698624B2 (en) | 2010-04-13 |
EP2005597A1 (en) | 2008-12-24 |
KR20090008303A (ko) | 2009-01-21 |
WO2007117965A1 (en) | 2007-10-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3640924B2 (ja) | 移動通信システムにおける構成復号装置及び方法 | |
KR101323444B1 (ko) | 반복적 디코더 및 반복적 디코딩 방법 | |
US7908542B2 (en) | Method of and apparatus for implementing a reconfigurable trellis-type decoding | |
JP4227481B2 (ja) | 復号装置および復号方法 | |
EP2339757B1 (en) | Power-reduced preliminary decoded bits in viterbi decoder | |
US20070113161A1 (en) | Cascaded radix architecture for high-speed viterbi decoder | |
Gang et al. | An efficient pre-traceback architecture for the Viterbi decoder targeting wireless communication applications | |
Lee et al. | A new architecture for the fast Viterbi algorithm | |
Kong et al. | Low-latency architectures for high-throughput rate Viterbi decoders | |
US20050060633A1 (en) | Low-latency architectures for high-throughput viterbi decoders | |
US7698624B2 (en) | Scheduling pipelined state update for high-speed trellis processing | |
Cholan | Design and implementation of low power high speed Viterbi decoder | |
CN106209117B (zh) | 一种低资源消耗的多参数可配置Viterbi译码器 | |
Mandwale et al. | Implementation of High Speed Viterbi Decoder using FPGA | |
US7120851B2 (en) | Recursive decoder for switching between normalized and non-normalized probability estimates | |
Liu et al. | Low-latency low-complexity architectures for Viterbi decoders | |
JP3892471B2 (ja) | 復号方法 | |
Ang et al. | SOVA based LTE turbo decoders | |
JP2006115534A5 (ja) | ||
Véstias | High-Speed Viterbi Decoder | |
Sukhavasi et al. | Performance evaluation of turbo codes using hard decision viterbi algorithm in VHDL | |
Liu et al. | Minimal complexity low-latency architectures for Viterbi decoders | |
Véstias | Viterbi Decoder in Hardware | |
Bokolamulla et al. | Low-complexity iterative detection based on bi-directional trellis search | |
Werling | A Hardware Implementation of the Soft Output Viterbi Algorithm for Serially Concatenated Convolutional Codes |