特許第6856612号(P6856612)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ コーヒレント・ロジックス・インコーポレーテッドの特許一覧

特許6856612多層相互接続による分散型プロセッサを有する処理システム
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6856612
(24)【登録日】2021年3月22日
(45)【発行日】2021年4月7日
(54)【発明の名称】多層相互接続による分散型プロセッサを有する処理システム
(51)【国際特許分類】
   G06F 15/173 20060101AFI20210329BHJP
【FI】
   G06F15/173 683C
   G06F15/173 685S
【請求項の数】12
【外国語出願】
【全頁数】45
(21)【出願番号】特願2018-233619(P2018-233619)
(22)【出願日】2018年12月13日
(62)【分割の表示】特願2015-544057(P2015-544057)の分割
【原出願日】2013年3月27日
(65)【公開番号】特開2019-40641(P2019-40641A)
(43)【公開日】2019年3月14日
【審査請求日】2018年12月13日
(31)【優先権主張番号】61/728,959
(32)【優先日】2012年11月21日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】505000815
【氏名又は名称】コーヒレント・ロジックス・インコーポレーテッド
(74)【代理人】
【識別番号】100098394
【弁理士】
【氏名又は名称】山川 茂樹
(74)【代理人】
【識別番号】100064621
【弁理士】
【氏名又は名称】山川 政樹
(72)【発明者】
【氏名】ドブス,カール,エス
(72)【発明者】
【氏名】トロチーノ,マイケル,アール
(72)【発明者】
【氏名】ソルカ,マイケル,ビイ
【審査官】 清木 泰
(56)【参考文献】
【文献】 特開平05−153163(JP,A)
【文献】 特表2005−531089(JP,A)
【文献】 米国特許出願公開第2012/0137119(US,A1)
【文献】 特表2016−504668(JP,A)
【文献】 馬場敬信,コンピュータアーキテクチャ,日本,株式会社オーム社,2011年11月15日,改訂3版第1刷,pp.339-347
【文献】 Barry Wilkinson,On Crossbar Switch and Multiple Bus Interconnection Networks with Overlapping Connectivity,IEEE TRANSACTIONS ON COMPUTERS,IEEE,1992年 6月,Vol:41, No:6,pp.738-746
(58)【調査した分野】(Int.Cl.,DB名)
G06F15/16−15/177
G06F15/80
G06F13/00
H04L12/00−12/28
H04W 8/26
H04W24/00
H04W28/02
H04W72/04
H04W74/04
H04W74/08
H04W84/12
H04W88/08
H04L12/42−12/955
H04L29/00−29/12
H04L13/02−13/18
(57)【特許請求の範囲】
【請求項1】
複数のプロセッサ;及び
前記複数のプロセッサに分散型配置で連結された、複数の通信回路
を備える装置であって、
前記複数の通信回路のそれぞれは、複数の相互接続ネットワークに連結され、前記複数の通信回路の特定の1つは:
前記複数の相互接続ネットワークの特定の相互接続ネットワーク経由で1つ又は複数のデータ語を含むメッセージを受信し、
前記メッセージに含まれるルーティング情報に基づいて、前記複数の相互接続ネットワークのうちの前記特定の相互接続ネットワークとは異なる1つを使用して、前記メッセージを前記複数の通信回路のうちのもう1つの通信回路へと前進させる、
よう構成される装置。
【請求項2】
前記複数の通信回路の前記特定の1つは、複数の方向スイッチ回路に連結された複数の層スイッチ回路を含み、前記複数の方向スイッチ回路の所定の方向スイッチ回路は、前記複数の相互接続ネットワークの対応する相互接続ネットワークのためのものである、請求項1に記載の装置。
【請求項3】
前記複数の層スイッチ回路の1つの層スイッチ回路は、前記複数の相互接続ネットワークの特定の1つに連結され、前記複数の相互接続ネットワークの異なる1つの相互接続ネットワークに連結された前記複数の方向スイッチ回路の1つの方向スイッチ回路に前記メッセージをリレーするよう構成される、請求項2に記載の装置。
【請求項4】
前記特定の通信回路は、メモリおよび複数のプロセッサの2つ以上のプロセッサに連結されたメモリスイッチを更に含む、請求項2に記載の装置。
【請求項5】
前記メッセージはデータを含み、前記複数の通信回路の前記特定の1つはメモリ回路を含み、前記複数の通信回路の前記特定の1つは、前記ルーティング情報に基づいて、前記メモリ回路に前記データを記憶するよう構成される、請求項1に記載の装置。
【請求項6】
方法であって、
複数の通信回路の特定の1つの通信回路によって、複数の相互接続ネットワークの特定の1つの相互接続ネットワーク経由でルーティング情報を含むメッセージを受信するステップを含み、前記複数の通信回路のそれぞれの通信回路は前記複数の相互接続ネットワークに連結され、前記複数の通信回路は分散式に複数のプロセッサに連結され、
前記ルーティング情報に基づいて、前記複数の相互接続ネットワークの異なる1つを前記特定の通信回路によって選択するステップ、
前記複数の相互接続ネットワークの異なる1つの相互接続ネットワークを使用して、前記メッセージを前記複数の通信回路の異なる1つの通信回路に、前記特定の通信回路によって送信するステップ、
を含む方法。
【請求項7】
前記特定の1つの通信回路は、複数の方向スイッチ回路を備えるものであり、
前記方向スイッチ回路のそれぞれは、対応する前記相互接続ネットワークに結合されるものであり、
前記方法は、
前記特定の1つの相互接続ネットワーク経由で前記特定の1つの通信回路が前記メッセージを受信した際に、前記メッセージが含む前記ルーティング情報に基づいて、前記特定の1つの相互接続ネットワークを、前記特定の1つの相互接続ネットワークとは異なる1つの相互接続ネットワークに結合された所定の前記方向スイッチ回路に、選択的に連結するステップを含む、請求項6に記載の方法。
【請求項8】
前記特定の1つの通信回路は、複数の層スイッチ回路を備えるものであり、
前記層スイッチ回路は、前記特定の1つの相互接続ネットワークを、前記特定の1つの通信回路が備える複数の方向スイッチ回路のうちのいずれかの方向スイッチ回路に、選択的に連結するものであり、
前記特定の1つの相互接続ネットワーク経由で前記特定の1つの通信回路が前記メッセージを受信した際に、前記メッセージが含む前記ルーティング情報に基づいて、前記特定の1つの相互接続ネットワークを、前記特定の1つの相互接続ネットワークとは異なる1つの相互接続ネットワークに結合された所定の前記方向スイッチ回路に、選択的に連結するステップは、前記メッセージを受信した所定の前記層スイッチ回路が、前記特定の1つの相互接続ネットワークから、所定の前記方向スイッチ回路に、前記メッセージをリレーするステップを含む、請求項7に記載の方法。
【請求項9】
前記複数の通信回路の前記特定の通信回路に含まれるメモリ回路に、前記メッセージに含まれるデータを記録するステップを更に含む、請求項7に記載の方法。
【請求項10】
装置であって、
複数の入力ポートと、
複数の層スイッチ回路と、
複数の相互接続ネットワークに連結された複数の方向スイッチ回路であって、前記方向スイッチ回路のそれぞれは、対応する前記相互接続ネットワークに連結されるものである、前記複数の方向スイッチ回路を含み、
前記装置は、複数の前記相互接続ネットワークの特定の1つ経由で1つ又は複数のデータ語を含むメッセージを特定の1つの入力ポートを介して受信するように構成され、
前記メッセージに含まれたルーティング情報に基づいて目的地への前記メッセージを前進させるために、前記複数の層スイッチ回路の特定の1つの層スイッチ回路は、前記特定の1つの入力ポートから前記メッセージを受信し、前記複数の相互接続ネットワークの異なる1つに連結された前記複数の方向スイッチ回路のうちのもう1つの方向スイッチ回路へ前記メッセージをリレーするよう、構成される、装置。
【請求項11】
前記装置は:
入力レジスタ回路は着信メッセージに含まれた着信データ語を記憶するよう構成され、
出力レジスタ回路は出力メッセージに含まれた出力データ語を記録するよう構成される、請求項10に記載の装置。
【請求項12】
いずれかの前記方向スイッチ回路に連結されたメモリ回路を更に含み、いずれかの前記方向スイッチ回路は、前記ルーティング情報に基づいて、前記メッセージに含まれたデータを前記メモリ回路に送信するよう構成され、前記メモリ回路は前記データを記録するよう構成される、請求項10に記載の装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、コンピュータシステム及びデジタル信号プロセッサ(digital signal processor:DSP)に関し、特に多重プロセッサシステムに関する。
【背景技術】
【0002】
ソフトウェアタスクをより高速で実施する必要から、並列計算の必要が生じている。並列計算によって、遠距離通信、遠隔検知、レーダー、ソナー、ビデオ、映画、医療用撮像等の用途において、多数の複雑な信号の処理速度を上昇させることができる。また並列計算によって、より高い計算スループットを提供でき、直列計算アプローチの特定の制限を克服できる。計算システムの能力は、通常は指定された一連の試験アルゴリズムに対する性能のメトリクスによって比較できる。対象となる主要な性能メトリクスは毎秒の計算速度である。しかしながら、バッテリ給電式の又は温度による制約を受ける設備に関しては、毎秒の計算速度を消費エネルギで割ったものがメトリクスとして好ましい場合がある。
【0003】
並列コンピュータ又は信号プロセッサは、多数のプロセッサ、多数のメモリ、1つ又は複数の相互接続通信ネットワークからなってよい。これらの構成部品は、多重処理としても知られる並列プロセッサ計算に関する文献で説明されている多くの異なるトポロジで組み合わされる。これらの構成部品は全て、導体トレース(ワイヤ)の充放電及び伝送路の複数の影響(その1つとしては、いずれの信号も光の速さより速くは搬送されないことが挙げられる)に関連する内部遅延を原因とする入力−出力レイテンシを有する。従って、構成部品が小さくなれば、物理的に大きな構成部品の場合に比べてレイテンシは一般に小さくなり、また構成部品の数が少なくなれば、計算用構成部品の数が多いシステムの場合に比べてレイテンシは一般に小さくなる。システム内の構成部品の数が多くなると平均レイテンシは増大し得るものの、パイプライン及びシストリック処理といった隣接する要素間の低レイテンシ通信を利用するように計算を構成する技術が複数存在する。
【0004】
近年、集積回路製造の進歩により、大幅に小型化された並列コンピュータの構成部品を製作できるようになった。このような小型化により、構成部品は更に低消費電力、高速、低レイテンシで動作する。その結果、数百個もの処理要素(processing element:PE)及び補助メモリ(supporting memory:SM)を高帯域幅相互接続ネットワーク(interconnection network:INFECT)と併せて単一の多重プロセッサICチップ上に製作できる。このような多重プロセッサチップにより、1つのチップの一部分を使用する小型システムから、複数の高速かつ大容量メモリチップを含む多重チップシステムに至るまで、幅広い並列コンピュータシステムを構築できる。
【0005】
コンピュータ、デジタル信号プロセッサ(DSP)、包囲設備内に埋め込まれるシステム等のデジタル電子システムは、1つ又は複数の多重プロセッサアレイ(multi−processor array:MPA)をますます利用するようになっている。MPAは、複数の処理素子(processing element:PE)、補助メモリ(supporting memory:SM)、高帯域相互接続ネットワーク(interconnect network:IN)としておおまかに定義できる。本明細書で使用される用語「処理素子(processing element)」は、プロセッサ若しくはCPU(中央演算処理装置)、マイクロプロセッサ又はプロセッサコアを指す。MPAの中の単語「アレイ(array)」は、円形次元(ループ又はリング)を含む1、2、3又はそれ以上の次元で利用可能な接続を備えるネットワークによって相互接続された、複数の計算ユニット(これらはそれぞれ処理及びメモリリソースを含む)を意味するものとして、最も広い意味で使用される。なお、次元が高いMPAをより低い次元の製造用媒体上にマッピングできる。例えば4次元(4D)超立方体の形状を有するMPAは、シリコン集積回路(ICを)チップの積層体上に、又は単一の2Dチップ上に、又は計算ユニットの1Dの線上にさえ、マッピングできる。次元が低いMPAをより高い次元の媒体にマッピングすることもできる。例えば計算ユニットの1Dの線を、ICチップの2D平面上に曲がりくねった形状で展開でき、又はチップの3D積層体へと巻くことができる。MPAは複数の種類の計算ユニットと、プロセッサ及びメモリが散在する構成とを含んでよい。広い意味でのMPAは、MPAの階層又は入れ子構成、特に相互接続されたICチップからなるMPAも含まれ、この場合ICがチップが1つ又は複数のMPAを含み、これらMPAもまた更に深い階層構造を有する。
【0006】
一般に、コンピュータ及びデジタル信号プロセッサ(DSP)のためのメモリは、上部に高速なメモリを有し、低速であるが大容量のメモリを各段下部に有する階層として組織される。MPAでは、階層の上部の補助メモリが各PEの近傍に位置する。各補助メモリは、最適な命令又は最適なデータを保持するよう特殊化できる。特定のPEのための補助メモリは、そのPE専用のものであっても、又は他のPEと共用であってもよい。
【0007】
メモリ階層を更に下がると、典型的には、各PEに隣接する補助メモリの何倍も大きいビット容量を有する半導体同期ダイナミックランダムアクセスメモリ(semiconductor synchronous dynamic random access memory:SDRAM)からなる、比較的大型の共有メモリが存在してもよい。メモリ階層を更に下がるとフラッシュメモリ、磁気ディスク、光学ディスクがある。
【0008】
上述のように、多重プロセッサアレイ(MPA)は、処理要素(PE)、補助メモリ(SM)、並びにPE及び/若しくはメモリ間の高帯域幅データ通信を支援するための一次相互接続ネットワーク(primary interconnection network:PIN、若しくは単にIN)を含んでよい。図1、2にはMPAの様々な実施形態が図示されており、これらについて以下に説明する。一般にPEは、入力データ及び出力データをバッファリングするためのレジスタ、命令処理ユニット(instruction processing unit:IPU)、データに対して演算及び論理関数を実行するための手段、並びにシステムのその他の部分との通信のための多数のスイッチ及びポートを備える。IPUはメモリから命令をフェッチし、これら命令を復号化して、データをPEに及びPEから移動させるため並びにデータに対して演算及び論理関数を実行するために適切な制御信号を設定する。大型MPAに適したPEは一般に、1つの大型MPAを含む1つのICチップに対してPEの数が多いという単純な理由で、汎用プロセッサ(general purpose processors:GPP)よりもエネルギ効率が高い。
【0009】
本出願において使用される用語MPAは、複数のプロセッサの比較的均一なアレイと、いわゆる「プラットフォームIC」チップ上に集積された汎用プロセッサ及び特殊化されたプロセッサの異種集団との両方を包含する。プラットフォームICチップは数個から多数のプロセッサを含んでよく、これらは典型的には共有メモリと相互接続され、場合によってはオンチップネットワークと相互接続される。MPAと「プラットフォームIC」チップとの間には違いがあってもなくてもよい。しかしながら「プラットフォームIC」チップは、特定の垂直的市場における特定の技術要件に対処するために市販されているものであってよい。
【0010】
相互接続通信ネットワーク(IN)は、完全接続型であっても、又は切り替え型であってもよい。完全接続型ネットワークでは、全ての入力ポートは全ての出力ポートに結線接続されている。しかしながら完全接続型ネットワーク内のワイヤの数はN2/2(Nはポートの数)に従って増加するため、完全接続型ネットワークは中程度のサイズのシステムに関してさえすぐに実施不可能となる。
【0011】
切り替え型ネットワークは、複数のリンク及び複数の切り替えノードからなる。リンクは配線、伝送路、(光導波路を含む)導波路、又は無線トランシーバ−トランスミッタのペアを備えてよい。切り替えノードは、あるタイムウィンドウ中におけるあるバスへの接続といった単純なもの、又は多数のポート及びバッファキューを有するクロスバーといった複雑なものであってよい。単一段ネットワークは、1つの大型の切り替えノード上に全ての入力ポート及び出力ポートが配置されたものである。多段ネットワークは、データ移動が、第1の切り替えノード、第1のリンク、第2の切り替えノード、そして場合によっては更なるリンク−ノードのペアを通過して出力ポートへと至るものである。例えば従来の有線電話システムは多段ネットワークである。
【0012】
並列コンピュータのための相互接続ネットワークは、サイズ、帯域幅、制御方法が大きく変化する。ネットワークが入力から出力へのデータパス又は回路を提供し、上記データパス又は回路の切断が要求されるまで上記データパス又は回路に干渉しない。このネットワークは「回路切り替え型(circuit−switched)」と呼ぶことができる。ネットワークが、データのパケットを入力から出力まで送達するために十分な長さだけを有するパスを提供する場合、このネットワークは「パケット切り替え型(packed switched)」と呼ぶことができる。制御方法は、(全てのステップをマスタークロックに同期するようプログラムすることによって達成できる)完全に決定論的なものから、(ポート入力においてデータ移動要求に非同期的に応答することによって達成できる)完全に応答的なものへと変化する。
【0013】
単一段ネットワークに関して、要求/許可プロトコルはスイッチを制御するための一般的な方法である。ある入力ポートには要求信号が存在し、これはコンテンション検出回路において他の全ての入力ポートからの要求信号と比較される。コンテンションが存在しない場合、INは許可信号を用いて応答する。ポートはアドレスを送信し、INは入力を出力と接続するようにスイッチを設定する。コンテンションが検出された場合、調停回路(又は「アービタ(arbiter)」は、要求されたポートのうちのどの1つが許可信号を得るかを決定する。許可信号のないポートは待機しなければならない。1サイクル中に許可信号を得られなかったポートについては、後続のサイクルで再び試みることができる。アービタにおいて様々な優先/回転スキームを用いて、全てのポートが少なくとも何らかの供給を得ることを保証する。
【0014】
多段ネットワークに関して、「ワームホールルーティング(wormhole routing)」と呼ばれる特定のプロトコルを用いてよい。ワームホールルーティングは、メッセージを、ナビゲーション用ヘッダと、ペイロードデータを搬送するための本文と、パスを閉鎖するためのテールとを有する一列の又はひと続きの複数の単語として形成できるというアイデアに基づくものである。メッセージはその経路を、ネットワークを通って以下のように「徐々に進む(worm)」。矩形のグリッドとしてレイアウトされたネットワークを仮定し、1つの切り替えノード及び1つのメモリがグリッドの各交点に位置すると仮定する。ヘッダは、(前方直進、左折、右折、又はローカルメモリへ接続等の)ひと続きの複数の単純な操舵方向を含んでよく、これらはネットワーク内でワームが遭遇する各ノードにおいて、このワームがどこに向かうべきかを示す。これら操舵方向は、ノードが回路構成をほとんど用いることなくこれらを復号化して、スイッチを極めて迅速に設定できるよう、単純なものである。ヘッダによって設定されたパス又は「ホール(hole)」は、ペイロードデータ、「本文(body)」を、符号語「テール(tail)」に出会うまで通過させることができ、「本文」が「テール」に出会うと、その後ノードはホールを閉鎖する。パスが閉鎖されると、同一のワームホールルーティングプロトコルによって生成されることになるその他のパスに関するリンク及びノードを活用できる。
【0015】
INの帯域幅は、単位時間あたりに発生するデータ移動の成功数を長期間に亘って平均したものとして定義できる。切り替え型INの帯域幅は、INの細部及びINに向けられるデータ移動要求の特性における多数の因子に左右されるため、いずれの分析方法でも推定が困難である。要求レートが低い場合、リソースに関する競合が発生する確率は低く、略100%の要求が成功する。測定及びシミュレーションにより、データ移動要求のレートが上昇するにつれて、データ移動が成功する部分が100%から減少することが示されている。その結果、毎秒のデータ移動成功数は飽和するか又はピークに達し、この最大値をINの帯域幅とする。
【0016】
MPAは、あるアプリケーションのための特定の機能を実施するようソフトウェアを用いてプログラムできる。2つの主要なソフトウェアタイプが存在し、それはアプリケーションソフトウェア及び開発ツールである。アプリケーションソフトウェアはソーステキスト、中間形態及び最終二値画像であり、MPAのPEが実行できるようMPAのメモリに搭載される。開発ツールは、対象とするハードウェアのためのアプリケーションソフトウェアを設計及び試験するためのソフトウェアプログラムであり、言語コンパイラ、リンカー、同時タスク定義付け補助装置、通信経路レイアウト補助装置、物理的設計の自動化、シミュレータ、デバッガ等である。開発ツールソフトウェアは、アプリケーションソフトウェアの対象ハードウェア上で動作してもしなくても(上記ハードウェアによって実行されてもされなくても)よい。
【発明の概要】
【課題を解決するための手段】
【0017】
多重プロセッサアレイの様々な実施形態を開示する。おおまかに言って、複数のプロセッサと設定可能な通信要素とを分散型配置で連結した装置及び方法を考える。各設定可能な通信要素は、ローカルメモリ及び複数のルーティングエンジンを含んでよい。ローカルメモリは複数のプロセッサのうちのサブセットに連結してよい。各ルーティングエンジンは、複数のソースから1つ又は複数のメッセージを受信し、受信したメッセージそれぞれを、構成情報に基づいて、複数の目的地のうちの所定の目的地に割り当て、上記割り当てられた目的地へと各メッセージを前進させるよう構成できる。複数の目的地は、ローカルメモリと、複数の設定可能な通信要素のうちのサブセットに含まれるルーティングエンジンとを含んでよい。
【0018】
一実施形態では、構成情報は1つ又は複数のデータ語のうちの少なくとも1つの語に含まれていてよい。
【0019】
更なる実施形態では、各ルーティングエンジンは更に、構成情報を復号化するよう構成してよい。
【図面の簡単な説明】
【0020】
図1図1は、本明細書で多重プロセッサアレイ(MPA)と呼ばれる処理システムの一実施形態を示すブロック図である。
図2図2は、MPA接続スキームの一実施形態を示すブロック図である。
図3図3は、データメモリルータ(data memory router:DMR)の一実施形態を示すブロック図である。
図4図4は、DMRの別の実施形態を示すブロック図である。
図4A図4Aは、DMRのある実施形態を示すブロック図である。
図4B図4Bは、DMRの一部のある実施形態を示すブロック図である。
図5A図5Aは、DMRのポート配置の例を示すブロック図である。
図5B図5Bは、DMRのポート配置の例を示すブロック図である。
図6図6は、多重プロセッサアレイの一部分におけるDMRとPEとの間の接続を示すブロック図である。
図7図7は、DMR内の例示的な局所的ルートを示すブロック図である。
図8図8は、DMR内の例示的な全体のルートを示すブロック図である。
図8A図8Aは、DMRのある実施形態を示すブロック図である。
図9図9は、DMR内のクロスバースイッチを制御するために使用される優先順位を示す表である。
図10図10は、多重プロセッサアレイの全体的及び局所的ルーティングの一実施形態の動作を示す図である。
図11図11は、ダイレクトメモリアクセス(direct memory access:DMA)エンジンを示すブロック図である。
図12図12は、メモリバッファを動作させるための方法を示すフローチャートである。
図13図13は、メモリバッファを動作させるための別の方法を示すフローチャートである。
図14図14は、様々なポインタ構成を示す図である。
図15図15は、ポインタ比較及びストールユニットのある実施形態のブロック図である。
図16図16は、処理エンジン読み込みFIFOのエミュレーションを示すブロック図である。
図17図17は、ヘッダ語上のルーティング論理の一実施形態の動作を示す。
図18図18は、MPAの一部分を通る例示的な経路を示すブロック図である。
図19図19は、確保領域を横断する、MPAの一部分を通る例示的な経路を示すブロック図である。
図20図20は、通信経路が不通となったMPAの一部分のある実施形態を示すブロック図である。
図21図21は、データ検査処理の例を示すブロック図である。
図22図22は、分散輻輳分析器を示すブロック図である。
【発明を実施するための形態】
【0021】
本開示は様々な修正及び代替形態を許容するものであるが、その具体的な実施形態を例として図面に示し、また本明細書で詳細に説明する。しかしながら、上記具体的実施形態の図及び詳細な説明は、図示されている特定の形態に開示を限定することを意図したものではなく、反対に、添付の請求項によって定義されるような本開示の精神及び範囲内にある全ての修正例、均等物及び代替例を包含することを意図したものであることを理解されたい。本明細書において使用されている見出しは、単に組織化を目的としたものであり、これらの使用は本説明の範囲の限定を意味しない。本出願全体を通して使用される単語「してよい/し得る/できる(may)」は、許容の意味で(即ち「可能性がある」ことを意味して)使用されており、強制の意味で(即ち「しなければならない」ことを意味して)使用されるものではない。同様に、単語「含む(include/including/includes)」は、ある対象を含むもののそれに限定されないことを意味する。
【0022】
様々なユニット、回路又はその他の構成部品は、1つ又は複数のタスクを実施する「よう構成される(configured to)」として記載され得る。このような文脈において「よう構成される」は、動作中に上記1つ又は複数のタスクを実施する「回路構成を有する」ことを一般に意味する、構造の広範な説明である。従ってユニット/回路/構成部品は、ユニット/回路/構成部品が現在オンでなくても上記タスクを実施するよう構成できる。一般に「よう構成される」に対応する構造を形成する回路構成は、ハードウェア回路を含んでよい。同様に、記載を簡略化するために、様々なユニット/回路/構成部品は、1つ又は複数のタスクを実施するとして記載され得る。このような記載は「よう構成される」という語句を含むものとして解釈されるものとする。1つ又は複数のタスクを実施するよう構成されるユニット/回路/構成部品の列挙は、これらユニット/回路/構成部品に関して米国特許法第112条第6段落の解釈を援用しないことを明示的に意図したものである。より一般には、いずれの要素の列挙は、「…のための手段(means for)」又は「…のためのステップ(step for)」という語句が具体的に使用されていない限り、上記要素に関して米国特許法第112条第6段落の解釈を援用しないことを明示的に意図したものである。
【0023】
参照による援用
Michael B.Doerr、William H.Hallidy、David A.Gibson、Craig M.Chaseを発明者とする、発明の名称「Processing System With Interspersed Stall Propagating Processors And Communication Elements」の米国特許第7415594号は、その全体を参照することにより、本明細書においてその全体が完全に論述されているかのように、本明細書に援用されるものとする。
【0024】
Michael B.Doerr、Carl S.Dobbs、Michael B.Solka、Michael R Trocino、David A.Gibsonを発明者とする、2011年10月14日出願の、発明の名称「Disabling Communication in a Multiprocessor System」の米国特許出願第13/274138号は、その全体を参照することにより、本明細書においてその全体が完全に論述されているかのように、本明細書に援用されるものとする。
【0025】
用語
ハードウェア構成プログラム:例えば集積回路等のハードウェアをプログラム又は構成するために使用できる、バイナリイメージにコンパイルできるソーステキストからなるプログラム。
【0026】
コンピュータシステム:パーソナルコンピュータシステム(PC)、メインフレームコンピュータシステム、ワークステーション、ネットワーク家電、インターネット家電、パーソナルデジタルアシスタント(PDA)、テレビジョンシステム、グリッドコンピューティングシステム若しくはその他のデバイス又はデバイスの組み合わせを含む、様々なタイプの計算又は処理システムのいずれか。一般に、用語「コンピュータシステム」は、メモリ媒体からの命令を実行する少なくとも1つのプロセッサを有するいずれのデバイス(又は複数のデバイスの組み合わせ)を包含するものとして広く定義できる。
【0027】
自動的に(automatically):その動作又は操作を直接指定又は実施するユーザ入力を必要とせずに、コンピュータシステムが実施する動作又は操作(例えばコンピュータシステムが実行するソフトウェア)について用いる。従って用語「自動的に」は、ユーザが手動で実施又は指定する操作(ここでユーザが操作を直接実施するために入力を提供する)と対照的なものである。自動処理は、ユーザが提供する入力によって開始される場合があるが、これに続く「自動的に」実施される動作は、ユーザが指定するものではなく、即ち「手動で」実施される(ユーザが各動作の実施を指定する)ものではない。例えばユーザが、各フィールドを選択し、(例えば情報をタイピングすることによって、チェックボックスを選択することによって、無線選択によって等で)情報を指定する入力を提供することによって、電子フォームを埋める場合、仮にコンピュータシステムがユーザの動作に応答して上記フォームを更新しなければならないとしても、これは上記フォームを手動で埋めたことになる。このようなフォームはコンピュータシステムによって自動で埋めることができ、この場合コンピュータシステム(例えばコンピュータシステム上で実行されるソフトウェア)は、フォームのフィールドを分析して、フィールドへの回答を指定するいずれのユーザ入力を必要とせずにフォームを埋める。上述のように、ユーザはフォームを自動で埋める動作を発動する場合はあるが、実際にフォームを埋める動作には関わらない(例えばユーザはフィールドへの回答を手動で指定せず、回答は自動的に完了する)。本明細書は、ユーザが行う動作に応答して自動的に実施される操作の様々な例を提供する。
【0028】
詳細な説明
例示的なMPAアーキテクチャを図1、2に示し、これは、米国特許第7415594号に開示されているHyperX(商標)アーキテクチャの例である。図1に示す実施形態では、MPA10は、複数の処理要素(PE)、並びに複数の補助メモリ(SM)及び相互接続ネットワーク(IN)を含む。INは複数の切り替えノード及び複数のリンクからなる。切り替えノードはルータとも呼ばれ、これをリンクと共に使用して、PE間、PEとMPAのI/Oポートとの間の通信経路を形成できる。しかしながら各PEにおいて、通信されるいずれの情報はSMにバッファリングできる。図1では、SMはデータメモリルータ(DMR)と呼ばれる円形要素内の通信パスルータと組み合わされる。本明細書で使用されるように、PEをPEノードと呼ぶこともあり、DMRをDMRノードと呼ぶこともある。DMRはまた、「設定可能な通信要素(configurable communication element)」とも呼ばれる。
【0029】
図1、2に示すDMR間のリンクは直線のメッシュを形成するが、その他の多数の接続スキームが可能であり、考察の対象となる。図2に示すMPA接続スキームでは、各PEは4つの隣接するDMRに接続され、各DMRは4つの隣接するPE及び4つの隣接するDMRに接続される。3次元の直線メッシュをサポートするための、1つのDMRに対して6つのDMR−DMR間リンクの使用、又は東西南北方向に加えて4つの斜め方向をサポートするための、1つのDMRに対して8つのリンクの使用といった、より高次元のINをサポートするための他の接続スキームも想定される。リンクは物理的に最も近接した近隣のDMRに限定する必要はない。
【0030】
MPAとアプリケーションソフトウェアとの組み合わせは、並列処理システム(parallel processing system:PPS)と呼ぶことができるが、この名称の使用は、本発明の範囲をいかなる様式でも制限することを意図したものではない。例えばMPAは、カメラからの生のビデオデータをバッファリング及び分析し、その後バッファの内容に対してビデオデータ圧縮を実施し、これによって圧縮データを無線リンク上へと伝送するようプログラムしてよい。アプリケーションソフトウェアとMPAとのこの組み合わせは、例えば並列ビデオ信号プロセッサと呼んでよい。
【0031】
チップI/Oセルを有するMPA20は、汎用マイクロプロセッサ、DSP、FPGA又はASICが現在使用されている様々なシステム及びアプリケーションのいずれにおいても使用され得る。例えば図1、2に示す処理システムは、様々なタイプのコンピュータシステム、デジタル信号プロセッサ(DSP)又は計算を必要とするその他のデバイスのいずれにおいて使用できる。
【0032】
HyperXハードウェアファブリック
HyperX(商標)アーキテクチャの一例では、多重プロセッサアレイは単位セルベースのハードウェアファブリック(メッシュ)からなってよく、各セルはHyperSliceと呼ばれる。このハードウェアファブリックは、グリッド上に単位セルを配設し、隣接するセルを相互接続することによって形成できる。各HyperSliceは、1つ又は複数のデータメモリ及びルータ(DMR)、並びに1つ又は複数の処理要素(PE)を含んでよい。
【0033】
米国特許第7415594号では、DMRは動的設定可能通信(dynamically configurable communication:DCC)要素と呼ばれることもあり、PEは動的設定可能処理(dynamically configurable processing:DCP)要素と呼ばれることもある。DMRは隣接するPEに補助メモリを提供でき、また相互接続ネットワーク(IN)にルータ及びリンクを提供できる。この文脈において「動的設定可能(dynamically configurable)」は、アプリケーションソフトウェアの実行中にこれらのハードウェアリソース(PE、DMRリンク、DMRメモリ)を再割当てできることを意味している。これはアプリケーションソフトウェアを、より小さいタスク及び通信メッセージの階層に分割することによって達成される。これらタスク及びメッセージはリソースに割り当てられ、同時に(又は必要に応じて連続的に)実行される。タスク及びメッセージが完了すると、これらを再実行でき、又は他のタスク及びメッセージで置換して、アプリケーションソフトウェアの新規の構成を形成できる。「オン・ザ・フライ(on the fly)」で構成を変更できる能力は特に、有限のリソースをより効率的に使用するため、及び変化する外部からの要求に対してより良好に適合するための柔軟性をサポートする。
【0034】
HyperXハードウェアファブリックは、独立して、かつ処理要素に対して透明に動作する一次IN(PIN)を有し、また任意の通信ネットワークトポロジをサポートするHyperSlice間の、リアルタイムでプログラム可能かつ適合可能な通信経路(ルート又はパスと呼ばれる場合もある)を通してオンデマンド帯域幅を提供できる。HyperSliceの調整グループは、ソフトウェア制御下で「オン・ザ・フライ」で形成及び再形成できる。関数を評価するために使用されるハードウェアの量を動的に変更できるこのような能力により、ハードウェアリソースの最適な応用が可能となり、これによって処理におけるボトルネックが緩和される。ハードウェアファブリックの縁部において、リンクは、メモリ階層の更に下にあるメモリのタイプに対して、又は集積回路(IC)チップの縁部のI/Oに対して特化された回路に接続される。
【0035】
HyperXハードウェアファブリックの相互接続されたDMRは、チップ内を横断する、及びチップ間の、最も近接した、局所的な、及び全体的な通信を提供できる。これらの通信モードはそれぞれ、DMRリソースを物理的に用いて、データの局所性及びソフトウェアアルゴリズムの要件に応じてデータ/メッセージを様々に送信できる。「クイックポート(Quick Port)」設備を設けることにより、プロセッサからいずれのネットワーク目的地への、データの1つ又は複数の語の低レイテンシ伝送をサポートできる。ブロック伝送に関して、メモリ及びルーティングファブリックを横断するデータの移動を管理するために、DMR内でダイレクトメモリアクセス(DMA)エンジンを利用可能としてよい。PE間の最近接通信に関して、共有メモリ及びレジスタの使用が、最も効率的なデータ移動方法となり得る。局所的及び全体的なデータ移動に関して、ルーティングファブリック(PIN)の使用が最も効率的な方法となり得る。通信経路(又はルート)は動的でも静的でもよい。動的ルートは、データ伝送のために設定され、伝送が完了すると、他のルート及びデータ伝送のためにPINリソースを活用できるよう切断してよい。静的リソースは、プログラム実行を通して所定の位置にあり続けることができ、主に優先度が高く重要な通信に使用される。通信経路の物理的位置及びこれら経路を横断するデータ伝送のタイミングは、ソフトウェアプログラム制御下にあってよい。いずれのセンダといずれのレシーバとの間の同時データ伝送をサポートするために多重通信経路が存在してよい。
【0036】
処理要素(PE)
DMRのアーキテクチャにより、異なる相互交換可能なPEを、システムを特定の用途に対して最適化するために多重プロセッサファブリックにおいて使用できる。HyperX(商標)多重プロセッサシステムは、PE異種のPEによるアレイ又は同種のPEによるアレイを備えてよい。PEは従来のプロセッサであってよく、又はPEはプロセッサの従来の定義に適合していなくてもよい。PEは単に、特定の論理関数のための結線接続されたプロセッサとして機能する論理ゲートの集合であってよく、ここではより高い性能、より小さい面積及び/又はより低い電力のためにプログラム可能性が犠牲となっている。
【0037】
図2に示すように、例えばHyperX(商標)MPA等のMPA内のPEは、PE間の分散DMRによる多数のメモリへの並列接続によって供給を受けることができる。このような配置により、分離型(即ち非分散型)の配置に比べて、所定のPEがDMR内のメモリにアクセスするために必要な時間及びエネルギを削減でき、またこのような配置はここではPE及びSM分散配置と呼ぶこともできる。
【0038】
図1の実施形態では、PEとDMRとの比は1:1である。他の様々な実施形態において、これとは異なるPEとDMRとの比も可能である。
【0039】
HyperX(商標)プロセッサアーキテクチャは、固有の多次元性を含んでよいが、物理的には平面実施形態に実装できる。このプロセッサアーキテクチャは高エネルギ効率特性を有してよく、また(大型のアレイに対して)基本的に対応可能であり、信頼性が高い。即ち低電力かつ信頼性の高い概念を提示する。プロセッサアーキテクチャが前例のない性能を達成できる態様は、最新式のプロセッサ、メモリネットワーク、柔軟なIOを含む。処理要素(PE)はフルフレッジドDSP/GPPであってよく、また、ハードウェアリソースの使用を同時に最大化しながらスループットを維持するために実行パイプラインを動的に拡張できる可変幅命令語命令セットアーキテクチャによって支持される、メモリ間(キャッシュレス)アーキテクチャに基づくものであってよい。
【0040】
通信経路の設定
図1は、処理要素(PE)及びデータメモリルータ(DMR)のネットワークを含むHyperX(商標)システムのある実施形態を示す。PEは矩形のブロックとして図示され、DMRは円として図示されている。DMR間のルーティングパスは点線で図示されている。中実の三角形はオフメッシュ通信を示し、実線はDMR間のアクティブなデータ通信を示す。計算タスクはその数値による識別子で示され、これを実行するPE上に位置する。通信に使用されているデータ変数はその名称で示され、これを含むDMR上に位置する。図示した実施形態では、左上のPEはタスクID62のタスクに割り当てられ、このPEに隣接する各DMRを介して他のPE又はメモリと通信でき、上記各DMRは通信パス変数t、w、uで表されている。これもまた図示されているように、この実施形態では、アクティブな通信チャネルは、「x」で標識されている隣接するDMRを介して、71(例えば別のタスクID)で表されているPEを、オフメッシュ通信パス又はポートに接続する。
【0041】
データメモリルータ
DMRハードウェア構造のある実施形態のブロック図を図3に示す。図示した実施形態では、中央データメモリ(data memory:DM)はルータを表す八角形のリングで囲まれている。なお、図示した八角形形状は単なる記号表現であり、実際の形状は異なっていてよく、例えば矩形であってよい。DMRを取り囲むのは、他のDMR及びPEへのデータパスを表す多数の双方向矢印である。これらの双方向データパスは、各端部における実際の双方向トランシーバを用いて実装でき、又は反対方向に配向された単方向パスのペアとして実装できる。
【0042】
図3のルータとデータメモリとの間の単方向矢印は、メモリとルータとの間の単方向データパスを表す。これらの矢印の近傍の小さな正方形はDMAエンジン、即ちDMからの読み出しをサポートするDMAリーダ(DMA reader:DMAR)及び/又はDMへのデータ書き込みをサポートするDMAライタ(DMA writer:DMAW)を表す。DMARエンジンは、典型的には読み出しデータをリンクから別のDMRに送信するためにバッファによって増大させるための、メモリのためのアドレス信号を生成する。同様にDMAWエンジンは、リンクから受信した書き込みデータをバッファによって増大させるための、メモリのためのアドレス信号を生成する。各DMAエンジンはPEより大幅に小さく、使用電力が少なく、従ってこれらDMAエンジンは、メモリのブロックの読み出し及び書き込みへの使用に関して魅力的である。DMAエンジンは、DMメモリスペース内の関連する構成レジスタへのPEによる書き込みによって構成できる。特定のアドレスへの書き込みによりDMAがトリガされ、上記増大が開始される。DMAが複数のアドレスのブロックを通しての増大を終了すると、無制限に又は所定の数のループだけルーピングを継続するよう構成されていない限り、DMAは停止する。
【0043】
図2に示すMPA20等のMPAにおいて高帯域幅ポートをサポートするために、ポート(PE−DMR又はDMR−DMR)間の接続又はリンクは短くてよく(即ち隣接するものに限定されていてよく)、多数の並列な導電性トレース又は「ワイヤ(wire)」若しくは「ライン(line)」からなってよい。いくつかの実施形態では、1つのリンクはいくつかの並列のトレース、1つのトレース又は1つの導波路のみからなってよい。
【0044】
PE−DMR接続は、メモリアドレスのためのトレースをデータのためのトレースから分離できる。データのためのトレースは、双方向データ伝送をサポートするためにトランシーバに接続してよく、又は書き込みデータをメモリへと移動させるためのトレースのセットと、読み出しデータをメモリから移動させるための別のトレースのセットとに分割してよい。DMR−DMR接続は必ずしもアドレスラインを有さなくてよいが、メッセージヘッダ又はメッセージ終了のための制御語といった、伝送されるデータ内の特定の語を示すためのラインを有してよい。
【0045】
全てのDMR接続は、フロー制御のための追加のラインを有してよい。例えばあるラインは上流へ(目的地からソースへ)信号を伝送してよく、これにより、経路に何らかの他の通信パスが存在するため又は目的地がそれ以上のデータを受け取れないためにデータ語の更なる前進がブロックされる。本文書において、この上流ラインを「BLK」、「stall」、「rtr_busyout」又は「rtr_busyin」と呼ぶことにより、いくつかを示すことができる。別のラインは下流へ(ソースから目的地へ)信号を伝送してよく、これにより有効なデータが準備される。本文書において、この下流ラインを「IDL」、「ready」、「rtr_rdyout」又は「rtr_rdyin」と呼ぶことにより、いくつかを示すことができる。上流及び下流への信号伝送の両方を用いて、ローカル(隣接する)DMR又はグローバル(隣接しない)DMRであるDMR間のリンクの端部に接続されたトランスミッタ及びレシーバの状態を示すことができる。いくつかのMPAの実施形態では、ノード間の通信はプログラム制御下であってよい。
【0046】
図4では、通信コントローラ430はクロスバー450を、DMR入力ポート404のうちの1つ又は複数からDMR出力ポート405のうちの1つ又は複数へとデータをルーティングできるよう配向でき、またこれによってMPAを通るパスに沿ってデータをリレーできる。DMR400は、データのための追加の通信パスを提供してよい。図示した実施形態では、多重ポートSRA425はその書き込みポートにおいて、DMR入力ポート401又は出力レジスタ455から、複数のmux、即ちマルチプレクサを介してデータを受信できる。これらマルチプレクサにより、通信コントローラ430は、多重ポートSRAM425にアクセスしなければ多重ポートSRAM425が休止状態となり得る時間の間に多重ポートSRAM425にアクセスできる。ルータコントローラ430は、メモリスイッチ、他の3つのDMRのInポート404のうちのいずれか、又はクイックポートからの出力のためのデータを選択するようプログラムできる。
【0047】
切り替え型ルーティングファブリックのための通信経路
いくつかのMPAの実施形態では、基本的に論理チャネルであってよい経路によって、比較的長距離の通信(即ち隣接するDMRを越えた通信)をサポートできる。各経路は1方向のみにデータを転送できる。双方向通信が必要である場合は、第2の経路を反対方向に確立してよい。一般にMPAのある実施形態は、複数の物理的接続を空間多重化又は時間多重化することによって形成されるDMRのペア間の多重接続リンクを有してよい。経路はこのような接続リンク全体に亘って確立できる。しかしながら経路をひとたび確立してしまうと、この経路が使用する接続リンク又はこの経路がその存在中に連結されるDMRは変更できない。従って各経路は、例えば第1の又はソースDMR、第1の接続リンク、第2のDMR、第2の接続リンク、第3のDMR、第3の接続リンク…最後の又は目的地であるDMRといった、DMR及び接続リンクの順序付きシーケンスとして一意に定義できる。一実施形態では、MPA内の全ての経路のセットは、全てのルータの状態によって一意に定義できる。
【0048】
MPAの動的構成をサポートするために、経路は迅速に生成され、迅速に破壊できる。いくつかの実施形態では、経路の生成及び破壊は所定のPE又は所定のDMRによって開始できる。例えば所定のDMRを、PEを介さない別のDMRへのDMA伝送を実施するよう構成でき、従って経路を生成及び破壊するよう構成できる。動的経路生成及び破壊を達成できる2つの方法として、グローバルプログラミング及びワームホールルーティングがある。グローバルプログラミングによる経路生成について次に説明し、その後多くのMPA経路に共通し得るモード及びフロー制御の特徴について説明する。ワームホールルーティング方法の説明は、このモード及びフロー制御の説明の後で行う。
【0049】
グローバルプログラミング方法を用いた経路生成又は設定には、MPA内の全ての経路がソフトウェア制御によって定義されること、及びこのような経路がそれぞれ、経路をデータ伝送に使用する前に構成されることが必要となり得る。これはプログラマによって手動で、又は例えばルーティングコンパイラ若しくは補助ソフトウェアによって若しくはライブラリ関数を選択することによって(ここで関数コードは既に経路設定を含む)自動的に行うことができる。複数の経路全体がMPA内で同時に使用されることになる場合、ハードウェア内で利用可能な通信リンクリソースより多くの通信リンクリソースを使用しないことの保証をプログラマが行わなければならない場合がある。あるいはソフトウェアツールを用いて、リンクリソースの使用の設計を支援できる。
【0050】
グローバルプログラミングによって単一の経路を生成するために、その経路に沿ったDMR内の、図4の通信コントローラ430のような通信コントローラに、いくつかの命令をロードしてよい。これらの命令は、その経路内の各リンクに関連する適切なクロスバー構成レジスタ451のビット群をロードしてよい。いくつかの実施形態では、これらの命令は即座に又は順次実行してよく、その他の実施形態では、何らかの種類のトリガ信号を待ってよい。様々な実施形態では、ハードウェアは、経路が確立された後に中断されるのを防止してもしなくてもよい。従って、いずれの所定のリンクに一度に割り当てられる経路が1つのみであることを保証するのは、プログラマ又はルーティングソフトウェアの責任となり得る。経路に沿った全てのDMR内のルータ制御状態レジスタ451が設定されると、通信経路は完成し、データに対して準備された状態となり得る。経路は必要なくなると、経路が含む全てのDMRのクロスバー構成レジスタの関連するビット群を変更することによって破壊できる。あるいは、既存の経路をそのまま無期限に残してもよく、上記既存の経路が不要となった後で、経路に沿ったルータ制御状態を必要に応じて新規の経路で単に上書きするだけでもよい。
【0051】
ワームホールルーティング
ワームホールルーティングによる経路の設定をサポートするために、いくつかのMPAの実施形態は、いくつかの追加の回路を提供できる。これらは、各DMRタイプポートに対して、制御/データ状態を表しC/Dとして示される追加の制御ラインを含んでよく、これはDMR間の接続リンクに含めてよく、また各DMRのルーティング論理435に連結してよい。接続リンク内のワイヤの最大数は、データ語あたりのビット数と、C/D、IDL、BLKそれぞれに対して1つのワイヤとの合計に名目上対応する。IDL、BLKは上で定義したように、フロー制御のためのものである。しかしながらいくつかのMPAの実施形態では、これらの信号を多数の異なる方法で多重化して、ワイヤの総数を削減してよい。
【0052】
あるDMRにおいて、別のDMRからデータ語を受信すると、受信側DMRはC/Dビットを用いて、ワームのヘッダ、本文及びテール語を区別できる。C/Dビットがデアサートされている場合、これは、受信した語が本文の語であることを表すことができる。本文の語は、データ語と制御ビットとの和に相当するものであってよく、これは経路に沿って変化しないまま通過できる。C/Dビットがアサートされている場合、これは、受信した語が制御語であることを表すことができる。制御語は、その語のデータ部分に、ルーティング論理435が解釈するためのルーティングコードを含むことができる。
【0053】
ルーティングコードの1つの重要な特徴は、その制御語がヘッダであるか又はテールであるかを示すことであり得、従って制御語のヘッダ/テール状態を表すH/Tビットを提供できる。一実施形態ではH/TビットはC/Dビットに隣接してよいが、他の実施形態ではH/Tビットは他のビット位置に割り当てられていてよく、又は特定のマルチビットコードであってよい。制御語がテール語である場合、制御語は経路に沿って伝播でき、DMR出力ポートをいくつかの他の経路が使用できるように順次解放できる。
【0054】
制御語がヘッダ語である場合、制御語を受信側DMRの入力レジスタ454内にラッチして、ルーティング論理435内の組み合わせ論理によって復号化できる。ルーティング論理435は、ヘッダ語の適当な数ビットと、そのヘッダがやって来るポートとを検査でき、表1に示すような、出力ポートに関するクロスバー450の要求を発行できる。出力ポートを要求する目的でルーティング論理435が検査するいくつかのビットは、ナビゲーションユニット(navigation unit)又はNUNITと呼ぶことができる。1つのDMRにつき4つのDMRタイプ出力ポートを含むDMRの実施形態に関して、NUNITは表1に示すように、2ビットコードを用いて4方向オプションを特定できる。同じ又は異なる数のDMRタイプポートを含むその他の実施形態では、他のNUNITコードを使用できる。1つのNUNITあたり2ビットを使用するコードについて、以下に説明する。既に確立された経路によって出力ポートがブロックされていない場合、ルーティング論理435はNUNITを評価して、ワームを前進させることができる。例えばSRAM(DMの一種)から到着したヘッダ語がNUNITコード10を有している場合、ルーティング論理435は、ヘッダ語及びこのワームのヘッダ語に続く語のために、クロスバー450から東出力ポートを要求できる。
【0055】
【表1】
【0056】
図17は、ヘッダ語上のルーティング論理の一実施形態の動作を示す。図17は、ヘッダ語が、ソースノードから複数のDMRノードを通って目的地ノードまで前進するさまを示している。ケース(a)は、ソースDMRから出た初期状態のヘッダ語を示してよい。この状態では、ヘッダ語はC/Dビット、H/Tビット、HN0〜HN4の番号を付けられた複数のヘッダNUNITフィールドを含み、HN0はヘッダ語の少なくとも有意なビットを占める。
【0057】
ソースDMR目的地DMRを含む各DMRにおいて、ヘッダ語は以下のような修飾を受けながらクロスバーの出力へと通過できる。ヘッダ語は1つのNUNITによって右にシフトされ、左からゼロで埋められてよい。C/Dビット及びH/Tビットは原位置に復元されてよい。図10のケース(b)〜(e)はそれぞれ、1〜4つのDMRによってヘッダが処理された後に起こるヘッダの修飾を図示したものであってよい。ヘッダが各DMRを通過するにつれて、先頭のヘッダ語は、ケース(e)に示すようにヌルコードが最も右のNUNITに来るまで、より多くのゼロで埋められ得る。ヘッダ語が同一のDMR(コントローラDMR又は隣接するDMR)からのものでなく、かつワームの次の語が制御語でない時に、最も右のNUNITにヌルコードがある場合、ヘッダ語は、そのワームのための目的地DMRの位置となり得る。
【0058】
目的地DMRにおける到着をチェックするにあたって、多重クロックが必要となり得る。まず先頭のヘッダ語を、入力レジスタ454のうちの1つへと移動させて、ルータ制御論理435によって、最も右のNUNITのヌルコードに関して試験してよい。ヌルコードが見つかった場合、次のクロックサイクルにおいてワームの次の語が先頭のヘッダ語を上書きしてよく、そして上記次の語のC/Dビット及びH/Tビットを試験してよい。上記次の語が別のヘッダ語である場合、これは新規の先頭のヘッダ語となってよく、その最も右のNUNITを用いて、次のDMRのための出力ポートを選択してよい。大型のアレイ全体に亘るルーティングを行うために、1つのワームに対して多くのヘッダ語が存在してよい。次の語がヘッダ語ではなく本文の語である場合、ワームはその目的地DMRにあってよい。この場合、本文の語はDMRのプリセットSRM位置に書き込んでよい。ある位置における本体の語の到着は、通信コントローラ430のDMA論理によって又はDMRによって検出してよく、これらはいずれも本体の後続の語の到着を処理できる。ワームを処理する方法に関する情報は、目的地ノードに事前にロードしてもよく、又はワーム内のヘッダの直後に含めてもよい。
【0059】
図18は、MPAの一部分を通る例示的な経路を示すブロック図である。図18は「Router A」〜「Router H」で表される8つのルータを示す。図示された各ルータは、図4Bのルータの例であってよい。簡潔にするために追加の論理は図示されていないが、図示された各クロスバーは、例えば図4に示すDMR400といった各DMR400に含まれていてよく、またこのようなDMRはそれぞれ、例えば図2に示すMPA20といったMPA内の他のDMRと連結されていてよい。
【0060】
図18に示す実施例では、ルータA〜Hはそれぞれ、ルータの左側縁部上にN、S、E、Wで表される4つの入力ポートと、ルータの右側縁部上にN、S、E、Wで表される4つの出力ポートとを含む。各ルータの入力ポートは、各DMRのDMR入力ポート404に連結してよく、各ルータの出力ポートは、各DMRのDMR出力ポート405に連結してよい。更にルータA〜Hはそれぞれ、図4のマルチポートSRAM425のようなメモリに対する入力接続及び出力接続を含み、これらの接続はそれぞれルータの左側縁部上及び右側縁部上のMで表される。
【0061】
図示した実施形態では、各ルータA〜Hは、各DMRを介して複数の隣接するルータに連結され、これにより各ルータの各出力ポートN、S、E、Wが、上記複数の隣接するルータそれぞれの各入力ポートS、N、W、Eに連結される。従って図示した実施形態では、4つの隣接するルータから入力を受信し、かつ4つの隣接するルータへ出力を送信できるよう、各ルータを連結できる。代替実施形態では、それぞれ異なる数の入力ポート、出力ポート及びメモリ接続を含む異なる数のルータを使用してよいことに留意されたい。
【0062】
図18は、ルータAを含むソースDMRからルータHを含む目的地DMRからへの経路を示し、この経路はルータB、F、Gを含むDMRを横断する。図17、18を併せて参照すると、表1に従って定義された2ビットのNUNITを用いて、図示した経路を以下のようにして実装できる。この経路は、入力メモリ接続Mを介してルータAに連結されたSRAMを起点とし、出力ポートEを介してルータAから出る。表1によると、ルータAのためのNUNITは10となる。ルータAの出力EはルータBの入力Wに連結され、図示した経路は出力ポートSを介してルータBを出る。表1によると、ルータBのためのNUNITは01となる。ルータBのための出力SはルータFの入力Nに連結され、図示した経路は出力ポートEを介してルータFから出る。表1によると、ルータFのためのNUNITは10となる。ルータFの出力EはルータGの入力Wに連結され、図示した経路は出力ポートEを介してルータGを出る。表1によると、ルータGのためのNUNITは11となる。最後にルータGのための出力EはルータHの入力Wに連結され、図示した経路は、出力メモリ接続Mを介してルータHに連結されたSRAMで終端する。表1によると、クロスバーHのためのNUNITは00となる。
【0063】
よって、図18に示す経路に関して図17のフォーマットのワームホールルーティングを実装するヘッダ制御語は、制御語を示すアサートされたC/Dビット、ヘッダ語を示すアサートされたH/Tビット、それぞれフィールドHN4〜HN0に対応する値00、11、10、01、10を含んでよい。図示した経路は単に、1つのMPAの実施形態を通る多くの可能な経路のうちの1つであることに留意されたい。他の実施形態では、異なる数のルータ及びポートを使用してよく、また異なる経路及びルーティング方法も可能であり、考察の対象となる。
【0064】
各NUNITは経路に沿った特定のDMRによって消費され得るため、1以上のビットを各NUNITに追加して、個々のDMRにおいて特定の挙動を要求してよい。例えば一実施形態では、1つのNUNITあたり1ビットの追加を用いて、所定のDMRが多層モードで動作するべきか否かを特定できる。このような実施形態では、ワームホールルーティングされたパスは、ヘッダのプログラミングに応じて、経路に沿った異なるDMRにおいて異なるモードを用いてよい。
【0065】
別の実施形態では、PEは、例えば図4に示すDMR400といった隣接するDMRのクロスバー入力に対してヘッダ語を直接送信してよい。PEは、隣接するDMRに対する特定のレジスタアドレスを、DMRアドレスポートを介して特定することによって、及び1つ又は複数のヘッダ語を同一のレジスタアドレスを介してそのDMRの出力ルータに送信することによって上記送信を実行できる。例えば図4に示すルーティング制御論理435等のルーティング制御論理は、上記に続いてメモリスイッチ又はメモリを用いることなくワームをその経路上で目的地へと送信できるよう構成してよい。この技術は、PE間の短いメッセージのより効率的な受け渡し能力を提供できる。
【0066】
衝突の取り扱い
ワームホールルーティングによって設定されている経路は、所定のDMRを通して既にルーティングされているか又はルーティングプロセス中の1つ又は複数の他の経路を有するDMRに出会う場合がある。リソースの競合は、1つ又は複数のインバウンドヘッダ語が同時に同一の出力ポートを要求する場合(衝突)、又はある経路が既に出力ポートを専有している場合(妨害)に発生し得る。ルーティング制御論理は、衝突が発生した場合に、競合の対象となっている出力ポートへのアクセスをいずれの経路が受信するかについて調停を行うよう構成された論理を含んでよい。ルーティング制御論理は衝突を検出して、競合の対象となっている出力ポートへのアクセスを1つのワームにのみ認めることができる。様々な優先/回転スキーム(例えばラウンドロビンスキーム)を用いてトラフィック分配を成型でき、また要求された出力ポートへのアクセスを特定のポートのみが常に拒否されることがないことを保証できる。
【0067】
初めにワームホールルーティングによって設定された経路がブロックされた場合、ブロックされたワームの前進を、これを破壊することなく停止させると有利であり得る。この場合、上述のフロー制御機構を使用できる。用語「ワーム(worm)」はここでは、語、バイト又はその他の二値群であってよいフローユニット(本文書では「フリット(flit)」とも呼ぶ)の順序付きシーケンス又はストリングを表すために使用される。いくつかの実施形態では、DMRフロー制御プロトコルは以下のように動作できる。ワームがブロックに遭遇すると、ワームの先頭のフリットをブロック用DMRの入力レジスタにラッチしてよく、BLK信号を経路内の次の上流のDMRへと後進させることによって、ワームの別のフリットを上記次の上流のDMRの入力レジスタにラッチできる。このプロセスは、ワームのテール語を含むDMRまで、又はソースがテール語を送信していない場合はソースDMRまで繰り返してよい。ワーム内のデータは、同期データ転送モードで動作するよう構成された経路内のDMRの入力レジスタ及び出力レジスタにおいてキャプチャしてよい。上述のように、1つのDMRにつき2つの語を記憶でき、これによってストールされたワームが「押しつぶされた(scrunched)」又は「圧縮された(telescoped)」状態となる。ワームは、ブロック状態がなくなるまで無期限に停止したままであってよく、その後、BLK信号のデアサートの伝播により、上記ワームの前進移動を自動的に再開できる。DMRフロー制御プロトコルの上述の説明は、1つのリンク入力ポートレジスタに1つのフリットが記憶され、1つのリンク出力ポートレジスタに1つのフリットが記憶されていることを想定しているが、ブロック状態において1つのポートにつき複数の追加のフリットを記憶するために、追加のレジスタを追加してよく、これはワームの長さに更なる伸縮性を提供し得る。いくつかの実施形態では、特定の経路のソース側端部がフリットの送信を一時的に停止して、「ready」信号をデアサートでき、フロー制御信号送信は、目的地側端部が「ready」信号のデアサートを受信するまで、徐々にフリットの前進移動を停止させることができ、ワームはソースが再び送信を開始するまで所定の位置で停止することになる。プロトコルの代替実施形態では、ソースデータ送信の一時的な停止及び「ready」信号のデアサートは、デアサートされた「ready」ビットを有するフリットからなるバブルそ生成し得る。このバブルは、ソースがデータの送信を再開するまで又はこのバブルが目的地に到達するまで、徐々に成長でき、目的地側のレシーバはフリットを読み出し続けるが、デアサートされた「ready」ビットを含む全てのフリットを破棄する。ソースがデータの送信を再開すると、バブルは目的地側のレシーバで再び消滅する。そして目的地側のレシーバは、アサートされた「ready」ビットが現われるとデータの受信を再開できる。いくつかの実施形態では、ハードウェアは複数のプロトコルをサポートしてよく、またソフトウェアは複数のプロトコルを選択してよい。
【0068】
MPAの機能を例示するいくつかの例示的な応用例について、以下で議論する。これらの例はMPA又はその構成部品の構造、機能又は範囲を限定することを意図したものではなく、以上の説明の理解を促進することのみを意図したものであることに留意されたい。これらの例の数多くの変形例を利用すること、及び以下で議論する応用例に対して多数の代替応用例が存在することも考えられる。
【0069】
多層相互接続
上述のような多重プロセッサシステムは、特定の計算タスクを達成するために、ハードウェア(例えばDMR、PE)とソフトウェアとの協働を必要とし得る。システムの様々なプロセッサ間の協働を実現するために、ネットワークを使用して、個々のプロセッサ間でデータ及び命令を伝送できる。いくつかの実施形態では、プロセッサ間の通信のために多重ネットワークを用いてよい。
【0070】
高いデータスループット性能を有する多重プロセッサシステム内のネットワークは、一次相互接続ネットワーク(PIN)として表してよく、これは複数のリンク(即ちノード間にある1つ又は複数のワイヤ)及び複数のノードからなってよい。ノードは、多重プロセッサアレイの境界においてローカル処理エンジン、ローカルメモリユニット又はI/Oポートに接続するために使用できるポートを有してよい。比較的低いデータスループット性能を有する、同様に構成され得る他のネットワークは、二次相互接続ネットワーク(secondary interconnection network:SIN)として表してよく、例えば米国特許出願第13/274138号に記載のシリアルネットワークがある。このような二次ネットワークは、制御、試験、デバッグ、セキュリティ及び他のいずれの適切な用途に使用できる。
【0071】
ノードはスイッチを含んでよく、このスイッチは、あるリンク又はポートと別のリンク又はポートとの間の独立した接続を形成できるものであってよく、またDMRに対応してよい。いくつかの実施形態では、集積回路の縁部付近に位置するノードは、例えばランダムアクセスメモリ(RAM)又は汎用プロセッサ(GPP)といった、同一の又は異なるタイプのその他のICチップとオフチップ通信するための専用ポートを有してよい。
【0072】
いくつかの実施形態では、PINのトポロジは、ノードの2次元アレイからなる2次元メッシュを含んでよい。各ノードは別のノードに対する北、南、東、西リンクを有してよい。2次元メッシュの各ノードに「アップ」及び「ダウン」リンクを追加して、1つ又は複数の2次元メッシュを接続できるようにすることにより、3次元メッシュを得ることができる。複数の3次元メッシュを同様に接続して、一般に「超立方体メッシュ(hypercube mesh)」として知られるものを形成できる。2次元メッシュ及び3次元メッシュについて説明を行っているが、他の実施形態では多次元メッシュを形成するためにいずれの適切な次元数を用いてよい。次元は潜在的な範囲としては無限であってよいが、その代わりそれ自体がループ状になり、メッシュの円筒又はメッシュのトーラスを形成できる。いくつかの実施形態では、PEのグループは、ランダムに形成されたPINと相互接続でき、そして目的地にアドレスを与えるためにマッピングできる。
【0073】
結線技術は各次元のリンクの相対密度に影響を及ぼし得る。回路基板又はVLSI ICといったいくつかの実施形態では、利用可能な結線の密度は回路平面においては高いが、3次元的には限定されている。3次元メッシュは、比較的少数のリンクを3次元方向に使用することによって、又は全てのリンクを回路平面に突出させることによって適合できる。面積効率のよいレイアウトを生成するために、ノード及びリンクのルーティングを調整してよい。
【0074】
ネットワークを形成するためのこのような積層アプローチにより、特殊な製作技術を必要とせずに高次元ネットワークを実現できる。相互接続ネットワークの次元が上がると、計算リソース間、即ち処理エンジンとメモリユニットとの間の通信経路を増加させることができる。いくつかの実施形態では、リンクはメモリユニットを横断するようにルーティングでき、これにより、多重プロセッサシステムのシリコン面積の増大を最小としたまま、追加のPINリソースを実現できる。また比較的高い次元のネットワークは、貫通シリコンビア(through−silicon via:TSV)を含む最新のパッケージ技術と、様々なタイプのシリコンインタポーザ技術とを用いて実装することもできる。
【0075】
この積層ネットワーク化アプローチを実現するために、ノードはデータパススイッチ、フロー制御信号送信、ルータ制御機構(router control mechanism:RCM)を含んでよい。データパススイッチは接続を確立するように構成してよく、各接続は、複数のリンク及びポートのうち許可されたサブセット間のデータパスを実現できる。例えば、あるリンクと別のリンクとの間、あるリンクとあるポートとの間、又はあるポートと別のポートとの間に接続を確立してよい。いくつかの実施形態では、データパススイッチは、出力をリンク又はポートの出口部分に連結でき、かつ入力をリンク又はポートの入り口部分に連結できる、語幅ビット並列マルチプレクサ(word−wide bit−parallel multiplexer)を含んでよい。いくつかの実施形態では、出入りするデータをバッファリングしてそのタイミングを調整するために、リンク又はポートのインタフェースにおいて、同期クロック供給されるレジスタを使用してよい。様々な実施形態では、データパススイッチは単一段の多重化と共に実装でき、また他の実施形態では、データパススイッチは複数段の多重化と共に実装できる。
【0076】
本発明の一実施形態の多層IN切り替えノードは、その最も一般的な形態において、上記ノードにおいてソース供給できる、上記ノードを通過する、又は上記ノードにおいて終端する複数の通信経路のための、層スイッチ及び方向スイッチを含む。上記ノードは、設定可能なプロトコルに応じてポートに到着するインバウンドデータを解釈し、そのデータを用いて何を行うかを決定する。IN内の他のノードにリンクされたポートが受け取ることができるデータの最小単位は、リンク上でデータフロー制御を受ける最小単位でもあり、本文書ではフローユニット又は「フリット」と呼ぶ。
【0077】
フロー制御信号送信は、レシーバが吸収できるよりも多くのデータを送信することによって、又はセンダが十分に迅速に送信できなかったデータをレシーバが複製することによって、データが失われないようにするために、各接続を通るデータのフローを調節できる。ソースポートにおいてチャネルへと送信されるデータは、ある程度の期間のレイテンシの後でその目的地ポートに現れ得る。場合によっては上記レイテンシの期間は、横断されるリンク1つあたり1クロック期間に対応し得る。データの損失を防ぐために、チャネル内でのデータフローのレートを、ハードウェア、ソフトウェア又はこれらの組み合わせによって制御できる。いくつかの実施形態では、ハードウェアフロー制御信号送信は、データが準備できていることを示すセンダからレシーバへの二値電気信号と、更なるデータの送信前にセンダが待機(ストール)するべきであることを要求するレシーバからセンダへの別の二値電気信号とを使用してよい。これらフロー制御信号は、データパスを並列に辿ることができ、これはデータマルチプレクサの通過を含む。
【0078】
ルート制御機構は、リソース(リンク又はポート)に対する接続要求を処理するよう構成してよい。いくつかの実施形態では、RCMは、入力信号に関して(一般には異なる方向からの)多数の入力を検索できる。信号が特定のリソースを要求するコードを含む場合、RCMは、要求されたリソースが利用可能であるか、即ちそのリソースが既に存在する接続によって予約されていないかをチェックできる。要求されたリソースが利用可能である場合、RCMは要求を承認し、信号をデータパスマルチプレクサに送信して接続を形成し、その接続を通るフロー制御信号送信を確立できる。反対に要求されたリソースが利用可能でない場合、RCMは要求を承認せず、既に存在する両立できない条件が除去されるまでセンダをストールするために、上記要求を行う入力に信号送信を行うことができる。あるいはRMCは、ブロック接続を時分割して、要求された接続を時間の一部に基づいて実現してよい(一般に「カットスルー(cut−through)」と呼ばれる)。入力のいずれの特定のサブセットをストール又は時分割している間、RCMは入力される信号に関する残りの入力のセットを検索してよい。
【0079】
RCMは、利用可能なリソースに対して同時に複数の要求が行われる場合に対処するための調停機構を含んでよい。同一のリソース(リンク又はポート)に対して2つ以上の接続要求が同時に到着した場合、RCMはこれらを調停して勝者を選択できる。いくつかの実施形態では、調停スキームは優先順位スキーム、ラウンドロビンスキーム又はその他のいずれの適切な調停方法であってよい。他の実施形態では、調停スキームを、優先順位スキーム、ラウンドロビンスキーム又はその他のいずれの適切な調停方法となるように構成してよい。
【0080】
特定の接続に関する切断コマンドを受信した場合、RCMはその切断コマンドをいずれの出力リンクに中継して、上記接続に関連するリソースを解放できる。解放されたリソースは、他の接続を形成するために即座に利用できるようになる。切断が確立された場合、RCMはリソースを、切断された既に存在する接続に対して復元してよい。様々な変形実施形態では、RCMはその他の機能又は役割を実行してよいことに留意されたい。
【0081】
PINを通るルーティングは階層型の様式で実施でき、異なる技術は階層の異なるレベルを利用する。あるノード内のRCMは最下レベルであり、通信経路(チャネル)の設定及び切断は中間のレベルであり、相互干渉を最小化するための経路のグループ選択は最上レベルである。ノードのレベルでは、ルーティングは基本的なものであり、かつ迅速であり、典型的にはハードウェアで実現される。ルーティング階層の更に上のレベルでは、ルーティングはより複雑であり、ソフトウェアで達成される場合がある。
【0082】
ノードのレベルでは、ルーティングは既に比較的詳細に説明したようなルーティング制御機構を用いて達成される。いくつかの実施形態では、RCMは状態機械として実装してよい。ルーティング要求は、ローカルPEからポートを介してノードへと到着してよい。ルーティング要求はまた、メッセージのヘッダにおいて符号化され、リンクから到着する場合もある。既に比較的詳細に説明したように、メッセージ内に符号化されたルーティング要求は、一般に「ワームホールルーティング」と呼ばれるチャネル構成方法の基礎を形成する。このようなルーティング方法では、メッセージはソースノードにおいて構成され、チャネルの行き先を記述するヘッダが冒頭に付けられる。様々な実施形態では、異なるヘッダ形式を用いてよい。
【0083】
RCMはまた、接続されているチャネルのトラフィックを監視して、より最適な配置に接続を局所的に調整するためにこの情報を使用できる。例えば2つのパスが1つのリンク上で時分割され、これらパスのうちの一方が他方の接続に比べてビジー状態である場合、RCMは、トラフィック負荷が高いパスにより長い時間を割り当てることができる。別の例では、切り替えノードが局所的なトラフィックをバイパスするための追加のリンクを有する場合、これらのリンクに対して直通のトラフィックをシフトして、パスにソース供給するため又はパスを切断するためのローカルリソースを活用できる。
【0084】
パスがもはや必要ない場合、「テール」コードをパスのソースポートに送信してよい。いくつかの実施形態では、このテールコードは、システムのハードウェアが自動的に送信できる。他の実施形態ではソフトウェアがテールコードの送信を制御してよい。テールコードが確立されたパスに沿って伝播すると、個々のRCMは接続をクリアし、それぞれのルーティングリソースを解放する。テールコードの挿入は、ハードウェアを介して自動であってよいか、又はソフトウェア制御下で送信してよい。いくつかの実施形態では、ヘッダ語とテール語をメッセージ本文から区別するために、リンクに追加のデータビットを含めてよい。データ完全性を支援するために、いずれのリンクが語のパリティビットを備えてもよい。
【0085】
(チャネルとも呼ばれる)経路は、静的又は動的であってよい。静的なパスは、所定の適用期間に関して設定及び使用され、動的なパスは、メッセージ伝送のために生成した後切断され、後に形成されることになる他の経路のためにリンク及びノードを解放できる。いくつかの実施形態では、動的パスを切断して、それ自体の別のインスタンスによって後に置換できる。
【0086】
上述のように、ワームのヘッダは、ソースアドレス、中間アドレス、目的地アドレス及びモード要求といったルーティング情報を含む。この情報のうち目的地アドレスは通常必要であり、多くの様々な方法で符号化され得る。一実施形態では、アドレスはターンのシーケンスとして符号化してよく、他の実施形態では、アドレスはデカルトX−Y対として又はその他のいずれの適切な符号化方法で符号化してよい。いくつかの実施形態では、ルーティング情報は、ナビゲーションユニット(一般に「nunit」と呼ばれる)のシーケンスの形態を取ってよい。nunitを符号化して、接続リソース(リンク又はポート)や、通信経路の設定中に出会う各ノード及びRCMのモードを要求できる。
【0087】
最小(2ビット)nunitコードは「前方直進」、「左折」、「右折」又は「停止」接続を要求し得る。ヘッダメッセージがノードを通過すると、nunitのシーケンスは、接続命令が実行されるに従って前から短縮され得る。「停止」命令に出会うと、RCMはデータパスマルチプレクサを配向して、PE又はDMAによるアクセスのために、レジスタにワームメッセージの残りを提示してよい。DMRは複数のこのようなレジスタをサポートしてよく、これにより複数のチャネルを同時にサポートできる。このようなレジスタのアドレスは、目的地ノードにおける対応する到着方向にマッピングでき、これにより特定のPEが、特定の方向からのメッセージの到着を待機できる。
【0088】
2ビットナビゲーションユニットに関して上述したが、他の実施形態では、より高次元のメッシュ接続を有するIN、また追加のルータモードを実現するために、ナビゲーションユニットにいずれの適切な数のビットを使用してよい。例えば各nunitにおいて追加のビットを符号化してよい。追加のnunitビットにより、「上行」又は「下行」して層を切り替えるための接続命令が可能となり、また2つ以上の層状PINと両立できる。追加のnunitビットを用いて、ルータモードを例えば固定モード又は最適化モードへと修正してよく、ここで最適化は、時分割の割当量、最も近接したものではない近隣のリンクを用いた優先ルーティング又はその他の最適化に適用してよい。
【0089】
多重プロセッサアレイ(MPA)上のアプリケーションソフトウェアは、PEとチップのI/Oインタフェースとの間の多数の通信経路の集合を必要とし得る。2つ以上の経路が互いをブロックし得るため、またこのブロックの蓋然性は、有限のリソースに対してパスの数が多過ぎて混雑する場合に確実なものとなるため、経路のルーティングは、少なくとも1つの利用できそうな(非干渉性の)ルートを発見することへと縮減される。パスの密度が上昇すると、利用可能なルートの発見はますます困難になり得る。パスの密度の測定は、パス−リンクフィルレシオ(即ちパスの全長をリンクの全長で割ったもの)である。このフィルレシオが100%に近づくと、全てのパスルートの確立が不可能となり得る。
【0090】
通信経路(パス)のルーティングは、「ルータ」と呼ばれるソフトウェアツールを用いて達成でき、ルータはソフトウェア開発用スイートの一部として含まれてよい。(タスク配置ツールを使用するであろう)プログラマは、ルーティングする必要があるパスのリスト(これはネットリストとも呼ばれる)をルータツールに提供できる。まず、パスをそのソースノード及び目的地ノードの位置によってのみ特定してよい。ルーティングするべき各パスに関して、ルータは、ソースから目的地への最小距離のリンクのシーケンスを選択してよい。この第1の手順が終わった後には、他のパスをブロックする複数のパスが存在し、これらパスはブロック低減技術を用いて再ルーティングできる。ブロックの低減によるこの再ルーティングは、ブロックが検出されなくなるまで繰り返してよい。
【0091】
ルーティングプロセスをより容易にするための方法は、必要なパスの数を削減するためにアプリケーションソフトウェアアルゴリズムに制約を加えることを伴ってよい。場合によっては、複数のパスが同一のノードを探索している場合又は複数のパスが1つのノードから出ようとしている場合、パスの密度は高い。このような場合の混雑を低減するために、複数のノードに亘ってアルゴリズムを分配してよく、これにより、より多くのリンクに亘ってメッセージトラフィックを効果的に分配できる。ハードウェアの再設計において、DMRリンク性能を向上させて、ノード1つあたりに実現できる接続を増やしてもよい。ルーティングプロセスをより容易にするための別の方法は、1つのDMRに対して利用可能な接続リソース(リンク及びスイッチ)の数を増加させることを伴ってよい。
【0092】
1つのDMRに対して接続リソースを追加するという目的のために、追加のリソースは、INに追加される層として組織してよい。追加される各層は、一連のノード間接続を含んでよく、各ルータは一連のデータパスマルチプレクサ、フロー制御信号送信、ルータ制御機構を含んでよい。いずれの通信経路がある層から別の層へと横断できるようにするために、追加のデータパススイッチ及びその制御が必要となり得る。
【0093】
図5Aは、単一層INのDMRノード550に関する、単一層方向スイッチの例示的実施形態を示す。DMRノード間のリンクは、各DMRの入力ポートと出力ポートとを接続する。これらのポートはDMRの方向スイッチ(ルータ)へと接続される。ルータ入力構成部品552、554、556、558については、図4Bの下半分に、アイテム482、486として更に詳細に示している。ルータ出力構成部品551、553、555、557については、図4Bの上半分に、アイテム481、485、487、そしてルータ制御論理489として更に詳細に示している。なお図4Bでは、入力ポートデータレジスタ486は入力フリットをバッファリングして、3つのルータ出力構成部品(左折、前方直進又は右折に関するもの)及び(経路の切断に関するもの)をメモリスイッチ488に接続し、クイックポート(図示せず)をPEに直接接続するために利用できる。図5Aでは、ルータ入力構成部品とルータ出力構成部品との間に引かれた線は、出力構成部品内のルータ制御論理489及びデータパスマルチプレクサ485が選択できるマルチビットバスを表す。
【0094】
図5Bは、2層INのDMRノード500に関する、2層方向スイッチの実施形態を示す。図示した実施形態では、ノード500は、出力ポート501、505、509、513及び入力スイッチのB側で構成される追加のグローバル(層B)を含む。図5Bでは、入力スイッチのB側とGoポートとの間に引かれた線は、Goポートにおいてデータパスマルチプレクサが選択できるマルチビットバスの接続を表す。
【0095】
図5Bに示す実施形態では、既に存在するローカル(層A)方向スイッチは、図4B、5Aに示したものと同一であってよいが、図5Bを分かりやすい状態に維持するために、層Aの出力ポート502、506、510、514及び入力ポート503、508、512、515のみを図示している。
【0096】
図5Bに示すように、ノード500は、ローカル(層A)入力ポート503、508、512、515にそれぞれ連結された入力スイッチ504、507、511、516を更に含む。これら入力スイッチの目的は、インバウンド通信経路が、ローカル(層A)からグローバル(層B)へ、又はグローバル(層B)からローカル(層A)へ切り替えられるようにすることである。いくつかの実施形態では、クロスバースイッチ504、507、511、516は、直進接続と交差接続の2つの状態のみが可能な2入力2出力(2×2)クロスバースイッチからなってよい。
【0097】
図5Bに示す実施形態では、入力スイッチ制御論理(図示せず)はルータ制御論理489から分離されていてよい。入力スイッチ制御論理とルータ制御論理とをまとめて、ルータ制御機構と考えてよい。
【0098】
各クロスバースイッチは、Aポート及びBポートからデータを受信し、同一の層上で、又は層間を横断させてデータを選択的に通過させる。ローカル(A層)出力ポート502、506、510、514は、DMA又はPEからデータを受け取り、このデータをそれぞれのAリンクへと伝送してよい。いくつかの実施形態では、ローカル(A層)出力ポートを入力ポート503、508、512、515に接続して、直通ルートを生成できるようにしてもよい。
【0099】
グローバル出力ポート501、505、509、513は、クロスバースイッチ504、507、511、516のB側からデータを受け取り、このデータをそれぞれのBリンクへと伝送してよい。様々な実施形態では、グローバル出力ポートはローカルルートと組み合わせては使用できない。
【0100】
なお、図5Bに示すノードのポート構成は単なる例である。他の実施形態では、異なる数、構成、相互接続を有するポートも可能である。
【0101】
図6は、多重プロセッサアレイの一部の実施形態を示す。図示した実施形態は、ローカルリンク611及びグローバルリンク610を通してDMR602に連結されたDMR601を含む。DMR601は更にPE603に連結され、またDMR602もまた更にPE603に連結される。
【0102】
DMR601では、グローバルリンク610及びローカルリンク611はクロスバースイッチ604に連結され、クロスバースイッチ604は更にグローバルポート605及びローカルポート606に連結される。DMR602では、グローバルリンク610及びローカルリンク611はクロスバースイッチ607に連結され、クロスバースイッチ607は更にグローバルポート608及びローカルポート609に連結される。
【0103】
動作中、DMR601のローカルポート606から伝送されるデータは、ローカルリンク611に連結できる。この例では、クロスバーは入力ポート側にしかない。あるいは、グローバルポート605から伝送されるデータは、クロスバースイッチ604によってローカルリンク611に又はグローバルリンク610に連結できる。ここでもまた、グローバルポート605からのデータはグローバルリンク610からしか出ることはできない。同様に、DMR602がグローバルリンク610を介して受信したデータは、クロスバースイッチ607を通してローカルポート608又はグローバルポート609へとルーティングできる。クロスバースイッチ604は直進又は交差の2つのアクティブ状態しか有さないことに留意されたい。例えばグローバルリンク610がローカルポート608に接続された場合、ローカルリンク611はグローバルポート609にしか接続できず、またグローバルリンク610がグローバルポート609に接続された場合、ローカルリンク611はローカルポート608にしか接続できない。
【0104】
なお、図6に示す多重プロセッサアレイのIN内のノード間リンクの実施形態は、単なる例である。他の実施形態では、双方向及び時分割接続を含む異なる数及びタイプのDMR間接続が可能であり、考察の対象となる。
【0105】
図7は、DMR内の可能な内部ルートを示すブロック図である。図示した実施形態では、DMR700はローカルポート701、703、705、707、グローバルポート702、704、706、708を含む。DMR700は更にローカルメモリ709を含む。図7に示す実施形態では、ローカルポート701はローカルポート703、705、707に連結される。ローカルポート701は更にローカルメモリ708に連結される。いくつかの実施形態では、上述の連結は、既に比較的詳細に説明したようにRCMによって設定でき、またこの連結によりDMR700において直通ルートを実現できる。例えば隣接するDMRからローカルポート701に伝送されるデータは、ローカルポート703、705、707のいずれかの出力部分を通過できる。更にローカルポート701を通して受信されたデータは、ローカルメモリ709に記憶できる。図7に示すポートの数並びにポートの構成及び内部ルーティングは単なる例である。様々な実施形態では、異なる数のポート及び異なる構成の内部ルーティングを使用してよい。
【0106】
図8は、MR内の可能なグローバルルートを示すブロック図である。図示した実施形態では、DMR800はローカルポート801、803、805、807、グローバルポート802、804、806、808を含む。
【0107】
図8に示す実施形態では、グローバルポート802はグローバルポート804、806、808に連結される。いくつかの実施形態では、上述の連結は、既に比較的詳細に説明したようにRCMによって設定でき、またこの連結によりDMR800において直通ルートを実現できる。例えば隣接するDMRからグローバルポート802に伝送されるデータは、グローバルポート804、806、808のいずれかの出力部分を通過できる。
【0108】
図8に示すポートの構成は単なる例である。他の実施形態では、異なる数のポート及び異なる配置のポートが可能であり、考察の対象となる。
【0109】
図4〜8に示す上述の実施形態では、入力スイッチ制御論理は設定可能なプロパティを有してよい。図9は、例示的な入力スイッチ制御プロパティを示す表である。ローカル(層A)上に残るようプログラムされた入力用経路ルートに関して、入力ルータポートAは入力ルータポートBよりも高い優先度を有してよい。入力グローバル(層B)ルートの場合、入力ルータポートBは入力ルータポートAよりも高い優先度を有してよい。しかしながら、入力ルータポートAと入力ルータポートBとが同一のリソースを要求する場合、要求のタイプに応じて、高優先度のポートは入力スイッチ状態を制御することによってリソースへのアクセスを制御でき、低優先度のポートは、要求されたリソースが利用可能である場合はこれに続くことができ、上記リソースが利用できない場合はストールしてよい。図9の表にこのような優先度を示す。
【0110】
図9のルーティングの表は、層切り替え制御論理ハードウェアが経路設定中に、ノードの現在の状態及びノードに提示される方向切り替え要求に基づいて層の切り替えの選択を実行できるようにする、例示的なルーティングプロトコルの半自動モードに対応する。このモードは、方向の要求のみを特定する最小サイズのnunitを含むフリットを処理するにあたって有利であり、場合によっては他の経路からのブロックを回避できる。
【0111】
例示的なルーティングプロトコルの非自動モードでは、制御論理ハードウェアは、データパス切り替え(層又は方向)の選択を行う自由を有することができず、その代わりに、到着するヘッダのフリットの現在のnunitにおいて上記選択を符号化する必要があり得る。このモードは、半自動モードよりも多くのnunitを必要としてよく、これらには、これに比例してより多くのヘッダフリットが適合され、これによりワームホールルーティングされた通信経路を設定できる。このモードは、ソフトウェア開発ツールスイートによる経路位置の正確な制御のために有利であり、これはアプリケーションソフトウェアが必要とするパスに対する極めて広い視野が得られ、またこれにより、他の経路には見えないパスの選択によって得られるものよりも、ブロック及び利用不可能な経路を回避するために良好に装備される。
【0112】
層及び方向切り替えのための設定可能な制御論理の使用はマルチモードルーティングプロトコルをサポートする。例示的なHyperX DMRでは、現在の構成は、アプリケーションソフトウェアに対してR/Wアクセス可能なDMRの内のレジスタによって保持される。各DMRは、他のDMRとは独立して構成してよく、従って、ワームホールルーティングされる経路を設定するためのヘッダのフリットは、遭遇するよう構成されたDMRの予期されるモード設定に応じて、様々なサイズのnunitを有するものとすることができる。
【0113】
ストール及び再試行
クロスバースイッチは、両ポート(A、B)がローカル(層A)アクセスを要求する場合を除いて、インバウンド経路設定のあらゆる場合を実装できことに留意されたいる。両ポートがローカルアクセスを要求すると、クロスバースイッチは入力ルータポートBをストールすることができる。いくつかの実施形態では、クロスバースイッチはアクセスを可能とすることができるが、下流のファブリック優先度論理は要求をストールしてよい。タイミングへの影響を最小化するために、クロスバースイッチは、現在のヘッダフリットの要求及びクロスバー状態のみを使用する最小の論理に基づいて適切な状態への切り替えを行うように設計してよい。下流での更なるストールは考えられない。これは、その状態において限定された知見に基づいて潜在的に良好でない決定が行われ得る場合に発生し得る。
【0114】
これらの場合は全て、以下のような条件の単一のセットによって説明できる。
【0115】
入力クロスバーは、既存のアクティブなトランザクションに対して現在「ロック」されていない。
【0116】
グローバル要求は、Aポート及び/又はBポートに到着する第1のヘッダによって行われる。
【0117】
優先度スキームに基づいて、第1のヘッダフリットは、B’(グローバル)バスに配置されて、Goポート論理に送信され得る。
【0118】
このGoポート論理は、(異なる方向からの)別の経路によって既に使用されているか、又は同一のサイクルにおいてより高い優先度の方向から第2のヘッダフリット要求を受信している。
【0119】
これらの条件の下で、第1のヘッダフリットは、入力クロスバーから下流でストールすることになり、従ってGoポートが利用可能になるのを待機しなければならない。
【0120】
このような場合、要求されたルート方向に関連するOutポート(層A)がグローバルルートのために利用可能となるものの、上記論理は、このことを検出するために単一のサイクルで実行するには複雑過ぎるものとなり得る。このような場合、「ストール及び再試行」タクティックを使用してよい。上述の条件が発生した場合、要求をストールしてよく、同一のクロックサイクル全体の間に、必要な論理全てを評価して、層切り替え入力クロスバーによる異なる決定がクリアなパスを提供するかどうかを決定してよい。クリアなパスが提供される場合、関連する情報を次の立ち上がりクロックエッジに登録してよく、いずれの新規の要求に関して再試行を評価してよい。(同一の又は他のポートにおける)いずれの新規の要求も上記再試行と競合しない場合、この再試行を承認してよく、代替のパスにおいてルートを完成できる。
【0121】
上述の方法により、限界速度のパスを発生させるようなサイクルの論理に過剰な負荷をかけることなく、第1の要求サイクルにおいて全ての条件が考慮されるかのように、グローバルルートファブリックを完全に使用できる。ルート設定はなお、ファブリックの現在の状態に基づく決定論的なものであるが、ルートは、再試行が必要である場合、DMRを通過するための追加のサイクルを取り得る。
【0122】
図9の表に示す優先度は単なる例である。他の実施形態では異なる優先度も可能であり、考察の対象となる。更に様々な実施形態では、クロスバーは、(例えばnunit/フリットプログラミング及び制御レジスタ等の)ハードウェア若しくはソフトウェア又はこれらの組み合わせによって制御してよいことに留意されたい。
【0123】
図10は多層ルーティングの例を示す。図示した実施形態では、PE1006はワームヘッダを生成することにより、DMR1001の東ポートからDMR1003の西ポートまでルーティングする。ルートはルータポートA又はDMR1001から始まり、そしてDMR1002へと続く。DMR1002に到達すると、DMR1002の層切り替え入力クロスバーは、ルータポートB(グローバルポート)を用いて、ワームをDMR1003へと前方へ送信することを決定する。DMR1003に到達すると、DMR1003の層切り替えは、ルートをローカル(層A)入力ポートへ戻るように切り替え、ワームホールパスをそこで切断できる。
【0124】
また図10は、DMR1005の北ポートからDMR1004の西ポートへ向かう、PE1007によって生成されるワームルートを示す。このルートはDMR1005のルータポートA(北)から始まる。図9に示す優先度の表を参照して既に説明したように、ルートはDMR1001のルータポートB(東)へと切り替えられる。ルートは、入力クロスバースイッチの固定状態(例えばクロスバースイッチは、上述のように、PE1006が確立したルートによってある方向に既に設定されている)により、DMR1002のルータポートA(西)へと切り替えられる。同様の理由で、ルートはDMR1003においてグローバルルーティングレベル(レベルB)に戻るように切り替えられる。ルートはDMR1003を出て、ルータポートBを介してDMR1004に入り、ローカル入力ルートポートへと切り替えられ、ここでワームホールルーティングが切断される。
【0125】
なお、図10に示したルートは単なる例である。他の実施形態では、異なる数のルート及び異なるルートパスが可能である。
【0126】
セキュリティバイパスルーティング
MPAチップのある領域は、MPAチップの他の領域に対して保護される必要があり得る。様々な理由から、MPAチップのある領域は、デバイス制御、IPライセンス発行、ユーザ認証等に関連する、又は適切な動作に対して重大なアルゴリズムを動作させる、完治可能なデータを含んでよい。その一方でMPAの別の領域は、安全であることが確認されていないソフトウェアを実行してよい。様々な理由(このソフトウェアは新規のものであり、かつ多くのバグを有し得る、又は安全性確認のためにソースコードが利用できない、又はソフトウェアの確認が非経済的となる程にソフトウェアが巨大かつ複雑であり得る)から、未確認のソフトウェアが存在し得る。未確認のソフトウェアはウイルス又はスパイウェアを含み得る。
【0127】
ワームホールルーティングされた通信パスは、ある領域においてソース供給され、別の領域をプロービングし、データ又は命令をコピーイン又はコピーアウトするように設計してよい。この種のプロービングを防ぐために、DMRのリンク及びポートを、設定可能に無効化できるよう設計してよい。上で参照した米国特許出願第13/274138号を参照されたい。一実施形態では、関連するDMRリンク及びポートが図8Aポートに示されており、円形の特徴部分はメッセージトラフィックを無効化できる点である。また図8には、シリアルバスへのSBSインタフェースの構成レジスタも示されており、これは、DMRポート/リンクのそれぞれを無効化するよう個別のビットを書き込むことができるように設計されていてよい。シリアルバスは、構成及びデバッグ目的で使用できる、チップ上の低帯域幅二次相互接続ネットワーク(secondary interconnection network:SIN)であってよい。
【0128】
図19は、フリーハンドの境界線で範囲を定められた領域を有するMPAを示し、上記領域は、この境界において通信経路を無効化することによって保護できる。保護された領域内の通信パスは、境界において無効化された通信によって影響を受けない。しかしながらこの境界で区切られた領域は十分に大きく、保護された領域の各側のPEの間の通信の障害となる。よって、保護された領域の安全性を損なうことなく、保護された領域を横断するように保護されていないメッセージをルーティングするための方法が必要となる(ここでは「セキュアバイパスルーティング(Secure Bypass Routing)と呼ぶ)。
【0129】
セキュアバイパスルーティングは、ワームメッセージを、ローカルメモリ及びPEポートへの接続から設定可能に制限できるように、DMRを設計することによって達成できる。DMRは、メモリ及びPEポートをローカル層Aのデータパスのみに直接接続し、層スイッチ(入力クロスバー)によって間接的に接続される以外は他の層のデータパスに接続しないよう設計してよい。このDMRの実施形態では、ワームメッセージ層の切り替えは入力クロスバーに制限され、ワームメッセージがDMRの層を切り替えるのを防ぐ方法は、クロスバーを前方直進状態にロックすることである。
【0130】
2層INに関して、クロスバーは(直進又は交差の)2つの状態しか有さない。これらのクロスバーが直進状態にロックされると、いずれのインバウンドワームメッセージは、同一層上のクロスバーから出るように制約を受ける。図5Aに示す実施形態では、ローカル層A上に入ってくるワームメッセージは、層AのOUTPORTに出ることができ、又はこれらはINPORTにおいて切断できる。グローバル層B上に入ってくるワームメッセージは、層BのGOPORT上にしか出ることができない。
【0131】
3層以上のINに関して、クロスバーは多くの状態を有してよく、いずれの入力層からローカル層Aへの接続を含んでよい。これらの「ローカルINPORTへの接続」状態がロックされた状態である場合、上側の層へのインバウンドワームメッセージは層を切り替えるもののINPORTからは排除され、INPORTを安全なまま維持できる。いくつかの状況では、上側の層のインバウンド通信経路のうちのいくつかがDMRのINPORTに到達できるようにすることが望ましい場合があり、これは、DMR構成レジスタにおいてより多くのプログラミングビットに適合できる。
【0132】
図19は、安全な領域上の保護されていない通信経路を示し、ここで点線は、保護された領域全体に亘るグローバル(層B)リンク上を通過するルートを示し、これは上記保護された領域内で始まらず、又は終端しない。
【0133】
図20に示す実施形態では、安全な領域上のバイパスを生成するためのイベントのシーケンスを以下の例において説明する。なお、この例では、用語「config−reg」は構成レジスタ(configuration register)の略語である。
・PE(0,0)及びDMR(1,1)を保護する(Route−over方式で)。
−PE(0,0)を設定する:IMをロードし、更なるR/Wから保護する。
・必要な場合、PE(0,0)を再設定するためにSBS(0,0)config−regを設定する。
・SBを通してPE(0,0)の全てのIMを書き込み、任意に確認する。
・IMバスを無効化するためにSBS(0,0)config−regを設定し、SBSconfig−regをロックする。
・任意にSBS config−regを読み出し、ロックされていることを確認する。
−DMR(1,1)を設定する。
・必要な場合、DMR(1,1)を再設定するためにSBS(1,1)config−regを設定する。
・任意にDMR(1,1)を初期化して確認する。
・北ポート及び東ポート並びにIMバスを無効化してconfig−regをロックするために、SBS(1,1)config−regビットを設定する。
・任意にSBSconfig−regを承認し、IMバスをロックする。
・全てのAポートを無効化し、入力クロスバーロッカービットを設定する。
・PEバスNE、NW、SEを無効化し、構成をロックする。
−DMR(1,1)は、PE(0,0)のみがそのDM又はレジスタへの読み書きアクセスを有しかつPE(0,0)が保護されているため安全であり、DMRポート又はSBSに到着するメッセージは無視される。
−PE(0,0)及びDMR(1,1)を保護した後、これらと相互作用しない多数の可能なバイパスルートが存在する。例えば、DMR(1,0)の北に位置するDMR(2,0)(図示せず)のクイックポートを使用するPE(1,0)は、A層上のDMR(1,1)に到着するDMR(2,0)の南クイックポートにヘッダフリットを書き込んでよく、続いてB’層に切り替えられる。バイパスルートは、B層上のDMR(1,1)へのリンク上で継続してよい。DMR(1,1)の内部では、バイパスルートはヘッダフリット内のnunit情報に従って、北、南又は東へと進んでよい。nunitが南を選択したとすると、バイパスルートは、DMR(0,1)上で継続することになり、ここでB層上で継続され得るか、又は安全な領域の外側であり得、A層へ切り替えられて継続され、ルーティング又は切断を実行してよい。
【0134】
例示的なHyperX DMRノードにプロトコルを実装するための制御論理及びデータパス切り替えは、初めに層切り替えクロスバー、続いて方向切り替えルータの2段階で実施される。あるいは他の実装形態では、方向切り替えを初めに実施し、続いて層切り替えを実施してよい。他の実装形態では、これら2つの段階を1つの切り替えに統合してよい。あるいはプロトコル及び切り替えは3以上の段階で実装してよい。
【0135】
例示的なDMRルータの実装形態は、多層スイッチのうち2層バージョンである層切り替え(入力クロスバー)を有し、その一方で例示的な方向切り替えは多層スイッチのうち3層バージョンである。本発明はこれらのスイッチ構成部品のいずれに関しても、この例示的なDMR実装形態の層及び方向の数に対して制限を与えるものではない。このコンセプトは、上記例示的実施形態に若干の修正を加えることにより、多数の層及び多数の方向へと容易に敷衍できる。これらの敷衍形態は、更なるIN接続次元数をサポートする。
【0136】
例示的なHyperXアーキテクチャで使用される、ここで説明したワームホールルーティング方法は、継続ヘッダフリットを用いることにより、無限のアドレススペースを提供する。短距離通信に関しては、必要となるのは単一のヘッダフリットのみであり得る。DMRが非切断nunitを1つだけ有する第1のヘッダフリットに遭遇すると、DMRはnunitが特定する方向選択を実施し、第1のフリットを破棄し、第2のフリットを第1のフリットとし、ワームメッセージを次のDMRへと前進するよう送信してよい。MPAチップの多くに亘って広がるMPAを通過するために必要な場合は、極めて長いヘッダを構成してよい。ワームメッセージのヘッダの有限アドレス指定には、ワームの目的地アドレスを指定するために固定数のビットを使用する。有限アドレス指定は、低次元INに関してはここで説明した多層による方法に干渉しないが、INの次元数が増加するにつれて低効率となり得る。
【0137】
自動迂回ルーティングを提供するために、ルーティングエンジンは、ルートの過密に関する局所的な情報及びより全体的な情報の両方を用いて、過密ポケットの周りでルートを迂回させることができる。経路ルートは通常どおりヘッダフリット内に設計及びプログラムしてよく、経路に沿って過密に遭遇した場合、設計されていない迂回を形成することによってこれを回避できる。INノードのルーティング制御機構は、この迂回を単独で、又はローカルノード若しくはグローバルノードである近隣のノードからの情報を組み合わせて計算できる。ノードは迂回を達成するために、必要に応じてnunit又はヘッダフリットを追加でき、その後ワームメッセージは、その事前に設計されたルート上で目的地へと継続できる。ルート情報に時間情報も含まれている場合、過密の推定期間もパスの決定の一部として使用できる。全体として、これは上述の固定パス方法に対して過密回避を適用したものである。
【0138】
過密は、図24のブロック図が示す方法によって決定してよい。この図では正方形のボックスはDMRを表す。中央の「A」と標識されたDMRは、近隣のDMRから過密情報を収集することにより、以下のようにして過密を決定できる。周辺のDMR(B1〜B8)は、DMR Aに、局所的な過密情報と全体的な過密情報との両方に対するメトリックを提供できる。DMR B1からDMR Aへの単一のメトリックは、DMR B1の過密レベルに関してDMR Aがこれ自体を観察することを示す。これはローカル過密メトリクスである。DMR B1はまた、DMR Aの近隣のものではない近隣のDMRから情報を収集することによって、グローバル過密メトリクスをDMR Aに提供する。図22ではこれらのDMRに「C」と記している。同様にDMR B2はローカル過密メトリクスをDMR Aに提供する。これはまた、DMR Aの近隣のものではない近隣のDMRから情報を収集することによって、グローバル過密メトリクスをDMR Aに提供する。図22ではこれらに「D」と記している。図22に示すように、これをDMR Aの近隣のDMRA全てに関して繰り返す。なおこの過密決定方法は複数の次元に拡張でき、更に離れた近隣のDMRからの情報を使用して、PINのトポロジ及び自動迂回ルーティングを計算するアルゴリズムの必要性によって要求されるように、全体的な過密を決定できる。
【0139】
リンク帯域幅の改善
2つのDMRユニット間のいずれのリンクの帯域幅を増大させる、いくつかの方法が存在する。1つの方法は、1つのリンクに対するトレース(ワイヤ)接続の数を増加させることである。別の方法は、ダブルデータレート(double data rate:DDR)等のより高速なプロトコルでリンク層を動作させることである。更に別の方法は、同一の物理層における論理ルートの時分割多重化(time division multiplexing:TDM)を含むことである。TDMに関して、リンクから生じるデータのストリームを確実に多重分離することが重要である。1つの単純な方法は、物理的リンクを通して送信されるフリット1つあたりのビット数を増加させることであり、追加されるビットはタグである。タグビットは、残りのビットが属するワームメッセージのためのコードを備える。nビットのタグは、最大2n個の異なるワームメッセージを符号化でき、上記ワームメッセージの長さはそれぞれ無制限である。他のモードは各ワームメッセージを複数のパケットに分割して、各パケットにヘッダフリットを適用できる。これらのパケットのヘッダフリットは、メッセージ識別子と、多重分離を支援するためのその他の情報とを含んでよい。
【0140】
ダイレクトメモリアクセスFIFO
上述のもの等の多重プロセッサアレイ(MPA)を使用して、複雑なアルゴリズムを用いて高速データストリームを処理できる。このようなデータストリームは連続的であることが多く、一定のレートで到着及び出発する。しかしながら、メモリのデータを、1度に1つのブロックを処理する様式で処理するには、PEが更に適しており、従って連続的なデータストリームに対してミスマッチが存在する。この問題の1つの解決策は、メモリの一部を、バッファとも呼ばれるバッファメモリとして使用するために割り当てることである。典型的には、バッファはアプリケーションソフトウェアによって特定され、これはMPAを動作させるためにコンパイルされたものである。バッファは、コンパイル時間において静的に、又は動作中に動的に割り当ててよい。いずれの特定のアプリケーションソフトウェア内には、例えばデータストリームの分析及び合成に使用される、多くのバッファが存在してよい。上述のように、用語「アレイ」はいずれの次元数を暗示することを意図したものではない。
【0141】
メモリバッファ(ここでは「バッファ」と呼ばれる)は、多重プロセッサアレイ内のデータパスに伸縮性を提供できる。例えばバッファは、(平均入力データレートと平均出力データレートとが適合している場合に)短期間のデータレート変動を吸収できるものであってよい。いくつかの用途では、高レートデータストリームを複数の低レートデータストリームに分割する必要がある場合がある。あるいは他の用途では、複数の低レートデータストリームを結合して単一の高レートデータストリームとする必要がある場合がある。このような操作は、いずれのデータストリーム内にデータの損失又は複製が存在しないことを必要とし得る。
【0142】
PEを用いて、メモリバッファに割り当てられているメモリの一部分にデータを記憶してよい。同一のPE又は別のPEを用いて、バッファからデータを取得してよい。しかしながら、このようなデータ記憶及び取得方法は、PEの性能を十分に活用していない。いくつかの実施形態では、より簡単なダイレクトメモリアクセス(DMA)エンジンを用いて、バッファにアクセスしてデータを移動させることにより、他のより複雑なタスクのために使用できるようPEを解放するか、エネルギを節約するためにPEをアイドル状態とすることができる。
【0143】
いくつかの実施形態では、DMAエンジンは、ポートとローカルメモリとの間でデータを伝送する作業のほとんどを実施できる。PINポートが、同時に動作する入力部分及び出力部分の両方を含む場合、各部分に対して別個のDMAエンジンが必要となり得る。
【0144】
図11を参照すると、DMAエンジンのブロック図が示されている。DMAエンジン1101は、アドレス生成器1102、メモリインタフェース1103、ネットワークI/O1104、制御レジスタ1105を含む。メモリインタフェース1103は、例えばSRAM等の外部メモリに連結してよい。様々な実施形態では、ネットワークI/O1104は、外部I/Oポート又は多重プロセッサアレイのいずれの適切な内部ポートに連結してよい。
【0145】
アドレス生成器1102は、多数の可能なカウンタ構成のうちの1つに従って設計されたカウンタを含んでよい。いくつかの実施形態では、カウンタは、事前に決定された値に再設定されるよう構成してよい。アドレス生成器1102はまた、例えば加算器等の回路も含んでよく、この回路は、カウンタの出力に追加のデータを組み合わせて、メモリにアクセスする際に使用できるアドレス値を形成するよう構成される。アドレス生成器1102は、インデックス値を記憶するよう構成された別個のカウンタも含んでよい。
【0146】
制御レジスタ1105は、1つ又は複数のラッチ、フリップフロップ、又は他のいずれの適切な、DMAエンジン1101のための制御情報を記憶するよう構成されたストレージ回路を含んでよい。例えば制御レジスタ1105は、データ伝送方向、開始アドレス、アドレス値間の増分(一般に「ストライド(stride)」と呼ばれる)等に影響を及ぼすことができる情報を記憶できる。いくつかの実施形態では、多重プロセッサアレイのための初期化又はブート手順により、制御情報は制御レジスタ1105に書き込まれていてよい。
【0147】
メモリインタフェース1103は、様々なメモリインタフェース方法のうちの1つを使用して構成してよい。いくつかの実施形態では、メモリインタフェース1103は、例えばクロック等のタイミング信号、モード選択信号、アドレス値、入力データ値を、DMAエンジン1101の外部のメモリに提供してよい。外部メモリは、多重プロセッサアレイ内にあっても、多重プロセッサアレイの外部にあってもよい。様々な実施形態では、外部メモリは、ダイナミックランダムアクセスメモリ(DRAM)、SRAM、読み出し専用メモリ(read−only memory:ROM)、又は例えばFLASH等の不揮発性メモリを含んでよい。
【0148】
なお、図11に示すDMAエンジンの実施形態は単なる例である。他の実施形態では、異なる機能ブロック及び異なるブロック構成が可能であり、考察の対象となる。
【0149】
プロトコルを用いて、バッファに入力されるデータ及びバッファから出力されるデータを整合させることができる。このようなプロトコルは、データがバッファ内で上書きされるのを防止でき、また他の実施形態では、バッファ内のデータの複製を防止できる。プロトコルは入力−出力データシーケンスによって分類できる。2つの一次シーケンス、即ち先入れ先出し(FIFO)及び先入れ後出し(FILO)が存在する。FIFOでは、データの順序を変化させることはできないが、FILOではデータの順序を逆転できる。
【0150】
図12を参照すると、DMAエンジンを動作させるための方法の実施形態が示されている。図11、12を併せて参照すると、本方法はブロック1201から始まる。続いて初期アドレス及びインデックスが初期化される(ブロック1202)。いくつかの実施形態では、初期アドレスをアドレス生成器1102のカウンタにロードできる。初期インデックス値はまた、アドレス生成器1102が含む別のカウンタにも記憶できる。
【0151】
そしてメモリからデータの語を読み出すことができる(ブロック1203)。いくつかの実施形態では、メモリインタフェース1103は、アドレス生成器1102が提供するアドレス値を用いて、DMAエンジン1101の外部のメモリにアクセスしてよい。外部メモリから読み出されたデータは、メモリインタフェース1103に一時的に記憶させてよい。続いて読み出しデータ語をPINポートに書き込んでよい(ブロック1204)。様々な実施形態では、データ語をPINポートへと出力するために、メモリインタフェース1103からネットワークI/O1104へ伝送してよい。
【0152】
次に、現在のアドレスを増加させる(ブロック1205)。いくつかの実施形態では、現在のアドレスを、制御レジスタ1105のうちの1つに記憶できるストライド値だけ増加させてよい。そしてインデックス値を減少させる(ブロック1206)。いくつかの実施形態では、インデックス値を減少させる量もまた、制御レジスタ1105に記憶できる。そして本方法は、この減少したインデックス値に依存したものとなる(ブロック1207)。
【0153】
減少したインデックス値が、事前に決定された閾値よりも大きい場合、増加したアドレス値を用いて新規のデータ語をメモリから読み出し(ブロック1203)、本方法を上述のように続行する。減少したインデックス値が、事前に決定された閾値以下である場合、本方法を終了する(ブロック1208)。いくつかの実施形態では、上記事前に決定された閾値はゼロであってよいが、その他の値も可能である。
【0154】
なお、図12に示す方法は単なる例である。他の実施形態では、異なる操作及び異なる操作順序も可能であり、考察の対象となる。更に用語「増加させる(increment)」及び「減少させる(decrement)」は、これに関連する操作を加算及び減算に限定することを意図したものではない。というのは、負の数の加算は減算と同じ結果をもたらし、負の数の減算は加算と同一の結果をもたらすからである。同様に、用語「よりも大きい(greater than)」及び「よりも小さい(less than)」も限定を意図したものではない。
【0155】
図13では、DMAエンジンを操作する別の方法が図示されている。図11、13を併せて参照すると、本方法はブロック1301から始まる。続いて初期アドレス及びインデックスが初期化される(ブロック1302)。いくつかの実施形態では、初期アドレスをアドレス生成器1102のカウンタにロードできる。初期インデックス値はまた、アドレス生成器1102が含む別のカウンタにも記憶できる。
【0156】
そしてPINポートからデータの語を読み出すことができる(ブロック1303)。いくつかの実施形態では、データ語はネットワークI/O1104によって受信でき、一時的に記憶するためにメモリインタフェース1103に伝送できる。その後、アドレス生成器1102が提供するアドレス値を用いて、受信されたデータ語をメモリに書き込んでよい(ブロック1304)。
【0157】
次に、現在のアドレスを増加させる(ブロック1305)。いくつかの実施形態では、現在のアドレスを、制御レジスタ1105のうちの1つに記憶できるストライド値だけ増加させてよい。そしてインデックス値を減少させる(ブロック1306)。いくつかの実施形態では、インデックス値を減少させる量もまた、制御レジスタ1105に記憶できる。そして本方法は、この減少したインデックス値に依存したものとなる(ブロック1307)。
【0158】
減少したインデックス値が、事前に決定された閾値よりも大きい場合、増加したアドレス値を用いて新規のデータ語をメモリから読み出し(ブロック1303)、本方法を上述のように続行する。減少したインデックス値が、事前に決定された閾値以下である場合、本方法を終了する(ブロック1308)。いくつかの実施形態では、上記事前に決定された閾値はゼロであってよいが、その他の値も可能である。
【0159】
なお、図13に示す方法の操作は、順次実施されるものとして示されている。他の実施形態では、これらの操作は並行して、又は異なる順序で実施してよい。
【0160】
図12、13に示すようなDMAの操作中、メモリ内でのデータの上書き又はデータの複製を防止するために注意を払わなければならない。いくつかの実施形態では、PIN又はローカルメモリがDMAエンジンからデータを受け取ることができない、又はDMAエンジンにデータを供給できない場合、DMAエンジンはストールしてよく、即ち読み出し又は書き込み動作を実行しなくてよい。このような場合、DMAエンジンは最近読み出した又は書き込んだデータ語を、後に使用するためにレジスタに記憶させることができる。また、上記ストールに関する情報は、DMAエンジンのポート側からDMAエンジンのメモリ側へ、及びその逆方向へと伝播してよい。例えばPINポートからビジー状態が示されると、DMAエンジンをストールして、メモリインタフェースを通した読み出し又は書き込み要求を停止してよい。
【0161】
データストリームはバッファのサイズより長い場合がある。このような場合、データの入力(充填(fill))プロセスとデータの除去(排出(drain))プロセスとを調整して、データの損失又は複製を防止する必要があり得る。いくつかの実施形態では、2つのバッファ(一方は充填され、他方は排出されている)を利用してよい。この技術は一般に「ダブルバッファリング(double−buffering)と呼ばれる。動作中に充填されているバッファがいっぱいになった場合、入力データストリームを、排出中のバッファに切り替えてよい。同様の切り替えは、排出中のバッファが空になった場合にも発生し、ここでは出力ストリームを充填中のバッファから読み出す。バッファの役割を切り替えるプロセスは「バッファの交換(swap of buffers)」と呼ばれることが多く、これはバッファメモリアドレスへのポインタを交換することによって実装できる。いくつかの実施形態では、どのアドレスが書き込まれているか及びどのアドレスが読み出されているかの追跡を続けるためにより洗練されたコントローラを用いて、2つのバッファの使用を単一のバッファに縮小してよい。
【0162】
ある形態の固定多重化はDMA FIFO論理を用いて達成できる。DMAエンジンはDMRよりも物理的に大幅に小さいため、DMRは複数のDMA書き込みエンジン及び複数のDMA読み出しエンジンを含むことができる。同一のバッファに対して作用する複数のDMAエンジンの統合制御により、複数のデータストリームを1つの出力ストリームに統合でき、又は反対に単一の入力データストリームを複数の出力データストリームに分割できる。また複数のDMAエンジンの統合制御は、データの損失又は複製を防ぐためのフロー制御論理との協働を含んでよい。固定されたインターリーブパターンを用いるため、統合制御の設計は比較的簡単であり、また入力ストリーム中のパケットの長さが全て同一である場合、制御論理を簡略化できる。しかしながらこれらは本発明を限定するものではない。
【0163】
上述のように、コントローラを用いて、単一のFIFOバッファメモリにアクセスする複数のDMAエンジンを調整してよい。コントローラは、別のDMAエンジンがFIFOバッファメモリへの書き込みを実行している間に、複数のDMAエンジンがFIFOバッファメモリからの読み出しを実行できるよう構成してよい。読み出し動作を実行するDMAエンジン(DMAR)の数は、最も近接したPINノードからメモリに向う双方向PINポートの数に左右され得る。このような構成により、DMAエンジンのみを用いた、即ちPEを必要しないデータ分割及び順序変更をサポートできる柔軟性を提供できる。
【0164】
データストリームのデータ順序変更及び分割をサポートするために、複数の読み出しストライドをサポートすることが必要となり得る。追加のハードウェアの複雑性という犠牲を払って、複数の書き込みストライドに対するサポートも利用してよい。いくつかの実施形態では、バッファ及び複数のDMAエンジンのシステムを通したデータ遷移のレイテンシを、論理回路の複雑性及び電力放散を犠牲にして調整してよい。
【0165】
複数のDMAエンジンのためのDMAコントローラは、単回DMA及び連続DMA、単一書き込み複数回読み出し、並びに単一読み出し複数回書き込みをサポートするよう構成してよい。いくつかの実施形態では、DMAコントローラ及び複数のDMAエンジンと組み合わせて使用されるFIFOバッファは、ハードウェア内で「完全に保護(fully protected)」されていてよく、即ちコントローラ及び関連するDMAエンジンがひとたび構成されると、いずれの追加のソフトウェア制御も必要ない。
【0166】
複数のDMAエンジンのためのDMAコントローラは、ポインタ比較及びストール状態検出のために構成された論理回路からなってよく、様々な実施形態では、これらの回路はモジュール式に構成してよい。例えばこれらの論理回路は、単一のFIFOバッファ動作をサポートするよう構成してよい。そしてこれら論理回路を、所望の数のFIFOバッファ動作をサポートするために必要ないずれの回数だけ複製してよい。様々な実施形態では、比較に使用するアドレスビットの数は、電力放散要件に応じて調整してよい。
【0167】
図14を参照すると、単一読み出し単一書き込み実装形態のためのポインタの可能な構成を示す図が図示されている。なお、図14に示す図は単一読み出し単一書き込みの場合を示しているが、例えば2回読み出し単一書き込みといった他の実施形態も可能であり、考察の対象となる。
【0168】
図14に示す各場合において、書き込みポインタが連続DMAモードのFIFOの始点へとラップされたことを示すために、WRAP値が使用される。書き込みポインタがラップされている場合、バッファに関連する読み出しポインタはFIFOの終点まで続いてよく、更なるチェックは不要である。上述の読み出しポインタがバッファの終点に到達すると、WRAP値はクリアされ、FIFOは通常モードに戻る。WRAP値がゼロである場合、読み出しストール状態が以下によって決定される:「(RD_PRT−WR_PRT)はゼロ以上である」。
【0169】
WRAP値が1である場合、読み出しポインタと書き込みポインタとの間の同様の比較により、書き込みストール値がゼロ以上となる。図14に示す残りの場合は、読み出し及び書き込みのいずれに関してもストールが発生していない。
【0170】
図14に示す例では、場合1、2、6、7は単回DMA動作に適用可能である。DMA FIFOが開始されると、読み出しポインタ及び書き込みポインタは場合1に従って組織される。FIFOへの書き込みは可能であるが、読み出しはストールされている。通常動作中(場合2を参照)、書き込みポインタは読み出しポインタに先行し、読み出し及び書き込みが共に可能である。場合によっては読み出しポインタは書き込みポインタに追いつき(場合7を参照)、これによって読み出しがストールする。FIFOへの書き込みが完了すると(場合6を参照)、書き込みポインタはFIFOの外部のアドレスを指してよく、FIFOの終点に到達するまで読み出しを続けてよい。
【0171】
図14に示す例では、場合6を除く全ての場合は、連続DMA動作に適用可能である。連続DMA動作において使用する場合、FIFO内の各読み出し/書き込みポインタのペアに対してWRAPビットを維持してよい。いくつかの実施形態では、ある種類のDMAのうちの2つ以上を、他の種類(例えば4回読み出し1回書き込み)のDMAのうちの1つと比較してよく、これにより2つ以上のラップビットが必要となる。様々な実施形態では、ラップビットは、DMAの構成に応じて異なる様式で利用してよい。
【0172】
多重読み出しの場合、単一の書き込みポインタがラップされた場合にラップビットを設定してよく、ラップが発生したことを各読み出しポインタが示すと、追加の各ラップビットをクリアしてよい。多重書き込みの場合、各書き込みポインタがラップされるとラップビットを設定してよく、読み出しポインタがラップを示すと、追加のラップビット全てをクリアしてよい。
【0173】
単一のFIFOバッファは、1つの入力及び2つ以上の出力を含んでよい。このような場合、2つ以上のポインタを比較して、FIFOバッファに接続されたDMAエンジンのためのストール信号を決定する必要があり得る。いくつかの実施形態では、上記比較は、1つのFIFOバッファに接続できるDMAエンジン間にこの比較機能が分散された場合の回路構成の複製及び追加のルーティングを回避するために、集中的に実行してよい。多重プロセッサアレイシステムの各DMRにおいて、ポインタの比較及びストール信号の生成のために構成された1つ以上の機能ブロックを利用してよい。DMA−FIFOバッファ及びコントローラは、SDRAMチップ等の外部メモリチップに特化したインタフェースを含むチップI/Oインタフェースにおいて実装してもよい。様々な実施形態では、FIFOバッファは、より高次元のメッシュに接続するために、いずれの適切な数の入力ポート及び出力ポートを含んでよい。
【0174】
図15を参照すると、ポインタ比較及びストールユニット(pointer compare and stall unit:PCSU)のある実施形態が図示されている。図示した実施形態では、PCSU1500は、DMA読み出しポインタ入力1501、DMA読み出し制御入力1504、DMA書き込みポインタ入力1502、DMA書き込み制御入力1503、DMA読み出しFIFOストール出力1510、DMA書き込みFIFOストール出力1511を含む。ポインタ入力は9ビットを含むものとして、また制御入力は4ビットを含むものとして示されているが、他の実施形態では、各種類の入力に関していずれの適切なビット幅を使用してよい。
【0175】
図15に示す実施形態では、DMA読み出しポインタ入力1501及びDMA書き込みポインタ入力1502は、比較器1505〜1508に連結される。様々な実施形態では、比較器1505〜1508は、上述の読み出しポインタと書き込みポインタとの間の差といった、いずれの適切な比較アルゴリズムを実装してよい。そして比較器1505〜1508の出力は、ストール論理1509に連結してよい。ストール論理1509に含まれる回路は、例えばAND、OR等のいずれの適切な論理関数を用いて比較器の出力を統合して、DMA書き込みFIFOストール出力1511及びDMA読み出しFIFOストール出力1510を形成してよい。
【0176】
なお、図15に示すPCSUは単なる例である。他の実施形態では、異なる機能ブロック及びブロックの異なる構成が可能である。
【0177】
特定の状況下では、PEに関して、メモリに対する読み書きを実施すること、FIFO構造に結び付けられていることが望ましい。いくつかの実施形態ではこれを、追加のDMRと、上述のDMA FIFOコントローラの機能のうち少なくともある程度とを用いて実現できる。図16を参照すると、PE読み出しFIFOのエミュレーションのブロック図が示されている。図示した実施形態では、通常ルートイン1605はDMR1601に連結され、DMR1601は追加のルート1606を介してDMR1603に連結される。DMR1603は更にPE1604に連結される。いくつかの実施形態では、DMR1601は単一書き込み、単一読み出しFIFO1602を含んでよい。この図では、1607はDMA−FIFOではなく、単に1606ルートリンクからの値を、PE1604が読み出すことができるまで保持しているDMR上のINPORT(入力ポート)である。このルートは、PEがある値を読み出すまでストールするか、又はPEは、次の値がポートにおいて利用可能となるまでストールする。
【0178】
動作中、DMA−FIFO1602は受信したデータを、通常ルートイン1605からINPORT1607を介してDMR1603へと送信してよい。続いて処理要素1604は、INPORT1607での読み出しをストールしてよく、これによってDMA−FIFO1602に記憶されたデータのローカルコピーがDMR1604を介して発生する。いくつかの実施形態では、処理要素1604は、追加のレイテンシが最小の状態でDMA−FIFO1602からデータを受信できるものであってよい。なお、図16に示す実施形態は単なる例である。他の実施形態では、異なる数及び配置のDMRブロック及び処理要素が可能である。
【0179】
様々な方法でプログラム可能なファブリック相互接続の伝送パス内に処理を挿入できる。この処理は、DMA FIFOモード及び通常伝送モードの両方のために存在できる。この処理の簡素なタイプとしては、ビットインターリーブ及びデインターリーブのようなものがある。他の簡素な処理としては、バイトの交換、バイトのパッキング及びアンパッキング、フィールドマスキング、加算及び乗算等の演算機能等が挙げられる。更に複雑な機能を実行してもよい。セキュリティ用途に関して有用な機能は、暗号化及び復号化である。DMAストリーミング機能に容易に適用できるものであり得るその他の計算は、CRC、パリティ、シフト、抽出、フィルタリングである。上述の例は単なる説明を目的としたものであり、本説明の範囲を限定するために使用することを意図したものではない。
【0180】
多くの状況において、メモリをスキャンして、スキャンされた全てのビットに応じたシグニチャを計算する必要がある。DMAエンジンは既に、メモリをスキャンするための一連のアドレスを生成するための手段を有しており、それほど高くない処理能力を追加することにより、例えば縦方向のパリティ、累計又は累積の計算を容易にすることができる。出力シグニチャは、アプリケーションソフトウェアにアクセス可能な1つ又は複数のレジスタに書き込んでよく、これによりこのアプリケーションにおいて結果を使用できる。
【0181】
1つの使用法は、2つ以上のデータアレイを迅速かつ効率的に比較して、これらが同一であるかどうかを試験するものであり、本方法は、1つのアレイに関するシグニチャを計算し、第2のアレイに関するシグニチャを計算し、続いてこれらシグニチャを比較するものである。各アレイにおけるシグニチャの計算は、同一のハードウェアで時間を分割して実施してよく、又は異なるハードウェアで空間及び/若しくは時間を分割して実施してよい。シグニチャの計算が同一であれば、同一のシグニチャ計算ハードウェアを両方のアレイで使用する必要はない。これにより、例えば異なるDMR又は異なるICチップでシグニチャの計算を実施できる。1つ又は複数のシグニチャ計算からのシグニチャの比較は、中心部で実施してよく、又はDMA内のハードウェアにおいて若しくはPEハードウェア上で実行されるソフトウェアにおいて複数の場所に亘って分散させてよい。いずれの場合においても、シグニチャの分散計算は、シグニチャ値を中心部へ又は比較場所の分散に沿って通信する必要があり得る。DMAエンジンは、あるアレイのシグニチャ値を比較のための目的地へと送達するワームホールルーティングのためのメッセージを発行するよう構成してよい。シグニチャメッセージは、これらが表すデータに比べて極めて大幅に短いものとすることができ、従ってより効率的に分散させることができる。
【0182】
データアレイ等価性の試験を、例えばモジュール三重冗長構成(triple modular redundancy:TMR)法において使用する。上記方法では、3つの(場合によっては誤った)計算から結果を得て、これらを等価性に関して比較し、2つ以上の結果が等価であればこれらの結果を正しいものとして受け入れることができる。各計算の結果が既に小さい場合、DMRシグニチャ計算は役に立たないが、結果が数十ワードを超える場合、DMAシグニチャ計算は、PEを用いてシグニチャを計算するよりも効率的となり得る。
【0183】
シグニチャ計算をハードウェアでサポートするという着想はDMAエンジンに限定されず、PEとその補助メモリ、即ちデータメモリ(data memory:DM)及び命令メモリ(instruction memory:IM)との間のアドレス及びデータストリームに対しても適用できる。図21は、PEとDMとの間のアドレス及びデータバスに接続されるサムチェックユニットの可能な構成を示す。これらは累計を計算することによってシグニチャを計算するが、他の演算処理及び論理処理を実装してもよい。サムチェックユニットの出力は、どの結果を受け入れるかを決定するためにモジュール冗長性「票決器(vote taker)」に送信してよい。
【0184】
好ましい実施形態との関連で以上の実施形態について説明したが、本明細書に記載した具体的形態に上記好ましい実施形態を限定することは意図されておらず、反対に、添付の請求項によって定義されるような本発明の精神及び範囲内に合理的に含まれ得るような代替例、修正例、均等物を上記好ましい実施形態が包含することが意図されている。
図1
図2
図3
図4
図4A
図4B
図5A
図5B
図6
図7
図8
図8A
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21
図22