JP2010508591A - 並列コンピューティング・システムに使用されるネットワーク・インターフェース・カード - Google Patents
並列コンピューティング・システムに使用されるネットワーク・インターフェース・カード Download PDFInfo
- Publication number
- JP2010508591A JP2010508591A JP2009534899A JP2009534899A JP2010508591A JP 2010508591 A JP2010508591 A JP 2010508591A JP 2009534899 A JP2009534899 A JP 2009534899A JP 2009534899 A JP2009534899 A JP 2009534899A JP 2010508591 A JP2010508591 A JP 2010508591A
- Authority
- JP
- Japan
- Prior art keywords
- data
- processor
- register
- nic
- request
- 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.)
- Granted
Links
- 238000012546 transfer Methods 0.000 claims abstract description 37
- 230000004044 response Effects 0.000 claims description 13
- 210000004027 cell Anatomy 0.000 description 82
- 239000000872 buffer Substances 0.000 description 39
- 238000000034 method Methods 0.000 description 35
- 238000012545 processing Methods 0.000 description 21
- 239000002131 composite material Substances 0.000 description 18
- 238000010586 diagram Methods 0.000 description 14
- 230000006870 function Effects 0.000 description 13
- 238000012937 correction Methods 0.000 description 8
- 230000008569 process Effects 0.000 description 8
- 238000013461 design Methods 0.000 description 6
- 102100038192 Serine/threonine-protein kinase TBK1 Human genes 0.000 description 5
- 238000007726 management method Methods 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 150000001875 compounds Chemical class 0.000 description 4
- 102100036409 Activated CDC42 kinase 1 Human genes 0.000 description 2
- 210000004460 N cell Anatomy 0.000 description 2
- 235000014676 Phragmites communis Nutrition 0.000 description 2
- 230000009471 action Effects 0.000 description 2
- 230000002950 deficient Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 230000002411 adverse Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000013479 data entry Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000002372 labelling Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 230000007480 spreading Effects 0.000 description 1
- 210000000352 storage cell Anatomy 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/167—Interprocessor communication using a common memory, e.g. mailbox
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
- G06F15/17356—Indirect interconnection networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9063—Intermediate storage in different physical parts of a node or terminal
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Mathematical Physics (AREA)
- Computing Systems (AREA)
- Multi Processors (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
【解決手段】ネットワークデバイスは、プライベートローカルメモリとパブリックローカルメモリに分けられるローカルメモリ、ローカルキャッシュ、ワーキングレジスタを含む複数のプロセッサを相互接続するネットワークを介して、データフローを管理するコントローラと、複数のプロセッサに転送されることになっているデータを受け取る、コントローラに結合された複数のキャッシュミラーレジスタとを備え、前記コントローラは、要求に応答して、プロセッサを中断させることなく、要求されたデータをじかにパブリックメモリに転送することと、要求されたデータを転送用の少なくとも1つのキャッシュミラーレジスタを介して、プロセッサローカルキャッシュと、プロセッサワーキングレジスタとに転送することとにより、データを受け取る。
【選択図】図1A
Description
開示されるシステムおよび動作方法は、参照によって全体が本明細書中に組み入れられている以下の特許および特許出願に開示された主題に関するものである。
1.発明者としてCoke S.Reed氏の名前を挙げた「A Multiple Level Minimum Logic Network(マルチレベルの最小論理ネットワーク)」と称する米国特許第5,996,020号。
2.発明者としてJohn Hesse氏の名前を挙げた「A Scaleable Low Latency Switch for Usage in an Interconnect Structure(相互接続構造に使用される低レイテンシ(遅延時間)の短いスケーラブル・スイッチ)」と称する米国特許第6,289,021号。
3.発明者としてCoke Reed氏の名前を挙げた「Self−Regulating Interconnect Structure(相互接続構造の自己調整)」と称する2004年7月9日出願の米国特許出願第10/887,762号。
4.発明者としてCoke S.Reed氏とDavid Murphy氏の名前を挙げた「Highly Parallel Switching Systems Utilizing Error Correction(誤り訂正を利用する高度並列スイッチング・システム)」と称する米国特許出願第10/976,132号。
並列処理要素がノード(ときには、コンピューティング・ブレードと呼ばれることもある)内に位置づけられる場合には、これらのコンピューティング・ブレードは、ネットワーク・インターフェース・カード(ときには、このインターフェースが別のカード上にないこともある)を含む。
一部、このネットワークの特性に基づいて、オペレーティング・システムが選択される。
ネットワーク・インターフェース・カード(NIC)は、それらのプロセッサ、プロセッサ・インターフェース・プロトコル、ネットワーク、オペレーティング・システムの特性を前提として、最高の性能を達成するように設計されている。
これらの複数のプロセッサは、プライベート・ローカル・メモリとパブリック・ローカル・メモリに分けられるローカル・メモリ、ローカル・キャッシュ、及びワーキング・レジスタを含む。
このネットワーク・デバイスはさらに、これらの複数のプロセッサに転送されることになっているデータを受け取る、上記コントローラに結合された複数のキャッシュ・ミラー・レジスタも含む。
上記コントローラは、要求に応答して、このプロセッサを中断させることなく、要求されたデータをじかにパブリック・メモリに転送することで、また、要求されたデータを転送用の少なくとも1つのキャッシュ・ミラー・レジスタを介して、プロセッサ・ローカル・キャッシュにも、プロセッサ・ワーキング・レジスタにも転送することで、データを受け取る。
これらの欠点がData Vortex(登録商標)ネットワークにより除去されることを前提として、短いパケットに基づいて設計された新たなオペレーティング・システムが使用できる。
Data Vortex(登録商標)ネットワークおよび新たなオペレーティング・システムを用いて可能となる改良は、性能を最適化する新型のネットワーク・インターフェース・カードにより促進される。
本明細書中の開示内容は、これらの改良されたシステムへの使用に適した新規なネットワーク・インターフェース・カードを述べている。
本明細書中に述べられるNICのいくつかの実施形態の特徴は、NIC上のData Vortex(登録商標)により、短いパケットがレジスタに入れられることである。
これらのレジスタは、このシステムの全域からデータを集め、かつ、そのデータを、これらのプロセッサでいつでも使用できる状態にするのに役立つものである。
これらのレジスタは、そのキャッシュの一部のコピーをプロセッサに保存する(mirror)。一実施形態では、それぞれのレジスタには、複数のデータ入力項目(データエントリ)が入っている。
いくつかの実施形態では、これらのレジスタ、例えばキャッシュ・ミラー・レジスタ(CMR)と呼ばれるもの、あるいは、ギャザー・スキャッタ・レジスタと呼ばれるものにはそれぞれ、NIC上にキャッシュの一部を「コピー保存(mirrored)」するようにデータのキャシュ・ラインが入っている。
別のNIC構成要素は、プロセッサに転送されることになっているデータを受け取るキャッシュ・ミラー・レジスタ(CMR)の集まりである。
データを、ローカル・メモリのプロセッサ・メモリ(プライベート・ローカル・メモリとパブリック・ローカル・メモリに分けられる)に受け取るように求めるプロセッサは、このような転送を処理する要求を上記コントローラに送る。
この転送がパブリック・メモリに行われる場合には、NICは、プロセッサを中断させることなく、このような転送を処理する。
この転送が、1)プロセッサのキャッシュ、2)プロセッサ・ワーキング・レジスタ、または、3)プロセッサで管理されるパブリック・メモリに行われる場合には、受取り側のコントローラは、データを受け取るもの(1つまたは複数)となるレジスタ内の記憶場所または記憶場所の集まりだけでなく、レジスタまたはレジスタの集まりも選択して、そのレジスタの識別子を受取り側のメモリ・マネージャに知らせる。
一実施形態では、このレジスタ識別子は、送り側のコントローラにも送られる。
送り側のコントローラは、受取り側のノード、および適切なノード上の受取り側のレジスタの識別子を、データパケット・ヘッダーに入れる。
1つまたは複数のパケットを含むメッセージを適正なCMRに送る。
レジスタには、単一の供給源からのパケット、または複数の供給源からのパケットが入っていることがある。
レジスタには、ノード・プロセッサに受け渡されることになっているキャッシュ・ラインが入っていることが多い。
異なる供給源からのパケットを同一レジスタに入れることは、データを集める効率的なやり方である。
すべてとは限らないが、いくつかの場合に、パケットをリモート・ノードに向けて送るプロセッサは、このターゲット・ノード・コントローラにパケットを送って、このような転送をスケジュールすることでデータを要求するようにリモート・ノードに指示する。
この例示開示内容は、これらの構成要素の物理的な相互接続を述べ、さらにデバイス間のデータの流れも述べている。
Data Vortex(登録商標)は、このタスクを処理するのに充分適したスイッチである。
この例示開示内容は、それらの処理ノードをネットワーク・システムに接続する手段および方法を述べている。
有用なクラスのアプリケーションでは、ネットワーク・システム内の所与のプロセッサはたいてい、アイドル状態であり、処理ノードから処理ノードへとメッセージ・パケットが移動するのに費やされる時間により、少なくとも一部望ましくない状態がもたらされる。
移動時間は、レイテンシと呼ばれる。
レイテンシの一因となる第1のファクタは、メッセージ・パケットがネットワーク上で費やす時間である。
この時間は、上記の組み入れられた特許および特許出願に記載されているネットワーク・システムを用いることで、大幅に減らされる。
この時間の別の部分は、ネットワークとコンピューティング・ノードとの間のインターフェースにおいて、ハードウェアとソフトウェアのオーバーヘッドによるものである。
このシステムでは、インターフェース・レンテンシが大幅に減らされる。
この例示構造および例示システムはまた、プロセッサの中断が極力減らされるという利点もある。
この例示構造および例示システムの他の利点は、ギャザー動作とスキャッタ動作を効率的に処理することである。
それぞれのコンピューティング・ノードは、複数のスイッチ・チップを利用するネットワークにより接続された1つのNICを持っている。
例示実施形態では、それぞれのNICは1つまたは複数のData Vortex(登録商標)スイッチ・チップを含み、また、このネットワークは1つまたは複数のData Vortex(登録商標)スイッチ・チップを含む。
このコンピューティング・ノードは、1つまたは複数のマイクロプロセッサと、関連するメモリを含む。
さらに、このコンピューティング・ノードは、ディスク・ドライブと、おそらく他のハードウェアを含むことがある。
この例示設計は、2つの処理チップを持っている。
他の設計は、チップの数が異なる場合もある。
この例示プロセッサは、関連するオフチップ・キャッシュを持っている。
他の設計では、このプロセッサ・キャッシュのすべてがプロセッサ・チップ上にあることもある。
図1Aの例示設計では、プロセッサとNICとの間のやり取りのすべてが、プロセッサ1(150)により実行される。
他の設計では、NICは、プロセッサ1およびプロセッサ2とじかにやり取りできる。 NICは、プロセッサ1を介して、プロセッサ1のパブリック・メモリ156にアクセスする。
プロセッサ1からNICへのやり取りは、この例示開示内容では、メッセージ・パケットをNICに送ることとして述べられている。
実際は、プロセッサ1は、この動作を、メモリ・マップドI/O(MMIO)への格納を行うものと見なしている。
多くの場合に、パケットを送る用語は、実際は、記述の前後関係により、異なる解釈を持つことがある。
これら3つの構成要素の動作は、このシステムを通してメッセージ・パケットを追跡する例により述べられる。
プロセッサ2は、図2に示されるNICコントローラ120のコントローラ・ロジックユニット250内にあるメモリ・バッファ・スタック230中の要求メモリ・バッファ220にプロセッサ2で要求を書き込ませることで、その要求を、プロセッサ1を介してコントローラ120に送る。
このコントローラは、これらの要求が入っている要求バッファのスタックを含む。
この要求バッファがオーバーフローしないようにする一方法は、所与の時間に、限られた数の未完了要求(outstanding request)しか認めないことである。
この要求には、ターゲット・データを含むノードの識別子が入っており、さらに、このデータを格納する記憶場所の物理アドレスまたは仮想アドレスも入っている。
5つのケースが考察される。
コンピューティング・ノード上のプロセッサPR(150または152)は、データをリモート・ノードのパブリック・メモリから、プロセッサPRのパブリック・メモリ空間内の記憶場所に転送するように求める。
現行例よりも興味深いケースでは、プロセッサPRは、この記憶場所の仮想アドレスを与える。
この要求は、コントローラ120に要求パケット(request packet)を送ることで、出される。
プロセッサPRがプロセッサ2(152)である場合には、この要求は、プロセッサ1(150)を通る。
この要求パケットは、ライン170とライン102上を進む。
この要求パケットには、要求番号(request number)を示すフィールド(図2に示されるバッファ230内の記憶場所)、この要求がリモート・ノードのローカル・パブリック・メモリ中のデータに対するものであることを示すフィールド、転送されるデータの量が入っているフィールド、転送されるデータの仮想アドレス(この仮想アドレスは、そのデータがリモート・ノード上にあることを示している)を示すフィールド、および、プロセッサPRがアクセスするメモリ上においてデータが格納される記憶場所の仮想アドレスを示すフィールド、が入っている。
コントローラ120は、この仮想アドレスを持つデータが格納されているリモート・ノードのラベル(標識)を含むテーブルを持っている。
図2を参照すると、コントローラ・ロジックユニット250は、その要求を、メッセージ番号で示されるバッファ230内の記憶場所に入れる。
プロセッサは、限られた数の未完了要求しか持つことができないために、バッファ230は決してオーバーフローしない。
一実施形態では、要求は、受け取られる順番に処理される。他の実施形態では、要求は、一部、サービス基準の品質に基づいて処理される。
データが適正な記憶場所にうまく受け渡されるまで、この要求は、要求バッファ(request buffer)230にとどまる。
コントローラ・ロジックユニット250は、要求バッファ230からの要求にアクセスし、また、例えばコンピューティング・ノードの物理的記憶場所を格納している物理的ページテーブル・マップ(PTM)240にアクセスすることで(ときには、アクセスされるメモリの仮想アドレスの先行ビットに基づいて)、転送されるデータを格納しているコンピューティング・ノードの物理的記憶場所を捜す。
次に、コントローラ・ロジックユニット250は、データに対する要求を、アクセスされるデータ(このデータは、送り側のプロセッサPSに関連する)を格納しているコンピューティング・ノードに関連するNICに送る。
この要求パケットには、バッファ230内の要求の物理的記憶場所である要求パケット番号を示すフィールドが入っている。
この要求は、スイッチング・システムを介して、ターゲットNICに渡される。
図3は、NIC100に接続され、かつスイッチング・システム300にも接続されたブレード110を示している。
例示実施形態では、スイッチング・システム300は、上記の組み入れられた特許および特許出願に記載されているタイプのData Vortex(登録商標)である。
この物理的記憶場所が決定されて、それがバッファ230内の要求パケットの追加フィールドに追加される。
この設計の一面は、TLB内の物理的記憶場所へのアクセスが、この要求パケットを送ることと同時に行われて、このような探索(ルックアップ)で、このプロセスへのレイテンシが増さないようにすることである。
NIC上のメモリ量は、TLB210がローカル・メモリの物理アドレスだけを保持するという事実により、また、PTM240が、ブレード上のメモリのアドレスではなく、ブレード・アドレスだけを保持するという事実により、減らされる。
公知の技術を使用して、ハッシング技法を実行し、かつ、最近アクセスされたアドレスを格納するための特定の記憶場所を含めるように、TLBとPTMを設計することもある。
シーケンスの構成要素(メンバ)を、このシーケンスの第1の構成要素からのオフセットに基づいて格納するのに用いられる技法は、Cなどの言語の特徴である。
この技法は、TLBのサイズを減らすのに有利に使用できる。
コントローラ・ロジックユニット250は、この要求をバッファ232に入れる。
複数の様々な技法を使用して、バッファ232がオーバーフローしないようにすることもある。
一実施形態では、バッファ232は、このシステム内に、処理ノード(ブレード)の数のN倍の要求数の容量を持っている。
このシステムは、いかなるノードもN個よりも多くのデータパケットを個々のリモート・ノードには要求できないというルールで制約を受ける。
一実施形態では、バッファ232は、N個のセクションに分けられ、しかも、それぞれのブレード用に1つのセクションが確保される。
他の実施形態では、送り側のコントローラは、要求を送る許可を求める。
さらに他の実施形態では、バッファの調整がまったく行われず、また、フル・バッファ(全バッファ、full buffer)232を用いてのコントローラへの要求が拒否されて、ACKが戻される。
確実にバッファ232がオーバーフローしないようにするために、トークンの使用を含め、他の技法が使用されることもある。
超大型のシステムでは、バッファ232は、N個のセクションに分けられ、しかも、一群のブレード(例えば、キャビネット内のブレードのすべて)用に1つのセクションが確保される。
次に、要求されたデータは、そのヘッダーに入っているユニット230内のパケット要求のアドレスとともに、要求側のコントローラ・ユニットに戻される。
コントローラ・ロジックユニット250は、その物理アドレスをバッファ230から得て、そのデータを、ローカル・パブリック・メモリ空間内の適正な物理アドレスに送る。
これらのパケットがそれぞれ到着すると、コントローラ・ロジックユニット250は、特定された要求に関連する到着パケットの数の現在合計高を維持する。
したがって、転送が完了したときに、コントローラ・ロジックユニット250は通知がある。
完了時に、コントローラは、確認応答(ACK)をプロセッサPRとプロセッサPSに送る。
ACKに応答して、プロセッサPRは、別の要求で使用される要求パケット番号を解放する。
ACKに応答して、プロセッサは、データに対する未完了要求の数の記録を取るカウンタを減らす。
データがうまく転送された(いくつかの実施形態では、ACKにより表される)後で、コントローラ・ロジックユニット250は、別の要求に対して、バッファ230内の該当記憶場所を解放する。
いくつかの実施形態では、所与の要求に応答して受け渡されるパケットが、順番に到着する。他の実施形態では、所与の要求に関連するパケットは、コントローラによりパケットを順番に並べられるようにするパケット番号を、それらのパケットのヘッダーに含む。 中央スイッチ・ハブに複数のスイッチ・チップを使用するさらに他の実施形態では、複数のライン124は、この中央スイッチ・ハブからデータを受け渡す。
また、メッセージ内でのパケットの適正な配置は、そのパケットがどのラインに到着するかによって決まる。
ケースIの説明は、1つまたは複数のパケットをローカル・パブリック記憶素子に入れることのできるメモリ・コントローラを、コントローラ120が利用することを前提としている。
プロセッサPRは、リモート・パブリック・メモリ内のデータを、プロセッサPRのキャッシュまたはワーキング・レジスタ内の記憶場所に格納するように求める。
プロセッサPRは、そのデータを、メモリ・バッファ130内に位置づけられたCMR160に格納するように求める。
それぞれのCMRレジスタはロックを含み、そのロックが解除されるまで、データがプロセッサPRに流れないようにしている。
プロセッサPRは、どのCMRユニットが使用してないか追跡する記憶場所を別にしておく。
図4は、それぞれのCMRがN個のセル(記憶場所)を含んでいるM個のCMRユニットを含むバッファ130を示している。
データを要求するプロセッサは、関連するNIC上のコントローラ120に要求を送って、所与の仮想アドレスでのデータ項目を、バッファ130内のM・Nセルの1つまたは複数に送るように求める。
コントローラ・ロジックユニット250は、PTMを利用して、その要求されたデータが入っているノードの物理的記憶場所を突き止める。
要求パケットは、このデータを受け取るセル(1つまたは複数)のアドレスだけでなく、受取り側のノードの物理アドレスも含む。
この要求パケットはまた、その要求されたデータの仮想アドレスも含む。
この要求パケットは、データを含むノードにシステム・スイッチ300を介して進む。 ケースIの場合と同様に、受取り側のコントローラ・ロジックユニット250は、要求をバッファ(図示されてない)に入れて、要求を処理できるまで、その要求を保持する。 リモート・データを含むノードが要求を処理するときに、そのノードは、ローカルTLBにアクセスして、そのデータの物理アドレスを見出す。
そのデータを含むパケットは、ライン124上で、プロセッサPRに関連するNIC上のバッファ144に進む。
バッファ144にオーバーフローさせない方法は、バッファ232のオーバーフロー管理と同一の方法で処理される。
NICスイッチに到着したデータパケットは、データ・ライン118を介して、適正なCMRセルに送られる。
NICスイッチが512個の出力ポートを持ち、また、それぞれのCMR内のセルの数が8であって、かつNが64に等しい例では、それぞれのセルは、この場合、NICスイッチの一意の出力ポートに接続されることもある。
NICスイッチ140がData Vortex(登録商標)スイッチであり、また、これらのポートのそれぞれが2Gb/秒にて動作する場合には、CMRに入る最大バンド幅は1テラビット/秒を超える。
プロセッサはまた、ローカル・パブリック・メモリからの要求データをプロセッサNIC上のCMRに送るように求めることもある。
このデータは、データ・ライン106を通り、またスイッチ130によりライン120に切り替えられて、NICスイッチまで進む。
多数のCMRセルを可能にする一実施形態では、CMRは複数のバンクに分けられ、また、それぞれのバンクは、NICスイッチ内の出力ポートの数に等しい数のセルを持っている。
このデータ・ヘッダー内の上位のビットにより、このデータは、NICスイッチと、CMRのバンクとの間のツリーを通って分岐することができる。
CMRのバンクが4つある上記構成が図5に示されている。
データパケットをNICスイッチからCMRセルに運ぶラインの一部だけが図示されている。
例えば、プロセッサは、一連のデータ項目を、リモート記憶場所に連続的に格納して、プロセッサCMRバッファ内のセル行に入れるように求めるか、あるいは、一連のデータ項目を、プロセッサCMRバッファ内のセル列に格納するように求めることもある。
所与の要求に関連するパケットのそれぞれは、CMR内のセルのアドレスだけでなく、要求番号も含む。
異なる系列のデータ項目をセル列に格納すれば、プロセッサは、この例示構造および例示システムで可能となる強力で、かつ有用なコンピューティング・パラダイムで、複数のデータ・ストリームに同時にアクセスできる。
所与の要求に関連するパケットのすべてが、プロセッサPRに関連するNICで受け取られるときには、プロセッサPSにACKが戻される。
CMRライン情報を追跡する一方法は、コントローラ・ロジックユニット250内にある特定の組のM個のレジスタ(描かれてない)によって管理される。
これらのレジスタは、ここでは「CMRフル・ステータス・レジスタ」と呼ばれている。
プロセッサPRが複数の要求を出して、データをGSRの行Kに入れる前に、プロセッサPRは、行K中のどのセルがこのデータを受け取ることになっているのか突き止める。 プロセッサPRは、特定のパケットをコントローラ・ロジックユニット250に送って、その情報を示す。
プロセッサが、データをCMRレジスタのサブセットSに入れる要求を送る場合には、この要求に関連する「CMRフル・ステータス・レジスタ」のすべてが更新される。
データパケットが、プロセッサPRに関連するNICに戻ると、「CMRフル・ステータス・レジスタ」内のデータが変更される。行Kに予定されるパケットが到着すると、「CMRフル・ステータス・レジスタ」K内の値が減らされる。
「CMRフル・ステータス・レジスタ」の内容がゼロに減らされるときには、CMRの行Kに予定されるデータのすべてが到着しており、コントローラ・ロジックユニット250は、普通ならデータが行Kから、PRに関連するキャッシュに、あるいはPRのワーキング・レジスタに流れ込まないようにするロックを解除する。
いくつかの実施形態では、一定の時間後では、上記ロックが解除される前にデータがCMRレジスタから転送されて、CMRレジスタ内のデータが有効でないという指示が出される。
このCMR内のデータが有効であるかどうかを決定する一方法は、CMRレジスタ内の最左端の記憶場所にデータを送れないようにすることである。
他のデータ項目のすべてが到着しているときに、その最左端の記憶場所にコードワードを入れて、そのデータのすべてが到着していることを示す。
上記ロックが解除されるためではなく、タイムアウトのために、データが送られる場合には、その記憶場所にはコードワードを入れず、プロセッサは、そのデータが無効であると知らせることができよう。
プロセッサPは、リモート・プロセッサで追加CMR(図示されない)に書き込ませ、また、その追加CMRをローカル・プロセッサで読み取らせることで、短いメッセージをリモート・プロセッサに送る。
バッファがオーバーフローしないようにする方法は、バッファ232のオーバーフロー管理と同一のやり方で処理される。
送り側のプロセッサは、その短いメッセージを受取り側のコントローラに送り、そこで、ローカルで読み取って、リモートで書き込むことのできるCMRの中で、そのデータを管理する。
プロセッサPは、プロセッサPに対してローカルであるローカルNICコントローラにメッセージ・パケット(1つまたは複数)をプロセッサPで送らせ、また、このメッセージ・パケットをターゲット・コントローラに上記ローカルNICコントローラで送らせることで、短いメッセージをリモート・パブリック・メモリに送る。
ターゲット・コントローラ内の特定のバッファ空間が、これらのメッセージを保持する。
バッファがオーバーフローしないようにする方法は、バッファ232のオーバーフロー管理と同一のやり方で処理される。
これらの短いメッセージは、アトミックなメモリ操作物(atomic memory operation)と呼ばれている。これらの短いメッセージを使用すれば、分散形共用メモリ・マシン(distributed shared memory machine)内のメモリを制御できる。
プログラミング言語UPCでは、少数のアトミックなメモリ操作物は、分散形共用メモリ・マシン上でのプログラムの総体的な実行を容易ならしめる。
プロセッサは、例えばライン172を介して、じかにメモリにアクセスすることで、データを、ローカル・パブリック・メモリ空間に送るか、あるいはローカル・パブリック・メモリ空間から受け取る。
このような操作は、競合状態を避けるために慎重に行われる。
プロセッサはまた、ライン180を介してローカル・パブリック・メモリに接続されたコントローラを経ることで、ローカル・パブリック・メモリにアクセスすることもある。
このコントローラを介してプロセッサがローカル・パブリック・メモリにアクセスする利点は、ローカル・パブリック・メモリにアクセスポイントをただ1つ持つことで、競合状態を避けている点である。
動作の詳細は、プロセッサによって決まる。
いくつかのプロセッサ(「AMD Opteron」プロセッサを含む)では、メモリ・コントローラは、このプロセッサ内にあり、また、このNICでは、TLBを省略できる。
このレイテンシは、NIC100の特徴の全部または大部分を単一のチップ上に取り入れることで、さらに減らされることもある。
第2の実施形態では、これらのレジスタを使用して、データをプロセッサに転送するとともに、プロセッサから転送する。
第1の実施形態では、NICレジスタは、「キャッシュ・ミラー」と呼ばれた。
第2の実施形態では、NICレジスタは、「ギャザー・スキャッタ」レジスタと呼ばれる。
図6を参照すると、略ブロック図は、異なるやり方でアクセスする2つのタイプのメモリを含むかもしれない一実施形態を示している。
第1のタイプのメモリ644は、メモリ・コントローラを介して、プロセッサに接続される。「AMD Opteron」プロセッサの場合には、メモリ・コントローラは、コンピューティング・コア(1つまたは複数)と同一のシリコン・ダイ上にある。
第2のタイプのメモリ642は、メモリ・コントローラにより、ギャザー・スキャッタ・レジスタに接続される。
UPCなどのプログラミング言語(computing language)が使用される場合には、2つのタイプのメモリはそれぞれ、パブリック記憶領域とプライベート記憶領域に分けられることがある。
データ転送の要求は、これらのプロセッサから生じる。
図6では、このプロセッサは複数のユニット638を含み、また、それらのユニット638はそれぞれプロセッサ・コアと複数レベルのキャッシュを含む。
当業者であれば、ここに提示された例が、異なるサイズ・ブロックのデータを移す広範囲のプロセッサおよびメモリ・コントローラに対応するものと解釈できるであろう。
ここに記述される技法は、DRAM644から転送されるブロックが、DRAM642から転送されるブロックに等しくないようなケースに当てはめられる。
このシステムは、2つのケースを考慮に入れることで説明される。
この要求の目的は、データを、ギャザー・スキャッタ・レジスタから、処理コア638内のローカル処理コア・ワーキング・レジスタ、処理コア638内のキャッシュまで、メモリ644まで、あるいは、RN上のメモリ642まで移せるようにすることである。
該当するケースでは、送り側の記憶場所は、リモート・メモリ644、メモリ642、またはリモート・ギャザー・スキャッタ・レジスタ630である。
処理コア638は、要求パケットを、ライン654を介してSNギャザー・スキャッタ・レジスタ630内の記憶場所に送ることで、要求を出す。
この要求は、RN上のプロセッサのローカル・ギャザー・スキャッタ・レジスタ内の8つの異なる記憶場所に8つの64ビット・ワードを受け渡すように、特定のリモート・ノードに求めることが多い。
このギャザー・スキャッタ・レジスタ内のロジックは、その要求パケットをRN内のNICコントローラに転送する。
RN内のNICコントローラは、その要求にラベルを割り当てて、NICコントローラ内で、その要求のラベルに設定された記憶場所の中でその要求のコピーを維持する。
単純な実施形態では、RN内の記憶場所は、SNのアドレス、すなわち、SNからのデータに対する特定の要求の識別子REQIDに設定される。
次に、RNは、その要求を、中央ハブ・スイッチを介して、SNで表されるリモート・データ送り側NICに送る。
SNコントローラは、記憶場所を割り当てて、その要求を格納する。
単純な実施形態では、SNは、その要求をアドレス(RN、REQIDのアドレス)に格納する。
この格納方式の有用な一面は、RNが、SN内でその要求を格納する場所に関する情報、SNが記憶場所を割り当て、かつ特定のパケットをRNに送って、その記憶場所をRNに知らせることによっても達成できる条件を持つことである。
様々な間接探索方式(lookup scheme)が実施されることもある。
8つの64ビット・ワードは、中央ハブ内の8つの異なるスイッチ・チップに転送され、次に、ノードRN上のNICスイッチ640に転送される。
これら8つのパケットのそれぞれは、要求されるデータ、RNのアドレス、要求ラベル、このデータを入れるギャザー・スキャッタ・レジスタ内のターゲット記憶場所、および、要求される8つのパケットのうちのどれを送ろうとするのか示す、整数(0、1、...7)から選ばれる一意のデータパケット識別子を含む。
パケットがうまく受け渡されると、受取り側のレジスタは、このデータパケット識別子を持つローカルACKを、その要求を格納しているRNコントローラ内の記憶場所に送る。
ACKを適正な記憶場所に受け渡す非常に効率的な方法は、Data Vortex(登録商標)スイッチ(描かれてない)をライン612上に、またはギャザー・スキャッタ・レジスタのハードウェア内に使用することである。
8つのローカルACKがすべて受け取られているときには、RNは、リモートACKを中央ハブ・スイッチを介してSN内のNICコントローラに送る。
ACKは、Data Vortex(登録商標)スイッチをRN上のNICコントローラに用いることで、その要求を保持する記憶場所に送られることもある。
ACKを受け取るときには、その要求パケットは廃棄され、また、その要求を保持する記憶場所は、別の要求パケットのために解放されることもある。
その要求に関連する8つのパケットのうちの1つが適正に受け取られない場合には、NACは、そのパケットを再送するように求める。
パケットのいっぱいのキャッシュ・ラインが受け取られているときには、そのキャッシュ・ラインは、その要求パケットで指定されるように、DRAM642、DRAM638内の正しい記憶場所、または処理コア638内のキャッシュに転送されることもある。
このキャッシュ・ラインがいっぱいであるかどうか決定する一方法は、第1の実施形態の記述の中で説明されている。
第1の実施形態の場合と同様に、タイミアウトによりデータを送ることも処理される。
次に、このプロセスは、第1のケースの場合と同様に進行する。
図7は、この中央スイッチ・ハブに「AMD Opteron」プロセッサとData Vortex(登録商標)チップを使用する特定の並列コンピューティング・システムを示す図解例である。
この図解例の装置および動作方法は、他のプロセッサを用いる非常に広範なクラスの並列システムに当てはめられる。NICからデータを受け取る中央スイッチ・ハブ・チップのそれぞれに、ライン752により所与のコンピューティング・ノードが接続される。
NICにデータを送る中央スイッチ・ハブのそれぞれからデータを受け取るために、ライン754によりコンピューティング・ノードが接続される。
多くの有用な「1ホップ(one hop)」システムでは、データを、NICのすべてから受け取り、またNICのすべてに送るために、中央スイッチ・ハブ・チップのそれぞれが接続される。
例えば、中央スイッチ・ハブに、256のコンピューティング・ノードと40のData Vortex(登録商標)スイッチ・チップを含む「1ホップ」システムは、コンピューティング・ノード上の256のNIC出力リンク752(中央ハブ・スイッチ・チップのそれぞれに1つ)と、40のNIC入力リンク754(それぞれの中央ハブ・スイッチ・チップから1つ)を用いて構成されることもある。
レジスタの集まり710は、単純レジスタ722を含み、さらに複合ギャザー・スキャッタ・レジスタ720も含む。
NICはまた、出力スイッチ740と入力スイッチ730も含む。
例示NICはまた、誤り訂正を実行して、ACKとNAKを送るEC−ACKユニット780も含む。
Data Vortex(登録商標)スイッチは、それらのスイッチとしての使用に充分適している。NIC上には、DRAMもメモリ・コントローラもまったく含まれない。 オンプロセッサ・メモリ・コントローラ774を介して、システム・メモリ706にアクセスする。コンピューティング・ノード間で転送されるすべてのデータは、ギャザー・スキャッタ・レジスタを使用する。
図7に示されているNICは、別個のNICコントローラを含まない。
図1A、図1B、図2、図6に示されるNICコントローラの機能は、「Opteron」プロセッサにより、さらに、ギャザー・スキャッタNICレジスタに組み入れられた計算ハードウェア(computational hardware)により実行される。
セルの数は、まったく一般的なものである。
この図解例では、セルの数は8に設定され、また、セル内のビットの数は64に設定されている。
他の例は、それよりも多くのセル、またはそれよりも少ないセルを持つこともある。
最下部の単純NICレジスタにSNR(0)のラベルが付けられ、また、SNR(0)のすぐ上のレジスタにはSNR(1)のラベルが付けられるといった具合にNICレジスタに番号が付けられて、T+1の単純レジスタを持つシステムの場合には、SNR(0)、SNR(1)、SNR(2)、...、SNR(T)の順番列(シーケンス)を作り出すように、これらの単純レジスタにラベルが付けられる。
単純レジスタSR(D)内のセルにラベルを付けたものが、SR(D,0)、SR(D,1)、...、SR(D,7)である。
最初のt個の単純ノード・レジスタ、すなわちSNR(0)、SNR(1)、...、SNR(t−1)を使用して、残りの単純ノード・レジスタ、すなわちSNR(t)、SNR(t+1)、SNR(t+2)、...、SNR(T)のステータスをたどるように、整数t<Tが存在する。
U+1の複合レジスタを持つシステムでは、これらの複合レジスタには、CNR(0)、CNR(1)、...、CNR(U)のラベルが付けられる。
この複合レジスタCNRは、H(ヘッダー・レジスタ)とP(ペイロード・レジスタ)という2つのレジスタを含む。
図9は、複合レジスタ内のセルの一覧表を示している。
CNR(N)のK個のセル内のパケットは、H(N,K)にヘッダーを持ち、また、P(N,K)にペイロードを持っている。
複合NICレジスタの位置Kにある2つのセル内のパケットには、単にHKとPKとしてラベルが付けられる。
ライン760およびライン732を介して入るデータは、図5に示される技法を用いて、あるいは、何か他の適切な手段により、広げられる(fanned out)ことがある。
図7は、広げる手段(ファンアウト)なしの構造を示している。
これらのNICレジスタの個々のセルは、個々にアドレス指定可能である。
それゆえ、所与のレジスタは、いくつかの異なるコンピューティング・ノードからデータを同時に受け取ることができる。
多数のセルがデータを受け取っている場合には、そのデータは、中央スイッチ・ハブ内の異なるスイッチ・チップ750から送られる。
同様に、所与のNICレジスタは、データを、複数のセルからライン760を介してプロセッサに、またライン742を介してNIC出力スイッチに同時に送ることができる。 NIC出力スイッチに到着したデータは、ライン734を介してNIC入力スイッチに送られて、NICが、プロセッサに受け渡されることになっているデータをもっとも有用な形式で再構成できるようにすることもある。
NIC出力スイッチに到着したデータはまた、ライン752を介して中央スイッチ・ハブに送られることもある。
所与の時間に単一NICレジスタから送られるデータは、このシステムの全域で、1つまたは複数のコンピューティング・ノード700上の他の多数のNICレジスタに分散されることもある。
このプロセッサは、リモート・デバイスに書き込むことができる。
この例では、プロセッサは、NICレジスタに書き込むことで、メッセージ・パケットをリモート・ノードに送る。
このプロセッサは、ここではリモート・デバイス内の特定記憶場所への「send when ready(実行可能状態時に送る)」コマンドとして基準とされる1つまたは複数のコマンドを、リモート・デバイスに出すことができる。
制御に使用されるセル(セルH0またはセルP0)内の指定したビット(1つまたは複数)を、転送されるデータがリモート・デバイス内の特定記憶場所にあることを示すように設定する限り、「send when ready」コマンドは、リモート・デバイス上のハードウェア・インターフェースとともに、このプロセッサに64バイトのデータを転送させる。
プロセッサが、クラス「send when ready」のコマンドを出し、かつ、所定の設定時間間隔(「TIMEOUT」)が経過したときには、データのすべてが到着したとは限らない場合でも、リモート・デバイス上の記憶場所の内容が転送される。
TIMEOUT状態の結果としてプロセッサにデータを転送することがまれな事象であるように、数値TIMEOUTが設定される。
TIMEOUTが実際に発生する場合には、データは、HyperTransportTMを介してプロセッサに転送されるが、ただし、このプロセッサは、パケット内に適正なデータがないことを制御セル・ビットが示すことに留意している。
プロセッサが無効なパケットを受け取る場合には、プロセッサは、そのオペレーティング・システムで示されるやり方で応答する。
プロセッサは、クラス「send now(今、送る)」の1つまたは複数のコマンドを出す場合もある。
その場合、データを直ちに転送する。このコマンドは、そのデータが所定の場所にあることをプロセッサが確認したときだけ、使用されるべきである。
データが実行可能状態にあることをプロセッサに知らせる方法があるが、ただし、プロセッサは、通知を受け取るときは必ずレイテンシを増すために、上記コマンドは、実行するのにさらに多くの時間を要することがある。
このコマンドの利点は、転送されたデータ内のどんなフィールドも、制御情報用に確保する必要がないことである。
この要求は、要求パケットをPSNDに送るプロセッサPREQにより出される。
この要求パケットは、ヘッダーとペイロードから成っている。
ペイロードは、その要求されたデータのアドレス(1つまたは複数)をノードPSND上に含み、さらに、データが送られることになっているノードPREQ上にも、その記憶場所を含む。
このデータは、ノードPREQ上の1つまたは複数の単純NICレジスタまたは複合NICレジスタに送られる。
他の例では、プロセッサPSNDは、PSNDのローカル・コンピューティング・ノード以外のコンピューティング・ノード上のレジスタにデータを送るように求めることもある。
PSNDノード上のデータの記憶場所の記述は、広範囲のフォーマットを用いて伝えられることもある。
このようなデータ記述の単純な例は、メモリ内の指定した記憶場所からスタートする所定の長さのストリング用のものである。
このデータの受取り側記憶場所は、単純NICレジスタまたは複合NICレジスタ内のセルのリストとして与えられている。
いくつかの転送例は以下の通りである。例1)は、その要求が、記憶場所Xからスタートする長さのデータ・ストリング(5・64)を、SNR(D,0)、SNR(D,1)、SNR(D,2)、SNR(D,3)、SNR(D,4)の単純レジスタ・セルに入れるものであるかもしれないわかりやすい例を示している。
受取り側記憶場所の記述のフォーマットは、広範囲のフォーマットで与えられることもある。
このデータは、5つのパケットでこのシステムの全域に送られることもある。
その場合、このストリングの最初の64ビットは、単純ノード・レジスタ・セルSNR(D,0)に送られ、このストリングの次の64ビットは、単純ノード・レジスタ・セルSNR(D,1)に送られるといった具合である。
この例では、ペイロードと、そのヘッダーには、PREQを含むコンピューティング・ノードのアドレスとSNR(D,1)のアドレスが、おそらく誤り訂正ビットを含む他の情報とともに入っているであろうから、1つのデータパケットは、このストリングの最初の64ビットを持っている。
例2)は、ネットワーク上のコーナーターン(corner turn)を示している。
同一のデータ・ストリングを、CNR(D,2)、CNR(D+1,2)、CNR(D+2,2)、CNR(D+3,2)、CNR(D+4,2)の複合レジスタ・セルに入れる要求が出される。
転送での第3のパケットは、ペイロード内に64ビットの第3のグループを持ち、またセルP(D,2)を持っている。
これらの転送用のアドレスを記述するのに、広範囲のフォーマットが用いられることもある。例3)は、一連の構造体(structure)からの指定した部分を含むデータを転送して、そのデータを、定められたストライドにて受取り側のNICレジスタに入れることを示している。
これらの転送用のアドレスを記述するのに、広範囲のフォーマットが用いられることもある。
検査される第1の動作は、リモート・ノードの仮想メモリ空間からのデータに対する要求である。
データ要求側のプロセッサPREQは、リモート・データ送り側のプロセッサPSNDの仮想アドレス空間から、7つまでのデータ・セルを要求する。
このトランザクションは、このシステム内の様々な構成要素の機能を示している。
データ転送を行うために、PREQは、次の3つの機能を果たす。
1)このプロセッサは、データを受け取るNICレジスタの制御セルH0と制御セルP0の1つまたは複数にデータを送る。
2)このプロセッサは、この転送にTID(トランザクション識別子)を割り当てて、a)TID、b)TIDを用いて転送されようとするパケットの数、c)入ってくるパケットに誤り訂正を行い、かつACKとNAKを処理するEC−ACKユニット780へのプロセッサPSNDのアドレス、を送る。
3)プロセッサは、組RPSET(PSNDへの要求パケットREQを含む)内の複数の要求パケットを送る。
それゆえ、RPSETを送ることで、複数のコンピューティング・ノードから所定のコンピューティング・ノード上のNICレジスタにデータが集められることもある。
RPSETは、隣接する複合NICレジスタの集まりCNUMに対するデータを要求する。4)適切な時間(データが戻る最小時間)の後で、プロセッサPREQは、パケットの組RPSETを送る結果として、データを受け取る予定であるNICレジスタのすべてに、「send when ready」コマンドを送る。
他のターゲット・レジスタは、第2のフィールドに整数0を持っている。
第3のフィールドSENDはゼロに設定される。ただ1つのレジスタがデータを受け取ることになっているか、あるいは、プロセッサが、順序を顧慮せずにデータにアクセスすることになっている場合には、これらのフィールドのそれぞれに整数1を入れることもある。
制御セル内の情報の利用は、後の「注0」で説明される。
この情報を制御セルに転送する効率的な方法は、後の「注1」で説明される。
上記の機能2)に関して、EC−ACK管理ユニット780は、それぞれのTIDとともに、パケットをいくつ転送すべきか決定して、その適切なTIDに関連するACKまたはNAKを送る。
EC−ACK管理ユニット780の動作は、後の「注2」で説明される。
上記の機能3)に関して、処理ノード間のデータの処理は、データに対する要求パケットを送り、それらの要求パケットに応答してデータを送ることで、行われる。
プロセッサは、プロセッサのNICレジスタにデータを転送するように求め、次に、そのデータを、ローカルNICレジスタからプロセッサのローカル・メモリに移すことで、リモート・ノードからプロセッサ内のローカル・メモリにデータを移す。
これらのトランザクション・プロセスの第1の工程は、プロセッサPREQが要求パケットREQをPSNDに送るためのものである。
REQのペイロードには、1)データの転送元の記憶場所、2)受取り側のコンピューティング・ノードのアドレス、ターゲットNICレジスタ、並びに、このデータを受け取るNICレジスタ(720または722)内のセル(1つまたは複数)の記憶場所、3)トランザクション識別子(TID)の情報が入っている。
一動作方式では、プロセッサPREQは、倍長NICレジスタ(double NIC register)720を利用して、所与の時間に1個〜7個のパケットを送り出す。
プロセッサPREQは、128バイトのペイロードを持つHyperTransportTMのダブル・ロード・パケット(double load packet)を形成する。
プロセッサPREQは、このパケットを倍長レジスタ720に送る。
このパケットを送る結果として、パケットREQと、おそらく他のパケットが、倍長レジスタに転送される。
パケットREQのペイロードは、この倍長レジスタ内の位置PKに転送され、また、パケットREQのヘッダーは、このレジスタ内の位置HKにある(ここで、0<K<8)。 HyperTransportTMのダブル・ロード・パケットはまた、特定のコードをH0およびP0に入れて、それぞれのセル(H1、H2、...、H7)内のフィールドを変更させ、NICレジスタ内のパケットのすべてが、NICレジスタからNIC出力スイッチにいつでも転送できる状態にあることを示す。
HyperTransportTMのダブル・ロード・パケットは、パケットの転送に役立つレジスタにロードされたパケットの数を含む他のコードを、H0セルおよびP0セルに入れることもある。
セルH0およびセルP0の用途は、まったく様々であり、これらのセルは、コンピュータのオペレーティング・システムで導かれる通りに使用されることになっている。
別法として、個々のHフィールドは、他の技法により変更されることもある。
このような技法の1つは、個々のヘッダーをHNに入らせて、送りビットを設定することであり、もっとも効果的には最後のビットをHNに入らせることである。
セルH0内のコードに応答して、転送ロジック(図示されてない)は、ライン742を介して、これらのパケットをNIC出力チップの個々の入力部に送る。
NIC出力スイッチの機能は、下記の「注3」で説明される。
これらのパケットは、ライン752を介して、個々の中央ハブ・スイッチ・チップ750に進む。
したがって、このレジスタから、1つまたは複数のパケットが同時に転送されることもある。
次に、これらのパケットは、パケット・ヘッダーにより、このシステム全体に分散される。
この中央スイッチ・ハブは、PSNDを含むコンピューティング・ノード上のNIC入力スイッチに、REQを受け渡す。
要求パケットREQのヘッダーは、形式REQの要求パケットを含むクラスのパケットを受け取るように指定されたいくつかの「サプライズ(意外な、surprise)」レジスタ722の1つに、要求パケットREQを受け渡す予定であることを示す。
レジスタ722は、要求されたデータ以外のパケットをプロセッサに受け渡すために、サプライズ・レジスタと呼ばれている。
ハードウェア(図示されてない)は、このサプライズ・レジスタSRにREQを入れる。要求パケットREQを含むサプライズ・レジスタにPSNDが出す「send now」コマンドまたは「send when ready」コマンドに応答して、SR内のデータがPSNDに転送される。
一実施形態では、要求パケットREQには、要求されるデータの仮想アドレスが入っている。プロセッサPSNDは、要求されるデータを得て、かつ、1つまたは複数のパケットを形成して、そのパケットを倍長レジスタREGSND720にロードする。
プロセッサPSNDは、ACK情報を利用して、これらのレジスタのどれが使用していないのか判定する。
ACK情報を利用して、どのレジスタが使用していないのか突き止める作業が、後の説明「注4」で説明される。
パケットRES(以下で追跡される任意のパケット)を含む応答パケットは、ペイロードが位置(P1,P2,...,P7)の一部または全部にあり、またヘッダーがH1,H2,...,H7内の対応する位置にあるようなレジスタREGSNDにロードされる。
これらのヘッダーには、1)プロセッサPREQを含むコンピューティング・ノードの記憶場所、2)プロセッサPREQを含むコンピューティング・ノード上のNICレジスタのアドレス、3)上記NICレジスタ内のターゲット・セルの記憶場所、4)TID、を含む様々な情報が入っている。
一対のレジスタ・セル[HK,PK]に入れられている最後のデータ・ビットは、ヘッダーHK内の特定のOUTPUTフィールドに入れられているコードである。
最後のビットが到着すると、データが、ヘッダーとペイロードのセル対から、ライン742を介して送られる。
H0のOUTPUTフィールドが送るように設定されていないために、セルP0とセルH0の内容は送られない。
EC−ACKユニット780で実行される動作は、後の「注2」で説明される。
次に、パケットRESは、プロセッサPREQでパケットRESを受け取るように割り当てられたターゲットNICレジスタの適切なセルに受け渡される。
図8Bを参照すると、パケットRESがターゲットNICレジスタに到着すると、そのペイロードは、プロセッサPREQで指定されたセルPKに入れられる。
パケットRESは、パケットの存在を示す先頭の1(leading one)を持っている。
RESのペイロード全体がセルPK内にあった後で(パケットRES内の先頭の1が到着してから適切な時間がたって)、RESの到着を示す信号が、セルPKからセルP0に送られる。
P0内のフィールドNUMPAKには、一組の要求パケットが送られた結果として、ターゲット・レジスタに向けて送られて、到着したパケットの総数があらかじめロードされる。
PKからP0への信号に応答して、フィールドNUMPAK内の数が1だけ減らされる。
これらのパケットのすべてが到着しているときには、まだ到着していないパケットの数を示す数値がデータ0に設定される。
フィールドNUMPAK内でのデータ0の存在は、NICレジスタのペイロード・フィールド内のデータをプロセッサPREQに転送するのに必要ではあるが、ただし不充分な条件である。
フィールドNUMPAK内に正の整数が位置づけられる場合には、まったく処置は講じられない。
フィールドNUMPAK内にデータ0が位置づけられ、データ0がフィールドORDER内にあり、また、データ0がフィールドSEND内にある場合には、まったく処置は講じられない。
フィールドNUMPAK内にデータ0が位置づけられ、かつ、正の整数がフィールドORDER内にある場合には、データ1は、フィールドSENDに入れられて、そのパケットがプロセッサPREQに送れる状態にあることを示す。
SENDフィールド内の1の値に応答し、かつ、プロセッサPREQの「send when ready」コマンドを受け取ると、HyperTransportTMラインにロードするハードウェアは、NICレジスタ内のペイロード・セルに入っているデータを、プロセッサPREQに送らせる。
NICレジスタNR(C)内のペイロード・データがプロセッサPREQに送られた後で、このレジスタ内のロジックは、フィールドORDER内の整数を減らして、フィールドORDER内の新たな数値を、ライン840を介して、NICレジスタNR(C+1)内のP0のフィールドORDERに送る。
次に、NR(C)内のロジックは、NR(C)のフィールドSEND、フィールドORDER、フィールドNUMPAKを、データ0に設定する。
ここに述べられるやり方で複合レジスタのP0のセルを用いれば、その要求されたデータを適正な順序で、プロセッサPREQに効率的に送ることができる。
再び図8Bを参照すると、ロジックは、複合レジスタのヘッダー部分に関連するものであり、H0内の情報を利用して、セル(H1,H2,...,H7)の内容を完成する。 それゆえ、プロセッサPは、パケットをセルH0に送って、複合レジスタの下半分内のフィールドのすべてを満たすこともある。
このような定式(formulas)は、これらのセルに対してラベリング方式を使用する。 図9を参照すると、このような方式の1つは、セルに4−touple[T,U,V,W]でラベルを付ける。
ここで、[T,0,U,V]は、コンピューティング・ノードT上のセルA(U,V)を表し、また、[T,1,U,V]は、コンピューティング・ノードT上のセルB(U,V)を表す。
Tが、プロセッサPREQを含むコンピューティング・ノードのアドレスである場合には、0≦N≦7、HN=[T,1,C+N,0]の公式は、一組の要求パケットの結果として、隣接する7つの複合レジスタにデータを収めることを目標としたNICレジスタ内のP0値から成る7上位列を満たす。
図7を参照すると、データを要求するプロセッサPREQは、いくつかの機能を果たす。
これらの機能の1つは、順序づけられた3つ組の整数[I,J,K]が入っているペイロードを持つパケットを送ることである。
ここで、Iは、この要求のTIDであり、また、Jは、この要求の結果として転送されるパケットの数であり、さらに、Kは、プロセッサPSNDを含むコンピューティング・ノードの記憶場所である。
TIDパケットは、プロセッサPREQにより、特定の組の単純NICレジスタを介してEC−ACKユニットに転送される。
これらのレジスタ内のデータは、NIC出力スイッチを通らない。定められた数のTID番号が許容される。
EC−ACKユニットは、このような組の許容されるTID番号をアドレスとして持つメモリを備えている。
ペイロード[I,J,K]を持つTIDパケットがEC−ACKユニットに到着すると、JとKの数値が記憶場所Iに格納される。TIDパケットは、コンピューティング・ノードのボード(computer node board)を決して離れないから、TIDパケットがEC−ACKユニットに到着すると、誤り訂正は不必要である。
次に、このパケットは、EC−ACKモジュールに入り、そこで、このパケットは誤りの検出および訂正を受ける。
誤り訂正は、EC−ACKユニット780で実行される。データの誤り訂正ができないが、ただし、TID、送り側ノード・アドレス、および提案される記憶セル・アドレスを突き止めることができる場合には、EC−ACKユニット780は、ライン782を介してNICレジスタにNAKを送って、そのNAKを送り側に送り戻すことができる。
EC−ACKユニット780がパケットを補正できず、また、その情報を復元してNAKを送ることができない場合には、このパケットを廃棄し、オペレーティング・システムは、タイムアウト状態のために、そのパケットに対する再要求を出す。
パケットがEC−ACKユニット780に到着し、誤りがまったく検出されないか、あるいは少なくとも1つの誤りが発生し、しかも、すべての誤りを訂正できるときには、このパケットのTIDを読み取って、記憶場所TID内の整数Jが減らされる。
記憶場所TID内の整数Jを減らした後で、その整数がデータ0である場合には、TIDに関連するデータパケットのすべてが到着していて、アドレスKを持つノードにACKを戻すことができる。
ノードKへのACKの転送は、EC−ACKモジュールにより達成されて、1つまたは複数のACKパケットが、複合NICレジスタ内のセル対に送られる。
NIC出力スイッチは、1)欠陥ラインを、中央ハブ・スイッチ・チップに、または中央ハブ・スイッチ・チップからバイパスすることだけでなく、欠陥中央ハブ・スイッチ・チップをバイパスすることも、2)コンピュータ上で実行するジョブを分離すること、3)複数のホップを持つシステム内の中央スイッチ・ハブを通るパケットの平均レイテンシを下げること、を含むいくつかの機能を持っている。
3番目の機能は、複数のホップ・データ・ボーテックス・システム(hop data vortex system)に関して、ここに組み入れられた特許および特許出願に説明されている。
単純なホップ・システムでは、そのオペレーティング・システムは、このシステム内の欠陥ラインと中央スイッチの障害を示すデータを受け取り、また、その情報に基づいて、NIC出力スイッチは、これらの欠陥に基づいて道筋を定めることもある。
処理ノードの一部が所与の計算ジョブ(compute job)に割り当てられるときには、これらのノード間でデータを転送するために、いくつかの中央スイッチ・チップが用意される。
この例示技法を用いれば、厳密なシステム・セキュリティを維持できる。さらに、これらのジョブの1つが、単一のコンピューティング・ノードへの長い一連のパケットの流れを開始させ、かつ、その一連のパケットが、ネットワーク上でバックアップをもたらす場合でも、このバックアップは、他のジョブを妨げることはない。
このようなバックアップをもたらすプログラムは、このシステムの全域でデータパケットを引き出す要求側のプロセッサが過度の要求を行わないようにすることを規定したルールに違反している。
同様に、このシステム内のサプライズ・パケット(surprise packet)の数も制限される。
それゆえ、このシステムは、正確に使用されるときには、極度の効率で動作するように設計されている。
また、ユーザーが、このシステムを不正確に使用しても、このシステム上にある他のジョブに悪影響が及ぼされることはない。
プロセッサPSNDは、その要求されたデータを1つまたは複数のNICレジスタに入れることで、プロセッサPREQからのデータパケットの要求に応答する。
パケットがNICレジスタから転送されるが、ただし、そのパケットがターゲット・レジスタに到着しない場合には、そのデータに対して別の要求が出される。
したがって、データは、そのデータに対するACKを受け取るまで、送り側のNICレジスタに残しておかれる。
ACKが受け取られると、プロセッサは、別のデータ転送に備えて、送り側のレジスタをプロセッサの有効リスト(available list)に復元することができる。
前節では、リモート記憶場所からのデータに対する要求が説明されている。
送り側のレジスタにACKがまったく戻されないためにデータを再送することで、リモート・ノードから、NICレジスタからのデータに対する要求がもたらされるが、これは、リモート・ノード上のNICレジスタに格納されるデータをプロセッサが要求して、得ることのできる理由のただ1つを表している。
リモートNICレジスタからデータを得る方法は、後でこの開示内容に説明される。
「リモート・ノードI上のメモリからのデータに対する要求」動作には、他のすべてのデータ転送が、このプロセスのわずかな簡略化または修正であるという性質がある。
データを要求側のプロセッサPREQは、要求パケットREQをリモート・データ送り側のプロセッサPSNDに送って、単純レジスタSR(t+s)内の規定されたセルにデータを戻すようにプロセッサPSNDに指示することで、プロセッサPSNDの仮想アドレス空間から8つまでのデータ・セルを要求する。
要求パケットREQの受取りに応答して、プロセッサPSNDは、この要求されたデータを複合NICレジスタのペイロード・セルにロードし、さらに、ヘッダーを複合NICレジスタのヘッダー部分にロードして、これらのペイロード・パケットが、単純レジスタにおいて、要求パケットREQで規定される記憶場所に到着するようにしている。
8つのデータパケットを複合レジスタから送るときに、ヘッダーH0とペイロードP0を持つパケットは、例えば適正なビットをヘッダーH0のOUTPUTフィールドに入れることで、他の7つのパケットとともに送られる。前節において、要求側のプロセッサPREQが、数のNUMPAKを受取り側の複合NICレジスタ内のセルP0に入れるのと同様に、プロセッサPREQは、数のNUMPAKを補助セル850に入れる。
これらのパケットが単純NICレジスタ内に到着すると、信号がライン852を下って送られて、補助セル850内の数が減らされる。
この数が0に減らされると、プロセッサPREQは、1に設定された単一ビットを、単純レジスタSNR(r)内の規定された記憶場所にある1の適切なセルに入れる。
ここで、r<tである。
この1を入れるのに適した場所は、SNR(0)内で左から右に数え、引き続きSNR(1)内で左から右に数えるといった具合に数えることで、単純ノード・レジスタのs番目のセルである。
この記憶場所は、sを64で除算して、整数Iと剰余J(除法をなす)を得、その記憶場所を、SNR(I)内において、セルJにあるものとして特定すれば、見出すことができる。
プロセッサPREQは、SNR(0)、SNR(1)、...、SNR(t−1)のレジスタの内容を定期的にチェックして、どの単純ノード・レジスタが、要求されたデータのすべてを得ているのか突き止める。
この要求側のプロセッサは、パケットを送って、H0の内容を変更する。
上記「注1」に説明されるように、H0を変更すると、NICレジスタの他のセル内のデータが適正に変更される。
あるいは、この要求側のプロセッサは、ライン732を介してパケットを送って、単一セル内のデータにアクセスすることもある。
要求側のプロセッサが単純NICレジスタからデータを得るために、このプロセッサは、送り側のプロセッサにサプライズ要求パケットを送って、その要求されたデータを複合レジスタにコピーするように送り側のプロセッサに求める。
異なるノードに8つのパケットを同時に送ることができ、それにより、それぞれのノードから8つのエッジを持つツリーを用いて、メッセージを極めて速くブロードキャストできる。
プロセッサのキャッシュ内のデータは、スワップ・アウトされる。
プロセッサは、スワップ・アウトされ得ないデータをキャッシュ・ラインに入れる都合の良いやり方として、ローカルNICレジスタを使用する。
実際は、ノードX上のプロセッサが、データを、リモート・ノードY上のNICレジスタから、別のリモート・ノードZ上のNICレジスタに移動させる。
この例示システムおよび例示構造は、Opteronプロセッサへの特定の接続を利用しているが、リモート・デバイスへの他のインターフェースを持つ異なるプロセッサに、同様な技法が用いられることもある。
110、692、700・・・コンピューティング・ノード,
120・・・コントローラ,
130・・・キャッシュ・ミラー・レジスタ,
140、640・・・NICスイッチ,
144、230、232・・・バッファ,
150、151、690・・・プロセッサ,
154・・・プライベート・メモリ,
156、157・・・パブリック・メモリ,
158・・・キャッシュ,
160・・・CMR,
210・・・TLB,
220・・・メモリ・バッファ,
240・・・PTM,
250・・・コントローラ・ロックユニット,
300・・・スイッチング・システム,
620・・・NICコントローラ,
630・・・ギャザー・スキャッタ・レジスタ,
632、636・・・メモリ・コントローラ,
638・・・ユニット,
642、644・・・DRAM,
702・・・NICチップ,
706・・・メモリ,
720・・・複合ギャザー・スキャッタ・レジスタ,
730・・・入力スイッチ,
740・・・出力スイッチ,
774・・・オンプロセッサ・メモリ・コントローラ
Claims (4)
- プライベート・ローカル・メモリとパブリック・ローカル・メモリに分けられるローカル・メモリ、ローカル・キャッシュ、および、ワーキング・レジスタを含む複数のプロセッサを相互接続するネットワークを介して、データフローを管理するコントローラと、
前記コントローラに結合された複数のキャッシュ・ミラー・レジスタであって、前記複数のプロセッサに転送されることになっているデータを受け取るキャッシュ・ミラー・レジスタと
を備え、
前記コントローラは、要求に応答して、前記複数のプロセッサを中断させることなく、要求されたデータをじかにパブリック・メモリに転送することと、要求されたデータを転送用の少なくとも1つのキャッシュ・ミラー・レジスタを介して、プロセッサ・ローカル・キャッシュと、プロセッサ・ワーキング・レジスタとに転送することとにより、データを受け取る
ネットワーク・デバイス。 - 前記コントローラは、さらに、要求に応答して、少なくとも1つのキャッシュ・ミラー・レジスタを介して前記プロセッサで管理されるプロセッサ・パブリック・メモリにデータを受け入れる
請求項1に記載のネットワーク・デバイス。 - 前記コントローラは、さらに、要求に応答して、少なくとも1つのキャッシュ・ミラー・レジスタを選択し、前記少なくとも1つのキャッシュ・ミラー・レジスタ内の少なくとも1つの記憶場所を選択してデータを受け取り、要求側のプロセッサのメモリ・マネージャに対して、前記選択された少なくとも1つのキャッシュ・ミラー・レジスタを特定する少なくとも1つのキャッシュ・ミラー・レジスタを介して前記データを受け取る
請求項1に記載のネットワーク・デバイス。 - 並列コンピュータ内の複数のコンピューティング・ノードであって、それぞれがプロセッサと、複数のセルを含む複数のNICレジスタとを備えているコンピューティング・ノードと、
少なくとも1つのリモート・ノードからのデータを、プロセッサPREQに対してローカルである指定された複数のNICレジスタ内のセルに入れるように求め、その要求に応答して、要求されたデータを、前記指定されたNICレジスタ内のセルに転送するように構成されているプロセッサPREQと
を備えるネットワーク・デバイス。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US86311406P | 2006-10-26 | 2006-10-26 | |
US60/863,114 | 2006-10-26 | ||
PCT/US2007/082714 WO2008052181A2 (en) | 2006-10-26 | 2007-10-26 | A network interface card for use in parallel computing systems |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2010508591A true JP2010508591A (ja) | 2010-03-18 |
JP5376371B2 JP5376371B2 (ja) | 2013-12-25 |
Family
ID=39325474
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2009534899A Expired - Fee Related JP5376371B2 (ja) | 2006-10-26 | 2007-10-26 | 並列コンピューティング・システムに使用されるネットワーク・インターフェース・カード |
Country Status (5)
Country | Link |
---|---|
US (2) | US8099521B2 (ja) |
EP (1) | EP2092436A4 (ja) |
JP (1) | JP5376371B2 (ja) |
KR (1) | KR20090110291A (ja) |
WO (1) | WO2008052181A2 (ja) |
Families Citing this family (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8739133B2 (en) * | 2007-12-21 | 2014-05-27 | International Business Machines Corporation | Multi-threaded debugger support |
US8713139B1 (en) * | 2009-10-29 | 2014-04-29 | Hewlett-Packard Development Company, L.P. | Automatic fixup of network configuration on system image move |
US9600785B2 (en) * | 2011-01-31 | 2017-03-21 | International Business Machines Corporation | Automatically generated and updated graphical rendering of processes |
US9274964B2 (en) | 2012-02-02 | 2016-03-01 | Qualcomm Incorporated | Multi-bank cache memory |
US9384153B2 (en) * | 2012-08-31 | 2016-07-05 | Freescale Semiconductor, Inc. | Virtualized local storage |
US9331868B2 (en) | 2013-10-15 | 2016-05-03 | At&T Intellectual Property I, L.P. | Method of bus virtualization in computing machine intercommunications |
WO2016054264A1 (en) * | 2014-09-30 | 2016-04-07 | Interactic Holdings, Llc | Matrix vector multiply techniques |
CN106526461B (zh) * | 2016-12-30 | 2018-12-28 | 盛科网络(苏州)有限公司 | 针对流量控制的嵌入式实时反压验证的方法 |
US10778508B2 (en) * | 2017-11-09 | 2020-09-15 | Keysight Technologies, Inc. | Bypass switch with evaluation mode for in-line monitoring of network traffic |
US11394666B2 (en) * | 2017-12-18 | 2022-07-19 | Intel Corporation | Scalable communication with a packet processing unit |
WO2020000136A1 (en) | 2018-06-25 | 2020-01-02 | Alibaba Group Holding Limited | System and method for managing resources of a storage device and quantifying the cost of i/o requests |
US10657056B2 (en) * | 2018-06-30 | 2020-05-19 | Intel Corporation | Technologies for demoting cache lines to shared cache |
US10748637B2 (en) * | 2018-07-26 | 2020-08-18 | International Business Machines Corporation | System and method for testing processor errors |
US11061735B2 (en) | 2019-01-02 | 2021-07-13 | Alibaba Group Holding Limited | System and method for offloading computation to storage nodes in distributed system |
US11617282B2 (en) | 2019-10-01 | 2023-03-28 | Alibaba Group Holding Limited | System and method for reshaping power budget of cabinet to facilitate improved deployment density of servers |
US11012511B1 (en) * | 2020-01-14 | 2021-05-18 | Facebook, Inc. | Smart network interface controller for caching distributed data |
US11461262B2 (en) * | 2020-05-13 | 2022-10-04 | Alibaba Group Holding Limited | Method and system for facilitating a converged computation and storage node in a distributed storage system |
US11507499B2 (en) | 2020-05-19 | 2022-11-22 | Alibaba Group Holding Limited | System and method for facilitating mitigation of read/write amplification in data compression |
US11556277B2 (en) | 2020-05-19 | 2023-01-17 | Alibaba Group Holding Limited | System and method for facilitating improved performance in ordering key-value storage with input/output stack simplification |
US11487465B2 (en) | 2020-12-11 | 2022-11-01 | Alibaba Group Holding Limited | Method and system for a local storage engine collaborating with a solid state drive controller |
US11734115B2 (en) | 2020-12-28 | 2023-08-22 | Alibaba Group Holding Limited | Method and system for facilitating write latency reduction in a queue depth of one scenario |
US11726699B2 (en) | 2021-03-30 | 2023-08-15 | Alibaba Singapore Holding Private Limited | Method and system for facilitating multi-stream sequential read performance improvement with reduced read amplification |
US11714765B2 (en) * | 2021-07-23 | 2023-08-01 | Hewlett Packard Enterprise Development Lp | System and method for implementing a network-interface-based allreduce operation |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH01194055A (ja) * | 1988-01-29 | 1989-08-04 | Hitachi Ltd | 並列計算機及びそのデータ転送方法 |
JPH09269936A (ja) * | 1996-03-30 | 1997-10-14 | Nec Corp | リモートリード処理方法およびその装置 |
JPH10154115A (ja) * | 1996-11-25 | 1998-06-09 | Nec Corp | キャッシュ付きlanコントローラを備えた情報処理装置 |
Family Cites Families (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5710932A (en) * | 1987-07-28 | 1998-01-20 | Hitachi, Ltd. | Parallel computer comprised of processor elements having a local memory and an enhanced data transfer mechanism |
US5742843A (en) * | 1994-07-20 | 1998-04-21 | Fujitsu Limited | Control system for access between processing elements in a parallel computer |
US5613071A (en) * | 1995-07-14 | 1997-03-18 | Intel Corporation | Method and apparatus for providing remote memory access in a distributed memory multiprocessor system |
US5996020A (en) | 1995-07-21 | 1999-11-30 | National Security Agency | Multiple level minimum logic network |
US5751951A (en) * | 1995-10-30 | 1998-05-12 | Mitsubishi Electric Information Technology Center America, Inc. | Network interface |
US6289021B1 (en) | 1997-01-24 | 2001-09-11 | Interactic Holdings, Llc | Scaleable low-latency switch for usage in an interconnect structure |
US6092155A (en) * | 1997-07-10 | 2000-07-18 | International Business Machines Corporation | Cache coherent network adapter for scalable shared memory processing systems |
US6741552B1 (en) * | 1998-02-12 | 2004-05-25 | Pmc Sierra Inertnational, Inc. | Fault-tolerant, highly-scalable cell switching architecture |
US6480489B1 (en) * | 1999-03-01 | 2002-11-12 | Sun Microsystems, Inc. | Method and apparatus for data re-assembly with a high performance network interface |
US6651117B1 (en) * | 1999-11-03 | 2003-11-18 | Adaptec, Inc. | Network stack layer interface |
US20070192863A1 (en) * | 2005-07-01 | 2007-08-16 | Harsh Kapoor | Systems and methods for processing data flows |
US6640289B2 (en) * | 2000-11-15 | 2003-10-28 | Unisys Corporation | Software controlled cache line ownership affinity enhancements in a multiprocessor environment |
WO2002084499A1 (en) * | 2001-04-11 | 2002-10-24 | Chelsio Communications, Inc. | Multi-purpose switching network interface controller |
US7620955B1 (en) * | 2001-06-08 | 2009-11-17 | Vmware, Inc. | High-performance virtual machine networking |
US7055085B2 (en) * | 2002-03-07 | 2006-05-30 | Broadcom Corporation | System and method for protecting header information using dedicated CRC |
US8346884B2 (en) * | 2003-01-21 | 2013-01-01 | Nextio Inc. | Method and apparatus for a shared I/O network interface controller |
US20050008010A1 (en) | 2003-07-10 | 2005-01-13 | Interactic Holdings, Llc | Self-regulating interconnect structure |
US7415703B2 (en) * | 2003-09-25 | 2008-08-19 | International Business Machines Corporation | Loading software on a plurality of processors |
KR20070007769A (ko) | 2003-10-29 | 2007-01-16 | 인터랙틱 홀딩스 엘엘시 | 에러 정정을 이용하는 높은 병렬 스위칭 시스템 |
US7843906B1 (en) * | 2004-02-13 | 2010-11-30 | Habanero Holdings, Inc. | Storage gateway initiator for fabric-backplane enterprise servers |
US7219194B2 (en) * | 2004-06-23 | 2007-05-15 | Creative Technology Ltd | Method and circuit to implement digital delay lines |
US7783037B1 (en) * | 2004-09-20 | 2010-08-24 | Globalfoundries Inc. | Multi-gigabit per second computing of the rijndael inverse cipher |
US7788650B2 (en) * | 2005-05-10 | 2010-08-31 | Intel Corporation | Compiler-based critical section amendment for a multiprocessor environment |
US20070076761A1 (en) * | 2005-09-15 | 2007-04-05 | Coke Reed | Apparatus for interconnecting multiple devices to a synchronous device |
US7617363B2 (en) * | 2005-09-26 | 2009-11-10 | Intel Corporation | Low latency message passing mechanism |
US8300565B2 (en) * | 2006-05-08 | 2012-10-30 | Nokia Corporation | Multi mode host interface for and remote register and memory access of a wireless communication module |
US20080052463A1 (en) * | 2006-08-25 | 2008-02-28 | Nagabhushan Chitlur | Method and apparatus to implement cache-coherent network interfaces |
US7773504B2 (en) * | 2007-11-13 | 2010-08-10 | Intel Corporation | Bandwidth allocation for network packet traffic |
US20100064072A1 (en) * | 2008-09-09 | 2010-03-11 | Emulex Design & Manufacturing Corporation | Dynamically Adjustable Arbitration Scheme |
-
2007
- 2007-10-26 KR KR1020097010500A patent/KR20090110291A/ko not_active Application Discontinuation
- 2007-10-26 US US11/925,546 patent/US8099521B2/en active Active
- 2007-10-26 EP EP07863567A patent/EP2092436A4/en not_active Withdrawn
- 2007-10-26 JP JP2009534899A patent/JP5376371B2/ja not_active Expired - Fee Related
- 2007-10-26 WO PCT/US2007/082714 patent/WO2008052181A2/en active Application Filing
-
2012
- 2012-01-17 US US13/352,161 patent/US8874797B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH01194055A (ja) * | 1988-01-29 | 1989-08-04 | Hitachi Ltd | 並列計算機及びそのデータ転送方法 |
JPH09269936A (ja) * | 1996-03-30 | 1997-10-14 | Nec Corp | リモートリード処理方法およびその装置 |
JPH10154115A (ja) * | 1996-11-25 | 1998-06-09 | Nec Corp | キャッシュ付きlanコントローラを備えた情報処理装置 |
Non-Patent Citations (2)
Title |
---|
JPN6013003342; David E. Culler, Jaswinder Pal Singh, Anoop Gupta: Parallel Computer Architecture A Hardware/Software Approach , 1999, Pages:506-513, Morgan Kaufmann Publishers, Inc. * |
JPN7013000270; Steven L. Scott: 'Synchronization and Communication in the T3E Multiprocessor' Proceedings of the Seventh International Conference on Architectural Support for Programming Languag , 19961002, Pages:26-36, ACM * |
Also Published As
Publication number | Publication date |
---|---|
US8874797B2 (en) | 2014-10-28 |
WO2008052181A3 (en) | 2008-07-31 |
KR20090110291A (ko) | 2009-10-21 |
EP2092436A4 (en) | 2010-03-24 |
WO2008052181A2 (en) | 2008-05-02 |
US8099521B2 (en) | 2012-01-17 |
EP2092436A2 (en) | 2009-08-26 |
JP5376371B2 (ja) | 2013-12-25 |
US20120185614A1 (en) | 2012-07-19 |
US20080104369A1 (en) | 2008-05-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5376371B2 (ja) | 並列コンピューティング・システムに使用されるネットワーク・インターフェース・カード | |
EP2406723B1 (en) | Scalable interface for connecting multiple computer systems which performs parallel mpi header matching | |
US6847647B1 (en) | Method and apparatus for distributing traffic over multiple switched fiber channel routes | |
US7664897B2 (en) | Method and apparatus for communicating over a resource interconnect | |
US8417778B2 (en) | Collective acceleration unit tree flow control and retransmit | |
US7039914B2 (en) | Message processing in network forwarding engine by tracking order of assigned thread in order group | |
CN100383751C (zh) | 用于动态镜像库寻址的系统和方法 | |
CA2042290C (en) | Packet routing switch | |
JP3365705B2 (ja) | 分散型データ処理システム | |
US8185896B2 (en) | Method for data processing using a multi-tiered full-graph interconnect architecture | |
US8140731B2 (en) | System for data processing using a multi-tiered full-graph interconnect architecture | |
US7702742B2 (en) | Mechanism for enabling memory transactions to be conducted across a lossy network | |
US6831916B1 (en) | Host-fabric adapter and method of connecting a host system to a channel-based switched fabric in a data network | |
US20030105931A1 (en) | Architecture for transparent mirroring | |
US6490630B1 (en) | System and method for avoiding deadlock in multi-node network | |
JPH04139566A (ja) | 多重プロセッシング・システム | |
US20070091104A1 (en) | Computer system and method | |
US7124231B1 (en) | Split transaction reordering circuit | |
US20230421451A1 (en) | Method and system for facilitating high availability in a multi-fabric system | |
US7564860B2 (en) | Apparatus and method for workflow-based routing in a distributed architecture router | |
CN101827088A (zh) | 基于cpu总线互联的底层通信协议实现方法 | |
US20060031622A1 (en) | Software transparent expansion of the number of fabrics coupling multiple processsing nodes of a computer system | |
US6757803B1 (en) | Distributed buffer recovery | |
CN1781079A (zh) | 利用门管理器维护实体顺序 | |
JP2023531137A (ja) | オン・チップ・ルーター |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20101020 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20121228 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20130128 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20130425 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20130507 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20130717 |
|
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: 20130815 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20130913 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |