(57)【要約】  装置は、複数の並列コンピューティングコア（１０２）を含み、各コンピューティングコアが、１つ以上のプロセッシング処理を実行して入力データを生成するように構成される。装置はまた、各コンピューティングコアに付随する複数の並列コプロセッサ（１１２）を含む。各コンピューティングコアが、該コンピューティングコアによって生成された入力データを、コンピューティングコアの各々に付随する当該コプロセッサのうちの指定された１つに提供するように構成される。コプロセッサは、入力データを処理して出力データを生成するように構成される。装置は更に、複数のリデューサ回路（１１５）を含む。各コンピューティングコアに、リデューサ回路のうちの１つが付随する。各リデューサ回路が、付随するコンピューティングコアのコプロセッサの各々から出力データを受信し、出力データに１つ以上の関数を適用し、そして、１つ以上の結果を付随するコンピューティングコアに提供するように構成される。コンピューティングコア、コプロセッサ、及びリデューサ回路が、２次元レイアウトにて横に並べて配置される。
2020517000.tif 000002
【特許請求の範囲】
【請求項１】
複数の並列コンピューティングコアであり、各コンピューティングコアが、１つ以上のプロセッシング処理を実行して入力データを生成するように構成される、複数の並列コンピューティングコアと、
各コンピューティングコアに付随する複数の並列コプロセッサであり、各コンピューティングコアが、該コンピューティングコアによって生成された前記入力データを、前記コンピューティングコアの各々に付随する当該コプロセッサのうちの指定された１つに提供するように構成され、当該コプロセッサは、前記入力データを処理して出力データを生成するように構成される、複数の並列コプロセッサと、
複数のリデューサ回路であり、各コンピューティングコアに当該リデューサ回路のうちの１つが付随し、各リデューサ回路が、付随する前記コンピューティングコアの前記コプロセッサの各々から前記出力データを受信し、前記出力データに１つ以上の関数を適用し、そして、１つ以上の結果を付随する前記コンピューティングコアに提供するように構成される、複数のリデューサ回路と、
を有し、
前記コンピューティングコア、前記コプロセッサ、及び前記リデューサ回路が、２次元レイアウトにて横に並べて配置される、
装置。
【請求項２】
前記コプロセッサ及び前記リデューサ回路は、ロウ及びカラムに配列され、各カラムが前記コンピューティングコアのうちの異なる１つに付随する、請求項１に記載の装置。
【請求項３】
前記コンピューティングコアの全てを前記カラムの全て内のコプロセッサに通信可能に結合する複数の信号ライン、
を更に有する請求項２に記載の装置。
【請求項４】
前記複数の並列コンピューティングコアはＮ個のコンピューティングコアを有し、且つ
各コンピューティングコアにＮ個の並列コプロセッサが付随する、
請求項１に記載の装置。
【請求項５】
前記複数の並列コンピューティングコアは少なくとも１６個のコンピューティングコアを有し、且つ
各コンピューティングコアに少なくとも１６個の並列コプロセッサが付随する、
請求項１に記載の装置。
【請求項６】
前記コンピューティングコアは第１の集積回路チップ内にあり、且つ
前記コプロセッサは第２の集積回路チップ内にある、
請求項１に記載の装置。
【請求項７】
前記第１の集積回路チップと前記第２の集積回路チップとを結合する少なくとも１つの通信リンク、
を更に有する請求項６に記載の装置。
【請求項８】
前記第１の集積回路チップ内の前記コンピューティングコアは、複数の異なる第２の集積回路チップ内の異なる個数又はタイプのコプロセッサと通信するように構成されることと、
前記第２の集積回路チップ内の前記コプロセッサは、複数の異なる第１の集積回路チップ内の異なる個数又はタイプのコンピューティングコアと通信するように構成されることと、
のうちの少なくとも一方である、請求項６に記載の装置。
【請求項９】
各リデューサ回路が、プロセッシング回路及びメモリを有する、請求項１に記載の装置。
【請求項１０】
複数の並列コンピューティングコアであり、各コンピューティングコアが、１つ以上のプロセッシング処理を実行して入力データを生成するように構成される、複数の並列コンピューティングコアと、
各コンピューティングコアに付随する複数の並列コプロセッサであり、各コンピューティングコアが、該コンピューティングコアによって生成された前記入力データを、前記コンピューティングコアの各々に付随する当該コプロセッサのうちの指定された１つに提供するように構成され、当該コプロセッサは、前記入力データを処理して出力データを生成するように構成される、複数の並列コプロセッサと、
を有し、
各コンピューティングコアの前記コプロセッサのうちのサブセット内の前記コプロセッサはまた、前記出力データに対して１つ以上の関数を集合的に適用するように構成され、前記サブセット内の前記コプロセッサのうちの１つが更に、付随する前記コンピューティングコアに１つ以上の結果を提供するように構成される、
装置。
【請求項１１】
前記コンピューティングコア及び前記コプロセッサが、２次元レイアウトにて横に並べて配置される、請求項１０に記載の装置。
【請求項１２】
前記コプロセッサはロウ及びカラムに配列され、各カラムが前記コンピューティングコアのうちの異なる１つに付随する、請求項１に記載の装置。
【請求項１３】
前記コンピューティングコアの全てを前記カラムの全て内のコプロセッサに通信可能に結合する複数の信号ライン、
を更に有する請求項１２に記載の装置。
【請求項１４】
前記複数の並列コンピューティングコアはＮ個のコンピューティングコアを有し、且つ
各コンピューティングコアにＮ個の並列コプロセッサが付随する、
請求項１０に記載の装置。
【請求項１５】
前記複数の並列コンピューティングコアは少なくとも１６個のコンピューティングコアを有し、且つ
各コンピューティングコアに少なくとも１６個の並列コプロセッサが付随する、
請求項１０に記載の装置。
【請求項１６】
前記コンピューティングコアは第１の集積回路チップ内にあり、且つ
前記コプロセッサは第２の集積回路チップ内にある、
請求項１０に記載の装置。
【請求項１７】
前記第１の集積回路チップと前記第２の集積回路チップとを結合する少なくとも１つの通信リンク、
を更に有する請求項１６に記載の装置。
【請求項１８】
前記第１の集積回路チップ内の前記コンピューティングコアは、複数の異なる第２の集積回路チップ内の異なる個数又はタイプのコプロセッサと通信するように構成されることと、
前記第２の集積回路チップ内の前記コプロセッサは、複数の異なる第１の集積回路チップ内の異なる個数又はタイプのコンピューティングコアと通信するように構成されることと、
のうちの少なくとも一方である、請求項１６に記載の装置。
【請求項１９】
Ｎ個の並列コンピューティングコアであり、各コンピューティングコアが、１つ以上のプロセッシング処理を実行して入力データを生成するように構成される、Ｎ個の並列コンピューティングコアと、
Ｎ×Ｎ個のコプロセッサであり、各コンピューティングコアにＮ個の並列コプロセッサが付随し、各コンピューティングコアが、該コンピューティングコアによって生成された前記入力データを、前記コンピューティングコアの各々に付随する当該コプロセッサのうちの指定された１つに提供するように構成され、当該コプロセッサは、前記入力データを処理して出力データを生成するように構成される、Ｎ×Ｎ個のコプロセッサと、
Ｎ個のリデューサ回路であり、各コンピューティングコアに当該リデューサ回路のうちの１つが付随し、各リデューサ回路が、付随する前記コンピューティングコアの前記コプロセッサの各々から前記出力データを受信し、前記出力データに１つ以上の関数を適用し、そして、１つ以上の結果を付随する前記コンピューティングコアに提供するように構成される、Ｎ個のリデューサ回路と、
を有し、
前記コンピューティングコア、前記コプロセッサ、及び前記リデューサ回路が、２次元レイアウトにて横に並べて配置され、且つ
Ｎは、少なくとも１６という値を持つ整数である、
装置。
【請求項２０】
複数のコンピューティングコアであり、各コンピューティングコアが、１つ以上のプロセッシング処理を実行して入力データを生成するように構成される、複数のコンピューティングコアと、
各コンピューティングコアに付随する複数のコプロセッサであり、各コプロセッサが、前記コンピューティングコアのうちの少なくとも１つから前記入力データを受信し、前記入力データを処理して出力データを生成するように構成される、複数のコプロセッサと、
複数のリデューサ回路であり、各リデューサ回路が、付随するコンピューティングコアの前記コプロセッサの各々から前記出力データを受信し、前記出力データに１つ以上の関数を適用し、そして、１つ以上の結果を付随する前記コンピューティングコアに提供するように構成される、複数のリデューサ回路と、
前記コンピューティングコアと前記コンピューティングコアに付随する前記コプロセッサとを通信可能に結合する複数の通信リンクと、
を有する装置。
【請求項２１】
各コンピューティングコアに対して、前記通信リンクは、該コンピューティングコアとそれに付随するコプロセッサとの間の直接接続を有する、請求項２０に記載の装置。
【請求項２２】
各コンピューティングコアに対して、
該コンピューティングコアに付随するコプロセッサが、１つ以上のチェーンで共に結び付けられ、且つ
前記通信リンクは、該コンピューティングコアと前記１つ以上のチェーンの先頭の１つ以上のコプロセッサとの間の１つ以上の直接接続を有する、
請求項２０に記載の装置。
【請求項２３】
各コンピューティングコアに対して、
前記通信リンクは、該コンピューティングコアと該コンピューティングコアに付随する前記コプロセッサのうちの１つとの間の直接接続を有し、且つ
前記コプロセッサのうちの前記１つは、該コンピューティングコアに付随する複数の更なるコプロセッサに結合される、
請求項２０に記載の装置。
【請求項２４】
前記コンピューティングコアの各々に付随する前記コプロセッサがツリー状に配置される、請求項２０に記載の装置。
【請求項２５】
前記通信リンクは、共有リソースへのリンクを有し、前記共有リソースは、前記コンピューティングコアからの前記入力データを格納し、且つ前記入力データを前記コプロセッサに提供するように構成される、請求項２０に記載の装置。
【請求項２６】
前記共有リソースは共有メモリを有する、請求項２５に記載の装置。
【請求項２７】
前記共有メモリは、複数のメモリアドレスを持つ複数のメモリロケーションを有し、
前記コンピューティングコアは、前記入力データを複数の異なるメモリアドレスに書き込むように構成され、且つ
前記コプロセッサは、前記複数の異なるメモリアドレスから前記入力データを読み出すように構成される、
請求項２６に記載の装置。
【請求項２８】
複数のコンピューティングコアであり、各コンピューティングコアが、１つ以上のプロセッシング処理を実行して入力データを生成するように構成される、複数のコンピューティングコアと、
各コンピューティングコアに付随する複数のコプロセッサであり、各コプロセッサが、前記コンピューティングコアのうちの少なくとも１つから前記入力データを受信し、前記入力データを処理して出力データを生成するように構成される、複数のコプロセッサと、
前記コンピューティングコアと前記コンピューティングコアに付随する前記コプロセッサとを通信可能に結合する複数の通信リンクと、
を有し、
各コンピューティングコアの前記コプロセッサのうちのサブセット内の前記コプロセッサはまた、前記出力データに対して１つ以上の関数を集合的に適用するように構成され、前記サブセット内の前記コプロセッサのうちの１つが更に、付随する前記コンピューティングコアに１つ以上の結果を提供するように構成される、
装置。
【請求項２９】
各コンピューティングコアに対して、前記通信リンクは、該コンピューティングコアとそれに付随するコプロセッサとの間の直接接続を有する、請求項２８に記載の装置。
【請求項３０】
各コンピューティングコアに対して、
該コンピューティングコアに付随するコプロセッサが、１つ以上のチェーンで共に結び付けられ、且つ
前記通信リンクは、該コンピューティングコアと前記１つ以上のチェーンの先頭の１つ以上のコプロセッサとの間の１つ以上の直接接続を有する、
請求項２８に記載の装置。
【請求項３１】
各コンピューティングコアに対して、
前記通信リンクは、該コンピューティングコアと該コンピューティングコアに付随する前記コプロセッサのうちの１つとの間の直接接続を有し、且つ
前記コプロセッサのうちの前記１つは、該コンピューティングコアに付随する複数の更なるコプロセッサに結合される、
請求項２８に記載の装置。
【請求項３２】
前記コンピューティングコアの各々に付随する前記コプロセッサがツリー状に配置される、請求項２８に記載の装置。
【請求項３３】
前記通信リンクは、共有リソースへのリンクを有し、前記共有リソースは、前記コンピューティングコアからの前記入力データを格納し、且つ前記入力データを前記コプロセッサに提供するように構成される、請求項２８に記載の装置。
【請求項３４】
前記共有リソースは共有メモリを有する、請求項３３に記載の装置。
【請求項３５】
前記共有メモリは、複数のメモリアドレスを持つ複数のメモリロケーションを有し、
前記コンピューティングコアは、前記入力データを複数の異なるメモリアドレスに書き込むように構成され、且つ
前記コプロセッサは、前記複数の異なるメモリアドレスから前記入力データを読み出すように構成される、
請求項３４に記載の装置。
【請求項３６】
Ｎ個の並列コンピューティングコアであり、各コンピューティングコアが、１つ以上のプロセッシング処理を実行して入力データを生成するように構成される、Ｎ個の並列コンピューティングコアと、
Ｎ×Ｎ個のコプロセッサであり、各コンピューティングコアにＮ個の並列コプロセッサが付随し、各コプロセッサが、前記コンピューティングコアのうちの少なくとも１つから前記入力データを受信し、前記入力データを処理して出力データを生成するように構成される、Ｎ×Ｎ個のコプロセッサと、
Ｎ個のリデューサ回路であり、各コンピューティングコアに当該リデューサ回路のうちの１つが付随し、各リデューサ回路が、付随する前記コンピューティングコアの前記コプロセッサの各々から前記出力データを受信し、前記出力データに１つ以上の関数を適用し、そして、１つ以上の結果を付随する前記コンピューティングコアに提供するように構成される、Ｎ個のリデューサ回路と、
前記コンピューティングコアと前記コンピューティングコアに付随する前記コプロセッサとを通信可能に結合する複数の通信リンクと、
を有し、
前記通信リンクは、共有メモリへのリンクを有し、前記共有メモリは、前記コンピューティングコアからの前記入力データを格納し、且つ前記入力データを前記コプロセッサに提供するように構成され、
前記共有メモリは、複数のメモリアドレスを持つ複数のメモリロケーションを有し、
前記コンピューティングコアは、前記入力データを複数の異なるメモリアドレスに書き込むように構成され、且つ
前記コプロセッサは、前記複数の異なるメモリアドレスから前記入力データを読み出すように構成される、
装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は概して、コンピューティング装置及びコンピューティングシステム用のハードウェアアーキテクチャに関する。より具体的には、本開示は、例えば人工知能で使用されるものなどの高度なコンピューティング機能をサポートすることができる汎用並列コンピューティングアーキテクチャに関する。
【背景技術】
【０００２】
ヒトの脳は、典型的に、１，０００兆個のシナプスによって接続された約１，０００億個のニューロンを含んだ、甚だしく並列なシステムである。理想的には、ヒトの脳の動作を模倣することで、例えば人工知能などの高度なコンピューティング機能をサポートすることができる。しかしながら、ヒトの脳を模倣すること又はヒトの脳の能力に匹敵するコンピューティングシステムを設計することにおける従来の試みは、一般に、例えば、脳の接続性又は３次元構造に実質的に合致しないなど、数多くの理由で不十分なものであった。
【発明の概要】
【０００３】
本開示は、汎用的な並列コンピューティングアーキテクチャを提供する。
【０００４】
第１の実施形態において、装置は、複数の並列コンピューティングコアを含み、各コンピューティングコアが、１つ以上のプロセッシング処理を実行して入力データを生成するように構成される。装置はまた、各コンピューティングコアに付随する複数の並列コプロセッサを含む。各コンピューティングコアが、該コンピューティングコアによって生成された入力データを、コンピューティングコアの各々に付随する当該コプロセッサのうちの指定された１つに提供するように構成される。コプロセッサは、入力データを処理して出力データを生成するように構成される。装置は更に、複数のリデューサ回路を含む。各コンピューティングコアに、リデューサ回路のうちの１つが付随する。各リデューサ回路が、付随するコンピューティングコアのコプロセッサの各々から出力データを受信し、出力データに１つ以上の関数を適用し、そして、１つ以上の結果を付随するコンピューティングコアに提供するように構成される。コンピューティングコア、コプロセッサ、及びリデューサ回路が、２次元レイアウトにて横に並べて配置される。
【０００５】
第２の実施形態において、装置は、複数の並列コンピューティングコアを含み、各コンピューティングコアが、１つ以上のプロセッシング処理を実行して入力データを生成するように構成される。装置はまた、各コンピューティングコアに付随する複数の並列コプロセッサを含む。各コンピューティングコアが、該コンピューティングコアによって生成された入力データを、コンピューティングコアの各々に付随するコプロセッサのうちの指定された１つに提供するように構成される。コプロセッサは、入力データを処理して出力データを生成するように構成される。各コンピューティングコアのコプロセッサのうちのサブセット内のコプロセッサはまた、出力データに対して１つ以上の関数を集合的に適用するように構成され、上記サブセット内のコプロセッサのうちの１つが更に、付随するコンピューティングコアに１つ以上の結果を提供するように構成される。
【０００６】
第３の実施形態において、装置は、Ｎ個の並列コンピューティングコアを含み、各コンピューティングコアが、１つ以上のプロセッシング処理を実行して入力データを生成するように構成される。装置はまた、Ｎ×Ｎ個のコプロセッサを含み、各コンピューティングコアにＮ個の並列コプロセッサが付随する。各コンピューティングコアが、該コンピューティングコアによって生成された入力データを、コンピューティングコアの各々に付随するコプロセッサのうちの指定された１つに提供するように構成される。コプロセッサは、入力データを処理して出力データを生成するように構成される。装置は更に、Ｎ個のリデューサ回路を含む。各コンピューティングコアにリデューサ回路のうちの１つが付随する。各リデューサ回路が、付随するコンピューティングコアのコプロセッサの各々から出力データを受信し、出力データに１つ以上の関数を適用し、そして、１つ以上の結果を付随するコンピューティングコアに提供するように構成される。コンピューティングコア、コプロセッサ、及びリデューサ回路が、２次元レイアウトにて横に並べて配置され、Ｎは、少なくとも１６という値を持つ整数である。
【０００７】
第４の実施形態において、装置は、複数のコンピューティングコアを含み、各コンピューティングコアが、１つ以上のプロセッシング処理を実行して入力データを生成するように構成される。装置はまた、各コンピューティングコアに付随する複数のコプロセッサを含み、各コプロセッサが、コンピューティングコアのうちの少なくとも１つから入力データを受信し、入力データを処理して出力データを生成するように構成される。装置は更に、複数のリデューサ回路を含み、各リデューサ回路が、付随するコンピューティングコアのコプロセッサの各々から出力データを受信し、出力データに１つ以上の関数を適用し、そして、１つ以上の結果を付随するコンピューティングコアに提供するように構成される。さらに、装置は、コンピューティングコアとコンピューティングコアに付随するコプロセッサとを通信可能に結合する複数の通信リンクを含む。
【０００８】
第５の実施形態において、装置は、複数のコンピューティングコアを含み、各コンピューティングコアが、１つ以上のプロセッシング処理を実行して入力データを生成するように構成される。装置はまた、各コンピューティングコアに付随する複数のコプロセッサを含み、各コプロセッサが、コンピューティングコアのうちの少なくとも１つから入力データを受信し、入力データを処理して出力データを生成するように構成される。装置は更に、コンピューティングコアとコンピューティングコアに付随するコプロセッサとを通信可能に結合する複数の通信リンクを含む。各コンピューティングコアのコプロセッサのうちのサブセット内のコプロセッサはまた、出力データに対して１つ以上の関数を集合的に適用するように構成され、上記サブセット内のコプロセッサのうちの１つが更に、付随するコンピューティングコアに１つ以上の結果を提供するように構成される。
【０００９】
第５の実施形態において、装置は、Ｎ個の並列コンピューティングコアを含み、各コンピューティングコアが、１つ以上のプロセッシング処理を実行して入力データを生成するように構成される。装置はまた、Ｎ×Ｎ個のコプロセッサを含み、各コンピューティングコアにＮ個の並列コプロセッサが付随する。各コプロセッサが、コンピューティングコアのうちの少なくとも１つから入力データを受信し、入力データを処理して出力データを生成するように構成される。装置は更に、Ｎ個のリデューサ回路を含み、各コンピューティングコアにリデューサ回路のうちの１つが付随する。各リデューサ回路が、付随するコンピューティングコアのコプロセッサの各々から出力データを受信し、出力データに１つ以上の関数を適用し、そして、１つ以上の結果を付随するコンピューティングコアに提供するように構成される。さらに、装置は、コンピューティングコアとコンピューティングコアに付随するコプロセッサとを通信可能に結合する複数の通信リンクを含む。通信リンクは、共有メモリへのリンクを含む。共有メモリは、コンピューティングコアからの入力データを格納し、且つ入力データをコプロセッサに提供するように構成される。共有メモリは、複数のメモリアドレスを持つ複数のメモリロケーションを含む。コンピューティングコアは、入力データを複数の異なるメモリアドレスに書き込むように構成され、コプロセッサは、上記複数の異なるメモリアドレスから入力データを読み出すように構成される。
【００１０】
その他の技術的特徴が、以下の図面、説明、及び請求項から、当業者には容易に明らかになる。
【図面の簡単な説明】
【００１１】
より完全なる本開示の理解のため、ここで、以下の図を含む添付図面とともに以下の説明を参照する。
【図１Ａ】図１Ａ−１Ｃは、本開示に従った汎用並列コンピューティングアーキテクチャの一例を示している。
【図１Ｂ】図１Ａ−１Ｃは、本開示に従った汎用並列コンピューティングアーキテクチャの一例を示している。
【図１Ｃ】図１Ａ−１Ｃは、本開示に従った汎用並列コンピューティングアーキテクチャの一例を示している。
【図２】図２及び３は、本開示に従った図１Ａ−１Ｃのコンピューティングアーキテクチャにおける通信の例を示している。
【図３】図２及び３は、本開示に従った図１Ａ−１Ｃのコンピューティングアーキテクチャにおける通信の例を示している。
【図４】図４及び５は、本開示に従った図１Ａ−１Ｃのコンピューティングアーキテクチャにおけるコプロセッサ機能の例を示している。
【図５】図４及び５は、本開示に従った図１Ａ−１Ｃのコンピューティングアーキテクチャにおけるコプロセッサ機能の例を示している。
【図６】本開示に従った図１Ａ−１Ｃのコンピューティングアーキテクチャにおけるプログラマブルコプロセッサ及びリダクション機能の一例を示している。
【図７】図７及び８は、本開示に従った汎用並列コンピューティングアーキテクチャを使用するコンピューティングシステムの例を示している。
【図８】図７及び８は、本開示に従った汎用並列コンピューティングアーキテクチャを使用するコンピューティングシステムの例を示している。
【図９】本開示に従った汎用並列コンピューティングアーキテクチャを使用して高度なコンピューティング機能をサポートする方法の一例を示している。
【図１０】図１０−１２は、本開示に従った汎用並列コンピューティングアーキテクチャにおけるコンポーネントの接続の他の例を示している。
【図１１】図１０−１２は、本開示に従った汎用並列コンピューティングアーキテクチャにおけるコンポーネントの接続の他の例を示している。
【図１２】図１０−１２は、本開示に従った汎用並列コンピューティングアーキテクチャにおけるコンポーネントの接続の他の例を示している。
【図１３】図１３−１９は、本開示に従った汎用並列コンピューティングアーキテクチャにおける通信スキームの例を示している。
【図１４】図１３−１９は、本開示に従った汎用並列コンピューティングアーキテクチャにおける通信スキームの例を示している。
【図１５】図１３−１９は、本開示に従った汎用並列コンピューティングアーキテクチャにおける通信スキームの例を示している。
【図１６】図１３−１９は、本開示に従った汎用並列コンピューティングアーキテクチャにおける通信スキームの例を示している。
【図１７】図１３−１９は、本開示に従った汎用並列コンピューティングアーキテクチャにおける通信スキームの例を示している。
【図１８】図１３−１９は、本開示に従った汎用並列コンピューティングアーキテクチャにおける通信スキームの例を示している。
【図１９】図１３−１９は、本開示に従った汎用並列コンピューティングアーキテクチャにおける通信スキームの例を示している。
【発明を実施するための形態】
【００１２】
以下に説明される図１Ａ−１９、及び本特許文献にて本発明の原理を説明するために使用される様々な実施形態は、単に例示によるものであり、本発明の範囲を限定するように解釈されるべきでない。当業者が理解するように、本発明の原理は、あらゆる種類の好適に構成された装置又はシステムにて実装され得る。
【００１３】
上述したように、ヒトの脳は、典型的に、１，０００兆個のシナプスによって接続された約１，０００億個のニューロンを含んだ、甚だしく並列なシステムである。シナプスは、ニューロン間での信号の輸送を支援する。ヒトの脳は、古典的なチューリングマシンとは非常に異なる構造になっている。ヒトの脳内には典型的に多数のニューロン及びシナプスがあることを考えると、古典的なチューリングマシンを用いてヒトの脳を模倣することは実用的でない。
【００１４】
ヒトの知能には数多くの要素が存在するが、一つの重要な要素は次元削減（dimensional  reduction）であり、これは、莫大な量（高帯域幅）の感覚入力を受け取って、その情報を、より少ない量（低帯域幅）の記述的概念へと削減するプロセスを指す。数学的には、この削減は、様々な形態の反復因子分析を用いて達成され得る。それら様々な形態の因子分析は、幾つかの特徴を共通に有する傾向にある。例えば、“フォワード説明モード（forward  explanatory  mode）”と呼ばれる１つの動作モードにおいて、因子分析は、多数の入力に対して幾らかの単純計算を行い、合計を累算し、そして場合によって、より複雑な計算を出力に対して行う。“バックワード学習モード（backward  learning  mode）”と呼ばれる別の動作モードでは、因子分析は、出力及び対応する入力に対する幾らかの単純計算によって、入力に対する単純計算を変更する。これらの計算は単純である傾向にあるが、ファンイン（入力の数を指す）及びファンアウト（出力が提供される宛先の数を指す）はどちらも何万にもなる。
【００１５】
ヒトの脳の能力に幾分でも匹敵するシステムを設計することは、一般に、数多くの理由で不十分であった。例えば、このような膨大なファンイン及びファンアウトは、２次元（２Ｄ）回路に実用的にマッピングされることができず、そのことが、このような高度に接続されたコンピューティングアーキテクチャを主流でないものに保ち続けてきた。ヒトの脳の能力に匹敵するコンピューティング装置を設計するためには、より多くの通信帯域幅を持つハードウェアアーキテクチャが必要とされる。本開示は、多数の高度に相互接続されたプロセッシングコアを含む様々な新たな汎用“コネクショニスト”ハードウェアアーキテクチャを記述する。とりわけ、これらのハードウェアアーキテクチャは、機械学習、科学計算、ビデオゲーム、及び他の分野における広範なクラスのアルゴリズムを加速させることができる。一部の実施形態において、これらのハードウェアアーキテクチャは、例えば３次元（３Ｄ）集積回路技術などの最新技術を使用して、妥当なコストで製造されることができる。
【００１６】
図１Ａ−１Ｃは、本開示に従った汎用並列コンピューティングアーキテクチャの一例を示している。特に、図１Ａ−１Ｃは、高い通信帯域幅を持つハードウェアアーキテクチャを提供する多階層（マルチレベル）構造の一例を示している。この構造の異なる階層が、後述するような異なる機能を実行する。
【００１７】
図１Ａは、ハードウェアアーキテクチャの第１階層１００を示している。この階層１００は、ｓｏｍａ（細胞体）コアとして参照する複数のコンピューティングコア又はプロセッシングコア１０２を含んでいる。その最小形態において、各ｓｏｍａコア１０２は、１つ以上のデータ信号を受信し、何らかのタイプの処理を実行し、そして、１つ以上の入力信号を送信することができる。プロセッシング処理を実行するために各ｓｏｍａコア１０２に含められる構造は、非常に単純なプロセッシングコアから非常に複雑なプロセッシングコアまで及び得る。例えば、各ｓｏｍａコア１０２内のプロセッシングユニットは、例えば汎用的な単一命令複数データ（ＳＩＭＤ）算術ユニットなどの比較的単純なコンピューティングコアとし得る。ｓｏｍａコア１０２はまた、例えばＡＲＭ社、ＩＮＴＥＬ社、又は他のコンピュータプロセッサメーカーからのものなど、フルプロセッシングコアを表すこともできる。一部の実施形態において、ｓｏｍａコア１０２のグループは、既存の“メニーコア（many  core）”プロセッサ設計を用いて実装され得る。しかしながら、ｓｏｍａコア１０２を実装することには、如何なる好適なプロセッシングコアが使用されてもよい。ハードウェアアーキテクチャはここでは１６個のｓｏｍａコア１０２を含むが、任意数のｓｏｍａコア１０２がこのハードウェアアーキテクチャでサポートされ得る。特定の実施形態において、ｓｏｍａコア１０２の全てが、ここでは、プロセッサとして参照する単一の集積回路チップ内に実装され得る。また、留意されたいことには、これらのｓｏｍａコア１０２は同種であってもよいし、同種でなくてもよい。
【００１８】
各ｓｏｍａコア１０２が、プロセッシング回路１０４及び少なくとも１つのメモリデバイス１０６を含む。プロセッシング回路１０４は、概して、ｓｏｍａコア１０２内で何らかのタイプの処理を実行するのに使用される回路を意味する。上述のように、処理は単純であってもよいし、複雑であってもよく、プロセッシング回路１０４は、実行すべき具体的な処理に応じて様々とすることができる。メモリデバイス１０６は、概して、ｓｏｍａコア１０２によって使用、生成、又は受信されるデータを格納するための、例えば１つ以上のレジスタなどの任意の好適な（１つ以上の）記憶・取り出し（storage  and  retrieval）デバイスを意味する。図１Ａでは、メモリデバイス１０６がｓｏｍａコア１０２に内蔵されているように示されているが、各メモリデバイス１０６は、全体として、又は部分的に、ｓｏｍａコア１０２にアクセス可能な他の好適な（１つ以上の）位置に置かれてもよい。
【００１９】
図１Ｂは、ハードウェアアーキテクチャの第１階層１００に関連付けられるものであるハードウェアアーキテクチャの第２階層１１０を示している。第２階層１１０は、各ｓｏｍａコア１０２に付随する多数のコプロセッサ１１２（シナプスコプロセッサとして参照する）を含む。シナプスコプロセッサ１１２は、概して、ｓｏｍａコア１０２間の信号ライン（後述する）上で伝送される入力データを処理する。各ｓｏｍａコア１０２に、複数のシナプスコプロセッサ１１２が付随し得る。一例として、Ｎ個のｓｏｍａコアのグループ内の各ｓｏｍａコア１０２に対して、最大Ｎ個のシナプスコプロセッサ１１２が設けられて、該グループ内のｓｏｍａコア１０２（それ自身を含む）から該ｓｏｍａコア１０２への通信を支援するために使用され得る。一部の実施形態において、各ｓｏｍａコア１０２が、グループ内のｓｏｍａコア１０２の各々についての１つのシナプスコプロセッサ１１２に通信可能に結合される。換言すれば、各ｓｏｍａコア１０２が、Ｎ個全てのｓｏｍａコア１０２に（それらそれぞれのシナプスコプロセッサ１１２を介して）通信可能に結合されることができるが、他のアプローチ（後述するものを含む）は、これを行う必要がない。“ローカル”又は“ホスト”のｓｏｍａコア１０２のシナプスコプロセッサ１１２を用いて、全てのｓｏｍａコア１０２（それ自身を含む）から入ってくる入力データを受信して処理する。これは、一部の実施形態において、ｓｏｍａコア１０２毎の全Ｎ個のシナプスコプロセッサ１１２が、Ｎ個全てのｓｏｍａコア１０２からの入力データを並列に受信することを実効的に可能にする。なお、典型的には各ｓｏｍａコア１０２が同数のシナプスコプロセッサ１１２を含むとし得るが、他の実施形態が用いられてもよい。
【００２０】
各シナプスコプロセッサ１１２は、ｓｏｍａコア１０２に関して入来する入力データの処理を支援する任意の好適構造を含む。シナプスコプロセッサ１１２は、限られた能力を持つとともに再プログラム可能であってもよい。一部の実施形態において、各シナプスコプロセッサ１１２は、プログラム可能な又はその他の算術ユニット１１３と、少なくとも１つのメモリデバイス１１４とを含む。算術ユニット１１３は、ハードウェアアーキテクチャにおける様々な機能をサポートするために１つ以上の命令シーケンスを実行するように構成される任意の好適構造を意味する。それらの機能の例は、特定のシーケンスにてデータの受信及び処理を行うこと、受信した入力及び格納されたパラメータに対して算術演算を実行すること、又は値を転送することを含む。メモリデバイス１１４は、概して、シナプスコプロセッサ１１２によって使用、生成、又は受信されるデータを格納するための、例えば１つ以上のレジスタなどの任意の好適な（１つ以上の）記憶・取り出しデバイスを意味する。図１Ｂでは、メモリデバイス１１４がシナプスコプロセッサ１１２に内蔵されているように示されているが、各メモリデバイス１１４は、全体として、又は部分的に、シナプスコプロセッサ１１２にアクセス可能な他の好適な（１つ以上の）位置に置かれてもよい。
【００２１】
ハードウェアアーキテクチャの第２階層１１０はまた、様々な削減器回路すなわち“リデューサ”１１５を含む。一部の実施形態において、ｓｏｍａコア１０２毎に１つのリデューサ１１５が存在し得る。各リデューサ１１５は、ｓｏｍａコア１０２のうちの１つに付随する全てのシナプスコプロセッサ１１２によって生成された出力データを受信し、受信した出力データを何らかの手法で処理し、そして、処理の１つ以上の結果をそのローカルｓｏｍａコア１０２に渡す。例えば、各リデューサ１１５は、受信した出力データ値を合計し若しくはその他の方法で累算したり、受信した出力データ値の最小値又は最大値を特定したり、あるいは何らかの他のプロセッシング処理を実行したりすることができる。斯くして、各リデューサ１１５が、あるｓｏｍａコア１０２の出力データを処理し、そのｓｏｍａコア１０２に提供されるデータの量を削減する。
【００２２】
各リデューサ１１５は、複数の出力値を処理する任意の好適構造を含む。一部の実施形態において、各リデューサ１１５は、プロセッシング回路１１６及び少なくとも１つのメモリデバイス１１７を含む。プロセッシング回路１１６は、概して、リデューサ１１５内の何らかのタイプの処理を実行するのに使用される回路を意味し、しばしば、ｓｏｍａコア１０２のプロセッシング回路１０４よりも遥かに特殊化される。例えば、プロセッシング回路１１６は、１つのｓｏｍａコア１０２に付随するシナプスコプロセッサ１１２からの出力値の全てを合計するために使用される累算器によって形成された加算器ツリーを含むことができる。メモリデバイス１１７は、概して、リデューサ１１５によって使用、生成、又は受信されるデータを格納するための、例えば１つ以上のレジスタなどの任意の好適な（１つ以上の）記憶・取り出しデバイスを意味する。図１Ｂでは、メモリデバイス１１７がリデューサ１１５に内蔵されているように示されているが、各メモリデバイス１１７は、全体として、又は部分的に、リデューサ１１５にアクセス可能な他の好適な（１つ以上の）位置に置かれてもよい。
【００２３】
図１Ｃは、ここでのハードウェアアーキテクチャの第１階層１００及び第２階層１１０に付随するものであるハードウェアアーキテクチャの第３階層１２０を示している。第３階層１２０は、ｓｏｍａコア１０２を通信可能に結合する複数の信号ライン１２２及び１２４を含み、それにより、ｓｏｍａコア１０２への、ｓｏｍａコア１０２からの、及びｓｏｍａコア１０２間での信号の輸送を支援する。一部の実施形態において、あるグループ内の各ｓｏｍａコア１０２が、信号ライン１２２及び１２４並びにシナプスコプロセッサ１１２の適切な構成を介して、同一グループ内の他の全てのｓｏｍａコア１０２と直接的に通信することができるように、ｓｏｍａコア１０２同士が完全に接続される。しかしながら、完全よりも少ない接続がこのハードウェアアーキテクチャ内でサポートされてもよい。
【００２４】
なお、図１Ｃにおける信号ライン１２２及び１２４の物理的レイアウトは、単に例示のためであり、このハードウェアアーキテクチャにおける信号ラインの実際の物理的配置を表すわけではない。例えば、ｓｏｍａコア１０２間のネットワークを設計するためことには様々なやり方が存在し、それらは、ｓｏｍａコア１０２、及びｓｏｍａコア１０２から入力データを受信するシナプスコプロセッサ１１２、の全ての間の直接通信をサポートするものもあれば、サポートしないものもある。従って、信号ライン１２２及び１２４は、ハードウェアアーキテクチャ内の所望される通信経路をサポートするように配置されることができる。これまた留意されたいことには、各ｓｏｍａコア１０２とそれに付随するシナプスコプロセッサ１１２との間の直接接続は、論理レベルでの一例として与えられており、必ずしも、必要とされるネットワークの具体的な実装として与えられているわけではない。各ｓｏｍａコア１０２とそれに付随するシナプスコプロセッサ１１２との間の接続を提供することには、様々な機構（後述するものを含む）が使用され得る。
【００２５】
動作中、各ｓｏｍａコア１０２は、所望の命令を実行し、場合によりそのリデューサ１１５又は他の（１つ以上の）ソースから受信したデータを含むものであるデータを処理するように動作する。各ｓｏｍａコア１０２は、そのプロセッシング処理の結果を他のｓｏｍａコア１０２（及び場合によりそれ自身）に入力データとして提供することができ、また、各ｓｏｍａコア１０２は、そのシナプスコプロセッサ１１２を介して、他のｓｏｍａコアのプロセッシング処理によって生成された入力データを受信することができる。各ｓｏｍａコア１０２についてのシナプスコプロセッサ１１２は、入力データに対して所望のプロセッシング処理を実行することができ、シナプスコプロセッサ１１２によって出力されるデータは、各ｓｏｍａコア１０２についてのリデューサ１１５によって更に処理されることができる。リデューサ１１５からの結果が、ローカル／ホストのｓｏｍａコア１０２に提供され、該コアは、該データを用いて更なるプロセッシング処理を実行することができる。
【００２６】
ｓｏｍａコア１０２から接続されたシナプスコプロセッサ１１２への各通信において複数の“チャネル”をサポートすることも可能であり、その場合、各チャネルに異なるプロセッシング処理を関連付けることができる。例えば、各シナプスコプロセッサ１１２が、１つのｓｏｍａコア１０２から複数のチャネル上で入力データを受信してもよく、そのｓｏｍａコア１１２に接続された複数のシナプスコプロセッサ１１２が、入力データに使用されたチャネルに応じて異なるプロセッシング処理を実行してもよい。また、各リデューサ１１５が、それが付随するシナプスコプロセッサ１１２から複数のチャネルについての出力データを受信してもよく、リデューサ１１５が、シナプスコプロセッサ１１２によって入力データが受信されたチャネルに応じて異なるプロセッシング処理を実行してもよい。チャネルは、実際の物理チャネル（例えば、データが異なる信号ライン上で送られる場合など）又は論理チャネル（例えば、データが異なるチャネル識別子を用いて共通信号ライン上で送られる場合など）を意味し得る。これらの実施形態では、ｓｏｍａコア１０２、シナプスコプロセッサ１１２、及びリデューサ１１５内の異なるレジスタ又は他のメモリロケーションを使用して、異なるチャネルについての異なるデータ及び異なるプログラミング命令を格納し得る。これは、ハードウェアアーキテクチャが、並行処理タイプ又は他のタイプのプログラミング処理をサポートすることを可能にする。
【００２７】
上述のように、各シナプスコプロセッサ１１２のメモリデバイス１１４は、多数のレジスタを含むことができる。一部の実施形態において、レジスタは、可能な各接続パートナー（各ｓｏｍａコア１０２）に関連付けられて、各接続パートナーの（１つ以上の）チャネルについての入来する入力データを保持するために使用されるレジスタを含むことができる。レジスタはまた、プログラミング命令の実行中に使用されるパラメータ値及び他の値を保持するために使用されるローカルレジスタを含み得る。特定の実施形態において、シナプスコプロセッサ１１２のプロセッシング処理は、入来する入力データに応答して実行される１つ以上の命令を用いて記述され、シナプスコプロセッサ１１２にはコマンドループが存在しない。
【００２８】
各ｓｏｍａコア１０２は、その複数のシナプスコプロセッサ１１２上へのプログラム命令のインストールを個別に制御することができ、異なるチャネルに対して異なるプログラム命令を提供することができる。例えば、ｓｏｍａコア１０２に、そのシナプスコプロセッサ１１２のうちの一部又は全てに同じプログラムをロードさせる命令が存在し得る。また、ｓｏｍａコア１０２に、しばしば異なる値を、そのシナプスコプロセッサ１１２のパラメータレジスタにロードさせる命令が存在し得る。なお、ｓｏｍａコア１０２は、そのｓｏｍａコアの全シナプスコプロセッサ１１２の全レジスタの値を保持するのに十分な大きさの所与のメモリ領域から、このデータの全てをロードし得る。各ｓｏｍａコア１０２は、そのシナプスコプロセッサ１１２の個々のパラメータレジスタを読み取ることを可能にされ得るが、チャネル毎のレジスタの値を読み取ることはできない。代わりに、チャネル毎のレジスタの値は、シナプスコプロセッサ１１２によって処理されることができ、及び／又は、各チャネルについて受信されたデータに対して適切に動作するようにローカル／ホストｓｏｍａコア１０２によってプログラムされ得るものである付随リデューサ１１５に供給されることができる。各リデューサ１１５への入力は、特定のチャネルについての付随するｓｏｍａコア１０２の全シナプスコプロセッサ１１２からの出力値を表すことができる。
【００２９】
各ｓｏｍａコア１０２は、上述のようなシナプスコプロセッサ１１２及びリデューサ１１５の使用を容易にするための多数の命令をサポートし得る。例えば、各ｓｏｍａコア１０２は、入力データ要素を全てのｓｏｍａコア１０２（の特定チャネル）に送るための命令、入力データをそれ自身のシナプスコプロセッサ１１２の特定チャネルに送るための命令、それ自身のリデューサ１１５からの結果を受信するための命令、それ自身のシナプスコプロセッサ１１２及びリデューサ１１５においてプログラム又は他の命令をインストール又は選択するための命令、及びシナプスコプロセッサ１１２のパラメータレジスタにデータを格納するための命令をサポートし得る。このハードウェアアーキテクチャでサポートされる命令の例の更なる詳細については、以下で提供する。
【００３０】
一部の実施形態において、図１Ａ−１Ｃに示したハードウェアアーキテクチャは、単一の集積回路チップ内に実装され得る。集積回路チップは、例えば、シリコン・オン・インシュレータ（ＳＯＩ）などの長年の製造技術、又は３次元集積回路製造技術などのもっと最近になって開発された技術を使用することによってなど、如何なる好適手法で製造されてもよい。必要とされる場合又は望まれる場合、使用のために利用可能なｓｏｍａコア１０２の数を増やすために、図１Ａ−１Ｃに示したハードウェアアーキテクチャの複数のインスタンスを共に結合して使用し得る。例えば、複数の集積回路チップを共に、例えば、ハードウェアアーキテクチャの各インスタンスの信号ライン１２２及び１２４を１つ以上の高速接続を用いて共に結合することによってなどで、通信可能に結合することで、所望数のｓｏｍａコア１０２を提供し得る。
【００３１】
また、一部の実施形態において、各ｓｏｍａコア１０２は、ハードウェアアーキテクチャにおける所望の機能を提供するために、特定の機能又は複数機能の組み合わせを実行するように構成され得る。他の実施形態において、各ｓｏｍａコア１０２は、ｓｏｍａコア１０２の（１つ以上の）機能が規定され得るとともに、経時的に又は所望に応じて変化され得るように、プログラム可能であるとし得る。同様に、一部の実施形態において、各シナプスコプロセッサ１１２及びリデューサ１１５は、ハードウェアアーキテクチャにおける所望の機能を提供するために、特定の機能又は複数機能の組み合わせを実行するように構成され得る。他の実施形態において、各シナプスコプロセッサ１１２及びリデューサ１１５は、シナプスコプロセッサ１１２及びリデューサ１１５の（１つ以上の）機能が規定され得るとともに、経時的に又は所望に応じて変化され得るように、プログラム可能であるとし得る。
【００３２】
なお、ｓｏｍａコア１０２によって実行される処理は並列に行われることができ、また、各ｓｏｍａコア１０２に対してシナプスコプロセッサ１１２及びリデューサ１１５によって実行される処理も並列に行われることができる。斯くして、各ｓｏｍａコア１０２は、ｓｏｍａコア１０２同士の間に十分な通信基盤を与えられて、複数の信号ライン１２２及び１２４を介して同時に通信することができる。十分な数のｓｏｍａコア１０２、シナプスコプロセッサ１１２、リデューサ１１５、及び信号ライン１２２及び１２４を所与として、このハードウェアアーキテクチャは、コンピューティングコア間の莫大な数の通信接続をサポートすることができ、それらの通信接続は全て、同時使用に利用可能であることができる。結果として、この設計は、より多くの通信帯域幅を持つハードウェアアーキテクチャを表す。
【００３３】
図１Ａ−１Ｃは、汎用並列コンピューティングアーキテクチャの一例を示しているが、図１Ａ−１Ｃに示したハードウェアアーキテクチャには様々な変更が為され得る。例えば、ハードウェアアーキテクチャは、任意の好適数のｓｏｍａコアを、好適数のシナプスコプロセッサ及びリデューサと共にサポートし得る。また、各ｓｏｍａコア、シナプスコプロセッサ、及びリデューサは、例えば、複数のｓｏｍａコア又はシナプスコプロセッサに共有の計算リソースを使用することによって、又は２つ以上の処理を同時に実行することを可能にする複数のリデューサを使用することによってなど、他の好適手法で実装されてもよい。また、具体的なニーズに従って、図１Ａ−１Ｃの様々なコンポーネントが組み合わされ、更に細分化され、配置変更され、又は省略されてもよく、また、更なるコンポーネントが追加されてもよい。特定の一例として、１つ以上のｓｏｍａコア１０２は、リデューサ１１５と共に使用される必要がないとし得る。他の特定の一例として、図１０−１２（後述する）が、汎用並列コンピューティングアーキテクチャのコンポーネント間の他の可能なレイアウト及び接続を示す。
【００３４】
図２及び３は、本開示に従った図１Ａ−１Ｃのコンピューティングアーキテクチャにおける通信の例を示している。図２に示すように、各ｓｏｍａコア１０２は、全てのｓｏｍａコア１０２（それ自身を含む）からの入力データを受信する複数のシナプスコプロセッサ１１２を有することができる。これと同じパターンが、ｓｏｍａコア１０２のグループ内の全てのｓｏｍａコア１０２に対して繰り返され得る。上述の信号ライン１２２及び１２４を使用して、各ｓｏｍａコア１０２を、全てのｓｏｍａコア１０２の１つのシナプスコプロセッサ１１２に、これらの通信をサポートするのに好適なように結合することができる。
【００３５】
Ｎ個のｓｏｍａコア１０２が存在する場合、各ｓｏｍａコア１０２がＮ個のシナプスコプロセッサ１１２（それ自身を含めｓｏｍａコア１０２毎に１つのシナプスコプロセッサ１１２）を備え得る。各ｓｏｍａコア１０２は、情報を全てのｓｏｍａコア１０２にブロードキャストすることができ、また、各ｓｏｍａコア１０２は、そのシナプスコプロセッサ１１２を介して他の全てのｓｏｍａコア１０２から情報を受信することができる。実効的に、一部の実施形態において、Ｎ個のｓｏｍａコア１０２の各々に対するＮ個のシナプスコプロセッサ１１２は、ｓｏｍａコア１０２との間のＮ個の独立した通信ネットワークをサポートすることができる。
【００３６】
図３は、ｓｏｍａコア間の独立した通信ネットワークのうちの２つの一具体例を示している。図３に示すように、１つのｓｏｍａコア１０２ａは、システム内の各ｓｏｍａコア１０２の１つのシナプスコプロセッサ１１２に、入力データをブロードキャストすることができる。同様に、別の１つのｓｏｍａコア１０２ｂは、システム内の各ｓｏｍａコア１０２の１つのシナプスコプロセッサ１１２に、データをブロードキャストすることができる。ｓｏｍａコア１０２ａ及び１０２ｂによるブロードキャストは、一部の実施形態において、同時に行われることができる。結果として、Ｎ個のｓｏｍａコア１０２は、同時にＮ個のデータブロードキャストに携わることができる。
【００３７】
なお、ここではブロードキャストが、１つのｓｏｍａコアからロウ及びカラム内の次のｓｏｍａコアへと順次に行われているように示されているが、これは単に図示の容易さのためである。それに代えて、データをブロードキャストしている各シナプスコプロセッサ１１２は、信号ライン１２２及び１２４を介して、全てのｓｏｍａコア１０２のシナプスコプロセッサ１１２に直接的にデータをブロードキャストし得る。当然ながら、必要とされる場合又は望まれる場合には、例えば準備されている何らかのタイプのアドレッシング機構又は競合機構などを用いて、複数のｓｏｍａコア１０２が同じ信号ライン１２２及び１２４上でブロードキャストすることを可能にすることも可能である。
【００３８】
図２及び３は、図１Ａ−１Ｃのコンピューティングアーキテクチャにおける通信の例を示しているが、図２及び３には様々な変更が為され得る。例えば、ハードウェアアーキテクチャは、任意の好適数のｓｏｍａコアを、好適数のシナプスコプロセッサと共にサポートし得る。また、具体的なニーズに従って、図２及び３の様々なコンポーネントが組み合わされ、更に細分化され、配置変更され、又は省略されてもよく、また、更なるコンポーネントが追加されてもよい。さらに、ｓｏｍａコア１０２間で如何なる好適な通信がサポートされてもよい。
【００３９】
図４及び５は、本開示に従った図１Ａ−１Ｃのコンピューティングアーキテクチャにおけるコプロセッサ機能の例を示している。特に、図４及び５は、上述のシナプスコプロセッサ１１２を実装するための機構例を示している。なお、これらの実装例は単に例示のためであり、シナプスコプロセッサ１１２は他の手法で実装されてもよい。
【００４０】
図４に示すように、ｊ番目のｓｏｍａコア１０２についてのシナプスコプロセッサ１１２が、上述の算術ユニット１１３を用いて実装され得る。算術ユニット１１３は、ｉ番目のｓｏｍａコア１０２から受信した入来する入力データを用いて、１つ以上の所望の計算を実行する。算術ユニット１１３は、次いで、得られた出力データを、ｊ番目のｓｏｍａコア１０２に付随するリデューサ１１５に出力する。リデューサ１１５は、ｊ番目のｓｏｍａコア１０２に付随する複数のシナプスコプロセッサ１１２の複数の算術ユニット１１３からの出力を処理して、（１つ以上の）結果をｊ番目のｓｏｍａコア１０２に提供することができる。
【００４１】
図４の算術ユニット１１３によって実行される（１つ以上の）処理は、プログラム（φ）４０２を用いて規定又は制御されることができ、プログラム４０２は、１つ以上のパラメータ４０４を使いて動作する。プログラム４０２及び（１つ以上の）パラメータ４０４は、メモリデバイス１１４又は他の（１つ以上の）位置に格納されることができる。この１つ以上のパラメータ４０４は、シナプスコプロセッサ１１２によって、又は付随するｓｏｍａコア１０２によって、又は他の好適手法にて設定又は制御されることができる。算術ユニット１１３によって実行され得る処理の例は、値を加算、減算若しくは乗算すること；あるｓｏｍａコア１０２に付随する全てのシナプスコプロセッサ１１２にわたって一定値を生成すること；シナプスコプロセッサ１１２に関する識別子を出力すること；テスト値に基づいて複数の値のうちの１つを選択すること；又は値の符号若しくは逆数平方根を計算することを含み得る。
【００４２】
図５に示すように、ハードウェアアーキテクチャ内で実行される複数の処理又は複数の処理セットが存在し得る。入来データに対して複数の選択可能なプログラム（φ）５０２のうちのどれが算術ユニット１１３によって実行されるべきかを識別するために、シナプスコプロセッサ１１２によって“チャネル識別子”値が使用され得る。“チャネル識別子”はまた、どの（１つ以上の）パラメータ５０４が算術ユニット１１３によって使用されるのか、及び算術ユニット１１３によって生成された結果がどこに送られるのかを制御するためにも使用されることができる。選択可能なプログラム５０２及びパラメータ５０４は、シナプスコプロセッサ１１２のメモリデバイス１１４又は他の（１つ以上の）位置に格納され得る。
【００４３】
一部の実施形態において、算術ユニット１１３及びリデューサ１１５の各々は、パイプライン的に実装されてもよく、入来データは、スカラ値又は小さいベクトルをなす値を示し得る。これらの実施形態において、複数のスカラ値又は少なくとも１つのベクトルをなす値がｉ番目のｓｏｍａコア１０２から受信され、そして、算術ユニット１１３によってそれらの値に単一のプログラム５０２又は複数の異なるプログラム５０２が適用されて、一連の出力値が生成され得る。この一連の出力値が、更なる処理のためにリデューサ１１５に提供され得る。
【００４４】
図４及び５は、図１Ａ−１Ｃのコンピューティングアーキテクチャにおけるコプロセッサ機能の例を示しているが、図４及び５には様々な変更が為され得る。例えば、各シナプスコプロセッサ１１２は、他の規定された手法又は再構成可能な手法で実装されてもよい。
【００４５】
図６は、本開示に従った図１Ａ−１Ｃのコンピューティングアーキテクチャにおけるプログラマブルコプロセッサ及びリダクション（削減）機能の一例を示している。特に、図６は、上述のシナプスコプロセッサ１１２及びリデューサ１１５のプログラミングを制御するための一機構例を示している。
【００４６】
図６に示すように、リデューサ１１５は、ｓｏｍａコア１０２に付随する複数のシナプスコプロセッサ１１２から出力データを受信するように構成される。リデューサ１１５は、次いで、シナプスコプロセッサ１１２からの出力を用いて少なくとも１つの処理（Ψによって識別される）を実行して、付随するｓｏｍａコア１０２に提供される少なくとも１つの結果を生成する。リデューサ１１５によって実行される１つ以上の計算は、複数のシナプスコプロセッサ１１２からの出力を用いて実行される任意の好適な演算を含み得る。一部の実施形態において、リデューサ１１５は、ハードウェアアーキテクチャにおける様々な機能をサポートするために、命令の１つ以上のシーケンスを実行し得る。例えば、付随するｓｏｍａコア１０２の複数のコプロセッサ１１２から並列にデータを受信した後に、リデューサ１１５は、受信したデータに対してプログラム可能な処理を実行して、（１つ以上の）結果を付随するｓｏｍａコア１０２に出力し得る。処理の例は、全てのシナプスコプロセッサ１１２からの出力を加算若しくは乗算すること、シナプスコプロセッサ１１２からの最小若しくは最大の出力を特定すること、又は特定のシナプスコプロセッサの値を出力として選択することを含むことができる。
【００４７】
シナプスコプロセッサ１１２によって実行される１つ以上のプログラム（φ）を格納するために、この構造においてメモリデバイス６０２を使用することができる。メモリデバイス６０２はまた、リデューサ１１５によって実行される１つ以上のプログラム（Ψ）を格納するために使用されることができる。メモリデバイス６０２は、例えばメモリ１０６、１１４、１１７のうちの１つ以上の部分など、任意の好適な（１つ以上の）揮発性又は不揮発性記憶・取り出しデバイスを表す。
【００４８】
図６は、図１Ａ−１Ｃのコンピューティングアーキテクチャにおけるプログラマブルコプロセッサ及びリダクション機能の一例を示しているが、図６には様々な変更が為され得る。例えば、ハードウェアアーキテクチャは、任意の好適数のｓｏｍａコアを、好適数のシナプスコプロセッサ及びリデューサと共にサポートし得る。また、具体的なニーズに従って、図６の様々なコンポーネントが組み合わされ、更に細分化され、配置変更され、又は省略されてもよく、また、更なるコンポーネントが追加されてもよい。
【００４９】
図７及び８は、本開示に従った汎用並列コンピューティングアーキテクチャを使用するコンピューティングシステムの例を示している。図７に示すように、コンピューティングシステム７００は、少なくとも１つのプロセッサ７０２、少なくとも１つの記憶デバイス７０４、少なくとも１つの通信ユニット７０６、及び少なくとも１つの入力／出力（Ｉ／Ｏ）ユニット７０８を含む。
【００５０】
プロセッサ７０２は、上述のｓｏｍａコア１０２、シナプスコプロセッサ１１２、リデューサ１１５、並びに信号ライン１２２及び１２４を組み込んだ集積回路チップを示し得る。プロセッサ７０２は、例えば、メモリデバイス７１０にロードされ、その後、ｓｏｍａコア１０２、シナプスコプロセッサ１１２及びリデューサ１１５のレジスタ又は他のメモリにロードされ得るものなどの、命令を実行する。プロセッサ７０２は、任意の好適数のｓｏｍａコア１０２、シナプスコプロセッサ１１２、リデューサ１１５、並びに信号ライン１２２及び１２４を含み得る。
【００５１】
メモリデバイス７１０及び永続ストレージ７１２は記憶デバイス７０４の例であり、記憶デバイス７０４は、情報（一時的ベース又は永続的ベースの例えばデータ、プログラムコード、及び／又は他の好適情報など）を記憶するとともにその取り出しを容易にすることが可能な任意の（１つ以上の）構造を表す。メモリデバイス７１０は、ランダムアクセスメモリ又は他の好適な（１つ以上の）揮発性若しくは不揮発性記憶デバイスを表し得る。永続ストレージ７１２は、例えば読み出し専用メモリ、ハードドライブ、フラッシュメモリ、又は光ディスクなどの、より長期でのデータ記憶をサポートする１つ以上のコンポーネント又はデバイスを含み得る。
【００５２】
通信ユニット７０６は、他のシステム又は装置との通信をサポートする。例えば、通信ユニット７０６は、有線又は無線のネットワーク上での通信を支援するネットワークインタフェースカード又は無線トランシーバを含み得る。通信ユニット７０６は、任意の好適な（１つ以上の）物理的又は無線通信リンクを介しての通信をサポートし得る。
【００５３】
Ｉ／Ｏユニット７０８は、データの入力及び出力を可能にする。例えば、Ｉ／Ｏユニット７０８は、キーボード、マウス、キーパッド、タッチスクリーン、又は他の好適な入力装置を介したユーザ入力のための接続を提供し得る。Ｉ／Ｏユニット７０８はまた、出力をディスプレイ、プリンタ、又は他の好適な出力装置に送信し得る。
【００５４】
必要とされる場合又は望まれる場合、使用のために利用可能なｓｏｍａコア１０２の数を増やすために、図１Ａ−１Ｃに示したハードウェアアーキテクチャの複数のインスタンスを共に結合して使用し得る。例えば、複数の集積回路チップを共に通信可能に結合することで、所望数のｓｏｍａコア１０２を提供し得る。これの一例が図８に示されており、コンピューティングシステム７００においてプロセッサ７０２として、又は他のコンピューティングシステムにおいて、マルチプロセッサ構成８００が使用されてもよい。マルチプロセッサ構成８００は、ここでは、少なくとも１つの高速接続によって結合された少なくとも２つのプロセッサを含む。この例では、リング状に４つのプロセッサ８０２−８０８が４つの高速接続８１０によって結合されているが、他の好適な個数及び構成のプロセッサ及び高速接続が使用されてもよい。
【００５５】
各高速接続８１０は、図１Ａ−１Ｃに示したハードウェアアーキテクチャの複数のインスタンスを結合するのに好適な（１つ以上の）通信経路をサポートすることができる。例えば、各高速接続８１０は、その高速接続８１０がハードウェアインスタンスの信号ライン１２２及び／又は１２４間での信号の輸送をサポートするように、ハードウェアアーキテクチャの各インスタンスの第３階層１２０に通信可能に結合されることができる。各高速接続８１０は、例えば複数の集積回路チップ間などのハードウェアインスタンス間で信号を輸送するのに適した任意の構造を含む。
【００５６】
マルチプロセッサアーキテクチャをサポートすることには、様々なタイプの高速接続８１０が使用され得る。例えば、各高速接続８１０は、２つの集積回路チップ間のフォトニック接続を用いて実装され得る。他の一例として、集積回路チップそれら自体が“キルト（quilt）”パッケージングをサポートしてもよく、キルトパッケージングでは、各集積回路チップが少なくとも１つの側面に沿って電気接続を含んでおり、それら集積回路チップが、異なるチップ上の電気接続が互いに接触するようにマウントされる。しかしながら、留意されたいことには、他の又は追加の高速接続８１０も使用され得る。
【００５７】
図７及び８は、汎用並列コンピューティングアーキテクチャを使用するコンピューティングシステムの例を示しているが、図７及び８には様々な変更が為され得る。例えば、何らかの好適な機能を実行するために、図１Ａ−１Ｃに示したハードウェアアーキテクチャが、何らかの他の好適システムで使用されてもよい。
【００５８】
図９は、本開示に従った汎用並列コンピューティングアーキテクチャを使用して高度なコンピューティング機能をサポートする方法９００の一例を示している。説明の容易さのため、方法９００を、図１Ａ−１Ｃに示したハードウェアアーキテクチャに関して記述する。しかしながら、方法９００は、他の好適なハードウェアアーキテクチャと共に使用されてもよい。
【００５９】
図９に示すように、ステップ９０２にて、複数の並列コンピューティングコアを用いてプロセッシング処理が実行される。これは、例えば、１つ以上のプロセッサ内の複数のｓｏｍａコア１０２が命令を実行して多種多様な計算のうちいずれかを実行することを含み得る。プロセッシング処理は、ＳＩＭＤ  ｓｏｍａコア１０２によって実行される単純な処理から、フルプロセッサｓｏｍａコア１０２によって実行される複雑な処理に至るまで表し得る。なお、図９に示す処理は、処理の従属性のために、順番に実行されることができる。上述のようにチャネルアドレッシングを用いて、同じ処理の複数の独立したチェーンを同時に実行することができ、通信及びシナプス／リデューサ処理を並列に実行することができる。
【００６０】
ステップ９０４にて、各コンピューティングコアからの処理結果が他のコンピューティングコアに発行される。これは、例えば、各ｓｏｍａコア１０２がその処理結果を、信号ライン１２２及び１２４を介して、各ｓｏｍａコア１０２の１つのシナプスコプロセッサ１１２に提供することを含み得る。一部の実施形態において、これは、各ｓｏｍａコア１０２についてのシナプスコプロセッサ１１２が、全てのｓｏｍａコア１０２からの処理結果を受信することをもたらす。
【００６１】
各コンピューティングコアについて、コンピューティングコアからの処理結果が、ステップ９０６で処理され、ステップ９０８で削減される。これは、例えば、各ｓｏｍａコア１０２に付随するシナプスコプロセッサ１１２が、全てのｓｏｍａコア１０２からの処理結果に対して何らかのタイプの処理を実行することを含み得る。シナプスコプロセッサ１１２の算術ユニット１１３によって実行され得る処理のタイプの具体例については後述する。これはまた、各ｓｏｍａコア１０２についてのリデューサ１１５が、そのｓｏｍａコア１０２についてのシナプスコプロセッサ１１２の出力を処理することを含み得る。リデューサ１１５によって実行され得る処理のタイプの具体例については後述する。なお、シナプスコプロセッサ１１２及びリデューサ１１５によって実行される処理は、制御されたものとすることができ、また、例えば異なるチャネルのデータに対して異なるプログラムφ及びΨが使用されるときなどに変わることができる。
【００６２】
ステップ９１０にて、削減された結果がコンピューティングコアに提供される。これは、例えば、リデューサ１１５が、それが付随するｓｏｍａコア１０２に出力を提供することを含み得る。この時点で、方法９００を繰り返すことができ、コンピューティングコアは、プロセッシング処理の更なる実行中に削減された結果を使用する。あるいは、方法９００は終了し、後に新たなデータを用いて繰り返され得る。
【００６３】
図９は、汎用並列コンピューティングアーキテクチャを使用して高度なコンピューティング機能をサポートする方法９００の一例を示しているが、図９には様々な変更が為され得る。例えば、一連のステップとして示されているが、図９における様々なステップは、重複してもよいし、並列に行われてもよいし、異なる順序で行われてもよいし、あるいは複数回行われてもよい。
【００６４】
以上の図１Ａ−１Ｃに示したアーキテクチャの説明においては、アーキテクチャが多階層構造であるとして記述されている。例えば、シナプスコプロセッサ１１２及びリデューサ１１５がｓｏｍａコア１０２の上に置かれ、信号ライン１２２及び１２４がシナプスコプロセッサ１１２及びリデューサ１１５の上に置かれ得る。しかしながら、アーキテクチャ全体を形成するときにこれらコンポーネントに関して使用され得る物理レイアウトが数多く存在する。特定のアーキテクチャに使用される厳密なレイアウトは、多数のファクタに基づいて選択又は設計されることができ、必要に応じて又は所望に応じて様々となり得る。また、例えば、通信経路長を最小化すること、アーキテクチャのコンポーネントによって占有される空間を最小化すること、又は製造コスト若しくは組み立てコストを最小化することによってなど、特定のアプローチを用いて、レイアウトを最適化する助けとし得る。以下、使用され得る物理レイアウト例を記述するが、それらのレイアウトは単に例示のためであり、数多くの更なるレイアウトが当業者によって承知され又は開発され得る。
【００６５】
図１０−１２は、本開示に従った汎用並列コンピューティングアーキテクチャにおけるコンポーネントの接続の他の例を示している。説明の容易さのため、これらの接続を、図１Ａ−１Ｃに示したアーキテクチャのコンポーネントに関して記述する。
【００６６】
図１０に示すように、レイアウト１０００は複数のｓｏｍａコア１０２を含み、それらのうちのサブセットがここに示されている。また、図１０では、各ｓｏｍａコア１０２についてのシナプスコプロセッサ１１２が、そのｓｏｍａコア１０２の上方に縦方向に整列されるように示されている。各ｓｏｍａコア１０２とそのシナプスコプロセッサ１１２との間にリデューサ１１５がある。各ｓｏｍａコア１０２が、そのそれぞれの信号ライン１００２を用いて、各ｓｏｍａコア１０２についてのそれぞれのシナプスコプロセッサ１１２（各列の１つのシナプスコプロセッサ１１２を意味する）にデータを送る。シナプスコプロセッサ１１２での計算の結果が、信号ライン１００４を介して、ｓｏｍａコア１０２についてのリデューサ１１５に送られる。各リデューサ１１５が、結果を、それぞれの信号ライン１００６を介してそのｓｏｍａコア１０２に送り返す。
【００６７】
一部の実施形態において、信号ライン１００２及び／又は１００４上の通信は、ポイント・ツー・ポイントであるとすることができ、シナプスコプロセッサ１１２が、データを受信し、次いで、それをライン上の次のシナプスコプロセッサ１１２に転送する。他の実施形態において、各信号ライン１００２及び／又は１００４は、複数の別々の信号ライン（例えば最大Ｎ個の信号ラインなど）を含む。これらの実施形態において、各信号ライン１００２が、ｓｏｍａコア１０２を信号ライン１００２上の各シナプスコプロセッサ１１２に直接接続することができ、また、各信号ライン１００４が、全てのシナプスコプロセッサ１１２を付随するリデューサ１１５と直接接続することができる。
【００６８】
更なる他の実施形態では、各リデューサ１１５を、それが付随するｓｏｍａコア１０２に統合することができ、信号ライン１００６は必要とされない。リデューサ１１５は、この場合、ｓｏｍａコア１０２のコンピューティング機能を用いて実装されることができ、あるいは、リデューサ１１５がそれ自身のコンピューティング機能を有してもよい。
【００６９】
図１１に示すように、レイアウト１１００は複数のｓｏｍａコア１０２を含み、それらのうちのサブセットがここに示されている。図１１におけるｓｏｍａコア１０２は、図１０においてと同様に示されており、それらは信号ライン１１０２を介してデータを送る。しかしながら、図１１では、各ｓｏｍａコア１０２に、複数のコプロセッサ１１２及び１つの別個のリデューサ１１５ではなく、複数のコプロセッサ／リデューサコア１１０４が付随している。コプロセッサ／リデューサコア１１０４は、コプロセッサ１１２の機能とリデューサ１１５の機能の一部とを組み合わせた機能ユニットである。例えば値を合計すること又は最小値若しくは最大値の発見することのような連想演算などの特定のタイプの処理がリデューサ１１５内で使用されるとき、リデューサの機能を分散させることができる。連想演算の使用は、コプロセッサ／リデューサコア１１０４のうちの一部において中間結果が生成されることを可能にする。各ｓｏｍａコア１０２についてのチェーン内の最後のコプロセッサ／リデューサコア１１０４が、最終的なリデューサ結果を生成する。これは、信号ライン１１０６の全長を短縮させることができ、場合により物理レイアウトを単純化させ得る。
【００７０】
各コプロセッサ／リデューサコア１１０４は、ｓｏｍａコア１０２について入来する入力データの処理をサポートする任意の好適構造を含む。これらコプロセッサ／リデューサコア１１０４のうち少なくとも一部はまた、バイナリ連想演算又は他の削減処理をサポートする任意の好適構造を含む。
【００７１】
信号ライン１１０６は、コプロセッサ／リデューサコア１１０４を互いに及びｓｏｍａコア１０２に結合する。ここでは、幾つかの信号ライン１１０６が、１つのコプロセッサ／リデューサコア１１０４から同一のコプロセッサ／リデューサコア１１０４に進むループとして示されている。これらの信号ライン１１０６は、それらコプロセッサ／リデューサコア１１０４内での内部通信を意味し、コプロセッサ／リデューサコア１１０４の外にある実際の経路を表しているわけではない。
【００７２】
一部の実施形態において、信号ライン１１０６からデータを受信するコプロセッサ／リデューサコア１１０４のみが、リダクション機能を含んでもよく、残りのコプロセッサ／リデューサコア１１０４は、シナプスコプロセッサのみを示し得る。図１１では、例えば、第１、第３、第５、及び第７行（ロウ）のコプロセッサ／リデューサコア１１０４が、シナプスコプロセッサのみを示し、第２、第４、第６、及び第８行のコプロセッサ／リデューサコア１１０４が、リダクション機能を持つシナプスコプロセッサを示すとし得る。
【００７３】
従って、図１１に示す例では、第２行のコプロセッサ／リデューサコア１１０４の各々が、２つの値（それ自身の値及び第１行からの値）を合計するか、２つの値の最小値若しくは最大値を見つけるかして、結果を出力することができる。第４行のコプロセッサ／リデューサコア１１０４の各々が、３つの値（それ自身の値、第２行からの値、及び第３行からの値）を合計するか、３つの値の最小値若しくは最大値を見つけるかして、結果を出力することができる。第６行のコプロセッサ／リデューサコア１１０４の各々が、２つの値（それ自身の値及び第５行からの値）を合計するか、２つの値の最小値若しくは最大値を見つけるかして、結果を出力することができる。第８行のコプロセッサ／リデューサコア１１０４の各々が、４つの値（それ自身の値、第５行からの値、第６行からの値、及び第７行からの値）を合計するか、４つの値の最小値若しくは最大値を見つけるかして、結果を出力することができる。第８行の各コプロセッサ／リデューサコア１１０４からの結果が、関連する列（カラム）について合計値又は最大／最小値を示すことになる。
【００７４】
なお、これは、リデューサ１１５の機能が分散され得る一手法を表しており、８つのｓｏｍａコア１０２が使用される実施形態に特有のものである。例えば異なる数のｓｏｍａコア１０２及び異なる数の付随コプロセッサを使用する他のアプローチなどの、他のアプローチも使用され得る。これまた留意されたいことには、値を合計すること及び最小／最大値を発見することは、コプロセッサ／リデューサコア１１０４に分散され得る処理のタイプの単なる例である。
【００７５】
更に留意されたいことには、リダクション機能によって使用される入力の数及び入力値の（１つ以上の）ソースは、必要に応じて又は所望に応じて様々であることができ、リダクション機能を実装するコプロセッサ／リデューサコア１１０４の厳密な位置は、必要に応じて又は所望に応じて様々であることができる。例えば、入力の数は、例えばｓｏｍａコアの数及び付随するコプロセッサの数などのアーキテクチャの全体サイズに依存して様々となり得る。また、リダクション処理に使用される入力は、コプロセッサ／リデューサコア１１０４から来るのみである必要はない。リダクション処理に使用される入力はまた、あるいは代わりに、例えば入力が他のリデューサからの出力を含む場合など、１つ以上の外部エージェントから来るものであってもよい。これは、モノリシックリデューサ実装が使用されて列内の全てのシナプスコプロセッサ１１２が１つのリデューサ１１５と通信するものである図１０に示した例とは対照的である。他の可能な実装は、列毎に１つのリデューサを持つとともに、チップ／半導体ダイ毎に１つ以上の追加リデューサを持ち、その（１つ以上の）追加リデューサを用いて、複数のチップ／半導体ダイ間の通信トラヒックを減らすことができる。
【００７６】
信号ライン１１０２及び１１０６は、好適な手法でコンポーネントを共に結合するために使用されることができ、また、信号ライン１１０２及び１１０６は、任意の（１つ以上の）好適技術を用いて製造されることができる。実装に応じて、図１１におけるコンポーネントは、単一デバイスにて、又は共に結合される複数のデバイスにて形成され得る。例えば、図１１に示すコンポーネントの全てが単一の集積回路チップ内に製造されてもよいし、あるいは、図１１に示す異なるコンポーネントが、直列ポイント・ツー・ポイント接続、高速バス、又は他の接続のような電気接続を用いて共に結合される異なる集積回路チップ内に製造されてもよい。
【００７７】
図１２は、ｓｏｍａコア１０２、シナプスコプロセッサ１１２、及びリデューサ１１５を実装するために複数の集積回路チップ１２０２及び１２０４が使用されるレイアウト１２００の一例を示している。なお、ここでの別々のシナプスコプロセッサ１１２及びリデューサ１１５の代わりに、コプロセッサ／リデューサコア１１０４が使用されてもよい。これまた留意されたいことには、上述のように、集積回路チップ１２０２と１２０４との間で送られるデータを更に削減するために、少なくとも１つの追加リデューサ１１５が使用されてもよい。
【００７８】
異なる集積回路チップ１２０２及び１２０４内のコンポーネントを結合するために、１つ以上の通信リンク１２０６又は他の通信インタフェースが使用され得る。例えば、（１つ以上の）通信リンク１２０６が、チップ１２０２内のｓｏｍａコア１０２からチップ１２０４内のシナプスコプロセッサ１１２への接続と、チップ１２０４内のリデューサ１１５からチップ１２０２内のｓｏｍａコア１０２への接続を含み得る。このタイプのレイアウトは、異なる数又はタイプのｓｏｍａコア１０２及びシナプスコプロセッサ１１２／リデューサ１１５を含む集積回路チップの様々な組み合わせを可能にし得る。
【００７９】
図１０−１２は、汎用並列コンピューティングアーキテクチャにおけるコンポーネントの物理レイアウトの例を示しているが、図１０−１２には様々な変更が為され得る。例えば、ハードウェアアーキテクチャは、任意の好適数のｓｏｍａコアを、好適数のシナプスコプロセッサ、リデューサ、コプロセッサ／リデューサ、又は信号ラインと共にサポートし得る。また、上述のように、多種多様な物理レイアウトを使用することができ、図１０−１２は、本開示を図示したレイアウトのみに限定するものではない。
【００８０】
図１３−１９は、本開示に従った汎用並列コンピューティングアーキテクチャにおける通信スキームの例を示している。ｓｏｍａコア１０２とそれらのシナプスコプロセッサ１１２との間でのデータ転送をサポートするためのネットワーク又は他の通信機構の実際の実装は、数多くの異なる形態をとることができる。以下、それらの通信機構のうち幾つかの具体例を記述するが、ｓｏｍａコア１０２とそれらのシナプスコプロセッサ１１２との間でデータを輸送することには、他の好適な通信スキームが使用されてもよい。また、以下に提供する通信スキーム例は、ｓｏｍａコア１０２及びそれらのそれぞれのシナプスコプロセッサ１１２が物理的に結び付ける実装にもそうでない実装にも等しく適用される。
【００８１】
Ｎ個のｓｏｍａコア１０２と、ｓｏｍａコア１０２毎にＮ個のシナプスコプロセッサ１１２とを有する実装を仮定する。図１３において、各ｓｏｍａコア１０２は、そのシナプスコプロセッサ１１２のうちの１つへの単一の接続１３０２を有し、そのｓｏｍａコア１０２についての残りのシナプスコプロセッサ１１２は共にデイジーチェーン接続されている。チェーン内の最初のシナプスコプロセッサ１１２は、ｓｏｍａコア１０２からデータを受信し、チェーン内のその他全てのシナプスコプロセッサ１１２は、チェーン内の前のシナプスコプロセッサ１１２からデータを受信する。この例では、ｓｏｍａコア１０２の全てのシナプスコプロセッサ１１２がデータを持つまで、複数のシナプスコプロセッサ１１２が次から次へと順に、ｓｏｍａコア１０２からのデータを受信する。
【００８２】
単一のデイジーチェーンの使用は要求されるものではない。例えば、図１４では、各ｓｏｍａコア１０２が、シナプスコプロセッサ１１２の複数のチェーンへの複数の接続１４０２を有することができる。各チェーンの最初のシナプスコプロセッサ１１２が、ｓｏｍａコア１０２からデータを受信し、そのデータが、各チェーン内のシナプスコプロセッサ１１２を通って順々に渡される。これら異なるチェーンに並列にデータを提供することができ、図１３と比較して、全てのシナプスコプロセッサ１１２へのデータのより速い送達を可能にする。なお、ここでは２本のチェーンが示されているが、如何なる数のシナプスコプロセッサチェーンが用いられてもよい。
【００８３】
デイジーチェーンの使用も要求されるものではない。例えば、図１５では、ｓｏｍａコア１０２が、そのシナプスコプロセッサ１１２の各々への専用の接続１５０２を有することができる。ここでは、シナプスコプロセッサ１１２が、ｓｏｍａコア１０２から直接的にデータを受信し、また、シナプスコプロセッサ１１２の全てが並列にデータを受信し得る。
【００８４】
単一のｓｏｍａコア１０２からそのシナプスコプロセッサ１１２のうちの１つへの通信をサポートし、そのシナプスコプロセッサ１１２からの通信を分岐させることも可能である。例えば、図１６は、単一の接続１６０２がｓｏｍａコア１０２を１つのシナプスコプロセッサ１１２に結合し、複数の接続１６０４がそのシナプスコプロセッサ１１２をシナプスコプロセッサ１１２の複数のチェーンに結合することを示している。データは、ｓｏｍａコア１０２から第１のシナプスコプロセッサ１１２に提供されることができ、次いで、そのデータがシナプスコプロセッサ１１２の複数のチェーンに並列に提供され得る。なお、ここではシナプスコプロセッサ１１２の３本のチェーンが示されているが、如何なる数のチェーンが使用されてもよい。これまた留意されたいことには、２つ以上のシナプスコプロセッサ１１２がｓｏｍａコア１０２から直接的にデータを受信した後に、それら２つ以上のシナプスコプロセッサ１１２からの通信を分岐させてもよい。
【００８５】
さらに、シナプスコプロセッサ１１２をツリー又は他のマルチレベル階層にて構成することも可能である。例えば、図１７は、単一の接続１７０２がｓｏｍａコア１０２を１つのシナプスコプロセッサ１１２に結合することを示している。複数の接続１７０４が、そのシナプスコプロセッサ１１２を別のレベルのシナプスコプロセッサ１１２に結合し、複数の接続１７０６が、そのレベルのシナプスコプロセッサ１１２を更に別のレベルのシナプスコプロセッサ１１２に結合する。好適数の階層レベルでのシナプスコプロセッサ１１２の使用を支援するために、この構成を更なる回数繰り返すことができる。なお、左から右に移るにつれ、各シナプスコプロセッサ１１２が次レベルの３つのシナプスコプロセッサ１１２に結合されているが、これは単に例示のためのものである。必要に応じて又は所望に応じて、他の好適なツリー構成がサポートされてもよい。なお、他の可能な一構成は、２つ以上のツリーを有し、これが意味することは、２つ以上のシナプスコプロセッサ１１２が、ｓｏｍａコア１０２から直接的にデータを受信し、個々のツリーのルートノードとして作用するということである。
【００８６】
図１３−１７のレイアウトは通信経路の構成例を示しているが、これらは単に例示のためのものである。各シナプスコプロセッサ１１２がそれが付随するｓｏｍａコア１０２からデータを受信することができる限り、これらのアプローチの様々な組み合わせも使用され得る。また、例えば、ｓｏｍａコア１０２を隣接するシナプスコプロセッサ１１２に通信可能に結合し、次いでそれらがメッシュネットワークを通じて他のシナプスコプロセッサ１１２にデータを伝達するメッシュネットワークなどの、他の又は更なるアプローチも使用され得る。適切な構造のメッシュは、各シナプスコプロセッサ１１２がデータを受信することを保証する。
【００８７】
ここまでの通信スキームに関する設計は、ｓｏｍａコアがそのシナプスコプロセッサ１１２とプライベートに通信し得ることを仮定してきたが、これは必ずしも当てはまる必要があるわけではない。例えば、図１８に示すように、これらに代わる１つの可能な実装は、ｓｏｍａコア１０２に対して仮想ネットワーク１８０２を使用するものであり、ｓｏｍａコア１０２からそれらのシナプスコプロセッサ１１２へと、データが、ネットワーク１８０２を介して効果的にルーティングされる。仮想ネットワーク１８０２は、シナプスコプロセッサ１１２それら自身によって実行されるロジックを用いて、又はシナプスコプロセッサ１１２の外部のコンポーネントを用いて実装され得る。
【００８８】
仮想ネットワーク１８０２を実装するために、仮想ネットワーク１８０２上で送られる各データパッケージが、該データパッケージが正しい（１つ以上の）宛先に届くことを可能にするメタ情報を有する。このメタ情報を記述する様々な手法が存在する。例えば、一部の実施形態において、各データパッケージは、起源となるｓｏｍａコア１０２に関する識別子を有し得る。ルーティングテーブル１８０４（静的又は動的のいずれか）を使用して、データパッケージを、それらそれぞれのｓｏｍａコア１０２から適切なシナプスコプロセッサ１１２に転送することができる。一つの特定の実装は、各シナプスコプロセッサ１１２についての静的なルーティングテーブルの使用を伴い、ルーティングテーブルへのインデックスとしてアドレスが使用される。他の実施形態では、各データパッケージが、送信元のｓｏｍａコア１０２によって指定される１つ以上の宛先アドレスを有してもよく、仮想ネットワーク１８０２は、データパッケージをそれらの宛先アドレスに従ってルーティングすることができる。起源となるｓｏｍａコアの識別子又は宛先アドレスを指定することには、如何なる好適な機構が使用されてもよい。機構の例は、各データパッケージに明示的な情報を付加すること、又は各データパッケージを指定のアドレス（例えば、ｓｏｍａコアのアドレス空間内など）に格納し、その指定されたアドレスが、必要な情報を暗示的に伝えることを含む。
【００８９】
更なる他の一例として、２つ以上の参加者（ｓｏｍａコア１０２又はシナプスコプロセッサ１１２）によって共有されるリソースを用いて通信を実装することが可能である。少なくとも１つの参加者が共有リソースへの書き込みアクセスを持ち、そして、少なくとも１つの他の参加者が共有リソースへの読み出しアクセスを持つ。共有リソースは、様々な手法で実装され得る。例えば、“ストア・アンド・フォワード（蓄積転送）”ネットワークは、データが、１つ以上のコンポーネントによって格納されるとともに、１つ以上のコンポーネントによって取り出される（転送される）ネットワークを意味する。“ストア・アンド・フォワード”ネットワークは、各ｓｏｍａコア１０２がシナプスコプロセッサ１１２にデータを通信することを、そのデータを指定のアドレスに格納することによって可能にし、シナプスコプロセッサ１１２はその後に同じアドレスからそのデータを読み出すことができる。
【００９０】
一例を図１９に示しており、ここでは、共有メモリ１９０２を用いて、ｓｏｍａコア１０２からコプロセッサ／リデューサコア１１０４（シナプスコプロセッサ１１２とリデューサ１１５も使用され得る）にデータが転送される。共有メモリ１９０２は、多数のメモリロケーション１９０４を含む。ｓｏｍａコア１０２は、それらのメモリロケーション１９０４にデータを書き込むことができ、シナプスコプロセッサ１１２又はコプロセッサ／リデューサコア１１０４は、それらのメモリロケーション１９０４からそのデータを読み出すことができる。これは、ｓｏｍａコア１０２がシナプスコプロセッサ１１２又はコプロセッサ／リデューサコア１１０４にブロードキャストする通信パターンに対して内部的に最適化された手法で行われることができる。
【００９１】
この例では、メモリロケーション１９０４にデータを書き込む又はそれからデータを受け取るために、メモリインタフェース１９０６及び１９０８が設けられて使用される。メモリインタフェース１９０６及び１９０８の各々は、アドレスを受け取ることができ、メモリインタフェース１９０６はまたデータを受け取ることができる。メモリインタフェース１９０６は、受け取ったデータを、受け取ったアドレスに書き込み、メモリインタフェース１９０８は、受け取ったアドレスから、要求されたデータを読み出す。しかしながら、留意されたいことには、ｓｏｍａコア１０２及びシナプスコプロセッサ１１２若しくはコプロセッサ／リデューサコア１１０４が、指定されたメモリロケーションに対する読み出し及び書き込みを行うように構成される場合、メモリインタフェース１９０６及び１９０８は省略されてもよい。
【００９２】
シナプスコプロセッサ１１２又はコプロセッサ／リデューサコア１１０４は、任意の好適手法で共有メモリ１９０２にアクセスし得る。例えば、シナプスコプロセッサ１１２又はコプロセッサ／リデューサコア１１０４は、新たなデータを特定するために共有メモリ１９０２にポーリングすることができ、あるいは、シナプスコプロセッサ１１２又はコプロセッサ／リデューサコア１１０４は、データが共有メモリ１９０２に格納されるときに、帯域外（アウト・オブ・バンド）通知を受け取ることができる。
【００９３】
例えば、コンポーネント間でデータを転送するために変数を使用して共有メモリ１９０２が実装されるものなど、この設計をソフトウェア実装でサポートすることが可能である。当然ながら、そのような変数は実行するデバイスのメモリに格納されるが、そのメモリは特別な構成を必要としない。図１９に示す機能は、他の手法で実装されることもできる。例えば、メールボックス又は他のセグメント化されたメモリ空間を実装する特殊目的のハードウェアも、通信を支援するために使用されることができる。
【００９４】
一部の実施形態では、Ｎ個のｓｏｍａコア１０２が存在し得るが、各ｓｏｍａコア１０２がＮ個のシナプスコプロセッサ１１２を有していなくてもよい。代わりに、各ｓｏｍａコア１０２は、Ｎ個の“論理”シナプスコプロセッサを、より少ない数の実在シナプスコプロセッサ１１２を用いて実装してもよい。それらの実施形態では、論理通信リンクのうちサブセットを物理的に実装することができ、上述の様々な方法を単純化することができる。
【００９５】
図１３−１９は、汎用並列コンピューティングアーキテクチャにおける通信スキームの例を示しているが、図１３−１９には様々な変更が為され得る。例えば、ｓｏｍａコア１０２と付随するシナプスコプロセッサ１１２との間でデータを転送するために、任意数の他の又は追加の技術が使用されてもよい。また、ここに示した技術はいずれも、シナプスコプロセッサ１１２とリデューサ１１５又はコプロセッサ／リデューサコア１１０４を含むアーキテクチャで使用され得る。
【００９６】
上述の一部の実施形態において、各ｓｏｍａコア１０２は、そのシナプスコプロセッサ１１２を、少なくとも１つのプログラムφを実行するようにプログラムすることができ、その（１つ以上の）プログラムφは、入力データが到着するとすぐに実行されることができる。あるｓｏｍａコア１０２についてのリデューサ１１５は、そのｓｏｍａコア１０２についての全てのシナプスコプロセッサ１１２からのプログラムφの結果を用いて、少なくとも１つのプログラムΨを実行する。特定の実施形態において、各プログラムφは、固定ベクトルサイズ及びループなしを所与としてＯ（１）時間で実行できることが多く、プログラムΨはＯ（ｌｏｇＮ）時間で実行できることが多い。また、特定の実施形態において、各ｓｏｍａコア１０２についてシナプスコプロセッサ１１２及びリデューサ１１５によって実行される集団的処理は：
【数１】
2020517000.tif 000003
として表され得る。ここで、ｉは、送り元のｓｏｍａコア１０２の識別子（又はｓｏｍａコア１０２の識別子＋ｓｏｍａコア１０２のｓｏｍａグループ識別子）を表し、Ｎは、ｓｏｍａコア１０２の数（又はｓｏｍａコア１０２の数×ｓｏｍａグループの数）を表す。また、ｊは、チャネル識別子を示し、ｐは、シナプスコプロセッサ１１２で使用される１つ以上のパラメータ（例えばパラメータ４０４又は５０４など）（例えば状態変数又は局所変数などであり、チャネル特異的であってもなくてもよい）を表す。さらに、ｘｉは、ｉ番目のｓｏｍａコア１０２の出力を表し、ｙｊは、チャネルｊにおける、リデューサによって結果としてｓｏｍａコア１０２に提供される出力を表す。さらには、φｊ（）は、入力データｘｉ及び場合によりパラメータｐを用いてｊ番目のチャネルについてシナプスコプロセッサ１１２によって実行される関数を表し、Ψ（）は、シナプスコプロセッサ１１２の出力を用いてローカルｓｏｍａコア１０２についてリデューサ１１５によって実行される関数を表す。
【００９７】
φｊ（）関数の例は：
【数２】
2020517000.tif 000004
を含み得る。ここで、ａ、ｂ、ｃ、及びｒは、シナプスコプロセッサ１１２内のレジスタの名称を表すことができ、ｘは、ｓｏｍａコア１０２からの入力値を表すことができる（ただし、シナプスコプロセッサ１１２の別のレジスタも代わりに使用され得る）。ｓｅｌｅｃｔ演算は、第１パラメータの条件を（例えば、単純な非ゼロテストを実行することなどによって）テストし、テストの結果に基づいて第２パラメータ又は第３パラメータのいずれかを返す。ｉｎｄｅｘ演算は、複数のｓｏｍａグループを持つ実装に特有とし得る。各ｓｏｍａグループが同数のｓｏｍａコア１０２を含み得る。ｓｏｍａグループの更なる詳細については以下にて提示する。一部の実施形態において、シナプスコプロセッサ１１２によって実装される関数はいずれもループを伴わない。
【００９８】
Ψ（）関数の例は：
【数３】
2020517000.tif 000005
を含み得る。ここで、ｖは、ｓｏｍａコア１０２に提供されるリデューサ１１５の出力を表し、ｒ［ｉ］は、リデューサ１１５によってシナプスコプロセッサ１１２から受け取られる入力を表す（複数のｓｏｍａグループを有する実装では、同一のシナプスコプロセッサ１１２から複数の値が得られ得る）。ｍａｘ関数及びｍｉｎ関数の各々は、（ｉ）最大値又は最小値と、（ｉｉ）最大値又は最小値を提供したシナプスコプロセッサ１１２のインデックス値ｉとの両方を返すことができる。Ψ（）関数の結果は、１つ以上のレジスタを用いてｓｏｍａコア１０２に利用可能にされ得る。
【００９９】
これらの実施形態において、シナプスコプロセッサ１１２は、ループで動作して積極的に入力を取り出す（及び必要な場合に入力を待つ）伝統的なプログラムではプログラムされることができないことがあり得る。代わりに、各チャネルがプログラムφに関連付けられ、そのプログラムφが、チャネルに関してデータが到着したときに実行可能としてマークされ、そして最終的に、計算リソースが利用可能になったときに実行され得る。全てのシナプスコプロセッサプログラムφが終了すると、リダクションプログラムΨの結果を計算することができる。リダクションプログラムΨによる結果の計算は、最低限の数のシナプスコプロセッサの結果が利用可能になるとすぐに開始することができるが、例えば以下に述べるものなどの注意事項がある。リダクションプログラムΨの結果は、チャネル毎のレジスタに保存され得る。ｓｏｍａコア１０２が、削減結果を読み取るための命令を発すると、リデューサ１１５は、そのチャネルについての次の削減結果を生成する準備が整い得る。それまでは、そのチャネルについてのリデューサ１１５の処理が阻止され得る。
【０１００】
シナプスコプロセッサ１１２及びリデューサ１１５におけるレジスタの割り当て及びチャネルの割り当ては、望まれる場合には抽象化されることができる。例えば、プログラム仕様におけるこれらリソースの各々についての絶対インデックスを参照することに代えて、割り当て機構を使用して、マルチプログラム実行と同等のものを達成し得る。例えば、プログラム（φ及びΨプログラムを含む）がロードされると、使用される実在レジスタがレジスタファイルの利用可能なレジスタから選択され得るとともに、利用可能なチャネルが選択され得る。入来するデータに基づいてプログラムが呼び出されるので、明示的な同時並行性を生み出す必要はない。プログラムを終了すると、レジスタ及びチャネルに関して使用されたリソースが再び利用可能にされ得る。シナプスコプロセッサ１１２及びリデューサ１１５によって実行される実際の命令は、これのいずれについても知る必要がない。むしろ、アップロードされたプログラムコードの命令は、絶対レジスタ番号又はインデックスを使用することができ、抽象化は、より高い階層で行われることができ、ｓｏｍａコア１０２によるプログラムローディングに先立って、プログラム及び利用可能リソースのニーズに基づく適切なコード生成又は書換えが行われる。
【０１０１】
最低限の数のシナプスコプロセッサの結果が利用可能になるとすぐに開始するリダクションプログラムΨによる結果の計算に対する注意事項の一例は、以下の通りである。演算及び場合によりデータタイプに依存して、ハードウェアアーキテクチャは、指定された処理順序に従わないことによって、再現性を犠牲にして、プログラムΨの実行を大幅に高速化することができるモードをサポートし得る。例えば、浮動小数点演算は、キャンセルの可能性があるため、結合規則に従わない。これの一具体例は、毎回まったく同じ結果を生じることを保証するために、浮動小数点加算が同じ順序で実行されなければならない場合である。これは、１つの入力値がまだ利用可能でないが、処理順序で後の他の入力値が利用可能である場合に低速化を引き起こしてしまい得る。リデューサ１１５は、処理順序が常に維持されるように入力値を待つ（低速化をもたらす）ようにプログラムされることができ、あるいは順不同で合算を実行する（より迅速に結果を得ることを可能にするが、潜在的に低い再現性を持つ）ようにプログラムされることができる。
【０１０２】
上述のように、ハードウェアアーキテクチャの実装は、２つ以上のグループのｓｏｍａコア１０２を含むことができる。このようなアプローチは、単一の集積回路内にｓｏｍａグループを実装してもよいし、あるいは、異なるｓｏｍａグループが別々の集積回路として実装されてもよい（そして、それらの集積回路が、例えば電気接続又は光接続などで共に結合され得る）。幾つかのタイプのプログラム（より詳細に後述するものを含む）は、データセット全体をｓｏｍａコア１０２にマッピングすることができる場合に、このタイプのハードウェアアーキテクチャを用いて大幅に高速化されることができる。
【０１０３】
複数のｓｏｍａグループでのソリューションを容易にするため、各シナプスコプロセッサ１１２の通信相手の数に応じて、一部のリソース及び処理を複製してもよい。例えば、単純なモデルでは、各シナプスコプロセッサ１１２が、きっちり１つのｓｏｍａコア１０２から結果を受信するとし得る。複数のｓｏｍａグループでのソリューションでは、各シナプスコプロセッサ１１２が、ｓｏｍａグループ当たり１つのｓｏｍａコア１０２から結果を受信し得る。シナプスコプロセッサプログラムにおいて、これは、データ転送に関係するリソース（例えば、送信されるデータを保持するレジスタ及び結果を保持するレジスタなど）が複製される場合に、まるで単一ｓｏｍａグループでの実装においてのように表現されることができる。従って、各シナプスコプロセッサレジスタについてＳ個の複製が存在する場合、最大Ｓ個までのｓｏｍａグループを扱って動作するように単一のプロセッサを実装することができる。ｓｏｍａグループ毎のパラメータを可能にするには、データのソースであるｓｏｍａグループ番号へのアクセスを提供することが有用又は必要であり得る。これは、特定の通信に使用されるｓｏｍａコアインデックスに加えてｓｏｍａグループ番号を返すものである上述のｉｎｄｅｘ演算を用いて達成され得る。
【０１０４】
複数のｓｏｍａグループの実装は、それらが物理的に分離されている場合、例えばフォトニクス又はその他の高速インタコネクトを用いて複数の集積回路を結合することによってなど、如何なる好適手法で達成されてもよい。各ｓｏｍａコア１０２がその結果を専用バスに書き込む場合、各ｓｏｍａグループ内の異なるｓｏｍａコア１０２のそれぞれのバスを接続することができ、それが、各バスを１：Ｎの通信バスからＳ：Ｎのバスに変化させる。これが許されるのは、例えば、送信されるデータが、最も一般的な形式［ｓｏｍａグループＩＤ、ｓｏｍａＩＤ、チャネルＩＤ］のような完全なアドレスを担持していて、各ｓｏｍａグループ内の各ｓｏｍａコア１０２上のあるシナプスコプロセッサ１１２がデータを受け取ることを確保し得る限り、ｓｏｍａグループ毎を基本にデータがルーティングされることが可能にされる場合である。
【０１０５】
さらに、信号ライン１２２及び１２４を用いてｓｏｍａコア１０２をシナプスコプロセッサ１１２に結合するのに使用される（１つ以上の）ネットワークを実装するための数多くの可能なアプローチが存在する。例えば、上述のように、Ｎ個の独立したネットワークの各々が、Ｎ個のｓｏｍａコア１０２のうちの１つをソースとして持つとともに、そのｓｏｍａコア１０２をＮ個のシナプスコプロセッサ１１２（各ｓｏｍａコア１０２のもの）に接続することができる。各ｓｏｍａコア１０２の各出力に対する専用ネットワークは、データ転送において起こり得る競合を最小化し得るが、伝送が発生していないときにリソースが使用されないことを意味する。理想的には、ｓｏｍａコア１０２の全てが足並みを揃えて動作して、ほぼ同時にデータを送信するが、これは専用の信号ラインを用いてのみ良好に対処され得る。実際には、ｓｏｍａコア１０２は、例えば、リソースを待つような実行における細かい影響、又は分岐予測のような様々な動的決定などの、様々な要因によって同期を失い得る。その場合、伝送は厳密に同時には発生しないことになる。伝送されるデータは通常は小さいので、ｓｏｍａコア１０２を接続するためにネットワークのうちの１つ（又は少ない数）を使用することで、有意な低速化なく、十分であり、それが、リソースの改善された利用を提供することになる。なお、上述のアドレス［ｓｏｍａグループＩＤ、ｓｏｍａＩＤ、チャネルＩＤ］において、ｓｏｍａグループ毎の各ｓｏｍａコア１０２が、それを各ｓｏｍａコア１０２上のシナプスコプロセッサ１１２に接続するそれ自身の専用ネットワークを有する場合、ｓｏｍａＩＤは省略されることができる。接続ネットワークの他の一実装は、ｓｏｍａグループ当たり１つの単一ネットワークを有し、全てのデータパッケージが、それに付加された完全なアドレスを有する。
【０１０６】
ｓｏｍａコア１０２間にネットワークを作り出すための様々な手法が存在する。１つの可能性は、全てのデータパケットを中心の開始ポイントから各受信者に送るものである。この開始ポイントから、データパケットはまた、他のｓｏｍａグループにも容易に送られることができる。このアプローチの利点は、直接的な送達、高スループット（異なる宛先への伝送との衝突がない）、及び低レイテンシを含む。１つの欠点は、特にｓｏｍａ当たり又はｓｏｍａグループ当たり１つのネットワークでは、高コストであることである。
【０１０７】
他の１つのアプローチは、限られた組みのｓｏｍａコア１０２とのポイント・ツー・ポイント接続を提供するとともに、受信者にデータパッケージをさらに配布させるものである。それら受信者は、異なるサブセットのｓｏｍａコア１０２に接続されることができ、それらサブセットは、全てのｓｏｍａコア１０２が接続されることを確保するように選択され得る。理想的には、それらサブセットは、ネットワークの“直径”を縮小又は最小化するように選択されることができ、ここで、ネットワークの直径は、２つのコア１０２間の最大距離（宛先に到達するために踏み入るｓｏｍａコア１０２の数）を指す。ｓｏｍａコア１０２当たりの接続数についての一定の上限を所与として、その程度の超立方体（ハイパーキューブ）アーキテクチャが直径を最小化し得る。
【０１０８】
全てのｓｏｍａコア１０２がデータを受信して、できるだけ多くの個別の接続上に送信を広げることを保証するために、様々なアプローチが使用され得る。例えば、よく知られたアルゴリズムは、送信元のｓｏｍａコア１０２のインデックス及びそれからデータが受信されるリンクを考慮に入れることができる。そのような場合、各ｓｏｍａコア１０２からのデータはある固定パターンで送られることができるが、そのパターンが個々のｓｏｍａコア１０２で異なって、接続の利用を最大化することができる。このアプローチはまた、各ｓｏｍａコア１０２が選択された隣接者とだけ通信し、それら隣接者が必要な場合にデータを転送するとし得るので、各ネットワークの中心の開始位置の排除を可能にする。ネットワーク内の１つ以上のｓｏｍａコア１０２が、他のｓｏｍａグループにデータを送信することを担い得るとともに、異なるｓｏｍａコア１０２が異なるｓｏｍａグループとの通信を担い得る。
【０１０９】
動的アルゴリズムも使用されることができる。例えば、受信された全てのパケットが、１つのｓｏｍａコア１０２から全ての隣接者（パケットを送信するｓｏｍａコア１０２を除く）に転送されることができる。そして、各隣接ｓｏｍａコア１０２は、それがそのパケットを既に見たかどうかの記録をつけることができる。そうであれば、そのパケットを単純に廃棄することができる。そうでなければ、その隣接ｓｏｍａコア１０２についてのシナプスコプロセッサ１１２が、そのパケットを受信して転送する。このアプローチの１つの利点は、より迅速にネットワーク全体に送りつけることができることである。このアプローチの別の１つの利点は、複数のｓｏｍａグループを設計に統合することが、より簡単であることである。１：Ｎのバスアーキテクチャ（送信者の衝突のチェックをする必要がない）を、Ｓ：Ｎのアーキテクチャに変えることは、大きな前進であり得る。１つのｓｏｍａグループのあるｓｏｍａコア１０２が、別のｓｏｍａグループの別のｓｏｍａコア１０２にパケットを転送する場合、後者は、そのパケットを、自身が任意の他の入来パケットをどのように見るのかと同様に見ることができる。実際には、このｓｏｍａコア間リンクは、通常のｓｏｍａグループ内ｓｏｍａ間接続（normal  inter-soma  intra-soma  group  connections）のように見なされ得る。
【０１１０】
上述のように、シナプスコプロセッサ１１２及びリデューサ１１５の使用を容易にするために、数多くの新命令を使用することができる。それらの命令は、ｓｏｍａコア１０２によって実行される命令と、シナプスコプロセッサ１１２及びリデューサ１１５に提供されてそれらによって実行される命令とを含む。以下、この新たなハードウェアアーキテクチャをサポートするために使用され得る新命令のタイプの例を提示する。なお、以下では具体的な命令が記述されるが、必要に応じて又は所望に応じて、他の又は追加の命令がハードウェアアーキテクチャにおいてサポートされ得る。
【０１１１】
表１は、ｓｏｍａコア１０２及びシナプスコプロセッサによって実行され得る命令の例を示している。表１において、ｏｒｅｇは、ｓｏｍａコアレジスタ（例えばメモリデバイス１０６内など）を表し、ｙｒｅｇは、シナプスコプロセッサレジスタ（例えばメモリデバイス１１４内など）を表す。
【表１】
2020517000.tif 000006
【０１１２】
表２は、リデューサ１１５によって実行され得る処理の例を示している。リダクション処理は、対数的に多くのサイクルを要することがあり、そのため、リダクション処理は、複数のこのような処理を異なるツリー階層でパイプライン化することの恩恵を受け得る。
【表２】
2020517000.tif 000007
【０１１３】
一部の実施形態において、各シナプスコプロセッサ１１２は、ＳＩＭＤ演算を実行することができる。各ｓｏｍａコア１０２は、特定のチャネル上のデータ通信の前に、そのチャネルについての命令シーケンスをローカルシナプスコプロセッサ１１２にアップロードすることができる。さらに、各ｓｏｍａコア１０２は、ブロードキャストすることによって、そのチャネルについての命令シーケンスをそのシナプスコプロセッサ１１２の全てにアップロードすることができる。ｓｏｍａコア１０２は更に、必要な入力データが利用可能になったときに実行されるべき処理を、リデューサ１１５にプログラムすることができる。表３は、実行のためにシナプスコプロセッサ１１２にアップロードされ得る命令のタイプの例を示している。
【表３】
2020517000.tif 000008
【０１１４】
上述のハードウェアアーキテクチャは、機械学習、科学計算、ビデオゲーム、及び他の分野における広範なクラスのアルゴリズムを加速させることができる。以上の命令のタイプに基づき、以下にて、６つのタイプの問題例が、本特許文献に記載されたハードウェアアーキテクチャを用いてどのように加速されて解かれ得るのかを説明する。
【０１１５】
第１の例として、提案したアーキテクチャによって加速されることが可能な、深層学習で使用される１つアルゴリズムは、スパースコーディング（sparse  coding）である。その最も単純な形態において、スパースコーディングは、｜｜ｘ｜｜＝１で正規化された入力ベクトルｘをとり、次式：
【数４】
2020517000.tif 000009
として規定されるエネルギーｅを最小化する正規化されたスパース出力ベクトルｙを計算する。ここで、Ｆは因子行列であり、｜｜ｙ｜｜＝１である。また、
【数５】
2020517000.tif 000010
は、ｙのエントリーの絶対値の合計を表し、λは、出力のスパース性を制御する定数である。教師なし学習モードにおいて、因子行列Ｆは、トレーニング入力ｘｉのセットにわたるエネルギーｅｉの合計Ｅを最小化するように選択される。両方の最小化を達成する１つの手法は勾配降下法であり、負の勾配が：
【数６】
2020517000.tif 000011
として規定され、その後、｜｜ｙｉ｜｜＝１の制約が課される。ここで、ｓｇｎ  ｙは、ｙのエントリーの符号のベクトルを表す。
【０１１６】
（ｙ−Ｆｘ）を計算するために、訓練入力ｘ及び出力ｙは、共有の仮想又はローカルｓｏｍａメモリ内にあることができる。因子行列Ｆ（スパースではない）のエントリーは、シナプスコプロセッサ１１２のレジスタ内にあることができる。具体的には、因子行列ＦのエントリーＦｊｋは、ｊ番目のｓｏｍａコア１０２についてのｋ番目のシナプスコプロセッサ１１２のレジスタ内にあることができる。ｓｏｍａコア１０２によってそのシナプスコプロセッサ１１２にブロードキャストされるＳＩＭＤ命令は、相対的アドレッシングを使用することができ、それにより、複数のｓｏｍａコア１０２にわたって同時に、ｋ番目のｓｏｍａコア１０２が、入力エントリーｘｋを、ｊ番目のｓｏｍａコア１０２のｋ番目のシナプスコプロセッサ１１２にブロードキャストすることができる。ｊ番目のｓｏｍａコア１０２のｋ番目のシナプスコプロセッサがＳＩＭＤ的に乗算Ｆｊｋｘｋを実行し、次いで、それが、そのｓｏｍａコアのシナプスコプロセッサ１１２にわたってｊ番目のｓｏｍａコア１０２のリデューサ１１５によって対数時間で合計されて、（Ｆｘ）ｊ、ひいては、ｊ番目のエントリー（ｙ−Ｆｘ）ｊを生み出す。
【０１１７】
Ｆについての勾配降下を計算するために、エントリーＦｊｋが（ｙ−Ｆｘ）ｊｘｋに比例増分される。ｊ番目のｓｏｍａコア１０２は（ｙ−Ｆｘ）ｊを計算したところであり、そのｋ番目のシナプスコプロセッサ１１２は、最新のｘｋ値を受け取って、それをシナプスコプロセッサ１１２のレジスタに格納している。故に、ｊ番目のｓｏｍａコア１０２が、（ｙ−Ｆｘ）ｊをそのｋ番目のシナプスコプロセッサ１１２にブロードキャストし、次いで、該シナプスコプロセッサ１１２が、ＳＩＭＤ的に、その結果に、格納されたｘｋ値を乗算し、その値の倍数をそのシナプスコプロセッサ１１２に格納されたＦｊｋ値に加算する。
【０１１８】
これを擬似コードで表現するため、ｓｏｍａコア１０２は複数命令複数データ（ＭＩＭＤ）コアであるので、命令が置かれているｓｏｍａコア１０２のインデックスをｉが表すという規則が採用される。ＭＩＭＤに起因して、命令はｉによってパラメータ化され得る。対照的に、シナプスコプロセッサ１１２はＳＩＭＤコアとし得るので、ｓｏｍａコア１０２は、同じ命令シーケンスをそのシナプスコプロセッサ１１２の全てにブロードキャストすることができる。明瞭さのため、レジスタに、レジスタ番号ではなく、変数名のラベルを付す。これらの規則を所与として、深層学習問題に関するスパースコーディングを、ハードウェアアーキテクチャを用いて、次のように解くことができる：
send x →cid1
synapse cid1 {
recv → x
multiply F x → y’
return y’
} reduce add recv cid1 → y’
y - y’ → dy
store dy → cid2
synapse cid2 {
recv → dy
multiply dy x → dF
multiply dF -e → dF
add F dF → F
}。
【０１１９】
第２の例として、提案したアーキテクチャによって加速されることが可能な、深層学習で使用される別の１つのアルゴリズムは、制限ボルツマンマシンに関わる。このタイプのネットワークでは、｛−１，１｝の値をとる入力ベクトルｘと出力ベクトルｙとを、ボルツマン分布によって：
【数７】
2020517000.tif 000012
のように確率的に関連付けることができる。ここで、Ｚは分配関数（partition  function）であり、エネルギーＥ（ｘ，ｙ）は、その最も単純な形態で：
【数８】
2020517000.tif 000013
として表現されることができる。このネットワークは、入力を所与として出力は条件付きで独立であり、逆もまた然りという意味で“制限”されている。これが意味することは、入力が与えられると、出力を、
【数９】
2020517000.tif 000014
として表される確率で独立してサンプリングすることができるということである。ここでσ（ｘ）はロジスティック関数である。このネットワーク用の対照発散教師なし訓練アルゴリズムは、結合（カップリング）Ｆについての勾配：
【数１０】
2020517000.tif 000015
をとり、ここで、ｘは訓練入力であり、ｙは、上で説明したようにｘからサンプリングされ、ｘ’はｙからサンプリングされ、ｙ’はｘ’からサンプリングされる。
【０１２０】
この問題を実装するために、訓練入力ｘｋ及び出力ｙｊは、共有の仮想又はローカルｓｏｍａメモリ内にあることができる。結合Ｆｊｋは、シナプスコプロセッサ１１２のレジスタ内にあることができる。具体的には、各結合Ｆｊｋは、ｊ番目のｓｏｍａコア１０２のｋ番目のシナプスコプロセッサ１１２のレジスタ内にあることができる。このアルゴリズムがどのように加速されるのかを説明するために、先ず、サンプリングステップを説明する。入力ベクトルｘが、複数のｓｏｍａコア１０２にわたって同時にＳＩＭＤ通信を介して与えられると、ｋ番目のｓｏｍａコア１０２が、入力エントリーｘｋを、ｊ番目のｓｏｍａコア１０２のｋ番目のシナプスコプロセッサ１１２にブロードキャストする。次いで、ｊ番目のｓｏｍａコア１０２のｋ番目のシナプスコプロセッサ１１２が、ＳＩＭＤ的に乗算Ｆｊｋｘｋを実行し、次いで、それが、そのｓｏｍａコアのシナプスコプロセッサ１１２にわたってｊ番目のｓｏｍａコア１０２のリデューサ１１５によって対数時間で合計されて、ΣｋＦｊｋｘｋを生み出す。次いで、ｊ番目のｓｏｍａコア１０２が、この合計のロジスティック関数を計算し、それを、｛−１，１｝からｙｊをランダムにサンプリングする確率として使用する。
【０１２１】
次に、勾配の計算が行われる。訓練入力ｘから開始して、上述のサンプリングステップを３回実行することで、ｊ番目のｓｏｍａコア１０２におけるｙ、ｋ番目のｓｏｍａコア１０２におけるｘ’、及びｊ番目のｓｏｍａコア１０２におけるｙ’を生み出す。ｊ番目のｓｏｍａコア１０２が、ｙｊ及び（ｙ’）ｊを、その全てのシナプスコプロセッサ１１２に、そこのレジスタ内に格納すべくブロードキャストする。次いで、高帯域幅通信を用いて、ｋ番目のｓｏｍａコア１０２から全ｓｏｍａコア１０２のｋ番目のシナプスコプロセッサ１１２へと（ｘ’）ｋを同時に送信する。最後に、ｊ番目のｓｏｍａコア１０２のｋ番目のシナプスコプロセッサ１１２が、（ｙ’）ｊ（ｘ’）ｋ−ｙｊｘｋを計算し、これの倍数を、それが保持する値Ｆｊｋから減算する。
【０１２２】
擬似コードでは、フォワードサンプリングアルゴリズムは：
send x → cid
synapse cid {
recv → x
multiply F x → y’
return y’
} reduce add
recv cid → y’
σ(y’) → p
if(rand() < p) then y = 1 else y = -1 endif
として表現されることができ、フォワードサンプリングは類似したものとし得る。サンプリングが与えられると、勾配アルゴリズムは：
forward sample x → y
(keep x in synapse register)
backward sample y → x’ (keep y in synapse register)
forward sample x’ → y’ (keep x’ in synapse register)
store y’ → cid2
synapse cid2 {
recv → y’
multiply y’ x’ → yx’
multiply y x -1 → yx
add yx’ yx → dF
multiply dF -e → dF
add F dF → F
}
として表現されることができる。
【０１２３】
第３の例として、より良い通信の恩恵を受けることが可能な別の機械学習法は、階層的クラスタリング法である。最も単純な階層的クラスタリング法は、それ自身のクラスタ内の各アイテムから開始する。そして、各階層レベルにて、階層的クラスタリング法は、最も小さい最小距離だけ離れた２つのクラスタを単一クラスタへとグループ化する。
【０１２４】
改良階層的クラスタリング法の第１ステップは、クラスタ間の距離のイニシャル行列を計算することを含む。各アクティブｓｏｍａコア１０２がクラスタを表すとすることができ、そのシナプスコプロセッサ１１２が、他のクラスタへの二乗距離を格納するとすることができる。最初の反復において、各クラスタは単一のアイテムであり、故に、各アクティブｓｏｍａコア１０２が、そのアイテムの座標を、他のｓｏｍａコア１０２の対応するシナプスコプロセッサ１１２にブロードキャストし、そして、そのシナプスコプロセッサ１１２が並列に、それ自身のアイテムに対する他のアイテムの二乗距離を計算する。改良階層的クラスタリング法の第２ステップは、クラスタ間の最小二乗距離を見つけることを含む。各ｓｏｍａコア１０２が（そのリデューサ１１５を通じて）、最小値演算を用いてそれ自身のシナプスコプロセッサの二乗距離を削減し、そして、各ｓｏｍａコア１０２が、この数を全てのｓｏｍａコア１０２にブロードキャストし、全てのｓｏｍａコア１０２が再び、最小値演算を用いて（それらのリデューサ１１５を通じて）値を削減する。この第２の最小値演算は、等しい値の場合に予測可能なタイブレーカが存在する（例えば、最低インデックスシナプスコプロセッサ値を選択するなど）と仮定すると、全てのｓｏｍａコア１０２に対して同じ結果を生成する。一代替例は、１つのｓｏｍａコア１０２に対して第２の最小値演算を実行し、その結果を他の全てのｓｏｍａコア１０２にブロードキャストすることである。
【０１２５】
改良階層的クラスタリング法の第３ステップは、この最小距離だけ離れた２つのクラスタを見つけることを含む。最善のクラスタに対応するｓｏｍａコア１０２が、それ自身以外のｓｏｍａコア１０２への最小距離を計算し、次いで、次善のクラスタが、全てのｓｏｍａコア１０２にブロードキャストし返す。改良階層的クラスタリング法の第４ステップは、２つの選択されたクラスタを単一のクラスタへと結合することを含む。各ｓｏｍａコア１０２が、最善及び次善のクラスタまでのその距離の最小値をとり、この最小距離を、最善のクラスタに対応するシナプスコプロセッサ１１２に格納し返すとともに、この最小距離を、このｓｏｍａコアのチャネル上でブロードキャストする。次いで、最善のクラスタに対応するｓｏｍａコア１０２が、そのシナプスコプロセッサ１１２の全てに、それらの距離をこれらブロードキャストされたものに置き換えさせる。最後に、次善のｓｏｍａコア１０２及び対応するシナプスコプロセッサ１１２が計算から脱落する。そして、第２ステップから第４ステップが、１つのクラスタのみが存在することになるまで繰り返される。
【０１２６】
擬似コードでは、二乗距離行列を計算する第１ステップ（各座標に対して繰り返す）は：
send -x → cid
synapse cid {
recv → x’
add x x’ → dx  //ｘはローカルクラスタの座標である
multiply dx dx → dx
add dist dx → dist
return dist
} reduce min
recv cid → mindist
として表現されることができる。
【０１２７】
クラスタ間の最小距離を見つける第２ステップは：
send mindist → cid2
synapse cid2 {
recv → mindist ; id → cluster
return mindist, cluster
} reduce min
recv cid2 → allmindst, mincluster
として表現されることができる。
【０１２８】
最小距離だけ離れた２つのクラスタを見つける第３ステップは：
if(mincluster == id) then
store -mincluster → cid3
synapse cid3 {
recv → mincluster
id → cluster
add cluster mincluster → notmin
if notmin then dist else ∞ → mindist
return mindist, cluster
} reduce min
recv cid3 → dummy, nextcluster
send nextcluster → cid4
else
send 0 → cid4
endif
synapse id {
recv → nextcluster
} reduce one mincluster
recv cid5 → nextcluster
store -mincluster → cid6
synapse cid6 {
recv → mincluster
id → cluster
add cluster mincluster → notmin
return dist
} reduce one mincluster
recv cid6 → mindist
store -nextcluster → cid7
synapse cid7 {
recv → nextcluster
add cluster nextcluster → notnext
return dist
} reduce one nextcluster
recv cid7 → nextdist
mindist = min(mindist, nextdist)
として表現されることができる。
【０１２９】
２つの最も近いクラスタを結合する（及びそれらのうち一方を非アクティブにする）第４ステップは：
store mindist → cid8
synapse cid8 {
recv → mindist
if notmin then dist else mindist → dist
if notnext then dist else ∞ → dist
}
send mindist → cid9
if(mincluster == id) then
synapse cid9 { recv → dist }
elif(nextcluster == id) then
synapse cid9 { recv → dummy; ∞ → dist
}
else
synapse cid9 { recv → dummy }
endif
として表現されることができる。
【０１３０】
第４の例として、別の一般的な機械学習法は、ベイズネットワークを含み、これは、多数の変数の複雑な同時確率関数を、各々が少数の変数（最大でネットワークのｉｎ−ｄｅｇｒｅｅまで）のみを伴う複数の条件付き確率の積へと分解するものであるベイジアンネットワークに関わる。すると、この問題は、各変数の周辺分布（marginal  distribution）を計算するものである。標準的なシリアルアーキテクチャでは、これは、
【数１１】
2020517000.tif 000016
に比例する時間をとるものである確率伝搬アルゴリズム（Belief  Propagation  Algorithm）を用いて遂行されることができる。このアルゴリズムは、上記数の積を反復的に計算し、そして、２Ｉｎ−Ｄｅｇｒｅｅ個のそのような積各々のＶａｒｉａｂｌｅｓ×Ｉｎ−Ｄｅｇｒｅｅ和を計算する。
【０１３１】
この新たなハードウェアアーキテクチャを用いると、これは、十分なｓｏｍａコア１０２及びシナプスコプロセッサ１１２が存在する限り、定数時間で遂行されることができる。任意の１つのｓｏｍａコア１０２へのファンインはたったの２Ｉｎ−Ｄｅｇｒｅｅであり、故に、これは通信を飽和させない。積を計算するために、対数の和を累算する（ｓｏｍａコア１０２でｅｘｐ演算及びｌｏｇ演算が実行される）か、あるいは、リデューサ１１５の利用可能な累算方法を、和だけでなく積も含むように拡張するかのいずれかを行い得る。
【０１３２】
第５の例として、これらのアーキテクチャで加速され得る人工知能とは無関係の他の用途は、分子シミュレーションとバーチャルリアリティを含む。これらの用途のために、シナプスコプロセッサ１１２が、乗算及び加算に加えて、逆数平方根演算（１／√ｘ）用のハードウェアを有すると仮定する。どちらの用途においても、高価なステップは同様である。分子シミュレーションに焦点を当てると、それはクーロンポテンシャル：
【数１２】
2020517000.tif 000017
の計算である。ここで、ｑｊはｊ番目の電荷であり、ｒｊｋは、ｊ番目の電荷とｋ番目の電荷との間の距離である。高帯域幅通信が、全てのｊ及びｋにわたって、同時に、ｋ番目の電荷の座標を、ｋ番目のｓｏｍａコア１０２から、ｊ番目のｓｏｍａコア１０２のｋ番目のシナプスコプロセッサにブロードキャストすることを引き受ける。各シナプスコプロセッサ１１２にて、加算及び乗算を用いてｒｊｋ２を計算し、次いで逆数平方根を用いて１／ｒｊｋを計算する。最後に、累算器（リデューサ１１５）を用いて、ｊ番目のｓｏｍａコア１０２によってそのシナプスコプロセッサ１１２にわたる合計が計算される。
【０１３３】
第６の例として、提案したアーキテクチャによって二乗時間から定数時間へと加速されることが可能な別クラスのアルゴリズムは、例えば凸包アルゴリズムなどの幾何アルゴリズムに関わる。これらのアルゴリズムは、提案したアーキテクチャの非線形能力を必要とせずに、提案したアーキテクチャの行列処理能力のみを当てにし得る。示されていることには、高次元におけるこれらのアルゴリズムの１つの重要なステップは、動的な行列式計算である。この計算は、行列−ベクトル乗算によって二乗時間で順次に遂行されることができる。しかしながら、これらの乗算は、提案したアーキテクチャを用いて定数時間へと削減されることができる。
【０１３４】
なお、これらの例は、特定の問題に対する特定の解法が本特許文献に記載されたハードウェアアーキテクチャを用いてどのように解かれ得るのかを、実例によって示すためだけに上で提示されたものである。当然ながら、これらのハードウェアアーキテクチャは、他の機能を実行するために使用されてもよい。また、上述の特定の問題は、これらのハードウェアアーキテクチャを用いて実装される他の解法を用いて解かれてもよい。
【０１３５】
本特許文献に記載されたハードウェアアーキテクチャ及び関連する命令／演算は、実装に応じて、従来アプローチに対する様々な利点を提供することができる。例えば、本開示は、（十分な数のコンポーネントで実施される場合に）アーキテクチャがヒトの脳の能力に匹敵するものとなることを可能にするハードウェアアーキテクチャを提供する。さらに、これらのハードウェアアーキテクチャの機能は、例えば人工知能、深層学習、分子シミュレーション、及びバーチャルリアリティなどの、他分野のコンピューティングを向上させるために使用されることができる。
【０１３６】
一部の実施形態において、本特許文献に記載された様々な機能は、コンピュータ読み取り可能プログラムコードから形成されてコンピュータ読み取り可能媒体にて具現化されるコンピュータプログラムによって実装又はサポートされる。“コンピュータ読み取り可能プログラムコード”なる言い回しは、ソースコード、オブジェクトコード、及び実行可能コードを含め、如何なるタイプのコンピュータコードをも含む。“コンピュータ読み取り可能媒体”なる言い回しは、例えば、読み出し専用メモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、ハードディスクドライブ、コンパクトディスク（ＣＤ）、デジタルビデオディスク（ＤＶＤ）、又はその他のタイプのメモリなど、コンピュータによってアクセスされることが可能な如何なるタイプの媒体をも含む。“非一時的”なコンピュータ読み取り可能媒体は、一時的な電気的又はその他の信号を輸送する有線リンク、無線リンク、光リンク、又はその他の通信リンクを除外する。非一時的コンピュータ読み取り可能媒体は、例えば書換可能な光ディスク又は消去可能なメモリデバイスなど、データが永続的に格納され得る媒体及びデータが格納され且つ後に上書きされ得る媒体を含む。
【０１３７】
本特許文献の全体を通して使用される特定の単語及びフレーズの定義を説明しておくことが有益であるかもしれない。用語“アプリケーション”及び“プログラム”は、好適なコンピュータコード（ソースコード、オブジェクトコード、又は実行可能コードを含む）での実装に適応された、１つ以上のコンピュータプログラム、ソフトウェアコンポーネント、命令のセット、プロシージャ、関数、オブジェクト、クラス、インスタンス、関連データ、又はその一部を指す。用語“通信する”及びその派生語は、直接的な通信及び間接的な通信の両方を包含する。用語“含む”及び“有する”、並びにこれらの派生語は、限定なしでの包含を意味する。用語“又は”は、及び／又はを意味する包括的なものである。“〜と関連付けられる”なる言い回し、及びその派生語は、〜を含む、〜の中に含まれる、〜と相互接続される、〜を含有する、〜内に含有される、〜に又は〜と接続する、〜に又は〜と結合する、〜と通信可能である、〜と協働する、〜と交互である、〜隣り合う、〜に近接した、〜に又は〜と結合される、〜を有する、〜の特性を有する、〜に又は〜と関係を有する、又はこれらに類するものを意味し得る。“〜のうちの少なくとも１つ”なる言い回しは、アイテムのリストとともに使用されるとき、リストアップされたアイテムのうちの１つ以上の様々な組み合わせが使用され得ることを意味し、リスト内の１つのアイテムのみが必要とされることもある。例えば、“Ａ、Ｂ、及びＣのうちの少なくとも１つ”は、以下の組み合わせ：Ａ、Ｂ、Ｃ、ＡとＢ、ＡとＣ、ＢとＣ、及びＡとＢとＣ、のうちの何れをも含む。
【０１３８】
本特許文献における記載は、特定の要素、ステップ、又は機能がクレーム範囲に含まれていなければならない必須又は重要な要素であることを意味するものとして読まれるべきでない。また、クレームは何れも、その特定のクレーム中で“する手段”又は“するステップ”なるそのままの語が、機能を特定する特定の言い回しに続かれて、明示的に使用されない限り、添付のクレーム又はクレーム要素に関して３５ＵＳＣ第１１２節（ｆ）を行使することを意図していない。クレーム内での、例えば（以下に限られないが）“機構”、“モジュール”、“デバイス”、“ユニット”、“コンポーネント”、“要素”、“部材”、“装置”、“機械”、“システム”、“プロセッサ”、“プロセッシングデバイス”、又は“コントローラ”などの用語の使用は、クレームの特徴自体によって更に改良又は強化されるような、当業者に知られた構造を指すものと理解及び意図されるものであり、３５ＵＳＣ第１１２節（ｆ）を行使することを意図するものではない。
【０１３９】
本開示は、特定の実施形態及び概して関連する方法を述べてきたが、これらの実施形態及び方法の改変及び並べ替えが当業者に明らかになる。従って、以上の実施形態例の説明は、本開示を定めたり制約したりするものではない。以下の請求項によって規定される本開示の精神及び範囲を逸脱することなく、その他の変形、代用、及び改変も可能である。
【図１Ａ】
2020517000.tif 000018
【図１Ｂ】
2020517000.tif 000019
【図１Ｃ】
2020517000.tif 000020
【図２】
2020517000.tif 000021
【図３】
2020517000.tif 000022
【図４】
2020517000.tif 000023
【図５】
2020517000.tif 000024
【図６】
2020517000.tif 000025
【図７】
2020517000.tif 000026
【図８】
2020517000.tif 000027
【図９】
2020517000.tif 000028
【図１０】
2020517000.tif 000029
【図１１】
2020517000.tif 000030
【図１２】
2020517000.tif 000031
【図１３】
2020517000.tif 000032
【図１４】
2020517000.tif 000033
【図１５】
2020517000.tif 000034
【図１６】
2020517000.tif 000035
【図１７】
2020517000.tif 000036
【図１８】
2020517000.tif 000037
【図１９】
2020517000.tif 000038
【国際調査報告】
2020517000.tif 000039