(57)【要約】【課題】分散型配置で連結された複数のプロセッサ及び複数の設定可能な通信要素を含んでよい、多重プロセッサアレイの実施形態を開示する。【解決手段】各設定可能な通信要素は、ローカルメモリ及び複数のルーティングエンジンを含んでよい。ローカルメモリは複数のプロセッサのうちのサブセットに連結してよい。各ルーティングエンジンは、複数のソースから１つ又は複数のメッセージを受信し、受信したメッセージそれぞれを、構成情報に応じて、複数の目的地のうちの所定の目的地に割り当て、上記割り当てられた目的地へと各メッセージを前進させるよう構成できる。複数の目的地は、ローカルメモリと、複数の設定可能な通信要素のうちのサブセットに含まれるルーティングエンジンとを含んでよい。【選択図】図８Ａ
2019040641.tif 000002
【特許請求の範囲】
【請求項１】
複数のプロセッサ；及び
前記複数のプロセッサに分散型配置で連結された、複数の通信回路
を備える装置であって、
前記複数の通信回路のそれぞれは、複数の相互接続ネットワークに連結され、前記複数の通信回路の特定の１つは：
前記複数の相互接続ネットワークの特定の相互接続ネットワーク経由で１つ又は複数のデータ語を含むメッセージを受信し、
前記メッセージを含むルーティング情報に基づいて、前記複数の通信回路の異なる１つを使用して、前記情報を前記複数の通信回路のもう１つの通信回路へと前進させる、
よう構成される装置。
【請求項２】
前記複数の通信回路は、複数の方向スイッチ回路に連結された複数の層スイッチ回路を含み、前記複数の方向スイッチ回路の所定の方向スイッチ回路は、前記複数の相互接続ネットワークの対応する相互接続ネットワークにマッピングする、請求項１に記載の装置。
【請求項３】
前記複数の層スイッチ回路の１つの層スイッチは、前記複数の相互接続ネットワークの特定の１つに連結され、前記複数の相互接続ネットワークの異なる１つの相互接続ネットワークに連結された前記複数の方向スイッチ回路の１つの方向スイッチ回路に前記メッセージをリレーするよう構成される、請求項２に記載の装置。
【請求項４】
前記特定の通信回路は、メモリおよび複数のプロセッサの２つ以上のプロセッサに連結されたメモリスイッチを更に含み、前記メモリスイッチは、前記ルーテイング情報に基づいて、前記２つ以上のプロセッサの１つに、前記メッセージの前記データ語をリレーするよう構成される、請求項２に記載の装置。
【請求項５】
前記メッセージはデータを含み、前記複数の通信回路の前記特定の１つはメモリ回路を含み、前記複数の通信回路の前記特定の１つは、前記ルーティング情報に基づいて、前記メモリ回路に前記データを記憶するよう構成される、請求項１に記載の装置。
【請求項６】
方法であって、
複数の通信回路の特定の１つの通信回路によって、複数の相互接続ネットワークの特定の１つの相互接続ネットワーク経由でルーティング情報経由でメッセージを受信するステップを含み、前記複数の通信回路のそれぞれの通信回路は前記複数の相互接続ネットワークに連結され、前記複数の通信回路は分散式に複数のプロセッサに連結され、
前記ルーティング情報に基づいて、前記複数の相互接続ネットワークの異なる１つを前記特定の通信回路によって選択するステップ、
前記複数の相互接続ネットワークの異なる１つの相互接続ネットワークを使用して、前記メッセージを前記複数の通信回路の異なる１つの通信回路に、前記特定の通信回路によって送信するステップ、
を含む方法。
【請求項７】
前記相互接続ネットワークの前記特定の相互接続ネットワークからの、前記特定の通信回路による前記メッセージの前記受信は、前記相互接続ネットワークの前記特定の相互接続ネットワークを、前記ルーティング情報に基づいて、前記複数の相互接続ネットワークの前記特定の相互接続ネットワークに結合された複数の方向スイッチ回路の所定の方向スイッチ回路へ、選択的に連結することを含み、前記複数の方向スイッチは前記特定の通信回路に含まれる、請求項６に記載の方法。
【請求項８】
前記特定の通信回路によって、前記異なる通信回路へメッセージを送信することは、前記複数の相互接続ネットワークの前記異なる１つに結合された複数の層スイッチ回路の所定の層スイッチ回路から、前記複数の方向スイッチ回路の前記所定の方向スイッチ回路へ前記メッセージをリレーすることを含み、前記複数の層スイッチ回路は、前記特定の通信回路に含まれる、請求項７に記載の方法。
【請求項９】
メモリと前記複数のプロセッサのサブセットのプロセッサに連結されたメモリスイッチに連結された層スイッチを使用して、ルーティング情報に基づいて、プロセッサに前記メッセージをルーテイングするステップを更に含む、請求項７に記載の方法。
【請求項１０】
前記複数の通信回路の前記特定の通信回路に含まれるメモリ回路の前記メッセージに含まれるデータを記録するステップを更に含む、請求項７に記載の方法。
【請求項１１】
装置であって、
複数の層スイッチ回路、および
複数の相互通信ネットワークに連結された複数の方向スイッチ回路を含み、前記方向スイッチ回路の特定の１つの方向スイッチ回路は：
前記方向スイッチ回路に連結された複数の相互接続ネットワークの特定の１つ経由で１つ又は複数のデータ語を含むメッセージを受信し、
前記メッセージに含まれたルーティング情報に基づいて、前記複数の層スイッチ回路の１つ又は複数の層スイッチ回路を使用しての、前記複数の相互接続ネットワークの異なる１つへの前記メッセージのリレーによって、目的地への前記メッセージを前進するよう、構成される、装置。
【請求項１２】
前記複数の方向スイッチ回路の所定の１つの方向スイッチ回路は、複数のプロセッサの所定の１つのプロセッサに連結され、前記ルーティング情報に基づいて、前記複数のプロセッサのサブセットのプロセッサに連結されたメモリスイッチを使用する前記複数のプロセッサの前記所定のプロセッサに、前記メッセージをルーティングするよう構成され、前記メモリスイッチは、前記ルーティング情報に基づいて、前記所定のプロセッサに前記メッセージをルーティングするよう構成される、請求項１１に記載の装置。
【請求項１３】
前記メッセージを前進させるため、前記特定の方向スイッチ回路は：
前記複数の層スイッチ回路の第１の層スイッチ回路から前記メッセージを受信し、
前記複数の層スイッチ回路の第２の層スイッチ回路へ前記メッセージへリレーするよう更に構成され、前記第２の層スイッチ回路は前記相複数の相互接続ネットワークの前記異なる１つに連結される、請求項１１に記載の装置。
【請求項１４】
前記装置は：
入力レジスタ回路は着信メッセージに含まれた着信データ語を記憶するよう構成され、
出力レジスタ回路は出力メッセージに含まれた出力データ語を記録するよう構成される、請求項１１に記載の装置。
【請求項１５】
前記特定の方向スイッチ回路に連結されたメモリ回路を更に含み、前記特定の方向スイッチ回路は、前記ルーティング情報に基づいて、前記メモリに含まれたデータを前記メモリ回路に送信するよう構成され、前記メモリ回路は前記データを記録するよう構成される、請求項１１に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータシステム及びデジタル信号プロセッサ（ｄｉｇｉｔａｌ  ｓｉｇｎａｌ  ｐｒｏｃｅｓｓｏｒ：ＤＳＰ）に関し、特に多重プロセッサシステムに関する。
【背景技術】
【０００２】
ソフトウェアタスクをより高速で実施する必要から、並列計算の必要が生じている。並列計算によって、遠距離通信、遠隔検知、レーダー、ソナー、ビデオ、映画、医療用撮像等の用途において、多数の複雑な信号の処理速度を上昇させることができる。また並列計算によって、より高い計算スループットを提供でき、直列計算アプローチの特定の制限を克服できる。計算システムの能力は、通常は指定された一連の試験アルゴリズムに対する性能のメトリクスによって比較できる。対象となる主要な性能メトリクスは毎秒の計算速度である。しかしながら、バッテリ給電式の又は温度による制約を受ける設備に関しては、毎秒の計算速度を消費エネルギで割ったものがメトリクスとして好ましい場合がある。
【０００３】
並列コンピュータ又は信号プロセッサは、多数のプロセッサ、多数のメモリ、１つ又は複数の相互接続通信ネットワークからなってよい。これらの構成部品は、多重処理としても知られる並列プロセッサ計算に関する文献で説明されている多くの異なるトポロジで組み合わされる。これらの構成部品は全て、導体トレース（ワイヤ）の充放電及び伝送路の複数の影響（その１つとしては、いずれの信号も光の速さより速くは搬送されないことが挙げられる）に関連する内部遅延を原因とする入力−出力レイテンシを有する。従って、構成部品が小さくなれば、物理的に大きな構成部品の場合に比べてレイテンシは一般に小さくなり、また構成部品の数が少なくなれば、計算用構成部品の数が多いシステムの場合に比べてレイテンシは一般に小さくなる。システム内の構成部品の数が多くなると平均レイテンシは増大し得るものの、パイプライン及びシストリック処理といった隣接する要素間の低レイテンシ通信を利用するように計算を構成する技術が複数存在する。
【０００４】
近年、集積回路製造の進歩により、大幅に小型化された並列コンピュータの構成部品を製作できるようになった。このような小型化により、構成部品は更に低消費電力、高速、低レイテンシで動作する。その結果、数百個もの処理要素（ｐｒｏｃｅｓｓｉｎｇ  ｅｌｅｍｅｎｔ：ＰＥ）及び補助メモリ（ｓｕｐｐｏｒｔｉｎｇ  ｍｅｍｏｒｙ：ＳＭ）を高帯域幅相互接続ネットワーク（ｉｎｔｅｒｃｏｎｎｅｃｔｉｏｎ  ｎｅｔｗｏｒｋ：ＩＮＦＥＣＴ）と併せて単一の多重プロセッサＩＣチップ上に製作できる。このような多重プロセッサチップにより、１つのチップの一部分を使用する小型システムから、複数の高速かつ大容量メモリチップを含む多重チップシステムに至るまで、幅広い並列コンピュータシステムを構築できる。
【０００５】
コンピュータ、デジタル信号プロセッサ（ＤＳＰ）、包囲設備内に埋め込まれるシステム等のデジタル電子システムは、１つ又は複数の多重プロセッサアレイ（ｍｕｌｔｉ−ｐｒｏｃｅｓｓｏｒ  ａｒｒａｙ：ＭＰＡ）をますます利用するようになっている。ＭＰＡは、複数の処理素子（ｐｒｏｃｅｓｓｉｎｇ  ｅｌｅｍｅｎｔ：ＰＥ）、補助メモリ（ｓｕｐｐｏｒｔｉｎｇ  ｍｅｍｏｒｙ：ＳＭ）、高帯域相互接続ネットワーク（ｉｎｔｅｒｃｏｎｎｅｃｔ  ｎｅｔｗｏｒｋ：ＩＮ）としておおまかに定義できる。本明細書で使用される用語「処理素子（ｐｒｏｃｅｓｓｉｎｇ  ｅｌｅｍｅｎｔ）」は、プロセッサ若しくはＣＰＵ（中央演算処理装置）、マイクロプロセッサ又はプロセッサコアを指す。ＭＰＡの中の単語「アレイ（ａｒｒａｙ）」は、円形次元（ループ又はリング）を含む１、２、３又はそれ以上の次元で利用可能な接続を備えるネットワークによって相互接続された、複数の計算ユニット（これらはそれぞれ処理及びメモリリソースを含む）を意味するものとして、最も広い意味で使用される。なお、次元が高いＭＰＡをより低い次元の製造用媒体上にマッピングできる。例えば４次元（４Ｄ）超立方体の形状を有するＭＰＡは、シリコン集積回路（ＩＣを）チップの積層体上に、又は単一の２Ｄチップ上に、又は計算ユニットの１Ｄの線上にさえ、マッピングできる。次元が低いＭＰＡをより高い次元の媒体にマッピングすることもできる。例えば計算ユニットの１Ｄの線を、ＩＣチップの２Ｄ平面上に曲がりくねった形状で展開でき、又はチップの３Ｄ積層体へと巻くことができる。ＭＰＡは複数の種類の計算ユニットと、プロセッサ及びメモリが散在する構成とを含んでよい。広い意味でのＭＰＡは、ＭＰＡの階層又は入れ子構成、特に相互接続されたＩＣチップからなるＭＰＡも含まれ、この場合ＩＣがチップが１つ又は複数のＭＰＡを含み、これらＭＰＡもまた更に深い階層構造を有する。
【０００６】
一般に、コンピュータ及びデジタル信号プロセッサ（ＤＳＰ）のためのメモリは、上部に高速なメモリを有し、低速であるが大容量のメモリを各段下部に有する階層として組織される。ＭＰＡでは、階層の上部の補助メモリが各ＰＥの近傍に位置する。各補助メモリは、最適な命令又は最適なデータを保持するよう特殊化できる。特定のＰＥのための補助メモリは、そのＰＥ専用のものであっても、又は他のＰＥと共用であってもよい。
【０００７】
メモリ階層を更に下がると、典型的には、各ＰＥに隣接する補助メモリの何倍も大きいビット容量を有する半導体同期ダイナミックランダムアクセスメモリ（ｓｅｍｉｃｏｎｄｕｃｔｏｒ  ｓｙｎｃｈｒｏｎｏｕｓ  ｄｙｎａｍｉｃ  ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ：ＳＤＲＡＭ）からなる、比較的大型の共有メモリが存在してもよい。メモリ階層を更に下がるとフラッシュメモリ、磁気ディスク、光学ディスクがある。
【０００８】
上述のように、多重プロセッサアレイ（ＭＰＡ）は、処理要素（ＰＥ）、補助メモリ（ＳＭ）、並びにＰＥ及び／若しくはメモリ間の高帯域幅データ通信を支援するための一次相互接続ネットワーク（ｐｒｉｍａｒｙ  ｉｎｔｅｒｃｏｎｎｅｃｔｉｏｎ  ｎｅｔｗｏｒｋ：ＰＩＮ、若しくは単にＩＮ）を含んでよい。図１、２にはＭＰＡの様々な実施形態が図示されており、これらについて以下に説明する。一般にＰＥは、入力データ及び出力データをバッファリングするためのレジスタ、命令処理ユニット（ｉｎｓｔｒｕｃｔｉｏｎ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ：ＩＰＵ）、データに対して演算及び論理関数を実行するための手段、並びにシステムのその他の部分との通信のための多数のスイッチ及びポートを備える。ＩＰＵはメモリから命令をフェッチし、これら命令を復号化して、データをＰＥに及びＰＥから移動させるため並びにデータに対して演算及び論理関数を実行するために適切な制御信号を設定する。大型ＭＰＡに適したＰＥは一般に、１つの大型ＭＰＡを含む１つのＩＣチップに対してＰＥの数が多いという単純な理由で、汎用プロセッサ（ｇｅｎｅｒａｌ  ｐｕｒｐｏｓｅ  ｐｒｏｃｅｓｓｏｒｓ：ＧＰＰ）よりもエネルギ効率が高い。
【０００９】
本出願において使用される用語ＭＰＡは、複数のプロセッサの比較的均一なアレイと、いわゆる「プラットフォームＩＣ」チップ上に集積された汎用プロセッサ及び特殊化されたプロセッサの異種集団との両方を包含する。プラットフォームＩＣチップは数個から多数のプロセッサを含んでよく、これらは典型的には共有メモリと相互接続され、場合によってはオンチップネットワークと相互接続される。ＭＰＡと「プラットフォームＩＣ」チップとの間には違いがあってもなくてもよい。しかしながら「プラットフォームＩＣ」チップは、特定の垂直的市場における特定の技術要件に対処するために市販されているものであってよい。
【００１０】
相互接続通信ネットワーク（ＩＮ）は、完全接続型であっても、又は切り替え型であってもよい。完全接続型ネットワークでは、全ての入力ポートは全ての出力ポートに結線接続されている。しかしながら完全接続型ネットワーク内のワイヤの数はＮ2／２（Ｎはポートの数）に従って増加するため、完全接続型ネットワークは中程度のサイズのシステムに関してさえすぐに実施不可能となる。
【００１１】
切り替え型ネットワークは、複数のリンク及び複数の切り替えノードからなる。リンクは配線、伝送路、（光導波路を含む）導波路、又は無線トランシーバ−トランスミッタのペアを備えてよい。切り替えノードは、あるタイムウィンドウ中におけるあるバスへの接続といった単純なもの、又は多数のポート及びバッファキューを有するクロスバーといった複雑なものであってよい。単一段ネットワークは、１つの大型の切り替えノード上に全ての入力ポート及び出力ポートが配置されたものである。多段ネットワークは、データ移動が、第１の切り替えノード、第１のリンク、第２の切り替えノード、そして場合によっては更なるリンク−ノードのペアを通過して出力ポートへと至るものである。例えば従来の有線電話システムは多段ネットワークである。
【００１２】
並列コンピュータのための相互接続ネットワークは、サイズ、帯域幅、制御方法が大きく変化する。ネットワークが入力から出力へのデータパス又は回路を提供し、上記データパス又は回路の切断が要求されるまで上記データパス又は回路に干渉しない。このネットワークは「回路切り替え型（ｃｉｒｃｕｉｔ−ｓｗｉｔｃｈｅｄ）」と呼ぶことができる。ネットワークが、データのパケットを入力から出力まで送達するために十分な長さだけを有するパスを提供する場合、このネットワークは「パケット切り替え型（ｐａｃｋｅｄ  ｓｗｉｔｃｈｅｄ）」と呼ぶことができる。制御方法は、（全てのステップをマスタークロックに同期するようプログラムすることによって達成できる）完全に決定論的なものから、（ポート入力においてデータ移動要求に非同期的に応答することによって達成できる）完全に応答的なものへと変化する。
【００１３】
単一段ネットワークに関して、要求／許可プロトコルはスイッチを制御するための一般的な方法である。ある入力ポートには要求信号が存在し、これはコンテンション検出回路において他の全ての入力ポートからの要求信号と比較される。コンテンションが存在しない場合、ＩＮは許可信号を用いて応答する。ポートはアドレスを送信し、ＩＮは入力を出力と接続するようにスイッチを設定する。コンテンションが検出された場合、調停回路（又は「アービタ（ａｒｂｉｔｅｒ）」は、要求されたポートのうちのどの１つが許可信号を得るかを決定する。許可信号のないポートは待機しなければならない。１サイクル中に許可信号を得られなかったポートについては、後続のサイクルで再び試みることができる。アービタにおいて様々な優先／回転スキームを用いて、全てのポートが少なくとも何らかの供給を得ることを保証する。
【００１４】
多段ネットワークに関して、「ワームホールルーティング（ｗｏｒｍｈｏｌｅ  ｒｏｕｔｉｎｇ）」と呼ばれる特定のプロトコルを用いてよい。ワームホールルーティングは、メッセージを、ナビゲーション用ヘッダと、ペイロードデータを搬送するための本文と、パスを閉鎖するためのテールとを有する一列の又はひと続きの複数の単語として形成できるというアイデアに基づくものである。メッセージはその経路を、ネットワークを通って以下のように「徐々に進む（ｗｏｒｍ）」。矩形のグリッドとしてレイアウトされたネットワークを仮定し、１つの切り替えノード及び１つのメモリがグリッドの各交点に位置すると仮定する。ヘッダは、（前方直進、左折、右折、又はローカルメモリへ接続等の）ひと続きの複数の単純な操舵方向を含んでよく、これらはネットワーク内でワームが遭遇する各ノードにおいて、このワームがどこに向かうべきかを示す。これら操舵方向は、ノードが回路構成をほとんど用いることなくこれらを復号化して、スイッチを極めて迅速に設定できるよう、単純なものである。ヘッダによって設定されたパス又は「ホール（ｈｏｌｅ）」は、ペイロードデータ、「本文（ｂｏｄｙ）」を、符号語「テール（ｔａｉｌ）」に出会うまで通過させることができ、「本文」が「テール」に出会うと、その後ノードはホールを閉鎖する。パスが閉鎖されると、同一のワームホールルーティングプロトコルによって生成されることになるその他のパスに関するリンク及びノードを活用できる。
【００１５】
ＩＮの帯域幅は、単位時間あたりに発生するデータ移動の成功数を長期間に亘って平均したものとして定義できる。切り替え型ＩＮの帯域幅は、ＩＮの細部及びＩＮに向けられるデータ移動要求の特性における多数の因子に左右されるため、いずれの分析方法でも推定が困難である。要求レートが低い場合、リソースに関する競合が発生する確率は低く、略１００％の要求が成功する。測定及びシミュレーションにより、データ移動要求のレートが上昇するにつれて、データ移動が成功する部分が１００％から減少することが示されている。その結果、毎秒のデータ移動成功数は飽和するか又はピークに達し、この最大値をＩＮの帯域幅とする。
【００１６】
ＭＰＡは、あるアプリケーションのための特定の機能を実施するようソフトウェアを用いてプログラムできる。２つの主要なソフトウェアタイプが存在し、それはアプリケーションソフトウェア及び開発ツールである。アプリケーションソフトウェアはソーステキスト、中間形態及び最終二値画像であり、ＭＰＡのＰＥが実行できるようＭＰＡのメモリに搭載される。開発ツールは、対象とするハードウェアのためのアプリケーションソフトウェアを設計及び試験するためのソフトウェアプログラムであり、言語コンパイラ、リンカー、同時タスク定義付け補助装置、通信経路レイアウト補助装置、物理的設計の自動化、シミュレータ、デバッガ等である。開発ツールソフトウェアは、アプリケーションソフトウェアの対象ハードウェア上で動作してもしなくても（上記ハードウェアによって実行されてもされなくても）よい。
【発明の概要】
【課題を解決するための手段】
【００１７】
多重プロセッサアレイの様々な実施形態を開示する。おおまかに言って、複数のプロセッサと設定可能な通信要素とを分散型配置で連結した装置及び方法を考える。各設定可能な通信要素は、ローカルメモリ及び複数のルーティングエンジンを含んでよい。ローカルメモリは複数のプロセッサのうちのサブセットに連結してよい。各ルーティングエンジンは、複数のソースから１つ又は複数のメッセージを受信し、受信したメッセージそれぞれを、構成情報に基づいて、複数の目的地のうちの所定の目的地に割り当て、上記割り当てられた目的地へと各メッセージを前進させるよう構成できる。複数の目的地は、ローカルメモリと、複数の設定可能な通信要素のうちのサブセットに含まれるルーティングエンジンとを含んでよい。
【００１８】
一実施形態では、構成情報は１つ又は複数のデータ語のうちの少なくとも１つの語に含まれていてよい。
【００１９】
更なる実施形態では、各ルーティングエンジンは更に、構成情報を復号化するよう構成してよい。
【図面の簡単な説明】
【００２０】
【図１】図１は、本明細書で多重プロセッサアレイ（ＭＰＡ）と呼ばれる処理システムの一実施形態を示すブロック図である。
【図２】図２は、ＭＰＡ接続スキームの一実施形態を示すブロック図である。
【図３】図３は、データメモリルータ（ｄａｔａ  ｍｅｍｏｒｙ  ｒｏｕｔｅｒ：ＤＭＲ）の一実施形態を示すブロック図である。
【図４】図４は、ＤＭＲの別の実施形態を示すブロック図である。
【図４Ａ】図４Ａは、ＤＭＲのある実施形態を示すブロック図である。
【図４Ｂ】図４Ｂは、ＤＭＲの一部のある実施形態を示すブロック図である。
【図５Ａ】図５Ａは、ＤＭＲのポート配置の例を示すブロック図である。
【図５Ｂ】図５Ｂは、ＤＭＲのポート配置の例を示すブロック図である。
【図６】図６は、多重プロセッサアレイの一部分におけるＤＭＲとＰＥとの間の接続を示すブロック図である。
【図７】図７は、ＤＭＲ内の例示的な局所的ルートを示すブロック図である。
【図８】図８は、ＤＭＲ内の例示的な全体のルートを示すブロック図である。
【図８Ａ】図８Ａは、ＤＭＲのある実施形態を示すブロック図である。
【図９】図９は、ＤＭＲ内のクロスバースイッチを制御するために使用される優先順位を示す表である。
【図１０】図１０は、多重プロセッサアレイの全体的及び局所的ルーティングの一実施形態の動作を示す図である。
【図１１】図１１は、ダイレクトメモリアクセス（ｄｉｒｅｃｔ  ｍｅｍｏｒｙ  ａｃｃｅｓｓ：ＤＭＡ）エンジンを示すブロック図である。
【図１２】図１２は、メモリバッファを動作させるための方法を示すフローチャートである。
【図１３】図１３は、メモリバッファを動作させるための別の方法を示すフローチャートである。
【図１４】図１４は、様々なポインタ構成を示す図である。
【図１５】図１５は、ポインタ比較及びストールユニットのある実施形態のブロック図である。
【図１６】図１６は、処理エンジン読み込みＦＩＦＯのエミュレーションを示すブロック図である。
【図１７】図１７は、ヘッダ語上のルーティング論理の一実施形態の動作を示す。
【図１８】図１８は、ＭＰＡの一部分を通る例示的な経路を示すブロック図である。
【図１９】図１９は、確保領域を横断する、ＭＰＡの一部分を通る例示的な経路を示すブロック図である。
【図２０】図２０は、通信経路が不通となったＭＰＡの一部分のある実施形態を示すブロック図である。
【図２１】図２１は、データ検査処理の例を示すブロック図である。
【図２２】図２２は、分散輻輳分析器を示すブロック図である。
【発明を実施するための形態】
【００２１】
本開示は様々な修正及び代替形態を許容するものであるが、その具体的な実施形態を例として図面に示し、また本明細書で詳細に説明する。しかしながら、上記具体的実施形態の図及び詳細な説明は、図示されている特定の形態に開示を限定することを意図したものではなく、反対に、添付の請求項によって定義されるような本開示の精神及び範囲内にある全ての修正例、均等物及び代替例を包含することを意図したものであることを理解されたい。本明細書において使用されている見出しは、単に組織化を目的としたものであり、これらの使用は本説明の範囲の限定を意味しない。本出願全体を通して使用される単語「してよい／し得る／できる（ｍａｙ）」は、許容の意味で（即ち「可能性がある」ことを意味して）使用されており、強制の意味で（即ち「しなければならない」ことを意味して）使用されるものではない。同様に、単語「含む（ｉｎｃｌｕｄｅ／ｉｎｃｌｕｄｉｎｇ／ｉｎｃｌｕｄｅｓ）」は、ある対象を含むもののそれに限定されないことを意味する。
【００２２】
様々なユニット、回路又はその他の構成部品は、１つ又は複数のタスクを実施する「よう構成される（ｃｏｎｆｉｇｕｒｅｄ  ｔｏ）」として記載され得る。このような文脈において「よう構成される」は、動作中に上記１つ又は複数のタスクを実施する「回路構成を有する」ことを一般に意味する、構造の広範な説明である。従ってユニット／回路／構成部品は、ユニット／回路／構成部品が現在オンでなくても上記タスクを実施するよう構成できる。一般に「よう構成される」に対応する構造を形成する回路構成は、ハードウェア回路を含んでよい。同様に、記載を簡略化するために、様々なユニット／回路／構成部品は、１つ又は複数のタスクを実施するとして記載され得る。このような記載は「よう構成される」という語句を含むものとして解釈されるものとする。１つ又は複数のタスクを実施するよう構成されるユニット／回路／構成部品の列挙は、これらユニット／回路／構成部品に関して米国特許法第１１２条第６段落の解釈を援用しないことを明示的に意図したものである。より一般には、いずれの要素の列挙は、「…のための手段（ｍｅａｎｓ  ｆｏｒ）」又は「…のためのステップ（ｓｔｅｐ  ｆｏｒ）」という語句が具体的に使用されていない限り、上記要素に関して米国特許法第１１２条第６段落の解釈を援用しないことを明示的に意図したものである。
【００２３】
参照による援用
Ｍｉｃｈａｅｌ  Ｂ．Ｄｏｅｒｒ、Ｗｉｌｌｉａｍ  Ｈ．Ｈａｌｌｉｄｙ、Ｄａｖｉｄ  Ａ．Ｇｉｂｓｏｎ、Ｃｒａｉｇ  Ｍ．Ｃｈａｓｅを発明者とする、発明の名称「Ｐｒｏｃｅｓｓｉｎｇ  Ｓｙｓｔｅｍ  Ｗｉｔｈ  Ｉｎｔｅｒｓｐｅｒｓｅｄ  Ｓｔａｌｌ  Ｐｒｏｐａｇａｔｉｎｇ  Ｐｒｏｃｅｓｓｏｒｓ  Ａｎｄ  Ｃｏｍｍｕｎｉｃａｔｉｏｎ  Ｅｌｅｍｅｎｔｓ」の米国特許第７４１５５９４号は、その全体を参照することにより、本明細書においてその全体が完全に論述されているかのように、本明細書に援用されるものとする。
【００２４】
Ｍｉｃｈａｅｌ  Ｂ．Ｄｏｅｒｒ、Ｃａｒｌ  Ｓ．Ｄｏｂｂｓ、Ｍｉｃｈａｅｌ  Ｂ．Ｓｏｌｋａ、Ｍｉｃｈａｅｌ  Ｒ  Ｔｒｏｃｉｎｏ、Ｄａｖｉｄ  Ａ．Ｇｉｂｓｏｎを発明者とする、２０１１年１０月１４日出願の、発明の名称「Ｄｉｓａｂｌｉｎｇ  Ｃｏｍｍｕｎｉｃａｔｉｏｎ  ｉｎ  ａ  Ｍｕｌｔｉｐｒｏｃｅｓｓｏｒ  Ｓｙｓｔｅｍ」の米国特許出願第１３／２７４１３８号は、その全体を参照することにより、本明細書においてその全体が完全に論述されているかのように、本明細書に援用されるものとする。
【００２５】
用語
ハードウェア構成プログラム：例えば集積回路等のハードウェアをプログラム又は構成するために使用できる、バイナリイメージにコンパイルできるソーステキストからなるプログラム。
【００２６】
コンピュータシステム：パーソナルコンピュータシステム（ＰＣ）、メインフレームコンピュータシステム、ワークステーション、ネットワーク家電、インターネット家電、パーソナルデジタルアシスタント（ＰＤＡ）、テレビジョンシステム、グリッドコンピューティングシステム若しくはその他のデバイス又はデバイスの組み合わせを含む、様々なタイプの計算又は処理システムのいずれか。一般に、用語「コンピュータシステム」は、メモリ媒体からの命令を実行する少なくとも１つのプロセッサを有するいずれのデバイス（又は複数のデバイスの組み合わせ）を包含するものとして広く定義できる。
【００２７】
自動的に（ａｕｔｏｍａｔｉｃａｌｌｙ）：その動作又は操作を直接指定又は実施するユーザ入力を必要とせずに、コンピュータシステムが実施する動作又は操作（例えばコンピュータシステムが実行するソフトウェア）について用いる。従って用語「自動的に」は、ユーザが手動で実施又は指定する操作（ここでユーザが操作を直接実施するために入力を提供する）と対照的なものである。自動処理は、ユーザが提供する入力によって開始される場合があるが、これに続く「自動的に」実施される動作は、ユーザが指定するものではなく、即ち「手動で」実施される（ユーザが各動作の実施を指定する）ものではない。例えばユーザが、各フィールドを選択し、（例えば情報をタイピングすることによって、チェックボックスを選択することによって、無線選択によって等で）情報を指定する入力を提供することによって、電子フォームを埋める場合、仮にコンピュータシステムがユーザの動作に応答して上記フォームを更新しなければならないとしても、これは上記フォームを手動で埋めたことになる。このようなフォームはコンピュータシステムによって自動で埋めることができ、この場合コンピュータシステム（例えばコンピュータシステム上で実行されるソフトウェア）は、フォームのフィールドを分析して、フィールドへの回答を指定するいずれのユーザ入力を必要とせずにフォームを埋める。上述のように、ユーザはフォームを自動で埋める動作を発動する場合はあるが、実際にフォームを埋める動作には関わらない（例えばユーザはフィールドへの回答を手動で指定せず、回答は自動的に完了する）。本明細書は、ユーザが行う動作に応答して自動的に実施される操作の様々な例を提供する。
【００２８】
詳細な説明
例示的なＭＰＡアーキテクチャを図１、２に示し、これは、米国特許第７４１５５９４号に開示されているＨｙｐｅｒＸ（商標）アーキテクチャの例である。図１に示す実施形態では、ＭＰＡ１０は、複数の処理要素（ＰＥ）、並びに複数の補助メモリ（ＳＭ）及び相互接続ネットワーク（ＩＮ）を含む。ＩＮは複数の切り替えノード及び複数のリンクからなる。切り替えノードはルータとも呼ばれ、これをリンクと共に使用して、ＰＥ間、ＰＥとＭＰＡのＩ／Ｏポートとの間の通信経路を形成できる。しかしながら各ＰＥにおいて、通信されるいずれの情報はＳＭにバッファリングできる。図１では、ＳＭはデータメモリルータ（ＤＭＲ）と呼ばれる円形要素内の通信パスルータと組み合わされる。本明細書で使用されるように、ＰＥをＰＥノードと呼ぶこともあり、ＤＭＲをＤＭＲノードと呼ぶこともある。ＤＭＲはまた、「設定可能な通信要素（ｃｏｎｆｉｇｕｒａｂｌｅ  ｃｏｍｍｕｎｉｃａｔｉｏｎ  ｅｌｅｍｅｎｔ）」とも呼ばれる。
【００２９】
図１、２に示すＤＭＲ間のリンクは直線のメッシュを形成するが、その他の多数の接続スキームが可能であり、考察の対象となる。図２に示すＭＰＡ接続スキームでは、各ＰＥは４つの隣接するＤＭＲに接続され、各ＤＭＲは４つの隣接するＰＥ及び４つの隣接するＤＭＲに接続される。３次元の直線メッシュをサポートするための、１つのＤＭＲに対して６つのＤＭＲ−ＤＭＲ間リンクの使用、又は東西南北方向に加えて４つの斜め方向をサポートするための、１つのＤＭＲに対して８つのリンクの使用といった、より高次元のＩＮをサポートするための他の接続スキームも想定される。リンクは物理的に最も近接した近隣のＤＭＲに限定する必要はない。
【００３０】
ＭＰＡとアプリケーションソフトウェアとの組み合わせは、並列処理システム（ｐａｒａｌｌｅｌ  ｐｒｏｃｅｓｓｉｎｇ  ｓｙｓｔｅｍ：ＰＰＳ）と呼ぶことができるが、この名称の使用は、本発明の範囲をいかなる様式でも制限することを意図したものではない。例えばＭＰＡは、カメラからの生のビデオデータをバッファリング及び分析し、その後バッファの内容に対してビデオデータ圧縮を実施し、これによって圧縮データを無線リンク上へと伝送するようプログラムしてよい。アプリケーションソフトウェアとＭＰＡとのこの組み合わせは、例えば並列ビデオ信号プロセッサと呼んでよい。
【００３１】
チップＩ／Ｏセルを有するＭＰＡ２０は、汎用マイクロプロセッサ、ＤＳＰ、ＦＰＧＡ又はＡＳＩＣが現在使用されている様々なシステム及びアプリケーションのいずれにおいても使用され得る。例えば図１、２に示す処理システムは、様々なタイプのコンピュータシステム、デジタル信号プロセッサ（ＤＳＰ）又は計算を必要とするその他のデバイスのいずれにおいて使用できる。
【００３２】
ＨｙｐｅｒＸハードウェアファブリック
ＨｙｐｅｒＸ（商標）アーキテクチャの一例では、多重プロセッサアレイは単位セルベースのハードウェアファブリック（メッシュ）からなってよく、各セルはＨｙｐｅｒＳｌｉｃｅと呼ばれる。このハードウェアファブリックは、グリッド上に単位セルを配設し、隣接するセルを相互接続することによって形成できる。各ＨｙｐｅｒＳｌｉｃｅは、１つ又は複数のデータメモリ及びルータ（ＤＭＲ）、並びに１つ又は複数の処理要素（ＰＥ）を含んでよい。
【００３３】
米国特許第７４１５５９４号では、ＤＭＲは動的設定可能通信（ｄｙｎａｍｉｃａｌｌｙ  ｃｏｎｆｉｇｕｒａｂｌｅ  ｃｏｍｍｕｎｉｃａｔｉｏｎ：ＤＣＣ）要素と呼ばれることもあり、ＰＥは動的設定可能処理（ｄｙｎａｍｉｃａｌｌｙ  ｃｏｎｆｉｇｕｒａｂｌｅ  ｐｒｏｃｅｓｓｉｎｇ：ＤＣＰ）要素と呼ばれることもある。ＤＭＲは隣接するＰＥに補助メモリを提供でき、また相互接続ネットワーク（ＩＮ）にルータ及びリンクを提供できる。この文脈において「動的設定可能（ｄｙｎａｍｉｃａｌｌｙ  ｃｏｎｆｉｇｕｒａｂｌｅ）」は、アプリケーションソフトウェアの実行中にこれらのハードウェアリソース（ＰＥ、ＤＭＲリンク、ＤＭＲメモリ）を再割当てできることを意味している。これはアプリケーションソフトウェアを、より小さいタスク及び通信メッセージの階層に分割することによって達成される。これらタスク及びメッセージはリソースに割り当てられ、同時に（又は必要に応じて連続的に）実行される。タスク及びメッセージが完了すると、これらを再実行でき、又は他のタスク及びメッセージで置換して、アプリケーションソフトウェアの新規の構成を形成できる。「オン・ザ・フライ（ｏｎ  ｔｈｅ  ｆｌｙ）」で構成を変更できる能力は特に、有限のリソースをより効率的に使用するため、及び変化する外部からの要求に対してより良好に適合するための柔軟性をサポートする。
【００３４】
ＨｙｐｅｒＸハードウェアファブリックは、独立して、かつ処理要素に対して透明に動作する一次ＩＮ（ＰＩＮ）を有し、また任意の通信ネットワークトポロジをサポートするＨｙｐｅｒＳｌｉｃｅ間の、リアルタイムでプログラム可能かつ適合可能な通信経路（ルート又はパスと呼ばれる場合もある）を通してオンデマンド帯域幅を提供できる。ＨｙｐｅｒＳｌｉｃｅの調整グループは、ソフトウェア制御下で「オン・ザ・フライ」で形成及び再形成できる。関数を評価するために使用されるハードウェアの量を動的に変更できるこのような能力により、ハードウェアリソースの最適な応用が可能となり、これによって処理におけるボトルネックが緩和される。ハードウェアファブリックの縁部において、リンクは、メモリ階層の更に下にあるメモリのタイプに対して、又は集積回路（ＩＣ）チップの縁部のＩ／Ｏに対して特化された回路に接続される。
【００３５】
ＨｙｐｅｒＸハードウェアファブリックの相互接続されたＤＭＲは、チップ内を横断する、及びチップ間の、最も近接した、局所的な、及び全体的な通信を提供できる。これらの通信モードはそれぞれ、ＤＭＲリソースを物理的に用いて、データの局所性及びソフトウェアアルゴリズムの要件に応じてデータ／メッセージを様々に送信できる。「クイックポート（Ｑｕｉｃｋ  Ｐｏｒｔ）」設備を設けることにより、プロセッサからいずれのネットワーク目的地への、データの１つ又は複数の語の低レイテンシ伝送をサポートできる。ブロック伝送に関して、メモリ及びルーティングファブリックを横断するデータの移動を管理するために、ＤＭＲ内でダイレクトメモリアクセス（ＤＭＡ）エンジンを利用可能としてよい。ＰＥ間の最近接通信に関して、共有メモリ及びレジスタの使用が、最も効率的なデータ移動方法となり得る。局所的及び全体的なデータ移動に関して、ルーティングファブリック（ＰＩＮ）の使用が最も効率的な方法となり得る。通信経路（又はルート）は動的でも静的でもよい。動的ルートは、データ伝送のために設定され、伝送が完了すると、他のルート及びデータ伝送のためにＰＩＮリソースを活用できるよう切断してよい。静的リソースは、プログラム実行を通して所定の位置にあり続けることができ、主に優先度が高く重要な通信に使用される。通信経路の物理的位置及びこれら経路を横断するデータ伝送のタイミングは、ソフトウェアプログラム制御下にあってよい。いずれのセンダといずれのレシーバとの間の同時データ伝送をサポートするために多重通信経路が存在してよい。
【００３６】
処理要素（ＰＥ）
ＤＭＲのアーキテクチャにより、異なる相互交換可能なＰＥを、システムを特定の用途に対して最適化するために多重プロセッサファブリックにおいて使用できる。ＨｙｐｅｒＸ（商標）多重プロセッサシステムは、ＰＥ異種のＰＥによるアレイ又は同種のＰＥによるアレイを備えてよい。ＰＥは従来のプロセッサであってよく、又はＰＥはプロセッサの従来の定義に適合していなくてもよい。ＰＥは単に、特定の論理関数のための結線接続されたプロセッサとして機能する論理ゲートの集合であってよく、ここではより高い性能、より小さい面積及び／又はより低い電力のためにプログラム可能性が犠牲となっている。
【００３７】
図２に示すように、例えばＨｙｐｅｒＸ（商標）ＭＰＡ等のＭＰＡ内のＰＥは、ＰＥ間の分散ＤＭＲによる多数のメモリへの並列接続によって供給を受けることができる。このような配置により、分離型（即ち非分散型）の配置に比べて、所定のＰＥがＤＭＲ内のメモリにアクセスするために必要な時間及びエネルギを削減でき、またこのような配置はここではＰＥ及びＳＭ分散配置と呼ぶこともできる。
【００３８】
図１の実施形態では、ＰＥとＤＭＲとの比は１：１である。他の様々な実施形態において、これとは異なるＰＥとＤＭＲとの比も可能である。
【００３９】
ＨｙｐｅｒＸ（商標）プロセッサアーキテクチャは、固有の多次元性を含んでよいが、物理的には平面実施形態に実装できる。このプロセッサアーキテクチャは高エネルギ効率特性を有してよく、また（大型のアレイに対して）基本的に対応可能であり、信頼性が高い。即ち低電力かつ信頼性の高い概念を提示する。プロセッサアーキテクチャが前例のない性能を達成できる態様は、最新式のプロセッサ、メモリネットワーク、柔軟なＩＯを含む。処理要素（ＰＥ）はフルフレッジドＤＳＰ／ＧＰＰであってよく、また、ハードウェアリソースの使用を同時に最大化しながらスループットを維持するために実行パイプラインを動的に拡張できる可変幅命令語命令セットアーキテクチャによって支持される、メモリ間（キャッシュレス）アーキテクチャに基づくものであってよい。
【００４０】
通信経路の設定
図１は、処理要素（ＰＥ）及びデータメモリルータ（ＤＭＲ）のネットワークを含むＨｙｐｅｒＸ（商標）システムのある実施形態を示す。ＰＥは矩形のブロックとして図示され、ＤＭＲは円として図示されている。ＤＭＲ間のルーティングパスは点線で図示されている。中実の三角形はオフメッシュ通信を示し、実線はＤＭＲ間のアクティブなデータ通信を示す。計算タスクはその数値による識別子で示され、これを実行するＰＥ上に位置する。通信に使用されているデータ変数はその名称で示され、これを含むＤＭＲ上に位置する。図示した実施形態では、左上のＰＥはタスクＩＤ６２のタスクに割り当てられ、このＰＥに隣接する各ＤＭＲを介して他のＰＥ又はメモリと通信でき、上記各ＤＭＲは通信パス変数ｔ、ｗ、ｕで表されている。これもまた図示されているように、この実施形態では、アクティブな通信チャネルは、「ｘ」で標識されている隣接するＤＭＲを介して、７１（例えば別のタスクＩＤ）で表されているＰＥを、オフメッシュ通信パス又はポートに接続する。
【００４１】
データメモリルータ
ＤＭＲハードウェア構造のある実施形態のブロック図を図３に示す。図示した実施形態では、中央データメモリ（ｄａｔａ  ｍｅｍｏｒｙ：ＤＭ）はルータを表す八角形のリングで囲まれている。なお、図示した八角形形状は単なる記号表現であり、実際の形状は異なっていてよく、例えば矩形であってよい。ＤＭＲを取り囲むのは、他のＤＭＲ及びＰＥへのデータパスを表す多数の双方向矢印である。これらの双方向データパスは、各端部における実際の双方向トランシーバを用いて実装でき、又は反対方向に配向された単方向パスのペアとして実装できる。
【００４２】
図３のルータとデータメモリとの間の単方向矢印は、メモリとルータとの間の単方向データパスを表す。これらの矢印の近傍の小さな正方形はＤＭＡエンジン、即ちＤＭからの読み出しをサポートするＤＭＡリーダ（ＤＭＡ  ｒｅａｄｅｒ：ＤＭＡＲ）及び／又はＤＭへのデータ書き込みをサポートするＤＭＡライタ（ＤＭＡ  ｗｒｉｔｅｒ：ＤＭＡＷ）を表す。ＤＭＡＲエンジンは、典型的には読み出しデータをリンクから別のＤＭＲに送信するためにバッファによって増大させるための、メモリのためのアドレス信号を生成する。同様にＤＭＡＷエンジンは、リンクから受信した書き込みデータをバッファによって増大させるための、メモリのためのアドレス信号を生成する。各ＤＭＡエンジンはＰＥより大幅に小さく、使用電力が少なく、従ってこれらＤＭＡエンジンは、メモリのブロックの読み出し及び書き込みへの使用に関して魅力的である。ＤＭＡエンジンは、ＤＭメモリスペース内の関連する構成レジスタへのＰＥによる書き込みによって構成できる。特定のアドレスへの書き込みによりＤＭＡがトリガされ、上記増大が開始される。ＤＭＡが複数のアドレスのブロックを通しての増大を終了すると、無制限に又は所定の数のループだけルーピングを継続するよう構成されていない限り、ＤＭＡは停止する。
【００４３】
図２に示すＭＰＡ２０等のＭＰＡにおいて高帯域幅ポートをサポートするために、ポート（ＰＥ−ＤＭＲ又はＤＭＲ−ＤＭＲ）間の接続又はリンクは短くてよく（即ち隣接するものに限定されていてよく）、多数の並列な導電性トレース又は「ワイヤ（ｗｉｒｅ）」若しくは「ライン（ｌｉｎｅ）」からなってよい。いくつかの実施形態では、１つのリンクはいくつかの並列のトレース、１つのトレース又は１つの導波路のみからなってよい。
【００４４】
ＰＥ−ＤＭＲ接続は、メモリアドレスのためのトレースをデータのためのトレースから分離できる。データのためのトレースは、双方向データ伝送をサポートするためにトランシーバに接続してよく、又は書き込みデータをメモリへと移動させるためのトレースのセットと、読み出しデータをメモリから移動させるための別のトレースのセットとに分割してよい。ＤＭＲ−ＤＭＲ接続は必ずしもアドレスラインを有さなくてよいが、メッセージヘッダ又はメッセージ終了のための制御語といった、伝送されるデータ内の特定の語を示すためのラインを有してよい。
【００４５】
全てのＤＭＲ接続は、フロー制御のための追加のラインを有してよい。例えばあるラインは上流へ（目的地からソースへ）信号を伝送してよく、これにより、経路に何らかの他の通信パスが存在するため又は目的地がそれ以上のデータを受け取れないためにデータ語の更なる前進がブロックされる。本文書において、この上流ラインを「ＢＬＫ」、「ｓｔａｌｌ」、「ｒｔｒ＿ｂｕｓｙｏｕｔ」又は「ｒｔｒ＿ｂｕｓｙｉｎ」と呼ぶことにより、いくつかを示すことができる。別のラインは下流へ（ソースから目的地へ）信号を伝送してよく、これにより有効なデータが準備される。本文書において、この下流ラインを「ＩＤＬ」、「ｒｅａｄｙ」、「ｒｔｒ＿ｒｄｙｏｕｔ」又は「ｒｔｒ＿ｒｄｙｉｎ」と呼ぶことにより、いくつかを示すことができる。上流及び下流への信号伝送の両方を用いて、ローカル（隣接する）ＤＭＲ又はグローバル（隣接しない）ＤＭＲであるＤＭＲ間のリンクの端部に接続されたトランスミッタ及びレシーバの状態を示すことができる。いくつかのＭＰＡの実施形態では、ノード間の通信はプログラム制御下であってよい。
【００４６】
図４では、通信コントローラ４３０はクロスバー４５０を、ＤＭＲ入力ポート４０４のうちの１つ又は複数からＤＭＲ出力ポート４０５のうちの１つ又は複数へとデータをルーティングできるよう配向でき、またこれによってＭＰＡを通るパスに沿ってデータをリレーできる。ＤＭＲ４００は、データのための追加の通信パスを提供してよい。図示した実施形態では、多重ポートＳＲＡ４２５はその書き込みポートにおいて、ＤＭＲ入力ポート４０１又は出力レジスタ４５５から、複数のｍｕｘ、即ちマルチプレクサを介してデータを受信できる。これらマルチプレクサにより、通信コントローラ４３０は、多重ポートＳＲＡＭ４２５にアクセスしなければ多重ポートＳＲＡＭ４２５が休止状態となり得る時間の間に多重ポートＳＲＡＭ４２５にアクセスできる。ルータコントローラ４３０は、メモリスイッチ、他の３つのＤＭＲのＩｎポート４０４のうちのいずれか、又はクイックポートからの出力のためのデータを選択するようプログラムできる。
【００４７】
切り替え型ルーティングファブリックのための通信経路
いくつかのＭＰＡの実施形態では、基本的に論理チャネルであってよい経路によって、比較的長距離の通信（即ち隣接するＤＭＲを越えた通信）をサポートできる。各経路は１方向のみにデータを転送できる。双方向通信が必要である場合は、第２の経路を反対方向に確立してよい。一般にＭＰＡのある実施形態は、複数の物理的接続を空間多重化又は時間多重化することによって形成されるＤＭＲのペア間の多重接続リンクを有してよい。経路はこのような接続リンク全体に亘って確立できる。しかしながら経路をひとたび確立してしまうと、この経路が使用する接続リンク又はこの経路がその存在中に連結されるＤＭＲは変更できない。従って各経路は、例えば第１の又はソースＤＭＲ、第１の接続リンク、第２のＤＭＲ、第２の接続リンク、第３のＤＭＲ、第３の接続リンク…最後の又は目的地であるＤＭＲといった、ＤＭＲ及び接続リンクの順序付きシーケンスとして一意に定義できる。一実施形態では、ＭＰＡ内の全ての経路のセットは、全てのルータの状態によって一意に定義できる。
【００４８】
ＭＰＡの動的構成をサポートするために、経路は迅速に生成され、迅速に破壊できる。いくつかの実施形態では、経路の生成及び破壊は所定のＰＥ又は所定のＤＭＲによって開始できる。例えば所定のＤＭＲを、ＰＥを介さない別のＤＭＲへのＤＭＡ伝送を実施するよう構成でき、従って経路を生成及び破壊するよう構成できる。動的経路生成及び破壊を達成できる２つの方法として、グローバルプログラミング及びワームホールルーティングがある。グローバルプログラミングによる経路生成について次に説明し、その後多くのＭＰＡ経路に共通し得るモード及びフロー制御の特徴について説明する。ワームホールルーティング方法の説明は、このモード及びフロー制御の説明の後で行う。
【００４９】
グローバルプログラミング方法を用いた経路生成又は設定には、ＭＰＡ内の全ての経路がソフトウェア制御によって定義されること、及びこのような経路がそれぞれ、経路をデータ伝送に使用する前に構成されることが必要となり得る。これはプログラマによって手動で、又は例えばルーティングコンパイラ若しくは補助ソフトウェアによって若しくはライブラリ関数を選択することによって（ここで関数コードは既に経路設定を含む）自動的に行うことができる。複数の経路全体がＭＰＡ内で同時に使用されることになる場合、ハードウェア内で利用可能な通信リンクリソースより多くの通信リンクリソースを使用しないことの保証をプログラマが行わなければならない場合がある。あるいはソフトウェアツールを用いて、リンクリソースの使用の設計を支援できる。
【００５０】
グローバルプログラミングによって単一の経路を生成するために、その経路に沿ったＤＭＲ内の、図４の通信コントローラ４３０のような通信コントローラに、いくつかの命令をロードしてよい。これらの命令は、その経路内の各リンクに関連する適切なクロスバー構成レジスタ４５１のビット群をロードしてよい。いくつかの実施形態では、これらの命令は即座に又は順次実行してよく、その他の実施形態では、何らかの種類のトリガ信号を待ってよい。様々な実施形態では、ハードウェアは、経路が確立された後に中断されるのを防止してもしなくてもよい。従って、いずれの所定のリンクに一度に割り当てられる経路が１つのみであることを保証するのは、プログラマ又はルーティングソフトウェアの責任となり得る。経路に沿った全てのＤＭＲ内のルータ制御状態レジスタ４５１が設定されると、通信経路は完成し、データに対して準備された状態となり得る。経路は必要なくなると、経路が含む全てのＤＭＲのクロスバー構成レジスタの関連するビット群を変更することによって破壊できる。あるいは、既存の経路をそのまま無期限に残してもよく、上記既存の経路が不要となった後で、経路に沿ったルータ制御状態を必要に応じて新規の経路で単に上書きするだけでもよい。
【００５１】
ワームホールルーティング
ワームホールルーティングによる経路の設定をサポートするために、いくつかのＭＰＡの実施形態は、いくつかの追加の回路を提供できる。これらは、各ＤＭＲタイプポートに対して、制御／データ状態を表しＣ／Ｄとして示される追加の制御ラインを含んでよく、これはＤＭＲ間の接続リンクに含めてよく、また各ＤＭＲのルーティング論理４３５に連結してよい。接続リンク内のワイヤの最大数は、データ語あたりのビット数と、Ｃ／Ｄ、ＩＤＬ、ＢＬＫそれぞれに対して１つのワイヤとの合計に名目上対応する。ＩＤＬ、ＢＬＫは上で定義したように、フロー制御のためのものである。しかしながらいくつかのＭＰＡの実施形態では、これらの信号を多数の異なる方法で多重化して、ワイヤの総数を削減してよい。
【００５２】
あるＤＭＲにおいて、別のＤＭＲからデータ語を受信すると、受信側ＤＭＲはＣ／Ｄビットを用いて、ワームのヘッダ、本文及びテール語を区別できる。Ｃ／Ｄビットがデアサートされている場合、これは、受信した語が本文の語であることを表すことができる。本文の語は、データ語と制御ビットとの和に相当するものであってよく、これは経路に沿って変化しないまま通過できる。Ｃ／Ｄビットがアサートされている場合、これは、受信した語が制御語であることを表すことができる。制御語は、その語のデータ部分に、ルーティング論理４３５が解釈するためのルーティングコードを含むことができる。
【００５３】
ルーティングコードの１つの重要な特徴は、その制御語がヘッダであるか又はテールであるかを示すことであり得、従って制御語のヘッダ／テール状態を表すＨ／Ｔビットを提供できる。一実施形態ではＨ／ＴビットはＣ／Ｄビットに隣接してよいが、他の実施形態ではＨ／Ｔビットは他のビット位置に割り当てられていてよく、又は特定のマルチビットコードであってよい。制御語がテール語である場合、制御語は経路に沿って伝播でき、ＤＭＲ出力ポートをいくつかの他の経路が使用できるように順次解放できる。
【００５４】
制御語がヘッダ語である場合、制御語を受信側ＤＭＲの入力レジスタ４５４内にラッチして、ルーティング論理４３５内の組み合わせ論理によって復号化できる。ルーティング論理４３５は、ヘッダ語の適当な数ビットと、そのヘッダがやって来るポートとを検査でき、表１に示すような、出力ポートに関するクロスバー４５０の要求を発行できる。出力ポートを要求する目的でルーティング論理４３５が検査するいくつかのビットは、ナビゲーションユニット（ｎａｖｉｇａｔｉｏｎ  ｕｎｉｔ）又はＮＵＮＩＴと呼ぶことができる。１つのＤＭＲにつき４つのＤＭＲタイプ出力ポートを含むＤＭＲの実施形態に関して、ＮＵＮＩＴは表１に示すように、２ビットコードを用いて４方向オプションを特定できる。同じ又は異なる数のＤＭＲタイプポートを含むその他の実施形態では、他のＮＵＮＩＴコードを使用できる。１つのＮＵＮＩＴあたり２ビットを使用するコードについて、以下に説明する。既に確立された経路によって出力ポートがブロックされていない場合、ルーティング論理４３５はＮＵＮＩＴを評価して、ワームを前進させることができる。例えばＳＲＡＭ（ＤＭの一種）から到着したヘッダ語がＮＵＮＩＴコード１０を有している場合、ルーティング論理４３５は、ヘッダ語及びこのワームのヘッダ語に続く語のために、クロスバー４５０から東出力ポートを要求できる。
【００５５】
【表１】
2019040641.tif 000003
【００５６】
図１７は、ヘッダ語上のルーティング論理の一実施形態の動作を示す。図１７は、ヘッダ語が、ソースノードから複数のＤＭＲノードを通って目的地ノードまで前進するさまを示している。ケース（ａ）は、ソースＤＭＲから出た初期状態のヘッダ語を示してよい。この状態では、ヘッダ語はＣ／Ｄビット、Ｈ／Ｔビット、ＨＮ０〜ＨＮ４の番号を付けられた複数のヘッダＮＵＮＩＴフィールドを含み、ＨＮ０はヘッダ語の少なくとも有意なビットを占める。
【００５７】
ソースＤＭＲ目的地ＤＭＲを含む各ＤＭＲにおいて、ヘッダ語は以下のような修飾を受けながらクロスバーの出力へと通過できる。ヘッダ語は１つのＮＵＮＩＴによって右にシフトされ、左からゼロで埋められてよい。Ｃ／Ｄビット及びＨ／Ｔビットは原位置に復元されてよい。図１０のケース（ｂ）〜（ｅ）はそれぞれ、１〜４つのＤＭＲによってヘッダが処理された後に起こるヘッダの修飾を図示したものであってよい。ヘッダが各ＤＭＲを通過するにつれて、先頭のヘッダ語は、ケース（ｅ）に示すようにヌルコードが最も右のＮＵＮＩＴに来るまで、より多くのゼロで埋められ得る。ヘッダ語が同一のＤＭＲ（コントローラＤＭＲ又は隣接するＤＭＲ）からのものでなく、かつワームの次の語が制御語でない時に、最も右のＮＵＮＩＴにヌルコードがある場合、ヘッダ語は、そのワームのための目的地ＤＭＲの位置となり得る。
【００５８】
目的地ＤＭＲにおける到着をチェックするにあたって、多重クロックが必要となり得る。まず先頭のヘッダ語を、入力レジスタ４５４のうちの１つへと移動させて、ルータ制御論理４３５によって、最も右のＮＵＮＩＴのヌルコードに関して試験してよい。ヌルコードが見つかった場合、次のクロックサイクルにおいてワームの次の語が先頭のヘッダ語を上書きしてよく、そして上記次の語のＣ／Ｄビット及びＨ／Ｔビットを試験してよい。上記次の語が別のヘッダ語である場合、これは新規の先頭のヘッダ語となってよく、その最も右のＮＵＮＩＴを用いて、次のＤＭＲのための出力ポートを選択してよい。大型のアレイ全体に亘るルーティングを行うために、１つのワームに対して多くのヘッダ語が存在してよい。次の語がヘッダ語ではなく本文の語である場合、ワームはその目的地ＤＭＲにあってよい。この場合、本文の語はＤＭＲのプリセットＳＲＭ位置に書き込んでよい。ある位置における本体の語の到着は、通信コントローラ４３０のＤＭＡ論理によって又はＤＭＲによって検出してよく、これらはいずれも本体の後続の語の到着を処理できる。ワームを処理する方法に関する情報は、目的地ノードに事前にロードしてもよく、又はワーム内のヘッダの直後に含めてもよい。
【００５９】
図１８は、ＭＰＡの一部分を通る例示的な経路を示すブロック図である。図１８は「Ｒｏｕｔｅｒ  Ａ」〜「Ｒｏｕｔｅｒ  Ｈ」で表される８つのルータを示す。図示された各ルータは、図４Ｂのルータの例であってよい。簡潔にするために追加の論理は図示されていないが、図示された各クロスバーは、例えば図４に示すＤＭＲ４００といった各ＤＭＲ４００に含まれていてよく、またこのようなＤＭＲはそれぞれ、例えば図２に示すＭＰＡ２０といったＭＰＡ内の他のＤＭＲと連結されていてよい。
【００６０】
図１８に示す実施例では、ルータＡ〜Ｈはそれぞれ、ルータの左側縁部上にＮ、Ｓ、Ｅ、Ｗで表される４つの入力ポートと、ルータの右側縁部上にＮ、Ｓ、Ｅ、Ｗで表される４つの出力ポートとを含む。各ルータの入力ポートは、各ＤＭＲのＤＭＲ入力ポート４０４に連結してよく、各ルータの出力ポートは、各ＤＭＲのＤＭＲ出力ポート４０５に連結してよい。更にルータＡ〜Ｈはそれぞれ、図４のマルチポートＳＲＡＭ４２５のようなメモリに対する入力接続及び出力接続を含み、これらの接続はそれぞれルータの左側縁部上及び右側縁部上のＭで表される。
【００６１】
図示した実施形態では、各ルータＡ〜Ｈは、各ＤＭＲを介して複数の隣接するルータに連結され、これにより各ルータの各出力ポートＮ、Ｓ、Ｅ、Ｗが、上記複数の隣接するルータそれぞれの各入力ポートＳ、Ｎ、Ｗ、Ｅに連結される。従って図示した実施形態では、４つの隣接するルータから入力を受信し、かつ４つの隣接するルータへ出力を送信できるよう、各ルータを連結できる。代替実施形態では、それぞれ異なる数の入力ポート、出力ポート及びメモリ接続を含む異なる数のルータを使用してよいことに留意されたい。
【００６２】
図１８は、ルータＡを含むソースＤＭＲからルータＨを含む目的地ＤＭＲからへの経路を示し、この経路はルータＢ、Ｆ、Ｇを含むＤＭＲを横断する。図１７、１８を併せて参照すると、表１に従って定義された２ビットのＮＵＮＩＴを用いて、図示した経路を以下のようにして実装できる。この経路は、入力メモリ接続Ｍを介してルータＡに連結されたＳＲＡＭを起点とし、出力ポートＥを介してルータＡから出る。表１によると、ルータＡのためのＮＵＮＩＴは１０となる。ルータＡの出力ＥはルータＢの入力Ｗに連結され、図示した経路は出力ポートＳを介してルータＢを出る。表１によると、ルータＢのためのＮＵＮＩＴは０１となる。ルータＢのための出力ＳはルータＦの入力Ｎに連結され、図示した経路は出力ポートＥを介してルータＦから出る。表１によると、ルータＦのためのＮＵＮＩＴは１０となる。ルータＦの出力ＥはルータＧの入力Ｗに連結され、図示した経路は出力ポートＥを介してルータＧを出る。表１によると、ルータＧのためのＮＵＮＩＴは１１となる。最後にルータＧのための出力ＥはルータＨの入力Ｗに連結され、図示した経路は、出力メモリ接続Ｍを介してルータＨに連結されたＳＲＡＭで終端する。表１によると、クロスバーＨのためのＮＵＮＩＴは００となる。
【００６３】
よって、図１８に示す経路に関して図１７のフォーマットのワームホールルーティングを実装するヘッダ制御語は、制御語を示すアサートされたＣ／Ｄビット、ヘッダ語を示すアサートされたＨ／Ｔビット、それぞれフィールドＨＮ４〜ＨＮ０に対応する値００、１１、１０、０１、１０を含んでよい。図示した経路は単に、１つのＭＰＡの実施形態を通る多くの可能な経路のうちの１つであることに留意されたい。他の実施形態では、異なる数のルータ及びポートを使用してよく、また異なる経路及びルーティング方法も可能であり、考察の対象となる。
【００６４】
各ＮＵＮＩＴは経路に沿った特定のＤＭＲによって消費され得るため、１以上のビットを各ＮＵＮＩＴに追加して、個々のＤＭＲにおいて特定の挙動を要求してよい。例えば一実施形態では、１つのＮＵＮＩＴあたり１ビットの追加を用いて、所定のＤＭＲが多層モードで動作するべきか否かを特定できる。このような実施形態では、ワームホールルーティングされたパスは、ヘッダのプログラミングに応じて、経路に沿った異なるＤＭＲにおいて異なるモードを用いてよい。
【００６５】
別の実施形態では、ＰＥは、例えば図４に示すＤＭＲ４００といった隣接するＤＭＲのクロスバー入力に対してヘッダ語を直接送信してよい。ＰＥは、隣接するＤＭＲに対する特定のレジスタアドレスを、ＤＭＲアドレスポートを介して特定することによって、及び１つ又は複数のヘッダ語を同一のレジスタアドレスを介してそのＤＭＲの出力ルータに送信することによって上記送信を実行できる。例えば図４に示すルーティング制御論理４３５等のルーティング制御論理は、上記に続いてメモリスイッチ又はメモリを用いることなくワームをその経路上で目的地へと送信できるよう構成してよい。この技術は、ＰＥ間の短いメッセージのより効率的な受け渡し能力を提供できる。
【００６６】
衝突の取り扱い
ワームホールルーティングによって設定されている経路は、所定のＤＭＲを通して既にルーティングされているか又はルーティングプロセス中の１つ又は複数の他の経路を有するＤＭＲに出会う場合がある。リソースの競合は、１つ又は複数のインバウンドヘッダ語が同時に同一の出力ポートを要求する場合（衝突）、又はある経路が既に出力ポートを専有している場合（妨害）に発生し得る。ルーティング制御論理は、衝突が発生した場合に、競合の対象となっている出力ポートへのアクセスをいずれの経路が受信するかについて調停を行うよう構成された論理を含んでよい。ルーティング制御論理は衝突を検出して、競合の対象となっている出力ポートへのアクセスを１つのワームにのみ認めることができる。様々な優先／回転スキーム（例えばラウンドロビンスキーム）を用いてトラフィック分配を成型でき、また要求された出力ポートへのアクセスを特定のポートのみが常に拒否されることがないことを保証できる。
【００６７】
初めにワームホールルーティングによって設定された経路がブロックされた場合、ブロックされたワームの前進を、これを破壊することなく停止させると有利であり得る。この場合、上述のフロー制御機構を使用できる。用語「ワーム（ｗｏｒｍ）」はここでは、語、バイト又はその他の二値群であってよいフローユニット（本文書では「フリット（ｆｌｉｔ）」とも呼ぶ）の順序付きシーケンス又はストリングを表すために使用される。いくつかの実施形態では、ＤＭＲフロー制御プロトコルは以下のように動作できる。ワームがブロックに遭遇すると、ワームの先頭のフリットをブロック用ＤＭＲの入力レジスタにラッチしてよく、ＢＬＫ信号を経路内の次の上流のＤＭＲへと後進させることによって、ワームの別のフリットを上記次の上流のＤＭＲの入力レジスタにラッチできる。このプロセスは、ワームのテール語を含むＤＭＲまで、又はソースがテール語を送信していない場合はソースＤＭＲまで繰り返してよい。ワーム内のデータは、同期データ転送モードで動作するよう構成された経路内のＤＭＲの入力レジスタ及び出力レジスタにおいてキャプチャしてよい。上述のように、１つのＤＭＲにつき２つの語を記憶でき、これによってストールされたワームが「押しつぶされた（ｓｃｒｕｎｃｈｅｄ）」又は「圧縮された（ｔｅｌｅｓｃｏｐｅｄ）」状態となる。ワームは、ブロック状態がなくなるまで無期限に停止したままであってよく、その後、ＢＬＫ信号のデアサートの伝播により、上記ワームの前進移動を自動的に再開できる。ＤＭＲフロー制御プロトコルの上述の説明は、１つのリンク入力ポートレジスタに１つのフリットが記憶され、１つのリンク出力ポートレジスタに１つのフリットが記憶されていることを想定しているが、ブロック状態において１つのポートにつき複数の追加のフリットを記憶するために、追加のレジスタを追加してよく、これはワームの長さに更なる伸縮性を提供し得る。いくつかの実施形態では、特定の経路のソース側端部がフリットの送信を一時的に停止して、「ｒｅａｄｙ」信号をデアサートでき、フロー制御信号送信は、目的地側端部が「ｒｅａｄｙ」信号のデアサートを受信するまで、徐々にフリットの前進移動を停止させることができ、ワームはソースが再び送信を開始するまで所定の位置で停止することになる。プロトコルの代替実施形態では、ソースデータ送信の一時的な停止及び「ｒｅａｄｙ」信号のデアサートは、デアサートされた「ｒｅａｄｙ」ビットを有するフリットからなるバブルそ生成し得る。このバブルは、ソースがデータの送信を再開するまで又はこのバブルが目的地に到達するまで、徐々に成長でき、目的地側のレシーバはフリットを読み出し続けるが、デアサートされた「ｒｅａｄｙ」ビットを含む全てのフリットを破棄する。ソースがデータの送信を再開すると、バブルは目的地側のレシーバで再び消滅する。そして目的地側のレシーバは、アサートされた「ｒｅａｄｙ」ビットが現われるとデータの受信を再開できる。いくつかの実施形態では、ハードウェアは複数のプロトコルをサポートしてよく、またソフトウェアは複数のプロトコルを選択してよい。
【００６８】
ＭＰＡの機能を例示するいくつかの例示的な応用例について、以下で議論する。これらの例はＭＰＡ又はその構成部品の構造、機能又は範囲を限定することを意図したものではなく、以上の説明の理解を促進することのみを意図したものであることに留意されたい。これらの例の数多くの変形例を利用すること、及び以下で議論する応用例に対して多数の代替応用例が存在することも考えられる。
【００６９】
多層相互接続
上述のような多重プロセッサシステムは、特定の計算タスクを達成するために、ハードウェア（例えばＤＭＲ、ＰＥ）とソフトウェアとの協働を必要とし得る。システムの様々なプロセッサ間の協働を実現するために、ネットワークを使用して、個々のプロセッサ間でデータ及び命令を伝送できる。いくつかの実施形態では、プロセッサ間の通信のために多重ネットワークを用いてよい。
【００７０】
高いデータスループット性能を有する多重プロセッサシステム内のネットワークは、一次相互接続ネットワーク（ＰＩＮ）として表してよく、これは複数のリンク（即ちノード間にある１つ又は複数のワイヤ）及び複数のノードからなってよい。ノードは、多重プロセッサアレイの境界においてローカル処理エンジン、ローカルメモリユニット又はＩ／Ｏポートに接続するために使用できるポートを有してよい。比較的低いデータスループット性能を有する、同様に構成され得る他のネットワークは、二次相互接続ネットワーク（ｓｅｃｏｎｄａｒｙ  ｉｎｔｅｒｃｏｎｎｅｃｔｉｏｎ  ｎｅｔｗｏｒｋ：ＳＩＮ）として表してよく、例えば米国特許出願第１３／２７４１３８号に記載のシリアルネットワークがある。このような二次ネットワークは、制御、試験、デバッグ、セキュリティ及び他のいずれの適切な用途に使用できる。
【００７１】
ノードはスイッチを含んでよく、このスイッチは、あるリンク又はポートと別のリンク又はポートとの間の独立した接続を形成できるものであってよく、またＤＭＲに対応してよい。いくつかの実施形態では、集積回路の縁部付近に位置するノードは、例えばランダムアクセスメモリ（ＲＡＭ）又は汎用プロセッサ（ＧＰＰ）といった、同一の又は異なるタイプのその他のＩＣチップとオフチップ通信するための専用ポートを有してよい。
【００７２】
いくつかの実施形態では、ＰＩＮのトポロジは、ノードの２次元アレイからなる２次元メッシュを含んでよい。各ノードは別のノードに対する北、南、東、西リンクを有してよい。２次元メッシュの各ノードに「アップ」及び「ダウン」リンクを追加して、１つ又は複数の２次元メッシュを接続できるようにすることにより、３次元メッシュを得ることができる。複数の３次元メッシュを同様に接続して、一般に「超立方体メッシュ（ｈｙｐｅｒｃｕｂｅ  ｍｅｓｈ）」として知られるものを形成できる。２次元メッシュ及び３次元メッシュについて説明を行っているが、他の実施形態では多次元メッシュを形成するためにいずれの適切な次元数を用いてよい。次元は潜在的な範囲としては無限であってよいが、その代わりそれ自体がループ状になり、メッシュの円筒又はメッシュのトーラスを形成できる。いくつかの実施形態では、ＰＥのグループは、ランダムに形成されたＰＩＮと相互接続でき、そして目的地にアドレスを与えるためにマッピングできる。
【００７３】
結線技術は各次元のリンクの相対密度に影響を及ぼし得る。回路基板又はＶＬＳＩ  ＩＣといったいくつかの実施形態では、利用可能な結線の密度は回路平面においては高いが、３次元的には限定されている。３次元メッシュは、比較的少数のリンクを３次元方向に使用することによって、又は全てのリンクを回路平面に突出させることによって適合できる。面積効率のよいレイアウトを生成するために、ノード及びリンクのルーティングを調整してよい。
【００７４】
ネットワークを形成するためのこのような積層アプローチにより、特殊な製作技術を必要とせずに高次元ネットワークを実現できる。相互接続ネットワークの次元が上がると、計算リソース間、即ち処理エンジンとメモリユニットとの間の通信経路を増加させることができる。いくつかの実施形態では、リンクはメモリユニットを横断するようにルーティングでき、これにより、多重プロセッサシステムのシリコン面積の増大を最小としたまま、追加のＰＩＮリソースを実現できる。また比較的高い次元のネットワークは、貫通シリコンビア（ｔｈｒｏｕｇｈ−ｓｉｌｉｃｏｎ  ｖｉａ：ＴＳＶ）を含む最新のパッケージ技術と、様々なタイプのシリコンインタポーザ技術とを用いて実装することもできる。
【００７５】
この積層ネットワーク化アプローチを実現するために、ノードはデータパススイッチ、フロー制御信号送信、ルータ制御機構（ｒｏｕｔｅｒ  ｃｏｎｔｒｏｌ  ｍｅｃｈａｎｉｓｍ：ＲＣＭ）を含んでよい。データパススイッチは接続を確立するように構成してよく、各接続は、複数のリンク及びポートのうち許可されたサブセット間のデータパスを実現できる。例えば、あるリンクと別のリンクとの間、あるリンクとあるポートとの間、又はあるポートと別のポートとの間に接続を確立してよい。いくつかの実施形態では、データパススイッチは、出力をリンク又はポートの出口部分に連結でき、かつ入力をリンク又はポートの入り口部分に連結できる、語幅ビット並列マルチプレクサ（ｗｏｒｄ−ｗｉｄｅ  ｂｉｔ−ｐａｒａｌｌｅｌ  ｍｕｌｔｉｐｌｅｘｅｒ）を含んでよい。いくつかの実施形態では、出入りするデータをバッファリングしてそのタイミングを調整するために、リンク又はポートのインタフェースにおいて、同期クロック供給されるレジスタを使用してよい。様々な実施形態では、データパススイッチは単一段の多重化と共に実装でき、また他の実施形態では、データパススイッチは複数段の多重化と共に実装できる。
【００７６】
本発明の一実施形態の多層ＩＮ切り替えノードは、その最も一般的な形態において、上記ノードにおいてソース供給できる、上記ノードを通過する、又は上記ノードにおいて終端する複数の通信経路のための、層スイッチ及び方向スイッチを含む。上記ノードは、設定可能なプロトコルに応じてポートに到着するインバウンドデータを解釈し、そのデータを用いて何を行うかを決定する。ＩＮ内の他のノードにリンクされたポートが受け取ることができるデータの最小単位は、リンク上でデータフロー制御を受ける最小単位でもあり、本文書ではフローユニット又は「フリット」と呼ぶ。
【００７７】
フロー制御信号送信は、レシーバが吸収できるよりも多くのデータを送信することによって、又はセンダが十分に迅速に送信できなかったデータをレシーバが複製することによって、データが失われないようにするために、各接続を通るデータのフローを調節できる。ソースポートにおいてチャネルへと送信されるデータは、ある程度の期間のレイテンシの後でその目的地ポートに現れ得る。場合によっては上記レイテンシの期間は、横断されるリンク１つあたり１クロック期間に対応し得る。データの損失を防ぐために、チャネル内でのデータフローのレートを、ハードウェア、ソフトウェア又はこれらの組み合わせによって制御できる。いくつかの実施形態では、ハードウェアフロー制御信号送信は、データが準備できていることを示すセンダからレシーバへの二値電気信号と、更なるデータの送信前にセンダが待機（ストール）するべきであることを要求するレシーバからセンダへの別の二値電気信号とを使用してよい。これらフロー制御信号は、データパスを並列に辿ることができ、これはデータマルチプレクサの通過を含む。
【００７８】
ルート制御機構は、リソース（リンク又はポート）に対する接続要求を処理するよう構成してよい。いくつかの実施形態では、ＲＣＭは、入力信号に関して（一般には異なる方向からの）多数の入力を検索できる。信号が特定のリソースを要求するコードを含む場合、ＲＣＭは、要求されたリソースが利用可能であるか、即ちそのリソースが既に存在する接続によって予約されていないかをチェックできる。要求されたリソースが利用可能である場合、ＲＣＭは要求を承認し、信号をデータパスマルチプレクサに送信して接続を形成し、その接続を通るフロー制御信号送信を確立できる。反対に要求されたリソースが利用可能でない場合、ＲＣＭは要求を承認せず、既に存在する両立できない条件が除去されるまでセンダをストールするために、上記要求を行う入力に信号送信を行うことができる。あるいはＲＭＣは、ブロック接続を時分割して、要求された接続を時間の一部に基づいて実現してよい（一般に「カットスルー（ｃｕｔ−ｔｈｒｏｕｇｈ）」と呼ばれる）。入力のいずれの特定のサブセットをストール又は時分割している間、ＲＣＭは入力される信号に関する残りの入力のセットを検索してよい。
【００７９】
ＲＣＭは、利用可能なリソースに対して同時に複数の要求が行われる場合に対処するための調停機構を含んでよい。同一のリソース（リンク又はポート）に対して２つ以上の接続要求が同時に到着した場合、ＲＣＭはこれらを調停して勝者を選択できる。いくつかの実施形態では、調停スキームは優先順位スキーム、ラウンドロビンスキーム又はその他のいずれの適切な調停方法であってよい。他の実施形態では、調停スキームを、優先順位スキーム、ラウンドロビンスキーム又はその他のいずれの適切な調停方法となるように構成してよい。
【００８０】
特定の接続に関する切断コマンドを受信した場合、ＲＣＭはその切断コマンドをいずれの出力リンクに中継して、上記接続に関連するリソースを解放できる。解放されたリソースは、他の接続を形成するために即座に利用できるようになる。切断が確立された場合、ＲＣＭはリソースを、切断された既に存在する接続に対して復元してよい。様々な変形実施形態では、ＲＣＭはその他の機能又は役割を実行してよいことに留意されたい。
【００８１】
ＰＩＮを通るルーティングは階層型の様式で実施でき、異なる技術は階層の異なるレベルを利用する。あるノード内のＲＣＭは最下レベルであり、通信経路（チャネル）の設定及び切断は中間のレベルであり、相互干渉を最小化するための経路のグループ選択は最上レベルである。ノードのレベルでは、ルーティングは基本的なものであり、かつ迅速であり、典型的にはハードウェアで実現される。ルーティング階層の更に上のレベルでは、ルーティングはより複雑であり、ソフトウェアで達成される場合がある。
【００８２】
ノードのレベルでは、ルーティングは既に比較的詳細に説明したようなルーティング制御機構を用いて達成される。いくつかの実施形態では、ＲＣＭは状態機械として実装してよい。ルーティング要求は、ローカルＰＥからポートを介してノードへと到着してよい。ルーティング要求はまた、メッセージのヘッダにおいて符号化され、リンクから到着する場合もある。既に比較的詳細に説明したように、メッセージ内に符号化されたルーティング要求は、一般に「ワームホールルーティング」と呼ばれるチャネル構成方法の基礎を形成する。このようなルーティング方法では、メッセージはソースノードにおいて構成され、チャネルの行き先を記述するヘッダが冒頭に付けられる。様々な実施形態では、異なるヘッダ形式を用いてよい。
【００８３】
ＲＣＭはまた、接続されているチャネルのトラフィックを監視して、より最適な配置に接続を局所的に調整するためにこの情報を使用できる。例えば２つのパスが１つのリンク上で時分割され、これらパスのうちの一方が他方の接続に比べてビジー状態である場合、ＲＣＭは、トラフィック負荷が高いパスにより長い時間を割り当てることができる。別の例では、切り替えノードが局所的なトラフィックをバイパスするための追加のリンクを有する場合、これらのリンクに対して直通のトラフィックをシフトして、パスにソース供給するため又はパスを切断するためのローカルリソースを活用できる。
【００８４】
パスがもはや必要ない場合、「テール」コードをパスのソースポートに送信してよい。いくつかの実施形態では、このテールコードは、システムのハードウェアが自動的に送信できる。他の実施形態ではソフトウェアがテールコードの送信を制御してよい。テールコードが確立されたパスに沿って伝播すると、個々のＲＣＭは接続をクリアし、それぞれのルーティングリソースを解放する。テールコードの挿入は、ハードウェアを介して自動であってよいか、又はソフトウェア制御下で送信してよい。いくつかの実施形態では、ヘッダ語とテール語をメッセージ本文から区別するために、リンクに追加のデータビットを含めてよい。データ完全性を支援するために、いずれのリンクが語のパリティビットを備えてもよい。
【００８５】
（チャネルとも呼ばれる）経路は、静的又は動的であってよい。静的なパスは、所定の適用期間に関して設定及び使用され、動的なパスは、メッセージ伝送のために生成した後切断され、後に形成されることになる他の経路のためにリンク及びノードを解放できる。いくつかの実施形態では、動的パスを切断して、それ自体の別のインスタンスによって後に置換できる。
【００８６】
上述のように、ワームのヘッダは、ソースアドレス、中間アドレス、目的地アドレス及びモード要求といったルーティング情報を含む。この情報のうち目的地アドレスは通常必要であり、多くの様々な方法で符号化され得る。一実施形態では、アドレスはターンのシーケンスとして符号化してよく、他の実施形態では、アドレスはデカルトＸ−Ｙ対として又はその他のいずれの適切な符号化方法で符号化してよい。いくつかの実施形態では、ルーティング情報は、ナビゲーションユニット（一般に「ｎｕｎｉｔ」と呼ばれる）のシーケンスの形態を取ってよい。ｎｕｎｉｔを符号化して、接続リソース（リンク又はポート）や、通信経路の設定中に出会う各ノード及びＲＣＭのモードを要求できる。
【００８７】
最小（２ビット）ｎｕｎｉｔコードは「前方直進」、「左折」、「右折」又は「停止」接続を要求し得る。ヘッダメッセージがノードを通過すると、ｎｕｎｉｔのシーケンスは、接続命令が実行されるに従って前から短縮され得る。「停止」命令に出会うと、ＲＣＭはデータパスマルチプレクサを配向して、ＰＥ又はＤＭＡによるアクセスのために、レジスタにワームメッセージの残りを提示してよい。ＤＭＲは複数のこのようなレジスタをサポートしてよく、これにより複数のチャネルを同時にサポートできる。このようなレジスタのアドレスは、目的地ノードにおける対応する到着方向にマッピングでき、これにより特定のＰＥが、特定の方向からのメッセージの到着を待機できる。
【００８８】
２ビットナビゲーションユニットに関して上述したが、他の実施形態では、より高次元のメッシュ接続を有するＩＮ、また追加のルータモードを実現するために、ナビゲーションユニットにいずれの適切な数のビットを使用してよい。例えば各ｎｕｎｉｔにおいて追加のビットを符号化してよい。追加のｎｕｎｉｔビットにより、「上行」又は「下行」して層を切り替えるための接続命令が可能となり、また２つ以上の層状ＰＩＮと両立できる。追加のｎｕｎｉｔビットを用いて、ルータモードを例えば固定モード又は最適化モードへと修正してよく、ここで最適化は、時分割の割当量、最も近接したものではない近隣のリンクを用いた優先ルーティング又はその他の最適化に適用してよい。
【００８９】
多重プロセッサアレイ（ＭＰＡ）上のアプリケーションソフトウェアは、ＰＥとチップのＩ／Ｏインタフェースとの間の多数の通信経路の集合を必要とし得る。２つ以上の経路が互いをブロックし得るため、またこのブロックの蓋然性は、有限のリソースに対してパスの数が多過ぎて混雑する場合に確実なものとなるため、経路のルーティングは、少なくとも１つの利用できそうな（非干渉性の）ルートを発見することへと縮減される。パスの密度が上昇すると、利用可能なルートの発見はますます困難になり得る。パスの密度の測定は、パス−リンクフィルレシオ（即ちパスの全長をリンクの全長で割ったもの）である。このフィルレシオが１００％に近づくと、全てのパスルートの確立が不可能となり得る。
【００９０】
通信経路（パス）のルーティングは、「ルータ」と呼ばれるソフトウェアツールを用いて達成でき、ルータはソフトウェア開発用スイートの一部として含まれてよい。（タスク配置ツールを使用するであろう）プログラマは、ルーティングする必要があるパスのリスト（これはネットリストとも呼ばれる）をルータツールに提供できる。まず、パスをそのソースノード及び目的地ノードの位置によってのみ特定してよい。ルーティングするべき各パスに関して、ルータは、ソースから目的地への最小距離のリンクのシーケンスを選択してよい。この第１の手順が終わった後には、他のパスをブロックする複数のパスが存在し、これらパスはブロック低減技術を用いて再ルーティングできる。ブロックの低減によるこの再ルーティングは、ブロックが検出されなくなるまで繰り返してよい。
【００９１】
ルーティングプロセスをより容易にするための方法は、必要なパスの数を削減するためにアプリケーションソフトウェアアルゴリズムに制約を加えることを伴ってよい。場合によっては、複数のパスが同一のノードを探索している場合又は複数のパスが１つのノードから出ようとしている場合、パスの密度は高い。このような場合の混雑を低減するために、複数のノードに亘ってアルゴリズムを分配してよく、これにより、より多くのリンクに亘ってメッセージトラフィックを効果的に分配できる。ハードウェアの再設計において、ＤＭＲリンク性能を向上させて、ノード１つあたりに実現できる接続を増やしてもよい。ルーティングプロセスをより容易にするための別の方法は、１つのＤＭＲに対して利用可能な接続リソース（リンク及びスイッチ）の数を増加させることを伴ってよい。
【００９２】
１つのＤＭＲに対して接続リソースを追加するという目的のために、追加のリソースは、ＩＮに追加される層として組織してよい。追加される各層は、一連のノード間接続を含んでよく、各ルータは一連のデータパスマルチプレクサ、フロー制御信号送信、ルータ制御機構を含んでよい。いずれの通信経路がある層から別の層へと横断できるようにするために、追加のデータパススイッチ及びその制御が必要となり得る。
【００９３】
図５Ａは、単一層ＩＮのＤＭＲノード５５０に関する、単一層方向スイッチの例示的実施形態を示す。ＤＭＲノード間のリンクは、各ＤＭＲの入力ポートと出力ポートとを接続する。これらのポートはＤＭＲの方向スイッチ（ルータ）へと接続される。ルータ入力構成部品５５２、５５４、５５６、５５８については、図４Ｂの下半分に、アイテム４８２、４８６として更に詳細に示している。ルータ出力構成部品５５１、５５３、５５５、５５７については、図４Ｂの上半分に、アイテム４８１、４８５、４８７、そしてルータ制御論理４８９として更に詳細に示している。なお図４Ｂでは、入力ポートデータレジスタ４８６は入力フリットをバッファリングして、３つのルータ出力構成部品（左折、前方直進又は右折に関するもの）及び（経路の切断に関するもの）をメモリスイッチ４８８に接続し、クイックポート（図示せず）をＰＥに直接接続するために利用できる。図５Ａでは、ルータ入力構成部品とルータ出力構成部品との間に引かれた線は、出力構成部品内のルータ制御論理４８９及びデータパスマルチプレクサ４８５が選択できるマルチビットバスを表す。
【００９４】
図５Ｂは、２層ＩＮのＤＭＲノード５００に関する、２層方向スイッチの実施形態を示す。図示した実施形態では、ノード５００は、出力ポート５０１、５０５、５０９、５１３及び入力スイッチのＢ側で構成される追加のグローバル（層Ｂ）を含む。図５Ｂでは、入力スイッチのＢ側とＧｏポートとの間に引かれた線は、Ｇｏポートにおいてデータパスマルチプレクサが選択できるマルチビットバスの接続を表す。
【００９５】
図５Ｂに示す実施形態では、既に存在するローカル（層Ａ）方向スイッチは、図４Ｂ、５Ａに示したものと同一であってよいが、図５Ｂを分かりやすい状態に維持するために、層Ａの出力ポート５０２、５０６、５１０、５１４及び入力ポート５０３、５０８、５１２、５１５のみを図示している。
【００９６】
図５Ｂに示すように、ノード５００は、ローカル（層Ａ）入力ポート５０３、５０８、５１２、５１５にそれぞれ連結された入力スイッチ５０４、５０７、５１１、５１６を更に含む。これら入力スイッチの目的は、インバウンド通信経路が、ローカル（層Ａ）からグローバル（層Ｂ）へ、又はグローバル（層Ｂ）からローカル（層Ａ）へ切り替えられるようにすることである。いくつかの実施形態では、クロスバースイッチ５０４、５０７、５１１、５１６は、直進接続と交差接続の２つの状態のみが可能な２入力２出力（２×２）クロスバースイッチからなってよい。
【００９７】
図５Ｂに示す実施形態では、入力スイッチ制御論理（図示せず）はルータ制御論理４８９から分離されていてよい。入力スイッチ制御論理とルータ制御論理とをまとめて、ルータ制御機構と考えてよい。
【００９８】
各クロスバースイッチは、Ａポート及びＢポートからデータを受信し、同一の層上で、又は層間を横断させてデータを選択的に通過させる。ローカル（Ａ層）出力ポート５０２、５０６、５１０、５１４は、ＤＭＡ又はＰＥからデータを受け取り、このデータをそれぞれのＡリンクへと伝送してよい。いくつかの実施形態では、ローカル（Ａ層）出力ポートを入力ポート５０３、５０８、５１２、５１５に接続して、直通ルートを生成できるようにしてもよい。
【００９９】
グローバル出力ポート５０１、５０５、５０９、５１３は、クロスバースイッチ５０４、５０７、５１１、５１６のＢ側からデータを受け取り、このデータをそれぞれのＢリンクへと伝送してよい。様々な実施形態では、グローバル出力ポートはローカルルートと組み合わせては使用できない。
【０１００】
なお、図５Ｂに示すノードのポート構成は単なる例である。他の実施形態では、異なる数、構成、相互接続を有するポートも可能である。
【０１０１】
図６は、多重プロセッサアレイの一部の実施形態を示す。図示した実施形態は、ローカルリンク６１１及びグローバルリンク６１０を通してＤＭＲ６０２に連結されたＤＭＲ６０１を含む。ＤＭＲ６０１は更にＰＥ６０３に連結され、またＤＭＲ６０２もまた更にＰＥ６０３に連結される。
【０１０２】
ＤＭＲ６０１では、グローバルリンク６１０及びローカルリンク６１１はクロスバースイッチ６０４に連結され、クロスバースイッチ６０４は更にグローバルポート６０５及びローカルポート６０６に連結される。ＤＭＲ６０２では、グローバルリンク６１０及びローカルリンク６１１はクロスバースイッチ６０７に連結され、クロスバースイッチ６０７は更にグローバルポート６０８及びローカルポート６０９に連結される。
【０１０３】
動作中、ＤＭＲ６０１のローカルポート６０６から伝送されるデータは、ローカルリンク６１１に連結できる。この例では、クロスバーは入力ポート側にしかない。あるいは、グローバルポート６０５から伝送されるデータは、クロスバースイッチ６０４によってローカルリンク６１１に又はグローバルリンク６１０に連結できる。ここでもまた、グローバルポート６０５からのデータはグローバルリンク６１０からしか出ることはできない。同様に、ＤＭＲ６０２がグローバルリンク６１０を介して受信したデータは、クロスバースイッチ６０７を通してローカルポート６０８又はグローバルポート６０９へとルーティングできる。クロスバースイッチ６０４は直進又は交差の２つのアクティブ状態しか有さないことに留意されたい。例えばグローバルリンク６１０がローカルポート６０８に接続された場合、ローカルリンク６１１はグローバルポート６０９にしか接続できず、またグローバルリンク６１０がグローバルポート６０９に接続された場合、ローカルリンク６１１はローカルポート６０８にしか接続できない。
【０１０４】
なお、図６に示す多重プロセッサアレイのＩＮ内のノード間リンクの実施形態は、単なる例である。他の実施形態では、双方向及び時分割接続を含む異なる数及びタイプのＤＭＲ間接続が可能であり、考察の対象となる。
【０１０５】
図７は、ＤＭＲ内の可能な内部ルートを示すブロック図である。図示した実施形態では、ＤＭＲ７００はローカルポート７０１、７０３、７０５、７０７、グローバルポート７０２、７０４、７０６、７０８を含む。ＤＭＲ７００は更にローカルメモリ７０９を含む。図７に示す実施形態では、ローカルポート７０１はローカルポート７０３、７０５、７０７に連結される。ローカルポート７０１は更にローカルメモリ７０８に連結される。いくつかの実施形態では、上述の連結は、既に比較的詳細に説明したようにＲＣＭによって設定でき、またこの連結によりＤＭＲ７００において直通ルートを実現できる。例えば隣接するＤＭＲからローカルポート７０１に伝送されるデータは、ローカルポート７０３、７０５、７０７のいずれかの出力部分を通過できる。更にローカルポート７０１を通して受信されたデータは、ローカルメモリ７０９に記憶できる。図７に示すポートの数並びにポートの構成及び内部ルーティングは単なる例である。様々な実施形態では、異なる数のポート及び異なる構成の内部ルーティングを使用してよい。
【０１０６】
図８は、ＭＲ内の可能なグローバルルートを示すブロック図である。図示した実施形態では、ＤＭＲ８００はローカルポート８０１、８０３、８０５、８０７、グローバルポート８０２、８０４、８０６、８０８を含む。
【０１０７】
図８に示す実施形態では、グローバルポート８０２はグローバルポート８０４、８０６、８０８に連結される。いくつかの実施形態では、上述の連結は、既に比較的詳細に説明したようにＲＣＭによって設定でき、またこの連結によりＤＭＲ８００において直通ルートを実現できる。例えば隣接するＤＭＲからグローバルポート８０２に伝送されるデータは、グローバルポート８０４、８０６、８０８のいずれかの出力部分を通過できる。
【０１０８】
図８に示すポートの構成は単なる例である。他の実施形態では、異なる数のポート及び異なる配置のポートが可能であり、考察の対象となる。
【０１０９】
図４〜８に示す上述の実施形態では、入力スイッチ制御論理は設定可能なプロパティを有してよい。図９は、例示的な入力スイッチ制御プロパティを示す表である。ローカル（層Ａ）上に残るようプログラムされた入力用経路ルートに関して、入力ルータポートＡは入力ルータポートＢよりも高い優先度を有してよい。入力グローバル（層Ｂ）ルートの場合、入力ルータポートＢは入力ルータポートＡよりも高い優先度を有してよい。しかしながら、入力ルータポートＡと入力ルータポートＢとが同一のリソースを要求する場合、要求のタイプに応じて、高優先度のポートは入力スイッチ状態を制御することによってリソースへのアクセスを制御でき、低優先度のポートは、要求されたリソースが利用可能である場合はこれに続くことができ、上記リソースが利用できない場合はストールしてよい。図９の表にこのような優先度を示す。
【０１１０】
図９のルーティングの表は、層切り替え制御論理ハードウェアが経路設定中に、ノードの現在の状態及びノードに提示される方向切り替え要求に基づいて層の切り替えの選択を実行できるようにする、例示的なルーティングプロトコルの半自動モードに対応する。このモードは、方向の要求のみを特定する最小サイズのｎｕｎｉｔを含むフリットを処理するにあたって有利であり、場合によっては他の経路からのブロックを回避できる。
【０１１１】
例示的なルーティングプロトコルの非自動モードでは、制御論理ハードウェアは、データパス切り替え（層又は方向）の選択を行う自由を有することができず、その代わりに、到着するヘッダのフリットの現在のｎｕｎｉｔにおいて上記選択を符号化する必要があり得る。このモードは、半自動モードよりも多くのｎｕｎｉｔを必要としてよく、これらには、これに比例してより多くのヘッダフリットが適合され、これによりワームホールルーティングされた通信経路を設定できる。このモードは、ソフトウェア開発ツールスイートによる経路位置の正確な制御のために有利であり、これはアプリケーションソフトウェアが必要とするパスに対する極めて広い視野が得られ、またこれにより、他の経路には見えないパスの選択によって得られるものよりも、ブロック及び利用不可能な経路を回避するために良好に装備される。
【０１１２】
層及び方向切り替えのための設定可能な制御論理の使用はマルチモードルーティングプロトコルをサポートする。例示的なＨｙｐｅｒＸ  ＤＭＲでは、現在の構成は、アプリケーションソフトウェアに対してＲ／Ｗアクセス可能なＤＭＲの内のレジスタによって保持される。各ＤＭＲは、他のＤＭＲとは独立して構成してよく、従って、ワームホールルーティングされる経路を設定するためのヘッダのフリットは、遭遇するよう構成されたＤＭＲの予期されるモード設定に応じて、様々なサイズのｎｕｎｉｔを有するものとすることができる。
【０１１３】
ストール及び再試行
クロスバースイッチは、両ポート（Ａ、Ｂ）がローカル（層Ａ）アクセスを要求する場合を除いて、インバウンド経路設定のあらゆる場合を実装できことに留意されたいる。両ポートがローカルアクセスを要求すると、クロスバースイッチは入力ルータポートＢをストールすることができる。いくつかの実施形態では、クロスバースイッチはアクセスを可能とすることができるが、下流のファブリック優先度論理は要求をストールしてよい。タイミングへの影響を最小化するために、クロスバースイッチは、現在のヘッダフリットの要求及びクロスバー状態のみを使用する最小の論理に基づいて適切な状態への切り替えを行うように設計してよい。下流での更なるストールは考えられない。これは、その状態において限定された知見に基づいて潜在的に良好でない決定が行われ得る場合に発生し得る。
【０１１４】
これらの場合は全て、以下のような条件の単一のセットによって説明できる。
【０１１５】
入力クロスバーは、既存のアクティブなトランザクションに対して現在「ロック」されていない。
【０１１６】
グローバル要求は、Ａポート及び／又はＢポートに到着する第１のヘッダによって行われる。
【０１１７】
優先度スキームに基づいて、第１のヘッダフリットは、Ｂ’（グローバル）バスに配置されて、Ｇｏポート論理に送信され得る。
【０１１８】
このＧｏポート論理は、（異なる方向からの）別の経路によって既に使用されているか、又は同一のサイクルにおいてより高い優先度の方向から第２のヘッダフリット要求を受信している。
【０１１９】
これらの条件の下で、第１のヘッダフリットは、入力クロスバーから下流でストールすることになり、従ってＧｏポートが利用可能になるのを待機しなければならない。
【０１２０】
このような場合、要求されたルート方向に関連するＯｕｔポート（層Ａ）がグローバルルートのために利用可能となるものの、上記論理は、このことを検出するために単一のサイクルで実行するには複雑過ぎるものとなり得る。このような場合、「ストール及び再試行」タクティックを使用してよい。上述の条件が発生した場合、要求をストールしてよく、同一のクロックサイクル全体の間に、必要な論理全てを評価して、層切り替え入力クロスバーによる異なる決定がクリアなパスを提供するかどうかを決定してよい。クリアなパスが提供される場合、関連する情報を次の立ち上がりクロックエッジに登録してよく、いずれの新規の要求に関して再試行を評価してよい。（同一の又は他のポートにおける）いずれの新規の要求も上記再試行と競合しない場合、この再試行を承認してよく、代替のパスにおいてルートを完成できる。
【０１２１】
上述の方法により、限界速度のパスを発生させるようなサイクルの論理に過剰な負荷をかけることなく、第１の要求サイクルにおいて全ての条件が考慮されるかのように、グローバルルートファブリックを完全に使用できる。ルート設定はなお、ファブリックの現在の状態に基づく決定論的なものであるが、ルートは、再試行が必要である場合、ＤＭＲを通過するための追加のサイクルを取り得る。
【０１２２】
図９の表に示す優先度は単なる例である。他の実施形態では異なる優先度も可能であり、考察の対象となる。更に様々な実施形態では、クロスバーは、（例えばｎｕｎｉｔ／フリットプログラミング及び制御レジスタ等の）ハードウェア若しくはソフトウェア又はこれらの組み合わせによって制御してよいことに留意されたい。
【０１２３】
図１０は多層ルーティングの例を示す。図示した実施形態では、ＰＥ１００６はワームヘッダを生成することにより、ＤＭＲ１００１の東ポートからＤＭＲ１００３の西ポートまでルーティングする。ルートはルータポートＡ又はＤＭＲ１００１から始まり、そしてＤＭＲ１００２へと続く。ＤＭＲ１００２に到達すると、ＤＭＲ１００２の層切り替え入力クロスバーは、ルータポートＢ（グローバルポート）を用いて、ワームをＤＭＲ１００３へと前方へ送信することを決定する。ＤＭＲ１００３に到達すると、ＤＭＲ１００３の層切り替えは、ルートをローカル（層Ａ）入力ポートへ戻るように切り替え、ワームホールパスをそこで切断できる。
【０１２４】
また図１０は、ＤＭＲ１００５の北ポートからＤＭＲ１００４の西ポートへ向かう、ＰＥ１００７によって生成されるワームルートを示す。このルートはＤＭＲ１００５のルータポートＡ（北）から始まる。図９に示す優先度の表を参照して既に説明したように、ルートはＤＭＲ１００１のルータポートＢ（東）へと切り替えられる。ルートは、入力クロスバースイッチの固定状態（例えばクロスバースイッチは、上述のように、ＰＥ１００６が確立したルートによってある方向に既に設定されている）により、ＤＭＲ１００２のルータポートＡ（西）へと切り替えられる。同様の理由で、ルートはＤＭＲ１００３においてグローバルルーティングレベル（レベルＢ）に戻るように切り替えられる。ルートはＤＭＲ１００３を出て、ルータポートＢを介してＤＭＲ１００４に入り、ローカル入力ルートポートへと切り替えられ、ここでワームホールルーティングが切断される。
【０１２５】
なお、図１０に示したルートは単なる例である。他の実施形態では、異なる数のルート及び異なるルートパスが可能である。
【０１２６】
セキュリティバイパスルーティング
ＭＰＡチップのある領域は、ＭＰＡチップの他の領域に対して保護される必要があり得る。様々な理由から、ＭＰＡチップのある領域は、デバイス制御、ＩＰライセンス発行、ユーザ認証等に関連する、又は適切な動作に対して重大なアルゴリズムを動作させる、完治可能なデータを含んでよい。その一方でＭＰＡの別の領域は、安全であることが確認されていないソフトウェアを実行してよい。様々な理由（このソフトウェアは新規のものであり、かつ多くのバグを有し得る、又は安全性確認のためにソースコードが利用できない、又はソフトウェアの確認が非経済的となる程にソフトウェアが巨大かつ複雑であり得る）から、未確認のソフトウェアが存在し得る。未確認のソフトウェアはウイルス又はスパイウェアを含み得る。
【０１２７】
ワームホールルーティングされた通信パスは、ある領域においてソース供給され、別の領域をプロービングし、データ又は命令をコピーイン又はコピーアウトするように設計してよい。この種のプロービングを防ぐために、ＤＭＲのリンク及びポートを、設定可能に無効化できるよう設計してよい。上で参照した米国特許出願第１３／２７４１３８号を参照されたい。一実施形態では、関連するＤＭＲリンク及びポートが図８Ａポートに示されており、円形の特徴部分はメッセージトラフィックを無効化できる点である。また図８には、シリアルバスへのＳＢＳインタフェースの構成レジスタも示されており、これは、ＤＭＲポート／リンクのそれぞれを無効化するよう個別のビットを書き込むことができるように設計されていてよい。シリアルバスは、構成及びデバッグ目的で使用できる、チップ上の低帯域幅二次相互接続ネットワーク（ｓｅｃｏｎｄａｒｙ  ｉｎｔｅｒｃｏｎｎｅｃｔｉｏｎ  ｎｅｔｗｏｒｋ：ＳＩＮ）であってよい。
【０１２８】
図１９は、フリーハンドの境界線で範囲を定められた領域を有するＭＰＡを示し、上記領域は、この境界において通信経路を無効化することによって保護できる。保護された領域内の通信パスは、境界において無効化された通信によって影響を受けない。しかしながらこの境界で区切られた領域は十分に大きく、保護された領域の各側のＰＥの間の通信の障害となる。よって、保護された領域の安全性を損なうことなく、保護された領域を横断するように保護されていないメッセージをルーティングするための方法が必要となる（ここでは「セキュアバイパスルーティング（Ｓｅｃｕｒｅ  Ｂｙｐａｓｓ  Ｒｏｕｔｉｎｇ）と呼ぶ）。
【０１２９】
セキュアバイパスルーティングは、ワームメッセージを、ローカルメモリ及びＰＥポートへの接続から設定可能に制限できるように、ＤＭＲを設計することによって達成できる。ＤＭＲは、メモリ及びＰＥポートをローカル層Ａのデータパスのみに直接接続し、層スイッチ（入力クロスバー）によって間接的に接続される以外は他の層のデータパスに接続しないよう設計してよい。このＤＭＲの実施形態では、ワームメッセージ層の切り替えは入力クロスバーに制限され、ワームメッセージがＤＭＲの層を切り替えるのを防ぐ方法は、クロスバーを前方直進状態にロックすることである。
【０１３０】
２層ＩＮに関して、クロスバーは（直進又は交差の）２つの状態しか有さない。これらのクロスバーが直進状態にロックされると、いずれのインバウンドワームメッセージは、同一層上のクロスバーから出るように制約を受ける。図５Ａに示す実施形態では、ローカル層Ａ上に入ってくるワームメッセージは、層ＡのＯＵＴＰＯＲＴに出ることができ、又はこれらはＩＮＰＯＲＴにおいて切断できる。グローバル層Ｂ上に入ってくるワームメッセージは、層ＢのＧＯＰＯＲＴ上にしか出ることができない。
【０１３１】
３層以上のＩＮに関して、クロスバーは多くの状態を有してよく、いずれの入力層からローカル層Ａへの接続を含んでよい。これらの「ローカルＩＮＰＯＲＴへの接続」状態がロックされた状態である場合、上側の層へのインバウンドワームメッセージは層を切り替えるもののＩＮＰＯＲＴからは排除され、ＩＮＰＯＲＴを安全なまま維持できる。いくつかの状況では、上側の層のインバウンド通信経路のうちのいくつかがＤＭＲのＩＮＰＯＲＴに到達できるようにすることが望ましい場合があり、これは、ＤＭＲ構成レジスタにおいてより多くのプログラミングビットに適合できる。
【０１３２】
図１９は、安全な領域上の保護されていない通信経路を示し、ここで点線は、保護された領域全体に亘るグローバル（層Ｂ）リンク上を通過するルートを示し、これは上記保護された領域内で始まらず、又は終端しない。
【０１３３】
図２０に示す実施形態では、安全な領域上のバイパスを生成するためのイベントのシーケンスを以下の例において説明する。なお、この例では、用語「ｃｏｎｆｉｇ−ｒｅｇ」は構成レジスタ（ｃｏｎｆｉｇｕｒａｔｉｏｎ  ｒｅｇｉｓｔｅｒ）の略語である。
・ＰＥ（０，０）及びＤＭＲ（１，１）を保護する（Ｒｏｕｔｅ−ｏｖｅｒ方式で）。
−ＰＥ（０，０）を設定する：ＩＭをロードし、更なるＲ／Ｗから保護する。
・必要な場合、ＰＥ（０，０）を再設定するためにＳＢＳ（０，０）ｃｏｎｆｉｇ−ｒｅｇを設定する。
・ＳＢを通してＰＥ（０，０）の全てのＩＭを書き込み、任意に確認する。
・ＩＭバスを無効化するためにＳＢＳ（０，０）ｃｏｎｆｉｇ−ｒｅｇを設定し、ＳＢＳｃｏｎｆｉｇ−ｒｅｇをロックする。
・任意にＳＢＳ    ｃｏｎｆｉｇ−ｒｅｇを読み出し、ロックされていることを確認する。
−ＤＭＲ（１，１）を設定する。
・必要な場合、ＤＭＲ（１，１）を再設定するためにＳＢＳ（１，１）ｃｏｎｆｉｇ−ｒｅｇを設定する。
・任意にＤＭＲ（１，１）を初期化して確認する。
・北ポート及び東ポート並びにＩＭバスを無効化してｃｏｎｆｉｇ−ｒｅｇをロックするために、ＳＢＳ（１，１）ｃｏｎｆｉｇ−ｒｅｇビットを設定する。
・任意にＳＢＳｃｏｎｆｉｇ−ｒｅｇを承認し、ＩＭバスをロックする。
・全てのＡポートを無効化し、入力クロスバーロッカービットを設定する。
・ＰＥバスＮＥ、ＮＷ、ＳＥを無効化し、構成をロックする。
−ＤＭＲ（１，１）は、ＰＥ（０，０）のみがそのＤＭ又はレジスタへの読み書きアクセスを有しかつＰＥ（０，０）が保護されているため安全であり、ＤＭＲポート又はＳＢＳに到着するメッセージは無視される。
−ＰＥ（０，０）及びＤＭＲ（１，１）を保護した後、これらと相互作用しない多数の可能なバイパスルートが存在する。例えば、ＤＭＲ（１，０）の北に位置するＤＭＲ（２，０）（図示せず）のクイックポートを使用するＰＥ（１，０）は、Ａ層上のＤＭＲ（１，１）に到着するＤＭＲ（２，０）の南クイックポートにヘッダフリットを書き込んでよく、続いてＢ’層に切り替えられる。バイパスルートは、Ｂ層上のＤＭＲ（１，１）へのリンク上で継続してよい。ＤＭＲ（１，１）の内部では、バイパスルートはヘッダフリット内のｎｕｎｉｔ情報に従って、北、南又は東へと進んでよい。ｎｕｎｉｔが南を選択したとすると、バイパスルートは、ＤＭＲ（０，１）上で継続することになり、ここでＢ層上で継続され得るか、又は安全な領域の外側であり得、Ａ層へ切り替えられて継続され、ルーティング又は切断を実行してよい。
【０１３４】
例示的なＨｙｐｅｒＸ  ＤＭＲノードにプロトコルを実装するための制御論理及びデータパス切り替えは、初めに層切り替えクロスバー、続いて方向切り替えルータの２段階で実施される。あるいは他の実装形態では、方向切り替えを初めに実施し、続いて層切り替えを実施してよい。他の実装形態では、これら２つの段階を１つの切り替えに統合してよい。あるいはプロトコル及び切り替えは３以上の段階で実装してよい。
【０１３５】
例示的なＤＭＲルータの実装形態は、多層スイッチのうち２層バージョンである層切り替え（入力クロスバー）を有し、その一方で例示的な方向切り替えは多層スイッチのうち３層バージョンである。本発明はこれらのスイッチ構成部品のいずれに関しても、この例示的なＤＭＲ実装形態の層及び方向の数に対して制限を与えるものではない。このコンセプトは、上記例示的実施形態に若干の修正を加えることにより、多数の層及び多数の方向へと容易に敷衍できる。これらの敷衍形態は、更なるＩＮ接続次元数をサポートする。
【０１３６】
例示的なＨｙｐｅｒＸアーキテクチャで使用される、ここで説明したワームホールルーティング方法は、継続ヘッダフリットを用いることにより、無限のアドレススペースを提供する。短距離通信に関しては、必要となるのは単一のヘッダフリットのみであり得る。ＤＭＲが非切断ｎｕｎｉｔを１つだけ有する第１のヘッダフリットに遭遇すると、ＤＭＲはｎｕｎｉｔが特定する方向選択を実施し、第１のフリットを破棄し、第２のフリットを第１のフリットとし、ワームメッセージを次のＤＭＲへと前進するよう送信してよい。ＭＰＡチップの多くに亘って広がるＭＰＡを通過するために必要な場合は、極めて長いヘッダを構成してよい。ワームメッセージのヘッダの有限アドレス指定には、ワームの目的地アドレスを指定するために固定数のビットを使用する。有限アドレス指定は、低次元ＩＮに関してはここで説明した多層による方法に干渉しないが、ＩＮの次元数が増加するにつれて低効率となり得る。
【０１３７】
自動迂回ルーティングを提供するために、ルーティングエンジンは、ルートの過密に関する局所的な情報及びより全体的な情報の両方を用いて、過密ポケットの周りでルートを迂回させることができる。経路ルートは通常どおりヘッダフリット内に設計及びプログラムしてよく、経路に沿って過密に遭遇した場合、設計されていない迂回を形成することによってこれを回避できる。ＩＮノードのルーティング制御機構は、この迂回を単独で、又はローカルノード若しくはグローバルノードである近隣のノードからの情報を組み合わせて計算できる。ノードは迂回を達成するために、必要に応じてｎｕｎｉｔ又はヘッダフリットを追加でき、その後ワームメッセージは、その事前に設計されたルート上で目的地へと継続できる。ルート情報に時間情報も含まれている場合、過密の推定期間もパスの決定の一部として使用できる。全体として、これは上述の固定パス方法に対して過密回避を適用したものである。
【０１３８】
過密は、図２４のブロック図が示す方法によって決定してよい。この図では正方形のボックスはＤＭＲを表す。中央の「Ａ」と標識されたＤＭＲは、近隣のＤＭＲから過密情報を収集することにより、以下のようにして過密を決定できる。周辺のＤＭＲ（Ｂ１〜Ｂ８）は、ＤＭＲ  Ａに、局所的な過密情報と全体的な過密情報との両方に対するメトリックを提供できる。ＤＭＲ  Ｂ１からＤＭＲ  Ａへの単一のメトリックは、ＤＭＲ  Ｂ１の過密レベルに関してＤＭＲ  Ａがこれ自体を観察することを示す。これはローカル過密メトリクスである。ＤＭＲ  Ｂ１はまた、ＤＭＲ  Ａの近隣のものではない近隣のＤＭＲから情報を収集することによって、グローバル過密メトリクスをＤＭＲ  Ａに提供する。図２２ではこれらのＤＭＲに「Ｃ」と記している。同様にＤＭＲ  Ｂ２はローカル過密メトリクスをＤＭＲ  Ａに提供する。これはまた、ＤＭＲ  Ａの近隣のものではない近隣のＤＭＲから情報を収集することによって、グローバル過密メトリクスをＤＭＲ  Ａに提供する。図２２ではこれらに「Ｄ」と記している。図２２に示すように、これをＤＭＲ  Ａの近隣のＤＭＲＡ全てに関して繰り返す。なおこの過密決定方法は複数の次元に拡張でき、更に離れた近隣のＤＭＲからの情報を使用して、ＰＩＮのトポロジ及び自動迂回ルーティングを計算するアルゴリズムの必要性によって要求されるように、全体的な過密を決定できる。
【０１３９】
リンク帯域幅の改善
２つのＤＭＲユニット間のいずれのリンクの帯域幅を増大させる、いくつかの方法が存在する。１つの方法は、１つのリンクに対するトレース（ワイヤ）接続の数を増加させることである。別の方法は、ダブルデータレート（ｄｏｕｂｌｅ  ｄａｔａ  ｒａｔｅ：ＤＤＲ）等のより高速なプロトコルでリンク層を動作させることである。更に別の方法は、同一の物理層における論理ルートの時分割多重化（ｔｉｍｅ  ｄｉｖｉｓｉｏｎ  ｍｕｌｔｉｐｌｅｘｉｎｇ：ＴＤＭ）を含むことである。ＴＤＭに関して、リンクから生じるデータのストリームを確実に多重分離することが重要である。１つの単純な方法は、物理的リンクを通して送信されるフリット１つあたりのビット数を増加させることであり、追加されるビットはタグである。タグビットは、残りのビットが属するワームメッセージのためのコードを備える。ｎビットのタグは、最大２n個の異なるワームメッセージを符号化でき、上記ワームメッセージの長さはそれぞれ無制限である。他のモードは各ワームメッセージを複数のパケットに分割して、各パケットにヘッダフリットを適用できる。これらのパケットのヘッダフリットは、メッセージ識別子と、多重分離を支援するためのその他の情報とを含んでよい。
【０１４０】
ダイレクトメモリアクセスＦＩＦＯ
上述のもの等の多重プロセッサアレイ（ＭＰＡ）を使用して、複雑なアルゴリズムを用いて高速データストリームを処理できる。このようなデータストリームは連続的であることが多く、一定のレートで到着及び出発する。しかしながら、メモリのデータを、１度に１つのブロックを処理する様式で処理するには、ＰＥが更に適しており、従って連続的なデータストリームに対してミスマッチが存在する。この問題の１つの解決策は、メモリの一部を、バッファとも呼ばれるバッファメモリとして使用するために割り当てることである。典型的には、バッファはアプリケーションソフトウェアによって特定され、これはＭＰＡを動作させるためにコンパイルされたものである。バッファは、コンパイル時間において静的に、又は動作中に動的に割り当ててよい。いずれの特定のアプリケーションソフトウェア内には、例えばデータストリームの分析及び合成に使用される、多くのバッファが存在してよい。上述のように、用語「アレイ」はいずれの次元数を暗示することを意図したものではない。
【０１４１】
メモリバッファ（ここでは「バッファ」と呼ばれる）は、多重プロセッサアレイ内のデータパスに伸縮性を提供できる。例えばバッファは、（平均入力データレートと平均出力データレートとが適合している場合に）短期間のデータレート変動を吸収できるものであってよい。いくつかの用途では、高レートデータストリームを複数の低レートデータストリームに分割する必要がある場合がある。あるいは他の用途では、複数の低レートデータストリームを結合して単一の高レートデータストリームとする必要がある場合がある。このような操作は、いずれのデータストリーム内にデータの損失又は複製が存在しないことを必要とし得る。
【０１４２】
ＰＥを用いて、メモリバッファに割り当てられているメモリの一部分にデータを記憶してよい。同一のＰＥ又は別のＰＥを用いて、バッファからデータを取得してよい。しかしながら、このようなデータ記憶及び取得方法は、ＰＥの性能を十分に活用していない。いくつかの実施形態では、より簡単なダイレクトメモリアクセス（ＤＭＡ）エンジンを用いて、バッファにアクセスしてデータを移動させることにより、他のより複雑なタスクのために使用できるようＰＥを解放するか、エネルギを節約するためにＰＥをアイドル状態とすることができる。
【０１４３】
いくつかの実施形態では、ＤＭＡエンジンは、ポートとローカルメモリとの間でデータを伝送する作業のほとんどを実施できる。ＰＩＮポートが、同時に動作する入力部分及び出力部分の両方を含む場合、各部分に対して別個のＤＭＡエンジンが必要となり得る。
【０１４４】
図１１を参照すると、ＤＭＡエンジンのブロック図が示されている。ＤＭＡエンジン１１０１は、アドレス生成器１１０２、メモリインタフェース１１０３、ネットワークＩ／Ｏ１１０４、制御レジスタ１１０５を含む。メモリインタフェース１１０３は、例えばＳＲＡＭ等の外部メモリに連結してよい。様々な実施形態では、ネットワークＩ／Ｏ１１０４は、外部Ｉ／Ｏポート又は多重プロセッサアレイのいずれの適切な内部ポートに連結してよい。
【０１４５】
アドレス生成器１１０２は、多数の可能なカウンタ構成のうちの１つに従って設計されたカウンタを含んでよい。いくつかの実施形態では、カウンタは、事前に決定された値に再設定されるよう構成してよい。アドレス生成器１１０２はまた、例えば加算器等の回路も含んでよく、この回路は、カウンタの出力に追加のデータを組み合わせて、メモリにアクセスする際に使用できるアドレス値を形成するよう構成される。アドレス生成器１１０２は、インデックス値を記憶するよう構成された別個のカウンタも含んでよい。
【０１４６】
制御レジスタ１１０５は、１つ又は複数のラッチ、フリップフロップ、又は他のいずれの適切な、ＤＭＡエンジン１１０１のための制御情報を記憶するよう構成されたストレージ回路を含んでよい。例えば制御レジスタ１１０５は、データ伝送方向、開始アドレス、アドレス値間の増分（一般に「ストライド（ｓｔｒｉｄｅ）」と呼ばれる）等に影響を及ぼすことができる情報を記憶できる。いくつかの実施形態では、多重プロセッサアレイのための初期化又はブート手順により、制御情報は制御レジスタ１１０５に書き込まれていてよい。
【０１４７】
メモリインタフェース１１０３は、様々なメモリインタフェース方法のうちの１つを使用して構成してよい。いくつかの実施形態では、メモリインタフェース１１０３は、例えばクロック等のタイミング信号、モード選択信号、アドレス値、入力データ値を、ＤＭＡエンジン１１０１の外部のメモリに提供してよい。外部メモリは、多重プロセッサアレイ内にあっても、多重プロセッサアレイの外部にあってもよい。様々な実施形態では、外部メモリは、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、ＳＲＡＭ、読み出し専用メモリ（ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ：ＲＯＭ）、又は例えばＦＬＡＳＨ等の不揮発性メモリを含んでよい。
【０１４８】
なお、図１１に示すＤＭＡエンジンの実施形態は単なる例である。他の実施形態では、異なる機能ブロック及び異なるブロック構成が可能であり、考察の対象となる。
【０１４９】
プロトコルを用いて、バッファに入力されるデータ及びバッファから出力されるデータを整合させることができる。このようなプロトコルは、データがバッファ内で上書きされるのを防止でき、また他の実施形態では、バッファ内のデータの複製を防止できる。プロトコルは入力−出力データシーケンスによって分類できる。２つの一次シーケンス、即ち先入れ先出し（ＦＩＦＯ）及び先入れ後出し（ＦＩＬＯ）が存在する。ＦＩＦＯでは、データの順序を変化させることはできないが、ＦＩＬＯではデータの順序を逆転できる。
【０１５０】
図１２を参照すると、ＤＭＡエンジンを動作させるための方法の実施形態が示されている。図１１、１２を併せて参照すると、本方法はブロック１２０１から始まる。続いて初期アドレス及びインデックスが初期化される（ブロック１２０２）。いくつかの実施形態では、初期アドレスをアドレス生成器１１０２のカウンタにロードできる。初期インデックス値はまた、アドレス生成器１１０２が含む別のカウンタにも記憶できる。
【０１５１】
そしてメモリからデータの語を読み出すことができる（ブロック１２０３）。いくつかの実施形態では、メモリインタフェース１１０３は、アドレス生成器１１０２が提供するアドレス値を用いて、ＤＭＡエンジン１１０１の外部のメモリにアクセスしてよい。外部メモリから読み出されたデータは、メモリインタフェース１１０３に一時的に記憶させてよい。続いて読み出しデータ語をＰＩＮポートに書き込んでよい（ブロック１２０４）。様々な実施形態では、データ語をＰＩＮポートへと出力するために、メモリインタフェース１１０３からネットワークＩ／Ｏ１１０４へ伝送してよい。
【０１５２】
次に、現在のアドレスを増加させる（ブロック１２０５）。いくつかの実施形態では、現在のアドレスを、制御レジスタ１１０５のうちの１つに記憶できるストライド値だけ増加させてよい。そしてインデックス値を減少させる（ブロック１２０６）。いくつかの実施形態では、インデックス値を減少させる量もまた、制御レジスタ１１０５に記憶できる。そして本方法は、この減少したインデックス値に依存したものとなる（ブロック１２０７）。
【０１５３】
減少したインデックス値が、事前に決定された閾値よりも大きい場合、増加したアドレス値を用いて新規のデータ語をメモリから読み出し（ブロック１２０３）、本方法を上述のように続行する。減少したインデックス値が、事前に決定された閾値以下である場合、本方法を終了する（ブロック１２０８）。いくつかの実施形態では、上記事前に決定された閾値はゼロであってよいが、その他の値も可能である。
【０１５４】
なお、図１２に示す方法は単なる例である。他の実施形態では、異なる操作及び異なる操作順序も可能であり、考察の対象となる。更に用語「増加させる（ｉｎｃｒｅｍｅｎｔ）」及び「減少させる（ｄｅｃｒｅｍｅｎｔ）」は、これに関連する操作を加算及び減算に限定することを意図したものではない。というのは、負の数の加算は減算と同じ結果をもたらし、負の数の減算は加算と同一の結果をもたらすからである。同様に、用語「よりも大きい（ｇｒｅａｔｅｒ  ｔｈａｎ）」及び「よりも小さい（ｌｅｓｓ  ｔｈａｎ）」も限定を意図したものではない。
【０１５５】
図１３では、ＤＭＡエンジンを操作する別の方法が図示されている。図１１、１３を併せて参照すると、本方法はブロック１３０１から始まる。続いて初期アドレス及びインデックスが初期化される（ブロック１３０２）。いくつかの実施形態では、初期アドレスをアドレス生成器１１０２のカウンタにロードできる。初期インデックス値はまた、アドレス生成器１１０２が含む別のカウンタにも記憶できる。
【０１５６】
そしてＰＩＮポートからデータの語を読み出すことができる（ブロック１３０３）。いくつかの実施形態では、データ語はネットワークＩ／Ｏ１１０４によって受信でき、一時的に記憶するためにメモリインタフェース１１０３に伝送できる。その後、アドレス生成器１１０２が提供するアドレス値を用いて、受信されたデータ語をメモリに書き込んでよい（ブロック１３０４）。
【０１５７】
次に、現在のアドレスを増加させる（ブロック１３０５）。いくつかの実施形態では、現在のアドレスを、制御レジスタ１１０５のうちの１つに記憶できるストライド値だけ増加させてよい。そしてインデックス値を減少させる（ブロック１３０６）。いくつかの実施形態では、インデックス値を減少させる量もまた、制御レジスタ１１０５に記憶できる。そして本方法は、この減少したインデックス値に依存したものとなる（ブロック１３０７）。
【０１５８】
減少したインデックス値が、事前に決定された閾値よりも大きい場合、増加したアドレス値を用いて新規のデータ語をメモリから読み出し（ブロック１３０３）、本方法を上述のように続行する。減少したインデックス値が、事前に決定された閾値以下である場合、本方法を終了する（ブロック１３０８）。いくつかの実施形態では、上記事前に決定された閾値はゼロであってよいが、その他の値も可能である。
【０１５９】
なお、図１３に示す方法の操作は、順次実施されるものとして示されている。他の実施形態では、これらの操作は並行して、又は異なる順序で実施してよい。
【０１６０】
図１２、１３に示すようなＤＭＡの操作中、メモリ内でのデータの上書き又はデータの複製を防止するために注意を払わなければならない。いくつかの実施形態では、ＰＩＮ又はローカルメモリがＤＭＡエンジンからデータを受け取ることができない、又はＤＭＡエンジンにデータを供給できない場合、ＤＭＡエンジンはストールしてよく、即ち読み出し又は書き込み動作を実行しなくてよい。このような場合、ＤＭＡエンジンは最近読み出した又は書き込んだデータ語を、後に使用するためにレジスタに記憶させることができる。また、上記ストールに関する情報は、ＤＭＡエンジンのポート側からＤＭＡエンジンのメモリ側へ、及びその逆方向へと伝播してよい。例えばＰＩＮポートからビジー状態が示されると、ＤＭＡエンジンをストールして、メモリインタフェースを通した読み出し又は書き込み要求を停止してよい。
【０１６１】
データストリームはバッファのサイズより長い場合がある。このような場合、データの入力（充填（ｆｉｌｌ））プロセスとデータの除去（排出（ｄｒａｉｎ））プロセスとを調整して、データの損失又は複製を防止する必要があり得る。いくつかの実施形態では、２つのバッファ（一方は充填され、他方は排出されている）を利用してよい。この技術は一般に「ダブルバッファリング（ｄｏｕｂｌｅ−ｂｕｆｆｅｒｉｎｇ）と呼ばれる。動作中に充填されているバッファがいっぱいになった場合、入力データストリームを、排出中のバッファに切り替えてよい。同様の切り替えは、排出中のバッファが空になった場合にも発生し、ここでは出力ストリームを充填中のバッファから読み出す。バッファの役割を切り替えるプロセスは「バッファの交換（ｓｗａｐ  ｏｆ  ｂｕｆｆｅｒｓ）」と呼ばれることが多く、これはバッファメモリアドレスへのポインタを交換することによって実装できる。いくつかの実施形態では、どのアドレスが書き込まれているか及びどのアドレスが読み出されているかの追跡を続けるためにより洗練されたコントローラを用いて、２つのバッファの使用を単一のバッファに縮小してよい。
【０１６２】
ある形態の固定多重化はＤＭＡ  ＦＩＦＯ論理を用いて達成できる。ＤＭＡエンジンはＤＭＲよりも物理的に大幅に小さいため、ＤＭＲは複数のＤＭＡ書き込みエンジン及び複数のＤＭＡ読み出しエンジンを含むことができる。同一のバッファに対して作用する複数のＤＭＡエンジンの統合制御により、複数のデータストリームを１つの出力ストリームに統合でき、又は反対に単一の入力データストリームを複数の出力データストリームに分割できる。また複数のＤＭＡエンジンの統合制御は、データの損失又は複製を防ぐためのフロー制御論理との協働を含んでよい。固定されたインターリーブパターンを用いるため、統合制御の設計は比較的簡単であり、また入力ストリーム中のパケットの長さが全て同一である場合、制御論理を簡略化できる。しかしながらこれらは本発明を限定するものではない。
【０１６３】
上述のように、コントローラを用いて、単一のＦＩＦＯバッファメモリにアクセスする複数のＤＭＡエンジンを調整してよい。コントローラは、別のＤＭＡエンジンがＦＩＦＯバッファメモリへの書き込みを実行している間に、複数のＤＭＡエンジンがＦＩＦＯバッファメモリからの読み出しを実行できるよう構成してよい。読み出し動作を実行するＤＭＡエンジン（ＤＭＡＲ）の数は、最も近接したＰＩＮノードからメモリに向う双方向ＰＩＮポートの数に左右され得る。このような構成により、ＤＭＡエンジンのみを用いた、即ちＰＥを必要しないデータ分割及び順序変更をサポートできる柔軟性を提供できる。
【０１６４】
データストリームのデータ順序変更及び分割をサポートするために、複数の読み出しストライドをサポートすることが必要となり得る。追加のハードウェアの複雑性という犠牲を払って、複数の書き込みストライドに対するサポートも利用してよい。いくつかの実施形態では、バッファ及び複数のＤＭＡエンジンのシステムを通したデータ遷移のレイテンシを、論理回路の複雑性及び電力放散を犠牲にして調整してよい。
【０１６５】
複数のＤＭＡエンジンのためのＤＭＡコントローラは、単回ＤＭＡ及び連続ＤＭＡ、単一書き込み複数回読み出し、並びに単一読み出し複数回書き込みをサポートするよう構成してよい。いくつかの実施形態では、ＤＭＡコントローラ及び複数のＤＭＡエンジンと組み合わせて使用されるＦＩＦＯバッファは、ハードウェア内で「完全に保護（ｆｕｌｌｙ  ｐｒｏｔｅｃｔｅｄ）」されていてよく、即ちコントローラ及び関連するＤＭＡエンジンがひとたび構成されると、いずれの追加のソフトウェア制御も必要ない。
【０１６６】
複数のＤＭＡエンジンのためのＤＭＡコントローラは、ポインタ比較及びストール状態検出のために構成された論理回路からなってよく、様々な実施形態では、これらの回路はモジュール式に構成してよい。例えばこれらの論理回路は、単一のＦＩＦＯバッファ動作をサポートするよう構成してよい。そしてこれら論理回路を、所望の数のＦＩＦＯバッファ動作をサポートするために必要ないずれの回数だけ複製してよい。様々な実施形態では、比較に使用するアドレスビットの数は、電力放散要件に応じて調整してよい。
【０１６７】
図１４を参照すると、単一読み出し単一書き込み実装形態のためのポインタの可能な構成を示す図が図示されている。なお、図１４に示す図は単一読み出し単一書き込みの場合を示しているが、例えば２回読み出し単一書き込みといった他の実施形態も可能であり、考察の対象となる。
【０１６８】
図１４に示す各場合において、書き込みポインタが連続ＤＭＡモードのＦＩＦＯの始点へとラップされたことを示すために、ＷＲＡＰ値が使用される。書き込みポインタがラップされている場合、バッファに関連する読み出しポインタはＦＩＦＯの終点まで続いてよく、更なるチェックは不要である。上述の読み出しポインタがバッファの終点に到達すると、ＷＲＡＰ値はクリアされ、ＦＩＦＯは通常モードに戻る。ＷＲＡＰ値がゼロである場合、読み出しストール状態が以下によって決定される：「（ＲＤ＿ＰＲＴ−ＷＲ＿ＰＲＴ）はゼロ以上である」。
【０１６９】
ＷＲＡＰ値が１である場合、読み出しポインタと書き込みポインタとの間の同様の比較により、書き込みストール値がゼロ以上となる。図１４に示す残りの場合は、読み出し及び書き込みのいずれに関してもストールが発生していない。
【０１７０】
図１４に示す例では、場合１、２、６、７は単回ＤＭＡ動作に適用可能である。ＤＭＡ  ＦＩＦＯが開始されると、読み出しポインタ及び書き込みポインタは場合１に従って組織される。ＦＩＦＯへの書き込みは可能であるが、読み出しはストールされている。通常動作中（場合２を参照）、書き込みポインタは読み出しポインタに先行し、読み出し及び書き込みが共に可能である。場合によっては読み出しポインタは書き込みポインタに追いつき（場合７を参照）、これによって読み出しがストールする。ＦＩＦＯへの書き込みが完了すると（場合６を参照）、書き込みポインタはＦＩＦＯの外部のアドレスを指してよく、ＦＩＦＯの終点に到達するまで読み出しを続けてよい。
【０１７１】
図１４に示す例では、場合６を除く全ての場合は、連続ＤＭＡ動作に適用可能である。連続ＤＭＡ動作において使用する場合、ＦＩＦＯ内の各読み出し／書き込みポインタのペアに対してＷＲＡＰビットを維持してよい。いくつかの実施形態では、ある種類のＤＭＡのうちの２つ以上を、他の種類（例えば４回読み出し１回書き込み）のＤＭＡのうちの１つと比較してよく、これにより２つ以上のラップビットが必要となる。様々な実施形態では、ラップビットは、ＤＭＡの構成に応じて異なる様式で利用してよい。
【０１７２】
多重読み出しの場合、単一の書き込みポインタがラップされた場合にラップビットを設定してよく、ラップが発生したことを各読み出しポインタが示すと、追加の各ラップビットをクリアしてよい。多重書き込みの場合、各書き込みポインタがラップされるとラップビットを設定してよく、読み出しポインタがラップを示すと、追加のラップビット全てをクリアしてよい。
【０１７３】
単一のＦＩＦＯバッファは、１つの入力及び２つ以上の出力を含んでよい。このような場合、２つ以上のポインタを比較して、ＦＩＦＯバッファに接続されたＤＭＡエンジンのためのストール信号を決定する必要があり得る。いくつかの実施形態では、上記比較は、１つのＦＩＦＯバッファに接続できるＤＭＡエンジン間にこの比較機能が分散された場合の回路構成の複製及び追加のルーティングを回避するために、集中的に実行してよい。多重プロセッサアレイシステムの各ＤＭＲにおいて、ポインタの比較及びストール信号の生成のために構成された１つ以上の機能ブロックを利用してよい。ＤＭＡ−ＦＩＦＯバッファ及びコントローラは、ＳＤＲＡＭチップ等の外部メモリチップに特化したインタフェースを含むチップＩ／Ｏインタフェースにおいて実装してもよい。様々な実施形態では、ＦＩＦＯバッファは、より高次元のメッシュに接続するために、いずれの適切な数の入力ポート及び出力ポートを含んでよい。
【０１７４】
図１５を参照すると、ポインタ比較及びストールユニット（ｐｏｉｎｔｅｒ  ｃｏｍｐａｒｅ  ａｎｄ  ｓｔａｌｌ  ｕｎｉｔ：ＰＣＳＵ）のある実施形態が図示されている。図示した実施形態では、ＰＣＳＵ１５００は、ＤＭＡ読み出しポインタ入力１５０１、ＤＭＡ読み出し制御入力１５０４、ＤＭＡ書き込みポインタ入力１５０２、ＤＭＡ書き込み制御入力１５０３、ＤＭＡ読み出しＦＩＦＯストール出力１５１０、ＤＭＡ書き込みＦＩＦＯストール出力１５１１を含む。ポインタ入力は９ビットを含むものとして、また制御入力は４ビットを含むものとして示されているが、他の実施形態では、各種類の入力に関していずれの適切なビット幅を使用してよい。
【０１７５】
図１５に示す実施形態では、ＤＭＡ読み出しポインタ入力１５０１及びＤＭＡ書き込みポインタ入力１５０２は、比較器１５０５〜１５０８に連結される。様々な実施形態では、比較器１５０５〜１５０８は、上述の読み出しポインタと書き込みポインタとの間の差といった、いずれの適切な比較アルゴリズムを実装してよい。そして比較器１５０５〜１５０８の出力は、ストール論理１５０９に連結してよい。ストール論理１５０９に含まれる回路は、例えばＡＮＤ、ＯＲ等のいずれの適切な論理関数を用いて比較器の出力を統合して、ＤＭＡ書き込みＦＩＦＯストール出力１５１１及びＤＭＡ読み出しＦＩＦＯストール出力１５１０を形成してよい。
【０１７６】
なお、図１５に示すＰＣＳＵは単なる例である。他の実施形態では、異なる機能ブロック及びブロックの異なる構成が可能である。
【０１７７】
特定の状況下では、ＰＥに関して、メモリに対する読み書きを実施すること、ＦＩＦＯ構造に結び付けられていることが望ましい。いくつかの実施形態ではこれを、追加のＤＭＲと、上述のＤＭＡ  ＦＩＦＯコントローラの機能のうち少なくともある程度とを用いて実現できる。図１６を参照すると、ＰＥ読み出しＦＩＦＯのエミュレーションのブロック図が示されている。図示した実施形態では、通常ルートイン１６０５はＤＭＲ１６０１に連結され、ＤＭＲ１６０１は追加のルート１６０６を介してＤＭＲ１６０３に連結される。ＤＭＲ１６０３は更にＰＥ１６０４に連結される。いくつかの実施形態では、ＤＭＲ１６０１は単一書き込み、単一読み出しＦＩＦＯ１６０２を含んでよい。この図では、１６０７はＤＭＡ−ＦＩＦＯではなく、単に１６０６ルートリンクからの値を、ＰＥ１６０４が読み出すことができるまで保持しているＤＭＲ上のＩＮＰＯＲＴ（入力ポート）である。このルートは、ＰＥがある値を読み出すまでストールするか、又はＰＥは、次の値がポートにおいて利用可能となるまでストールする。
【０１７８】
動作中、ＤＭＡ−ＦＩＦＯ１６０２は受信したデータを、通常ルートイン１６０５からＩＮＰＯＲＴ１６０７を介してＤＭＲ１６０３へと送信してよい。続いて処理要素１６０４は、ＩＮＰＯＲＴ１６０７での読み出しをストールしてよく、これによってＤＭＡ−ＦＩＦＯ１６０２に記憶されたデータのローカルコピーがＤＭＲ１６０４を介して発生する。いくつかの実施形態では、処理要素１６０４は、追加のレイテンシが最小の状態でＤＭＡ−ＦＩＦＯ１６０２からデータを受信できるものであってよい。なお、図１６に示す実施形態は単なる例である。他の実施形態では、異なる数及び配置のＤＭＲブロック及び処理要素が可能である。
【０１７９】
様々な方法でプログラム可能なファブリック相互接続の伝送パス内に処理を挿入できる。この処理は、ＤＭＡ  ＦＩＦＯモード及び通常伝送モードの両方のために存在できる。この処理の簡素なタイプとしては、ビットインターリーブ及びデインターリーブのようなものがある。他の簡素な処理としては、バイトの交換、バイトのパッキング及びアンパッキング、フィールドマスキング、加算及び乗算等の演算機能等が挙げられる。更に複雑な機能を実行してもよい。セキュリティ用途に関して有用な機能は、暗号化及び復号化である。ＤＭＡストリーミング機能に容易に適用できるものであり得るその他の計算は、ＣＲＣ、パリティ、シフト、抽出、フィルタリングである。上述の例は単なる説明を目的としたものであり、本説明の範囲を限定するために使用することを意図したものではない。
【０１８０】
多くの状況において、メモリをスキャンして、スキャンされた全てのビットに応じたシグニチャを計算する必要がある。ＤＭＡエンジンは既に、メモリをスキャンするための一連のアドレスを生成するための手段を有しており、それほど高くない処理能力を追加することにより、例えば縦方向のパリティ、累計又は累積の計算を容易にすることができる。出力シグニチャは、アプリケーションソフトウェアにアクセス可能な１つ又は複数のレジスタに書き込んでよく、これによりこのアプリケーションにおいて結果を使用できる。
【０１８１】
１つの使用法は、２つ以上のデータアレイを迅速かつ効率的に比較して、これらが同一であるかどうかを試験するものであり、本方法は、１つのアレイに関するシグニチャを計算し、第２のアレイに関するシグニチャを計算し、続いてこれらシグニチャを比較するものである。各アレイにおけるシグニチャの計算は、同一のハードウェアで時間を分割して実施してよく、又は異なるハードウェアで空間及び／若しくは時間を分割して実施してよい。シグニチャの計算が同一であれば、同一のシグニチャ計算ハードウェアを両方のアレイで使用する必要はない。これにより、例えば異なるＤＭＲ又は異なるＩＣチップでシグニチャの計算を実施できる。１つ又は複数のシグニチャ計算からのシグニチャの比較は、中心部で実施してよく、又はＤＭＡ内のハードウェアにおいて若しくはＰＥハードウェア上で実行されるソフトウェアにおいて複数の場所に亘って分散させてよい。いずれの場合においても、シグニチャの分散計算は、シグニチャ値を中心部へ又は比較場所の分散に沿って通信する必要があり得る。ＤＭＡエンジンは、あるアレイのシグニチャ値を比較のための目的地へと送達するワームホールルーティングのためのメッセージを発行するよう構成してよい。シグニチャメッセージは、これらが表すデータに比べて極めて大幅に短いものとすることができ、従ってより効率的に分散させることができる。
【０１８２】
データアレイ等価性の試験を、例えばモジュール三重冗長構成（ｔｒｉｐｌｅ  ｍｏｄｕｌａｒ  ｒｅｄｕｎｄａｎｃｙ：ＴＭＲ）法において使用する。上記方法では、３つの（場合によっては誤った）計算から結果を得て、これらを等価性に関して比較し、２つ以上の結果が等価であればこれらの結果を正しいものとして受け入れることができる。各計算の結果が既に小さい場合、ＤＭＲシグニチャ計算は役に立たないが、結果が数十ワードを超える場合、ＤＭＡシグニチャ計算は、ＰＥを用いてシグニチャを計算するよりも効率的となり得る。
【０１８３】
シグニチャ計算をハードウェアでサポートするという着想はＤＭＡエンジンに限定されず、ＰＥとその補助メモリ、即ちデータメモリ（ｄａｔａ  ｍｅｍｏｒｙ：ＤＭ）及び命令メモリ（ｉｎｓｔｒｕｃｔｉｏｎ  ｍｅｍｏｒｙ：ＩＭ）との間のアドレス及びデータストリームに対しても適用できる。図２１は、ＰＥとＤＭとの間のアドレス及びデータバスに接続されるサムチェックユニットの可能な構成を示す。これらは累計を計算することによってシグニチャを計算するが、他の演算処理及び論理処理を実装してもよい。サムチェックユニットの出力は、どの結果を受け入れるかを決定するためにモジュール冗長性「票決器（ｖｏｔｅ  ｔａｋｅｒ）」に送信してよい。
【０１８４】
好ましい実施形態との関連で以上の実施形態について説明したが、本明細書に記載した具体的形態に上記好ましい実施形態を限定することは意図されておらず、反対に、添付の請求項によって定義されるような本発明の精神及び範囲内に合理的に含まれ得るような代替例、修正例、均等物を上記好ましい実施形態が包含することが意図されている。
【図１】
2019040641.tif 000004
【図２】
2019040641.tif 000005
【図３】
2019040641.tif 000006
【図４】
2019040641.tif 000007
【図４Ａ】
2019040641.tif 000008
【図４Ｂ】
2019040641.tif 000009
【図５Ａ】
2019040641.tif 000010
【図５Ｂ】
2019040641.tif 000011
【図６】
2019040641.tif 000012
【図７】
2019040641.tif 000013
【図８】
2019040641.tif 000014
【図８Ａ】
2019040641.tif 000015
【図９】
2019040641.tif 000016
【図１０】
2019040641.tif 000017
【図１１】
2019040641.tif 000018
【図１２】
2019040641.tif 000019
【図１３】
2019040641.tif 000020
【図１４】
2019040641.tif 000021
【図１５】
2019040641.tif 000022
【図１６】
2019040641.tif 000023
【図１７】
2019040641.tif 000024
【図１８】
2019040641.tif 000025
【図１９】
2019040641.tif 000026
【図２０】
2019040641.tif 000027
【図２１】
2019040641.tif 000028
【図２２】
2019040641.tif 000029
【外国語明細書】
2019040641000001.pdf