(57)【特許請求の範囲】
【請求項１】
方法であって、
プロセッサ要素の各ファブリックにおいて、ファブリックパケットを前記プロセッサ要素のうちの他の要素に選択的に通信する工程であって、各プロセッサ要素は、ファブリックルータと、データフローベースの処理及び命令ベースの処理を実行することができる計算エンジンとを有するものである、前記通信する工程と、
各計算エンジンにおいて、前記計算エンジンが受信する少なくとも一部のファブリックパケットの仮想チャネル指定子及びタスク指定子に従って前記処理を選択的に実行する工程と
を有し、
前記命令ベースの処理は、前記タスク指定子に従って実行されるものである
方法。
【請求項２】
請求項１記載の方法において、
各計算エンジンは、予め定義されたネイティブ命令セットのコードから選択された基本命令の受信に応答して、対応する予め定義された基本演算セットを実行するように構成され、さらに、
トレーニング作業負荷を処理する工程は、
前記ネイティブ命令セットから選択される機械語の第１のセットであって、ニューロンの少なくとも一部の、前記プロセッサ要素の前記計算エンジンに対するマッピングを実行するものであり、前記マッピングは、少なくとも１つの部分的なニューロンの重みを管理する工程を含むものである、前記機械語の第１のセットと、
前記ネイティブ命令セットから選択される機械語の第２のセットであって、前記少なくとも部分的なニューロンの重みに少なくとも部分的に基づいて、論理順方向にアクティベーションを伝搬させる順方向パスを実行するものであり、前記順方向パスは入力サンプルに応答して開始されるものである、前記機械語の第２のセットと、
前記ネイティブ命令セットから選択される機械語の第３のセットであって、論理逆方向にデルタパスを実行してデルタを生成するものであり、前記デルタパスは前記順方向パスの完了に応答して開始される、前記機械語の第３のセットと、
チェインパスを実行して前記デルタに基づいて勾配を計算する、前記ネイティブ命令セットから選択される機械語の第４のセットと、
所定の学習ルールに従って、且つ少なくとも部分的に前記デルタに基づいて、前記少なくとも１つの部分的なニューロンの重みの選択的更新を実行する、前記ネイティブ命令セットから選択される機械語の第５のセットと
を有し、
各計算エンジンは、前記少なくとも１つ部分的なニューロンの重みのための記憶装置を有するものである
方法。
【請求項３】
請求項２記載の方法において、前記マッピングは、前記ファブリックを初期化してニューラルネットワークの複数の層に分割する工程に従って実行されるものであり、前記ニューロンは前記ニューラルネットワークの複数のニューロンのうちの第１のニューロンであり、前記第１のニューロンは前記複数の層のうちの第１の層に含まれ、前記複数のニューロンのそれぞれは、前記ファブリックの複数のプロセッサ要素にわたり分散してマッピングされるものである方法。
【請求項４】
請求項３記載の方法において、前記複数の層は、論理ファブリックパイプライン段を有する論理ファブリックパイプラインとして動作し、各論理ファブリックパイプライン段は、各層における全てのパスの完了を含み、前記各層における完了には、同じ時間量を有する時間ステップが設定されるものである方法。
【請求項５】
請求項２記載の方法において、さらに、
集合的にトレーニングセットを構成する複数の入力サンプルの各々について、前記トレーニング作業負荷の反復を実行する工程を有するものである方法。
【請求項６】
請求項５記載の方法において、さらに、
各入力サンプルについて、前記入力サンプルに対応する前記順方向パス、前記デルタパス、及び前記チェインパスの完了に応答して、前記所定の学習ルールに従って前記少なくとも１つの部分的なニューロンの重みを選択的に更新する工程を有するものである方法。
【請求項７】
請求項６記載の方法において、さらに、
各順方向パスについて、前記少なくとも１つの部分的なニューロンの重みの最新の選択的更新によって提供される重み情報を選択的に使用する工程を有するものである方法。
【請求項８】
請求項７記載の方法において、さらに、
少なくとも部分的に第１の部分的なニューロンの重みに基づいて再計算されたアクティベーションに少なくとも部分的に基づいて、各入力サンプルの前記デルタパス及び前記チェインパスを選択で実行する工程を有するものである方法。
【請求項９】
システムであって、
プロセッサ要素の各ファブリックにおいて、ファブリックパケットを前記プロセッサ要素のうちの他の要素に選択的に通信する手段であって、各プロセッサ要素は、ファブリックルータと、データフローベース及び命令ベースの処理を実行することができる計算エンジンとを有するものである、前記通信する手段と、
各計算エンジンにおいて、前記計算エンジンが受信する少なくとも一部のファブリックパケットの仮想チャネル指定子及びタスク指定子に従って前記処理を選択的に実行する手段と
を有し、
前記命令ベースの処理は、前記タスク指定子に従って実行されるものである
システム。
【請求項１０】
請求項９記載のシステムにおいて、
各計算エンジンは、予め定義されたネイティブ命令セットのコードのから選択された基本命令の受信に応答して、対応する予め定義された基本演算セットを実行するように構成され、前記システムは、さらに、
トレーニング作業負荷を有し、
前記トレーニング作業負荷は、
前記ネイティブ命令セットから選択される機械語の第１のセットであって、ニューロンの少なくとも一部の、前記プロセッサ要素の前記計算エンジンに対するマッピングを実行するものであり、前記マッピングは、少なくとも１つの部分的なニューロンの重みを管理する工程を含むものである、前記機械語の第１のセットと、
前記ネイティブ命令セットから選択される機械語の第２のセットであって、前記少なくとも部分的なニューロンの重みに少なくとも部分的に基づいて、論理順方向にアクティベーションを伝搬させる順方向パスを実行するものであり、前記順方向パスは入力サンプルに応答して開始されるものである、前記機械語の第２のセットと、
前記ネイティブ命令セットから選択される機械語の第３のセットであって、論理逆方向にデルタパスを実行してデルタを生成するものであり、前記デルタパスは前記順方向パスの完了に応答して開始される、前記機械語の第３のセットと、
チェインパスを実行して前記デルタに基づいて勾配を計算する、前記ネイティブ命令セットから選択される機械語の第４のセットと、
所定の学習ルールに従って、且つ少なくとも部分的に前記デルタに基づいて、前記少なくとも１つの部分的なニューロンの重みの選択的更新を実行する、前記ネイティブ命令セットから選択される機械語の第５のセットと
を有し、
各計算エンジンは、前記少なくとも１つ部分的なニューロンの重みのための記憶装置を有するものである
システム。
【請求項１１】
請求項１０記載のシステムにおいて、前記マッピングは、前記ファブリックを初期化してニューラルネットワークの複数の層に分割する工程に従って実行されるものであり、前記ニューロンは前記ニューラルネットワークの複数のニューロンのうちの第１のニューロンであり、前記第１のニューロンは前記複数の層のうちの第１の層に含まれ、前記複数のニューロンのそれぞれは、前記ファブリックの複数のプロセッサ要素にわたり分散してマッピングされるものであるシステム。
【請求項１２】
請求項１１記載のシステムにおいて、前記複数の層は、論理ファブリックパイプライン段を有する論理ファブリックパイプラインとして動作し、各論理ファブリックパイプライン段は、各層における全てのパスの完了を含み、前記各層における完了には、同じ時間量を有する時間ステップが設定されるものであるシステム。
【請求項１３】
請求項１１記載のシステムにおいて、トレーニングセットの各入力サンプルが、前記複数の層にわたる、前記プロセッサ要素のうちの少なくとも第１の複数のプロセッサ要素を通してストリーミングされる際、前記ニューロンの重みは、前記複数の層にわたり前記第１の複数のプロセッサ要素において選択的に更新されるものであるシステム。
【請求項１４】
請求項１０記載のシステムにおいて、さらに、
集合的にトレーニングセットを構成する複数の入力サンプルの各々について、前記トレーニング作業負荷の反復を実行する手段を有するものであるシステム。
【請求項１５】
請求項１４記載のシステムにおいて、さらに、
各入力サンプルについて、前記入力サンプルに対応する前記順方向パス、前記デルタパス、及び前記チェインパスの完了に応答して、前記所定の学習ルールに従って前記少なくとも１つの部分的なニューロンの重みを選択的に更新する手段を有するものであるシステム。
【請求項１６】
請求項１５記載のシステムにおいて、さらに、
各順方向パスについて、前記少なくとも１つの部分的なニューロンの重みの最新の選択的更新によって提供される重み情報を選択的に使用する手段を有するものであるシステム。
【請求項１７】
請求項１６記載のシステムにおいて、さらに、
前記トレーニング作業負荷の事前反復に対応する前記少なくとも１つの部分的なニューロンの重みの前記選択的更新が行われたか否かに関係なく、前記トレーニング作業負荷の特定の反復の順方向パスを開始する手段を有するものであるシステム。
【請求項１８】
請求項１６記載のシステムにおいて、さらに、
前記トレーニング作業負荷の事前反復の前記デルタパスが開始されたか否かに関係なく、前記トレーニング作業負荷の特定の反復の順方向パスを選択的に開始する手段を有するものであるシステム。
【請求項１９】
請求項１６記載のシステムにおいて、さらに、
前記計算エンジンの少なくとも１つにおいて、前記トレーニング作業負荷の事前反復の順方向パスの少なくとも一部を実行した後及び前記トレーニング作業負荷の前記事前反復に対応する前記少なくとも１つの部分的なニューロンの重みの前記選択的更新の一部を実行する前、前記トレーニング作業負荷の後続反復の順方向パスの少なくとも一部を実行する手段を有するものであるシステム。
【請求項２０】
請求項１６記載のシステムにおいて、さらに、
少なくとも部分的に第１の部分的なニューロンの重みに基づいて再計算されるアクティベーションに少なくとも部分的に基づいて、各入力サンプルの前記デルタパス及び前記チェインパスを選択的に実行する手段を有するものであるシステム。
【請求項２１】
請求項２０記載のシステムにおいて、前記第１の部分的なニューロンの重みは、前記最新の選択的更新により生成される前記部分的なニューロンの重みであるシステム。
【請求項２２】
請求項２１記載のシステムにおいて、前記再計算されたアクティベーションは、計算間で記憶する必要がなく、それにより、所与のシステムトレーニング構成で必要とされる総メモリを低減するものであるシステム。
【請求項２３】
請求項１６記載のシステムにおいて、さらに、
各計算要素において、少なくとも部分的に第１の部分的なニューロンの重みに基づいて再計算されるアクティベーションに少なくとも部分的に基づいて、入力サンプルのデルタパスの部分及びチェインパスの部分を選択的に実行する手段を有するものであるシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本願のタイプにより許される限り、本願は、全て、本発明の作成時に本願と同一の所有者により所有される以下の出願をあらゆる目的のためにこの参照により組み込む：
２０１８年２月９日付で出願された第一発明者Ｓｅａｎ  ＬＩＥ及び名称ＦＡＢＲＩＣ  ＶＥＣＴＯＲＳ  ＦＯＲ  ＤＥＥＰ  ＬＥＡＲＮＩＮＧ  ＡＣＣＥＬＥＲＡＴＩＯＮの米国仮特許出願第６２／６２８，７８４号（整理番号ＣＳ−１７−０５）、
２０１８年２月９日付で出願された第一発明者Ｓｅａｎ  ＬＩＥ及び名称ＤＡＴＡ  ＳＴＲＵＣＴＵＲＥ  ＤＥＳＣＲＩＰＴＯＲＳ  ＦＯＲ  ＤＥＥＰ  ＬＥＡＲＮＩＮＧ  ＡＣＣＥＬＥＲＡＴＩＯＮの米国仮特許出願第６２／６２８，７７３号（整理番号ＣＳ−１７−１２）、
２０１７年１１月１日付で出願された第一発明者Ｓｅａｎ  ＬＩＥ及び名称ＮＥＵＲＯＮ  ＳＭＥＡＲＩＮＧ  ＦＯＲ  ＡＣＣＥＬＥＲＡＴＥＤ  ＤＥＥＰ  ＬＥＡＲＮＩＮＧの米国仮特許出願第６２／５８０，２０７号（整理番号ＣＳ−１７−０１）、
２０１７年８月８日付で出願された第一発明者Ｓｅａｎ  ＬＩＥ及び名称ＤＡＴＡＦＬＯＷ  ＴＲＩＧＧＥＲＥＤ  ＴＡＳＫＳ  ＦＯＲ  ＡＣＣＥＬＥＲＡＴＥＤ  ＤＥＥＰ  ＬＥＡＲＮＩＮＧの米国仮特許出願第６２／５４２，６４５号（整理番号ＣＳ−１７−０２）、
２０１７年８月８日付で出願された第一発明者Ｓｅａｎ  ＬＩＥ及び名称ＴＡＳＫ  ＳＹＮＣＨＲＯＮＩＺＡＴＩＯＮ  ＦＯＲ  ＡＣＣＥＬＥＲＡＴＥＤ  ＤＥＥＰ  ＬＥＡＲＮＩＮＧの米国仮特許出願第６２／５４２，６５７号（整理番号ＣＳ−１７−０６）、
２０１７年６月１９日付で出願された第一発明者Ｓｅａｎ  ＬＩＥ及び名称ＷＡＶＥＬＥＴ  ＲＥＰＲＥＳＥＮＴＡＴＩＯＮ  ＦＯＲ  ＡＣＣＥＬＥＲＡＴＥＤ  ＤＥＥＰ  ＬＥＡＲＮＩＮＧの米国仮特許出願第６２／５２２，０６５号（整理番号ＣＳ−１７−０３）、
２０１７年６月１９日付で出願された第一発明者Ｓｅａｎ  ＬＩＥ及び名称ＣＯＮＴＲＯＬ  ＷＡＶＥＬＥＴ  ＦＯＲ  ＡＣＣＥＬＥＲＡＴＥＤ  ＤＥＥＰ  ＬＥＡＲＮＩＮＧの米国仮特許出願第６２／５２２，０８１号（整理番号ＣＳ−１７−０４）、
２０１７年６月１５日付で出願された第一発明者Ｍｉｃｈａｅｌ  Ｅｄｗｉｎ  ＪＡＭＥＳ及び名称ＩＮＣＲＥＡＳＥＤ  ＣＯＮＣＵＲＲＥＮＣＹ  ＡＮＤ  ＥＦＦＩＣＩＥＮＣＹ  ＯＦ  ＤＥＥＰ  ＮＥＴＷＯＲＫ  ＴＲＡＩＮＩＮＧ  ＶＩＡ  ＣＯＮＴＩＮＵＯＵＳ  ＰＲＯＰＡＧＡＴＩＯＮの米国仮特許出願第６２／５２０，４３３号（整理番号ＣＳ−１７−１３Ｂ）、
２０１７年６月１１日付で出願された第一発明者Ｓｅａｎ  ＬＩＥ及び名称ＡＣＣＥＬＥＲＡＴＥＤ  ＤＥＥＰ  ＬＥＡＲＮＩＮＧの米国仮特許出願第６２／５１７，９４９号（整理番号ＣＳ−１７−１４Ｂ）、
２０１７年４月１７日付で出願された第一発明者Ｓｅａｎ  ＬＩＥ及び名称ＡＣＣＥＬＥＲＡＴＥＤ  ＤＥＥＰ  ＬＥＡＲＮＩＮＧの米国仮特許出願第６２／４８６，３７２号（整理番号ＣＳ−１７−１４）、及び
２０１７年２月２３日付で出願された第一発明者Ｍｉｃｈａｅｌ  Ｅｄｗｉｎ  ＪＡＭＥＳ及び名称ＩＮＣＲＥＡＳＥＤ  ＣＯＮＣＵＲＲＥＮＣＹ  ＡＮＤ  ＥＦＦＩＣＩＥＮＣＹ  ＯＦ  ＤＥＥＰ  ＮＥＴＷＯＲＫ  ＴＲＡＩＮＩＮＧ  ＶＩＡ  ＣＯＮＴＩＮＵＯＵＳ  ＰＲＯＰＡＧＡＴＩＯＮの米国仮特許出願第６２／４６２，６４０号（整理番号ＣＳ−１７−１３）。
【背景技術】
【０００２】
分野：精度、性能、及びエネルギー効率の１若しくはそれ以上の改善を提供する加速化ディープラーニングにおける進歩が必要である。
【０００３】
関連技術：公知又は周知であるものとして明らかに識別される場合を除き、本明細書における技法及び概念の言及は、状況、定義、又は比較目的を含め、そのような技法及び概念が従来、公知されるか、又は従来技術の部分であることを認めるものとして解釈されるべきではない。本明細書に引用される全ての引用文献（存在する場合）は、特許、特許出願、及び公開物を含め、あらゆる目的のために特に組み込まれるか否かに関係なく、全体的にこの参照により本明細書に組み込まれる。
この出願の発明に関連する先行技術文献情報としては、以下のものがある（国際出願日以降国際段階で引用された文献及び他国に国内移行した際に引用された文献を含む）。
（先行技術文献）
（特許文献）
（特許文献１）  米国特許出願公開第２０１５／０３０２２９５号明細書
（特許文献２）  米国特許出願公開第２０１６／０２２４８８９号明細書
（特許文献３）  米国特許出願公開第２０１５／０３２４６９０号明細書
（特許文献４）  米国特許出願公開第２０１５／０２４２７４１号明細書
（特許文献５）  米国特許第９，３７３，０７３号明細書
【発明の概要】
【課題を解決するための手段】
【０００４】
概要
本発明は、多くの方法で、例えば、プロセス、製品、装置、システム、複合物、及びコンピュータ可読記憶媒体（例えば、ディスク等の光学及び／又は磁気大容量記憶装置内の媒体、フラッシュ記憶装置等の不揮発性記憶装置を有する集積回路）等のコンピュータ可読媒体、又はプログラム命令が光学もしくは電子通信リンクを介して送信されるコンピュータネットワークとして実施することができる。詳細な説明は、上記識別された分野でのコスト、生産性、性能、効率、及び使用有用性の改善を可能にする本発明の１若しくはそれ以上の実施形態の説明を提供する。詳細な説明は、詳細な説明の残りの部分の理解を促進する前置きを含む。前置きは、本明細書に記載される概念によるシステム、方法、製品、及びコンピュータ可読媒体の１若しくはそれ以上の実施例を含む。結論においてより詳細に考察するように、本発明は、発行される特許請求の範囲内の可能な変更及び変形を全て包含する。
【図面の簡単な説明】
【０００５】
【図１】図１は、ディープ・ラーニング・アクセラレータを使用したニューラルネットワークのトレーニング及び推論のシステムの一実施形態の選択された細部を示すものである。
【図２】図２は、ディープ・ラーニング・アクセラレータを使用したニューラルネットワークのトレーニング及び推論に関連付けられたソフトウェア要素の一実施形態の選択された細部を示すものである。
【図３】図３は、ディープ・ラーニング・アクセラレータを使用してニューラルネットワークをトレーニングし、トレーニングされたニューラルネットワークを使用して推論を実行することに関連付けられた処理の一実施形態の選択された細部を示すものである。
【図４】図４は、ディープ・ラーニング・アクセラレータの一実施形態の選択された細部を示すものである。
【図５】図５は、ディープ・ラーニング・アクセラレータの処理要素の一実施形態の選択された細部を示すものである。
【図６】図６は、処理要素のルータの一実施形態の選択された細部を示すものである。
【図７】図７は、処理要素のルータに関連付けられた処理の一実施形態の選択された細部を示すものである。
【図８】図８は、処理要素の計算要素の一実施形態の選択された細部を示すものである。
【図９】図９は、タスク開始のためのウェーブレット処理の一実施形態の選択された細部を示すものである。
【図１０】図１０は、処理要素の計算要素に関連付けられた命令処理の一実施形態の選択された細部を示すものである。
【図１１】図１１は、クローズアウトを介した依存性管理に関連付けられたフローの一実施形態の選択された細部を示すものである。
【図１２】図１２は、アクティベーションの累積及びクローズアウト、その後に続く部分和計算及びクローズアウトに関連付けられたフローの一実施形態の選択された細部を示すものである。
【図１３Ａ】図１３Ａは、スパースウェーブレットの一実施形態の選択された細部を示すものである。
【図１３Ｂ】図１３Ｂは、高密度ウェーブレットの一実施形態の選択された細部を示すものである。
【図１４】図１４は、ウェーブレットを作成し送信する一実施形態の選択された細部を示すものである。
【図１５Ａ】図１５Ａは、ウェーブレットを受信する一実施形態の選択された細部を示すものである。
【図１５Ｂ】図１５Ｂは、ウェーブレットを消費する一実施形態の選択された細部を示すものである。
【図１６】図１６は、ブロック命令及びブロック解除命令の実行の一実施形態の選択された細部を示すものである。
【図１７】図１７は、ニューラルネットワークの一実施形態の選択された細部を示すものである。
【図１８Ａ】図１８Ａは、ニューロンへの処理要素の割り振りの第１の実施形態の選択された細部を示すものである。
【図１８Ｂ】図１８Ｂは、ニューロンへの処理要素の割り振りの第２の実施形態の選択された細部を示す物である。
【図１９】図１９は、複数の処理要素にわたるニューロンのスメアリングの一実施形態の選択された細部を示すものである。
【図２０】図２０は、分割ニューロンの部分間の通信の一実施形態の選択された細部を示すものである。
【図２１Ａ】図２１Ａは、ファブリック入力データ構造記述子の一実施形態の選択された細部を示すものである。
【図２１Ｂ】図２１Ｂは、ファブリック出力データ構造記述子の一実施形態の選択された細部を示すものである。
【図２１Ｃ】図２１Ｃは、１Ｄメモリ・ベクトル・データ構造記述子の一実施形態の選択された細部を示すものである。
【図２１Ｄ】図２１Ｄは、４Ｄメモリ・ベクトル・データ構造記述子の一実施形態の選択された細部を示すものである。
【図２１Ｅ】図２１Ｅは、循環メモリ・バッファ・データ構造記述子の一実施形態の選択された細部を示すものである。
【図２２Ａ】図２２Ａは、循環メモリバッファ拡張データ構造記述子の一実施形態の選択された細部を示すものである。
【図２２Ｂ】図２２Ｂは、４Ｄメモリベクトル拡張データ構造記述子の一実施形態の選択された細部を示すものである。
【図２３】図２３は、データ構造記述子によるオペランドアクセスの選択された細部を示すものである。
【図２４】図２４は、データ構造記述子を復号化する一実施形態の選択された細部を示すものである。
【図２５Ａ】図２５Ａは、複数オペランド命令の一実施形態の選択された細部を示すものである。
【図２５Ｂ】図２５Ｂは、１発信元０宛先オペランド命令の一実施形態の選択された細部を示すものである。
【図２５Ｃ】図２５Ｃは、即値命令の一実施形態の選択された細部を示すものである。
【図２６Ａ】図２６Ａは、確率勾配降下（Ｓｔｏｃｈａｓｔｉｃ  Ｇｒａｄｉｅｎｔ  Ｄｅｓｃｅｎｔ：ＳＧＤ）のパイプラインフローの一実施形態を示すものである。
【図２６Ｂ】図２６Ｂは、ミニバッチ勾配降下（Ｍｉｎｉ−Ｂａｔｃｈ  Ｇｒａｄｉｅｎｔ  Ｄｅｓｃｅｎｔ：ＭＢＧＤ）のパイプラインフローの一実施形態を示すものである。
【図２６Ｃ】図２６Ｃは、連続伝搬勾配降下（Ｃｏｎｔｉｎｕｏｕｓ  Ｐｒｏｐａｇａｔｉｏｎ  Ｇｒａｄｉｅｎｔ  Ｄｅｓｃｅｎｔ：ＣＰＧＤ）のパイプラインフローの一実施形態を示すものである。
【図２６Ｄ】図２６Ｄは、リバース・チェック・ポイント（Ｒｅｖｅｒｓｅ  Ｃｈｅｃｋ  Ｐｏｉｎｔ：ＲＣＰ）を用いる連続伝搬勾配降下（ＣＰＧＤ）のパイプラインフローの一実施形態を示すものである。
【図２７Ａ】図２７Ａ〜２７Ｅは、ＳＧＤ処理、ＭＢＧＤ処理、ＣＰＧＤ処理、及びＲＣＰ処理による順方向パス及び逆方向パス実施形態の様々な態様を示すものである。
【図２７Ｂ】図２７Ａ〜２７Ｅは、ＳＧＤ処理、ＭＢＧＤ処理、ＣＰＧＤ処理、及びＲＣＰ処理による順方向パス及び逆方向パス実施形態の様々な態様を示すものである。
【図２７Ｃ】図２７Ａ〜２７Ｅは、ＳＧＤ処理、ＭＢＧＤ処理、ＣＰＧＤ処理、及びＲＣＰ処理による順方向パス及び逆方向パス実施形態の様々な態様を示すものである。
【図２７Ｄ】図２７Ａ〜２７Ｅは、ＳＧＤ処理、ＭＢＧＤ処理、ＣＰＧＤ処理、及びＲＣＰ処理による順方向パス及び逆方向パス実施形態の様々な態様を示すものである。
【図２７Ｅ】図２７Ａ〜２７Ｅは、ＳＧＤ処理、ＭＢＧＤ処理、ＣＰＧＤ処理、及びＲＣＰ処理による順方向パス及び逆方向パス実施形態の様々な態様を示すものである。
【図２８Ａ】図２８Ａは、ベクトル（ｖ）により乗算された行列（ｍ）の一般演算を示すものである。
【図２８Ｂ】図２８Ｂは、順方向パス、デルタパス、及びチェインパスで使用されるメモリ構造の様々な表現を示すものである。
【図２９】図２９は、順方向パス状態機械で使用されるタスクの一実施形態を示すものである。
【発明を実施するための形態】
【０００６】
詳細な説明
本発明の１若しくはそれ以上の実施形態の詳細な説明を以下に、本発明の選択された細部を図示する添付図と共に提供する。本発明について実施形態に関連して説明する。本明細書における実施形態は、単なる例示であることが理解され、本発明は明らかに、本明細書における実施形態のいずれか又は全てに限定されず、本発明は、多くの代替、変更、及び均等物を包含する。説明での単調さを回避するために、様々な言葉のラベル（最初、最後、特定の、様々な、さらに、他の、特定の、選択、幾つか、及び顕著な等）が、別個の組の実施形態に適用されることがあり、本明細書で使用される場合、そのようなラベルは明らかに、品質又は任意の形態の嗜好又は偏見を意味するものではなく、単に別個の組を好都合に区別することが意味される。開示されるプロセスの幾つかの演算の順序は、本発明の範囲内で変更可能である。複数の実施形態がプロセス、システム、及び／又はプログラム命令特徴の変形を説明するように機能する場合は常に、所定又は動的に決定される基準に従って、複数のマルチ実施形態にそれぞれ対応する複数の動作モードの１つの静的及び／又は動的選択を実行する他の実施形態も考えられる。本発明の完全な理解を提供するために、以下の説明では、多くの特定の詳細が記載される。詳細は説明のために提供され、本発明は、詳細の幾つか又は全てなしで、特許請求の範囲に従って実施することができる。明確にするために、本発明に関連する当技術分野で既知の技術材料は、本発明が不必要に曖昧にならないように、詳細に説明しなかった。
【０００７】
導入部
導入部は、詳細な説明のより素早い理解を促進するためだけに包含され、本発明は、導入部に提示される概念（明白な例がある場合、明白な例を含む）に限定されず、任意の導入部の段落は必ずしも、趣旨全体の要約図であり、網羅的又は制限的な説明であることは意味されない。例えば、以下の導入部は、スペース及び編成により特定の実施形態のみに制限された概説情報を提供する。本明細書の残り全体を通して考察される、特許請求の範囲が最終的に描かれる実施形態を含め、多くの他の実施形態がある。
【０００８】
概念的に、加速化ディープラーニングの連続伝搬に関連する一態様では、高度ディープラーニングにおける技法は、学習精度、予測精度、学習速度、学習性能、及び学習のエネルギー効率等の精度、性能、及びエネルギー効率の１若しくはそれ以上において改善を提供する。処理要素のアレイは、データのウェーブレットに対してフローベースの計算を実行する。各処理要素は、各計算要素及び各ルーティング要素を有する。各計算要素は、処理リソース及びメモリリソースを有する。各ルータは、ウェーブレットを介して、２Ｄメッシュにおける少なくとも最近傍と通信できるようにする。確率勾配降下、ミニバッチ勾配降下、及び連続伝搬勾配降下は、処理要素によるモデリングされたニューラルネットワークの重みのトレーニングに使用可能な技法である。リバース・チェック・ポイントは、トレーニング中、メモリ使用を低減するのに使用可能である。
【０００９】
概念的に加速化ディープラーニングのファブリックベクトルに関連する一態様では、高度ディープラーニングにおける技法は、精度、性能、及びエネルギー効率の１若しくはそれ以上において改善を提供する。処理要素のアレイは、データのウェーブレットに対してフローベースの計算を実行する。各処理要素は、各計算要素及び各ルーティング要素を有する。各計算要素はメモリを有する。各ルータは、ウェーブレットを介して、２Ｄメッシュにおける少なくとも最近傍と通信できるようにする。ルーティングは、各ウェーブレット内の各仮想チャネル指定子及び各ルータ内のルーティング構成情報により制御される。計算要素により実行される命令は、１若しくはそれ以上のオペランド指定子を含み、その幾つかは、データ構造記述子を記憶するデータ構造レジスタを指定する。データ構造記述子は、オペランドをファブリックベクトル又はメモリベクトルとして記述する。データ構造記述子はさらに、ファブリックベクトルの長さ、ファブリックベクトルがマイクロスレッド処理に適格であるか否か、及び並列で受信、送信、及び／又は処理するファブリックベクトルのデータ要素の数を記述する。データ構造記述子はさらに、ファブリックベクトルの処理に関連する仮想チャネル及びタスク識別情報、制御ウェーブレット受信時に終了するか否か、及び制御ウェーブレットとして出力ウェーブレットをマークするか否かを指定する。
【００１０】
概念的に、加速化ディープラーニングのデータ構造記述子に関連する一態様では、高度ディープラーニングにおける技法は、精度、性能、及びエネルギー効率の１若しくはそれ以上において改善を提供する。処理要素のアレイは、データのウェーブレットに対してフローベースの計算を実行する。各処理要素は、各計算要素及び各ルーティング要素を有する。各計算要素はメモリを有する。各ルータは、ウェーブレットを介して、２Ｄメッシュにおける少なくとも最近傍と通信できるようにする。ルーティングは、各ウェーブレット内の各仮想チャネル指定子及び各ルータ内のルーティング構成情報により制御される。計算要素により実行される命令は、１若しくはそれ以上のオペランド指定子を含み、その幾つかは、データ構造記述子を記憶するデータ構造レジスタを指定する。データ構造記述子は、オペランドをファブリックベクトル又はメモリベクトルとして記述する。データ構造記述子はさらに、一次元ベクトル、四次元ベクトル、又は循環バッファベクトルの１つとしてメモリベクトルを記述する。任意選択で、データ構造記述子は、拡張データ構造記述子を記憶する拡張データ構造レジスタを指定する。拡張データ構造記述子は、四次元ベクトル又は循環バッファベクトルに関連するパラメータを指定する。
【００１１】
概念的に、加速化ディープラーニングのニューロンスメアリングに関連する一態様では、高度ディープラーニングにおける技法は、精度、性能、及びエネルギー効率の１若しくはそれ以上において改善を提供する。処理要素のアレイは、データのウェーブレットに対してフローベースの計算を実行する。各処理要素は、各計算要素及び各ルーティング要素を有する。各計算要素はメモリを有する。各ルータは、ウェーブレットを介して、２Ｄメッシュにおける少なくとも最近傍と通信できるようにする。ルーティングは、各ウェーブレット内の各仮想チャネル指定子及び各ルータ内のルーティング構成情報により制御される。少なくとも第１の１つのニューロンは、処理要素の複数のアレイのリソースを使用して実施される。第２のニューロンの少なくとも一部は、複数の処理要素の１若しくはそれ以上のリソースを使用して実施される。幾つかの使用状況では、上記ニューロン実施は、１つのニューロンが複数の処理要素の計算リソースを使用でき、及び／又は処理要素への入力アクティベーションの局所性を維持しながら、処理要素にわたる計算負荷平衡を可能にすることにより、より大きな性能を可能にする。
【００１２】
概念的に、加速化ディープラーニングのタスク同期に関連する一態様では、高度ディープラーニングにおける技法は、精度、性能、及びエネルギー効率の１若しくはそれ以上において改善を提供する。処理要素のアレイは、データのウェーブレットに対してフローベースの計算を実行する。各処理要素は、各計算要素及び各ルーティング要素を有する。各計算要素はメモリを有する。各ルータは、ウェーブレットを介して、２Ｄメッシュにおける少なくとも最近傍と通信できるようにする。ルーティングは、各ウェーブレット内の各仮想チャネル指定子及び各ルータ内のルーティング構成情報により制御される。計算要素の特定の１つは条件付きで、仮想チャネルの特定の１つを指定する、前に受信したウェーブレットをタスク開始に選択する。条件付き選択は、特定の仮想チャネルで維持された少なくともブロック／ブロック解除状態がブロック解除状態になるまで、前に受信したウェーブレットを選択から除外する。計算要素はブロック／ブロック解除命令を実行して、ブロック／ブロック解除状態を変更する。
【００１３】
概念的に、加速化ディープラーニングのデータフロートリガータスクに関連する一態様では、高度ディープラーニングにおける技法は、精度、性能、及びエネルギー効率の１若しくはそれ以上において改善を提供する。処理要素のアレイは、データのウェーブレットに対してフローベースの計算を実行する。各処理要素は、各計算要素及び各ルーティング要素を有する。各計算要素はメモリを有する。各ルータは、ウェーブレットを介して、２Ｄメッシュにおける少なくとも最近傍と通信できるようにする。ルーティングは、各ウェーブレット内の各仮想チャネル指定子及び各ルータ内のルーティング構成情報により制御される。計算要素の特定の１つは、特定の仮想チャネル指定子及び特定のデータ要素を有する特定のウェーブレットを受信する。命令は、少なくとも部分的に特定の仮想チャネル指定子に基づいて特定の計算要素のメモリから読み出される。特定のデータ要素は、命令の少なくとも１つを実行する入力オペランドとして使用される。
【００１４】
概念的に、加速化ディープラーニングの制御ウェーブレットに関連する一態様では、高度ディープラーニングにおける技法は、精度、性能、及びエネルギー効率の１若しくはそれ以上において改善を提供する。処理要素のアレイは、データのウェーブレットに対してフローベースの計算を実行する。各処理要素は、各計算要素及び各ルーティング要素を有する。各計算要素はメモリを有する。各ルータは、ウェーブレットを介して、２Ｄメッシュにおける少なくとも最近傍と通信できるようにする。計算要素の特定の１つはウェーブレットを受信する。ウェーブレットの制御指定子が第１の値である場合、命令は、ウェーブレットのインデックス指定子に従って特定の計算要素のメモリから読み出される。制御指定子が第２の値である場合、命令は、ウェーブレットの仮想チャネル指定子に従って特定の計算要素のメモリから読み出される。次に、特定の計算要素は命令の実行を開始する。
【００１５】
概念的に、加速化ディープラーニングのウェーブレット表現に関連する一態様では、高度ディープラーニングにおける技法は、精度、性能、及びエネルギー効率の１若しくはそれ以上において改善を提供する。処理要素のアレイは、データのウェーブレットに対してフローベースの計算を実行する。各処理要素は、各計算要素及び各ルーティング要素を有する。各計算要素は専用記憶装置を有する。各ルータは、ウェーブレットを介して、２Ｄメッシュにおける少なくとも最近傍と通信できるようにする。通信は、インデックス指定子、仮想チャネル指定子、インデックス指定子、データ要素指定子、及び任意選択で制御／データ指定子を有する表現に従ったウェーブレットを介する。仮想チャネル指定子及びインデックス指定子には、１若しくはそれ以上の命令が関連付けられる。インデックス指定子には、１若しくはそれ以上の命令の少なくとも１つの第１の命令オペランドが関連付けられる。データ要素には、１若しくはそれ以上の命令の少なくとも１つの第２の命令オペランドが関連付けられる。
【００１６】
加速化ディープラーニングの第１の例は、ディープ・ラーニング・アクセラレータを使用して、ニューラルネットワークをトレーニングすることである。加速化ディープラーニングの第２の例は、ディープ・ラーニング・アクセラレータを使用して、トレーニングされたニューラルネットワークを動作させて、推論を実行することである。加速化ディープラーニングの第３の例は、ディープ・ラーニング・アクセラレータを使用して、ニューラルネットワークをトレーニングし、続けて、トレーニングされたニューラルネットワーク、トレーニングされたニューラルネットワークからの情報、及びトレーニングされたニューラルネットワークのバリアントの任意の１若しくはそれ以上を用いて推論を実行することである。
【００１７】
ニューラルネットワークの例には、全結合ニューラルネットワーク（Ｆｕｌｌｙ  Ｃｏｎｎｅｃｔｅｄ  Ｎｅｕｒａｌ  Ｎｅｔｗｏｒｋｓ：ＦＣＮＮｓ）、再帰型ニューラルネットワーク（Ｒｅｃｕｒｒｅｎｔ  Ｎｅｕｒａｌ  Ｎｅｔｗｏｒｋｓ：ＲＮＮｓ）、畳み込みニューラルネットワーク（Ｃｏｎｖｏｌｕｔｉｏｎａｌ  Ｎｅｕｒａｌ  Ｎｅｔｗｏｒｋｓ：ＣＮＮｓ）、長短期メモリ（Ｌｏｎｇ  Ｓｈｏｒｔ−Ｔｅｒｍ  Ｍｅｍｏｒｙ：ＬＳＴＭ）ネットワーク、オートエンコーダ、ディープビリーフネットワーク、及び敵対的生成ネットワークがある。
【００１８】
ニューラルネットワークをトレーニングする一例は、ディープ・ラーニング・アクセラレータを介したハードウェア加速化等により、ニューラルネットワークに関連付けられる１若しくはそれ以上の重みを決定することである。推論を行うことの一例は、トレーニングされたニューラルネットワークを使用し、トレーニングされたニューラルネットワークに関連付けられた重みに基づいて入力データを処理することにより結果を計算することである。
【００１９】
ニューラルネットワークは、ニューロンの層を含むデータフローグラフに従ってデータを処理する。刺激（例えば、入力データ）は、ニューロンの入力層により受信され、データフローグラフの計算結果（例えば、出力データ）は、ニューロンの出力層により提供される。ニューロンの層の例には、入力層、出力層、正規化線形ユニット層、全結合層、再帰層、長短期メモリ層、畳み込み層、カーネル層、ドロップアウト層、及びプーリング層がある。ニューラルネットワークは、ハードウェア加速を受けて条件付きで及び／又は選択的にトレーニングされる。トレーニング後、ニューラルネットワークは、ハードウェア加速を受けて推論に条件付き及び／又は選択的に使用される。
【００２０】
ディープ・ラーニング・アクセラレータの一例は、専用性の比較的低いハードウェア要素を使用するよりも比較的効率的に、ニューラルネットワークをトレーニングし、及び／又はニューラルネットワークを用いて推論を実行する、１若しくはそれ以上のソフトウェア要素と併せて動作する１若しくはそれ以上の比較的専用のハードウェア要素である。比較的専用のハードウェア要素の幾つかの実施態様は、カスタム論理、合成論理、ＡＳＩＣ、及び／又はＦＰＧＡを介して実施される等のトランジスタ、レジスタ、インダクタ、キャパシタ、ワイヤ相互接続、結合論理（例えば、ＮＡＮＤ、ＮＯＲ）ゲート、ラッチ、レジスタファイル、メモリアレイ、メモリアレイのタグ、コンテンツアドレス指定可能メモリ、フラッシュ、ＲＯＭ、ＤＲＡＭ、ＳＲＡＭ、シリアライザ／デシリアライザ（Ｓｅｒｉａｌｉｚｅｒ／Ｄｅｓｅｒｉａｌｉｚｅｒ：ＳｅｒＤｅｓ）、Ｉ／Ｏドライバ等の１若しくはそれ以上のハードウェア論理回路要素を含む。専用性が比較的低いハードウェア要素の幾つかには、従来のＣＰＵ及び従来のＧＰＵがある。
【００２１】
ディープ・ラーニング・アクセラレータの一実施例は、ニューラルネットワークのトレーニング及び／又はニューラルネットワークを用いての推論に実行される計算に従ってデータフローを処理することができる。幾つかのディープ・ラーニング・アクセラレータは、ファブリックを介して結合された処理要素を有し、ファブリックを介して互いと通信することができる。処理要素及びファブリックはまとめて、処理要素のファブリックと呼ばれることがある。
【００２２】
処理要素の一実施例は、ウェーブレットを通信し処理することができる。様々な状況では、ウェーブレットは、通信及び／又は処理に従ったデータフロー及び／又は命令フローに対応し、ニューラルネットワークのトレーニング及び／又はニューラルネットワークを使用した推論に実行される計算を可能にする。
【００２３】
処理要素の一例は、ファブリックを介してウェーブレットを通信するルータと、ウェーブレットを処理する計算要素とを有する。ルータの一例は複数の要素に結合される：ファブリック、計算要素へのオフランプ、及び計算要素からのオンランプ。ルータとファブリックとの間の結合の一例は、ルータと、例えば、４つの論理及び／又は物理的に隣接した処理要素との間の通信を可能にする。ルータは様々に、ファブリック及びオンランプからウェーブレットを受信する。ルータは様々に、ウェーブレットをファブリック及びオフランプに送信する。
【００２４】
計算要素の一実施例は、タスクを開始し、ウェーブレットに関連付けられた命令を実行し、ウェーブレット及び／又は命令に関連付けられたデータにアクセスすることにより、ウェーブレットを処理することができる。命令は、算術命令、制御フロー命令、データ型変換命令、構成命令、ファブリック管理命令、及びロード／記憶命令を含む命令セットアーキテクチャによる。命令は、様々なデータ型、例えば、様々な幅の整数データ型及び浮動小数点データ型を含むオペランドに対して動作する。オペランドは様々に、スカラーオペランド及びベクトルオペランドを含む。様々な実施形態及び／又は使用状況では、ベクトルは様々に、ニューラルネットワークの重み、ニューラルネットワークの入力又は刺激、ニューラルネットワークのアクティベーション、及び／又はニューラルネットワークの部分和を表す。幾つかの状況では、ベクトルはスパースベクトル（例えば、ニューロンアクティベーションのベクトル）であり、スパースベクトル要素（例えば、非ゼロ要素のみ）を含む。幾つかの他の状況では、ベクトルは高密度ベクトル（例えば、ピクセル値）であり、高密度データ要素（例えば、ゼロ要素を含むベクトルの全ての要素）を含む。
【００２５】
計算要素の一例は、命令により指定された演算（例えば、算術演算、制御フロー演算、及びロード／記憶演算）を実行することにより、ウェーブレット二関連付けられた命令を集合的に実行するハードウェア要素を有する。ハードウェア要素の例には、ピッカーキュー、ピッカー、タスク定義テーブル、命令シーケンサ、命令デコーダ、データシーケンサ、レジスタファイル、メモリ、疑似乱数生成器、及びＡＬＵがある。ハードウェア要素の幾つかの実施態様は、本明細書の他の箇所に記載されるようなハードウェア論理回路要素に従う。計算要素は計算エンジンと呼ばれることがある。計算スケジューラはピッカーと呼ばれることがあり、計算スケジューラキューはピッカーキューと呼ばれることがある。
【００２６】
ファブリックの一例は、処理要素間及び／又は１つの処理要素内の論理及び／又は物理的結合の集まりである。ファブリックは、メッシュ、２Ｄメッシュ、３Ｄメッシュ、ハイパーキューブ、トーラス、リング、ツリー、又はそれらの任意の組合せ等の論理及び／又は物理的通信トポロジの実施に使用可能である。処理要素間の物理的な結合の一例は、物理的に結合された処理要素間の１組の物理的な相互接続（任意選択及び／又は選択的なバッファリングを含む）である。物理的に結合された処理要素の第１の例は、第２の処理要素の真横（「北」、「南」、「東」、又は「西」等）に配置された第１の処理要素等の物理的に直に隣接した処理要素である。物理的に結合された処理要素の第２の例は、比較的少数の介在処理要素内、例えば、第２の処理要素から１つ又は２つの「行」及び／又は「列」だけ離れて配置された第１の処理要素等の物理的に比較的近傍の処理要素である。物理的に結合された処理要素の第３の例は、処理要素に関連付けられたクロックサイクル及び／又はクロックサブサイクル内のシグナル伝搬（任意選択及び／又は選択でのバッファリングあり又はなしで）により制限される距離等の第２の処理要素から物理的に比較的離れて配置された第１の処理要素等の物理的に比較的離れた処理要素である。１つの処理要素（例えば、計算要素及びルータを有する）内の物理的結合の一例は、出力情報を計算要素からルータに結合するオンランプ及び入力情報をルータから計算要素に結合するオフランプである。幾つかの状況では、ルータは、情報をオンランプからオフランプにルーティングする。
【００２７】
処理要素間の論理結合の一例は、処理要素内のルータにより実施される仮想チャネルである。第１の処理要素と第２の処理要素との間のルートは、例えば、仮想チャネル及びルーティング構成情報に従って転送されるルートに沿って処理要素内のルータにより実施される。１つの特定の処理要素（例えば、ルータを有する）内の論理結合の一例は、ルータにより実施される仮想チャネルであり、特定の処理要素が仮想チャネルを介して特定の処理要素に情報を送信できるようにする。ルータは、仮想チャネル及びルーティング構成情報に従って特定の処理要素の「内部」で転送する。
【００２８】
ウェーブレットの一例は、ファブリックを介して処理要素間で通信される一束の情報である。ウェーブレットの一例は、ウェーブレットペイロード及びカラーを有する。ウェーブレットペイロードは、データを有し、命令が関連付けられる。処理要素の計算要素により受信されたウェーブレットへの第１の応答は、ウェーブレットに関連付けられた命令の処理に対応する等のタスクを計算要素が開始することを含む。処理要素の計算要素により受信されたウェーブレットへの第２の応答は、計算要素がウェーブレットのデータを処理することを含む。ウェーブレットのタイプ例には、高密度ウェーブレット及びスパースウェーブレット並びにデータウェーブレット及び制御ウェーブレットがある。
【００２９】
ウェーブレットは、例えば、処理要素間の通信に使用される。第１の状況では、第１の処理要素はウェーブレットを第２の処理要素に送信する。第２の状況では、外部デバイス（例えば、ＦＰＧＡ）は、ウェーブレットを処理要素に送信する。第３の状況では、処理要素はウェーブレットを外部デバイス（例えば、ＦＰＧＡ）に送信する。
【００３０】
仮想チャネルの一例は、カラーにより指定された１若しくはそれ以上の通信パスウェイであり、例えば、ファブリック及び１若しくはそれ以上のルータにより可能になる。特定のカラーを有するウェーブレットは、特定のカラーに関連付けられた特定の仮想チャネルに関連付けられたものとして呼ばれることがある。カラーの第１の例は、２つの異なる処理要素間の仮想チャネルを指定するファブリックカラーである。幾つかの実施形態では、ファブリックカラーは５ビット整数である。カラーの第２の例は、処理要素から処理要素への仮想チャネルを指定するローカルカラーである。幾つかの実施形態では、カラーは６ビット整数であり、ファブリックカラー及びローカルカラーの一方を指定する。
【００３１】
タスクの一例は、ウェーブレットに応答して実行される命令の集まりを含む。命令の一例は演算を含み、任意選択で、演算に従って処理すべきデータ要素のロケーションを指定する１若しくはそれ以上のオペランドを含む。オペランドの第１の例は、メモリ内のデータ要素を指定する。オペランドの第２の例は、ファブリックを介して通信された（例えば、受信又は送信された）データ要素を指定する。データシーケンサの一例は、データ要素のロケーションを決める。命令シーケンサの一例は、ウェーブレットに関連付けられた命令のメモリ内のアドレスを決める。
【００３２】
ピッカーキューの一例は、計算要素を処理するために、ファブリックのオフランプを介して受信したウェーブレットを保持することができる。ピッカーの一例は、処理のためにピッカーキューからウェーブレットを選択する。
【００３３】
集積回路（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ：ＩＣ）の一例は、半導体材料の１つの部分に実装される回路の集まりである。特定用途向け集積回路（Ａｐｐｌｉｃａｔｉｏｎ−Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ：ＡＳＩＣ）の一例は、特定用途に向けて設計されたＩＣである。ウェーハスケール集積の一例は、例えば、ウェーハを全体又は略全体として残すことにより、システムの要素としてウェーハの全て又は大部分を使用してシステムを実施することである。
【００３４】
幾つかの実施形態及び／又は使用状況では、ウェーハスケール集積は、チップ間相互接続を介する代わりに、シリコン製造プロセスを使用して形成されたウェーハ相互接続を介してシステム内の複数の要素を接続できるようにし、したがって、性能、コスト、信頼性、及びエネルギー効率の改善の任意の１若しくはそれ以上を改善する。特定の例として、ウェーハスケール集積技術を使用して実装されたシステムは、１つのウェーハへの３００万個のＰＥの実装を可能にし、各ＰＥは、ウェーハスケール集積技術以外を使用する同等のシステムよりも大きな、物理的最近傍への帯域幅を有する。帯域幅がより大きいことにより、ウェーハスケール集積技術を使用して実装されたシステムは、ウェーハスケール集積技術以外を使用して実装されるシステムよりも大きなニューラルネットワークで、比較的効率的にトレーニングし、及び／又は推論を実行することができる。
【００３５】
頭字語
本明細書において定義される様々な簡略略語（例えば、頭字語）の少なくとも幾つかは、本明細書で使用される特定の要素を指す。
【００３６】
【表１】
0006832050.tif 000002
【実施例】
【００３７】
詳細な説明を結論付けるに当たり、以下は、本明細書に記載される概念による様々な実施形態タイプの追加説明を提供する少なくとも幾つかの、「ＥＣ」（組合せ例）として明示的に列挙されるものを含む実施例の集まりであり、これらの例は相互に排他的、網羅的、又は限定を意味せず、本発明はこれらの実施例に限定されず、発行される特許請求の範囲及びそれらの均等物内の可能な全ての変更及び変形を包含する。
【００３８】
ＥＣ１００）システムであって、
プロセッサ要素のファブリックであって、各プロセッサ要素は、ファブリックルータと、データフローベースの処理及び命令ベースの処理を実行することができる計算エンジンとを有するものである、プロセッサ要素のファブリック
を有し、
各プロセッサ要素は、ファブリックパケットをプロセッサ要素のうちの他の要素に選択的に通信し、
各計算エンジンは、計算エンジンが受信する各ファブリックパケットの仮想チャネル指定子及びタスク指定子に従って処理を選択的に実行するシステム。
【００３９】
ＥＣ１００ｂ）システムであって、
プロセッサ要素のファブリックであって、各プロセッサ要素は、ファブリックルータ及び計算エンジンを有するものである、プロセッサ要素のファブリック
を有し、
各プロセッサ要素は、ファブリックパケットをプロセッサ要素のうちの他の要素に選択的に通信し、
各計算エンジンは、計算エンジンが受信する各ファブリックパケットのデータフローフィールド及び命令フィールドに従って、データフロー処理及び命令処理をそれぞれ選択的に実行するシステム。
【００４０】
ＥＣ１００ｃ）ＥＣ１００記載のシステムにおいて、処理はデータフローグラフに従うものであるシステム。
【００４１】
ＥＣ１００ｄ）ＥＣ１００記載のシステムにおいて、主にデータフローベース処理を含み、命令ベース処理は最小の作業負荷が実行されるものであるシステム。
【００４２】
ＥＣ１００ｅ）ＥＣ１００ｄ記載のシステムにおいて、システムは長短期メモリ（ＬＳＴＭ）ニューラル・ネットワーク・モデルを実施するものであるシステム。
【００４３】
ＥＣ１００ｆ）ＥＣ１００記載のシステムにおいて、主に命令ベース処理を含み、データフローベース処理は最小の作業負荷が実行されるものであるシステム。
【００４４】
ＥＣ１００ｇ）ＥＣ１００記載のシステムにおいて、システムは少なくとも部分的にウェーハスケール集積を使用して実施されるものであるシステム。
【００４５】
ＥＣ１００ｈ）ＥＣ１００記載のシステムにおいて、プロセッサ要素のファブリックは、少なくとも部分的にＶＬＳＩ製作を使用して実施されるものであるシステム。
【００４６】
ＥＣ１０１）ＥＣ１００記載のシステムにおいて、仮想チャネル指定子は、ファブリック内の独立した各ルーティングパスを選択するものであるシステム。
【００４７】
ＥＣ１０１ｂ）ＥＣ１００記載のシステムにおいて、仮想チャネル指定子は、マルチキャストを実行するファブリック内のルーティングパスを選択するものであるシステム。
【００４８】
ＥＣ１０１ｃ）ＥＣ１００記載のシステムにおいて、仮想チャネル指定子は、負荷分割を実行するファブリック内のルーティングパスを選択するものであるシステム。
【００４９】
ＥＣ１０２）ＥＣ１００記載のシステムにおいて、タスク指定子は、実行する１若しくはそれ以上の演算を選択するものであるシステム。
【００５０】
ＥＣ１０３）ＥＣ１００記載のシステムにおいて、ファブリックはプロセッサ要素の２Ｄアレイを含むものであるシステム。
【００５１】
ＥＣ１０３ｂ）ＥＣ１００記載のシステムにおいて、ファブリックは、完全に接続されたスター、リング、アレイ、メッシュ、ハイパーキューブ、トーラス、及びツリーから成る群から選択されるプロセッサ要素相互接続トポロジを有するものであるシステム。
【００５２】
ＥＣ１０３ｃ）ＥＣ１００記載のシステムにおいて、ファブリックは、１Ｄ、２Ｄ、３Ｄ、及び３Ｄを超える次元から成る群から選択されるプロセッサ要素相互接続トポロジを有するものであるシステム。
【００５３】
ＥＣ１０４）ＥＣ１００記載のシステムにおいて、システムは機械学習作業負荷を実行することができるものであるシステム。
【００５４】
ＥＣ１０５）ＥＣ１００記載のシステムにおいて、システムは、推論アプリケーションを実行するようにトレーニングされるものであるシステム。
【００５５】
ＥＣ１０５ｂ）ＥＣ１００記載のシステムにおいて、システムは推論アプリケーションを実行するものであるシステム。
【００５６】
ＥＣ１０６）ＥＣ１００記載のシステムにおいて、システムは、オブジェクト分類及び／又は検出を実行するようにトレーニングされたディープ・ニューラル・ネットワークを実施するものであるシステム。
【００５７】
ＥＣ１０７）ＥＣ１００記載のシステムにおいて、システムは、テキスト翻訳、光学文字認識、画像分類、顔認識、自動運転車のシーン認識、発話認識、高エネルギー物理学のデータ分析、及び創薬から成る群から選択される推論アプリケーションを実行するようにトレーニングされたディープ・ニューラル・ネットワークを実施するものであるシステム。
【００５８】
ＥＣ１０８）ＥＣ１００記載のシステムにおいて、ファブリックは、複数の周辺プロセッサ要素及び複数の内部プロセッサ要素として編成され、各内部プロセッサ要素は、複数のプロセッサ要素のうちの少なくとも４つの他のプロセッサ要素に少なくとも４つの論理方向のそれぞれで結合されるものであるシステム。
【００５９】
ＥＣ１０９）ＥＣ１００記載のシステムにおいて、各計算エンジンは、メモリ、データパス、並びに混成データフロー及び命令実行コントローラを有するものであるシステム。
【００６０】
ＥＣ１１０）ＥＣ１０９記載のシステムにおいて、各計算エンジンは、複数の計算エンジンパイプライン段を有する多段計算エンジンパイプラインに従って動作するものであるシステム。
【００６１】
ＥＣ１１１）ＥＣ１０９記載のシステムにおいて、命令実行コントローラは、マイクロコード、ＰＬＡ、１つ若しくは複数のカウンタ、及びゲートレベル状態機械の１つ若しくは複数を使用して実施される命令シーケンサを有するものであるシステム。
【００６２】
ＥＣ１１２）ＥＣ１０９記載のシステムにおいて、さらに、
各計算エンジンは、レジスタファイル、命令デコーダ、命令キャッシュ、及びデータキャッシュを有するものであるシステム。
【００６３】
ＥＣ１１２ｂ）ＥＣ１０９記載のシステムにおいて、さらに、
各計算エンジンは、レジスタファイル、命令デコーダ、命令バッファ、及びデータバッファを有するものであるシステム。
【００６４】
ＥＣ１１３ｂ）ＥＣ１００記載のシステムにおいて、
各計算エンジンは、予め定義されたネイティブ命令セットのコードから選択された対応する基本命令の受信に応答して、予め定義された基本演算セットを実行するように構成され、さらに、
トレーニング作業負荷は、
ニューロンの少なくとも一部のプロセッサ要素の計算エンジンへのマッピングを実行する、ネイティブ命令セットから選択される機械語の第１のセットであって、マッピングは、少なくとも１つの部分的なニューロンの重みを管理することを含むものである、機械語の第１のセットと、
少なくとも１つの部分的なニューロンの重みに少なくとも部分的に基づいて論理順方向にアクティベーションを伝搬させる順方向パスを実行する、ネイティブ命令セットから選択される機械語の第２のセットであって、順方向パスは入力サンプルに応答して開始されるものである、機械語の第２のセットと、
論理逆方向におけるデルタパスを実行して、デルタを生成する、ネイティブ命令セットから選択される機械語の第３のセットであって、デルタパスは順方向パスの完了に応答して開始される、機械語の第３のセットと、
チェインパスを実行して、デルタに基づいて勾配を計算する、ネイティブ命令セットから選択される機械語の第４のセットと、
所定の学習ルールに従って、少なくとも部分的にデルタに基づいて、少なくとも１つの部分的なニューロンの重みの選択的更新を実行する、ネイティブ命令セットから選択される機械語の第５のセットと
を有し、
各計算エンジンは、少なくとも１つ部分的なニューロンの重みのための記憶装置を有するものであるシステム。
【００６５】
ＥＣ１１３ａ）ＥＣ１１３記載のシステムにおいて、各基本命令は、ファブリックパケットの各ファブリックパケットのタスク指定子に従って実行されるものであるシステム。
【００６６】
ＥＣ１１３ｂ）ＥＣ１１３記載のシステムにおいて、ファブリックは、第１、第２、第３、及び第４の物理方向を有するプロセッサ要素の２Ｄアレイを有し、第１及び第２の物理方向は、同一線上且つ逆であり、第３及び第４の物理方向は、同一線上且つ逆であり、第１及び第３の物理方向は直交し、順論理方向は第１の物理方向であり、逆論理方向は第２の物理方向であるシステム。
【００６７】
ＥＣ１１３ｃ）ＥＣ１１３記載のシステムにおいて、さらに、
トレーニング作業負荷は、非線形活性化関数を実行する、ネイティブ命令セットから選択される第６の組の機械語を有するものであるシステム。
【００６８】
ＥＣ１１３ｄ）ＥＣ１１３ｃ記載のシステムにおいて、非線形活性化関数は、シグモイド、双曲線正接、ＲｅＬＵから成る群から選択されるものであるシステム。
【００６９】
ＥＣ１１４）ＥＣ１１３記載のシステムにおいて、前記マッピングは、前記ファブリックを初期化してニューラルネットワークの複数の層に分割する工程に従って実行されるものであり、前記ニューロンは前記ニューラルネットワークの複数のニューロンのうちの第１のニューロンであり、前記第１のニューロンは前記複数の層のうちの第１の層に含まれ、前記複数のニューロンのそれぞれは、前記ファブリックの複数のプロセッサ要素にわたり分散してマッピングされるものであるシステム。
【００７０】
ＥＣ１１５）ＥＣ１１４記載のシステムにおいて、マッピングは、同じ時間量で各層の全てのパスを完了するトレーニングセットの各入力サンプルに従うものであるシステム。
【００７１】
ＥＣ１１５ｂ）ＥＣ１１４記載のシステムにおいて、マッピングは、同じ所定の時間量以内で各層の全てのパスを完了するトレーニングセットの各入力サンプルに従うものであるシステム。
【００７２】
ＥＣ１１５ｃ）ＥＣ１１４記載のシステムにおいて、マッピングは、リアルタイムで決定される同じ時間期間内で各層の全てのパスを完了するトレーニングセットの各入力サンプルに従うものであるシステム。
【００７３】
ＥＣ１１６）ＥＣ１１４記載のシステムにおいて、複数の層は、論理ファブリックパイプライン段を有する論理ファブリックパイプラインとして動作し、各論理ファブリックパイプライン段は、各層における全てのパスの完了を含み、前記各層における完了には、同じ時間量を有する時間ステップが設定されるものであるシステム。
【００７４】
ＥＣＣ１１６ｂ）ＥＣ１１４記載のシステムにおいて、複数の層のそれぞれは、各パスの各論理ファブリックパイプラインの論理ファブリックパイプライン段として動作し、各層の完了には、同じ時間量を有する時間ステップが設定されるものであるシステム。
【００７５】
ＥＣ１１７）ＥＣ１１４記載のシステムにおいて、トレーニングセットの各入力サンプルが、前記複数の層にわたる、前記プロセッサ要素のうちの少なくとも第１の複数のプロセッサ要素を通してストリーミングされる際、前記ニューロンの重みは、前記複数の層にわたり前記第１の複数のプロセッサ要素において選択的に更新されるものであるものであるシステム。
【００７６】
ＥＣ１１７ｂ）ＥＣ１１８記載のシステムにおいて、トレーニングセットの各入力サンプルは、複数の層にわたり少なくとも第１の複数のプロセッサ要素を通してストリーミングされ、ニューロンの重みは、複数の層にわたり第１の複数のプロセッサ要素において選択的に更新され、ストリーミング及び更新は、複数の時間ステップにわたり各時間ステップで進行中であるシステム。
【００７７】
ＥＣ１１９）ＥＣ１２０記載のシステムにおいて、さらに、
デジタルクロックを有し、時間ステップは、デジタルクロックのクロックサイクルの整数倍であるシステム。
【００７８】
ＥＣ１１８ｂ）ＥＣ１２０記載のシステムにおいて、さらに、
デジタルクロックを有し、時間ステップは可変時間量であるシステム。
【００７９】
ＥＣ１１８ｃ）ＥＣ１２１又はＥＣ１１８ｂ記載のシステムにおいて、時間ステップはリアルタイムで決定されるものであるシステム。
【００８０】
ＥＣ１２２）ＥＣ１１４記載のシステムにおいて、さらに、
各計算エンジンは、複数の計算エンジンパイプライン段を有する多段計算エンジンパイプラインに従って動作し、計算エンジン機械サイクルは、各計算エンジンパイプライン段を完了する時間を含み、計算エンジンパイプラインサイクルは、複数の計算エンジンパイプライン段を完了する時間を含み、
計算エンジン機械サイクルは、デジタルクロックの第１の倍数のクロックサイクルを含み、
複数の層は、論理ファブリックパイプライン段を含む論理ファブリックパイプラインとして動作し、各論理ファブリックパイプライン段は、各層の全てのパスの完了を含み、時間ステップは、各論理ファブリックパイプライン段を完了する時間を含み、
時間ステップは、第２の倍数の計算エンジンパイプラインサイクルを含むものであるシステム。
【００８１】
ＥＣ１２３）ＥＣ１２２記載のシステムにおいて、第１の倍数は１であるシステム。
【００８２】
ＥＣ１２４）ＥＣ１２２記載のシステムにおいて、第２の倍数は数百から数千であるシステム。
【００８３】
ＥＣ１２５）ＥＣ１２０記載のシステムにおいて、アクティベーションの順方向伝搬中、複数の時間ステップにわたる各時間ステップで、少なくとも１つの部分的なニューロンの重みは、第１の複数のプロセッサ要素内の逆方向伝搬データの変化に応答して、第１の複数のプロセッサ要素内で選択的に更新されるものであるシステム。
【００８４】
ＥＣ１２６）ＥＣ１２０記載のシステムにおいて、少なくとも１つの部分的なニューロンの重みは、複数の時間ステップにわたる各時間ステップで選択的に更新されるものであるシステム。
【００８５】
ＥＣ１２３ｂ）ＥＣ１１７、ＥＣ１１７ｂ、ＥＣ１２２、又はＥＣ１２３記載のシステムにおいて、選択的更新は、連続伝搬勾配降下プロセスに従うものであるシステム。
【００８６】
ＥＣ１２７）ＥＣ１１４記載のシステムにおいて、ニューラルネットワークは千を超える層を有するものであるシステム。
【００８７】
ＥＣ１２８）ＥＣ１１４記載のシステムにおいて、複数のニューロンは数十億のニューロンを含むものであるシステム。
【００８８】
ＥＣ１２５ｂ）ＥＣ１１４記載のシステムにおいて、複数のニューロンは数百万のニューロンを含むものであるシステム。
【００８９】
ＥＣ１２５ｃ）ＥＣ１１４記載のシステムにおいて、ニューラルネットワークは、複数のニューロンの少なくとも幾つかのニューロンごとに少なくとも１０個の重みを含むものであるシステム。
【００９０】
ＥＣ１２５ｄ）ＥＣ１１４記載のシステムにおいて、ニューラルネットワークは、複数のニューロンの少なくとも幾つかのニューロンごとに少なくとも１０００個の重みを含むものであるシステム。
【００９１】
ＥＣ１２９）ＥＣ１１４記載のシステムにおいて、ニューラルネットワークは層ごとに数十億個の重みを含むものであるシステム。
【００９２】
ＥＣ１２６ｂ）ＥＣ１１４記載のシステムにおいて、ニューラルネットワークは層ごとに数百万個の重みを含むものであるシステム。
【００９３】
ＥＣ１３０）ＥＣ１１４記載のシステムにおいて、ニューラルネットワークの各層で、入力アクティベーションは、層の出力アクティベーションを生成するように蓄積された部分和を作成するように加重され、累積加重部分和は、ニューラルネットワークのニューロン及び関連付けられたシナプスを表すものであるシステム。
【００９４】
ＥＣ１２７ｂ）ＥＣ１２７記載のシステムにおいて、各重みはシナプスに対応し、各部分和は刺激に対応し、累積加重部分和は総合刺激に対応し、層の各出力アクティベーションはニューロン出力に対応するものであるシステム。
【００９５】
ＥＣ１３１）ＥＣ１１３記載のシステムにおいて、トレーニング作業負荷の反復は、トレーニングセットを集合的に構成する複数の入力サンプルの各々について実行されるものであるシステム。
【００９６】
ＥＣ１３２）ＥＣ１３１記載のシステムにおいて、所定の学習ルールは、トレーニングセット全体の全てのパスが完了した後、少なくとも１つの部分的なニューロンの重みが更新されることを指定するものであるシステム。
【００９７】
ＥＣ１２９ｂ）ＥＣ１２９記載のシステムにおいて、所定の学習ルールは確率勾配降下プロセスに従うものであるシステム。
【００９８】
ＥＣ１２９ｃ）ＥＣ１２９記載のシステムにおいて、所定の学習ルールは、ミニバッチ勾配降下プロセスに従うものであるシステム。
【００９９】
ＥＣ１２９ｄ）ＥＣ１２９記載のシステムにおいて、所定の学習ルールは、連続伝搬勾配降下プロセスに従うものであるシステム。
【０１００】
ＥＣ１３３）ＥＣ１３１記載のシステムにおいて、トレーニングセットは、複数のミニバッチに分割され、所定の学習ルールは、ミニバッチのそれぞれに含まれる入力サンプルのパスの全てが完了した後、少なくとも１つの部分的なニューロンの重みが更新されることを指定するものであるシステム。
【０１０１】
ＥＣ１３４）ＥＣ１３１記載のシステムにおいて、トレーニングセットは、複数のミニバッチに分割され、所定の学習ルールは、各ミニバッチの各入力サンプルの全てのパスが完了した後、少なくとも１つの部分的なニューロンの重みが更新されることを指定するものであるシステム。
【０１０２】
ＥＣ１３１ｂ）ＥＣ１３１記載のシステムにおいて、所定の学習ルールは、連続伝搬勾配降下プロセスに従うものであるシステム。
【０１０３】
ＥＣ１３５）ＥＣ１３４記載のシステムにおいて、順方向パスは、ミニバッチ学習が第１の複数のプロセッサ要素内で進行している間、第１の複数のプロセッサ要素内で重み更新を組み込むものであるシステム。
【０１０４】
ＥＣ１３６）ＥＣ１１３記載のシステムにおいて、記憶装置は、計算エンジンにローカルなメモリに含まれるものであるシステム。
【０１０５】
ＥＣ１３３ｂ）ＥＣ１１３記載のシステムにおいて、記憶装置は計算エンジンに含まれるものであるシステム。
【０１０６】
ＥＣ１３３ｂ）ＥＣ１１３記載のシステムにおいて、記憶装置は、各計算エンジンに取り付けられる各メモリであるシステム。
【０１０７】
ＥＣ１３７）ＥＣ１１３記載のシステムにおいて、記憶装置は、２Ｄ行列データ構造を記憶することができるものであるシステム。
【０１０８】
ＥＣ１３４ｂ）ＥＣ１１３記載のシステムにおいて、記憶装置は、多次元データ構造を記憶することができるものであるシステム。
【０１０９】
ＥＣ１３４ｃ）ＥＣ１１３記載のシステムにおいて、記憶装置は、２Ｄ、３Ｄ、４Ｄ、５Ｄ、及び６Ｄから成る群から選択される次元を有するテンソルデータ構造を記憶することができるものであるシステム。
【０１１０】
ＥＣ１３８）ＥＣ１１３記載のシステムにおいて、さらに、
各計算エンジンは、勾配累積、順方向部分和、デルタ部分和、及び順方向パスアクティベーションのための記憶装置を有するものであるシステム。
【０１１１】
ＥＣ１３９）ＥＣ１１４記載のシステムにおいて、データは、順方向パス中、ニューラルネットワークの論理端部に伝搬し、デルタパス及びチェインパス中、逆論理方向で循環するものであるシステム。
【０１１２】
ＥＣ１４０）ＥＣ１１３記載のシステムにおいて、順方向パスは、デルタパス及びチェインパスによる使用のためにアクティベーションを保存するものであるシステム。
【０１１３】
ＥＣ１４１）ＥＣ１１３記載のシステムにおいて、各プロセッサ要素は、順方向パス、デルタパス、及びチェインパスにわたり時間共有されるものであるシステム。
【０１１４】
ＥＣ１４２）ＥＣ１３１記載のシステムにおいて、各入力サンプルについて、システムは、入力サンプルに対応する順方向パス、デルタパス、及びチェインパスの完了に応答して、所定の学習ルールに従って少なくとも１つの部分的なニューロンの重みを選択的に更新することができるシステム。
【０１１５】
ＥＣ１３９ｂ）ＥＣ１３９記載のシステムにおいて、所定の学習ルールは、連続伝搬勾配降下プロセスによるものであるシステム。
【０１１６】
ＥＣ１４３）ＥＣ１４２記載のシステムにおいて、システムは、各順方向パスが、少なくとも１つの部分的なニューロンの重みの最新の選択的更新によって提供される重み情報を使用可能なように構成されているものであるシステム。
【０１１７】
ＥＣ１４４）ＥＣ１４３記載のシステムにおいて、システムは、トレーニング作業負荷の前の反復に対応する少なくとも１つの部分的なニューロンの重みの選択的更新が行われたか否かに関係なく、トレーニング作業負荷の特定の反復の順方向パスを開始することができるものであるシステム。
【０１１８】
ＥＣ１４５）ＥＣ１４３記載のシステムにおいて、システムは、トレーニング作業負荷の前の反復のデルタパスが開始されたか否かに関係なく、トレーニング作業負荷の特定の反復の順方向パスを開始することができるものであるシステム。
【０１１９】
ＥＣ１４６）ＥＣ１４３記載のシステムにおいて、少なくとも１つの計算エンジンは、トレーニング作業負荷の前の反復の順方向パスの少なくとも一部を実行した後及びトレーニング作業負荷の前の反復に対応する少なくとも１つの部分的なニューロンの重みの選択的更新の一部を実行する前、トレーニング作業負荷の後続反復で順方向パスの少なくとも一部を実行することができるものであるシステム。
【０１２０】
ＥＣ１４７）ＥＣ１４３記載のシステムにおいて、システムは、少なくとも部分的に第１の部分的なニューロンの重みに基づいて再計算されたアクティベーションに少なくとも部分的に基づいて、各入力サンプルのデルタパス及びチェインパスを実行することができるシステム。
【０１２１】
ＥＣ１４８）ＥＣ１４７記載のシステムにおいて、第１の部分的なニューロンの重みは、最新の選択的更新により生成される部分的なニューロンの重みであるシステム。
【０１２２】
ＥＣ１４５ｂ）ＥＣ１４５記載のシステムにおいて、再計算されたアクティベーションは、計算間で記憶する必要はなく、それにより、所与のシステムトレーニング構成で必要な合計メモリが低減するものであるシステム。
【０１２３】
ＥＣ１４５ｃ）ＥＣ１３９、ＥＣ１４０、ＥＣ１４１、又はＥＣ１４２記載のシステムにおいて、同時層トレーニングは、より高速の収束率で所定の正確性目標を達成できるようにし、それにより、所与のシステムトレーニング構成で必要とされる合計トレーニング時間を低減するものであるシステム。
【０１２４】
ＥＣ１４５ｄ）ＥＣ１３９、ＥＣ１４０、ＥＣ１４１、又はＥＣ１４２記載のシステムにおいて、同時層トレーニングは、所与の合計トレーニング時間及びシステムトレーニング構成の正確性増大を可能にするものであるシステム。
【０１２５】
ＥＣ１４９）ＥＣ１４３記載のシステムにおいて、各計算要素は、第１の部分的なニューロンの重みに少なくとも部分的に基づいて再計算されるアクティベーションに少なくとも部分的に基づいて、入力サンプルのデルタパスの部分及びチェインパスの部分を実行することができるものであるシステム。
【０１２６】
ＥＣ１５０）ＥＣ１４９記載のシステムにおいて、第１の部分的なニューロンの重みは、最新の選択的更新により生成される部分的なニューロンの重みであるシステム。
【０１２７】
ＥＣ２００）方法であって、
プロセッサ要素の各ファブリックにおいて、ファブリックパケットをプロセッサ要素のうちの他の要素に選択的に通信する工程であって、各プロセッサ要素は、ファブリックルータと、データフローベースの処理及び命令ベースの処理を実行することができる計算エンジンとを有するものである、通信する工程と、
各計算エンジンにおいて、計算エンジンが受信する各ファブリックパケットの仮想チャネル指定子及びタスク指定子に従って処理を選択的に実行する工程と
を有する方法。
【０１２８】
ＥＣ２００ｂ）方法であって、
プロセッサ要素の各ファブリックにおいて、ファブリックパケットをプロセッサ要素のうちの他の要素に選択的に通信する工程であって、各プロセッサ要素は、ファブリックルータ及び計算エンジンを有するものである、選択的に通信する工程と、
各計算エンジンにおいて、計算エンジンが受信する各ファブリックパケットのデータフローフィールド及び命令フィールドに従って、データフロー処理及び命令処理をそれぞれ選択的に実行する工程と
を含む方法。
【０１２９】
ＥＣ２００ｃ）ＥＣ２００記載の方法において、処理はデータフローグラフに従うものである方法。
【０１３０】
ＥＣ２００ｄ）ＥＣ２００記載の方法において、さらに、
主にデータフローベース処理を含み、命令ベース処理は最小の作業負荷を実行する工程を含むものである方法。
【０１３１】
ＥＣ２００ｅ）ＥＣ２００ｄ記載の方法において、方法を実行する工程は、長短期メモリ（ＬＳＴＭ）ニューラル・ネットワーク・モデルを実施するものである方法。
【０１３２】
ＥＣ２００ｆ）ＥＣ２００記載の方法において、さらに、
主に命令ベース処理を含み、データフローベース処理は最小の作業負荷を実行する工程を含むものである方法。
【０１３３】
ＥＣ２００ｇ）ＥＣ２００記載の方法において、プロセッサ要素のファブリックは、少なくとも部分的にウェーハスケール集積を使用して実施されるものである方法。
【０１３４】
ＥＣ２００ｈ）ＥＣ２００記載の方法において、プロセッサ要素のファブリックは、少なくとも部分的にＶＬＳＩ製作を使用して実施されるものである方法。
【０１３５】
ＥＣ２０１）ＥＣ２００記載の方法において、仮想チャネル指定子は、ファブリック内の独立した各ルーティングパスを選択するものである方法。
【０１３６】
ＥＣ２０１ｂ）ＥＣ２００記載の方法において、仮想チャネル指定子は、マルチキャストを実行するファブリック内のルーティングパスを選択するものである方法。
【０１３７】
ＥＣ２０１ｃ）ＥＣ２００記載の方法において、仮想チャネル指定子は、負荷分割を実行するファブリック内のルーティングパスを選択するものである方法。
【０１３８】
ＥＣ２０２）ＥＣ２００記載の方法において、タスク指定子は、実行する１若しくはそれ以上の演算を選択するものである方法。
【０１３９】
ＥＣ２０３）ＥＣ２００記載の方法において、ファブリックはプロセッサ要素の２Ｄアレイを含むものである方法。
【０１４０】
ＥＣ２０３ｂ）ＥＣ２００記載の方法において、ファブリックは、完全に接続されたスター、リング、アレイ、メッシュ、ハイパーキューブ、トーラス、及びツリーから成る群から選択されるプロセッサ要素相互接続トポロジを有するものである方法。
【０１４１】
ＥＣ２０３ｃ）ＥＣ２００記載の方法において、ファブリックは、１Ｄ、２Ｄ、３Ｄ、及び３Ｄを超える次元から成る群から選択されるプロセッサ要素相互接続トポロジを有するものである方法。
【０１４２】
ＥＣ２０４）ＥＣ２００記載の方法において、方法の実行は、機械学習作業負荷を実行できるようにするものである方法。
【０１４３】
ＥＣ２０５）ＥＣ２００記載の方法において、方法の実行は、推論アプリケーションをトレーニングできるようにするものである方法。
【０１４４】
ＥＣ２０５ｂ）ＥＣ２００記載の方法において、方法の実行は推論アプリケーションを実行するものである方法。
【０１４５】
ＥＣ２０６）ＥＣ２００記載の方法において、方法の実行は、オブジェクト分類及び／又は検出を実行するようにトレーニングされたディープ・ニューラル・ネットワークを実施するものである方法。
【０１４６】
ＥＣ２０７）ＥＣ２００記載の方法において、方法の実施は、テキスト翻訳、光学文字認識、画像分類、顔認識、自動運転車のシーン認識、発話認識、高エネルギー物理学のデータ分析、及び創薬から成る群から選択される推論アプリケーションを実行するようにトレーニングされたディープ・ニューラル・ネットワークを実施するものである方法。
【０１４７】
ＥＣ２０８）ＥＣ２００記載の方法において、ファブリックは、複数の周辺プロセッサ要素及び複数の内部プロセッサ要素として編成され、各内部プロセッサ要素は、複数のプロセッサ要素のうちの少なくとも４つの他のプロセッサ要素に少なくとも４つの論理方向のそれぞれで結合されるものである方法。
【０１４８】
ＥＣ２０９）ＥＣ２００記載の方法において、各計算エンジンは、メモリ、データパス、並びに混成データフロー及び命令実行コントローラを有するものである方法。
【０１４９】
ＥＣ２１０）ＥＣ２０９記載の方法において、各計算エンジンは、複数の計算エンジンパイプライン段を有する多段計算エンジンパイプラインに従って動作するものである方法。
【０１５０】
ＥＣ２１１）ＥＣ２０９記載の方法において、命令実行コントローラは、マイクロコード、ＰＬＡ、１つ若しくは複数のカウンタ、及びゲートレベル状態機械の１つ若しくは複数を使用して実施される命令シーケンサを有するものである方法。
【０１５１】
ＥＣ２１２）ＥＣ２０９記載の方法において、さらに、
各計算エンジンは、レジスタファイル、命令デコーダ、命令キャッシュ、及びデータキャッシュを有するものである方法。
【０１５２】
ＥＣ２１２ｂ）ＥＣ２０９記載の方法において、さらに、
各計算エンジンは、レジスタファイル、命令デコーダ、命令バッファ、及びデータバッファを有するものである方法。
【０１５３】
ＥＣ２１３）ＥＣ２００記載の方法において、
各計算エンジンは、予め定義されたネイティブ命令セットのコードから選択された対応する基本命令の受信に応答して、予め定義された基本演算セットを実行するように構成され、さらに、
トレーニング作業負荷を処理する工程は、
ニューロンの少なくとも一部のプロセッサ要素の計算エンジンへのマッピングを実行する、ネイティブ命令セットから選択される機械語の第１のセットであって、マッピングは、少なくとも１つの部分的なニューロンの重みを管理する工程を含むものである、機械語の第１のセットと、
少なくとも１つの部分ニューロンエンジンに少なくとも部分的に基づいて論理順方向にアクティベーションを伝搬させる順方向パスを実行する、ネイティブ命令セットから選択される機械語の第２のセットであって、順方向パスは入力サンプルに応答して開始されるものである、機械語の第２のセットと、
論理逆方向にデルタパスを実行してデルタを生成する、ネイティブ命令セットから選択される機械語の第３のセットであって、デルタパスは順方向パスの完了に応答して開始される、機械語の第３のセットと、
チェインパスを実行して、デルタに基づいて勾配を計算する、ネイティブ命令セットから選択される機械語の第４のセットと、
所定の学習ルールに従って、少なくとも部分的にデルタに基づいて、少なくとも１つの部分的なニューロンの重みの選択的更新を実行する、ネイティブ命令セットから選択される機械語の第５のセットと
を有し、
各計算エンジンは、少なくとも１つ部分的なニューロンの重みのための記憶装置を有するものである方法。
【０１５４】
ＥＣ２１３ａ）ＥＣ２１３記載の方法において、各基本命令は、ファブリックパケットの各ファブリックパケットのタスク指定子に従って実行されるものである方法。
【０１５５】
ＥＣ２１３ｂ）ＥＣ２１３記載の方法において、ファブリックは、第１、第２、第３、及び第４の物理方向を有するプロセッサ要素の２Ｄアレイを有し、第１及び第２の物理方向は、同一線上且つ逆であり、第３及び第４の物理方向は、同一線上且つ逆であり、第１及び第３の物理方向は直交し、順論理方向は第１の物理方向であり、逆論理方向は第２の物理方向である方法。
【０１５６】
ＥＣ２１３ｃ）ＥＣ２１３記載の方法において、さらに、トレーニング作業負荷は、非線形活性化関数を実行する、ネイティブ命令セットから選択される第６の組の機械語を有するものである方法。
【０１５７】
ＥＣ２１３ｄ）ＥＣ２１３ｃ記載の方法において、非線形活性化関数は、シグモイド、双曲線正接、ＲｅＬＵから成る群から選択されるものである方法。
【０１５８】
ＥＣ２１４）ＥＣ２１３記載の方法において、マッピングは、前記マッピングは、前記ファブリックを初期化してニューラルネットワークの複数の層に分割する工程に従って実行されるものであり、前記ニューロンは前記ニューラルネットワークの複数のニューロンのうちの第１のニューロンであり、前記第１のニューロンは前記複数の層のうちの第１の層に含まれ、前記複数のニューロンのそれぞれは、前記ファブリックの複数のプロセッサ要素にわたり分散してマッピングされるものである方法。
【０１５９】
ＥＣ２１５）ＥＣ２１４記載の方法において、マッピングは、同じ時間量で各層の全てのパスを完了するトレーニングセットの各入力サンプルに従うものである方法。
【０１６０】
ＥＣ２１５ｂ）ＥＣ２１４記載の方法において、マッピングは、同じ所定の時間量以内で各層の全てのパスを完了するトレーニングセットの各入力サンプルに従うものである方法。
【０１６１】
ＥＣ２１５ｃ）ＥＣ２１４記載の方法において、マッピングは、リアルタイムで決定される同じ時間期間内で各層の全てのパスを完了するトレーニングセットの各入力サンプルに従うものである方法。
【０１６２】
ＥＣ２１６）ＥＣ２１４記載の方法において、複数の層は、論理ファブリックパイプライン段を有する論理ファブリックパイプラインとして動作し、各論理ファブリックパイプライン段は、各層における全てのパスの完了を含み、前記各層における完了には、同じ時間量を有する時間ステップが設定されるものである方法。
【０１６３】
ＥＣ２１６ｂ）ＥＣ２１４記載の方法において、複数の層のそれぞれは、各パスの各論理ファブリックパイプラインの論理ファブリックパイプライン段として動作し、各層における完了には、同じ時間量を有する時間ステップが設定されるものである方法。
【０１６４】
ＥＣ２１７）ＥＣ２１４記載の方法において、トレーニングセットの各入力サンプルが、前記複数の層にわたる、前記プロセッサ要素のうちの少なくとも第１の複数のプロセッサ要素を通してストリーミングされる際、前記ニューロンの重みは、前記複数の層にわたり前記第１の複数のプロセッサ要素において選択的に更新されるものである方法。
【０１６５】
ＥＣ２１７ｂ）ＥＣ２１６記載の方法において、トレーニングセットの各入力サンプルは、複数の層にわたり少なくとも第１の複数のプロセッサ要素を通してストリーミングされ、ニューロンの重みは、複数の層にわたり第１の複数のプロセッサ要素において選択的に更新され、ストリーミング及び更新は、複数の時間ステップにわたり各時間ステップで進行中である方法。
【０１６６】
ＥＣ２１８）ＥＣ２１６記載の方法において、プロセッサ要素の少なくとも１つはデジタルクロックを有し、時間ステップは、デジタルクロックのクロックサイクルの整数倍である方法。
【０１６７】
ＥＣ２１８ｂ）ＥＣ２１６記載の方法において、プロセッサ要素の少なくとも１つはデジタルクロックを有し、時間ステップは可変時間量である方法。
【０１６８】
ＥＣ２１８ｃ）ＥＣ２１８又はＥＣ２１８ｂ記載の方法において、時間ステップはリアルタイムで決定されるものである方法。
【０１６９】
ＥＣ２１９）ＥＣ２１４記載の方法において、さらに、
複数の計算エンジンパイプライン段を有する多段計算エンジンパイプラインに従って各計算エンジンを動作させる工程であって、計算エンジン機械サイクルは、各計算エンジンパイプライン段を完了する時間を含み、計算エンジンパイプラインサイクルは、複数の計算エンジンパイプライン段を完了する時間を含む、動作させる工程を含み、
計算エンジン機械サイクルは、デジタルクロックの第１の倍数のクロックサイクルを含み、
複数の層は、論理ファブリックパイプライン段を含む論理ファブリックパイプラインとして動作し、各論理ファブリックパイプライン段は、各層の全てのパスの完了を含み、時間ステップは、各論理ファブリックパイプライン段を完了する時間を含み、
時間ステップは、第２の倍数の計算エンジンパイプラインサイクルを含むものである方法。
【０１７０】
ＥＣ２２０）ＥＣ２１９記載の方法において、第１の倍数は１である方法。
【０１７１】
ＥＣ２２１）ＥＣ２１９記載の方法において、第２の倍数は数百から数千である方法。
【０１７２】
ＥＣ２２２）ＥＣ２１６記載の方法において、さらに、
アクティベーションの順方向伝搬中、複数の時間ステップにわたる各時間ステップで、第１の複数のプロセッサ要素内の逆方向伝搬データの変化に応答して、少なくとも１つの部分的なニューロンの重みを第１の複数のプロセッサ要素内で選択的に更新する工程を含むものである方法。
【０１７３】
ＥＣ２２３）ＥＣ２１６記載の方法において、さらに、
少なくとも１つの部分的なニューロンの重みを複数の時間ステップにわたる各時間ステップで選択的に更新するステップを含むものである方法。
【０１７４】
ＥＣ２２３ｂ）ＥＣ２１７、ＥＣ２１７ｂ、ＥＣ２２２、又はＥＣ２２３記載の方法において、選択的に更新する工程は、連続伝搬勾配降下プロセスに従うものである方法。
【０１７５】
ＥＣ２２４）ＥＣ２１４記載の方法において、ニューラルネットワークは千を超える層を有するものである方法。
【０１７６】
ＥＣ２２５）ＥＣ２１４記載の方法において、複数のニューロンは数十億のニューロンを含むものである方法。
【０１７７】
ＥＣ２２５ｂ）ＥＣ２１４記載の方法において、複数のニューロンは数百万のニューロンを含むものである方法。
【０１７８】
ＥＣ２２５ｃ）ＥＣ２１４記載の方法において、ニューラルネットワークは、複数のニューロンの少なくとも幾つかのニューロンごとに少なくとも１０個の重みを含むものである方法。
【０１７９】
ＥＣ２２５ｄ）ＥＣ２１４記載の方法において、ニューラルネットワークは、複数のニューロンの少なくとも幾つかのニューロンごとに少なくとも１０００個の重みを含むものである方法。
【０１８０】
ＥＣ２２６）ＥＣ２１４記載の方法において、ニューラルネットワークは層ごとに数十億個の重みを含むものである方法。
【０１８１】
ＥＣ２２６ｂ）ＥＣ２１４記載の方法において、ニューラルネットワークは層ごとに数百万個の重みを含むものである方法。
【０１８２】
ＥＣ２２７）ＥＣ２１４記載の方法において、さらに、
ニューラルネットワークの各層で、層の出力アクティベーションを生成するように蓄積された部分和を作成するように入力アクティベーションを加重する工程を含み、累積加重部分和は、ニューラルネットワークのニューロン及び関連付けられたシナプスを表すものである方法。
【０１８３】
ＥＣ２２７ｂ）ＥＣ２２７記載の方法において、各重みはシナプスに対応し、各部分和は刺激に対応し、累積加重部分和は総合刺激に対応し、層の各出力アクティベーションはニューロン出力に対応するものである方法。
【０１８４】
ＥＣ２２８）ＥＣ２１３記載の方法において、さらに、
トレーニングセットを集合的に構成する複数の入力サンプルの各々についてトレーニング作業負荷の反復を実行する工程を有するものである方法。
【０１８５】
ＥＣ２２９）ＥＣ２２８記載の方法において、所定の学習ルールは、トレーニングセット全体の全てのパスが完了した後、少なくとも１つの部分的なニューロンの重みが更新されることを指定するものである方法。
【０１８６】
ＥＣ２２９ｂ）ＥＣ２２９記載の方法において、所定の学習ルールは確率勾配降下プロセスに従うものである方法。
【０１８７】
ＥＣ２２９ｃ）ＥＣ２２９記載の方法において、所定の学習ルールは、ミニバッチ勾配降下プロセスに従うものである方法。
【０１８８】
ＥＣ２２９ｄ）ＥＣ２２９記載の方法において、所定の学習ルールは、連続伝搬勾配降下プロセスに従うものである方法。
【０１８９】
ＥＣ２３０）ＥＣ２２８記載の方法において、さらに、
トレーニングセットを複数のミニバッチに分割する工程を有し、所定の学習ルールは、ミニバッチのそれぞれに含まれる入力サンプルのパスの全てが完了した後、少なくとも１つの部分的なニューロンの重みが更新されることを指定するものである方法。
【０１９０】
ＥＣ２３１）ＥＣ２２８記載の方法において、さらに、
トレーニングセットを複数のミニバッチに分割する工程を含み、所定の学習ルールは、各ミニバッチの各入力サンプルの全てのパスが完了した後、少なくとも１つの部分的なニューロンの重みが更新されることを指定するものである方法。
【０１９１】
ＥＣ２３１ｂ）ＥＣ２３１記載の方法において、所定の学習ルールは、連続伝搬勾配降下プロセスに従うものである方法。
【０１９２】
ＥＣ２３２）ＥＣ２３１記載の方法において、順方向パスは、ミニバッチ学習が第１の複数のプロセッサ要素内で進行している間、第１の複数のプロセッサ要素内で重み更新を組み込むものである方法。
【０１９３】
ＥＣ２３３）ＥＣ２１３記載の方法において、記憶装置は、計算エンジンにローカルなメモリに含まれるものである方法。
【０１９４】
ＥＣ２３３ｂ）ＥＣ２１３記載の方法において、記憶装置は計算エンジンに含まれるものである方法。
【０１９５】
ＥＣ２３３ｂ）ＥＣ２１３記載の方法において、記憶装置は、各計算エンジンに取り付けられる各メモリである方法。
【０１９６】
ＥＣ２３４）ＥＣ２１３記載の方法において、記憶装置は、２Ｄ行列データ構造を記憶することができるものである方法。
【０１９７】
ＥＣ２３４ｂ）ＥＣ２１３記載の方法において、記憶装置は、多次元データ構造を記憶することができるものである方法。
【０１９８】
ＥＣ２３４ｃ）ＥＣ２１３記載の方法において、記憶装置は、２Ｄ、３Ｄ、４Ｄ、５Ｄ、及び６Ｄから成る群から選択される次元を有するテンソルデータ構造を記憶することができるものである方法。
【０１９９】
ＥＣ２３５）ＥＣ２１３記載の方法において、さらに、
各計算エンジンは、勾配累積、順方向部分和、デルタ部分和、及び順方向パスアクティベーションのための記憶装置を有するものである方法。
【０２００】
ＥＣ２３６）ＥＣ２１４記載の方法において、データは、順方向パス中、ニューラルネットワークの論理端部に伝搬し、デルタパス及びチェインパス中、逆論理方向で循環するものである方法。
【０２０１】
ＥＣ２３７）ＥＣ２１３記載の方法において、順方向パスは、デルタパス及びチェインパスによる使用のためにアクティベーションを保存するものである方法。
【０２０２】
ＥＣ２３８）ＥＣ２１３記載の方法において、さらに、
順方向パス、デルタパス、及びチェインパスにわたり各プロセッサ要素を時間共有する工程を含むものである方法。
【０２０３】
ＥＣ２３９）ＥＣ２２８記載の方法において、さらに、
各入力サンプルについて、システムは、入力サンプルに対応する順方向パス、デルタパス、及びチェインパスの完了に応答して、所定の学習ルールに従って少なくとも１つの部分的なニューロンの重みを選択的に更新する工程を有するものである方法。
【０２０４】
ＥＣ２３９ｂ）ＥＣ２３９記載の方法において、所定の学習ルールは、連続伝搬勾配降下プロセスによるものである方法。
【０２０５】
ＥＣ２４０）ＥＣ２３９記載の方法において、さらに、
各順方向パスについて、少なくとも１つの部分的なニューロンの重みの最新の選択的更新によって提供される重み情報を選択的に使用する工程を有するものである方法。
【０２０６】
ＥＣ２４１）ＥＣ２４０記載の方法において、さらに、
トレーニング作業負荷の前の反復に対応する少なくとも１つの部分的なニューロンの重みの選択的更新が行われたか否かに関係なく、トレーニング作業負荷の特定の反復の順方向パスを開始する工程を含むものである方法。
【０２０７】
ＥＣ２４２）ＥＣ２４０記載の方法において、さらに、
トレーニング作業負荷の前の反復のデルタパスが開始されたか否かに関係なく、トレーニング作業負荷の特定の反復の順方向パスを開始する工程を含むものである方法。
【０２０８】
ＥＣ２４３）ＥＣ２４０記載の方法において、さらに、
少なくとも１つの計算エンジンにおいて、トレーニング作業負荷の前の反復の順方向パスの少なくとも一部を実行した後及びトレーニング作業負荷の前の反復に対応する少なくとも１つの部分的なニューロンの重みの選択的更新を実行する前、トレーニング作業負荷の後続反復で順方向パスの少なくとも一部を実行する工程を含むものである方法。
【０２０９】
ＥＣ２４４）ＥＣ２４０記載の方法において、さらに、
少なくとも部分的に第１の部分的なニューロンの重みに基づいて再計算されたアクティベーションに少なくとも部分的に基づいて、各入力サンプルのデルタパス及びチェインパスを選択で実行する工程を有するものである方法。
【０２１０】
ＥＣ２４５）ＥＣ２４４記載の方法において、第１の部分的なニューロンの重みは、最新の選択的更新により生成される部分的なニューロンの重みである方法。
【０２１１】
ＥＣ２４５ｂ）ＥＣ２４５記載の方法において、再計算されたアクティベーションは、計算間で記憶する必要はなく、それにより、所与のシステムトレーニング構成で必要な合計メモリが低減するものである方法。
【０２１２】
ＥＣ２４５ｃ）ＥＣ２３９、ＥＣ２４０、ＥＣ２４１、又はＥＣ２４２記載の方法において、同時層トレーニングは、より高速の収束率で所定の正確性目標を達成できるようにし、それにより、所与のシステムトレーニング構成で必要とされる合計トレーニング時間を低減するものである方法。
【０２１３】
ＥＣ２４５ｄ）ＥＣ２３９、ＥＣ２４０、ＥＣ２４１、又はＥＣ２４２記載の方法において、同時層トレーニングは、所与の合計トレーニング時間及びシステムトレーニング構成の正確性増大を可能にするものである方法。
【０２１４】
ＥＣ２４６）ＥＣ２４０記載の方法において、さらに、
各計算要素において、第１の部分的なニューロンの重みに少なくとも部分的に基づいて再計算されるアクティベーションに少なくとも部分的に基づいて、入力サンプルのデルタパスの部分及びチェインパスの部分を選択的に実行する工程を含むものである方法。
【０２１５】
ＥＣ２４７）ＥＣ２４６記載の方法において、第１の部分的なニューロンの重みは、最新の選択的更新により生成される部分的なニューロンの重みである方法。
【０２１６】
ＥＣ３００）システムであって、
プロセッサ要素の各ファブリックにおいて、ファブリックパケットをプロセッサ要素のうちの他の要素に選択的に通信する手段であって、各プロセッサ要素は、ファブリックルータと、データフローベース及び命令ベースの処理を実行することができる計算エンジンとを有するものである、通信する手段と、
各計算エンジンにおいて、計算エンジンが受信する各ファブリックパケットの仮想チャネル指定子及びタスク指定子に従って処理を選択的に実行する手段と
を有するシステム。
【０２１７】
ＥＣ３００ｂ）システムであって、
プロセッサ要素の各ファブリックにおいて、ファブリックパケットをプロセッサ要素のうちの他の要素に選択的に通信する手段であって、各プロセッサ要素は、ファブリックルータ及び計算エンジンを有するものである、選択的に通信する手段と、
各計算エンジンにおいて、計算エンジンが受信する各ファブリックパケットのデータフローフィールド及び命令フィールドに従って、データフロー処理及び命令処理をそれぞれ選択的に実行する手段と
を有するシステム。
【０２１８】
ＥＣ３００ｃ）ＥＣ３００記載のシステムにおいて、処理はデータフローグラフに従うものであるシステム。
【０２１９】
ＥＣ３００ｄ）ＥＣ３００記載のシステムにおいて、さらに、
主にデータフローベース処理を含み、命令ベース処理は最小の作業負荷を実行する手段を有するものであるシステム。
【０２２０】
ＥＣ３００ｅ）ＥＣ３００ｄ記載のシステムにおいて、システムは長短期メモリ（ＬＳＴＭ）ニューラル・ネットワーク・モデルを実施するものであるシステム。
【０２２１】
ＥＣ３００ｆ）ＥＣ３００記載のシステムにおいて、さらに、
主に命令ベース処理を含み、データフローベース処理は最小の作業負荷を実行する手段を有するものであるシステム。
【０２２２】
ＥＣ３００ｇ）ＥＣ３００記載のシステムにおいて、システムは少なくとも部分的にウェーハスケール集積を使用して実施されるものであるシステム。
【０２２３】
ＥＣ３００ｈ）ＥＣ３００記載のシステムにおいて、プロセッサ要素のファブリックは、少なくとも部分的にＶＬＳＩ製作を使用して実施されるものであるシステム。
【０２２４】
ＥＣ３０１）ＥＣ３００記載のシステムにおいて、仮想チャネル指定子は、ファブリック内の独立した各ルーティングパスを選択するものであるシステム。
【０２２５】
ＥＣ３０１ｂ）ＥＣ３００記載のシステムにおいて、仮想チャネル指定子は、マルチキャストを実行するファブリック内のルーティングパスを選択するものであるシステム。
【０２２６】
ＥＣ３０１ｃ）ＥＣ３００記載のシステムにおいて、仮想チャネル指定子は、負荷分割を実行するファブリック内のルーティングパスを選択するものであるシステム。
【０２２７】
ＥＣ３０２）ＥＣ３００記載のシステムにおいて、タスク指定子は、実行する１若しくはそれ以上の演算を選択するものであるシステム。
【０２２８】
ＥＣ３０３）ＥＣ３００記載のシステムにおいて、ファブリックはプロセッサ要素の２Ｄアレイを含むものであるシステム。
【０２２９】
ＥＣ３０３ｂ）ＥＣ３００記載のシステムにおいて、ファブリックは、完全に接続されたスター、リング、アレイ、メッシュ、ハイパーキューブ、トーラス、及びツリーから成る群から選択されるプロセッサ要素相互接続トポロジを有するものであるシステム。
【０２３０】
ＥＣ３０３ｃ）ＥＣ３００記載のシステムにおいて、ファブリックは、１Ｄ、２Ｄ、３Ｄ、及び３Ｄを超える次元から成る群から選択されるプロセッサ要素相互接続トポロジを有するものであるシステム。
【０２３１】
ＥＣ３０４）ＥＣ３００記載のシステムにおいて、システムは機械学習作業負荷を実行することができるものであるシステム。
【０２３２】
ＥＣ３０５）ＥＣ３００記載のシステムにおいて、システムは、推論アプリケーションを実行するようにトレーニングされるものであるシステム。
【０２３３】
ＥＣ３０５ｂ）ＥＣ３００記載のシステムにおいて、システムは推論アプリケーションを実行するものであるシステム。
【０２３４】
ＥＣ３０６）ＥＣ３００記載のシステムにおいて、システムは、オブジェクト分類及び／又は検出を実行するようにトレーニングされたディープ・ニューラル・ネットワークを実施する推論アプリケーションを実行するものであるシステム。
【０２３５】
ＥＣ３０７）ＥＣ３００記載のシステムにおいて、システムは、テキスト翻訳、光学文字認識、画像分類、顔認識、自動運転車のシーン認識、発話認識、高エネルギー物理学のデータ分析、及び創薬から成る群から選択される推論アプリケーションを実行するようにトレーニングされたディープ・ニューラル・ネットワークを実施するものであるシステム。
【０２３６】
ＥＣ３０８）ＥＣ３００記載のシステムにおいて、ファブリックは、複数の周辺プロセッサ要素及び複数の内部プロセッサ要素として編成され、各内部プロセッサ要素は、複数のプロセッサ要素のうちの少なくとも４つの他のプロセッサ要素に少なくとも４つの論理方向のそれぞれで結合されるものであるシステム。
【０２３７】
ＥＣ３０９）ＥＣ３００記載のシステムにおいて、各計算エンジンは、メモリ、データパス、並びに混成データフロー及び命令実行コントローラを有するものであるシステム。
【０２３８】
ＥＣ３１０）ＥＣ３０９記載のシステムにおいて、各計算エンジンは、複数の計算エンジンパイプライン段を有する多段計算エンジンパイプラインに従って動作するものであるシステム。
【０２３９】
ＥＣ３１１）ＥＣ３０９記載のシステムにおいて、命令実行コントローラは、マイクロコード、ＰＬＡ、１つ若しくは複数のカウンタ、及びゲートレベル状態機械の１つ若しくは複数を使用して実施される命令シーケンサを有するものであるシステム。
【０２４０】
ＥＣ３１２）ＥＣ３０９記載のシステムにおいて、さらに、
各計算エンジンは、レジスタファイル、命令デコーダ、命令キャッシュ、及びデータキャッシュを有するものであるシステム。
【０２４１】
ＥＣ３１２ｂ）ＥＣ３０９記載のシステムにおいて、さらに、
各計算エンジンは、レジスタファイル、命令デコーダ、命令バッファ、及びデータバッファを有するものであるシステム。
【０２４２】
ＥＣ３１３）ＥＣ３００記載のシステムにおいて、
各計算エンジンは、予め定義されたネイティブ命令セットのコードから選択された対応する基本命令の受信に応答して、予め定義された基本演算セットを実行するように構成され、システムは、さらに、
トレーニング作業負荷
を有し、
トレーニング作業負荷は、
プロセッサ要素の計算エンジンへのニューロンの少なくとも一部のマッピングを実行する、ネイティブ命令セットから選択される第１の組の機械語であって、マッピングは、少なくとも１つの部分的なニューロンの重みを管理することを含むものである、第１の組の機械語と、
少なくとも部分的に少なくとも１つの部分的なニューロンの重みに基づいて、順方向論理方向でアクティベーションを伝搬する順方向パスを実行する、ネイティブ命令セットから選択される第２の組の機械語であって、順方向パスは、入力サンプルに応答して開始されるものである、第２の組の機械語と、
逆方向論理方向でデルタパスを実行して、デルタを生成する、ネイティブ命令セットから選択される第３の組の機械語であって、デルタパスは、順方向パスの完了に応答して開始されるものである、第３の組の機械語と、
チェインパスを実行して、デルタに基づいて勾配を計算する、ネイティブ命令セットから選択される第４の組の機械語と、
所定の学習ルールに従い、少なくとも部分的にデルタに基づいて、少なくとも１つの部分的なニューロンの重みの選択的更新を実行する、ネイティブ命令セットから選択される第５の組の機械語と
を有し、
各計算エンジンは、少なくとも１つの部分的なニューロンの重みの記憶装置を有するシステム。
【０２４３】
ＥＣ３１３ａ）ＥＣ３１３記載のシステムにおいて、各基本命令は、ファブリックパケットの各ファブリックパケットのタスク指定子に従って実行されるものであるシステム。
【０２４４】
ＥＣ３１３ｂ）ＥＣ３１３記載のシステムにおいて、ファブリックは、第１、第２、第３、及び第４の物理方向を有するプロセッサ要素の２Ｄアレイを有し、第１及び第２の物理方向は、同一線上且つ逆であり、第３及び第４の物理方向は、同一線上且つ逆であり、第１及び第３の物理方向は直交し、順論理方向は第１の物理方向であり、逆論理方向は第２の物理方向であるシステム。
【０２４５】
ＥＣ３１３ｃ）ＥＣ３１３記載のシステムにおいて、さらに、
トレーニング作業負荷は、非線形活性化関数を実行する、ネイティブ命令セットから選択される第６の組の機械語を有するものであるシステム。
【０２４６】
ＥＣ３１３ｄ）ＥＣ３１３ｃ記載のシステムにおいて、非線形活性化関数は、シグモイド、双曲線正接、ＲｅＬＵから成る群から選択されるものであるシステム。
【０２４７】
ＥＣ３１４）ＥＣ３１３記載のシステムにおいて、マッピングは、ファブリックを初期化して、複数の層へのニューラルネットワークの分割を実施することに従い、ニューロンは、ニューラルネットワークの複数のニューロンの第１のニューロンであり、第１のニューロンは、複数の層の第１の層に含まれ、複数のニューロンのそれぞれは、ファブリックの複数のプロセッサ要素にわたり分散してマッピングされるものであるシステム。
【０２４８】
ＥＣ３１５）ＥＣ３１４記載のシステムにおいて、マッピングは、同じ時間量で各層の全てのパスを完了するトレーニングセットの各入力サンプルに従うものであるシステム。
【０２４９】
ＥＣ３１５ｂ）ＥＣ３１４記載のシステムにおいて、マッピングは、同じ所定の時間量以内で各層の全てのパスを完了するトレーニングセットの各入力サンプルに従うものであるシステム。
【０２５０】
ＥＣ３１５ｃ）ＥＣ３１４記載のシステムにおいて、マッピングは、リアルタイムで決定される同じ時間期間内で各層の全てのパスを完了するトレーニングセットの各入力サンプルに従うものであるシステム。
【０２５１】
ＥＣ３１６）ＥＣ３１４記載のシステムにおいて、複数の層は、論理ファブリックパイプライン段を有する論理ファブリックパイプラインとして動作し、各論理ファブリックパイプライン段は、各層における全てのパスの完了を含み、前記各層における完了には、同じ時間量を有する時間ステップが設定されるものであるシステム。
【０２５２】
ＥＣ３１６ｂ）ＥＣ３１４記載のシステムにおいて、複数の層のそれぞれは、各パスの各論理ファブリックパイプラインの論理ファブリックパイプライン段として動作し、各層における完了には、同じ時間量を有する時間ステップが設定されるものであるシステム。
【０２５３】
ＥＣ３１７）ＥＣ３１４記載のシステムにおいて、トレーニングセットの各入力サンプルが、複数の層にわたる少なくとも第１の複数のプロセッサ要素を通してストリーミングされる際、ニューロンの重みは、複数の層にわたり第１の複数のプロセッサ要素において選択的に更新されるものであるシステム。
【０２５４】
ＥＣ３１７ｂ）ＥＣ３１６記載のシステムにおいて、トレーニングセットの各入力サンプルが、複数の層にわたる少なくとも第１の複数のプロセッサ要素を通してストリーミングされる際、ニューロンの重みは、複数の層にわたり第１の複数のプロセッサ要素において選択的に更新され、ストリーミング及び更新は、複数の時間ステップにわたり各時間ステップで進行中であるものであるシステム。
【０２５５】
ＥＣ３１８）ＥＣ３１６記載のシステムにおいて、さらに、
デジタルクロックを有し、時間ステップは、デジタルクロックのクロックサイクルの整数倍であるシステム。
【０２５６】
ＥＣ３１８ｂ）ＥＣ３１６記載のシステムにおいて、さらに、
デジタルクロックを有し、時間ステップは可変時間量であるシステム。
【０２５７】
ＥＣ３１８ｃ）ＥＣ３１３又はＥＣ３１８ｂ記載のシステムにおいて、時間ステップはリアルタイムで決定されるものであるシステム。
【０２５８】
ＥＣ３１９）ＥＣ３１４記載のシステムにおいて、さらに、
複数の計算エンジンパイプライン段を有する多段計算エンジンパイプラインに従って各計算エンジンを動作させる手段であって、計算エンジン機械サイクルは、各計算エンジンパイプライン段を完了する時間を含み、計算エンジンパイプラインサイクルは、複数の計算エンジンパイプライン段を完了する時間を含む、動作させる手段を有し、
計算エンジン機械サイクルは、デジタルクロックの第１の倍数のクロックサイクルを含み、
複数の層は、論理ファブリックパイプライン段を含む論理ファブリックパイプラインとして動作し、各論理ファブリックパイプライン段は、各層の全てのパスの完了を含み、時間ステップは、各論理ファブリックパイプライン段を完了する時間を含み、
時間ステップは、第２の倍数の計算エンジンパイプラインサイクルを含むものであるシステム。
【０２５９】
ＥＣ３２０）ＥＣ３１９記載のシステムにおいて、第１の倍数は１であるシステム。
【０２６０】
ＥＣ３２１）ＥＣ３１９記載のシステムにおいて、第２の倍数は数百から数千であるシステム。
【０２６１】
ＥＣ３２２）ＥＣ３１６記載のシステムにおいて、さらに、
アクティブ化の順方向伝搬が進行中である間、複数の時間ステップにわたり各時間ステップで第１の複数のプロセッサ要素内の逆方向伝搬データの変更に応答して、第１の複数のプロセッサ要素内の少なくとも１つの部分的なニューロンの重みを選択的に更新する手段を有するものであるシステム。
【０２６２】
ＥＣ３２３）ＥＣ３１６記載のシステムにおいて、さらに、
複数の時間ステップにわたり各時間ステップで少なくとも１つの部分的なニューロンの重みを選択的に更新する手段を有するものであるシステム。
【０２６３】
ＥＣ３２３ｂ）ＥＣ３１７、ＥＣ３１７ｂ、ＥＣ３２２、又はＥＣ３２３記載のシステムにおいて、選択的な更新は、連続伝搬勾配降下プロセスに従うものであるシステム。
【０２６４】
ＥＣ３２４）ＥＣ３１４記載のシステムにおいて、ニューラルネットワークは千を超える層を有するものであるシステム。
【０２６５】
ＥＣ３２５）ＥＣ３１４記載のシステムにおいて、複数のニューロンは数十億のニューロンを含むものであるシステム。
【０２６６】
ＥＣ３２５ｂ）ＥＣ３１４記載のシステムにおいて、複数のニューロンは数百万のニューロンを含むものであるシステム。
【０２６７】
ＥＣ３２５ｃ）ＥＣ３１４記載のシステムにおいて、ニューラルネットワークは、複数のニューロンの少なくとも幾つかのニューロンごとに少なくとも１０個の重みを含むものであるシステム。
【０２６８】
ＥＣ３２５ｄ）ＥＣ３１４記載のシステムにおいて、ニューラルネットワークは、複数のニューロンの少なくとも幾つかのニューロンごとに少なくとも１０００個の重みを含むものであるシステム。
【０２６９】
ＥＣ３２６）ＥＣ３１４記載のシステムにおいて、ニューラルネットワークは層ごとに数十億個の重みを含むものであるシステム。
【０２７０】
ＥＣ３２６ｂ）ＥＣ３１４記載のシステムにおいて、ニューラルネットワークは層ごとに数百万個の重みを含むものであるシステム。
【０２７１】
ＥＣ３２７）ＥＣ３１４記載のシステムにおいて、さらに、
ニューラルネットワークの各層で、層の出力アクティベーションを生成するように蓄積された部分和を作成するように入力アクティベーションを加重する手段を含み、累積加重部分和は、ニューラルネットワークのニューロン及び関連付けられたシナプスを表すものであるシステム。
【０２７２】
ＥＣ３２７ｂ）ＥＣ３２７記載のシステムにおいて、各重みはシナプスに対応し、各部分和は刺激に対応し、累積加重部分和は総合刺激に対応し、層の各出力アクティベーションはニューロン出力に対応するものであるシステム。
【０２７３】
ＥＣ３２８）ＥＣ３１３記載のシステムにおいて、さらに、
集合的にトレーニングセットを構成する複数の入力サンプルの各々について、前記トレーニング作業負荷の反復を実行する手段を有するものであるシステム。
【０２７４】
ＥＣ３２９）ＥＣ３２８記載のシステムにおいて、所定の学習ルールは、トレーニングセット全体の全てのパスが完了した後、少なくとも１つの部分的なニューロンの重みが更新されることを指定するものであるシステム。
【０２７５】
ＥＣ３２９ｂ）ＥＣ３２９記載のシステムにおいて、所定の学習ルールは確率勾配降下プロセスに従うものであるシステム。
【０２７６】
ＥＣ３２９ｃ）ＥＣ３２９記載のシステムにおいて、所定の学習ルールは、ミニバッチ勾配降下プロセスに従うものであるシステム。
【０２７７】
ＥＣ３２９ｄ）ＥＣ３２９記載のシステムにおいて、所定の学習ルールは、連続伝搬勾配降下プロセスに従うものであるシステム。
【０２７８】
ＥＣ３３０）ＥＣ３２８記載のシステムにおいて、さらに、
トレーニングセットを複数のミニバッチに分割する手段を有し、所定の学習ルールは、各ミニバッチの各入力サンプルの全てのパスが完了した後、少なくとも１つの部分的なニューロンの重みが更新されることを指定するものであるシステム。
【０２７９】
ＥＣ３３１）ＥＣ３２８記載のシステムにおいて、さらに、
トレーニングセットを複数のミニバッチに分割する手段を有し、所定の学習ルールは、ミニバッチのそれぞれの各入力サンプルのパスの全てが完了した後、少なくとも１つの部分的なニューロンの重みが更新されることを指定するものであるシステム。
【０２８０】
ＥＣ３３１ｂ）ＥＣ３３１記載のシステムにおいて、所定の学習ルールは、連続伝搬勾配降下プロセスに従うものであるシステム。
【０２８１】
ＥＣ３３２）ＥＣ３３１記載のシステムにおいて、順方向パスは、ミニバッチ学習が第１の複数のプロセッサ要素内で進行中である間、第１の複数のプロセッサ要素内に重み更新を組み込むものであるシステム。
【０２８２】
ＥＣ３３３）ＥＣ３１３記載のシステムにおいて、記憶装置は計算エンジンにローカルなメモリに含まれるものであるシステム。
【０２８３】
ＥＣ３３３ｂ）ＥＣ３１３記載のシステムにおいて、記憶装置は計算エンジンに含まれるものであるシステム。
【０２８４】
ＥＣ３３３ｂ）ＥＣ３１３記載のシステムにおいて、記憶装置は、各計算エンジンに取り付けられる各メモリであるシステム。
【０２８５】
ＥＣ３３４）ＥＣ３１３記載のシステムにおいて、記憶装置は、２Ｄ行列データ構造を記憶することができるものであるシステム。
【０２８６】
ＥＣ３３４ｂ）ＥＣ３１３記載のシステムにおいて、記憶装置は、多次元データ構造を記憶することができるものであるシステム。
【０２８７】
ＥＣ３３４ｃ）ＥＣ３３４ｃ記載のシステムにおいて、記憶装置は、２Ｄ、３Ｄ、４Ｄ、５Ｄ、及び６Ｄから成る群から選択される次元を有するテンソルデータ構造を記憶することができるものであるシステム。
【０２８８】
ＥＣ３３５）ＥＣ３１３記載のシステムにおいて、
各計算エンジンは、勾配累積、順方向部分和、デルタ部分和、及び順方向パスアクティベーションの記憶装置をさらに有するものであるシステム。
【０２８９】
ＥＣ３３６）ＥＣ３１４記載のシステムにおいて、データは、順方向パス中、ニューラルネットワークの論理端部に伝搬し、デルタパス及びチェインパス中、逆論理方向で循環するものであるシステム。
【０２９０】
ＥＣ３３７）ＥＣ３１３記載のシステムにおいて、順方向パスは、デルタパス及びチェインパスによる使用のためにアクティベーションを保存するものであるシステム。
【０２９１】
ＥＣ３３８）ＥＣ３１３記載のシステムにおいて、さらに、
順方向パス、デルタパス、及びチェインパスにわたり各プロセッサ要素を時間共有する手段を有するものであるシステム。
【０２９２】
ＥＣ３３９）ＥＣ３２８記載のシステムにおいて、さらに、
各入力サンプルで、入力サンプルに対応する順方向パス、デルタパス、及びチェインパスの完了に応答して、所定の学習ルールに従って少なくとも１つの部分的なニューロンの重みを選択的に更新する手段を有するものであるシステム。
【０２９３】
ＥＣ３３９ｂ）ＥＣ３３９記載のシステムにおいて、所定の学習ルールは、連続伝搬勾配降下プロセスに従うものであるシステム。
【０２９４】
ＥＣ３４０）ＥＣ３３９記載のシステムにおいて、さらに、
各順方向パスについて、少なくとも１つの部分的なニューロンの重みの最新の選択的更新により提供される重み情報を選択的に使用する手段を有するものであるシステム。
【０２９５】
ＥＣ３４１）ＥＣ３４０記載のシステムにおいて、さらに、
トレーニング作業負荷の事前反復に対応する少なくとも１つの部分的なニューロンの重みの選択的更新が行われたか否かに関係なく、トレーニング作業負荷の特定の反復の順方向パスを開始する手段を有するものであるシステム。
【０２９６】
ＥＣ３４２）ＥＣ３４０記載のシステムにおいて、さらに、
トレーニング作業負荷の事前反復のデルタパスが開始されたか否かに関係なく、トレーニング作業負荷の特定の反復の順方向パスを選択的に開始する手段を有するものであるシステム。
【０２９７】
ＥＣ３４３）ＥＣ３４０記載のシステムにおいて、さらに、
計算エンジンの少なくとも１つにおいて、トレーニング作業負荷の事前反復の順方向パスの少なくとも一部を実行した後及びトレーニング作業負荷の事前反復に対応する少なくとも１つの部分的なニューロンの重みの選択的更新の一部を実行する前、トレーニング作業負荷の後続反復の順方向パスの少なくとも一部を実行する手段を有するものであるシステム。
【０２９８】
ＥＣ３４４）ＥＣ３４０記載のシステムにおいて、さらに、
少なくとも部分的に第１の部分的なニューロンの重みに基づいて再計算されるアクティベーションに少なくとも部分的に基づいて、各入力サンプルのデルタパス及びチェインパスを選択的に実行する手段を有するものであるシステム。
【０２９９】
ＥＣ３４５）ＥＣ３４４記載のシステムにおいて、第１の部分的なニューロンの重みは、最新の選択的更新により生成される部分的なニューロンの重みであるシステム。
【０３００】
ＥＣ３４５ｂ）ＥＣ３４５記載のシステムにおいて、再計算されたアクティベーションは、計算間で記憶する必要がなく、それにより、所与のシステムトレーニング構成で必要とされる総メモリを低減するものであるシステム。
【０３０１】
ＥＣ３４５ｃ）ＥＣ３３９、ＥＣ３４０、ＥＣ３４１、又はＥＣ３４２記載のシステムにおいて、同時層トレーニングは、より高速の収束率で所定の正確性目標を達成できるようにし、それにより、所与のシステムトレーニング構成で必要とされる合計トレーニング時間を低減するものであるシステム。
【０３０２】
ＥＣ３４５ｄ）ＥＣ３３９、ＥＣ３４０、ＥＣ３４１、又はＥＣ３４２記載のシステムにおいて、同時層トレーニングは、所与の合計トレーニング時間及びシステムトレーニング構成の正確性増大を可能にするものであるシステム。
【０３０３】
ＥＣ３４６）ＥＣ３４０記載のシステムにおいて、さらに、
各計算要素において、少なくとも部分的に第１の部分的なニューロンの重みに基づいて再計算されるアクティベーションに少なくとも部分的に基づいて、入力サンプルのデルタパスの部分及びチェインパスの部分を選択的に実行する手段を有するものであるシステム。
【０３０４】
ＥＣ３４７）ＥＣ３４６記載のシステムにおいて、第１の部分的なニューロンの重みは、最新の選択的更新により生成される部分的なニューロンの重みであるシステム。
【０３０５】
ＥＣ４００）方法であって、
複数の順序付きの接続された層を有するニューラルネットワークをトレーニングするステップであって、順序は、各層で、層のうちの他のどの層が各層の前であるか及び層のうちのどの層が各層に後続するかを識別するものである、トレーニングする工程を含み、
各層は１若しくはそれ以上のニューロンを有し、各ニューロンは重みを有し、先行層の少なくとも１つの先行ニューロン及び後続層の少なくとも１つの後続ニューロンに接続され、
各ニューロンは１若しくはそれ以上の処理要素によって実施され、各処理要素は、
ファブリックへの少なくとも１つの結合であって、処理要素は、複数の仮想チャネルを介してファブリックを介して通信することができるものである、少なくとも１つの結合と、
ニューロンの少なくとも計算に対応する命令を記憶することができる第１のメモリと、
重みを記憶することができる第２のメモリと、
第１のメモリのそれぞれからの命令を実行し、第２のメモリのそれぞれからのデータにアクセスすることができるハードウェア実行リソースとを有する
方法。
【０３０６】
ＥＣ４０１）ＥＣ４００記載の方法において、トレーニングは、
第１のアクティベーション及び第１の重みに基づいて、第２のアクティベーションを決定する工程と、
第１のデルタ及び第１の重みに基づいて、第２の重みを決定して保存する工程と、
第３のアクティベーション及び選択された重みに基づいて、第４のアクティベーションを決定する工程であって、選択された重みは、第１の重み及び第２の重みから動的に選択されるものである、第４のアクティベーションを決定する工程と、
第２のデルタ及び選択された重みに基づいて、第３の重みを決定して保存する工程と
を含むものである方法。
【０３０７】
ＥＣ４０２）ＥＣ４０１記載の方法において、第２のアクティベーションを決定する工程は、
少なくとも１つの先行ニューロンからファブリックを介して第１のアクティベーションを受信する工程と、
第１のメモリに記憶された第１の命令を少なくとも実行し、第２のメモリ内の第１の重みにアクセスすることにより、少なくとも部分的に第１のアクティベーション及び第１の重みに基づいて第２のアクティベーションを計算する工程と、
ファブリックを介して少なくとも１つの後続ニューロンに第２のアクティベーションを選択的に送信する工程と
を含むものである方法。
【０３０８】
ＥＣ４０３）ＥＣ４０１記載の方法において、第２の重みを決定して保存する工程は、
少なくとも１つの後続ニューロンからファブリックを介して、部分的に第２のアクティベーションに基づく第１のデルタを受信する工程と、
第１のメモリに記憶された第２の命令を少なくとも実行することにより、少なくとも部分的に第１のデルタ及び第２のアクティベーションに基づいて第１の勾配を計算する工程と、
第１のメモリに記憶された第３の命令を少なくとも実行し、第２のメモリ内の第１の重みにアクセスすることにより、少なくとも部分的に第１の勾配、学習ルール、及び第１の重みに基づいて第２の重みを計算する工程と、
第２の重みを第２のメモリに記憶する工程と
を含むものである方法。
【０３０９】
ＥＣ４０４）ＥＣ４０２記載の方法において、第４のアクティベーションを決定する工程は、
少なくとも１つの先行ニューロンからファブリックを介して第３のアクティベーションを受信する工程と、
第１の命令を少なくとも実行し、第２のメモリ内の選択された重みにアクセスすることにより、少なくとも部分的に第３のアクティベーション及び選択された重みに基づいて第４のアクティベーションを計算する工程と、
ファブリックを介して少なくとも１つの後続ニューロンに第４のアクティベーションを選択的に送信する工程と
を含むものである方法。
【０３１０】
ＥＣ４０５）ＥＣ４０３記載の方法において、第３の重みを決定して保存する工程は、
少なくとも１つの後続ニューロンからファブリックを介して、第４のアクティベーションに部分的に基づく第２のデルタを受信する工程と、
第１のメモリに記憶された第２の命令を少なくとも実行することにより、第３のデルタ及び第４のアクティベーションに少なくとも部分的に基づいて第２の勾配を計算する工程と、
第２のメモリに記憶された第３の命令を少なくとも実行し、第２のメモリ内の選択された重みにアクセスすることにより、第２の勾配、学習ルール、及び選択された重みに少なくとも部分的に基づいて第３の重みを計算する工程と、
第３の重みを第２のメモリに記憶する工程と
を含むものである方法。
【０３１１】
ＥＣ４０６）ＥＣ４０４記載の方法において、第２の重みを決定して保存する工程は、
少なくとも１つの後続ニューロンからファブリックを介して、第２のアクティベーションに部分的に基づく第１のデルタを受信する工程と、
第１のメモリに記憶された第２の命令を少なくとも実行することにより、第１のデルタ及び第２のアクティベーションに少なくとも部分的に基づいて第１の勾配を計算する工程と、
第１のメモリに記憶された第３の命令を少なくとも実行し、第２のメモリ内の第１の重みにアクセスすることにより、第１の勾配、学習ルール、及び第１の重みに少なくとも部分的に基づいて第２の重みを計算する工程と、
第２の重みを第２のメモリに記憶する工程と
を含むものである方法。
【０３１２】
ＥＣ４０７）ＥＣ４０６記載の方法において、第３の重みを決定して保存する工程は、
少なくとも１つの後続ニューロンからファブリックを介して、第４のアクティベーションに部分的に基づく第２のデルタを受信する工程と、
第１のメモリに記憶された第２の命令を少なくとも実行することにより、第３のデルタ及び第４のアクティベーションに少なくとも部分的に基づいて第２の勾配を計算する工程と、
第２のメモリに記憶された第３の命令を少なくとも実行し、第２のメモリ内の選択された重みにアクセスすることにより、第２の勾配、学習ルール、及び選択された重みに少なくとも部分的に基づいて第３の重みを計算する工程と、
第３の重みを第２のメモリに記憶する工程と
を含むものである方法。
【０３１３】
ＥＣ４０８）ＥＣ４０３記載の方法において、選択された重みは、第１の重み及び第２の重みのいずれが最も新しく記憶されたかに従って動的に選択されるものである方法。
【０３１４】
ＥＣ４０９）ＥＣ４０１記載の方法において、第４のアクティベーションを決定する工程は、第２のアクティベーションを決定した後及び第２の重みを決定して保存する前、実行することができるものである方法。
【０３１５】
ＥＣ４１０）ＥＣ４０４記載の方法において、第２のアクティベーション及び第４のアクティベーションを選択的に送信する工程は、第２のアクティベーション及び第４のアクティベーションの各値に選択的に基づくものである方法。
【０３１６】
ＥＣ４１１）ＥＣ４０４記載の方法において、第２のアクティベーション及び第４のアクティベーションを選択的に送信する工程は、第２のアクティベーション及び第４のアクティベーションの各絶対値が第１及び第２の閾値のそれぞれを超えることに選択的に基づくものである方法。
【０３１７】
ＥＣ４１２）ＥＣ４００記載の方法において、少なくとも１つのニューロンは、複数の処理要素により実施されるものである方法。
【０３１８】
ＥＣ４１３）ＥＣ４０５記載の方法において、第４のアクティベーションを決定する工程は、第４のアクティベーションを第２のメモリに記憶する工程をさらに含み、第２の勾配を計算する工程は、第２のメモリ内の第４のアクティベーションにアクセスすることをさらに含むものである方法。
【０３１９】
ＥＣ４１４）ＥＣ４０７記載の方法において、第２の勾配を計算する工程は、選択された重みに少なくとも部分的に基づいて第４のアクティベーションを任意選択で再計算する工程をさらに含むものである方法。
【０３２０】
ＥＣ４１５）ＥＣ４０７記載の方法において、第１の勾配を計算する工程は、第１の重みに少なくとも部分的に基づいて第２のアクティベーションを任意選択で再計算する工程をさらに含むものである方法。
【０３２１】
ＥＣ４１６）ＥＣ４００記載の方法において、各処理要素はデータフローベースの処理を実行することができるものである方法。
【０３２２】
ＥＣ４１７）ＥＣ４００記載の方法において、各処理要素はファブリックルータを有するものである方法。
【０３２３】
ＥＣ４１８）ＥＣ４００記載の方法において、各処理要素は、処理要素のうちの他の処理要素にファブリックパケットを選択的に通信するものである方法。
【０３２４】
ＥＣ４１９）ＥＣ４１８記載の方法において、各処理要素は、処理要素が受信した各ファブリックパケットの仮想チャネル指定子及びタスク指定子に従って処理を実行することができるものである方法。
【０３２５】
選択された実施形態の詳細
ディープ・ラーニング・アクセラレータ・ハードウェア要素及びソフトウェア要素を有するニューラル・ネットワーク・トレーニング及び推論に関連する実施形態について本明細書に記載する（例えば、図１〜図４及び「ディープ・ラーニング・アクセラレータ概説」セクション参照）。ディープ・ラーニング・アクセラレータは、ハードウェア処理要素を有する（例えば、図５〜図８及び「処理要素：計算要素及びルータ」セクション参照）。ディープ・ラーニング・アクセラレータは、タスク開始及び完了（例えば、図９〜図１２及び「タスク」セクション参照）、ウェーブレット処理（例えば、図１３Ａ〜図１５Ｂ及び「ウェーブレット」セクション参照）、タスクブロック及びブロック解除（例えば、図１６及び「ブロック及びブロック解除」セクション参照）、ニューロンスメアリング（例えば、図１７〜図２０及び「ニューロンスメアリング」参照）、ファブリックベクトル、メモリベクトル、及び関連するデータ構造記述子（例えば、図２１Ａ〜図２４及び「ベクトル及びデータ構造記述子」セクション参照）、並びに命令フォーマット（例えば、図２５Ａ〜図２５Ｃ及び「命令フォーマット」セクション参照）等の様々な技法を実施及び／又は使用する。ディープ・ラーニング・アクセラレータは、様々な状況で使用可能である（例えば、図２６Ａ〜図２７Ｅ及び「ディープ・ラーニング・アクセラレータ使用例」セクション並びに図２８Ａ〜図２９及び「作業負荷マッピング例」セクション参照）。ディープ・ラーニング・アクセラレータは、様々な実施形態において考えられる（例えば、「他の実施形態詳細」セクション参照）。ディープ・ラーニング・アクセラレータは様々に実施可能である（例えば、「実施態様技法例」セクション参照）。
【０３２６】
ディープ・ラーニング・アクセラレータ概説
図１は、ニューラル・ネットワーク・システム１００として、ディープ・ラーニング・アクセラレータを使用するニューラル・ネットワーク・トレーニング及びインターフェースのシステムの一実施形態の選択された細部を図示する。概念的に、ニューラルネットワークは、ディープ・ラーニング・アクセラレータを使用してトレーニングされる。次に、トレーニングの１若しくはそれ以上の結果（例えば、重み）を推論に使用する。例えば、トレーニングは、ニューラルネットワークのニューロンをディープ・ラーニング・アクセラレータのＰＥにマッピングすることを含む。次に、トレーニングデータがＰＥに適用される。ＰＥはトレーニングデータを処理し（例えば、順方向パス、デルタパス、及びチェインパスを介して）、トレーニングが完了するまで、重みを更新する。次に、重みは推論に使用される。
【０３２７】
図を参照すると、ディープ・ラーニング・アクセラレータ１２０は、結合１２３によって図示されるように、ＦＰＧＡ１２１及びＰＥ１２２を有し、互いとの通信を可能にする。配置サーバ１５０（ＣＰＵ１５１及びＣＲＭ１５２を有する）は、ＬＡＮ１１１を介して接続サーバ１６０（ＣＰＵ１６１、ＣＲＭ１６２、及びＮＩＣ１６４を有する）に結合される。通信サーバ１６０は、ＮＩＣ１６４及び１００Ｇｂ１１２を介してＦＰＧＡ１２１と通信することができる。自律車両１３０はＣＰＵ１３１、ＣＲＭ１３２、ＩＥ１３３、及びカメラ１３５を有する。携帯電話１４０はＣＰＵ１４１、ＣＲＭ１４２、ＩＥ１４３、及びカメラ１４５を有する。
【０３２８】
インターネット１８０は、様々な実施形態及び／又は使用状況に従って、配置サーバ１５０、接続サーバ１６０、自律車両１３０、及び／又は携帯電話１４０の任意の組合せ間に結合（明示的に図示せず）を提供する。
【０３２９】
破線矢印配置１１３は概念的に、配置サーバ１５０からＰＥ１２２に通信される（例えば、ＬＡＮ１１１、接続サーバ１６０／ＮＩＣ１６４、１００Ｇｂ１１２、ＦＰＧＡ１２１、及び結合１２３を介して）配置情報を示す。幾つかの実施形態及び／又は使用状況では、配置１１３は暗黙的であり、ＰＥ１２２のルータ要素及びＰＥ１２２の計算要素に提供される初期化情報において反映される。幾つかの実施形態及び／又は使用状況では、配置１１３の初期化情報の一部は、ＦＰＧＡ１２１に提供され、ＰＥ１２２と動作するようにＦＰＧＡ１２１の要素を構成する。
【０３３０】
破線矢印重み１１４及び破線矢印重み１１５は概念的に、ＰＥ１２２から自律車両１３０及び携帯電話にそれぞれ通信される（例えば、結合１２３、ＦＰＧＡ１２１、１００Ｇｂ１１２、接続サーバ１６０／ＮＩＣ１６４、及びインターネット１８０を介して）重み情報を示す。幾つかの実施形態及び／又は使用状況では、重み情報は、トレーニングの結果として直接生成される重み情報の全てもしくは任意の部分、そのサブサンプリング、その量子化、及び／又はその他の変換の任意の１若しくはそれ以上である。
【０３３１】
ディープ・ラーニング・アクセラレータ１２０は、１００Ｇｂ１１２を介して受信される配置情報及びトレーニング情報に応答して重みを計算する等により、ニューラルネットワークのトレーニングを実行することができる。ディープ・ラーニング・アクセラレータ１２０はさらに、トレーニング完了後、１００Ｇｂ１１２を介して結果として重みを提供することができる。次に、重みは、自律車両１３０及び／又は携帯電話１４０等での推論に使用可能である。ＰＥ１２２は、比較的多数のＰＥ（例えば、１０，０００以上）を有し、各ＰＥは、トレーニングに関連するルーティング及び計算を独立して実行することができる。幾つかの実施形態及び／又は使用状況では、ＰＥ１２２は、各複数のＰＥが１つのウェーハの各ダイに実装される等のウェーハスケール集積を介して実施される。ＦＰＧＡ１２１は、１００Ｇｂ１１２を介して提供された情報にＰＥ１２２をインターフェースすることができる。インターフェースすることは、結合１２３で通信されるように、ウェーブレットから、変更されたイーサネット（登録商標）フレームへの変換／変更されたイーサネット（登録商標）フレームからウェーブレットへの変換を含む。
【０３３２】
配置サーバ１５０はプログラム的に、１若しくはそれ以上の配置プログラムを介してニューロンの配置を決定することができる（例えば、配置１１３で図示されるように）。配置プログラムはＣＲＭ１５２に記憶され、ＣＰＵ１５１によって実行される。配置情報は、ＬＡＮ１１１を介して接続サーバ１６０に通信される。配置の一例は、物理的メモリ及び実行ハードウェアリソース（例えば、ＰＥ１２２）へのニューラルネットワークの論理ニューロンのマッピングである。
【０３３３】
接続サーバ１６０は、ＦＰＧＡ１２１と通信し、ＰＥ１２２とＦＰＧＡ１２１／結合１２３、ＮＩＣ１６４、及びドライバプログラムを介してそのプログラムされた制御を介して間接的に通信することができる。様々な実施形態及び／又は使用状況では、通信は配置情報（例えば、配置サーバ１５０から）、トレーニング情報（例えば、図示されていないが、インターネット１８０を介してアクセス可能なソースから）、及び／又はトレーニングの結果（例えば、ＰＥ１２２からの重み）を含む。ドライバプログラムはＣＲＭ１６２に記憶され、ＣＰＵ１６１によって実行される。
【０３３４】
自律車両１３０は、プログラム的に制御され、及び／又はＣＲＭ１３２に記憶されたプログラムを実行するＣＰＵ１３１によって支援されるように、ＩＥ１３３を使用して、重み１１４を使用して推論を実行することができる。推論は任意選択及び／又は選択で、カメラ１３５から得られた情報を使用して実行される。例えば、車は自律車両として動作可能である。車は、動画を推論エンジンに提供することができるカメラを有する。推論エンジンは、交通レーン、障害物、及び他の物体等の車のナビゲートに関連する物体を認識することができる。車は、物体認識の結果を使用してナビゲートすることができる。提供、認識、及びナビゲートの任意の組合せは、少なくとも部分的に、ＣＲＭに記憶されたプログラムを実行する１若しくはそれ以上のＣＰＵを介して制御及び／又は実行される。
【０３３５】
携帯電話１４０は、ＣＲＭ１４２に記憶されたプログラムを実行するＣＰＵ１４１によってプログラム的に制御及び／又は支援されるように、ＩＥ１４３を使用して、重み１１５を使用して推論を実行することができる。推論は任意選択及び／又は選択で、カメラ１４５から得られた情報を使用して実行される。例えば、携帯電話は、ソーシャルネットワーキングウェブサイトにタグ付き写真を掲示するように動作可能である。携帯電話は、画像データを推論エンジンに提供することができるカメラを有する。推論エンジンは、画像内の物体にタグ付けすることができる（例えば、「猫」、「犬」等のタイプにより又は「ボブ」、「マリー」等の名前により）。携帯電話は、画像及びタグ付けの結果をソーシャルネットワーキングウェブサイトに掲示することができる。提供、タグ付け、及び掲示の任意の組合せは、少なくとも部分的に、ＣＲＭに記憶されたプログラムを実行する１若しくはそれ以上のＣＰＵを介して制御及び／又は実行される。
【０３３６】
様々な実施形態及び／又は使用状況では、ディープ・ラーニング・アクセラレータを介して決定された重み情報の全て又は任意の部分は、推論使用の前に、アクセラレータ外部で事後処理される。例えば、重み１１４及び／又は重み１１５によって表される情報の全て又は任意の部分は、自律車両１３０及び／又は携帯電話１４０による推論使用前、配置サーバ１５０によって全体的又は部分的に処理される。様々な実施形態及び／又は使用状況では、事後処理の一例は、重み１１４及び／又は重み１１５の量子化（例えば、浮動小数点数フォーマットから固定小数点数フォーマットへの変換）を含む。様々な実施形態及び／又は使用状況では、カメラ１３５及びカメラ１４５はそれぞれ、ＩＥ１３３及びＩＥ１４３に入力を提供するセンサの例である。センサの他の例は、ロケーションセンサ、向きセンサ、磁気センサ、光センサ、及び圧力センサである。
【０３３７】
ＣＰＵ１５１は、各命令セットアーキテクチャと互換性がある１若しくはそれ以上のＣＰＵを有する。ＣＰＵ１５１は、命令セットアーキテクチャに従ってＣＲＭ１５２から命令をフェッチし実行することができる。ＣＰＵ１６１は、各命令セットアーキテクチャと互換性がある１若しくはそれ以上のＣＰＵを有する。ＣＰＵ１６１は、命令セットアーキテクチャに従ってＣＲＭ１６２から命令をフェッチし実行することができる。幾つかの実施形態では、ＣＰＵ１５１の命令セットアーキテクチャの少なくとも１つは、ＣＰＵ１６１の命令セットアーキテクチャの少なくとも１つと互換性がある。
【０３３８】
ＣＰＵ１３１は、各命令セットアーキテクチャと互換性がある１若しくはそれ以上のＣＰＵを有する。ＣＰＵ１３１は、命令セットアーキテクチャに従ってＣＲＭ１３２から命令をフェッチし実行することができる。ＣＰＵ１４１は、各命令セットアーキテクチャと互換性がある１若しくはそれ以上のＣＰＵを有する。ＣＰＵ１４１は、命令セットアーキテクチャに従ってＣＲＭ１４２から命令をフェッチし実行することができる。幾つかの実施形態では、ＣＰＵ１３１の命令セットアーキテクチャの少なくとも１つは、ＣＰＵ１４１の命令セットアーキテクチャの少なくとも１つと互換性がある。幾つかの実施形態では、ＣＰＵ１５１、ＣＰＵ１６１、ＣＰＵ１３１、及びＣＰＵ１４１の任意の１若しくはそれ以上は、互いと互換性がある命令セットアーキテクチャを有する。
【０３３９】
ＣＲＭ１５２、ＣＲＭ１６２、ＣＲＭ１３２、及びＣＲＭ１４２のそれぞれの少なくとも一部は、不揮発性であり、フラッシュメモリ、磁気メモリ、光学メモリ、相変化メモリ、及び他の不揮発性メモリ技術要素の任意の１若しくはそれ以上で構成される。
【０３４０】
様々な実施形態及び／又は使用状況では、ＩＥ１３３及び／又はＩＥ１４３は、ディープ・ラーニング・アクセラレータ１２０によって決定される（重み１１４及び／又は重み１１５により概念的に示される）重み情報を使用することができる１若しくはそれ以上の推論エンジンを有する。様々な実施形態及び／又は使用状況では、ＩＥ１３３は、ＣＰＵ１３１によって実行され、ＣＲＭ１３２に記憶されるプログラムと併せて及び／又はその制御下で動作する。様々な実施形態及び／又は使用状況では、ＩＥ１４３は、ＣＰＵ１４１により実行され、ＣＲＭ１４２に記憶されるプログラムと併せて及び／又はその制御下で動作する。様々な実施形態及び／又は使用状況では、ＩＥ１３３及び／又はＩＥ１４３の全て又は任意の部分は、ＨＷ及び／又はＳＷ技法の様々な組合せを介して実施される。幾つかの実施形態では、ＩＥ１３３及び／又はＩＥ１４３により提供される機能の全て又は任意の部分は、ディープ・ラーニング・アクセラレータ１２０により及び／又は関連付けられて実施される等の技法を使用して実施される。様々な実施形態及び／又は使用状況では、ＩＥ１３３及び／又はＩＥ１４３の全て又は任意の部分は、従来のＣＰＵ、従来のＧＰＵ、従来のＤＳＰ、従来のＦＰＧＡ、及び専用ハードウェアの様々な組合せを含む技法を介して様々に実施される。
【０３４１】
様々な実施形態では、１００Ｇｂ１１２は様々に、標準イーサネット（登録商標）フレームを送信する１００Ｇｂイーサネット（登録商標）結合、変更イーサネット（登録商標）フレームを送信する１００Ｇｂイーサネット（登録商標）結合、変更イーサネット（登録商標）フレームを送信する１００ＧＢ変更イーサネット（登録商標）結合、イーサネット（登録商標）技術以外の１００Ｇｂ直列結合、又は何らかの他の比較的高速の直列結合である。
【０３４２】
幾つかの実施形態及び／又は使用状況では、結合１２３はウェーブレットとして情報を通信する。
【０３４３】
様々な実施形態では、ＬＡＮ１１１は、イーサネット（登録商標）、ファイバチャネル、及び／又は他の適した相互接続技法等の技法を使用して実施される。
【０３４４】
幾つかの実施形態及び／又は使用状況では、配置サーバ１５０及び接続サーバ１６０は、結合サーバ１１０によって概念的に図示されるように、結合要素（例えば、ＣＰＵ、ＣＲＭ、及び／又はＮＩＣリソースの共有）として実施され及び／又は動作する。幾つかの実施形態及び／又は使用状況では、配置サーバ１５０及び接続サーバ１６０は、ＬＡＮ１１１ではなく（又はＬＡＮ１１１に加えて）インターネット１８０を介して結合される。
【０３４５】
図２は、ニューラル・ネットワーク・ソフトウェア２００として、ディープ・ラーニング・アクセラレータを使用して、ニューラル・ネットワーク・トレーニング及び推論に関連付けられたソフトウェア要素の一実施形態の選択された細部を図示する。配置サーバＳＷ２１０は、実施形態により、ニューロンからＰＥへのマッピングＳＷ２１２及び図示されていない他の要素を有する。様々な実施形態及び／又は使用状況では、配置サーバＳＷ２１０の全て又は任意の部分は、図１のＣＲＭ１５２に記憶され、図１のＣＰＵ１５１により実行可能である。ニューロンからＰＥへのマッピングＳＷ２１２の１若しくはそれ以上のプログラムは、図１のＰＥ１２２の特定のＰＥへのニューラルネットワークのニューロンの配置を決定することができる。
【０３４６】
接続サーバＳＷ２２０は、実施形態により、１００Ｇｂ  ＮＩＣドライバ２２４、トレーニング情報プロバイダＳＷ２２５、及び重み受信機ＳＷ２２６、並びに図示されていない他の要素を有する。様々な実施形態及び／又は使用状況では、接続サーバＳＷ２２０の全て又は任意の部分は、図１のＣＲＭ１６２に記憶され、図１のＣＰＵ１６１により実行可能である。１００Ｇｂ  ＮＩＣドライバ２２４の１若しくはそれ以上のプログラムは、接続サーバ１６０とディープ・ラーニング・アクセラレータ１２０との通信を可能にし、接続サーバ１６０及びディープ・ラーニング・アクセラレータ１２０は両方とも図１のものである（ＮＩＣ１６４及び１００Ｇｂ１１２を介して、これらも図１のものである）。トレーニング情報プロバイダＳＷ２２５の１若しくはそれ以上のプログラムは、図１のディープ・ラーニング・アクセラレータ１２０への通信のために（ＮＩＣ１６４及び１００Ｇｂ１１２を介した）、１００Ｇｂ  ＮＩＣドライバ２２４の制御下で適用するトレーニング情報を決定できるようにする。様々な実施形態及び／又は使用状況では、トレーニング情報は様々に、例えば、両方とも図１の接続サーバ１６０及び／又はインターネット１８０がアクセス可能な不揮発性記憶装置から決定される。重み受信機ＳＷ２２６の１若しくはそれ以上のプログラムは、ディープ・ラーニング・アクセラレータ１２０によって決定されるように、１００Ｇｂ  ＮＩＣドライバ２２４の制御下で重み情報を受信できるようにする（ＮＩＣ１６４及び１００Ｇｂ１１２を介して）。
【０３４７】
様々な実施形態及び／又は使用状況では、ＦＰＧＡ上の種々ＳＷ２５０は概念的に、ＦＰＧＡ１２１（図１の）に含まれる１若しくはそれ以上のＣＰＵによって実行されるＳＷを表す。ＦＰＧＡのＣＰＵは、例えば、ＦＰＧＡ１２１の１若しくはそれ以上の要素の製造中、ハードコードされ、及び／又はＦＰＧＡ１２１の１若しくはそれ以上の要素の初期化中、ソフトコードされる。様々な実施形態及び／又は使用状況では、ＦＰＧＡ上の種々ＳＷ２５０及び／又はその表現の全て又は任意の部分は、ＦＰＧＡ１２１に含まれ、及び／又は接続サーバ１６０がアクセス可能な不揮発性メモリに記憶される。様々な実施形態及び／又は使用状況では、ＦＰＧＡ上の種々ＳＷ２５０は、図１のＰＥ１２２の初期化及び／又はデバッグに関連する等の様々なハウスキーピング機能を実行できるようにする。
【０３４８】
様々な実施形態及び／又は使用状況では、ＰＥ上のタスクＳＷ２６０は概念的に、ＰＥ１２２のうちの様々なＰＥでタスクとして実行される分散ＳＷを表す。様々な実施形態及び／又は使用状況では、ＰＥ上のタスクＳＷ２６０及び／又はその表現の全ての又は任意の部分は、ＰＥ１２２に含まれ、及び／又は接続サーバ１６０がアクセス可能な不揮発性メモリに記憶される。様々な実施形態及び／又は使用状況では、ＰＥ上のタスクＳＷ２６０は、ニューラルネットワークの重みの決定等のトレーニングデータの処理の実行を可能にする（例えば、順方向パス、デルタパス、及びチェインパスを介して）。
【０３４９】
自律車両ＳＷ２３０は、実施形態により、ビデオカメラＳＷ２３２、推論エンジンＳＷ２３３、及びナビゲートＳＷ２３４、並びに図示されていない他の要素を有する。様々な実施形態及び／又は使用状況では、自律車両ＳＷ２３０の全て又は任意の部分は、図１のＣＲＭ１３２に記憶され、図１のＣＰＵ１３１により実行可能である。ビデオカメラＳＷ２３２の１若しくはそれ以上のプログラムは、動画情報を推論エンジンＳＷ２３３に提供するような図１のカメラ１３５の制御及び／又は動作を可能にする。推論エンジンＳＷ２３３の１若しくはそれ以上のプログラムは、動画情報から、回避する物体及び／又は辿る交通レーン等のナビゲーション情報を特定するような図１のＩＥ１３３の制御及び／又は動作を可能にする。ナビゲートＳＷ２３４の１若しくはそれ以上のプログラムは、ナビゲーション情報に応答して自律車両ＳＷ２３０のナビゲートを可能にする。
【０３５０】
携帯電話ＳＷ２４０は、実施形態により、静止カメラＳＷ２４２、推論エンジンＳＷ２４３、掲示ＳＷ２４４、及び図示されていない他の要素を有する。様々な実施形態及び／又は使用状況では、携帯電話ＳＷ２４０の全て又は任意の部分は、図１のＣＲＭ１４２に記憶され、図１のＣＰＵ１４１により実行可能である。静止カメラＳＷ２４２の１若しくはそれ以上のプログラムは、推論エンジンＳＷ２４３に静止画像情報を提供するような図１のカメラ１４５の制御及び／又は動作を可能にする。推論エンジンＳＷ２４３の１若しくはそれ以上のプログラムは、静止画像情報からタグ情報を特定するような図１のＩＥ１４３の制御及び／又は動作を可能にする。掲示ＳＷ２４４の１若しくはそれ以上のプログラムは、静止画像情報及び／又はタグ情報に応答してソーシャルネットワーキングウェブサイトへの掲示を可能にする。
【０３５１】
様々な実施形態及び／又は使用状況では、ＳＷコレクションである配置サーバＳＷ２１０、接続サーバＳＷ２２０、自律車両ＳＷ２３０、及び／又は携帯電話ＳＷ２４０の任意の１若しくはそれ以上は任意選択及び／又は選択で、１若しくはそれ以上のオペレーティングシステム要素、例えば、１若しくはそれ以上のリアルタイムオペレーティングシステム、１若しくはそれ以上の非リアルタイムオペレーティングシステム、及び／又は各ＳＷコレクションの要素を調整する１若しくはそれ以上の他の制御プログラムを有する。
【０３５２】
図３は、ニューラル・ネットワーク・トレーニング／推論３００として、ディープ・ラーニング・アクセラレータを使用して、ニューラルネットワークをトレーニングし、トレーニングされたニューラルネットワークを使用して推論を実行することに関連する処理の一実施形態の選択された細部を図示する。図示のように、ニューラルネットワークのニューロンは、動作３１０において、配置される、例えば、割り振られ、及び／又は特定のＰＥリソースに関連付けられる。次に、動作３２０において、ＦＰＧＡリソースが、ニューラルネットワークのトレーニングへの準備として初期化される。次に、動作３３０において、ＰＥリソースが、ニューラルネットワークのトレーニングへの準備として初期化される。
【０３５３】
ＦＰＧＡリソース及びＰＥリソースが、トレーニングへの準備として初期化された後、動作３４０において、トレーニングデータはＰＥに適用される。動作３５０において、ＰＥリソースはトレーニングデータを処理する。次に、動作３６０において、例えば、トレーニングデータの適用が完了し、及び／又は１若しくはそれ以上の完了基準（決める限度未満の推論エラー等）が満たされるため、トレーニングが完了したか否かをチェックして判断する。完了してない場合、フローは次に動作３４０に戻り、更なるトレーニングデータを適用する。幾つかの状況では、トレーニングは完了せず、幾つかの実施形態では、制御は代わりに別の動作（図示せず）に渡されて、ニューラルネットワークの変更を可能にする（例えば、ニューロンの層の追加、ニューロンの層の削除）。次に、変更されたニューラルネットワークは、動作３１０、３２０、３３０、３４０、３５０、及び３６０に従ってトレーニングされる。
【０３５４】
トレーニングが完了した場合、フローは、３７０における推論に使用されるトレーニングの結果である重みを提供することに続く。幾つかの実施形態及び／又は使用状況では、重みは量子化され、例えば、整数データフォーマットに変換される。幾つかの実施形態及び／又は使用状況では、整数データフォーマットは、精度低減数フォーマット（例えば、８ビット又は１６ビット）である。次に、重みは１若しくはそれ以上の推論エンジンに提供され、動作３８０において推論を行うのに使用される。
【０３５５】
様々な実施形態及び／又は使用状況では、推論エンジンは、１若しくはそれ以上の推論アプリケーション、例えば、テキスト変換、光学文字認識、画像分類、顔認識、自動運転車のシーン認識、発話認識、高エネルギー物理学でのデータ解析、及び創薬に対応する。
【０３５６】
様々な実施形態及び／又は使用状況では、ＰＥリソースは、例えば、図１のＰＥ１２２に対応し、ＦＰＧＡリソースは図１のＦＰＧＡ１２１に対応する。
【０３５７】
様々な実施形態及び／又は使用状況では、ニューラル・ネットワーク・トレーニング／推論３００の動作の全て又は任意の部分の任意の１若しくはそれ以上は、図１のニューラル・ネットワーク・システム１００及び／又は図２のニューラル・ネットワーク・ソフトウェア２００の任意の１若しくはそれ以上の要素の全ての又は任意の部分により実行され、及び／又は関連する。例えば、動作３１０の全て又は任意の部分は、ニューロンからＰＥへのマッピングＳＷ２１２の実行を介して配置サーバ１５０により実行される。別の例として、動作３２０の全て又は任意の部分は、ニューロンからＰＥへのマッピングＳＷ２１２の実行を介して配置サーバ１５０により実行される。別の例として、動作３３０の全て又は任意の部分は、ニューロンからＰＥへのマッピングＳＷ２１２の実行を介して配置サーバ１５０により実行される。別の例として、動作３３０の全て又は任意の部分は、ＰＥ上のタスクＳＷ２６０の実行を介してＰＥ１２２により実行される。別の例として、動作３４０の全て又は任意の部分は、トレーニング情報プロバイダＳＷ２２５の実行を介して接続サーバ１６０により実行される。別の例として、動作３５０の全て又は任意の部分は、ＰＥ上のタスクＳＷ２６０の実行を介してＰＥ１２２により実行される。別の例として、動作３５０の全て又は任意の部分は、結合サーバ１１０、配置サーバ１５０、及び／又は接続サーバ１６０により実行される。別の例として、３７０の全て又は任意の部分は、重み受信機ＳＷ２２６の実行を介して接続サーバ１６０により実行される。別の例として、動作３７０の全て又は任意の部分は、ＦＰＧＡ上の種々ＳＷ２５０の実行を介してＦＰＧＡ１２１により実行される。別の例として、３８０の全て又は任意の部分は、推論エンジンＳＷ２３３の制御下等でＩＥ１３３により実行される。別の例として、動作３８０の全て又は任意の部分は、推論エンジンＳＷ２４３の制御下等でＩＥ１４３により実行される。
【０３５８】
様々な実施形態及び／又は使用状況では、ニューラル・ネットワーク・トレーニング／推論３００の動作の全て又は任意の部分の任意の１若しくはそれ以上は、図１のニューラル・ネットワーク・システム１００の様々な要素間での情報通信を併せて実行される。例えば、ニューラル・ネットワーク・トレーニング／推論３００の様々な動作は、少なくとも部分的に、接続サーバ１６０とＦＰＧＡ１２１との間で情報を通信するＮＩＣ１６４及び１００Ｇｂ１１２を介して実行される。別の例として、ニューラル・ネットワーク・トレーニング／推論３００の様々な動作は、接続サーバ１６０とＰＥ１２２との間で情報を通信するＦＰＧＡ１２１及び結合１２３と併せて実行される。別の例として、ニューラル・ネットワーク・トレーニング／推論３００の様々な動作は、少なくとも部分的にインターネット１８０により可能になるように、情報を通信する配置サーバ１５０、接続サーバ１６０、自律車両１３０、及び携帯電話１４０の任意の１若しくはそれ以上を併せて実行した。
【０３５９】
図４は、ディープ・ラーニング・アクセラレータ４００としてのディープ・ラーニング・アクセラレータの一実施形態の選択された細部を図示する。各ＰＥ４９９要素は、ＰＥ４９９要素のうちの他の要素への結合を有する。ＰＥ要素のうちの２つ（ＰＥ４９７及びＰＥ４９８）は、一意の識別子を有して図示されており、その他の点では、ＰＥ４９９のインスタンスとそれぞれ同一である。ＰＥ４９７は、ＰＥのうちの他のＰＥへの結合（北結合４３０、ＰＥ４９８への東結合４３１、及び南結合４３２）及びＩ／Ｏ  ＦＰＧＡの１つへの結合（西結合４３３）という４つの結合のそれぞれについて識別子を有して図示されているが、その他の点では、図示されているＰＥ要素のうちの他の要素と同一である。幾つかの実施形態及び／又は使用状況では、結合は論理結合及び／又は物理結合である。様々な実施形態及び／又は使用状況では、結合は、ウェーブレット、背圧情報、又は両方の通信に使用可能である。様々な実施形態及び／又は使用状況では、物理的結合の全て又は任意の部分は、物理的に隣接するＰＥへのものである。幾つかの実施形態及び／又は使用状況では、ＰＥは２Ｄグリッドにおいて物理的に実施される。幾つかの実施形態及び／又は使用状況では、ＰＥは並んだ矩形の２Ｄグリッドにおいて物理的に実施され、隣接するＰＥは、水平境界を共有するＰＥ（互いに対して北／南ＰＥ）及び垂直境界を共有するＰＥ（互いに対して東／西ＰＥ）に対応する。
【０３６０】
幾つかの実施形態及び／又は使用状況では、同じＡＳＩＣの同一インスタンスのアレイがウェーハ上に形成され、同じＡＳＩＣのそれぞれは、同じＰＥ（例えば、ＰＥ４９９）の複数の同一インスタンスを有し、ウェーハスケール集積技法で使用可能なウェーハ（例えば、ウェーハ４１２）を形成する。幾つかの実施形態及び／又は使用状況では、ＰＥの周縁部分は、Ｉ／Ｏ  ＦＰＧＡ４２０に結合される。ＡＳＩＣの例は、ＰＥの列編成セクション（例えば、一次元様式で複製されて、ウェーハを形成する）を有するＡＳＩＣ４１０及びＰＥの正方形編成セクション又は矩形編成セクション（例えば、二次元様式で複製されて、ウェーハを形成する）を有するＡＳＩＣ４１１として図示される。ウェーハ上の他の編成のＡＳＩＣも考えられる。
【０３６１】
幾つかの実施形態及び／又は使用状況では、ニューラルネットワークにおける層に関連付けられたニューロンは一般に、左から右にＰＥ４９９要素上に配置され、先の層（例えば、入力層）は左側にあり、後続層（例えば、出力層）は右側にある。したがって、トレーニング中のデータフローは、破線矢印順方向４０１、デルタ４０２、及びチェイン４０３として概念的に図示される。順方向４０１中、刺激が入力層に適用され、入力層からのアクティベーションは後続層に流れ、最終的に出力層に達し、順方向結果を生成する。デルタ４０２中、デルタ（例えば、順方向結果とトレーニング出力データとの差）は逆方向に伝搬する。チェイン４０３中、デルタがデルタ４０２中に生成されるため、デルタに基づいて勾配（例えば、ニューロンの重みに関する）が計算される。幾つかの実施形態及び／又は使用状況では、デルタ４０２の処理は実質的に４０３の処理と重複する。
【０３６２】
幾つかの実施形態及び／又は使用状況では、ディープ・ラーニング・アクセラレータ４００は、図１のディープ・ラーニング・アクセラレータ１２０の一実施態様である。幾つかの実施形態及び／又は使用状況では、個々のＰＥ４９９要素は、図１のＰＥ１２２の個々のＰＥに対応する。幾つかの実施形態及び／又は使用状況では、各ＡＳＩＣ４１０要素又は代替的には各ＡＳＩＣ４１１要素は、個々の集積回路として実装されるＰＥ１２２のＰＥの全て又は任意の部分に対応する。幾つかの実施形態及び／又は使用状況では、各ＡＳＩＣ４１０要素又は代替的には各ＡＳＩＣ４１１要素は、ウェーハの各ダイを介して実装されるＰＥ１２２の（任意選択で同一の）部分に対応する。幾つかの実施形態及び／又は使用状況では、Ｉ／Ｏ  ＦＰＧＡ４２０要素は集合的に、図１のＦＰＧＡ１２１に対応する。
【０３６３】
幾つかの実施形態及び／又は使用状況では、ＰＥ４９９要素へのニューロン（例えば、ニューラルネットワーク内の層に関連付けられる）の配置は全体的又は部分的に、図２の配置サーバＳＷ２１０の全て又は任意の部分により実行される。
【０３６４】
処理要素：計算要素及びルータ
図５は、ディープ・ラーニング・アクセラレータのＰＥ５００としてＰＥの一実施形態の選択された細部を図示する。ＰＥ５００はルータ５１０と、計算要素５２０とを有する。ルータ５１０は選択で及び／又は条件付きで、結合５１１〜５１６を介して他のＰＥ（例えば、論理的及び／又は物理的に隣接するＰＥ）とインスタントＰＥとの間でウェーブレットを通信する。ルータ５１０は選択で及び／又は条件付きで、オフランプ（Ｏｆｆ  Ｒａｍｐ）５２１を介してインスタントＰＥにウェーブレットを通信し、オンランプ（Ｏｎ  Ｒａｍｐ）５２２を介してインスタントＰＥからウェーブレットを通信する。計算要素５２０は、ウェーブレットから導出可能な命令アドレス情報に従って、ウェーブレットに具現されたデータに対して計算を実行する。命令アドレス情報は、計算要素のメモリに記憶された命令として具現されるタスクの開始アドレスを識別するのに使用される。
【０３６５】
様々な実施形態では、５１１〜５１６の任意の１若しくはそれ以上は省かれる。
【０３６６】
幾つかの実施形態及び／又は使用状況では、ＰＥ５００は図４のＰＥ４９９の一実施形態であり、及び／又はＰＥ５００の要素はＰＥ４９９の一実施態様に対応する。幾つかの実施形態及び／又は使用状況では、北５１３、東５１５、南５１６、及び西５１１は、図４の北結合４３０、東結合４３１、南結合４３２、及び西結合４３３にそれぞれ対応する。
【０３６７】
図６は、ルータ６００としてＰＥのルータ一実施形態の選択された細部を図示する。複数のＰＥがあり、各ＰＥが各ルータ及び各ＣＥを有すると考える。ルータ６００は、各ルータの１つのインスタンスである。ルータ６００は、ウェーブレットのカラー情報及びルーティング構成情報に従って、インスタントルータが含まれるＰＥ及びルータのうちの他のルータのＣＥにウェーブレットをルーティングする。ルーティングされたウェーブレットは様々に、インスタントルータにより受信され、及び／又はインスタントルータが含まれるＰＥのＣＥにより生成される。ルーティングは、ＰＥ間での通信を可能にする。ストール情報が通信されて、ルータ６００でのウェーブレット記憶リソースのオーバーフローを回避する。
【０３６８】
ルータ６００は、４つのグループのインターフェースを有する：データイン（Ｄａｔａ  Ｉｎ）６１０、データアウト（Ｄａｔａ  Ｏｕｔ）６２０、ストールアウト（Ｓｔａｌｌ  Ｏｕｔ）６３０、及びソース（Ｓｏｕｒｃｅｓ）６４０。データイン６１０、データアウト６２０、ストールアウト６３０、及びソース６４０はそれぞれ、インターフェース要素６１１〜６１７、６２１〜６２７、６３１〜６３７、及び６４１〜６４７を有する。ルータ６００は、データイン６１０、データアウト６２０、ストールアウト６３０、及びソース６４０にそれぞれ結合される書き込みデコーダ（Ｗｒｉｔｅ  Ｄｅｃ）６５１、アウト（Ｏｕｔ）６５２、ストール生成（Ｇｅｎ  Ｓｔａｌｌ）６５６、及びストール（Ｓｔａｌｌ）６５７をさらに有する。ルータ６００は、ストール生成６５６に結合されたＳｒｃ６７０を有するソース６５３をさらに有する。ルータ６００はデータキュー（Ｄａｔａ  Ｑｕｅｕｅｓ）６５０、制御情報（Ｃｏｎｔｒｏｌ  Ｉｎｆｏ）６６０、及びスケジュール済みルータ（Ｒｏｕｔｅｒ  Ｓｃｈｅｄ）６５４をさらに有する。制御情報６６０は宛先（Ｄｅｓｔ）６６１及び送信元（Ｓｅｎｔ）６６２を有する。
【０３６９】
データキュー６５０は書き込みデコーダ６５１に結合されて、入力ウェーブレット情報を受信し、アウト６５２に結合されて、出力ウェーブレット情報を提供する。データキュー６５０は、ストール生成６５６にさらに結合されて、データキュー有効性情報を提供する。スケジュール済みルータ６５４は制御情報６６０に結合されて、キュー配置ウェーブレットのスケジューリングに関する制御情報を受信する。スケジュール済みルータ６５４はスタール６５７にさらに結合されて、キュー配置ウェーブレットのスケジューリングに関するストール情報を受信する。スケジュール済みルータ６５４はアウト６５２にさらに結合されて、６２１〜６２７の１若しくはそれ以上でのキュー配置ウェーブレットの提示を指示する。スケジュール済みルータ６５４はストール生成６５６にさらに結合されて、ストール情報の生成を部分的に指示する。
【０３７０】
様々な実施形態では、インターフェース要素６１１〜６１７、６２１〜６２７、６３１〜６３７、及び６４１〜６４７のそれぞれは、ルータ６００の１インスタンスとルータ６００の別のインスタンスとの間で追加の機能に適応するように、受動相互接続（例えば、バッファリングなしのワイヤ）、能動相互接続（例えば、選択及び／又は任意選択のバッファリングを用いるワイヤ）、及び論理を用いた結合を介して様々に実施される。
【０３７１】
幾つかの実施形態及び／又は使用状況では、ルータ６００は図５のルータ５００の一実施態様である。
【０３７２】
幾つかの実施形態では、データイン６１０のそれぞれ及びデータアウト６２０のそれぞれは、西５１１、スキップ西５１２、北５１３、スキップ東５１４、東５１５、南５１６、オフランプ５２１、及びオンランプ５２２の部分に対応する。例えば、オンランプ６１７はオンランプ５２２に対応し、オフランプ６２７はオフランプ５２１に対応する。別の例として、Ｙ＋６１５はデータを受信することができる北５１３の部分を有し、Ｙ＋６２５はデータを送信することができる北５１３の部分を有する。
【０３７３】
図７は、ウェーブレットイングレス７１０、ストール情報７２０、及びウェーブレットイグレス７３０として処理要素のルータに関連付けられた処理の一実施形態の選択された細部を図示する。概念上、ルータはイングレスポートから可能な限り多くのウェーブレットを受け入れ、必要に応じて、キュー空間に空きがある場合、キューに入れ、単位時間（例えば、クロックサイクル）当たり可能な限り多くのウェーブレットをイグレスポートにルーティングする。ウェーブレットイングレス７１０は、各キューのそれぞれで、隣接した（論理的及び／又は物理的に）ＰＥ及び／又はインスタントＰＥからのウェーブレットイングレスに対応する動作７１１〜７１３を有する。スタール情報７２０は、各キューのそれぞれでストール情報の提供に対応する動作７２１〜７２３を有する。ウェーブレットイグレス７３０は、各キューのそれぞれで、隣接する（論理的及び／又は物理的に）ＰＥ及び／又はインスタントＰＥへのウェーブレットイグレスに対応する動作７３１〜７３４を有する。幾つかの状況では、ウェーブレットのカラー情報及びルーティング構成情報に従って、ウェーブレット送信７３４は、ウェーブレットを１つのキューエントリから１つの宛先に送信する（例えば、ユニキャスト）。幾つかの状況では、ウェーブレットのカラー情報及びルーティング構成情報に従って、ウェーブレット送信７３４は、ウェーブレットを１つのキューエントリから複数の宛先に送信する（例えば、マルチキャスト）。様々な実施形態及び／又は使用状況では、７１０、７２０、及び／又は７３０の動作の全て又は任意の部分の任意の１若しくはそれ以上は、図６のルータ６００の任意の１若しくはそれ以上の要素の全て又は任意の部分により実行される動作及び／又は関連する動作に対応する。
【０３７４】
図８は、ＣＥ８００として処理要素の計算要素の一実施形態の選択された細部を図示する。
【０３７５】
様々な実施形態では、ＣＥ８００は、オフランプ８２０及びオンランプ８６０を介してルータに結合される。ＣＥ８００は、オフランプ８２０を介してウェーブレットを受信するために結合されたＱｄｉｓｔｒ８２４を有する。Ｑｄｉｓｔｒ８２４は、ウェーブレットを送信するためにスケジューリング情報（Ｓｃｈｅｄｕｌｉｎｇ  Ｉｎｆｏ）８９６に結合される。スケジューリング情報８９６は、Ｑ８９７、アクティブビット（Ａｃｔｉｖｅ  Ｂｉｔｓ）８９８、及びブロックビット（Ｂｌｏｃｋ  Ｂｉｔｓ）８９９を有する。
【０３７６】
様々な実施形態では、Ｑ８９７は、各ファブリックカラー（例えば、他の処理要素により作成され、各カラーに関連付けられたウェーブレットを保持する）及び各ローカルカラー（例えば、ＣＥ８００により作成され、各カラーに関連付けられたウェーブレットを保持する）のキュー、例えば、Ｑ０  ８９７．０，...，ＱＮ  ８９７．Ｎを有する。Ｑ８９７（例えば、Ｑ０  ８９７．０）のそれぞれ１つには、アクティブビット８９８（例えば、アクティブビット０  ８９８．０）及びブロックビット８９９（例えば、ブロックビット０  ８９９．０）のそれぞれ１つが関連付けられる。アクティブビット８９８のそれぞれ１つ及びブロックビット８９９のそれぞれ１つは、Ｑ８９７のそれぞれ１つについての情報を含み、例えば、ブロックビットＮ  ８９９．Ｎは、ＱＮ８９７．Ｎがブロックされるか否かを示す。
【０３７７】
様々な実施形態では、各カラーの物理的Ｑ、カラーの所定のサブセットの１若しくはそれ以上の物理的Ｑ、及びカラーの動的に決定されるサブセットの１若しくはそれ以上の物理的Ｑが様々に存在する。様々な実施形態では、同じサイズの１若しくはそれ以上の物理的Ｑ（例えば、それぞれが同数のウェーブレットを保持することができる）及び異なるサイズの１若しくはそれ以上の物理的Ｑ（例えば、それぞれが異なる数のウェーブレットを保持することができる）が様々に存在する。様々な実施形態では、仮想Ｑに様々にマッピングされる１若しくはそれ以上の物理的Ｑがあり、各仮想Ｑには１若しくはそれ以上のカラーが関連付けられる。例えば、Ｎ個の論理Ｑ及びＮ個未満の物理的Ｑがある。別の例として、Ｑ８９７の幾つかは８つのウェーブレットを保持することができ、Ｑ８９７のうちの他のものは３つのウェーブレットを保持することができる。幾つかの実施形態では、Ｑ８９７の特定の１つに関連付けられた１若しくはそれ以上のカラーのトラフィックは、推定及び／又は測定され、Ｑ８９７の特定の１つは、トラフィックに基づいて特定の数のウェーブレットを保持することができる。
【０３７８】
ハッシュ８２２はＱｄｉｓｔｒ８２４に結合され、少なくとも部分的にウェーブレットのカラーに基づいて、ウェーブレットを記憶する物理的キューを選択する（例えば、ハッシュ関数をカラーに適用することにより）。幾つかの実施形態では、ウェーブレットペイロードに関連付けられたカラーは、キュー内のエントリが全体ウェーブレット（カラーを有するペイロード）を保持するように、キュー内のウェーブレットペイロードを用いて明示的に記憶される。幾つかの実施形態では、ウェーブレットペイロードに関連付けられたカラーは、キュー内のエントリが、関連付けられたカラーを記憶せずにウェーブレットペイロードを記憶するように、キュー内のウェーブレットペイロードを用いて明示的に記憶されない。ウェーブレットペイロードのカラーは、ウェーブレットペイロードが記憶された特定のキュー等から推測される。
【０３７９】
幾つかの実施形態では、アクティブビット８９８及びブロックビット８９９の１若しくはそれ以上は、各カラーに１つのエントリでＮ個のエントリを有する各ビットベクトルとして実施される。様々な実施形態では、アクティブビット８９８及びブロックビット８９９の１若しくはそれ以上は、各カラーに１つのエントリを有するテーブル内の各ビットフィールドとして実施される。
【０３８０】
ピッカー（Ｐｉｃｋｅｒ）８３０は、スケジューリング情報８９６、ＲＦ８４２、デコーダ（Ｄｅｃ）８４０、ベース（Ｂａｓｅ）８９０、ＰＣ８３４、Ｉ配列（Ｉ−Ｓｅｑ）８３６，及びＤ配列（Ｄ−Ｓｅｑ）８４４に結合される。ピッカー８３０は、Ｑ８９７の１つから、処理するウェーブレットを選択することができる。幾つかの実施形態では、ピッカー８３０は、Ｑ８９７の１つを選択し、選択されたキュー内の最も古いウェーブレットを選択することによりウェーブレットを選択する。幾つかの状況では、ピッカー８３０は、デコーダ８４０が、終了命令が復号化されたことを通知する場合、処理する新しいウェーブレットを選択する。幾つかの他の状況（例えば、ファブリック入力にアクセスする命令）では、ピッカー８３０は、Ｄ配列８４４から受信したキュー識別子に応答して、Ｑ８９７の１つから処理する新しいウェーブレットを選択する。
【０３８１】
ピッカー８３０は、Ｑ８９７の１つから選択されたウェーブレットを受信し、選択されたウェーブレットからのデータ及びインデックスの１若しくはそれ以上をＲＦ８４２に送信することができる。幾つかの実施形態では、Ｑ８９７はデータパス（Ｄａｔａ  Ｐａｔｈ）８５２に結合され、データパスは、Ｑの１つから直接データを受信することができる。ピッカー８３０は、ベースアドレスをベース８９０から読み出し、命令アドレスを計算して、ＰＣ８３４及びＩ配列８３６に送信することができる。ベース８９０は、ベースアドレスを記憶し、Ｄ配列８４４にも結合される。ＰＣ８３４は、フェッチする次の命令のアドレスを記憶する。様々な実施形態では、ベース８９０及びＰＣ８３４はレジスタとして実施される。幾つかの実施形態では、Ｄ配列８４４は、ベース８９０からベースアドレスを読み出し、少なくとも部分的にベース８９０から読み出された値に基づいて、メモリ８５４及びＤストア（Ｄ−Ｓｔｏｒｅ）８４８から１若しくはそれ以上のアドレスにおけるデータを要求することができる。
【０３８２】
Ｉ配列８３６はＰＣ８３４に結合され、ＰＣ８３４を読み出し変更することができる（例えば、シーケンシャル命令のインクリメント又は分岐命令の非シーケンシャル）。Ｉ配列８３６はメモリ８５４にも結合され、命令フェッチアドレスをメモリ８５４に提供することができる（例えば、ＰＣ８３４に基づいて）。
【０３８３】
メモリ８５４はデコーダ８４０、データパス８５２、及びＤ配列８４４にさらに結合される。Ｉ配列８３６からの命令フェッチアドレスに応答して、メモリ８５４は、命令フェッチアドレスに配置された命令をデコーダ８４０（命令デコーダ）に提供することができる。様々な実施形態では、メモリ８５４は、各命令フェッチアドレスに応答して、最高で３つまでの命令を提供することができる。幾つかの実施形態では、命令は、図２５Ａ、図２５Ｂ、及び図２５Ｃの１若しくはそれ以上に従ってフォーマットされる。
【０３８４】
デコーダ８４０は、様々な実施形態及び／又は使用状況に従って命令の１若しくはそれ以上の特性を特定することができる。例えば、デコーダ８４０は、命令を解析してオペコード（例えば、図２５Ａのオペコード２５１２）及びゼロ以上のオペランド（例えば、発信元及び／又は宛先オペランド）にすることができる。別の例として、デコーダ８４０は、命令タイプ（例えば、分岐命令又は乗累算命令等）に従って命令を識別することができる。さらに別の例では、デコーダ８４０は、命令が特定の命令であると判断することができ、それに従って１若しくはそれ以上の信号をアクティベーションする。
【０３８５】
デコーダ８４０は、終了（Ｔｅｒｍｉｎａｔｅ）８１２を介してピッカー８３０に結合され、復号化された命令の１つが、タスクを終わらせる終了命令（例えば、選択されたウェーブレットに応答して開始されたタスク応答して実行される命令の最後の命令）であることを通知することができる。
【０３８６】
幾つかの状況では、デコーダ８４０は分岐命令を復号化することができる。分岐命令の例には、ＰＣ８３４を条件付きで変更する条件付き分岐命令及び無条件でＰＣ８３４を変更するジャンプ命令がある。分岐命令はＩ配列８３６によって実行され、任意選択で及び／又は条件付きでＰＣ８３４を変更する。幾つかの状況では、分岐命令は、ＰＣ８３４を条件付きで変更することによりソフトウェア制御フロー（例えば、ループ）を実施する。
【０３８７】
命令（例えば、乗累算命令）の復号化に応答して、デコーダ８４０は、オペコードをデータパス８５２に送信することができる。デコーダ８４０はＤＳＲ８４６に結合され、１若しくはそれ以上のオペランド識別子をＤＳＲ８４６に送信することができる。デコーダ８４０はＤ配列８４４にも結合され、１若しくはそれ以上のオペランドタイプ識別子をＤ配列８４４に送信することができる。
【０３８８】
ＤＳＲ８４６は、データ構造記述子（ＤＳＤ）を保持するレジスタを有し、Ｄ配列８４４に結合され、１若しくはそれ以上のＤＳＤをＤ配列８４４に送信することができる。幾つかの実施形態では、ＤＳＲは、発信元ＤＳＲ、宛先ＤＳＲ、拡張ＤＳＲ、及びストライドレジスタを有する。デコーダ８４０からのオペランド識別子の受信に応答して、ＤＳＲ８４６は、オペランド識別子によって指定されたＤＳＤを読み出し、ＤＳＤをＤ配列８４４に送信することができる。様々な実施形態では、ＤＳＲ８４６は、最高で２つまでの発信元オペランド識別子及び１つの宛先オペランド識別子を受信し、２つの発信元ＤＳＲ及び１つの宛先ＤＳＲを読み出し、２つの発信元ＤＳＤ及び１つの宛先ＤＳＤをＤ配列８４４に送信することができる。幾つかの実施形態では、ＣＥはＤＳＲロード命令に応答してＤＳＤをメモリからＤＳＲに明示的に書き込むことができ、ＣＥは、ＤＳＲ記憶命令に応答して、ＤＳＤをＤＳＲからメモリに明示的に書き込むことができる。幾つかの実施形態では、ＤＳＲ８４６は、メモリ８５４に結合され、メモリ８５４からデータを受信し、メモリ８５４にデータを送信することができる。
【０３８９】
幾つかの実施形態では、ＤＳＲ８４６は３組のＤＳＲを有する：発信元０オペランドの１２個のＤＳＲ（Ｓ０ＤＳＲと呼ばれることもある）、発信元１オペランドの１２個のＤＳＲ（Ｓ１ＤＳＲと呼ばれることもある）、及び宛先オペランドの１２個のＤＳＲ（ＤＤＳＲと呼ばれることもある）を有する。加えて、ＤＳＲ８４６は、６つの拡張ＤＳＲ（ＸＤＳＲと呼ばれることもある）及び６つのストライドレジスタも有する。幾つかの実施形態では、ＤＳＲは４８ビットを有し、ＸＤＳＲは５１ビットを有し、ストライドレジスタは１５ビットを有する。様々な実施形態では、各命令は、４８ビットのデータをメモリ（例えば、Ｄストア（Ｄ−Ｓｔｏｒｅ）８４８又はメモリ８５４）から各ＤＳＲにロードする（例えば。ＬＤＳ０ＷＤＳ、ＬＤＳ１ＷＤＳ、及びＬＤＤＷＤＳ命令はそれぞれ、発信元０ＤＳＲ、発信元１ＤＳＲ、及び宛先ＤＳＲをロードする）。様々な実施形態では、各命令は、各ＤＳＲからの４８ビットのデータをメモリに記憶する（例えば、ＳＴＳ０ＷＤＳ、ＳＴＳ１ＷＤＳ、及びＳＴＤＷＤＳ命令はそれぞれ、発信元０ＤＳＲ、発信元１ＤＳＲ、及び宛先ＤＳＲをメモリに記憶する）。幾つかの実施形態では、命令（例えば。ＬＤＸＤＳ）は、メモリからのデータをＸＤＳＲにロードし、他の命令（例えば、ＳＴＸＤＳ）はＸＤＳＲからのデータをメモリに記憶する。データをメモリとＸＤＳＲ（例えば、ＬＤＸＤＳ及びＳＴＸＤＳ）との間で移動させる命令は、メモリの６４ビットにアクセスし、下位５１ビットのみを使用する。幾つかの実施形態では、命令（例えば、ＬＤＳＲ）は、メモリからのデータをストライドレジスタにロードし、他の命令（例えば、ＳＴＳＲ）はストライドレジスタからのデータをメモリに記憶する。幾つかの実施形態では、データをメモリとストライドレジスタとの間で移動させる命令は、メモリの１６ビットにアクセスし、下位１５ビットのみを使用する。
【０３９０】
Ｄ配列８４４はＤストア８４８、ＲＦ８４２、及びピッカー８３０にも結合され、ＤＳＲ８４６から受信されたＤＳＤに応答して、様々なソースにおけるベクトルデータへのアクセスを開始することができる。幾つかの状況では（例えば、１Ｄメモリベクトル、４Ｄメモリベクトル、及び循環メモリバッファの１つを記述するＤＳＤの受信に応答して）、Ｄ配列８４４は、アクセスする一連のメモリアドレス（例えば、メモリ８５４及び／又はＤストア８４８内の）を計算することができる。幾つかの他の状況では（例えば、ファブリック入力を記述するＤＳＤの受信に応答して）、Ｄ配列８４４は、ピッカー８３０を介してＱ８９７の１つからのファブリックデータの読み出しを開始することができる。さらに他の状況では（例えば、ファブリック出力を記述するＤＳＤの受信に応答して）、Ｄ配列８４４は、ウェーブレットへのデータの変換及びオンランプ８６０を介したファブリックへのウェーブレットの送信を開始することができる。幾つかの実施形態では、Ｄ配列８４４は、３つのソースにおけるベクトルデータに同時にアクセスすることができる（例えば、メモリからのベクトルデータの読み出し、ファブリック入力からのベクトルデータ読み出し、及びファブリック出力へのベクトルデータの書き込み）。
【０３９１】
幾つかの実施形態では、Ｄ配列８４４は、ＲＦ８４２内の１若しくはそれ以上のレジスタ内のデータにアクセスすることができる（例えば、１若しくはそれ以上の入力オペランド及び／又は１つの出力オペランドを有する命令）。幾つかの状況では、Ｄ配列８４４は、ＲＦ８４２内のレジスタからのオペランドを要求することができる。さらに他の状況では、Ｄ配列８４４は、ＤＳＤに従ってアクセスする一連のメモリアドレスを計算するための入力として、ＲＦ８４２内のレジスタからのデータ（例えば、インデックス）を要求することができる。
【０３９２】
データパス８５２はＲＦ８４２及びＤストア８４８に結合される。様々な実施形態では、メモリ８５４、ＲＦ８４２、Ｑ８９７、及びＤストア８４８の任意の１若しくはそれ以上は、データをデータパス８５２に提供し（例えば、Ｄ配列８４４からの要求に応答して）、データパス８５２からデータ（例えば、動作の結果）を受信することができる。データパス８５２はまた、オンランプ８６０を介してルータにも結合され、オンランプ８６０を介してデータをルータに送信することができる。データパス８５２は、演算（例えば、実施形態により、復号化されたオペコードにより指定され、及び／又はデコーダ８４０により提供される）を実行することができる実行リソース（例えば、ＡＬＵ）を有する。幾つかの実施形態では、ＲＦ８４２は、ＧＰＲ０〜ＧＰＲ１５と呼ばれることもある１６個の汎用レジスタを有する。各ＧＰＲは１６ビット幅であり、整数又は浮動小数点データを記憶することができる。
【０３９３】
幾つかの実施形態では、Ｄストア８４８は、メモリ８５４よりも小さく、より効率的な（例えば、１ビットデータ読み出し当たりのジュール数がより低い）メモリの一種である。幾つかの実施形態では、Ｄストア８４８は、メモリ８５４より比較的容量が低く（例えば、保持する情報量がより少ない）、比較的アクセス待ち時間が短く及び／又は比較的スループットが高いメモリの一種である。幾つかの状況では、より頻繁に使用されるデータはＤストア８４８に記憶され、一方、あまり頻繁に使用されないデータはメモリ８５４に記憶される。幾つかの実施形態では、Ｄストア８４８は第１のアドレス範囲を有し、メモリ８５４は第２の非重複アドレス範囲を有する。
【０３９４】
幾つかの実施形態及び／又は使用状況では、図の要素は図５の計算要素５２０の一実施態様に対応し、オフランプ８２０及びオンランプ８６０は、図５のオフランプ５２１及びオンランプ５２２にそれぞれ対応する。
【０３９５】
図８に図示される分割及び結合は単に例示であり、異なる分割及び／又は結合を有する他の実施形態も考えられる。例えば、他の実施形態では、ＲＦ８４２及びＤＳＲ８４６は１つのモジュールに結合される。さらに他の実施形態では、ＤＳＲ８４６及びデータパス８５２は結合される。
【０３９６】
タスク
図９は、フロー９００としてタスク開始のウェーブレットを処理する一実施形態の選択された細部を図示する。概念的には、処理は、タスクの命令のフェッチ及び実行を開始するアドレスを特定することによってタスクを開始することを含む。アドレスは、少なくとも部分的にウェーブレットが含む情報に基づいて特定される。
【０３９７】
幾つかの実施形態では、タスク開始のウェーブレットの処理は、例えば、処理の１若しくはそれ以上のキュー（タスク開始に使用可能なウェーブレットを選択９０５）の中から使用可能なウェーブレットを選択することで開始する（開始９０１）。幾つかの実施形態では、ウェーブレットは、各キューに関連付けられたブロック／ブロック解除状態、各キューに関連付けられたアクティブ／非アクティブ状態、前に選択されたウェーブレットのカラー、及びスケジューリングアルゴリズムの１若しくはそれ以上に基づいて選択される。
【０３９８】
使用可能なウェーブレットを選択した後、そのウェーブレットをチェックして、そのウェーブレットが制御ウェーブレットであるか、それともデータウェーブレットであるかを判断する（制御／データ？９０８）。ウェーブレットが制御ウェーブレットである場合、制御ウェーブレットに関連付けられたタスクの開始アドレスが、ウェーブレットのインデックスの下位６ビットをベースレジスタに追加することによって計算される（下位インデックスビットをベースレジスタに追加して、命令アドレスを形成９３０）。ウェーブレットが制御ウェーブレットではない場合、ウェーブレットはデータウェーブレットである。データウェーブレットに関連付けられたタスクの開始アドレスは、ウェーブレットのカラーを４倍したものにベースレジスタを追加することによって計算される（（カラー＊４）をベースレジスタに追加して、命令アドレスを形成９２０）。制御ウェーブレットで計算されるか、又はデータウェーブレットで計算されるタスクの開始アドレスは、タスクの命令の開始アドレスに対応する。
【０３９９】
命令の開始アドレスが計算されると、命令は開始命令アドレスからフェッチされる（メモリ内の命令アドレスから命令をフェッチ９５０）。フェッチされた命令の１若しくはそれ以上は、復号化され実行される（フェッチされた命令を実行９６０）。フェッチ及び実行（動作９５０及び９６０に図示されるように）は、終了命令が実行される（終了９６２）まで続けられ（終了せず９６１）、終了命令が実行されると、次に、開始されたタスクに関連付けられた処理は完了する（終わり９９０）。幾つかの実施形態では、終了命令は、ウェーブレットの処理に関連付けられた最後の命令である。開始されたタスクが完了した後、フローは任意選択で及び／又は選択で、開始９０１から開始して、タスク開始の別のウェーブレットの処理に進む。
【０４００】
様々な使用状況に従って、実行（フェッチされた命令を実行９６０）は、シーケンシャル命令及び／又は制御フロー命令を実行することを含み、フェッチに使用される命令アドレスは、それに従って変わる（メモリ内の命令アドレスから命令をフェッチ９５０）。
【０４０１】
タスク開始に選択された使用可能なウェーブレットは、特定のカラーで構成される。幾つかの実施形態及び／又は使用状況では、使用可能なウェーブレットがタスク開始に選択されると（タスク開始に使用可能なウェーブレットを選択９０５）、特定のカラーの受信した更なるウェーブレットがある場合、そのウェーブレットは、命令を実行するためのオペランドとして使われる（フェッチされた命令を実行９６０）。オペランドとして特定のカラーを有するウェーブレットを使用することは、終了命令のフェッチ及び実行（終了９６２）まで続く。
【０４０２】
幾つかの実施形態及び／又は使用状況では、フロー９００の動作の全て又は任意の部分は、ＰＥのＣＥ、例えば、図８のＣＥ８００によって実行される演算及び／又はＣＥの要素に概念的に対応し、及び／又は概念的に関連する。一例として、ブロックビット８９９は、各キューに関連付けられたブロック／ブロック解除状態に対応する。アクティブビット８９８は、各キューに関連付けられたアクティブ／非アクティブ状態に対応する。別の例として、動作９０５の部分はピッカー８３０によって実行される。ピッカー８３０は、ラウンドロビン又は最後からピック等のスケジューリングポリシーに従って、使用可能なＱ８９７の１つから最も古いウェーブレットを選択する（例えば、ブロックビット８９９の関連付けられた１つは設定され、アクティブビット８９８の関連付けられた１つは設定される）。ピッカー８３０により選択されたウェーブレットは、図１３Ａ及び図１３Ｂの一方によりフォーマットされたカラー及びウェーブレットペイロードを有する。
【０４０３】
別の例として、動作９０８はＣＥ８００の要素によって実行される。ウェーブレットペイロードの制御ビット（例えば、図１３Ａの制御ビット１３２０）がアサートされる場合（例えば、ピッカー８３０によって判断される）、ウェーブレットは制御ウェーブレットである。続けて、動作９３０が、ピッカー８３０等のＣＥ８００がベース８９０の内容を図１３Ａの下位インデックスビット１３２１．１の下位６ビットに追加して、制御ウェーブレットに関連付けられたタスクの命令の命令フェッチアドレスを形成することによって実行される。次に、ピッカー８３０は命令フェッチアドレスをＰＣ８３４に提供する。ウェーブレットペイロードの制御ビット（例えば、図１３Ａの制御ビット１３２０）がデアサートされる場合（例えば、ピッカー８３０により判断される）、ウェーブレットはデータウェーブレットである。続けて、動作９２０が、ピッカー８３０等のＣＥ８００が、ウェーブレットのカラー（例えば、図１３Ａ及び図１３Ｂのカラー１３２４に対応する）を４で乗算したものにベース８９０の内容を追加して、データウェーブレットに関連付けられたタスクの命令の命令フェッチアドレスを形成することにより実行される。次に、ピッカー８３０は、命令フェッチアドレスをＰＣ８３４に提供する。
【０４０４】
別の例として、動作９５０は、ＣＥ８００の要素、例えば、ＰＣ８３４、Ｉ配列８３６、及びメモリ８５４によって実行される。動作９６０は、ＣＥ８００の要素、例えば、特にデコーダ８４０、Ｄ配列８４４、メモリ８５４、ＲＦ８４２、及びデータパス８５２によって実行される。実行は、終了命令の実行を含む。終了命令の一例は、終了ビットがアサートされた命令である。この例の状況では、デコーダ８４０が終了命令を復号化すると、デコーダ８４０は終了８１２を介してピッカー８３０に、ウェーブレットが終わったことを通知し、ピッカー８３０は、例えば、動作９０５に対応する処理の別のウェーブレットを選択する。
【０４０５】
様々な実施形態及び／又は使用状況では、タスク開始のウェーブレットを処理する要素９００の全て又は任意の部分は概念的に、図２のＰＥ上のタスクＳＷ２６０の命令の実行の全て又は任意の部分に対応する。
【０４０６】
様々な実施形態及び／又は使用状況では、フロー９００を含む動作の全て又は任意の部分は概念的に、図１５Ａのフロー１５００及び／又は図１５Ｂのフロー１５５０の全て又は任意の部分に様々に対応する。例えば、動作９０５は動作１５５２の全て又は任意の部分を含み、動作９０８、９２０、９３０、９５０、及び９６０は、動作１５５３の全て又は任意の部分を含む。
【０４０７】
図１０は、命令処理１０００として、処理要素の計算要素に関連付けられた命令処理の一実施形態の選択された細部を図示する。
【０４０８】
幾つかの実施形態及び／又は使用状況では、命令処理１０００の動作の全て又は任意の部分は、ＰＥのＣＥ、例えば、図８のＣＥ８００の要素によって実行される動作及び／又はＣＥの要素に概念的に対応又は関連する。
【０４０９】
図１１は、依存性管理１１００として、クローズアウトを介して依存性管理に関連付けられたフローの一実施形態の選択された細部を図示する。
【０４１０】
幾つかの実施形態及び／又は使用状況では、依存性管理１１００の動作の全て又は任意の部分は、図１のＰＥ１２２の要素によって実行される動作及び／又はＰＥ１２２の要素に概念的に対応又は関連する。幾つかの実施形態及び／又は使用状況では、依存性管理１１００の要素の全て又は任意の部分は、図２のＰＥ上のタスクＳＷ２６０の命令の実行の全て又は任意の部分に概念的に対応する。
【０４１１】
図１２は、アクティベーション累積／クローズアウト及び部分和計算／クローズアウト１２００として、アクティベーション累積及びクローズアウト、その後に続く部分和計算及びクローズアウトに関連付けられたフローの一実施形態の選択された細部を図示する。
【０４１２】
幾つかの実施形態及び／又は使用状況では、アクティベーション累積／クローズアウト及び部分和計算／クローズアウト１２００の動作の全て又は任意の部分は概念的に、図１のＰＥ１２２の要素によって実行される動作及び／又はＰＥ１２２の要素に対応又は関連する。幾つかの実施形態及び／又は使用状況では、アクティベーション累積／クローズアウト及び部分和計算／クローズアウト１２００の要素の全て又は任意の部分は概念的に、ＰＥ上のタスクＳＷ２６０の命令の実行の全て又は任意の部分に対応する。幾つかの実施形態及び／又は使用状況では、クローズアウト（例えば、動作１２１０に関連付けられる）は制御ウェーブレットの一例である。
【０４１３】
ウェーブレット
図１３Ａは、スパースウェーブレット１３０１としてスパースウェーブレットの一実施形態の選択された細部を図示する。スパースウェーブレット１３０１は、スパース・ウェーブレット・ペイロード１３０２と、カラー１３２４とを有する。スパース・ウェーブレット・ペイロード１３０２は、インデックス１３２１と、スペースデータ１３２２と、制御ビット１３２０とを有する。インデックス１３２１は、下位インデックスビット１３２１．１と、上位インデックスビット１３２１．２とを有する。
【０４１４】
幾つかの実施形態では、スパースデータ１３２２は、１６ビット浮動小数点数又は１６ビット整数のフィールドを有する。様々な状況では、スパースデータ１３２２は様々に、ニューラルネットワークの重み、ニューラルネットワークの入力又は刺激、ニューラルネットワークのアクティベーション、又はニューラルネットワークの部分和を表す。
【０４１５】
幾つかの実施形態では、インデックス１３２１は１６ビットフィールドを有する。幾つかの状況では、インデックス１３２１は整数であり、ニューラルネットワークの特定のニューロンを明示的に示すインデックスである。幾つかの実施形態では、下位インデックスビット１３２１．１は６ビットであり、上位インデックスビット１３２１．２は１０ビットである。
【０４１６】
幾つかの実施形態では、制御ビット１３２０は１ビットフィールドである。幾つかの状況では、制御ビット１３２０は、スパース・ウェーブレット・ペイロード１３０２が制御活動をトリガーするか、それともデータ活動をトリガーするかを示す。幾つかの状況では、制御活動は、ニューロンの最後のアクティベーションを計算することを含み、データ活動は、最後のアクティベーションではないニューロンのアクティベーションを計算することを含む。幾つかの実施形態及び／又は使用状況では、制御活動は、図１１の前の層からのクローズアウト１１１０及び／又は次の層へのクローズアウト１１２２の任意の１若しくはそれ以上及び図１２のアクティベーションクローズアウトの受信１２０４及び／又はクローズアウト送信１２１０の任意の１若しくはそれ以上等のクローズアウト活動を含む。
【０４１７】
幾つかの実施形態では、カラー１３２４は５ビットフィールドを有する。幾つかの実施形態では、カラーは、カラーに従ったルーティングを介する等の共有物理チャネルを介した仮想チャネルに対応する。幾つかの状況では、カラーは、構成情報を処理要素に送信する又は処理要素にマッピングされるニューロンにニューラルネットワークの入力を送信する等の特定の目的で使用される。
【０４１８】
図１３Ｂは、高密度ウェーブレット１３３１として高密度ウェーブレットの一実施形態の選択された細部を図示する。高密度ウェーブレット１３３１は、高密度ウェーブレットペイロード１３３２と、カラー１３４４とを有する。高密度ウェーブレットペイロード１３３２は、高密度データ１３４３．１と、高密度データ１３４３．２と、制御ビット１３４０とを有する。
【０４１９】
幾つかの実施形態では、制御ビット１３４０は、１ビットフィールドであり、機能的に制御ビット１３２０と同一である。
【０４２０】
幾つかの実施形態では、カラー１３４４は、５ビットフィールドを有し、カラー１３２４と機能的に同一である。
【０４２１】
幾つかの状況では、高密度データ１３４３．１及び高密度データ１３４３．２は、各１６ビット浮動小数点数又は各１６ビット整数のフィールドを有する。様々な状況では、高密度データ１３４３．１及び高密度データ１３４３．２は様々に、ニューラルネットワークの重み、ニューラルネットワークの入力又は刺激、ニューラルネットワークのアクティベーション、又はニューラルネットワークの部分和を表す。幾つかの状況では、高密度データ１３４３．１及び高密度データ１３４３．２は集合的に、３２ビット浮動小数点数を有する（例えば、高密度データ１３４３．１は、３２ビット浮動小数点数の第１の部分を有し、高密度データ１３４３．２は、３２ビット浮動小数点数の第２の部分を有する）。
【０４２２】
様々な実施形態及び／又は使用状況では、スパースウェーブレットの使用対高密度ウェーブレットの使用は様々に、予め決定され、動的に決定され、及び／又は両方である。様々な実施形態及び／又は使用状況では、スパースウェーブレットの使用対高密度ウェーブレットの使用は、ソフトウェアによって決定される。
【０４２３】
図１４は、ウェーブレット作成フロー１４００として、ウェーブレットを作成し送信する一実施形態の選択された細部を図示する。ウェーブレット作成フロー１４００の動作は、様々なエージェントにより実行される。送信ＰＥは、送信ＰＥ１４２０のＣＥで図示されるように、動作１４０３〜１４０７を実行するＣＥを有する。送信ＰＥは、送信ＰＥ１４３０のルータで図示されるように、動作１４０８を実行するルータをさらに有する。受信ＰＥは、受信ＰＥ１４４０のルータで図示されるように、動作１４０９を実行するルータを有する。
【０４２４】
ウェーブレットの作成及び送信は、少なくとも１つの送信ＰＥ及び１若しくはそれ以上の受信ＰＥ並びに送信ＰＥ及び受信ＰＥを結合するファブリックを実施するルータを有する任意のＰＥを初期化する（ＰＥ初期化１４０２）ことで開始される（開始１４０１）。各ＰＥは、各ルータ（例えば、図５のルータ５１０）と、各ＣＥ（例えば、図５の計算要素５２０）とを有する。幾つかの状況では、ＰＥを初期化することは、ＰＥのＣＥが計算を実行できるようにし、ＰＥのルータがファブリックを介してウェーブレットを送信、受信、及び／又は転送できるようにする。
【０４２５】
様々な実施形態では、ＤＳＲは、データ要素（例えば、メモリ、ファブリック入力、及び／又はファブリック出力）のロケーション、データ要素の数（例えば、長さ）、データ要素の１若しくはそれ以上のアドレス（例えば、開始アドレス及びメモリ内のストライド）等のオペランドについての情報を有する。ファブリック出力オペランド（例えば、ファブリックを介して送信されたウェーブレット）の場合、ＤＳＲは、ファブリック上のウェーブレットのカラー、制御ビット、及び任意選択でインデックスの値又はロケーションを含む。
【０４２６】
幾つかの実施形態では、送信ＰＥのＣＥはソース（ソース設定１４０３）を構成する。幾つかの状況では、ソースは、ソースオペランドを記述するソースＤＳＤである。様々な実施形態では、ソースＤＳＤは、キャッシュ及びメモリの１つに記憶された１若しくはそれ以上のデータ要素を記述する。他の実施形態では、ソースＤＳＤは、ファブリックを介して受信される１若しくはそれ以上のデータ要素を記述する（例えば、データ要素は、ファブリックを介して到着したウェーブレットのペイロードである）。幾つかの他の状況では、ソースはソースレジスタ（例えば、ＲＦ８４２の１つ）を含む。さらに他の状況では、ソースは、命令で即時指定された、を含む。
【０４２７】
ＣＥは又ファブリック宛先オペランドを記述する宛先ＤＳＲにおいて宛先ＤＳＤを構成する（宛先（ファブリック）ＤＳＲ設定１４０４）。幾つかの実施形態では、宛先ＤＳＤは、ファブリックを介して送信された１若しくはそれ以上のデータ要素を記述する。様々な実施形態では、発信元ＤＳＤ及び宛先ＤＳＤは、１若しくはそれ以上の命令を介して構成される。
【０４２８】
続けて、ＣＥは、宛先ＤＳＲにおいてＤＳＤによって指定された宛先オペランドを含む命令（例えば、ＦＭＡＣＨ、ＭＯＶ、ＬＴ１６）をフェッチし復号化する（宛先ＤＳＲを有する命令をフェッチ／復号化１４０４．５）。幾つかの実施形態では、命令のオペランドタイプフィールドは、オペランドがＤＳＤによって指定されるか否かを指定する。
【０４２９】
ＣＥは、宛先ＤＳＲから宛先ＤＳＤを読み出し、発信元ＤＳＲ内の任意の発信元ＤＳＤを読み出す（ＤＳＲを読み出す１４０４．６）。ＤＳＤに基づいて、ＣＥは、データ構造のタイプ、データ要素のソース、複数のデータ要素が一緒に読み出されるか否か（例えば、ＳＩＭＤ演算の場合）、及び各オペランドのデータ要素の総数を判断する。幾つかの状況では、ＤＳＲは、発信元０オペランド、発信元１オペランド、及び宛先オペランドの１若しくはそれ以上について読み出される。幾つかの実施形態及び／又は使用状況では、ＤＳＲは全体的又は部分的に並列に読み出され、他の実施形態及び／又は使用状況では、ＤＳＲは全体的又は部分的に順次読み出される。
【０４３０】
次に、送信ＰＥのＣＥは、発信元（例えば、発信元ＤＳＤ又はレジスタ）によって記述されたデータ要素を読み出し、宛先ＤＳＤに基づいてデータ要素を含むウェーブレットを作成する。ＣＥは、発信元によって指定された第１のデータ要素を読み出す（例えば、メモリから）（（次の）データ要素をキュー／メモリから読み出す１４０５）。データ要素は、ウェーブレットペイロードの形成に使用される。ウェーブレットペイロードの制御ビット及びウェーブレットのカラーは、宛先ＤＳＤにより指定される。ウェーブレットのペイロード及びカラーは、送信ＣＥのルータに提供される（データ要素をウェーブレットとしてルータに提供１４０６）。幾つかの実施形態及び／又は使用状況では、１つのデータ要素が、スパースウェーブレットのペイロードの作成に使用される。他の実施形態及び／又は使用状況では、２つのデータ要素が、高密度ウェーブレットのペイロードの作成に使用される。
【０４３１】
送信ＰＥのＣＥは、追加のデータ要素が宛先ＤＳＤによって指定されているか否かを判断する（まだデータ要素があるか？１４０７）。追加のデータ要素が宛先ＤＳＤによって指定されている場合、ＣＥは、追加のデータ要素が宛先ＤＳＤによって指定されなくなるまで、キュー／メモリから（次の）発信元データ要素を読み出す動作１４０５、データ要素をウェーブレットとしてルータに提供する動作１４０６、及びより多くのデータ要素？１４０７を介して追加のウェーブレットを作成する。追加のデータ要素が宛先ＤＳＤによって指定されない場合、フローは終わる（終わり１４１０）。幾つかの実施形態では、動作１４０６を介して作成されたウェーブレットは、宛先ＤＳＲによって指定されるものと同じカラーである。
【０４３２】
送信ＰＥのルータは、ウェーブレットの各カラーに従って、ウェーブレットのカラーに従って送信ＰＥのＣＥによって形成されたウェーブレットを送信する（ウェーブレットをファブリックに送信１４０８）。幾つかの実施形態及び／又は使用状況では、送信は、受信ＰＥのルータへの直接送信である。幾つかの実施形態及び／又は使用状況では、送信は、例えば、カラーに従ってウェーブレットを転送するように動作する１若しくはそれ以上の介在ＰＥを介した受信ＰＥのルータへの間接的な送信である。受信ＰＥのルータは、カラーに従ってウェーブレットを受信する（ウェーブレットをファブリックから受信１４０９）。
【０４３３】
様々な実施形態では、動作１４０８は、動作１４０５、１４０６、及び１４０７の任意の１若しくはそれ以上に関して非同期で実行される。例えば、複数のウェーブレットは、動作１４０６により生成され、それから、生成されたウェーブレットのいずれかが、動作１４０８で図示されるように、送信される。
【０４３４】
様々な実施形態では、ウェーブレットをファブリックから受信１４０９は、様々な点で、図１５のルータにおいてウェーブレットを受信１５０３に対応する。
【０４３５】
様々な実施形態及び／又は使用状況では、ウェーブレット作成フロー１４００の要素の任意の１若しくはそれ以上の全て又は任意の部分は、ＰＥ、例えば、図４のＰＥ４９９の要素によって実行される動作及び／又はＰＥの要素に概念的に対応し及び／又は概念的に関連する。
【０４３６】
様々な実施形態及び／又は使用状況では、ウェーブレット作成フロー１４００の要素の任意の１若しくはそれ以上（例えば、動作１４０３〜１４０７の任意の１若しくはそれ以上）の全て又は任意の部分は、ＰＥのＣＥの全て又は任意の部分、図５の計算要素５２０、及び／又は図８のＣＥ８００等の計算要素の要素によって実行される動作及び／又は計算要素の要素に概念的に対応し及び／又は概念的に関連する。一例として、宛先ＤＳＲ（ＤＳＲ宛先（ファブリック）ＤＳＲ設定１４０４に関連付けられる）は、ＤＳＲ８４６の１つである。幾つかの状況では、発信元ＤＳＲ（発信元設定１４０３に関連付けられる）は、ＤＳＲ８４６の１つであり、他の状況では、発信元レジスタ（発信元設定１４０３に関連付けられる）はＲＦ８４２の１つである。
【０４３７】
別の例として、送信ＰＥのＣＥとしてのＣＥ８００は、メモリ８５４からの情報を発信元ＤＳＲ（例えば、ＤＳＲ８４６の１つ）にコピーするＤＳＲロード命令に応答して動作１４０３を実行する。様々な実施形態では、発信元ＤＳＲは、メモリ８５４、Ｄストア８４８、及びＲＦ８４２の１つとしてデータ要素のロケーションを指定する。幾つかの状況では、発信元ＤＳＲは、メモリ８５４内の第１のデータ要素のアドレス（例えば、アドレス０ｘ０００８）、データ要素の数（例えば、９つのデータ要素）、及び続くデータ要素間のストライド（例えば、１２バイト）を指定する。別の例として、ＣＥ８００は、データをＲＦ８４２のレジスタに書き込むことによって動作１４０３を実行する。
【０４３８】
別の例として、送信ＰＥのＣＥとしてのＣＥ８００は、メモリ８５４からの情報を宛先ＤＳＲ（例えば、ＤＳＲ８４６の１つ）にコピーするＤＳＲロード命令に応答して、動作１４０４を実行する。様々な実施形態では、宛先ＤＳＲは、１若しくはそれ以上のウェーブレットへの１若しくはそれ以上のデータ要素の変換を指定し、ファブリック結合イグレスポート（例えば、北５１３）を介してルータ５１０により送信した。宛先ＤＳＲは、ウェーブレットのカラー、ウェーブレットの制御ビット、データ要素の数（例えば、長さ）、及びウェーブレットのインデックスについての情報を指定する。幾つかの状況では、宛先ＤＳＲはインデックスの値を指定し、他の状況では、宛先ＤＳＲはインデックスの値のロケーション（例えば、ＲＦ８４２のレジスタ内の）を指定する。
【０４３９】
別の例として、送信ＰＥのＣＥとしてのＣＥ８００は、宛先オペランドとして宛先ＤＳＲを指定する命令のフェッチ及び復号化（動作１４０４．５）に応答して、動作１４０４．６、１４０５、１４０６、及び１４０７を実行する。幾つかの実施形態及び／又は使用状況では、Ｄ配列８４４は発信元ＤＳＲを読み出し、例えば、メモリ８５４又はＤストア８４８から、発信元ＤＳＲによって指定された１つ又は２つのデータ要素にアクセスし、それにより、動作１４０５を実行する。様々な実施形態では、メモリ８５４及び／又はＤストア８４８は、１つ又は２つのデータ要素をデータパス８５２に提供する。データパスは、データをウェーブレットに変換し、例えば、データキュー６５０（図６のルータ６００の）の要素への記憶のために、オンランプ８６０を介してウェーブレットを送信し、それにより、動作１４０６を実行する。幾つかの実施形態では、オンランプ８６０は、１若しくはそれ以上のウェーブレットをバッファリングする記憶装置を有する。幾つかの実施形態では、送信ＰＥのＣＥ８００は、宛先ＤＳＲからカラーを読み出す。カラーに基づいて、ＣＥ８００は、例えば、データキュー６５０の要素に格納するために、オンランプ８６０を介してウェーブレットペイロードを送信し、それにより、動作１４０６を完了する。幾つかの実施形態では、送信ＰＥのＣＥ８００は、宛先ＤＳＲにおいて指定されたデータ要素の数（例えば、長さ）を、動作１４０６を介して送信されたデータ要素の数（例えば、カウンタによって追跡される）と比較することにより、動作１４０７を実行する。
【０４４０】
別の例として、送信ＰＥのＣＥとしてのＣＥ８００は動作１４０６を実行する。ＣＥは、宛先ＤＳＲに従って１つ又は２つのデータ要素をウェーブレットペイロードに変換する。幾つかの実施形態及び／又は使用状況では、ＣＥは、１つのデータ要素を、図１３Ａのスパースウェーブレット１３０１に従ってフォーマットされたウェーブレットペイロードに変換する。１つのデータ要素はスパースデータ１３２２のインスタンスに変換され、宛先ＤＳＲによって指定されるインデックス値は、インデックス１３２１のインスタンスに変換され、宛先ＤＳＲからの制御ビットは、制御ビット１３２０のインスタンスに変換され、それにより、スパース・ウェーブレット・ペイロード１３０２のインスタンスを形成する。
【０４４１】
別の例として、送信ＰＥのＣＥとしてのＣＥ８００は、２つのデータ要素を、図１３Ｂの高密度ウェーブレット１３３１に従ってフォーマットされたウェーブレットペイロードに変換する。第１のデータ要素は、高密度データ１３４３．１のインスタンスに変換され、第２のデータ要素は、高密度データ１３４３．２のインスタンスに変換される。宛先ＤＳＲからの制御ビットは、制御ビット１３４０のインスタンスに変換され、それにより、高密度ウェーブレットペイロード１３３２のインスタンスを形成する。
【０４４２】
様々な実施形態及び／又は使用状況では、ウェーブレット作成フロー１４００の要素の任意の１若しくはそれ以上（例えば、動作１４０８及び１４０９の任意に１若しくはそれ以上）の全て又は任意の部分は、ＰＥのルータ、例えば、図５のルータ５１０及び／又は図６のルータ６００の全て又は任意の部分等のルータの要素により実行される動作及び／又はルータの要素に概念的に対応及び／又は概念的に関連する。
【０４４３】
一例として、ウェーブレットをファブリックに送信１４０８は、以下のように送信ＰＥ１４３０のルータ６００ルータにより実行される。ルータ６００は、例えば、宛先６６１を読み出すことにより、データキュー６５０内のウェーブレットの宛先を特定する。各カラーで、宛先６６１は、出力宛先、例えば、データアウト６２０の１若しくはそれ以上を示す。ルータ６００は、アウト６５２及びデータアウト６２０の１若しくはそれ以上を介してウェーブレットペイロード及びカラー（まとめてウェーブレット）をファブリックに送信する。様々な実施形態では、送信ＰＥのルータ６００は、動作１４０５、１４０６、及び１４０７の任意の１若しくはそれ以上と非同期で動作１４０８を実行する。
【０４４４】
別の例として、ウェーブレットをファブリックから受信１４０９は、以下のように受信ＰＥ１４４０のルータとしてルータ６００により実行される。ルータ６００は、データイン６１０の１つ及び書き込みデコーダ６５１を介して、データキュー６５０において、送信されたウェーブレットを受信する。受信したウェーブレットは、データキュー６５０の１若しくはそれ以上のロケーションに格納される。
【０４４５】
幾つかの実施形態及び／又は使用状況では、ウェーブレット作成フロー１４００の要素の全て又は任意の部分は概念的に、図２のＰＥ上のタスクＳＷ２６０の命令の実行の全て又は任意の部分に対応する。
【０４４６】
図１５Ａは、ウェーブレット受信フロー１５００としてウェーブレットを受信する一実施形態の選択された細部を図示する。ウェーブレット受信フロー１５００の動作は、様々なエージェントによって実行される。受信ＰＥは、受信ＰＥ１５２０のルータで図示されるように、動作１５０３〜１５０６を実行するルータを有する。受信ＰＥは、受信ＰＥ１５３０のＣＥで図示されるように、動作１５０７を実行するＣＥをさらに有する。
【０４４７】
ウェーブレットの受信は、少なくとも１つの送信ＰＥ及び１若しくはそれ以上の受信ＰＥ及び送信ＰＥ及び受信ＰＥを結合するファブリックを実施するルータを有する任意のＰＥを初期化する（ＰＥ初期化１５０２）ことで開始される（開始１５０１）。各ＰＥは、各ルータ（例えば、図５のルータ５１０）と、各ＣＥ（例えば、図５の計算要素５２０）とを有する。幾つかの状況では、ＰＥを初期化することは、ＰＥのＣＥが計算を実行できるようにし、ＰＥのルータがファブリックを介してウェーブレットを送信、受信、及び／又は転送できるようにする。
【０４４８】
以下の説明は、１つの受信ＰＥがあると仮定する。使用状況では、複数の受信ＰＥがある場合、各受信ＰＥの各ルータ及びＣＥが、図１５Ａによる処理を実行する。
【０４４９】
受信ＰＥのルータは、送信ＰＥによって送信されたように、ファブリックの「カラー上」のウェーブレット（例えば、ウェーブレットはカラーを有する）を受信する（ルータにおいてウェーブレットを受信１５０３）。ルータは、例えば、構成レジスタを読み出すことにより、カラーに基づいてウェーブレットの宛先をチェックする。ウェーブレットの宛先が他のＰＥ（他のＰＥへ？１５０４）を含む場合、ルータはウェーブレットを宛先ＰＥに送信する。ルータは、ウェーブレットをルータの出力に送信し（ウェーブレットを出力に送信１５０５）、ウェーブレットは出力からファブリックを介して宛先ＰＥに送信される。ウェーブレットの宛先が他のＰＥを含まない場合、送信は省略される。
【０４５０】
ウェーブレットの宛先がローカルＣＥを含まない（ローカルＣＥへ？１５０６）場合、更なる動作は行われない（終わり１５１０）。ウェーブレットの宛先の１つがローカルＣＥである場合、ルータは、オフランプを介してウェーブレットをローカルＣＥに提供し、ウェーブレットは、ウェーブレットが受信されたカラーに関連付けられたピッカーキューに書き込まれ（ウェーブレットをピッカーキーに書き込む１５０７）、それにより、ウェーブレットを受信する（終わり１５１０）。
【０４５１】
様々な実施形態及び／又は使用状況では、ウェーブレット受信フロー１５００の要素（例えば、動作１５０３〜１５０６の任意の１若しくはそれ以上）の任意の１若しくはそれ以上の全て又は任意の部分は、ＰＥのルータ、例えば、図５のルータ５１０及び／又は図６のルータ６００の全て又は任意の部分等のルータの要素により実行される動作及び／又はルータの要素に概念的に対応及び／又は概念的に関連する。
【０４５２】
一例として、ルータにおいてウェーブレットを受信１５０３は、ウェーブレットがデータイン６１０の１つで受信された場合、受信ＰＥ１５２０のルータとしてルータ６００により実行される。続けて、他のＰＥへ？１５０４及びローカルＣＥへ？１５０６が、例えば、宛先６６１を読み出すことにより、ウェーブレットのカラーを使用してウェーブレットの宛先を特定して、ルータ６００によって実行される。各入力カラーで、宛先６６１は出力宛先、例えば、データアウト６２０の１若しくはそれ以上を示す。宛先６６１により、出力が他のＰＥ（例えば、スキップＸ＋６２１、スキップＸ−６２２、Ｘ＋６２３、Ｘ−６２４、Ｙ＋６２５、及びＹ−６２６の１つを介して）を含むことが示される場合、ウェーブレットは、スケジュール済みルータ６５４により他のＰＥに送信される。宛先６６１により、出力がＰＥのＣＥを含む（例えば、オフランプ６２７）ことが示される場合、ウェーブレットは、スケジュール済みルータ６５４によりＣＥに送信される。ウェーブレットは、動作１５０５が、データアウト６２０に送信されるようにウェーブレットをスケジュールする（例えば、スケジュール済みルータ６５４により）ことによって実行される。
【０４５３】
様々な実施形態及び／又は使用状況では、ウェーブレット受信フロー１５００の要素の任意の１若しくはそれ以上（例えば、動作１５０７）の全て又は任意の部分は、ＰＥのＣＥ、例えば、図５の計算要素５２０及び／又は図８のＣＥ８００の全て又は任意の部分等の計算要素により実行される動作及び／又は計算要素に概念的に対応及び／又は概念的に関連する。一例として、ウェーブレットをピッカーキューに書き込む１５０７は、オフランプ８２０を介してウェーブレットをＣＥ８００に送信し、ウェーブレットをＱ８９７の１つに書き込むことによって実行される。
【０４５４】
幾つかの実施形態及び／又は使用状況では、ウェーブレットは、ウェーブレットがローカルＣＥに向けられているとのいかなる特定の判断もなく、ルータにより受信され、キューに配置され、ルータ出力ポートにルーティングされる。代わりに、ローカルＣＥを宛先としたウェーブレットは、オフランプにルーティングされ、次に、ピッカーキューに書き込まれる。ローカルＣＥを宛先としていないウェーブレットは、オフランプルータ出力以外にルーティングされる。
【０４５５】
図１５Ｂは、ウェーブレット消費フロー１５５０としてウェーブレットを消費する一実施形態の選択された細部を図示する。ウェーブレット消費フロー１５５０の動作は、ＰＥのＣＥによって実行される。
【０４５６】
ウェーブレットの消費は、ピッカーが処理するウェーブレットをキューから選択する（ピッカーが処理するウェーブレットを選択１５５２）ことにより開始され（開始１５５１）、次に、ＣＥはウェーブレットを処理する。ＣＥは、ウェーブレットに関連付けられた命令をフェッチし実行し（命令をフェッチし実行１５５３）、それにより、ウェーブレットを消費する（終わり１５５４）。幾つかの実施形態及び／又は使用状況では、ウェーブレットに関連付けられた命令のフェッチ及び実行は、終了命令のフェッチ及び実行で終わる。
【０４５７】
幾つかの実施形態では、ピッカーが処理するウェーブレットを選択する１５５２は、図８のピッカー８３０により実行される。様々な状況では、ピッカー８３０は、ラウンドロビン又は最後からピック等のスケジューリングポリシーに従って、使用可能なＱ８９７の１つを選択する（例えば、ブロックビット８９９及びアクティブビット８９８が特定の値に設定される）。幾つかの実施形態では、ウェーブレット消費フロー１５５０の部分は、図９のタスク初期化に向けてのウェーブレットの処理９００の部分に対応する。一例として、動作１５５２は動作９０５に対応する。別の例として、動作１５５３は動作９０８、９２０、９３０、９５０、及び９６０に対応する。
【０４５８】
幾つかの他の状況では、ウェーブレットは、ＣＥで実行中の命令（例えば、ＦＭＡＣＨ）によりオペランドとしてアクセスされ、ウェーブレットは、例えば、図２３に図示されるように、命令の実行中、ＣＥにより消費される。
【０４５９】
ブロック及びブロック解除
図１６は、フロー１６００としてブロック命令及びブロック解除命令の一実施形態の選択された細部を図示する。概念的に、特定のカラーを指定するブロック命令の実行は、少なくとも、その特定のカラーを指定するブロック解除命令の実行まで、その特定のカラーに関連付けられた命令の実行を阻止する。
【０４６０】
図を参照すると、命令の実行は、命令をメモリからフェッチし、命令を復号化する（命令をフェッチし復号化１６０２）ことによって開始される（開始１６０１）。命令がブロック命令に復号化される場合（ブロック命令？１６０３）、ブロック演算が実行される（カラーをブロック１６０４）。ブロック命令の発信元オペランドは、ブロック／ブロック解除されたカラーに関連付けられた命令処理に関してブロックする１若しくはそれ以上のカラーを指定する。様々な実施形態及び／又は使用状況では、ブロック演算は、１若しくはそれ以上のブロックインジケータを、発信元オペランドによって指定された１若しくはそれ以上のカラーについてブロック状態に設定することによって実行され、実行は完了する（終わり１６３０）。様々な状況では、発信元オペランドは様々に、１つのカラーのブロック、全カラーのブロック、及び任意の複数のカラーのブロックを指定する。続く演算では、各ブロックインジケータがブロック状態に設定されたカラーで構成されるウェーブレットは、処理に選択されない。
【０４６１】
命令がブロック解除命令に復号化される場合（ブロック解除命令？１６１０）、ブロック解除演算が実行される（カラーをブロック解除１６１１）。ブロック解除命令の発信元オペランドは、ブロック／ブロック解除されたカラーに関連付けられた命令処理に関してブロック解除する１若しくはそれ以上のカラーを指定する。様々な実施形態及び／又は使用状況では、ブロック解除演算は、発信元オペランドによって指定される１若しくはそれ以上のカラーのブロックインジケータをブロック解除状態にリセットすることにより実行され、実行は完了する（終わり１６３０）。様々な状況では、発信元オペランドは様々に、１つのカラーのブロック解除、全カラーのブロック解除、及び任意の複数のカラーのブロック解除を指定する。続く演算では、各ブロックインジケータがブロック解除状態に設定されたカラーで構成されるウェーブレットは、処理に選択可能である。
【０４６２】
命令が、ブロック命令ではなく、ブロック解除命令ではない命令に復号化される場合、命令は実行され（命令を実行１６２０）、実行は完了する終わり１６３０）。
【０４６３】
幾つかの実施形態では、ブロック演算の発信元オペランドが即値（例えば、８ビット即値）である場合、即値の値はブロックすべきカラーを指定する。発信元オペランドが即値ではない場合、全カラーがブロックされる。
【０４６４】
様々な実施形態では、ブロック解除演算の発信元オペランドは即値（例えば、８ビット即値であり）、即値の値はブロック解除すべきカラーを指定する。様々な実施形態では、特定のオペランドを有するブロック解除演算は、複数のカラーをブロック解除する。
【０４６５】
様々な実施形態及び／又は使用状況では、ブロック及びブロック解除命令処理フロー１６００の要素の任意の１若しくはそれ以上の全て又は任意の部分は、ＰＥのＣＥ、例えば、図５の計算要素５２０及び／又は図８のＣＥ８００の全て又は任意の部分等の計算要素によって実行される演算及び／又は計算要素の要素に概念的に対応し、及び／又は概念的に関連する。
【０４６６】
一例として、ブロックビット８９９は、各カラーに１ビットを有する（例えば、テーブル内のエントリとして又はビットマスクとして）。ブロック演算（カラーをブロック１６０４）は、発信元オペランドによって指定された１若しくはそれ以上のカラーのブロックビット８９９を特定のブロック値（例えば、「１」）に設定することにより実行される。幾つかの実施形態では、ピッカー８３０は、ブロックビット８９９が非ブロック値（例えば、「０」）に一致するカラーから、処理するウェーブレットを選択する。別の例として、ブロック解除演算（カラーをブロック解除１６１１）は、発信元オペランドにより指定されたカラーのブロックビット８９９を指定された非ブロック値（例えば、「０」）に設定することにより実行される。幾つかの実施形態では、ピッカー８３０は、ブロックビット８９９が非ブロック値（例えば、「０」）に一致するカラーを有するウェーブレットを選択する。
【０４６７】
幾つかの実施形態では、ブロック及びブロック解除命令処理フロー１６００の部分は、図９のタスク開始のウェーブレット処理９００の部分に対応する。一例として、動作１６０２、１６０３、１６０４、１６１０、１６１１、及び１６２０は、図９の動作９５０及び９６０の部分に対応する。
【０４６８】
様々な実施形態及び／又は使用状況では、ブロック及びブロック解除命令処理フロー１６００の全て又は任意の部分は概念的に、図２のＰＥ上のタスクＳＷ２６０の命令の実行の全て又は任意の部分に対応する。
【０４６９】
ニューロンスメアリング
図１７は、ニューラルネットワーク１７００としてニューラルネットワークの一実施形態の選択された細部を示す。ネットワーク１７００は、３つの部分：入力層１７１０と、内部層１７２０と、出力層１７４０とを有する。各層は複数のニューロンを有する。入力層１７１は、ニューロンＮ１１  １７１１、Ｎ１２  １７１２、及びＮ１３  １７１３を有する。内部層１７２０は、ニューロンＮ２１  １７２１、Ｎ２２  １７２２、Ｎ２３  １７２３、及びＮ２４  １７２４の第１の層を有し、それに続けてニューロンＮ３１  １７３１、Ｎ３２  １７３２、及びＮ３３  １７３３の第２の層を有する。出力層１７４０はニューロンＮ４１  １７４１及びＮ４２  １７４２を有する。
【０４７０】
選択されたニューロン（Ｎ２１  １７２１、Ｎ２２  １７２２、Ｎ２３  １７２３、及びＮ２４  １７２４並びにＮ３１  １７３１及びＮ３２  １７３２）及び選択されたニューロン間の通信（１７９１、１７９２、及び１７９３）は、図中、強調表示されている。選択されたニューロン及びパスウェイについて以下により詳細に考察する。
【０４７１】
図１８Ａは、ニューロンへの処理要素の割り振りの第１の実施形態の選択された細部を図示する。ニューロンへの処理要素の割り振りは、処理要素へのニューロンの配置又は代替的にはニューロンの配置と呼ばれることがある。図１８Ａの同様に付番された要素は、図１７の同様に付番された要素に対応する図１７のニューロンのサブセット（強調表示されたニューロンＮ２１  １７２１、Ｎ２２  １７２２、Ｎ２３  １７２３、及びＮ２４  １７２４並びにＮ３１  １７３１及びＮ３２  １７３２）への処理要素の第１の割り振りは概念的に示される。図中の垂直距離は、５つの処理要素ＰＥ０  １８２０、ＰＥ１  １８２１、ＰＥ２  １８２２、ＰＥ３  １８２３、ＰＥ４  １８２４、及びＰＥ５  １８２５のそれぞれの計算リソースの相対的使用を示す。
【０４７２】
ニューロンＮ２１  １７２１、Ｎ２２  １７２２、Ｎ２３  １７２３、及びＮ２４  １７２４のそれぞれは、概ね同量の計算リソース、例えば、Ｍ個の演算、記憶容量Ｋ、及び記憶装置への及び記憶装置からの帯域幅Ｊを表す。ニューロンＮ３１  １７３１及びＮ３２  １７３２のそれぞれは、概ね同量の計算リソース、例えば、Ｍ／２個の演算、記憶装置Ｋ／２、及び帯域幅Ｊ／２を表す。したがって、Ｎ３１  １７３１及びＮ３２  １７３２のそれぞれは、Ｎ２１  １７２１、Ｎ２２  １７２２、Ｎ２３  １７２３、及びＮ２４  １７２４のそれぞれの計算リソースの概ね半分を表す。様々な実施形態では、計算リソースの例には、計算演算、記憶容量、記憶装置からの読み出し帯域幅、記憶装置への書き込み帯域幅、他のニューロンからの入力接続、及び他のニューロンへの出力接続がある。
【０４７３】
図示の実施形態では、ニューロン処理は、上記ニューロンのそれぞれがＰＥ全体に割り振られるように割り振られる。より具体的には、Ｎ２１  １７２１はＰＥ０  １８４０に割り振られ、Ｎ２２  １７２２はＰＥ１  １８４１に割り振られ、Ｎ２３  １７２３はＰＥ２  １８４２に割り振られ、Ｎ２４  １７２４はＰＥ３  １８４３に割り振られ、Ｎ３１  １７３１はＰＥ４  １８４４に割り振られ、Ｎ３２  １７３２はＰＥ５  １８４５に割り振られる。したがって、６つの処理要素のうちの４つは完全にサブスクライブされ（ＰＥ０  １８２０、ＰＥ１  １８２１、ＰＥ２  １８２２、及びＰＥ３  １８２３）、一方、６つの処理要素のうちの２つ（ＰＥ４  １８２４及びＰＥ５  １８２５）は半分しかサブスクライブされない。
【０４７４】
図１８Ｂは、ニューロンへの処理要素の割り振りの第２の実施形態の選択された細部を図示する。図１８Ｂの同様に付番された要素は、図１７及び図１８Ａの同様に付番された要素に対応する。図１７のニューロンのサブセット（強調表示されたニューロンＮ２１  １７２１、Ｎ２２  １７２２、Ｎ２３  １７２３、及びＮ２４  １７２４並びにＮ３１  １７３１及びＮ３２  １７３２）への処理要素の第２の割り振りは、概念的に示される。図１８Ａと同様に、図中の垂直距離は、５つの処理要素ＰＥ０  １８２０、ＰＥ１  １８２１、ＰＥ２  １８２２、ＰＥ３  １８２３、ＰＥ４  １８２４、及びＰＥ５  １８２５のそれぞれの計算リソースの相対的使用を示す。また図１８Ａと同様に、Ｎ３１  １７３１及びＮ３２  １７３２のそれぞれは、Ｎ２１  １７２１、Ｎ２２  １７２２、Ｎ２３  １７２３、及びＮ２４  １７２４のそれぞれの計算リソースの概ね半分を表す。
【０４７５】
図示の実施形態では、ニューロン処理は、各ニューロンの処理が処理要素にわたり「染め」られる（ｓｍｅａｒｉｎｇ）ように割り振られる。概念的には、ニューロンは、処理要素への割り振りに適した部分に「分割」される。図示されるように、ニューロンは分割され、処理要素は、６つの処理要素のうちの４つが等しく（完全に）サブスクライブされ（ＰＥ０  １８２０、ＰＥ１  １８２１、ＰＥ２  １８２２、ＰＥ３  １８２３）、一方、６つの処理要素のうちの２つが完全にはサブスクライブされず、したがって、他の使用に利用可能である（ＰＥ４  １８２４及びＰＥ５  １８２５）ように割り振られる。幾つかの実施形態及び／又は使用状況では、サブスクライブされない処理要素は使用されないままであり、能動電力及び／又は静的電力を殆ど又は全く消費しない（例えば、クロックゲーティング及び節電の１若しくはそれ以上を介して）。より具体的には、Ｎ２１  １７２１は２つの半分で（１／２  Ｎ２１  １７２１．１及び１／２  Ｎ２１  １７２１．２）２つの各処理要素（ＰＥ０  １８２０及びＰＥ２  １８２２）に割り振られる。同様に、Ｎ２２  １７２２は２つの半分で（１／２  Ｎ２２  １７２２．１及び１／２  Ｎ２２  １７２２．２）２つの各処理要素（ＰＥ０  １８２０及びＰＥ２  １８２２）に割り振られる。Ｎ２３  １７２３は２つの半分で（１／２  Ｎ２３  １７２３．１及び１／２  Ｎ２３  １７２３．２）２つの各処理要素（ＰＥ１  １８２１及びＰＥ３  １８２３）に割り振られ、Ｎ２４  １７２４は２つの半分で（１／２  Ｎ２４  １７２４．１及び１／２  Ｎ２４  １７２４．２）２つの各処理要素（ＰＥ１  １８２１及びＰＥ３  １８２３）に割り振られる。Ｎ３１  １７３１は、４つの１／４で（１／４  Ｎ３１  １７３１．１、１／４  Ｎ３１  １７３１．２、１／４  Ｎ３１  １７３１．３、及び１／４  Ｎ３１  １７３１．４）４つの各処理要素（ＰＥ０  １８２０、ＰＥ１  １８２１、ＰＥ２  １８２２、及びＰＥ３  １８２３）に割り振られる。同様に、Ｎ３２  １７３２は、４つの１／４で（１／４  Ｎ３２  １７３２．１、１／４  Ｎ３２  １７３２．２、１／４  Ｎ３２  １７３２．３、及び１／４  Ｎ３２  １７３２．４）４つの各処理要素（ＰＥ０  １８２０、ＰＥ１  １８２１、ＰＥ２  １８２２、及びＰＥ３  １８２３）に割り振られる。様々な実施形態では、ニューロンに関連付けられた１若しくはそれ以上の計算リソースに基づいて、ニューロンは分割され、処理要素は割り振られる。幾つかの実施形態では、処理要素で利用可能なハードウェアリソース（例えば、幾つかのニューロンは、ＰＲＮＧ等の特定のハードウェアリソースを必要とする）に基づいて、ニューロンは分割され、処理要素は割り振られる。
【０４７６】
図１９は、複数の処理要素にわたりニューロンをスメアリングする一実施形態の選択された細部を図示する。分割により、分割ニューロンの部分が生成され、分割ニューロンの部分は次に、処理要素にわたりスメアリングされる。図１９の同様に付番された要素は、図１７、図１８Ａ、及び図１８Ｂの同様に付番された要素に対応する。図１８Ｂに図示されるように、Ｎ２１  １７２１は、ＰＥ０  １８２０及びＰＥ２  １８２２によってそれぞれ実施される２つの部分１／２  Ｎ２１  １７２１．１及び１／２  Ｎ２１  １７２１．２に分割される。
【０４７７】
概念的に、Ｎ２１  １７２１は、ローカル計算及びローカル記憶並びに入力及び出力を有すると考えられる。Ｎ２１  １７２１の各要素はそれぞれ分割される。Ｎ２１のローカル計算は、１／２ローカル計算１９３０．１及び１／２ローカル計算１９３０．２に分割される。Ｎ２１のローカル記憶は、１／２ローカル記憶１９４０．１及び１／２ローカル記憶１９４０．２に分割される。Ｎ２１の入力は、第１の半分ｉｎ０  １９１０、ｉｎ１  １９１１、及びｉｎ２  １９１２並びに第２の半分ｉｎ３  １９１３、ｉｎ４  １９１４、及びｉｎ５  １９１５に分割される。Ｎ２１の出力は、第１の半分ｏｕｔ０  １９２０、ｏｕｔ１  １９２１、及びｏｕｔ２  １９２２並びに第２の半分ｏｕｔ３  １９２３、ｏｕｔ４  １９２４、及びｏｕｔ５  １９２５に分割される。
【０４７８】
１／２ローカル計算１９３０．１、１／２ローカル記憶１９４０．１、ｉｎ１  １９１１を有するｉｎ０  １９１０、及びｏｕｔ０  １９２０は、ＰＥ１８２０により実施される。１／２ローカル計算１９３０．２、１／２ローカル記憶１９４０．２、ｉｎ３  １９１３を有するｉｎ２  １９１２、及びｏｕｔ１  １９２１は、ＰＥ０  １８２２により実施される。
【０４７９】
幾つかの実施形態及び／又は使用状況では、２つ以上の処理要素にわたるニューロンのスメアリングは、少なくとも部分的に、本明細書を用いない場合にはニューロンにより実行／使用されない追加の計算、追加の記憶、及び／又は追加の通信によって実施される。追加の計算、追加の記憶、及び／又は追加の通信は、例えば、ニューロンの部分からの部分結果を結合して、ニューロン全体の結果に対応する結果にすることを可能にする。追加の計算１９５０．１及び追加の記憶１９６０．１は、１／２  Ｎ２１  １７２１．１の追加の計算及び追加の記憶を表し、ＰＥ０  １８２０により実施される。追加の計算１９５０．２及び追加の記憶１９６０．２は、１／２  Ｎ２１  １７２１．２の追加の計算及び追加の記憶を表し、ＰＥ０  １８２２により実施される。
【０４８０】
追加の通信１９７０は、１／２  Ｎ２１  １７２１．１と１／２  Ｎ２１  １７２１．２との間の追加の通信を表し、ＰＥ０  １８２０とＰＥ０  １８２２との間のファブリック接続により実施される。幾つかの実施形態及び／又は使用状況では、追加の通信１９７０の全て又は任意の部分は、１つの処理要素が全体的にＮ２１  １７２１実施される場合、１つの処理要素の内部で行われる通信を表す。
【０４８１】
図２０は、分割されたニューロンの部分間の通信の一実施形態の選択された細部を図示する。図２０の同様に付番された要素は、図１７、図１８Ａ、図１８Ｂ、及び図１９の同様に付番された要素に対応する。ニューロン部分へのＰＥ０  １８２０、ＰＥ１  １８２１、ＰＥ２  １８２２、及びＰＥ３  １８２３の割り振りは、図１８Ｂによって図示される。明確にするために、ＰＥ０  １８２０及びＰＥ１  １８２１に固有の割り振りのみが図示される。
【０４８２】
ウェーハ部分２０００は、ＰＥ０  １８２０、ＰＥ１  １８２１、ＰＥ２  １８２２、及びＰＥ３  １８２３を有する。ウェーハ部分２０００のＰＥ間の結合は、ＰＥ  １８２０及びＰＥ１  １８２１を結合する２０４０（隣接ＰＥ間の結合）、ＰＥ１  １８２１及びＰＥ３  １８２３の２０４１結合、ＰＥ３  １８２３及びＰＥ２  １８２２の２０４３結合、及びＰＥ２  １８２２及びＰＥ０  １８２０の２０４４結合として図示される。ウェーハ部分２０００に隣接するＰＥへの結合は、（隣接するＰＥ間の結合の部分）２０５０、２０５１、２０５２、２０５３、２０５４、２０５５、２０５６、及び２０５７として図示される。隣接するＰＥへの結合は、幾つかの実施形態及び／又は使用状況では、結合の全て又は任意の部分が、ウェーハ部分２０００内に全体的にではなく、ウェーハ部分２０００に隣接するウェーハ部分に含まれるため、「部分」である。
【０４８３】
第１の例として、通信部分１７９１．１は概念的に、例えば、入力層から内部層への（図１７の）Ｎ１１  １７１１とＮ２１  １７２１との間の通信１７９１の一部を、各処理要素内の分割ニューロンの部分と共に表す。より具体的には、Ｎ２１  １７２１が２つの部分（１／２  Ｎ２１  １７２１．１及び１／２  Ｎ２１  １７２１．２：図１８Ｂ参照）に分割されることを想起する。したがって、通信１７９１は２つの部分に分割される。通信部分１７９１．１は、１／２  Ｎ２１  １７２１．１に関する部分のものが特に図示されている。通信部分１７９１．１は、ウェーハ部分２０００に隣接するＰＥ間の（隣接するＰＥ間の結合の部分）２０５７を介してＰＥ０  １８２０（１／２  Ｎ２１  １７２１．１に割り振られる）に輸送される。幾つかの実施形態及び／又は使用状況では、通信１７９１は２つの部分：通信部分１７９１．１（図示される）及び通信部分１７９１．２（図示せず）に分割される。幾つかの実施形態及び／又は使用状況では、通信部分１７９１．１及び通信部分１７９１．２の輸送は、同じ仮想チャネルを介する。幾つかの実施形態及び／又は使用状況では、通信部分１７９１．１及び通信部分１７９１．２の輸送は、それぞれ独自の仮想チャネルを介する。
【０４８４】
第２の例として、通信部分１７９２．１は概念的に、例えば、第１の内部層から第２の内部層への（図１７の）Ｎ２１  １７２１とＮ３１  １７３１との間の通信１７９２の一部を、各処理要素内の分割ニューロンの部分と共に表す。より具体的には、Ｎ２１  １７２１が２つの部分（１／２  Ｎ２１  １７２１．１及び１／２  Ｎ２１  １７２１．２：図１８Ｂ参照）に分割されることを想起する。さらに、Ｎ３１  １７３１が４つの部分（１／４  Ｎ３１  １７３１．１、１／４  Ｎ３１  １７３１．２、１／４  Ｎ３１  １７３１．３、及び１／４  Ｎ３１  １７３１．４：図１８Ｂ参照）に分割されることを想起する。したがって、通信１７９２は部分に分割される。通信部分１７９２．１は、１／２  Ｎ２１  １７２１．１及び１／４  Ｎ３１  １７３１．２に関する部分のものが特に図示されている。通信部分１７９２．１は、ＰＥ０  １８２０（１／２  Ｎ２１  １７２１．１に割り振られる）とＰＥ１  １８２１（１／４  Ｎ３１  １７３１．２に割り振られる）との間で（隣接するＰＥ間の結合）２０４０を介して輸送される。様々な実施形態及び／又は使用状況では、通信部分１７９２．１（図示される）及び例えば、通信１７９２の他の部分（図示せず）の輸送は、同じ仮想チャネル、部分ごとに独自の仮想チャネル、特定のニューロンに関連付けられた部分ごとに独自の仮想チャネル、及び／又は特定の処理要素に関連付けられた部分ごとの仮想チャネルを介する。
【０４８５】
第３の例として、通信部分１７９３．１は概念的に、例えば、第１の内部層から第２の内部層への（図１７の）Ｎ２３  １７２３とＮ３１  １７３１との間の通信１７９３の一部を、同じ処理要素内の分割ニューロンの部分と共に表す。より具体的には、Ｎ２３  １７２３が２つの部分（１／２  Ｎ２３  １７２３．１及び１／２  Ｎ２３  １７２３．２）：図１８Ｂ参照）に分割されることを想起する。さらに、Ｎ３１  １７３１が４つの部分（１／４  Ｎ３１  １７３１．１、１／４  Ｎ３１  １７３１．２、１／４  Ｎ３１  １７３１．３、及び１／４  Ｎ３１  １７３１．４：図１８Ｂ参照）に分割されることを想起する。したがって、通信１７９３は部分に分割される。通信部分１７９３．１は、１／２  Ｎ２３  １７２３．１及び１／４  Ｎ３１  １７３１．２に関する部分のものが特に図示されている。通信部分１７９３．１は、ＰＥ１  １８２１（１／２  Ｎ２３  １７２３．１及び１／４  Ｎ３１  １７３１．２に割り振られる）内部の１若しくはそれ以上の機構を介して輸送される。例えば、ＰＥ１  １８２１は、内部リソース（ルータ等）を使用して、出力を入力として内部でフィードバックし、及び／又は出力から入力を内部で提供する。幾つかの実施形態及び／又は使用状況では、通信部分１７９３．１の輸送は、入力として使用される出力を生成し、及び／又は出力から提供される入力を生成する仮想チャネルを介する。
【０４８６】
第４の例として、通信２０６０は概念的に、追加の通信１９７０（図１９の）、例えば、処理要素にわたり分割されるニューロン内の通信の全て又は任意の部分を表す。より具体的には、通信２０６０は特に、Ｎ３２  １７３２が分割される４つの部分のうちの２つ（１／４  Ｎ３２  １７３２．１及び１／４  Ｎ３２  １７３２．２：図１８Ｂ参照）間の通信を図示する。通信２０６０は、ＰＥ０  １８２０（１／４  Ｎ３２  １７３２．１に割り振られる）とＰＥ１  １８２１（１／４  Ｎ３２  １７３２．２に割り振られる）との間で（隣接するＰＥ間の結合）２０４０を介して輸送される。様々な実施形態及び／又は使用状況では、通信２０６０は、通信２０６０専用の仮想チャネル、通信２０６０及びＮ３２  １７３２の他の部分間の通信で共有される仮想チャネル、並びに通信２０６０及び処理要素にわたって分割されたニューロンの全て又は任意の部分で共有される仮想チャネルを介する。
【０４８７】
幾つかの実施形態及び／又は使用状況では、ウェーハ部分２０００の全て又は任意の部分は図１のＰＥ１２２を有する。幾つかの実施形態及び／又は使用状況では、ＰＥ０  １８２０、ＰＥ１  １８２１、ＰＥ２  １８２２、及びＰＥ３  １８２３の任意の１つは、図４のＰＥ４９７に対応する。幾つかの実施形態及び／又は使用状況では、隣接するＰＥ２０４１、２０４２、２０４３、及び２０４４間の結合及び／又は隣接するＰＥ２０５０、２０５１、２０５２、２０５３、２０５４、２０５５、２０５６、及び２０５７間の結合の部分の任意の１若しくはそれ以上は、図４の北結合４３０、東結合４３１、南結合４３２、及び西結合４３３の任意の１若しくはそれ以上に対応する。
【０４８８】
ニューロンスメアリング（例えば、図１７、図１８Ａ、図１８Ｂ、図１９、及び図２０に関して説明され、これらに関して図示された）に関連する概念はＦＣＮＮ、ＲＮＮ、ＣＮＮ、ＬＳＴＭネットワーク、オートエンコーダ、ディープビリーフネットワーク、及び敵対的生成ネットワーク等の様々なトポロジ及びタイプのニューラルネットワークに適用可能である。
【０４８９】
様々な実施形態及び／又は使用状況では、ニューロンは同サイズの部分、例えば、１／２、１／４、１／８等に分割される。様々な実施形態及び／又は使用状況では、ニューロンは、異なるサイズの部分、例えば、半分である第１の部分、それぞれ１／４である第２の部分及び第３の部分に分割される。様々な実施形態及び／又は使用状況では、ニューロンは任意のサイズの部分に分割される。
【０４９０】
様々な実施形態及び／又は使用状況では、複数のＰＥが１つのニューロンに割り振られる。様々な実施形態及び／又は使用状況では、１つのＰＥが複数のニューロンの各全体に割り振られる。
【０４９１】
様々な実施形態及び／又は使用状況では、ニューロンへのＰＥの割り振りは全体的又は部分的に、計算要件及び／又は記憶要件の静的測定及び／又は動的測定に応答する。様々な実施形態及び／又は使用状況では、ニューロンへのＰＥの割り振りは全体的又は部分的に、処理するデータの次元に応答する。
【０４９２】
様々な実施形態及び／又は使用状況では、矢印の方向として表されるデータフローは、単方向（描かれる矢頭で図示されるように）、双方向、及び／又は逆方向（描かれる矢頭の逆）である。特定の例として、様々な実施形態及び／又は使用状況では、通信１７９２（図１７の）は、Ｎ２１  １７２１からＮ３１  １７３１へのデータフロー（例えば、順方向伝搬中）又はＮ３１  １７３１からＮ２１  １７２１への逆のデータフロー（例えば、逆伝搬中）を表す。したがって、通信部分１７９２．１ひいては（隣接するＰＥ間の結合の部分）上の通信２０５７は、ＰＥ０  １８２０からＰＥ１  １８２１に（例えば、順方向伝搬中）及びＰＥ１  １８２１からＰＥ０  １８２０に逆に（例えば、逆伝搬中）発生する。
【０４９３】
ベクトル及びデータ構造記述子
様々な実施形態及び／又は使用状況では、それぞれがデータ要素の１若しくはそれ以上をそれぞれ有する１若しくはそれ以上のベクトルの処理が実行される。ベクトルは様々にメモリ（例えば、図８のメモリ８５４又はＤストア８４８等のＰＥのＣＥの）から読み出され、メモリに書き込まれ、ファブリックから受信され、又はファブリックに送信される。メモリから読み出されたベクトル又はメモリに書き込まれたベクトルは、「メモリベクトル」と呼ばれることもある。ファブリックから受信したベクトル又はファブリックに送信されたベクトル（例えば、ウェーブレットとして）は、「ファブリックベクトル」と呼ばれることがある。ＤＳＲからのＤＳＤ（及びＸＤＳＲからのＸＤＸＤ）は、メモリベクトルのアドレス指定パターン及びファブリックベクトルのアクセスパターンの決定に使用可能である。
【０４９４】
最初の数字「８」を有する図２１Ａ〜図２１Ｅ、図２２Ａ、図２２Ｂ、図２３、及び図２４の説明での各要素識別子は、図８の要素を指し、簡潔にするために、その他の点では図８の要素であるものとして特に識別されない。
【０４９５】
図２１Ａは、ファブリック入力データ構造記述子２１００として、ファブリック入力データ構造記述子（別名ファブリック入力ＤＳＤ）の一実施形態の選択された細部を図示する。幾つかの実施形態では、ファブリック入力データ構造記述子２１００は、ファブリックからＰＥによって受信されるファブリックベクトル及びファブリックベクトルの処理に関連する様々なパラメータを記述する。様々な実施形態及び／又は使用状況では、命令の発信元０オペランド又は発信元１オペランドは、ファブリック入力データ構造記述子２１００に従ってＤＳＤのインスタンスを含むＤＳＲを参照する。
【０４９６】
ファブリック入力データ構造記述子２１００は、長さ２１０１、ＵＴＩＤ（Ｍｉｃｒｏｔｈｒｅａｄ  Ｉｄｅｎｔｉｆｉｅｒ：マイクロスレッド識別子）２１０２、ＵＥ（Ｍｉｃｒｏｔｈｒｅａｄ  Ｅｎａｂｌｅ：マイクロスレッドイネーブル）２１０３、ＳＷ（ｖ：ＳＩＭＤ幅）２１０４、ＡＣ（Ａｃｔｉｖａｔｅ  Ｃｏｌｏｒ：カラーアクティベーション）２１０５、Ｔｅｒｍ（Ｔｅｒｍｉｎａｔｅ  Ｍｉｃｒｏｔｈｒｅａｄ  ｏｎ  Ｃｏｎｔｒｏｌ  Ｗａｖｅｌｅｔ：制御ウェーブレット時にマイクロスレッド終了）２１０６、ＣＸ（Ｃｏｎｔｒｏｌ  Ｗａｖｅｌｅｔ  Ｔｒａｎｓｆｏｒｍ  Ｅｎａｂｌｅ：制御ウェーブレット変換イネーブル）２１０７、ＵＳ（Ｍｉｃｒｏｔｈｒｅａｄ  Ｓｐａｒｓｅ  Ｍｏｄｅ：マイクロスレッド・スパース・モデル）２１０８、タイプ２１０９、ＳＳ（Ｓｉｎｇｌｅ  Ｓｔｅｐ：シングルステップ）２１１０、ＳＡ（Ｓａｖｅ  Ａｄｄｒｅｓｓ／Ｃｏｎｄｉｔｉｏｎａｌ  Ｓｉｎｇｌｅ  Ｓｔｅｐ  Ｍｏｄｅ：アドレス保存／条件付きシングル・ステップ・モード）２１１１、ＳＣ（Ｃｏｌｏｒ  Ｓｐｅｃｉｆｉｅｄ  ／  Ｎｏｒｍａｌ  Ｍｏｄｅ：カラー指定／通常モード）２１１２、ＳＱ（Ｑｕｅｕｅ  Ｓｐｅｃｉｆｉｅｄ  ／  Ｎｏｒｍａｌ  Ｍｏｄｅ：キュー指定／通常モード）２１１３、及びＣＨ（Ｃｏｌｏｒ  Ｈｉｇｈ：カラーハイ）２１１４を有する。
【０４９７】
幾つかの実施形態では、長さ２１０１は、ベクトルの長さ、例えば、ベクトル内のデータ要素の数を指定する１５ビット整数を有する。
【０４９８】
幾つかの実施形態では、ＵＥ（Ｍｉｃｒｏｔｈｒｅａｄ  Ｅｎａｂｌｅ：マイクロスレッドイネーブル）２１０３は、少なくとも幾つかの条件下で、ファブリックベクトルの処理中、マイクロスレッド処理がイネーブルされているか否かを示す１ビットフィールドを有し、これは、「マイクロスレッド処理をイネーブルする」ファブリックベクトルと呼ばれることもある。命令の少なくとも１つのオペランド（発信元又は宛先）が、マイクロスレッド処理をイネーブルするファブリックベクトルである場合、命令の処理中の入力又は出力ストール時、別のタスクの別の命令に切り替わる処理がイネーブルされる（十分なマイクロスレッド処理リソースが利用可能な場合）。ストールがクリアされると、処理は（最終的に）前にストールされた命令に戻る。一例の入力ストールは、入力ファブリックベクトルオペランドの少なくとも１つの要素が利用可能ではない場合である。一例の出力ストールは、出力ファブリックベクトルの要素に関連付けられた結果をバッファリングする空間が不十分である場合である。幾つかの状況では、マイクロスレッド処理をイネーブルしないファブリックベクトルは、同期して処理され、入力ストール又は出力ストールのいずれかで処理をストールする。幾つかの状況では、マイクロスレッド処理をイネーブルするファブリックベクトルは非同期で処理され、入力ストール又は出力ストールのいずれかでの処理要素のストールを低減又は回避する。ファブリックベクトルがマイクロスレッド処理をイネーブルする場合、処理要素は、条件付きで異なる命令の処理に切り替わることができ（ストールする代わりに）、続けて、後の時点（例えば、データが利用可能なとき）にファブリックベクトルの処理を再開することができる。
【０４９９】
幾つかの実施形態では、ＵＴＩＤ（Ｍｉｃｒｏｔｈｒｅａｄ  Ｉｄｅｎｔｉｆｉｅｒ：マイクロスレッド識別子）２１０２は、複数のマイクロスレッドの１つ及び／又は複数のマイクロスレッドの１つに関連付けられたリソースを識別する３ビットフィールドを有する。マイクロスレッド及び／又はリソースには、例えば、マイクロスレッド処理をイネーブルするファブリックベクトルが関連付けられる。幾つかの実施形態では、ハードウェアは８つのマイクロスレッドにリソースを提供する。幾つかの実施形態及び／又は使用状況では、ＵＴＩＤ２１０２はＱ８９７の１つを識別又は部分的に識別する。
【０５００】
幾つかの実施形態では、ＳＷ（ＳＩＭＤ  Ｗｉｄｔｈ：ＳＩＭＤ幅）２１０４は、幾つかの実施態様では、並列に実行される演算数を指定する２ビットフィールドを有する。例えば、ＦＭＡＣＨ、ＦＡＤＤＨ、ＦＭＵＬＨ、又はＭＯＶ１６命令は、各オペランドで複数（最高で４つ）の演算を並列に実行する。幾つかの実施態様では、ＳＷフィールドは、ウェーブレットを解析してデータｖｓインデックス情報にする方法の決定に使用される。例えば、ＳＷフィールドが４である場合、それぞれが２つのデータ値を有する（インデックス値は有さない）２つのウェーブレットが、例えば並列で４つのオペランドを提供する。この例を続けると、ＳＷフィールドが２である場合、２つのデータ値を有する（インデックス値を有さない）１つのウェーブレットが、例えば並列で２つのオペランドを提供する。この例を続けると、ＳＷフィールドが１である場合、１つのデータ値及び１つのインデックス値を有する１つのウェーブレットが、１つのオペランドを提供する。
【０５０１】
幾つかの実施形態では、ＡＣ（Ａｃｔｉｖａｔｅ  Ｃｏｌｏｒ：カラーアクティベーション）２１０５は、アクティブ化するカラー（例えば、活性化演算を介して）を指定する６ビットフィールドを有する。幾つかの状況では、マイクロスレッド処理をイネーブルするファブリックベクトルの処理が完了した場合、ＡＣフィールドによって指定されたカラーはアクティブ化され、アクティブ化されたカラーに基づいてタスクが開始される。処理の完了は、例えば、ファブリックベクトルの全ての要素が処理された場合、又はＴｅｒｍ２１０６が制御ウェーブレットに直面したときに終了することを示し、ファブリックベクトルの処理時、制御ウェーブレットに直面した場合、発生する。幾つかの実施形態では、ＡＣ２１０５は、ローカルカラー及びファブリックカラーの一方を指定することができる。
【０５０２】
幾つかの実施形態では、Ｔｅｒｍ（Ｔｅｒｍｉｎａｔｅ  Ｍｉｃｒｏｔｈｒｅａｄ  ｏｎ  Ｃｏｎｔｒｏｌ  Ｗａｖｅｌｅｔ：制御ウェーブレット時にマイクロスレッド終了）２１０６は、制御ウェーブレット受信時に終了するか否かを指定する１ビットフィールドを有する。ファブリック入力データ構造記述子２１００によって指定されたキュー（例えば、本明細書の他の箇所に記載されるように、ＵＴＩＤ２１０２、ＳＣ２１１２、及び／又はＳＱ２１１３の任意の組合せの様々な機能によって様々に指定されるＱ８９７の１つ）のヘッド部におけるウェーブレットが、制御ウェーブレット（例えば、図１３Ａの制御ビット１３２０又は図１３Ｂの制御ビット１３４０が設定されている）であり、Ｔｅｒｍ２１０６が設定されている場合、命令は終了し、ＡＣ２１０５によって指定されたカラーはアクティブ化される。
【０５０３】
幾つかの実施形態では、ＣＸ（Ｃｏｎｔｒｏｌ  Ｗａｖｅｌｅｔ  Ｔｒａｎｓｆｏｒｍ  Ｅｎａｂｌｅ：制御ウェーブレット変換イネーブル）２１０７は、制御ウェーブレットを変換すべきか否かを指定する１ビットフィールドを有する。ＣＸ２１０７が設定されている場合、ファブリックベクトル内の制御ウェーブレットの受信に応答して、インデックスレジスタのビット１５：６は全て「１」に設定される。幾つかの実施形態及び／又は使用状況では、インデックスレジスタのビット１５：６が全て「１」である場合、インデックスレジスタを参照する出力ファブリックベクトルに関連付けられた任意の出力ウェーブレットの制御ビットは設定される。
【０５０４】
幾つかの実施形態では、ＵＳ（Ｍｉｃｒｏｔｈｒｅａｄ  Ｓｐａｒｓｅ  Ｍｏｄｅ：マイクロスレッド・スパース・モード）２１０８は、マイクロスレッド処理をイネーブルする（ＵＥフィールドを介して）ファブリックベクトルがスパースモードで処理されるか否かを指定する１ビットフィールドを有する。ＵＳ２１０８が設定される場合、ファブリックベクトルは、スパースデータ要素のベクトル及びファブリック入力データ構造記述子２１００によって記述されるオペランドの各ウェーブレットインデックスを有する。インデックスは任意選択で及び／又は選択で、ＷＬＩ２１５２（図２１Ｃの）に応じて、メモリオペランドのアドレス計算に使用される。
【０５０５】
幾つかの実施形態では、タイプ２１０９は、データ構造タイプ及び／又はファブリック入力データ構造記述子２１００の他のフィールドを解釈する方法を指定する３ビットフィールドを有する。タイプ２１０９は、ファブリック入力データ構造記述子２１００の全てのインスタンスで「０」である。
【０５０６】
幾つかの実施形態では、ＳＳ（Ｓｉｎｇｌｅ  Ｓｔｅｐ：シングルステップ）２１１０は、オペランドとしてＤＳＤを使用する演算で、少なくとも幾つかの条件下においてシングル・ステップ・モード演算がイネーブルされているか否かを指定する１ビットフィールドを有する。幾つかの状況では、シングル・ステップ・モードをイネーブルする１若しくはそれ以上のオペランドを有する命令は、シングル・ステップ・モードで動作する。
【０５０７】
幾つかの実施形態では、ＳＡ（Ｓａｖｅ  Ａｄｄｒｅｓｓ／Ｃｏｎｄｉｔｉｏｎａｌ  Ｓｉｎｇｌｅ  Ｓｔｅｐ  Ｍｏｄｅ：アドレス保存／条件付きシングル・ステップ・モード）２１１１は、オペランドとしてＤＳＤを使用する演算で、少なくとも幾つかの条件下において保存アドレスモード演算がイネーブルされているか否かを指定する１ビットフィールドを有する。
【０５０８】
幾つかの実施形態及び／又は使用状況では、カラーはアクティブ化され、それに応答して、カラーに少なくとも部分的に基づくアドレスにおいてタスクを開始する。開始されると、タスクは実行される。幾つかの状況では、入力ファブリックベクトルは、現在実行中のタスクのカラーに関連付けられたキューから提供される。幾つかの実施形態では、ＳＣ（Ｃｏｌｏｒ  Ｓｐｅｃｉｆｉｅｄ，Ｎｏｒｍａｌ  Ｍｏｄｅ：カラー指定、通常モード）２１１２は、設定される場合、入力ファブリックベクトルが、特定のファブリックカラーに関連付けられた特定のキュー（例えば、Ｑ８９７の１つ）から提供されることを指定する１ビットフィールドを有する。特定のファブリックカラーは、下位ビットＵＴＩＤ２１０２（３ビットフィールドを含む）及び上位ビットＣＨ２１１４（２ビットフィールドを含む）の連結として指定される（例えば、５ビットカラーとして）。幾つかの実施形態では、ＳＱ（Ｑｕｅｕｅ  Ｓｐｅｃｉｆｉｅｄ，Ｎｏｒｍａｌ  Ｍｏｄｅ：キュー指定、通常モード）２１１３は、指定される場合、入力ファブリックベクトルが特定のキュー（例えば、Ｑ８９７の１つ）から提供されることを指定する１ビットフィールドを有する。ＳＱ２１１３が設定される場合、入力ファブリックベクトルは、ＵＴＩＤ２１０２により指定されるＱ８９７の１つから提供される。
【０５０９】
図２１Ｂは、ファブリック出力データ構造記述子２１２０として、ファブリック出力データ構造記述子（別名ファブリック出力ＤＳＤ）の一実施形態の選択された細部を図示する。幾つかの実施形態では、ファブリック出力データ構造記述子２１２０は、ＰＥにより作成され、ファブリックを介して送信されるファブリックベクトル及びファブリックベクトルの処理に関連する様々なパラメータを記述する。様々な実施形態及び／又は使用状況では、命令の宛先オペランドは、ファブリック出力データ構造記述子２１２０によるＤＳＤのインスタンスを含むＤＳＲを参照する。
【０５１０】
ファブリック出力データ構造記述子２１２０は、長さ２１２１、ＵＴＩＤ（Ｍｉｃｒｏｔｈｒｅａｄ  Ｉｄｅｎｔｉｆｉｅｒ：マイクロスレッド識別子）２１２２、ＵＥ（Ｍｉｃｒｏｔｈｒｅａｄ  Ｅｎａｂｌｅ：マイクロスレッドイネーブル）２１２３、ＳＷ（ＳＩＭＤ  Ｗｉｄｔｈ：ＳＩＭＤ幅）２１２４、カラー２１２６、Ｃ（Ｏｕｔｐｕｔ  Ｃｏｎｔｒｏｌ  Ｂｉｔ：出力制御ビット）２１２７、インデックスロー２１２８．１、タイプ２１２９、ＳＳ（Ｓｉｎｇｌｅ  Ｓｔｅｐ：シングルステップ）２１３０、ＳＡ（Ｓａｖｅ  Ａｄｄｒｅｓｓ／Ｃｏｎｄｉｔｉｏｎａｌ  Ｓｉｎｇｌｅ  Ｓｔｅｐ  Ｍｏｄｅ：アドレス保存／条件付きシングル・ステップ・モード）２１３１、ＷＬＩ（Ｗａｖｅｌｅｔ  Ｉｎｄｅｘ  Ｓｅｌｅｃｔ：ウェーブレットインデックス選択）２１３２、インデックスハイ２１２８．２、及びＡＣ（Ａｃｔｉｖａｔｅ  Ｃｏｌｏｒ：カラーアクティベーション）２１２５を有する。
【０５１１】
幾つかの実施形態では、ファブリック出力データ構造記述子２１２０の要素（長さ２１２１、ＵＴＩＤ２１２２、ＵＥ２１２３、ＳＷ２１２４、ＳＳ２１３０、ＳＡ２１３１、及びＡＣ２１２５）の機能及び／又は演算はそれぞれ、ファブリック入力データ構造記述子２１００の要素（長さ２１０１、ＵＴＩＤ２１０２、ＵＥ２１０３、ＳＷ２１０４、ＳＳ２１１０、ＳＡ２１１１、及びＡＣ２１０５）と同様である。
【０５１２】
幾つかの実施形態では、カラー２１２６は、ファブリックベクトルに関連付けられたウェーブレットの送信に使用されるファブリックカラーを指定する５ビットフィールドを有する。
【０５１３】
幾つかの実施形態では、Ｃ（Ｏｕｔｐｕｔ  Ｃｏｎｔｒｏｌ  Ｂｉｔ：出力制御ビット）２１２７は、ウェーブレットが制御ウェーブレットであるか否かを指定する１ビットフィールドを有する。Ｃ２１２７が設定される場合、ＤＳＤに基づいて作成されるあらゆるウェーブレットは制御ウェーブレットである（例えば、図１３Ａの制御ビット１３２０が設定される）。
【０５１４】
幾つかの実施形態では、インデックスロー２１２８．１は３ビットフィールドを有し、インデックスハイ２１２８．２は３ビットフィールドを有する。インデックスロー２１２８．１及びインデックスハイ２１２８．２を連結したものは集合的に、インデックス２１２８と呼ばれる。幾つかの状況では、インデックス２１２８は、ウェーブレットのインデックス（例えば、図１３Ａのインデックス１３２１）の形成に使用される。
【０５１５】
幾つかの実施形態では、タイプ２１２９は、データ構造タイプ及び／又はファブリック出力データ構造記述子２１２０の他のフィールドを解釈する方法を指定する３ビットフィールドを有する。タイプ２１２９は、ファブリック出力データ構造記述子２１２０の全てのインスタンスで「０」である。
【０５１６】
幾つかの実施形態では、ＷＬＩ（Ｗａｖｅｌｅｔ  Ｉｎｄｅｘ  Ｓｅｌｅｃｔ：ウェーブレットインデックス選択）２１３２は、ファブリックベクトルのインデックスを部分的に指定する１ビットフィールドを有する。幾つかの状況では、ＷＬＩ２１３２が「１」である場合、インデックスはレジスタ（例えば、ＲＦ８４２のＧＰＲ４）からの値である。幾つかの状況では、ＷＬＩ２１３２が「０」である場合、インデックスはインデックス２１２８の１６ビットへのゼロ拡張である。
【０５１７】
図２１Ｃは、１Ｄメモリ・ベクトル・データ構造記述子２１４０として、１Ｄメモリ・ベクトル・データ構造記述子（別名１ＤメモリベクトルＤＳＤ）の一実施形態の選択された細部を図示する。幾つかの実施形態では、１Ｄメモリ・ベクトル・データ構造記述子２１４０は、メモリに記憶された一次元メモリベクトル及びメモリベクトルの処理に関連する様々なパラメータを記述する。様々な実施形態及び／又は使用状況では、命令の発信元０オペランド、発信元１オペランド、及び宛先オペランドのいずれか１若しくはそれ以上は、１Ｄメモリ・ベクトル・データ構造記述子２１４０によるＤＳＤの各インスタンスを含む各ＤＳＲを参照する。
【０５１８】
１Ｄメモリ・ベクトル・データ構造記述子２１４０は、長さ２１４１、ベースアドレス２１４２、タイプ２１４９、ＳＳ（Ｓｉｎｇｌｅ  Ｓｔｅｐ：シングルステップ）２１５０、ＳＡ（Ｓａｖｅ  Ａｄｄｒｅｓｓ／Ｃｏｎｄｉｔｉｏｎａｌ  Ｓｉｎｇｌｅ  Ｓｔｅｐ  Ｍｏｄｅ：アドレス保存／条件付きシングル・ステップ・モード）２１５１、ＷＬＩ（Ｗａｖｅｌｅｔ  Ｉｎｄｅｘ  Ｓｅｌｅｃｔ：ウェーブレットインデックス選択）２１５２、及びストライド２１５３を有する。
【０５１９】
幾つかの実施形態では、１Ｄメモリ・ベクトル・データ構造記述子２１４０の要素の幾つか（長さ２１４１、ＳＳ２１５０、及びＳＡ２１５１）の機能及び／又は演算はそれぞれ、ファブリック入力データ構造記述子２１００の要素の幾つか（長さ２１０１、ＳＳ２１１０、及びＳＡ２１１１）と同様である。幾つかの状況では、メモリベクトルの長さが１５ビット超である場合、４Ｄメモリ・ベクトル・データ構造記述子２１４０が使用される。
【０５２０】
幾つかの実施形態では、ベースアドレス２１４２は、メモリベクトルのベースアドレスを指定する１５ビット整数を有する。
【０５２１】
幾つかの実施形態では、タイプ２１４９は、データ構造タイプ及び／又は１Ｄメモリ・ベクトル・データ構造記述子２１４０の他のフィールドを解釈する方法を指定する３ビットフィールドを有する。タイプ２１４９は、１Ｄメモリ・ベクトル・データ構造記述子２１４０の全てのインスタンスで「１」である。
【０５２２】
幾つかの実施形態では、ＷＬＩ（Ｗａｖｅｌｅｔ  Ｉｎｄｅｘ  Ｓｅｌｅｃｔ：ウェーブレットインデックス選択）２１５２は、ベクトルのインデックスを部分的に指定する１ビットフィールドを有する。ＷＬＩ２１５２が「０」である場合、インデックスは０である。幾つかの状況では、ＷＬＩ２１５２が「１」である場合、インデックスはレジスタ（例えば、ＲＦ８４２のＧＰＲ４）からの値又はスパースウェーブレットのインデックス（例えば、図１３Ａのインデックス１３２１）である。
【０５２３】
幾つかの実施形態では、ストライド２１５３は、ベクトルのストライドを指定する９ビット符号付き整数を有する。幾つかの状況では、ベースアドレス２１４２、ＷＬＩ２１５３によって指定されるインデックス、及びストライド２１５３は、１Ｄメモリベクトル内のデータ要素のアドレスを計算できるようにする。１Ｄメモリベクトル内の最初のデータ要素のアドレスは、ベースアドレス２１４２＋ＷＬＩ２１５３によって指定されたインデックスである。１Ｄベクトル内の次のデータ要素のアドレスは、最初のデータ要素のアドレス＋ストライド２１５３である。例えば、ベースアドレス２１４２は１３６であり、ＷＬＩ２１５３は１であり、ＧＰＲ４は値６を保持する。ストライド２１５３は−２であり、長さ２１４１は１０であり、メモリベクトルはアドレス｛１４２，１４０，１３８，...，１２４｝に配置されたデータを含む。幾つかの状況では、メモリベクトルのストライドが９ビットを超える場合、４Ｄメモリ・ベクトル・データ構造記述子２１４０が使用される。
【０５２４】
図２１Ｄは、４Ｄメモリ・ベクトル・データ構造記述子２１６０として、４Ｄメモリ・ベクトル・データ構造記述子（別名４ＤメモリベクトルＤＳＤ）の一実施形態の選択された細部を図示する。幾つかの実施形態では、４Ｄメモリ・ベクトル・データ構造記述子２１６０は、図２２Ｂの４Ｄメモリベクトル拡張データ構造記述子２２４０と併せて、メモリに記憶された四次元メモリベクトル及びメモリベクトルの処理に関連する様々なパラメータを記述する。幾つかの実施形態では、４Ｄメモリ・ベクトル・データ構造記述子２１６０は、図２２Ｂの４Ｄメモリベクトル拡張データ構造記述子２２４０と併せて、メモリに記憶された二次元又は三次元メモリベクトル及びメモリベクトルの処理に関連する様々なパラメータを記述する。様々な実施形態及び／又は使用状況では、命令の発信元０オペランド、発信元１オペランド、及び宛先オペランドのいずれか１若しくはそれ以上は、４Ｄメモリ・ベクトル・データ構造記述子２１６０によるＤＳＤの各インスタンスを含む各ＤＳＲを参照する。
【０５２５】
４Ｄメモリ・ベクトル・データ構造記述子２１６０は、長さ下位ビット２１６１．１、ベースアドレス２１６２、タイプ２１６９、ＳＳ（Ｓｉｎｇｌｅ  Ｓｔｅｐ：シングルステップ）２１７０、ＳＡ（Ｓａｖｅ  Ａｄｄｒｅｓｓ／Ｃｏｎｄｉｔｉｏｎａｌ  Ｓｉｎｇｌｅ  Ｓｔｅｐ  Ｍｏｄｅ：アドレス保存／条件付きシングル・ステップ・モード）２１７１、ＷＬＩ（Ｗａｖｅｌｅｔ  Ｉｎｄｅｘ  Ｓｅｌｅｃｔ：ウェーブレットインデックス選択）２１７２、及び長さ上位ビット２１６１．２を有する。
【０５２６】
幾つかの実施形態では、４Ｄメモリ・ベクトル・データ構造記述子２１６０の要素の幾つか（ベースアドレス２１６２、ＳＳ２１７０、ＳＡ２１７１、及びＷＬＩ２１７２）の機能及び／又は演算はそれぞれ、１Ｄメモリ・ベクトル・データ構造記述子２１４０（ベースアドレス２１４２、ＳＳ２１５０、ＳＡ２１５１、及びＷＬＩ２１５２）と同様である。
【０５２７】
幾つかの実施形態では、下位ビット２１６１．１は１５ビットフィールドを有し、長さ上位ビット２１６１．２は９ビットフィールドを有する。下位ビット２１６１．１及び長さ上位ビット２１６１．２を連結したものは集合的に、４Ｄメモリベクトル拡張データ構造記述子２２４０と併せて解釈される長さ２１６１（２４ビットフィールド）と呼ばれる（長さ２１６１として図示される）。
【０５２８】
幾つかの実施形態では、タイプ２１６９は、例えば、拡張ＤＳＤ（ｅｘｔｅｎｄｅｄ  ＤＳＤ：ＸＤＳＤ）を記憶する拡張ＤＳＲ（ｅｘｔｅｎｄｅｄ  ＤＳＲ：ＸＤＳＲ）を指定する３ビットフィールドを有する。ＸＤＳＤは、循環メモリバッファ（例えば、図２２Ａの循環メモリバッファ拡張データ構造記述子２２１０）及び四次元メモリベクトル（例えば、図２２Ｂの４Ｄメモリベクトル拡張データ構造記述子２２４０）の一方を指定し記述する。
【０５２９】
図２１Ｅは、循環メモリ・バッファ・データ構造記述子２１８０として、循環メモリ・バッファ・データ構造記述子（別名循環メモリバッファＤＳＤ）の一実施形態の選択された細部を図示する。幾つかの実施形態では、循環メモリ・バッファ・データ構造記述子２１８０は、循環メモリバッファ拡張データ構造記述子２２１０と併せて、メモリに記憶されたデータ要素の循環バッファ及びメモリに記憶されたデータ要素のＦＩＦＯの一方及びデータ要素の処理に関連付けられた様々なパラメータを記述する。様々な実施形態及び／又は使用状況では、命令の発信元０オペランド、発信元１オペランド、及び宛先オペランドのいずれか１若しくはそれ以上は、循環メモリ・バッファ・データ構造記述子２１８０によるＤＳＤの各インスタンスを含む各ＤＳＲを参照する。
【０５３０】
循環メモリ・バッファ・データ構造記述子２１８０は、長さ２１８１、ベースアドレス２１８２、ＦＷ（ＦＩＦＯ  Ｗｒａｐ  Ｂｉｔ：ＦＩＦＯラップビット）２１８８、タイプ２１８９、ＳＳ（Ｓｉｎｇｌｅ  Ｓｔｅｐ：シングルステップ）２１９０、ＳＡ（Ｓａｖｅ  Ａｄｄｒｅｓｓ／Ｃｏｎｄｉｔｉｏｎａｌ  Ｓｉｎｇｌｅ  Ｓｔｅｐ  Ｍｏｄｅ：アドレス保存／条件付きシングル・ステップ・モード）２１９１、ＷＬＩ（Ｗａｖｅｌｅｔ  Ｉｎｄｅｘ  Ｓｅｌｅｃｔ：ウェーブレットインデックス選択）２１９２、及びＳＷ（ＳＩＭＤ  Ｗｉｄｔｈ：ＳＩＭＤ幅）２１８４を有する。幾つかの実施形態では、循環メモリバッファアクセスは常に、インデックス０及びストライド１を有する。
【０５３１】
幾つかの実施形態では、循環メモリ・バッファ・データ構造記述子２１８０の要素の幾つか（長さ２１８１、ベースアドレス２１８２、ＳＳ２１９０、及びＳＡ２１９１）の機能及び／又は演算はそれぞれ、１Ｄメモリ・ベクトル・データ構造記述子２１４０の要素の幾つか（長さ２１４１、ベースアドレス２１４２、ＳＳ２１５０、及びＳＡ２１５１）と同様である。幾つかの状況では、タイプ２１８９の機能及び／又は演算は、４Ｄメモリ・ベクトル・データ構造記述子２１６０のタイプ２１６９と同様である。幾つかの実施形態では、循環メモリ・バッファ・データ構造記述子２１８０のＳＷ２１８４の機能及び／又は演算は、ファブリック入力データ構造記述子２１００のＳＷ２１０４と同様である。
【０５３２】
幾つかの実施形態では、ＦＷ（ＦＩＦＯ  Ｗｒａｐ  Ｂｉｔ：ＦＩＦＯラップビット）２１８８は、満杯ＦＩＦＯと空ＦＩＦＯとの区別を可能にする１ビットフィールドを有する。ＦＷ（ＦＩＦＯ  Ｗｒａｐ  Ｂｉｔ：ＦＩＦＯラップビット）２１８８は、アクセスがＦＩＦＯのアドレス範囲をラップアラウンドするとき、トグルされる。
【０５３３】
幾つかの実施形態では、ＷＬＩ２１９２は、循環バッファのインデックスに影響を有さない。
【０５３４】
図２２Ａは、循環メモリバッファ拡張データ構造記述子２２１０として、循環メモリバッファ拡張データ構造記述子の一実施形態の選択された細部を図示する。循環メモリバッファ拡張データ構造記述子２２１０は、タイプ２２１１、開始アドレス２２１２、終了アドレス２２１３、ＦＩＦＯ２２１４、カラープッシュ（アクティベーション）２２１５、及びカラーポップ（アクティベーション）２２１６を有する。
【０５３５】
幾つかの実施形態では、タイプ２２１１は、データ構造のタイプを指定する１ビットフィールドを有する。タイプ２２１１は、循環メモリバッファ拡張データ構造記述子２２１０の全てのインスタンスで「１」である。
【０５３６】
幾つかの実施形態では、開始アドレス２２１２は、メモリ内の循環バッファの開始アドレスを指定する１５ビットフィールドを有する。幾つかの実施形態では、終了アドレス２２１３は、メモリ内の循環バッファの終了アドレスを指定する１５ビット整数を有する。アドレスが増分され（次のアクセスを開始するために、ストライドにより）、終了アドレス２２１３に等しい場合、アドレスはベースアドレス２２１２にリセットされ、それにより、循環アクセス挙動を提供する。
【０５３７】
幾つかの実施形態では、ＦＩＦＯ２２１４は、循環バッファがＦＩＦＯであるか否かを指定する１ビットフィールドを有する。ＦＩＦＯ２２１４が「０」の場合、循環バッファはＦＩＦＯではない。ＦＩＦＯ２２１４が「１」の場合、循環バッファはＦＩＦＯである。
【０５３８】
幾つかの実施形態では、カラープッシュ（アクティベーション）２２１５及びカラーポップ（アクティベーション）２２１６は、アクティブ化する（例えば、活性化演算を介して）カラーを指定する６ビットフィールドを有する。幾つかの実施形態では、カラープッシュ（アクティベーション）２２１５及びカラーポップ（アクティベーション）２２１６は、ローカルカラー及びファブリックカラーのカラーを指定することができる。
【０５３９】
様々な実施形態では、２つの循環メモリバッファＤＳＲが、メモリの同じレジスタに記憶されたデータ要素のＦＩＦＯを記述することができる。宛先ＤＳＲ（例えば、ＤＤＳＲ８）は、ＦＩＦＯの書き込みポインタを記述し、発信元１ＤＳＲ（例えば、Ｓ１ＤＳＲ８）はＦＩＦＯの読み出しポインタを記述する。幾つかの実施形態では、宛先ＤＳＲ及び発信元１ＤＳＲは同じ識別子を有する。様々な実施形態では、ＤＳＲ８４６の幾つかのみがＦＩＦＯを記述することができる（例えば、ＤＤＳＲ８〜ＤＤＳＲ１１及びＳ１ＤＳＲ８〜Ｓ１ＤＳＲ１１）。
【０５４０】
２つのＤＳＲのＦＷ（ＦＩＦＯ  Ｗｒａｐ  Ｂｉｔ：ＦＩＦＯラップビット）２１８８は、ＦＩＦＯが満杯であるか、それとも空であるかの検出を可能にする。ＦＩＦＯが宛先として使用される場合、関連付けられたＳ１ＤＳＲのベースアドレス２１８２及びＦＷ２１８８は読み出され、ＤＤＳＲからの値と比較される。２つのＤＳＲのベースアドレス２１８２が同じであるが、ＦＷ２１８８が異なる場合、ＦＩＦＯは満杯である。ＦＩＦＯが発信元として使用される場合、関連付けられたＤＤＳＲのベースアドレス２１８２及びＦＷ２１８８は読み出され、Ｓ１ＤＳＲからの値と比較される。２つのＤＳＲのベースアドレス２１８２が同じであり、ＦＷ２１８８が同じである場合、ＦＩＦＯは空である。幾つかの状況（例えば、マイクロスレッド処理）では、空のＦＩＦＯにアクセスしている読み出し又は満杯のＦＩＦＯにアクセスしている書き込みに応答して、ＦＩＦＯがそれぞれ空又は満杯ではなくなるまで、処理は別のタスク内の命令に切り替えられる。
【０５４１】
図２２Ｂは、４Ｄメモリベクトル拡張データ構造記述子２２４０として、４Ｄメモリベクトル拡張データ構造記述子の一実施形態の選択された細部を図示する。幾つかの実施形態では、４Ｄメモリベクトル拡張データ構造記述子２２４０は部分的に、メモリに記憶されるデータ要素の四次元ベクトルを記述する。４Ｄメモリベクトル拡張データ構造記述子２２４０は、タイプ２２４１、次元２２４２、ＤＦ（Ｄｉｍｅｎｓｉｏｎ  Ｆｏｒｍａｔ：次元フォーマット）２２４３、選択ストライド１  ２２４４．１、選択ストライド２  ２２４４．２、選択ストライド３  ２２４４．３、選択ストライド４  ２２４４．４、及びストライド２２４５を有する。幾つかの実施形態では、４Ｄメモリベクトル拡張データ構造記述子２２４０は５１ビットを有する。
【０５４２】
幾つかの実施形態では、タイプ２２４１は、データ構造のタイプを指定する１ビットフィールドを有する。タイプ２２４１は、４Ｄメモリベクトル拡張データ構造記述子２２４０の全てのインスタンスで「０」である。
【０５４３】
幾つかの実施形態では、次元２２４２は、ベクトルの次の次元の長さを初期化するのに使用される２０ビットフィールドを有する。
【０５４４】
幾つかの実施形態では、ＤＦ（Ｄｉｍｅｎｓｉｏｎ  Ｆｏｒｍａｔ：次元フォーマット）２２４３は、図２１Ｄの長さ２１６１と併せて、Ｎ次元ベクトルの各次元の長さを指定する５ビットフィールドを有する。概念的に、長さ２１６１は６つの連続した４ビットニブルに分割され、各次元はニブルの１若しくはそれ以上を使用して表現される。ビットはＤＦ２２４３において、長さ２１６１における次元間の境界を示すように設定される。例えば、ＤＦ２２４２は「０１１１０」（二進数）であり、第１の次元が２つのニブル、例えば、ビット［７：０］を使用して表現され、１〜１２８の長さを表すことを示す。同様に、第２の次元は１つのニブル、例えば、ビット［１１：８］を使用して表現され、１〜４の長さを表す。Ｎ次元ベクトルは、ＤＦ２２４２において（Ｎ−１）ビットを設定することによって表され、最後の次元のみが４を超えるニブルを使用する。幾つかの実施形態及び／又は使用状況では、例えば、ベクトルが、長さ２１４１（図２１Ｃの）が記述するには長すぎる場合、一次元ベクトルはこのフォーマットを使用して記述される。幾つかの実施形態及び／又は使用状況では、二次元又は三次元ベクトルはこのフォーマットを使用して記述される。
【０５４５】
幾つかの実施形態では、選択ストライド１  ２２４４．１は、ベクトルの第１の次元のストライドを指定する１ビットフィールドを有する。選択ストライド１  ２２４４．１が「０」の場合、ストライドは１である。選択ストライド１  ２２４４．１が「１」の場合、ストライドはストライド２２４５によって指定される。
【０５４６】
幾つかの実施形態では、選択ストライド２  ２２４４．２は、３ビットフィールドを有し、ベクトルの第２の次元のストライドを符号化する。選択ストライド２  ２２４４．２が「０」の場合、ストライドは１である。選択ストライド２  ２２４４．２が「１」の場合、ストライドはストライド２２４５によって指定される。選択ストライド２  ２２４４．２が２〜７の場合、ストライドは対応する（ＤＳＲｓ）ストライドレジスタ（例えば、ＤＳＲ８４６の６つのストライドレジスタによって指定される。
【０５４７】
幾つかの実施形態では、選択ストライド３  ２２４４．３及び選択ストライド４  ２２４４．４はそれぞれ３ビットフィールドを有する。幾つかの実施形態では、選択ストライド３  ２２４４．３及び選択ストライド４  ２２４４．４の機能及び／又は演算はそれぞれ、第３及び第４の次元に関して、選択ストライド２  ２２４４．２は第２の次元に関すると同様である。
【０５４８】
幾つかの実施形態では、ストライド２２４５は、メモリ内のベクトルのストライドを指定する１５ビットフィールドを有する。幾つかの状況では、ストライド２２４５は、一次元ベクトルにはストライド２１５３（図２１Ｃの）よりも長いストライドを使用できるようにする。
【０５４９】
図２３は、データ構造記述子フロー２３００として、データ構造記述子によりオペランドにアクセスする一実施形態の選択された細部を図示する。幾つかの実施形態では、データ構造記述子フロー２３００の動作はＣＥ（例えば、ＣＥ８００）によって実行される。
【０５５０】
データ構造記述子を介して発信元オペランドにアクセスすることは、各ＤＳＤを用いてＰＥのＣＥの１若しくはそれ以上のＤＳＲを初期化し（ＤＳＲを設定２３０２）、任意選択で各ＸＤＳＤ及び／又はＣＥのストライド値を初期化する（（任意選択）ＸＤＳＲを設定２３０５）ことによって開始される（開始２３０１）。幾つかの実施形態では、初期化されたＤＳＲ（及び任意選択で、初期化されたＸＤＳＲ及びストライド値を保持するストライドレジスタ）は、データをメモリからＤＳＲに移す命令によって初期化される。続けて、ＣＥは、初期化されたＤＳＲ及び任意選択で１若しくはそれ以上のＸＤＳＲ及び／又はストライドレジスタによって指定された１若しくはそれ以上のオペランドを有する命令（例えば、ＦＭＡＣＨ、ＭＯＶ、又はＬＴ１６）をフェッチし復号化する（ＤＳＲを用いて命令をフェッチ／復号化２３０３）。幾つかの実施形態では、命令のオペランドタイプフィールドは、オペランドがＤＳＲによって指定されるか否かを指定する。
【０５５１】
ＣＥは、ＤＳＲから１若しくはそれ以上のＤＳＤを読み出し（ＤＳＲを読み出す２３０４）、データ構造のタイプ、データ要素の発信元、複数のデータ要素が一緒に読み出されるか否か（例えば、ＳＩＭＤ演算の場合）、及び各オペランドのデータ要素の総数の１若しくはそれ以上を特定する。図２４に関して説明されるように、特定に応じて、各ＤＳＤ読み出しで、ＸＤＳＲ及び１若しくはそれ以上のストライドレジスタも任意選択で読み出される（（任意選択）ＸＤＳＲを読み出す２３０６）。幾つかの状況では、ＤＳＲは、発信元０オペランド、発信元１オペランド、及び宛先オペランドの１若しくはそれ以上について読み出され、動作２３０３において得られた命令の各オペランドフィールドによって識別される。幾つかの実施形態及び／又は使用状況では、ＤＳＲ、ＸＤＳＲ、及びストライドレジスタの任意の１若しくはそれ以上は、全体的又は部分的に並列して読み出され、他の実施形態及び／又は使用状況では、ＤＳＲ、ＸＤＳＲ、及びストライドレジスタの任意の１若しくはそれ以上は、全体的又は部分的に順次読み出される。
【０５５２】
動作２３０４において得られたＤＳＤ（及び任意選択で、動作２３０６において得られたＸＤＳＲ及びストライド値）に基づいて、ＣＥは、ファブリック及び／又はメモリから１若しくはそれ以上の発信元データ要素を読み出す（キュー／メモリから（次の）発信元データ要素を読み出す２３１０）。動作２３０３において得られた命令によって指定される各発信元（例えば、発信元０及び発信元１のそれぞれ）について、ＣＥは、ＤＳＤ内のＳＩＭＤ幅情報に従って、命令において指定された演算の反復に十分な要素を読み出す。ファブリックからのデータ要素（例えば、発信元データ構造はファブリックベクトルである）は、ＣＥの１若しくはそれ以上のキューを介してアクセスされる。幾つかの実施形態及び／又は使用状況では、ＣＥはレジスタからもデータ要素を読み出す。
【０５５３】
発信元データ要素を読み出した後、ＣＥは、入力としてデータ要素を使用して演算を実行する（データ要素に対して（次の）演算を実行２３１１）。演算は、動作２３０３（例えば、ＦＭＡＣＨ命令では乗累算演算、ＭＯＶ命令では移動演算、又はＬＴ１６では整数未満比較）において得られる命令によって指定される。
【０５５４】
幾つかの状況では、演算（例えば、乗累算演算又は移動演算）は、１若しくはそれ以上の出力データ要素を生成する。ＣＥは、動作２３０４において得られたＤＳＤ（及び任意選択で動作２３０６において得られたＸＤＳＲ及びストライド値）に基づいて出力データ要素をファブリック又はメモリに書き込む（（次の）宛先データ要素をキュー／メモリに書き込む２３１２）。ファブリックに送信されたデータ要素（例えば、宛先データ構造はファブリックベクトルである）は、ウェーブレットに形成され、ＰＥのルータを介してファブリックに送信される。幾つかの他の状況では、出力データ要素はない（例えば、幾つかの比較演算）。
【０５５５】
演算からの任意の結果を書き込んだ後、ＣＥは、処理する追加のデータ要素があるか否かを判断する（データ要素がまだあるか？２３１３）。幾つかの実施形態では、ＤＳＤは、アクセスするデータ要素の総数（例えば、ベクトルの長さ）を指定し、ＣＥは、アクセスされたデータ要素の数（例えば、カウンタを介して追跡される）を長さによって指定されたデータ要素の総数と比較する。処理する追加のデータ要素がある場合、ＣＥは、全てのデータ要素が処理されるまで動作２３１０〜２３１３を繰り返し、全てのデータ要素が処理されると、フローは終わる（終わり２３１６）。
【０５５６】
様々な実施形態及び／又は使用状況では、データ構造記述子フロー２３００の要素の任意の１若しくはそれ以上の全て又は任意の部分（例えば、任意の１若しくはそれ以上の動作２３０２〜２３１２）は、ＣＥ、例えば、ＣＥ８００の要素によって実行される演算及び／又はＣＥの要素に概念的に対応及び／又は概念的に関連する。
【０５５７】
一例として、発信元ＤＳＤ（ＤＳＲを設定２３０２及びＤＳＲを読み出す２３０４に関連付けられる）を保持する発信元ＤＳＲは、ＤＳＲ８４６の１若しくはそれ以上（例えば、Ｓ０ＤＳＲ、Ｓ１ＤＳＲ、ＤＤＳＲ、ＸＤＳＲ、及びストライドレジスタ）である。幾つかの実施形態では、ＣＥ８００は、ＤＳＤをＤＳＲに書き込む命令、例えば、ＬＤＳ０ＷＤＳ、ＬＤＳ１ＷＤＳ、ＬＤＸＤＳ、及びＬＤＳＲに応答してＤＳＲを、設定２３０２を実行する。
【０５５８】
別の例として、ＣＥ８００は、ＤＳＲを用いて命令をフェッチ／復号化２３０３を実行する。様々な実施形態では、ＰＣ８３４及びＩ配列８３６は、メモリ８５４から命令をフェッチし、デコーダ８４０は、フェッチされた命令を符号化する。幾つかの実施形態では、命令は、図２５Ａの複数オペランド命令２５１０、図２５Ｂの１発信元０宛先オペランド命令２５２０、及び図２５Ｃの即値命令２５３０の１つに従ってフォーマットされる。幾つかの実施形態では、復号化は、命令オペランドがＤＳＤによって指定されること、例えば、オペランド１タイプ２５１４．１の値が「１」であることを検出することを含む。
【０５５９】
別の例として、ＣＥ８００は、ＤＳＲによって指定された１若しくはそれ以上のオペランドを有する命令に応答して、ＤＳＲを読み出す２３０４を実行する。様々な実施形態では、Ｄ配列８４４は、ＤＳＲ８４６から動作２３０３において得られた命令によって指定されたＤＳＲを読み出す。幾つかの実施形態では、ＤＳＲから読み出されたＤＳＤは、図２１Ａのファブリック入力データ構造記述子２１００、図２１Ｂのファブリック出力データ構造記述子２２００、図２１Ｃの１Ｄメモリ・ベクトル・データ構造記述子２１４０、図２１Ｄの４Ｄメモリ・ベクトル・データ構造記述子２１６０、及び図２１Ｅの循環メモリ・バッファ・データ構造記述子２１８０の１若しくはそれ以上に従ってフォーマットされる。幾つかの実施形態及び／又は使用状況では、Ｄ配列８４４は、ＸＤＳＲを指定するタイプ２１６９又はタイプ２１８９を有するＤＳＤに応答して、（任意選択）ＸＤＳＲを読み出す２３０６を実行する。様々な実施形態では、ＸＤＳＲから読み出されたＸＤＳＤは、図２２Ａの循環メモリ拡張バッファデータ構造記述子２１８０及び図２２Ｂの４Ｄメモリベクトル拡張データ構造記述子２１６０の１つに従ってフォーマットされる。
【０５６０】
別の例として、ＣＥ８００は、動作２３０４において読み出された発信元ＤＳＤ及び任意選択で動作２３０６において読み出されたＸＤＳＤに基づいて、キュー／メモリから（次の）発信元データ要素を読み出す２３１０を実行する。幾つかの状況では、発信元ＤＳＤは、オペランドがメモリを発端とすることを指定し（例えば、タイプ２１４９を介して）、Ｄ配列８４４は、（例えば、ベースアドレス２１４２、ＷＬＩ２１５２、及びストライド２１５３の１若しくはそれ以上に部分的に基づいて）ＤＳＤによって指定されたアドレスにおいてＤストア８４８又はメモリ８５４からデータ要素を読み出す。幾つかの状況では、発信元ＤＳＤは、オペランドがファブリックを発端とすることを指定し（例えば、タイプ２１０９を介して）、ＣＥ８００はＱ８９７の１つからデータ要素を読み出す。幾つかの実施形態及び／又は使用状況では、データ要素は、Ｑ８９７の１つからデータパス８５２に直接送信される。他の実施形態及び／又は使用状況では、データ要素は、Ｑ８９７の１つからＲＦ８４２に、そしてＲＦからデータパス８５２に送信される。幾つかの実施形態では、Ｑ８９７の１つは、ＤＳＤの部分（例えば、ＵＴＩＤ２１０２、ＳＣ２１１２、及びＳＱ２１１３の１若しくはそれ以上）によって暗黙的に指定される。幾つかの状況では、ＣＥは、現在のタスク（例えば、動作２３０３において得られた命令に関連付けられたタスク）のカラーに関連付けられたキューから読み出す。幾つかの状況（例えば、ＳＱ２１１３が「１」である）では、ＣＥは、ＵＴＩＤ２１０２によって指定されたキューから読み出す。幾つかの状況（例えば、ＳＣ２１１２が「１」である）では、ＣＥは、ＣＨ２１１４と連結されたＵＴＩＤ２１０２によって指定されたカラーに関連付けられたキューから読み出す。幾つかの状況では、ＣＥは、ＳＷ２１０４に基づいて指定されたキューから１つ、２つ、又は４つのデータ要素を読み出す。
【０５６１】
幾つかの実施形態及び／又は使用状況では、ＣＥ８００が、Ｑ８９７の指定されたキュー内で利用可能なデータ要素よりも多数のデータ要素を読み出そうとする場合、又は代替的には、空のＦＩＦＯ（例えば、図２１ＥによるＤＳＤにより実施される）から読み出そうとする場合、ＣＥ８００はストールする。幾つかの実施形態及び／又は使用状況（例えば、マイクロスレッド処理）では、ピッカー８３０は、データ要素を待つ間、Ｑ８９７から異なるタスクを選択することができ、それにより、ＣＥ８００のストールを回避できるようにする。
【０５６２】
別の例として、ＣＥ８００は、データ要素に対して（次の）演算を実行２３１１を実行する。幾つかの実施形態では、データパス８５２は、動作２３０３において得られた命令によって指定される演算への入力として、動作２３１０において読み出したデータ要素を使用する。幾つかの状況（例えば、計算演算）では、動作２３１１は出力データ要素を生成し、一方、他の状況（例えば、比較演算）では、動作２３１１は出力データ要素を生成しない。幾つかの実施形態では、データパス８５２は、２つ以上の演算を同時に実行することができ、例えば、ＳＩＭＤ実行リソースを使用して２つ又は４つの乗累算演算を同時に実行することができる。
【０５６３】
別の例として、ＣＥ８００は、動作２３０４において読み出した宛先ＤＳＤ及び任意選択で動作２３０６において読み出したＸＤＳＤに基づいて、（次の）宛先データ要素をキュー／メモリに書き込む２３１２を実行する。幾つかの状況では、宛先ＤＳＤは、オペランドがメモリを宛先とすることを指定し（例えば、タイプ２１４９を介して）、Ｄ配列８４４は、（例えば、ベースアドレス２１４２、ＷＬＩ２１５２、及びストライド２１５３の１若しくはそれ以上に部分的に基づいて）宛先ＤＳＤによって指定されたアドレスにおいてＤストア８４８又はメモリ８５４にデータ要素を書き込む。
【０５６４】
様々な実施形態及び／又は使用状況では、動作２３１２（宛先データ要素をファブリックに書き込む）の部分は、図１４のウェーブレットとしてデータ要素をルータに提供１４０６に概念的に対応及び／又は概念的に関連する。幾つかの状況では、宛先ＤＳＤは、オペランドがファブリックに送信されることを指定し（例えば、タイプ２１２９を介して）、ＣＥ８００は、データ要素からウェーブレットを生成し（例えば、ファブリック出力データ構造記述子２１２０に部分的に基づいて）、オンランプ８６０を介して、ファブリックへのルータ６００（図６の）に送信する。幾つかの状況では、ＣＥは、宛先ＤＳＤのＳＷ２１２４に基づいて１つ、２つ、又は４つのデータ要素をウェーブレットとして送信する。
【０５６５】
幾つかの実施形態及び／又は使用状況では、ＣＥ８００が、ルータ６００で利用可能なリソースよりも多くのウェーブレットを送信しようとする（例えば、図６のデータキュー６５０内のリソースが不十分である）場合、又は代替的には、満杯のＦＩＦＯに書き込もうとする場合（例えば、図２１ＥによるＤＳＤにより実施されるように）、ＣＥ８００はストールする。幾つかの実施形態及び／又は使用状況（例えば、マイクロスレッド処理）では、ピッカー８３０は、より多くのリソースを待つ間、Ｑ８９７から異なるタスクを選択することができ、それにより、ＣＥ８００のストールを回避できるようにする。
【０５６６】
別の例として、ＣＥ８００は動作２３１３を実行する。幾つかの実施形態では、Ｄ配列８４４は、いくつのデータ要素が処理されたか（例えば、各データ要素でカウンタをインクリメントすることにより）を判断し、これをベクトルの長さ（例えば、長さ２１０１）と比較する。
【０５６７】
図２４は、データ構造記述子復号化フロー２４００としてデータ構造記述子を復号化する一実施形態の選択された細部を図示する。様々な実施形態及び／又は使用状況では、メモリデータ構造記述子フロー２４００は、ファブリック又はメモリベクトルを記述する、各ＤＳＲで実行される動作２３０４、２３０６、２３１０、及び２３１２（図２３の）の全て又は任意の部分の概念表現である。まとめると、図２３は、初期化されたＤＳＲにより指定される１若しくはそれ以上のオペランドを有する命令をフェッチし復号化すること、ＤＳＲを読み出して対応するＤＳＤを取得し復号化すること、ＤＳＤに従って（次の）発信元データ要素を読み出すこと、発信元データ要素に対して動作を実行すること、ＤＳＤに従って演算の出力データ要素を書き込むこと、及び完了まで、次の発信元データ要素を読み出すことに反復して戻ることを図示する。図２４は、ファブリックベクトル（ファブリックベクトル２４１０）及びメモリベクトル（メモリベクトル２４２０）について、ＤＳＲから得られたＤＳＤの復号化及び任意選択で１若しくはそれ以上のＸＤＳＲ及びストライドレジスタを読み出し、対応するＸＤＳＤ及びストライド値を取得し復号化して、命令（例えば、発信元０、発信元１、及び宛先の任意の１若しくはそれ以上）のメモリベクトルのデータ要素にアクセスするのに使用されるメモリ・アクセス・パターンを特定することに関する更なる詳細を図示する。概念的に、図２４に図示される動作は、図２３の動作２３０４を介して得られた各ＤＳＤで実行される。幾つかの実施形態では、メモリデータ構造記述子フロー２４００の動作はＣＥ（例えば、ＣＥ８００）によって実行される。
【０５６８】
ＤＳＤ（例えば、図２３の動作２３０４を介して得られる）の復号化は、例えば、図２１Ａ又は図２１Ｂにより、ＤＳＤがファブリックベクトルに対応するか否か（タイプ＝ファブリック？２４１１）をＣＥが判断することによって開始される（開始２４０１）。対応する場合、ＤＳＤによって記述されたオペランドのアクセスは、ＤＳＤを使用してファブリックベクトルとして進められ（ＤＳＤを介してアクセス２４１２）、例えば、オペランドが発信元である（図２１Ａ）場合、動作２３１０（図２３の）は、ＤＳＤに従ってファブリックから読み出し、オペランドが宛先である（図２１Ｂ）場合、動作２３１２（図２３の）はＤＳＤに従ってファブリックに書き込む。
【０５６９】
ＤＳＤがファブリックベクトルに対応しない場合、ＤＳＤはメモリベクトルに対応する。次に、ＣＥは、ＤＳＤが、例えば図２１Ｃによる１Ｄメモリベクトルに対応するか否かを判断する（タイプ＝ＸＤＳＲ？２４２１）。メモリベクトルに対応する場合、ＤＳＤにより記述されるオペランドのアクセスは、ＤＳＤを使用して１Ｄメモリベクトルとして進められる（ＤＳＤを介して１Ｄにアクセス２４２７）。例えば、オペランドが発信元である場合、動作２３１０は、ＤＳＤにより記述された１Ｄメモリベクトルに従ってメモリから発信元を読み出し、オペランドが宛先である場合、動作２３１２は、ＤＳＤにより記述された１Ｄメモリベクトルに従ってメモリに書き込む。図２３におけるデータ要素の反復（動作２３１０〜２３１３）は、ＤＳＤにより記述された１Ｄメモリベクトルに従ってオペランドメモリアドレスを進める。
【０５７０】
ＤＳＤが１Ｄメモリベクトルに対応しない場合、ＤＳＤは４Ｄメモリベクトル（例えば、図２１Ｄによる）又は循環バッファ（例えば、図２１Ｅによる）に対応する。ＣＥは、ＤＳＤ（ＤＳＤを介して指定されたＸＤＳＲを読み出す２４２２も、図２３の（任意選択）ＸＤＳＲを読み出す２３０６に概念的に対応する）によって指定されたＸＤＳＲを読み出し、ＸＤＳＤを取得する。ＸＤＳＲは、タイプ２１６９（図２１Ｄの）又はタイプ２１８９（図２１Ｅの）によって指定される。
【０５７１】
次に、ＣＥは、ＸＤＳＤが４Ｄメモリベクトル（例えば、図２２Ｂによる）を指定するか否かを判断する。４Ｄメモリベクトルを指定する場合、ＣＥは任意選択で、ＸＤＳＤにより任意選択で指定されるように、１若しくはそれ以上のストライドレジスタを読み出す（これもまた概念的に図２３の（任意選択）ＸＤＳＲを読み出す２３０６に対応する（任意選択）ストライドレジスタを読み出す２４２４）。ＤＳＤ、ＸＤＳＤ、及び任意の任意選択なストライド値（ストライドレジスタから得られる）により記述されたオペランドのアクセスは、ＤＳＤ、ＸＤＳＤ、及び任意選択のストライド値を使用して４Ｄメモリベクトルとして進められる（ＸＤＳＤを介して４Ｄにアクセス２４２８）。例えば、オペランドが発信元である場合、動作２３１０は４Ｄメモリベクトルに従ってメモリから発信元を読み出し、オペランドが宛先である場合、動作２３１２は４Ｄメモリベクトルに従ってメモリに書き込む。図２３におけるデータ要素の反復（動作２３１０〜２３１３）は、ＤＳＤにより記述された４Ｄメモリベクトルに従ってオペランドメモリアドレスを進める。
【０５７２】
ＸＤＳＤが４Ｄメモリベクトルに対応しない場合、ＸＤＳＤは循環バッファ（例えば、図２２Ａによる）に対応する。ＤＳＤ及びＸＤＳＤにより記述されるオペランドのアクセスは、ＤＳＤ及びＸＤＳＤを使用して循環バッファとして進められる（ＸＤＳＤを介して循環バッファにアクセス２４２９）。例えば、オペランドが発信元である場合、動作２３１０は循環バッファに従ってメモリから発信元を読み出し、オペランドが宛先である場合、動作２３１２は循環バッファに従ってメモリに書き込む。図２３におけるデータ要素の反復（動作２３１０〜２３１３）は、ＤＳＤにより記述された循環バッファに従ってオペランドメモリアドレスを進める。
【０５７３】
様々な実施形態では、Ｄ配列８４４は、動作２３０４（図２３の）において読み出したＤＳＤに基づいてタイプ＝ファブリック？２４１１及び／又はタイプ＝ＸＤＳＤ？２４２１を実行する。幾つかの実施形態では、ＤＳＤのタイプフィールド（例えば、図２１Ａのタイプ２１０９、図２１Ｂのタイプ２１２９、図２１Ｃのタイプ２１４９、図２１Ｄのタイプ２１６９、及び図２１Ｅのタイプ２１８９）は、データ構造が、ファブリックベクトルである（例えば、タイプ＝「０」）か、１Ｄベクトルであるか（例えば、タイプ＝「１」）か、ＸＤＳＤタイプである（例えば、タイプ＝「２〜７」）を判断する。様々な実施形態（例えば、タイプ＝「２〜７」）では、タイプフィールドの値は、ＤＳＲ８４６のどのＸＤＳＲを動作２４２２で読み出すかを指定する。幾つかの実施形態では、Ｄ配列８４４は動作２４２２を実行し、ＤＳＲ８４６からＸＤＳＤを受信する。幾つかの他の実施形態では、ＤＳＲ８４６は動作２４２１及び２４２２を実行し、ＤＳＤ及びＸＤＳＤをＤ配列８４４に送信する。
【０５７４】
別の例として、Ｄ配列８４４は、動作２４２２のＸＤＳＤに基づいてタイプ＝４Ｄベクトル？２４２３を実行する。幾つかの実施形態では、ＸＤＳＲから読み出されたＸＤＳＤのタイプフィールド（例えば、図２２Ａのタイプ２２１１又は図２２Ｂのタイプ２２４１）は、データ構造が４Ｄベクトルの１つである（例えば、ＸＤＳＤタイプ＝「０」）か、それとも循環バッファである（ＸＤＳＤタイプ＝「１」）か、を判断する。
【０５７５】
別の例として、Ｄ配列８４４は、例えば、本明細書の他の箇所に記載されるように、ＤＳＤのベースアドレス２１４２、ＷＬＩ２１５２、長さ２１４１、及びストライド２１５３を使用してＤＳＤ（例えば、動作２３０４の）に基づいてメモリアドレスを計算することにより、動作２４２７に従ってメモリアクセスを生成する。同様に、Ｄ配列８４４は、例えば、本明細書の他の箇所に記載されるように、ＤＳＤ及びＸＤＳＤのベースアドレス２１６２、長さ２１６１、ＷＬＩ２１７２、ストライド２２４５、ストライド選択１  ２２４４．１、及びＤＦ２２４３を使用してＤＳＤ（例えば、動作２４０４の）及び動作２４２２のＸＤＳＤに基づいてメモリアドレスを計算することにより、動作２４２８に従ってメモリアクセスを生成する。同様に、Ｄ配列８４４は、例えば、本明細書の他の箇所に記載されるように、ＤＳＤ及びＸＤＳＤのベースアドレス２１８２、長さ２１８１、ＷＬＩ２１９２、開始アドレス２２１２、及び終了アドレス２２１３を使用してＤＳＤ（例えば、動作２４０４の）及び動作２４２２のＸＤＳＤに基づいてメモリアドレスを計算することにより、動作２４２９に従ってメモリアクセスを生成する。
【０５７６】
幾つかの実施形態では、Ｄ配列８４４は、計算された各アドレスをＤストア８４８及びメモリ８５４の一方に送信する。計算されたアドレスの受信に応答して、Ｄストア及び／又はメモリは、計算されたアドレスにおける２バイトのデータにアクセスする。
【０５７７】
命令フォーマット
最初の数字が「８」の図２５Ａ〜図２５Ｃの説明での各要素識別子は、図８の要素を指し、簡潔にするために、その他の点では図８の要素であるものとして特に識別されない。
【０５７８】
図２５Ａは、複数オペランド命令２５１０として複数オペランド命令の一実施形態の選択された細部を図示する。複数オペランド命令２５１０は、２／３発信元１宛先オペランド命令（例えば、ＦＭＡＣＨ等の乗加算）、２発信元０宛先オペランド命令（例えば、ＬＴ１６等の比較）、及び１発信元１宛先オペランド命令（例えば、ＭＯＶ１６等の移動命令）の１つである。
【０５７９】
複数オペランド命令２５１０は様々なフィールドを有する：命令タイプ２５１１、演算コード２５１２、オペランド０符号化２５１３、オペランド１符号化２５１４、及び終了２５１５。オペランド０符号化２５１３は、オペランド０タイプ２５１３．１及びオペランド０  ２５１３．２を有する。オペランド１符号化２５１４は、オペランド１タイプ２５１４．１及びオペランド１  ２５１４．２を有する。幾つかの実施形態では、複数オペランド命令２５１０は２０ビットを有する。
【０５８０】
幾つかの実施形態では、命令タイプ２５１１の値は、以下の表に従って異なるタイプの命令（２／３発信元１宛先命令タイプ及び１発信元１宛先命令タイプ）を区別する。様々な実施形態では、演算コード２５１２の値は特定の演算（例えば、乗算、加算、又は減算）を指定する。演算コード２５１２の長さは、以下の表に記載されるように、異なる命令タイプで変わる。
【０５８１】
【表２】
0006832050.tif 000003
【０５８２】
幾つかの実施形態では、オペランド０符号化２５１３は、以下の表に従って発信元及び／又は宛先オペランドを記述する。幾つかの実施形態では、オペランド１符号化２７１４は発信元オペランドを記述する。
【０５８３】
【表３】
0006832050.tif 000004
【０５８４】
幾つかの実施形態では、オペランド０  ２５１３．２及びオペランド１  ２５１４．２はそれぞれ４ビットフィールドを有する。幾つかの実施形態では、オペランド０タイプ２５１３．１及びオペランド１タイプ２５１４．１はそれぞれ２ビットフィールドを有し、オペランド０  ２５１３．２及びオペランド１  ２５１４．２をいかに解釈するかをそれぞれ決定する。２／３発信元オペランド１宛先オペランド命令の場合、オペランド０タイプ２５１３．１は以下の表に従って解釈される。
【０５８５】
【表４】
0006832050.tif 000005
【０５８６】
例えば、オペランド０タイプ２５１３．１の値が「１」であり、オペランド０  ２５１３．２の値が「４」である場合、オペランド０符号化２５１３は、発信元０オペランドがＳ０ＤＳＲ［４］により記述されるベクトルであり宛先オペランドがＤＤＳＲ［４］により記述されたベクトルであることを指定する。
【０５８７】
２発信元オペランド０宛先オペランド命令の場合、オペランド０タイプ２５１３．１は以下の表に従って解釈される。
【０５８８】
【表５】
0006832050.tif 000006
【０５８９】
例えば、オペランド０タイプ２５１３．１の値が「０」であり、オペランド０  ２５１３．２の値が「４」である場合、オペランド０符号化２５１３は、発信元０オペランドがＳ０ＤＳＲ［４］により記述されるベクトルであることを指定する。
【０５９０】
１発信元オペランド１宛先オペランド命令の場合、オペランド０タイプ２５１３．１は以下の表に従って解釈される。
【０５９１】
【表６】
0006832050.tif 000007
【０５９２】
例えば、オペランド０タイプ２５１３．１の値が「０」であり、オペランド０  ２５１３．２の値が「４」である場合、オペランド０符号化２５１３は、宛先オペランドがＤＤＳＲ［４］により記述されるベクトルであることを指定する。
【０５９３】
複数オペランド命令２５１０の場合、オペランド１タイプ２５１４．１は以下の表に従って解釈される。
【０５９４】
【表７】
0006832050.tif 000008
【０５９５】
例えば、オペランド０タイプ２５１３．１の値が「０」であり、オペランド０  ２５１３．２の値が「４」である場合、オペランド０符号化２５１３は、宛先オペランドがＤＤＳＲ［４］により記述されるベクトルであることを指定する。
【０５９６】
様々な実施形態では、即値である発信元１オペランドは、幾つかの所定の値（例えば、０、１、及び１）及びＬＦＳＲにより生成される疑似乱数の１つを指定する。例えば、オペランド１タイプ２５１４．１の値が「３」であり、オペランド１  ２５１４．２の値が「８」である場合、オペランド１符号化２５１４は、ＬＦＳＲにより生成されるＰＲＮＧを指定する。
【０５９７】
幾つかの実施形態では、終了２５１５は、命令がタスクにおける最後の命令であることを指定する１ビットフィールドを有する。命令が実行を終えると、タスクは終了し、新しいタスクを選択し実行することができる（例えば、終了８１２及びピッカー８３０を介して）。
【０５９８】
図２５Ｂは、１発信元０宛先命令２５２０として、１発信元０宛先オペランド命令の一実施形態の選択された細部を図示する。１発信元０宛先命令２５２０は、命令タイプ２５２１、演算コード２５２２、オペランド１符号化２５２３、即値ハイ２５２４、及び終了２５２５を有する。オペランド１符号化２５２３は、発信元オペランドを記述し、オペランド１タイプ２５２３．１及びオペランド１  ２５２３．２を有する。幾つかの実施形態では、１発信元０宛先命令２５２０は２０ビットを有する。
【０５９９】
幾つかの実施形態では、命令タイプ２５２１は、命令が１発信元０宛先オペランド命令であることを指定する４ビット「１１１１」を有し、演算コード２５２２は、特定の演算（例えば、ブロック、ブロック解除、アクティベーション、アクティブＰＲＮＧを設定、データフィルタ、条件付き分岐、及びジャンプ）を指定する４ビットフィールドを有する。
【０６００】
幾つかの実施形態では、即値ハイ２５２４は４ビットフィールドを有する。幾つかの状況では、オペランド１  ２５２３．２と連結された即値ハイ２５２４は、８ビット即値を形成する。
【０６０１】
幾つかの実施形態では、オペランド１タイプ２５２３．１は、オペランド１  ２５２３．２がいかに解釈されるかを指定する２ビットフィールドを有する。オペランド１タイプ２５２３．１が「０」である場合、オペランド１符号化２５２３はベクトル（例えば、Ｑ８９７からのデータ要素のファブリックベクトル又はメモリ８５４及びＤストア８５４の一方におけるデータ要素のメモリベクトル）を指定し、オペランド１  ２５２３．２の値は、ＤＳＲ８４６の１２個のＳ１ＤＳＲのいずれがベクトルを記述するかを指定する。オペランド１タイプ２５２３．１が「１」である場合、オペランド１符号化２５２３は、メモリ（例えば、メモリ８５４及びＤストア８４８の一方）内の、オペランド１  ２５２３．２との即値ハイ２５２４の連結により形成される８ビットアドレスにおける値を記述する。オペランド１タイプ２５２３．１が「２」である場合、オペランド１符号化２５２３は、オペランド１  ２５２３．２の値により識別されるレジスタ（例えば、ＲＦ８４２の１つ）内の値を記述する。オペランド１タイプ２５２３．１が「３」である場合、オペランド１符号化２５２３は即値を記述する。演算コード２５２２が、１６ビット整数オペランドに対して演算する演算（例えば、ブロック、ブロック解除、又はアクティベーション）を指定する場合、即値は８ビットを有し、即値ハイ２５２４及びオペランド１  ２５２３．２の連結である。
【０６０２】
幾つかの実施形態では、終了２５２５は、命令がタスクにおける最後の命令であることを指定する１ビットフィールドを有する。命令が実行を終えると、タスクは終了し、新しいタスクを選択し実行することができる（例えば、終了８１２及びピッカー８３０を介して。１発信元０宛先命令２５２０が条件付き分岐である場合、タスクは、条件付き分岐がとられない場合のみ、終了する。
【０６０３】
図２５Ｃは、即値命令２５３０として、即値命令の一実施形態の選択された細部を図示する。即値命令２５３０は、命令タイプ２５３１、演算コード２５３２、オペランド０  ２５３３．２、及び即値２５３４を有する。幾つかの実施形態では、即値ロー２５３４．１は９ビットフィールを有し、即値ハイ２５３４．２は１ビットフィールドを有する。即値ロー２５３４．１及び即値ハイ２５３４．２の連結は集合的に、即値２５３４と呼ばれる（即値２５３４と図示される）。幾つかの実施形態では、即値命令２５２０は２０ビットを有する。
【０６０４】
幾つかの実施形態では、命令タイプ２５３１は、命令が即値命令であることを指定する１ビットフィールド「０」を有し、演算コード２５３２は、特定の演算（例えば、発信元０ＤＳＲロード、発信元１ＤＳＲロード、宛先ＤＳＲロード、発信元０ＤＳＲ記憶、発信元１ＤＳＲ記憶、及び宛先ＤＳＲ記憶）を指定する５ビットフィールドを有する。幾つかの状況では、即値命令２５３０（例えば、ＤＳＲロード命令及びＸＤＳＲロード命令）の実行は、メモリ８５４及びＤストア８４８の１つからデータをＤＳＲ８４６のＤＳＲにロードする。他の状況では、即値命令２５３０（例えば、ＤＳＲ記憶命令及びＸＤＳＲ記憶命令）の実行は、ＤＳＲ８４６のＤＳＲからのデータをメモリ８５４及びＤストア８４８の一方に記憶する。
【０６０５】
幾つかの実施形態では、オペランド０  ２５３３．２は４ビットフィールドを有し、演算コード２５３２は、オペランド０  ２５３３．２がいかに解釈されるかを決定する。幾つかの状況（例えば、オペランド０  ２５３３．２が、ジャンプ演算等のレジスタオペランドを有さない演算を指定する場合）では、即値ロー２５３４．１、オペランド０  ２５３３．２、及び即値ハイ２５３４．２は連結されて、１４ビット即値を形成する。幾つかの他の状況では、即値２５３４は符号拡張されて、１６ビット即値を形成する。さらに他の状況では、即値２５３４は符号拡張されて、１５ビットアドレスを形成する。さらに他の状況では、即値２５３４は１ビット左にシフトし、符号拡張されて、１５ビットアドレス（例えば、３２ビットデータの）を形成する。
【０６０６】
ディープ・ラーニング・アクセラレータ使用例
様々な実施形態及び／又は使用状況では、本明細書の他の箇所に記載されるように、ＰＥのファブリック（例えば、ウェーハスケール集積を介して実施され、例えば、図４に図示されるような）等のディープ・ラーニング・アクセラレータは、ニューラルネットワークのトレーニング及び／又はトレーニングされたニューラルネットワークに関して推論を実行するのに使用可能である。トレーニングは、幾つかの状況では、トレーニング刺激に応答してニューラルネットワークの重みを決定することを含む。確率勾配降下（Ｓｔｏｃｈａｓｔｉｃ  Ｇｒａｄｉｅｎｔ  Ｄｅｓｃｅｎｔ：ＳＧＤ）、ミニバッチ勾配降下（Ｍｉｎｉ−Ｂａｔｃｈ  Ｇｒａｄｉｅｎｔ  Ｄｅｓｃｅｎｔ：ＭＢＧＤ）、連続伝搬勾配降下（Ｃｏｎｔｉｎｕｏｕｓ  Ｐｒｏｐａｇａｔｉｏｎ  Ｇｒａｄｉｅｎｔ  Ｄｅｓｃｅｎｔ：ＣＰＧＤ）、及びリバース・チェック・ポイント（Ｒｅｖｅｒｓｅ  ＣｈｅｃｋＰｏｉｎｔ：ＲＣＰ）等の様々な技法がトレーニングに使用可能である。以下、ＣＰＧＤを他の技法と対比し、次に、ＳＧＤ、ＭＢＧＤ、ＣＰＧＤ、及びＲＣＰのそれぞれについてより詳細に説明する。
【０６０７】
従来のディープ・ニューラル・ネットワーク・トレーニング手法（例えば、ＳＧＤ及びＭＢＧＤ）は、いわゆる固定デルタ（ａｎｃｈｏｒｅｄ−ｄｅｌｔａ）学習を使用していた。すなわち、デルタ導出重み更新は、トレーニングセット分岐又はミニバッチの全てのアクティベーションの処理が完了するまで、「固定」又は一定に保持された。幾つかの状況では、固定デルタ学習の層シーケンシャル性により、高レイテンシ・シーケンシャル・パラメータ更新（例えば、重み更新を含む）に繋がり、これにより収束が遅くなる。幾つかの状況では、固定デルタ学習は、限られた層並列性を有し、したがって、同時性が限られる。
【０６０８】
逆に、幾つかの状況では、ディープ・ニューラル・ネットワーク・トレーニングへの連続伝搬（別名即時デルタ（ｉｍｍｅｄｉａｔｅ−ｄｅｌｔａ））学習ルールの使用は、本明細書において教示されるように、層並列性を可能にすることにより、より高速の収束を提供し、パラメータ更新のレイテンシを低減し、同時性を増大させる。即時ネットワークパラメータから計算されるデルタは、現在パラメータ傾きに対応する更新情報を使用する。連続伝搬は、各層が明示的な同期なしで他の層と同時に学習できるようにすることにより層並列性を可能にする。その結果、ネットワークの深度に沿った並列性により、より多くの計算リソースをトレーニングに適用できるようになる。連続伝搬で利用可能な並列性は、幾つかの使用状況では、ＭＢＧＤ技法と比較して最高で１０倍のウォールクロック時間改善を実現する。連続伝搬手法はまた、アクティベーションの複数のベクトルのモデルパラメータ値を記憶する追加のメモリの使用を回避できるようにもする。
【０６０９】
幾つかの実施形態及び／又は使用状況では、ニューラルネットワークは、ＳＧＤを実行する刺激の連続伝搬を使用してトレーニングされる。ＣＰＧＤを介したトレーニングの幾つかの実施形態では、ＲＣＰは、選択されたアクティベーションを再計算することにより、メモリに保持されるアクティベーションの数を低減（ひいてはメモリフットプリントを低減）できるようにする。幾つかの状況では、アクティベーションの再計算はまた、重みのトレーニング推定精度も改善する。ＲＣＰなしのトレーニングでは、１若しくはそれ以上の順方向パス中、ニューロンのあらゆる層がアクティベーションを受信し、順方向パスに関連付けられた１若しくはそれ以上の逆方向パス（例えば、順方向パスに関連付けられた１若しくはそれ以上のデルタパス、チェインパス、及び重み更新パス）中に実行される計算に再使用するために、アクティベーションを保存する。幾つかの状況（例えば、比較的深いニューラルネットワーク）では、アクティベーションの保存から関連付けられた逆方向パスまでの時間は比較的長く、全てのアクティベーションの保存は、全て未満のアクティベーションの保存よりも比較的多くのメモリを使用する。
【０６１０】
例えば、ニューロンの層の幾つか（例えば、あらゆる偶数層）のみが、各アクティベーションを保存し、他の層は各アクティベーションを破棄する（例えば、あらゆる奇数層）。アクティベーションが保存された層（例えば、あらゆる偶数層）は、最新の重みを使用してアクティベーションを再計算し、アクティベーションを破棄した層（例えば、あらゆる奇数層）に再計算されたアクティベーションを送信する。幾つかの状況では、再計算されたアクティベーションは破棄されたアクティベーションと異なり、その理由は、最新の重みが、順方向パス中に利用可能であった重みと異なる（例えば、順方向パスと関連付けられた逆方向パスとの間で、１若しくはそれ以上の重み更新が行われた）ためである。様々な実施形態では、アクティベーションを保存する層及びアクティベーションを破棄する層の数及びタイプは、メモリの使用低減と計算の増大との所望のバランスに向けて最適化されるように選択される。一例として、３つ置きの層がアクティベーションを保存し、他の全ての層はアクティベーションを破棄する。別の例として、畳み込み層が、アクティベーションを保存するように選択され、他の層はアクティベーションを破棄するように選択される。
【０６１１】
様々な実施形態及び／又は使用状況では、ＳＧＤ、ＭＢＧＤ、及びＣＰＧＤの任意の１若しくはそれ以上は、ＲＣＰあり又はなしで、処理要素のファブリック（例えば、図４に図示されるような）、１若しくはそれ以上のＧＰＵ、１若しくはそれ以上のＣＰＵ、１若しくはそれ以上のＤＳＰ、１若しくはそれ以上のＦＰＧＡ、及び１若しくはそれ以上のＡＳＩＣの１若しくはそれ以上を介して実施される。
【０６１２】
例えば、逆方向伝搬ありのＳＧＤは、ニューラルネットワークのトレーニングに使用可能である（本明細書の他の箇所に記載されるように）。しかしながら、勾配降下を介した学習は、各重み更新が、ニューラルネットワーク全体を通した完全な順方向パスの完了後に行われる勾配測定からの情報を使用するため、本質的にシーケンシャルである。さらに、重み更新は、ニューラルネットワーク全体を通した対応する逆方向パス（順方向パス後の順方向パスに対応する）中に行われ、したがって、最後の重み更新は、対応する逆方向パス全体の完了後に行われる。
【０６１３】
ＭＢＧＤでは、ミニバッチにわたる勾配平均化によりＳＧＤよりも高い並列性が可能であり、幾つかのアクティベーション（アクティベーションの「ミニバッチ」）を並列処理する。しかしながら、シーケンシャル更新の速度は、ＳＧＤと比較して変わらず、重み更新は、ＳＧＤと同様に、ニューラルネットワーク全体を通した全ての対応する逆方向パスの完了後に完了する。より多くのアクティベーションを並列処理することによりミニバッチサイズが増大するにつれて、勾配ノイズは低減する。勾配ノイズが低減するポイントを超えると、幾つかの状況では、一般化が不良になる。
【０６１４】
ＣＰＧＤでは、アクティベーションが層全体を通してストリームで伝搬する間、ニューラルネットワークの全ての層で重みを並列処理し更新することができる。したがって、ＣＰＧＤは、幾つかの実施形態及び／又は使用状況では、ＳＧＤ及びＭＢＧＤのシーケンシャル処理制限を克服する。
【０６１５】
ＲＣＰでは、ＲＣＰを用いない場合には記憶されるアクティベーションを（再）計算することを介してメモリの使用を低減することができ、ＳＧＤ、ＭＢＧＤ、及びＣＰＧＤと組み合わせて使用可能である。
【０６１６】
パイプライン流れ図は、様々なＳＧＤ技法、ＭＢＧＤ技法、ＣＰＧＤ技法、及びＲＣＰありのＣＰＧＤ技法の比較及び対比に使用可能である。パイプライン流れ図を用いて、トレーニング技法における情報フロー及び同時性が見られる。図２６Ａ〜図２６Ｄは、左から右へのニューラルネットワークの層のパイプラインフローの実施形態を図示し、例えば、アクティベーションは左から入り、層計算の順方向パス伝搬は右に流れる。勾配計算は最も右側の層で実行され、右から左への重み更新を含む層計算の逆方向パス伝搬が開始される。
【０６１７】
図２６Ａは、ＳＧＤのパイプラインフローの一実施形態を図示する。ニューラルネットワークの層の重み更新は、ニューラルネットワークの全ての層を通した対応する完全な順方向パス及び対応する完全な逆方向パスの完了後に完了する。次の順方向パスは、直前の順方向パスに対応する重み更新の完了後でのみ、開始される。図示のように、第１の順方向パス２６１１は実行される（図中、左から右に図示される最初の層から最後の層に）。次に、第１の逆方向パス２６２１が実行される（図中、右から左に図示される最後の層から最初の層に）。第１の逆方向パス２６２１中、重みは最後の層から最初の層に更新される。最後の重み更新（最初の層の）は、第１の逆方向パス２６２１が完了するときに完了する。次に、第２の順方向パス２６１２が実行され（第１の逆方向パス２６２１中に更新された重みを使用して）、その後、第２の逆方向パス２６２２が続き、第２の逆方向パス２６２２中、重み更新が実行される。
【０６１８】
図２６Ｂは、ＭＢＧＤのパイプラインフローの一実施形態を図示する。複数のアクティベーションは同一の重みを用いて処理される。調整された平穏時（ｑｕｉｅｔ  ｔｉｍｅ）を使用して、重み更新を同期する。幾つかの実施形態及び／又は使用状況では、ＭＢＧＤ処理は、ミニバッチサイズ（Ｎ）２６３１、オーバーヘッド２６３２、及び更新間隔（Ｕ）２６３３を特徴とする。
【０６１９】
勾配推定の計算に、ネットワークを通した完全な順方向パス及び完全な逆方向パスを使用し、したがって、順次依存性を生み出す勾配降下技法（例えば、ＳＧＤ及びＭＢＧＤ）と異なり、ＣＰＧＤは異なる構造を使用して、順次依存性を、持続した勾配生成を有する連続モデルで置換する。幾つかの実施形態及び／又は使用状況では、ＣＰＧＤでは、明示的な同期なしでニューラルネットワークの各層を他の層と同時にトレーニング（例えば、「学習」）できるようにすることにより層並列性が可能である。したがって、ニューラルネットワークの深度に沿った並列性により、より多くの計算リソースをトレーニングに適用することができる。様々な実施形態及び／又は使用状況では、ＣＰＧＤは、他の技法と比較して、同等の精度及びトレーニングの画期的な出来事として表される収束率の改善を提供する。
【０６２０】
図２６Ｃは、ＣＰＧＤのパイプラインフローの一実施形態を図示する。ＣＰＧＤ処理は、モデルを流動的に維持する。隠れ表現及びデルタは、あらゆる時間ステップであらゆる層に入り、あらゆる時間ステップで重みが更新される。ＣＰＧＤ処理は同期調整演算である。幾つかの実施形態及び／又は使用状況では、ＣＰＧＤ処理は、それぞれ幾つかの順方向パスの１つ及び幾つかの対応する逆方向パスの１つを表す順方向パス２６５１及び対応する逆方向パス２６６１を特徴とする。動作において、複数の順方向パスの各順方向パスは互いと並列して動作し、複数の逆方向パスの各逆方向パスは互いと並列して動作し、複数の順方向パス及び複数の逆方向パスは、互いと並列して動作する。重み更新（逆方向パス中に行われる）は、重み更新が利用可能になるとすぐに、順方向パス及び逆方向パスによって使用される。
【０６２１】
特定の例として、順方向パス２６６５が開始され、後に順方向パス２６６６が開始される。順方向パス２６６５の少なくとも一部は、順方向パス２６６６の少なくとも一部と並列動作する。順方向パス２６６５の対応する逆方向パスの少なくとも一部は、順方向パス２６６６の少なくとも一部と並列動作する。さらに、対応する逆方向パスは、例としての重み更新使用２６６７により示されるように、順方向パス２６６６により使用される少なくとも幾つかの重み更新を含む。
【０６２２】
図２６Ｄは、ＲＣＰありのＣＰＧＤのパイプラインフローの一実施形態を図示する。ＲＣＰありのＣＰＧＤは、選択されたアクティベーションの保存を省き、その代わり、選択されたアクティベーションを再計算する。幾つかの実施形態及び／又は使用状況では、再計算は、更新された重みを用いて実行される。したがって、リバース・チェック・ポイントにより、メモリの低減が可能であり（時間の進行に伴う保存された隠れ表現にわたる垂直線で覆われたエリアの低減として図示される）、計算された隠れ表現と対応するデルタとの時間不一致が低減する。
【０６２３】
特定の例として、ＲＣＰありのＣＰＧＤ処理は、順方向パス２６７１及び対応する逆方向パス２６８１を特徴とする。第１のアクティベーションは、順方向パス中に計算され、アクティベーション記憶２６８５に図示されるように、対応する逆方向パスで使用するために層に記憶される。アクティベーション記憶２６８５は、順方向パス及び逆方向パスの部分中に行われ、他の用途では利用不可能である。メモリ低減の特定の例は、再計算されたアクティベーションの記憶２６８６で図示される。第２のアクティベーションは、順方向パス中に計算されるが、破棄され、いかなる記憶も必要としない。逆方向パス中、第２のアクティベーションは再計算され、再計算されたアクティベーションの記憶２６８６で図示されるように、逆方向パスでの使用のために層に記憶される。再計算されたアクティベーションの記憶２６８６は、順方向パス全体を通して占有されず、他の使用（例えば、他の順方向パス、他の逆方向パス）に利用可能であり、それにより、必要とされるメモリを低減する。
【０６２４】
並列化をより一般に考えると、幾つかの実施形態及び／又は使用状況では、計算（例えば、ニューラル・ネットワーク・トレーニング）の並列化は、同時に動作する複数の別個の計算ユニットに計算を拡散させる。モデル並列状態では、別個のユニットが、別個のモデルパラメータを使用して同じニューラルネットワークを同時に評価する。データ並列状態では、別個の作業者が、同じ正式モデルパラメータを使用して別個のネットワークの入力を同時に評価する。幾つかのスケーリング技法は、層にわたり及びクラスタ内のユニットの中で微細粒度データ並列化を使用する。
【０６２５】
ＭＢＧＤは、幾つかの実施形態及び／又は使用状況では、ミニバッチサイズｎの関数として勾配推定精度を改善する。しかしながら、ミニバッチサイズｎでのＭＢＧＤを実行する計算は、ｎステップのＳＧＤを実行する計算に概ね等しい。幾つかの状況では、ｎステップのＳＧＤはミニバッチサイズｎのＭＢＧＤよりも概ねｎの平方根だけ効率的である。したがって、より高い並列性（例えば、ＭＢＧＤのように）及びより高い効率（例えば、ＳＧＤのように）は相互に排他的であることがある。
【０６２６】
幾つかの実施形態及び／又は使用状況では、ディープ・ニューラル・ネットワークは、有向非循環グラフとして表されることもある、高次元パラメータ化関数である。逆伝搬技法は循環グラフで表されることもある。グラフ内の循環はフィードバック反復である。反復は連続微分系の離散近似であるため、最初の完全ネットワーク評価によって生成された勾配は、次の反復で使用される重みを変える。離散近似は、時変統計を有する不偏連続ノイズプロセスを含む。ノイズプロセスは正規化を提供して、連続系が、離散時間学習系で観測された現象をモデリングできるようにする。離散事例では、正規化は、サンプリング手順（例えば、ＳＧＤ）により、学習率により、及び／又は他の明示的なメカニズムにより提供される。時間依存ノイズプロセスは、パラメータ空間における局所高周波数輪郭をなくす学習率スケジュールを使用できるようにする。正確な領域に近づくにつれて、正規化は低減し、幾つかの状況では、よりよい最終解をもたらす。
【０６２７】
ＣＰＧＤは、任意フィードフォワード（ａｒｂｉｔｒａｒｙ  ｆｅｅｄ−ｆｏｒｗａｒｄ）ニューラルネットワークの概念上の枠組みでは、全てのノードを時間の関数として表現し、機能構成を適用して、内部状態及び内部状態が受ける刺激に関して表現を公式化する。因数分解により、独立した局所力学を有する系としての個々の層が生成される。２つの次元はネットワークの深度及びパラメータの時間進化である。空間において分離された計算ユニットにネットワーク層をマッピングすることにより加速化を実施する幾つかの実施形態及び／又は使用状況では、ネットワーク層間での通信にレイテンシがある。したがって、層間の通信に時間遅延がある。ＣＰＧＤの幾つかの実施は、時間遅延を説明する同期実施である。
【０６２８】
ＣＰＧＤ処理中、アクティベーションベクトル及び関連付けられた隠れ表現は、アクティベーションベクトルの順方向パス中、異なる時間ステップでモデルパラメータと結合される。異なる時間ステップでのモデルパラメータと同じ時間ステップでのモデルパラメータとの違いは、順方向に進むアクティベーションベクトルによって検出可能ではない。概念的に、まるで連続時間ステップからの固定パラメータセットが、次に学習に使用される集計パラメータ状態の形成に使用されるかのようである。
【０６２９】
逆方向パス（例えば、デルタ伝搬）中、更新後、即値パラメータ（例えば、重み）を使用するか、又は対応する順方向パスが実行されたときに固定された過去のパラメータを検索するか選択される。即値パラメータから計算されたデルタは、現在のパラメータの傾きに対応する更新された情報を使用する。幾つかの実施形態及び／又は使用状況は即値パラメータを使用する。幾つかの実施形態及び／又は使用状況は、過去のパラメータを使用する。
【０６３０】
ＣＰＧＤの幾つかの実施は、ＳＧＤと同様の順序でメモリを使用する。リバース・チェック・ポイント（本明細書の他の箇所に記載される）は、メモリ使用を低減する等のために、ＣＰＧＤと併用可能である。リバース・チェック・ポイントの幾つかの実施形態及び／又は使用状況は、即値パラメータ（例えば、重み）を使用して、アクティベーションを再計算する。リバース・チェック・ポイントの幾つかの実施形態及び／又は使用状況は、過去のパラメータを使用して、アクティベーションを再計算する。即値パラメータを使用して、アクティベーションを再計算する幾つかの実施形態及び／又は使用状況では、順方向伝搬アクティベーションの計算に使用されるパラメータと逆方向伝搬デルタとの時間不一致は、波面の位置合わせにおいて低減される。
【０６３１】
連続伝搬技法は、ミニバッチ様式処理（例えば、ＭＢＧＤ）と併せて使用可能である。幾つかの実施形態及び／又は使用状況では、概念的に非同期ＳＧＤと同様に、続くバッチは、直前のバッチが完了する前に開始される。パイプライン内のパラメータ不一致は、１つ以下の分岐境界に制限される。
【０６３２】
幾つかの実施形態及び／又は使用状況では、データがニューラルネットワークを通してストリーミングし、グローバル同期境界なしで計算を実行できるようにすることにより、本発明を用いない場合には抽出されない学習情報を抽出することができる。幾つかの実施形態及び／又は使用状況では、学習率の低さのほうが、大きなバッチサイズよりも重要である。幾つかの実施形態及び／又は使用状況では、隠れた活動及び／又はデルタ弧は概念的に、個々のベクトル又は代替的にバッチ行列として解釈される。バッチ行列解釈により、ＧＰＵ、ＣＰＵ、ＤＳＰ、ＦＰＧＡ、及び／又はＡＳＩＣで直接、本明細書に記載される技法を実施することが可能になる。
【０６３３】
図２７Ａ〜図２７Ｅは、ＳＧＤ、ＭＢＧＤ、ＣＰＧＤ、及びＲＣＰ処理による順方向パス及び逆方向パス実施形態の様々な態様を図示する。図中、ニューロンの２つの層が図示され、例えば、ディープ・ニューラル・ネットワークの一部の各層を表す。様々な実施形態及び／又は使用状況では、ディープ・ニューラル・ネットワークは数千以上の層及び層ごとに数千以上のニューロンを有する。様々な実施形態及び／又は使用状況では、第１の層は、ディープ・ニューラル・ネットワーク外部のエージェントからトレーニングのためのアクティベーションを受信する入力層である。様々な実施形態及び／又は使用状況では、第２の層は、順方向パスが完了し、逆方向パスが開始される出力層である。様々な実施形態及び／又は使用状況では、第１の層及び第２の層は内部層である。
【０６３４】
図２７Ａ及び図２７Ｂはそれぞれ、ＲＣＰなしのＳＧＤ、ＭＢＧＤ、及びＣＰＧＤによる順方向パス及び逆方向パス実施形態を図示する。２つの層は、前の層２７０１及び後続層２７０２として図示される。前の層２７０１は計算２７１０及び記憶２７１５を有する。後続層２７０２は計算２７２０及び記憶２７２５を有する。計算２７１０及び計算２７２０は計算リソースの例であり、記憶２７１５及び記憶２７２５は記憶リソースの例である。
【０６３５】
図２７Ｃ〜図２７Ｅは、ＲＣＰありのＳＧＤ、ＭＢＧＤ，及びＣＰＧＤによる順方向パス及び逆方向パス実施形態を図示する。２つの層は、前の層２７０３及び後続層２７０４として図示される。前の層２７０３は計算２７３０及び記憶２７３５を有する。後続層２７０４は計算２７４０及び記憶２７４５を有する。計算２７３０及び計算２７４０は計算リソースの例であり、記憶２７３５及び記憶２７４５は記憶リソースの例である。
【０６３６】
図２７Ａ〜図２７Ｅにおける同様に付番された要素は、同一の構造及び動作を有するが、計算リソースは、異なる入力に応じて異なる結果を生成し、記憶リソースは、記憶される異なる値に応じて異なる値を提供する。順方向パス及び逆方向パスの計算及び記憶に使用可能な異なる計算リソース及び／又は異なる記憶リソースを有する他の実施形態も考えられる。例えば、逆方向パスは、順方向パスにより使用されない転置重み記憶を使用する。異なる順方向パス及び逆方向パス実施に使用可能な異なる計算リソース及び／又は記憶リソースを有する他の実施形態も考えられる。例えば、ＲＣＰベースの実施形態は、ＲＣＰなしの順方向パス又は逆方向パス処理に使用される計算リソースより他の、追加の計算リソース（図示せず）を使用する。
【０６３７】
図２７Ａに関して、計算２７１０は、順方向パス計算Ｆ  ２７１１等の計算を実行することができる。記憶２７１５は、Ａ  ２７１６等にアクティベーションを記憶することができる。記憶２７１５は、Ｗ  ２７１７等にさらに重みを記憶することができる。計算２７２０、Ｆ  ２７２１、記憶２７２５、Ａ２７２６、及びＷ  ２７２７はそれぞれ、様々な実施形態及び／又は使用状況では、構造及び／又は演算において、計算２７１０、Ｆ  ２７１１、記憶２７１５、Ａ  ２７１６、及びＷ  ２７１７と略同様又は同一である。
【０６３８】
ＳＧＤ又はＭＢＧＤでの順方向パス演算では、アクティベーションＡ１，ｔ２７８１は、前の層２７０１により受信され、Ａ  ２７１６に記憶される（逆方向パス中、後に使用するため）。次に、Ａ１，ｔ２７８１及び前にＷ  ２７１７に記憶された重みＷ１，ｔは、Ｆ  ２７１１に従って処理されて、アクティベーションＡ２，ｔ２７８２を生成する。Ａ２，ｔ２７８２は次に、後続層２７０２に渡される。前の層と同様に、Ａ２，ｔ２７８２は後続層２７０２により受信され、Ａ  ２７２６に記憶される（逆方向パス中、後に使用するため）。次に、Ａ２，ｔ２７８２及び前にＷ  ２７２７に記憶された重みＷ２，ｔは、Ｆ  ２７２１に従って処理されて、アクティベーションＡ３，ｔ２７８３を生成する。次に、Ａ３，ｔ２７８３は、処理のために次の後続層（存在する場合）に提供され、順方向パスが完了し、逆方向パスが開始するまで以下同様である。後続層２７０２が出力層である場合、順方向パスは完了し、順方向パスに対応する逆方向パスが開始される。
【０６３９】
図２７Ｂに関して、明確にするために、順方向パス処理専用の計算２７１０及び計算２７２０の要素（Ｆ  ２７１１及びＦ２７２１）は省かれている。図２７Ａに関して図示され説明された構造及び演算に関して、図２７Ｂは、計算２７１０がさらに、逆方向パス計算Ｂ  ２７１２等の追加の計算を実行することができ、計算２７２０がさらに、逆方向パス計算Ｂ  ２７２２等の追加の計算を実行することができることを示す。記憶２７１５はさらに、計算された重みをＷ  ２７１８等に記憶することができ、記憶２７２５はさらに、計算された重みをＷ  ２７２８等に記憶することができる。Ｂ  ２７２２及びＷ  ２７２８は、様々な実施形態及び／又は使用状況では、構造及び／又は演算において、Ｂ２７１２及びＷ  ２７１８と略同様又は同一である。
【０６４０】
ＳＧＤ又はＭＢＧＤでの逆方向パス演算では、デルタΔ３，ｔ２７９３は、逆方向パス処理中、次の後続層（存在する場合）から受信される。後続層２７０２が出力層である場合、後続層２７０２は、例えば、後続層の出力（例えば、推定出力）とトレーニング出力（例えば、所望の出力）との差の関数としてデルタルールに従ってデルタΔ３，ｔを計算する。次に、Δ３，ｔ２７９３、前にＷ  ２７２７に記憶された重みＷ２，ｔ、及び前にＡ  ２７２６に記憶されたアクティベーションＡ２，ｔは、Ｂ  ２７２２に従って（例えば、デルタルールに従って）処理されて、デルタΔ２，ｔ２７９２及び新しい重みＷ２，ｔ＋１を生成し、新しい重みＷ２，ｔ＋１は、次の順方向パスで使用するためのＷ  ２７２８に記憶される。次に、Δ２，ｔ２７９２は前の層２７０１に渡される。後続層と同様に、デルタΔ２，ｔ２７９２、前にＷ  ２７１７に記憶された重みＷ１，ｔ、及び前にＡ  ２７１６に記憶されたアクティベーションＡ１，ｔは次に、Ｂ  ２７１２に従って処理されて、デルタΔ１，ｔ２７９１及び新しい重みＷ１，ｔ＋１を生成し、次に、新しい重みＷ１，ｔ＋１は、次の順方向パスで使用するためにＷ  ２７１８に記憶される。Δ１，ｔ２７９１は次に、処理のために次の前の層（存在する場合）に渡され、逆方向パスが完了し、次の順方向パスが開始されるまで以下同様である。前の層２７０１が入力層である場合、逆方向パスは完了し、次の順方向パスが開始される。
【０６４１】
ＳＧＤ及びＭＢＧＤでは（ＣＰＧＤと異なり）、前の逆方向パスが完了するまで、例えば、Ｗ  ２７１７及びＷ  ２７２７が同じ順方向パスに使用された後、Ｗ  ２７１７及びＷ  ２７２７がそれぞれＷ  ２７１８及びＷ  ２７２８で更新されるまで、次の順方向パスは遅延され、同じことが逆方向パスにも対応する。したがって、次の順方向パスは、同じ逆方向パスからの重みを使用して実行される。
【０６４２】
図２７Ａは、ＳＧＤ及びＭＢＧＤ順方向パス処理の図示に加えて、ＣＰＧＤ順方向パス処理も図示する。しかしながら、ＣＰＧＤの演算は、重み更新及び次の順方向パスが、前の逆方向パスの完了まで遅延するのではなく、可能な限りすぐに実行されるという点で、ＳＧＤ及びＭＢＧＤと比較して異なる。例えば、Ｗ  ２７１７及びＷ  ２７２７はそれぞれ、可能な限りすぐにＷ  ２７１８及びＷ  ２７２８で更新される。したがって、次の順方向パスは、前の反復からの重みに対して選択的アクセスを有し、したがって、ＳＧＤ及びＭＢＧＤにより同じ条件下で生成されるものとは異なるアクティベーションを選択的に生成する。
【０６４３】
より具体的には、前の層２７０１において、ＳＧＤ及びＭＢＧＤと同一に、Ａ１，ｔ２７８１が受信され、Ａ  ２７１６に記憶される。Ａ１，ｔ２７８１及び前にＷ  ２７１７に記憶された重みＷ１，ｔ−ｋ−ｊは次に、Ｆ  ２７１１に従って処理されて、アクティベーションＡ２，ｔ２７８２を生成する。重みＷ１，ｔ−ｋ−ｊは、現在の順方向パスのｋ−ｊ個の順方向パスだけ前の順方向パスに対応する逆方向パスにより生成され記憶された。次に、Ａ２，ｔ２７８２は後続層２７０２に渡され、前の層と同様に、Ａ２，ｔ２７８２は受信され、ＳＧＤ及びＭＢＧＤと同一にＡ  ２７２６に記憶される。Ａ２，ｔ２７８２及び前にＷ  ２７２７に記憶された重みＷ２，ｔ−ｋは次に、Ｆ２７２１に従って処理されて、アクティベーションＡ３，ｔ２７８３を生成する。重みＷ２，ｔ−ｋは、現在の順方向パスのｋ個の順方向パスだけ前の順方向パスに対応する逆方向パスにより生成され記憶された。なお、前の層及び後続層は、同じ順方向パスを処理するために、異なる逆方向パスからの重みを使用する。ＳＧＤ及びＭＢＧＤと同様に、次に、Ａ３，ｔ２７８３は、処理のために次の後続層（存在する場合）に渡され、順方向パスが完了し、逆方向パスが開始されるまで、以下同様である。後続層２７０２が出力層である場合、順方向パスは完了し、順方向パスに対応する逆方向パスが開始される。幾つかの実施形態及び／又は使用状況では、ｊの値は０であり、（ｋ−ｊ）及び（ｋ）は等しい。様々な実施形態及び／又は使用状況では、前の層及び後続層は、異なる順方向パス、異なる逆方向パス、並びに順方向パス及び異なる逆方向パスの１つを同時に処理する。
【０６４４】
図２７Ｂは、ＳＧＤ及びＭＢＧＤ逆方向パス処理に加えて、ＣＰＧＤ逆方向パス処理も図示する。ＣＰＧＤでの逆方向パスの処理は、ＳＧＤ及びＭＢＧＤの逆方向パスの処理と同一である。しかしながら、選択された結果（例えば、選択された重み）は、ＳＧＤ及びＭＢＧＤよりも早く使用される。例えば、逆方向パスｔ−ｋ−ｊにより生成されるＷ１，ｔ−ｋ−ｊ及び逆方向パスｔ−ｋにより生成されるＷ１，ｔ−ｋは、ＳＧＤ及びＭＢＧＤよりも、例えば、順方向パスｔよりも早く使用される。
【０６４５】
図２７Ｃは、ＲＣＰと組み合わせた任意のＳＧＤ、ＭＢＧＤ、及びＣＰＧＤの順方向パス処理の一実施形態を図示する。計算２７３０及び記憶２７３５はそれぞれ、様々な実施形態及び／又は使用状況では、構造及び／又は演算において、計算２７１０及び記憶２７１５と略同様又は同一である。計算２７４０及び記憶２７４５はそれぞれ、様々な実施形態及び／又は使用状況では、記憶２７４５に相手方を有さない記憶２７２５のアクティベーションＡ  ２７２６の記憶の省略以外、構造及び／又は演算において、計算２７２０及び記憶２７２５と略同様又は同一である。
【０６４６】
順方向パス演算では、前の層２７０３に関して、図２７Ａに関して説明したように、アクティベーションＡ１，ｔ２７８１は計算２７３０において受信され、順方向パス処理に従って処理され、記憶２７３５に記憶される。しかしながら、後続層２７０４に関して、アクティベーションＡ２，ｔ２７８２は計算２７４０において受信され、順方向パス処理に従って処理されるが、記憶されない（その代わり、逆方向パス処理中、ＲＣＰに従って再計算される）。
【０６４７】
図２７Ｄ及び図２７Ｅはそれぞれ、ＲＣＰと組み合わせた任意のＳＧＤ、ＭＢＧＤ、及びＣＰＧＤの逆方向パス処理の一実施形態の第１及び第２の部分を図示する。明確にするために、順方向パス処理専用の計算２７３０及び計算２７４０の要素（Ｆ  ２７２１）は省かれている。図２７Ｃに関して図示され説明された構造及び演算に関して、図２７Ｄ及び図２７Ｅは、計算２７３０がさらに、逆方向パス計算Ｂ  ２７１２等の追加の計算を実行することができ、計算２７４０がさらに、逆方向パス計算Ｂ  ２７２２等の追加の計算を実行することができることを示す。記憶２７３５はさらに、計算された重みをＷ  ２７１８等に記憶することができ、記憶２７４５はさらに、計算された重みをＷ  ２７２８等に記憶し、再計算されたアクティベーションをＡ  ２７２９等に記憶することができる。
【０６４８】
逆方向パス演算の第１の部分において、対応する順方向パスで記憶されないアクティベーションは再計算される。ＳＧＤ及びＭＢＧＤ状況では、再計算されたアクティベーションは、Ｆ  ２７１１に従ってＡ  ２７１６における順方向パスから記憶されたアクティベーション及びＷ  ２７１７に記憶された重みを処理して、アクティベーションＡ'２，ｔ２７８４を生成することにより、前の層２７０３において表現され、次に、アクティベーションＡ'２，ｔ２７８４は後続層２７０４のＡ  ２７２９に記憶される。ＳＧＤ及びＭＢＧＤは、順方向パス及び対応する逆方向パスが完了するまで、重み更新及び次の順方向パスの開始を遅延させるため、Ａ'２，ｔ２７８４は、順方向パス中に破棄される値Ａ２，ｔ２７８２と同一である。
【０６４９】
ＣＰＧＤ状況では、再計算されたアクティベーションは、ＳＧＤ及びＭＢＧＤ状況と同じトポロジに従って表現される。しかしながら、ＣＰＧＤは、遅延なしで更新を実行し、前の逆方向パスの完了に関係なく、次の順方向パスを開始できるようにする。したがって、実施形態及び／又は使用状況により、逆方向パスのときに、例えば、Ｗ  ２７１７に記憶された重み値は、対応する順方向パス中に記憶された重みと選択的に異なる。特定の例として、図２７Ｃによれば、Ｗ  ２７１７は、順方向パス中、Ｗ１，ｔ−ｋ−ｊを記憶した。しかしながら、逆方向パス中、例えば、ｍ反復に対応する追加の重み更新が行われ、この時点で、Ｗ  ２７１７はＷ１，ｔ−ｋ−ｊ＋ｍを記憶する。したがって、Ａ'２，ｔ２７８４は、順方向パス中に破棄された値Ａ２，ｔ２７８２から選択的に異なる。
【０６５０】
逆方向パス演算の第２の部分では、計算は、再計算されたアクティベーションを使用して進められる。ＳＧＤ及びＭＢＧＤ状況では、再計算されるアクティベーションは破棄されるアクティベーションと同一である（例えば、概念的に、Ａ  ２７２９に記憶される値は、Ａ  ２７２６に記憶される値と同一である）ため、逆方向処理は、図２７Ｂに関して説明した結果と同一の結果を生成する。例えば、Δ'３，ｔ２７９６、Δ'２，ｔ２７９５、及びΔ'１，ｔ２７９４はそれぞれ、Δ３，ｔ２７９３、Δ２，ｔ２７９２、及びΔ１，ｔ２７９１と同一である。ＣＰＧＤの状況では、再計算されたアクティベーションは破棄されたアクティベーションから選択的に異なるため、逆方向処理は、図２７Ｂに関して説明した結果から選択的に異なる結果を生成する。例えば、Δ'３，ｔ２７９６、Δ'２，ｔ２７９５、及びΔ'１，ｔ２７９４はそれぞれ、Δ３，ｔ２７９３、Δ２，ｔ２７９２、及びΔ１，ｔ２７９１と選択的に異なる。
【０６５１】
幾つかの実施形態及び／又は使用状況では、Ｗ  ２７１７はＷ  ２７１８と別個であり（図示のように）、幾つかの実施形態及び／又は使用状況では、Ｗ  ２７１８及びＷ  ２７１７は、記憶（図示せず）の同じ部分であり、したがって、新しい値をＷ  ２７１８に保存すると、Ｗ  ２７１７に前に保存された値に上書きされる。同様に、Ｗ  ２７２７はＷ  ２７２８と様々に異なるか、又は同じである。様々な実施形態及び／又は使用状況では、Ａ  ２７２９は、Ａ  ２７２６よりも少数のメモリロケーションを使用し、及び／又はＡ  ２７２６よりも短い時間で同数のメモリロケーションを使用するように、様々に実施される。
【０６５２】
様々な実施形態及び／又は使用状況では、アクティベーション及び／又は重みは、任意の１若しくはそれ以上のスカラー、ベクトル、行列、及びより高次元のデータ構造により実施及び／又は表現される。例えば、Ａ  ２７１６、Ａ  ２７２６、Ａ  ２７２９、Ｗ  ２７１７、Ｗ  ２７２７、Ｗ  ２７１８、及びＷ  ２７２８の任意の１若しくはそれ以上は、１若しくはそれ以上のスカラー、１若しくはそれ以上のベクトル、１若しくはそれ以上の行列、及び１若しくはそれ以上のより高次元のアレイの任意の１若しくはそれ以上を記憶することができる。
【０６５３】
様々な実施形態及び／又は使用状況では、前の層２７０１及び後続層２７０２の１若しくはそれ以上の要素は、各ＰＥにより、例えば、ＰＥ４９９の一部又は図４の同様の要素により実施される。例えば、ＰＥ４９７は前の層２７０１を実施し、ＰＥ４９８は後続層２７０２を実施する。アクティベーションＡ２，ｔ２７８２及びデルタΔ２，ｔ２７９２は、東結合４３１を介して通信される。幾つかの実施形態及び／又は使用状況では、前の層２７０１及び後続層２７０２の１若しくはそれ以上の要素は、ＣＰＵ、ＧＰＵ、ＤＳＰ、及びＦＰＧＡの１若しくはそれ以上により実施される。
【０６５４】
様々な実施形態及び／又は使用状況では、Ｆ  ２７１１、Ｆ  ２７２１、Ｂ  ２７１２、及びＢ  ２７２２の要素の全て又は任意の部分は概念的に、図２のＰＥ上のタスクＳＷ２６０の命令の実行の全て又は任意の部分に対応する。
【０６５５】
作業負荷マッピング例
概念的に、ディープ・ラーニング・アクセラレータ４００（図４）は、プログラマブル計算ファブリック（例えば、図５〜図８及び「処理要素：計算要素及びルータ」セクション参照）である。例えば、各ＰＥ４９９要素の計算要素は、タスク（図２のＰＥ上のタスクＳＷ２６０の命令の実行の全て又は任意の部分に概念的に対応する）の命令シーケンスを実行することができ、各ＰＥ４９９のルータ要素のルータ要素は、ＰＥ間でウェーブレットをルーティングするように構成される。プログラマブル計算ファブリックは、様々な様式で作業負荷を計算ファブリックにマッピングできるようにする。以下に記載するのは、計算ファブリックにより実施される様々な技法及びメカニズムを図示する、作業負荷を計算ファブリックに高レベルでマッピングする一例である。
【０６５６】
作業負荷は、ＳＧＤを介して実施されるディープ・ニューラル・ネットワーク・トレーニングである。ディープ・ニューラル・ネットワークは、ニューロンの複数の層を有する。作業負荷は３つのメガフェーズを有する：順方向パス、デルタパス、及びチェインパス。順方向パスは、アクティベーションを順方向に伝搬する。デルタパスは、デルタを逆方向に伝搬する。チェインパスは、デルタがデルタパスで生成される際のデルタに基づいて勾配を計算する。３つのメガフェーズは、概ね同量の計算を有する。
【０６５７】
図４は、メガフェーズをＰＥにマッピングする一例を図示する。各層は、計算ファブリックから連続して（例えば、水平次元で）割り振られた（別名「配置された」）ＰＥのブロックにより実施される。データ移動は、順方向パス中、ファブリックの終わりへ伝搬し（順方向４０１）、次に、デルタパス（デルタ４０２）及びチェインパス（チェイン４０３）中、逆方向で循環して戻る。順方向パスは、デルタパス及びチェインパスにより使用するためにアクティベーションを保存するため、配置はデータ移動の低減に向けられる。例では、全てのＰＥは、３つの方法で３つのメガフェーズ間で時間共有され、各メガフェーズは概ね同量の計算を使用する。幾つかの状況では、パスを実行するＰＥのチェイン全体は、各層がパイプ段（完了におよそ同じ時間量がかかる）であり、ミニバッチの各アクティベーションがパイプラインを埋めるようなパイプラインとして動作する。
【０６５８】
幾つかの実施形態及び／又は使用状況では、複数の層のうちの１つにマッピングされたＰＥのセット内で、その１つの層の重みは、１つのニューロンが複数のＰＥにマッピングされるようにＰＥに分散する。１つのニューロンを複数のＰＥにわたり分割することは、幾つかの状況では、負荷平衡利点を提供するとともに、通信分割利点を提供する（例えば、図１７〜図２０及び「ニューロンスメアリング」セクション参照）。
【０６５９】
概念的に、処理は以下のように進む（図４の順方向４０１参照）。アクティベーションは、水平軸に沿って層にブロードキャストされる。アクティベーションは、ＰＥにより受信され、ＰＥにローカルに記憶された、関連付けられた重み（ＰＥにマッピングされたニューロンに対応する）の検索をトリガーする。非ゼロアクティベーションのみがブロードキャストされ、したがって、ゼロアクティベーションに対して計算が無駄にならない（アクティベーションスパース収集の一例）。各ＰＥは、入力アクティベーションの局所乗算及び累算を実行し、全てのニューロンの重みは局所部分和を生成する。各ニューロンの重みは複数のＰＥに分散するため、部分和は、ニューロンの重み分布に従って垂直方向にＰＥにわたり累積される。部分和が累積され、最終和を生成した後、活性化関数が実行され、全ての新しい非ゼロアクティベーションは次の層にブロードキャストされる。
【０６６０】
デルタパス（図４のデルタ４０２参照）及びチェインパス（図４のチェイン４０３参照）は、順方向パスのデータフローと同様のデータフローを辿る。幾つかの実施形態及び／又は使用状況では、デルタパス及びチェインパスは、ある層だけオフセットして配置され、それにより、アクティベーションは、逆方向で使用される重みと同じ層に記憶される。アクティベーションは、デルタパス及びチェインパスにおいて、アクティベーションが、追加の通信なしで直接使用されるように、受信層により記憶される。アクティベーションの記憶に加えて、重み転置が実行されて、デルタパスを実施する。重み転置は、幾つかの実施形態及び／又は使用状況では、重みを更新するとき、追加のメモリ容量及び追加の通信を使用して、重みを複製することにより実施される。幾つかの実施形態及び／又は使用状況では、重み転置は、垂直次元でブロードキャストされたデルタを転置することにより実施される。
【０６６１】
図２８Ａは、ベクトル（ｖ）により乗算された行列（ｍ）の一般演算を図示する。図２８Ｂは、図２８Ａの様式で、幾つかの実施形態（例えば、完全に接続されたニューラルネットワーク）において３つのメガフェーズで使用されるメモリ構造の様々な表現を図示する。様々な実施形態では、重み（ｗ）及び勾配累積（ｇ）データ構造は、二次元行列である。幾つかの実施形態では、順方向部分和（ｆｐｓｕｍ）及びデルタ部分和（δｐｓｕｍ）及び順方向パスアクティベーション（ａ）は、一次元ベクトルである。二次元行列は、幾つかの実施形態及び／又は使用状況では、比較的大きいため、メモリ（例えば、図８のメモリ８５４）に記憶される。幾つかの実施形態では、一次元ベクトルはより高スループットの記憶装置（例えば、図８のＤストア８４８）に記憶されて、使用状況、３つのフェーズのそれぞれでの乗累算ベクトル演算に対して最高データパス性能を可能にする。
【０６６２】
図２９は、順方向パス状態機械で使用されるタスク（例えば、図９〜図１２及び「タスク」セクション参照）の一実施形態を図示する。幾つかの実施形態及び／又は使用状況では、各ＰＥは状態機械のインスタンス化を実施する。幾つかの実施形態及び／又は使用状況では、状態機械の様々な部分は、各ＰＥによって実施される（例えば、図１７〜図２０及び「ニューロンスメアリング」セクション参照）。状態機械には４つのタスクがある：ｆ＿ｒｘａｃｔ：ａｃｃ２９０１、ｆ＿ｒｘａｃｔ：ｃｌｏｓｅ２９０２、ｆ＿ｐｓｕｍ：ｐｒｏｐ２９０３、及びｆ＿ｔｘａｃｔ：ｔｘ２９０４。概念的に、アクティベーションはＰＥからインスタントＰＥの「左」（前の層に対応する）に到着する。アクティベーションブロードキャスト書き込みへの入力（非クローズアウト）アクティベーション（アクティベーション２９１１）は、ｆ＿ｒｘａｃｔ：ａｃｃ２９０１をトリガーする。インスタントＰＥは、タスクの命令を実行し、アクティベーションに関連付けられた重みを検索し（例えば、インスタントＰＥにローカルなメモリから）、局所重み乗累算を実行して、部分和を生成する。制御フロー依存性が、ｆ＿ｒｘａｃｔ：ａｃｃ２９０１とｆ＿ｐｓｕｍ：ｐｒｏｐ２９０３との間に存在する（フロー２９１３）。タスクが参照するデータ構造例は、ｗｒｏｗ、ｆｐｓｕｍ、及びｆａｃｔである。
【０６６３】
アクティベーションブロードキャスト書き込みへの入力アクティベーションクローズアウト（クローズアウト２９１２）は、ｆ＿ｒｘａｃｔ：ｃｌｏｓｅ２９０２をトリガーする。クローズアウトは、現在の波面の全てのアクティベーションの終わりを通知する。インスタントＰＥはタスクの命令を実行し、インスタントＰＥの開始リスト内の部分和との部分和累積リングを開始する（Ｐｓｕｍ開始２９１６）。タスクが参照するデータ構造例は、ｆｐｓｕｍ＿ａｃｃ＿ｍｅｍ及びｆｐｓｕｍ＿ａｃｃ＿ｆａｂである。
【０６６４】
入力部分和（Ｐｓｕｍプロップ２９３０）は、ｆ＿ｐｓｕｍ：ｐｒｏｐ２９０３をトリガーする。インスタントＰＥは、タスクの命令を実行し、入力部分和をインスタントＰＥの局所部分和に追加し、次に、結果をリング上の次のホップに転送する（Ｐｓｕｍプロップ２９３１）。インスタントＰＥがリングの終わりである場合、最終和が生成される。幾つかの実施形態及び／又は使用状況では、追加の処理が実行されて、デッドロックを回避する。タスクが参照するデータ構造例は、ｆｐｓｕｍ＿ａｃｃ＿ｍｅｍ、ｆｐｓｕｍ＿ａｃｃ＿ｆａｂ、及びｆ＿ｔｘａｃｔ＿ｗａｋｅである。
【０６６５】
送信する、キューに入ったアクティベーションがある場合、ｆ＿ｔｘａｃｔ：ｔｘ２９０４は自己トリガーされる（ウェイク２９１４）。インスタントＰＥはタスクの命令を実行し、アクティベーションをキューから取り出し、ブロードキャスト書き込み上でアクティブを次の層に送信する（アクティベーション２９２１）。キュー内にまだアイテムが残っている場合、インスタントＰＥはタスクを再スケジュールする（再スケジュール２９１５）。キューが空の場合、インスタントＰＥはクローズアウトウェーブレットを送信して、波面を閉じる（クローズアウト２９２２）。
【０６６６】
アクティベーション（入力及び出力）、部分和（入力及び出力）、並びにクローズアウトウェーブレットは、ウェーブレットとして通信される（例えば、図１３Ａ〜図１５Ｂ及び「ウェーブレット」セクション参照）。幾つかの実施形態及び／又は使用状況では、ウェーブレットの１若しくはそれ以上は、１若しくはそれ以上のＤＳＤ及び／又はＸＤＳＤにより記述されるように、ファブリックベクトルの１若しくはそれ以上の要素に対応する。
【０６６７】
様々な状態機械のデータ構造は、以下の表に記述されるように、各ＤＳＲに記憶された複数のＤＳＤを介して参照される（例えば、図２１Ａ〜図２４及び「ベクトル及びデータ構造記述子」セクション参照）。
【０６６８】
【表８】
0006832050.tif 000009
【０６６９】
上記作業負荷マッピング例は、ＳＧＤに関するものである。しかしながら、技法は、ＲＣＰあり及びなしのＭＢＧＤ及びＣＰＧＤに容易に適用可能である。
【０６７０】
他の実施形態の詳細
図１〜図２９に関して説明した実施形態及び使用状況は概念的に、プログラマブルである、例えば、命令に従ってデータを処理するＣＥを有するＰＥに関する。部分的又は全体的に接続されている、例えば、命令なしで動作可能な１若しくはそれ以上の固定回路処理要素に従ってデータを処理するＣＥの１若しくはそれ以上を有する他の実施形態も考えられる。特定の例として、特定のＣＥは、ＬＳＴＭユニットの全て又は一部を実施するハードウェア論理ユニット回路を有する。特定のＣＥは、他のＰＥを有するファブリックで動作可能な特定のＰＥ内のルータを有する。他のＰＥの幾つかは、特定のＰＥと同様又は同一であり、他のＰＥの幾つかは、図４のＰＥ４９９と同様又は同一である。
【０６７１】
実施技法例
幾つかの実施形態では、任意の加速化ディープラーニングで実行される演算の全て又は任意の部分及び／又は任意の加速化ディープラーニングに関連付けられた構造：加速化ディープラーニングのＲＣＰあり及びなしのＳＧＤ、ＭＢＧＤ、ＣＰＧＤ；加速化ディープラーニングのデータ構造記述子及びファブリックベクトル；加速化ディープラーニングのニューロンスメアリング；加速化ディープラーニングのタスク同期；加速化ディープラーニングのデータフロートリガータスク；加速化ディープラーニングの制御ウェーブレット；及び／又は加速化ディープラーニングのウェーブレット表現、及びプロセッサ、マイクロプロセッサ、システムオンチップ、特定用途向け集積回路、ハードウェアアクセラレータ、又は上記演算の全てもしくは部分を提供する他の回路の部分の様々な組合せが、コンピュータシステムによる処理と互換性がある仕様によって指定される。仕様は、ハードウェア記述言語、回路記述、ネットリスト記述、マスク記述、又はレイアウト記述等の様々な記述に従う。記述例には、Ｖｅｒｉｌｏｇ、ＶＨＤＬ、ＳＰＩＣＥ、ＰＳｐｉｃｅ等のＳＰＩＣＥバリアント、ＩＢＩＳ、ＬＥＦ、ＤＥＦ、ＧＤＳ−ＩＩ、ＯＡＳＩＳ、又は他の記述がある。様々な実施形態では、処理は、１若しくはそれ以上の集積回路への包含に適する論理及び／又は回路を生成、検証、又は指定するための解釈、コンパイル、シミュレーション、及び合成の任意の組合せを含む。各集積回路は、様々な実施形態によれば、様々な技術による設計及び／又は製造と互換性がある。技法は、プログラマブル技法（フィールド又はマスクプログラマブル・ゲート・アレイ集積回路等）、セミカスタム技法（全体的又は部分的にセルベースの集積回路等）、及びフルカスタム技法（実質的に専用の集積回路等）、それらの任意の組合せ、又は集積回路の設計及び／又は製造と互換性がある任意の他の技法を含む。
【０６７２】
幾つかの実施形態では、命令セットが記憶されたコンピュータ可読媒体により記述される動作の全て又は部分の様々な組合せは、１若しくはそれ以上のプログラム命令の実行及び／又は解釈により、１若しくはそれ以上のソース言語及び／又はスクリプト言語ステートメントの解釈及び／又はコンパイルにより、又はプログラミング及び／又はスクリプト言語ステートメントで表現される情報のコンパイル、翻訳、及び／又は解釈により生成されるバイナリ命令の実行により実行される。ステートメントは、任意の標準プログラミング又はスクリプト言語（Ｃ、Ｃ＋＋、Ｆｏｒｔｒａｎ、Ｐａｓｃａｌ、Ａｄａ、Ｊａｖａ（登録商標）、ＶＢｓｃｒｉｐｔ、及びＳｈｅｌｌ等）と互換性がある。プログラム命令、言語ステートメント、又はバイナリ命令の１若しくはそれ以上は任意選択で、１若しくはそれ以上のコンピュータ可読記憶媒体要素に記憶される。様々な実施形態では、プログラム命令の幾つか、全て、又は様々な部分は、１若しくはそれ以上の関数、ルーチン、サブルーチン、インラインルーチン、プロシージャ、マクロ、又はそれらの部分として実現される。
【０６７３】
結論
特定の選択は、説明において、テキスト及び図面を準備するに当たり単に好都合であるため、行われ、逆の指示がない限り、選択はそれ自体、記載される実施形態の構造又は動作に関して追加情報を伝達するものとして解釈されるべきではない。選択の例には、図の付番に使用される名称の特定の編成又は割り当て及び実施形態の特徴及び要素の識別及び参照に使用される要素識別子（例えば、呼称又は数値指示子）の特定の編成又は割り当てがある。
【０６７４】
「含む（ｉｎｃｌｕｄｅ）」及び「有する（ｃｏｍｐｒｉｓｅ）」という言葉の様々な形態は特に、オープンエンド範囲の論理集合を記述する抽象として解釈されることが意図され、明示的に記載される場合（「内に（ｗｉｔｈｉｎ）」という言葉が続く等）を除き、物理的な包含を伝達する意図はない。
【０６７５】
上記実施形態は、説明の明確性及び理解のために幾らか詳細に説明されたが、本発明は、提供された詳細に限定されない。本発明の多くの実施形態がある。開示された実施形態は例示であり、限定ではない。
【０６７６】
説明と一貫して構造、構成、及び使用の多くの変形が可能であり、発行される特許の特許請求の範囲内にあることが理解される。例えば、相互接続及び機能ユニットビット幅、クロック速度、及び使用される技術のタイプは、各構成要素ブロック内で様々な実施形態により可変である。相互接続及び論理に当たられた名前は単に例示であり、記載される概念の限定として解釈されるべきではない。フローチャート及び流れ図のプロセス、動作、及び機能要素の順序及び配置は、様々な実施形態により可変である。また、逆のことが特に記載される場合を除き、指定された値範囲、使用される最大値及び最小値、又は他の特定の仕様（ファイルタイプ並びにレジスタ及びバッファ内のエントリ又は段の数等）は単に、記載された実施形態のものであり、実装技術の改善及び変化を辿ることが予期され、限定として解釈されるべきではない。
【０６７７】
当技術分野で既知の機能的に均等な技術は、様々な構成要素、サブシステム、演算、機能、ルーチン、サブルーチン、インラインルーチン、プロシージャ、マクロ、又はそれらの部分を実施するように記載されたものの代わりに利用可能である。実施形態の多くの機能態様が選択的に、実施形態依存の設計制約並びにより高速の処理の技術トレンド（前はハードウェアであった機能のソフトウェアへの移行を促進する）及びより高い集積密度（前はソフトウェアであった機能のハードウェアへの移行を促進する）に応じて、ハードウェア（例えば、一般に専用回路）又はソフトウェア（例えば、何らかの様式のプログラムされたコントローラ又はプロセッサを介して）で実現可能であることも理解される。様々な実施形態での特定の変形は、これに限定されるものではないが、分割の違い、ファクタ及び構成の違い、異なるオペレーティングシステム及び他のシステムソフトウェアの使用、異なるインターフェース規格、ネットワークプロトコル、又は通信リンクの使用、及び特定の用途の独自の工学及びビジネス制約に従って本明細書に記載される概念を実施する場合に予期される他の変形を含む。
【０６７８】
実施形態は、記載された実施形態の多くの態様の最小の実施に必要とされるものを優に超えた詳細及び環境状況で説明した。幾つかの実施形態が、残りの要素間の基本連携を変更せずに、開示された構成要素又は特徴を省略することを当業者は認識しよう。したがって、開示された詳細の多くが、記載された実施形態の様々な態様の実施に必要とされないことが理解される。残りの要素が従来技術から区別可能である限り、省略された構成要素及び特徴は、本明細書に記載される概念に制限を課さない。
【０６７９】
設計の全てのそのような変形は、記載された実施形態により伝達される技術にわたるごく僅かな変更である。本明細書に記載された実施形態が、他の計算及びネットワーキング用途に広く適用可能であり、記載された実施形態の特定の用途又は業界に限定されないことも理解される。したがって、本発明は、発行される特許の特許請求の範囲内に包含される可能な変更及び変形の全てを包含するものとして解釈されるべきである。
【符号の説明】
【０６８０】
１００  ニューラル・ネットワーク・システム
１１０  結合サーバ
１１１  ＬＡＮ
１１２  １００Ｇｂ
１１３  配置
１１４  重み
１１５  重み
１２０  ディープ・ラーニング・アクセラレータ
１２１  ＦＰＧＡｓ
１２２  ＰＥｓ
１２３  結合
１３０  自律車両
１３１  ＣＰＵｓ
１３２  ＣＲＭ
１３３  ＩＥｓ
１３５  カメラ
１４０  携帯電話
１４１  ＣＰＵｓ
１４２  ＣＲＭ
１４３  ＩＥｓ
１４５  カメラ
１５０  配置サーバ
１５１  ＣＰＵｓ
１５２  ＣＲＭ
１６０  接続サーバ
１６１  ＣＰＵｓ
１６２  ＣＲＭ
１６４  ＮＩＣｓ
１８０  インターネット
２００  ニューラル・ネットワーク・ソフトウェア
２１０  配置サーバＳＷ
２１２  ニューロンからＰＥへのマッピングＳＷ
２２０  接続サーバＳＷ
２２４  １００Ｇｂ  ＮＩＣドライバ
２２５  トレーニング情報プロバイダＳＷ
２２６  重み受信機ＳＷ
２３０  自律車両ＳＷ
２３２  ビデオカメラＳＷ
２３３  推測エンジンＳＷ
２３４  ナビゲートＳＷ
２４０  携帯電話ＳＷ
２４２  静止カメラＳＷ
２４３  推測エンジンＳＷ
２４４  掲示ＳＷ
２５０  ＦＰＧＡ上の種々ＳＷ
２６０  ＰＥ上のタスクＳＷ
３００  ニューラル・ネットワーク・トレーニング／推論、全体
３１０  ニューロン配置
３２０  ＦＰＧＡ初期化
３３０  ＰＥ初期化
３４０  トレーニングデータ＝＞ＰＥ
３５０  順方向パス、デルタパス、チェインパス、重み更新
３６０  トレーニング完了？
３７０  重み出力
３８０  重みを推論に使用
４００  ディープ・ラーニング・アクセラレータ
４０１  順方向
４０２  デルタ
４０３  チェイン
４１０  ＡＳＩＣ
４１１  ＡＳＩＣ
４１２  ウェーハ
４２０  Ｉ／Ｏ  ＦＰＧＡ
４３０  北結合
４３１  東結合
４３２  南結合
４３３  西結合
４９７  特定のＰＥ
４９８  特定のＰＥ
４９９  ＰＥ
５００  ＰＥ
５１０  ルータ
５１１  西
５１２  西スキップ
５１３  北
５１４  東スキップ
５１５  東
５１６  南
５２０  計算要素
５２１  オフランプ
５２２  オンランプ
６００  ルータ
６１０  データイン
６１１  スキップＸ＋
６１２  スキップＸ−
６１３  Ｘ＋
６１４  Ｘ−
６１５  Ｙ＋
６１６  Ｙ−
６１７  オンランプ
６２０  データアウト
６２１  スキップＸ＋
６２２  スキップＸ−
６２３  Ｘ＋
６２４  Ｘ−
６２５  Ｙ＋
６２６  Ｙ−
６２７  オフランプ
６３０  ストールアウト
６３１  スキップＸ＋
６３２  スキップＸ−
６３３  Ｘ＋
６３４  Ｘ−
６３５  Ｙ＋
６３６  Ｙ−
６３７  オンランプ
６４０  発信元
６４１  スキップＸ＋
６４２  スキップＸ−
６４３  Ｘ＋
６４４  Ｘ−
６４５  Ｙ＋
６４６  Ｙ−
６４７  オフランプ
６５０  データキュー
６５１  書き込みデコーダ
６５２  アウト
６５３  発信元
６５４  スケジュール済みルータ
６５６  ストール生成
６５７  ストール
６６０  制御情報
６６１  宛先
６６２  送信元
６７０  Ｓｒｃ
７１０  ウェーブレットイングレス
７１１  ウェーブレットを待つ
７１２  ウェーブレットを受信
７１３  ウェーブレット＝＞ルータＱ
７２０  ストール情報
７２１  ルータＱが満杯？
７２２  ストールをデアサート
７２３  ストールをアサート
７３０  ウェーブレットイグレス
７３１  Ｑが空？
７３２  選ぶ？
７３３  ストール？
７３４  ウェーブレットを送信
８００  ＣＥ
８１２  終了
８２０  オフランプ
８２２  ハッシュ
８２４  Ｑｄｉｓｔｒ
８３０  ピッカー
８３４  ＰＣ
８３６  Ｉ配列
８４０  デコーダ
８４２  ＲＦ
８４４  Ｄ配列
８４６  ＤＳＲｓ
８４８  Ｄストア
８５２  データパス
８５４  メモリ
８６０  オンランプ
８９０  ベース
８９６  スケジューリング情報
８９７  Ｑｓ
８９７．０  Ｑ０
８９７．Ｎ  ＱＮ
８９８  アクティブビット
８９８．０  アクティブビット０
８９８．Ｎ  アクティブビットＮ
８９９  ブロックビット
８９９．０  ブロックビット０
８９９．Ｎ  ブロックビットＮ
９００  タスク初期化のウェーブレット処理、全体
９０１  開始
９０５  タスク開始に使用可能なウェーブレットを選択
９０８  制御／データ？
９２０  （カラー＊４）をベースレジスタに追加して、命令アドレスを形成
９３０  下位インデックスビットをベースレジスタに追加して、命令アドレスを形成
９５０  メモリの命令アドレスから命令をフェッチ
９６０  フェッチされた命令を実行
９６１  終了せず
９６２  終了
９９０  終わり
１０００  命令処理、全体
１０１０  制御入力をチェック
１０１２  分岐ストール？
１０１４  何もしない
１０１６  終了＝＞スケジューラ
１０２０  分岐解像度を超える？
１０２２  Ｄ配列ストール？
１０２４  Ｉ配列モード？
１０２６  命令をフェッチ
１０２８  命令終了？
１０３０  命令分岐？
１０３２  ＰＣ命令更新＝＞デコード
１０４０  次のタスク／分岐ＰＣタスクアドレスを処理＝＞ＰＣ
１０４２  シーケンサストール
１１００  依存性管理、全体
１１０１  前の層からのアクティベーション
１１０２  アクティベーションを受信し蓄積
１１１０  前の層からのクローズアウト
１１１１  アクティベーションクローズアウトを受信
１１１２  部分和を開始
１１１３  部分和を計算
１１１４  部分和を伝搬
１１２０  アクティベーションを送信
１１２１  次の層へのアクティベーション
１１２２  次の層へのクローズアウト
１１２３  再スケジュール
１１３１  フロー制御依存性
１１３２  ウェーブレットを異なるＰＥに出力
１１３３  自己へのウェーブレットをウェイクする
１２００  アクティベーション蓄積／クローズアウト及び部分和計算／クローズアウト、全体
１２０１  開始
１２０２  アクティベーションを受信
１２０３  アクティベーションを蓄積
１２０４  アクティベーションクローズアウトを受信
１２０５  部分和リングを開始
１２０６  部分和を受信
１２０７  部分和を計算
１２０８  部分和を送信
１２０９  アクティベーションを送信
１２１０  クローズアウトを送信
１２１１  終わり
１３０１  スパースウェーブレット
１３０２  スパース・ウェーブレット・ペイロード
１３２０  制御ビット
１３２１  インデックス
１３２１．１  下位インデックスビット
１３２１．２  上位インデックスビット
１３２２  スパースデータ
１３２４  カラー
１３３１  高密度ウェーブレット
１３３２  高密度ウェーブレットペイロード
１３４０  制御ビット
１３４３．１  高密度データ
１３４３．２  高密度データ
１３４４  カラー
１４００  ウェーブレット作成フロー、全体
１４０１  開始
１４０２  ＰＥを初期化
１４０３  発信元を設定
１４０４  宛先（ファブリック）ＤＳＲを設定
１４０４．５  宛先ＤＳＲを有する命令をフェッチ／復号化
１４０４．６  ＤＳＲを読み出す
１４０５  キュー／メモリから（次の）発信元データ要素を読み出す
１４０６  ウェーブレットとしてデータ要素をルータに提供
１４０７  まだデータ要素があるか？
１４０８  ウェーブレットをファブリックに送信
１４０９  ファブリックからウェーブレットを受信
１４１０  終わり
１４２０  送信ＰＥのＣＥ
１４３０  送信ＰＥのルータ
１４４０  受信ＰＥのルータ
１５００  ウェーブレット受信フロー、全体
１５０１  開始
１５０２  ＰＥを初期化
１５０３  ルータにおいてウェーブレットを受信
１５０４  他のＰＥへ？
１５０５  ウェーブレットを出力に送信
１５０６  ローカルＣＥへ？
１５０７  ウェーブレットをピッカーキューに書き込む
１５１０  終わり
１５２０  受信ＰＥのルータ
１５３０  受信ＰＥのＣＥ
１５５０  ウェーブレット消費フロー、全体
１５５１  開始
１５５２  ピッカーが処理するウェーブレットを選択
１５５３  命令をフェッチし実行
１５５４  終わり
１６００  ブロック命令及びブロック解除命令の処理フロー、全体
１６０１  開始
１６０２  命令をフェッチし復号化
１６０３  ブロック命令？
１６０４  カラーをブロック
１６１０  ブロック解除命令？
１６１１  カラーをブロック解除
１６２０  命令を実行
１６３０  終わり
１７００  ニューラルネットワーク
１７１０  入力層
１７１１  Ｎ１１
１７１２  Ｎ１２
１７１３  Ｎ１３
１７２０  内部層
１７２１  Ｎ２１
１７２１．１，  １７２１．２  それぞれ１／２  Ｎ２１部分
１７２２  Ｎ２２
１７２２．１，  １７２２．２  それぞれ１／２  Ｎ２２部分
１７２３  Ｎ２３
１７２３．１，  １７２３．２  それぞれ１／２  Ｎ２３部分
１７２４  Ｎ２４
１７２４．１，  １７２４．２  それぞれ１／２  Ｎ２４部分
１７３１  Ｎ３１
１７３１．１，  １７３１．２，  １７３１．３，  １７３１．４  それぞれ１／４  Ｎ３１部分
１７３２  Ｎ３２
１７３２．１，  １７３２．２，  １７３２．３，  １７３２．４  それぞれ１／４  Ｎ３２部分
１７３３  Ｎ３３
１７４０  出力層
１７４１  Ｎ４１
１７４２  Ｎ４２
１７９１  通信
１７９１．１  通信部分
１７９２  通信
１７９２．１  通信部分
１７９３  通信
１７９３．１  通信部分
１８２０  ＰＥ０
１８２１  ＰＥ１
１８２２  ＰＥ２
１８２３  ＰＥ３
１８２４  ＰＥ４
１８２５  ＰＥ５
１９１０  ｉｎ０
１９１１  ｉｎ１
１９１２  ｉｎ２
１９１３  ｉｎ３
１９１４  ｉｎ４
１９１５  ｉｎ５
１９２０  ｏｕｔ０
１９２１  ｏｕｔ１
１９２２  ｏｕｔ２
１９２３  ｏｕｔ３
１９２４  ｏｕｔ４
１９２５  ｏｕｔ５
１９３０．１  １／２ローカル計算
１９３０．２  １／２ローカル計算
１９４０．１  １／２ローカル記憶
１９４０．２  １／２ローカル記憶
１９５０．１  追加の計算
１９５０．２  追加の計算
１９６０．１  追加の記憶
１９６０．２  追加の記憶
１９７０  追加の通信
２０００  ウェーハ部分
２０４０，２０４１，２０４３，２０４４  それぞれ隣接ＰＥ間の結合
２０５０，２０５１，２０５２，２０５３，２０５４，２０５５，２０５６，２０５７  それぞれ隣接ＰＥ間の結合の部分
２０６０  通信
２１００  ファブリック入力データ構造記述子
２１０１  長さ
２１０２  ＵＴＩＤ（マイクロスレッド識別子）
２１０３  ＵＥ（マイクロスレッドイネーブル）
２１０４  ＳＷ（ＳＩＭＤ幅）
２１０５  ＡＣ（カラーアクティベーション）
２１０６  Ｔｅｒｍ（制御ウェーブレット時にマイクロスレッドを終了）
２１０７  ＣＸ（制御ウェーブレット変換イネーブル）
２１０８  ＵＳ（マイクロスレッド・スパース・モード）
２１０９  タイプ
２１１０  ＳＳ（シングルステップ）
２１１１  ＳＡ（アドレス保存／条件付きシングル・ステップ・モード）
２１１２  ＳＣ（カラー指定，通常モード）
２１１３  ＳＱ（キュー指定，通常モード）
２１１４  ＣＨ（カラー，ハイビット）
２１２０  ファブリック出力データ構造記述子
２１２１  長さ
２１２２  ＵＴＩＤ（マイクロスレッド識別子）
２１２３  ＵＥ（マイクロスレッドイネーブル）
２１２４  ＳＷ（ＳＩＭＤ幅）
２１２５  ＡＣ（カラーアクティベーション）
２１２６  カラー
２１２７  Ｃ（出力制御ビット）
２１２８．１  インデックスロー
２１２８．２  インデックスハイ
２１２９  タイプ
２１３０  ＳＳ（シングルステップ）
２１３１  ＳＡ（アドレス保存／条件付きシングル・ステップ・モード）
２１３２  ＷＬＩ（ウェーブレットインデックス選択）
２１４０  １Ｄメモリデータ構造記述子
２１４１  長さ
２１４２  ベースアドレス
２１４９  タイプ
２１５０  ＳＳ（シングルステップ）
２１５１  ＳＡ（アドレス保存／条件付きシングル・ステップ・モード）
２１５２  ＷＬＩ（ウェーブレットインデックス選択）
２１５３  ストライド
２１６０  ４Ｄメモリデータ構造記述子
２１６１  長さ
２１６１．１  長さ下位ビット
２１６１．２  長さ上位ビット
２１６２  ベースアドレス
２１６９  タイプ
２１７０  ＳＳ（シングルステップ）
２１７１  ＳＡ（アドレス保存／条件付きシングル・ステップ・モード）
２１７２  ＷＬＩ（ウェーブレットインデックス選択）
２１８０  循環メモリ・バッファ・データ構造記述子
２１８１  長さ
２１８２  ベースアドレス
２１８４  ＳＷ（ＳＩＭＤ幅）
２１８８  ＦＷ（ＦＩＦＯラップビット）
２１８９  タイプ
２１９０  ＳＳ（シングルステップ）
２１９１  ＳＡ（アドレス保存／条件付きシングル・ステップ・モード）
２１９２  ＷＬＩ（ウェーブレットインデックス選択）
２２１０  循環メモリバッファ拡張データ構造記述子
２２１１  タイプ
２２１２  開始アドレス
２２１３  終了アドレス
２２１４  ＦＩＦＯ
２２１５  カラープッシュ（アクティベーション）
２２１６  カラーポップ（アクティベーション）
２２４０  ４Ｄメモリベクトル拡張データ構造記述子
２２４１  タイプ
２２４２  次元
２２４３  ＤＦ（次元フォーマット）
２２４４．１  ストライド選択（次元について）１
２２４４．２  ストライド選択（次元について）２
２２４４．３  ストライド選択（次元について）３
２２４４．４  ストライド選択（次元について）４
２２４５  ストライド
２３００  データ構造記述子フロー、全体
２３０１  開始
２３０２  ＤＳＲを設定
２３０３  ＤＳＲを用いて命令をフェッチ／復号化
２３０４  ＤＳＲを読み出す
２３０５  （任意選択）ＸＤＳＲを設定
２３０６  （任意選択）ＸＤＳＲを読み出す
２３１０  キュー／メモリから（次の）発信元データ要素を読み出す
２３１１  データ要素に対して（次の）演算を実行
２３１２  （次の）宛先データ要素をキュー／メモリに書き込む
２３１３  データ要素がまだあるか？
２３１６  終わり
２４００  データ構造記述子復号化フロー、全体
２４０１  開始
２４１０  ファブリックベクトル
２４１１  タイプ＝ファブリック？
２４１２  ＤＳＤを介してアクセス
２４２０  メモリベクトル
２４２１  タイプ＝ＸＤＳＲ？
２４２２  ＤＳＤを介して指定されたＸＤＳＲを読み出す
２４２３  タイプ＝４Ｄベクトル？
２４２４  （任意選択）ストライドレジスタを読み出す
２４２７  ＤＳＤを介して１Ｄにアクセス
２４２８  ＸＤＳＤを介して４Ｄにアクセス
２４２９  ＸＤＳＤを介して循環バッファにアクセス
２４９９  終わり
２５１０  複数オペランド命令
２５１１  命令タイプ
２５１２  演算コード
２５１３  オペランド０符号化
２５１３．１  オペランド０タイプ
２５１３．２  オペランド０
２５１４  オペランド１符号化
２５１４．１  オペランド１タイプ
２５１４．２  オペランド１
２５１５  終了
２５２０  １発信元０宛先オペランド命令
２５２１  命令タイプ
２５２２  演算コード
２５２３  オペランド１符号化
２５２３．１  オペランド１タイプ
２５２３．２  オペランド１
２５２４  即値
２５２５  終了
２５３０  即値命令
２５３１  命令タイプ
２５３２  演算コード
２５３３．２  オペランド０
２５３４．１  即値ロー
２５３４．２  即値ハイ
２５３４  即値
２６１１  第１の順方向パス
２６１２  第２の順方向パス
２６２１  第１の逆方向パス
２６２２  第２の逆方向パス
２６３１  ミニバッチサイズ（Ｎ）
２６３２  オーバーヘッド
２６３３  更新間隔（Ｕ）
２６５１  順方向パス
２６６１  逆方向パス
２６６５  順方向パス
２６６６  逆方向パス
２６６７  重み更新使用
２６７１  順方向パス
２６８１  逆方向パス
２６８５  アクティベーションを記憶
２６８６  再計算されたアクティベーションを記憶
２７０１  前の層
２７０２  後続層
２７０３  前の層
２７０４  後続層
２７１０  計算
２７１１  Ｆ
２７１２  Ｂ
２７１５  記憶
２７１６  Ａ
２７１７  Ｗ
２７１８  Ｗ
２７２０  計算
２７２１  Ｆ
２７２２  Ｂ
２７２５  記憶
２７２６  Ａ
２７２７  Ｗ
２７２８  Ｗ
２７２９  Ａ
２７３０  計算
２７３５  記憶
２７４０  計算
２７４５  記憶
２７８１  Ａ１，ｔ
２７８２  Ａ２，ｔ
２７８３  Ａ３，ｔ
２７８４  Ａ'２，ｔ
２７９１  ?１，ｔ
２７９２  ?２，ｔ
２７９３  ?３，ｔ
２７９４  ?'１，ｔ
２７９５  ?'２，ｔ
２７９６  ?'３，ｔ
２９０１  ｆ＿ｒｘａｃｔ：ａｃｃ
２９０２  ｆ＿ｒｘａｃｔ：クローズ
２９０３  ｆ＿ｐｓｕｍ：ｐｒｏｐ
２９０４  ｆ＿ｔｘａｃｔ：ｔｘ
２９１１  アクティベーション
２９１２  クローズアウト
２９１３  フロー
２９１４  ウェイク
２９１５  再スケジュール
２９１６  Ｐｓｕｍ開始
２９２１  アクティベーション
２９２２  クローズアウト
２９３０  Ｐｓｕｍプロップ
２９３１  Ｐｓｕｍプロップ
【図１】
0006832050.tif 000010
【図２】
0006832050.tif 000011
【図３】
0006832050.tif 000012
【図４】
0006832050.tif 000013
【図５】
0006832050.tif 000014
【図６】
0006832050.tif 000015
【図７】
0006832050.tif 000016
【図８】
0006832050.tif 000017
【図９】
0006832050.tif 000018
【図１０】
0006832050.tif 000019
【図１１】
0006832050.tif 000020
【図１２】
0006832050.tif 000021
【図１３Ａ】
0006832050.tif 000022
【図１３Ｂ】
0006832050.tif 000023
【図１４】
0006832050.tif 000024
【図１５Ａ】
0006832050.tif 000025
【図１５Ｂ】
0006832050.tif 000026
【図１６】
0006832050.tif 000027
【図１７】
0006832050.tif 000028
【図１８Ａ】
0006832050.tif 000029
【図１８Ｂ】
0006832050.tif 000030
【図１９】
0006832050.tif 000031
【図２０】
0006832050.tif 000032
【図２１Ａ】
0006832050.tif 000033
【図２１Ｂ】
0006832050.tif 000034
【図２１Ｃ】
0006832050.tif 000035
【図２１Ｄ】
0006832050.tif 000036
【図２１Ｅ】
0006832050.tif 000037
【図２２Ａ】
0006832050.tif 000038
【図２２Ｂ】
0006832050.tif 000039
【図２３】
0006832050.tif 000040
【図２４】
0006832050.tif 000041
【図２５Ａ】
0006832050.tif 000042
【図２５Ｂ】
0006832050.tif 000043
【図２５Ｃ】
0006832050.tif 000044
【図２６Ａ】
0006832050.tif 000045
【図２６Ｂ】
0006832050.tif 000046
【図２６Ｃ】
0006832050.tif 000047
【図２６Ｄ】
0006832050.tif 000048
【図２７Ａ】
0006832050.tif 000049
【図２７Ｂ】
0006832050.tif 000050
【図２７Ｃ】
0006832050.tif 000051
【図２７Ｄ】
0006832050.tif 000052
【図２７Ｅ】
0006832050.tif 000053
【図２８Ａ】
0006832050.tif 000054
【図２８Ｂ】
0006832050.tif 000055
【図２９】
0006832050.tif 000056