(57)【要約】  人工ニューラルネットワーク（ＡＮＮ）を実装するように適合されて、計算およびローカルメモリ要素を有する処理回路を組み込んでいる新規で有用なニューラルネットワーク（ＮＮ）処理コア。ＮＮプロセッサは、階層アーキテクチャに編成された自己完結型計算ユニットから構築される。均質性は、複数レベルの階層に集約された、類似の計算ユニットのより単純な管理および制御を可能にする。計算ユニットは可能な限り最小限のオーバーヘッドで設計されて、追加の特徴および機能は階層内のより高いレベルで集約される。オンチップメモリは、特定の階層における基本操作に本質的に必要なコンテンツに対してストレージを提供し、計算資源と最適比で結合される。無駄のない制御は、特定の階層レベルで必要な操作だけを管理するのにちょうど十分な信号通知を提供する。資源の可用性および装置の容量に応じて要求どおりに調整できる、動的資源割当アジリティが提供される。【選択図】図６
2020515989.tif 000002
【特許請求の範囲】
【請求項１】
１つ以上のネットワーク層を有する人工ニューラルネットワーク（ＡＮＮ）に対するニューラルネットワーク計算を実行するためにＮＮプロセッサ内で使用するためのニューラルネットワーク（ＮＮ）処理要素回路であって、
重みおよび入力データを受信し、それらから積を生成するように動作する乗算器と、
前記積および現在のコンテキストを受信して合計して、更新されたコンテキストをそれらから生成するように動作する加算器と、
前記加算器に結合されて、前記更新されたコンテキストをその中に格納するように動作するローカルメモリと
を備え、
前記ローカルメモリ内の個々の記憶位置はランダム以外の事前に定義された方法でアクセスされる、
ニューラルネットワーク（ＮＮ）処理要素回路。
【請求項２】
前記ローカルメモリ内の各記憶位置は前記ＡＮＮ内の少なくとも１つのニューロンを表す、請求項１に記載の回路。
【請求項３】
前記ローカルメモリ内の単一のニューロン内に複数の論理ニューロンを実装するように動作する回路をさらに備え、各コンテキストは単一ニューロンの出力を表し、前記論理ニューロンは時分割されて、前記ローカルメモリ内の各位置は、異なる時における複数のニューロンからの異なるニューロンを表す、請求項２に記載の回路。
【請求項４】
前記ローカルメモリは、前記処理要素が空間領域内に実装できるいくつかの同時コンテキストを反映する深さを有する、請求項１に記載の回路。
【請求項５】
前記処理要素は、その内容をより高い集約レベルに配置されたメモリにスワップアウトすることにより時間領域内の前記ローカルメモリ内に追加のコンテキストを実装できる、請求項４に記載の回路。
【請求項６】
重みおよび／または入力データを、前記乗算器に入力する前に、整数もしくは浮動小数点数表現としてフォーマットするように動作する第１の表現回路をさらに備える、請求項１に記載の回路。
【請求項７】
前記乗算器によって生成された積を、前記加算器に入力する前に、整数または浮動小数点数表現としてフォーマットするように動作する第２の表現回路をさらに備える、請求項１に記載の回路。
【請求項８】
前記ローカルメモリは前記処理要素内に配置されて、それとの使用専用である、請求項１に記載の回路。
【請求項９】
前記加算器への入力のために、前記ローカルメモリ内に格納された前記現在のコンテキスト、またはより高い集約レベルに配置されたメモリ内に格納されたコンテキストとの間で選択するように動作する第１のマルチプレクサ回路をさらに備える、請求項１に記載の回路。
【請求項１０】
前記ローカルメモリへの格納のために、前記加算器によって生成された前記更新されたコンテキスト、またはより高い集約レベルに配置されたメモリ内に格納されたコンテキストとの間で選択するように動作する第２のマルチプレクサ回路をさらに備える、請求項１に記載の回路。
【請求項１１】
前記加算器によって生成された前記更新されたコンテキストを書き込むために、より高い集約レベルに配置された関数、より高い集約レベルに配置されたメモリ、または前記ローカルメモリの間で選択するように動作する第３のマルチプレクサ回路をさらに備える、請求項１に記載の回路。
【請求項１２】
複数の乗算器と、単一の乗算器と比較してより高精度の乗算を実行可能な２つ以上の乗算器を組み合わせるように動作する回路とをさらに備える、請求項１に記載の回路。
【請求項１３】
倍精度処理要素回路をもたらすために４つの乗算器を組み合わせるクワッド回路をさらに備える、請求項１に記載の回路。
【請求項１４】
１つ以上のネットワーク層を有する人工ニューラルネットワーク（ＡＮＮ）に対してニューラルネットワーク計算を実行するためにＮＮプロセッサ内で使用するためのニューラルネットワーク（ＮＮ）処理要素回路であって、
受信した重みおよび入力データを乗じて、それから積を生成するように動作する複数の乗算器と、
前記積を、ローカルメモリまたはより高い集約レベルに配置されたメモリのいずれかから受信した現在のコンテキストと加算して、更新されたコンテキストをそれから生成するように動作するアキュムレータと、
前記アキュムレータに結合されて、前記更新されたコンテキストを逐次的方法でその中に格納するように動作する前記ローカルメモリと、
前記更新されたコンテキストを、選択制御信号に従って、前記ローカルメモリ、より高い集約レベルに配置された前記メモリ、またはより高い集約レベルに配置された関数のいずれかに書き込むように動作するマルチプレクサと
を備え、
前記ローカルメモリ内の個々の記憶位置はランダム以外の事前に定義された方法でアクセスされる、
ニューラルネットワーク（ＮＮ）処理要素回路。
【請求項１５】
前記ローカルメモリ内の各記憶位置は前記ＡＮＮ内の少なくとも１つのニューロンを表す、請求項１４に記載の回路。
【請求項１６】
前記処理要素は、その内容をより高い集約レベルに配置されたメモリにスワップアウトすることにより時間領域内の前記ローカルメモリ内に追加のコンテキストを実装できる、請求項１４に記載の回路。
【請求項１７】
重みおよび／または入力データを、前記加算器に入力する前に、整数もしくは浮動小数点数表現としてフォーマットするように動作する第１の表現回路をさらに備える、請求項１４に記載の回路。
【請求項１８】
前記乗算器によって生成された積を、前記加算器に入力する前に、整数または浮動小数点数表現としてフォーマットするように動作する第２の表現回路をさらに備える、請求項１４に記載の回路。
【請求項１９】
倍精度処理要素回路をもたらすために４つの乗算器を組み合わせるクワッド回路をさらに備える、請求項１４に記載の回路。
【請求項２０】
集積回路（ＩＣ）によって実装された方法であって、前記ＩＣは、１つ以上のネットワーク層を有する人工ニューラルネットワーク（ＡＮＮ）に対するニューラルネットワーク計算を実行するためにＮＮプロセッサ内で使用するためのニューラルネットワーク（ＮＮ）処理要素回路を含み、前記方法は、
ＡＮＮ重みおよび入力データを乗じて、それらから積を生成することと、
前記積および現在のコンテキストを合計して、更新されたコンテキストをそれから生成することと、
前記更新されたコンテキストをローカルで前記処理要素回路に専用のメモリ内に格納することと
を含み、
前記ローカルメモリ内の個々の記憶位置はランダム以外の事前に定義された方法でアクセスされる、
集積回路（ＩＣ）によって実装された方法。
【請求項２１】
前記ローカルメモリ内の各記憶位置は前記ＡＮＮ内の少なくとも１つのニューロンを表す、請求項２０に記載の方法。
【請求項２２】
前記ローカルメモリ内の前記ニューロンを時分割することをさらに含み、各位置は、異なる時における複数のニューロンからの異なるニューロンを表す、請求項２１に記載の方法。
【請求項２３】
時間領域内の前記ローカルメモリ内の追加のコンテキストを、その内容をより高い集約レベルに配置されたメモリにスワップアウトすることにより実装することをさらに含む、請求項２０に記載の方法。
【請求項２４】
重みおよび／または入力データを、前記乗算の前に、整数もしくは浮動小数点数表現としてフォーマットすることをさらに含む、請求項２０に記載の方法。
【請求項２５】
前記積を、前記加算の前に、整数もしくは浮動小数点数表現としてフォーマットすることをさらに含む、請求項２０に記載の方法。
【請求項２６】
前記合計への入力のために、前記ローカルメモリ内に格納された前記現在のコンテキスト、またはより高い集約レベルに配置されたメモリ内に格納されたコンテキストとの間で選択することをさらに含む、請求項２０に記載の方法。
【請求項２７】
前記ローカルメモリへの格納のために、前記合計によって生成された前記更新されたコンテキスト、またはより高い集約レベルに配置されたメモリ内に格納されたコンテキストとの間で選択することをさらに含む、請求項２０に記載の方法。
【請求項２８】
前記合計によって生成された前記更新されたコンテキストを書き込むために、より高い集約レベルに配置された関数、より高い集約レベルに配置されたメモリ、または前記ローカルメモリの間で選択することをさらに含む、請求項２０に記載の方法。
【請求項２９】
倍精度処理要素回路をもたらすために４つの乗算器回路を組み合わせることをさらに含む、請求項２０に記載の方法。
【請求項３０】
集積回路（ＩＣ）によって実装された方法であって、前記ＩＣは、１つ以上のネットワーク層を有する人工ニューラルネットワーク（ＡＮＮ）に対するニューラルネットワーク計算を実行するためにＮＮプロセッサ内で使用するためのニューラルネットワーク（ＮＮ）処理要素回路を含み、前記方法は、
第１のオペランド、第２のオペランド、および第３のオペランドを受信することと、
前記処理要素回路の動作をタイムスロットに分割することと、
前記第１のオペランド、前記第２のオペランド、および前記第３のオペランドを伴う計算を実行して更新されたデータ要素をそれから生成することと、
前記データ要素をローカルで前記処理要素回路に専用のメモリ内に格納することと
を含み、
前記ローカルメモリ内の個々の記憶位置はランダム以外の事前に定義された方法でアクセスされ、かつ
データ要素は時分割されて、前記メモリ内の各位置は、異なる時における複数のデータ要素からの異なるデータ要素を表す、
集積回路（ＩＣ）によって実装された方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書で開示する主題はニューラルネットワークの分野に関し、より詳細には、計算およびローカルメモリ要素を有し、人工ニューラルネットワーク（ＡＮＮ）を実装するように適合された処理回路を内蔵しているニューラルネットワーク（ＮＮ）処理エンジンに関する。
【背景技術】
【０００２】
人工ニューラルネットワーク（ＡＮＮ）は、動物の脳を構成する生物の神経ネットワークから発想を得たコンピューティングシステムである。かかるシステムは、例を検討することによって、一般的には、タスク固有のプログラミングなしで、それらタスクの重要な特徴を抽出し、多数の例から一般化することにより、タスクを行うことを学習する、すなわち、性能を次第に改善する。例えば、画像認識では、それらは、手動で「猫」または「猫ではない」とラベル付けされている画像例を解析し、解析結果を使用して他の画像で猫を識別することにより、猫を含む画像を識別することを学習し得る。それらは、ルールベースのプログラミングを使用する従来のコンピュータアルゴリズムで表現することが困難な用途において最も有用であることが分かっている。
【０００３】
ＡＮＮは、生物脳内の神経に類似した、人工ニューロンと呼ばれる結合されたユニットの集合に基づく。ニューロン間の各結合またはシナプスは、信号を別のニューロンに伝達できる。受信またはポストシナプスニューロンは、別の１つまたはいくつかのニューロンに結合されて、その信号を処理することができ、次いで、軸索とも呼ばれるシナプスを通して結合された下流のニューロンに信号通知できる。ニューロンは、一般に実数値、典型的には０〜１の間、によって表現される状態を有し得る。ニューロンおよびシナプスは、学習が進むにつれて変化する重みも有し得、それは、それが下流に送信する信号の強度を増大または低下できる。さらに、それらは閾値を有し得、それにより総合信号（ａｇｇｒｅｇａｔｅ  ｓｉｇｎａｌ）がそのレベルを下回っているか、または上回っている場合に限り、下流信号が送信される。
【０００４】
典型的には、ニューロンは層で編成される。異なる層は、それらの入力に関して異なる種類の変換を実行し得る。信号は、第１の、すなわち、入力層から最後の、すなわち、出力層に、恐らくは、層を複数回横切った後、移動する。
【０００５】
ニューラルネットワークアプローチの本来の目的は、ヒトの脳が行うのと同じ方法で問題を解決することであった。時が経つにつれて、マッチング特有の知能に関心が集中して、逆伝播、または逆方向への情報伝達およびその情報を反映するためのネットワークの調整などの、生物学からの逸脱に至った。
【０００６】
人工ニューラルネットワークの構成要素は、（１）活性化閾値を有するニューロン、（２）ニューロンの出力を伝達するための結合および重み、（３）ニューロンへの入力を先行ニューロンの出力から計算するための伝搬関数、ならびに（４）所与の入力が、典型的には重みおよび閾値の変更となる所望の結果を生成するために、ニューラルネットワークのパラメータを変更するアルゴリズムである学習則を含む。
【０００７】
解決すべき特定のタスク、および関数Ｆのクラスを所与として、学習は、そのタスクを何らかの最適な意味において解決する関数を見つけるために観測のセットを使用することを伴う。費用関数Ｃは、最適解に対して、他のどの解も最適解の費用よりも少ない費用を有していないように定義される）。
【０００８】
費用関数Ｃは、特定の解が、解決すべき問題に対する最適解からどれだけ離れているかの尺度である。学習アルゴリズムは、最小の考えられる費用を有する関数を見つけるために解空間内を検索する。
【０００９】
ニューラルネットワークは、ＡＮＮにおける重みに関して損失関数の勾配を計算する方法である逆伝播を使用して訓練できる。逆伝播の重み更新は、周知の確率的勾配降下技法によって行うことができる。費用関数の選択は、学習タイプ（例えば、教師あり、教師なし、強化）および活性化関数などの、要因によって決まることに留意されたい。
【００１０】
３つの主な学習パラダイムがあり、各々、特定の学習タスク、すなわち、教師あり学習、教師なし学習、および強化学習、に対応する。教師あり学習は、例ペアのセットを使用し、目標は、許可されたクラスの関数内で例を一致させる関数を見つけることである。一般的に使用される費用は平均平方誤差であり、それは、ネットワークの出力と全ての例ペアにわたる目標値との間の平均平方誤差を最小限にしようと試みる。多層パーセプトロン（ＭＬＰ）と呼ばれるニューラルネットワークのクラスに対して勾配降下を使用してこの費用を最小限にすると、ニューラルネットワークを訓練するための逆伝播アルゴリズムが生成される。教師あり学習の例には、パターン認識、すなわち、分類、および回帰、すなわち、関数近似を含む。
【００１１】
教師なし学習では、何らかのデータが与えられ、最小限にすべき費用関数は、データおよびネットワークの出力の任意の関数であり得る。費用関数は、タスク（すなわち、モデル領域）および任意の先験的な仮定（すなわち、モデルの暗黙特性、そのパラメータ、および観測変数）によって決まる。教師なし学習のパラダイムに含まれるタスクは、一般に推定問題であり、用途は、クラスタリング、統計的分布の推定、圧縮、およびフィルタリングを含む。
【００１２】
強化学習では、データは通常、提供されないが、エージェントの、環境との相互作用によって生成される。各時点において、エージェントはアクションを実行し、環境は、何らかの典型的には未知のダイナミクスに従って観測および即座の費用（ｉｎｓｔａｎｔａｎｅｏｕｓ  ｃｏｓｔ）を生成する。目標は、長期的な費用、例えば、予期される累積費用、の何らかの測定を最小限にするアクションを選択するためのポリシーを発見することである。環境のダイナミクスおよび各ポリシーに対する長期的な費用は通常、未知であるが、推定することはできる。
【００１３】
今日、ニューラルネットワークに対する一般的な用途は、ビデオストリームの解析、すなわち、マシンビジョンにおいてである。例は、物品の製造における組立ライン上でマシンビジョンが使用される産業工場、車両の経路および周囲において物体を検出するためにマシンビジョンが使用される自律走行車を含む。
【００１４】
人工ニューラルネットワーク（ＡＮＮ）は、いわゆる「ネットワークモデル」に起因するパラメータのセットに大きく依存する固有の構造を有する。これらのパラメータはしばしば、ネットワークに沿って伝播するときに他の中間値に対するスケーリング係数として動作する傾向に起因して、ネットワークの「重み」と呼ばれる。重みの値を判断するためのプロセスは、上述のように訓練と呼ばれる。一旦、訓練が完了すると、ネットワークは定常状態に落ち着いて、今や、情報を抽出するために新しい（すなわち、未知の）データで使用できる。この段階は「推論」段階と呼ばれる。
【００１５】
推論中、パラメータの結果セット、すなわち、重みを観測し、それらを操作してより良い性能（すなわち、表現）をもたらすことができる。重みを削って（ｐｒｕｎｅ）量子化するための方法は周知である。しかし、これらの方法は、推論段階に移行する前に、訓練されたモデルにのみ適用される。このアプローチは、より良い実行性能を実際にもたらす。しかし、それは、重みを変更することの可能性を完全には調査も利用もしていない。加えて、一旦、ＡＮＮの重みが満足のいくレベルまで収束すると、既存の解は、重みの量子化を訓練後にのみ適用する。
【発明の概要】
【００１６】
本発明は、人工ニューラルネットワーク（ＡＮＮ）を実装するように適合された計算およびローカルメモリ要素を有する処理回路を内蔵しているニューラルネットワーク（ＮＮ）処理エンジンである。ニューロコンピュータまたはニューロチップとも呼ばれる、ＮＮ処理エンジンまたはプロセッサの粒状性質（ｇｒａｎｕｌａｒ  ｎａｔｕｒｅ）は、ニューラルネットワークの基盤が容易に識別されて、幅広い範囲のニューラルネットワークモデルが非常に効率的な方法で実装されるのを可能にする。ＮＮプロセッサは、（１）計算的側面に関してアーキテクチャを一般化し過ぎることと、（２）計算を専用の計算可能ユニットに集約すること、との間でのバランスの選択においていくらかの柔軟性を提供する。本発明は、ニューラルネットワーク向けの改善されたバランスを提供して、適切な容量で必要な機能を満足しようと試みる。結果として生じるアーキテクチャは従って、より効率的で、ユニットあたりはるかに低消費電力で、実質的に高い計算ユニット密度を提供する。
【００１７】
本発明のＮＮプロセッサのアーキテクチャのいくつかの主な特徴は、次を含む、すなわち、（１）計算ユニットは自己完結型であり、それらの対象タスクを実装するために完全に利用されるように構成される、（２）階層アーキテクチャが均質性および自己相似性を提供し、それにより、複数レベルの階層に集約された、類似の計算ユニットのより単純な管理および制御を可能にする、（３）計算ユニットは可能な限り最小限のオーバーヘッドで設計されて、追加の特徴および機能は、階層（すなわち、集約）のより高いレベルに置かれる、（４）オンチップメモリが、特定の階層における基本操作に対して本質的に必要なコンテンツに対してストレージを提供し、計算資源と最適比で結合される、（５）無駄のない制御が、特定の階層レベルで必要な操作だけを管理するのにちょうど十分な制御を提供する、ならびに（６）動的資源割当アジリティが、可用性および容量に応じて必要とされるとおりに調整できる。
【００１８】
本発明の実施形態のこの、追加の、および／もしくは他の態様ならびに／または利点は、以下の詳細な説明に記載されており、恐らくは、詳細な説明から推測でき、かつ／または本発明の実施形態の実施によって学習可能である。
【００１９】
従って、本発明に従い、１つ以上のネットワーク層を有していて、重みおよび入力データを受信し、それから積を生成するように動作する乗算器、積および現在のコンテキストを受信して合計して、更新されたコンテキストをそれから生成するように動作する加算器、加算器に結合されて更新されたコンテキストをその中に格納するように動作するローカルメモリを含む、人工ニューラルネットワーク（ＡＮＮ）に対するニューラルネットワーク計算を実行するためのＮＮプロセッサ内で使用するためのニューラルネットワーク（ＮＮ）処理要素回路が提供され、ローカルメモリ内の個々の記憶位置はランダム以外の事前に定義された方法でアクセスされる。
【００２０】
本発明に従い、１つ以上のネットワーク層を有していて、受信した重みおよび入力データを乗じて、それから積を生成するように動作する複数の乗算器、その積を、ローカルメモリまたはより高い集約レベルに配置されたメモリのいずれかから受信した現在のコンテキストと加算して、更新されたコンテキストをそれから生成するように動作するアキュムレータ、アキュムレータに結合されて更新されたコンテキストを逐次的方法でその中に格納するように動作するローカルメモリ、更新されたコンテキストを、選択制御信号に従って、ローカルメモリ、より高い集約レベルに配置されたメモリ、またはより高い集約レベルに配置された関数のいずれかに書き込むように動作するマルチプレクサを含む、人工ニューラルネットワーク（ＡＮＮ）に対するニューラルネットワーク計算を実行するためのＮＮプロセッサ内で使用するためのニューラルネットワーク（ＮＮ）処理要素回路も提供され、ローカルメモリ内の個々の記憶位置はランダム以外の事前に定義された方法でアクセスされる。
【００２１】
本発明に従い、集積回路（ＩＣ）によって実装された方法がさらに提供され、ＩＣは、１つ以上のネットワーク層を有する人工ニューラルネットワーク（ＡＮＮ）に対するニューラルネットワーク計算を実行するためのＮＮプロセッサ内で使用するためのニューラルネットワーク（ＮＮ）処理要素回路を含み、本方法は、ＡＮＮ重みおよび入力データを乗じて、それから積を生成すること、その積および現在のコンテキストを合計して、更新されたコンテキストをそれから生成すること、更新されたコンテキストをローカルでその処理要素回路に専用のメモリに格納することを含み、ローカルメモリ内の個々の記憶位置はランダム以外の事前に定義された方法でアクセスされる。
【００２２】
本発明に従い、集積回路（ＩＣ）によって実装された方法も提供され、ＩＣは、１つ以上のネットワーク層を有する人工ニューラルネットワーク（ＡＮＮ）に対するニューラルネットワーク計算を実行するためのＮＮプロセッサ内で使用するためのニューラルネットワーク（ＮＮ）処理要素回路を含み、本方法は、第１のオペランド、第２のオペランド、および第３のオペランドを受信すること、処理要素回路の動作をタイムスロットに分割すること、第１のオペランド、第２のオペランド、および第３のオペランドを伴う計算を実行して更新されたデータ要素をそれから生成すること、そのデータ要素をローカルでその処理要素回路に専用のメモリに格納することを含み、ローカルメモリ内の個々の記憶位置はランダム以外の事前に定義された方法でアクセスされ、かつデータ要素は時分割されて、メモリ内の各位置は、異なる時における複数のデータ要素からの異なるデータ要素を表す。
【００２３】
本発明は、以下の例示的な実施形態で、図面を参照してさらに詳細に説明され、図中、同一または類似の要素は同じか、または類似の参照番号によって一部、示され得、様々な例示的実施形態の特徴は結合可能である。本発明は、添付の図面を参照して、ほんの一例として、本明細書で説明される。
【図面の簡単な説明】
【００２４】
【図１】本発明の１つ以上の部分を実装するように適合されたコンピュータ処理システム例を示すブロック図である。
【図２】第１の人工ニューラルネットワーク例を示す略図である。
【図３】ニューラルネットワーク処理システムのための多層抽象化例を示す略図である。
【図４】１つ以上のＮＮ処理コアを含むＳｏＣベースのＮＮ処理システム例を示すハイレベルブロック図である。
【図５】ＮＮ処理コア例をさらに詳細に示すハイレベルブロック図である。
【図６】第１の低レベル処理要素（ＰＥ）例をさらに詳細に示すブロック図である。
【図７Ａ】第２の低レベル処理要素（ＰＥ）例をさらに詳細に示すブロック図である。
【図７Ｂ】ＰＥのクワッド乗算器（ｑｕａｄ  ｍｕｌｔｉｐｌｉｅｒ）をさらに詳細に示すブロック図である。
【図８】第１のサブクラスタ例をさらに詳細に示すハイレベルブロック図である。
【図９】第２のサブクラスタ例をさらに詳細に示すハイレベルブロック図である。
【図１０】第１のクラスタ例をさらに詳細に示すハイレベルブロック図である。
【図１１】第２のクラスタ例をさらに詳細に示すハイレベルブロック図である。
【図１２】クラスタ間クロスコネクトをさらに詳細に示すハイレベルブロック図である。
【図１３】第１のメモリウィンドウイング方式例を示す略図である。
【図１４】第２のメモリウィンドウイング方式例を示す略図である。
【図１５】ウィンドウサイズおよびコンピュータアクセス構成可能性を含む計算要素とメモリ要素との間の第１のメモリアクセス可能性例を示す略図である。
【図１６】計算要素とメモリ要素との間の第２のメモリアクセス可能性例を示す略図である。
【図１７】分散／集約ベースの資源ウィンドウイング技術例を示す略図である。
【図１８】メモリ競合解決方式例を示すブロック図である。
【図１９】第１の層コントローラ例をさらに詳細に示すハイレベルブロック図である。
【図２０】Ｌ３メモリおよびサブクラスタに対する層コントローラインタフェースをさらに詳細に示すハイレベルブロック図である。
【図２１】第２の層コントローラ例をさらに詳細に示すハイレベルブロック図である。
【図２２】ＮＮプロセッサのコンパイラ／ＳＤＫ例を示すハイレベルブロック図である。
【図２３】ＮＮプロセッサおよび関連メモリの柔軟な処理粒度対待ち時間のトレードオフを示す略図である。
【図２４】本発明の第１のマルチＮＮプロセッサＳｏＣシステム例を示す略図である。
【図２５】本発明の第２のマルチＮＮプロセッサＳｏＣシステム例を示す略図である。
【図２６】本発明の第１のマルチＮＮプロセッサＳｏＣシステム例を示す略図である。
【図２７】本発明の第１のマルチＮＮプロセッサＳｏＣシステム例を示す略図である。
【図２８】図２の第１の人工ニューラルネットワーク例に対するマッピング方式例を示す略図である。
【図２９】第２の人工ニューラルネットワーク例を示す略図である。
【図３０】図２９のＡＮＮのマルチＮＮプロセッサＳｏＣシステム例を示す略図である。
【図３１】第３の人工ニューラルネットワーク例を示す略図である。
【図３２】図３１のＡＮＮの第１のマルチＮＮプロセッサＳｏＣシステム例を示す略図である。
【図３３】図３１のＡＮＮの第２のマルチＮＮプロセッサＳｏＣシステム例を示す略図である。
【発明を実施するための形態】
【００２５】
以下の詳細な説明では、本発明の完全な理解を提供するために多数の具体的詳細が説明される。しかし、本発明はこれら具体的詳細がなくても実施され得ることが当業者によって理解されよう。他の場合、周知の方法、手順、および構成要素は、本発明を曖昧にしないために詳細には説明されていない。
【００２６】
開示されていない利点および改善のうち、本発明の他の目的および利点は、付随の図面と併せて以下の説明から明らかになるであろう。本発明の詳細な実施形態が本明細書で開示されるが、開示される実施形態は、様々な形で具現化され得る本発明の例示に過ぎないことが理解される。加えて、本発明の様々な実施形態に関連して与えられる例の各々は、例示を意図しており、制限することは意図していない。
【００２７】
本発明と見なされる主題は、本明細書の最終部分で具体的に指摘されて明確にクレームされる。しかし、本発明は、構成および操作の方法の両方に関して、その目的、特徴、および利点と共に、添付の図面と併せて読む場合に、以下の詳細な説明を参照することにより最もよく理解され得る。
【００２８】
図面は本明細書の一部を構成して、本発明の例示的な実施形態ならびにそれらの様々な目的および特徴を含む。さらに、図面は必ずしも原寸に比例しておらず、いくつかの特徴は特定の構成要素の詳細を示すために誇張され得る。加えて、図面に示す任意の測定、仕様および同様のものは例示を意図しており、制限することは意図していない。それ故、本明細書で開示する特定の構造的および機能的詳細は制限として解釈されるべきではなく、本発明を様々に採用する当業者を教示するための代表的な基礎にすぎない。さらに、適切であると考えられる場合、参照番号は、対応するか、または類似した要素を示すために図面間で繰り返され得る。
【００２９】
本発明の例示する実施形態は大抵の場合、当業者に知られている電子部品および回路を使用して実装され得るので、本発明の基礎となる概念の理解および評価のため、ならびに本発明の教示を曖昧にしないか、または教示から逸れないために、詳細は、必要と考えられる程度を超えては説明されない。
【００３０】
一方法に対する本明細書での任意の言及は、変更すべきところは変更して、本方法を実行可能なシステムに当てはまるはずである。一システムに対する本明細書での任意の言及は、変更すべきところは変更して、本システムによって実行され得る方法に当てはまるはずである。
【００３１】
本明細書およびクレームを通して、以下の用語は、その内容について別段の明確な指示がない限り、本明細書で明示的に関連付けられた意味をとる。句「一実施形態では」、「一実施形態例では」、および「いくつかの実施形態では」は本明細書では、必ずしも同じ実施形態（複数可）に言及していないが、その可能性はあり得る。さらに、句「別の実施形態では」、「代替実施形態では」、および「いくつかの他の実施形態では」は本明細書では、必ずしも異なる実施形態（複数可）に言及していないが、その可能性はあり得る。従って、以下で説明するように、本発明の様々な実施形態は、本発明の範囲または趣旨から逸脱することなく、容易に組み合され得る。
【００３２】
加えて、本明細書では、用語「または」は包含的「論理和（ｏｒ）」演算子であり、その内容について別段の明確な指示がない限り、用語「および／または」と同等である。用語「〜に基づく」は排他的ではなく、その内容について別段の明確な指示がない限り、説明されていない追加の要因に基づくのを可能にする。追加として、本明細書を通して、「１つの（ａ）」、「１つの（ａｎ）」、および「その（ｔｈｅ）」の意味は複数の参照を含む。「〜内（ｉｎ）」の意味は、「〜内（ｉｎ）」および「〜上（ｏｎ）」を含む。
【００３３】
当業者によって理解されるように、本発明は、システム、方法、コンピュータプログラム製品またはそれらの任意の組合せとして具現化され得る。それに応じて、本発明は、完全にハードウェア実施形態、完全にソフトウェア実施形態（ファームウェア、常駐ソフトウェア、マイクロコードなどを含む）または本明細書で全て一般に「回路」、「モジュール」または「システム」と呼ばれ得るソフトウェアおよびハードウェア態様を組み合わせる実施形態の形を取り得る。さらに、本発明は、媒体内に具現化されたコンピュータ利用可能プログラムコードを有する任意の有形的表現媒体内に具現化されたコンピュータプログラム製品の形を取り得る。
【００３４】
本発明は、コンピュータによって実行される、プログラムモジュールなどの、コンピュータ実行可能命令の一般的コンテキストで説明され得る。一般に、プログラムモジュールは、特定のタスクを実行するか、または特定の抽象データ型を実装する、ルーチン、プログラム、オブジェクト、構成要素、データ構造などを含む。本発明は、通信ネットワークを通して結合されるリモート処理装置によってタスクが実行される分散コンピューティング環境でも実施され得る。分散コンピューティング環境では、プログラムモジュールは、メモリ記憶装置を含む、ローカルおよびリモート両方のコンピュータ記憶媒体内に配置され得る。
【００３５】
１つ以上のコンピュータ使用可能またはコンピュータ可読媒体（複数可）の任意の組合せが利用され得る。コンピュータ使用可能またはコンピュータ可読媒体は、例えば、電子、磁気、光、電磁、赤外線、もしくは半導体システム、機器、装置、または伝搬媒体であり得るが、それらに制限されない。コンピュータ可読媒体のもっと具体的な例（包括的でないリスト）は以下を含む、すなわち、１本以上のワイヤーを有する電気的接続、可搬型コンピュータディスケット、ハードディスク、ランダムアクセスメモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、消去可能プログラマブル読取り専用メモリ（ＥＰＲＯＭまたはフラッシュメモリ）、光ファイバ、可搬型読み取り専用コンパクトディスク（ＣＤＲＯＭ）、光学式記憶装置、インターネットもしくはイントラネットをサポートするような伝送媒体、または磁気記憶装置。プログラムは、例えば、紙または他の媒体の光学読み取りによって、電子的に捕捉でき、次いで、必要ならば、コンパイル、解釈、または適切な方法で処理され、その後、コンピュータメモリ内に格納できるので、コンピュータ使用可能またはコンピュータ可読媒体は、プログラムが印刷される紙または別の適切な媒体でさえあり得ることに留意されたい。本文書のコンテキストでは、コンピュータ使用可能またはコンピュータ可読媒体は、命令実行システム、機器、もしくは装置によって使用されるか、またはそれらと接続された、プログラムを含むか、または格納できる任意の媒体であり得る。
【００３６】
本発明の操作を実行するためのコンピュータプログラムコードは、Ｊａｖａ、Ｓｍａｌｌｔａｌｋ、Ｃ＋＋、Ｃ＃または同様のものなどの、オブジェクト指向プログラミング言語、「Ｃ」プログラミング言語などの、従来型の手続き型プログラミング言語、ならびにＰｒｏｌｏｇおよびＬｉｓｐなどの関数型言語、機械コード、アセンブラまたは任意の他の適切なプログラミング言語を含む、１つ以上のプログラミング言語の任意の組合せで書かれ得る。プログラムコードは、完全にユーザーのコンピュータ上で、一部ユーザーのコンピュータ上で、スタンドアロンソフトウェアパッケージとして、一部ユーザーのコンピュータ上でかつ一部リモートコンピュータ上で、または完全にリモートコンピュータもしくはサーバー上で実行され得る。後者のシナリオでは、リモートコンピュータは、例えば、ローカルエリアネットワーク（ＬＡＮ）もしくはワイドエリアネットワーク（ＷＡＮ）を含む、任意のタイプのネットワークプロトコルを使用して、任意のタイプのネットワークを通してユーザーのコンピュータに接続され得るか、または接続は外部コンピュータに対して（例えば、インターネットサービスプロバイダを使用してインターネットを通して）行われ得る。
【００３７】
本発明は、以下で、本発明の実施形態に従った方法、機器（システム）ならびにコンピュータプログラム製品の流れ図および／またはブロック図を参照して説明される。流れ図および／またはブロック図の各ブロック、ならびに流れ図および／またはブロック図内のブロックの組合せは、コンピュータプログラム命令によって実装またはサポートできることが理解されよう。これらのコンピュータプログラム命令は、マシンを作成するために、汎用コンピュータ、専用コンピュータ、または他のプログラマブルデータ処理装置のプロセッサに提供され得、それにより、コンピュータまたは他のプログラマブルデータ処理装置のプロセッサによって実行される命令は、流れ図および／またはブロック図のブロックもしくは複数のブロック内で指定された機能／動作を実装するための手段を作成する。
【００３８】
これらのコンピュータプログラム命令はまた、コンピュータまたは他のプログラマブルデータ処理装置に指示して特定の方法で機能させることができる、コンピュータ可読媒体に格納され得、それにより、コンピュータ可読媒体内に格納された命令は、流れ図および／またはブロック図のブロックもしくは複数のブロック内で指定された機能／動作を実装する命令手段を含む製品を生成する。
【００３９】
コンピュータプログラム命令はまた、一連の操作ステップをコンピュータまたは他のプログラマブルデータ処理装置上で実行させるためにコンピュータまたは他のプログラマブルデータ処理装置にロードされてコンピュータ実装プロセスを生成し得、それによりコンピュータまたは他のプログラマブルデータ処理装置上で実行する命令は、流れ図および／またはブロック図のブロックもしくは複数のブロック内で指定された機能／動作を実装するためのプロセスを提供する。
【００４０】
本発明は、多数の汎用もしくは専用コンピューティングシステム環境または構成で操作可能である。本発明での使用に適し得る周知のコンピューティングシステム、環境、および／または構成の例には、パーソナルコンピュータ、サーバーコンピュータ、クラウドコンピューティング、ハンドヘルドまたはラップトップ装置、マルチプロセッサシステム、マイクロプロセッサ、マイクロコントローラもしくはマイクロコンピュータベースシステム、セットトップボックス、プログラム可能な家庭用電化製品、ＡＳＩＣまたはＦＰＧＡコア、ＤＳＰコア、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、前述のシステムもしくは装置のいずれかを含む分散コンピューティング環境、および同様のものを含むが、それらに制限されない。
【００４１】
加えて、本発明は、オートメーション工場、自律走行車内、タブレットおよびスマートフォンなどのモバイル機器内で見られるような、ビデオおよびスチルカメラ、センサーなどを組み込んでいるシステム、送電網内に設置されたスマートメーターならびにロボットネットワーク用の制御システム内で動作可能である。一般に、エージェントをホストできる任意の計算装置が、本発明を実装するために使用できる。
【００４２】
本発明の１つ以上の部分を実装するように適合されたコンピュータ処理システム例を示すブロック図が図１に示されている。大まかに１０で参照される、本発明を実装するためのコンピュータ処理システム例は、汎用コンピューティング装置１１を含む。コンピューティング装置１１は、中央処理装置（ＣＰＵ）１２、ホスト／ＰＩＣ／キャッシュブリッジ２０および主メモリ２４を含む。
【００４３】
ＣＰＵ１２は、１つ以上の汎用ＣＰＵコア１４および任意選択として１つ以上の専用コア１６（例えば、ＤＳＰコア、浮動小数点、ＧＰＵ、およびニューラルネットワーク最適化コア）を含む。１つ以上の汎用コアは汎用演算コードを実行し、他方、専用コアはそれらの目的に特化した機能を実行する。ＣＰＵ１２は、ＣＰＵローカルバス１８を通してホスト／ＰＣＩ／キャッシュブリッジまたはチップセット２０に結合される。第２レベル（すなわち、Ｌ２）のキャッシュメモリ（図示せず）は、チップセット内のキャッシュコントローラに結合され得る。いくつかのプロセッサに対して、外部キャッシュはＬ１または第１レベルキャッシュを含み得る。ブリッジまたはチップセット２０は、メモリバス２０を介して主メモリ２４に結合する。主メモリは、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）もしくはＥＤＯ（ｅｘｔｅｎｄｅｄ  ｄａｔａ  ｏｕｔ）メモリ、またはＲＯＭ、スタティックＲＡＭ、フラッシュなどの他のタイプのメモリ、および不揮発性スタティックランダムアクセスメモリ（ＮＶＳＲＡＭ）、バブルメモリなどを含む。
【００４４】
コンピューティング装置１１は、システムバス２６（例えば、ＰＣＩ）を介してＣＰＵに結合された様々なシステム構成要素も含む。ホスト／ＰＣＩ／キャッシュブリッジまたはチップセット２０は、ＰＣＩ（ｐｅｒｉｐｈｅｒａｌ  ｃｏｍｐｏｎｅｎｔ  ｉｎｔｅｒｃｏｎｎｅｃｔ）バスなどの、システムバス２６に対してインタフェースする。システムバス２６は、様々なバスアーキテクチャのいずれか使用するいくつかのタイプの周知のバス構造のいずれかを含み得る。アーキテクチャ例は、業界標準アーキテクチャ（ＩＳＡ）バス、マイクロチャネルアーキテクチャ（ＭＣＡ）バス、拡張ＩＳＡ（ＥＩＳＡ）バス、ＶＥＳＡ（Ｖｉｄｅｏ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｓｔａｎｄａｒｄｓ  Ａｓｓｏｃｉａｔｅ）ローカルバスおよびメザニン（Ｍｅｚｚａｎｉｎｅ）バスとしても知られているＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）バスを含む。
【００４５】
システムバスに接続された様々な構成要素は、不揮発性メモリ（例えば、ディスクベースのデータ記憶）２８、ディスプレイ３２に接続されたビデオ／グラフィックスアダプタ３０、例えば、マウス３４、タブレット３５、マイクロホン３６、キーボード３８およびモデム４０などの１つ以上の入力装置に接続されたユーザー入力インタフェース（Ｉ／Ｆ）コントローラ３１、ネットワークインタフェースコントローラ４２、プリンタ５４およびスピーカ５６などの１つ以上の外部周辺機器に接続された周辺インターフェースコントローラ５２を含むが、それらに制限されない。ネットワークインタフェースコントローラ４２は、データ記憶４６、１つ以上のリモートアプリケーション５０を実行しているリモートコンピュータ４８などの、１つ以上の装置に、インターネットクラウド、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、ストレージエリアネットワーク（ＳＡＮ）などを含み得るネットワーク４４を介して結合される。小規模コンピュータシステムインタフェース（ＳＣＳＩ）アダプタ（図示せず）も、システムバスに結合され得る。ＳＣＳＩアダプタは、ＣＤ−ＲＯＭドライブ、テープドライブなどの様々なＳＣＳＩ装置に結合できる。
【００４６】
不揮発性メモリ２８は、様々な取り外し可能／固定型の、揮発性／不揮発性コンピュータ記憶媒体を含み得、例えば、固定型の不揮発性磁気媒体から読み取るか、またはそれに書き込むハードディスクドライブ、取り外し可能な不揮発性磁気ディスクから読み取るか、またはそれに書き込む磁気ディスクドライブ、ＣＤ  ＲＯＭもしくは他の光媒体などの取り外し可能な不揮発性光ディスクから読み取るか、またはそれに書き込む光ディスクドライブなどである。例示的な動作環境で使用できる他の取り外し可能／固定型の、揮発性／不揮発性コンピュータ記憶媒体は、磁気テープカセット、フラッシュメモリカード、デジタル多用途ディスク、デジタルビデオテープ、ソリッドステートＲＡＭ、ソリッドステートＲＯＭ、および同様のものを含むが、それらに制限されない。
【００４７】
ユーザーは、ユーザー入力インタフェース３１に接続された入力装置を通して、コマンドおよび情報をコンピュータに入力し得る。入力装置の例は、キーボードおよびポインティングディバイス、マウス、トラックボールまたはタッチパッドを含む。他の入力装置は、マイクロホン、ジョイスティック、ゲームパッド、衛星放送受信アンテナ、スキャナなどを含み得る。
【００４８】
コンピュータ１１は、リモートコンピュータ４８などの、１つ以上のリモートコンピュータへの接続を介して、ネットワーク化環境内で動作し得る。リモートコンピュータは、パーソナルコンピュータ（ＰＣ）、サーバー、ルーター、ネットワークＰＣ、ピア装置（ｐｅｅｒ  ｄｅｖｉｃｅ）または他の一般的なネットワークノードを含み得、典型的には、上で説明した要素の多数または全部を含む。かかるネットワーキング環境は、オフィス、企業規模のコンピュータネットワーク、イントラネットおよびインターネット内で一般的である。
【００４９】
ＬＡＮネットワーキング環境内で使用される場合、コンピュータ１１は、ネットワークインタフェース４２を介してＬＡＮ４４に接続される。ＷＡＮネットワーキング環境内で使用される場合、コンピュータ１１は、インターネットなどの、ＷＡＮを通して通信を確立するために、モデム４０または他の手段を含む。内部または外部であり得る、モデム４０は、ユーザー入力インタフェース３１、または他の適切な機構によって、システムバス２６に接続される。
【００５０】
大まかに１０で参照される、コンピューティングシステム環境は、適切なコンピューティング環境の例であり、本発明の使用または機能の範囲に関していかなる制限も示唆することを意図しない。また、コンピューティング環境は、例示的な動作環境で示される構成要素の任意の１つまたは組合せに関して、依存関係または要件を有すると解釈されるべきでもない。
【００５１】
一実施形態では、本発明のシステムおよび方法を実装するように適合されたソフトウェアはクラウド内にも常駐できる。クラウドコンピューティングは、サービスを配信するシステムの物理的な位置および構成をエンドユーザーが知る必要のない、計算、ソフトウェア、データアクセスおよびストレージサービスを提供する。クラウドコンピューティングは、任意の申込みベースまたはペイパーユース方式のサービスを包含し、典型的には、動的に拡張可能で、多くの場合仮想化された資源の提供を伴う。クラウドコンピューティングプロバイダは、インターネットを介してアプリケーションを配信し、それはウェブブラウザからアクセスでき、他方、ビジネスソフトウェアおよびデータは、リモート位置におけるサーバー上に格納される。
【００５２】
別の実施形態では、本発明のシステムおよび方法を実装するように適合されたソフトウェアはコンピュータ可読媒体上に常駐するように適合される。コンピュータ可読媒体は、コンピュータによってアクセスでき、コンピュータによる後の読取りのために、本発明の方法を実装するコンピュータプログラムを格納可能な任意の利用可能な媒体であり得る。コンピュータ可読媒体は、揮発性および不揮発性媒体、取り外し可能および固定型媒体の両方を含む。限定ではなく例として、コンピュータ可読媒体は、コンピュータ記憶媒体および通信媒体を含み得る。コンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュールまたは他のデータなどの、情報格納のための任意の方法または技術で実装された揮発性および不揮発性、取り外し可能および固定型の媒体を含む。コンピュータ記憶媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリもしくは他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）もしくは他の光ディスク記憶、磁気カセット、磁気テープ、磁気ディスク記憶もしくは他の磁気記憶装置、または所望の情報を格納するために使用でき、コンピュータによってアクセスできる、任意の他の媒体を含むが、それらに制限されない。通信媒体は典型的には、コンピュータ可読命令、データ構造、プログラムモジュールまたはディスクドライブユニット内の磁気ディスクなどの他のデータを具現化する。本発明のシステムおよび方法を実装するように適合されたソフトウェアは、全部または一部において、スタティックもしくはダイナミック主メモリ内、またはコンピュータシステムのプロセッサ内のファームウェア内（すなわち、マイクロコントローラ、マイクロプロセッサまたはマイクロコンピュータ内部メモリ内）にも常駐し得る。
【００５３】
本発明のシステムおよび方法を実装するために他のデジタルコンピュータシステム構成も採用でき、特定のシステム構成が本発明のシステムおよび方法を実装可能な限度において、それは、図１の代表的なデジタルコンピュータシステムと同等であり、本発明の趣旨および範囲内である。
【００５４】
一旦、それらが、本発明のシステムおよび方法を実装するプログラムソフトウェアからの命令に従って特定の機能を実行するようにプログラムされると、かかるデジタルコンピュータシステムは事実上、本発明の方法に対応する専用コンピュータになる。このために必要な技術はコンピュータシステムの当業者に周知である。
【００５５】
本発明のシステムおよび方法を実装するコンピュータプログラムは一般に、フロッピィディスク、ＣＤＲＯＭ、ＤＶＤ、フラッシュメモリ、携帯型ハードディスクドライブなどの配布媒体上でユーザーに配信されることに留意されたい。そこから、それらは多くの場合、ハードディスクまたは類似の中間記憶媒体にコピーされる。プログラムが実行される場合、それらは、それらの配布媒体またはそれらの中間記憶媒体のいずれかから、コンピュータの実行メモリにロードされ、本発明の方法に従って動作するようにコンピュータを構成する。これらの操作全ては、コンピュータシステムの当業者に周知である。
【００５６】
図面の流れ図およびブロック図は、本発明の様々な実施形態に従ったシステム、方法およびコンピュータプログラム製品の考えられる実施態様のアーキテクチャ、機能および操作を示す。これに関して、流れ図またはブロック図内の各ブロックは、コードのモジュール、セグメント、または部分を表し得、それは、指定された論理関数（複数可）を実装するための１つ以上の実行可能命令を含む。いくつかの代替実施態様では、ブロック内に記された機能は、図面に記された順序を外れて生じ得ることにも留意すべきである。例えば、連続して示されている２つのブロックは、実際には、実質的に同時に実行され得るか、またはブロックは時々、関与する機能に応じて、逆順で実行され得る。ブロック図および／または流れ図の各ブロック、ならびにブロック図および／または流れ図内のブロックの組合せは、指定された機能もしくは動作を実行する専用ハードウェアベースのシステムによって、または専用ハードウェアおよびコンピュータ命令の組合せによって、実装できることにも留意されたい。
【００５７】
ニューラルネットワーク（ＮＮ）処理コア
ＡＮＮは本質的に、非常に高いレベルにおいて、入力空間と出力空間との間をマッピングする、多数のパラメータをもつ関数である。従って、ＡＮＮは、一連の計算と見なすことができる。しかし、ＡＮＮは、ある内部構造およびプロパティのセットを有する。この独特の構造を考慮すると、ニューラルネットワーク（ＮＮ）プロセッサは、同じか、または同様の数学的操作を実行する複数の基本計算ユニットを含み、それらは統合されると、ニューラルネットワークを構成する。
【００５８】
本明細書では、ネットワークを一意的に記述するために次の表記法が使用される：
【数１】
2020515989.tif 000003
式中、Ｘ＜Ｓ＞は、ある構造Ｓによって特性化された、入力データセットを表し、
Ｙ＜Ｔ＞は、Ｔによって示される形式をもつ出力データセットを表し、
Ｍ＜Ｗ＞は、パラメータまたは重み（Ｗ）のセットを所与として、入力を出力にマッピングする関数である、ＡＮＮモデルを表す。
【００５９】
人工ニューラルネットワーク例を図解する略図が図２に示されている。大まかに３５０で参照される、ＡＮＮ例は、ネットワーク層１〜４を含む、４つのネットワーク層３５２を含む。各ネットワーク層は複数のニューロン３５４を含む。入力Ｘ１〜Ｘ１４はネットワーク層１に対する入力である。重み３５８がネットワーク層内の各ニューロンの入力に適用される。最終出力３５９、出力１〜３が生成されるまで、１つのネットワーク層の出力が次のネットワーク層に対する入力を形成する。
【００６０】
一実施形態では、本発明のアーキテクチャは、人工ニューラルネットワークの計算ニーズに最大限応える多層アーキテクチャ（すなわち、ＡＮＮ層とは呼ばれない）を含む。多層という用語は、抽象化の様々なレベルにおける全体的なソリューションを記述するネットワーキングに対する周知のＩＳＯ  ＯＳＩ層モデルのそれと類似したアプローチを指す。
【００６１】
ニューラルネットワーク処理システムのための多層抽象化例を図解する略図が図３に示されている。大まかに４１０で参照される、ニューラルネットワーク処理のための等価モデルは：様々なユニットを構成する物理プリミティブ（ｐｈｙｓｉｃａｌ  ｐｒｉｍｉｔｉｖｅ）を含む層１（物理４１２）、ニューラルネットワークの基礎となる基本計算ユニットを含む層２（ユニット４１４）、ネットワーク接続を提供する相互接続ファブリックを含む層３（相互接続４１６）、ネットワークレベルフロー制御、モニタリングおよび診断を提供する層４（管理４１８）、アプリケーション層インタフェースを提供してアーキテクチャプリミティブにマッピングする層５（インタフェース４２０）、ならびにニューラルネットワークベースのアプリケーションを含む層６（アプリケーション４２２）を含む、６つの層を含む。
【００６２】
１つ以上のＮＮ処理コアを含むシステムオンチップ（ＳｏＣ）ＮＮ処理システム例を図解するハイレベルブロック図が図４に示されている。大まかに１００で参照される、ＳｏＣ  ＮＮ処理システムは、任意選択として１つ以上の適切なチップ間インタフェースを介して１つ以上の追加の内部もしくは外部ＮＮプロセッサ１０４に結合された少なくとも１つＮＮプロセッサ集積回路（またはコア）１０２、ＮＮプロセッサをチップ要素１０８上の様々なシステムに結合するように適合されたバスファブリック１０６、マイクロコントローラユニット（ＭＣＵ）サブシステム１１８、および１つ以上のインタフェース１２６を含む。
【００６３】
一実施形態では、ＳｏＣ１０８はブートストラップ回路ブロック１１０、デバッグ回路ブロック１１２、電力回路ブロック１１４、およびクロック回路ブロック１１６を含む。ＭＣＵサブシステム１１８は、コントローラ回路ブロック１２０、命令メモリ１２２、およびデータメモリ１２４を含む。インタフェース１２６はピンマルチプレクサ１３９、ならびにカメラシリアルインターフェース（ＣＳＩ）１２８、ディスプレイシリアルインタフェース（ＤＳＩ）、イーサネット１３２、ユニバーサルシリアルバス（ＵＳＢ）１３４、Ｉ２Ｃ（ｉｎｔｅｒ−ｉｎｔｅｇｒａｔｅｄ  ｃｉｒｃｕｉｔ）インタフェース１３６、シリアル周辺機器インタフェース（ＳＰＩ）１３７、およびコントローラエリアネットワーク（ＣＡＮ）インタフェース１３８を含む１つ以上の周知のインタフェースを含む。異なるインタフェースの任意の組合せが実装され得るので、これらのインタフェースは一例として示されていることに留意されたい。
【００６４】
ＮＮ処理コア例をより詳細に図解するハイレベルブロック図が図５に示されている。ＮＮ処理エンジンまたはコア６０は、いくつかの階層的計算ユニットを含む。最も低い階層レベルは、個々のニューロンがその中で実装されるそれ自身の専用内部層１またはＬ１メモリ７８をもつ処理要素（ＰＥ）７６である。複数のＮ個のＰＥ７６は専用層２またはＬ２メモリ７４と共に、サブクラスタ７０と命名された次の階層レベルを構成する。複数のＭ個のサブクラスタ７０は、専用層３またはＬ３メモリ７２、複数の活性化関数回路８０、および複数の層コントローラ（ＬＣ）回路８２と共に、クラスタ６６を構成する。複数のＬ個のクラスタは専用層４またはＬ４メモリ６４と共にＮＮプロセッサコア６０内にあり、それは、ＮＮマネージャ回路６２、およびオフチップ層５またはＬ５メモリ９８へのメモリインタフェース６８も含む。複数のバスインタフェース８６（すなわち、チップ間インタフェース）は、追加のネットワーク容量のために、ＮＮプロセッサを他のオフチップＮＮプロセッサチップに結合する。バスインタフェース８４（すなわち、チップ間インタフェース）は、ＮＮプロセッサを、ＣＰＵ９０、命令メモリ９２およびデータメモリ９４を含む従来型のルールベースマシン（ＲＢＭ）コプロセッサ８８に結合する。代替実施形態では、ＲＢＭコプロセッサは任意選択として、適切なインタフェース、例えば、ＧＰＵ、Ｉ２Ｃなどを介して、ＮＮ装置６０に結合される。
【００６５】
ＮＮプロセッサ実施形態例では、ＰＥはＰ＝１６ニューロンを含み、サブクラスタはＮ＝６４のＰＥを含み、クラスタはＭ＝６４のサブクラスタを含み、ＮＮコアはＬ＝８のクラスタを含むことに留意されたい。任意の所望の数の階層レベルおよび任意の数の計算ユニットを各レベル内に有するＮＮプロセッサが実装され得、例示目的のみで提供される本明細書で説明する例に制限されないことが理解される。加えて、任意の数の活性化関数８０および層コントローラ８２が、ＮＮプロセッサの設計目標および特定の実施態様に応じて、クラスタレベル内または任意の他のレベル内で実装され得る。
【００６６】
一実施形態では、ＮＮマネージャ６２は、２つのデータパイプ：１つの並列および１つの直列を、ネットワークファブリックを駆動するための関数と共に制御する、専用プロセッサである。このプロセッサは、ニューラルネットワークの制御プレーンに固有の専用操作を実行する。操作例には、推論（Ｉｎｆｅｒ）、訓練（Ｔｒａｉｎ）、重みのロード（Ｌｏａｄ  ｗｅｉｇｈｔｓ）、および重みの更新（Ｕｐｄａｔｅ  ｗｅｉｇｈｔｓ）を含むが、それらに制限されない。負荷分散および資源割当ては、外部ソフトウェアツールチェーンによって処理され、それは、これらのタスクに対処する、コンパイラ、マッパー、およびアロケータを含むツールのセットを含む。
【００６７】
一実施形態では、ＮＮプロセッサは、重みの格納のための共有メモリを含み、専用メモリ要素はコンテキストの格納用で、それにより比較的高いデータ処理帯域幅を可能にする。加えて、ＮＮプロセッサは、厳密に相互に分離されて、計算要素に対して帯域外制御を提供する、データおよび制御プレーンを含む。その上、ＮＮプロセッサは、集約レベル間に構成可能な相互接続を含み、ダイナミックでプログラム可能なデータパイプラインをもたらす。
【００６８】
別の実施形態では、ＮＮプロセッサは、複数のＡＮＮを並列接続で実装することが可能であり、各ＡＮＮは１つ以上のネットワーク層を有する。ＮＮプロセッサは、ＡＮＮと関連付けられた１つ以上の入力データストリームを同時に処理するように適合される。ＮＮ装置のアーキテクチャはＡＮＮの構造に似ているので、複数のＡＮＮは、単一の幅広いＡＮＮと見なすことができる。複数のＡＮＮを配備する場合、十分な資源を所与として、外部ツールチェーン内のマッパーは利用可能な資源をマッピングするように動作し、他方、ＮＮマネージャは事象トリガーを制御することに留意されたい。この場合、装置の膨大な並列性（ｐａｒａｌｌｅｌｉｓｍ）に起因して、ＡＮＮの「層」内に分類された資源の各セットは相互に独立している。
【００６９】
加えて、ＮＮプロセッサの計算要素は入力データストリームのサブセットの任意の所望の粒度で機能するように動作し、それにより、以下でさらに詳細に説明するように、メモリ要素使用と待ち時間との間でトレードオフする。
【００７０】
本発明のＮＮプロセッサはその実装においていくつかの設計原理を使用し、それは、（１）システム資源のジャストインタイム使用、（２）必要毎のシステム資源の動的割当て、（３）利用および効率を最適化するために時間領域および空間領域の両方の活用、ならびに（４）利用可能なシステム資源にわたる平衡負荷を含む。
【００７１】
本発明はＡＮＮを実装するのに良く適していることに留意されたい。典型的には、ＡＮＮは、３つの段階：モデリング、訓練、および推論で実装され、その３つの全てが本発明のＮＮプロセッサによってある程度、対処される。
【００７２】
モデリングに関して、ＮＮプロセッサは、モデル表現を静的および動的に変更することができ、従って、その柔軟な本質を反映する。「プロセッサ」表記は「アクセラレータ」に対立するものとして使用されるが、これは、後者は典型的には事前に定義されたセットの操作を先験的に実行するように適合されるためである。訓練に関して、ＮＮプロセッサは、訓練手順の実装を可能にするオンザフライで補完的な訓練操作をサポートする。これは、（１）ネットワークを通して行きつ戻りつ実行すること（逆伝播）、（２）ドロップアウトを動的に適用すること、ならびに（３）層性能および不良挙動（ｉｌｌ  ｂｅｈａｖｉｏｒ）検出のオンザフライ評価を含む。推論モード中、ＡＮＮは、最適かつ効率的に実行されて、新しい入力に適用される。
【００７３】
本発明のＮＮプロセッサは、一緒に組み合わせて、極めて高い計算速度、小さいチップフットプリント、低電力消費、拡張性、プログラム可能性、および多くのタイプのニューラルネットワークを取り扱う柔軟性を提供するために、いくつかの特徴を組み合わせる。
【００７４】
第１の特徴は、本明細書で開示するシステム例で説明されるＰＥ、サブクラスタ、クラスタ、ＮＮコアなど、様々な集約レベルまたは階層レベルに編成される計算ユニットによって提供される計算ファブリック（または計算能力）を含む。計算ファブリックは、ＡＮＮの計算ニーズの特別な本質に対処するように構成される基本計算要素を含む。計算ファブリックのいくつかの特徴は、（１）無駄のない回路アーキテクチャ、それにより比較的多数の物理実体が実装されるのを可能にする、（２）一度に多数の乗算および累算演算、加算は累算として実行される、（３）数表現の柔軟性、整数および浮動小数点ならびに異なるビット幅を含む、（４）より高分解能計算を可能にするクワッド乗算器サポート、ならびに（５）メモリ帯域幅を最適化する能力を提供するためのＮウェイＡＬＵサポート、すなわち、ｙ←ｙ＋ｗ＊ｘなどのサイクル毎に単一演算を実行する代わりに、ｙ←ｙ＋ｗ１＊ｘ１＋ｗ２＊ｘ２などのもっと複雑な演算が実装でき、それはシリコンの複雑さの増大と必要なメモリアクセスの低減との間のトレードオフを反映する、を含む。
【００７５】
第２の特徴は、制御プレーン、ならびに制御の集約およびデータファブリック（すなわち、データプレーン）全体の非常に「無駄がない（ｌｅａｎ）」かまたは「スリムな」制御を可能にする制御ファブリックのデータファブリックからの完全な分離である。制御プレーンは、データプレーンから分離され、従ってそれは、多数の計算ユニットが比較的少数の制御線を使用して、例えば、いくつかの場合には単一の制御線によって、制御されるという意味において集約できる。例えば、ＰＥ内の乗算回路を考えると、単一の制御信号が数千のＰＥ内での乗算演算を同時に開始する。さらに、制御プレーンのプログラム可能性は、データプレーンのプログラム可能性から分離される。ＮＮコアのデータファブリックの大規模な並列性が制御プレーンの無駄のない構造によって適合される。
【００７６】
これは、制御信号が、いくつかの計算要素による制御信号の複製を必要とするデータにごく近接して適用される帯域内制御の典型的な従来技術アプローチとは対照的である。さらに、帯域外制御は、フォンノイマンマシンベースの技術ではないので、従来型のマイクロコントローラベース技術とは対照的である。
【００７７】
制御およびデータファブリックを分離する別の利点は、制御はプログラム可能なままであることである。制御ファブリックの非剛性実装および計算ユニット（すなわち、ＰＥ、サブクラスタ、クラスタなど）の一般的性質は、ＮＮコアが多数のタイプのＡＮＮ、例えば、畳込みＮＮ（ＣＮＮ）、リカレントＮＮ（ＲＮＮ）、ディープＮＮ（ＤＮＮ）、ＭＬＰなど、ならびに畳込みモードで実装される前述および微妙な組合せのもっと複雑な実装および各々の特性、例えば、刻み幅（ｓｔｒｉｄｅ）、パディングなど、を取り扱うのを可能にする。
【００７８】
第３の特徴は、メモリウィンドウイングを含むメモリファブリックの構造である。メモリのローカル化および階層構造に加えて、メモリに対する高帯域幅アクセスが多数の計算ユニットに並行して提供される。これは、特定の計算ユニットのためのアクセスをメモリのごく一部だけに狭めることによって達成される。従って、メモリ全体に対する完全なランダムアクセスは提供されない。むしろ、メモリの比較的小さい窓へのアクセスだけが提供される。これは、数千の計算ユニットにわたる同時アクセスを可能にし、従って、帯域幅とランダムなアクセス可能性との間のトレードオフを表す。単一の計算ユニットのメモリアクセスパターンがＡＮＮによって構造化されてうまく定義されていて、メモリ全体に対する完全なランダムアクセスを必要としないので、アクセスは、その特定の計算ユニットに対して必要なわずかなメモリブロックにだけ「窓をかける」ことができる。従って、極めて高いメモリ帯域幅が達成され、それにより数千の計算ユニットが、その計算ユニットに「ローカルな」メモリだけにアクセスすることとのトレードオフで、並行して同時にメモリにアクセスできる。
【００７９】
一実施形態では、ＮＮプロセッサのアーキテクチャは、制御プレーンおよびデータプレーン（または制御ファブリックおよびデータファブリック）を含む。制御プレーンは、ＮＮプロセッサ内の全てのデータ計算ユニットの構成および制御に対して責任を負う。それは、一実施形態では、ニューラルネットワーク操作に対して調整されたマイクロコードを組み込んでいる、データフローマシンまたはプロセッサを含む。本明細書で説明するＮＮプロセッサ例では、制御プレーンは、集約の次の層、すなわち、サブクラスタ７０、に対するアグリゲータ（ａｇｇｒｅｇａｔｏｒ）として機能するクラスタ実体６６を制御する。サブクラスタは、同様に、最も基本的なユニット、すなわち、乗算および累算（ＭＡＣ）回路ならびにローカルメモリから成る処理要素（ＰＥ）７６を含む。それは、典型的なニューラルネットワーク内で見られるニューロン実体のセットを含むＰＥ階層レベルである。
【００８０】
ＮＮプロセッサ内でＡＮＮを実装する重要な態様は全ての計算要素の制御および相互接続である。ＡＮＮ内の膨大な数の計算要素が本発明によって活用される。装置制御ファブリックの１つの特徴は、それは計算資源の大規模なセットの間で共有されるので、比較的非常に無駄がないことである。一実施形態では、ＮＮプロセッサは、（１）データと制御との間の厳密な分離、制御信号通知は帯域外で実行されて、データ駆動型メモリアクセスを含まない、（２）制御と付加された計算資源との間の動的なマッピング、ならびに（３）制御ファブリックの柔軟性およびプログラム可能性（すなわち、コンパイル時における）を特徴とする。加えて、ＮＮプロセッサは、計算要素、メモリなどの制御信号通知に対する完全なアクセス可能性を可能にするマイクロコードマシンを組み込んでいる層コントローラを含む。
【００８１】
データ駆動型メモリアクセスは、データパイプラインを通って流れるデータの観測を伴うアクセスを意味することに留意されたい。ＮＮプロセッサは、これを必要としない。ルールの本質はデータ依存であり、従って、制御はデータと結び付けられる必要があるので、データ駆動型メモリアクセスは、ルールベースマシンにおいて一般的であることに留意されたい。例えば、文：ｉｆ（ｘ＞ｓｏｍｅ＿ｖａｌｕｅ）ｔｈｅｎ  ｄｏ  Ａ（（ｘ＞何らかの値）の場合、Ａを行う）を考える。これは、全ての入力「ｘ」を観測する必要を暗示する。それにひきかえ、多くの入力を閾値と比較し得るマシンを考える。この場合におけるマイクロコードは、比較器の膨大なセットを作動させる操作をトリガーする必要があるだけである。しかし、かかるアプローチは、ハードワイヤーされる必要がある膨大な数の操作を暗示し、マシンがプログラミングされる可能性を否定してしまうので、ＲＢＭでとることはできない。
【００８２】
それに対して、ＮＮプロセッサは、非常に制限されたセットの操作を使用してデータに作用する。処理フローの本質は、データの値を伴わない。従って、制御を集約して、計算要素の膨大なセットを比較的少数の制御信号で駆動することが可能である。例えば、ＮＮ装置では、６４制御信号の制御バスが数千の計算ユニットを制御するために必要である。
【００８３】
一実施形態では、ＮＮプロセッサは、以下でさらに詳細に説明されるように、機能が、それが必要とされる集約のいくつかの点において提供されるように実装される。加えて、ＮＮプロセッサは、システムが最大限の利用を達成するのを確実にするために、計算およびメモリ資源に関して、実質的にバランスが取られるように構成される。
【００８４】
ＮＮプロセッサの容量が特定のニューラルネットワークに対して不十分である場合、バスインタフェース８６は、単一プロセッサの制限を超えて拡大するために、追加のＮＮプロセッサ９６の相互接続を提供する。
【００８５】
一実施形態では、ＲＢＭコプロセッササブシステム８８は、ＮＮプロセッサによってサポートされない１つ以上のプリミティブをサポートするように構成される。加えて、コプロセッサは、ＡＮＮから抽出されてＲＢＭに割り当てられたタスクを交換するように機能する。
【００８６】
ＮＮプロセッサは本質的にデータフローマシンとして動作して、計算はデータの利用可能性のみに基づいて実行されることを意味する。データフローは層間で分割されて、それはＡＮＮにおける層に類似する。層内部の計算ユニットは同期して動作して、データが層の入力において準備できていれば開始し、それらが新しいデータを必要とし、かつ／または結果を次の層に渡す必要があると終了して、その時点でその層の状態マシンが以前および／または次の層の状態マシンと同期される。
【００８７】
一例として、２つの全結合層をもつＭＬＰネットワークは、（１）コアの外部から入力を受信する１つの層、（２）ニューラルネットワーク層を表す２つの層、および（３）結果をコアの外部に送信する１つの層、としてマッピングできる。
【００８８】
一実施形態では、入力層は、それが全ての入力（例えば、周知のＭＮＩＳＴデータセットに対する７８４の入力）を受信するまで待機し、次いで、その入力が準備できていることを層１に信号通知する。層１は次いで、全ての必要な乗算および累算（ＭＡＣ）演算、活性化関数を実行して、最後に層２に信号通知し、それは同様に、同じステップを繰り返す。層２が終了すると、それは出力層に信号通知して結果をＮＮコアの外部に送信する。
【００８９】
別の実施形態では、同じネットワークを考えると、ＮＮコアは、入力データのさらに少ない一部について、層１内でＭＡＣを開始し、従って、層１内の状態マシンの複雑性および信号通知中の考えられる計算効率の損失を犠牲にして、入力層と層１との間で必要なバッファリングを削減する。
【００９０】
ＮＮコア内のクラスタ６６の内部で、データは共有Ｌ３メモリ７２を通して渡され、他方、信号通知は、以下でさらに詳細に説明される、専用相互接続３７４（図１５）を通して実行される。一実施形態では、ＡＸＩ４−ストリームプロトコルがクラスタ間で使用され、それは、データおよび制御プレーンの両方を取り扱う。機能停止を防ぐために、層間の相互接続はデュアルバッファ機構を提供し、そのため、第２の層が以前の出力をその入力として第２のバッファからの読み取ると、１つの層はその出力を１つのバッファに書き込む。
【００９１】
一実施形態では、データフローアーキテクチャをニューラルネットワークにおける基本操作の比較的制限されたセットと共に使用すると、制御分散の要件における著しい削減を可能にする。
【００９２】
第１に、一旦、ネットワークモデルが定義され、従って、先験的な狭帯域インタフェースを介してロードできると、実行されている計算に関する情報の多くは静的に知られており、その結果として、計算中に必要な制御線の数が削減される。結果は、層を実装する「カーネル」のためのコードが、ネットワークモデル毎に一定である準静的な構成と、計算を通して変化する動的命令との間で分割されることである。
【００９３】
第２に、各動的な「命令」は、層内の全ての計算要素に各サイクル内で何をすべきかを指示する複数の命令を実際に含む。各計算要素は比較的単純な機能を有しているので、基本命令自体は比較的単純である。サイクルを無駄にするのを回避するために、繰返し（すなわち、ループ）およびジャンプ命令が帯域外で提供される。
【００９４】
第３に、メモリ内のパラメータの適切な配置と組み合わされた計算の静的順序は、メモリに対する順次アクセスを可能にする。それ故、完全なアドレス指定ではなく、メモリにアクセスするためのアドレスインクリメント命令だけが必要である。
【００９５】
第４に、マイクロコードは非常にコンパクトであるので、プリフェッチ、分岐予測などを必要とせずに、オンチップＳＲＡＭ内に常駐できる。
【００９６】
第５に、層は多くの処理要素（ＰＥ）を含むが、１つの中央状態マシンだけが、層全体に対する計算のステップを、サブ状態だけを格納するさらに小さいスレーブ状態マシンと共に制御する必要があり、それらの各々は複数のＰＥを制御する。一実施形態では、グローバルイネーブルビットが、全ての状態マシンの実行の開始し、グローバル同期リセット信号がそれらを初期状態に戻す。リセットは、構成メモリには影響を及ぼさず、制御プレーンとしてのデータメモリは無効なデータが使用されないことを確実にすることに留意されたい。
【００９７】
用語「モデル」は、ＮＮコア内の全ての計算ユニットの動的な挙動を定義する準静的な構成を記述するために使用されることに留意されたい。モデルは典型的にはＡＮＮモデルに類似しているが、デバッグ目的のためにロードされるモデル、または重みをメモリにロードするためのモデルなど、他のタイプのモデルがあり得る。
【００９８】
構成空間がメモリのようなインタフェース内に露出され、そこでモジュールが階層アドレス空間を使用してアドレス指定される。重みのロードは、通常、モデルの構成前に実行され、重みを関連メモリブロックにコピーしてイネーブルビットを設定する制御信号通知を構成することによって達成される。クラスタが無効にされている間に推論モデルが次いでロードされ、制御がリセットされて最終的にクラスタが有効にされる。
【００９９】
メモリ階層
一実施形態では、ＮＮプロセッサのメモリファブリックはＡＮＮの固有の性質に対処するように設計される。従って、メモリは、様々なメモリコンシューマの必要性に対処するために階層的に構成される。これらのコンシューマには、（１）層間データ（すなわち、交差層入力／出力）、（２）層内情報（すなわち、コンテキストまたは中間結果）、および（３）重み、を含む。様々なメモリ層（例えば、本明細書で開示する実施形態例では５）は、より小さく、効率的で、よりローカル化されたメモリから、もっと大きくて、あまり効率的でない、グローバルメモリに進む。
【０１００】
一実施形態では、メモリファブリックは、次を利用して編成および構築される、すなわち（１）メモリのローカル化、計算要素は、任意の所与の計算要素の事前に定義されて限定されたメモリ実体に対するアクセス可能性を許可するローカルデータへのアクセスを要求する、（２）構造化編成、それによりメモリ内容が所与の一貫した方法で先験的に編成される、（３）限定されたリコールの性質（すなわち、一度だけ読み取る）、ほとんどのデータが本来、揮発性であり、一度処理されると完全に消費されて、それにさらにアクセスする必要はわずかであるか、または必要はない、および（４）パイプライン化動作、１つの計算要素の出力データが別の計算要素への入力データとして働く。
【０１０１】
前述のように、各階層レベルはそれ自体のローカルメモリを含む。ＰＥはＬ１メモリを含み、サブクラスタはＬ２メモリを含み、クラスタはＬ３メモリを含み、ＮＮコアはＬ４メモリを含み、Ｌ５メモリは外部的にオフ−ＳｏＣに配置される。メモリ階層例が以下の表１に提示される。
【表１】
2020515989.tif 000004
【０１０２】
表中、Ｎはサブクラスタ内の処理要素の数を表し、Ｍはクラスタ内のサブクラスタの数であり、ＬはＮＮ処理装置内のクラスタの数である。各メモリレベルＬ１〜Ｌ５に対して示されているサイズは例示目的に過ぎないことに留意されたい。様々なメモリ層に対する任意の所望のメモリサイズは本発明の範囲から逸脱することなく実装され得ることが理解される。
【０１０３】
下位メモリ層、例えば、ＰＥ内のＬ１は、より小さいサイズであるが、より大きな帯域幅を保持することに留意されたい。上位メモリ層、例えば、ＮＮコア内のＬ４は、ずっと大きなサイズにされるが、はるかに少ないトラフィックを保持する。
【０１０４】
本発明によれば、メモリ全体と計算要素との間に完全なメッシュアクセスを提供するのを回避するために、ＡＮＮにおけるメモリ使用のローカル化特質を利用しながら、可能な限り多くのメモリが、それが必要とされる場所に可能な限り近接して保持される。前述の方式によって課される制限を克服するために、コンシューマへのメモリの割当ては「漸進的な（ｇｒａｄｕａｌ）」方法で行われ、それにより特定の役割をもつメモリの各レベルは、より高位レベルがより多くの資源を必要とするので、より高位レベルによって補完され、より高次レベルのメモリは、異なる要件を有するＡＮＮ内の複数の層の間での「資源負荷分散」のために使用される。
【０１０５】
一実施形態では、一旦、モデルが選択されると、資源要件は既に分かっており、従って複雑な仲裁は必要としないので、この「溢出（ｓｐｉｌｌｏｖｅｒ）」は準静的な特徴であることに留意されたい。この特徴は、各層内のメモリ資源は、最悪の場合ではなく、名目の場合に従って割り当てられるので、それらの著しく少量の静的割当てを可能にする。
【０１０６】
加えて、メモリの「漸進的」割当ては、上で簡単に説明した、スライディングウィンドウ機構も特徴とし、それは、Ｌ３メモリ内で使用され、以下でさらに詳細に説明される。
【０１０７】
処理要素（ＰＥ）
一実施形態では、基本計算ユニットは処理要素（ＰＥ）である。低レベル処理要素（ＰＥ）例をさらに詳細に示すブロック図が図６に示されている。大まかに１４０で参照される、ＰＥは、乗算トリガー１７７によって制御される１つ以上の乗算器１４２、加算器トリガー１７１によって制御される加算器１４４、複数のレジスタ１５２を含むＬ１メモリ１５０、宛先制御１７５によって制御される宛先マルチプレクサ１４６、送信元制御１７３によって制御される送信元マルチプレクサ１４８、出力シャッフル制御１７８によって制御される書込みマルチプレクサ１５４、入力シャッフル制御１７９によって制御される読取りマルチプレクサ１５６を含む。
【０１０８】
入力メモリ１５８からの入力（ｘ）データ１６１および重みメモリ１６０からの重み（ｗ）１６３は、それぞれ、入力制御および重み制御に従って乗算器（複数可）１４２に提供される。
【０１０９】
ニューラルネットワーク内のニューロンの最も基本的な数学演算は、次によって定義される：
【数２】
2020515989.tif 000005
式中：
ｘ（ｉ）は、１Ｄベクトルに編成された、入力データセットを示し、
ｗ（ｉ，ｊ）は、出力ｊに対するｉ番目の入力寄与を表す重みを示し、
σは、典型的には非線形スカラー関数である、活性化関数を示す
【０１１０】
基本計算ユニットはＰＥであり、ニューロンの本質的な動作を反映する乗算／累算実体を含む。中間結果または成果は、ＰＥにローカルなＬ１メモリ１５０内に格納される。Ｌ１メモリはある深さおよび幅を有し、例えば、本明細書で説明する例では、ニューロン数Ｐ＝１６、その各々は１６ビット幅である。任意の所望の深さおよび幅を有するＬ１メモリが使用され得ることが理解される。Ｌ１メモリの深さＰは、１つのＰＥが同時に取り扱うことができる「ニューロン」または「コンテキスト」の数を反映する。追加のニューロンに対する中間結果をＬ２／Ｌ３メモリ内に格納することにより、Ｐを超えるニューロン（すなわち、コンテキスト）が処理できることに留意されたい。追加のニューロンを処理するために追加の時間が必要とされるという点において、待ち時間が影響を受ける。Ｐ個のニューロンを提供することは、計算構造を必要最小限に制限することにより空間領域を利用し、同時に、複数のコンテキストを格納することにより時間領域も利用することの両方である。
【０１１１】
内部コンテキストを取り扱う能力は、いくつかの能力を提供し、例えば、（１）複数の論理ニューロンを単一の物理ニューロンに割り当てる（各コンテキストが１つのニューロンの出力を格納する）能力、（２）結果として同時操作となる、同じ入力に対する複数の中間結果の格納、および異なるバージョンの重みに対する仮説検証（例えば、逆伝播結果、勾配に基づく補正値など）、（３）ネットワーク委員会の一般的な方法および多数決抽出を適用する目的で、同じ入力のマルチスレッド化推定、（４）資源が利用可能であれば複数のネットワークを実行すること、ならびに（５）ＮＮマネージャによって制御されるとおりにネットワーク容量全体に基づく負荷分散、などである。
【０１１２】
動作中、ニューロン機能を反映している上の式２は、多重時間インスタンスにわたって広がって、以下のリスト１で提供されるように実装される。これは、他のシーケンスが、異なるマイクロコードを層コントローラ（ＬＣ）６４２（図２０）にロードすることによって使用され得るので、実装例にすぎないことに留意されたい。
【表２】
2020515989.tif 000006
【０１１３】
図６を参照すると、ＰＥは、重み（ｗ）および入力（ｘ）に対して別々に制御される計数要素ならびに加算器および乗算器に対する表現フォーマットにわたる別々の制御を含む。それは、別々に制御される進入／退出Ｌ１エントリインデックスも含み、操作すべき計算の順番を可能にする。累算関数の中間結果は、Ｌ１メモリレジスタ１５２内にローカルに格納される。加えて、初期化中の前処理は、Ｌ１メモリがデフォルト値（例えば、前の中間結果、バイアス値など）で予めロードされるのを可能にする。ＰＥは、中間メモリ集約制御、すなわち、割当てステップサイズも含む。加えて、活性化関数は面積オーバーヘッドを最小限にするために集約されて、ＰＥまたはサブクラスタレベルで実装されず、むしろクラスタレベルで実装される。ＰＥは、連結を可能にするために活性化迂回もサポートする。
【０１１４】
プレ合成（ｐｒｅ−ｓｙｎｔｈｅｓｉｓ）構成可能性は、（１）Ｎウェイ乗算および累算（すなわち、Ｙ＝Ｙ＋Ａ１＊Ｂ１＋．．．＋ＡＮ＊ＢＮ）、（２）表現フォーマットスパン（例えば、ｍビットの仮数およびｅビットの指数をもつエントリ毎にｋ０．．．ｋＮに対するサポート、ここでｋ＝ｍ＋ｅ）、および（３）ローカルストレージの深さＰの選択、を可能にする。
【０１１５】
動作中、ＰＥ内部のデータフローはかなり柔軟である。加算器１４４の出力１５１は、宛先制御１７５を使用する宛先マルチプレクサ１４６を介して、（１）経路１６２を経由した活性化関数、（２）経路１６４を経由したＬ２もしくはＬ３メモリ、または（３）経路１６６を経由した送信元マルチプレクサ１４８、のいずれかに誘導できる。送信元マルチプレクサ１４８は、送信元制御１７３を介して、（１）加算器からの出力、または（２）Ｌ２もしくはＬ３メモリ１６８からの中間結果、のいずれかを選択する。書込みマルチプレクサは、出力シャッフル選択１７８を介してニューロレジスタ１５２の１つを選択し、送信元マルチプレクサの出力をＰ個の経路１７２の１つを経由して書き込む。Ｌ１メモリに書き込まれたデータは典型的には、多数のサイクルにわたって実行された乗算および累算演算の結果として生成された中間結果を含む。
【０１１６】
データは、ニューロンレジスタを読取りマルチプレクサ１５６に接続するＰ個の経路１７４の１つを介してＬ１メモリから読み出され、入力シャッフル制御選択１７９を介して選択される。読取りマルチプレクサの出力１７６は、加算器１４４への２つの入力の１つを形成する。加算器への他の入力は、乗算器１４２の出力である。複数の乗算器１４２が実装される場合には、前置加算器（図示せず）が乗算器の出力を加算するように機能して、その後加算器１４４に入力される単一の総和を生成することに留意されたい。
【０１１７】
第２の低レベル処理要素（ＰＥ）例をさらに詳細に示すブロック図が図７Ａに示されている。前述のように、ＰＥは、ＮＮプロセッサの最も基本的な計算要素である。ＡＮＮのニューロンは、ＰＥ内で、本質的にはＬ１メモリ内で、実装される。大まかに４５０で参照される、処理要素は、入力データ表現回路４５２、乗算器回路４５４、表現変換／丸め（ｒｏｕｎｄｉｎｇ）回路４５６、アキュムレータ（すなわち、加算器）４５８、Ｌ１メモリ４６０、否定（ｎｅｇａｔｅ）回路４７２、およびマルチプレクサ４７４を含む。
【０１１８】
動作中、入力データ（Ｘ）４６８および重み（Ｗ）４７０は、Ｌ３メモリから入力データ表現回路４５２に入力される。この回路は、マルチプレクサにも入力されるＩＮＴ／ＦＰ信号４６２に従い、入力データおよび／または重みの表現を整数から浮動小数点（ＦＰ）フォーマットに、およびその逆に、変換するように動作する。結果として生じるＸ５０４およびＷ５０６はマルチプレクサ４５４に入力される。図６および図７Ａに示す２つのＰＥ実施形態のいずれも、本発明のＮＮ装置内で使用され得ることに留意されたい。
【０１１９】
一実施形態では、乗算器は、並行して動作するいくつかの乗算器を含む。乗算器は、整数および浮動小数点数の両方を乗算することが可能である。入力データおよび重みに対する有効ビット数も、それぞれ、制御入力４６４、４６６によって設定されるとおりに変更できる。乗算器４８６の積の出力は、表現変換／丸め回路４５６に入力される。ＦＰアキュムレータおよびＦＰ入力制御入力５０８、５１０はそれぞれ、積が整数またはＦＰフォーマットであるかどうかを回路４５６に信号通知する。加えて、回路４５６は、アキュムレータへの入力の前に、積の丸めを実行するように機能する。
【０１２０】
回路４５６の出力４８８は、アキュムレータ（加算器）４５８に入力される。アキュムレータへの第２の入力４９６は、Ｌ２もしくはＬ３メモリからのコンテキスト（すなわち、中間結果）４９０、またはローカルＬ１メモリ４６０の出力のいずれかを含む。マルチプレクサ４７４は、ＳＥＬ４７６に従ってその２つの間で選択する。出力４９４は、否定回路４７２に入力され、否定制御４７８に従い、出力４９６は、アキュムレータに入力される前に、否定される。
【０１２１】
アキュムレータに対する追加の構成制御は、アキュムレータシフト信号（ａｃｃｕｍｕｌａｔｏｒ＿ｓｈｉｆｔ）４９８、アキュムレータイネーブル（ａｃｃｕｍ＿ｅｎ）５００、およびＦＰアキュムレータ５０２を含む。アキュムレータの出力４８４は、Ｌ１メモリに書き込まれる。Ｌ１メモリは、Ｌ１出力選択４８０およびゼロスキップ４８２も含む。Ｌ１メモリからの中間結果（すなわち、コンテキスト）出力は、経路４９３を経由してアキュムレータに入力されるか、または経路４９２を経由してＬ２もしくはＬ３メモリに書き込まれるかのいずれかである。一実施形態では、累算された（すなわち、中間）結果は、順次Ｌ１メモリに書き込まれて、Ｌ１メモリから読み取られる、すなわち、Ｌ１メモリ内のニューロンレジスタに対するランダムアクセスはない。Ｌ１メモリは、ランダム以外の、任意の適切な事前に定義されたパターン、例えば、順次的（１つずつ）、１つ飛ばし、２つ飛ばしなど、を使用してアクセスされ得ることに留意されたい。これは、ニューロレジスタにアクセスするために必要なアドレス指定を大幅に簡略化する。加えて、Ｌ２およびＬ３メモリ層へのアクセスならびにＬ２およびＬ３メモリ層からのアクセスは、特定のＡＮＮで利用可能なローカルのＬ１メモリが十分でない場合に提供される。この場合、特定のＡＮＮに対応するために中間結果がより高次のメモリ層に格納される。しかし、トレードオフは、高次のメモリ層のアクセスにおける待ち時間が増大することである。
【０１２２】
代替実施形態では、高（または倍）精度（例えば、１６ビット）積を生成するために、４つの低精度（例えば、８ビット）乗算器を組み合わせることによってより高精度の乗算（例えば、１６ビット）が実行される。ＰＥのクワッド乗算器をさらに詳細に示すブロック図が図７Ｂに示されている。大まかに８７０で参照される、クワッド乗算器は、４つの低精度（例えば、８ビット）乗算器８７２、Ｑ０、Ｑ１、Ｑ２、およびＱ３を含む。クワッド乗算器への入力は、２つの低精度（例えば、８ビット）値から構成される倍精度入力Ｘ、すなわち、ＸＬ８７３およびＸＨ８７１であり、倍精度重みＷも２つの低精度（例えば、８ビット）値、すなわち、ＷＬ８８０およびＸＨ８８２、を含む。
【０１２３】
動作中、各基本ユニットＱｉは、低精度（例えば、８ビット）ＷおよびＸ値を受信し、それらに基づいて、クワッド乗算器回路は結果Ｙ←Ｙ＋Ｗ＊Ｘを生成する。倍精度ＷおよびＸ値を考えると、重み、入力データおよび出力データの上方部および下方部は、それぞれ、ＷＨ８８２、ＸＨ８７１、ＹＨ８７６およびＷＬ８８０、ＸＬ８７３、ＹＬ８７５として示されている。３つのキャリー（ｃａｒｒｙ）Ｃ０８７４、Ｃ１８７８、およびＣ２８７９も生成される。
【０１２４】
Ｙ←Ｙ＋Ｗ＊Ｘを
【数３】
2020515989.tif 000007
に展開すると、次が得られる
【数４】
2020515989.tif 000008
および
【数５】
2020515989.tif 000009
【０１２５】
各出力ＹＬおよびＹＨは、３２ビット乗算積Ｙを得るための１６ビット数を表すことに留意されたい。より大きい精度の結果は、追加の乗算器ならびに入力、重みおよびキャリー構成要素の適切な組合せを使用して得ることができることが理解される。
【０１２６】
サブクラスタ
第１のサブクラスタ例をさらに詳細に示すハイレベルブロック図が図８に示されている。大まかに１８０で参照される、サブクラスタは、各個々のＰＥ１８２がローカルＬ１メモリ１８４を含む、複数のＮ個のＰＥ１８２、相互接続ファブリック１８６、複数の割り当てられたメモリブロック１９０に分割された専用ローカルＬ２メモリ１８８、構成および復号ブロック１９２、ならびに制御／データ信号１８１を含む。構成／復号回路１９２は、外部制御バス１９４から命令を受信する。各サブクラスタ１８０はまた、以下でさらに詳細に説明するように、本明細書で提示する実施形態例ではクラスタ階層レベル内に配置される、入力／出力整合回路１９６および活性化回路１９８と通信する。
【０１２７】
一実施形態では、サブクラスタの機能は、複数のＮ個のＰＥ、例えば、Ｎ＝６４、を集約することである。サブクラスタ内の全てのＰＥは、ニューラルネットワークの同じ層に属しており、それは、要求される制御論理を大幅に単純化する。例えば、先験的な静的構成は別として、サイクルごとの動作の制御は必要ない。
【０１２８】
加えて、サブクラスタはメモリ階層の次のレベル、すなわち、層間および中間結果を格納するＬ２メモリ層をカプセル化する。一実施形態では、それは、活性化関数回路（すなわち、上の式２中のσによって表される）も含む。しかし、効率性のために、ＮＮコア例では、活性化関数をクラスタレベルに移動させている。活性化関数は、その位置にかかわらず、ニューロンの出力を受信して、Ｎ個の乗算および累算演算ごとに１回、トリガーされる。活性化関数回路の数および位置は、ハードウェアの最適利用を反映するように選択されることに留意されたい。
【０１２９】
サブクラスタのいくつかの特徴には、（１）メモリアクセスを管理するための分散制御方式、（２）重みおよび中間結果に対するＬ２メモリの動的割当て、（３）Ｌ１メモリをシームレスに増大させるための固有の中間結果シャッフリングサポート、（４）層中心（ｌａｙｅｒ−ｃｅｎｔｒｉｃ）の情報および診断格納、（５）層中心の前処理、（６）層中心の後処理、ならびに（７）層内分割サポート（例えば、量子化セグメンテーションのため）、を含む。
【０１３０】
第２のサブクラスタ例をさらに詳細に示すハイレベルブロック図が図９に示されている。図８は、サブクラスタの主に論理的なビューを反映しているが、図８はもっと物理的なビューを反映している。大まかに２００で参照される、サブクラスタは、専用ローカルＬ２メモリ２１０、各々それ自身のＬ１メモリ２１４をもち、イネーブルＥＮ２１１、ＰＥ制御信号２１３、およびＰＥ構成信号２１５を受信する、複数のＮ個のＰＥ２１２、入力相互接続２０６、出力相互接続２０８、サブクラスタ制御バス２３０から命令を受信してＬ２＿ｃｂｕｓ２３６を出力するサブクラスタ構成２０２、ならびに層制御２３２およびグループ制御２３４を受信してアドレスＡＤＤＲ２３８、イネーブルＥＮ２４０、および選択ＳＥＬ２４２を出力するサブクラスタ復号器２０４を含む。
【０１３１】
動作中、入力データ２１６および重み２１８が、制御信号２０１に従って、クラスタレベルにおけるＬ３メモリから入力相互接続２０６に提供される。入力相互接続は入力データ２４４および重み２４６をＰＥ２１２に供給する。ｚｅｒｏ＿ｓｋｉｐ信号２１７は、入力データまたは重みのいずれかがゼロ値を有しており、従って、乗算および加算演算は必要ないことをＰＥに通知する。重み２２０はローカルＬ２メモリ２１０からももたらされ、ローカルＬ２メモリ２１０はアドレスＡＤＤＲ２０５、イネーブルＥＮ２０７、および制御Ｌ２＿ｃｂｕｓ２０９を受信することに留意されたい。
【０１３２】
一旦、ＰＥ内のニューロンが特定の層に対して要求される計算を累算すると、現在中間結果２４８を表している、ニューロンの内容が読み出され、制御信号２０３を介して出力相互接続２０８に出力される。中間結果は次いで、経路２２６を経由してローカルＬ２メモリに書き込むか、または経路２２１、マルチプレクサ２２２、および経路２２８を経由してＬ３メモリに書き込むことができる。加えて、中間結果２２４はＬ２メモリから読み出されて、マルチプレクサ２２２を経由してＬ３メモリに、またはその後それを経路２４９を介してＰＥに転送する出力相互接続のいずれかに転送できる。
【０１３３】
従って、各サブクラスタは、入力データおよび重みをＰＥ内のニューロンに供給し、かつ、中間結果をニューロンからＬ２またはＬ３メモリのいずれかとのやりとりに誘導するために、柔軟でプログラム可能な経路を含む。
【０１３４】
一実施形態では、サブクラスタは、単一のＡＮＮ層またはその一部の実行に特化される。その機能は、外部入力をＬ３メモリから受信し、ローカルＬ２または外部Ｌ３メモリのいずれかからの重みと共に乗算および加算を実行して、中間結果（「コンテキスト」とも呼ばれる）をＰＥ  Ｌ１メモリ内（またはＬ１メモリが十分でない場合なローカルＬ２メモリ内）に格納し、最終的に結果を正規化および活性化のために外部活性化関数に送信することである。
【０１３５】
サブクラスタ復号器２０４は、サブクラスタ構成２０２からの静的入力を動的入力、共通の層制御およびタイミンググループ制御の両方と組み合わせるように機能する。それが格納した状態は、次のアドレス指定を保持するカウンタを含む、すなわち、（１）重み読取り／書込みアドレス、（２）コンテキスト読取りアドレス、（３）コンテキスト書込みアドレス、（４）活性化ソースアドレス（ＰＥが読取りのために出力する）。
【０１３６】
入力相互接続は（１）外部重み（すなわち、Ｌ３メモリ）またはローカル重み（すなわち、Ｌ２メモリから）の間で選択する、（２）重みメモリの幅、すなわち、最大幅で全てのＰＥがＬ２メモリから、またはＬ３外部メモリから異なる重みを受信するのを可能にする、選択される重みの数およびメモリの深さ、を選択する、（３）重みを選択して、選択された重み源（アドレスのＭＳＢを使用）からＰＥに渡す、入力バスの幅を選択する、かつ（４）入力を選択して、選択された入力源（アドレスのＭＳＢを使用）からＰＥに渡す、ように動作する。
【０１３７】
Ｌ２メモリ２１０は重みおよびコンテキストの両方を同じブロック内に格納するために使用されることに留意されたい。重みアドレスはゼロから始まって上方にカウントされ、他方コンテキストアドレスはメモリの終わりから始まる。オーバーフローを防ぐのは制御プレーンの責任である。
【０１３８】
クラスタ
第１のクラスタ例をさらに詳細に示すハイレベルブロック図が図１０に示されている。大まかに２５０で参照される、クラスタは、各サブクラスタ２６６がそれ自身のＬ２メモリ２６８を有する、複数のＭ個のサブクラスタ、複数の割り当てられたメモリブロック２６４に分割された専用ローカルＬ３メモリ２６２、Ｌ３メモリをサブクラスタにインタフェースさせるように適合されたメモリ管理装置（ＭＭＵ）２６０、制御同期装置２５４および複数の層制御回路２５６を含む管理および制御ブロック２５２、複数の入力アライナ２７４、ならびに複数の活性化関数回路２７６を含む。入力／出力（Ｉ／Ｏ）ポート２７０は、各クラスタをクラスタ間クロスコネクトスイッチ２７２にインタフェースさせる。
【０１３９】
一実施形態では、クラスタは、典型的には、２つ以上のニューラルネットワーク層を表す集約の次のレベルである。それは、ＰＥ基本計算実体を含むサブクラスタおよびサブクラスタ間の相互接続ファブリックの両方を含む。これは、サブクラスタ間の接続を制御することにより異なるニューラルネットワークモデルを表すための柔軟性をＮＮコアに提供する。Ｌ３メモリ２６２は層間結果を１つ以上の割り当てられたメモリブロック２６４内に格納するように機能する。
【０１４０】
クラスタのいくつかの特徴には、（１）メモリアクセスを管理するための分散制御方式、（２）複数層への総計Ｍ個のサブクラスタの表現をサポートするための柔軟で構成可能なルーティングマトリックス、（３）重みおよび中間結果に対するＬ３メモリの動的割当て（比較的稀）、ならびに（４）データフロースロットリングおよび負荷分散を可能にするための層間制御、を含む。
【０１４１】
追加の特徴には、（１）重み／入力データ平衡化、（２）前および後処理ブロック、（３）動的バス幅およびメモリビットセル、（４）ＭＭＵ内での入力データおよび重みの交換可能性、（５）イベント駆動型挙動およびパイプライン化を提供する機能、（６）制御がデータプレーンから切り離される、（７）任意選択のゼロパイプライン機能、ならびに（８）実行時構成変更のバランスのとれた機能、を含む。
【０１４２】
第２のクラスタ例をさらに詳細に示すハイレベルブロック図が図１１に示されている。大まかに２８０で参照される、クラスタは、クラスタ相互接続回路２８２、入力バッファ２８４、出力バッファ２９２、複数のＭ個のサブクラスタ３０６、サブクラスタ相互接続３０４、複数の活性化関数／プーリング回路３００、複数の入力アライナ回路３０２、および複数の割り当てられたメモリブロック２９８を含むＬ３メモリ２９６を含む。
【０１４３】
入力データおよび重み２８６は入力バッファ２８４内に格納される。入力バッファから、入力データおよび重み２８８はクラスタ相互接続２８２に入力される。入力データ３０５および重み３０７はまた、Ｌ３メモリ２９６に書き込まれ、Ｌ３メモリ２９６から読み取ることができる。クラスタ相互接続からの入力データ２８１は、サブクラスタ相互接続３０４に入力される前に、アライナ回路３０２に入力される。入力データ２８５は、サブクラスタ相互接続からサブクラスタ３０６に供給され、他方、サブクラスタからの出力２８３はサブクラスタ相互接続に送信される。出力３０９は活性化関数／プーリング回路３００に入力され、そこで結果として生じる出力３０８がクラスタ相互接続２８２に入力される。出力データ２９０は、出力バッファ２９２に書き込まれる。データ出力２９４は次いで、他のクラスタまたはオフチップに送信される。
【０１４４】
一実施形態では、ＮＮコアは複数のニューラルネットワークを並行してサポートする。各クラスタは、制御インタフェース（例えば、クロック、リセット、イネーブルなど）、構成インタフェース（メモリのような）およびデータインタフェース（例えば、ＡＸＩ（Ａｄｖａｎｃｅｄ  Ｅｘｔｅｎｓｉｂｌｅ  Ｉｎｔｅｒｆａｃｅ））を露出するように動作する。各クラスタは、１つ以上のＡＮＮ層を、恐らくは２つ以上のＡＮＮから、実装するように適合される。ＡＸＩ相互接続は制御インタフェースを露出し、クラスタ、ＮＮコア内のＡＲＭコントローラのＤＭＡエンジン、および外部ポートを接続するために使用される。ＡＲＭは、ＤＭＡエンジンを通したＡＸＩインタフェース、クラスタおよび相互接続への制御および構成インタフェース、ならびに外部標準インタフェースを露出する。
【０１４５】
一実施形態では、クラスタは、（１）構成回路、（２）メモリ管理装置（ＭＭＵ）、（３）制御相互接続、（４）トリガー相互接続、（５）複数のサブクラスタ、（６）複数の層コントローラ（ＬＣ）、（７）複数の専用装置、（８）複数の入力装置、（９）複数の出力装置、および（１０）複数のメモリブロック（すなわち、Ｌ３メモリ）を含む。
【０１４６】
一実施形態では、クラスタは、恐らくは複数のＡＮＮからの、複数のＡＮＮ層を並行してサポートする。ネットワーク層は、制御相互接続を通して接続された１つ以上のサブクラスタをもつ層コントローラ（ＬＣ）として、または制御をその中に含む特殊装置（専用、入力または出力）の１つとして実装できることに留意されたい。層は、構成によって全て定義された、トリガー相互接続を通したフロー制御のための信号通知を使用して、Ｌ３メモリ２９６内の割り当てられたメモリブロック２９８を通してデータを伝達する。割り当てられたメモリブロックはサブクラスタに対する重みメモリとしても使用される。様々な層からＬ３メモリへの全ての制御信号は、ＭＭＵ２６０により構成を使用して仮想から物理アドレスに変換される。
【０１４７】
ＭＭＵは、Ｌ３メモリの読取りポートおよびサブクラスタへの入力ポートなど、２つの通信ポートグループ間でスライディングオーバーラップウィンドウ機構を使用する。各サブクラスタは、その入力を、サブクラスタのリスト内のその関係位置周辺のメモリポートのグループから選択できる。ウィンドウ機構は、以下でさらに詳細に説明される。
【０１４８】
パイプラインをＮＮコア内で効率的に利用することができるようにするために、各ＡＮＮ層に対するサブクラスタの割当ては、好ましくは、フィード（ｆｅｅｄ）ごとにＡＮＮ層内で要求される計算の数に比例する。割当ては、制御相互接続によって決定され、それは、サブクラスタをＬＣにマッピングする。マッピングは、２つのレベルで実行される、すなわち、（１）各サブクラスタは、スライディングオーバーラップウィンドウ機構を通してＬＣに割り当てられる（すなわち、ＭＭＵ内で使用されるものに類似）、および（２）サブクラスタはＡＮＮ層内部のタイミンググループに割り当てられる。タイミンググループは、活性化後に使用されるＬ３への書込みポートなど、共通の資源を要求する動作に経時的に広がる。ＡＮＮ層は、各々が１つ以上のサブクラスタを含む、１つ以上のタイミンググループを含み得る。全てのタイミンググループの間で共通の、制御は、第２の選択レベルを通して渡されず、その回路の多重化の複雑さを低減する。
【０１４９】
一実施形態では、ＡＮＮ層間の信号通知機構は、２本の双方向ワイヤーに基づき、それは、それらの間のデュアルバッファの状態を交渉する。従って、２つの連続的な層を接続するために２本の双方向回線が必要である、すなわち、各層は、前の層のために２本および次の層のための２本の、４本の双方向回線を使用する。２つの逆方向信号は、バッファが層間の２つのバッファの各１つに対して新しいデータを受信する準備ができているかどうかを示し、２つの順方向信号は、バッファ内のデータが両方のバッファに対して有効であるかどうかを示す。インタフェースを簡略化するために、コントローラは、専用の命令を使用して、両方向の２つのバッファ（すなわち、アクティブおよびパッシブ）の意味を反転できる。
【０１５０】
クラスタ間クロスコネクトをさらに詳細に示すハイレベルブロック図が図１２に示されている。大まかに４３０で参照される、クラスタ間相互接続ファブリック／クロスコネクトは、クラスタ４３６間での通信を可能にする複数のマルチプレクサ４３２およびスプリッタ４４０を含む。一実施形態では、各クラスタＪは、入力ポート３９６および出力ポート３９８を含む、複数のポートを含む。４つの入力および出力ポートが例に示されているが、任意の数が実装できる。
【０１５１】
入力側上のマルチプレクサ４３２はＳＥＬ線４３８によって制御される。各マルチプレクサに対する入力４３４は、隣接するクラスタ、例えば、クラスタＪ−２、Ｊ−１、Ｊ、Ｊ＋１、からの出力線を含む。各マルチプレクサからの出力４４４は、クラスタ内の別個の入力ポート３９６に入力される。同様に、出力側上のスプリッタ４４０は、隣接するクラスタ、例えば、クラスタＪ−１、Ｊ、Ｊ＋１、Ｊ＋２、の入力線に供給される出力４４２を生成する。クラスタの各出力ポート３９８からの出力４４６は、別個のマルチプレクサ４４０に入力される。ＮＮマネージャ３９２は、クロスコネクト４３０の構成を制御するように機能する。一実施形態では、１つのクラスタから別のクラスタへの可能な接続は、アドレス指定を減らしてルーティングを制御するために意図的に制限されて、帯域幅を改善する。例えば、入力４３４を経由したクラスタＪへの接続は、クラスタＪ−２、Ｊ−１、Ｊ、およびＪ＋１、すなわち、隣接するクラスタ（およびそれ自身）だけに制限される。同様に、出力４４２におけるクラスタＪからの接続は、クラスタＪ−２、Ｊ−１、Ｊ、およびＪ＋１に制限される。他のクラスタへの直接接続は制限されるが、任意のクラスタは依然として、１つ以上の中間のクラスタをトラバースすることにより、任意の他のクラスタと間接的に通信することができることに留意されたい。
【０１５２】
クロスコネクトは、クラスタレベルから始まって、ＮＮプロセッサコアの最上位レベルを経て装置から装置へ、全てのレベルで生じることに留意されたい。ＮＮプロセッサ内のＬ個のクラスタは、１つのクラスタからの出力ポートが隣接するクラスタにマッピングされるのを可能にする循環相互接続ファブリックを使用して接続される。クロスコネクトはクラスタの出力を自身（すなわち、セルフルーティング）にルーティングすることもできる。クロスコネクトにおけるアクセスの範囲は構成可能であり、設計の複雑さと、アクセス可能性との間でのトレードオフを可能にすることに留意されたい。「分散／集約」機構は、同じ出力が複数の入力を並行して供給するように、出力が複数の複製に（すなわち、スプリッタを介して）分割されるのを可能にすることにも留意されたい。クロスコネクトの制御は、制御線４３１を介してＮＮマネージャ３９２によって提供される。
【０１５３】
スライディングオーバーラップメモリウィンドウイング
第１のメモリウィンドウイング方式例を示す略図が図１３に示されている。柔軟性を維持するために、プロセッサ内のメモリの各コンシューマは、データ交換のために異なるメモリセグメントにアクセスする能力を有する。メモリウィンドウイングという用語は、計算要素または実体が、メモリ資源のずっと広い範囲ではなく、利用可能なメモリ資源のあるサブセットだけに対するアクセスをそれによって与えられる方式を指す。メモリウィンドウイング方式を使用して計算要素によるメモリへのアクセスを制限すると、必要なアドレスおよびルーティング制御を大幅に削減しながら、利用可能な帯域幅を著しく改善する。メモリファブリックはメモリウィンドウイング方式を動的に再編成することができ、それにより計算要素によってアクセス可能なメモリ資源はプログラム可能で構成可能である（例えば、コンパイル時、実行時など）ことに留意されたい。ウィンドウイング方式は、以下でさらに詳細に説明される分散／集約技術に基づく。
【０１５４】
大まかに５８０で参照される、図示例では、２つの計算要素５８２はメモリ資源５８４、５８６、５８８にアクセスする。計算要素のいずれもメモリ全体へのアクセスを有しておらず、有限ウィンドウのみに対するアクセスを有する。これは、計算要素はメモリファブリック全体に対するアクセスを一度に要求することは決してないからである。ウィンドウイングは、制御、進入データ、退出データ、および重みに対して異なり得ることに留意されたい。加えて、ウィンドウは典型的には、共有およびパイプライン化を可能にするために重なり合う。また、メモリ資源自体は多目的であり、２つ以上のタイプの情報を格納するために使用できる。
【０１５５】
図示例では、計算要素１に対する制御は、メモリブロック５８４、５８６、および５８８に及び、制御１の矢印５９０によって示される。計算要素１は、メモリブロック５８６に対する進入データウィンドウを含み、進入データ矢印５９２によって示される。同様に、計算要素１は、メモリブロック５８８に対する退出データウィンドウを含み、退出データ矢印５９４によって示される。重みは、メモリブロック５８４および、退出データを格納するためにも機能するメモリブロック５８８内に格納される。同様に、他の計算要素も、制御、進入、退出、および重みウィンドウを含む。例えば、計算要素２は、メモリブロック５８８および１つ以上の他のメモリブロック（図示せず）に及ぶ制御ウィンドウ５９６を含む。
【０１５６】
第２のメモリウィンドウイング方式例を示す略図が図１４に示されている。一実施形態では、ＮＮプロセッサ内の計算要素を通って流れるデータはパイプライン化され、サブクラスタ内のＰＥはデータを入力として受信して、出力を生成し、その出力は次いで、後続の計算のために何らかの他のサブクラスタに対する入力として機能する。様々な層内のメモリは、可能な限りローカル化されて、各層が対応する計算要素のアクセス可能性および効率性を最大限にするために活用される。計算要素はメモリの制限されたサブセットにだけアクセスする必要があるので、ルーティング（すなわち、アドレス線、制御など）は、実際に必要なメモリブロックおよび計算要素のクロスコネクトに制限できる。図１５、図１６、および図１７は、メモリアクセスウィンドウの構成可能性を示し、それを通して各資源の割当てが管理され構成されて、特定の要求に対処する資源を備える。
【０１５７】
大まかに３４０で参照される、ウィンドウメモリ方式は、各々が複数のＰＥ３４９を含む、複数のサブクラスタ３４８、Ｌ３メモリ（共有されていない）３４２、およびＬ３メモリ（共有されている）３４４を含む。動作中、サブクラスタは重み情報３４５を、共有されていないＬ３メモリの一部から受信する。サブクラスタへの入力データ３４１は、Ｌ３メモリの共有された部分から割り当てられたメモリブロック３４６から受信される。サブクラスタ内のＰＥは、重みおよび入力データを処理して、出力３４３を生成する。しかし、出力は、異なる（例えば、隣接する）割り当てられたメモリブロック（すなわち、入力が読み取られたメモリブロックではない）に書き込まれる。これらの出力は次いで、別のサブクラスタ（例えば、ＡＮＮの後続層内のニューロン）への入力として読み取られる。この方法で、ＡＮＮ入力データ３４７は共有Ｌ３メモリに入り、割り当てられたメモリブロックから読み取られて、１つ以上のサブクラスタ内のＰＥによって処理され、隣接するメモリブロックに出力されて、ＡＮＮ内の様々な層を通ってトラバースした後、最終的にＡＮＮ出力データ３４９として共有Ｌ３メモリから出力される。
【０１５８】
しかし、サブクラスタは、Ｌ３メモリに対する直接的なランダムアクセス機能を有しているのではなく、メモリブロックによって割り当てられた隣接しているか、または近いものだけに対するアクセス機能を有していることに留意されたい。例えば、サブクラスタＨは、サブクラスタＨ−２、Ｈ−１、Ｈ（それ自身）、およびＨ＋１サブクラスタに対するアクセスを有する。これは、メモリアクセスのためのアドレス指定およびルーティング制御要件を大幅に削減する。従って、各サブクラスタは、メモリの比較的小さい窓、ＰＥがそれらの機能を実行するためにちょうど十分な、だけを「見る」。
【０１５９】
計算およびメモリ要素のウィンドウサイズと、コンピュータアクセス構成可能性との間の第１のメモリアクセス可能性例を示す略図が図１５に示されている。この略図は、メモリウィンドウイング方式を例示しており、それにより計算要素およびメモリ要素は相互に対して制限されたアクセスを有する。例えば、メモリ要素１〜Ｄおよび計算要素１〜Ｅを考える。斜線の入った塞がれた領域５２０は、相互にアクセス可能な資源を表す。従って、計算要素１〜３は、メモリ要素１〜１２にだけアクセスできる。同様に、メモリ要素１〜１２は、計算要素１〜３にだけ接続できる。図のように、計算要素にアクセス可能なメモリ要素は、相互に重なり合うスライディングアクセスウィンドウを形成する。アクセスウィンドウは動的に構成できて、ハードワイヤードでも固定でもないサイズ（すなわち、スパン）および特定の接続を有する。主な特徴は、どの単一の計算要素もメモリ全体に対するランダムアクセスを有していないことである。むしろ、各計算要素は、メモリ要素の一部、例えば、隣接するメモリ要素またはすぐ近くのもの、だけアクセスできる。その計算要素に対してアクセス不能なメモリの部分は、書込み領域５２２によって表される。
【０１６０】
メモリによってアクセス可能な計算要素の数は、垂直矢印５２３によって表されるようにプログラム可能で構成可能であることにも留意されたい。同様に、計算要素によってアクセス可能なメモリ要素の数は、水平矢印５２１によって表されるようにプログラム可能で構成可能である。
【０１６１】
計算要素とメモリ要素との間の第２のメモリアクセス可能性例を示す略図が図１６に示されている。この略図は、計算要素とメモリ要素との間のアクセスは隣接するウィンドウに制限されないことを示す。むしろ、アクセスは不連続で、それは、一実施形態では、仮想対物理マッピングを使用して達成される。手段にかかわらず、アクセス可能な領域は、制限されて事前に定義された範囲の長方形を有して、計算要素とメモリ要素との間のアクセスが制限されていて有限であること、すなわち、どのかかる領域もアドレス空間全体をカバーしないことを示す。
【０１６２】
分散／集約ベースの資源ウィンドウイング技術例を示す略図が図１７に示されている。例示を目的として、クラスタ例５３０の一部が示されている。しかし、本技術は、クラスタ内での使用に制限されておらず、ＮＮプロセッサ内のどこでも使用できる。２つの資源Ａ５３２およびＢ５３８を考えると、その資源は任意の所望の回路、例えば、計算、メモリ、制御要素など、を含み得る。アクセスを制限するために、各資源Ａ５３２の出力はスプリッタ５３４に入力され、各資源Ｂ５３８への入力はマルチプレクサ５３６の出力である。完全なメッシュ接続を提供するのではなく、スプリッタの出力は、制限された数のマルチプレクサ入力だけに行き、従って、制限された接続を提供する。例えば、資源Ａ１の出力は、資源Ｂ１およびＢ２だけに入力される。同様に、資源Ａ２の出力は、資源Ｂ１、Ｂ２およびＢ３だけに入力され、資源Ａ３の出力は、資源Ｂ２およびＢ３だけに入力される。このようにして、各Ｂ資源はＡ資源の小さいウィンドウに接続するだけである。従って、１００のＡ資源と５０のＢ資源との間のアクセス（資源の数は例にすぎない）は、有限数のＡ資源が有限数のＢ資源と、重なり合うスライディングベースで接続する、スライディングウィンドウを形成する。
【０１６３】
スプリッタおよびマルチプレクサの制御は、層コントローラ（ＬＣ）５４８によって提供される。ＬＣの制御線５４９出力は、ＬＣＵから始まるＳＥＬ線５４７に従い、ＬＣからの制御の１つを選択する制御ファブリック５４４内の一連のマルチプレクサ５４６に入力され、ＬＣ内でさらに復号され得る。マルチプレクサ５４６の制御は、コンパイル時または実行時などに、プログラム可能で構成可能であり、それにより、Ａ資源とＢ資源との間の柔軟なマッピングを達成する。
【０１６４】
本発明によれば、ＮＮプロセッサのメモリアクセスファブリックの特徴は、実質的に高並列で動作する能力である。これは、計算資源とそれらに付加されたメモリとの間のマッピングの固有の分離のおかげである。例えば、重みは明示的に関連サブクラスタにだけ接続される。しかし、１つの例外は、割り当てられたメモリブロックが共有されて、衝突が生じる場合である。かかる事象は典型的には稀であるが、ＮＮプロセッサは、衝突に起因する競合を解決する能力を提供する。一実施形態では、メモリ競合は制御層で解決され、その場合、共通のメモリブロックを共有する２つの計算実体は、以下で説明されるように、信号通知レベルで衝突回避に対処する。逆圧（ｂａｃｋｐｒｅｓｓｕｒｅ）は典型的には、一時的で短命であり、総帯域幅全体はＮＮプロセッサの設計によって保証されることに留意されたい。
【０１６５】
メモリ競合解決方式例を示すブロック図が図１８に示されている。大まかに６００で参照される、メモリ競合解決回路は、複数のメモリブロック６３２を含むＬ３メモリ６０２、ＭＭＵ６２６、ＬＣＵ  Ａ６０４、ＬＣＵ  Ｂ６０６、ＡＮＮ層Ｇ６１４を形成する１つ以上のサブクラスタ６１８、およびＡＮＮ層Ｇ＋１  ６１６を形成する１つ以上のサブクラスタ６２０を含む。
【０１６６】
この図示例では、ＡＮＮの層ＧおよびＧ＋１の両方が、Ｌ３メモリ内のメモリブロック６３４に対してデータの読取りおよび書込みを行う。層Ｇの出力は、層Ｇ＋１への入力として機能する。しかし、時折、両方の層は、同じメモリブロックに同時にアクセスしようとし得る。これは、「Ｘ」でラベル付けされたメモリブロック６３６によって示される。同じメモリブロックの競合が生じると、ＭＭＵ６２６がその事象を検出して、それらそれぞれのＬＣ内のＬＣＵ（この例ではＡおよびＢ）に対して競合アラート６０８を生成する。競合アラートに応答して、ＬＣＵの１つは、サブクラスタに入力される停止（ｈａｌｔ）コマンド６１０、６１２を生成する。停止コマンドを受信するサブクラスタは、読取りまたは書込み操作が完了するまで、Ｌ３メモリ内のそのメモリブロックに対するアクセスを抑止する。
【０１６７】
層内では、その層を構成するサブクラスタは、メモリに対する競合が決して生じないように構成されるので、メモリ競合は、層内ではなく、常にＡＮＮ層間で生じることに留意されたい。典型的には、競合は、１つの層が書き込んでいる間に他の層が読み取っている場合に生じる。競合アラートに応答して、書込みまたは読取り操作のいずれも抑止できる。一実施形態では、ＡＮＮの本質は、書込み操作ははるかに稀な事象であるということなので、書込み操作が抑止される。加えて、読取り操作を抑止すると、データ処理パイプラインのかなりの部分が機能停止するであろう。従って、読取り操作ではなく、書込み操作が抑止される。停止信号（層Ｇへの６１０または層Ｇ＋１への６１２）が抑止すべき層に対して発行される。書込み操作または読取り操作を抑止するかの判断は、コンパイル時に先験的にプログラム可能で構成可能であることにも留意されたい。
【０１６８】
層コントローラ
層コントローラ例をさらに詳細に示すハイレベルブロック図が図１９に示されている。大まかに３１０で参照される、層コントローラ（ＬＣ）は、命令メモリ３１２から読み取られたマイクロコード命令３１１を復号および実行する責任を負う層制御ユニット（ＬＣＵ）３１４を含む。その命令に応じて、１つ以上のコマンド信号３１３が、入力アライナ制御３１６、活性化制御３１８、入力アドレス復号器３２０、重みアドレス復号器３２２、出力アドレス復号器３２４、およびＰＥ制御３２６を含む、様々な制御および復号ブロックに出力される。これら６つのブロックからの制御およびアドレス信号がそれぞれ、入力アライナ３２８、活性化関数回路３３０、入力メモリ３３２、重みメモリ３３４、出力ウィンドウ３３５、および制御ウィンドウ３３６に出力される。ＰＥ制御信号３１５は、制御ウィンドウ３３６からサブクラスタ３３８内のＰＥ回路に出力される。
【０１６９】
Ｌ３メモリおよびサブクラスタに対する層コントローラインタフェースをさらに詳細に示すハイレベルブロック図が図２０に示されている。大まかに６４０で参照される、クラスタ例は、Ｌ３メモリ６４４、ＬＣ６４２、複数のサブクラスタ６６２、ポストプロセッサ６６６、および図１７に関連して上で説明された、制御、書込みデータ、読取りデータ、および重みのためのウィンドウイングを含む。ＬＣ６４２はＬＣＵ６５６、１つ以上のプリプロセッサ６５２、命令メモリ６５４、１つ以上の復号器回路６５８、およびＭＭＵ６６０を含む。
【０１７０】
具体的には、制御ウィンドウイングは、回路６７４および制御線６８４を含み、重みウィンドウイングは、回路６４６、６４８、および信号線６５０を含み、進入データウィンドウイングは、回路６７６、６７８、６７２、および信号線６９０、６９２を含み、退出データウィンドウイングは、回路６８０、６８２、６６８、および信号線６８６、６８８を含む。Ｌ３メモリにアクセスする進入および退出ウィンドウは、破線によって示されるように重なり合うことに留意されたい。ウィンドウイングに対する制御（すなわち、スプリッタおよびマルチプレクサに対する選択）は、ＬＣＵおよび復号器によって生成されたメモリウィンドウ制御（ＭＷＣ）信号６７０によって提供されて、ウィンドウ回路６７４、６４６、６４８、６７６、６７８、６７２、６８０、６８２、および６６８に入力される。
【０１７１】
動作中、進入データはＬ３メモリから読み取られて、前処理回路６５２に入力される。これらの回路は、任意選択としてデータを再形成するように機能して、例えば、シフトなどの操作を入力データに関して実行する。前処理されたデータはサブクラスタに出力され、そこでＰＥ６６４は入力データを、同様にＬ３メモリから読み取った重みと共に乗算する。中間結果、すなわち、コンテキストが、サブクラスタからメモリウィンドウイングを通して後処理回路６６６に出力される。後処理回路は、データ処理パイプラインの一部であり、活性化関数および任意選択として整合を適用するように動作する。
【０１７２】
各ＬＣには、ＡＮＮ内の層を構成する１つ以上のサブクラスタが割り当てられることに留意されたい。各クラスタは、複数のＬＣ（例えば、８）を含む。従って、図示されるサブクラスタ６６２は、各クラスタ内のＭ個のサブクラスタのサブセットに過ぎず、各ＬＣは、前述した同じウィンドウイング概念を使用して選択できるサブクラスタの異なるセットを制御する。加えて、サブクラスタ内のＮ個のＰＥは分割されず、サブクラスタ内の全てのＰＥは単一のユニットとして制御されることを意味する。これは、２、３の制御線だけが多数のＰＥを、そして最終的にニューロンを制御するので、計算要素の制御を簡略化して、比較的無駄のない制御信号通知を可能にする。同様に、復号器回路６５８の各々は、異なるセットのメモリブロックを制御するように構成される。一実施形態では符号化される、制御信号６９８は、ＬＣＵによって生成されて、復号器回路６５８に入力される。ＬＣＵ自体は命令メモリ６５４の内容によって制御される。各命令の実行は、符号化された制御信号の生成となり、それはその後、復号器によって復号されて、制御ウィンドウ回路６７４を介して計算要素に出力される。サブクラスタ内の計算要素を制御する制御信号に加えて、ＬＣＵは制御ウィンドウを（重み、進入および退出データウィンドウと共に）制御するための制御信号（すなわち、ＭＷＣ選択制御）も生成することに留意されたい。一旦、構成されると（コンパイル時に）、制御信号、重み、進入および退出データは静的にルーティングされる。ＭＭＵ６６０は、Ｌ３メモリウィンドウイングに対する制御信号を生成して、仮想対物理マッピングを実行するように機能する。それは、ＡＮＮ内の２つの層間のメモリ競合事象に応答して、競合アラート６９４を生成ようにも機能する。前述のように、ＬＣＵは層の１つに停止コマンドを発行することにより競合事象を解決する。
【０１７３】
第２の層コントローラ例をさらに詳細に示すハイレベルブロック図が図２１に示されている。大まかに５５０で参照される、ＬＣ例は、複数の命令５５４を含む命令メモリ５５２、ＬＣＵ５５６、命令復号器５６６、トリガーウィンドウクロスコネクト５５８、およびトリガーハンドラ５６０を含む。ＬＣＵ５５６は、状態マシン５６２、および命令レジスタ５６４を含む。
【０１７４】
動作中、命令５５１が命令メモリからＬＣＵ内の命令レジスタ５６４に読み取られ、そこでそれらが決定されて実行される。ハードウェアを直接制御するように構成される命令の１つ以上の部分５６８が復号のために１つ以上の復号器５６６に送信される。復号器の出力は、図２０に示して前述したように、内部ＰＥ動作を制御するためにサブクラスタに送信される直接制御信号通知を含む。命令の他のＬＣＵの部分５７０、５７２は、ＬＣＵの論理状態を制御して、状態マシン５６２に入力される。これらの部分は、例えば、ループ処理および分岐を制御する。ＮＥＸＴ５５３コマンドは、命令メモリ５５２からの次の命令を実行のためにＬＣＵに読み込ませる。
【０１７５】
一実施形態では、１つ以上のトリガー５５５が状態マシンによって生成されて、トリガークロスコネクト５５８に入力される。トリガー機能は「インタラプト」と類似しており、活動は、何らかの事象が生じるまで停止して遅延させることができる。活動をトリガーするためにトリガー信号が使用される。トリガーは他のトリガーを起動するために発行することができる。それらは、ＮＮプロセッサ内の活動を同期させるために機能する非同期機構を表す。例えば、トリガーは、バッファが書き込まれるまで、または層が処理を完了するまで、処理を停止するために発行できる（またはそうでなければ、何らかの事象が起こっていて、さらなる処理が開始できることの指示として機能する）。
【０１７６】
加えて、トリガーは、異なるＬＣ内のＬＣＵにおける活動をトリガーするために発行できる。この処理は「ハンドオーバー」と呼ばれる。ハンドオーバー機構は、１つのＬＣから別のＬＣへの活動をトリガーでき、例えば、トリガーは、１つのＡＮＮ層が完了して、結果をＡＮＮ内の別の層に送信する場合に使用できる。トリガーウィンドウクロスコネクトは、出力トリガー信号５５９を適切なＬＣ内のトリガーハンドラに誘導するように機能し、そこでそれらは信号５５７を介してＬＣＵ内での活動を制御するように働く。
【０１７７】
データと制御プレーンとの間の分離に関して、一実施形態では、制御プレーンを制御するマイクロコードはＬＣ内で実行して、データに対するアクセスは有していない。ＬＣ内のマイクロコードマシンの追加の機能は、条件文または条件分岐がないことである。分岐予測または他のパイプラインオーバーヘッドを管理する必要が回避されるので、これは、データのパイプライン化に対して好都合である。従って、実行は、完全に予測可能である。これは、分岐し得るために実行が入力に依存する典型的な従来技術のマイクロコードとは対照的である。ＮＮプロセッサでは、一旦、マイクロコードが実行されると、データフローの進展は完全に予測可能であり、すなわち、各制御信号の生成がいかなる場合でも予測できる。
【０１７８】
一実施形態では、マイクロコードベースのコントローラ内で実行された各マイクロコード命令は、計算資源およびメモリ資源に対する制御信号通知を生成するように動作する。言い換えれば、マイクロコードは、同様に実際の制御信号通知を出力に適用しない内部処理に対して責任を負う操作がないので、いかなる「オーバーヘッド」も有しない。従って、どのマイクロコード命令操作も、マイクロコードマシンの内部ハウスキーピング処理で浪費されない（「ＮＯＰ」操作を唯一の例外として）。
【０１７９】
ＬＣ内のマイクロコードマシンの別の機能は、トリガーされる操作である。分岐はサポートされていないが、実行フローは、データパイプラインハンドシェイク、例えば、１つのＬＣＵから別のＬＣＵへのハンドオフ、を可能にするために実行の開始／停止を示す外部信号によってトリガーできる。
【０１８０】
ＬＣ内のマイクロコードマシンのさらに別の機能は、繰返し演算サポートであり、それにより演算のインライン繰返し（すなわち、インラインで実行するループ）は繰返し演算を演算コード自体内に示すことができるようにサポートされ、それによってループのセットアップおよび管理のための不必要なサイクル、ならびに関連するフェッチを回避する。この特徴は、ループ管理のオーバーヘッドと比較して少ない操作を有するループに対して有用であることに留意されたい。後者はニューラルネットワーク操作において非常に一般的であり、例えば、多数の乗算および累算（ＭＡＣ）演算の後に活性化が続く。データパイプラインマシンでは、制御とデータの比率が、ごくわずかな制御が比較的大規模なデータパイプの挙動を定義するようなものである場合、それは非常に重要である。
【０１８１】
例えば、１０００個の乗算および累算（ＭＡＣ）演算を実行するように構成された従来のプロセッサを考える。擬似コード例が以下のリスト２に提供される。
【表３】
2020515989.tif 000010
【０１８２】
前述の擬似コードでは、ループ内に４つの演算コードがあり（すなわち、４サイクル）、そのうちの２つが演算に関わり、５０％の利用である。このループが１０２４のＭＡＣ回路を制御すると仮定すれば、これはフル稼働で、５１２だけが有効に動作していることを意味する。
【０１８３】
それに対して、インライン繰返しはＮＮプロセッサ内でサポートされる。加えて、内部制御に対するオーバーヘッドはゼロで、「余分な（ｓｐａｒｅ）」演算コード、すなわち、マシンまたはハウスキーピング処理の内部管理のためだけに使用される演算コード、をもつ要求を排除する。リスト２の擬似コードは、以下のリスト３に提示される次の擬似コードに変換される。
【表４】
2020515989.tif 000011
【０１８４】
上に示すように、全てのループ情報は機能的な演算コードに埋め込まれて、ＭＡＣ利用は１００％まで増加する。
【０１８５】
制御とデータプレーンとの間に深い分離を有することも制御プレーンをセキュリティの危険からある程度、本質的に免除することに留意されたい。これは、装置をハッキングするための一般的な技術は、制御プレーンに干渉するデータをそれに供給することであるためである。２つのプレーンは厳密に分離されているので、１つに干渉することは、他に影響を及ぼさない。
【０１８６】
コンパイラ
ＮＮプロセッサのコンパイラ／ＳＤＫ例を示すハイレベルブロック図が図２２に示されている。大まかに７７０で参照される、コンパイラは、入力ＡＮＮモデルに基づいてＮＮプロセッサを構成するように機能する。それは、ユーザーによって使用されて開始される外部ソフトウェアツールチェーンの一部としてオフチップで実行するプロセス内で実行される。典型的には、コンパイラは、ソースＡＮＮモデルの対象であるＮＮプロセッサ、ＮＮプロセッサＳｏＣまたは複数のＮＮプロセッサＳｏＣの知識を有する。
【０１８７】
具体的には、トランスレータ７７２は、ユーザーモデルを受信して、モデルの中間フォーマットを生成するように機能する。オプティマイザ７７４は、モデルレベル最適化、性能に対する翻訳後のモデル調整、および異なるビット幅への数的適応を実行するように機能する。資源アロケータ７７８は、中間モデルに従い、物理的資源（例えば、計算およびメモリ要素など）を割り当てて指定する。プロファイラ７８６は、例えば、予期される電力消費、わたり（ｔｈｒｏｕｇｈｏｕｔ）、待ち時間などを含む、性能評価を実行する。ソフトウェアエミュレータ７８２は、トランスレータ７７２の中間モデル出力を使用してＮＮプロセッサのビットイグザクト（ｂｉｔ  ｅｘａｃｔ）数的エミュレーションを実行するように機能する。
【０１８８】
一実施形態では、外部ツールチェーンを実装するためにいくつかの対象オプションがユーザーに提供される。３つの対象オプションは（１）ＮＮ装置７８０、（２）エミュレータ７８２、および（３）ＮＮ装置を機能的にシミュレートするハードウェアのソフトウェアモデルを含むシミュレータ７８４、を含む。従って、ユーザーは、ＮＮ装置自体、ＮＮ装置のハードウェアエミュレーション、またはＮＮ装置のソフトウェアシミュレーションのいずれかを使用してツールチェーンを実行するオプションを有する。
【０１８９】
ＮＮプロセッサの複数の動作粒度および関連するメモリ／待ち時間のトレードオフ
本発明の機能および利点は、ＮＮプロセッサ内のパイプラインが、入力の任意のサブセットの任意の所望の粒度で動作することが可能なことであり、その場合、メモリは待ち時間に対してトレードオフされ、その逆も同じである。より具体的には、入力データが何らかの内部構造（例えば、ビデオのフレームで、各フレームは複数の行（またはバッファ、パケットなど）から成る）を有する場合、ＮＮプロセッサアーキテクチャは、次の層の活動を、単一のかかる行、バッファ、パケットなど、それらの複数からの任意の集約でトリガーできる。
【０１９０】
下位集約の場合、中間結果を格納するために追加の中間結果（すなわち、コンテキスト）ストレージが必要とされる。しかし、パイプライン内での前のさらなる処理のために後続の処理要素が解放されるので、待ち時間は最小限であり、それは、着信トラフィックが、詰まるのではなく、使われるのを可能にする。従って、より上位メモリストレージ要件はコンテキストのより低い待ち時間に対してトレードオフされる。
【０１９１】
他方、より高い集約の場合、すなわち、より少ないコンテキストメモリしか要求されないか、または多数のコンテキストを要求するＡＮＮモデルが実装される場合、バッファメモリと引き換えにより少ないコンテキストメモリが使用されるトレードオフが行われ得、それにより入力の追加のバッファリングが実装され、結果として任意の一時点において同時に必要なコンテキスト数が減少するが、待ち時間は増加する。一実施形態では、このトレードオフはＬＣ内のマイクロコードによって実装され、従って、構成可能でプログラム可能である。
【０１９２】
ＮＮプロセッサの柔軟な処理粒度および関連するメモリ対待ち時間のトレードオフを示す略図が図２３に示されている。大まかに９３０で参照される、データパイプライン例は、最小限の遅延時間の方を好み、低入力領域粒度で動作するために、データパイプラインを活用するオプションを強調する。ネットワーク内の開始点または任意の点に配置できる入力データ９３８を含む入力テンソル（ｔｅｎｓｏｒ）例９３２を考える。ネットワーク層の１つは次いで、ＮＮ操作９３４を入力データ（例えば、この例では３×３畳込み）に適用し、その後にメモリブロック９３１および９３９を含む出力領域９３６が続く。
【０１９３】
この例では、入力データストリームが完全に使われ、全ての必要な計算が適用される一方、全ての計算がメモリ内に格納された中間結果にコミットしているので、待ち時間を最小限にして、入力データを取得する必要がない。代替実施形態では、この機能は、（１）フレーム全体を待ってバッチ操作を適用し、それにより全てのデータが直ちに出力されるようにコミットされて中間結果を回避すること、（２）中間結果を回避するために最小セットの行を待つこと（この事例では３）、（３）外部メモリ内に格納された中間結果を使用して、メモリアクセス待ち時間が増大すること、または（４）中間結果を格納する必要を回避するために、必要に応じて、入力をリコールする（すなわち、同じデータを複数回、読み取る）ことによって実行できる。
【０１９４】
ＮＮプロセッサＳｏＣ、チップ内およびチップ間接続
上で詳細に説明したように、ＮＮプロセッサは、ＡＮＮを実装するために使用できる。しかし、実装されるＡＮＮがＮＮプロセッサの容量を超えている場合、本発明はＡＮＮモデルを実装するためにいくつかのＮＮプロセッサを使用する機能を提供する。前述のように、ＮＮプロセッサは、ＮＮプロセッサコア間の通信のための複数のバスインタフェース（例えば、チップ間インタフェース）を含む。本明細書で開示する例では、２つのチップ間インタフェースが提供されるが、任意の数が実装できる。従って、複数のＮＮプロセッサコアの処理能力を組み合わせることにより大規模なＡＮＮモデルに対応できる。
【０１９５】
相互接続されたＮＮプロセッサのネットワークのチップ間インタフェースにわたる配備は実質的にシームレスであることに留意されたい。装置間通信を利用すると、ネットワークの挙動は、単一のＮＮ装置上に含まれるＡＮＮと等しい。一実施形態では、チップ間インタフェースは、層の境界上の帯域幅を狭める技術に沿う。インタフェースの物理層は、同期して、必要な帯域幅を保証する任意の適切なプロトコルを含み得る。次の層は、受信チップによって除去できるフレームフォーマットを搬送するパケット層である。フレームフォーマットの構造は、装置間の移行におけるオーバーヘッドを最小限にしようと試み、例えば、ストリームＩＤ、宛先層、データフォーマットなどを含む、複数のフィールドを含む、イーサネットのそれに類似している。例えば、ＷｘＨｘＦ出力テンソルを有する層を考える。そのプロトコルは、処理が生じる前に、次の装置における構造、ストリームＩＤ、およびネットワークＩＤを識別する。必要な帯域幅はその結果（ＷｘＨｘＦ＋オーバーヘッド）×フレーム／ｓである。
【０１９６】
本発明の第１のマルチＮＮプロセッサＳｏＣシステム例を示す略図が図２４に示されている。一実施形態では、上で説明して、図４および図５に示すようなＮＮプロセッサコア（またはエンジン）は、複製されて、システムオンチップ（ＳｏＣ）として実装できる。ＮＮプロセッサコアに対する知的財産（ＩＰ）は、モノリシック集積回路（ＩＣ）を実装するために使用できる。代替として、物理ＮＮプロセッサコアダイがＳｏＣ上に統合して実装できる。
【０１９７】
モノリシック半導体またはＳｏＣとして実装されると、大まかに７００で参照される、ＮＮプロセッサＳｏＣは、内部バス７１０を介して相互接続された複数のＮＮプロセッサコア７０６、１つ以上の外部インタフェース回路７０２、１つ以上の「外部」Ｌ５メモリ回路７０８、ブートストラップおよび前処理回路７０４、ならびに後処理回路７１２を含む。半導体技術の当業者は任意の数のＮＮプロセッサコアおよび他の構成要素を有するＩＣまたはＳｏＣを実装できるので、ＮＮプロセッサコア、Ｌ５メモリ回路などの数は、図示されるものに制限されないことに留意されたい。
【０１９８】
動作中、ＡＮＮ入力データ７１４は、外部Ｉ／Ｆ７０２を介してＳｏＣ７００に書き込まれる。ブートストラップおよび前処理回路７０４は、例えば、バッファリング、刻時（ｃｌｏｃｋｉｎｇ）、電力管理、データスロットリングなど、を含む、１つ以上の機能を実装に応じて実行するように動作する。データは次いで、処理のためにＮＮプロセッサコア７０６に供給される。ＮＮプロセッサコアは内部バス７１０を通して相互に通信する。ＮＮプロセッサコア間の接続は、フルメッシュ、トークンリング、チェーンなどを含む任意の所望のルーティングタイプを実装に応じて含み得、本発明にとっては重要でないことに留意されたい。ブートストラップおよび前処理回路７０４、外部Ｉ／Ｆ７０２、Ｌ５メモリ７０８、ポストプロセッサ７１２を含む、他の回路構成要素もバスを通して通信することに留意されたい。
【０１９９】
本発明の第２のマルチＮＮプロセッサＳｏＣシステム例を示す略図が図２５に示されている。大まかに７９０で参照される、このシステム例では、複数のＮＮプロセッサコアまたはＳｏＣ７９４が連続的に連結される。ＡＮＮ入力データ７９２が、左端のＮＮプロセッサに入り、ＡＮＮ出力データ７９９が右端のＮＮプロセッサから出る。複数のＮＮプロセッサが一緒に、ＡＮＮモデルを一層ずつ実装する。
【０２００】
本発明の第１のマルチＮＮプロセッサＳｏＣシステム例を示す略図が図２６に示されている。大まかに８００で参照される、このシステム例では、３つのＮＮプロセッサコアまたはＳｏＣ８０４、８０６、８０８が２→１集約方式で結合されて、一緒にＡＮＮモデルを実装する。ＡＮＮ入力データ８０２は入力ポートを通してＮＮプロセッサ８０４、８０６の両方に入力される。この例では、並列接続した２つのＮＮプロセッサコア８０４、８０６が、ＡＮＮモデルを実装するために必要であり、例えば、（１）モデルは膨大な数のニューロンを１つ以上の層内に含む、または（２）ニューロンの数が単一装置の資源制約のいずれか（例えば、制御、メモリもしくは計算）を上回っている、のいずれかである。各ＮＮプロセッサ８０４、８０６の出力はチップ間入力ポートを介してＮＮプロセッサ８０８に入力され、ＮＮプロセッサ８０８はＡＮＮ出力８０９を生成するように機能する。
【０２０１】
本発明の第１のマルチＮＮプロセッサＳｏＣシステム例を示す略図が図２７に示されている。大まかに８１０で参照される、このシステム例では、３つのＮＮプロセッサコアまたはＳｏＣ８１４、８１６、８１８が１→２分散方式で結合されて、一緒にＡＮＮモデルを実装する。ＡＮＮ入力データ８１２は入力ポートを通してＮＮプロセッサ８１４に入力される。ＮＮプロセッサ８１４の出力はＮＮプロセッサ８１６、８１８の両方に入力される。この例では、並列接続した２つのＮＮプロセッサ８１６、８１８が、ＡＮＮモデルを実装するために必要であり、例えば、（１）モデルが膨大な数のニューロンを１つ以上の層内に含む、または（２）ニューロンの数が単一装置の資源制約のいずれか（例えば、制御、メモリもしくは計算）を上回っている、のいずれかである。各ＮＮプロセッサ８１６、８１８によって生成される出力は結合されてＡＮＮ出力８１９を形成する。
【０２０２】
ＡＮＮマッピング方式例
前述のように、ＡＮＮの要件が単一ＮＮプロセッサコアの計算および／またはメモリ資源を超えている場合、ＡＮＮモデルはいくつかの装置にわたって分割できる。コンパイラ／ＳＤＫは、ネットワーク層間およびネットワーク層にわたる分割および併合を可能にするＡＮＮの典型的なセルラー性質をシームレスに活用する。コンパイラ内で、層間帯域幅は層内帯域幅よりも本質的にずっと低いという事実に依存することに加えて、各装置にマッピングされるサブネットワークの入力および出力における帯域幅要求の責任を負いながら、分割は行われる。
【０２０３】
一般に、コンパイラによって実行されるような、装置間マッピングは、装置内に存在する入力および出力ポートの数（例えば、本例では２）によって駆動される。装置上の２つの入力および出力ポートの事例では、マッピング１→２（すなわち、分散）、２→１（すなわち、集約）、および１→１（すなわち、フィードフォワード）に対する柔軟性は、図示されるシステム配列の構築を可能にする。
【０２０４】
図２の第１のＡＮＮ例に対するマッピング方式例を示す略図が図２８に示されている。前述のように、コンパイラ／ＳＤＫは、論理ＡＮＮモデルを物理ＮＮプロセッサ装置にマッピングするように機能する。その分析の結果として、この例では、コンパイラはＡＮＮ全体が単一のＮＮプロセッサ装置における単一のクラスタ３６２内で実装できると判断する。ＡＮＮ内の各ネットワーク層３６５は１つ以上のサブクラスタ３６４にマッピングされ、ＬＣ３６１も割り当てられる。従って、例えば、ネットワーク層１は３つのサブクラスタ、すなわち、ＡＮＮ入力３６３を同様に受信するサブクラスタ１、２および３、にマッピングされる。これらの３つのサブクラスタは、ＬＣ１によって構成および制御される。同様に、ネットワーク層２内のニューロンは、コンパイラによってサブクラスタ４、５、および６にマッピングされてＬＣ２に割り当てられる。ネットワーク層３内のニューロンはサブクラスタ７および８にマッピングされてＬＣ３に割り当てられる。最後に、ネットワーク層４はサブクラスタ９にマッピングされ、ＬＣ４によって構成されて制御される。ＡＮＮ出力３６９はサブクラスタ９によって生成される。
【０２０５】
第２の人工ニューラルネットワーク例を示す略図が図２９に示されている。大まかに７２０で参照される、このＡＮＮ例は、畳込み型ＮＮであり得、層１〜層６を含む、複数の層７２６を含む。層１はＡＮＮ入力７２２を受信し、層６はＡＮＮ出力７２４を生成する。
【０２０６】
図２９のＡＮＮのマルチＮＮプロセッサＳｏＣシステム例を示す略図が図３０に示されている。大まかに７３０で参照される、ＮＮシステムは、ＡＮＮ７２０の本発明のＮＮプロセッサシステムへのマッピングを表す。各ＮＮプロセッサ７３６は別個のＩＣ、または代替として、ＳｏＣ内の別個のダイを含む。
【０２０７】
複雑プロセス中に論理ＡＮＮモデルを物理ＮＮプロセッサ構成にマッピングすることはコンパイラおよびＳＤＫの機能である。この例では、ＮＮプロセッサ１の容量は、計算要素、メモリファブリックなどに関して、層１を実装するのに十分なだけであるため、層１はＮＮプロセッサ１全体にマッピングする。ＮＮプロセッサ１はＡＮＮ入力７３２も受信する。層２および層３は、単一装置内に実装できないようなものであり、従って、並列接続した２つの装置、すなわち、ＮＮプロセッサ２および３が必要とされ、処理はそれらの間で分割される。層４は大きいが、コンパイラは、それは単一装置内に実装できると判断する。従って、ＮＮプロセッサ４全体が層４にマッピングされる。層５および６が、コンパイラによって分析されて、単一のＮＮプロセッサ５装置にマッピングされる。ＮＮプロセッサ５はＡＮＮ出力７３４を生成する。ＮＮプロセッサは、各装置内のチップ間インタフェースを介して、フィードフォワード方法で相互に通信することに留意されたい。
【０２０８】
第３の人工ニューラルネットワーク例を示す略図が図３１に示されている。大まかに７４０で参照される、ＡＮＮ例は、任意の所望のＡＮＮを表すことを意図する。それは、異なるネットワーク層に編成された複数のニューロン７４４を含む。入力データＸ７４６は第１の層に入力され、出力データＹ７４８は最後の層によって生成される。
【０２０９】
図３１のＡＮＮの第１のマルチＮＮプロセッサＳｏＣシステム例を示す略図が図３２に示されている。この例では、大まかに７５０で参照される、第１のマッピングは、コンパイラ／ＳＤＫによって生成され、いくつかのＮＮプロセッサ装置を含む。具体的には、第１の２つのネットワーク層内のニューロン７５６はＮＮプロセッサ１にマッピングされ、第３のネットワーク層はＮＮプロセッサ２にマッピングされ、最後の３つのネットワーク層はＮＮプロセッサ３にマッピングされる。ＡＮＮ入力データ７５２はＮＮプロセッサ１内の第１の層に入力される。ＮＮプロセッサ３はＡＮＮ出力データ７５４を生成する。
【０２１０】
図３１のＡＮＮの第２のマルチＮＮプロセッサＳｏＣシステム例を示す略図が図３３に示されている。この例では、大まかに７６０で参照される、異なるマッピングは、コンパイラ／ＳＤＫによって生成され、いくつかのＮＮプロセッサ装置を含む。具体的には、最初の４つのネットワーク層内のニューロン７６６は、単一装置の容量を超えているので、２つの装置、すなわち、ＮＮプロセッサ１および２の間で分割される。最後の２つのネットワーク層はＮＮプロセッサ３にマッピングされる。ＡＮＮ入力データ７６２はＮＮプロセッサ１および２内の第１の層に入力される。ＮＮプロセッサ３はＡＮＮ出力データ７６４を生成する。
【０２１１】
当業者は、論理と回路ブロックとの間の境界は例示に過ぎないこと、および代替実施形態は論理ブロックもしくは回路要素を併合するか、または機能の代替分解を様々な論理ブロックもしくは回路要素に課すことを認識するであろう。従って、本明細書で示すアーキテクチャは例示に過ぎないこと、および実際、同じ機能を達成する多くの他のアーキテクチャが実装され得ることが理解される。
【０２１２】
同じ機能を達成するための構成要素の任意の配置は、所望の機能が達成されるように効果的に「関連付けられる」。従って、特定の機能を達成するために組み合わされる本明細書の任意の２つの構成要素は、アーキテクチャまたは中間構成要素にかかわらず、所望の機能が達成されるように、相互に「関連付けられている」と見なされ得る。同様に、そのように関連付けられた任意の２つの構成要素は、所望の機能を達成するために相互に「動作可能に接続されている」か、または「動作可能に結合されている」とも見なすことができる。
【０２１３】
さらに、当業者は、前述の動作間の境界は例示に過ぎないことを認識するであろう。複数の動作が単一の動作に組み合わされ得、単一の動作が追加の動作に分散され得、動作は、時間において少なくとも部分的に重なり合って実行され得る。その上、代替実施形態は、特定の動作の複数のインスタンスを含み得、動作の順番は様々な他の実施形態で変更され得る。
【０２１４】
本明細書で使用する用語は、特定の実施形態だけを記述するためであり、本発明を制限することを意図していない。本明細書では、単数形「１つの（ａ）」、「１つの（ａｎ）」および「その（ｔｈｅ）」は、文脈で明示的に別の指示がない限り、複数形も含むことを意図する。用語「含む（ｃｏｍｐｒｉｓｅ）」および／または「含み（ｃｏｍｐｒｉｓｉｎｇ）」は、本明細書で使用される場合、述べられた特徴、整数、ステップ、動作、要素、および／または構成要素の存在を指定するが、１つ以上の他の特徴、整数、ステップ、動作、要素、構成要素、および／もしくはそれらのグループの存在または追加を除外しないことがさらに理解されよう。
【０２１５】
クレームでは、円括弧で囲んだ任意の引用符号は、クレームを制限するものと解釈されるべきでない。クレーム内での「少なくとも１つ」および「１つ以上」などの導入句の使用は、不定冠詞「１つの（ａ）」または「１つの（ａｎ）」による別のクレーム要素の導入が、たとえ同じクレームが導入句「１つ以上」または「少なくとも１つ」および「１つの（ａ）」または「１つの（ａｎ）」などの不定冠詞を含む場合でさえ、かかる導入されたクレーム要素を含む任意の特定のクレームをかかる要素を１つだけ含む発明に制限することを暗示すると解釈すべきではない。定冠詞の使用に関しても同じことが言える。特に指定のない限り、「第１の」、「第２の」などの用語は、かかる用語が記述する要素間を任意に区別するために使用される。従って、これらの用語は必ずしも、かかる要素の時間的または他の優先順位付けを示すことを意図しない。ある手段が相互に異なるクレーム内で列挙されているという単なる事実は、これらの手段の組合せが利益をもたらすために使用できないことを意味しない。
【０２１６】
以下のクレーム内の全ての手段またはステップ＋機能要素の対応する構造、材料、動作、および同等物は、具体的にクレームされたとおり他のクレームされた要素と組み合わせて機能を実行するための、任意の構造、材料、または動作を含むことを意図する。本発明の記述は例示および説明を目的として提示されているが、包括であるか、または開示する形式における本発明に制限することは意図していない。多数の修正および変更が当業者には容易に思い浮かぶので、本発明は本明細書で説明する限られた数の実施形態に制限されないことを意図する。それに応じて、全ての適切な変形、修正および同等物が使用され得、本発明の趣旨および範囲に含まれることが理解されよう。実施形態は、本発明の原理および実際の適用を最も良く説明し、他の当業者が本発明を理解して、企図される特定の使用に適するように様々な実施形態を様々に変更するために、選択されて説明される。
【図１】
2020515989.tif 000012
【図２】
2020515989.tif 000013
【図３】
2020515989.tif 000014
【図４】
2020515989.tif 000015
【図５】
2020515989.tif 000016
【図６】
2020515989.tif 000017
【図７Ａ】
2020515989.tif 000018
【図７Ｂ】
2020515989.tif 000019
【図８】
2020515989.tif 000020
【図９】
2020515989.tif 000021
【図１０】
2020515989.tif 000022
【図１１】
2020515989.tif 000023
【図１２】
2020515989.tif 000024
【図１３】
2020515989.tif 000025
【図１４】
2020515989.tif 000026
【図１５】
2020515989.tif 000027
【図１６】
2020515989.tif 000028
【図１７】
2020515989.tif 000029
【図１８】
2020515989.tif 000030
【図１９】
2020515989.tif 000031
【図２０】
2020515989.tif 000032
【図２１】
2020515989.tif 000033
【図２２】
2020515989.tif 000034
【図２３】
2020515989.tif 000035
【図２４】
2020515989.tif 000036
【図２５】
2020515989.tif 000037
【図２６】
2020515989.tif 000038
【図２７】
2020515989.tif 000039
【図２８】
2020515989.tif 000040
【図２９】
2020515989.tif 000041
【図３０】
2020515989.tif 000042
【図３１】
2020515989.tif 000043
【図３２】
2020515989.tif 000044
【図３３】
2020515989.tif 000045
【国際調査報告】
2020515989.tif 000046
2020515989.tif 000047