(57)【要約】処理方法および装置を含む汎用アレイ処理技術。プロセッサは、乗算器、マルチプレクサおよびＡＬＵなどの再使用可能な計算コンポーネントによって設計されている並列処理経路を含むことがある。該経路を介するデータの流れおよび実行される演算はオペコードに基づいてコントロール可能である。プロセッサは共有され、スケーラブルであり、かつ行列演算を実行するように構成されてもよい。とりわけ、このような演算は、ＭＩＭＯ−ＯＦＤＭ通信システムの物理セクションに有用である。
2009535721.tif 000002
【特許請求の範囲】
【請求項１】
複数のマルチプレクサと、
複数の乗算器と、
複数の算術論理演算ユニット（ＡＬＵ）と、
少なくとも１つのオペコードコントロール要素と、
を備えており、
前記複数のマルチプレクサ、前記複数の乗算器および前記複数のＡＬＵは２つの並列処理経路を形成するように構築および配列されており、各並列処理経路は、前記オペコードコントロール要素によって受信されたオペコードに従って、１セットの行列演算をそれぞれ実行するように構成されている、アレイプロセッサ装置。
【請求項２】
前記オペコードは、アイドルオペコードと乗算オペコードのうちの少なくとも１つを含む、請求項１に記載の装置。
【請求項３】
前記乗算オペコードは、乗算、外部加算による乗算、外部減算による乗算、累算による乗算、加算結果による乗算、減算結果による乗算、加算結果および外部加算による乗算、加算結果および外部減算による乗算、減算結果および外部加算による乗算、減算結果および外部加算による乗算、加算結果および累算による乗算、および、減算結果および累算による乗算のうちの少なくとも１つの表示を含む、請求項２に記載の装置。
【請求項４】
前記２つの並列処理経路は、前記乗算、前記外部加算による乗算、前記外部減算による乗算、前記累算による乗算、前記加算結果による乗算、前記減算結果による乗算、前記加算結果および外部加算による乗算、前記加算結果および外部減算による乗算、前記減算結果および外部加算による乗算、前記減算結果および外部加算による乗算、前記加算結果および累算による乗算、および、前記減算結果および累算による乗算の各々を実行するように構成されている、請求項３に記載の装置。
【請求項５】
前記２つの並列処理経路の第１の並列処理経路が第１のパイプライン並列処理経路を含み、前記２つの並列処理経路の第２の並列処理経路が第２のパイプライン並列処理経路を含む、請求項１に記載の装置。
【請求項６】
前記第１の並列処理経路の第１のパイプラインステージへの入力が前記第２の並列処理経路の第２のパイプラインステージの出力を含む、請求項５に記載の装置。
【請求項７】
前記オペコードコントロール要素は、前記オペコードに基づいて前記第１のパイプラインステージへの前記入力および前記第２のパイプラインステージへの前記入力を選択するように構成されている、請求項６に記載の装置。
【請求項８】
前記第２の並列処理経路の第３のパイプラインステージへの入力が前記第１の並列処理経路の第４のパイプラインステージの出力を含む、請求項６に記載の装置。
【請求項９】
前記第１のパイプラインステージは乗算ステージを含み、前記第２のパイプラインステージは算術論理ステージを含む、請求項６に記載の装置。
【請求項１０】
前記第１のパイプラインステージは算術論理ステージを含み、前記第２のパイプラインステージは乗算ステージを含む、請求項６に記載の装置。
【請求項１１】
前記第１のパイプラインステージは第１の算術論理ステージを含み、前記第２のパイプラインステージは第２の算術論理ステージを含む、請求項６に記載の装置。
【請求項１２】
前記２つの並列処理経路の第１の並列処理経路が実数行列値を処理する処理経路を含み、前記２つの並列処理経路の第２の並列処理経路が虚数行列値を処理する処理経路を含む、請求項１に記載のアレイプロセッサ装置。
【請求項１３】
前記複数の乗算器は２つの乗算器を含む、請求項１に記載のアレイプロセッサ装置。
【請求項１４】
前記２つの並列処理経路の第１の並列処理経路が前記２つの乗算器の第１の乗算器を含み、前記２つの並列処理経路の第２の並列処理経路が前記２つの乗算器の第２の乗算器を含む、請求項１３に記載のアレイプロセッサ装置。
【請求項１５】
前記複数のＡＬＵは２つのＡＬＵを含む、請求項１に記載のアレイプロセッサ装置。
【請求項１６】
前記２つの並列処理経路の第１の並列処理経路が前記２つのＡＬＵの第１のＡＬＵを含み、前記２つ並列処理経路の第２の並列処理経路が前記２つのＡＬＵの第２のＡＬＵを含む、請求項１５に記載のアレイプロセッサ装置。
【請求項１７】
前記第１のＡＬＵの第１の入力が前記複数の乗算器の第１の乗算器の出力を含み、前記第１のＡＬＵの第２の入力が前記複数の乗算器の第２の乗算器の出力を含み、前記第２のＡＬＵの入力が前記第２の乗算器の出力を含む、請求項１６に記載のアレイプロセッサ装置。
【請求項１８】
前記オペコードコントローラーは、前記オペコードに基づいて前記複数のＡＬＵの少なくとも１つによって実行された算術演算を選択するように構成されている、請求項１に記載のアレイプロセッサ装置。
【請求項１９】
前記オペコードコントローラーは、前記オペコードに基づいて前記複数のマルチプレクサを介するデータの流れをコントロールするように構成されている、請求項１に記載のアレイプロセッサ装置。
【請求項２０】
前記データの流れをコントロールすることは、前記２つの並列処理経路間のデータ依存性および外部データの入力をコントロールすることを含む、請求項１９に記載のアレイプロセッサ装置。
【請求項２１】
請求項１に記載の前記アレイプロセッサ装置の少なくとも１つを備える、ＭＩＭＯ  ＯＦＤＭ受信装置。
【請求項２２】
請求項１に記載の複数のアレイプロセッサ装置を備える、請求項２１に記載のＭＩＭＯ  ＯＦＤＭ受信装置。
【請求項２３】
請求項１に記載の前記アレイプロセッサ装置の少なくとも１つを備える、ＭＩＭＯ  ＯＦＤＭ送信装置。
【請求項２４】
請求項１に記載の複数のアレイプロセッサ装置を備える、請求項２３に記載のＭＩＭＯ  ＯＦＤＭ送信装置。
【請求項２５】
オペコードに基づいて２つの並列処理経路を介するデータの経路をコントロールする手段と、
前記２つの並列処理経路の各々において２つの並列行列演算をデータに実行する手段と、
前記オペコードに基づいて前記２つの並列行列演算を選択する手段と、
を備える、アレイプロセッサ装置。
【請求項２６】
前記オペコードは、アイドルオペコードと乗算オペコードのうちの少なくとも１つを含む、請求項２５に記載の装置。
【請求項２７】
前記乗算オペコードは、乗算、外部加算による乗算、外部減算による乗算、累算による乗算、加算結果による乗算、減算結果による乗算、加算結果および外部加算による乗算、加算結果および外部減算による乗算、減算結果および外部加算による乗算、減算結果および外部加算による乗算、加算結果および累算による乗算、および、減算結果および累算による乗算のうちの少なくとも１つの表示を含む、請求項２６に記載の装置。
【請求項２８】
２つの並列行列演算を実行する前記手段は、前記乗算、前記外部加算による乗算、前記外部減算による乗算、前記累算による乗算、前記加算結果による乗算、前記減算結果による乗算、前記加算結果および外部加算による乗算、前記加算結果および外部減算による乗算、前記減算結果および外部加算による乗算、前記減算結果および外部加算による乗算、前記加算結果および累算による乗算、および、前記減算結果および累算による乗算の各々を実行する手段を含む、請求項２７に記載の装置。
【請求項２９】
前記データの経路をコントロールする前記手段は、
前記２つの並列処理経路間のデータの依存性をコントロールする手段と、
前記２つの並列処理経路への外部データの入力をコントロールする手段と、
を備える、請求項２５に記載の装置。
【請求項３０】
２つの並列行列演算を実行する前記手段は、
実数行列値を処理する手段と、
前記実数行列値と平行して虚数行列値を処理する手段と、
を備える、請求項２５に記載の装置。
【請求項３１】
前記オペコードに基づいて前記データの経路をコントロールする前記手段は、複数のマルチプレクサの出力を選択する手段を備える、請求項２５に記載の装置。
【請求項３２】
前記オペコードに基づいて前記２つの並列行列演算を選択する前記手段は、少なくとも１つのＡＬＵによって実行される算術演算を選択する手段を備える、請求項２５に記載の装置。
【請求項３３】
行列演算を実行する方法であって、
オペコードに基づいて２つの並列処理経路を介するデータの流れをコントロールすることと、
前記オペコードに基づいて前記２つの並列処理経路の第１の並列処理経路で第１の行列演算を実行することと、
前記オペコードに基づいて前記２つの並列処理経路の第２の並列処理経路で第２の行列演算を実行することと、
を備える方法。
【請求項３４】
前記オペコードは、アイドルオペコードと乗算オペコードのうちの少なくとも１つを含む、請求項３３に記載の方法。
【請求項３５】
前記乗算オペコードは、乗算、外部加算による乗算、外部減算による乗算、累算による乗算、加算結果による乗算、減算結果による乗算、加算結果および外部加算による乗算、加算結果および外部減算による乗算、減算結果および外部加算による乗算、減算結果および外部加算による乗算、加算結果および累算による乗算、および、減算結果および累算による乗算のうちの少なくとも１つの表示を含む、請求項３４に記載の方法。
【請求項３６】
前記２つの並列処理経路を介する前記データの流れをコントロールすることは、前記２つの並列処理経路の第１の並列処理経路の第１のパイプラインステージの出力を前記２つの並列処理経路の第２の並列処理経路の第２のパイプラインステージの入力に方向付けることを含む、請求項３３に記載の方法。
【請求項３７】
前記２つの並列処理経路を介する前記データの流れをコントロールすることは、前記オペコードに基づいて前記第１の並列処理経路の前記第１のパイプラインステージおよび前記第２の並列処理経路の前記第２のパイプラインステージへの入力を選択することを含む、請求項３６に記載の方法。
【請求項３８】
前記第１のパイプラインステージは乗算ステージを含み、前記第２のパイプラインステージは算術論理ステージを含む、請求項３６に記載の方法。
【請求項３９】
前記第１のパイプラインステージは算術論理ステージを含み、前記第２のパイプラインステージは乗算ステージを含む、請求項３６に記載の方法。
【請求項４０】
前記第１のパイプラインステージは第１の算術論理ステージを含み、前記第２のパイプラインステージは第２の算術論理ステージを含む、請求項３６に記載の方法。
【請求項４１】
前記２つの並列処理経路を介する前記データの流れをコントロールすることは、前記第２の並列処理経路の第３のパイプラインステージの出力を前記第１の並列処理経路の第４のパイプラインステージの入力に方向付けることを含む、請求項３６に記載の方法。
【請求項４２】
前記オペコードに基づいて前記２つの並列処理経路の前記第１の並列処理経路で前記第１の行列演算を実行することは、実数行列値を処理することを備えており、
前記オペコードに基づいて前記２つの並列処理経路の前記第２の並列処理経路で前記第２の行列演算を実行することは、虚数行列値を処理することを備える、請求項３３に記載の方法。
【請求項４３】
前記オペコードに基づいて２つの並列処理経路を介する前記データの流れをコントロールすることは、前記オペコードに基づいて複数のマルチプレクサをコントロールすることを含む、請求項３３に記載の方法。
【請求項４４】
前記２つの並列処理経路を介する前記データの流れをコントロールすることは、前記２つの並列処理経路間のデータ依存性をコントロールすることと、外部データの入力をコントロールすることとを含む、請求項４３に記載の方法。
【請求項４５】
前記２つの並列処理経路を介する前記データの流れをコントロールすることは、前記２つの並列処理経路の第１の並列処理経路の第１の乗算器の出力を方向付けることと、前記２つの並列処理経路の第２の並列処理経路の第２の乗算器の前記出力を方向付けることとを含む、請求項４３に記載の方法。
【請求項４６】
前記第１の乗算器の前記出力を方向付けることは、前記第１の乗算器の前記出力を前記第１の並列処理経路の第１のＡＬＵの第１の入力に方向付けることを備え、前記第２の乗算器の前記出力を方向付けることは、前記第２の乗算器の前記出力を前記第１のＡＬＵの第２の入力および前記第２の並列処理経路の第２のＡＬＵの入力に方向付けることを備える、請求項４５に記載の方法。
【請求項４７】
前記オペコードに基づいて前記２つの並列処理経路の前記第１の並列処理経路で前記第１の行列演算を実行することは、前記オペコードに基づいて第１のＡＬＵに対する第１の演算を選択することを含み、
前記オペコードに基づいて前記２つの並列処理経路の前記第２の並列処理経路で前記第２の行列演算を実行することは、前記オペコードに基づいて第２のＡＬＵに対する第２の演算を選択することを含む、請求項３３に記載の方法。
【請求項４８】
命令を記憶している機械読み取り可能な媒体であって、前記命令は、
オペコードに基づいて並列行列演算を実行する２つの並列処理経路のそれぞれの乗算ステージでデータ依存性を選択する第１の命令セットと、
前記オペコードに基づいて前記２つの並列処理経路のそれぞれの算術論理ステージでそれぞれの算術論理演算およびデータ依存性を選択する第２の命令セットと、
を備える、機械読み取り可能な媒体。
【請求項４９】
前記オペコードは、アイドルオペコードと乗算オペコードのうちの少なくとも１つを含む、請求項４８に記載の機械読み取り可能な媒体。 
【発明の詳細な説明】
【技術分野】
【０００１】
（Ｕ．Ｓ．Ｃ３５条１１９項に基づく優先権請求）
本特許出願は、この譲受人に譲渡され、かつ参照して本明細書に明示的に組み込まれている、２００６年４月２８日に出願された「汎用アレイプロセッサ（General Purpose Array Processor）」と題された仮特許出願第６０／７９５，９８１号の優先権を請求するものである。
【０００２】
本開示は概してアレイ処理に、より具体的には汎用アレイ処理技術に関する。
【背景技術】
【０００３】
通信システムならびに他の多様なシステムにおいて、データを処理するために多数の行列演算が実行されることがある。例えば、多様な完全行列関連アルゴリズムは、送信信号をコード化／復号化するために、および／または複数の通信チャネル（つまりマルチプレクサ／デマルチプレクサ）にデータを分割またはこれからデータを構築するために通信システムで使用されることがある。このようなアルゴリズムは、特定のシーケンスで多数の行列演算によって実現可能なフーリエ変換などの多様な行列関連アルゴリズムを実行することができる。
【０００４】
とりわけ通信システムは、演算の物理層において多数の行列演算を実行することがある。通信システムのこの物理層は、データのチャネル化およびコード化、ならびにデータリンク層などの高レベルデータ層とのインタフェース化に関する機能性を提供可能である。直交周波数分割多重化（ＯＦＤＭ）などの一部の通信技術における直交性の現代的使用ゆえに、データの送受信時に実行される行列関連演算数が多いこともある。さらに、多入力多出力（ＭＩＭＯ）技術の使用は、通信システムにおける行列演算への依存性を大きくする。
【０００５】
従来の通信システムは、特殊回路を介して種々のアルゴリズムを実行するようにコンポーネントレベルから設計されていることもある。例えば、通信システムの物理層は、各々が物理層のデータ経路に沿って具体的なアルゴリズムを実行する１セットの特殊コンポーネントによって設計可能である。各アルゴリズムは、フーリエ変換回路や他の算術および／または論理回路などの特殊回路にハードウェア化されることもある。
【０００６】
旧来の電気電子技術者協会（ＩＥＥＥ）基準のレガシーサポートおよび通信システムの複雑さの増大は、通信システムによる実行が予想されている潜在的な行列関連アルゴリズムの全てを実行するように、特殊回路の開発に関連するリソースを多く使用してきた。具体的には、従来の設計技術を使用して設計された用途において、予算、空間および電力使用リソースが大量消費されてきた。
【発明の開示】
【発明の概要】
【０００７】
汎用アレイ処理用技術がここに開示されている。本開示の一態様では、汎用アレイプロセッサはシステム設計リソースのひずみを緩和することができる点が認識される。このような汎用アレイプロセッサは、複数の行列関連アルゴリズムにおいて、および／または複数の高レベル処理要素によって使用可能な複数の行列関連演算を実行するように構成可能である。一部の実施形態では、該複数の行列関連演算は行列の成分に実行される算術演算を含むことがある。
【０００８】
汎用アレイプロセッサの一部の実施形態は通信システムの物理層で使用される。一部の実施形態では、該汎用アレイプロセッサは、乗算器、ＡＬＵ、マルチプレクサおよびレジスタなどの基本ハードウェアコンポーネントを使用するオーナーリソース(owner resources)によって使用される複数の汎用演算を満たす機能性を提供可能である。一部の実施形態では、該オーナーリソースは、例えば、高速フーリエ変換、空間処理、最小平均二乗誤差判断、チャネル判断、重み算出および／または位相補正を実行可能である。一部の実施形態では、該汎用アレイプロセッサは、実数および／または複素数の行列乗算を伴う任意のアルゴリズムの一部を実行するように構成される。
【０００９】
本開示の一態様はアレイプロセッサ装置を含んでいる。一部の実施形態では、該アレイプロセッサ装置は、複数のマルチプレクサと、複数の乗算器と、複数の算術論理演算ユニット（ＡＬＵ）と、少なくとも１つのオペコードコントロール要素とを備える。一部の実施形態では、該複数のマルチプレクサ、該複数の乗算器および該複数のＡＬＵは２つの並列処理経路を形成するように構築および配列されており、各並列処理経路は、該オペコードコントロール要素によって受信されたオペコードに従ってそれぞれ１セットの行列演算を実行するように構成されている。
【００１０】
一部の実施形態では、該オペコードは、アイドルオペコードと乗算オペコードのうちの少なくとも１つを含んでいる。一部の実施形態では、該乗算オペコードは、乗算、外部加算による乗算、外部減算による乗算、累算による乗算、加算結果による乗算、減算結果による乗算、加算結果および外部加算による乗算、加算結果および外部減算による乗算、減算結果および外部加算による乗算、減算結果および外部加算による乗算、加算結果および累算による乗算、および、減算結果および累算による乗算のうちの少なくとも１つの表示を含んでいる。
【００１１】
一部の実施形態では、該２つの並列処理経路は、該乗算、該外部加算による乗算、該外部減算による乗算、該累算による乗算、該加算結果による乗算、該減算結果による乗算、該加算結果および外部加算による乗算、該加算結果および外部減算による乗算、該減算結果および外部加算による乗算、該減算結果および外部加算による乗算、該加算結果および累算による乗算、および、該減算結果および累算による乗算の各々を実行するように構成されている。
【００１２】
一部の実施形態では、該２つの並列処理経路の第１の並列処理経路は第１のパイプライン並列処理経路を含んでおり、該２つの並列処理経路の第２の並列処理経路は第２のパイプライン並列処理経路を含んでいる。一部の実施形態では、該第１の並列処理経路の第１のパイプラインステージへの入力は、該第２の並列処理経路の第２のパイプラインステージの出力を含むことがある。一部の実施形態では、該オペコードコントロール要素は、該オペコードに基づいて、該第１のパイプラインステージへの該入力および該第２のパイプラインステージへの該入力を選択するように構成されている。一部の実施形態では、該第２の並列処理経路の第３のパイプラインステージへの入力が、該第１の並列処理経路の第４のパイプラインステージの出力を含むことがある。
【００１３】
一部の実施形態では、該第１のパイプラインステージは乗算ステージを含んでおり、該第２のパイプラインステージは算術論理ステージを含んでいる。一部の実施形態では、該第１のパイプラインステージは算術論理ステージを含んでおり、該第２のパイプラインステージは乗算ステージを含んでいる。一部の実施形態では、該第１のパイプラインステージは第１の算術論理ステージを含んでおり、該第２のパイプラインステージは第２の算術論理ステージを含んでいる。一部の実施形態では、該２つの並列処理経路の第１の並列処理経路は実数行列値を処理するための処理経路を含んでおり、該２つの並列処理経路の第２の並列処理経路は、虚数行列値を処理するための処理経路を含んでいる。
【００１４】
一部の実施形態では、該複数の乗算器は２つの乗算器を含んでいる。一部の実施形態では、該２つの並列処理経路の第１の並列処理経路は該２つの乗算器のうちの第１の乗算器を含んでおり、該２つの並列処理経路の第２の並列処理経路は該２つの乗算器のうちの第２の乗算器を含んでいる。一部の実施形態では、該複数のＡＬＵは２つのＡＬＵを含んでいる。一部の実施形態では、該２つの並列処理経路の第１の並列処理経路は該２つのＡＬＵのうちの第１のＡＬＵを含んでおり、該２つの並列処理経路の第２の並列処理経路は該２つのＡＬＵのうちの第２のＡＬＵを含んでいる。一部の実施形態では、該第１のＡＬＵの第１の入力は該複数の乗算器のうちの第１の乗算器の出力を含んでおり、該第１のＡＬＵの第２の入力は該複数の乗算器のうちの第２の乗算器の出力を含んでおり、該第２のＡＬＵの入力は該第２の乗算器の出力を含んでいる。
【００１５】
一部の実施形態では、該オペコードコントローラーは、該オペコードに基づいて該複数のＡＬＵのうちの少なくとも１つによって実行された算術演算を選択するように構成されている。一部の実施形態では、該オペコードコントローラーは、該オペコードに基づいて該複数のマルチプレクサを介するデータの流れをコントロールするように構成されている。一部の実施形態では、該データの流れのコントロールは、該２つの並列処理経路間のデータ依存性および外部データの入力をコントロールすることを含んでいる。一部の実施形態では、ＭＩＭＯ  ＯＦＤＭ受信装置は少なくとも１つのアレイプロセッサ装置を備えている。一部の実施形態では、該ＭＩＭＯ  ＯＦＤＭ受信装置は複数のアレイプロセッサ装置を備えている。一部の実施形態では、ＭＩＭＯ  ＯＦＤＭ送信装置は少なくとも１つのアレイプロセッサ装置を備えている。一部の実施形態では、該ＭＩＭＯ  ＯＦＤＭ送信装置は複数のアレイプロセッサ装置を備えている。
【００１６】
本開示の一態様はアレイプロセッサ装置を含んでいる。一部の実施形態では、該アレイプロセッサ装置は、オペコードに基づいて２つの並列処理経路を介するデータの経路をコントロールする手段と、該２つの並列処理経路の各々において２つの並列行列演算をデータに実行する手段と、該オペコードに基づいて該２つの並列行列演算を選択する手段とを含んでいる。
【００１７】
一部の実施形態では、該オペコードは、アイドルオペコードおよび乗算オペコードのうちの少なくとも１つを含んでいる。一部の実施形態では、該乗算オペコードは、乗算、外部加算による乗算、外部減算による乗算、累算による乗算、加算結果による乗算、減算結果による乗算、加算結果および外部加算による乗算、加算結果および外部減算による乗算、減算結果および外部加算による乗算、減算結果および外部加算による乗算、加算結果および累算による乗算、および、減算結果および累算による乗算のうちの少なくとも１つの表示を含んでいる。
【００１８】
一部の実施形態では、２つの並列行列演算を実行する該手段は、該乗算、該外部加算による乗算、該外部減算による乗算、該累算による乗算、該加算結果による乗算、該減算結果による乗算、該加算結果および外部加算による乗算、該加算結果および外部減算による乗算、該減算結果および外部加算による乗算、該減算結果および外部加算による乗算、該加算結果および累算による乗算、および、該減算結果および累算による乗算の各々を実行する手段を含んでいる。
【００１９】
一部の実施形態では、該データ経路をコントロールする該手段は、該２つの並列処理経路間のデータの依存性をコントロールする手段と、該２つの並列処理経路への外部データの入力をコントロールする手段とを備えている。一部の実施形態では、２つの並列行列演算を実行する該手段は、実数行列値を処理する手段と、該実数行列値と平行して虚数行列値を処理する手段とを備えている。一部の実施形態では、該オペコードに基づいて該データ経路をコントロールする該手段は、複数のマルチプレクサの出力を選択する手段を備えている。一部の実施形態では、該オペコードに基づいて該２つの並列行列演算を選択する該手段は、少なくとも１つのＡＬＵによって実行された算術演算を選択する手段を備えている。
【００２０】
本開示の一態様は、行列演算を実行する方法を含んでいる。一部の実施形態では、該方法は、オペコードに基づいて２つの並列処理経路を介するデータの流れをコントロールすることと、該オペコードに基づいて該２つの並列処理経路の第１の並列処理経路で第１の行列演算を実行することと、該オペコードに基づいて該２つの並列処理経路の第２の並列処理経路で第２の行列演算を実行することとを備えている。
【００２１】
一部の実施形態では、該オペコードは、アイドルオペコードと乗算オペコードのうちの少なくとも１つを含んでいる。一部の実施形態では、該乗算オペコードは、乗算、外部加算による乗算、外部減算による乗算、累算による乗算、加算結果による乗算、減算結果による乗算、加算結果および外部加算による乗算、加算結果および外部減算による乗算、減算結果および外部加算による乗算、減算結果および外部加算による乗算、加算結果および累算による乗算、および、減算結果および累算による乗算のうちの少なくとも１つの表示を含んでいる。
【００２２】
一部の実施形態では、該２つの並列処理経路を介する該データの流れをコントロールすることは、該２つの並列処理経路の第１の並列処理経路の第１のパイプラインステージの出力を、該２つの並列処理経路の第２の並列処理経路の第２のパイプラインステージの入力に方向付けることを含んでいる。一部の実施形態では、該２つの並列処理経路を介する該データの流れをコントロールすることは、該オペコードに基づいて該第１の並列処理経路の該第１のパイプラインステージおよび該第２の並列処理経路の該第２のパイプラインステージへの入力を選択することを含んでいる。
【００２３】
一部の実施形態では、該第１のパイプラインステージは乗算ステージを含んでおり、該第２のパイプラインステージは算術論理ステージを含んでいる。一部の実施形態では、該第１のパイプラインステージは算術論理ステージを含んでおり、該第２のパイプラインステージは乗算ステージを含んでいる。一部の実施形態では、該第１のパイプラインステージは第１の算術論理ステージを含んでおり、該第２のパイプラインステージは第２の算術論理ステージを含んでいる。一部の実施形態では、該２つの並列処理経路を介する該データの流れをコントロールすることは、該第２の並列処理経路の第３のパイプラインステージの出力を、該第１の並列処理経路の第４のパイプラインステージの入力に方向付けることを含んでいる。
【００２４】
一部の実施形態では、該オペコードに基づいて該２つの並列処理経路の該第１の並列処理経路で該第１の行列演算を実行することは、実数行列値を処理することを備えており、該オペコードに基づいて該２つの並列処理経路の該第２の並列処理経路で該第２の行列演算を実行することは、虚数行列値を処理することを備えている。一部の実施形態では、該オペコードに基づいて２つの並列処理経路を介する該データの流れをコントロールすることは、該オペコードに基づいて複数のマルチプレクサをコントロールすることを含んでいる。
【００２５】
一部の実施形態では、該２つの並列処理経路を介する該データの流れをコントロールすることは、該２つの並列処理経路間のデータ依存性をコントロールすることと、外部データの入力をコントロールすることとを含んでいる。一部の実施形態では、該２つの並列処理経路を介する該データの流れをコントロールすることは、該２つの並列処理経路の第１の並列処理経路の第１の乗算器の出力を方向付けることと、該２つの並列処理経路の第２の並列処理経路の第２の乗算器の該出力を方向付けることとを含んでいる。一部の実施形態では、該第１の乗算器の該出力を方向付けることは、該第１の乗算器の該出力を該第１の並列処理経路の第１のＡＬＵの第１の入力に方向付けることを備えており、該第２の乗算器の該出力を向けることは、該第２の乗算器の該出力を該第１のＡＬＵの第２の入力および該第２の並列処理経路の第２のＡＬＵの入力に方向付けることを備えている。
【００２６】
一部の実施形態では、該オペコードに基づいて該２つの並列処理経路の該第１の並列処理経路で該第１の行列演算を実行することは、該オペコードに基づいて第１のＡＬＵに対する第１の演算を選択することを含んでおり、該オペコードに基づいて該２つの並列処理経路の該第２の並列処理経路で該第２の行列演算を実行することは、該オペコードに基づいて第２のＡＬＵに対して第２の演算を選択することを含んでいる。
【００２７】
本開示の一態様は、命令を記憶している機械読み取り可能な媒体を含んでいる。一部の実施形態では、該命令は、オペコードに基づいて並列行列演算を実行するために２つの並列処理経路のそれぞれの乗算ステージにおけるデータ依存性を選択する第１の命令セットと、該オペコードに基づいて該２つの並列処理経路のそれぞれの算術論理ステージにおけるそれぞれの算術論理演算およびデータ依存性を選択する第２の命令セットとを備えている。
【００２８】
一部の実施形態では、該オペコードは、アイドルオペコードと乗算オペコードのうちの少なくとも１つを含んでいる。一部の実施形態では、該乗算オペコードは、乗算、外部加算による乗算、外部減算による乗算、累算による乗算、加算結果による乗算、減算結果による乗算、加算結果および外部加算による乗算、加算結果および外部減算による乗算、減算結果および外部加算による乗算、減算結果および外部加算による乗算、加算結果および累算による乗算、および、減算結果および累算による乗算のうちの少なくとも１つの表示を含んでいる。
【００２９】
添付の図面は等縮尺で図示されているわけではない。図面において、種々の図に示されている各同一またはほぼ同一の要素は同一の参照番号で表されている。明確にするために、全コンポーネントが各図面でラベル付けされていないこともある。
【詳細な説明】
【００３０】
本開示の実施形態は、この用途を、以下の説明に記されたり、図面に示されたりしているコンポーネントおよび動作の構築および配列の詳細に制限されない。本開示は他の実施形態も可能であり、また種々の方法で実践または実行可能である。また、ここで使用されている言い回しおよび用語は説明目的のもので、制限とみなされるべきではない。「含む」、「備える」または「有する」、「含有する」、「伴う」およびこれらの変形例の使用は、以下列挙されているアイテムおよびこの同等物ならびに追加アイテムを包含するものである。本明細書で使用されている用語「例示的」およびこの変形例は、「実施例、例または図示として作用すること」を意味している。「例示的」としてここに説明されている実施形態や設計は、必ずしも他の実施形態や設計よりも好ましいまたは好都合であると解釈されるものではない。
【００３１】
ここに説明されている汎用アレイ処理技術は、無線広域ネットワーク（ＷＷＡＮ）、無線メトロポリタンエリアネットワーク（ＷＭＡＮ）、例えばＩＥＥＥ８０２．１１ａ、８０２．１１ｇおよび／または８０２．１１ｎなどを実現する無線ローカルエリアネットワーク（ＷＬＡＮ）などの種々の通信システムに使用可能である。用語「ネットワーク」および「システム」はここでは互換的に使用可能である。ここに説明されている汎用アレイ処理技術はまた、周波数分割多重アクセス（ＦＤＭＡ）、符号分割多重アクセス（ＣＤＭＡ）、時分割多重アクセス（ＴＤＭＡ）、空間分割多重アクセス（ＳＤＭＡ）、直交ＦＤＭＡ（ＯＦＤＭＡ）、シングルキャリアＦＤＭＡ（ＳＣ−ＦＤＭＡ）、直交周波数分割多重化（ＯＦＤＭ）などの種々の多重アクセススキームと併用可能である。ＯＦＤＭＡネットワークは直交周波数分割多重化（ＯＦＤＭ）を利用する。ＳＣ−ＦＤＭＡネットワークはシングルキャリア周波数分割多重化（ＳＣ−ＦＤＭ）を利用する。ＯＦＤＭおよびＳＣ−ＦＤＭはシステム帯域幅を複数（Ｋ個）の直交サブキャリアに分割し、これらはトーンおよび／またはビンと称されることもある。各サブキャリアはデータによって変調可能である。一般的に、変調シンボルは、ＯＦＤＭによる周波数ドメインおよびＳＣ−ＦＤＭによる時間ドメインで送信されることもある。
【００３２】
図１は、無線通信ネットワーク１０５における２つのステーション１０１および１０３の実施形態のブロック図を示している。図１において、ステーション１０１はデータ送信機として作用しており、ステーション１０３はデータ受信機として作用している。一部の実施形態では、単一ステーションがデータの送信機および受信機の両方として作用することがある点が理解されるはずである。
【００３３】
ステーション１０１および１０３は各々、アクセスポイント、ベースステーション、ノード、端末、モバイルステーション、ユーザー機器、加入者ユニットおよび／またはある他のデバイスや他のネットワークエンティティの機能の一部であってもよく、かつ／またはこれらの一部または全部を含有してもよい。
【００３４】
図１に図示されている実施形態のステーション１０１は複数のアンテナを具備してもよい。図１に図示されている実施形態のステーション１０３もまた複数のアンテナを具備してもよい。受信ステーションおよび送信ステーションが各々複数の入力／出力（例えば、アンテナ）を有する通信ネットワークは、多入力多出力（ＭＩＭＯ）ネットワークと称されることもある。ＩＥＥＥ８０２．１１ｎ開発基準は、ＭＩＭＯネットワークの一部の具現化において使用可能な通信プロトコルについて説明している。各送信アンテナおよび各受信アンテナは、物理アンテナまたはアンテナアレイであってもよい。ステーション１０１および／またはステーション１０３の他の実施形態は複数のアンテナではなく単一のアンテナを含む場合がある点が理解されるはずである。
【００３５】
送信ステーション１０１において、送信データプロセッサ１０７はデータソース１０９からデータを受信し、このデータを通信ネットワーク１０５を介して出力するように処理することができる。このデータはデータシンボルおよび／またはパイロットシンボルを含んでもよい。データシンボルおよびパイロットシンボルは、位相シフトキーイング（ＰＳＫ）や直交振幅変調（ＱＡＭ）などの変調スキームからの変調シンボルであってもよい。一部の具現化では、送信データプロセッサ１０７は、複数の出力アンテナを介して複数のストリームで送信するためにコード化データ信号を多重化可能である。
【００３６】
一部の実施形態では、データ信号は（例えば、複数の受信アンテナによって）受信ステーション１０３で受信可能である。受信ステーション１０３において、受信データプロセッサ１１１は、受信アンテナからデータ信号を受信して、このデータを、データ宛先１１３で使用するために処理することができる。
【００３７】
受信データプロセッサ１１１および／または送信データプロセッサ１０７によって実行される処理の一部は物理層処理を含むことがある。物理層処理は、送信用および／または受信後のデータのオリジナルビットを処理することを含んでもよい。物理層処理は通常、通信の周知のオープンシステム相互接続（ＯＳＩ）モデルの最下層と関連した動作を含むことがある。無線通信システムにおいて、物理層処理は、潜在的に問題のある信頼性の複数のビットストリームから結合ビットストリームを判断すること、および／または１つのビットストリームを複数のビットストリームに分割することを含んでもよい。このような処理は、当分野で公知であるように、複数の行列演算を含むことがある。物理層処理が実行された後、情報（例えば、処理済みビットストリーム）が高次通信層（例えば、ＭＡＣサブ層を含むことがあるデータリンク層）に提供されたり、かつ／または遠隔位置に送信されたりすることがある。一部の具現化において、受信データプロセッサ１１１および送信データプロセッサ１０７の一方または両方によって実行された処理は、高レベル処理を含むことがある。他の用途において、このような高次層処理は、例えばデータソース１０９および／またはデータ宛先１１３によって実行可能である。
【００３８】
図２は、物理層処理を実行するために、送信データプロセッサ１０７または受信データプロセッサ１１１のいずれかで使用可能なデータプロセッサの例示的物理セクション２０１を図示している。図示されているように、物理セクション２０１は、データリンク層処理のために、物理セクション２０１で処理されたデータがデータリンクセクション２０５に出力されるようにし、かつ／または送信前の物理セクション２０１による物理層処理のためにデータリンク層２０５からデータが受信されるようにする物理／データリンクインタフェース２０３を含んでもよい。
【００３９】
物理セクション２０１は、情報が遠隔通信システムに対してまたはこれから受信および／または送信可能な入力および／または出力デバイス２１３に結合されてもよい。一部の実施形態では、入力および／または出力デバイス２１３は、受信および／または送信ステーション１０１、１０３のアンテナを含んでもよい。
【００４０】
物理セクション２０１は、複数の汎用アレイプロセッサ２０７およびオーナーリソース２０９を含んでもよい。複数の汎用アレイプロセッサ２０７およびオーナーリソース２０９は通信ネットワーク２１１（例えば、システムバス）によって結合されてもよい。複数の汎用アレイプロセッサ２０７およびオーナーリソース２０９は物理層処理に関する動作を実行してもよい。本開示の一部の実施形態では、オーナーリソース２０９は、１つ以上の行列関連演算を含むことがある１つ以上の物理層プロセスを実行するように構成されているコントロール要素を含んでもよい。一部の実施形態では、オーナーリソース２０９は、汎用アレイプロセッサ２０７を使用して物理層処理アルゴリズムを実行し、これらのアルゴリズムの行列関連演算の少なくとも一部を実行することができる。一部の具現化では、オーナーリソース２０９は行列データおよびオペコードを汎用アレイプロセッサ２０７に通信してもよい。汎用アレイプロセッサ２０７は、オペコードによって示された演算を行列データに実行して、結果をオーナーリソース２０９に送信してもよい。
【００４１】
例えば、高速フーリエ変換のオーナーリソースは、データと、汎用アレイプロセッサ２０７のうちの１つが高速フーリエ性能に関する１つ以上の行列演算を実行することをリクエストするオペコードとを送信可能である。この汎用アレイプロセッサ２０７のうちの１つは１つ以上の行列演算を実行して、この結果を高速フーリエ変換のオーナーリソースに提供することができ、これは、残りのステップを実行し、この結果を使用して高速フーリエ変換を完了させることができる。
【００４２】
一部の実施形態では、汎用アレイプロセッサ２０７のうちの１つは、乗算、加算および減算などの算術演算を実行するように構成されてもよい。このような演算は、例えば、汎用アレイプロセッサの各クロックサイクルで行列の個別部分に実行されてもよい。算術演算の結合された複数のサイクルシリーズは汎用アレイプロセッサに出力され、受信され、行列演算の結果を生成するように処理されてもよい。例えば、行列Ａ：
【数１】
2009535721.tif 000003
【００４３】
および行列Ｂ：
【数２】
2009535721.tif 000004
【００４４】
の行列乗算は、行列乗算に関する一連のスカラー演算によって判断可能である。このような一連の演算は、得られる行列Ｃ：
【数３】
2009535721.tif 000005
【００４５】
を判断可能であり、このうちの４つの値は、４つの個別スカラー算出によって判断可能である。一部の実施形態では、汎用アレイプロセッサは、行列演算から得られる行列の各値についてスカラー算出の各々を実行するために使用可能である。例えば、ａ１１、ａ１２、ａ２１、ａ２２、ｂ１１、ｂ１２、ｂ２１およびｂ２２の値は、行列Ｃの値の各々に対応する組み合わせで汎用アレイプロセッサに入力されてもよい。後述されるように乗算および加算を示すオペコードは、値の組み合わせの各々によって入力されることもある。これら４つの算出の各々の出力はオーナーリソースによって受信されて、得られる行列Ｃとして処理されることが可能である。
【００４６】
一部の実施形態では、汎用アレイプロセッサ２０７のうちの１つ以上は、オーナーリソースのうちの１つ以上によって共有されることがある。一部の例示的具現化において、オーナーリソースからの共有入力数は３から６個に及ぶことがある。オーナーリソースごとに専用の特殊アレイ処理回路を使用するのではなく、このような汎用アレイプロセッサは、複数のオーナーリソースによって使用される行列演算を実行可能な標準機能を提供してもよい。
【００４７】
一部の実施形態では、オーナーリソースごとに特殊回路ではなく１つ以上の汎用アレイプロセッサ２０７を使用して行列演算を実行することは、システム設計のハードウェアコスト全体を削減可能である。さらに、一部の実施形態では、汎用アレイプロセッサ２０７は時間共有スキーム（例えば、時分割多重アクセス（ＴＤＭＡ）スケジュール）に従ってアクセス可能である。このような時間共有は、一部の通信システムで経験されうるクロック速度およびデータサンプリング速度の差（例えば、２００ＭＨｚ対２０ＭＨｚ）を利用することができる。極めて大きな差のあるシステムにおいて、複数のアルゴリズムが、処理速度にそれ程悪影響を与えずに、特殊専用ハードウェアによって実行されるのではなく汎用アレイプロセッサ２０７間で時間多重化されてもよい。ＭＩＭＯ−ＯＦＤＭ処理タイムラインに基づいて、種々のオーナーリソースは、単純なＴＤＭＡアービターによって１つ以上の汎用アレイプロセッサのコントロールが付与されることもある。このようなＴＤＭＡアービターは当分野で周知である。
【００４８】
一部の実施形態では、汎用アレイプロセッサ２０７は、システムの設計要件によってスケーリングするように配列および構成されてもよい。例えば、２×２ＭＩＭＯ設計がＮ個の汎用アレイプロセッサを含む場合、４×４ＭＩＭＯ設計は、２＊Ｎ個の汎用アレイプロセッサによる略類似のハードウェアアーキテクチャを使用することがある。多数の汎用アレイプロセッサは、処理スループットの略線形増大をもたらすことがある。
【００４９】
図３は、例えば、図２に図示されている汎用アレイプロセッサ２０７の１つとして使用可能な例示的汎用アレイプロセッサ３０１のブロック図を示している。一部の実施形態では、汎用アレイプロセッサ３０１は、オーナーリソースから受信されたオペコードに基づいてオーナーリソースから受信された行列関連データに複数の可能な算術演算のうちの１つを実行するように構成されてもよい。
【００５０】
一部の実施形態では、この複数の算術演算は、行列演算を実行する際にＭＩＭＯ−ＯＦＤＭモデムにとって有用な算術演算を含むことがある。一部の具現化では、複数の算術演算は、高速フーリエ変換、空間処理、最小平均二乗誤差判断、チャネル判断、重み算出および／または位相補正などの複数のディジタル信号処理関連アルゴリズムを実現するための演算を含んでもよい。一具現化では、算術演算は、乗算、加算、減算および累算を含んでもよい。
【００５１】
一部の実施形態では、汎用アレイプロセッサ３０１は、所望ならば、クロックサイクル当たり少なくとも１つの乗算を完了させるように構成されてもよい。一部の実施形態では、汎用アレイプロセッサ３０１によって実行された単一乗算の待ち時間は複数のパイプラインステージを含むことがある。一部の具現化においては、パイプラインステージ数は約３つである。一部の具現化において、以下のクロックサイクルが加算、記憶、累算および／または他の方法で事前サイクルの結果と組み合わされてもよく、これによってサイクル待ち時間を増大させることができる。
【００５２】
一部の実施形態では、汎用アレイプロセッサ３０１は２つの並列処理経路３０３、３０５を含んでもよい。一部の具現化では、各処理経路３０３、３０５は概して、１セットの入力データに関する演算処理を実行する。一部の具現化において、この２つの並列処理経路は、詳細に後述されるように、オペコードに従って相互のデータ依存性および／または送受信を見込んでいる場合がある。
【００５３】
一部の実施形態では、２つの並列処理経路は、多様な行列演算に使用可能であるように配列されている複数の計算要素を含むことがある。個別演算に対する特殊要素を設計するのではなく多様な行列演算に使用可能であるように計算要素を配列することによって、この計算要素は、種々の演算を実行するように再使用可能であり、これによってコストおよび空間を節約することができる。
【００５４】
２つの処理経路３０３、３０５の使用によって、汎用アレイプロセッサ３０１は実数および複素数のデータの並列処理を実行することができる。一部の具現化では、第１の処理経路は、直交振幅変調通信信号のＩ成分に関するデータに行列演算を実行することができ、第２の処理経路は、直交振幅変調通信信号のＱ成分に関するデータに行列演算を実行することができる。他の実施形態では、汎用アレイプロセッサは単一のＩまたはＱ成分を処理することができる。一部の具現化では、１対の汎用アレイプロセッサはそしてＩおよびＱの処理を平行して実行可能であり、あるいは単一の汎用アレイプロセッサはＩおよびＱの処理を順次実行することができる。
【００５５】
一部の実施形態では、各並列処理経路３０３、３０５は、複数のマルチプレクサと、複数のレジスタと、１つの乗算器と１つの算術論理演算ユニットとを含んでもよい。コンポーネントは、図３に示されているように、２つの並列処理経路３０３、３０５を形成するために通信ネットワークによって結合可能である。
【００５６】
処理経路３０３のマルチプレクサ３０７および３０９と、処理経路３０５のマルチプレクサ３１１および３１３は、（例えば、通信ネットワーク２１１から受信された）複数の共有オーナーリソースの中からそれぞれの処理経路への入力を選択することができる。対応するオペコードがオペコードマルチプレクサ３１５によって選択可能である。一部の実施形態では、対応する追加入力が、より詳細に後述されるように、汎用アレイプロセッサ３０１の後半のパイプラインステージにおいてオペコードマルチプレクサ３１５によって選択されたオペコードによって示される演算で使用するために、マルチプレクサ３１７、３１９および３２１で選択可能である。一部の実施形態では、マルチプレクサ３０７、３０９、３１１、３１３、３１５、３１７、３１９および３２１への入力は、汎用アレイプロセッサ３１０を共有する複数のオーナーリソースのうちの１つから単一通信パケットとして受信されてもよい。
【００５７】
一部の実施形態では、マルチプレクサ３０７、３０９、３１１および３１３への入力は、オーナーリソースの登録出力から受信されてもよい。一部の具現化では、オーナーリソースの物理的配置は予測不可能な相互接続遅延を発生させることもあるため、マルチプレクサ３０７、３０９、３１１、３１３および３１５の出力は選択後に登録されることもある。一部の実施形態では、マルチプレクサ３０７、３０９、３１１、３１３および３１５の選択出力は、汎用アレイプロセッサ３０１の後続パイプラインステージで使用するために、それぞれレジスタ３２３、３２５、３２７、３２９および３３１に入力されてもよい。
【００５８】
クロックサイクルごとに、新たな入力がレジスタ３２３、３２５、３２７、３２９および３３１に提供されてもよく、また記憶された古い値は出力されてよい。一部の具現化において、各レジスタは、それぞれのマルチプレクサへの入力のビット幅に対応する多数のビットを記憶可能である。
【００５９】
一部の実施形態では、マルチプレクサ３１７、３１９および３２１の選択出力はそれぞれレジスタ３３３、３３５および３３７に入力されてもよい。一部の具現化では、レジスタ３３３、３３５および３３７の各々は複数のレジスタを含むこともあるため、レジスタ３３３、３３５および３３７は、複数のクロックサイクルに対応する複数の入力値を記憶することもある。一部の具現化において、レジスタ３３３、３３５および３３７の各々は入力の２つのクロックサイクルを記憶することもある。各クロックサイクルにおいて、各レジスタ３３３、３３５および３３７は、それぞれのマルチプレクサから新たな入力を受信可能である。各レジスタは、後述されるように、記憶されている入力値のうちの１つを新たな入力と置換して、汎用アレイプロセッサ３０１の他のコンポーネントによって使用するために、記憶されている当該入力を出力することがある。一部の具現化では、記憶されている最古の入力値は、（例えば、先入れ先出し（ＦＩＦＯ）スキームに従って）各クロックサイクルで置換されてもよい。
【００６０】
一部の実施形態では、レジスタ３２３の出力はマルチプレクサ３３９に提供されてもよい。各クロックサイクルで、マルチプレクサ３３９への入力はレジスタ３２３からの出力と、算術論理演算ユニット（ＡＬＵ）３５９およびＡＬＵ３６１の出力とを含むことがあり、これら両方についてより詳細に後述する。入力の選択は、より詳細に後述されるように、受信されたオペコードに基づいて第１のオペコードデコーダー３４１によってなされてもよい。
【００６１】
一部の実施形態では、レジスタ３２７のコンテンツはマルチプレクサ３４３に提供されてもよい。各クロックサイクルにおいて、マルチプレクサ３４３への入力は、より詳細に後述されるように、レジスタ３２７からの出力およびＡＬＵ３６１からの出力を含むことがある。入力の選択は、マルチプレクサ３３９の入力の選択と略同様に、受信されたオペコードに基づいて第１のオペコードデコーダー３４１によってなされてもよい。
【００６２】
一部の具現化において、マルチプレクサ３３９および３４３はフィードバック経路を乗算器３４５および３４７に提供する。例えば、汎用アレイプロセッサ３０１によって実行された後続演算が事前の演算の結果を参照可能な場合、マルチプレクサはこの事前の演算（例えば、ＡＬＵ３５９および３６１の一方または両方の出力）から結果を選択することがある。このような選択によってオーナーリソースは、演算速度を増大させるために後半の演算を実行する際に、バイパスされることが可能である。
【００６３】
一部の実施形態では、マルチプレクサ３４３の出力およびレジスタ３２５のコンテンツは乗算器３４５に提供されてもよく、またマルチプレクサ３４３の出力およびレジスタ３２９のコンテンツは乗算器３４７に提供されてもよい。乗算器３４５および３４７は、これらの受信されたそれぞれの入力に乗算を実行可能である。一部の具現化において、乗算器３４５および３４７はパイプライン乗算器を含むことがある。パイプライン乗算器は当分野では周知である。各クロックサイクルにおいて、乗算器３４５および３４７の各々はそれぞれの乗算結果を出力可能である。
【００６４】
乗算器３４５の出力はシフト要素３４９に提供されてもよい。この出力がシフト要素３４９に提供されるパイプラインステージにおいて、レジスタ３３５の対応するコンテンツはシフト要素３３３に提供されてもよい。この入力は、乗算器３４５の出力を生成するために使用されたマルチプレクサ３０７の出力がマルチプレクサ３０７で選択されたのと同じクロックサイクルでマルチプレクサ３１９の選択出力に対応することもある。一部の具現化において、後述されるように、乗算器３４５の出力のビットは大きさがシフトされてもよく、またシフト要素３４９は、レジスタ３３５から受信された値に従って乗算器３４５の結果のビットをシフトしてもよく、この結果のビット大きさは、ＡＬＵ３５９によって受容されたビットの予想された大きさと一致する。一部の具現化において、例えば、シフト要素３４９は、レジスタ３３５から受信された値の大きさに等しい多数のビットをシフトすることがある。一部の具現化では、これらの値は０（つまりシフトなし）からＬｏｇ２Ｎ個のビットに及ぶことがあり、ここでＮはシフト要素３４９によって受信されたビット数である。ビットシフトは当分野では周知である。シフト要素３４９は次いで、シフト結果をＡＬＵ３５１に提供してもよい。
【００６５】
乗算器３４７の出力はシフト／多重化要素３５１およびマルチプレクサ３５３に提供されてもよい。シフト／多重化要素３５１は、シフト３４９と同様に、レジスタ３３５から受信された値に従って結果のビットをシフト可能である。シフト／多重化要素３５１はまたＡＬＵ３６１から入力を受信可能であり、これもまた、レジスタ３３５から受信された値に従ってシフト可能である。一部の実施形態では、シフト／多重化要素３５１の出力は、受信されたオペコードに従って第２のオペコードデコーダー３５５によって選択されてもよい。シフト／多重化要素３５１の出力は次いでＡＬＵ３６１に提供されてもよい。
【００６６】
乗算器３４７の出力に加えて、マルチプレクサ３５３はまた、ＡＬＵ３５９の出力およびレジスタ３３３のコンテンツを含む入力を受信可能である。レジスタ３３３からの入力は、乗算器３４５の結果を生成するために使用される入力がマルチプレクサ３０９で選択されたのと同じクロックサイクルでマルチプレクサ３１７において選択された入力に対応してもよい。マルチプレクサ３５３の出力は、受信されたオペコードに従って第２のオペコードデコーダー３５５によって選択可能である。マルチプレクサ３５３の出力はＡＬＵ３５９に提供されてもよい。
【００６７】
一部の実施形態では、マルチプレクサ３５７はＡＬＵ３６１およびレジスタ３３７から入力を受信可能である。レジスタ３３７からの入力は、乗算器３４５の結果を生成するために使用された入力がマルチプレクサ３０８で選択されたのと同じクロックサイクルでマルチプレクサ３２１において選択された入力に対応してもよい。マルチプレクサ３５７の出力は、受信されたオペコードに従って第２のオペコードデコーダー３５５によって選択可能である。マルチプレクサ３５７の出力はＡＬＵ３６１に提供されてもよい。
【００６８】
一部の実施形態では、ＡＬＵ３５９はシフト要素３４９およびマルチプレクサ３５３の出力を受信可能である。一部の実施形態では、ＡＬＵ３６１はシフト／多重化３５１およびマルチプレクサ要素３５７の出力を受信可能である。ＡＬＵ３５９およびＡＬＵ３６１は、これらのそれぞれの受信入力に対してそれぞれ所望の算術演算を実行してもよい。所望の算術演算は、受信されたオペコードに従って第２のオペコードデコーダー３５５によって選択されてもよい。一部の具現化では、これらの演算は、加算、ＩＤ加算（例えば、ゼロへの加算）および減算のうちの１つを含むことがある。ＡＬＵは当分野では周知である。ＡＬＵ３５９およびＡＬＵ３６１は所望の算術演算の結果をそれぞれのレジスタ３６３および３６５に出力可能である。
【００６９】
ＡＬＵ３５９および３６１によって実行された算術演算は、汎用アレイプロセッサ３０１の各クロックサイクルの重要な特徴の１つである場合がある。一部の具現化において、乗算器３４５および３４７の出力は独立結果として取り扱われてもよく、あるいはＡＬＵによって組み合わされてもよい。さらに、一部の具現化では、乗算器３４５および３４７の出力は、例えば行列乗算の一部を実行する際に有用であるように、複数のクロックサイクルで平行して累算されてもよい。一部の具現化では、乗算器３４５および３４７の出力はまた、マルチプレクサ３５３および３５７を介する外部値によって演算されてもよい。
【００７０】
レジスタ３６３はＡＬＵ３５９の出力を受容し、レジスタ３６３はこの出力を、以下のクロックサイクルのデータ依存性算出で使用するために、マルチプレクサ３３３および３５３とシフト／多重化要素３５１に提供してもよい。レジスタ３６３はまた、ＡＬＵ３５９からの出力を、（例えば、通信ネットワーク２１１を介して）この出力をもたらす演算の性能をリクエストしたオーナーリソースに提供してもよい。
【００７１】
レジスタ３６５はＡＬＵ３６１の出力を受容し、レジスタ３６５はＡＬＵ３６１の出力を、以下のクロックサイクルのデータ依存性算出で使用するために、マルチプレクサ３５７、３４３および３３９に提供してもよい。レジスタ３６５はまた、この出力を、（例えば、通信ネットワーク２１１を介して）当該出力をもたらす演算の性能をリクエストしたオーナーリソースに提供してもよい。
【００７２】
上記のように、種々のマルチプレクサおよびＡＬＵ演算の出力選択は、汎用アレイプロセッサ３０１によって受信されたオペコードによって判断されてもよい。オペコードは、いずれのマルチプレクサ入力を選択するか、およびいずれのＡＬＵ演算を実行するかを第１および第２のオペコードデコーダー３４１および３５５に示すマルチビットシーケンスを含んでもよい。一部の具現化では、レジスタ３６７は、汎用アレイプロセッサ３０１のそれぞれのステージで使用するために、第１のオペコードデコーダーがオペコードを復号化した後にオペコード値を記憶してもよい。次のパイプラインステージについて、レジスタ３６７は、次のステージで使用するために、オペコードをオペコードデコーダー３５５に提供してもよい。このステージの後に、オペコードはレジスタ３６９に記憶されてもよい。レジスタ３６３および３６５によって結果がオーナーリソースに出力されると、対応するオペコードもまた、（例えば、オーナーリソースに）有効な演算が完了されたことを示すためにレジスタ３６９によって出力されてもよい。
【００７３】
一部の実施形態では、第１および第２のオペコードデコーダー３４１および３５５によって実行されたオペコードの復号化は、マルチプレクサおよびＡＬＵに対して所望の入力を生成する任意のオペコード復号方法に従って実行されてもよい。オペコード復号化は当分野では周知である。他の実施形態では、ＡＬＵおよび／またはマルチプレクサをコントロールするための任意の数のオペコードデコーダーや他の機構が使用されてもよい。
【００７４】
一具現化において、認識されたオペコードは２つの部分に分割されてもよく、一方は第１のオペコードデコーダー３４１によって復号化されるもので、もう一方は第２のオペコードデコーダー３５５によって復号化されるものである。以下の表は、第１のオペコードデコーダー部分の例示的定義を提供する。
【表１】
2009535721.tif 000006
【００７５】
左欄は、２ビットの受信オペコードの値を示しており、右欄はマルチプレクサ３３９および３４３によって選択された出力を示している。例えば、受信オペコードが第１のオペコードデコーダー部分００を含む場合、マルチプレクサ３３９はマルチプレクサ３０７からの入力を出力として選択し、マルチプレクサ３４３はマルチプレクサ３１１からの入力を出力として選択する。
【００７６】
以下の表は第２のオペコードデコーダー部分の例示的定義を提供する。
【表２】
2009535721.tif 000007
【００７７】
左欄は４ビットの受信オペコードの値を示しており、右欄はＡＬＵ３５９、３６１のうちの１つ以上によって出力された１つ以上の結果を示している。例えば、受信オペコードが第２のオペコードデコーダー部分００００を含む場合、ＡＬＵはデフォルトアイドル値（例えば、すべてゼロ）を出力してもよい。一部の具現化では、アイドルオペコードはストール機構として使用されてもよいため、アイドル周期中に、処理経路は依然として前の演算からアクティブのままである。
【００７８】
別の例として、受信オペコードが第２のオペコードデコーダー部分０００１を含む場合、累算なしの乗算結果が各ＡＬＵ３５９、３６１の出力であってもよい。この出力は、ＡＬＵ３５９に対するマルチプレクサ３０７および３０９の出力の乗算と、ＡＬＵ３６１に対するマルチプレクサ３１１および３１３の出力の乗算とに対応してもよい。このような出力は、ＡＬＵ３５９および３６１の各々によって実行された演算がＩＤ加算（例えば、ゼロに対する入力値の加算）に対応するか否かを結論付けることが可能であり、シフト／多重化要素３５１の出力は乗算器３４７の出力として選択される。第２のオペコードデコーダー部分が００１０を含む場合、出力は、ＡＬＵ３５９に対するマルチプレクサ３１７の出力に加算されたマルチプレクサ３０７および３０９の出力の乗算と、ＡＬＵ３６１に対するマルチプレクサ３２１の出力に加算されたマルチプレクサ３１１および３１３への出力の乗算とに対応できる。このような出力は、各ＡＬＵによって実行された演算がそれぞれのＡＬＵ入力の加算に対応するか否かを結論付けることができ、マルチプレクサ３５３の出力としてレジスタ３３３のコンテンツが選択され、マルチプレクサ３５７の出力としてレジスタ３３７の出力が選択され、シフト／多重化要素３５１の出力として乗算器３４７の出力が選択される。
【００７９】
さらに別の例として、受信オペコードが第２のオペコードデコーダー部分０１１１を含む場合、外部加算による乗算および加算の結果はＡＬＵ３６１の出力であってもよい。一部の具現化では、ＡＬＵ３５９の出力はアイドル出力値（例えば、すべてゼロ）であってもよい。このような結果の生成は、上記の結果と比較して（つまり、第２のオペコードデコーダー部分００００、０００１および００１０について）１つの追加クロックサイクルを用いることがある。一部の具現化では、このような結果は、第１のクロックサイクル時にＡＬＵ３５９によって加算演算を実行することによって生成可能である。第１のクロックサイクル時に、マルチプレクサ３５３の出力は、乗算器３４７の出力を含むように選択されてもよい。また、一部の具現化では、マルチプレクサ３５７の出力はレジスタ３３７の出力として選択されてもよく、ＡＬＵ３６１によって実行された演算はＩＤ加算であってもよい。第２のクロックサイクル時には、ＡＬＵ３６１は加算演算を実行してもよく、シフト／多重化要素３５１の出力はレジスタ３６３から入力されるものとして選択されてもよく、マルチプレクサ３５７の出力はレジスタ３６５からの入力（つまり、前のクロックサイクルからの、ＡＬＵ３６１によるＩＤ加算の出力）として選択されてもよい。
【００８０】
異なる数のクロックサイクルを使用する演算の適用は、新たな入力が事前入力と衝突する際のデータの上書きによる複雑さを発生させることがある。一部の具現化では、ストール機構が、追加のクロックサイクルを必要とする演算が実行中に汎用アレイプロセッサによるデータの進行をストールするために含まれてもよい。このようなデータのストールは当分野では周知である。
【００８１】
他の具現化では、オーナーリソースは、演算によって必要とされるこの追加クロックサイクルに対応する多数のアイドル演算を挿入することによって、このようなストールをコントロール可能である。このような具現化は個別ストール機構を含まない場合もある。アイドル（例えば、ＮＯＰ）命令のこのような挿入は当分野では周知である。アイドルサイクル時に、ＡＬＵはアクティブであってもよく、また事前オペコードコントロール演算の結果を出力可能である。
【００８２】
一部の実施形態では、汎用アレイプロセッサ３０１の要素間のデータ経路は所望のビット幅を含んでもよい。この所望のビット幅は、所望の性能および予算目的に従って選択されてもよい。ビット幅が大きくなると、コストが増大することもあり、算出精度もまた高くなる。以下の表は、オリジナルビット幅Ｎがマルチプレクサ３０７、３０９、３１１および３１３の各々に入力される実施形態に使用可能な例示的１セットのビット幅を示している。種々の具現化では、Ｎは任意の値を含んでもよい。２つの例示的具現化では、Ｎは１６および１８を含んでもよい。Ｎの減少は処理データの定量エラーを増加させ、汎用アレイプロセッサ３０１によって使用されるエリアを縮小することがある。
【表３】
2009535721.tif 000008
【００８３】
左欄はデータ経路部分（例えば、識別要素からの出力）を示している。中央欄は当該部分のビット幅を示している。右欄はデータ経路部分のビットのフォーマットを示している。例えば、マルチプレクサ３０７、３０９、３１１、３１３、３１７および３２１からの出力は、それぞれのマルチプレクサへの入力として受信されたビットの全てを表すＮ個のビットを含むことがある。別の例として、乗算器３４５および３４７からの出力はＮ＋３個のビットを含むことがある。ビットの乗算はビット数をＮ＋３以上に増加させることがあるため、Ｎ＋３個のビットは完全な乗算結果を表さないこともある。それぞれのフォーマット欄に示されているように、出力されたビットは、（サインビットを含んでいない）最上位ビットからＮ−４番目の最下位ビットを表すことができる。
【００８４】
汎用アレイプロセッサ３０１、オペコードおよびビット幅に関する上記説明は単なる例としてなされている点が認識されるはずである。本開示の他の実施形態では、要素の所望の配列が、任意の１セットのオペコードに基づいて任意の所望の演算を実行するために任意の所望のビット幅を使用して動作する汎用アレイ処理を生成するように組み合わされてもよい。
【００８５】
例示的汎用アレイプロセッサについて説明してきたが、汎用アレイ処理を実行する方法についても説明可能である。図４は、ブロック４０１から開始し、かつ本開示の一部の実施形態に従って汎用アレイ処理を実行するために使用可能な例示的プロセス４００を図示している。
【００８６】
ブロック４０３に示されているように、プロセス４００は、１つ以上のオーナーリソースから入力を受信することを含んでもよい。上記のように、この入力は、単一の汎用アレイプロセッサを共有する１つ以上のオーナーリソースからの通信で受信されてもよい。
【００８７】
ブロック４０５に示されているように、プロセス４００は、処理する入力を選択することを含んでもよい。この入力の選択は、ブロック４０３で受信された入力のうちの１つを選択することを含んでもよい。この選択された入力は演算データ（例えば、算術演算が実行可能なビットシーケンス）およびオペコードを含んでもよい。この入力の選択は、時分割多重アクセススキームに基づいて入力を選択することを含んでもよい。このようなスキームは、汎用アレイプロセッサを共有する複数のオーナーリソースによってデータが処理される順序に基づいて入力を選択してもよい。一部の実施形態では、各オーナーリソースには十分な時間が割り当てられることもあるため、データはそれぞれのオーバーリソースによって、またはこれに対してこの時間に処理されてもよく、またオーナーリソースあるいは別の処理または送信要素のうちの次の１つによって使用されてもよい。
【００８８】
ブロック４０７に示されているように、プロセス４００は、入力の少なくとも一部を２つの並列処理経路に提供することを含んでもよい。処理経路の各々は、上記のように、オペコードに従って１つ以上の所望の演算を演算データに実行するように構成および配列された複数の計算コンポーネントを含んでもよい。
【００８９】
ブロック４０９に示されているように、プロセス４００は、オペコードに基づいて２つの処理経路を介する入力の流れをコントロールすることを含んでもよい。この入力の流れはオペコード自体、ならびに演算データおよびこの演算データに演算を実行することの結果を含んでもよい。このデータの流れは、特定の所望の行列関連演算がこのデータを使用して実行可能なようにコントロール可能である。
【００９０】
一部の具現化では、データの流れを方向付けることは、処理経路のうちの１つの出力がもう一方の処理経路の入力として使用されるようにデータの流れを方向付けることを含んでもよい。例えば、あるパイプライン処理経路ステージの入力は、異なる処理経路の事前パイプライン処理経路ステージの出力を含むことがある。一部の実施形態では、データの流れの方向付けは、オペコードに従って１つ以上の処理ステージで入力を選択することを含んでもよい。
【００９１】
ブロック４１１に示されているように、プロセス４００は、オペコードに基づいて第１の並列処理経路の第１の行列関連演算を実行することを含んでもよい。行列関連演算は、オペコードに基づいて選択された算術演算を含んでもよい。
【００９２】
ブロック４１３に示されているように、プロセス４００は、オペコードに基づいて第２の並列処理経路で第２の行列関連演算を実行することを含んでもよい。行列関連演算は、オペコードに基づいて選択された算術演算を含んでもよい。
【００９３】
一部の具現化では、第１および第２の行列演算の結果は、オーナーリソースに出力され、かつ／または後続の処理で使用されてもよい。プロセス４００はブロック４１５で終了してもよい。
【００９４】
ここに説明されている技術はＭＩＭＯ無線通信システム、ならびに、１つ以上のパイロットトーンが用いられる無線または他の任意の通信システムで実現可能である。ここに説明されている技術は、ハードウェア実現、ソフトウェア実現またはこれらの組み合わせを含む多様な方法で実現可能である。ハードウェア実現について、送信ステーションでの送信用および／または受信ステーションでの受信用にデータを処理するために使用される処理ユニットは、１つ以上の特定用途向け集積回路（ＡＳＩＣ）、ディジタル信号プロセッサ（ＤＳＰ）、ディジタル信号処理デバイス（ＤＳＰＤ）、プログラマブル論理デバイス（ＰＬＤ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、プロセッサ、コントローラー、マイクロコントローラー、マイクロプロセッサ、電子デバイス、ここに説明されている機能を実行するように設計されている他の電子ユニットまたはこれらの組み合わせで実現可能である。送信および受信ステーションが複数のプロセッサを含む実施形態では、各ステーションのプロセッサはハードウェアユニットを共有してもよい。
【００９５】
ソフトウェア実現について、データ送受信技術は、ここに説明されている機能を実行するソフトウェアモジュール（例えば、手順、関数など）によって実現可能である。ソフトウェアコードはメモリユニットに記憶され、かつプロセッサによって実行可能である。このメモリユニットはプロセッサ内またはプロセッサ外で実現可能である。
【００９６】
１つ以上の例示的実施形態では、説明されている機能は、ハードウェア、ソフトウェア、ファームウェアあるいはこれらの組み合わせで実現されてもよい。ソフトウェアで実現された場合、この機能は、１つ以上の命令やコードとしてコンピュータ読み取り可能な媒体に記憶されたり送信されたりしてもよい。コンピュータ読み取り可能な媒体は、コンピュータ記憶媒体と、ある場所から他へのコンピュータプログラムの転送を容易にする任意の媒体を含む通信媒体の両方を含む。記憶媒体は、コンピュータによってアクセス可能な任意の使用可能な媒体であってもよい。制限ではなく例証として、このようなコンピュータ読み取り可能な媒体はＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭまたは他の光ディスク記憶装置、磁気ディスク記憶装置または他の磁気記憶デバイス、あるいは命令やデータ構造の形態で所望のプログラムコードを搬送または記憶するために使用可能であり、かつコンピュータによってアクセス可能な任意の他の媒体を備えることができる。また、任意の接続はコンピュータ読み取り可能な媒体と適切に称される。例えば、ソフトウェアがウェブサイト、サーバー、あるいは、同軸ケーブル、光ファイバーケーブル、ツイストペア、ディジタル加入者回線（ＤＳＬ）、または赤外線、無線およびマイクロ波などの無線技術を使用する他の遠隔ソースから送信される場合、同軸ケーブル、光ファイバーケーブル、ツイストペア、ＤＳＬ、あるいは赤外線、無線およびマイクロ波などの無線技術は媒体の定義に含まれている。ここで使用されているディスク（ｄｉｓｋおよびｄｉｓｃ）は、コンパクトディスク（ＣＤ）、レーザーディスク（登録商標）、光ディスク、ディジタル多用途ディスク（ＤＶＤ）、フロッピー（登録商標）ディスクおよびブルーレイディスクを含んでおり、この場合ディスク（ｄｉｓｋ）は普通、データを磁気的に再生するのに対して、ディスク（ｄｉｓｃ）はレーザーによって光学的にデータを再生するものである。上記の組み合わせもまたコンピュータ読み取り可能な媒体の範囲の含まれるべきである。
【００９７】
開示されている実施形態に関する上記説明は、当業者が本開示をなし、あるいはこれは使用することができるように提供されている。これらの実施形態の種々の修正は当業者には容易に明らかになり、ここに定義されている一般原理は、本開示の主旨または範囲から逸脱することなく他の実施形態に適用可能である。したがって、本開示はここに示されている実施形態に制限されないが、ここに開示されている原理および新規の特徴と矛盾しない広い範囲に従うべきである。
【図面の簡単な説明】
【００９８】
【図１】図１は、本開示の一部の実施形態に従った２つの通信ステーションのブロック図を示している。
【図２】図２は、本開示の一部の実施形態に従ったデータプロセッサの例示的物理セクションを示している。
【図３】図３は、本開示の一部の実施形態に従った例示的汎用アレイプロセッサのブロック図を示している。
【図４】図４は、本開示の一部の実施形態に従った汎用アレイ処理を実行するために使用可能な例示的プロセスを示している。
【図１】
2009535721.tif 000009
【図２】
2009535721.tif 000010
【図３】
2009535721.tif 000011
【図４】
2009535721.tif 000012
【国際調査報告】
2009535721.tif 000013
2009535721.tif 000014
2009535721.tif 000015