(57)【要約】【課題】シストリックアレイ（ｓｙｓｔｏｌｉｃ  ａｒｒａｙ）及びこれを含むプロセッシングシステムを提供すること。【解決手段】プロセッシングシステムは、Ｍ個のローとＮ個のコラムとで配列された（ＭとＮは、自然数であり、互いに異なる数である）複数のプロセッシングエレメントを含むシストリックアレイと、前記シストリックアレイにロー方向でローデータを送信し、第１のモードで前記ローデータは、入力データであり、第２のモードで前記ローデータは、ウエートであるローバッファと、前記シストリックアレイにコラム方向でコラムデータを送信し、前記第１のモードで前記コラムデータは、前記ウエートであり、第２のモードで前記コラムデータは、入力データであるコラムバッファとを備えることができる。【選択図】図８
2020144843.tif 000002
【特許請求の範囲】
【請求項１】
Ｍ個のローとＮ個のコラムとで配列された（ＭとＮは、自然数であり、互いに異なる数である）複数のプロセッシングエレメントを含むシストリックアレイと、
前記シストリックアレイにロー方向でローデータを送信し、第１のモードで前記ローデータは、入力データであり、第２のモードで前記ローデータは、ウエートであるローバッファと、
前記シストリックアレイにコラム方向でコラムデータを送信し、前記第１のモードで前記コラムデータは、前記ウエートであり、第２のモードで前記コラムデータは、入力データであるコラムバッファと、
を備えるプロセッシングシステム。
【請求項２】
前記第１のモードでは、前記ローバッファに前記入力データをロードし、前記コラムバッファに前記ウエートをロードし、前記第２のモードでは、前記ローバッファに前記ウエートをロードし、前記コラムバッファに前記入力データをロードするデータバッファをさらに備える請求項１に記載のプロセッシングシステム。
【請求項３】
前記第２のモードで前記シストリックアレイから出力される演算結果の形態を前記第１のモードと同じ形態に変換する出力変換器をさらに備える請求項１に記載のプロセッシングシステム。
【請求項４】
前記第１のモードで前記シストリックアレイから出力される演算結果の形態を前記第２のモードと同じ形態に変換する出力変換器をさらに備える請求項１に記載のプロセッシングシステム。
【請求項５】
前記複数のプロセッシングエレメントの各々は、
前記ローデータと前記コラムデータとを乗算するための乗算器と、
結果値の格納のための第１のレジスタと、
前記乗算器の乗算結果と前記第１のレジスタに格納された値とを加算演算して前記第１のレジスタに格納する加算器と、
を備える請求項１に記載のプロセッシングシステム。
【請求項６】
前記複数のプロセッシングエレメントの各々は、
前記ローデータを次のコラムのプロセッシングエレメントに伝達するための第２のレジスタと、
前記コラムデータを次のローのプロセッシングエレメントに伝達するための第３のレジスタと、
をさらに備える請求項５に記載のプロセッシングシステム。
【請求項７】
前記複数のプロセッシングエレメントの各々は、
前記次のコラムから伝達される結果値と前記第１のレジスタに格納された結果値とのうち、１つを選択するためのマルチプレクサと、
前記マルチプレクサの出力値を格納して、以前コラムに伝達するための第４のレジスタと、
をさらに備える請求項６に記載のプロセッシングシステム。
【請求項８】
ホストとの通信のためのホストインターフェースと、
データを格納するメモリと、
前記メモリのデータをアクセスして、前記データバッファにロードするためのメモリコントローラと、
前記ホストインターフェースを介して伝達されるホストの制御によってプロセッシングシステムを制御するためのコントローラと、
前記第１のモード及び前記第２のモードの設定のためのモードスイッチレジスタと、
前記シストリックアレイの演算結果を後処理（ｐｏｓｔ−ｐｒｏｃｅｓｓｉｎｇ）する後処理器と、
をさらに備える請求項１に記載のプロセッシングシステム。
【請求項９】
前記入力データは、イメージデータを備える請求項１に記載のプロセッシングシステム。
【請求項１０】
第１のモードで入力データをローデータで送信し、第２のモードでウエートを前記ローデータで送信するＭ個の（Ｍは、自然数）ロー入力と、
前記第１のモードで前記ウエートをコラムデータで送信し、前記第２のモードで前記入力データをコラムデータで送信するＮ個（Ｎは、Ｍでない自然数）のコラム入力と、
前記Ｍ個のロー入力のうち、自分に対応するロー入力に伝達されるローデータと前記Ｎ個のコラム入力のうち、自分に対応するコラム入力に伝達されるコラムデータとを乗算演算して、以前の演算結果と合算するＭ×Ｎ個のプロセッシングエレメントと、
を含むシストリックアレイ。
【請求項１１】
前記Ｍ×Ｎ個のプロセッシングエレメントの各々は、
前記ローデータと前記コラムデータとを乗算するための乗算器と、
結果値の格納のための第１のレジスタと、
前記乗算器の乗算結果と前記第１のレジスタに格納された値とを加算演算して、前記第１のレジスタに格納する加算器と、
を備える請求項１０に記載のシストリックアレイ。
【請求項１２】
前記複数のプロセッシングエレメントの各々は、
前記ローデータを次のコラムのプロセッシングエレメントに伝達するための第２のレジスタと、
前記コラムデータを次のローのプロセッシングエレメントに伝達するための第３のレジスタと、
をさらに備える請求項１１に記載のシストリックアレイ。
【請求項１３】
前記複数のプロセッシングエレメントの各々は、
前記次のコラムから伝達される結果値と前記第１のレジスタに格納された結果値とのうち、１つを選択するためのマルチプレクサと、
前記マルチプレクサの出力値を格納して、以前コラムに伝達するための第４のレジスタと、
をさらに備える請求項１２に記載のシストリックアレイ。
【発明の詳細な説明】
【技術分野】
【０００１】
本特許文献は、シストリックアレイ（ｓｙｓｔｏｌｉｃ  ａｒｒａｙ）及びこれを含むプロセッシングシステムに関する。
【背景技術】
【０００２】
ＣＮＮ（Ｃｏｎｖｏｌｕｔｉｏｎ  Ｎｅｕｒａｌ  Ｎｅｔｗｏｒｋ）は、イメージ認識及び分析のために主に使用されるプロセッシングシステム（ｐｒｏｃｅｓｓｉｎｇ  ｓｙｓｔｅｍ）である。このプロセッシングシステムは、特定フィルタでイメージからフィーチャ（ｆｅａｔｕｒｅ）を抽出するコンボリューション演算をするが、このような演算にシストリックアレイ（ｓｙｓｔｏｌｉｃ  ａｒｒａｙ）が使用される。
【０００３】
シストリックアレイは、複数のローと複数のコラムとで配列された複数のプロセッシングエレメント（ＰＥ：Ｐｒｏｃｅｓｓｉｎｇ  Ｅｌｅｍｅｎｔ）を含むが、複数のプロセッシングエレメントのうち一部のみを使用するケースが多数存在し、シストリックアレイの使用効率（ｕｔｉｌｉｚａｔｉｏｎ）が落ちる。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明の実施形態等は、シストリックアレイの使用効率を上げる技術を提供できる。
【課題を解決するための手段】
【０００５】
本発明の一実施形態に係るプロセッシングシステムは、Ｍ個のローとＮ個のコラムとで配列された（ＭとＮは、自然数であり、互いに異なる数である）複数のプロセッシングエレメントを含むシストリックアレイと、前記シストリックアレイにロー方向でローデータを送信し、第１のモードで前記ローデータは、入力データであり、第２のモードで前記ローデータは、ウエートであるローバッファと、前記シストリックアレイにコラム方向でコラムデータを送信し、前記第１のモードで前記コラムデータは、前記ウエートであり、第２のモードで前記コラムデータは、入力データであるコラムバッファとを備えることができる。
【０００６】
本発明の一実施形態に係るシストリックアレイは、第１のモードで入力データをローデータで送信し、第２のモードでウエートを前記ローデータで送信するＭ個の（Ｍは、自然数）ロー入力と、前記第１のモードで前記ウエートをコラムデータで送信し、前記第２のモードで前記入力データをコラムデータで送信するＮ個（Ｎは、Ｍでない自然数）のコラム入力と、前記Ｍ個のロー入力のうち、自分に対応するロー入力に伝達されるローデータと、前記Ｎ個のコラム入力のうち、自分に対応するコラム入力に伝達されるコラムデータとを乗算演算して、以前の演算結果と合算するＭ×Ｎ個のプロセッシングエレメントを含むことができる。
【発明の効果】
【０００７】
本発明の実施形態等によれば、シストリックアレイの使用効率を上げることができる。
【図面の簡単な説明】
【０００８】
【図１】本発明の一実施形態に係るシストリックアレイ１００の構成図。
【図２】シストリックアレイ１００が行う行列積演算を示した図。
【図３】４×２配列のシストリックアレイ３００を用いて図２の行列積演算を行う場合に、シストリックアレイ３００に入力データ行列（ＩＮＰＵＴ）とウエート行列（ＷＥＩＧＨＴ）とがどのように入力されなければならないかを示した図。
【図４】シストリックアレイ３００の演算結果を示した図。
【図５】シストリックアレイ１００が行う行列積演算を示した図。
【図６】４×２配列のシストリックアレイ６００を用いて図５の行列積演算を行う場合に、シストリックアレイ６００に入力データ行列（ＩＮＰＵＴ）とウエート行列（ＷＥＩＧＨＴ）とがどのように入力されなければならないかを示した図。
【図７】シストリックアレイ３００の演算結果を示した図。
【図８】本発明の一実施形態に係るプロセッシングシステム８００の構成図。
【図９】プロセッシングシステム８００が第２のモードに設定された場合に、図５のような２×３の入力データ行列（ＩＮＰＵＴ）と３×４のウエート行列（ＷＥＩＧＨＴ）とを乗算する行列積演算を行う場合に、シストリックアレイ８５０に入力データ行列とウエート行列とがどのように入力されなければならないかを示した図。
【図１０】シストリックアレイ８５０の演算結果を示した図。
【図１１】出力変換器８１７により変換されたシストリックアレイ８５０の演算結果を示した図。
【発明を実施するための形態】
【０００９】
以下、本発明の属する技術分野における通常の知識を有する者が本発明の技術的思想を容易に実施できるように詳細に説明するために、本発明の最も望ましい実施形態を添付図面を参照して説明する。本発明を説明するにあたって、本発明の要旨と関係ない構成は省略されることができる。各図面の構成要素等に参照符号を付すにあたって、同じ構成要素等に限っては、例え、他の図面上に表示されても、なるべく同じ番号を有するようにしていることに留意すべきである。
【００１０】
図１は、本発明の一実施形態に係るシストリックアレイ１００の構成図である。
【００１１】
図１に示すように、シストリックアレイ１００は、複数のロー（ｒｏｗ）入力ＩＮ＿Ｒ＿１〜ＩＮ＿Ｒ＿３、複数のコラム入力ＩＮ＿Ｃ＿１〜ＩＮ＿Ｃ＿３、複数の出力ＯＵＴ＿１〜ＯＵＴ＿３、及び複数のプロセッシングエレメントＰＥ１１〜ＰＥ３３を含むことができる。
【００１２】
複数のロー入力ＩＮ＿Ｒ＿１〜ＩＮ＿Ｒ＿３は、プロセッシングエレメントＰＥ１１〜ＰＥ３３に入力データを伝達できる。ロー入力ＩＮ＿Ｒ＿１〜ＩＮ＿Ｒ＿３は、自分に対応するローのプロセッシングエレメントＰＥ１１〜ＰＥ３３に入力データを伝達できる。例えば、ロー入力ＩＮ＿Ｒ＿２は、プロセッシングエレメントＰ２１、Ｐ２２、Ｐ２３に入力データを伝達できる。ここで、入力データは、例えば、イメージデータでありうる。
【００１３】
複数のコラム入力ＩＮ＿Ｃ＿１〜ＩＮ＿Ｃ＿３は、プロセッシングエレメントＰＥ１１〜ＰＥ３３にウエート（ｗｅｉｇｈｔ）を伝達できる。コラム入力ＩＮ＿Ｃ＿１〜ＩＮ＿Ｃ＿３は、自分に対応するコラムのプロセッシングエレメントＰＥ１１〜ＰＥ３３にウエートを伝達できる。例えば、コラム入力ＩＮ＿Ｃ＿３は、プロセッシングエレメントＰＥ１３、ＰＥ２３、ＰＥ３３にウエートを伝達できる。
【００１４】
複数の出力ＯＵＴ＿１〜ＯＵＴ＿３は、ロー入力ＩＮ＿Ｒ＿１〜ＩＮ＿Ｒ＿３と同じ方向に配列され、プロセッシングエレメントＰＥ１１〜ＰＥ３３の演算結果を出力するのに使用されることができる。出力ＯＵＴ＿１〜ＯＵＴ＿３は、自分に対応するローのプロセッシングエレメントＰＥ１１〜ＰＥ３３の演算結果を出力できる。例えば、出力ＯＵＴ１は、プロセッシングエレメントＰＥ１１、ＰＥ１２、ＰＥ１３の演算結果を出力できる。
【００１５】
複数のプロセッシングエレメントＰＥ１１〜ＰＥ３３は、ロー入力ＩＮ＿Ｒ＿１〜ＩＮ＿Ｒ＿３のうち、自分に対応するロー入力に伝達される入力データと、コラム入力ＩＮ＿Ｃ＿１〜ＩＮ＿Ｃ＿３のうち、自分に対応するコラム入力に伝達されるウエートとを乗算演算して、以前の演算結果と合算することができる。例えば、プロセッシングエレメントＰＥ２３は、ロー入力ＩＮ＿Ｒ＿２に入力された入力データと、コラム入力ＩＮ＿Ｃ＿３に入力されたウエートとを乗算し、乗算結果を以前の演算結果と合算することができる。
【００１６】
複数のプロセッシングエレメントＰＥ１１〜ＰＥ３３のうち、プロセッシングエレメントＰＥ１２を例示して、プロセッシングエレメントの構造について述べることにする。プロセッシングエレメントＰＥ１２は、乗算器Ｍ１２、加算器Ａ１２、第１〜第４のレジスタＲ１２＿１、Ｒ１２＿２、Ｒ１２＿３、Ｒ１２＿４、及びマルチプレクサＭＵＸ１２を備えることができる。乗算器Ｍ１２は、ロー入力ＩＮ＿Ｒ＿１で伝達される入力データとコラム入力ＩＮ＿Ｃ＿２で伝達されるウエートとを乗算演算できる。加算器Ａ１２は、乗算器Ｍ１２の乗算結果と第１のレジスタＲ１２＿１に格納された値とを加算演算して、第１のレジスタＲ１２＿１に格納することができる。第２のレジスタＲ１２＿２は、ロー入力ＩＮ＿Ｒ＿１で伝達された入力データを次のコラムのプロセッシングエレメントＰＥ１３に伝達するためのレジスタでありうる。また、第３のレジスタＲ１２＿３は、コラム入力ＩＮ＿Ｃ＿２で伝達されたウエートを次のローのプロセッシングエレメントＰＥ２２に伝達するための構成でありうる。マルチプレクサＭＵＸ１２は、次のコラムのプロセッシングエレメントＰＥ１３側から伝達される演算結果と、第１のレジスタＲ１２＿１に格納された演算結果とのうち、１つを選択できる。そして、第４のレジスタＲ１２＿４は、マルチプレクサＭＵＸ１２の出力値を格納して、以前コラムのプロセッシングエレメントＰＥ１１側に伝達することができる。
【００１７】
図２のような４×３の入力データ行列（ＩＮＰＵＴ）と３×４のウエート行列（ＷＥＩＧＨＴ）とを乗算する行列積演算を行う場合を説明する。図２では、入力データ行列（ＩＮＰＵＴ）が４個のバッチ（ｂａｔｃｈ）で構成されたことを例示した。ここで、バッチとは、データの個数を意味できる。例えば、図２の入力データ行列（ＩＮＰＵＴ）で４個のローのそれぞれの１つのイメージでありうる。すなわち、入力データ行列は、４個のイメージ（バッチ）（Ｉ１１、Ｉ１２、Ｉ１３）、（Ｉ２１、Ｉ２２、Ｉ２３）、（Ｉ３１、Ｉ３２、Ｉ３３）、（Ｉ４１、Ｉ４２、Ｉ４３）を含むことができる。
【００１８】
図３は、４×２配列のシストリックアレイ３００を用いて図２の行列積演算を行う場合に、シストリックアレイ３００に入力データ行列（ＩＮＰＵＴ）とウエート行列（ＷＥＩＧＨＴ）とがロー入力ＩＮ＿Ｒ＿１〜ＩＮ＿Ｒ＿４とコラム入力ＩＮ＿Ｃ＿１〜ＩＮ＿Ｃ＿２とにどのように入力されなければならないかを示した図である。
【００１９】
図３においてＣＬＫ１は、１番目のサイクルに、シストリックアレイ３００に入力される値を表し、ＣＬＫ２は、２番目のサイクルに、シストリックアレイ３００に入力される値を表すことができる。例えば、１番目のサイクルＣＬＫ１に、プロセッシングエレメントＰＥ１１にＩ１１とＷ１１が入力されて演算されることができる。また、２番目のサイクルＣＬＫ２に、プロセッシングエレメントＰＥ１１にＩ１２とＷ１２が入力され、プロセッシングエレメントＰＥ１２にＩ１１とＷ１２が入力され、プロセッシングエレメントＰＥ２１にＩ２１とＷ１１が入力されて演算されることができる。すなわち、プロセッシングエレメントＰＥ１２は、以前コラムのプロセッシングエレメントＰＥ１１が１番目のサイクルＣＬＫ１で受信した入力データＩ１１を２番目のサイクルＣＬＫ２で受信し、プロセッシングエレメントＰＥ２１は、以前ローのプロセッシングエレメントＰＥ１１が１番目のサイクルＣＬＫ１で受信したウエートＷ１１を２番目のサイクルＣＬＫ２で受信することができる。
【００２０】
図３において、バウンダリ（ｂｏｕｎｄａｒｙ）Ｂ１、Ｂ２は、演算の範囲を表すことができる。シストリックアレイ３００のプロセッシングエレメントＰＥ１１、ＰＥ１２、ＰＥ２１、ＰＥ２２、ＰＥ３１、ＰＥ３２、ＰＥ４１、ＰＥ４２は、バウンダリ単位Ｂ１、Ｂ２で入力データとウエートとの乗算値を加算し、その結果を出力できる。図３のバウンダリＢ１、Ｂ２単位でシストリックアレイ３００から演算結果を出力すれば、図４のような結果値を導出できる。図４は、図２の入力データ行列（ＩＮＰＵＴ）とウエート行列（ＷＥＩＧＨＴ）との行列積結果であることを確認できる。
【００２１】
図２〜図４において説明した演算では、シストリックアレイ３００内の全てのプロセッシングエレメントＰＥ１１、ＰＥ１２、ＰＥ２１、ＰＥ２２、ＰＥ３１、ＰＥ３２、ＰＥ４１、ＰＥ４２が使用されるが、この場合、シストリックアレイ３００の使用効率は１００％でありうる。
【００２２】
以下では、図５のような２×３の入力データ行列（ＩＮＰＵＴ）と３×４のウエート行列（ＷＥＩＧＨＴ）とを乗算する行列積演算を行う場合を考えてみる。図５では、入力データ行列（ＩＮＰＵＴ）が２個のバッチ（ｂａｔｃｈ）で構成されたものを例示した。
【００２３】
図６は、４×２配列のシストリックアレイ６００を用いて図５の行列積演算を行う場合に、シストリックアレイ６００に入力データ行列（ＩＮＰＵＴ）とウエート行列（ＷＥＩＧＨＴ）とがどのように入力されなければならないかを示した図である。図３と同様に、図６においてＣＬＫ１、ＣＬＫ２等は、入力サイクルを示し、Ｂ１、Ｂ２は、演算のバウンダリを示すことができる。図６のバウンダリＢ１、Ｂ２単位でシストリックアレイ６００から演算結果を出力すれば、図７のような結果値を導出できる。図７は、図５の入力データ行列（ＩＮＰＵＴ）とウエート行列（ＷＥＩＧＨＴ）との行列積結果であることが確認できる。
【００２４】
図５〜図７において説明した演算では、シストリックアレイ６００内でプロセッシングエレメントＰＥ１１、ＰＥ１２、ＰＥ２１、ＰＥ２２のみが使用され、プロセッシングエレメントＰＥ３１、ＰＥ３２、ＰＥ４１、ＰＥ４２が使用されない。この場合、シストリックアレイ６００の使用効率は５０％になる。シストリックアレイ６００の使用効率が５０％であるということは、シストリックアレイ６００の性能が最大性能に比べて５０％減少し、不要な電流が使用されるということを意味している。
【００２５】
図８は、本発明の一実施形態に係るプロセッシングシステム８００の構成図である。
【００２６】
図８に示すように、プロセッシングシステム８００は、シストリックアレイ８５０、ホストインターフェース８０１、コントローラ８０３、メモリ８０５、メモリコントローラ８０７、データバッファ８０９、ローバッファ８１１、コラムバッファ８１３、モードスイッチレジスタ８１５、出力変換器８１７、及び後処理器８１９を備えることができる。ここで、プロセッシングシステム８００は、ＰＣＩエクスプレススロットに挿入されるカード形態、１つのチップの中に種々の構成が集約されたシステムオンチップ（ＳｏＣ：Ｓｙｓｔｅｍ  ｏｎ  Ｃｈｉｐ）、または１つのパッケージの中に様々なチップが集約されたシステムインパッケージ（ＳｉＰ：Ｓｙｓｔｅｍ  ｉｎ  Ｐａｃｋａｇｅ）など、様々な形態で存在することができる。また、プロセッシングシステム８００は、メモリの形態で構成されることもできる。例えば、ＨＢＭ（Ｈｉｇｈ  Ｂａｎｄｗｉｄｔｈ  Ｍｅｍｏｒｙ）のような積層型メモリのロジックダイ（ｌｏｇｉｃ  ｄｉｅ）にプロセッシングシステム８００からメモリ８０５を除いた構成が形成され得る。このような形態のメモリをプロセッサインメモリ（ＰＩＮ：Ｐｒｏｃｅｓｓｏｒ  Ｉｎ  Ｍｅｍｏｒｙ）ともいう。
【００２７】
ホストインターフェース８０１は、ホストとの通信のためのインターフェースでありうる。ホストインターフェース８０１を介してホスト、例えば、中央処理装置（ＣＰＵ：Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）からプロセッシングシステム８００が処理する各種命令及びデータが伝達され得る。
【００２８】
コントローラ８０３は、ホスト８０１の指示によってプロセッシングシステム８００が各種演算を行うことができるようにプロセッシングシステム８００全般を制御できる。バス８０４は、プロセッシングシステム８００内部の構成が各種信号及びデータを交換するためのバスでありうる。
【００２９】
メモリ８０５は、プロセッシングシステム８００が使用するメモリでありうる。メモリ８０５には、シストリックアレイ８５０が行うべき演算と関連したデータ、例えば、入力データとウエートとが格納され得る。メモリコントローラ８０７は、メモリ８０５をアクセスするために使用されることができる。
【００３０】
モードスイッチレジスタ８１５は、第１のモードと第２のモードのうち、１つのモードを設定するためのレジスタでありうる。モードスイッチレジスタ８１５に格納された設定値に応じてプロセッシングシステム８００は、第１のモードと第２のモードのうち、１つのモードで動作することができる。モードスイッチレジスタ８１５は、ホストインターフェース８０１を介して受信されたホストの指示により行われることができる。すなわち、ホストは、第１のモードの動作が一層効率的であると判断される場合には、モードスイッチレジスタ８１５を第１のモードに設定し、第２のモードの動作が一層効率的であると判断される場合には、モードスイッチレジスタ８１５を第２のモードに設定することができる。
【００３１】
データバッファ８０９は、メモリコントローラ８０７を介してメモリ８０５からデータ、すなわち、入力データとウエートとを伝送されて格納することができる。データバッファ８０９は、ローバッファ８１１とコラムバッファ８１３とにデータをロードすることができる。データバッファ８０９は、第１のモードでは、ローバッファ８１１に入力データをロードし、コラムバッファ８１３にウエートをロードできる。そして、データバッファ８０９は、第２のモードでは、第１のモードとは反対に、ローバッファ８１１にウエートをロードし、コラムバッファ８１３に入力データをロードできる。
【００３２】
ローバッファ８１１は、シストリックアレイ８５０のロー入力ＩＮ＿Ｒ＿１〜ＩＮ＿Ｒ＿４にローデータを伝達できる。第１のモードでは、データバッファ８０９が入力データをローバッファ８１１にロードするので、第１のモードでは、ローデータが入力データでありうる。また、第２のモードでは、データバッファ８０９がウエートをローバッファ８１１にロードするので、第２のモードでは、ローデータがウエートでありうる。一方、ローバッファ８１１は、シストリックアレイ８５０の出力ＯＵＴ＿１〜ＯＵＴ＿４から伝達される演算データをデータバッファ８０９に伝達するために使用されることができる。
【００３３】
コラムバッファ８１３は、シストリックアレイ８５０のコラム入力ＩＮ＿Ｃ＿１、ＩＮ＿Ｃ＿２にコラムデータを伝達できる。第１のモードでは、データバッファ８０９がウエートをコラムバッファ８１３にロードするので、第１のモードでは、コラムデータがウエートでありうる。また、第２のモードでは、データバッファ８０９が入力データをコラムバッファ８１３にロードするので、第２のモードではコラムデータが入力データでありうる。
【００３４】
出力変換器８１７は、第２のモードでシストリックアレイ８５０から出力される演算結果の形態を第１のモードと同じ形態に変換することができる。第１のモードと第２のモードでは、入力データとウエートとがシストリックアレイ８５０に入力される方向が変更されるので、第１のモードと第２のモードとにおいてシストリックアレイ８５０から出力される演算結果の形態が異なり得る。出力変換器８１７は、第２のモードでシストリックアレイ８５０から出力される演算結果を第１のモードと同じ形態に変更することができる。これは、第１のモードを基準としたものであり、第２のモードが基準である場合には、出力変換器８１７が第１のモードでシストリックアレイ８５０から出力される演算結果を第２のモードと同じ形態に変更することもできる。出力変換器８１７の変換動作については、図１１とともに詳細に説明する。
【００３５】
後処理器８１９は、シストリックアレイ８５０の演算結果を後処理（ｐｏｓｔ−ｐｒｏｃｅｓｓｉｎｇ）することができる。後処理器８１９は、ピクセル（ｐｉｘｅｌ）別に平均（ａｖｅｒａｇｅ）または最大（ｍａｘ）値を探すプーリング（ｐｏｏｌｉｎｇ）、閾値（ｔｈｒｅｓｈｏｌｄ）基盤でデータをフィルタリングするＲｅＬＵ（Ｒｅｃｔｉｆｉｅｄ  Ｌｉｎｅａｒ  Ｕｎｉｔ）、またはシグモイド（ｓｉｇｍｏｉｄ）のような活性関数（ａｃｔｉｖａｔｉｏｎ  ｆｕｎｃｔｉｏｎ）、結果値から外れる値をフィルタリングするノーマライズ（ｎｏｒｍａｌｉｚｅ）などの機能（ｆｕｎｃｔｉｏｎ）を行うことができる。
【００３６】
シストリックアレイ８５０は、ローとコラムの個数が異なるように配列されたプロセッシングエレメントＰＥ１１、ＰＥ１２、ＰＥ２１、ＰＥ２２、ＰＥ３１、ＰＥ３２、ＰＥ４１、ＰＥ４２を備えることができる（ここでは、４×２に例示する）。シストリックアレイ８５０は、第１のモードでは、ロー入力ＩＮ＿Ｒ＿１〜ＩＮ＿Ｒ＿４で入力データを受信し、コラム入力ＩＮ＿Ｃ＿１、ＩＮ＿Ｃ＿２でウエートを受信して演算することができる。また、シストリックアレイ８５０は、第２のモードでは、ロー入力ＩＮ＿Ｒ＿１〜ＩＮ＿Ｒ＿４でウエートを受信し、コラム入力ＩＮ＿Ｃ＿１、ＩＮ＿Ｃ＿２で入力データを受信して演算することができる。シストリックアレイ８５０のプロセッシングエレメントＰＥ１１、ＰＥ１２、ＰＥ２１、ＰＥ２２、ＰＥ３１、ＰＥ３２、ＰＥ４１、ＰＥ４２がローとコラムの個数が異なるように配列されるので、シストリックアレイ８５０が行う演算の形態によって第１のモードが有利であることができ、第２のモードが有利であることもできる。上記実施形態では、シストリックアレイ８５０内のローとコラムの個数を４×２に例示したが、ローとコラムの個数がこれと異なることができることは当然である。
【００３７】
図８のプロセッシングシステム８００において図２のような４×３の入力データ行列（ＩＮＰＵＴ）と３×４のウエート行列（ＷＥＩＧＨＴ）とを乗算する行列積演算を行う場合には、プロセッシングシステム８００を第１のモードに設定し、図３のように、シストリックアレイ８５０に入力データ行列とウエート行列を入力させて動作させれば、シストリックアレイ８５０の使用効率を１００％に維持することができる。
【００３８】
図８のプロセッシングシステム８００において図５のような２×３の入力データ行列（ＩＮＰＵＴ）と３×４のウエート行列（ＷＥＩＧＨＴ）とを乗算する行列積演算を行う場合に、プロセッシングシステム８００を第１のモードで動作させるならば、図５〜図７において説明したように、シストリックアレイ８５０の使用効率は５０％になるであろう。この場合には、シストリックアレイ８５０を第２のモードに設定し、動作させることが有利でありうる。
【００３９】
図９は、プロセッシングシステム８００が第２のモードに設定された場合に、図５のような２×３の入力データ行列（ＩＮＰＵＴ）と３×４のウエート行列（ＷＥＩＧＨＴ）とを乗算する行列積演算を行う場合に、シストリックアレイ８５０に入力データ行列とウエート行列とがどのように入力されなければならないかを示した図である。図６と同様に、図９においてＣＬＫ１、ＣＬＫ２などは入力サイクルを示し、Ｂは、演算のバウンダリを示すことができる。図９では、ただ１つのバウンダリＢで演算が可能であることが確認できる。図９のバウンダリＢ単位でシストリックアレイ８５０から演算結果を出力すれば、図１０のような結果値を導出できる。
【００４０】
図１０は、図５の入力データ行列（ＩＮＰＵＴ）とウエート行列（ＷＥＩＧＨＴ）との行列積結果からローとコラムとが変わったものであることが確認できる。出力変換器８１７は、図１０の結果値の形態を図１１のように変換することができる。出力変換器８１７は、単純に図１０の結果値からローとコラムとを変更することにより変換動作を行うことができる。例えば、（１，２）の位置の値を（２，１）の位置に変更し、（２，３）の位置の値を（３，２）の位置に変更し、（１，１）の位置の値はそのまま置くことができる。すなわち、（Ａ、Ｂ）の位置の値を（Ｂ、Ａ）の位置に変更することができる。図１１は、図７と一致し、これは、すなわち、図５の入力データ行列（ＩＮＰＵＴ）とウエート行列（ＷＥＩＧＨＴ）との行列積結果であることが確認できる。
【００４１】
図９〜図１１に示すように、プロセッシングシステム８００を第２のモードで動作させることにより、シストリックアレイ内のプロセッシングエレメントＰＥ１１、ＰＥ１２、ＰＥ２１、ＰＥ２２、ＰＥ３１、ＰＥ３２、ＰＥ４１、ＰＥ４２を全て使用することが可能であり、すなわち、使用効率を１００％に上げることが可能であり、演算にかかる時間を減らすことができるということが確認できる。
【００４２】
上述したように、プロセッシングシステム８００が行う行列演算の形態によってプロセッシングシステム８００を第１のモードと第２のモードのうち、１つのモードで動作させることにより、シストリックアレイの使用効率を上げ、不要な時間及び不要な電流が消費されることを防ぐことができる。
【００４３】
本発明の技術思想は、上記好ましい実施形態によって具体的に記述されたが、上記した実施形態は、その説明のためのものであり、その制限のためのものでないことに注意すべきである。また、本発明の技術分野の専門家であれば、本発明の技術思想の範囲内で様々な実施形態が可能であることが分かるであろう。
【符号の説明】
【００４４】
８００  プロセッシングシステム
８５０  シストリックアレイ
８０１  ホストインターフェース
８０３  コントローラ
８０５  メモリ
８０７  メモリコントローラ
８０９  データバッファ
８１１  ローバッファ
８１３  コラムバッファ
８１５  モードスイッチレジスタ
８１７  出力変換器
８１９  後処理器
【図１】
2020144843.tif 000003
【図２】
2020144843.tif 000004
【図３】
2020144843.tif 000005
【図４】
2020144843.tif 000006
【図５】
2020144843.tif 000007
【図６】
2020144843.tif 000008
【図７】
2020144843.tif 000009
【図８】
2020144843.tif 000010
【図９】
2020144843.tif 000011
【図１０】
2020144843.tif 000012
【図１１】
2020144843.tif 000013