JP6102645B2 - 積和演算回路及び積和演算システム - Google Patents

積和演算回路及び積和演算システム Download PDF

Info

Publication number
JP6102645B2
JP6102645B2 JP2013188186A JP2013188186A JP6102645B2 JP 6102645 B2 JP6102645 B2 JP 6102645B2 JP 2013188186 A JP2013188186 A JP 2013188186A JP 2013188186 A JP2013188186 A JP 2013188186A JP 6102645 B2 JP6102645 B2 JP 6102645B2
Authority
JP
Japan
Prior art keywords
matrix
product
multiplier
outputs
input
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.)
Active
Application number
JP2013188186A
Other languages
English (en)
Other versions
JP2015055971A (ja
Inventor
一生 堀尾
一生 堀尾
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2013188186A priority Critical patent/JP6102645B2/ja
Priority to US14/337,692 priority patent/US9442893B2/en
Publication of JP2015055971A publication Critical patent/JP2015055971A/ja
Application granted granted Critical
Publication of JP6102645B2 publication Critical patent/JP6102645B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/544Methods 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 for evaluating functions by calculation
    • G06F7/5443Sum of products
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Physics (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Complex Calculations (AREA)

Description

本発明は、積和演算回路及び積和演算システムに関する。
行列積の演算を行う積和演算回路が知られている(例えば、特許文献1参照)。所定数の乗算器は、第1の行列の要素を行方向に所定数ごとにグループにした行ベクトルと、第2の行列の要素を列方向に所定数ごとにグループにした列ベクトルとの積算を並列に実行する。乗算器用加算器は、所定の要素数と同じ数量設けられた乗算器の次段に、乗算器の乗算結果を取得して加算をする。加算器用加算器は、乗算器用加算器の次段に、乗算器用加算器の加算結果を取得して加算をする。レイテンシカウンタは、最終段の加算器用加算器のレイテンシを計測する。可変カウンタは、レイテンシカウンタが最終段の加算器用加算器のレイテンシを計測するごとにカウントして、所定の累算回数までカウントすると行列積の演算結果が取得可能状態であることを示す信号を出力する。可変カウンタ設定部は、可変カウンタのカウント値の設定をする。
また、行列演算装置が知られている(例えば、特許文献2参照)。行列演算装置は、演算を行うべき行列の全ての項のデータを複数のマトリクスデータ分割格納メモリに分割して格納し、デコーダの解読結果に従い、複数のマトリクスデータ分割格納メモリから読み出し部により必要なデータを同時に出力する。そして、行列演算装置は、セレクタ部を介して積和演算器へ送り、積和演算を行い、演算結果を出力するとともに書き込み部を介してマトリクスデータ分割格納メモリに書き込む。
特開2009−245296号公報 特開平10−63647号公報
無線通信の信号処理では、複素行列の積を大量に計算する必要がある。複素行列の積を求めるには多くの乗算器を必要とするため、回路面積及び消費電力が増大してしまう。また、積を求める行列の行数及び列数が一定ではないことが、回路面積増大の要因となる。例として、送受信アンテナ数が4本の場合のチャネル容量の計算を挙げると、4行4列の行列と4行4列の行列との積、3行4列の行列と4行3列の行列との積など、様々な異なる大きさの行列の積を求める必要がある。
LTE(Long Term Evolution)-Advancedの通信規格においては、送受信アンテナ数は最大8本にもなるため、これまでよりさらに多くの異なる大きさの行列の積を求める必要があり、演算量そのものも増加する。
この計算に対する最も単純な解は、異なる大きさの行列の積の演算回路を全てハードウェア実装することである。しかし、この場合、稼働していない演算器が存在することになり、冗長な演算器が存在し、回路面積が増大してしまう。
本発明の目的は、小さな回路面積で、種々の大きさの行列の積を演算することができる積和演算回路及び積和演算システムを提供することである。
積和演算回路は、第1の行列及び第2の行列の積の演算を行うことにより第3の行列を出力する積和演算回路であって、複数の乗算器と、前記複数の乗算器の乗算結果を2個ずつ加算する複数の第1の加算器と、前記複数の第1の加算器の加算結果を2個ずつ加算する複数の第2の加算器と、前記第1の行列及び前記第2の行列の行数及び列数に応じて、前記第1の行列の要素及び前記第2の行列の要素を前記複数の乗算器の入力端子に出力する入力セレクタと、前記第1の行列及び前記第2の行列の行数及び列数に応じて、前記複数の第1の加算器又は前記複数の第2の加算器の加算結果を選択し、前記第3の行列として出力する出力セレクタとを有する。
入力セレクタ及び出力セレクタを設けることにより、小さな回路面積で、種々の大きさの行列の積を演算することができる。
図1は、本実施形態による積和演算システムの構成例を示す図である。 図2(A)及び(B)は、積和演算回路の構成例を示す図である。 図3は、図1の積和演算回路の構成例を示す図である。 図4は、図1の積和演算回路の他の処理例を示す図である。 図5は、図3及び図4の積和演算回路のより具体的な構成例を示す図である。 図6(A)及び(B)は、積和演算回路の入出力を示す図である。 図7(A)は入力セレクタの動作を示す図であり、図7(B)は出力セレクタの動作を示す図である。 図8(A)は入力値の例を示す図であり、図8(B)は複素乗算器の構成例を示す図である。 図9(A)は入力値の例を示す図であり、図9(B)は複素加算器の構成例を示す図である。
図1は、本実施形態による積和演算システムの構成例を示す図である。積和演算システムは、第1の行列及び第2の行列を積を演算することにより第3の行列を得る。第1の行列及び第2の行列は入力行列であり、第3の行列は出力行列である。第1の行列及び第2の行列は、データメモリ114に記憶されている。第3の行列は、演算後、データメモリ114に書き込まれる。
命令メモリ101は、行列積演算命令102を記憶する。行列積演算命令102のニーモニックは、例えば、「mxmul A,B,C,M,N,K」である。ここで、「mxmul」は、オペコードである。「A」は、第1の行列が記憶されているデータメモリ114の先頭アドレスである。「B」は、第2の行列が記憶されているデータメモリ114の先頭アドレスである。「C」は、第3の行列が書き込まれるデータメモリ114の先頭アドレスである。「M」は、第1の行列の行数である。「N」は、第2の行列の列数である。「K」は、第1の行列の列数及び第2の行列の行数である。
デコーダ103は、命令メモリ101から行列積演算命令102を入力し、行列積演算命令102をデコードし、制御情報104を制御レジスタ105に書き込む。制御情報104は、制御情報106〜108を有する。制御情報106は、第1の行列が記憶されているデータメモリ114の先頭アドレスA及び第2の行列が記憶されているデータメモリ114の先頭アドレスBを含む。制御情報107は、第1の行列の行数M、第2の行列の列数N、第1の行列の列数(=第2の行列の行数)Kを含む。制御情報108は、第3の行列が書き込まれるデータメモリ114の先頭アドレスCを含む。ダイレクトメモリアクセスコントローラ(DMAC)109は、ロード用DMACであり、制御レジスタ105から入力した制御情報106に応じて、データメモリ114から第1の行列及び第2の行列を読み出し、入力行列110として、積和演算回路111に出力する。入力行列110は、第1の行列及び第2の行列である。積和演算回路111は、制御レジスタ105から入力した制御情報107に応じて、第1の行列及び第2の行列の積を演算し、第3の行列を出力行列112として、DMAC113に出力する。DMAC113は、ストア用DMACであり、制御レジスタ105から入力した制御情報108に応じて、データメモリ114に第3の行列を書き込む。
図2(A)は、積和演算回路200の構成例を示す図である。第1の行列A及び第2の行列Bは入力行列であり、第3の行列Cは出力行列である。積和演算回路200は、第1の行列A及び第2の行列Bの積を演算し、第3の行列Cを出力する。第1の行列Aは、2行3列の行列であり、6個の要素A11〜A23を有する。第2の行列Bは、3行1列の行列であり、3個の要素B11〜B31を有する。第3の行列Cは、2行1列の行列であり、2個の要素C11及びC21を有する。
要素の添え字は、行番号及び列番号を示す。例えば、要素A12は、第1行第2列の要素を示す。なお、要素A11の番号「0」、要素B11の番号「0」、要素C11の番号「0」等は、値を示すものではなく、各行列の順序番号を示すものである。
積和演算回路200は、複数の乗算器201〜203,211〜213と、複数の加算器204,205,214,215を有する。乗算器201は、要素A11及び要素B11を乗算する。乗算器202は、要素A12及び要素B21を乗算する。乗算器203は、要素A13及び要素B31を乗算する。加算器204は、乗算器201の乗算結果及び乗算器202の乗算結果を加算する。加算器205は、加算器204の加算結果及び乗算器203の乗算結果を加算し、要素C11を出力する。
乗算器211は、要素A21及び要素B11を乗算する。乗算器212は、要素A22及び要素B21を乗算する。乗算器213は、要素A23及び要素B31を乗算する。加算器214は、乗算器211の乗算結果及び乗算器212の乗算結果を加算する。加算器215は、加算器214の加算結果及び乗算器213の乗算結果を加算し、要素C21を出力する。
第3の行列Cは、加算器205が出力する要素C11及び加算器215が出力する要素C21により構成される。
図2(B)は、他の積和演算回路220の構成例を示す図である。第1の行列A及び第2の行列Bは入力行列であり、第3の行列Cは出力行列である。積和演算回路220は、第1の行列A及び第2の行列Bの積を演算し、第3の行列Cを出力する。第1の行列Aは、2行2列の行列であり、4個の要素A11〜A22を有する。第2の行列Bは、2行2列の行列であり、4個の要素B11〜B22を有する。第3の行列Cは、2行2列の行列であり、4個の要素C11〜C22を有する。
積和演算回路220は、複数の乗算器221〜224,231〜234と、複数の加算器225,226,235,236を有する。乗算器221は、要素A11及び要素B11を乗算する。乗算器222は、要素A12及び要素B21を乗算する。乗算器223は、要素A21及び要素B11を乗算する。乗算器224は、要素A22及び要素B21を乗算する。加算器225は、乗算器221の乗算結果及び乗算器222の乗算結果を加算し、要素C11を出力する。加算器226は、乗算器223の乗算結果及び乗算器224の乗算結果を加算し、要素C21を出力する。
乗算器231は、要素A11及び要素B12を乗算する。乗算器232は、要素A12及び要素B22を乗算する。乗算器233は、要素A21及び要素B12を乗算する。乗算器234は、要素A22及び要素B22を乗算する。加算器235は、乗算器231の乗算結果及び乗算器232の乗算結果を加算し、要素C12を出力する。加算器236は、乗算器233の乗算結果及び乗算器234の乗算結果を加算し、要素C22を出力する。
第3の行列Cは、加算器225が出力する要素C11と、加算器226が出力する要素C21と、加算器235が出力する要素C12と、加算器236が出力する要素C22により構成される。
以上のように、図2(A)の積和演算回路200は、2行3列の行列A及び3行1列の行列Bの積を演算する。図2(B)の積和演算回路220は、2行2列の行列A及び2行2列の行列Bの積を演算する。第1の行列A及び第2の行列Bの行数及び列数により、積和演算回路200及び220の構成は異なる。
異なる大きさの行列A及び行列Bの積を演算するには、異なる積和積演算回路200及び220が必要になる。種々の大きさの行列A及び行列Bの積を演算するには、積和演算回路200及び220等の種類が多くなり、回路面積が大きくなる。
本実施形態では、小さな回路面積で、種々の大きさの行列の積を演算することができる積和演算回路及び積和演算システムを提供する。
図3は、図1の積和演算回路111の構成例を示す図である。積和演算回路111は、第1の行列A及び第2の行列Bの積を演算し、第3の行列Cを出力する。第1の行列Aは、2行3列の行列であり、6個の要素A11〜A23を有する。第2の行列Bは、3行1列の行列であり、3個の要素B11〜B31を有する。第3の行列Cは、2行1列の行列であり、2個の要素C11及びC21を有する。この場合、第1の行列Aの行数Mは2であり、第1の行列Aの列数(=第2の行列Bの行数)Kは3であり、第2の行列Bの列数Nは1である。
積和演算回路111は、入力セレクタ300と、複数の乗算器301〜308と、複数の加算器309〜315と、出力セレクタ316とを有する。入力セレクタ300は、要素A11及びB11を選択して乗算器301に出力する。また、入力セレクタ300は、要素A12及びB21を選択して乗算器302に出力する。また、入力セレクタ300は、要素A13及びB31を選択して乗算器303に出力する。また、入力セレクタ300は、要素A21及びB11を選択して乗算器305に出力する。また、入力セレクタ300は、要素A22及びB21を選択して乗算器306に出力する。また、入力セレクタ300は、要素A23及びB31を選択して乗算器307に出力する。
乗算器301は、要素A11及び要素B11を乗算する。乗算器302は、要素A12及び要素B21を乗算する。乗算器303は、要素A13及び要素B31を乗算する。乗算器304は、“0”及び“0”を乗算し、“0”を出力する。乗算器305は、要素A21及び要素B11を乗算する。乗算器306は、要素A22及び要素B21を乗算する。乗算器307は、要素A23及び要素B31を乗算する。乗算器308は、“0”及び“0”を乗算し、“0”を出力する。
加算器309は、乗算器301の乗算結果及び乗算器302の乗算結果を加算する。加算器310は、乗算器303の乗算結果及び乗算器304の乗算結果を加算する。加算器311は、乗算器305の乗算結果及び乗算器306の乗算結果を加算する。加算器312は、乗算器307の乗算結果及び乗算器308の乗算結果を加算する。
加算器313は、加算器309の加算結果及び加算器310の加算結果を加算する。加算器314は、加算器311の加算結果及び加算器312の加算結果を加算する。加算器315は、加算器313の加算結果及び加算器314の加算結果を加算する。
出力セレクタ316は、加算器313の加算結果を要素C11として選択出力し、加算器314の加算結果を要素C21として選択出力する。第3の行列Cは、出力セレクタ316が出力する要素C11及び要素C21により構成される。
図4は、図1の積和演算回路111の他の処理例を示す図である。図4の積和演算回路111は、図3の積和演算回路111に対して、構成が同じであり、第1の行列A及び第2の行列Bの大きさが異なる。第1の行列Aは、2行2列の行列であり、4個の要素A11〜A22を有する。第2の行列Bは、2行2列の行列であり、4個の要素B11〜B22を有する。第3の行列Cは、2行2列の行列であり、4個の要素C11〜C22を有する。この場合、第1の行列Aの行数Mは2であり、第1の行列Aの列数(=第2の行列Bの行数)Kは2であり、第2の行列Bの列数Nは2である。
入力セレクタ300は、要素A11及びB11を選択して乗算器301に出力する。また、入力セレクタ300は、要素A12及びB21を選択して乗算器302に出力する。また、入力セレクタ300は、要素A11及びB12を選択して乗算器303に出力する。また、入力セレクタ300は、要素A12及びB22を選択して乗算器304に出力する。また、入力セレクタ300は、要素A21及びB11を選択して乗算器305に出力する。また、入力セレクタ300は、要素A22及びB21を選択して乗算器306に出力する。また、入力セレクタ300は、要素A21及びB12を選択して乗算器307に出力する。また、入力セレクタ300は、要素A22及びB22を選択して乗算器308に出力する。
乗算器301は、要素A11及び要素B11を乗算する。乗算器302は、要素A12及び要素B21を乗算する。乗算器303は、要素A11及び要素B12を乗算する。乗算器304は、要素A12及び要素B22を乗算する。乗算器305は、要素A21及び要素B11を乗算する。乗算器306は、要素A22及び要素B21を乗算する。乗算器307は、要素A21及び要素B12を乗算する。乗算器308は、要素A22及び要素B22を乗算する。
加算器309は、乗算器301の乗算結果及び乗算器302の乗算結果を加算する。加算器310は、乗算器303の乗算結果及び乗算器304の乗算結果を加算する。加算器311は、乗算器305の乗算結果及び乗算器306の乗算結果を加算する。加算器312は、乗算器307の乗算結果及び乗算器308の乗算結果を加算する。
加算器313は、加算器309の加算結果及び加算器310の加算結果を加算する。加算器314は、加算器311の加算結果及び加算器312の加算結果を加算する。加算器315は、加算器313の加算結果及び加算器314の加算結果を加算する。
出力セレクタ316は、加算器309の加算結果を要素C11として選択出力し、加算器310の加算結果を要素C12として選択出力し、加算器311の加算結果を要素C21として選択出力し、加算器312の加算結果を要素C22として選択出力する。第3の行列Cは、出力セレクタ316が出力する要素C11、C12、C21及びC22により構成される。
以上のように、第2の行列Bの列数がNである場合、入力セレクタ300は、第1の行列Aの各行の要素をN組みずつ複数の乗算器301〜308の入力端子に出力する。図3の場合、入力セレクタ300は、第1の行列Aの各行の要素をN(=1)組みずつ複数の乗算器301〜308の入力端子に出力する。また、図4の場合、入力セレクタ300は、第1の行列Aの各行の要素をN(=2)組みずつ複数の乗算器301〜308の入力端子に出力する。
また、第1の行列Aの行数がMである場合、入力セレクタ300は、第2の行列Bの各列の要素をM組みずつ複数の乗算器301〜308の入力端子に出力する。図3の場合、入力セレクタ300は、第2の行列Bの各列の要素をM(=2)組みずつ複数の乗算器301〜308の入力端子に出力する。また、図4の場合、入力セレクタ300は、第2の行列Bの各列の要素をM(=2)組みずつ複数の乗算器301〜308の入力端子に出力する。
図5は、図3及び図4の積和演算回路111のより具体的な構成例を示す図である。要素a0〜a7は、第1の行列Aの要素であり、図1のデータメモリ114からアドレス順に順次入力される。図3のように第1の行列Aの大きさが2行3列の場合、図6(A)に示すように、要素a0〜a5は、それぞれ要素A11、A12、A13、A21、A22、A23に対応する。また、図4のように第1の行列Aの大きさが2行2列の場合、図6(B)に示すように、要素a0〜a3は、それぞれ要素A11、A12、A21、A22に対応する。
要素b0〜b7は、第2の行列Bの要素であり、図1のデータメモリ114からアドレス順に順次入力される。図3のように第2の行列Bの大きさが3行1列の場合、図6(A)に示すように、要素b0〜b2は、それぞれ要素B11、B21、B31に対応する。また、図4のように第2の行列Bの大きさが2行2列の場合、図6(B)に示すように、要素b0〜b3は、それぞれ要素B11、B12、B21、B22に対応する。
入力セレクタ300は、第1の行列Aの要素a0〜a7及び第2の行列Bの要素b0〜b7を入力し、制御情報107に応じて、入力値I0_0〜I0_7,I1_0〜I1_7を乗算器301〜308に出力する。制御情報107は、上記のように、第1の行列Aの行数M、第2の行列Bの列数N、第1の行列Aの列数(=第2の行列Bの行数)Kを含む。具体的には、図7(A)に示すように、入力セレクタ300は、数M、N及びKに応じて、入力値I0_0〜I0_7,I1_0〜I1_7を出力する。
例えば、図3のようにM=2、N=1、K=3の場合、入力セレクタ300は、入力値I0_0として要素a0、入力値I0_1として要素a1、入力値I0_2として要素a2、入力値I0_3として“0”、入力値I0_4として要素a3、入力値I0_5として要素a4、入力値I0_6として要素a5、入力値I0_7として“0”、入力値I1_0として要素b0、入力値I1_1として要素b1、入力値I1_2として要素b2、入力値I1_3として“0”、入力値I1_4として要素b0、入力値I1_5として要素b1、入力値I1_6として要素b2、入力値I1_7として“0”を選択出力する。
また、図4のようにM=2、N=2、K=2の場合、入力セレクタ300は、入力値I0_0として要素a0、入力値I0_1として要素a1、入力値I0_2として要素a0、入力値I0_3として要素a1、入力値I0_4として要素a2、入力値I0_5として要素a3、入力値I0_6として要素a2、入力値I0_7として要素a3、入力値I1_0として要素b0、入力値I1_1として要素b1、入力値I1_2として要素b2、入力値I1_3として要素b3、入力値I1_4として要素b0、入力値I1_5として要素b1、入力値I1_6として要素b2、入力値I1_7として要素b3を選択出力する。
乗算器301〜308は、16ビット複素乗算器である。複素乗算器301は、入力値I0_0及びI1_0を複素乗算し、出力値D0_0を出力する。複素乗算器302は、入力値I0_1及びI1_1を複素乗算し、出力値D0_1を出力する。複素乗算器303は、入力値I0_2及びI1_2を複素乗算し、出力値D0_2を出力する。複素乗算器304は、入力値I0_3及びI1_3を複素乗算し、出力値D0_3を出力する。複素乗算器305は、入力値I0_4及びI1_4を複素乗算し、出力値D0_4を出力する。複素乗算器306は、入力値I0_5及びI1_5を複素乗算し、出力値D0_5を出力する。複素乗算器307は、入力値I0_6及びI1_6を複素乗算し、出力値D0_6を出力する。複素乗算器308は、入力値I0_7及びI1_7を複素乗算し、出力値D0_7を出力する。
図8(A)は入力値I0_0及びI1_0の例を示す図であり、図8(B)は複素乗算器301の構成例を示す図である。なお、複素乗算器302〜308も複素乗算器301と同様の構成を有する。入力値I0_0は(A+jB)の複素数であり、入力値I1_0は(C+jD)の複素数である。ここで、A及びCはそれぞれ16ビットの実数部であり、B及びDはそれぞれ16ビットの虚数部である。複素乗算器301は、乗算器801〜804、減算器805及び加算器806を有する。乗算器801は、16ビットの実数部A及び16ビットの実数部Cを乗算し、A×Cを出力する。乗算器802は、16ビットの虚数部B及び16ビットの虚数部Dを乗算し、B×Dを出力する。乗算器803は、16ビットの実数部A及び16ビットの虚数部Dを乗算し、A×Dを出力する。乗算器804は、16ビットの虚数部B及び16ビットの実数部Cを乗算し、B×Cを出力する。減算器805は、乗算器801の乗算結果から乗算器802の乗算結果を減算し、A×C−B×Dを出力値D0_0の実数部(33ビット)として出力する。加算器806は、乗算器803の乗算結果及び乗算器804の乗算結果を加算し、A×D+B×Cを出力値D0_0の虚数部(33ビット)として出力する。出力値D0_0は、(A×C−B×D)+j(A×D+B×C)の複素数である。
図5において、加算器309〜312は33ビット複素加算器であり、加算器313及び314は34ビット複素加算器であり、加算器315は35ビット複素加算器である。加算器313及び314は、34ビット複素加算器である。加算器315は、35ビット複素加算器である。複素加算器309は、出力値D0_0及びD0_1を複素加算し、出力値D1_0を出力する。複素加算器310は、出力値D0_2及びD0_3を複素加算し、出力値D1_1を出力する。複素加算器311は、出力値D0_4及びD0_5を複素加算し、出力値D1_2を出力する。複素加算器312は、出力値D0_6及びD0_7を複素加算し、出力値D1_3を出力する。複素加算器313は、出力値D1_0及びD1_1を複素加算し、出力値D2_0を出力する。複素加算器314は、出力値D1_2及びD1_3を複素加算し、出力値D2_1を出力する。複素加算器315は、出力値D2_0及びD2_1を複素加算し、出力値D3_0を出力する。
図9(A)は入力値D0_0及びD0_1の例を示す図であり、図9(B)は複素加算器309の構成例を示す図である。なお、複素加算器310〜315も複素乗算器309と同様の構成を有する。入力値D0_0は(A+jB)の複素数であり、入力値D0_1は(C+jD)の複素数である。ここで、A及びCはそれぞれ33ビットの実数部であり、B及びDはそれぞれ33ビットの虚数部である。複素加算器309は、加算器901及び902を有する。加算器901は、実数部A及び実数部Cを加算し、A+Cを出力値D1_0の実数部(34ビット)として出力する。加算器902は、虚数部B及び虚数部Dを加算し、B+Dを出力値D1_0の虚数部(34ビット)として出力する。出力値D1_0は、(A+C)+j(B+D)の複素数である。
図5において、出力セレクタ316は、出力値D0_0〜D0_7,D1_0〜D1_3,D2_0〜D2_1,D3_0を入力し、制御情報107に応じて、要素c0〜c7を出力する。具体的には、図7(B)に示すように、出力セレクタ316は、制御情報107の数M、N及びKに応じて、要素c0〜c7を出力する。
例えば、図3のようにM=2、N=1、K=3の場合、出力セレクタ316は、要素c0として出力値D2_0、要素c1として出力値D2_1を選択出力する。また、図4のようにM=2、N=2、K=2の場合、出力セレクタ316は、要素c0として出力値D1_0、要素c1として出力値D1_1、要素c2として出力値D1_2、要素c3として出力値D1_3を選択出力する。
要素c0〜c7は、第3の行列Cの要素であり、図1のデータメモリ114に順次書き込まれる。図3のようにM=2、N=1、K=3の場合、図6(A)に示すように、要素c0は要素C11に対応し、要素c1は要素C21に対応する。要素C11及びC21は、第3の行列Cを構成する。
また、図4のようにM=2、N=2、K=2の場合、図6(B)に示すように、要素c0は要素C11に対応し、要素c1は要素C12に対応し、要素c2は要素C21に対応し、要素c3は要素C22に対応する。要素C11,C12,C21,C22は、第3の行列Cを構成する。
なお、第1の行列A、第2の行列B及び第3の行列Cは、複素数に限らず、一元数でもよい。その場合、乗算器301〜308は単純な乗算器であり、加算器309〜315は単純な加算器である。
以上のように、複数の第1の加算器309〜312は、複数の乗算器301〜308の乗算結果を2個ずつ加算する。複数の第2の加算器313〜314は、複数の第1の加算器309〜312の加算結果を2個ずつ加算する。入力セレクタ300は、第1の行列Aの行数M、第2の行列Bの列数N、第1の行列Aの列数(=第2の行列Bの行数)Kに応じて、第1の行列Aの要素及び第2の行列Bの要素を複数の乗算器301〜308の入力端子に出力する。出力セレクタ316は、第1の行列Aの行数M、第2の行列Bの列数N、第1の行列Aの列数(=第2の行列Bの行数)Kに応じて、複数の第1の加算器309〜312又は複数の第2の加算器313〜314の加算結果を選択し、第3の行列Cとして出力する。
本実施形態によれば、第1の行列A及び第2の行列Bの大きさが変わっても、図3及び図4のように、乗算器301〜308及び加算器309〜315を共用することができる。入力セレクタ300及び出力セレクタ316を設けることにより、乗算器301〜308及び加算器309〜315を共用し、小さな回路面積で、種々の大きさの行列の積を演算することができる。
なお、上記実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
101 命令メモリ
102 命令
103 デコーダ
104,106〜108 制御情報
105 制御レジスタ
109,113 ダイレクトメモリアクセスコントローラ
110 入力行列
111 積和演算回路
112 出力行列
114 データメモリ
300 入力セレクタ
301〜308 乗算器
309〜315 加算器
316 出力セレクタ

Claims (5)

  1. 第1の行列及び第2の行列の積の演算を行うことにより第3の行列を出力する積和演算回路であって、
    複数の乗算器と、
    前記複数の乗算器の乗算結果を2個ずつ加算する複数の第1の加算器と、
    前記複数の第1の加算器の加算結果を2個ずつ加算する複数の第2の加算器と、
    前記第1の行列及び前記第2の行列の行数及び列数に応じて、前記第1の行列の要素及び前記第2の行列の要素を前記複数の乗算器の入力端子に出力する入力セレクタと、
    前記第1の行列及び前記第2の行列の行数及び列数に応じて、前記複数の第1の加算器又は前記複数の第2の加算器の加算結果を選択し、前記第3の行列として出力する出力セレクタと
    を有することを特徴とする積和演算回路。
  2. 前記第1の行列の行数をM、前記第2の行列の列数をNとすると、
    前記入力セレクタは、前記第1の行列の各行の要素をN組みずつ前記複数の乗算器の入力端子に出力し、前記第2の行列の各列の要素をM組みずつ前記複数の乗算器の入力端子に出力することを特徴とする請求項1記載の積和演算回路。
  3. 前記出力セレクタは、前記第1の行列の行数が2、前記第1の行列の列数及び前記第2の行列の行数が3、前記第2の行列の列数が1の場合、前記複数の第2の加算器の加算結果を選択し、前記第3の行列として出力することを特徴とする請求項1又は2記載の積和演算回路。
  4. 前記出力セレクタは、前記第1の行列の行数が2、前記第1の行列の列数及び前記第2の行列の行数が2、前記第2の行列の列数が2の場合、前記複数の第1の加算器の加算結果を選択し、前記第3の行列として出力することを特徴とする請求項1又は2記載の積和演算回路。
  5. 請求項1〜4のいずれか1項に記載の積和演算回路と、
    前記第1の行列及び前記第1の行列を記憶するメモリと、
    前記第1の行列及び前記第2の行列の行数及び列数、前記第1の行列及び前記第2の行列が前記メモリに記憶されているアドレスの情報を含む行列積演算命令をデコードし、前記第1の行列及び前記第2の行列の行数及び列数の情報を前記入力セレクタ及び前記出力セレクタに出力するデコーダと、
    前記第1の行列及び前記第2の行列が前記メモリに記憶されているアドレスの情報に応じて、前記メモリから前記第1の行列及び前記第2の行列を読み出し、前記入力セレクタに出力するコントローラと
    を有することを特徴とする積和演算システム。
JP2013188186A 2013-09-11 2013-09-11 積和演算回路及び積和演算システム Active JP6102645B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2013188186A JP6102645B2 (ja) 2013-09-11 2013-09-11 積和演算回路及び積和演算システム
US14/337,692 US9442893B2 (en) 2013-09-11 2014-07-22 Product-sum operation circuit and product-sum operation system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013188186A JP6102645B2 (ja) 2013-09-11 2013-09-11 積和演算回路及び積和演算システム

Publications (2)

Publication Number Publication Date
JP2015055971A JP2015055971A (ja) 2015-03-23
JP6102645B2 true JP6102645B2 (ja) 2017-03-29

Family

ID=52626607

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013188186A Active JP6102645B2 (ja) 2013-09-11 2013-09-11 積和演算回路及び積和演算システム

Country Status (2)

Country Link
US (1) US9442893B2 (ja)
JP (1) JP6102645B2 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6712052B2 (ja) 2016-06-29 2020-06-17 富士通株式会社 演算処理装置及び演算処理装置の制御方法
CN110415157B (zh) * 2018-04-26 2024-01-30 华为技术有限公司 一种矩阵乘法的计算方法及装置
US20200210517A1 (en) * 2018-12-27 2020-07-02 Intel Corporation Systems and methods to accelerate multiplication of sparse matrices
JP2022022876A (ja) * 2020-07-09 2022-02-07 キヤノン株式会社 畳み込みニューラルネットワーク処理装置
CN112214199B (zh) * 2020-09-11 2022-06-21 北京草木芯科技有限公司 256位乘法器
CN114003196B (zh) * 2021-09-02 2024-04-09 上海壁仞智能科技有限公司 矩阵运算装置与矩阵运算方法

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0720103A1 (en) * 1994-12-29 1996-07-03 Daewoo Electronics Co., Ltd Two-dimensional inverse discrete cosine transform circuit
JPH1063647A (ja) 1996-08-23 1998-03-06 Matsushita Electric Ind Co Ltd 行列演算装置
JP3333779B2 (ja) * 2001-12-26 2002-10-15 松下電器産業株式会社 行列演算装置
US20050240646A1 (en) * 2004-04-23 2005-10-27 The Research Foundation Of State University Of New York Reconfigurable matrix multiplier architecture and extended borrow parallel counter and small-multiplier circuits
US8266199B2 (en) * 2006-02-09 2012-09-11 Altera Corporation Specialized processing block for programmable logic device
JP5046779B2 (ja) * 2007-07-31 2012-10-10 三菱電機株式会社 動的再構成プロセッサ
JP2009075676A (ja) * 2007-09-18 2009-04-09 Nec Electronics Corp マイクロプロセッサ
KR20090071823A (ko) * 2007-12-28 2009-07-02 한국과학기술원 다기능 연산장치 및 방법
JP5262248B2 (ja) 2008-03-31 2013-08-14 富士通株式会社 積和演算回路
US8543633B2 (en) * 2010-09-24 2013-09-24 Lockheed Martin Corporation Modified Gram-Schmidt core implemented in a single field programmable gate array architecture
US9384168B2 (en) * 2013-06-11 2016-07-05 Analog Devices Global Vector matrix product accelerator for microprocessor integration

Also Published As

Publication number Publication date
US9442893B2 (en) 2016-09-13
US20150074163A1 (en) 2015-03-12
JP2015055971A (ja) 2015-03-23

Similar Documents

Publication Publication Date Title
JP6102645B2 (ja) 積和演算回路及び積和演算システム
CN105117372B (zh) 使用显式寄存器的位矩阵乘法运算
US9411726B2 (en) Low power computation architecture
CN110163361B (zh) 一种计算装置及方法
JP5951570B2 (ja) 行列演算装置
EP3033670B1 (en) Vector accumulation method and apparatus
US9639503B2 (en) Vector indirect element vertical addressing mode with horizontal permute
GB2497698A (en) Performing a multiply-multiply-accumulate instruction
GB2582094A (en) Matrix computation engine
JP2013205973A (ja) 行列演算装置
KR20190107091A (ko) 계산 장치 및 방법
CN108108190B (zh) 一种计算方法及相关产品
JP6308095B2 (ja) 演算回路及び演算回路の制御方法
CN111626413A (zh) 一种计算装置及方法
CN107943756B (zh) 一种计算方法及相关产品
CN111488976A (zh) 神经网络计算装置、神经网络计算方法及相关产品
JP6003744B2 (ja) 演算処理装置及び演算処理方法
US8060549B2 (en) Method and apparatus for accumulating floating point values
CN110554854A (zh) 数据处理器、方法、芯片及电子设备
JP2013122764A5 (ja)
CN111381882B (zh) 数据处理装置及相关产品
CN107873091B (zh) 用于滑动窗口运算的方法和设备
CN111258544B (zh) 乘法器、数据处理方法、芯片及电子设备
WO2023065701A1 (zh) 内积处理部件、任意精度计算设备、方法及可读存储介质
CN109478199B (zh) 分段线性逼近的系统及方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160510

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170119

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20170131

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170213

R150 Certificate of patent or registration of utility model

Ref document number: 6102645

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150