(57)【要約】      （修正有）【課題】異なるスパイキング・ニューラル・ネットワーク間で効率的にニューロンアドレスを指定する技術を提供する。【解決手段】ニューロモルフィックハードウェア構成において、ニューロンアドレス変換ユニット（ＮＡＴＵ）は、スパイクを生じさせたニューロンの物理ニューロン識別子（ＰＮＩＤ）を含むスパイクメッセージを受信し、ＰＮＩＤをネットワーク識別子（ＮＩＤ）とローカルニューロン識別子（ＬＮＩＤ）とに変換し、ＮＩＤに基づいてシナプスデータを見つけ、シナプスデータおよびＬＮＩＤを軸索プロセッサに伝達する。【選択図】図６Ａ
2019204492.tif 000002
【特許請求の範囲】
【請求項１】
ニューロモルフィック・アクセラレータ・マルチタスキングのためのシステムであって、前記システムが、
軸索プロセッサと、
ニューロンアドレス変換回路（ＮＡＴＣ）と、を備え、前記ＮＡＴＣが、
スパイクを生じさせたニューロンの物理ニューロン識別子（ＰＮＩＤ）を含むスパイクメッセージを受信する第１のインターフェースと、
処理回路であって、
前記ＰＮＩＤをネットワーク識別子（ＮＩＤ）とローカルニューロン識別子（ＬＮＩＤ）とに変換し、
前記ＮＩＤに基づいてシナプスデータを見つける
処理回路と、
前記シナプスデータおよび前記ＬＮＩＤを前記軸索プロセッサに伝達する第２のインターフェースと
を備える、システム。
【請求項２】
前記シナプスデータがメモリアドレス範囲を含む、請求項１に記載のシステム。
【請求項３】
前記ＰＮＩＤを前記ＮＩＤと前記ＬＮＩＤとに変換するために、前記処理回路が前記ＰＮＩＤを、各ＰＮＩＤ範囲が一意のＮＩＤに対応する複数のＰＮＩＤ範囲と比較する、請求項１または２に記載のシステム。
【請求項４】
前記ＬＮＩＤが、前記ＰＮＩＤからＰＮＩＤ＿ｂｅｇｉｎ値を減算することによって計算され、複数のＰＮＩＤ範囲のメンバが、ＮＩＤに対応する最小のＰＮＩＤと最大のＰＮＩＤとをそれぞれ保持するＰＮＩＤ＿ｂｅｇｉｎとＰＮＩＤ＿ｅｎｄとの対を含む、請求項１〜３のいずれか一項に記載のシステム。
【請求項５】
前記ＮＡＴＣが前記軸索プロセッサと共にパッケージ化されている、請求項１〜４のいずれか一項に記載のシステム。
【請求項６】
相互接続を介して前記軸索プロセッサに接続されたニューラル・プロセッサ・クラスタを備える、請求項１〜５のいずれか一項に記載のシステム。
【請求項７】
前記システムの構成要素に電力を供給する電源を備え、前記電源が、商用電源またはバッテリを介して電力を供給するインターフェースを有する、請求項６に記載のシステム。
【請求項８】
ニューロンデータを格納するニューロンデータ領域と前記ＮＩＤに対応する第１のニューロンメモリ領域とを有するメモリと、
ニューロンプロセッサ制御回路であって、
前記ＮＩＤを含むニューラル・ネットワーク・クローン指示を受信し、
前記ニューラル・ネットワーク・クローン指示を受信したことに応答して、前記メモリの前記ニューロンデータ領域において、前記第１のニューロンメモリ領域と等価である第２のニューロンメモリ領域を確立する
ニューロンプロセッサ制御回路と
を備え、
前記処理回路が、前記第２のニューロンメモリ領域が確立されたことに応答して、さらに、
前記第２のニューロンメモリ領域に第２のＮＩＤを割り当て、
前記第２のＮＩＤと前記シナプスデータとの間の対応関係を作成するために前記第２のＮＩＤについての変換情報を更新する、請求項１〜７のいずれか一項に記載のシステム。
【請求項９】
前記変換情報が、所与のＮＩＤのシナプスメモリの中に、ＮＩＤ固有のデータ構造をポインタと共に含み、前記ＮＩＤの第１のＮＩＤデータ構造と前記第２のＮＩＤの第２のＮＩＤデータ構造とが、同じシナプスメモリ空間を指し示すポインタを含む、請求項８に記載のシステム。
【請求項１０】
前記軸索プロセッサが、第１のＮＩＤに対応する訓練イベントに基づいて前記シナプスデータ内のシナプス構造を更新する、請求項１〜９のいずれか一項に記載のシステム。
【請求項１１】
ニューロモルフィック・アクセラレータ・マルチタスキングのための方法であって、
ニューロンアドレス変換回路（ＮＡＴＣ）において、スパイクを生じさせたニューロンの物理ニューロン識別子（ＰＮＩＤ）を含むスパイクメッセージを受信するステップと、
前記ＮＡＴＣが、前記ＰＮＩＤをネットワーク識別子（ＮＩＤ）とローカルニューロン識別子（ＬＮＩＤ）とに変換するステップと、
前記ＮＡＴＣが、前記ＮＩＤに基づいてシナプスデータを見つけるステップと、
前記ＮＡＴＣが、前記シナプスデータおよび前記ＬＮＩＤを軸索プロセッサに伝達するステップと
を備える、方法。
【請求項１２】
前記シナプスデータがメモリアドレス範囲を含む、請求項１１に記載の方法。
【請求項１３】
前記ＰＮＩＤを前記ＮＩＤと前記ＬＮＩＤとに変換する前記ステップが、前記ＰＮＩＤを、各ＰＮＩＤ範囲が一意のＮＩＤに対応する複数のＰＮＩＤ範囲と比較するステップを含む、請求項１１または１２に記載の方法。
【請求項１４】
前記ＬＮＩＤが、前記ＰＮＩＤからＰＮＩＤ＿ｂｅｇｉｎ値を減算することによって計算され、複数のＰＮＩＤ範囲のメンバが、ＮＩＤに対応する最小のＰＮＩＤと最大のＰＮＩＤとをそれぞれ保持するＰＮＩＤ＿ｂｅｇｉｎとＰＮＩＤ＿ｅｎｄとの対を含む、請求項１１〜１３のいずれか一項に記載の方法。
【請求項１５】
前記軸索プロセッサが、相互接続を介して前記軸索プロセッサに接続されたニューラル・プロセッサ・クラスタを含むシステムの一部である、請求項１１〜１４のいずれか一項に記載の方法。
【請求項１６】
前記軸索プロセッサが、前記シナプスデータから見つかったシナプス構造に基づいて、第２のスパイクメッセージが前記ＬＮＩＤにアドレス指定されていると判断するステップと、
前記ＮＡＴＣが、前記シナプスデータに対応する前記ＮＩＤを使用して前記ＬＮＩＤを前記ＰＮＩＤに変換するステップと、
前記ニューロンを識別するために前記ＰＮＩＤを使用して前記第２のスパイクメッセージを前記軸索プロセッサに伝達するステップと
を含む、請求項１５に記載の方法。
【請求項１７】
前記ＰＮＩＤが、前記ＬＮＩＤにＰＮＩＤ＿ｂｅｇｉｎ値を加算することによって計算され、前記ＰＮＩＤ＿ｂｅｇｉｎ値が前記ＮＩＤのＰＮＩＤ範囲に対応する、請求項１６に記載の方法。
【請求項１８】
前記ＬＮＩＤを前記ＰＮＩＤに変換する前記ステップが、前記ＮＩＤを前記ＬＮＩＤの一端に連結するステップを含む、請求項１６または１７に記載の方法。
【請求項１９】
前記システムが、前記システムの構成要素に電力を供給する電源を備え、前記電源が、商用電源またはバッテリを介して電力を供給するインターフェースを有する、請求項１５〜１８のいずれか一項に記載の方法。
【請求項２０】
前記ＮＩＤを含むニューラル・ネットワーク・クローン指示を受信するステップと、
前記ＮＩＤに対応する第１のニューロンメモリと等価の第２のニューロンメモリを、ニューロンメモリを含むメモリの第２の領域に確立するステップと、
前記第２のニューロンメモリに第２のＮＩＤを割り当てるステップと、
前記第２のＮＩＤと前記シナプスデータとの間の対応関係を作成するための前記第２のＮＩＤについてのＮＡＴＣ情報を更新するステップと
を備える、請求項１１〜１９のいずれか一項に記載の方法。
【請求項２１】
前記ＮＡＴＣ情報が、所与のＮＩＤのシナプスメモリの中に、ＮＩＤ固有のデータ構造をポインタと共に含み、前記ＮＩＤの第１のＮＩＤデータ構造と前記第２のＮＩＤの第２のＮＩＤデータ構造とが、同じシナプスメモリ空間を指し示すポインタを含む、請求項２０に記載の方法。
【請求項２２】
第１のＮＩＤに対応する訓練イベントに基づいて前記シナプスデータ内のシナプス構造を更新するステップを備える、請求項１１〜２１のいずれか一項に記載の方法。
【請求項２３】
第２のＮＩＤに対応するニューラルネットワークを前記ＮＩＤに対応する前記ニューラルネットワークと同時に呼び出すステップを備え、前記第２のＮＩＤに対応する前記ニューラルネットワークと前記ＮＩＤに対応する前記ニューラルネットワークの両方が前記シナプス構造を使用する、請求項２２に記載の方法。
【請求項２４】
請求項１１〜２３のいずれか一項に記載の方法をコンピュータに行わせるためのプログラム。
【請求項２５】
請求項２４に記載のプログラムを記憶するコンピュータ可読記憶媒体。
【請求項２６】
請求項１１〜２３のいずれか一項に記載の方法を行う手段を備えるシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は一般に、ニューロモルフィックハードウェアを備える電子ハードウェアに関し、より具体的にはニューロモルフィック・アクセラレータ・マルチタスキングに関する。
【背景技術】
【０００２】
ニューロモルフィックプロセッサとは、脳およびその基礎となるアーキテクチャの特定の局面、特にそのニューロンおよびニューロン間の相互接続を模倣するように構成されたプロセッサであるが、そのようなプロセッサはその生物学的対応物から逸脱する場合がある。ニューロモルフィックプロセッサは、コア間の通信を方向付けるために、バスやルーティングデバイスなどのネットワークアーキテクチャを介して相互接続された多くのニューロモルフィックコアから構成され得る。コアのネットワークは、コアからコアへ送信される短いパケット化されたスパイクメッセージを介して通信し得る。各コアは、いくつかのプリミティブな非線形時間計算素子（例えば、ニューロン）を実装し得る。ニューロンの活性化がある閾値レベルを超えると、送信先コアに含まれるファンアウトニューロンのセットに伝播されるスパイクメッセージを生成し得る。ネットワークは次いで、スパイクメッセージを送信先ニューロンに配信することができ、それらのニューロンは、それらの活性化を過渡的、時間依存的に更新する。スパイクを介して動作する人工ニューラルネットワーク（ＡＮＮ）は、スパイキング・ニューラル・ネットワーク（ＳＮＮ）と呼ばれることがある。
【０００３】
ＳＮＮは、訓練するためにスパイク時間依存可塑性（ＳＴＤＰ）を使用し得る。ＳＴＤＰは、シナプス荷重、すなわち、シナプスで受信されたスパイクを、スパイク単独よりもニューロン活性化に多いかまたは少ない影響を与えるように修正する値を、ニューロン活性化（例えば、出力スパイク）に関連して入力スパイクがいつ受信されるかに基づいて更新する。一般に、入力スパイクが出力スパイクのより近くで受信されるほど、対応するシナプス荷重がより大きく修正される。入力スパイクが出力スパイクに先行する場合、重みは、そのシナプスにおける将来のスパイクが後続の出力スパイクを生じさせる可能性がより高くなるように修正される。入力スパイクが出力スパイクの後に続く場合、対応するシナプス荷重は、そのシナプスにおける将来のスパイクが後続の出力スパイクを生じさせる可能性がより低くなるように修正される。これらの関係は、パターン関与要素を強化しながら、ノイズ（例えば、出力スパイクの後に続く入力スパイクは出力スパイクの作成に関与せずノイズとみなされ得る）を減衰させる。
【図面の簡単な説明】
【０００４】
図面において、図面は必ずしも一定の縮尺で描かれておらず、同様の数字は異なる図において同様の構成要素を記述し得る。異なる添え字を有する同様の数字は、同様の構成要素の異なるインスタンスを表し得る。図面は一般に、限定としてではなく例として、本明細書で論じる様々な実施形態を示している。
【０００５】
【図１】一実施形態による、簡略化されたニューラルネットワークを示す例示的な図である。
【０００６】
【図２】一実施形態による、モデル・ニューラル・コア構造を示すハイレベル図である。
【０００７】
【図３】一実施形態による、スパイキング・ニューラル・ネットワークのためのニューロモルフィックアーキテクチャ設計の概要を示す図である。
【０００８】
【図４Ａ】一実施形態による、ニューロモルフィックハードウェア構成で使用するためのニューロン・プロセッサ・クラスタの構成を示す図である。
【０００９】
【図４Ｂ】一実施形態による、ニューロモルフィックハードウェア構成で使用するための軸索プロセッサの構成を示す図である。
【００１０】
【図５】一実施形態による、図３から図４Ｂのニューロモルフィックハードウェア構成を示すシステムレベル図である。
【００１１】
【図６Ａ】一実施形態による、ニューロモルフィック・アクセラレータ・マルチタスキングの一態様を実装するためのネットワークアドレス変換ユニット（ＮＡＴＵ）を示す図である。
【図６Ｂ】一実施形態による、ニューロモルフィック・アクセラレータ・マルチタスキングの一態様を実装するためのネットワークアドレス変換ユニット（ＮＡＴＵ）を示す図である。
【００１２】
【図７】一実施形態による、ローカルネットワークから物理ネットワークへの変換のためのＮＡＴＵテーブルおよびシナプスメモリ空間配置を示す図である。
【００１３】
【図８Ａ】一実施形態による、ＮＡＴＵテーブル、ニューロンメモリ空間、およびシナプスメモリ空間を示す図である。
【図８Ｂ】一実施形態による、ニューラル・ネットワーク・クローニングのための方法を示す図である。
【図８Ｃ】一実施形態による、ニューラル・ネットワーク・クローニングのための方法を示す図である。
【００１４】
【図９】一実施形態による、ニューロモルフィック・ハードウェア・マルチタスキングのための方法の一例を示すフローチャートである。
【００１５】
【図１０】１つまたは複数の実施形態が実装され得る機械の一例を示すブロック図である。
【００１６】
【図１１】一実施形態によるレジスタアーキテクチャのブロック図である。
【００１７】
【図１２】様々な実施形態による例示的なイン・オーダ・パイプラインと、例示的なレジスタリネーミング、アウト・オブ・オーダ発行／実行パイプラインの両方を示すブロック図である。
【００１８】
【図１３】様々な実施形態によるプロセッサに含まれるべき、イン・オーダ・アーキテクチャ・コアの例示的な実施形態と、例示的なレジスタリネーミング、アウト・オブ・オーダ発行／実行アーキテクチャコアとを示すブロック図である。
【００１９】
【図１４Ａ】そのコアが、チップ内の（同じタイプおよび／または異なるタイプの他のコアを含む）いくつかの論理ブロックのうちの１つになるはずの、より具体的なイン・オーダ・コア・アーキテクチャの例を示すブロック図である。
【図１４Ｂ】そのコアが、チップ内の（同じタイプおよび／または異なるタイプの他のコアを含む）いくつかの論理ブロックのうちの１つになるはずの、より具体的なイン・オーダ・コア・アーキテクチャの例を示すブロック図である。
【００２０】
【図１５】様々な実施形態による、複数のコアを有し得る、統合メモリコントローラを有し得る、統合グラフィックスを有し得るプロセッサのブロック図である。
【００２１】
【図１６】例示的なコンピュータアーキテクチャのブロック図である。
【図１７】例示的なコンピュータアーキテクチャのブロック図である。
【図１８】例示的なコンピュータアーキテクチャのブロック図である。
【図１９】例示的なコンピュータアーキテクチャのブロック図である。
【００２２】
【図２０】様々な実施形態による、ソース命令セット内のバイナリ命令をターゲット命令セット内のバイナリ命令に変換するためのソフトウェア命令コンバータの使用を対比させたブロック図である。
【発明を実施するための形態】
【００２３】
ニューロモルフィックアクセラレータ（例えば、ニューロモルフィックプロセッサや処理クラスタ）は、生物学的神経回路網の速度および接続性に近づけるためにいくつかの方法で編成され得る。ハードウェアに何百万ものニューロンと何十億ものニューロン間接続を効率的に詰め込むことが難しい場合もある。本明細書で詳述する実施形態では、ニューロモルフィックアーキテクチャの処理動作において外部メモリリソースを使用するニューロモルフィックアーキテクチャについて説明する。結果として、数百万または数十億のニューロンにさえもなる、非常に大規模なニューラルネットワークの作成が、単一のアクセラレータチップを使用して開始および利用され得ることになる。これが可能なのは、本手法が、「ファンイン」ではなく「ファンアウト」のニューロモルフィック・アクセラレータ・アーキテクチャを可能にして、様々なニューロンと関連付けられた多くのシナプス状態が外部メモリに分配されることを可能にするからである。加えて、本手法では、シナプスと関連付けられた空間的局所性の局面が、そのようなシナプスからの情報を外部メモリに編成された形で（例えば、隣接したメモリ位置に）格納することによって利用され得る。
【００２４】
ＳＮＮは、その基本形では、ノードとエッジとを有するグラフに似ている。ＳＮＮでは、ノードはニューロンと呼ばれ、ニューロン間のエッジはシナプスと呼ばれる。ニューロンは、「膜電位」の累積と「スパイク」の２つの機能を果たすよう適合されている。膜電位（単に「電位」とも呼ばれる）は、累計カウンタに似ており、よって電位が十分に高くなるとニューロンがスパイクを発生する。このスパイキングニューロンは一般に「シナプス前ニューロン」と呼ばれる。シナプス前ニューロンは、スパイクを発生すると、「シナプス後ニューロン」と呼ばれる、シナプス前ニューロンのすべてのターゲットニューロンへのすべてのシナプス前ニューロンの出力接続に沿ってスパイクメッセージを送出する。これらのメッセージは各々それと関連付けられた「重み」を有し、これらの重みは正または負の場合があり、シナプス後ニューロンの電位を増減させる。加えて、時間がＳＮＮの重要な局面であり、あるスパイクメッセージは、たとえそれらがシナプス前ニューロンから同時に送信されたとしても、他のスパイクメッセージよりもシナプス後ニューロンに到達するのに長い時間を要する場合がある。
【００２５】
以下の構成は、具体的には図３から図５に詳述されているように、シナプスデータを外部メモリで格納するＳＮＮを実装するためのアクセラレータチップの構成を提供する。ＳＮＮが動作する文脈、およびニューロモルフィックハードウェアで実装されるＳＮＮの全体アーキテクチャについては、図１および図２に示されており、以下の段落で論じる。また、本明細書で使用する場合、少なくともいくつかの例での「ニューラルネットワーク」への言及は、特にＳＮＮを指すことが意図されている。よって、本明細書における「ニューロン」への多くの言及は、ＳＮＮにおける人工ニューロンを指すことが意図されている。しかしながら、以下の例および構成のうちのいくつかは、人工ニューラルネットワークの他の形態または変形形態にも適用され得ることが理解されよう。
【００２６】
上記のアーキテクチャは多くのニューロンおよび接続の効率的なモデル化を可能にするが、ＳＮＮの一般的に疎な信号挙動はアイドル状態のハードウェアをもたらし得る。この問題に対処するために、複数のＳＮＮが同じハードウェア上で動作し得る。同じハードウェア上の異なるＳＮＮ間の効率的なニューロンアドレス指定の問題は、ネットワークアドレス変換回路（ＮＡＴＣ）とも呼ばれる、ネットワークアドレス変換ユニット（ＮＡＴＵ）によって実装される、ローカルアドレス指定（例えばＳＮＮ内アドレス指定）と物理アドレス指定（例えばグローバルアドレス指定やハードウェアアドレス指定）との組み合わせの技法によって克服され得る。よって、ＳＮＮは、例えばそのＳＮＮのシナプスデータ内のローカルアドレスを使用してニューロン間接続を格納し得る。別のＳＮＮも同じことをし得る。しかしながら、ＮＡＴＵは、ニューロンデータを処理するニューロンプロセッサをアドレス指定するために、ローカルネットワーク識別子（ｌｏｃａｌ  ｎｅｔｗｏｒｋ  ｉｄｅｎｔｉｆｉｅｒ（ＬＮＩＤ））を物理ネットワーク識別子（ｐｈｙｓｉｃａｌ  ｎｅｔｗｏｒｋ  ｉｄｅｎｔｉｆｉｅｒ（ＰＮＩＤ））に変換し得る。ＮＡＴＵは同じハードウェア上の異なるＳＮＮにデータ分離を提供するので、ＳＮＮ自体を特別に設計することなく複数のＳＮＮがハードウェア上で同時に実行され得る。よって、ＳＮＮの追加、すなわちＳＮＮマルチタスキングを介してハードウェア利用率が高まり得る。
【００２７】
ニューロモルフィックハードウェア上の複数のＳＮＮの１つの使用事例が、ＳＮＮのクローニングである。クローン化ＳＮＮでは、ニューロン状態のコピーが作成され維持される。よって、２つのＳＮＮは、入力処理を妨げることなく同時に動作し得る。しかしながら、ネットワークが同様に振る舞うようにするために、クローン化ＳＮＮはシナプスデータを共有し得る。これにより、シナプスデータが２つのネットワーク間で共有されるので、両方のネットワークが同様のデータに同様に応答することが可能になり、シナプスデータ空間を保存し、異なるデータセットでの効率的な訓練さえも可能になる。例えば、第１のクローン化ＳＮＮがデータセットＡで訓練している場合、第２のＳＮＮは同時にデータセットＢで訓練し得る。ＳＴＤＰを実現するために両方のＳＮＮが共有シナプスデータを更新するので、第１のネットワークは、データセットＢの処理からのシナプスデータへの第２のネットワークの更新に基づいてデータセットＢで訓練することになる。
【００２８】
図１に、第１のノードセット１３０（例えば、ニューロン）と第２のノードセット１４０（例えば、ニューロン）との間の接続１３５の事例を提供する、簡略化されたニューラルネットワーク１１０の例示的な図を示す。ニューラルネットワーク（簡略化されたニューラルネットワーク１１０など）は、一般に、入力層と出力層とを含む複数の層に編成される。簡略化されたニューラルネットワーク１１０は、２つの層と少数のノードのみを示しているが、他の形態のニューラルネットワークは、多数のノード、層、接続、および経路を含み得ることが理解されよう。
【００２９】
ニューラルネットワーク１１０に提供されるデータは、まず入力ニューロンのシナプスによって処理される。入力とニューロンのシナプスとニューロン自体との間の相互作用により、出力が別のニューロンに提供されるかどうかが決定される。シナプス、ニューロン、軸索などをモデル化することは、様々な方法で達成され得る。一例では、ニューロモルフィックハードウェアは、合成ニューロン（例えば、ニューロコア）内の個々の処理要素と、出力を他のニューロンに伝達するメッセージングファブリックとを含む。特定のニューロンが次に接続されたニューロンにデータを提供するために「発火」するかどうかの決定は、ニューロンによって適用される活性化関数と、（例えば、第１のノードセット１３０の層に位置する）ニューロンｊから（例えば、第２のノードセット１４０の層に位置する）ニューロンｉへのシナプス接続の重み（例えばｗｉｊ１５０）とに依存する。ニューロンｊによって受信された入力は値ｘｊ１２０として示されており、ニューロンｉから生成された出力は値ｙｉ１６０として示されている。よって、ニューラルネットワークで実行される処理は、重み付き接続と、閾値と、ニューロン、シナプス、およびニューラルネットワークの他の要素の間で行われる評価とに基づくものである。
【００３０】
一例では、ニューラルネットワーク１１０は、ＳＮＮコアのネットワークから確立され、ニューラル・ネットワーク・コアは、コアからコアへ送信される短いパケット化されたスパイクメッセージを介して通信する。例えば、各ニューラル・ネットワーク・コアは、いくつかのプリミティブな非線形時間計算素子をニューロンとして実装し得るので、ニューロンの活性化がある閾値レベルを超えると、送信先コアに含まれる固定されたファンアウトニューロンのセットに伝播されるスパイクメッセージを生成する。ネットワークはスパイクメッセージをすべての送信先ニューロンに配信することができ、これに応答してそれらのニューロンは実際の生物学的ニューロンの動作と同様に、過渡的な時間依存方式でそれぞれの活性化を更新する。
【００３１】
ニューラルネットワーク１１０はさらに、第１のニューロンセット内のニューロンｊ（例えば、第１のノードセット１３０のニューロン）において、値ｘｊ１２０で表されるスパイクの受信を示している。ニューラルネットワーク１１０の出力も値ｙｉ１６０によって表されるスパイクとして示されており、これは、接続１３５によって確立されたパスを介して第２のニューロンセット内のニューロンｉ（例えば、第２のノードセット１４０のニューロン）に到達する。スパイキング・ニューラル・ネットワークでは、すべての通信がイベント駆動型の活動電位、すなわちスパイクに介して行われる。一例では、スパイクは、スパイク時間および送信元・送信先ニューロン対以外の情報を伝達しない。実数値の状態変数を使用した重み付きスパイク入力の動的非線形積分の結果として、計算が各ニューロンで行われる。特定のニューロンによってまたは特定のニューロンに対して生成されるスパイクの時系列は、そのニューロンの「スパイク列」と呼ばれ得る。
【００３２】
ＳＮＮの一例では、活性化関数がスパイク列を介して行われ、これは考慮される必要のある要因が時間であることを意味する。さらに、ＳＮＮでは、各ニューロンは生物学的ニューロンをモデルとし得る。というのは、人工ニューロンはその入力を１つまたは複数の「樹状突起」（生物学的ニューロンの物理構造の一部）へのシナプス接続を介して受信することができ、これらの入力は、人工ニューロンの「細胞体」（ｃｅｌｌ  ｂｏｄｙ）の内部膜電位に影響を及ぼすからである。前述したように、ＳＮＮでは、人工ニューロンは、その膜電位が発火閾値を超えると、「発火」する（例えば、出力スパイクを生成する）。よって、ＳＮＮニューロンに対する入力の影響は、内部膜電位を増加または減少させるように作用し、ニューロンが発火する可能性をより高くするかまたはより低くする。さらに、ＳＮＮでは、入力接続は刺激的または抑制的であり得る。ニューロンの膜電位は、ニューロン自体の内部状態の変化（「リーク（ｌｅａｋａｇｅ）」）によっても影響され得る。
【００３３】
いくつかの例では、ニューラルネットワークは、スパイクタイミング依存可塑性（ＳＴＤＰ）などの学習技法を使用した学習を実装するために、ニューラルネットワーク経路内のスパイクを利用し得る。例えば、ニューラルネットワーク経路は、処理のためにシナプス前ニューロンＸＰＲＥに提供されている１つまたは複数の入力（例えば、スパイクやスパイク列）を利用し得る。ニューロンＸＰＲＥは第１のスパイクを生じさせ、第１のスパイクは処理のためにニューロンＸＰＯＳＴに伝播される。ニューロンＸＰＲＥとシナプス後ニューロンＸＰＯＳＴとの間の接続（例えば、シナプス接続）は、重みに基づいて重み付けされる。ニューロンＸＰＯＳＴで受信された（例えば、１つまたは複数の接続から受信された）入力が特定の閾値に達すると、ニューロンＸＰＯＳＴは活性化し（例えば、「発火」し）、第２のスパイクを生じさせる。
【００３４】
第１のスパイクの結果として第２のスパイクが生じるという決定は、ＳＴＤＰの原理に基づいて（例えば、重みを修正することによって）ニューロンＸＰＲＥとニューロンＸＰＯＳＴとの間の接続を強化するために使用され得る。具体的には、ＳＴＤＰは、入力スパイク（例えば、第１のスパイク）と出力スパイク（例えば、第２のスパイク）との間のタイミングを相関させることによって、ニューラルネットワーク内のニューロン間の接続（例えば、シナプス）の強度を調整するために使用され得る。別の例では、重みは、長期増強（ＬＴＰ）、長期抑圧（ＬＴＤ）、または他の技法の結果として調整され得る。ニューラルネットワーク経路は、同じ原理で動作する他のニューロンと組み合わされると、入力における繰り返しパターンが経時的に経路を強化するので、自然な教師なし学習を示し得る。逆に、ノイズは、時々スパイクを生成し得るが、関連付けられた経路を強化するのに十分なほど規則的にはならない。
【００３５】
図２に、一実施形態による、モデル・ニューラル・コア構造の専門的な図を示す。以下のニューラルコア構造は、ＳＮＮマルチタスキングおよびＳＮＮクローニングについて後述するような追加の技法および構成を実装し得る。よって、図２の略図は、ニューロモルフィックハードウェア演算がどのように行われ得るかについての簡略化された例として提供されている。
【００３６】
一例では、ニューラルコア２０５は、ニューラルチップ２５５を形成するためにいくつかの他のニューラルコアと共にダイ上にあり得る。いくつかのニューラルチップ２５５がパッケージ化され、相互にネットワーク接続されて、ニューロモルフィックハードウェア２５０を形成し、これが、サーバ、モバイル装置、センサ、アクチュエータなどの任意の数の装置２４５に含まれ得る。ニューロモルフィックハードウェア２５０は、これらの装置のプライマリプロセッサ（例えば、図１０に関連して後述するプロセッサ１００２）であってもよく、またはこれらの装置の別のプロセッサを補完するコプロセッサもしくはアクセラレータであってもよい。図示したニューラルコア構造は、上述した方式で生物学的ニューロンの挙動を機能的にモデル化する。適切な重みおよび遅延オフセット（例えば、樹状突起がどのシナプスに対応するかを識別するシナプスアドレス２１５によって表される）を有する、他の樹状突起構造へのコア２０５内のファンアウト接続をもたらし得る信号が入力（例えば、イングレススパイク、スパイクインなど）においてシナプスに提供される（例えば、シナプス可変メモリ内のシナプス荷重２２０によってモデル化される）。信号は、（例えば、シナプス荷重がそれぞれのシナプスをアドレス指定するスパイクに適用されるときに）シナプス可変メモリによって修正され、ニューロンモデルに利用できるようにされ得る。例えば、ニューロン膜電位２２５の組み合わせは、重み付きスパイクと多重化（２３５）され、重み付きスパイク状態に基づいて出力スパイク（例えば、１つまたは複数の送信先コアへの軸索を介したエグレススパイク）を生成するためにニューロンの電位と比較（２４０）され得る。
【００３７】
一例では、ニューロモルフィック・コンピューティング・システムは、前述したＳＴＤＰの技法などによる学習２１０を用い得る。例えば、ニューラル・ネットワーク・コアのネットワークは、コアからコアへ送信される短いパケット化されたスパイクメッセージを介して通信し得る。各コアは、プリミティブな非線形時間計算素子として動作するいくつかのニューロンを実装し得る。ニューロンの活性化がある閾値レベルを超えると、ニューロンは、送信先コアに含まれるファンアウトニューロンのセットに伝播されるスパイクメッセージを生成する。その活性化レベルを管理する際に、ニューロンはそれ自体をスパイクに応答して修正し得る（例えば、シナプス荷重を修正し得る）。これらの動作は、いくつかの時間依存的特徴をモデル化し得る。例えば、スパイクの後に続いて、ＰＲＥスパイクの影響は指数関数的に減衰し得る。指数関数としてモデル化されたこの指数関数的減衰は、いくつかの時間ステップにわたって継続する可能性があり、その間に追加のスパイクが到達する場合もあり、到達しない場合もある。
【００３８】
ニューラルコア２０５は、シナプス荷重２２０を格納するように適合されたメモリブロック、ニューロン膜電位２２５のためのメモリブロック、統合ロジック２３５、閾値処理ロジック２４０、ＳＴＤＰ２１０に基づくオンライン学習および重み更新ロジック、ならびにスパイク履歴バッファ２３０を含み得る。（例えば、以下で、図３〜図５に関連して）本明細書で論じる技法を用いて、シナプス荷重２２０および膜電位２２５は、（例えば、内部ＳＲＡＭに格納された）オンチップニューロン状態データと（例えば、ＤＲＡＭに格納された）オフチップ・シナプス・データとの間で分割され得る。
【００３９】
特定の実装形態では、シナプス前ニューロンからのスパイクが受信されると、シナプス荷重がアクセスされ、シナプス後ニューロンの膜電位（ｕ）に加算される。更新された（ｕ）が事前設定されたスパイク閾値よりも大きい場合、出力スパイクが生成される。出力スパイクは、コア内の各ニューロンが最後にスパイクを発生して以来経過した時間ステップ数（ｔＰＯＳＴ）をカウントするスパイク履歴バッファをリセットする。別の例では、ニューラルコアは、ＬＴＤ、単一のＰＲＥスパイクＬＴＰ、または複数のＰＲＥスパイクＬＴＰなど、提案のコアで行われるオンライン（例えば、チップ内）の学習動作の変形形態を実装し得る。
【００４０】
Δｗによって計算される新しいシナプス荷重は、将来のＰＲＥスパイクを修正（例えば、重み付け）するためにシナプスメモリにインストールされ、よって、ＰＲＥスパイクの特定の組み合わせがＰＯＳＴスパイクを生じさせる可能性を修正する。ネットワークはスパイクメッセージを送信先ニューロンに配信し、スパイクメッセージを受信したことに応答してそれらのニューロンは、生物学的ニューロンの動作と同様に、過渡的な時間依存方式でそれぞれの活性化を更新する。
【００４１】
ニューラルコア２０５におけるいくつかの適用可能な学習アルゴリズムの基本的な実装は、ＳＴＤＰを介して提供することができ、ＳＴＤＰは、入力（例えばイングレス）スパイクと出力（例えばエグレス）スパイクとの間のタイミングを相関させることに基づいてニューラルネットワーク内のニューロン間の接続（例えばシナプス）の強度を調整する。ニューロンの出力スパイクの直前にある入力スパイクは出力の原因とみなされ、それらの重みは強化されるが、他の入力スパイクの重みは弱められる。これらの技法は、スパイク時間またはモデル化されたスパイク時間を使用して、モデル化されたニューラルネットワークの動作が教師なし学習モードや強化学習モードなどのいくつかの機械学習モードに従って修正されることを可能にする。
【００４２】
別の例では、ニューラルコア２０５は、逆方向伝播処理をサポートするように適合され得る。生物学では、細胞体がスパイク（例えばエグレススパイク）を発生すると、そのスパイクが下流へ他のニューロンに伝播することに加えて、スパイクは樹状突起樹を通って逆方向にも伝播し、これは学習にとって有益である。シナプスにおけるシナプス可塑性は、シナプス後ニューロンがいつ発火するか、またシナプス前ニューロンがいつ発火してかについての関数であり、シナプスはニューロンがいつ発火するかを知っている。よって、マルチコンパートメントアーキテクチャでは、細胞体がいったん発火すると、ニューロンが発火したことを知っている他の要素が学習をサポートするために存在し、例えば、そのためすべての入力ファンインシナプスは、そのニューロンが発火したことがわかる。学習構成要素２１０は、ＳＴＤＰを実装し、この逆方向活動電位（ｂＡＰ）通知を（例えば、トレース計算回路を介して）受信し、しかるべくシナプスと通信し、シナプスを調整し得る。しかしながら、ニューラルコア２０５の動作局面に対する変更は、ニューロモルフィックハードウェアのタイプおよび実装において使用される学習、強化、およびスパイク処理の技法のタイプに基づいて著しく異なり得ることが理解されよう。
【００４３】
図３に、スパイキング・ニューラル・ネットワークのためのニューロモルフィックアーキテクチャ３１０の概要を示す。具体的には、このアーキテクチャは、外部メモリにおいてニューラルネットワーク動作のシナプスデータを格納し、また取り出すように構成されたアクセラレータチップ３２０を示している。
【００４４】
アクセラレータチップ３２０は、３つのタイプの構成要素、すなわちニューロンプロセッサ３５０と、軸索プロセッサ（ＡＰ）３４０（例えば第１の軸索プロセッサセット３４０Ａ）と、メモリコントローラ（Ｍｅｍｏｒｙ  Ｃｏｎｔｒｏｌｌｅｒ（ＭＣ））３３０（例えば第１のメモリコントローラ３３０Ａ）とを、これらの構成要素間の必要な相互接続（例えばバス）に加えて含むように構成される。アーキテクチャ３１０において、ＳＮＮの処理機能の働きは、以下の構成を有するニューロンプロセッサ３５０と軸索プロセッサ３４０との間で分割されるように構成される。
【００４５】
一例では、各軸索プロセッサ３４０は、（例えば、それぞれのメモリセット３６０Ａ、３６０Ｂ、３６０Ｃ、３６０Ｄで示されるように）外部メモリ３６０の１つの物理チャネルに緊密に結合されるように構成され、そのメモリのチャネルにシナプスデータが存在するスパイクの処理を、それぞれの軸索プロセッサ３４０が担当する。外部メモリ３６０は、それぞれの高性能ＤＲＡＭ（例えば、高帯域幅メモリ（Ｈｉｇｈ  Ｂａｎｄｗｉｄｔｈ  Ｍｅｍｏｒｙ（ＨＢＭ））規格ＤＲＡＭ、ハイブリッド・メモリ・キューブ（Ｈｙｂｒｉｄ  Ｍｅｍｏｒｙ  Ｃｕｂｅ（ＨＭＣ））規格ＤＲＡＭなど）のセットまたは構成を構成し得る。他の例では、外部メモリ３６０は、他の形態のより低速だが高密度のメモリ（積層型相変化メモリ（例えば、３Ｄ  ＸＰｏｉｎｔ規格を実装する）、ＤＤＲｘ−ＳＤＲＡＭ、ＧＤＤＲｘ  ＳＤＲＡＭ、ＬＰＤＤＲ  ＳＤＲＡＭ、ダイレクト・スルーシリコン・ビア（ＴＳＶ）ダイ積層型ＤＲＡＭなどを含む）を構成し得る。
【００４６】
処理がアクセラレータチップ３２０内の複数の構成要素間で分割されることに加えて、様々なＳＮＮ状態の記憶も分割される。ニューロン状態は、オンチップＳＲＡＭ実装形態（図示せず）の場合のように、ニューロンプロセッサ３５０に隣接したチップに格納されるが、シナプスデータは、外部メモリ３６０に格納される。この分割は、データのサイズとデータの局所性という２つの主な理由で行われる。
【００４７】
シナプスデータは、ニューロン状態データよりも桁違いに多くのメモリ空間を占有する。また、シナプスデータは高い空間的局所性でアクセスされるが時間的局所性はなく、一方、ニューロンデータは、空間的局所性はないが、高い時間的局所性でアクセスされる。さらに、ＳＮＮでは時間の概念が強くあり、スパイクメッセージの中には他のものよりも生成と伝播に時間を要するものがある。ＳＮＮアクセラレータ３００では、従来のＳＮＮアクセラレータ設計と同様に、時間は離散的な論理的「時間ステップ」に分割される。各時間ステップの間に、いくつかのスパイクメッセージがそれらのターゲットに到達し、いくつかのニューロンがスパイクを発生し得る。これらの論理的時間ステップは各々、処理に多くのアクセラレータ・クロック・サイクルを要する。シナプスデータの格納は、そのようなデータが使用されていない比較的長時間の間には外部メモリ３６０に適し得る。
【００４８】
しかしながら、ＳＮＮアクセラレータ３００の構成によって解決される重要なニューロモルフィック処理問題は、ネットワークサイズとプログラム可能性とのバランスである。いくつかのＳＲＡＭベースのＳＮＮアクセラレータでは、中程度のニューラル・ネットワーク・サイズを達成するためでさえも、ニューロン間で作成され得る接続と作成できない接続（すなわち、シナプスのプログラム可能性）に対して制約が加わる。これらの制約は、ニューロン間のシナプス共有、制限された接続性行列、または制限的な圧縮要求という形を取り得る。言い換えると、各ニューロンは、各ニューロンを任意のターゲット・ニューロン・セットに接続する一意のシナプスセットを有することを妨げられる。外部メモリバンクの容量の増加により、ずっと大きなＳＮＮへの拡張の柔軟性が可能になり、各シナプスが一意の＜ターゲット，重み＞対によって定義される。しかしながら、ＳＲＡＭベースのＳＮＮアクセラレータでシナプスおよびニューロン状態を管理するために使用されるのと同じ技法は、ＳＮＮアクセラレータ３００内で使用され、ＳＮＮアクセラレータ３００が外部メモリ３６０で提供するすでに非常に大きい有効容量をさらに増加させ得る。
【００４９】
外部メモリ３６０において、各ニューロンはそのシナプスを指定する＜ターゲット，重み＞対のリストを有する。このリストはメモリにおいて時間ステップ（「遅延スロット」とも呼ばれる）によってさらに編成され、そのシナプス後ニューロンに同時に「到達」することになるすべてのシナプスは互いに隣り合ってメモリに格納される。例えば、シナプスデータは、隣接したもしくは連続したメモリブロックに、または書き込みもしくは読み出しが少ない動作回数もしくは時間量で行われることを可能にするメモリ内の位置に格納され得る。一例では、ニューラルネットワークの各所与の時間ステップの間に、その時間ステップの間に到達することになるシナプス前ニューロンのすべてのシナプスが外部メモリ３６０からフェッチされ、一方、他の時間ステップに関連するシナプスはどれも外部メモリ３６０からフェッチされない。
【００５０】
＜ターゲット，重み＞タプルは、ニューロン間の接続をアドレス指定する直接的な方法を提供する。ＳＮＮマルチタスキングを可能にするために複数のＳＮＮがニューロモルフィックアーキテクチャ３１０によってホストされる場合、異なるＳＮＮを区別する機構が必要である。一例では、「ターゲット」フィールドにグローバル・ニューロン・アドレスを指定し得る。しかしながら、この手法では、様々なＳＮＮが基礎となるハードウェアや他のＳＮＮを考慮して設計される必要がある。この問題に対する解決策がネットワークアドレス変換であり、ネットワーク内ニューロンアドレスとグローバル（例えば物理）ニューロンアドレスとの間で変換を行って、個々のＳＮＮがローカルアドレスを使用してそれ自体のニューロンを簡単にアドレス指定することを可能にする一方で、ニューロモルフィックハードウェアは、引き続きグローバル・ニューロン・アドレスを使用して基礎となる処理タスクを実施し得る。追加の例については図４Ｂおよび図６Ａ〜図８Ａに関連して後述する。
【００５１】
ＳＮＮアクセラレータ・チップ・アーキテクチャ３１０の動作の一例として、シナプス前ニューロンがスパイクを発生する瞬間を考える。上述したように、ニューロンがスパイクを発生するのは、その電位が所定の（プログラマブルな）閾値を上回って上昇したと、そのニューロンが維持されているニューロンプロセッサ３５０によって判断されたからである。ニューロンがスパイクを発生すると、ニューロンは、そのシナプスデータが維持されているメモリのチャネルに接続された軸索プロセッサ３４０（例えば、軸索プロセッサ３４０のセットに含まれる特定の軸索プロセッサ３４０Ａ）に（シナプス前ニューロンのＩＤを含む）スパイクメッセージを送信する。この特定の軸索プロセッサ３４０Ａは、スパイキングニューロンＩＤをスパイキングニューロンのリストに追加し、次の時間ステップの間にその最初の遅延スロットシナプスの処理を開始する。
【００５２】
次の時間ステップが始まると、特定の軸索プロセッサ３４０Ａはシナプス前ニューロンの現在の遅延スロットに関連するシナプスを（例えばメモリコントローラ３３０Ａを介して外部メモリ３６０Ａから）フェッチするが、軸索プロセッサ３４０Ａは他の遅延スロットのシナプスをまだフェッチしない。シナプス前ニューロンＩＤは、そのすべての遅延スロットがフェッチされ、処理されるまで、さらに数時間ステップにわたって軸索プロセッサのスパイキングニューロンのリストに留まる。時間ステップあたりのシナプスリストがフェッチされているときに、軸索プロセッサ３４０Ａは、スパイクメッセージを作成するために＜ターゲット，重み＞対のリストを読み出し、スパイクメッセージは指定された重みと共にシナプス後ニューロンに送出され、よって、受信側のシナプス後ニューロンのシナプス荷重を事前に適用する。そのような各スパイクメッセージは、軸索プロセッサ３４０Ａを出てニューロンプロセッサ３５０に戻り、そこで特定のシナプス後ニューロンを担当する特定のニューロンプロセッサ３５０を見つける。
【００５３】
スパイクメッセージが配信されると、特定のニューロンプロセッサ３５０はシナプス後ニューロンの状態をローカルのＳＲＡＭ（図示せず）からフェッチする。このニューロンプロセッサは次いで、スパイクメッセージの重みに従ってターゲットニューロンの電位を修正し、次いでニューロン状態をそのローカルＳＲＡＭに書き戻す。各時間ステップの終わりに、すべてのニューロンプロセッサ３５０内のすべてのニューロンをスキャンして、それらがその時間ステップの間にスパイクを発生したかどうかを確認しなければならない。ニューロンがスパイクを発生した場合、ニューロンはスパイクメッセージを適切な軸索プロセッサ３４０に送信し、プロセス全体が再び始まる。ニューロンがこの時間ステップの間にスパイクを発生しない場合には、ある「漏洩」関数に従ってその電位がわずかに低減される。ニューラルネットワークの動作に対する他の変形形態は、そのようなネットワークの特定の設計および構成に基づいて行われ得る。
【００５４】
一例では、ＳＮＮアクセラレータ３００のニューロモルフィックハードウェア構成が、複数のニューロモルフィックコアとそれぞれのコアを接続するネットワークとを含むアクセラレータ・ハードウェア・チップを介して実装（例えば実現）され得る。以下の構成で論じるように、それぞれのニューロモルフィックコアは、ニューロンプロセッサ３５０の動作を行う「ニューロン・プロセッサ・クラスタ」（以下、ＮＰＣ）、または軸索プロセッサ３４０の動作を行う「軸索プロセッサ」（ＡＰ）を構成し得る。よって、ネットワーク全体に分散された単一コアタイプが、ニューロンと軸索両方の処理能力を含む従来のニューロモルフィックハードウェア設計とは対照的に、本設計は、ニューロン機能と軸索機能とに分離された、ネットワーク全体に分散された２つのコアタイプを含む。
【００５５】
図４Ａに、本ニューロモルフィックハードウェア構成（例えば、図３で論じたアーキテクチャ３１０）で使用するためのニューロン・プロセッサ・クラスタ（ＮＰＣ）の例示的な構成を示す。図示のように、ＮＰＣ４１０は、３つの主要構成要素、すなわち１つまたは複数のニューロンプロセッサ４２０（ＮＰ）と、ＳＲＡＭベースのニューロン状態メモリ４３０（Ｎｅｕｒｏｎ  Ｓｔａｔｅ  Ｍｅｍｏｒｙ（ＮＳＭ））と、オンチップネットワークへの接続（ネットワークインターフェース（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ（ＮＩ））４４４およびスパイクバッファ（Ｓｐｉｋｅ  Ｂｕｆｆｅｒ（ＳＢ）４４２）とで構成される。一例では、すべてのニューロンの処理が時分割多重方式で行われ、ＮＰ４２０がＮＳＭ４３０からニューロン状態をフェッチし、ニューロン状態を修正し、次いで別のニューロンに作用する前にニューロン状態を書き戻す。ＮＳＭ４３０は、複数のＮＰ４２０によって並列にアクセスされることを容易にするためにマルチバンク化され得る。
【００５６】
スパイクメッセージがＮＰＣ４１０に到達すると、スパイクメッセージは、メッセージが処理され得るまでＳＢ４４２でバッファされる。アドレス生成ユニット（ＡＧＵ）は、その状態が次いでフェッチされるＮＳＭ４３０内のシナプス後ニューロンのアドレスを決定し、次いでニューロン処理ユニット（ＮＰＵ）は、ニューロン状態をＮＳＭ４３０に書き戻す前にスパイクの重みの値をシナプス後ニューロンの電位に加算する。現在の時間ステップの終わりに、すべてのＮＰＣ内のすべてのニューロンがＮＰＵによってスキャンされて、それらの電位がスパイキング閾値を上回ったかどうかが確認される。ニューロンがスパイクを発生した場合、スパイクメッセージが生成され、ＮＩ４４４を介して適切な軸索プロセッサに送信される。
【００５７】
一例では、ＮＰＵは、加算、減算、シフト、および比較の各演算を低精度（例えば１６ビット）でサポートしさえすればよい簡略化された算術論理演算装置（ＡＬＵ）である。ＮＰＵはまた、漏洩‐積分‐発火（ｌｅａｋｙ‐ｉｎｔｅｇｒａｔｅ‐ｆｉｒｅ）ニューロンモデルのための膜電位漏洩を行う役割を担う。時分割多重化により、物理ＮＰＵの数はニューロンの総数よりも少なくなる。最後に、制御ユニット（ＣＵ）が、ＮＰＣ内の全体的な動作を調整し、これは単純な有限状態機械またはマイクロコントローラとして実装され得る。
【００５８】
図４Ｂに、本ニューロモルフィックハードウェア構成（例えば、図３で論じたアーキテクチャ３１０）で使用するための軸索プロセッサ（ＡＰ）４５０の例示的な構成を示す。シナプス状態は外部高帯域幅メモリに格納され、様々な軸索プロセッサ（ＡＰ）を介してアクセスされるので、軸索プロセッサ（ＡＰ）４５０はシナプスデータを格納し、シナプスデータにアクセスするためのメモリパイプラインを含む。例えば、図４Ｂに示すように、ＡＰ４５０は、メモリコントローラ（ＭＣ）４６０を介してＤＲＡＭ４７０に接続される。
【００５９】
ＮＰＣ４１０と同様に、ＡＰ４５０は、ＮＩおよびＳＢを用いて、ネットワークオンチップとの間でスパイクメッセージを送受信する。シナプス後ニューロンに送信すべきスパイクメッセージを生成するために、ＡＧＵはまずシナプス前ニューロンのシナプスリスト（「シナプスリスト」）に対応するアドレスを生成する。シナプスリストは、シナプスの長さ、接続性、タイプなどに関する情報を含むヘッダを含み得る。シナプスリスト復号器（Ｓｙｎａｐｓｅ  Ｌｉｓｔ  Ｄｅｃｏｄｅｒ（ＳＬＤ））は、シナプスリストを解析し、そのようなヘッダ、ターゲットニューロンＩＤ、シナプス荷重などを識別する役割を担う。ＳＬＤはＡＧＵと連携してシナプスリスト全体をフェッチする。シナプスリストのサイズはシナプス前ニューロン間で異なり得る。
【００６０】
一例では、シナプスリストは、遅延スロット順として編成されているので、ＡＰ４５０は、シナプス・リスト・キャッシュ（Ｓｙｎａｐｓｅ  Ｌｉｓｔ  Ｃａｃｈｅ（ＳＬＣ））で一時的にバッファされている現在の遅延スロットについてのシナプスのリストのみをフェッチすることになる。ＡＰ４５０は現在の遅延スロットのスパイクメッセージをネットワークに送出する。ＳＮＮサイズが十分に小さく、ＳＬＣが十分に大きい場合、次の遅延スロット内のシナプスはプリフェッチされＳＬＣ内に保持され得る。外部メモリ（ＤＲＡＭ４７０）からのシナプスリスト読み出しは、非常に良好な空間的局所性を有し、高帯域幅をもたらす。
【００６１】
ＳＮＮマルチタスキングを実現するために、ＡＰ４５０のＡＧＵはネットワークアドレス変換ユニット（ＮＡＴＵ）４６５を含み得る。ＮＡＴＵ４６５は、単一のＳＮＮ内で使用されるローカルニューロン識別子（ＬＮＩＤ）と、ニューロンに対応するＮＰＵを見つけるためにＮＰＣ４１０によって使用される物理ニューロン識別子（ＰＮＩＤ）との間のアドレス変換を提供する電子ハードウェア（例えば、処理回路や図１０に関連して後述する回路セット）である。ニューラル・ネットワーク・マルチタスキングを実現するために、ＮＡＴＵ４６５は、例えば第１のインターフェース（例えば、有線、バス、相互接続など）を介してスパイクメッセージを受信するように構成される。スパイクメッセージは、ＮＰＣ４１０からＡＰ４５０を介してＮＡＴＵに到達し得る。この場合、スパイクメッセージは、スパイクを生じさせたニューロンのＰＮＩＤを含む。
【００６２】
ＮＡＴＵ４６５は、ＰＮＩＤをネットワーク識別子（ＮＩＤ）とＬＮＩＤとに変換するように構成される。ＮＩＤは、ＮＰＣ４１０によって同時に実装されたいくつかのニューラルネットワークのうちのどれにスパイクメッセージが発信されたかを識別する。ＬＮＩＤは、スパイクメッセージを生成するニューロンのネットワーク内識別子である。よって、ＬＮＩＤは、２つの異なるニューラルネットワークが同じＬＮＩＤのニューロンを有し得るように、ネットワーク内で使用され得る。しかしながら、これらの各ニューロンのＮＩＤとＬＮＩＤとの組み合わせは、ＮＩＤが異なるため異なることになる。この構成により、様々なネットワークがニューロンアドレスの衝突を懸念することなくニューロンメンバをアドレス指定することが可能になる。
【００６３】
ＮＡＴＵ４６５は、ＰＮＩＤをＰＮＩＤ範囲のセットと比較することによってＰＮＩＤをＮＩＤとＬＮＩＤとに変換するように構成される。この場合、各ＰＮＩＤ範囲は一意のＮＩＤに対応する。この場合、ＮＡＴＵ４６５は、所与のＮＩＤのＰＮＩＤ開始値および停止値を保持するテーブルまたはレジスタセットを含むか、またはそれらにアクセスし得る。図７にまさにそのようなＮＡＴＵテーブルを示す。よって、ＮＡＴＵ４６５は、ＰＮＩＤが与えられると、適切なＮＩＤを見つけるためにＮＩＤごとにＰＮＩＤ＿ｂｅｇｉｎ値およびＰＮＩＤ＿ｅｎｄ値を比較し得る。一例では、ＬＮＩＤは、所与のＮＩＤについてのＰＮＩＤ範囲内のオフセットであり得る。よって、例えば、１０５がＮＡＴＵ４６５によって評価されているＰＮＩＤアドレスであり、１００のＰＮＩＤ＿ｂｅｇｉｎおよび１１５のＰＮＩＤ＿ｅｎｄを有するＮＩＤ  Ｂの範囲に入る場合には、１０５のＬＮＩＤは５であり、１００〜１１５の範囲内の５番目のＰＮＩＤである。よって、ＰＮＩＤからＬＮＩＤへの変換は、ＰＮＩＤから、対応するＰＮＩＤ範囲のＰＮＩＤ＿ｂｅｇｉｎ値を減算することを含み得る。同様に、ＬＮＩＤおよびＮＩＤが与えられると、ＮＩＤに対応するＰＮＩＤ＿ｂｅｇｉｎ値がＬＮＩＤに加算されてＰＮＩＤに到達し得る。
【００６４】
一例では、ＰＮＩＤをＮＩＤとＬＮＩＤとに変換するために、ＮＡＴＵ４６５は、ＰＮＩＤの一端からＮＩＤ長に対応するいくつかのビットを除去するように構成される。この例では、ＰＮＩＤは、ＮＩＤとＬＮＩＤとの連結であり、よって例えば、ＰＮＩＤは、ＮＩＤビットとそれに続くＬＮＩＤビット、またはＬＮＩＤビットとそれに続くＮＩＤビットである。この構成は直接的であり、効率的なハードウェア実装に適しているが、ＮＩＤに予約されているビット数は、ＮＩＤのサイズに基づくホストされ得る異なるネットワーク数と、ＬＮＩＤのサイズに基づく各ネットワークが有し得るニューロンの数との設計選択肢を伴うので、やや柔軟性を欠く場合がある。
【００６５】
ＮＡＴＵ４６５は、ＮＩＤに基づいてスパイクメッセージに関連するシナプスデータを見つけるように構成される。一例では、シナプスデータはメモリアドレス範囲を含む。この場合、ＮＩＤに対応するニューラルネットワーク全体のシナプスデータは、ＤＲＡＭ４７０内で隣接しているやはり、この一例も図７に示されており、ＮＩＤのＮＡＴＵテーブルエントリは、そのＮＩＤのシナプスデータを含むメモリの開始アドレスおよび終了アドレスを含む。ＮＩＤに対応するニューラルネットワーク全体のシナプスデータが見つかると、ＮＡＴＵ４６５はそのシナプスデータを、例えばアドレスを提供することによってＡＰ４５０に伝達するように構成される。ＡＰ４５０は次いで、ＭＣ４６０を用いてシナプスデータを取り出すか、またはＡＧＵを用いてシナプスデータのどのサブセットがスパイクメッセージに関連するかを判断し、次いでＭＣ４６０を使用してメモリ４７０からそのサブセットを取り出し得る。
【００６６】
ＮＡＴＵ４６５は、シナプスデータから見つかったシナプス構造に基づいて、第２のスパイクメッセージがＬＮＩＤにアドレス指定されていると判断するように構成される。これは、結果が、上述した、ＮＰＣ４１０（または他の処理回路）からＡＰ４５０への出力ではなく、ＮＰＣ４１０に到達することになるスパイクメッセージの入力パスである。この場合、ＮＡＴＵ４６５は、シナプスデータに対応するＮＩＤを使用してＬＮＩＤをＰＮＩＤに変換するように構成される。ＬＮＩＤと既知のＮＩＤからＰＮＩＤを作成するこの逆のプロセスは、ＮＰＣ４１０が修正なしに動作し、しかもニューラル・ネットワーク・マルチタスキングをサポートすることを可能にする。一例では、ＬＮＩＤをＰＮＩＤに変換するために、ＮＡＴＵ４６５は、ＮＩＤをＬＮＩＤの一端（例えば、先頭または末尾）に連結するように構成される。一例では、ＮＡＴＵ４６５は、送信先ニューロンを識別するためにＰＮＩＤを使用してＡＰ４５０に第２のスパイクメッセージを伝達するように構成される。この通信は、ＮＡＴＵの第２のインターフェースを介して行われ得る。一例では、ＮＡＴＵの第１のインターフェースと第２のインターフェースとは同じインターフェースである。
【００６７】
スパイクを処理する過程で、ＡＰ４５０は、いくつかのＮＰＣによって消費されることになるいくつかのスパイクメッセージをネットワークにディスパッチし得る。したがって、各ＡＰ４５０は、ＮＰＣ４１０とＡＰ４５０との間の任意の帯域幅の不均衡を考慮するために、ネットワークへの複数のドロップオフポイント（すなわち、複数のＮＩおよびＳＢ）を有し得る。
【００６８】
加えて、ＡＰ４５０は、シナプスデータへの更新を提供する役割を担うシナプス可塑性ユニット（Ｓｙｎａｐｔｉｃ  Ｐｌａｓｔｉｃｉｔｙ  Ｕｎｉｔ（ＳＰＵ））も含み得る。これらの更新は、シナプス接続の増分、減分、プルーニング、および作成を含み得る。ＳＰＵは、スパイクタイミング依存可塑性（ＳＴＤＰ）、短期／長期の抑圧／増強などを含む様々な学習規則を実装し得る。ＳＰＵ更新はまた、追加の読み出し‐修正‐書き込みをなくすために、メモリからフェッチされたシナプスデータに対して、それを書き戻す前に行われ得る。
【００６９】
上記のように、ニューラル・ネットワーク・マルチタスキングの１つの使用事例は、ニューラル・ネットワーク・クローニングを含む。クローニングは、ニューロモルフィックハードウェアにおいて第１のニューラルネットワークの一部分を第２のニューラルネットワークに複製すること、次いでニューロモルフィックハードウェア上で両方のネットワークを動作させることを含む。クローニングの一例は、（例えば、ＮＳＭ４３０からの）ニューラル状態または（例えば、メモリ４７０からの）シナプス状態を新しい位置にコピーし、新しいＮＩＤを、その新しいＮＩＤを指し示す（例えば、図７に示すような）ＮＡＴＵ情報と共にこれらの異なるニューラル状態およびシナプス状態の範囲に割り当てることを含み得る。
【００７０】
しかしながら、クローニングの一例は、別個のニューラル状態間でシナプス状態を共有する異なるニューラルネットワークを含み得る。よって、２つのネットワークのニューロン状態は別々であるが、シナプスは共有される。これは、１つのネットワークのニューラル状態をＮＳＭ４３０の別の部分にコピーするが、ＮＡＴＵ情報内のシナプスポインタの同一のエントリを有することによって達成され得る。この一例が図８Ａに示されている。このニューラル・ネットワーク・クローニングの例を実現するために、ＮＡＴＵ４６５は、ＮＩＤを含むニューラル・ネットワーク・クローン指示を受信するように構成される。ＮＡＴＵ４６５は次いで、ＮＩＤに対応する第１のニューロンメモリと等価の第２のニューロンメモリを、ニューロンメモリを含むメモリの第２の領域に確立するように構成される。この等価性は、大きさだけのものでも、内容においてでもよい。よって、一例では、第２のニューロンメモリを確立するために、ＮＡＴＵ４６５は、第１のニューロンメモリを第２のニューロンメモリ位置にコピーするように構成される。しかしながら、ニューロンメモリの局面はクローニングの間に変化し得る。よって、一例では、第２のニューロンメモリを確立するために、ＮＡＴＵ４６５は、第１のニューロンメモリからコピーされたニューロンのニューラル状態をランダム化するように構成される。よって、同じニューロンがコピーに存在するが、これらのニューロンの個々の状態値はランダム化され得る。
【００７１】
上記のように、ＮＡＴＵ４６５は、第２のＮＩＤを第２のニューロンメモリに割り当て、第２のＮＩＤについてのＮＡＴＵ情報を更新して、第２のＮＩＤとシナプスデータとの間の対応関係を作成するように構成される。これは、クローン化ニューロンの新しい（第２の）ＮＩＤと新しいＰＮＩＤ範囲とを有するＮＡＴＵテーブルエントリを作成することによって実現され得る。一例では、ＮＡＴＵ情報は、所与のＮＩＤのシナプスメモリの中に、ＮＩＤ固有のデータ構造をポインタと共に含む。この場合、ＮＩＤの第１のＮＩＤデータ構造と第２のＮＩＤの第２のＮＩＤデータ構造とは、同じシナプスメモリ空間を指し示すポインタを含む。よって、２つのＮＩＤに対する動作は同じシナプスに解決されることになる。
【００７２】
ニューラル・ネットワーク・クローニングは、等価のニューラルネットワークに追加の入力処理を可能にすることによってハードウェア効率を高め得る。スパイキング・ニューラル・ネットワークは、スパイクの頻度とパスを介して動作するので、追加のデータを処理するためにスパイクを単純にスピードアップすることは簡単なことではない。しかしながら、ネットワークをクローン化すると、追加のデータを、どちらのネットワークでもスパイキング挙動を変更せずに、同じ方法で同時に処理することが可能になる。スパイク挙動は一般的に疎である（例えば、まれに、所与のネットワークの異なる部分で起こる）ので、多くの場合ハードウェアには複数のクローン化ネットワークを動作させるための容量がある。さらに、シナプスデータが共有される場合には、シナプスメモリ空間の複製がなく、ニューロモルフィックハードウェア上で同時に動作するクローン化ネットワークの数に関係なく、クローン化ネットワークの各々がロバストなシナプス接続性を有することが可能になる。
【００７３】
一例では、ＮＡＴＵ４６５は、第１のＮＩＤに対応する訓練イベントに基づいてシナプスデータ内のシナプス構造を更新するように構成される。よって、第１のＮＩＤネットワークは、ＳＴＤＰを行い、そのシナプスデータをしかるべく更新する。一例では、第２のＮＩＤに対応するニューラルネットワークが、ＮＩＤに対応するニューラルネットワークと同時に呼び出され得る（例えば、開始される、動作するなど）。この場合、第２のＮＩＤに対応するニューラルネットワークとＮＩＤに対応するニューラルネットワークの両方がシナプス構造を使用する。したがって、シナプスデータを共有するクローン化ネットワークでは、１つのクローン化ネットワークへの訓練強化が、その他のクローン化ネットワークへ即時に利用可能になる。さらに、訓練自体が、所与の期間でより多くの訓練データを処理すること、または異なるクローン化ネットワークに訓練データの異なる局面を提供することによってスピードアップされ得る。
【００７４】
一例では、ＮＡＴＵ４６５は、（図示のように）ＡＰ４５０と共にパッケージ化される。しかしながら、ＮＡＴＵ４６５は、ＡＰ４５０の外部に、例えば、ＭＣ４６０内や、ＡＰ４５０とＮＰＣ４１０との間に配置され得る。一例では、ＡＰ４５０は、相互接続を介して接続されたＮＰＣ４１０を含むシステムの一部である。一例では、システムは、システムの構成要素に電力を供給する電源を備える。一例では、電源は、商用電源またはバッテリを介して電力を供給するインターフェースを備える。
【００７５】
図５に、ニューロモルフィックハードウェア構成アーキテクチャ（例えば、図３で論じたアーキテクチャ３１０）のシステムレベルの説明図となる５００をさらに示す。図示のように、このアーキテクチャは、ＡＰ４５０のインスタンス（例えば、ＡＰ４５０Ａ、ＡＰ４５０Ｂ、ＡＰ４５０Ｃ、ＡＰ４５０Ｄ）およびＮＰＣ４１０（例えば、ＮＰＣ４１０Ａ、ＮＰＣ４１０Ｂ、ＮＰＣ４１０Ｃ、ＮＰＣ４１０Ｄ）のインスタンスを含み、一般的には、図４Ａおよび図４Ｂに示されているそのようなＡＰおよびＮＰＣのインスタンスに対応している。特に、アーキテクチャの図を示す５００は、ネットワーク５１０を介したＮＰＣとＡＰとの相互接続を示している。
【００７６】
明確にするために、上述したマルチタスキングのためのニューロモルフィックアーキテクチャをここで繰り返し説明する。ニューロンプロセッサ（Ｎｅｕｒｏｎ  Ｐｒｏｃｅｓｓｏｒ（ＮＰ））はいくつかのニューロンをモデル化し、入力スパイク重みメッセージを統合して、ニューロン膜電位値を変化させる。ニューロンの電位が閾値を超えると、スパイク・イベント・メッセージを生成し、このメッセージは適切な（例えば、所定の、最も近い、利用可能ななどの）軸索プロセッサ（ＡＰ）に送信される。スパイク・イベント・メッセージのニューロン識別子（ＩＤ）に従って、ＡＰはそのメモリコントローラ（ＭＣ）を介して外部メモリ（Ｅｘｔｅｒｎａｌ  Ｍｅｍｏｒｙ（ＥＭ））から対応するシナプスリストをフェッチする。ＡＰは次いで、シナプスリスト内のすべてのターゲットニューロンのＮＰにスパイク重みメッセージを送信し、このメッセージにより、それらのニューロンの電位が変化し、サイクルが継続する。
【００７７】
ニューロモルフィックハードウェア上で動作する単一のＳＮＮ（仮想化もマルチタスキングもなし）の文脈では、ＮＰから動作するニューロンのただ１つのセットと、ＥＭに格納されるシナプスリストの１つのセットがある。ニューロンがスパイクを発生すると、スパイク・イベント・メッセージの一部としてＡＰに送信されるそのニューロンＩＤ（Ｎｓ）は、どのシナプスリストがＥＭからフェッチされ、処理されるべきかに関して完全に明確である。さらに、シナプスがスパイク重みメッセージ（Ｎｔ）のターゲットを識別するときに、ＮＰ内のどのニューロンにメッセージが送信されるべきかに関して曖昧さはない。
【００７８】
しかしながら、ニューロモルフィックハードウェアによって処理されている複数のＳＮＮがあるときには、ＮｓとＮｔの両方に曖昧さがある。ＡＰがスパイク・イベント・メッセージを受信すると、ＡＰは、正しいシナプスリストをフェッチするためにどのＮｓがスパイクを発生したかを区別しなければならない。さらに、ＡＰがシナプスリストを処理しているときに、ＡＰは、どのＮｔがスパイク重みメッセージを送信すべきかを区別しなければならない。この問題に対処するために、ＮｓおよびＮｔがＬＮＩＤとして再計算され、ＡＰは（例えばＮＡＴＵを介して）ＬＮＩＤアドレスとＰＮＩＤアドレスとの間で変換を行って、ニューロモルフィックハードウェア上で同時に動作している個々のＳＮＮを分離する。
【００７９】
これらの変換および分離の構成要素が配置されると、処理要素（例えば、ＮＰやＡＰ）は、スケジューリングアルゴリズム（例えば、先着順）に従って、それらが受信するどんな作業項目でも自由に処理することができる。従来の中央処理装置（ｃｅｎｔｒａｌ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ（ＣＰＵ））では、同時マルチスレッド化（ｓｉｍｕｌｔａｎｅｏｕｓ  ｍｕｌｔｉｔｈｒｅａｄｉｎｇ（ＳＭＴ））は、ＣＰＵリソース利用率を高めるために、命令実行をインターリーブすることによって動作し、これは前述した作業項目に類似し得る。このＳＮＮアクセラレータの文脈では、インターリーブされた作業項目の粒度は、システム内の処理要素のタイプ（例えば、ＮＰかＡＰか）に基づいて異なり得る。
【００８０】
一例では、ＮＰについて、作業項目は、スパイク重みメッセージを受信したときに個々のニューロンの膜電位を更新することであってもよく、または作業項目は、新しいスパイクを探し、ＳＮＮ内のそのニューロンの膜電位のすべてを漏洩することによって次の時間ステップに進む動作全体であってもよい。一例では、ＡＰについて、作業項目は、メモリからシナプスリストをフェッチし、それを処理し、すべてのスパイク重みメッセージをターゲットＮＰに送信する全プロセスであってもよく、または作業項目は、個々のスパイク重みメッセージを送出することであってもよい。これらの作業項目は各々、かなりの期間に及び得るが、単一のＳＮＮからのこれらの作業項目間に、または所与の作業項目内に長いアイドル期間が生じる場合もある（例えば、メモリからシナプスリストをフェッチするのを待つことによりＡＰまたはＮＰがアイドル状態のままになり得る）。したがって、ＮＰまたはＡＰのアイドル状態を低減し、よってリソース利用率を高めるために、作業項目を複数のＳＮＮから発生し得るようにすることは重要である。
【００８１】
図６Ａおよび図６Ｂに、一実施形態による、ニューロモルフィック・アクセラレータ・マルチタスキングの一態様を実装するＮＡＴＵ６０５を示す。図６Ａに、ＮＰからＡＰへの変換フロー（例えば、出力スパイクメッセージ）を示し、図６Ｂに、ＡＰからＮＰへの変換フロー（例えば、入力スパイクメッセージ）を示す。出力スパイク・メッセージ・フローでは、ＮＡＴＵ６０５はＰＮＩＤを受信し、ＰＮＩＤからＬＮＩＤ、ＮＩＤ、およびシナプスデータを計算するように構成される。図示のように、ＮＡＴＵ６０５は、ＰＮＩＤをテーブル内の各ＮＩＤに割り当てられたＰＮＩＤ範囲と比較することによってＮＩＤを確認し得る。このテーブルは、ＮＩＤのためのシナプス空間も含み得る。ＬＮＩＤは、ＮＩＤに対応するＰＮＩＤ＿ｂｅｇｉｎ値を（例えば、符号付きデータに作用する減算器６１０または加算器を介して）減算することによって計算され得る。よって、この場合、ＬＮＩＤは、ＮＩＤによって識別される対応するニューラルネットワークのＰＮＩＤ範囲へのＰＮＩＤのオフセットである。
【００８２】
シナプスデータおよびＬＮＩＤが計算されると、ＡＰは、（上述した）ニューロモルフィックハードウェア上にただ１つのＳＮＮがあるかのように動作し得る。入力フローでは、ＮＡＴＵ６０５は、ＮＩＤとＬＮＩＤからＰＮＩＤを計算する。例えば、ＮＡＴＵ６０５は、ＡＰからＮＩＤを受信し（またはＮＩＤに対応するシナプス・メモリ・アドレスに基づいてＮＩＤを計算し）、ＮＡＴＵ情報からＮＩＤに対応するＰＮＩＤ＿ｂｅｇｉｎアドレスを取り出し得る。ＰＮＩＤ＿ｂｅｇｉｎアドレスは次いで、ＰＮＩＤを生成するために加算器６１５を介してＬＮＩＤに加算され得る。ＰＮＩＤは次いで、ＡＰによってターゲットニューロンのスパイクメッセージをアドレス指定するために使用され得る。ＮＰは次いで、ＰＮＩＤがいくつかのうちどのＳＮＮに属するかに関係なくＰＮＩＤに作用し得る。
【００８３】
よって、新しいニューラルネットワークが作成され、そのニューロンおよびシナプスメモリ空間が割り振られると、割り振られた物理ニューロン空間の始めと終わりを指し示すニューロンメモリ空間のポインタ（例えばアドレス）が、（例えば、メモリ管理ユニット（ｍｅｍｏｒｙ  ｍａｎａｇｅｍｅｎｔ  ｕｎｉｔ（ＭＭＵ））やＡＰの他の構成要素によって）、ＮＡＴＵにおいて記録される。割り振られたシナプスメモリ空間の始めと終わりを指し示すポインタについても同じことが行われ得る。ＮＡＴＵはまた、新しいネットワークのＮＩＤも格納し得る。この情報は、１つの構造（例えば単一のテーブル）にあっても複数の構造（例えばレジスタファイル）にあってもよく、スパイキングニューロンのＰＮＩＤをシナプス・リスト・アドレスに変換し、次いでシナプスリストからのターゲットＬＮＩＤをターゲットＰＮＩＤに逆変換するのに十分である。一例では、ＮＡＴＵ６０５は、シナプスメモリにアクセスするときにＬＮＩＤとＰＮＩＤとの間で変換を行うためにＡＰ内に位置する。一例では、ＮＡＴＵ６０５は、変換を行うためにＮＰ内に位置する。しかしながら、ＡＰは一般的にはＮＰよりも少数であるので、ＮＡＴＵ６０５のＡＰコロケーションにより、システム内のＮＡＴＵがより少なくなり得る。
【００８４】
スパイク・イベント・メッセージがＡＰに到達するときに、メッセージの一部はスパイキングニューロンのＰＮＩＤである。ＡＰは、ＮＡＴＵ６０５をチェックして、このＰＮＩＤがどのネットワークに属しているか、したがってそのシナプスリストがシナプスメモリ空間のどこにあるかを決定する。この目的で、スパイクのＰＮＩＤがネットワークエントリの始めと終わりのＰＮＩＤ内にあるＮＡＴＵエントリを見つけるために範囲比較が行われ得る。一致が見つかると、シナプス空間の開始ポインタと終了ポインタとに基づいて対応するシナプス空間が決定される。この空間内では、シナプスリストは、これが動作している唯一のネットワークであるかのように規則的にアクセスされ得る。
【００８５】
一例では、シナプスリストは、ＬＮＩＤを含み、ＰＮＩＤを含まない。したがって、スパイクメッセージがＡＰからＮＰＣに配信されるように作成されているときに、ＮＡＴＵはこれらのＬＮＩＤをＰＮＩＤに変換する。この変換は、ネットワークのＰＮＩＤ範囲の始めをターゲットニューロンのＬＮＩＤに加算するという単純な加算の形を取り得る。ＰＮＩＤのＬＮＩＤへの変換は、上述したように逆に動作する。
【００８６】
図７に、一実施形態による、ローカルネットワークから物理ネットワークへの変換のためのＮＡＴＵテーブルおよびシナプスメモリ空間配置を示す。ニューロンメモリ空間は、ＰＮＩＤ（例えば、グローバルニューロンＩＤ）によって表される。各ＰＮＩＤは、ニューロン・プロセッサ・クラスタＮＰＣに位置するＮＳＭ内の一意の物理位置に対応する。上述したように、ＰＮＩＤは、ＮＩＤとＬＮＩＤとに変換され、一意のＰＮＩＤに再度逆変換され得る。ＮＰＣはＰＮＩＤを直接作用し得るので、その設計が簡素化される。ＰＮＩＤ、ＬＮＩＤ、およびＮＩＤを使用すると、異なるネットワークからのニューロンが分離される。例えば、２つの異なるネットワークが同じＬＮＩＤを有するニューロンを有する場合があるが、それらのニューロンは別々の一意のＰＮＩＤにマップされる。
【００８７】
変換は、ニューロンメモリ空間内とシナプスメモリ空間７１０内の両方で、セグメント化を介して行われ得る。新しいネットワークが作成されると、ＭＭＵは、例えば、そのネットワークのすべてのニューロン（例えば、ニューロン状態データ）に、ニューロンメモリ空間内の隣接した領域を割り振る。シナプス側では、ＭＭＵは、シナプス記憶のために外部メモリ内の隣接した領域を割り振る。したがって、各ネットワークはそれぞれのシナプスリストのために別々の隣接したメモリ空間のチャンクを得る。この空間のサイズは、ネットワーク内のニューロンとシナプスの数によって決定される。
【００８８】
シナプスリスト内のニューロンターゲットは、ＬＮＩＤとして格納されている。よって、各ネットワークは、それ自体の内部の接続のみ（例えば、ネットワーク内接続のみ）を有し、グローバルニューロンＩＤ、すなわちＰＮＩＤについての知識（例えば、アドレス指定する能力）を全く有さない。ローカルＩＤ（ＬＮＩＤ）とグローバルＩＤ（ＰＮＩＤ）との間の変換は、変換テーブル７０５を用いてＮＡＴＵによって達成され得る。
【００８９】
変換テーブル７０５はレコードごとに５つのフィールドを含み、各レコードは１つのニューラルネットワークに対応する。テーブル７０５内の列として編成されたフィールドは、ＰＮＩＤおよびシナプスアドレス空間の各々の開始値および終了値、ならびにＮＩＤレコードを含む。ＰＮＩＤおよびシナプスメモリは範囲で指定されるので、これらのリソースの割り振りは隣接する。しかしながら、追加のデータフィールドを使用して、単一のＮＩＤレコードに割り振られた隣接した領域のリンクされたリストなど、より柔軟な割り振りの技法が提供されてもよい。隣接した割り振りでは、シナプスメモリ空間７１０は、図示のように、ネットワークシナプス空間がシナプスメモリ空間７１０内で互いに隣接するように配置される。
【００９０】
この変換の技法は、変換を介した同時マルチタスキングが、同時に発生するニューラルネットワーク間の分離を保証することを可能にする。例えば、各ＮＰＣおよびＡＰは、処理されるべき項目の作業待ち行列を実装し得る。ＡＰでは、作業待ち行列は、スパイクを発生した、後続の時間ステップで処理されるニューロンのＰＮＩＤを含む。ＮＰＣでは、作業待ち行列は、ターゲットニューロンに加算すべきＰＮＩＤと重みとを含む。一例では、変換および分離がＡＰによって処理されるので、ＮＰＣでは変換は不要である。ＡＰとＮＰＣの作業待ち行列には、先着順や何らかのＱｏＳベースまたはユーザ定義の方式など、任意の適切な作業待ち行列スケジューリングアルゴリズムが使用され得る。このようにして、特定のネットワークのスパイク処理（ＮＰＣ）、スパイク配信（ＡＰ）、またはシナプス・リスト・フェッチ（ＡＰ）に優先順位付けし得る。
【００９１】
ＳＮＮが現在の時間ステップのすべてのスパイクの処理を完了すると、次の時間ステップが開始する前に一部の動作が完了する。例えば、そのＳＮＮに属するニューロンは新しいスパイクがないかチェックされ（例えば、ＡＰに送信される新しいスパイク・イベント・メッセージを生成すること）、次いで、漏洩ニューロンをモデル化している場合、それらの膜電位の一部を漏洩させる。ＡＰは次いで、そのＳＮＮに属する次の時間ステップで処理される保留状態の処理中のスパイクを「覚醒」させ得る。どちらの場合にも、それらの時間ステップを同時に進めていない他のＳＮＮのニューロンおよび処理中のスパイクは妨げられない。
【００９２】
各ＮＰＣの内部では、進行中のＳＮＮ（例えば、ＮＩＤ  Ａに対応するネットワーク）に対応するＰＮＩＤの範囲内（例えば、境界を含むＰＮＩＤ＿ｂｅｇｉｎとＰＮＩＤ＿ｅｎｄとの間）のニューロンがフェッチされ、チェックされ、漏洩されて、新しいスパイク・イベント・メッセージがＡＰに送信される。ＮＰＣが進行中のＳＮＮについてこの操作を完了した後に、ＡＰは、そのＳＮＮの処理中のスパイクの処理を再開するよう通知され、時間ステップが進む。このようにして、ＮＡＴＵ情報７０５は、ニューロモルフィックハードウェアが、ＮＡＴＵを介して、以前には得られなかった方法でニューラルネットワークをマルチタスク化することを可能にする。
【００９３】
図８Ａ〜図８Ｃに、一実施形態による、ＮＡＴＵテーブル８１０、ニューロンメモリ空間８０５、シナプスメモリ空間８１５、ならびにニューラル・ネットワーク・クローニングのための方法８２０および８４０を示す。図示のデータ構造は、ニューラルネットワークがクローン化され、ニューロモルフィックハードウェア上で同時に動作するニューラル・ネットワーク・マルチタスキングの使用事例を提供するものである。
【００９４】
ＮＡＴＵテーブル８１０では、各ＳＮＮは、その一意のＮＩＤと共に、（ＰＮＩＤの開始エントリと終了エントリの形の）そのニューロン空間領域８０５の始めと終わりを指し示すポインタと、そのシナプス空間領域８１５の始めと終わりを指し示すポインタとを有する。ネットワークのニューロンは、ＮＰＣ内にあるＮＳＭ内の、ＮＰ内に格納される。ネットワークのクローンを作成するために、ＮＳＭ内のニューロンデータが複製され（方法８２０の動作８２５）、ＮＡＴＵ情報（例えば、ＮＡＴＵテーブル８１０）がＡＰ内のＮＡＴＵ内で更新される（方法８２０の動作８３０）。結果はクローン（例えば、クローン化ネットワーク、クローン化ＳＮＮ、クローン化ニューロン、ニューロンクローンなど）である。一例では、シナプスデータは複製されないが、ＮＩＤエントリＢとＮＩＤエントリＢ'との間に示されているように、シナプスポインタは同じである。
【００９５】
一例では、ＮＳＭ内、ＡＰ内、または他の場所にある専用ハードウェアが、ニューロン状態の複製を行い得る。一例では、このハードウェアは、ＮＩＤ  Ｂのニューロン状態がＮＩＤ  Ｂ'のニューロン状態を作成するためにコピーされるニューロン状態メモリ空間８０５に示すように、２つのポインタ間の範囲内のすべてのニューロン状態をＮＳＭ内の別の場所にコピーする（方法８２０の動作８２５）。一例では、コピーは、ＮＳＭのある領域からニューロン状態を読み出し、そのニューロン状態のコピーをＮＳＭの別の領域に書き込むためにアクセスできる汎用処理装置上の命令を介して実行され得る。一例では、ハードウェアは、「この範囲のアドレスをこの別の範囲のアドレスにコピーする」などの低水準のコマンドを介して動作してもよく、「ネットワークＢのクローンを作成する」などの高水準のコマンドを介して動作してもよい。一般的に、複製は、その状態が何であれ、ニューラルネットワークに対応するＮＳＭの現在の状態のスナップショットを取る。しかしながら、一例では、ニューラルネットワークがしばしば初期設定される方法と同様に、新しいコピーをよりニュートラルなランダム状態に「リセット」した方が有利であり得る。
【００９６】
ＡＰ側では、クローン化ネットワークを作成することは、ＮＡＴＵテーブル８１０内での新しいエントリの作成を含む（方法８２０の動作８３０）。新しいエントリのＰＮＩＤは、ニューロン状態メモリ空間８０５内の新しく複製されたニューロンの位置を指し示す。しかしながら、シナプス空間ポインタは、シナプスメモリ空間８１５内の元のネットワークと同じ位置を指し示す。これは、図８Ａに、ＮＩＤ  ＢとＮＩＤ  Ｂ'とのＮＡＴＵテーブル８１０内のシナプス空間ポインタからの実線矢印と破線矢印とを介して示されている。
【００９７】
新しく作成されたクローン化ネットワークは、そのニューロンが上述したＰＮＩＤマルチタスキングの技法を介して分離されているので、元のものとは別の完全に独立したネットワークである。クローン化ネットワークのすべてのニューロンは、膜電位を統合し、元のネットワークの活動とは無関係のスパイクを発生させ得る。ＮＡＴＵは、クローン化ネットワークによって生成されたスパイク重みメッセージが、やはりそのクローン化ネットワーク内にあるニューロンだけをターゲットにし得ることを保証する。よって、２つのネットワークは「空間的に並列」であり、これは、並列性およびスループットを高めるためにオンチップ記憶（例えば、追加のニューロン状態）が使用されることを意味する。
【００９８】
動作中に、元のネットワークまたはクローン化ネットワークのどちらかがスパイクを生成すると、ＡＰは、それらのスパイクを処理するために、ＮＡＴＵテーブル８１０に基づいてシナプスメモリ空間８１５から同じシナプスリストのセットをフェッチする。各ネットワークは（例えば、学習規則またはハードウェアを介して）同時にシナプスデータにアクセスするかまたはシナプスデータを更新し得る。一般的に、シナプスデータ競合条件は、ＳＮＮに固有のノイズおよび誤り耐性があるため、重要ではない。
【００９９】
クローン化ネットワークは、それが作成された目的のタスクを完了した後、ＮＳＭ（例えば、ニューロン状態メモリ空間８０５）内のそのニューロンの割り振りを解除し（方法８４０からの動作８４５）、ＮＡＴＵテーブル８１０内のそのエントリを削除する（方法８４０からの動作８５０）ことによって破壊され得る。シナプス状態は、クローン化ネットワークを作成または破棄することによって修正されない。
【０１００】
ネットワーククローニングおよびニューラル・ネットワーク・マルチタスキングは、様々な使用例において有用である。例えば、バッチ学習の概念はディープ・ニューラル・ネットワークで広く用いられる。この場合、複数の入力セット（例えば、訓練セット）がバッチとしてまとめられ、シナプス荷重の変化がバッチ内ごとに計算される。累積重み更新（例えば、変化）は次いで、一度に全部適用され得る。ネットワーククローニングは、空間的にバッチ学習を行い得る。よって、各クローン化ネットワークは、その変更を共有シナプスセットに適用しながら、異なる入力セットに同時に作用し得る。この手法の利点は、複数の入力の同時処理である。ハードウェア内のアイドル期間を低減させることによって推論および訓練も改善され得る。スパイキング・ニューラル・ネットワークでは、入力を処理した後にネットワークを「休止」するのが一般的な手法であり、これにより、訓練や推論の結果が生成されないアイドル期間が生じる。複数のクローン化ネットワークを使用することにより、同じシナプスセットへの複数のエントリポイントが使用可能になる。したがって、１つのニューロンクローンの「休止」期間は、全く同じシナプスを共有する別のクローン化ネットワークを使用する何らかの他の入力に関する訓練または推論とオーバーラップし得る。
【０１０１】
図９に、一実施形態による、ニューロモルフィック・ハードウェア・マルチタスキングのための方法９００の一例のフローチャートを示す。方法９００の動作は、図２〜図５に関連して上述した、または後述する電子ハードウェア（例えば、処理回路）などで実装される。
【０１０２】
動作９０５で、スパイクメッセージが受信される。この場合、スパイクメッセージは、スパイクを生じさせたニューロンの物理ニューロン識別子（ＰＮＩＤ）を含む。
【０１０３】
動作９１０で、ＰＮＩＤはネットワーク識別子（ＮＩＤ）とローカルニューロン識別子（ＬＮＩＤ）とに変換される。一例では、ＬＮＩＤは、ＰＮＩＤからＰＮＩＤ＿ｂｅｇｉｎ値を減算することによって計算される。この場合、ＰＮＩＤ範囲のセットのメンバは、ＮＩＤに対応する最小のＰＮＩＤと最大のＰＮＩＤとをそれぞれ保持するＰＮＩＤ＿ｂｅｇｉｎとＰＮＩＤ＿ｅｎｄとの対を含む。一例では、ＰＮＩＤをＮＩＤとＬＮＩＤとに変換することは、ＰＮＩＤの一端からＮＩＤ長に対応するいくつかのビットを除去することを含む。一例では、ＰＮＩＤをＮＩＤとＬＮＩＤとに変換することは、ＰＮＩＤをＰＮＩＤ範囲のセットと比較することを含む。この場合、各ＰＮＩＤ範囲は一意のＮＩＤに対応する。
【０１０４】
動作９１５で、シナプスデータがＮＩＤに基づいて見つけられる。一例では、シナプスデータはメモリアドレス範囲を含む。
【０１０５】
動作９２０で、シナプスデータおよびＬＮＩＤは軸索プロセッサに伝達される。
【０１０６】
一例では、方法９００の動作はＮＡＴＵによって行われる。一例では、ＮＡＴＵは軸索プロセッサと共にパッケージ化される。一例では、軸索プロセッサは、相互接続を介して軸索プロセッサに接続されたニューラル・プロセッサ・クラスタを含むシステムの一部である。一例では、システムは、システムの構成要素に電力を提供する電源を備える。一例では、電源は、商用電源またはバッテリを介して電力を供給するインターフェースを備える。
【０１０７】
方法９００の動作はまた、シナプスデータから見つかったシナプス構造に基づいて、第２のスパイクメッセージがＬＮＩＤにアドレス指定されていると判断する動作も含み得る。方法９００の動作は、シナプスデータに対応するＮＩＤを使用してＬＮＩＤをＰＮＩＤに変換する動作も含み得る。一例では、ＰＮＩＤは、ＰＮＩＤ＿ｂｅｇｉｎ値、すなわちＮＩＤのＰＮＩＤ範囲に対応する値、をＬＮＩＤに加算することによって計算される。一例では、ＬＮＩＤをＰＮＩＤに変換することは、ＮＩＤをＬＮＩＤの一端に連結することを含む。方法９００の動作は、ニューロンを識別するためにＰＮＩＤを使用して第２のスパイクメッセージを軸索プロセッサに伝達する動作も含み得る。
【０１０８】
方法９００の動作は、ＮＩＤを含むニューラル・ネットワーク・クローン指示を受信する動作と、ＮＩＤに対応する第１のニューロンメモリと等価の第２のニューロンメモリを、ニューロンメモリを含むメモリの第２の領域に確立する動作も含み得る。一例では、第２のニューロンメモリを確立することは、第１のニューロンメモリをコピーすることを含む。一例では、第２のニューロンメモリを確立することは、第１のニューロンメモリからコピーされたニューロンのニューラル状態をランダム化することを含む。
【０１０９】
方法９００の動作は、第２のＮＩＤを第２のニューロンメモリに割り当てる動作と、第２のＮＩＤについてのＮＡＴＵ情報を更新して、第２のＮＩＤとシナプスデータとの間の対応関係を作成する動作も含み得る。一例では、ＮＡＴＵ情報は、所与のＮＩＤのシナプスメモリの中に、ＮＩＤ固有のデータ構造をポインタと共に含む。この場合、ＮＩＤの第１のＮＩＤデータ構造と第２のＮＩＤの第２のＮＩＤデータ構造とは、同じシナプスメモリ空間を指し示すポインタを含む。
【０１１０】
方法９００の動作は、第１のＮＩＤに対応する訓練イベントに基づいてシナプスデータ内のシナプス構造を更新する動作も含み得る。一例では、第２のＮＩＤに対応するニューラルネットワークが、ＮＩＤに対応するニューラルネットワークと同時に呼び出され得る（例えば、開始される、動作するなど）。この場合、第２のＮＩＤに対応するニューラルネットワークとＮＩＤに対応するニューラルネットワークの両方がシナプス構造を使用する。
【０１１１】
図１０に、本明細書で論じられる技法（例えば方法）のうちのいずれか１つまたは複数が行われ得る例示的な機械１０００のブロック図を示す。本明細書で説明される例は、機械１０００内のロジックまたはいくつかの構成要素、または機構を含むか、またはそれらによって動作し得る。回路（例えば、処理回路）は、ハードウェア（例えば、単純な回路、ゲート、ロジックなど）を含む、機械１０００の有形のエンティティにおいて実装された回路の集合体である。回路構成要素は経時的に柔軟であり得る。回路は、単独で、または組み合わさって、動作時に指定の動作を行い得るメンバを含む。一例では、回路のハードウェアは、特定の動作を実行するように変更不能に設計され得る（例えば配線接続される）。一例では、回路のハードウェアは、特定の動作の命令を符号化するように物理的に修正された機械可読媒体（例えば、不変質量の粒子の磁気的、電気的に可動な配置など）を含む、可変的に接続された物理構成要素（例えば、実行ユニット、トランジスタ、単純な回路など）を含み得る。物理構成要素を接続する際に、ハードウェア構成要素の基礎となる電気的特性が、例えば絶縁体から導体に、またはその逆に変更される。命令は、組み込みハードウェア（例えば、実行ユニットやローディング機構）が、動作に際して特定の動作の部分を実行するために、可変接続を介してハードウェアの回路のメンバを作成することを可能にする。したがって、一例では、機械可読媒体要素は、回路の一部であるか、または装置が動作しているときに回路のその他の構成要素に通信可能に結合される。一例では、物理構成要素のうちのいずれかが、複数の回路の複数のメンバで使用され得る。例えば、動作中、実行ユニットは、ある時点で第１の回路構成の第１の回路で使用され、異なる時点で第１の回路構成の第２の回路によって、または第２の回路構成の第３の回路によって再利用され得る。以下で機械１０００に関連するこれらの構成要素の追加の例を示す。
【０１１２】
代替実施形態では、機械１０００は、独立型装置として動作してもよく、または他の機械に接続されてもよい（例えば、ネットワーク接続されてもよい）。ネットワーク接続された配置では、機械１０００は、サーバ‐クライアントネットワーク環境において、サーバマシン、クライアントマシン、またはその両方として動作し得る。一例では、機械１０００は、ピアツーピア（Ｐ２Ｐ）（または他の分散型）ネットワーク環境におけるピアマシンとして機能し得る。機械１０００は、パーソナルコンピュータ（ＰＣ）、タブレットＰＣ、セットトップボックス（ＳＴＢ）、携帯情報端末（ＰＤＡ）、携帯電話、ウェブアプライアンス、ネットワークルータ、スイッチもしくはブリッジ、またはその機械によって取られるべき措置を指定する命令（順次またはそれ以外）を実行できる任意の機械であり得る。さらに、単一の機械のみが示されているが、「機械」という用語は、クラウドコンピューティング、ＳａａＳ（Ｓｏｆｔｗａｒｅ  ａｓ  ａ  Ｓｅｒｖｉｃｅ）、その他のコンピュータクラスタ構成など、本明細書で論じられる方法のうちのいずれか１つまたは複数を行うために１つ（または複数）の命令セットを個々にまたは一緒に実行する任意の機械の集合を含むものとも理解される。
【０１１３】
機械（例えば、コンピュータシステム）１０００は、ハードウェアプロセッサ１００２（例えば、中央処理装置（ＣＰＵ）、グラフィックス処理装置（ＧＰＵ）、ハードウェア・プロセッサ・コア、ニューロモルフィックアクセラレータ、またはそれらの任意の組み合わせ）と、メインメモリ１００４と、スタティックメモリ１００６（例えば、ファームウェア、マイクロコード、基本入出力（ＢＩＯＳ）、ＵＥＦＩ（ｕｎｉｆｉｅｄ  ｅｘｔｅｎｓｉｂｌｅ  ｆｉｒｍｗａｒｅ  ｉｎｔｅｒｆａｃｅ）などのためのメモリまたは記憶）と、大容量記憶装置１００８（例えば、ハードドライブ、テープドライブ、フラッシュストレージ、または他のブロックデバイス）と、を含むことができ、そのうちの一部または全部が相互リンク（例えばバス）１０３０を介して互いに通信し得る。機械１０００は、表示ユニット１０１０と、英数字入力装置１０１２（例えばキーボード）と、ユーザインターフェース（ＵＩ）ナビゲーション装置１０１４（例えばマウス）とをさらに含み得る。一例では、表示ユニット１０１０、入力装置１０１２およびＵＩナビゲーション装置１０１４をタッチ・スクリーン・ディスプレイとすることができる。機械１０００は、記憶装置（例えば、駆動ユニット）１００８、信号生成装置１０１８（例えばスピーカ）、ネットワークインターフェース装置１０２０、および全地球測位システム（ＧＰＳ）センサや、コンパスや、加速度計や、他のセンサなどの１つまたは複数のセンサ１０１６をさらに含み得る。機械１０００は、１つまたは複数の周辺装置（例えば、プリンタ、カードリーダなど）と通信し、またはそれらを制御するために、シリアル（例えばユニバーサル・シリアル・バス（ＵＳＢ））、パラレル、または他の有線または無線（例えば赤外線（ＩＲ）、近距離無線通信（ＮＦＣ）など）接続などの出力コントローラ１０２８を含み得る。
【０１１４】
プロセッサ１００２のレジスタ、メインメモリ１００４、スタティックメモリ１００６、または大容量記憶装置１００８は、本明細書に記載される技法または機能のうちのいずれか１つまたは複数を実施するか、またはそれらに利用される１つまたは複数のデータ構造セットまたは命令セット１０２４（例えばソフトウェア）が格納される機械可読媒体１０２２であるか、それを含み得る。命令１０２４は、その機械１０００による実行時に、プロセッサ１００２のレジスタ、メインメモリ１００４、スタティックメモリ１００６、または大容量記憶装置１００８のいずれか内に、全部または少なくとも一部が存在し得る。一例では、ハードウェアプロセッサ１００２、メインメモリ１００４、スタティックメモリ１００６、または大容量記憶装置１００８のうち１つまたは任意の組み合わせが機械可読媒体１０２２を構成し得る。機械可読媒体１０２２は単一の媒体として示されているが、「機械可読媒体」という用語は、１つまたは複数の命令１０２４を格納するように構成された単一の媒体または複数の媒体（例えば、集中型または分散型データベースや関連付けられたキャッシュおよびサーバ）を含み得る。
【０１１５】
「機械可読媒体」という用語は、機械１０００が実行するための命令を格納、符号化、もしくは搬送することができ、本開示の技法のうちのいずれか１つもしくは複数を機械１０００に行わせるか、またはそのような命令が使用するか、もしくはそのような命令と関連付けられたデータ構造を格納、符号化、もしくは搬送することができる任意の媒体を含み得る。非限定的な機械可読媒体の例には、固体メモリ、光学媒体、磁気媒体、および信号（例えば、無線周波数信号、他の光子ベースの信号、音声信号など）が含まれ得る。一例では、非一時的機械可読媒体は、不変（例えば静止）質量を有する複数の粒子を有する機械可読媒体を含み、よって、物質の組成物である。したがって、非一時的機械可読媒体は、一時的伝播信号を含まない機械可読媒体である。非一時的機械可読媒体の具体例には、半導体メモリデバイス（例えば、電気的プログラム可能読取り専用メモリ（ＥＰＲＯＭ）、電気的消去可能プログラム可能読取り専用メモリ（ＥＥＰＲＯＭ））やフラッシュ・メモリ・デバイスなどの不揮発性メモリ、内蔵ハードディスクやリムーバブルディスクなどの磁気ディスク、光磁気ディスク、ＣＤ‐ＲＯＭおよびＤＶＤ‐ＲＯＭディスクが含まれ得る。
【０１１６】
命令１０２４は、いくつかの転送プロトコル（例えば、フレームリレー、インターネットプロトコル（ＩＰ）、伝送制御プロトコル（ＴＣＰ）、ユーザ・データグラム・プロトコル（ＵＤＰ）、ハイパーテキスト転送プロトコル（ＨＴＴＰ）など））のうちいずれか１つを利用するネットワークインターフェース装置１０２０を介して伝送媒体を使用して通信ネットワーク１０２６を介してさらに送信または受信され得る。通信ネットワークの例には、特に、ローカル・エリア・ネットワーク（ＬＡＮ）、広域ネットワーク（ＷＡＮ）、パケット・データ・ネットワーク（例えばインターネット）、携帯電話網（例えばセルラーネットワーク）、基本電話サービス（ＰＯＴＳ）網、無線データネットワーク（例えば、Ｗｉ‐Ｆｉ（登録商標）として知られる米国電気電子学会（ＩＥＥＥ）（登録商標）８０２．１１規格ファミリ、ＷｉＭａｘ（登録商標）として知られるＩＥＥＥ（登録商標）８０２．１６規格ファミリ）、ＩＥＥＥ（登録商標）８０２．１５．４規格ファミリ、ピアツーピアピア（Ｐ２Ｐ）ネットワークが含まれ得る。一例では、ネットワークインターフェース装置１０２０は、通信ネットワーク１０２６に接続するための１つもしくは複数の物理的ジャック（例えば、イーサネット（登録商標）ジャックや、同軸ジャックや、電話ジャック）または１つもしくは複数のアンテナを含み得る。一例では、ネットワークインターフェース装置１０２０は、単入力多出力（ＳＩＭＯ）、多入力多出力（ＭＩＭＯ）、または多入力単出力（ＭＩＳＯ）の各技法のうち少なくとも１つを使用して無線通信するための複数のアンテナを含み得る。「伝送媒体」という用語は、機械１０００が実行するための命令を格納、符号化、または搬送することができる任意の無形媒体を含むものと理解され、そのようなソフトウェアの通信を容易にするためのデジタルまたはアナログの通信信号または他の無形媒体を含む。伝送媒体は機械可読媒体である。
【０１１７】
図１１〜図２０に、コンピュータハードウェアを実装するために使用され得るハードウェア構造または実装形態のいくつかの追加の例を示す。
【０１１８】
図１１は、一実施形態によるレジスタアーキテクチャ１１００のブロック図である。図示の実施形態では、５１２ビット幅の３２個のベクトルレジスタ１１１０があり、これらのレジスタはｚｍｍ０からｚｍｍ３１として参照される。下位１６個のｚｍｍレジスタの下位２５６ビットは、レジスタｙｍｍ０〜１６にオーバーレイされている。下位１６個のｚｍｍレジスタの下位１２８ビット（ｙｍｍレジスタの下位１２８ビット）は、レジスタｘｍｍ０〜１５にオーバーレイされている。
【０１１９】
図示の実施形態の書き込みマスクレジスタ１１１５では、各々６４ビットのサイズの８個の書き込みマスクレジスタ（ｋ０からｋ７）がある。代替実施形態では、書き込みマスクレジスタ１１１５は１６ビットのサイズである。前述したように、一実施形態では、ベクトル・マスク・レジスタｋ０を書き込みマスクとして使用することはできない。通常ｋ０を示すはずの符号化が書き込みマスクに使用される場合、０ｘＦＦＦＦのハードワイヤード書き込みマスクが選択され、その命令の書き込みマスキングが事実上無効になる。
【０１２０】
図示の実施形態の汎用レジスタ１１２５では、メモリオペランドをアドレス指定するために既存のｘ８６アドレス指定モードと共に使用される１６個の６４ビット汎用レジスタがある。これらのレジスタは、ＲＡＸ、ＲＢＸ、ＲＣＸ、ＲＤＸ、ＲＢＰ、ＲＳＩ、ＲＤＩ、ＲＳＰ、およびＲ８からＲ１５の名前で参照される。
【０１２１】
図示の実施形態の、ＭＭＸパックド整数フラット・レジスタ・ファイル１１５０がエイリアスされるスカラ浮動小数点スタック・レジスタ・ファイル（ｘ８７スタック）１１４５では、ｘ８７スタックは、ｘ８７命令セット拡張を使用して３２／６４／８０ビット浮動小数点データに対してスカラ浮動小数点演算を行うために使用される８要素スタックであり、ＭＭＸレジスタは、６４ビットのパックド整数データに対して演算を行うと共に、ＭＭＸレジスタとＸＭＭレジスタとの間で行われるいくつかの演算のオペランドを保持するために使用される。代替実施形態では、より広いまたはより狭いレジスタを使用し得る。加えて、代替実施形態では、より多い、より少ない、または異なるレジスタファイルおよびレジスタも使用し得る。
【０１２２】
プロセッサコアは、異なる方法で、異なる目的のために、異なるプロセッサにおいて実装され得る。例えば、そのようなコアの実装形態には、以下が含まれ得る。１）汎用コンピューティングを目的とした汎用イン・オーダ・コア。２）汎用コンピューティングを目的とした高性能汎用アウト・オブ・オーダ・コア。３）主としてグラフィックスおよび／または科学的（スループット）コンピューティングを目的とした専用コア。様々なプロセッサの実装形態には以下が含まれ得る。１）汎用コンピューティングを目的とした１つもしくは複数の汎用イン・オーダ・コアおよび／または汎用コンピューティングを目的とし１つもしくは複数の汎用アウト・オブ・オーダ・コアを含むＣＰＵ。２）主としてグラフィックスおよび／または科学的（スループット）コンピューティングを目的とした１つまたは複数の専用コアを含むコプロセッサ。そのような異なるプロセッサは、異なるコンピュータ・システム・アーキテクチャをもたらし、それらには以下が含まれ得る。１）ＣＰＵとは別のチップ上のコプロセッサ。２）ＣＰＵと同じパッケージ内の別のダイ上のコプロセッサ。３）ＣＰＵと同じダイ上のコプロセッサ（この場合、そのようなコプロセッサは、統合グラフィックスおよび／もしくは科学（スループット）ロジックなどの専用ロジック、または専用コアと呼ばれることもある）。４）同じダイ上に記載のＣＰＵ（アプリケーションコアまたはアプリケーションプロセッサと呼ばれることもある）、上述したコプロセッサ、および追加の機能を含み得るシステムオンチップ。次に、例示的なコアアーキテクチャについて説明し、続いて例示的なプロセッサおよびコンピュータアーキテクチャについて説明する。
【０１２３】
図１２は、様々な実施形態による例示的なイン・オーダ・パイプラインと、例示的なレジスタリネーミング、アウト・オブ・オーダ発行／実行パイプラインの両方を示すブロック図である。図１２の実線の囲みはイン・オーダ・パイプラインとイン・オーダ・コアとを示しており、破線の囲みの任意選択の追加は、レジスタリネーミング、アウト・オブ・オーダ発行／実行パイプラインおよびコアを示している。イン・オーダの局面がアウト・オブ・オーダの局面のサブセットであると仮定して、アウト・オブ・オーダの局面について説明する。
【０１２４】
図１２では、プロセッサパイプライン１２００は、フェッチ段１２０２と、長さ復号段１２０４と、復号段１２０６と、割り振り段１２０８と、リネーム段１２１０、スケジューリング（ディスパッチまたは発行としても知られる）段１２１２と、レジスタ読み出し／メモリ読み出し段１２１４と、実行段１２１６と、書き戻し／メモリ書き込み段１２１８と、例外処理段１２２２と、コミット段１２２４とを含む。
【０１２５】
図１３には、実行エンジンユニット１３５０に結合されたフロント・エンド・ユニット１３３０を含むプロセッサコア１３９０が示されており、どちらもメモリユニット１３７０に結合されている。コア１３９０は、縮小命令セットコンピューティング（ｒｅｄｕｃｅｄ  ｉｎｓｔｒｕｃｔｉｏｎ  ｓｅｔ  ｃｏｍｐｕｔｉｎｇ（ＲＩＳＣ））コア、複合命令セットコンピューティング（ｃｏｍｐｌｅｘ  ｉｎｓｔｒｕｃｔｉｏｎ  ｓｅｔ  ｃｏｍｐｕｔｉｎｇ（ＣＩＳＣ））コア、超長命令語（ｖｅｒｙ  ｌｏｎｇ  ｉｎｓｔｒｕｃｔｉｏｎ  ｗｏｒｄ（ＶＬＩＷ））コア、またはハイブリッドもしくは代替のコアタイプとし得る。さらに別の選択肢として、コア１３９０は、例えば、ネットワークまたは通信コア、圧縮エンジン、コプロセッサコア、汎用コンピューティンググラフィックス処理装置（ＧＰＧＰＵ）コア、グラフィックスコアなどの専用コアであり得る。
【０１２６】
フロント・エンド・ユニット１３３０は、命令キャッシュユニット１３３４に結合された分岐予測ユニット１３３２を含み、命令キャッシュユニット１３３４は命令変換ルックアサイドバッファ（ｔｒａｎｓｌａｔｉｏｎ  ｌｏｏｋａｓｉｄｅ  ｂｕｆｆｅｒ（ＴＬＢ））１３３６に結合されており、命令変換ルックアサイドバッファ１３３６は命令フェッチユニット１３３８に結合されており、命令フェッチユニット１３３８は復号ユニット１３４０に結合されている。復号ユニット１３４０（または復号器）は、命令を復号し、出力として、元の命令から復号され、またはそれ以外に元の命令を反映し、または元の命令から導出された、１つまたは複数のマイクロ演算、マイクロ・コード・エントリ・ポイント、マイクロ命令、他の命令、または他の制御信号を生成し得る。復号ユニット１３４０は、様々な異なる機構を使用して実装され得る。適切な機構の例には、ルックアップテーブル、ハードウェア実装、プログラマブル・ロジック・アレイ（ＰＬＡ）、マイクロコード読取り専用メモリ（ＲＯＭ）などが含まれるが、これに限定されない。一実施形態では、コア１３９０は、（例えば、復号ユニット１３４０内またはフロント・エンド・ユニット１３３０内の）特定のマクロ命令のためのマイクロコードを格納するマイクロコードＲＯＭまたは他の媒体を含む。復号ユニット１３４０は、実行エンジンユニット１３５０内のリネーム／アロケータユニット１３５２に結合されている。
【０１２７】
実行エンジンユニット１３５０は、リタイアメントユニット１３５４に接続されたリネーム／アロケータユニット１３５２と、１つまたは複数のスケジューラユニット１３５６のセットとを含む。スケジューラユニット１３５６は、予約ステーション、中央命令ウィンドウなどを含む、任意の数の異なるスケジューラを表す。スケジューラユニット１３５６は、物理レジスタ・ファイル・ユニット１３５８に結合されている。各物理レジスタ・ファイル・ユニット１３５８は１つまたは複数の物理レジスタファイルを表し、それらの物理レジスタファイルの異なるものが、スカラ整数、スカラ浮動小数点、パックド整数、パックド浮動小数点、ベクトル整数、ベクトル浮動小数点、ステータス（例えば、実行されるべき次の命令のアドレスである命令ポインタ）などの１つまたは複数の異なるデータ型を格納する。一実施形態では、物理レジスタ・ファイル・ユニット１３５８は、ベクトル・レジスタ・ユニットと、書き込み・マスク・レジスタ・ユニットと、スカラ・レジスタ・ユニットとを含む。これらのレジスタユニットは、アーキテクチャ・ベクトル・レジスタ、ベクトル・マスク・レジスタ、および汎用レジスタを提供し得る。物理レジスタ・ファイル・ユニット１３５８は、（例えば、リオーダバッファおよびリタイアメント・レジスタ・ファイルを使用して、将来のファイル、履歴バッファ、およびリタイアメント・レジスタ・ファイルを使用して、レジスタマップおよびレジスタプールを使用してなど）レジスタリネーミングおよびアウト・オブ・オーダ実行が実装され得る様々な方法を示すためにリタイアメントユニット１３５４とオーバーラップしている。リタイアメントユニット１３５４および物理レジスタ・ファイル・ユニット１３５８は実行クラスタ１３６０に結合されている。実行クラスタ１３６０は、１つまたは複数の実行ユニットのセット１３６２と１つまたは複数のメモリ・アクセス・ユニットのセット１３６４とを含む。実行ユニット１３６２は、様々な演算（例えば、シフト、加算、減算、乗算）を、様々なデータ型（例えば、スカラ浮動小数点、パックド整数、パックド浮動小数点、ベクトル整数、ベクトル浮動小数点）に対して行い得る。いくつかの実施形態は、特定の機能または機能セットに専用のいくつかの実行ユニットを含み得るが、他の実施形態は、ただ１つの実行ユニット、またはすべてがすべての機能を果たす複数の実行ユニットを含み得る。スケジューラユニット１３５６、物理レジスタ・ファイル・ユニット１３５８、および実行クラスタ１３６０は、特定の実施形態が、特定のデータ型／演算のための別々のパイプラインを作成するので、場合によっては複数であるものとして示されている（例えば、スカラ整数パイプライン、スカラ浮動小数点／パックド整数／パックド浮動小数点／ベクトル整数／ベクトル浮動小数点パイプライン、ならびに／または独自のスケジューラユニット、物理レジスタ・ファイル・ユニット、および／もしくは実行クラスタを各々有するメモリ・アクセス・パイプライン、別々のメモリ・アクセス・パイプラインの場合には、このパイプラインの実行クラスタのみがメモリ・アクセス・ユニット１３６４を有する特定の実施形態が実装される）。別々のパイプラインが使用される場合、これらのパイプラインのうちの１つまたは複数がアウト・オブ・オーダ発行／実行であり、残りがイン・オーダであり得ることも理解されたい。
【０１２８】
メモリ・アクセス・ユニットのセット１３６４は、メモリユニット１３７０に結合されており、メモリユニット１３７０は、レベル２（Ｌ２）キャッシュユニット１３７６に結合されたデータ・キャッシュ・ユニット１３７４に結合されたデータＴＬＢユニット１３７２を含む。一例では、メモリ・アクセス・ユニット１３６４は、その各々がメモリユニット１３７０内のデータＴＬＢユニット１３７２に結合されている負荷ユニット、ストア・アドレス・ユニット、およびストア・データ・ユニットを含み得る。命令キャッシュユニット１３３４は、メモリユニット１３７０内のレベル２（Ｌ２）キャッシュユニット１３７６にさらに結合されている。Ｌ２キャッシュユニット１３７６は、１つまたは複数の他のレベルのキャッシュに、最終的にはメインメモリに結合されている。
【０１２９】
一例として、例示的なレジスタリネーミング、アウト・オブ・オーダ発行／実行コアアーキテクチャは、以下のようにパイプライン１２００を実装し得る。１）命令フェッチ１３３８がフェッチ段１２０２および長さ復号段１２０４を行う。２）復号ユニット１３４０が復号段１２０６を行う。３）リネーム／アロケータユニット１３５２が割り振り段１２０８およびリネーム段１２１０を行う。４）スケジューラユニット１３５６がスケジュール段１２１２を行う。５）物理レジスタ・ファイル・ユニット１３５８およびメモリユニット１３７０が、レジスタ読み出し／メモリ読み出し段１２１４を行い、実行クラスタ１３６０が実行段１２１６を行う。６）メモリユニット１３７０および物理レジスタ・ファイル・ユニット１３５８が、書き戻し／メモリ書き込み段１２１８を行う。７）様々なユニットが例外処理段１２２２に関与し得る。８）リタイアメントユニット１３５４および物理レジスタ・ファイル・ユニット１３５８がコミット段１２２４を行う。
【０１３０】
コア１３９０は、本明細書に記載された命令を含む、１つまたは複数の命令セット（例えば、ｘ８６命令セット（より新しいバージョンで追加されたいくつかの拡張を伴う）、カリフォルニア州サニーベールのＭＩＰＳ  ＴｅｃｈｎｏｌｏｇｉｅｓのＭＩＰＳ命令セット、カリフォルニア州サニーベールのＡＲＭ  ＨｏｌｄｉｎｇｓのＡＲＭ命令セット（ＮＥＯＮなどの任意選択の追加拡張を伴う））をサポートし得る。一実施形態では、コア１３９０は、パックドデータ命令セット拡張（例えば、ＡＶＸ１、ＡＶＸ２）をサポートするためのロジックを含み、それによって、多くのマルチメディアアプリケーションによって使用される演算を、パックドデータを使用して行うことが可能になる。
【０１３１】
コアはマルチスレッド化（２つ以上の並列の演算セットまたはスレッドセットの実行）をサポートし、それを、タイム・スライス・マルチスレッディング、同時マルチスレッド化（単一の物理コアが、物理コアが同時にマルチスレッド化するスレッドごとに論理コアを提供する）、またはそれらの組み合わせ（例えば、Ｉｎｔｅｌ（登録商標）Ｈｙｐｅｒｔｈｒｅａｄｉｎｇ技術などにおけるタイムスライスされたフェッチおよび復号とその後の同時マルチスレッド化）を含む様々な方法で行い得ることを理解されたい。
【０１３２】
レジスタリネーミングはアウト・オブ・オーダ実行の文脈で説明されているが、レジスタリネーミングはイン・オーダ・アーキテクチャで使用されてもよいことを理解されたい。図示のプロセッサの実施形態はまた、別々の命令キャッシュユニット１３３４／データ・キャッシュ・ユニット１３７４と共有Ｌ２キャッシュユニット１３７６とを含むが、代替実施形態は、例えばレベル１（Ｌ１）内部キャッシュのように、命令とデータの両方に単一の内部キャッシュを、または複数レベルの内部キャッシュを含み得る。いくつかの実施形態では、システムは、内部キャッシュと、コアおよび／またはプロセッサの外部にある外部キャッシュとの組み合わせを含み得る。あるいは、すべてのキャッシュがコアおよび／またはプロセッサの外部にあってもよい。
【０１３３】
図１４Ａ〜図１４Ｂに、そのコアが、チップ内の（同じタイプおよび／または異なるタイプの他のコアを含む）いくつかの論理ブロックのうちの１つになるはずの、より具体的なイン・オーダ・コア・アーキテクチャの例のブロック図を示す。論理ブロックは、用途に応じて、高帯域幅相互接続ネットワーク（例えばリングネットワーク）を介していくつかの固定機能ロジック、メモリＩ／Ｏインターフェース、および他の必要なＩ／Ｏロジックと通信する。
【０１３４】
図１４Ａは、様々な実施形態による、オンダイ相互接続ネットワーク１４０２へのその接続とレベル２（Ｌ２）キャッシュ１４０４のそのローカルサブセットを伴う単一のプロセッサコアのブロック図である。一実施形態では、命令復号器１４００は、パックドデータ命令セット拡張を有するｘ８６命令セットをサポートする。Ｌ１キャッシュ１４０６は、スカラユニットおよびベクトルユニットに入るキャッシュメモリへの低待ち時間アクセスを可能にする。一実施形態では（設計を単純化するために）、スカラユニット１４０８とベクトルユニット１４１０とは別々のレジスタセット（それぞれスカラレジスタ１４１２とベクトルレジスタ１４１４と）を使用し、それらの間で転送されるデータはメモリに書き込まれ、次いでレベル１（Ｌ１）キャッシュ１４０６から読み戻されるが、代替実施形態では、異なる手法を使用し得る（例えば、単一のレジスタセットを使用するか、または書き込みも読み戻しもせずに２つのレジスタファイル間でデータが転送されることを可能にする通信パスを含む）。
【０１３５】
Ｌ２キャッシュ１４０４のローカルサブセットは、プロセッサコアごとに１つずつ、別々のローカルサブセットに分割されたグローバルＬ２キャッシュの一部である。各プロセッサコアは、Ｌ２キャッシュ１４０４のそれ自体のローカルサブセットへの直接アクセスパスを有する。プロセッサコアによって読み出されたデータは、そのＬ２キャッシュサブセット１４０４に格納され、それら自体のローカルＬ２キャッシュサブセットにアクセスする他のプロセッサコアと並列に、迅速にアクセスされ得る。プロセッサコアによって書き込まれたデータは、それ自体のＬ２キャッシュサブセット１４０４に格納され、必要に応じて他のサブセットからフラッシュされる。リングネットワークは共有データの一貫性を保証する。リングネットワークは、プロセッサコア、Ｌ２キャッシュ、その他の論理ブロックなどのエージェントがチップ内で互いに通信することを可能するために双方向である。各リングデータパスは、方向ごとに１３１２ビット幅である。
【０１３６】
図１４Ｂは、実施形態による図１４Ａのプロセッサコアの一部の拡大図である。図１４Ｂは、Ｌ１キャッシュ１４０４の一部であるＬ１データキャッシュ１４０６Ａ、ならびにベクトルユニット１４１０およびベクトルレジスタ１４１４に関するさらなる詳細を含む。具体的には、ベクトルユニット１４１０は、１６幅ベクトル処理ユニット（（ＶＰＵ）（１６幅ＡＬＵ１４２８を参照）であり、整数命令、単精度浮動小数点命令、および倍精度浮動小数点命令のうち１つまたは複数を実行する。ＶＰＵは、メモリ入力に対するスウィズルユニット１４２０によるレジスタ入力のスウィズリング、数値変換ユニット１４２２Ａ〜１４２２Ｂによる数値変換、および複製ユニット１４２４による複製をサポートする。書き込みマスクレジスタ１４２６は、結果として生じるベクトル書き込みの予測を可能にする。
【０１３７】
図１５は、実施形態による、複数のコアを有し得る、統合メモリコントローラを有し得る、統合グラフィックスを有し得るプロセッサ１５００のブロック図である。図１５の実線の囲みは、単一コア１５０２Ａと、システム・エージェント・ユニット１５１０と、１つまたは複数のバス・コントローラ・ユニットのセット１５１６とを有するプロセッサ１５００を示しており、破線の囲みの任意選択の追加は、複数のコア１５０２Ａ〜１５０２Ｎと、システム・エージェント・ユニット１５１０内の１つまたは複数の統合メモリ・コントローラ・ユニットのセット１５１４と、専用ロジック１５０８とを有する代替のプロセッサ１５００を示している。
【０１３８】
よって、プロセッサ１５００の異なる実装形態は、以下を含み得る。１）専用ロジック１５０８が統合グラフィックスおよび／または科学的（スループット）ロジック（１つまたは複数のコアを含み得る）であり、コア１５０２Ａ〜１５０２Ｎが１つまたは複数の汎用コア（例えば、汎用イン・オーダ・コア、汎用アウト・オブ・オーダ・コア、２つの組み合わせ）であるＣＰＵ。２）コア１５０２Ａ〜１５０２Ｎが、主にグラフィックスおよび／または科学的（スループット）を目的とした多数の専用コアであるコプロセッサ。３）コア１５０２Ａ〜１５０２Ｎが多数の汎用イン・オーダ・コアであるコプロセッサ。よって、プロセッサ１５００は、汎用プロセッサ、コプロセッサ、または例えば、ネットワークもしくは通信プロセッサ、圧縮エンジン、グラフィックスプロセッサ、ＧＰＧＰＵ（汎用グラフィックス処理装置）、ハイスループットＭＩＣ（ｍａｎｙ  ｉｎｔｅｇｒａｔｅｄ  ｃｏｒｅ）コプロセッサ（３０以上のコアを含む）、組み込みプロセッサなどの専用プロセッサである得る。プロセッサは、１つまたは複数のチップ上に実装され得る。プロセッサ１５００は、例えば、ＢｉＣＭＯＳ、ＣＭＯＳ、ＮＭＯＳなどのいくつかのプロセス技術のうちのいずれかを使用した１つまたは複数の基板の一部であってもよく、かつ／またはそうした基板上に実装され得る。
【０１３９】
メモリ階層は、コア１５０２Ａ〜１５０２Ｎ内の１つまたは複数のレベルのキャッシュ１５０４と、１つまたは複数の共有キャッシュユニットまたは共有キャッシュユニットのセット１５０６と、統合メモリ・コントローラ・ユニットのセット１５１４に結合された外部メモリ（図示せず）とを含む。共有キャッシュユニットのセット１５０６は、レベル２（Ｌ２）、レベル３（Ｌ３）、レベル４（Ｌ４）、他のレベルのキャッシュなどの１つまたは複数の中間レベルキャッシュ、ラスト・レベル・キャッシュ（ｌａｓｔ  ｌｅｖｅｌ  ｃａｃｈｅ（ＬＬＣ））、および／またはそれらの組み合わせを含み得る。一実施形態では、リングベースの相互接続ユニット１５１２が統合グラフィックスロジック１５０８、共有キャッシュユニットのセット１５０６、およびシステム・エージェント・ユニット１５１０／統合メモリ・コントローラ・ユニット１５１４を相互接続するが、代替実施形態は、そのようなユニットを相互接続するための任意の数の周知の技術を使用し得る。一実施形態では、１つまたは複数のキャッシュユニット１５０６とコア１５０２Ａ〜１５０２Ｎとの間で一貫性が維持される。
【０１４０】
いくつかの実施形態では、コア１５０２Ａ〜１５０２Ｎのうちの１つまたは複数はマルチスレッド化することができる。システムエージェント１５１０は、コア１５０２Ａ〜１５０２Ｎを協調させ、動作させるそれらの構成要素を含む。システム・エージェント・ユニット１５１０は、例えば、電力制御ユニット（ＰＣＵ）や表示ユニットを含み得る。ＰＣＵは、コア１５０２Ａ〜１５０２Ｎおよび統合グラフィックスロジック１５０８の電力状態を調整するために必要なロジックおよび構成要素であるかまたはそれらを含み得る。表示ユニットは、１つまたは複数の外部接続ディスプレイを駆動するためのものである。
【０１４１】
コア１５０２Ａ〜１５０２Ｎは、アーキテクチャ命令セットに関して同種でも異種でもよい。すなわち、コア１５０２Ａ〜１５０２Ｎのうち２つ以上が同じ命令セットを実行することができてもよく、他のものがその命令セットのサブセットまたは異なる命令セットのみを実行することができてもよい。
【０１４２】
図１６〜図１９は、例示的なコンピュータアーキテクチャのブロック図である。ラップトップ、デスクトップ、ハンドヘルドＰＣ、携帯情報端末、エンジニアリングワークステーション、サーバ、ネットワーク装置、ネットワークハブ、スイッチ、組み込みプロセッサ、デジタル信号プロセッサ（ＤＳＰ）、グラフィックス装置、ビデオゲーム装置、セットトップボックス、マイクロコントローラ、携帯電話、携帯型メディアプレーヤ、ハンドヘルド装置、および他の様々な電子装置のための当技術分野において公知の他のシステム設計および構成も適している。一般的に、本明細書に開示されるプロセッサおよび／または他の実行ロジックを組み込むことができる多種多様なシステムまたは電子装置が一般に適している。
【０１４３】
次に図１６を参照すると、一実施形態によるシステム１６００のブロック図が示されている。システム１６００は、コントローラハブ１６２０に結合された１つまたは複数のプロセッサ１６１０、１６１５を含み得る。一実施形態では、コントローラハブ１６２０は、グラフィックス・メモリ・コントローラ・ハブ（ｇｒａｐｈｉｃｓ  ｍｅｍｏｒｙ  ｃｏｎｔｒｏｌｌｅｒ  ｈｕｂ（ＧＭＣＨ））１６９０と、入力／出力ハブ（ＩＯＨ）１６５０（別々のチップ上にあってもよい）とを含み、ＧＭＣＨ１６９０は、メモリ１６４０とコプロセッサ１６４５とが結合されるメモリコントローラとグラフィックスコントローラとを含み、ＩＯＨ１６５０は、入力／出力（Ｉ／Ｏ）装置１６６０をＧＭＣＨ１６９０に結合する。あるいは、メモリコントローラとグラフィックスコントローラの一方または両方が（本明細書に記載されるように）プロセッサ内に統合され、メモリ１６４０およびコプロセッサ１６４５はプロセッサ１６１０に直接結合され、コントローラハブ１６２０はＩＯＨ１６５０と共に単一チップ内にある。
【０１４４】
追加のプロセッサ１６１５の任意選択性は、図１６に破線で表されている。各プロセッサ１６１０、１６１５は、本明細書に記載される処理コアのうち１つまたは複数を含んでいてよく、プロセッサ１５００の何らかのバージョンであってもよい。
【０１４５】
メモリ１６４０は、例えば、ダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）、相変化メモリ（ＰＣＭ）、またはこれら２つの組み合わせであってもよい。少なくとも１つの実施形態では、コントローラハブ１６２０は、フロントサイドバス（ＦＳＢ）などのマルチドロップバス、ＱｕｉｃｋＰａｔｈ  Ｉｎｔｅｒｃｏｎｎｅｃｔ（ＱＰＩ）などのポイントツーポイントインターフェース、または同様の接続１６９５を介してプロセッサ１６１０、１６１５と通信する。
【０１４６】
一実施形態では、コプロセッサ１６４５は、例えば、ハイスループットＭＩＣプロセッサ、ネットワークまたは通信プロセッサ、圧縮エンジン、グラフィックスプロセッサ、ＧＰＧＰＵ、組み込みプロセッサなどの専用プロセッサである。一実施形態では、コントローラハブ１６２０は、統合グラフィックスアクセラレータを含み得る。
【０１４７】
アーキテクチャ特性、マイクロアーキテクチャ特性、熱特性、電力消費特性などを含む一連のメリットの指標に関して、物理リソース１６１０、１６１５間には様々な違いがあり得る。
【０１４８】
一実施形態では、プロセッサ１６１０は、一般的なタイプのデータ処理動作を制御する命令を実行する。命令内に組み込まれているのは、コプロセッサ命令であり得る。プロセッサ１６１０は、これらのコプロセッサ命令を、接続されたコプロセッサ１６４５によって実行されるべきタイプのものとして認識する。したがって、プロセッサ１６１０は、コプロセッサバスまたは他の相互接続上でこれらのコプロセッサ命令（またはコプロセッサ命令を表す制御信号）をコプロセッサ１６４５に発行する。コプロセッサ１６４５は、受信したコプロセッサ命令を受け入れ、実行する。
【０１４９】
次に図１７を参照すると、一実施形態による第１のより具体的なシステムの例１７００のブロック図が示されている。図１７に示すように、マルチプロセッサシステム１７００はポイントツーポイント相互接続システムであり、ポイントツーポイント相互接続１７５０を介して結合された第１のプロセッサ１７７０と第２のプロセッサ１７８０とを含む。プロセッサ１７７０およびプロセッサ１７８０は各々、プロセッサ１５００の何らかのバージョンであり得る。一実施形態では、プロセッサ１７７０およびプロセッサ１７８０はそれぞれプロセッサ１６１０および１６１５であり、コプロセッサ１７３８はコプロセッサ１６４５である。別の実施形態では、プロセッサ１７７０およびプロセッサ１７８０はそれぞれプロセッサ１６１０およびコプロセッサ１６４５である。
【０１５０】
プロセッサ１７７０およびプロセッサ１７８０は、それぞれ、統合メモリコントローラ（ＩＭＣ）ユニット１７７２および統合メモリコントローラ（ＩＭＣ）ユニット１７８２を含むものとして示されている。プロセッサ１７７０はまた、そのバス・コントローラ・ユニットの一部としてポイントツーポイント（Ｐ‐Ｐ）インターフェース１７７６および１７７８を含む。同様に、第２のプロセッサ１７８０も、Ｐ‐Ｐインターフェース１７８６および１７８８を含む。プロセッサ１７７０、１７８０は、Ｐ‐Ｐインターフェース回路１７７８、１７８８を使用して、ポイントツーポイント（Ｐ‐Ｐ）インターフェース１７５０を介して情報を交換し得る。図１７に示すように、ＩＭＣ１７７２およびＩＭＣ１７８２は、プロセッサをそれぞれのメモリ、すなわち、メモリ１７３２およびメモリ１７３４に結合し、これらのメモリは、それぞれのプロセッサにローカルに接続されたメインメモリの部分であり得る。
【０１５１】
プロセッサ１７７０、１７８０は各々、ポイントツーポイントインターフェース回路１７７６、１７９４、１７８６、１７９８を使用して個々のＰ‐Ｐインターフェース１７５２、１７５４を介してチップセット１７９０と情報を交換し得る。チップセット１７９０は、任意選択で、高性能インターフェース１７３９を介してコプロセッサ１７３８と情報を交換し得る。一実施形態では、コプロセッサ１７３８は、例えば、ハイスループットＭＩＣプロセッサ、ネットワークまたは通信プロセッサ、圧縮エンジン、グラフィックスプロセッサ、ＧＰＧＰＵ、組み込みプロセッサなどの専用プロセッサである。
【０１５２】
共有キャッシュ（図示せず）が、どちらかのプロセッサに含まれるか、または両方のプロセッサの外部にあるが、Ｐ‐Ｐ相互接続を介してプロセッサと接続されていてよく、そのため、プロセッサが低電力モードになった場合、どちらかのプロセッサまたは両方のプロセッサのローカルキャッシュ情報が共有キャッシュに格納され得る。
【０１５３】
チップセット１７９０は、インターフェース１７９６を介して第１のバス１７１６に結合され得る。一実施形態では、第１のバス１７１６は、周辺装置相互接続（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ（ＰＣＩ））バス、またはＰＣＩ  Ｅｘｐｒｅｓｓバスまたは別の第３世代Ｉ／Ｏ相互接続バスなどのバスであり得るが、本技法および構成の範囲はこれに限定されない。
【０１５４】
図１７に示すように、第１のバス１７１６には、第１のバス１７１６を第２のバス１７２０に結合するバスブリッジ１７１８と共に、様々なＩ／Ｏ装置１７１４が結合され得る。一実施形態では、コプロセッサ、ハイスループットＭＩＣプロセッサ、ＧＰＧＰＵのアクセラレータ（例えばグラフィックスアクセラレータやデジタル信号処理（ＤＳＰ）ユニットなど）、フィールド・プログラマブル・ゲート・アレイなどの１つもしくは複数の追加のプロセッサ１７１５、または他の任意のプロセッサが第１のバス１７１６に結合される。一実施形態では、第２のバス１７２０は、ローピンカウント（ＬＰＣ）バスであり得る。一実施形態では、第２のバス１７２０には、例えば、キーボードおよび／またはマウス１７２２、通信装置１７２７、ならびに命令／コードおよびデータ１７３０を含み得るディスクドライブや他の大容量記憶装置などの記憶ユニット１７２８を含む様々な装置が結合され得る。さらに、第２のバス１７２０にはオーディオＩ／Ｏ１７２４が結合され得る。他のアーキテクチャも可能であることに留意されたい。例えば、図１７のポイントツーポイントアーキテクチャの代わりに、システムはマルチドロップバスや他のそのようなアーキテクチャを実装してもよい。
【０１５５】
次に図１８を参照すると、一実施形態による第２のより具体的なシステムの例１８００のブロック図が示されている。図１７と図１８の同様の要素には同様の参照番号が付されており、図１８の他の局面を曖昧にしないように図１７の特定の局面が図１８から省略されている。
【０１５６】
図１８には、プロセッサ１７７０、１７８０が、それぞれ、統合メモリとＩ／Ｏ制御ロジック（「ＣＬ」）１７７２および１７８２とを含み得ることが示されている。よって、ＣＬ１７７２、１７８２は、統合メモリ・コントローラ・ユニットを含み、Ｉ／Ｏ制御ロジックを含む。図１８には、メモリ１７３２、１７３４がＣＬ１７７２、１７８２に結合されているだけでなく、Ｉ／Ｏ装置１８１４も制御ロジック１７７２、１７８２に結合されていることが示されている。レガシーＩ／Ｏ装置１８１５はチップセット１７９０に結合されている。
【０１５７】
次に図１９を参照すると、一実施形態によるＳｏＣ１９００のブロック図が示されている。図１８の同様の要素には同様の参照番号が付されている。また、破線の囲みは、より高度なＳｏＣ上の任意選択の機能である。図１９では、相互接続ユニット１９０２が、以下のものに結合されている。１つまたは複数のコア１５０２Ａ〜１５０２Ｎのセットと共有キャッシュユニット１５０６とを含むアプリケーションプロセッサ１９１０、システム・エージェント・ユニット１５１０、バス・コントローラ・ユニット１５１６、統合メモリ・コントローラ・ユニット１５１４、統合グラフィックスロジック、画像プロセッサ、オーディオプロセッサ、およびビデオプロセッサを含み得る１つもしくは複数のコプロセッサまたはコプロセッサのセット１９２０、スタティック・ランダム・アクセス・メモリ（ＳＲＡＭ）ユニット１９３０、ダイレクト・メモリ・アクセス（ｄｉｒｅｃｔ  ｍｅｍｏｒｙ  ａｃｃｅｓｓ（ＤＭＡ））ユニット１９３２、ならびに１つまたは複数の外部ディスプレイに結合するための表示ユニット１９４０。一実施形態では、コプロセッサ１９２０は、例えば、ネットワークまたは通信プロセッサ、圧縮エンジン、ＧＰＧＰＵ、ハイスループットＭＩＣプロセッサ、組み込みプロセッサなどの専用プロセッサを含む。
【０１５８】
本明細書に開示される機構の実施形態は、ハードウェア、ソフトウェア、ファームウェア、またはそのような実装手法の組み合わせとして実装され得る。実施形態は、少なくとも１つのプロセッサと、記憶システム（揮発性および不揮発性のメモリおよび／または記憶素子を含む）と、少なくとも１つの入力装置と、少なくとも１つの出力装置とを含むプログラム可能なシステム上で実行されるコンピュータプログラムまたはプログラムコードとして実装され得る。
【０１５９】
図１７に示すコード１７３０などのプログラムコードが、本明細書に記載される機能を果たし、出力情報を生成する命令を入力するために適用され得る。出力情報は、公知の方法で１つまたは複数の出力装置に適用され得る。本出願のために、処理システムは、例えば、デジタル信号プロセッサ（ＤＳＰ）、マイクロコントローラ、特定用途向け集積回路（ＡＳＩＣ）、マイクロプロセッサなどのプロセッサを有する任意のシステムを含む。
【０１６０】
プログラムコードは、処理システムと通信するために高水準手続き型プログラミング言語またはオブジェクト指向プログラミング言語として実装され得る。プログラムコードはまた、必要に応じて、アセンブリ言語または機械語としても実装され得る。実際、本明細書に記載される機構は、いかなる特定のプログラミング言語にも範囲を限定されない。いずれにせよ、言語はコンパイラ型またはインタプリタ型言語であり得る。
【０１６１】
少なくとも１つの実施形態の１つまたは複数の態様は、機械によって読み出されると、本明細書に記載される技法を行うためのロジックを機械に組み立てさせる、プロセッサ内の様々なロジックを表す機械可読媒体に格納された代表的な命令によって実現され得る。そのような表現は、「ＩＰコア」として知られており、有形の機械可読媒体上に格納され、ロジックまたはプロセッサを実際に作成する製造機械にロードするように様々な顧客または製造施設に供給される。
【０１６２】
そのような機械可読記憶媒体には、ハードディスクなどの記憶媒体、フロッピーディスク、光ディスク、コンパクトディスク読取り専用メモリ（ＣＤ‐ＲＯＭ）、書換え可能コンパクトディスク（ＣＤ‐ＲＷ）、および光磁気ディスクを含む任意の他のタイプのディスク、読取り専用メモリ（ＲＯＭ）、ダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）やスタティック・ランダム・アクセス・メモリ（ＳＲＡＭ）などのランダム・アクセス・メモリ（ＲＡＭ）、消去可能プログラム可能読取り専用メモリ（ＥＰＲＯＭ）、フラッシュメモリ、電気的消去可能プログラム可能読取り専用メモリ（ＥＥＰＲＯＭ）、相変化メモリ（ＰＣＭ）などの半導体メモリ、磁気カードもしくは光カード、または電子命令を格納するのに適した任意の他のタイプの媒体を含む、機械または装置によって製造または形成された物品の非一時的な有形の構成が含まれるが、これに限定されない。
【０１６３】
したがって、実施形態は、本明細書に記載される構造、回路、装置、プロセッサ、および／もしくはシステム機能を定義する、ハードウェア記述言語（Ｈａｒｄｗａｒｅ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ（ＨＤＬ））などの、命令を含むかまたは設計データを含む非一時的有形機械可読媒体も含む。そのような実施形態は、プログラム製品とも呼ばれ得る。
【０１６４】
場合によっては、命令をソース命令セットからターゲット命令セットに変換するために命令コンバータが使用され得る。例えば、命令コンバータは、命令を、コアによって処理されるべき１つまたは複数の他の命令に（例えば、静的バイナリ変換、動的コンパイルを含む動的バイナリ変換を使用して）変換し、変形し、エミュレートし、またはそれ以外に変換し得る。命令コンバータは、ソフトウェア、ハードウェア、ファームウェア、またはそれらの組み合わせとして実装され得る。命令コンバータは、プロセッサ上にあっても、プロセッサ外にあっても、一部がプロセッサ上に一部がプロセッサ外にあってもよい。
【０１６５】
図２０は、様々な実施形態による、ソース命令セット内のバイナリ命令をターゲット命令セット内のバイナリ命令に変換するためのソフトウェア命令コンバータの使用を対比させたブロック図である。図示の実施形態では、命令コンバータはソフトウェア命令コンバータであるが、代替として命令コンバータはソフトウェア、ファームウェア、ハードウェア、またはそれらの様々な組み合わせとして実装されてもよい。図２０には、少なくとも１つのｘ８６命令セットコアを有するプロセッサ２０１６によってネイティブに実行され得るｘ８６バイナリコード２００６を生成するためにｘ８６コンパイラ２００４を使用して高水準言語２００２のプログラムがコンパイルされ得ることが示されている。少なくとも１つのｘ８６命令セットコアを有するプロセッサ２０１６は、少なくとも１つのｘ８６命令セットコアを有するＩｎｔｅｌプロセッサと実質的に同じ結果を達成するために、（１）Ｉｎｔｅｌのｘ８６命令セットコアの命令セットの実質的な部分または（２）少なくとも１つのｘ８６命令セットコアを有するＩｎｔｅｌプロセッサ上で動作することを目的としたアプリケーションもしくは他のソフトウェアのオブジェクトコードを互換的に実行するか、またはそれ以外に処理することによって、少なくとも１つのｘ８６命令セットコアを有するＩｎｔｅｌプロセッサと実質的に同じ機能を果たし得る任意のプロセッサを表す。ｘ８６コンパイラ２００４は、追加のリンケージ処理ありまたはなしで、少なくとも１つのｘ８６命令セットコアを有するプロセッサ２０１６上で実行され得るｘ８６バイナリコード２００６（例えば、オブジェクトコード）を生成するように動作するコンパイラを表している。同様に、図２０には、少なくとも１つのｘ８６命令セットコアを有していないプロセッサ２０１４によってネイティブに実行され得る代替の命令セット・バイナリ・コード２０１０を生成するために代替の命令セットコンパイラ２００８を使用して高水準言語２００２のプログラムがコンパイルされ得ることも示されている（例えば、カリフォルニア州サニーベールのＭＩＰＳ  ＴｅｃｈｎｏｌｏｇｉｅｓのＭＩＰＳ命令セットを実行する、かつ／またはカリフォルニア州サニーベールのＡＲＭ  ＨｏｌｄｉｎｇｓのＡＲＭ命令セットを実行するコアを有するプロセッサ）。命令コンバータ２０１２は、ｘ８６バイナリコード２００６を、ｘ８６命令セットコアを有していないプロセッサ２０１４によってネイティブに実行され得るコードに変換するために使用される。これを可能にする命令コンバータを作成するのは難しいので、この変換されたコードが代替の命令セット・バイナリ・コード２０１０と同じである可能性は高くない。しかしながら、変換されたコードは一般的な動作を遂行し、代替の命令セットからの命令で構成される。よって、命令コンバータ２０１２は、エミュレーション、シミュレーションまたは任意の他のプロセスを通じて、ｘ８６命令セットプロセッサまたはコアを有していないプロセッサまたは他の電子デバイスがｘ８６バイナリコード２００６を実行することを可能にするソフトウェア、ファームウェア、ハードウェア、またはそれらの組み合わせを表す。
【０１６６】
［追加の注記および例］
例１は、ニューロモルフィック・アクセラレータ・マルチタスキングのためのシステムであり、本システムは、軸索プロセッサと、ニューロンアドレス変換ユニット（ＮＡＴＵ）と、を備え、ＮＡＴＵは、スパイクを生じさせたニューロンの物理ニューロン識別子（ＰＮＩＤ）を含むスパイクメッセージを受信する第１のインターフェースと、ＰＮＩＤをネットワーク識別子（ＮＩＤ）とローカルニューロン識別子（ＬＮＩＤ）とに変換し、ＮＩＤに基づいてシナプスデータを見つける処理回路と、シナプスデータおよびＬＮＩＤを軸索プロセッサに伝達する第２のインターフェースと、を有する。
【０１６７】
例２において、例１の主題は、シナプスデータがメモリアドレス範囲を含むこと、を含む。
【０１６８】
例３において、例１〜例２の主題は、ＰＮＩＤをＮＩＤおよびＬＮＩＤに変換するために、処理回路がＰＮＩＤを、各ＰＮＩＤ範囲が一意のＮＩＤに対応するＰＮＩＤ範囲のセットと比較すること、を含む。
【０１６９】
例４において、例１〜例３の主題は、ＬＮＩＤが、ＰＮＩＤからＰＮＩＤ＿ｂｅｇｉｎ値を減算することによって計算され、ＰＮＩＤ範囲のセットのメンバが、ＮＩＤに対応する最小のＰＮＩＤと最大のＰＮＩＤとをそれぞれ保持するＰＮＩＤ＿ｂｅｇｉｎとＰＮＩＤ＿ｅｎｄとの対を含むこと、を含む。
【０１７０】
例５において、例１〜例４の主題は、ＰＮＩＤをＮＩＤとＬＮＩＤとに変換するために、処理回路が、ＰＮＩＤの一端からＮＩＤ長に対応するいくつかのビットを除去すること、を含む。
【０１７１】
例６において、例１〜例５の主題は、ＮＡＴＵが軸索プロセッサと共にパッケージ化されていること、を含む。
【０１７２】
例７において、例１〜例６の主題は、相互接続を介して軸索プロセッサに接続されたニューラル・プロセッサ・クラスタ、を備える。
【０１７３】
例８において、例７の主題は、軸索プロセッサが、シナプスデータから見つかったシナプス構造に基づいて、第２のスパイクメッセージがＬＮＩＤにアドレス指定されていると判断し、処理回路が、シナプスデータに対応するＮＩＤを使用してＬＮＩＤをＰＮＩＤに変換し、処理回路が、ニューロンを識別するためにＰＮＩＤを使用して第２のスパイクメッセージを軸索プロセッサに伝達すること、を含む。
【０１７４】
例９において、例８の主題は、ＰＮＩＤが、ＬＮＩＤにＰＮＩＤ＿ｂｅｇｉｎ値を加算することによって計算され、ＰＮＩＤ＿ｂｅｇｉｎ値がＮＩＤのＰＮＩＤ範囲に対応すること、を含む。
【０１７５】
例１０において、例８〜例９の主題は、ＬＮＩＤをＰＮＩＤに変換するために、処理回路がＮＩＤをＬＮＩＤの一端に連結すること、を含む。
【０１７６】
例１１において、例７〜例１０の主題は、システムの構成要素に電力を供給する電源を備え、電源が、商用電源またはバッテリを介して電力を供給するインターフェースを有する。
【０１７７】
例１２において、例１〜例１１の主題は、ＮＩＤを含むニューラル・ネットワーク・クローン指示を受信し、ＮＩＤに対応する第１のニューロンメモリと等価の第２のニューロンメモリを、ニューロンメモリを含むメモリの第２の領域に確立する、ニューロンプロセッサ制御ユニット、を備え、処理回路が、第２のニューロンメモリに第２のＮＩＤを割り当て、第２のＮＩＤとシナプスデータとの間の対応関係を作成するために第２のＮＩＤについての変換情報を更新すること、を含む。
【０１７８】
例１３において、例１２の主題は、変換情報が、所与のＮＩＤのシナプスメモリの中に、ＮＩＤ固有のデータ構造をポインタと共に含み、ＮＩＤの第１のＮＩＤデータ構造と第２のＮＩＤの第２のＮＩＤデータ構造とが、同じシナプスメモリ空間を指し示すポインタを含むこと、を含む。
【０１７９】
例１４において、例１２〜例１３の主題は、第２のニューロンメモリを確立するために、ニューロンプロセッサ制御ユニットが第１のニューロンメモリをコピーすること、を含む。
【０１８０】
例１５において、例１２〜例１４の主題は、第２のニューロンメモリを確立するために、ニューロンプロセッサ制御ユニットが、第１のニューロンメモリからコピーされたニューロンのニューラル状態をランダム化すること、を含む。
【０１８１】
例１６において、例１〜例１５の主題は、軸索プロセッサが、第１のＮＩＤに対応する訓練イベントに基づいてシナプスデータ内のシナプス構造を更新するものであること、を含む。
【０１８２】
例１７において、例１６の主題は、システムが、ＮＩＤに対応するニューラルネットワークと同時に第２のＮＩＤに対応するニューラルネットワークを呼び出すものであり、第２のＮＩＤに対応するニューラルネットワークとＮＩＤに対応するニューラルネットワークの両方がシナプス構造を使用すること、を含む。
【０１８３】
例１８は、ニューロモルフィック・アクセラレータ・マルチタスキングのための方法であり、本方法は、ニューロンアドレス変換ユニット（ＮＡＴＵ）において、スパイクを生じさせたニューロンの物理ニューロン識別子（ＰＮＩＤ）を含むスパイクメッセージを受信するステップと、ＮＡＴＵが、ＰＮＩＤをネットワーク識別子（ＮＩＤ）とローカルニューロン識別子（ＬＮＩＤ）とに変換するステップと、ＮＡＴＵが、ＮＩＤに基づいてシナプスデータを見つけるステップと、ＮＡＴＵが、シナプスデータおよびＬＮＩＤを軸索プロセッサに伝達するステップと、を含む。
【０１８４】
例１９において、例１８の主題は、シナプスデータがメモリアドレス範囲を含むこと、を含む。
【０１８５】
例２０において、例１８〜例１９の主題は、ＰＮＩＤをＮＩＤとＬＮＩＤとに変換するステップが、ＰＮＩＤを、各ＰＮＩＤ範囲が一意のＮＩＤに対応するＰＮＩＤ範囲のセットと比較するステップを含むこと、を含む。
【０１８６】
例２１において、例１８〜例２０の主題は、ＬＮＩＤが、ＰＮＩＤからＰＮＩＤ＿ｂｅｇｉｎ値を減算することによって計算され、ＰＮＩＤ範囲のセットのメンバが、ＮＩＤに対応する最小のＰＮＩＤと最大のＰＮＩＤとをそれぞれ保持するＰＮＩＤ＿ｂｅｇｉｎとＰＮＩＤ＿ｅｎｄとの対を含むこと、を含む。
【０１８７】
例２２において、例１８〜例２１の主題は、ＰＮＩＤをＮＩＤとＬＮＩＤとに変換するステップが、ＰＮＩＤの一端からＮＩＤ長に対応するいくつかのビットを除去するステップを含むこと、を含む。
【０１８８】
例２３において、例１８〜例２２の主題は、ＮＡＴＵが軸索プロセッサと共にパッケージ化されていること、を含む。
【０１８９】
例２４において、例１８〜例２３の主題は、軸索プロセッサが、相互接続を介して軸索プロセッサに接続されたニューラル・プロセッサ・クラスタを含むシステムの一部であること、を含む。
【０１９０】
例２５において、例２４の主題は、軸索プロセッサが、シナプスデータから見つかったシナプス構造に基づいて、第２のスパイクメッセージがＬＮＩＤにアドレス指定されていると判断するステップと、ＮＡＴＵが、シナプスデータに対応するＮＩＤを使用してＬＮＩＤをＰＮＩＤに変換するステップと、ニューロンを識別するためにＰＮＩＤを使用して第２のスパイクメッセージを軸索プロセッサに伝達するステップと、を含む。
【０１９１】
例２６において、例２５の主題は、ＰＮＩＤが、ＬＮＩＤにＰＮＩＤ＿ｂｅｇｉｎ値を加算することによって計算され、ＰＮＩＤ＿ｂｅｇｉｎ値がＮＩＤのＰＮＩＤ範囲に対応すること、を含む。
【０１９２】
例２７において、例２５〜例２６の主題は、ＬＮＩＤをＰＮＩＤに変換するステップが、ＮＩＤをＬＮＩＤの一端に連結するステップを含むこと、を含む。
【０１９３】
例２８において、例２４〜例２７の主題は、システムが、システムの構成要素に電力を供給する電源を備え、電源が、商用電源またはバッテリを介して電力を供給するインターフェースを有する。
【０１９４】
例２９において、例１８〜例２８の主題は、ＮＩＤを含むニューラル・ネットワーク・クローン指示を受信するステップと、ＮＩＤに対応する第１のニューロンメモリと等価の第２のニューロンメモリを、ニューロンメモリを含むメモリの第２の領域に確立するステップと、第２のニューロンメモリに第２のＮＩＤを割り当てるステップと、第２のＮＩＤとシナプスデータとの間の対応関係を作成するために第２のＮＩＤについてのＮＡＴＵ情報を更新するステップと、を含む。
【０１９５】
例３０において、例２９の主題は、ＮＡＴＵ情報が、所与のＮＩＤのシナプスメモリの中に、ＮＩＤ固有のデータ構造をポインタと共に含み、ＮＩＤの第１のＮＩＤデータ構造と第２のＮＩＤの第２のＮＩＤデータ構造とが、同じシナプスメモリ空間を指し示すポインタを含むこと、を含む。
【０１９６】
例３１において、例２９〜例３０の主題は、第２のニューロンメモリを確立するステップが、第１のニューロンメモリをコピーするステップを含むこと、を含む。
【０１９７】
例３２において、例２９〜例３１の主題は、第２のニューロンメモリを確立するステップが、第１のニューロンメモリからコピーされたニューロンのニューラル状態をランダム化するステップを含むこと、を含む。
【０１９８】
例３３において、例１８〜例３２の主題は、第１のＮＩＤに対応する訓練イベントに基づいてシナプスデータ内のシナプス構造を更新するステップ、を含む。
【０１９９】
例３４において、例３３の主題は、ＮＩＤに対応するニューラルネットワークと同時に第２のＮＩＤに対応するニューラルネットワークを呼び出すステップ、を含み、第２のＮＩＤに対応するニューラルネットワークとＮＩＤに対応するニューラルネットワークの両方がシナプス構造を使用する。
【０２００】
例３５は、ニューロモルフィック・アクセラレータ・マルチタスキングのための命令を含む少なくとも１つの機械可読媒体であり、命令は、処理回路によって実行されると、処理回路に、ニューロンアドレス変換ユニット（ＮＡＴＵ）において、スパイクを生じさせたニューロンの物理ニューロン識別子（ＰＮＩＤ）を含むスパイクメッセージを受信する動作と、ＮＡＴＵが、ＰＮＩＤをネットワーク識別子（ＮＩＤ）とローカルニューロン識別子（ＬＮＩＤ）とに変換する動作と、ＮＡＴＵが、ＮＩＤに基づいてシナプスデータを見つける動作と、ＮＡＴＵが、シナプスデータおよびＬＮＩＤを軸索プロセッサに伝達する動作と、を含む動作を行わせる。
【０２０１】
例３６において、例３５の主題は、シナプスデータがメモリアドレス範囲を含むこと、を含む。
【０２０２】
例３７において、例３５〜例３６の主題は、ＰＮＩＤをＮＩＤとＬＮＩＤとに変換する動作が、ＰＮＩＤを、各ＰＮＩＤ範囲が一意のＮＩＤに対応するＰＮＩＤ範囲のセットと比較する動作を含むこと、を含む。
【０２０３】
例３８において、例３５〜例３７の主題は、ＬＮＩＤが、ＰＮＩＤからＰＮＩＤ＿ｂｅｇｉｎ値を減算することによって計算され、ＰＮＩＤ範囲のセットのメンバが、ＮＩＤに対応する最小のＰＮＩＤと最大のＰＮＩＤとをそれぞれ保持するＰＮＩＤ＿ｂｅｇｉｎとＰＮＩＤ＿ｅｎｄとの対を含むこと、を含む。
【０２０４】
例３９において、例３５〜例３８の主題は、ＰＮＩＤをＮＩＤとＬＮＩＤとに変換する動作が、ＰＮＩＤの一端からＮＩＤ長に対応するいくつかのビットを除去する動作を含むこと、を含む。
【０２０５】
例４０において、例３５〜例３９の主題は、ＮＡＴＵが軸索プロセッサと共にパッケージ化されていること、を含む。
【０２０６】
例４１において、例３５〜例４０の主題は、軸索プロセッサが、相互接続を介して軸索プロセッサに接続されたニューラル・プロセッサ・クラスタを含むシステムの一部であること、を含む。
【０２０７】
例４２において、例４１の主題は、動作が、軸索プロセッサが、シナプスデータから見つかったシナプス構造に基づいて、第２のスパイクメッセージがＬＮＩＤにアドレス指定されていると判断する動作と、ＮＡＴＵが、シナプスデータに対応するＮＩＤを使用してＬＮＩＤをＰＮＩＤに変換する動作と、ニューロンを識別するためにＰＮＩＤを使用して第２のスパイクメッセージを軸索プロセッサに伝達する動作と、を含むこと、を含む。
【０２０８】
例４３において、例４２の主題は、ＰＮＩＤが、ＬＮＩＤにＰＮＩＤ＿ｂｅｇｉｎ値を加算することによって計算され、ＰＮＩＤ＿ｂｅｇｉｎ値がＮＩＤのＰＮＩＤ範囲に対応すること、を含む。
【０２０９】
例４４において、例４２〜例４３の主題は、ＬＮＩＤをＰＮＩＤに変換する動作が、ＮＩＤをＬＮＩＤの一端に連結する動作を含むこと、を含む。
【０２１０】
例４５において、例４１〜例４４の主題は、システムが、システムの構成要素に電力を供給する電源を備え、電源が、商用電源またはバッテリを介して電力を供給するインターフェースを有する。
【０２１１】
例４６において、例３５〜例４５の主題は、動作が、ＮＩＤを含むニューラル・ネットワーク・クローン指示を受信する動作と、ＮＩＤに対応する第１のニューロンメモリと等価の第２のニューロンメモリを、ニューロンメモリを含むメモリの第２の領域に確立する動作と、第２のニューロンメモリに第２のＮＩＤを割り当てる動作と、第２のＮＩＤとシナプスデータとの間の対応関係を作成するために第２のＮＩＤについてのＮＡＴＵ情報を更新する動作と、を含むこと、を含む。
【０２１２】
例４７において、例４６の主題は、ＮＡＴＵ情報が、所与のＮＩＤのシナプスメモリの中に、ＮＩＤ固有のデータ構造をポインタと共に含み、ＮＩＤの第１のＮＩＤデータ構造と第２のＮＩＤの第２のＮＩＤデータ構造とが、同じシナプスメモリ空間を指し示すポインタを含むこと、を含む。
【０２１３】
例４８において、例４６〜例４７の主題は、第２のニューロンメモリを確立する動作が、第１のニューロンメモリをコピーする動作を含むこと、を含む。
【０２１４】
例４９において、例４６〜例４８の主題は、第２のニューロンメモリを確立する動作が、第１のニューロンメモリからコピーされたニューロンのニューラル状態をランダム化する動作を含むこと、を含む。
【０２１５】
例５０において、例３５〜例４９の主題は、動作が、第１のＮＩＤに対応する訓練イベントに基づいてシナプスデータ内のシナプス構造を更新する動作を含むこと、を含む。
【０２１６】
例５１において、例５０の主題は、動作が、ＮＩＤに対応するニューラルネットワークと同時に第２のＮＩＤに対応するニューラルネットワークを呼び出す動作を含み、第２のＮＩＤに対応するニューラルネットワークとＮＩＤに対応するニューラルネットワークの両方がシナプス構造を使用すること、を含む。
【０２１７】
例５２は、ニューロモルフィック・アクセラレータ・マルチタスキングのためのシステムであり、本システムは、スパイクを生じさせたニューロンの物理ニューロン識別子（ＰＮＩＤ）を含むスパイクメッセージを受信する手段と、ＰＮＩＤをネットワーク識別子（ＮＩＤ）とローカルニューロン識別子（ＬＮＩＤ）とに変換する手段と、ＮＩＤに基づいてシナプスデータを見つける手段と、シナプスデータおよびＬＮＩＤを軸索プロセッサに伝達する手段と、を備える。
【０２１８】
例５３において、例５２の主題は、シナプスデータがメモリアドレス範囲を含むこと、を含む。
【０２１９】
例５４において、例５２〜例５３の主題は、ＰＮＩＤをＮＩＤとＬＮＩＤとに変換する手段が、ＰＮＩＤを、各ＰＮＩＤ範囲が一意のＮＩＤに対応するＰＮＩＤ範囲のセットと比較する手段を備えること、を含む。
【０２２０】
例５５において、例５２〜例５４の主題は、ＬＮＩＤが、ＰＮＩＤからＰＮＩＤ＿ｂｅｇｉｎ値を減算することによって計算され、ＰＮＩＤ範囲のセットのメンバが、ＮＩＤに対応する最小のＰＮＩＤと最大のＰＮＩＤとをそれぞれ保持するＰＮＩＤ＿ｂｅｇｉｎとＰＮＩＤ＿ｅｎｄとの対を含むこと、を含む。
【０２２１】
例５６において、例５２〜例５５の主題は、ＰＮＩＤをＮＩＤとＬＮＩＤとに変換する手段が、ＰＮＩＤの一端からＮＩＤ長に対応するいくつかのビットを除去する手段を備えること、を含む。
【０２２２】
例５７において、例５２〜例５６の主題は、ＰＮＩＤを変換する手段が、軸索プロセッサと共ににパッケージ化されていること、を含む。
【０２２３】
例５８において、例５２〜例５７の主題は、軸索プロセッサと、相互接続を介して軸索プロセッサに接続されたニューラル・プロセッサ・クラスタと、を備える。
【０２２４】
例５９において、例５８の主題は、軸索プロセッサが、シナプスデータから見つかったシナプス構造に基づいて、第２のスパイクメッセージがＬＮＩＤにアドレス指定されていると判断する手段と、シナプスデータに対応するＮＩＤを使用してＬＮＩＤをＰＮＩＤに変換する手段と、ニューロンを識別するためにＰＮＩＤを使用して第２のスパイクメッセージを軸索プロセッサに伝達する手段と、を備える。
【０２２５】
例６０において、例５９の主題は、ＰＮＩＤが、ＬＮＩＤにＰＮＩＤ＿ｂｅｇｉｎ値を加算することによって計算され、ＰＮＩＤ＿ｂｅｇｉｎ値がＮＩＤのＰＮＩＤ範囲に対応すること、を含む。
【０２２６】
例６１において、例５９〜例６０の主題は、ＬＮＩＤをＰＮＩＤに変換する手段が、ＮＩＤをＬＮＩＤの一端に連結する手段を備えること、を含む。
【０２２７】
例６２において、例５８〜例６１の主題は、システムの構成要素に電力を供給する電源を備え、電源が、商用電源またはバッテリを介して電力を供給するインターフェースを有する。
【０２２８】
例６３において、例５２〜例６２の主題は、ＮＩＤを含むニューラル・ネットワーク・クローン指示を受信する手段と、ＮＩＤに対応する第１のニューロンメモリと等価の第２のニューロンメモリを、ニューロンメモリを含むメモリの第２の領域に確立する手段と、第２のニューロンメモリに第２のＮＩＤを割り当てる手段と、第２のＮＩＤとシナプスデータとの間の対応関係を作成するために第２のＮＩＤについての変換情報を更新する手段と、を備える。
【０２２９】
例６４において、例６３の主題は、変換情報が、所与のＮＩＤのシナプスメモリの中に、ＮＩＤ固有のデータ構造をポインタと共に含み、ＮＩＤの第１のＮＩＤデータ構造と第２のＮＩＤの第２のＮＩＤデータ構造とが、同じシナプスメモリ空間を指し示すポインタを含むこと、を含む。
【０２３０】
例６５において、例６３〜例６４の主題は、第２のニューロンメモリを確立する手段が、第１のニューロンメモリをコピーする手段を備えること、を含む。
【０２３１】
例６６において、例６３〜例６５の主題は、第２のニューロンメモリを確立する手段が、第１のニューロンメモリからコピーされたニューロンのニューラル状態をランダム化する手段を備えること、を含む。
【０２３２】
例６７において、例５２〜例６６の主題は、第１のＮＩＤに対応する訓練イベントに基づいてシナプスデータ内のシナプス構造を更新する手段、を備える。
【０２３３】
例６８において、例６７の主題は、ＮＩＤに対応するニューラルネットワークと同時に第２のＮＩＤに対応するニューラルネットワークを呼び出す手段、を備え、第２のＮＩＤに対応するニューラルネットワークとＮＩＤに対応するニューラルネットワークの両方がシナプス構造を使用する。
【０２３４】
例６９は、処理回路によって実行されると、処理回路に、例１〜例６８のいずれかに記載の実施動作を行わせる命令を含む少なくとも１つの機械可読媒体である。
【０２３５】
例７０は、例１〜例６８のいずれかに記載の実施手段を備える装置である。
【０２３６】
例７１は、例１〜例６８のいずれかに記載の実施システムである。
【０２３７】
例７２は、例１〜例６８のいずれかに記載の実施方法である。
【０２３８】
上述した詳細な説明は、詳細な説明の一部を形成する添付の図面への参照を含む。図面には、例示として、実施され得る特定の実施形態が示されている。これらの実施形態を、本明細書では「例」とも呼ぶ。そのような例は、図示または記載の要素以外の要素を含み得る。しかしながら、本発明者らはまた、図示または記載の要素のみが設けられた例も企図している。さらに、本発明者らはまた、特定の例（またはそれらの１つもしくは複数の態様）に関する、または本明細書で図示もしくは説明した他の例（またはそれらの１つもしくは複数の態様）に関する、図示または記載の要素（またはそれらの１つもしくは複数の態様）の任意の組み合わせまたは置換を使用した例も企図している。
【０２３９】
上記の説明は、限定のためではなく、例示的のためのものである。例えば、上述した例（またはその１つもしくは複数の態様）は、互いに組み合わせて使用され得る。上記の説明を考察すれば、当業者などは、他の実施形態を使用できよう。要約書は、読者が本技術的開示の本質を迅速に確認することを可能にするためのものであり、特許請求の範囲または意味を解釈または限定するために使用されることはないという理解の下に提出される。また、上記の詳細な説明では、開示を簡素化するために様々な特徴がまとめてグループ化されている場合もある。これは、特許請求されていない開示の特徴がいずれかの請求に不可欠であると意図しているものとして解釈されるべきではない。むしろ、発明の主題は、特定の開示の実施形態のすべてのより少ない特徴に存在し得る。よって、添付の特許請求の範囲は、これにより詳細な説明に組み入れられ、各請求項は別々の実施形態として独立したものである。実施形態の範囲は、添付の特許請求の範囲を、そのような特許請求の範囲が権利を付与される均等物の全範囲と共に参照して決定されるべきである。
（項目１）
ニューロモルフィック・アクセラレータ・マルチタスキングのためのシステムであって、
軸索プロセッサと、
ニューロンアドレス変換回路（ＮＡＴＣ）と、を備え、上記ＮＡＴＣが、
スパイクを生じさせたニューロンの物理ニューロン識別子（ＰＮＩＤ）を含むスパイクメッセージを受信する第１のインターフェースと、
処理回路であって、
上記ＰＮＩＤをネットワーク識別子（ＮＩＤ）とローカルニューロン識別子（ＬＮＩＤ）とに変換し、
上記ＮＩＤに基づいてシナプスデータを見つける
処理回路と、
上記シナプスデータおよび上記ＬＮＩＤを上記軸索プロセッサに伝達する第２のインターフェースと
を備える、システム。
（項目２）
上記シナプスデータがメモリアドレス範囲を含む、項目１に記載のシステム。
（項目３）
上記ＰＮＩＤを上記ＮＩＤと上記ＬＮＩＤとに変換するために、上記処理回路が上記ＰＮＩＤを、各ＰＮＩＤ範囲が一意のＮＩＤに対応する複数のＰＮＩＤ範囲と比較する、項目１に記載のシステム。
（項目４）
上記ＬＮＩＤが、上記ＰＮＩＤからＰＮＩＤ＿ｂｅｇｉｎ値を減算することによって計算され、上記複数のＰＮＩＤ範囲のメンバが、ＮＩＤに対応する最小のＰＮＩＤと最大のＰＮＩＤとをそれぞれ保持するＰＮＩＤ＿ｂｅｇｉｎとＰＮＩＤ＿ｅｎｄとの対を含む、項目１に記載のシステム。
（項目５）
相互接続を介して上記軸索プロセッサに接続されたニューラル・プロセッサ・クラスタを備える、項目１に記載のシステム。
（項目６）
上記システムの構成要素に電力を供給する電源を備え、前記電源が、商用電源またはバッテリを介して電力を供給するインターフェースを有する、項目５に記載のシステム。
（項目７）
ニューロンデータを格納するニューロンデータ領域と上記ＮＩＤに対応する第１のニューロンメモリ領域とを有するメモリと、
ニューロンプロセッサ制御回路であって
上記ＮＩＤを含むニューラル・ネットワーク・クローン指示を受信し、
上記ニューラル・ネットワーク・クローン指示を受信したことに応答して、上記メモリの上記ニューロンデータ領域において、上記第１のニューロンメモリ領域と等価である第２のニューロンメモリ領域を確立する
ニューロンプロセッサ制御回路と
を備え、
上記処理回路が、上記第２のニューロンメモリ領域が確立されたことに応答して、さらに、
上記第２のニューロンメモリ領域に第２のＮＩＤを割り当て、
上記第２のＮＩＤと上記シナプスデータとの間の対応関係を作成するために上記第２のＮＩＤについての変換情報を更新する、項目１に記載のシステム。
（項目８）
上記変換情報が、所与のＮＩＤのシナプスメモリの中に、ＮＩＤ固有のデータ構造をポインタと共に含み、上記ＮＩＤの第１のＮＩＤデータ構造と上記第２のＮＩＤの第２のＮＩＤデータ構造とが、同じシナプスメモリ空間を指し示すポインタを含む、項目７に記載のシステム。
（項目９）
上記軸索プロセッサが、上記第１のＮＩＤに対応する訓練イベントに基づいて上記シナプスデータ内のシナプス構造を更新する、項目１に記載のシステム。
（項目１０）
ニューロモルフィック・アクセラレータ・マルチタスキングのための方法であって、
ニューロンアドレス変換ユニット（ＮＡＴＣ）において、スパイクを生じさせたニューロンの物理ニューロン識別子（ＰＮＩＤ）を含むスパイクメッセージを受信するステップと、
上記ＮＡＴＣが、上記ＰＮＩＤをネットワーク識別子（ＮＩＤ）とローカルニューロン識別子（ＬＮＩＤ）とに変換するステップと、
上記ＮＡＴＣが、上記ＮＩＤに基づいてシナプスデータを見つけるステップと、
上記ＮＡＴＣが、上記シナプスデータおよび上記ＬＮＩＤを軸索プロセッサに伝達するステップと
を備える、方法。
（項目１１）
上記ＰＮＩＤを上記ＮＩＤと上記ＬＮＩＤとに変換する上記ステップが、上記ＰＮＩＤを、各ＰＮＩＤ範囲が一意のＮＩＤに対応する複数のＰＮＩＤ範囲と比較するステップを含む、項目１０に記載の方法。
（項目１２）
上記ＬＮＩＤが、上記ＰＮＩＤからＰＮＩＤ＿ｂｅｇｉｎ値を減算することによって計算され、上記複数のＰＮＩＤ範囲のメンバが、ＮＩＤに対応する最小のＰＮＩＤと最大のＰＮＩＤとをそれぞれ保持するＰＮＩＤ＿ｂｅｇｉｎとＰＮＩＤ＿ｅｎｄとの対を含む、項目１０に記載の方法。
（項目１３）
上記軸索プロセッサが、相互接続を介して上記軸索プロセッサに接続されたニューラル・プロセッサ・クラスタを含むシステムの一部である、項目１０に記載の方法。
（項目１４）
上記システムが、上記システムの構成要素に電力を供給する電源を備え、前記電源が、商用電源またはバッテリを介して電力を供給するインターフェースを有する、項目１３に記載の方法。
（項目１５）
上記ＮＩＤを含むニューラル・ネットワーク・クローン指示を受信するステップと、
上記ＮＩＤに対応する第１のニューロンメモリと等価の第２のニューロンメモリを、ニューロンメモリを含むメモリの第２の領域に確立するステップと、
上記第２のニューロンメモリに第２のＮＩＤを割り当てるステップと、
上記第２のＮＩＤと上記シナプスデータとの間の対応関係を作成するための第２のＮＩＤについてのＮＡＴＣ情報を更新するステップと
を備える、項目１０に記載の方法。
（項目１６）
上記ＮＡＴＣ情報が、所与のＮＩＤのシナプスメモリの中に、ＮＩＤ固有のデータ構造をポインタと共に含み、上記ＮＩＤの第１のＮＩＤデータ構造と上記第２のＮＩＤの第２のＮＩＤデータ構造とが、同じシナプスメモリ空間を指し示すポインタを含む、項目１５に記載の方法。
（項目１７）
処理回路によって実行されると、上記処理回路に、
ニューロンアドレス変換ユニット（ＮＡＴＣ）において、スパイクを生じさせたニューロンの物理ニューロン識別子（ＰＮＩＤ）を含むスパイクメッセージを受信する動作と、
上記ＮＡＴＣが、上記ＰＮＩＤをネットワーク識別子（ＮＩＤ）とローカルニューロン識別子（ＬＮＩＤ）とに変換する動作と、
上記ＮＡＴＣが、上記ＮＩＤに基づいてシナプスデータを見つける動作と、
上記ＮＡＴＣが、上記シナプスデータおよび上記ＬＮＩＤを軸索プロセッサに伝達する動作と
を含む動作を行わせる、ニューロモルフィック・アクセラレータ・マルチタスキングのための命令を含む少なくとも１つの機械可読媒体。
（項目１８）
上記シナプスデータがメモリアドレス範囲を含む、項目１７に記載の少なくとも１つの機械可読媒体。
（項目１９）
上記ＰＮＩＤを上記ＮＩＤと上記ＬＮＩＤとに変換する上記動作が、上記ＰＮＩＤを、各ＰＮＩＤ範囲が一意のＮＩＤに対応する複数のＰＮＩＤ範囲と比較する動作を含む、項目１７に記載の少なくとも１つの機械可読媒体。
（項目２０）
上記ＬＮＩＤが、上記ＰＮＩＤからＰＮＩＤ＿ｂｅｇｉｎ値を減算することによって計算され、上記複数のＰＮＩＤ範囲のメンバが、ＮＩＤに対応する最小のＰＮＩＤと最大のＰＮＩＤとをそれぞれ保持するＰＮＩＤ＿ｂｅｇｉｎとＰＮＩＤ＿ｅｎｄとの対を含む、項目１７に記載の少なくとも１つの機械可読媒体。
（項目２１）
上記軸索プロセッサが、相互接続を介して上記軸索プロセッサに接続されたニューラル・プロセッサ・クラスタを含むシステムの一部である、項目１７に記載の少なくとも１つの機械可読媒体。
（項目２２）
上記システムが、上記システムの構成要素に電力を供給する電源を備え、上記電源が、商用電源またはバッテリを介して電力を供給するインターフェースを有する、項目２１に記載の少なくとも１つの機械可読媒体。
（項目２３）
上記動作が、
上記ＮＩＤを含むニューラル・ネットワーク・クローン指示を受信する動作と、
上記ＮＩＤに対応する第１のニューロンメモリと等価の第２のニューロンメモリを、ニューロンメモリを含むメモリの第２の領域に確立する動作と、
上記第２のニューロンメモリに第２のＮＩＤを割り当てる動作と、
上記第２のＮＩＤと上記シナプスデータとの間の対応関係を作成するための第２のＮＩＤについてのＮＡＴＣ情報を更新する動作と
を含む、項目１７に記載の少なくとも１つの機械可読媒体。
（項目２４）
上記ＮＡＴＣ情報が、所与のＮＩＤのシナプスメモリの中に、ＮＩＤ固有のデータ構造をポインタと共に含み、上記ＮＩＤの第１のＮＩＤデータ構造と上記第２のＮＩＤの第２のＮＩＤデータ構造とが、同じシナプスメモリ空間を指し示すポインタを含む、項目２３に記載の少なくとも１つの機械可読媒体。
（項目２５）
上記動作が、上記第１のＮＩＤに対応する訓練イベントに基づいて上記シナプスデータ内のシナプス構造を更新する動作を含む、項目１７に記載の少なくとも１つの機械可読媒体。
【図１】
2019204492.tif 000003
【図２】
2019204492.tif 000004
【図３】
2019204492.tif 000005
【図４Ａ】
2019204492.tif 000006
【図４Ｂ】
2019204492.tif 000007
【図５】
2019204492.tif 000008
【図６Ａ】
2019204492.tif 000009
【図６Ｂ】
2019204492.tif 000010
【図７】
2019204492.tif 000011
【図８Ａ】
2019204492.tif 000012
【図８Ｂ】
2019204492.tif 000013
【図８Ｃ】
2019204492.tif 000014
【図９】
2019204492.tif 000015
【図１０】
2019204492.tif 000016
【図１１】
2019204492.tif 000017
【図１２】
2019204492.tif 000018
【図１３】
2019204492.tif 000019
【図１４Ａ】
2019204492.tif 000020
【図１４Ｂ】
2019204492.tif 000021
【図１５】
2019204492.tif 000022
【図１６】
2019204492.tif 000023
【図１７】
2019204492.tif 000024
【図１８】
2019204492.tif 000025
【図１９】
2019204492.tif 000026
【図２０】
2019204492.tif 000027
【外国語明細書】
2019204492000001.pdf