JP5408913B2 - 高速かつ効率的な行列乗算ハードウェアモジュール - Google Patents
高速かつ効率的な行列乗算ハードウェアモジュール Download PDFInfo
- Publication number
- JP5408913B2 JP5408913B2 JP2008174002A JP2008174002A JP5408913B2 JP 5408913 B2 JP5408913 B2 JP 5408913B2 JP 2008174002 A JP2008174002 A JP 2008174002A JP 2008174002 A JP2008174002 A JP 2008174002A JP 5408913 B2 JP5408913 B2 JP 5408913B2
- Authority
- JP
- Japan
- Prior art keywords
- matrix
- multiplier
- adder
- data element
- data elements
- 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
- 239000011159 matrix material Substances 0.000 title claims description 308
- 238000000034 method Methods 0.000 claims description 24
- 230000008878 coupling Effects 0.000 claims description 4
- 238000010168 coupling process Methods 0.000 claims description 4
- 238000005859 coupling reaction Methods 0.000 claims description 4
- 238000007667 floating Methods 0.000 description 9
- 238000010586 diagram Methods 0.000 description 6
- 230000009977 dual effect Effects 0.000 description 5
- 230000003111 delayed effect Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000003139 buffering effect Effects 0.000 description 1
Images
Classifications
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- 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/30098—Register arrangements
- G06F9/30105—Register structure
- G06F9/30109—Register structure having multiple operands in a single register
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Complex Calculations (AREA)
Description
複数の乗算器−加算器ユニットを備えている行列乗算デバイスであって、該複数の乗算器−加算器ユニットのそれぞれが、積の値を生成するために2つのデータ要素を乗算する乗算器回路と、結果値を生成するために該積の値を被加数の値で加算する加算器回路とを備えており、乗算演算が第1の行列と第2の行列とにおいて実行されるときに使用される乗算器−加算器ユニットの数は、乗算演算が実行されているのが、第1の行列のどの行に対応するどの計算ステージであるかに依存して変化する、デバイス。
複数の格納ロケーションを備えている格納ユニットをさらに備えており、該格納ユニットは、第1の行列および第2の行列のデータ要素を格納し、該データ要素は、次の計算ステージにおける使用のための計算ステージの間に、上記乗算器−加算器ユニットに適用される、項目1に記載のデバイス。
第1のメモリおよび第2のメモリをさらに備えており、該第1のメモリは、上記第1の行列のデータ要素を格納し、該第2のメモリは、該第2の行列のデータ要素を格納する、項目2に記載のデバイス。
第1の入力ポート、および第2の入力ポート、上記第1のメモリと該第1の入力ポートとの間でデータを結合する第1のバス、ならびに上記第2のメモリと該第2の入力ポートとの間でデータを結合する第2のバスをさらに備えている、項目3に記載のデバイス。
各乗算器−加算器ユニットは、上記第1の行列のデータ要素を受信する第1の入力と、上記第2の行列のデータ要素を受信する第2の入力とを備えている、項目4に記載のデバイス。
上記第1の行列のj番目の行に対応するj番目の計算ステージの間、使用される乗算器−加算器ユニットの上記数は、該第1の行列の該j番目の行に関するデータ要素に、上記第2の行列のj番目の列と該第2の行列の全ての先行する列とに関するデータ要素を乗算するために、そして、該j番目の行に先行する、該第1の行列の全ての行に関するデータ要素に、該第2の行列の該j番目の列に関するデータ要素を乗算するために充分である、項目5に記載のデバイス。
上記j番目の計算ステージの間、上記第1の行列の上記j番目の行に関するデータ要素と、全ての先行する行に関するデータ要素とは、該j番目の計算ステージの後の計算ステージにおける使用のために、上記格納ユニットのそれぞれの格納ロケーションに格納される、項目6に記載のデバイス。
各計算ステージの間、使用される上記各乗算器−加算器ユニットは、上記第1の行列の行数と数が等しい複数のクロックサイクルの間、演算させられる、項目6に記載のデバイス。
上記各乗算器−加算器ユニットにおける上記加算器回路は、現在のクロックサイクルにおいて上記乗算器回路によって計算された上記積の値を、その計算ステージに対する先のクロックサイクルにおいて該加算器回路によって計算された上記結果値と加算する、項目8に記載のデバイス。
上記第1の行列の第1の行に対応する第1の計算ステージの間、単一の乗算器−加算器ユニットが、該第1の行列の第1の行のデータ要素を、上記第2の行列の第1の列のデータ要素と乗算するために使用される、項目5に記載のデバイス。
NxMのデータ要素を備えている第1の行列に、MxNのデータ要素備えている第2の行列を乗算するときには、計算ステージの連続の間に使用される乗算器−加算器ユニットの数は、{1,3,5,…2*N−1}となる、項目1に記載のデバイス。
第1の行列と第2の行列とを乗算する行列乗算ハードウェアのコアであって、
a.複数の乗算器−加算器ユニットであって、該複数の乗算器−加算器ユニットのそれぞれは、積の値を生成するために、該第1の行列からの第1のデータ要素に、該第2の行列からの第2のデータ要素を乗算し、結果値を生成するために、該積の値を被加数の値と加算し、該第1の行列と該第2の行列とを乗算するときに使用される乗算器−加算器ユニットの数は、計算が、該第1の行列の第1の行から該第1の行列の残りの行へと進捗するにつれ増加する、複数の乗算器−加算器ユニットと、
b.複数のレジスタを備えている格納ユニットであって、該複数のレジスタは、乗算器−加算器ユニットへの入力としての連続する供給のために、該第1の行列の1つ以上の行に関するデータ要素と、該第2の行列の1つ以上の列に関するデータ要素とを格納する、格納ユニットと
を備えている、行列乗算ハードウェアのコア。
上記第1の行列のj番目の行に対応するj番目の計算ステージの間、使用される乗算器−加算器ユニットの上記数は、該第1の行列の該j番目の行に関するデータ要素に、上記第2の行列のj番目の列と該第2の行列の全ての先行する列とに関するデータ要素を乗算するために、そして、該j番目の行に先行する、該第1の行列の全ての行に関するデータ要素に、該第2の行列の該j番目の列に関するデータ要素を乗算するために充分である、項目12に記載のデバイス。
上記j番目の計算ステージの間、上記第1の行列の上記j番目の行に関するデータ要素と、全ての先行する行に関するデータ要素とは、該j番目の計算ステージの後の計算ステージにおける使用のために、上記格納ユニットのそれぞれの格納ロケーションに格納される、項目13に記載のデバイス。
各計算ステージの間、使用される上記各乗算器−加算器ユニットは、上記第1の行列の行数と数が等しい複数のクロックサイクルの間、演算させられる、項目13に記載のデバイス。
上記各乗算器−加算器ユニットは、加算器回路を備えており、該加算器回路は、現在のクロックサイクルにおいて上記乗算器回路によって計算された上記積の値を、その計算ステージに対する先のクロックサイクルにおいて該加算器回路によって計算された上記結果値と加算する、項目15に記載のデバイス。
上記第1の行列が、NxMのデータ要素を備え、上記第2の行列が、MxNのデータ要素を備えているときには、計算ステージの進行の間に使用される乗算器−加算器ユニットの数は、{1,3,5,…2*N−1}となる、項目12に記載のデバイス。
第1の行列と第2の行列とを乗算する方法であって、
a.複数の乗算器−加算器ユニットを提供することであって、該複数の乗算器−加算器ユニットのそれぞれは、積の値を生成するために、該第1の行列の1つのデータ要素に、該第2の行列のデータ要素を乗算することが可能であり、かつ、結果値を生成するために、該積の値を被加数の値と加算することが可能である、ことと、
b.ある数の該複数の乗算器−加算器ユニットを使用することであって、該数は、計算が、該第1の行列の第1の行から該第1の行列の残りの行へと進捗するにつれ増加する、ことと、
を包含する、方法。
上記(b)使用することは、第1の行列のj番目の行に対応するj番目の計算ステージの間、ある数の乗算器−加算器ユニットを使用することであって、該数は、該第1の行列の該j番目の行に関するデータ要素に、上記第2の行列のj番目の列と該第2の行列の全ての先行する列とに関するデータ要素を乗算するために、そして、該j番目の行に先行する、該第1の行列の全ての行に関するデータ要素に、該第2の行列の該j番目の列に関するデータ要素を乗算するために充分である、項目18に記載の方法。
上記j番目の計算ステージの間、該j番目の計算ステージの後の計算ステージにおける使用のために、それぞれの格納ロケーションに、上記第1の行列の上記j番目の行に関するデータ要素と、全ての先行する行に関するデータ要素とを格納することをさらに包含する、項目19に記載の方法。
各計算ステージの間、上記第1の行列の行数と数が等しい複数のクロックサイクルの間に、上記各乗算器−加算器ユニットに演算させることをさらに包含する、項目19に記載の方法。
現在のクロックサイクルにおいて乗算器−加算器ユニットによって計算された上記積の値を、先のクロックサイクルにおいて該乗算器−加算器ユニットによって計算された結果によって計算された上記結果値と加算することをさらに包含する、項目21に記載の方法。
上記第1の行列が、NxMのデータ要素を備え、上記第2の行列が、MxNのデータ要素を備えているときには、使用することは、数列{1,3,5,…2*N−1}に従った計算ステージの連続の間に上記数の乗算器−加算器ユニットを使用することを包含する、項目18に記載の方法。
行列乗算モジュールと行列乗算方法とが提供され、該行列乗算モジュールと行列乗算方法とは、計算プロセスにおける特定の時点またはステージにおける処理のために利用可能な、または必要とされる行列のデータ要素の量に基づいて、可変の数の乗算器−加算器ユニットを使用する。より多くのデータ要素が利用可能となるか、または必要とされるにつれ、より多くの乗算器−加算器ユニットが、必要な乗算および加算の演算を行うために使用される。NxMの行列にMxNの行列を乗算するために、使用されるMACユニットの総(最大)数は、「2*N−1」となる。使用されるMACユニットの数は、一(1)つから始まり、各計算ステージにおいて、すなわち、第1の行列の各新たな行に関するデータ要素の読み取りの開始時において、2つのユニットずつ増加する。MACユニットの数の数列は、計算ステージに対して{1,3,5,…2*N−1}となり、計算ステージのそれぞれは、第1の行列とも呼ばれる左側の行列の各新たな行に関するデータ要素の読み取りに対応する。2つの8x8の行列の乗算に関して、性能は、クロックサイクル毎に16個の浮動小数点演算となる。100MHzで走るFPGAに関して、性能は、毎秒1.6ギガの浮動小数点演算となる。FPGAが許すときには、性能は、クロック周波数の増加およびより大規模な行列の使用と共に増加する。非常に大規模の行列は、FRGAのリソースに適合するようにより小さいブロックに分割される。部分行列の乗算からの結果が、大規模な行列の最終的な結果を形成するように組み合わせられる。
C1=A1*B1+A2*B2
C2=A1*B3+A2*B4
C3=A3*B1+A4*B2
C4=A3*B3+A4*B4
となるべきである。
A1→A2→A3→A4
で逐次的にメモリから読み取られることを意味する。
B1→B2→B3→B4
で逐次的にメモリから読み取られる。
20(1)〜20(N) MACユニット
30 レジスタのアレイ(RA)
40 第1のメモリバンク
50 第2のメモリバンク
60 第1のバス
70 第2のバス
80 第1の入力ポート
90 第2の入力ポート
100 ボックス
110 コンフィギュレーションレジスタ
Claims (13)
- 第1の行列と第2の行列との積を計算するための行列乗算デバイスであって、
該第1の行列のデータ要素を格納するための第1のメモリと、該第2の行列のデータ要素を格納するための第2のメモリと、
複数のクロックサイクルに従って作動される複数の乗算器−加算器ユニットであって、該複数の乗算器−加算器ユニットのそれぞれが、積の値を生成するために、該第1の行列の該データ要素からのデータ要素と、該第2の行列の該データ要素からのデータ要素とを乗算するように構成された乗算器回路と、結果値を生成するために、現在のクロックサイクルにおいて該乗算器回路により計算された該積の値を被加数の値で加算するように構成された加算器回路とを備えている、複数の乗算器−加算器ユニットと、
複数の格納ロケーションを備えている格納ユニットと
を備えており、
該複数の乗算器−加算器ユニットは、
N個の計算ステージにおいて該第1の行列と該第2の行列との該乗算を実行することであって、Nは、該第1の行列の行数であり、Nは、1よりも大きい、ことと、
1からNまでの各整数jに対して、j番目の計算ステージの間に、該第1のメモリからの該第1の行列のj番目の行のデータ要素と、該第2のメモリからの該第2の行列のj番目の列のデータ要素とを読み取ることと
を行うように構成されており、
1からNまでの各整数jに対して、j番目の計算ステージの間に、該格納ユニットが、該複数の乗算器−加算器ユニットが該j番目の計算ステージの後の計算ステージにおいて使用するために該第1の行列のj番目の行のデータ要素と該第2の行列のj番目の列のデータ要素とを格納し、
該複数の乗算器−加算器ユニットは、
該j番目の計算ステージの間に、該複数の乗算器−加算器ユニットのうちの2j−1個を使用して、該第1の行列の該j番目の行のデータ要素に、該第2の行列の該j番目の列のデータ要素と、該格納ユニットに格納された該j番目の列に先行する該第2の行列の各列のデータ要素とを乗算し、該格納ユニットに格納された該j番目の行に先行する該第1の行列の各行のデータ要素に、該第2の行列の該j番目の列のデータ要素を乗算するようにさらに構成されており、
第1のクロックサイクルにおいて、該被加数の値は、ゼロに等しく、後続のクロックサイクルにおいて、該被加数の値は、その計算ステージに対する先のクロックサイクルにおいて該加算器回路により計算された結果値に等しい、デバイス。 - 第1の入力ポートおよび第2の入力ポートと、前記第1のメモリと該第1の入力ポートとの間でデータを結合する第1のバスと、前記第2のメモリと該第2の入力ポートとの間でデータを結合する第2のバスとをさらに備えており、各乗算器−加算器ユニットは、該第1の入力ポートに接続された第1の入力と、該第2の入力ポートに接続された第2の入力とを備えている、請求項1に記載のデバイス。
- 前記第1の入力は、前記第1の行列のデータ要素を受信し、前記第2の入力は、前記第2の行列のデータ要素を受信する、請求項2に記載のデバイス。
- 前記j番目の計算ステージの間、それぞれの格納ロケーションが、前記第1の行列の前記j番目の行に関するデータ要素と、全ての先行する行に関するデータ要素と、前記第2の行列の前記j番目の列に関するデータ要素と、全ての先行する列に関するデータ要素とを格納し、前記格納ユニットのそれぞれの格納ロケーションは、それぞれの乗算器−加算器ユニットの前記第1の入力または前記第2の入力のいずれかに接続される、請求項3に記載のデバイス。
- 前記複数のクロックサイクルは、前記第1の行列の行数と数が等しい、請求項1に記載のデバイス。
- 前記第1の行列の第1の行に対応する第1の計算ステージの間、単一の乗算器−加算器ユニットが、該第1の行列の第1の行のデータ要素を、前記第2の行列の第1の列のデータ要素と乗算するために使用される、請求項3に記載のデバイス。
- 第1の行列と第2の行列とを乗算する行列乗算ハードウェアデバイスであって、
該第1の行列のデータ要素を格納するための第1のメモリと、該第2の行列のデータ要素を格納するための第2のメモリと、
複数のクロックサイクルに従って作動される複数の乗算器−加算器ユニットであって、該複数の乗算器−加算器ユニットのそれぞれは、積の値を生成するために、該第1の行列からの第1のデータ要素に、該第2の行列からの第2のデータ要素を乗算し、結果値を生成するために、現在のクロックサイクルにおいて該乗算器−加算器ユニットにより計算された該積の値を被加数の値と加算するように構成されている、複数の乗算器−加算器ユニットと、
複数のレジスタを備えている格納ユニットであって、該複数のレジスタは、乗算器−加算器ユニットへの入力としての連続する供給のために、該第1の行列のデータ要素と、該第2の行列のデータ要素とを格納する、格納ユニットと
を備えており、
該複数の乗算器−加算器ユニットは、
N個の計算ステージにおいて該第1の行列と該第2の行列との該乗算を実行することであって、Nは、該第1の行列の行数であり、Nは、1よりも大きい、ことと、
1からNまでの各整数jに対して、j番目の計算ステージの間に、該第1のメモリからの該第1の行列のj番目の行のデータ要素と、該第2のメモリからの該第2の行列のj番目の列のデータ要素とを読み取ることと
を行うように構成されており、
1からNまでの各整数jに対して、j番目の計算ステージの間に、該格納ユニットが、該複数の乗算器−加算器ユニットが該j番目の計算ステージの後の計算ステージにおいて使用するために該第1の行列のj番目の行のデータ要素と該第2の行列のj番目の列のデータ要素とを格納し、
該複数の乗算器−加算器ユニットは、
該j番目の計算ステージの間に、該複数の乗算器−加算器ユニットのうちの2j−1個を使用して、該第1の行列の該j番目の行のデータ要素に、該第2の行列の該j番目の列のデータ要素と、該格納ユニットに格納された該j番目の列に先行する該第2の行列の各列のデータ要素とを乗算し、該格納ユニットに格納された該j番目の行に先行する該第1の行列の各行のデータ要素に、該第2の行列の該j番目の列のデータ要素を乗算するようにさらに構成されており、
第1のクロックサイクルにおいて、該被加数の値は、ゼロに等しく、後続のクロックサイクルにおいて、該被加数の値は、その計算ステージに対する先のクロックサイクルにおいて該乗算器−加算器ユニットにより計算された結果値に等しい、デバイス。 - 前記j番目の計算ステージの間、前記第1の行列の前記j番目の行に関するデータ要素と、全ての先行する行に関するデータ要素と、前記第2の行列の前記j番目の列に関するデータ要素と、全ての先行する列に関するデータ要素とは、該j番目の計算ステージの後の計算ステージにおける使用のために、前記格納ユニットのそれぞれの格納ロケーションに格納される、請求項7に記載のデバイス。
- 前記複数のクロックサイクルは、前記第1の行列の行数と数が等しい、請求項7に記載のデバイス。
- 各乗算器−加算器回路は、加算器回路を備えており、該加算器回路は、前記現在のクロックサイクルにおいて前記乗算器回路によって計算された前記積の値を、その計算ステージに対する先のクロックサイクルにおいて該加算器回路によって計算された前記結果値と加算する、請求項9に記載のデバイス。
- 第1の行列と第2の行列とを乗算する方法であって、
第1のメモリが、該第1の行列のデータ要素を格納し、第2のメモリが、該第2の行列のデータ要素を格納することと、
複数のクロックサイクルに従って作動される複数の乗算器−加算器ユニットが、積の値を生成するために、該第1の行列の1つのデータ要素に、該第2の行列のデータ要素を乗算し、結果値を生成するために、現在のクロックサイクルにおいて該乗算器−加算器ユニットにより計算された該積の値を被加数の値と加算することと
を包含し、
該複数の乗算器−加算器ユニットは、N個の計算ステージにおいて該第1の行列と該第2の行列との該乗算を実行し、Nは、該第1の行列の行数であり、Nは、1よりも大きく、
1からNまでの各整数jに対して、該複数の乗算器−加算器ユニットは、j番目の計算ステージの間に、該第1のメモリからの該第1の行列のj番目の行のデータ要素と、該第2のメモリからの該第2の行列のj番目の列のデータ要素とを読み取り、
j番目の計算ステージの間に、格納ユニットが、該j番目の計算ステージの後の計算ステージにおいて使用するためにそれぞれの格納ロケーションにおいて該第1の行列のj番目の行に関するデータ要素と全ての先行する行に関するデータ要素とを格納し、
該j番目の計算ステージの間に、該複数の乗算器−加算器ユニットのうちの2j−1個は、該第1の行列の該j番目の行のデータ要素に、該第2の行列の該j番目の列のデータ要素と、該格納ユニットに格納された該j番目の列に先行する該第2の行列の各列のデータ要素とを乗算し、該格納ユニットに格納された該j番目の行に先行する該第1の行列の各行のデータ要素に、該第2の行列の該j番目の列のデータ要素を乗算し、
第1のクロックサイクルにおいて、該被加数の値は、ゼロに等しく、後続のクロックサイクルにおいて、該被加数の値は、その計算ステージに対する先のクロックサイクルにおいて該乗算器−加算器ユニットにより計算された結果値に等しい、方法。 - 前記複数のクロックサイクルは、前記第1の行列の行数と数が等しい、請求項11に記載の方法。
- 加算器回路が、前記現在のクロックサイクルにおいて乗算器−加算器ユニットによって計算された前記積の値を、先のクロックサイクルにおいて該乗算器−加算器ユニットによって計算された結果によって計算された前記結果値と加算することをさらに包含する、請求項12に記載の方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/779,935 | 2007-07-19 | ||
US11/779,935 US8051124B2 (en) | 2007-07-19 | 2007-07-19 | High speed and efficient matrix multiplication hardware module |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2009026308A JP2009026308A (ja) | 2009-02-05 |
JP5408913B2 true JP5408913B2 (ja) | 2014-02-05 |
Family
ID=39929976
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008174002A Expired - Fee Related JP5408913B2 (ja) | 2007-07-19 | 2008-07-02 | 高速かつ効率的な行列乗算ハードウェアモジュール |
Country Status (4)
Country | Link |
---|---|
US (1) | US8051124B2 (ja) |
EP (1) | EP2017743B1 (ja) |
JP (1) | JP5408913B2 (ja) |
AU (1) | AU2008202591B2 (ja) |
Families Citing this family (47)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101577025B (zh) * | 2009-06-15 | 2011-11-23 | 上海华魏光纤传感技术有限公司 | 一种新型数据采集累加器及其实现方法 |
TW201232476A (en) * | 2011-01-27 | 2012-08-01 | Univ Nat Taiwan | Detection system and signal processing method thereof |
CN102411558B (zh) * | 2011-10-31 | 2015-05-13 | 中国人民解放军国防科学技术大学 | 面向向量处理器的大矩阵相乘的向量化实现方法 |
CN102629189B (zh) * | 2012-03-15 | 2014-12-10 | 湖南大学 | 基于fpga的流水浮点乘累加方法 |
CN104662531A (zh) * | 2012-04-23 | 2015-05-27 | 惠普发展公司,有限责任合伙企业 | 使用图形处理单元的统计分析 |
US9201848B2 (en) * | 2012-07-27 | 2015-12-01 | The United States Of America As Represented By The Secretary Of The Air Force | Floating point matrix multiplication co-processor |
CN103135960A (zh) * | 2013-02-28 | 2013-06-05 | 浪潮集团有限公司 | 一种基于fpga的集成浮点运算器的设计方法 |
JP6003744B2 (ja) * | 2013-03-22 | 2016-10-05 | 富士通株式会社 | 演算処理装置及び演算処理方法 |
US9384168B2 (en) * | 2013-06-11 | 2016-07-05 | Analog Devices Global | Vector matrix product accelerator for microprocessor integration |
JP5951570B2 (ja) * | 2013-09-13 | 2016-07-13 | 株式会社東芝 | 行列演算装置 |
CN105893333B (zh) * | 2016-03-25 | 2018-07-03 | 合肥工业大学 | 一种用于music算法中计算协方差矩阵的硬件电路 |
US10466928B2 (en) | 2016-09-15 | 2019-11-05 | Micron Technology, Inc. | Updating a register in memory |
CN108021528B (zh) * | 2016-11-03 | 2020-03-13 | 中科寒武纪科技股份有限公司 | Slam运算装置和方法 |
KR20180073118A (ko) | 2016-12-22 | 2018-07-02 | 삼성전자주식회사 | 컨볼루션 신경망 처리 방법 및 장치 |
WO2018174931A1 (en) | 2017-03-20 | 2018-09-27 | Intel Corporation | Systems, methods, and appartus for tile configuration |
KR102415508B1 (ko) | 2017-03-28 | 2022-07-01 | 삼성전자주식회사 | 컨볼루션 신경망 처리 방법 및 장치 |
US10338919B2 (en) | 2017-05-08 | 2019-07-02 | Nvidia Corporation | Generalized acceleration of matrix multiply accumulate operations |
DE102018110607A1 (de) | 2017-05-08 | 2018-11-08 | Nvidia Corporation | Verallgemeinerte Beschleunigung von Matrix-Multiplikations-und-Akkumulations-Operationen |
WO2018228703A1 (en) * | 2017-06-16 | 2018-12-20 | Huawei Technologies Co., Ltd. | Multiply accumulator array and processor device |
WO2019009870A1 (en) | 2017-07-01 | 2019-01-10 | Intel Corporation | SAVE BACKGROUND TO VARIABLE BACKUP STATUS SIZE |
CN112214726B (zh) * | 2017-07-07 | 2024-05-03 | 华为技术有限公司 | 运算加速器 |
US10860924B2 (en) | 2017-08-18 | 2020-12-08 | Microsoft Technology Licensing, Llc | Hardware node having a mixed-signal matrix vector unit |
US10167800B1 (en) | 2017-08-18 | 2019-01-01 | Microsoft Technology Licensing, Llc | Hardware node having a matrix vector unit with block-floating point processing |
US10346163B2 (en) | 2017-11-01 | 2019-07-09 | Apple Inc. | Matrix computation engine |
CN109992742A (zh) * | 2017-12-29 | 2019-07-09 | 华为技术有限公司 | 一种信号处理方法及装置 |
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 |
US10387122B1 (en) | 2018-05-04 | 2019-08-20 | Olsen Ip Reserve, Llc | Residue number matrix multiplier |
US10754649B2 (en) | 2018-07-24 | 2020-08-25 | Apple Inc. | Computation engine that operates in matrix and vector modes |
CN110765413B (zh) * | 2018-07-25 | 2024-05-07 | 赛灵思公司 | 矩阵求和结构及神经网络计算平台 |
US10831488B1 (en) | 2018-08-20 | 2020-11-10 | Apple Inc. | Computation engine with extract instructions to minimize memory access |
WO2020046642A1 (en) | 2018-08-31 | 2020-03-05 | Flex Logix Technologies, Inc. | Multiplier-accumulator circuit, logic tile architecture for multiply-accumulate and ic including logic tile array |
JP7132043B2 (ja) * | 2018-09-10 | 2022-09-06 | 東京計器株式会社 | リコンフィギュラブルプロセッサ |
US11093580B2 (en) * | 2018-10-31 | 2021-08-17 | Advanced Micro Devices, Inc. | Matrix multiplier with submatrix sequencing |
US10992314B2 (en) | 2019-01-21 | 2021-04-27 | Olsen Ip Reserve, Llc | Residue number systems and methods for arithmetic error detection and correction |
US11475102B2 (en) | 2019-02-21 | 2022-10-18 | Samsung Electronics Co., Ltd. | Adaptive matrix multiplication accelerator for machine learning and deep learning applications |
US11194585B2 (en) | 2019-03-25 | 2021-12-07 | Flex Logix Technologies, Inc. | Multiplier-accumulator circuitry having processing pipelines and methods of operating same |
US11314504B2 (en) | 2019-04-09 | 2022-04-26 | Flex Logix Technologies, Inc. | Multiplier-accumulator processing pipelines and processing component, and methods of operating same |
US11288076B2 (en) | 2019-09-13 | 2022-03-29 | Flex Logix Technologies, Inc. | IC including logic tile, having reconfigurable MAC pipeline, and reconfigurable memory |
US11455368B2 (en) | 2019-10-02 | 2022-09-27 | Flex Logix Technologies, Inc. | MAC processing pipeline having conversion circuitry, and methods of operating same |
US12015428B2 (en) | 2019-11-05 | 2024-06-18 | Flex Logix Technologies, Inc. | MAC processing pipeline using filter weights having enhanced dynamic range, and methods of operating same |
US11693625B2 (en) | 2019-12-04 | 2023-07-04 | Flex Logix Technologies, Inc. | Logarithmic addition-accumulator circuitry, processing pipeline including same, and methods of operation |
US11960856B1 (en) | 2020-01-15 | 2024-04-16 | Flex Logix Technologies, Inc. | Multiplier-accumulator processing pipeline using filter weights having gaussian floating point data format |
US11442881B2 (en) | 2020-04-18 | 2022-09-13 | Flex Logix Technologies, Inc. | MAC processing pipelines, circuitry to control and configure same, and methods of operating same |
US11604645B2 (en) | 2020-07-22 | 2023-03-14 | Flex Logix Technologies, Inc. | MAC processing pipelines having programmable granularity, and methods of operating same |
CN112632464B (zh) * | 2020-12-28 | 2022-11-29 | 上海壁仞智能科技有限公司 | 用于处理数据的处理装置 |
US12072952B2 (en) * | 2021-03-26 | 2024-08-27 | Advanced Micro Devices, Inc. | Data compressor for approximation of matrices for matrix multiply operations |
Family Cites Families (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
USRE25340E (en) * | 1957-06-25 | 1963-02-26 | haynes | |
US3055586A (en) * | 1958-11-12 | 1962-09-25 | Iuternat Business Machines Cor | Digit-by-digit decimal core matrix multiplier |
US3157779A (en) * | 1960-06-28 | 1964-11-17 | Ibm | Core matrix calculator |
US3621219A (en) * | 1967-08-15 | 1971-11-16 | Hayakawa Denki Kogyo Kk | Arithmetic unit utilizing magnetic core matrix registers |
US3535694A (en) * | 1968-01-15 | 1970-10-20 | Ibm | Information transposing system |
US4588255A (en) * | 1982-06-21 | 1986-05-13 | The Board Of Trustees Of The Leland Stanford Junior University | Optical guided wave signal processor for matrix-vector multiplication and filtering |
US5226171A (en) * | 1984-12-03 | 1993-07-06 | Cray Research, Inc. | Parallel vector processing system for individual and broadcast distribution of operands and control information |
JPH05324700A (ja) * | 1992-05-19 | 1993-12-07 | N T T Data Tsushin Kk | 行列乗算装置 |
US6421695B1 (en) * | 1995-10-28 | 2002-07-16 | Lg Electronics Inc. | Apparatus for implementing inverse discrete cosine transform in digital image processing system |
US5818532A (en) * | 1996-05-03 | 1998-10-06 | Lsi Logic Corporation | Micro architecture of video core for MPEG-2 decoder |
JPH1063647A (ja) * | 1996-08-23 | 1998-03-06 | Matsushita Electric Ind Co Ltd | 行列演算装置 |
US5978895A (en) * | 1997-04-04 | 1999-11-02 | Cirrus Logic, Inc. | Method for speeding mathematical operations in a processor core |
US6061749A (en) * | 1997-04-30 | 2000-05-09 | Canon Kabushiki Kaisha | Transformation of a first dataword received from a FIFO into an input register and subsequent dataword from the FIFO into a normalized output dataword |
US6195674B1 (en) * | 1997-04-30 | 2001-02-27 | Canon Kabushiki Kaisha | Fast DCT apparatus |
US6014144A (en) * | 1998-02-03 | 2000-01-11 | Sun Microsystems, Inc. | Rapid computation of local eye vectors in a fixed point lighting unit |
US6640239B1 (en) * | 1999-11-10 | 2003-10-28 | Garuda Network Corporation | Apparatus and method for intelligent scalable switching network |
US6681052B2 (en) * | 2000-01-15 | 2004-01-20 | Sony Corporation | Methods and systems for performing inverse quantization and inverse weighting of DV video |
US6898204B2 (en) * | 2000-04-07 | 2005-05-24 | Broadcom Corporation | Method of determining a collision between a plurality of transmitting stations in a frame-based communications network |
AUPR464601A0 (en) * | 2001-04-30 | 2001-05-24 | Commonwealth Of Australia, The | Shapes vector |
AU2002351525A1 (en) * | 2001-06-28 | 2003-03-03 | Oak Technology, Inc. | System-on-a-chip controller |
US7044911B2 (en) * | 2001-06-29 | 2006-05-16 | Philometron, Inc. | Gateway platform for biological monitoring and delivery of therapeutic compounds |
US7107464B2 (en) * | 2001-07-10 | 2006-09-12 | Telecom Italia S.P.A. | Virtual private network mechanism incorporating security association processor |
WO2003029922A2 (en) * | 2001-10-01 | 2003-04-10 | Kline & Walker, Llc | Pfn/trac system faa upgrades for accountable remote and robotics control |
US6986021B2 (en) * | 2001-11-30 | 2006-01-10 | Quick Silver Technology, Inc. | Apparatus, method, system and executable module for configuration and operation of adaptive integrated circuitry having fixed, application specific computational elements |
US6968454B2 (en) * | 2001-12-27 | 2005-11-22 | Quicksilver Technology, Inc. | Apparatus, method and system for generating a unique hardware adaptation inseparable from correspondingly unique content |
-
2007
- 2007-07-19 US US11/779,935 patent/US8051124B2/en active Active
-
2008
- 2008-06-11 AU AU2008202591A patent/AU2008202591B2/en active Active
- 2008-07-02 JP JP2008174002A patent/JP5408913B2/ja not_active Expired - Fee Related
- 2008-07-04 EP EP08159750A patent/EP2017743B1/en not_active Not-in-force
Also Published As
Publication number | Publication date |
---|---|
EP2017743B1 (en) | 2012-12-12 |
AU2008202591B2 (en) | 2010-09-23 |
AU2008202591A1 (en) | 2009-02-05 |
EP2017743A2 (en) | 2009-01-21 |
US8051124B2 (en) | 2011-11-01 |
JP2009026308A (ja) | 2009-02-05 |
US20090024685A1 (en) | 2009-01-22 |
EP2017743A3 (en) | 2009-07-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5408913B2 (ja) | 高速かつ効率的な行列乗算ハードウェアモジュール | |
JP7474586B2 (ja) | テンソル計算データフロー加速器半導体回路 | |
CN110383237B (zh) | 可重新配置的矩阵乘法器系统和方法 | |
CN109992743B (zh) | 矩阵乘法器 | |
CN100405361C (zh) | 用于执行计算操作的方法、系统以及设备 | |
JP2018055677A (ja) | 外積累算演算のためのプロセッサおよび方法 | |
JP2022533221A (ja) | 行列演算用の装置及び方法 | |
GB2403567A (en) | Multiplying numbers in encryption systems | |
US9372665B2 (en) | Method and apparatus for multiplying binary operands | |
JPS6125188B2 (ja) | ||
TWI808259B (zh) | 具有壓縮進位之數位電路 | |
CN116710912A (zh) | 一种矩阵乘法器及矩阵乘法器的控制方法 | |
KR102601034B1 (ko) | 하드웨어에서의 희소 행렬 곱셈 | |
WO2021168644A1 (zh) | 数据处理装置、电子设备和数据处理方法 | |
GB2352309A (en) | A system for performing modular multiplication | |
CN113032723A (zh) | 一种矩阵乘法器的实现方法及矩阵乘法器装置 | |
CN109634556B (zh) | 一种乘累加器及累加输出方法 | |
EP3232321A1 (en) | Signal processing apparatus with register file having dual two-dimensional register banks | |
Kamp et al. | Multiply accumulate unit optimised for fast dot-product evaluation | |
Sonawane et al. | Systolic architecture for integer point matrix multiplication using FPGA | |
CN115576895B (zh) | 计算装置、计算方法及计算机可读存储介质 | |
EP4195027A1 (en) | Computational circuit with hierarchical accumulator | |
Sonawane et al. | Resource efficient 64-bit floating point matrix multiplication algorithm using FPGA | |
US20140032626A1 (en) | Multiply accumulate unit architecture optimized for both real and complex multiplication operations and single instruction, multiple data processing unit incorporating the same | |
JPH0298777A (ja) | 並列積和演算回路及びベクトル行列積演算方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20110502 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20120420 |
|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A711 Effective date: 20120426 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20130130 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20130205 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20130502 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20130531 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20130830 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20130904 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20130927 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20131016 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20131105 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |