JP4416658B2 - クラスタ型マルチプロセッサシステムの異なるノード上で実行中のプロセス間でのメッセージの明示的な通信のためのシステムおよび方法 - Google Patents

クラスタ型マルチプロセッサシステムの異なるノード上で実行中のプロセス間でのメッセージの明示的な通信のためのシステムおよび方法 Download PDF

Info

Publication number
JP4416658B2
JP4416658B2 JP2004546745A JP2004546745A JP4416658B2 JP 4416658 B2 JP4416658 B2 JP 4416658B2 JP 2004546745 A JP2004546745 A JP 2004546745A JP 2004546745 A JP2004546745 A JP 2004546745A JP 4416658 B2 JP4416658 B2 JP 4416658B2
Authority
JP
Japan
Prior art keywords
connection
data
buffer
processor node
transfer
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2004546745A
Other languages
English (en)
Other versions
JP2006504184A5 (ja
JP2006504184A (ja
Inventor
ディクソン,クリストファー
カリガ,デービッド
オコーナー,ジェームズ
ポズナノビック,ダニエル
Original Assignee
エス・アール・シィ・コンピューターズ・インコーポレイテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by エス・アール・シィ・コンピューターズ・インコーポレイテッド filed Critical エス・アール・シィ・コンピューターズ・インコーポレイテッド
Publication of JP2006504184A publication Critical patent/JP2006504184A/ja
Publication of JP2006504184A5 publication Critical patent/JP2006504184A5/ja
Application granted granted Critical
Publication of JP4416658B2 publication Critical patent/JP4416658B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1652Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
    • G06F13/1663Access to shared memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal

Description

関連特許出願との相互参照
この発明は、この発明の譲受人であるコロラド(Colorado)州コロラドスプリングス(Colorado Springs)のエス・アール・シィ・コンピューターズ・インコーポレイテッド(SRC Computers, Inc.)に付与された、2001年8月17日出願の米国特許出願連続番号第09/932,330号「デュアルインラインメモリモジュールフォーマットにおいて一連のマルチアダプティブプロセッサを採用したクラスタ型コンピュータ用スイッチ/ネットワークアダプタポート」("Switch/Network Adapter Port for Clustered Computers Employing a Chain of Multi-Adaptive Processors in a Dual In-Line Memory Module Format")に開示された主題に関連し、その開示はここに、その全体がこの引用により特に援用される。
著作権通知/許可
この特許文書の開示の一部には、著作権保護の対象となる資料が含まれる。著作権所有者は、誰でもこの特許開示の特許文書を米国特許商標庁の特許ファイルまたは記録のとおりに複製できるということに対して何ら異存がないが、その他の場合については、すべての著作権を何であれ保有する。以下の通知はソフトウェアおよびデータに当てはまり、適用可能な場合には図面も含めて、以下に説明される:(著作権)2002 エス・アール・シィ・コンピューターズ・インコーポレイテッド。
発明の背景
発明の分野
この発明は一般に、コンピュータおよびコンピューティングシステムの分野に関する。より特定的には、この発明は、コンピュータシステムクラスタの異なるノード上で実行中のプロセス間でメッセージを通信するために、合理化された、低レベルでユーザモードのデータ伝送メカニズムを実現するためのシステムおよび方法に関する。ここに開示される代表的な一実施例では、これらのプロセスは、スイッチ/ネットワークアダプタポート(SNAPTM、エス・アール・シィ・コンピューターズ・インコーポレイテッドの登録商標)とともに実現されてもよく、SNAP明示的通信機能(SNAPCFTM、これもエス・アール・シィ・コンピューターズ・インコーポレイテッドの登録商標)と命名される。
関連背景
場合によっては、多数のノードに及ぶアプリケーションがグローバルな通信に参加できるよう、クラスタ型コンピュータシステムをノードから構築し、各ノードはローカルに共有されるメモリアドレス空間を有するいくつかのプロセッサを含むことが望ましい。性能上の理由のため、オペレーティングシステムが転送ごとに関与することなくこの通信が実行されること、エンドツーエンドメッセージ待ち時間が最小限に抑えられること、およびこのメカニズムが利用可能なリンク帯域幅を効率よく使用することが重要である。全体的な使用可能性については、オペレーティングシステムが保護されたメモリアクセスを保持できるようにする態様で、各通信のソース(または「送信」)側がターゲットメモリを宛先に正確にアドレス指定(つまり「名前付け」)できるようにする手段を、このメカニズムが提供することが必要である。
通常、クラスタ型システムでの通信は、ネットワークインターフェイスまたは入力/出力(“I/O”)デバイスを介して起こる。これは伝統的に、メッセージを送信するため
にオペレーティングシステムの介入を必要としてきた。より最近では、ネットワークインターフェイスカードの中には、ミリネット(Myrinet)GM(ワークステーション、PC、サーバ、または単一ボートのコンピュータのクラスタを相互接続するために幅広く使用されている、高性能のパケット通信および交換技術)、仮想インターフェイスアーキテクチャ(“VIA”)、およびスケジュールド・トランスポート(“ST”)といったオペレーティングシステム(“OS”)バイパスインターフェイスを用いて、ユーザレベルの通信をサポートするよう設計されつつあるものもある。これらのOSバイパス対応インターフェイスは例外なく、ソースネットワークインターフェイスカード(“NIC”)と宛先ネットワークインターフェイスカードとの間のパケットベースの通信を中間ストレージなしで可能にするよう設計されてきた。そのため、「送信」側および「受信」側双方におけるバッファスストレージは限られており、どの接続に関連するデータもいつでも受信されるということを可能にするよう、動的に管理されなければならない。
非同期通信サポートに対する要件が存在すること(つまり、システムプロセッサはメッセージデータの伝送に積極的にかかわるべきではないこと)も、一般に仮定されてきた。その結果、既存のOSバイパス実現化例はすべて、アドレスマッピング/変換を管理するための複雑で時間がかかるスキーム、および直接メモリアクセス(“DMA”)伝送を採用している。
発明の概要
これに対し、ここに開示された、クラスタ型マルチプロセッサシステムの異なるノード上で実行中のプロセス間でのメッセージの明示的な通信のためのシステムおよび方法は、メモリが比較的低価格で、豊富にあり、所与の接続の両側に直接アクセス可能である環境向けに最適化されている。この発明によれば、大きく、静的に割当てられた、接続ごとのメモリバッファの採用によって、新しいタイプの通信プロトコルの作成が可能となり、このプロトコルでは、情報はポイントツーポイントで送信されてもよく、データは、受信側のSNAPがそれを受入れる準備ができるまで中間場所にストアされる。
この発明のシステムおよび方法は、非同期(つまり並行)通信を用いないかもしれない主として単一のアプリケーション環境において有利に作用する。これは、仮想−物理アドレスマッピング(およびアクティブなDMA伝送)の提供に関連するシステムハードウェアおよびソフトウェアの実質的な簡略化を可能にし、また、SNAPを一度に1つのプロセスまたはユーザに割当てることも可能にする。サービスを受ける接続を現在制御中のプロセスまたはユーザに関連するものに制限することによって保護が与えられてもよく、制御中のプロセスまたはユーザの仮想アドレス(“VA”)空間でシステムプロセッサが動作することによって伝送が達成されてもよい。
この発明はまた、固定された、単方向の、および/またはポイントツーポイントの接続であってもよい1つ以上の接続を通して達成されてもよいメッセージ伝送も含む。これらの接続の終点は「接続記述子」によって識別されてもよい。各接続記述子はインデックスを、SNAP(NICと比較)常駐接続状態テーブル(発信ローカル接続テーブル“OLCT”および着信ローカル接続テーブル“ILCT”)に提供してもよい。
この発明はさらに、接続に結合されてもよい、比較的大きく、静的に割当てられた、接続ごとのメモリバッファを含む。接続ごとのメモリバッファは、送信SNAPによって直接書込可能であってもよく、受信側SNAPによって直接読出可能であってもよい。この接続ごとのバッファは、接続の送信側および受信側が互いから実質的に切り離されることを可能にする。このため、ソースプロセッサノードからのプロセスデータは、受信側がデ
ータを受信できることを既に確立しておかなくても、送信側から接続ごとのバッファに書込まれてもよい。逆に、受信側の論理は、接続および/またはSNAPを現在制御しているプロセスの識別情報と各着信接続用に接続ごとのバッファの待ち行列に入れられるデータの量との組合せに基づいて、現在アクティブな接続を自由に選択する。後者の情報は、送信側および受信側のSNAP間で直接交換されてもよい制御パケット(インターネット・ポリシー・インスティテュート(“IPI”)パケット)によって提供されてもよく、着信接続状態(つまりILCTエントリ)を更新するために使用可能である。
この発明は、ソース側システムメモリと送信側SNAPとの間、および受信側SNAPと宛先側システムメモリとの間のデータのステージングも含んでいてもよく、ユーザモードで仮想アドレスベースのプロセッサのロード/ストアを、SNAP上のメモリマッピングされたウインドウ、プロセッサ、ターゲットメモリ間に有する。これは、接続およびその成分SNAPを、データ伝送(DMA)およびアドレス変換を行なう必要性から解放する。加えて、保護は、OSにより特権を与えられた動作の接続セットアップを行なうことによって、接続または個々のSNAPの制御を一度に1つのプロセスに制限することによって、また、制御中のプロセスにアクセス可能な接続を現在のスレッドに関連するものに制限することによって、保証されてもよい。
この発明のこれらの、および他の特徴と利点、ならびにこの発明のさまざまな実施例の構造および動作を、添付図面を参照して以下に詳細に説明する。
好ましい実施例の詳細な説明
この発明にはさまざまな修正および代替的な形態の余地があるが、その特定の実施例が図面に例として示されており、ここに詳細に説明される。しかしながら、図面およびその詳細な説明はこの発明を開示された特定の形態に限定するよう意図してはおらず、逆に、この発明は、添付された特許請求の範囲により定義されるようなこの発明の精神および範囲内に該当するすべての修正、均等物および代替物を網羅するものである、ということが理解されるべきである。
ここで図1を参照すると、米国特許出願連続番号第09/932,330号に開示されているような、DIMMフォーマットの一連のマルチアダプティブプロセッサを採用するクラスタ型コンピュータ用スイッチ/ネットワークアダプタポート(“SNAP”)を含むコンピュータシステム100の例示的な実施例の機能ブロック図が示されており、それは、データ転送速度を、その他の場合に周辺機器相互接続(“PCI”)バスから利用可能なデータ転送速度を越えて著しく向上させるために使用されてもよい。
図示された特定の実施例では、コンピュータシステム100は、関連するメモリおよびI/Oコントローラ104に結合された1つ以上のプロセッサ1020および1021を含む。動作時、コントローラ104は、PCI制御ブロック106から制御情報を送受信する。なお、この発明の代替的な実現化例では、制御ブロック106は特に、拡張周辺機器インターフェイス(PCI−X)、インフィニバンド(Infiniband)、アクセラレイティッド・グラフィックス・ポート(“AGP”)、またはシステムメンテナンス(“SM”)制御ブロックであってもよい。PCI制御ブロック106は、実質的に256MB/秒の速度でのデータ転送を可能にする、帯域幅が比較的低いPCIバス110によって、1つ以上のPCIカードスロット108に結合される。上述のこの発明の代替的な実施例では、カードスロット108は、それに代えて、AGPバス接続またはSMバス接続を含んでいてもよい。
コントローラ104はまた、実質的に2.1GB/秒またはそれよりも高速のデータ転
送速度が可能な、帯域幅がはるかにより高いDIMMバス116によって、多数のDIMMスロット114に従来通りに結合される。この発明のある特定の実現化例によれば、DIMM MAPエレメント112は、DIMMスロット114のうちの1つに関連しているか、またはその中に物理的に配置されている。DIMM MAPエレメント112とやり取りする制御情報は、PCIバス110とDIMM MAPエレメント112とを相互接続する接続118によって提供される。DIMM MAPエレメント112は次に、MAPチェーンポートに接続されたクラスタ相互接続ファブリック接続120によって、別のクラスタ型コンピュータMAPエレメントに結合されてもよい。DIMM MAPエレメント112はまた、ラムバス(Rambus)DIMM(RIMM)MAPエレメントも含んでいてもよい。
DIMMスロット114内に配置されたDIMMメモリはPCマイクロプロセッサ1020、1021用の主メモリ記憶場所を含むため、それは、プロセッサバスに電気的に非常に「近接」して、それにより非常に少ない待ち時間を提示するよう設計されている。前述のように、DIMMに関連する待ち時間がPCIバス110の待ち時間のたった約5%であることは珍しいことではない。本質的に、この帯域幅をコンピュータシステム100同士間の相互接続として利用することによって、非常に向上したクラスタ性能が実現され得る。
このため、DIMM MAPエレメント112などのプロセッサエレメントをDIMMスロット114のうちの1つに配置することにより、関連するユーザアレイは、通常のメモリ「読出」および「書込」トランザクションを受入れて、それらを相互接続スイッチまたはネットワークによって使用されるフォーマットに変換することができる。前述の特許および特許出願において開示されているように、プロセッサエレメントがDIMM MAPエレメント112であってもよいこの発明の一実施例では、DIMM MAPエレメント112は、それが他のボード上のプロセッサエレメントに結合されるようにする、チェーンポートなどの1つ以上のポートを含んでいてもよい。
たとえば一実施例では、2つ以上のボードは各々、DIMM MAPエレメント112などのプロセッサエレメントに結合されたDIMMスロットを有する。プロセッサエレメントは、ボードの各々の上に配置された少なくとも1つのマイクロプロセッサにも結合されてもよい。各プロセッサエレメントは、データを他のボード上のプロセッサエレメントに、または同じボード上のプロセッサエレメント同士の間で渡すためのクラスタ相互接続ファブリックに結合されたチェーンポートを含んでいてもよい。データはデータパケットとして、クラスタ相互接続ファブリックを介して、プロセッサエレメント同士の間で転送されてもよい。たとえば、チェーンポートを用いて、接続120を通して外部クラスタリングファブリックに接続し、データパケットを遠隔ノードに転送してもよく、そこでデータパケットは別のボードによって受信されてもよい。受信ボード上のプロセッサエレメントは、データパケットからデータを抽出して、それをマイクロプロセッサが必要とするまでストアしていてもよい。
この手法は、PCIバス110などの現在利用可能などのPCインターフェイスのデータ転送速度よりも数倍速いデータ転送速度の提供をもたらす。しかしながら、DIMMの電気プロトコルは、一旦データが受信側に到着すると、DIMMスロット114内のDIMMモジュールがマイクロプロセッサ102にそれが到着したことを合図する方法はないようになっている場合があり、この機能がなければ、マイクロプロセッサ102の作業は、データが到着したかどうかを判断するために、DIMM MAPエレメント112の連続ポーリングの使用を介して同期をとられなければならなくなる。そのような手法は、マイクロプロセッサ102、およびそのバス帯域幅の多くを完全に消費し、このため他のバスエージェントをすべて機能停止させる。
この状態を回避するために、データが到着したことをマイクロプロセッサに合図する通信パケットを転送するバスに、プロセッサエレメントが結合されてもよい。たとえば、この発明の一実施例では、DIMM MAPエレメント112は、PCIバス110などの周辺バスに、接続118を介して結合されてもよい。この実施例では、DIMM MAPエレメント112は、通信パケットを生成して、それらをPCIバス110を介してマイクロプロセッサ102に送信してもよい。データがDIMM MAPエレメント112によって受信されたことをマイクロプロセッサ102に連絡するために、従来のPCI割込信号が利用されてもよい。PCIバス110上で転送されるこれらの通信パケットはデータ全体のうち低いパーセンテージであるため、PCIバス110の低帯域幅ボトルネック効果は最小限に抑えられ得る。
この発明の別の実施例では、システムメンテナンス(“SM”)バス(図示せず)も、プロセッサ102に合図するために使用可能である。SMバスは、プロセッサボード上のさまざまなデバイスがプロセッサ102に従来通り割込めるようにするシリアルカレントモードバスである。代替的な一実施例では、AGPポートも、プロセッサ102に合図するために利用されてもよい。
DIMM MAPエレメント112がDIMMスロット114全体であり得るものと関連している状態で、PCは、通常約1GBのアドレスの大きなブロックを、DIMM MAPエレメント112による使用のために割当てる。これらのうちのいくつかはコマンドとしてデコード可能である一方、(前述の特許および特許出願において開示されているように)多くが依然としてストレージとして使用可能である。少なくとも、周辺機器からデータを転送するために使用される通常の入力/出力(“I/O”)ブロックサイズと同じだけ多くのアドレス位置を有することにより、たいていのPC(コントローラ104を含む)で使用される従来のインテルTMチップセットは、DIMM MAPエレメント112への直接I/O転送を可能にする。これにより、データは次に、たとえばディスクから到着して、DIMM MAPエレメント112に直接渡るようになる。それは次に、所望の任意のやり方で変えられ、パケット化され、接続120を通して遠隔ノードに送信されてもよい。ディスクのPCIバス110と、DIMM MAPエレメント112およびDIMMスロット114との双方がPCメモリコントローラ104によって制御されるため、この転送によって消費されるプロセッサバス帯域幅はない。
なお、PCによっては、DIMMスロット114内のいくつかのDIMMが、メモリ帯域幅を増加させるためにより幅広いメモリアクセス能力を提供するよう交互配置されていてもよい。これらのシステムでは、前述の手法も、いくつかのDIMMスロット114において並行して利用されてもよい。にもかかわらず、選択された特定の実現化例の如何にかかわらず、最終結果は、DIMMベースのMAPエレメント112がPCIバス110への、および接続120を通した外部スイッチまたはネットワークへの1つ以上の接続を有することであり、それはしばしば、PCIベースの接続のみの実行、および、データが相互接続ファブリックを通過する際にデータを処理する能力をもたらす。
ここで図2Aおよび図2Bを加えて参照すると、この発明に従ったSNAP明示的通信サポート機能(“SNAPCF”)によって例示されているような接続200の送信側202および対応する受信側204の概要を提供する、簡略化された機能ブロック図が示されている。この例では、送信側202および受信側204は双方ともSNAPとして例示されている。以下により十分に説明されるように、特定の例示的なSNAPデータ構造/プロセスが、プロセス間でメッセージを通信してエス・アール・シィ・コンピューターズ・インコーポレイテッドのスイッチ/共通メモリ(“CM”)/SNAPアーキテクチャを介して接続されたクラスタの異なるノード上で実行するための合理化された低レベルの
ユーザ−ユーザ伝送メカニズムの実現のために開示されている。開示されたこのメカニズムは、特にミリネット/GM、Osネット(OsNet)、VIA、およびSTといった市販のOSバイパスクラスタ実現化例によって採用されているものよりもかなり簡単である。
この簡略化は、エス・アール・シィ・コンピューターズ・インコーポレイテッドのプラットフォームと既存のI/Oベースのクラスタとの少なくとも2つの著しい違いによって可能となる。事前準備として、ここに開示されるこの発明のメカニズムは、任意の所与の転送の送信側および受信側は接続ごとのメモリバッファを介して部分的に、または完全に切り離されることが可能で、そのバッファはその特定のポイントツーポイント接続専用のものである、という仮定の下に作用してもよい。これにより、送信側が受信側SNAPからの認証を必要とせずに大量をバッファに入れることが可能になり得るだけでなく、受信側SNAPが任意の所与の時点でどの接続にサービスを提供したいかを決めることができるようにもし得る。受信側の論理は一度に1つの接続用のデータのみを取扱えばよいため、これはSNAP処理要件を非常に簡略化できる。
SNAPは、そのDIMMスロットインターフェイスのおかげで、PCボードプロセッサの観点からは完全に受動的なデバイスであってもよい。これには、その他の場合には非同期通信を利用できるかもしれないアプリケーションにとっては不利な点があり得るものの、それは、適切な接続ベースの保護メカニズムと、SNAPの非特権的制御を所与のユーザプロセスに割当てる能力とを与えられて、通信ハードウェアを、着信データ上で仮想アドレス変換を実行する必要性から解放するかもしれない。
代表的なプロトコルはプロセッサとSNAPとの間の公知の送信エラーに対処するための措置を含んでいてもよいが、それは、そのようなエラーを検出するためのメカニズムを含んでいないかもしれない。エラー検出用のメカニズムはプロトコルの外部で独立して実現されてもよく、先入れ先出しレジスタ(“FIFO”)に書込まれたデータを転送するかどうかの決定は、より低いレベルで判断され得るステータスのみに基づいて下されてもよい。
ここで図2Aの接続200の送信側202を特に参照する。この例では、接続200は、関連部分に、発信直接メモリアクセス(“ODMA”)制御ページ206を含んでいてもよい。ODMA制御ページ206は、フロー制御送信/受信(“FLOWCTL_SR”)用、フロー制御受信/送信(“FLOWCTL_RS”)用、転送初期化(“XFER_INIT”)用、および接続テーブルインデックスセットアップ(“CID_SETUP”)用のレジスタを含んでいてもよい。FLOWCTL_SRレジスタは、接続テーブルインデックス(“CID”)、転送書込ポインタ(“XFER_WP”)およびステータス(“STATUS”)というエントリを含んでいてもよく、一方、FLOWCTL_RSレジスタは、関連するCID、転送コミット(“XFER_COMMIT”)、転送受入(“XFER_ACCEPT”)およびSTATUSというエントリを含んでいてもよい。XFER_INITレジスタは、CID、長さ(“LENGTH”)、仮想アドレス(“VA”)およびSTATUSというエントリを含み、一方、CID_SETUPレジスタは、アプリケーション識別子(“APPID”)、ターゲットノード(“TARGET_NODE”)、ターゲットCID(“TARGET_CID”)、共通メモリベース(“CM_BASE”)、共通メモリ長さ(“CM_LEN”)およびローカルCID(“LOCAL_CID”)というエントリを含んでいる。ODMA制御ページ206におけるこれらのエントリは、一度に1つのブロックがアクティブとなる状態で重ね合わされてもよい。
接続200の送信側202はさらに、発信ローカル接続テーブル(“OLCT”)最大CID(“OLCT[MAX_CIDS]”)テーブル208とOLCT[CID]テー
ブル210とを含んでいてもよく、それらは以下により十分に説明される。OLCT[CID]テーブル210は、APPID、TARGET_NODE、TARGET_CID、CM_BASE、CM_LEN、転送長さ(“XFER_LEN”)、バッファカウント(“BUFCNT”)および書込ポインタ(“WP”)エントリ用のエントリを含む。現在の転送状態(“CURRENT_XFER_STATE”)テーブル212は、図示されているように、APPID、TARGET_NODE、TARGET_CID、CM_BASE、CM_LEN、XFER_LEN、BUFCNT、転送受入(“XFER_ACCEPTED”)、転送完了(“XFER_COMPLETED”)および次のIPI(“NEXT_IPI”)というフィールド用のエントリを含んでいてもよい。以下に同様により十分に説明されるように、ODMA先入れ先出し(“FIFO”)バッファ214が、ODMA制御ブロック216およびODMAエンジン218とともに含まれていてもよい。出力アドレスバッファ220および出力データバッファ222も含まれていてもよい。
加えてここで図2Bを特に参照すると、接続200の受信側204は、関連部分に、着信直接メモリアクセス(“IDMA”)制御ページ230を含んでいてもよい。IDMA制御ページ230は、着信CIDセットアップ(“ICID_SETUP”)用、FLOWCTL_SR用、FLOWCTL_RS用およびXFER_INIT用のレジスタを含んでいてもよい。ICID_SETUPレジスタは、APPID、TARGET_NODE、TARGET_CID、CM_BASE、CM_LENおよびLOCAL_CIDエントリ用のエントリを含んでいてもよい。FLOWCTL_SRレジスタは、CID、XFER_WPおよびSTATUSというエントリを含んでいてもよく、一方、FLOWCTL_RSレジスタは、関連するCID、XFER_COMMIT、XFER_ACCEPTおよびSTATUSというエントリを含んでいてもよい。XFER_INITレジスタは、CID、ローカルCID(“LOCAL_CID”)、LENGTH、長さ単位(“LEN_UNITS”)、STATUSおよびVAというエントリを含んでいてもよい。
接続200の受信側204はさらに、着信ローカル接続テーブル(“ILCT”)最大CID(“ILCT[MAX_CIDS]”)テーブル232とILCT[CID]テーブル232とを含んでいてもよく、それらは以下により十分に説明される。ILCT[CID]テーブル234は、APPID、ソースノード(“SRC_NODE”)、CM_BASE、CM_LEN、XFER_LEN、BUFCNT、WP、読出ポインタコミット(“RP_COMMIT”)および読出ポインタ(“RP”)エントリ用のエントリを含んでいてもよい。現在の着信転送状態(“CURRENT_I_XFER_STATE”)テーブル236は、図示されているように、APPID、SRC_NODE、SRC_CID、CM_BASE、CM_LEN、XFER_LEN、BUFCNT、WP、RP_COMMIT、RPおよびNEXT_IPI用のエントリを、含んでいてもよい。以下に同様により十分に説明されるように、IDMA FIFOバッファ238が、IDMA制御ブロック240、ILCTマネージャ(“ILCT MGR”)242およびIDMAエンジン244とともに含まれていてもよい。入力アドレスバッファ246および入力データバッファ248も含まれていてもよい。
図示されているように、送信側202および受信側204は、図2Aおよび図2B双方に示されるSNAP_CONTEXTテーブル250によって示されるような、ある共有状態および機能性を有していてもよい。SNAP_CONTEXTテーブル250は、現在のCID(“CURRENT_CID”)、現在のAPPID(“CURRENT_APPID”)、プロセッサにより期待されるブロック長さ(“PE_BLOCK_LEN”)、IPI間隔(“IPI_INTERVAL”)および現在の着信CID(“CURRENT_ICID”)エントリ用のエントリを含んでいてもよい。送信側202および
受信側204はまた、以下により十分に述べられるような、共有されるIPIジェネレータ(“IPI GEN”)252およびIPIハンドラ(“IPI HANDLER”)254も含んでいてもよい。
エス・アール・シィ・コンピューターズ・インコーポレイテッドによって開発されたSNAPの1つの目的は、商品のパーソナルコンピュータ(“PC”)ボードが、SRCスイッチ/共通メモリ(“CM”)を介してすべて接続された従来の、および再設定可能なマルチアダプティブプロセッサ(MAPTM、この発明の譲受人であるエス・アール・シィ・コンピューターズ・インコーポレイテッドの登録商標)を特徴とするスケーラブルなコンピュータにおいて、処理ノードとしての役割を果たせるようにすることである。SRC−6コンピュータとは対照的に、従来のプロセッサはグローバルな共通メモリへのロード/ストアアクセスを持たないかもしれず、アクセスは代わりに、SNAPとスイッチ/CMとの間のプログラム可能な直接メモリアクセス(“DMA”)で結合された、SNAP上のメモリマッピングされたFIFOを介する。
原則として、この機能は、遠隔プロセッサ割込を生成するための手法と結合されて、同じまたは異なるボード上のマイクロプロセッサ間のエンドツーエンド通信を可能にする。たとえば、図1は、システム100を構成するマイクロプロセッサ1020と1021および/またはMAPエレメント112を用いたこの機能および手法の一実施例を示している。しかしながら、実際には、関与するプロセッサ1020と1021との間で直接動作するメッセージ受け渡し実現化例に関連するセットアップ/プロトコルオーバーヘッドが問題を有するかもしれない。さらに、接続の両端でのSNAP(またはSNAPとMAP)の専用使用を必要とするポイントツーポイントプロトコルがスケーラビリティの問題を提示するかもしれない。
SNAPにおいて再設定可能な論理が比較的多いことは、上述の基本的なSNAP DMA機能性に加えて、高性能、軽量の明示的通信処理機能を実現する機会を与える。シミュレーションの結果は、そのような特徴により、その他の場合には任意の既存の商業的に入手可能なクラスタ相互接続によって達成可能なものよりも大きなメッセージ受け渡しスループットを、実装者が提供できるようになることを示している。同様に、双方向メッセージ受け渡しインターフェイス(“MPI”送信/受信)プロトコルおよび一方向(MPI2/共有メモリアクセスライブラリ“SHMEM”)明示的通信プロトコル双方のための、競合するオペレーションシステム(“OS”)−バイパス対応のクラスタソリューションによって提示されるものに匹敵するメッセージ起動オーバーヘッドを達成する可能性がある。
接続200の考えられる機能性は、前述のように、概ね別個で、コンフィギュレーション/コンテキスト用の何らかの共有ストレージをSNAP_CONTEXTテーブル250に有する、送信側202および受信側204を含む。IPI生成および取扱い論理は、IPI GEN252およびIPI HANDLER254によって共有されている。送信側202と受信側204との間の通信は、固定された、単方向ポイントツーポイント接続を通して達成され、それらの接続の各々は、ソース側にある発信接続記述子(OLCTエントリ)と、宛先にある対応する着信接続記述子(ILCTエントリ)と、共通メモリの専用部分であり得る、接続ごとのメモリバッファとを有していてもよい。
ここに開示されたこの発明の例示的な実施例では、接続セットアップはOSにより特権が与えられており、アプリケーション起動時点で起こり、ソース上で実行中のOSインスタンスと宛先ノードとの間の調整/通信を必要とする。この最初のオペレーションシステム間の通信に使用されるチャネルは設計上の選択の問題であるが、ソフトウェア制御の下で「生の」PE−>SNAP−>CM通信を使用してもよい。一旦セットアップされると
、各接続は、送信側202の出力FIFO214と受信側204の入力FIFO238との間にユーザがアクセス可能な経路を提供する。
任意の所与の時点で、各プロセッサに関連するSNAPは、単一のアプリケーションプロセスの制限された制御下にあってもよく、それは、単一の識別子またはAPPIDの下でグループ化された通信プロセスのクラスタ幅の集合に加わっていてもよい。
送信側202では、現在制御中のプロセスが、転送初期化/再開のための制御ページ書込によって、アクティブな接続を判断してもよい。このプロセスは、そのAPPIDによって所有される(以前にオペレーションシステムによってセットアップされた)接続200上で送信してもよい。
受信側204では、SNAP IDMA制御論理240が、現在制御中のプロセスのAPPIDを有し、かつ、送信用にCMのバッファに入れられた未処理のデータを有するILCTのエントリから選択して、現在アクティブな接続を判断する。これは、特に着信データの潜在的ソースがたくさんあり得る場合に、さもなければ禁止オーバーヘッドを招く、プロセッサにより指示される着信転送のスケジューリングの必要性をなくす。このメカニズムは、制御中のアプリケーションと同じVA空間で動作する専用アプリケーションスレッドによって受信側204がサービスを受けるようにすることを含み、それは、着信転送のためにIDMA制御ページ230をポーリングし、データをIDMA FIFO238から正しいターゲットメモリ位置に読み出す責任を有していてもよい。
IDMA制御ページ230およびODMA制御ページ206の多数のプロセッサアクセス可能レジスタは、多すぎて直接対処不可能であり、図示されるように小さなブロックを重ね合わせることなどによる補助アクセスメカニズムを必要とするかもしれない。この構成の下では、プロセッサ1020または1021は(図示されていないある特定のレジスタに)制御書込を発行して、アクティブなレジスタブロック間をスイッチする。
発信ローカル接続テーブル(OLCT)
送信側202に関し、OLCT[CID]テーブル210は、ローカルノードから生じる各発信ポイントツーポイント接続200用のエントリを含んでいてもよい。テーブル210はODMA制御論理216によって保持される。接続200は、一般にオペレーションシステムによって特権が与えられた動作である、接続テーブルインデックス(“CID”)、APPID、TARGET_NODE、TARGET_CID、ベースアドレス、および、接続のCMバッファ用のアドレス長さの、CIDセットアップレジスタへの書込によって、プロセッサ1020または1021によりセットアップされてもよい。
OLCTテーブル208のCIDエントリ210は、ODMA制御ページ206のXFER_INITレジスタまたはCID_SETUPレジスタが書込まれた際にはいつでも、および、アクティブな発信接続がスイッチされた際にはいつでも、ODMA制御論理216によって更新される。この機能性についての可能なフォーマットは以下のようになっていてもよい。
Figure 0004416658
CURRENT_XFER_STATE
現在アクティブな発信転送用のOLCTエントリはCURRENT_XFER_STATEテーブル212に複製されてもよく、それは、アクティブな転送の進行を追跡するフィールド、つまりXFER_ACCEPTED、XFER_COMPLETEDおよびNEXT_IPI XFER_COMPLETEDも含んでいてもよい。転送はスイッチング前にアイドルになるかもしれないため、これらのフィールドはOLCT自体には存在しないかもしれない。
ODMA FIFO
ODMA FIFO214は、プロセッサ1020または1021のデータページへの書込用の宛先であり、ODMAエンジン218の書込データ用のソースである。
ODMA制御
ODMA制御216は、コマンドのために制御ページを監視し、プロセッサ1020および/または1021がアクセス可能なステータス、SNAPコンテキストおよびOLCTを必要に応じて更新し、アクティブなAPPID間、転送間のスイッチングを必要に応じて管理する。その機能性は、接続セットアップ制御ページ書込(CID_SETUP)を受信次第、OLCTを更新すること、および、転送起動制御ページ書込(XFER_INIT)を受信次第、アクティブな転送間をスイッチすることを含んでいてもよい。なお、現在の転送は、このメッセージを受信次第、アイドルになるべきであり(つまり、ODMA FIFO214は空となるべきであり)、その時点で、ODMAエンジン218は遮断されなければならず(CURRENT_XFER_STATE無効)、CURRENT_XFER_STATEはOLCTにまた書込まなければならない。新しい転送CID用のOLCTエントリはCURRENT_XFER_STATEに書込まれなければならない。再開フラグがセットされる(つまりプロセッサ102がXFER_INIT_ST
ATUSに書込まれる)場合を除き、転送長さは制御ページからCURRENT_XFER_STATEにコピーされなければならず、転送進行フィールド(XFER_ACCEPTED、XFER_COMPLETED、NEXT_IPI)は初期化されなければならない。ODMAエンジン218は、データがODMA FIFO214に着信するにつれて転送を処理するために、さらに、着信転送進行IPIを処理し、CURRENT_XFER_STATE、FLOWCTL_RS制御ページレジスタおよびOLCTを更新して、コミットされたCM読出ポインタ(XFER_COMPLETED)を反映するために、解放されなければならない(CURRENT_XFER_STATEは有効)。
なお、現在のCID以外の転送については進行IPIが無視されてもよいが、「スイッチアウト」の時点で完全に受入れられることによってコミットされなかった転送が、「スイッチイン」の時点で完全である(または中止されるなど)としてユーザに通知されることを確実にするために、何らかのメカニズムが必要とされる。これは、読出ポインタをOLCTにストアする、または更新する必要性を有用に排除する。
ODMAエンジン
ODMAエンジン218および関連する論理は、(CURRENT_XFER_STATEに基づいて)CM書込要求を生成して、データをODMA FIFO214からスイッチ要求バッファに転送すること、SNAPをCM転送進行に反映させるよう、CURRENT_XFER_STATE(BUFCNT、XFER_ACCEPTED、およびNEXT_IPI)を更新すること、および、IPI_INTERVALラインが最後のIPI以降送信された場合はいつでもIPI GEN252をトリガしてNEXT_IPIカウンタをリセットすることに対して責任を有していてもよい。
上述の事項に加え、ODMAエンジン218は、制御ページ書込を介して直接プログラムされるべきその既存の能力も維持するべきである。この「生の」アクセスモードはスイッチングを介して、永続的に定義された、システムによる特権が与えられたCIDにセットされてもよい。
入力ローカル接続テーブル(ILCT)
受信側204に関し、ILCT[ICID]テーブル232は、ローカルノードから生じる各着信ポイントツーポイント接続用のエントリを含んでいてもよい。接続ステータスはILCTマネージャ242によって維持され、接続セットアップは、オペレーティングシステムにより特権を与えられたIDMA制御ページ230のCIDセットアップ書込に応答して、IDMA制御論理240によって実行される。1つの可能なフォーマットは以下のとおりである。
Figure 0004416658
なお、出力(または送信)側202とは対照的に、現在の着信転送以外の転送用のILCTエントリはILCTにおいて更新される必要はない。なぜなら、各接続の送信側202からのIPIはいつでも到着可能であり、ILCTマネージャ242は、どの着信接続がサービス提供を必要としているかを判断するために、正確な共通メモリ書込ポインタなどを有する必要があるためである。
ここに開示された特定の実施例では、ベースVAはILCT内に存在すべきである。なぜなら、XFER_INITメッセージは通常、アクティブな着信接続がスイッチング中の時点しかプロセッサ102に送信されないためである。VAは、次の(または後の)アクティブな転送スイッチまでプロセッサ102への送信が延期され得る着信転送イニットIPIの一部であり得るため、IPIにおける情報は、関連CID用のILCTエントリにストアされるべきである。ストレージが少なくて貴重である場合、ストレージ要件は、(たとえば12ビットの)インデックスを、VA自体にではなく転送イニットIPI中間(つまりVA)データのテーブルにストアすることによって、緩和可能である。
CURRENT_I_XFER_STATE
現在アクティブな発信転送用のILCTエントリはCURRENT_I_XFER_STATEテーブル236に複製されてもよく、それは、アクティブな転送の進行を追跡するために必要なフィールド(WP、RP、RP_COMMITおよびNEXT_IPI)も含んでいてもよい。
IDMA FIFO
IDMA FIFO238は、IDMAエンジン244の読出データ用の宛先であってもよく、プロセッサ102へのデータページ読出応答用のソースであってもよい。
IDMA制御
IDMA制御240は、接続セットアップ制御ページ書込(CID_SETUP)を受信次第ILCTを更新することと、サービス提供を必要とする接続を識別すること(つまり、(CM Write pointer!=CM Read Pointer)in ILCT entry,&&(ILCT[CURRENT_ICID].APPID==CURRENT_APPID))と、以前に識別された、現在待機中の着信接続間で優先順位をつけることと、その存在がプロセッサ102にまだ通知されていないアクティブな転送の選択時に転送起動通知(IDMA制御ページ230のXFER_INITレジスタの内容)を生成することと、ラウンドロビンなどのスケジューリングアルゴリズムに従って現在アクティブな転送を必要に応じてスイッチし、アイドルに、および出力または送信側202と同様にスイッチオンすることに対して責任を有していてもよい。現在のアクティブな転送は、スイッチが起こり得る前にアイドルとなるべきであり(つまり、IDMA
FIFO238は空であるべきであり)、プロセッサ102は全データの認証された受信を有するべきであり、受信−送信転送コミットIPI(FLOWCTL_RS)は、プロセッサ102によって受入れられた全データについて送信されていなければならない。
単一の着信接続がSNAPを長期間独占し、その間、他の着信接続が待っている、という可能性を排除するために、IDMA制御240は、現在の着信接続についての未読データがまだ共通メモリ内に存在していてもIDMAエンジン244をアイドルにする機能を有していてもよい。現在の転送が一旦アイドルになると、スイッチは、IDMAエンジン244を遮断することによって達成されてもよい(つまり、CURRENT_I_XFER_STATEは無効である)。以前にアクティブだった転送が不完全である場合、IDMA制御ページ230の転送中断フラグ(FLOWCTL_RS_STATUSの一部)は、現在の転送が中断されて、それが新しい転送イニットメッセージのためにポーリングすべきであることをプロセッサ102に示し(転送はアイドル状態で、ILCTはILCTマネージャ242によって直接更新されるため、CURRENT_I_XFER_STATEをILCTにまた書込む必要はない)、アクティブとなる次の転送(つまりICID)を選択し、新しい現在のICID用のILCTエントリをCURRENT_XFER_STATEにコピーし、IDMA制御ページ230のXFER_INITレジスタを新しい(または予め存在する場合には再開された)転送の詳細で更新してXFER_INIT_STATUSの有効ビットをセットし、データがIDMA FIFO238に着信するにつれて転送を進行させるためにIDMAエンジン244を解放する(CURRENT_XFER_STATEは有効である)よう、セットされてもよい。
ILCTマネージャ
ILCTマネージャ242は、着信転送起動および進行IPIに応答して、および、プロセッサ102がIDMA制御ページ230のFLOWCTL_RSレジスタに書込む際はいつでもILCTを更新する責任を有していてもよい。なお、この点で、どの有効なCIDも、現在の着信転送のためだけではなく、更新を必要とするかもしれない。更新が現在の転送に関係する場合、現在アクティブな転送状態における関連フィールド(つまりBUFCNT、WP)は、ILCTエントリと並行して更新されてもよい。
IDMAエンジン
IDMAエンジン244および関連する論理は、(CURRENT_I_XFER_STATEに基づいて)共通メモリ読出要求を生成して、データをスイッチ応答バッファからIDMA FIFO238に転送すること、SNAPを接続ごとのメモリバッファの転送進行に反映させるよう、CURRENT_XFER_STATE(BUFCNT、XFER_ACCEPTED、およびNEXT_IPI)を更新すること、および、受信側204のプロセッサ102がIDMA FIFO238から読出されるために利用可能なデ
ータの量を判断できるよう、FLOWCTL_SR IDMA制御ページ230の書込ポインタを維持することに責任を有していてもよい。送信側202と同様に、IDMAエンジン244も、制御ページ書込を介して直接プログラムされるべきその既存の能力、つまり「生の」アクセスモードを維持すべきである。
共有される状態/機能性
SNAPコンテキスト
図2Aおよび図2Bをともに参照すると、SNAP_CONTEXTテーブル250は、現在のAPPIDに関連し、制御中のユーザプロセスが変更される際はいつでもオペレーティングシステムにより特権を与えられた制御ページ書込を介して書込まれる、転送に特有ではないコンテキスト情報用の包括的な場所である。SNAP_CONTEXTテーブル250は以下のエントリを含んでいてもよい
CURRENT_CID−現在アクティブな接続のOLCTエントリを選択するために使用され得る、現在の発信接続ID
CURRENT_APPID−現在制御中のプロセスに関連していない接続を保護するために使用される
PE_BLOCK_LEN−プロセッサ102がODMA制御ページ206のFLOWCTL更新/ステータスの各ポーリング間に書込むよう期待されている、データの量
IPI_INTERVAL−フロー制御IPIを受信側204のSNAPに送信する前にODMAエンジン218によって書込まれるべき、さらに、SNAPの受信から送信まで進行IPIをスケジューリングするためにも使用されるべきラインの数
CURRENT_ICID−現在アクティブな着信転送用のILCTへのインデックス。
IPI生成/IPIハンドラ
IPI生成252は、IPIパケットを出力ストリームに挿入する責任を有する。IPIパケットペイロードのフォーマットは以下のようであってもよい。
Figure 0004416658
ターゲットSNAPでのIPIハンドラ254は、IPIパケットを沈め、それらを処理するために転送する。トリガリングイベント/動作の例示的な説明は以下のようになってもよい。
転送起動IPI
これは、プロセッサ102から有効なXFER_INITメッセージを受信次第、ODMA制御216によってトリガされてもよい。受信時、このメッセージはILCTマネージャ242に送られてもよく、それは、指示されたCID用の接続テーブルエントリを更新する。なお、現在不完全な転送の詳細に上書きすることは、SNAPの観点からは正当であるが、受信側204の制御中のプロセスは、たとえば、CIDが次にアクティブになる際に再開フラグがセットされていないことを検出して適切な処置をとることによってそれを取扱うよう、セットアップされるべきである。
フォワードフロー制御IPI
これは、ODMAエンジン218が現在の転送用の書込まれたIPI_INTERVALラインを有する場合に、および、転送の最後のラインが接続ごとのメモリバッファに書込まれた後で、ODMAエンジン218によってトリガされてもよい。受信側のSNAPで受信されると、データはILCTマネージャ242に送られてもよく、それは、IPIデータのCIDフィールドによって示されるILCTエントリの共通メモリ書込ポインタを更新してもよい。
リターントランスファー進行通知IPI
これは、新しいXFER_COMMIT値がIDMA制御ページ230のFLOWCTL_RSブロックのXFER_COMMITレジスタに書込まれる際はいつでも、ILCTマネージャ242によってトリガされてもよい。これは、現在の着信転送用のILCT
エントリのRP_COMMITフィールドの更新と並行して起こり得る。SNAP(つまり、送信側202)によって受信次第、IPIハンドラ254はデータをODMA制御ブロック216に送ってもよく、それは前述のように転送進行を反映するよう、OLCTおよびODMA制御ページ206のFLOWCTL_RSレジスタを更新する。
SNAPCF:プログラミングインターフェイス
明示的通信機能のアプリケーション使用をサポートするソフトウェアは、以下の構成要素を含んでいてもよい。
OS/カーネルサポート
1.ユーザメモリマップされたSNAP通信インターフェイス(SNAPCI)の割当/管理
ユーザプロセス間のコンテキストスイッチSNAPCIは、通信インターフェイスをアイドルにし、APPIDに固有のコンテキストの読出/書込を行ない、制御ページをアンマッピング/リマッピングすることを伴う。
2.OS←→OS低レベルクラスタ間通信サポート
これは、メッセージ待機を示すために、永続的な共通メモリメールボックスへの「生の」SNAP→共通メモリデータ転送および遠隔割込を用いることを含んでいてもよい。この通信は比較的不十分であり得るため、それは、OSインスタンス間でのあまり頻繁ではない通信のためのみに使用されるべきである。それは、アプリケーションワークグループおよび接続セットアップを可能にするためにも使用されてもよい。
3.NAPCIシステムコールサポート
アプリケーション起動時、ユーザプロセスは、それ自体を分散型アプリケーションの参加者として確立して(APPIDJoin)、仮想PE番号を取得する(Get_MYPE)ことができる。これが一旦行なわれると、接続は、ソースおよび宛先を特定するのに仮想PE番号を用いて、確立可能である。
−アプリケーションワークグループに参加する APPID_t APPIDJoin(AppMagic)
・AppMagicはOSに登録されており、どのような高レベルパラレルランチャが使用されていても、それによりアプリケーションに供給されてもよい
・参加する1番目のプロセスはMYPE=0を取得し、2番目は1を取得する、などとなる。共通メモリにおいて集中化した物理的SNAPIF→仮想プロセッサマッピングを必要とする。
−自分の(仮想)プロセッサ番号を取得する Int Get_MYPE(APPID)
・APPIDJoin時点で確立された仮想PE番号を取得する。集中化された(または、好ましくはAPPIDJoin時点でOSによりキャッシュされた)テーブルを調べる。
−Connection CID_tSetupCID(APPID,MYPE,DestPE)を確立する(送信側)。
Figure 0004416658
・接続はポイントツーポイントで単方向性であり、送信側から作られる
・接続セットアップは以下を伴う。
Figure 0004416658
・接続を引き裂く int destroyCID(APPID,CID)
・アプリケーションワークグループを離れる int APPIDDetach(APPID)。
送信側アプリケーションライブラリ転送初期化/処理
送信ルーチンは、実行中、割込まれて接続200の制御を潜在的に失う/取戻すことができる必要がある。しかしながら、OSは、SNAPによって受信中であるとして認識されているデータが接続ごとのメモリバッファに配送済みであることを保証すべきである。最後の受入メッセージの後、コンテキストスイッチの前に送られたデータもメモリバッファに書込まれてもよいが、次のFLOWCTL_RSポーリングにおいて不良ステータスとなるかもしれず、それは、最後の受入後にアプリケーションに全データを再送させるかもしれない。
なお、VAパラメータは、転送セットアップの一環として受信側204プロセスに直接渡されてもよい。SHMEM実現化例については、VAは実際には、ターゲットアプリケーションによって直接使用可能な形の宛先開始アドレスである。MPIについては、これは(たとえば)cplantポータルハンドルまたは他のポート識別子であってもよい。
Figure 0004416658
受信側リスナー(接続サービススレッド)処理
ローカルAPPID用の主要アプリケーション処理スレッドと同じ仮想アドレス空間で
動作し得る、受信側接続(たとえばSNAPCF)サービススレッドは、着信SNAPCF転送の処理専用であってもよい。使用されるメッセージ受け渡しモデルに依存して、このサービススレッドは、転送イニットメッセージのVAプラス転送オフセット(たとえばSHMEM)に基づいてアプリケーションメモリに直接着信データを預けてもよく、または、それは、主要アプリケーション処理スレッド(たとえばMPI)で実行中のメッセージ受け渡しライブラリ受信ルーチンによる処理のためにそれをライブラリバッファに配置してもよい。後者の場合、転送イニットメッセージVAフィールドは、ゼロコピーユーザモードメッセージング(たとえばCplant/サンディア(Sandia)“ポータル”)をサポートするために使用可能である。
いずれの場合も、サービススレッドは、現在のAPPID(つまり、現在SNAPのユーザモード制御を有しているAPPID)のために現在確立されている任意の着信CIDについてのデータの塊を要約できなければならない。これは、接続にサービスを提供している制御が通常、サービススレッドというよりはむしろ、SNAP IDMA制御240とともに存在するためである。このため、スレッドは着信CIDのテーブルを、各々についてのベース“VA”(たとえばポータルIDなど)および現在の転送オフセットとともに維持してもよい。
CID間で着信ストリームをスイッチすることは、中断フラグおよび再開フラグを介して達成されてもよい。IDMA制御ページ230のFLOWCTL_SRステータスにおける中断フラグは、IDMA FIFO238が現在の転送のために空となり、それが新しいIDMA XFER_INITメッセージのためにポーリングすべきであることをリスナーに示した後で、接続200(つまりSNAPCF)によってセットされてもよい。IDMA制御ページ230のXFER_INITステータスにおける再開フラグは、イニットメッセージが既に部分的に完了した転送に関していることをリスナーに示す。
SNAPCFは、それがサービス提供のために非ゼロオフセットを用いた転送を選択する場合にはつねに再開フラグをセットするが、(SNAPCFの観点からは)送信CIDの所有者が、古い転送が不完全であっても新しい転送をCID上で起動することが許可されている。この場合、SNAP ILCTオフセットはゼロにリセットされ、再開フラグは、CIDが次にアクティブとなるまでセットされない。
受信側SNAPCFサービススレッドについての典型的な処理シーケンスを、以下のように概説する。
Figure 0004416658
なお、データが実際には不良で、ターゲットがライブラリバッファというよりもむしろユーザメモリである場合、このコピーは有効なユーザメモリを処分してもよい。このため、SHMEMプログラムは、中間バッファを介してデータをステージして、ターゲットメモリへのコピー前にブロックについての良好なステータスの確認を待つ間そこでそれを保持する必要があるかもしれない。バッファが常にキャッシュにあるため、問題は何ら予期されず、それは(おそらくキャッシュにはない)真のターゲットラインを先取りするための時間を許可するため、実際には物事を若干加速させるかもしれない。なお、メモリ内のデータは、後に良好な値で上書きされるまで不良である。つまり、ターゲットがライブラリバッファである場合、何も問題はないはずである。
ここで図3Aおよび図3Bを加えて参照すると、前述の2つの図面の接続200の送信側202および受信側204が、この発明の一実施例に従った代表的なエンドツーエンド
処理例を示すために示されている。なお、図3Aおよび図3Bにおける構造および要素の番号付けは、明瞭にするために省略されている。
エンドツーエンド処理例
以下の事柄は、単一の転送をセットアップすることに伴うステップを示している。番号をつけられ下線が引かれたステップは、特に指示されていない限り、図3Aおよび図3Bに示す、番号をつけられ下線が引かれた要素に対応している。
ステップ(図示せず):前述のようなアプリケーション初期化/接続セットアップ。
ステップ:送信側アプリケーションは、CID、長さ、VAをODMA制御ページ206XFER_INITレジスタに書込むことによって、転送を開始する。
ステップ3A:ODMA制御論理216はXFER_INITレジスタ書込を沈め、接続APPIDが制御プロセスのAPPIDに整合することをチェックした後で、
ステップ3B:XFER_INIT CIDで特定されたCIDについて、転送の詳細をOLCTエントリに書込む。
ステップ:ODMA制御論理216は、その内容をCURRENT_XFER_STATEにコピーすることによってCIDを現在のものにし、転送起動IPIの生成を開始し、IPIが送信されて沈めるべきデータがあり次第ODMA FIFO214を空にするようODMAエンジン218を解放する。
ステップ5A:IPIジェネレータ252は、起動IPIをターゲットSNAPに送信し、次に
ステップ5B:IPIハンドラ254は、起動IPIデータをILCTマネージャ242に渡し、それは、
ステップ5C:新しい転送の詳細を反映するよう、CIDのためにILCTを更新する。
ステップ:ステップおよびと並行して、アプリケーションはODMA FIFO214へのデータの書込を開始するが、接続は、ステップが完了するまでそれを処理できない。
ステップ:第1のラインが利用可能になると、ODMAエンジン218は、CURRENT_XFER_STATEにおいてCM_Base+offsetを用いて、共通メモリ書込要求を生成する。オフセットは次にインクリメントされ、next_IPIはデクリメントされる。このステップはNEXT_IPI=0、または転送の終了まで繰返されるべきである。
ステップ:ステップ6と並行して実行されて、IPI生成論理252は、(CURRENT_XFER_STATEからの)遠隔CIDとともに、IPI用ターゲットアドレスを検索する。IPI用共通メモリ書込ポインタも前もって計算される。
ステップ:NEXT_IPI=0の場合、ODMAエンジン218は遮断し、IPIジェネレータ252は、予めフォーマット化されたFLOWCTL_SR IPIパケットを宛先SNAPに送信する。
ステップ10:宛先側のIPIハンドラ254は、IPIデータをILCTマネージャ242へ送る。
ステップ11:ILCTマネージャ242は、新しい共通メモリ書込ポインタを反映するよう、IPIパケットに特定されたCIDについてILCTエントリを更新する。
ステップ12:その後、(IDMAがアイドルとなったらすぐに)IDMA制御論理240は、この転送用CIDを現在のものとして選択し、ILCTエントリをCURRENT_XFER_STATEにコピーし、IDMAエンジン244を解放してIDMA FIFO238を充填し始める。
ステップ13:IDMA制御論理240は、新しい転送の詳細を反映するよう、IDMA制御ページ230のXFER_INITレジスタを更新する。
ステップ14:アイドルループでXFER_INITレジスタをポーリングしていた受信側204のプロセッサ102は、転送起動メッセージを読出し、その状態を更新し、FLOWCTL_SRメッセージのためにポーリングを開始する。
ステップ15:ステップ13および14と並行して、IDMAエンジン244は、共通メモリからIDMA FIFO238を充填し始め、各ラインが読込まれるにつれて現在の入力転送状態にある共通メモリ読出ポインタを更新する。
ステップ16:設定可能な数のライン(または短い場合には転送全体)がIDMA FIFO238に蓄積された後で、IDMA制御ブロック240は、現在のCIDおよびRPをIDMA制御ページ230のFLOWCTL_SRレジスタに書込む。
ステップ17:リスナースレッドポーリング応答は、FLOWCTL_SRメッセージを取上げる。
ステップ18:リスナースレッドはIDMA FIFO238からデータを読出す。
ステップ19:データがすべて読出されると、リスナースレッドはデータの受信を認識し、その読出ポインタをFLOWCTL_SR RP_COMMITレジスタに書込むことによって、転送を読出ポイントまでコミットする。転送が1ブロックを超える場合、処理は前述の規則に従って継続する。
ステップ20(図示せず):IDMA制御ブロック240は、FLOWCTL_RSレジスタからコミットされた読出ポインタを読出し、ILCTを更新し、FLOWCTL IPIを起動して送信元に戻す。
ステップ21(図示せず):FLOWCTL_RS IPIは送信側202のSNAPによって取上げられ、そのSNAPは、コミットされた新しい読出ポインタを反映するよう、CURRENT_XFER_STATEを更新する。DMAエンジンはここでは、新しいRPまで共通メモリバッファに自由に上書きする。
ステップ22(図示せず):送信側202のODMA制御ブロック216は、ODMA制御ページ206のFLOWCTL_RS RP_COMMIT値を更新し、それは次のプロセッサ102のポーリングで取上げられる。
この発明の原理を、特定の手法および機能ブロックとともに上に説明してきたが、上の説明は単なる例示であって、この発明の範囲に対する限定としては行なわれていないことがはっきりと理解されるべきである。特に、上の開示の教示は当業者に他の修正を示唆す
るということが認識される。そのような修正は、本質的に既に公知の、および、ここに既に説明された特徴の代わりに、または特徴に加えて用いられ得る、他の特徴を伴うかもしれない。請求項は、この出願において、特徴の特定の組合せに対して策定されているが、ここの開示の範囲が、明示的にまたは暗示的に開示された任意の新規の特徴または特徴の任意の新規の組合せ、もしくは、当業者には明らかな任意のその一般化または修正も、そのようなものが任意の請求項において現在請求されているものと同じ発明に関するか否かにかかわらず、および、それがこの発明が直面しているものと同じ技術的問題のいずれかまたはすべてを緩和するか否かにかかわらず、含む、ということが理解されるべきである。出願人はこれにより、この出願の、またはそれから由来する任意のさらなる出願の審査中、そのような特徴および/またはそのような特徴の組合せに対して新しい請求項を策定する権利を保持する。
データ転送速度を、その他の場合に周辺機器相互接続(“PIC”)バスから利用可能なデータ転送速度を越えて著しく向上させるために、DIMMフォーマットの一連のマルチアダプティブプロセッサを採用しているクラスタ型コンピュータ用の、前述の特許出願に開示されたようなスイッチ/ネットワークアダプタポート(“SNAP”)の例示的な一実施例の機能ブロック図である。 この発明の一実施例に従ったSNAP明示的通信サポート機能(“SNAPCF”)に例示されるような接続の送信側の概要を提供する、簡略化された機能ブロック図である。 この発明の一実施例に従ったSNAP明示的通信サポート機能(“SNAPCF”)に例示されるような接続の対応する受信側の概要を提供する、簡略化された機能ブロック図である。 この発明の一実施例に従った代表的なエンドツーエンド処理例を示す前述の図面に示されたSNAPCFによって例示されるような接続の送信側の図である。 この発明の一実施例に従った代表的なエンドツーエンド処理例を示す前述の図面に示されたSNAPCFによって例示されるような接続の受信側の図である。

Claims (16)

  1. クラスタ型マルチプロセッサシステムにおいてプロセスを実行するプロセッサノード間で通信するOSバイパスメッセージ伝送メカニズムであって、
    ソースプロセッサノードに結合された送信側と宛先プロセッサノードに結合された受信側とを含む接続と、
    接続の送信側および受信側にそれぞれのスイッチ/ネットワークアダプタインターフェイスによってそれぞれ結合された出力データバッファおよび入力データバッファを含む接続ごとの単一のメモリバッファと、
    続ごとの単一のメモリバッファと送信側スイッチ/ネットワークアダプタインターフェイスおよび受信側スイッチ/ネットワークアダプタインターフェイスの各々とに関連するダイナミック共通メモリ読出ポインタおよび書込ポインタと
    送信側および受信側に結合され、送信側と受信側との間で共有される制御データを生成するためのIPIジェネレータとを含み、
    出力データバッファは、ソースプロセッサノードと接続ごとの単一のメモリバッファとの間に結合され、入力データバッファは、接続ごとの単一のメモリバッファと宛先プロセッサノードとの間に結合され、
    接続ごとの単一のメモリバッファは前記プロセス専用であり、
    前記送信側は、プロセスからの要求に応答して出力データバッファから接続ごとの単一のメモリバッファへのデータの転送を開始する、発信直接メモリアクセス(ODMA)エンジンを含み、
    IPIジェネレータは、発信直接メモリアクセス(ODMA)エンジンによるデータ転送中またはデータ転送後に、ダイナミック共通メモリ読出ポインタを更新するための制御データを生成し、接続ごとの単一のメモリバッファを介して出力データバッファから転送されたデータは、更新されたダイナミック共通メモリ読出ポインタに従って、入力データバッファに読出される、OSバイパスメッセージ伝送メカニズム。
  2. 接続ごとの単一のメモリバッファは、クラスタ型マルチプロセッサシステムの共通メモリの一部を含む、請求項1に記載のOSバイパスメッセージ伝送メカニズム。
  3. 送信側および受信側に結合された、IPIジェネレータによって生成された制御データを処理するためのIPIハンドラを含む、請求項に記載のOSバイパスメッセージ伝送メカニズム。
  4. 前記出力データバッファおよび入力データバッファは、先入れ先出し(FIFO)バッファを含む、請求項1に記載のOSバイパスメッセージ伝送メカニズム。
  5. 各前記スイッチ/ネットワークアダプタインターフェイスはスイッチ/ネットワークアダプタポート(SNAP)を含む、請求項1に記載のOSバイパスメッセージ伝送メカニズム。
  6. 送信側は発信ローカル接続テーブル(OLCT)を含み、受信側は着信ローカル接続テーブル(ILCT)を含み、
    接続は、OLCTおよびILCTにおけるエントリによって、送信側と受信側との間に確立される、請求項1に記載のOSバイパスメッセージ伝送メカニズム。
  7. 接続は固定された単方向性接続である、請求項に記載のOSバイパスメッセージ伝送メカニズム。
  8. 前記プロセッサノードは、マルチアダプティブプロセッサ(MAP)エレメントに結合されている、請求項1に記載のOSバイパスメッセージ伝送メカニズム。
  9. MAPエレメントに結合されたプロセッサノードは、デュアルインラインメモリモジュール(DIMM)ソケット用に設定されている、請求項に記載のOSバイパスメッセージ伝送メカニズム。
  10. 接続ごとの単一のメモリバッファは静的に割当てられている、請求項1に記載のOSバイパスメッセージ伝送メカニズム。
  11. クラスタ型マルチプロセッサシステムであって、
    前記システムにおいてプロセスを実行するプロセッサノード間で通信するOSバイパスメッセージ伝送メカニズムを含み、前記メカニズムは、
    ソースプロセッサノードに結合された送信側と宛先プロセッサノードに結合された受信側とを含む接続と、
    接続の送信側および受信側にそれぞれのスイッチ/ネットワークアダプタインターフェイスによってそれぞれ結合された出力データバッファおよび入力データバッファを含む接続ごとの単一のメモリバッファと、
    続ごとの単一のメモリバッファと送信側スイッチ/ネットワークアダプタインターフェイスおよび受信側スイッチ/ネットワークアダプタインターフェイスの各々とに関連するダイナミック共通メモリ読出ポインタおよび書込ポインタと
    送信側および受信側に結合され、送信側と受信側との間で共有される制御データを生成するためのIPIジェネレータとを含み、
    出力データバッファは、ソースプロセッサノードと接続ごとの単一のメモリバッファとの間に結合され、入力データバッファは、接続ごとの単一のメモリバッファと宛先プロセッサノードとの間に結合され、
    接続ごとの単一のメモリバッファは前記プロセス専用であり、
    前記送信側は、プロセスからの要求に応答して出力データバッファから接続ごとの単一のメモリバッファへのデータの転送を開始する、発信直接メモリアクセス(ODMA)エンジンを含み、
    IPIジェネレータは、発信直接メモリアクセス(ODMA)エンジンによるデータ転
    送中またはデータ転送後に、ダイナミック共通メモリ読出ポインタを更新するための制御データを生成し、接続ごとの単一のメモリバッファを介して出力データバッファから転送されたデータは、更新されたダイナミック共通メモリ読出ポインタに従って、入力データバッファに読出される、クラスタ型マルチプロセッサシステム。
  12. クラスタ型マルチプロセッサシステムにおいてオペレーティングシステムをバイパスする、プロセスデータをソースプロセッサノードから宛先プロセッサノードに転送する方法であって、
    ソースプロセッサノードおよび宛先プロセッサノードによってそれぞれのスイッチ/ネットワークアダプタインターフェイスを介してアクセス可能な入力バッファおよび出力バッファを含む、接続ごとの単一のメモリバッファを割当てるステップと、
    続ごとの単一のメモリバッファとソースプロセッサノードスイッチ/ネットワークアダプタインターフェイスおよび宛先プロセッサノードスイッチ/ネットワークアダプタインターフェイスの各々とに関連するダイナミック共通メモリ読出ポインタおよび書込ポインタを設けるステップと、
    ダイナミック共通メモリ書込ポインタに従って、プロセスデータをソースプロセッサノードから送信側の出力データバッファに転送するステップと、
    プロセスデータの転送中または転送後に制御データを生成するステップと、
    ダイナミック共通メモリ読出ポインタを更新するステップと、
    更新されたダイナミック共通メモリ読出ポインタに従って、プロセスデータを出力データバッファから入力データバッファに読出すステップと、
    入力データバッファからのプロセスデータを、宛先プロセッサノードを用いて処理するステップとを含む、方法。
  13. 接続ごとの単一のメモリバッファは静的に割当てられている、請求項12に記載の方法。
  14. プロセスデータをソースプロセッサノードから宛先プロセッサノードに転送する間、接続ごとの単一のメモリバッファをプロセスデータに制限するステップをさらに含む、請求項12に記載の方法。
  15. ソースプロセッサノードおよび宛先プロセッサノードは、デュアルインラインメモリモジュール(DIMM)フォーマットで結合されている、請求項12に記載の方法。
  16. 各スイッチ/ネットワークアダプタインターフェイスはスイッチ/ネットワークアダプタポートを含む、請求項12に記載の方法。
JP2004546745A 2002-10-23 2003-09-16 クラスタ型マルチプロセッサシステムの異なるノード上で実行中のプロセス間でのメッセージの明示的な通信のためのシステムおよび方法 Expired - Fee Related JP4416658B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/278,345 US7124211B2 (en) 2002-10-23 2002-10-23 System and method for explicit communication of messages between processes running on different nodes in a clustered multiprocessor system
PCT/US2003/029445 WO2004038539A2 (en) 2002-10-23 2003-09-16 System and method for explicit communication of messages between processes running on different nodes in a clustered multiprocessor system

Publications (3)

Publication Number Publication Date
JP2006504184A JP2006504184A (ja) 2006-02-02
JP2006504184A5 JP2006504184A5 (ja) 2006-10-26
JP4416658B2 true JP4416658B2 (ja) 2010-02-17

Family

ID=32106531

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004546745A Expired - Fee Related JP4416658B2 (ja) 2002-10-23 2003-09-16 クラスタ型マルチプロセッサシステムの異なるノード上で実行中のプロセス間でのメッセージの明示的な通信のためのシステムおよび方法

Country Status (6)

Country Link
US (1) US7124211B2 (ja)
EP (1) EP1554654A4 (ja)
JP (1) JP4416658B2 (ja)
AU (1) AU2003270768A1 (ja)
CA (1) CA2489969A1 (ja)
WO (1) WO2004038539A2 (ja)

Families Citing this family (74)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050066059A1 (en) * 2003-09-24 2005-03-24 Zybura John H. Propagating attributes between entities in correlated namespaces
US7409569B2 (en) * 2004-06-08 2008-08-05 Dartdevices Corporation System and method for application driven power management among intermittently coupled interoperable electronic devices
US20060034167A1 (en) * 2004-07-30 2006-02-16 International Business Machines Corporation Communication resource reservation system for improved messaging performance
US7603459B2 (en) * 2004-09-14 2009-10-13 International Business Machines Corporation System, method and program to troubleshoot a distributed computer system or determine application data flows
US7539989B2 (en) * 2004-10-12 2009-05-26 International Business Machines Corporation Facilitating intra-node data transfer in collective communications
TWI252412B (en) * 2004-12-24 2006-04-01 Hon Hai Prec Ind Co Ltd A system and method for managing main memory of a network server
US7549151B2 (en) * 2005-02-14 2009-06-16 Qnx Software Systems Fast and memory protected asynchronous message scheme in a multi-process and multi-thread environment
US8667184B2 (en) * 2005-06-03 2014-03-04 Qnx Software Systems Limited Distributed kernel operating system
US7840682B2 (en) * 2005-06-03 2010-11-23 QNX Software Systems, GmbH & Co. KG Distributed kernel operating system
JP4536618B2 (ja) * 2005-08-02 2010-09-01 富士通セミコンダクター株式会社 リコンフィグ可能な集積回路装置
US7680096B2 (en) * 2005-10-28 2010-03-16 Qnx Software Systems Gmbh & Co. Kg System for configuring switches in a network
US7948909B2 (en) 2006-06-30 2011-05-24 Embarq Holdings Company, Llc System and method for resetting counters counting network performance information at network communications devices on a packet network
US8289965B2 (en) 2006-10-19 2012-10-16 Embarq Holdings Company, Llc System and method for establishing a communications session with an end-user based on the state of a network connection
US8000318B2 (en) 2006-06-30 2011-08-16 Embarq Holdings Company, Llc System and method for call routing based on transmission performance of a packet network
US8184549B2 (en) 2006-06-30 2012-05-22 Embarq Holdings Company, LLP System and method for selecting network egress
US9094257B2 (en) 2006-06-30 2015-07-28 Centurylink Intellectual Property Llc System and method for selecting a content delivery network
US8194643B2 (en) 2006-10-19 2012-06-05 Embarq Holdings Company, Llc System and method for monitoring the connection of an end-user to a remote network
US8488447B2 (en) 2006-06-30 2013-07-16 Centurylink Intellectual Property Llc System and method for adjusting code speed in a transmission path during call set-up due to reduced transmission performance
US8717911B2 (en) 2006-06-30 2014-05-06 Centurylink Intellectual Property Llc System and method for collecting network performance information
US8407765B2 (en) 2006-08-22 2013-03-26 Centurylink Intellectual Property Llc System and method for restricting access to network performance information tables
US8743703B2 (en) 2006-08-22 2014-06-03 Centurylink Intellectual Property Llc System and method for tracking application resource usage
US8576722B2 (en) 2006-08-22 2013-11-05 Centurylink Intellectual Property Llc System and method for modifying connectivity fault management packets
US9479341B2 (en) 2006-08-22 2016-10-25 Centurylink Intellectual Property Llc System and method for initiating diagnostics on a packet network node
US7843831B2 (en) 2006-08-22 2010-11-30 Embarq Holdings Company Llc System and method for routing data on a packet network
US8040811B2 (en) 2006-08-22 2011-10-18 Embarq Holdings Company, Llc System and method for collecting and managing network performance information
US8228791B2 (en) 2006-08-22 2012-07-24 Embarq Holdings Company, Llc System and method for routing communications between packet networks based on intercarrier agreements
US8102770B2 (en) * 2006-08-22 2012-01-24 Embarq Holdings Company, LP System and method for monitoring and optimizing network performance with vector performance tables and engines
US8619600B2 (en) 2006-08-22 2013-12-31 Centurylink Intellectual Property Llc System and method for establishing calls over a call path having best path metrics
US8189468B2 (en) 2006-10-25 2012-05-29 Embarq Holdings, Company, LLC System and method for regulating messages between networks
US8144587B2 (en) 2006-08-22 2012-03-27 Embarq Holdings Company, Llc System and method for load balancing network resources using a connection admission control engine
US8238253B2 (en) 2006-08-22 2012-08-07 Embarq Holdings Company, Llc System and method for monitoring interlayer devices and optimizing network performance
US8107366B2 (en) 2006-08-22 2012-01-31 Embarq Holdings Company, LP System and method for using centralized network performance tables to manage network communications
US8125897B2 (en) 2006-08-22 2012-02-28 Embarq Holdings Company Lp System and method for monitoring and optimizing network performance with user datagram protocol network performance information packets
US8015294B2 (en) 2006-08-22 2011-09-06 Embarq Holdings Company, LP Pin-hole firewall for communicating data packets on a packet network
US8537695B2 (en) 2006-08-22 2013-09-17 Centurylink Intellectual Property Llc System and method for establishing a call being received by a trunk on a packet network
US7684332B2 (en) 2006-08-22 2010-03-23 Embarq Holdings Company, Llc System and method for adjusting the window size of a TCP packet through network elements
US8307065B2 (en) 2006-08-22 2012-11-06 Centurylink Intellectual Property Llc System and method for remotely controlling network operators
US7808918B2 (en) 2006-08-22 2010-10-05 Embarq Holdings Company, Llc System and method for dynamically shaping network traffic
US8549405B2 (en) 2006-08-22 2013-10-01 Centurylink Intellectual Property Llc System and method for displaying a graphical representation of a network to identify nodes and node segments on the network that are not operating normally
US7940735B2 (en) 2006-08-22 2011-05-10 Embarq Holdings Company, Llc System and method for selecting an access point
US8064391B2 (en) 2006-08-22 2011-11-22 Embarq Holdings Company, Llc System and method for monitoring and optimizing network performance to a wireless device
US8274905B2 (en) 2006-08-22 2012-09-25 Embarq Holdings Company, Llc System and method for displaying a graph representative of network performance over a time period
US8223655B2 (en) 2006-08-22 2012-07-17 Embarq Holdings Company, Llc System and method for provisioning resources of a packet network based on collected network performance information
US8750158B2 (en) 2006-08-22 2014-06-10 Centurylink Intellectual Property Llc System and method for differentiated billing
US8194555B2 (en) 2006-08-22 2012-06-05 Embarq Holdings Company, Llc System and method for using distributed network performance information tables to manage network communications
US8098579B2 (en) 2006-08-22 2012-01-17 Embarq Holdings Company, LP System and method for adjusting the window size of a TCP packet through remote network elements
US8144586B2 (en) 2006-08-22 2012-03-27 Embarq Holdings Company, Llc System and method for controlling network bandwidth with a connection admission control engine
US8130793B2 (en) 2006-08-22 2012-03-06 Embarq Holdings Company, Llc System and method for enabling reciprocal billing for different types of communications over a packet network
US7889660B2 (en) 2006-08-22 2011-02-15 Embarq Holdings Company, Llc System and method for synchronizing counters on an asynchronous packet communications network
US8531954B2 (en) 2006-08-22 2013-09-10 Centurylink Intellectual Property Llc System and method for handling reservation requests with a connection admission control engine
US8199653B2 (en) 2006-08-22 2012-06-12 Embarq Holdings Company, Llc System and method for communicating network performance information over a packet network
US8224255B2 (en) 2006-08-22 2012-07-17 Embarq Holdings Company, Llc System and method for managing radio frequency windows
US7949815B2 (en) * 2006-09-27 2011-05-24 Intel Corporation Virtual heterogeneous channel for message passing
US8473966B2 (en) * 2006-09-29 2013-06-25 D.E. Shaw Research, Llc Iterative exchange communication
US8111692B2 (en) 2007-05-31 2012-02-07 Embarq Holdings Company Llc System and method for modifying network traffic
US8621484B2 (en) * 2007-08-30 2013-12-31 Intel Corporation Handling potential deadlocks and correctness problems of reduce operations in parallel systems
US8713569B2 (en) * 2007-09-26 2014-04-29 Intel Corporation Dynamic association and disassociation of threads to device functions based on requestor identification
US7836198B2 (en) * 2008-03-20 2010-11-16 International Business Machines Corporation Ethernet virtualization using hardware control flow override
US8068425B2 (en) 2008-04-09 2011-11-29 Embarq Holdings Company, Llc System and method for using network performance information to determine improved measures of path states
US8561055B2 (en) * 2009-10-15 2013-10-15 Blackberry Limited Method, system and apparatus for management of push content
US8364810B2 (en) * 2009-11-06 2013-01-29 Research In Motion Limited Method, system and apparatus for management of push content when changing computing devices
US9178949B2 (en) * 2010-03-03 2015-11-03 Blackberry Limited Method, system and apparatus for managing push data transfers
EP2365677B1 (en) * 2010-03-03 2020-04-08 BlackBerry Limited Method, system and apparatus for configuring a device for interaction with a server
US8438341B2 (en) 2010-06-16 2013-05-07 International Business Machines Corporation Common memory programming
US20120117318A1 (en) 2010-11-05 2012-05-10 Src Computers, Inc. Heterogeneous computing system comprising a switch/network adapter port interface utilizing load-reduced dual in-line memory modules (lr-dimms) incorporating isolation memory buffers
US20160212083A9 (en) * 2011-09-07 2016-07-21 Microsoft Technology Licensing, Llc Connection sharing across entities in a distributed messaging system
US20130157639A1 (en) 2011-12-16 2013-06-20 SRC Computers, LLC Mobile electronic devices utilizing reconfigurable processing techniques to enable higher speed applications with lowered power consumption
US20140019570A1 (en) * 2012-07-12 2014-01-16 Raytheon Company Data buffer exchange
US8898680B2 (en) * 2012-10-15 2014-11-25 Oracle International Corporation System and method for supporting asynchronous message processing in a distributed data grid
US9177646B2 (en) 2013-05-06 2015-11-03 International Business Machines Corporation Implementing computational memory from content-addressable memory
US10741226B2 (en) 2013-05-28 2020-08-11 Fg Src Llc Multi-processor computer architecture incorporating distributed multi-ported common memory modules
US9153311B1 (en) 2014-05-27 2015-10-06 SRC Computers, LLC System and method for retaining DRAM data when reprogramming reconfigurable devices with DRAM memory controllers
US9530483B2 (en) 2014-05-27 2016-12-27 Src Labs, Llc System and method for retaining dram data when reprogramming reconfigurable devices with DRAM memory controllers incorporating a data maintenance block colocated with a memory module or subsystem
US9881071B2 (en) 2014-06-10 2018-01-30 Red Hat, Inc. Transport layer abstraction for clustering implementation

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE68920388T2 (de) 1988-09-19 1995-05-11 Fujitsu Ltd Paralleles Rechnersystem mit Verwendung eines SIMD-Verfahrens.
JP2628079B2 (ja) * 1988-11-25 1997-07-09 三菱電機株式会社 マルチプロセサシステムにおけるダイレクト・メモリ・アクセス制御装置
US5386566A (en) * 1991-03-20 1995-01-31 Hitachi, Ltd. Inter-processor communication method for transmitting data and processor dependent information predetermined for a receiving process of another processor
JPH04367963A (ja) * 1991-06-15 1992-12-21 Hitachi Ltd 共有記憶通信方法
US5841963A (en) * 1994-06-08 1998-11-24 Hitachi, Ltd. Dual information processing system having a plurality of data transfer channels
US6052773A (en) 1995-02-10 2000-04-18 Massachusetts Institute Of Technology DPGA-coupled microprocessors
JP2793517B2 (ja) * 1995-03-22 1998-09-03 甲府日本電気株式会社 データ転送制御装置
US5802589A (en) * 1995-09-28 1998-09-01 Agfa Division, Bayer Corporation Data buffering apparatus for buffering imaging data between a raster image processor (RIP) and an output device
US5903771A (en) 1996-01-16 1999-05-11 Alacron, Inc. Scalable multi-processor architecture for SIMD and MIMD operations
US5892962A (en) 1996-11-12 1999-04-06 Lucent Technologies Inc. FPGA-based processor
JPH11120156A (ja) * 1997-10-17 1999-04-30 Nec Corp マルチプロセッサシステムにおけるデータ通信方式
US6076152A (en) 1997-12-17 2000-06-13 Src Computers, Inc. Multiprocessor computer architecture incorporating a plurality of memory algorithm processors in the memory subsystem
US6212610B1 (en) * 1998-01-07 2001-04-03 Fujitsu Limited Memory protection mechanism for a distributed shared memory multiprocessor with integrated message passing support
US6192439B1 (en) 1998-08-11 2001-02-20 Hewlett-Packard Company PCI-compliant interrupt steering architecture
US6647453B1 (en) * 2000-08-31 2003-11-11 Hewlett-Packard Development Company, L.P. System and method for providing forward progress and avoiding starvation and livelock in a multiprocessor computer system
US6886031B2 (en) * 2001-03-29 2005-04-26 Sun Microsystems, Inc. Efficient connection and memory management for message passing on a single SMP or a cluster of SMPs

Also Published As

Publication number Publication date
EP1554654A2 (en) 2005-07-20
WO2004038539A3 (en) 2004-07-08
WO2004038539A2 (en) 2004-05-06
JP2006504184A (ja) 2006-02-02
CA2489969A1 (en) 2004-05-06
US7124211B2 (en) 2006-10-17
EP1554654A4 (en) 2007-12-12
US20040083317A1 (en) 2004-04-29
AU2003270768A1 (en) 2004-05-13

Similar Documents

Publication Publication Date Title
JP4416658B2 (ja) クラスタ型マルチプロセッサシステムの異なるノード上で実行中のプロセス間でのメッセージの明示的な通信のためのシステムおよび方法
US8131895B2 (en) Interrupt management for multiple event queues
US9769274B2 (en) Data transfer, synchronising applications, and low latency networks
EP2406723B1 (en) Scalable interface for connecting multiple computer systems which performs parallel mpi header matching
EP1856623B1 (en) Including descriptor queue empty events in completion events
EP1856610B1 (en) Transmit completion event batching
US6295573B1 (en) Point-to-point interrupt messaging within a multiprocessing computer system
EP1514191B1 (en) A network device driver architecture
US8543747B2 (en) Delegating network processor operations to star topology serial bus interfaces
US20020091826A1 (en) Method and apparatus for interprocessor communication and peripheral sharing
Pang et al. The TH Express high performance interconnect networks
Wilkes Hamlyn—an interface for sender-based communications
JP2004520646A (ja) 周辺デバイスからホスト・コンピュータ・システムに割込みを転送する方法および装置
EP1302855A2 (en) Method of sending a request
EP2383658B1 (en) Queue depth management for communication between host and peripheral device
Hudson et al. The portals 3.3 message passing interface document revision 2.1.

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060908

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060908

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20080813

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080826

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081125

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20091110

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20091124

R150 Certificate of patent or registration of utility model

Ref document number: 4416658

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121204

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131204

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees