(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024095502
(43)【公開日】2024-07-10
(54)【発明の名称】ニューロモルフィックコンピューティング回路、及び、制御方法
(51)【国際特許分類】
G06N 3/049 20230101AFI20240703BHJP
G06N 3/063 20230101ALI20240703BHJP
【FI】
G06N3/049
G06N3/063
【審査請求】未請求
【請求項の数】10
【出願形態】OL
(21)【出願番号】P 2023113112
(22)【出願日】2023-07-10
(31)【優先権主張番号】P 2022211945
(32)【優先日】2022-12-28
(33)【優先権主張国・地域又は機関】JP
(71)【出願人】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110003649
【氏名又は名称】弁理士法人真田特許事務所
(74)【代理人】
【識別番号】100189201
【弁理士】
【氏名又は名称】横田 功
(72)【発明者】
【氏名】高野 茂幸
(57)【要約】
【課題】ニューロモルフィックコンピューティングのハードウェアの拡張性を向上させる。
【解決手段】スパイクの存在時間に関するカウンタを含むスパイクを発生させる複数のノード11と、複数のノード間を相互に接続し、スパイクの伝送経路を形成する伝送アレイ2とを備え、伝送アレイは、スパイクに応じた伝送経路上の1以上の伝送回路によりスパイクを転送する複数の伝送回路3,4を備える。各伝送回路は、スパイクを転送する際に、スパイクのカウンタの値を更新し、第1ノードから第2ノードに送信される第1スパイクと、第2ノードから第1ノードに送信される第2スパイクとの合流を検出した場合に、第1及び第2スパイクの各々のカウンタの値に基づき算出した時差を、転送する第1スパイクにセットする。
【選択図】
図12
【特許請求の範囲】
【請求項1】
スパイクの存在時間に関するカウンタを含む前記スパイクを発生させる複数のノードと、
前記複数のノード間を相互に接続し、前記スパイクの伝送経路を形成する伝送アレイと、を備え、
前記伝送アレイは、前記スパイクに応じた伝送経路上の1以上の伝送回路により前記スパイクを転送する、複数の伝送回路を備え、
前記複数の伝送回路の各々は、
前記スパイクを転送する際に、前記スパイクの前記カウンタの値を更新し、
前記複数のノードのうちの第1ノードから第2ノードに送信される第1スパイクと、前記第2ノードから前記第1ノードに送信される第2スパイクとの合流を検出した場合に、前記第1スパイク及び前記第2スパイクの各々の前記カウンタの値に基づき算出した時差を、転送する前記第1スパイクにセットする、
ニューロモルフィックコンピューティング回路。
【請求項2】
前記複数の伝送回路の各々は、前記第2スパイクの前記カウンタの値から前記第1スパイクの前記カウンタの値を減じることで前記時差を算出する、
請求項1に記載のニューロモルフィックコンピューティング回路。
【請求項3】
前記複数の伝送回路の各々は、前記スパイクが1つの伝送回路を移動する時間区間であるクロック内で、前記第1スパイクと、前記第2スパイクとを自身の前記伝送回路が受信した場合に、前記合流を検出する、
請求項1又は請求項2に記載のニューロモルフィックコンピューティング回路。
【請求項4】
前記第2ノードは、前記伝送アレイから受信した前記第1スパイクにセットされた前記時差に基づき、前記第2ノードと前記第1ノードとの間の結合強度を更新する、
請求項1又は請求項2に記載のニューロモルフィックコンピューティング回路。
【請求項5】
前記スパイクは、合流有無を示す合流情報を含み、
前記伝送回路は、前記第1スパイクと前記第2スパイクとの合流を検出した場合に、前記第1スパイクの前記合流情報を初期値とは異なる値に更新し、
前記第2ノードは、受信した前記第1スパイクの前記合流情報の値が前記初期値とは異なる場合に、前記第1スパイクにセットされた前記時差に基づき、前記結合強度を更新する、
請求項4に記載のニューロモルフィックコンピューティング回路。
【請求項6】
前記第2ノードは、前記伝送アレイから受信した前記第1スパイクの前記合流情報の値が前記初期値である場合に、
前記スパイクが1つの伝送回路を移動する時間区間であるクロックごとに、前記第1スパイクの前記カウンタの値を更新し、
前記第2ノードが前記第2スパイクを発生させたクロックにおいて、前記第1スパイク及び前記第2スパイクの各々の前記カウンタの値に基づき前記時差を算出し、
前記時差に基づき、前記結合強度を更新する、
請求項5に記載のニューロモルフィックコンピューティング回路。
【請求項7】
前記第1ノードは、前記伝送アレイから前記第2スパイクを受信した場合に、
前記スパイクが1つの伝送回路を移動する時間区間であるクロックごとに、前記第2スパイクの前記カウンタの値を更新し、
前記第1ノードが前記第1スパイクを発生させたクロックにおいて、前記第1スパイク及び前記第2スパイクの各々の前記カウンタの値に基づき算出した前記時差を前記第1スパイクにセットし、
前記第1スパイクの前記合流情報を前記初期値とは異なる値に更新し、
前記第1スパイクを前記伝送アレイに送信する、
請求項5に記載のニューロモルフィックコンピューティング回路。
【請求項8】
前記複数の伝送回路の各々は、前記合流を検出し、前記時差を算出した場合に、前記第2スパイクを破棄する、
請求項1又は請求項2に記載のニューロモルフィックコンピューティング回路。
【請求項9】
前記伝送アレイは、前記複数の伝送回路を二次元又は三次元のメッシュ状に配置し、次元順のルーティングにより前記スパイクに応じた前記伝送経路を形成する、
請求項1又は請求項2に記載のニューロモルフィックコンピューティング回路。
【請求項10】
複数のノードと、前記複数のノード間を相互に接続する伝送アレイとを備えるニューロモルフィックコンピューティング回路の制御方法であって、
前記複数のノードの各々が、スパイクの存在時間に関するカウンタを含む前記スパイクを発生させ、
前記伝送アレイに備えられる、前記スパイクに応じた伝送経路上の1以上の伝送回路により前記スパイクを転送する複数の伝送回路の各々が、
前記スパイクを転送する際に、前記スパイクの前記カウンタの値を更新し、
前記複数のノードのうちの第1ノードから第2ノードに送信される第1スパイクと、前記第2ノードから前記第1ノードに送信される第2スパイクとの合流を検出した場合に、前記第1スパイク及び前記第2スパイクの各々の前記カウンタの値に基づき算出した時差を、転送する前記第1スパイクにセットする、
制御方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ニューロモルフィックコンピューティング回路、及び、制御方法に関する。
【背景技術】
【0002】
自然言語処理又は汎用AI(Artificial Intelligence)等の大規模ニューラルネットワーク(Neural Network)では、CPU(Central Processing Unit)又はGPU(Graphical Processing Unit)等のハードウェアを用いて非常に多くの計算が行なわれる。これらのハードウェアを機械学習に用いる場合、ハードウェアの拡張性(スケーラビリティ)の制限とハードウェアを拡張する際の消費電力の増加とが懸念される。
【0003】
これらの懸念に対する別のアプローチとして、脳の機能及び構造を模倣したニューロモルフィックコンピューティング(Neuromorphic Computing:以下、NCと表記する場合がある)が知られている。
【0004】
NCは、神経細胞(ニューロン:Neuron)どうしをシナプスにより接続することで形成される神経回路網(脳神経網)における、スパイクの発火(Fire)の仕組みを模倣する計算モデルであり、ハードウェア(回路)によって実装される。
【0005】
スパイクの発火とは、或るニューロンにおいて、先行するニューロンから流入したイオン分子が閾値を超えると、スパイクと呼ばれる高い電位を、スパイクの伝送路である軸索(Axon)を介して前後のニューロンに発する事象をいう。
【0006】
発火と、それにより発生するスパイクの伝送とにより、神経回路網が機能する。神経回路網における一連のニューロンは、入力の特徴を捉え全体として何らかの意味を形成する。スパイクは、意味形成上の通信情報に相当する。
【0007】
NCの学習則の1つとして、スパイクタイミング依存可塑性(Spike-Timing Dependent Plasticity:以下、STDPと表記する場合がある)モデルが知られている。STDPとは、或るニューロンにおける発火によるスパイクがそのシナプスに到着する時刻と、先行接続しているニューロンにおける発火によるスパイクがそのシナプスに到着する時刻との差により決まる可塑性を意味する。
【0008】
例えば、NCは、ニューロンが発火したスパイクを転送し、複数のスパイクをシナプスで合流させるように動作する。各スパイクの発火からこれらのスパイクのシナプスでの合流までの時間差(時差)は、シナプスにおけるニューロン間の結合の度合い(結合強度W)を変化させる。シナプスの結合強度Wは、シナプスからニューロンに流入するイオン分子(イオン化合物電流,イオン電流)の電流量を変化させ、それにより、ニューロンにおいてスパイクを発火するための電流量も変化する。すなわち、スパイクの伝送は、ニューロン間のシナプスにおける結合強度Wの影響を受ける。結合強度Wは、深層学習におけるパラメータ(重み)に相当する。
【先行技術文献】
【特許文献】
【0009】
【特許文献1】米国特許出願公開第2017/0286827号明細書
【発明の概要】
【発明が解決しようとする課題】
【0010】
機械学習及び推論を実行可能なNCのハードウェアをデジタル回路によって実現(デジタル実装)する際、NCのハードウェアのスケーラビリティに制約が存在するため、ハードウェアの大規模化が阻害されることがある。
【0011】
NCのハードウェアのスケーラビリティの制約の一例として、ニューロン当たりの最大スパイク数の制約が挙げられる。デジタル実装でのSTDPによる上述したスパイクどうしの合流の時差の計算(時差計算)には、タイムスタンプとしてグローバルカウンタが使用される。
【0012】
しかし、グローバルカウンタの取り得る最大値は、最大のスパイク出現数に等しい。グローバルカウンタのサイズにより、定義できる時間範囲が決まるため、時差計算を行なうことのできるニューロン当たりの最大スパイク数に制約が発生する。これにより、最大スパイク数を増加させるようなハードウェアのスケーリングが阻害され得る。
【0013】
1つの側面では、本発明は、ニューロモルフィックコンピューティングのハードウェアの拡張性を向上させることを目的の1つとする。
【課題を解決するための手段】
【0014】
1つの側面では、ニューロモルフィックコンピューティング回路は、スパイクの存在時間に関するカウンタを含む前記スパイクを発生させる複数のノードと、前記複数のノード間を相互に接続し、前記スパイクの伝送経路を形成する伝送アレイと、を備えてよい。前記伝送アレイは、前記スパイクに応じた伝送経路上の1以上の伝送回路により前記スパイクを転送する、複数の伝送回路を備えてよい。前記複数の伝送回路の各々は、前記スパイクを転送する際に、前記スパイクの前記カウンタの値を更新してよい。また、前記複数の伝送回路の各々は、前記複数のノードのうちの第1ノードから第2ノードに送信される第1スパイクと、前記第2ノードから前記第1ノードに送信される第2スパイクとの合流を検出した場合に、前記第1スパイク及び前記第2スパイクの各々の前記カウンタの値に基づき算出した時差を、転送する前記第1スパイクにセットしてよい。
【発明の効果】
【0015】
1つの側面では、本発明は、ニューロモルフィックコンピューティングのハードウェアの拡張性を向上させることができる。
【図面の簡単な説明】
【0016】
【
図1】ニューロンの一例を説明するための図である。
【
図2】形式ニューロンモデルの一例を示す図である。
【
図5】グローバルカウンタを用いた時差計算の一例を説明するための図である。
【
図6】推論用のスケジューラの実装例を説明するための図である。
【
図8】NCの推論用のハードウェアの実装例を説明するための図である。
【
図9】制約(a)~(c)を課される場合の実現可能なハードウェアスケールの一例を示す図である。
【
図10】形式ニューロンモデルの配置時の物理距離に関する不都合を説明するための図である。
【
図11】一実施形態に係るNCのネットワークモデルの一例を示す図である。
【
図12】一実施形態に係るニューロモルフィックコンピューティングハードウェアの構成例を示すブロック図である。
【
図13】一実施形態に係るスパイクのデータ構造の一例を示す図である。
【
図14】発火ノードのハードウェア構成例を示すブロック図である。
【
図15】時差計算回路及びルータのハードウェア実装例を示すブロック図である。
【
図16】ルータのハードウェア構成例を示すブロック図である。
【
図17】時差計算回路のハードウェア構成例を示すブロック図である。
【
図19】一実施形態に係る時差計算回路及びルータによる時差計算処理の一例を説明するフローチャートである。
【
図20】スパイク(時差)の伝送例を説明するための図である。
【
図21】スパイク(時差)の伝送例を説明するための図である。
【
図22】スパイク(時差)の伝送例を説明するための図である。
【
図23】スパイク(時差)の伝送例を説明するための図である。
【発明を実施するための形態】
【0017】
以下、図面を参照して本発明の実施の形態を説明する。ただし、以下に説明する実施形態は、あくまでも例示であり、以下に明示しない種々の変形又は技術の適用を排除する意図はない。例えば、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。なお、以下の説明で用いる図面において、同一符号を付した部分は、特に断らない限り、同一若しくは同様の部分を表す。
【0018】
〔A〕ニューロモルフィックコンピューティングの説明
図1は、ニューロン100の一例を説明するための図である。
図1に例示するように、ニューロン100は、シナプス(Synapse)110,樹状突起(Dendrite)120及び軸索(Axon)130と呼ばれる部位を含む。
【0019】
シナプス110は、ニューロン100間を接続する部位である。シナプス110は、イオン分子(イオン化合物電流)であるスパイクを先方のニューロン100から受け取る。シナプス110が受け取るイオン分子の量は、シナプス110における結合強度Wに依存する。樹状突起120は、複数のシナプス110をまとめた部位である。軸索130は、複数の後続ニューロン100のシナプス110に接続され、接続されるニューロン100へのスパイク伝送路となる部位である。
【0020】
図1において、発火(Fire)は、ニューロン100に流入したイオン分子の量(電位)が閾値を超えるとスパイクと呼ばれる高い電位を発する事象である。スパイク伝送は、ニューロン100間のシナプス110における結合強度Wの影響を受ける。発火と、それにより発生するスパイクの伝送とにより、複数のニューロン100により形成される神経回路網が機能する。
【0021】
図2は、形式ニューロンモデル200の一例を示す図であり、
図3は、STDPモデル300の一例を示す図である。
【0022】
形式ニューロンモデル200は、ニューロンを数理モデルとして表現する際に使用される形式モデルである。
図2に示すように、形式ニューロンモデル200は、結合強度を持ったシナプス210の集合である樹状突起(Dendrite)と、発火(Fire)との機能を持ち、各シナプス210の結合強度を発火機能により定義する。
【0023】
STDPモデル300は、形式ニューロンモデル200の一例であり、脳のシナプス可塑性についての法則であるヘブ(Hebb)則に基づく学習則の1つである。以下、NCでは、学習則としてSTDPモデル300が適用されるものとする。
【0024】
図3には、STDPモデル300において、ニューロン301及び302(それぞれ「Neuron-i」及び「Neuron-j」と表記)がシナプス310経由で接続される例を示す。STDPモデル300は、シナプス300と、ニューロン301及び302がスパイクを発火するための条件とに基づき設計される。
図3に示すように、ニューロン301及び302の各々が発火してスパイクを軸索路(Axon Path)又は樹状突起路(Dendrite Path)経由で転送し、シナプス310でスパイクが合流する。形式ニューロンモデル200に基づくSTDPモデル300では、スパイクの伝播遅延は考慮されなくてもよい。
【0025】
合流したスパイクの時差は、シナプス310の結合強度Wを変化させる。これにより、ニューロン301及び302にそれぞれ流入する電流量が変わり、発火するための電流量も変わる。このように、ニューロン301及び302にそれぞれ流入するイオン化合物電流に対して、シナプス310の結合強度Wは、抵抗値に相当する。
【0026】
なお、ニューロン302は、ニューロン301から入力されるスパイク(preスパイク)又は他のニューロンから入力されるスパイクに応じて(入力を条件として)、スパイク(postスパイク)を発火する。すなわち、postスパイクの発火は、preスパイクの発火と相関があるといえる。
【0027】
図4は、脳神経の測定結果の一例を示す図である。
図4のグラフにおいて、横軸はスパイクタイミング、すなわちスパイクの到着時間差(時差)Δt[ms]を示し、縦軸は結合強度Wの変化量Δw(Δt)[%]を示す。グラフにおける白抜きの丸及び網掛けの四角の各プロットは、互いに異なる測定者又は測定手法による測定結果であることを示す。グラフ中のpreは或るシナプス310(
図3参照)に先行するニューロン(例えば
図3のニューロン301)を示し、postは自身のニューロン(例えば
図3のニューロン302)を示す。
【0028】
或る時刻(タイミング)tにおけるシナプス310の結合強度Wtは、下記式(1)により表される。
結合強度Wt=Wt-1+Δw(Δt) (1)
【0029】
上記式(1)に示すように、結合強度Wtは、ニューロン301(pre)からシナプス310に到着するスパイクのタイミングと、ニューロン302(post)からシナプス310に到着するスパイクのタイミングとの時差Δtに応じて変化する。このことは、シナプス310における結合強度Wの変化が機械学習に寄与することを意味する。
【0030】
上記式(1)において、変化量Δw(Δt)は、Δtの正負に応じて、下記式(2)又は(3)により表される。なお、下記式(2)に示すA,Bと、下記式(3)に示すD,Eとは、それぞれ定数である。
変化量Δw(Δt)=AeBΔt (Δt>0) (2)
変化量Δw(Δt)=-DeE(-Δt) (Δt<0) (3)
【0031】
上記式(2)及び(3)から、スパイクタイミング依存可塑性(STDP)により、時差Δtが小さいと、シナプス310の結合強度が急峻に変化することがわかる。STDPモデル300では、上記式(1)に従い、時差Δtを用いて機械学習が行なわれる。
【0032】
ここで、機械学習及び推論を同時に実行可能な(例えば推論後に再び機械学習を実行可能な)NCを、デジタル回路により実装する場合を考える。NCのハードウェアの規模を大きく(スケーリング)するほど、色々な推論が行なえるようになるため、NCのハードウェアをできるだけスケーリングすることが期待される。しかし、NCのハードウェアのスケーラビリティには、以下の(a)~(c)に示す制約が存在する。
【0033】
(a)グローバルカウンタの取り得る最大値が最大発火数に等しい。
図5は、グローバルカウンタを用いた時差計算の一例を説明するための図である。シナプス310(
図3参照)では、
図5に示すように、グローバルカウンタの値(0~8)の参照により、ニューロン302(post)からのスパイクのタイミング(t=2)と、ニューロン301(pre)のスパイクのタイミング(t=6)との間の時差Δtが算出される。
図5の例では、時差Δtは、2-6=-4となる。
【0034】
図5から、ニューロン当たりのスパイクの最大数は、グローバルカウンタの最大値+1となる。このように、グローバルカウンタの取り得る値が最大のスパイク出現数に等しい。グローバルカウンタのサイズにより、定義できる時間範囲が決まるため、時差計算を行なうことのできるニューロン当たりの最大スパイク数に制約が発生する。これにより、最大スパイク数を増加させるようなハードウェアのスケーリングが阻害され得る。
【0035】
(b)バッファサイズがタイミング調整可能な最大スパイク数に等しい。
図6は、推論用のスケジューラ400の実装例を説明するための図である。
図6に示すように、NCの推論用のハードウェアは、スパイクのタイミング調整を行なうスケジューラ400を備える。タイミング調整の手法としては、例えば、AER(Address-Event Representation)が挙げられる。
【0036】
図6の例では、ニューロンA,C,Bの順でスパイクが発生した場合を示す。スパイクは、自身の送信先及び送信元のアドレス情報、例えばニューロンID(Identifier)を有する。
図6では、ニューロンA,C,Bからそれぞれ出力されるスパイクが有するアドレス情報を「Addr-A」,「Addr-C」,「Addr-B」と表記する。
【0037】
スケジューラ400は、循環バッファ410を備える。スケジューラ400は、スパイクを循環バッファ410に挿入(格納)し、末尾ポインタTAIL及び先頭ポインタHEADERを用いてスパイクを管理することで、スパイクの順番を保証する。
【0038】
スケジューラ400は、アドレス情報(アドレス値)に基づき、出力するリードラインを決定する。循環バッファ410では、末尾ポインタTAILのアドレスからスロットが消費される。
図6では、これらのスパイクが、ニューロンA,C,Bの順で循環バッファ410の記憶領域であるスロット411~413に格納される例を示す。
【0039】
スケジューラ400では、循環バッファ410のサイズによって、タイミング調整可能な最大スパイク数に制約が課される。これにより、最大スパイク数を増加させるようなハードウェアのスケーリングが阻害され得る。
【0040】
(c)シナプスとして機能するオンチップメモリセル数、又は、クロスバのクロスポイント数は、ニューロンの最大接続数に等しい。
図7は、ニューロンの神経接続例を示す図であり、
図8は、NC600の推論用のハードウェアの実装例を説明するための図である。
【0041】
図7には、複数の細胞体(Cell Body)510,531,532,533を示す。なお、便宜上、個々の「細胞体」を「ニューロン」と表記する場合がある。ニューロン510はスパイクを出力(Fan-out)し、ニューロン531~533の各々にはスパイクが入力(Fan-in)されるものとする。また、
図7には、ニューロン間のシナプスの重み521~523を示す。重み521は、ニューロン510及び531間のシナプスの結合強度Wであり、重み522は、ニューロン510及び532間のシナプスの結合強度Wであり、重み523は、ニューロン510及び533間のシナプスの結合強度Wである。
【0042】
図8には、
図7に示す神経接続を推論用のハードウェアとして実装したNC600を示す。NC600では、
図7に示すニューロンの集合がオンチップメモリで実装される。
【0043】
図8に示すように、NC600は、AERデコーダ(AER Decoder)610,クロスバ620,オフセットメモリ(Offset Memory)630,複数のニューロン(細胞体)640及びAERエンコーダ(AER Encoder)650を備える。
【0044】
クロスバ620は、複数のスイッチを行列状に配置したクロスバスイッチである。各スイッチ(クロスポイント)は、シナプス621に相当する。
図8において四角で囲った複数のシナプス621の列は、当該列の延長上に位置するニューロン640に備えられる樹状突起622に相当する。すなわち、NC600では、シナプス621及び樹状突起622がクロスバ620により実装される。クロスバ620が備えるシナプス621の数は、ニューロン640への接続数であり、最大のFan-in(入力)数である。また、クロスバ620が備える樹状突起622の数は、スパイクの送信先のニューロン640の数であり、最大のFan-out(出力)数である。
【0045】
このように、NC600では、シナプス621として機能するクロスバ620のクロスポイント数はニューロン(細胞体)640の最大接続数に等しくなる。これにより、ニューロン(細胞体)640の最大接続数を増加させるようなハードウェアのスケーリングが阻害され得る。
【0046】
なお、
図8に示すNC600では、AERデコーダ610が外部(他のニューロンの集合におけるAERエンコーダ650)からスパイクを受け取り、タイミング調整(
図6参照)を行なう。以下、AERデコーダ610から読み出されるスパイク611が
図7のニューロン510からのスパイクであると仮定する。
【0047】
この場合、スパイク611は、クロスバ620において、破線で示す経路により、紙面上水平(右)方向に伝播し、網掛けの丸で示すシナプス621において紙面上垂直(下)方向に切り替えられて伝播する。クロスポイントの切り替えは、スイッチのオフからオンへの切り替えに相当する。
【0048】
そして、スパイク611は、機械学習の結果として得られた重みを格納するオフセットメモリ630から読み出された重み(
図7の重み521~523)とともにニューロン640に流入する。スパイク611及び重みは、ニューロン640において累和される。
図8において、網掛けの四角で示すニューロン640は、それぞれ、
図7に示すニューロン531~533に相当する。
【0049】
スパイク611及び重みが流入したニューロン640が発火すると、発火に伴うスパイクがAERエンコーダ650に入力される。AERエンコーダ650は、送信先に応じて、当該スパイクをAERデコーダ610又は外部に出力する。
【0050】
図9は、上述した制約(a)~(c)を課される場合の実現可能なハードウェアスケールの一例を示す図である。
図9に示すように、制約(a)~(c)の各々が課されることにより、実際に実現可能なハードウェアスケールは、NCの理論上のスケールから大きく減少する。すなわち、制約(a)~(c)によって、NCのハードウェアスケーラビリティが阻害される。
【0051】
そこで、一実施形態では、NCのハードウェアスケーラビリティを向上させるための手法を説明する。例えば、一実施形態では、グローバルカウンタの使用を省略可能な構成をNCに採用することで、少なくとも上述した制約(a)を解消でき、ハードウェアスケーラビリティを向上させることができる。
【0052】
ところで、グローバルカウンタを時差Δtの算出に使用することは、形式ニューロンモデルの配置時の物理距離に関する下記(i)~(iii)の不都合の解決に寄与する。
【0053】
(i)ニューロン間の物理的距離はニューロンの配置に依存する。
図10は、形式ニューロンモデルの配置時の物理距離に関する不都合を説明するための図である。
図10の軸索路(Axon Path)及び樹状突起路(Dendrite Path)の長さ(物理距離)を、便宜上、ニューロン間の物理的距離という。当該物理的距離は、ニューロンの配置に依存することになる。
【0054】
(ii)シナプスとニューロンとの間の物理的距離はニューロン(発火機構:Fire)の配置に依存する。
シナプスとニューロンとの間の物理的距離は、発火機構の配置に依存する。
図10に示すように、発火機構(Fire)は、ニューロン内のどの位置に配置されるか不明である。
【0055】
(iii)送信元から送信先までの実際の距離と転送時間とが様々である。
【0056】
従って、時差Δtの算出に用いられるグローバルカウンタの使用を省略する場合、上述した(i)~(iii)の不都合が生じることになる。一実施形態では、グローバルカウンタの使用を省略する場合に生じる上述した(i)~(iii)の不都合についても解消する手法を説明する。
【0057】
〔B〕一実施形態の構成例
図11は、一実施形態に係るNCのネットワークモデル10の一例を示す図であり、
図12は、一実施形態に係るニューロモルフィックコンピューティングハードウェア1(以下、単にNC1と表記する場合がある)の構成例を示すブロック図である。
【0058】
図11に例示するように、一実施形態では、複数の発火ノード11(
図11ではノードa~eと表記する)を備えるネットワークモデル10を想定する。なお、「発火ノード」を単に「ノード」と表記する場合がある。
【0059】
発火ノード11は、スパイクを発火可能なノードであり、例えば、細胞体(Cell Body)或いはニューロンの計算モデルである。発火ノード11は、例えば、スパイクの転送元及び転送先の一方又は双方として動作してよい。
【0060】
図11では、ネットワークモデル10における発火ノード11間の接続を有向グラフで示す。有向グラフの矢印の元の発火ノード11は、スパイクの転送元(pre)であり、矢印の先の発火ノード11は、スパイクの転送先(post)である。
【0061】
ネットワークモデル10では、発火ノード11の浅い階層(矢印の元側)から深い階層(矢印の先側)に向かって階層ごとに、昇順にグラフレベルが設定される。
図11の例では、ノードd及びeにグラフレベル1が設定され、ノードb及びcにグラフレベル2が設定され、ノードaにグラフレベル3が設定される。
【0062】
図12に示すNC1は、
図11に示すネットワークモデル10を配置、配線して実現されるハードウェアである。
図12に例示するように、NC1は、複数の発火ノード11と、時差計算回路アレイ2とを備えてよい。
【0063】
時差計算回路アレイ2は、複数の発火ノード11間を相互に接続し、スパイクの伝送経路を形成する伝送アレイの一例である。例えば、時差計算回路アレイ2は、機械学習において使用する重みを計算するための時差を算出する。
【0064】
図12に例示するように、時差計算回路アレイ2は、複数の時差計算回路3と、時差計算回路3間を相互に通信可能に接続する複数のルータ4とを備えてよい。ルータ4は、例えば、時差計算回路3とIC(Integrated Circuit)チップ上に形成されたオンチップルータであってもよい。
【0065】
時差計算回路アレイ2は、pre及びpostのスパイクが合流した時差計算回路3で時差Δtを算出する。時差計算は、時差計算回路3において行なわれてよいが、発火ノード11においても行なわれてよい。時差計算回路アレイ2による時差計算により、以下の(I)~(III)が実現される。
【0066】
(I)グローバルカウンタを使用せずに、時差計算を可能とする。
時差計算回路3は、グローバルカウンタを使用せず、後述する手法により時差計算を行なう。これにより、スパイクの最大発火数の制約(a)を解消できる。
【0067】
また、時差計算回路アレイ2は、STDPを学習則として適用した形式ニューロンモデルを前提としているため、物理的距離を表現しない。物理的距離を表現しないということは、発火ノード11の配置を自由に行なうことができる。
【0068】
さらに、時差計算回路アレイ2上の経路は、発火時刻情報を扱わず、論理的に時間を含まない。その代わりに、時差計算回路アレイ2上の経路は、理論上の単位時間を用いて、発火のタイミングを使用する。
【0069】
(II)時差計算を並列分散処理とすることで、待ち合わせ(スケジューラ)を不要にする。
時差計算回路アレイ2は、複数の時差計算回路3及びルータ4を二次元又は三次元のメッシュ状に配置し、次元順のルーティングによりスパイク5に応じた伝送経路を形成してよい。
図12の例では、時差計算回路アレイ2は、複数の時差計算回路3及びルータ4を二次元のメッシュ状に配置し、X-Y又はY-Xルーティングを前提としている。
【0070】
図12において、紙面横方向をX軸、縦方向をY軸とすると、奇数のグラフレベルのノードa,d及びeは、Y軸方向に配置され、X軸方向に向かって時差計算回路アレイ2の時差計算回路3にそれぞれ接続される。また、偶数のグラフレベルのノードb及びcは、X軸方向に配置され、Y軸方向に向かって時差計算回路アレイ2の時差計算回路3にそれぞれ接続される。
【0071】
例えば、X-Yルーティングであれば、スパイクは、奇数のグラフレベルのノードa,d又はeからX軸方向に移動後に、Y軸方向に移動し、偶数のグラフレベルのノードb又はcに流入する。このように、時差計算回路アレイ2では、スパイクの伝送(伝播)経路が固定されるため、スパイクの合流順番が保証される。これにより、スケジューラによる待ち合わせを不要としつつ、タイミング調整可能なスパイク最大数の制約(b)を解消できる。
【0072】
また、X-Y又はY-Xルーティングのアルゴリズムにより、スパイクのデッドロックを回避することができる。
【0073】
なお、時差計算回路アレイ2におけるルーティング手法は、X-Y又はY-Xルーティングに限定されるものではなく、種々のルーティング手法が適用されてもよい。
【0074】
(III)シナプス(時差計算後の結合強度更新)の機能を発火機構内に配置することで、メモリセルアレイやクロスポイントアレイを不要にする。
例えば、時差計算回路アレイ2では、発火ノード11に対して全結合網相当であるため、Fan-in/Fan-outの数の制約がない。これにより、ニューロンへのシナプスの最大接続数の制約(c)を解消(例えば緩和)できる。例えば、時差計算回路アレイ2では、時差計算回路3の数だけ同時に時差計算を行なうことができる。
【0075】
また、時差計算回路アレイ2では、発火ノード11に対して全結合網相当であることから、発火ノード11間の全てのスパイク出現を保証することができる。従って、上述した(I)との組み合わせによって、グローバルカウンタの使用を省略可能としつつ、上述した(i)~(iii)の不都合を解消できる。
【0076】
以上のように、時差計算回路アレイ2によれば、時差計算の工夫により、時差計算に起因する制約(a)~(c)及び不都合(i)~(iii)を解決することができる。
【0077】
なお、時差計算回路アレイ2は、機械学習に使用されるネットワークモデル10の構造に応じて、段数等が適宜決定されてよい。
図12に示す例では、時差計算回路アレイ2は、4×4のアレイであるが、大規模な推論を行なう場合には、アレイの規模を大きくして(段数を増加させて)時差計算可能な時差計算回路3の数を増加させたり、発火ノード11の数を増加させたりしてよい。
【0078】
〔B-1〕スパイクのデータ構造例
次に、一実施形態に係るスパイク5のデータ構造例について説明する。
【0079】
図13は、一実施形態に係るスパイク5のデータ構造の一例を示す図である。
図13に例示するように、スパイク5は、「スパイク属性フラグ」,「カウンタJ」,「カウンタC」,「Δt」,「送信元アドレス」及び「送信先アドレス」の項目(フィールド)を含んでよい。スパイク5が有するこれらのデータは、スカラデータであってよい。また、
図13の例では、時差計算回路アレイ2がX-Y又はY-Xルーティングを行なうことを前提としている。
【0080】
「スパイク属性フラグ」は、スパイク5がpre及びpostのいずれであるのかを区別可能な情報である。例えば、スパイク属性フラグは、スパイク5が発火する場所(例えば発火ノード11)でスパイク5に付加されてよい。preは送信元を表し、postは送信先を表す。例えば、
図11に示す有向グラフの矢印の元の発火ノード11は、スパイク5を出力する際に、スパイク属性フラグにpreを示すフラグをセットしてよい。
図11に示す有向グラフの矢印の先の発火ノード11は、スパイク5を出力する際に、スパイク属性フラグにpostを示すフラグをセットしてよい。
【0081】
以下、スパイク属性フラグにpreを示すフラグがセットされたスパイク5を「preスパイク5」と表記し、スパイク属性フラグにpostを示すフラグがセットされたスパイク5を「postスパイク5」と表記する場合がある。
【0082】
preスパイク5は、複数の発火ノード11のうちの第1発火ノード11から第2発火ノード11に送信される第1スパイク5の一例である。postスパイク5は、第2発火ノード11から第1発火ノード11に送信される第2スパイク5の一例である。
【0083】
「カウンタJ」は、合流有無を示す合流情報の一例であり、合流回数を示すカウンタである。カウンタJの初期値は0であり、他のスパイク5と合流したときにインクリメント(1が加算)される。なお、カウンタJは、例えば、初期値が「未合流」を示し、初期値以外の値が「合流済み」を示すことができれば、カウンタ以外の種々の情報であってもよい。
【0084】
「カウンタC」は、スパイク5の存在時間に関するカウンタの一例であり、“存在”時間情報を保持するカウンタである。カウンタCの初期値は0であり、クロックでインクリメント(1が加算)されることで更新される。なお、カウンタCは、1以外の値の加算によって更新されてもよい。
【0085】
また、NC1において許容される最大の時差Δtが決まっている場合には、カウンタCは、初期値を当該最大の時差Δtに応じた値とし、クロックでデクリメント(1を減算)されることで更新されてもよい。或いは、この場合、カウンタCは、1以外の値の減算によって更新されてもよい。
【0086】
カウンタJ及びCの更新は、時差計算回路3並びに送信元及び送信先発火ノード11で行なわれてよい。なお、カウンタJ及びCは、preスパイク5及びpostスパイク5の双方にセットされてよい。
【0087】
「Δt」は、postスパイク5とpreスパイク5とが合流した時差計算回路3又は発火ノード11において、各スパイク5のカウンタCの値に基づき算出され、送信元発火ノード11からのpreスパイク5にセットされる時差Δtである。例えば、時差Δtは、下記式(4)に示すように、postスパイク5のカウンタCの値(Cpostと表記)と、preスパイク5のカウンタCの値(Cpreと表記)との差分として算出されてよい。
時差Δt=Cpost-Cpre (4)
【0088】
このように、時差計算回路アレイ2は、送信元発火ノード11から送信先発火ノード11に転送するpreスパイク5に、preスパイク5とpostスパイク5とが合流した時差計算回路3で算出された時差Δtの情報を持たせて転送するのである。
【0089】
「送信元アドレス」は、スパイク5の送信元の発火ノード11のアドレスであり、「送信先アドレス」は、スパイク5の送信先の発火ノード11のアドレスである。
【0090】
上述したスパイク5は、時差計算回路アレイ2において、X-Y又はY-Xルーティングにより送信元アドレスから送信先アドレスに転送される。その際に、スパイク5は、発火ノード11又は時差計算回路3において、クロックごとにカウンタCの値が更新(インクリメント)されるとともに、以下の条件に該当する場合、更新又は破棄されてよい。
【0091】
・送信先又は送信元発火ノード11は、スパイク5の到着後、カウンタJの値(合流回数)が0の場合に、カウンタCの値を更新(インクリメント)する。
【0092】
・送信先又は送信元発火ノード11は、スパイク5の到着後、カウンタJの値(合流回数)が0以外の場合に、スパイク5を破棄する。カウンタJの値(合流回数)が0以外であるということは、当該スパイク5は、既にここまでの経路(時差計算回路3)で他のスパイク5と合流済みであることを意味するからである。
【0093】
・時差計算回路3は、自身の時差計算回路3でスパイク5が合流した場合、合流したスパイク5のうちの送信先発火ノード11からのpostスパイク5を破棄する。当該postスパイク5のカウンタJの値(合流回数)が0以外となるためである。
【0094】
postスパイク5を破棄する理由としては、時差計算回路アレイ2が時差Δtの算出を目的としてスパイク5を転送しており、時差Δtが算出できた場合、当該算出に用いた逆方向のpostスパイク5はもはや不要になるからである。
【0095】
なお、クロックとは、スパイク5が、1つの時差計算回路3を移動する時間区間、換言すれば、互いに隣接する時差計算回路3間の伝送路(1ホップ:1-hop)を移動する時間区間、を意味してよい。なお、NC1が形式ニューロンモデルであるため、伝送路は物理的距離を表現するものではない。
【0096】
スパイク5の送信元ニューロンと、スパイク5の送信先ニューロンとの間の1以上の伝送路(時差計算回路アレイ2上の経路)は、送信元及び送信先のニューロン間の1つのシナプスに対応してよい。例えば、
図11に有向グラフで示す発火ノードdと発火ノードcとの間のシナプスは、
図12において、発火ノードdから発火ノードcへの破線矢印で示す経路、すなわち、時差計算回路アレイ2においてスパイク5が通過する複数の時差計算回路3及びルータ4により表現される。
【0097】
〔B-2〕発火ノードのハードウェア構成例
図14は、発火ノード11のハードウェア構成例を示すブロック図である。
図14に例示するように、発火ノード11は、入力バッファ11a,結合強度機構11b及び発火機構11cを備えてよい。
【0098】
入力バッファ11aは、隣接する時差計算回路3から、送信先アドレスに自身の発火ノード11のアドレスがセットされたスパイク5を受信すると、受信したスパイク5にセットされた時差Δt及び送信元アドレスを結合強度機構11bに出力する。
【0099】
なお、例えば、入力バッファ11aは、スパイク5にセットされたカウンタJの値が0の場合には、スパイク5にセットされたカウンタCの値をインクリメントしてよい。また、入力バッファ11aは、スパイク5にセットされたカウンタJの値が0以外の場合には、スパイク5を破棄してよい。
【0100】
また、入力バッファ11aは、発火機構11cから結合強度機構11bを介してNack(Negative acknowledgement)を取得すると、当該Nackをスパイク5の送信元アドレス(発火ノード11)に送信(返信)する。Nackは、例えば、発火ノード11内のバッファが不足した等の場合に出力される。
【0101】
結合強度機構11bは、受信したスパイク5にセットされた送信元アドレスに対応する発火ノード11と自身の発火ノード11との間の結合強度Wを、時差Δtに基づき算出(更新)し、時差Δtと結合強度Wとを発火機構11cに出力する。
【0102】
例えば、結合強度機構11bは、結合強度Wを格納する結合強度メモリ11dを備えてよい。結合強度機構11bは、送信元アドレスに対応する結合強度Wを結合強度メモリ11dから読み出し、当該結合強度Wと時差Δtとに基づき更新した結合強度Wを、結合強度メモリ11dに書き戻してよい。
【0103】
発火機構11cは、結合強度機構11bから入力される時差Δt及び結合強度Wに基づき、自身の発火ノード11からスパイク5を発火するか否かを判定し、発火すると判定した場合に、スパイク5を送信する。
【0104】
このように、一実施形態に係るNC1は、シナプス(時差計算後の結合強度更新)の機能を発火ノード11(結合強度機構11b)内に設けることで、メモリセルアレイやクロスポイントアレイを不要にすることができる。
【0105】
〔B-3〕時差計算回路アレイのハードウェア構成例
図15は、時差計算回路3及びルータ4のハードウェア実装例を示すブロック図である。
図15に例示するように、時差計算回路3と、当該時差計算回路3に対するスパイク5の伝送を行なうルータ4とは、IC等のチップ6に実装されてよい。
【0106】
一実施形態では、時差計算回路アレイ2は、X-Y又はY-Xルーティングを前提としている。
図15に例示する1組の時差計算回路3及びルータ4は、1つの伝送回路の一例であり、隣接する他の時差計算回路3及びルータ4の組との間で、ルータ4どうしが結合することにより、相互に通信可能に接続されてよい。例えば、ルータ4は、
図12の紙面上の上下左右の各方向に対応付けた北(North),南(South),西(West),東(East)のうちの少なくとも1つに隣接するルータ4と、相互に通信可能に接続されてよい。
【0107】
このように、時差計算回路アレイ2は、スパイク5に応じた伝送経路上の1以上の伝送回路によりスパイク5を転送する、複数の伝送回路(時差計算回路3及びルータ4)を備えるのである。
【0108】
図16は、ルータ4のハードウェア構成例を示すブロック図である。
図16に例示するように、ルータ4は、FIFO(First-In First-Out)41a~41e,クロスバ(Crossbar)42,制御部(Controller)43,調停部(Arbiter)44,出力部(Out)45i~45eを備えてよい。
【0109】
FIFO41a~41eは、FIFO(先入れ先出し)方式の入力バッファ(メモリ)である。以下、FIFO41a~41eを区別しない場合には、単にFIFO41と表記する場合がある。
【0110】
FIFO41a~41dは、それぞれ、North,East,West,Southの隣接するルータ4から受信したスパイク5を格納し、当該スパイク5をクロスバ42に出力する。このとき、FIFO41a~41dは、スパイク5にセットされたカウンタCの値を更新(インクリメント)してよい。なお、カウンタCの値の更新は、FIFO41a~41dに代えて、出力部45e又は時差計算回路3で行なわれてもよい。
【0111】
FIFO41eは、時差計算回路3から受信したスパイク5を格納し、当該スパイク5をクロスバ42に出力する。
【0112】
クロスバ42は、制御部43及び調停部44による制御に応じて、FIFO41から入力されるスパイク5を、出力部45a~45eのうちのいずれかに送信する。
【0113】
制御部43は、クロスバ42の経路の切り替えを制御する。例えば、制御部43は、FIFO41a~41dに格納されたスパイク5を、出力部45eに出力するように、クロスバ42を切り替えてよい。また、制御部43は、FIFO41eに格納された時差計算回路3からのスパイク5を、当該スパイク5にセットされた送信先アドレスに応じた出力部45a~45dに出力するように、クロスバ42を切り替えてよい。
【0114】
なお、制御部43は、2つ以上(例えば偶数個)のFIFO41a~41dにスパイク5が格納されている場合、これらの2つ以上のスパイク5を同時に(同じクロックで)出力部45eに出力するように、クロスバ42を切り替えてよい。2つ以上のスパイク5とは、例えば、当該時差計算回路3において合流したpreスパイク5及びpostスパイク5である。
【0115】
調停部44は、制御部43によるクロスバ42の切り替えの調停(例えばタイミングの調整等)を行なう。
【0116】
出力部45a~45dは、クロスバ42から入力されるスパイク5を、それぞれ、North,East,West,Southの隣接するルータ4に送信する。出力部45eは、クロスバ42から入力されるスパイク5を、時差計算回路3に送信する。
【0117】
このように、ルータ4は、FIFO41a~41dで受信したスパイク5を、カウンタCの値をインクリメントした上で、出力部45eから時差計算回路3に出力する。また、ルータ4は、時差計算回路3から入力されたスパイク5を、FIFO41eから、転送先となる出力部45a~45dのいずれかに出力する。
【0118】
図17は、時差計算回路3のハードウェア構成例を示すブロック図である。
図17に例示するように、時差計算回路3は、比較器アレイ31,選択値生成回路32,複数(
図17の例では2つ)の選択回路33並びに複数(
図17の例では2つ)の計算部(「Δt計算」及び「J+=1」と表記)34を備えてよい。
【0119】
比較器アレイ31は、時差計算回路3に入力される、postスパイク5の送信元アドレスと、preスパイク5の送信先アドレスとを比較し、比較結果が一致を示す場合に、これらのスパイク5が合流したことを示す合流情報を、選択値生成回路32に出力する。なお、時差計算回路3は、例えば、スパイク5にセットされたスパイク属性フラグに基づき、preスパイク5及びpostスパイク5を識別してよい。
【0120】
図17に示す例では、時差計算回路アレイ2が二次元メッシュ(
図12参照)であり、時差計算回路3が4入力,4出力に対応するため、比較器アレイ31は、合計で4つのスパイク5(preスパイク5及びpostスパイク5のペア×2)に対応できる。
【0121】
図17に示すように、比較器アレイ31は、複数(
図17の例では12個)の比較器31aを備えてよい。各比較器31aは、FIFO41a~41d(
図17ではそれぞれN,E,W,Sと表記)から入力されるスパイク5のうち、postスパイク5の送信元アドレスとpreスパイク5の送信先アドレスとを比較する。このために、比較器アレイ31は、N,E,W,S別にpostスパイク5の送信元アドレスを伝送する信号線と、N,E,W,S別にpreスパイク5の送信先アドレスを伝送する信号線とを交差させ、各々の信号線の交点となる位置に、アドレス値を比較する比較器31aを設ける。
【0122】
図18は、比較器31aの一例を示す図である。
図18に示すように、比較器31aは、postスパイク5の送信元アドレスと、preスパイク5の送信先アドレスとを比較する。比較結果が一致する場合、postスパイク5とpreスパイク5とが時差計算回路3で合流していることを意味する。比較結果が一致する場合、比較器31aは、当該postスパイク5とpreスパイク5とのペアが合流したことを示すペア情報(合流情報)、一例として、自身が比較する2本の信号線に対応するFIFO41a~41dのうちのいずれか2つのペアを特定する情報を、選択値生成回路32に出力する。
【0123】
選択値生成回路32は、比較器アレイ31から通知されるペア情報に応じて、postスパイク5にセットされたカウンタC及びJと、preスパイク5にセットされたカウンタC及びJとを選択するための選択値を生成し、選択回路33に出力する。なお、選択値生成回路32は、2つの比較器31aからそれぞれペア情報を通知されると、各選択回路33に別々のペア情報を出力してよい。
【0124】
選択回路33は、選択値に基づき、postスパイク5にセットされたカウンタC及びJと、preスパイク5にセットされたカウンタC及びJとを選択し、計算部34に出力する。
【0125】
計算部34は、上記式(4)に従い、選択回路33から取得したカウンタCpost及びCpreの差分を算出することで、時差Δtを算出する。また、計算部34は、preスパイク5のカウンタJの値をインクリメントする。
【0126】
そして、計算部34は、算出した時差Δtと、値をインクリメントしたカウンタJとをセットすることにより更新されたpreスパイク5を、ルータ4(FIFO41e)に出力する。
【0127】
なお、時差計算回路3は、スパイク5の送信がストールする場合、そのストールサイクル数分をカウンタCへ加算して時差Δtを計算してよい。すなわち、この場合、仮想的に伝送路分のクロックを時差Δtの算出に加味してよい。例えば、カウンタCへのストールサイクル数分の加算は、クロックごとにカウンタCをカウントアップすることで実装可能である。
【0128】
また、上述したように、時差計算回路3でpreスパイク5と合流したpostスパイク5は、当該時差計算回路3において破棄されてよい。例えば、計算部34は、postスパイク5については、時差Δt及びカウンタJの更新を抑制するとともに、postスパイク5の出力を抑制(例えばpostスパイク5を破棄)してもよい。
【0129】
さらに、時差計算回路3においてスパイク5の合流が発生しない場合、例えば、或るクロックにおいて、ペアにならない1つのスパイク5が時差計算回路3に入力される場合、このスパイク5は、時差計算回路3を通過するスパイク5である。時差計算回路3は、合流を伴わないスパイク5については、比較器アレイ31を通過した後に、ルータ4(FIFO41e)に出力してよい。この場合、当該スパイク5は、時差Δt及びカウンタJの更新が行なわれない。なお、当該スパイク5のカウンタCの値は、当該スパイク5がルータ4に流入した際に、FIFO41においてインクリメントされる。
【0130】
以上のように、時差計算回路3は、preスパイク5とpostスパイク5との合流を検出した場合に、preスパイク5及びpostスパイク5の各々のカウンタCの値に基づき算出した時差Δtを、転送するpreスパイク5にセットするのである。また、時差計算回路3は、当該合流を検出した場合に、preスパイク5のカウンタJを初期値とは異なる値に更新するのである。
【0131】
〔C〕動作例
次に、一実施形態に係るNC1の動作例を説明する。
【0132】
〔C-1〕時差計算回路及びルータの動作例
まず、時差計算回路3及びルータ4における時差計算アルゴリズムの一例を説明する。
図19は、一実施形態に係る時差計算回路3及びルータ4による時差計算処理の一例を説明するフローチャートである。
【0133】
図19に例示するように、ルータ4(又は時差計算回路3)は、到着したスパイク5のカウンタCの値をインクリメントする(処理S1)。
【0134】
時差計算回路3にpostスパイク5が到着し(処理S2でYES)、且つ、preスパイク5が到着した場合(処理S3でYES)、時差計算回路3により合流の判定が行なわれる(処理S4)。一方、postスパイク5が到着しない場合(処理S2でNO)又はpreスパイク5が到着しない場合(処理S3でNO)、処理S8に移行する。
【0135】
処理S4において、時差計算回路3は、比較器アレイ31により、preスパイク5の送信元アドレスとpostスパイク5の送信先アドレスとが一致するか否かを判定する。一致しない場合(処理S4でNO)、処理S8に移行する。
【0136】
preスパイク5の送信元アドレスとpostスパイク5の送信先アドレスとが一致する場合(処理S4でYES)、計算部34は、preスパイク5及びpostスパイク5の各々のカウンタCの値と、上記式(4)とに基づき、時差Δtを計算する(処理S5)。
【0137】
次いで、計算部34は、preスパイク5のカウンタJの値をインクリメントする(処理S6)。また、計算部34は、postスパイク5を破棄する(処理S7)。
【0138】
処理S8では、ルータ4は、更新されたpreスパイク5(処理S5~S7参照)、又は、合流しなかったスパイク5(処理S2~S4の各NOルート参照)を隣接するルータ4に転送し、処理が終了する。
【0139】
〔C-2〕スパイク(時差)の伝送例
図20~
図23は、スパイク5(時差Δt)の伝送例を説明するための図である。
図20~
図23の例では、送信元ニューロン(例えば第1発火ノード11)と送信先ニューロン(例えば第2発火ノード11)との間の経路を一次元で表記する。例えば、
図20の紙面左上に示すように、送信元ニューロンと、送信先ニューロンとの間の経路は、時差計算回路アレイ2における発火ノード11間の複数のポイント(時差計算回路3及びルータ4の組)により形成される。
【0140】
図20~
図23において、送信元ニューロンと送信先ニューロンとの間の複数ホップの経路(時差計算回路アレイ2)は、送信元ニューロンと送信先ニューロンとの間の1つのシナプスを表現する。上述したように、NC1は形式ニューロンモデルのため、複数ホップの経路は、物理的距離を表現するものではない。
【0141】
なお、便宜上、
図20~
図23の説明では、時差計算回路3及びルータ4の組を「ポイント」と表記し、白抜きの丸又は網掛けの四角で示す。また、ポイント間(ルータ4間)を接続する部分を「伝送路」と表記する。また、
図20~
図23に示すステップ(Step)の添字の数字は、1を起点として、スパイク5がクロックごとに経路を1ホップずつ進んだ(伝送された)状態を示す。
【0142】
図20には、送信元ニューロンと送信先ニューロンとの間のポイント上でスパイク5が合流する場合の伝送例を示す。
【0143】
ステップA1において、(pre)スパイク5aが送信元ニューロンから送出され、左から1つ目のポイントに到着する。スパイク5aのカウンタCの値が1に更新される。
【0144】
ステップA2において、スパイク5aが左から2つ目のポイントに到着する。スパイク5aのカウンタCの値が2に更新される。
【0145】
ステップA3において、スパイク5aが左から3つ目のポイントに到着する。スパイク5aのカウンタCの値が3に更新される。また、(post)スパイク5bが送信先ニューロンから送出され、右から1つ目のポイントに到着する。スパイク5bのカウンタCの値が1に更新される。
【0146】
ステップA4において、スパイク5aが左から4つ目のポイントに到着する。スパイク5aのカウンタCの値が4に更新される。また、スパイク5bが右から2つ目のポイントに到着する。スパイク5bのカウンタCの値が2に更新される。
【0147】
ステップA5において、スパイク5a及び5bが、左から5つ目(右から3つ目)のポイントで合流する。スパイク5aのカウンタCの値が5に更新される。また、スパイク5bのカウンタCの値が3に更新される。当該ポイントの時差計算回路3は、postスパイク5bのカウンタCの値(2)と、preスパイク5aのカウンタCの値(5)との差分を計算することで時差Δt(-3)を算出し、時差Δtと、値をインクリメントしたカウンタJとをセットしたpreスパイク5aを伝送する。また、時差計算回路3は、postスパイク5bを破棄する。
【0148】
ステップA6において、時差Δtがセットされたスパイク5aが左から6つ目のポイントに到着する。スパイク5aのカウンタCの値は、更新されなくてよい。また、(pre)スパイク5cが送信元ニューロンから送出され、左から1つ目のポイントに到着する。スパイク5cのカウンタCの値が1に更新される。
【0149】
このように、時差計算回路アレイ2は、postスパイク5bの発火タイミングとpreスパイク5aの発火タイミングとの時差(
図20の例ではステップA3とステップA1との時差)Δtを、これらのスパイク5が合流した時差計算回路3において計算する。また、時差Δtの計算に用いるカウンタCや、計算した時差Δtは、スパイク5にセットされて伝送される。従って、時差Δtの計算及び伝送に関し、メモリ等の記憶領域を確保する必要がなく、簡素な構成及びロジック、且つ、スケーラブルな構成によって、時差Δtの計算及び伝送を可能とすることができる。
【0150】
なお、送信先ニューロン(例えば第2発火ノード11)は、時差計算回路アレイ2から受信したスパイク5aにセットされた時差Δtに基づき、送信先ニューロンと送信元ニューロンとの間の結合強度Wを更新する。
【0151】
図21には、送信元ニューロンからのpreスパイク5dが送信先ニューロンに到着するまでの間に、postスパイク5eと合流しない場合(送信先ニューロンでスパイク5d及び5eが合流する場合)の伝送例を示す。
【0152】
ステップB1において、(pre)スパイク5dが送信元ニューロンから送出され、左から1つ目のポイントに到着する。スパイク5dのカウンタCの値が1に更新される。
【0153】
ステップB2~B7の各々では、スパイク5dがポイントを1つずつ紙面右側に進むとともに、スパイク5dのカウンタCの値が1つずつ加算される。
【0154】
ステップB8において、スパイク5dが送信先ニューロンに到着する。スパイク5dのカウンタCの値が8に更新される。スパイク5dのカウンタJの値は初期値(0)のままであるため、送信先ニューロンではスパイク5dが保持される。
【0155】
ステップB9において、スパイク5dのカウンタCの値が9に更新される。また、スパイク5eが送信先ニューロンで発生する。送信先ニューロンは、時差計算回路3と同様の手法によって、スパイク5eを発生させたクロックにおいて、スパイク5eのカウンタCの値(0)とスパイク5dのカウンタCの値(9)との差分の計算により時差Δt(-9)を算出する。送信先ニューロンは、時差Δtの取得後、スパイク5d及び5eを破棄する。また、送信先ニューロンは、取得した時差Δtに基づき、結合強度Wを更新する。
【0156】
このように、スパイク5dは、送信先ニューロンに到着しても他のスパイク5と合流しない場合、ステップごとにカウンタCの値がインクリメントされるとともに、合流まで保持される。これにより、時差計算回路アレイ2は、postスパイク5eの発火タイミングとpreスパイク5dの発火タイミングとの時差(
図21の例ではステップB9とステップB1との時差)Δtを適切に計算及び取得することができる。
【0157】
図22には、送信先ニューロンからのpostスパイク5fが送信元ニューロンに到着するまでの間に、preスパイク5gと合流しない場合(送信元ニューロンでスパイク5f及び5gが合流する場合)の伝送例を示す。
【0158】
ステップC1において、(post)スパイク5fが送信先ニューロンから送出され、右から1つ目のポイントに到着する。スパイク5fのカウンタCの値が1に更新される。
【0159】
ステップC2~C7の各々では、スパイク5fがポイントを1つずつ紙面左側に進むとともに、スパイク5fのカウンタCの値が1つずつ加算される。
【0160】
ステップC8において、スパイク5fが送信元ニューロンに到着する。スパイク5fのカウンタCの値が8に更新される。スパイク5fのカウンタJの値は初期値(0)のままであるため、送信元ニューロンではスパイク5fが保持される。
【0161】
ステップC9において、スパイク5fのカウンタCの値が9に更新される。また、スパイク5gが送信元ニューロンで発生する。送信元ニューロンは、時差計算回路3と同様の手法によって、スパイク5gを発生させたクロックにおいて、スパイク5fのカウンタCの値(9)とスパイク5gのカウンタCの値(0)との差分の計算により時差Δt(+9)を算出する。送信元ニューロンは、時差Δtの計算後、postスパイク5fを破棄するとともに、時差Δtと、値をインクリメントしたカウンタJとをセットした更新後のpreスパイク5gを時差計算回路アレイ2に送信する。
【0162】
ステップC10において、preスパイク5gが左から1つ目のポイントに到着する。このとき、当該ポイントのルータ4及び時差計算回路3は、スパイク5gのカウンタJが1(0以外)であるため、スパイク5gのカウンタCの値の更新を抑制してよい。ステップC10以降、preスパイク5gは、ステップごとに1つずつ紙面右側のポイントに進み、送信先ニューロンに到着後(送信先ニューロンが時差Δtを取得後)に、破棄される。
【0163】
このように、スパイク5fは、送信元ニューロンに到着しても他のスパイク5と合流しない場合、ステップごとにカウンタCの値がインクリメントされるとともに、合流まで保持される。これにより、時差計算回路アレイ2は、postスパイク5fの発火タイミングとpreスパイク5gの発火タイミングとの時差(
図22の例ではステップC9とステップC1との時差)Δtを正確に計算及び取得することができる。
【0164】
なお、送信元ニューロン及び送信先ニューロンの間のホップ数や、時差Δtの値が偶数か奇数か(各スパイク5の発火タイミング)、という要因により、スパイク5の合流がポイント(時差計算回路3及びルータ4)で発生するか、伝送路(ルータ4間)で発生するかが決まる。これは、時差計算回路アレイ2でのルーティング方法に依存するため、ルーティング方法によって、スパイク5の合流がポイント(時差計算回路3及びルータ4)で発生するように制御することも可能である。
【0165】
或いは、時差計算回路アレイ2は、例えば、スパイク5の合流が伝送路(ルータ4間)で発生する場合にも時差Δtを計算できるように設計されてもよい。
【0166】
一例として、時差計算回路3は、合流しないpostスパイク5を受信し、隣接するポイントに転送する際に、少なくとも1クロックの間は、当該スパイク5の複製を保持してもよい。このとき、時差計算回路3は、クロック(ステップ)の増加に応じて、当該スパイク5の複製のカウンタCの値をインクリメントしてよい。時差計算回路3は、postスパイク5を送信してから1クロックの間にpostスパイク5の送信方向(N,E,W,S)からpreスパイク5を受信した場合、当該preスパイク5と、postスパイク5の複製との合流判定、及び、合流した場合の時差計算を行なってよい。
【0167】
これにより、時差計算回路3は、スパイク5の合流場所が隣接する伝送路上である場合にも、時差Δtを計算でき、preスパイク5に時差Δt(及びカウンタJ)をセットして送信先ニューロンに送信できる。
【0168】
図23には、送信元ニューロン及び送信先ニューロンの各々から、複数のスパイク5が送出される場合の動作例を示す。
【0169】
ステップD1において、(pre)スパイク5hが送信元ニューロンから送出され、左から1つ目の伝送路上に存在する。スパイク5hのカウンタCの値は、初期値(0)のままである。
【0170】
ステップD2において、スパイク5hが左から2つ目の伝送路上に存在する。スパイク5hのカウンタCの値は、左から1つ目のポイントで1に更新されている。
【0171】
ステップD3において、スパイク5hが左から3つ目の伝送路上に存在する。スパイク5hのカウンタCの値は、左から2つ目のポイントで2に更新されている。また、(pre)スパイク5iが送信元ニューロンから送出され、左から1つ目の伝送路上に存在する。スパイク5iのカウンタCの値は、初期値(0)のままである。さらに、(post)スパイク5jが送信先ニューロンから送出され、右から1つ目の伝送路上に存在する。スパイク5jのカウンタCの値は、初期値(0)のままである。
【0172】
ステップD4において、スパイク5h及び5jが左から4つ目(右から2つ目)の伝送路上で合流する。スパイク5hのカウンタCの値は、左から3つ目のポイントで3に更新されている。スパイク5jのカウンタCの値は、右から1つ目のポイントで1に更新されている。また、スパイク5iが左から2つ目の伝送路上に存在する。さらに、(pre)スパイク5kが送信元ニューロンから送出され、左から1つ目の伝送路上に存在する。スパイク5i及び5kの各々のカウンタCの値は、初期値(0)のままである。
【0173】
ステップD5において、preスパイク5hが左から5つ目の伝送路上に存在する。スパイク5hには、左から4つ目のポイントで計算された時差Δt_h(-2)と、値がインクリメントされたカウンタJ(1)とがセットされている。なお、postスパイク5jは、廃棄されている。
【0174】
ステップD6において、時差Δt_hがセットされたpreスパイク5hが送信先ニューロンに到着する。送信先ニューロンは、時差Δt_hの取得後、スパイク5hを破棄する。また、スパイク5iが左から4つ目の伝送路上に存在する。スパイク5iのカウンタCの値は、左から3つ目のポイントで3に更新されている。さらに、スパイク5kが左から3つ目の伝送路上に存在する。スパイク5kのカウンタCの値は、左から2つ目のポイントで2に更新されている。また、スパイク5lが送信先ニューロンから送出され、右から1つ目の伝送路上に存在する。スパイク5lのカウンタCの値は、初期値(0)のままである。
【0175】
ステップD6及びD7の間において、スパイク5i及び5lが左から4つ目(右から1つ目)のポイントで合流する。preスパイク5iには、当該ポイントで計算された時差Δt_i(-3)と、値がインクリメントされたカウンタJ(1)とがセットされる。なお、postスパイク5lは、廃棄される。
【0176】
ステップD7において、時差Δt_iがセットされたpreスパイク5iが左から5つ目の伝送路上に存在する。また、スパイク5kが左から4つ目の伝送路上に存在する。スパイク5kのカウンタCの値は、左から3つ目のポイントで3に更新されている。さらに、スパイク5mが送信元ニューロンから送出され、左から1つ目の伝送路上に存在する。また、スパイク5nが送信先ニューロンから送出され、右から1つ目の伝送路上に存在する。スパイク5m及び5nの各々のカウンタCの値は、初期値(0)のままである。
【0177】
ステップD7及びD8の間において、スパイク5k及び5nが左から4つ目(右から1つ目)のポイントで合流する。preスパイク5kには、当該ポイントで計算された時差Δt_k(-3)と、値がインクリメントされたカウンタJ(1)とがセットされる。なお、postスパイク5nは、廃棄される。
【0178】
ステップD8において、スパイク5iが送信先ニューロンに到着する。送信先ニューロンは、時差Δt_iの取得後、スパイク5iを破棄する。また、時差Δt_kがセットされたpreスパイク5kが左から5つ目の伝送路上に存在する。スパイク5kのカウンタCの値は、左から4つ目のポイントで4に更新されている。また、スパイク5mが左から2つ目の伝送路上に存在する。スパイク5mのカウンタCの値は、左から1つ目のポイントで1に更新されている。
【0179】
このように、伝送路上で合流するスパイク5h及び5jについても、時差計算回路アレイ2は、postスパイク5jの発火タイミングとpreスパイク5hの発火タイミングとの時差(
図23の例ではステップD3とステップD1との時差)Δtを適切に計算及び取得することができる。
【0180】
〔D〕その他
上述した実施形態に係る技術は、以下のように変形、変更して実施することができる。
【0181】
例えば、一実施形態に係るスパイク5にセットされるカウンタJ及びCの初期値は、それぞれ0に限定されるものではなく、NC1において共通に定義されていれば、種々の値が用いられてもよい。
【0182】
また、発火ノード11,時差計算回路3及びルータ4の各々のハードウェア構成は、
図14~
図18に例示する構成に限定されるものではなく、適宜変形、変更されてもよい。
【0183】
〔E〕付記
以上の実施形態に関し、さらに以下の付記を開示する。
【0184】
(付記1)
スパイクの存在時間に関するカウンタを含む前記スパイクを発生させる複数のノードと、
前記複数のノード間を相互に接続し、前記スパイクの伝送経路を形成する伝送アレイと、を備え、
前記伝送アレイは、前記スパイクに応じた伝送経路上の1以上の伝送回路により前記スパイクを転送する、複数の伝送回路を備え、
前記複数の伝送回路の各々は、
前記スパイクを転送する際に、前記スパイクの前記カウンタの値を更新し、
前記複数のノードのうちの第1ノードから第2ノードに送信される第1スパイクと、前記第2ノードから前記第1ノードに送信される第2スパイクとの合流を検出した場合に、前記第1スパイク及び前記第2スパイクの各々の前記カウンタの値に基づき算出した時差を、転送する前記第1スパイクにセットする、
ニューロモルフィックコンピューティング回路。
【0185】
(付記2)
前記複数の伝送回路の各々は、前記第2スパイクの前記カウンタの値から前記第1スパイクの前記カウンタの値を減じることで前記時差を算出する、
付記1に記載のニューロモルフィックコンピューティング回路。
【0186】
(付記3)
前記複数の伝送回路の各々は、前記スパイクが1つの伝送回路を移動する時間区間であるクロック内で、前記第1スパイクと、前記第2スパイクとを自身の前記伝送回路が受信した場合に、前記合流を検出する、
付記1又は付記2に記載のニューロモルフィックコンピューティング回路。
【0187】
(付記4)
前記第2ノードは、前記伝送アレイから受信した前記第1スパイクにセットされた前記時差に基づき、前記第2ノードと前記第1ノードとの間の結合強度を更新する、
付記1~付記3のいずれか1項に記載のニューロモルフィックコンピューティング回路。
【0188】
(付記5)
前記スパイクは、合流有無を示す合流情報を含み、
前記伝送回路は、前記第1スパイクと前記第2スパイクとの合流を検出した場合に、前記第1スパイクの前記合流情報を初期値とは異なる値に更新し、
前記第2ノードは、受信した前記第1スパイクの前記合流情報の値が前記初期値とは異なる場合に、前記第1スパイクにセットされた前記時差に基づき、前記結合強度を更新する、
付記4に記載のニューロモルフィックコンピューティング回路。
【0189】
(付記6)
前記第2ノードは、前記伝送アレイから受信した前記第1スパイクの前記合流情報の値が前記初期値である場合に、
前記スパイクが1つの伝送回路を移動する時間区間であるクロックごとに、前記第1スパイクの前記カウンタの値を更新し、
前記第2ノードが前記第2スパイクを発生させたクロックにおいて、前記第1スパイク及び前記第2スパイクの各々の前記カウンタの値に基づき前記時差を算出し、
前記時差に基づき、前記結合強度を更新する、
付記5に記載のニューロモルフィックコンピューティング回路。
【0190】
(付記7)
前記第1ノードは、前記伝送アレイから前記第2スパイクを受信した場合に、
前記スパイクが1つの伝送回路を移動する時間区間であるクロックごとに、前記第2スパイクの前記カウンタの値を更新し、
前記第1ノードが前記第1スパイクを発生させたクロックにおいて、前記第1スパイク及び前記第2スパイクの各々の前記カウンタの値に基づき算出した前記時差を前記第1スパイクにセットし、
前記第1スパイクの前記合流情報を前記初期値とは異なる値に更新し、
前記第1スパイクを前記伝送アレイに送信する、
付記5又は付記6に記載のニューロモルフィックコンピューティング回路。
【0191】
(付記8)
前記複数の伝送回路の各々は、前記合流を検出し、前記時差を算出した場合に、前記第2スパイクを破棄する、
付記1~付記7のいずれか1項に記載のニューロモルフィックコンピューティング回路。
【0192】
(付記9)
前記伝送アレイは、前記複数の伝送回路を二次元又は三次元のメッシュ状に配置し、次元順のルーティングにより前記スパイクに応じた前記伝送経路を形成する、
付記1~付記8のいずれか1項に記載のニューロモルフィックコンピューティング回路。
【0193】
(付記10)
複数のノードと、前記複数のノード間を相互に接続する伝送アレイとを備えるニューロモルフィックコンピューティング回路の制御方法であって、
前記複数のノードの各々が、スパイクの存在時間に関するカウンタを含む前記スパイクを発生させ、
前記伝送アレイに備えられる、前記スパイクに応じた伝送経路上の1以上の伝送回路により前記スパイクを転送する複数の伝送回路の各々が、
前記スパイクを転送する際に、前記スパイクの前記カウンタの値を更新し、
前記複数のノードのうちの第1ノードから第2ノードに送信される第1スパイクと、前記第2ノードから前記第1ノードに送信される第2スパイクとの合流を検出した場合に、前記第1スパイク及び前記第2スパイクの各々の前記カウンタの値に基づき算出した時差を、転送する前記第1スパイクにセットする、
制御方法。
【0194】
(付記11)
前記複数の伝送回路の各々が、前記第2スパイクの前記カウンタの値から前記第1スパイクの前記カウンタの値を減じることで前記時差を算出する、
付記10に記載の制御方法。
【0195】
(付記12)
前記複数の伝送回路の各々が、前記スパイクが1つの伝送回路を移動する時間区間であるクロック内で、前記第1スパイクと、前記第2スパイクとを自身の前記伝送回路が受信した場合に、前記合流を検出する、
付記10又は付記11に記載の制御方法。
【0196】
(付記13)
前記第2ノードが、前記伝送アレイから受信した前記第1スパイクにセットされた前記時差に基づき、前記第2ノードと前記第1ノードとの間の結合強度を更新する、
付記10~付記12のいずれか1項に記載の制御方法。
【0197】
(付記14)
前記スパイクは、合流有無を示す合流情報を含み、
前記伝送回路が、前記第1スパイクと前記第2スパイクとの合流を検出した場合に、前記第1スパイクの前記合流情報を初期値とは異なる値に更新し、
前記第2ノードが、受信した前記第1スパイクの前記合流情報の値が前記初期値とは異なる場合に、前記第1スパイクにセットされた前記時差に基づき、前記結合強度を更新する、
付記13に記載の制御方法。
【0198】
(付記15)
前記第2ノードが、前記伝送アレイから受信した前記第1スパイクの前記合流情報の値が前記初期値である場合に、
前記スパイクが1つの伝送回路を移動する時間区間であるクロックごとに、前記第1スパイクの前記カウンタの値を更新し、
前記第2ノードが前記第2スパイクを発生させたクロックにおいて、前記第1スパイク及び前記第2スパイクの各々の前記カウンタの値に基づき前記時差を算出し、
前記時差に基づき、前記結合強度を更新する、
付記14に記載の制御方法。
【0199】
(付記16)
前記第1ノードが、前記伝送アレイから前記第2スパイクを受信した場合に、
前記スパイクが1つの伝送回路を移動する時間区間であるクロックごとに、前記第2スパイクの前記カウンタの値を更新し、
前記第1ノードが前記第1スパイクを発生させたクロックにおいて、前記第1スパイク及び前記第2スパイクの各々の前記カウンタの値に基づき算出した前記時差を前記第1スパイクにセットし、
前記第1スパイクの前記合流情報を前記初期値とは異なる値に更新し、
前記第1スパイクを前記伝送アレイに送信する、
付記14又は付記15に記載の制御方法。
【0200】
(付記17)
前記複数の伝送回路の各々が、前記合流を検出し、前記時差を算出した場合に、前記第2スパイクを破棄する、
付記10~付記16のいずれか1項に記載の制御方法。
【0201】
(付記18)
前記伝送アレイが、前記複数の伝送回路を二次元又は三次元のメッシュ状に配置し、次元順のルーティングにより前記スパイクに応じた前記伝送経路を形成する、
付記10~付記17のいずれか1項に記載の制御方法。
【符号の説明】
【0202】
1 ニューロモルフィックコンピューティングハードウェア(NC)
10 ネットワークモデル
11 発火ノード
11a 入力バッファ
11b 結合強度機構
11c 発火機構
11d 結合強度メモリ
2 時差計算回路アレイ
3 時差計算回路
31 比較器アレイ
31a 比較器
32 選択値生成回路
33 選択回路
34 計算部
4 ルータ
41,41a~41e FIFO
42 クロスバ
43 制御部
44 調停部
45,45a~45e 出力部
5,5a~5n スパイク
6 チップ