(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-09-06
(45)【発行日】2024-09-17
(54)【発明の名称】高精度のニューラル処理要素
(51)【国際特許分類】
G06N 3/063 20230101AFI20240909BHJP
【FI】
G06N3/063
(21)【出願番号】P 2021577355
(86)(22)【出願日】2020-05-11
(86)【国際出願番号】 US2020032399
(87)【国際公開番号】W WO2020263439
(87)【国際公開日】2020-12-30
【審査請求日】2023-04-04
(32)【優先日】2019-06-28
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】314015767
【氏名又は名称】マイクロソフト テクノロジー ライセンシング,エルエルシー
(74)【代理人】
【識別番号】100107766
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】アンバルデカル,アモール エイ.
(72)【発明者】
【氏名】ボブロフ,ボリス
(72)【発明者】
【氏名】セドラ,ケント ディー.
(72)【発明者】
【氏名】マクブライド,チャド ボーリング
(72)【発明者】
【氏名】ピーター,ジョージ
(72)【発明者】
【氏名】ウォール,ラリー マーヴィン
【審査官】渡辺 順哉
(56)【参考文献】
【文献】米国特許第05880985(US,A)
【文献】特開2001-100979(JP,A)
【文献】欧州特許出願公開第03480691(EP,A1)
【文献】特開2018-092560(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/00-99/00
(57)【特許請求の範囲】
【請求項1】
複数のニューラル処理要素を含むディープニューラルネットワーク(DNN)プロセッサであって、
前記複数のニューラル処理要素のそれぞれは、
第1の符号拡張信号と第1のオペランドの最上位ビット(MSB)との間で論理AND演算を実行するように構成された第1のハードウェアANDゲートと、
前記第1のハードウェアANDゲートの出力と前記第1のオペランドとを連結し、第1の出力をハードウェアバイナリ乗算器に提供するように構成された第1の連結器と、
第2の符号拡張信号と第2のオペランドのMSBとの間で論理AND演算を実行するように構成された第2のハードウェアANDゲートと、
前記第2のハードウェアANDゲートの出力と前記第2のオペランドとを連結し、第2の出力を前記ハードウェアバイナリ乗算器に提供するように構成された第2の連結器と
を含む、ディープニューラルネットワークプロセッサ。
【請求項2】
前記第1のオペランド及び前記第2のオペランドは、符号付き又は符号なし8ビット2進数を含む、請求項1に記載のディープニューラルネットワークプロセッサ。
【請求項3】
前記第1の出力及び前記第2の出力は、9ビット符号付き2進数を含む、請求項1に記載のディープニューラルネットワークプロセッサ。
【請求項4】
前記ハードウェアバイナリ乗算器の出力は、符号付き18ビット2進数を含む、請求項1に記載のディープニューラルネットワークプロセッサ。
【請求項5】
前記第1のオペランドの前記MSBは、8ビット符号付き又は符号なし2進数のビット7を含む、請求項1に記載のディープニューラルネットワークプロセッサ。
【請求項6】
コンピュータ実施方法であって、
第1の符号拡張信号と第1のオペランドの最上位ビット(MSB)との間で論理AND演算を実行するステップと、
第1のハードウェアANDゲートの出力と前記第1のオペランドとを連結するステップと、
第2の符号拡張信号と第2のオペランドのMSBとの間で論理AND演算を実行するステップと、
第2のハードウェアANDゲートの出力と前記第2のオペランドとを連結するステップと、
前記第1のハードウェアANDゲートの前記出力と前記第1のオペランドとの連結の結果
と、前記第2のハードウェアANDゲートの前記出力と前記第2のオペランドとの連結の結果とをハードウェアバイナリ乗算器に伝達するステップと
を含むコンピュータ実施方法。
【請求項7】
前記第1のオペランド及び第2のオペランドは、符号付き又は符号なし8ビット2進数を含む、請求項6に記載のコンピュータ実施方法。
【請求項8】
前記第1のハードウェアANDゲートの前記出力と前記第1のオペランドとの前記連結の前記結果、及び第2のハードウェアANDゲート
の前記出力と前記第2のオペランドとの前記連結の前記結果は、9ビット符号付き2進数を含む、請求項
6に記載のコンピュータ実施方法。
【請求項9】
前記ハードウェアバイナリ乗算器の出力は、符号付き18ビット2進数を含む、請求項
8に記載のコンピュータ実施方法。
【請求項10】
複数のニューラル処理要素を含むディープニューラルネットワーク(DNN)プロセッサであって、
前記ニューラル処理要素のそれぞれは、
符号付きバイナリ8ビットオペランド又は符号なし8ビットオペランドを含む8ビットオペランドを受信し、
前記8ビットオペランドの最上位ビット(MSB)と、符号拡張演算が前記8ビットオペランドに対して実行されるべきか否かを示すバイナリ信号とに対して論理AND演算を実行し、
前記8ビットオペランドに新たなMSBを追加して
第1の9ビット符号付きバイナリ値を作成し、
前記論理AND演算の結果を前記
第1の9ビット符号付きの値の前記新たなMSBに格納し、
符号付きバイナリ8ビットオペランド又は符号なし8ビットオペランドを含む第2の8ビットオペランドを受信し、
前記第2の8ビットオペランドの最上位ビット(MSB)と、符号拡張演算が前記第2の8ビットオペランドに対して実行されるべきか否かを示す第2のバイナリ信号とに対して論理AND演算を実行し、
前記第2の8ビットオペランドに新たなMSBを追加して第2の9ビット符号付きバイナリ値を作成し、
前記論理AND演算の結果を前記第2の9ビット符号付きの値の前記新たなMSBに格納し、
前記
第1の9ビット符号付きの値
と、前記第2の9ビット符号付きの値とを乗算器に伝達するように構成される、DNNプロセッサ。
【請求項11】
ハードウェアバイナリ乗算器の出力は、符号付き18ビット2進数を含む、請求項
10に記載のDNNプロセッサ。
【請求項12】
前記バイナリ信号の状態は、前記DNNプロセッサによって前に処理されたDNNの層のタイプに基づく、請求項
11に記載のDNNプロセッサ。
【請求項13】
前記DNNプロセッサによって前に処理された前記DNNの前記層は、Tanh層を含む、請求項
12に記載のDNNプロセッサ。
【発明の詳細な説明】
【背景技術】
【0001】
ディープニューラルネットワーク(「DNN(deep neural network)」)は、人間の脳のような生体神経系における情報処理及び通信パターンに基づいて大まかにモデル化されている。DNNは、限定されるものではないが、物体検出、意味ラベル付け及び特徴抽出のような複雑な分類問題を解決するために利用できる。その結果、DNNは、コンピュータビジョン、音声認識及び機械翻訳のような多くのインテリジェンス(「AI(intelligence)」)アプリケーションの基礎を形成している。DNNは、これらのドメインの多くにおいて人間の精度に匹敵するか或いはそれを超えることができる。
【0002】
DNNの高レベルの性能は、入力空間の効果的な表現を取得するために大きいデータセットに対して統計学習を使用した後に、入力データから高レベルの特徴を抽出するこれらの能力に由来する。しかし、DNNの優れた性能は、高い計算複雑性の犠牲を払う。一般的に、グラフィックス処理ユニット(「GPU(graphics processing unit)」)のような高性能汎用プロセッサが、多くのDNNアプリケーションによって必要とされる高レベルの計算性能を提供するために利用されている。
【0003】
GPUのような汎用プロセッサは、DNNを実装するための高レベルの計算性能を提供できるが、これらのタイプのプロセッサは、典型的には、低電力消費が重要であるコンピューティングデバイスにおいて、長時間にわたってDNN演算を実行する際に使用するのに適さない。例えば、GPUのような汎用プロセッサは、バッテリ寿命を延ばすために低減した電力消費が必要とされるスマートフォン又は代替/仮想現実(「AR/VR(alternate/virtual reality)」)デバイスのようなバッテリ駆動ポータブルデバイスにおいて長時間のDNNタスクを実行する際に使用するのに適さない可能性がある。
【0004】
人間の動きの検出のような連続したDNNタスクを実行する間の低減した電力消費は、例えば、パワーオーバーイーサネット(「POE(power-over-Ethernet)」)セキュリティカメラのような、バッテリ駆動ではないデバイスにおいても重要になる可能性がある。この特定の例では、POEスイッチは、限られた量の電力しか供給することができず、セキュリティカメラのようなPOEデバイスの電力消費を低減することは、より少ない電力を供給するPOEスイッチの使用を可能にする。
【0005】
汎用プロセッサと比較して電力消費を同時に低減しつつ、優れたDNN処理を提供できる特定用途向け集積回路(「ASIC(application-specific integrated circuit)」)が開発されている。しかし、この分野における進歩にもかかわらず、特に低電力消費が重要であるコンピューティングデバイスにおいて使用するために、DNN処理を実行するASICの性能を改善して電力消費を低減するための継続的なニーズが存在する。
【0006】
上記及び他の技術的課題に関して、ここに開示される。
【発明の概要】
【0007】
高精度の計算が可能なニューラル処理要素がここに開示される。ここに開示されるニューラル処理要素のアーキテクチャは、特定のタイプのDNN層によって生成されたオペランドを処理する場合、より高い精度を可能にする。例えば、限定されるものではないが、開示の技術を実装するニューラル処理要素は、入力としてNビットを有する符号付き又は符号なしオペランドをとることができる。特定の状況において、ニューラル処理要素は、N+1ビットを使用してオペランドに対して演算を実行でき、それによって、ニューラル処理要素がNビットのみを使用してその内部計算を実行するアーキテクチャと比較して、高精度を提供する。ここに具体的に記載されていない他の技術的利点も、開示の対象物の実施を通じて実現できる。
【0008】
簡単に上記に記載した技術的利点を実現するために、ニューラル処理要素を含むDNNプロセッサが開示される。ニューラル処理要素は、入力としてNビットを有する符号付き又は符号なしバイナリオペランドをとることができる。1つの特定の実装では、オペランドは、符号付き又は符号なし8ビット2進数である。他の実装では、オペランドは異なる数のビットを利用できる。
【0009】
ニューラル処理要素はまた、特定のタイプのオペランドに対して高精度の計算を実行するための回路を含む。例えば、ニューラル処理要素は、DNNの正規化線形ユニット(「ReLU(rectified linear unit)」)層によって生成されたオペランドのような正の数に制限されるオペランドに対して拡張した精度の計算を実行できる。典型的には、ReLU層によって出力された符号付きNビット値は、符号のために1ビットが確保されるので、N-1ビットのみを使用する(-127~+128の値を表す)。しかし、開示の技術を使用して、ニューラル処理要素は、その内部計算において、ReLU層によって生成されたオペランドの全てのNビットを利用できる(0~255の値を表す)。
【0010】
高精度を提供するために、ニューラル処理要素は、ハードウェアANDゲートで構成される。ハードウェアANDゲートは、バイナリ信号(ここでは「符号拡張信号(sign extend signal)」と呼ばれてもよい)とオペランドの最上位ビット(「MSB(most significant bit)」)との間で論理AND演算を実行するように構成される。オペランドが8ビット2進数の例では、MSBはオペランドのビット7である。
【0011】
符号拡張信号の状態は、DNNプロセッサによって前に処理されたDNNの層のタイプに基づくものとすることができる。特に、符号拡張信号は、オペランドがDNNのReLU層によって生成される場合のようにオペランドが符号なしである場合、論理FALSEに設定できる。この場合、オペランドの符号は拡張されないが、オペランドの前に0ビットが付加され、9ビットの符号付き数字になる。
【0012】
符号拡張信号が論理TRUEである場合(すなわち、入力がTanh層の出力のように符号付きである場合)、符号拡張はオペランドに対して実行される。符号拡張演算を実行するために、ニューラル処理要素はまた、2つのバイナリ値を連結するように構成された連結回路(「連結器(concatenator)」)を含む。特に、連結器は、ハードウェアANDゲートの出力とオペランドとを連結し、それによって、オペランドをNビットの符号なし値からN+1ビットの符号付き値に拡張する。例えば、オペランドが8ビット2進数である構成では、連結器の出力は9ビットの符号付き2進数である。
【0013】
ニューラル処理要素はまた、上述の方式で他のオペランドを処理するための他のハードウェアANDゲート及び他の連結器を含むことができる。この例では、双方のオペランドについての連結器の出力がハードウェアバイナリ乗算器に提供される。オペランドが8ビット2進数である構成では、ハードウェアバイナリ乗算器の出力は18ビットの符号付き2進数である。ニューラル処理要素は、ハードウェアバイナリ乗算器の出力を処理し続けることができる。
【0014】
上記の対象物は、コンピュータ制御装置、コンピュータ実施方法、コンピューティングデバイス又はコンピュータ読み取り可能媒体のような製造物として実現できることが認識されるべきである。以下の詳細な説明を読んで関連する図面を閲覧することから、これらの特徴及び様々な他の特徴が明らかになる。
【0015】
この概要は、詳細な説明において以下に更に説明される、開示の技術のいくつかの態様の簡単な説明を簡略化した形式で紹介するために提供されている。この概要は、特許請求の範囲の対象物の主な特徴又は本質的な特徴を特定することを意図するのではなく、また、この概要が特許請求の範囲の対象物の範囲を限定するために使用されることを意図するものでもない。さらに、特許請求の範囲の対象物は、本開示のいずれかの部分に記載されたいずれかの欠点又は全ての欠点を解決する実装に限定されない。
【図面の簡単な説明】
【0016】
【
図1】一実施形態に従って、ここに開示の技術の態様を実装するDNNプロセッサを含む処理システムの構成及び動作の態様を示すコンピューティングアーキテクチャ図である。
【
図2】一実施形態に従って、高精度のニューラル処理要素の構成の態様を示すコンピューティングアーキテクチャ図である。
【
図3A】開示の技術を使用して構成されたニューラル処理要素の動作の例示的な例を示すデータ図である。
【
図3B】開示の技術を使用して構成されたニューラル処理要素の動作の他の例示的な例を示すデータ図である。
【
図4】ここに開示の一実施形態に従って、
図2に示すニューラル処理要素の動作の態様を示すルーチンを示すフロー図である。
【
図5】一実施形態に従って高精度を有するニューラル処理要素を含むDNNプロセッサのためのアプリケーションホストとして機能できるコンピューティングデバイスのための例示的なコンピュータハードウェア及びソフトウェアアーキテクチャを示すコンピュータアーキテクチャ図である。
【
図6】ここに提示される様々な実施形態に従って、開示の技術の態様が実装できる分散コンピューティング環境を示すネットワーク図である。
【発明を実施するための形態】
【0017】
以下の詳細な説明は、高精度のニューラル処理要素を対象とする。簡単に上記に説明したように、開示の技術の実装は、特定のタイプのDNN層によって生成されたオペランドを処理する際に、ニューラル処理要素がより高い精度でこれらの内部計算を実行することを可能にすることができる。ここに具体的に記載されていない他の技術的利点も、開示の対象物の実施を通じて実現できる。
【0018】
ここに記載の対象物は、ハードウェアDNNプロセッサと共に実装されるハードウェアニューラル処理要素の一般的なコンテキストで提示されるが、当業者は、他の実装が他のタイプのコンピューティングシステム及びモジュールと組み合わせて実行できることを認識する。当業者はまた、ここに記載の対象物が、ハンドヘルドデバイス、マルチプロセッサシステム、マイクロプロセッサベース又はプログラマブル家電、デバイスに埋め込まれたコンピューティング又は処理システム(ウェアラブルコンピューティングデバイス、自動車、ホームオートメーション等)、ミニコンピュータ、メインフレームコンピュータ等を含む、他のコンピュータシステム構成で実施できることを認識する。
【0019】
以下の詳細な説明において、詳細な説明の一部を形成し、例示的な特定の構成又は例として示される添付の図面に参照が行われる。ここで、図面を参照すると、同様の数字は、いくつかの図面を通じて同様の要素を表している。ここで、高精度のニューラル処理要素の態様について説明する。
【0020】
図1は、一実施形態に従って、ここに開示の技術の態様を実装する処理システムの構成及び動作の態様を示すコンピューティングアーキテクチャ図である。いくつかの実施形態では、ここに開示の処理システムは、限定されるものではないが、アイトラッキング、ハンドトラッキング、物体検出、意味ラベル付け及び特徴抽出のような分類問題(及び関連する問題)を解決するように構成される。
【0021】
この機能を提供するために、リコール専用(recall-only)ニューラルネットワークを実装し、広範囲のネットワーク構造をプログラム的にサポートできるDNNプロセッサ112が提供される。DNNプロセッサ112によって実施されるネットワークのための訓練は、サーバファーム、データセンタ又は他の適切なコンピューティング環境においてオフラインで実行できる。DNNを訓練した結果は、「重み(weight)」又は「カーネル(kernel)」として知られるパラメータのセットである。これらのパラメータは、入力に適用できる変換関数を表し、結果は分類又は意味的にラベル付けされた出力である。
【0022】
ここに開示のDNNプロセッサ112は、スーパースカラプロセッサと考えられることができる。DNNプロセッサ112は、ニューラル処理要素105Fと呼ばれる複数の実行ユニットに1つ以上の命令をディスパッチできる。実行ユニットは、「同時ディスパッチ同時完了(simultaneous dispatch simultaneous complete)」とすることができ、各実行ユニットは、他の実行ユニットのそれぞれと同期する。DNNプロセッサ112は、単一命令ストリーム・複数データストリーム(「SIMD(single instruction stream, multiple data stream)」)アーキテクチャに分類できる。
【0023】
ニューラル処理要素105Fは、脳における生体神経処理要素を大まかにモデル化するために使用されるニューラルネットワーク内の基本ユニットである。特に、ニューラル処理要素105Fは、適用される活性化関数で、バイアスに加算された重みベクトルを有する入力ベクトルの内積を計算できる。
【0024】
DNNプロセッサ112内の各ニューラル処理要素105Fは、加重和、最大プーリング、バイパス及び潜在的に他のタイプの演算を実行できる。ニューラル処理要素105Fは、クロックサイクル毎に入力及び重みデータを処理する。各ニューラル処理要素105Fは、DNNプロセッサ112内のカーネルデータの流れを最小化するために、カーネル内の進行に関して全ての他のニューラル処理要素105Fに同期する。
【0025】
各ニューラル処理要素105Fは、乗算器、加算器、比較器及び多数のアキュムレータ(
図1に図示せず)を含むことができる。複数のアキュムレータを有することによって、ニューラル処理要素105Fは、一度に複数の異なるアクティブなカーネルのコンテキストを維持できる。各アキュムレータは、SRAM150(以下に説明する)の読み取りからロードされることができる。アキュムレータは、他のニューラル処理要素105Fからの他のアキュムレータの内容と合計できる。
【0026】
DNNプロセッサ112は、画像データのような平面データを入力として受け入れる。しかし、DNNプロセッサ112への入力は画像データに限定されない。むしろ、DNNプロセッサ112は、均一な平面フォーマットでDNNプロセッサ112に提示された任意の入力データに対して動作できる。1つの特定の実施形態では、DNNプロセッサ112は、入力として多平面の1バイト又は2バイトのデータフレームを受け入れることができる。
【0027】
各入力フレームは、N×K×H×Wセットのカーネルで畳み込まれることができ、ここで、Nはカーネル数であり、Kはカーネル当たりのチャネル数であり、Hは高さであり、Wは幅である。畳み込みは、入力データの間で重複した間隔に対して実行され、ここで、間隔はX方向及びY方向のストライドによって定義される。これらの機能は、ニューラル処理要素105Fによって実行され、ソフトウェア可視制御レジスタを介してDNNプロセッサ112によって管理される。限定されるものではないが、全結合、バッチ正規化及び他のタイプの演算を含む他のタイプの演算も実行されてもよい。
【0028】
DNNプロセッサ112は、複数のデータタイプ、すなわち、重み、入力データ/特徴マップ、活性化データ、バイアス及びスカラをサポートする。ほとんどの場合、入力データ/特徴マップ及び活性化データは、同じデータに対する2つの名称であり、層の出力を参照する場合に活性化データという用語が使用されるという違いがある。層の入力を参照する場合に入力データ/特徴マップという用語が使用される。
【0029】
DNNプロセッサ112内のニューラル処理要素105Fは、入力の加重和を計算し、「活性化関数(activation function)」又は「伝達関数(transfer function)」を通じて加重和を通過させる。一般的に、伝達関数はシグモイド形状を有するが、区分線形関数、階段関数又は他のタイプの関数の形式になってもよい。活性化関数は、分類境界が非線形である場合にニューラル処理要素105Fがより大きいセットの入力及び所望の出力に対して訓練することを可能にする。
【0030】
DNNプロセッサ112は、ニューラルネットワークの層に対応する層記述子のリストに対して動作する。層記述子のリストは、DNNプロセッサ112によって命令として扱われることができる。これらの記述子は、メモリからDNNプロセッサ112にプリフェッチされ、順序通りに実行できる。記述子リストは、DNNプロセッサ112への命令のセットとして機能する。いくつかの構成では、2つのタイプの命令、すなわち、層記述子及びシーケンスコントローラ上で実行されるプログラム命令が利用される。DNNプロセッサ112上で実行される記述子リストを作成するために、ソフトウェアツール及び/又はコンパイラがDNNプロセッサ112の外部のデバイス上で実行できる。
【0031】
一般的に、2つの主なクラスの記述子、すなわち、メモリ間移動(「M2M(memory-to-memory move」)記述子及び演算記述子が存在する。M2M記述子は、演算記述子による利用のために、メインメモリとローカルバッファ(すなわち、以下に説明するバッファ125)との間でデータを移動するために使用できる。M2M記述子は、演算記述子と異なる実行パイプラインに従う。M2M記述子のターゲットパイプラインは、内部DMAエンジン105B又は構成レジスタ105Gとすることができるが、演算記述子のターゲットパイプラインは、ニューラル処理要素105Fとすることができる。
【0032】
演算記述子は、ニューラル処理要素105Fがローカルスタティックランダムアクセスメモリ(「SRAM(static random-access memory)」)に位置するデータ構造に対して実行するべき特定の演算を指定する。演算記述子は、順序通りに処理され、多くの異なる層の演算を可能にし、そのうちの少なくともいくつかがここに記載される。
【0033】
図1に示すように、DNNプロセッサ112は、固有のL1及びL2バッファ構造を有するメモリサブシステムを有する。
図1に示すL1及びL2バッファは、特にニューラルネットワーク処理のために設計されている。例として、L2バッファ150は、選択された周波数で動作する高速プライベートインタフェースによって、選択された記憶容量を維持できる。L1バッファ125は、カーネルと活性化データとの間で分割できる選択された記憶容量を維持できる。L1バッファ125は、ここでは「バッファ125」と呼ばれてもよく、L2バッファ150は、ここではSRAM150と呼ばれてもよい。
【0034】
いくつかの実施形態では、計算データ(すなわち、入力データ、重み及び活性化データ)は、SRAM150の主要行に格納される。計算データは、2つのバッファとして組織化でき、一方のバッファは入力データを含み、ここでは「入力バッファ」と呼ばれてもよく、他方のバッファはカーネル重みを含み、ここでは「重みバッファ」と呼ばれてもよい。バッファは、ロード/記憶ユニット105CによってSRAM150から充填される。データは、所定の容量に到達するまで、各バッファに蓄積される。いくつかの実施形態では、次いで、バッファデータはシャドウバッファにコピーされ、ニューラル処理要素105Fに提示される。
【0035】
DNNプロセッサ112はまた、レジスタインタフェース105G、プリフェッチユニット105A、セーブ/復旧ユニット105E、層コントローラ105D、及びレジスタインタフェース105Gを含むが、これらに限定されない、多数の他のコンポーネントを含むことができる。いくつかの実施形態では、DNNプロセッサ112は、更なるコンポーネント又は代替のコンポーネントを含むことができる。
【0036】
いくつかの構成では、DNNプロセッサ112は、他の外部コンピューティングコンポーネントと共に動作する。例えば、いくつかの実施形態では、DNNプロセッサ112は、ホストアプリケーションプロセッサのシステム・オン・チップ(「ホストSoC」)130に接続される。DNNプロセッサ112は、例えばPCIeインタフェースを通じてホストSoC130に接続できる。これらの接続を可能にするために、PCIeエンドポイント135のような適切なPCIeコンポーネントが利用できる。
【0037】
ホストSoC130は、DNNプロセッサ112のアプリケーションプロセッサとして機能する。メインオペレーティングシステム、アプリケーション及び補助センサ処理は、ホストSoC130によって実行される。ホストSoC130はまた、画像データのような入力データをDNNプロセッサ112に提供する外部カメラのような入力データソース102に接続できる。TENSILICAノード140のような更なる中央処理装置(「CPU」又は「プロセッサ」)もまた、DNNプロセッサ112の動作を調整するために利用でき、その態様について以下に説明する。
【0038】
DDR DRAM155はまた、メインシステムメモリとして使用できるホストSoC130に接続できる。このメモリは、メモリコントローラ145によって、ホストSoC130から広帯域幅ファブリック120(例えば、PCIeバス)を横切ってアクセス可能である。広帯域幅ファブリック120は、双方向のダイレクトメモリアクセス(「DMA(directional direct memory access)」)のスモールメッセージングトランザクション及びより大きいDMAトランザクションを提供する。ブリッジ115及び低帯域幅ファブリック110は、サブモジュール構成及び他の機能のために、DNNプロセッサ112をホストSoC130に接続できる。
【0039】
DNNプロセッサ112は、メインメモリ155との間でデータを移動させるように構成されたDMAエンジン105Bを含むことができる。いくつかの実施形態では、DMAエンジン105Bは2つのチャネルを有する。一方のチャネルは演算記述子のフェッチに専用であり、他方のチャネルはM2M演算に専用である。DMA記述子はM2M記述子に埋め込まれることができる。この文脈における記述子は、上記の演算記述子と混同されないように、メモリの内容を移動させるために使用されるDMA記述子である。
【0040】
ローカルSRAMメモリ150をオフロードし、入力データ及び重みデータのためのより多くの空間を提供するために、活性化出力は、任意選択でDDRメモリ155に直接ストリーミングできる。データをDDRメモリ155にストリーミングする場合、DNNプロセッサ112は、広帯域幅ファブリック120上のバーストトランザクションのために十分なデータを蓄積し、ニューラル処理要素105Fに対するバックプレッシャーを最小化するために十分なトランザクションをバッファする。DNNプロセッサ112の動作に関する更なる詳細は、以下に提供される。
【0041】
DNNプロセッサ112の動作に関する更なる詳細は、以下に提供される。特に、ニューラル処理要素105Fの構成及び動作に関する詳細は、
図2及び
図3に関して以下に提供される。
【0042】
図2は、高精度計算のために構成されたニューラル処理要素105Fの構成及び動作の態様を示すコンピューティングアーキテクチャ図である。簡単に上記に説明したように、ここに開示のニューラル処理要素105Fのアーキテクチャは、特定のタイプのDNN層によって生成されたオペランドを処理する場合に、より高い精度の計算を可能にする。
【0043】
簡単に上記に説明したように、ニューラル処理要素105Fは、入力としてオペランド202A及び202B(「オペランド202」と呼ばれてもよい)をとる。オペランド202は、Nビットの符号付き又は符号なし2進数とすることができ、ここで、Nは2のべき乗である。例えば、ある特定の実装では、オペランド202は、符号付き又は符号なしの8ビット2進数である。他の実装では、オペランド202は、異なるビット数を使用して表現できる。
【0044】
また、簡単に上記に説明したように、オペランド202がDNNのReLU層によって生成される場合のような特定の状況では、ニューラル処理要素105Fは、オペランド202をNビットからN+1ビットに拡張できる。典型的には、ReLU層によって出力された符号付きNビット値は、符号のために1ビットが確保されるので、N-1ビットのみを使用する(8ビットが使用される場合、-127から+128の値を表す)。しかし、開示の技術を使用すると、ニューラル処理要素105Fは、その内部計算において、ReLU層によって生成されたオペランド202の全てのNビットを利用できる(8ビットが使用される場合、0~255の値を表す)。
【0045】
以下に説明する方式でオペランドがNビットからN+1ビットに拡張されると、ニューラル処理要素105Fは、拡張されたオペランドのN+1ビットに対して動作でき、それによって、ニューラル処理要素105FがNビットのみを使用してその内部計算を実行するアーキテクチャと比較して、高精度を提供する。ここに具体的に記載されていない他の技術的利点も、開示の対象物の実施を通じて実現できる。
【0046】
ここに開示の機能を提供するために、DNNプロセッサ112のニューラル処理要素105Fは、とりわけ、ハードウェアANDゲート206A及び206Bを含む。ハードウェアANDゲート206Aは、バイナリ信号208A(ここでは「符号拡張信号208A」と呼ばれてもよい)とオペランド202AのMSBとの間で論理AND演算を実行するように構成される。ハードウェアANDゲート206Bは、バイナリ信号208B(ここでは「符号拡張信号208B」と呼ばれてもよい)とオペランド202BのMSBとの間で論理AND演算を実行するように構成される。いくつかの構成では、符号拡張信号208は1ビット2進数である。
【0047】
図2に示す例では、オペランド202A及び202Bは、8ビット2進数である。したがって、ハードウェアANDゲート206Aは、符号拡張信号208Aとオペランド202Aのビット7との間の論理AND演算を実行するように構成される。同様に、ハードウェアANDゲート206Bは、符号拡張信号208Bとオペランド202Bのビット7との間の論理AND演算を実行するように構成される。
【0048】
簡単に上記に説明したように、符号拡張信号208の状態は、DNNプロセッサ112によって前に処理されたDNNの層のタイプに基づいて設定できる。特に、符号拡張信号208Aは、オペランド202AがDNNのReLU層によって生成される場合のように、オペランド202Aが符号なしである場合、論理FALSEに設定できる。同様に、符号拡張信号208Bは、DNNのReLU層によって生成される場合のように、オペランド202Bが符号なしである場合、論理FALSEに設定できる。ニューラル処理要素105Fはまた、オペランド202が正の値のみをとることができるDNN層によって生成される場合、符号拡張信号208を論理FALSEに設定してもよい。
【0049】
一般的に、符号拡張信号208は、DNNの直前に処理された層に適用された活性化関数のタイプ(すなわち、非線形性)に基づいて設定できる。DNNの前の層に適用された非線形性を識別する情報は、符号拡張信号208を設定するために、現在の層の処理中に提供される。いくつかの構成では、ユーザは、符号拡張信号208が論理TRUE又は論理FALSEであるべき特定の活性化関数を指定できる。
【0050】
符号拡張信号208がTRUEである場合、ニューラル処理要素105Fは符号拡張演算を実行する。これは、DNNの前の層が符号付き出力を生成するTanh(「双曲線正接」)層である場合に生じる可能性がある。
【0051】
符号拡張演算を実行するために、ニューラル処理要素はまた、連結回路204A及び204B(ここでは「連結器204A又は204B」と呼ばれてもよい)を含む。連結器204A及び204Bは、2つのバイナリ値を連結するように構成された回路である。
【0052】
連結器204Aは、ハードウェアANDゲート206Aの1ビット出力とオペランド202Aとを連結し、それによって、オペランドをNビット値からN+1ビット値に拡張する。同様に、連結器204Bは、ハードウェアANDゲート206Bの1ビット出力とオペランド202Bとを連結し、それによって、オペランドをNビット値からN+1ビット値に拡張する。オペランド202が8ビット2進数である構成では、例えば、
図2に示すように、連結器204の出力は9ビットの符号付き2進数である。
【0053】
連結器204A及び204Bの符号付き出力210A及び符号付き出力210Bは、それぞれハードウェアバイナリ乗算器212に伝達される。ハードウェアバイナリ乗算器212は、2つの2進数、この場合には出力210A及び210Bを乗算するように構成された回路である。
図2に示す例では、出力210は9ビットの符号付き2進数であり、ハードウェアバイナリ乗算器212の出力214は18ビットの符号付き2進数である。乗算器212の出力214は、更なる処理のために、ニューラル処理要素105F内の他のコンポーネントに提供できる。
【0054】
図3Aは、開示の技術を使用して構成されたニューラル処理要素105Fの動作の例示的な例を示すデータ図である。この例では、オペランド202Aは、DNNのReLU層によって出力されたもののような、8ビット符号なし2進数である。この例では、オペランドが符号なしであるので、符号拡張信号208Aは論理FALSE(すなわち、例示の例では0)に設定される。したがって、ANDゲート206Aの出力210Aは、オペランド202Aのビット7の値にかかわらず0である。
【0055】
上記のように、ANDゲート206Aの出力(すなわち、0)は、オペレータ202Aと連結される(すなわち、前に付加される)。例示の例では、例えば、ANDゲート206Aの出力210Aは、オペランド202Aと連結され、それによって、8ビットオペランド202Aを9ビット符号付き2進数に変換する。このように、オペランド204Aのビット0からビット7は、2進数(例えば、0~255の値を有する正の数)を表すために使用できる。9ビット符号付き出力210Aは乗算器212に提供される。
【0056】
図3Bは、開示の技術を使用して構成されたニューラル処理要素105Fの動作の他の例示的な例を示すデータ図である。
図3Bに示すオペランド202Aは、
図3Aに示す上記の例に示すオペランドと同じである。しかし、この例では、符号拡張信号208Aは論理TRUE(すなわち、例示的な例では1)に設定される。したがって、ANDゲート206Aの出力210Aは、オペランド202Aのビット7(すなわち、MSB)が1である場合に1であり、オペランド202Aのビット7(すなわち、MSB)が0である場合に0である。
【0057】
上記のように、ANDゲート206Aの出力は、オペランド202Aと連結される(すなわち、前に付加される)。例示の例では、例えば、オペランド202Aに第8ビットが追加される。オペランド202Aのビット7の値が1である場合、第8ビットの値は1に設定される(出力210A'として
図3Bに示される)。演算202Aのビット7の値が0である場合、第8ビットの値は0に設定される(
図3Bに210A''として示される)。このように、符号ビットの値は、正又は負となり得る符号付きオペランド202に対して保持できる。9ビット符号付き出力210Aは、上記の方式で使用するために乗算器212に提供される。
図3A及び
図3Bは、8ビットオペランドに関して図示されているが、同じ演算が、他のビット数を有するオペランドにも適用可能であることが認識されるべきである。
【0058】
図4は、ここに開示の一実施形態に従って、
図1~
図3Bを参照して上記に説明した高精度向けに構成されたニューラル処理要素105Fの動作の態様を示すルーチン400を示すフロー図である。
図4及び他の図面に関してここに説明する論理演算は、(1)コンピュータで実施される動作のシーケンス又はコンピューティングデバイス上で実行するプログラムモジュールとして、及び/又は(2)コンピューティングデバイス内の相互接続された機械論理回路又は回路モジュールとして、実装できることが認識されるべきである。
【0059】
ここに開示の技術の特定の実装は、コンピューティングデバイスの性能及び他の要件に依存する選択事項である。したがって、ここに記載の論理演算は、状態、演算、構造デバイス、動作又はモジュールとして様々に言及される。これらの状態、演算、構造デバイス、動作及びモジュールは、ハードウェア、ソフトウェア、ファームウェア、特殊目的のデジタルロジック及びこれらのいずれかの組み合わせで実現できる。図面に示してここに記載のものよりも多くの動作又は少ない動作が実行されてもよいことが認識されるべきである。これらの動作は、ここに記載のものと異なる順序で実行できる。
【0060】
ルーチン400は、動作402で始まり、符号付き又は符号なしバイナリオペランド202が受信される。上記のように、オペランド202は、1つの特定の実装では8ビットであるが、他の構成では他のビット数を使用して表現されてもよい。
【0061】
ルーチン400は動作402から動作404に進み、ANDゲート206はオペランド202のMSB及び符号拡張信号208に対して論理AND演算を実行する。上記のように、一実施形態では、符号拡張信号208は、単一ビット信号である。符号拡張信号208は、符号拡張演算が動作402において受信されたオペランド202に対して実行されるか否かを示す。
【0062】
ルーチン400は動作404から動作406に進み、新たなMSBがNビットオペランド202に追加され、N+1ビット符号付きバイナリ値210を作成する。次いで、ルーチン400は動作408に進み、動作404において実行された論理AND演算の結果は、N+1ビット符号付きの値210の新たなMSBに格納される。上記のように、いくつかの実施態様において、これらの動作は連結して実行される。
【0063】
ルーチン400は動作408から動作410に進み、連結器204は9ビット符号付きの値を乗算器212に伝達する。次いで、ルーチン400は動作402に戻り、更なるオペランド202が上記の方式で処理できる。
【0064】
図5は、ここに示すDNNプロセッサ112のアプリケーションホストとして機能できるコンピューティングデバイスのための例示的なコンピュータハードウェア及びソフトウェアアーキテクチャを示すコンピュータアーキテクチャ図である。特に、
図5に示すアーキテクチャは、サーバコンピュータ、携帯電話、電子リーダ、スマートフォン、デスクトップコンピュータ、AR/VRデバイス、タブレットコンピュータ、ラップトップコンピュータ、又はDNNプロセッサ112での使用に適した他のタイプのコンピューティングデバイスを実装するために利用できる。
【0065】
図5に示すコンピュータ500は、中央処理装置502(「CPU」)と、ランダムアクセスメモリ(「RAM」)506及び読み取り専用メモリ(「RO<」)508を含むシステムメモリ504と、メモリ504をCPU502に結合するシステムバス510とを含む。起動中のようなコンピュータ500内の要素の間で情報を転送するのを支援する基本ルーチンを含む基本入出力システム(「BIOS」又は「ファームウェア」)がROM508に記憶できる。コンピュータ500は、オペレーティングシステム522、アプリケーションプログラム及び他のタイプのプログラムを記憶するための大容量記憶デバイス512を更に含む。大容量記憶デバイス512はまた、他のタイプのプログラム及びデータを記憶するように構成できる。
【0066】
大容量記憶デバイス512は、バス510に接続された大容量記憶コントローラ(図示せず)を通じてCPU502に接続される。大容量記憶デバイス512及びその関連するコンピュータ読み取り可能媒体は、コンピュータ500のための不揮発性ストレージを提供する。ここに含まれるコンピュータ読み取り可能媒体の説明は、ハードディスク、CD-ROMドライブ、DVD-ROMドライブ又はUSB記憶キーのような大容量記憶デバイスを示すが、コンピュータ読み取り可能媒体は、コンピュータ500によってアクセスできるいずれかの利用可能なコンピュータ記憶媒体又は通信媒体とすることができることは、当業者によって認識されるべきである。
【0067】
通信媒体は、コンピュータ読み取り可能命令、データ構造、プログラムモジュール、又は搬送波若しくは他の転送機構のような変調データ信号内の他のデータを含み、いずれかの配信媒体を含む。「変調データ信号」という用語は、信号内の情報を符号化するような方式で、その特性の1つ以上を変化又は設定させる信号を意味する。限定ではなく一例として、通信媒体は、有線ネットワーク又は直接有線接続のような有線媒体と、音響、無線周波数、赤外線及び他の無線媒体のような無線媒体とを含む。上記のいずれかの組み合わせも、コンピュータ読み取り可能媒体の範囲内に含まれるべきである。
【0068】
限定ではなく一例として、コンピュータ記憶媒体は、コンピュータ読み取り可能命令、データ構造、プログラムモジュール又は他のデータのような情報の記憶のためのいずれかの方法又は技術で実装される揮発性及び不揮発性、取り外し可能及び取り外し不可能媒体を含むことができる。例えば、コンピュータ記憶媒体は、RAM、ROM、EPROM、EEPROM、フラッシュメモリ若しくは他のソリッドステートメモリ技術、CD-ROM、デジタル多用途ディスク(「DVD」)、HD-DVD、BLU-RAY若しくは他の光ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ若しくは他の磁気記憶デバイス、又は所望の情報を記憶するために使用でき且つコンピュータ500によってアクセスできるいずれかの他の媒体を含むが、これらに限定されない。
【0069】
様々な構成によれば、コンピュータ500は、ネットワーク520のようなネットワークを通じてリモートコンピュータへの論理接続を使用して、ネットワーク接続環境で動作できる。コンピュータ500は、バス510に接続されたネットワークインタフェースユニット516を通じてネットワーク520に接続できる。ネットワークインタフェースユニット516はまた、他のタイプのネットワーク及びリモートコンピュータシステムに接続するために利用できることが認識されるべきである。コンピュータ500はまた、キーボード、マウス、タッチ入力、電子スタイラス(
図5に図示せず)、又はビデオカメラのような物理センサを含む、多数の他のデバイスからの入力を受信及び処理するための入出力コントローラ518を含むことができる。同様に、入出力コントローラ518は、ディスプレイスクリーン又は他のタイプの出力デバイス(
図5に図示せず)に出力を提供できる。
【0070】
ここに記載のソフトウェアコンポーネントは、CPU502にロードされて実行されると、CPU502及び全体のコンピュータ500を、汎用コンピューティングデバイスから、ここに提示される機能を実現するようにカスタマイズされた専用コンピューティングデバイスに変換できることが認識されるべきである。CPU502は、いずれかの数のトランジスタ又は他のディスクリート回路素子から構成でき、これらは、個別に或いは併せていずれかの数の状態を仮定できる。より具体的には、CPU502は、ここに開示のソフトウェアモジュール内に含まれる実行可能命令に応じて、有限状態マシンとして動作できる。これらのコンピュータ実行可能命令は、どのようにCPU502が状態の間で遷移するかを指定することによってCPU502を変換し、それによって、CPU502を構成するトランジスタ又は他の個別のハードウェア素子を変換することができる。
【0071】
ここに提示されるソフトウェアモジュールを符号化することはまた、ここに提示されるコンピュータ読み取り可能媒体の物理構造を変換できる。この説明の異なる実装において、物理構造の具体的な変換は、様々な要因に依存する。このような要因の例は、コンピュータ読み取り可能媒体を実装するために使用される技術、コンピュータ読み取り可能媒体が一次ストレージとして特徴付けられるか二次ストレージとして特徴付けられるか等を含むが、これらに限定されない。例えば、コンピュータ読み取り可能媒体が半導体ベースのメモリとして実装される場合、ここに開示されるソフトウェアは、半導体メモリの物理状態を変換することによって、コンピュータ読み取り可能媒体に符号化できる。例えば、ソフトウェアは、半導体メモリを構成するトランジスタ、コンデンサ又は他のディスクリート回路素子の状態を変換できる。ソフトウェアはまた、データを記憶するために、このようなコンポーネントの物理状態を変換できる。
【0072】
他の例として、ここに開示されるコンピュータ読み取り可能媒体は、磁気又は光技術を使用して実装できる。このような実装では、ここに提示されるソフトウェアは、ソフトウェアが符号化されるとき、磁気媒体又は光媒体の物理状態を変換できる。これらの変換は、所与の磁気媒体内の特定の位置の磁気特性を変更することを含むことができる。これらの変換はまた、所与の光媒体内の特定の位置の物理特徴又は特性を変更して、これらの位置の光学特性を変更することを含むことができる。物理媒体の他の変換は、本記載の範囲及び真意から逸脱することなく可能であり、上記の実施例は、この説明を容易にするためにのみ提供される。
【0073】
上記の観点から、ここに提示されるソフトウェアコンポーネントを記憶して実行するために、コンピュータ500内で多くのタイプの物理変換が行われることが認識されるべきである。コンピュータ500について
図5に示すアーキテクチャ、又は同様のアーキテクチャは、ハンドヘルドコンピュータ、ビデオゲームデバイス、組み込みコンピュータシステム、スマートフォン、タブレット及びAR/VRデバイスのようなモバイルデバイス、並びに当業者に既知の他のタイプのコンピューティングデバイスを含む、他のタイプのコンピューティングデバイスを実装するために利用できることも認識されるべきである。また、コンピュータ500は、
図5に示すコンポーネントの全てを含まなくてもよく、
図5に明示的に示されていない他のコンポーネントを含むこともでき、或いは、
図5に示すものとは全く異なるアーキテクチャを利用することもできる。
【0074】
図6は、ここに提示される様々な実施形態に従って、開示の技術の態様が実装できる分散ネットワークコンピューティング環境600を示すネットワーク図である。
図6に示すように、1つ以上のサーバコンピュータ600Aは、限定されるものではないが、タブレットコンピュータ600B、ゲームコンソール600C、スマートウォッチ600D、スマートフォンのような電話600E、パーソナルコンピュータ600F及びAR/VR装置600Gのような、多数のクライアントコンピューティングデバイスと、通信ネットワーク520(固定有線又若しくは無線LAN、WAN、イントラネット、エクストラネット、ピアツーピアネットワーク、仮想プライベートネットワーク、インターネット、ブルートゥース通信ネットワーク、独自仕様の低電圧通信ネットワーク若しくは他の通信ネットワークのいずれか、又はこれらの組み合わせでもよい)を介して相互接続できる。
【0075】
例えば、通信ネットワーク520がインターネットであるネットワーク環境において、サーバコンピュータ600Aは、ハイパーテキスト転送プロトコル(「HTTP(hypertext transfer protocol)」)、ファイル転送プロトコル(「FTP(file transfer protocol)」)又はシンプルオブジェクトアクセスプロトコル(「SOAP(simple object access protocol)」)のような多数の既知のプロトコルのうちいずれかを介して、クライアントコンピューティングデバイス600B~600Gとの間でデータを処理及び通信するように動作可能な専用サーバコンピュータとすることができる。さらに、ネットワーク接続コンピュータ環境600は、セキュアソケットレイヤ(「SSL(secured socket layer)」)又はプリティグッドプライバシー(「PGP(pretty good privacy)」)のような様々なデータセキュリティプロトコルを利用できる。クライアントコンピューティングデバイス600B~600Gのそれぞれは、サーバコンピュータ600Aへのアクセスを得るために、ウェブブラウザのような1つ以上のコンピューティングアプリケーション若しくは端末セッションをサポートするように動作可能なオペレーティングシステム、又は他のグラフィカルユーザインターフェース(
図6に図示せず)、又はモバイルデスクトップ環境(
図6に図示せず)を備えることができる。
【0076】
サーバコンピュータ600Aは、他のコンピューティング環境(
図6に図示せず)に通信可能に結合でき、参加ユーザの相互作用/リソースネットワークに関するデータを受信できる。例示的な動作において、ユーザ(
図6に図示せず)は、所望のデータを取得するために、及び/又は他のコンピューティングアプリケーションを実行するために、クライアントコンピューティングデバイス600B~600G上で実行するコンピューティングアプリケーションと相互作用してもよい。
【0077】
データ及び/又はコンピューティングアプリケーションは、サーバ600A又は複数のサーバ600Aに記憶され、例示的な通信ネットワーク620上でクライアントコンピューティングデバイス600B~600Gを通じて協働するユーザに通信されてもよい。参加ユーザ(
図6に図示せず)は、サーバコンピュータ600A上に全体的に或いは部分的に収容された特定のデータ及びアプリケーションへのアクセスを要求してもよい。これらのデータは、処理及び記憶のために、クライアントコンピューティングデバイス600B~600Gとサーバコンピュータ600Aとの間で通信されてもよい。
【0078】
サーバコンピュータ600Aは、データ及びアプリケーションの生成、認証、暗号化及び通信のためのコンピューティングアプリケーション、プロセス及びアプレットをホストすることができ、アプリケーション/データトランザクションを実現するために、他のサーバコンピューティング環境(
図6に図示せず)、第三者サービスプロバイダ(
図6に図示せず)、ネットワーク接続ストレージ(「NAS(network attached storage)」)及びストレージエリアネットワーク(「SAN(storage area network)」)と協働してもよい。
【0079】
図5に示すコンピューティングアーキテクチャ及び
図6に示す分散ネットワークコンピューティング環境は、説明を容易にするために簡略化されていることが認識されるべきである。また、コンピューティングアーキテクチャ及び分散コンピューティングネットワークは、より多くのコンピューティングコンポーネント、デバイス、ソフトウェアプログラム、ネットワーキングデバイス、及びここに具体的に記載されていない他のコンポーネントを含んでこれらを利用できることも認識されるべきである。
【0080】
ここに提示される開示は、以下の項目に記載される対象物も含む。
【0081】
項目1.複数のニューラル処理要素を含むディープニューラルネットワーク(DNN)プロセッサであって、前記複数のニューラル処理要素のそれぞれは、第1の符号拡張信号と第1のオペランド202Aの最上位ビット(MSB)との間で論理AND演算を実行するように構成された第1のハードウェアANDゲートと、前記第1のハードウェアANDゲートの出力と前記第1のオペランドとを連結し、第1の出力をハードウェアバイナリ乗算器に提供するように構成された第1の連結器と、第2の符号拡張信号と第2のオペランドのMSBとの間で論理AND演算を実行するように構成された第2のハードウェアANDゲートと、前記第2のハードウェアANDゲートの出力と前記第2のオペランドとを連結し、第2の出力を前記ハードウェアバイナリ乗算器に提供するように構成された第2の連結器とを含む、ディープニューラルネットワークプロセッサ。
【0082】
項目2.前記第1のオペランド及び前記第2のオペランドは、符号付き又は符号なし8ビット2進数を含む、項目1に記載のディープニューラルネットワークプロセッサ。
【0083】
項目3.前記第1の出力及び前記第2の出力は、9ビット符号付き2進数を含む、項目1又は2のいずれかに記載のディープニューラルネットワークプロセッサ。
【0084】
項目4.前記ハードウェアバイナリ乗算器の出力は、符号付き18ビット2進数を含む、項目1乃至3のいずれかに記載のディープニューラルネットワークプロセッサ。
【0085】
項目5.前記第1のオペランドの前記MSBは、8ビット符号付き又は符号なし2進数のビット7を含む、項目1乃至4のいずれかに記載のディープニューラルネットワークプロセッサ。
【0086】
項目6.前記第2オペランドの前記MSBは、8ビット符号付き又は符号なし2進数のビット7を含む、項目1乃至5のいずれかに記載のディープニューラルネットワークプロセッサ。
【0087】
項目7.前記第1の符号拡張信号又は前記第2の符号拡張信号の状態は、前記DNNプロセッサによって前に処理されたDNNの層のタイプに基づく、項目1乃至6のいずれかに記載のディープニューラルネットワークプロセッサ。
【0088】
項目8.前記DNNプロセッサによって前に処理された前記DNNの前記層は、ReLU層を含む、項目1乃至7のいずれかに記載のディープニューラルネットワークプロセッサ。
【0089】
項目9.コンピュータ実施方法であって、第1の符号拡張信号と第1のオペランドの最上位ビット(MSB)との間で論理AND演算を実行するステップと、第1のハードウェアANDゲートの出力と前記第1のオペランドとを連結するステップと、前記第1のハードウェアANDゲートの前記出力と前記第1のオペランドとの連結の結果をハードウェアバイナリ乗算器に伝達するステップとを含むコンピュータ実施方法。
【0090】
項目10.第2の符号拡張信号と第2のオペランドのMSBとの間で論理AND演算を実行するステップと、第2のハードウェアANDゲートの出力と前記第2のオペランドとを連結するステップと、前記第2のハードウェアANDゲートと前記第2のオペランドとの連結の結果を前記ハードウェアバイナリ乗算器に伝達するステップとを更に含む、項目9に記載のコンピュータ実施方法。
【0091】
項目11.前記第1のオペランド及び前記第2のオペランドは、符号付き又は符号なし8ビット2進数を含む、項目9又は10のいずれかに記載のコンピュータ実施方法。
【0092】
項目12.前記第1のハードウェアANDゲートの前記出力と前記第1のオペランドとの前記連結の前記結果、及び前記第2のハードウェアANDゲートと前記第2のオペランドとの前記連結の前記結果は、9ビット符号付き2進数を含む、項目9又は11のいずれかに記載のコンピュータ実施方法。
【0093】
項目13.前記ハードウェアバイナリ乗算器の出力は、符号付き18ビット2進数を含む、項目9乃至12のいずれかに記載のコンピュータ実施方法。
【0094】
項目14.前記第1の符号拡張信号又は前記第2の符号拡張信号の状態は、ディープニューラルネットワーク(DNN)プロセッサによって前に処理されたDNNの層のタイプに基づく、項目9乃至13のいずれかに記載のコンピュータ実施方法。
【0095】
項目15.前記DNNプロセッサによって前に処理された前記DNNの前記層は、ReLU層を含む、項目9乃至14のいずれかに記載のコンピュータ実施方法。
【0096】
項目16.複数のニューラル処理要素を含むディープニューラルネットワーク(DNN)プロセッサであって、前記ニューラル処理要素のそれぞれは、符号付きバイナリ8ビットオペランド又は符号なし8ビットオペランドを含む8ビットオペランドを受信し、前記8ビットオペランドの最上位ビット(MSB)と、符号拡張演算が前記8ビットオペランドに対して実行されるべきか否かを示すバイナリ信号とに対して論理AND演算を実行し、前記8ビットオペランドに新たなMSBを追加して9ビット符号付きバイナリ値を作成し、前記論理AND演算の結果を前記9ビット符号付きの値の前記新たなMSBに格納し、前記9ビット符号付きの値を乗算器に伝達するように構成される、DNNプロセッサ。
【0097】
項目17.前記複数のニューラル処理要素は、符号付きバイナリ8ビットオペランド又は符号なし8ビットオペランドを含む第2の8ビットオペランドを受信し、前記第2の8ビットオペランドの最上位ビット(MSB)と、符号拡張演算が前記第2の8ビットオペランドに対して実行されるべきか否かを示す第2のバイナリ信号とに対して論理AND演算を実行し、前記第2の8ビットオペランドに新たなMSBを追加して第2の9ビット符号付きバイナリ値を作成し、前記論理AND演算の結果を前記第2の9ビット符号付きの値の前記新たなMSBに格納し、前記第2の9ビット符号付きの値を前記乗算器に伝達するように更に構成される、項目16に記載のDNNプロセッサ。
【0098】
項目18.前記ハードウェアバイナリ乗算器の出力は、符号付き18ビット2進数を含む、項目16又は17のいずれかに記載のDNNプロセッサ。
【0099】
項目19.前記バイナリ信号の状態は、前記DNNプロセッサによって前に処理されたDNNの層のタイプに基づく、項目16乃至18のいずれかに記載のDNNプロセッサ。
【0100】
項目20.符号拡張演算が前記8ビットオペランドに対して実行されるべきか否かを示す前記バイナリ信号は、前記DNNプロセッサによって前に処理されたDNNの層において適用される非線形性に基づいて設定される、項目16乃至19のいずれかに記載のDNNプロセッサ。
【0101】
上記に基づいて、高精度を提供できるニューラル処理要素がここに開示されることが認識されるべきである。ここに提示される対象物は、コンピュータ構造の特徴、方法論的及び変換的動作、特定のコンピューティング機、及びコンピュータ読み取り可能媒体に特有の言語で記載されているが、添付の請求項に記載の対象物は、必ずしもここに記載された特定の特徴、動作又は媒体に限定されないことが理解されるべきである。むしろ、特定の特徴、動作及び媒体は、特許請求の範囲の対象物を実施するための例示の形式として開示される。
【0102】
上述の対象物は、例示としてのみ提供されており、限定として解釈されるべきではない。図示及び記載の例示的な構成及び用途に従うことなく、また、以下の特許請求の範囲に記載の本開示の範囲から逸脱することなく、ここに記載される対象物に対して様々な修正及び変更が行われることができる。