JPH05324700A - 行列乗算装置 - Google Patents
行列乗算装置Info
- Publication number
- JPH05324700A JPH05324700A JP4125767A JP12576792A JPH05324700A JP H05324700 A JPH05324700 A JP H05324700A JP 4125767 A JP4125767 A JP 4125767A JP 12576792 A JP12576792 A JP 12576792A JP H05324700 A JPH05324700 A JP H05324700A
- Authority
- JP
- Japan
- Prior art keywords
- matrix
- multiplication
- elements
- storage device
- circuit
- 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.)
- Pending
Links
Landscapes
- Complex Calculations (AREA)
Abstract
(57)【要約】
【目的】 行列の乗算処理における処理装置と記憶装置
間のデータ転送回数を削減し、行列乗算の高速化を図
る。 【構成】 記憶装置に格納されている第1および第2の
二つの行列の乗算を行ない、この乗算結果を、記憶装置
に書き込む行列乗算装置であり、記憶装置から読み出し
た第1の行列の一つの要素毎に、この要素に対応する第
2の行列の全ての乗算要素を、記憶装置から順次に読み
出し、それぞれの掛け算を行ない、第1の行列の同列の
各要素に対応する掛け算結果を累積加算する行列演算回
路を設け、この行列演算回路の加算結果を、記憶装置に
書き込む行列乗算装置。
間のデータ転送回数を削減し、行列乗算の高速化を図
る。 【構成】 記憶装置に格納されている第1および第2の
二つの行列の乗算を行ない、この乗算結果を、記憶装置
に書き込む行列乗算装置であり、記憶装置から読み出し
た第1の行列の一つの要素毎に、この要素に対応する第
2の行列の全ての乗算要素を、記憶装置から順次に読み
出し、それぞれの掛け算を行ない、第1の行列の同列の
各要素に対応する掛け算結果を累積加算する行列演算回
路を設け、この行列演算回路の加算結果を、記憶装置に
書き込む行列乗算装置。
Description
【0001】
【産業上の利用分野】本発明は、コンピュータに用いら
れ、行列乗算を行なう行列乗算装置に係わり、特に、行
列の乗算を高速に行なうのに好適な行列乗算装置に関す
るものである。
れ、行列乗算を行なう行列乗算装置に係わり、特に、行
列の乗算を高速に行なうのに好適な行列乗算装置に関す
るものである。
【0002】
【従来の技術】コンピュータで科学技術計算などを処理
する場合、行列計算の処理に、多大の処理時間を費や
す。この行列計算の中には、行列の乗算も頻繁に出現す
る。このような行列の乗算を行なうコンピュータに関し
て、以下の図10〜図13を用いて説明する。
する場合、行列計算の処理に、多大の処理時間を費や
す。この行列計算の中には、行列の乗算も頻繁に出現す
る。このような行列の乗算を行なうコンピュータに関し
て、以下の図10〜図13を用いて説明する。
【0003】図10は、行列の乗算の表記形態を示す説
明図であり、図11は、従来のコンピュータによる行列
の乗算手順を示す説明図である。行列A(l×m)と行
列B(m×n)、および、その行列Aと行列Bの積を行
列C(l×n)、また、行列A、B、Cのi行j列の要
素を、それぞれ、aij、bij、cijとすると、行
列の乗算は、図10に示す表記形態で表現される。コン
ピュータで、行列Aと行列Bの乗算を行ない、行列Cを
算出する場合、行列A、B、Cの各要素のデータは、記
憶装置(メモリなど)に格納される。行列Cの一つの要
素cijを求めるには、次の式(1)に示すように、図
11において、枠で囲まれた行列の部分に着目して、行
列Aの要素aik(k=1〜m)と、行列Bの要素bk
j(k=1〜m)のそれぞれ対応する要素どうしの乗算
を行ない、その乗算結果を累積加算する。
明図であり、図11は、従来のコンピュータによる行列
の乗算手順を示す説明図である。行列A(l×m)と行
列B(m×n)、および、その行列Aと行列Bの積を行
列C(l×n)、また、行列A、B、Cのi行j列の要
素を、それぞれ、aij、bij、cijとすると、行
列の乗算は、図10に示す表記形態で表現される。コン
ピュータで、行列Aと行列Bの乗算を行ない、行列Cを
算出する場合、行列A、B、Cの各要素のデータは、記
憶装置(メモリなど)に格納される。行列Cの一つの要
素cijを求めるには、次の式(1)に示すように、図
11において、枠で囲まれた行列の部分に着目して、行
列Aの要素aik(k=1〜m)と、行列Bの要素bk
j(k=1〜m)のそれぞれ対応する要素どうしの乗算
を行ない、その乗算結果を累積加算する。
【0004】ここで、累積加算の途中結果を、計算が終
了する毎に、記憶装置に書き戻すのでは性能が上がらな
いので、処理装置(プロセッサなど)内のレジスタを使
用して、累積加算の途中結果を格納する。しかし、累積
加算の途中結果を格納するためのレジスタなどには制限
があるので、通常は、次の図12、および、図13で説
明するように、行列Cの要素を、一つずつ、逐次求めて
いく。
了する毎に、記憶装置に書き戻すのでは性能が上がらな
いので、処理装置(プロセッサなど)内のレジスタを使
用して、累積加算の途中結果を格納する。しかし、累積
加算の途中結果を格納するためのレジスタなどには制限
があるので、通常は、次の図12、および、図13で説
明するように、行列Cの要素を、一つずつ、逐次求めて
いく。
【0005】図12は、従来の行列乗算を行なう処理装
置の構成を示すブロック図である。処理装置111は、
記憶装置110に記憶してある行列Aの要素112、お
よび、行列Bの要素113のそれぞれを読み出して格納
する行列A格納領域114、および、行列B格納領域1
15などからなるレジスタ群116と、このレジスタ群
116を用いて、行列Aと行列Bとの行列乗算を行な
い、その結果、すなわち、行列Cの要素117を、記憶
装置110に書き込む演算器118により構成されてい
る。尚、レジスタ群116には、演算器118による各
行列Aの要素112と行列Bの要素113のそれぞれの
乗算の結果を格納する乗算結果格納領域119と、演算
器118による乗算結果の累積加算の結果を格納する加
算結果格納領域120が設けられている。このような構
成の処理装置による行列Cの一つの要素cijを求める
時の動作を、次の図13を用いて説明する。
置の構成を示すブロック図である。処理装置111は、
記憶装置110に記憶してある行列Aの要素112、お
よび、行列Bの要素113のそれぞれを読み出して格納
する行列A格納領域114、および、行列B格納領域1
15などからなるレジスタ群116と、このレジスタ群
116を用いて、行列Aと行列Bとの行列乗算を行な
い、その結果、すなわち、行列Cの要素117を、記憶
装置110に書き込む演算器118により構成されてい
る。尚、レジスタ群116には、演算器118による各
行列Aの要素112と行列Bの要素113のそれぞれの
乗算の結果を格納する乗算結果格納領域119と、演算
器118による乗算結果の累積加算の結果を格納する加
算結果格納領域120が設けられている。このような構
成の処理装置による行列Cの一つの要素cijを求める
時の動作を、次の図13を用いて説明する。
【0006】図13は、図12における処理装置の行列
乗算の動作を示すフローチャートである。まず、記憶装
置に格納されている行列Aの要素aikを、図12のレ
ジスタ群116の行列A格納領域114に読み出す(ス
テップ1201)。次に、記憶装置に格納されている行
列Bの要素bkjを、図12のレジスタ群116の行列
B格納領域115に読み出す(ステップ1202)。そ
して、行列A格納領域の内容と、行列B格納領域の内容
を、図12の演算器118で掛け算し、その結果を、図
12の乗算結果格納領域119に格納する(ステップ1
203)。この乗算結果格納領域の内容と、(k−1)
回目までの累積加算結果を格納している図12の加算結
果格納領域120の内容を、図12の演算器118で、
足し算して、その結果を、図12の加算結果格納領域1
20に書き戻す(ステップ1204)。この処理を、m
回繰り返した後に(ステップ1205)、図12の加算
結果格納領域120の内容を、行列Cの要素Cijとし
て、図12の記憶装置110に書き込む(ステップ12
06)。
乗算の動作を示すフローチャートである。まず、記憶装
置に格納されている行列Aの要素aikを、図12のレ
ジスタ群116の行列A格納領域114に読み出す(ス
テップ1201)。次に、記憶装置に格納されている行
列Bの要素bkjを、図12のレジスタ群116の行列
B格納領域115に読み出す(ステップ1202)。そ
して、行列A格納領域の内容と、行列B格納領域の内容
を、図12の演算器118で掛け算し、その結果を、図
12の乗算結果格納領域119に格納する(ステップ1
203)。この乗算結果格納領域の内容と、(k−1)
回目までの累積加算結果を格納している図12の加算結
果格納領域120の内容を、図12の演算器118で、
足し算して、その結果を、図12の加算結果格納領域1
20に書き戻す(ステップ1204)。この処理を、m
回繰り返した後に(ステップ1205)、図12の加算
結果格納領域120の内容を、行列Cの要素Cijとし
て、図12の記憶装置110に書き込む(ステップ12
06)。
【0007】そして、この処理を、行列Cの要素数(l
×n)回繰り返して、行列C全体を求める。その結果、
行列C全体を求めるためには、2m×l×n回の記憶装
置からの行列要素の読み出しと、m×l×n回の乗算演
算、m×l×n回の加算演算、および、l×n回の記憶
装置への行列要素の書き込みの処理が必要になる。ま
た、コンピュータ上では、プログラム(ソフトウェア)
は、命令語に展開され、記憶装置に格納されている。そ
のため、上述の例では、記憶装置から(4m+1)×l
×n回の命令語の読み出しが必要になる。尚、アドレス
の更新、及び、ループ回数制御の命令語の読み出し回数
は含んでいない。
×n)回繰り返して、行列C全体を求める。その結果、
行列C全体を求めるためには、2m×l×n回の記憶装
置からの行列要素の読み出しと、m×l×n回の乗算演
算、m×l×n回の加算演算、および、l×n回の記憶
装置への行列要素の書き込みの処理が必要になる。ま
た、コンピュータ上では、プログラム(ソフトウェア)
は、命令語に展開され、記憶装置に格納されている。そ
のため、上述の例では、記憶装置から(4m+1)×l
×n回の命令語の読み出しが必要になる。尚、アドレス
の更新、及び、ループ回数制御の命令語の読み出し回数
は含んでいない。
【0008】このように、処理装置内部の演算より多く
の記憶装置へのアクセスがある。現状では、処理装置の
処理能力は、記憶装置と処理装置間のデータ転送能力よ
り高いので、全体の処理時間は、記憶装置と処理装置間
のデータ転送能力によって決定される。これは、フォン
ノイマンのボトルネックとよばれている部分である。
の記憶装置へのアクセスがある。現状では、処理装置の
処理能力は、記憶装置と処理装置間のデータ転送能力よ
り高いので、全体の処理時間は、記憶装置と処理装置間
のデータ転送能力によって決定される。これは、フォン
ノイマンのボトルネックとよばれている部分である。
【0009】このボトルネックを解消するために、例え
ば、スーパーコンピュータなどにおいては、ベクトル命
令の概念を採用している。このベクトル命令は、決まっ
た手順の繰り返しで処理するデータの転送と演算を、一
つの命令で指定するものである。現在のスーパーコンピ
ュータのアーキテクチャは、全て、このベクトル命令を
持っていることが特徴であり、これにより、行列演算な
どの高速化を図っている。尚、このベクトル命令に対し
て、通常のコンピュータの一つの命令をスカラー命令と
いう。
ば、スーパーコンピュータなどにおいては、ベクトル命
令の概念を採用している。このベクトル命令は、決まっ
た手順の繰り返しで処理するデータの転送と演算を、一
つの命令で指定するものである。現在のスーパーコンピ
ュータのアーキテクチャは、全て、このベクトル命令を
持っていることが特徴であり、これにより、行列演算な
どの高速化を図っている。尚、このベクトル命令に対し
て、通常のコンピュータの一つの命令をスカラー命令と
いう。
【0010】また、スーパーコンピュータなどでは、記
憶装置とのデータ転送能力を、最大限に発揮できるよう
に、高速演算技術を採用している。このような高速化を
図る高速演算技術には、パイプライン処理や並列演算が
ある。さらに、昨今のデバイス技術の進歩により、大容
量の記憶装置(メモリなど)を、処理装置(プロセッサ
など)内部に格納できるようになり、記憶装置への高速
データ転送が可能となり、処理時間の短縮が図られてい
る。
憶装置とのデータ転送能力を、最大限に発揮できるよう
に、高速演算技術を採用している。このような高速化を
図る高速演算技術には、パイプライン処理や並列演算が
ある。さらに、昨今のデバイス技術の進歩により、大容
量の記憶装置(メモリなど)を、処理装置(プロセッサ
など)内部に格納できるようになり、記憶装置への高速
データ転送が可能となり、処理時間の短縮が図られてい
る。
【0011】尚、このようなパイプライン処理やベクト
ル命令などの処理装置の高速化技術に関しては、例え
ば、電子情報通信学会編「電子情報通信ハンドブック」
(1988年、オーム社発行)の第1627頁から第1
632頁に記載されている。
ル命令などの処理装置の高速化技術に関しては、例え
ば、電子情報通信学会編「電子情報通信ハンドブック」
(1988年、オーム社発行)の第1627頁から第1
632頁に記載されている。
【0012】
【発明が解決しようとする課題】解決しようとする問題
点は、従来の技術では、行列の乗算を行なう場合に、処
理装置と記憶装置間のデータ転送回数が非常に多く、デ
ータ転送が、処理時間の多くを占めてしまい、高速な処
理を行なうことができない点である。本発明の目的は、
これら従来技術の課題を解決し、処理装置と記憶装置間
のデータ転送回数を削減し、かつ、パイプライン処理技
術、及び、並列演算技術の併用を容易とし、高速な行列
の乗算を可能とする行列乗算装置を提供することであ
る。
点は、従来の技術では、行列の乗算を行なう場合に、処
理装置と記憶装置間のデータ転送回数が非常に多く、デ
ータ転送が、処理時間の多くを占めてしまい、高速な処
理を行なうことができない点である。本発明の目的は、
これら従来技術の課題を解決し、処理装置と記憶装置間
のデータ転送回数を削減し、かつ、パイプライン処理技
術、及び、並列演算技術の併用を容易とし、高速な行列
の乗算を可能とする行列乗算装置を提供することであ
る。
【0013】
【課題を解決するための手段】上記目的を達成するた
め、本発明の行列乗算装置は、(1)記憶装置に格納さ
れている第1および第2の二つの行列の乗算を行ない、
この乗算結果を、記憶装置に書き込む行列乗算装置であ
り、記憶装置から読み出した第1の行列の一つの要素毎
に、この要素に対応する第2の行列の全ての乗算要素
を、記憶装置から順次に読み出し、それぞれの掛け算を
行ない、第1の行列の各要素に対応する掛け算結果を累
積して加算する行列演算回路を設け、この行列演算回路
の加算結果を、記憶装置に書き込むことを特徴とする。
また、(2)上記(1)に記載の行列乗算装置におい
て、行列演算回路は、記憶装置から第1の行列の一つの
要素を読み出す第1の行列読み出し回路と、この第1の
行列読み出し回路で読み出した要素に対応する第2の行
列の全ての乗算要素を、記憶装置から順次に読み出す第
2の行列読み出し回路と、この第2の行列読み出し回路
で順次に読み出す各乗算要素と、第1の行列読み出し回
路で読み出した一つの要素との掛け算を、順次に行なう
乗算回路と、この乗算回路により、第1の行列読み出し
回路と第2の行列読み出し回路で順次に読み出す各要素
に対応して算出されたそれぞれの掛け算結果を、順次に
累積加算する加算回路とを具備し、この加算回路の加算
結果を、記憶装置に書き込むことを特徴とする。また、
(3)上記(2)に記載の行列乗算装置において、第1
の行列読み出し回路は、第1の行列の同じ列の要素群か
ら、一つの要素を順次に読み出すことを特徴とする。ま
た、(4)上記(2)に記載の行列乗算装置において、
第1の行列読み出し回路は、第1の行列の同じ行の要素
群から、一つの要素を順次に読み出すことを特徴とす
る。また、(5)上記(2)から(4)のいずれかに記
載の行列乗算装置において、第2の行列読み出し回路
は、第2の行列の同じ列の要素群から、乗算要素を順次
に読み出すことを特徴とする。また、(6)上記(2)
から(4)のいずれかに記載の行列乗算装置において、
第2の行列読み出し回路は、第2の行列の同じ行の要素
群から、乗算要素を順次に読み出すことを特徴とする。
また、(7)上記(1)から(6)のいずれかに記載の
行列乗算装置において、行列演算回路は、加算結果を格
納する部分加算結果格納回路を具備し、この部分加算結
果格納回路に格納した加算結果が、それぞれ対応する要
素間の行列乗算を全て完了した時点で、この加算結果
を、記憶装置に順次に書き込むことを特徴とする。ま
た、(8)上記(1)から(6)のいずれかに記載の行
列乗算装置において、行列演算回路は、全ての要素間の
行列乗算を完了するまで、加算結果を格納する全加算結
果格納回路を具備し、全ての要素間の行列乗算を完了し
た時点で、この全加算結果格納回路に格納した全ての加
算結果を、まとめて、記憶装置に書き込むことを特徴と
する。また、(9)上記(1)から(8)のいずれかに
記載の行列乗算装置において、少なくとも、行列演算回
路による第2の行列の各要素の記憶装置からの読み出し
と、乗算および加算とを含む動作を、パイプライン処理
する制御回路を具備することを特徴とする。また、(1
0)上記(1)から(9)のいずれかに記載の行列乗算
装置において、記憶装置に格納されている第1および第
2の二つの行列の乗算を、任意に分割された単位で、そ
れぞれ、並列に行なう複数個の行列演算回路を設けるこ
とを特徴とする。
め、本発明の行列乗算装置は、(1)記憶装置に格納さ
れている第1および第2の二つの行列の乗算を行ない、
この乗算結果を、記憶装置に書き込む行列乗算装置であ
り、記憶装置から読み出した第1の行列の一つの要素毎
に、この要素に対応する第2の行列の全ての乗算要素
を、記憶装置から順次に読み出し、それぞれの掛け算を
行ない、第1の行列の各要素に対応する掛け算結果を累
積して加算する行列演算回路を設け、この行列演算回路
の加算結果を、記憶装置に書き込むことを特徴とする。
また、(2)上記(1)に記載の行列乗算装置におい
て、行列演算回路は、記憶装置から第1の行列の一つの
要素を読み出す第1の行列読み出し回路と、この第1の
行列読み出し回路で読み出した要素に対応する第2の行
列の全ての乗算要素を、記憶装置から順次に読み出す第
2の行列読み出し回路と、この第2の行列読み出し回路
で順次に読み出す各乗算要素と、第1の行列読み出し回
路で読み出した一つの要素との掛け算を、順次に行なう
乗算回路と、この乗算回路により、第1の行列読み出し
回路と第2の行列読み出し回路で順次に読み出す各要素
に対応して算出されたそれぞれの掛け算結果を、順次に
累積加算する加算回路とを具備し、この加算回路の加算
結果を、記憶装置に書き込むことを特徴とする。また、
(3)上記(2)に記載の行列乗算装置において、第1
の行列読み出し回路は、第1の行列の同じ列の要素群か
ら、一つの要素を順次に読み出すことを特徴とする。ま
た、(4)上記(2)に記載の行列乗算装置において、
第1の行列読み出し回路は、第1の行列の同じ行の要素
群から、一つの要素を順次に読み出すことを特徴とす
る。また、(5)上記(2)から(4)のいずれかに記
載の行列乗算装置において、第2の行列読み出し回路
は、第2の行列の同じ列の要素群から、乗算要素を順次
に読み出すことを特徴とする。また、(6)上記(2)
から(4)のいずれかに記載の行列乗算装置において、
第2の行列読み出し回路は、第2の行列の同じ行の要素
群から、乗算要素を順次に読み出すことを特徴とする。
また、(7)上記(1)から(6)のいずれかに記載の
行列乗算装置において、行列演算回路は、加算結果を格
納する部分加算結果格納回路を具備し、この部分加算結
果格納回路に格納した加算結果が、それぞれ対応する要
素間の行列乗算を全て完了した時点で、この加算結果
を、記憶装置に順次に書き込むことを特徴とする。ま
た、(8)上記(1)から(6)のいずれかに記載の行
列乗算装置において、行列演算回路は、全ての要素間の
行列乗算を完了するまで、加算結果を格納する全加算結
果格納回路を具備し、全ての要素間の行列乗算を完了し
た時点で、この全加算結果格納回路に格納した全ての加
算結果を、まとめて、記憶装置に書き込むことを特徴と
する。また、(9)上記(1)から(8)のいずれかに
記載の行列乗算装置において、少なくとも、行列演算回
路による第2の行列の各要素の記憶装置からの読み出し
と、乗算および加算とを含む動作を、パイプライン処理
する制御回路を具備することを特徴とする。また、(1
0)上記(1)から(9)のいずれかに記載の行列乗算
装置において、記憶装置に格納されている第1および第
2の二つの行列の乗算を、任意に分割された単位で、そ
れぞれ、並列に行なう複数個の行列演算回路を設けるこ
とを特徴とする。
【0014】
【作用】本発明においては、行列乗算装置は、第1の行
列の一つの要素毎に、対応する第2の行列の全ての乗算
要素を読み出して、行列の各要素の乗算を行なう。そし
て、第1の行列の同列の各要素のそれぞれの乗算結果
を、累積して加算する。このことにより、第1の行列の
要素の記憶装置からの読み出し回数を削減することがで
きる。さらに、行列乗算装置内でパイプライン処理を行
なうことにより、行列の乗算を高速に処理できる。ま
た、行列演算回路を複数個設け、それぞれ並列に使用す
ることにより、さらに、行列乗算処理を高速化すること
ができる。
列の一つの要素毎に、対応する第2の行列の全ての乗算
要素を読み出して、行列の各要素の乗算を行なう。そし
て、第1の行列の同列の各要素のそれぞれの乗算結果
を、累積して加算する。このことにより、第1の行列の
要素の記憶装置からの読み出し回数を削減することがで
きる。さらに、行列乗算装置内でパイプライン処理を行
なうことにより、行列の乗算を高速に処理できる。ま
た、行列演算回路を複数個設け、それぞれ並列に使用す
ることにより、さらに、行列乗算処理を高速化すること
ができる。
【0015】
【実施例】以下、本発明の実施例を、図面により詳細に
説明する。図1は、本発明を施した行列乗算装置の本発
明に係わる構成の第1の実施例を示すブロック図であ
る。本実施例の行列乗算装置11は、記憶装置1から、
本発明の第2の行列としての行列Aの要素1aを読み出
して格納する本発明の第2の行列読み出し回路としての
行列A格納回路3と、記憶装置1から、本発明の第1の
行列としての行列Bの要素1bを読み出して格納する本
発明の第1の行列読み出し回路としての行列B格納回路
2と、これらの行列A格納回路3および行列B格納回路
2の内容を掛け算する本発明に係わる乗算回路4と、こ
の乗算回路4によって掛け算された結果を格納する乗算
結果格納回路5と、行列計算において求める行列の全て
の要素の累積加算の途中結果を格納する本発明に係わる
全加算結果格納回路9と、この全加算結果格納回路9の
内容を読み出して格納する加算結果格納回路6と、この
加算結果格納回路6の内容と、乗算結果格納回路5の内
容とを足し算する本発明に係わる加算回路7と、この加
算回路7によって足し算された結果を、全加算結果格納
回路9に書き込む前に、一時的に格納する仮加算格納回
路8と、行列乗算装置11の全体制御と、記憶装置1へ
のアクセス制御、および、本発明に係わるパイプライン
処理制御などを行なう制御回路10とにより構成されて
いる。尚、この制御回路10を除く各回路により、本発
明の行列演算回路が構成され、その乗算結果である行列
Cの要素1cは、制御回路10の制御に基づき、記憶装
置1に書き込まれる。
説明する。図1は、本発明を施した行列乗算装置の本発
明に係わる構成の第1の実施例を示すブロック図であ
る。本実施例の行列乗算装置11は、記憶装置1から、
本発明の第2の行列としての行列Aの要素1aを読み出
して格納する本発明の第2の行列読み出し回路としての
行列A格納回路3と、記憶装置1から、本発明の第1の
行列としての行列Bの要素1bを読み出して格納する本
発明の第1の行列読み出し回路としての行列B格納回路
2と、これらの行列A格納回路3および行列B格納回路
2の内容を掛け算する本発明に係わる乗算回路4と、こ
の乗算回路4によって掛け算された結果を格納する乗算
結果格納回路5と、行列計算において求める行列の全て
の要素の累積加算の途中結果を格納する本発明に係わる
全加算結果格納回路9と、この全加算結果格納回路9の
内容を読み出して格納する加算結果格納回路6と、この
加算結果格納回路6の内容と、乗算結果格納回路5の内
容とを足し算する本発明に係わる加算回路7と、この加
算回路7によって足し算された結果を、全加算結果格納
回路9に書き込む前に、一時的に格納する仮加算格納回
路8と、行列乗算装置11の全体制御と、記憶装置1へ
のアクセス制御、および、本発明に係わるパイプライン
処理制御などを行なう制御回路10とにより構成されて
いる。尚、この制御回路10を除く各回路により、本発
明の行列演算回路が構成され、その乗算結果である行列
Cの要素1cは、制御回路10の制御に基づき、記憶装
置1に書き込まれる。
【0016】このような構成により、本実施例の行列乗
算装置11は、行列Aと行列Bとの乗算において、行列
の要素の記憶装置1からの読み出し回数を削減し、高速
化することができる。以下、図2〜図4に示す行列の乗
算式を用いて、行列乗算装置11の動作を説明する。
尚、行列の乗算(C=AB)の行列Cの各要素の計算 において、行列Cのj列の要素を算出する場合を用いて
説明する。
算装置11は、行列Aと行列Bとの乗算において、行列
の要素の記憶装置1からの読み出し回数を削減し、高速
化することができる。以下、図2〜図4に示す行列の乗
算式を用いて、行列乗算装置11の動作を説明する。
尚、行列の乗算(C=AB)の行列Cの各要素の計算 において、行列Cのj列の要素を算出する場合を用いて
説明する。
【0017】図2〜図4は、それぞれ、図1における行
列乗算装置の本発明に係わる行列の乗算手順の一実施例
を示す説明図である。まず、図2に示すように、各行列
A、B、Cに対して、枠で囲まれた部分に着目する。す
なわち、行列Bの一つの要素b1jと、行列Aの要素a
k1(k=1〜l)を、図1の乗算回路4で逐次掛け算
し、その結果を、図1の乗算結果格納回路5に格納す
る。そして、その乗算結果と、図1の全加算結果格納回
路9から加算結果格納回路6に読み出した内容(初期値
は「0」)とを、図1の加算回路7で加算して、その結
果を、一時的に、図1の仮加算結果格納回路8に格納し
た後、図1の全加算結果格納回路9に書き込む。
列乗算装置の本発明に係わる行列の乗算手順の一実施例
を示す説明図である。まず、図2に示すように、各行列
A、B、Cに対して、枠で囲まれた部分に着目する。す
なわち、行列Bの一つの要素b1jと、行列Aの要素a
k1(k=1〜l)を、図1の乗算回路4で逐次掛け算
し、その結果を、図1の乗算結果格納回路5に格納す
る。そして、その乗算結果と、図1の全加算結果格納回
路9から加算結果格納回路6に読み出した内容(初期値
は「0」)とを、図1の加算回路7で加算して、その結
果を、一時的に、図1の仮加算結果格納回路8に格納し
た後、図1の全加算結果格納回路9に書き込む。
【0018】次に、図3に示すように、各行列A、B、
Cに対して、枠で囲まれた部分に着目する。すなわち、
行列Bの一つの要素b2jと、行列Aの要素ak2(k
=1〜l)を、図1の乗算回路4で逐次掛け算し、その
結果を、図1の乗算結果格納回路5に格納する。そし
て、その乗算結果と、図1の全加算結果格納回路9から
加算結果格納回路6に読み出した内容とを、図1の加算
回路7で加算して、その結果を、一時的に、図1の仮加
算結果格納回路8に格納した後、図1の全加算結果格納
回路9に書き込む。
Cに対して、枠で囲まれた部分に着目する。すなわち、
行列Bの一つの要素b2jと、行列Aの要素ak2(k
=1〜l)を、図1の乗算回路4で逐次掛け算し、その
結果を、図1の乗算結果格納回路5に格納する。そし
て、その乗算結果と、図1の全加算結果格納回路9から
加算結果格納回路6に読み出した内容とを、図1の加算
回路7で加算して、その結果を、一時的に、図1の仮加
算結果格納回路8に格納した後、図1の全加算結果格納
回路9に書き込む。
【0019】このように、i回目の処理は、図4に示す
ように、各行列A、B、Cに対して、枠で囲まれた部分
に着目して、行列Bの一つの要素bijと、行列Aの要
素aki(=j)(k=1〜l)を、図1の乗算回路4
で逐次掛け算し、その結果を、図1の乗算結果格納回路
5に格納し、その乗算結果と、図1の全加算結果格納回
路9から加算結果格納回路6に読み出した内容((i−
1)回目までの累積加算結果)とを、図1の加算回路7
で加算して、その結果を、一時的に、図1の仮加算結果
格納回路8に格納した後、図1の全加算結果格納回路9
に書き込む。このような処理を、行列Cの列の数(n
回)繰り返して行列C全体が求められる。
ように、各行列A、B、Cに対して、枠で囲まれた部分
に着目して、行列Bの一つの要素bijと、行列Aの要
素aki(=j)(k=1〜l)を、図1の乗算回路4
で逐次掛け算し、その結果を、図1の乗算結果格納回路
5に格納し、その乗算結果と、図1の全加算結果格納回
路9から加算結果格納回路6に読み出した内容((i−
1)回目までの累積加算結果)とを、図1の加算回路7
で加算して、その結果を、一時的に、図1の仮加算結果
格納回路8に格納した後、図1の全加算結果格納回路9
に書き込む。このような処理を、行列Cの列の数(n
回)繰り返して行列C全体が求められる。
【0020】次に、図5、および、図6を用いて、図1
の行列乗算装置11の動作を、さらに詳しく説明する。
図5、および、図6は、図1における行列乗算装置の本
発明に係わる動作の一実施例を示すフローチャートであ
る。まず、図5に示すように、記憶装置に格納されてい
る行列Bの要素bkjを、図1の行列B格納回路2に読
み出す(ステップ501)。次に、記憶装置に格納され
ている行列Aの要素aijを、図1の行列A格納回路3
に読み出す(ステップ502)。そして、行列A格納回
路の内容と、行列B格納回路の内容を、図1の乗算回路
4で掛け算する(ステップ503)。その掛け算の結果
を、図1の乗算結果格納回路5に格納する(ステップ5
04)。
の行列乗算装置11の動作を、さらに詳しく説明する。
図5、および、図6は、図1における行列乗算装置の本
発明に係わる動作の一実施例を示すフローチャートであ
る。まず、図5に示すように、記憶装置に格納されてい
る行列Bの要素bkjを、図1の行列B格納回路2に読
み出す(ステップ501)。次に、記憶装置に格納され
ている行列Aの要素aijを、図1の行列A格納回路3
に読み出す(ステップ502)。そして、行列A格納回
路の内容と、行列B格納回路の内容を、図1の乗算回路
4で掛け算する(ステップ503)。その掛け算の結果
を、図1の乗算結果格納回路5に格納する(ステップ5
04)。
【0021】次に、累積加算結果を格納している図1の
全加算結果格納回路9から、(k−1)回目までの加算
結果を、図1の加算結果格納回路6に読みだす(ステッ
プ505)。この加算結果格納回路の内容と、ステップ
503において格納した乗算結果格納回路の内容とを、
図1の加算回路7で足し算する(ステップ506)。そ
して、その加算結果を、図1の仮加算結果格納回路8に
書き込み(ステップ507)、さらに、この仮加算結果
格納回路の内容を、図1の全加算結果格納回路9に書き
込む(ステップ508)。
全加算結果格納回路9から、(k−1)回目までの加算
結果を、図1の加算結果格納回路6に読みだす(ステッ
プ505)。この加算結果格納回路の内容と、ステップ
503において格納した乗算結果格納回路の内容とを、
図1の加算回路7で足し算する(ステップ506)。そ
して、その加算結果を、図1の仮加算結果格納回路8に
書き込み(ステップ507)、さらに、この仮加算結果
格納回路の内容を、図1の全加算結果格納回路9に書き
込む(ステップ508)。
【0022】そして、図6に示すように、ステップ50
2〜508のループを、l回繰り返し(ステップ50
9)、行列Bの一つの要素、例えば、図2に示すよう
に、要素b1jと、この要素b1jに対応する行列Aの
全ての乗算要素(a11〜al1)との乗算を行ない、
要素b1jに対する行列Cの各要素(c1j〜clj)
を得る。このようにして、行列Bの一つの要素に対応し
て、行列Cの各要素を得たならば、ステップ501に戻
り、次の行列Bの一要素、例えば、図3に示す要素b2
jを読み出し、以下、ステップ501〜508のループ
を、l回繰り返す。このことにより、要素b1jに対す
る行列Cの各要素(c1j〜clj)と、要素b2jに
対する行列Cの各要素(c1j〜clj)との累積結果
を得ることができる。
2〜508のループを、l回繰り返し(ステップ50
9)、行列Bの一つの要素、例えば、図2に示すよう
に、要素b1jと、この要素b1jに対応する行列Aの
全ての乗算要素(a11〜al1)との乗算を行ない、
要素b1jに対する行列Cの各要素(c1j〜clj)
を得る。このようにして、行列Bの一つの要素に対応し
て、行列Cの各要素を得たならば、ステップ501に戻
り、次の行列Bの一要素、例えば、図3に示す要素b2
jを読み出し、以下、ステップ501〜508のループ
を、l回繰り返す。このことにより、要素b1jに対す
る行列Cの各要素(c1j〜clj)と、要素b2jに
対する行列Cの各要素(c1j〜clj)との累積結果
を得ることができる。
【0023】次の行列Bの要素に対しても、同様の処理
を繰り返し、ステップ501〜509のループを、m回
繰り返す(ステップ510)。このことにより、行列B
の一つの列の全要素、例えば、図2〜図4における各要
素(b1j〜bmj)に対する行列Aの各乗算要素(a
11〜alm)の乗算と累積加算を行ない、行列Cの一
つの列の全要素(c1j〜clj)を得ることができ
る。このようにして、行列Bの一つの列の全要素に対応
して、行列Cの一列分の全要素を得たならば、ステップ
501に戻り、行列Bの次の列の一要素、例えば、図2
〜図4に示す要素b1nを読み出す。
を繰り返し、ステップ501〜509のループを、m回
繰り返す(ステップ510)。このことにより、行列B
の一つの列の全要素、例えば、図2〜図4における各要
素(b1j〜bmj)に対する行列Aの各乗算要素(a
11〜alm)の乗算と累積加算を行ない、行列Cの一
つの列の全要素(c1j〜clj)を得ることができ
る。このようにして、行列Bの一つの列の全要素に対応
して、行列Cの一列分の全要素を得たならば、ステップ
501に戻り、行列Bの次の列の一要素、例えば、図2
〜図4に示す要素b1nを読み出す。
【0024】以下、ステップ502〜508のループの
l回の繰り返しと、ステップ501〜509のループの
m回の繰り返しを行ない、行列Bの次の列の全要素に対
応して、行列Cの一つの列の全要素(c1n〜cln)
を得ることができる。そして、行列Aと行列Bの各要素
に対して、ステップ502〜508のループのl回の繰
り返しと、ステップ501〜509のループのm回の繰
り返しを、n回繰り返すことにより(ステップ51
1)、行列Cの全ての要素(c11〜cln)を得るこ
とができる。
l回の繰り返しと、ステップ501〜509のループの
m回の繰り返しを行ない、行列Bの次の列の全要素に対
応して、行列Cの一つの列の全要素(c1n〜cln)
を得ることができる。そして、行列Aと行列Bの各要素
に対して、ステップ502〜508のループのl回の繰
り返しと、ステップ501〜509のループのm回の繰
り返しを、n回繰り返すことにより(ステップ51
1)、行列Cの全ての要素(c11〜cln)を得るこ
とができる。
【0025】このようにして図1の全加算結果格納回路
9に格納された行列Cの全ての要素(c11〜cln)
を、記憶装置に書き込む(ステップ512)み、処理を
終了する。この結果、m×(l+1)×n回の記憶装置
からの行列要素の読み出しと、m×l×n回の乗算演算
および加算演算、そして、l×n回の記憶装置への行列
要素の書き込みとなり、従来技術に比較して、記憶装置
からの行列の要素の読み出し回数を削減することができ
る。すなわち、従来は、2m×l×n回であり、その差
は、2m×l×n−m×(l+1)×n=mn(l−
1)となり、l>1の条件で、2m×l×n−m×(l
+1)×n>0、故に、2m×l×n>m×(l+1)
×nとなる。
9に格納された行列Cの全ての要素(c11〜cln)
を、記憶装置に書き込む(ステップ512)み、処理を
終了する。この結果、m×(l+1)×n回の記憶装置
からの行列要素の読み出しと、m×l×n回の乗算演算
および加算演算、そして、l×n回の記憶装置への行列
要素の書き込みとなり、従来技術に比較して、記憶装置
からの行列の要素の読み出し回数を削減することができ
る。すなわち、従来は、2m×l×n回であり、その差
は、2m×l×n−m×(l+1)×n=mn(l−
1)となり、l>1の条件で、2m×l×n−m×(l
+1)×n>0、故に、2m×l×n>m×(l+1)
×nとなる。
【0026】次に、図7を用いて、上述のステップ50
2〜508の処理に対するパイプライン処理の適用を説
明する。図7は、図1における行列乗算装置の本発明に
係わるパイプライン処理の一実施例を示す説明図であ
る。本図において、61a〜61cは、記憶装置から行
列A格納回路への、行列Aの読み出し処理であり、図
中、例えば、AMR(k)は、記憶装置から行列A格納
回路への、行列Aの、k番目の読み出し処理を表わし、
図5のステップ502に対応する。また、62a〜62
cは、行列Aと行列Bの掛け算、及び、この乗算結果
の、図1の乗算結果格納回路5への書き込み処理であ
り、図中、例えば、MUX(k)は、k番目の行列Aと
行列Bの掛け算と書き込み処理を表わし、それぞれ、図
5のステップ503、504に対応する。
2〜508の処理に対するパイプライン処理の適用を説
明する。図7は、図1における行列乗算装置の本発明に
係わるパイプライン処理の一実施例を示す説明図であ
る。本図において、61a〜61cは、記憶装置から行
列A格納回路への、行列Aの読み出し処理であり、図
中、例えば、AMR(k)は、記憶装置から行列A格納
回路への、行列Aの、k番目の読み出し処理を表わし、
図5のステップ502に対応する。また、62a〜62
cは、行列Aと行列Bの掛け算、及び、この乗算結果
の、図1の乗算結果格納回路5への書き込み処理であ
り、図中、例えば、MUX(k)は、k番目の行列Aと
行列Bの掛け算と書き込み処理を表わし、それぞれ、図
5のステップ503、504に対応する。
【0027】また、63a〜63cは、図1の全加算結
果格納回路9から、加算結果格納回路6への累積加算結
果の読み出し処理であり、図中、例えば、ARR(k)
は、(k−1)回目までの累積加算結果の読み出し処理
を表わし、図5のステップ505に対応する。また、6
4a〜64cは、図1の乗算結果格納回路5の内容と加
算結果格納回路6の内容の足し算、及び、この加算結果
の図1の仮加算結果格納回路8への書き込み処理であ
り、図中、例えば、ADD(k)は、k番目の乗算結果
格納回路の内容と(k−1)回目までの加算結果格納回
路の内容の足し算と書き込み処理を表わし、それぞれ、
図5のステップ506、507に対応する。また、65
a〜65cは、図1の仮加算結果格納回路8の内容の全
加算結果格納回路9への書き込み処理であり、図中、例
えば、ARW(k)は、k番目の仮加算結果格納回路の
内容の全加算結果格納回路への書き込み処理を表わし、
図5のステップ508に対応する。
果格納回路9から、加算結果格納回路6への累積加算結
果の読み出し処理であり、図中、例えば、ARR(k)
は、(k−1)回目までの累積加算結果の読み出し処理
を表わし、図5のステップ505に対応する。また、6
4a〜64cは、図1の乗算結果格納回路5の内容と加
算結果格納回路6の内容の足し算、及び、この加算結果
の図1の仮加算結果格納回路8への書き込み処理であ
り、図中、例えば、ADD(k)は、k番目の乗算結果
格納回路の内容と(k−1)回目までの加算結果格納回
路の内容の足し算と書き込み処理を表わし、それぞれ、
図5のステップ506、507に対応する。また、65
a〜65cは、図1の仮加算結果格納回路8の内容の全
加算結果格納回路9への書き込み処理であり、図中、例
えば、ARW(k)は、k番目の仮加算結果格納回路の
内容の全加算結果格納回路への書き込み処理を表わし、
図5のステップ508に対応する。
【0028】このように、本実施例においては、図5に
おけるステップ502〜508の処理を、三つの独立し
た処理に分割する。このことにより、図1における行列
乗算装置11の演算速度を高速化することができる。さ
らに、行列を分割して行列の乗算を行なうことにより、
処理の高速化を図ることができ、以下、次の図8、図9
を用いて、その行列乗算装置の構成と動作を説明する。
おけるステップ502〜508の処理を、三つの独立し
た処理に分割する。このことにより、図1における行列
乗算装置11の演算速度を高速化することができる。さ
らに、行列を分割して行列の乗算を行なうことにより、
処理の高速化を図ることができ、以下、次の図8、図9
を用いて、その行列乗算装置の構成と動作を説明する。
【0029】図8は、本発明に係わる行列の分割形態の
一実施例を示す説明図である。本実施例においては、行
列A71を行方向にL分割する。そして、例えば、分割
した行列A71のI番目の行列aI72(図中の斜線部
分)の要素群と、行列B73全体(斜線部分)を処理す
ると、行列A71の他の行列の要素に関係なく、行列C
のI番目の行列cI74(斜線部分)の要素群が求めら
れる。ここで、次の図9に示すように、行列A71のそ
れぞれの行列に対応して、図1で説明した行列演算回路
を複数個設けて、各行列毎に、独立して処理を行なうこ
とができる。
一実施例を示す説明図である。本実施例においては、行
列A71を行方向にL分割する。そして、例えば、分割
した行列A71のI番目の行列aI72(図中の斜線部
分)の要素群と、行列B73全体(斜線部分)を処理す
ると、行列A71の他の行列の要素に関係なく、行列C
のI番目の行列cI74(斜線部分)の要素群が求めら
れる。ここで、次の図9に示すように、行列A71のそ
れぞれの行列に対応して、図1で説明した行列演算回路
を複数個設けて、各行列毎に、独立して処理を行なうこ
とができる。
【0030】図9は、図1における行列乗算装置の本発
明に係わる構成の第2の実施例を示すブロック図であ
る。本実施例においては、複数の行列演算回路81〜8
4で、それぞれ、図8に示す行列A71のa1〜aLま
での各行列と、行列B73との乗算を、並列して行なう
構成となっている。このように、行列Aの分割数(L
個)だけ、行列演算回路81〜84を設け、図8の行列
A71を分割した各行列a1〜aLの要素群と、行列B
全体とを、各行列演算回路81〜84に、並列に処理さ
せることにより、行列の乗算を、さらに高速に行なうこ
とができる。
明に係わる構成の第2の実施例を示すブロック図であ
る。本実施例においては、複数の行列演算回路81〜8
4で、それぞれ、図8に示す行列A71のa1〜aLま
での各行列と、行列B73との乗算を、並列して行なう
構成となっている。このように、行列Aの分割数(L
個)だけ、行列演算回路81〜84を設け、図8の行列
A71を分割した各行列a1〜aLの要素群と、行列B
全体とを、各行列演算回路81〜84に、並列に処理さ
せることにより、行列の乗算を、さらに高速に行なうこ
とができる。
【0031】以上、図1〜図9を用いて説明したよう
に、本実施例の行列乗算装置では、行列の乗算におい
て、一方の行列の一つの要素毎に、他方の行列の全ての
乗算要素の乗算を行なう。このことにより、記憶装置に
格納されている行列の要素の読み出し回数を削減するこ
とができる。また、行列乗算装置内部の演算技術に、パ
イプライン処理技術を用いることにより、処理時間を短
縮化できる。また、行列を分割して、並列処理が容易と
なるために、さらに、処理速度を高速化することができ
る。
に、本実施例の行列乗算装置では、行列の乗算におい
て、一方の行列の一つの要素毎に、他方の行列の全ての
乗算要素の乗算を行なう。このことにより、記憶装置に
格納されている行列の要素の読み出し回数を削減するこ
とができる。また、行列乗算装置内部の演算技術に、パ
イプライン処理技術を用いることにより、処理時間を短
縮化できる。また、行列を分割して、並列処理が容易と
なるために、さらに、処理速度を高速化することができ
る。
【0032】尚、本発明は、図1〜図9を用いて説明し
た実施例に限定されるものではない。例えば、図1〜図
6で説明した実施例においては、列単位で行列の乗算と
累積加算を行なっているが、行単位で行なっても良い。
また、行列乗算が全て完了するまで、全ての結果を、全
加算結果格納回路に格納し、まとめて、記憶装置に書き
込む動作で説明したが、例えば、本発明の部分加算結果
格納回路を用いることにより、加算結果が完了した要素
毎に、順次、記録装置への書き込みを行なうものでも良
い。
た実施例に限定されるものではない。例えば、図1〜図
6で説明した実施例においては、列単位で行列の乗算と
累積加算を行なっているが、行単位で行なっても良い。
また、行列乗算が全て完了するまで、全ての結果を、全
加算結果格納回路に格納し、まとめて、記憶装置に書き
込む動作で説明したが、例えば、本発明の部分加算結果
格納回路を用いることにより、加算結果が完了した要素
毎に、順次、記録装置への書き込みを行なうものでも良
い。
【0033】
【発明の効果】本発明によれば、処理装置と記憶装置間
のデータ転送回数を削減することができ、さらに、パイ
プライン処理技術、及び、並列演算技術を採用すること
により、行列の乗算を高速に処理することが可能とな
る。
のデータ転送回数を削減することができ、さらに、パイ
プライン処理技術、及び、並列演算技術を採用すること
により、行列の乗算を高速に処理することが可能とな
る。
【0034】
【図1】本発明を施した行列乗算装置の本発明に係わる
構成の第1の実施例を示すブロック図である。
構成の第1の実施例を示すブロック図である。
【図2】図1における行列乗算装置の本発明に係わる行
列の乗算手順の一実施例を示す説明図である。
列の乗算手順の一実施例を示す説明図である。
【図3】図1における行列乗算装置の本発明に係わる行
列の乗算手順の一実施例を示す説明図である。
列の乗算手順の一実施例を示す説明図である。
【図4】図1における行列乗算装置の本発明に係わる行
列の乗算手順の一実施例を示す説明図である。
列の乗算手順の一実施例を示す説明図である。
【図5】図1における行列乗算装置の本発明に係わる動
作の一実施例を示すフローチャートである。
作の一実施例を示すフローチャートである。
【図6】図1における行列乗算装置の本発明に係わる動
作の一実施例を示すフローチャートである。
作の一実施例を示すフローチャートである。
【図7】図1における行列乗算装置の本発明に係わるパ
イプライン処理の一実施例を示す説明図である。
イプライン処理の一実施例を示す説明図である。
【図8】本発明に係わる行列の分割形態の一実施例を示
す説明図である。
す説明図である。
【図9】本発明を施した行列乗算装置の本発明に係わる
構成の第2の実施例を示すブロック図である。
構成の第2の実施例を示すブロック図である。
【図10】行列の乗算の表記形態を示す説明図である。
【図11】従来のコンピュータによる行列の乗算手順を
示す説明図である。
示す説明図である。
【図12】従来の行列乗算を行なう処理装置の構成を示
すブロック図である。
すブロック図である。
【図13】図12における処理装置の行列乗算の動作を
示すフローチャートである。
示すフローチャートである。
1 記憶装置 1a 行列Aの要素 1b 行列Bの要素 1c 行列Cの要素 2 行列B格納回路 3 行列A格納回路 4 乗算回路 5 乗算結果格納回路 6 加算結果格納回路 7 加算回路 8 仮加算格納回路 9 全加算結果格納回路 10 制御回路 11 行列乗算装置 61a〜61c 行列Aの読み出し処理 62a〜62c 行列Aと行列Bの掛け算と書き込み処
理 63a〜63c 累積加算結果の読み出し処理 64a〜64c 乗算結果格納回路の内容と加算結果格
納回路の内容の足し算と書き込み処理 65a〜65c 全加算結果格納回路への書き込み処理 71 行列A 72 行列AのI番目の行列aI 73 行列B 74 行列CのI番目の行列cI 81〜84 行列演算回路 110 記憶装置 111 処理装置 112 行列Aの要素 113 行列Bの要素 114 行列A格納領域 115 行列B格納領域 116 レジスタ群 117 行列Cの要素 118 演算器 119 乗算結果格納領域 120 加算結果格納領域
理 63a〜63c 累積加算結果の読み出し処理 64a〜64c 乗算結果格納回路の内容と加算結果格
納回路の内容の足し算と書き込み処理 65a〜65c 全加算結果格納回路への書き込み処理 71 行列A 72 行列AのI番目の行列aI 73 行列B 74 行列CのI番目の行列cI 81〜84 行列演算回路 110 記憶装置 111 処理装置 112 行列Aの要素 113 行列Bの要素 114 行列A格納領域 115 行列B格納領域 116 レジスタ群 117 行列Cの要素 118 演算器 119 乗算結果格納領域 120 加算結果格納領域
Claims (10)
- 【請求項1】 記憶装置に格納されている第1および第
2の二つの行列の乗算を行ない、該乗算結果を、上記記
憶装置に書き込む行列乗算装置であり、上記記憶装置か
ら読み出した上記第1の行列の一つの要素毎に、該要素
に対応する上記第2の行列の全ての乗算要素を、上記記
憶装置から順次に読み出し、それぞれの掛け算を行な
い、上記第1の行列の各要素に対応する上記掛け算結果
を累積して加算する行列演算手段を設け、該行列演算手
段の加算結果を、上記記憶装置に書き込むことを特徴と
する行列乗算装置。 - 【請求項2】 請求項1に記載の行列乗算装置におい
て、上記行列演算手段は、上記記憶装置から上記第1の
行列の一つの要素を読み出す第1の行列読み出し手段
と、該第1の行列読み出し手段で読み出した要素に対応
する上記第2の行列の全ての乗算要素を、上記記憶装置
から順次に読み出す第2の行列読み出し手段と、該第2
の行列読み出し手段で順次に読み出す各乗算要素と、上
記第1の行列読み出し手段で読み出した一つの要素との
掛け算を、順次に行なう乗算手段と、該乗算手段によ
り、上記第1の行列読み出し手段と第2の行列読み出し
手段で順次に読み出す各要素に対応して算出されたそれ
ぞれの掛け算結果を、順次に累積加算する加算手段とを
具備し、該加算手段の加算結果を、上記記憶装置に書き
込むことを特徴とする行列乗算装置。 - 【請求項3】 請求項2に記載の行列乗算装置におい
て、上記第1の行列読み出し手段は、上記第1の行列の
同じ列の要素群から、上記一つの要素を順次に読み出す
ことを特徴とする行列乗算装置。 - 【請求項4】 請求項2に記載の行列乗算装置におい
て、上記第1の行列読み出し手段は、上記第1の行列の
同じ行の要素群から、上記一つの要素を順次に読み出す
ことを特徴とする行列乗算装置。 - 【請求項5】 請求項2から請求項4のいずれかに記載
の行列乗算装置において、上記第2の行列読み出し手段
は、上記第2の行列の同じ列の要素群から、上記乗算要
素を順次に読み出すことを特徴とする行列乗算装置。 - 【請求項6】 請求項2から請求項4のいずれかに記載
の行列乗算装置において、上記第2の行列読み出し手段
は、上記第2の行列の同じ行の要素群から、上記乗算要
素を順次に読み出すことを特徴とする行列乗算装置。 - 【請求項7】 請求項1から請求項6のいずれかに記載
の行列乗算装置において、上記行列演算手段は、上記加
算結果を格納する部分加算結果格納手段を具備し、該部
分加算結果格納手段に格納した加算結果が、それぞれ対
応する要素間の行列乗算を全て完了した時点で、該加算
結果を、上記記憶装置に順次に書き込むことを特徴とす
る行列乗算装置。 - 【請求項8】 請求項1から請求項6のいずれかに記載
の行列乗算装置において、上記行列演算手段は、全ての
要素間の行列乗算を完了するまで、上記加算結果を格納
する全加算結果格納手段を具備し、全ての要素間の行列
乗算を完了した時点で、該全加算結果格納手段に格納し
た全ての上記加算結果を、まとめて、上記記憶装置に書
き込むことを特徴とする行列乗算装置。 - 【請求項9】 請求項1から請求項8のいずれかに記載
の行列乗算装置において、少なくとも、上記行列演算手
段による上記第2の行列の各要素の上記記憶装置からの
読み出しと、上記乗算および加算とを含む動作を、パイ
プライン処理する制御手段を具備することを特徴とする
行列乗算装置。 - 【請求項10】 請求項1から請求項9のいずれかに記
載の行列乗算装置において、上記記憶装置に格納されて
いる第1および第2の二つの行列の乗算を、任意に分割
された単位で、それぞれ、並列に行なう複数個の上記行
列演算手段を設けることを特徴とする行列乗算装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP4125767A JPH05324700A (ja) | 1992-05-19 | 1992-05-19 | 行列乗算装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP4125767A JPH05324700A (ja) | 1992-05-19 | 1992-05-19 | 行列乗算装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH05324700A true JPH05324700A (ja) | 1993-12-07 |
Family
ID=14918329
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP4125767A Pending JPH05324700A (ja) | 1992-05-19 | 1992-05-19 | 行列乗算装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPH05324700A (ja) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009026308A (ja) * | 2007-07-19 | 2009-02-05 | Itt Manufacturing Enterprises Inc | 高速かつ効率的な行列乗算ハードウェアモジュール |
CN104238993A (zh) * | 2013-06-11 | 2014-12-24 | 亚德诺半导体技术公司 | 微处理器集成电路的向量矩阵乘积加速器 |
JP2015007546A (ja) * | 2013-06-24 | 2015-01-15 | 株式会社堀場製作所 | 粒子径分布測定装置 |
JP2015007547A (ja) * | 2013-06-24 | 2015-01-15 | 株式会社堀場製作所 | 粒子径分布測定装置 |
KR20170103949A (ko) * | 2015-02-06 | 2017-09-13 | 후아웨이 테크놀러지 컴퍼니 리미티드 | 데이터 처리 시스템, 계산 노드 및 데이터 처리 방법 |
JP2018036277A (ja) * | 2017-11-06 | 2018-03-08 | 株式会社堀場製作所 | 粒子径分布測定装置 |
CN112214726A (zh) * | 2017-07-07 | 2021-01-12 | 华为技术有限公司 | 运算加速器 |
JP2022506418A (ja) * | 2018-10-31 | 2022-01-17 | アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド | 部分行列の順序付けを伴う行列乗算器 |
-
1992
- 1992-05-19 JP JP4125767A patent/JPH05324700A/ja active Pending
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009026308A (ja) * | 2007-07-19 | 2009-02-05 | Itt Manufacturing Enterprises Inc | 高速かつ効率的な行列乗算ハードウェアモジュール |
CN104238993A (zh) * | 2013-06-11 | 2014-12-24 | 亚德诺半导体技术公司 | 微处理器集成电路的向量矩阵乘积加速器 |
CN104238993B (zh) * | 2013-06-11 | 2018-05-04 | 亚德诺半导体集团 | 微处理器集成电路的向量矩阵乘积加速器 |
JP2015007546A (ja) * | 2013-06-24 | 2015-01-15 | 株式会社堀場製作所 | 粒子径分布測定装置 |
JP2015007547A (ja) * | 2013-06-24 | 2015-01-15 | 株式会社堀場製作所 | 粒子径分布測定装置 |
US10408726B2 (en) | 2013-06-24 | 2019-09-10 | Horiba, Ltd. | Particle size distribution measuring apparatus |
JP2018508887A (ja) * | 2015-02-06 | 2018-03-29 | 華為技術有限公司Huawei Technologies Co.,Ltd. | データ処理システム、計算ノードおよびデータ処理方法 |
KR20170103949A (ko) * | 2015-02-06 | 2017-09-13 | 후아웨이 테크놀러지 컴퍼니 리미티드 | 데이터 처리 시스템, 계산 노드 및 데이터 처리 방법 |
US10567494B2 (en) | 2015-02-06 | 2020-02-18 | Huawei Technologies Co., Ltd. | Data processing system, computing node, and data processing method |
CN112214726A (zh) * | 2017-07-07 | 2021-01-12 | 华为技术有限公司 | 运算加速器 |
CN112214726B (zh) * | 2017-07-07 | 2024-05-03 | 华为技术有限公司 | 运算加速器 |
JP2018036277A (ja) * | 2017-11-06 | 2018-03-08 | 株式会社堀場製作所 | 粒子径分布測定装置 |
JP2022506418A (ja) * | 2018-10-31 | 2022-01-17 | アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド | 部分行列の順序付けを伴う行列乗算器 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP0240032B1 (en) | Vector processor with vector data compression/expansion capability | |
JP7550614B2 (ja) | インメモリコンピューティングに対するデータ配置のための方法及びその方法が適用されたメモリモジュール | |
JPH0312739B2 (ja) | ||
US4621324A (en) | Processor for carrying out vector operation wherein the same vector element is used repeatedly in succession | |
JPH0465426B2 (ja) | ||
JPH05324700A (ja) | 行列乗算装置 | |
JPH06162227A (ja) | ベクトル並列計算機 | |
JPH06502265A (ja) | 信号処理におけるマトリクス演算の計算回路装置 | |
WO2021168644A1 (zh) | 数据处理装置、电子设备和数据处理方法 | |
JPH06274528A (ja) | ベクトル演算処理装置 | |
CN116339680A (zh) | 一种实时的多端口并行读写近存处理器 | |
JP3333779B2 (ja) | 行列演算装置 | |
US20230161557A1 (en) | Compute-in-memory devices and methods of operating the same | |
JP2021005242A (ja) | 情報処理装置、情報処理プログラム、及び情報処理方法 | |
CN115809024A (zh) | 一种基于Winograd的相关算法加速器存储方法 | |
JPH0154746B2 (ja) | ||
JPH07239843A (ja) | 並列演算処理装置 | |
JPS6058503B2 (ja) | デ−タ処理制御方式 | |
JP3771682B2 (ja) | ベクトル処理装置 | |
US11249724B1 (en) | Processing-memory architectures performing atomic read-modify-write operations in deep learning systems | |
JP2643110B2 (ja) | 補助記憶装置を利用した連立1次方程式の解の高速計算方式 | |
JP3198977B2 (ja) | 演算装置及び演算方法並びにそれを実行するプログラムを格納した記録媒体 | |
CN118627566A (zh) | 一种加速ViT神经网络的异构存算装置及方法 | |
WO2024195694A1 (ja) | プロセッサ装置および演算方法 | |
Nakano et al. | Optimal Triangulation on the High Bandwidth Memory Model |