JP2013529342A - ニューラル処理ユニット - Google Patents

ニューラル処理ユニット Download PDF

Info

Publication number
JP2013529342A
JP2013529342A JP2013511155A JP2013511155A JP2013529342A JP 2013529342 A JP2013529342 A JP 2013529342A JP 2013511155 A JP2013511155 A JP 2013511155A JP 2013511155 A JP2013511155 A JP 2013511155A JP 2013529342 A JP2013529342 A JP 2013529342A
Authority
JP
Japan
Prior art keywords
memory
value
context information
neuron
processor
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2013511155A
Other languages
English (en)
Other versions
JP2013529342A5 (ja
Inventor
ダグラス・エイ・パーマー
マイケル・フロレア
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
University of California
Original Assignee
University of California
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by University of California filed Critical University of California
Publication of JP2013529342A publication Critical patent/JP2013529342A/ja
Publication of JP2013529342A5 publication Critical patent/JP2013529342A5/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons

Abstract

ここで開示された主題は、ニューラルベースの処理のための製造の方法、装置及び物を提供する。1つの態様では方法が提供される。当該方法は、少なくとも1つの結合値に基づいて格納されたコンテキスト情報を第1のメモリから読み出すステップと、少なくとも1つの結合値をマッチングさせる動作値を第2のメモリから読み出すステップと、第1のプロセッサによって、コンテキスト情報及び動作値を複数のマイクロエンジンの少なくとも1つに対して送信して少なくとも1つのマイクロエンジンをニューロンとして構成するステップと、少なくとも1つのマイクロエンジンにおいて、ニューロンの出力を示す値を発生するステップとを含んでもよい。関連した装置、システム、方法及び物がまた説明される。

Description

ここで説明された主題は、データ処理に関し、特にニューラルベースの処理に関する。
関連出願の相互参照
この出願は、2010年5月19日出願の発明の名称“ニューラル処理ユニット”を有する米国仮出願第61/346,441号の利益を主張し、それがその全体において参照によりここで組み込まれる。
ニューラルベースのデータ処理は、ニューロン、樹状突起、及び/もしくは軸索の挙動を定義する種々のニューラルモデルに基づいて実装されてもよい。いくつかの例では、ニューラルベースのデータ処理は、非常に多数の並列ニューロン及びそれらのニューロン間の結合を用いて実装されてもよい。ニューラルベースの処理のこの並列性は、例えばデータ処理、信号処理、予測、分類などのタスクを処理するのに十分に適している。
ここで開示された主題は、ニューラル処理のための製造の方法、装置、及び物を提供する。
一態様では、方法が提供される。当該方法は、第1のメモリから、少なくとも1つの結合値に基づいて格納されたコンテキスト情報を読み出すステップと、第2のメモリから、少なくとも1つの結合値とマッチングさせる動作値を読み出すステップと、第1のプロセッサによって、コンテキスト情報及び動作値を、複数のマイクロエンジンの少なくとも1つに送信して上記少なくとも1つのマイクロエンジンをニューロンとして構成するステップと、上記少なくとも1つのマイクロエンジンにおいて、ニューロンの出力を示す値を発生するステップとを含んでもよい。
方法の実施態様は、1つもしくはそれ以上の以下の特徴を含む、ここで説明された1つもしくはそれ以上の特徴を含む。第1のメモリから読み出すステップは、複数のマイクロエンジンで実装されたニューロンのための結合値に基づいて、メモリ内に順次格納されたコンテキスト情報を含むデータ構造を読み出すステップをさらに含んでもよい。データ構造は、複数のブロックを含んでもよく、複数のブロックのそれぞれは、ニューロンにおける実行を定義するタイプと、少なくとも1つの結合値を含むコンテキスト情報が格納された第1のメモリでのロケーションを示す第1のアドレスと、動作値が格納された第2のメモリでのロケーションを示す第2のアドレスとを含む。データ構造は、複数のシーケンシャルブロックを含んでもよく、複数のシーケンシャルブロックのそれぞれは、結合値と、複数のマイクロエンジンの1つで実装された、対応するニューロンを定義するニューロンタイプとを含む。シーケンシャルブロックは、複数のマイクロエンジンの少なくとも1つに対して、パケットとして送信されてもよく、複数のマイクロエンジンのそれぞれは、少なくとも1つのプロセッサと少なくとも1つのメモリとを含んでもよい。データ構造は、複数のシーケンシャルブロックを含んでもよく、シーケンシャルブロックのそれぞれは、ニューロンタイプと、対応するニューロンに対する複数の結合値とを含む。第1のプロセッサは、第1のメモリからの読み出しを可能とするために、第1のメモリに対して結合されてもよい。その値は、追加的なコンテキスト情報を取得するために、第1のメモリ及び第2のメモリにアクセスすることなしにコンテキスト情報及び動作値に基づいて、少なくとも1つのマイクロエンジンにおいて発生されてもよい。第1のメモリ及び第2のメモリは、集積回路の同一のメモリ内に実装されてもよい。発生された値は、少なくとも第2のメモリに送信されてもよい。
1つもしくはそれ以上の(例えば、コンピュータなどの)機械がここで説明された動作が得られるように動作可能な、タンジブルに具現化された機械可読媒体を備えた物がまた説明される。同様に、プロセッサと、当該プロセッサに結合されたメモリを含むシステムがまた説明される。メモリは、プロセッサにここで説明された1つもしくはそれ以上の動作を実行させる1つもしくはそれ以上のプログラムを含んでもよい。
ここで説明された主題に対する1つもしくはそれ以上の変形例の詳細が、添付図面及び以下の説明文において説明される。ここで説明された主題の特徴及び利点は、説明文、図面及び特許請求の範囲から明らかとなろう。
ニューロンのブロック図を図示する。 ニューラル処理ユニット(NPU)のブロック図を図示する。 コンテキスト情報を順次格納するためのデータ構造の例を図示する。 コンテキスト情報を順次格納するためのデータ構造の例を図示する。 コンテキスト情報に基づいてニューロンを構成するためのプロセスを図示する。 ニューラル処理ユニットのもう1つのブロック図を図示する。 複数のニューラル処理ユニットを含むシステムのブロック図を図示する。 ニューロンを構成するためのもう1つのプロセスを図示する。 コンテキスト情報に基づいてニューロンを実装するように構成されたマイクロエンジンの例を図示する。 複数のニューラル処理ユニットを含むシステムのブロック図を図示する。
同様の表示(ラベル)は、同一の素子もしくは同様の素子に参照される。
ここで説明された主題は、コンテキスト情報を含む少なくとも1つのパケットによって構成されたニューラル処理ユニット(NPU)に関する。ここで使用されるように、コンテキスト情報は、ニューラル処理ユニットとしてプロセッサを構成するための情報に言及する。さらに、コンテキスト情報の全部ではないがいくつかは、結合値に基づいて、メモリ内に順次格納されてニューラル処理ユニットによる処理を容易化してもよい。
ニューラル処理ユニットの詳細を説明する前に、ニューラル処理ユニットを使用して実装されたニューロンによって実行された処理に関する説明が以下に提供される。
図1は、ニューラル処理ユニットによって実装されてもよいニューロンA150を含むシステム100を図示する。図1は単一のニューロン150を図示するが、システム100は、複数のニューロンもまた含んでもよい。
ニューロン150は、(A−Aに対応する)動作値A(t−1)160A−Iに基づいた出力A(t)170と、(C0jからC8jまでと表示された)結合Wij165A−Iと、(S−Sと表示された)入力値110A−Iとを発生してもよい。入力値110A−Iは、他のニューロンの出力から、メモリから、及び/又は例えば電圧値などの値を提供する1つもしくはそれ以上のセンサから受信されてもよい。1つもしくは複数の動作値はホストコンピュータによってもまた提供されてもよいが、動作値A(t−1)は、メモリから受信されてもよく、例えば、システム100の(例えば(t−1)におけるなどの)前のサイクルもしくはエポックの前の動作値などの出力に対応してもよい。(重み、結合重み、及び結合値としてまた言及された)結合Wij165A−Iは、メモリから受信されてもよく、及び/もしくはホストコンピュータによって提供されてもよい。
例の目的で例示するために、所定の時間tにおいて、動作値160A−Iの各1つは、対応する結合165A−Iの1つによって乗算される。例えば、結合重みC0j165Aは、動作値A160Aによって乗算され、結合重みC1j165Bは動作値A160Bによって乗算される、など。次に、積(すなわち、結合と動作値との乗算の積)は合計され、その結果生じた合計は、基底関数Kによって演算されてノードA150に対して時間tにおける出力A(t)170を得る。出力170は、(例えば(t+1)などにおける)後に続く時間では動作値として使用されてもよい。
システム100は、例えばニューロン150などの複数のニューロンを含んでもよく、各ニューロンは、ここで説明されたニューラル処理ユニット上に実装されてもよい。さらに、ニューロンはあるニューラルモデルに従って構成されてもよく、その例は次式の通りである。
Figure 2013529342
ここで、Kは(例えばシグモイド関数、ウェーブレット関数及び任意の他の基底関数などを含む)基底関数に対応する。
(t)は、所定の時間tにおける、(例えばj番目のニューロンなどの)所定のニューロンによって提供された出力値に対応する。
(t−1)は、前の時間(t−1)における、j番目のニューロンに対する結合iに割り当てられた前の出力値(もしくは動作値)に対応する。
ijは、j番目のニューロンに対するi番目の結合値を示す。jはニューロンの量に従って変化し、所定のニューロンを識別し、iは0からn―1まで変化し、nはニューロンに対する結合数に対応する。
ここでの説明は、ニューラルモデルの例として(式1)に言及するが、他のモデルがまた使用されてニューロンのタイプを定義してもよい。さらに、いくつかの実施例では、各結合は、複数のニューロンタイプのうちの1つに関連付けされてもよい。例えば、結合Wij165A−Cは、第1のニューロンのタイプに対応する第1のニューラルモデルを実装してもよく、結合Wij165D−Eは、第2のニューロンのタイプに対応する第2のニューラルモデルを実装してもよい。この例では、コンテキスト情報は、結合値及びニューロンのタイプを示す情報を含むであろう。
図2は、例えば図1に関して上述説明されたニューロン150などのニューロンとして動作するように構成されたニューラル処理ユニット200の例示的な実施例を図示する。ニューラル処理ユニット200は、例えばシーケンシャルメモリ205などの第1のメモリと、プロセッサ210と、例えば(SRAMと表示された)スタティックランダムアクセスメモリ215などの第2のメモリと、例えばニューロンを実装するように構成された1つもしくはそれ以上のマイクロエンジン220A−Eなどの1つもしくはそれ以上のプロセッサとを含む。
図2は、単一のニューラル処理ユニット200を図示するが、いくつかの実施例では、システムは複数のニューラル処理ユニットを含んでもよい。例えば、複数のニューラル処理ユニットは、集積回路上及び/もしくは特定用途向け集積回路上に実装されてニューラル処理システムを提供してもよい。
シーケンシャルメモリ205は、例えばランダムアクセスメモリ、ダイナミックランダムアクセスメモリ、ダブルデータレート同期式ダイナミックアクセスメモリ、フラッシュメモリ、強誘電体ランダムアクセスメモリ、機械的な磁気ディスクドライブ、光ドライブなどの任意のタイプのメモリとして実装されてもよい。シーケンシャルメモリ205は、ニューロンとして、例えばマイクロエンジン220Aなどのマイクロエンジンを構成するために必要とされる情報のすべてではないがいくつかを備えたコンテキスト情報を含んでもよい。例えば、シーケンシャルメモリ205は、以下のうちの1つもしくはそれ以上を含むデータ構造を含んでもよい。すなわち、(例えば、j個のニューロンのうちのどのニューロンが構成されたかなどの)ニューロンのアイデンティティ(同一性)、各結合iのための結合値Wij、使用される基底関数Kの指示、及び/もしくは前の動作値A(t−1)。
いくつかの実施例では、コンテキスト情報は、パケットフォーマットでシーケンシャルメモリ205から取得される。用語「パケット」は、コンテキスト情報及び/もしくはコンテキスト情報に対するポインタを含むコンテナに言及される。パケットは、結合値及び(例えばニューロンのタイプを構成するための命令、基底関数Kの指示、j番目のニューロンのアイデンティティなどの)他の情報を提供するが、前の動作値A(t−1)は、例えばスタティックランダムアクセスメモリ215などのもう1つのメモリから取得される。シーケンシャルメモリ205から読み出されたパケットは、図3A−Bに関して以下に説明されたデータ構造として構成されたコンテキスト情報を含んでもよい。いくつかの実施例では、シーケンシャルメモリ205はまた、ホストコンピュータからコンテキスト情報を受信してもよい。
プロセッサ210には、他のタイプのプロセッサがまた使用されてもよいが、例えば超長命令語(VLIW)をハンドリングするように構成された中央処理ユニットなどの任意のタイプのプロセッサとして実装されてもよい。プロセッサ210は、シーケンシャルメモリ205から、(1つもしくはそれ以上のパケットとしてフォーマットされた)コンテキスト情報を格納してもよいし、及び/又は検索してもよい。
(クラスタとしてもまた言及された)1つもしくはそれ以上の追加的なニューラル処理ユニットは、プロセッサ210からコンテキスト情報を受信してもよいし、及び/又は結合230を介してコンテキスト情報をプロセッサ210に提供してもよい。プロセッサ210はまた、例えばスタティックランダムアクセスメモリ215から、前の動作値A(t−1)などの中間値を検索してもよい。
プロセッサ210は、メモリ205から取得されたコンテキスト情報及び(例えばスタティックランダムアクセスメモリ215から取得された前の動作値A(t−1)などの)任意の中間値を含むパケットをマイクロエンジンに対してルーティングしてニューロンとしてマイクロエンジンを構成してもよい。
いくつかの実施例では、メモリ205内のコンテキスト情報は、図3A−Bに関して以下にさらに説明されるように、シーケンシャルブロック内に編成される。メモリ205内のコンテキスト情報は、メモリ205内のシーケンシャルブロックから読み出されてニューロンとしてマイクロエンジンを構成する。さらに、もしシステムが複数のニューロンを含むならば、プロセッサ210は、コンテキスト情報を含むパケットのセットを各マイクロエンジン220A−Eにルーティングして、例えば上記(式1)のニューラルモデルなどのモデルに従って動作するニューロンとして各マイクロエンジンを構成してもよい。さらに、マイクロエンジンの構成及び実行は、結合、ニューロン、及び/もしくはエポックそれぞれに対して時間にわたって繰り返されてもよい。
各マイクロエンジン220A−Eは、例えば中央処理ユニット、減少された命令セットのプロセッサなどのプロセッサとして実装されてもよい。減少された命令セットのプロセッサを用いた実施例では、減少された命令セットのプロセッサの機能性は制限されてもよく、それ故に、例えば集積回路などのチップ上に使用されたスペース/サイズを減少させる。任意のケースでは、ニューロンがマイクロエンジンにおいて実装されることを可能とするために、マイクロエンジン220A−Eはそれぞれ、プロセッサ210によって提供されたコンテキスト情報によって構成されてもよい。
図3Aは、例えばシーケンシャルメモリ205などのシーケンシャルメモリ内に格納されたデータ構造300の例を図示する。図3Aの例では、シーケンシャルメモリは、データ構造300の終わりまで順次読み出される及び/もしくは書き込まれるブロック310A−Bのコンテキスト情報を格納するように構成され、次に読み出し及び書き込みが、例えばブロック310Aなどのメモリの初めにおいて再び始まるであろう。ブロック310A−Bは、ニューラル処理システムの複数のニューロンのそれぞれに対応する。
例えば、j番目のニューロンなどの所定のニューロンに対して、ブロック310Aは、コンテキスト情報を格納してもよい。特に、ブロック310Aは、ニューロンのタイプ320を定義する情報を含んでもよい。そのタイプ320は、ニューロンの種類及び当該ニューロンをどのように実行すべきかを定義する。例えば、タイプ320は、(式1)により定義されるニューラルモデルを定義してもよく、もしくは、基底関数Kはj番目のニューロンによって使用される。この例では、ニューロンタイプは、マイクロエンジンがコンテキスト情報を処理し出力を発生することが可能となるようにマイクロエンジン内にロードされた、対応するコードセットを有してもよい。さらに、いくつかの実施例では、システムがコンテキスト情報において指示されたニューロンのタイプに対する対応するコードセットを有するマイクロエンジンを構成するように、複数のニューロンタイプがサポートされる。
ブロック310A内のコンテキスト情報はまた、シーケンシャルメモリ内で使用されたアドレス330を含んでブロック310Aを格納してもよい。もし例えば学習及び可塑性に対する重みを変更するなどによってブロック310Aのコンテンツが変更されるならば、アドレス330はシーケンシャルメモリに対するライトバックを可能とさせる。ブロック310A内のコンテキスト情報はまた、ブロック310Aのニューロンの所定の結合に関連付けされた動作アドレス340を含んでもよい。例えば、動作アドレス340は、スタティックランダムアクセスメモリ215から、ブロック310A内で使用される結合に対する動作値のローディングを可能としてもよい。ブロック310Aはまた、350A−Nを使用した結合値を含んでもよい。例えば、10個の結合を有する所定のニューロンjに対して、ブロック310Aは、W0jからW9jに対応する10個の結合値を含むであろう。
データ構造300は、ニューラル処理システムによって実装された各ニューロンに対して、例えばブロック310Bなどの他のブロックを含んでもよい。データ構造300の使用が、各ニューロンに対する(パケットベースのフォーマットでフォーマットされた)コンテキスト情報の順次読み出しを可能とし次にマイクロエンジンにおいてそれらのニューロンの構成及び実行を可能とさせてもよい。いくつかの実施例では、データ構造300はもし取り除かなければ減少させてもよく、非効率的なランダムメモリは、マイクロエンジンのニューロンの実行の間に、マイクロエンジンによってメモリ205及び215に対して読み出される。
図3Bは、シーケンシャルメモリ内に格納されたデータ構造305のもう1つの例を図示する。図3Bの例では、各ブロック390A−Cは、ニューロンに対して、単一の結合値を含んでもよい。特に、ニューロンの第1の結合値のセットのすべてが実行のために構成されてしまうまでなどは、ブロック390Aは、第1の結合350A及び第1のニューロンを構成するための他のコンテキスト情報320−340を含み、ブロック390Bは、第1の結合値333及び第2のニューロンを構成するための他のコンテキスト情報を含む。一旦実行されると、出力動作値は、例えばスタティックランダムアクセスメモリ215内に格納されてもよく、次にニューロンに対する次の結合のセットが処理される。ブロック390Cは、第2の結合350B及び第1のニューロンを構成するための他のコンテキスト情報を含む。一旦第2の結合値によって構成されると、ニューロンに対する第2の結合のセットが処理され、出力動作値のもう1つのセットが得られる。このプロセスは、すべての結合が処理されるまでニューロンに対する各結合に対して反復されてもよく、その時、当該プロセスはデータ構造305のブロック390Aにおける第1の結合からスタートすることを繰り返す。
いくつかの実施例では、データ構造300及び305は、プロセッサがニューラルモデルを実行し、そのモデルを実行するために必要とされるデータを検索するときのメモリアクセスの量を減少させてもよい。例えば、ここで説明されたデータ構造に従って構成されない典型的なマイクロプロセッサにおいては、当該マイクロプロセッサは、例えば0からnまでの、1からiまでの、及び1からjまでのインデキシングによって、(式1)のニューラルモデルを実行するために、メモリからデータの広範囲に及ぶランダムなフェッチを必要とするであろう。対照的に、ここで説明されたマイクロエンジンは、いくつかの実施例では、例のデータ構造300及び305において図示されたメモリ内のコンテキスト情報を順次に順序付けすることによって、メモリからランダムなフェッチをもし取り除かなければ減少させてもよい。さらに、システム200のランダムなフェッチは、いくつかの実施例では、スタティックランダムアクセスメモリ215から動作値を検索するプロセッサ205に制限されてもよい。いくつかの実施例では、例えばプロセッサ210などの第1のプロセッサは、上述されたインデキシングと関連付けされたメモリ205及び215からすべてのメモリフェッチをハンドリングし、例えばマイクロエンジンなどの第2のプロセッサは、メモリ205及び215にアクセスすることなしにニューロンを実装する。さらに、マイクロエンジンは、(図5に関して以下にさらに説明された)そのレジスタメモリからアクセスされたデータを用いてニューロンを動作させるように構成されてもよい。さらに、第1のプロセッサ及び第2のプロセッサを含むシステムは、いくつかの実施例では、特に、例えば(式1)などの例えばニューラルモデルと関連するスパース行列のコンテキストにおいて効率的な処理を容易化してもよい。
図4は、ここで説明されたニューラル処理システムによって実装されるプロセス400を図示する。図4の説明はまた、図2及び図3A−Bを参照してなされる。
492では、プロセッサ210は、メモリ205から順次読み出されてもよい。この順次読み出しには、コンテキスト情報を含む複数のパケットの少なくとも1つを、メモリ205内の連続的なアドレスのブロックから読み出すことを含んでもよい。例えば、データは、図3A−Bに関して説明されたようにブロックにおいて順次読み出されてもよい。コンテキスト情報は、例えば(式1)などのニューラルモデルに従ってニューロンとしてマイクロエンジンを構成するための情報を含んでもよい。例えば、シーケンシャルメモリ205から受信されたパケットは、結合値及び(例えば、ニューロンタイプを指示する命令、動作値などの)他の情報を提供してニューロンを構成してもよい。
493では、プロセッサ210はまた、スタティックランダムアクセスメモリ215から前の動作値A(t−1)を読み出してもよい。図3A−Bを参照すると、プロセッサ210は、結合値350A、ニューロンタイプ320、シーケンシャルメモリ内のアドレス330、及びスタティックランダムアクセスメモリ215内のアドレス340を含むパケットを受信してもよい。次に、プロセッサ210は、スタティックランダムアクセスメモリ215をロケーションするためにアドレス340を使用してもよく、その場合は結合値350Aに対応する動作値を決定するためのルックアップテーブルを使用してもよい。
494では、プロセッサ210は、コンテキスト情報及び動作値をマイクロエンジンに対して転送してマイクロエンジンを構成してもよい。例えば、プロセッサ210は、(例えば、結合値350A、ニューロンタイプ320などの)コンテキスト情報と、スタティックランダムアクセスメモリ215から取得された動作値を含む少なくとも1つのパケットとを、マイクロエンジン220Aに転送してもよい。マイクロエンジンは少なくとも1つのパケットを受信するとき、マイクロエンジン220Aは、(例えば、ニューロンタイプ320によって指示されたニューロンタイプに対するコードセット/命令をロードすることなどによって、)ニューロンタイプに基づいてそれ自身を構成し、次に結合値350A、動作値、及びマイクロエンジンに提供されてもよい他のコンテキスト情報を用いてニューロンを実行してもよい。
496では、構成された少なくとも1つのマイクロエンジンは、所定の時間tの間に、例えばA(t)などの出力を発生する。その出力A(t)はまた、出力A(t)をスタティックランダムアクセスメモリ215もしくは他のニューラル処理ユニット230に対してルーティングしてもよいプロセッサ210に提供されてもよい。当該プロセッサ290は、システムの、結合、ニューロン、及び/もしくはエポックのそれぞれに対して反復されてもよい。
図5は、ニューラル処理ユニット500のもう1つの例示的な実施例を図示する。ニューラル処理ユニット500は、いくつかの点ではシステム200に類似するが、メモリインターフェース505と、アプリケーションインターフェース510と、ディスパッチャ520とをさらに含む。メモリインターフェース505は、シーケンシャルメモリ205及びプロセッサ210に結合され、アプリケーションインターフェース510は、プロセッサ210及び、マイクロエンジン220A−Eにさらに結合されたディスパッチャ520に結合される。
メモリインターフェース505は、シーケンシャルメモリ205に対するアクセスを制御する。例えば、メモリインターフェース505は、メモリ205内に順次索引付けしてプロセッサ210に送信されたコンテキスト情報の次のパケットを検索してもよい。
プロセッサ210はさらにルータとして構成されてもよい。プロセッサ210は、シーケンシャルメモリ205及び/もしくはメモリ215から、パケットフォームでコンテキスト情報を受信する場合、その場合には、プロセッサ210は、パケットベースのコンテキスト情報をマイクロエンジンにルーティングしてニューロンとしてマイクロエンジンを構成してもよい。ニューロンが実行された後、パケットプロセッサ210はまた、マイクロエンジンによって発生された出力値A(t)を受信してもよい。次に、受信された出力値A(t)は、結合565A−Dを介して他のニューラル処理ユニットに提供されてもよく、及び/もしくは例えばスタティックランダムアクセスメモリ215などのメモリ内に格納されてもよい。
システム500を構成するためのホストコンピュータからのデータの初期ロードの間、プロセッサ210は、ホストコンピュータからデータのブロックを、例えばシーケンシャルメモリ205内のシーケンシャルロケーション並びに例えばスタティックランダムアクセスメモリ215、結合565A−Dを介して他の隣接したニューラル処理ユニット、及び/もしくは1つもしくはそれ以上のマイクロエンジン220A−Eなどの他のロケーションに移動させてもよい。
マイクロエンジンにおけるニューロンの実行の間、プロセッサ210は、結合重みを動作値とマッチングさせてもよい。例えば、プロセッサ210は、シーケンシャルメモリ205から、j番目のニューロンのi番目の結合に対する結合重みWijを含むパケットを受信してもよい。次に、i番目の結合に対して、プロセッサ210は、結合重みWijを、スタティックランダムアクセスメモリ215内に格納された、前の動作値A(t−1)とマッチングさせてもよい。いくつかの実施例では、ルックアップテーブルが、結合重みWijのそれぞれをスタティックランダムアクセスメモリ215内に格納された、対応する動作値A(t−1)とマッチングさせるために使用される。
アプリケーションインターフェース510は、各マイクロエンジン220A−Eに対してインターフェースを提供する。いくつかの実施例では、アプリケーションインターフェース510は、スタティックランダムアクセスメモリ215から、受信されたパケット内に含まれた結合値をマッチングさせる動作値をフェッチしてもよい。マッチング動作値のアドレスは、プロセッサ210から受信されたパケット内に含まれてもよい。例えば、マッチング動作アドレスのアドレスは、ニューロンスタティックランダムアクセスメモリ動作アドレス340としてパケット内に格納されてもよい。その場合は、(例えばニューロンタイプ、結合値、動作値などの)コンテキスト情報を含むパケットは、マイクロエンジンに転送される。
ディスパッチャ520は、アプリケーションインターフェース510及びマイクロエンジン220A−E間で交換されたパケットに対してハンドリングしてキューイングするパケットを提供する。いくつかの実施例では、ディスパッチャ520は、コンテキスト情報を含むパケットに対して、宛先マイクロエンジンを選択する。ディスパッチャ520はまた、コンテキスト情報を有したマイクロエンジンのレジスタを含むマイクロエンジンをロードしてもよく、マイクロエンジン220A−Eからの出力データを、他のニューラル処理ユニット、スタティックランダムアクセスメモリ215、及び/もしくはシーケンシャルメモリ205に送信してもよい。
ニューラル処理ユニット500は、(ノース、イースト、ウエスト及びサウスと表示された)結合565A−Dを介して、他のニューラル処理ユニットに接続されてもよい。例えば、ニューラル処理ユニット500は、(例えばユニット500のニューラル処理ユニットノース、ユニット500のニューラル処理ユニットサウス、ユニット500のニューラル処理ユニットイースト及びユニット500のニューラル処理ユニットウエストなどの)4つの他のニューラル処理ユニットに対する結合565A−Dを有してもよい。さらに、他のニューラル処理ユニットのそれぞれは、4つの他のニューラル処理ユニットに結合されてもよく、いくつかの実施例では、各ニューラル処理ユニットは、1つもしくはそれ以上の特定用途向けの集積回路上に実装されてもよい。
図6は、ニューラル処理ユニット660A−Dを含むシステム600の例を図示する。各ニューラル処理ユニットは、(DDR2と表示された)シーケンシャルメモリ632と、メモリコントローラ634と、メモリインターフェース636と、アプリケーションインターフェース640と、スタティックランダムアクセスメモリ642と、ディスパッチャ644と、複数の(NMEと表示された)マイクロエンジン646とを含んでもよい。
図6に図示された実施例では、各ニューラル処理ユニット660A−Dは、プロセッサ210に関して上述説明されたように実装されてもよいルータ610に結合される。しかしながら、ルータ610は、いくつかの実施例では、例えばメモリインターフェース及びアプリケーションインターフェースなどの入力と出力との間の、複数の並列パスを提供する、ノンブロッキングの、クロスバーパケットルータとしてさらに構成されてもよい。
ニューラル処理ユニット660A内の素子に関する説明を以下に提供するが、他のニューラル処理ユニット660B−Dが、ニューラル処理ユニット660Aと同様の方法で構成されてもよい。さらに、ニューラル処理ユニット660A−Dを含むシステム600は、例えば特定用途向け集積回路(ASIC)などのチップ上に実装されてもよく、4つのニューラル処理ユニット660A−Dだけが図6で図示されるが、システム600はまた、他の量のニューラル処理ユニットを含んでもよい。
シーケンシャルメモリ632は、シーケンシャルメモリ205に関して上述説明されたように実装されてもよい。図6の例では、シーケンシャルメモリ632は、他のタイプのメモリがまた使用されてもよいが、ダブルデータレート同期式ダイナミックアクセスメモリとして実装されてもよい。シーケンシャルメモリ632からの読み出し及びシーケンシャルメモリ632への書き込みを可能とするために、シーケンシャルメモリ632は、メモリコントローラ634に電気的に結合されてもよい。
メモリコントローラ634は、シーケンシャルメモリ632からの読み出し及びシーケンシャルメモリ632への書き込みを制御してもよい。コンテキスト情報は、シーケンシャルメモリ632のシーケンシャルアドレス内に格納されてもよく、コンテキスト情報は、パケットベースのフォーマットで、メモリ632から読み出されてもよく、もしくはメモリ632へ書き込まれてもよい。パケットベースのフォーマットが実装される場合、パケットは、メモリインターフェース636に対する電気的結合を介して、ルータ610に対して提供されてもよいし、もしくはルータ610から受信されてもよい。さらに、メモリコントローラ634は、いくつかの実施例では、例えばメモリ632などのメモリから取得されたデータからパケットを発生し、発生されたパケットをルータ610に送信するインターフェースを提供してもよい。メモリコントローラ634はまた、ルータ610からパケットを受信してパケットのコンテンツをメモリ632に書き込んでもよい。スタティックランダムアクセスメモリ、ダイナミックランダムアクセスメモリから、より高い永続的性を有する光学的な記憶機構までの範囲に及ぶ異なるタイプのメモリがメモリ632において使用されてもよいが、使用されたメモリのタイプにもかかわらず、メモリコントローラ634はパケットをハンドリングしてパケットに対してメモリのためのアドレスを指定する。
メモリインターフェース636は、上述されたメモリインターフェース505と同様の方法で実装されてもよい。図6の例では、メモリインターフェース636は、メモリコントローラ634に対して送信されたパケットもしくはメモリコントローラ634から受信されたパケットをバッファリングしてもよい。
ルータ610は、660A−Dにおける各アプリケーションインターフェース及び結合692A−Cに対して電気的に結合されてもよい。結合692A−Cは、例えば他のニューラル処理ユニット、メモリ、ホストコンピュータなどの他のデバイスに対する結合を提供してもよい。いくつかの実施例では、結合692Cは、PCIインターフェースとして実装されて1秒あたり132メガビットまでの速度でルータ610に対する(及びルータ610からの)データ転送を可能としてもよい。結合692Cはまた、システム600のために、データをロードすること、データをデバッグすること、及びデータを処理することをハンドリングしてもよい。例えば、結合692A−Cは、システム600をホストコンピュータに結合するために使用されてもよい。ホストコンピュータは、動作値を含むコンテキスト情報を提供し、マイクロエンジンによって発生された出力値を受信し、各マイクロエンジン対してコードを提供してニューロンとしてマイクロエンジンを構成してもよい。
アプリケーションインターフェース640は、アプリケーションインターフェース510と同様の方法で実装されてもよい。しかしながら、図6における例では、アプリケーションインターフェース640は、スタティックランダムアクセスメモリ642及びディスパッチャ644に電気的に結合されてもよい。スタティックランダムアクセスメモリ642は、スタティックランダムアクセスメモリ215と同様の方法で実装されてもよく、ディスパッチャ644は、ディスパッチャ520と同様の方法で実装されてもよい。ディスパッチャ644は、マイクロエンジン210A−Eと同様の方法で実装されてもよい、複数の(NMEと表示された)マイクロエンジン646に電気的に結合される。
図7は、ここで説明されたニューラル処理システムによって実装されてもよいプロセス700を図示する。プロセス700の説明はまた、図3A−B及び図6を参照するであろう。
793では、メモリコントローラ634は、メモリ632のシーケンシャルアドレスからデータを読み出してもよい。この読み出し動作は、ニューラルモデルに従って、ニューロンとしてマイクロエンジンを構成するために、コンテキスト情報を含む複数のパケットの少なくとも1つを読み出すことを含んでもよい。メモリコントローラ634は、1つもしくは複数の読み出しパケットをメモリインターフェース636に提供してもよく、ここで1つもしくは複数のパケットは、ルータ610に提供される前にキューイングされてもよい。メモリコントローラ634はまた、例えばルータ610から受信されたパケットなどのデータをメモリ632に対して書き込むことを制御してもよい。
794では、ルータ610は、複数のパケットの少なくとも1つをメモリインターフェース636から受信し、次に受信されたパケットを660A−Dにおけるアプリケーションインターフェースの1つに提供してもよい。例えば、ルータ610は、j番目のニューロンのi番目の結合に対する結合重みWijを含む少なくとも1つのパケットを、アプリケーションインターフェース640に対してルーティングしてもよい。
797では、アプリケーションインターフェースは、メモリからマッチング動作値をフェッチしてもよい。例えば、アプリケーションインターフェース640は、結合重みを前の動作値A(t−1)とマッチングさせ、その場合は例えばスタティックランダムアクセスメモリ642などのメモリからマッチング動作値をフェッチしてもよい。受信された各パケットに対して、アプリケーションインターフェース640は、パケット内に含まれた結合重みWijを読み出し、次にスタティックランダムアクセスメモリ642内に格納されたマッチング動作値を決定してもよい。上述されたように、アプリケーションインターフェース640は、どの動作値をフェッチすべきであるかを指示するルックアップテーブルに基づいてマッチングを決定してもよい。
次に、798では、例えばアプリケーションインターフェース640などのアプリケーションインターフェースは、(例えば結合重みWij、マッチング動作値A(t−1)などの)コンテキスト情報を、例えばディスパッチャ644などのディスパッチャに提供してもよい。次に、ディスパッチャ644は、このコンテキスト情報をマイクロエンジン646の1つに提供してニューロンとしてマイクロエンジンを構成する。
799では、構成されたマイクロエンジンは、例えばA(t)などの出力を発生する。出力A(t)は、ディスパッチャ644と、出力A(t)をスタティックランダムアクセスメモリ642もしくは他のニューラル処理ユニット660B−Dに提供してもよいアプリケーションインターフェース640とに提供されてもよい。プロセス700は、ニューロンの各結合に対して反復されてもよく、ニューラル処理システムの各ニューロンに対して反復されてもよい。さらに、プロセス700は、複数のエポックに対して反復されてもよい。
図8は、マイクロエンジン220A−E及び/もしくはマイクロエンジン646において使用されてもよいマイクロエンジン800の例を図示する。マイクロエンジン800は、レジスタメモリ820と、中央処理ユニット830と、プログラムメモリ850とを含んでもよい。マイクロエンジン800は、マイクロエンジン800がディスパッチャ520からコンテキスト情報、動作値などを含むパケットを受信し、ディスパッチャ520に対して出力動作を提供することができるように、ディスパッチャ520に対して電気的に結合されてもよい。
いくつかの実施例では、マイクロエンジン800は、例えば図3Bに図示されたブロック390Aなどのコンテキスト情報を含むパケットを受信する。マイクロエンジン800は、レジスタ820内にブロック390Aを格納する。その場合は、マイクロエンジン800は、プログラムメモリ850にアクセスして例えばプログラムコードなどの命令を取得してレジスタ820内に格納されたブロック390Aのコンテキスト情報によって指示されたニューラルタイプ320に従ってマイクロエンジンを構成してもよい。次に、マイクロエンジン800は、レジスタ820において格納されたブロック内に含まれた、(例えば、動作値及び結合値などの)コンテキスト情報を用いて命令を実行する。その場合は、出力は、ディスパッチャ520に送信され、ここで、それは、例えばスタティックランダムアクセスメモリなどのもう1つのデバイス、もう1つのニューラル処理ユニット、及び/もしくはホストコンピュータに対してさらにルーティングされてもよい。出力は、後に続く時間では動作値として使用されてもよい。
レジスタ820は、ディスパッチャ520から、例えば図3A−Bに関して上述されたように構造化されたコンテキスト情報を受信してもよい。レジスタ820はまた、制御ステータスレジスタ(CSR)と、累積レジスタと、プログラムカウンタ(PC)と、多数のスクラッチパッドレジスタとを含んでもよい。レジスタ820は、少なくともデータ構造300及び305並びに/又は図3A−Bで図示されたデータ構造300及び305のブロックのうちの少なくとも1つを格納するのに十分な記憶スペースを含むように実装されてもよい。レジスタ820はまた、ディスパッチャ520がレジスタ820のバンクの1つの中に書き込むことが可能となる一方で中央処理ユニット830がレジスタ820の他のバンクから読み出して実行することが可能となるように、2つの同一のレジスタバンクを含むピンポン構成で実装されてもよい。
マイクロエンジン800は、マイクロエンジンにおいて実装された可能なニューラルモデルのセットを定義する(例えば、コードなどの)命令のセットを含んでもよい。従って、(プログラムメモリ850内に格納されてもよい)命令のセットは、マイクロエンジンを構成してコード化して複数のニューロンタイプの少なくとも1つとして動作するように使用されてもよい。さらに、命令のセットは、マイクロエンジン間で移植されて構成を容易化してもよい。マイクロエンジン800に対するコードはまた、アセンブリ言語プログラムをハンドリングしてマイクロエンジン内にローディングするためにそのプログラムをバイナリーコードファイルに変換するためにアセンブラを使用してもよい。例えば、ニューラルアセンブラは、コマンドラインを介して起動してマイクロエンジン内にローディングするためにアセンブリコードプログラムを受け取ってアセンブリコードをバイナリファイルに変換してもよい。
図9は、ここでハイブとして言及されたシステム900を図示する。(NPUとしてそれぞれが表示された)ニューラル処理ユニットは、2次元グリッドレイアウトにおいて相互接続されてもよい。いくつかの実施例では、単一のメモリバスを共有する複数のプロセッサと比較すると、2次元グリッド構造は、処理電力は増加するかもしれない。ニューラル処理ユニット間の相互接続は、高速シリアルデータ線を提供する電気的な相互接続として実装されてもよい。ホストインターフェース990は、ニューラル処理ユニットとホストコンピュータ992との間をインターフェースしてもよい。例えば、ホストインターフェース990は、パケットをハイブの中に通過させ、ニューラル処理ユニット間で交換されたパケットを読み出し、ニューラル処理ユニット間で送信されたパケットを妨害してもよい。各ニューラル処理ユニットは、各ニューラル処理ユニットのロケーショニング及び/もしくはアドレッシングを可能とするための固有の識別子を有してもよい。
ここで説明された主題は、所望された構成によるシステム、装置、方法及び/または物において具現化されてもよい。特に、ここで説明された主題の種々の実施例は、デジタル電子回路、集積回路、特別に設計されたASIC(特定用途向け集積回路)、コンピュータハードウエア、ファームウェア、ソフトウェア、及び/又はそれらの組み合わせにおいて利用されてもよい。これらの種々の実施例は、特別なもしくは一般的な目的であってもよい、記憶システム、少なくとも1つの入力デバイス及び少なくとも1つの出力デバイスからのデータ及び命令を受信するために、並びに記憶システム、少なくとも1つの入力デバイス及び少なくとも1つの出力デバイスにデータ及び命令を送信するために結合された、少なくとも1つのプログラマブルプロセッサを含むプログラマブルシステムに対して実行可能な及び/又はインタプリタ可能である1つもしくはそれ以上のコンピュータプログラムにおける実施例を含んでもよい。
(プログラム、ソフトウェア、ソフトウェアアプリケーション、アプリケーション、コンポーネント、又はコードとしてもまた知られた)これらのコンピュータプログラムは、プログラマブルプロセッサに対する機械命令を含み、高水準手続き及び/もしくはオブジェクト指向のプログラミング言語において、並びに/又はアセンブリ/機械言語において実装されてもよい。ここで使用されたように、用語「機械可読媒体」は、機械命令及び/又はデータをプログラマブルプロセッサに提供するために使用された任意のコンピュータプログラム製品、装置及び/もしくは(例えば、磁気ディスク、光ディスク、メモリ、プログラマブルロジックデバイス(PLD)などの)デバイスに言及し、機械可読信号として機械命令を受信する機械可読媒体を含む。
同様に、プロセッサ及び当該プロセッサに結合されたメモリを含んでもよいシステムがまたここで説明される。メモリは、プロセッサがここで説明された1つもしくはそれ以上の動作を実行させる1つもしくはそれ以上のプログラムを含んでもよい。
さらに、ここで説明されたシステムは、ニューラル処理のコンテキスト内であるが、ここで説明されたシステムは、例えば有限要素解析及びフィルターバンク処理などを含む他の環境において使用されてもよい。さらに、用語「セット」は、空のセットを含む任意の量に言及してもよい。
数個の変形例が詳細に上述されたが、他の変更もしくは追加が可能である。特に、さらなる特徴及び/又は変形例が、ここで説明された特徴及び/又は変形例に加えて提供されてもよい。例えば、上述された実施例は、開示された特徴の種々のコンビネーション及びサブコンビネーション並びに/又は上記開示されたいくつかのさらなる特徴のコンビネーション及びサブコンビネーションに対して指示されてもよい。さらに、添付された図面において図示された及び/又はここで説明されたロジックフローは、所望される結果を獲得するために、表示された特定の順番、もしくは順次の順番を必要としない。以下の特許請求の範囲の範囲内で他の実施形態が可能である。

Claims (20)

  1. 第1のメモリから、少なくとも1つの結合値に基づいて格納されたコンテキスト情報を読み出すステップと、
    第2のメモリから、上記少なくとも1つの結合値をマッチングさせる動作値を読み出すステップと、
    第1のプロセッサによって、上記コンテキスト情報及び上記動作値を複数のマイクロエンジンの少なくとも1つに対して送信してニューロンとして上記少なくとも1つのマイクロエンジンを構成するステップと、
    上記少なくとも1つのマイクロエンジンにおいて、上記ニューロンの出力を示す値を発生するステップとを含むことを特徴とする方法。
  2. 上記第1のメモリから読み出すステップはさらに、
    上記複数のマイクロエンジンにおいて実装されたニューロンに対する結合値に基づいて、メモリ内に順次格納された上記コンテキスト情報を含むデータ構造を読み出すステップを含むことを特徴とする請求項1記載の方法。
  3. 上記データ構造は、複数のブロックを含み、
    上記複数のブロックのそれぞれは、
    上記ニューロンにおける実行を定義するタイプと、
    上記少なくとも1つの結合値を含む上記コンテキスト情報が格納された上記第1のメモリ内のロケーションを示す第1のアドレスと、
    上記動作値が格納された上記第2のメモリ内のロケーションを示す第2のアドレスとを含むことを特徴とする請求項1記載の方法。
  4. 上記データ構造は、複数のシーケンシャルブロックを含み、
    上記複数のシーケンシャルブロックのそれぞれは、
    結合値と、
    上記複数のマイクロエンジンの1つにおいて実装された対応するニューロンを定義するニューロンタイプとを含むことを特徴とする請求項1記載の方法。
  5. 上記各シーケンシャルブロックは、上記複数のマイクロエンジンのうちの少なくとも1つに対してパケットとして送信され、
    上記複数のマイクロエンジンのそれぞれは、少なくとも1つのプロセッサと少なくとも1つのメモリとを備えたことを特徴とする請求項4記載の方法。
  6. 上記データ構造は、複数のシーケンシャルブロックを含み、
    上記各シーケンシャルブロックは、対応するニューロンに対して、ニューロンタイプ及び複数の結合値を含むことを特徴とする請求項1記載の方法。
  7. 上記第1のプロセッサは、上記第1のメモリからの読み出すステップを可能とするために、上記第1のメモリに対して結合されたことを特徴とする請求項1記載の方法。
  8. 上記発生するステップは、上記少なくとも1つのマイクロエンジンにおいて、上記第1のメモリ及び上記第2のメモリにアクセスすることなしに、上記コンテキスト情報及び上記動作値に基づいて上記値を発生して追加的なコンテキスト情報を取得するステップを含むことを特徴とする請求項1記載の方法。
  9. 上記第1のメモリ及び上記第2のメモリは、集積回路の同一のメモリ内に実装されたことを特徴とする請求項1記載の方法。
  10. 上記値を、少なくとも上記第2のメモリに送信するステップをさらに含んだことを特徴とする請求項1記載の方法。
  11. 少なくとも1つの結合値に基づいて格納されたコンテキスト情報を含む第1のメモリと、
    上記少なくとも1つの結合値をマッチングさせる動作値を含む第2のメモリと、
    上記第1のメモリから読み出された上記コンテキスト情報と、上記第2のメモリから読み出された上記動作値とを送信するように構成された第1のプロセッサと、
    上記第1のメモリから読み出された上記コンテキスト情報と、上記第2のメモリから読み出された上記動作値とを受信して少なくとも1つのニューロンのセットの出力を示す少なくとも1つの値を発生するように構成された少なくとも1つの第2のセットのプロセッサとを備えたことを特徴とする装置。
  12. 上記第1のメモリはさらに、
    上記第2のセットのプロセッサにおいて実装された上記少なくとも1つのニューロンのセットに対する結合値に基づいてメモリ内に順次格納された上記コンテキスト情報を含むデータ構造を備えたことを特徴とする請求項11記載の装置。
  13. 上記データ構造は、複数のブロックを含み、
    上記複数のブロックのそれぞれは、
    ニューロンタイプと、
    上記コンテキスト情報が格納された上記第1のメモリ内のロケーションを示す第1のアドレスと、
    上記動作値が格納された上記第2のメモリ内のロケーションを示す第2のアドレスとを含むことを特徴とする請求項11記載の装置。
  14. 少なくとも1つのプログラマブルプロセッサによって実行されるときに上記少なくとも1つのプログラマブルプロセッサが、
    第1のメモリから、少なくとも1つの結合値に基づいて格納されたコンテキスト情報を読み出すステップと、
    第2のメモリから、少なくとも1つの結合値とマッチングさせる動作値を読み出すステップと、
    第1のプロセッサによって、上記コンテキスト情報及び上記動作値を複数のマイクロエンジンの少なくとも1つに対して送信してニューロンとして上記少なくとも1つのマイクロエンジンを構成するステップと、
    上記少なくとも1つのマイクロエンジンにおいて、上記ニューロンの出力を示す値を発生するステップとを含む動作を実行することができる命令を格納する機械可読媒体を備えたことを特徴とするコンピュータプログラム製品。
  15. 上記第1のメモリから読み出すステップはさらに、
    上記複数のマイクロエンジンにおいて実装されたニューロンに対する結合値に基づいて、メモリ内に順次格納された上記コンテキスト情報を含むデータ構造を読み出すステップを含むことを特徴とする請求項14記載のコンピュータプログラム製品。
  16. 上記データ構造は、複数のブロックを含み、
    上記複数のブロックのそれぞれは、上記ニューロンにおける実行を定義するタイプと、
    上記少なくとも1つの結合値を含む上記コンテキスト情報が格納された上記第1のメモリ内のロケーションを示す第1のアドレスと、
    上記動作値が格納された上記第2のメモリ内のロケーションを示す第2のアドレスとを含むことを特徴とする請求項14記載のコンピュータプログラム製品。
  17. 各ブロックがニューロンに対する少なくとも1つの結合値と上記ニューロンのタイプを示す情報とを含むブロック内に格納されたコンテキスト情報を含む第1のメモリと、
    上記第1のメモリをインターフェースし、上記第1のメモリから読み出すこと及び上記第1のメモリに対して書き込むことのうちの少なくとも1つを制御するメモリコントローラと、
    上記コンテキスト情報を転送し、さらに上記メモリコントローラ及び上記第1のメモリからの上記コンテキスト情報を受信するように構成された第1のプロセッサと、
    上記第1のプロセッサによって転送された上記コンテキスト情報を受信し、複数の動作値のうちの少なくとも1つを上記少なくとも1つの結合値とマッチングさせ、上記マッチングする上記複数の動作値の少なくとも1つをフェッチし、上記フェッチされた上記複数の動作値の少なくとも1つ及び上記少なくとも1つの結合値を転送するように構成されたインターフェースと、
    上記転送された上記複数の動作値の少なくとも1つと上記少なくとも1つの結合値とを受信し、少なくとも1つのセットのニューロンとして構成された少なくとも1つの第2のセットのプロセッサの出力を示す少なくとも1つの値を発生するように構成された上記少なくとも1つの第2のセットのプロセッサとを備えたことを特徴とする装置。
  18. 少なくとも1つのプログラマブルプロセッサによって実行されるときに上記少なくとも1つのプログラマブルプロセッサが、
    第1のメモリから、各ブロックがニューロンに対する少なくとも1つの結合値及び上記ニューロンのタイプを示す情報を含むブロック内に格納されたコンテキスト情報を読み出すステップと、
    上記第1のメモリをインターフェースするメモリコントローラにおいて、上記第1のメモリから読み出すこと及び上記第1のメモリに書き込むことのうちの少なくとも1つを制御するステップと、
    上記コンテキスト情報をインターフェースに転送するように構成された第1のプロセッサにおいて、上記第1のメモリコントローラ及び上記第1のメモリから上記コンテキスト情報を受信するステップと、
    上記インターフェースにおいて、上記第1のプロセッサによって転送された上記コンテキスト情報を受信するステップと、
    上記インターフェースにおいて、複数の動作値の少なくとも1つを上記少なくとも1つの結合値とマッチングさせるステップと、
    上記インターフェースにおいて、上記マッチングする複数の動作値の少なくとも1つをフェッチするステップと、
    上記インターフェースにおいて、上記フェッチされた複数の動作値の少なくとも1つ及び上記少なくとも1つの結合値を転送するステップと、
    1つもしくはそれ以上の第2のセットのプロセッサにおいて、上記転送された複数の動作値のうちの少なくとも1つ及び上記転送された少なくとも1つの結合値を受信するステップと、
    上記1つもしくはそれ以上の第2のセットのプロセッサにおいて、出力を発生するステップとを含む動作を実行することができる命令を格納する機械可読媒体を備えたことを特徴とするコンピュータプログラム製品。
  19. 第1のメモリから、各ブロックがニューロンに対する少なくとも1つの結合値及び上記ニューロンのタイプを示す情報を含むブロック内に格納されたコンテキスト情報を読み出すステップと、
    上記第1のメモリをインターフェースするメモリコントローラにおいて、上記第1のメモリから読み出すこと及び上記第1のメモリに書き込むことのうちの少なくとも1つを制御するステップと、
    上記コンテキスト情報をインターフェースに転送するように構成された第1のプロセッサにおいて、上記第1のメモリコントローラ及び上記第1のメモリから上記コンテキスト情報を受信するステップと、
    上記インターフェースにおいて、上記第1のプロセッサによって転送された上記コンテキスト情報を受信するステップと、
    上記インターフェースにおいて、複数の動作値のうちの少なくとも1つを上記少なくとも1つの結合値とマッチングさせるステップと、
    上記インターフェースにおいて、上記マッチングする複数の動作値のうちの少なくとも1つをフェッチするステップと、
    上記インターフェースにおいて、上記フェッチされた複数の動作値のうちの少なくとも1つ及び上記少なくとも1つの結合値を転送するステップと、
    1つもしくはそれ以上の第2のセットのプロセッサにおいて、上記転送された複数の動作値のうちの少なくとも1つ及び上記転送された少なくとも1つの結合値を受信するステップと、
    上記1つもしくはそれ以上の第2のセットのプロセッサにおいて、出力を発生するステップとを含むことを特徴とする方法。
  20. 少なくとも1つの結合値に基づいて格納されたコンテキスト情報を読み出すための手段と、
    上記少なくとも1つの結合値をマッチングさせる動作値を読み出すための手段と、
    上記コンテキスト情報及び上記動作値を、複数のマイクロエンジンのうちの少なくとも1つに対して送信して上記少なくとも1つのマイクロエンジンをニューロンとして構成するための手段と、
    上記ニューロンの出力を示す値を発生するための手段とを備えたことを特徴とする装置。
JP2013511155A 2010-05-19 2011-01-21 ニューラル処理ユニット Pending JP2013529342A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US34644110P 2010-05-19 2010-05-19
US61/346,441 2010-05-19
PCT/US2011/022155 WO2011146147A1 (en) 2010-05-19 2011-01-21 Neural processing unit

Publications (2)

Publication Number Publication Date
JP2013529342A true JP2013529342A (ja) 2013-07-18
JP2013529342A5 JP2013529342A5 (ja) 2013-11-28

Family

ID=44973304

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013511155A Pending JP2013529342A (ja) 2010-05-19 2011-01-21 ニューラル処理ユニット

Country Status (7)

Country Link
US (2) US8655815B2 (ja)
EP (1) EP2572293A4 (ja)
JP (1) JP2013529342A (ja)
KR (1) KR20130111956A (ja)
CN (1) CN102947818B (ja)
CA (1) CA2799167A1 (ja)
WO (1) WO2011146147A1 (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016166881A1 (ja) * 2015-04-17 2016-10-20 Cocoro Sb株式会社 処理システム及びプログラム
JP2016536679A (ja) * 2013-10-11 2016-11-24 クゥアルコム・インコーポレイテッドQualcomm Incorporated ニューラルシミュレータ用の共有メモリアーキテクチャ
CN111886605A (zh) * 2018-03-22 2020-11-03 亚马逊技术股份有限公司 针对多个输入数据集的处理
JP2021506032A (ja) * 2017-12-12 2021-02-18 アマゾン テクノロジーズ インコーポレイテッド オンチップの計算ネットワーク
US11741345B2 (en) 2017-12-12 2023-08-29 Amazon Technologies, Inc. Multi-memory on-chip computational network

Families Citing this family (62)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9405975B2 (en) 2010-03-26 2016-08-02 Brain Corporation Apparatus and methods for pulse-code invariant object recognition
US9566710B2 (en) 2011-06-02 2017-02-14 Brain Corporation Apparatus and methods for operating robotic devices using selective state space training
US8990133B1 (en) 2012-12-20 2015-03-24 Brain Corporation Apparatus and methods for state-dependent learning in spiking neuron networks
US9104186B2 (en) 2012-06-04 2015-08-11 Brain Corporation Stochastic apparatus and methods for implementing generalized learning rules
US9015092B2 (en) 2012-06-04 2015-04-21 Brain Corporation Dynamically reconfigurable stochastic learning apparatus and methods
US9146546B2 (en) 2012-06-04 2015-09-29 Brain Corporation Systems and apparatus for implementing task-specific learning using spiking neurons
US9213937B2 (en) 2011-09-21 2015-12-15 Brain Corporation Apparatus and methods for gating analog and spiking signals in artificial neural networks
US9412041B1 (en) 2012-06-29 2016-08-09 Brain Corporation Retinal apparatus and methods
CN102855213B (zh) * 2012-07-06 2017-10-27 中兴通讯股份有限公司 一种网络处理器指令存储装置及该装置的指令存储方法
US9256215B2 (en) * 2012-07-27 2016-02-09 Brain Corporation Apparatus and methods for generalized state-dependent learning in spiking neuron networks
US9082078B2 (en) 2012-07-27 2015-07-14 The Intellisis Corporation Neural processing engine and architecture using the same
US9159020B2 (en) * 2012-09-14 2015-10-13 International Business Machines Corporation Multiplexing physical neurons to optimize power and area
US9189730B1 (en) 2012-09-20 2015-11-17 Brain Corporation Modulated stochasticity spiking neuron network controller apparatus and methods
US9367798B2 (en) 2012-09-20 2016-06-14 Brain Corporation Spiking neuron network adaptive control apparatus and methods
US20140143191A1 (en) * 2012-11-20 2014-05-22 Qualcomm Incorporated Piecewise linear neuron modeling
US9185057B2 (en) 2012-12-05 2015-11-10 The Intellisis Corporation Smart memory
US9195934B1 (en) 2013-01-31 2015-11-24 Brain Corporation Spiking neuron classifier apparatus and methods using conditionally independent subsets
US9764468B2 (en) 2013-03-15 2017-09-19 Brain Corporation Adaptive predictor apparatus and methods
US9008840B1 (en) 2013-04-19 2015-04-14 Brain Corporation Apparatus and methods for reinforcement-guided supervised learning
US9242372B2 (en) 2013-05-31 2016-01-26 Brain Corporation Adaptive robotic interface apparatus and methods
US9792546B2 (en) 2013-06-14 2017-10-17 Brain Corporation Hierarchical robotic controller apparatus and methods
US9314924B1 (en) * 2013-06-14 2016-04-19 Brain Corporation Predictive robotic controller apparatus and methods
US9436909B2 (en) 2013-06-19 2016-09-06 Brain Corporation Increased dynamic range artificial neuron network apparatus and methods
US9552546B1 (en) 2013-07-30 2017-01-24 Brain Corporation Apparatus and methods for efficacy balancing in a spiking neuron network
US9579789B2 (en) 2013-09-27 2017-02-28 Brain Corporation Apparatus and methods for training of robotic control arbitration
US9489623B1 (en) 2013-10-15 2016-11-08 Brain Corporation Apparatus and methods for backward propagation of errors in a spiking neuron network
US9597797B2 (en) 2013-11-01 2017-03-21 Brain Corporation Apparatus and methods for haptic training of robots
US9463571B2 (en) 2013-11-01 2016-10-11 Brian Corporation Apparatus and methods for online training of robots
US9358685B2 (en) 2014-02-03 2016-06-07 Brain Corporation Apparatus and methods for control of robot actions based on corrective user inputs
US9672464B2 (en) 2014-02-28 2017-06-06 Qualcomm Incorporated Method and apparatus for efficient implementation of common neuron models
US9346167B2 (en) 2014-04-29 2016-05-24 Brain Corporation Trainable convolutional network apparatus and methods for operating a robotic vehicle
US9630318B2 (en) 2014-10-02 2017-04-25 Brain Corporation Feature detection apparatus and methods for training of robotic navigation
US9881349B1 (en) 2014-10-24 2018-01-30 Gopro, Inc. Apparatus and methods for computerized object identification
US9881253B2 (en) 2014-11-07 2018-01-30 International Business Machines Corporation Synaptic neural network core based sensor system
US9552327B2 (en) 2015-01-29 2017-01-24 Knuedge Incorporated Memory controller for a network on a chip device
US10108516B2 (en) 2015-01-29 2018-10-23 Knuedge Incorporated Affinity data collection in a computing system
US10061531B2 (en) 2015-01-29 2018-08-28 Knuedge Incorporated Uniform system wide addressing for a computing system
US9717387B1 (en) 2015-02-26 2017-08-01 Brain Corporation Apparatus and methods for programming and training of robotic household appliances
US9886193B2 (en) 2015-05-15 2018-02-06 International Business Machines Corporation Architecture and implementation of cortical system, and fabricating an architecture using 3D wafer scale integration
US9864519B2 (en) 2015-08-24 2018-01-09 Knuedge Incorporated Performing write operations in a network on a chip device
US10152352B2 (en) 2015-11-17 2018-12-11 Friday Harbor Llc Writing to contiguous memory addresses in a network on a chip architecture
US9977745B2 (en) 2016-01-05 2018-05-22 Knuedge, Inc. Flow control through packet router
US9959066B2 (en) 2016-02-12 2018-05-01 Knuedge Incorporated Memory-attached computing resource in network on a chip architecture to perform calculations on data stored on memory external to the chip
US10027583B2 (en) 2016-03-22 2018-07-17 Knuedge Incorporated Chained packet sequences in a network on a chip architecture
US10635968B2 (en) * 2016-03-24 2020-04-28 Intel Corporation Technologies for memory management of neural networks with sparse connectivity
CN107291209B (zh) * 2016-04-01 2021-02-09 上海磁宇信息科技有限公司 细胞阵列计算系统
CN109375951B (zh) * 2016-04-27 2020-10-09 中科寒武纪科技股份有限公司 一种用于执行全连接层神经网络正向运算的装置和方法
US10346049B2 (en) 2016-04-29 2019-07-09 Friday Harbor Llc Distributed contiguous reads in a network on a chip architecture
WO2017185347A1 (zh) * 2016-04-29 2017-11-02 北京中科寒武纪科技有限公司 用于执行循环神经网络和lstm运算的装置和方法
US10387298B2 (en) 2017-04-04 2019-08-20 Hailo Technologies Ltd Artificial neural network incorporating emphasis and focus techniques
US11544545B2 (en) 2017-04-04 2023-01-03 Hailo Technologies Ltd. Structured activation based sparsity in an artificial neural network
US11551028B2 (en) 2017-04-04 2023-01-10 Hailo Technologies Ltd. Structured weight based sparsity in an artificial neural network
US11238334B2 (en) 2017-04-04 2022-02-01 Hailo Technologies Ltd. System and method of input alignment for efficient vector operations in an artificial neural network
US11615297B2 (en) 2017-04-04 2023-03-28 Hailo Technologies Ltd. Structured weight based sparsity in an artificial neural network compiler
CN109754062A (zh) * 2017-11-07 2019-05-14 上海寒武纪信息科技有限公司 卷积扩展指令的执行方法以及相关产品
CN109670586B (zh) * 2018-12-29 2019-11-12 北京中科寒武纪科技有限公司 运算方法、装置及相关产品
RU2739340C1 (ru) * 2019-11-14 2020-12-23 Федеральное государственное бюджетное учреждение науки Институт физиологии им. И.П. Павлова Российской академии наук (ИФ РАН) Способ нейроморфной обработки данных и устройство для его осуществления
US11237894B1 (en) 2020-09-29 2022-02-01 Hailo Technologies Ltd. Layer control unit instruction addressing safety mechanism in an artificial neural network processor
US11221929B1 (en) 2020-09-29 2022-01-11 Hailo Technologies Ltd. Data stream fault detection mechanism in an artificial neural network processor
US11811421B2 (en) 2020-09-29 2023-11-07 Hailo Technologies Ltd. Weights safety mechanism in an artificial neural network processor
US11263077B1 (en) 2020-09-29 2022-03-01 Hailo Technologies Ltd. Neural network intermediate results safety mechanism in an artificial neural network processor
US11874900B2 (en) 2020-09-29 2024-01-16 Hailo Technologies Ltd. Cluster interlayer safety mechanism in an artificial neural network processor

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0342768A (ja) * 1989-07-11 1991-02-22 Nec Corp ニューロコンピュータ回路
JPH04182769A (ja) * 1990-11-17 1992-06-30 Nissan Motor Co Ltd デジタル・ニューロプロセッサ
JP2008310524A (ja) * 2007-06-13 2008-12-25 Canon Inc 演算処理装置及びその制御方法
JP2009508182A (ja) * 2005-06-28 2009-02-26 ニューロサイエンシーズ リサーチ ファンデーション インコーポレイテッド 特殊目的プロセッサを使用する神経モデリング及び脳ベースの装置

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4974169A (en) * 1989-01-18 1990-11-27 Grumman Aerospace Corporation Neural network with memory cycling
JPH03223933A (ja) * 1989-12-18 1991-10-02 Hitachi Ltd 情報処理システム
US5325464A (en) * 1990-05-22 1994-06-28 International Business Machines Corporation Pyramid learning architecture neurocomputer
US5282261A (en) 1990-08-03 1994-01-25 E. I. Du Pont De Nemours And Co., Inc. Neural network process measurement and control
US5214747A (en) * 1990-12-24 1993-05-25 Eastman Kodak Company Segmented neural network with daisy chain control
JP3521429B2 (ja) 1992-03-30 2004-04-19 セイコーエプソン株式会社 ニューラルネットワークを用いた音声認識装置およびその学習方法
WO1993020705A1 (en) * 1992-04-15 1993-10-28 A.C. Machines Limited Process and apparatus for manufacturing shaped confectionery products
US8686549B2 (en) * 2001-09-03 2014-04-01 Martin Vorbach Reconfigurable elements
JP2001056760A (ja) * 1999-08-19 2001-02-27 Murata Mfg Co Ltd データ処理装置
US9525696B2 (en) * 2000-09-25 2016-12-20 Blue Coat Systems, Inc. Systems and methods for processing data flows
US20110219035A1 (en) * 2000-09-25 2011-09-08 Yevgeny Korsunsky Database security via data flow processing
US7031969B2 (en) * 2002-02-20 2006-04-18 Lawrence Technologies, Llc System and method for identifying relationships between database records
US20060155661A1 (en) * 2005-01-07 2006-07-13 Morgan David W Portable device for classification of medical data
US7627540B2 (en) 2005-06-28 2009-12-01 Neurosciences Research Foundation, Inc. Addressing scheme for neural modeling and brain-based devices using special purpose processor
US7555469B2 (en) * 2006-11-16 2009-06-30 L-3 Communications Integrated Systems L.P. Reconfigurable neural network systems and methods utilizing FPGAs having packet routers
US8918350B2 (en) * 2008-12-19 2014-12-23 Optis Wireless Technology, Llc Method and apparatus for routing data
EP2259214B1 (en) * 2009-06-04 2013-02-27 Honda Research Institute Europe GmbH Implementing a neural associative memory based on non-linear learning of discrete synapses

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0342768A (ja) * 1989-07-11 1991-02-22 Nec Corp ニューロコンピュータ回路
JPH04182769A (ja) * 1990-11-17 1992-06-30 Nissan Motor Co Ltd デジタル・ニューロプロセッサ
JP2009508182A (ja) * 2005-06-28 2009-02-26 ニューロサイエンシーズ リサーチ ファンデーション インコーポレイテッド 特殊目的プロセッサを使用する神経モデリング及び脳ベースの装置
JP2008310524A (ja) * 2007-06-13 2008-12-25 Canon Inc 演算処理装置及びその制御方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
小田逸郎: "Linuxカーネル2.6解読室 第10回 プロセス空間の管理", UNIX USER, vol. 第14巻,第3号, JPN6014051369, 1 March 2005 (2005-03-01), JP, pages 117 - 132, ISSN: 0002957300 *

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016536679A (ja) * 2013-10-11 2016-11-24 クゥアルコム・インコーポレイテッドQualcomm Incorporated ニューラルシミュレータ用の共有メモリアーキテクチャ
WO2016166881A1 (ja) * 2015-04-17 2016-10-20 Cocoro Sb株式会社 処理システム及びプログラム
JPWO2016166881A1 (ja) * 2015-04-17 2018-02-22 Cocoro Sb株式会社 処理システム及びプログラム
JP2021506032A (ja) * 2017-12-12 2021-02-18 アマゾン テクノロジーズ インコーポレイテッド オンチップの計算ネットワーク
JP7179853B2 (ja) 2017-12-12 2022-11-29 アマゾン テクノロジーズ インコーポレイテッド オンチップの計算ネットワーク
US11741345B2 (en) 2017-12-12 2023-08-29 Amazon Technologies, Inc. Multi-memory on-chip computational network
JP7451614B2 (ja) 2017-12-12 2024-03-18 アマゾン テクノロジーズ インコーポレイテッド オンチップの計算ネットワーク
CN111886605A (zh) * 2018-03-22 2020-11-03 亚马逊技术股份有限公司 针对多个输入数据集的处理
CN111886605B (zh) * 2018-03-22 2024-03-22 亚马逊技术股份有限公司 针对多个输入数据集的处理

Also Published As

Publication number Publication date
EP2572293A1 (en) 2013-03-27
EP2572293A4 (en) 2013-12-04
US20140172763A1 (en) 2014-06-19
CN102947818B (zh) 2015-07-22
US20110289034A1 (en) 2011-11-24
CN102947818A (zh) 2013-02-27
WO2011146147A1 (en) 2011-11-24
US8655815B2 (en) 2014-02-18
US9558444B2 (en) 2017-01-31
CA2799167A1 (en) 2011-11-24
KR20130111956A (ko) 2013-10-11

Similar Documents

Publication Publication Date Title
JP2013529342A (ja) ニューラル処理ユニット
US11151444B2 (en) Structural descriptions for neurosynaptic networks
US10896369B2 (en) Power conversion in neural networks
US10509846B2 (en) Accelerator for processing data
CN105184366B (zh) 一种时分复用的通用神经网络处理器
US10678741B2 (en) Coupling parallel event-driven computation with serial computation
JP6714690B2 (ja) 情報処理システム、情報処理システムの運用方法、および機械学習演算器
EP2877905A2 (en) Neural processing engine and architecture using the same
US20150324685A1 (en) Adaptive configuration of a neural network device
EP3451236A1 (en) Method and device for executing forwarding operation of fully-connected layered neural network
JP2013529342A5 (ja)
US20180284993A1 (en) Performing data operations in a storage area network
US11355175B2 (en) Deep learning accelerator and random access memory with a camera interface
TWI417798B (zh) High - speed reverse transfer neural network system with elastic structure and learning function
WO2020046643A1 (en) Method and system for performing parallel computation
CN103473042B (zh) 用于动态配置通信数据项的系统和方法
Meng et al. Ppoaccel: A high-throughput acceleration framework for proximal policy optimization
CN110309087A (zh) 数据传输方法与使用此方法的主机系统
CN111339060B (zh) 运算方法、装置、计算机设备和存储介质
CN111949317A (zh) 指令处理方法、装置及相关产品
Yunzhou et al. Innovative architecture of single chip edge device based on virtualization technology
JP6957659B2 (ja) 情報処理システムおよびその運用方法

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131009

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20131009

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20141209

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20150302

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20150804