(57)【要約】ニューラル推論プロセッサのための中央スケジューラおよび命令ディスパッチャであって、様々な実施形態において、プロセッサが複数のコアを含む。各コアは、ニューラル計算ユニットと、アクティベーション・メモリと、ローカル・コントローラとを含む。ニューラル計算ユニットは、複数の入力アクティベーションに複数のシナプス重みを付けて複数の出力アクティベーションを生成するようになされている。アクティベーション・メモリは、入力アクティベーションと出力アクティベーションとを記憶するようになされている。ローカル・コントローラは、アクティベーション・メモリからニューラル計算ユニットに入力アクティベーションをロードし、ニューラル計算ユニットからアクティベーション・メモリに複数の出力アクティベーションを記憶するようになされている。プロセッサは、複数のシナプス重みを含むネットワーク・パラメータを記憶するようになされたニューラル・ネットワーク・モデル・メモリを含む。プロセッサは、複数のコアに動作可能に結合され、ニューラル・ネットワーク・モデル・メモリから各コアにシナプス重みを供給するようになされたグローバル・スケジューラを含む。
2021521539.tif 000002
【特許請求の範囲】
【請求項１】
システムであって、
複数のコアであって、各コアが、
複数の入力アクティベーションに複数のシナプス重みを付けて複数の出力アクティベーションを生成するようになされたニューラル計算ユニット、
前記入力アクティベーションと前記出力アクティベーションとを記憶するようになされたアクティベーション・メモリ、および
前記アクティベーション・メモリから前記ニューラル計算ユニットに前記入力アクティベーションをロードし、前記ニューラル計算ユニットから前記アクティベーション・メモリに前記複数の出力アクティベーションを記憶するようになされたローカル・コントローラ、
を備える、前記複数のコアと、
前記複数のシナプス重みを記憶するようになされたニューラル・ネットワーク・モデル・メモリと、
前記複数のコアに動作可能に結合され、前記ニューラル・ネットワーク・モデル・メモリから各コアに前記シナプス重みを供給するようになされたグローバル・スケジューラと
を含む、システム。
【請求項２】
前記グローバル・スケジューラが、各コアにローカル・コントローラ命令を与えるようになされた、請求項１に記載のシステム。
【請求項３】
前記グローバル・スケジューラが、前記コアのそれぞれに同じシナプス重みを供給する、請求項１に記載のシステム。
【請求項４】
前記グローバル・スケジューラが、前記コアのそれぞれに同じローカル・コントローラ命令を与える、請求項２に記載のシステム。
【請求項５】
前記グローバル・スケジューラが、前記コアのうちの少なくとも一部のコアに異なるシナプス重みを供給する、請求項１に記載のシステム。
【請求項６】
前記グローバル・スケジューラが、前記コアのうちの少なくとも一部のコアに異なるローカル・コントローラ命令を与える、請求項２に記載のシステム。
【請求項７】
前記複数のコアに結合されたネットワークをさらに含む、請求項１に記載のシステム。
【請求項８】
前記グローバル・スケジューラが、前記ネットワークを介して前記シナプス重みを供給する、請求項７に記載のシステム。
【請求項９】
前記グローバル・スケジューラが、前記ネットワークを介して各コアにローカル・コントローラ命令を与える、請求項７に記載のシステム。
【請求項１０】
前記ネットワークがツリー・ネットワークを含む、請求項７に記載のシステム。
【請求項１１】
前記ネットワークが行ブロードキャスト・ネットワークを含む、請求項７に記載のシステム。
【請求項１２】
前記ネットワークが、各行が前記複数のコアのサブセットに接続された複数の行を含む、請求項１１に記載のシステム。
【請求項１３】
各行がブロードキャスト入力と行固有入力とのうちから選択するように動作可能な相互接続を含む、請求項１２に記載のシステム。
【請求項１４】
前記相互接続が前記グローバル・スケジューラによって動作可能な、請求項１３に記載のシステム。
【請求項１５】
前記グローバル・スケジューラが、前記ニューラル・ネットワーク・モデル・メモリの複数の不連続領域から前記シナプス重みを供給するようになされた、請求項１に記載のシステム。
【請求項１６】
システムであって、
複数の入力アクティベーションに複数のシナプス重みを付けて複数の出力アクティベーションを生成するようになされたニューラル計算ユニットと、
前記複数のシナプス重みを記憶するようになされたニューラル・ネットワーク・モデル・メモリと、
前記入力アクティベーションと前記出力アクティベーションとを記憶するようになされたアクティベーション・メモリと、
前記ニューラル計算ユニットと前記ニューラル・ネットワーク・モデル・メモリと前記アクティベーション・メモリとに動作可能に結合されたスケジューラと
を含み、
前記スケジューラが、
前記ニューラル・ネットワーク・モデル・メモリから前記ニューラル計算ユニットに前記シナプス重みをロードし、
前記アクティベーション・メモリから前記ニューラル計算ユニットに前記入力アクティベーションをロードし、
前記ニューラル計算ユニットから前記アクティベーション・メモリに前記複数の出力アクティベーションを記憶するようになされた、システム。
【請求項１７】
グローバル・スケジューラによって、ニューラル・ネットワーク・モデル・メモリから複数のコアのそれぞれにシナプス重みを供給することと、
各コアのローカル・コントローラによって、前記コアのアクティベーション・メモリから前記コアのニューラル計算ユニットに入力アクティベーションをロードすることと、
各コアのニューラル計算ユニットによって、前記複数の入力アクティベーションに前記複数のシナプス重みを付けて複数の出力アクティベーションを生成することと、
各コアの前記ローカル・コントローラによって、前記コアの前記ニューラル計算ユニットから前記コアの前記アクティベーション・メモリに前記複数の出力アクティベーションを記憶することと
を含む、方法。
【請求項１８】
前記グローバル・スケジューラによって、前記複数のコアのそれぞれにローカル・コントローラ命令を与えることをさらに含む、請求項１７に記載の方法。
【請求項１９】
前記グローバル・スケジューラが、前記複数のコアのそれぞれに同じシナプス重みを供給する、請求項１７に記載の方法。
【請求項２０】
前記グローバル・スケジューラが、前記複数のコアのそれぞれに同じローカル・コントローラ命令を与える、請求項１８に記載の方法。
【請求項２１】
前記グローバル・スケジューラが、前記コアのうちの少なくとも一部のコアに異なるシナプス重みを供給する、請求項１７に記載の方法。
【請求項２２】
前記グローバル・スケジューラが、前記コアのうちの少なくとも一部のコアに異なるローカル・コントローラ命令を与える、請求項１８に記載の方法。
【請求項２３】
前記グローバル・スケジューラが、ネットワークを介して前記シナプス重みを供給する、請求項１７に記載の方法。
【請求項２４】
前記グローバル・スケジューラが、ネットワークを介して各コアにローカル・コントローラ命令を与える、請求項１７に記載の方法。
【請求項２５】
前記グローバル・スケジューラが、前記ニューラル・ネットワーク・モデル・メモリの複数の不連続領域から前記シナプス重みを供給する、請求項１７に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示の実施形態は、ニューラル・ネットワーク処理コンポーネントに関し、より詳細には、ニューラル推論プロセッサのための中央スケジューラおよび命令ディスパッチャに関する。
【背景技術】
【０００２】
【発明の概要】
【発明が解決しようとする課題】
【０００３】
ニューラル推論プロセッサのための中央スケジューラおよび命令ディスパッチャを提供することである。
【課題を解決するための手段】
【０００４】
本開示の実施形態によると、ニューラル推論プロセッサが提供される。プロセッサは複数のコアを含む。各コアは、ニューラル計算ユニットと、アクティベーション・メモリ（activation memory）と、ローカル・コントローラとを含む。ニューラル計算ユニットは、複数の入力アクティベーションに複数のシナプス重みを付けて複数の出力アクティベーションを生成するようになされている。アクティベーション・メモリは、入力アクティベーションと出力アクティベーションとを記憶するようになされている。ローカル・コントローラは、アクティベーション・メモリからニューラル計算ユニットに入力アクティベーションをロードし、ニューラル計算ニットからアクティベーション・メモリに複数の出力アクティベーションを記憶するようになされている。プロセッサは、複数のシナプス重みを記憶するようになされたニューラル・ネットワーク・モデル・メモリを含む。プロセッサは、複数のコアに動作可能に結合されてニューラル・ネットワーク・モデル・メモリから各コアにシナプス重みを供給するようになされたグローバル・スケジューラを含む。
【０００５】
本開示の実施形態によると、ニューラル推論プロセッサが提供される。ニューラル計算ユニットが提供される。ニューラル計算ユニットは、複数の入力アクティベーションに複数のシナプス重みを付けて複数の出力アクティベーションを生成するようになされている。ニューラル・ネットワーク・モデル・メモリが、複数のシナプス重みを記憶するようになされている。アクティベーション・メモリが、入力アクティベーションと出力アクティベーションとを記憶するようになされている。スケジューラが、ニューラル計算ユニットと、ニューラル・ネットワーク・モデル・メモリと、アクティベーション・メモリとに動作可能に結合されている。スケジューラは、ニューラル・ネットワーク・モデル・メモリからニューラル計算ユニットにシナプス重みをロードし、アクティベーション・メモリからニューラル計算ユニットに入力アクティベーションをロードし、ニューラル計算ユニットからアクティベーション・メモリに複数の出力アクティベーションを記憶するようになされている。
【０００６】
本開示の実施形態によると、ニューラル推論プロセッサを動作させるための方法およびコンピュータ・プログラム製品が提供される。グローバル・スケジューラが、ニューラル・ネットワーク・モデル・メモリから複数のコアのそれぞれにシナプス重みを供給する。各コアのローカル・コントローラが、そのコアのアクティベーション・メモリからそのコアのニューラル計算ユニットに入力アクティベーションをロードする。各コアのニューラル計算ユニットが、複数の入力アクティベーションに複数のシナプス重みを付けて複数の出力アクティベーションを生成する。各コアのローカル・コントローラは、そのコアのニューラル計算ユニットからそのコアのアクティベーション・メモリに複数の出力アクティベーションを記憶する。
【０００７】
以下、本発明の実施形態について、添付図面を参照しながら例示のみを目的として説明する。
【図面の簡単な説明】
【０００８】
【図１】本開示の実施形態による例示の推論処理ユニット（ＩＰＵ）を示す図である。
【図２】図１のＩＰＵのパイプライン化タイミング図を示す図である。
【図３】本開示の実施形態によるマルチコア推論処理ユニット（ＩＰＵ）を示す図である。
【図４】本開示の実施形態によるマルチコア推論処理ユニット（ＩＰＵ）を示す図である。
【図５】本開示の実施形態による例示のＩＰＵネットワーク・オン・チップ（ＮｏＣ）を示す図である。
【図６】本開示の実施形態による例示のＩＰＵネットワーク・オン・チップ（ＮｏＣ）を示す図である。
【図７】本開示の実施形態による例示のＩＰＵネットワーク・オン・チップ（ＮｏＣ）を示す図である。
【図８】本開示の実施形態による、図７のＩＰＵの例示のメモリ構成を示す図である。
【図９】本開示の実施形態によるニューラル推論プロセッサを動作させる方法を示す図である。
【図１０】本発明の一実施形態によるコンピューティング・ノードを示す図である。
【発明を実施するための形態】
【０００９】
人工ニューロンは、出力が入力の線形結合の非線形関数である数学関数である。２つのニューロンは、一方のニューロンの出力が他方のニューロンの入力である場合に接続される。重みは、１つのニューロンの出力と別のニューロンの入力との間の接続の強度を符号化するスカラ値である。
【００１０】
ニューロンは、その入力の加重和に非線形活性化関数を適用することによって、アクティベーションと呼ばれる出力を計算する。加重和は、各入力に、対応する重みを乗じ、積を累算することによって計算される中間結果である。部分和は、入力の部分集合の加重和である。１つまたは複数の部分和を累算することによって段階的にすべての入力の加重和を計算することができる。
【００１１】
ニューラル・ネットワークは１つまたは複数のニューロンの集合である。ニューラル・ネットワークは、層と呼ばれるニューロンのグループに分けられることが多い。層は、すべてのニューロンが同じ層から入力を受信し、すべてのニューロンが同じ層に出力を送信し、典型的には類似した機能を実行する、１つまたは複数のニューロンの集合である。入力層は、ニューラル・ネットワークの外部の供給源から入力を受信する層である。出力層は、ニューラル・ネットワークの外部の出力先に出力を送信する層である。他のすべての層は、中間処理層である。多層ニューラル・ネットワークは、複数の層を備えたニューラル・ネットワークである。深層ニューラル・ネットワークは、多くの層を備えた多層ニューラル・ネットワークである。
【００１２】
テンソルは、数値の多次元配列である。テンソル・ブロックは、テンソル中の要素の連続した部分配列である。
【００１３】
各ニューラル・ネットワーク層は、重みテンソルと、パラメータ・テンソルと、入力テンソルと、出力テンソルと、中間テンソルとに関連付けられる。重みテンソルは、入力を層に接続する重みのすべてを含む。パラメータ・テンソルは、層内のニューロン活性化関数を制御するすべてのパラメータを含む。入力テンソルは、層が入力として消費するすべてのデータを含む。出力テンソルは、層が出力として計算するすべてのデータを含む。中間テンソルは、層が部分和などの中間計算値として算出する任意のデータを含む。
【００１４】
ニューラル・コアは、出力テンソルの１ブロックを計算するタイル化可能な計算ユニットである。ニューラル・コアは、Ｍ個の入力とＮ個の出力を有する。様々な実施形態において、Ｍ＝Ｎである。出力テンソル・ブロックを計算するために、ニューラル・コアは、Ｍ×１入力テンソル・ブロックにＭ×Ｎ重みテンソル・ブロックを乗じ、積を累算して、１×Ｎ中間テンソル・ブロックに格納される加重和とする。Ｕ×Ｎパラメータ・テンソル・ブロックは、１×Ｎ出力テンソル・ブロックを生成するように中間テンソル・ブロックに適用されるＮ個のニューロン活性化関数のそれぞれを指定する、Ｕ個のパラメータを含む。
【００１５】
複数のニューラル・コアをニューラル・コア配列にタイル化することができる。一部の実施形態では、配列は２次元である。
【００１６】
ニューラル・ネットワーク・モデルは、ニューロン間の接続のグラフと、すべてのニューロンの重みと活性化関数パラメータとを含む、ニューラル・ネットワークによって実行される計算全体をまとめて指定する定数のセットである。トレーニングは、所望の機能を実行するようにニューラル・ネットワーク・モデルを修正するプロセスである。推論は、ニューラル・ネットワーク・モデルを修正せずに、入力にニューラル・ネットワークを適用して出力を生成するプロセスである。
【００１７】
推論処理ユニットは、ニューラル・ネットワーク推論を実行するプロセッサのカテゴリである。ニューラル推論チップは、推論処理ユニットの特定の物理的実態である。
【００１８】
図１を参照すると、本開示の実施形態による例示の推論処理ユニット（InferenceProcessing Unit：ＩＰＵ）が示されている。ＩＰＵ１００は、ニューラル・ネットワーク・モデルのためのメモリ１０１を含む。上述のように、ニューラル・ネットワーク・モデルは、計算されるニューラル・ネットワークのためのシナプス重みを含むこともできる。ＩＰＵ１００は、一過性メモリであってよいアクティベーション・メモリ１０２を含む。アクティベーション・メモリ１０２は、入力領域と出力領域とに分割可能であり、処理のためのニューロン・アクティベーションを記憶する。ＩＰＵ１００は、モデル・メモリ１０１からニューラル・ネットワーク・モデルがロードされるニューラル計算ユニット１０３を含む。各計算ステップに先だって、アクティベーション・メモリ１０２から入力アクティベーションが供給される。ニューラル計算ユニット１０３からの出力は、同じかまたは別のニューラル計算ユニットでの処理のために、アクティベーション・メモリ１０２に書き戻される。
【００１９】
様々な実施形態において、ＩＰＵ１００にはスケジューラ１０４が含まれる。このような実施形態では、ＩＰＵにおけるすべての動作がスケジューラによって指示される。後述するように、様々な実施形態において、中央スケジューラまたは分散スケジューラあるいはその両方のスケジューラを備えることができる。グローバル・スケジューラはチップ・マイクロエンジンと呼ばれることがあり、ローカル・スケジューラはコア・マイクロエンジンまたはローカル・コントローラと呼ばれることがある。様々な実施形態において、スケジューラは１つもしくは複数のマイクロエンジン、マイクロコントローラ、状態マシン、ＣＰＵ、またはその他のコントローラを含む。
【００２０】
図２を参照すると、図１のＩＰＵのパイプライン化タイミング図が示されている。１１１で、モデル・メモリ１０１からニューラル計算ユニット１０３に計算命令がロードされる。１１２で、モデル・メモリ１０１からニューラル計算ユニット１０３にパラメータ（例えばニューラル・ネットワーク／シナプス重み）がロードされる。１１３で、アクティベーション・メモリ１０２からニューラル計算ユニット１０３にニューラル・ネットワーク・アクティベーション・データがロードされる。上述のように、アクティベーションは、モデルによって定義されている特定のニューラル・ネットワークの軸索に供給され、同じかもしくは別のニューラル計算ユニットから、またはシステムの外部から発生し得る。１１４で、ニューラル計算ユニット１０３が、出力ニューロン・アクティベーションを生成するために計算を行う。具体的には、計算は、入力アクティベーションに入力シナプス重みを付けることを含む。このような計算を行うために、コンピュータによる樹状突起を含む様々な方法と、ベクトル乗算ユニットが利用可能であることがわかるであろう。１１５で、計算の結果がアクティベーション・メモリ１０２に記憶される。図のように、これらの段階は、ニューラル計算ユニットの効率的な使用を行うために、パイプライン化が可能である。
【００２１】
図３を参照すると、本開示の実施形態によるマルチコア推論処理ユニット（ＩＰＵ）が示されている。ＩＰＵ３００は、ニューラル・ネットワーク・モデルのためのモデル・メモリ３０１を含む。上述のように、ニューラル・ネットワーク・モデルは、計算されるニューラル・ネットワークのためのシナプス重みを含むこともできる。ＩＰＵ３００は、一過性メモリであってよいアクティベーション・メモリ３０２を含む。アクティベーション・メモリ３０２は、入力領域と出力領域とに分割可能であり、処理のためのニューロン・アクティベーションを記憶する。ＩＰＵ３００は、複数のコア３０３を含む。各コア３０３は、モデル・メモリ３０１からニューラル・ネットワーク・モデルがロードされるニューラル計算ユニット３３３を含む。各コアは、ローカル・アクティベーション・メモリ３３２も含む。各計算ステップに先だって、ローカル・アクティベーション・メモリ３３２から入力アクティベーションが供給される。ニューラル計算ユニット３３３からの出力は、同じかまたは別のニューラル計算ユニットでの処理のためにアクティベーション・メモリ３３２に書き戻される。
【００２２】
様々な実施形態において、ＩＰＵ３００にグローバル・スケジューラ３０４が含まれる。様々な実施形態において、各コア３０３にローカル・コア・コントローラ３３４が含まれる。このような実施形態では、動作の指示がグローバル・スケジューラ（チップ・マイクロエンジン）とローカル・コア・コントローラ（コア・マイクロエンジン）との間で共有される。具体的には、３１１で、グローバル・スケジューラ３０４によってモデル・メモリ３０１から各コア３０３上のニューラル計算ユニット３３３に計算命令がロードされる。３１２で、グローバル・スケジューラ３０４によってモデル・メモリ３０１から各コア３０３上のニューラル計算ユニット３３３にパラメータ（例えばニューラル・ネットワーク／シナプス重み）がロードされる。３１３で、ローカル・コア・コントローラ３３４によって、ローカル・アクティベーション・メモリ３３２から各コア３０３上のニューラル計算ユニット３３３にニューラル・ネットワーク・アクティベーション・データがロードされる。上述のように、アクティベーションは、モデルによって定義されている特定のニューラル・ネットワークの軸索に供給され、同じかもしくは別のニューラル計算ユニットから、またはシステムの外部から発生し得る。３１４で、ニューラル計算ユニット３３３が、ローカル・コア・コントローラ３３４による指示に従って出力ニューロン・アクティベーションを生成するために計算を行う。具体的には、計算は、入力アクティベーションに入力シナプス重みを付けることを含む。このような計算を行うために、コンピュータによる樹状突起を含む様々な方法と、ベクトル乗算ユニットが利用可能であることがわかるであろう。３１５で、ローカル・コア・コントローラ３３４による指示に従って計算の結果がローカル・アクティベーション・メモリ３３２に記憶される。上述のように、これらの段階は、各コア上のニューラル計算ユニットの効率的な使用を行うために、パイプライン化が可能である。また所与のニューラル・ネットワークの要件に依って、ローカル・アクティベーション・メモリ３３２からグローバル・アクティベーション・メモリ３０２に入力および出力が転送可能であることもわかるであろう。
【００２３】
したがって、本開示は、推論処理ユニット（ＩＰＵ）における動作の実行時スケジューリングを実現する。実施形態によっては、動作スケジューラは集中化（単一スケジューラ）される。実施形態によっては、ＩＰＵ計算は分散される（コアの配列によって実行される）。実施形態によっては、動作の実行時スケジューリングが階層的であり、中央スケジューラと分散スケジューラの両方が関与する。
【００２４】
スケジューラまたは複数のスケジューラが、ＩＰＵにおけるすべての動作の実行を指示する。各スケジューラ命令は、いくつかの部分動作（例えばアドレス生成、ロード、計算、記憶など）に対応する。分散の場合、コア・マイクロエンジン（例えば３３４）上でコア・マイクロコードが実行される。コア・マイクロコードは、完全単一テンソル演算を実行する命令を含む。例えば、重みテンソルとデータ・テンソルとの畳み込みである。単一コアの環境では、コア・マイクロコードは、データ・テンソル（および部分和）のローカルで記憶されている部分集合に対する単一のテンソル演算を実行する命令を含む。チップ・マイクロエンジン（例えば３０４）上でチップ・マイクロコードが実行される。マイクロコードは、ニューラル・ネットワークにおけるテンソル演算のすべてを実行する命令を含む。
【００２５】
図４を参照すると、本開示の実施形態によるマルチコア推論処理ユニット（ＩＰＵ）が示されている。ＩＰＵ４００は、ニューラル・ネットワーク・モデルのためのモデル・メモリ４０１を含む。上述のように、ニューラル・ネットワーク・モデルは、計算されるニューラル・ネットワークのためのシナプス重みを含むこともできる。実施形態によっては、モデル・メモリ４０１は、シナプス重みおよび命令に別々に割り当てることができる１つまたは複数の物理メモリを含む。ＩＰＵ４００は、一過性メモリであってよいアクティベーション・メモリ４０２を含む。アクティベーション・メモリ４０２は、入力領域と出力領域とに分割可能であり、処理のためのニューロン・アクティベーションを記憶する。ＩＰＵ４００は、複数のコア４０３を含む。各コア４０３は、図３に関連して上述したように構成され得る。
【００２６】
ＩＰＵ４００は、１つまたは複数のネットワーク・オン・チップ（ＮｏＣ）４０４を含む。上述のように、ネットワーク重みと命令がメモリ４０１に記憶される。各コアを構成するために、スケジューラ（チップ・マイクロエンジン）４０４が読み出しアドレスを生成し、（重み／命令）パラメータ・メモリ４０１から読み出しトランザクションを作成する。読み出された重みと命令はＮｏＣ４０４を介して宛先コア（例えば４０３）に送られる。各コアで、コアのローカル・データに対して、分配された重みのセットを使用して分配された命令が実行される。
【００２７】
したがって、一部の実施形態では、スケジューラがパラメータ・メモリからネットワーク・オン・チップ（ＮｏＣ）を介して重みブロックを分配する。実施形態によっては、スケジューラは、ネットワーク・オン・チップ（ＮｏＣ）を介して命令メモリから命令を分配する。実施形態によっては、命令はメモリ操作と、計算操作と、制御操作とを含む。実施形態によっては、１つのＮｏＣが設けられる。実施形態によっては、複数のＮｏＣが設けられる。このような一部の実施形態では、重みが命令とは異なるＮｏＣを介して分配される。実施形態によっては、命令メモリがパラメータ・メモリと同じ物理メモリであり、一部の実施形態では別々である。
【００２８】
図５を参照すると、本開示の実施形態による例示のＩＰＵネットワーク・オン・チップ（ＮｏＣ）が示されている。ＩＰＵ４００はツリー・ネットワーク・オン・チップ５０４を含む。このようなツリー・ネットワークは、ＩＰＵに含まれる各コアに重みと命令を分配するために使用することができることがわかるであろう。
【００２９】
具体的には、一部の実施形態において、ＩＰＵは、単一命令複数データ（SingleInstruction, Multiple Data：ＳＩＭＤ）モードで動作することができる。そのような実施形態では、すべてのコアに同じ重みと命令が分配される。したがって、各コアは異なるアクティベーション・データを有する一方、重みおよび命令はすべて各コアで同じである。
【００３０】
実施形態によっては、ＩＰＵは複数命令複数データ（MultipleInstructions, Multiple Data：ＭＩＭＤ）モードで動作することができる。そのような実施形態では、異なるコアに異なる重みおよび命令が分配される。各コアは、上述のように異なるアクティベーション・データを有する。そのような一部のＭＩＭＤ実施形態では、スケジューラは各コアに異なる重みおよび命令を順次に送る。この手法は、重みおよび命令が頻繁に分配される必要がある場合、比較的低いスループットを有する。この手法は、重みおよび命令が頻繁に分配されない場合、適度なスループットを有し得る。
【００３１】
図６を参照すると、本開示の実施形態による例示のＩＰＵネットワーク・オン・チップ（ＮｏＣ）が示されている。ＩＰＵ６００は、列ブロードキャスト・ネットワーク・オン・チップ６０４を含む。ネットワーク６０４は、各行ネットワークがＩＰＵ６００内のコアの行を接続する複数の行ネットワーク６４１．．．６４４を含む。このような実施形態は、単一スケジューラ、並列した複数スケジューラ、または単一のスケジューラが並列した複数のスケジューラを駆動する階層的構成とともに使用するのに適する。
【００３２】
実施形態によっては、ＩＰＵは複数命令複数データ（ＭＩＭＤ）モードで動作することができる。そのような実施形態では、各コアが異なるアクティベーション・データを有する。コアの各行内では重みおよび命令が同じである。しかし、行間では、コアの各行は異なる重みまたは命令あるいはその両方を有する。実施形態によっては、各並列行ネットワーク６４１．．．６４４が、対応するコア行のための重みおよび命令を保持する対応するメモリのバンク６１１．．．６１４を有する。したがって、（６１５に強調表記された並列アドレスによって示すように）各バンク６１１．．．６１４から同じデータを読み出すことによってすべてのコアに同じ重みおよび命令を送ることができる。（６１６に強調表記されたアドレスによって示すように）各バンク６１１．．．６１４から異なるデータを読み出すことによって、各行のコアに異なる重みおよび命令を送ることができる。
【００３３】
実施形態によっては、ＩＰＵ６００においてＭＩＭＤモードを実装するために単一スケジューラが使用される。そのような実施形態では、（６１５に示すように）すべてのメモリ・バンクにわたって同じソース・アドレスを使用することができる。あるいは、（６１６に示すように）各メモリ・バンクに異なるソース・アドレスを使用することもできる。そのような一部の実施形態では、スケジューラ・コードは、各メモリ・バンクのアドレスを含む。他のそのような実施形態では、スケジューラ・コードは、各メモリ・バンクのアドレスを記憶するルック・アップ・テーブル（ＬＵＴ）にインデックス付けする（index into）ために単一のアドレスを使用する。
【００３４】
実施形態によっては、ＩＰＵ６００においてＭＩＭＤモードを実装するために複数のスケジューラが使用される。そのような一部の実施形態では、１つのバンク６１１．．．６１４につき１つのスケジューラが設けられる。各バンク・スケジューラは、独立したマイクロコードを実行し、対応するメモリ・バンクのソース・アドレスを生成する。
【００３５】
実施形態によっては、ＩＰＵ６００においてＭＩＭＤモードを実装するために階層的スケジューラが使用される。実施形態によっては、１つのバンクにつき１つのスケジューラが設けられ、管理スケジューラが設けられる。このような実施形態では、各バンク・スケジューラが独立したマイクロコードを実行し、対応するメモリ・バンクのソース・アドレスを生成する。管理スケジューラは、バンク・スケジューラ間で動作を同期させる。
【００３６】
図７を参照すると、本開示の実施形態による例示のＩＰＵネットワーク・オン・チップ（ＮｏＣ）が示されている。ＩＰＵ７００は、行ブロードキャスト・ネットワーク・オン・チップ７０４を含む。ネットワーク７０４は、各行ネットワークがＩＰＵ７００内のコアの行を接続する複数の行ネットワーク７４１．．．７４４を含む。行ネットワーク７４１．．．７４４は、バンク・バイパス・バス７０５とグローバル・バス７０６とに結合されている。行分配ネットワーク７４１．．．７４４は、バンク・バイパス・バス７０５から重みおよび命令を取得することができ、それによって、対応する各行に関連付けられたメモリ・バンク７１１．．．７１４から入力を得る。具体的には、バンク・バイパス・バスを、行ごとにバンク入力とグローバル入力との間で切り替えることができる。行分配ネットワーク７１４．．．７４４は、メモリ・バンク７１１．．．７１４のいずれからでも入力を引き出すことができるグローバル・バスから重みおよび命令を取得することができる。具体的には、グローバル・バスを様々なバンク間で切り替えることができる。このようにして、各行が行固有の入力または選択されたグローバル入力を受け取ることができる。このような切り替えには、当技術分野で知られている様々なスイッチおよびゲートを含む様々な相互接続が適することがわかるであろう。
【００３７】
このような実施形態は、ＳＩＭＤモードとＭＩＭＤモードの両方の動作に適合する。様々な実施形態において、ＳＩＭＤ動作またはＭＩＭＤ動作がプログラム可能である。所与のマイクロコード命令について、システムはＳＩＭＤまたはＭＩＭＤであり得る（ただし両方は不可）。同様に、マイクロコード命令ごとにその後にＳＩＭＤ動作モードとＭＩＭＤ動作モード（またはその逆）とを切り替えることができる。
【００３８】
図８を参照すると、本開示の実施形態による、図７のＩＰＵの例示のメモリ構成が示されている。メモリ・バンク８１１が複数のサブバンク８１５に分割されている。各サブバンクからは、不連続な記憶場所８１６からデータが選択される。このようにして、メモリ内の不連続な場所から引き出された複数のサブベクトルからシナプス重みのブロックを組み立てることができる。図のように、異なるサブバンクがｗｂ個のサブベクトルのそれぞれを取得する。チップ・マイクロエンジンは、例えば直接、またはアルゴリズムにより、またはＬＵＴを使用して、サブバンクのそれぞれをアドレスする。
【００３９】
重みブロックと呼ばれることがあるニューラル・ネットワーク重みは、行列Ｗとして表すことができる。実施形態によっては、Ｗは大きさがＢ×Ｂであり、Ｂはブロック・サイズと呼ばれる。このＷ行列は、各々が大きさが１×ＢであるＢ個のサブベクトルｗｂに分解することができる。Ｗ行列をメモリ内の連続した場所から読み出す代わりに、Ｗ行列をメモリ内の不連続場所から読み出されるｗｂ個のサブベクトルから構築することができる。ｗｂ個のサブベクトルがいくつかのＷ重みブロックにわたって共通している場合、ｗｂの１つのコピーのみを重みメモリに記憶するだけで済む。これにより、必要な物理重みメモリ量の低減が可能になり、同じ物理重みメモリ量に記憶することができる重みブロックＷの有効数を増加させる。
【００４０】
例えば、サイズ４の重み行列Ｗを、式１に示すようなベクトルの構成として定義することができる。
【００４１】
【数１】
2021521539.tif 000003
【００４２】
図９を参照すると、本開示の実施形態によるニューラル推論プロセッサを動作させる方法が示されている。９０１で、グローバル・スケジューラがニューラル・ネットワーク・モデル・メモリから複数のコアのそれぞれにシナプス重みを供給する。９０２で、各コアのローカル・コントローラが、そのコアのアクティベーション・メモリからそのコアのニューラル計算ユニットに入力アクティベーションをロードする。９０３で、各コアのニューラル計算ユニットが、複数の入力アクティベーションに複数のシナプス重みを付けて複数の出力アクティベーションを生成する。９０４で、各コアのローカル・コントローラが、そのコアのニューラル計算ユニットからそのコアのアクティベーション・メモリに複数の出力アクティベーションを記憶する。
【００４３】
次に図１０を参照すると、コンピューティング・ノードの一例の略図が示されている。コンピューティング・ノード１０は、適合するコンピューティング・ノードの一例に過ぎず、本明細書に記載の本発明の実施形態の使用または機能の範囲に関していかなる限定も示唆することを意図していない。いずれにしても、コンピューティング・ノード１０は、実装可能であるか、または上述の機能のいずれかを実行することができるか、あるいはその両方である。
【００４４】
コンピューティング・ノード１０には、多くの他の汎用または専用コンピューティング・システム環境または構成とともに動作可能なコンピュータ・システム／サーバ１２がある。コンピュータ・システム／サーバ１２とともに使用するのに適合し得る周知のコンピュータ・システム、環境または構成あるいはこれらの組合せの例には、パーソナル・コンピュータ・システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、ハンドヘルド・デバイスまたはラップトップ・デバイス、マルチプロセッサ・システム、マイクロプロセッサ・ベースのシステム、セット・トップ・ボックス、プログラマブル消費者電子機器、ネットワークＰＣ、ミニコンピュータ・システム、メインフレーム・コンピュータ・システム、および、上記のシステムまたはデバイスなどのうちのいずれかを含む分散クラウド・コンピューティング環境などがあるが、これらには限定されない。
【００４５】
コンピュータ・システム／サーバ１２について、コンピュータ・システムによって実行されるプログラム・モジュールなどのコンピュータ・システム実行可能命令の一般的な文脈で説明している場合がある。一般に、プログラム・モジュールは、特定のタスクを実行するか、または特定の抽象データ・タイプを実装する、ルーチン、プログラム、オブジェクト、コンポーネント、ロジック、データ構造などを含むこともできる。コンピュータ・システム／サーバ１２は、通信ネットワークを介して接続されたリモート処理デバイスによってタスクが実行される分散クラウド・コンピューティング環境で実施されてもよい。分散クラウド・コンピューティング環境では、プログラム・モジュールを、メモリ・ストレージ・デバイスを含むローカルとリモートの両方のコンピュータ・システム記憶媒体に格納することができる。
【００４６】
図１０に示すように、コンピューティング・ノード１０におけるコンピュータ・システム／サーバ１２は、汎用コンピューティング・デバイスの形態で示されている。コンピュータ・システム／サーバ１２のコンポーネントは、１つまたは複数のプロセッサまたは処理ユニット１６と、システム・メモリ２８と、システム・メモリ２８を含む様々なシステム・コンポーネントをプロセッサ１６に接続するバス１８とを含むこともできるがこれらには限定されない。
【００４７】
バス１８は、様々なバス・アーキテクチャのうちのいずれかのアーキテクチャを使用する、メモリ・バスまたはメモリ・コントローラ、ペリフェラル・バス、アクセラレーテッド・グラフィクス・ポート、およびプロセッサ・バスまたはローカル・バスを含む、数種類のバス構造のうちのいずれかのうちの１つまたは複数に相当する。例として、そのようなアーキテクチャとしては、業界標準アーキテクチャ（Industry Standard Architecture（ＩＳＡ））バス、マイクロ・チャネル・アーキテクチャ（Micro Channel Architecture（ＭＣＡ））バス、拡張（Enhanced）ＩＳＡ（ＥＩＳＡ）バス、ビデオ・エレクトロニクス・スタンダーズ・アソシエーション（Video Electronics Standards Association（ＶＥＳＡ））ローカル・バス、およびペリフェラル・コンポーネント・インターコネクト（Peripheral Component Interconnect（ＰＣＩ））バスがあるが、これらには限定されない。
【００４８】
コンピュータ・システム／サーバ１２は、典型的には様々なコンピュータ・システム可読記憶媒体を含む。そのような媒体は、コンピュータ・システム／サーバ１２がアクセスすることができる任意の利用可能な媒体であってよく、揮発性媒体と不揮発性媒体の両方と、取り外し可能媒体と取り外し不能媒体とを含む。
【００４９】
システム・メモリ２８は、ランダム・アクセス・メモリ（ＲＡＭ）３０またはキャッシュ・メモリ３２あるいはその両方などの、揮発性メモリの形態のコンピュータ・システム可読記憶媒体を含むこともできる。コンピュータ・システム／サーバ１２は、他の取り外し可能／取り外し不能、揮発性／不揮発性のコンピュータ・システム記憶媒体をさらに含むこともできる。一例に過ぎないが、ストレージ・システム３４を、取り外し不能な不揮発性磁気媒体（図示されておらず、一般に「ハード・ドライブ」と呼ばれる）の読み書きのために設けることができる。図示されていないが、取り外し可能な不揮発性磁気ディスク（例えば「フロッピィ・ディスク」）の読み書きのための磁気ディスク・ドライブと、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭまたはその他の光学媒体などの、取り外し可能な不揮発性光ディスクの読み書きのための光ディスク・ドライブとを備えることができる。そのような場合、それぞれを１つまたは複数のデータ・メディア・インターフェースによってバス１８に接続することができる。以下でさらに図示し、説明するように、メモリ２８は、本発明の実施形態の機能を実施するように構成された１組の（例えば少なくとも１つの）プログラム・モジュールを有する少なくとも１つのプログラム製品を含むこともできる。
【００５０】
一例として、これには限らないが、１組の（例えば少なくとも１つの）プログラム・モジュール４２を有するプログラム／ユーティリティ４０と、オペレーティング・システムと、１つまたは複数のアプリケーション・プログラムと、その他のプログラム・モジュールと、プログラム・データとをメモリ２８に記憶することができる。オペレーティング・システム、１つまたは複数のアプリケーション・プログラム、その他のプログラム・モジュール、およびプログラム・データ、またはその任意の組合せの各々が、ネットワーキング環境の実装形態を含むこともできる。プログラム・モジュール４２は、一般に、本明細書に記載の本発明の実施形態の機能または方法あるいはその両方を実施する。
【００５１】
コンピュータ・システム／サーバ１２は、キーボード、ポインティング・デバイス、ディスプレイ２４など、ユーザがコンピュータ・システム／サーバ１２と対話することができるようにする１つもしくは複数のデバイス、または、コンピュータ・システム／サーバ１２が１つもしくは複数の他のコンピューティング・デバイスと通信することができるようにする任意のデバイス（例えばネットワーク・カード、モデムなど）、あるいはその組合せなどの、１つまたは複数の外部デバイス１４とも通信することができる。このような通信は、入出力（Ｉ／Ｏ）インターフェース２２を介して行うことができる。さらに、コンピュータ・システム／サーバ１２は、ローカル・エリア・ネットワーク（ＬＡＮ）、汎用ワイド・エリア・ネットワーク（ＷＡＮ）、またはパブリック・ネットワーク（例えばインターネット）、あるいはその組合せなどの１つまたは複数のネットワークと、ネットワーク・アダプタ２０を介して通信することができる。図のように、ネットワーク・アダプタ２０は、バス１８を介してコンピュータ・システム／サーバ１２の他のコンポーネントと通信する。なお、図示されていないが、他のハードウェア・コンポーネントまたはソフトウェア・コンポーネントあるいはその両方もコンピュータ・システム／サーバ１２とともに使用することができる。例としては、マイクロコード、デバイス・ドライバ、冗長処理ユニット、外部ディスク・ドライブ・アレイ、ＲＡＩＤシステム、テープ・ドライブ、およびデータ・アーカイブ・ストレージ・システムなどが含まれるが、これらには限定されない。
【００５２】
本発明は、システム、方法またはコンピュータ・プログラム製品あるいはこれらの組合せとすることができる。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実施させるためのコンピュータ可読プログラム命令が記憶されたコンピュータ可読記憶媒体（または複数の媒体）を含むこともできる。
【００５３】
コンピュータ可読記憶媒体は、命令実行デバイスによって使用される命令を保持し、記憶することができる有形デバイスとすることができる。コンピュータ可読記憶媒体は、例えば、電子ストレージ・デバイス、磁気ストレージ・デバイス、光学式ストレージ・デバイス、電磁ストレージ・デバイス、半導体ストレージ・デバイス、またはこれらの任意の適合する組合せであってよいが、これらには限定されない。コンピュータ可読記憶媒体のより具体的な例の非網羅的なリストには以下のものが含まれる。すなわち、可搬コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、消去可能プログラマブル読み取り専用メモリ（ＥＰＲＯＭまたはフラッシュ・メモリ）、スタティック・ランダム・アクセス・メモリ（ＳＲＡＭ）、可搬コンパクト・ディスク読み取り専用メモリ（ＣＤ−ＲＯＭ）、デジタルバーサタイルディスク（ＤＶＤ）、メモリ・スティック、フロッピィ・ディスク、パンチカードまたは命令が記録された溝内の隆起構造などの機械的に符号化されたデバイス、およびこれらの任意の適合する組合せが含まれる。本明細書で使用されるコンピュータ可読記憶媒体とは、電波またはその他の自由に伝播する電磁波、導波路またはその他の伝送媒体を伝播する電磁波（例えば光ファイバ・ケーブルを通る光パルス）、または電線を介して伝送される電気信号などの、一過性の信号自体であると解釈すべきではない。
【００５４】
本明細書に記載のコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング／処理デバイスに、または、ネットワーク、例えばインターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、または無線ネットワークあるいはこれらの組合せを介して外部コンピュータまたは外部ストレージ・デバイスにダウンロードすることができる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、交換機、ゲートウェイ・コンピュータ、またはエッジ・サーバあるいはこれらの組合せを含むこともできる。各コンピューティング／処理デバイスにおけるネットワーク・アダプタ・カードまたはネットワーク・インターフェースが、ネットワークからコンピュータ可読プログラム命令を受信し、それらのコンピュータ可読プログラム命令を、それぞれのコンピューティング／処理デバイス内のコンピュータ可読記憶媒体への記憶のために転送する。
【００５５】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、インストラクション・セット・アーキテクチャ（ＩＳＡ）命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、または、Ｓｍａｌｌｔａｌｋ（Ｒ）、Ｃ＋＋などのオブジェクト指向プログラミング言語、および「Ｃ」プログラミング言語、または同様のプログラム言語などの従来の手続き型プログラミング言語を含む、１つまたは複数のプログラミング言語の任意の組合せで書かれたソース・コードもしくはオブジェクト・コードのいずれかとすることができる。コンピュータ可読プログラム命令は、スタンドアロン・ソフトウェア・パッケージとして全体がユーザのコンピュータ上でもしくは一部がユーザのコンピュータ上で、一部がユーザのコンピュータ上で一部がリモート・コンピュータ上で、または全体がリモート・コンピュータもしくはサーバ上で実行されてもよい。後者の場合、リモート・コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）もしくはワイド・エリア・ネットワーク（ＷＡＮ）を含む、任意の種類のネットワークを介してユーザのコンピュータに接続することができ、または接続は（例えば、インターネット・サービス・プロバイダを使用してインターネットを介して）外部コンピュータに対して行ってもよい。実施形態によっては、本発明の態様を実行するために、例えばプログラマブル・ロジック回路、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）、またはプログラマブル・ロジック・アレイ（ＰＬＡ）を含む電子回路が、コンピュータ可読プログラム命令の状態情報を使用して電子回路をパーソナライズすることにより、コンピュータ可読プログラム命令を実行することができる。
【００５６】
本発明の態様について、本発明の実施形態による方法、装置（システム）、およびコンピュータ・プログラム製品を示すフローチャート図またはブロック図あるいはその両方を参照しながら本明細書で説明している。フローチャート図またはブロック図あるいはその両方の図の各ブロックおよび、フローチャート図またはブロック図あるいはその両方の図のブロックの組合せは、コンピュータ可読プログラム命令によって実装可能であることはわかるであろう。
【００５７】
これらのコンピュータ可読プログラム命令は、コンピュータまたはその他のプログラマブル・データ処理装置のプロセッサにより実行される命令が、フローチャートまたはブロック図あるいはその両方のブロックで規定されている機能／動作を実装する手段を形成するように、汎用コンピュータ、専用コンピュータ、またはその他のプログラマブル・データ処理装置のプロセッサに供給されて、マシンを作り出すものであってよい。これらのコンピュータ可読プログラム命令は、命令が記憶されたコンピュータ可読記憶媒体が、フローチャートまたはブロック図あるいはその両方のブロックで規定されている機能／動作の態様を実装する命令を含む製造品を含むように、コンピュータ可読記憶媒体に記憶され、コンピュータ、プログラマブル・データ処理装置、またはその他の装置あるいはこれらの組合せに対して特定の方式で機能するように指示することができるものであってもよい。
【００５８】
コンピュータ可読プログラム命令は、コンピュータ、その他のプログラマブル装置またはその他のデバイス上で実行される命令がフローチャートまたはブロック図あるいはその両方のブロックで規定されている機能／動作を実装するように、コンピュータ実装プロセスを生成するために、コンピュータ、その他のプログラマブル・データ処理装置、またはその他のデバイスにロードされ、コンピュータ、その他のプログラマブル装置、またはその他のデバイス上で一連の動作を実行させるものであってもよい。
【００５９】
図面中のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法およびコンピュータ・プログラム製品の可能な実装形態のアーキテクチャ、機能および動作を示す。なお、フローチャートまたはブロック図の各ブロックは、規定されているロジック機能を実装するための１つまたは複数の実行可能命令を含む、命令のモジュール、セグメント、または部分を表すことがある。別の一部の実装形態では、ブロックに記載されている機能は、図に記載されている順序とは異なる順序で行われてもよい。例えば、連続して示されている２つのブロックは、関与する機能に依って、実際には実質的に並行して実行されてよく、またはそれらのブロックは場合によっては逆の順序で実行されてもよい。また、ブロック図またはフローチャート図あるいはその両方の図の各ブロック、およびブロック図またはフローチャート図あるいはその両方の図のブロックの組合せは、規定されている機能もしくは動作を実行する専用ハードウェア・ベースのシステムによって実装可能であるか、または専用ハードウェアとコンピュータ命令との組合せとして機能するかもしくは実施することができることもわかるであろう。
【００６０】
本発明の様々な実施形態の説明を例示のために示したが、これらは網羅的であること、または開示されている実施形態に限定することを意図したものではない。記載されている実施形態の範囲および思想から逸脱することなく、多くの変更および変形が当業者には明らかであろう。本明細書で使用されている用語は、実施形態の原理、実際の適用、もしくは市場に見られる技術に優る技術的改良を最もよく説明するために、または当業者が本明細書で開示されている実施形態を理解することができるように選定された。
【図１】
2021521539.tif 000004
【図２】
2021521539.tif 000005
【図３】
2021521539.tif 000006
【図４】
2021521539.tif 000007
【図５】
2021521539.tif 000008
【図６】
2021521539.tif 000009
【図７】
2021521539.tif 000010
【図８】
2021521539.tif 000011
【図９】
2021521539.tif 000012
【図１０】
2021521539.tif 000013
【国際調査報告】
2021521539.tif 000014
2021521539.tif 000015