(57)【要約】  オペランドを受信するように構成されたＮ個の加算器及びＮ個の乗算器を含むデータアーキテクチャを含む集積回路。データアーキテクチャは、データアーキテクチャのＮ個の乗算器とＮ個の加算器との間のデータフローを選択するための命令を受信する。選択データフローは以下を含む：（１）積和演算モードを提供するためにＮ個の乗算器及びＮ個の加算器を使用する第１のデータフロー、又は（２）乗算低減モードを提供する第２のデータフロー。
2021507385.tif 000002
【特許請求の範囲】
【請求項１】
オペランドを受信するように構成されたＮ個の加算器及びＮ個の乗算器を含むデータアーキテクチャ上で行われる機能を規定する方法であって、
前記データアーキテクチャが乗算低減モード又は積和演算モードのうちの１つにおいて動作するための命令を受信することと、
前記データアーキテクチャの前記Ｎ個の乗算器と前記Ｎ個の加算器のうちの少なくともいくつかとの間のデータフローを前記命令に基づき選択すること、を含む方法。
【請求項２】
前記データフローを選択することは、前記乗算低減モードに対応する命令を受信することに応答して、前記Ｎ個の乗算器及びＮ−１個の加算器を使用して第１のデータフローを選択することを含み、前記Ｎ個の加算器の１つは使用されない、請求項１に記載の方法。
【請求項３】
前記第１のデータフローは、前記Ｎ−１個の加算器が前記Ｎ個の乗算器から生じる入力を受信すること含む、請求項２に記載の方法。
【請求項４】
前記データフローを選択することは、前記積和演算モードに対応する命令を受信することに応答して、前記Ｎ個の乗算器及び前記Ｎ個の加算器を使用して第２のデータフローを選択することを含む、請求項１に記載の方法。
【請求項５】
前記第２のデータフローは、前記Ｎ個の加算器の各加算器が前記Ｎ個の乗算器のうちの対応乗算器から入力オペランドを受信することを含む、請求項４に記載の方法。
【請求項６】
オペランドを受信するように構成されたＮ個の加算器及びＮ個の乗算器を含むデータアーキテクチャを含む集積回路であって、
前記データアーキテクチャは、前記データアーキテクチャの前記Ｎ個の乗算器と前記Ｎ個の加算器のうちの少なくともいくつかとの間のデータフローを選択するための命令を受信し、
前記選択されたデータフローは、積和演算モードを提供するために前記Ｎ個の乗算器及び前記Ｎ個の加算器を使用する第１のデータフロー、又は乗算低減モードを提供する第２のデータフローを含む、集積回路。
【請求項７】
前記第１のデータフローは、前記Ｎ個の乗算器のうちの対応乗算器から入力オペランドを受信するために前記Ｎ個の加算器の各加算器を使用する、請求項６に記載の集積回路。
【請求項８】
前記第２のデータフローは前記Ｎ個の乗算器及びＮ−１個の加算器を使用し、前記Ｎ個の加算器の１つは使用されない、請求項６に記載の集積回路。
【請求項９】
前記第２のデータフローは、前記Ｎ個の乗算器から生じる入力を受信するために前記Ｎ−１個の加算器を使用する、請求項８に記載の集積回路。
【請求項１０】
オペランドを受信するように構成されたＮ個の加算器及びＮ個の乗算器を含むデータアーキテクチャ上で行われる機能を規定する方法をデバイスに行わせるように前記デバイスの少なくとも１つのプロセッサにより実行可能な一組の命令を格納する非一時的コンピュータ可読ストレージ媒体であって、前記方法は、
前記データアーキテクチャが乗算低減モード又は積和演算モードのうちの１つにおいて動作するための命令を受信することと、
前記データアーキテクチャの前記Ｎ個の乗算器と前記Ｎ個の加算器のうちの少なくともいくつかとの間のデータフローを前記命令に基づき選択することとを含む、非一時的コンピュータ可読ストレージ媒体。
【請求項１１】
前記データフローを選択することは、前記乗算低減モードに対応する命令を受信することに応答して、前記Ｎ個の乗算器及びＮ−１個の加算器を使用して第１のデータフローを選択することを含み、前記Ｎ個の加算器の１つは使用されない、請求項１０に記載の非一時的コンピュータ可読ストレージ媒体。
【請求項１２】
前記第１のデータフローは、前記Ｎ−１個の加算器が前記Ｎ個の乗算器から生じる入力を受信すること含む、請求項１１に記載の非一時的コンピュータ可読ストレージ媒体。
【請求項１３】
前記データフローを選択することは、前記積和演算モードに対応する命令を受信することに応答して、前記Ｎ個の乗算器及び前記Ｎ個の加算器を使用して第２のデータフローを選択することを含む、請求項１０に記載の非一時的コンピュータ可読ストレージ媒体。
【請求項１４】
前記第２のデータフローは、前記Ｎ個の加算器の各加算器が前記Ｎ個の乗算器のうちの対応乗算器から入力オペランドを受信することを含む、請求項１３に記載の非一時的コンピュータ可読ストレージ媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
[1]  本出願は参照のためその内容を本明細書に援用する２０１７年１２月２２日出願の米国仮特許出願第６２／６１０，０５２号及び２０１８年８月３日出願の米国特許出願第１６／０５４，７８３号に基づいておりその優先権を主張する。
【背景技術】
【０００２】
背景
[2]  様々な事業単位にわたるニューラルネットワークベース深層学習アプリケーションの指数関数的成長に伴い、市販品中央処理ユニット／グラフィック処理ユニット（ＣＰＵ／ＧＰＵ：Central Processing Unit/Graphics Processing Unit）ベースプラットホームはもはや、性能、電力効率及び経済的拡張可能性の観点でますます増加する計算要求を支援するための好適な計算基板ではない。ニューラルネットワークベース深層学習アプリケーションを加速するためにニューラルネットワークプロセッサを開発することは、確立されたチップメーカ、新興会社、及び大きなインターネット会社を含む多くの事業区分にわたる著しい牽引力を得てきた。単一命令多重データ（ＳＩＭＤ：Single Instruction Multiple Data）アーキテクチャが、深層学習の用途のための計算を加速するためにチップへ適用され得る。
【０００３】
[3]  ニューラルネットワークアルゴリズムは通常、大きな行列積和演算（matrix multiplication accumulation operation）を必要とする。したがって、加速ハードウェアは通常、加速度を促進するために大規模な並列積和演算構造を必要とする。しかし、このような構造の面積及び電力コストのニーズは、電力消費を節約するためにハードウェアの計算速度を最適化するとともに多くのチップのサイズを低減するために、制御されなければならない。
【発明の概要】
【課題を解決するための手段】
【０００４】
概要
[4]  本開示のいくつかの実施形態は、積和演算又は乗算低減（multiply-reduce）のいずれかを行うように加算器の再使用を可能にするために、乗算器アレイと加算器アレイとの間のソフトウェアプログラム可能接続のアーキテクチャを提供する。従来の解決策と比較して、このアーキテクチャは、より面積効率的且つ電力効率的であり、このことは、相当な数のデータレーンが実装されるニューラルネットワーク処理ユニットにとって重要である。
【０００５】
[5]  本開示のいくつかの実施形態は、オペランドを受信するように構成されたＮ個の加算器及びＮ個の乗算器を含むデータアーキテクチャ上で行われる機能を規定する方法を提供する。本方法は、データアーキテクチャが乗算低減モード又は積和演算モードの１つにおいて動作するための命令を受信することと、データアーキテクチャのＮ個の乗算器とＮ個の加算器のうちの少なくともいくつかとの間のデータフローを命令に基づき選択することとを含む。
【０００６】
[6]  さらに、本開示の実施形態は集積回路を含む。集積回路は、オペランドを受信するように構成されたＮ個の加算器及びＮ個の乗算器を含むデータアーキテクチャを含む。データアーキテクチャは、データアーキテクチャのＮ個の乗算器とＮ個の加算器との間のデータフローを選択するための命令を受信する。選択されたデータフローは以下を含む：（１）積和演算モードを提供するためにＮ個の乗算器及びＮ個の加算器を使用する第１のデータフロー、又は（２）乗算低減モードを提供する第２のデータフロー。
【０００７】
[7]  さらに、本開示の実施形態は、デバイスに前述の方法を行わせるためにデバイスの少なくとも１つのプロセッサにより実行可能な一組の命令を格納する非一時的コンピュータ可読ストレージ媒体を含む。
【図面の簡単な説明】
【０００８】
図面の簡単な説明
【図１】[8]本開示の実施形態と整合する例示的ニューラルネットワーク処理ユニットチップアーキテクチャを示す。
【図２】[9]並列の４つのレーンを有する積和アレイの例示的アーキテクチャを示す。
【図３】[10]積和演算器（ＭＡＣ：multiply-accumulator）ユニット設計の例示的アーキテクチャを示す。
【図４】[11]低減加算器（reduce-adder）ツリーが後に続く並列乗算器の例示的アーキテクチャを示す。
【図５】[12]個別データレーンにおける累算能力とレーン全体にわたる累算能力との両方をしばしば必要とするアルゴリズムをマッピングする例示的アーキテクチャを示す。
【図６Ａ】[13]本開示の実施形態と整合する積和アレイの例示的アーキテクチャを示す。
【図６Ｂ】[13]本開示の実施形態と整合する積和アレイの例示的アーキテクチャを示す。
【図７】[14]本開示の実施形態と整合するデータアーキテクチャ上で行われる機能を規定する例示的方法を示す。
【発明を実施するための形態】
【０００９】
詳細な説明
[15]  その例が添付図面に示される例示的実施形態を次に詳細に参照する。以下の説明は、特記しない限り、様々な図面内の同じ参照符号が同じ又は同様な要素を表す添付図面を参照する。例示的実施形態の以下の説明において記載される実施形態は本発明に整合するすべての実施形態を表すとは限らない。むしろ、これらは、添付の特許請求の範囲に記載される本発明に関係する態様に整合する装置及び方法の一例に過ぎない。
【００１０】
[16]  本開示の実施形態は、深層学習アルゴリズムを加速するための図１に示す例示的ＮＰＵアーキテクチャ（ＮＰＵ：Network Processing Unit）１００などのニューラルネットワーク処理ユニットアーキテクチャで実現され得る。
【００１１】
[17]  図１は本開示の実施形態による例示的アーキテクチャ１００を示す。図１に示すように、アーキテクチャ１００は、オンチップ通信システム１０２、オフチップメモリ１０４、メモリコントローラ１０６、直接メモリアクセス（ＤＭＡ：direct memory access）ユニット１０８、ジョイントテストアクショングループ（ＪＴＡＧ：Joint Test Action Group）／テストアクセスエンド（ＴＡＰ：Test Access End）コントローラ１１０、バス１１２、周辺インターフェース１１４などを含み得る。オンチップ通信システム１０２は伝達されたデータパケットに基づき算術演算を行い得るということが理解される。
【００１２】
[18]  チップ通信システム１０２は、グローバルマネージャ１０５及び複数のタイル１０２４を含み得る。グローバルマネージャ１０５は、タイル１０２４と連携するために少なくとも１つのクラスタマネージャを含み得る。例えば、各クラスタマネージャは、ニューラルネットワークのシナプス／ニューロン回路系を提供するタイルのアレイへ関連付けられ得る。例えば、図１の最上層のタイルは入力層を表す回路系をニューラルネットワークへ提供し得、一方、第２の層のタイルはニューラルネットワークの隠蔽層を表す回路系を提供し得る。図１に示すように、グローバルマネージャ１０５は、タイルの２つのアレイと連携するために２つのクラスタマネージャを含み得る。タイル１０２４は、１つ又は複数の乗算器、加算器、積和演算器を含むＳＩＭＤアーキテクチャを含み得、グローバルマネージャ１０５の制御下で、伝達されたデータパケットに対し１つ又は複数の演算（例えば算術計算）を行うように構成される。伝達されたデータパケットに対し演算を行うために、タイル１０２４は、データパケットを処理するための少なくとも１つのコアとデータパケットを格納するための少なくとも１つのバッファとを含み得る。
【００１３】
[19]  オフチップメモリ１０４は、読み出し専用メモリ（ＲＯＭ：read-only memory）、消去可能プログラマブル読み出し専用メモリ（ＥＰＲＯＭ：erasable programmable read-only memory）などを含み得る。オフチップメモリ１０４は、１つ又は複数のプロセッサと共に集積化されたオンチップメモリと比較して、より遅いアクセス速度でもって大量のデータを格納するように構成され得る。
【００１４】
[20]  メモリコントローラ１０６は、１つ又は複数のメモリデバイスを読み出し、書き込み、又はリフレッシュし得る。メモリデバイスは、オンチップメモリ及びオフチップメモリを含み得る。例えば、メモリデバイスは、スタティックランダムアクセスメモリ（ＳＲＡＭ：static random-access memory）、電気的消去可能プログラマブル読み出し専用メモリ（ＥＥＰＲＯＭ）、消去可能プログラマブル読み出し専用メモリ（ＥＰＲＯＭ）、プログラマブル読み出し専用メモリ（ＰＲＯＭ：programmable read-only memory）、読み出し専用メモリ（ＲＯＭ）、磁気メモリ、フラッシュメモリ、若しくは磁気又は光ディスクなどのいずれかのタイプの揮発性若しくは不揮発性メモリデバイス、又はそれらの組み合せとして実現され得る。
【００１５】
[21]  ＤＭＡユニット１０８はメモリアドレスを生成し、メモリ読み出し又は書き込みサイクルを開始し得る。ＤＭＡユニット１０８は、１つ又は複数のプロセッサにより書き込まれ読み出され得るいくつかのハードウェアレジスタを含み得る。レジスタは、メモリアドレスレジスタ、バイトカウントレジスタ及び１つ又は複数の制御レジスタを含み得る。これらのレジスタは、ソース、送付先、転送の方向（入力／出力（Ｉ／Ｏ）デバイスからの読み出し、又はＩ／Ｏデバイスへ書き込み）、転送ユニットのサイズ、及び／又は１回のバーストで転送すべきバイトの数のうちのいくつかの組み合わせを規定し得る。
【００１６】
[22]  ＪＴＡＧ／ＴＡＰコントローラ１１０は、システムアドレス及びデータバスへの直接外部アクセスを必要としない低オーバヘッドアクセスのためのシリアル通信インターフェース（例えばＪＴＡＧインターフェース）を実現する専用デバッグポートを規定し得る。ＪＴＡＧ／ＴＡＰコントローラ１１０はまた、様々な部分のチップ論理レベル及びデバイス能力を提示する一組のテストレジスタへアクセスするためのプロトコルを実装するオンチップテストアクセスインターフェース（例えばＴＡＰインターフェース）を規定し得る。
【００１７】
[23]  バス１１２は、イントラチップバス及びインターチップバスを含み得る。イントラチップバスは、オンチップ通信システム１０２、オフチップメモリ１０４、メモリコントローラ１０６、ＤＭＡユニット１０８、ＪＴＡＧ／ＴＡＰコントローラ１１０及びＰＣＩｅインターフェース１１４などのＮＰＵアーキテクチャ１００のすべての内部構成要素を互いに接続し得る。
【００１８】
[24]  周辺インターフェース１１４（ＰＣＩｅインターフェースなど）は、複数のエンドポイントにわたる同時アクセスに関する固有制限無しに、任意の２つのエンドポイント間の全二重通信を支援し得る。
【００１９】
[25]  単一命令多重データ（ＳＩＭＤ）アーキテクチャを有するコンピュータでは、並列多重処理ユニット、算術論理ユニット（ＡＬＵ：Arithmetic Logic Unit）又は小型ＣＰＵのそれぞれは、それ自身のデータ（通常は２つ又は３つの入力オペランド及び１つの出力結果）により同時に計算する。例えば、積和アレイは、各データレーンが専属乗算器及び加算器を所有し得るＳＩＭＤアーキテクチャでは一般的である。専属乗算器及び加算器は、様々なデータフローが並列に処理されることを可能にする。図２は並列の４つのレーンを有する積和アレイの例示的アーキテクチャを示し、このアレイは４つの乗算器Ｍ１〜Ｍ４及び４つの加算器Ａ１〜Ａ４を含む。本開示における図は４ウェイＳＩＭＤで示されることになるが、４ウェイＳＩＭＤ概念は４つのレーンより狭く又は広くなるように拡張可能であることに注意すべきである。
【００２０】
[26]  図２に示すように、２つのオペランドが各乗算器（すなわちＭ１〜Ｍ４）へ入力される。簡単のために、オペランドｏｐ１及びｏｐ２は乗算器Ｍ１内へ入力され、乗算器Ｍ１は結果Ｒ１を生成する。複数のオペランドｏｐ１とｏｐ２との結果Ｒ１は加算器Ａ１へ入力され、加算器Ａ１は結果Ｒ２を生成するために入力オペランドｏｐ３も受信する。オペランドｏｐ３と結果Ｒ１との加算の結果Ｒ２は、さらなる処理（図示せず）に進み得る。上記演算は次のように要約され得る：
Ｒ２＝［（ｏｐ１＊ｏｐ２）＝Ｒ１］＋ｏｐ３
【００２１】
[27]  上記演算と同時に、他のオペランドが図２に示す他の乗算器へ入力され、各他の乗算器からの結果は、他のオペランドと共に他の加算器へ入力され、その結果はさらなる処理（図示せず）に進む。
【００２２】
[28]  いくつかの最適化された設計は、面積を節約するために乗算器と加算器とを１つの積和演算器（ＭＡＣ）ユニットへ融合し得る。図３は４つのＭＡＣユニットＭｃ１〜Ｍｃ４を含むＭＡＣユニット設計の例示的アーキテクチャを示す。図３に示すように、３つの演算が各ＭＡＣユニットへ入力される。簡単のために、オペランドｏｐ１、ｏｐ２及びｏｐ３が図３に示され、オペランドｏｐ１はオペランドｏｐ２と乗算され、その結果はオペランドｏｐ３へ加算される。結果（例えばＲ３）はさらなる処理（図示せず）に進む。
【００２３】
[29]  上記演算と同時に、他のオペランドが図３に示す他のＭＡＣユニットへ入力され、各他のＭＡＣユニットからの結果はさらなる処理（図示せず）に進む。図３の演算は、第１の層が乗算器Ｍ１〜Ｍ４を含み第２の層が加算器Ａ１〜Ａ４を含む図２に示す２層セットアップではなく１層だけの構成要素（すなわちＭＡＣユニットＭｃ１〜Ｍｃ４）が存在するということを除いて、図２の演算と同様である。
【００２４】
[30]  しかし、図２、３に示された実施形態は、並列の専属レーン内のデータだけを処理し得るということに注意すべきである。すなわち、クロスレーンデータ処理能力は無い。さらに、いくつかのニューラルネットワークでは、大きな行列積和演算が非常に一般的である。このような演算は、大きいがそれ程広くない並列ハードウェアへ効率的やり方でマッピングされる必要がある。したがって、複数のＳＩＭＤレーンにわたる累算演算は、性能にとって重要であり得る。様々なＳＩＭＤレーンからの高速低減累算演算を可能にするために、加算器ツリーが通常、乗算器アレイの後に導入される。
【００２５】
[31]  図４は低減加算器ツリーが後に続く並列乗算器の例示的アーキテクチャを示す。動作中、一対のオペランドが乗算器（例えばＭ１〜Ｍ４）のそれぞれへ入力される。簡単のために、オペランドｏｐ１、ｏｐ２が乗算器Ｍ１への入力として示され、オペランドｏｐ１、ｏｐ２が乗算器Ｍ２への入力として示されるが、他の対のオペランドが他の乗算器Ｍ３〜Ｍ４へ同時に入力され得るということが容易に理解される。さらに、オペランドｏｐ１、ｏｐ２が乗算器Ｍ１、Ｍ２両方への入力として示されたとしても、オペランドｏｐ１、ｏｐ２は互いに（そして他の乗算器Ｍ３、Ｍ４へ入力されるオペランドに対する拡張により）異なり得る。この差異は、これらオペランドの識別子及び入力を通じてのデータのタイプ及び種類における差異であり得る。
【００２６】
[32]  オペランドｏｐ１、ｏｐ２の乗算の結果Ｒ４は、結果Ｒ６を生成するために加算器Ａ１において、オペランドｏｐ１、ｏｐ２の乗算の結果Ｒ５へ加算される。結果Ｒ６は、結果Ｒ８を生成するために加算器Ａ３において、結果Ｒ７（加算器Ａ２からの）へ加算される。結果Ｒ８はさらなる処理（図示せず）に進む。
【００２７】
[33]  加算器Ａ１〜Ａ３は低減加算器ツリーを形成し、このツリー内には図２に示すアーキテクチャより１つ少ない加算器が存在するが、レベル（すなわちＭ１〜Ｍ４を含むレベル１、Ａ１〜Ａ２を含むレベル２、及びＡ３を含むレベル３）の数は、２つのレベル（すなわちＭ１〜Ｍ４を含むレベル１とＡ１〜Ａ４を含むレベル２）が存在する図２に示すレベルから増加している。図４におけるレベルは増加しているが、本アーキテクチャは、複数の乗算器と加算器ツリーとを使用して単一結果（例えば結果Ｒ８）を生成し、一方、図２に示すアーキテクチャは４つのバラバラな又は並列の結果を生成する。
【００２８】
[34]  実際、図２、３、４に示されたマッピングアーキテクチャはしばしば、個別データレーン内においてとレーン全体にわたってとの両方で累算する能力を必要とする。例えば、図５は低減加算器ツリーが後に続く並列ＭＡＣ層を提供するこのようなアーキテクチャの例を示す。動作中、３つのオペランドが層１内のＭＡＣユニットのそれぞれへ入力される。ＭＡＣユニットのそれぞれからの結果は低減加算器ツリー内へ入力される。例えば、オペランドｏｐ１、ｏｐ２、ｏｐ３は、結果Ｒ９を生成するためのＭＡＣユニットＭｃ１内に入力される。他の３つのオペランドは、結果Ｒ１０、Ｒ１１、Ｒ１２をそれぞれ生成するために、ＭＡＣユニットＭｃ２〜Ｍｃ４のそれぞれへ入力される。結果Ｒ９（ＭＡＣユニットＭｃ１からの）は、Ｒ１３を生成するために結果Ｒ１０（ＭＡＣユニットＭｃ２からの）と共に加算器Ａ１へ入力される。同様に、結果Ｒ１１（ＭＡＣユニットＭｃ３からの）は、Ｒ１４を生成するために結果Ｒ１２（ＭＡＣユニットＭｃ４からの）と共に加算器Ａ２へ入力される。加算器Ａ３は、結果Ｒ１５を生成するためにオペランドとして結果Ｒ１３、Ｒ１４を受信し、さらなる処理（図示せず）に進む。
【００２９】
[35]  本開示の実施形態は、プログラム可能積和アレイハードウェアを提供する。例えば、これらの実施形態は、積和演算又は乗算低減加算のいずれかを行うために加算器の再使用を可能にすべく乗算器アレイと加算器アレイとの間のデータフローを選択する能力を説明する。したがって、本アーキテクチャは、代替解決策より高い面積効率及び電力効率を提供する。
【００３０】
[36]  さらに、実施形態はニューラルネットワーク処理ユニットへ向けられたが、本明細書に説明される実施形態はクロスレーンデータ処理能力を有する任意のＳＩＭＤアーキテクチャハードウェア（特に深層学習のための加速器）により実現される可能性があるということが理解される。これは、ニューラルネットワーク処理ユニット及びＦＰＧＡ上で専用化されたＳＩＭＤアーキテクチャハードウェア、並びに深層学習市場に向けて広がるアップグレードされたＧＰＵ及びＤＳＰを含む。
【００３１】
[37]  図６Ａ及び６Ｂは、本開示の実施形態と整合する積和演算モードと乗算低減モードとを行うためにプログラム可能な積和アレイ６００の例示的アーキテクチャを示す。図６Ａ、６Ｂに示すように、加算器Ａ１〜Ａ４は乗算低減モード（図６Ａ）及び積和演算モード（図６Ｂ）において再使用される。
【００３２】
[38]  動作中、そして図６Ａに示すように、加算器Ａ４はデータフローから切断され、一方、加算器Ａ１〜Ａ３は乗算低減演算を行うために接続される。同図において、乗算器Ｍ１は、加算器Ａ１への出力オペランドを生成するために、２つのオペランドｏｐ１、ｏｐ２を取る。乗算器Ｍ２、Ｍ３、Ｍ４は、Ｍ１と同じ動作をするために同様に装備されており、出力オペランドをそれらの対応加算器へ提供する。例えば、乗算器Ｍ１、Ｍ２は出力オペランドを加算器Ａ１へ提供し、一方、乗算器Ｍ３、Ｍ４は出力オペランドを加算器Ａ２へ提供する。加算器Ａ１、Ａ２はそれらの入力オペランドを加算し、出力オペランドを加算器Ａ３へ提供し得る。
【００３３】
[39]  並列積和演算を行うために、図６Ｂに示すように、データフローは、各加算器Ａ１〜Ａ４が対応乗算器へ接続されることを含む。乗算器Ｍ１は、結果オペランドＲ１６を生成するために、２つのオペランドｏｐ１、ｏｐ２を取る。結果オペランドＲ１６及びオペランドｏｐ３は、オペランドとして加算器Ａ１へ提供される。Ａ１からの結果は、別のアレイ（図示せず）方向へ進み得る。同様に、乗算器Ｍ２〜Ｍ４は一組のオペランドを取り、Ｍ２〜Ｍ４のそれぞれからの結果オペランドは、Ａ３、Ａ２、Ａ４それぞれへの第１オペランドとして、加算器Ａ３、Ａ２、Ａ４それぞれへ入力される。Ａ２〜Ａ４のそれぞれは第２オペランドを取り、結果オペランドは他のアレイ（図示せず）方向へ進み得る。
【００３４】
[40]  開示された実施形態は、いずれかのモードで実行するために、乗算器アレイと加算器アレイとの間のソフトウェア制御可能データフローを提供する。乗算器及び加算器を介しデータフローを選択するためのハードウェアを指示する１つのやり方は、様々な所望演算のための様々な命令を生成するためのコンパイラを介する。例えばＤ＝ＯＰ１＊ＯＰ２＋ＯＰ３を行うために、コンパイラは以下の命令を生成する可能性がある：
ｒ０＝ＬＯＡＤ  Ｍｅｍ［＆ＯＰ１］；
ｒ１＝ＬＯＡＤ  Ｍｅｍ［＆ＯＰ２］；
ｒ２＝ＬＯＡＤ  Ｍｅｍ［＆ＯＰ３］；
ｒ３＝ＭＵＬ  ｒ０，ｒ１；
ｒ３＝ＡＤＤ  ｒ３，ｒ２；
ＳＴＯＲＥ  Ｍｅｍ［＆Ｄ］，ｒ３。
コンパイルされたコードは、モード毎のデータフローをナビゲートするためのマルチプレクサ及びレジスタを制御するための情報を含み得る。乗算器アレイ、加算器アレイ、マルチプレクサ及びレジスタは、各タイル（例えば図１のアーキテクチャ１００のタイル１０２４）内へ取り込まれ得る。各タイルは、タイル１０２４内のＳＩＭＤアーキテクチャ上で行われる機能を規定するための命令をクラスタマネージャから（いくつかのケースではサイクル毎ベースで）受信し得る。クラスタマネージャから受信される命令に依存して、様々なタイルにわたるＳＩＭＤアーキテクチャは、互いに独立し得、これにより、同じ動作モード又は異なる動作モードで動作し得る。
【００３５】
[41]  クラスタマネージャから命令を受信した後、タイルのコアは、動作モード命令を、ＳＩＭＤアーキテクチャ上で行われる機能を規定するためのタイルの命令バッファ内へ発行し得る。これらの規定された機能は、乗算低減モード（図６Ａに示すような）に対応するデータフロー又は積和演算モード（図６Ｂに示すような）に対応するデータフローを生じ得る。
【００３６】
[42]  図６Ａ、６Ｂに示すように、ＳＩＭＤアーキテクチャに関して、本開示は、乗算低減モードと積和演算モードとの両方にわたるＮ個の乗算器及びＮ個の加算器を使用する。ＳＩＭＤアーキテクチャは、Ｎ個の乗算器及びＮ個の加算器を有するＮウェイＳＩＭＤアーキテクチャであってもよいし、Ｎ個の乗算器及びＮ個の加算器以外の加算器及び乗算器（例えば、これらの他の加算器及び乗算器は能動状態でないかもしれない）を含んでもよいということが理解される。当業者は、本開示において提供される実施形態が、より面積効率的且つ電力効率的であるということを理解することになる。この効率は、幾千のデータレーンが実装され得るニューラルネットワーク処理ユニットにとって重要である。本開示における実施形態は、Ｎ個の乗算器と、加算器Ａ１〜Ａ４に加えて少なくとも別の２層の加算器を伴う２Ｎ−１個の加算器とを必要とするだろう図２の実施形態より面積効率的且つ電力効率的である。すなわち、加算器Ａ１、Ａ２の出力はオペランドとして第５の加算器へ入力され、一方、加算器Ａ３、Ａ４の出力はオペランドとして第６の加算器へ入力されるだろう。そして、第５及び第６の加算器の出力はオペランドとして第７の加算器へ入力されるだろう。さらに、本開示は、Ｎ個のＭＡＣ（融合された乗算器及び加算器）とＮ−１個の加算器とを必要とするだろう図４の実施形態より面積効率的且つ電力効率的である。
【００３７】
[43]  図７は、本開示の実施形態と整合するデータアーキテクチャ上で行われる機能を規定するための例示的方法７００を示す。本方法は、例えばＮＰＵアーキテクチャ（例えば図１に示すＮＰＵアーキテクチャ１００）により行われ得る。例えば、ＮＰＵアーキテクチャの構成要素（グローバルマネージャ１０５、クラスタマネージャ、タイル１０２４又はそれらの任意の組み合せなどの）が方法７００を行うことを支援し得る。
【００３８】
[44]  初期開始工程７０５の後、工程７１０において、ＳＩＭＤアーキテクチャはＮ個の乗算器及びＮ個の加算器を与えられる。Ｎ個の乗算器は２つの入力オペランドを受信するように構成され、一方、Ｎ個の加算器は２つの入力オペランドに対する演算を提供するように構成される。
【００３９】
[45]  工程７１５において、ＳＩＭＤアーキテクチャは乗算低減モード又は積和演算モードに対応する命令を受信する。例えば、上述のように、上記命令はＳＩＭＤアーキテクチャ上で行われる機能を規定し得る。
【００４０】
[46]  工程７２０において、命令が乗算低減モードに対応する場合、ＳＩＭＤアーキテクチャは、乗算低減機能を提供するデータフロー（例えば、図６Ａに示される）を選択する。特に、乗算低減データフローは、Ｎ個の乗算器及びＮ−１個の加算器（加算器の１つは使用されない）に関わる一組の接続を使用する。例えば、図６Ａに示すように、加算器Ａ４は切断され、一方、加算器Ａ１〜Ａ３は乗算低減演算を行うために接続される。同図において、乗算器Ｍ１は、加算器Ａ１への出力オペランドを生成するために２つのオペランドｏｐ１、ｏｐ２を取る。乗算器Ｍ２、Ｍ３、Ｍ４は、Ｍ１と同じ動作をするために同様に装備されており、出力オペランドをそれらの対応加算器へ提供する。例えば、乗算器Ｍ１、Ｍ２は出力オペランドを加算器Ａ１へ提供し、一方、乗算器Ｍ３、Ｍ４は出力オペランドを加算器Ａ２へ提供する。加算器Ａ１、Ａ２はそれらの入力オペランドを加算し、出力オペランドを加算器Ａ３へ提供し得る。
【００４１】
[47]  工程７２５において、命令が積和演算モードに対応する場合、ＳＩＭＤアーキテクチャは、積和演算機能を提供するデータフロー（例えば、図６Ｂに示される）を選択する。特に、積和演算データフローは、Ｎ個の乗算器及びＮ個の加算器に関わる一組の接続を使用する。例えば、図６Ｂに示すように、各加算器Ａ１〜Ａ４は乗算器の後に接続される。乗算器Ｍ１は、結果オペランドＲ１６を生成するために２つのオペランドｏｐ１、ｏｐ２を取る。結果オペランドＲ１６及びオペランドｏｐ３は、オペランドとして加算器Ａ１へ提供される。Ａ１からの結果は、別のアレイ（図示せず）方向へ進み得る。同様に、乗算器Ｍ２〜Ｍ４は一組のオペランドを取り、Ｍ２〜Ｍ４のそれぞれからの結果オペランドは、Ａ３、Ａ２、Ａ４それぞれへの第１オペランドとして、加算器Ａ３、Ａ２、Ａ４それぞれへ入力される。Ａ２〜Ａ４のそれぞれは第２オペランドを取り、結果オペランドは他のアレイ（図示せず）方向へ進み得る。
【００４２】
[48]  工程７２０又は工程７２５後、方法７００は７３０において終了し得る。ＳＩＭＤアーキテクチャはモードを変更する構成命令を受信するまで、その指示されたモードで動作し得るということが理解される。
【００４３】
[49]  ＮＰＵアーキテクチャのグローバルマネージャは、上述のＳＩＭＤアーキテクチャの構成を制御するためのソフトウェアを使用する可能性があるということが理解される。例えば、グローバルマネージャは、乗算器及び加算器の構成モードを変更するために命令をタイル又はコアへ送信し得る。ソフトウェアは非一時的コンピュータ可読媒体上に格納され得る。非一時的媒体の一般的な形態は、例えばフロッピー（登録商標）ディスク、フレキシブルディスク、ハードディスク、固体駆動装置、磁気テープ、又は任意の他の磁気データストレージ媒体、ＣＤ−ＲＯＭ、任意の他の光データ記憶媒体、孔のパターンを有する任意の物理媒体、ＲＡＭ、ＰＲＯＭ、ＥＰＲＯＭ、ＦＬＡＳＨ（登録商標）−ＥＰＲＯＭ又は任意の他のフラッシュメモリ、ＮＶＲＡＭ、キャッシュ、レジスタ、任意の他のメモリチップ又はカートリッジ、及びこれらのネットワークバージョンを含む。
【００４４】
[50]  上述の明細書では、実施形態は、実施形態毎に変化し得る多数の特定詳細を参照し説明された。説明された実施形態のいくつかの適応化及び修正がなされ得る。他の実施形態は本明細書に開示された発明の仕様及び実行の考察から当業者にとって明らかになり得る。本明細書及び例は例示的にすぎないと考えられ得、本発明の真の範囲と精神は以下の特許請求の範囲により指示されるということが意図されている。添付図面に示される工程のシーケンスは例示的目的だけのためであり工程の任意特定シーケンスへ制限されるように意図されていないということも意図されている。したがって、当業者は、これらの工程が同じ方法を実施しながら異なる順序で行われ得るということを理解し得る。
【図１】
2021507385.tif 000003
【図２】
2021507385.tif 000004
【図３】
2021507385.tif 000005
【図４】
2021507385.tif 000006
【図５】
2021507385.tif 000007
【図６Ａ】
2021507385.tif 000008
【図６Ｂ】
2021507385.tif 000009
【図７】
2021507385.tif 000010
【国際調査報告】
2021507385.tif 000011