(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-01-05
(45)【発行日】2024-01-16
(54)【発明の名称】シストリックアレイ及びプロセッシングシステム
(51)【国際特許分類】
G06F 15/80 20060101AFI20240109BHJP
G06F 17/10 20060101ALI20240109BHJP
【FI】
G06F15/80
G06F17/10 A
(21)【出願番号】P 2019232627
(22)【出願日】2019-12-24
【審査請求日】2022-10-28
(31)【優先権主張番号】10-2019-0026198
(32)【優先日】2019-03-07
(33)【優先権主張国・地域又は機関】KR
(73)【特許権者】
【識別番号】310024033
【氏名又は名称】エスケーハイニックス株式会社
【氏名又は名称原語表記】SK hynix Inc.
【住所又は居所原語表記】2091, Gyeongchung-daero,Bubal-eub,Icheon-si,Gyeonggi-do,Korea
(74)【代理人】
【識別番号】110000796
【氏名又は名称】弁理士法人三枝国際特許事務所
(72)【発明者】
【氏名】ナム ジ フン
【審査官】坂庭 剛史
(56)【参考文献】
【文献】国際公開第2018/213628(WO,A1)
【文献】特開2017-021483(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 15/80
G06F 17/10
(57)【特許請求の範囲】
【請求項1】
M個のローとN個のコラムとで配列された(MとNは、自然数であり、互いに異なる数である)複数のプロセッシングエレメントを含むシストリックアレイと、
前記シストリックアレイにロー方向でローデータを送信し、第1のモードで前記ローデータは、入力データであり、第2のモードで前記ローデータは、ウエートであるローバッファと、
前記シストリックアレイにコラム方向でコラムデータを送信し、前記第1のモードで前記コラムデータは、前記ウエートであり、第2のモードで前記コラムデータは、入力データであるコラムバッファと、
を備えるプロセッシングシステム。
【請求項2】
前記第1のモードでは、前記ローバッファに前記入力データをロードし、前記コラムバッファに前記ウエートをロードし、前記第2のモードでは、前記ローバッファに前記ウエートをロードし、前記コラムバッファに前記入力データをロードするデータバッファをさらに備える請求項1に記載のプロセッシングシステム。
【請求項3】
前記第2のモードで前記シストリックアレイから出力される演算結果の形態を前記第1のモードと同じ形態に変換する出力変換器をさらに備える請求項1に記載のプロセッシングシステム。
【請求項4】
前記第1のモードで前記シストリックアレイから出力される演算結果の形態を前記第2のモードと同じ形態に変換する出力変換器をさらに備える請求項1に記載のプロセッシングシステム。
【請求項5】
前記複数のプロセッシングエレメントの各々は、
前記ローデータと前記コラムデータとを乗算するための乗算器と、
結果値の格納のための第1のレジスタと、
前記乗算器の乗算結果と前記第1のレジスタに格納された値とを加算演算して前記第1のレジスタに格納する加算器と、
を備える請求項1に記載のプロセッシングシステム。
【請求項6】
前記複数のプロセッシングエレメントの各々は、
前記ローデータを次のコラムのプロセッシングエレメントに伝達するための第2のレジスタと、
前記コラムデータを次のローのプロセッシングエレメントに伝達するための第3のレジスタと、
をさらに備える請求項5に記載のプロセッシングシステム。
【請求項7】
前記複数のプロセッシングエレメントの各々は、
前記次のコラムから伝達される結果値と前記第1のレジスタに格納された結果値とのうち、1つを選択するためのマルチプレクサと、
前記マルチプレクサの出力値を格納して、以前コラムに伝達するための第4のレジスタと、
をさらに備える請求項6に記載のプロセッシングシステム。
【請求項8】
ホストとの通信のためのホストインターフェースと、
データを格納するメモリと、
前記メモリのデータをアクセスして、前記データバッファにロードするためのメモリコントローラと、
前記ホストインターフェースを介して伝達されるホストの制御によってプロセッシングシステムを制御するためのコントローラと、
前記第1のモード及び前記第2のモードの設定のためのモードスイッチレジスタと、 前記シストリックアレイの演算結果を後処理(post-processing)する後処理器と、
をさらに備える請求項
2に記載のプロセッシングシステム。
【請求項9】
前記入力データは、イメージデータを備える請求項1に記載のプロセッシングシステム。
【請求項10】
第1のモードで入力データをローデータで送信し、第2のモードでウエートを前記ローデータで送信するM個の(Mは、自然数)ロー入力と、
前記第1のモードで前記ウエートをコラムデータで送信し、前記第2のモードで前記入力データをコラムデータで送信するN個(Nは、Mでない自然数)のコラム入力と、
前記M個のロー入力のうち、自分に対応するロー入力に伝達されるローデータと前記N個のコラム入力のうち、自分に対応するコラム入力に伝達されるコラムデータとを乗算演算して、以前の演算結果と合算するM×N個のプロセッシングエレメントと、
を含むシストリックアレイ。
【請求項11】
前記M×N個のプロセッシングエレメントの各々は、
前記ローデータと前記コラムデータとを乗算するための乗算器と、
結果値の格納のための第1のレジスタと、
前記乗算器の乗算結果と前記第1のレジスタに格納された値とを加算演算して、前記第1のレジスタに格納する加算器と、
を備える請求項10に記載のシストリックアレイ。
【請求項12】
前記複数のプロセッシングエレメントの各々は、
前記ローデータを次のコラムのプロセッシングエレメントに伝達するための第2のレジスタと、
前記コラムデータを次のローのプロセッシングエレメントに伝達するための第3のレジスタと、
をさらに備える請求項11に記載のシストリックアレイ。
【請求項13】
前記複数のプロセッシングエレメントの各々は、
前記次のコラムから伝達される結果値と前記第1のレジスタに格納された結果値とのうち、1つを選択するためのマルチプレクサと、
前記マルチプレクサの出力値を格納して、以前コラムに伝達するための第4のレジスタと、
をさらに備える請求項12に記載のシストリックアレイ。
【発明の詳細な説明】
【技術分野】
【0001】
本特許文献は、シストリックアレイ(systolic array)及びこれを含むプロセッシングシステムに関する。
【背景技術】
【0002】
CNN(Convolution Neural Network)は、イメージ認識及び分析のために主に使用されるプロセッシングシステム(processing system)である。このプロセッシングシステムは、特定フィルタでイメージからフィーチャ(feature)を抽出するコンボリューション演算をするが、このような演算にシストリックアレイ(systolic array)が使用される。
【0003】
シストリックアレイは、複数のローと複数のコラムとで配列された複数のプロセッシングエレメント(PE:Processing Element)を含むが、複数のプロセッシングエレメントのうち一部のみを使用するケースが多数存在し、シストリックアレイの使用効率(utilization)が落ちる。
【発明の概要】
【発明が解決しようとする課題】
【0004】
本発明の実施形態等は、シストリックアレイの使用効率を上げる技術を提供できる。
【課題を解決するための手段】
【0005】
本発明の一実施形態に係るプロセッシングシステムは、M個のローとN個のコラムとで配列された(MとNは、自然数であり、互いに異なる数である)複数のプロセッシングエレメントを含むシストリックアレイと、前記シストリックアレイにロー方向でローデータを送信し、第1のモードで前記ローデータは、入力データであり、第2のモードで前記ローデータは、ウエートであるローバッファと、前記シストリックアレイにコラム方向でコラムデータを送信し、前記第1のモードで前記コラムデータは、前記ウエートであり、第2のモードで前記コラムデータは、入力データであるコラムバッファとを備えることができる。
【0006】
本発明の一実施形態に係るシストリックアレイは、第1のモードで入力データをローデータで送信し、第2のモードでウエートを前記ローデータで送信するM個の(Mは、自然数)ロー入力と、前記第1のモードで前記ウエートをコラムデータで送信し、前記第2のモードで前記入力データをコラムデータで送信するN個(Nは、Mでない自然数)のコラム入力と、前記M個のロー入力のうち、自分に対応するロー入力に伝達されるローデータと、前記N個のコラム入力のうち、自分に対応するコラム入力に伝達されるコラムデータとを乗算演算して、以前の演算結果と合算するM×N個のプロセッシングエレメントを含むことができる。
【発明の効果】
【0007】
本発明の実施形態等によれば、シストリックアレイの使用効率を上げることができる。
【図面の簡単な説明】
【0008】
【
図1】本発明の一実施形態に係るシストリックアレイ100の構成図。
【
図2】シストリックアレイ100が行う行列積演算を示した図。
【
図3】4×2配列のシストリックアレイ300を用いて
図2の行列積演算を行う場合に、シストリックアレイ300に入力データ行列(INPUT)とウエート行列(WEIGHT)とがどのように入力されなければならないかを示した図。
【
図4】シストリックアレイ300の演算結果を示した図。
【
図5】シストリックアレイ100が行う行列積演算を示した図。
【
図6】4×2配列のシストリックアレイ600を用いて
図5の行列積演算を行う場合に、シストリックアレイ600に入力データ行列(INPUT)とウエート行列(WEIGHT)とがどのように入力されなければならないかを示した図。
【
図7】シストリックアレイ300の演算結果を示した図。
【
図8】本発明の一実施形態に係るプロセッシングシステム800の構成図。
【
図9】プロセッシングシステム800が第2のモードに設定された場合に、
図5のような2×3の入力データ行列(INPUT)と3×4のウエート行列(WEIGHT)とを乗算する行列積演算を行う場合に、シストリックアレイ850に入力データ行列とウエート行列とがどのように入力されなければならないかを示した図。
【
図10】シストリックアレイ850の演算結果を示した図。
【
図11】出力変換器817により変換されたシストリックアレイ850の演算結果を示した図。
【発明を実施するための形態】
【0009】
以下、本発明の属する技術分野における通常の知識を有する者が本発明の技術的思想を容易に実施できるように詳細に説明するために、本発明の最も望ましい実施形態を添付図面を参照して説明する。本発明を説明するにあたって、本発明の要旨と関係ない構成は省略されることができる。各図面の構成要素等に参照符号を付すにあたって、同じ構成要素等に限っては、例え、他の図面上に表示されても、なるべく同じ番号を有するようにしていることに留意すべきである。
【0010】
図1は、本発明の一実施形態に係るシストリックアレイ100の構成図である。
【0011】
図1に示すように、シストリックアレイ100は、複数のロー(row)入力IN_R_1~IN_R_3、複数のコラム入力IN_C_1~IN_C_3、複数の出力OUT_1~OUT_3、及び複数のプロセッシングエレメントPE11~PE33を含むことができる。
【0012】
複数のロー入力IN_R_1~IN_R_3は、プロセッシングエレメントPE11~PE33に入力データを伝達できる。ロー入力IN_R_1~IN_R_3は、自分に対応するローのプロセッシングエレメントPE11~PE33に入力データを伝達できる。例えば、ロー入力IN_R_2は、プロセッシングエレメントP21、P22、P23に入力データを伝達できる。ここで、入力データは、例えば、イメージデータでありうる。
【0013】
複数のコラム入力IN_C_1~IN_C_3は、プロセッシングエレメントPE11~PE33にウエート(weight)を伝達できる。コラム入力IN_C_1~IN_C_3は、自分に対応するコラムのプロセッシングエレメントPE11~PE33にウエートを伝達できる。例えば、コラム入力IN_C_3は、プロセッシングエレメントPE13、PE23、PE33にウエートを伝達できる。
【0014】
複数の出力OUT_1~OUT_3は、ロー入力IN_R_1~IN_R_3と同じ方向に配列され、プロセッシングエレメントPE11~PE33の演算結果を出力するのに使用されることができる。出力OUT_1~OUT_3は、自分に対応するローのプロセッシングエレメントPE11~PE33の演算結果を出力できる。例えば、出力OUT1は、プロセッシングエレメントPE11、PE12、PE13の演算結果を出力できる。
【0015】
複数のプロセッシングエレメントPE11~PE33は、ロー入力IN_R_1~IN_R_3のうち、自分に対応するロー入力に伝達される入力データと、コラム入力IN_C_1~IN_C_3のうち、自分に対応するコラム入力に伝達されるウエートとを乗算演算して、以前の演算結果と合算することができる。例えば、プロセッシングエレメントPE23は、ロー入力IN_R_2に入力された入力データと、コラム入力IN_C_3に入力されたウエートとを乗算し、乗算結果を以前の演算結果と合算することができる。
【0016】
複数のプロセッシングエレメントPE11~PE33のうち、プロセッシングエレメントPE12を例示して、プロセッシングエレメントの構造について述べることにする。プロセッシングエレメントPE12は、乗算器M12、加算器A12、第1~第4のレジスタR12_1、R12_2、R12_3、R12_4、及びマルチプレクサMUX12を備えることができる。乗算器M12は、ロー入力IN_R_1で伝達される入力データとコラム入力IN_C_2で伝達されるウエートとを乗算演算できる。加算器A12は、乗算器M12の乗算結果と第1のレジスタR12_1に格納された値とを加算演算して、第1のレジスタR12_1に格納することができる。第2のレジスタR12_2は、ロー入力IN_R_1で伝達された入力データを次のコラムのプロセッシングエレメントPE13に伝達するためのレジスタでありうる。また、第3のレジスタR12_3は、コラム入力IN_C_2で伝達されたウエートを次のローのプロセッシングエレメントPE22に伝達するための構成でありうる。マルチプレクサMUX12は、次のコラムのプロセッシングエレメントPE13側から伝達される演算結果と、第1のレジスタR12_1に格納された演算結果とのうち、1つを選択できる。そして、第4のレジスタR12_4は、マルチプレクサMUX12の出力値を格納して、以前コラムのプロセッシングエレメントPE11側に伝達することができる。
【0017】
図2のような4×3の入力データ行列(INPUT)と3×4のウエート行列(WEIGHT)とを乗算する行列積演算を行う場合を説明する。
図2では、入力データ行列(INPUT)が4個のバッチ(batch)で構成されたことを例示した。ここで、バッチとは、データの個数を意味できる。例えば、
図2の入力データ行列(INPUT)で4個のローのそれぞれの1つのイメージでありうる。すなわち、入力データ行列は、4個のイメージ(バッチ)(I
11、I
12、I
13)、(I
21、I
22、I
23)、(I
31、I
32、I
33)、(I
41、I
42、I
43)を含むことができる。
【0018】
図3は、4×2配列のシストリックアレイ300を用いて
図2の行列積演算を行う場合に、シストリックアレイ300に入力データ行列(INPUT)とウエート行列(WEIGHT)とがロー入力IN_R_1~IN_R_4とコラム入力IN_C_1~IN_C_2とにどのように入力されなければならないかを示した図である。
【0019】
図3においてCLK1は、1番目のサイクルに、シストリックアレイ300に入力される値を表し、CLK2は、2番目のサイクルに、シストリックアレイ300に入力される値を表すことができる。例えば、1番目のサイクルCLK1に、プロセッシングエレメントPE11にI
11とW
11が入力されて演算されることができる。また、2番目のサイクルCLK2に、プロセッシングエレメントPE11にI
12とW
12が入力され、プロセッシングエレメントPE12にI
11とW
12が入力され、プロセッシングエレメントPE21にI
21とW
11が入力されて演算されることができる。すなわち、プロセッシングエレメントPE12は、以前コラムのプロセッシングエレメントPE11が1番目のサイクルCLK1で受信した入力データI
11を2番目のサイクルCLK2で受信し、プロセッシングエレメントPE21は、以前ローのプロセッシングエレメントPE11が1番目のサイクルCLK1で受信したウエートW
11を2番目のサイクルCLK2で受信することができる。
【0020】
図3において、バウンダリ(boundary)B1、B2は、演算の範囲を表すことができる。シストリックアレイ300のプロセッシングエレメントPE11、PE12、PE21、PE22、PE31、PE32、PE41、PE42は、バウンダリ単位B1、B2で入力データとウエートとの乗算値を加算し、その結果を出力できる。
図3のバウンダリB1、B2単位でシストリックアレイ300から演算結果を出力すれば、
図4のような結果値を導出できる。
図4は、
図2の入力データ行列(INPUT)とウエート行列(WEIGHT)との行列積結果であることを確認できる。
【0021】
図2~
図4において説明した演算では、シストリックアレイ300内の全てのプロセッシングエレメントPE11、PE12、PE21、PE22、PE31、PE32、PE41、PE42が使用されるが、この場合、シストリックアレイ300の使用効率は100%でありうる。
【0022】
以下では、
図5のような2×3の入力データ行列(INPUT)と3×4のウエート行列(WEIGHT)とを乗算する行列積演算を行う場合を考えてみる。
図5では、入力データ行列(INPUT)が2個のバッチ(batch)で構成されたものを例示した。
【0023】
図6は、4×2配列のシストリックアレイ600を用いて
図5の行列積演算を行う場合に、シストリックアレイ600に入力データ行列(INPUT)とウエート行列(WEIGHT)とがどのように入力されなければならないかを示した図である。
図3と同様に、
図6においてCLK1、CLK2等は、入力サイクルを示し、B1、B2は、演算のバウンダリを示すことができる。
図6のバウンダリB1、B2単位でシストリックアレイ600から演算結果を出力すれば、
図7のような結果値を導出できる。
図7は、
図5の入力データ行列(INPUT)とウエート行列(WEIGHT)との行列積結果であることが確認できる。
【0024】
図5~
図7において説明した演算では、シストリックアレイ600内でプロセッシングエレメントPE11、PE12、PE21、PE22のみが使用され、プロセッシングエレメントPE31、PE32、PE41、PE42が使用されない。この場合、シストリックアレイ600の使用効率は50%になる。シストリックアレイ600の使用効率が50%であるということは、シストリックアレイ600の性能が最大性能に比べて50%減少し、不要な電流が使用されるということを意味している。
【0025】
図8は、本発明の一実施形態に係るプロセッシングシステム800の構成図である。
【0026】
図8に示すように、プロセッシングシステム800は、シストリックアレイ850、ホストインターフェース801、コントローラ803、メモリ805、メモリコントローラ807、データバッファ809、ローバッファ811、コラムバッファ813、モードスイッチレジスタ815、出力変換器817、及び後処理器819を備えることができる。ここで、プロセッシングシステム800は、PCIエクスプレススロットに挿入されるカード形態、1つのチップの中に種々の構成が集約されたシステムオンチップ(SoC:System on Chip)、または1つのパッケージの中に様々なチップが集約されたシステムインパッケージ(SiP:System in Package)など、様々な形態で存在することができる。また、プロセッシングシステム800は、メモリの形態で構成されることもできる。例えば、HBM(High Bandwidth Memory)のような積層型メモリのロジックダイ(logic die)にプロセッシングシステム800からメモリ805を除いた構成が形成され得る。このような形態のメモリをプロセッサインメモリ(PIN:Processor In Memory)ともいう。
【0027】
ホストインターフェース801は、ホストとの通信のためのインターフェースでありうる。ホストインターフェース801を介してホスト、例えば、中央処理装置(CPU:Central Processing Unit)からプロセッシングシステム800が処理する各種命令及びデータが伝達され得る。
【0028】
コントローラ803は、ホスト801の指示によってプロセッシングシステム800が各種演算を行うことができるようにプロセッシングシステム800全般を制御できる。バス804は、プロセッシングシステム800内部の構成が各種信号及びデータを交換するためのバスでありうる。
【0029】
メモリ805は、プロセッシングシステム800が使用するメモリでありうる。メモリ805には、シストリックアレイ850が行うべき演算と関連したデータ、例えば、入力データとウエートとが格納され得る。メモリコントローラ807は、メモリ805をアクセスするために使用されることができる。
【0030】
モードスイッチレジスタ815は、第1のモードと第2のモードのうち、1つのモードを設定するためのレジスタでありうる。モードスイッチレジスタ815に格納された設定値に応じてプロセッシングシステム800は、第1のモードと第2のモードのうち、1つのモードで動作することができる。モードスイッチレジスタ815は、ホストインターフェース801を介して受信されたホストの指示により行われることができる。すなわち、ホストは、第1のモードの動作が一層効率的であると判断される場合には、モードスイッチレジスタ815を第1のモードに設定し、第2のモードの動作が一層効率的であると判断される場合には、モードスイッチレジスタ815を第2のモードに設定することができる。
【0031】
データバッファ809は、メモリコントローラ807を介してメモリ805からデータ、すなわち、入力データとウエートとを伝送されて格納することができる。データバッファ809は、ローバッファ811とコラムバッファ813とにデータをロードすることができる。データバッファ809は、第1のモードでは、ローバッファ811に入力データをロードし、コラムバッファ813にウエートをロードできる。そして、データバッファ809は、第2のモードでは、第1のモードとは反対に、ローバッファ811にウエートをロードし、コラムバッファ813に入力データをロードできる。
【0032】
ローバッファ811は、シストリックアレイ850のロー入力IN_R_1~IN_R_4にローデータを伝達できる。第1のモードでは、データバッファ809が入力データをローバッファ811にロードするので、第1のモードでは、ローデータが入力データでありうる。また、第2のモードでは、データバッファ809がウエートをローバッファ811にロードするので、第2のモードでは、ローデータがウエートでありうる。一方、ローバッファ811は、シストリックアレイ850の出力OUT_1~OUT_4から伝達される演算データをデータバッファ809に伝達するために使用されることができる。
【0033】
コラムバッファ813は、シストリックアレイ850のコラム入力IN_C_1、IN_C_2にコラムデータを伝達できる。第1のモードでは、データバッファ809がウエートをコラムバッファ813にロードするので、第1のモードでは、コラムデータがウエートでありうる。また、第2のモードでは、データバッファ809が入力データをコラムバッファ813にロードするので、第2のモードではコラムデータが入力データでありうる。
【0034】
出力変換器817は、第2のモードでシストリックアレイ850から出力される演算結果の形態を第1のモードと同じ形態に変換することができる。第1のモードと第2のモードでは、入力データとウエートとがシストリックアレイ850に入力される方向が変更されるので、第1のモードと第2のモードとにおいてシストリックアレイ850から出力される演算結果の形態が異なり得る。出力変換器817は、第2のモードでシストリックアレイ850から出力される演算結果を第1のモードと同じ形態に変更することができる。これは、第1のモードを基準としたものであり、第2のモードが基準である場合には、出力変換器817が第1のモードでシストリックアレイ850から出力される演算結果を第2のモードと同じ形態に変更することもできる。出力変換器817の変換動作については、
図11とともに詳細に説明する。
【0035】
後処理器819は、シストリックアレイ850の演算結果を後処理(post-processing)することができる。後処理器819は、ピクセル(pixel)別に平均(average)または最大(max)値を探すプーリング(pooling)、閾値(threshold)基盤でデータをフィルタリングするReLU(Rectified Linear Unit)、またはシグモイド(sigmoid)のような活性関数(activation function)、結果値から外れる値をフィルタリングするノーマライズ(normalize)などの機能(function)を行うことができる。
【0036】
シストリックアレイ850は、ローとコラムの個数が異なるように配列されたプロセッシングエレメントPE11、PE12、PE21、PE22、PE31、PE32、PE41、PE42を備えることができる(ここでは、4×2に例示する)。シストリックアレイ850は、第1のモードでは、ロー入力IN_R_1~IN_R_4で入力データを受信し、コラム入力IN_C_1、IN_C_2でウエートを受信して演算することができる。また、シストリックアレイ850は、第2のモードでは、ロー入力IN_R_1~IN_R_4でウエートを受信し、コラム入力IN_C_1、IN_C_2で入力データを受信して演算することができる。シストリックアレイ850のプロセッシングエレメントPE11、PE12、PE21、PE22、PE31、PE32、PE41、PE42がローとコラムの個数が異なるように配列されるので、シストリックアレイ850が行う演算の形態によって第1のモードが有利であることができ、第2のモードが有利であることもできる。上記実施形態では、シストリックアレイ850内のローとコラムの個数を4×2に例示したが、ローとコラムの個数がこれと異なることができることは当然である。
【0037】
図8のプロセッシングシステム800において
図2のような4×3の入力データ行列(INPUT)と3×4のウエート行列(WEIGHT)とを乗算する行列積演算を行う場合には、プロセッシングシステム800を第1のモードに設定し、
図3のように、シストリックアレイ850に入力データ行列とウエート行列を入力させて動作させれば、シストリックアレイ850の使用効率を100%に維持することができる。
【0038】
図8のプロセッシングシステム800において
図5のような2×3の入力データ行列(INPUT)と3×4のウエート行列(WEIGHT)とを乗算する行列積演算を行う場合に、プロセッシングシステム800を第1のモードで動作させるならば、
図5~
図7において説明したように、シストリックアレイ850の使用効率は50%になるであろう。この場合には、シストリックアレイ850を第2のモードに設定し、動作させることが有利でありうる。
【0039】
図9は、プロセッシングシステム800が第2のモードに設定された場合に、
図5のような2×3の入力データ行列(INPUT)と3×4のウエート行列(WEIGHT)とを乗算する行列積演算を行う場合に、シストリックアレイ850に入力データ行列とウエート行列とがどのように入力されなければならないかを示した図である。
図6と同様に、
図9においてCLK1、CLK2などは入力サイクルを示し、Bは、演算のバウンダリを示すことができる。
図9では、ただ1つのバウンダリBで演算が可能であることが確認できる。
図9のバウンダリB単位でシストリックアレイ850から演算結果を出力すれば、
図10のような結果値を導出できる。
【0040】
図10は、
図5の入力データ行列(INPUT)とウエート行列(WEIGHT)との行列積結果からローとコラムとが変わったものであることが確認できる。出力変換器817は、
図10の結果値の形態を
図11のように変換することができる。出力変換器817は、単純に
図10の結果値からローとコラムとを変更することにより変換動作を行うことができる。例えば、(1,2)の位置の値を(2,1)の位置に変更し、(2,3)の位置の値を(3,2)の位置に変更し、(1,1)の位置の値はそのまま置くことができる。すなわち、(A、B)の位置の値を(B、A)の位置に変更することができる。
図11は、
図7と一致し、これは、すなわち、
図5の入力データ行列(INPUT)とウエート行列(WEIGHT)との行列積結果であることが確認できる。
【0041】
図9~
図11に示すように、プロセッシングシステム800を第2のモードで動作させることにより、シストリックアレイ内のプロセッシングエレメントPE11、PE12、PE21、PE22、PE31、PE32、PE41、PE42を全て使用することが可能であり、すなわち、使用効率を100%に上げることが可能であり、演算にかかる時間を減らすことができるということが確認できる。
【0042】
上述したように、プロセッシングシステム800が行う行列演算の形態によってプロセッシングシステム800を第1のモードと第2のモードのうち、1つのモードで動作させることにより、シストリックアレイの使用効率を上げ、不要な時間及び不要な電流が消費されることを防ぐことができる。
【0043】
本発明の技術思想は、上記好ましい実施形態によって具体的に記述されたが、上記した実施形態は、その説明のためのものであり、その制限のためのものでないことに注意すべきである。また、本発明の技術分野の専門家であれば、本発明の技術思想の範囲内で様々な実施形態が可能であることが分かるであろう。
【符号の説明】
【0044】
800 プロセッシングシステム
850 シストリックアレイ
801 ホストインターフェース
803 コントローラ
805 メモリ
807 メモリコントローラ
809 データバッファ
811 ローバッファ
813 コラムバッファ
815 モードスイッチレジスタ
817 出力変換器
819 後処理器