JP2015056124A - 行列演算装置 - Google Patents

行列演算装置 Download PDF

Info

Publication number
JP2015056124A
JP2015056124A JP2013190583A JP2013190583A JP2015056124A JP 2015056124 A JP2015056124 A JP 2015056124A JP 2013190583 A JP2013190583 A JP 2013190583A JP 2013190583 A JP2013190583 A JP 2013190583A JP 2015056124 A JP2015056124 A JP 2015056124A
Authority
JP
Japan
Prior art keywords
input
block
matrix
output
group
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.)
Granted
Application number
JP2013190583A
Other languages
English (en)
Other versions
JP5951570B2 (ja
Inventor
前田 誠司
Seiji Maeda
誠司 前田
弘之 薄井
Hiroyuki Usui
弘之 薄井
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.)
Toshiba Corp
Original Assignee
Toshiba 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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP2013190583A priority Critical patent/JP5951570B2/ja
Priority to US14/194,471 priority patent/US9483442B2/en
Publication of JP2015056124A publication Critical patent/JP2015056124A/ja
Application granted granted Critical
Publication of JP5951570B2 publication Critical patent/JP5951570B2/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

Landscapes

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

Abstract

【課題】演算結果を得るためのデータ転送量が少なく、かつ装置全体の回路規模が小さい行列演算装置を提供する。【解決手段】実施形態によれば、行列演算を実行する行列演算装置は、行列演算のための列データである第1の入力と行データである第2の入力に対して第1の演算を行って行列演算の演算結果の要素成分を出力する乗算器24と、乗算器24の演算結果を累積加算するアキュムレータ29とを有する複数のノード21を有する。【選択図】図2

Description

本発明の実施形態は、行列演算装置に関する。
従来、行列演算は、画像処理、認識処理などの各種処理において広く行われる。行列演算を行うための装置として、例えば、シストリック・アレイ、コンフィギュラブル・アレイ・プロセッサなどがある。
シストリック・アレイは、同一の回路を規則的に配置して、パイプライン処理と並列処理を行うようにしたシステムである。コンフィギュラブル・アレイ・プロセッサは、複数のノードと、ノード間の接続を変更するための複数のスイッチ部を有するプロセッサである。
しかし、シストリック・アレイでは、入力に対する演算が所定のサイクルで実行され、かつ各サイクルの演算結果が次のサイクルでそのまま入力として利用されるように構成され、装置全体で演算が繰り返し行われるため、所望の行列演算結果を得るまでのデータ転送量が多いという問題がある。
また、コンフィギュラブル・アレイ・プロセッサでは、ノード間の配線ネットワークの接続状態を切り替えるためのスイッチ回路が多数必要となるため、装置全体の回路規模が大きくなるという問題がある。
特表2009−535721号公報
クン、エイチ・ティ(Kung, H.T)著、「何故、シストリック・アーキテクチャ?(Why systolic architectures?)アイトリプルイー・コンピュータ(IEEE Computer)、 15巻1号(Volume:15, Issue: 1), 1982年 スナイダー、エル(Snyder, L.)著、「コンフィギュラブル、高並列計算機への招待(Introduction to the configurable, highly parallel computer), アイトリプルイー・コンピュータ(IEEE Computer)、15巻1号(Volume:15, Issue: 1), 1982年
そこで、実施形態は、演算結果を得るためのデータ転送量が少なく、かつ装置全体の回路規模が小さい行列演算装置を提供することを目的とする。
実施形態によれば、行列演算を実行する行列演算装置であって、前記行列演算のための列データである第1の入力と行データである第2の入力に対して第1の演算を行って前記行列演算の演算結果の要素成分を出力する第1の演算部と、前記第1の演算部の演算結果を累積加算するアキュムレータとを有する複数のノードを、を有する行列演算装置が提供される。
本実施形態に係わる行列演算システムの構成図である。 本実施形態に係わるノードの構成を示す回路図である。 本実施形態に係わる、図2の構成とは異なる構成を有する他のノードの構成を示す回路図である。 本実施形態に係わるブロック31の構成を示すブロック図である。 本実施形態に係わるアレイ12の構成を示すブロック図である。 本実施形態に係わる、ノード21の動作状態を説明するための図である。 本実施形態に係わる、行列Bと行列Aの行列積B×Aの演算とその演算結果の行列Sの出力を説明するための図である。 図7に示した動作状態の3クロック後の状態を説明するための図である。 図8に示した動作状態の3クロック後の状態を説明するための図である。 本実施形態に係わる、16×16行列積の演算を行う場合を説明するための図である。 本実施形態に係わる、8×8行列積の4並列演算を行う場合を説明するための図である。 本実施形態に係わる、8×8×8行列積の2並列演算を行う場合を説明するための図である。 本実施形態に係わる、8×8×8行列積の2分岐演算を行う場合を説明するための図である。 本実施形態に係わる、4×4行列積の16並列演算を行う場合を説明するための図である。 本実施形態に係わる、4×4×4×4×4行列積の4並列演算を行う場合を説明するための図である。 本実施形態に係わる、4×4×12行列積の4並列演算を行う場合を説明するための図である。
以下、図面を参照して実施形態を説明する。
(行列演算システムの構成)
図1は、本実施形態に係わる行列演算システムの構成図である。行列演算システム1は、アレイ部2と、データ管理部3と、制御部4と、インターコネクト5と、I/O部6とで構成される。
行列演算装置は、アレイ部2とデータ管理部3とにより構成され、行列積などの行列演算を実行する。制御部4は、アレイ部2とデータ管理部3内の各回路の動作制御と、アレイ部2とデータ管理部3間のデータ入出力制御とを行うための各種制御信号を出力する。
アレイ部2は、行列演算のための行列データ列である入力AとBが入力されるデータ入力回路11と、行列演算回路アレイ(以下、アレイという)12を含む。データ入力回路11は、データ管理部3から入力A、Bを入力してアレイ12へ供給する。アレイ12は、マトリックス状に配置された複数のブロック31(図4)で構成される。各ブロック31は、マトリックス状に配置された複数のノード21(図2)を含む回路で構成される。アレイ部2は、演算結果である出力Sをデータ管理部3へ出力する。
データ管理部3は、メモリ13と、リード部14と、ライト部15と、演算器16と、マルチプレクサ17とを有して構成されている。
メモリ13は、行列演算のための入力データと、演算結果である出力データが記憶される、SRAM等の記憶装置である。
リード部14は、メモリ13に記憶されている入力データを読み出して、アレイ部2のデータ入力回路11へ供給する回路である。
ライト部15は、アレイ12からの出力を、メモリ13へ書き込む回路である。
演算器16は、リード部14からの入力と、アレイ12からの出力とに対して所定の演算を行う回路であり、少なくとも加算機能を有する。ここでは、演算器16は、リード部14からの入力データと、アレイ12の出力データとを加算して出力する。なお、演算器16は、加算機能に加えて、減算機能、乗除算機能を備えていてもよい。すなわち、演算器16は、行列演算のための列データと行データと、複数のブロック31の出力とに対して所定の演算を行う。
マルチプレクサ17は、演算器16の出力と、アレイ12の出力とを入力し、いずれかを選択して出力する回路である。すなわち、マルチプレクサ17は、複数のブロック31を含むアレイ12の出力と、演算器16の出力とのいずれかを選択して出力する選択回路である。
マルチプレクサ17が、アレイ12の出力を選択して出力するか、演算器16の出力を選択して出力するかは、行列演算装置の演算内容によって決まる。よって、マルチプレクサ17がアレイ12と演算器16のいずれの出力を選択するかは、制御部4により設定される。すなわち、制御部4は、マルチプレクサ17の選択を制御する選択信号を出力する。
よって、行列演算システム1には、演算器16とマルチプレクサ17とがデータ管理部3に設けられているので、行列演算結果に、加算などの各種演算を容易に行うこともできる。
制御部4は、アレイ部2及びデータ管理部3内の各回路の動作を制御する回路である。例えば、制御部4は、アレイ部2内のレジスタのデータ保持、マルチプレクサの入力切替、データ管路部3内のリード部14のデータ読み出し、ライト部15のデータの書き込み、マルチプレクサ17の入力切替、などの動作を制御する各種制御信号及び各種設定信号を出力する。
インターコネクト5は、データ管理部3とI/O部6とを接続する、バスなどの相互接続網である。
I/O部6は、外部から入力データを受信して、インターコネクト5を介してデータ管理部3へ出力すると共に、演算結果である出力データを外部へ出力する回路である。
よって、行列演算システム1は、データ管理部3において行列演算対象データを外部から受信し、制御部4の制御の下、アレイ部2で行列演算を実行し、データ管理部3が行列演算結果データを、外部へ送信する。行列演算システム1の各構成は、半導体チップ上に形成されている。
(ノードの構成)
図2は、ノードの構成を示す回路図である。ノード21は、レジスタ22、23と、演算器としての乗算器24と、加算器25と、レジスタ26と、マルチプレクサ27と、レジスタ28とで構成される。そして、ノード21は、3つの入力端21ia、21ib、21isと、3つの出力端21oa、21ob、21osとを有する。
入力端21iaは、行列演算のA系列入力データ(例えば、行列の縦方向の入力データ列)が入力される端子である。入力端21ibは、行列演算のB系列入力データ(例えば、行列の横方向の入力データ列)が入力される端子である。入力端21isは、行列の演算結果の要素成分データ(例えば、演算結果の横方向のデータ列)が入力される端子である。
入力端21iaは、レジスタ22の入力に接続され、入力端21ibは、レジスタ23の入力に接続され、入力端21isは、マルチプレクサ27の2つの入力の一方に接続されている。
レジスタ22の出力は、乗算器24の2つの入力の一方と、出力端21oaとに接続されている。レジスタ23の出力は、乗算器24の2つの入力の他方と、出力端21obとに接続されている。乗算器24の出力は、加算器25の2つの入力の一方に接続されている。
加算器25の出力は、レジスタ26の入力に接続されている。レジスタ26の出力は、加算器25の2つの入力の他方と、マルチプレクサ27の2つの入力の他方に接続されている。加算器25とレジスタ26により、アキュムレータ29が構成される。アキュムレータ25の累積加算演算の実行は、制御部4により制御される。すなわち、各ノード21は、行列演算のための列データの入力と行データの入力に対して所定の演算を行う。各ノード21は、行列演算結果の要素成分を出力する演算器である乗算器24と、乗算器24の演算結果を累積加算するアキュムレータ29とを有する。
マルチプレクサ27の出力は、レジスタ28の入力に接続されている。レジスタ28の出力は、出力端21osに接続されている。
ノード21は、3つの入力端21ia、21ib、21isに、それぞれデータ列である入力A、B、Sが入力可能に構成されている。入力Aはレジスタ22に保持され、レジスタ22の出力は出力端21oaに出力Aとして出力される。入力Bはレジスタ23に保持され、レジスタ23の出力は出力端21obに出力Bとして出力される。
すなわち、各ノード21は、行列演算の演算対象の2つの行列の一方の列データを入力する入力端21iaと、2つの行列の他方の行データを入力する入力端21ibと、入力された列データを出力する出力端21oaと、入力された行データを出力する出力端21obと、を有する。
さらに、各ノード21は、アキュムレータ29の累積加算結果を出力する出力端21osを有し、後段のノードは、前段ノードの演算結果を入力するための入力端21isを有する。そして、後段のノードは、入力端21isの入力と、アキュムレータ29の累積加算結果とのいずれかを選択して出力する。
演算器である加算器25の出力は、レジスタ26に保持される。入力Sとレジスタ26の値のいずれかがマルチプレクサ27で選択されてレジスタ28に保持され、レジスタ28の出力は出力Sとして出力端21osに出力されるように、ノード21は構成されている。
選択回路であるマルチプレクサ27が2つの入力のいずれを選択して出力するかは、制御部4からの設定信号により設定される。すなわち、制御部4は、選択回路であるマルチプレクサ27の選択を制御する選択信号を出力する。
レジスタ22とレジスタ23の出力は、演算器である乗算器24により演算される。なお、ノード21の演算器は、少なくとも乗算機能を備え、他に加減算や除算など他の演算機能も備えていてもよい。
乗算器24の出力とレジスタ26の出力は、演算器である加算器25によって加算の演算が行われる。なお、アキュムレータ29の演算器は、少なくとも加算機能を備え、他に減算や乗除算など他の演算を備えていてもよい。
ノード21は、行列演算装置の各ブロックの演算カーネルであり、入力A、B、Sを入力し、入力AとBに対して所定の演算を行い、入力Aを出力Aとして、入力Bを出力Bとして、入力S若しくは演算結果の累積値を出力Sとして出力することが可能に構成されている。
なお、ノード21は、図2の構成以外の構成を有してもよい。図3は、図2の構成とは異なる構成を有する他のノードの構成を示す回路図である。なお、図3において、図2に示す構成要素と同じ要素については、同じ符号を付して説明は、省略し、異なる構成について説明する。
図3に示すノード21Aは、レジスタ22、23と、演算器としての乗算器24と、加算器25と、レジスタ26と、マルチプレクサ27とで構成される。そして、ノード21Aは、2つの入力端21ia、21ibと、2つの出力端21oa、21obを有する。
マルチプレクサ27の2つの入力の一方には、レジスタ26の出力が接続され、マルチプレクサ27の2つの入力の他方には、レジスタ23の出力が接続されている。
マルチプレクサ27の出力は、出力端21obに接続されている。よって、レジスタ23の出力とレジスタ26の出力のいずれかが、マルチプレクサ27において選択されて、出力端21obに出力される。
図3の構成においても、ノード21の演算器は、少なくとも乗算機能を備え、他に加減算や除算など他の演算機能も備えていてもよい。さらに、図3の構成においても、少なくとも加算機能を備え、他に減算や乗除算など他の演算を備えていてもよい。
図3のノード21Aは、ノード21の入力B、S、及び出力B、Sを共通化し、レジスタ28を省略したものである。ノード21Aの動作は、ノード21の動作において入力Sと出力Sを用いる代わりに入力Bと出力Bを用いるのと等価であるため、以下、本実施の形態の行列演算装置は、ノード21の構成を用いて説明する。
(ブロックの構成)
上述したノード21が複数個用いられて、ブロック31が形成される。ブロック31は、マトリックス状に配列され、接続された複数(ここでは、4×4の16個)のノード21で構成されている。
図4は、ブロック31の構成を示すブロック図である。ブロック31は、行方向(横方向)と列方向(縦方向)に接続された複数のノード21で構成されている。ここでは、ブロック31は、16個のノードを含み、4×4の行列演算を行う単位ブロックである。
図4において、ブロック31の上端の複数(ここでは4つ)のノード21の複数(ここでは4つ)の入力Aが、ブロック31の入力群Aであり、ブロック31の左端の複数(ここでは4つ)のノード21の複数(ここでは4つ)の入力Bと複数の入力Sが、それぞれブロック31の入力群Bと入力群Sである。すなわち、上端ノード群N11、N12、N13、N14の入力Aがブロック31の入力群Aであり、左端ノード群N11、N21、N31、N41の入力Bと入力Sが、それぞれブロック31の入力群Bと入力群Sである。
そして、ブロック31の下端の複数(ここでは4つ)のノード21の複数(ここでは4つ)の出力Aが、ブロック31の出力群Aであり、ブロック31の右端の複数(ここでは4つ)のノード21の複数(ここでは4つ)の出力Bと出力Sが、ブロック31の出力群Bと出力群Sである。すなわち、下端ノード群N41、N42、N43、N44の出力Aがブロック31の出力群Aであり、右端ノード群N14、N24、N34、N44の出力Bと出力Sが、それぞれブロック31の出力群Bと出力群Sである。
ブロック31の内部では、行方向(すなわち横方向)には、各ノード21の出力Bと出力Sが、それぞれ右横方向に隣接したノード21の入力Bと入力Sに接続される。縦方向(すなわち列方向)には、各ノードの出力Aが、下縦方向に隣接したノード21の入力Aに接続される。
以上のように、ブロック31は、ノード21を複数(ここでは4×4で16個)接続し、ノード21間で入力データA、B、Sと出力データA、B、Sとを行方向と列方向に接続して構成されている。
(アレイの構成)
上述したブロック31が複数個用いられて、行列演算システム1のアレイ12が形成される。アレイ12は、行方向(横方向)と列方向(縦方向)に接続された複数(ここでは4×4の16個)のブロック31を含んで構成される。
図5は、アレイ12の構成を示すブロック図である。アレイ12は、行方向と列方向のマトリックス状に接続された複数(ここでは16個)のブロック31を含んで構成されている。
図5のアレイ12には、縦方向の入力群A1、A2、A3、A4の入力部12Aと、横方向の入力群B1、B2、B3、B4の入力部12Bと、横方向の出力群S1、S2、S3、S4の出力部12Sとが設けられている。
アレイ12には、入力群A1、A2、A3、A4と入力群B1、B2、B3、B4への入力データが、制御部4の制御の下、データ管理部3からデータ入力回路11を介して供給される。
アレイ12の上端の複数(ここでは4つ)のブロック31の複数(ここでは4つのブロックB11、B12、B13、B14)への入力A1が、アレイ12の第1の縦入力群であり、アレイ12の左端の複数(ここでは4つ)のブロック31の複数(ここでは4つのブロックB11、B21、B31、B41)の入力B1が、アレイ12の第1の横入力群である。すなわち、上端ブロック群31の複数の入力A1がアレイ12の第1の縦入力群A1であり、左端ブロック群31の複数の入力B1が、アレイ12の第1の横入力群B1である。
そして、アレイ12の右端の複数(ここでは4つ)のブロック31の複数(ここでは4つのブロックB14、B24、B34、B44)の出力S1が、アレイ12の第1の出力群S1である。すなわち、右端ブロック群12の複数の出力S1がアレイ12の第1の出力群S1である。
アレイ12の内部では、縦方向(すなわち列方向)には、各ブロック31の出力Aが、下縦方向に隣接したブロック31の入力Aに接続されたマルチプレクサの入力に接続される。上端ブロック群B11、B12、B13、B14を除くアレイ12内の各ブロック31の入力Aには、マルチプレクサにより選択された複数の入力の1つが入力される。
行方向(すなわち横方向)には、各ブロック31の出力Sが、横方向に隣接した後段のブロック31の入力Sに接続されている。
さらに、右から2列目のブロック群B13、B23、B33、B43のそれぞれの出力Sは、第2の出力群S2に接続されている。左から2列目のブロック群B12、B22、B32、B42のそれぞれの出力Sは、第3の出力群S3に接続され、左端ブロック群B11、B21、B31、B41のそれぞれの出力Sは、第4の出力群S4に接続されている。
各ブロック31の出力Bは、横方向に隣接した後段のブロック31の入力Bに接続されたマルチプレクサの入力に接続される。左端ブロック群B11、B21、B31、B41を除くアレイ12内の各ブロック31の入力Bには、マルチプレクサにより選択された複数の入力の1つが入力される。
具体的には、図5の4×4のブロックにおいて、上端ブロックB11,B12,B13,B14のそれぞれの入力Aには、入力A1が入力される。左端ブロックB11,B21,B31,B41のそれぞれの入力Bには、入力B1が入力される。
2行目のブロックB21,B22,B23,B24の入力Aには、ブロックB11,B12,B13,B14のそれぞれの出力Aと入力A2のいずれかを選択して出力するマルチプレクサm1の出力が接続されている。3行目のブロックB31,B32,B33,B34の入力Aには、ブロックB21,B22,B23,B24のそれぞれの出力Aと入力A3のいずれかを選択して出力するマルチプレクサm2の出力が接続されている。下端ブロックB41,B42,B43,B44の入力Aには、ブロックB31,B32,B33,B34のそれぞれの出力Aと入力A4のいずれかを選択して出力するマルチプレクサm3の出力が接続されている。
左から2列目のブロックB12,B22,B32,B42の入力Sには、前段のブロックである左端ブロックB11,B21,B31,B41のそれぞれの出力Sが入力される。
左から2列目のブロックB12,B22,B32,B42の各入力Bには、複数の入力の中から選択された1つが入力される。そのため、ブロックB12,B22,B32,B42には、それぞれマルチプレクサm11,m21,m31,m41が接続され、特に、マルチプレクサm21,m31,m41にブロックB11の出力Sが入力されるように、ブロックB11の出力Sは、マルチプレクサm21,m31,m41と接続線L1により接続されている。
ブロックB12の入力Bは、入力B1、ブロックB11の出力B,Sのいずれかを選択して出力するマルチプレクサm11の出力に接続されている。ブロックB22の入力Bは、入力B2、ブロックB21の出力B,S、ブロックB11の出力Sのいずれかを選択して出力するマルチプレクサm21の出力に接続されている。ブロックB32の入力Bは、入力B2、ブロックB31の出力B,S、ブロックB11の出力Sのいずれかを選択して出力するマルチプレクサm31の出力に接続されている。ブロックB42の入力Bは、入力B2、ブロックB41の出力B,S、ブロックB11の出力Sのいずれかを選択して出力するマルチプレクサm41の出力に接続されている。
左から3列目のブロックB13,B23,B33,B43の入力Sには、前段のブロックである、左から2列目のブロックB12,B22,B32,B42のそれぞれの出力Sが入力される。
左から3列目のブロックB13,B23,B33,B43の各入力Bには、複数の入力の中から選択された1つが入力される。そのため、ブロックB13の入力Bは、入力B3、ブロックB12の出力B,Sのいずれかを選択して出力するマルチプレクサm12の出力に接続されている。ブロックB23の入力Bは、入力B3、ブロックB22の出力B,Sのいずれかを選択して出力するマルチプレクサm22の出力に接続されている。ブロックB33の入力Bは、入力B3、ブロックB32の出力B,S、ブロックB12の出力Sのいずれかを選択して出力するマルチプレクサm32の出力に接続されている。そのため、ブロックB12の出力Sは、マルチプレクサm32と接続線L2により接続されている。
ブロックB43の入力Bは、入力B3、ブロックB42の出力B,S、ブロックB22の出力Sのいずれかを選択して出力するマルチプレクサm42の出力に接続されている。そのため、ブロックB22の出力Sは、マルチプレクサm42と接続線L3により接続されている。
右端ブロックB14,B24,B34,B44の入力Sには、前段のブロックである、左から3列目のブロックB13,B23,B33,B43のそれぞれの出力Sが入力される。
右端ブロックB14,B24,B34,B44の各入力Bには、複数の中から選択された1つが入力される。そのため、ブロックB14の入力Bは、入力B4、ブロックB13の出力B,Sのいずれかを選択して出力するマルチプレクサm13の出力に接続されている。
ブロックB24の入力Bは、入力B4、ブロックB23の出力B,Sのいずれかを選択して出力するマルチプレクサm23の出力に接続されている。ブロックB34の入力Bは、入力B4、ブロックB33の出力B,Sのいずれかを選択して出力するマルチプレクサm33の出力に接続されている。ブロックB44の入力Bは、入力B4、ブロックB43の出力B,Sのいずれかを選択して出力するマルチプレクサm43の出力に接続されている。
以上のように、選択回路であるマルチプレクサm11,m12,m13等に入力される前段のブロック31の累積加算結果は、マトリックスの同じ行の前段ブロック等に含まれる各ノード21のアキュムレータ29の累積加算結果である。
さらに、選択回路であるマルチプレクサm21,m31,m41,m32,m42に入力される累積加算結果には、マトリックスの異なる列の前段ブロックに含まれる各ノード21のアキュムレータ29の累積加算結果も含まれる。
さらに、複数のブロック31の後段ブロックでは、前段ブロックに含まれる各ノード21のアキュムレータ29の累積加算結果と、前段ブロック以外から入力とのいずれかを選択して出力する選択回路であるマルチプレクサm11,m21,...m43を介して、複数のノード21の入力端21ibに行データが入力される。
以上のように、アレイ12は、複数のブロック31を含み、各ブロック31は、複数のノード21で構成される。ブロック31は、ノード21を複数(ここでは4×4で16個)接続し、ノード21間で入力データA,B,Sと出力データA,B,Sとを行方向と列方向に接続して構成されている。アレイ12内では、各ブロックの入力群Bには、3つ又は4つの値から選択された1つが入力される。
特に、ブロックB12,B13,B14の入力Bには、それぞれ、3つ(左横方向に隣接したブロック31の出力B、左横方向に隣接したブロック31の出力S、及び、アレイ12の入力B2からB4のいずれか1つ、の3つ)の値から選択された1つが入力される。
さらに、ブロックB22,B32,B42の入力Bには、それぞれ、3つの入力に加えて、接続線L1を介して入力されるブロックB11の出力Sも含む4つの入力から選択された1つが入力される。
さらに、ブロックB33の入力Bには、3つ(左横方向に隣接したブロック31の出力B、左横方向に隣接したブロック31の出力S、及びアレイ12の入力B3の3つ)の値に加えて、接続線L2を介して入力されるブロックB12の出力Sを含む4つの値から選択された1つが入力される。すなわち、ブロックB33の入力Bとして、ブロックB12の出力Sも選択できるようになっている。
また、ブロックB43の入力Bには、3つ(左横方向に隣接したブロック31の出力B、左横方向に隣接したブロック31の出力S、及びアレイ12の入力B3の3つ)の値に加えて、接続線L3を介して入力されるブロックB22の出力群Sを含む4つの値から選択された1つが入力される。すなわち、ブロックB43の入力Bとして、ブロックB22の出力Sも選択できるようになっている。
そして、行方向(すなわち横方向)には、各ブロック31の出力Sが、右横方向に隣接したブロック31の入力Sに接続される。
列方向(すなわち縦方向)には、上端ブロック群B11,B12,B13,B14には、アレイ12の第1の入力群A1が入力される。2行目のブロック群B21,B22,B23,B24では、各ブロック31の入力Aとして、上縦方向に隣接したブロック31の出力Aと、アレイ12の第2の入力群A2とのいずれかが選択できるようになっている。3行目のブロック群B31,B32,B33,B34では、各ブロック31の入力Aとして、上縦方向に隣接したブロック31の出力Aと、アレイ12の第3の入力群A3とのいずれかが選択できるようになっている。4行目のブロック群B41,B42,B43,B44では、各ブロック31の入力Aとして、上縦方向に隣接したブロック31の出力Aと、アレイ12の第4の入力群A4とのいずれかが選択できるようになっている。
そして、アレイ12は、第1〜第4の出力群を複数出力することができるように構成されている。
(作用)
次に、行列演算システム1の動作を説明する。
(ノードの動作)
まず、ノード21の動作を説明する。制御部4は、各ノード21内のレジスタ26を初期化するように各ノード21を制御する。
ここでは、4行4列の行列Aと4行4列の行列Bとの積を説明する。
行列Aは、次の式(1)で示す値の要素成分(以下、要素という)を有する行列である。
式1
Figure 2015056124
また、行列Bは、次の式(2)で示す値の要素を有する行列である。
式2
Figure 2015056124
行列Sは、行列積の行列であり、次の式(3)で示す値の要素を有する行列である。
式3
Figure 2015056124
図2に示すノード21の入力Aに、行列Aの第1列(a11〜a41)のデータ列の入力Aが、順次入力され、ノード21の入力Bに、行列Bの第1行(b11〜b14)のデータ列の入力Bが、順次入力されるとする。
入力Aに値a11が、入力Bに値b11が入力されると、値a11は、レジスタ22に保持され、値b11は、レジスタ23に保持される。乗算器24において、値a11とb11とが乗算される。乗算器24の出力である乗算値(a11*b11)が、加算器25で「0」と加算されて、加算器25の出力である加算値として、レジスタ26に保持される。
次に、出力Aに値a11が出力され、出力Bに値b11が出力される。同時に、入力Aに値a21が、入力Bに値b12が入力されると、値a21は、レジスタ22に保持され、値b12は、レジスタ23に保持される。乗算器24において、値a21とb12とが乗算される。このときのノード21の内部状態は、図6に示されている。
図6は、ノード21の動作状態を説明するための図である。乗算器24の出力である乗算値(a21*b12)が、加算器25で値(a11*b11)と加算されて、加算器25の出力である加算値として、レジスタ26に保持される。
以下、同様に、入力a31,a41と入力b13,b14が、それぞれ入力Aと入力Bに入力され、結果として、レジスタ26には、値(a11*b11+a21*b12+a31*b13+a41*b14)が保持される。この値(a11*b11+a21*b12+a31*b13+a41*b14)は、行列Aの第1列と行列Bの第1行のベクトル積の結果である。
このベクトル積の値は、マルチプレクサ27の2つの入力の一方に入力され、制御部4の制御の下で、レジスタ28で保持され、レジスタ28からへ出力可能となっている。その結果、ベクトル積の値は、ノード21の出力Sから出力可能となる。
以上のように、各ノード21において、4行4列の行列Aと4行4列の行列Bとの積におけるベクトル積が演算可能となっている。なお、ここでは、各ノード21は、4行4列の行列積を演算可能なノードであるが、任意のサイズの行列積を演算できるノードであってもよいことは言うまでもない。
(ブロックの動作)
ブロック31の動作を説明する。制御部4は、各ノード21のデータの入出力のタイミングを制御する。
図7は、行列Bと行列Aの行列積B×Aの演算とその演算結果の行列Sの出力を説明するための図である。
ブロック31は、入力群Aとして、行列Aの各列が、上側ノード行より順に入力可能に構成されている。更に、行列Aの各列の各要素は、上側ノード行よりも1サイクル遅延して入力される。
ブロック31は、入力群Bとして、行列Bの各行が、左側ノード列より順に入力可能に構成されている。更に、行列Bの各行の各要素は、左側ノード列よりも1サイクル遅延して入力される。
このように入力群AとBが順次入力されると、各ノード21のレジスタ26には、行列Aと行列Bの行列積の各要素が順次保持される。例えば、図7において、行列積B×Aの演算のために、左上のノードN11には、入力Aからa11、a21、a31、a41が順に入力される。入力Bからb11、b12、b13、b14が順に入力されるため、レジスタ26にはb11×a11+b12×a21+b13×a31+b14×a41が、すなわち行列積の演算結果である行列Sの要素s11が保持される。
同様に、ノード21には、入力からa11、a21、a31、a41が順に入力される。入力Bからb21、b22、b23、b24が順に入力されるため、行列Sのs21(=b21×a11+b22×a21+b23×a31+b24×a41)が保持される。同様に、ノード12には、行列Sのs12(=b12×a12+b12×a22+b13×a32+b14×a42)が保持される。図7は、ノードN11において、行列Sの要素s11が生成されて保持されたときの動作状態を示す。
図8は、図7に示した動作状態の3クロック後の状態を説明するための図である。各ノード21で計算された行列Sの各要素は、各ノード21の出力Sを介して、順にノード行の右方向に出力される。各ノード21は、入力Sから入力された行列Sの各要素と、自ノードで演算された行列Sの各要素を共に有する場合には、入力Sから入力された行列Sの各要素を選択して出力Sに出力するように、制御部4により各マルチプレクサ27は制御される。
図9は、図8に示した動作状態の3クロック後の状態を説明するための図である。ブロック31の出力群Sからは、行列Sの各要素が、左側要素から順に出力される。
(アレイの動作)
次に、アレイ12の動作を説明する。
(16×16行列積の演算の場合)
まず、アレイ12を用いて16×16行列積を演算する場合を説明する。
図10は、16×16行列積の演算を行う場合を説明するための図である。より具体的には、図10は、アレイ12を用いて16行n列(nは正の整数)の行列Bとn行16列の行列Aとの行列積B×Aを演算し、演算結果の行列Sを取得する場合を説明するための図である。図10において、太線で示した入力あるいは出力が選択されるように、制御部4は、各マルチプレクサm1〜m3,m11〜m43において出力する入力データの選択設定を行う。
ブロックB21〜B24、ブロックB31〜B34、ブロックB41〜B44では、入力群Aとして、上隣接ブロック31の出力群Aを選択される。例えば、ブロックB21の入力群Aとして、ブロックB11出力群Aが選択される。
また、ブロックB12〜B14、ブロックB22〜B24、ブロックB32〜B34、ブロックB42〜B44の入力群Bとして、左隣接ブロック31の出力群Bが選択される。ブロックB12〜B14、ブロックB22〜B24、ブロックB32〜B34、ブロックB42〜B44の入力群Sとして、左隣接ブロック31の出力群Sが入力される。よって、例えば、ブロックB12の入力群Bと入力群Sには、ブロックB11の出力群Bと出力群Sが入力される。
以上のようにアレイ12を構成した場合に、入力群A1に行列Aの各列を、入力群B1に行列Bの各行を、順に入力すると、出力群S0に行列Sの各行が、順に出力される。
なお、行列Sの各要素は、各ブロック31の出力群Sから出力されるので、行列Sの各要素を、出力群S1〜S3 より取得するようにしてもよい。
(8×8行列積の4並列演算の場合)
次に、アレイ12を用いて、8×8行列積を4つ並列に演算する場合を説明する。
図11は、8×8行列積の4並列演算を行う場合を説明するための図である。より具体的には、図11は、アレイ12を用いて、8行n列(nは正の整数)の行列B1〜B4とn行8列の行列A1〜A4の行列積B×Aを4種同時に演算し、演算結果の4つの行列S1〜S4を取得する場合を説明するための図である。図11において、太線で示した入力あるいは出力が選択されるように、制御部4は、各マルチプレクサm1〜m3,m11〜m43において出力する入力データの選択設定を行う。
ブロックB21〜B24、ブロックB41〜B44では、入力群Aとして、上隣接ブロックの出力群Aが選択される。例えば、ブロックB21の入力群Aには、ブロックB11の出力群Aが入力される。
また、ブロックB31〜B34では、入力群Aとして、アレイ12の入力群A3が選択される。
また、ブロックB12、B14、ブロックB22、B24、ブロックB32、B34、ブロックB42、B44では、入力群Bおよび入力群Sとして、左隣接ブロックの出力群Bおよび出力群Sがそれぞれ選択される。例えば、ブロックB12の入力群Bと入力群Sには、ブロックB11の出力群Bと出力群Sが、それぞれ入力される。
また、ブロックB13、ブロックB23、ブロックB33、ブロックB43では、入力群Bとして、アレイ12の入力群B3が入力される。
以上のようにアレイ12を構成した場合に、入力群A1に行列A1〜A2の各列を、入力群A3に行列A3〜A4の各列を、入力群B1に行列B1〜B2の各行を、入力群B3に行列B3〜B4の各行を、順に入力すると、出力群S3に行列S1〜S2の各行が、出力群S1に行列S3〜S4の各行が、順に出力される。
すなわち、図11において、2点鎖線で示す4つのブロック群41のそれぞれが、8×8の行列演算を行い、アレイ12は、8×8行列積の4並列演算を実行することができる。
(8×8×8行列積の2並列演算の場合)
次に、アレイ12を用いて、8×8×8行列積を2つ並列に演算する場合を説明する。 図12は、8×8×8行列の2並列演算を行う場合を説明するための図である。より具体的には、図12は、アレイ12を用いて、8行n列(nは正の整数)の行列B1〜B2とn行8列の行列A1〜A2の行列積B×Aを演算し、その演算結果に8行8列の行列C1〜C2の行列積を2種同時に演算し、演算結果の行列S1〜S2を取得する場合を説明するための図である。図12において、太線で示した入力あるいは出力が選択されるように、制御部4は、各マルチプレクサm1〜m3,m11〜m43において出力する入力データの選択設定を行う。
ブロックB21〜B24、ブロックB41〜B44では、入力群Aとして、上隣接ブロックの出力群Aが選択される。例えば、ブロックB21の入力群Aには、ブロックB11の出力群Aが選択される。
また、ブロックB31〜B34では、入力群Aとして、アレイ12の入力群A3が選択される。
また、ブロックB12、B14、ブロックB22、B24、ブロックB32、B34、ブロックB42、B44では、入力群Bおよび入力群Sとして、左隣接ブロックの出力群Bおよび出力群Sがそれぞれ選択される。例えば、ブロックB12の入力群Bと入力群Sには、ブロックB11の出力群Bと出力群Sが、それぞれ入力される。
また、ブロックB13、ブロックB23、ブロックB33、ブロックB43では、入力群Bとして、左隣接ブロックの出力群Sが選択される。例えば、ブロックB13の入力群Bには、ブロックB12の出力群Sが入力される。
以上のようにアレイ12を構成した場合に、入力群A1に行列A1とC1の各列を、入力群A3に行列A2とC2の各列を、入力群B1に行列B1〜B2の各行を、順に入力すると、出力群S1に行列S1〜S2の各行が、順に出力される。
すなわち、図12において、2点鎖線で示す2つのブロック群42のそれぞれが、8×8×8の行列演算を行い、アレイ12は、8×8×8行列積の2並列演算を実行することができる。
(8×8×8行列積の2分岐演算の場合)
次に、アレイ12を用いて、8×8×8行列積の2分岐演算をする場合を説明する。
図13は、8×8×8行列積の2分岐演算を行う場合を説明するための図である。より具体的には、図13は、アレイ12を用いて、8行n列(nは正の整数)の行列Bとn行8列の行列Aの行列積B×Aを演算し、その演算結果に8行8列の行列C1〜C2の行列積を2種同時に演算し、演算結果の行列S1〜S2を取得する場合を説明するための図である。図13において、太線で示した入力あるいは出力が選択されるように、制御部4は、各マルチプレクサm1〜m3,m11〜m43において出力する入力データの選択設定を行う。
ブロックB21〜B24、ブロックB 43〜B 44では、入力群Aとして、上隣接ブロックの出力群Aが選択される。例えば、ブロックB 21の入力群Aには、ブロックB 11の出力群Aが入力される。
また、ブロックB 33〜B 34では、入力群Aとして、アレイの入力群A3が選択される。
また、ブロックB 12、B 14、ブロックB 22、B 24、ブロックB 34、ブロックB 44では、入力群Bおよび入力群Sとして、左隣接ブロックの出力群Bおよび出力群Sが、それぞれ選択される。例えば、ブロックB 12の入力群Bと入力群Sには、ブロックB 11の出力群Bと出力群Sが、それぞれ入力される。
また、ブロックB 13、ブロックB 23では、入力群Bとして、左隣接ブロックの出力群Sが入力される。例えば、ブロックB 13の入力群Bには、ブロックB 12の出力群Sが入力される。
ブロックB 33、ブロックB 43では、入力群Bとして、左2つ上ブロックの出力群Sが選択される。例えば、ブロックB 33の入力群Bには、ブロックB 12の出力群Sが入力される。
以上のようにアレイ12を構成した場合に、入力群A1に行列AとC1の各列を、入力群A2の右半分にC2の各列を、入力群B1に行列Bの各行を、順に入力すると、出力群S1に行列S1〜S2の各行が、順に出力される。
すなわち、図13において、2点鎖線で示す3つのブロック群43のそれぞれが、8×8の行列演算を行い、アレイ12は、8×8×8行列積の2分岐演算を実行することができる。
(4×4行列の16並列演算の場合)
次に、アレイ12を用いて、4×4行列の16並列演算をする場合を説明する。
図14は、4×4行列の16並列演算を行う場合を説明するための図である。より具体的には、図14は、アレイ12を用いて、4行n列(nは正の整数)の行列B1〜B16とn行4列の行列A1〜A16の行列積B×Aを16種同時に演算し、演算結果の行列S1〜S16を取得する場合を説明するための図である。図14において、太線で示した入力あるいは出力が選択されるように、制御部4は、各マルチプレクサm1〜m3,m11〜m43において出力する入力データの選択設定を行う。
ブロックB21〜B24では、入力群Aとして、アレイ12の入力群A2が、ブロックB31〜B34では、入力群Aとして、アレイ12の入力群A3が、ブロックB41〜B44では、入力群Aとして、アレイ12の入力群A4が、それぞれ選択される。
ブロックB12、ブロックB22、ブロックB32、ブロックB42では、入力群Bとして、アレイ12の入力群B2が、ブロックB13、ブロックB23、ブロックB33、ブロックB43では、入力群Bとして、アレイ12の入力群B3が、ブロックB14、ブロックB24、ブロックB34、ブロックB44では、入力群Bとして、アレイ12の入力群B4が、それぞれ選択される。
上記のようにアレイ12を構成した場合に、入力群A1に行列A1〜A4の各列を、入力群A2に行列A5〜A8の各列を、入力群A3に行列A9〜A12の各列を、入力群A4に行列A13〜A16の各列を、入力群B1に行列B1〜B4の各行を、入力群B2に行列B5〜B8の各行を、入力群B3に行列B9〜B12の各行を、入力群B4に行列B13〜B16の各行を、順に入力すると、出力群S4に行列S1〜S4の各行が、ア出力群S3に行列S5〜S8の各行が、出力群S2に行列S9〜S12の各行が、出力群S1に行列S13〜S16の各行が、順に出力される。
すなわち、図14において、各ブロック群31が、4×4の行列演算を行い、アレイ12は、4×4行列積の16個の演算を並列実行することができる。
(4×4×4行列積の4並列演算の場合)
次に、アレイ12を用いて、4×4×4×4×4行列積の4並列演算をする場合を説明する。
図15は、4×4×4×4×4行列積の4並列演算を行う場合を説明するための図である。より具体的には、図15は、アレイ12を用いて、4行n列(nは正の整数)の行列B1〜B4とn行4列の行列A1〜A4の行列積B×Aを演算し、その演算結果に4行4列の行列C1〜C4の行列積を演算し、更に、その演算結果に4行4列の行列D1〜D4の行列積を演算し、更に、その演算結果に4行4列の行列E1〜E4の行列積を、4種同時に演算し、演算結果の行列S1〜S4を取得する場合を説明するための図である。図15において、太線で示した入力あるいは出力が選択されるように、制御部4は、各マルチプレクサm1〜m3,m11〜m43において出力する入力データの選択設定を行う。
ブロックB21〜B24では、入力群Aとして、アレイ12の入力群A2が、ブロックB31〜B34では、入力群Aとして、アレイ12の入力群A3が、ブロックB41〜B44では、入力群Aとして、アレイ12の入力群A4が選択される。
また、ブロックB12〜B14、ブロックB22〜B24、ブロックB32〜B34、ブロックB42〜B44では、入力群Bとして、左隣接ブロックの出力群Sがそれぞれ選択される。例えば、ブロックB12の入力群Bには、ブロックB11の出力群Sが入力さる。
以上のように構成した場合に、入力群A1に行列A1、C1、D1、E1の各列を、入力群A2に行列A2、C2、D2、E2の各列を、入力群A3に行列A3、C3、D3、E3の各列を、入力群A4に行列A4、C4、D4、E4の各列を、入力群B1に行列B1〜B4の各行を、順に入力すると、出力群S1に行列S1〜S4の各行が、順に出力される。
すなわち、図15において2点鎖線で示す3つのブロック群44のそれぞれが、4×4×4×4×4の行列演算を行い、アレイ12は、4×4×4×4×4行列積の4並列演算を実行することができる。
(4×4×12行列積の4系統演算の場合)
次に、アレイ12を用いて、4×4×12行列積の4並列演算をする場合を説明する。
図16は、4×4×12行列積の4並列演算を行う場合を説明するための図である。より具体的には、図16は、アレイ12を用いて、4行n列(nは正の整数)の行列Bとn行4列の行列Aの行列積B×Aを演算し、その演算結果に4行12列の行列C1〜C4の行列積を4種同時に演算し、演算結果の行列S1〜S4を取得する場合を説明するための図である。図16では、ブロックB22〜B24の入力群Aには、アレイ12の入力群A2を、ブロックB32〜B34の入力群Aには、アレイ12の入力群A3を、ブロックB42〜B44の入力群Aには、アレイ12の入力群A3を、それぞれ選択する。
また、ブロックB13、B14、ブロックB23、B24、ブロックB33、B34、ブロックB43、B44では、入力群Bおよび入力群Sとして、左隣接ブロックの出力群Bおよび出力群Sがそれぞれ選択される。例えば、ブロックB13の入力群Bと入力群Sには、ブロックB12の出力群Bと出力群Sが、それぞれ選択される。
また、ブロックB12、ブロックB22、ブロックB32、ブロックB42では、入力群Bとして、ブロックB11の出力群Sが選択される。
以上のようにアレイ12を構成した場合に、入力群A1に行列AとC1の各列を、入力群A2にC2の各列を、入力群A3にC3の各列を、入力群A4にC4の各列を、入力群B1に行列Bの各行を、順に入力すると、出力群S1に行列S1〜S4の各行が、順に出力される。
すなわち、図16において2点鎖線で示す4つのブロック群45のそれぞれが、4×12の行列演算を行い、アレイ12は、4×4×12行列積の4並列演算を実行することができる。
以上のように、上述した本実施形態の行列演算システム1によれば、各種形態の行列演算を、データ転送量を少なく、かつ回路規模も大きくしないで、実行することができる。さらに、本実施形態の行列演算システム1によれば、各種行列演算を実行可能である。
従来のシストリック・アレイは、同一の回路を規則的に配置して、パイプライン処理と並列処理を行うようにしたシステムであり、コンフィギュラブル・アレイ・プロセッサは、複数のノードと、ノード間の接続を変更するための複数のスイッチ部を有するプロセッサである。
しかし、シストリック・アレイの場合、入力に対する演算が所定のサイクルで実行され、かつ各サイクルの演算結果が次のサイクルでそのまま利用されるように構成されているため、所望の行列演算結果を得るまでのデータ転送量が多いという問題がある。
これに対して、本実施形態の行列演算装置では、各ノードが演算器に加えてアキュムレータを有しているため、行列演算装置全体におけるデータ転送量が少ない。
また、コンフィギュラブル・アレイ・プロセッサでは、ノード間に配線ネットワークを切り替えるためのスイッチ回路が必要となるため、全体に回路規模が大きくなるという問題がある。
これに対して、上述した実施形態の行列演算装置では、このようなスイッチ回路はないので、装置全体の回路規模は小さい。
特に、各ノード21がアキュムレータ29を有するので、データ転送量は少なく、かつ制御部4によって、各ブロック31への入力の選択を各マルチプレクサの選択制御により行うので、回路規模も大きくならずに済むというメリットもある。
さらに、データ管理部3は加算機能を有するので、行列演算結果に、他のデータを加算するという処理も行うことができる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として例示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると共に、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1 行列演算システム、2 アレイ部、3 データ管理部、4 制御部、5 インターコネクト、6 I/O部、11 データ入力回路、12 行列演算回路アレイ、13 メモリ、14 リード部、15 ライト部、16 演算器、17 マルチプレクサ、21 ノード、22、23 レジスタ、24 乗算器、25 加算器、26 レジスタ、27 マルチプレクサ、28 レジスタ、31 ブロック。

Claims (6)

  1. 行列演算を実行する行列演算装置であって、
    前記行列演算のための列データである第1の入力と行データである第2の入力に対して第1の演算を行って前記行列演算の演算結果の要素成分を出力する第1の演算器と、前記第1の演算器の演算結果を累積加算するアキュムレータとを有する複数のノードを、
    を有し、
    各ノードは、前記行列演算の演算対象の2つの行列の一方の前記列データを入力する第1の入力端と、前記2つの行列の他方の前記行データを入力する第2の入力端と、入力された前記列データを出力する第1の出力端と、入力された前記行データを出力する第2の出力端と、を有し、
    前記複数のノードを含むブロックは、複数あり、
    前記複数のブロックは、前段ブロックと、後段ブロックとを含み、
    前記後段ブロックでは、前記前段ブロックに含まれる各ノードの前記アキュムレータの累積加算結果と、前記前段ブロック以外から入力とのいずれかを選択して出力する第2の選択回路を介して、前記複数のノードの前記第2の入力端に前記行データが入力される行列演算装置。
  2. 行列演算を実行する行列演算装置であって、
    前記行列演算のための列データである第1の入力と行データである第2の入力に対して第1の演算を行って前記行列演算の演算結果の要素成分を出力する第1の演算器と、前記第1の演算器の演算結果を累積加算するアキュムレータとを有する複数のノードを、を有する行列演算装置。
  3. 各ノードは、前記行列演算の演算対象の2つの行列の一方の前記列データを入力する第1の入力端と、前記2つの行列の他方の前記行データを入力する第2の入力端と、入力された前記列データを出力する第1の出力端と、入力された前記行データを出力する第2の出力端と、を有する請求項2に記載の行列演算装置。
  4. 前記複数のノードは、前記アキュムレータの累積加算結果を出力する第3の出力端を有し、
    前記複数のノードのうち、後段のノードは、前段ノードの演算結果を入力するための第3の入力端を有し、
    前記後段のノードは、前記第3の入力端の入力と、前記アキュムレータの累積加算結果とのいずれかを選択して出力する第1の選択回路とを有し、
    前記第3の出力端は、前記第1の選択回路を介して前記アキュムレータの前記累積加算結果を出力する請求項3に記載の行列演算装置。
  5. 前記複数のノードのうち、後段のノードは、前記第2の入力端の入力と、前記アキュムレータの累積加算結果とのいずれかを選択して出力する第1の選択回路とを有し、
    前記第2の出力端は、前記第1の選択回路を介して前記アキュムレータの前記累積加算結果を出力する請求項3に記載の行列演算装置。
  6. 前記複数のノードを含むブロックが複数あって、
    前記複数のブロックは、前段ブロックと、後段ブロックとを含み、
    前記後段ブロックでは、前記前段ブロックに含まれる各ノードの前記アキュムレータの累積加算結果と、前記前段ブロック以外から入力とのいずれかを選択して出力する第2の選択回路を介して、前記複数のノードの前記第2の入力端に前記行データが入力される請求項3に記載の行列演算装置。
JP2013190583A 2013-09-13 2013-09-13 行列演算装置 Active JP5951570B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2013190583A JP5951570B2 (ja) 2013-09-13 2013-09-13 行列演算装置
US14/194,471 US9483442B2 (en) 2013-09-13 2014-02-28 Matrix operation apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013190583A JP5951570B2 (ja) 2013-09-13 2013-09-13 行列演算装置

Publications (2)

Publication Number Publication Date
JP2015056124A true JP2015056124A (ja) 2015-03-23
JP5951570B2 JP5951570B2 (ja) 2016-07-13

Family

ID=52668995

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013190583A Active JP5951570B2 (ja) 2013-09-13 2013-09-13 行列演算装置

Country Status (2)

Country Link
US (1) US9483442B2 (ja)
JP (1) JP5951570B2 (ja)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9600234B2 (en) 2014-09-09 2017-03-21 Kabushiki Kaisha Toshiba Floating-point arithmetic device, semiconductor device and information processing system
JP2019168783A (ja) * 2018-03-22 2019-10-03 東芝メモリ株式会社 半導体装置
JP2020528621A (ja) * 2017-07-24 2020-09-24 テスラ,インコーポレイテッド 加速数学エンジン
JP2020529070A (ja) * 2017-07-24 2020-10-01 テスラ,インコーポレイテッド ベクトル計算ユニット
US11157287B2 (en) 2017-07-24 2021-10-26 Tesla, Inc. Computational array microprocessor system with variable latency memory access
US11157441B2 (en) 2017-07-24 2021-10-26 Tesla, Inc. Computational array microprocessor system using non-consecutive data formatting
US11561791B2 (en) 2018-02-01 2023-01-24 Tesla, Inc. Vector computational unit receiving data elements in parallel from a last row of a computational array
US11893393B2 (en) 2017-07-24 2024-02-06 Tesla, Inc. Computational array microprocessor system with hardware arbiter managing memory requests

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10228937B2 (en) * 2016-12-30 2019-03-12 Intel Corporation Programmable matrix processing engine
US10241972B2 (en) * 2017-03-16 2019-03-26 International Business Machines Corporation Matrix multiplication on a systolic array
US11003620B2 (en) * 2017-12-22 2021-05-11 Intel Corporation Systolic array of pipelined processing engines for implementing dynamic programming algorithms
CN112991142B (zh) * 2021-03-31 2023-06-16 腾讯科技(深圳)有限公司 图像数据的矩阵运算方法、装置、设备及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03196256A (ja) * 1989-12-25 1991-08-27 Fujitsu Ltd 行列演算回路
JP2009026308A (ja) * 2007-07-19 2009-02-05 Itt Manufacturing Enterprises Inc 高速かつ効率的な行列乗算ハードウェアモジュール
JP2009530730A (ja) * 2006-03-23 2009-08-27 ケンブリッジ ディスプレイ テクノロジー リミテッド データ処理ハードウェア

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4575812A (en) 1984-05-31 1986-03-11 Motorola, Inc. X×Y Bit array multiplier/accumulator circuit
JPH0555894A (ja) 1991-08-28 1993-03-05 Seiko Epson Corp 半導体装置
DE69832985T2 (de) 1998-10-06 2006-08-17 Texas Instruments Inc., Dallas Multiplizier-Akkumulatorschaltungen
US8250337B2 (en) 2006-04-28 2012-08-21 Qualcomm Incorporated Array processor with two parallel processing paths of multipliers and ALUs with idle operation capability controlled by portions of opcode including indication of valid output
JP5589628B2 (ja) 2010-07-12 2014-09-17 株式会社リコー 内積演算装置および内積演算方法
US9384168B2 (en) * 2013-06-11 2016-07-05 Analog Devices Global Vector matrix product accelerator for microprocessor integration

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03196256A (ja) * 1989-12-25 1991-08-27 Fujitsu Ltd 行列演算回路
JP2009530730A (ja) * 2006-03-23 2009-08-27 ケンブリッジ ディスプレイ テクノロジー リミテッド データ処理ハードウェア
JP2009026308A (ja) * 2007-07-19 2009-02-05 Itt Manufacturing Enterprises Inc 高速かつ効率的な行列乗算ハードウェアモジュール

Cited By (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9600234B2 (en) 2014-09-09 2017-03-21 Kabushiki Kaisha Toshiba Floating-point arithmetic device, semiconductor device and information processing system
US11403069B2 (en) 2017-07-24 2022-08-02 Tesla, Inc. Accelerated mathematical engine
US11409692B2 (en) 2017-07-24 2022-08-09 Tesla, Inc. Vector computational unit
JP2020529070A (ja) * 2017-07-24 2020-10-01 テスラ,インコーポレイテッド ベクトル計算ユニット
US11157287B2 (en) 2017-07-24 2021-10-26 Tesla, Inc. Computational array microprocessor system with variable latency memory access
US11157441B2 (en) 2017-07-24 2021-10-26 Tesla, Inc. Computational array microprocessor system using non-consecutive data formatting
JP7009609B2 (ja) 2017-07-24 2022-01-25 テスラ,インコーポレイテッド 加速数学エンジン
JP2020528621A (ja) * 2017-07-24 2020-09-24 テスラ,インコーポレイテッド 加速数学エンジン
US11893393B2 (en) 2017-07-24 2024-02-06 Tesla, Inc. Computational array microprocessor system with hardware arbiter managing memory requests
JP2022064892A (ja) * 2017-07-24 2022-04-26 テスラ,インコーポレイテッド 加速数学エンジン
JP7374236B2 (ja) 2017-07-24 2023-11-06 テスラ,インコーポレイテッド 加速数学エンジン
US11681649B2 (en) 2017-07-24 2023-06-20 Tesla, Inc. Computational array microprocessor system using non-consecutive data formatting
US11698773B2 (en) 2017-07-24 2023-07-11 Tesla, Inc. Accelerated mathematical engine
US11797304B2 (en) 2018-02-01 2023-10-24 Tesla, Inc. Instruction set architecture for a vector computational unit
US11561791B2 (en) 2018-02-01 2023-01-24 Tesla, Inc. Vector computational unit receiving data elements in parallel from a last row of a computational array
JP2019168783A (ja) * 2018-03-22 2019-10-03 東芝メモリ株式会社 半導体装置

Also Published As

Publication number Publication date
US9483442B2 (en) 2016-11-01
JP5951570B2 (ja) 2016-07-13
US20150081752A1 (en) 2015-03-19

Similar Documents

Publication Publication Date Title
JP5951570B2 (ja) 行列演算装置
JP5408913B2 (ja) 高速かつ効率的な行列乗算ハードウェアモジュール
JP2021508125A (ja) 行列乗算器
KR20190107091A (ko) 계산 장치 및 방법
US11640303B2 (en) Calculating device
JP6003744B2 (ja) 演算処理装置及び演算処理方法
US11907681B2 (en) Semiconductor device and method of controlling the semiconductor device
CN112446007A (zh) 一种矩阵运算方法、运算装置以及处理器
TW202020654A (zh) 具有壓縮進位之數位電路
CN109634556B (zh) 一种乘累加器及累加输出方法
JP2009181293A (ja) 行列演算コプロセッサ
CN111985628B (zh) 计算装置及包括所述计算装置的神经网络处理器
CN114003198A (zh) 内积处理部件、任意精度计算设备、方法及可读存储介质
CN111368987B (zh) 一种神经网络计算装置和方法
RU2477513C1 (ru) Ячейка однородной вычислительной среды, однородная вычислительная среда и устройство для конвейерных арифметических вычислений по заданному модулю
JP2009245296A (ja) 積和演算回路
TWI564735B (zh) 資料分配裝置、訊號處理裝置及其資料分配方法
CN116796816B (zh) 处理器、计算芯片和计算设备
CN112632464B (zh) 用于处理数据的处理装置
Murakami FPGA implementation of a SIMD-based array processor with torus interconnect
US9529539B1 (en) Data allocating apparatus, signal processing apparatus, and data allocating method
JP2022093455A (ja) 計算装置
CN114186679A (zh) 一种基于fpga的卷积神经网络加速器及其优化方法
CN118172228A (zh) 数据处理装置、芯片、方法、电子设备和存储介质
CN114268091A (zh) 基于综合阻抗矩阵的故障处理方法、装置、设备及介质

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150812

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20151130

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20151222

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160218

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160608

R151 Written notification of patent or utility model registration

Ref document number: 5951570

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151