(57)【特許請求の範囲】
【請求項１】
蓄積メモリと、
入力値に数学的演算を実行するように構成された複数の畳み込みモジュールと、
前記複数の畳み込みモジュールから出力された値を合計するように構成された複数の加算器モジュールと、
各畳み込みモジュールが、各加算器モジュールと、前記蓄積メモリとに直接接続を有し、各加算器モジュールが前記蓄積メモリに直接接続を有するように、前記複数の畳み込みモジュールと、前記複数の加算器モジュールと、前記蓄積メモリとを接続する複数の畳み込み出力インターコネクトと、
畳み込み出力接続スキームに応じて、畳み込み出力インターコネクトを開閉するように構成され、これにより、各畳み込みモジュールは、前記複数の畳み込み出力インターコネクトを通じた、前記蓄積メモリまたは前記複数の加算器モジュールの１つに対する開直接接続が１を超えないようになる、畳み込み出力インターコネクト制御モジュールと、
を備える、デバイス。
【請求項２】
前記複数の畳み込みモジュールのそれぞれと通信し、前記入力値を格納する入力データメモリと、
前記複数の畳み込みモジュールの動作を同期させるように構成された１つまたは複数のシーケンサモジュールと、
をさらに備える、請求項１に記載のデバイス。
【請求項３】
前記入力データメモリおよび前記複数の畳み込みモジュールと通信し、複数のインデクスを含むラインバッファと、
各畳み込みモジュールが、各インデクスと、前記入力データメモリとに直接接続を有するように、前記複数のインデクスと、前記複数の畳み込みモジュールと、前記入力データメモリとを接続する複数の畳み込み入力インターコネクトと、
畳み込み入力接続スキームに応じて畳み込み入力インターコネクトを開閉するように構成され、これにより、各畳み込みモジュールは、前記複数の畳み込み入力インターコネクトを通じた、前記入力データメモリまたは前記複数のインデクスの１つに対する開直接接続が１を超えないようになる、畳み込み入力インターコネクト制御モジュールと、
をさらに備える、請求項２に記載のデバイス。
【請求項４】
前記蓄積メモリは、書き込み可能メモリブロックの蓄積メモリアロケーションである、請求項１から３のいずれか一項に記載のデバイス。
【請求項５】
前記書き込み可能メモリブロックは、再構成可能バンク幅を有する、請求項４に記載のデバイス。
【請求項６】
前記蓄積メモリアロケーションの各バンクは、前記書き込み可能メモリブロックの連続したバンクの仮想的な組み合わせである、請求項５に記載のデバイス。
【請求項７】
前記書き込み可能メモリブロックは、前記入力値を格納する、入力データメモリアロケーションをさらに含む、請求項４から６のいずれか一項に記載のデバイス。
【請求項８】
前記畳み込み出力接続スキームは、前記複数の加算器モジュールの内の共通加算器モジュールに対する開直接接続を有する、前記複数の畳み込みモジュールの内の１つを超える畳み込みモジュールを含む、請求項１から７のいずれか一項に記載のデバイス。
【請求項９】
ニューラルネットワークと、集積回路の構成とを取得する手順であって、前記集積回路は、複数の畳み込みモジュール、複数の加算器モジュール、蓄積メモリ、および前記複数の畳み込みモジュール、前記複数の加算器モジュール、および前記蓄積メモリを接続する複数の畳み込み出力インターコネクトの内の畳み込み出力インターコネクトを開閉するように構成された畳み込み出力インターコネクト制御モジュールを含む、手順と、
少なくとも１つの畳み込み出力接続スキームを決定する手順であって、これにより、各畳み込みモジュールは、前記複数の畳み込み出力インターコネクトを通じた、前記蓄積メモリまたは前記複数の加算器モジュールの１つに対する開直接接続が１を超えないようになる、手順と、
前記集積回路が前記ニューラルネットワークの推論を実行するための集積回路命令であって、前記畳み込み出力インターコネクト制御モジュールに、前記少なくとも１つの畳み込み出力接続スキームに応じて前記複数の畳み込み出力インターコネクトを構成させる命令を含む、集積回路命令を生成する手順と、
を含む動作をコンピュータに実行させるプログラム。
【請求項１０】
前記少なくとも１つの畳み込み出力接続スキームを決定する手順は、前記ニューラルネットワークと、前記集積回路の前記構成に基づく、請求項９に記載のプログラム。
【請求項１１】
前記動作は、
前記ニューラルネットワークの推論時に使用されるタイルサイズを決定する手順をさらに含み、
前記少なくとも１つの畳み込み出力接続スキームを決定する手順は、前記タイルサイズにさらに基づく、請求項１０に記載のプログラム。
【請求項１２】
前記集積回路は、前記複数の畳み込みモジュールのそれぞれと通信する入力データメモリと、前記複数の畳み込みモジュールの動作を同期させるように構成されたシーケンサモジュールとをさらに含む、請求項１０または１１に記載のプログラム。
【請求項１３】
前記動作は、
少なくとも１つの畳み込み入力接続スキームを決定する手順であって、これにより、各畳み込みモジュールは、複数の畳み込み入力インターコネクトを通じた、前記入力データメモリ、またはラインバッファに含まれる複数のインデクスの１つに対する開直接接続が１を超えないようになる、手順をさらに含み、
前記集積回路は、前記入力データメモリおよび前記複数の畳み込みモジュールと通信する前記ラインバッファと、前記複数のインデクス、前記複数の畳み込みモジュール、および前記入力データメモリを接続する複数の畳み込み入力インターコネクトの内の畳み込み入力インターコネクトを開閉するように構成された畳み込み入力インターコネクト制御モジュールとをさらに備え、
前記命令は、前記畳み込み入力インターコネクト制御モジュールに、前記少なくとも１つの畳み込み入力接続スキームに応じて、前記複数の畳み込み入力インターコネクトを構成させる命令をさらに含む、
請求項１２に記載のプログラム。
【請求項１４】
前記動作は、
前記ニューラルネットワークの推論時に使用されるカーネルサイズを決定する手順をさらに含み、
前記少なくとも１つの畳み込み入力接続スキームを決定する手順は、前記カーネルサイズにさらに基づく、
請求項１３に記載のプログラム。
【請求項１５】
前記蓄積メモリは、再構成可能バンク幅を有する書き込み可能メモリブロックの蓄積メモリアロケーションであり、
前記集積回路命令は、前記書き込み可能メモリブロックの前記再構成可能バンク幅を再構成する命令をさらに含む、
請求項１０から１４のいずれか一項に記載のプログラム。
【請求項１６】
前記集積回路命令は、前記蓄積メモリアロケーションおよび入力データメモリアロケーションに対して、前記書き込み可能メモリブロックを割り当てる命令をさらに含む、請求項１５に記載のプログラム。
【請求項１７】
前記集積回路命令は、前記蓄積メモリアロケーションの各バンクが、前記書き込み可能メモリブロックの連続したバンクの仮想的な組み合わせであるように、前記蓄積メモリアロケーションに対して前記書き込み可能メモリブロックを割り当てる命令をさらに含む、請求項１６に記載のプログラム。
【請求項１８】
ニューラルネットワークの推論を実行する命令を受信する手順と、
少なくとも１つの畳み込み出力接続スキームに応じて複数の畳み込み出力インターコネクトを構成する手順であって、これにより、複数の畳み込みモジュールの内の各畳み込みモジュールは、前記複数の畳み込み出力インターコネクトを通じた、蓄積メモリまたは複数の加算器モジュールの１つに対する開直接接続が１を超えないようになる、手順と、
前記ニューラルネットワークの推論を実行する手順と、
を含む動作をコンピュータに実行させるプログラム。
【請求項１９】
前記動作は、少なくとも１つの畳み込み入力接続スキームに応じて複数の畳み込み入力インターコネクトを構成する手順であって、これにより、各畳み込みモジュールは、前記複数の畳み込み入力インターコネクトを通じた、入力データメモリ、またはラインバッファに含まれる複数のインデクスの１つに対する開直接接続が１を超えないようになる、手順をさらに含む、請求項１８に記載のプログラム。
【請求項２０】
前記動作は、前記蓄積メモリが書き込み可能メモリブロックの蓄積メモリアロケーションであるように、前記書き込み可能メモリブロックを割り当てる手順をさらに含む、請求項１９に記載のプログラム。
【請求項２１】
前記動作は、前記書き込み可能メモリブロックのバンク幅を再構成する手順をさらに含む、請求項２０に記載のプログラム。
【請求項２２】
前記動作は、前記蓄積メモリアロケーションの各バンクが、前記書き込み可能メモリブロックの連続したバンクの仮想的な組み合わせであるように、前記蓄積メモリアロケーションに対して前記書き込み可能メモリブロックを割り当てる手順をさらに含む、請求項２０または２１に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
［背景技術］
本発明は、ニューラルネットワークアクセラレータランタイム再構成可能性に関する。より具体的には、本発明の例示的実施形態は、ニューラルネットワークアクセラレータランタイム再構成可能性を利用した推論の構成と実行に関する。
【背景技術】
【０００２】
集積回路等のチップ内に、より多くの計算リソースが搭載されるにつれて、計算能力のコストが下がっている。一方で、所与のチップの計算能力が常にあらゆるタスクに対して、完全に利用されているわけではない。したがって、単一のチップに複数のタイプのタスクが割り当てられる場合、チップはそのタスクの内、最もリソースを要するものに対応するような計算リソースで設計され得る。その特定の設計は、別のタスクの実行には効率的でない可能性がある。したがって、実行が喪失する虞がある。これは特に、種々のタイプのニューラルネットワーク推論を実行するように構成されたアクセラレータチップで生じやすい事態である。
【発明の概要】
【０００３】
本発明の態様によると、蓄積メモリと、入力値に数学的演算を実行するように構成された複数の畳み込みモジュールと、上記複数の畳み込みモジュールから出力された値を合計するように構成された複数の加算器モジュールと、各畳み込みモジュールが、各加算器モジュールと、上記蓄積メモリとに直接接続を有し、各加算器モジュールが上記蓄積メモリに直接接続を有するように、上記複数の畳み込みモジュールと、上記複数の加算器モジュールと、上記蓄積メモリとを接続する複数の畳み込み出力インターコネクトと、畳み込み出力接続スキームに応じて、畳み込み出力インターコネクトを開閉するように構成され、これにより、各畳み込みモジュールは、上記複数の畳み込み出力インターコネクトを通じた、上記蓄積メモリまたは上記複数の加算器モジュールの１つに対する開直接接続が１を超えないようになる、畳み込み出力インターコネクト制御モジュールと、を備える、デバイスが提供される。
【０００４】
本発明の別の態様によると、コンピュータにより実行可能な命令が格納される、非一時的コンピュータ可読媒体であって、上記命令は上記コンピュータに、ニューラルネットワークと、集積回路の構成とを取得する手順であって、上記集積回路は、複数の畳み込みモジュール、複数の加算器モジュール、蓄積メモリ、および上記複数の畳み込みモジュール、上記複数の加算器モジュール、および上記蓄積メモリを接続する複数の畳み込み出力インターコネクトの内の畳み込み出力インターコネクトを開閉するように構成された畳み込み出力インターコネクト制御モジュールを含む、手順と、少なくとも１つの畳み込み出力接続スキームを決定する手順であって、これにより、各畳み込みモジュールは、上記複数の畳み込み出力インターコネクトを通じた、上記蓄積メモリまたは上記複数の加算器モジュールの１つに対する開直接接続が１を超えないようになる、手順と、上記集積回路が上記ニューラルネットワークの推論を実行するための集積回路命令であって、上記畳み込み出力インターコネクト制御モジュールに、上記少なくとも１つの畳み込み出力接続スキームに応じて上記複数の畳み込み出力インターコネクトを構成させる命令を含む、集積回路命令を生成する手順と、を含む動作を実行させる、コンピュータ可読媒体が提供される。
【０００５】
この態様はさらに、コンピュータプログラムの命令を実行するプロセッサにより実行される方法、および、当該方法を実行する装置を含んでよい。装置は、当該方法の動作を実行するように構成された各部を含み得る。
【０００６】
本発明のさらに別の態様によると、集積回路により実行可能な命令が格納される、非一時的コンピュータ可読媒体であって、上記命令は上記集積回路に、ニューラルネットワークの推論を実行する命令を受信する手順と、少なくとも１つの畳み込み出力接続スキームに応じて複数の畳み込み出力インターコネクトを構成する手順であって、これにより、複数の畳み込みモジュールの内の各畳み込みモジュールは、上記複数の畳み込み出力インターコネクトを通じた、蓄積メモリまたは複数の加算器モジュールの１つに対する開直接接続が１を超えないようになる、手順と、上記ニューラルネットワークの推論を実行する手順と、を含む動作を実行させる、コンピュータ可読媒体が提供される。
【０００７】
この態様はさらに、コンピュータプログラムの命令を実行するプロセッサにより実行される方法、および、当該方法を実行する装置を含んでよい。装置は、当該方法の動作を実行するように構成された各部を含み得る。
【０００８】
発明の概要は、本発明の実施形態の必要な特徴の全てを説明しているわけではない。上述の特徴のサブコンビネーションも本発明となり得る。
【図面の簡単な説明】
【０００９】
【図１】本発明の実施形態に係る、アクセラレータランタイム再構成可能性用のデバイスを示す。
【００１０】
【図２】本発明の実施形態に係る、畳み込み出力接続スキームに応じて構成されたデバイス構成を示す。
【００１１】
【図３】本発明の実施形態に係る、再構成可能書き込み可能メモリを有するアクセラレータランタイム再構成可能性用のデバイスを示す。
【００１２】
【図４】本発明の実施形態に係る、アクセラレータランタイム再構成可能性用の別のデバイスを示す。
【００１３】
【図５】本発明の実施形態に係る、畳み込み出力接続スキームおよび畳み込み入力接続スキームに応じて構成されたデバイスを示す。
【００１４】
【図６】本発明の実施形態に係る、畳み込み出力接続スキームおよび別の畳み込み入力接続スキームに応じて構成されたデバイスを示す。
【００１５】
【図７】本発明の実施形態に係る、アクセラレータランタイム再構成可能性用のシステムを示す。
【００１６】
【図８】本発明の実施形態に係る、推論用のアクセラレータランタイム再構成可能性により、デバイスを構成する動作フローを示す。
【００１７】
【図９】本発明の実施形態に係る、推論用の再構成可能メモリの割り当てを決定する動作フローを示す。
【００１８】
【図１０】本発明の実施形態に係る、推論を実行しながら、アクセラレータランタイム再構成可能性によりデバイスを再構成する動作フローを示す。
【００１９】
【図１１】本発明の実施形態に係る、推論を実行しながら、再構成可能メモリでデバイスを再構成する動作フローを示す。
【００２０】
【図１２】本発明の実施形態に係る、アクセラレータランタイム再構成可能性を利用した推論の構成および実行用のハードウェア構成を示す。
【発明を実施するための形態】
【００２１】
続いて、本発明の例示的実施形態を説明する。例示的な実施形態は、特許請求の範囲による本発明を限定しないものとし、実施形態に記載される特徴の組み合わせは、必ずしも本発明に不可欠ではない。
【００２２】
ニューラルネットワーク推論の実行について、様々な並列度が存在し、計算効率向上のために利用可能である。特に、多くの計算リソースを擁するチップにより実行されるシンプルなタスクは、並列性を通じてそのリソースをより利用可能である。一方で、最高性能のチップは、限定数の利用可能な並列度を活用するように最適化された、固定アーキテクチャを持ち、したがって、全ての並列度に効率的にサポートすることはできなくなる。したがって、シンプルなタスクを強力なチップ上で実行することは、計算リソース利用の減少、延いては性能および電力効率の低下につながり得る。
【００２３】
一方で、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）等の、完全なアーキテクチャ再構成が可能なチップが存在する。当該チップは、各特定のタスクのために再構成可能である。しかし、そのようなチップを実際に再構成するのに必要なリソースは、タスク中の全計算リソースの利用におけるリソース貯蓄分を超えてしまうことが多い。さらに、ＦＰＧＡは、高粒度再構成可能性により高い柔軟性を提供するが、これによりそのピーク計算性能は、同様のチップサイズの特定用途向け集積回路（ＡＳＩＣ）と比較して限定される。
【００２４】
さらに、ニューラルネットワーク推論の実行時のアーキテクチャ再構成が求められている。アクセラレータチップのオンチップメモリサイズに適応するため、推論時に、ニューラルネットワークの層は、「タイル」に分配され得る。計算モジュールにより、複数の入力タイルが並列に計算可能である。しかし、これが効率的に作用するのは、行と列のサイズの大きい、最初の数層のみであり得る。
【００２５】
より計算モジュールを利用する別の論理的方法として、並列に複数の入力チャネルタイルを計算することが挙げられる。しかし、これは通常、データ依存性により不能である。即ち、チャネルを計算する１つの計算モジュールの入力値は、別のチャネルを計算する別の計算モジュールにより計算される出力値であり得るので、当該出力値をオンチップメモリに書き込み、その後再度それを入力値として読み出すことが必要となる。
【００２６】
より計算モジュールを利用する別の論理的方法として、複数の出力チャネルタイルを並列に計算することが挙げられる。しかし、これは望ましくなくなり得る。入力値および重み値が８ビットであり得るが、出力値が３２ビットとなり得、したがって、別の形態の並列性よりも極めて多くのメモリが必要となるためである。
【００２７】
これらの問題および要望に対処するために、アクセラレータ等のニューラルネットワーク推論を実行するためのデバイスは、その計算モジュールと、そのオンチップメモリとの間に、オンザフライで計算モジュール出力を蓄積し、オンチップメモリに対する余分な読み書きを避けるための、「低減インターコネクト」を有し得る。低減インターコネクトは、「選択」信号に応じて、計算モジュールと、オンチップメモリと、その間のあらゆるものとの間に、ランタイム推論タスクまたは当該タスクの一部が効率的になるように、接続を構築する。
【００２８】
例えば、畳み込みニューラルネットワークの推論用のアクセラレータにおいて、低減インターコネクトは全ての畳み込みモジュールについて、蓄積メモリに対する直接アクセス、または特定の加算器を通じたアクセスの選択を可能とし得る。
【００２９】
接続性を自由に選択できることで、畳み込みモジュールが完全に同期的に動作していれば、アクセラレータは並列に複数入力チャネルタイルを計算可能になり得る。完全な同期動作は、単一のシーケンサが、タスクに係る全ての畳み込みモジュールを制御することで構築し得る。
【００３０】
低減インターコネクトの個別の接続は、推論の開始前に、回路交換方式で構築され得る。この場合、接続性の制御に「選択」信号が使用され得る。その結果、「ランタイム再構成可能性」が実現する。
【００３１】
図１は、本発明の実施形態に係る、アクセラレータランタイム再構成可能性用のデバイス１００を示す。デバイス１００は、アクセラレータ等の、ニューラルネットワーク推論を実行するための集積回路である。デバイス１００は、畳み込みモジュール１１０Ａ、１１０Ｂ、１１０Ｃ、および１１０Ｄと、加算器モジュール１１２Ａ、１１２Ｂ、１１２Ｃ、および１１２Ｄと、制御モジュール１１４と、低減インターコネクト１１５と、シーケンサモジュール１１７と、入力データメモリ１２２と、蓄積メモリ１２４と、を備える。
【００３２】
畳み込みモジュール１１０Ａ、１１０Ｂ、１１０Ｃ、および１１０Ｄは、入力データメモリ１２２と通信し、それぞれ入力データメモリ１２２からの入力値と、重み値とに、数学的演算を実行するように構成される。各畳み込みモジュールは、加算器モジュール１１２Ａ、１１２Ｂ、１１２Ｃ、および１１２Ｄの内の１つまたは複数、または蓄積メモリ１２４に値を出力し得る。各畳み込みモジュールは、高さ（ＫＨ）×幅（ＫＷ）のカーネルサイズ、鉛直および水平ストライド、拡張、パッディング等のような、数学的演算の異なるパラメータに対する直接のサポートを提供してよい。デバイス１００のいくつかの実施形態において、畳み込みモジュール１１０Ａ、１１０Ｂ、１１０Ｃ、および１１０Ｄは、少なくとも１つの専用の深さごとの（depth-wise）畳み込みモジュールおよび少なくとも１つの点ごとの（point-wise）畳み込みモジュールを含む。デバイス１００の他の実施形態は、汎用の畳み込みモジュールを含み、それは、モバイルネット型ニューラルネットワークの逆残余ブロック（Ｉｎｖｅｒｔｅｄ  Ｒｅｓｉｄｕａｌ  Ｂｌｏｃｋｓ）等の、深さごとの畳み込みおよび点ごとの畳み込み層の組み合わせをサポートしてよい。
【００３３】
加算器モジュール１１２Ａ、１１２Ｂ、１１２Ｃ、および１１２Ｄは、低減インターコネクト１１５を通じて、畳み込みモジュール１１０Ａ、１１０Ｂ、１１０Ｃ、および１１０Ｄに接続され、それぞれ、畳み込みモジュール１１０Ａ、１１０Ｂ、１１０Ｃ、および１１０Ｄの内の１つまたは複数から出力された値を合計するように構成される。各加算器モジュールは、得られた合計を、蓄積メモリ１２４に出力し得る。加算器モジュールの入力および出力ビット幅は、あらゆる任意の値であり得る。
【００３４】
制御モジュール１１４は、低減インターコネクト１１５と通信し、低減インターコネクト１１５を制御するように構成される。制御モジュール１１４は、畳み込みモジュール１１０Ａ、１１０Ｂ、１１０Ｃ、および１１０Ｄの出力を配向するために、インターコネクトを開閉するように構成される。制御モジュール１１４は、ニューラルネットワークまたはニューラルネットワーク内の所定の層の推論時に、デバイス１００の計算リソースを最大限に使用するように設計されたスキーム等のスキームに応じて、低減インターコネクト１１５を制御し得る。言い換えると、制御モジュール１１４は、畳み込み出力接続スキームに応じて畳み込み出力インターコネクトを開閉するように構成される。これにより、各畳み込みモジュールは、複数の畳み込み出力インターコネクトを通じた、蓄積メモリまたは複数の加算器モジュールの１つに対する開直接接続が１を超えないようになる。
【００３５】
低減インターコネクト１１５は、各畳み込みモジュールと、蓄積メモリ１２４との間、および各畳み込みモジュールと、各加算器との間の接続を可能とするように配置された複数のインターコネクトを含む。言い換えると、低減インターコネクト１１５は、各畳み込みモジュールが各加算器モジュールおよび蓄積メモリとの直接接続を有し、各加算器モジュールが蓄積メモリとの直接接続を有するように、複数の畳み込みモジュールと、複数の加算器モジュールと、蓄積メモリとを接続する、複数の畳み込み出力インターコネクトを含む。これらの接続は、全開放ではなく、各畳み込みモジュールは開直接接続が１を超えないように、むしろほとんど閉じている。畳み込みモジュールが所定のスキームで使用されなければ、その畳み込みモジュールは、低減インターコネクト１１５を通じた、開直接接続を有さなくなり得る。
【００３６】
シーケンサモジュール１１７は、畳み込みモジュール１１０Ａ、１１０Ｂ、１１０Ｃ、および１１０Ｄそれぞれと通信し、複数の畳み込みモジュールの動作を同期させるように構成される。例えば、シーケンサモジュール１１７は、同じ計算に係る各畳み込みモジュールを同期し得る。これにより、同じ入力インデクスに対応する出力値はこれらの畳み込みモジュールにより同時に生成され、加算器モジュール１１２Ａ、１１２Ｂ、１１２Ｃ、および１１２Ｄの１つに送られて、蓄積される。
【００３７】
入力データメモリ１２２は、複数の畳み込みモジュールのそれぞれと通信し、入力値を格納する。蓄積メモリ１２４は、畳み込みモジュール１１０Ａ、１１０Ｂ、１１０Ｃ、および１１０Ｄおよび加算器モジュール１１２Ａ、１１２Ｂ、１１２Ｃ、および１１２Ｄと通信し、そこから出力された値を受信し、格納する。この実施形態において、入力データメモリ１２２および蓄積メモリ１２４はいずれも、デバイス１００のオンチップメモリのブロックである。オンチップメモリの各ブロックは、所定のサイズの、複数のバンクを含む。各ブロックは、１または２ポートメモリバンクの組として整理され得る。各ブロックは、対応する計算モジュール、ロードモジュール、および格納モジュールに露出した、リードおよびライトポートを有し得る。
【００３８】
この実施形態において、シーケンサモジュール１１７および制御モジュール１１４は別個に設けられる。アクセラレータランタイム再構成可能性用のデバイスのいくつかの実施形態において、シーケンサモジュール１１７が制御モジュール１１４の機能を実行できる。別の実施形態は、シーケンサモジュール１１７および制御モジュール１１４の両方の機能を実行するように構成された１つの専用制御モジュールを有する。いくつかの実施形態において、畳み込みモジュールから蓄積メモリへの直接接続は、低減インターコネクト外であり得、さらなる実施形態では一切存在しなくてよい。これは、畳み込みモジュールが加算器モジュールのみにデータを送ることを意味する。
【００３９】
図２は、本発明の実施形態に係る、畳み込み出力接続スキームに応じて構成されたデバイス２００を示す。この例示的な実施形態において、デバイス２００は、畳み込みモジュール２１０Ａ、２１０Ｂ、２１０Ｃ、および２１０Ｄと、加算器モジュール２１２Ａ、２１２Ｂ、２１２Ｃ、および２１２Ｄと、制御モジュール２１４と、低減インターコネクト２１５と、シーケンサモジュール２１７と、入力データメモリ２２２と、蓄積メモリ２２４と、を備える。畳み込みモジュール２１０Ａ、２１０Ｂ、２１０Ｃ、および２１０Ｄと、加算器モジュール２１２Ａ、２１２Ｂ、２１２Ｃ、および２１２Ｄと、制御モジュール２１４と、低減インターコネクト２１５と、シーケンサモジュール２１７と、入力データメモリ２２２と、蓄積メモリ２２４とは、以下の説明が異ならない限り、それぞれ図１の畳み込みモジュール１１０Ａ、１１０Ｂ、１１０Ｃ、および１１０Ｄと、加算器モジュール１１２Ａ、１１２Ｂ、１１２Ｃ、および１１２Ｄと、制御モジュール１１４と、低減インターコネクト１１５と、シーケンサモジュール１１７と、入力データメモリ１２２と、蓄積メモリ１２４と実質的に同じ構造を有し、実質的に同じ機能を実行する。
【００４０】
この実施形態において畳み込み出力接続スキームは、複数の加算器モジュールの内の共通加算器モジュールに対して開直接接続を有する、複数の畳み込みモジュールの内の１つを超える畳み込みモジュールを含む。より具体的には、この実施形態における畳み込み出力接続スキームでは、畳み込みモジュール２１０Ａおよび畳み込みモジュール２１０Ｂが、加算器モジュール２１２Ａに直接接続される。畳み込みモジュール２１０Ｃおよび畳み込みモジュール２１０Ｄは、加算器モジュールに接続されず、そのため非アクティブである。加算器モジュール２１２Ｂ、加算器モジュール２１２Ｃ、および加算器モジュール２１２Ｄは、畳み込みモジュールに接続されず、そのため非アクティブである。
【００４１】
入力データメモリ２２２は、ニューラルネットワーク層２３２のタイル２３４Ａおよび２３４Ｂからの入力値を、現在格納中である。これらのタイルは、入力のチャネル寸法に亘って存在する。この実施形態における畳み込み出力接続スキームによると、タイル２３４Ａからの入力値が、畳み込みモジュール２１０Ａにより計算され、タイル２３４Ｂからの入力値が、畳み込みモジュール２１０Ｂにより計算される。シーケンサモジュール２１７は、畳み込みモジュール２１０Ａおよび２１０Ｂの数学的演算を同期する。これにより、値は同時に出力され、加算器モジュール２１２Ａにより合計される。合計すると、加算器モジュール２１２Ａは得られた合計を蓄積メモリ２２４に出力する。この得られた合計は、ニューラルネットワーク層２３６のタイル２３８の値である。
【００４２】
図１および図２の実施形態において、入力データメモリおよび蓄積メモリは別個のメモリブロックである。これは、入力値および蓄積値が、データ幅と総計について異なる要件を有する異なる種類のデータであるためである。重みメモリ等の別の種類のメモリについても同じことが当てはまり得る。これらメモリブロックは別個であるため、その中の未使用バンクは、別のブロックと共有不能である。
【００４３】
データ種類毎の必要メモリサイズは、ニューラルネットワーク間、さらにはニューラルネットワークの層間で異なる。これにより、ある種類のメモリのブロックが十分利用されず、別の種類のメモリのブロックは十分にまたは過剰に利用される。
【００４４】
異なるメモリブロック間で、データ幅は異なり得る。各メモリブロックが、当該メモリブロックが格納するように構成された値に一致するデータ幅を持つためである。したがって、未使用バンクを共有しようとするあらゆる試みがさらに複雑化する。
【００４５】
これらの問題および要望に対処するために、アクセラレータ等のニューラルネットワーク推論を実行するデバイスは、あらゆる種類のデータを格納可能な、単一の書き込み可能メモリブロックを有し得る。各メモリは、単一のメモリブロック上のアロケーションとして存在する。単一のメモリブロックを利用することで、未使用メモリバンクは、共有または別のメモリに再割り当てされ得る。したがって、デバイスは、かなり違いの大きいニューラルネットワークに対しても、メモリの大きな割合を利用しながら、推論を実行し得る。
【００４６】
異なるデータ幅の値に対応するため、データ幅間の最小公分母がバンクサイズとして選択され得る。大きなデータ幅を要する値を格納するメモリに対して、メモリ割り当てにおいて連続したメモリバンクが仮想的に組み合わされ得る。バンクサイズ構成およびメモリ割り当ては、デバイスの構成または設定時に実行され得る。これは推論の実行前であり得る。
【００４７】
図３は、本発明の実施形態に係る、再構成可能書き込み可能メモリ３２０を有する、アクセラレータランタイム再構成可能性用デバイス３００を示す。この例示的な実施形態において、デバイス３００は、畳み込みモジュール３１０Ａ、３１０Ｂ、および３１０Ｃと、加算器モジュール３１２Ａ、３１２Ｂ、および３１２Ｃと、制御モジュール３１４と、低減インターコネクト３１５と、シーケンサモジュール３１７と、書き込み可能メモリブロック３２０とを備え、書き込み可能メモリブロック３２０は、入力データメモリアロケーション３２２と、蓄積メモリアロケーション３２４と、重みメモリアロケーション３２６と、フリーメモリ３２８とを備える。畳み込みモジュール３１０Ａ、３１０Ｂ、および３１０Ｃと、加算器モジュール３１２Ａ、３１２Ｂ、および３１２Ｃと、制御モジュール３１４と、低減インターコネクト３１５と、シーケンサモジュール３１７と、入力データメモリアロケーション３２２と、蓄積メモリアロケーション３２４とは、以下の説明が異ならない限り、それぞれ図１の畳み込みモジュール１１０Ａ、１１０Ｂ、および１１０Ｃと、加算器モジュール１１２Ａ、１１２Ｂ、および１１２Ｃと、制御モジュール１１４と、低減インターコネクト１１５と、シーケンサモジュール１１７と、入力データメモリ１２２と、蓄積メモリ１２４と実質的に同じ構造を有し、実質的に同じ機能を実行する。
【００４８】
書き込み可能メモリブロック３２０は、デバイス３００内の唯一のメモリブロックで、それぞれ異なるメモリに割り当てられた、複数のアロケーションを含む。デバイス３００の蓄積メモリは、書き込み可能メモリブロック３２０の蓄積メモリアロケーション３２４として存在する。書き込み可能メモリブロック３２０はさらに、入力データメモリアロケーション３２２を含む。入力データメモリアロケーション３２２は入力値を格納する。書き込み可能メモリブロック３２０は再構成可能なバンク幅を有する。書き込み可能メモリブロック３２０はさらに、重みメモリアロケーション３２６を含む。重みメモリアロケーション３２６は重み値を格納する。
【００４９】
この実施形態において、書き込み可能メモリブロック３２０は、８ビットのバンク幅用に構成される。入力データメモリアロケーション３２２は、８ビット値の入力データ値を格納する。重みメモリアロケーション３２６は、同じく８ビット値の重み値を格納する。一方で、蓄積メモリアロケーション３２４は、３２ビット値である蓄積値を格納する。書き込み可能メモリブロック３２０の８ビットメモリバンク内に、３２ビット値を格納するために、蓄積メモリアロケーション３２４は、３２ビット仮想バンクを含み、各仮想バンクは、４つの連続した８ビットメモリバンクの仮想的な組み合わせである。言い換えると、蓄積メモリアロケーション３２４の各バンクは、書き込み可能メモリブロック３２０の連続したバンクの仮想的な組み合わせである。
【００５０】
書き込み可能メモリブロック３２０は、計算用の入力データ値および重み値を提供するために、畳み込みモジュール３１０Ａ、３１０Ｂ、および３１０Ｃと通信し、蓄積値を格納するためにさらに加算器モジュール３１２Ａ、３１２Ｂ、および３１２Ｃと通信する。書き込み可能メモリブロック３２０から畳み込みモジュール３１０Ａ、３１０Ｂ、および３１０Ｃへの共有通信ラインが示されているが、別の実施形態では、入力データおよび重み値用に、別個の通信ラインが存在し得る。
【００５１】
別の実施形態では、デバイスの全データ種類に対応するために、バンク幅が乗算可能であるものとして、書き込み可能メモリブロックは、その他任意の種類のデータ用の、任意のその他メモリ用のアロケーションを含み得る。
【００５２】
計算リソース利用をさらに増やすため、カーネル行寸法を考慮して、別の並列度を利用可能である。入力データメモリと、畳み込みモジュールとの間にラインバッファを追加することで、複数の畳み込みモジュールの利用を増やして、ニューラルネットワーク推論を実行可能である。ラインバッファのインデクスと、個別の畳み込みモジュールとの間の再構成可能接続を可能とするように、別のインターコネクトが、ラインバッファと、畳み込みモジュールとの間に提供され得る。各ラインバッファのインデクスは、カーネル行におけるインデクスに対応する。この畳み込み入力インターコネクトは、どの畳み込みモジュールにラインバッファのどのインデクスが提供されるかを構築し得る。
【００５３】
図４は、本発明の実施形態に係る、アクセラレータランタイム再構成可能性用の別のデバイス４００を示す。この例示的な実施形態において、デバイス４００は、畳み込みモジュール４１０Ａ、４１０Ｂ、４１０Ｃ、および４１０Ｄと、加算器モジュール４１２Ａ、４１２Ｂ、４１２Ｃ、および４１２Ｄと、制御モジュール４１４と、低減インターコネクト４１５と、シーケンサモジュール４１７と、入力データメモリ４２２と、蓄積メモリ４２４と、ラインバッファ４４０と、ラインバッファインデクス４４２Ａ、４４２Ｂ、４４２Ｃ、４４２Ｄ、４４２Ｅと、制御モジュール４４４と、とインターコネクト４４５と、を備える。畳み込みモジュール４１０Ａ、４１０Ｂ、４１０Ｃ、および４１０Ｄと、加算器モジュール４１２Ａ、４１２Ｂ、４１２Ｃ、および４１２Ｄと、制御モジュール４１４と、インターコネクト４１５と、シーケンサモジュール４１７と、入力データメモリ４２２と、蓄積メモリ４２４とは、以下の説明が異ならない限り、それぞれ図１の畳み込みモジュール１１０Ａ、１１０Ｂ、１１０Ｃ、および１１０Ｄと、加算器モジュール１１２Ａ、１１２Ｂ、１１２Ｃ、および１１２Ｄと、制御モジュール１１４と、低減インターコネクト１１５と、シーケンサモジュール１１７と、入力データメモリ１２２と、蓄積メモリ１２４と実質的に同じ構造を有し、実質的に同じ機能を実行する。
【００５４】
この実施形態において、入力データメモリ４２２および蓄積メモリ４２４は、図１および図２のメモリブロックと同様に示されているが、入力データメモリ４２２および蓄積メモリ４２４は、別個のメモリブロックであり得、または図３の単一の書き込み可能メモリブロック３２０等の単一の書き込み可能メモリブロックのアロケーションとして存在し得る。
【００５５】
ラインバッファ４４０は、入力データメモリ４４２と、畳み込みモジュール４１０Ａ、４１０Ｂ、４１０Ｃ、および４１０Ｄと通信する。ラインバッファインデクス４４２Ａ、４４２Ｂ、４４２Ｃ、４４２Ｄ、および４４２Ｅは、インターコネクト４４５を通じて、畳み込みモジュール４１０Ａ、４１０Ｂ、４１０Ｃ、および４１０Ｄに接続される。ラインバッファ４４０は、畳み込みモジュール４１０Ａ、４１０Ｂ、４１０Ｃ、および４１０Ｄに入力されたカーネルインデクスに対応する入力値を格納するように構成される。
【００５６】
制御モジュール４４４は、インターコネクト４４５と通信し、インターコネクト４４５を制御するように構成される。制御モジュール４４４は、畳み込みモジュール４１０Ａ、４１０Ｂ、４１０Ｃ、および４１０Ｄの入力を配向するために、インターコネクトを開閉するように構成される。制御モジュール４４４は、ニューラルネットワークまたはニューラルネットワーク内の所定の層の推論時に、デバイス４００の計算リソースを最大限に使用するように設計されたスキーム等のスキームに応じて、インターコネクト４４５を制御し得る。言い換えると、制御モジュール４４４は、畳み込み入力接続スキームに応じて畳み込み入力インターコネクトを開閉するように構成される。これにより、各畳み込みモジュールは、複数の畳み込み入力インターコネクトを通じた、入力データメモリまたは複数のインデクスの１つに対する開直接接続が１を超えないようになる。
【００５７】
インターコネクト４４５は、各畳み込みモジュールと、入力データメモリ４２４との間、および各畳み込みモジュールと、各ラインバッファインデクスとの間の接続を可能とするように配置された複数のインターコネクトを含む。言い換えると、インターコネクト４４５は、各畳み込みモジュールが、各インデクスおよび入力データメモリに直接接続を有するように、複数のインデクスと、複数の畳み込みモジュールと、入力データメモリとを接続する、複数の畳み込み入力インターコネクトを含む。これらの接続は、全開放ではなく、各畳み込みモジュールは開直接接続が１を超えないように、むしろほとんど閉じている。畳み込みモジュールが所定のスキームで使用されなければ、その畳み込みモジュールは、インターコネクト４４５を通じた、開直接接続を有さなくなり得るラインバッファインデクス４４２Ａ、４４２Ｂ、４４２Ｃ、４４２Ｄ、および４４２Ｅと、畳み込みモジュール４１０Ａ、４１０Ｂ、４１０Ｃ、および４１０Ｄとの間の接続性は、各レベルの全モジュールが、別のレベルの各モジュールに１つ接続を有するという点で、畳み込みモジュール４１０Ａ、４１０Ｂ、４１０Ｃ、および４１０Ｄと、加算器モジュール４１２Ａ、４１２Ｂ、４１２Ｃ、および４１２Ｄとの間の接続性と略同様である。
【００５８】
この実施形態において、各インターコネクトを制御するために、個別の制御モジュールが存在する。別の実施形態では、単一の制御モジュールが、インターコネクト４１５および４４５の両方を制御するのに使用され得る。各インターコネクトは、複数の個別制御可能インターコネクトを備えるため、共通ソース、個別ソース、または複数のソースから、切替え信号を受信する可能性があり得る。いくつかの実施形態において、シーケンサモジュール４１７は、制御モジュール４１４および制御モジュール４４４の機能を実行可能である。別の実施形態は、シーケンサモジュール４１７、制御モジュール４１４、および制御モジュール４４４の機能を実行するように構成された１つの専用制御モジュールを有する。いくつかの実施形態において、畳み込みモジュールから入力データメモリへの直接接続は、インターコネクト外であり得、さらなる実施形態では一切存在しなくてよい。これは、畳み込みモジュールがラインバッファからのみ入力データを受信することを意味する。
【００５９】
図５は、本発明の実施形態に係る、畳み込み出力接続スキームおよび畳み込み入力接続スキームに応じて構成されたデバイス５００を示す。この例示的な実施形態において、デバイス５００は、畳み込みモジュール５１０Ａ、５１０Ｂ、５１０Ｃ、および５１０Ｄと、加算器モジュール５１２Ａ、５１２Ｂ、５１２Ｃ、および５１２Ｄと、制御モジュール５１４と、低減インターコネクト５１５と、シーケンサモジュール５１７と、入力データメモリ５２２と、蓄積メモリ５２４と、ラインバッファ５４０と、ラインバッファインデクス５４２Ａ、５４２Ｂ、５４２Ｃ、５４２Ｄ、および５４２Ｅと、制御モジュール５４４と、インターコネクト５４５と、を備える。畳み込みモジュール５１０Ａ、５１０Ｂ、５１０Ｃ、および５１０Ｄ、加算器モジュール５１２Ａ、５１２Ｂ、５１２Ｃ、および５１２Ｄ、制御モジュール５１４、低減インターコネクト５１５、シーケンサモジュール５１７、入力データメモリ５２２、蓄積メモリ５２４、ラインバッファ５４０、ラインバッファインデクス５４２Ａ、５４２Ｂ、５４２Ｃ、５４２Ｄ、および５４２Ｅ、制御モジュール５４４、およびインターコネクト５４５は、以下の説明が異ならない限り、それぞれ図１の畳み込みモジュール１１０Ａ、１１０Ｂ、１１０Ｃ、および１１０Ｄと、加算器モジュール１１２Ａ、１１２Ｂ、１１２Ｃ、および１１２Ｄと、制御モジュール１１４と、低減インターコネクト１１５と、シーケンサモジュール１１７と、入力データメモリ１２２と、蓄積メモリ１２４、並びに図４のラインバッファ４４０と、ラインバッファインデクス４４２Ａ、４４２Ｂ、４４２Ｃ、４４２Ｄ、および４４２Ｅと、制御モジュール４４４と、インターコネクト４４５と実質的に同じ構造を有し、実質的に同じ機能を実行する。
【００６０】
この実施形態において、入力データメモリ５２２および蓄積メモリ５２４は、図１および図２のメモリブロックと同様に示されているが、入力データメモリ５２２および蓄積メモリ５２４は、別個のメモリブロックであり得、または図３の単一の書き込み可能メモリブロック３２０等の単一の書き込み可能メモリブロックのアロケーションとして存在し得る。
【００６１】
この実施形態における畳み込み入力接続スキームによると、ラインバッファインデクス５４２Ａは、畳み込みモジュール５１０Ａに直接接続され、ラインバッファインデクス５４２Ｂは畳み込みモジュール５１０Ｂに直接接続され、ラインバッファインデクス５４２Ｃは畳み込みモジュール５１０Ｃに直接接続される。ラインバッファインデクス５４２Ｄおよびラインバッファインデクス５４２Ｅは、畳み込みモジュールに接続されず、そのため非アクティブである。畳み込みモジュール５１０Ｄは、ラインバッファインデクスに接続されず、そのため非アクティブである。
【００６２】
この実施形態における畳み込み出力接続スキームでは、畳み込みモジュール５１０Ａ、畳み込みモジュール５１０Ｂ、および畳み込みモジュール５１０Ｃは全て、加算器モジュール５１２Ａに直接接続される。畳み込みモジュール５１０Ｄは非アクティブであるため、加算器モジュールに接続されてもいない。加算器モジュール５１２Ｂ、加算器モジュール５１２Ｃ、および加算器モジュール５１２Ｄは、畳み込みモジュールに接続されず、そのため非アクティブである。
【００６３】
入力データメモリ５２２は、ニューラルネットワーク層５３２のタイル５３４Ａからの入力値を、現在格納中である。ラインバッファには、入力データメモリ５２２からの入力の５つの連続したインデクスがプリロードされている。ニューラルネットワーク層５３２の推論は、行幅が３、拡張係数が１のカーネルを使用して実行される。これは、入力インデクス１、２、および３と、カーネル行値との間でドット積演算が行われることを意味する。カーネル行は、カーネルインデクス５３９Ａ、５３９Ｂ、および５３９Ｃを含む。この実施形態における畳み込み入力接続スキームによると、畳み込みモジュール５１０Ａにより、第１入力インデクスが、複数入力チャネル用のカーネルインデクス５３９Ａの値で乗算され、畳み込みモジュール５１０Ｂにより、第２入力インデクスが、複数入力チャネル用のカーネルインデクス５３９Ｂの値で乗算され、畳み込みモジュール５１０Ｃにより、第３入力インデクスが、複数入力チャネル用のカーネルインデクス５３９Ｃの値で乗算される。合計すると、加算器モジュール５１２Ａは得られた合計を蓄積メモリ５２４に出力する。その後、第１入力インデクスが破棄され、入力データメモリ５２２から第６入力インデクスがロードされて、ラインバッファ５４０が左にシフトする。次のステップにおいて、入力値をカーネル行値で乗算するプロセスが繰り返される。今度は、入力インデクス２、３、および４と、出力とが同様に合計され、入力タイル５３４Ａが完全に処理されるまで、ラインバッファ５２２は再度シフトされる。
【００６４】
図６は、本発明の実施形態に係る、畳み込み出力接続スキームおよび別の畳み込み入力接続スキームに応じて構成されたデバイス６００を示す。この例示的な実施形態において、デバイス６００は、畳み込みモジュール６１０Ａ、６１０Ｂ、６１０Ｃ、および６１０Ｄと、加算器モジュール６１２Ａ、６１２Ｂ、６１２Ｃ、および６１２Ｄと、制御モジュール６１４と、低減インターコネクト６１５と、シーケンサモジュール６１７と、入力データメモリ６２２と、蓄積メモリ６２４と、ラインバッファ６４０と、ラインバッファインデクス６４２Ａ、６４２Ｂ、６４２Ｃ、６４２Ｄ、および６４２Ｅと、制御モジュール６４４と、インターコネクト６４５と、を備える。畳み込みモジュール６１０Ａ、６１０Ｂ、６１０Ｃ、および６１０Ｄ、加算器モジュール６１２Ａ、６１２Ｂ、６１２Ｃ、および６１２Ｄ、制御モジュール６１４、低減インターコネクト６１５、シーケンサモジュール６１７、入力データメモリ６２２、蓄積メモリ６２４、ラインバッファ６４０、ラインバッファインデクス６４２Ａ、６４２Ｂ、６４２Ｃ、６４２Ｄ、および６４２Ｅ、制御モジュール６４４、およびインターコネクト６４５は、以下の説明が異ならない限り、それぞれ図１の畳み込みモジュール１１０Ａ、１１０Ｂ、１１０Ｃ、および１１０Ｄと、加算器モジュール１１２Ａ、１１２Ｂ、１１２Ｃ、および１１２Ｄと、制御モジュール１１４と、低減インターコネクト１１５と、シーケンサモジュール１１７と、入力データメモリ１２２と、蓄積メモリ１２４、並びに図４のラインバッファ４４０と、ラインバッファインデクス４４２Ａ、４４２Ｂ、４４２Ｃ、４４２Ｄ、および４４２Ｅと、制御モジュール４４４と、インターコネクト４４５と実質的に同じ構造を有し、実質的に同じ機能を実行する。
【００６５】
この実施形態において、入力データメモリ６２２および蓄積メモリ６２４は、図１および図２のメモリブロックと同様に示されているが、入力データメモリ６２２および蓄積メモリ６２４は、別個のメモリブロックであり得、または図３の単一の書き込み可能メモリブロック３２０等の単一の書き込み可能メモリブロックのアロケーションとして存在し得る。
【００６６】
この実施形態における畳み込み入力接続スキームによると、ラインバッファインデクス６４２Ａは、畳み込みモジュール６１０Ａに直接接続され、ラインバッファインデクス６４２Ｃは畳み込みモジュール６１０Ｂに直接接続され、ラインバッファインデクス６４２Ｅは畳み込みモジュール６１０Ｃに直接接続される。ラインバッファインデクス６４２Ｄおよびラインバッファインデクス６４２Ｅは、畳み込みモジュールに接続されず、そのため計算時に非アクティブであるが、入力データの保持には使用される。畳み込みモジュール６１０Ｄは、ラインバッファインデクスに接続されず、そのため非アクティブである。
【００６７】
この実施形態における畳み込み出力接続スキームでは、畳み込みモジュール６１０Ａ、畳み込みモジュール６１０Ｂ、および畳み込みモジュール６１０Ｃは全て、加算器モジュール６１２Ａに直接接続される。畳み込みモジュール６１０Ｄは非アクティブであるため、加算器モジュールに接続されてもいない。加算器モジュール６１２Ｂ、加算器モジュール６１２Ｃ、および加算器モジュール６１２Ｄは、畳み込みモジュールに接続されず、そのため非アクティブである。
【００６８】
入力データメモリ６２２は、ニューラルネットワーク層６３２のタイル６３４Ａからの入力値を、現在格納中である。ラインバッファには、入力データメモリ６２２からの入力の５つの連続したインデクスがプリロードされている。ニューラルネットワーク層６３２の推論は、行幅が３、拡張係数が２のカーネルを使用して実行される。これは、入力インデクス１、３、および５と、カーネル行値との間でドット積演算が行われることを意味する。カーネル行は、カーネルインデクス６３９Ａ、６３９Ｂ、および６３９Ｃを含む。この実施形態における畳み込み入力接続スキームによると、畳み込みモジュール６１０Ａにより、第１入力インデクスが、複数入力チャネル用のカーネルインデクス６３９Ａの値で乗算され、畳み込みモジュール６１０Ｂにより、第３入力インデクスが、複数入力チャネル用のカーネルインデクス６３９Ｂの値で乗算され、畳み込みモジュール６１０Ｃにより、第５入力インデクスが、複数入力チャネル用のカーネルインデクス６３９Ｃの値で乗算される合計すると、加算器モジュール６１２Ａは得られた合計を蓄積メモリ６２４に出力するその後、第１入力インデクスが破棄され、入力データメモリ６２２から第６入力インデクスがロードされて、ラインバッファ６４０が左にシフトする。次のステップにおいて、入力値をカーネル行値で乗算するプロセスが繰り返される。今度は、入力インデクス２、４、および６と、出力とが同様に合計され、入力タイル６３４Ａが完全に処理されるまで、ラインバッファ６２２は再度シフトされる。
【００６９】
図７は、本発明の実施形態に係る、アクセラレータランタイム再構成可能性用のシステムを示す。システムは、ホストプロセッサ７０１と、外部メモリ７０５と、集積回路７００と、を備える。ホストプロセッサ７０１と、集積回路７００とは、外部メモリ７０５と通信する。ホストプロセッサ７０１は、ニューラルネットワーク推論用の集積回路７００の構成および実行のため、パラメータを決定し命令を生成する。次に、ホストプロセッサ７０１は、入力データ７３０を外部メモリ７０５に書き込む。ホストプロセッサ７０１はまた、集積回路７００により実行されると、集積回路７００にニューラルネットワーク推論を再構成および実行させる命令をコンパイルする。ホストプロセッサ７０１は、コンパイルされた命令７０９を集積回路７００に送り、ニューラルネットワーク推論の再構成および実行のため、コンパイルされた命令７０９を集積回路７００に実行させる。推論時に、集積回路７００は、タイル等の１つまたは複数の部分における外部メモリ７０５から入力データ７３０を読み出す。集積回路７００は、出力データ７３９の値を計算しながら、外部メモリ７０５に出力値７３９を書き込む。
【００７０】
アクセラレータランタイム再構成可能性を促進するために、ホストプロセッサにより生成される命令は、推論動作に加え、１つまたは複数の構成動作を含む。これにより、単一の「設定」段階により時間がかかるＦＰＧＡ等のプログラム可能デバイス、または「設定」段階を一切有さず、「実行」段階のみを持ち得る、典型的なＡＳＩＣ等の構成不能推論デバイスに対する命令と比較して、命令粒度が低減し得る。「設定」および「実行」段階を別個とすることで、再構成可能アクセラレータにおける畳み込みモジュールの数の増加とともに命令の複雑さが増すことが防止され得る。命令の生成時に、ホストプロセッサは、推論の実行に関して、畳み込みモジュールをどのように、どの順序で使用するかを決定し、さらにアクセラレータの再構成可能メモリブロックが、異なるメモリの異なるデータ種類間で共有されるように、どのように割り当てられるかをさらに決定し得る。
【００７１】
別の実施形態では、命令の生成およびコンパイルを担うプロセッサは、集積回路に命令を送るホストプロセッサと別個とすることが可能である。
【００７２】
図８は、本発明の実施形態に係る、推論用のアクセラレータランタイム再構成可能性により、デバイスを構成するための動作フローを示す。動作フローは、推論用のアクセラレータランタイム再構成可能性によりデバイスを構成する方法を提供し得る。方法は、以下に説明する図１２に示すホストプロセッサ等の、所定の動作を実行する各部を含むホストプロセッサにより実行され得る。方法はさらに、ホストプロセッサとは別個のプロセッサにより実行され得る。
【００７３】
Ｓ８５０において、取得部は、ニューラルネットワークと、集積回路の構成とを取得する。取得された構成は、集積回路の詳細を、複数の畳み込みモジュールと、複数の加算器モジュールと、蓄積メモリと、複数の畳み込みモジュール、複数の加算器モジュール、および蓄積メモリを接続する複数の畳み込み出力インターコネクトの内の畳み込み出力インターコネクトを開閉するように構成された畳み込み出力インターコネクト制御モジュールと、を備えるものとして示す。ニューラルネットワークは、複数の層を有し得、各層は複数のノードおよび複数のエッジを有し、各ノードは数学的演算の表現を含む。ニューラルネットワークは、計算グラフとして取得され得る。ニューラルネットワークは、重み値の定義された組を含み得る。あるいは、取得部は、ニューラルネットワークとは別個に重み値を取得し得る。
【００７４】
Ｓ８５２において、決定部は、ニューラルネットワークの推論に使用されるカーネルのサイズを決定する。決定部は、拡張等、カーネルの他の特徴を決定し得る。これらの値は構成不能で、ニューラルネットワーク構成の一部であるので、ニューラルネットワーク構成の一部として取得され得、決定部は、Ｓ８５０で取得されたニューラルネットワーク構成における値を単純に参照することで、これら特徴を決定し得る。
【００７５】
Ｓ８５３において、決定部は、ニューラルネットワークの推論実行に集積回路を使用するために適切なタイルサイズを決定する。タイルは、入力データでの一部で、より多くの入力データのために、外部メモリをアクセスする前に、全タイルを計算するのに十分なメモリを集積回路が有するようなサイズであり得る。タイルサイズは、集積回路のオンチップメモリブロックの容量により決定され得る。決定部は、各寸法におけるタイルの数等の、タイルサイズに基づいた別の特徴を決定し得る。
【００７６】
Ｓ８６０において、決定部は、ニューラルネットワークの推論の実行に集積回路を使用するのに適した、集積回路のオンチップメモリブロックの割り当てを決定する。集積回路が集積回路の計算モジュールと固定通信ラインを持つ別個のメモリブロックを有する場合、割り当ての選択肢は限られ得る。一方で、集積回路が単一の再構成可能メモリブロックを有する場合、多くの割り当て選択肢があり得る。
【００７７】
Ｓ８５５において、決定部は、推論の実行時に使用される、集積回路用の少なくとも１つの畳み込み出力接続スキームを決定する。例えば、決定部は、少なくとも１つの畳み込み出力接続スキームを決定し得る。これにより、各畳み込みモジュールは、複数の畳み込み出力インターコネクトを通じた、蓄積メモリまたは複数の加算器モジュールの１つに対する開直接接続が１を超えないようになる。決定部は、ニューラルネットワークと、集積回路の構成とに基づいて、少なくとも１つの畳み込み出力接続スキームを決定し得る。決定部は、畳み込みモジュールを最大限利用するために、タイルサイズ、各寸法におけるタイル数、および／または畳み込みモジュールの数にさらに基づいて、少なくとも１つの畳み込み出力接続スキームを決定し得る。決定部は、推論プロセス全体において使用される単一の畳み込み出力接続スキームを決定し得、またはニューラルネットワークのいくつかの層の群のそれぞれに対して１つずつ、複数の畳み込み出力接続スキームを決定し得る。
【００７８】
Ｓ８５６において、決定部は、推論の実行時に使用される、集積回路用の少なくとも１つの畳み込み入力接続スキームを決定する。例えば、決定部は、少なくとも１つの畳み込み入力接続スキームを決定し得る。これにより、各畳み込みモジュールは、複数の畳み込み入力インターコネクトを通じた、入力データメモリまたはラインバッファに含まれる複数のインデクスの１つに対する開直接接続が１を超えないようになる。決定部は、畳み込みモジュールを最大限利用するために、カーネルサイズ、カーネル拡張、および／または畳み込みモジュールの数にさらに基づいて、少なくとも１つの畳み込み入力接続スキームを決定し得る。決定部は、推論プロセス全体において使用される単一の畳み込み入力接続スキームを決定し得、またはニューラルネットワークのいくつかの層の群のそれぞれに対して１つずつ、複数の畳み込み入力接続スキームを決定し得る。
【００７９】
Ｓ８５８において、生成部は、カーネルサイズ、タイルサイズ、メモリ割り当て、およびスキームに応じて、集積回路が推論を実行するための命令を生成する。例えば、生成部は、集積回路がニューラルネットワークの推論を実行するための、集積回路命令を生成し得、命令は、畳み込み出力インターコネクト制御モジュールが、少なくとも１つの畳み込み出力接続スキームに応じて複数の畳み込み出力インターコネクトを構成するための命令を含む。生成部はさらに、畳み込み入力インターコネクト制御モジュールが少なくとも１つの畳み込み入力接続スキームに応じて複数の畳み込み入力インターコネクトを構成するための命令を生成し得る。命令を生成することはさらに、集積回路が推論を実行するために実行可能なフォーマットに、命令をコンパイルすることを含み得る。
【００８０】
単一の再構成可能メモリブロックを有するデバイスについて、多精度サポートで利用され得る、多くの割り当て選択肢があり得る。単一の再構成可能メモリブロックの割り当ては、図４のデバイス４００等の、ロードバッファと、畳み込みモジュールとの間にインターコネクトを有するデバイスに対して、特に有用となり得る。単一の再構成可能メモリブロックを割り当てるために、メモリバンク幅は、所与のニューラルネットワークの推論を実行するためにサポートが必要な最小データ幅により決定され得る。いくつかの実施形態において、この最小データ幅は８ビットであるが、データ幅は任意の２の倍数であり得る。例として、メモリバンク幅を２まで低減すると、ビット幅として全ての２の倍数にサポート可能となる。デバイスの、畳み込みモジュール等の計算モジュールも、実用的に効率を得るために、そのような多精度サポートを要し得るが、これにはニューラルネットワークの層全体でのその任意の混合が含まれる。再構成可能メモリブロックはさらに、複数のニューラルネットワークの並列推論を可能にし得る。
【００８１】
図９は、本発明の実施形態に係る、図８のＳ８６０等の、推論用の再構成可能メモリの割り当てを決定する動作フローを示す。この動作フローの中の操作は、決定部または対応して名付けられたそのサブセクションによって実行されてよい。
【００８２】
Ｓ９６３において、決定部またはそのサブセクションは、メモリの割り当てに対して、物理的なメモリバンク幅が十分であるか判定する。例えば、決定部は、入力データメモリアロケーションまたは蓄積メモリアロケーションに対して、メモリバンク幅が十分であるか判定し得る。バンク幅が十分であれば、動作フローは割り当てを決定するためＳ９６６に進む。バンク幅が不十分であれば、動作フローは、連続したバンクを仮想的に組み合わせるため、Ｓ９６４に進む。メモリバンク幅をサポートするために、判定されたメモリバンク幅は固定された物理的バンク幅と同一サイズまたは倍数である必要があり、書き込み可能メモリブロックを製造する前に判定される必要がある。入力データメモリアロケーションまたは蓄積メモリアロケーションに対するメモリバンク幅が、物理的バンク幅より小さければ、集積回路で別の書き込み可能メモリブロックを使用する必要がある。
【００８３】
Ｓ９６４において、決定部またはそのサブセクションは、連続したバンクを仮想的に組み合わせて、仮想バンクを形成する。例えば、Ｓ９６３で判定されたメモリバンク幅が８ビットであるが、蓄積メモリが３２ビット値のストレージを要する場合、決定部は、蓄積メモリアロケーションのために、仮想的に４つの連続した８ビットバンクを組み合わせて、１つの仮想３２ビットバンクを形成する。これを利用するため、図８のＳ８５８で生成された集積回路命令等の集積回路命令は、蓄積メモリアロケーションの各バンクが、書き込み可能メモリブロックの連続したバンクの仮想的な組み合わせであるように、蓄積メモリアロケーションに対して書き込み可能メモリブロックを割り当てる命令をさらに含む。
【００８４】
Ｓ９６６において、決定部またはそのサブセクションは、メモリアロケーションのサイズを決定する。例えば、決定部は、タイルサイズ、値サイズ、値の数、書き込み可能メモリブロックの総容量、並列性の種類および並列度等に基づき得る、必要な容量に基づいて、メモリアロケーションのサイズを決定し得る。
【００８５】
Ｓ９６７において、決定部またはそのサブセクションは、全てのメモリアロケーションが構成されたかを判定する。構成する必要のあるメモリアロケーションが残っていれば、動作フローは、Ｓ９６３の別のイテレーションに進む前に、次のアロケーションを選択する（Ｓ９６８）。未構成のメモリアロケーションがなければ、動作フローは終了する。蓄積メモリおよび入力データメモリのメモリアロケーションを実施するために、図８のＳ８５８で生成された集積回路命令等の集積回路命令はさらに、蓄積メモリアロケーションおよび入力データメモリアロケーションに対して、書き込み可能メモリブロックを割り当てるための命令を含む。
【００８６】
上述の実施形態では、各アロケーションのサイズは一度に１つずつ決定されるが、いくつかの実施形態においては、全てのアロケーションのサイズは同時に決定される。別の実施形態では、メモリの複数のアロケーションは、ニューラルネットワークの層の複数の群のそれぞれに対するアロケーション等、推論に対して決定される。
【００８７】
命令が生成およびコンパイルされると、これらの命令は集積回路に送られる。命令における構成に基づいて、「設定」段階は、集積回路、またはそのインターコネクト制御モジュールに、「回路交換」式に、全ての畳み込みモジュールに関連付けられた信号を使用して、インターコネクトの、個別のインターコネクトを構成させ得る。「設定」段階は、集積回路またはメモリ制御モジュールに、全ての畳み込みモジュールに対するメモリバンクおよび接続性を構成し、メモリブロックをさらに設定させ得る。「設定」段階が完了すると、命令は集積回路に推論動作を実行させ得る。推論動作、または層の群により定義されたその部分が完了すると、全てのリソースが解放され、別の「設定」段階の準備ができる。
【００８８】
図１０は、本発明の実施形態に係る、推論を実行しながら、アクセラレータランタイム再構成可能性によりデバイスを再構成するための動作フローを示す。動作フローは、推論を実行しながら、アクセラレータランタイム再構成可能性によりデバイスを再構成するための方法を提供し得る。当該方法は、図１２に示される集積回路等の特定の動作を実行するための各部を含む集積回路により実行され得る。以下でこれを説明する。
【００８９】
Ｓ１０７０において、受信部は、ニューラルネットワークの推論を実行する命令を受信する。命令は、図８のＳ８５８で生成された命令等の、集積回路のインターコネクトまたは書き込み可能メモリブロックを再構成するための命令を含み得る。
【００９０】
Ｓ１０８０において、割り当て部は、集積回路の書き込み可能メモリブロックを割り当てる。例えば、割り当て部は、蓄積メモリが書き込み可能メモリブロックの蓄積メモリアロケーションであるように、書き込み可能メモリブロックを割り当て得る。
【００９１】
Ｓ１０７２において、再構成部は、集積回路の畳み込み出力低減インターコネクトを再構成する。例えば、再構成部は、少なくとも１つの畳み込み出力接続スキームに応じて複数の畳み込み出力インターコネクトを構成し得る。これにより、複数の畳み込みモジュールの内の各畳み込みモジュールは、複数の畳み込み出力インターコネクトを通じた、蓄積メモリまたは複数の加算器モジュールの１つに対する開直接接続が１を超えないようになる。再構成部は、図１の制御モジュール１１４等の制御モジュールを含み得る。
【００９２】
Ｓ１０７４において、再構成部は、集積回路の畳み込み入力インターコネクトを再構成する。例えば、再構成部は、少なくとも１つの畳み込み入力接続スキームに応じて複数の畳み込み入力インターコネクトを構成し得る。これにより、各畳み込みモジュールは、複数の畳み込み入力インターコネクトを通じた、入力データメモリまたはラインバッファに含まれる複数のインデクスの１つに対する開直接接続が１を超えないようになる。再構成部は、図４の制御モジュール４４４等の制御モジュールをさらに含み得る。
【００９３】
Ｓ１０７６において、推論部は、集積回路にニューラルネットワークの推論を実行させる。例えば、推論部は、ニューラルネットワークに応じて、入力データを読み込んで、出力データに処理するように、読み取りモジュール、畳み込みモジュール、加算器モジュール、書き込みモジュール等を調整し得る。入力データは、外部メモリから読み出され得、タイル等の部分で処理され、その後、出力データが外部メモリに書き込まれ得る。集積回路は再構成可能であるので、命令は、ニューラルネットワークの全層ではなく、層の群のみに対する現在の構成に応じて、推論を実行させ得る。命令は、別の構成に応じて、別の層の群の推論を実行させ得る。
【００９４】
Ｓ１０７８において、再構成部は、全ての層の群が推定されたかを判定する。推定が必要な層の群が残っていれば、動作フローは、次の群に対する集積回路の再構成が始まるＳ１０８０の別のイテレーションに進む前に、次の層の群を選択し得る（Ｓ１０７９）。全ての層の群が推定されていれば、動作フローは終了する。同一の構成で全ての層が推定されれば、命令は、全ての層が単一の群に属するものとして扱い得る。
【００９５】
図１１は、本発明の実施形態に係る、図１０のＳ１０８０等の、推論を実行しながら、再構成可能メモリによりデバイスを再構成するための動作フローを示す。この動作フローの中の操作は、割り当て部または対応して名付けられたそのサブセクションによって実行されてよい。
【００９６】
Ｓ１１８４において、割り当て部またはそのサブセクションは、構成がメモリアロケーション用の仮想バンクを含むか判定する。メモリアロケーションが仮想バンクを含む場合、動作フローは連続したバンクをロックするため、Ｓ１１８５に進む。メモリアロケーションが仮想バンクを含まない場合、動作フローはメモリ割り当てを形成するため、Ｓ１１８７に進む。
【００９７】
Ｓ１１８５において、割り当て部またはそのサブセクションは、仮想バンクを形成するために、連続したバンクをロックする。例えば、Ｓ１１８２で構成されたメモリバンク幅が８ビットであるが、蓄積メモリが３２ビット値のストレージを要する場合、割り当て部は、蓄積メモリアロケーションのために、４つの連続した８ビットバンクをロックして、１つの仮想３２ビットバンクを形成する。
【００９８】
Ｓ１１８７において、割り当て部またはそのサブセクションは、構成におけるサイズに応じて、メモリアロケーションを形成する。例えば、割り当て部は、メモリアロケーションの指定サイズに相当する所定数のメモリバンクを、メモリアロケーションに記録し得るモジュールに少なくとも示されるように指定し得る。例えば、割り当て部は、蓄積メモリが書き込み可能メモリブロックの蓄積メモリアロケーションであるように、書き込み可能メモリブロックを割り当て得る。割り当て部が仮想バンクを有する場合、割り当て部は、蓄積メモリアロケーションの各バンクが、書き込み可能メモリブロックの連続したバンクの仮想的な組み合わせであるように、蓄積メモリアロケーションに対して書き込み可能メモリブロックを割り当てる。
【００９９】
Ｓ１１８８で、割り当て部またはそのサブセクションは、全てのメモリアロケーションが形成されたかを判定する。形成する必要のあるメモリアロケーションが残っていれば、動作フローは、Ｓ１１８４の別のイテレーションに進む前に、次のアロケーションを選択する（Ｓ１１８９）未形成のメモリアロケーションがなければ、動作フローは終了する。
【０１００】
図１２は、本発明の実施形態に係る、アクセラレータランタイム再構成可能性を利用した、推論の構成および実行用のハードウェア構成を示す。例示的なハードウェア構成は、外部メモリ１２０５および集積回路１２００と通信するホストプロセッサ１２０１を含む。ホストプロセッサ１２０１、外部メモリ１２０５および集積回路１２００は、オンプレミスアプリケーションを実行するサーバコンピュータまたはメインフレームコンピュータ等のホストコンピュータおよびそれを用いるホストクライアントコンピュータの一部であり得る。ホストプロセッサ１２０１、外部メモリ１２０５、および集積回路１２００は、ユーザに対してアプリケーションを実行する、パーソナルコンピュータ、モバイルコンピュータ、または小規模演算デバイスの一部であり得る。
【０１０１】
本実施形態において、ホストプロセッサ１２０１は、様々な部の動作をプロセッサまたはプログラマブル回路に実行させるためにプロセッサまたはプログラマブル回路により実行可能であるプログラム命令を集合的に格納する１つまたは複数のコンピュータ可読記憶媒体を含むコンピュータプログラム製品等のロジック部として考えられ得る。ホストプロセッサ１２０１は、代替的に、アナログプログラマブル回路もしくはデジタルプログラマブル回路またはそれらの任意の組み合わせであり得る。ホストプロセッサ１２０１は、通信を通じて相互作用する物理的に分離されたストレージまたは回路から構成され得る。外部メモリ１２０５は、本明細書におけるプロセスの実行時にホストプロセッサ１２０１によるアクセスのためのデータを格納することが可能な揮発性または非揮発性のコンピュータ可読媒体であり得る。集積回路１２００は、図１のデバイス１００、図３のデバイス３００、または図４のデバイス４００のような、ニューラルアーキテクチャ推論および再構成を実行可能なアクセラレータであり得る。
【０１０２】
ホストプロセッサ１２０１は、取得部１２０２と、決定部１２０３と、生成部１２０４と、を備える。外部メモリ１２０５は、ニューラルネットワーク１２３１、集積回路パラメータ１２０６、推論パラメータ１２０７、コンパイルパラメータ１２０８、および集積回路命令１２０９を含む。
【０１０３】
取得部１２０２は、ニューラルネットワーク推論の構成および実行用の情報を取得するホストプロセッサ１２０１の一部のである。例えば、取得部１２０２は、ニューラルネットワークおよび集積回路構成を取得するように構成され得る。取得部１２０２は、取得された情報を、ニューラルネットワーク１２３１および集積回路パラメータ１２０６として、外部メモリ１２０５に格納し得る。取得部１２０２は、上記フローチャートで記載されたように、追加の機能を実行するためのサブセクションを含んでよい。そのようなサブセクションは、それらの機能に関連する名前で称され得る。
【０１０４】
決定部１２０３は、ニューラルネットワーク推論の構成および実行用の、接続スキーム、メモリアロケーション、タイルサイズ、カーネル特性等の各種決定を行うホストプロセッサ１２０１の一部である。決定時、決定部１２０３は、ニューラルネットワーク１２３１、集積回路パラメータ１２０６、および推論パラメータ１２０７にアクセスし得る。決定部１２０３は、上記フローチャートで記載されたように、追加の機能を実行するためのサブセクションを含んでよい。そのようなサブセクションは、それらの機能に関連する名前で称され得る。
【０１０５】
生成部１２０４は、集積回路１２００がニューラルネットワーク推論を実行するために実行する命令を生成およびコンパイルする、ホストプロセッサ１２０１の一部である。命令の生成およびコンパイル時、生成部１２０４は、ニューラルネットワーク１２３１、集積回路パラメータ１２０６、推論パラメータ１２０７、コンパイルパラメータ１２０８、および集積回路命令１２０９にアクセスし得る。生成部１２０４は、上記フローチャートで記載されたように、追加の機能を実行するためのサブセクションを含んでよい。そのようなサブセクションは、それらの機能に関連する名前で称され得る。
【０１０６】
集積回路１２００は、受信部１２１１と、割り当て部１２２１と、再構成部１２１４と、推論部１２１９と、書き込み可能メモリ１２２０と、を備える。
【０１０７】
受信部１２１１は、ニューラルネットワーク推論を実行する命令のような命令を受信する集積回路１２００の一部である。命令の受信時、受信部１２１１は、集積回路命令１２０９にアクセスし得る、または生成部１２０４から命令を直接受信し得る。受信部１２１１は、命令を書き込み可能メモリ１２２０に格納し得る。上述のフローチャートにおいて説明したように、受信部１２１１は、追加の機能を実行するサブセクションを含み得る。そのようなサブセクションは、それらの機能に関連する名前で称され得る。
【０１０８】
割り当て部１２２１は、集積回路命令１２０９に応じて、書き込み可能メモリ１２２０を割り当てる、集積回路１２００の一部である。例えば、割り当て部１２２１は、蓄積メモリアロケーションおよび／または入力データメモリアロケーションを含むように、書き込み可能メモリ１２２０を割り当て得る。割り当て部１２２１は、上記フローチャートで記載されたように、追加の機能を実行するためのサブセクションを含んでよい。そのようなサブセクションは、それらの機能に関連する名前で称され得る。
【０１０９】
再構成部１２１４は、少なくともニューラルネットワークの層の群を推論するため、集積回路１２００を再構成する集積回路１２００の一部である。例えば、再構成部１２１４は、スキームに応じて出力インターコネクトおよび／または入力インターコネクトを再構成し得る。再構成部１２１４は、上記フローチャートで記載されたように、追加の機能を実行するためのサブセクションを含んでよい。そのようなサブセクションは、それらの機能に関連する名前で称され得る。
【０１１０】
推論部１２１９は、集積回路にニューラルネットワークの推論を実行させる、集積回路１２００の一部である。例えば、推論部１２１９は、読み取りモジュールと、畳み込みモジュール、加算器モジュール、書き込みモジュール等を調整して、入力データを読み取り、ニューラルネットワークに応じて出力データに処理し得る。推論部１２１９は、外部メモリ１２０５のニューラルネットワーク１２３１にアクセスし、入力データを読み取り得る。推論部１２１９は、上記フローチャートで記載されたように、追加の機能を実行するためのサブセクションを含んでよい。そのようなサブセクションは、それらの機能に関連する名前で称され得る。
【０１１１】
書き込み可能メモリ１２２０は、ニューラルネットワーク推論の実行時に受信部１２１１、割り当て部１２２１、再構成部１２１４、および推論部１２１９がアクセスするデータを格納可能な、ＲＡＭ、フラッシュメモリ等のコンピュータ可読媒体、またはその他内蔵書き込み可能メモリであり得る。書き込み可能メモリ１２２０は、別個のメモリブロックによる複合体であり得、または任意の数の再構成可能メモリブロックの複合体であり得、あるいはそれらの任意の混合であり得る。
【０１１２】
別の実施形態では、命令の生成およびコンパイルを担うホストプロセッサは、命令を集積回路に送るホストプロセッサと別であり得る。
【０１１３】
上述の実施形態では、単一の外部メモリがホストプロセッサおよび集積回路に共有され、その両方に直接接続される。別の実施形態では、ホストプロセッサは独自の個別外部メモリを有する。そのような実施形態では、命令および構成は、バスを通じてホスト外部メモリからデバイス外部メモリに送られる。ホスト外部メモリと、デバイス外部メモリとが同一の物理的メモリである、図１２等の実施形態は、共有メモリＳｏＣボードを使用して実施され得る。
【０１１４】
上述の実施形態では、受信部は、命令を書き込み可能メモリに格納する。別の実施形態では、ＤＤＲ等の外部メモリに格納された命令が後にオンチップＦＩＦＯキューにロードされる。受信部は、外部ＤＤＲメモリから命令をロードし、命令が別のモジュールに消費される際にそれらをＦＩＦＯに格納する専用の命令取得モジュールを備え得る。
【０１１５】
他の実施形態において、ホストプロセッサは、本明細書におけるプロセスを実行すべくロジック機能を処理することが可能な任意の他のデバイスであり得る。外部メモリは、１つまたは複数のコンピュータ可読媒体であり得る。例えば、ホストプロセッサは、中央処理装置（ＣＰＵ）であり得、外部メモリは、本明細書におけるプロセスの実行時にＣＰＵによる実行のためにコンピュータ実行可能命令の全部または一部がコピーされ得るダイナミックランダムアクセスメモリ（ＤＲＡＭ）であり得る。
【０１１６】
装置がコンピュータである実施形態において、当該コンピュータにインストールされるプログラムは、当該コンピュータに、本発明の実施形態の装置またはそれらの１つまたは複数のセクション（モジュール、コンポーネント、要素等を含む）として機能させ、または、それらに関連付けられた操作を実行させ、および／または、当該コンピュータに本発明の実施形態の処理またはそれらのステップを実行させ得る。上記プログラムはプロセッサによって実行され、コンピュータに、本明細書に記載のフローチャートおよびブロック図のブロックの一部または全てに関連付けられた特定の操作を実行させ得る。
【０１１７】
本発明の様々な実施形態は、ブロックが（１）動作が実行されるプロセスの段階または（２）動作の実行を担う装置のセクションを表し得るフローチャートおよびブロック図を参照して説明され得る。特定の段階およびセクションは、専用回路、コンピュータ可読媒体に格納されたコンピュータ可読命令が供給されているプログラマブル回路、および／またはコンピュータ可読媒体に格納されたコンピュータ可読命令が供給されているプロセッサにより実装され得る。専用回路は、デジタルおよび／またはアナログハードウェア回路を含んでいてよく、集積回路（ＩＣ）および／またはディスクリート回路を含んでよい。プログラマブル回路は、例えばフィールドプログラマブルゲートアレイ（ＦＰＧＡ）、プログラマブルロジックアレイ（ＰＬＡ）等といった、論理ＡＮＤ、ＯＲ、ＸＯＲ、ＮＡＮＤ、ＮＯＲ、および他の論理演算、フリップ−フロップ、レジスタ、メモリ要素等を含む再構成可能なハードウェア回路を含み得る。
【０１１８】
本発明は、システム、方法および／またはコンピュータプログラム製品であり得る。コンピュータプログラム製品は、プロセッサに本発明の態様を実現させるためのコンピュータ可読プログラム命令を有する（または１つまたは複数の）コンピュータ可読記憶媒体を含み得る。
【０１１９】
コンピュータ可読記憶媒体は、命令実行デバイスにより使用される命令を保持および格納可能な物理的デバイスであり得る。コンピュータ可読記憶媒体は、例えば電子ストレージデバイス、磁気ストレージデバイス、光ストレージデバイス、電磁ストレージデバイス、半導体ストレージデバイス、または上述のものの任意の適切な組み合わせであり得るが、これらに限定されるものではない。コンピュータ可読記憶媒体のより具体的な例の非包括的な列挙は、ポータブルコンピュータディスケット、ハードディスク、ランダムアクセスメモリ（ＲＡＭ）、リードオンリメモリ（ＲＯＭ）、消去可能プログラマブルリードオンリメモリ（ＥＰＲＯＭまたはフラッシュメモリ）、スタティックランダムアクセスメモリ（ＳＲＡＭ）、ポータブルコンパクトディスクリードオンリメモリ（ＣＤ−ＲＯＭ）、デジタル多用途ディスク（ＤＶＤ）、メモリスティック、フロッピーディスク、パンチカードまたは記録された命令を有する溝内の隆起構造等の機械的に暗号化されたデバイス、および上述のものの任意の適切な組み合わせを含む。コンピュータ可読記憶媒体は、本明細書において用いられる場合、電波もしくは他の自由に伝搬する電磁波、導波路もしくは他の伝送媒体を通じて伝搬する電磁波（例えば、光ファイバケーブルを通過するする光パルス）または、ワイヤを通じて伝送される電気信号等の一時的な信号それ自体とは解釈されない。
【０１２０】
本明細書において説明するコンピュータ可読プログラム命令は、例えばインターネット、ローカルエリアネットワーク、ワイドエリアネットワークおよび／または無線ネットワーク等のネットワークを介して、コンピュータ可読記憶媒体からそれぞれのコンピューティング／処理デバイスへダウンロードされ得るか、または、外部コンピュータもしくは外部ストレージデバイスへダウンロードされ得る。当該ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイコンピュータおよび／またはエッジサーバを備え得る。各コンピューティング／処理デバイスにおけるネットワークアダプターカードまたはネットワークインタフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、それぞれのコンピューティング／処理デバイス内のコンピュータ可読記憶媒体に格納するためのコンピュータ可読プログラム命令を転送する。
【０１２１】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ（ＩＳＡ）命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、または、例えばＳｍａｌｌｔａｌｋ（登録商標）、Ｃ＋＋等のオブジェクト指向プログラミング言語と、「Ｃ」プログラミング言語もしくは同様のプログラミング言語等の従来の手続き型プログラミング言語とを含む１つまたは複数のプログラミング言語の任意の組み合わせで書き込まれたソースコードもしくはオブジェクトコードのいずれかであり得る。コンピュータ可読プログラム命令は、ユーザのコンピュータ上で全て実行され得るか、スタンドアロンのソフトウェアパッケージとして部分的にユーザのコンピュータ上で実行され得るか、部分的にユーザのコンピュータ上で、かつ、部分的にリモートコンピュータ上で実行され得るか、または、リモートコンピュータもしくはサーバ上で全て実行され得る。後者のシナリオにおいて、リモートコンピュータは、ローカルエリアネットワーク（ＬＡＮ）またはワイドエリアネットワーク（ＷＡＮ）を含む任意の種類のネットワークを通じてユーザのコンピュータに接続されてもよく、接続は、外部コンピュータに対して（例えば、インターネットサービスプロバイダを用いるインターネットを通じて）行われてもよい。いくつかの実施形態において、例えば、プログミング可能論理回路、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）またはプログラマブルロジックアレイ（ＰＬＡ）を含む電子回路は、本発明の態様を実行するため、電子回路を適合させるコンピュータ可読プログラム命令の状態情報を利用することによって、コンピュータ可読プログラム命令を実行してよい。
【０１２２】
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施形態には限定されない。上記実施形態に、多様な変更または改良を加えることが可能であることが当業者に明らかである。その様な変更または改良を加えた実施形態も本発明の技術的範囲に含まれ得ることが、特許請求の範囲の記載から明らかである。
【０１２３】
特許請求の範囲、実施形態、または図面中において示した装置、システム、プログラム、および方法によって実行される各処理の動作、手順、段階、およびステージは、その順序が特段「より前に」、「先立って」等と明示しておらず、また、前の処理の出力を後の処理で用いるのでない限り、任意の順序で実行しうることに留意すべきである。特許請求の範囲、実施形態および図面において、処理フローを、「まず」または「次に」等の表現を用いて説明したとしても、この順で処理を実行することが必須であることを意味するものではない。
【要約】      （修正有）【課題】ニューラルネットワークアクセラレータランタイム再構成可能性を利用した推論デバイス及びプログラムを提供する。【解決手段】デバイス１００は、複数の畳み込みモジュールと、複数の加算器モジュールと、蓄積メモリと、複数の畳み込みモジュールと、複数の加算器モジュール１１２Ａ〜１１２Ｄと、蓄積メモリを接続する複数の畳み込み出力インターコネクトの内の畳み込み出力インターコネクトを開閉する畳み込み出力インターコネクト制御モジュールと、を備える。ニューラルネットワーク推論は、少なくとも１つの畳み込み出力接続スキームに応じてデバイスを構成しながら実行される。畳み込み出力インターコネクト制御モジュールは、少なくとも１つの畳み込み出力接続スキームに応じて複数の畳み込み出力インターコネクトを構成する。【選択図】図１【図１】
0006962526.tif 000002
【図２】
0006962526.tif 000003
【図３】
0006962526.tif 000004
【図４】
0006962526.tif 000005
【図５】
0006962526.tif 000006
【図６】
0006962526.tif 000007
【図７】
0006962526.tif 000008
【図８】
0006962526.tif 000009
【図９】
0006962526.tif 000010
【図１０】
0006962526.tif 000011
【図１１】
0006962526.tif 000012
【図１２】
0006962526.tif 000013