本発明は様々な修正および代替の形態が可能であるが、その特定の実施形態は図面における例によって示され、本明細書において詳細に説明される。ただし、図面および詳細な説明は、本発明を開示の特定の形態に限定する意図はないが、一方、添付の特許請求の範囲によって定義される本発明の精神および範囲内のすべての修正、同等物、および代替物を網羅することを意図する。
参考例としての引用
米国特許番号第7,415,594(2008年8月19日発行、2003年6月24日出願、名称:「Processing System With Interspersed Stall Propagating Processors And Communication Elements」、発明者M.B.Doerr等)」を参照し、その内容全体を本明細書に参照として組み入れる。上記’594特許は、本発明のいくつかの実施形態を実装するために使用可能な、本明細書において時折「HyperX」アーキテクチャとよばれるマルチプロセッサアーキテクチャについて記載する。
以下は、本明細書において使用される略語の一覧である。
BER ビットエラー率
CPM 連続位相変調
DFE 決定フィードバック等化
DMR データメモリ/ルーティングユニット
DBPSK 差動位相変調方式
DEC デコーダ
EQ/D 等化/変調器
FIR 有限インパルス応答
kb/s キロバイト/秒
LLR 対数尤度比
LUT ルックアップテーブル
MAP 帰納的最大確率(MaximumA−Posteriori Probability)
Mb/s メガビット/秒
MPM メッセージパッシング法
MSK 最小偏移変調
PE 処理要素
QBL−MSK 準帯域制限MKS
SISO ソフト入力/ソフト出力
SLICE 兵士のレベルの統合通信環境(Soldier−Level Integrated Communications Environment)
SNR S/N比
SRW 兵士の無線の波形(Soldier Radio Waveform)
本発明の様々な実施形態は、受信信号に対するトレリスベースの処理を実行して、受信信号の復調、復号化、および/または等化を実現するためのシステムおよび方法に関する。例えば、本発明の実施形態は、とりわけ、ビタビ復号化、ビタビ等化、ターボ復号化、ターボ等化などのトレリスベースの方法に対して使用できる。
トレリスベースの各方法は、その構成処理ブロック(例えば復調器やデコーダ、等化器)が、意図的にエンコーダによって、または偶発的に通信チャンネルによって導入された冗長性に関して説明される点で関連している。この冗長性は、ビットが送信機で符号化される方法、またはチャンネル応答を示すタップ付き遅延線の出力で受信されたサンプル間の相互関係に基づくトレリスに関して説明される。
ビタビ復号化はトレリスベースの復号化の一般的方法であって、送信機における畳込み符号化と組み合わせて使用される。畳込み符号化は、送信シンボルストリームに冗長性を意図的に加える際に使用される。
ビタビ等化は、チャンネル誘発の冗長性に基づいたシンボル検出の方法である。ビタビ等化は、受信シンボルと基準コンステレーションとの間の差異計量を最小化しようとするものである。この場合、基準コンステレーション中の各点は、推定チャンネル応答より求められる。ビタビ等化は、線形等化または決定フィードバック等化(DFE)の方法が問題であるか、または計算困難である状況において実行可能である。
反復的(ターボとも呼ばれる)方法は、インループ構造を構成する2つ以上のトレリスベースのユニットを用いて、トレリスベースのアプローチ上に構築される。この場合、各ユニットは復調器またはデコーダである。(例えば、ターボ復号化は、2つのデコーダを用いてもよい。ターボ等化は、1つの復調器および1つのデコーダを用いてもよい。)これらのユニットは、反復的ループにおいて「ソフト」信頼性推定を交換して、エラー確率を最小限に抑える。反復的方法は、低デシベルのシャノン限界内での処理を実現するために使用されており、それによって複数の反復というさらなる複雑性は正当化されてきた。
1組の実施形態において、演算方法10は、図1Aに示されるような動作を含んでもよい。
15において、シンボルデータシーケンスYがチャンネルから受信される。このシンボルデータシーケンスYは、送信機によってチャンネル上に送出されたシンボルデータシーケンスXに対応する。シンボルデータシーケンスYは、シンボルデータシーケンスXでノイズを含むものや、チャンネル歪曲されたものである。(例えば、チャンネルは、マルチパスなどの歪を発生させる場合がある。)シンボルデータシーケンスXは、関連情報ビットに基づいて送信機によって生成される。例えば、送信機は、関連情報ビットに対して畳込み符号化を実行してシンボルデータシーケンスXを生成してもよい。別の例として、送信機は、関連情報ビット(または関連情報ビット群)をシンボル組、すなわち、コンステレーション中のシンボルにマッピングすることによって、シンボルデータシーケンスXを生成してもよい。
20において、2つ以上のプロセッサからなる第1の組は、シンボルデータシーケンスYの2つ以上の重複サブシーケンスに対して並行して動作を行う。シンボルデータシーケンスYの2つ以上の重複サブシーケンスのそれぞれは、第1のトレリスの各部に対応する。(トレリスの各部は、サブシーケンスの重複と同様に重複してもよい)。第1のトレリスは、シンボルデータシーケンスYにおける冗長性を示し、例えば、シンボルデータシーケンスにおける冗長性を表す構造を有する。この並行動作を実行することによって、関連情報ビットに対する軟推定が生成される。
第1の組のプロセッサのうちの各プロセッサは、シンボルデータシーケンスYの重複サブシーケンスの対応するものに基づいて、軟推定の対応サブシーケンスを生成してもよい。図に示すように、各プロセッサは、対応シンボルデータサブシーケンスに対して動作を行って、第1のトレリスの各部に対してトレリスデータ値を生成し、トレリスデータ値のサブセットに基づく軟推定の対応サブシーケンスを生成してもよい。(例えば、ビタビ復号化またはビタビ等化の場合、トレリスデータ値は、ブランチメトリックおよびパスメトリックを含んでもよい。ターボ復号化またはターボ等化の場合、トレリスデータ値は、フォワード走査において演算されたアルファ値と、バックワード走査において演算されたベータ値とを含んでもよい)。サブセット以外のトレリスデータ値は捨ててもよい。すなわち、いずれの軟推定の生成にも使用しなくてもよい。例えば、シンボルデータサブシーケンスと、近接(左右)シンボルデータサブシーケンスとの間の重複部分に対応するトレリスデータ値は捨ててもよい。別の例として、シンボルデータサブシーケンスと、左隣のシンボルデータサブシーケンスとの間の重複部分に対応するトレリスデータ値は捨ててもよい。
「重複サブシーケンス」は、近接サブシーケンスと少なくとも部分的に重複した各サブシーケンスを意味しており、他のすべてのサブシーケンスと重複したサブシーケンスを意味するものではない。(なお、サブシーケンスのうちの最初のサブシーケンスは右側にのみ近接サブシーケンスがあり、最後のサブシーケンスは右側にのみ近接サブシーケンスがあることになる。したがって、最初のサブシーケンスは右端に重複部分があり、最後のサブシーケンスは左端に重複部分があることになる)。
第1の組のプロセッサのうちの各プロセッサは、シンボルデータシーケンスYの2つ以上のサブシーケンスのうちの対応する一方に対して処理を行う。ただし、その他の実施形態も検討されている。例えば、いくつかの実施形態において、各プロセッサは、2つ以上のサブシーケンスに対して処理を行う。その他の実施形態において、各サブシーケンスは、2つ以上の第1の組のプロセッサによって処理される。
上述したように、シンボルデータシーケンスの2つ以上の重複サブシーケンスのそれぞれは、第1のトレリスの各部に対応する。トレリスの各部は、シンボルデータシーケンスYの対応サブシーケンスと同様に重複してもよい。第1の組のプロセッサのうちの各プロセッサは、第1のトレリスの対応部分と同形および同一構造のミニトレリスを保持し、ミニトレリスを用いてシンボルデータシーケンスYの対応サブシーケンスに対して処理を行う。したがって、各プロセッサは、それぞれのサブシーケンスに対して処理を行う際に互いに干渉しない。
上述のように、並行動作を実行することによって、関連情報ビットに対する軟推定が生成される。いくつかの実施形態において、この軟推定は、関連情報ビットに対応する受信メッセージを形成するために使用される(または使用可能である)。例えば、この軟推定に対してハードリミッティングを行って関連情報ビットに対する硬推定を生成してもよい。いくつかの実施形態において、この硬推定をさらに処理して、受信メッセージを生成してもよい。この受信メッセージは、音声やデータ、映像出力など、ユーザに対する出力を生成するために使用してもよい。また、受信メッセージは、将来的なアクセスまたは送信にそなえて保存されてもよい。
いくつかの実施形態において、2つ以上のプロセッサからなる第1の組は、プロセッサ列から選択される。この場合、プロセッサ列のプロセッサは相互接続されて、平面格子を形成する。例えば、Hyper−Xアーキテクチャにしたがって構成された列などである。いくつかの実施形態において、プロセッサ列のうちの各プロセッサは、演算動作、論理動作、ビット操作動作などの基本動作を含む命令セットからの命令を実行するように構成される。いくつかの実施形態において、プロセッサ列の各プロセッサは、動的にプログラム可能である。
いくつかの実施形態において、前記方法10は、複数の受信シンボルデータシーケンスのそれぞれに対して(a)および(b)を実行することも含んでもよい。さらに、シンボルデータシーケンスの2つ以上の重複サブシーケンスの数は、複数の受信シンボルデータシーケンスのうちの少なくとも1つに対して調整されてもよい。一実施形態において、シンボルデータシーケンスの2つ以上の重複サブシーケンスの数を調整する動作は、受信シンボルデータシーケンスの長さに基づいて実行される。例えば、サブシーケンスの長さが比較的一定となるように数を調整してもよい。したがって、シンボルデータシーケンスが長いと、短いシンボルデータシーケンスよりも生成されるサブシーケンスの数が多くなる。
いくつかの実施形態において、前記方法10は、複数の受信シンボルデータシーケンスのうちの少なくとも1つに対して、シンボルデータシーケンスの2つ以上の重複サブシーケンス間の重複量を調整することも含んでよい。例えば、S/N比が高い場合、重複量は小さい。しかしながら、S/N比が下がると、重複量は増加する。
いくつかの実施形態において、シンボルデータシーケンスXは送信機における関連情報ビットの畳込み符号化に基づいて生成される。第1のトレリスは畳込み符号化に基づく構造を有する。畳込み符号化は、1より小さい率を有する。トレリスは、畳込み符号化に起因してシンボルデータシーケンスに存在する冗長性を表す。シンボルデータシーケンスの2つ以上の重複サブシーケンスに対して2つ以上のプロセッサからなる第1の組が並行して実行する上述の動作は、シンボルデータシーケンスの2つ以上の重複サブシーケンスに対して復号化処理を並行して実行して、シンボルデータシーケンスの2つ以上の重複サブシーケンスのそれぞれのビタビ復号化を実現することを含んでもよい。
この並列復号化処理において、第1の組のプロセッサのうちの各プロセッサが第1のトレリスの対応部分を走査して、シンボルデータシーケンスのうちの2つ以上のサブシーケンスの対応する1つに基づいてブランチメトリックおよびパスメトリックを演算する。(ブランチメトリックは、トレリス部分における各エッジに対して算出されてもよい。パスメトリックは、トレリス部分の各ノードにおける追加−比較−選択動作を用いて算出されてもよい)。走査後、第1の組のプロセッサのうちの各プロセッサは、関連情報ビットの軟推定の対応サブシーケンスを再生するために、トレースバック処理を実行してもよい。トレースバック処理は、対応するトレリス部分の終端から始端までサバイバーパス(最小パスメトリックのパス)を探すことを含む。サバイバーパスの最初の部分は捨ててもよい。すなわち、軟推定の対応サブシーケンスを生成するために使用されない。最初の部分は、シンボルデータサブシーケンスとその前のシンボルデータサブシーケンスとの重複に対応する部分である場合がある(すなわち、サバイバーパスを算出するために使用されるもの)。
いくつかの実施形態において、第1のトレリスは、シンボルデータシーケンスYとシンボルデータシーケンスXとの所与の線形関係に基づいた構造を有する。例えば、シンボルデータシーケンスXとシンボルデータシーケンスとの間に介在する有効チャンネルの既知のインパルス応答に基づく。(なお、この有効チャンネルは、物理チャンネルに加えて、送信機および受信機にフィルタ構造を含んでもよい)。第1のトレリスは、有効チャンネルに起因して受信シンボルデータシーケンスに存在する冗長性を表す。シンボルデータシーケンスの2つ以上の重複サブシーケンスに対して2つ以上のプロセッサからなる第1の組が並行して実行する上述の動作は、シンボルデータシーケンスの2つ以上の重複サブシーケンスに対して復調処理を並行して実行し、シンボルデータシーケンスの2つ以上の重複サブシーケンスのそれぞれのビタビ等化を実現することを含んでもよい。
この並列復調処理において、第1の組のプロセッサのうちの各プロセッサが第1のトレリスの対応部分を走査して、シンボルデータシーケンスのうちの2つ以上のサブシーケンスの対応する1つに基づいてブランチメトリックおよびパスメトリックを演算する。(ブランチメトリックは、トレリス部分における各エッジに対して算出されてもよい。パスメトリックは、トレリス部分の各ノードにおける追加−比較−選択動作を用いて算出されてもよい)。走査後、第1の組のプロセッサのうちの各プロセッサは、関連情報ビットの軟推定の対応サブシーケンスを再生するために、トレースバック処理を実行してもよい。トレースバック処理は、対応するトレリス部分の終端から始端までサバイバーパス(最小パスメトリックのパス)を探すことを含む。サバイバーパスの最初の部分は捨ててもよい。すなわち、軟推定の対応サブシーケンスを生成するために使用されない。最初の部分は、シンボルデータサブシーケンスとその前のシンボルデータサブシーケンスとの重複に対応する部分である場合がある(すなわち、サバイバーパスを算出するために使用されるもの)。
方法10のいくつかの実施形態において、送信機は、元の情報ビットの畳込み符号化によって符号化ビットを得て、その符号化ビットをインターリーブすることによって関連情報ビットを生成するものとする。そのような一実施形態を図1Bに示す。この実施形態において、前記方法は、畳込み符号化の復号化を処理する処理25を含む。処理20は、2つ以上のプロセッサからなる第1の組がフィードバックシーケンスの2つ以上の各重複サブシーケンスを用いてシンボルデータシーケンスの2つ以上の重複サブシーケンスに対して並行して動作することを含む。このフィードバックシーケンスは、処理25によって生成された、符号化ビットに対する軟推定をインターリーブしたものである。処理20のインターリーブしたものは、フィードバック情報とともにシンボルデータシーケンスを用い、図1Bでは20’とする。
処理25において、2つ以上のプロセッサからなる第2の組は、関連情報ビットの軟推定をデインターリーブしたものの2つ以上の重複サブシーケンスに対して並行して動作する。この場合、デインターリーブしたものの2つ以上の重複サブシーケンスのそれぞれは、第2のトレリスの各部に対応する。第2のトレリスは、畳込み符号化に対応する構造を有してもよい。デインターリーブしたものの2つ以上の重複サブシーケンスに対して並行して動作することによって、符号化ビットに対する軟推定が生成される。
第2の組の2つ以上のプロセッサのそれぞれは、デインターリーブしたものの2つ以上の重複サブシーケンスの対応する1つに対して動作してもよい。いくつかの実施形態において、デインターリーブしたものの重複サブシーケンスの数は、シンボルデータシーケンスの重複サブシーケンスの数に等しい。ただし、代替の実施形態において、それらの数は異なる。
前記方法10は、図1Bの27に示すように、例えば反復条件が満たされるまで、処理20’および処理25を複数回繰り返すことを含んでもよい。様々な終了条件のいずれもが考えられる。例えば、一実施形態において、処理20’と処理25とは、所定回数繰り返されてもよい。別の実施形態において、反復は、軟推定の信頼性に基づいた条件が満たされるまで継続してもよい。例えば、反復は、関連情報ビットの大部分またはすべての軟推定や符号化ビットの軟推定の信頼性が所与の閾値を超えるまで継続してもよい。一実施形態において、k番目のビットに対する所与の軟推定の信頼性は、以下の式によって算出してもよい。
ここで、S
Rは受信シンボルを示し、S
Tは送信参照シンボル、σ
2はノイズ分散である。最初の非発散項における加算は、b(k)=1の場合に、送信参照シンボルの組に対して演算される。第2の非発散項における加算は、b(k)=0の場合に、送信参照シンボルの組に対して演算される。
前記方法10は、例えば、2つ以上のプロセッサからなる第1の組が処理20’の最後の反復を終了した後などに、2つ以上のプロセッサからなる第2の組が関連情報ビットに対する軟推定のデインターリーブしたものの2つ以上の重複サブシーケンスに対して並行して動作して、元の情報ビットに対する軟推定を生成することを含んでもよい。
いくつかの実施形態において、処理20’は復調処理を表し、処理25は復号化処理を表し、処理20’および処理25の反復は、シンボルデータシーケンスのターボ等化を実現する。
いくつかの実施形態において、処理20’は第1の復号化処理を表し、処理25は第2の復号化処理を表し、処理20’および処理25の反復は、シンボルデータシーケンスのターボ復号化を実現する。
いくつかの実施形態において、前記方法10は、元の情報ビットの軟推定に基づいた受信メッセージの形成を含んでもよい。受信メッセージは出力信号を生成するために使用してもよく、出力信号はスピーカや表示画面などの出力装置を駆動するために使用されてもよい。
図1Bの前記方法は、複数の受信シンボルデータシーケンスのそれぞれに対して実行されてもよい。いくつかの実施形態において、第1の組のプロセッサの数は、複数の受信シンボルデータシーケンスのうちの少なくとも1つに対して調整されてもよい。例えば、受信シンボルデータシーケンスの長さが変わると、シンボルデータシーケンス毎の重複サブシーケンスの数もそれに応じて変化して、例えば、各サブシーケンスの長さを比較的一定に保ってもよい。第1の組のプロセッサの数は、重複サブシーケンスの数に等しく設定してもよい。
上述のように、図1Bの前記方法は、複数の受信シンボルデータシーケンスのそれぞれに対して実行してもよい。いくつかの実施形態において、第2の組のプロセッサの数は、複数の受信シンボルデータシーケンスのうちの少なくとも1つに対して調整してもよい。例えば、現在のシンボルデータシーケンスの長さを前のシンボルデータシーケンスと比べて変化した場合に、そのプロセッサの数を調整してもよい。処理されているサブシーケンス、すなわち、デインターリーブしたもののサブシーケンスに対する長さを比較的一定に保つために、第2の組のプロセッサの数を更新してもよい(例えば、継続的に更新してもよい)。
いくつかの実施形態において、シンボルデータシーケンスYの2つ以上の重複サブシーケンスの数は、受信シンボルデータシーケンスの少なくとも1つに対して調整されてもよい。(関連情報ビットの軟推定の)デインターリーブしたものの2つ以上の重複サブシーケンスの数は、受信シンボルデータシーケンスの少なくとも1つに対して調整されてもよい。例えば、一実施形態において、受信データシーケンスの現在の1つの長さを受信データシーケンスの前の1つと比べて変化した場合に、その両方の数を調整してもよい。
いくつかの実施形態において、前記シンボルデータシーケンスYの2つ以上の重複サブシーケンス間の重複量は、例えばS/N比の変化に応じて調整してもよい。前記方法は、S/N比の時間の経過にともなった追跡を含んでもよい。それによって、現在の受信シンボルデータシーケンスに対する予測S/N比に基づいて、重複量を調整できる。
一実施形態において、シンボルデータシーケンスの2つ以上の重複サブシーケンス間の重複量の調整は、処理20’および処理25の前記複数の反復の少なくとも1つに対して実行される。例えば、(処理20’および処理25の前記複数の反復のうちの)現在完了している反復の数に応じて、重複量を減少させてもよい。
いくつかの実施形態において、例えば、処理20’および処理25の複数の反復のうちの少なくとも1つに対して、(関連情報ビットの軟推定の)デインターリーブしたものの2つ以上の重複サブシーケンス間の重複量を調整してもよい。例えば、(処理20’および処理25の前記複数の反復のうちの)現在完了している反復の数に応じて、重複量を減少させてもよい。
いくつかの実施形態において、シンボルデータシーケンスYの2つ以上の重複サブシーケンスの重複量は調整されてもよい。(関連情報ビットの軟推定の)デインターリーブしたものの2つ以上の重複サブシーケンス間の重複量は調整されてもよい。例えば、一実施形態において、前記シンボルデータシーケンスの2つ以上の重複サブシーケンス間の重複量の調整は、処理20’および処理25の前記複数の反復の少なくとも1つに対して実行される。デインターリーブしたものの2つ以上の重複サブシーケンス間の重複量の調整は、処理20’および処理25の前記複数の反復の少なくとも1つに対して実行される。
いくつかの実施形態において、近接サブシーケンス間の重複量は、生成されている軟推定の信頼性に基づいて調整されてもよい(すなわち、関連情報ビットに対する軟推定および符号化ビットに対する軟推定)。例えば、一実施形態によれば、全信頼性(または一部)が1/4より大きくなるまで、この重複量をまずL1に設定してL1で維持し、その後重複量をL2に設定してもよい。全信頼性(または一部)が1/2より大きくなるまで、この重複量はL2を維持し、その後重複量はL3に設定される。全信頼性(または一部)が3/4より大きくなるまで、この重複量はL3を維持し、その後処理20’および処理25の反復は停止される。値L1、L2およびL3はL1>L2>L3>0となるように選択される。それによって、重複量は3つの閾値を使用した制御スケジュールにしたがって調整される。重複量に対する様々な値の組み合わせ、閾値数、閾値とともに、様々な類似の実施形態が考えられる。
いくつかの実施形態において、シンボルデータシーケンスYの2つ以上のサブシーケンスの少なくとも1つはフォワード収束領域を含む。(例えば、一実施形態において、サブシーケンスのうちの最初のサブシーケンスを除くサブシーケンスのそれぞれは、対応するフォワード収束領域を含む)。処理20’は、第1の組のプロセッサのうちの各プロセッサが第1のトレリスの対応部分に対してフォワードトレリス走査を実行して、第1のトレリスの対応部分の各時間ステップにおける(すなわち、シンボルデータシーケンスYの対応サブシーケンス内の時間ステップにおける)フォワード走査値を得ることを含んでもよい。フォワード収束領域は、フォワードトレリス走査において収束を得るために使用される。
フォワード走査において、ある時間ステップにおけるフォワード走査値は、次の時間ステップにおけるフォワード走査値を演算するために使用される。このフォワード収束領域上でのフォワード走査値は、時間ステップ指数が増加するとともに収束する(すなわち、良好になる)と見なされる。(この値は、フォワード収束領域の始端より終端に向かって良好となる)。フォワード収束領域後のフォワード走査値は満足のゆく品質であると見なされ、関連情報ビットに対する軟推定を演算するために使用されてもよい。ただし、フォワード収束領域上のフォワード走査値は捨ててもよい。すなわち、軟推定を演算するためには使用されない。
いくつかの実施形態において、処理20’および処理25の複数の反復のうちの現在完了している反復の数に応じて、フォワード収束領域の長さは減少させてもよい。
いくつかの実施形態において、シンボルデータシーケンスの2つ以上のサブシーケンスの少なくとも1つはバックワード収束領域を含む。(例えば、一実施形態において、サブシーケンスのうちの最後のサブシーケンスを除くサブシーケンスのそれぞれは、対応するバックワード収束領域を含む)。処理20’は、第1の組のプロセッサのうちの各プロセッサが第1のトレリスの対応部分に対してバックワードトレリス走査を実行して、第1のトレリスの対応部分の各時間指数における(すなわち、シンボルデータシーケンスYの対応サブシーケンス内の時間ステップにおける)バックワード走査値を得ることを含んでもよい。バックワード収束領域は、バックワードトレリス走査において収束を得るために使用される。
バックワード走査において、時間指数のある値におけるバックワード走査値は、時間指数の次に小さな値におけるバックワード走査値を演算するために使用される。このバックワード収束領域上でのバックワード走査値は、時間指数が減少するとともに収束する(すなわち、良好になる)と見なされる。バックワード収束領域後(左側)のバックワード走査値は満足のゆく品質であると見なされ、関連情報ビットに対する軟推定を演算するために使用されてもよい。ただし、バックワード収束領域上のバックワード走査値は捨ててもよい。すなわち、軟推定を演算するためには使用されない。
いくつかの実施形態において、処理20’および処理25の前記複数の反復のうちの現在完了している反復の数に応じて、バックワード収束領域の長さは減少させてもよい
いくつかの実施形態において、処理20’は、関連情報ビットに関する内部情報および外部情報の生成を含む。第1の組の各プロセッサは、内部情報と外部情報との混合情報に基づいて関連情報ビットに対する軟推定を生成する。処理20’および処理25の複数回の反復のうちの現在完了している反復の数に応じて、混合情報に含まれる内部情報の量は増加させる。例えば、混合情報は初めのいくつかの反復に対して外部情報のみを含み、以降の反復に対しては、例えば、線形スケジュールまたは何らかの非線形スケジュール(例えば、多項式関数に基づく)にしたがって、その後徐々に内部情報を混合情報に加えてもよい。
いくつかの実施形態において、処理25は、符号化ビットに関する内部情報および外部情報の生成を含む。第2の組の各プロセッサは、内部情報と外部情報との混合情報に基づいて符号化ビットに対する軟推定を生成する。処理20’および処理25の複数の反復のうちの現在完了している反復の数に応じて、混合情報に含まれる内部情報の量は増加させる。例えば、混合情報は初めのいくつかの反復に対して外部情報のみを含み、以降の反復に対しては、例えば、線形スケジュールまたは何らかの非線形スケジュール(例えば、多項式関数に基づく)にしたがって、その後徐々に内部情報を混合情報に加えてもよい。
いくつかの実施形態において、関連情報ビットの軟推定をデインターリーブしたものを、関連情報ビットの軟推定に対してデパンクチャおよびデインターリーブを実行することによって生成してもよい。このデパンクチャは、あらかじめ演算された値を出力シーケンスのパンクチャ位置に投入することを含む。あらかじめ演算された値は、処理25の前の反復において第2の組のプロセッサによって演算された符号化ビットに対する軟推定のうちで指定されたものである。出力シーケンスは、その後デインターリーブされて、関連情報ビットの軟推定をデインターリーブしたものを生成する。このデインターリーブおよびデパンクチャは、1つ以上のプロセッサからなる第3の組によって実行されてもよい。
いくつかの実施形態において、処理20’は、第1の組のプロセッサのうちの各プロセッサが第1のトレリスの対応部分を介して、フォワードパスおよびバックワードパスを実行することを含む。第1の組のプロセッサの所与の(任意または各)プロセッサに対して、フォワードパスは、所与のシンボル位置におけるアルファベクトル(上記で「フォワード走査値」と呼ばれる)を算出し、アルファベクトルが零ベクトルに等しいという判断に応じてベクトルEに等しいアルファベクトルを設定することを含む。ここで、ベクトルEの全成分は小さな正の数、すなわち値1/Nstatesと等しい。Nstatesとは、時間指数のある所与の値におけるトレリスの数である。算出されたベータベクトルが零ベクトルに等しい場合は、同様の方法をバックワードパスにおいても使用可能である。(「パス」とは、「走査」の同義語として本明細書では使用されている)。
いくつかの実施形態において、処理25’は、第2の組のプロセッサのうちの各プロセッサが第2のトレリスの対応部分を介して、フォワードパスおよびバックワードパスを実行することを含む。第2の組のプロセッサの所与の(任意または各)プロセッサに対して、フォワードパスは、所与のデータ位置におけるアルファベクトルを算出し、アルファベクトルが零ベクトルに等しいという判断に応じてベクトルEに等しいアルファベクトルを設定することを含む。ここで、ベクトルEの全成分は小さな正の数と等しい。算出されたベータベクトルが零ベクトルに等しい場合は、同様の方法をバックワードパスにおいても使用可能である。
いくつかの実施形態において、2つ以上のプロセッサからなる第1の組は、2つ以上のプロセッサからなる第2の組と同一である。そのような一実施形態において、処理20’の各反復は、第1のプログラムコードを、第1の組のプロセッサのうちの各プロセッサの命令メモリに読み込むことを含む。処理25の各反復は、第2のプログラムコードを、第1の組のプロセッサのうちの各プロセッサの命令メモリに読み込むことを含む。第1のプログラムコードは、第1の組の各プロセッサによって実行されると、プロセッサに、シンボルデータシーケンスYの対応サブシーケンスおよび符号化ビットに対する軟推定をインターリーブしたものの対応サブシーケンスに対してフォワード/バックワードアルゴリズムを実行させる。第2のプログラムコードは、第1の組の各プロセッサによって実行されると、プロセッサに、関連情報ビットに対する軟推定をデインターリーブしたものの対応サブシーケンスに対してフォワード/バックワードアルゴリズムを実行させる。したがって、この実施形態において、命令メモリに対して、第1のプログラムコードと第2のプログラムコードとが交互に読み込まれる。各プロセッサの命令メモリが両プログラムを一度に読み込むには容量が小さい場合に、この実施形態を使用してもよい。
1組の実施形態において、システムは、チャンネルから受信したシンボルデータシーケンスYを処理するために、以下のように構成されてもよい。この場合、シンボルデータシーケンスYは、送信機によってチャンネル上に送出されたシンボルデータシーケンスXに対応する。ここで、シンボルデータシーケンスXは、関連情報ビットに基づいて送信機によって生成される。前記システムは、それぞれ第1のプログラムコードで構成された2つ以上のプロセッサからなる第1の組を含んでもよい。この場合、第1のプログラムコードは、第1の組のプロセッサによって実行されると、第1の組のプロセッサに、シンボルデータシーケンスYの2つ以上の重複サブシーケンスを並行して処理(a)させる。ここで、シンボルデータシーケンスYの2つ以上の重複サブシーケンスのそれぞれは、第1のトレリスの各部に対応する。第1のトレリスは、シンボルデータシーケンスYにおける冗長性を示す。この並行動作によって、関連情報ビットに対する軟推定が生成される。この軟推定を使用して、関連情報ビットに対応する受信メッセージを形成できる。
第1の組のプロセッサのうちの各プロセッサは、対応する命令メモリと、命令メモリに格納されたプログラム命令を実行するための回路リソースとを含む。したがって、各プロセッサは、プログラム可能なプロセッサである。
いくつかの実施形態において、2つ以上のプロセッサからなる第1の組は、プロセッサ列から選択される。この場合、プロセッサ列のプロセッサは相互接続されて、平面格子を形成する。同様に、2つ以上のプロセッサからなる第2の組は、プロセッサ列から選択される。そのような一実施形態において、このプロセッサ列は、Hyper−Xアーキテクチャにしたがって構成される。
いくつかの実施形態において、第1のプログラムコードは、第1の組のプロセッサによって実行されると、第1の組のプロセッサが複数の受信シンボルデータシーケンスに対して実行する(a)ようにする。
また、いくつかの実施形態において、前記システムは、前記受信シンボルデータシーケンスの少なくとも1つに対してシンボルデータシーケンスの2つ以上の重複サブシーケンスの数を調整し、それに応じて第1の組のプロセッサの数を調整する手段を備える。この手段は、第1の組ではないプロセッサを含んでもよい。例えば、上述した列のプロセッサまたは列以外のプロセッサを含んでもよい。シンボルデータシーケンスの2つ以上の重複サブシーケンスの数を調整する動作は、例えば、様々に上述したように、受信シンボルデータシーケンスの長さに基づいて実行されてもよい。
また、いくつかの実施形態において、前記システムは、前記受信シンボルデータシーケンスの少なくとも1つに対してシンボルデータシーケンスの前記2つ以上の重複サブシーケンス間の重複量を調整する手段を備えてもよい。この手段は、第1の組ではないプロセッサを含んでもよい。例えば、上述した列のプロセッサまたは列以外のプロセッサを含んでもよい。
いくつかの実施形態において、シンボルデータシーケンスXは、関連情報ビットの畳込み符号化に基づいて生成される。第1のトレリスは畳込み符号化に基づく構造を有する。そのような一実施形態において、シンボルデータシーケンスの2つ以上の重複サブシーケンスに対して復号化処理を並行して実行する動作は、例えば上述したように、シンボルデータシーケンスYの2つ以上の重複サブシーケンスのそれぞれのビタビ復号化を実現することを含んでもよい。
前記システムのいくつかの実施形態において、第1のトレリスは、例えば上述したように、シンボルデータシーケンスYとシンボルデータシーケンスXとの所与の線形関係に基づいた構造を有する。シンボルデータシーケンスYの2つ以上の重複サブシーケンスに対して2つ以上のプロセッサからなる第1の組が並行して実行する上述の動作は、例えば上述したように、シンボルデータシーケンスYの2つ以上の重複サブシーケンスに対して復調処理を並行して実行し、シンボルデータシーケンスYの2つ以上の重複サブシーケンスのそれぞれのビタビ等化を実現することを含んでもよい。
いくつかの実施形態において、送信機は、元の情報ビットの畳込み符号化によって符号化ビットを得て、その符号化ビットをインターリーブすることによって関連情報ビットを生成するものとする。その場合、動作(a)は、2つ以上のプロセッサからなる第1の組が符号化ビットに対する軟推定をインターリーブしたものの2つ以上の各重複サブシーケンスを用いてシンボルデータシーケンスの2つ以上の重複サブシーケンスに対して並行して動作することを含む。さらに、前記システムは、第2のプログラムコードで構成された2つ以上のプロセッサからなる第2の組を含む。第2のプログラムコードは、第2の組の各プロセッサに実行されると、第2の組の各プロセッサは、(b)関連情報ビットの軟推定をデインターリーブしたものの2つ以上の重複サブシーケンスに対して並行して動作する。デインターリーブしたものの2つ以上の重複サブシーケンスのそれぞれは、第2のトレリスの各部に対応する。第2のトレリスは、畳込み符号化に対応する構造を有する。デインターリーブしたもののうちの2つ以上の重複サブシーケンスに対して並行して動作すると、符号化ビットに対する軟推定が生成される。
2つ以上のプロセッサからなる第1の組および2つ以上のプロセッサからなる第2の組は、(a)および(b)を複数回交互にそれぞれ実行するようにプログラムされている。もしくは、第1の組および第2の組以外のプロセッサ(または制御ユニット)は、第1の組および第2の組が(a)および(b)を複数回交互にそれぞれ実行するようにプログラムされている。
いくつかの実施形態において、2つ以上のプロセッサからなる第2の組は、それぞれ追加のプログラムコードで構成される。その場合、第2のプログラムコードは、第2の組の各プロセッサによって実行されると、第2の組の各プロセッサは、関連情報ビットに対する軟推定のデインターリーブしたものの2つ以上の重複サブシーケンスに対して並行して動作して、元の情報ビットに対する軟推定を生成する。
いくつかの実施形態において、動作(a)は受信シンボルデータシーケンスの復調を実現し、動作(b)は、関連情報ビットに対する軟推定をデインターリーブしたものの復号化を実現し、(a)および(b)を複数回交互に実行する動作は、シンボルデータシーケンスYのターボ等化を実現する。
いくつかの実施形態において、動作(a)は受信シンボルデータシーケンスの復号化を実現し、動作(b)は、関連情報ビットの軟推定をデインターリーブしたものの復号化を実現し、(a)および(b)を複数回交互に実行する動作は、シンボルデータシーケンスYのターボ復号化を実現する。
いくつかの実施形態において、第1の組の各プロセッサおよび第2の組の各プロセッサは、例えば上述のように、符号化ビットの軟推定および関連情報ビットの軟推定が所定の閾値を超えた場合に前記(a)および(b)を複数回交互に実行することを停止するようにプログラムされている。
いくつかの実施形態において、第1のプログラムコードは、第1の組のプロセッサによって実行されると、例えば様々に上述のように、第1の組のプロセッサが、前記シンボルデータシーケンスの2つ以上の重複サブシーケンス間の重複量を調整するようにする。そのような一実施形態において、前記シンボルデータシーケンスの2つ以上の重複サブシーケンス間の重複量を調整する動作は、(a)および(b)の複数回の実行の少なくとも1つに対して実行される。
いくつかの実施形態において、第2のプログラムコードは、第2の組のプロセッサによって実行されると、例えば様々に上述のように、第2の組のプロセッサが、関連情報ビットの軟推定の前記デインターリーブしたものの2つ以上の重複サブシーケンスの重複量を調整するようにする。そのような一実施形態において、デインターリーブしたものの2つ以上の重複サブシーケンス間の重複量を調整する動作は、(a)および(b)の複数回の実行の少なくとも1つに対して実行される。
いくつかの実施形態において、シンボルデータシーケンスの2つ以上のサブシーケンスの少なくとも1つは、フォワード収束領域を含む。動作(a)は、第1の組のプロセッサのうちの各プロセッサが第1のトレリスの対応部分に対してフォワードトレリス走査を実行して第1のトレリスの対応部分の各時間ステップにおけるフォワード走査値を得ることを含む。この場合、フォワード収束領域は、フォワードトレリス走査における収束を得るために使用される。そのような一実施形態において、第1のプログラムコードは、第1の組のプロセッサによって実行されると、第1の組のプロセッサが(a)および(b)の前記複数回の実行のうち現在完了している実行の数の関数としてフォワード収束領域の長さを減少させるようにする。
いくつかの実施形態において、シンボルデータシーケンスの2つ以上のサブシーケンスの少なくとも1つは、バックワード収束領域を含む。動作(b)は、第1の組のプロセッサのうちの各プロセッサが第1のトレリスの対応部分に対してバックワードトレリス走査を実行して第1のトレリスの対応部分の各時間指数におけるバックワード走査値を得ることを含む。この場合、バックワード収束領域は、バックワードトレリス走査における収束を得るために使用される。そのような一実施形態において、第2のプログラムコードは、第2の組のプロセッサによって実行されると、第2の組のプロセッサが(a)および(b)の前記複数回の実行のうち現在完了している実行の数の関数としてバックワード収束領域の長さを減少させるようにする。
いくつかの実施形態において、動作(a)は、関連情報ビットに関する内部情報および外部情報の生成を含む。第1のプログラムコードは、第1の組の各プロセッサによって実行されると、第1の組の各プロセッサが内部情報と外部情報との混合情報に基づいて関連情報ビットに対する軟推定を並行して生成する。(a)および(b)の前記複数回の実行のうちの現在完了している実行の数に応じて、混合情報に含まれる内部情報の量を増加させる。
いくつかの実施形態において、動作(b)は、符号化ビットに関する内部情報および外部情報の生成を含む。第2のプログラムコードは、第2の組の各プロセッサによって実行されると、第2の組の各プロセッサが内部情報と外部情報との混合情報に基づいて符号化ビットに対する軟推定を生成するようにする。(a)および(b)の前記複数回の実行のうちの現在完了している実行の数に応じて、混合情報に含まれる内部情報の量を増加させる。
いくつかの実施形態において、前記システムは、前記関連情報ビットの軟推定をデインターリーブしたものを、関連情報ビットの軟推定に対してデパンクチャおよびデインターリーブを実行することによって生成するように構成された1つ以上のプロセッサからなる第3の組を含んでもよい。このデパンクチャの動作は、あらかじめ演算された値を出力シーケンスのパンクチャ位置に投入することを含む。あらかじめ演算された値とは、(b)の前の実行において第2の組のプロセッサによって演算された符号化ビットに対する軟推定のうちで指定されたものである。出力シーケンスは、その後デインターリーブされて、関連情報ビットの軟推定をデインターリーブしたものを得てもよい。
いくつかの実施形態において、動作(a)は、第1の組のプロセッサのうちの各プロセッサが第1のトレリスの対応部分を介して、フォワードパスおよびバックワードパスを実行することを含む。第1の組のプロセッサのうちの所与のプロセッサに対して、フォワードパスは、所与のシンボル位置におけるアルファベクトルを算出し、アルファベクトルが零ベクトルに等しいという判断に応じてベクトルEに等しいアルファベクトルを設定することを含む。この場合、ベクトルEの全成分は小さな正の数と等しい。
いくつかの実施形態において、動作(b)は、第2の組のプロセッサのうちの各プロセッサが第2のトレリスの対応部分を介して、フォワードパスおよびバックワードパスを実行することを含む。第2の組のプロセッサの所与のプロセッサに対して、フォワードパスは、所与のデータ位置におけるアルファベクトルを算出し、アルファベクトルが零ベクトルに等しいという判断に応じてベクトルEに等しいアルファベクトルを設定することを含む。この場合、ベクトルEの全成分は小さな正の数と等しい。
いくつかの実施形態において、2つ以上のプロセッサからなる第1の組は、2つ以上のプロセッサからなる第2の組と同一である。第1の組のプロセッサのうちの各プロセッサは、(a)の各実行の前に第1のプログラムコードを読み込み、(b)の各実行の前に第2のプログラムコードを読み込むようにプログラムされている。第1のプログラムコードは、第1の組の各プロセッサによって実行されると、第1の組の各プロセッサが、シンボルデータシーケンスYの対応サブシーケンスおよび符号化ビットに対する軟推定をインターリーブしたものの対応サブシーケンスに対してフォワード/バックワードアルゴリズムを実行するようにする。第2のプログラムコードは、第2の組の各プロセッサによって実行されると、第2の組の各プロセッサが関連情報ビットに対する軟推定をデインターリーブしたものの対応サブシーケンスに対してフォワード/バックワードアルゴリズムを実行するようにする。
いくつかの実施形態において、2つ以上のプロセッサからなる第1の組は、元の情報ビットの軟推定に基づく受信メッセージを形成するようにプログラムされている。
1組の実施形態において、ターボ等化を実行する方法は、以下の動作を含んでもよい。
(1)シンボルデータシーケンスがチャンネルから受信される。このシンボルデータシーケンスは、チャンネル上に送出されたシンボルデータシーケンスXに対応する。シンボルデータシーケンスYは、元の情報ビットに基づいて生成される。(2)2つ以上のプロセッサからなる第1の組は、シンボルデータシーケンスの2つ以上の重複サブシーケンスに対して、フィードバック情報をインターリーブしたものの2つ以上の対応サブシーケンスを用いて復調処理を並行して実行して、フィードフォワード情報を生成する。
(3)2つ以上のプロセッサからなる第2の組は、フィードフォワード情報をデインターリーブしたものの2つ以上の重複サブシーケンスに対して、復号化処理を並行して実行して、フィードバック情報を生成する。
(4)(2)および(3)を含む動作の組は、例えば終了条件が満たされるまで繰り返されてもよい。
(5)2つ以上のプロセッサからなる第3の組は並行して動作して、フィードフォワード情報のデインターリーブしたものの2つ以上の重複サブシーケンスから元の情報ビットに対する軟推定を生成する。この軟推定は、元の情報ビットに対応する受信メッセージを形成するのに使用可能である。
いくつかの実施形態において、第3の組のプロセッサは、第2の組のプロセッサと同一である。
いくつかの実施形態において、第1の組の各プロセッサと第2の組の各プロセッサとは、互いに素の組である。他の実施形態において、第1の組の各プロセッサは第2の組の各プロセッサと同一である。
本発明の実施形態は、様々な種類のトレリスベースの方法に対する並列処理技術に関するものでもよい。以下、本発明の典型的な実施形態を説明する。以下のトレリスベースの方法はターボ等化である。ただし、本発明の実施形態は、以下で説明するターボ等化の実施形態に限定されるものではなく、本発明の実施形態は様々なトレリスベースの技術とともに使用される。
1組の実施形態において、図2に示すように、通信システム100は、送信機110と受信機120とを含んでもよい。送信機110は、情報源からバイナリビットのストリーム{ak}を受信して、送信信号を生成する。送信機110は、送信信号をチャンネル115上に送出する。受信機120は、ノイズを含む送信信号を表す受信信号を受信する。受信機120は受信信号に対して動作して、ソースストリーム{ak}の各ビットakに対する推定Akを生成する。受信機120は、ラジオ、コードレス電話機、携帯電話機などのデータ通信装置などの様々な種類のワイヤレス装置を含んでもよい。例えば、受信機120は、例えば、兵士の無線の波形(Soldier Radio Waveform:SRW)を用いて軍の職員によって使用されることを意図した通信装置でもよい。一実施形態において、受信機は、ワイヤレスポータブルテレビなどのテレビなどの映像表示装置でもよい。
いくつかの実施形態において、送信機110は図3に示す構造を有する。送信機110は、畳込みエンコーダ210と、インターリーバ220と、パンクチャ部420と、マッピング部240とを含む。畳込みエンコーダ210は、情報源からのビット{ak}のストリームに対して動作して符号化ビットストリーム{bk}を生成する。インターリーバ220は、所定の順列にしたがって符号化ビットストリーム中のデータの各ブロックをインターリーブして、インターリーブビットストリームを生成する。パンクチャ部230は、インターリーブビットストリームをパンクチャして、パンクチャビットストリーム{ck}を得る。パンクチャは、所定のパターンにしたがって、インターリーブビットストリームにおける情報のある部分を捨てる処理である。教育的な例として、中間ビットストリーム:(z1、z2、z3、z4、z5、z6、z7、z8、z9・・・)→(z1、z2、z4、z5、z6、z7・・・)のビットを2つおきに捨てる場合もある。幅広いパンクチャパターンが考えられる。
一実施形態において、パンクチャおよびインターリーブのパターンは、Modem Specification for SLICE Inc.2、ITTDOCUMENT #8223038 REVISION(2006年11月発行)と一致する。その内容は、ここで引用したことにより、その全体が本願にも含まれるものとする。
マッピング部240は、パンクチャビットストリームをシンボル組から取り出されたシンボルのシーケンス{xk}に対応づける。(上記シンボル組は、複素平面または実数直線のサブセットでもよい)。幅広い種類のシンボル組を使用できる。
送信機110は、シンボルシーケンス{x
k}に基づいて、(様々な形態の変調を用いて)キャリア信号を変調し、変調信号をチャンネルに送出できる。受信機120は、その送信信号を受信して復調して、シンボルシーケンス{y
k}を復活させる。シンボルシーケンス{y
k}は、本明細書において「受信」シンボルシーケンスと呼ばれる。送信シンボルシーケンス{x
k}と受信シンボルシーケンス{y
k}との関係は以下によって表すことができる。
y
k=v
k+n
k
ここで、n
kはノイズ、{h
j}は既知のインパルス応答である。すなわち、受信シンボルシーケンスは、ノイズn
kと送信シンボルシーケンス{x
k}に対して動作する線形フィルタの出力v
kとの合計と解釈できる。上記受信機は、受信シンボルシーケンス{y
k}に基づく元のビットストリーム{a
k}のビットに対する推定を生成する。
いくつかの実施形態において、受信機120は、例えば、ソフトウェアラジオ、ハードウェアラジオ、または部分的にソフトウェアラジオかつ部分的にハードウェアラジオであるラジオなどのラジオでもよい。ただし、非ラジオの実施形態も同様に考えられる。
いくつかの実施形態において、受信機120は、兵士のレベルの統合通信環境(Soldier−Level Integrated Communications Environment)(SLICE Increment2.1、以下SLICE2.1と呼ぶ)において使用される兵士の無線の波形(Soldier Radio Waveform(SRW))を実現するように設計される。以下の説明は、SLICE2.1を前提としている。なお、本明細書において開示される新規の原理は、当然ながら様々な状況に対して幅広く適用される。
いくつかの実施形態において、受信機120は、反復的メッセージパッシング方法にしたがって復調および復号化を実行できる。メッセージパッシング方法(MPM)は、フィードバックと連携した復調処理および復号化処理を含む。復調処理は、復号化処理によって提供されたフィードバック情報と同様に、受信シンボル情報を用いて動作する。復号化処理は、復調処理によって提供されたフィードフォワード情報に基づいて動作する。MPMは、復調処理と復号化処理とを交互に実行することを含む。この場合、これらの処理が、それぞれ、正しい復調および復号化の解に収束することを前提としている。
受信機120は、MPMを実行するようにプログラムされたハードウェアを備える。いくつかの実施形態において、このハードウェアは、例えば上述した米国特許第7,415,594号に記載されているマルチプロセッサアーキテクチャの1つなどのマルチプロセッサ演算システムを含む。
図4は、受信機120によって実行される、1組の実施形態による処理動作のブロック図300を示す。図300は、フィルタモジュール310と、PDFモジュール315と、復調処理320と、デインターリーブ/デパンクチャ処理325と、復号化処理330と、インターリーブ/パンクチャ処理335と、決定モジュール340とを含む。フィルタモジュール310は、アナログ−デジタル変換処理を実行して無線フロントエンドから再生した複合サンプルのストリーム{rk}に対して動作して、受信シンボルシーケンス{yk}を生成する。PDFモジュール315はこの受信シンボルシーケンス{yk}に動作して、シンボル確率情報を生成する。復調処理320と、デインターリーブ/デパンクチャ処理325と、復号化処理330と、インターリーブ/パンクチャ処理335とは協働して、PDFモジュール315によって提供されたシンボル確率情報に基づいて、MPM(メッセージパッシング方法)を実行する。MPMはターボ等化器の種類に属すると解釈でき、それによってソフト確率推定(例えば、LLR)は復調処理320と復号化処理330との間でやりとりされる。
いくつかの実施形態において、パンクチャおよびデパンクチャは含まれない。それらの実施形態において、処理325はデパンクチャを行わないデインターリーブ処理と解釈される。処理335はパンクチャを行わないインターリーブ処理と解釈される。
フィルタモジュール310は、ストリーム{rk}をフィルタリングして、受信シンボルストリーム{yk}を生成する。フィルタモジュール310は低域フィルタでもよい。いくつかの実施形態において、フィルタモジュール310は、2の倍数でサンプリングレートを減少させるために使用される線形位相、FIR、かつ低域のフィルタである。フィルタモジュール310は、多相構造で構成された2つのFIRフィルタ(1つは実サンプル用、もう1つは虚サンプル用)を備えてもよい。一実施形態において、上記2つのFIRフィルタは、それぞれ49個のタップを有する。ただし、フィルタタップの数は、他の様々な値を用いてもよい。いくつかの実施形態において、上記2つのFIRフィルタの係数は、パークスマクレランアルゴリズムを用いて設計される。図5は、一実施形態による、フィルタモジュール310の周波数特性を示す。フィルタモジュール310の出力は、シンボル毎に1つのサンプルを生成するようにサブサンプリングされてもよい。
PDFモジュール315は、受信シンボルシーケンス{yk}の各シンボルykに対して動作して確率値{p(yk|vi,j)}の対応組を生成する。この場合vi,jは、復調トレリスにおいて状態iから状態jへの遷移に関連した出力である。
復調処理320は、PDFモジュール315によって提供された確率値と、インターリーブ/パンクチャ処理335によって提供された事前確率に対して動作し、それによってフィードフォワード情報を生成する。フィードフォワード情報は、処理325へ供給される。処理325はこのフィードフォワード情報に対してデパンクチャおよびデインターリーブを実行して、中間情報を生成する。この中間情報は復号化処理330に提供される。復号化処理330は中間情報に対して動作してフィードバック情報を生成する。このフィードバック情報は処理335に提供される。処理335はこのフィードバック情報に対してインターリーブおよびパンクチャを実行して、事前確率を生成する。
MPMは反復的に動作する。すなわち、復調処理320が動作し、その後復号化処理330が動作する。その後、復調処理320がまた動作して、その後復号化処理330がまた動作する。これが周期的に行われる。図において各周期を「反復」と呼ぶ。反復が進むと、2つの処理間でやりとりされた情報は、望ましくは正しい答、すなわち元の送信ビット{ak}と一致した答に向かって収束を始める。反復は、許容可能なビット信頼性が得られるまで続けられる。(受信シンボルのベクトルyは一連の反復を通して一定である)。復調処理320と復号化処理330との間でやりとりされる情報はメッセージと解釈されるため、この反復処理は「メッセージパッシング」方法と呼ばれる。
復調処理320と復号化処理330との間でやりとりされる情報は軟情報であって、硬判定ではない。(「硬」はバイナリの同義語である)。したがって、処理320および330のそれぞれは、軟入力軟出力(SISO)モジュールと呼ぶことができる。
図4に戻って参照すると、処理335は、復号化処理330によって生成された軟情報(フィードバックLLRなど)に対してインターリーブおよびパンクチャを実行する。この場合のインターリーブは、インターリーバ220によって使用されるものと同一のパターンに基づく。また、パンクチャはパンクチャ部230によって使用されるものと同一のパターンに基づく。ただし、処理335は復号化処理330によって生成される軟情報(例えばLLRなど)に対して動作する一方、インターリーバ220およびパンクチャ部335はビットに対して動作する。インターリーバ/パンクチャ部335は、マッピング部240から来るシンボルの順番と同一の順番で復号化処理330からのフィードバックLLRを並び替える。
処理325は、復調処理320によって生成された軟情報(シンボルLLRなど)に対してデパンクチャおよびデインターリーブを実行する。デパンクチャは、パンクチャ部230によって使用されるパンクチャパターンの疑似逆に基づく。パンクチャパターンが情報を捨てる場合、疑似逆は零を投入する。例えば、パンクチャパターンが2つおきに要素を捨てる場合、疑似逆は
(s 1,s2,s3,s4,s5,s6,・・・)→(s1,s2,0,s3,s4,0,s5,s6,0,・・・)
のようになる。所与のシンボルに対する対数尤度比(LLR)が零に等しい場合、シンボルが−1に等しくなる確率は、シンボルが+1に等しくなる確率と定義上等しくなる。したがって、零LLR値を所与のシンボル位置に投入すると、シンボル位置から元々捨てられたシンボルの値に関して全く無視する状態となる。
いくつかの実施形態において、零を投入する代わりに、デパンクチャ動作が復号化処理330よってあらかじめ算出された値を投入する。このより洗練された形態のデパンクチャによって収束速度は高まる。すなわち、収束を得るために必要な反復の数を減らすことができる。
処理325の一部として実行されるデインターリーブ動作は、インターリーバ220によって使用されるパターンの逆に基づく。したがって、このデインターリーブ動作によって、畳込みエンコーダ210から来るビット順に対応する順番にLLRを並び替えられる。
復調処理320は、基本のトレリスに基づいて動作する。基本のトレリスとは、例えば、以下によって与えられる線形フィルタと関連づけられたトレリスである。
ここで、各係数{h
j}は、実値(または複素数値である可能性が高い)である。シンボル組の時間指数kの各値と各シンボルxに対して、復調処理320は、送信シンボルx
kが受信シンボルベクトルyによって与えられたxに等しかった確率を算出してもよい。シンボル組が{+1,−1}(例えば、QBL−MSKまたはバイナリPSK)の場合、復調処理320は、送信シンボルが+1であった確率と送信シンボルが−1であった確率とを算出してもよい。
復調処理320はフォワード/バックワードアルゴリズムを実行してもよい。このフォワード/バックワードアルゴリズムは、フォワードパスと、バックワードパスと、統合動作とを含む。フォワードパスは、各時間ステップにおける「アルファ」値のベクトルを計算するフォワード方向に復調トレリス上を移動する。バックワードパスは、各時間ステップにおける「ベータ」値のベクトルを計算するバックワード方向に復調トレリス上を移動する。(このフォワードパスおよびバックワードパスは、必要に応じて並行して実行されてもよい)。統合動作は、アルファ値とベータ値とを合成して、各時間指数における送信シンボルに対する対数尤度比(LLR)、例えば対数尤度比L(xk|y)を形成する。このフォワードパス、バックワードパスおよび統合動作は、それぞれ「ガンマ」値組を使用する。このガンマ値は、局所確率情報(シンボル観測ベクトルyに基づく)と復号化処理330によって生成された事前確率とを包含する。フォワード/バックワードアルゴリズムについての詳細は、記事「ターボ復調」(RaIf Koetter等、IEEE Signal Processing Magazine、2004年1月発行)を参照するとよい。
いくつかの実施形態において、所与の時間nにおける復調トレリスの状態S
nは以下によって与えられる。
S
n={θ
n,X
n-1,X
n-2,X
n-3}
ここで、{X
n-1,X
n-2,X
n-3}は、前の3つのシンボルを表す。h
fは変調指数である。Lは、受信機における位相整形フィルタのインパルス応答の長さ(シンボル周期毎)である。変調指数h
fは、変調位相が非変調参照値:h
f=Δθに対して変化する範囲を示す。Δθは、ピーク位相変化を表す。
いくつかの実施形態において、受信機はMSK型変調に特化している。そのような一実施形態において、x
n∈{−1,+1}かつh
f=1/2、L=4である。h
f=1/2のため、その位相に対して以下の4つの可能な値が存在する。
したがって、状態空間は、図6の状態表に示すように4×2×2×2=32の状態を含む。位相遷移、すなわち現在の位相θ
nから次の位相θ
n+1への位相は以下によって与えられる。
復号化処理330は、フォワード/バックワードアルゴリズムを用いて、処理325によって提供された入力LLR(L(bk|y)}に対して動作して、フィードバックLLR(L(bk|p))を生成する。ここで、
p=(P(b1|y),(P(b2|y),...(P(bN|y))T
である。さらに、MPMの最後の反復において、復号化処理330は、元のビットストリームのビットak毎に出力LLRL(ak)を算出してもよい。復号化処理330は、ハードリミッタ340に対して出力LLR{L(ak)}を提供する。ハードリミッタは、以下の規則にしたがってビットak毎に推定Akを生成する。
LLR(ak)>0ならば、Ak=1、その他の場合はAk=0
いくつかの実施形態において、復号化処理330は、MAPデコーダの種類に属する。ただし、他の実施形態も考えられる。
復号化処理330は、畳込みエンコーダ210の構造に対応するトレリスに基づいて動作してもよい。一実施形態において、畳込みエンコーダ210は、図7に示す構造を有する。ただし、その他の様々な構造が可能である。
図7に示した畳込みエンコーダ210は、率1/2でK=5である。(畳込みエンコーダの率とは、入力ビット数対出力ビット数の比率である。パラメータKはエンコーダの制約長で、出力ビットに影響する現在の入力を含むビット数を示す)。各加算部は、2を法とする加算をバイナリ演算子に対して実行するように構成される。「D」とされている部材は、遅延部である。
図示のエンコーダの所与の時間における状態は、4つの遅延素子Dの内容によって定義される。図7の表記において、状態は4タプル(S1,S2,S3,S4)によって与えられる。4つの遅延素子が入力に対して直列に接続されているため、状態は(ak-4,ak-3,ak-3,ak-i)の形状を有する。ここで、ak-1、ak-2、ak-3、ak-4は、バイナリ入力シーケンス{ak}の前の値である。したがって、16の異なる状態が存在する。
復号化処理330は、以下の関係に基づいて、入力LLR値(L(b
k|y))を確率に変換する。
ルックアップテーブル(LUT)を使用して、各入力LLRを確率値に変換してもよい。減算によって、相補確率値が得られる。これによって、入力LLR毎に2つの確率値が得られる。各対(b2k-1,b2k)に対して、以下の確率積がフォワード/バックワード演算において使用される。
P(b2k-1=0|y)P(b2k=0|y)
P(b2k-1=0|y)P(b2k=1|y)
P(b2k-1=1|y)P(b2k=0|y)
P(b2k-1=1|y)P(b2k=1|y)
フォワード/バックワードアルゴリズムの結果として得られた確率値P(bj=0|p)とP(bj=1|p)は、例えば対数関数のルックアップテーブルを用いてLLR値に変換される。これらのLLR値(「フィードバックLLR」)は、インターリーブ/パンクチャ処理335に与えられる。
1組の実施形態において、受信機120は、図4に示す処理動作を実行するようにプログラムされたマルチプロセッサ演算システムを備える。このマルチプロセッサ演算システムは、相互接続して格子を形成するセルアレイを含んでもよい。各セルは、処理要素(PE)と1つ以上の「データメモリ/ルーティングユニット」(DMR)を備えてもよい。図8は、マルチプロセッサ演算システムの一実施形態を示し、4×8のセルアレイを有する。分散制御ロジック(DCL)710は、例えばプログラムコードやデータをアレイ中の各PEに送ることによって、アレイの動作を制御してもよい。さらに、DCL710は、PE(またはPEのサブセット)から結果を回収し、その結果を受信機120内の他の処理手段に渡してもよい。各PEは、自分の命令メモリを有し、それによって必要に応じて独自のタスクを実行するようにプログラムされてもよい。DCL710は、アレイの最初の行にのみ接続されているように図示されている。しかしながら、DCL710をアレイに接続する方法に対して他の様々な実施形態が考えられる。
いくつかの実施形態において、上記マルチプロセッサ演算システムは、アレイ中のPEの第1のサブセットに対してフィルタモジュール310を実行し、アレイ中のPEの第2のサブセットに対してPDFモジュール315を実行し、アレイ中のPEの第3のサブセットに対して復調処理320を実行し、アレイ中のPEの第4のサブセットに対してデインターリーブ/デパンクチャ処理325を実行し、アレイ中のPEの第5のサブセットに対して復号化処理330を実行し、アレイ中のPEの第6のサブセットに対してインターリーブ/パンクチャ処理335を実行するようにプログラムされてもよい。ここで、第1、第2、第3、第4、第5、第6のサブセットは、アレイ中のPEの互いに素なサブセットである。そのような一実施形態を図9に示し、以下で説明する。
図9は、図4の処理動作をパイプライン化および並列化したものを示す。ここで、マルチプロセッサ演算システムは、少なくとも71個の処理要素(PE)と78個のデータメモリを有するものとする。パイプラインの各段は、N単位時間動作するように構成されてもよい。第1の段は、入力処理305と、フィルタモジュール310とを含む。フィルタモジュール310は、1つの処理要素(PE)と2つのデータメモリとを用いて実行されてもよい。第2の段は、PDFモジュール315を含む。PDFモジュール315は2つのPEと8つのDMRとを用いて実行されてもよい。2つのPEは、パケット中のシンボルデータの対応部分に対して並行して動作してもよい。
第3の段は、復調処理320と、デインターリーブ/デパンクチャ処理325と、復号化処理330と、インターリーブ/パンクチャ処理335とを含む。復調処理320は、パケット中のシンボルデータの対応部分に並行して動作する32個のPE/DMR対を用いて実行されてもよい。デインターリーブ/デパンクチャ処理325は、2つのPEと2つのDMRとを用いて実行されてもよい。復号化処理330は、処理325によって提供された軟情報の対応部分に並行して動作する32個のPE/DMR対を用いて実行されてもよい。インターリーブ/パンクチャ処理335は、2つのPEと2つのDMRとを用いて実行されてもよい。対応する処理間での通信効率を上げるように、様々なサブセットのPEを地理的に配置してもよい。
終段は、ハードリミッティングを実行して元の情報ビットakに対する推定Akを決定する出力処理340を含む。
図10は、マルチプロセッサ演算システム上の図4の処理動作をパイプライン化および並列化した別のものを示す。本実施形態において、復調処理320および復号化処理330は、ブロック910に示す32個のPE/DMR対からなる同一組に対して実行される。さらに、デインターリーブ/デパンクチャ処理325およびインターリーブ/パンクチャ処理335は、ブロック920に示す2つのPE/DMR対からなる同一組に対して実行される。
いくつかの実施形態において、各PEの命令メモリは小容量のため、復調プログラム全体および復号化プログラム全体を同時に格納できない。したがってそれらの実施形態において、マルチプロセッサ演算システムの分散および制御ロジックは、復調プログラムおよび復号化プログラムをブロック910の32個のPEそれぞれの命令メモリに交互に読み込むように構成してもよい。
図8および図9は、パイプライン段の処理モジュールにおけるPEおよびDMRの数に対する特定の値に関して説明しているが、各値は他の様々な値をとってもよい。そのため、図8および図9は、幅広く実現可能なものの中の2つの特定のものとして解釈されるものである。
いくつかの実施形態において、シーケンスXkの各シンボルを、送信機110による送信前に、トレーニングシンボルとともにパケットに読み込む。一実施形態において、パケットは、図11に示すパケットを有する。パケットは、ペイロードシーケンスと交互にトレーニングシーケンス(「連続プローブ」とも呼ばれる)を含む。各トレーニングシーケンスの長さは、32シンボル。各ペイロードシーケンスの長さは328シンボルである。シンボル1441からシンボル1472までのトレーニングシーケンスは、次のパケットの最初の連続プローブ(すなわち、シンボル1からシンボル32)として再利用される。したがって、事実上パケット毎に1440シンボルがある。本明細書に記載される発明原理は、パケット長、パケット毎のペイロードシーケンスの数、ペイロードシーケンス毎のシンボルの数、またはトレーニングシーケンス毎のシンボルの数に依存するものではない。それらの各パラメータは、幅広く様々な値をとることができる。
受信パケット中の各ペイロードシーケンスに対して、復調処理320は、ペイロードシーケンスに対応する各送信シンボルのMAP推定を演算してもよい。ペイロードシーケンス全体に対してフォワード/バックワードアルゴリズムを実行する代わりに、ペイロードシーケンスの重複部分を1組のプロセッサに分散してもよい。例えば上述のように、それらのプロセッサは、フォワード/バックワードアルゴリズムを各部に対して並行して実行してもよい。したがって、ペイロードシーケンス全体に対するフォワード/バックワードアルゴリズムの正味の影響を、非常に短時間で得られる。本明細書において、ペイロードシーケンスの重複部分をウィンドウと呼ぶ。
図12は、受信パケットの最初のペイロードシーケンスにわたる8つの重複ウィンドウの例を示す。このデータの8つのウィンドウは、8つのプロセッサに対してそれぞれ分散されて、並列して実行されてもよい。パケットの残りの3つのペイロードシーケンスのそれぞれは、8つのウィンドウによって同様に網羅されてもよい。それによって、パケット中の全ペイロードデータは、32個ウィンドウで網羅できる。32個のウィンドウは、例えば上述のように、32個のプロセッサにそれぞれ分散して、並行して処理してもよい。各プロセッサは、32個のウィンドウの指定された1つに対してフォワード/バックワードアルゴリズムを実行してもよい。図12は、各ウィンドウの構造化の一例として解釈されるべきものである。幅広く様々なその他の実施形態は、ペイロードシーケンス毎のウィンドウの数に対して異なる数を有することも考えられる。
図12に示すように、第1のペイロードシーケンスのウィンドウ#1(下から2番目のウィンドウ)は、シンボル位置73からシンボル位置132まで延びている。図13Aは、ウィンドウ#1に対するフォワード演算間隔、すなわち、一実施形態にしたがって、フォワードパス演算が実行されるシンボル位置の間隔を示す。また、フォワード「助走」間隔(本明細書では「フォワード収束間隔」とも呼ばれる)、すなわち、フォワードパス演算が収束の処理を行っている最初の間隔を示す。助走間隔において算出されたアルファベクトルは、信頼できない(または信頼に十分に足らない)と見なされるため、出力LLRの演算に使用されない。助走間隔の後(右)に算出されたアルファベクトルは、信頼できる(すなわち有効)と見なされる。フォワード助走間隔後のフォワード演算間隔の部分は、本明細書においてフォワード有効間隔と呼ばれる。
図13Bは、ウィンドウ#1に対するバックワード演算間隔、すなわち、バックワードパス演算が実行されるシンボル位置の間隔を示す。また、バックワード「助走」間隔(本明細書では「バックワード収束間隔」とも呼ばれる)、すなわち、バックワードパス演算が収束の処理をまだ行っている最初の間隔を示す。バックワード助走間隔において算出されたベータベクトルは、信頼できない(または信頼に十分に足らない)と見なされるため、出力LLRの演算に使用されない。助走間隔の後に算出されたベータベクトルは、信頼できる(すなわち有効)と見なされる。バックワード助走間隔後(すなわち左)のバックワード演算間隔の部分は、本明細書においてバックワード有効間隔と呼ばれる。
フォワード助走間隔およびバックワード助走間隔は、図13Aおよび13Bにおいて10シンボルの長さであると示しているが、幅広く様々な他の長さも可能である。所与の実施形態において選択される長さの値は、S/N比に依存してもよい。S/N比が高い環境は、S/N比が低い環境よりも小さな助走長を必要とする場合がある。また、フォワード助走間隔およびバックワード助走間隔が同一の長さでなくてもよい。長さが異なる場合の実施形態も考えられる。
出力LLRは、フォワード有効間隔およびバックワード有効間隔の交差点に対応するシンボル位置に対して演算される。したがって、図13Aおよび13Bに示す例において、出力LLRは、シンボル位置83から122に対して演算される。
図14は、2つの連続ウィンドウ、すなわちウィンドウ#1および#2に対する助走間隔と出力領域との関係を示す。2つのウィンドウに対する出力領域は互いに素であり、その間にギャップがないことがわかる。ウィンドウ#1の出力領域は、位置83から位置122までである。ウィンドウ#2の出力領域は、位置123から位置162までである。同様に、8つのウィンドウすべての出力領域は互いに素であり、ペイロードシーケンスの全範囲を網羅する。
ウィンドウ#0(図12下部のウィンドウ)とウィンドウ#7(図12上部のウィンドウ)とは、ペイロードシンボルに加えてトレーニングシンボルも含む点で異なる。ウィンドウ#0の最初のシンボルはトレーニングシンボルである。ウィンドウ#7の最後の数シンボルはトレーニングシンボルである。フォワードパス演算が既知のトレーニングシンボルに基づいて開始できるため、ウィンドウ#0に対するフォワードパスは助走間隔を必要としない。同様に、バックワードパス演算が既知のトレーニングシンボルデータに基づいて開始できるため、ウィンドウ#7はバックワード助走間隔を必要としない。
各送信シンボルの初期事前確率は、シンボルが+1に等しい確率の場合0.5に設定され、シンボルが−1に等しい確率の場合0.5に設定される。各トレーニングシーケンスが既知の場合、トレーニングシーケンス中の各シンボルのシンボル確率は、適宜、1および0に設定される。各32シンボルトレーニングシーケンスの最初のシンボルは送信データに依存しており、したがって受信機では不明である。そのため、その確率は1/2に設定される。
復号化処理330は、フォワード/バックワードアルゴリズムを使用して、元のビットストリーム{bj}の各ビットbjに対するフィードバック確率P(bj=0|p)およびP(bj=1|p)を演算してもよい。これを受けて、復調処理320と関連して上述のように、トレーニング情報がなくても、重複ウィンドウストラテジを用いて復号化処理330は実行されてもよい。したがって、デインターリーブ/デパンクチャ処理325によって生成された入力LLR{L(bj|y)}を分散して重複ウィンドウを設定してもよい。例えば、図8および図9を参照して上述したように、フォワード/バックワードアルゴリズムは各ウィンドウに対して並行して実行してもよい。いくつかの実施形態において、復号化処理330によって使用されたウィンドウは、復号化ウィンドウがトレーニング情報を含まないことを除いて、復調処理320によって使用されたウィンドウに対応する。
いくつかの実施形態において、受信機120は、復調処理320と復号化処理330との間でやりとりされる軟情報(LLR)に含まれる内部情報の量を段階的に増加させる機構を使用してもよい。内部情報の量は、(外部情報と比べて)パスメトリックにおける信頼度が改善するにつれて段階的に増加させてもよい。内部情報が直接フィードバックを構成するため、この機構を「段階的直接フィードバック」と呼ぶ。許容可能なビットエラーの動作を実現するために必要とされる反復の数に関連して、やりとりされるメッセージに内部情報を挿入することは、収束を加速化する上で有効である。しかしながら、この内部情報は収束を誤った結果に導く可能性がある。したがって、内部情報は最初の反復か2回の反復において無視し、ビット信頼性が高まるにつれて、可変乗数λ∈[0,1]を用いて段階的に挿入するとよい。(表記[a,b]は、{実数直線上のx:a≦x≦b}の閉じた間隔を表す)。例えば、復調処理320によって生成された出力LLR{L(xk|y)}は以下の規則で判断される。
L(xk|y)=Lext(xk|y)+λiLint(xk|y)
λi=(i−1)/N
ここで、Lext(xk|y)は、受信シンボルベクトルyによって与えられたシンボルxkの外部LLR、Lint(xk|y)は受信シンボルベクトルyによって与えられたシンボルxkの内部LLR、iは1からNまで実行される反復指数である。
同様に、復号化処理330によって生成された出力LLR{L(bk|p)}は、以下の規則によって判断されてもよい。
L(bk|p)=Lext(bk|p)+λiLint(bk|p)
λi=(i−1)/N
変数λと反復指数iとの間には、幅広く様々な関数関係が可能である。上記で与えられた線形関係は短時間で演算されるが、幅広く様々な他の実施形態も考えられる。
1組の実施形態において、受信シンボルを処理して送信情報を再生する方法は、図15Aに示すように実行されてもよい。図9および図中に記載の説明は、本方法の一実施形態として解釈されてよい。
1410において、シンボルデータシーケンスが受信されてもよい。例えば、このシンボルデータシーケンスは、図3や図9を参照して上述したように、フィルタモジュール310によって提供されてもよい。
1415において、2つ以上のプロセッサからなる第1の組が、フィードバックデータシーケンスの2つ以上の対応サブシーケンスを用いて、シンボルデータシーケンスの2つ以上の対応サブシーケンスに対して復調処理を並行して実行し、フィードフォワード情報の2つ以上の対応ブロックを生成する。例えば、図9のブロック320を参照するとよい。
1420において、1つ以上のプロセッサからなる第2の組が、フィードフォワード情報の2つ以上のブロックから組み立てられた第1の合成シーケンスに対してデパンクチャおよびデインターリーブを実行して、修正データシーケンスを生成する。例えば、図9のブロック325を参照するとよい。
1425において、2つ以上のプロセッサからなる第3の組が、修正データシーケンスの2つ以上の対応サブシーケンスに対して復号化処理を並行して実行して、フィードバック情報の2つ以上の対応するブロックを生成する。例えば図9のブロック330を参照するとよい。
1430において、1つ以上のプロセッサからなる第4の組が、フィードバック情報の2つ以上のブロックから組み立てられた第2の合成シーケンスに対してインターリーブおよびパンクチャを実行して、フィードバックデータシーケンスを生成する。例えば図9のブロック335を参照するとよい。
1435において、1415、1420、1425、および1430を含む処理の組を、複数回繰り返してもよい。一実施形態において、反復の回数は所定数Nmaxである。別の実施形態において、反復の数は、所定の最小閾値に対するシンボル確率の大きさによって決定されてもよい。
1440において、2つ以上のプロセッサからなる第3の組のプロセッサは並行して動作し、修正データシーケンスの2つ以上の対応サブシーケンスに基づいて元の情報ビットに対して、軟推定(例えば、LLR)を生成する。
いくつかの実施形態において、追加の処理を実行して、軟推定に基づく受信メッセージを形成してもよい。例えば、この軟推定に対してハードリミッティングが実行されて、元の情報ビットに対する硬推定を得てもよい。この硬推定はユーザへの出力として提供されたり、ネットワーク上に送出されたり、将来的な使用のために保存されてもよい。
いくつかの実施形態において、この硬推定を使用して出力信号を生成し、その出力信号をユーザデータのパケットを作成するために使用してもよい。
いくつかの実施形態において、第1、第2、第3および第4の組のプロセッサは、プロセッサの列から選択される。この場合、プロセッサ列のプロセッサは相互接続されて、平面矩形格子(または高次元格子)を形成する。第1、第2、第3および第4の組のプロセッサは、互いに素の組であることが望ましい。アレイのうちのプロセッサは、独立してプログラム可能であってもよい。
いくつかの実施形態において、第1の組のプロセッサによって実行された復調処理によって、送信シンボルに関する内部情報および外部情報が作成される。また、第1の組のプロセッサは、内部情報と外部情報との混合情報に基づいてフィードフォワード情報のブロックを作成する。例えば上述のように、この混合情報に含まれる内部情報の量は、動作の組のうちで現在までに完了した反復数の関数として増加してもよい。
いくつかの実施形態において、第3の組のプロセッサによって実行された復号化処理によって、符号化ビットに関する内部情報および外部情報が作成される。また、第3の組のプロセッサは、内部情報と外部情報との混合情報に基づいてフィードバック情報のブロックを作成する。例えば上述のように、この混合情報に含まれる内部情報の量は、前記組の動作の現在までに完了した反復数の関数として増加してもよい。
いくつかの実施形態において、シンボルデータシーケンスの2つ以上のサブシーケンスの少なくとも1つは、フォワード収束領域を含む。このフォワード収束領域は、復調処理のフォワードトレリスの走査において収束を得るために使用されるが、フィードフォワード情報の対応ブロックを作成するために使用されない。例えば、図13Aを参照した上記説明を参照するとよい。一実施形態において、例えば図12に示すようにシンボルデータシーケンスの2つ以上のサブシーケンスのそれぞれは、サブシーケンスのうちの最初のサブシーケンスを除いて、フォワード収束領域を含む。
いくつかの実施形態において、フォワード収束領域の長さを、動作の組のうちで現在までに完了した反復数の関数として減少させる。
いくつかの実施形態において、シンボルデータシーケンスの2つ以上のサブシーケンスの少なくとも1つは、バックワード収束領域を含む。このバックワード収束領域は、復調処理のバックワードトレリスの走査において収束を得るために使用されるが、フィードバックワード情報の対応ブロックを作成するために使用されない。例えば、図13Bを参照した上記説明を参照するとよい。一実施形態において、例えば図12に示すようにシンボルデータシーケンスの2つ以上のサブシーケンスのそれぞれは、サブシーケンスのうちの最後のサブシーケンスを除いて、バックワード収束領域を含む。
いくつかの実施形態において、バック収束領域の長さを、動作の組のうちで現在までに完了した反復数の関数として減少させる。
いくつかの実施形態において、デパンクチャの動作は、修正データシーケンスのパンクチャ位置にあらかじめ演算された値を投入することを含む。この場合、あらかじめ演算された値は、動作の組の前の反復における(復号化処理で)演算されたフィードバック情報のブロックにおける対応位置からの指定要素(LLR成分)である。例えば、シーケンス{L(bk|y)}のパンクチャ位置には、前の反復の復号化処理で演算されたフィードバックシーケンス{L(bk|p)}における対応位置からの値が投入(充填)されてもよい。
いくつかの実施形態において、前記復調処理は、第1の組の各プロセッサが対応する復調トレリスを介してフォワードパスおよびバックワードパスを実行することを含む。この場合、第1の組のプロセッサのうちの所与のプロセッサにおいて、フォワードパスは、所与のシンボル位置におけるアルファベクトルを算出し、アルファベクトルが零ベクトルに等しいという判断に応じてベクトルEに等しいアルファベクトルを設定することを含む。ここで、ベクトルEの全成分は、値1/Ns1などの小さな正の数と等しい。Ns1は復調トレリスにおける状態数である。
いくつかの実施形態において、前記復号化処理は、第3の組の各プロセッサが対応する復号化トレリスを介してフォワードパスおよびバックワードパスを実行することを含む。この場合、第3の組のプロセッサのうちの所与のプロセッサにおいて、フォワードパスは、所与のデータ位置でアルファベクトルを算出し、アルファベクトルが零ベクトルに等しいという判断に応じてベクトルEに等しいアルファベクトルを設定することを含む。ここで、ベクトルEの全成分は、値1/Ns2などの小さな正の数と等しい。Ns2は復号化トレリスにおける状態数である。
1組の実施形態において、システム1450は、図15Bに示すように構成されてもよい。前記システム1450は、制御ユニット1455と、2つ以上のプロセッサからなる第1の組1460と、2つ以上のプロセッサからなる第2の組1470とを備えてもよい。図7および図8を参照して上述された前記システムは、システム1450の実施形態として解釈されてもよい。
2つ以上のプロセッサからなる第1の組1460は、第1のプログラムコードで構成されてもよい。この場合、第1のプログラムコードは、第1の組のプロセッサに実行されると、第1の組のプロセッサがフィードバックデータシーケンスの対応部分を用いて、受信シンボルシーケンスの重複部分に対して復調処理を並行して実行するようにして、フィードフォワード情報を得てもよい。第1の組の各プロセッサは、第1のプログラムコードを格納する命令メモリを備えてもよい。
2つ以上のプロセッサからなる第2の組1470は、第2のプログラムコードで構成されてもよい。この場合、第2のプログラムコードは、第2の組のプロセッサに実行されると、第2の組のプロセッサが、フィードフォワード情報にデインターリーブおよびデパンクチャを実行したものの重複部分に対して復号化処理を並行して実行するようにして、フィードバック情報を得てもよい。フィードバックデータシーケンスは、フィードバック情報にインターリーブおよびパンクチャを実行したものである。第2の組の各プロセッサは、第2のプログラムコードを格納する命令メモリを備えてもよい。
制御ユニット1455は、交互に第1の組の各プロセッサに第1のプログラムコードを実行させ、第2の組の各プロセッサに第2のプログラムコードを実行させるように構成されてもよい。例えば、制御ユニットは、制御プロセッサとメモリとを備えてもよい。ここで、メモリは制御プロセッサによって実行可能なプログラム命令を格納する。実行されると、プログラム命令は制御ユニットに第1の組の各プロセッサと第2の組の各プロセッサとを交代させるようにする。
プロセッサの第2の組1470は、例えば様々に上述のように、フィードフォワード情報にデインターリーブおよびデパンクチャを実行したものの重複部分に対して並行して動作して、元の情報ビットに対する推定を生成するように構成されてもよい。
いくつかの実施形態において、例えば様々に上述のように、プロセッサの第1の組1460は、復調処理および復号化処理を含む1組の動作の現在までに完了した反復数の関数として、フィードフォワード情報に含まれる内部情報の量を増加させるように構成されてもよい。さらに、例えば様々に上述のように、プロセッサの第2の組1470は、現在までに完了した反復数の関数として、フィードバック情報に含まれる符号化ビットに関する内部情報の量を増加させるように構成されてもよい。
例えば図13Aを参照して上述したように、いくつかの実施形態において、受信シンボルシーケンスの重複部分の少なくとも所与の一部はフォワード演算間隔を含む。第1の組のプロセッサのうちの所与のプロセッサは、復調処理の一部としてフォワード演算間隔において、(その命令メモリ内に格納されている第1のプログラムコードによって)フォワードパス演算を実行するように構成される。フォワード演算間隔の最初の部分は、フォワードパス演算の収束を得るために使用されるが、フィードフォワード情報の判断のためには使用されない。例えば、図13Aを参照して説明したフォワード助走間隔を参照するとよい。
いくつかの実施形態において、例えば様々に上述のように、上記所与のプロセッサは、復調処理および復号化処理を含む1組の動作の現在までに完了した反復数の関数として、フォワード演算間隔の最初の分の長さを減少させるように構成されてもよい。
例えば図13Bを参照して上述したように、いくつかの実施形態において、受信シンボルシーケンスの重複部分の所与の一部はバックワード演算間隔を含む。第1の組のプロセッサのうちの所与のプロセッサは、復調処理の一部としてバックワード演算間隔において、(その命令メモリに格納されている第1のプログラムコードによって)バックワードパス演算を実行するように構成される。バックワード演算間隔の最初の部分は、バックワードパス演算の収束を得るために使用されるが、フィードフォワード情報の判断のためには使用されない。例えば、図13Bを参照して説明したバックワード助走間隔を参照するとよい。
いくつかの実施形態において、システム1450は、フィードフォワード情報にデパンクチャおよびデインターリーブを実行して修正データシーケンスを得るように構成された1つ以上のプロセッサからなる第3の組1465を含んでもよい。このデパンクチャの動作は、あらかじめ演算された値を修正データシーケンスのパンクチャ位置に投入することを含んでもよい。あらかじめ演算された値とは、例えば様々に上述のように、復号化処理の一部として第2の組の各プロセッサによってあらかじめ演算された値である。
いくつかの実施形態において、システム1450は、例えば様々に上述のように、フィードバック情報にインターリーブおよびパンクチャを実行して修正フィードバックシーケンスを得るように構成された1つ以上のプロセッサからなる第4の組1475を含んでもよい。
いくつかの実施形態において、同一の組の各プロセッサは、インターリーブ/パンクチャおよびデインターリーブ/デパンクチャの両方を司ってもよい。
いくつかの実施形態において、第1のプログラムコードは、第1の組のプロセッサのうちの所与のプロセッサ(任意のプロセッサなど)によって実行されると、所与のプロセッサが、復調処理の一部として対応する復調トレリスを介してフォワードパスおよびバックワードパスを実行するようにする。この場合、フォワードパスは、所与のシンボル位置におけるアルファベクトルを算出し、アルファベクトルが零ベクトルに等しいという判断に応じてベクトルEに等しいアルファベクトルを設定することを含む。ここで、ベクトルEの全成分は、小さな正の数と等しい。
いくつかの実施形態において、第1のプログラムコードは、第1の組のプロセッサのうちの所与のプロセッサ(任意のプロセッサなど)によって実行されると、所与のプロセッサが、復調処理の一部として対応する復調トレリスを介してフォワードパスおよびバックワードパスを実行するようにする。この場合、バックワードパスは、所与のシンボル位置におけるベータベクトルを算出し、ベータベクトルが零ベクトルに等しいという判断に応じてベクトルEに等しいベータベクトルを設定することを含む。ここで、ベクトルEの全成分は、小さな正の数と等しい。
1組の実施形態において、図16Aに示すように、受信シンボルを処理して送信情報を再生する方法を実行してもよい。図10および図中に記載の説明は、本方法の一実施形態として解釈されてよい。
1510において、シンボルデータシーケンスが受信されてもよい。例えば、このシンボルデータシーケンスは、図3や図10を参照して上述したように、フィルタモジュール310によって提供されてもよい。
1515において、2つ以上のプロセッサからなる第1の組は、フィードバックデータシーケンスの2つ以上の対応サブシーケンスを用いて、シンボルデータシーケンスの2つ以上の対応サブシーケンスに対して復調処理を並行して実行し、フィードフォワード情報の2つ以上の対応ブロックを生成する。例えば、図10のブロック910を参照するとよい。
1520において、1つ以上のプロセッサからなる第2の組が、フィードフォワード情報の2つ以上のブロックから組み立てられた第1の合成シーケンスに対してデパンクチャおよびデインターリーブを実行して、修正データシーケンスを生成する。例えば、図10のブロック920を参照するとよい。
1525において、2つ以上のプロセッサからなる第1の組が、修正データシーケンスの2つ以上の対応サブシーケンスに対して復号化処理を並行して実行して、フィードバック情報の2つ以上の対応するブロックを生成する。例えば図10のブロック910を参照するとよい。
1530において、1つ以上のプロセッサからなる第2の組が、フィードバック情報の2つ以上のブロックから組み立てられた第2の合成シーケンスに対してインターリーブおよびパンクチャを実行して、フィードバックデータシーケンスを生成する。例えば図10のブロック920を参照するとよい。
1535において、1515、1520、1525、および1530を含む処理の組を複数回繰り返してもよい。一実施形態において、反復の回数は所定数Nmaxである。別の実施形態において、反復の数は、所定の最小閾値に対するシンボル確率の大きさによって決定されてもよい。
1540において、2つ以上のプロセッサからなる第1の組のプロセッサは並行して動作し、修正データシーケンスの2つ以上の対応サブシーケンスに基づいて元の情報ビットに対して、軟推定(例えば、LLR)を生成する。
いくつかの実施形態において、追加の処理を実行して、軟推定に基づく受信メッセージを形成してもよい。例えば、この軟推定に対してハードリミッティングが実行されて、元の情報ビットに対する硬推定を得てもよい。この硬推定はユーザへの出力として提供されたり、ネットワーク上に送出されたり、将来的な使用のために保存されてもよい。
いくつかの実施形態において、この硬推定を使用して出力信号を生成し、その出力信号をユーザデータのパケットを作成するために使用してもよい。
いくつかの実施形態において、第1および第2の組のプロセッサは、プロセッサの列から選択される。この場合、例えば上述するように、プロセッサ列のプロセッサは相互接続されて、平面矩形格子(または高次元格子)を形成する。第1および第2の組のプロセッサは、互いに素の組であることが望ましい。プロセッサ列のプロセッサは、独立してプログラム可能であってもよい。
いくつかの実施形態において、復調処理によって、送信シンボルに関する内部情報および外部情報が作成される。また、第1の組のプロセッサは、内部情報と外部情報との混合情報に基づいてフィードフォワード情報のブロックを作成する。例えば上述のように、この混合情報に含まれる内部情報の量は、動作の組のうちで現在までに完了した反復数の関数として増加してもよい。
いくつかの実施形態において、復号化処理によって、符号化ビットに関する内部情報および外部情報が作成される。また、第1の組のプロセッサは、内部情報と外部情報との混合情報に基づいてフィードバック情報のブロックを作成する。例えば上述のように、この混合情報に含まれる内部情報の量は、前記組の動作の現在までに完了した反復数の関数として増加してもよい。
いくつかの実施形態において、シンボルデータシーケンスの2つ以上のサブシーケンスの少なくとも1つは、フォワード収束領域を含む。このフォワード収束領域は、復調処理のフォワードトレリスの走査において収束を得るために使用されるが、フィードフォワード情報の対応ブロックを作成するために使用されない。例えば、図13Aを参照した上記説明を参照するとよい。
いくつかの実施形態において、シンボルデータシーケンスの2つ以上のサブシーケンスの少なくとも1つは、バックワード収束領域を含む。このバックワード収束領域は、復調処理のバックワードトレリスの走査において収束を得るために使用されるが、フィードフォワード情報の対応ブロックを作成するために使用されない。例えば、図13Bを参照した上記説明を参照するとよい。
いくつかの実施形態において、デパンクチャの動作は、修正データシーケンスのパンクチャ位置にあらかじめ演算された値を投入することを含む。この場合、あらかじめ演算された値は、動作の組の前の反復における復号化処理で演算されたフィードバック情報のブロックの対応位置からの指定要素である。例えば、シーケンス{L(bk|y)}のパンクチャ位置には、前の反復の復号化処理で演算されたフィードバックシーケンス{L(bk|p)}における対応位置からの値が投入(充填)されてもよい。
いくつかの実施形態において、前記復調処理は、第1の組の各プロセッサが復調トレリスを介してフォワードパスおよびバックワードパスを実行することを含む。この場合、第1の組のプロセッサのうちの所与のプロセッサにおいて、フォワードパスは、所与のシンボル位置におけるアルファベクトルを算出し、アルファベクトルが零ベクトルに等しいという判断に応じてベクトルEに等しいアルファベクトルを設定することを含む。ここで、ベクトルEの全成分は、小さな正の数と等しい。例えば、小さな正の数は値1/Ns1でもよい。Ns1は復調トレリスにおける状態数である。
いくつかの実施形態において、前記復号化処理は、第1の組の各プロセッサが復調トレリスを介してフォワードパスおよびバックワードパスを実行することを含む。この場合、第1の組のプロセッサのうちの所与のプロセッサにおいて、フォワードパスは、所与のデータ位置でアルファベクトルを算出し、アルファベクトルが零ベクトルに等しいという判断に応じてベクトルEに等しいアルファベクトルを設定することを含む。ここで、ベクトルEの全成分は、小さな正の数と等しい。例えば、小さな正の数は値1/Ns2でもよい。Ns2は復号化トレリスにおける状態数である。
いくつかの実施形態において、動作1515の反復は、復調プログラムを第1の組のプロセッサのうちの各プロセッサの命令メモリへ読み込むことを含む。この場合、復調プログラムは、第1の組の各プロセッサによって実行されると、プロセッサに、対応シンボルデータサブシーケンスおよびフィードバックデータシーケンスの対応サブシーケンスに対してフォワード/バックワードアルゴリズムを実行させる。動作1525の各反復は、復号化プログラムを第1の組のプロセッサのうちの各プロセッサの命令メモリへ読み込むことを含む。この場合、復号化プログラムは、第1の組の各プロセッサによって実行されると、プロセッサに、修正データシーケンスの対応サブシーケンスに対してフォワード/バックワードアルゴリズムを実行させる。これらの実施形態は、例えば、各プロセッサの命令メモリが小容量で復調プログラム全体および復号化プログラム全体の両方を格納できない場合に使用してもよい。
1組の実施形態において、システム1550は、図16Bに示すように構成されてもよい。システム1550は、制御ユニット1555と、プロセッサの第1の組1560とを含んでもよい。図8および図9を参照して説明した前記システムは、システム1550の一実施形態として解釈されてもよい。
2つ以上のプロセッサからなる第1の組1560は、少なくとも第1の計算位相時の第1のプログラムコードと、少なくとも第2の計算位相時の第2のプログラムコードとで構成されてもよい。第1のプログラムコードは、例えば様々に上述のように、第1の組のプロセッサに実行されると、第1の組のプロセッサがフィードバックデータシーケンスの対応部分を用いて、受信シンボルシーケンスの重複部分に対して復調処理を並行して実行するようにして、フィードフォワード情報を得てもよい。第2のプログラムコードは、例えば様々に上述のように、第1の組のプロセッサに実行されると、第1の組のプロセッサがフィードフォワード情報にデインターリーブおよびデパンクチャを実行したものの重複部分に対して復号化処理を並行して実行するようにして、フィードバック情報を得てもよい。フィードバックデータシーケンスは、フィードバック情報にインターリーブおよびパンクチャを実行したものである。
制御ユニット1555は、交互に第1の組の各プロセッサに第1のプログラムコードおよび第2のプログラムコードを実行させるように構成されてもよい。例えば、制御ユニットは、制御プロセッサとメモリとを備えてもよい。ここで、メモリは制御プロセッサによって実行可能なプログラム命令を格納する。実行されると、プログラム命令は制御ユニットに第1の組の各プロセッサと第2の組の各プロセッサとを交代させるようにする。
プロセッサの第1の組1560は、例えば様々に上述のように、フィードフォワード情報にデインターリーブおよびデパンクチャを実行したものの重複部分に対して並行して動作して、元の情報ビットに対する推定を生成するように構成されてもよい。
いくつかの実施形態において、例えば様々に上述のように、プロセッサの第1の組1560は、復調処理および復号化処理を含む1組の動作の現在までに完了した反復数の関数として、フィードフォワード情報に含まれる内部情報の量を増加させるように構成されてもよい。さらに、例えば様々に上述のように、プロセッサの第1の組は、現在までに完了した反復数の関数として、フィードバック情報に含まれる内部情報の量を増加させるように構成されてもよい。
例えば図13Aを参照して上述したように、いくつかの実施形態において、受信シンボルシーケンスの重複部分の少なくとも所与の一部はフォワード演算間隔を含む。第1の組のプロセッサのうちの所与のプロセッサは、復調処理の一部としてフォワード演算間隔において、(例えば、上記所与のプロセッサの命令メモリに格納されている第1のプログラムコードによって)フォワードパス演算を実行するように構成されてもよい。図13Aを参照して説明したように、フォワード演算間隔の最初の部分は、フォワードパス演算の収束を得るために使用されるが、フィードフォワード情報の判断のためには使用されない。
いくつかの実施形態において、例えば様々に上述のように、上記所与のプロセッサは、復調処理および復号化処理を含む1組の動作の現在までに完了した反復数の関数として、フォワード演算間隔の最初の分の長さを減少させるように構成されてもよい。
例えば図13Bを参照して上述したように、いくつかの実施形態において、受信シンボルシーケンスの重複部分の所与の一部はバックワード演算間隔を含む。第1の組のプロセッサのうちの所与のプロセッサは、復調処理の一部としてバックワード演算間隔において、(上記所与のプロセッサの命令メモリに格納されている第1のプログラムコードによって)バックワードパス演算を実行するように構成されてもよい。図13Bを参照して説明したように、バックワード演算間隔の最初の部分は、バックワードパス演算の収束を得るために使用されるが、フィードフォワード情報の判断のためには使用されない。
いくつかの実施形態において、例えば様々に上述のように、システム1550は、また、フィードフォワード情報にデパンクチャおよびデインターリーブを実行して修正データシーケンスを得るように構成された1つ以上のプロセッサからなる第2の組を含んでもよい。このデパンクチャの動作は、あらかじめ演算された値を修正データシーケンスのパンクチャ位置に投入することを含んでもよい。あらかじめ演算された値とは、復号化処理の一部として第1の組の各プロセッサによってあらかじめ演算された値である。
いくつかの実施形態において、第1のプログラムコードは、第1の組のプロセッサのうちの所与のプロセッサ(任意のプロセッサなど)によって実行されると、所与のプロセッサが、復調処理の一部として復調トレリスを介してフォワードパスおよびバックワードパスを実行するようにする。フォワードパスは、所与のシンボル位置におけるアルファベクトルを算出し、アルファベクトルが零ベクトルに等しいという判断に応じてベクトルEに等しいアルファベクトルを設定することを含んでもよい。ここで、ベクトルEの全成分は、小さな正の数と等しい。
いくつかの実施形態において、第1のプログラムコードは、第1の組のプロセッサのうちの所与のプロセッサ(任意のプロセッサなど)によって実行されると、所与のプロセッサが、復調処理の一部として復調トレリスを介してフォワードパスおよびバックワードパスを実行するようにする。バックワードパスは、所与のシンボル位置におけるベータベクトルを算出し、ベータベクトルが零ベクトルに等しいという判断に応じてベクトルEに等しいベータベクトルを設定することを含んでもよい。ここで、ベクトルEの全成分は、小さな正の数と等しい。
いくつかの実施形態において、受信機120は、並列プロセッサアーキテクチャ(例えば、Hyper−Xアーキテクチャなど)を用いて上述の重複ウィンドウ法を実行してもよい。重複ウィンドウ法は、例えば様々に上述のように、受信パケットのいくつかの重複ウィンドウ(サブシーケンス)に対する反復的メッセージパッシングアルゴリズムを並列化する。ウィンドウは受信パケットと比べてサイズが小さいため、待ち時間は大幅に減少し、中間パスメトリックに対するメモリ要件も大幅に縮小する。これによって、助走間隔で演算されたデータが破棄されるため、処理オーバーヘッドはあるものの、メッセージパッシングアルゴリズムが受信パケット全体(各ウィンドウが適宜初期化された場合)に対して実行された場合に得られるものと同様の結果が得られる。
いくつかの実施形態において、各PE(処理要素)の命令メモリは、復調プログラムおよび復号化プログラムの両方を格納するのに十分な容量を有する。したがって、ブロック910(図10参照)の各PEは、各半反復の終わりに、プログラムコードを再読み込みするために発生しているウェイト(待ち)内において復調プログラムと復号化プログラムとの間で即座に飛び越しができる。
他の実施形態において、各PEの命令メモリは容量が小さくて、復調プログラムおよび復号化プログラムを同時に格納できない。そのため、並列プロセッサアーキテクチャの制御ユニットは、各半反復の間に命令メモリを再読み込みしてもよい。すなわち、各半反復の終わりに、復調プログラムの読み込みと復号化プログラムの読み込みを交代させてもよい。なお、各関数が最小限のオーバーレイで直接コードを再利用できるように、プログラムコードをパラメータ化すると、各プログラム全体を格納する必要性は軽減する。
上述のように、デインターリーブ/デパンクチャユニット325は、パンクチャ部230がデータを破棄した場所へ零値を挿入してもよい。代替の実施形態において、デインターリーブ/デパンクチャ処理325は、零を投入するかわりにメッセージパッシングアルゴリズムの前の反復において復号化処理330によって算出された適切なLLR値L(bk|p)を投入してもよい。本明細書において、デパンクチャ処理においてあらかじめ演算された情報を用いる方法を、「遡及デパンクチャ」と呼ぶ。連続した各反復のデパンクチャビット位置が、前の反復の各ビット位置に対して求められた推定を再度確認する機会が与えられるコールドスタートから初期化される必要がないため、遡及デパンクチャのねらいは収束を加速することにある。
上述のように、復調処理および復号化処理の両方がフォワード演算とバックワード演算とを実行する。固定小数点実装において、フォワード演算の結果、全零状態、すなわち、所与のシーケンス位置で算出されたアルファベクトルが零ベクトルに等しい状態になる可能性がある。この状態が起きた場合、何も行わなければ、後続の全アルファベクトルは零に等しくなる(あるアルファベクトルと次のアルファベクトルとの間の関係の線形特性のため)。バックワード演算についても同様である。したがって、フォワード演算の結果、零ベクトルに等しいアルファベクトルとなった場合、アルファベクトルは、成分がすべてεに等しい(εは小さな値)ベクトルEに等しく設定される。例えば、一実施形態において、ε=1/Nsである。ここでNsは使用トレリスの状態数である。アルファベクトルの全成分が非負であるため、全零状態の検査は、アルファベクトルの全成分を合計するだけで実行できる。合計が零に等しい場合、全零状態が発生している。(合計が零に等しくない場合、合計を使用してアルファベクトルを正規化してもよい。正規化によって、フォワード演算は、アルファベクトル成分が使用可能な動的領域を確実に有効利用できるようになる)。
同様に、バックワード演算の結果、ベータベクトルが零ベクトルに等しくなった場合、ベータベクトルはベクトルEに等しく設定される。この場合も、全零状態発生の検査は、ベータベクトルの成分を合計することによって実行可能である。(合計が零に等しくない場合は、合計を使用してベータベクトルを正規化してもよい)。
受信機120のいくつかの実施形態は、SLICE2.1の兵士の無線の波形(Soldier Radio Waveform(SRW)を実現するように構成されてもよい。1組の実施形態において、受信機120は、2.64(CPM)および0.936(QBL−MSK)Mb/sのいずれか一方CC Mode非拡散データレートで動作するように構成されてもよい。実施形態の別の組において、受信機120は、112.5および52.25kb/s(DBPSK)のいずれか一方のCC Mode拡散データレートで動作するように構成されてもよい。なお、受信機120は、上記または他のデータレートの有限集合に限定されない。
いくつかの実施形態において、受信機120はSLICE2.1リンク条件を満たすように設計された大規模システムの一部として使用される。図17は、1組の実施形態による、CC Modeデータレートに対するS/N比の表である。変数Ebは、ビット毎のエネルギーを表す。変数Esはシンボル毎のエネルギーを表す。変数N0はノイズパワースペクトル密度を表す。Eb/N0は、ピット毎に正規化された信号対ノイズ比の測定単位である。「Convcode」は、用語「畳込みコード」の縮約形である。
図18は、図4の前記方法を並列化するために使用可能な処理システムの一実施形態を示すブロック図である。例えば、この処理システムは、図3、図8、図9、図14および図15に開示された方法など、本明細書において開示された方法を実行するために使用可能である。本説明において、処理システムは数学的行列アルゴリズムプロセッサ(mathematical matrix algorithm processor:MMAP)と呼ばれる場合がある。ただし、この名称の使用によって、本発明の範囲を限定する意図はない。図示の実施形態において、MMAP1710は、複数の動的設定可能なプロセッサ(Dynamically Configurable processor:DCP)と複数の動的設定通信器(動的に構成可能な通信装置:DCC、「動的設定可能通信素子」とも呼ばれる)とを備える。各DCPおよび各DCCは、データおよび命令を互いに伝達するために接続されている。本明細書で使用されるように、DCPはDCPノードとも呼ばれ、DCCはDCCノードとも呼ばれる。いくつかの実施形態において、DCPは図14および図15を参照して上述したプロセッサの役割を果たす。DCCは図14および図15を参照して上述したDMRの役割を果たす。
処理システム1710は、汎用マイクロコンピュータ(GPMC)、DSP、FPGA、またはASICが現在使用される様々なシステムおよびアプリケーションで使用可能である。したがって、例えば、処理システム1710は、様々な種類のコンピュータシステムまたはその他の演算を必要とする装置において使用可能である。
一実施形態において、DCPは、データを処理するために構成された1つ以上の算術論理演算ユニット(ALU)と、ALUを制御するために構成された1つ以上の命令処理ユニット(IPU)と、命令またはデータを保持するために構成された1つ以上のメモリと、様々な種類のマルチプレクサおよびデコーダとを備えてもよい。そのような実施形態は、複数のポート(「プロセッサポート」)を含んでもよく、そのポートの一部はDCCとの接続のために構成され、他は他のDCPとの接続のために構成されることができる。図20はDCPの一実施形態のブロック図であり、以下で説明する。
一実施形態において、DCCは、データおよび命令を保持するように構成された1つ以上のランダムアクセスメモリ(RAM)と、構成可能なコントローラと、クロスバースイッチなどのネットワークスイッチと、レジスタと、マルチプレクサとを備えてもよい。そのような実施形態は、複数のポート(「プロセッサポート」)を含んでもよく、そのポートの一部はDCPとの接続のために構成され(本明細書でDCP型ポートと呼ばれる)、他は他のDCCとの接続のために構成される(本明細書でDCC型ポートと呼ばれる)ことができる。図21は、DCCの一実施形態のブロック図であり、以下で説明する。なお、DCCまたはDCPと接続されているにかかわらず、所与のポートに対して、特定のクロック周期でその所与のポートを介して転送可能なデータ量は、様々な実施形態において変化する。例えば、一実施形態において、所与のポートは、クロック周期毎に1ワードのデータを転送するように構成されてもよい。別の実施形態において、所与のポートはクロック周期毎に複数のワードのデータを転送するように構成されてもよい。さらに別の実施形態において、所与のポートは時分割多量化などの技術を用いて、複数のクロック周期で1ワードのデータを転送し、それによってポートを備える物理接続の数を減らしてもよい。
MMAP1710の一実施形態において、各DCPは命令を格納するための小ローカルメモリを含んでもよく、さらに微小ローカルデータ記憶装置を含んでもよい。そのような実施形態において、各DCPの近接DCCは、所与のDCPに対してオペランドを提供するように構成されてもよい。特定の実施形態において、多くのDCP命令に対して、所与のDCPが近接DCCからオペランドを読み込んでALU動作を実行し、1クロック周期において、ALU結果を所与の近接DCCに格納してもよい。それによって、実行直後のクロック周期において、1DCPからのALU結果が他のDCPでも使用可能となる。このように結果を生成することによって、近接DCPの実行が密接に連携し合う、または「密着」することが可能となる。本明細書において、このような連携を連携処理と呼ぶ。
本明細書で使用しているように、所与のDCCまたはDCPからみると、近接DCCまたはDCPは、特定の待ち時間なしに所与のDCCまたはDCPがアクセス可能なDCCまたはDCPを指す。いくつかの実施形態において、この近接関係の範囲を定義する待ち時間は、例えばクロック速度などの要素に応じて変化する場合がある。さらに、いくつかの実施形態において、複数の近接度を定義してもよい。この場合、近接度は様々なアクセス待ち時間に対応してもよい。例えば、一実施形態において、「最近接」は、要求された同一クロック周期中にデータを供給できる装置として定義してもよい。「次最近接」は、要求後の1クロック周期内でデータを供給できる装置として定義してもよい。以下同様である。別の実施形態において、近接関係を定量化するために他の測定基準を使用することも考えられる。
所与のMMAP実施形態において、あるDCCおよびDCPは、他のDCCおよびDCPに論理的に隣接してもよい。本明細書で使用するように、「論理的隣接」は、例えば、あるDCCと別のDCC、またはあるDCCとあるDCPなど、2つの装置間の関係を指し、それによって1つの装置の1つ以上のポートが他の装置のそれぞれのポートに対して介在DCCまたはDCPを通過せずに直接接続される。さらに、所与のMMAP実施形態において、あるDCCおよびDCPは他のDCCおよびDCPに対して物理的に隣接してよい。本明細書で使用するように「物理的隣接」は、例えば、あるDCCと別のDCC、またはあるDCCとあるDCPなど、2つの装置間の関係を指し、それによってそれ以外のDCCまたはDCPが2つの装置間に物理的に配置される。
いくつかのMMAP実施形態において、論理的や物理的に近接したDCCやDCPなどの装置も近接している、または近接装置である。ただし、いくつかの実施形態において、所与の装置間の論理的/物理的隣接度は近接関係、または特定の近接関係度を必要としない。例えば、一実施形態において、あるDCCが非常に遠くに配置された別のDCCに直接接続されてもよい。そのような対は論理的に近接しているが物理的に近接していない場合があり、DCC間の信号伝搬時間が長すぎて近接装置の待ち時間条件を満たさない場合がある。同様に、一実施形態において、あるDCCが別のDCCに物理的に近接しているが直接接続されず、したがって論理的に近接していない場合がある。あるDCCから別のDCCへのアクセスは、1つ以上の中間ノードをトラバースし、結果的に発生した伝送遅延が大きくなりすぎて近接装置の待ち時間条件を満たさない場合がある。
MMAP1710の所与の実施形態の技術および実装に応じて、DCCRAMのサイズとともにDCCの複数のポートのうちの特定数のポートは、DCCの所望の実行速度およびサイズ全体に対してバランスがとられることも可能である。例えば、あるDCC実施形態は、4つのDCP型ポートと、4つのDCC型ポートと、4千ワードのメモリとを備えてもよい。このDCC実施形態は、ダイレクトメモリアクセス(DMA)機構を提供するように構成されてもよい。DMA機構によって、DCPが結果を演算している間に、所与のDCCが他のDCC間またはMMAP1710外部の場所間でデータをコピーしたりできる。
MMAP1710の一実施形態において、データおよび命令は様々な方法でDCC間で転送可能である。シリアルバスをMMAP1710中の全メモリに対して提供してもよい。そのようなバスは、外部メモリからMMAP1710を初期化したり、MMAPデータ構造の検査をサポートするために使用可能である。短距離の転送に対しては、所与のDCPは、近隣DCCとデータを直接移動するようにプログラムされてもよい。データまたは命令を長距離において転送するには、DCCのネットワークおいて通信パスウェイを動的に作成および破壊してもよい。
上記のような長距離データ転送を目的として、MMAP1710内で相互接続されているDCCネットワークは、通信パスウェイに対して交換ルーティング構造(switched routing fabric:SRF)を形成してもよい。そのような実施形態において、SRFにおいて通信パスウェイを管理する少なくとも2つの方法がある。第1の方法はグローバルプログラミングである。グローバルプログラミングにおいて、パスはソフトウェア制御によって(例えば、人間のプログラマまたはルーティング機能をもったコンパイラのいずれかによって)選択される。命令はDCC構成コントローラに対してコードされ、クロスバーを適宜プログラムする。パスウェイを作るには、パスウェイに沿った各DCCを特定のルーティング機能で明確にプログラムされてもよい。パスウェイが頻繁に作成および破壊される動的な環境では、大量のクロスバー構成コードが必要とされる場合があり、それによって、その記憶装置も潜在的に制限されたDCCRAMリソースを消費してしまう場合がある。
通信パスウェイを管理する第2の方法は「ワームホールルーティング」と呼ばれる。ワームホールルーティングを実行するためには、各DCCがワームと呼ばれる言葉のシーケンスの進行をSRFを介して停止および再スタートするステアリング機能および機構の組を備えてもよい。ステアリング機能は全通信パスウェイによって共通して使用され再利用されることが可能なため、DCCRAMを占有する構成コードの量は上述のグローバルプログラミング法に比べて非常に小さい。このワームホールルーティング法において、パスウェイによって使用される特定のリンクを選択するためには、ソフトウェア制御を依然として使用してもよい。ただし、パスウェイ作成(本明細書ではセットアップとも呼ぶ)の処理と破壊/リンク解放(本明細書ではテアダウンとも呼ぶ)は、最小限のソフトウェアの介在で、ハードウェア上で実行されてもよい。
パスウェイ上でのデータワードの潜在的な損失を防ぐために、MMAP1710の実施形態は、パスウェイに沿って受信機と送信機との間でフロー制御を実行してもよい。フロー制御とは、対応する受信機がデータを受信しなくなった場合に送信機を停止でき、対応する受信機がデータを受信可能な状態になったときに送信機を再起動させる機構である。パスウェイ上のデータのフローの停止および再スタートはワームホールルーティングにおけるワームの進行の停止および再スタートとの類似点が非常に多いため、上記2つの方法は統合した形態で組み合わせることができる。
一実施形態において、MMAP1710は複数のDCPおよびDCCを備えてもよく、それぞれのDCPは同一でよく、それぞれのDCCは同一でよく、均一なアレイにおいて互いに接続される。均一なアレイにおいて、大部分のDCPは同一で、大部分のDCPのそれぞれはDCCに対して同一の接続数を有してもよい。また、均一なアレイにおいて、大部分のDCCは同一で、大部分のDCCのそれぞれは他のDCCおよびDCPに対して同一の接続数を有してもよい。一MMAP実施形態のDCPおよびDCCは、ほぼ一様に分散している。本明細書で用いるように、ほぼ一様な分散とは、アレイの小領域の大部分においてDCP対DCCの比率が一貫性がある配列を指す。
ほぼ一様に配置された均一なアレイは、予測可能な相互接続パターンを実現したり、アレイ全体でのソフトウェアモジュール再利用を可能とするなど、有益な特性を有する場合がある。一実施形態において、均一なアレイはDCPおよびDCCの少数のインスタンスの設計および検査を可能とする場合がある。したがって、DCCおよびDCPからなるユニットを組み立ててから、そのユニットを複数回反復および「傾けて」システムを組み立てることが可能である。この方法は、一般的なシステム要素を再利用することによって、設計と検査のコストを下げることができる。
なお、DCPおよびDCCの構成可能な特性によって、幅広く様々な不均一のふるまいをプログラムして、均一アレイ上で物理的に発生させることができる。ただし、代替の実施形態において、MMAP1710は不均一なDCCおよびDCPユニットで形成することもできる。この場合、不均一なDCCおよびDCPユニットは規則的なまたは不規則的なアレイにおいて接続したり、さらにランダムに接続してもよい。一実施形態において、DCPとDCCとの相互接続は、例えば、集積回路(IC)、セラミック基板、またはプリント回路基板(PCB)上の回路トレースとして実現されてもよい。ただし、代替の実施形態において、そのような相互接続は、電磁エネルギー(すなわち、電波または光エネルギー)、無線(すなわち、無誘導)エネルギー、粒子(電子ビームなど)、または分子上の電位などの導波路など、様々な微小通信リンクでもよい。
MMAP1710は、単一の集積回路上に実装されてもよい。一実施形態において、複数のMMAP集積回路を組み合わせて大規模システムを構築してもよい。MMAP1710の所与の実施形態は、シリコン集積回路(Si−IC)技術を用いて実装されてもよく、様々な機能を用いてその技術の特定の特性を実現してもよい。例えば、Si−ICチップ上の複数の回路を薄板に実装してもよい。それに対応して、MMAP1710の所与の実施形態は、図18に示すようなDCPとDCCの平面アレイを用いてもよい。ただし、DCPおよびDCCの異なる配置を含む代替のMMAP実施形態も考えられる。
さらに、Si−ICチップ上で使用可能な配線密度はチップ間よりも高く、各チップは、オンチップ信号とオフチップ信号とをインタフェースで接続する専用入力/出力(I/O)回路の周囲長を有してもよい。それに対応して、MMAP1710の所与の実施形態は、チップの中心にDCPおよびDCCの均一なアレイと、チップの周囲長に沿った修正DCP/DCCユニットからなる多少不均一なアレイを用いてもよい。ただし、均一なDCP/DCCユニットと修正DCP/DCCユニットの様々な配置および組み合わせを含む代替のMMAP実施形態が考えられる。
また、Si−IC回路によって実行される演算動作は熱を発生させ、その熱がICパッケージングによって除去される場合がある。ICパッケージングが増えると追加の空間が必要となる場合があり、ICパッケージングの中および周辺の相互接続によってパス長に比例した遅延が発生する場合がある。したがって、上述のように、複数のチップを相互接続することによって非常に大規模なMMAPを構築可能である。そのような複数チップのMMAP実施形態のプログラミングにおいては、チップ間の信号遅延がチップ内の信号遅延よりも非常に長いということを考慮する場合がある。
所与のSi−ICMMAP1710の実施形態において、単一のチップ上に実装可能なDCPおよびDCCの最大数を、所与のSi−IC技術によって可能となる小型化と各DCPおよびDCCの複雑度によって決定してもよい。そのようなMMAPの実施形態において、演算スループットの目標レベルを達成することを条件として、DCPおよびDCCの回路複雑度を最小化してもよい。そのようなDCPおよびDCCの最小化を、本明細書においてストリームライン化と呼ぶ場合がある。MMAP1710の一実施形態において、DCPに対するスループットの目標レベルは、同様のSi−IC技術で製作された最高のデジタル信号プロセッサ(DSP)からなる演算実行ユニットのものに匹敵することが可能である。ただし、目標DCPスループットに対する代替の基準が用いられた他のMMAP実施形態も考えられる。
いくつかの実施形態において、MMAP1710はDSPおよびFPGAアーキテクチャの最高の機能を使用できる。DSPにように、MMAP1710は、複数の処理ユニットとオンチップメモリとを備えるプログラム可能なチップである。しかしながら、DSPと比較すると、MMAP処理ユニットはストリームライン化しており、より多く存在する場合があり、チップの内外のデータ移動とともにチップ間のデータ移動の帯域幅を最大限にするように相互接続される場合がある。DSPより処理ユニットが多いと、MMAP1710は単位時間により多くの乗算を行うことができ、ストリームライン化した処理ユニットはエネルギー使用を最小限に抑えることができる。内部並列処理を有する多くのDSPはバス指向アーキテクチャの場合がある。いくつかの実施形態において、MMAP1710はバスを備えない場合もあり、むしろバス指向アーキテクチャよりも非常に高い総帯域幅を実現できるSRFに埋め込まれた近接共有ローカルメモリをDCCなどに備える場合がある。
FPGA法と比較すると、いくつかのMMAP実施形態はあまり細分化されていない。例えば、MMAPの一実施形態において、動作は自然語長(例えば、16ビット)を有しており、自然語長の倍数であるデータを用いて実行すると、演算は最も効率的となる場合がある。MMAPのいくつかの実施形態において、DCPおよびDCCはFPGAで実現される等価構造よりも密度が高い。その結果、平均配線長は短くなり、配線容量やエネルギー使用量が減少する。FPGA実装とは対照的に、MMAPのいくつかの実施形態において、MMAPの各ALUはプロセッサ(すなわちDCP)の一部の場合があり、それによって、オペランドの設定やDCCにおける周辺の高速メモリに対する結果送信を容易にすることができる。
図18に示すMMAP1710は、図示するようにDCCをDCP間に分散させることによって高速メモリに対する十分な接続をDCPに提供できる。そのような配置によって、分離(すなわち非分散)配置に比べて、所与のDCPがDCCのメモリにアクセスするのに必要な時間を減らすことができる。そのような配置を本明細書において分散格子配置と呼ぶ。図18の実施形態において、DCP対DCCの比率は1:1である。ただし、異なるDCP対DCCの比率を有する場合がある他のMMAP実施形態も考えられる。
より多くの接続方式が存在するため、図18ではDCCとDCPとの間の接続を明確に示していない。所与のMMAP実施形態に対するいくつかの可能な接続方式を以下に挙げる。
1.PlanarA−本方式では、各DCPは4つの近接DCCに対して各近接DCC上のDCP型ポートを介して接続できる。また各DCCは、4つの近接DCCに対して各近接DCC上のDCC型ポートを介して接続できる。各接続型は並列回路トレースまたは配線の組からなる。均一なアレイにおいて、接続型における配線数はアレイ全体において一定である。
2.PlanarB−直列記憶装置から初期状態を読み込むために、シリアルバスを用いてDCCとDCPとをさらに接続できる点を除いて、本方式はPlanarAと同じである。
3.PlanarC−アレイの多くの行および列によって分離されたDCC間に追加の並列接続がなされている点を除いて、本方式はPlanarBと同じである。そのような追加の接続は帯域幅を高め、遠く離れたDCC間の待ち時間を減らすことができる。
4.PlanarD−本方式はPlanarCのサブセットで、追加の接続は各DCCが超立方体の頂点である超立方体のへりを表す。
5.PlanarE−本方式はPlanarCのサブセットで、2つのアレイが密結合できるように、多くの接続で第1のチップに接続された第2のチップに対して追加の接続がなされる。
6.StackedA−本方式はPlanarCのサブセットで、追加の接続によって三次元行列が可能となる。
なお、異なる種類と数の接続を用いて異なる接続形態でDCCとDCPとが接続できる追加接続の方法が考えられる。
図18は、MMAP接続方式の一実施形態を示すブロック図である。MMAP接続方式1820は、複数のDCCおよびDCPを含み、図18のMMAPの一部を例証する。MMAP接続方式1820において、各DCPは4つの近接DCCに接続される。各DCCは、4つの近接DCCとともに4つの近接DCPに接続される。したがって、MMAP接続方式1820は上述のPlanarA接続方式を例証するものである。
MMAP接続方式1820における高帯域幅ポートに対応するために、ポート間(DCP−DCC間、またはDCC−DCC間)の接続は短く(すなわち、近隣に限定されている)、ワード全体である。すなわち、これは接続のデータ部分における導電体(線)の数は、ALUオペランドで使用されるビット数と同じであることを意味している。DCP−DCC間接続はアドレスラインを含んでもよい。DCC−DCC間接続は必ずしもアドレスラインを含まなくてよいが、フロー制御用のラインを有してもよい。
DCPノードを単純に保つことによって、大規模なアレイ(例えば、一MMAP実施形態において、16行×16列=256DCP)をわずかな費用で単一のVLSIIC上に配置してもよい。適したVLSI技術は、シリコンのバイポーラトランジスタまたは他の半導体を備えた、またはそれを備えていない相補型MOS(CMOS)電界効果トランジスタを備えてもよいが、それに限定されない。
いくつかのMMAP実施形態において、ノード間の通信はプログラムマの制御下にあってもよい。MMAPにおいて、各DCPは近接DCCと、また任意でそのDCCを介して他のDCCおよびDCPとデータ/命令をやりとりする。データの小ブロックを移動するために、DCPを連携的に使用して、一連の転送によってアレイ上でデータを一度に1ワードずつDCP毎に移動してもよい。このような方法において、発信元ノードから宛先ノードへのパスにおける第1のDCPは、クロック周期の読み出し位相中に近接DCCメモリから読み込み、クロック周期の書き込み位相中に別の近接DCCに書き込んでもよい。そのパスにおける第2のDCPは同様にデータの読み込みおよび書き出しを行い、データが宛先ノードに到着するまでこの処理は継続してよい。また、宛先ノードへの経路に沿って伝搬する際に、所与のDCPによってデータはスケール変換または正規化されてもよい。この方法を使用すると、プログラミングによってアレイ上にバケツリレーラインとツリーが設定でき、必要に応じてデータを移動できる。ただし長距離および大量のデータに対しては、データ搬送のために多くの移動が必要となり、したがって多くのDCPが、有効な演算を実行するかわりに、データを移動するだけに周期の大部分を使用することになってしまう場合がある。
長距離のブロック移動に対して、いくつかのMMAP実施形態はDCPを含まないDCC間のメモリ間転送の手段を提供してもよい。DCPは、DCC型ポートと関連づけられた特定のRAMアドレスを介して近接DCCのDCC型ポートにアクセスしてもよい。これによって、DCPはワームを送信する新規のパスウェイを作成でき、その後そのパスウェイを分解(テアダウン)する、もしくはワームを受信できる。また、DCPは、転送されるデータのブロックを近接DCCのRAMに保存してから、近接DCCがDMA動作と関連づけられている特定のRAMアドレスを介してDMA動作を開始するように指示できる。これによって、近接DCCがデータのDMA転送を調整している間に、DCPは他のタスクを進めることができる。
MMAPの様々な実施形態は、有効なアルゴリズムを実行する有益な環境を提供できる。そのようなアルゴリズム(例えば、図4の方法)はALUのフロー図に分割できる。各フロー図は、複数のフィードバック/フィードフォワードパスを含むツリー、格子、または任意のネットワークとして、MMAPアレイ上にマッピングされる。数DCPおよび数DCCを組み合わせることによって、複数ワードの正確な結果が得られるように1ALUの有限精度を拡張できる。フロー図をMMAPにマッピングすると、ノード間の距離に比例するDCP/DCCノード間の通信遅延は増加する。また、通信キューが大きい場合または頻繁に再構成が行われる場合、マッピングのために各ノードでより大きなメモリが必要となる。そのような要素は、通信遅延、待ち時間、再構成を考慮して慎重にプログラミングを行うことで補うことができる。
一MMAP実施形態は、チップ毎の多くのプロセッサと、SIMDシステムや分散MIMDシステムなどの他の種類のシステムの動作をまねるように構成可能なMIMDアーキテクチャとを有してもよい。いくつかの実施形態において、MMAPは、同時にチップの異なる領域で異なるアルゴリズムを実行させてもよい。また、省電力のため、いくつかの実施形態において、プログラマは、少なくともいくつかのDCPおよびDCCに対するクロックを選択的にイネーブルおよびディセーブルとすることができ、使用されていないDCPおよびDCCをディセーブルとすることができる。
図20は、動的に構成可能なプロセッサ(DCP)の一実施形態を示すブロック図である。DCP1900は、図18および図19に示すDCPを例証する。DCP1900は、少なくとも1つの数値演算ユニット(ALU)1920を制御するように接続された命令処理ユニット(IPU)1910を備える。また、DCP1900は、複数のマルチプレクサ(本明細書においてmuxとも呼ぶ)に接続された複数のデータ入力ポート1901を備える。この複数のマルチプレクサは順に接続されて、命令処理ユニット1910に対するプログラム読込パスのデータを選択するとともに、ALU1920に対する少なくとも第1および第2のオペランド入力を選択する。さらに、DCP1900は、ALU1920からの結果データを受信するためにmuxを介して接続された複数のデータ出力ポート1902と、命令処理ユニット1910からアドレスデータを受信するために接続された複数のアドレスポート1903とを備える。
アドレスポート1903は、近接した動的に構成可能な通信装置(DCC)に含まれたRAMデータを読み込みおよび書き込みするためのアドレスを伝達するように構成されてもよい。データ入力ポート1901およびデータ出力ポート1902は、近接DCCとデータのやりとりをするように構成されてもよい。同時動作モードにおいて、1クロック周期においてデータ出力ポート1902を介して近接DCCに書き込まれるデータは、さらなる遅延または調整オーバーヘッドがない直後のクロック周期において近接DCP1900のデータ入力ポート1901を介して読み込むことができる。
DCP1900の図示の実施形態において、データ入力ポート1901、データ出力ポート1902、およびアドレスポート1903のそれぞれは4つのポートを備える。また、単一のALU1920を図示する。ただし、他の数のデータ入力ポート、データ出力ポート、またはアドレスポートが提供されたり、異なる数のALUが備えられる代替の実施形態も考えられる。図18に示すMMAP実施形態など、矩形アレイにDCP1900の複数のインスタンスを含むMMAP実施形態において、様々なポートを各DCPノードの4つの側の周辺に均等に分散してもよい。
DCP1900は、データワードに対して数値演算ユニット動作を実行するように構成されてもよい。この場合、選択動作は、IPU1910によって処理されている現在の命令によって決まる。柔軟なプログラミングを可能にするため、IPU1910は、複数のアドレス指定可能な記憶場所を含む少なくとも1つの命令メモリ1912と、命令デコーダ1914と、アドレスジェネレータ1916とを備えてもよく、それぞれは様々な相互接続機構を介して相互接続される。他の実施形態において、IPU1910が1つより多い命令メモリを含んでもよく、または追加の機能を含んでもよいことが考えられる。さらに、他の実施形態において、IPU1910に図示した機能は、様々な種類の機能ユニットに分割したり、単一の機能ユニットに実装されたりしてもよいことが考えられる。
IPU1910は、データ入力ポート1901に接続されたプログラム読込パスを介して、命令メモリ1912の記憶装置に対するプログラムデータを受信するように構成されてもよい。命令メモリ1912は、グローバルシリアルバス(不図示)を介して書き込みおよび読み出しを行うことができる。命令デコーダ1912による特定の命令の復号化に応じて、IPU1910はデータ入力ポート1901およびデータ出力ポート1902に接続された様々なmuxを制御して、データを近接DCCへ、または近接DCCから誘導するように構成されてもよい。IPU1910は、アドレスジェネレータ1916によって生成されたアドレスをアドレスポート1903を介して近接DCCへ運んで、例えば、そこの配置されているRAMに対して読み出しまたは書き込みを行うように構成されてもよい。また、アドレスジェネレータ1916は、命令メモリ1912から取り出されて命令デコーダ1914によって復号化される次の命令アドレスを生成するように構成されたプログラムカウンタレジスタ(不図示)を備えてもよい。
一実施形態において、DCP1900は、データレジスタファイル、データキャッシュ、またはデータオペランドまたは結果データ用にローカル記憶装置を備えなくてもよい。そのような実施形態において、DCP1900は、データオペランドの読み出しおよび結果データの書き込みが行われる高速記憶媒体として、DCP1900が直接接続されるDCCに備えられるメモリを使用するように構成されてもよい。いくつかの実施形態において、所与のDCPは同時または異なる時間に異なる近接DCCから異なるデータを得てもよい。より詳細に後述するように、いくつかの実施形態において、所与のDCPの遠隔DCCから近接DCCまでパスウェイを構築することによって、所与のDCPが、所与のDCPが直接接続されていないDCCに対してデータの読み出しおよび書き込みを行うように構成されてもよい。
DCP1900によって実行される命令は、メタ命令とともに、数値演算動作に対応してもよい。DCP命令は、2つのオペランドおよび1つの結果に対するアドレスメモリに対して十分なビット長を有してよく、それによってそれらの値が1クロック周期で読み出しおよび書き込みできる。一実施形態において、DCP1900は以下の命令を実行できる。
Add(加算)(オペランド−アドレス、オペランド−アドレス、結果−アドレス)、Subtract(減算)(オペランド−アドレス、オペランド−アドレス、結果−アドレス)、Multiply(乗算)(オペランド−アドレス、オペランド−アドレス、結果−アドレス)、Multiply and Add to last Result(最終結果まで乗算および加算)(オペランド−アドレス、結果−アドレス)、Multiply and Subtract from last Result(最終結果からの乗算および減算)(オペランド−アドレス、結果−アドレス)、Negate a number(数の取消)(タイプ、オペランドアドレス、結果−アドレス)、Absolute value of a number(数の絶対値)(タイプ、オペランドアドレス、結果アドレス)、Shift(シフト)(タイプ、オペランドアドレス、結果アドレス)、XOR(マスクアドレス、オペランドアドレス、結果アドレス)、Invert(反転)(マスクアドレス、オペランドアドレス、結果アドレス);Jump(ジャンプ)(条件、刻み幅、PC−送信先)、Repeat(反復)(開始、停止、刻み幅)、Loop(ループ)(回数、PC−ブロック始端)、Branch−on−Condition(条件分岐)(テスト、宛先)。
プレ命令は、アドレスジェネレータでインデックス作成レジスタを設定するための専用な命令である。
Store−index(指標名、値)
Stride−index(指標名、値)
なお、DCP1900が追加の命令または異なる命令組を実行してもよい他の実施形態も考えられる。いくつかの実施形態において、1つ以上のデータオペランドを必要とする所与の命令の実行中に、所与のDCPは、要求されたオペランドにアクセスするために近接DCCのメモリに直接アクセスするように構成されてもよい。
DCP1900は、メタ命令を実行するように構成されてもよい。本明細書において用いるように、メタ命令は、命令メモリ1912などのDCP命令メモリに格納された命令に対して動作を実行してもよい命令を指す。基本メタ命令は、近接DCCのRAMから命令メモリ1912を読み込んでもよい(すなわち、オーバーレイを読み込んでもよい)。DCCメモリから命令メモリを読み込むことによって、データと命令との間でメモリを分割することは、ソフトウェアプログラミングによって決定される。したがって、アプリケーションプログラマは、使用可能なメモリを最大限に活用できるようソフトウェアを最適化するとよい。いくつかの実施形態において、DCP1900は、IPU命令メモリを修正したり、テストやエラー解析、エラー回復などのためにDCCメモリに命令メモリを保存したりする他のメタ命令を含んでもよい。
ALU1920は、DCP1900の特定の実施形態で支援する命令によって定義される動作を含む、少なくとも固定小数点システムに対する演算を実行するように構成されてもよい。例えば、一実施形態において、ALU1920は、固定小数点の加算、減算、乗算、乗算累算、論理およびシフトの動作を実行するように構成されてもよい。いくつかの実施形態において、ALU1920は、精度が高められた演算を支援するために、前の演算からのキャリービット結果を保持するように構成されてもよい。他の実施形態において、ALU1920は、浮動小数点演算または特定アルゴリズム実行のために選択された専用動作を実行するように構成されてもよい。
図21は、動的に構成可能な通信装置(DCC)の一実施形態を図示したブロック図である。なお、「動的に構成可能な通信装置」および「動的に構成可能な通信素子」とは、本明細書において交換可能に使用できる。DCC2000は、図18および図19に図示したDCCを例証するものでよい。DCC2000は、SRAM制御2015に接続された複数のmuxを介してマルチポートスタティックRAM(SRAM)2025に接続された複数のDCP入力ポート2001を備える。マルチポートSRAM2025は、SRAM制御2015および複数のDCP出力ポート2002とともに、複数のアドレスデコーダ2020に接続される。アドレスデコーダ2020は、複数のDCCポートデコーダ2010およびSRAM制御2015に接続された複数のmuxを介してSRAMアドレスを受信するように接続される。DCCポートデコーダ2010は、複数のDCPアドレスポート2003からSRAMアドレスを受信するように接続される。
DCC2000は、複数のmuxおよび複数の入力レジスタ2054を介してクロスバー2050およびルーティングロジック2035に接続される複数のDCC入力ポート2004をさらに備える。クロスバー2050は、ルーティングロジック2035に接続され、ルーティングロジック2035は通信コントローラ2030に接続される。通信コントローラ2030は、複数のmuxを介してアドレスデコーダ2020に、プログラム読込パスを介してマルチポートSRAM2025に接続される。クロスバー2050は、複数の出力レジスタ2055を介して複数のDCC出力ポート2005にさらに接続される。
出力レジスタ2055は、複数のmuxを介してマルチポートSRAM2025に接続される。DCP入力ポート2001およびマルチポートSRAM2025は、それぞれルーティングロジック2035に対して入力レジスタ2054によって接続された複数のmuxを介してクロスバー2050に接続される。また、ルーティングロジック2035は、DCCポートデコーダ2010および出力レジスタ2055に接続される。
DCP入力ポート2001およびDCP出力ポート2002は、DCC2000の近接DCPからデータを受信し、データを送信するように構成されてもよい。DCPアドレスポート2003は、DCC2000の近接DCPからアドレスを受信するように構成されてもよい。DCC入力ポート2004およびDCC出力ポート2005は、DCC2000の近接DCCからデータを受信し、データを送信するように構成されてもよい。DCC2000の図示の実施形態において、DCP入力ポート2001、DCP出力ポート2002、アドレスポート2003、DCC入力ポート2004、およびDCC出力ポート2005は、それぞれ4つのポートを備える。ただし、他の数のDCP入力ポート、DCP出力ポート、アドレスポート、DCC入力ポート、またはDCC出力ポートが提供される代替の実施形態も考えられる。
マルチポートSRAM2025は、複数のアドレス指定可能な記憶場所を含んでもよく、近接DCPに対する高帯域幅データ転送を提供するように構成されてもよい。それによって、マルチポートSRAM2025はDCC2000に接続された各近接DCPに対する共有レジスタファイルとしての役割を効果的に果たすことができる。さらに、マルチポートSRAM2025は、複数の読出ポート、書込ポートおよびアドレスポートを介した複数の同時読み出しおよび書き込みアクセスに対応するように構成されてもよい。特定の一実施形態において、マルチポートSRAM2025は、複数のアドレス指定可能な記憶場所に格納された複数の値を複数の近接DCPに対してほぼ同時に提供し、複数の近接DCPから受信した複数の値を複数のアドレス指定可能な記憶場所にほぼ同時に書き込むように構成されてもよい
アドレスデコーダ2020は、所与のアクセスのアドレスを高速でマルチポートSRAM2025とインタフェース接続するのに適したフォーマット、例えば完全デコードの行および列アドレスなどに復号化するように構成されてもよい。SRAM制御2015は、適切な読出および書込ポートをイネーブルにするなどして、読出および書込中のマルチポートSRAM2025のふるまいを制御するように構成されてもよい。SRAM制御2015は、マルチポートSRAM2025に提示されたアドレスおよびデータの送信元を制御するように構成されてもよい。マルチポートSRAM2025の所与のアドレスポートに対して、SRAM制御2015は、DCCポートデコーダ2010を介してアドレスポート2003によって供給されたアドレスまたは通信コントローラ2030によって供給されたアドレスのいずれかを使用するように、アドレスデコーダ2020に対して指示してもよい。同様に、マルチポートSRAM2025の所与の書込ポートに対して、SRAM制御2015は、DCP入力ポート2001または出力レジスタ2055のいずれかからのデータを選択するようにマルチポートSRAM2025に指示してもよい。
図示する実施形態において、DCC2000は単一のマルチポートSRAM2025を備える。他の実施形態において、1つより多いマルチポートSRAMが提供されてもよく、さらにスタティックRAM以外メモリ技術を用いてよいと考えられる。様々な実施形態において、マルチポートSRAM機能は、あらゆる数のメモリ構造組織を用いて実現されてもよい。例えば、一実施形態において、メモリの複数のバンクを使用してもよい。この場合、各バンクは1つ以上のポートを含む。別の実施形態において、複数のSRAMメモリをDCCにおいて使用してもよい。この場合、各SRAMは異なる数のポートを有してもよい。また、一実施形態において、DCC2000は、マルチポートSRAM2025を読み込む、または読み込まないように構成されてもよい低帯域幅シリアルポート(不図示)を備えてもよい。そのようなシリアルポートは、例えば、ブートローダ、テスト、デバッグなどに対して有効な場合ある。
クロスバー2050は、複数の入力ポートと、複数の出力ポートとを備えてもよく、データを入力ポートから1つ以上の出力ポートにルーティングするように構成されてもよい。クロスバー2050によって実行される特定のデータルーティングは、備えられているクロスバー構成レジスタ(CCR)2051の状態によって決定してもよい。クロスバー構成レジスタ(CCR)2051は、所与の時間において事実上特定のルーティング機能に応じてルーティングロジック2035によってプログラムされてもよい。通信コントローラ2030は、特定のルーティング機能を実行するようにルーティングロジック2035をプログラムするように構成されてもよい。本明細書において、通信コントローラ2030およびルーティングロジック2035の機能は、集合的にルーティングエンジンと呼ぶ場合がある。図示の実施形態のように、階層的にルーティングエンジンを実行すると、ルーティングロジック2035によって実行されるルーティング機能は高速で動作することが可能となり(例えば、クロック周期のわずかな時間)、通信コントローラ2030は複数のクロック周期おいてルーティングパラメータを変更する柔軟性を提供してもよい。
一実施形態において、CCR2051をビット群に分割してもよく、クロスバー2050の出力ポート毎に1ビット群としてもよい。ビット群のうちのビットの数は、クロスバー入力ポートの1つを選択するのに少なくとも十分であればよい。選択された出力レジスタ2050がマルチプレクサを通り抜けると(例えば、複数のDCCリンクのうちから選択するため)、マルチプレクサを構成する(すなわち、特定のリンクを選択する)ために、ビット群毎の追加のビットが必要とされる。出力レジスタ2055のトランスペアレンシを設定するために、少なくともビット群毎に追加の1ビットが提供されてもよい。出力レジスタ2055のトランスペアレンシは、ルーティングロジック2035から出力レジスタ2055へ運ばれた出力ラッチ信号によって制御されてもよく、DCC2000全体に伝搬するデータワードの遅延を減少させるために使用されてもよい。また、入力レジスタ2054のトランスペアレンシは、ルーティングロジック2035から入力レジスタ2054へ運ばれた入力ラッチ信号によって制御されてもよく、MMAPにおけるフロー制御のための方法を提供するために使用してもよい。一実施形態において、CCR2051は、各出力レジスタ2055に対して1トランスペアレンシビットを含んでもよい。そのような実施形態において、CCR2051は、各出力レジスタ2055を入力レジスタ2054のうちの対応するものにマッピングしてもよく、各出力レジスタ2055のトランスペアレンシ状態は対応する入力レジスタ2054と関連づけられてもよい。
CCR2051は、クロック周期の各フェーズと同じ頻度で更新されてもよい。CCR2051は、プログラム読込パスを介してマルチポートSRAM2025に接続される通信コントローラ2030を用いて確定的にプログラムされてもよい。もしくは、CCR2051のプログラミングは、ルーティングロジック2035に接続されたDCC入力ポート2004を通って到着した専用制御ワードによって決定されてもよい。この制御ワードは、ルーティングロジック2035として解釈されてもよく、通信コントローラ2030に対しても与えられてもよい。
通信コントローラ2030は、1つ以上のDCC入力ポート2004から1つ以上のDCC出力ポート2005にデータをルーティングするようにクロスバー2050に指示してもよく、それによってデータをMMAPアレイにおいてパスに沿って中継してもよい。DCC2000は、データに対する追加の通信パスを提供してもよい。図示の実施形態において、マルチポートSRAM2025は、複数のmuxまたはマルチプレクサを介してDCP入力ポート2001または出力レジスタ2055のいずれかから書込ポートにおいてデータを受信してもよい。このマルチプレクサによって、通信コントローラ2030は、マルチポートSRAM2025がアイドル状態であるときにマルチポートSRAM2025にアクセスできるようになる。通信コントローラ2030は、マルチポートSRAM2025から1つのDCC出力ポート2002へデータが送信されるように誘導したり、汎用マイクロコンピュータ(GPMC)の直接メモリアクセス(DMA)と類似した方法で、1つのDCC入力ポート2004から読み出されたデータをクロスバー2050を介してルーティングして、マルチポートSRAM2025に書き込むように誘導したりするようにプログラムされてもよい。プログラム読込パスによって、通信コントローラ2030はプログラムオーバーレイをマルチポートSRAM2025から通信コントローラ2030内部の命令RAM(不図示)に動的に読み込むことができる。
さらに、図示の実施形態において、DCPがルーティングロジック2035に対するDCC出力ポートアクセス要求を書いたことを検出するために、DCCポートデコーダ2010は使用されてもよい。それによって1つのDCC出力ポート2005が要求された場合、ルーティングロジック2035は、DCP入力ポート2001を介して要求DCPから受信したデータワードを複数のマルチプレクサを介してクロスバー2050へ誘導する。この機能によって、所与のDCPは、マルチポートSRAM2025にデータワードをまず格納するのではなく、DCC出力ポート2005を介して他のDCCへデータを送信できるようになる。
以下の節は、本発明の典型的な実施形態を説明するものである。
1.(a)シンボルデータシーケンスをチャンネルから受信し、前記シンボルデータシーケンスは、送信機によってチャンネル上に送出された第2のシンボルデータシーケンスに対応し、前記第2のシンボルデータシーケンスは、関連情報ビットに基づいて前記送信機によって生成され、(b)2つ以上のプロセッサからなる第1の組は、前記シンボルデータシーケンスの2つ以上の重複サブシーケンスに対して並行して動作し、前記シンボルデータシーケンスの2つ以上の重複サブシーケンスのそれぞれは、第1のトレリスの各部に対応し、第1のトレリスは、シンボルデータシーケンスにおける冗長性を示し、前記動作が関連情報ビットに対する軟推定を生成し、この軟推定を使用して、関連情報ビットに対応する受信メッセージを形成できる方法。
2.2つ以上のプロセッサからなる前記第1の組は、プロセッサ列から選択され、プロセッサ列のプロセッサは相互接続されて、平面格子を形成する請求項1記載の方法。
3.前記方法は、さらに、複数の受信シンボルデータシーケンスのそれぞれに対して(a)および(b)を実行し、前記受信シンボルデータシーケンスの少なくとも1つに対して、前記シンボルデータシーケンスの2つ以上の重複サブシーケンスの数を調整することを含む請求項1記載の方法。
4.前記シンボルデータシーケンスの2つ以上の重複サブシーケンスの数を調整することは、前記受信シンボルデータシーケンスの長さに基づいて実行される請求項3記載の方法。
5.前記受信シンボルデータシーケンスの少なくとも1つに対して、前記シンボルデータシーケンスの2つ以上の重複サブシーケンス間の重複量を調整することをさらに含む請求項3記載の方法、
6.請求項1記載の方法において、前記第2のシンボルデータシーケンスは関連情報ビットの畳込み符号化に基づいて生成され、第1のトレリスは畳込み符号化に基づく構造を有し、シンボルデータシーケンスの2つ以上の重複サブシーケンスに対して2つ以上のプロセッサからなる第1の組が並行して実行する前記動作は、シンボルデータシーケンスの2つ以上の重複サブシーケンスに対して復号化処理を並行して実行して、シンボルデータシーケンスの2つ以上の重複サブシーケンスのそれぞれのビタビ復号化を実現することを含む方法。
7.請求項1記載の方法において、前記第1のトレリスは、前記シンボルデータシーケンスと第2のシンボルデータシーケンスとの所与の線形関係に基づいた構造を有し、シンボルデータシーケンスの2つ以上の重複サブシーケンスに対して2つ以上のプロセッサからなる前記第1の組が並行して実行する前記の動作は、シンボルデータシーケンスの2つ以上の重複サブシーケンスに対して復調処理を並行して実行し、シンボルデータシーケンスの2つ以上の重複サブシーケンスのそれぞれのビタビ等化を実現することを含む方法。
8.請求項1記載の方法において、前記送信機は元の情報ビットの畳込み符号化によって符号化ビットを得て、その符号化ビットをインターリーブすることによって関連情報ビットを生成し、(b)は、2つ以上のプロセッサからなる第1の組が符号化ビットに対する軟推定をインターリーブしたものの2つ以上の各重複サブシーケンスを用いてシンボルデータシーケンスの2つ以上の重複サブシーケンスに対して並行して動作することを含み、前記方法はさらに(c)2つ以上のプロセッサからなる第2の組は、関連情報ビットの軟推定をデインターリーブしたものの2つ以上の重複サブシーケンスに対して並行して動作し、デインターリーブしたものの2つ以上の重複サブシーケンスのそれぞれは、第2のトレリスの各部に対応し、前記第2のトレリスは畳込み符号化に対応する構造を有し、前記デインターリーブしたものの2つ以上の重複サブシーケンスに対する前記並行動作は符号化ビットに対する軟推定を生成する方法。
9.(d)(b)および(c)を複数回反復することをさらに含む請求項8記載の方法。
10.請求項9記載の方法は、前記2つ以上のプロセッサからなる第2の組が、前記関連情報ビットに対する軟推定のデインターリーブしたものの2つ以上の重複サブシーケンスに対して並行して動作して、元の情報ビットに対する軟推定を生成することを含む方法。
11.(b)は復調処理を表し、(c)は復号化処理を表し、(d)は前記シンボルデータシーケンスのターボ等化を実現する請求項9記載の方法。
12.(b)は第1の復号化処理を表し、(c)は第2の復号化処理を表し、(d)は前記シンボルデータシーケンスのターボ復号化を実現する請求項9記載の方法。
13.前記(b)および(c)の反復は、所定の閾値を超える前記符号化ビットの軟推定および関連情報ビットの軟推定に基づいて停止される請求項9記載の方法。
14.複数の受信シンボルデータシーケンスのそれぞれに対して(a)〜(d)を実行し、複数の受信シンボルデータシーケンスのうちの少なくとも1つに対する2つ以上のプロセッサからなる前記第1の組の数を調整することをさらに含む請求項9記載の方法。
15.複数の受信シンボルデータシーケンスのそれぞれに対して(a)〜(d)を実行し、複数の受信シンボルデータシーケンスのうちの少なくとも1つに対する2つ以上のプロセッサからなる前記第2の組の数を調整することをさらに含む請求項9記載の方法。
16.請求項9記載の方法は、複数の受信シンボルデータシーケンスのそれぞれに対して(a)〜(d)を実行し、受信シンボルデータシーケンスの少なくとも1つに対して前記シンボルデータシーケンスの2つ以上の重複サブシーケンスの数を調整し、受信シンボルデータシーケンスの少なくとも1つに対して関連情報ビットの軟推定のデインターリーブしたものの2つ以上の重複サブシーケンスの数を調整することをさらに含む方法。
17.請求項16記載の方法において、前記のシンボルデータシーケンスの2つ以上の重複サブシーケンスの数を調整することと、前記のデインターリーブしたものの2つ以上の重複サブシーケンスの数を調整することは、受信シンボルデータシーケンスの現在の1つの長さを受信シンボルデータシーケンスの前の1つと比べた変化に基づいて実行する方法。
18.前記シンボルデータシーケンスの2つ以上の重複サブシーケンス間の重複量を調整することをさらに含む請求項9記載の方法。
19.前記シンボルデータシーケンスの2つ以上の重複サブシーケンス間の重複量の前記調整は、前記(b)および(c)の複数の反復の少なくとも1つに対して実行される請求項18記載の方法。
20.関連情報ビットの軟推定の前記デインターリーブしたものの2つ以上の重複サブシーケンス間の重複量を調整することをさらに含む請求項9記載の方法。
21.前記デインターリーブしたものの2つ以上の重複サブシーケンス間の重複量の前記調整は、前記(b)および(c)の複数の反復の少なくとも1つに対して実行される請求項20記載の方法。
22.前記シンボルデータシーケンスの2つ以上の重複サブシーケンス間の重複量を調整し、関連情報ビットの軟推定の前記デインターリーブしたものの2つ以上の重複サブシーケンス間の重複量を調整することをさらに含む請求項9記載の方法。
23.請求項22記載の方法において、前記シンボルデータシーケンスの2つ以上の重複サブシーケンス間の重複量の前記調整は、前記(b)および(c)の複数の反復の少なくとも1つに対して実行され、前記デインターリーブしたものの2つ以上の重複サブシーケンス間の重複量の前記調整は、前記(b)および(c)の複数の反復の少なくとも1つに対して実行される方法。
24.請求項9記載の方法において、前記シンボルデータシーケンスの前記2つ以上のサブシーケンスの少なくとも1つは、フォワード収束領域を含み、(b)は第1の組のプロセッサのうちの各プロセッサが前記第1のトレリスの対応部分に対してフォワードトレリス走査を実行して、前記第1のトレリスの対応部分の各時間ステップにおけるフォワード走査値を得て、前記フォワード収束領域を使用して前記フォワードトレリス走査における収束を得る方法。
25.請求項24記載の方法は、前記フォワード収束領域の長さを(b)および(c)の前記複数の反復のうち現在までに完了した反復の数の関数として減少させることをさらに含む方法。
26.請求項9記載の方法において、前記シンボルデータシーケンスの前記2つ以上のサブシーケンスの少なくとも1つはバックワード収束領域を含み、(b)は、前記第1の組のプロセッサのうちの前記プロセッサのそれぞれが前記第1のトレリスの対応部分に対してバックワードトレリス走査を実行して、前記第1のトレリスの対応部分の各時間指数におけるバックワード走査値を得ることを含み、前記バックワード収束領域は、前記バックワードトレリス走査において収束を得るために使用される方法。
27.請求項26記載の方法は、前記バックワード収束領域の長さを(b)および(c)の前記複数の反復のうち現在までに完了した反復の数の関数として減少させることをさらに含む方法。
28.請求項9記載の方法において、(b)は、前記関連情報ビットに関する内部情報および外部情報の生成を含み、前記第1の組の各プロセッサは、前記内部情報と前記外部情報との混合情報に基づいて前記関連情報ビットに対する軟推定を生成し、(b)および(c)の複数回の反復のうちの現在完了している反復の数に応じて、前記混合情報に含まれる内部情報の量を増加させる方法。
29.請求項9記載の方法において、(c)は、前記符号化ビットに関する内部情報および外部情報の生成を含み、前記第2の組の各プロセッサは、前記内部情報と前記外部情報との混合情報に基づいて前記符号化ビットに対する軟推定を生成し、(b)および(c)の複数回の反復のうちの現在完了している反復の数に応じて、前記混合情報に含まれる内部情報の量を増加させる方法。
30.請求項9記載の方法は、前記関連情報ビットの軟推定をデインターリーブしたものを、前記関連情報ビットの前記軟推定に対してデパンクチャおよびデインターリーブを実行することによって生成することをさらに含み、前記デパンクチャは、あらかじめ演算された値を出力シーケンスのパンクチャ位置に投入することを含み、前記あらかじめ演算された値は、(c)の前の反復において前記第2の組のプロセッサによって演算された符号化ビットに対する軟推定のうちで指定されたものである方法。
31.請求項9記載の方法において、(b)は、第1の組のプロセッサのうちの前記プロセッサのそれぞれが前記第1のトレリスの対応部分を介して、フォワードパスおよびバックワードパスを実行することを含み、前記第1の組のプロセッサの所与のプロセッサに対して、前記フォワードパスは、所与のシンボル位置におけるアルファベクトルを算出し、前記アルファベクトルが零ベクトルに等しいという判断に応じてベクトルEに等しいアルファベクトルを設定することを含み、前記ベクトルEの全成分は小さな正の数と等しい方法。
32.請求項9記載の方法において、(b)は、第2の組のプロセッサのうちの前記プロセッサのそれぞれが前記第2のトレリスの対応部分を介して、フォワードパスおよびバックワードパスを実行することを含み、前記第2の組のプロセッサの所与のプロセッサに対して、前記フォワードパスは、所与のデータ位置におけるアルファベクトルを算出し、前記アルファベクトルが零ベクトルに等しいという判断に応じて前記ベクトルEに等しいアルファベクトルを設定することを含み、前記ベクトルEの全成分は小さな正の数と等しい方法。
33.請求項9記載の方法において、2つ以上のプロセッサからなる前記第1の組は、2つ以上のプロセッサからなる前記第2の組と同一であり、(b)の各反復は、第1のプログラムコードを、前記第1の組のプロセッサのうちの各プロセッサの命令メモリに読み込むことを含み、前記第1のプログラムコードは、前記第1の組の各プロセッサによって実行されると、前記プロセッサに、前記シンボルデータシーケンスの対応サブシーケンスおよび前記符号化ビットに対する軟推定をインターリーブしたものの対応サブシーケンスに対してフォワード/バックワードアルゴリズムを実行させ、(c)の各反復は第2のプログラムコードを前記第1の組のプロセッサのうちの各プロセッサの前記命令メモリに読み込み、前記第2のプログラムコードは、前記第1の組の各プロセッサによって実行されると、前記プロセッサに、前記関連情報ビットに対する軟推定をデインターリーブしたものの対応サブシーケンスに対してフォワード/バックワードアルゴリズムを実行させる方法。
34.前記元の情報ビットの軟推定に基づく受信メッセージを形成することをさらに含む請求項1記載の方法。
35.前記受信メッセージを用いて出力装置を駆動することをさらに含む請求項34記載の方法。
36.チャンネルから受信したシンボルデータシーケンスに対して動作するシステムであって、前記シンボルデータシーケンスは、送信機によってチャンネル上に送出された第2のシンボルデータシーケンスに対応し、前記第2のシンボルデータシーケンスは、関連情報ビットに基づいて生成され、前記システムは、それぞれが第1のプログラムコードで構成される2つ以上のプロセッサからなる第1の組を備え、前記第1のプログラムコードは、前記第1の組のプロセッサによって実行されると、前記第1の組のプロセッサがシンボルデータシーケンスの2つ以上の重複サブシーケンスに対して並行して動作するようにし(a)、前記シンボルデータシーケンスの2つ以上の重複サブシーケンスのそれぞれは、第1のトレリスの各部に対応し、第1のトレリスは、シンボルデータシーケンスにおける冗長性を示し、前記動作が関連情報ビットに対する軟推定を生成し、この軟推定を使用して、関連情報ビットに対応する受信メッセージを形成できるシステム。
37.2つ以上のプロセッサからなる前記第1の組は、プロセッサ列から選択され、プロセッサ列のプロセッサは相互接続されて、平面格子を形成する請求項36記載のシステム。
38.前記受信シンボルデータシーケンスの少なくとも1つに対して、前記シンボルデータシーケンスの2つ以上の重複サブシーケンス間の重複量を調整する手段をさらに備える請求項36記載のシステム。
39.請求項36記載のシステムにおいて、前記第2のシンボルデータシーケンスは関連情報ビットの畳込み符号化に基づいて生成され、第1のトレリスは畳込み符号化に基づく構造を有し、シンボルデータシーケンスの2つ以上の重複サブシーケンスに対して並行して実行する前記動作は、シンボルデータシーケンスの2つ以上の重複サブシーケンスに対して復号化処理を並行して実行して、シンボルデータシーケンスの2つ以上の重複サブシーケンスのそれぞれのビタビ復号化を実現することを含むシステム。
40.請求項36記載のシステムにおいて、前記第1のトレリスは、前記シンボルデータシーケンスと第2のシンボルデータシーケンスとの所与の線形関係に基づいた構造を有し、シンボルデータシーケンスの2つ以上の重複サブシーケンスに対して並行して実行する前記の動作は、シンボルデータシーケンスの2つ以上の重複サブシーケンスに対して復調処理を並行して実行し、シンボルデータシーケンスの2つ以上の重複サブシーケンスのそれぞれのビタビ等化を実現することを含むシステム。
41.請求項36記載のシステムにおいて、前記送信機は元の情報ビットの畳込み符号化によって符号化ビットを得て、その符号化ビットをインターリーブすることによって関連情報ビットを生成し、(a)は2つ以上のプロセッサからなる第2の組が符号化ビットに対する軟推定をインターリーブしたものの2つ以上の各重複サブシーケンスを用いてシンボルデータシーケンスの2つ以上の重複サブシーケンスに対して並行して動作することを含み、前記システムは、第2のプログラムコードで構成される2つ以上のプロセッサからなる第2の組をさらに備え、前記第2のプログラムコードは、前記第2の組の前記プロセッサのそれぞれによって実行されると、前記第2の組の前記プロセッサのそれぞれが関連情報ビットの軟推定をデインターリーブしたものの2つ以上の重複サブシーケンスに対して並行して動作(b)し、デインターリーブしたものの2つ以上の重複サブシーケンスのそれぞれは、第2のトレリスの各部に対応し、前記第2のトレリスは畳込み符号化に対応する構造を有し、デインターリーブしたものの2つ以上の重複サブシーケンスに対する前記並行動作は符号化ビットに対する軟推定を生成するシステム。
42.前記2つ以上のプロセッサからなる第1の組および前記2つ以上のプロセッサからなる第2の組は、(a)および(b)を複数回交互に実行するようにプログラムされる請求項41記載のシステム。
43.請求項42記載のシステムにおいて、前記2つ以上のプロセッサからなる第2の組はそれぞれ追加プログラムコードで構成され、前記追加プログラムコードは、前記第2の組の前記プロセッサのそれぞれによって実行されると、前記第2の組の各プロセッサが前記関連情報ビットに対する軟推定のデインターリーブしたものの2つ以上の重複サブシーケンスに対して並行して動作するようにして元の情報ビットに対する軟推定を生成するシステム。
44.請求項42記載のシステムにおいて、前記第1の組の各プロセッサおよび前記第2の組の各プロセッサは、前記符号化ビットの軟推定に応じておよび前記関連情報ビットの軟推定が所定の閾値を超えた場合に、前記(a)および(b)を複数回交互に実行することを停止するようにプログラムされているシステム。
45.請求項42記載のシステムにおいて、前記シンボルデータシーケンスの前記2つ以上のサブシーケンスの少なくとも1つは、フォワード収束領域を含み、(a)は第1の組のプロセッサのうちの各プロセッサが前記第1のトレリスの対応部分に対してフォワードトレリス走査を実行して、前記第1のトレリスの対応部分の各時間ステップにおけるフォワード走査値を得ることを含み、前記フォワード収束領域を使用して、前記フォワードトレリス走査における収束を得るシステム。
46.請求項45記載のシステムにおいて、前記第1のプログラムコードは、第1の組のプロセッサによって実行されると、前記第1の組の各プロセッサに前記フォワード収束領域の長さを(a)および(b)の前記複数の実行のうち現在までに完了した実行数の関数として減少させるシステム。
47.請求項42記載のシステムにおいて、前記シンボルデータシーケンスの前記2つ以上のサブシーケンスの少なくとも1つはバックワード収束領域を含み、(b)は、前記第1の組のプロセッサのうちの前記プロセッサのそれぞれが前記第1のトレリスの対応部分に対してバックワードトレリス走査を実行して、前記第1のトレリスの対応部分の各時間指数におけるバックワード走査値を得ることを含み、前記バックワード収束領域は、前記バックワードトレリス走査において収束を得るために使用されるシステム。
48.請求項47記載のシステムにおいて、前記第2のプログラムコードは、第2の組のプロセッサによって実行されると、前記第2の組の各プロセッサに前記バックワード収束領域の長さを(a)および(b)の前記複数の実行のうち現在までに完了した実行数の関数として減少させるシステム。
49.請求項42記載のシステムにおいて、(a)は、前記関連情報ビットに関する内部情報および外部情報の生成を含み、前記第1のプログラムコードは、前記第1の組の各プロセッサによって実行されると、前記第1の組の各プロセッサが前記内部情報と前記外部情報との混合情報に基づいて前記関連情報ビットに対する軟推定を並行して生成するようにし、(a)および(b)の前記複数回の実行のうちの現在完了している実行の数に応じて、前記混合情報に含まれる内部情報の量を増加させるシステム。
50.請求項42記載のシステムにおいて、(b)は、前記符号化ビットに関する内部情報および外部情報の生成を含み、前記第2のプログラムコードは、前記第2の組の各プロセッサによって実行されると、前記第2の組の各プロセッサが、前記内部情報と前記外部情報との混合情報に基づいて前記符号化ビットに対する軟推定を生成するようにし、(a)および(b)の前記複数回の実行のうちの現在完了している実行の数に応じて、前記混合情報に含まれる内部情報の量を増加させるシステム。
51.請求項42記載のシステムは、前記関連情報ビットの軟推定をデインターリーブしたものを、前記関連情報ビットの前記軟推定に対してデパンクチャおよびデインターリーブを実行することによって生成するように構成された1つ以上のプロセッサからなる第3の組をさらに含み、前記デパンクチャは、あらかじめ演算された値を出力シーケンスのパンクチャ位置に投入することを含み、前記あらかじめ演算された値は、(b)の前の実行において前記第2の組のプロセッサによって演算された符号化ビットに対する軟推定のうちで指定されたものである。
52.請求項42記載のシステムにおいて、(a)は、第1の組のプロセッサのうちの前記プロセッサのそれぞれが前記第1のトレリスの対応部分を介して、フォワードパスおよびバックワードパスを実行することを含み、前記第1の組のプロセッサの所与のプロセッサに対して、前記フォワードパスは、所与のシンボル位置におけるアルファベクトルを算出し、前記アルファベクトルが零ベクトルに等しいという判断に応じてベクトルEに等しいアルファベクトルを設定することを含み、前記ベクトルEの全成分は小さな正の数と等しいシステム。
53.請求項42記載のシステムにおいて、2つ以上のプロセッサからなる前記第1の組は、2つ以上のプロセッサからなる前記第2の組と同一であり、前記第1の組のプロセッサのうちの各プロセッサは(a)の各実行前に前記第1のプログラムコードを読み込み、(b)の各実行前に前記第2のプログラムコードを読み込むようにプログラムされたシステム。
54.(a)チャンネルからシンボルデータシーケンスを受信し、前記シンボルデータシーケンスは、前記チャンネル上に送出された第2のシンボルデータシーケンスに対応し、前記第2のシンボルデータシーケンスは、元の情報ビットに基づいて生成され、
(b)2つ以上のプロセッサからなる第1の組が、フィードバック情報をインターリーブしたものの2つ以上の対応サブシーケンスを用いて、前記シンボルデータシーケンスの2つ以上の重複サブシーケンスに並行して復調処理を実行して、フィードフォワード情報を生成し、
(c)2つ以上のプロセッサからなる第2の組が、前記フィードフォワード情報をデインターリーブしたものの2つ以上の重複サブシーケンスに対して並行して復号化処理を実行して、前記フィードバック情報を生成し、
(d)(b)および(c)を含む処理の組を繰り返し、
(e)2つ以上のプロセッサからなる第3の組が並行して動作し、前記フィードフォワード情報のデインターリーブしたものの2つ以上の重複サブシーケンスの非重複部分から元の情報ビットに対する軟推定を生成する
ことを含む方法であって、
前記軟推定は、前記元の情報ビットに対応する受信メッセージを形成するのに使用可能である方法。
55.前記第3の組の各プロセッサは前記第2の組の各プロセッサと同一である請求項54記載の方法。
56.前記第1の組の各プロセッサは前記第2の組の各プロセッサと同一である請求項54記載の方法。
57.(a)チャンネルを介してシンボルデータシーケンスを受信し、前記シンボルデータシーケンスは、前記チャンネル上に送出された第2のシンボルデータシーケンスに対応し、前記第2のシンボルデータシーケンスは、元の情報ビットに基づいて生成され、
(b)2つ以上のプロセッサからなる第1の組が、フィードバックデータシーケンスの2つ以上の対応サブシーケンスを用いて、前記シンボルデータシーケンスの2つ以上の重複サブシーケンスに並行して復調処理を実行して、フィードフォワード情報の2つ以上の対応ブロックを生成し、
(c)1つ以上のプロセッサからなる第2の組がフィードフォワード情報の前記2つ以上のブロックから組み立てられた第1の合成シーケンスに対してデインターリーブを実行して、修正データシーケンスを生成し、
(d)2つ以上のプロセッサからなる第3の組が、前記修正データシーケンスの2つ以上の重複サブシーケンスに対して復号化処理を並行して実行して、フィードバック情報の2つ以上の対応するブロックを生成し、
(e)1つ以上のプロセッサからなる第4の組が、フィードバック情報の前記2つ以上のブロックから組み立てられた第2の合成シーケンスに対してインターリーブを実行して、フィードバックデータシーケンスを生成し、
(f)(b)、(c)、(d)および(e)を含む処理の組を繰り返し、
(g)2つ以上のプロセッサからなる前記第3の組が並行して動作して、前記修正データシーケンスの前記2つ以上の対応サブシーケンスの非対応領域から前記元の情報ビットに対する軟推定を生成する
ことを含む方法であって、
前記軟推定は、前記元の情報ビットに対応する受信メッセージを形成するのに使用可能である方法。
58.前記第1、第2、第3および第4の組のプロセッサは、プロセッサの列から選択され、前記プロセッサ列のプロセッサは相互接続されて、平面格子を形成する請求項57記載の方法。
59.プロセッサの前記第1、第2、第3および第4の組は互いに素の組である請求項57記載の方法。
60.2つ以上のプロセッサからなる第1の組は前記2つ以上のプロセッサからなる第3の組と同一である請求項57記載の方法。
61.前記1つ以上のプロセッサからなる第2の組は前記1つ以上のプロセッサからなる第4の組と同一である請求項57記載の方法。
上記実施形態について非常に詳細に説明したが、上記開示が十分に理解されれば、数多くの変形および修正が当業者には明らかである。以下の特許請求の範囲の記載はそのような変形および修正を包含するように解釈されることを意図している。