(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-05-30
(45)【発行日】2023-06-07
(54)【発明の名称】分離された制御およびデータファブリックを組み込むニューラルネットワークプロセッサ
(51)【国際特許分類】
G06N 3/063 20230101AFI20230531BHJP
【FI】
G06N3/063
(21)【出願番号】P 2019554909
(86)(22)【出願日】2018-04-03
(86)【国際出願番号】 IL2018050393
(87)【国際公開番号】W WO2018185763
(87)【国際公開日】2018-10-11
【審査請求日】2021-03-24
(32)【優先日】2017-04-04
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2017-07-12
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】519357154
【氏名又は名称】ハイロ テクノロジーズ リミテッド
(74)【代理人】
【識別番号】100114775
【氏名又は名称】高岡 亮一
(74)【代理人】
【識別番号】100121511
【氏名又は名称】小田 直
(74)【代理人】
【識別番号】100202751
【氏名又は名称】岩堀 明代
(74)【代理人】
【識別番号】100191086
【氏名又は名称】高橋 香元
(72)【発明者】
【氏名】バウム,アヴィ
(72)【発明者】
【氏名】ダノン,オー
(72)【発明者】
【氏名】ツァイトリン,ハダー
(72)【発明者】
【氏名】シウボタリウ,ダニエル
(72)【発明者】
【氏名】フェイグ,ラミ
【審査官】渡辺 一帆
(56)【参考文献】
【文献】米国特許出願公開第2017/0011288(US,A1)
【文献】特開2002-358500(JP,A)
【文献】MicroPython tutorial,MicroPython1.4 [online],2016年06月01日,インターネット:<URL:https://web.archive.org/web/20160601225557/http://docs.micropython.org/en/v1.4.4/pyboard/pyboard/tutorial/assembler.html>,特に、[10. Inline assembler]
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/02-3/10
(57)【特許請求の範囲】
【請求項1】
1つ以上のネットワーク層を有する人工ニューラルネットワーク(ANN)に対するニューラルネットワーク計算を実行するためのニューラルネットワーク(NN)プロセッサ回路であって、前記回路は、
ニューラルネットワーク計算を実行するために動作し、それにより前記ANN内の複数のニューロンを実装する複数の計算資源および複数のメモリ資源を含む、データプレーンと、
前記データプレーンから分離されておりかつ独立している制御プレーンであって、前記制御プレーンは、前記データプレーンに対する制御信号通知を生成するように動作する、制御プレーンと、
を含み、
前記計算資源および前記メモリ資源は複数レベルに集約されて、各レベルが構成可能でありかつそれ自身の専用ローカルメモリを有す
るプログラム可能な階層を形成し、かつ
前記階層における高位レベルは、
下位レベルよりも、多数の処理要素を有するが、
少なくインスタンス化されてい
る、回路。
【請求項2】
前記制御プレーンは、前記計算資源および前記メモリ資源に対する制御信号通知を生成するように動作する1つ以上のマイクロコードベースのコントローラを含む、請求項1に記載の回路。
【請求項3】
前記マイクロコードベースのコントローラは、条件文も条件分岐も無しで動作する、請求項2に記載の回路。
【請求項4】
前記マイクロコードベースのコントローラは、操作のインライン繰返しをサポートするように動作する、請求項2に記載の回路。
【請求項5】
前記マイクロコードベースのコントローラ内で実行される各マイクロコード命令は、前記計算資源および前記メモリ資源に対する制御信号通知を生成するように動作する、請求項2に記載の回路。
【請求項6】
前記制御プレーンは、実行の開始/停止を示す1つ以上の外部信号に従って実行フローをトリガーするように動作し、それによりデータパイプラインハンドシェイクを可能にする、請求項1に記載の回路。
【請求項7】
前記制御プレーンは、動的に構成可能かつプログラム可能である、請求項2に記載の回路。
【請求項8】
前記制御プレーンは、データ駆動型メモリアクセスを必要とすることなく、制御信号通知を帯域外で実行するように動作する、請求項1に記載の回路。
【請求項9】
前記制御プレーンは、計算資源およびメモリ資源の無駄のない制御信号通知を提供するように動作する、請求項1に記載の回路。
【請求項10】
前記データプレーンと前記制御プレーンとの間の分離は、
前記制御プレーン
のセキュリティ危険
に対する耐性を生じる、請求項1に記載の回路。
【請求項11】
1つ以上のネットワーク層を有する人工ニューラルネットワーク(ANN)に対するニューラルネットワーク計算を実行するためのニューラルネットワーク(NN)プロセッサ回路であって、前記回路は、
複数の処理要素回路を含むデータプレーンであって、各処理要素回路が、ニューラルネットワーク計算を実行するように動作し、それにより前記ANN内の複数のニューロンを実装する、複数の計算要素および複数のメモリ要素を含み、前記複数の処理要素回路は複数レベルに集約されてサブクラスタおよびクラスタ
のプログラム可能な階層を形成し、各サブクラスタおよびクラスタは、構成可能でありかつそれ自身の専用ローカルメモリを有する、データプレーンと、
前記データプレーンから分離されておりかつ独立している制御プレーンであって、前記制御プレーンは、前記複数の処理要素回路に対する制御信号通知を生成するように動作する1つ以上の層コントローラを含む、制御プレーンと、
を含む、回路。
【請求項12】
前記制御プレーンは、マイクロコード命令を実行するように動作する1つ以上のマイクロコードベースのコントローラを含み、各マイクロコード命令は前記計算要素および前記メモリ要素に対する制御信号通知を生成する、請求項11に記載の回路。
【請求項13】
前記1つ以上の層コントローラは、動的に構成可能かつプログラム可能である、請求項12に記載の回路。
【請求項14】
前記1つ以上の層コントローラは、メモリアクセスを必要とすることなく、制御信号通知を帯域外で実行するように動作する、請求項11に記載の回路。
【請求項15】
前記1つ以上の層コントローラは、計算要素およびメモリ要素の無駄のない制御信号通知を提供するように動作する、請求項11に記載の回路。
【請求項16】
集積回路(IC)によって実装された方法であって、前記ICは、1つ以上のネットワーク層を有する人工ニューラルネットワーク(ANN)に対するニューラルネットワーク計算を実行するためのニューラルネットワーク(NN)プロセッサ回路を含み、前記方法は、
前記ANN内の複数のニューロンを実装するニューラルネットワーク計算を実行するために動作する複数の計算資源および複数のメモリ資源を含むデータプレーンを提供することと、
前記データプレーンから分離されておりかつ独立している制御プレーンを提供することであって、前記制御プレーンは、前記データプレーンに対する制御信号通知を生成するように動作することと、
前記計算資源および前記メモリ資源を複数レベルに集約して、各レベルが構成可能でありかつそれ自身の専用ローカルメモリを有す
るプログラム可能な階層を形成することと、
を含み、
前記階層におけ
る高位レベルは、
下位レベルよりも、多数の処理要素を有するが、
少なくインスタンス化されてい
る、方法。
【請求項17】
マイクロコード命令を実行するように動作する前記制御プレーン内の1つ以上のマイクロコードベースのコントローラを利用することにより、前記データプレーンに対する前記制御信号通知を生成することをさらに含み、各マイクロコード命令は前記複数の計算資源および前記複数のメモリ資源に対する制御信号通知を生成する、請求項16に記載の方法。
【請求項18】
前記マイクロコードベースのコントローラを、条件文も条件分岐も使用することなく動作させることを含む、請求項17に記載の方法。
【請求項19】
操作のインライン繰返しをサポートすることをさらに含む、請求項16に記載の方法。
【請求項20】
前記制御プレーンによって、実行の開始/停止を示す1つ以上の外部信号に従って実行フローをトリガーし、それによりデータパイプラインハンドシェイクを可能にすることをさらに含む、請求項16に記載の方法。
【請求項21】
前記制御プレーンは、動的に構成可能かつプログラム可能である、請求項17に記載の方法。
【請求項22】
前記制御プレーン内で、メモリアクセスを必要とすることなく、制御信号通知を帯域外で実行することをさらに含む、請求項16に記載の方法。
【請求項23】
前記制御プレーンによって、計算資源およびメモリ資源の無駄のない制御信号通知を提供することをさらに含む、請求項16に記載の方法。
【請求項24】
前記データプレーンと前記制御プレーンとの間の分離は、
前記制御プレーン
のセキュリティ危険
に対する耐性を生じる、請求項16に記載の方法。
【請求項25】
1つ以上のネットワーク層を有する人工ニューラルネットワーク(ANN)に対するニューラルネットワーク計算を実行するためのニューラルネットワーク(NN)プロセッサ回路であって、前記ニューラルネットワーク計算の実行は、
複数の処理要素回路を含むデータプレーンを提供することであって、各処理要素回路が、ニューラルネットワーク計算を実行するように動作し、それにより前記ANN内の複数のニューロンを実装する、複数の計算要素および複数のメモリ要素を含むことと、
前記複数の処理要素回路を複数レベルに集約してサブクラスタおよびクラスタ
のプログラム可能な階層を形成することであって、各サブクラスタおよびクラスタは、構成可能でありかつそれ自身の専用ローカルメモリを有することと、
前記データプレーンから分離されておりかつ独立している制御プレーンを提供することと、
前記制御プレーン内で、前記複数の処理要素回路に対する制御信号通知を生成することと、
によって実現され、
前記階層における高位レベルは、
下位レベルよりも、多数の処理要素を有するが、
少なくインスタンス化されてい
る、回路。
【請求項26】
前記制御プレーンは、マイクロコード命令を実行するように動作する1つ以上のマイクロコードベースのコントローラを含み、各マイクロコード命令は前記計算要素および前記メモリ要素に対する制御信号通知を生成する、請求項25に記載の回路。
【請求項27】
前記データプレーンと前記制御プレーンとの間の分離は、
前記制御プレーン
のセキュリティ危険
に対する耐性を生じる、請求項25に記載の回路。
【請求項28】
前記制御プレーンは、動的に構成可能かつプログラム可能である、請求項26に記載の回路。
【請求項29】
前記1つ以上の層コントローラは、メモリアクセスを必要とすることなく、制御信号通知を帯域外で実行するように動作する、請求項25に記載の回路。
【請求項30】
前記制御プレーンは、計算要素およびメモリ要素の無駄のない制御信号通知を提供するように動作する、請求項25に記載の回路。
【発明の詳細な説明】
【技術分野】
【0001】
本明細書で開示する主題はニューラルネットワークの分野に関し、より詳細には、分離された制御およびデータプレーンを組み込んでいて、人工ニューラルネットワーク(ANN)を実装するように適合されたニューラルネットワーク(NN)処理エンジンに関する。
【背景技術】
【0002】
人工ニューラルネットワーク(ANN)は、動物の脳を構成する生物の神経ネットワークから発想を得たコンピューティングシステムである。かかるシステムは、例を検討することによって、一般的には、タスク固有のプログラミングなしで、それらタスクの重要な特徴を抽出し、多数の例から一般化することにより、タスクを行うことを学習する、すなわち、性能を次第に改善する。例えば、画像認識では、それらは、手動で「猫」または「猫ではない」とラベル付けされている画像例を解析し、解析結果を使用して他の画像で猫を識別することにより、猫を含む画像を識別することを学習し得る。それらは、ルールベースのプログラミングを使用する従来のコンピュータアルゴリズムで表現することが困難な用途において最も有用であることが分かっている。
【0003】
ANNは、生物脳内の神経に類似した、人工ニューロンと呼ばれる結合されたユニットの集合に基づく。ニューロン間の各結合またはシナプスは、信号を別のニューロンに伝達できる。受信またはポストシナプスニューロンは、別の1つまたはいくつかのニューロンに結合されて、その信号を処理することができ、次いで、軸索とも呼ばれるシナプスを通して結合された下流のニューロンに信号通知できる。ニューロンは、一般に実数値、典型的には0~1の間、によって表現される状態を有し得る。ニューロンおよびシナプスは、学習が進むにつれて変化する重みも有し得、それは、それが下流に送信する信号の強度を増大または低下できる。さらに、それらは閾値を有し得、それにより総合信号(aggregate signal)がそのレベルを下回っているか、または上回っている場合に限り、下流信号が送信される。
【0004】
典型的には、ニューロンは層で編成される。異なる層は、それらの入力に関して異なる種類の変換を実行し得る。信号は、第1の、すなわち、入力層から最後の、すなわち、出力層に、恐らくは、層を複数回横切った後、移動する。
【0005】
ニューラルネットワークアプローチの本来の目的は、ヒトの脳が行うのと同じ方法で問題を解決することであった。時が経つにつれて、マッチング特有の知能に関心が集中して、逆伝播、または逆方向への情報伝達およびその情報を反映するためのネットワークの調整などの、生物学からの逸脱に至った。
【0006】
人工ニューラルネットワークの構成要素は、(1)活性化閾値を有するニューロン、(2)ニューロンの出力を伝達するための結合および重み、(3)ニューロンへの入力を先行ニューロンの出力から計算するための伝搬関数、ならびに(4)所与の入力が、典型的には重みおよび閾値の変更となる所望の結果を生成するために、ニューラルネットワークのパラメータを変更するアルゴリズムである学習則を含む。
【0007】
解決すべき特定のタスク、および関数Fのクラスを所与として、学習は、そのタスクを何らかの最適な意味において解決する関数を見つけるために観測のセットを使用することを伴う。費用関数Cは、最適解に対して、他のどの解も最適解の費用よりも少ない費用を有していないように定義される)。
【0008】
費用関数Cは、特定の解が、解決すべき問題に対する最適解からどれだけ離れているかの尺度である。学習アルゴリズムは、最小の考えられる費用を有する関数を見つけるために解空間内を検索する。
【0009】
ニューラルネットワークは、ANNにおける重みに関して損失関数の勾配を計算する方法である逆伝播を使用して訓練できる。逆伝播の重み更新は、周知の確率的勾配降下技法によって行うことができる。費用関数の選択は、学習タイプ(例えば、教師あり、教師なし、強化)および活性化関数などの、要因によって決まることに留意されたい。
【0010】
3つの主な学習パラダイムがあり、各々、特定の学習タスク、すなわち、教師あり学習、教師なし学習、および強化学習、に対応する。教師あり学習は、例ペアのセットを使用し、目標は、許可されたクラスの関数内で例を一致させる関数を見つけることである。一般的に使用される費用は平均平方誤差であり、それは、ネットワークの出力と全ての例ペアにわたる目標値との間の平均平方誤差を最小限にしようと試みる。多層パーセプトロン(MLP)と呼ばれるニューラルネットワークのクラスに対して勾配降下を使用してこの費用を最小限にすると、ニューラルネットワークを訓練するための逆伝播アルゴリズムが生成される。教師あり学習の例には、パターン認識、すなわち、分類、および回帰、すなわち、関数近似を含む。
【0011】
教師なし学習では、何らかのデータが与えられ、最小限にすべき費用関数は、データおよびネットワークの出力の任意の関数であり得る。費用関数は、タスク(すなわち、モデル領域)および任意の先験的な仮定(すなわち、モデルの暗黙特性、そのパラメータ、および観測変数)によって決まる。教師なし学習のパラダイムに含まれるタスクは、一般に推定問題であり、用途は、クラスタリング、統計的分布の推定、圧縮、およびフィルタリングを含む。
【0012】
強化学習では、データは通常、提供されないが、エージェントの、環境との相互作用によって生成される。各時点において、エージェントはアクションを実行し、環境は、何らかの典型的には未知のダイナミクスに従って観測および即座の費用(instantaneous cost)を生成する。目標は、長期的な費用、例えば、予期される累積費用、の何らかの測定を最小限にするアクションを選択するためのポリシーを発見することである。環境のダイナミクスおよび各ポリシーに対する長期的な費用は通常、未知であるが、推定することはできる。
【0013】
今日、ニューラルネットワークに対する一般的な用途は、ビデオストリームの解析、すなわち、マシンビジョンにおいてである。例は、物品の製造における組立ライン上でマシンビジョンが使用される産業工場、車両の経路および周囲において物体を検出するためにマシンビジョンが使用される自律走行車を含む。
【0014】
人工ニューラルネットワーク(ANN)は、いわゆる「ネットワークモデル」に起因するパラメータのセットに大きく依存する固有の構造を有する。これらのパラメータはしばしば、ネットワークに沿って伝播するときに他の中間値に対するスケーリング係数として動作する傾向に起因して、ネットワークの「重み」と呼ばれる。重みの値を判断するためのプロセスは、上述のように訓練と呼ばれる。一旦、訓練が完了すると、ネットワークは定常状態に落ち着いて、今や、情報を抽出するために新しい(すなわち、未知の)データで使用できる。この段階は「推論」段階と呼ばれる。
【0015】
推論中、パラメータの結果セット、すなわち、重みを観測し、それらを操作してより良い性能(すなわち、表現)をもたらすことができる。重みを削って(prune)量子化するための方法は周知である。しかし、これらの方法は、推論段階に移行する前に、訓練されたモデルにのみ適用される。このアプローチは、より良い実行性能を実際にもたらす。しかし、それは、重みを変更することの可能性を完全には調査も利用もしていない。加えて、一旦、ANNの重みが満足のいくレベルまで収束すると、既存の解は、重みの量子化を訓練後にのみ適用する。
【発明の概要】
【0016】
本発明は、人工ニューラルネットワーク(ANN)を実装するように適合されて、分離された制御およびデータプレーンを組み込んでいるニューラルネットワーク(NN)処理エンジンである。ニューロコンピュータまたはニューロチップとも呼ばれる、NN処理エンジンまたはプロセッサの粒状性質(granular nature)は、ニューラルネットワークの基盤が容易に識別されて、幅広い範囲のニューラルネットワークモデルが非常に効率的な方法で実装されるのを可能にする。NNプロセッサは、(1)計算的側面に関してアーキテクチャを一般化し過ぎることと、(2)計算を専用の計算可能ユニットに集約すること、との間でのバランスの選択においていくらかの柔軟性を提供する。本発明は、ニューラルネットワーク向けの改善されたバランスを提供して、適切な容量で必要な機能を満足しようと試みる。結果として生じるアーキテクチャは従って、より効率的で、ユニットあたりはるかに低消費電力で、実質的に高い計算ユニット密度を提供する。
【0017】
本発明のNNプロセッサのアーキテクチャのいくつかの主な特徴は、次を含む、すなわち、(1)計算ユニットは自己完結型であり、それらの対象タスクを実装するために完全に利用されるように構成される、(2)階層アーキテクチャが均質性および自己相似性を提供し、それにより、複数レベルの階層に集約された、類似の計算ユニットのより単純な管理および制御を可能にする、(3)計算ユニットは可能な限り最小限のオーバーヘッドで設計されて、追加の特徴および機能は、階層(すなわち、集約)のより高いレベルに置かれる、(4)オンチップメモリが、特定の階層における基本操作に対して本質的に必要なコンテンツに対してストレージを提供し、計算資源と最適比で結合される、(5)無駄のない制御が、特定の階層レベルで必要な操作だけを管理するのにちょうど十分な制御を提供する、ならびに(6)動的資源割当アジリティが、可用性および容量に応じて必要とされるとおりに調整できる。
【0018】
本発明の実施形態のこの、追加の、および/もしくは他の態様ならびに/または利点は、以下の詳細な説明に記載されており、恐らくは、詳細な説明から推測でき、かつ/または本発明の実施形態の実施によって学習可能である。
【0019】
従って、本発明に従い、1つ以上のネットワーク層を有する人工ニューラルネットワーク(ANN)に対するニューラルネットワーク計算を実行するためのニューラルネットワーク(NN)プロセッサ回路が提供され、基本的なニューラルネットワーク計算を実行するために動作し、それによりANN内の複数のニューロンを実装する、複数の計算資源および複数のメモリ資源を含むデータプレーン、実質的にデータプレーンから分離された制御プレーンであって、データプレーンに対する制御信号通知を生成するように動作する、制御プレーンを含み、計算資源およびメモリ資源は複数レベルに集約されて階層を形成し、かつ階層におけるより高位レベルはより複雑で、下位レベルよりも少数のインスタンス化を含む。
【0020】
本発明に従い、1つ以上のネットワーク層を有する人工ニューラルネットワーク(ANN)に対するニューラルネットワーク計算を実行するためのニューラルネットワーク(NN)プロセッサ回路も提供され、各処理要素回路が、基本的なニューラルネットワーク計算を実行するように動作し、それによりANN内の複数のニューロンを実装する、複数の計算要素および複数のメモリ要素を含む、複数の処理要素回路を含み、複数の処理要素回路は複数レベルに集約されてサブクラスタおよびクラスタの階層を形成する、データプレーン、実質的にデータプレーンから分離されている制御プレーンであって、複数の処理要素回路に対する制御信号通知を生成するように動作する1つ以上の層コントローラを含む、制御プレーンを含む。
【0021】
本発明に従い、集積回路(IC)によって実装された方法がさらに提供され、ICは、1つ以上のネットワーク層を有する人工ニューラルネットワーク(ANN)に対するニューラルネットワーク計算を実行するためのニューラルネットワーク(NN)プロセッサを含み、本方法は、ANN内の複数のニューロンを実装する基本的なニューラルネットワーク計算を実行するために動作する複数の計算資源および複数のメモリ資源を含むデータプレーンを提供すること、実質的にデータプレーンから分離されていて、データプレーンに対する制御信号通知を生成するように動作する、制御プレーンを提供すること、計算資源およびメモリ資源を複数レベルに集約して階層を形成することを含み、階層におけるより高位レベルはより複雑で、下位レベルよりも少数のインスタンス化を含む。
【0022】
本発明に従い、1つ以上のネットワーク層を有する人工ニューラルネットワーク(ANN)に対するニューラルネットワーク計算を実行するためのニューラルネットワーク(NN)プロセッサ回路も提供され、各処理要素回路が、基本的なニューラルネットワーク計算を実行するように動作し、それによりANN内の複数のニューロンを実装する、複数の計算要素および複数のメモリ要素を含む、複数の処理要素回路を含むデータプレーンを提供すること、複数の処理要素回路を複数レベルに集約してサブクラスタおよびクラスタの階層を形成すること、実質的にデータプレーンから分離されている制御プレーンを提供すること、制御プレーン内で、複数の処理要素回路に対する制御信号通知を生成することを含み、階層におけるより高位レベルはより複雑で、下位レベルよりも少数のインスタンス化を含む。
【0023】
本発明は、以下の例示的な実施形態で、図面を参照してさらに詳細に説明され、図中、同一または類似の要素は同じか、または類似の参照番号によって一部、示され得、様々な例示的実施形態の特徴は結合可能である。本発明は、添付の図面を参照して、ほんの一例として、本明細書で説明される。
【図面の簡単な説明】
【0024】
【
図1】本発明の1つ以上の部分を実装するように適合されたコンピュータ処理システム例を示すブロック図である。
【
図2】第1の人工ニューラルネットワーク例を示す略図である。
【
図3】ニューラルネットワーク処理システムのための多層抽象化例を示す略図である。
【
図4】1つ以上のNN処理コアを含むSoCベースのNN処理システム例を示すハイレベルブロック図である。
【
図5】NN処理コア例をさらに詳細に示すハイレベルブロック図である。
【
図6】第1の低レベル処理要素(PE)例をさらに詳細に示すブロック図である。
【
図7A】第2の低レベル処理要素(PE)例をさらに詳細に示すブロック図である。
【
図7B】PEのクワッド乗算器(quad multiplier)をさらに詳細に示すブロック図である。
【
図8】第1のサブクラスタ例をさらに詳細に示すハイレベルブロック図である。
【
図9】第2のサブクラスタ例をさらに詳細に示すハイレベルブロック図である。
【
図10】第1のクラスタ例をさらに詳細に示すハイレベルブロック図である。
【
図11】第2のクラスタ例をさらに詳細に示すハイレベルブロック図である。
【
図12】クラスタ間クロスコネクトをさらに詳細に示すハイレベルブロック図である。
【
図13】第1のメモリウィンドウイング方式例を示す略図である。
【
図14】第2のメモリウィンドウイング方式例を示す略図である。
【
図15】ウィンドウサイズおよびコンピュータアクセス構成可能性を含む計算要素とメモリ要素との間の第1のメモリアクセス可能性例を示す略図である。
【
図16】計算要素とメモリ要素との間の第2のメモリアクセス可能性例を示す略図である。
【
図17】分散/集約ベースの資源ウィンドウイング技術例を示す略図である。
【
図18】メモリ競合解決方式例を示すブロック図である。
【
図19】第1の層コントローラ例をさらに詳細に示すハイレベルブロック図である。
【
図20】L3メモリおよびサブクラスタに対する層コントローラインタフェースをさらに詳細に示すハイレベルブロック図である。
【
図21】第2の層コントローラ例をさらに詳細に示すハイレベルブロック図である。
【
図22】NNプロセッサのコンパイラ/SDK例を示すハイレベルブロック図である。
【
図23】NNプロセッサおよび関連メモリの柔軟な処理粒度対待ち時間のトレードオフを示す略図である。
【
図24】本発明の第1のマルチNNプロセッサSoCシステム例を示す略図である。
【
図25】本発明の第2のマルチNNプロセッサSoCシステム例を示す略図である。
【
図26】本発明の第1のマルチNNプロセッサSoCシステム例を示す略図である。
【
図27】本発明の第1のマルチNNプロセッサSoCシステム例を示す略図である。
【
図28】
図2の第1の人工ニューラルネットワーク例に対するマッピング方式例を示す略図である。
【
図29】第2の人工ニューラルネットワーク例を示す略図である。
【
図30】
図29のANNのマルチNNプロセッサSoCシステム例を示す略図である。
【
図31】第3の人工ニューラルネットワーク例を示す略図である。
【
図32】
図31のANNの第1のマルチNNプロセッサSoCシステム例を示す略図である。
【
図33】
図31のANNの第2のマルチNNプロセッサSoCシステム例を示す略図である。
【発明を実施するための形態】
【0025】
以下の詳細な説明では、本発明の完全な理解を提供するために多数の具体的詳細が説明される。しかし、本発明はこれら具体的詳細がなくても実施され得ることが当業者によって理解されよう。他の場合、周知の方法、手順、および構成要素は、本発明を曖昧にしないために詳細には説明されていない。
【0026】
開示されていない利点および改善のうち、本発明の他の目的および利点は、付随の図面と併せて以下の説明から明らかになるであろう。本発明の詳細な実施形態が本明細書で開示されるが、開示される実施形態は、様々な形で具現化され得る本発明の例示に過ぎないことが理解される。加えて、本発明の様々な実施形態に関連して与えられる例の各々は、例示を意図しており、制限することは意図していない。
【0027】
本発明と見なされる主題は、本明細書の最終部分で具体的に指摘されて明確にクレームされる。しかし、本発明は、構成および操作の方法の両方に関して、その目的、特徴、および利点と共に、添付の図面と併せて読む場合に、以下の詳細な説明を参照することにより最もよく理解され得る。
【0028】
図面は本明細書の一部を構成して、本発明の例示的な実施形態ならびにそれらの様々な目的および特徴を含む。さらに、図面は必ずしも原寸に比例しておらず、いくつかの特徴は特定の構成要素の詳細を示すために誇張され得る。加えて、図面に示す任意の測定、仕様および同様のものは例示を意図しており、制限することは意図していない。それ故、本明細書で開示する特定の構造的および機能的詳細は制限として解釈されるべきではなく、本発明を様々に採用する当業者を教示するための代表的な基礎にすぎない。さらに、適切であると考えられる場合、参照番号は、対応するか、または類似した要素を示すために図面間で繰り返され得る。
【0029】
本発明の例示する実施形態は大抵の場合、当業者に知られている電子部品および回路を使用して実装され得るので、本発明の基礎となる概念の理解および評価のため、ならびに本発明の教示を曖昧にしないか、または教示から逸れないために、詳細は、必要と考えられる程度を超えては説明されない。
【0030】
一方法に対する本明細書での任意の言及は、変更すべきところは変更して、本方法を実行可能なシステムに当てはまるはずである。一システムに対する本明細書での任意の言及は、変更すべきところは変更して、本システムによって実行され得る方法に当てはまるはずである。
【0031】
本明細書およびクレームを通して、以下の用語は、その内容について別段の明確な指示がない限り、本明細書で明示的に関連付けられた意味をとる。句「一実施形態では」、「一実施形態例では」、および「いくつかの実施形態では」は本明細書では、必ずしも同じ実施形態(複数可)に言及していないが、その可能性はあり得る。さらに、句「別の実施形態では」、「代替実施形態では」、および「いくつかの他の実施形態では」は本明細書では、必ずしも異なる実施形態(複数可)に言及していないが、その可能性はあり得る。従って、以下で説明するように、本発明の様々な実施形態は、本発明の範囲または趣旨から逸脱することなく、容易に組み合され得る。
【0032】
加えて、本明細書では、用語「または」は包含的「論理和(or)」演算子であり、その内容について別段の明確な指示がない限り、用語「および/または」と同等である。用語「~に基づく」は排他的ではなく、その内容について別段の明確な指示がない限り、説明されていない追加の要因に基づくのを可能にする。追加として、本明細書を通して、「1つの(a)」、「1つの(an)」、および「その(the)」の意味は複数の参照を含む。「~内(in)」の意味は、「~内(in)」および「~上(on)」を含む。
【0033】
当業者によって理解されるように、本発明は、システム、方法、コンピュータプログラム製品またはそれらの任意の組合せとして具現化され得る。それに応じて、本発明は、完全にハードウェア実施形態、完全にソフトウェア実施形態(ファームウェア、常駐ソフトウェア、マイクロコードなどを含む)または本明細書で全て一般に「回路」、「モジュール」または「システム」と呼ばれ得るソフトウェアおよびハードウェア態様を組み合わせる実施形態の形を取り得る。さらに、本発明は、媒体内に具現化されたコンピュータ利用可能プログラムコードを有する任意の有形的表現媒体内に具現化されたコンピュータプログラム製品の形を取り得る。
【0034】
本発明は、コンピュータによって実行される、プログラムモジュールなどの、コンピュータ実行可能命令の一般的コンテキストで説明され得る。一般に、プログラムモジュールは、特定のタスクを実行するか、または特定の抽象データ型を実装する、ルーチン、プログラム、オブジェクト、構成要素、データ構造などを含む。本発明は、通信ネットワークを通して結合されるリモート処理装置によってタスクが実行される分散コンピューティング環境でも実施され得る。分散コンピューティング環境では、プログラムモジュールは、メモリ記憶装置を含む、ローカルおよびリモート両方のコンピュータ記憶媒体内に配置され得る。
【0035】
1つ以上のコンピュータ使用可能またはコンピュータ可読媒体(複数可)の任意の組合せが利用され得る。コンピュータ使用可能またはコンピュータ可読媒体は、例えば、電子、磁気、光、電磁、赤外線、もしくは半導体システム、機器、装置、または伝搬媒体であり得るが、それらに制限されない。コンピュータ可読媒体のもっと具体的な例(包括的でないリスト)は以下を含む、すなわち、1本以上のワイヤーを有する電気的接続、可搬型コンピュータディスケット、ハードディスク、ランダムアクセスメモリ(RAM)、読み取り専用メモリ(ROM)、消去可能プログラマブル読取り専用メモリ(EPROMまたはフラッシュメモリ)、光ファイバ、可搬型読み取り専用コンパクトディスク(CDROM)、光学式記憶装置、インターネットもしくはイントラネットをサポートするような伝送媒体、または磁気記憶装置。プログラムは、例えば、紙または他の媒体の光学読み取りによって、電子的に捕捉でき、次いで、必要ならば、コンパイル、解釈、または適切な方法で処理され、その後、コンピュータメモリ内に格納できるので、コンピュータ使用可能またはコンピュータ可読媒体は、プログラムが印刷される紙または別の適切な媒体でさえあり得ることに留意されたい。本文書のコンテキストでは、コンピュータ使用可能またはコンピュータ可読媒体は、命令実行システム、機器、もしくは装置によって使用されるか、またはそれらと接続された、プログラムを含むか、または格納できる任意の媒体であり得る。
【0036】
本発明の操作を実行するためのコンピュータプログラムコードは、Java、Smalltalk、C++、C#または同様のものなどの、オブジェクト指向プログラミング言語、「C」プログラミング言語などの、従来型の手続き型プログラミング言語、ならびにPrologおよびLispなどの関数型言語、機械コード、アセンブラまたは任意の他の適切なプログラミング言語を含む、1つ以上のプログラミング言語の任意の組合せで書かれ得る。プログラムコードは、完全にユーザーのコンピュータ上で、一部ユーザーのコンピュータ上で、スタンドアロンソフトウェアパッケージとして、一部ユーザーのコンピュータ上でかつ一部リモートコンピュータ上で、または完全にリモートコンピュータもしくはサーバー上で実行され得る。後者のシナリオでは、リモートコンピュータは、例えば、ローカルエリアネットワーク(LAN)もしくはワイドエリアネットワーク(WAN)を含む、任意のタイプのネットワークプロトコルを使用して、任意のタイプのネットワークを通してユーザーのコンピュータに接続され得るか、または接続は外部コンピュータに対して(例えば、インターネットサービスプロバイダを使用してインターネットを通して)行われ得る。
【0037】
本発明は、以下で、本発明の実施形態に従った方法、機器(システム)ならびにコンピュータプログラム製品の流れ図および/またはブロック図を参照して説明される。流れ図および/またはブロック図の各ブロック、ならびに流れ図および/またはブロック図内のブロックの組合せは、コンピュータプログラム命令によって実装またはサポートできることが理解されよう。これらのコンピュータプログラム命令は、マシンを作成するために、汎用コンピュータ、専用コンピュータ、または他のプログラマブルデータ処理装置のプロセッサに提供され得、それにより、コンピュータまたは他のプログラマブルデータ処理装置のプロセッサによって実行される命令は、流れ図および/またはブロック図のブロックもしくは複数のブロック内で指定された機能/動作を実装するための手段を作成する。
【0038】
これらのコンピュータプログラム命令はまた、コンピュータまたは他のプログラマブルデータ処理装置に指示して特定の方法で機能させることができる、コンピュータ可読媒体に格納され得、それにより、コンピュータ可読媒体内に格納された命令は、流れ図および/またはブロック図のブロックもしくは複数のブロック内で指定された機能/動作を実装する命令手段を含む製品を生成する。
【0039】
コンピュータプログラム命令はまた、一連の操作ステップをコンピュータまたは他のプログラマブルデータ処理装置上で実行させるためにコンピュータまたは他のプログラマブルデータ処理装置にロードされてコンピュータ実装プロセスを生成し得、それによりコンピュータまたは他のプログラマブルデータ処理装置上で実行する命令は、流れ図および/またはブロック図のブロックもしくは複数のブロック内で指定された機能/動作を実装するためのプロセスを提供する。
【0040】
本発明は、多数の汎用もしくは専用コンピューティングシステム環境または構成で操作可能である。本発明での使用に適し得る周知のコンピューティングシステム、環境、および/または構成の例には、パーソナルコンピュータ、サーバーコンピュータ、クラウドコンピューティング、ハンドヘルドまたはラップトップ装置、マルチプロセッサシステム、マイクロプロセッサ、マイクロコントローラもしくはマイクロコンピュータベースシステム、セットトップボックス、プログラム可能な家庭用電化製品、ASICまたはFPGAコア、DSPコア、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、前述のシステムもしくは装置のいずれかを含む分散コンピューティング環境、および同様のものを含むが、それらに制限されない。
【0041】
加えて、本発明は、オートメーション工場、自律走行車内、タブレットおよびスマートフォンなどのモバイル機器内で見られるような、ビデオおよびスチルカメラ、センサーなどを組み込んでいるシステム、送電網内に設置されたスマートメーターならびにロボットネットワーク用の制御システム内で動作可能である。一般に、エージェントをホストできる任意の計算装置が、本発明を実装するために使用できる。
【0042】
本発明の1つ以上の部分を実装するように適合されたコンピュータ処理システム例を示すブロック図が
図1に示されている。大まかに10で参照される、本発明を実装するためのコンピュータ処理システム例は、汎用コンピューティング装置11を含む。コンピューティング装置11は、中央処理装置(CPU)12、ホスト/PIC/キャッシュブリッジ20および主メモリ24を含む。
【0043】
CPU12は、1つ以上の汎用CPUコア14および任意選択として1つ以上の専用コア16(例えば、DSPコア、浮動小数点、GPU、およびニューラルネットワーク最適化コア)を含む。1つ以上の汎用コアは汎用演算コードを実行し、他方、専用コアはそれらの目的に特化した機能を実行する。CPU12は、CPUローカルバス18を通してホスト/PCI/キャッシュブリッジまたはチップセット20に結合される。第2レベル(すなわち、L2)のキャッシュメモリ(図示せず)は、チップセット内のキャッシュコントローラに結合され得る。いくつかのプロセッサに対して、外部キャッシュはL1または第1レベルキャッシュを含み得る。ブリッジまたはチップセット20は、メモリバス20を介して主メモリ24に結合する。主メモリは、ダイナミックランダムアクセスメモリ(DRAM)もしくはEDO(extended data out)メモリ、またはROM、スタティックRAM、フラッシュなどの他のタイプのメモリ、および不揮発性スタティックランダムアクセスメモリ(NVSRAM)、バブルメモリなどを含む。
【0044】
コンピューティング装置11は、システムバス26(例えば、PCI)を介してCPUに結合された様々なシステム構成要素も含む。ホスト/PCI/キャッシュブリッジまたはチップセット20は、PCI(peripheral component interconnect)バスなどの、システムバス26に対してインタフェースする。システムバス26は、様々なバスアーキテクチャのいずれか使用するいくつかのタイプの周知のバス構造のいずれかを含み得る。アーキテクチャ例は、業界標準アーキテクチャ(ISA)バス、マイクロチャネルアーキテクチャ(MCA)バス、拡張ISA(EISA)バス、VESA(Video Electronics Standards Associate)ローカルバスおよびメザニン(Mezzanine)バスとしても知られているPCI(Peripheral Component Interconnect)バスを含む。
【0045】
システムバスに接続された様々な構成要素は、不揮発性メモリ(例えば、ディスクベースのデータ記憶)28、ディスプレイ32に接続されたビデオ/グラフィックスアダプタ30、例えば、マウス34、タブレット35、マイクロホン36、キーボード38およびモデム40などの1つ以上の入力装置に接続されたユーザー入力インタフェース(I/F)コントローラ31、ネットワークインタフェースコントローラ42、プリンタ54およびスピーカ56などの1つ以上の外部周辺機器に接続された周辺インターフェースコントローラ52を含むが、それらに制限されない。ネットワークインタフェースコントローラ42は、データ記憶46、1つ以上のリモートアプリケーション50を実行しているリモートコンピュータ48などの、1つ以上の装置に、インターネットクラウド、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、ストレージエリアネットワーク(SAN)などを含み得るネットワーク44を介して結合される。小規模コンピュータシステムインタフェース(SCSI)アダプタ(図示せず)も、システムバスに結合され得る。SCSIアダプタは、CD-ROMドライブ、テープドライブなどの様々なSCSI装置に結合できる。
【0046】
不揮発性メモリ28は、様々な取り外し可能/固定型の、揮発性/不揮発性コンピュータ記憶媒体を含み得、例えば、固定型の不揮発性磁気媒体から読み取るか、またはそれに書き込むハードディスクドライブ、取り外し可能な不揮発性磁気ディスクから読み取るか、またはそれに書き込む磁気ディスクドライブ、CD ROMもしくは他の光媒体などの取り外し可能な不揮発性光ディスクから読み取るか、またはそれに書き込む光ディスクドライブなどである。例示的な動作環境で使用できる他の取り外し可能/固定型の、揮発性/不揮発性コンピュータ記憶媒体は、磁気テープカセット、フラッシュメモリカード、デジタル多用途ディスク、デジタルビデオテープ、ソリッドステートRAM、ソリッドステートROM、および同様のものを含むが、それらに制限されない。
【0047】
ユーザーは、ユーザー入力インタフェース31に接続された入力装置を通して、コマンドおよび情報をコンピュータに入力し得る。入力装置の例は、キーボードおよびポインティングディバイス、マウス、トラックボールまたはタッチパッドを含む。他の入力装置は、マイクロホン、ジョイスティック、ゲームパッド、衛星放送受信アンテナ、スキャナなどを含み得る。
【0048】
コンピュータ11は、リモートコンピュータ48などの、1つ以上のリモートコンピュータへの接続を介して、ネットワーク化環境内で動作し得る。リモートコンピュータは、パーソナルコンピュータ(PC)、サーバー、ルーター、ネットワークPC、ピア装置(peer device)または他の一般的なネットワークノードを含み得、典型的には、上で説明した要素の多数または全部を含む。かかるネットワーキング環境は、オフィス、企業規模のコンピュータネットワーク、イントラネットおよびインターネット内で一般的である。
【0049】
LANネットワーキング環境内で使用される場合、コンピュータ11は、ネットワークインタフェース42を介してLAN44に接続される。WANネットワーキング環境内で使用される場合、コンピュータ11は、インターネットなどの、WANを通して通信を確立するために、モデム40または他の手段を含む。内部または外部であり得る、モデム40は、ユーザー入力インタフェース31、または他の適切な機構によって、システムバス26に接続される。
【0050】
大まかに10で参照される、コンピューティングシステム環境は、適切なコンピューティング環境の例であり、本発明の使用または機能の範囲に関していかなる制限も示唆することを意図しない。また、コンピューティング環境は、例示的な動作環境で示される構成要素の任意の1つまたは組合せに関して、依存関係または要件を有すると解釈されるべきでもない。
【0051】
一実施形態では、本発明のシステムおよび方法を実装するように適合されたソフトウェアはクラウド内にも常駐できる。クラウドコンピューティングは、サービスを配信するシステムの物理的な位置および構成をエンドユーザーが知る必要のない、計算、ソフトウェア、データアクセスおよびストレージサービスを提供する。クラウドコンピューティングは、任意の申込みベースまたはペイパーユース方式のサービスを包含し、典型的には、動的に拡張可能で、多くの場合仮想化された資源の提供を伴う。クラウドコンピューティングプロバイダは、インターネットを介してアプリケーションを配信し、それはウェブブラウザからアクセスでき、他方、ビジネスソフトウェアおよびデータは、リモート位置におけるサーバー上に格納される。
【0052】
別の実施形態では、本発明のシステムおよび方法を実装するように適合されたソフトウェアはコンピュータ可読媒体上に常駐するように適合される。コンピュータ可読媒体は、コンピュータによってアクセスでき、コンピュータによる後の読取りのために、本発明の方法を実装するコンピュータプログラムを格納可能な任意の利用可能な媒体であり得る。コンピュータ可読媒体は、揮発性および不揮発性媒体、取り外し可能および固定型媒体の両方を含む。限定ではなく例として、コンピュータ可読媒体は、コンピュータ記憶媒体および通信媒体を含み得る。コンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュールまたは他のデータなどの、情報格納のための任意の方法または技術で実装された揮発性および不揮発性、取り外し可能および固定型の媒体を含む。コンピュータ記憶媒体は、RAM、ROM、EEPROM、フラッシュメモリもしくは他のメモリ技術、CD-ROM、デジタル多用途ディスク(DVD)もしくは他の光ディスク記憶、磁気カセット、磁気テープ、磁気ディスク記憶もしくは他の磁気記憶装置、または所望の情報を格納するために使用でき、コンピュータによってアクセスできる、任意の他の媒体を含むが、それらに制限されない。通信媒体は典型的には、コンピュータ可読命令、データ構造、プログラムモジュールまたはディスクドライブユニット内の磁気ディスクなどの他のデータを具現化する。本発明のシステムおよび方法を実装するように適合されたソフトウェアは、全部または一部において、スタティックもしくはダイナミック主メモリ内、またはコンピュータシステムのプロセッサ内のファームウェア内(すなわち、マイクロコントローラ、マイクロプロセッサまたはマイクロコンピュータ内部メモリ内)にも常駐し得る。
【0053】
本発明のシステムおよび方法を実装するために他のデジタルコンピュータシステム構成も採用でき、特定のシステム構成が本発明のシステムおよび方法を実装可能な限度において、それは、
図1の代表的なデジタルコンピュータシステムと同等であり、本発明の趣旨および範囲内である。
【0054】
一旦、それらが、本発明のシステムおよび方法を実装するプログラムソフトウェアからの命令に従って特定の機能を実行するようにプログラムされると、かかるデジタルコンピュータシステムは事実上、本発明の方法に対応する専用コンピュータになる。このために必要な技術はコンピュータシステムの当業者に周知である。
【0055】
本発明のシステムおよび方法を実装するコンピュータプログラムは一般に、フロッピィディスク、CDROM、DVD、フラッシュメモリ、携帯型ハードディスクドライブなどの配布媒体上でユーザーに配信されることに留意されたい。そこから、それらは多くの場合、ハードディスクまたは類似の中間記憶媒体にコピーされる。プログラムが実行される場合、それらは、それらの配布媒体またはそれらの中間記憶媒体のいずれかから、コンピュータの実行メモリにロードされ、本発明の方法に従って動作するようにコンピュータを構成する。これらの操作全ては、コンピュータシステムの当業者に周知である。
【0056】
図面の流れ図およびブロック図は、本発明の様々な実施形態に従ったシステム、方法およびコンピュータプログラム製品の考えられる実施態様のアーキテクチャ、機能および操作を示す。これに関して、流れ図またはブロック図内の各ブロックは、コードのモジュール、セグメント、または部分を表し得、それは、指定された論理関数(複数可)を実装するための1つ以上の実行可能命令を含む。いくつかの代替実施態様では、ブロック内に記された機能は、図面に記された順序を外れて生じ得ることにも留意すべきである。例えば、連続して示されている2つのブロックは、実際には、実質的に同時に実行され得るか、またはブロックは時々、関与する機能に応じて、逆順で実行され得る。ブロック図および/または流れ図の各ブロック、ならびにブロック図および/または流れ図内のブロックの組合せは、指定された機能もしくは動作を実行する専用ハードウェアベースのシステムによって、または専用ハードウェアおよびコンピュータ命令の組合せによって、実装できることにも留意されたい。
【0057】
ニューラルネットワーク(NN)処理コア
ANNは本質的に、非常に高いレベルにおいて、入力空間と出力空間との間をマッピングする、多数のパラメータをもつ関数である。従って、ANNは、一連の計算と見なすことができる。しかし、ANNは、ある内部構造およびプロパティのセットを有する。この独特の構造を考慮すると、ニューラルネットワーク(NN)プロセッサは、同じか、または同様の数学的操作を実行する複数の基本計算ユニットを含み、それらは統合されると、ニューラルネットワークを構成する。
【0058】
本明細書では、ネットワークを一意的に記述するために次の表記法が使用される:
【数1】
式中、X
<S>は、ある構造Sによって特性化された、入力データセットを表し、
Y
<T>は、Tによって示される形式をもつ出力データセットを表し、
M
<W>は、パラメータまたは重み(W)のセットを所与として、入力を出力にマッピングする関数である、ANNモデルを表す。
【0059】
人工ニューラルネットワーク例を図解する略図が
図2に示されている。大まかに350で参照される、ANN例は、ネットワーク層1~4を含む、4つのネットワーク層352を含む。各ネットワーク層は複数のニューロン354を含む。入力X
1~X
14はネットワーク層1に対する入力である。重み358がネットワーク層内の各ニューロンの入力に適用される。最終出力359、出力1~3が生成されるまで、1つのネットワーク層の出力が次のネットワーク層に対する入力を形成する。
【0060】
一実施形態では、本発明のアーキテクチャは、人工ニューラルネットワークの計算ニーズに最大限応える多層アーキテクチャ(すなわち、ANN層とは呼ばれない)を含む。多層という用語は、抽象化の様々なレベルにおける全体的なソリューションを記述するネットワーキングに対する周知のISO OSI層モデルのそれと類似したアプローチを指す。
【0061】
ニューラルネットワーク処理システムのための多層抽象化例を図解する略図が
図3に示されている。大まかに410で参照される、ニューラルネットワーク処理のための等価モデルは:様々なユニットを構成する物理プリミティブ(physical primitive)を含む層1(物理412)、ニューラルネットワークの基礎となる基本計算ユニットを含む層2(ユニット414)、ネットワーク接続を提供する相互接続ファブリックを含む層3(相互接続416)、ネットワークレベルフロー制御、モニタリングおよび診断を提供する層4(管理418)、アプリケーション層インタフェースを提供してアーキテクチャプリミティブにマッピングする層5(インタフェース420)、ならびにニューラルネットワークベースのアプリケーションを含む層6(アプリケーション422)を含む、6つの層を含む。
【0062】
1つ以上のNN処理コアを含むシステムオンチップ(SoC)NN処理システム例を図解するハイレベルブロック図が
図4に示されている。大まかに100で参照される、SoC NN処理システムは、任意選択として1つ以上の適切なチップ間インタフェースを介して1つ以上の追加の内部もしくは外部NNプロセッサ104に結合された少なくとも1つNNプロセッサ集積回路(またはコア)102、NNプロセッサをチップ要素108上の様々なシステムに結合するように適合されたバスファブリック106、マイクロコントローラユニット(MCU)サブシステム118、および1つ以上のインタフェース126を含む。
【0063】
一実施形態では、SoC108はブートストラップ回路ブロック110、デバッグ回路ブロック112、電力回路ブロック114、およびクロック回路ブロック116を含む。MCUサブシステム118は、コントローラ回路ブロック120、命令メモリ122、およびデータメモリ124を含む。インタフェース126はピンマルチプレクサ139、ならびにカメラシリアルインターフェース(CSI)128、ディスプレイシリアルインタフェース(DSI)、イーサネット132、ユニバーサルシリアルバス(USB)134、I2C(inter-integrated circuit)インタフェース136、シリアル周辺機器インタフェース(SPI)137、およびコントローラエリアネットワーク(CAN)インタフェース138を含む1つ以上の周知のインタフェースを含む。異なるインタフェースの任意の組合せが実装され得るので、これらのインタフェースは一例として示されていることに留意されたい。
【0064】
NN処理コア例をより詳細に図解するハイレベルブロック図が
図5に示されている。NN処理エンジンまたはコア60は、いくつかの階層的計算ユニットを含む。最も低い階層レベルは、個々のニューロンがその中で実装されるそれ自身の専用内部層1またはL1メモリ78をもつ処理要素(PE)76である。複数のN個のPE76は専用層2またはL2メモリ74と共に、サブクラスタ70と命名された次の階層レベルを構成する。複数のM個のサブクラスタ70は、専用層3またはL3メモリ72、複数の活性化関数回路80、および複数の層コントローラ(LC)回路82と共に、クラスタ66を構成する。複数のL個のクラスタは専用層4またはL4メモリ64と共にNNプロセッサコア60内にあり、それは、NNマネージャ回路62、およびオフチップ層5またはL5メモリ98へのメモリインタフェース68も含む。複数のバスインタフェース86(すなわち、チップ間インタフェース)は、追加のネットワーク容量のために、NNプロセッサを他のオフチップNNプロセッサチップに結合する。バスインタフェース84(すなわち、チップ間インタフェース)は、NNプロセッサを、CPU90、命令メモリ92およびデータメモリ94を含む従来型のルールベースマシン(RBM)コプロセッサ88に結合する。代替実施形態では、RBMコプロセッサは任意選択として、適切なインタフェース、例えば、GPU、I
2Cなどを介して、NN装置60に結合される。
【0065】
NNプロセッサ実施形態例では、PEはP=16ニューロンを含み、サブクラスタはN=64のPEを含み、クラスタはM=64のサブクラスタを含み、NNコアはL=8のクラスタを含むことに留意されたい。任意の所望の数の階層レベルおよび任意の数の計算ユニットを各レベル内に有するNNプロセッサが実装され得、例示目的のみで提供される本明細書で説明する例に制限されないことが理解される。加えて、任意の数の活性化関数80および層コントローラ82が、NNプロセッサの設計目標および特定の実施態様に応じて、クラスタレベル内または任意の他のレベル内で実装され得る。
【0066】
一実施形態では、NNマネージャ62は、2つのデータパイプ:1つの並列および1つの直列を、ネットワークファブリックを駆動するための関数と共に制御する、専用プロセッサである。このプロセッサは、ニューラルネットワークの制御プレーンに固有の専用操作を実行する。操作例には、推論(Infer)、訓練(Train)、重みのロード(Load weights)、および重みの更新(Update weights)を含むが、それらに制限されない。負荷分散および資源割当ては、外部ソフトウェアツールチェーンによって処理され、それは、これらのタスクに対処する、コンパイラ、マッパー、およびアロケータを含むツールのセットを含む。
【0067】
一実施形態では、NNプロセッサは、重みの格納のための共有メモリを含み、専用メモリ要素はコンテキストの格納用で、それにより比較的高いデータ処理帯域幅を可能にする。加えて、NNプロセッサは、厳密に相互に分離されて、計算要素に対して帯域外制御を提供する、データおよび制御プレーンを含む。その上、NNプロセッサは、集約レベル間に構成可能な相互接続を含み、ダイナミックでプログラム可能なデータパイプラインをもたらす。
【0068】
別の実施形態では、NNプロセッサは、複数のANNを並列接続で実装することが可能であり、各ANNは1つ以上のネットワーク層を有する。NNプロセッサは、ANNと関連付けられた1つ以上の入力データストリームを同時に処理するように適合される。NN装置のアーキテクチャはANNの構造に似ているので、複数のANNは、単一の幅広いANNと見なすことができる。複数のANNを配備する場合、十分な資源を所与として、外部ツールチェーン内のマッパーは利用可能な資源をマッピングするように動作し、他方、NNマネージャは事象トリガーを制御することに留意されたい。この場合、装置の膨大な並列性(parallelism)に起因して、ANNの「層」内に分類された資源の各セットは相互に独立している。
【0069】
加えて、NNプロセッサの計算要素は入力データストリームのサブセットの任意の所望の粒度で機能するように動作し、それにより、以下でさらに詳細に説明するように、メモリ要素使用と待ち時間との間でトレードオフする。
【0070】
本発明のNNプロセッサはその実装においていくつかの設計原理を使用し、それは、(1)システム資源のジャストインタイム使用、(2)必要毎のシステム資源の動的割当て、(3)利用および効率を最適化するために時間領域および空間領域の両方の活用、ならびに(4)利用可能なシステム資源にわたる平衡負荷を含む。
【0071】
本発明はANNを実装するのに良く適していることに留意されたい。典型的には、ANNは、3つの段階:モデリング、訓練、および推論で実装され、その3つの全てが本発明のNNプロセッサによってある程度、対処される。
【0072】
モデリングに関して、NNプロセッサは、モデル表現を静的および動的に変更することができ、従って、その柔軟な本質を反映する。「プロセッサ」表記は「アクセラレータ」に対立するものとして使用されるが、これは、後者は典型的には事前に定義されたセットの操作を先験的に実行するように適合されるためである。訓練に関して、NNプロセッサは、訓練手順の実装を可能にするオンザフライで補完的な訓練操作をサポートする。これは、(1)ネットワークを通して行きつ戻りつ実行すること(逆伝播)、(2)ドロップアウトを動的に適用すること、ならびに(3)層性能および不良挙動(ill behavior)検出のオンザフライ評価を含む。推論モード中、ANNは、最適かつ効率的に実行されて、新しい入力に適用される。
【0073】
本発明のNNプロセッサは、一緒に組み合わせて、極めて高い計算速度、小さいチップフットプリント、低電力消費、拡張性、プログラム可能性、および多くのタイプのニューラルネットワークを取り扱う柔軟性を提供するために、いくつかの特徴を組み合わせる。
【0074】
第1の特徴は、本明細書で開示するシステム例で説明されるPE、サブクラスタ、クラスタ、NNコアなど、様々な集約レベルまたは階層レベルに編成される計算ユニットによって提供される計算ファブリック(または計算能力)を含む。計算ファブリックは、ANNの計算ニーズの特別な本質に対処するように構成される基本計算要素を含む。計算ファブリックのいくつかの特徴は、(1)無駄のない回路アーキテクチャ、それにより比較的多数の物理実体が実装されるのを可能にする、(2)一度に多数の乗算および累算演算、加算は累算として実行される、(3)数表現の柔軟性、整数および浮動小数点ならびに異なるビット幅を含む、(4)より高分解能計算を可能にするクワッド乗算器サポート、ならびに(5)メモリ帯域幅を最適化する能力を提供するためのNウェイALUサポート、すなわち、y←y+w*xなどのサイクル毎に単一演算を実行する代わりに、y←y+w1*x1+w2*x2などのもっと複雑な演算が実装でき、それはシリコンの複雑さの増大と必要なメモリアクセスの低減との間のトレードオフを反映する、を含む。
【0075】
第2の特徴は、制御プレーン、ならびに制御の集約およびデータファブリック(すなわち、データプレーン)全体の非常に「無駄がない(lean)」かまたは「スリムな」制御を可能にする制御ファブリックのデータファブリックからの完全な分離である。制御プレーンは、データプレーンから分離され、従ってそれは、多数の計算ユニットが比較的少数の制御線を使用して、例えば、いくつかの場合には単一の制御線によって、制御されるという意味において集約できる。例えば、PE内の乗算回路を考えると、単一の制御信号が数千のPE内での乗算演算を同時に開始する。さらに、制御プレーンのプログラム可能性は、データプレーンのプログラム可能性から分離される。NNコアのデータファブリックの大規模な並列性が制御プレーンの無駄のない構造によって適合される。
【0076】
これは、制御信号が、いくつかの計算要素による制御信号の複製を必要とするデータにごく近接して適用される帯域内制御の典型的な従来技術アプローチとは対照的である。さらに、帯域外制御は、フォンノイマンマシンベースの技術ではないので、従来型のマイクロコントローラベース技術とは対照的である。
【0077】
制御およびデータファブリックを分離する別の利点は、制御はプログラム可能なままであることである。制御ファブリックの非剛性実装および計算ユニット(すなわち、PE、サブクラスタ、クラスタなど)の一般的性質は、NNコアが多数のタイプのANN、例えば、畳込みNN(CNN)、リカレントNN(RNN)、ディープNN(DNN)、MLPなど、ならびに畳込みモードで実装される前述および微妙な組合せのもっと複雑な実装および各々の特性、例えば、刻み幅(stride)、パディングなど、を取り扱うのを可能にする。
【0078】
第3の特徴は、メモリウィンドウイングを含むメモリファブリックの構造である。メモリのローカル化および階層構造に加えて、メモリに対する高帯域幅アクセスが多数の計算ユニットに並行して提供される。これは、特定の計算ユニットのためのアクセスをメモリのごく一部だけに狭めることによって達成される。従って、メモリ全体に対する完全なランダムアクセスは提供されない。むしろ、メモリの比較的小さい窓へのアクセスだけが提供される。これは、数千の計算ユニットにわたる同時アクセスを可能にし、従って、帯域幅とランダムなアクセス可能性との間のトレードオフを表す。単一の計算ユニットのメモリアクセスパターンがANNによって構造化されてうまく定義されていて、メモリ全体に対する完全なランダムアクセスを必要としないので、アクセスは、その特定の計算ユニットに対して必要なわずかなメモリブロックにだけ「窓をかける」ことができる。従って、極めて高いメモリ帯域幅が達成され、それにより数千の計算ユニットが、その計算ユニットに「ローカルな」メモリだけにアクセスすることとのトレードオフで、並行して同時にメモリにアクセスできる。
【0079】
一実施形態では、NNプロセッサのアーキテクチャは、制御プレーンおよびデータプレーン(または制御ファブリックおよびデータファブリック)を含む。制御プレーンは、NNプロセッサ内の全てのデータ計算ユニットの構成および制御に対して責任を負う。それは、一実施形態では、ニューラルネットワーク操作に対して調整されたマイクロコードを組み込んでいる、データフローマシンまたはプロセッサを含む。本明細書で説明するNNプロセッサ例では、制御プレーンは、集約の次の層、すなわち、サブクラスタ70、に対するアグリゲータ(aggregator)として機能するクラスタ実体66を制御する。サブクラスタは、同様に、最も基本的なユニット、すなわち、乗算および累算(MAC)回路ならびにローカルメモリから成る処理要素(PE)76を含む。それは、典型的なニューラルネットワーク内で見られるニューロン実体のセットを含むPE階層レベルである。
【0080】
NNプロセッサ内でANNを実装する重要な態様は全ての計算要素の制御および相互接続である。ANN内の膨大な数の計算要素が本発明によって活用される。装置制御ファブリックの1つの特徴は、それは計算資源の大規模なセットの間で共有されるので、比較的非常に無駄がないことである。一実施形態では、NNプロセッサは、(1)データと制御との間の厳密な分離、制御信号通知は帯域外で実行されて、データ駆動型メモリアクセスを含まない、(2)制御と付加された計算資源との間の動的なマッピング、ならびに(3)制御ファブリックの柔軟性およびプログラム可能性(すなわち、コンパイル時における)を特徴とする。加えて、NNプロセッサは、計算要素、メモリなどの制御信号通知に対する完全なアクセス可能性を可能にするマイクロコードマシンを組み込んでいる層コントローラを含む。
【0081】
データ駆動型メモリアクセスは、データパイプラインを通って流れるデータの観測を伴うアクセスを意味することに留意されたい。NNプロセッサは、これを必要としない。ルールの本質はデータ依存であり、従って、制御はデータと結び付けられる必要があるので、データ駆動型メモリアクセスは、ルールベースマシンにおいて一般的であることに留意されたい。例えば、文:if(x>some_value)then do A((x>何らかの値)の場合、Aを行う)を考える。これは、全ての入力「x」を観測する必要を暗示する。それにひきかえ、多くの入力を閾値と比較し得るマシンを考える。この場合におけるマイクロコードは、比較器の膨大なセットを作動させる操作をトリガーする必要があるだけである。しかし、かかるアプローチは、ハードワイヤーされる必要がある膨大な数の操作を暗示し、マシンがプログラミングされる可能性を否定してしまうので、RBMでとることはできない。
【0082】
それに対して、NNプロセッサは、非常に制限されたセットの操作を使用してデータに作用する。処理フローの本質は、データの値を伴わない。従って、制御を集約して、計算要素の膨大なセットを比較的少数の制御信号で駆動することが可能である。例えば、NN装置では、64制御信号の制御バスが数千の計算ユニットを制御するために必要である。
【0083】
一実施形態では、NNプロセッサは、以下でさらに詳細に説明されるように、機能が、それが必要とされる集約のいくつかの点において提供されるように実装される。加えて、NNプロセッサは、システムが最大限の利用を達成するのを確実にするために、計算およびメモリ資源に関して、実質的にバランスが取られるように構成される。
【0084】
NNプロセッサの容量が特定のニューラルネットワークに対して不十分である場合、バスインタフェース86は、単一プロセッサの制限を超えて拡大するために、追加のNNプロセッサ96の相互接続を提供する。
【0085】
一実施形態では、RBMコプロセッササブシステム88は、NNプロセッサによってサポートされない1つ以上のプリミティブをサポートするように構成される。加えて、コプロセッサは、ANNから抽出されてRBMに割り当てられたタスクを交換するように機能する。
【0086】
NNプロセッサは本質的にデータフローマシンとして動作して、計算はデータの利用可能性のみに基づいて実行されることを意味する。データフローは層間で分割されて、それはANNにおける層に類似する。層内部の計算ユニットは同期して動作して、データが層の入力において準備できていれば開始し、それらが新しいデータを必要とし、かつ/または結果を次の層に渡す必要があると終了して、その時点でその層の状態マシンが以前および/または次の層の状態マシンと同期される。
【0087】
一例として、2つの全結合層をもつMLPネットワークは、(1)コアの外部から入力を受信する1つの層、(2)ニューラルネットワーク層を表す2つの層、および(3)結果をコアの外部に送信する1つの層、としてマッピングできる。
【0088】
一実施形態では、入力層は、それが全ての入力(例えば、周知のMNISTデータセットに対する784の入力)を受信するまで待機し、次いで、その入力が準備できていることを層1に信号通知する。層1は次いで、全ての必要な乗算および累算(MAC)演算、活性化関数を実行して、最後に層2に信号通知し、それは同様に、同じステップを繰り返す。層2が終了すると、それは出力層に信号通知して結果をNNコアの外部に送信する。
【0089】
別の実施形態では、同じネットワークを考えると、NNコアは、入力データのさらに少ない一部について、層1内でMACを開始し、従って、層1内の状態マシンの複雑性および信号通知中の考えられる計算効率の損失を犠牲にして、入力層と層1との間で必要なバッファリングを削減する。
【0090】
NNコア内のクラスタ66の内部で、データは共有L3メモリ72を通して渡され、他方、信号通知は、以下でさらに詳細に説明される、専用相互接続282(図11)を通して実行される。一実施形態では、AXI4-ストリームプロトコルがクラスタ間で使用され、それは、データおよび制御プレーンの両方を取り扱う。機能停止を防ぐために、層間の相互接続はデュアルバッファ機構を提供し、そのため、第2の層が以前の出力をその入力として第2のバッファからの読み取ると、1つの層はその出力を1つのバッファに書き込む。
【0091】
一実施形態では、データフローアーキテクチャをニューラルネットワークにおける基本操作の比較的制限されたセットと共に使用すると、制御分散の要件における著しい削減を可能にする。
【0092】
第1に、一旦、ネットワークモデルが定義され、従って、先験的な狭帯域インタフェースを介してロードできると、実行されている計算に関する情報の多くは静的に知られており、その結果として、計算中に必要な制御線の数が削減される。結果は、層を実装する「カーネル」のためのコードが、ネットワークモデル毎に一定である準静的な構成と、計算を通して変化する動的命令との間で分割されることである。
【0093】
第2に、各動的な「命令」は、層内の全ての計算要素に各サイクル内で何をすべきかを指示する複数の命令を実際に含む。各計算要素は比較的単純な機能を有しているので、基本命令自体は比較的単純である。サイクルを無駄にするのを回避するために、繰返し(すなわち、ループ)およびジャンプ命令が帯域外で提供される。
【0094】
第3に、メモリ内のパラメータの適切な配置と組み合わされた計算の静的順序は、メモリに対する順次アクセスを可能にする。それ故、完全なアドレス指定ではなく、メモリにアクセスするためのアドレスインクリメント命令だけが必要である。
【0095】
第4に、マイクロコードは非常にコンパクトであるので、プリフェッチ、分岐予測などを必要とせずに、オンチップSRAM内に常駐できる。
【0096】
第5に、層は多くの処理要素(PE)を含むが、1つの中央状態マシンだけが、層全体に対する計算のステップを、サブ状態だけを格納するさらに小さいスレーブ状態マシンと共に制御する必要があり、それらの各々は複数のPEを制御する。一実施形態では、グローバルイネーブルビットが、全ての状態マシンの実行の開始し、グローバル同期リセット信号がそれらを初期状態に戻す。リセットは、構成メモリには影響を及ぼさず、制御プレーンとしてのデータメモリは無効なデータが使用されないことを確実にすることに留意されたい。
【0097】
用語「モデル」は、NNコア内の全ての計算ユニットの動的な挙動を定義する準静的な構成を記述するために使用されることに留意されたい。モデルは典型的にはANNモデルに類似しているが、デバッグ目的のためにロードされるモデル、または重みをメモリにロードするためのモデルなど、他のタイプのモデルがあり得る。
【0098】
構成空間がメモリのようなインタフェース内に露出され、そこでモジュールが階層アドレス空間を使用してアドレス指定される。重みのロードは、通常、モデルの構成前に実行され、重みを関連メモリブロックにコピーしてイネーブルビットを設定する制御信号通知を構成することによって達成される。クラスタが無効にされている間に推論モデルが次いでロードされ、制御がリセットされて最終的にクラスタが有効にされる。
【0099】
メモリ階層
一実施形態では、NNプロセッサのメモリファブリックはANNの固有の性質に対処するように設計される。従って、メモリは、様々なメモリコンシューマの必要性に対処するために階層的に構成される。これらのコンシューマには、(1)層間データ(すなわち、交差層入力/出力)、(2)層内情報(すなわち、コンテキストまたは中間結果)、および(3)重み、を含む。様々なメモリ層(例えば、本明細書で開示する実施形態例では5)は、より小さく、効率的で、よりローカル化されたメモリから、もっと大きくて、あまり効率的でない、グローバルメモリに進む。
【0100】
一実施形態では、メモリファブリックは、次を利用して編成および構築される:(1)計算要素が、任意の所与の計算要素の事前に定義されて限定されたメモリ実体に対するアクセス可能性を許可するローカルデータへのアクセスを要求するメモリのローカル化、(2)それによりメモリ内容が所与の一貫した方法で先験的に編成される構造化編成、(3)ほとんどのデータが本来、揮発性であり、一度処理されると完全に消費されて、それにさらにアクセスする必要はわずかであるか、または必要はない、限定されたリコールの性質(すなわち、一度だけ読み取る)、および(4)1つの計算要素の出力データが別の計算要素への入力データとして働くパイプライン化動作。
【0101】
前述のように、各階層レベルはそれ自体のローカルメモリを含む。PEはL1メモリを含み、サブクラスタはL2メモリを含み、クラスタはL3メモリを含み、NNコアはL4メモリを含み、L5メモリは外部的にオフ-SoCに配置される。メモリ階層例が以下の表1に提示される。
【表1】
【0102】
表中、Nはサブクラスタ内の処理要素の数を表し、Mはクラスタ内のサブクラスタの数であり、LはNN処理装置内のクラスタの数である。各メモリレベルL1~L5に対して示されているサイズは例示目的に過ぎないことに留意されたい。様々なメモリ層に対する任意の所望のメモリサイズは本発明の範囲から逸脱することなく実装され得ることが理解される。
【0103】
下位メモリ層、例えば、PE内のL1は、より小さいサイズであるが、より大きな帯域幅を保持することに留意されたい。上位メモリ層、例えば、NNコア内のL4は、ずっと大きなサイズにされるが、はるかに少ないトラフィックを保持する。
【0104】
本発明によれば、メモリ全体と計算要素との間に完全なメッシュアクセスを提供するのを回避するために、ANNにおけるメモリ使用のローカル化特質を利用しながら、可能な限り多くのメモリが、それが必要とされる場所に可能な限り近接して保持される。前述の方式によって課される制限を克服するために、コンシューマへのメモリの割当ては「漸進的な(gradual)」方法で行われ、それにより特定の役割をもつメモリの各レベルは、より高位レベルがより多くの資源を必要とするので、より高位レベルによって補完され、より高次レベルのメモリは、異なる要件を有するANN内の複数の層の間での「資源負荷分散」のために使用される。
【0105】
一実施形態では、一旦、モデルが選択されると、資源要件は既に分かっており、従って複雑な仲裁は必要としないので、この「溢出(spillover)」は準静的な特徴であることに留意されたい。この特徴は、各層内のメモリ資源は、最悪の場合ではなく、名目の場合に従って割り当てられるので、それらの著しく少量の静的割当てを可能にする。
【0106】
加えて、メモリの「漸進的」割当ては、上で簡単に説明した、スライディングウィンドウ機構も特徴とし、それは、L3メモリ内で使用され、以下でさらに詳細に説明される。
【0107】
処理要素(PE)
一実施形態では、基本計算ユニットは処理要素(PE)である。低レベル処理要素(PE)例をさらに詳細に示すブロック図が
図6に示されている。大まかに140で参照される、PEは、乗算トリガー177によって制御される1つ以上の乗算器142、加算器トリガー171によって制御される加算器144、複数のレジスタ152を含むL1メモリ150、宛先制御175によって制御される宛先マルチプレクサ146、送信元制御173によって制御される送信元マルチプレクサ148、出力シャッフル制御178によって制御される書込みマルチプレクサ154、入力シャッフル制御179によって制御される読取りマルチプレクサ156を含む。
【0108】
入力メモリ158からの入力(x)データ161および重みメモリ160からの重み(w)163は、それぞれ、入力制御および重み制御に従って乗算器(複数可)142に提供される。
【0109】
ニューラルネットワーク内のニューロンの最も基本的な数学演算は、次によって定義される:
【数2】
式中:
x(i)は、1Dベクトルに編成された、入力データセットを示し、
w(i,j)は、出力jに対するi番目の入力寄与を表す重みを示し、
σは、典型的には非線形スカラー関数である、活性化関数を示す
【0110】
基本計算ユニットはPEであり、ニューロンの本質的な動作を反映する乗算/累算実体を含む。中間結果または成果は、PEにローカルなL1メモリ150内に格納される。L1メモリはある深さおよび幅を有し、例えば、本明細書で説明する例では、ニューロン数P=16、その各々は16ビット幅である。任意の所望の深さおよび幅を有するL1メモリが使用され得ることが理解される。L1メモリの深さPは、1つのPEが同時に取り扱うことができる「ニューロン」または「コンテキスト」の数を反映する。追加のニューロンに対する中間結果をL2/L3メモリ内に格納することにより、Pを超えるニューロン(すなわち、コンテキスト)が処理できることに留意されたい。追加のニューロンを処理するために追加の時間が必要とされるという点において、待ち時間が影響を受ける。P個のニューロンを提供することは、計算構造を必要最小限に制限することにより空間領域を利用し、同時に、複数のコンテキストを格納することにより時間領域も利用することの両方である。
【0111】
内部コンテキストを取り扱う能力は、いくつかの能力を提供し、例えば、(1)複数の論理ニューロンを単一の物理ニューロンに割り当てる(各コンテキストが1つのニューロンの出力を格納する)能力、(2)結果として同時操作となる、同じ入力に対する複数の中間結果の格納、および異なるバージョンの重みに対する仮説検証(例えば、逆伝播結果、勾配に基づく補正値など)、(3)ネットワーク委員会の一般的な方法および多数決抽出を適用する目的で、同じ入力のマルチスレッド化推定、(4)資源が利用可能であれば複数のネットワークを実行すること、ならびに(5)NNマネージャによって制御されるとおりにネットワーク容量全体に基づく負荷分散、などである。
【0112】
動作中、ニューロン機能を反映している上の式2は、多重時間インスタンスにわたって広がって、以下のリスト1で提供されるように実装される。これは、他のシーケンスが、異なるマイクロコードを層コントローラ(LC)642(
図20)にロードすることによって使用され得るので、実装例にすぎないことに留意されたい。
【表2】
【0113】
図6を参照すると、PEは、重み(w)および入力(x)に対して別々に制御される計数要素ならびに加算器および乗算器に対する表現フォーマットにわたる別々の制御を含む。それは、別々に制御される進入/退出L1エントリインデックスも含み、操作すべき計算の順番を可能にする。累算関数の中間結果は、L1メモリレジスタ152内にローカルに格納される。加えて、初期化中の前処理は、L1メモリがデフォルト値(例えば、前の中間結果、バイアス値など)で予めロードされるのを可能にする。PEは、中間メモリ集約制御、すなわち、割当てステップサイズも含む。加えて、活性化関数は面積オーバーヘッドを最小限にするために集約されて、PEまたはサブクラスタレベルで実装されず、むしろクラスタレベルで実装される。PEは、連結を可能にするために活性化迂回もサポートする。
【0114】
プレ合成(pre-synthesis)構成可能性は、(1)Nウェイ乗算および累算(すなわち、Y=Y+A1*B1+...+AN*BN)、(2)表現フォーマットスパン(例えば、mビットの仮数およびeビットの指数をもつエントリ毎にk0...kNに対するサポート、ここでk=m+e)、および(3)ローカルストレージの深さPの選択、を可能にする。
【0115】
動作中、PE内部のデータフローはかなり柔軟である。加算器144の出力151は、宛先制御175を使用する宛先マルチプレクサ146を介して、(1)経路162を経由した活性化関数、(2)経路164を経由したL2もしくはL3メモリ、または(3)経路166を経由した送信元マルチプレクサ148、のいずれかに誘導できる。送信元マルチプレクサ148は、送信元制御173を介して、(1)加算器からの出力、または(2)L2もしくはL3メモリ168からの中間結果、のいずれかを選択する。書込みマルチプレクサは、出力シャッフル選択178を介してニューロレジスタ152の1つを選択し、送信元マルチプレクサの出力をP個の経路172の1つを経由して書き込む。L1メモリに書き込まれたデータは典型的には、多数のサイクルにわたって実行された乗算および累算演算の結果として生成された中間結果を含む。
【0116】
データは、ニューロンレジスタを読取りマルチプレクサ156に接続するP個の経路174の1つを介してL1メモリから読み出され、入力シャッフル制御選択179を介して選択される。読取りマルチプレクサの出力176は、加算器144への2つの入力の1つを形成する。加算器への他の入力は、乗算器142の出力である。複数の乗算器142が実装される場合には、前置加算器(図示せず)が乗算器の出力を加算するように機能して、その後加算器144に入力される単一の総和を生成することに留意されたい。
【0117】
第2の低レベル処理要素(PE)例をさらに詳細に示すブロック図が
図7Aに示されている。前述のように、PEは、NNプロセッサの最も基本的な計算要素である。ANNのニューロンは、PE内で、本質的にはL1メモリ内で、実装される。大まかに450で参照される、処理要素は、入力データ表現回路452、乗算器回路454、表現変換/丸め(rounding)回路456、アキュムレータ(すなわち、加算器)458、L1メモリ460、否定(negate)回路472、およびマルチプレクサ474を含む。
【0118】
動作中、入力データ(X)468および重み(W)470は、L3メモリから入力データ表現回路452に入力される。この回路は、マルチプレクサにも入力されるINT/FP信号462に従い、入力データおよび/または重みの表現を整数から浮動小数点(FP)フォーマットに、およびその逆に、変換するように動作する。結果として生じるX504およびW506はマルチプレクサ454に入力される。
図6および
図7Aに示す2つのPE実施形態のいずれも、本発明のNN装置内で使用され得ることに留意されたい。
【0119】
一実施形態では、乗算器は、並行して動作するいくつかの乗算器を含む。乗算器は、整数および浮動小数点数の両方を乗算することが可能である。入力データおよび重みに対する有効ビット数も、それぞれ、制御入力464、466によって設定されるとおりに変更できる。乗算器486の積の出力は、表現変換/丸め回路456に入力される。FPアキュムレータおよびFP入力制御入力508、510はそれぞれ、積が整数またはFPフォーマットであるかどうかを回路456に信号通知する。加えて、回路456は、アキュムレータへの入力の前に、積の丸めを実行するように機能する。
【0120】
回路456の出力488は、アキュムレータ(加算器)458に入力される。アキュムレータへの第2の入力496は、L2もしくはL3メモリからのコンテキスト(すなわち、中間結果)490、またはローカルL1メモリ460の出力のいずれかを含む。マルチプレクサ474は、SEL476に従ってその2つの間で選択する。出力494は、否定回路472に入力され、否定制御478に従い、出力496は、アキュムレータに入力される前に、否定される。
【0121】
アキュムレータに対する追加の構成制御は、アキュムレータシフト信号(accumulator_shift)498、アキュムレータイネーブル(accum_en)500、およびFPアキュムレータ502を含む。アキュムレータの出力484は、L1メモリに書き込まれる。L1メモリは、L1出力選択480およびゼロスキップ482も含む。L1メモリからの中間結果(すなわち、コンテキスト)出力は、経路493を経由してアキュムレータに入力されるか、または経路492を経由してL2もしくはL3メモリに書き込まれるかのいずれかである。一実施形態では、累算された(すなわち、中間)結果は、順次L1メモリに書き込まれて、L1メモリから読み取られる、すなわち、L1メモリ内のニューロンレジスタに対するランダムアクセスはない。L1メモリは、ランダム以外の、任意の適切な事前に定義されたパターン、例えば、順次的(1つずつ)、1つ飛ばし、2つ飛ばしなど、を使用してアクセスされ得ることに留意されたい。これは、ニューロレジスタにアクセスするために必要なアドレス指定を大幅に簡略化する。加えて、L2およびL3メモリ層へのアクセスならびにL2およびL3メモリ層からのアクセスは、特定のANNで利用可能なローカルのL1メモリが十分でない場合に提供される。この場合、特定のANNに対応するために中間結果がより高次のメモリ層に格納される。しかし、トレードオフは、高次のメモリ層のアクセスにおける待ち時間が増大することである。
【0122】
代替実施形態では、高(または倍)精度(例えば、16ビット)積を生成するために、4つの低精度(例えば、8ビット)乗算器を組み合わせることによってより高精度の乗算(例えば、16ビット)が実行される。PEのクワッド乗算器をさらに詳細に示すブロック図が
図7Bに示されている。大まかに870で参照される、クワッド乗算器は、4つの低精度(例えば、8ビット)乗算器872、Q
0、Q
1、Q
2、およびQ
3を含む。クワッド乗算器への入力は、2つの低精度(例えば、8ビット)値から構成される倍精度入力X、すなわち、X
L873およびX
H871であり、倍精度重みWも2つの低精度(例えば、8ビット)値、すなわち、W
L880およびX
H882、を含む。
【0123】
動作中、各基本ユニットQiは、低精度(例えば、8ビット)WおよびX値を受信し、それらに基づいて、クワッド乗算器回路は結果Y←Y+W*Xを生成する。倍精度WおよびX値を考えると、重み、入力データおよび出力データの上方部および下方部は、それぞれ、WH882、XH871、YH876およびWL880、XL873、YL875として示されている。3つのキャリー(carry)C0874、C1878、およびC2879も生成される。
【0124】
Y←Y+W*Xを
【数3】
に展開すると、次が得られる
【数4】
および
【数5】
【0125】
各出力YLおよびYHは、32ビット乗算積Yを得るための16ビット数を表すことに留意されたい。より大きい精度の結果は、追加の乗算器ならびに入力、重みおよびキャリー構成要素の適切な組合せを使用して得ることができることが理解される。
【0126】
サブクラスタ
第1のサブクラスタ例をさらに詳細に示すハイレベルブロック図が
図8に示されている。大まかに180で参照される、サブクラスタは、各個々のPE182がローカルL1メモリ184を含む、複数のN個のPE182、相互接続ファブリック186、複数の割り当てられたメモリブロック190に分割された専用ローカルL2メモリ188、構成および復号ブロック192、ならびに制御/データ信号181を含む。構成/復号回路192は、外部制御バス194から命令を受信する。各サブクラスタ180はまた、以下でさらに詳細に説明するように、本明細書で提示する実施形態例ではクラスタ階層レベル内に配置される、入力/出力整合回路196および活性化回路198と通信する。
【0127】
一実施形態では、サブクラスタの機能は、複数のN個のPE、例えば、N=64、を集約することである。サブクラスタ内の全てのPEは、ニューラルネットワークの同じ層に属しており、それは、要求される制御論理を大幅に単純化する。例えば、先験的な静的構成は別として、サイクルごとの動作の制御は必要ない。
【0128】
加えて、サブクラスタはメモリ階層の次のレベル、すなわち、層間および中間結果を格納するL2メモリ層をカプセル化する。一実施形態では、それは、活性化関数回路(すなわち、上の式2中のσによって表される)も含む。しかし、効率性のために、NNコア例では、活性化関数をクラスタレベルに移動させている。活性化関数は、その位置にかかわらず、ニューロンの出力を受信して、N個の乗算および累算演算ごとに1回、トリガーされる。活性化関数回路の数および位置は、ハードウェアの最適利用を反映するように選択されることに留意されたい。
【0129】
サブクラスタのいくつかの特徴には、(1)メモリアクセスを管理するための分散制御方式、(2)重みおよび中間結果に対するL2メモリの動的割当て、(3)L1メモリをシームレスに増大させるための固有の中間結果シャッフリングサポート、(4)層中心(layer-centric)の情報および診断格納、(5)層中心の前処理、(6)層中心の後処理、ならびに(7)層内分割サポート(例えば、量子化セグメンテーションのため)、を含む。
【0130】
第2のサブクラスタ例をさらに詳細に示すハイレベルブロック図が
図9に示されている。
図8は、サブクラスタの主に論理的なビューを反映しているが、
図8はもっと物理的なビューを反映している。大まかに200で参照される、サブクラスタは、専用ローカルL2メモリ210、各々それ自身のL1メモリ214をもち、イネーブルEN211、PE制御信号213、およびPE構成信号215を受信する、複数のN個のPE212、入力相互接続206、出力相互接続208、サブクラスタ制御バス230から命令を受信してL2_cbus236を出力するサブクラスタ構成202、ならびに層制御232およびグループ制御234を受信してアドレスADDR238、イネーブルEN240、および選択SEL242を出力するサブクラスタ復号器204を含む。
【0131】
動作中、入力データ216および重み218が、制御信号201に従って、クラスタレベルにおけるL3メモリから入力相互接続206に提供される。入力相互接続は入力データ244および重み246をPE212に供給する。zero_skip信号217は、入力データまたは重みのいずれかがゼロ値を有しており、従って、乗算および加算演算は必要ないことをPEに通知する。重み220はローカルL2メモリ210からももたらされ、ローカルL2メモリ210はアドレスADDR205、イネーブルEN207、および制御L2_cbus209を受信することに留意されたい。
【0132】
一旦、PE内のニューロンが特定の層に対して要求される計算を累算すると、現在中間結果248を表している、ニューロンの内容が読み出され、制御信号203を介して出力相互接続208に出力される。中間結果は次いで、経路226を経由してローカルL2メモリに書き込むか、または経路221、マルチプレクサ22、および経路228を経由してL3メモリに書き込むことができる。加えて、中間結果224はL2メモリから読み出されて、マルチプレクサ222を経由してL3メモリに、またはその後それを経路249を介してPEに転送する出力相互接続のいずれかに転送できる。
【0133】
従って、各サブクラスタは、入力データおよび重みをPE内のニューロンに供給し、かつ、中間結果をニューロンからL2またはL3メモリのいずれかとのやりとりに誘導するために、柔軟でプログラム可能な経路を含む。
【0134】
一実施形態では、サブクラスタは、単一のANN層またはその一部の実行に特化される。その機能は、外部入力をL3メモリから受信し、ローカルL2または外部L3メモリのいずれかからの重みと共に乗算および加算を実行して、中間結果(「コンテキスト」とも呼ばれる)をPE L1メモリ内(またはL1メモリが十分でない場合なローカルL2メモリ内)に格納し、最終的に結果を正規化および活性化のために外部活性化関数に送信することである。
【0135】
サブクラスタ復号器204は、サブクラスタ構成202からの静的入力を動的入力、共通の層制御およびタイミンググループ制御の両方と組み合わせるように機能する。それが格納した状態は、次のアドレス指定を保持するカウンタを含む、すなわち、(1)重み読取り/書込みアドレス、(2)コンテキスト読取りアドレス、(3)コンテキスト書込みアドレス、(4)活性化ソースアドレス(PEが読取りのために出力する)。
【0136】
入力相互接続は(1)外部重み(すなわち、L3メモリ)またはローカル重み(すなわち、L2メモリから)の間で選択する、(2)重みメモリの幅、すなわち、最大幅で全てのPEがL2メモリから、またはL3外部メモリから異なる重みを受信するのを可能にする、選択される重みの数およびメモリの深さ、を選択する、(3)重みを選択して、選択された重み源(アドレスのMSBを使用)からPEに渡す、入力バスの幅を選択する、かつ(4)入力を選択して、選択された入力源(アドレスのMSBを使用)からPEに渡す、ように動作する。
【0137】
L2メモリ210は重みおよびコンテキストの両方を同じブロック内に格納するために使用されることに留意されたい。重みアドレスはゼロから始まって上方にカウントされ、他方コンテキストアドレスはメモリの終わりから始まる。オーバーフローを防ぐのは制御プレーンの責任である。
【0138】
クラスタ
第1のクラスタ例をさらに詳細に示すハイレベルブロック図が
図10に示されている。大まかに250で参照される、クラスタは、各サブクラスタ266がそれ自身のL2メモリ268を有する、複数のM個のサブクラスタ、複数の割り当てられたメモリブロック264に分割された専用ローカルL3メモリ262、L3メモリをサブクラスタにインタフェースさせるように適合されたメモリ管理装置(MMU)260、制御同期装置254および複数の層制御回路256を含む管理および制御ブロック252、複数の入力アライナ274、ならびに複数の活性化関数回路276を含む。入力/出力(I/O)ポート270は、各クラスタをクラスタ間クロスコネクトスイッチ272にインタフェースさせる。
【0139】
一実施形態では、クラスタは、典型的には、2つ以上のニューラルネットワーク層を表す集約の次のレベルである。それは、PE基本計算実体を含むサブクラスタおよびサブクラスタ間の相互接続ファブリックの両方を含む。これは、サブクラスタ間の接続を制御することにより異なるニューラルネットワークモデルを表すための柔軟性をNNコアに提供する。L3メモリ262は層間結果を1つ以上の割り当てられたメモリブロック264内に格納するように機能する。
【0140】
クラスタのいくつかの特徴には、(1)メモリアクセスを管理するための分散制御方式、(2)複数層への総計M個のサブクラスタの表現をサポートするための柔軟で構成可能なルーティングマトリックス、(3)重みおよび中間結果に対するL3メモリの動的割当て(比較的稀)、ならびに(4)データフロースロットリングおよび負荷分散を可能にするための層間制御、を含む。
【0141】
追加の特徴には、(1)重み/入力データ平衡化、(2)前および後処理ブロック、(3)動的バス幅およびメモリビットセル、(4)MMU内での入力データおよび重みの交換可能性、(5)イベント駆動型挙動およびパイプライン化を提供する機能、(6)制御がデータプレーンから切り離される、(7)任意選択のゼロパイプライン機能、ならびに(8)実行時構成変更のバランスのとれた機能、を含む。
【0142】
第2のクラスタ例をさらに詳細に示すハイレベルブロック図が
図11に示されている。大まかに280で参照される、クラスタは、クラスタ相互接続回路282、入力バッファ284、出力バッファ292、複数のM個のサブクラスタ306、サブクラスタ相互接続304、複数の活性化関数/プーリング回路300、複数の入力アライナ回路302、および複数の割り当てられたメモリブロック298を含むL3メモリ296を含む。
【0143】
入力データおよび重み286は入力バッファ284内に格納される。入力バッファから、入力データおよび重み288はクラスタ相互接続282に入力される。入力データ305および重み307はまた、L3メモリ296に書き込まれ、L3メモリ296から読み取ることができる。クラスタ相互接続からの入力データ281は、サブクラスタ相互接続304に入力される前に、アライナ回路302に入力される。入力データ285は、サブクラスタ相互接続からサブクラスタ306に供給され、他方、サブクラスタからの出力283はサブクラスタ相互接続に送信される。出力309は活性化関数/プーリング回路300に入力され、そこで結果として生じる出力308がクラスタ相互接続282に入力される。出力データ290は、出力バッファ292に書き込まれる。データ出力294は次いで、他のクラスタまたはオフチップに送信される。
【0144】
一実施形態では、NNコアは複数のニューラルネットワークを並行してサポートする。各クラスタは、制御インタフェース(例えば、クロック、リセット、イネーブルなど)、構成インタフェース(メモリのような)およびデータインタフェース(例えば、AXI(Advanced Extensible Interface))を露出するように動作する。各クラスタは、1つ以上のANN層を、恐らくは2つ以上のANNから、実装するように適合される。AXI相互接続は制御インタフェースを露出し、クラスタ、NNコア内のARMコントローラのDMAエンジン、および外部ポートを接続するために使用される。ARMは、DMAエンジンを通したAXIインタフェース、クラスタおよび相互接続への制御および構成インタフェース、ならびに外部標準インタフェースを露出する。
【0145】
一実施形態では、クラスタは、(1)構成回路、(2)メモリ管理装置(MMU)、(3)制御相互接続、(4)トリガー相互接続、(5)複数のサブクラスタ、(6)複数の層コントローラ(LC)、(7)複数の専用装置、(8)複数の入力装置、(9)複数の出力装置、および(10)複数のメモリブロック(すなわち、L3メモリ)を含む。
【0146】
一実施形態では、クラスタは、恐らくは複数のANNからの、複数のANN層を並行してサポートする。ネットワーク層は、制御相互接続を通して接続された1つ以上のサブクラスタをもつ層コントローラ(LC)として、または制御をその中に含む特殊装置(専用、入力または出力)の1つとして実装できることに留意されたい。層は、構成によって全て定義された、トリガー相互接続を通したフロー制御のための信号通知を使用して、L3メモリ296内の割り当てられたメモリブロック298を通してデータを伝達する。割り当てられたメモリブロックはサブクラスタに対する重みメモリとしても使用される。様々な層からL3メモリへの全ての制御信号は、MMU260により構成を使用して仮想から物理アドレスに変換される。
【0147】
MMUは、L3メモリの読取りポートおよびサブクラスタへの入力ポートなど、2つの通信ポートグループ間でスライディングオーバーラップウィンドウ機構を使用する。各サブクラスタは、その入力を、サブクラスタのリスト内のその関係位置周辺のメモリポートのグループから選択できる。ウィンドウ機構は、以下でさらに詳細に説明される。
【0148】
パイプラインをNNコア内で効率的に利用することができるようにするために、各ANN層に対するサブクラスタの割当ては、好ましくは、フィード(feed)ごとにANN層内で要求される計算の数に比例する。割当ては、制御相互接続によって決定され、それは、サブクラスタをLCにマッピングする。マッピングは、2つのレベルで実行される、すなわち、(1)各サブクラスタは、スライディングオーバーラップウィンドウ機構を通してLCに割り当てられる(すなわち、MMU内で使用されるものに類似)、および(2)サブクラスタはANN層内部のタイミンググループに割り当てられる。タイミンググループは、活性化後に使用されるL3への書込みポートなど、共通の資源を要求する動作に経時的に広がる。ANN層は、各々が1つ以上のサブクラスタを含む、1つ以上のタイミンググループを含み得る。全てのタイミンググループの間で共通の、制御は、第2の選択レベルを通して渡されず、その回路の多重化の複雑さを低減する。
【0149】
一実施形態では、ANN層間の信号通知機構は、2本の双方向ワイヤーに基づき、それは、それらの間のデュアルバッファの状態を交渉する。従って、2つの連続的な層を接続するために2本の双方向回線が必要である、すなわち、各層は、前の層のために2本および次の層のための2本の、4本の双方向回線を使用する。2つの逆方向信号は、バッファが層間の2つのバッファの各1つに対して新しいデータを受信する準備ができているかどうかを示し、2つの順方向信号は、バッファ内のデータが両方のバッファに対して有効であるかどうかを示す。インタフェースを簡略化するために、コントローラは、専用の命令を使用して、両方向の2つのバッファ(すなわち、アクティブおよびパッシブ)の意味を反転できる。
【0150】
クラスタ間クロスコネクトをさらに詳細に示すハイレベルブロック図が
図12に示されている。大まかに430で参照される、クラスタ間相互接続ファブリック/クロスコネクトは、クラスタ436間での通信を可能にする複数のマルチプレクサ432およびスプリッタ440を含む。一実施形態では、各クラスタJは、入力ポート396および出力ポート398を含む、複数のポートを含む。4つの入力および出力ポートが例に示されているが、任意の数が実装できる。
【0151】
入力側上のマルチプレクサ432はSEL線438によって制御される。各マルチプレクサに対する入力434は、隣接するクラスタ、例えば、クラスタJ-2、J-1、J、J+1、からの出力線を含む。各マルチプレクサからの出力444は、クラスタ内の別個の入力ポート396に入力される。同様に、出力側上のスプリッタ440は、隣接するクラスタ、例えば、クラスタJ-1、J、J+1、J+2、の入力線に供給される出力442を生成する。クラスタの各出力ポート398からの出力446は、別個のマルチプレクサ440に入力される。NNマネージャ392は、クロスコネクト430の構成を制御するように機能する。一実施形態では、1つのクラスタから別のクラスタへの可能な接続は、アドレス指定を減らしてルーティングを制御するために意図的に制限されて、帯域幅を改善する。例えば、入力434を経由したクラスタJへの接続は、クラスタJ-2、J-1、J、およびJ+1、すなわち、隣接するクラスタ(およびそれ自身)だけに制限される。同様に、出力442におけるクラスタJからの接続は、クラスタJ-2、J-1、J、およびJ+1に制限される。他のクラスタへの直接接続は制限されるが、任意のクラスタは依然として、1つ以上の中間のクラスタをトラバースすることにより、任意の他のクラスタと間接的に通信することができることに留意されたい。
【0152】
クロスコネクトは、クラスタレベルから始まって、NNプロセッサコアの最上位レベルを経て装置から装置へ、全てのレベルで生じることに留意されたい。NNプロセッサ内のL個のクラスタは、1つのクラスタからの出力ポートが隣接するクラスタにマッピングされるのを可能にする循環相互接続ファブリックを使用して接続される。クロスコネクトはクラスタの出力を自身(すなわち、セルフルーティング)にルーティングすることもできる。クロスコネクトにおけるアクセスの範囲は構成可能であり、設計の複雑さと、アクセス可能性との間でのトレードオフを可能にすることに留意されたい。「分散/集約」機構は、同じ出力が複数の入力を並行して供給するように、出力が複数の複製に(すなわち、スプリッタを介して)分割されるのを可能にすることにも留意されたい。クロスコネクトの制御は、制御線431を介してNNマネージャ392によって提供される。
【0153】
スライディングオーバーラップメモリウィンドウイング
第1のメモリウィンドウイング方式例を示す略図が
図13に示されている。柔軟性を維持するために、プロセッサ内のメモリの各コンシューマは、データ交換のために異なるメモリセグメントにアクセスする能力を有する。メモリウィンドウイングという用語は、計算要素または実体が、メモリ資源のずっと広い範囲ではなく、利用可能なメモリ資源のあるサブセットだけに対するアクセスをそれによって与えられる方式を指す。メモリウィンドウイング方式を使用して計算要素によるメモリへのアクセスを制限すると、必要なアドレスおよびルーティング制御を大幅に削減しながら、利用可能な帯域幅を著しく改善する。メモリファブリックはメモリウィンドウイング方式を動的に再編成することができ、それにより計算要素によってアクセス可能なメモリ資源はプログラム可能で構成可能である(例えば、コンパイル時、実行時など)ことに留意されたい。ウィンドウイング方式は、以下でさらに詳細に説明される分散/集約技術に基づく。
【0154】
大まかに580で参照される、図示例では、2つの計算要素582はメモリ資源584、586、588にアクセスする。計算要素のいずれもメモリ全体へのアクセスを有しておらず、有限ウィンドウのみに対するアクセスを有する。これは、計算要素はメモリファブリック全体に対するアクセスを一度に要求することは決してないからである。ウィンドウイングは、制御、進入データ、退出データ、および重みに対して異なり得ることに留意されたい。加えて、ウィンドウは典型的には、共有およびパイプライン化を可能にするために重なり合う。また、メモリ資源自体は多目的であり、2つ以上のタイプの情報を格納するために使用できる。
【0155】
図示例では、計算要素1に対する制御は、メモリブロック584、586、および588に及び、制御1の矢印590によって示される。計算要素1は、メモリブロック586に対する進入データウィンドウを含み、進入データ矢印592によって示される。同様に、計算要素1は、メモリブロック588に対する退出データウィンドウを含み、退出データ矢印594によって示される。重みは、メモリブロック584および、退出データを格納するためにも機能するメモリブロック588内に格納される。同様に、他の計算要素も、制御、進入、退出、および重みウィンドウを含む。例えば、計算要素2は、メモリブロック588および1つ以上の他のメモリブロック(図示せず)に及ぶ制御ウィンドウ596を含む。
【0156】
第2のメモリウィンドウイング方式例を示す略図が
図14に示されている。一実施形態では、NNプロセッサ内の計算要素を通って流れるデータはパイプライン化され、サブクラスタ内のPEはデータを入力として受信して、出力を生成し、その出力は次いで、後続の計算のために何らかの他のサブクラスタに対する入力として機能する。様々な層内のメモリは、可能な限りローカル化されて、各層が対応する計算要素のアクセス可能性および効率性を最大限にするために活用される。計算要素はメモリの制限されたサブセットにだけアクセスする必要があるので、ルーティング(すなわち、アドレス線、制御など)は、実際に必要なメモリブロックおよび計算要素のクロスコネクトに制限できる。
図15、
図16、および
図17は、メモリアクセスウィンドウの構成可能性を示し、それを通して各資源の割当てが管理され構成されて、特定の要求に対処する資源を備える。
【0157】
大まかに340で参照される、ウィンドウメモリ方式は、各々が複数のPE349を含む、複数のサブクラスタ348、L3メモリ(共有されていない)342、およびL3メモリ(共有されている)344を含む。動作中、サブクラスタは重み情報345を、共有されていないL3メモリの一部から受信する。サブクラスタへの入力データ341は、L3メモリの共有された部分から割り当てられたメモリブロック346から受信される。サブクラスタ内のPEは、重みおよび入力データを処理して、出力343を生成する。しかし、出力は、異なる(例えば、隣接する)割り当てられたメモリブロック(すなわち、入力が読み取られたメモリブロックではない)に書き込まれる。これらの出力は次いで、別のサブクラスタ(例えば、ANNの後続層内のニューロン)への入力として読み取られる。この方法で、ANN入力データ347は共有L3メモリに入り、割り当てられたメモリブロックから読み取られて、1つ以上のサブクラスタ内のPEによって処理され、隣接するメモリブロックに出力されて、ANN内の様々な層を通ってトラバースした後、最終的にANN出力データ349として共有L3メモリから出力される。
【0158】
しかし、サブクラスタは、L3メモリに対する直接的なランダムアクセス機能を有しているのではなく、メモリブロックによって割り当てられた隣接しているか、または近いものだけに対するアクセス機能を有していることに留意されたい。例えば、サブクラスタHは、サブクラスタH-2、H-1、H(それ自身)、およびH+1サブクラスタに対するアクセスを有する。これは、メモリアクセスのためのアドレス指定およびルーティング制御要件を大幅に削減する。従って、各サブクラスタは、メモリの比較的小さい窓、PEがそれらの機能を実行するためにちょうど十分な、だけを「見る」。
【0159】
計算およびメモリ要素のウィンドウサイズと、コンピュータアクセス構成可能性との間の第1のメモリアクセス可能性例を示す略図が
図15に示されている。この略図は、メモリウィンドウイング方式を例示しており、それにより計算要素およびメモリ要素は相互に対して制限されたアクセスを有する。例えば、メモリ要素1~Dおよび計算要素1~Eを考える。斜線の入った塞がれた領域520は、相互にアクセス可能な資源を表す。従って、計算要素1~3は、メモリ要素1~12にだけアクセスできる。同様に、メモリ要素1~12は、計算要素1~3にだけ接続できる。図のように、計算要素にアクセス可能なメモリ要素は、相互に重なり合うスライディングアクセスウィンドウを形成する。アクセスウィンドウは動的に構成できて、ハードワイヤードでも固定でもないサイズ(すなわち、スパン)および特定の接続を有する。主な特徴は、どの単一の計算要素もメモリ全体に対するランダムアクセスを有していないことである。むしろ、各計算要素は、メモリ要素の一部、例えば、隣接するメモリ要素またはすぐ近くのもの、だけアクセスできる。その計算要素に対してアクセス不能なメモリの部分は、書込み領域522によって表される。
【0160】
メモリによってアクセス可能な計算要素の数は、垂直矢印523によって表されるようにプログラム可能で構成可能であることにも留意されたい。同様に、計算要素によってアクセス可能なメモリ要素の数は、水平矢印521によって表されるようにプログラム可能で構成可能である。
【0161】
計算要素とメモリ要素との間の第2のメモリアクセス可能性例を示す略図が
図16に示されている。この略図は、計算要素とメモリ要素との間のアクセスは隣接するウィンドウに制限されないことを示す。むしろ、アクセスは不連続で、それは、一実施形態では、仮想対物理マッピングを使用して達成される。手段にかかわらず、アクセス可能な領域は、制限されて事前に定義された範囲の長方形を有して、計算要素とメモリ要素との間のアクセスが制限されていて有限であること、すなわち、どのかかる領域もアドレス空間全体をカバーしないことを示す。
【0162】
分散/集約ベースの資源ウィンドウイング技術例を示す略図が
図17に示されている。例示を目的として、クラスタ例530の一部が示されている。しかし、本技術は、クラスタ内での使用に制限されておらず、NNプロセッサ内のどこでも使用できる。2つの資源A532およびB538を考えると、その資源は任意の所望の回路、例えば、計算、メモリ、制御要素など、を含み得る。アクセスを制限するために、各資源A532の出力はスプリッタ534に入力され、各資源B538への入力はマルチプレクサ536の出力である。完全なメッシュ接続を提供するのではなく、スプリッタの出力は、制限された数のマルチプレクサ入力だけに行き、従って、制限された接続を提供する。例えば、資源A1の出力は、資源B1およびB2だけに入力される。同様に、資源A2の出力は、資源B1、B2およびB3だけに入力され、資源A3の出力は、資源B2およびB3だけに入力される。このようにして、各B資源はA資源の小さいウィンドウに接続するだけである。従って、100のA資源と50のB資源との間のアクセス(資源の数は例にすぎない)は、有限数のA資源が有限数のB資源と、重なり合うスライディングベースで接続する、スライディングウィンドウを形成する。
【0163】
スプリッタおよびマルチプレクサの制御は、層コントローラ(LC)548によって提供される。LCの制御線549出力は、LCUから始まるSEL線547に従い、LCからの制御の1つを選択する制御ファブリック544内の一連のマルチプレクサ546に入力され、LC内でさらに復号され得る。マルチプレクサ546の制御は、コンパイル時または実行時などに、プログラム可能で構成可能であり、それにより、A資源とB資源との間の柔軟なマッピングを達成する。
【0164】
本発明によれば、NNプロセッサのメモリアクセスファブリックの特徴は、実質的に高並列で動作する能力である。これは、計算資源とそれらに付加されたメモリとの間のマッピングの固有の分離のおかげである。例えば、重みは明示的に関連サブクラスタにだけ接続される。しかし、1つの例外は、割り当てられたメモリブロックが共有されて、衝突が生じる場合である。かかる事象は典型的には稀であるが、NNプロセッサは、衝突に起因する競合を解決する能力を提供する。一実施形態では、メモリ競合は制御層で解決され、その場合、共通のメモリブロックを共有する2つの計算実体は、以下で説明されるように、信号通知レベルで衝突回避に対処する。逆圧(backpressure)は典型的には、一時的で短命であり、総帯域幅全体はNNプロセッサの設計によって保証されることに留意されたい。
【0165】
メモリ競合解決方式例を示すブロック図が
図18に示されている。大まかに600で参照される、メモリ競合解決回路は、複数のメモリブロック632を含むL3メモリ602、MMU626、LCU A604、LCU B606、ANN層G614を形成する1つ以上のサブクラスタ618、およびANN層G+1 616を形成する1つ以上のサブクラスタ620を含む。
【0166】
この図示例では、ANNの層GおよびG+1の両方が、L3メモリ内のメモリブロック634に対してデータの読取りおよび書込みを行う。層Gの出力は、層G+1への入力として機能する。しかし、時折、両方の層は、同じメモリブロックに同時にアクセスしようとし得る。これは、「X」でラベル付けされたメモリブロックによって示される。同じメモリブロックの競合が生じると、MMU626がその事象を検出して、それらそれぞれのLC内のLCU(この例ではAおよびB)に対して競合アラート608を生成する。競合アラートに応答して、LCUの1つは、サブクラスタに入力される停止(halt)コマンド610、612を生成する。停止コマンドを受信するサブクラスタは、読取りまたは書込み操作が完了するまで、L3メモリ内のそのメモリブロックに対するアクセスを抑止する。
【0167】
層内では、その層を構成するサブクラスタは、メモリに対する競合が決して生じないように構成されるので、メモリ競合は、層内ではなく、常にANN層間で生じることに留意されたい。典型的には、競合は、1つの層が書き込んでいる間に他の層が読み取っている場合に生じる。競合アラートに応答して、書込みまたは読取り操作のいずれも抑止できる。一実施形態では、ANNの本質は、書込み操作ははるかに稀な事象であるということなので、書込み操作が抑止される。加えて、読取り操作を抑止すると、データ処理パイプラインのかなりの部分が機能停止するであろう。従って、読取り操作ではなく、書込み操作が抑止される。停止信号(層Gへの610または層G+1への612)が抑止すべき層に対して発行される。書込み操作または読取り操作を抑止するかの判断は、コンパイル時に先験的にプログラム可能で構成可能であることにも留意されたい。
【0168】
層コントローラ
層コントローラ例をさらに詳細に示すハイレベルブロック図が
図19に示されている。大まかに310で参照される、層コントローラ(LC)は、命令メモリ312から読み取られたマイクロコード命令311を復号および実行する責任を負う層制御ユニット(LCU)314を含む。その命令に応じて、1つ以上のコマンド信号313が、入力アライナ制御316、活性化制御318、入力アドレス復号器320、重みアドレス復号器322、出力アドレス復号器324、およびPE制御326を含む、様々な制御および復号ブロックに出力される。これら6つのブロックからの制御およびアドレス信号がそれぞれ、入力アライナ328、活性化関数回路330、入力メモリ332、重みメモリ334、出力ウィンドウ335、および制御ウィンドウ336に出力される。PE制御信号315は、制御ウィンドウ336からサブクラスタ338内のPE回路に出力される。
【0169】
L3メモリおよびサブクラスタに対する層コントローラインタフェースをさらに詳細に示すハイレベルブロック図が
図20に示されている。大まかに640で参照される、クラスタ例は、L3メモリ644、LC642、複数のサブクラスタ662、ポストプロセッサ666、および
図17に関連して上で説明された、制御、書込みデータ、読取りデータ、および重みのためのウィンドウイングを含む。LC642はLCU656、1つ以上のプリプロセッサ652、命令メモリ654、1つ以上の復号器回路658、およびMMU660を含む。
【0170】
具体的には、制御ウィンドウイングは、回路674および制御線684を含み、重みウィンドウイングは、回路646、648、および信号線650を含み、進入データウィンドウイングは、回路676、678、672、および信号線690、692を含み、退出データウィンドウイングは、回路680、682、668、および信号線686、688を含む。L3メモリにアクセスする進入および退出ウィンドウは、破線によって示されるように重なり合うことに留意されたい。ウィンドウイングに対する制御(すなわち、スプリッタおよびマルチプレクサに対する選択)は、LCUおよび復号器によって生成されたメモリウィンドウ制御(MWC)信号670によって提供されて、ウィンドウ回路674、646、648、676、678、672、680、682、および668に入力される。
【0171】
動作中、進入データはL3メモリから読み取られて、前処理回路652に入力される。これらの回路は、任意選択としてデータを再形成するように機能して、例えば、シフトなどの操作を入力データに関して実行する。前処理されたデータはサブクラスタに出力され、そこでPE664は入力データを、同様にL3メモリから読み取った重みと共に乗算する。中間結果、すなわち、コンテキストが、サブクラスタからメモリウィンドウイングを通して後処理回路666に出力される。後処理回路は、データ処理パイプラインの一部であり、活性化関数および任意選択として整合を適用するように動作する。
【0172】
各LCには、ANN内の層を構成する1つ以上のサブクラスタが割り当てられることに留意されたい。各クラスタは、複数のLC(例えば、8)を含む。従って、図示されるサブクラスタ662は、各クラスタ内のM個のサブクラスタのサブセットに過ぎず、各LCは、前述した同じウィンドウイング概念を使用して選択できるサブクラスタの異なるセットを制御する。加えて、サブクラスタ内のN個のPEは分割されず、サブクラスタ内の全てのPEは単一のユニットとして制御されることを意味する。これは、2、3の制御線だけが多数のPEを、そして最終的にニューロンを制御するので、計算要素の制御を簡略化して、比較的無駄のない制御信号通知を可能にする。同様に、復号器回路658の各々は、異なるセットのメモリブロックを制御するように構成される。一実施形態では符号化される、制御信号698は、LCUによって生成されて、復号器回路658に入力される。LCU自体は命令メモリ654の内容によって制御される。各命令の実行は、符号化された制御信号の生成となり、それはその後、復号器によって復号されて、制御ウィンドウ回路674を介して計算要素に出力される。サブクラスタ内の計算要素を制御する制御信号に加えて、LCUは制御ウィンドウを(重み、進入および退出データウィンドウと共に)制御するための制御信号(すなわち、MWC選択制御)も生成することに留意されたい。一旦、構成されると(コンパイル時に)、制御信号、重み、進入および退出データは静的にルーティングされる。MMU660は、L3メモリウィンドウイングに対する制御信号を生成して、仮想対物理マッピングを実行するように機能する。それは、ANN内の2つの層間のメモリ競合事象に応答して、競合アラート694を生成ようにも機能する。前述のように、LCUは層の1つに停止コマンドを発行することにより競合事象を解決する。
【0173】
第2の層コントローラ例をさらに詳細に示すハイレベルブロック図が
図21に示されている。大まかに550で参照される、LC例は、複数の命令554を含む命令メモリ552、LCU556、命令復号器566、トリガーウィンドウクロスコネクト558、およびトリガーハンドラ560を含む。LCU556は、状態マシン562、および命令レジスタ564を含む。
【0174】
動作中、命令551が命令メモリからLCU内の命令レジスタ564に読み取られ、そこでそれらが決定されて実行される。ハードウェアを直接制御するように構成される命令の1つ以上の部分568が復号のために1つ以上の復号器566に送信される。復号器の出力は、
図20に示して前述したように、内部PE動作を制御するためにサブクラスタに送信される直接制御信号通知を含む。命令の他のLCUの部分570、572は、LCUの論理状態を制御して、状態マシン562に入力される。これらの部分は、例えば、ループ処理および分岐を制御する。NEXT553コマンドは、命令メモリ552からの次の命令を実行のためにLCUに読み込ませる。
【0175】
一実施形態では、1つ以上のトリガー555が状態マシンによって生成されて、トリガークロスコネクト558に入力される。トリガー機能は「インタラプト」と類似しており、活動は、何らかの事象が生じるまで停止して遅延させることができる。活動をトリガーするためにトリガー信号が使用される。トリガーは他のトリガーを起動するために発行することができる。それらは、NNプロセッサ内の活動を同期させるために機能する非同期機構を表す。例えば、トリガーは、バッファが書き込まれるまで、または層が処理を完了するまで、処理を停止するために発行できる(またはそうでなければ、何らかの事象が起こっていて、さらなる処理が開始できることの指示として機能する)。
【0176】
加えて、トリガーは、異なるLC内のLCUにおける活動をトリガーするために発行できる。この処理は「ハンドオーバー」と呼ばれる。ハンドオーバー機構は、1つのLCから別のLCへの活動をトリガーでき、例えば、トリガーは、1つのANN層が完了して、結果をANN内の別の層に送信する場合に使用できる。トリガーウィンドウクロスコネクトは、出力トリガー信号559を適切なLC内のトリガーハンドラに誘導するように機能し、そこでそれらは信号557を介してLCU内での活動を制御するように働く。
【0177】
データと制御プレーンとの間の分離に関して、一実施形態では、制御プレーンを制御するマイクロコードはLC内で実行して、データに対するアクセスは有していない。LC内のマイクロコードマシンの追加の機能は、条件文または条件分岐がないことである。分岐予測または他のパイプラインオーバーヘッドを管理する必要が回避されるので、これは、データのパイプライン化に対して好都合である。従って、実行は、完全に予測可能である。これは、分岐し得るために実行が入力に依存する典型的な従来技術のマイクロコードとは対照的である。NNプロセッサでは、一旦、マイクロコードが実行されると、データフローの進展は完全に予測可能であり、すなわち、各制御信号の生成がいかなる場合でも予測できる。
【0178】
一実施形態では、マイクロコードベースのコントローラ内で実行された各マイクロコード命令は、計算資源およびメモリ資源に対する制御信号通知を生成するように動作する。言い換えれば、マイクロコードは、同様に実際の制御信号通知を出力に適用しない内部処理に対して責任を負う操作がないので、いかなる「オーバーヘッド」も有しない。従って、どのマイクロコード命令操作も、マイクロコードマシンの内部ハウスキーピング処理で浪費されない(「NOP」操作を唯一の例外として)。
【0179】
LC内のマイクロコードマシンの別の機能は、トリガーされる操作である。分岐はサポートされていないが、実行フローは、データパイプラインハンドシェイク、例えば、1つのLCUから別のLCUへのハンドオフ、を可能にするために実行の開始/停止を示す外部信号によってトリガーできる。
【0180】
LC内のマイクロコードマシンのさらに別の機能は、繰返し演算サポートであり、それにより演算のインライン繰返し(すなわち、インラインで実行するループ)は繰返し演算を演算コード自体内に示すことができるようにサポートされ、それによってループのセットアップおよび管理のための不必要なサイクル、ならびに関連するフェッチを回避する。この特徴は、ループ管理のオーバーヘッドと比較して少ない操作を有するループに対して有用であることに留意されたい。後者はニューラルネットワーク操作において非常に一般的であり、例えば、多数の乗算および累算(MAC)演算の後に活性化が続く。データパイプラインマシンでは、制御とデータの比率が、ごくわずかな制御が比較的大規模なデータパイプの挙動を定義するようなものである場合、それは非常に重要である。
【0181】
例えば、1000個の乗算および累算(MAC)演算を実行するように構成された従来のプロセッサを考える。擬似コード例が以下のリスト2に提供される。
【表3】
【0182】
前述の擬似コードでは、ループ内に4つの演算コードがあり(すなわち、4サイクル)、そのうちの2つが演算に関わり、50%の利用である。このループが1024のMAC回路を制御すると仮定すれば、これはフル稼働で、512だけが有効に動作していることを意味する。
【0183】
それに対して、インライン繰返しはNNプロセッサ内でサポートされる。加えて、内部制御に対するオーバーヘッドはゼロで、「余分な(spare)」演算コード、すなわち、マシンまたはハウスキーピング処理の内部管理のためだけに使用される演算コード、をもつ要求を排除する。リスト2の擬似コードは、以下のリスト3に提示される次の擬似コードに変換される。
【表4】
【0184】
上に示すように、全てのループ情報は機能的な演算コードに埋め込まれて、MAC利用は100%まで増加する。
【0185】
制御とデータプレーンとの間に深い分離を有することも制御プレーンをセキュリティの危険からある程度、本質的に免除することに留意されたい。これは、装置をハッキングするための一般的な技術は、制御プレーンに干渉するデータをそれに供給することであるためである。2つのプレーンは厳密に分離されているので、1つに干渉することは、他に影響を及ぼさない。
【0186】
コンパイラ
NNプロセッサのコンパイラ/SDK例を示すハイレベルブロック図が
図22に示されている。大まかに770で参照される、コンパイラは、入力ANNモデルに基づいてNNプロセッサを構成するように機能する。それは、ユーザーによって使用されて開始される外部ソフトウェアツールチェーンの一部としてオフチップで実行するプロセス内で実行される。典型的には、コンパイラは、ソースANNモデルの対象であるNNプロセッサ、NNプロセッサSoCまたは複数のNNプロセッサSoCの知識を有する。
【0187】
具体的には、トランスレータ772は、ユーザーモデルを受信して、モデルの中間フォーマットを生成するように機能する。オプティマイザ774は、モデルレベル最適化、性能に対する翻訳後のモデル調整、および異なるビット幅への数的適応を実行するように機能する。資源アロケータ778は、中間モデルに従い、物理的資源(例えば、計算およびメモリ要素など)を割り当てて指定する。プロファイラ786は、例えば、予期される電力消費、わたり(throughout)、待ち時間などを含む、性能評価を実行する。ソフトウェアエミュレータ782は、トランスレータ772の中間モデル出力を使用してNNプロセッサのビットイグザクト(bit exact)数的エミュレーションを実行するように機能する。
【0188】
一実施形態では、外部ツールチェーンを実装するためにいくつかの対象オプションがユーザーに提供される。3つの対象オプションは(1)NN装置780、(2)エミュレータ782、および(3)NN装置を機能的にシミュレートするハードウェアのソフトウェアモデルを含むシミュレータ784、を含む。従って、ユーザーは、NN装置自体、NN装置のハードウェアエミュレーション、またはNN装置のソフトウェアシミュレーションのいずれかを使用してツールチェーンを実行するオプションを有する。
【0189】
NNプロセッサの複数の動作粒度および関連するメモリ/待ち時間のトレードオフ
本発明の機能および利点は、NNプロセッサ内のパイプラインが、入力の任意のサブセットの任意の所望の粒度で動作することが可能なことであり、その場合、メモリは待ち時間に対してトレードオフされ、その逆も同じである。より具体的には、入力データが何らかの内部構造(例えば、ビデオのフレームで、各フレームは複数の行(またはバッファ、パケットなど)から成る)を有する場合、NNプロセッサアーキテクチャは、次の層の活動を、単一のかかる行、バッファ、パケットなど、それらの複数からの任意の集約でトリガーできる。
【0190】
下位集約の場合、中間結果を格納するために追加の中間結果(すなわち、コンテキスト)ストレージが必要とされる。しかし、パイプライン内での前のさらなる処理のために後続の処理要素が解放されるので、待ち時間は最小限であり、それは、着信トラフィックが、詰まるのではなく、使われるのを可能にする。従って、より上位メモリストレージ要件はコンテキストのより低い待ち時間に対してトレードオフされる。
【0191】
他方、より高い集約の場合、すなわち、より少ないコンテキストメモリしか要求されないか、または多数のコンテキストを要求するANNモデルが実装される場合、バッファメモリと引き換えにより少ないコンテキストメモリが使用されるトレードオフが行われ得、それにより入力の追加のバッファリングが実装され、結果として任意の一時点において同時に必要なコンテキスト数が減少するが、待ち時間は増加する。一実施形態では、このトレードオフはLC内のマイクロコードによって実装され、従って、構成可能でプログラム可能である。
【0192】
NNプロセッサの柔軟な処理粒度および関連するメモリ対待ち時間のトレードオフを示す略図が
図23に示されている。大まかに930で参照される、データパイプライン例は、最小限の遅延時間の方を好み、低入力領域粒度で動作するために、データパイプラインを活用するオプションを強調する。ネットワーク内の開始点または任意の点に配置できる入力データ938を含む入力テンソル(tensor)例932を考える。ネットワーク層の1つは次いで、NN操作934を入力データ(例えば、この例では3×3畳込み)に適用し、その後にメモリブロック931および939を含む出力領域936が続く。
【0193】
この例では、入力データストリームが完全に使われ、全ての必要な計算が適用される一方、全ての計算がメモリ内に格納された中間結果にコミットしているので、待ち時間を最小限にして、入力データを取得する必要がない。代替実施形態では、この機能は、(1)フレーム全体を待ってバッチ操作を適用し、それにより全てのデータが直ちに出力されるようにコミットされて中間結果を回避すること、(2)中間結果を回避するために最小セットの行を待つこと(この事例では3)、(3)外部メモリ内に格納された中間結果を使用して、メモリアクセス待ち時間が増大すること、または(4)中間結果を格納する必要を回避するために、必要に応じて、入力をリコールする(すなわち、同じデータを複数回、読み取る)ことによって実行できる。
【0194】
NNプロセッサSoC、チップ内およびチップ間接続
上で詳細に説明したように、NNプロセッサは、ANNを実装するために使用できる。しかし、実装されるANNがNNプロセッサの容量を超えている場合、本発明はANNモデルを実装するためにいくつかのNNプロセッサを使用する機能を提供する。前述のように、NNプロセッサは、NNプロセッサコア間の通信のための複数のバスインタフェース(例えば、チップ間インタフェース)を含む。本明細書で開示する例では、2つのチップ間インタフェースが提供されるが、任意の数が実装できる。従って、複数のNNプロセッサコアの処理能力を組み合わせることにより大規模なANNモデルに対応できる。
【0195】
相互接続されたNNプロセッサのネットワークのチップ間インタフェースにわたる配備は実質的にシームレスであることに留意されたい。装置間通信を利用すると、ネットワークの挙動は、単一のNN装置上に含まれるANNと等しい。一実施形態では、チップ間インタフェースは、層の境界上の帯域幅を狭める技術に沿う。インタフェースの物理層は、同期して、必要な帯域幅を保証する任意の適切なプロトコルを含み得る。次の層は、受信チップによって除去できるフレームフォーマットを搬送するパケット層である。フレームフォーマットの構造は、装置間の移行におけるオーバーヘッドを最小限にしようと試み、例えば、ストリームID、宛先層、データフォーマットなどを含む、複数のフィールドを含む、イーサネットのそれに類似している。例えば、WxHxF出力テンソルを有する層を考える。そのプロトコルは、処理が生じる前に、次の装置における構造、ストリームID、およびネットワークIDを識別する。必要な帯域幅はその結果(WxHxF+オーバーヘッド)×フレーム/sである。
【0196】
本発明の第1のマルチNNプロセッサSoCシステム例を示す略図が
図24に示されている。一実施形態では、上で説明して、
図4および
図5に示すようなNNプロセッサコア(またはエンジン)は、複製されて、システムオンチップ(SoC)として実装できる。NNプロセッサコアに対する知的財産(IP)は、モノリシック集積回路(IC)を実装するために使用できる。代替として、物理NNプロセッサコアダイがSoC上に統合して実装できる。
【0197】
モノリシック半導体またはSoCとして実装されると、大まかに700で参照される、NNプロセッサSoCは、内部バス710を介して相互接続された複数のNNプロセッサコア706、1つ以上の外部インタフェース回路702、1つ以上の「外部」L5メモリ回路708、ブートストラップおよび前処理回路704、ならびに後処理回路712を含む。半導体技術の当業者は任意の数のNNプロセッサコアおよび他の構成要素を有するICまたはSoCを実装できるので、NNプロセッサコア、L5メモリ回路などの数は、図示されるものに制限されないことに留意されたい。
【0198】
動作中、ANN入力データ714は、外部I/F702を介してSoC700に書き込まれる。ブートストラップおよび前処理回路704は、例えば、バッファリング、刻時(clocking)、電力管理、データスロットリングなど、を含む、1つ以上の機能を実装に応じて実行するように動作する。データは次いで、処理のためにNNプロセッサコア706に供給される。NNプロセッサコアは内部バス710を通して相互に通信する。NNプロセッサコア間の接続は、フルメッシュ、トークンリング、チェーンなどを含む任意の所望のルーティングタイプを実装に応じて含み得、本発明にとっては重要でないことに留意されたい。ブートストラップおよび前処理回路704、外部I/F702、L5メモリ708、ポストプロセッサ712を含む、他の回路構成要素もバスを通して通信することに留意されたい。
【0199】
本発明の第2のマルチNNプロセッサSoCシステム例を示す略図が
図25に示されている。大まかに790で参照される、このシステム例では、複数のNNプロセッサコアまたはSoC794が連続的に連結される。ANN入力データ792が、左端のNNプロセッサに入り、ANN出力データ799が右端のNNプロセッサから出る。複数のNNプロセッサが一緒に、ANNモデルを一層ずつ実装する。
【0200】
本発明の第1のマルチNNプロセッサSoCシステム例を示す略図が
図26に示されている。大まかに800で参照される、このシステム例では、3つのNNプロセッサコアまたはSoC804、806、808が2→1集約方式で結合されて、一緒にANNモデルを実装する。ANN入力データ802は入力ポートを通してNNプロセッサ804、806の両方に入力される。この例では、並列接続した2つのNNプロセッサコア804、806が、ANNモデルを実装するために必要であり、例えば、(1)モデルは膨大な数のニューロンを1つ以上の層内に含む、または(2)ニューロンの数が単一装置の資源制約のいずれか(例えば、制御、メモリもしくは計算)を上回っている、のいずれかである。各NNプロセッサ804、806の出力はチップ間入力ポートを介してNNプロセッサ808に入力され、NNプロセッサ808はANN出力809を生成するように機能する。
【0201】
本発明の第1のマルチNNプロセッサSoCシステム例を示す略図が
図27に示されている。大まかに810で参照される、このシステム例では、3つのNNプロセッサコアまたはSoC814、816、818が1→2分散方式で結合されて、一緒にANNモデルを実装する。ANN入力データ812は入力ポートを通してNNプロセッサ814に入力される。NNプロセッサ814の出力はNNプロセッサ816、818の両方に入力される。この例では、並列接続した2つのNNプロセッサ816、818が、ANNモデルを実装するために必要であり、例えば、(1)モデルが膨大な数のニューロンを1つ以上の層内に含む、または(2)ニューロンの数が単一装置の資源制約のいずれか(例えば、制御、メモリもしくは計算)を上回っている、のいずれかである。各NNプロセッサ816、818によって生成される出力は結合されてANN出力819を形成する。
【0202】
ANNマッピング方式例
前述のように、ANNの要件が単一NNプロセッサコアの計算および/またはメモリ資源を超えている場合、ANNモデルはいくつかの装置にわたって分割できる。コンパイラ/SDKは、ネットワーク層間およびネットワーク層にわたる分割および併合を可能にするANNの典型的なセルラー性質をシームレスに活用する。コンパイラ内で、層間帯域幅は層内帯域幅よりも本質的にずっと低いという事実に依存することに加えて、各装置にマッピングされるサブネットワークの入力および出力における帯域幅要求の責任を負いながら、分割は行われる。
【0203】
一般に、コンパイラによって実行されるような、装置間マッピングは、装置内に存在する入力および出力ポートの数(例えば、本例では2)によって駆動される。装置上の2つの入力および出力ポートの事例では、マッピング1→2(すなわち、分散)、2→1(すなわち、集約)、および1→1(すなわち、フィードフォワード)に対する柔軟性は、図示されるシステム配列の構築を可能にする。
【0204】
図2の第1のANN例に対するマッピング方式例を示す略図が
図28に示されている。前述のように、コンパイラ/SDKは、論理ANNモデルを物理NNプロセッサ装置にマッピングするように機能する。その分析の結果として、この例では、コンパイラはANN全体が単一のNNプロセッサ装置における単一のクラスタ362内で実装できると判断する。ANN内の各ネットワーク層365は1つ以上のサブクラスタ364にマッピングされ、LC361も割り当てられる。従って、例えば、ネットワーク層1は3つのサブクラスタ、すなわち、ANN入力363を同様に受信するサブクラスタ1、2および3、にマッピングされる。これらの3つのサブクラスタは、LC1によって構成および制御される。同様に、ネットワーク層2内のニューロンは、コンパイラによってサブクラスタ4、5、および6にマッピングされてLC2に割り当てられる。ネットワーク層3内のニューロンはサブクラスタ7および8にマッピングされてLC3に割り当てられる。最後に、ネットワーク層4はサブクラスタ9にマッピングされ、LC4によって構成されて制御される。ANN出力369はサブクラスタ9によって生成される。
【0205】
第2の人工ニューラルネットワーク例を示す略図が
図29に示されている。大まかに720で参照される、このANN例は、畳込み型NNであり得、層1~層6を含む、複数の層726を含む。層1はANN入力722を受信し、層6はANN出力724を生成する。
【0206】
図29のANNのマルチNNプロセッサSoCシステム例を示す略図が
図30に示されている。大まかに730で参照される、NNシステムは、ANN720の本発明のNNプロセッサシステムへのマッピングを表す。各NNプロセッサ736は別個のIC、または代替として、SoC内の別個のダイを含む。
【0207】
複雑プロセス中に論理ANNモデルを物理NNプロセッサ構成にマッピングすることはコンパイラおよびSDKの機能である。この例では、NNプロセッサ1の容量は、計算要素、メモリファブリックなどに関して、層1を実装するのに十分なだけであるため、層1はNNプロセッサ1全体にマッピングする。NNプロセッサ1はANN入力732も受信する。層2および層3は、単一装置内に実装できないようなものであり、従って、並列接続した2つの装置、すなわち、NNプロセッサ2および3が必要とされ、処理はそれらの間で分割される。層4は大きいが、コンパイラは、それは単一装置内に実装できると判断する。従って、NNプロセッサ4全体が層4にマッピングされる。層5および6が、コンパイラによって分析されて、単一のNNプロセッサ5装置にマッピングされる。NNプロセッサ5はANN出力734を生成する。NNプロセッサは、各装置内のチップ間インタフェースを介して、フィードフォワード方法で相互に通信することに留意されたい。
【0208】
第3の人工ニューラルネットワーク例を示す略図が
図31に示されている。大まかに740で参照される、ANN例は、任意の所望のANNを表すことを意図する。それは、異なるネットワーク層に編成された複数のニューロン744を含む。入力データX746は第1の層に入力され、出力データY748は最後の層によって生成される。
【0209】
図31のANNの第1のマルチNNプロセッサSoCシステム例を示す略図が
図32に示されている。この例では、大まかに750で参照される、第1のマッピングは、コンパイラ/SDKによって生成され、いくつかのNNプロセッサ装置を含む。具体的には、第1の2つのネットワーク層内のニューロン756はNNプロセッサ1にマッピングされ、第3のネットワーク層はNNプロセッサ2にマッピングされ、最後の3つのネットワーク層はNNプロセッサ3にマッピングされる。ANN入力データ752はNNプロセッサ1内の第1の層に入力される。NNプロセッサ3はANN出力データ754を生成する。
【0210】
図31のANNの第2のマルチNNプロセッサSoCシステム例を示す略図が
図33に示されている。この例では、大まかに760で参照される、異なるマッピングは、コンパイラ/SDKによって生成され、いくつかのNNプロセッサ装置を含む。具体的には、最初の4つのネットワーク層内のニューロン766は、単一装置の容量を超えているので、2つの装置、すなわち、NNプロセッサ1および2の間で分割される。最後の2つのネットワーク層はNNプロセッサ3にマッピングされる。ANN入力データ762はNNプロセッサ1および2内の第1の層に入力される。NNプロセッサ3はANN出力データ764を生成する。
【0211】
当業者は、論理と回路ブロックとの間の境界は例示に過ぎないこと、および代替実施形態は論理ブロックもしくは回路要素を併合するか、または機能の代替分解を様々な論理ブロックもしくは回路要素に課すことを認識するであろう。従って、本明細書で示すアーキテクチャは例示に過ぎないこと、および実際、同じ機能を達成する多くの他のアーキテクチャが実装され得ることが理解される。
【0212】
同じ機能を達成するための構成要素の任意の配置は、所望の機能が達成されるように効果的に「関連付けられる」。従って、特定の機能を達成するために組み合わされる本明細書の任意の2つの構成要素は、アーキテクチャまたは中間構成要素にかかわらず、所望の機能が達成されるように、相互に「関連付けられている」と見なされ得る。同様に、そのように関連付けられた任意の2つの構成要素は、所望の機能を達成するために相互に「動作可能に接続されている」か、または「動作可能に結合されている」とも見なすことができる。
【0213】
さらに、当業者は、前述の動作間の境界は例示に過ぎないことを認識するであろう。複数の動作が単一の動作に組み合わされ得、単一の動作が追加の動作に分散され得、動作は、時間において少なくとも部分的に重なり合って実行され得る。その上、代替実施形態は、特定の動作の複数のインスタンスを含み得、動作の順番は様々な他の実施形態で変更され得る。
【0214】
本明細書で使用する用語は、特定の実施形態だけを記述するためであり、本発明を制限することを意図していない。本明細書では、単数形「1つの(a)」、「1つの(an)」および「その(the)」は、文脈で明示的に別の指示がない限り、複数形も含むことを意図する。用語「含む(comprise)」および/または「含み(comprising)」は、本明細書で使用される場合、述べられた特徴、整数、ステップ、動作、要素、および/または構成要素の存在を指定するが、1つ以上の他の特徴、整数、ステップ、動作、要素、構成要素、および/もしくはそれらのグループの存在または追加を除外しないことがさらに理解されよう。
【0215】
クレームでは、円括弧で囲んだ任意の引用符号は、クレームを制限するものと解釈されるべきでない。クレーム内での「少なくとも1つ」および「1つ以上」などの導入句の使用は、不定冠詞「1つの(a)」または「1つの(an)」による別のクレーム要素の導入が、たとえ同じクレームが導入句「1つ以上」または「少なくとも1つ」および「1つの(a)」または「1つの(an)」などの不定冠詞を含む場合でさえ、かかる導入されたクレーム要素を含む任意の特定のクレームをかかる要素を1つだけ含む発明に制限することを暗示すると解釈すべきではない。定冠詞の使用に関しても同じことが言える。特に指定のない限り、「第1の」、「第2の」などの用語は、かかる用語が記述する要素間を任意に区別するために使用される。従って、これらの用語は必ずしも、かかる要素の時間的または他の優先順位付けを示すことを意図しない。ある手段が相互に異なるクレーム内で列挙されているという単なる事実は、これらの手段の組合せが利益をもたらすために使用できないことを意味しない。
【0216】
以下のクレーム内の全ての手段またはステップ+機能要素の対応する構造、材料、動作、および同等物は、具体的にクレームされたとおり他のクレームされた要素と組み合わせて機能を実行するための、任意の構造、材料、または動作を含むことを意図する。本発明の記述は例示および説明を目的として提示されているが、包括であるか、または開示する形式における本発明に制限することは意図していない。多数の修正および変更が当業者には容易に思い浮かぶので、本発明は本明細書で説明する限られた数の実施形態に制限されないことを意図する。それに応じて、全ての適切な変形、修正および同等物が使用され得、本発明の趣旨および範囲に含まれることが理解されよう。実施形態は、本発明の原理および実際の適用を最も良く説明し、他の当業者が本発明を理解して、企図される特定の使用に適するように様々な実施形態を様々に変更するために、選択されて説明される。