ニューロモルフィックアクセラレータ(例えば、ニューロモルフィックプロセッサや処理クラスタ)は、生物学的神経回路網の速度および接続性に近づけるためにいくつかの方法で編成され得る。ハードウェアに何百万ものニューロンと何十億ものニューロン間接続を効率的に詰め込むことが難しい場合もある。本明細書で詳述する実施形態では、ニューロモルフィックアーキテクチャの処理動作において外部メモリリソースを使用するニューロモルフィックアーキテクチャについて説明する。結果として、数百万または数十億のニューロンにさえもなる、非常に大規模なニューラルネットワークの作成が、単一のアクセラレータチップを使用して開始および利用され得ることになる。これが可能なのは、本手法が、「ファンイン」ではなく「ファンアウト」のニューロモルフィック・アクセラレータ・アーキテクチャを可能にして、様々なニューロンと関連付けられた多くのシナプス状態が外部メモリに分配されることを可能にするからである。加えて、本手法では、シナプスと関連付けられた空間的局所性の局面が、そのようなシナプスからの情報を外部メモリに編成された形で(例えば、隣接したメモリ位置に)格納することによって利用され得る。
SNNは、その基本形では、ノードとエッジとを有するグラフに似ている。SNNでは、ノードはニューロンと呼ばれ、ニューロン間のエッジはシナプスと呼ばれる。ニューロンは、「膜電位」の累積と「スパイク」の2つの機能を果たすよう適合されている。膜電位(単に「電位」とも呼ばれる)は、累計カウンタに似ており、よって電位が十分に高くなるとニューロンがスパイクを発生する。このスパイキングニューロンは一般に「シナプス前ニューロン」と呼ばれる。シナプス前ニューロンは、スパイクを発生すると、「シナプス後ニューロン」と呼ばれる、シナプス前ニューロンのすべてのターゲットニューロンへのすべてのシナプス前ニューロンの出力接続に沿ってスパイクメッセージを送出する。これらのメッセージは各々それと関連付けられた「重み」を有し、これらの重みは正または負の場合があり、シナプス後ニューロンの電位を増減させる。加えて、時間がSNNの重要な局面であり、あるスパイクメッセージは、たとえそれらがシナプス前ニューロンから同時に送信されたとしても、他のスパイクメッセージよりもシナプス後ニューロンに到達するのに長い時間を要する場合がある。
以下の構成は、具体的には図3から図5に詳述されているように、シナプスデータを外部メモリで格納するSNNを実装するためのアクセラレータチップの構成を提供する。SNNが動作する文脈、およびニューロモルフィックハードウェアで実装されるSNNの全体アーキテクチャについては、図1および図2に示されており、以下の段落で論じる。また、本明細書で使用する場合、少なくともいくつかの例での「ニューラルネットワーク」への言及は、特にSNNを指すことが意図されている。よって、本明細書における「ニューロン」への多くの言及は、SNNにおける人工ニューロンを指すことが意図されている。しかしながら、以下の例および構成のうちのいくつかは、人工ニューラルネットワークの他の形態または変形形態にも適用され得ることが理解されよう。
上記のアーキテクチャは多くのニューロンおよび接続の効率的なモデル化を可能にするが、SNNの一般的に疎な信号挙動はアイドル状態のハードウェアをもたらし得る。この問題に対処するために、複数のSNNが同じハードウェア上で動作し得る。同じハードウェア上の異なるSNN間の効率的なニューロンアドレス指定の問題は、ネットワークアドレス変換回路(NATC)とも呼ばれる、ネットワークアドレス変換ユニット(NATU)によって実装される、ローカルアドレス指定(例えばSNN内アドレス指定)と物理アドレス指定(例えばグローバルアドレス指定やハードウェアアドレス指定)との組み合わせの技法によって克服され得る。よって、SNNは、例えばそのSNNのシナプスデータ内のローカルアドレスを使用してニューロン間接続を格納し得る。別のSNNも同じことをし得る。しかしながら、NATUは、ニューロンデータを処理するニューロンプロセッサをアドレス指定するために、ローカルネットワーク識別子(local network identifier(LNID))を物理ネットワーク識別子(physical network identifier(PNID))に変換し得る。NATUは同じハードウェア上の異なるSNNにデータ分離を提供するので、SNN自体を特別に設計することなく複数のSNNがハードウェア上で同時に実行され得る。よって、SNNの追加、すなわちSNNマルチタスキングを介してハードウェア利用率が高まり得る。
ニューロモルフィックハードウェア上の複数のSNNの1つの使用事例が、SNNのクローニングである。クローン化SNNでは、ニューロン状態のコピーが作成され維持される。よって、2つのSNNは、入力処理を妨げることなく同時に動作し得る。しかしながら、ネットワークが同様に振る舞うようにするために、クローン化SNNはシナプスデータを共有し得る。これにより、シナプスデータが2つのネットワーク間で共有されるので、両方のネットワークが同様のデータに同様に応答することが可能になり、シナプスデータ空間を保存し、異なるデータセットでの効率的な訓練さえも可能になる。例えば、第1のクローン化SNNがデータセットAで訓練している場合、第2のSNNは同時にデータセットBで訓練し得る。STDPを実現するために両方のSNNが共有シナプスデータを更新するので、第1のネットワークは、データセットBの処理からのシナプスデータへの第2のネットワークの更新に基づいてデータセットBで訓練することになる。
図1に、第1のノードセット130(例えば、ニューロン)と第2のノードセット140(例えば、ニューロン)との間の接続135の事例を提供する、簡略化されたニューラルネットワーク110の例示的な図を示す。ニューラルネットワーク(簡略化されたニューラルネットワーク110など)は、一般に、入力層と出力層とを含む複数の層に編成される。簡略化されたニューラルネットワーク110は、2つの層と少数のノードのみを示しているが、他の形態のニューラルネットワークは、多数のノード、層、接続、および経路を含み得ることが理解されよう。
ニューラルネットワーク110に提供されるデータは、まず入力ニューロンのシナプスによって処理される。入力とニューロンのシナプスとニューロン自体との間の相互作用により、出力が別のニューロンに提供されるかどうかが決定される。シナプス、ニューロン、軸索などをモデル化することは、様々な方法で達成され得る。一例では、ニューロモルフィックハードウェアは、合成ニューロン(例えば、ニューロコア)内の個々の処理要素と、出力を他のニューロンに伝達するメッセージングファブリックとを含む。特定のニューロンが次に接続されたニューロンにデータを提供するために「発火」するかどうかの決定は、ニューロンによって適用される活性化関数と、(例えば、第1のノードセット130の層に位置する)ニューロンjから(例えば、第2のノードセット140の層に位置する)ニューロンiへのシナプス接続の重み(例えばwij150)とに依存する。ニューロンjによって受信された入力は値xj120として示されており、ニューロンiから生成された出力は値yi160として示されている。よって、ニューラルネットワークで実行される処理は、重み付き接続と、閾値と、ニューロン、シナプス、およびニューラルネットワークの他の要素の間で行われる評価とに基づくものである。
一例では、ニューラルネットワーク110は、SNNコアのネットワークから確立され、ニューラル・ネットワーク・コアは、コアからコアへ送信される短いパケット化されたスパイクメッセージを介して通信する。例えば、各ニューラル・ネットワーク・コアは、いくつかのプリミティブな非線形時間計算素子をニューロンとして実装し得るので、ニューロンの活性化がある閾値レベルを超えると、送信先コアに含まれる固定されたファンアウトニューロンのセットに伝播されるスパイクメッセージを生成する。ネットワークはスパイクメッセージをすべての送信先ニューロンに配信することができ、これに応答してそれらのニューロンは実際の生物学的ニューロンの動作と同様に、過渡的な時間依存方式でそれぞれの活性化を更新する。
ニューラルネットワーク110はさらに、第1のニューロンセット内のニューロンj(例えば、第1のノードセット130のニューロン)において、値xj120で表されるスパイクの受信を示している。ニューラルネットワーク110の出力も値yi160によって表されるスパイクとして示されており、これは、接続135によって確立されたパスを介して第2のニューロンセット内のニューロンi(例えば、第2のノードセット140のニューロン)に到達する。スパイキング・ニューラル・ネットワークでは、すべての通信がイベント駆動型の活動電位、すなわちスパイクに介して行われる。一例では、スパイクは、スパイク時間および送信元・送信先ニューロン対以外の情報を伝達しない。実数値の状態変数を使用した重み付きスパイク入力の動的非線形積分の結果として、計算が各ニューロンで行われる。特定のニューロンによってまたは特定のニューロンに対して生成されるスパイクの時系列は、そのニューロンの「スパイク列」と呼ばれ得る。
SNNの一例では、活性化関数がスパイク列を介して行われ、これは考慮される必要のある要因が時間であることを意味する。さらに、SNNでは、各ニューロンは生物学的ニューロンをモデルとし得る。というのは、人工ニューロンはその入力を1つまたは複数の「樹状突起」(生物学的ニューロンの物理構造の一部)へのシナプス接続を介して受信することができ、これらの入力は、人工ニューロンの「細胞体」(cell body)の内部膜電位に影響を及ぼすからである。前述したように、SNNでは、人工ニューロンは、その膜電位が発火閾値を超えると、「発火」する(例えば、出力スパイクを生成する)。よって、SNNニューロンに対する入力の影響は、内部膜電位を増加または減少させるように作用し、ニューロンが発火する可能性をより高くするかまたはより低くする。さらに、SNNでは、入力接続は刺激的または抑制的であり得る。ニューロンの膜電位は、ニューロン自体の内部状態の変化(「リーク(leakage)」)によっても影響され得る。
いくつかの例では、ニューラルネットワークは、スパイクタイミング依存可塑性(STDP)などの学習技法を使用した学習を実装するために、ニューラルネットワーク経路内のスパイクを利用し得る。例えば、ニューラルネットワーク経路は、処理のためにシナプス前ニューロンXPREに提供されている1つまたは複数の入力(例えば、スパイクやスパイク列)を利用し得る。ニューロンXPREは第1のスパイクを生じさせ、第1のスパイクは処理のためにニューロンXPOSTに伝播される。ニューロンXPREとシナプス後ニューロンXPOSTとの間の接続(例えば、シナプス接続)は、重みに基づいて重み付けされる。ニューロンXPOSTで受信された(例えば、1つまたは複数の接続から受信された)入力が特定の閾値に達すると、ニューロンXPOSTは活性化し(例えば、「発火」し)、第2のスパイクを生じさせる。
第1のスパイクの結果として第2のスパイクが生じるという決定は、STDPの原理に基づいて(例えば、重みを修正することによって)ニューロンXPREとニューロンXPOSTとの間の接続を強化するために使用され得る。具体的には、STDPは、入力スパイク(例えば、第1のスパイク)と出力スパイク(例えば、第2のスパイク)との間のタイミングを相関させることによって、ニューラルネットワーク内のニューロン間の接続(例えば、シナプス)の強度を調整するために使用され得る。別の例では、重みは、長期増強(LTP)、長期抑圧(LTD)、または他の技法の結果として調整され得る。ニューラルネットワーク経路は、同じ原理で動作する他のニューロンと組み合わされると、入力における繰り返しパターンが経時的に経路を強化するので、自然な教師なし学習を示し得る。逆に、ノイズは、時々スパイクを生成し得るが、関連付けられた経路を強化するのに十分なほど規則的にはならない。
図2に、一実施形態による、モデル・ニューラル・コア構造の専門的な図を示す。以下のニューラルコア構造は、SNNマルチタスキングおよびSNNクローニングについて後述するような追加の技法および構成を実装し得る。よって、図2の略図は、ニューロモルフィックハードウェア演算がどのように行われ得るかについての簡略化された例として提供されている。
一例では、ニューラルコア205は、ニューラルチップ255を形成するためにいくつかの他のニューラルコアと共にダイ上にあり得る。いくつかのニューラルチップ255がパッケージ化され、相互にネットワーク接続されて、ニューロモルフィックハードウェア250を形成し、これが、サーバ、モバイル装置、センサ、アクチュエータなどの任意の数の装置245に含まれ得る。ニューロモルフィックハードウェア250は、これらの装置のプライマリプロセッサ(例えば、図10に関連して後述するプロセッサ1002)であってもよく、またはこれらの装置の別のプロセッサを補完するコプロセッサもしくはアクセラレータであってもよい。図示したニューラルコア構造は、上述した方式で生物学的ニューロンの挙動を機能的にモデル化する。適切な重みおよび遅延オフセット(例えば、樹状突起がどのシナプスに対応するかを識別するシナプスアドレス215によって表される)を有する、他の樹状突起構造へのコア205内のファンアウト接続をもたらし得る信号が入力(例えば、イングレススパイク、スパイクインなど)においてシナプスに提供される(例えば、シナプス可変メモリ内のシナプス荷重220によってモデル化される)。信号は、(例えば、シナプス荷重がそれぞれのシナプスをアドレス指定するスパイクに適用されるときに)シナプス可変メモリによって修正され、ニューロンモデルに利用できるようにされ得る。例えば、ニューロン膜電位225の組み合わせは、重み付きスパイクと多重化(235)され、重み付きスパイク状態に基づいて出力スパイク(例えば、1つまたは複数の送信先コアへの軸索を介したエグレススパイク)を生成するためにニューロンの電位と比較(240)され得る。
一例では、ニューロモルフィック・コンピューティング・システムは、前述したSTDPの技法などによる学習210を用い得る。例えば、ニューラル・ネットワーク・コアのネットワークは、コアからコアへ送信される短いパケット化されたスパイクメッセージを介して通信し得る。各コアは、プリミティブな非線形時間計算素子として動作するいくつかのニューロンを実装し得る。ニューロンの活性化がある閾値レベルを超えると、ニューロンは、送信先コアに含まれるファンアウトニューロンのセットに伝播されるスパイクメッセージを生成する。その活性化レベルを管理する際に、ニューロンはそれ自体をスパイクに応答して修正し得る(例えば、シナプス荷重を修正し得る)。これらの動作は、いくつかの時間依存的特徴をモデル化し得る。例えば、スパイクの後に続いて、PREスパイクの影響は指数関数的に減衰し得る。指数関数としてモデル化されたこの指数関数的減衰は、いくつかの時間ステップにわたって継続する可能性があり、その間に追加のスパイクが到達する場合もあり、到達しない場合もある。
ニューラルコア205は、シナプス荷重220を格納するように適合されたメモリブロック、ニューロン膜電位225のためのメモリブロック、統合ロジック235、閾値処理ロジック240、STDP210に基づくオンライン学習および重み更新ロジック、ならびにスパイク履歴バッファ230を含み得る。(例えば、以下で、図3〜図5に関連して)本明細書で論じる技法を用いて、シナプス荷重220および膜電位225は、(例えば、内部SRAMに格納された)オンチップニューロン状態データと(例えば、DRAMに格納された)オフチップ・シナプス・データとの間で分割され得る。
特定の実装形態では、シナプス前ニューロンからのスパイクが受信されると、シナプス荷重がアクセスされ、シナプス後ニューロンの膜電位(u)に加算される。更新された(u)が事前設定されたスパイク閾値よりも大きい場合、出力スパイクが生成される。出力スパイクは、コア内の各ニューロンが最後にスパイクを発生して以来経過した時間ステップ数(tPOST)をカウントするスパイク履歴バッファをリセットする。別の例では、ニューラルコアは、LTD、単一のPREスパイクLTP、または複数のPREスパイクLTPなど、提案のコアで行われるオンライン(例えば、チップ内)の学習動作の変形形態を実装し得る。
Δwによって計算される新しいシナプス荷重は、将来のPREスパイクを修正(例えば、重み付け)するためにシナプスメモリにインストールされ、よって、PREスパイクの特定の組み合わせがPOSTスパイクを生じさせる可能性を修正する。ネットワークはスパイクメッセージを送信先ニューロンに配信し、スパイクメッセージを受信したことに応答してそれらのニューロンは、生物学的ニューロンの動作と同様に、過渡的な時間依存方式でそれぞれの活性化を更新する。
ニューラルコア205におけるいくつかの適用可能な学習アルゴリズムの基本的な実装は、STDPを介して提供することができ、STDPは、入力(例えばイングレス)スパイクと出力(例えばエグレス)スパイクとの間のタイミングを相関させることに基づいてニューラルネットワーク内のニューロン間の接続(例えばシナプス)の強度を調整する。ニューロンの出力スパイクの直前にある入力スパイクは出力の原因とみなされ、それらの重みは強化されるが、他の入力スパイクの重みは弱められる。これらの技法は、スパイク時間またはモデル化されたスパイク時間を使用して、モデル化されたニューラルネットワークの動作が教師なし学習モードや強化学習モードなどのいくつかの機械学習モードに従って修正されることを可能にする。
別の例では、ニューラルコア205は、逆方向伝播処理をサポートするように適合され得る。生物学では、細胞体がスパイク(例えばエグレススパイク)を発生すると、そのスパイクが下流へ他のニューロンに伝播することに加えて、スパイクは樹状突起樹を通って逆方向にも伝播し、これは学習にとって有益である。シナプスにおけるシナプス可塑性は、シナプス後ニューロンがいつ発火するか、またシナプス前ニューロンがいつ発火してかについての関数であり、シナプスはニューロンがいつ発火するかを知っている。よって、マルチコンパートメントアーキテクチャでは、細胞体がいったん発火すると、ニューロンが発火したことを知っている他の要素が学習をサポートするために存在し、例えば、そのためすべての入力ファンインシナプスは、そのニューロンが発火したことがわかる。学習構成要素210は、STDPを実装し、この逆方向活動電位(bAP)通知を(例えば、トレース計算回路を介して)受信し、しかるべくシナプスと通信し、シナプスを調整し得る。しかしながら、ニューラルコア205の動作局面に対する変更は、ニューロモルフィックハードウェアのタイプおよび実装において使用される学習、強化、およびスパイク処理の技法のタイプに基づいて著しく異なり得ることが理解されよう。
図3に、スパイキング・ニューラル・ネットワークのためのニューロモルフィックアーキテクチャ310の概要を示す。具体的には、このアーキテクチャは、外部メモリにおいてニューラルネットワーク動作のシナプスデータを格納し、また取り出すように構成されたアクセラレータチップ320を示している。
アクセラレータチップ320は、3つのタイプの構成要素、すなわちニューロンプロセッサ350と、軸索プロセッサ(AP)340(例えば第1の軸索プロセッサセット340A)と、メモリコントローラ(Memory Controller(MC))330(例えば第1のメモリコントローラ330A)とを、これらの構成要素間の必要な相互接続(例えばバス)に加えて含むように構成される。アーキテクチャ310において、SNNの処理機能の働きは、以下の構成を有するニューロンプロセッサ350と軸索プロセッサ340との間で分割されるように構成される。
一例では、各軸索プロセッサ340は、(例えば、それぞれのメモリセット360A、360B、360C、360Dで示されるように)外部メモリ360の1つの物理チャネルに緊密に結合されるように構成され、そのメモリのチャネルにシナプスデータが存在するスパイクの処理を、それぞれの軸索プロセッサ340が担当する。外部メモリ360は、それぞれの高性能DRAM(例えば、高帯域幅メモリ(High Bandwidth Memory(HBM))規格DRAM、ハイブリッド・メモリ・キューブ(Hybrid Memory Cube(HMC))規格DRAMなど)のセットまたは構成を構成し得る。他の例では、外部メモリ360は、他の形態のより低速だが高密度のメモリ(積層型相変化メモリ(例えば、3D XPoint規格を実装する)、DDRx−SDRAM、GDDRx SDRAM、LPDDR SDRAM、ダイレクト・スルーシリコン・ビア(TSV)ダイ積層型DRAMなどを含む)を構成し得る。
処理がアクセラレータチップ320内の複数の構成要素間で分割されることに加えて、様々なSNN状態の記憶も分割される。ニューロン状態は、オンチップSRAM実装形態(図示せず)の場合のように、ニューロンプロセッサ350に隣接したチップに格納されるが、シナプスデータは、外部メモリ360に格納される。この分割は、データのサイズとデータの局所性という2つの主な理由で行われる。
シナプスデータは、ニューロン状態データよりも桁違いに多くのメモリ空間を占有する。また、シナプスデータは高い空間的局所性でアクセスされるが時間的局所性はなく、一方、ニューロンデータは、空間的局所性はないが、高い時間的局所性でアクセスされる。さらに、SNNでは時間の概念が強くあり、スパイクメッセージの中には他のものよりも生成と伝播に時間を要するものがある。SNNアクセラレータ300では、従来のSNNアクセラレータ設計と同様に、時間は離散的な論理的「時間ステップ」に分割される。各時間ステップの間に、いくつかのスパイクメッセージがそれらのターゲットに到達し、いくつかのニューロンがスパイクを発生し得る。これらの論理的時間ステップは各々、処理に多くのアクセラレータ・クロック・サイクルを要する。シナプスデータの格納は、そのようなデータが使用されていない比較的長時間の間には外部メモリ360に適し得る。
しかしながら、SNNアクセラレータ300の構成によって解決される重要なニューロモルフィック処理問題は、ネットワークサイズとプログラム可能性とのバランスである。いくつかのSRAMベースのSNNアクセラレータでは、中程度のニューラル・ネットワーク・サイズを達成するためでさえも、ニューロン間で作成され得る接続と作成できない接続(すなわち、シナプスのプログラム可能性)に対して制約が加わる。これらの制約は、ニューロン間のシナプス共有、制限された接続性行列、または制限的な圧縮要求という形を取り得る。言い換えると、各ニューロンは、各ニューロンを任意のターゲット・ニューロン・セットに接続する一意のシナプスセットを有することを妨げられる。外部メモリバンクの容量の増加により、ずっと大きなSNNへの拡張の柔軟性が可能になり、各シナプスが一意の<ターゲット,重み>対によって定義される。しかしながら、SRAMベースのSNNアクセラレータでシナプスおよびニューロン状態を管理するために使用されるのと同じ技法は、SNNアクセラレータ300内で使用され、SNNアクセラレータ300が外部メモリ360で提供するすでに非常に大きい有効容量をさらに増加させ得る。
外部メモリ360において、各ニューロンはそのシナプスを指定する<ターゲット,重み>対のリストを有する。このリストはメモリにおいて時間ステップ(「遅延スロット」とも呼ばれる)によってさらに編成され、そのシナプス後ニューロンに同時に「到達」することになるすべてのシナプスは互いに隣り合ってメモリに格納される。例えば、シナプスデータは、隣接したもしくは連続したメモリブロックに、または書き込みもしくは読み出しが少ない動作回数もしくは時間量で行われることを可能にするメモリ内の位置に格納され得る。一例では、ニューラルネットワークの各所与の時間ステップの間に、その時間ステップの間に到達することになるシナプス前ニューロンのすべてのシナプスが外部メモリ360からフェッチされ、一方、他の時間ステップに関連するシナプスはどれも外部メモリ360からフェッチされない。
<ターゲット,重み>タプルは、ニューロン間の接続をアドレス指定する直接的な方法を提供する。SNNマルチタスキングを可能にするために複数のSNNがニューロモルフィックアーキテクチャ310によってホストされる場合、異なるSNNを区別する機構が必要である。一例では、「ターゲット」フィールドにグローバル・ニューロン・アドレスを指定し得る。しかしながら、この手法では、様々なSNNが基礎となるハードウェアや他のSNNを考慮して設計される必要がある。この問題に対する解決策がネットワークアドレス変換であり、ネットワーク内ニューロンアドレスとグローバル(例えば物理)ニューロンアドレスとの間で変換を行って、個々のSNNがローカルアドレスを使用してそれ自体のニューロンを簡単にアドレス指定することを可能にする一方で、ニューロモルフィックハードウェアは、引き続きグローバル・ニューロン・アドレスを使用して基礎となる処理タスクを実施し得る。追加の例については図4Bおよび図6A〜図8Aに関連して後述する。
SNNアクセラレータ・チップ・アーキテクチャ310の動作の一例として、シナプス前ニューロンがスパイクを発生する瞬間を考える。上述したように、ニューロンがスパイクを発生するのは、その電位が所定の(プログラマブルな)閾値を上回って上昇したと、そのニューロンが維持されているニューロンプロセッサ350によって判断されたからである。ニューロンがスパイクを発生すると、ニューロンは、そのシナプスデータが維持されているメモリのチャネルに接続された軸索プロセッサ340(例えば、軸索プロセッサ340のセットに含まれる特定の軸索プロセッサ340A)に(シナプス前ニューロンのIDを含む)スパイクメッセージを送信する。この特定の軸索プロセッサ340Aは、スパイキングニューロンIDをスパイキングニューロンのリストに追加し、次の時間ステップの間にその最初の遅延スロットシナプスの処理を開始する。
次の時間ステップが始まると、特定の軸索プロセッサ340Aはシナプス前ニューロンの現在の遅延スロットに関連するシナプスを(例えばメモリコントローラ330Aを介して外部メモリ360Aから)フェッチするが、軸索プロセッサ340Aは他の遅延スロットのシナプスをまだフェッチしない。シナプス前ニューロンIDは、そのすべての遅延スロットがフェッチされ、処理されるまで、さらに数時間ステップにわたって軸索プロセッサのスパイキングニューロンのリストに留まる。時間ステップあたりのシナプスリストがフェッチされているときに、軸索プロセッサ340Aは、スパイクメッセージを作成するために<ターゲット,重み>対のリストを読み出し、スパイクメッセージは指定された重みと共にシナプス後ニューロンに送出され、よって、受信側のシナプス後ニューロンのシナプス荷重を事前に適用する。そのような各スパイクメッセージは、軸索プロセッサ340Aを出てニューロンプロセッサ350に戻り、そこで特定のシナプス後ニューロンを担当する特定のニューロンプロセッサ350を見つける。
スパイクメッセージが配信されると、特定のニューロンプロセッサ350はシナプス後ニューロンの状態をローカルのSRAM(図示せず)からフェッチする。このニューロンプロセッサは次いで、スパイクメッセージの重みに従ってターゲットニューロンの電位を修正し、次いでニューロン状態をそのローカルSRAMに書き戻す。各時間ステップの終わりに、すべてのニューロンプロセッサ350内のすべてのニューロンをスキャンして、それらがその時間ステップの間にスパイクを発生したかどうかを確認しなければならない。ニューロンがスパイクを発生した場合、ニューロンはスパイクメッセージを適切な軸索プロセッサ340に送信し、プロセス全体が再び始まる。ニューロンがこの時間ステップの間にスパイクを発生しない場合には、ある「漏洩」関数に従ってその電位がわずかに低減される。ニューラルネットワークの動作に対する他の変形形態は、そのようなネットワークの特定の設計および構成に基づいて行われ得る。
一例では、SNNアクセラレータ300のニューロモルフィックハードウェア構成が、複数のニューロモルフィックコアとそれぞれのコアを接続するネットワークとを含むアクセラレータ・ハードウェア・チップを介して実装(例えば実現)され得る。以下の構成で論じるように、それぞれのニューロモルフィックコアは、ニューロンプロセッサ350の動作を行う「ニューロン・プロセッサ・クラスタ」(以下、NPC)、または軸索プロセッサ340の動作を行う「軸索プロセッサ」(AP)を構成し得る。よって、ネットワーク全体に分散された単一コアタイプが、ニューロンと軸索両方の処理能力を含む従来のニューロモルフィックハードウェア設計とは対照的に、本設計は、ニューロン機能と軸索機能とに分離された、ネットワーク全体に分散された2つのコアタイプを含む。
図4Aに、本ニューロモルフィックハードウェア構成(例えば、図3で論じたアーキテクチャ310)で使用するためのニューロン・プロセッサ・クラスタ(NPC)の例示的な構成を示す。図示のように、NPC410は、3つの主要構成要素、すなわち1つまたは複数のニューロンプロセッサ420(NP)と、SRAMベースのニューロン状態メモリ430(Neuron State Memory(NSM))と、オンチップネットワークへの接続(ネットワークインターフェース(Network Interface(NI))444およびスパイクバッファ(Spike Buffer(SB)442)とで構成される。一例では、すべてのニューロンの処理が時分割多重方式で行われ、NP420がNSM430からニューロン状態をフェッチし、ニューロン状態を修正し、次いで別のニューロンに作用する前にニューロン状態を書き戻す。NSM430は、複数のNP420によって並列にアクセスされることを容易にするためにマルチバンク化され得る。
スパイクメッセージがNPC410に到達すると、スパイクメッセージは、メッセージが処理され得るまでSB442でバッファされる。アドレス生成ユニット(AGU)は、その状態が次いでフェッチされるNSM430内のシナプス後ニューロンのアドレスを決定し、次いでニューロン処理ユニット(NPU)は、ニューロン状態をNSM430に書き戻す前にスパイクの重みの値をシナプス後ニューロンの電位に加算する。現在の時間ステップの終わりに、すべてのNPC内のすべてのニューロンがNPUによってスキャンされて、それらの電位がスパイキング閾値を上回ったかどうかが確認される。ニューロンがスパイクを発生した場合、スパイクメッセージが生成され、NI444を介して適切な軸索プロセッサに送信される。
一例では、NPUは、加算、減算、シフト、および比較の各演算を低精度(例えば16ビット)でサポートしさえすればよい簡略化された算術論理演算装置(ALU)である。NPUはまた、漏洩‐積分‐発火(leaky‐integrate‐fire)ニューロンモデルのための膜電位漏洩を行う役割を担う。時分割多重化により、物理NPUの数はニューロンの総数よりも少なくなる。最後に、制御ユニット(CU)が、NPC内の全体的な動作を調整し、これは単純な有限状態機械またはマイクロコントローラとして実装され得る。
図4Bに、本ニューロモルフィックハードウェア構成(例えば、図3で論じたアーキテクチャ310)で使用するための軸索プロセッサ(AP)450の例示的な構成を示す。シナプス状態は外部高帯域幅メモリに格納され、様々な軸索プロセッサ(AP)を介してアクセスされるので、軸索プロセッサ(AP)450はシナプスデータを格納し、シナプスデータにアクセスするためのメモリパイプラインを含む。例えば、図4Bに示すように、AP450は、メモリコントローラ(MC)460を介してDRAM470に接続される。
NPC410と同様に、AP450は、NIおよびSBを用いて、ネットワークオンチップとの間でスパイクメッセージを送受信する。シナプス後ニューロンに送信すべきスパイクメッセージを生成するために、AGUはまずシナプス前ニューロンのシナプスリスト(「シナプスリスト」)に対応するアドレスを生成する。シナプスリストは、シナプスの長さ、接続性、タイプなどに関する情報を含むヘッダを含み得る。シナプスリスト復号器(Synapse List Decoder(SLD))は、シナプスリストを解析し、そのようなヘッダ、ターゲットニューロンID、シナプス荷重などを識別する役割を担う。SLDはAGUと連携してシナプスリスト全体をフェッチする。シナプスリストのサイズはシナプス前ニューロン間で異なり得る。
一例では、シナプスリストは、遅延スロット順として編成されているので、AP450は、シナプス・リスト・キャッシュ(Synapse List Cache(SLC))で一時的にバッファされている現在の遅延スロットについてのシナプスのリストのみをフェッチすることになる。AP450は現在の遅延スロットのスパイクメッセージをネットワークに送出する。SNNサイズが十分に小さく、SLCが十分に大きい場合、次の遅延スロット内のシナプスはプリフェッチされSLC内に保持され得る。外部メモリ(DRAM470)からのシナプスリスト読み出しは、非常に良好な空間的局所性を有し、高帯域幅をもたらす。
SNNマルチタスキングを実現するために、AP450のAGUはネットワークアドレス変換ユニット(NATU)465を含み得る。NATU465は、単一のSNN内で使用されるローカルニューロン識別子(LNID)と、ニューロンに対応するNPUを見つけるためにNPC410によって使用される物理ニューロン識別子(PNID)との間のアドレス変換を提供する電子ハードウェア(例えば、処理回路や図10に関連して後述する回路セット)である。ニューラル・ネットワーク・マルチタスキングを実現するために、NATU465は、例えば第1のインターフェース(例えば、有線、バス、相互接続など)を介してスパイクメッセージを受信するように構成される。スパイクメッセージは、NPC410からAP450を介してNATUに到達し得る。この場合、スパイクメッセージは、スパイクを生じさせたニューロンのPNIDを含む。
NATU465は、PNIDをネットワーク識別子(NID)とLNIDとに変換するように構成される。NIDは、NPC410によって同時に実装されたいくつかのニューラルネットワークのうちのどれにスパイクメッセージが発信されたかを識別する。LNIDは、スパイクメッセージを生成するニューロンのネットワーク内識別子である。よって、LNIDは、2つの異なるニューラルネットワークが同じLNIDのニューロンを有し得るように、ネットワーク内で使用され得る。しかしながら、これらの各ニューロンのNIDとLNIDとの組み合わせは、NIDが異なるため異なることになる。この構成により、様々なネットワークがニューロンアドレスの衝突を懸念することなくニューロンメンバをアドレス指定することが可能になる。
NATU465は、PNIDをPNID範囲のセットと比較することによってPNIDをNIDとLNIDとに変換するように構成される。この場合、各PNID範囲は一意のNIDに対応する。この場合、NATU465は、所与のNIDのPNID開始値および停止値を保持するテーブルまたはレジスタセットを含むか、またはそれらにアクセスし得る。図7にまさにそのようなNATUテーブルを示す。よって、NATU465は、PNIDが与えられると、適切なNIDを見つけるためにNIDごとにPNID_begin値およびPNID_end値を比較し得る。一例では、LNIDは、所与のNIDについてのPNID範囲内のオフセットであり得る。よって、例えば、105がNATU465によって評価されているPNIDアドレスであり、100のPNID_beginおよび115のPNID_endを有するNID Bの範囲に入る場合には、105のLNIDは5であり、100〜115の範囲内の5番目のPNIDである。よって、PNIDからLNIDへの変換は、PNIDから、対応するPNID範囲のPNID_begin値を減算することを含み得る。同様に、LNIDおよびNIDが与えられると、NIDに対応するPNID_begin値がLNIDに加算されてPNIDに到達し得る。
一例では、PNIDをNIDとLNIDとに変換するために、NATU465は、PNIDの一端からNID長に対応するいくつかのビットを除去するように構成される。この例では、PNIDは、NIDとLNIDとの連結であり、よって例えば、PNIDは、NIDビットとそれに続くLNIDビット、またはLNIDビットとそれに続くNIDビットである。この構成は直接的であり、効率的なハードウェア実装に適しているが、NIDに予約されているビット数は、NIDのサイズに基づくホストされ得る異なるネットワーク数と、LNIDのサイズに基づく各ネットワークが有し得るニューロンの数との設計選択肢を伴うので、やや柔軟性を欠く場合がある。
NATU465は、NIDに基づいてスパイクメッセージに関連するシナプスデータを見つけるように構成される。一例では、シナプスデータはメモリアドレス範囲を含む。この場合、NIDに対応するニューラルネットワーク全体のシナプスデータは、DRAM470内で隣接しているやはり、この一例も図7に示されており、NIDのNATUテーブルエントリは、そのNIDのシナプスデータを含むメモリの開始アドレスおよび終了アドレスを含む。NIDに対応するニューラルネットワーク全体のシナプスデータが見つかると、NATU465はそのシナプスデータを、例えばアドレスを提供することによってAP450に伝達するように構成される。AP450は次いで、MC460を用いてシナプスデータを取り出すか、またはAGUを用いてシナプスデータのどのサブセットがスパイクメッセージに関連するかを判断し、次いでMC460を使用してメモリ470からそのサブセットを取り出し得る。
NATU465は、シナプスデータから見つかったシナプス構造に基づいて、第2のスパイクメッセージがLNIDにアドレス指定されていると判断するように構成される。これは、結果が、上述した、NPC410(または他の処理回路)からAP450への出力ではなく、NPC410に到達することになるスパイクメッセージの入力パスである。この場合、NATU465は、シナプスデータに対応するNIDを使用してLNIDをPNIDに変換するように構成される。LNIDと既知のNIDからPNIDを作成するこの逆のプロセスは、NPC410が修正なしに動作し、しかもニューラル・ネットワーク・マルチタスキングをサポートすることを可能にする。一例では、LNIDをPNIDに変換するために、NATU465は、NIDをLNIDの一端(例えば、先頭または末尾)に連結するように構成される。一例では、NATU465は、送信先ニューロンを識別するためにPNIDを使用してAP450に第2のスパイクメッセージを伝達するように構成される。この通信は、NATUの第2のインターフェースを介して行われ得る。一例では、NATUの第1のインターフェースと第2のインターフェースとは同じインターフェースである。
スパイクを処理する過程で、AP450は、いくつかのNPCによって消費されることになるいくつかのスパイクメッセージをネットワークにディスパッチし得る。したがって、各AP450は、NPC410とAP450との間の任意の帯域幅の不均衡を考慮するために、ネットワークへの複数のドロップオフポイント(すなわち、複数のNIおよびSB)を有し得る。
加えて、AP450は、シナプスデータへの更新を提供する役割を担うシナプス可塑性ユニット(Synaptic Plasticity Unit(SPU))も含み得る。これらの更新は、シナプス接続の増分、減分、プルーニング、および作成を含み得る。SPUは、スパイクタイミング依存可塑性(STDP)、短期/長期の抑圧/増強などを含む様々な学習規則を実装し得る。SPU更新はまた、追加の読み出し‐修正‐書き込みをなくすために、メモリからフェッチされたシナプスデータに対して、それを書き戻す前に行われ得る。
上記のように、ニューラル・ネットワーク・マルチタスキングの1つの使用事例は、ニューラル・ネットワーク・クローニングを含む。クローニングは、ニューロモルフィックハードウェアにおいて第1のニューラルネットワークの一部分を第2のニューラルネットワークに複製すること、次いでニューロモルフィックハードウェア上で両方のネットワークを動作させることを含む。クローニングの一例は、(例えば、NSM430からの)ニューラル状態または(例えば、メモリ470からの)シナプス状態を新しい位置にコピーし、新しいNIDを、その新しいNIDを指し示す(例えば、図7に示すような)NATU情報と共にこれらの異なるニューラル状態およびシナプス状態の範囲に割り当てることを含み得る。
しかしながら、クローニングの一例は、別個のニューラル状態間でシナプス状態を共有する異なるニューラルネットワークを含み得る。よって、2つのネットワークのニューロン状態は別々であるが、シナプスは共有される。これは、1つのネットワークのニューラル状態をNSM430の別の部分にコピーするが、NATU情報内のシナプスポインタの同一のエントリを有することによって達成され得る。この一例が図8Aに示されている。このニューラル・ネットワーク・クローニングの例を実現するために、NATU465は、NIDを含むニューラル・ネットワーク・クローン指示を受信するように構成される。NATU465は次いで、NIDに対応する第1のニューロンメモリと等価の第2のニューロンメモリを、ニューロンメモリを含むメモリの第2の領域に確立するように構成される。この等価性は、大きさだけのものでも、内容においてでもよい。よって、一例では、第2のニューロンメモリを確立するために、NATU465は、第1のニューロンメモリを第2のニューロンメモリ位置にコピーするように構成される。しかしながら、ニューロンメモリの局面はクローニングの間に変化し得る。よって、一例では、第2のニューロンメモリを確立するために、NATU465は、第1のニューロンメモリからコピーされたニューロンのニューラル状態をランダム化するように構成される。よって、同じニューロンがコピーに存在するが、これらのニューロンの個々の状態値はランダム化され得る。
上記のように、NATU465は、第2のNIDを第2のニューロンメモリに割り当て、第2のNIDについてのNATU情報を更新して、第2のNIDとシナプスデータとの間の対応関係を作成するように構成される。これは、クローン化ニューロンの新しい(第2の)NIDと新しいPNID範囲とを有するNATUテーブルエントリを作成することによって実現され得る。一例では、NATU情報は、所与のNIDのシナプスメモリの中に、NID固有のデータ構造をポインタと共に含む。この場合、NIDの第1のNIDデータ構造と第2のNIDの第2のNIDデータ構造とは、同じシナプスメモリ空間を指し示すポインタを含む。よって、2つのNIDに対する動作は同じシナプスに解決されることになる。
ニューラル・ネットワーク・クローニングは、等価のニューラルネットワークに追加の入力処理を可能にすることによってハードウェア効率を高め得る。スパイキング・ニューラル・ネットワークは、スパイクの頻度とパスを介して動作するので、追加のデータを処理するためにスパイクを単純にスピードアップすることは簡単なことではない。しかしながら、ネットワークをクローン化すると、追加のデータを、どちらのネットワークでもスパイキング挙動を変更せずに、同じ方法で同時に処理することが可能になる。スパイク挙動は一般的に疎である(例えば、まれに、所与のネットワークの異なる部分で起こる)ので、多くの場合ハードウェアには複数のクローン化ネットワークを動作させるための容量がある。さらに、シナプスデータが共有される場合には、シナプスメモリ空間の複製がなく、ニューロモルフィックハードウェア上で同時に動作するクローン化ネットワークの数に関係なく、クローン化ネットワークの各々がロバストなシナプス接続性を有することが可能になる。
一例では、NATU465は、第1のNIDに対応する訓練イベントに基づいてシナプスデータ内のシナプス構造を更新するように構成される。よって、第1のNIDネットワークは、STDPを行い、そのシナプスデータをしかるべく更新する。一例では、第2のNIDに対応するニューラルネットワークが、NIDに対応するニューラルネットワークと同時に呼び出され得る(例えば、開始される、動作するなど)。この場合、第2のNIDに対応するニューラルネットワークとNIDに対応するニューラルネットワークの両方がシナプス構造を使用する。したがって、シナプスデータを共有するクローン化ネットワークでは、1つのクローン化ネットワークへの訓練強化が、その他のクローン化ネットワークへ即時に利用可能になる。さらに、訓練自体が、所与の期間でより多くの訓練データを処理すること、または異なるクローン化ネットワークに訓練データの異なる局面を提供することによってスピードアップされ得る。
一例では、NATU465は、(図示のように)AP450と共にパッケージ化される。しかしながら、NATU465は、AP450の外部に、例えば、MC460内や、AP450とNPC410との間に配置され得る。一例では、AP450は、相互接続を介して接続されたNPC410を含むシステムの一部である。一例では、システムは、システムの構成要素に電力を供給する電源を備える。一例では、電源は、商用電源またはバッテリを介して電力を供給するインターフェースを備える。
図5に、ニューロモルフィックハードウェア構成アーキテクチャ(例えば、図3で論じたアーキテクチャ310)のシステムレベルの説明図となる500をさらに示す。図示のように、このアーキテクチャは、AP450のインスタンス(例えば、AP450A、AP450B、AP450C、AP450D)およびNPC410(例えば、NPC410A、NPC410B、NPC410C、NPC410D)のインスタンスを含み、一般的には、図4Aおよび図4Bに示されているそのようなAPおよびNPCのインスタンスに対応している。特に、アーキテクチャの図を示す500は、ネットワーク510を介したNPCとAPとの相互接続を示している。
明確にするために、上述したマルチタスキングのためのニューロモルフィックアーキテクチャをここで繰り返し説明する。ニューロンプロセッサ(Neuron Processor(NP))はいくつかのニューロンをモデル化し、入力スパイク重みメッセージを統合して、ニューロン膜電位値を変化させる。ニューロンの電位が閾値を超えると、スパイク・イベント・メッセージを生成し、このメッセージは適切な(例えば、所定の、最も近い、利用可能ななどの)軸索プロセッサ(AP)に送信される。スパイク・イベント・メッセージのニューロン識別子(ID)に従って、APはそのメモリコントローラ(MC)を介して外部メモリ(External Memory(EM))から対応するシナプスリストをフェッチする。APは次いで、シナプスリスト内のすべてのターゲットニューロンのNPにスパイク重みメッセージを送信し、このメッセージにより、それらのニューロンの電位が変化し、サイクルが継続する。
ニューロモルフィックハードウェア上で動作する単一のSNN(仮想化もマルチタスキングもなし)の文脈では、NPから動作するニューロンのただ1つのセットと、EMに格納されるシナプスリストの1つのセットがある。ニューロンがスパイクを発生すると、スパイク・イベント・メッセージの一部としてAPに送信されるそのニューロンID(Ns)は、どのシナプスリストがEMからフェッチされ、処理されるべきかに関して完全に明確である。さらに、シナプスがスパイク重みメッセージ(Nt)のターゲットを識別するときに、NP内のどのニューロンにメッセージが送信されるべきかに関して曖昧さはない。
しかしながら、ニューロモルフィックハードウェアによって処理されている複数のSNNがあるときには、NsとNtの両方に曖昧さがある。APがスパイク・イベント・メッセージを受信すると、APは、正しいシナプスリストをフェッチするためにどのNsがスパイクを発生したかを区別しなければならない。さらに、APがシナプスリストを処理しているときに、APは、どのNtがスパイク重みメッセージを送信すべきかを区別しなければならない。この問題に対処するために、NsおよびNtがLNIDとして再計算され、APは(例えばNATUを介して)LNIDアドレスとPNIDアドレスとの間で変換を行って、ニューロモルフィックハードウェア上で同時に動作している個々のSNNを分離する。
これらの変換および分離の構成要素が配置されると、処理要素(例えば、NPやAP)は、スケジューリングアルゴリズム(例えば、先着順)に従って、それらが受信するどんな作業項目でも自由に処理することができる。従来の中央処理装置(central processing unit(CPU))では、同時マルチスレッド化(simultaneous multithreading(SMT))は、CPUリソース利用率を高めるために、命令実行をインターリーブすることによって動作し、これは前述した作業項目に類似し得る。このSNNアクセラレータの文脈では、インターリーブされた作業項目の粒度は、システム内の処理要素のタイプ(例えば、NPかAPか)に基づいて異なり得る。
一例では、NPについて、作業項目は、スパイク重みメッセージを受信したときに個々のニューロンの膜電位を更新することであってもよく、または作業項目は、新しいスパイクを探し、SNN内のそのニューロンの膜電位のすべてを漏洩することによって次の時間ステップに進む動作全体であってもよい。一例では、APについて、作業項目は、メモリからシナプスリストをフェッチし、それを処理し、すべてのスパイク重みメッセージをターゲットNPに送信する全プロセスであってもよく、または作業項目は、個々のスパイク重みメッセージを送出することであってもよい。これらの作業項目は各々、かなりの期間に及び得るが、単一のSNNからのこれらの作業項目間に、または所与の作業項目内に長いアイドル期間が生じる場合もある(例えば、メモリからシナプスリストをフェッチするのを待つことによりAPまたはNPがアイドル状態のままになり得る)。したがって、NPまたはAPのアイドル状態を低減し、よってリソース利用率を高めるために、作業項目を複数のSNNから発生し得るようにすることは重要である。
図6Aおよび図6Bに、一実施形態による、ニューロモルフィック・アクセラレータ・マルチタスキングの一態様を実装するNATU605を示す。図6Aに、NPからAPへの変換フロー(例えば、出力スパイクメッセージ)を示し、図6Bに、APからNPへの変換フロー(例えば、入力スパイクメッセージ)を示す。出力スパイク・メッセージ・フローでは、NATU605はPNIDを受信し、PNIDからLNID、NID、およびシナプスデータを計算するように構成される。図示のように、NATU605は、PNIDをテーブル内の各NIDに割り当てられたPNID範囲と比較することによってNIDを確認し得る。このテーブルは、NIDのためのシナプス空間も含み得る。LNIDは、NIDに対応するPNID_begin値を(例えば、符号付きデータに作用する減算器610または加算器を介して)減算することによって計算され得る。よって、この場合、LNIDは、NIDによって識別される対応するニューラルネットワークのPNID範囲へのPNIDのオフセットである。
シナプスデータおよびLNIDが計算されると、APは、(上述した)ニューロモルフィックハードウェア上にただ1つのSNNがあるかのように動作し得る。入力フローでは、NATU605は、NIDとLNIDからPNIDを計算する。例えば、NATU605は、APからNIDを受信し(またはNIDに対応するシナプス・メモリ・アドレスに基づいてNIDを計算し)、NATU情報からNIDに対応するPNID_beginアドレスを取り出し得る。PNID_beginアドレスは次いで、PNIDを生成するために加算器615を介してLNIDに加算され得る。PNIDは次いで、APによってターゲットニューロンのスパイクメッセージをアドレス指定するために使用され得る。NPは次いで、PNIDがいくつかのうちどのSNNに属するかに関係なくPNIDに作用し得る。
よって、新しいニューラルネットワークが作成され、そのニューロンおよびシナプスメモリ空間が割り振られると、割り振られた物理ニューロン空間の始めと終わりを指し示すニューロンメモリ空間のポインタ(例えばアドレス)が、(例えば、メモリ管理ユニット(memory management unit(MMU))やAPの他の構成要素によって)、NATUにおいて記録される。割り振られたシナプスメモリ空間の始めと終わりを指し示すポインタについても同じことが行われ得る。NATUはまた、新しいネットワークのNIDも格納し得る。この情報は、1つの構造(例えば単一のテーブル)にあっても複数の構造(例えばレジスタファイル)にあってもよく、スパイキングニューロンのPNIDをシナプス・リスト・アドレスに変換し、次いでシナプスリストからのターゲットLNIDをターゲットPNIDに逆変換するのに十分である。一例では、NATU605は、シナプスメモリにアクセスするときにLNIDとPNIDとの間で変換を行うためにAP内に位置する。一例では、NATU605は、変換を行うためにNP内に位置する。しかしながら、APは一般的にはNPよりも少数であるので、NATU605のAPコロケーションにより、システム内のNATUがより少なくなり得る。
スパイク・イベント・メッセージがAPに到達するときに、メッセージの一部はスパイキングニューロンのPNIDである。APは、NATU605をチェックして、このPNIDがどのネットワークに属しているか、したがってそのシナプスリストがシナプスメモリ空間のどこにあるかを決定する。この目的で、スパイクのPNIDがネットワークエントリの始めと終わりのPNID内にあるNATUエントリを見つけるために範囲比較が行われ得る。一致が見つかると、シナプス空間の開始ポインタと終了ポインタとに基づいて対応するシナプス空間が決定される。この空間内では、シナプスリストは、これが動作している唯一のネットワークであるかのように規則的にアクセスされ得る。
一例では、シナプスリストは、LNIDを含み、PNIDを含まない。したがって、スパイクメッセージがAPからNPCに配信されるように作成されているときに、NATUはこれらのLNIDをPNIDに変換する。この変換は、ネットワークのPNID範囲の始めをターゲットニューロンのLNIDに加算するという単純な加算の形を取り得る。PNIDのLNIDへの変換は、上述したように逆に動作する。
図7に、一実施形態による、ローカルネットワークから物理ネットワークへの変換のためのNATUテーブルおよびシナプスメモリ空間配置を示す。ニューロンメモリ空間は、PNID(例えば、グローバルニューロンID)によって表される。各PNIDは、ニューロン・プロセッサ・クラスタNPCに位置するNSM内の一意の物理位置に対応する。上述したように、PNIDは、NIDとLNIDとに変換され、一意のPNIDに再度逆変換され得る。NPCはPNIDを直接作用し得るので、その設計が簡素化される。PNID、LNID、およびNIDを使用すると、異なるネットワークからのニューロンが分離される。例えば、2つの異なるネットワークが同じLNIDを有するニューロンを有する場合があるが、それらのニューロンは別々の一意のPNIDにマップされる。
変換は、ニューロンメモリ空間内とシナプスメモリ空間710内の両方で、セグメント化を介して行われ得る。新しいネットワークが作成されると、MMUは、例えば、そのネットワークのすべてのニューロン(例えば、ニューロン状態データ)に、ニューロンメモリ空間内の隣接した領域を割り振る。シナプス側では、MMUは、シナプス記憶のために外部メモリ内の隣接した領域を割り振る。したがって、各ネットワークはそれぞれのシナプスリストのために別々の隣接したメモリ空間のチャンクを得る。この空間のサイズは、ネットワーク内のニューロンとシナプスの数によって決定される。
シナプスリスト内のニューロンターゲットは、LNIDとして格納されている。よって、各ネットワークは、それ自体の内部の接続のみ(例えば、ネットワーク内接続のみ)を有し、グローバルニューロンID、すなわちPNIDについての知識(例えば、アドレス指定する能力)を全く有さない。ローカルID(LNID)とグローバルID(PNID)との間の変換は、変換テーブル705を用いてNATUによって達成され得る。
変換テーブル705はレコードごとに5つのフィールドを含み、各レコードは1つのニューラルネットワークに対応する。テーブル705内の列として編成されたフィールドは、PNIDおよびシナプスアドレス空間の各々の開始値および終了値、ならびにNIDレコードを含む。PNIDおよびシナプスメモリは範囲で指定されるので、これらのリソースの割り振りは隣接する。しかしながら、追加のデータフィールドを使用して、単一のNIDレコードに割り振られた隣接した領域のリンクされたリストなど、より柔軟な割り振りの技法が提供されてもよい。隣接した割り振りでは、シナプスメモリ空間710は、図示のように、ネットワークシナプス空間がシナプスメモリ空間710内で互いに隣接するように配置される。
この変換の技法は、変換を介した同時マルチタスキングが、同時に発生するニューラルネットワーク間の分離を保証することを可能にする。例えば、各NPCおよびAPは、処理されるべき項目の作業待ち行列を実装し得る。APでは、作業待ち行列は、スパイクを発生した、後続の時間ステップで処理されるニューロンのPNIDを含む。NPCでは、作業待ち行列は、ターゲットニューロンに加算すべきPNIDと重みとを含む。一例では、変換および分離がAPによって処理されるので、NPCでは変換は不要である。APとNPCの作業待ち行列には、先着順や何らかのQoSベースまたはユーザ定義の方式など、任意の適切な作業待ち行列スケジューリングアルゴリズムが使用され得る。このようにして、特定のネットワークのスパイク処理(NPC)、スパイク配信(AP)、またはシナプス・リスト・フェッチ(AP)に優先順位付けし得る。
SNNが現在の時間ステップのすべてのスパイクの処理を完了すると、次の時間ステップが開始する前に一部の動作が完了する。例えば、そのSNNに属するニューロンは新しいスパイクがないかチェックされ(例えば、APに送信される新しいスパイク・イベント・メッセージを生成すること)、次いで、漏洩ニューロンをモデル化している場合、それらの膜電位の一部を漏洩させる。APは次いで、そのSNNに属する次の時間ステップで処理される保留状態の処理中のスパイクを「覚醒」させ得る。どちらの場合にも、それらの時間ステップを同時に進めていない他のSNNのニューロンおよび処理中のスパイクは妨げられない。
各NPCの内部では、進行中のSNN(例えば、NID Aに対応するネットワーク)に対応するPNIDの範囲内(例えば、境界を含むPNID_beginとPNID_endとの間)のニューロンがフェッチされ、チェックされ、漏洩されて、新しいスパイク・イベント・メッセージがAPに送信される。NPCが進行中のSNNについてこの操作を完了した後に、APは、そのSNNの処理中のスパイクの処理を再開するよう通知され、時間ステップが進む。このようにして、NATU情報705は、ニューロモルフィックハードウェアが、NATUを介して、以前には得られなかった方法でニューラルネットワークをマルチタスク化することを可能にする。
図8A〜図8Cに、一実施形態による、NATUテーブル810、ニューロンメモリ空間805、シナプスメモリ空間815、ならびにニューラル・ネットワーク・クローニングのための方法820および840を示す。図示のデータ構造は、ニューラルネットワークがクローン化され、ニューロモルフィックハードウェア上で同時に動作するニューラル・ネットワーク・マルチタスキングの使用事例を提供するものである。
NATUテーブル810では、各SNNは、その一意のNIDと共に、(PNIDの開始エントリと終了エントリの形の)そのニューロン空間領域805の始めと終わりを指し示すポインタと、そのシナプス空間領域815の始めと終わりを指し示すポインタとを有する。ネットワークのニューロンは、NPC内にあるNSM内の、NP内に格納される。ネットワークのクローンを作成するために、NSM内のニューロンデータが複製され(方法820の動作825)、NATU情報(例えば、NATUテーブル810)がAP内のNATU内で更新される(方法820の動作830)。結果はクローン(例えば、クローン化ネットワーク、クローン化SNN、クローン化ニューロン、ニューロンクローンなど)である。一例では、シナプスデータは複製されないが、NIDエントリBとNIDエントリB'との間に示されているように、シナプスポインタは同じである。
一例では、NSM内、AP内、または他の場所にある専用ハードウェアが、ニューロン状態の複製を行い得る。一例では、このハードウェアは、NID Bのニューロン状態がNID B'のニューロン状態を作成するためにコピーされるニューロン状態メモリ空間805に示すように、2つのポインタ間の範囲内のすべてのニューロン状態をNSM内の別の場所にコピーする(方法820の動作825)。一例では、コピーは、NSMのある領域からニューロン状態を読み出し、そのニューロン状態のコピーをNSMの別の領域に書き込むためにアクセスできる汎用処理装置上の命令を介して実行され得る。一例では、ハードウェアは、「この範囲のアドレスをこの別の範囲のアドレスにコピーする」などの低水準のコマンドを介して動作してもよく、「ネットワークBのクローンを作成する」などの高水準のコマンドを介して動作してもよい。一般的に、複製は、その状態が何であれ、ニューラルネットワークに対応するNSMの現在の状態のスナップショットを取る。しかしながら、一例では、ニューラルネットワークがしばしば初期設定される方法と同様に、新しいコピーをよりニュートラルなランダム状態に「リセット」した方が有利であり得る。
AP側では、クローン化ネットワークを作成することは、NATUテーブル810内での新しいエントリの作成を含む(方法820の動作830)。新しいエントリのPNIDは、ニューロン状態メモリ空間805内の新しく複製されたニューロンの位置を指し示す。しかしながら、シナプス空間ポインタは、シナプスメモリ空間815内の元のネットワークと同じ位置を指し示す。これは、図8Aに、NID BとNID B'とのNATUテーブル810内のシナプス空間ポインタからの実線矢印と破線矢印とを介して示されている。
新しく作成されたクローン化ネットワークは、そのニューロンが上述したPNIDマルチタスキングの技法を介して分離されているので、元のものとは別の完全に独立したネットワークである。クローン化ネットワークのすべてのニューロンは、膜電位を統合し、元のネットワークの活動とは無関係のスパイクを発生させ得る。NATUは、クローン化ネットワークによって生成されたスパイク重みメッセージが、やはりそのクローン化ネットワーク内にあるニューロンだけをターゲットにし得ることを保証する。よって、2つのネットワークは「空間的に並列」であり、これは、並列性およびスループットを高めるためにオンチップ記憶(例えば、追加のニューロン状態)が使用されることを意味する。
動作中に、元のネットワークまたはクローン化ネットワークのどちらかがスパイクを生成すると、APは、それらのスパイクを処理するために、NATUテーブル810に基づいてシナプスメモリ空間815から同じシナプスリストのセットをフェッチする。各ネットワークは(例えば、学習規則またはハードウェアを介して)同時にシナプスデータにアクセスするかまたはシナプスデータを更新し得る。一般的に、シナプスデータ競合条件は、SNNに固有のノイズおよび誤り耐性があるため、重要ではない。
クローン化ネットワークは、それが作成された目的のタスクを完了した後、NSM(例えば、ニューロン状態メモリ空間805)内のそのニューロンの割り振りを解除し(方法840からの動作845)、NATUテーブル810内のそのエントリを削除する(方法840からの動作850)ことによって破壊され得る。シナプス状態は、クローン化ネットワークを作成または破棄することによって修正されない。
ネットワーククローニングおよびニューラル・ネットワーク・マルチタスキングは、様々な使用例において有用である。例えば、バッチ学習の概念はディープ・ニューラル・ネットワークで広く用いられる。この場合、複数の入力セット(例えば、訓練セット)がバッチとしてまとめられ、シナプス荷重の変化がバッチ内ごとに計算される。累積重み更新(例えば、変化)は次いで、一度に全部適用され得る。ネットワーククローニングは、空間的にバッチ学習を行い得る。よって、各クローン化ネットワークは、その変更を共有シナプスセットに適用しながら、異なる入力セットに同時に作用し得る。この手法の利点は、複数の入力の同時処理である。ハードウェア内のアイドル期間を低減させることによって推論および訓練も改善され得る。スパイキング・ニューラル・ネットワークでは、入力を処理した後にネットワークを「休止」するのが一般的な手法であり、これにより、訓練や推論の結果が生成されないアイドル期間が生じる。複数のクローン化ネットワークを使用することにより、同じシナプスセットへの複数のエントリポイントが使用可能になる。したがって、1つのニューロンクローンの「休止」期間は、全く同じシナプスを共有する別のクローン化ネットワークを使用する何らかの他の入力に関する訓練または推論とオーバーラップし得る。
図9に、一実施形態による、ニューロモルフィック・ハードウェア・マルチタスキングのための方法900の一例のフローチャートを示す。方法900の動作は、図2〜図5に関連して上述した、または後述する電子ハードウェア(例えば、処理回路)などで実装される。
動作905で、スパイクメッセージが受信される。この場合、スパイクメッセージは、スパイクを生じさせたニューロンの物理ニューロン識別子(PNID)を含む。
動作910で、PNIDはネットワーク識別子(NID)とローカルニューロン識別子(LNID)とに変換される。一例では、LNIDは、PNIDからPNID_begin値を減算することによって計算される。この場合、PNID範囲のセットのメンバは、NIDに対応する最小のPNIDと最大のPNIDとをそれぞれ保持するPNID_beginとPNID_endとの対を含む。一例では、PNIDをNIDとLNIDとに変換することは、PNIDの一端からNID長に対応するいくつかのビットを除去することを含む。一例では、PNIDをNIDとLNIDとに変換することは、PNIDをPNID範囲のセットと比較することを含む。この場合、各PNID範囲は一意のNIDに対応する。
動作915で、シナプスデータがNIDに基づいて見つけられる。一例では、シナプスデータはメモリアドレス範囲を含む。
動作920で、シナプスデータおよびLNIDは軸索プロセッサに伝達される。
一例では、方法900の動作はNATUによって行われる。一例では、NATUは軸索プロセッサと共にパッケージ化される。一例では、軸索プロセッサは、相互接続を介して軸索プロセッサに接続されたニューラル・プロセッサ・クラスタを含むシステムの一部である。一例では、システムは、システムの構成要素に電力を提供する電源を備える。一例では、電源は、商用電源またはバッテリを介して電力を供給するインターフェースを備える。
方法900の動作はまた、シナプスデータから見つかったシナプス構造に基づいて、第2のスパイクメッセージがLNIDにアドレス指定されていると判断する動作も含み得る。方法900の動作は、シナプスデータに対応するNIDを使用してLNIDをPNIDに変換する動作も含み得る。一例では、PNIDは、PNID_begin値、すなわちNIDのPNID範囲に対応する値、をLNIDに加算することによって計算される。一例では、LNIDをPNIDに変換することは、NIDをLNIDの一端に連結することを含む。方法900の動作は、ニューロンを識別するためにPNIDを使用して第2のスパイクメッセージを軸索プロセッサに伝達する動作も含み得る。
方法900の動作は、NIDを含むニューラル・ネットワーク・クローン指示を受信する動作と、NIDに対応する第1のニューロンメモリと等価の第2のニューロンメモリを、ニューロンメモリを含むメモリの第2の領域に確立する動作も含み得る。一例では、第2のニューロンメモリを確立することは、第1のニューロンメモリをコピーすることを含む。一例では、第2のニューロンメモリを確立することは、第1のニューロンメモリからコピーされたニューロンのニューラル状態をランダム化することを含む。
方法900の動作は、第2のNIDを第2のニューロンメモリに割り当てる動作と、第2のNIDについてのNATU情報を更新して、第2のNIDとシナプスデータとの間の対応関係を作成する動作も含み得る。一例では、NATU情報は、所与のNIDのシナプスメモリの中に、NID固有のデータ構造をポインタと共に含む。この場合、NIDの第1のNIDデータ構造と第2のNIDの第2のNIDデータ構造とは、同じシナプスメモリ空間を指し示すポインタを含む。
方法900の動作は、第1のNIDに対応する訓練イベントに基づいてシナプスデータ内のシナプス構造を更新する動作も含み得る。一例では、第2のNIDに対応するニューラルネットワークが、NIDに対応するニューラルネットワークと同時に呼び出され得る(例えば、開始される、動作するなど)。この場合、第2のNIDに対応するニューラルネットワークとNIDに対応するニューラルネットワークの両方がシナプス構造を使用する。
図10に、本明細書で論じられる技法(例えば方法)のうちのいずれか1つまたは複数が行われ得る例示的な機械1000のブロック図を示す。本明細書で説明される例は、機械1000内のロジックまたはいくつかの構成要素、または機構を含むか、またはそれらによって動作し得る。回路(例えば、処理回路)は、ハードウェア(例えば、単純な回路、ゲート、ロジックなど)を含む、機械1000の有形のエンティティにおいて実装された回路の集合体である。回路構成要素は経時的に柔軟であり得る。回路は、単独で、または組み合わさって、動作時に指定の動作を行い得るメンバを含む。一例では、回路のハードウェアは、特定の動作を実行するように変更不能に設計され得る(例えば配線接続される)。一例では、回路のハードウェアは、特定の動作の命令を符号化するように物理的に修正された機械可読媒体(例えば、不変質量の粒子の磁気的、電気的に可動な配置など)を含む、可変的に接続された物理構成要素(例えば、実行ユニット、トランジスタ、単純な回路など)を含み得る。物理構成要素を接続する際に、ハードウェア構成要素の基礎となる電気的特性が、例えば絶縁体から導体に、またはその逆に変更される。命令は、組み込みハードウェア(例えば、実行ユニットやローディング機構)が、動作に際して特定の動作の部分を実行するために、可変接続を介してハードウェアの回路のメンバを作成することを可能にする。したがって、一例では、機械可読媒体要素は、回路の一部であるか、または装置が動作しているときに回路のその他の構成要素に通信可能に結合される。一例では、物理構成要素のうちのいずれかが、複数の回路の複数のメンバで使用され得る。例えば、動作中、実行ユニットは、ある時点で第1の回路構成の第1の回路で使用され、異なる時点で第1の回路構成の第2の回路によって、または第2の回路構成の第3の回路によって再利用され得る。以下で機械1000に関連するこれらの構成要素の追加の例を示す。
代替実施形態では、機械1000は、独立型装置として動作してもよく、または他の機械に接続されてもよい(例えば、ネットワーク接続されてもよい)。ネットワーク接続された配置では、機械1000は、サーバ‐クライアントネットワーク環境において、サーバマシン、クライアントマシン、またはその両方として動作し得る。一例では、機械1000は、ピアツーピア(P2P)(または他の分散型)ネットワーク環境におけるピアマシンとして機能し得る。機械1000は、パーソナルコンピュータ(PC)、タブレットPC、セットトップボックス(STB)、携帯情報端末(PDA)、携帯電話、ウェブアプライアンス、ネットワークルータ、スイッチもしくはブリッジ、またはその機械によって取られるべき措置を指定する命令(順次またはそれ以外)を実行できる任意の機械であり得る。さらに、単一の機械のみが示されているが、「機械」という用語は、クラウドコンピューティング、SaaS(Software as a Service)、その他のコンピュータクラスタ構成など、本明細書で論じられる方法のうちのいずれか1つまたは複数を行うために1つ(または複数)の命令セットを個々にまたは一緒に実行する任意の機械の集合を含むものとも理解される。
機械(例えば、コンピュータシステム)1000は、ハードウェアプロセッサ1002(例えば、中央処理装置(CPU)、グラフィックス処理装置(GPU)、ハードウェア・プロセッサ・コア、ニューロモルフィックアクセラレータ、またはそれらの任意の組み合わせ)と、メインメモリ1004と、スタティックメモリ1006(例えば、ファームウェア、マイクロコード、基本入出力(BIOS)、UEFI(unified extensible firmware interface)などのためのメモリまたは記憶)と、大容量記憶装置1008(例えば、ハードドライブ、テープドライブ、フラッシュストレージ、または他のブロックデバイス)と、を含むことができ、そのうちの一部または全部が相互リンク(例えばバス)1030を介して互いに通信し得る。機械1000は、表示ユニット1010と、英数字入力装置1012(例えばキーボード)と、ユーザインターフェース(UI)ナビゲーション装置1014(例えばマウス)とをさらに含み得る。一例では、表示ユニット1010、入力装置1012およびUIナビゲーション装置1014をタッチ・スクリーン・ディスプレイとすることができる。機械1000は、記憶装置(例えば、駆動ユニット)1008、信号生成装置1018(例えばスピーカ)、ネットワークインターフェース装置1020、および全地球測位システム(GPS)センサや、コンパスや、加速度計や、他のセンサなどの1つまたは複数のセンサ1016をさらに含み得る。機械1000は、1つまたは複数の周辺装置(例えば、プリンタ、カードリーダなど)と通信し、またはそれらを制御するために、シリアル(例えばユニバーサル・シリアル・バス(USB))、パラレル、または他の有線または無線(例えば赤外線(IR)、近距離無線通信(NFC)など)接続などの出力コントローラ1028を含み得る。
プロセッサ1002のレジスタ、メインメモリ1004、スタティックメモリ1006、または大容量記憶装置1008は、本明細書に記載される技法または機能のうちのいずれか1つまたは複数を実施するか、またはそれらに利用される1つまたは複数のデータ構造セットまたは命令セット1024(例えばソフトウェア)が格納される機械可読媒体1022であるか、それを含み得る。命令1024は、その機械1000による実行時に、プロセッサ1002のレジスタ、メインメモリ1004、スタティックメモリ1006、または大容量記憶装置1008のいずれか内に、全部または少なくとも一部が存在し得る。一例では、ハードウェアプロセッサ1002、メインメモリ1004、スタティックメモリ1006、または大容量記憶装置1008のうち1つまたは任意の組み合わせが機械可読媒体1022を構成し得る。機械可読媒体1022は単一の媒体として示されているが、「機械可読媒体」という用語は、1つまたは複数の命令1024を格納するように構成された単一の媒体または複数の媒体(例えば、集中型または分散型データベースや関連付けられたキャッシュおよびサーバ)を含み得る。
「機械可読媒体」という用語は、機械1000が実行するための命令を格納、符号化、もしくは搬送することができ、本開示の技法のうちのいずれか1つもしくは複数を機械1000に行わせるか、またはそのような命令が使用するか、もしくはそのような命令と関連付けられたデータ構造を格納、符号化、もしくは搬送することができる任意の媒体を含み得る。非限定的な機械可読媒体の例には、固体メモリ、光学媒体、磁気媒体、および信号(例えば、無線周波数信号、他の光子ベースの信号、音声信号など)が含まれ得る。一例では、非一時的機械可読媒体は、不変(例えば静止)質量を有する複数の粒子を有する機械可読媒体を含み、よって、物質の組成物である。したがって、非一時的機械可読媒体は、一時的伝播信号を含まない機械可読媒体である。非一時的機械可読媒体の具体例には、半導体メモリデバイス(例えば、電気的プログラム可能読取り専用メモリ(EPROM)、電気的消去可能プログラム可能読取り専用メモリ(EEPROM))やフラッシュ・メモリ・デバイスなどの不揮発性メモリ、内蔵ハードディスクやリムーバブルディスクなどの磁気ディスク、光磁気ディスク、CD‐ROMおよびDVD‐ROMディスクが含まれ得る。
命令1024は、いくつかの転送プロトコル(例えば、フレームリレー、インターネットプロトコル(IP)、伝送制御プロトコル(TCP)、ユーザ・データグラム・プロトコル(UDP)、ハイパーテキスト転送プロトコル(HTTP)など))のうちいずれか1つを利用するネットワークインターフェース装置1020を介して伝送媒体を使用して通信ネットワーク1026を介してさらに送信または受信され得る。通信ネットワークの例には、特に、ローカル・エリア・ネットワーク(LAN)、広域ネットワーク(WAN)、パケット・データ・ネットワーク(例えばインターネット)、携帯電話網(例えばセルラーネットワーク)、基本電話サービス(POTS)網、無線データネットワーク(例えば、Wi‐Fi(登録商標)として知られる米国電気電子学会(IEEE)(登録商標)802.11規格ファミリ、WiMax(登録商標)として知られるIEEE(登録商標)802.16規格ファミリ)、IEEE(登録商標)802.15.4規格ファミリ、ピアツーピアピア(P2P)ネットワークが含まれ得る。一例では、ネットワークインターフェース装置1020は、通信ネットワーク1026に接続するための1つもしくは複数の物理的ジャック(例えば、イーサネット(登録商標)ジャックや、同軸ジャックや、電話ジャック)または1つもしくは複数のアンテナを含み得る。一例では、ネットワークインターフェース装置1020は、単入力多出力(SIMO)、多入力多出力(MIMO)、または多入力単出力(MISO)の各技法のうち少なくとも1つを使用して無線通信するための複数のアンテナを含み得る。「伝送媒体」という用語は、機械1000が実行するための命令を格納、符号化、または搬送することができる任意の無形媒体を含むものと理解され、そのようなソフトウェアの通信を容易にするためのデジタルまたはアナログの通信信号または他の無形媒体を含む。伝送媒体は機械可読媒体である。
図11〜図20に、コンピュータハードウェアを実装するために使用され得るハードウェア構造または実装形態のいくつかの追加の例を示す。
図11は、一実施形態によるレジスタアーキテクチャ1100のブロック図である。図示の実施形態では、512ビット幅の32個のベクトルレジスタ1110があり、これらのレジスタはzmm0からzmm31として参照される。下位16個のzmmレジスタの下位256ビットは、レジスタymm0〜16にオーバーレイされている。下位16個のzmmレジスタの下位128ビット(ymmレジスタの下位128ビット)は、レジスタxmm0〜15にオーバーレイされている。
図示の実施形態の書き込みマスクレジスタ1115では、各々64ビットのサイズの8個の書き込みマスクレジスタ(k0からk7)がある。代替実施形態では、書き込みマスクレジスタ1115は16ビットのサイズである。前述したように、一実施形態では、ベクトル・マスク・レジスタk0を書き込みマスクとして使用することはできない。通常k0を示すはずの符号化が書き込みマスクに使用される場合、0xFFFFのハードワイヤード書き込みマスクが選択され、その命令の書き込みマスキングが事実上無効になる。
図示の実施形態の汎用レジスタ1125では、メモリオペランドをアドレス指定するために既存のx86アドレス指定モードと共に使用される16個の64ビット汎用レジスタがある。これらのレジスタは、RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP、およびR8からR15の名前で参照される。
図示の実施形態の、MMXパックド整数フラット・レジスタ・ファイル1150がエイリアスされるスカラ浮動小数点スタック・レジスタ・ファイル(x87スタック)1145では、x87スタックは、x87命令セット拡張を使用して32/64/80ビット浮動小数点データに対してスカラ浮動小数点演算を行うために使用される8要素スタックであり、MMXレジスタは、64ビットのパックド整数データに対して演算を行うと共に、MMXレジスタとXMMレジスタとの間で行われるいくつかの演算のオペランドを保持するために使用される。代替実施形態では、より広いまたはより狭いレジスタを使用し得る。加えて、代替実施形態では、より多い、より少ない、または異なるレジスタファイルおよびレジスタも使用し得る。
プロセッサコアは、異なる方法で、異なる目的のために、異なるプロセッサにおいて実装され得る。例えば、そのようなコアの実装形態には、以下が含まれ得る。1)汎用コンピューティングを目的とした汎用イン・オーダ・コア。2)汎用コンピューティングを目的とした高性能汎用アウト・オブ・オーダ・コア。3)主としてグラフィックスおよび/または科学的(スループット)コンピューティングを目的とした専用コア。様々なプロセッサの実装形態には以下が含まれ得る。1)汎用コンピューティングを目的とした1つもしくは複数の汎用イン・オーダ・コアおよび/または汎用コンピューティングを目的とし1つもしくは複数の汎用アウト・オブ・オーダ・コアを含むCPU。2)主としてグラフィックスおよび/または科学的(スループット)コンピューティングを目的とした1つまたは複数の専用コアを含むコプロセッサ。そのような異なるプロセッサは、異なるコンピュータ・システム・アーキテクチャをもたらし、それらには以下が含まれ得る。1)CPUとは別のチップ上のコプロセッサ。2)CPUと同じパッケージ内の別のダイ上のコプロセッサ。3)CPUと同じダイ上のコプロセッサ(この場合、そのようなコプロセッサは、統合グラフィックスおよび/もしくは科学(スループット)ロジックなどの専用ロジック、または専用コアと呼ばれることもある)。4)同じダイ上に記載のCPU(アプリケーションコアまたはアプリケーションプロセッサと呼ばれることもある)、上述したコプロセッサ、および追加の機能を含み得るシステムオンチップ。次に、例示的なコアアーキテクチャについて説明し、続いて例示的なプロセッサおよびコンピュータアーキテクチャについて説明する。
図12は、様々な実施形態による例示的なイン・オーダ・パイプラインと、例示的なレジスタリネーミング、アウト・オブ・オーダ発行/実行パイプラインの両方を示すブロック図である。図12の実線の囲みはイン・オーダ・パイプラインとイン・オーダ・コアとを示しており、破線の囲みの任意選択の追加は、レジスタリネーミング、アウト・オブ・オーダ発行/実行パイプラインおよびコアを示している。イン・オーダの局面がアウト・オブ・オーダの局面のサブセットであると仮定して、アウト・オブ・オーダの局面について説明する。
図12では、プロセッサパイプライン1200は、フェッチ段1202と、長さ復号段1204と、復号段1206と、割り振り段1208と、リネーム段1210、スケジューリング(ディスパッチまたは発行としても知られる)段1212と、レジスタ読み出し/メモリ読み出し段1214と、実行段1216と、書き戻し/メモリ書き込み段1218と、例外処理段1222と、コミット段1224とを含む。
図13には、実行エンジンユニット1350に結合されたフロント・エンド・ユニット1330を含むプロセッサコア1390が示されており、どちらもメモリユニット1370に結合されている。コア1390は、縮小命令セットコンピューティング(reduced instruction set computing(RISC))コア、複合命令セットコンピューティング(complex instruction set computing(CISC))コア、超長命令語(very long instruction word(VLIW))コア、またはハイブリッドもしくは代替のコアタイプとし得る。さらに別の選択肢として、コア1390は、例えば、ネットワークまたは通信コア、圧縮エンジン、コプロセッサコア、汎用コンピューティンググラフィックス処理装置(GPGPU)コア、グラフィックスコアなどの専用コアであり得る。
フロント・エンド・ユニット1330は、命令キャッシュユニット1334に結合された分岐予測ユニット1332を含み、命令キャッシュユニット1334は命令変換ルックアサイドバッファ(translation lookaside buffer(TLB))1336に結合されており、命令変換ルックアサイドバッファ1336は命令フェッチユニット1338に結合されており、命令フェッチユニット1338は復号ユニット1340に結合されている。復号ユニット1340(または復号器)は、命令を復号し、出力として、元の命令から復号され、またはそれ以外に元の命令を反映し、または元の命令から導出された、1つまたは複数のマイクロ演算、マイクロ・コード・エントリ・ポイント、マイクロ命令、他の命令、または他の制御信号を生成し得る。復号ユニット1340は、様々な異なる機構を使用して実装され得る。適切な機構の例には、ルックアップテーブル、ハードウェア実装、プログラマブル・ロジック・アレイ(PLA)、マイクロコード読取り専用メモリ(ROM)などが含まれるが、これに限定されない。一実施形態では、コア1390は、(例えば、復号ユニット1340内またはフロント・エンド・ユニット1330内の)特定のマクロ命令のためのマイクロコードを格納するマイクロコードROMまたは他の媒体を含む。復号ユニット1340は、実行エンジンユニット1350内のリネーム/アロケータユニット1352に結合されている。
実行エンジンユニット1350は、リタイアメントユニット1354に接続されたリネーム/アロケータユニット1352と、1つまたは複数のスケジューラユニット1356のセットとを含む。スケジューラユニット1356は、予約ステーション、中央命令ウィンドウなどを含む、任意の数の異なるスケジューラを表す。スケジューラユニット1356は、物理レジスタ・ファイル・ユニット1358に結合されている。各物理レジスタ・ファイル・ユニット1358は1つまたは複数の物理レジスタファイルを表し、それらの物理レジスタファイルの異なるものが、スカラ整数、スカラ浮動小数点、パックド整数、パックド浮動小数点、ベクトル整数、ベクトル浮動小数点、ステータス(例えば、実行されるべき次の命令のアドレスである命令ポインタ)などの1つまたは複数の異なるデータ型を格納する。一実施形態では、物理レジスタ・ファイル・ユニット1358は、ベクトル・レジスタ・ユニットと、書き込み・マスク・レジスタ・ユニットと、スカラ・レジスタ・ユニットとを含む。これらのレジスタユニットは、アーキテクチャ・ベクトル・レジスタ、ベクトル・マスク・レジスタ、および汎用レジスタを提供し得る。物理レジスタ・ファイル・ユニット1358は、(例えば、リオーダバッファおよびリタイアメント・レジスタ・ファイルを使用して、将来のファイル、履歴バッファ、およびリタイアメント・レジスタ・ファイルを使用して、レジスタマップおよびレジスタプールを使用してなど)レジスタリネーミングおよびアウト・オブ・オーダ実行が実装され得る様々な方法を示すためにリタイアメントユニット1354とオーバーラップしている。リタイアメントユニット1354および物理レジスタ・ファイル・ユニット1358は実行クラスタ1360に結合されている。実行クラスタ1360は、1つまたは複数の実行ユニットのセット1362と1つまたは複数のメモリ・アクセス・ユニットのセット1364とを含む。実行ユニット1362は、様々な演算(例えば、シフト、加算、減算、乗算)を、様々なデータ型(例えば、スカラ浮動小数点、パックド整数、パックド浮動小数点、ベクトル整数、ベクトル浮動小数点)に対して行い得る。いくつかの実施形態は、特定の機能または機能セットに専用のいくつかの実行ユニットを含み得るが、他の実施形態は、ただ1つの実行ユニット、またはすべてがすべての機能を果たす複数の実行ユニットを含み得る。スケジューラユニット1356、物理レジスタ・ファイル・ユニット1358、および実行クラスタ1360は、特定の実施形態が、特定のデータ型/演算のための別々のパイプラインを作成するので、場合によっては複数であるものとして示されている(例えば、スカラ整数パイプライン、スカラ浮動小数点/パックド整数/パックド浮動小数点/ベクトル整数/ベクトル浮動小数点パイプライン、ならびに/または独自のスケジューラユニット、物理レジスタ・ファイル・ユニット、および/もしくは実行クラスタを各々有するメモリ・アクセス・パイプライン、別々のメモリ・アクセス・パイプラインの場合には、このパイプラインの実行クラスタのみがメモリ・アクセス・ユニット1364を有する特定の実施形態が実装される)。別々のパイプラインが使用される場合、これらのパイプラインのうちの1つまたは複数がアウト・オブ・オーダ発行/実行であり、残りがイン・オーダであり得ることも理解されたい。
メモリ・アクセス・ユニットのセット1364は、メモリユニット1370に結合されており、メモリユニット1370は、レベル2(L2)キャッシュユニット1376に結合されたデータ・キャッシュ・ユニット1374に結合されたデータTLBユニット1372を含む。一例では、メモリ・アクセス・ユニット1364は、その各々がメモリユニット1370内のデータTLBユニット1372に結合されている負荷ユニット、ストア・アドレス・ユニット、およびストア・データ・ユニットを含み得る。命令キャッシュユニット1334は、メモリユニット1370内のレベル2(L2)キャッシュユニット1376にさらに結合されている。L2キャッシュユニット1376は、1つまたは複数の他のレベルのキャッシュに、最終的にはメインメモリに結合されている。
一例として、例示的なレジスタリネーミング、アウト・オブ・オーダ発行/実行コアアーキテクチャは、以下のようにパイプライン1200を実装し得る。1)命令フェッチ1338がフェッチ段1202および長さ復号段1204を行う。2)復号ユニット1340が復号段1206を行う。3)リネーム/アロケータユニット1352が割り振り段1208およびリネーム段1210を行う。4)スケジューラユニット1356がスケジュール段1212を行う。5)物理レジスタ・ファイル・ユニット1358およびメモリユニット1370が、レジスタ読み出し/メモリ読み出し段1214を行い、実行クラスタ1360が実行段1216を行う。6)メモリユニット1370および物理レジスタ・ファイル・ユニット1358が、書き戻し/メモリ書き込み段1218を行う。7)様々なユニットが例外処理段1222に関与し得る。8)リタイアメントユニット1354および物理レジスタ・ファイル・ユニット1358がコミット段1224を行う。
コア1390は、本明細書に記載された命令を含む、1つまたは複数の命令セット(例えば、x86命令セット(より新しいバージョンで追加されたいくつかの拡張を伴う)、カリフォルニア州サニーベールのMIPS TechnologiesのMIPS命令セット、カリフォルニア州サニーベールのARM HoldingsのARM命令セット(NEONなどの任意選択の追加拡張を伴う))をサポートし得る。一実施形態では、コア1390は、パックドデータ命令セット拡張(例えば、AVX1、AVX2)をサポートするためのロジックを含み、それによって、多くのマルチメディアアプリケーションによって使用される演算を、パックドデータを使用して行うことが可能になる。
コアはマルチスレッド化(2つ以上の並列の演算セットまたはスレッドセットの実行)をサポートし、それを、タイム・スライス・マルチスレッディング、同時マルチスレッド化(単一の物理コアが、物理コアが同時にマルチスレッド化するスレッドごとに論理コアを提供する)、またはそれらの組み合わせ(例えば、Intel(登録商標)Hyperthreading技術などにおけるタイムスライスされたフェッチおよび復号とその後の同時マルチスレッド化)を含む様々な方法で行い得ることを理解されたい。
レジスタリネーミングはアウト・オブ・オーダ実行の文脈で説明されているが、レジスタリネーミングはイン・オーダ・アーキテクチャで使用されてもよいことを理解されたい。図示のプロセッサの実施形態はまた、別々の命令キャッシュユニット1334/データ・キャッシュ・ユニット1374と共有L2キャッシュユニット1376とを含むが、代替実施形態は、例えばレベル1(L1)内部キャッシュのように、命令とデータの両方に単一の内部キャッシュを、または複数レベルの内部キャッシュを含み得る。いくつかの実施形態では、システムは、内部キャッシュと、コアおよび/またはプロセッサの外部にある外部キャッシュとの組み合わせを含み得る。あるいは、すべてのキャッシュがコアおよび/またはプロセッサの外部にあってもよい。
図14A〜図14Bに、そのコアが、チップ内の(同じタイプおよび/または異なるタイプの他のコアを含む)いくつかの論理ブロックのうちの1つになるはずの、より具体的なイン・オーダ・コア・アーキテクチャの例のブロック図を示す。論理ブロックは、用途に応じて、高帯域幅相互接続ネットワーク(例えばリングネットワーク)を介していくつかの固定機能ロジック、メモリI/Oインターフェース、および他の必要なI/Oロジックと通信する。
図14Aは、様々な実施形態による、オンダイ相互接続ネットワーク1402へのその接続とレベル2(L2)キャッシュ1404のそのローカルサブセットを伴う単一のプロセッサコアのブロック図である。一実施形態では、命令復号器1400は、パックドデータ命令セット拡張を有するx86命令セットをサポートする。L1キャッシュ1406は、スカラユニットおよびベクトルユニットに入るキャッシュメモリへの低待ち時間アクセスを可能にする。一実施形態では(設計を単純化するために)、スカラユニット1408とベクトルユニット1410とは別々のレジスタセット(それぞれスカラレジスタ1412とベクトルレジスタ1414と)を使用し、それらの間で転送されるデータはメモリに書き込まれ、次いでレベル1(L1)キャッシュ1406から読み戻されるが、代替実施形態では、異なる手法を使用し得る(例えば、単一のレジスタセットを使用するか、または書き込みも読み戻しもせずに2つのレジスタファイル間でデータが転送されることを可能にする通信パスを含む)。
L2キャッシュ1404のローカルサブセットは、プロセッサコアごとに1つずつ、別々のローカルサブセットに分割されたグローバルL2キャッシュの一部である。各プロセッサコアは、L2キャッシュ1404のそれ自体のローカルサブセットへの直接アクセスパスを有する。プロセッサコアによって読み出されたデータは、そのL2キャッシュサブセット1404に格納され、それら自体のローカルL2キャッシュサブセットにアクセスする他のプロセッサコアと並列に、迅速にアクセスされ得る。プロセッサコアによって書き込まれたデータは、それ自体のL2キャッシュサブセット1404に格納され、必要に応じて他のサブセットからフラッシュされる。リングネットワークは共有データの一貫性を保証する。リングネットワークは、プロセッサコア、L2キャッシュ、その他の論理ブロックなどのエージェントがチップ内で互いに通信することを可能するために双方向である。各リングデータパスは、方向ごとに1312ビット幅である。
図14Bは、実施形態による図14Aのプロセッサコアの一部の拡大図である。図14Bは、L1キャッシュ1404の一部であるL1データキャッシュ1406A、ならびにベクトルユニット1410およびベクトルレジスタ1414に関するさらなる詳細を含む。具体的には、ベクトルユニット1410は、16幅ベクトル処理ユニット((VPU)(16幅ALU1428を参照)であり、整数命令、単精度浮動小数点命令、および倍精度浮動小数点命令のうち1つまたは複数を実行する。VPUは、メモリ入力に対するスウィズルユニット1420によるレジスタ入力のスウィズリング、数値変換ユニット1422A〜1422Bによる数値変換、および複製ユニット1424による複製をサポートする。書き込みマスクレジスタ1426は、結果として生じるベクトル書き込みの予測を可能にする。
図15は、実施形態による、複数のコアを有し得る、統合メモリコントローラを有し得る、統合グラフィックスを有し得るプロセッサ1500のブロック図である。図15の実線の囲みは、単一コア1502Aと、システム・エージェント・ユニット1510と、1つまたは複数のバス・コントローラ・ユニットのセット1516とを有するプロセッサ1500を示しており、破線の囲みの任意選択の追加は、複数のコア1502A〜1502Nと、システム・エージェント・ユニット1510内の1つまたは複数の統合メモリ・コントローラ・ユニットのセット1514と、専用ロジック1508とを有する代替のプロセッサ1500を示している。
よって、プロセッサ1500の異なる実装形態は、以下を含み得る。1)専用ロジック1508が統合グラフィックスおよび/または科学的(スループット)ロジック(1つまたは複数のコアを含み得る)であり、コア1502A〜1502Nが1つまたは複数の汎用コア(例えば、汎用イン・オーダ・コア、汎用アウト・オブ・オーダ・コア、2つの組み合わせ)であるCPU。2)コア1502A〜1502Nが、主にグラフィックスおよび/または科学的(スループット)を目的とした多数の専用コアであるコプロセッサ。3)コア1502A〜1502Nが多数の汎用イン・オーダ・コアであるコプロセッサ。よって、プロセッサ1500は、汎用プロセッサ、コプロセッサ、または例えば、ネットワークもしくは通信プロセッサ、圧縮エンジン、グラフィックスプロセッサ、GPGPU(汎用グラフィックス処理装置)、ハイスループットMIC(many integrated core)コプロセッサ(30以上のコアを含む)、組み込みプロセッサなどの専用プロセッサである得る。プロセッサは、1つまたは複数のチップ上に実装され得る。プロセッサ1500は、例えば、BiCMOS、CMOS、NMOSなどのいくつかのプロセス技術のうちのいずれかを使用した1つまたは複数の基板の一部であってもよく、かつ/またはそうした基板上に実装され得る。
メモリ階層は、コア1502A〜1502N内の1つまたは複数のレベルのキャッシュ1504と、1つまたは複数の共有キャッシュユニットまたは共有キャッシュユニットのセット1506と、統合メモリ・コントローラ・ユニットのセット1514に結合された外部メモリ(図示せず)とを含む。共有キャッシュユニットのセット1506は、レベル2(L2)、レベル3(L3)、レベル4(L4)、他のレベルのキャッシュなどの1つまたは複数の中間レベルキャッシュ、ラスト・レベル・キャッシュ(last level cache(LLC))、および/またはそれらの組み合わせを含み得る。一実施形態では、リングベースの相互接続ユニット1512が統合グラフィックスロジック1508、共有キャッシュユニットのセット1506、およびシステム・エージェント・ユニット1510/統合メモリ・コントローラ・ユニット1514を相互接続するが、代替実施形態は、そのようなユニットを相互接続するための任意の数の周知の技術を使用し得る。一実施形態では、1つまたは複数のキャッシュユニット1506とコア1502A〜1502Nとの間で一貫性が維持される。
いくつかの実施形態では、コア1502A〜1502Nのうちの1つまたは複数はマルチスレッド化することができる。システムエージェント1510は、コア1502A〜1502Nを協調させ、動作させるそれらの構成要素を含む。システム・エージェント・ユニット1510は、例えば、電力制御ユニット(PCU)や表示ユニットを含み得る。PCUは、コア1502A〜1502Nおよび統合グラフィックスロジック1508の電力状態を調整するために必要なロジックおよび構成要素であるかまたはそれらを含み得る。表示ユニットは、1つまたは複数の外部接続ディスプレイを駆動するためのものである。
コア1502A〜1502Nは、アーキテクチャ命令セットに関して同種でも異種でもよい。すなわち、コア1502A〜1502Nのうち2つ以上が同じ命令セットを実行することができてもよく、他のものがその命令セットのサブセットまたは異なる命令セットのみを実行することができてもよい。
図16〜図19は、例示的なコンピュータアーキテクチャのブロック図である。ラップトップ、デスクトップ、ハンドヘルドPC、携帯情報端末、エンジニアリングワークステーション、サーバ、ネットワーク装置、ネットワークハブ、スイッチ、組み込みプロセッサ、デジタル信号プロセッサ(DSP)、グラフィックス装置、ビデオゲーム装置、セットトップボックス、マイクロコントローラ、携帯電話、携帯型メディアプレーヤ、ハンドヘルド装置、および他の様々な電子装置のための当技術分野において公知の他のシステム設計および構成も適している。一般的に、本明細書に開示されるプロセッサおよび/または他の実行ロジックを組み込むことができる多種多様なシステムまたは電子装置が一般に適している。
次に図16を参照すると、一実施形態によるシステム1600のブロック図が示されている。システム1600は、コントローラハブ1620に結合された1つまたは複数のプロセッサ1610、1615を含み得る。一実施形態では、コントローラハブ1620は、グラフィックス・メモリ・コントローラ・ハブ(graphics memory controller hub(GMCH))1690と、入力/出力ハブ(IOH)1650(別々のチップ上にあってもよい)とを含み、GMCH1690は、メモリ1640とコプロセッサ1645とが結合されるメモリコントローラとグラフィックスコントローラとを含み、IOH1650は、入力/出力(I/O)装置1660をGMCH1690に結合する。あるいは、メモリコントローラとグラフィックスコントローラの一方または両方が(本明細書に記載されるように)プロセッサ内に統合され、メモリ1640およびコプロセッサ1645はプロセッサ1610に直接結合され、コントローラハブ1620はIOH1650と共に単一チップ内にある。
追加のプロセッサ1615の任意選択性は、図16に破線で表されている。各プロセッサ1610、1615は、本明細書に記載される処理コアのうち1つまたは複数を含んでいてよく、プロセッサ1500の何らかのバージョンであってもよい。
メモリ1640は、例えば、ダイナミック・ランダム・アクセス・メモリ(DRAM)、相変化メモリ(PCM)、またはこれら2つの組み合わせであってもよい。少なくとも1つの実施形態では、コントローラハブ1620は、フロントサイドバス(FSB)などのマルチドロップバス、QuickPath Interconnect(QPI)などのポイントツーポイントインターフェース、または同様の接続1695を介してプロセッサ1610、1615と通信する。
一実施形態では、コプロセッサ1645は、例えば、ハイスループットMICプロセッサ、ネットワークまたは通信プロセッサ、圧縮エンジン、グラフィックスプロセッサ、GPGPU、組み込みプロセッサなどの専用プロセッサである。一実施形態では、コントローラハブ1620は、統合グラフィックスアクセラレータを含み得る。
アーキテクチャ特性、マイクロアーキテクチャ特性、熱特性、電力消費特性などを含む一連のメリットの指標に関して、物理リソース1610、1615間には様々な違いがあり得る。
一実施形態では、プロセッサ1610は、一般的なタイプのデータ処理動作を制御する命令を実行する。命令内に組み込まれているのは、コプロセッサ命令であり得る。プロセッサ1610は、これらのコプロセッサ命令を、接続されたコプロセッサ1645によって実行されるべきタイプのものとして認識する。したがって、プロセッサ1610は、コプロセッサバスまたは他の相互接続上でこれらのコプロセッサ命令(またはコプロセッサ命令を表す制御信号)をコプロセッサ1645に発行する。コプロセッサ1645は、受信したコプロセッサ命令を受け入れ、実行する。
次に図17を参照すると、一実施形態による第1のより具体的なシステムの例1700のブロック図が示されている。図17に示すように、マルチプロセッサシステム1700はポイントツーポイント相互接続システムであり、ポイントツーポイント相互接続1750を介して結合された第1のプロセッサ1770と第2のプロセッサ1780とを含む。プロセッサ1770およびプロセッサ1780は各々、プロセッサ1500の何らかのバージョンであり得る。一実施形態では、プロセッサ1770およびプロセッサ1780はそれぞれプロセッサ1610および1615であり、コプロセッサ1738はコプロセッサ1645である。別の実施形態では、プロセッサ1770およびプロセッサ1780はそれぞれプロセッサ1610およびコプロセッサ1645である。
プロセッサ1770およびプロセッサ1780は、それぞれ、統合メモリコントローラ(IMC)ユニット1772および統合メモリコントローラ(IMC)ユニット1782を含むものとして示されている。プロセッサ1770はまた、そのバス・コントローラ・ユニットの一部としてポイントツーポイント(P‐P)インターフェース1776および1778を含む。同様に、第2のプロセッサ1780も、P‐Pインターフェース1786および1788を含む。プロセッサ1770、1780は、P‐Pインターフェース回路1778、1788を使用して、ポイントツーポイント(P‐P)インターフェース1750を介して情報を交換し得る。図17に示すように、IMC1772およびIMC1782は、プロセッサをそれぞれのメモリ、すなわち、メモリ1732およびメモリ1734に結合し、これらのメモリは、それぞれのプロセッサにローカルに接続されたメインメモリの部分であり得る。
プロセッサ1770、1780は各々、ポイントツーポイントインターフェース回路1776、1794、1786、1798を使用して個々のP‐Pインターフェース1752、1754を介してチップセット1790と情報を交換し得る。チップセット1790は、任意選択で、高性能インターフェース1739を介してコプロセッサ1738と情報を交換し得る。一実施形態では、コプロセッサ1738は、例えば、ハイスループットMICプロセッサ、ネットワークまたは通信プロセッサ、圧縮エンジン、グラフィックスプロセッサ、GPGPU、組み込みプロセッサなどの専用プロセッサである。
共有キャッシュ(図示せず)が、どちらかのプロセッサに含まれるか、または両方のプロセッサの外部にあるが、P‐P相互接続を介してプロセッサと接続されていてよく、そのため、プロセッサが低電力モードになった場合、どちらかのプロセッサまたは両方のプロセッサのローカルキャッシュ情報が共有キャッシュに格納され得る。
チップセット1790は、インターフェース1796を介して第1のバス1716に結合され得る。一実施形態では、第1のバス1716は、周辺装置相互接続(Peripheral Component Interconnect(PCI))バス、またはPCI Expressバスまたは別の第3世代I/O相互接続バスなどのバスであり得るが、本技法および構成の範囲はこれに限定されない。
図17に示すように、第1のバス1716には、第1のバス1716を第2のバス1720に結合するバスブリッジ1718と共に、様々なI/O装置1714が結合され得る。一実施形態では、コプロセッサ、ハイスループットMICプロセッサ、GPGPUのアクセラレータ(例えばグラフィックスアクセラレータやデジタル信号処理(DSP)ユニットなど)、フィールド・プログラマブル・ゲート・アレイなどの1つもしくは複数の追加のプロセッサ1715、または他の任意のプロセッサが第1のバス1716に結合される。一実施形態では、第2のバス1720は、ローピンカウント(LPC)バスであり得る。一実施形態では、第2のバス1720には、例えば、キーボードおよび/またはマウス1722、通信装置1727、ならびに命令/コードおよびデータ1730を含み得るディスクドライブや他の大容量記憶装置などの記憶ユニット1728を含む様々な装置が結合され得る。さらに、第2のバス1720にはオーディオI/O1724が結合され得る。他のアーキテクチャも可能であることに留意されたい。例えば、図17のポイントツーポイントアーキテクチャの代わりに、システムはマルチドロップバスや他のそのようなアーキテクチャを実装してもよい。
次に図18を参照すると、一実施形態による第2のより具体的なシステムの例1800のブロック図が示されている。図17と図18の同様の要素には同様の参照番号が付されており、図18の他の局面を曖昧にしないように図17の特定の局面が図18から省略されている。
図18には、プロセッサ1770、1780が、それぞれ、統合メモリとI/O制御ロジック(「CL」)1772および1782とを含み得ることが示されている。よって、CL1772、1782は、統合メモリ・コントローラ・ユニットを含み、I/O制御ロジックを含む。図18には、メモリ1732、1734がCL1772、1782に結合されているだけでなく、I/O装置1814も制御ロジック1772、1782に結合されていることが示されている。レガシーI/O装置1815はチップセット1790に結合されている。
次に図19を参照すると、一実施形態によるSoC1900のブロック図が示されている。図18の同様の要素には同様の参照番号が付されている。また、破線の囲みは、より高度なSoC上の任意選択の機能である。図19では、相互接続ユニット1902が、以下のものに結合されている。1つまたは複数のコア1502A〜1502Nのセットと共有キャッシュユニット1506とを含むアプリケーションプロセッサ1910、システム・エージェント・ユニット1510、バス・コントローラ・ユニット1516、統合メモリ・コントローラ・ユニット1514、統合グラフィックスロジック、画像プロセッサ、オーディオプロセッサ、およびビデオプロセッサを含み得る1つもしくは複数のコプロセッサまたはコプロセッサのセット1920、スタティック・ランダム・アクセス・メモリ(SRAM)ユニット1930、ダイレクト・メモリ・アクセス(direct memory access(DMA))ユニット1932、ならびに1つまたは複数の外部ディスプレイに結合するための表示ユニット1940。一実施形態では、コプロセッサ1920は、例えば、ネットワークまたは通信プロセッサ、圧縮エンジン、GPGPU、ハイスループットMICプロセッサ、組み込みプロセッサなどの専用プロセッサを含む。
本明細書に開示される機構の実施形態は、ハードウェア、ソフトウェア、ファームウェア、またはそのような実装手法の組み合わせとして実装され得る。実施形態は、少なくとも1つのプロセッサと、記憶システム(揮発性および不揮発性のメモリおよび/または記憶素子を含む)と、少なくとも1つの入力装置と、少なくとも1つの出力装置とを含むプログラム可能なシステム上で実行されるコンピュータプログラムまたはプログラムコードとして実装され得る。
図17に示すコード1730などのプログラムコードが、本明細書に記載される機能を果たし、出力情報を生成する命令を入力するために適用され得る。出力情報は、公知の方法で1つまたは複数の出力装置に適用され得る。本出願のために、処理システムは、例えば、デジタル信号プロセッサ(DSP)、マイクロコントローラ、特定用途向け集積回路(ASIC)、マイクロプロセッサなどのプロセッサを有する任意のシステムを含む。
プログラムコードは、処理システムと通信するために高水準手続き型プログラミング言語またはオブジェクト指向プログラミング言語として実装され得る。プログラムコードはまた、必要に応じて、アセンブリ言語または機械語としても実装され得る。実際、本明細書に記載される機構は、いかなる特定のプログラミング言語にも範囲を限定されない。いずれにせよ、言語はコンパイラ型またはインタプリタ型言語であり得る。
少なくとも1つの実施形態の1つまたは複数の態様は、機械によって読み出されると、本明細書に記載される技法を行うためのロジックを機械に組み立てさせる、プロセッサ内の様々なロジックを表す機械可読媒体に格納された代表的な命令によって実現され得る。そのような表現は、「IPコア」として知られており、有形の機械可読媒体上に格納され、ロジックまたはプロセッサを実際に作成する製造機械にロードするように様々な顧客または製造施設に供給される。
そのような機械可読記憶媒体には、ハードディスクなどの記憶媒体、フロッピーディスク、光ディスク、コンパクトディスク読取り専用メモリ(CD‐ROM)、書換え可能コンパクトディスク(CD‐RW)、および光磁気ディスクを含む任意の他のタイプのディスク、読取り専用メモリ(ROM)、ダイナミック・ランダム・アクセス・メモリ(DRAM)やスタティック・ランダム・アクセス・メモリ(SRAM)などのランダム・アクセス・メモリ(RAM)、消去可能プログラム可能読取り専用メモリ(EPROM)、フラッシュメモリ、電気的消去可能プログラム可能読取り専用メモリ(EEPROM)、相変化メモリ(PCM)などの半導体メモリ、磁気カードもしくは光カード、または電子命令を格納するのに適した任意の他のタイプの媒体を含む、機械または装置によって製造または形成された物品の非一時的な有形の構成が含まれるが、これに限定されない。
したがって、実施形態は、本明細書に記載される構造、回路、装置、プロセッサ、および/もしくはシステム機能を定義する、ハードウェア記述言語(Hardware Description Language(HDL))などの、命令を含むかまたは設計データを含む非一時的有形機械可読媒体も含む。そのような実施形態は、プログラム製品とも呼ばれ得る。
場合によっては、命令をソース命令セットからターゲット命令セットに変換するために命令コンバータが使用され得る。例えば、命令コンバータは、命令を、コアによって処理されるべき1つまたは複数の他の命令に(例えば、静的バイナリ変換、動的コンパイルを含む動的バイナリ変換を使用して)変換し、変形し、エミュレートし、またはそれ以外に変換し得る。命令コンバータは、ソフトウェア、ハードウェア、ファームウェア、またはそれらの組み合わせとして実装され得る。命令コンバータは、プロセッサ上にあっても、プロセッサ外にあっても、一部がプロセッサ上に一部がプロセッサ外にあってもよい。
図20は、様々な実施形態による、ソース命令セット内のバイナリ命令をターゲット命令セット内のバイナリ命令に変換するためのソフトウェア命令コンバータの使用を対比させたブロック図である。図示の実施形態では、命令コンバータはソフトウェア命令コンバータであるが、代替として命令コンバータはソフトウェア、ファームウェア、ハードウェア、またはそれらの様々な組み合わせとして実装されてもよい。図20には、少なくとも1つのx86命令セットコアを有するプロセッサ2016によってネイティブに実行され得るx86バイナリコード2006を生成するためにx86コンパイラ2004を使用して高水準言語2002のプログラムがコンパイルされ得ることが示されている。少なくとも1つのx86命令セットコアを有するプロセッサ2016は、少なくとも1つのx86命令セットコアを有するIntelプロセッサと実質的に同じ結果を達成するために、(1)Intelのx86命令セットコアの命令セットの実質的な部分または(2)少なくとも1つのx86命令セットコアを有するIntelプロセッサ上で動作することを目的としたアプリケーションもしくは他のソフトウェアのオブジェクトコードを互換的に実行するか、またはそれ以外に処理することによって、少なくとも1つのx86命令セットコアを有するIntelプロセッサと実質的に同じ機能を果たし得る任意のプロセッサを表す。x86コンパイラ2004は、追加のリンケージ処理ありまたはなしで、少なくとも1つのx86命令セットコアを有するプロセッサ2016上で実行され得るx86バイナリコード2006(例えば、オブジェクトコード)を生成するように動作するコンパイラを表している。同様に、図20には、少なくとも1つのx86命令セットコアを有していないプロセッサ2014によってネイティブに実行され得る代替の命令セット・バイナリ・コード2010を生成するために代替の命令セットコンパイラ2008を使用して高水準言語2002のプログラムがコンパイルされ得ることも示されている(例えば、カリフォルニア州サニーベールのMIPS TechnologiesのMIPS命令セットを実行する、かつ/またはカリフォルニア州サニーベールのARM HoldingsのARM命令セットを実行するコアを有するプロセッサ)。命令コンバータ2012は、x86バイナリコード2006を、x86命令セットコアを有していないプロセッサ2014によってネイティブに実行され得るコードに変換するために使用される。これを可能にする命令コンバータを作成するのは難しいので、この変換されたコードが代替の命令セット・バイナリ・コード2010と同じである可能性は高くない。しかしながら、変換されたコードは一般的な動作を遂行し、代替の命令セットからの命令で構成される。よって、命令コンバータ2012は、エミュレーション、シミュレーションまたは任意の他のプロセスを通じて、x86命令セットプロセッサまたはコアを有していないプロセッサまたは他の電子デバイスがx86バイナリコード2006を実行することを可能にするソフトウェア、ファームウェア、ハードウェア、またはそれらの組み合わせを表す。
[追加の注記および例]
例1は、ニューロモルフィック・アクセラレータ・マルチタスキングのためのシステムであり、本システムは、軸索プロセッサと、ニューロンアドレス変換ユニット(NATU)と、を備え、NATUは、スパイクを生じさせたニューロンの物理ニューロン識別子(PNID)を含むスパイクメッセージを受信する第1のインターフェースと、PNIDをネットワーク識別子(NID)とローカルニューロン識別子(LNID)とに変換し、NIDに基づいてシナプスデータを見つける処理回路と、シナプスデータおよびLNIDを軸索プロセッサに伝達する第2のインターフェースと、を有する。
例2において、例1の主題は、シナプスデータがメモリアドレス範囲を含むこと、を含む。
例3において、例1〜例2の主題は、PNIDをNIDおよびLNIDに変換するために、処理回路がPNIDを、各PNID範囲が一意のNIDに対応するPNID範囲のセットと比較すること、を含む。
例4において、例1〜例3の主題は、LNIDが、PNIDからPNID_begin値を減算することによって計算され、PNID範囲のセットのメンバが、NIDに対応する最小のPNIDと最大のPNIDとをそれぞれ保持するPNID_beginとPNID_endとの対を含むこと、を含む。
例5において、例1〜例4の主題は、PNIDをNIDとLNIDとに変換するために、処理回路が、PNIDの一端からNID長に対応するいくつかのビットを除去すること、を含む。
例6において、例1〜例5の主題は、NATUが軸索プロセッサと共にパッケージ化されていること、を含む。
例7において、例1〜例6の主題は、相互接続を介して軸索プロセッサに接続されたニューラル・プロセッサ・クラスタ、を備える。
例8において、例7の主題は、軸索プロセッサが、シナプスデータから見つかったシナプス構造に基づいて、第2のスパイクメッセージがLNIDにアドレス指定されていると判断し、処理回路が、シナプスデータに対応するNIDを使用してLNIDをPNIDに変換し、処理回路が、ニューロンを識別するためにPNIDを使用して第2のスパイクメッセージを軸索プロセッサに伝達すること、を含む。
例9において、例8の主題は、PNIDが、LNIDにPNID_begin値を加算することによって計算され、PNID_begin値がNIDのPNID範囲に対応すること、を含む。
例10において、例8〜例9の主題は、LNIDをPNIDに変換するために、処理回路がNIDをLNIDの一端に連結すること、を含む。
例11において、例7〜例10の主題は、システムの構成要素に電力を供給する電源を備え、電源が、商用電源またはバッテリを介して電力を供給するインターフェースを有する。
例12において、例1〜例11の主題は、NIDを含むニューラル・ネットワーク・クローン指示を受信し、NIDに対応する第1のニューロンメモリと等価の第2のニューロンメモリを、ニューロンメモリを含むメモリの第2の領域に確立する、ニューロンプロセッサ制御ユニット、を備え、処理回路が、第2のニューロンメモリに第2のNIDを割り当て、第2のNIDとシナプスデータとの間の対応関係を作成するために第2のNIDについての変換情報を更新すること、を含む。
例13において、例12の主題は、変換情報が、所与のNIDのシナプスメモリの中に、NID固有のデータ構造をポインタと共に含み、NIDの第1のNIDデータ構造と第2のNIDの第2のNIDデータ構造とが、同じシナプスメモリ空間を指し示すポインタを含むこと、を含む。
例14において、例12〜例13の主題は、第2のニューロンメモリを確立するために、ニューロンプロセッサ制御ユニットが第1のニューロンメモリをコピーすること、を含む。
例15において、例12〜例14の主題は、第2のニューロンメモリを確立するために、ニューロンプロセッサ制御ユニットが、第1のニューロンメモリからコピーされたニューロンのニューラル状態をランダム化すること、を含む。
例16において、例1〜例15の主題は、軸索プロセッサが、第1のNIDに対応する訓練イベントに基づいてシナプスデータ内のシナプス構造を更新するものであること、を含む。
例17において、例16の主題は、システムが、NIDに対応するニューラルネットワークと同時に第2のNIDに対応するニューラルネットワークを呼び出すものであり、第2のNIDに対応するニューラルネットワークとNIDに対応するニューラルネットワークの両方がシナプス構造を使用すること、を含む。
例18は、ニューロモルフィック・アクセラレータ・マルチタスキングのための方法であり、本方法は、ニューロンアドレス変換ユニット(NATU)において、スパイクを生じさせたニューロンの物理ニューロン識別子(PNID)を含むスパイクメッセージを受信するステップと、NATUが、PNIDをネットワーク識別子(NID)とローカルニューロン識別子(LNID)とに変換するステップと、NATUが、NIDに基づいてシナプスデータを見つけるステップと、NATUが、シナプスデータおよびLNIDを軸索プロセッサに伝達するステップと、を含む。
例19において、例18の主題は、シナプスデータがメモリアドレス範囲を含むこと、を含む。
例20において、例18〜例19の主題は、PNIDをNIDとLNIDとに変換するステップが、PNIDを、各PNID範囲が一意のNIDに対応するPNID範囲のセットと比較するステップを含むこと、を含む。
例21において、例18〜例20の主題は、LNIDが、PNIDからPNID_begin値を減算することによって計算され、PNID範囲のセットのメンバが、NIDに対応する最小のPNIDと最大のPNIDとをそれぞれ保持するPNID_beginとPNID_endとの対を含むこと、を含む。
例22において、例18〜例21の主題は、PNIDをNIDとLNIDとに変換するステップが、PNIDの一端からNID長に対応するいくつかのビットを除去するステップを含むこと、を含む。
例23において、例18〜例22の主題は、NATUが軸索プロセッサと共にパッケージ化されていること、を含む。
例24において、例18〜例23の主題は、軸索プロセッサが、相互接続を介して軸索プロセッサに接続されたニューラル・プロセッサ・クラスタを含むシステムの一部であること、を含む。
例25において、例24の主題は、軸索プロセッサが、シナプスデータから見つかったシナプス構造に基づいて、第2のスパイクメッセージがLNIDにアドレス指定されていると判断するステップと、NATUが、シナプスデータに対応するNIDを使用してLNIDをPNIDに変換するステップと、ニューロンを識別するためにPNIDを使用して第2のスパイクメッセージを軸索プロセッサに伝達するステップと、を含む。
例26において、例25の主題は、PNIDが、LNIDにPNID_begin値を加算することによって計算され、PNID_begin値がNIDのPNID範囲に対応すること、を含む。
例27において、例25〜例26の主題は、LNIDをPNIDに変換するステップが、NIDをLNIDの一端に連結するステップを含むこと、を含む。
例28において、例24〜例27の主題は、システムが、システムの構成要素に電力を供給する電源を備え、電源が、商用電源またはバッテリを介して電力を供給するインターフェースを有する。
例29において、例18〜例28の主題は、NIDを含むニューラル・ネットワーク・クローン指示を受信するステップと、NIDに対応する第1のニューロンメモリと等価の第2のニューロンメモリを、ニューロンメモリを含むメモリの第2の領域に確立するステップと、第2のニューロンメモリに第2のNIDを割り当てるステップと、第2のNIDとシナプスデータとの間の対応関係を作成するために第2のNIDについてのNATU情報を更新するステップと、を含む。
例30において、例29の主題は、NATU情報が、所与のNIDのシナプスメモリの中に、NID固有のデータ構造をポインタと共に含み、NIDの第1のNIDデータ構造と第2のNIDの第2のNIDデータ構造とが、同じシナプスメモリ空間を指し示すポインタを含むこと、を含む。
例31において、例29〜例30の主題は、第2のニューロンメモリを確立するステップが、第1のニューロンメモリをコピーするステップを含むこと、を含む。
例32において、例29〜例31の主題は、第2のニューロンメモリを確立するステップが、第1のニューロンメモリからコピーされたニューロンのニューラル状態をランダム化するステップを含むこと、を含む。
例33において、例18〜例32の主題は、第1のNIDに対応する訓練イベントに基づいてシナプスデータ内のシナプス構造を更新するステップ、を含む。
例34において、例33の主題は、NIDに対応するニューラルネットワークと同時に第2のNIDに対応するニューラルネットワークを呼び出すステップ、を含み、第2のNIDに対応するニューラルネットワークとNIDに対応するニューラルネットワークの両方がシナプス構造を使用する。
例35は、ニューロモルフィック・アクセラレータ・マルチタスキングのための命令を含む少なくとも1つの機械可読媒体であり、命令は、処理回路によって実行されると、処理回路に、ニューロンアドレス変換ユニット(NATU)において、スパイクを生じさせたニューロンの物理ニューロン識別子(PNID)を含むスパイクメッセージを受信する動作と、NATUが、PNIDをネットワーク識別子(NID)とローカルニューロン識別子(LNID)とに変換する動作と、NATUが、NIDに基づいてシナプスデータを見つける動作と、NATUが、シナプスデータおよびLNIDを軸索プロセッサに伝達する動作と、を含む動作を行わせる。
例36において、例35の主題は、シナプスデータがメモリアドレス範囲を含むこと、を含む。
例37において、例35〜例36の主題は、PNIDをNIDとLNIDとに変換する動作が、PNIDを、各PNID範囲が一意のNIDに対応するPNID範囲のセットと比較する動作を含むこと、を含む。
例38において、例35〜例37の主題は、LNIDが、PNIDからPNID_begin値を減算することによって計算され、PNID範囲のセットのメンバが、NIDに対応する最小のPNIDと最大のPNIDとをそれぞれ保持するPNID_beginとPNID_endとの対を含むこと、を含む。
例39において、例35〜例38の主題は、PNIDをNIDとLNIDとに変換する動作が、PNIDの一端からNID長に対応するいくつかのビットを除去する動作を含むこと、を含む。
例40において、例35〜例39の主題は、NATUが軸索プロセッサと共にパッケージ化されていること、を含む。
例41において、例35〜例40の主題は、軸索プロセッサが、相互接続を介して軸索プロセッサに接続されたニューラル・プロセッサ・クラスタを含むシステムの一部であること、を含む。
例42において、例41の主題は、動作が、軸索プロセッサが、シナプスデータから見つかったシナプス構造に基づいて、第2のスパイクメッセージがLNIDにアドレス指定されていると判断する動作と、NATUが、シナプスデータに対応するNIDを使用してLNIDをPNIDに変換する動作と、ニューロンを識別するためにPNIDを使用して第2のスパイクメッセージを軸索プロセッサに伝達する動作と、を含むこと、を含む。
例43において、例42の主題は、PNIDが、LNIDにPNID_begin値を加算することによって計算され、PNID_begin値がNIDのPNID範囲に対応すること、を含む。
例44において、例42〜例43の主題は、LNIDをPNIDに変換する動作が、NIDをLNIDの一端に連結する動作を含むこと、を含む。
例45において、例41〜例44の主題は、システムが、システムの構成要素に電力を供給する電源を備え、電源が、商用電源またはバッテリを介して電力を供給するインターフェースを有する。
例46において、例35〜例45の主題は、動作が、NIDを含むニューラル・ネットワーク・クローン指示を受信する動作と、NIDに対応する第1のニューロンメモリと等価の第2のニューロンメモリを、ニューロンメモリを含むメモリの第2の領域に確立する動作と、第2のニューロンメモリに第2のNIDを割り当てる動作と、第2のNIDとシナプスデータとの間の対応関係を作成するために第2のNIDについてのNATU情報を更新する動作と、を含むこと、を含む。
例47において、例46の主題は、NATU情報が、所与のNIDのシナプスメモリの中に、NID固有のデータ構造をポインタと共に含み、NIDの第1のNIDデータ構造と第2のNIDの第2のNIDデータ構造とが、同じシナプスメモリ空間を指し示すポインタを含むこと、を含む。
例48において、例46〜例47の主題は、第2のニューロンメモリを確立する動作が、第1のニューロンメモリをコピーする動作を含むこと、を含む。
例49において、例46〜例48の主題は、第2のニューロンメモリを確立する動作が、第1のニューロンメモリからコピーされたニューロンのニューラル状態をランダム化する動作を含むこと、を含む。
例50において、例35〜例49の主題は、動作が、第1のNIDに対応する訓練イベントに基づいてシナプスデータ内のシナプス構造を更新する動作を含むこと、を含む。
例51において、例50の主題は、動作が、NIDに対応するニューラルネットワークと同時に第2のNIDに対応するニューラルネットワークを呼び出す動作を含み、第2のNIDに対応するニューラルネットワークとNIDに対応するニューラルネットワークの両方がシナプス構造を使用すること、を含む。
例52は、ニューロモルフィック・アクセラレータ・マルチタスキングのためのシステムであり、本システムは、スパイクを生じさせたニューロンの物理ニューロン識別子(PNID)を含むスパイクメッセージを受信する手段と、PNIDをネットワーク識別子(NID)とローカルニューロン識別子(LNID)とに変換する手段と、NIDに基づいてシナプスデータを見つける手段と、シナプスデータおよびLNIDを軸索プロセッサに伝達する手段と、を備える。
例53において、例52の主題は、シナプスデータがメモリアドレス範囲を含むこと、を含む。
例54において、例52〜例53の主題は、PNIDをNIDとLNIDとに変換する手段が、PNIDを、各PNID範囲が一意のNIDに対応するPNID範囲のセットと比較する手段を備えること、を含む。
例55において、例52〜例54の主題は、LNIDが、PNIDからPNID_begin値を減算することによって計算され、PNID範囲のセットのメンバが、NIDに対応する最小のPNIDと最大のPNIDとをそれぞれ保持するPNID_beginとPNID_endとの対を含むこと、を含む。
例56において、例52〜例55の主題は、PNIDをNIDとLNIDとに変換する手段が、PNIDの一端からNID長に対応するいくつかのビットを除去する手段を備えること、を含む。
例57において、例52〜例56の主題は、PNIDを変換する手段が、軸索プロセッサと共ににパッケージ化されていること、を含む。
例58において、例52〜例57の主題は、軸索プロセッサと、相互接続を介して軸索プロセッサに接続されたニューラル・プロセッサ・クラスタと、を備える。
例59において、例58の主題は、軸索プロセッサが、シナプスデータから見つかったシナプス構造に基づいて、第2のスパイクメッセージがLNIDにアドレス指定されていると判断する手段と、シナプスデータに対応するNIDを使用してLNIDをPNIDに変換する手段と、ニューロンを識別するためにPNIDを使用して第2のスパイクメッセージを軸索プロセッサに伝達する手段と、を備える。
例60において、例59の主題は、PNIDが、LNIDにPNID_begin値を加算することによって計算され、PNID_begin値がNIDのPNID範囲に対応すること、を含む。
例61において、例59〜例60の主題は、LNIDをPNIDに変換する手段が、NIDをLNIDの一端に連結する手段を備えること、を含む。
例62において、例58〜例61の主題は、システムの構成要素に電力を供給する電源を備え、電源が、商用電源またはバッテリを介して電力を供給するインターフェースを有する。
例63において、例52〜例62の主題は、NIDを含むニューラル・ネットワーク・クローン指示を受信する手段と、NIDに対応する第1のニューロンメモリと等価の第2のニューロンメモリを、ニューロンメモリを含むメモリの第2の領域に確立する手段と、第2のニューロンメモリに第2のNIDを割り当てる手段と、第2のNIDとシナプスデータとの間の対応関係を作成するために第2のNIDについての変換情報を更新する手段と、を備える。
例64において、例63の主題は、変換情報が、所与のNIDのシナプスメモリの中に、NID固有のデータ構造をポインタと共に含み、NIDの第1のNIDデータ構造と第2のNIDの第2のNIDデータ構造とが、同じシナプスメモリ空間を指し示すポインタを含むこと、を含む。
例65において、例63〜例64の主題は、第2のニューロンメモリを確立する手段が、第1のニューロンメモリをコピーする手段を備えること、を含む。
例66において、例63〜例65の主題は、第2のニューロンメモリを確立する手段が、第1のニューロンメモリからコピーされたニューロンのニューラル状態をランダム化する手段を備えること、を含む。
例67において、例52〜例66の主題は、第1のNIDに対応する訓練イベントに基づいてシナプスデータ内のシナプス構造を更新する手段、を備える。
例68において、例67の主題は、NIDに対応するニューラルネットワークと同時に第2のNIDに対応するニューラルネットワークを呼び出す手段、を備え、第2のNIDに対応するニューラルネットワークとNIDに対応するニューラルネットワークの両方がシナプス構造を使用する。
例69は、処理回路によって実行されると、処理回路に、例1〜例68のいずれかに記載の実施動作を行わせる命令を含む少なくとも1つの機械可読媒体である。
例70は、例1〜例68のいずれかに記載の実施手段を備える装置である。
例71は、例1〜例68のいずれかに記載の実施システムである。
例72は、例1〜例68のいずれかに記載の実施方法である。
上述した詳細な説明は、詳細な説明の一部を形成する添付の図面への参照を含む。図面には、例示として、実施され得る特定の実施形態が示されている。これらの実施形態を、本明細書では「例」とも呼ぶ。そのような例は、図示または記載の要素以外の要素を含み得る。しかしながら、本発明者らはまた、図示または記載の要素のみが設けられた例も企図している。さらに、本発明者らはまた、特定の例(またはそれらの1つもしくは複数の態様)に関する、または本明細書で図示もしくは説明した他の例(またはそれらの1つもしくは複数の態様)に関する、図示または記載の要素(またはそれらの1つもしくは複数の態様)の任意の組み合わせまたは置換を使用した例も企図している。
上記の説明は、限定のためではなく、例示的のためのものである。例えば、上述した例(またはその1つもしくは複数の態様)は、互いに組み合わせて使用され得る。上記の説明を考察すれば、当業者などは、他の実施形態を使用できよう。要約書は、読者が本技術的開示の本質を迅速に確認することを可能にするためのものであり、特許請求の範囲または意味を解釈または限定するために使用されることはないという理解の下に提出される。また、上記の詳細な説明では、開示を簡素化するために様々な特徴がまとめてグループ化されている場合もある。これは、特許請求されていない開示の特徴がいずれかの請求に不可欠であると意図しているものとして解釈されるべきではない。むしろ、発明の主題は、特定の開示の実施形態のすべてのより少ない特徴に存在し得る。よって、添付の特許請求の範囲は、これにより詳細な説明に組み入れられ、各請求項は別々の実施形態として独立したものである。実施形態の範囲は、添付の特許請求の範囲を、そのような特許請求の範囲が権利を付与される均等物の全範囲と共に参照して決定されるべきである。
(項目1)
ニューロモルフィック・アクセラレータ・マルチタスキングのためのシステムであって、
軸索プロセッサと、
ニューロンアドレス変換回路(NATC)と、を備え、上記NATCが、
スパイクを生じさせたニューロンの物理ニューロン識別子(PNID)を含むスパイクメッセージを受信する第1のインターフェースと、
処理回路であって、
上記PNIDをネットワーク識別子(NID)とローカルニューロン識別子(LNID)とに変換し、
上記NIDに基づいてシナプスデータを見つける
処理回路と、
上記シナプスデータおよび上記LNIDを上記軸索プロセッサに伝達する第2のインターフェースと
を備える、システム。
(項目2)
上記シナプスデータがメモリアドレス範囲を含む、項目1に記載のシステム。
(項目3)
上記PNIDを上記NIDと上記LNIDとに変換するために、上記処理回路が上記PNIDを、各PNID範囲が一意のNIDに対応する複数のPNID範囲と比較する、項目1に記載のシステム。
(項目4)
上記LNIDが、上記PNIDからPNID_begin値を減算することによって計算され、上記複数のPNID範囲のメンバが、NIDに対応する最小のPNIDと最大のPNIDとをそれぞれ保持するPNID_beginとPNID_endとの対を含む、項目1に記載のシステム。
(項目5)
相互接続を介して上記軸索プロセッサに接続されたニューラル・プロセッサ・クラスタを備える、項目1に記載のシステム。
(項目6)
上記システムの構成要素に電力を供給する電源を備え、前記電源が、商用電源またはバッテリを介して電力を供給するインターフェースを有する、項目5に記載のシステム。
(項目7)
ニューロンデータを格納するニューロンデータ領域と上記NIDに対応する第1のニューロンメモリ領域とを有するメモリと、
ニューロンプロセッサ制御回路であって
上記NIDを含むニューラル・ネットワーク・クローン指示を受信し、
上記ニューラル・ネットワーク・クローン指示を受信したことに応答して、上記メモリの上記ニューロンデータ領域において、上記第1のニューロンメモリ領域と等価である第2のニューロンメモリ領域を確立する
ニューロンプロセッサ制御回路と
を備え、
上記処理回路が、上記第2のニューロンメモリ領域が確立されたことに応答して、さらに、
上記第2のニューロンメモリ領域に第2のNIDを割り当て、
上記第2のNIDと上記シナプスデータとの間の対応関係を作成するために上記第2のNIDについての変換情報を更新する、項目1に記載のシステム。
(項目8)
上記変換情報が、所与のNIDのシナプスメモリの中に、NID固有のデータ構造をポインタと共に含み、上記NIDの第1のNIDデータ構造と上記第2のNIDの第2のNIDデータ構造とが、同じシナプスメモリ空間を指し示すポインタを含む、項目7に記載のシステム。
(項目9)
上記軸索プロセッサが、上記第1のNIDに対応する訓練イベントに基づいて上記シナプスデータ内のシナプス構造を更新する、項目1に記載のシステム。
(項目10)
ニューロモルフィック・アクセラレータ・マルチタスキングのための方法であって、
ニューロンアドレス変換ユニット(NATC)において、スパイクを生じさせたニューロンの物理ニューロン識別子(PNID)を含むスパイクメッセージを受信するステップと、
上記NATCが、上記PNIDをネットワーク識別子(NID)とローカルニューロン識別子(LNID)とに変換するステップと、
上記NATCが、上記NIDに基づいてシナプスデータを見つけるステップと、
上記NATCが、上記シナプスデータおよび上記LNIDを軸索プロセッサに伝達するステップと
を備える、方法。
(項目11)
上記PNIDを上記NIDと上記LNIDとに変換する上記ステップが、上記PNIDを、各PNID範囲が一意のNIDに対応する複数のPNID範囲と比較するステップを含む、項目10に記載の方法。
(項目12)
上記LNIDが、上記PNIDからPNID_begin値を減算することによって計算され、上記複数のPNID範囲のメンバが、NIDに対応する最小のPNIDと最大のPNIDとをそれぞれ保持するPNID_beginとPNID_endとの対を含む、項目10に記載の方法。
(項目13)
上記軸索プロセッサが、相互接続を介して上記軸索プロセッサに接続されたニューラル・プロセッサ・クラスタを含むシステムの一部である、項目10に記載の方法。
(項目14)
上記システムが、上記システムの構成要素に電力を供給する電源を備え、前記電源が、商用電源またはバッテリを介して電力を供給するインターフェースを有する、項目13に記載の方法。
(項目15)
上記NIDを含むニューラル・ネットワーク・クローン指示を受信するステップと、
上記NIDに対応する第1のニューロンメモリと等価の第2のニューロンメモリを、ニューロンメモリを含むメモリの第2の領域に確立するステップと、
上記第2のニューロンメモリに第2のNIDを割り当てるステップと、
上記第2のNIDと上記シナプスデータとの間の対応関係を作成するための第2のNIDについてのNATC情報を更新するステップと
を備える、項目10に記載の方法。
(項目16)
上記NATC情報が、所与のNIDのシナプスメモリの中に、NID固有のデータ構造をポインタと共に含み、上記NIDの第1のNIDデータ構造と上記第2のNIDの第2のNIDデータ構造とが、同じシナプスメモリ空間を指し示すポインタを含む、項目15に記載の方法。
(項目17)
処理回路によって実行されると、上記処理回路に、
ニューロンアドレス変換ユニット(NATC)において、スパイクを生じさせたニューロンの物理ニューロン識別子(PNID)を含むスパイクメッセージを受信する動作と、
上記NATCが、上記PNIDをネットワーク識別子(NID)とローカルニューロン識別子(LNID)とに変換する動作と、
上記NATCが、上記NIDに基づいてシナプスデータを見つける動作と、
上記NATCが、上記シナプスデータおよび上記LNIDを軸索プロセッサに伝達する動作と
を含む動作を行わせる、ニューロモルフィック・アクセラレータ・マルチタスキングのための命令を含む少なくとも1つの機械可読媒体。
(項目18)
上記シナプスデータがメモリアドレス範囲を含む、項目17に記載の少なくとも1つの機械可読媒体。
(項目19)
上記PNIDを上記NIDと上記LNIDとに変換する上記動作が、上記PNIDを、各PNID範囲が一意のNIDに対応する複数のPNID範囲と比較する動作を含む、項目17に記載の少なくとも1つの機械可読媒体。
(項目20)
上記LNIDが、上記PNIDからPNID_begin値を減算することによって計算され、上記複数のPNID範囲のメンバが、NIDに対応する最小のPNIDと最大のPNIDとをそれぞれ保持するPNID_beginとPNID_endとの対を含む、項目17に記載の少なくとも1つの機械可読媒体。
(項目21)
上記軸索プロセッサが、相互接続を介して上記軸索プロセッサに接続されたニューラル・プロセッサ・クラスタを含むシステムの一部である、項目17に記載の少なくとも1つの機械可読媒体。
(項目22)
上記システムが、上記システムの構成要素に電力を供給する電源を備え、上記電源が、商用電源またはバッテリを介して電力を供給するインターフェースを有する、項目21に記載の少なくとも1つの機械可読媒体。
(項目23)
上記動作が、
上記NIDを含むニューラル・ネットワーク・クローン指示を受信する動作と、
上記NIDに対応する第1のニューロンメモリと等価の第2のニューロンメモリを、ニューロンメモリを含むメモリの第2の領域に確立する動作と、
上記第2のニューロンメモリに第2のNIDを割り当てる動作と、
上記第2のNIDと上記シナプスデータとの間の対応関係を作成するための第2のNIDについてのNATC情報を更新する動作と
を含む、項目17に記載の少なくとも1つの機械可読媒体。
(項目24)
上記NATC情報が、所与のNIDのシナプスメモリの中に、NID固有のデータ構造をポインタと共に含み、上記NIDの第1のNIDデータ構造と上記第2のNIDの第2のNIDデータ構造とが、同じシナプスメモリ空間を指し示すポインタを含む、項目23に記載の少なくとも1つの機械可読媒体。
(項目25)
上記動作が、上記第1のNIDに対応する訓練イベントに基づいて上記シナプスデータ内のシナプス構造を更新する動作を含む、項目17に記載の少なくとも1つの機械可読媒体。