JP5157484B2 - 行列演算コプロセッサ - Google Patents

行列演算コプロセッサ Download PDF

Info

Publication number
JP5157484B2
JP5157484B2 JP2008019119A JP2008019119A JP5157484B2 JP 5157484 B2 JP5157484 B2 JP 5157484B2 JP 2008019119 A JP2008019119 A JP 2008019119A JP 2008019119 A JP2008019119 A JP 2008019119A JP 5157484 B2 JP5157484 B2 JP 5157484B2
Authority
JP
Japan
Prior art keywords
matrix
multiplication
elements
accumulators
row
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
Application number
JP2008019119A
Other languages
English (en)
Other versions
JP2009181293A (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.)
Yamaha Corp
Original Assignee
Yamaha Corp
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 Yamaha Corp filed Critical Yamaha Corp
Priority to JP2008019119A priority Critical patent/JP5157484B2/ja
Publication of JP2009181293A publication Critical patent/JP2009181293A/ja
Application granted granted Critical
Publication of JP5157484B2 publication Critical patent/JP5157484B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Advance Control (AREA)
  • Complex Calculations (AREA)

Description

この発明は、プロセッサから乗算対象である2つの行列の要素を受け取って、2つの行列の乗算を行う行列演算コプロセッサに関する。
画像処理装置では、例えば画像の回転等の処理のために行列乗算処理が頻繁に行われる。一般に行列乗算処理は演算量が多い。従って、画像処理装置全体を制御するプロセッサにこの行列乗算処理を実行させると、画像処理装置の処理効率を大幅に低下させることとなる。そこで、プロセッサの負担を軽減するために、演算処理専用のコプロセッサを設け、このコプロセッサに行列乗算処理を実行させる構成が採られることがある(例えば特許文献1参照)。
特開平7−21155号公報
ところで、例えば4×4個の2個の行列同士の乗算処理を行う場合、乗算結果である行列の1つの要素を算出するために、乗算対象である2個の行列のうち一方の行列の一行分の要素4個と他方の行列の一列分の要素4個、すなわち、合計8個の要素が必要となる。そこで、従来の技術において、コプロセッサは、乗算結果である行列の1つの要素を得るために、この8個の要素をプロセッサから受け取り、積和演算処理を行っていた。しかし、プロセッサおよびコプロセッサ間のデータ供給経路のビット幅は小さく、1クロックに同期して1要素分のデータしかプロセッサからコプロセッサに送ることができない。このため、乗算結果である行列の1つの要素を得るための所要クロック数は8クロック、乗算結果である行列の全要素を得るための所要クロック数は16×8=128クロックとなり、行列乗算処理の所要時間が長いという問題があった。
この発明は、以上説明した事情に鑑みてなされたものであり、行列の要素をプロセッサから多数まとめて送ることができない状況においても、行列乗算処理を高速に実行することができる行列演算コプロセッサを提供することを目的としている。
この発明は、プロセッサから乗算対象である2つの行列の要素を受け取って行列乗算を行う行列演算コプロセッサにおいて、各々第1のデータ入力端子に与えられるデータと第2のデータ入力端子に与えられるデータとを乗算する複数の乗算器と、前記複数の乗算器による各乗算結果の累算を各々行う複数の累算器と、乗算対象である2つの行列のうちの一方の行列の要素を記憶する行列要素レジスタと、前記2つの行列の乗算結果である行列の要素を前記複数の累算器から行毎にまたは列毎に順次得るための制御を行う手段であって、前記乗算結果である行列の1行分または1列分の要素を前記複数の累算器から得るために、前記複数の累算器の累算値を予め初期化した後、前記乗算対象である2つの行列のうちの他方の行列の1行分または1列分の要素を前記プロセッサから1個ずつ順次受け取り、1個の要素を受け取る毎に、受け取った要素を前記複数の乗算器の第1のデータ入力端子に供給するとともに、前記乗算結果である行列の1行分または1列分の要素を得るための演算において当該要素を共通の乗算相手とする1行分または1列分の要素を前記行列要素レジスタから読み出して前記複数の乗算器の各々の第2のデータ入力端子に各々供給し、前記複数の乗算器から得られる各乗算結果の累算を前記複数の累算器に各々行わせる制御手段とを具備することを特徴とする行列演算コプロセッサを提供する。
かかる発明によれば、行列演算コプロセッサでは、プロセッサから行列の要素を1個受け取る毎に、当該要素を共通の乗算相手とする複数の要素が行列要素レジスタから読み出され、複数組の乗算が行われ、それらの各乗算結果の累算が行われる。従って、行列要素を1個ずつしかプロセッサから受け取ることができない状況においても、高速に行列乗算の結果を算出することができる。
以下、図面を参照し、この発明の実施の形態を説明する。
図1は、この発明の一実施形態である行列演算コプロセッサ100の構成を示すブロック図である。この行列演算コプロセッサ100は、CPU200から乗算対象である2つの行列AおよびBの要素aij(i=0〜3、j=0〜3)およびbij(i=0〜3、j=0〜3)を受け取り、行列AおよびBの乗算結果、すなわち、下記式(1)〜(16)により与えられる行列Qの要素qij(i=0〜3、j=0〜3)を算出し、CPU200に返すコプロセッサである。
00
=a00・b00+a01・b10+a02・b20+a03・b30……(1)
01
=a00・b01+a01・b11+a02・b21+a03・b31……(2)
02
=a00・b02+a01・b12+a02・b22+a03・b32……(3)
03
=a00・b03+a01・b13+a02・b23+a03・b33……(4)
10
=a10・b00+a11・b10+a12・b20+a13・b30……(5)
11
=a10・b01+a11・b11+a12・b21+a13・b31……(6)
12
=a10・b02+a11・b12+a12・b22+a13・b32……(7)
13
=a10・b03+a11・b13+a12・b23+a13・b33……(8)
20
=a20・b00+a21・b10+a22・b20+a23・b30……(9)
21
=a20・b01+a21・b11+a22・b21+a23・b31……(10)
22
=a20・b02+a21・b12+a22・b22+a23・b32……(11)
23
=a20・b03+a21・b13+a22・b23+a23・b33……(12)
30
=a30・b00+a31・b10+a32・b20+a33・b30……(13)
31
=a30・b01+a31・b11+a32・b21+a33・b31……(14)
32
=a30・b02+a31・b12+a32・b22+a33・b32……(15)
33
=a30・b03+a31・b13+a32・b23+a33・b33……(16)
ここで、行列Aは、例えば回転処理の対象である図形の頂点の座標を要素とする行列であり、行列Bは、回転角度に応じて決まる回転処理のための係数を要素とする行列である。行列AおよびBの乗算結果である行列Qは、回転後の図形の頂点の座標を要素とする行列となる。
図1に示すように、行列演算コプロセッサ100は、4個の乗算器101〜104と、その後段の4個の累算器111〜114と、行列要素レジスタ120と、結果格納部130と、制御部140とを有する。
乗算器101〜104は、各々第1のデータ入力端子に与えられるデータと第2のデータ入力端子に与えられるデータとを乗算し、その乗算結果を出力する。累算器111〜114は、乗算器101〜104の各乗算結果の累算を行う装置である。累算器111〜114の各々は、加算器11とレジスタ12により構成されている。各累算器111〜114において、加算器11は前段の乗算器101〜104の出力データとレジスタ12の出力データとを加算して出力する。レジスタ12は、書き込み信号WRが与えられることにより加算器11の出力データを取り込んで出力する。以上説明した乗算器101〜104およびその後段の累算器111〜114は、行列AおよびBの乗算結果である行列Qの要素qij(i=0〜3、j=0〜3)を算出するための手段として用いられる。
行列要素レジスタ120は、乗算対象である2つの行列AおよびBのうちの一方の行列Bの要素bij(i=0〜3、j=0〜3)を記憶するレジスタである。ここで、行列Bの要素bij(i=0〜3、j=0〜3)は、行列AおよびBの乗算処理の実行に先立って、予めCPU200から行列演算コプロセッサ100に与えられるものである。結果格納部130は、行列AおよびBの乗算結果である行列Qの要素qij(i=0〜3、j=0〜3)を累算器111〜114から受け取って格納するバッファである。
制御部140は、CPU200から演算処理に関するコマンドを受け取り、演算処理を実行するための行列演算コプロセッサ100内の各部の制御を行うとともに、CPU200との間のデータの授受の制御を行う装置である。
以下、この制御部140による制御の下で行われる行列AおよびBの乗算処理について説明する。CPU200からのコマンドに従って行列AおよびBの乗算処理を実行する場合、制御部140は、予め一方の行列Bの要素bij(i=0〜3、j=0〜3)をCPU200から受け取って、行列要素レジスタ120に格納する。そして、制御部140は、行列AおよびBの乗算結果の行列Qの要素qij(i=0〜3、j=0〜3)を4個の累算器111〜114から行毎(インデックスi毎)に順次得るための制御を行う。
さらに詳述すると、制御部140は、乗算結果である行列Qの第0行の要素q0j(j=0〜3)を累算器111〜114から得るために、まず、累算器111〜114の累算値q0j(j=0〜3)を予め「0」に初期化する。
その後、乗算対象である2つの行列AおよびBのうちの他方の行列Aの第0行の要素a0j(j=0〜3)をCPU200から1個ずつ順次受け取り、1個の要素a0jを受け取る毎に、次の制御を行う。
まず、最初に受け取った要素a00を4個の乗算器101〜104の第1のデータ入力端子に供給する。また、行列Qの第0行の要素q0j(j=0〜3)を得るための演算(前掲式(1)〜(4)参照)において当該要素a00を共通の乗算相手とする1行分の要素、すなわち、要素b0j(j=0〜3)を行列要素レジスタ120から読み出して乗算器101〜104の各々の第2のデータ入力端子に各々供給する。これにより乗算器101〜104から乗算結果a00・b00、a00・b01、a00・b02およびa00・b03が各々出力され、累算器111〜114に各々供給される。
次に累算器111〜114の各レジスタ12に書き込み信号WRを送る。これにより累算器111〜114では、下記式(17)〜(20)の累算が行われ、各式の左辺のq0j(j=0〜3)が出力される。
00=a00・b00+q00 ……(17)
01=a00・b01+q01 ……(18)
02=a00・b02+q02 ……(19)
03=a00・b03+q03 ……(20)
次に要素a01を受け取ると、この要素a01を4個の乗算器101〜104の第1のデータ入力端子に供給する。また、行列Qの第0行の要素q0j(j=0〜3)を得るための演算(前掲式(1)〜(4)参照)において当該要素a01を共通の乗算相手とする1行分の要素、すなわち、要素b1j(j=0〜3)を行列要素レジスタ120から読み出して乗算器101〜104の各々の第2のデータ入力端子に各々供給する。これにより乗算器101〜104から乗算結果a01・b10、a01・b11、a01・b12およびa01・b13が各々出力され、累算器111〜114に各々供給される。
次に累算器111〜114の各レジスタ12に書き込み信号WRを送る。これにより累算器111〜114では、下記式(21)〜(24)の累算が行われ、各式の左辺のq0j(j=0〜3)が出力される。
00=a01・b10+q00 ……(21)
01=a01・b11+q01 ……(22)
02=a01・b12+q02 ……(23)
03=a01・b13+q03 ……(24)
以下同様であり、要素a02を受け取ったときには、この要素a02を4個の乗算器101〜104の第1のデータ入力端子に供給するとともに、要素b2j(j=0〜3)を行列要素レジスタ120から読み出して乗算器101〜104の各々の第2のデータ入力端子に各々供給し、累算器111〜114の各レジスタ12に書き込み信号WRを送る。これにより、累算器111〜114では、下記式(25)〜(28)の累算が行われ、各式の左辺のq0j(j=0〜3)が出力される。
00=a02・b20+q00 ……(25)
01=a02・b21+q01 ……(26)
02=a02・b22+q02 ……(27)
03=a02・b23+q03 ……(28)
また、第0行の最後の要素a03を受け取ったときには、この要素a03を4個の乗算器101〜104の第1のデータ入力端子に供給するとともに、要素b3j(j=0〜3)を行列要素レジスタ120から読み出して乗算器101〜104の各々の第2のデータ入力端子に各々供給し、累算器111〜114の各レジスタ12に書き込み信号WRを送る。これにより、累算器111〜114では、下記式(29)〜(32)の累算が行われ、各式の左辺のq0j(j=0〜3)が出力される。
00=a03・b30+q00 ……(29)
01=a03・b31+q01 ……(30)
02=a03・b32+q02 ……(31)
03=a03・b33+q03 ……(32)
このようにして、前掲式(1)〜(4)に示す行列Qの第0行の要素q0j(j=0〜3)が累算器111〜114から得られる。そこで、制御部140は、累算器111〜114から得られた要素q0j(j=0〜3)を結果格納部130に格納する。
そして、制御部140は、行を順次変え、以上説明した行列Qの第0行の場合と同様に、行列Qの第1行の要素q1j(j=0〜3)を得るための制御、第2行の要素q1j(j=0〜3)を得るための制御、第3行の要素q1j(j=0〜3)を得るための制御を実行する。このような制御により、乗算結果である行列Qの全行の要素qij(i=0〜3、j=0〜3)が結果格納部130に得られる。制御部140は、この結果格納部130から行列Qの要素qij(i=0〜3、j=0〜3)を順次読み出して、CPU200に送る。
以上説明した本実施形態によれば、行列演算コプロセッサ100が4行4列の行列AおよびBの乗算処理を行う場合において、1つのクロックに同期して1個の要素をCPU200から受け取るとすると、所要クロック数は次のようになる。まず、行列要素レジスタ120に行列Bの全要素を格納するための所要クロック数が16クロックとなる。次に乗算結果である行列Qの1行分の4個の要素を算出するための所要クロック数は4クロックとなる。従って、行列Qの全要素(すなわち、4行分の要素)を算出するための所要クロック数は16クロックとなる。よって、行列乗算処理が終了するまでの所要クロック数は32クロックとなる。このように本実施形態によれば、1つのクロックに同期して1個の要素しかCPU200から受け取ることができない状況においても、少ない所要クロック数で行列乗算処理を実行することができる。また、画像処理においては、乗算対象である2個の行列のうちの一方の内容を固定し、他方の内容を切り換えて、行列乗算処理を繰り返す場合がある。そのような場合、本実施形態では、内容を固定する行列の要素を行列要素レジスタ120に格納してしまえば、再度、CPU200から受け取る必要がないので、さらに行列乗算処理を高速化することができる。
以上、この発明の一実施形態について説明したが、この発明には他にも実施形態があり得る。例えば次の通りである。
(1)上記実施形態では、乗算結果である行列Qの要素を行毎に順次算出するようにしたが、列毎に順次算出するようにしてもよい。
(2)上記実施形態では、4行4列の行列同士の乗算処理を行ったが、乗算処理の対象となる行列の規模は任意である。
この発明の一実施形態である行列演算コプロセッサ100の構成を示すブロック図である。
符号の説明
200……CPU、100……行列演算コプロセッサ、101〜104……乗算器、111〜114……累算器、11……加算器、12……レジスタ、120……行列要素レジスタ、130……結果格納部、140……制御部。

Claims (1)

  1. プロセッサから乗算対象である2つの行列の要素を受け取って行列乗算を行う行列演算コプロセッサにおいて、
    各々第1のデータ入力端子に与えられるデータと第2のデータ入力端子に与えられるデータとを乗算する複数の乗算器と、
    前記複数の乗算器による各乗算結果の累算を各々行う複数の累算器と、
    乗算対象である2つの行列のうちの一方の行列の要素を記憶する行列要素レジスタと、
    前記2つの行列の乗算結果である行列の要素を前記複数の累算器から行毎にまたは列毎に順次得るための制御を行う手段であって、前記乗算結果である行列の1行分または1列分の要素を前記複数の累算器から得るために、前記複数の累算器の累算値を予め初期化した後、前記乗算対象である2つの行列のうちの他方の行列の1行分または1列分の要素を前記プロセッサから1個ずつ順次受け取り、1個の要素を受け取る毎に、受け取った要素を前記複数の乗算器の第1のデータ入力端子に供給するとともに、前記乗算結果である行列の1行分または1列分の要素を得るための演算において当該要素を共通の乗算相手とする1行分または1列分の要素を前記行列要素レジスタから読み出して前記複数の乗算器の各々の第2のデータ入力端子に各々供給し、前記複数の乗算器から得られる各乗算結果の累算を前記複数の累算器に各々行わせる制御手段と
    を具備することを特徴とする行列演算コプロセッサ。
JP2008019119A 2008-01-30 2008-01-30 行列演算コプロセッサ Expired - Fee Related JP5157484B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008019119A JP5157484B2 (ja) 2008-01-30 2008-01-30 行列演算コプロセッサ

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008019119A JP5157484B2 (ja) 2008-01-30 2008-01-30 行列演算コプロセッサ

Publications (2)

Publication Number Publication Date
JP2009181293A JP2009181293A (ja) 2009-08-13
JP5157484B2 true JP5157484B2 (ja) 2013-03-06

Family

ID=41035240

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008019119A Expired - Fee Related JP5157484B2 (ja) 2008-01-30 2008-01-30 行列演算コプロセッサ

Country Status (1)

Country Link
JP (1) JP5157484B2 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10762164B2 (en) 2016-01-20 2020-09-01 Cambricon Technologies Corporation Limited Vector and matrix computing device
CN107704433A (zh) * 2016-01-20 2018-02-16 南京艾溪信息科技有限公司 一种矩阵运算指令及其方法
JP6898554B2 (ja) * 2017-06-06 2021-07-07 富士通株式会社 演算処理装置、情報処理装置及び演算処理装置の制御方法
CN112612447B (zh) * 2020-12-31 2023-12-08 安徽芯纪元科技有限公司 一种矩阵计算器及基于该矩阵计算器的全连接层计算方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5204830A (en) * 1992-02-13 1993-04-20 Industrial Technology Research Institute Fast pipelined matrix multiplier
JP3618109B2 (ja) * 1993-07-02 2005-02-09 株式会社ソニー・コンピュータエンタテインメント 中央演算処理装置
JP4156538B2 (ja) * 2004-01-30 2008-09-24 三菱電機株式会社 行列演算装置

Also Published As

Publication number Publication date
JP2009181293A (ja) 2009-08-13

Similar Documents

Publication Publication Date Title
JP7000387B2 (ja) ニューラルネットワークプロセッサにおけるベクトル計算ユニット
EP3575952B1 (en) Arithmetic processing device, information processing device, method and program
US8307196B2 (en) Data processing system having bit exact instructions and methods therefor
CN109240746B (zh) 一种用于执行矩阵乘运算的装置和方法
US8051124B2 (en) High speed and efficient matrix multiplication hardware module
EP3726399A1 (en) Matrix multiplier
US8706791B2 (en) Low power fir filter in multi-MAC architecture
CN102087740A (zh) 用于通用计算的纹理单元
JP5157484B2 (ja) 行列演算コプロセッサ
CN111915001A (zh) 卷积计算引擎、人工智能芯片以及数据处理方法
US20240119114A1 (en) Matrix Multiplier and Matrix Multiplier Control Method
CN102446160A (zh) 面向双精度simd部件的矩阵乘实现方法
JP6003744B2 (ja) 演算処理装置及び演算処理方法
CN116888591A (zh) 一种矩阵乘法器、矩阵计算方法及相关设备
JP6712052B2 (ja) 演算処理装置及び演算処理装置の制御方法
US20220206749A1 (en) Computing device and method for reusing data
JP5742366B2 (ja) デジタル信号処理装置およびプログラム
CN116382622A (zh) 基于张量计算核心的张量数据处理方法及张量计算核心
TWI814618B (zh) 矩陣運算裝置及其操作方法
KR100628316B1 (ko) 변환 행렬 연산 장치
US20240134931A1 (en) Matrix computing device and operation method thereof
JP4203480B2 (ja) 画像処理プロセッサ
TW202405701A (zh) 用於人工智慧加速器的可重組態處理元件及其操作方法
CN117762492A (zh) 数据处理方法、装置、计算机设备及可读存储介质
CN117725352A (zh) 数据处理方法、装置、电子设备和计算机可读存储介质

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20101122

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: 20121113

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20121126

R150 Certificate of patent or registration of utility model

Ref document number: 5157484

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20151221

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees