以降の説明は、本発明の基本的原理を例証するためになされるもので、本明細書で請求される発明の概念を限定する意味合いはない。さらに、本明細書に記載された具体的な諸特徴は、様々の可能な組み合せおよび置き換えの各々において、他の記載された特徴と組み合せて使用することが可能である。
具体的に本明細書中で別途に定義されている場合を除き、全ての用語は、本明細書に含蓄されている意味、ならびに当業者によって理解されている、もしくは辞書、論文などに定義されている、またはその両方の意味を含め、それら用語の可能な最広範囲な解釈を与えられるものとする。
また、本明細書および添付の特許請求の範囲で用いられる単数形「或る(“a”、“an”)」、および「該(“the”)」は、別途に指定されていなければ、複数の指示対象も含むこと留意する必要がある。さらに、当然のことながら本明細書で用いられる「含む(“comprise”)」もしくは「含んでいる(“comprising”)」またはその両方は、述べられた特徴、完全体(integer)、ステップ、オペレーション、要素、もしくはコンポーネント、またはこれらの組み合わせの存在を特定するが、一つ以上の他の特徴、完全体、ステップ、オペレーション、要素、コンポーネント、もしくはこれらの群、または上記の組み合わせの存在または追加を排除するものではない。
以降の説明では、ニューロシナプティック・コアを多重化するためのシステム、方法、およびコンピュータ・プログラム製品のいくつかの好適な実施形態を開示する。
1つの一般的実施形態において、多重ニューラル・コア回路は、ゼロより大きい整数多重化倍数Tに対し、Tセットの電子ニューロン、Tセットの電子軸索であって、Tセットの電子軸索の各セットがTセットの電子ニューロンの1つに対応する該セットと、各々が単一の電子軸索を単一の電子ニューロンに相互接続する複数の電子シナプス、を包含するシナプス相互接続ネットワークと、を含み、この相互接続ネットワークは、Tセットの電子軸索の各セットを、それが対応する電子ニューロンのセットに相互接続する。
別の一般的な実施形態において、ニューラル・コア回路を多重化するためのコンピュータ実装の方法は、ゼロより大きい整数多重化倍数Tに対し、Tセットの電子ニューロンを構成するステップと、Tセットの電子軸索を構成するステップであってTセットの電子軸索の各セットがTセットの電子ニューロンの1つに対応する、該電子軸索を構成するステップと、各々が単一の電子軸索を単一の電子ニューロンに相互接続する複数の電子シナプスを含むシナプス相互接続ネットワークを構成するステップであって、この相互接続ネットワークは、Tセットの電子軸索の各セットを、それが対応する電子ニューロンのセットに相互接続する、該相互接続ネットワークを構成するステップと、を含む。
別の一般的な実施形態において、ニューロシナプティック・システムは、ニューロシナプティック・チップと、チップ上のコンポーネントとして、単一コア・ニューロシナプティック・モジュール、またはチップ上のコンポーネントとして、オンチップ・ネットワークを介して相互接続された複数の多重ニューラル・コア回路を含む、マルチコア・ニューロシナプティック・モジュールと、を含み、複数の多重ニューラル・コア回路の各々は、ゼロより大きい整数多重化倍数Tに対し、Tセットの電子ニューロンと、Tセットの電子軸索であって該Tセットの電子軸索の各セットはTセットの電子ニューロンの1つに対応する、該セットと、各々が単一の電子軸索を単一の電子ニューロンに相互接続する複数の電子シナプス、を包含するシナプス相互接続ネットワークであって、該相互接続ネットワークは、Tセットの電子軸索の各セットをそれが対応する電子ニューロンのセットに相互接続する、該相互接続ネットワークと、を含む。
図1は、本発明の或る実施形態による、ニューロシナプティック・コア・モジュール(「ニューロシナプティック・コア」または「コア」)10を示す。コア10は、ニューラル・コア回路/ニューロシナプティック・コア回路である。コア10は、複数の入来軸索15および複数のニューロン11を含む。各ニューロン11および各軸索15は設定可能な動作パラメータを有する。コア10は、複数のシナプス31、複数の行/軸索パス26、および複数の列/樹状突起パス34を包含するシナプス・クロスバー12をさらに含む。
各シナプス31は、軸索15とニューロン11との間でファイアリング・イベント(例えばスパイク・イベント)を通信する。具体的には、各シナプス31は、軸索パス26と樹状突起パス34との間の交差接合点に、前記シナプス31を介して軸索パス26と樹状突起パス34との間の接続がされるように配置される。各軸索15は、前記軸索15が接続された軸索パス26にスパイクを送信するように、軸索パス26に接続される。各ニューロン11は、前記ニューロン11が接続された樹状突起パス34からスパイクを受信するように、樹状突起パス34に接続される。
各シナプス31は、シナプス・ウェイトを有する。コア10のシナプス31のシナプス・ウェイトは、ウェイト・マトリックスWで表すことが可能で、マトリックスWの要素Wijは、クロスバー12の行/軸索パスi且つ列/樹状突起パスjに位置するシナプス31のシナプス・ウェイトを表す。一実施形態において、シナプス31は、バイナリ・メモリ・デバイスである。例えば、各シナプス31は、前記シナプス31が非伝導状態であることを示すウェイト「0」、または前記シナプス31が伝導状態であることを示すウェイト「1」を有してよい。シナプス31のシナプス・ウェイトを更新するために、スパイクタイミング依存可塑性(STDP:spike−timing dependent plasticity)などの学習則を適用すればよい。
図2は、本発明の或る実施形態による、例示のニューラル・ネットワーク50を示す。ニューラル・ネットワーク50は、拡張性のあるニューロモーフィックなシナプトロニック・アーキテクチャである。ニューラル・ネットワーク50は、複数のチップ構造体70を含む。各チップ構造体70は、複数のコア10を含む。ニューラル・ネットワーク50のイベント経路制御システム75は、チップ構造体70のコア群10の間のファイアリング・イベントを経路制御する。ニューラル・ネットワーク50のコア10は、同一のチップ構造体70または異なるチップ構造体70の異なるコア10にファイアリング・イベントを送信、および異なるコア10からファイアリング・イベントを受信することができる。
図3は、本発明の或る実施形態による、多重ニューラル・コア回路100を示す。コア回路100は、複数のニューロン11に対するニューロン属性を維持する1つ以上のメモリ含むので、多重ニューロシナプティック・コア回路である。さらに、コア回路100は、計算の1つ以上を多重化し、複数のニューロン11に対するロジックを制御する。コア回路100は、ニューラル・コア回路についての情報を格納するメモリ110、メモリ・デバイス110に対するコントローラ(すなわち、処理および計算論理回路)120、およびメモリ・インターフェース回路115を含む。回路115は、標準的なメモリ・インターフェース回路であってよい。メモリ110は、メモリ110a、シナプス・クロスバーまたは相互接続ネットワーク110b、およびメモリ110cを含んで示されている。
シナプス・クロスバーまたは相互接続ネットワーク110bは、複数のニューロン11についてのシナプス接続関係情報を維持することができ、これによって、ニューラル・コア回路100の電子軸索をニューラル・コア回路100の電子ニューロンに相互接続している複数の電子シナプスを含む。相互接続ネットワーク110bの各シナプスは、電子軸索を電子ニューロンに相互接続する。
様々なさらなるメモリ・サブコンポーネントが、ニューラル・コア回路100についての情報を格納する。具体的に、コア回路100は、メモリ110aおよびメモリ110cを含み、そのそれぞれはニューラル・コア回路についての情報を格納する。さらに、メモリ110aは、Tのパーティションに分割することが可能である。Tのパーティションの各々は、或る時間ステップのTのサブ時間ステップの対応する1つに関連付けることができる。メモリ110cは、ニューラル・コア回路100についての付加情報を格納する。一実施形態において、この付加情報は、時間ステップのTのサブ時間ステップの2つ以上に亘って共有されるニューロン属性を含む。例えば、メモリ110cは、ニューロン11に対するニューロン・パラメータ、ニューロン11に対する経路制御データ情報など維持することが可能で、これらについては後記でさらに詳しく説明する。
一実施形態において、この110は、複数のエントリまたは行を含んでよい。例えば、シナプス・クロスバー110bおよびメモリ110cは、複数のエントリを含むことが可能で、各エントリは、ニューロン11に対するニューロン属性を維持する。一実施形態で、各エントリはニューロン11に対する、シナプス接続関係情報(Wij)、ニューロン・パラメータ、および経路制御情報などのニューロン属性を維持する。一実施形態において、各エントリの第一サブセットは、ニューロン11を軸索15に相互接続しているシナプス31のシナプス・ウェイトを維持する。
一実施形態において、コントローラ120は、入力処理ファブリックおよび計算ファブリックを含む。各エントリに対し、処理ファブリックは、前記エントリを標的にしたファイアリング・イベントを受信し処理するように構成される。例えば、受信された各ファイアリング・イベントは、前記エントリによって表されるニューロン11が相互接続されている軸索15を標的化することができる。上記で示したように、各エントリの第一サブセットは、ニューロン11を軸索15に相互接続しているシナプス31のシナプス・ウェイトを維持する。標的軸索15と前記エントリによって表されるニューロン11とを相互接続しているシナプス31が導電状態であれば、前記ファイアリング・イベントは、計算ファブリックによって組み込むことが可能である。一実施形態において、処理ファブリックは、デコーダと、スケジューラ制御ユニットと、スケジューラと、軸索種類レジスタと、多重化制御ユニットと、点乗積モジュールとを含む。
複数のコア回路100を含むニューラル・ネットワークにおいて、ファイアリング・イベントは、これらニューラル・ネットワークのコア回路100の間で、スパイク・イベント・パケットの形で送られる。各スパイク・イベント・パケットは、標的軸索15を表すバイナリ・アドレスとして符号化されたファイアリング・イベントまたはスパイク・イベントを含んでよく、そのファイアリング・イベントは、同じコア回路100または異なるコア回路100中でニューロン11によって生成されたものである。各スパイク・イベント・パケットは、前記スパイク・イベント・パケット中にカプセル化されたファイアリング・イベントがいつ生成されたかを示す時間ステップおよびサブ時間ステップをさらに含むことが可能である。各コア回路100のデコーダは、スパイク・イベント・パケットを受信し復号するように構成されてよい。
一実施形態において、スケジューラは、軸索のバッファ保存を管理するように構成され、メモリ110aは、コア回路100の諸軸索15に関連付けられた軸索バッファを含む。言い換えれば、コア回路100のメモリ110aは、Aの軸索バッファを1セット含むことができ、このAはコア回路100の軸索の数である。所与の軸索15に対し、スケジューラは、軸索15に宛てられた受信ファイアリング・イベントを、該軸索15に関連付けられたバッファ中にバッファ保存することができる。さらに、各時間ステップがTのサブ時間ステップに分割されている場合、軸索に関連付けられたバッファは、Tおよびメモリ110aの深さに基づいてサブ分割されてよく、これについては後記でさらに詳しく説明する。
各サブ時間ステップの開始時に、スケジューラは、軸索バッファ中のファイアリング・イベントを位置シフトすることができる。一実施形態において、各サブ時間ステップの開始時に、只今のサブ時間ステップ中の全てのアクティブな軸索15を示すベクトルが、行としてスケジューラから読み取られてよい。
メモリ110の内容は、サブ時間ステップごとに1回読み取られ、書き込むことが可能である。具体的には、各サブ時間ステップに対し、メモリ110のエントリは、シーケンシャル・スキャナを使って、逐次的に1回に1つ読み出される。ニューロン11を表す各エントリに対し、只今のサブ時間ステップ中のアクティブな軸索15のベクトルと、前記エントリ中に維持されているシナプス接続関係情報、すなわち、全シナプス31のシナプス・ウェイトとの間の点乗積が計算でき、ニューロン11の樹状突起パス34が(Wj)に接続される。
各エントリに対し、マルチプレクサは、情報を用いてニューロン・パラメータ(すなわち、Syn0、Syn1、Syn2、Lk)を選択する。例えば、前記エントリ中に維持される漏れ率Lkは、全スパイクが組み込まれた後に選択することができる。加算回路は、マルチプレクサによって選択されたニューロン・パラメータを別のマルチプレクサによって選択された膜電位変数に加算する。各エントリに対し、他のマルチプレクサは、初回の加算に対し前記エントリ中に維持された膜電位変数Vを選択することができる。各エントリに対し、他のマルチプレクサは、その後の加算に対する修正された膜電位変数を選択してもよく、この修正膜電位変数は一時的変数である。
各エントリに対し、全スパイクが組み込まれ、漏れ率が適用された後、コンパレータは、修正膜電位変数が、前記エントリ中に維持された閾値パラメータThを超えているかいないかを判定することができる。閾値パラメータThを超えている場合、エンコーダは、スパイクを生成し、生成されたスパイクをスパイク・イベント・パケットにカプセル化/符号化することが可能である。膜電位変数Vは、それを前記エントリに書き戻す前に、ゼロにリセットされてよい。
以下に示すいくつかの実施形態において、メモリ110は、メモリ110が、第一メモリ、第二メモリ、第三メモリなどを含むように割り当てることが可能である。
例えば、メモリ110は、複数のメモリ・アレイを含んでよく、第一メモリ・アレイは、複数のニューロン11(すなわち、シナプス・クロスバー)についてのシナプス接続関係情報を維持し、第二メモリ・アレイは、ニューロン11に対するニューロン・パラメータを維持し、第三メモリ・アレイは、軸索バッファを含み、第四メモリ・アレイは、ニューロン11についての経路制御データ情報を維持する。
例えば、ここで図4を参照すると、様々な実施形態による、多重ニューラル・コア回路の複数の可能なメモリ構成が示されている。オプションとして、これらのメモリ構成は、他の諸図を参照して説明したものなど、本明細書に記載の任意の他の実施形態からの特徴と連関させて実装することができる。但し、当然ながら、かかるメモリ構成、および本明細書で提示する他の諸事項は、本明細書に記載の例示的な実施形態中で具体的に説明されていても、または説明されていなくてもよい様々な応用もしくは置き換えまたはその両方で用いられることができる。さらに、本明細書で提示するメモリ構成は、任意の所望の環境中で用いることが可能である。
一実施形態において、メモリ構成500は、シナプス・クロスバー110bおよびメモリ110cを含み、メモリ110cは、それがニューロン・パラメータ512、ニューロン宛先位置514、およびニューロン膜電位516を含むように割り当てられている。シナプス・クロスバー110bは、ウェイト・マトリックスW中に、コア10のシナプス31のシナプス・ウェイトを格納する。前に述べたように、マトリックスWの要素Wijは、クロスバーの行/軸索パスi、且つ列/樹状突起パスjに位置するシナプス31のシナプス・ウェイトを表す。オプションとして、メモリ構成500のニューロン・パラメータ512は、シナプス・クロスバー110bに接続された各ニューロン11に対し、スパイク閾値(Th)漏れ率(Lk)、および各該当の軸索型(Syn0、Syn1、Syn2)のウェイトのうちの1つ以上を含んでよい。さらに、メモリ構成500のニューロン宛先位置514は、シナプス・クロスバー110bに接続された各ニューロン11に対し、ニューロン11の宛先軸索または標的軸索を含むことができる。さらにまた、メモリ構成500のニューロン膜電位516は、シナプス・クロスバー110bに接続された各ニューロン11に対し、膜電位変数(V)を含むことが可能で、この膜電位は、発信元興奮性ニューロンからの入力が受信されたときに増大し、発信元抑制性ニューロンからの入力が受信されたとき低減する、単一またはマルチビット状態を含む。
構成500によって示されるように、ニューラル・コア回路100は、各時間ステップが単一のサブ時間ステップだけを含むように、1(T=1)の時分割倍数を使って作動するように構成されてもよい。言い換えれば、ニューラル・パラメータ、ニューロン宛先位置、およびニューロン膜電位は、2つ以上のサブ時間ステップの間で共有されることはない。
様々な実施形態において、シナプス・クロスバー110bおよびメモリ110cのサイズは、ニューロシナプティック・コア中の軸索およびニューロンの数(A×N)と、格納されるニューロン・パラメータ、ニューロン宛先位置、およびニューロン膜電位の数とに基づけばよい。例えば、ニューロシナプティック・コアが、256軸索×256ニューロンのアレイを含む一実施形態では、シナプス・クロスバー110bは、256b×256bのメモリの配置を含んでよい。さらに、かかる実施形態では、メモリ構成500は、ニューロン・パラメータ512が256b×102bのメモリのアレイを含み、ニューロン宛先位置514が256b×32bのメモリのアレイを含み、ニューロン膜電位516が256b×20bのメモリのアレイを含んでよい。したがって、かかる実施形態では、メモリ構成500のシナプス・クロスバー110bおよびメモリ110cは、併せて256b×410bのメモリのアレイを含む。
別の実施形態において、メモリ構成502は、シナプス・クロスバー110bおよびメモリ110cを含み、メモリ110cは、それがニューロン・パラメータ512と、ニューロン宛先位置514と、Tセットのニューロン膜電位516を含むように割り当てられている。Tセットのニューロン膜電位516は、ニューラル・コア回路100の電子ニューロンに対するニューロン膜電位を、Tのパーティションの各々がTのサブ時間ステップのうちの1つに対する複数の電子ニューロンのニューロン膜電位を格納するように、含む。
図4に示されるように、T=4であり、構成502は、時間ステップの4つのサブ時間ステップに対する4セットのニューロン膜電位516を含むが、当然のことながら、Tは任意の数に等しくてよい。例えば、他の実施形態では、Tは、2、8、16、64などに等しくてよい。メモリ構成502において、シナプス・クロスバー110bのシナプス・ウェイト、ニューロン・パラメータ512、およびニューロン宛先位置514は、Tのサブ時間ステップに亘って共有が可能であるが、Tのサブ時間ステップの各々は、ニューロン膜電位516の相異なるセットに関連付けられる。前述のように、メモリ構成502は、単一のニューラル・コア回路が、シナプス・ウェイト、ニューロン・パラメータ、およびニューロン宛先位置は諸サブ時間ステップに亘って共用されるが、各サブ時間ステップはニューロン膜電位516の相異なるセットに関連付けられるような仕方で、時間ステップのTのサブ時間ステップに時間多重化されることを可能にする。これは、単一の物理コア10が、或る時間ステップの間、4つのコアとして動作し、この4つの模擬的コアの各々がそれ自体の独自のニューロン膜電位を有することを可能にする。
前に述べたように、一実施形態において、シナプス・クロスバー110bは、256b×256bのメモリの配置を含んでよい。さらに、メモリ構成502は、ニューロン・パラメータが256b×102bのメモリのアレイを含み、ニューロン宛先位置514が256b×32bのメモリのアレイを含み、Tセットのニューロン膜電位516がT×(256b×20bのアレイ)を含むように構成されてよい。したがって、T=4の場合、メモリ構成502のシナプス・クロスバー110bおよびメモリ110cは、併せて、256b×(256+102+32+T×(20))b、または256b×470bのメモリのアレイを含む。メモリ構成502を含むように構成されたニューラル・コア回路100は、単一の時間ステップにおいて、同じシナプス・ウェイト、ニューロン・パラメータ、およびニューロン宛先位置を備えるが各サブ時間ステップの間に追跡された相異なるニューロン膜電位を備える4つの別個のニューラル・コア回路100と同じ数のスパイク計算を実行する能力がある。
さらに別の実施形態において、メモリ構成504は、シナプス・クロスバー110bおよびメモリ110cを含み、メモリ110cは、それがニューロン・パラメータ512、Tセットのニューロン宛先位置514、Tセットのおよびニューロン膜電位516を含むように割り当てられている。Tセットのニューロン宛先位置514は、ニューラル・コア回路100の複数の電子ニューロンに対するニューロン宛先位置を、Tのパーティションの各々が、Tのサブ時間ステップの1つに対する複数の電子ニューロンのニューロン宛先を格納するように、含む。さらに、Tセットのニューロン膜電位516は、ニューラル・コア回路100の複数の電子ニューロンに対するニューロン膜電位を、Tのパーティションの各々がTのサブ時間ステップの1つに対する複数の電子ニューロンのニューロン膜電位を格納するように、含む。
図4に示されるように、T=4であり、構成504は、時間ステップの4つのサブ時間ステップに対する、4セットのニューロン宛先位置514、および4セットのニューロン膜電位516を含むが、但し当然のことながらTは任意の数に等しくてよい。例えば、他の実施形態では、Tは、2、8、16、64などに等しくてよい。メモリ構成504において、シナプス・クロスバー110bのシナプス・ウェイト、およびニューロン・パラメータ512は、Tのサブ時間ステップに亘って共有が可能であるが、Tのサブ時間ステップの各々は、ニューロン宛先位置514の相異なるセットおよびニューロン膜電位516の相異なるセットに関連付けられる。前述のように、メモリ構成504は、単一のニューラル・コア回路が、シナプス・ウェイト、およびニューロン・パラメータ512は諸サブ時間ステップに亘って共用されるが、各サブ時間ステップがニューロン宛先位置514の相異なるセットおよびニューロン膜電位516の相異なるセットに関連付けられるような仕方で、時間ステップのTのサブ時間ステップに時間多重化されることを可能にする。これは、単一の物理コア10が、或る時間ステップの間、4つのコアとして動作し、この4つの模擬的コアの各々がそれ自体の独自のニューロン宛先位置およびニューロン膜電位を有することを可能にする。
前に述べたように、一実施形態において、シナプス・クロスバー110bは、256b×256bのメモリ配置を含むことが可能である。さらに、かかる実施形態では、メモリ構成504は、ニューロン・パラメータ512が256b×102bのメモリのアレイを含み、Tセットのニューロン宛先位置514がT×(256b×32b)のメモリのアレイを含み、Tセットのニューロン膜電位516がT×(256b×20b)のメモリのアレイを含むように構成することができる。したがって、T=4の場合、メモリ構成504のシナプス・クロスバー110bおよびメモリ110cは、併せて256b×(256+102+T×(32+20))b、または256b×566bのメモリのアレイを含む。メモリ構成504を含むように構成されたニューラル・コア回路100は、単一の時間ステップにおいて、同じシナプス・ウェイトおよびニューロン・パラメータを備えるが各サブ時間ステップの間に追跡された相異なるニューロン宛先位置および相異なるニューロン膜電位を備えた、4つの別個のニューラル・コア回路100と同じ数のスパイク計算を実行する能力がある。
別の実施形態において、メモリ構成506は、シナプス・クロスバー110bおよびメモリ110cを含み、メモリ110cは、それがTセットのニューロン・パラメータ512と、ニューロン宛先位置514と、Tセットのニューロン膜電位516とを含むように割り当てられている。Tセットのニューロン・パラメータ512は、ニューラル・コア回路100の複数の電子ニューロンに対するニューロン・パラメータを、Tのパーティションの各々がTのサブ時間ステップの1つに対する複数の電子ニューロンのニューロン・パラメータを格納するように、含む。さらに、Tセットのニューロン膜電位516は、ニューラル・コア回路100の複数の電子ニューロンに対するニューロン膜電位を、Tのパーティションの各々がTのサブ時間ステップの1つに対する複数の電子ニューロンのニューロン膜電位を格納するように、含む。
図4に示されるように、T=4であり、構成506は、時間ステップの4つのサブ時間ステップに対する、4セットのニューロン・パラメータ512、4セットのニューロン膜電位516を含むが、但し当然のことながら、Tは任意の数に等しくてよい。例えば、他の実施形態では、Tは、2、8、16、64などに等しくてよい。メモリ構成506において、シナプス・クロスバー110bのシナプス・ウェイト、およびニューロン宛先位置514は、Tのサブ時間ステップに亘って共有が可能であるが、Tのサブ時間ステップの各々は、ニューロン・パラメータ512の相異なるセットおよびニューロン膜電位516の相異なるセットに関連付けられる。前述のように、メモリ構成506は、単一のニューラル・コア回路が、シナプス・ウェイト、およびニューロン宛先位置は諸サブ時間ステップに亘って共用されるが、各サブ時間ステップがニューロン・パラメータ512の相異なるセットおよびニューロン膜電位516の相異なるセットに関連付けられるような仕方で、時間ステップがTのサブ時間ステップに時間多重化されることを可能にする。
前に述べたように、一実施形態において、シナプス・クロスバー110bは、256b×256bのメモリの配置を含むことが可能である。さらに、かかる実施形態では、メモリ構成506は、Tセットのニューロン・パラメータ512がT×(256b×102b)のメモリのアレイを含み、ニューロン宛先位置514が256b×32bのメモリのアレイを含み、Tセットのニューロン膜電位516がT×(256b×20b)のメモリのアレイを含むよう構成されてよい。したがって、T=4の場合、メモリ構成506のシナプス・クロスバー110bおよびメモリ110cは、併せて256b×(256+32+T×(102+20))b、または256b×776bのメモリのアレイを含む。メモリ構成506を含むように構成されたニューラル・コア回路100は、単一の時間ステップにおいて、同じシナプス・ウェイトおよびニューロン宛先位置を備えるが各サブ時間ステップの間に追跡された相異なるニューロン・パラメータおよび相異なるニューロン膜電位を備えた、4つの別個のニューラル・コア回路100と同じ数のスパイク計算を実行する能力がある。
さらに別の実施形態において、メモリ構成508は、シナプス・クロスバー110bおよびメモリ110cを含み、メモリ110cは、それがTセットのニューロン・パラメータ512、Tセットのニューロン宛先位置514、およびTセットのニューロン膜電位516を含むように割り当てられている。
図4に示されるように、T=4であり、構成508は、時間ステップの4つのサブ時間ステップに対する、4セットのニューロン・パラメータ512、4セットのニューロン宛先位置514、および4セットのニューロン膜電位516を含むが、但し当然のことながら、Tは任意の数に等しくてよい。例えば、他の実施形態では、Tは、2、8、16、64などに等しくてよい。メモリ構成508において、シナプス・クロスバー110bのシナプス・ウェイトはTのサブ時間ステップに亘って共有されてよい。また一方、Tのサブ時間ステップの各々は、ニューロン・パラメータ512の相異なるセット、ニューロン宛先位置514の相異なるセット、およびニューロン膜電位516の相異なるセットに関連付けられる。前述のように、メモリ構成508は、単一のニューラル・コア回路が、シナプス・ウェイトは諸サブ時間ステップに亘って共用されるが、各サブ時間ステップは、ニューロン・パラメータ512の相異なるセット、ニューロン宛先位置514の相異なるセット、およびニューロン膜電位516の相異なるセットに関連付けられるような仕方で、時間ステップがTのサブ時間ステップに時間多重化されることを可能にする。
前に述べたように、一実施形態において、シナプス・クロスバー110bは、256b×256bのメモリの配置を含むことが可能である。さらに、かかる実施形態では、メモリ構成508は、Tセットのニューロン・パラメータ512がT×(256b×102b)のメモリのアレイを含み、Tセットのニューロン宛先位置514がT×(256b×32b)のメモリのアレイを含み、Tセットのニューロン膜電位516がT×(256b×20b)のメモリのアレイを含んでよい。したがって、T=4の場合、メモリ構成508のシナプス・クロスバー110bおよびメモリ110cは、併せて256b×(256+T×(102+32+20))b、または256b×872bのメモリのアレイを含む。メモリ構成508を含むように構成されたニューラル・コア回路100は、単一の時間ステップにおいて、同じシナプス・ウェイトを備えるが各サブ時間ステップの間に追跡された相異なるニューロン・パラメータ、相異なるニューロン宛先位置、および相異なるニューロン膜電位を備えた、4つの別個のニューラル・コア回路100と同じ数のスパイク計算を実行する能力がある。
さらに別の実施形態において、メモリ構成510は、シナプス・クロスバー110bおよびメモリ110cを含み、メモリ110cは、それがニューロン・パラメータ512、およびニューロン宛先位置514を含むように割り当てられている。メモリ構成510において、メモリ110は、シナプス・ウェイト、ニューロン・パラメータ512、およびニューロン宛先位置514が時間ステップのサブ時間ステップに亘って共有され、ニューロン膜電位は追跡されないように構成されている。メモリ構成510を実装するニューラル・コア回路100では、ニューロン膜電位は保存されない。結果として、かかるニューラル・コア回路100は、膜電位と閾値とを比較することがなく、接続された軸索から入力が受信されたときは何時でもスパイクすることが可能である。
本明細書で説明した図4のメモリ構成500〜510を考慮すれば、当然のことながら、ニューラル・コア回路100は、Nのニューロン状態またはN×Tのニューロン状態、Nの膜電位またはN×Tの膜電位、Nのニューロン・パラメータまたはN×Tのニューロン・パラメータ、およびNのニューロン宛先位置またはN×Tのニューロン宛先位置、の任意の組み合せに構成することが可能であって、このNはニューラル・コア回路100のニューロンの数であり、Tは時分割の倍数(すなわち、サブ時間ステップの総数)である。さらに、図4のメモリ構成500〜510の各々において、相互接続ネットワークまたはシナプス・クロスバー110bは、Tのサブ時間ステップに亘ってニューラル・コア回路100の電子ニューロン11によって共有されるシナプス・ウェイトを格納する。さらにまた、図4のメモリ構成500〜510の各々では、ニューラル・コア回路100は、軸索のバッファ保存のためのメモリを含んでよく、各軸索は、Tに基づいて区分化または編成された軸索バッファに関連付けられる。
図5〜7は、一実施形態による、多重ニューロシナプティック・コア・モジュール610の効率性を示す。オプションとして、多重ニューロシナプティック・コア・モジュールは、他の諸図を参照して説明したものなど、本明細書に記載の任意の他の実施形態からの特徴と連関させて実装することが可能である。但し、当然のことながら、かかる多重ニューロシナプティック・コア・モジュール610、および本明細書で提示された他の諸事項は、本明細書に記載の例示的な実施形態中で具体的に説明されていても、または説明されていなくてもよい様々な応用もしくは置き換えまたはその両方で用いることができる。さらに、本明細書で提示する多重ニューロシナプティック・コア・モジュール610は、任意の所望の環境中で用いることが可能である。
ここで図5を参照すると、4つのニューロシナプティック・コア・モジュール10(10a、10b、10c、および10d)が、多重化されていない仕方で別々に動作しているのが示されている。一実施形態において、これら4つのニューロシナプティック・コア・モジュール10は、図2のコンテキストで説明したチップ構造体70のように、全部を同一のチップ上に配置することができる。さらに、これらコア10の各々は、複数の軸索15を含んで示されている。具体的には、コア10aは軸索15aを含み、コア10bは軸索15bを含み、コア10cは軸索15cを含み、コア10dは軸索15dを含む。同様に、これらコア10の各々は、複数のニューロン11を含んで示されている。具体的には、コア10aはニューロン11aを含み、コア10bはニューロン11bを含み、コア10cはニューロン11cを含み、コア10dはニューロン11dを含む。さらに、図5の各軸索15では、各コア10が軸索15と同じ数の軸索バッファ605を含むように、独立した軸索バッファ605(例えば、軸索バッファ605a、605b、605c、・・・605n)と通信しているのが示されている。
図5に示されるように、コア10a〜10dのシナプス・クロスバー12a〜12dは、それぞれ同じ仕方で構成されている。言い換えれば、コア10a〜10dのそれぞれのシナプスは、マトリックスWおよびマトリックスWの要素Wijが、コア10a〜10dの各々に対して同じとなるように構成されている。したがって、コア10aの任意の所与の軸索に対し受信されたスパイク・イベントは、コア10b〜10dの1つの対応する軸索の1つが当該スパイク・イベントを受信したとすれば、コア10b〜10dの何れかによって出力されたであろうスパイク・イベントを、コア10aに出力させることになる。
ここで図6を参照すると、一実施形態による、多重ニューロシナプティック・コア・モジュール(またはコア)610が示されている。多重コア610は、複数のニューロン611と通信している複数の電子軸索615を含む。軸索615の各々は、多重コア610のシナプス・クロスバー612のシナプスを介してニューロン611の1つ以上に選択的に連結することが可能である。さらに、多重コア610のシナプス・クロスバー612が、それぞれ、図5のコア10a〜10dのシナプス・クロスバー12a〜12dと同じ仕方で構成されているのが示されている。言い換えれば、多重コア610のそれぞれのシナプスは、マトリックスWおよびマトリックスWの要素Wijが、コア10a〜10dの各々に対して同じとなるように構成されている。
またさらに、図6に示されるように、単一の軸索バッファ605は、図5の4つの対応する軸索バッファ605中に従前に格納されていたファイアリング・イベントをバッファ保存することができる。例えば、多重コア610の軸索バッファ605aは、図5のコア10a〜10dの4つの異なる軸索バッファ605aによって格納されたであろうファイアリング・イベントをバッファ保存する。同様に、多重コア610の軸索バッファ605bは、図5のコア10a〜10dの4つの異なる軸索バッファ605bによって格納されたであろうファイアリング・イベントをバッファ保存する、等々があろう。所与の軸索615に関して、軸索バッファ605は、所与の時間ステップの相異なるサブ時間ステップのファイアリング・イベントをインターリーブする方式で構成され/読み取られてよい。
例えば、図6を参照すると、軸索バッファ605にバッファ保存されたファイアリング・イベントは、4つの異なる時間ステップ(すなわち、バッファ605の各々は、各時間ステップに対し1つの、4つのユニット幅である)の4つのサブ時間ステップの1つ(すなわち、サブ時間ステップ0、サブ時間ステップ1、サブ時間ステップ2、またはサブ時間ステップ3)に関連付けて識別されている。多重コア610のオペレーションの過程で、サブ時間ステップ0に関連付けられた軸索バッファ605a中の第一イベントを処理することができ、次いで、サブ時間ステップ1に関連付けられた軸索バッファ605a中の第一イベントを処理することができ、次いで、サブ時間ステップ2に関連付けられた軸索バッファ605a中の第一イベントを処理することができ、次いで、サブ時間ステップ3に関連付けられた軸索バッファ605a中の第一イベントを処理することができ、次に(シフトした後)、別の時間ステップのサブ時間ステップ0に関連付けられた軸索バッファ605a中の第一イベントを処理することができる、等々である。
図7に示されるように、メモリ650は、多重コア610の軸索615の各々に関連付けられた軸索バッファ605を含んでよい。メモリ650は、図3のコンテキストで前に説明したメモリ110aと実質的に同一であってよい。メモリ650の幅は、メモリ650が情報を格納する対象のコアのサイズに基づいてよい。一実施形態において、メモリ650は、多重コア610の256の軸索をバッファ保存するため256b幅である。メモリ650が情報を格納する対象の時間ステップ(Δ)/サブ時間ステップの数は、メモリ650の高さに依存し得る。例えば、メモリ650は、(T×max(Δ))ビットの高さを有し、このΔは時間ステップの数であり、Tは時分割の倍数である。図示のように、メモリ650は、Δの時間ステップの各々に対するTのサブ時間ステップをバッファ保存する。これにより、メモリ650の各行は単一のサブ時間ステップに関連付けられ、メモリ650の1b幅の各列が単一の軸索に関連付けられる。このように、メモリ650は、T×max(Δ)の行に分割された軸索バッファ・メモリを含むことができ、このmax(Δ)は時間ステップの最大数である。
しかして、Tおよびmax(Δ)は、メモリ650の所与のサイズに対して直接に関係付けられる。例えば、128行の深さまたは高さを備えたメモリ650は、T=64且つmax(Δ)=2、T=32且つmax(Δ)=4、T=16且つmax(Δ)=8、T=8且つmax(Δ)=16、T=4且つmax(Δ)=32、T=2且つmax(Δ)=64、またはT=1且つmax(Δ)=128であるように構成することができる。
一実施形態において、多重ニューロシナプティック多重コア610は、次のような仕方で動作することができる。Tのサブ時間ステップの各々(サブ時間ステップ0からサブ時間ステップT−1まで)内で、同期的に、当該軸索が搬送の必要のあるスパイクを有するかどうかを判断するために各軸索itをチェックする。当該軸索が搬送の必要のあるスパイクを有する場合、次いで、あらゆるニューロンjtに対し、シナプス・ウェイトsijの関数としてニューロンの状態を更新する。当該軸索が搬送の必要のあるスパイクを有するかどうかを判断するために各軸索をチェックした後、次いで、あらゆるニューロンjtに対し、その以前の状態とそのパラメータとその入力との関数として、その新規ニューロン状態を計算し、次いでその新規ニューロンがスパイクしたかどうかをチェックする。所与のニューロンがスパイクしていた場合、次いで、そのニューロンの宛先位置をルックアップし、その宛先位置に宛てたスパイク・イベント・パケットを生成し、そのスパイク・イベント・パケットをニューロシナプティック・ネットワーク上で送信し、ニューロンjtの状態をリセットする。さらにまた、多重ニューロシナプティック・コア610は、ニューロシナプティック・ネットワークからスパイク・イベント・パケットを受信するため非同期的に動作することができ、軸索バッファを更新できる。
別の実施形態において、多重ニューロシナプティック・コア610は、次のような仕方で動作することができる。Tのサブ時間ステップの各々(サブ時間ステップ0からサブ時間ステップT−1まで)内で、同期的に、あらゆるニューロンjに対し、ニューロンjの状態、ニューロンjのニューロン・パラメータ、およびニューロンjの宛先位置を読み取る。次に、新規のニューロン状態を決めるために、(当該ニューロンに接続されている諸軸索からの)シナプス入力の並列和を前の状態に加算する。これは、n0が前のニューロン状態でありn1が新規のニューロン状態であり、gが軸索型のidであり、Aが軸索バッファであり、kが軸索型の数であり、wがニューロンj上の軸索型kに関連付けられたウェイトであるとすれば、下記の式として計算することができる。
次に、新規のニューロン状態がスパイクをトリガするかどうかがチェックされる。新規のニューロン状態がスパイクをトリガする場合、次いで、そのニューロンの宛先位置ルックアップし、その宛先位置に宛てたスパイク・イベント・パケットを生成し、そのスパイク・イベント・パケットをニューロシナプティック・ネットワーク上で送信し、ニューロンjの状態をリセットする。かかる実施形態において、多重ニューロシナプティック・コア610は、ニューロシナプティック・ネットワークからスパイク・イベント・パケットを受信するため非同期的に動作することができ、軸索バッファを更新できる。
1つ以上のニューロン属性またはパラメータを共有することにより、ニューロシナプティック・チップ上に見られるニューロンおよび軸索の繰り返しのネットワークは、該チップ上のより少ない数のコアにローカライズすることができる。結果として、ニューロシナプティックの所与の収集の計算は、多重化のないコアよりもニューロシナプティック・チップ上の少ない物理スペースもしくは少ない電力またはその両方を必要とし得る。
ニューロシナプティック・コア回路のより高速な動作を達成するために、ニューロンの更新は、例えば専用の乗算回路を使って並列実施することが可能である。軸索バッファは、タイム・スタンプもしくは時間遅延またはその両方を使って用いることができる。
チップのニューロシナプティック・コアの多重化の結果として、1つのチップが、可動性と拡張性との間の線引きを可能にし、両者の間で漸近的にトレードしながら面積および電力効率の最高値を達成することができる。さらに、多重ニューロシナプティック・コアは、均質的なアーキテクチャにおいてスペースインバリアントおよびスペースバリアントなカーネルをミックスアンドマッチする能力を備え、なすべき作業がない場合は動的エネルギを浪費することなく、所与の電力予定量に対し所与のチップを最適化することを可能にする。また一方、最適の指標が動作の速度(スループット、待ち時間など)である場合には、次いで、チップは、(所与のアーキテクチャにおいて指定された速度指標が達成可能なことを前提として)最少のリソース割り当て、または最少の電力消費で、必要な速度のために最適化することができる。また、このチップは、(複数のアプリケーションがサイド・バイ・サイドで同一のチップ上で実行される場合)所与のアプリケーションに対し最小のリソース割り当てをするように最適化ことが可能である。さらに、かかる最適化は、チップ全体の再構成フェーズ(静的な最適化/再構成)において、または動作フェーズの間での部分的再構成能力(動的な最適化/再構成)を用いて実施することができる。これらの概念は、チップレベルの最適化に対してだけでなく、システム全体に亘る最適化に対しても適用される。
これらによって、いくつかの実施形態では、ニューロシナプティック・ネットワークが複数の多重コア610を含んでよい。さらに、全部の多重コア610を、同じ時分割倍数によって多重化しなくてもよい。例えば、第一多重コア610は、第一時分割倍数(T)によって多重化することができ、第一多重コア610のニューロン・パラメータ、ニューロン宛先位置、およびニューロン膜電位のうちの1つ以上を、時間ステップのTのサブ時間ステップに亘って共有してよい。さらに、第一多重コア610のニューロン・パラメータ、ニューロン宛先位置、およびニューロン膜電位を格納しているメモリの1つ以上をTのパーティションに分割することが可能で、これらTパーティションの各々は、時間ステップのTのサブ時間ステップの対応する1つに関連付けられる。加えて、第二多重コア610は、第二時分割倍数(U)によって多重化することができ、第二多重コア610のニューロン・パラメータ、ニューロン宛先位置、およびニューロン膜電位のうちの1つ以上を、時間ステップのUのサブ時間ステップに亘って共有してよい。さらにまた、第二多重コア610のニューロン・パラメータ、ニューロン宛先位置、およびニューロン膜電位を格納しているメモリの1つ以上をUのパーティションに分割することが可能で、これらUパーティションの各々は、時間ステップのUのサブ時間ステップの対応する1つに関連付けられる。最後に、Tは、Uと等しくてもそれより大きくても小さくてもよい。
例えば、第一多重コア610は、4の時分割倍数(T=4)によって多重化することが可能である。これにより、シナプス・ウェイト、ニューロン・パラメータ、およびニューロン宛先位置は、各時間ステップの4つのサブ時間ステップに亘って共有できるが、一方、第一多重コア610に対するニューロン膜電位を格納するメモリは4つのパーティションに分けることが可能で、これら4つのパーティションの各々は各時間ステップの4つのサブ時間ステップのうちの対応する1つに関連付けられる。第二多重コア610は第一多重コア610と通信しており、第二コアは8の時分割倍数(U=8)によって多重化されている。第二多重コア610に対し、シナプス・ウェイト、ニューロン・パラメータ、およびニューロン宛先位置は、各時間ステップの8つのサブ時間ステップに亘って共有できるが、一方、第二多重コア610に対するニューロン膜電位を格納するメモリは8つのパーティションに分けることが可能で、これら8つのパーティションの各々は各時間ステップの8つのサブ時間ステップのうちの対応する1つに関連付けられる。当然のことながら、第一多重コア610および第二多重コアの各々は、任意の時分割倍数(例えば、1、2、4、8、16、32、64など)によって多重化されてよい。
第一時分割倍数によって多重化された第一コア610と、第一時分割倍数とは異なる第二時分割倍数によって多重化された第二コア610と間におけるファイアリング・イベントまたはスパイク・イベントは、空間分布された入力をサブ時間ステップにマップすることによって架橋することができる。
具体的に、スパイク・イベントは、時間ステップのTのサブ時間ステップに多重化された第一多重ニューラル・コアで、そのスパイク・イベントに対するパケットを生成することによって多重コア間で送られることが可能である。さらに、このパケットは、少なくとも1つのニューラル・コア・アドレス・フィールドと、時間ステップと、軸索アドレスと、時間尺度およびオフセットのうちの少なくとも1つと、を含む。次いで、第一多重ニューラル・コアは、第二ニューラル・コアがスパイク・イベントを受信するようにそのスパイク・イベント・パケットを伝送する。第二ニューラル・コアは、第一多重ニューラル・コアとは異なる時分割倍数によって多重化されていてもよい。例えば、第二ニューラル・コアは、時間ステップの各々に対しUのサブ時間ステップによって多重化されていてよく、このUはTよりも大きいかまたは小さい。
一実施形態において、このパケットの上記少なくとも1つのニューラル・コア・アドレス・フィールドは、(dx+dxt)フィールドもしくは(dy+dyt)フィールドまたはその両方を含むことができる。例えば、このパケットの該少なくとも1つのニューラル・コア・アドレス・フィールドは、(dx+dxt,dy+dyt)を含むようにフォーマットすることが可能である。オプションとして、dxtおよびdytの各々は、ceil(log2N)ビットである。さらに、dxtおよびdytの各々は、コア毎、サブ時間ステップ毎にプログラム可能である。様々な実施形態において、dxおよびdyのアドレス・フィールドは、ニューラル・ネットワークのX座標およびY座標のそれぞれにおけるオフセットを提供する。オプションとして、パケットは最初にX次元に、次いでY次元について経路設定されてよい。さらにまた、パケット中に包含された軸索アドレスは、スパイクが搬送される対象の宛先ニューラル・コア中の電子軸索のアドレスを含むことが可能である。
一実施形態において、パケットは、時間尺度を含むがオフセットは含まない。時間尺度は、定数Fによって表すことができ、このFは、小さい方の時分割倍数で動作しているニューラル・コアの時分割倍数への縮尺数である。時間尺度(F)は、より大きな時分割倍数で動作しているニューラル・コア(より速いコア)から、より小さな時分割倍数で動作しているニューラル・コア(より遅いコア)にスパイク・イベントを送信するときに使うことができる。時間尺度(F)がパケットに含まれている場合には、オフセットはそのパケットには含まれない。例えば、T=8の多重コアからT=4の多重コアにスパイク・イベント・パケットが送信される場合、F=4で、オフセットは=0かまたは含まれない。
また、dxtおよびdytビットも、より大きな時分割倍数で動作しているニューラル・コア(より速いコア)から、より小さな時分割倍数で動作しているニューラル・コア(より遅いコア)にスパイク・イベントを送信するときに用いることができ、このdxtおよびdytビットは、より遅いコアからより速いコアへ送信されるパケットには含まれない。
別の実施形態において、パケットはオフセットを含むが時間尺度は含まない。このオフセットは、定数Cで表すことができ、このCは、スパイク・イベントをより速いコアのサブ時間ステップ中にマップするオフセットである。しかして、オフセット(C)は、より小さな時分割倍数で動作しているニューラル・コア(より遅いコア)から、より大きな時分割倍数で動作しているニューラル・コア(より速いコア)にスパイク・イベントを送信するときに使うことができる。さらに、Cがパケットに含まれている場合には、時間尺度定数(F)は0に等しいかまたはそのパケットには含まれなくてもよい。このように、CおよびFの両方の定数は、スパイク・イベントが相異なる時分割倍数のコアの間で伝送される場合に、スパイク・イベントを搬送するためのサブ時間ステップを定義するために使うことができる。
例えば、第一多重ニューラル・コアが、各時間ステップに対しTのサブ時間ステップで多重化され、第二多重ニューラル・コアが、各時間ステップに対しUのサブ時間ステップで多重化され、TがUよりも小さい場合、より遅いコアからより速いコアに送信されるパケットは、スパイク・イベントの搬送をより速いコアの適切なサブ時間ステップにマップするためのオフセット(C)を含むことになる。
一特定の実施形態において、スパイク・イベント・パケットは、(dx+dxt,dy+dyt、C+(t%F)、Δ、軸索アドレス)としてフォーマットすることが可能で、この%はモジュロ演算子であり、Δは時間ステップである。これらにより、このパケットは、サブ時間ステップC+(t%F)のΔの遅延の後、軸索アドレスの軸索で、ニューラル・コア(dx+dxt,dy+dyt)に搬送されることができる。
図8A〜8Bは、一実施形態による、ニューロシナプティック・コアの間の、スパイク・イベントの経路制御を示す。オプションとして、このスパイク・イベントの経路制御は、他の諸図を参照して説明したものなど、本明細書に記載の任意の他の実施形態からの特徴と連関させて実装することができる。但し、当然ながら、このスパイク・イベントの経路制御のためのシステムおよび方法は、本明細書に記載の例示的な実施形態中で具体的に説明されていても、または説明されていなくてもよい様々な応用もしくは置き換えまたはその両方で用いることができる。さらに、本明細書で提示するスパイク・イベントを経路制御するシステムおよび方法は、任意の所望の環境中で用いることが可能である。
ここで図8Aを参照すると、ニューラル・コア回路702、704、706、および708は、それぞれ、1の時分割倍数を使って、コア702、704、706、および708の各々が各時間ステップ(Δ)に対し1回作動するように動作している。コア702、704、706、および708は、在来型の多重化なしのニューロシナプティック・コアであってよい。コア702、704、706、および708の各々のニューロンからの出力は、多重ニューラル・コア回路710に伝送されるスパイク・イベント(すなわちファイアリング・イベント)をもたらすように構成される。図8Aに示されるように、多重ニューラル・コア710は、4の時分割倍数を用い、時間ステップ(Δ)ごとに4回作動するように動作している。
したがって、コア702、704、706、および708と、多重コア710との間での通信を可能にするため、コア702、704、706、および708の各々は、相異なるC値を割り当てられている。各C値は、受信されたスパイク・イベントをより速いコア(すなわちコア710)のサブ時間ステップ中にマップするサブ時間ステップのオフセットである。したがって、コア702に対してはC=0であり、コア702から受信されたスパイク・イベントは、多重コア710の第一サブ時間ステップの中にマップされる。コア704に対してはC=1であり、コア704から受信されたスパイク・イベントは、多重コア710の第二サブ時間ステップの中にマップされる。コア706に対してはC=2であり、コア706から受信されたスパイク・イベントは、多重コア710の第三サブ時間ステップの中にマップされる。コア708に対してはC=3であり、コア708から受信されたスパイク・イベントは、多重コア710の第四サブ時間ステップの中にマップされる。図8Aおよび8Bの両方において、dxt=0且つdyt=0である。パケットの経路制御は、これらコアの間に配置されたイベント・ルータによって管理することができる。
さらなる別の例として、次いで図8Bを参照すると、多重ニューラル・コア回路752および754は、それぞれ2の時分割倍数を用い、コア752および754の各々が時間ステップ(Δ)ごとに2回作動するように動作している。コア752および754のニューロンは、スパイク・イベント(すなわちファイアリング・イベント)を多重ニューラル・コア回路760に伝送するように構成される。図8Bに示されるように、多重ニューラル・コア回路760は、4の時分割倍数を用い、時間ステップ(Δ)ごとに4回作動するように動作している。
したがって、多重コア752および754から、多重コア760への通信を可能にするため、コア752および754の各々は相異なるC値を割り当てられている。具体的に、コア752に対してはC=0であり、これは、コア752から受信されたスパイク・イベントが多重コア760の最初の2つのサブ時間ステップ(t=0、t=1)中にマップされる結果をもたらし、また、コア754に対してはC=2であり、これは、コア754から受信されたスパイク・イベントが多重コア760の第三および第四サブ時間ステップ(t=2、t=3)中にマップされる結果をもたらす。結果として、多重コア752および754の両方は、各時間ステップの2つのサブ時間ステップの同一期間の間に計算を実行できるが、コア752および754から送信されるスパイク・イベントはバッファ保存され、順序付けられた矛盾のない仕方で多重コア760に入力される。
図9A〜9Bは、一実施形態による、ニューロシナプティック・コアの間でのスパイク・イベントの経路制御を示す。オプションとして、このスパイク・イベントの経路制御は、他の諸図を参照して説明したものなど、本明細書に記載の任意の他の実施形態からの特徴と連関させて実装することができる。但し、当然ながら、このスパイク・イベントの経路制御のためのシステムおよび方法は、本明細書に記載の例示的な実施形態中で具体的に説明されていても、または説明されていなくてもよい様々な応用もしくは置き換えまたはその両方で用いることができる。さらに、本明細書で提示するスパイク・イベントを経路制御するシステムおよび方法は、任意の所望の環境中で用いることが可能である。
ここで図9Aを参照すると、多重ニューラル・コア回路810は、4の時分割倍数を使って、該回路が時間ステップ(Δ)ごとに4回作動するように動作している。多重コア810が、ニューラル・コア回路802、804、806、および808の各々にスパイク・イベントを伝送しているのが示されており、これらの回路はそれぞれ1の時分割倍数で動作している。言い換えれば、コア802、804、806、および808の各々は、各時間ステップ(Δ)に対し1回動作する。
したがって、多重コア810から、コア802、804、806、および808へのスパイク・イベントの確実な伝送を可能にするため、多重コア810からのパケットは、0のC値および1のF値を含むように構成される。言い換えれば、より遅いコア802〜808の時分割倍数を反映して、かかるパケットの時間尺度は1(F=1)であり、多重コア810は、遅いコア802〜808より速いのでC=0である。さらに、多重コア810からコア802〜808へのスパイク・イベント・パケットが、これらパケットのニューラル・コア・アドレス・フィールド中にdxtフィールドを含んで示されている。具体的に、多重コア810からコア802へのスパイク・イベント・パケットはdxt=0であり、該パケットが各Δの第一サブ時間ステップにマップされることを示しており、多重コア810からコア804へのスパイク・イベント・パケットはdxt=1であり、該パケットが各Δの第二サブ時間ステップにマップされることを示しており、多重コア810からコア806へのスパイク・イベント・パケットはdxt=2であり、該パケットが各Δの第三サブ時間ステップにマップされることを示しており、多重コア810からコア808へのスパイク・イベント・パケットはdxt=4であり、該パケットが各Δの第四サブ時間ステップにマップされることを示している。
オプションとして、dytは、空間分布をマップするために、dxtの代わりにまたはそれに加えて使用することができる。受信コアの各々は、サブ時間ステップの各々内でペア(dxt,dyt)として符号化されてよい。dxtおよびdytの値は、例えばプログラマなどによって事前設定することが可能である。{(dxt,dyt)、t=1,2,・・・,T}のセットはおおよそでよい。
次いで図9Bを参照すると、多重ニューラル・コア回路860は、4の時分割倍数を用い、時間ステップ(Δ)ごとに4回作動するように動作している。多重コア860が、多重ニューラル・コア回路852および854の各々にスパイク・イベントを伝送しているのが示されており、これら回路はそれぞれ2の時分割倍数で動作している。言い換えれば、コア852および854の各々は、各時間ステップ(Δ)に対し2回動作する。
したがって、多重コア860から、コア852および854へのスパイク・イベントの確実な伝送を可能にするため、多重コア860からのパケットは、0のC値(C=0)および2のF値(F=2)を含むように構成される。言い換えれば、パケットを受信する、より遅いコア852および854の時分割倍数を反映して、かかるパケットの時間尺度は2(F=2)であり、多重コア860は、遅いコア852および854より速いのでC=0である。さらに、多重コア860から多重コア852および854へのスパイク・イベント・パケットが、これらパケットのニューラル・コア・アドレス・フィールド中にdxtフィールドを含んで示されている。具体的に、多重コア860から多重コア852へのスパイク・イベント・パケットはdxt=0であり、該パケットが各Δの第一サブ時間ステップにマップされることを示しており、多重コア860から多重コア854へのスパイク・イベント・パケットはdxt=1であり、該パケットが各Δの第二サブ時間ステップにマップされることを示している。
一実施形態において、多重ニューラル・コア回路は、ゼロより大きい整数多重化倍数Tに対し、Tセットの電子ニューロン、Tセットの電子軸索を含むことができ、Tセットの電子軸索の各セットは、Tセットの電子ニューロンの1つに対応し、シナプス相互接続ネットワークは、各々が単一の電子軸索を単一の電子ニューロンに相互接続している、複数の電子シナプスを含み、この相互接続ネットワークは、Tセットの電子軸索の各セットをそれが対応する電子ニューロンのセットに相互接続する。
さらに、一実施形態において、シナプス相互接続ネットワークは、Tセットの電子ニューロンに亘って共有されてよい。別の実施形態では、複数のニューロン・パラメータが、Tセットの電子ニューロンに亘って共有されてよい。さらに別の実施形態においては、複数のニューロン宛先位置が、Tセットの電子ニューロンに亘って共有されてよい。またさらなる別の実施形態においては、ニューロン状態が、Tセットの電子ニューロンに亘って共有されてよい。
さらに、一実施形態において、多重ニューラル・コア回路のオペレーションは、複数の個別時間ステップに関連させて表すことができ、単一の個別時間ステップ内で、Tセットの電子軸索の各セットは、シナプス相互接続ネットワークを介して、それが対応する電子ニューロンのセットに相互接続されてよい。別の実施形態において、複数の個別時間ステップの各々はTのサブ時間ステップに分割することが可能で、Tセットの電子軸索の各セットおよびそれが対応する電子ニューロンのセットに、これらTのサブ時間ステップの1つを割り当てることができ、これらTセットの電子軸索の各セットは、シナプス相互接続ネットワークを介して、これらに割り当てられたTのサブ時間ステップの1つ内のそれが対応する電子ニューロンのセットに相互接続することが可能である。
さらにまた、一実施形態において、多重ニューラル・コア回路は、2つの個別メモリ・バンクをさらに含んでよく、該2つの個別メモリ・バンクは、シナプス相互接続ネットワークと、複数のニューロン・パラメータと、複数のニューロン宛先位置と、Tセットの電子ニューロン内の全電子ニューロンについてのニューロン状態と、を包含する第一メモリ・バンク、および電子軸索バッファ・メモリを包含する第二メモリ・バンクを含むことが可能である。別の実施形態において、電子軸索バッファ・メモリは、T行×max(Δ)列に分割することができ、このmax(Δ)は時間遅延の数である。
また、一実施形態において、ニューロシナプティック・システムは、ニューロシナプティック・チップと、チップ上のコンポーネントとしての単一コア・ニューロシナプティック・モジュール、またはオンチップ・ネットワークを介して相互接続された複数の多重ニューラル・コア回路を含む、チップ上のコンポーネントとしてのマルチコア・ニューロシナプティック・モジュールとを含むことが可能であり、これら複数の多重ニューラル・コア回路のそれぞれは、ゼロより大きい整数多重化倍数Tに対し、Tセットの電子ニューロンと、Tセットの電子軸索であってこれらTセットの電子軸索の各セットはTセットの電子ニューロンの1つに対応する、該Tセットの電子軸索と、各々が単一の電子軸索を単一の電子ニューロンに相互接続する複数の電子シナプスを含むシナプス相互接続ネットワークであって、該相互接続ネットワークは、Tセットの電子軸索の各セットをそれが対応する電子ニューロンのセットに相互接続する、該相互接続ネットワークと、を含む。
さらに、一実施形態において、ニューロシナプティック・チップと、単一コア・ニューロシナプティック・モジュールまたはマルチコア・ニューロシナプティック・モジュールとは、オフチップ・ネットワークを介して相互接続されてもよい。別の実施形態において、オンチップ・ネットワークはイベント駆動型とすることができる。別の実施形態では、オフチップ・ネットワークはイベント駆動型とすることができる。さらに別の実施形態において、複数の多重ニューラル・コア回路の1つ以上は、該複数の多重ニューラル・コア回路の他の多重ニューラル・コア回路とは異なる整数多重化倍数を有してよい。
さらに、一実施形態において、複数の多重ニューラル・コア回路の第一セットは、第一整数多重化倍数T1を有してよく、該第一セットは、第一整数多重化倍数T1とは異なる第二整数多重化倍数T2を有する多重ニューラル・コア回路の第二セットに接続することができる。別の実施形態において、コア間メッセージは、宛先コアの相対アドレスと、電子軸索の時間遅延と、電子軸索のセットのアドレスと、電子軸索のアドレスと、発信元コアの整数多重化倍数Tsと宛先コアの整数多重化倍数Tdとの間のマッピングを符号化した情報と、を符号化しているスパイク・パケットを含んでよい。
図10は、一実施形態による、ニューロシナプティック・コアを構成するための代表的なハードウェア環境を示す。この図は、マイクロプロセッサなどの中央処理装置210、およびシステム・バス212を介して相互接続されたいくつかの他のユニットを有する、ワークステーションの典型的なハードウェア構成を示す。
図10に示されたワークステーションは、ランダム・アクセス・メモリ(RAM:Random Access Memory)214と、読み取り専用メモリ(ROM:Read Only Memory)216と、ディスク・ストレージ・ユニット220などの周辺デバイスをバス212に接続するためのI/Oアダプタ218と、キーボード224、マウス226、スピーカ228、マイクロフォン232、もしくは、タッチ・スクリーンおよびデジタル・カメラ(図示せず)などの他のユーザインタフェース・デバイス、またはこれらの組み合わせをバス212に接続するためのユーザ・インタフェース・アダプタ222と、ワークステーションを通信ネットワーク235(例えば、データ処理ネットワーク)に接続するための通信アダプタ234と、バス212を表示デバイス238に接続するためのディスプレイ・アダプタ236と、を含む。
このワークステーションは、マイクロソフト・ウィンドウズ(R)オペレーティングシステム(OS:Operating System)、マック(R)OS、ユニックス(R)OSなどの常駐のオペレーティングシステムを有してよい。当然のことながら、好適な実施形態は、上記以外のプラットフォームおよびオペレーティングシステム上にも同様に実装が可能である。好適な実施形態は、オブジェクト指向プログラミング手法に加え、XML、C、もしくはC++言語またはこれらの組み合せあるいは他のプログラミング言語を使って記述することができる。複雑なアプリケーションを開発するためにますます使用されるようになったオブジェクト指向プログラミング(OOP:object oriented programming)を用いてもよい。
本発明は、システム、方法、もしくはコンピュータ・プログラム製品、またはこれらの組み合せとすることができる。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラムをその上に有するコンピュータ可読ストレージ媒体(または媒体群)を含むことが可能である。
このコンピュータ可読ストレージ媒体は、命令実行デバイスによって使用される命令を保持し格納できる有形のデバイスとすることができる。このコンピュータ可読ストレージ媒体は、例えば、以下に限らないが、電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁気ストレージ・デバイス、半導体ストレージ・デバイス、または前述の任意の適切な組み合せであってよい。コンピュータ可読ストレージ媒体のさらに具体的な例の非包括的リストには、携帯型コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読み取り専用メモリ(ROM)、消去およびプログラム可能読み取り専用メモリ(EPROM:erasable programmable read−only memoryまたはフラッシュ・メモリ)、静的ランダム・アクセス・メモリ(SRAM:static random access memory)、携帯型コンパクトディスク読み取り専用メモリ(CD−ROM:compact disc read−only memory)、デジタル多用途ディスク(DVD:digital versatile disk)、メモリ・スティック、フレキシブル・ディスク、パンチカードまたは記録された命令を有する溝中の嵩上げ構造体などの機械的符号化デバイス、および上記の任意の適切な組み合せが含まれる。本明細書で用いられるコンピュータ可読ストレージ媒体は、無線波または他の自由に伝播する電磁波、ウェーブガイドまたは他の伝送媒体を通って伝播する電磁波(例えば、光ファイバを通過する光パルス)、またはワイヤを通って伝送される電気信号など、本質的に一時的な信号として解釈されるべきでない。
本明細書に述べられたコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体からそれぞれのコンピューティング/処理デバイスに、または、例えばインターネット、ローカル・エリア・ネットワーク、広域ネットワークもしくはワイヤレス・ネットワークまたはこれらの組み合せなどのネットワークを介して、外部コンピュータもしくは外部ストレージ・デバイスにダウンロードすることが可能である。このネットワークは、銅伝送ケーブル、光伝送ファイバ、ワイヤレス伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、もしくはエッジ・サーバまたはこれらの組み合せを含んでもよい。それぞれのコンピューティング/処理デバイス中のネットワーク・アダプタ・カードまたはネットワーク・インターフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、そのコンピュータ可読プログラム命令を、ストレージのため、それぞれのコンピューティング/処理デバイス内のコンピュータ可読ストレージ媒体の中に転送する。
本発明のオペレーションを実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA:instruction−set−architecture)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、または、Smalltalk、C++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語もしくは類似のプログラミング言語などの従来式の手続き型プログラミング言語を含む、1つ以上のプログラミング言語の任意の組み合せで記述されたソース・コードもしくはオブジェクト・コードであってよい。このコンピュータ可読プログラム命令は、スタンドアロン・ソフトウェア・パッケージとしてユーザのコンピュータで専ら実行することも、ユーザのコンピュータで部分的に実行することもでき、一部をユーザのコンピュータで一部を遠隔コンピュータで実行することもでき、あるいは遠隔のコンピュータまたはサーバで専ら実行することも可能である。後者の場合は、ローカル・エリア・ネットワーク(LAN:local area network)または広域ネットワーク(WAN:widearea network)を含む任意の種類のネットワークを介して、遠隔コンピュータをユーザのコンピュータに接続することができ、あるいは(例えばインターネット・サービス・プロバイダを使いインターネットを介して)外部のコンピュータへの接続を行うことも可能である。いくつかの実施形態において、例えば、プログラム可能論理回路、フィールドプログラム可能ゲートアレイ(FPGA:field programmable gate array)、またはプログラム可能論理アレイ(PLA:programmable logic array)を含む電子回路は、本発明の諸態様を実行すべく、該電子回路をパーソナライズするためコンピュータ可読プログラム命令の状態情報を利用することによって、該コンピュータ可読プログラム命令を実行することができる。
本発明の諸態様は、本発明の諸実施形態による方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図もしくはブロック図またはその両方を参照しながら本明細書で説明されている。当然のことながら、フローチャート図もしくはブロック図またはその両方の各ブロックと、フローチャート図もしくはブロック図またはその両方のブロックの組み合せとは、コンピュータ可読プログラム命令によって実装することが可能である。
これらのコンピュータ可読プログラム命令を、汎用コンピュータ、特殊用途コンピュータ、またはマシンを形成する他のプログラム可能データ処理装置のプロセッサに供給し、そのコンピュータまたは他のプログラム可能データ処理装置のプロセッサを介して実行されるこれらの命令が、フローチャートもしくはブロック図またはその両方のブロックもしくはブロック群中に特定されている機能群/動作群を実装するための手段を生成するようにすることができる。また、コンピュータ、プログラム可能データ処理装置、もしくは他のデバイスまたはこれらの組み合せに対し特定の仕方で機能するよう命令することが可能なこれらのコンピュータ可読プログラム命令を、コンピュータ可読ストレージ媒体に格納し、格納された命令を有するコンピュータ可読ストレージ媒体が、フローチャートもしくはブロック図またはその両方のブロックまたはブロック群中に特定されている機能/動作の諸態様を実装する命令群を包含する製造品を構成するようにすることができる。
さらに、これらコンピュータ可読プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、または他のデバイスにロードし、そのコンピュータ上で、他のプログラム可能装置上で、または他のデバイス上で一連のオペレーション・ステップを実施させて、当該コンピュータ上で、他のプログラム可能装置上でもしくは他のデバイス上で実行される命令が、フローチャートもしくはブロック図またはその両方のブロックもしくはブロック群中に特定されている機能群/動作群を実装するような実装プロセスをコンピュータに提供するようにすることも可能である。
図面のフローチャートおよびブロック図は、本発明の様々な実施形態による、システム、方法、およびコンピュータ・プログラム製品の可能となる実装のアーキテクチャ、機能性、およびオペレーションを示している。この点に関し、フローチャートまたはブロック図中の各ブロックは、特定の論理機能(群)を実装するための一つ以上の実行可能命令を含む、モジュール、セグメント、または命令の部分を表し得る。いくつかの別の実装においては、ブロック中に記載された機能が、図面に記載された順序から外れて行われ得る。例えば、連続して示された2つのブロックが、関与する機能によっては、実際にはほぼ同時に実行されることがあり、時にはこれらのブロックが逆の順序で実行されることもあり得る。また、ブロック図もしくはフローチャート図またはその両方の各ブロックと、ブロック図もしくはフローチャート図またはその両方中のブロック群の組み合わせとは、特定の機能または動作を実施する特殊用途ハードウェア・ベースのシステムによって実装でき、または特殊用途ハードウェアとコンピュータ命令との組み合わせによって実行できることにも留意する。
さらに、様々な実施形態によるシステムは、プロセッサ、およびプロセッサに一体化された、もしくはプロセッサが実行可能な、またはその両方のロジックを含むことが可能で、このロジックは、本明細書に記載したプロセス・ステップの1つ以上を実行するように構成される。一体化されたとは、プロセッサが、ロジックを、特定用途向け集積回路(ASIC:application specific integrated circuit)、FPGAなどのハードウェア・ロジックとして内蔵していることを意味する。プロセッサが実行可能とは、ロジックが、ハードウェア・ロジックか、ファームウェア、オペレーティングシステムの部分、アプリケーション・プログラムの部分などのソフトウェア・ロジックか、など、またはプロセッサがアクセス可能で、プロセッサが実行すると該プロセッサに何らかの機能を行わせるように構成されたハードウェアとソフトウェアとの何らかの組み合せか、であることを意味する。ソフトウェア・ロジックは、当該技術分野で周知の任意のメモリ種類の、ローカルもしくは遠隔のまたはその両方のメモリに格納されてよい。たとえば、ソフトウェア・プロセッサ・モジュール、もしくは、ASIC、FPGA、中央処理装置(CPU:central processing unit)、集積回路(IC:integrated circuit)、グラフィックス処理装置(GPU:graphics processing unit)などのハードウェア・プロセッサ、またはその両方など、当該技術分野で周知の任意のプロセッサが使われてよい。
前述の諸システムもしくは諸方法またはその両方のさまざまな特徴は、任意の仕方で結合が可能で複数の組み合せを生成できることは、上記で提示した説明から明らかであろう。
さらに当然のことながら、本発明の諸実施形態は、オン・デマンド・サービスを提供すべく顧客のために展開されるサービスの形で提供されてもよい。
上記で様々な実施形態を説明してきたが、当然のことながらこれらは例示のために提示したもので限定ではない。しかして、好適な実施形態の発明範囲は、前述の例示的な実施形態のいずれによっても限定されるべきでなく、添付の特許請求の範囲およびこれらの等価物によってのみ定義されるべきである。