線形システム解法のためのアレイ処理
【課題】本発明は、線形システムを解くためのアレイ処理の方法を提供する。
【解決手段】線形システムを解くためにPE(54〜54N)を利用する。本発明の一実施形態(図3b)では、コレスキーファクタを判定するため、行列の対角要素がスカラーPEに射影される。別の実施形態では、コレスキーファクタを判定するため、2次元スカラーアレイが使用される。限られたバンド幅をもつ行列の場合、使用するプロセッサの数を減らした、プロセッサ(54〜54N)を用いることができる。
【解決手段】線形システムを解くためにPE(54〜54N)を利用する。本発明の一実施形態(図3b)では、コレスキーファクタを判定するため、行列の対角要素がスカラーPEに射影される。別の実施形態では、コレスキーファクタを判定するため、2次元スカラーアレイが使用される。限られたバンド幅をもつ行列の場合、使用するプロセッサの数を減らした、プロセッサ(54〜54N)を用いることができる。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、一般に、線形システムの解法に関する。具体的には、本発明は、線形システムを解くためのアレイ処理の使用に関する。
【背景技術】
【0002】
工学上の問題を解くのに、線形システム解法が用いられることが多い。このような課題の1つに、TDD(time division duplex)通信において、CDMA(code division multiple access)を用いて、複数のユーザ信号をジョイントユーザ検出(joint user detection)することがある。このようなシステムにおいては、複数のユーザが、同じ固定継続時間間隔(タイムスロット)で、同時に複数の通信バーストを伝送する。マルチプルバーストは、異なる拡散符号を用いて伝送される。伝送中、各バーストはチャネルレスポンスを経験する。伝送されたバーストからデータを復元するための1つのアプローチが、ジョイント検出(joint detection)であり、このアプローチでは、全てのユーザデータが同時に受信される。このようなシステムを図1に示す。UE(user equipment)または基地局において、ジョイント検出レシーバを使用することができる。
【0003】
マルチプルバースト90は、チャネルレスポンスを経験した後、コンバイン受信信号(combined received signal)として、アンテナ92またはアンテナアレイで受信される。受信信号は、デモジュレータ94などによって、ベースバンドに変換され、受信ベクトルrを生成するため、1つのADC(analog to digital converter)96または複数のADCなどによって、符号の1チップレートまたは符号の複数チップレートでサンプリングされる。チャネル推定デバイス98は、通信バーストのトレーニング系列の一部を使用して、バースト90のチャネルレスポンスを推定する。ジョイント検出器100は、各ユーザのバーストの推定または既知の拡散符号と、推定または既知のチャネルレスポンスとを使用して、全てのユーザの元の伝送データをデータベクトルdとして推定する。
【0004】
ジョイント検出問題は、一般に、式1によってモデル化される。
【0005】
Ad+n=r 式1
【0006】
dは伝送データベクトル、rは受信ベクトル、nはAWGN(additive white gaussian noise)であり、Aはチャネルレスポンスを既知の拡散符号を用いて畳み込むことによって構成されるM×N行列である。
【0007】
式1を解くための2つのアプローチに、ゼロフォーシング(ZF)およびMMSE(Minimum Mean Square Error)アプローチがある。nを0に接近させるZF解法は、式2による。
【0008】
d=(AHA)-1AHr 式2
【0009】
MMSEアプローチは、式3および式4による。
【0010】
d=R-1AHr 式3
R=AHA+σ2I 式4
【0011】
σはノイズnの分散であり、Iは単位行列である。
【0012】
拡散符号、チャネルレスポンスと、ノイズの分散の平均は、推定されるか、または既知であり、受信ベクトルは既知であるので、唯一の未知の変数は、データベクトルdである。行列の直接逆変換といった力ずくの解法は、どちらのアプローチによるとしても、極めて複雑である。この複雑さを緩和するための1つの技法に、コレスキー分解(Cholesky decomposition)がある。コレスキーのアルゴリズムは、
【0013】
【数1】
【0014】
またはRなどの対称正定値行列を、式5によって、下三角行列Gと上三角行列GHに因数分解する。
【0015】
【数2】
【0016】
対称正値行列
【0017】
【数3】
【0018】
は、式6によって、Aにその共役転置(エルミート)行列AHを乗算することによって、Aから生成することができる。
【0019】
【数4】
【0020】
【数5】
【0021】
は、簡単に式7によって定義される。
【0022】
【数6】
【0023】
その結果、式1は、ZFでは式8として、MMSEでは式9として、書き換えられる。
【0024】
【数7】
【0025】
【数8】
【0026】
式8または式9を解くため、式10によってコレスキーファクタ(Cholesky factor)が用いられる。
【0027】
【数9】
【0028】
変数yは式11によって定義される。
【0029】
GHd=y 式11
【0030】
変数yを使用して、式10は式12として書き換えられる。
【0031】
【数10】
【0032】
データベクトルを取得するための複雑さの大半は、3つのステップで実行される。第1のステップで、式13に示すように、
【0033】
【数11】
【0034】
またはRなどの派生対称正値行列からGが生成される。
【0035】
【数12】
【0036】
Gを用い、式14に示すように、式8においてGの前進代入(forward substitution)を使用してyを解く。
【0037】
【数13】
【0038】
Gの共役転置行列GHを用い、式15に示すように、式11において後退代入(backwardsubstitution)を使用してdを解く。
【0039】
d=BACKWARD SUB(GH,y) 式15
【0040】
式13によってコレスキーファクタGを判定するアプローチは、
【0041】
【数14】
【0042】
またはRに関して示された以下のアルゴリズムとするが、Rに関しては類似のアプローチも用いられる。
【0043】
【数15】
【0044】
ad,eは行列
【0045】
【数16】
【0046】
またはRのd行e列の要素を表す。「:」は「jからNまで」などの「まで」演算子を示し、(・)Hは共役転置(エルミート)演算子を示す。
【0047】
コレスキーファクタを求解するための別のアプローチでは、N個の並列ベクトルベースプロセッサが使用される。各プロセッサは、
【0048】
【数17】
【0049】
またはR行列の列にマップされる。各プロセッサの列は、変数μによって定義され、μ=1:Nである。並列プロセッサに基づくサブルーチンは、μ=1:Nとした場合の以下のサブルーチンとして考察することができる。
【0050】
【数18】
【0051】
recv(・,left)は左側のプロセッサ演算器からの受信であり、send(・,right)は右側のプロセッサ演算器への伝送であり、gK,Lは隣接プロセッサからの値である。
【0052】
このサブルーチンは、図2a〜図2hを用いて図説される。図2aは、ジョイント検出器のベクトルプロセッサとその関連メモリセルのブロック図である。各プロセッサ501から50N(50)は、行列の列に対して演算を行う。G行列は下三角行列であり、
【0053】
【数19】
【0054】
またはRは下三角行列によって完全に定義されるので、下三角行列の要素ak,lだけが使用される。
【0055】
図2bおよび図2cには、プロセッサの下側のセル上で、プロセッサによって実行され得る2つの機能が示されている。図2bでは、下向き三角形で表される機能52が、μ番目のプロセッサ50の下側のセル(aμμからaNμ)上で、式16および式17を実行する。
【0056】
【数20】
【0057】
aμ:N,μ:=ν 式17
【0058】
「←」は同時代入を示し、「:=」は逐次代入を示し、νは右側のプロセッサに伝送される値である。
【0059】
図2cでは、右向き三角形で表される機能52が、μ番目のプロセッサ50の下側のセル上で、式18および式19を実行する。
【0060】
ν←u 式18
aμ:N,μ:=aμ:N,μ−νμνμ:N 式19
【0061】
νkは、第k番目のプロセッサ50の右側に出ていく値に関係付けした値を示す。
【0062】
図2d〜図2gには、4×4 G行列に対して実行されるデータフローと機能が示されている。処理のステージ1から4までに対しては、図2d〜図2gに示すように、最も左側のプロセッサ50がドロップアウトし、下向き三角形の機能52が、左から右に移動していく。図2d〜図2gをインプリメントするため、下向き三角形は、プロセッサを物理的に右向きに置き換えることができ、または下向き三角形の機能を担うことによって、プロセッサをバーチャルに右向きに置き換えることができる。
【0063】
これらエレメント(element)は、ステージ1を表す図2hに示すように、((N−4)個の)プロセッサ50を第4番目のプロセッサ504の右側に追加し、プロセッサ50の各々に行列の対角より下方の(N−4個の)セルを追加することによって、N×N行列とN個のプロセッサ50に拡張可能である。このような構成による処理はNステージにわたって実行される。
【0064】
このようなコレスキー分解のインプリメントは、ベクトルプロセッサを用いるにしても、スカラーPEへの直接分解を用いるにしても、各ステージの処理の後で、大量の処リソースがアイドル状態になるため、効率的ではない。
【発明の概要】
【発明が解決しようとする課題】
【0065】
したがって、線形システムを解くための代替アプローチを有するのが望ましい。
【課題を解決するための手段】
【0066】
線形システムを解くためにPEが利用される。本発明の一実施形態では、コレスキーファクタを判定するため、行列の対角の行列要素がスカラーPEに射影される。別の実施形態では、2次元スカラーアレイを用いて、コレスキーファクタを判定する。第3の実施形態では、再構成可能スカラー線形アレイを用いて、コレスキーファクタを判定し、前進代入および後退代入を実行する。行列が、限られたバンド幅を有する場合は、これらの実施形態で使用されるプロセッサの数を減らすことができる。プロセッサのフォールディング(folding)を用いて、これらの実施形態で使用されるプロセッサの数を減らすことができる。本発明の別の実施形態は、コレスキーファクタを判定し、前進代入および後退代入を実行するように再構成できるPEである。
【図面の簡単な説明】
【0067】
【図1】ジョイント検出レシーバの簡略な図である。
【図2a】ベクトルプロセッサを用いてコレスキーファクタを判定する様子を示した図である。
【図2b】ベクトルプロセッサを用いてコレスキーファクタを判定する様子を示した図である。
【図2c】ベクトルプロセッサを用いてコレスキーファクタを判定する様子を示した図である。
【図2d】ベクトルプロセッサを用いてコレスキーファクタを判定する様子を示した図である。
【図2e】ベクトルプロセッサを用いてコレスキーファクタを判定する様子を示した図である。
【図2f】ベクトルプロセッサを用いてコレスキーファクタを判定する様子を示した図である。
【図2g】ベクトルプロセッサを用いてコレスキーファクタを判定する様子を示した図である。
【図2h】ベクトルプロセッサを用いてコレスキーファクタを判定する様子を示した図である。
【図3a】コレスキー分解を実行するN個のスカラープロセッサの好ましい実施形態を示した図である。
【図3b】コレスキー分解を実行するN個のスカラープロセッサの好ましい実施形態を示した図である。
【図4a】コレスキー分解のために3次元グラフを使用した一例を示した図である。
【図4b】コレスキー分解のために3次元グラフを使用した一例を示した図である。
【図4c】コレスキー分解のために3次元グラフを使用した一例を示した図である。
【図4d】コレスキー分解のために3次元グラフを使用した一例を示した図である。
【図4e】コレスキー分解のために3次元グラフを使用した一例を示した図である。
【図5a】コレスキー分解を実行するベクトルプロセッサをスカラープロセッサにマップする一例を示した図である。
【図5b】コレスキー分解を実行するベクトルプロセッサをスカラープロセッサにマップする一例を示した図である。
【図5c】コレスキー分解を実行するベクトルプロセッサをスカラープロセッサにマップする一例を示した図である。
【図5d】コレスキー分解を実行するベクトルプロセッサをスカラープロセッサにマップする一例を示した図である。
【図5e】コレスキー分解を実行するベクトルプロセッサをスカラープロセッサにマップする一例を示した図である。
【図6a】非バンド行列に関するスカラーアレイの処理フローを示した図である。
【図6b】非バンド行列に関するスカラーアレイの処理フローを示した図である。
【図6c】非バンド行列に関するスカラーアレイの処理フローを示した図である。
【図6d】非バンド行列に関するスカラーアレイの処理フローを示した図である。
【図6e】バンド行列に関するスカラーアレイの処理フローを示した図である。
【図6f】バンド行列に関するスカラーアレイの処理フローを示した図である。
【図6g】バンド行列に関するスカラーアレイの処理フローを示した図である。
【図6h】バンド行列に関するスカラーアレイの処理フローを示した図である。
【図6i】バンド行列に関するスカラーアレイの処理フローを示した図である。
【図6j】バンド行列に関するスカラーアレイの処理フローを示した図である。
【図7】図4aの射影をk軸に沿ってN×N行列に拡張した図である。
【図8a】2Dスカラーアレイ中のスカラープロセッサ間の遅延を利用した処理フローを示した図である。
【図8b】2Dスカラーアレイ中のスカラープロセッサ間の遅延を利用した処理フローを示した図である。
【図8c】2Dスカラーアレイ中のスカラープロセッサ間の遅延を利用した処理フローを示した図である。
【図8d】2Dスカラーアレイ中のスカラープロセッサ間の遅延を利用した処理フローを示した図である。
【図8e】遅延素子とその関連式を示した図である。
【図9a】図8a〜図8dのスカラープロセッサアレイの、4つのスカラープロセッサからなる1Dアレイへの射影を示した図である。
【図9b】1つおきのプロセッサ間に遅延要素を有するスカラープロセッサアレイの、4つのスカラープロセッサからなる1Dアレイへの射影を示した図である。
【図9c】1つおきのプロセッサ間に遅延要素を有するバンド行列のコレスキー分解に関する処理フローを示した図である。
【図9d】1つおきのプロセッサ間に遅延要素を有するバンド行列のコレスキー分解に関する処理フローを示した図である。
【図9e】1つおきのプロセッサ間に遅延要素を有するバンド行列のコレスキー分解に関する処理フローを示した図である。
【図9f】1つおきのプロセッサ間に遅延要素を有するバンド行列のコレスキー分解に関する処理フローを示した図である。
【図9g】1つおきのプロセッサ間に遅延要素を有するバンド行列のコレスキー分解に関する処理フローを示した図である。
【図9h】1つおきのプロセッサ間に遅延要素を有するバンド行列のコレスキー分解に関する処理フローを示した図である。
【図9i】1つおきのプロセッサ間に遅延要素を有するバンド行列のコレスキー分解に関する処理フローを示した図である。
【図9j】1つおきのプロセッサ間に遅延要素を有するバンド行列のコレスキー分解に関する処理フローを示した図である。
【図9k】1つおきのプロセッサ間に遅延要素を有するバンド行列のコレスキー分解に関する処理フローを示した図である。
【図9l】1つおきのプロセッサ間に遅延要素を有するバンド行列のコレスキー分解に関する処理フローを示した図である。
【図9m】1つおきのプロセッサ間に遅延要素を有するバンド行列のコレスキー分解に関する処理フローを示した図である。
【図9n】1つおきのプロセッサ間に遅延要素を有するバンド行列のコレスキー分解に関する処理フローを示した図である。
【図9o】バンド行列を処理する線形アレイのメモリアクセスを示した図である。
【図9p】バンド行列を処理する線形アレイのメモリアクセスを示した図である。
【図9q】バンド行列を処理する線形アレイのメモリアクセスを示した図である。
【図9r】バンド行列を処理する線形アレイのメモリアクセスを示した図である。
【図9s】バンド行列を処理する線形アレイのメモリアクセスを示した図である。
【図9t】バンド行列を処理する線形アレイのメモリアクセスを示した図である。
【図9u】バンド行列を処理する線形アレイのメモリアクセスを示した図である。
【図9v】バンド行列を処理する線形アレイのメモリアクセスを示した図である。
【図9w】バンド行列を処理する線形アレイのメモリアクセスを示した図である。
【図9x】バンド行列を処理する線形アレイのメモリアクセスを示した図である。
【図9y】バンド行列を処理する線形アレイのメモリアクセスを示した図である。
【図9z】バンド行列を処理する線形アレイのメモリアクセスを示した図である。
【図10a】スカラープロセッサがN個に拡張された、図9aの射影されたアレイを示した図である。
【図10b】スカラープロセッサがN個に拡張された、図9bの射影されたアレイを示した図である。
【図11a】除算の平方根をとる関数の図10aのアレイからの分離を示す図である。
【図11b】除算の平方根をとる関数の図10bのアレイからの分離を示す図である。
【図12a】各プロセッサ間で遅延要素を有する前進代入アレイの、4つのスカラープロセッサへの射影を示した図である。
【図12b】1つおきのプロセッサ間で遅延要素を有する前進代入アレイの、4つのスカラープロセッサへの射影を示した図である。
【図12c】前進代入に関する星型で表される関数によって実行される式を示した図である。
【図12d】前進代入に関するひし形で表される関数によって実行される式を示した図である。
【図12e】1つおきのプロセッサ間に同時代入を有するバンド行列の前進代入に関する処理フローを示した図である。
【図12f】1つおきのプロセッサ間に遅延要素を有するバンド行列の前進代入に関する処理フローを示した図である。
【図12g】1つおきのプロセッサ間に遅延要素を有するバンド行列の前進代入に関する処理フローを示した図である。
【図12h】1つおきのプロセッサ間に遅延要素を有するバンド行列の前進代入に関する処理フローを示した図である。
【図12i】1つおきのプロセッサ間に遅延要素を有するバンド行列の前進代入に関する処理フローを示した図である。
【図12j】1つおきのプロセッサ間に遅延要素を有するバンド行列の前進代入に関する処理フローを示した図である。
【図12k】バンド行列を処理する前進代入線形アレイのメモリアクセスを示した図である。
【図12l】バンド行列を処理する前進代入線形アレイのメモリアクセスを示した図である。
【図12m】バンド行列を処理する前進代入線形アレイのメモリアクセスを示した図である。
【図12n】バンド行列を処理する前進代入線形アレイのメモリアクセスを示した図である。
【図12o】バンド行列を処理する前進代入線形アレイのメモリアクセスを示した図である。
【図12p】バンド行列を処理する前進代入線形アレイのメモリアクセスを示した図である。
【図13a】スカラープロセッサがN個に拡張された、図12aの射影されたアレイを示した図である。
【図13b】スカラープロセッサがN個に拡張された、図12bの射影されたアレイを示した図である。
【図14a】図12bの射影されたアレイに関する処理フローを示した図である。
【図14b】図12bの射影されたアレイに関する処理フローを示した図である。
【図14c】図12bの射影されたアレイに関する処理フローを示した図である。
【図14d】図12bの射影されたアレイに関する処理フローを示した図である。
【図15a】各プロセッサ間で遅延要素を有する後退代入アレイの、4つのスカラープロセッサへの射影を示した図である。
【図15b】1つおきのプロセッサ間で遅延要素を有する後退代入アレイの、4つのスカラープロセッサへの射影を示した図である。
【図15c】後退代入に関する星型で表される関数によって実行される式を示した図である。
【図15d】後退代入に関するひし形で表される関数によって実行される式を示した図である。
【図15e】1つおきのプロセッサ間に同時代入を有するバンド行列の後退代入に関する処理フローを示した図である。
【図15f】1つおきのプロセッサ間に遅延要素を有するバンド行列の後退代入に関する処理フローを示した図である。
【図15g】1つおきのプロセッサ間に遅延要素を有するバンド行列の後退代入に関する処理フローを示した図である。
【図15h】1つおきのプロセッサ間に遅延要素を有するバンド行列の後退代入に関する処理フローを示した図である。
【図15i】1つおきのプロセッサ間に遅延要素を有するバンド行列の後退代入に関する処理フローを示した図である。
【図15j】1つおきのプロセッサ間に遅延要素を有するバンド行列の後退代入に関する処理フローを示した図である。
【図15k】バンド行列を処理する後退代入線形アレイのメモリアクセスを示した図である。
【図15l】バンド行列を処理する後退代入線形アレイのメモリアクセスを示した図である。
【図15m】バンド行列を処理する後退代入線形アレイのメモリアクセスを示した図である。
【図15n】バンド行列を処理する後退代入線形アレイのメモリアクセスを示した図である。
【図15o】バンド行列を処理する後退代入線形アレイのメモリアクセスを示した図である。
【図15p】バンド行列を処理する後退代入線形アレイのメモリアクセスを示した図である。
【図16a】スカラープロセッサがN個に拡張された、図15aの射影されたアレイを示した図である。
【図16b】スカラープロセッサがN個に拡張された、図15bの射影されたアレイを示した図である。
【図17a】図15bの射影されたアレイに関する処理フローを示した図である。
【図17b】図15bの射影されたアレイに関する処理フローを示した図である。
【図17c】図15bの射影されたアレイに関する処理フローを示した図である。
【図17d】図15bの射影されたアレイに関する処理フローを示した図である。
【図18a】分離された除算機能をもつ図13a、図16aのアレイを示した図である。
【図18b】分離された除算機能をもつ図13b、図16bのアレイを示した図である。
【図19a】G、前進代入、および後退代入を判定するための再構成可能アレイを示した図である。
【図19b】G、前進代入、および後退代入を判定するための再構成可能アレイを示した図である。
【図20a】除算および平方根をとる関数の再構成可能アレイからの分離を示す図である。
【図20b】除算および平方根をとる関数の再構成可能アレイからの分離を示す図である。
【図21a】双方向フォールディングを示した図である。
【図21b】単方向フォールディングを示した図である。
【図22a】N個のプロセッサを用いた双方向フォールディングの実施を示した図である。
【図22b】N個のプロセッサを用いた単方向フォールディングの実施を示した図である。
【図23】簡単な再構成可能PEの好ましいスライスを示した図である。
【発明を実施するための形態】
【0068】
図3aおよび図3bは、Gを取得するためコレスキー分解を行うN個のスカラーPE541ないし54N(54)の好ましい実施形態を示す。簡略のため、4×4 G行列について説明し記述するが、このアプローチは、図3aおよび図3bに示すように、任意に、4×4 G行列に拡張することができる。
【0069】
図4aは、上記のアルゴリズムをパフォームするための3次元計算依存グラフ(computational dependency graph)を示す。簡略のため、図4aには、バンド幅が3である5×5行列の処理を示す。各ノードによりパフォームされる機能を、図4b〜図4eに示す。図4bにおいて五角形で表す機能は、式20および式21を実行する。
【0070】
【数21】
【0071】
aout←y 式21
【0072】
←は同時代入を示す。ainは下位レベルから当該ノードへの入力であり、aoutは上位レベルへの出力である。図4cは、式22および式23を実行する四角形で表される機能である。
【0073】
y←z* 式22
aout←ain−|z|2 式23
【0074】
図4dは、式24、式25、および式26を実行する八角形で表される機能である。
【0075】
y←w 式24
x←ain/w 式25
aout←x 式26
【0076】
図4eは、式27、式28、および式29を実行する円で表される機能である。
【0077】
y←w 式27
x←z 式28
aout←ain−w×x 式29
【0078】
図5aは、4×4 G行列に対するベクトルベースのコレスキー分解のステージ1を、2次元スカラーベースアプローチにマップする様子を示した図である。各ベクトルプロセッサ52、54は、図5aに示すように、少なくとも1つのスカラープロセッサ56、58、60、62にマップされる。各スカラープロセッサ56、58、60、62は、メモリセルaijに関係付けしてある。各プロセッサ56、58、60、62でパフォームされる機能が、図5b〜図5eに示されている。図5bには、五角形で表される機能56が示されており、これは式30および式31を実行する。
【0079】
【数22】
【0080】
aij:=y 式31
【0081】
:=は逐次代入を示す。yは下側のプロセッサに伝送される値を示す。図5cには、八角形で表される機能58が示されており、これは式32、式33、および式34を実行する。
【0082】
y←w 式32
x←aij/w 式33
aij:=x 式34
【0083】
wは上側のプロセッサから伝送された値を示す。図5dには、四角形で表される機能60が示されており、これは式35および式36を実行する。
【0084】
y←z* 式35
aij:=aij−|z|2 式36
【0085】
xは右側のプロセッサに伝送される値を示す。図5eには、円で表される機能62示されており、これは式37、式38、および式39を実行する。
【0086】
y←w 式37
x←z 式38
aij:=aij−w×z 式39
【0087】
図6a〜図6dには、4つの逐次ステージ(ステージ1ないし4)における、プロセッサ56、58、60、62によるデータフローが示されている。図6a〜図6dに示すように、各ステージの後、プロセッサ56、58の列がドロップオフする。この処理には、4処理サイクルを必要とし、一般にはNサイクルを必要とする。各ステージにつき1処理サイクルを必要とする。図5aに示すように、4×4 G行列を判定するのに、10個のスカラープロセッサを必要とする。N×N行列の場合、必要なプロセッサの数は、式40による。
【0088】
【数23】
【0089】
図6e〜図6jには、5×5バンド行列に関する処理フローが示されている。アクティブなプロセッサを実線で示す。このバンド行列では、左下の3つのエントリ(a41、a51、a52、図6e〜図6jでは図示せず)が0である。図6eに示すように、ステージ1では、上側の6つのプロセッサがオペレートしている。図6fに示すように、ステージ1でアクティブな6つのプロセッサが、g11、g21、g31と、ステージ2で使用する3つの即値結果α22、α32、α33を決定する。
【0090】
ステージ2では、6つのプロセッサ(α22,α32,α33,
【0091】
【数24】
【0092】
)がオペレートしている。ステージ2では、図6g(ステージ3)に示すように、g22、g32、g42の値と、β33、β43、β44の即値結果が決定される。図6h(ステージ4)では、g33、g43、g53の値と、γ44、γ54、γ55の即値結果が判定される。図6(ステージ5)では、g44、g54と、即値δ55が決定される。図6j(最終ステージ)では、残りの値g55が利用できる。図に示すように、バンド行列という行列の性質から、ロードされない行列要素に対応する左下のプロセッサは不要であり、図示していない。
【0093】
図6a〜図6dの簡略な説明は、図7に示すように、N×N行列に拡張することができる。これら図に示すように、最上部のプロセッサ56は、五角形で表される機能をパフォームする。八角形で表される機能のプロセッサ58は、第1列に沿って下方に拡張され、四角形/五角形を組み合わせた形で表される二重目的のプロセッサ64は、主対角に沿って拡張される。残りのプロセッサ66は、八角形/円を組み合わせた形で表される二重目的のプロセッサ66である。この構成によって、スカラープロセッサだけを用いて、N×N G行列がN処理サイクルで決定される。
【0094】
行列のバンド幅が、限られた幅、例えばPしかない場合、PEの数を減らすことができる。説明のため、仮にPがN−1に等しい場合には、aN1用の左下のプロセッサがドロップオフする。仮にPがN−2に等しい場合には、さらに2つのプロセッサ(aN-1 1,aN2)がドロップオフする。
【0095】
スカラーPEの数が減少していく様子を、図8a〜図8eおよび図9a、図9bに関して説明する。図8a〜図8eには、図6a〜図6dの4スカラープロセッサ・インプリメンテーションについての1次元実行プレーン(execution plane)が説明されている。図8eの遅延素子68が、図8aに示すように、各同時接続(concurrent connection)において挿入される。図8eの遅延素子68は、式41によって、入力yを遅延させて、逐次出力xとする。
【0096】
y:=x 式41
【0097】
タイムt1から開始する各処理サイクルにおいて、プロセッサは、実行プレーンを表す斜線が示すように、逐次に処理を行う。この様子を説明すると、タイムt1では、a11用のプロセッサ56だけがオペレートする。タイムt2では、a21用のプロセッサ58だけがオペレートし、タイムt3では、a31およびa22用のプロセッサ58、60がオペレートする。以降、ステージ4まで同様に続いて、タイムt16では、a44用のプロセッサ56だけがオペレートする。その結果、Nステージの処理全体では、N2のクロックサイクルが必要になる。
【0098】
複数の行列を2次元スカラー処理アレイによりパイプライン処理することができる。図8a〜図8dに示すように、ある特定の実行プレーンで、t1からt16までがアクティブである。あるステージでは、実行プレーンの数に等しい数までの行列を、同時に処理することができる。ステージ1について説明すると、第1の行列が斜線t1に沿って処理される。次のクロックサイクルで、第1の行列はプレーンt2に渡され、プレーンt1は第2の行列のために使用される。このパイプラインは、任意の数の行列について続けることができる。パイプライン処理の1つの難点は、パイプライン処理においては、行列データの利用スケジュールが処理速度の低下を招くような場合には、全ての行列に関するデータを保存する必要がある点にある。
【0099】
行列のグループがステージ1でパイプライン処理された後、その行列のグループはステージ2でパイプライン処理され、以降、ステージNまでこれが続く。パイプライン処理を用いることにより、プロセッサの利用率ばかりか、アレイのスループットも劇的に向上する。
【0100】
各クロックサイクルにおいて、プロセッサ56、58、60、62が全て使用されるわけではないので、行列を1つだけ処理する場合、PE56、58、60、62を実行プレーン間で共用することによって、PEの数を減らすことができる。図9aおよび図9bは、PEを減らすための2つの好ましいインプリメンテーションを示す。図9aに示すように、実行プレーンに垂直な(行列の対角に沿った)線が、第1列の各PE56、58に関して示されている。各垂直な線に沿ったプロセッサ56、58、60、62は、全て、異なる処理サイクルでオペレートするので、その機能56、58、60、62を、下方に射影されるような単一のプロセッサ66、64によって実行することができる。処理機能56、60は、新しいコンバイン機能64によって実行される。処理機能58、62は、新しいコンバイン機能66によって実行される。遅延素子68およびプロセッサ間の接続も射影される。最も左側のPEは、二重機能素子66を使用するものとして示されているが、非バンド行列にとって都合がよいのであれば、この素子は八角形で表される機能58だけを実行するように簡略化することができる。
【0101】
図10aは、N×N G行列に対応できるように図9aを拡張したものである。図10aに示すように、N個のプロセッサ66、64を使用して、N×N G行列を処理する。図3aに示すように、図10aの処理機能は、N個のスカラープロセッサ54によってパフォームすることができる。バンド行列の場合は、バンド幅Pと同じ数のスカラープロセッサを使用して、G行列を処理することができる。
【0102】
図3aのインプリメンテーションにおいては、各プロセッサを1つおきのクロックサイクルで使用する。偶数番のプロセッサが、あるサイクルでオペレートし、奇数番のプロセッサが、次のサイクルでオペレートする。例えば、図9aのプロセッサ2(右から2番目)はタイムt2、t4、t6で処理を行い、プロセッサ3はタイムt3、t5で処理を行う。その結果、アレイへの入力として2つのG行列をインタレースしながらアレイを処理することによって、同時に2つのG行列を決定することができる。このアプローチによれば、図7のインプリメンテーションに比べて、プロセッサ利用率が大幅に向上する。
【0103】
単一のアレイの処理時間を短縮するため、図9bのインプリメンテーションが利用される。図9bに示すように、1つおきのプロセッサ接続で遅延素子がドロップオフ(drop off)する。タイムt1では、a11用のプロセッサ56だけがオペレートする。しかし、タイムt2では、a21、a22、a31用のプロセッサ58、60が全てオペレートしている。(元の行列の対角に沿った)垂直線に沿ったこのアレイの射影も、図9bに示されている。図示するように、遅延素子68の数が半分に減少する。このアレイを使用した場合、N×N G行列の処理時間は、(NP−(P2−P)/2)となる。したがって、単一のG行列の処理時間が大幅に短縮される。
【0104】
図7、図3a、および図3bのインプリメンテーションの別の利点は、行列のバンド幅に応じて、各処理アレイをスケーリングすることができる点にある。バンド幅が小さい行列(下三角行列の要素が0)の場合、図7のそれらの要素のためのプロセッサ58、66をドロップアウトすることができる。図3aおよび図3bに関しては、下三角行列の要素は図9aおよび図9bの最も左側の垂直線に対応するので、それらの垂直線によって射影されるプロセッサはドロップアウトされる。図9aを用いて説明すると、当該行列のバンド幅は、a41、a31、a42が0であるPE58、62を有する。その結果、プロセッサ66(最も左側の2つ)への射影は、この処理では不要である。その結果、これらのインプリメンテーションは、当該行列のバンド幅に応じてスケーリングすることができる。
【0105】
図9c〜図9nには、バンド幅が3である5×5バンド行列に関する、1つおきの接続に遅延が生じる、各処理サイクルごとのタイミング図が示されている。各時間期間においては、各プロセッサに関連付けをした値が示されている。アクティブなプロセッサを実線で示す。図に示すように、ステージ1、タイム0を示す図9cの左上のプロセッサ(
【0106】
【数25】
【0107】
)から、ステージ5を示す図9nの右下のプロセッサ(δ55)へと、処理が伝播していく。図に示すように、バンド行列という行列の性質のため、非バンド行列を処理する左下のプロセッサは不要であり、図示していない。
【0108】
図9o〜図9zには、図9bなどによる、5×5バンド行列を処理する線形アレイの各処理サイクルごとのタイミング図とメモリアクセスが示されている。図示するように、5×5行列のバンド幅は3であるので、必要なプロセッサは3個のみである。バンド行列を処理するため、3個のプロセッサを必要とすることが、図示されている。さらに図示するように、各ステージは比較的高いプロセッサの利用効率を有しており、この利用効率はN/pが増加するにつれて増加する。
【0109】
PEの複雑さを減らすために、除算および平方根を求める機能は、これらPEで実行しない(除かれる)。除算および開平は、より複雑であるから、加算器、減算器、乗算器でインプリメントするよりは、ASICにインプリメントされる。
【0110】
除算または開平をパフォームする機能は、五角形および八角形で表される機能56、58の2つだけである。図6a〜図6dに示すように、あるステージについて、五角形および八角形で表される機能56、58は、全て、1ステージの間に単一の列で実行される。特に、これらの列の各々は、最上部に五角形58をもち、その下に八角形58をもつ。各八角形58は同時にそのw入力をそのy出力に代入するので、五角形56の出力は、wの値をいずれかのaij用に直ちに保存しなくても、列全体に行き渡る。八角形58は、w入力を使用してx出力も生成し、x出力もaijにフィードバックされる。x出力は、四角形および円で表される機能60、62によって、aijの計算において使用される。その結果、各八角形のx出力の値だけが判定されればよい。八角形のx出力は、その八角形58のaijを、五角形56のy出力であって、各八角形58で同じ値となるw入力の値で除算したものである。したがって、除算/開平機能は、八角形58でxを計算する際に、実行する必要があるだけである。
【0111】
各八角形の出力xは、式34および式30を用いて、その八角形のaijを五角形のaijの平方根で割ったものである。あるステージについて、各八角形プロセッサにおいて、除算器に代えて乗算器を使用した場合には、五角形のaijの平方根の代りに、その平方根の逆数を判定しさえすればよく、除算機能を五角形プロセッサにおいてだけでパフォームされるように分離して、アレイ全体の複雑さを緩和することができる。平方根の逆数は、五角形に関連付けをした行列要素のaijとして、その逆数の代りに、保存される。このようにすると、後で前進代入および後退代入を行う際にも都合がよい。それらのアルゴリズム中の除算機能がこの逆数を掛ける乗算に変り、他のPE、すなわち図12dおよび図15dのx出力でも除算器の必要がなくなるからである。図9aおよび図9bに示す五角形の機能56は、同じプロセッサ64によってパフォームされるので、図10aおよび図10bに示すように、五角形/四角形プロセッサ64からの入力と、そのプロセッサ64への出力とを有する単一の逆数/開平回路70を用いて、プロセッサ66、64をインプリメントすることができる。平方根の逆数を求めた結果は、プロセッサ66に渡されていく。図11aおよび図11bは、図10aおよび図10bに対応する。逆数/開平回路70を分離したことによって、他のプロセッサ66、64の複雑さが緩和される。逆数/開平回路70は、逆数回路および開平回路を用いてインプリメントすることができるが、LUT、特にFPGA(field programmable gate array)用のLUTを用いてインプリメントするのが好ましい。ただし、メモリはコストエフィシエント(cost efficient)である。
【0112】
コレスキーファクタGが判定された後、図12aおよび図12bに示すような前進代入を用いて、yが決定される。前進代入のアルゴリズムは次のようになる。
【0113】
【数26】
【0114】
バンド行列の場合、アルゴリズムは次のようになる。
【0115】
【数27】
【0116】
gLKはコレスキー行列GのL行K列に相当する要素である。
【0117】
図12aおよび図12bは、スカラープロセッサを用いた、4×4 G行列に関する前進代入の2つの実施形態である。図12cの星形で表される機能72と、図12dのひし形で表される機能74の2つの機能が、プロセッサ72、74によって実行される。星形の機能72は、式42および式43を実行する。
【0118】
y←w 式42
x←z−w×gij 式43
【0119】
ひし形の機能74は、式44および式45を実行する。
【0120】
x←z/gij 式44
y←x 式45
【0121】
図12aに示すようにPEの同時接続の間に遅延素子を挿入し、実行プレーン(t1からt7)に垂直なアレイを射影することにより、そのアレイを線形アレイ上に射影することができる。
【0122】
【数28】
【0123】
から得た受信ベクトルの値r1〜r4をアレイにロードし、アレイからy1〜y4出力を得る。ひし形の機能74は主対角に沿ってのみ存在するので、4つのPEからなるアレイを、図13aに示すようにN個のPEを用いてN×N行列を処理するように拡張することができる。このアレイの処理時間は2Nサイクルとなる。
【0124】
各PEは1つおきの処理サイクルでのみ使用されるので、遅延素子の半数は、図12bに示すように削除することができる。この射影される線形アレイは、図13bに示すように任意のN×N行列を処理するように拡張することができる。このアレイの処理時間はNサイクルとなる。
【0125】
図13bに示す射影先アレイのPEのサイクルごとのオペレーションが、図14a〜図14dに示されている。図13aに示す第1サイクルt1では、r1が左側のプロセッサ1(74)にロードされ、y1がr1とg11を用いて決定される。図14bに示す第2サイクルt2では、r2、r3がロードされ、g31、g21、g22が処理され、y2が決定される。図14cに示す第3サイクルt3では、r4がロードされ、g41、g42、g32、g33がロードされ、y3が決定される。図14dに示す第4サイクルt4では、g43、g44が処理され、y4が決定される。
【0126】
図12e〜図12jには、5×5バンド行列の各処理サイクルに関するタイミング図が示されている。図12eは、左下隅の3つのエントリが0というバンド行列の性質(バンド幅が3の場合)を示している。
【0127】
コレスキー分解のときと同様に、前進代入でも、同じPEが利用できることを示すために、図12fはステージ6から開始する。ステージ6は、図9c〜図9nの最終ステージの後のステージである。
【0128】
同様に、図12k〜図12pは、図9o〜図9zのプロセッサが前進代入もパフォームできるように拡張した例を示す。これらの図においては、ステージは、コレスキー分解を行う5つのステージの後のステージ6から開始される。この処理は、各処理サイクルに対して、ステージ6のタイム0(図12k)から、ステージ6のタイム4(図12o)の後の最終結果(図12p)まで、パフォームされる。
【0129】
前進代入によってy変数が判定された後、後退代入によってデータベクトルを判定することができる。後退代入は次のサブルーチンによって実行される。
【0130】
【数29】
【0131】
バンド行列の場合、次のサブルーチンが用いられる。
【0132】
【数30】
【0133】
(・)*は複素共役関数を示す。
【0134】
【数31】
【0135】
は、コレスキーファクタGについて判定された対応する要素の複素共役である。YLはyの対応する要素である。
【0136】
後退代入は、4×4処理アレイに関する図15aおよび図15bに示すように、星形およびひし形の機能76、78を用いるスカラープロセッサによってもインプリメントされる。しかし、これらの機能は、図15cおよび図15dに示すように、G行列の値の複素共役を用いてパフォームされる。したがって、式42〜式45は、それぞれ、式46〜式49となる。
【0137】
y←w 式46
【0138】
【数32】
【0139】
y←x 式49
【0140】
プロセッサ76、78の間の同時代入で、遅延素子68を挿入することにより、図15aのアレイは、実行プレーンを横断して線形アレイに射影される。このアレイは、N×N行列を処理するため、図16aに示すように拡張することができる。yベクトルの値が図16aのアレイにロードされ、データベクトルdが出力される。このアレイは、dを判定するのに2Nクロックサイクルを要する。1つおきのプロセッサが1つおきのクロックサイクルでオペレートするので、2つのdを同時に判定することができる。
【0141】
図16aの各プロセッサ76、78は1つおきのクロックサイクルでオペレートするので、図15bに示すように1つおきの遅延素子を削除することができる。図15bの射影先アレイは、N×N行列を処理するため、図16bに示すように拡張することができる。このアレイは、dを判定するのにNクロックサイクルを要する。
【0142】
図16bの射影先アレイのPE76、78のサイクルごとの動作が、図17a〜図17dに示されている。図17aに示す第1サイクルt1では、y4がロードされ、
【0143】
【数33】
【0144】
が処理され、d4が決定される。図17bに示す第2サイクルt2では、y2、y3がロードされ、
【0145】
【数34】
【0146】
、
【0147】
【数35】
【0148】
が処理され、d3が決定される。図17cに示す第3サイクルt3では、y1がロードされ、
【0149】
【数36】
【0150】
および
【0151】
【数37】
【0152】
が処理され、d2が決定される。図17dに示す第4サイクルt4では、
【0153】
【数38】
【0154】
、
【0155】
【数39】
【0156】
が処理され、d4が決定される。
【0157】
図15e〜図15jには、後退代入を実行できるようにするための、図12e〜図12jのプロセッサの拡張が示されている。図15eは、左下隅の3つのエントリが0というバンド行列の性質を示している。
【0158】
タイミング図は、前進代入のステージ6の後に置かれたステージ7から開始する。処理は、ステージ7のタイム0(図15f)から開始し、ステージ7のタイム4(図15j)で完了する。ステージ7のタイム4(図15j)の後、全てのデータd1からd5が決定される。
【0159】
同様に、図15k〜図15pには、後退代入も実行できるようにするための、図12k〜図12pのプロセッサの拡張が示されている。これらの図は、前進代入のステージ6の後、ステージ7から開始する。処理は、ステージ7のタイム0(図15k)から最終結果(図15p)の各処理サイクルで実行される。図9c〜図9nと、図12e〜図12jと、図15e〜図15jとに示すように、バンド行列の場合は、コレスキー分解と、前進代入と、後退代入とを実行するための2次元アレイのプロセッサ数を減らすことができる。図9o〜図9z、図12k〜図12pに示すように、線形アレイのプロセッサ数は、行列の次元数からバンド行列のバンド幅に減らされる。
【0160】
前進代入および後退代入に関する個々のPE72、74、76、78の複雑さを軽減するため、図18aおよび図18bに示すように、PE72、74、76、78から除算機能80を分離することができる。図18aおよび図18bは、それぞれ、図16aおよび図16bに対応する。PE72、74、76、78に関連する前進代入および後退代入のためのデータは異なるが、PE72、74、76、78によってパフォームされる機能は同じである。除算器80は、除算機能をパフォームするために、最も右側のPE74、78によって使用される。除算器80は、逆数値を判定するためのLUTとしてインプリメントされ、LUTは、最も右側のプロセッサ74、78によって乗算において使用される。前進代入および後退代入を行う際には、コレスキー分解の実行によって得た逆数がすでにメモリに存在しているので、前進代入および後退代入のための逆数の乗算には、すでにメモリに格納されている逆数を利用することができる。
【0161】
3つの全ての処理(Gの判定、前進代入および後退代入)で、計算データフローはNまたはバンド幅Pが同じフローとなるので、3つの機能を全て、同じ再構成可能アレイで実行することができる。再構成可能アレイの各PE84、82は、図19aおよび図19bに示すように、Gを判定する機能と前進代入および後退代入をパフォームする機能をパフォームさせることができる。最も右側のプロセッサ82は、五角形/四角形とひし形の機能64、74、78を実行することができる。他のプロセッサ84は、円/八角形と星形の機能66、72、76をパフォームすることができる。コレスキー分解を実行する場合、最も右側のPE82は、五角形/四角形の機能64を用いてオペレートし、他のPE84は、円/八角形の機能66を用いてオペレートする。前進代入および後退代入を実行する場合、最も右側のプロセッサ82は、ひし形の機能74、78を用いてオペレートし、他のPE84は、星形の機能72、76を用いてオペレートする。PE82、84は好ましくは、必要な機能をパフォームするように構成される。再構成可能アレイを用いることにより、各PE82、84は、前進代入および後退代入の2つの算術機能と、コレスキー分解に関する4つの機能を実行し、PE82、84ごとに実行される算術機能は全部で6つとなる。これらの機能は、演算論理ユニット(ALU)と適切な制御ロジック、またはその他の手段で実行することができる。
【0162】
再構成可能アレイ内の個々のPE82、84の複雑さを軽減するため、除算および開平機能86は、好ましくは、逆数および開平装置86としてアレイから切り離される。逆数および開平装置86は、好ましくは、図20aおよび図20bに示すように、前進代入および後退代入において最も右側のPE82によって、乗算において使用される逆数を判定し、最も右側のプロセッサのデータを用いた乗算において使用され、PE84に渡される平方根の逆数を判定する。逆数と平方根の逆数の判定は、好ましくは、LUTを用いて実行される。あるいは、除算および開平機能ブロック86は、除算回路と開平回路とすることもできる。
【0163】
PE82、84の数をさらに減らすために、フォールディング(folding)が用いられる。図21aおよび図21bにフォールディングが示されている。フォールディングでは、線形システム解法のためにP個のPE82、84を使用する代りに、より少ない数FのPEがQ段のフォールドで使用される。例えば、Pを9個のPE82、84とした場合、3段のフォールドでは、3個のPE82、84が9個のPEの機能をパフォームする。フォールディングの1つの難点は、縮小されたアレイの処理時間がQ倍に増加することである。1つの利点は、プロセッサ利用度の効率が一般に増大することである。3段のフォールドの場合、処理時間は3倍になる。したがって、プロセッサ数の最小化とデータを処理するのに許容できる最大処理時間とのトレードオフに基づいて、フォールドのステージ数が選択される。
【0164】
図21aには、図11bのアレイを3段にフォールドすることによって、12個のPEの機能を4個のPE761、762、763、764/78でパフォームする双方向フォールドが示されている。PE761、762、763、764/78の間に遅延素子を挿入する代りに、デュアルポートメモリ861、862、863、864(86)を使用して、各フォールドのデータを保存する。遅延素子(デュアルポートメモリ86)は、図12aの実施形態でのように各PE接続ごとに存在できるが、図12bのインプリメンテーションでのように1つおきの接続ごとに存在するものとして示されている。デュアルポートメモリの代りに、2組のシングルポートメモリを使用することもできる。
【0165】
第1のフォールドにおいては、各PEのデータは、それに関連づけられたデュアルポートメモリ86のフォールド1用のアドレスに保存される。行列のデータもメモリセル881〜884(88)からプロセッサ761〜763、764/78に入力される。フォールド1のPE764/78とフォールド3のプロセッサ761の間にデータのラップアラウンドは起らないので、これらのプロセッサの間でデュアルポートメモリ86は使用されない。しかし、フォールド1とフォールド2のプロセッサ761の間およびフォールド2とフォールド3のプロセッサ764/78の間に単一のアドレスが必要とされるので、デュアルポートメモリ86が破線で示されている。第2のフォールドの間、各プロセッサのデータはフォールド2用のメモリアドレスに保存される。行列のデータもフォールド2用にPE761〜763、764/78に入力される。フォールド2のPE761用のデータはフォールド1のPE761から来るが、これらは物理的には同じPE761であるので、この接続は(示されてはいるが)必要がない。第3のフォールドにおいて、各PEのデータはフォールド3用のメモリアドレスに保存される。行列のデータもフォールド3用にPE761〜763、764/78に入力される。フォールド3のPE764/78用のデータはフォールド2のPE764/78から来るので、この接続は必要がない。次の処理ステージでは、フォールド1から手順が繰り返される。
【0166】
図22aは、図21aの双方向フォールドの実施形態をN個のPE761〜76N-1、76N/78に拡張したものである。PE761〜76N-1、76N/78は機能的に線形アレイとして構成され、デュアルポートメモリ86または2組のシングルポートメモリをアクセスする。
【0167】
図21bには、図11bのアレイの単方向フォールドバージョンが示されている。第1のフォールドにおいて、各PEのデータは、それに関連づけられたデュアルポートメモリのフォールド1用のアドレスに保存される。フォールド1のPE764/78とフォールド3のPE761は物理的に接続されているが、動作上、これらのPE間で直接データを伝送することはない。したがって、これらの間のメモリポート864はアドレスが1つ少ない記憶域をもつ。フォールド2のPE764/78は、PE間のリンク状の接続によって効率的にフォールド1のPE761に結合される。同様に、フォールド3のPE764/78は、フォールド2のPE761に結合される。
【0168】
図22bは、図20bの単方向フォールディングのインプリメンテーションをN個のPEに拡張したものである。PE761〜76N-1、76N/78は、デュアルメモリの周りにリング状に機能的に配置される。
【0169】
フォールディングされたPEで、コレスキー分解、前進代入および後退代入をインプリメントするには、アレイ内のPE764/78などのPEは、コレスキー分解、前進代入および後退代入のためのプロセッサ機能とともに、各フォールドのためのプロセッサ機能もパフォームできなければならない。PE764/78について図20aおよび図20bに示すように。インプリメントによっては、追加されるPEに必要な機能が、そのインプリメンテーションの複雑さを増大させる。ALUを用いてフォールディングをインプリメントするには、1個のPE(PE 764/78など)は、12種の演算機能(前進代入および後退代入のための4種とコレスキー分解のための8種)をパフォームするが、他のPEは6種の演算機能をパフォームするだけである。
【0170】
図23には、コレスキー分解、前進代入および後退代入で定義される6種の機能全てをパフォームするのに使用できる、好ましい簡単な再構成可能PEの1スライスが示されている。除算を1個のPE(以下PE1という)に分離した後、このPEは使用される。好ましくは2つのスライスが使用され、一方はxおよびyの実数成分を生成するため、他方はそれらの虚数成分を生成するためのものである。添え字iおよびrは、それぞれ、実数成分および虚数成分を示すのに使用される。
【0171】
信号w、x、y、zは、先にPE機能を定義する際に定義したものと同じである。信号aqおよびadはそれぞれ、処理のあるサイクルでリード(read)され、かつ/またはライト(write)されるPEのメモリロケーションの現在の状態と、次の状態とを表す。括弧内の名前は、第2のスライスで使用される信号を示す。
【0172】
この好ましいPEは、どのPEとしても使用できるが、他のPEから独立して除算機能をパフォームするPE1の最適化に使用するのが望ましい。マルチプレクサ941から948への各入力にはラベル付けされており、「0」はその入力がPE1だけに使用されることを、「−」はPE1以外の全てのPEに使用されることを、「+」は全てのPEに使用されることを示す。PE1の実数スライスの場合を除いて、isqr入力は0に接続され、PE1の実数スライスの場合は、isqr入力はaqr入力の平方根の逆数を生成する機能の出力に接続される。このような機能は、適当な固定小数点ワードサイズのROMを用いてLUTとしてインプリメントすることができる。
【0173】
図23に示すように、マルチプレクサ941と942の出力は、乗算器961によって掛け合される。マルチプレクサ943と944の出力は、乗算器962によって掛け合される。乗算器961と乗算器962の出力は、加算/減算回路98によってコンバインされる。加算/減算回路98の出力は、減算器99によってマルチプレクサ945の出力とコンバインされる。減算器99の出力は、マルチプレクサ948への入力となる。
【技術分野】
【0001】
本発明は、一般に、線形システムの解法に関する。具体的には、本発明は、線形システムを解くためのアレイ処理の使用に関する。
【背景技術】
【0002】
工学上の問題を解くのに、線形システム解法が用いられることが多い。このような課題の1つに、TDD(time division duplex)通信において、CDMA(code division multiple access)を用いて、複数のユーザ信号をジョイントユーザ検出(joint user detection)することがある。このようなシステムにおいては、複数のユーザが、同じ固定継続時間間隔(タイムスロット)で、同時に複数の通信バーストを伝送する。マルチプルバーストは、異なる拡散符号を用いて伝送される。伝送中、各バーストはチャネルレスポンスを経験する。伝送されたバーストからデータを復元するための1つのアプローチが、ジョイント検出(joint detection)であり、このアプローチでは、全てのユーザデータが同時に受信される。このようなシステムを図1に示す。UE(user equipment)または基地局において、ジョイント検出レシーバを使用することができる。
【0003】
マルチプルバースト90は、チャネルレスポンスを経験した後、コンバイン受信信号(combined received signal)として、アンテナ92またはアンテナアレイで受信される。受信信号は、デモジュレータ94などによって、ベースバンドに変換され、受信ベクトルrを生成するため、1つのADC(analog to digital converter)96または複数のADCなどによって、符号の1チップレートまたは符号の複数チップレートでサンプリングされる。チャネル推定デバイス98は、通信バーストのトレーニング系列の一部を使用して、バースト90のチャネルレスポンスを推定する。ジョイント検出器100は、各ユーザのバーストの推定または既知の拡散符号と、推定または既知のチャネルレスポンスとを使用して、全てのユーザの元の伝送データをデータベクトルdとして推定する。
【0004】
ジョイント検出問題は、一般に、式1によってモデル化される。
【0005】
Ad+n=r 式1
【0006】
dは伝送データベクトル、rは受信ベクトル、nはAWGN(additive white gaussian noise)であり、Aはチャネルレスポンスを既知の拡散符号を用いて畳み込むことによって構成されるM×N行列である。
【0007】
式1を解くための2つのアプローチに、ゼロフォーシング(ZF)およびMMSE(Minimum Mean Square Error)アプローチがある。nを0に接近させるZF解法は、式2による。
【0008】
d=(AHA)-1AHr 式2
【0009】
MMSEアプローチは、式3および式4による。
【0010】
d=R-1AHr 式3
R=AHA+σ2I 式4
【0011】
σはノイズnの分散であり、Iは単位行列である。
【0012】
拡散符号、チャネルレスポンスと、ノイズの分散の平均は、推定されるか、または既知であり、受信ベクトルは既知であるので、唯一の未知の変数は、データベクトルdである。行列の直接逆変換といった力ずくの解法は、どちらのアプローチによるとしても、極めて複雑である。この複雑さを緩和するための1つの技法に、コレスキー分解(Cholesky decomposition)がある。コレスキーのアルゴリズムは、
【0013】
【数1】
【0014】
またはRなどの対称正定値行列を、式5によって、下三角行列Gと上三角行列GHに因数分解する。
【0015】
【数2】
【0016】
対称正値行列
【0017】
【数3】
【0018】
は、式6によって、Aにその共役転置(エルミート)行列AHを乗算することによって、Aから生成することができる。
【0019】
【数4】
【0020】
【数5】
【0021】
は、簡単に式7によって定義される。
【0022】
【数6】
【0023】
その結果、式1は、ZFでは式8として、MMSEでは式9として、書き換えられる。
【0024】
【数7】
【0025】
【数8】
【0026】
式8または式9を解くため、式10によってコレスキーファクタ(Cholesky factor)が用いられる。
【0027】
【数9】
【0028】
変数yは式11によって定義される。
【0029】
GHd=y 式11
【0030】
変数yを使用して、式10は式12として書き換えられる。
【0031】
【数10】
【0032】
データベクトルを取得するための複雑さの大半は、3つのステップで実行される。第1のステップで、式13に示すように、
【0033】
【数11】
【0034】
またはRなどの派生対称正値行列からGが生成される。
【0035】
【数12】
【0036】
Gを用い、式14に示すように、式8においてGの前進代入(forward substitution)を使用してyを解く。
【0037】
【数13】
【0038】
Gの共役転置行列GHを用い、式15に示すように、式11において後退代入(backwardsubstitution)を使用してdを解く。
【0039】
d=BACKWARD SUB(GH,y) 式15
【0040】
式13によってコレスキーファクタGを判定するアプローチは、
【0041】
【数14】
【0042】
またはRに関して示された以下のアルゴリズムとするが、Rに関しては類似のアプローチも用いられる。
【0043】
【数15】
【0044】
ad,eは行列
【0045】
【数16】
【0046】
またはRのd行e列の要素を表す。「:」は「jからNまで」などの「まで」演算子を示し、(・)Hは共役転置(エルミート)演算子を示す。
【0047】
コレスキーファクタを求解するための別のアプローチでは、N個の並列ベクトルベースプロセッサが使用される。各プロセッサは、
【0048】
【数17】
【0049】
またはR行列の列にマップされる。各プロセッサの列は、変数μによって定義され、μ=1:Nである。並列プロセッサに基づくサブルーチンは、μ=1:Nとした場合の以下のサブルーチンとして考察することができる。
【0050】
【数18】
【0051】
recv(・,left)は左側のプロセッサ演算器からの受信であり、send(・,right)は右側のプロセッサ演算器への伝送であり、gK,Lは隣接プロセッサからの値である。
【0052】
このサブルーチンは、図2a〜図2hを用いて図説される。図2aは、ジョイント検出器のベクトルプロセッサとその関連メモリセルのブロック図である。各プロセッサ501から50N(50)は、行列の列に対して演算を行う。G行列は下三角行列であり、
【0053】
【数19】
【0054】
またはRは下三角行列によって完全に定義されるので、下三角行列の要素ak,lだけが使用される。
【0055】
図2bおよび図2cには、プロセッサの下側のセル上で、プロセッサによって実行され得る2つの機能が示されている。図2bでは、下向き三角形で表される機能52が、μ番目のプロセッサ50の下側のセル(aμμからaNμ)上で、式16および式17を実行する。
【0056】
【数20】
【0057】
aμ:N,μ:=ν 式17
【0058】
「←」は同時代入を示し、「:=」は逐次代入を示し、νは右側のプロセッサに伝送される値である。
【0059】
図2cでは、右向き三角形で表される機能52が、μ番目のプロセッサ50の下側のセル上で、式18および式19を実行する。
【0060】
ν←u 式18
aμ:N,μ:=aμ:N,μ−νμνμ:N 式19
【0061】
νkは、第k番目のプロセッサ50の右側に出ていく値に関係付けした値を示す。
【0062】
図2d〜図2gには、4×4 G行列に対して実行されるデータフローと機能が示されている。処理のステージ1から4までに対しては、図2d〜図2gに示すように、最も左側のプロセッサ50がドロップアウトし、下向き三角形の機能52が、左から右に移動していく。図2d〜図2gをインプリメントするため、下向き三角形は、プロセッサを物理的に右向きに置き換えることができ、または下向き三角形の機能を担うことによって、プロセッサをバーチャルに右向きに置き換えることができる。
【0063】
これらエレメント(element)は、ステージ1を表す図2hに示すように、((N−4)個の)プロセッサ50を第4番目のプロセッサ504の右側に追加し、プロセッサ50の各々に行列の対角より下方の(N−4個の)セルを追加することによって、N×N行列とN個のプロセッサ50に拡張可能である。このような構成による処理はNステージにわたって実行される。
【0064】
このようなコレスキー分解のインプリメントは、ベクトルプロセッサを用いるにしても、スカラーPEへの直接分解を用いるにしても、各ステージの処理の後で、大量の処リソースがアイドル状態になるため、効率的ではない。
【発明の概要】
【発明が解決しようとする課題】
【0065】
したがって、線形システムを解くための代替アプローチを有するのが望ましい。
【課題を解決するための手段】
【0066】
線形システムを解くためにPEが利用される。本発明の一実施形態では、コレスキーファクタを判定するため、行列の対角の行列要素がスカラーPEに射影される。別の実施形態では、2次元スカラーアレイを用いて、コレスキーファクタを判定する。第3の実施形態では、再構成可能スカラー線形アレイを用いて、コレスキーファクタを判定し、前進代入および後退代入を実行する。行列が、限られたバンド幅を有する場合は、これらの実施形態で使用されるプロセッサの数を減らすことができる。プロセッサのフォールディング(folding)を用いて、これらの実施形態で使用されるプロセッサの数を減らすことができる。本発明の別の実施形態は、コレスキーファクタを判定し、前進代入および後退代入を実行するように再構成できるPEである。
【図面の簡単な説明】
【0067】
【図1】ジョイント検出レシーバの簡略な図である。
【図2a】ベクトルプロセッサを用いてコレスキーファクタを判定する様子を示した図である。
【図2b】ベクトルプロセッサを用いてコレスキーファクタを判定する様子を示した図である。
【図2c】ベクトルプロセッサを用いてコレスキーファクタを判定する様子を示した図である。
【図2d】ベクトルプロセッサを用いてコレスキーファクタを判定する様子を示した図である。
【図2e】ベクトルプロセッサを用いてコレスキーファクタを判定する様子を示した図である。
【図2f】ベクトルプロセッサを用いてコレスキーファクタを判定する様子を示した図である。
【図2g】ベクトルプロセッサを用いてコレスキーファクタを判定する様子を示した図である。
【図2h】ベクトルプロセッサを用いてコレスキーファクタを判定する様子を示した図である。
【図3a】コレスキー分解を実行するN個のスカラープロセッサの好ましい実施形態を示した図である。
【図3b】コレスキー分解を実行するN個のスカラープロセッサの好ましい実施形態を示した図である。
【図4a】コレスキー分解のために3次元グラフを使用した一例を示した図である。
【図4b】コレスキー分解のために3次元グラフを使用した一例を示した図である。
【図4c】コレスキー分解のために3次元グラフを使用した一例を示した図である。
【図4d】コレスキー分解のために3次元グラフを使用した一例を示した図である。
【図4e】コレスキー分解のために3次元グラフを使用した一例を示した図である。
【図5a】コレスキー分解を実行するベクトルプロセッサをスカラープロセッサにマップする一例を示した図である。
【図5b】コレスキー分解を実行するベクトルプロセッサをスカラープロセッサにマップする一例を示した図である。
【図5c】コレスキー分解を実行するベクトルプロセッサをスカラープロセッサにマップする一例を示した図である。
【図5d】コレスキー分解を実行するベクトルプロセッサをスカラープロセッサにマップする一例を示した図である。
【図5e】コレスキー分解を実行するベクトルプロセッサをスカラープロセッサにマップする一例を示した図である。
【図6a】非バンド行列に関するスカラーアレイの処理フローを示した図である。
【図6b】非バンド行列に関するスカラーアレイの処理フローを示した図である。
【図6c】非バンド行列に関するスカラーアレイの処理フローを示した図である。
【図6d】非バンド行列に関するスカラーアレイの処理フローを示した図である。
【図6e】バンド行列に関するスカラーアレイの処理フローを示した図である。
【図6f】バンド行列に関するスカラーアレイの処理フローを示した図である。
【図6g】バンド行列に関するスカラーアレイの処理フローを示した図である。
【図6h】バンド行列に関するスカラーアレイの処理フローを示した図である。
【図6i】バンド行列に関するスカラーアレイの処理フローを示した図である。
【図6j】バンド行列に関するスカラーアレイの処理フローを示した図である。
【図7】図4aの射影をk軸に沿ってN×N行列に拡張した図である。
【図8a】2Dスカラーアレイ中のスカラープロセッサ間の遅延を利用した処理フローを示した図である。
【図8b】2Dスカラーアレイ中のスカラープロセッサ間の遅延を利用した処理フローを示した図である。
【図8c】2Dスカラーアレイ中のスカラープロセッサ間の遅延を利用した処理フローを示した図である。
【図8d】2Dスカラーアレイ中のスカラープロセッサ間の遅延を利用した処理フローを示した図である。
【図8e】遅延素子とその関連式を示した図である。
【図9a】図8a〜図8dのスカラープロセッサアレイの、4つのスカラープロセッサからなる1Dアレイへの射影を示した図である。
【図9b】1つおきのプロセッサ間に遅延要素を有するスカラープロセッサアレイの、4つのスカラープロセッサからなる1Dアレイへの射影を示した図である。
【図9c】1つおきのプロセッサ間に遅延要素を有するバンド行列のコレスキー分解に関する処理フローを示した図である。
【図9d】1つおきのプロセッサ間に遅延要素を有するバンド行列のコレスキー分解に関する処理フローを示した図である。
【図9e】1つおきのプロセッサ間に遅延要素を有するバンド行列のコレスキー分解に関する処理フローを示した図である。
【図9f】1つおきのプロセッサ間に遅延要素を有するバンド行列のコレスキー分解に関する処理フローを示した図である。
【図9g】1つおきのプロセッサ間に遅延要素を有するバンド行列のコレスキー分解に関する処理フローを示した図である。
【図9h】1つおきのプロセッサ間に遅延要素を有するバンド行列のコレスキー分解に関する処理フローを示した図である。
【図9i】1つおきのプロセッサ間に遅延要素を有するバンド行列のコレスキー分解に関する処理フローを示した図である。
【図9j】1つおきのプロセッサ間に遅延要素を有するバンド行列のコレスキー分解に関する処理フローを示した図である。
【図9k】1つおきのプロセッサ間に遅延要素を有するバンド行列のコレスキー分解に関する処理フローを示した図である。
【図9l】1つおきのプロセッサ間に遅延要素を有するバンド行列のコレスキー分解に関する処理フローを示した図である。
【図9m】1つおきのプロセッサ間に遅延要素を有するバンド行列のコレスキー分解に関する処理フローを示した図である。
【図9n】1つおきのプロセッサ間に遅延要素を有するバンド行列のコレスキー分解に関する処理フローを示した図である。
【図9o】バンド行列を処理する線形アレイのメモリアクセスを示した図である。
【図9p】バンド行列を処理する線形アレイのメモリアクセスを示した図である。
【図9q】バンド行列を処理する線形アレイのメモリアクセスを示した図である。
【図9r】バンド行列を処理する線形アレイのメモリアクセスを示した図である。
【図9s】バンド行列を処理する線形アレイのメモリアクセスを示した図である。
【図9t】バンド行列を処理する線形アレイのメモリアクセスを示した図である。
【図9u】バンド行列を処理する線形アレイのメモリアクセスを示した図である。
【図9v】バンド行列を処理する線形アレイのメモリアクセスを示した図である。
【図9w】バンド行列を処理する線形アレイのメモリアクセスを示した図である。
【図9x】バンド行列を処理する線形アレイのメモリアクセスを示した図である。
【図9y】バンド行列を処理する線形アレイのメモリアクセスを示した図である。
【図9z】バンド行列を処理する線形アレイのメモリアクセスを示した図である。
【図10a】スカラープロセッサがN個に拡張された、図9aの射影されたアレイを示した図である。
【図10b】スカラープロセッサがN個に拡張された、図9bの射影されたアレイを示した図である。
【図11a】除算の平方根をとる関数の図10aのアレイからの分離を示す図である。
【図11b】除算の平方根をとる関数の図10bのアレイからの分離を示す図である。
【図12a】各プロセッサ間で遅延要素を有する前進代入アレイの、4つのスカラープロセッサへの射影を示した図である。
【図12b】1つおきのプロセッサ間で遅延要素を有する前進代入アレイの、4つのスカラープロセッサへの射影を示した図である。
【図12c】前進代入に関する星型で表される関数によって実行される式を示した図である。
【図12d】前進代入に関するひし形で表される関数によって実行される式を示した図である。
【図12e】1つおきのプロセッサ間に同時代入を有するバンド行列の前進代入に関する処理フローを示した図である。
【図12f】1つおきのプロセッサ間に遅延要素を有するバンド行列の前進代入に関する処理フローを示した図である。
【図12g】1つおきのプロセッサ間に遅延要素を有するバンド行列の前進代入に関する処理フローを示した図である。
【図12h】1つおきのプロセッサ間に遅延要素を有するバンド行列の前進代入に関する処理フローを示した図である。
【図12i】1つおきのプロセッサ間に遅延要素を有するバンド行列の前進代入に関する処理フローを示した図である。
【図12j】1つおきのプロセッサ間に遅延要素を有するバンド行列の前進代入に関する処理フローを示した図である。
【図12k】バンド行列を処理する前進代入線形アレイのメモリアクセスを示した図である。
【図12l】バンド行列を処理する前進代入線形アレイのメモリアクセスを示した図である。
【図12m】バンド行列を処理する前進代入線形アレイのメモリアクセスを示した図である。
【図12n】バンド行列を処理する前進代入線形アレイのメモリアクセスを示した図である。
【図12o】バンド行列を処理する前進代入線形アレイのメモリアクセスを示した図である。
【図12p】バンド行列を処理する前進代入線形アレイのメモリアクセスを示した図である。
【図13a】スカラープロセッサがN個に拡張された、図12aの射影されたアレイを示した図である。
【図13b】スカラープロセッサがN個に拡張された、図12bの射影されたアレイを示した図である。
【図14a】図12bの射影されたアレイに関する処理フローを示した図である。
【図14b】図12bの射影されたアレイに関する処理フローを示した図である。
【図14c】図12bの射影されたアレイに関する処理フローを示した図である。
【図14d】図12bの射影されたアレイに関する処理フローを示した図である。
【図15a】各プロセッサ間で遅延要素を有する後退代入アレイの、4つのスカラープロセッサへの射影を示した図である。
【図15b】1つおきのプロセッサ間で遅延要素を有する後退代入アレイの、4つのスカラープロセッサへの射影を示した図である。
【図15c】後退代入に関する星型で表される関数によって実行される式を示した図である。
【図15d】後退代入に関するひし形で表される関数によって実行される式を示した図である。
【図15e】1つおきのプロセッサ間に同時代入を有するバンド行列の後退代入に関する処理フローを示した図である。
【図15f】1つおきのプロセッサ間に遅延要素を有するバンド行列の後退代入に関する処理フローを示した図である。
【図15g】1つおきのプロセッサ間に遅延要素を有するバンド行列の後退代入に関する処理フローを示した図である。
【図15h】1つおきのプロセッサ間に遅延要素を有するバンド行列の後退代入に関する処理フローを示した図である。
【図15i】1つおきのプロセッサ間に遅延要素を有するバンド行列の後退代入に関する処理フローを示した図である。
【図15j】1つおきのプロセッサ間に遅延要素を有するバンド行列の後退代入に関する処理フローを示した図である。
【図15k】バンド行列を処理する後退代入線形アレイのメモリアクセスを示した図である。
【図15l】バンド行列を処理する後退代入線形アレイのメモリアクセスを示した図である。
【図15m】バンド行列を処理する後退代入線形アレイのメモリアクセスを示した図である。
【図15n】バンド行列を処理する後退代入線形アレイのメモリアクセスを示した図である。
【図15o】バンド行列を処理する後退代入線形アレイのメモリアクセスを示した図である。
【図15p】バンド行列を処理する後退代入線形アレイのメモリアクセスを示した図である。
【図16a】スカラープロセッサがN個に拡張された、図15aの射影されたアレイを示した図である。
【図16b】スカラープロセッサがN個に拡張された、図15bの射影されたアレイを示した図である。
【図17a】図15bの射影されたアレイに関する処理フローを示した図である。
【図17b】図15bの射影されたアレイに関する処理フローを示した図である。
【図17c】図15bの射影されたアレイに関する処理フローを示した図である。
【図17d】図15bの射影されたアレイに関する処理フローを示した図である。
【図18a】分離された除算機能をもつ図13a、図16aのアレイを示した図である。
【図18b】分離された除算機能をもつ図13b、図16bのアレイを示した図である。
【図19a】G、前進代入、および後退代入を判定するための再構成可能アレイを示した図である。
【図19b】G、前進代入、および後退代入を判定するための再構成可能アレイを示した図である。
【図20a】除算および平方根をとる関数の再構成可能アレイからの分離を示す図である。
【図20b】除算および平方根をとる関数の再構成可能アレイからの分離を示す図である。
【図21a】双方向フォールディングを示した図である。
【図21b】単方向フォールディングを示した図である。
【図22a】N個のプロセッサを用いた双方向フォールディングの実施を示した図である。
【図22b】N個のプロセッサを用いた単方向フォールディングの実施を示した図である。
【図23】簡単な再構成可能PEの好ましいスライスを示した図である。
【発明を実施するための形態】
【0068】
図3aおよび図3bは、Gを取得するためコレスキー分解を行うN個のスカラーPE541ないし54N(54)の好ましい実施形態を示す。簡略のため、4×4 G行列について説明し記述するが、このアプローチは、図3aおよび図3bに示すように、任意に、4×4 G行列に拡張することができる。
【0069】
図4aは、上記のアルゴリズムをパフォームするための3次元計算依存グラフ(computational dependency graph)を示す。簡略のため、図4aには、バンド幅が3である5×5行列の処理を示す。各ノードによりパフォームされる機能を、図4b〜図4eに示す。図4bにおいて五角形で表す機能は、式20および式21を実行する。
【0070】
【数21】
【0071】
aout←y 式21
【0072】
←は同時代入を示す。ainは下位レベルから当該ノードへの入力であり、aoutは上位レベルへの出力である。図4cは、式22および式23を実行する四角形で表される機能である。
【0073】
y←z* 式22
aout←ain−|z|2 式23
【0074】
図4dは、式24、式25、および式26を実行する八角形で表される機能である。
【0075】
y←w 式24
x←ain/w 式25
aout←x 式26
【0076】
図4eは、式27、式28、および式29を実行する円で表される機能である。
【0077】
y←w 式27
x←z 式28
aout←ain−w×x 式29
【0078】
図5aは、4×4 G行列に対するベクトルベースのコレスキー分解のステージ1を、2次元スカラーベースアプローチにマップする様子を示した図である。各ベクトルプロセッサ52、54は、図5aに示すように、少なくとも1つのスカラープロセッサ56、58、60、62にマップされる。各スカラープロセッサ56、58、60、62は、メモリセルaijに関係付けしてある。各プロセッサ56、58、60、62でパフォームされる機能が、図5b〜図5eに示されている。図5bには、五角形で表される機能56が示されており、これは式30および式31を実行する。
【0079】
【数22】
【0080】
aij:=y 式31
【0081】
:=は逐次代入を示す。yは下側のプロセッサに伝送される値を示す。図5cには、八角形で表される機能58が示されており、これは式32、式33、および式34を実行する。
【0082】
y←w 式32
x←aij/w 式33
aij:=x 式34
【0083】
wは上側のプロセッサから伝送された値を示す。図5dには、四角形で表される機能60が示されており、これは式35および式36を実行する。
【0084】
y←z* 式35
aij:=aij−|z|2 式36
【0085】
xは右側のプロセッサに伝送される値を示す。図5eには、円で表される機能62示されており、これは式37、式38、および式39を実行する。
【0086】
y←w 式37
x←z 式38
aij:=aij−w×z 式39
【0087】
図6a〜図6dには、4つの逐次ステージ(ステージ1ないし4)における、プロセッサ56、58、60、62によるデータフローが示されている。図6a〜図6dに示すように、各ステージの後、プロセッサ56、58の列がドロップオフする。この処理には、4処理サイクルを必要とし、一般にはNサイクルを必要とする。各ステージにつき1処理サイクルを必要とする。図5aに示すように、4×4 G行列を判定するのに、10個のスカラープロセッサを必要とする。N×N行列の場合、必要なプロセッサの数は、式40による。
【0088】
【数23】
【0089】
図6e〜図6jには、5×5バンド行列に関する処理フローが示されている。アクティブなプロセッサを実線で示す。このバンド行列では、左下の3つのエントリ(a41、a51、a52、図6e〜図6jでは図示せず)が0である。図6eに示すように、ステージ1では、上側の6つのプロセッサがオペレートしている。図6fに示すように、ステージ1でアクティブな6つのプロセッサが、g11、g21、g31と、ステージ2で使用する3つの即値結果α22、α32、α33を決定する。
【0090】
ステージ2では、6つのプロセッサ(α22,α32,α33,
【0091】
【数24】
【0092】
)がオペレートしている。ステージ2では、図6g(ステージ3)に示すように、g22、g32、g42の値と、β33、β43、β44の即値結果が決定される。図6h(ステージ4)では、g33、g43、g53の値と、γ44、γ54、γ55の即値結果が判定される。図6(ステージ5)では、g44、g54と、即値δ55が決定される。図6j(最終ステージ)では、残りの値g55が利用できる。図に示すように、バンド行列という行列の性質から、ロードされない行列要素に対応する左下のプロセッサは不要であり、図示していない。
【0093】
図6a〜図6dの簡略な説明は、図7に示すように、N×N行列に拡張することができる。これら図に示すように、最上部のプロセッサ56は、五角形で表される機能をパフォームする。八角形で表される機能のプロセッサ58は、第1列に沿って下方に拡張され、四角形/五角形を組み合わせた形で表される二重目的のプロセッサ64は、主対角に沿って拡張される。残りのプロセッサ66は、八角形/円を組み合わせた形で表される二重目的のプロセッサ66である。この構成によって、スカラープロセッサだけを用いて、N×N G行列がN処理サイクルで決定される。
【0094】
行列のバンド幅が、限られた幅、例えばPしかない場合、PEの数を減らすことができる。説明のため、仮にPがN−1に等しい場合には、aN1用の左下のプロセッサがドロップオフする。仮にPがN−2に等しい場合には、さらに2つのプロセッサ(aN-1 1,aN2)がドロップオフする。
【0095】
スカラーPEの数が減少していく様子を、図8a〜図8eおよび図9a、図9bに関して説明する。図8a〜図8eには、図6a〜図6dの4スカラープロセッサ・インプリメンテーションについての1次元実行プレーン(execution plane)が説明されている。図8eの遅延素子68が、図8aに示すように、各同時接続(concurrent connection)において挿入される。図8eの遅延素子68は、式41によって、入力yを遅延させて、逐次出力xとする。
【0096】
y:=x 式41
【0097】
タイムt1から開始する各処理サイクルにおいて、プロセッサは、実行プレーンを表す斜線が示すように、逐次に処理を行う。この様子を説明すると、タイムt1では、a11用のプロセッサ56だけがオペレートする。タイムt2では、a21用のプロセッサ58だけがオペレートし、タイムt3では、a31およびa22用のプロセッサ58、60がオペレートする。以降、ステージ4まで同様に続いて、タイムt16では、a44用のプロセッサ56だけがオペレートする。その結果、Nステージの処理全体では、N2のクロックサイクルが必要になる。
【0098】
複数の行列を2次元スカラー処理アレイによりパイプライン処理することができる。図8a〜図8dに示すように、ある特定の実行プレーンで、t1からt16までがアクティブである。あるステージでは、実行プレーンの数に等しい数までの行列を、同時に処理することができる。ステージ1について説明すると、第1の行列が斜線t1に沿って処理される。次のクロックサイクルで、第1の行列はプレーンt2に渡され、プレーンt1は第2の行列のために使用される。このパイプラインは、任意の数の行列について続けることができる。パイプライン処理の1つの難点は、パイプライン処理においては、行列データの利用スケジュールが処理速度の低下を招くような場合には、全ての行列に関するデータを保存する必要がある点にある。
【0099】
行列のグループがステージ1でパイプライン処理された後、その行列のグループはステージ2でパイプライン処理され、以降、ステージNまでこれが続く。パイプライン処理を用いることにより、プロセッサの利用率ばかりか、アレイのスループットも劇的に向上する。
【0100】
各クロックサイクルにおいて、プロセッサ56、58、60、62が全て使用されるわけではないので、行列を1つだけ処理する場合、PE56、58、60、62を実行プレーン間で共用することによって、PEの数を減らすことができる。図9aおよび図9bは、PEを減らすための2つの好ましいインプリメンテーションを示す。図9aに示すように、実行プレーンに垂直な(行列の対角に沿った)線が、第1列の各PE56、58に関して示されている。各垂直な線に沿ったプロセッサ56、58、60、62は、全て、異なる処理サイクルでオペレートするので、その機能56、58、60、62を、下方に射影されるような単一のプロセッサ66、64によって実行することができる。処理機能56、60は、新しいコンバイン機能64によって実行される。処理機能58、62は、新しいコンバイン機能66によって実行される。遅延素子68およびプロセッサ間の接続も射影される。最も左側のPEは、二重機能素子66を使用するものとして示されているが、非バンド行列にとって都合がよいのであれば、この素子は八角形で表される機能58だけを実行するように簡略化することができる。
【0101】
図10aは、N×N G行列に対応できるように図9aを拡張したものである。図10aに示すように、N個のプロセッサ66、64を使用して、N×N G行列を処理する。図3aに示すように、図10aの処理機能は、N個のスカラープロセッサ54によってパフォームすることができる。バンド行列の場合は、バンド幅Pと同じ数のスカラープロセッサを使用して、G行列を処理することができる。
【0102】
図3aのインプリメンテーションにおいては、各プロセッサを1つおきのクロックサイクルで使用する。偶数番のプロセッサが、あるサイクルでオペレートし、奇数番のプロセッサが、次のサイクルでオペレートする。例えば、図9aのプロセッサ2(右から2番目)はタイムt2、t4、t6で処理を行い、プロセッサ3はタイムt3、t5で処理を行う。その結果、アレイへの入力として2つのG行列をインタレースしながらアレイを処理することによって、同時に2つのG行列を決定することができる。このアプローチによれば、図7のインプリメンテーションに比べて、プロセッサ利用率が大幅に向上する。
【0103】
単一のアレイの処理時間を短縮するため、図9bのインプリメンテーションが利用される。図9bに示すように、1つおきのプロセッサ接続で遅延素子がドロップオフ(drop off)する。タイムt1では、a11用のプロセッサ56だけがオペレートする。しかし、タイムt2では、a21、a22、a31用のプロセッサ58、60が全てオペレートしている。(元の行列の対角に沿った)垂直線に沿ったこのアレイの射影も、図9bに示されている。図示するように、遅延素子68の数が半分に減少する。このアレイを使用した場合、N×N G行列の処理時間は、(NP−(P2−P)/2)となる。したがって、単一のG行列の処理時間が大幅に短縮される。
【0104】
図7、図3a、および図3bのインプリメンテーションの別の利点は、行列のバンド幅に応じて、各処理アレイをスケーリングすることができる点にある。バンド幅が小さい行列(下三角行列の要素が0)の場合、図7のそれらの要素のためのプロセッサ58、66をドロップアウトすることができる。図3aおよび図3bに関しては、下三角行列の要素は図9aおよび図9bの最も左側の垂直線に対応するので、それらの垂直線によって射影されるプロセッサはドロップアウトされる。図9aを用いて説明すると、当該行列のバンド幅は、a41、a31、a42が0であるPE58、62を有する。その結果、プロセッサ66(最も左側の2つ)への射影は、この処理では不要である。その結果、これらのインプリメンテーションは、当該行列のバンド幅に応じてスケーリングすることができる。
【0105】
図9c〜図9nには、バンド幅が3である5×5バンド行列に関する、1つおきの接続に遅延が生じる、各処理サイクルごとのタイミング図が示されている。各時間期間においては、各プロセッサに関連付けをした値が示されている。アクティブなプロセッサを実線で示す。図に示すように、ステージ1、タイム0を示す図9cの左上のプロセッサ(
【0106】
【数25】
【0107】
)から、ステージ5を示す図9nの右下のプロセッサ(δ55)へと、処理が伝播していく。図に示すように、バンド行列という行列の性質のため、非バンド行列を処理する左下のプロセッサは不要であり、図示していない。
【0108】
図9o〜図9zには、図9bなどによる、5×5バンド行列を処理する線形アレイの各処理サイクルごとのタイミング図とメモリアクセスが示されている。図示するように、5×5行列のバンド幅は3であるので、必要なプロセッサは3個のみである。バンド行列を処理するため、3個のプロセッサを必要とすることが、図示されている。さらに図示するように、各ステージは比較的高いプロセッサの利用効率を有しており、この利用効率はN/pが増加するにつれて増加する。
【0109】
PEの複雑さを減らすために、除算および平方根を求める機能は、これらPEで実行しない(除かれる)。除算および開平は、より複雑であるから、加算器、減算器、乗算器でインプリメントするよりは、ASICにインプリメントされる。
【0110】
除算または開平をパフォームする機能は、五角形および八角形で表される機能56、58の2つだけである。図6a〜図6dに示すように、あるステージについて、五角形および八角形で表される機能56、58は、全て、1ステージの間に単一の列で実行される。特に、これらの列の各々は、最上部に五角形58をもち、その下に八角形58をもつ。各八角形58は同時にそのw入力をそのy出力に代入するので、五角形56の出力は、wの値をいずれかのaij用に直ちに保存しなくても、列全体に行き渡る。八角形58は、w入力を使用してx出力も生成し、x出力もaijにフィードバックされる。x出力は、四角形および円で表される機能60、62によって、aijの計算において使用される。その結果、各八角形のx出力の値だけが判定されればよい。八角形のx出力は、その八角形58のaijを、五角形56のy出力であって、各八角形58で同じ値となるw入力の値で除算したものである。したがって、除算/開平機能は、八角形58でxを計算する際に、実行する必要があるだけである。
【0111】
各八角形の出力xは、式34および式30を用いて、その八角形のaijを五角形のaijの平方根で割ったものである。あるステージについて、各八角形プロセッサにおいて、除算器に代えて乗算器を使用した場合には、五角形のaijの平方根の代りに、その平方根の逆数を判定しさえすればよく、除算機能を五角形プロセッサにおいてだけでパフォームされるように分離して、アレイ全体の複雑さを緩和することができる。平方根の逆数は、五角形に関連付けをした行列要素のaijとして、その逆数の代りに、保存される。このようにすると、後で前進代入および後退代入を行う際にも都合がよい。それらのアルゴリズム中の除算機能がこの逆数を掛ける乗算に変り、他のPE、すなわち図12dおよび図15dのx出力でも除算器の必要がなくなるからである。図9aおよび図9bに示す五角形の機能56は、同じプロセッサ64によってパフォームされるので、図10aおよび図10bに示すように、五角形/四角形プロセッサ64からの入力と、そのプロセッサ64への出力とを有する単一の逆数/開平回路70を用いて、プロセッサ66、64をインプリメントすることができる。平方根の逆数を求めた結果は、プロセッサ66に渡されていく。図11aおよび図11bは、図10aおよび図10bに対応する。逆数/開平回路70を分離したことによって、他のプロセッサ66、64の複雑さが緩和される。逆数/開平回路70は、逆数回路および開平回路を用いてインプリメントすることができるが、LUT、特にFPGA(field programmable gate array)用のLUTを用いてインプリメントするのが好ましい。ただし、メモリはコストエフィシエント(cost efficient)である。
【0112】
コレスキーファクタGが判定された後、図12aおよび図12bに示すような前進代入を用いて、yが決定される。前進代入のアルゴリズムは次のようになる。
【0113】
【数26】
【0114】
バンド行列の場合、アルゴリズムは次のようになる。
【0115】
【数27】
【0116】
gLKはコレスキー行列GのL行K列に相当する要素である。
【0117】
図12aおよび図12bは、スカラープロセッサを用いた、4×4 G行列に関する前進代入の2つの実施形態である。図12cの星形で表される機能72と、図12dのひし形で表される機能74の2つの機能が、プロセッサ72、74によって実行される。星形の機能72は、式42および式43を実行する。
【0118】
y←w 式42
x←z−w×gij 式43
【0119】
ひし形の機能74は、式44および式45を実行する。
【0120】
x←z/gij 式44
y←x 式45
【0121】
図12aに示すようにPEの同時接続の間に遅延素子を挿入し、実行プレーン(t1からt7)に垂直なアレイを射影することにより、そのアレイを線形アレイ上に射影することができる。
【0122】
【数28】
【0123】
から得た受信ベクトルの値r1〜r4をアレイにロードし、アレイからy1〜y4出力を得る。ひし形の機能74は主対角に沿ってのみ存在するので、4つのPEからなるアレイを、図13aに示すようにN個のPEを用いてN×N行列を処理するように拡張することができる。このアレイの処理時間は2Nサイクルとなる。
【0124】
各PEは1つおきの処理サイクルでのみ使用されるので、遅延素子の半数は、図12bに示すように削除することができる。この射影される線形アレイは、図13bに示すように任意のN×N行列を処理するように拡張することができる。このアレイの処理時間はNサイクルとなる。
【0125】
図13bに示す射影先アレイのPEのサイクルごとのオペレーションが、図14a〜図14dに示されている。図13aに示す第1サイクルt1では、r1が左側のプロセッサ1(74)にロードされ、y1がr1とg11を用いて決定される。図14bに示す第2サイクルt2では、r2、r3がロードされ、g31、g21、g22が処理され、y2が決定される。図14cに示す第3サイクルt3では、r4がロードされ、g41、g42、g32、g33がロードされ、y3が決定される。図14dに示す第4サイクルt4では、g43、g44が処理され、y4が決定される。
【0126】
図12e〜図12jには、5×5バンド行列の各処理サイクルに関するタイミング図が示されている。図12eは、左下隅の3つのエントリが0というバンド行列の性質(バンド幅が3の場合)を示している。
【0127】
コレスキー分解のときと同様に、前進代入でも、同じPEが利用できることを示すために、図12fはステージ6から開始する。ステージ6は、図9c〜図9nの最終ステージの後のステージである。
【0128】
同様に、図12k〜図12pは、図9o〜図9zのプロセッサが前進代入もパフォームできるように拡張した例を示す。これらの図においては、ステージは、コレスキー分解を行う5つのステージの後のステージ6から開始される。この処理は、各処理サイクルに対して、ステージ6のタイム0(図12k)から、ステージ6のタイム4(図12o)の後の最終結果(図12p)まで、パフォームされる。
【0129】
前進代入によってy変数が判定された後、後退代入によってデータベクトルを判定することができる。後退代入は次のサブルーチンによって実行される。
【0130】
【数29】
【0131】
バンド行列の場合、次のサブルーチンが用いられる。
【0132】
【数30】
【0133】
(・)*は複素共役関数を示す。
【0134】
【数31】
【0135】
は、コレスキーファクタGについて判定された対応する要素の複素共役である。YLはyの対応する要素である。
【0136】
後退代入は、4×4処理アレイに関する図15aおよび図15bに示すように、星形およびひし形の機能76、78を用いるスカラープロセッサによってもインプリメントされる。しかし、これらの機能は、図15cおよび図15dに示すように、G行列の値の複素共役を用いてパフォームされる。したがって、式42〜式45は、それぞれ、式46〜式49となる。
【0137】
y←w 式46
【0138】
【数32】
【0139】
y←x 式49
【0140】
プロセッサ76、78の間の同時代入で、遅延素子68を挿入することにより、図15aのアレイは、実行プレーンを横断して線形アレイに射影される。このアレイは、N×N行列を処理するため、図16aに示すように拡張することができる。yベクトルの値が図16aのアレイにロードされ、データベクトルdが出力される。このアレイは、dを判定するのに2Nクロックサイクルを要する。1つおきのプロセッサが1つおきのクロックサイクルでオペレートするので、2つのdを同時に判定することができる。
【0141】
図16aの各プロセッサ76、78は1つおきのクロックサイクルでオペレートするので、図15bに示すように1つおきの遅延素子を削除することができる。図15bの射影先アレイは、N×N行列を処理するため、図16bに示すように拡張することができる。このアレイは、dを判定するのにNクロックサイクルを要する。
【0142】
図16bの射影先アレイのPE76、78のサイクルごとの動作が、図17a〜図17dに示されている。図17aに示す第1サイクルt1では、y4がロードされ、
【0143】
【数33】
【0144】
が処理され、d4が決定される。図17bに示す第2サイクルt2では、y2、y3がロードされ、
【0145】
【数34】
【0146】
、
【0147】
【数35】
【0148】
が処理され、d3が決定される。図17cに示す第3サイクルt3では、y1がロードされ、
【0149】
【数36】
【0150】
および
【0151】
【数37】
【0152】
が処理され、d2が決定される。図17dに示す第4サイクルt4では、
【0153】
【数38】
【0154】
、
【0155】
【数39】
【0156】
が処理され、d4が決定される。
【0157】
図15e〜図15jには、後退代入を実行できるようにするための、図12e〜図12jのプロセッサの拡張が示されている。図15eは、左下隅の3つのエントリが0というバンド行列の性質を示している。
【0158】
タイミング図は、前進代入のステージ6の後に置かれたステージ7から開始する。処理は、ステージ7のタイム0(図15f)から開始し、ステージ7のタイム4(図15j)で完了する。ステージ7のタイム4(図15j)の後、全てのデータd1からd5が決定される。
【0159】
同様に、図15k〜図15pには、後退代入も実行できるようにするための、図12k〜図12pのプロセッサの拡張が示されている。これらの図は、前進代入のステージ6の後、ステージ7から開始する。処理は、ステージ7のタイム0(図15k)から最終結果(図15p)の各処理サイクルで実行される。図9c〜図9nと、図12e〜図12jと、図15e〜図15jとに示すように、バンド行列の場合は、コレスキー分解と、前進代入と、後退代入とを実行するための2次元アレイのプロセッサ数を減らすことができる。図9o〜図9z、図12k〜図12pに示すように、線形アレイのプロセッサ数は、行列の次元数からバンド行列のバンド幅に減らされる。
【0160】
前進代入および後退代入に関する個々のPE72、74、76、78の複雑さを軽減するため、図18aおよび図18bに示すように、PE72、74、76、78から除算機能80を分離することができる。図18aおよび図18bは、それぞれ、図16aおよび図16bに対応する。PE72、74、76、78に関連する前進代入および後退代入のためのデータは異なるが、PE72、74、76、78によってパフォームされる機能は同じである。除算器80は、除算機能をパフォームするために、最も右側のPE74、78によって使用される。除算器80は、逆数値を判定するためのLUTとしてインプリメントされ、LUTは、最も右側のプロセッサ74、78によって乗算において使用される。前進代入および後退代入を行う際には、コレスキー分解の実行によって得た逆数がすでにメモリに存在しているので、前進代入および後退代入のための逆数の乗算には、すでにメモリに格納されている逆数を利用することができる。
【0161】
3つの全ての処理(Gの判定、前進代入および後退代入)で、計算データフローはNまたはバンド幅Pが同じフローとなるので、3つの機能を全て、同じ再構成可能アレイで実行することができる。再構成可能アレイの各PE84、82は、図19aおよび図19bに示すように、Gを判定する機能と前進代入および後退代入をパフォームする機能をパフォームさせることができる。最も右側のプロセッサ82は、五角形/四角形とひし形の機能64、74、78を実行することができる。他のプロセッサ84は、円/八角形と星形の機能66、72、76をパフォームすることができる。コレスキー分解を実行する場合、最も右側のPE82は、五角形/四角形の機能64を用いてオペレートし、他のPE84は、円/八角形の機能66を用いてオペレートする。前進代入および後退代入を実行する場合、最も右側のプロセッサ82は、ひし形の機能74、78を用いてオペレートし、他のPE84は、星形の機能72、76を用いてオペレートする。PE82、84は好ましくは、必要な機能をパフォームするように構成される。再構成可能アレイを用いることにより、各PE82、84は、前進代入および後退代入の2つの算術機能と、コレスキー分解に関する4つの機能を実行し、PE82、84ごとに実行される算術機能は全部で6つとなる。これらの機能は、演算論理ユニット(ALU)と適切な制御ロジック、またはその他の手段で実行することができる。
【0162】
再構成可能アレイ内の個々のPE82、84の複雑さを軽減するため、除算および開平機能86は、好ましくは、逆数および開平装置86としてアレイから切り離される。逆数および開平装置86は、好ましくは、図20aおよび図20bに示すように、前進代入および後退代入において最も右側のPE82によって、乗算において使用される逆数を判定し、最も右側のプロセッサのデータを用いた乗算において使用され、PE84に渡される平方根の逆数を判定する。逆数と平方根の逆数の判定は、好ましくは、LUTを用いて実行される。あるいは、除算および開平機能ブロック86は、除算回路と開平回路とすることもできる。
【0163】
PE82、84の数をさらに減らすために、フォールディング(folding)が用いられる。図21aおよび図21bにフォールディングが示されている。フォールディングでは、線形システム解法のためにP個のPE82、84を使用する代りに、より少ない数FのPEがQ段のフォールドで使用される。例えば、Pを9個のPE82、84とした場合、3段のフォールドでは、3個のPE82、84が9個のPEの機能をパフォームする。フォールディングの1つの難点は、縮小されたアレイの処理時間がQ倍に増加することである。1つの利点は、プロセッサ利用度の効率が一般に増大することである。3段のフォールドの場合、処理時間は3倍になる。したがって、プロセッサ数の最小化とデータを処理するのに許容できる最大処理時間とのトレードオフに基づいて、フォールドのステージ数が選択される。
【0164】
図21aには、図11bのアレイを3段にフォールドすることによって、12個のPEの機能を4個のPE761、762、763、764/78でパフォームする双方向フォールドが示されている。PE761、762、763、764/78の間に遅延素子を挿入する代りに、デュアルポートメモリ861、862、863、864(86)を使用して、各フォールドのデータを保存する。遅延素子(デュアルポートメモリ86)は、図12aの実施形態でのように各PE接続ごとに存在できるが、図12bのインプリメンテーションでのように1つおきの接続ごとに存在するものとして示されている。デュアルポートメモリの代りに、2組のシングルポートメモリを使用することもできる。
【0165】
第1のフォールドにおいては、各PEのデータは、それに関連づけられたデュアルポートメモリ86のフォールド1用のアドレスに保存される。行列のデータもメモリセル881〜884(88)からプロセッサ761〜763、764/78に入力される。フォールド1のPE764/78とフォールド3のプロセッサ761の間にデータのラップアラウンドは起らないので、これらのプロセッサの間でデュアルポートメモリ86は使用されない。しかし、フォールド1とフォールド2のプロセッサ761の間およびフォールド2とフォールド3のプロセッサ764/78の間に単一のアドレスが必要とされるので、デュアルポートメモリ86が破線で示されている。第2のフォールドの間、各プロセッサのデータはフォールド2用のメモリアドレスに保存される。行列のデータもフォールド2用にPE761〜763、764/78に入力される。フォールド2のPE761用のデータはフォールド1のPE761から来るが、これらは物理的には同じPE761であるので、この接続は(示されてはいるが)必要がない。第3のフォールドにおいて、各PEのデータはフォールド3用のメモリアドレスに保存される。行列のデータもフォールド3用にPE761〜763、764/78に入力される。フォールド3のPE764/78用のデータはフォールド2のPE764/78から来るので、この接続は必要がない。次の処理ステージでは、フォールド1から手順が繰り返される。
【0166】
図22aは、図21aの双方向フォールドの実施形態をN個のPE761〜76N-1、76N/78に拡張したものである。PE761〜76N-1、76N/78は機能的に線形アレイとして構成され、デュアルポートメモリ86または2組のシングルポートメモリをアクセスする。
【0167】
図21bには、図11bのアレイの単方向フォールドバージョンが示されている。第1のフォールドにおいて、各PEのデータは、それに関連づけられたデュアルポートメモリのフォールド1用のアドレスに保存される。フォールド1のPE764/78とフォールド3のPE761は物理的に接続されているが、動作上、これらのPE間で直接データを伝送することはない。したがって、これらの間のメモリポート864はアドレスが1つ少ない記憶域をもつ。フォールド2のPE764/78は、PE間のリンク状の接続によって効率的にフォールド1のPE761に結合される。同様に、フォールド3のPE764/78は、フォールド2のPE761に結合される。
【0168】
図22bは、図20bの単方向フォールディングのインプリメンテーションをN個のPEに拡張したものである。PE761〜76N-1、76N/78は、デュアルメモリの周りにリング状に機能的に配置される。
【0169】
フォールディングされたPEで、コレスキー分解、前進代入および後退代入をインプリメントするには、アレイ内のPE764/78などのPEは、コレスキー分解、前進代入および後退代入のためのプロセッサ機能とともに、各フォールドのためのプロセッサ機能もパフォームできなければならない。PE764/78について図20aおよび図20bに示すように。インプリメントによっては、追加されるPEに必要な機能が、そのインプリメンテーションの複雑さを増大させる。ALUを用いてフォールディングをインプリメントするには、1個のPE(PE 764/78など)は、12種の演算機能(前進代入および後退代入のための4種とコレスキー分解のための8種)をパフォームするが、他のPEは6種の演算機能をパフォームするだけである。
【0170】
図23には、コレスキー分解、前進代入および後退代入で定義される6種の機能全てをパフォームするのに使用できる、好ましい簡単な再構成可能PEの1スライスが示されている。除算を1個のPE(以下PE1という)に分離した後、このPEは使用される。好ましくは2つのスライスが使用され、一方はxおよびyの実数成分を生成するため、他方はそれらの虚数成分を生成するためのものである。添え字iおよびrは、それぞれ、実数成分および虚数成分を示すのに使用される。
【0171】
信号w、x、y、zは、先にPE機能を定義する際に定義したものと同じである。信号aqおよびadはそれぞれ、処理のあるサイクルでリード(read)され、かつ/またはライト(write)されるPEのメモリロケーションの現在の状態と、次の状態とを表す。括弧内の名前は、第2のスライスで使用される信号を示す。
【0172】
この好ましいPEは、どのPEとしても使用できるが、他のPEから独立して除算機能をパフォームするPE1の最適化に使用するのが望ましい。マルチプレクサ941から948への各入力にはラベル付けされており、「0」はその入力がPE1だけに使用されることを、「−」はPE1以外の全てのPEに使用されることを、「+」は全てのPEに使用されることを示す。PE1の実数スライスの場合を除いて、isqr入力は0に接続され、PE1の実数スライスの場合は、isqr入力はaqr入力の平方根の逆数を生成する機能の出力に接続される。このような機能は、適当な固定小数点ワードサイズのROMを用いてLUTとしてインプリメントすることができる。
【0173】
図23に示すように、マルチプレクサ941と942の出力は、乗算器961によって掛け合される。マルチプレクサ943と944の出力は、乗算器962によって掛け合される。乗算器961と乗算器962の出力は、加算/減算回路98によってコンバインされる。加算/減算回路98の出力は、減算器99によってマルチプレクサ945の出力とコンバインされる。減算器99の出力は、マルチプレクサ948への入力となる。
【特許請求の範囲】
【請求項1】
データ信号の既知の拡散符号を用いて畳み込まれた前記データ信号の、推定された、または、既知の、チャネルレスポンスの畳み込みである行列Aに関連付けされた受信ベクトルとして受信された複数の前記データ信号からデータを復元するための方法であって、
バンド幅Pを有するN×N行列AHAのコレスキーファクタを決定し(ここでAHはAの共役転置(エルミート)であり、PはNより小さい)、かつ、前記決定されたコレスキーファクタを前進代入および後退代入において使用してP個のスカラー・プロセシング・エレメントのアレイを使用することで線形方程式を解く、ことによって、受信ベクトルのデータを決定するステップと、
前記アレイの各スカラー・プロセシング・エレメントが、前記行列AHAの対角要素を受信し、前記コレスキーファクタの対応する対角要素を決定し、かつ前進代入および後退代入を実行するステップと
を具えたことを特徴とする方法。
【請求項2】
データ信号の既知の拡散符号を用いて畳み込まれた前記データ信号の、推定された、または、既知の、チャネルレスポンスの畳み込みである行列A及びノイズ分散σ2に関連付けされた受信ベクトルとして受信された複数の前記データ信号からデータを復元するための方法であって、
バンド幅Pを有するN×N行列AHA+σ2Iのコレスキーファクタを決定し(ここで、Iは、単位行列であり、AHは、Aの共役転置(エルミート)であり、PはNより小さい)、かつ、前記決定されたコレスキーファクタを前進代入および後退代入において使用してP個のスカラー・プロセシング・エレメントのアレイを使用することで線形方程式を解く、ことによって、受信ベクトルのデータを決定するステップと、
前記アレイの各スカラー・プロセシング・エレメントが、前記行列AHA+σ2Iの対角要素を受信し、前記コレスキーファクタの対応する対角要素を決定し、かつ前進代入および後退代入を実行するステップと
を具えたことを特徴とする方法。
【請求項3】
請求項1又は2に記載の方法であって、スカラー・プロセシング・エレメントの前記アレイから、前記受信ベクトルのデータを出力するステップをさらに備えたことを特徴とする方法。
【請求項1】
データ信号の既知の拡散符号を用いて畳み込まれた前記データ信号の、推定された、または、既知の、チャネルレスポンスの畳み込みである行列Aに関連付けされた受信ベクトルとして受信された複数の前記データ信号からデータを復元するための方法であって、
バンド幅Pを有するN×N行列AHAのコレスキーファクタを決定し(ここでAHはAの共役転置(エルミート)であり、PはNより小さい)、かつ、前記決定されたコレスキーファクタを前進代入および後退代入において使用してP個のスカラー・プロセシング・エレメントのアレイを使用することで線形方程式を解く、ことによって、受信ベクトルのデータを決定するステップと、
前記アレイの各スカラー・プロセシング・エレメントが、前記行列AHAの対角要素を受信し、前記コレスキーファクタの対応する対角要素を決定し、かつ前進代入および後退代入を実行するステップと
を具えたことを特徴とする方法。
【請求項2】
データ信号の既知の拡散符号を用いて畳み込まれた前記データ信号の、推定された、または、既知の、チャネルレスポンスの畳み込みである行列A及びノイズ分散σ2に関連付けされた受信ベクトルとして受信された複数の前記データ信号からデータを復元するための方法であって、
バンド幅Pを有するN×N行列AHA+σ2Iのコレスキーファクタを決定し(ここで、Iは、単位行列であり、AHは、Aの共役転置(エルミート)であり、PはNより小さい)、かつ、前記決定されたコレスキーファクタを前進代入および後退代入において使用してP個のスカラー・プロセシング・エレメントのアレイを使用することで線形方程式を解く、ことによって、受信ベクトルのデータを決定するステップと、
前記アレイの各スカラー・プロセシング・エレメントが、前記行列AHA+σ2Iの対角要素を受信し、前記コレスキーファクタの対応する対角要素を決定し、かつ前進代入および後退代入を実行するステップと
を具えたことを特徴とする方法。
【請求項3】
請求項1又は2に記載の方法であって、スカラー・プロセシング・エレメントの前記アレイから、前記受信ベクトルのデータを出力するステップをさらに備えたことを特徴とする方法。
【図1】
【図2a】
【図2b】
【図2c】
【図2d】
【図2e】
【図2f】
【図2g】
【図2h】
【図3a】
【図3b】
【図4a】
【図4b】
【図4c】
【図4d】
【図4e】
【図5a】
【図5b】
【図5c】
【図5d】
【図5e】
【図6a】
【図6b】
【図6c】
【図6d】
【図6e】
【図6f】
【図6g】
【図6h】
【図6i】
【図6j】
【図7】
【図8a】
【図8b】
【図8c】
【図8d】
【図8e】
【図9a】
【図9b】
【図9c】
【図9d】
【図9e】
【図9f】
【図9g】
【図9h】
【図9i】
【図9j】
【図9k】
【図9l】
【図9m】
【図9n】
【図9o】
【図9p】
【図9q】
【図9r】
【図9s】
【図9t】
【図9u】
【図9v】
【図9w】
【図9x】
【図9y】
【図9z】
【図10a】
【図10b】
【図11a】
【図11b】
【図12a】
【図12b】
【図12c】
【図12d】
【図12e】
【図12f】
【図12g】
【図12h】
【図12i】
【図12j】
【図12k】
【図12l】
【図12m】
【図12n】
【図12o】
【図12p】
【図13a】
【図13b】
【図14a】
【図14b】
【図14c】
【図14d】
【図15a】
【図15b】
【図15c】
【図15d】
【図15e】
【図15f】
【図15g】
【図15h】
【図15i】
【図15j】
【図15k】
【図15l】
【図15m】
【図15n】
【図15o】
【図15p】
【図16a】
【図16b】
【図17a】
【図17b】
【図17c】
【図17d】
【図18a】
【図18b】
【図19a】
【図19b】
【図20a】
【図20b】
【図21a】
【図21b】
【図22a】
【図22b】
【図23】
【図2a】
【図2b】
【図2c】
【図2d】
【図2e】
【図2f】
【図2g】
【図2h】
【図3a】
【図3b】
【図4a】
【図4b】
【図4c】
【図4d】
【図4e】
【図5a】
【図5b】
【図5c】
【図5d】
【図5e】
【図6a】
【図6b】
【図6c】
【図6d】
【図6e】
【図6f】
【図6g】
【図6h】
【図6i】
【図6j】
【図7】
【図8a】
【図8b】
【図8c】
【図8d】
【図8e】
【図9a】
【図9b】
【図9c】
【図9d】
【図9e】
【図9f】
【図9g】
【図9h】
【図9i】
【図9j】
【図9k】
【図9l】
【図9m】
【図9n】
【図9o】
【図9p】
【図9q】
【図9r】
【図9s】
【図9t】
【図9u】
【図9v】
【図9w】
【図9x】
【図9y】
【図9z】
【図10a】
【図10b】
【図11a】
【図11b】
【図12a】
【図12b】
【図12c】
【図12d】
【図12e】
【図12f】
【図12g】
【図12h】
【図12i】
【図12j】
【図12k】
【図12l】
【図12m】
【図12n】
【図12o】
【図12p】
【図13a】
【図13b】
【図14a】
【図14b】
【図14c】
【図14d】
【図15a】
【図15b】
【図15c】
【図15d】
【図15e】
【図15f】
【図15g】
【図15h】
【図15i】
【図15j】
【図15k】
【図15l】
【図15m】
【図15n】
【図15o】
【図15p】
【図16a】
【図16b】
【図17a】
【図17b】
【図17c】
【図17d】
【図18a】
【図18b】
【図19a】
【図19b】
【図20a】
【図20b】
【図21a】
【図21b】
【図22a】
【図22b】
【図23】
【公開番号】特開2012−150827(P2012−150827A)
【公開日】平成24年8月9日(2012.8.9)
【国際特許分類】
【出願番号】特願2012−60958(P2012−60958)
【出願日】平成24年3月16日(2012.3.16)
【分割の表示】特願2007−304951(P2007−304951)の分割
【原出願日】平成14年11月13日(2002.11.13)
【出願人】(596008622)インターデイジタル テクノロジー コーポレーション (871)
【Fターム(参考)】
【公開日】平成24年8月9日(2012.8.9)
【国際特許分類】
【出願日】平成24年3月16日(2012.3.16)
【分割の表示】特願2007−304951(P2007−304951)の分割
【原出願日】平成14年11月13日(2002.11.13)
【出願人】(596008622)インターデイジタル テクノロジー コーポレーション (871)
【Fターム(参考)】
[ Back to top ]