JP4422299B2 - 行列計算を行うためのプロセッサ素子のパイプライン処理線形アレー - Google Patents
行列計算を行うためのプロセッサ素子のパイプライン処理線形アレー Download PDFInfo
- Publication number
- JP4422299B2 JP4422299B2 JP2000174354A JP2000174354A JP4422299B2 JP 4422299 B2 JP4422299 B2 JP 4422299B2 JP 2000174354 A JP2000174354 A JP 2000174354A JP 2000174354 A JP2000174354 A JP 2000174354A JP 4422299 B2 JP4422299 B2 JP 4422299B2
- Authority
- JP
- Japan
- Prior art keywords
- processor element
- processor
- array
- matrix
- complex
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/4806—Computations with complex numbers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/02—Digital function generators
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor
- G06F9/3879—Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2101/00—Indexing scheme relating to the type of digital function generated
- G06F2101/08—Powers or roots
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/38—Indexing scheme relating to groups G06F7/38 - G06F7/575
- G06F2207/3804—Details
- G06F2207/386—Special constructional features
- G06F2207/3884—Pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/499—Denomination or exception handling, e.g. rounding or overflow
- G06F7/49936—Normalisation mentioned as feature only
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Physics (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Complex Calculations (AREA)
Description
【発明の属する技術分野】
本発明は、概して、プロセッサ素子および技術に関し、特に行列計算を行うためのプロセッサ素子のアレーを備えるパイプライン処理デバイスに関する。
【0002】
【従来の技術、及び、発明が解決しようとする課題】
<優先権の主張>
本出願は、「QR分解用のパイプライン処理線形プロセッサ・アレー」という名称の、発明者A.J.グリーンバーガーの1999年6月10日付の米国仮出願60/138,423号の優先権を主張する。
【0003】
技術が進歩するにつれて、メーカーは、一つの集積回路上により多くのワイヤおよびトランジスタを集積することができるようになり、今までは実現不可能であったデジタル信号処理動作を行う新しい機会が到来している。
【0004】
そのような新規な用途の一例としては、無線通信システムの基地局でのアンテナのアレー用の適応ビーム形成の使用がある。この場合の目標は、所与のセル内により多くの移動局ユーザを収容し、より高速なデータ速度を実現できるようにすることである。この目標は、問題の移動局の方向を指していて、干渉ソースから全然影響を受けない放射パターンを形成するために、複数のアンテナにより受信した複数の信号を時変複合加重により加算することにより達成される。このタイプの問題を最適化するための種々の解決方法は周知であり、複素数の行列およびベクトルによる計算の実行を含む。例えば、1996年に、プレンティスホール社発行のS.ハイキンの「適応フィルタ理論」第3版参照。所与の時間において、一回の複素数乗算を行うだけではすまず、非常に多くの回数、複素数乗算を行わなければならない。
【0005】
このタイプのもう一つの新しい用途は、直接シーケンス符号分割多元接続(DS/CDMA)コード化を使用する無線システム基地局に対するマルチユーザの検出である。これらのアルゴリズムの場合には、例えば、1996年10月号のIEEE通信マガジン掲載の、S.モシャビの「DS−CDMA通信用のマルチユーザ検出」の124ページに記載されているように、相互に干渉している種々の移動局について、リアルタイムで入手した集合的な知識が、上記干渉を解決し、個々の各移動局の検出を改善するために使用される。これらのアルゴリズムも、複素数の行列の集中的な計算を含む。
【0006】
無線基地局に対する上記の新しい用途は、多くの場合、基本的な行列計算を使用する周知のアルゴリズムの修正したものを使用する。代表的な最も興味のある四つの演算は下記の通りである。
【0007】
1.n個の未知数を含む一組のn個の一次方程式の解。一つの可能なアプローチは、ギブンズ回転により、QR分解を使用して上記一組の方程式を三角形に変換し、その後で、逆置換により三角形に変換した一組の方程式を解く方法である。
2.マトリックス反転。一つの可能なアプローチは、ギブンズ回転によりQR分解を使用して一組の方程式を三角形に変換し、その後で、多重逆置換により、逆数について上記一組の三角形に変換した方程式を解く方法である。
3.マトリックス−マトリックス乗算。
4.共分散および相互相関。後でさらに処理が行われる行列およびベクトルを形成するために、入力信号のベクトルに関する上記統計を計算する必要がある。
【0008】
これらの演算を行うための従来の技術については、以下にさらに詳細に説明する。
一組の一次方程式を解く場合には、行列表示は下記式のようになる。
Ax=y (1)
ここで、Aは複素数値の既知の正方行列であり、yは複素数値の既知のベクトルであり、xは未知の複素数ベクトルである。上記式を数値解法するには多くの技術が使用される。しかし、これらの技術のうちのいくつかは、数値が不安定であるという欠点がある。式(1)を解くための数値的に安定な技術は、ギブンズ回転によるQR分解またはQR因数分解と呼ばれ、例えば、1996年に、ジョンズ・ホプキンス大学出版部が発行した、H.ゴルブおよびC.F.バン・ローンの「行列計算」第3版に記載されている。このアプローチは、行列Aを積に因数分解するプロセスを含む。
A≡QR (2)
【0009】
ここで、Qはユニタリー行列であり、Rは右上の三角行列である。「右上の三角」という表現は、主要な対角線の下のRのすべての構成要素がゼロであることを意味する。それ故、式(1)の両辺には、QHで示すQの共役転置行列(すなわち、随伴エルミート行列)が掛けられる。
QHAx=QHy (3)
式(2)を式(3)に代入すると、下記式が得られる。
QHQRx=QHy (4)
QHQは、単位行列に等しいので、式(4)は下記式のようになる。
Rx=QHy (5)
【0010】
式(5)は「逆置換」と呼ばれる技術を使用して、各構成要素xについて簡単に解くことができる式である。「逆置換」という用語は、ほとんどがゼロで、一つだけが未知数である、式(5)の行列の一番下の行が、最初に解かれる反復法を指す。この場合、解は一つ上の行に代入され、その行が解かれる。このプロセスは、式(5)の行列のすべての行の解が得られるまで継続して行われる。
【0011】
ユニタリー行列QHを発見するための、有効で数値的に安定している方法は、個々のいわゆる「ギブンズ回転」の積としての方法である。この場合、上記各ゼロは、前に置かれたゼロをそのままにしておいて、前の行列の一つの要素を追い出す。例えば、1958年3月出版の、「J.Soc.Indust.Appl.Math」6巻、1号の26ページ掲載のW.ギブンズの「一般行列と三角形に変形する平面ユニタリー回転の計算」を参照してほしい。当業者にとっては、ギブンズ回転が、帰納的最小自乗適応アルゴリズムを行うために、役に立つことは周知である。
【0012】
図1−図5を参照しながら、ギブンズ回転を使用する小さな行列式の三角形への変換について以下に説明する。下記式(6)は、上記例に対する個々の行列およびベクトル要素を示す式(1)の展開である。
【数1】
【0013】
図1は、対応するギブンズ回転のいくつかの段を示す。図1の六つの段の場合には、5×4のアレーにゼロが連続して並んでいる。各アレーの頭のところの文字は、四つの列が、変換中の行列Aの要素であること、および5番目の列が変換中のベクトルyの要素を持っていることを示す。太字で示すゼロは、各段内に現在挿入中のゼロを示す。下記式(7)は、図1の段1での最初の単一変換の方法をより詳細に示す。より詳細に説明すると、一つの要素を強制的にゼロにするために、2×2の複素数のユニタリー行列が、最初の二つの行に適用され、他の要素すべては、新しい数値に変換される。「*」記号は、複素数の共役を示す。
【数2】
強制的にゼロにされる要素を発見するために、行列を乗算することにより下記式が得られる。
【数3】
単一制約により、
【数4】
下記式(10)は、これら式を満足する。
【数5】
そして、
【数6】
【0014】
ゼロでない変換された要素a11’は、下記式の実数により表わされる。
【数7】
【0015】
この行列は、二つの列のすべての他の要素を「回転」させる。
【0016】
すでに説明したように、ギブンズ回転を使用するQR分解は、三角形の形をしている二つの次元の収縮アレーで手早く解くことができる。対応する1981年発行の、発明者W.M.ジェントルマンおよびH.T.クングの「収縮アレーによるマトリックス三角形への変換」のSPIE V298の19ページを参照してほしい。
【0017】
図2−図5は、プロセッサ素子(PE)の三角形のアレー上の5×4行列式を三角形にする手順の始まりを示す。図2−図5の丸いボックスは、c、sおよび上記式(10)−(12)に示すように更新した要素を計算する特殊な「ヘッド」要素である。四角いボックスは、cおよびsを使用する二つの要素を回転する「通常の」要素である。これらも、cおよびsを右に移動させる。図2に示す、ギブンズ回転のステップ1においては、第一のc1およびs1が計算される。図3に示すステップ2においては、第二のc2およびs2が計算され、要素の一番上の行の第一の四角いボックスは、回転させるためにc1およびs1を使用する。図4に示すステップ3においては、第三のc3およびs3が計算され、第一の四角いボックスは回転するために、c2およびs2を使用し、第二の四角いボックスは、回転するためにc1およびs1を使用する。図5に示すステップ4においては、第二の行のヘッド要素は、第四のc4およびs4の計算を帰納的に開始することができる。第二の行のヘッド要素の上の四角いボックスは、依然として回転を続けている。計算は、三角形のアレーを通して収縮するように進行する。
【0018】
この問題の場合には、帰納的な手順により、計算の待ち時間を短くする機会があることに留意されたい。所与の列に二つのゼロを並べてから、元の列に続けて他のゼロを並べながら、次の列に右に向かってゼロを並べ始めることができる。使用できる平行度の程度は、処理中の行列が大きくなるにつれて増大する。
【0019】
計算が収縮的にではなく、平行して行われる上記アーキテクチャの一つの修正アーキテクチャがある。この修正アーキテクチャの場合には、c1およびs1が分かった場合には、それらを、すべての四角いボックスのヘッド要素の右に同時に送り、c1およびs1のこれらの数値を使用するすべての回転を並列に行うことができる。ヘッド要素でのcおよびsの計算は、集中的なものであることに留意されたい。何故なら、絶対値の自乗および逆数の平方根が必要であるからである。
【0020】
図6は、ギブンズ回転を使用するQR分解用の二つのアーキテクチャで、時間の経過とともに行われるデータの処理方法の全体を示す。並列の場合には、プロセッサ素子のほぼ水平なバンドが一度に動作する。時間の経過につれて、上記バンドは、図に示す三角形のアレーの中を下向きに移動する。収縮の場合には、能動状態のプロセッサ素子のある角度を持ったバンドが、アレーをその下向きの角度を維持しながら、三角形のアレーの中を下向きに移動する。両方のケースの場合、プロセッサ素子の使用が効率的でないことは明らかである。大型の行列のQR分解の場合には、大部分のプロセッサ素子は、任意の所与の時間アイドル状態になっている。例えば、計算のピーク時の、縦17×横16の大きさの行列式の場合には、三角形内のプロセッサ素子の価値ある五つまでの行は、一度に能動状態になることができ、待ち時間は短くなり最適状態になる。しかし、平均して、プロセッサ素子のうちの僅かな素子だけを稼働状態に維持することができる。
【0021】
それ故、上記の二次元の三角形のアレーよりも効率的な、QR分解および他のタイプの行列計算を行うためのアーキテクチャを発見することが望ましい。一つのアプローチは、一つの一次元のプロセッサ・アレーを考慮の対象にして、シーケンシャルに仮想の二つの次元のアレーの動作を、物理的に一次元のアレー上にマップする方法である。ICASSP99、G.ライトボディ、R.ワルキ、R.ウッドおよびJ.マクキャニの「線形QRアーキテクチャの新規なマッピング」;1999年の、IEEE国際会議アコウスト、演説、信号処理、1933ページに、上記アプローチが記載されている。このアプローチは、二次元の三角アレーからプロセッサ素子を効率よく使用する線形アレーにマッピングするために、再マッピングおよびスケジューリング・スキームを使用する。しかし、このアルゴリズムの全待ち時間は、置き換えた三角アレーの全待ち時間より遥かに長い。また、このアプローチにより、100%ハードウェアを利用するには、第二の三角形への変換問題が、第一の三角形への変換問題が半分終了した場合にスタートする、二つの独立の三角形への変換問題のステップをインターリーブする必要がある。
【0022】
1992年マサチューセッツ州、ボストンのクルワ・アカデミック出版発行の、J.H.モレノおよびT.ラングの「収縮タイプのアレーに関する行列計算」の206−210ページには、他のアプローチが記載されているが、このアプローチは、高い効率でこのタイプの、行列アルゴリズムを実行するために、パイプライン処理プロセッサ素子の線形アレーを使用する。
【0023】
上記の適応アンテナ・アレー問題を処理するために、他の方法を使用することもできる。例えば、1983年の、Proc.SPIE V.431、105ページ掲載の、J.G.マックハータの「収縮性アレーを使用する帰納的最小自乗最小化」に記載の「帰納的最小自乗」(RLS)と呼ばれる計算がもっと簡単なアルゴリズムは、適応アンテナ問題に適用することができる。このアプローチの場合には、最適な結果には及ばない結果しか得られないが、計算が簡単になるという利点がある。RLSアルゴリズムは、上記逆置換を使用しなくてもすむ。二次元三角収縮アレー上で、迅速にRSLアルゴリズムを実行する方法は周知である。この二つの二次元アレーに基づく、ハードウェアによる解決方法については、例えば、1998年の放送通信に関するIEEE1998年国際チューリッヒ・セミナーの29ページ掲載の、B.ハラーの「移動通信における、RLSをベースとする、時間参照ビーム形成についてのアルゴリズムおよびVLSIアーキテクチャ」が記載している。
【0024】
上記の従来の逆置換プロセスについて、以下にさらに詳細に説明する。すでに説明したように、QR分解が終了した後で、三角形に変換された一組の式は、式(5)の形をしていて、この式はこの実施形態のために展開される。
【数8】
【0025】
上記のギブンズの手順の後で、この例においては、r11、r22およびr33である最後のものを除いて、R行列の対角線方向のすべての要素は実数であり、またこの例の場合はr44である最後の対角線方向の最後の要素は複素数である。逆置換プロセスを使用すれば、この一組の式(13)を解くことができる。より詳細に説明すると、一つの未知数x4しか含んでいない四つの式の最後の式を最初に解くことができる。例えば、y4をr44で割ることにより、x4を得ることができる。別の方法としては、x4を発見するために、逆数、1/r44を計算し、その後で、y4を掛けることもできる。その後で、x4は四つの式のうちの第三の式に代入される。r33の逆数を計算する事ができる。その後で、x3を、(1/r33)(y3−r34z4)の形で、発見することができる。その後で、このプロセスは、スペースの未知数が発見されるまで、式を通して、反対方向に継続して実行される。
【0026】
行列の逆数は、上記の一連の逆置換を含む手順により、発見することができる。行列Aの逆数A-1を発見したい場合を考えてみよう。定義により、下記式のようになる。
AA-1=I (14)
【0027】
ここで、Iは単位行列である。上記説明と同様に、下記式のようなユニタリー行列Qが存在する。
A=QR (15)
【0028】
ここで、Rは右の三角形である。これを式(14)に代入すると、下記式が得られる。
QAR-1=I (16)
【0029】
その後で、先に進んで、一連のギブンズ回転の結果としての、Q、QHの随伴エルミート行列を発見することができる。式16の両辺にQHを掛けると、下記式が得られる。
RA-1=QH (17)
【0030】
この時点で、RおよびQHは、両方とも発見されるが、A-1は未知数であることを思いだしてほしい。式(17)の左辺の各列は、右辺の対応する列と等しくなけてはならないので、式(17)は一連の式に分割することができる。
Rxj=yj (18)
【0031】
ここで、xjはA-1の列であり、yjはQHの対応する列である。jの異なる数値に対する一連の式(18)の各式は、式(5)の逆置換問題に似ている。これらすべての逆置換問題は、共通の右の三角形の行列Rを共有している。それ故、行列の逆数は、ギブンズ回転によりQR分解を行った後で、多くの逆置換を行うことにより発見することができる。
【0032】
信号のアレーの高度の処理の際に行われるもう一つの共通な演算は、一つの行列に他の行列を掛けることである。この場合、各行列の要素は複素数値を持つ。行列AおよびBの乗算による行列Cの構成を考えてみよう。この例の場合には、三つの各行列は、複素数要素を含む三つの4×4行列である。式(19)は、この例を展開して、行列要素を示す。
【数9】
【0033】
Cの16の各複素数要素は、Aの一つの行からの要素、およびBの一つの列からの要素の四回の複素数乗算の結果得られたものである。
【数10】
【0034】
それ故、必要な複素数乗算の回数は、全部で4×4×4=64回である。式(19)のマトリックス−マトリックス乗算は、多くの異なるハードウェア・アーキテクチャにより、多くの方法で計算することができる。通常のプログラム可能なデジタル・コンピュータの場合には、ある実数に他の実数を掛けるためのハードウェアを備えているが、通常、それ以上のハードウェアの支援はない。プログラムは、通常、四つの実数乗算の合計として、各複素数乗算を行う。
【数11】
【0035】
現在の多くのデジタル・コンピュータの場合には、乗算および累算用の演算ハードウェアが、前の項がその乗算および累積を終了する前に、新しい項が乗算を始めることができるように、すでにパイプライン処理を行っていて、それにより、式(20)および(21)に示すように、計算の処理能力が改善される。
【0036】
現在のベクトル・スーパコンピュータの場合には、プログラム制御によるハードウェアが、メモリから(この例の場合には、a21、a22である)オペランドを、ベクトル・レジスタにロードするのを助け、そのため、上記オペランドを、パイプライン処理乗算ハードウェアの入力に迅速に送ることができる。
【0037】
最近のプログラム可能なデジタル信号プロセッサ(DSP)のあるものは、一つ以上の乗算装置を含んでいる。例えば、ペンシルバニア州アレンタウンのマイクロエレクトロニック・グループの、ルーセント・テクノロジーズ社のスターコアSC140 DSPは、それぞれが、二つの実数を掛け合わせ、各サイクル毎にその結果を累算することができる、四つの演算ユニットを含む。正しくプログラムされている場合には、SC140は、式(20)の演算を行っている際に、サイクル毎にピーク速度で、一つの複素数乗算および累算を行うことができる。
【0038】
マトリックス−マトリックス乗算のような演算を行うための、「行列計算用の収縮アレー装置」という名称の、H.T.クングおよびC.E.レイザソンの、1985年の米国特許第4,493,048号は、プロセッサ素子の二次元収縮アレーを提案している。この場合、各プロセッサ素子は、二つの数の乗算、およびその後のサイクル毎の累算からなる、「ステップ」演算を行うことができる。これらのアレーにおいては、AおよびBの要素は、特定のパターンに従って、アレー周辺のプロセッサ素子に送られる。Cの要素は周辺のプロセッサ素子からのものである。例えば、1988年プレンテイス・ホール社発行のS.Y.クングの「VLSIアレー・プロセッサ」の213ページには、他の二次元アレーの例が記載されている。このようなアレーが、複素数の乗算および累算を行うことができる各プロセッサ素子と一緒に組み立てられた場合には、このアレーは、非常に高性能を持つことができる。しかし、このようなアレーは、非常に高価であり、データを入力したり、取り出したりするのが難しい。
【0039】
上記適応アンテナ用途の場合には、多数の空間的に分離しているアンテナは、すべて同じ一組の必要な移動局ユーザおよび不必要な干渉源から信号を受信する。上記アンテナから受信した信号に、特定の組の複素数加重値を加えることにより、適応アンテナ・アレーは、一つの移動局の方向に高い利得を持ち(指向性)、干渉源の方向の利得をゼロにすることができる。xをアンテナ・アレーから受信したベクトルと仮定しよう。必要な信号ydを検出するための最適加重Woptのベクトルは、ウイナ・ホプト式により入手できるが、このベクトルは、静止している一組の移動局および干渉源にとっては理想的なものであり、また、あまり急速に移動しない、静止していない組にとっては実際的なものである。
RxWopt=rxd (22)
【0040】
この場合、Rx=E{xxH} (23)
【0041】
上記式は、複素数共分散行列である。
rxd=E{xy* d} (24)
【0042】
上記式は、複素数相互相関ベクトルである。E{}演算は、時間経過中の統計的平均をとることを示す。実際には、上記平均は、最近受信したデータに対して加重をより重くし、古いデータに対して加重を軽くすることができる。ある実際のシステムの場合には、送信機は、周期的に、既知の信号を送信するが、システムをトレーニングし、Woptを発見するために、ydに対して使用されるのはこの既知の信号である。
【0043】
それぞれ、式(23)の共分散行列、および式(24)の相互相関ベクトルを、かなり頻繁に計算しなければならない。これらの両方の手順は、上記マトリックス−マトリックス乗算と比較すると、計算は簡単であるが、従来の技術の場合には、必要な計算効率をあげることはできない。
【0044】
上記のことから考えて、QR分解を行い、その後で、逆置換を行うことにより、一組の式の解のような演算、およびマトリックス反転、マトリックス−マトリックス乗算、および共分散および相互相関のような、その他の行列関連の演算を実行する際に使用するのに適している、もっと効率的なプロセッサ素子アーキテクチャの開発が待望されているのは明らかである。
【0045】
【課題を解決するための手段】
本発明は、種々の行列演算を行うのに特に効率の高いパイプライン処理を行うプログラム可能なプロセッサ素子(PE)、および上記プロセッサ素子の線形アレー用のアーキテクチャを提供する。本発明によれば、各プロセッサ素子は、(i)少なくとも二つの複素数の実数部と虚数部に、少なくとも他の二つの複素数の実数部および虚数部を掛け合わせることができ、それにより、少なくとも16の部分的積を形成することができ、(ii)各加法の組合せが実数または虚数を表わす、上記部分的積の一つまたはそれ以上の加法の組合せを形成することができる演算回路を含む。各プロセッサ素子内のレジスタ・ファイルは、第一のポートと第二のポートとを含み、各第一のポートおよび第二のポートは、二つの複合語を読み取ることができ、またはレジスタ・ファイルへまたはレジスタ・ファイルから二つの複合語を書き込むことができる。上記ポートは、そこに複合語を供給し、そこから実数または虚数を受け取るための演算回路に接続している。
【0046】
他の観点から見ると、本発明の行列計算を行うのに適しているプロセッサ素子の線形アレーは、ヘッド・プロセッサ素子、一組の通常のプロセッサ素子を含み、上記ヘッド・プロセッサ素子は、通常のプロセッサ素子の機能的スーパーセットであり、アレー内の最も近い隣接プロセッサ素子と相互接続していて、隣接していない通常のプロセッサ素子から、ヘッド・プロセッサ素子へのフィードバック経路を持つ。ヘッド・プロセッサ素子は、さらに、非線形関数ゼネレータを含む。各プロセッサ素子は、終了する算術演算の待ち時間を、それにより新しい演算をスタートする周期の倍数になるようにパイプライン処理を行う。アレーを制御するために、超長命令語(VLIW)プログラム、またはその他のタイプのプログラムを使用することができる。このアレーは、例えば、一組の一次方程式、マトリックス反転、マトリックス−マトリックス乗算、および共分散および相互相関の計算のような、複雑な行列演算を行う際に特に高い効率を示す。
【0047】
都合のよいことに、本発明を使用した場合には、二次元三角アレーを使用してすでに実行した行列計算を、処理素子のパイプライン処理線形アレーを使用して、効率的に実行することができる。それ故、本発明を使用すると、パイプライン処理のために、待ち時間が若干長くなるだけで、かなり簡単なハードウェアにより、行列計算を行うことができる。
【0048】
本発明の上記および他の機能および利点は、添付の図面を参照し、下記の説明を読めば理解することができるだろう。
【0049】
【発明の実施の形態】
本発明は、例えば、ギブンズ回転によるQR分解、逆置換による一組の三角形の式の解法、マトリックス−マトリックス乗算、および共分散および相互相関の形成を含む、種々の行列演算を行う際に、高い効率を示す制御を備えている、パイプライン処理を行うプログラム可能なプロセッサ素子(PE)、および上記プロセッサ素子の線形アレー用のアーキテクチャを提供する。
<プロセッサ素子アーキテクチャ>
【0050】
図7は、本発明のプロセッサ素子(PE)100の例示としての実施形態である。すでに説明したように、プロセッサ素子のパイプライン処理アレーは、通常、通常のプロセッサ素子とヘッド・プロセッサ素子の両方を含む。図7のプロセッサ素子100は、本発明のヘッド・プロセッサ素子の一例と見なすことができる。このプロセッサ素子は、対応する通常の素子の機能のスーパーセットを持つ。この例示としての実施形態の場合には、ヘッド・プロセッサ素子は、図に示すすべての素子を含むが、一方、対応する通常のプロセッサ素子は、一点鎖線で示す非線形関数ゼネレータ102以外のすべての素子を含む。
【0051】
図7のプロセッサ素子100は5段のパイプラインで構成されているが、同じアーキテクチャを、他の長さのパイプラインを使用して実行することもできる。
【0052】
プロセッサ素子100の素子104は、以下に説明する方法で、二つの複素数と二つの複素数との間の乗算/累算を行う、複素数乗算装置部分である。上記素子104は、また、読出し専用メモリ(ROM)テーブル駆動補間エンジンとして実行することができる、非線形関数ゼネレータ102を含む。例示としての実施形態で、ゼネレータ102にょり発生させることができる、二つの非線形関数は、逆平方根および逆数である。非線形関数ゼネレータ102については、以下にさらに詳細に説明する。
【0053】
図7のプロセッサ素子100は、また、三つのポートを持つレジスタ・ファイル106を含む。上記レジスタ・ファイル106の、これらポートのうちの二つ、すなわち、ポートr1およびr2は、計算中の一時的な記憶のソースおよび宛先として使用される。このレジスタ・ファイル106の第三のポートr3は、演算対象のデータの数値を書き込み、その結果を読み出すことができる、ホスト・プロセッサ専用のポートである。上記ホスト・プロセッサは、この第三ポートを、そのメモリ・アドレスおよびデータ・バスに直接インターフェースする、メモリとして使用することができる。もう一つの例としては、第三のポートは、デジタル・プロセッサ設計分野の当業者であれば周知の、直接メモリ・アクセス(DMA)コントローラを通して、インターフェースすることもできる。DMAコントローラおよび関連するインターフェース・ロジックを使用すると、レジスタ・ファイルとホスト・プロセッサとの間のメモリ転送が容易になり、必要に応じて、語を再度並べ変えることができる。
【0054】
複素数乗算装置部分104に左には、それぞれを、ilc0(1)およびils0(1)で示す、一組の入力レジスタ108−1および108−2が位置する。これらレジスタは、横の入力ilcおよびilsからシフトされたか、またはレジスタ・ファイル106のポート2からロードされたか、または入力itaおよびitbからロードされた数値を保持することができる。これら二つのレジスタは、また、ある種の処理アルゴリズムの場合に必要な収縮パイプライン処理演算を維持するために、遅延素子111を通して遅延出力信号を供給する、一点鎖線で示す遅延ライン110を供給する。
【0055】
図7の右側においては、出力右信号orcおよびorsを、それぞれ、マルチプレクサ112−1および112−2により選択した、三つの可能な信号のうちの一つにより駆動することができる。より詳細に説明すると、orc出力信号は、ilc0(1)、ilc0(5)またはortc(4)のいずれかであってもよいし、ors出力信号は、ils0(1)、ils0(5)またはorts(4)のいずれかであってもよい。信号ilc0(1)およびils0(1)は、マトリックス−マトリックス乗算を行うために使用するような、1サイクル収縮移送アルゴリズム用に使用される。信号ilc0(5)およびils0(5)は、遅延ライン110の出力であり、QR分解を行うために使用されるアルゴリズムにような、多重サイクル収縮移動アルゴリズム用に使用される。信号ortc(4)およびorts(4)は、ゼネレータ102が発生する非線形関数を表わす。
【0056】
プロセッサ素子100は、また、保持レジスタg1、h1、g2およびh2、および種々の信号を、複素数乗算装置部分104のY1およびY2被乗数に適用することができる、多数のマルチプレクサ114−1、114−2、114−3、114−4、116−1および116−2を含む。
【0057】
上記式(7)のところですでに説明したように、基本的なギブンズ回転は、下記式のような積の組合せにより、二つの複素数行列要素を回転するために、二つの複素数量cおよびsを使用する。
【数12】
【0058】
それ故、プロセッサ素子100が行う演算のうちの一つは、式(25)のようなギブンズ回転である。式(25)中の演算は、通常、従来のデジタル・コンピュータまたはDSPによる、16の実数の乗算および多数の加算を必要とする。その代わりに、本発明のプロセッサ素子100は、もっと効率的にギブンズ回転を行うために、二つの複素数と二つの複素数を使用する乗算装置を使用する。引用によって本明細書の記載に援用した、「複素数乗算装置回路」という名称の、発明者A.グリーンバーガーの、1999年6月14日付の米国特許出願第09/333,071号が、この乗算装置について詳細に記載している。
【0059】
さらに、複素数乗算装置部分104は、最後の加算装置段の入力に戻される出力からのフィードバックを含む。より詳細に説明すると、z1(5)−Z4(5)で示す複素数出力は、図に示すように、マルチプレクサ118−1および118−2を通して、レジスタ・ファイル106に書き込むことができる。z1(5)出力は、可能な被乗数入力としてフィードバックされる。z2(4)およびz4(4)出力は、それぞれ、マルチプレクサ120−1および120−2およびレジスタ122−1および122−2を通して、olaおよびolbとして、近隣のプロセッサ素子の左に送ることができる。
【0060】
レジスタ・ファイル106のポートr1は、入力iraおよびirbを通して、プロセッサ素子からその右に送られる、最高二つの複素数語により、書き込むことができる。iraおよびirb入力の数値は、olaおよびolbを通って左に進む。入力itaおよびitbにより、データは、近隣のプロセッサ素子を通らないで、それぞれ、マルチプレクサ124−1および124−2を通って、直接プロセッサ素子100に入力することができる。
【0061】
複素数乗算装置部分104の入力a2およびa4は、それぞれ、マルチプレクサ126−1および126−2の出力により駆動される。乗算装置部分104のzl(4)−z4(4)出力は、図に示すように、レジスタ127−1、127−2、127−3および127−4に送られる。
【0062】
図8は、図7の複素数乗算装置部分104で実行することができる、2複素数×2複素数用の乗算装置150のブロック・アーキテクチャである。図8の左側には、乗算処理される各複素数X1およびX2を保持する、複数の組の入力レジスタ152−1および152−2が位置する。本明細書においては、複素数X1およびX2を「乗数」と呼ぶ。図8の頂部には、乗算処理される各複素数Y1およびY2を保持する、複数の組の入力レジスタ154−1および154−2が位置する。複素数Y1およびY2は、「被乗数」と呼ばれる。
【0063】
乗算装置150は、再コード化要素156−1および156−2を使用して、左側で多重ビット再コード化を行い、また、被乗数多重要素158−1および158−2を使用して、頂部で被乗数多重形成を行う。左側の四つの実数と頂部の四つの実数の16の部分的積は、中央のボックス160内で作られる。中央のボックス内の各部分的積ボックス162−1、162−2、...、162−16は、マルチプレクサおよび加算装置を含む。
【0064】
図8の底部には、最高四つまでの複素数の結果、z1−z4の実数部および虚数部を形成するための、最後の八つの加算装置を含む、もう一つの一組の加算装置回路164が位置する。図8のz1(4)の「(4)」は、計算の際のパイプラインの段を示す。図8にはハッキリと示していないが、適当な部分的積の出力は、最後の八つの加算装置の入力に送られる。
【0065】
また、図8に示すように、z2−4(4)およびz1(4)マルチプレクサへの入力から、前段のパイプライン段に戻るフィードバック経路が設置されていて、そのため、累算を行うことができる。前の段のパイプライン段のところで加算することができる、別々の入力、a2およびa4となるの可能性を持つ、z2(4)およびz4(4)用の最後の加算装置も設置されている。図7のプロセッサ素子100においては、マルチプレクサ126−1および126−2により、これら二つの別々の入力を、ilc、r2およびa2およびils用のira、r2およびa4用のirbから、出力するようにすることができる。
【0066】
図7の非線形関数ゼネレータ102について、さらに詳細に説明する。すでに説明したように、行列計算のために必要な関数は、通常、逆平方根および逆数である。これら関数を計算するには、整級数展開、反復帰納的フォーミュラおよび補間を含む、多くの周知の数値法がある。1968年に、プレンティス・ホール社発行の、C.T.ファイクの「数学的関数のコンピュータ評価」を参照してほしい。集積回路技術が進歩したために、チップをベースとするメモリ上に、大きな「参照」テーブルを記憶することができるようになったために、補間法がもっと実用的なものになった。これらのテーブルは、通常、点の格子上の関数に対するデータを含み、そのため、必要な点の関数を補間法により計算することができきる。この補間技術の一つの利点は、広い範囲にわたって効果的に機能する任意の関数に適用できることである。そのため、異なる機能を発生するために、同じまたは類似のハードウェア・エンジンを使用することができる。
【0067】
図9は、非線形関数ゼネレータ102の例示としての実施形態である。ゼネレータ102は、式(10)、(11)および(12)が示すギブンズ回転を計算するために使用される。図9の場合には、陰をつけた要素は、複素数を処理し、陰をつけていない要素は実数だけを処理する。ゼネレータ102は、対応する実数部および虚数部の平方の合計として、それぞれ、複素数Y1およびY2の絶対値の平方を生成する、要素170−1および170−2を含む。ギブンズ回転の場合には、合計要素172が、平方計算要素170−1および170−2の出力の合計、|a11|2+|a21|2を発生する。この合計は、逆平方根ゼネレータ174に入力として送られる。入力合計の2進小数点が位置する場所を示すために、数qも、平方根ゼネレータ174に入力とし送られる。入力合計は、2進小数点の右のすべてのビットが、その数の小数部分、すなわち、その数の1より小さい部分を示す、「固定小数点」フォーマットの2進数である。
【0068】
図10は、図9の逆平方根ゼネレータ174の詳細図である。この実施形態の場合には、平方根ゼネレータ174は、二次補間装置180として実行される。正規化要素182は、その数を、1より大きいかまたは等しく、4より小さい領域内に正規化する。この正規化機能を実行するのに適している技術については、図25、26および27を参照しながら、詳細に説明する。
【0069】
正規化要素182の出力は、領域1/2−1内の符号がついていない正規化した数値であり、および正規化した数値を入手するために、入力のシフトしなければならないビット数を示す、符号がついている指数である。図10に示すように、正規化した数値の多数の最上位のビットは「オフセット」と呼ばれ、予め計算したテーブルを含むメモリ184へのアドレスとして使用される。メモリ184の出力は、補間の際に使用される三つの係数a、bおよびcである。オフセットの右側の正規化した数値の最下位のビットは、「dx」と呼ばれる。要素186が発生したdxおよびその平方は二次補間装置180に送られ、この補間装置は、dx2+bdx+cの形の出力仮数を計算する。
【0070】
結果として得られた仮数の精度は、メモリ184の大きさの関数である。オフセットのためにもっと多くのビットを使用する場合には、もっと大きなメモリが必要になり、その結果、仮数の精度は向上する。テーブル1は、異なるテーブル・サイズで達成可能な精度を示す。エラーは全領域にわたる、最悪ミニマックス相対エラーである。例えば、(14+17+24)ビットの96語の容量を持つメモリは、3.1×10-7の最悪の場合のエラーを生み出すことができる。
【0071】
図10の同じハードウェアの大部分は、逆数計算に再使用することがある。もちろん、逆数用のテーブルを記憶するには、別のメモリが必要になる。
【表1】
【0072】
再び図9について説明すると、非線形関数ゼネレータ102は、さらに、別の組の乗数188−1、188−2および188−3を含む。これら乗数は、式(10)−(12)で必要な三つの数値を生成する。固定小数点乗数の後で、対応するたる形シフタ190−1、190−2および190−3は、結果を非正規化(denormalize)するために、上記指数を使用する。一番下の右の「z1(4)へ」のところの出力は、図8の一番下に「非線形から」と表示されているマルチプレクサへ送られる。
【0073】
図9の非線形関数ゼネレータ102は、一段の回路の形をしてて、数値はY1およびY2入力に入力され、保持され、最終的には三つの結果が表示される。しかし、例示としての実施形態の場合には、上記回路は、好適には、パイプライン処理され、そのため、他のいくつかのものを計算しながら、新しい逆平方根の計算を始めることができるものであることが好ましい。
【0074】
図11は、図9の非線形関数ゼネレータ102の、上記パイプライン処理の実施形態の一例を示す。この実施形態の場合には、ゼネレータ102は、垂直方向の矢印で示す場所にレジスタを設置することにより、または、例えば、1996年の、IEEE J半導体回路31巻、3号の376ページ掲載の、M.ハシャミおよびB.A.ウーリイの「250MHzの傾斜クロックパイプライン処理接続バッファ」に記載されている技術のような、当業者であれば周知のもっと進んだ技術を使用してパイプライン処理される。各パイプライン段の待ち時間はφである。全計算を通しての全待ち時間は5φであるけれとも、各φ毎に新しい計算を始めることができる。それ故、計算のピーク時には、c、sの五つの重畳している計算を行うことができ、式(10)−(12)の更新した数値が同時に計算されるが、φの倍数により時間的に分離している。
【0075】
レジスタ・ファイル106のアーキテクチャについて、さらに詳細に説明する。必要な行列演算のあるものを行うためには、サイクル毎に四つの複素数語を処理する速度で、レジスタ・ファイル106に記憶している数値にアクセスしなければならない。例えば、二つの複素数乗数、および二つの複素数被乗数を、図8の乗算装置150のXおよびY入力に供給しなければならない。図7のプロセッサ素子アーキテクチャの場合には、これら複素数語のうちの二つは、レジスタ・ファイル106のポートr1から供給され、これら複素数語のうちの他の二つは、レジスタ・ファイル106のポートr2から供給される。それ故、これらポートのうちの所与の一つは、同時に二つの複素数語を取り出すように設計されている。
【0076】
図12は、所与のプロセッサ素子の、レジスタ・ファイル106内の語190のアレーである。図12は、また、三つのポートのうちの一つを解読するための語線も示す。この実施形態のレジスタ・ファイル106は、各語が、例えば、16ビットのような、所与の数を保持する、四つのリアルな語の幅を持つように構成される。語は、簡単に図示してあるように、0から3で示す四つの列に常駐する。一つのポート用の語線デコーダ200は、行アドレスおよび制御情報を取入れ、その左側の一本の語線、およびその右側の一本の語線を能動状態にすることができる。上記目的のために、水平方向の一点鎖線で示すように、二つの行はペアになっている。デコーダ200は、同じ二重の行の左側の一本の語線および右側の一本の語線を駆動しさえすればよい。列0および1、または列2および3の複素数語のビットの、物理的レイアウトは図示する必要はないが、必要な任意の順列に並べられている左から右へのある順序を持つことができる。
【0077】
所与の複素数語は、二つの隣接する実数語を含み、一方の語は実数部を表わし、他方の語は虚数部を表わす。この例の場合には、図12の列0の各語は実数であり、列1の同じ行の各隣接する語は、関連する虚数部である。同様に、列2は実数部を保持し、列3は他の複素数語の虚数部を保持する。
【0078】
テーブル2は、8×8行列の要素の行列図である。各要素は複素数である。行列の二つの隣接する列のすべての要素は、一つのプロセッサ素子のレジスタ・ファイル106に記憶される。陰をつけた部分は、第一のプロセッサ素子の、レジスタ・ファイルに記憶される、第一の二つの列を示す。
【表2】
【0079】
テーブル3は、テーブル2の陰をつけた要素が、図12のレジスタ・ファイル106の行および列にどのように記憶されるかを示す。テーブル3においては、上記二つの「行列図」の列が、どのようにしてレジスタ・ファイルに、靴紐のパターンで記憶されるかを示すために、テーブル2の第一の列からの要素だけに陰がつけてある。
【表3】
【0080】
テーブル3の記憶スキームの利点は、このスキームを使用した場合には、各ポートが、テーブル2の「行列図」の同じ行または同じ列上の、隣接する二つの複素数語にアクセスすることができることである。以下に説明するように、この機能は、プロセッサ素子のアレー上での、効率的なマトリックス−マトリックス乗算の際に使用される。テーブル4は、同じ結果、すなわち、同じ「行列図」の行または列上のとちらかの隣接する、二つの複素数語にアクセスすることができる、レジスタ・ファイル106の第一の二つの行用の別の記憶スキームである。
【表4】
【0081】
図13は、レジスタ・ファイル106の所与のポートに関連するクロスバー・スイッチ210である。このスイッチは、図に示すように配置されている、マルチプレクサ212−1、212−2、212−3および212−4、およびドライバ214−1、214−2、214−3および214−4を含む。図の一番下の部分には、テーブル3に示すレジスタ・ファイルの列のビット線に取り付けられているバスが位置する。この図の一番上の部分には、cmplxaおよびcmplxbと表示されている、二つの複素数語の幅を持つバスが位置している。上記バス、cmplxaおよびcmplxbは、両方で図7のポートr1またはr2のうちの一方を形成する。
【0082】
クロスバー・スイッチ210は、マルチプレクサ212−1、212−2、212−3および212−4の制御入力に供給された「逆」信号を通して、二つの複素数語の順序を反対するオプションを含む、図の一番上および一番下のところの二組のバスの二方向相互接続を行う。「逆」ロジック信号だと断定されない場合には、コラム0オプション1はcmplxaに接続され、列2および3はcmplxbに接続される。「逆」ロジック信号と断定される場合には、相互接続は反対になる。クロスバー・スイッチ210の方向性は、「書込み」信号および「読出し」信号により制御される。一度に断定されるのは、これら信号のうちの一方だけである。「書込み」信号と断定された場合には、データはスイッチ210を通って下方に流れ、レジスタ・ファイルの内容はそのポートを通して書き込まれる。「読出し」信号であると断定された場合には、データはスイッチ210を通って上方に流れ、レジスタ・ファイル106の内容は、そのポートを通して読み出される。
【0083】
テーブル3の記憶スキームと、図13のクロスバー・スイッチ210とを組み合せることにより、「行列図」の行または列どちらかの上の、隣接する二つの複素数語に順次アクセスすることができ、以下に説明するように、高性能のマトリックス−マトリックス乗算を行うことができる。テーブル5は、二つの行2、3上に常駐する、種々のペアにアクセスするためのレジスタ・ファイル106およびクロスバー・スイッチ210の使用方法のいくつかの例を示す。
【表5】
【0084】
テーブル6は、図の一番上の部分において、図12のレジスタ・ファイル106に入る可能な制御フィールドを示す。drowの他に、二つの行のうちのどれを使用すべきかを示す多重ビット・フィールド、およびアクセスは単一複素数語に対してのものなのか、または二重複素数語に対してのものなのかを示す1ビット・フィールドsd、およびsd=単一である場合に、列番号を示し、sd=二重である場合に、二つの複素数語が、同じ行上に存在するのか、同じ列(行列図)上に存在するのかを示す1ビット・フィールドx、および二つの可能な列の列またはスタート列を示す1ビット・フィールドcが存在する。
【表6】
【0085】
本発明は、複素数計算、すなわち、複素数を含む計算を実行する際に使用するのに特によく適している。しかし、本発明は実数値だけを含む計算にも使用することができる。例えば、図12に示すようなレジスタ・ファイルが、実数だけを含んでいると仮定しよう。当業者であれば、複素数計算に関連する上記技術を、簡単な方法で、一つの行または一つの列上の、四つの連続している実数値にアクセスできるように、修正することができることは周知であろう。より詳細に説明すると、図12のデコーダ200は、一つを各列内の各語にというふうに、語線の数を、二重に出力するように構成することができる。テーブル7は、実数の行列の四つの列の語を、これを行うためのレジスタ・ファイルのコラム0−3に、どのような方法で記憶させことができるかを示す。
【表7】
【0086】
この実数計算をサポートするためのクロスバー・スイッチは、図13のスイッチ210より大きい。また、マトリックス−マトリックス乗算が、レジスタ・ファイル106および乗算ハードウェアを完全に使用することができるように、図8の乗算装置150の一番下の最後の加算装置の数は16に増大しなければならない。
【0087】
<プロセッサ素子の線形アレー>
高い効率で行列演算を行うために、上記のように構成されている多数のプロセッサ素子は、線形アレーの形に相互接続される。異なるプロセッサ素子相互接続技術は、通常、例えば、QR分解、逆置換、マトリックス反転、マトリックス−マトリックス乗算、および共解散および相互相関の形成のような、異なるタイプの計算のために使用される。
【0088】
図14は、左側に一つのヘッド・プロセッサ素子222、その右側に16の通常のプロセッサ素子を含むプロセッサ素子の17の素子の線形アレー220である。各プロセッサ素子は、その最も近い隣接プロセッサ素子と二方向相互接続を持つ。各プロセッサ素子は、また、図7の(入力頂部用の)表示「it」に対応する、下向き矢印で示す頂部からの外部入力を持つ。この線形アレー構成は、17×16行列式上でQR分解を行ったり、逆置換を行ったりするのに適している。これについては、以下にさらに詳細に説明する。
【0089】
図15は、左側に一つのヘッド・プロセッサ素子232、およびその右側に三つの通常のプロセッサ素子を含むプロセッサ素子の4素子線形アレー230である。図は、時計方向の円形相互接続を示す。この構成は、以下に説明する方法により、マトリックス−マトリックス乗算を行うことができる。この場合、一番左側のプロセッサ素子232は、通常、ヘッド・プロセッサ素子に関連する上記の非線形関数能力を持つ必要はない。
【0090】
図16は、左側に一つのヘッド・プロセッサ素子242を持ち、その右側に四つの通常のプロセッサ素子を持つプロセッサ素子の5素子線形アレー240である。時計方向の円形相互接続は、最も左側の四つのプロセッサ素子、および四番目のプロセッサ素子から五番目のプロセッサ素子への、左から右への一つの追加の接続用に形成される。この構成は、以下に説明するように、最も左の四つのプロセッサ素子において、共分散行列の計算を、最も右のプロセッサ素子において、相互相関関係ベクトルの計算を行うことができる。この場合もまた、最も左のプロセッサ素子242は、通常、ヘッド・プロセッサ素子に関連する非線形関数能力を持つ必要はない。
【0091】
図14−図16に示すような、本発明のプロセッサ素子の線形アレーは、通常、種々の演算を行うように構成されているポート、演算回路、およびレジスタ・ファイルを含む。図14−図16に示すタイプのプロセッサ素子のアレーは、所与の時間に、アレー内の各プロセッサ素子が、それ自身のデータに対して、個々の演算または命令を実行することができることを意味する、多重命令多重データ(MIMD)と呼ばれる、クラスであると見なすことができる。アレーの機能を制御するために、プログラムを使用することができる。このプログラム制御は、例えば、1991年9月13日付のサイエンス253巻、1233ページ掲載の、J.A.フイッシャおよびB.R.ラウの「命令レベルの並列処理」記載の、超長命令語(VLIW)と呼ばれるクラスのものであってもよい。一つの長い命令語は、アレーの各プロセッサ素子を制御するための、個々の動作を含むことができる。
【0092】
超長語命令は、周知の従来の技術を使用する、プロセッサの線形アレーを制御するために順番に並べることができる。一組の超長語命令を含むプログラムは、メモリに常駐している。一つの集積回路上のインスタンシエーションのために、一つのメモリ語に全部の超長語命令を保持するために、十分なビットからなる非常に広いアクセス・サイズを持つように、メモリを構成することができる。上記メモリから対応する線形アレーへの、超長語命令の転送は、図2に示すような、従来の二次元アレーの制御のために必要な転送より、簡単であることに留意されたい。
【0093】
すでに説明したように、線形アレー上での異なるアルゴリズムの実行は、プロセッサ素子間の異なる相互接続を必要とする場合がある。例えば、QR分解は、通常、アレー内の素子の数が行列に1を足した次元に等しい場合には、右端の素子からヘッド素子へのフィードバックを必要としない。マトリックス−マトリックス乗算は、通常、使用中の右側の最後の素子からヘッド素子への、フィードバック接続を必要とする。共分散および相互相関は、通常、最後の素子の隣の素子からヘッド素子への、フィードバック経路を必要とする。
【0094】
プロセッサ素子の線形アレーを備える集積回路が、異なるアルゴリズムを実行できるようにするために、追加ロジックを追加することができる。図17は、上記のような追加ロジックを含む、5プロセッサ素子線形アレー250を示す。プロセッサ素子252はヘッド・プロセッサ素子を表わす。三状態ゲート254−1、254−2、254−3および254−4は、左から右へのバス接続を、ヘッドプロセッサ素子252に戻る、フィードバック・バス256に接続している。三状態ゲートのうちの一つだけしか能動状態になることができず、すべての他のゲートは能動状態ではないので、フィードバック・バス256を駆動することはできない。同様に、マルチプレクサ258−1、258−2、258−3および258−4は、右から左への接続とヘッドプロセッサ素子252により駆動されるフィードバック・バス260の間で選択を行う。
【0095】
三状態ゲート254−1、254−2、254−3および254−4、およびマルチプレクサ258−1、258−2、258−3および258−4の制御は、アレーの相互接続を形成するために、所与のアルゴリズムの冒頭のところで、制御レジスタに静的に書込むことができる。これは、「構成可能な計算」と呼ばれるアプローチの一例である。
【0096】
複素数行列により種々の演算を行うためのプロセッサ素子のアレーは、通常、アレーにデータを供給し、アレーにどの計算を行うのかを知らせ、計算終了後に結果を受け取るための、もっと大きなシステムへのインターフェースを必要とする。例えば、アレーは、特定用途向けロジックにインターフェースを通して、接続することもできるし、またはホスト・プロセッサにインターフェースを通して、接続することもできる。ホスト・プロセッサ自身は、マイクロプロセッサ、デジタル信号プロセッサ、ワークステーション、または他の任意のタイプのデジタル処理デバイスを使用することができる。
【0097】
図18は、共プロセッサ302およびホスト・プロセッサ304を含む、処理システム300の一例である。共プロセッサ302は、一つのヘッドプロセッサ素子306および四つの通常のプロセッサ素子を含む5プロセッサ素子線形アレーを含む。線形アレーは、すでに説明したような方法で、アレー内でデータを送るために、最も近くの隣接するアレー間の接続を含む。プログラム・メモリ308は、上記のように、アレーの個々の素子の動作を制御するための、一つまたはそれ以上のプログラムを含む。アレーへの命令の適用は、周知の従来のタイプのものであってよい、プログラム・シーケンサ310により制御される。この例の各プロセッサ素子は、三つのポートを含むレジスタ・ファイルを含む。所与のプロセッサ素子の、レジスタ・ファイルのポートのうちの二つのポートは、プログラム・メモリの命令により制御されるが、第三のポートは、インターフェース・ロジック・ブロック312により独立に制御される。より詳細に説明すると、インターフェース・ロジック・ブロック312は、各プロセッサ素子用のポートr3のアドレスを制御する。インターフェース・ロジック・ブロック312は、各レジスタ・ファイルに、データを書込むことができるし、または各プロセッサ素子のポートr3を通して、各レジスタ・ファイルから、データを読み出すことができる。
【0098】
図に示すように、一つのインターフェース・ポート313が、インターフェース・ロジック・ブロック312を、ホスト・プロセッサ304の直接メモリ・アドレス(DMA)ポート314に接続している。インターフェース・ポート313を使用することにより、ホスト・プロセッサ304のメモリと、インターフェース・ロジック・ブロック312との間で、データをやりとりすることができる。もう一つのインターフェース・ポート315により、どんなデータを書き込んだり、読み出しするのかを指定するために、ホスト・プロセッサ304からプログラム・シーケンサ310に制御を渡すことができる。インターフェース・ロジック・ブロック312は、ホストDMAポートへの、またはホストDMAポート314からのデータ転送を、アレーのレジスタ・ファイルに必要な分散記憶することができる。必要なマッピングの一例は、ホスト・プロセッサ・メモリのテーブル2から、所与のプロセッサ素子のレジスタ・ファイルのテーブル3へ送られるものである。さらに、ホスト・プロセッサ304は、プログラム・シーケンサ310に、どんなプログラムを実行するのか、その実行を何時開始するのかを示すコマンドを送ることができる。プログラム・シーケンサ310は、例えば、ホスト・プロセッサ304に、特定のプログラムの実行を何時終了するのかを知らせるために、状態をホスト・プロセッサ304に送ることもできる。ホスト・プロセッサ304は、また、例えば、プログラム・メモリ308に、異なるプログラムをダウンロードするために、第二のDMAポート316および接続317を通して、共プロセッサ302のプログラム・メモリ308と直接通信することもできる。接続317は、この接続がオプションであることを示すために一点鎖線で表わす。
【0099】
共プロセッサ302は、例えば、汎用ホスト・コンピュータに、インターフェースを通して接続していて、実行する異なるプログラムとともに動的にロードすることができる、柔軟な共プロセッサとして、読出し専用メモリに、または多数の他の構成に記憶しているそのプログラムにより、一つの固定アルゴリズムを実行する特定用途向けIC(ASIC)に埋設されている一つのモジュールの形で実行することができる。埋設したASIC用途の場合には、データにとっては、図18のレジスタ・ファイルのポートr3を通してよりも、各プロセッサ素子上のポートを通して直接アレーを入力し、出力したほうが便利である。
【0100】
QR分解、逆置換、マトリックス反転、マトリックス−マトリックス乗算、および共分散および相互相関の形成のいくつかの例のための、本発明のプロセッサ素子の線形アレーの動作を以下に詳細に説明する。
【0101】
<QR分解>
すでに説明したように、QR分解は、二次元三角収縮アレーを使用して、従来技術により達成される。この節においては、図14に示す本発明の線形アレー上で、同じアルゴリズムを、かなり少ないハードウェアを使用して、ほとんど同じ性能で実行する方法について以下に説明する。
【0102】
図2示すものから図14に示すものへの、相互接続のマッピングについて、最初に説明する。以下に説明するように、仮想の二次元三角アレーは、物理的な一次線形アレーにマッピングすることができる。三角形のアレーの丸い(ronud)各ヘッドプロセッサ素子は、線形アレーの一つのヘッドプロセッサ素子にマッピングされる。丸いプロセッサ素子の右に隣接する、三角アレーの四角い(square)通常の各プロセッサ素子は、丸いプロセッサ素子の右に隣接する線形アレーの通常のプロセッサ素子にマッピングされる。このパターンは継続して行われる。図14の線形アレー220のプロセッサ素子間の相互接続は、二方向の相互接続である。二次元三角アレーの一つの素子は、データをすぐ下の列の送り、これは線形アレーでマッピングされ、データを左に送る。このようにして、二次元三角アレー上で行われたすべての計算は、線形アレーにマッピングされるが、例外が一つだけある。すなわち、二次元の場合に可能な本当の平行状態ではなく、線形アレーは、行列の新しいコラム上で計算がスタートする度に、計算を位相φだけずらさなければならないことである。そうすることにより、以下により詳細に説明するように、QR分解の全待ち時間が若干長くなる。
【0103】
この例の場合には、図7のレジスタ・ファイルの唯一の使用方法は、結果が発生した場合、その結果を書き込むことである。上記結果はレジスタ・ファイル内に残り、プロセッサにより書き戻す際には示されない。
【表8】
【0104】
図8は、図14の線形アレー220のプロセッサ素子のための、可能な一組の命令を示す。ニーモニックは最初のコラム内に表示されている。第二および第三のコラム内の「y」は、ニーモニックが、それぞれ、丸いまたは四角いプロセッサ素子に、適用することができることを示す。第四のコラムは、命令の実行内容を示す。説明が示すように、頂部または右側からロードすることができる各プロセッサ素子の入力のところに、「g1」レジスタが位置するものと仮定する。
【0105】
テーブル9は、テーブル8に示す命令を使用して、QR分解を行うプログラムである。「cstv2」の2ように、ニーモニックに続く数字は、プロセッサ素子により無視されるもので、プログラムの理解を助けるために、ソース・コードだけに存在するものである。入力ばブランクである場合には、「noop」命令お実行すべきことを示す。「noop」は、新しい計算をスタートしない。しかし、進行中の任意の前の計算に対しては、パイプライン処理を続行する。一番上の行は列の意味を示す。第一列は、ステップおよびサブステップで測定した経過時間のカウントを示す。サブステップは、テーブルの1行を占有し、パイプラインの説明の上に示す長さの時間を必要とする。この例の場合、命令の終了の待ち時間は5φであり、一つのステップと等しい。第二から第八までの列は、図14の17のプロセッサ素子を制御する命令に対応する。
【0106】
このテーブルの一つの行は、超長語命令と見なすことができる。プロセッサ素子の線形アレーを制御するための超長語命令を順番に並べる方法は、当業者にとっては周知のものである。
【0107】
テーブル9のプログラムの開始の近くの、各ステップの第一のサブステップ上でだけ、命令をスタートさせることができることに留意されたい。何故なら、次の命令は、前の命令の結果を必要とし、待ち時間が一つのステップであるからである。しかし、ステップ4のサブステップ2に到達した場合には、ゼロがすでに二つ存在し、プログラムは、パイプラインに相互に位置する二つの「c」と「s」の計算を開始することができる。計算が、プロセッサ素子の二次元三角アレー上で行われている場合には、「cstv4」p「csrg16」は、同時に実行することができる。本発明の場合には、これら演算は完全には同時に行われないで、サブステップφだけずれる。このずれは、従来の二次元三角アレーから、本発明の一次元線形アレーへ、移行するさいに必要なプロセッサ素子の、かなりの低減からみればささいなことである。プログラムが進行するにつれて、ますます多くのパイプライン処理スロットが使用されるのを観察することができる。ステップ13により、パイプラインは「c」および「s」の5回の計算で一杯になる。プログラムが終了するまでには、パイプラインをもはや満たすことはできない。テーブル9の最後の行は、各プロセッサ素子の使用の百分率を示す。
【表9】
【0108】
上記例の場合には、三角形に変換される式の行列要素は、アレーの頂部のところの入力を通して、図14の線形アレー220に入力される。他の実施形態の場合には、三角形に変換される行列要素は、アレーで行われた前の計算により、そこに残留している状態で、アレーのレジスタ・ファイルに予め位置することができる。もう一つの他の実施形態の場合には、三角形に変換される行列要素は、図7のポートr3を通して、DMAインターフェースのような他のインターフェースにより、レジスタ・ファイルに導入される。
【0109】
すでに説明したように、二次元三角アレーを通して線形アレーへ行くための待ち時間の延長は、毎回、アルゴリズムにおいて、新しい列をゼロにするプロセスを開始する機会であり、線形アレーは、一つのサブステップφだけ遅延する。テーブル9の第二の列を見れば、例示としてのプログラムの場合には、15の新しい列をゼロに変換するための機会の回数に対応して、これが15回行われることがわかる。それ故、この例の場合には、線形アレー220が必要とする追加の待ち時間は、サブステップ15回分であり、これは3回のステップに等しい。
【0110】
テーブル10は、従来の二次元三角アレーの利点の数と、本発明のパイプライン処理の線形アレー220の利点の数との比較を示す。パイプライン処理線形アレー220は、三角アレーが必要とするプロセッサ素子の数の11%のプロセッサ素子しか必要としないが、待ち時間は6%しか増大していないことがわかる。しかし、回路設計にパイプライン段を導入した場合、パイプライン処理線形アレーの「ステップ」時間が、三角アレーのそれよりすこし長くなる恐れがある。さらに、線形アレーの各プロセッサ素子は、通常、二次元三角アレー全体にわたって、例えば、分散した形で存在している一時的記憶装置よりも容量が少ない、レジスタ・ファイルの形の一時的記憶装置を含んでいなければならない。しかし、本発明を使用すれば、待ち時間をほんの少し損するだけで、QR分解を行うために必要な回路の数をかなり低減することができる。
【表10】
【0111】
<逆置換>
図19は、本発明の5素子線形アレー320である。この線形アレー320は、上記式(13)を解くための二方向相互接続を含む。QR分解プロセスの終了時に計算を行う、アレー320のヘッドプロセッサ素子322は、r行列である、r11、r22、r33およびr44のすべての主要な対角線方向の素子を保持する。その右に隣接するプロセッサ素子は、右に隣接する対角線方向の素子、すなわち、r12、r23、r34およびy4を保持する。
【0112】
テーブル11は、図19の線形アレー320が、式(13)を解く方法の全体的な概要を示す。
【表11】
【0113】
ステップ1においては、ヘッド・プロセッサ素子322で、r44の逆数が計算される。この逆数もrnd1で示す。ステップ2においては、ヘッド・プロセッサ素子は、r44の逆数に、sqr2で示す上記プロセッサ素子からその右に送られた、y4の数値を掛けることにより、x4の解を計算する。ステップ3においては、ヘッド・プロセッサ素子は、r33の逆数を計算する。その右(sqr2)の通常のプロセッサ素子は、その左からそこに送られてきたx4と、そのレジスタ・ファイルに記憶しているr34とを掛ける。得られる積が、右からそこへ送られてきたy3の数値から引かれる。ステップ4においては、ヘッド・プロセッサ素子は、r33の逆数に、右からそこへ送られてきたy3−r34x4を、掛けることによりx3を計算する。sqr3で示す第三のプロセッサ素子は、同様に、y2−r24x4を計算する。図に示すように、このプロセスは、x1の解が得らるステップ8まで継続して行われる。乗算が行われるすべての場所は太字で示す。ステップ5において、プロセッサ素子、sqr2が行う計算の中で、必要な乗算はr23x3だけであることに留意されたい。残りは右からそこへ送られる。これらステップの待ち時間は、図に示していない。実際には、ある種の演算は前もって行うことができる。例えば、r33の逆数の計算は、逆数r44の計算がスタートした後、一回のサブステップ時間が経過した後で、スタートすることができる。この特定のアルゴリズム用のパイプラインの充填効率は低いことに留意されたい。
【0114】
<マトリックス反転>
すでに説明したように、QR分解を行った後で、共通のRを共有する多重逆置換を行うことにより、行列を反転することができる。この節においては、ただ一回の逆置換を行う間の、全待ち時間を少し長くするだけで、パイプライン処理素子の線形アレー上で、複数の逆置換を可能にする方法について説明する。
【0115】
式(18)の複数の逆置換問題は、共通の行列Rを共有しているので、Rの主な対角線方向の要素だけの逆数をjのすべての数値に対して一回計算しさえすればよい。
【表12】
【0116】
テーブル12は、QR分解の終了時に、プロセッサ素子の8素子線形アレーのレジスタ・アレーに記憶しているものを示す。レジスタ・ファイルの内容は、式(18)の素子である。
【表13】
【0117】
テーブル13は、本発明の8素子線形アレーが、行列を反転する方法を示す。このテーブルは、基本的には、アレーの未使用のパイプライン段にインターリーブした、テーブル11の例の四つのコピーを示す。図7の例示としての実施形態の場合には、1回のサイクルの間に、二つまでの複素数を右から左に移動させることができ、他の二つまでの複素数を左から右に移動させることができる。テーブル13の反転例は、1サイクル当りの一つのプロセッサ素子当り、せいぜい一回の複素数乗算しか行わないが、一方、ハードウェアは、一つのプロセッサ素子当りの1サイクル当り、一回以上の乗算を行うことができる。さらに、多くの利用可能な多くの追加の未使用のサブステップが、パイプライン内に存在する。当業者であれば、実際に、マトリックス反転の解を見つけだすために、その内部で、Rの逆数および対角線方向に位置しない素子が右に移動し、部分的な結果が左に移動する、多くの可能な命令の組およびプログラムの解が存在することを理解することができるだろう。四つの逆置換を行うための全待ち時間が、一回だけ逆置換を行うための待ち時間より、8%しか長くないこと、およびアレーのパイプラインは、多くの残りのアイドルなプロセッサ素子について、まだ少ししか使用されていないことに留意されたい。
【0118】
<マトリックス−マトリックス乗算>
この節においては、図15の例示としての線形アレー230を使用して、第三の複素数行列、AB≡Cを形成するために、8×8複素数行列を掛け算する方法を説明する。使用する技術の場合、計算は、ブロックまたは部分行列に分割される。図20は、16の2×2の積の部分行列に分割された、8×8複素数積行列Cを示す。この図においては、c35、c36、c45およびc46を示す、一つの部分行列を強調してある。以下に示す例の場合には、図15の四つの素子アレー230の各プロセッサ素子は、図20の四つの列のうちの一つを計算するために専用に使用される。この場合、左から三番目のプロセッサ素子により計算される部分行列を強調してある。図20の四つの行のうちの一つの行全体が、アレーの四つのプロセッサ素子により同時に計算される。
【0119】
図20の一つの行を処理している間に、アレー230は、アレーを通してAの行の数値を循環させる。一方、Bの行は指定のプロセッサ素子に留まる。図21は、マトリックス−マトリックス乗算の一つのステップを示す。Aの行1および行2上の複素数の数値のペアは、各プロセッサ素子の、ilcおよびils入力(図7参照)上で、入手することができる。これらのペアの数値には、各プロセッサ素子のBの二つの列からの一組の複素数が掛けられる。図22は、複数の組の数値が、次のプロセッサ素子の方向へ時計方向にシフトされ、次の乗算がスタートする次のステップを示す。上記四つのステップが行われた後で、Aの同じ二つの行上の数値の他の組、すなわち、a12、a22、a14、a24、a16、a26、a18、a28がロードされ、さらに四つのステップに対してプロセスが続行される。この時点において、Cの行1および2のすべての結果を生成するために、必要な、すべての乗算がスタートする。その後で、同じプロセスが、行3および4に対して再びスタートする。
【表14】
【0120】
テーブル14は、マトリックス−マトリックス乗算を行うために、テーブル8にすでに示した命令の組に追加できる、いくつかの可能な命令を示す。テーブル15内は、第三の複素数行列、AB≡Cを形成する目的で、二つの8×8複素数行列を乗算するために、図15の線形アレー230を制御するためのプログラムを示す。このプログラムの冒頭のところに、AおよびBの最初の二つの列が、左側において、第一のプロセッサ素子に記憶されている。第三および第四の列は、第二のプロセッサ素子等にすでに記憶されている。すでに形成済みの積Cの最初の二つの列は、第一のプロセッサ素子に保持され、第三および第四の列は第二のプロセッサ素子等の内部に保持去れる。テーブル15のプログラム・リストにおいては、第一の四つの列は、使用する命令ニーモニックを含む。四つの連続しているラインは、四つのプロセッサ素子を、それぞれ、制御するための個々の命令を示す。ニーモニックの右側の列の内部には、レジスタ・ファイルに対する二つの各ポートの制御を示すフィールドに対する数値を示す。フィールド名、drow、xおよびcは、テーブル6の制御に対応する。
【表15】
【0121】
テーブル15のプログラムは、初期値を含む各プロセッサ素子の二つのgレジスタ、および二つの入力左レジスタをロードすることによりスタートする。次のサブステップは、四つのクロス乗積の乗算をスタートし、A値をアレーの周囲での時計方向のシフトをスタートする。次の命令は、累算Cクロス乗積に加算するために、乗算−累算命令をスタートする。サブステップ1/4においては、Aの新しい数値をレジスタ・ファイルから読み出す。サブステップ2/3においては、各プロセッサ素子のC内の四つの素子、すなわち、第一プロセッサ素子のc11、c12、c21およびc22、第二のプロセッサ素子のc13、c14、c23、c24等の計算を終了するために、最後の乗算−累算がスタートする。パイプラインの待ち時間のために、これらの結果は、サブステップ3/3まで、レジスタ・ファイルに書き戻されない。一方、アレーは、サブステップ2/4において、Cの次の組の数値の計算をスタートする。最後の乗算はサブステップ7/2でスタートし、パイプラインの待ち時間経過後、サブステップ8/2において、最終的な結果がレジスタ・ファイルに書き込まれる。それ故、8×8複素数マトリックス−マトリックス乗算は、アレー230上で終了するまで、40サブステップ以下の時間しか掛からない。
【0122】
複素数行列に(例えば、7×7のような)奇数の大きさを乗算するために、何時でも次の偶数の大きさに行列をゼロで充填することができ、その後で、8×8乗算のために上記手順を行うことができる。しかし、そうすると、不必要な余分な乗算を行わなければならないために、効率が低下する。当業者であれば、別の方法として、奇数の大きさの行列を処理するために、適当な命令を、テーブル14の行列に追加することができることをすぐに理解することができるだろう。
【0123】
各レジスタ・ファイルにもっと多くの列を記憶することによって、同じ大きさのアレー上で、もっと大きなアレーの乗算を行うことができる。例えば、第一のプロセッサ素子に第一の四つの列を記憶し、第二のプロセッサ素子等の上に列5−8を記憶することによって、図15の線形アレー230上で、16×16の複素数マトリックス−マトリックス乗算を行うことができる。アレーのレジスタ・ファイルに入りきらない大きさの、行列の場合には、そのような行列を入れることができる大きさのブロックに分解して、周知のブロック行列乗算方法を使用することができる。この場合には、ホスト・プロセッサ、または第三のレジスタ・ファイル・ポートを使用する専用ロジックを、ブロックの緊密に接続しているアップローディンおよびダウンローディングと協力させなければならない。
【0124】
<共分散および相互相関>
この節においては、共分散および相互相関を同時に計算するための、図16の線形アレー240の使用方法を説明する。式(23)および(24)は、共分散および相互相関を計算するためには、フォームの項、xxHおよびxydを計算しなければならないことを示す。
【0125】
上記のマトリックス−マトリックス乗算と比較すると、共分散の計算はもっと簡単である。二つのN×N行列を乗算する場合には、N3の乗算を行わなければならない。共分散だけの計算なら、N2の乗算を行いさえすればよい。下記の例の場合には、入力ベクトルx(例えば、アンテナのアレーからのデータ)、および期待値ydは、図23に示すように、頂部からアレー240内に入り、一番左の四つの各プロセッサ素子、および5番目のプロセッサ素子用のg1レジスタ用の、図7のg1、h2、ilc0(1)およびils0(1)レジスタにロードされる。次のサブステップにおいては、第一の四つの各プロセッサ素子は、前のステップにおいて、それ自身をすでに入力している二つの数値の四つのクロス乗積を計算する。例えば、左側の第一のプロセッサ素子は、四つの項、すなわち、x1x1 *、x1x2 *、x2x1 *およびx2x2 *を計算する。同時に、ilc0(1)およびils0(1)レジスタ内の数値が右に送られる。次のサブステップにおいては、第一の四つの各プロセッサ素子は、その左側にあった数値とg1、およびh2内に保持している数値との四つのクロス乗積を計算する。右側のプロセッサ素子は、二つの積、x7yd *およびx8yd *を計算する。図24は、第三のサブステップの時計方向の相互接続上のデータである。各乗算によるパイプライン遅延の終わりのところで、完了した項を、レジスタ・ファイルに書き込むことができる。別の方法としては、時間平均を更新するために、レジスタ・ファイルに記憶した前の数値により、完了した項を最初に加重し、平均することができる。その後で、図に示す例に対する共分散および相互相関を数ステップで完了することができる。当業者であれば、共分散および相互相関を計算するために、他の方法でアレーを構成し、プログラムすることができることを、理解することができるだろう。
【0126】
<平方根正規化プロセス>
図25、図26および図27を参照しながら、図10のところですでに説明した平方根正規化プロセスについて、さらに詳細に説明する。本発明のこの機能は、ある関数に対するアーギュメントの範囲縮小、および必要な機能を達成するための移行の結果の変換を助けるデジタル・ハードウェアを提供する。説明の都合上、上記関数は下記式で表わされるものと仮定する。
【数13】
【0127】
図25は、この逆平方根機能のグラフである。このグラフから、xの数値が小さい場合には、逆平方根機能が非常に急勾配になることが分かる。このグラフの陰をつけた部分は、0.5<y(x)≦1および1≦x<4の範囲に対応する。陰をつけた部分においては、関数の勾配は緩やかで、テーブル内の数値間に補間するというような周知の技術を使用して、もっと容易に達成することができる。
【0128】
図25の陰をつけた部分に対応する、縮小した範囲内の数値を生成するための正規化プロセスは、識別を使用することができる。
【数14】
nが整数である場合で、シフトが、ビット2nの偶数に制限されている場合には、「偶数」正規化を行うことができ、その場合には、二つの最上位のデータ・ビットは、ロジック1を含む。下記のテーブル16に多数の例を示す。
【表16】
【0129】
テーブル16の最初の二つの列の「=」の左側の数値は、固定小数点2進表示であり、「=」の右側の数値は十進法表示である。
【0130】
元のアーギュメントが、0.04−6の範囲内の合ったことに留意されたい。正規化されたxの範囲は、1.0≦x<4である。正規化されたxの2進小数点の位置は、任意の点である。重要なことは、最小のxに対する最大のxの比率であり、正規化後は4に等しい。しかし、1−4の範囲はxを選択するのに適した領域である。何故なら、この領域においては、関数の勾配が急でないからである。そのため、補間または他の周知の技術により、高い精度を達成することができる。
【0131】
正規化したxが決定されると、整級数展開、テーブル駆動補間法、およびニュートン−ラプソン回帰のような、当業者にとっては周知の技術を使用して、正規化した数値xの逆平方根の計算を進めることができる。
【0132】
図26は、上記の「偶数」正規化プロセスの可能なハードウェアによる実行である。正規化を行う前のアーギュメントxの隣接するビットの各ペアは、図に示すように、1である場合には、他方または両方は、ロジック1の数値を持つことを示すように、一連のORゲート325内の、対応する二つの入力ORゲートに入力することができる。図26の例の場合には、Wビットは、2進小数点の左側のすべてのビットの数を示し、この例の場合には偶数で12である。Fビットは、xの小数部分のビットの全部の数を示すが、この例の場合には8である。一連のORゲート325は、xのビットの隣接するペアの方を向いている、10のORゲートを含む。
【0133】
一連のORゲート325の出力は、現在のハードウェア正規化装置の周知のタイプの優先順位エンコーダ327の入力になる。エンコーダ327は、アーギュメントの最上位ビットの場所に近い、ロジック1の出力と一緒に、特定のORゲートに対応する2nの数値を出力する。エンコーダ327の出力のところの数値は、正規化されたxを形成するために、アーギュメントを2nだけシフトするたる形シフタ330を制御する。
【0134】
より詳細に説明すると、優先順位エンコーダ327は、左から右の方を向いている、第一のロジック1入力の位置に対応する一つの数を出力する。この例の場合には、最初の1は左から数えて第二のORゲートからのものである。ORゲートからの入力の次に示す0−18の数字は、優先順位エンコーダ327が出力する2nの数値である。それ故、この例の場合、2n=2が出力である。すでに説明したように、数値2nは一番左の位置、または一番左の位置の次の位置に、何時でもロジック1を持つ正規化した仮数を形成するために、xをシフトするたる形シフタ330を制御するために使用される。
【0135】
図26の正規化した仮数のビット部分は、「オフセット」と呼ばれるが、これについては、図10のところですでに説明した。これらのビットは、例えば、読出し専用メモリ(ROM)、または他のタイプのメモリに記憶しているテーブルのような、参照用テーブルから、関数の近似値を発見するための、アドレスとして使用することができる。この例の場合には、オフセットは、32語を含むテーブルを示す五つのビットを持つ。しかし、0≦x<1に対応する、これら語の最も下の部分は、決して参照されることはないので、参照用テーブルは24語を含んでいればそれで十分である。図26の場合も、オフセットの右側のいくつかのビットには「dx」がつけられている。これらビットは、xがオフセットの数値より大きい量を示す。線形補間アルゴリズムを使用する場合には、参照用テーブルは、y(オフセット)の数値と、オフセットのところのy(正規化したx)の勾配の両方を含む。正規化したxのところのy(正規化したx)の数値を発見するために、dxの数値にはテーブルから発見した勾配が掛けられ、オフセットのところの数値に加算される。
【0136】
正規化したxの逆平方根を計算した後で、結果を、ビットの数の半分だけ、正規化シフトの方向とは反対方向にシフトすることによって、元のアーギュメントの必要な逆平方根を入手することができる。すなわち、正規化の際に、右側へ2n=6ビットだけシフトさせた場合には、非正規化により、結果は定数+(n=3)ビットだけ、左側にシフトされる。それ故、上記識別を行うハードウェアを構成することによって、アーギュメントの範囲を容易に狭くすることができ、また結果を容易に調整することができる。
【0137】
再び図26の例について説明するが、xの2進小数点は、左から数えてWビットであることに留意されたい。参照用テーブルの数値は、テーブル16に示す左から数えて2ビット目の位置にある2進小数点に基づいている。それ故、非正規化を行うためには、たる形シフタ330によるnビットの可変シフトに加えて、(Wビット−2)/2に等しいシフトを何時でも行わなければならない。それ故、上記のy(正規化したx)の数値は、逆の方向に(n−1−(Wビット/2))ビット分だけシフトさせ、その結果、必要なy(x)とした、たる形シフタにより非正規化することができる。
【0138】
図27は、ビットの全数が奇数である場合の、正規化プロセスにおける違いを示す。この例の場合には、Wビットの数は11である。全数の数を偶数にするために、余分なゼロがxの前に追加される。この例の場合には、一組のORゲート325’は、図26の一組のORゲート325に対応するが、第一のORゲートは除去されていて、前に追加したビットの右のビットは、優先順位エンコーダ327’に直接入力される。
【0139】
逆平方根の計算に基づいて、上記正規化技術を説明してきたが、この技術は、平方根の計算にも適用することができる。この技術は、簡単な方法で、立法根等のような他の分数ベキにも適用を広げることができる。例えば、立法根の場合には、3ビットの倍数分等だけシフトするように正規化装置を構成することができる。
【0140】
上記の本発明の実施形態は例示としてのものに過ぎない。他の実施形態は、プロセッサ素子およびその線形アレーに対して他の構成を使用することができ、上記以外の計算も行うことができる。当業者であれば、添付の特許請求の範囲に含まれる、上記および多数の他の実施形態を容易に思いつくことができるだろう。
【図面の簡単な説明】
【図1】QR分解の例のための一組のギブンズ回転の各段である。
【図2】図1の例のギブンズ回転をプロセッサ素子の従来の二次元三角アレーで実行する方法である。
【図3】図1の例のギブンズ回転をプロセッサ素子の従来の二次元三角アレーで実行する方法である。
【図4】図1の例のギブンズ回転をプロセッサ素子の従来の二次元三角アレーで実行する方法である。
【図5】図1の例のギブンズ回転をプロセッサ素子の従来の二次元三角アレーで実行する方法である。
【図6】プロセッサ素子の二次元三角アレー上で実行される、従来の並列および収縮処理アプローチの比較である。
【図7】本発明の例示としての実施形態のプロセッサ素子である。
【図8】図7のプロセッサ素子の乗算装置の詳細図でである。
【図9】図7のプロセッサ素子で使用するのに適している、非線形関数ゼネレータである。
【図10】図9の非線形関数ゼネレータで使用するのに適している逆平方根ゼネレータの一実施形態である。
【図11】図9の非線形関数ゼネレータのパイプライン処理の実行である。
【図12】図7のプロセッサ素子のレジスタ・ファイルの詳細図である。
【図13】図12のレジスタ・ファイルのポートに関連するクロスバー・スイッチである。
【図14】本発明のプロセッサ素子の線形アレーのいくつかの例である。
【図15】本発明のプロセッサ素子の線形アレーのいくつかの例である。
【図16】本発明のプロセッサ素子の線形アレーのいくつかの例である。
【図17】本発明のプロセッサ素子の線形アレーのいくつかの例である。
【図18】ホスト・プロセッサと通信するコプロセッサ内のプロセッサ素子の線形アレーの一実施形態である。
【図19】例示としての逆置換操作を実行するための本発明の線形アレーの一例である。
【図20】本発明の線形アレー上で、マトリックス−マトリックス乗算を容易に行うために、その内部で、マトリックスを部分行列に分割するのを可能にする方法である。
【図21】図15の線形アレーを使用する、マトリックス−マトリックス乗算の性能である。
【図22】図15の線形アレーを使用する、マトリックス−マトリックス乗算の性能である。
【図23】図16の線形アレーを使用する共分散および相互相関の計算である。
【図24】図16の線形アレーを使用する共分散および相互相関の計算である。
【図25】本発明の、平方根正規化プロセスを使用して、実行することができる逆平方根範囲縮小のグラフである。
【図26】本発明の正規化ハードウェアの一例である。
【図27】本発明の正規化ハードウェアの一例である。
Claims (8)
- 少なくとも一つのデジタル・プロセッサ素子を含む装置であって、
前記デジタル・プロセッサ素子が、
少なくとも二つの複素数の実数部および虚数部に、別の少なくとも二つの複素数の実数部と虚数部とを掛け、それにより少なくとも16個の部分的積を形成するよう動作し、また前記部分的積の、各々が実数または虚数を表わす一つまたはそれより多くの加法組合せを形成するよう動作する演算回路と、
少なくとも第一のポートおよび第二のポートを有するレジスタ・ファイルであって、これらポートの各々が、前記レジスタ・ファイルへ、または前記レジスタ・ファイルから、二つの複素数を書き込むことができ、または二つの複素数を読み出すことができ、これらポートが、演算回路に接続されており、この演算回路は、前記複素数を前記ポートに供給し、前記ポートから前記実数または虚数を受け取るようになっているレジスタ・ファイルとを含み、
さらに、前記プロセッサ素子の線形アレーを備え、前記線形アレーにおける前記各プロセッサ素子が、前記アレーの少なくとも一つの他のプロセッサ素子に接続しており、および
前記プロセッサ素子の前記線形アレーが、さらに、一つのヘッド・プロセッサ素子と、複数の通常のプロセッサ素子とを備え、前記ヘッド・プロセッサ素子が、前記各通常のプロセッサ素子の機能のスーパーセットを供給するようになっている装置。 - 請求項1に記載の装置において、前記演算回路が、一つの演算の開始から終了までの待ち時間が、新しい演算をスタートすることができる周期よりも長くなるように構成されたパイプライン処理ロジックを含み、それにより、前記プロセッサ素子が、同時に、各演算が異なる開始時間を持つ一つ以上の演算を計算することができる装置。
- 請求項1に記載の装置において、前記レジスタ・ファイルの前記第一または第二のポートのうちの少なくとも一つが、読み出しまたは書き込みによりアクセスされる前記二つの複素数の所与の組が、一対の各語線からの同じ語線または別の語線からのものとなるように、制御可能に語線を共にペアにするロジックを含む装置。
- 請求項1に記載の装置において、前記演算回路が、さらに、前記部分的積を受け取ることができる入力を持つ少なくとも八つの加算装置を含み、前記加算装置が、前記部分的積の一つまたはそれ以上の加法組合せを形成することができ、前記各加算装置が、一つの実数または虚数に対応し、前記八つの加算装置が一緒になって、複素数の四つの和を形成することができ、また、各加算装置が、新しい入力数と以前の和と合計に対応する新しい和を累算することができるように、その入力にもどるフィードバック接続を持つ装置。
- 請求項1に記載の装置において、前記プロセッサ素子が、さらに、非線形関数ゼネレータを含む装置。
- 請求項5に記載の装置において、
前記非線形関数ゼネレータが、ある変数を固定の領域内にシフトすることにより、前記変数をスケールことができる正規化回路であって、その正規化ロジックが、前記変数をどれだけシフトしたかを示すべき指数値を出力する正規化回路と、
少なくとも1つの非線形関数に対する補間係数の数値のテーブルを記憶するためのメモリと、
選択した数の前記変数の最上位ビットだけを取り上げ、前記変数のところの前記関数における値が、前記補間係数を使用して補間を計算することにより近似できるように、選択した数の最上位ビットを、前記テーブル内の前記関数の補間係数を発見するために、アドレスとして使用するロジック回路とを備える装置。 - 請求項1に記載の装置において、前記プロセッサ素子が、さらに、パイプライン処理遅延ラインであって、前にその入力のところに現われた同じシーケンスのデジタル語を出力することができる機能を有し、前記シーケンスの複数の要素が一度に種々の段における遅延ラインを横切るパイプライン処理遅延ラインと、
前記遅延ラインの出力、または前記遅延ラインの遅延のない入力シーケンスとして、その出力を選択することができるマルチプレクサであって、前記選択が前記プロセッサ素子の入力により制御されるマルチプレクサとを備える装置。 - 線形アレーに配置されている複数のデジタル・プロセッサ素子であって、その各々が前記アレーの少なくとも1つの別のプロセッサ素子に接続されているようなデジタル・プロセッサ素子を含む装置において、少なくとも1つの前記デジタル・プロセッサ素子が、
少なくとも二つの複素数の実数部および虚数部に、別の少なくとも二つの複素数の実数部と虚数部とを掛け、それにより少なくとも16個の部分的積を形成するよう動作し、また前記部分的積の、各々が実数または虚数を表わす一つまたはそれより多くの加法組合せを形成するよう動作する演算回路と、
少なくとも第一のポートおよび第二のポートを有するレジスタ・ファイルであって、これらポートの各々が前記レジスタ・ファイルへ、または前記レジスタ・ファイルから、二つの複素数を書き込むことができ、または二つの複素数を読み出すことができるようになっており、これらのポートが、演算回路に接続されており、この演算回路が前記複素数を前記ポートに供給し、前記ポートから前記実数または虚数を受け取るレジスタ・ファイルとを含み、
さらに、前記プロセッサ素子の線形アレーを備え、前記線形アレーにおける前記各プロセッサ素子が、前記アレーの少なくとも一つの他のプロセッサ素子に接続しており、および
前記プロセッサ素子の前記線形アレーが、さらに、一つのヘッド・プロセッサ素子と、複数の通常のプロセッサ素子とを備え、前記ヘッド・プロセッサ素子が、前記各通常のプロセッサ素子の機能のスーパーセットを供給するようになっている装置。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13842399P | 1999-06-10 | 1999-06-10 | |
US09/556760 | 2000-04-21 | ||
US60/138423 | 2000-04-21 | ||
US09/556,760 US6675187B1 (en) | 1999-06-10 | 2000-04-21 | Pipelined linear array of processor elements for performing matrix computations |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2009234277A Division JP5491122B2 (ja) | 1999-06-10 | 2009-10-08 | 行列計算を行うためのプロセッサ素子のパイプライン処理線形アレー |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2001056808A JP2001056808A (ja) | 2001-02-27 |
JP4422299B2 true JP4422299B2 (ja) | 2010-02-24 |
Family
ID=26836183
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000174354A Expired - Fee Related JP4422299B2 (ja) | 1999-06-10 | 2000-06-09 | 行列計算を行うためのプロセッサ素子のパイプライン処理線形アレー |
JP2009234277A Expired - Fee Related JP5491122B2 (ja) | 1999-06-10 | 2009-10-08 | 行列計算を行うためのプロセッサ素子のパイプライン処理線形アレー |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2009234277A Expired - Fee Related JP5491122B2 (ja) | 1999-06-10 | 2009-10-08 | 行列計算を行うためのプロセッサ素子のパイプライン処理線形アレー |
Country Status (2)
Country | Link |
---|---|
US (1) | US6675187B1 (ja) |
JP (2) | JP4422299B2 (ja) |
Families Citing this family (85)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6675187B1 (en) * | 1999-06-10 | 2004-01-06 | Agere Systems Inc. | Pipelined linear array of processor elements for performing matrix computations |
US7080183B1 (en) * | 2000-08-16 | 2006-07-18 | Koninklijke Philips Electronics N.V. | Reprogrammable apparatus supporting the processing of a digital signal stream and method |
US7072929B2 (en) * | 2000-11-01 | 2006-07-04 | Pts Corporation | Methods and apparatus for efficient complex long multiplication and covariance matrix implementation |
JP2002333978A (ja) * | 2001-05-08 | 2002-11-22 | Nec Corp | Vliw型プロセッサ |
US7418536B2 (en) * | 2001-07-30 | 2008-08-26 | Cisco Technology, Inc. | Processor having systolic array pipeline for processing data packets |
US7069372B1 (en) * | 2001-07-30 | 2006-06-27 | Cisco Technology, Inc. | Processor having systolic array pipeline for processing data packets |
US7382787B1 (en) | 2001-07-30 | 2008-06-03 | Cisco Technology, Inc. | Packet routing and switching device |
AU2002355550A1 (en) * | 2001-08-07 | 2003-02-24 | Board Of Trustees Operating Michigan State University | Self-programmable chip |
US20030052711A1 (en) * | 2001-09-19 | 2003-03-20 | Taylor Bradley L. | Despreader/correlator unit for use in reconfigurable chip |
US7218624B2 (en) | 2001-11-14 | 2007-05-15 | Interdigital Technology Corporation | User equipment and base station performing data detection using a scalar array |
TW518833B (en) * | 2001-12-12 | 2003-01-21 | Defence Dept Chung Shan Inst | Decoding method and circuits for comma-free reed-Solomon codes |
JP2003242133A (ja) * | 2002-02-19 | 2003-08-29 | Matsushita Electric Ind Co Ltd | 行列演算装置 |
US7051263B2 (en) * | 2002-04-12 | 2006-05-23 | Chung Shan Institute Of Science And Technology | Systolic architecture for Comma-Free Reed-Solomon decoding circuit |
US6944813B2 (en) * | 2002-04-12 | 2005-09-13 | Chung Shan Institute Of Science And Technology | Weighted decoding method and circuits for Comma-Free Reed-Solomon codes |
US7710991B1 (en) | 2002-06-20 | 2010-05-04 | Cisco Technology, Inc. | Scalable packet routing and switching device and method |
US7525904B1 (en) | 2002-06-20 | 2009-04-28 | Cisco Technology, Inc. | Redundant packet routing and switching device and method |
US7450438B1 (en) | 2002-06-20 | 2008-11-11 | Cisco Technology, Inc. | Crossbar apparatus for a forwarding table memory in a router |
US7536476B1 (en) | 2002-12-20 | 2009-05-19 | Cisco Technology, Inc. | Method for performing tree based ACL lookups |
CN1930783A (zh) * | 2004-02-25 | 2007-03-14 | 三菱电机株式会社 | 接收装置 |
ITMI20040600A1 (it) * | 2004-03-26 | 2004-06-26 | Atmel Corp | Sistema dsp su chip a doppio processore a virgola mobile nel dominio complesso |
JP2006099232A (ja) * | 2004-09-28 | 2006-04-13 | Renesas Technology Corp | 半導体信号処理装置 |
US7889712B2 (en) * | 2004-12-23 | 2011-02-15 | Cisco Technology, Inc. | Methods and apparatus for providing loop free routing tables |
WO2007037716A1 (en) * | 2005-09-30 | 2007-04-05 | Intel Corporation | Communication system and technique using qr decomposition with a triangular systolic array |
US7899857B2 (en) * | 2005-12-30 | 2011-03-01 | L3 Communications Corporation | CPU datapipe architecture with crosspoint switch |
US8045021B2 (en) * | 2006-01-05 | 2011-10-25 | Qualcomm Incorporated | Memory organizational scheme and controller architecture for image and video processing |
JP4657998B2 (ja) | 2006-07-21 | 2011-03-23 | ルネサスエレクトロニクス株式会社 | シストリックアレイ |
US8346831B1 (en) * | 2006-07-25 | 2013-01-01 | Vivante Corporation | Systems and methods for computing mathematical functions |
US7760748B2 (en) * | 2006-09-16 | 2010-07-20 | Mips Technologies, Inc. | Transaction selector employing barrel-incrementer-based round-robin apparatus supporting dynamic priorities in multi-port switch |
US7990989B2 (en) * | 2006-09-16 | 2011-08-02 | Mips Technologies, Inc. | Transaction selector employing transaction queue group priorities in multi-port switch |
US7773621B2 (en) * | 2006-09-16 | 2010-08-10 | Mips Technologies, Inc. | Transaction selector employing round-robin apparatus supporting dynamic priorities in multi-port switch |
US7961745B2 (en) * | 2006-09-16 | 2011-06-14 | Mips Technologies, Inc. | Bifurcated transaction selector supporting dynamic priorities in multi-port switch |
JP2009075676A (ja) * | 2007-09-18 | 2009-04-09 | Nec Electronics Corp | マイクロプロセッサ |
EP2224347A1 (en) * | 2007-11-22 | 2010-09-01 | NEC Corporation | Systolic array and calculation method |
TW200925559A (en) * | 2007-12-05 | 2009-06-16 | Univ Nat Central | Adaptive real-time analyzing method for dynamic signals generated by rotating machines |
US8307021B1 (en) | 2008-02-25 | 2012-11-06 | Altera Corporation | Hardware architecture and scheduling for high performance solution to cholesky decomposition |
US8782115B1 (en) * | 2008-04-18 | 2014-07-15 | Altera Corporation | Hardware architecture and scheduling for high performance and low resource solution for QR decomposition |
US8533251B2 (en) | 2008-05-23 | 2013-09-10 | International Business Machines Corporation | Optimized corner turns for local storage and bandwidth reduction |
US8250130B2 (en) * | 2008-05-30 | 2012-08-21 | International Business Machines Corporation | Reducing bandwidth requirements for matrix multiplication |
US9318813B2 (en) | 2009-05-22 | 2016-04-19 | Maxlinear, Inc. | Signal processing block for a receiver in wireless communication |
US8417758B1 (en) | 2009-09-01 | 2013-04-09 | Xilinx, Inc. | Left and right matrix multiplication using a systolic array |
US8473539B1 (en) | 2009-09-01 | 2013-06-25 | Xilinx, Inc. | Modified givens rotation for matrices with complex numbers |
US8510364B1 (en) | 2009-09-01 | 2013-08-13 | Xilinx, Inc. | Systolic array for matrix triangularization and back-substitution |
US8473540B1 (en) | 2009-09-01 | 2013-06-25 | Xilinx, Inc. | Decoder and process therefor |
GR1007291B (el) | 2009-10-01 | 2011-06-01 | Intracom Telecom, | Αντιστροφη πινακα δια εφαρμογης qr αποδομησης επι αρχιτεκτονικης δομης παραλληληλης διοχετευμενης συστολικης διαταξεως |
WO2011044398A2 (en) * | 2009-10-07 | 2011-04-14 | Qsigma, Inc. | Computer for amdahl-compliant algorithms like matrix inversion |
US8559544B2 (en) * | 2009-11-10 | 2013-10-15 | Georgia Tech Research Corporation | Systems and methods for lattice reduction |
US8416841B1 (en) * | 2009-11-23 | 2013-04-09 | Xilinx, Inc. | Multiple-input multiple-output (MIMO) decoding with subcarrier grouping |
US8620984B2 (en) * | 2009-11-23 | 2013-12-31 | Xilinx, Inc. | Minimum mean square error processing |
WO2011150428A1 (en) | 2010-05-28 | 2011-12-01 | Maxlinear, Inc. | Method and system for a low-complexity soft-output mimo detection |
US8406334B1 (en) * | 2010-06-11 | 2013-03-26 | Xilinx, Inc. | Overflow resistant, fixed precision, bit optimized systolic array for QR decomposition and MIMO decoding |
US8443031B1 (en) | 2010-07-19 | 2013-05-14 | Xilinx, Inc. | Systolic array for cholesky decomposition |
JP5787527B2 (ja) * | 2011-01-18 | 2015-09-30 | キヤノン株式会社 | 信号処理回路及び超音波診断装置 |
US9014249B2 (en) | 2012-11-02 | 2015-04-21 | Harris Corporation | Communications receiver with channel identification using A-priori generated gain vectors and associated methods |
US9384168B2 (en) | 2013-06-11 | 2016-07-05 | Analog Devices Global | Vector matrix product accelerator for microprocessor integration |
RU2562389C1 (ru) * | 2014-12-27 | 2015-09-10 | Артем Николаевич Новиков | Устройство обращения ковариационной матрицы помеховых сигналов |
US9846623B2 (en) | 2015-08-20 | 2017-12-19 | Qsigma, Inc. | Simultaneous multi-processor apparatus applicable to acheiving exascale performance for algorithms and program systems |
US10635909B2 (en) * | 2015-12-30 | 2020-04-28 | Texas Instruments Incorporated | Vehicle control with efficient iterative triangulation |
US10853448B1 (en) | 2016-09-12 | 2020-12-01 | Habana Labs Ltd. | Hiding latency of multiplier-accumulator using partial results |
US10528321B2 (en) * | 2016-12-07 | 2020-01-07 | Microsoft Technology Licensing, Llc | Block floating point for neural network implementations |
JP6907700B2 (ja) * | 2017-05-23 | 2021-07-21 | 富士通株式会社 | 情報処理装置、マルチスレッド行列演算方法、およびマルチスレッド行列演算プログラム |
US10514924B2 (en) | 2017-09-29 | 2019-12-24 | Intel Corporation | Apparatus and method for performing dual signed and unsigned multiplication of packed data elements |
US11256504B2 (en) | 2017-09-29 | 2022-02-22 | Intel Corporation | Apparatus and method for complex by complex conjugate multiplication |
US11074073B2 (en) | 2017-09-29 | 2021-07-27 | Intel Corporation | Apparatus and method for multiply, add/subtract, and accumulate of packed data elements |
US10534838B2 (en) | 2017-09-29 | 2020-01-14 | Intel Corporation | Bit matrix multiplication |
US10795676B2 (en) | 2017-09-29 | 2020-10-06 | Intel Corporation | Apparatus and method for multiplication and accumulation of complex and real packed data elements |
US10664277B2 (en) | 2017-09-29 | 2020-05-26 | Intel Corporation | Systems, apparatuses and methods for dual complex by complex conjugate multiply of signed words |
US10552154B2 (en) * | 2017-09-29 | 2020-02-04 | Intel Corporation | Apparatus and method for multiplication and accumulation of complex and real packed data elements |
US11243765B2 (en) | 2017-09-29 | 2022-02-08 | Intel Corporation | Apparatus and method for scaling pre-scaled results of complex multiply-accumulate operations on packed real and imaginary data elements |
US10795677B2 (en) | 2017-09-29 | 2020-10-06 | Intel Corporation | Systems, apparatuses, and methods for multiplication, negation, and accumulation of vector packed signed values |
US10802826B2 (en) | 2017-09-29 | 2020-10-13 | Intel Corporation | Apparatus and method for performing dual signed and unsigned multiplication of packed data elements |
US10346163B2 (en) * | 2017-11-01 | 2019-07-09 | Apple Inc. | Matrix computation engine |
US11321092B1 (en) | 2017-11-08 | 2022-05-03 | Habana Labs Ltd. | Tensor-based memory access |
US10915297B1 (en) * | 2017-11-15 | 2021-02-09 | Habana Labs Ltd. | Hardware accelerator for systolic matrix multiplication |
US10642620B2 (en) | 2018-04-05 | 2020-05-05 | Apple Inc. | Computation engine with strided dot product |
US10970078B2 (en) | 2018-04-05 | 2021-04-06 | Apple Inc. | Computation engine with upsize/interleave and downsize/deinterleave options |
WO2019222573A1 (en) * | 2018-05-18 | 2019-11-21 | Ilya Sorokin | Memory device and matrix processing unit utilizing the memory device |
US10754649B2 (en) | 2018-07-24 | 2020-08-25 | Apple Inc. | Computation engine that operates in matrix and vector modes |
WO2020032998A1 (en) | 2018-08-06 | 2020-02-13 | Hi Llc | Systems and methods to reduce data and complexity in neural signal processing chain |
US10831488B1 (en) | 2018-08-20 | 2020-11-10 | Apple Inc. | Computation engine with extract instructions to minimize memory access |
WO2020183396A1 (en) * | 2019-03-11 | 2020-09-17 | Untether Ai Corporation | Computational memory |
US20220171829A1 (en) | 2019-03-11 | 2022-06-02 | Untether Ai Corporation | Computational memory |
US10884707B1 (en) * | 2019-06-27 | 2021-01-05 | Amazon Technologies, Inc. | Transpose operations using processing element array |
US11342944B2 (en) | 2019-09-23 | 2022-05-24 | Untether Ai Corporation | Computational memory with zero disable and error detection |
US11468002B2 (en) | 2020-02-28 | 2022-10-11 | Untether Ai Corporation | Computational memory with cooperation among rows of processing elements and memory thereof |
CN111401522B (zh) * | 2020-03-12 | 2023-08-15 | 上海交通大学 | 脉动阵列变速控制方法及可变速脉动阵列微框架系统 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4354249A (en) * | 1980-03-24 | 1982-10-12 | Motorola Inc. | Processing unit for multiplying two mathematical quantities including at least one complex multiplier |
JPS60127598A (ja) * | 1983-12-14 | 1985-07-08 | Toshiba Corp | 半導体集積回路装置 |
US5195050A (en) * | 1990-08-20 | 1993-03-16 | Eastman Kodak Company | Single chip, mode switchable, matrix multiplier and convolver suitable for color image processing |
JPH05182464A (ja) | 1991-06-25 | 1993-07-23 | Fujitsu Ltd | 半導体記憶装置 |
JPH05151249A (ja) | 1991-11-28 | 1993-06-18 | Fujitsu Ltd | 複素数乗算器 |
US6002880A (en) * | 1992-12-29 | 1999-12-14 | Philips Electronics North America Corporation | VLIW processor with less instruction issue slots than functional units |
JPH08322299A (ja) * | 1995-05-22 | 1996-12-03 | Mitsutoyo Corp | モータのベクトル制御方式 |
US5983253A (en) * | 1995-09-05 | 1999-11-09 | Intel Corporation | Computer system for performing complex digital filters |
US5764943A (en) * | 1995-12-28 | 1998-06-09 | Intel Corporation | Data path circuitry for processor having multiple instruction pipelines |
AU8038898A (en) * | 1997-06-26 | 1999-01-19 | Asahi Kasei Kogyo Kabushiki Kaisha | Parallel arithmetic units and digital signal processor using the same |
US6038583A (en) * | 1997-10-23 | 2000-03-14 | Advanced Micro Devices, Inc. | Method and apparatus for simultaneously multiplying two or more independent pairs of operands and calculating a rounded products |
US6675187B1 (en) * | 1999-06-10 | 2004-01-06 | Agere Systems Inc. | Pipelined linear array of processor elements for performing matrix computations |
US6411979B1 (en) * | 1999-06-14 | 2002-06-25 | Agere Systems Guardian Corp. | Complex number multiplier circuit |
-
2000
- 2000-04-21 US US09/556,760 patent/US6675187B1/en not_active Expired - Lifetime
- 2000-06-09 JP JP2000174354A patent/JP4422299B2/ja not_active Expired - Fee Related
-
2009
- 2009-10-08 JP JP2009234277A patent/JP5491122B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2010049696A (ja) | 2010-03-04 |
JP5491122B2 (ja) | 2014-05-14 |
US6675187B1 (en) | 2004-01-06 |
JP2001056808A (ja) | 2001-02-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4422299B2 (ja) | 行列計算を行うためのプロセッサ素子のパイプライン処理線形アレー | |
JP4980834B2 (ja) | 算術プロセッサ | |
US7814297B2 (en) | Algebraic single instruction multiple data processing | |
US9977676B2 (en) | Vector processing engines (VPEs) employing reordering circuitry in data flow paths between execution units and vector data memory to provide in-flight reordering of output vector data stored to vector data memory, and related vector processor systems and methods | |
TW405093B (en) | Data processor and data processing system | |
Ebeling et al. | RaPiD—Reconfigurable pipelined datapath | |
JP4555356B2 (ja) | 単一命令複数データ(simd)命令用の積和演算(mac)ユニット | |
CN116522058A (zh) | 可重新配置的矩阵乘法器系统和方法 | |
US9619227B2 (en) | Vector processing engines (VPEs) employing tapped-delay line(s) for providing precision correlation / covariance vector processing operations with reduced sample re-fetching and power consumption, and related vector processor systems and methods | |
US20150143077A1 (en) | VECTOR PROCESSING ENGINES (VPEs) EMPLOYING MERGING CIRCUITRY IN DATA FLOW PATHS BETWEEN EXECUTION UNITS AND VECTOR DATA MEMORY TO PROVIDE IN-FLIGHT MERGING OF OUTPUT VECTOR DATA STORED TO VECTOR DATA MEMORY, AND RELATED VECTOR PROCESSING INSTRUCTIONS, SYSTEMS, AND METHODS | |
US20150143076A1 (en) | VECTOR PROCESSING ENGINES (VPEs) EMPLOYING DESPREADING CIRCUITRY IN DATA FLOW PATHS BETWEEN EXECUTION UNITS AND VECTOR DATA MEMORY TO PROVIDE IN-FLIGHT DESPREADING OF SPREAD-SPECTRUM SEQUENCES, AND RELATED VECTOR PROCESSING INSTRUCTIONS, SYSTEMS, AND METHODS | |
US10521225B2 (en) | Matrix multiplication at memory bandwidth | |
JPS6125188B2 (ja) | ||
JP2001256199A (ja) | データプロセッサ及びデータ処理システム | |
Ebeling et al. | Configurable computing: The catalyst for high-performance architectures | |
US6675286B1 (en) | Multimedia instruction set for wide data paths | |
Fan et al. | Montgomery modular multiplication algorithm on multi-core systems | |
Managuli et al. | Mapping of two-dimensional convolution on very long instruction word media processors for real-time performance | |
CN116384443A (zh) | 具有可配置池化处理单元的神经网络加速器 | |
KR100722428B1 (ko) | 리소스 공유 및 파이프 라이닝 구성을 갖는 재구성가능배열구조 | |
EP3232321A1 (en) | Signal processing apparatus with register file having dual two-dimensional register banks | |
EP1936492A1 (en) | SIMD processor with reduction unit | |
US5457646A (en) | Partial carry-save pipeline multiplier | |
JP2001084242A (ja) | 可変演算プロセッサ | |
US20230177320A1 (en) | Neural network accelerator with a configurable pipeline |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20050323 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20050623 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20050628 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20051130 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060228 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060330 |
|
A911 | Transfer to examiner for re-examination before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20060517 |
|
A912 | Re-examination (zenchi) completed and case transferred to appeal board |
Free format text: JAPANESE INTERMEDIATE CODE: A912 Effective date: 20060602 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20080807 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20080813 |
|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A711 Effective date: 20090414 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20090708 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20090714 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20091008 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20091204 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121211 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121211 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131211 Year of fee payment: 4 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313113 |
|
S533 | Written request for registration of change of name |
Free format text: JAPANESE INTERMEDIATE CODE: R313533 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |