JPH06243105A - 任意に変化するデータ・ストライドで情報を転送する方法及び装置 - Google Patents

任意に変化するデータ・ストライドで情報を転送する方法及び装置

Info

Publication number
JPH06243105A
JPH06243105A JP5334511A JP33451193A JPH06243105A JP H06243105 A JPH06243105 A JP H06243105A JP 5334511 A JP5334511 A JP 5334511A JP 33451193 A JP33451193 A JP 33451193A JP H06243105 A JPH06243105 A JP H06243105A
Authority
JP
Japan
Prior art keywords
data
digital information
memory
stride
field
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
Application number
JP5334511A
Other languages
English (en)
Other versions
JP2642049B2 (ja
Inventor
Ronald G Coleman
ロナルド・ジェラルド・コールマン
Deepak M Advani
ディーパック・モーハン・アドバニ
Owen K Monroe
オーウェン・キース・モンロー
Robert M Straub
ロバート・マイケル・ストラウブ
Iii Miner H Gleason
マイナー・ホルダー・グリーソン・ザ・サード
Yun-Pong Huang
ユンーポン・ファン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JPH06243105A publication Critical patent/JPH06243105A/ja
Application granted granted Critical
Publication of JP2642049B2 publication Critical patent/JP2642049B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations 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/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17356Indirect interconnection networks
    • G06F15/17368Indirect interconnection networks non hierarchical topologies
    • G06F15/17375One dimensional, e.g. linear array, ring
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Signal Processing (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Multi Processors (AREA)
  • Computer And Data Communications (AREA)

Abstract

(57)【要約】 (修正有) 【目的】任意に変化するストライドのアプリケーション
・データを、中間のデータ記憶装置を経由せずにプロセ
ッサ間で通信する。 【構成】部分データ・メッセージを含む一連のパケット
を介して転送される各部分データメッセージは、起点ア
プリケーション・データ・メモリのストライド1部分に
記憶されたデータの一部分を有し、宛先アプリケーショ
ン・データ・メモリのストライド1部分に書き込まれ
る。起点及び宛先処理エレメントでそれぞれ独立して実
行するアプリケーション・インターフェースは、それぞ
れ、起点アプリケーション・データ・メモリに記憶され
た個々のストライド1データ部分、及びアプリケーショ
ン・データを受信すべき宛先アプリケーション・プログ
ラム・メモリにおける個々のスライド1領域に対する開
始アドレス及び長さ決定する。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、分散型の、詳しくは、
高度に並列のマルチプロセシング環境において、任意に
変化するストライドのデータを個々のプロセッサ相互間
で且つ中間的なデータ記憶装置を必要とすることなく通
信するためのコミュニケーション・プロトコル用装置及
びそれに付随する方法に関するものである。
【0002】
【従来の技術】益々強力な且つ複雑なそして比較的安価
なマイクロプロセッサの絶え間ない発展及び商業的可用
性によって、分散処理、特に、大規模な並列処理は、従
来は通常のメインフレーム・コンピュータを介して処理
されたトランザクション処理のような広範囲のアプリケ
ーションを扱うための益々魅力的な手段としてその分野
では認められつつある。
【0003】一般的には、分散処理は、すべて並列態様
で又はパイプライン態様で集合的に動作する多数の独立
したプロセッサに跨った処理負荷の拡大を伴うものであ
る。それらプロセッサ間のメッセージ受渡及びデータ共
用を促すために、すべてのプロセッサを一緒に連結する
ための或タイプの相互接続方法が使用される。過去にお
いては、多くの変形が存在する分散処理アーキテクチャ
は、伝統的なメインフレーム又はスーパー・ミニコンピ
ュータにおいて使用されるような比較的少数の相互接続
されたプロセッサ、典型的には2つの、そして屡々10
個以下の高度に複雑な独立した中央処理装置を使用する
必要があった。これらプロセッサは、例えば、プロセッ
サ間バスを介して直接に、又は共用の直接アクセス記憶
装置のようなマルチポート共用メモリ或いは他のコミュ
ニケーション・パスを介して間接的に相互接続される。
【0004】対照的に、大規模な並列処理システムで
は、比較的多数の、屡々数百個の或いは数千個の独立し
た比較的単純なマイクロプロセッサ・ベースの処理エレ
メントが高速度のパケット・ネットワークから形成され
たコミュニケーション組織を介して相互接続される。そ
の場合、そのような処理エレメントは、ネットワーク上
の独立したノードのように見える。動作においては、そ
の組織は、これら処理エレメントのうちの任意のものか
ら他の処理エレメントに、それらの間のコミュニケーシ
ョンを与えるよう、典型的にはデータ・パケットの形で
メッセージを伝搬する。これらエレメントの各々は、典
型的には、独立したマイクロプロセッサ及びその関連の
サポート回路を含む。後者、即ち、サポート回路は、例
えば、プログラム及びデータ記憶のためのランダム・ア
クセス・メモリ(RAM)及び入出力(I/O)回路に
よって代表される。特定の回路の要求条件に基づいて、
各エレメントは、初期設定(ブート)ルーチン及び構成
情報を記憶するために、読み取り専用メモリ(ROM)
又は他の回路を含むことも可能である。
【0005】特に、大規模な並列処理システムにおける
各分散処理エレメントは、そのエレメントをコミュニケ
ーション組織にインターフェースするコミュニケーショ
ン・サブシステムも含んでいる。
【0006】各エレメント内のこれらサブシステムは、
I/O回路におけるコミュニケーション・インターフェ
ースのような適当なハードウエア回路及び関連の制御ソ
フトウエア・ルーチンから形成される。後者のソフトウ
エア・ルーチンは、そのエレメントで実行するアプリケ
ーションによって呼び出されてシステム内の他の任意の
そのような処理エレメントと通信する。
【0007】改良されたシステム・パフォーマンス、特
に、回路の複雑性、コスト及びシステム・サイズのこれ
に付随した減少による改良されたシステム・パフォーマ
ンスは、如何なる分散処理環境の設計においても第1次
的な目標である。大規模な並列処理の環境では、パフォ
ーマンスの改良は、なかんずく、コミュニケーション組
織におけるメッセージ通過時間の減少、及び各処理エレ
メントにおいて始められ且つプロセッサ間コミュニケー
ションの処理のようなオーバヘッド・タスクによって必
要とされる処理時間の減少によって生じさせることが可
能である。各エレメントにおいて不必要な回路を除去す
ることは、基本的な複雑性を減少させるであろうし、各
エレメント及びシステム全体の物理的サイズ及びコスト
を付随的に減少させるであろう。この種の改良を達成す
ることは、任意の時間に同時にシステム及び多数の関連
した個々の処理エレメントを通過するかなりの数のプロ
セッサ間メッセージを与えられる大規模な並列処理環境
では、特に重要である。従って、これらの改良は大規模
な並列処理システムの環境において生じるので、以下の
説明はこれらの改良の必要性に関するものである。
【0008】明らかなように、メッセージ伝搬は、如何
なる大規模な並列処理システムにおいても不可欠な要素
を形成する。適切なシステム・パフォーマンスを生じる
ために、コミュニケーション組織は、プロセッサ間メッ
セージの予測されるピーク負荷を任意の時間に且つ競合
なしに同時に伝搬するよう、それに接続された個々の処
理エレメント数に基づいた必要な容量を与えなければな
らない。更に、各処理エレメントそのものは、例えば、
コミュニケーション組織を通してメッセージを送信及び
受信するためにコミュニケーション・タスクが必要とす
るようなオーバヘッド・タスクを処理する場合、最小量
の時間しか費やさないようにしなければならない。明ら
かに、不十分なコミュニケーション・スループット又は
各処理エレメントおいて利用可能な減少した量のアプリ
ケーション処理時間は、大規模な並列処理システムを所
与のアプリケーションで使用するという魅力をひどく減
少させるという点でシステム・スループットに不利な影
響を与えるであろう。
【0009】幸いにして、この分野では、少なくとも現
時点では、代表的な大規模な並列処理システムにおいて
生じると考えられる必要なピーク・メッセージ・トラフ
ィックを処理するに十分高い転送速度を与えるべき種々
のアーキテクチャが提案されている。しかし、後述する
ように、この分野は、コミュニケーション・サブシステ
ムにより行われるメッセージ伝搬と関連したオーバヘッ
ド処理時間を十分には減少させていない。これを留意し
て、高速度コミュニケーション組織の帯域幅は、アプリ
ケーション・スループット、従って、システム・パフォ
ーマンス全体に関する制限を、各処理エレメントがメッ
セージを通信するに必要なオーバヘッド時間よりもずっ
と小さくする傾向がある。
【0010】更に、各処理エレメントの物理的サイズを
縮小することは、特に、数百個又は数千個の独立したプ
ロセッサが単一のシステムで使用される場合に最も重要
なことである。そうしない場合、システムは単純に大き
くなり過ぎ、過度な量の電力を必要とし、一般には全く
非実用的になる。
【0011】この目標を達成する助けとなる基本的な解
決法は、2つのプロセッサが益々高速であり且つその分
野で通常言われている量よりもずっと少ないメモリを使
用するという態様でそれらプロセッサ間でメッセージ、
特に、データを転送することであろう。この点では、各
処理エレメントがメッセージの送信及び受信においてか
なり少ないオーバヘッド時間しか費やさないようにでき
るならば、システム・スループットは大いに増加可能で
ある。更に、後述するようにメッセージ伝搬と関連した
中間的メモリの必要性を少なくでき、希望的には、除く
ことができれば、各処理エレメントは少ない回路しか必
要とせず、従って、少ない物理的スペースしか費やさ
ず、従来必要としたコストよりも少ないコストしか必要
としない。
【0012】この解決に至る重要性を十分に認識するた
めには、先ず、メッセージ、特に、データが個々の処理
エレメント及びそれと関連した特殊な問題の間で通常通
信される方法を理解しなければならない。
【0013】一般的に言って、データは多くの形式をと
る。しかし、物理的メモリは唯1つの形式しかとらな
い。これに関して、データは幅広い種々な方法のうちの
どれかで構成可能である。例えば、データ構造は、単に
直前の番号に続く各番号(1つの番号の直後に他の番号
が続く)をリスト内に持った単なる番号のリスト、即
ち、ベクトルであってもよい。この場合、データはいわ
ゆる「ストライド1」又は「リニア・マッピング」で編
成される。即ち、各データ・エレメントは前のデータエ
レメントに、それらの間のギャップなしに、連続的に後
続する。データがマトリクス形式で構成され、列方向に
記憶され、そして行に沿ってアクセスされる場合、スト
ライド1データはマトリクスの列とみなされ、移動は1
つのデータ・エレメントから各列を通して次の下方のエ
レメントに行われる。本質的には、その列における連続
した各エレメントは、直前のエレメントに対して1だけ
アドレスを増加するだけで到達可能である。リニア・マ
ッピングは各列内で生じる。そのマトリクスが「n」行
を有する場合、各列は一定のストライド「n」の列であ
るといえる。この例では、行中の各連続したデータ・エ
レメントをアクセスするためには、1つの完全なデータ
列、即ち、「n」個のデータ・ロケーション(アドレ
ス)がスキップされなければならない。
【0014】ここでは、ストライドは一定であり、通常
は値「n」である。マトリクスは疎らなものでもよい。
即ち、比較的少数の非ゼロ値のデータ・エレメントが、
ゼロ値のエレメントを他のすべての場所に置かれた比較
的大きいマトリクス全体に分散されたものでよい。その
対角線に沿ってエレメントを有する単位行列は、1つの
そのような例である。疎らなマトリクスの場合、かつ各
非ゼロ・エレメントのマトリクス・ロケーションによっ
ては、前のエレメントのロケーションから測った時の、
各連続したエレメントをアクセスするに必要なアドレス
・インクレメントは、マトリクス全体を通して不規則的
に変化することがあり、また実際そのように変化するこ
とが多いという意味において、これらエレメント(少な
くとも、単位行列に対するものではない)は変化する
(一定でない)不規則なストライドを持つ可能性があ
る。更に、データは不規則的なストライドを持つように
編成可能であるのみならず、これらストライドは任意に
複合的であってもよい。それに関して、そのマトリクス
におけるデータのロケーションはデータそのものの関数
であってもよい。この場合、連続したデータ・エレメン
トのロケーションは、直前のデータ・エレメントが見つ
かりそしてその関数が計算されるまで、容易には決定で
きないかもしれない。便宜上、任意に変化するストライ
ドは、以下では、複合データ・ストライドを含むように
一般的に定義されることになる。
【0015】物理的メモリはストライド1で編成される
だけであり、それは他の形式をとらない。各メモリ・ロ
ケーションは前のロケーションの直後に続き、前のロケ
ーションのメモリ・アドレスを単に1だけインクレメン
トするだけでアクセス可能である。これに関して、メモ
リ・ロケーション・ゼロは最後のメモリ・ロケーション
のアドレスを1だけインクレメントし、それによって、
メモリ・アドレスを巡回させることによって到達され
る。
【0016】物理的メモリ内には、種々の動作の制約
(ここでは特別に関連するものはない)によって、デー
タは連続したメモリ・ロケーションにいつも単純に記憶
されるわけではない。事実、データの個々の項目はメモ
リ内の所与の領域にわたって分散されることが多い。そ
のように、データはリンクしたリストの形式で記憶され
ることが多い。更に詳しく言えば、そのようなリストに
おける各エレメントは、典型的には、2つのフィール
ド、即ち、データ・フィールドとそのリストにおける次
の連続したエレメントのメモリにおけるロケーションに
対するアドレス・ポインタとを含む。ベクトルのような
簡単な1次元のデータ構造では、対応するデータ・エレ
メントと「ヌル」値のポインタを含む最終エレメントに
到達するまで、そのリストにおける各項目は1つのデー
タ・フィールドとそのリストにおける次のエレメントに
対する単一のアドレス・ポインタとを含む。一方、2次
元のマトリクス・データ構造の場合、マトリクス・エレ
メントの順序に依存して、各リスト・エレメントは2つ
のポインタを含むことが可能である。即ち、その1つ
は、水平マトリクス方向における次の連続したデータ・
エレメントを含むリスト・エレメントを指定し、もう1
つのポインタは垂直マトリクス方向における次の連続し
たデータ・エレメントを含む異なるリスト・エレメント
を指定する。これに関して、メモリ・スペースを保全す
るために、疎らなマトリクスにおける非ゼロ・エレメン
トだけが物理的メモリにおいて効率的に記憶可能であ
る。
【0017】残念なことには、データ構造における個々
のリスト・エレメントがメモリ内に分散可能であるの
で、その構造におけるこれら個々のエレメントの各々の
アクセスに関連したストライドは未知であってもよい。
従って、これは、1つの構造における所与のリスト・エ
レメントをアクセスするためには、所望のエレメントに
対するポインタを得るためにすべての前のエレメントが
アクセスされなければならないことを必要とする。対照
的に、データがメモリ内で一定の(規則的な)ストライ
ドで、好ましくは、ストライド1で構成される場合、各
連続したデータ・エレメントをアクセスするために一定
のアドレス・インクレメントが使用されるので、大変効
果的なデータ転送を与えるために直接メモリ・アクセス
(DMA)が使用可能である。しかし、以下で明らかな
ように、各データ・アクセスのための適当なメモリ・イ
ンクレメントを計算する必要があるために、DMAの使
用は、任意に変化するストライドでもって記憶されたデ
ータを転送するためには非常に非効率的になる。
【0018】物理的メモリにおける任意に変化するスト
ライドのデータの記憶及びそこからのそのデータのアク
セスと関連した特異性が与えられると、そのデータが1
つの処理エレメントと関連のメモリから他のそのような
エレメントと関連のメモリに通信されるべき時、複雑性
及び非効率性が生じる。特に、その真の性質によるデー
タ・メッセージは線形連続のデータ値を含んでいる。即
ち、1つの値が次の値に続き、従って、基本データの実
際の構造に関係なく、メッセージは単にストライド1デ
ータだけを含む。従って、その分野で通常言われている
ように、典型的なパケット交換システムにおける各ノー
ドは2つの独立したI/Oバッファ、即ち、発信メッセ
ージが送信前に完全にアセンブルされる入力(送信)バ
ッファ及び着信メッセージがその後の使用前に完全に組
み立てられる出力(受信)バッファを含む。パケット・
コミュニケーションの汎用環境におけるそのようなバッ
ファの使用は、米国特許第5151899号、同第48
58112号及び同第4555774号開示されたシス
テムによって代表される。
【0019】従って、任意に変わるストライドのデータ
を、特に、大規模な並列処理システムにおける1つの処
理エレメントから他の処理エレメントに転送するため
に、送信及び受信処理エレメントにおけるコミュニケー
ション・サブシステムは、ストライド1I/Oバッファ
を介してデータを伝搬する必要があるため、データをス
トライド1に及びストライド1から変換する必要があ
る。更に詳しく言えば、例えば、任意に変化するストラ
イドx(但し、xは変化する整数である)のデータ構造
がソース処理エレメントで実行しているアプリケーショ
ン・プログラムAによって、宛先処理エレメントで実行
しているアプリケーション・プログラムBに送信される
べき場合を考えてみよう。通常言われているように、ア
プリケーション・プログラムAによって発生されたコマ
ンドに応答して、ソース処理エレメント内で使用される
コミュニケーション・サブシステムは、いわゆる、「ギ
ャザ(gather)」動作を介して1つのリンクされ
たリストに記憶されているデータ構造の各項目をメモリ
から連続的にアクセスし、そしてコピーするであろう。
【0020】この動作を通して、ストライド1出力バッ
ファにおける連続した直線的なロケーションが、1対1
ベースで、このリンクしたリストにおけるデータの連続
した項目でもって満たされるであろう。一旦データ構造
全体がこのバッファ内に記憶されてしまうと、コミュニ
ケーション・サブシステムは、適当なメッセージ・ヘッ
ダ及びトレーラ情報をバッファ内容に付加して完全なパ
ケットを形成し、しかる後、コミュニケーション組織を
通して宛先処理エレメントにそのパケット全体を送信す
る。着信パケットに応答して、宛先エレメントで実行し
ているコミュニケーション・サブシステムは、受信され
た完全なメッセージでもって入力バッファを直列的に満
たす。一旦このバッファがメッセージ全体を捕捉する
と、このサブシステムは、いわゆる「スキャッタ」動
作、即ち、分散動作を行って、アプリケーション・プロ
グラムBによるその後の使用(しかし、メモリの制約の
ため、典型的には、種々のメモリ・ロケーションにおい
て、しかも、屡々、ソース処理エレメントで使用された
ストライドではなく任意に変化するストライドで)のた
めにメモリにおいてリンクされたリストを再作成する。
詳しく言えば、この「スキャッタ」動作は、入力バッフ
ァから各データ項目を個々にコピーする必要があり、そ
してアプリケーション・プログラムBが必要とするスト
ライドy(yは任意に変化する整数であり、一般的には
xに等しくない)でもって着信データがメモリ内に分配
されるように、宛先処理エレメントのメモリ内にその項
目を連続して記憶する必要がある。
【0021】残念なことに、「ギャザ」動作及び「スキ
ャッタ」動作を行う場合、処理時間が消費される。今
や、これらオーバヘッド動作が各処理エレメント内のど
こで実際に行われるかに関係なく、即ち、コミュニケー
ション・サブシステム(上述のように)において行われ
るか、或いはこれらエレメントにおいて実行するアプリ
ケーション・プログラムそのものによって行われるかに
関係なく、これら動作が必要とする処理時間の量は、そ
のエレメントにおいて別途利用可能な処理時間を減少
し、従って、そのアプリケーション・スループットを減
少する。
【0022】事実、ストライド1I/Oバッファを介し
て大量のデータを通信することに関連したオーバヘッド
処理は、全体のシステム・パフォーマンスを大きく低下
させる傾向がある。特に、データが任意に変化するスト
ライド、特に複合的なストライドで編成される送信端に
おいては、メモリから連続した各データ項目をアクセス
するために適切なアドレス・インクレメントを計算する
ことにかなりの量のオーバヘッド処理時間が消費され
る。複雑なDMA回路がない場合(それは、回路を単純
化し、コストを減少させるという理由で、一般には、大
規模な並列処理エレメントには使用されない)、このオ
ーバヘッド処理は大量のデータに対しては価値あるもの
であり、従って、大きな待ち時間をシステムに導入す
る。更に、入力バッファの有限なサイズのために、受信
端において重大な遅延が生じ得る。特に、入力バッファ
のサイズを超える大量のデータが受信されるべき場合、
如何なるメッセージにおいても、入力バッファを満たす
だけの量のデータを送信するために、いわゆる「ローリ
ング・ウインドウ」技術が使用されなければならない。
輻輳及び起こり得る上書きを防ぐために、受信処理エレ
メントは、それが受信したデータを完全に「スキャッ
タ」して、送信エレメントからそれ以上のデータを受信
する前にそれの入力バッファを完全に空にするように、
送信エレメントと関連して流れ制御を利用しなければな
らない。従って、実際には、各処理エレメントにおける
入力バッファの制限されたサイズも基本的なシステム・
スループットを制限する。
【0023】従って、任意に変化するストライドを持っ
たデータの処理エレメント間転送を効果的に処理するた
めのプロトコル、特に、分散処理環境において使用する
ための装置及び付随する方法(特に、大規模な並列処理
システムでは唯一無二の魅力あるものではないけれど
も、)に対する必要性がその分野には存在する。そのよ
うなプロトコルは、好ましくは、各プロセッサ・エレメ
ントにおけるI/Oバッファを通して着信及び発信メッ
セージ・データを経路指定する必要をなくさなければな
らない。これらバッファの除去は送信及び受信において
データをコピーする必要をなくし、それによって、メッ
セージ伝搬を促進するに必要な処理時間、即ち、オーバ
ヘッドを大いに減少させる。更に、これは、そのような
各エレメントに対する処理時間を自由にし、それによっ
てそのエレメントのアプリケーション・スループットを
増大させ、付随的にシステム全体のスループットも増大
させる。更に、これらバッファを除去することによっ
て、各処理エレメントは、以前に必要とされたものより
も単純になり、少ない回路及びコストしか必要としな
い。従って、これは処理システム全体のコストを減少さ
せるであろう。更に、これらバッファを除くことによっ
て、各エレメントの物理的サイズは減少され、そしてそ
れは、大規模な並列処理システムにおいて使用されるそ
のようなエレメントの実際の数が与えられると、システ
ム全体のサイズを有利に且つ大いに減少させることがで
きよう。
【0024】
【発明が解決しようとする課題】本発明の目的は、分散
処理環境において、特に、大規模な並列処理環境(これ
に限定するものではないけれども)において、任意に変
化するストライドのアプリケーション・データを処理エ
レメント相互間で転送するための、通常のコミュニケー
ション・プロトコルの使用と関連した欠陥を除去したコ
ミュニケーション・プロトコルを提供することにある。
【0025】
【課題を解決するための手段】本発明のプロトコルは、
起点アプリケーション・プログラムと宛先アプリケーシ
ョン・プログラムとの間で、ただ1つのパケットによる
のではなく、各々が部分データ・メッセージを含む一連
のパケットによりアプリケーション・データを転送する
ことに基づくものである。各部分データ・メッセージ
は、起点アプリケーション・データ・メモリのストライ
ド1部分に記憶されるデータの一部分を含む。本発明の
一部分を形成するアプリケーション・インターフェース
は、各独立したデータ部分の開始ロケーション及び長さ
をローカル的に決定する。受信の際、各データ部分は、
宛先アプリケーション・データ・メモリのストライド1
部分に書き込まれる。起点処理エレメント及び宛先処理
エレメントの両方で独立して動作するアプリケーション
・インターフェースは、起点アプリケーション・データ
・メモリに記憶され且つアプリケーション・データを受
信すべき宛先アプリケーション・プログラム・メモリに
おける各独立したストライド1領域に対する各ストライ
ド1データ部分の開始アドレス及び長さをそれぞれ決定
する。有利なことに、これらの独立したアプリケーショ
ン・インターフェースの使用によって、アプリケーショ
ン・データは、或任意に変化するストライドの起点アプ
リケーション・データ・メモリから、異なる任意に変化
するストライドを持つ宛先アプリケーション・メモリ
に、そのデータを如何なる入出力(I/O)バッファを
も通過させる必要なく転送可能である。
【0026】本発明の技術によれば、各データ部分の転
送を制御するために、通常のメッセージ制御ブロックに
は存在しない2つの追加のフィールド、即ち、「未完コ
ールバック(pending−callback)」及
び「未処理サイズ(pend−size)」を含むメッ
セージ制御ブロック(MCB)が利用される。各部分メ
ッセージに対して、未処理サイズは、そのメッセージに
含まれたデータ部分の長さを指定する。未完コールバッ
クはアプリケーション・インターフェースにおける第1
命令に対するポインタを含む。
【0027】メッセージ送信に対しては、本発明のアプ
リケーション・インターフェースは、アプリケーション
・データに特有の送信充填関数を利用して、各部分デー
タ・メッセージが起点アプリケーション・データ・メモ
リの非連続的なストライド1部分に記憶されている時の
それら各部分データ・メッセージの開始ロケーション及
びサイズを決定する。このような各部分メッセージが1
つの独立したパケットとして構成されそして送信された
後、コミュニケーション・サブシステムは、いずれかの
データ部分が転送されずに残っているかどうか、従っ
て、更に部分メッセージを送信する必要があるかどうか
を決定する。その必要がある場合、「送信未完エグジッ
ト(exit)」の形で動作をアプリケーション・イン
ターフェースに戻すために未完コールバックが使用さ
れ、次のストライド1データ部分に対する開始ロケーシ
ョン及びデータ長を決定させ、しかる後、コミュニケー
ション・サブシステムを介して、そのデータ部分を読み
取らせ、そして最後に、そのデータ部分を含むパケット
を構成させて送信させ、残りのデータ部分すべてに対し
てもそのようにさせる。一方、最後のデータ部分を含む
部分メッセージが送信されてしまった場合、コミュニケ
ーション・サブシステムはメッセージ制御ブロックにお
いて指定された完了コールバックを呼び出し、送信完了
エグジットを設定する。
【0028】メッセージ受信に対して、本発明のプロト
コルは、送信とは本質的に逆の態様ではあるけれども、
たいへん類似して機能する。詳しく言えば、各部分メッ
セージが受信された後、本発明のアプリケーション・イ
ンターフェースは、受信充填関数を利用して、そのデー
タ部分が記憶されるべき(メモリ領域に関するデータ部
分のサイズによって部分的に又は完全に記憶されるべ
き)宛先アプリケーション・メモリにおけるストライド
1メモリ領域の開始ロケーション及び長さを、宛先アプ
リケーションの必要条件に基づいて決定する。この情報
は宛先アプリケーション・プログラムに与えられ、この
宛先アプリケーション・プログラムが未処理サイズをこ
の長さに等しくセットし且つデータ・ポインタを開始ロ
ケーションにセットすることによって、受信動作を開始
させたメッセージ制御ブロックを更新する。そこで、そ
の更新されたMCBはコミュニケーション・サブシステ
ム(宛先処理エレメント内で機能する)に与えられる。
コミュニケーション・サブシステムは、この部分メッセ
ージをその後受信するとき、そこに含まれたデータ部分
をストライド1メモリ領域にその開始アドレスで且つ指
定された長さだけ書き込むだけである。
【0029】各部分メッセージが受信された後、コミュ
ニケーション・サブシステムは、何れかのデータ部分が
脱落しているかどうか、即ち、何れかの部分メッセージ
が受信されずに残っているかどうかを決定する。それが
残っている場合、「受信未完エグジット」の形で動作を
アプリケーション・インターフェースに戻すために、本
発明のMCBにおける未完コールバックが使用されて、
次のデータ・パケットに対するストライド1メモリ領域
の開始アドレス及びデータ長を決定させ、しかる後、コ
ミュニケーション・サブシステムを介して、そのデータ
部分を次の着信パケットから取り出させて宛先アプリケ
ーション・メモリにおけるこの領域に書き込ませ、そし
て残りのデータ部分すべてに対してもこのようにさせ
る。一方、最後のデータ部分を含む部分メッセージが受
信されてしまった場合、コミュニケーション・サブシス
テムはMCBにおける指定された完了コールバックを呼
び出し、受信完了エグジットを設定する。
【0030】有利なことに、データ転送の各側で独立の
アプリケーション・インターフェースを使用することに
よって、未処理サイズ及び長さの決定は起点処理エレメ
ント及び宛先処理エレメントの両方によりこのデータに
対して独立して且つローカル的に行われる。従って、適
正な充填関数がそのインターフェースにおいて且つそれ
と関連した各異なったアプリケーション・プログラムに
対して使用される限り、対応するアプリケーション・デ
ータ・メモリの適正な領域が連続的にアドレスされて関
連の任意に変化するストライドで各データ部分を読み取
り又は書き込む。従って、本発明のプロトコルは、アプ
リケーション・データを或メモリから他のメモリに、種
々の任意に変化するストライドで且つデータの長さに関
係なく移動させるための一般化された機構を提供する。
【0031】或任意に変化するストライドのデータを他
の任意に変化するストライドのデータに変換するために
中間I/Oバッファを使用する必要を除くために、本発
明のプロトコルは各処理エレメント及びシステム全体に
おける回路の複雑性、物理的サイズ、及びコストの付随
的節約を生じる。更に、これらバッファを介してアプリ
ケーション・データをコピーするために必要であった処
理オーバヘッドを除くことによって、各処理エレメント
に対する、従って、システム全体のアプリケーション処
理スループットを大いに増大させることができる。
【0032】更に、1つの特徴として、本発明のプロト
コルはデータ・フィルタリング及び切り捨てを行うよう
容易に使用可能である。データ送信の際、アプリケーシ
ョン・データは、このデータの不要なセクションを除去
するために、そのデータのそれらセクションの各々をス
キップするよう送信充填関数の使用を通してデータ・ポ
インタをセットするだけで、フィルタ可能である。切り
捨ては、データ受信中、受信充填関数が未処理サイズを
ゼロにセットするだけで行うことが可能である。これ
は、現在のアプリケーション・データ転送に対して受信
されるべきそれ以上の部分データ・メッセージがないこ
と、従って、受信完了エグジットが生じるべきであるこ
とを宛先処理エレメントにおけるコミュニケーション・
サブシステムに信号で伝えるであろう。
【0033】
【実施例】上記の説明を考察すれば、本発明が教示する
ことが、如何なる分散多重処理環境においても、そして
一般的に言えば、任意に変化する(複合を含む)ストラ
イドのデータを、1つの処理エレメントと関連したメモ
リから他の処理エレメントと関連したメモリに転送する
必要がある如何なる処理環境においても、容易に利用可
能であることは当業者には容易に理解できるであろう。
それにもかかわらず、以下の説明を簡単にするために、
プロセッサ間コミュニケーションを容易にするようパケ
ット・ネットワークを利用する大規模な並列処理システ
ムを使用した環境で本発明を説明する。しかし、本発明
は、如何なる特定のアプリケーションにも限定されるも
のではなく、そして、任意に変化するストライド(以下
で詳細に説明される)に記憶されたアプリケーション・
データをプロセッサ間メッセージを基本として転送する
ことに適用可能である。従って、以下の説明は如何なる
特定のアプリケーションにも関連するものではない。
【0034】A.処理環境 具体的に説明すると、図1は、本発明を利用する大規模
な並列処理システム5の非常に高レベルの簡単なブロッ
ク図を示す。一般には、このシステムは1つのアプリケ
ーションにおける別個の部分を並列に処理する比較的多
数(K個)の独立した処理エレメント10で形成され
る。これらプロセッサの各々が個々のアプリケーション
処理タスクを遂行するために、必要に応じて、各プロセ
ッサはパケット・ネットワークを介して他のプロセッサ
と通信し、特に、パケット・メッセージを介して他のプ
ロセッサとの間でアプリケーション・データを転送す
る。各プロセッサは、他の処理エレメントから必要なデ
ータを受信した時にその関連のアプリケーション処理を
引き受け、そしてその処理の結果を他の処理エレメント
に、そこでのその後の処理のために、再びパケット・メ
ッセージによって通信する。
【0035】関連する範囲を更に詳しく言うと、システ
ム5は高速度パケット・ネットワーク50及びK個の同
じマイクロプロセッサ・ベースの処理エレメント10か
ら形成され、それら処理エレメントはすべてパス20を
介してそのネットワークに接続される。このネットワー
クは、任意の対の処理エレメント10の間でパケットを
伝搬できるクロスポイント・ベースのパケット・コミュ
ニケーション組織を提供する。これに関して、ネットワ
ーク50は、機能的には、J*Kのクロスポイント・ス
イッチング・マトリックス40から成り、そのマトリク
スは、スイッチング接点401,1;402,1;・・・40
J,K によって示された独立したクロスポイントを含む。
それらスイッチング接点は、選択的に及びパケット・ヘ
ッダに含まれた経路指定情報の方向に基づいて、対応す
る水平方向及び垂直方向のネットワーク・パス20を接
続して任意の2つの処理エレメント間のパケット接続を
設定する。これらパスの各々は、対応するマイクロプロ
セッサ・ベースの処理エレメントにおいて終了する。こ
れに関して、処理エレメント101、102、103、・
・・10J;及び10J+1、10J+2、10J+3、・・・1
Kは、それぞれのパス201、202、203、・・・2
J及び20J+1;及び20J+2、20J+3、・・・20K
を介してネットワーク50に接続される。
【0036】例えば、処理エレメント101は、パケッ
ト33を形成することによって処理エレメント10J+1
にアプリケーション・データを通信できる。そのパケッ
トは、クロスポイント401、1を閉成するよう付属の経
路指定情報を介してネットワーク50に指示し、それに
よって、破線43により示されるようにパケット接続を
設定してこれら2つの特定な処理エレメント間でこのパ
ケットを伝搬することができる。同様に、処理エレメン
ト10J+3は、パケット37を形成することによって処
理エレメント103にアプリケーション・データを通信
できる。その場合、そのパケット37は、クロスポイン
ト403、3を閉成するよう付属の経路指定情報を介して
ネットワーク50に指示し、それによって、破線47に
より示されるようにパケット接続を設定してこれら2つ
の特定な処理エレメント間でこのパケットを伝搬するこ
とができる。
【0037】パケット・ネットワーク50は、非同期転
送モードを使用するというような広範囲の種々なアーキ
テクチャの1つを導入することもできる。しかし、選ば
れた特定のアーキテクチャ及びその詳細は、それが内部
的なパケット経路指定を達成する態様と共に、すべて本
発明とは無関係であり、従って、以下では詳細に説明し
ない。
【0038】それら処理エレメントはすべて同じものな
ので、この説明はエレメント101に集中させる。これ
に関して、図2は、処理システム5において利用される
例示的な処理エレメント101の高レベルのブロック図
である。
【0039】高レベルでは、エレメント101は、マイ
クロプロセッサ220、メモリ230及び入出力(I/
O)回路210から形成され、それらはすべて内部バス
240を介して内部接続される。システム・パフォーマ
ンス及びスループットを増加させるために、マイクロプ
ロセッサは、縮小命令セット(RISC)回路を使用し
て実現するのが望ましい。しかし、本発明は、I/O回
路210及びメモリ230の実施と同様に、その選ばれ
た特定のマイクロプロセッサには無関係であるので、こ
れら回路のうち、本発明にとって重要な点だけを以下で
は説明する。
【0040】I/O回路210は、パス201を介して
パケット・ネットワーク50に電気的に接続され、処理
エレメント101において実行するコミュニケーション
・ソフトウエア・ルーチンと関連して、このネットワー
クを介して他の処理エレメントパケット・コミュニケー
ションを行う。コミュニケーション・サブシステム・ル
ーチン及びその関連のI/O回路は、処理エレメント間
パケット・コミュニケーションを処理するように処理エ
レメント内でタスクとして実行するコミュニケーション
・サブシステムを形成する。このコミュニケーション
は、送信のために次のような動作を伴う。即ち、起点の
アプリケーション・データ・メモリから必要なアプリケ
ーション・メモリをコピーし、適切なプロトコル・ヘッ
ダ(経路指定情報及びアプリケーション識別情報を有す
る)、データ及び後書き情報(例えば、メッセージ・デ
リミッタ等)を含むようにパケットを適正にアセンブル
し、これらパケットをネットワーク50に乗せる。そし
て受信に対しては、着信パケットに関して適当な妥当性
チェック及びエラー・チェックを行い、妥当なパケット
に対しては、対応するアプリケーションにこのデータの
到着を知らせ、そのデータを宛先アプリケーション・デ
ータ・メモリにコピーする。
【0041】ランダム・アクセス・メモリ(RAM)を
使用して実施可能なメモリ230は、線形シーケンスの
物理的メモリ・ロケーションを含み、それらロケーショ
ンの一部分がメモリ・マップ250に示される。処理エ
レメント101に対して、このメモリはアプリケーショ
ン・プログラムをメモリ・ロケーションl乃至nに、コ
ミュニケーション・サブシステム・ソフトウエア・ルー
チン260をロケーションn乃至oに、そしてオペレー
ティング・システム262をロケーションo乃至pに記
憶する。上述のように、このソフトウエア配置は、ほと
んどのマイクロプロセッサ・ベースの大規模な並列処理
システムにおいて一般的に使用される。
【0042】本発明の教示するところによれば、及び、
詳しく後述するように、アプリケーション・ソフトウエ
アは、アプリケーション・プログラムをそのままでなく
高レベルで、例えば、ロケーションl乃至mにある高レ
ベル・アプリケーション・プログラム252のみなら
ず、ロケーションm乃至nに記憶された本発明関連の低
レベル・アプリケーション・インターフェースも含むよ
う修正される。高レベル・アプリケーション・プログラ
ム252及び低レベル・アプリケーション・インターフ
ェース254は共にアプリケーション層255を形成す
る。動作的に言えば、本発明のアプリケーション・イン
ターフェースは、後述のようにコミュニケーション・サ
ブシステム及び高レベル・アプリケーション・プログラ
ムと関連して使用される時、任意に変化するストライド
のアプリケーション・データを、コミュニケーション・
サブシステムを介して及び個々の処理エレメント相互間
で、中間のI/Oバッファを通過させる必要なく都合よ
く転送する。
【0043】現在、上述のような通常の大規模な並列処
理システムの場合、データ転送はシステム・パフォーマ
ンス、物理的システム・サイズ及びコストにおいて大き
な不利益を強いることがある。この理由は、この分野で
通常言われているように、コミュニケーション・サブシ
ステム(又はアプリケーション・プログラムそのもの)
は所与のメッセージに対するすべての発信データをそれ
の送信前にアプリケーション・データ・メモリから入力
バッファにコピーすること及び受信の時には着信メッセ
ージにおけるすべてのデータを出力バッファからアプリ
ケーション・データ・メモリにコピーすることに依存す
ることである。これらバッファの各々はストライド1メ
モリで編成されるけれども、即ち、各データ・ロケーシ
ョンがギャップなしで前のロケーションに連続的且つ直
列的に続くけれども、送信アプリケーション・プログラ
ムによって形成され、受信アプリケーション・プログラ
ムによって使用される基本的データが、ストライド1デ
ータとして編成されることは滅多にない。事実、アプリ
ケーション・データは任意に変化するストライドでもっ
て編成され、記憶される。更に、これら任意の変化は1
つの処理エレメントにおける1つのアプリケーションか
ら異なる処理エレメントにおける他のアプリケーション
と同じものまで幅広く相違させることができる。
【0044】その結果、送信前に、送信アプリケーショ
ンによって宛先(受信)アプリケーションまで送信され
るべきすべてのデータが先ず種々のメモリ・ロケーショ
ンから且つそのデータが記憶されるストライドが変わる
時に、「ギャザ」されなければならず、そしてコミュニ
ケーション・サブシステムに含まれた出力バッファにス
トライド1データとしてコピーされなければならない。
同様に、受信の際、パケットに含まれた受信データは先
ずそのストライド1編成から変換され、そして宛先アプ
リケーション又はそのアプリケーション・データ・メモ
リが必要とするストライドに変化する時、宛先アプリケ
ーション・データ・メモリに選択的にコピーされなけれ
ばならず、明確に言えば、分配又は「スキャッタ」され
なければならない。
【0045】残念なことに、アプリケーション・スルー
プットの増加において費やされるのが最上の貴重な処理
時間が、これら「ギャザ」及び「スキャッタ」動作行う
場合には、代わりにオーバヘッドとして消費される。事
実、メモリ・ストライドの任意の変化という性質によっ
ては、連続した各データ項目に対する適正なメモリ・ア
ドレスを単に計算することだけに大量の処理時間が消費
されることがある。大量のデータがある場合、これら計
算に当てられる処理時間は、アプリケーション・スルー
プットを大きく減少させ、処理システム全体の処理スル
ープットにかなりの待ち時間を導くことがある。更に、
入力バッファを内蔵することは回路の複雑性を増大さ
せ、従って、各処理エレメント及びシステム全体のコス
ト及びサイズを増大させる。
【0046】任意に変化するストライドを持ったデータ
の処理エレメントに基づく一般的な転送に付随する欠点
を十分に認識するために、先ず、データ・ストライドの
概念に関する説明を行う。しかる後、独立した処理エレ
メント間でデータを転送するために通常使用されるプロ
トコルを詳しく説明する。その後、そのような転送をI
/Oバッファを通過させる必要なしに処理するための本
発明のプロトコルを、データ・フィルタリング及びデー
タ切り捨てまでのそのプロトコルの拡張と共に説明す
る。
【0047】B.メモリ・ストライド 暫くの間、図3に示されたN*nマトリクス300を考
察する。一部分しか示されてないこのマトリクス(N列
及びn行を有する)は、行0に例示的なマトリクス・エ
レメント3000、0、3001、0、3002、0・・・30
N,1及び列0に3000、0、3000、1、3000、2、3
000、3・・・3000、nを含んでいる。データが列方向
に記憶される場合、即ち、任意の列における後続の各デ
ータ・エレメントがその列における先行データ・エレメ
ントの直後に続いて記憶される場合、エレメント300
0、1のような任意のデータ・エレメントが与えられる
と、次に続くエレメント3000、2は、前のエレメント
のアドレスを1だけインクレメントすることによって簡
単に得られる。このように、列0のような任意の列に沿
ったデータへのアクセスは、最初のデータ・エレメント
のメモリ・アドレスを1ずつ連続的にインクレメントす
ることによって生じる。このように、各列は「ストライ
ド1」であると言える。勿論、データは一定の非1スト
ライドでもって編成される。
【0048】行方向記憶のマトリクス300の場合、エ
レメント3001、0の後にエレメント3002、0をアクセ
スするような1つの所与の行における連続したエレメン
トのアクセスは、n個の個々のメモリ・ロケーションに
わたって、即ち、1列の長さだけスキップする必要があ
る。従って、マトリクス・エレメント3001、0からエ
レメント3002、0をアクセスするためには、前者のエ
レメントのアドレスにn個のメモリ・アドレス・インク
レメントが加えられて後者のエレメントに到達するよう
にしなければならない。各列は同じ長さ、即ち、n個の
ロケーションを持つので、N個の列の各々はストライド
nであると言える。
【0049】対照的に、図4に示されたN*nマトリク
ス400を考察する。マトリクス400もマトリクス3
00のように列方向に記憶される。マトリクス400
は、非ゼロの対角方向データ・エレメントX0,0
1,1、X2,2、X3,3、・・・XN-1,n-1及び非対角方向
の非ゼロ・エレメントXN-a,n-b及びX0,nから形成され
る。垂直方向及び水平方向において1又はnの一定の及
び規則的なストライドをを有するマトリクス300とは
対照的に、マトリクス400は変化するストライドを有
する。エレメントX1,1からエレメントX2,2へのアクセ
ス及びエレメントX0,0からエレメントX1、1へのアクセ
スと関連したアドレス・インクレメント、従って、メモ
リ・ストライドは一定及び規則的である。しかし、エレ
メントX2,2からエレメントXN-a,n-bへのアクセスと関
連したアドレス・インクレメントはエレメントX1,1
らエレメントX2,2へのアクセスと関連したそれとは必
ずしも等しくない。同様に、エレメントXN-a,n-bから
0,nへのアクセスと関連したストライドは、このマト
リクスにおける如何なる前のエレメントと関連したスト
ライドとも異なることがある。従って、マトリクス40
0における連続したエレメントがアクセスされる時、こ
れらエレメントと関連したストライドは、どのエレメン
トがアクセスされようとしているかによって変化する。
【0050】更に、事態を複雑にするが、データは、い
わゆる、「複合」ストライド(マトリクス400には明
瞭には示されてないけれども)を持つことができる。複
合ストライドでは、そのストライドは記憶されたデータ
値又は対応するメモリ・アドレスそのものの関数であ
る。従って、複合ストライドを持ったデータをアクセス
するためには、次に続くデータ・エレメントに対するメ
モリ・インクレメントは、直前のデータ・エレメントの
それに対するメモリ・アドレス又は実際のデータ値の関
数として決定される必要があるかもしれない。明らか
に、適正なアドレス・インクレメントの決定における処
理時間は拡大される。特に、複合ストライドの場合又は
大きなデータ転送に対する場合、それは大量のオーバヘ
ッドを生じさせることがある。任意に変化するストライ
ド及び複合ストライドの両方とも、通常のデータ・メッ
セージ処理では同じ欠点を与える。しかし、これらスト
ライドの何れかを持ったデータの転送と関連した欠点
は、本発明によって都合よく除かれるので、参照の便宜
上、これらストライドの両方とも、以下では、単純に任
意に変化するストライドとして集合的に参照される。
【0051】C.通常の処理エレメント間データ・コミ
ュニケーション・プロトコル 本質的には、上述のように、大規模な並列処理システム
における通常のデータ転送は、起点処理エレメントにお
けるアプリケーション・データ記憶装置から宛先処理エ
レメントにおけるアプリケーション・データ記憶装置に
転送されるべきすべてのアプリケーション・データを前
者のエレメントにおけるストライド1出力バッファにコ
ピーするためにコミュニケーション・サブシステムに依
存する。このコピー動作は、このデータの個々の部分す
べてを、各部分が記憶されるストライドに関係なくこの
ストライド1バッファに、1つの部分が他の部分の直後
に続くように、連続的に「ギャザリング」する必要があ
る。そのような各部分をアクセスするための開始アドレ
ス及び長さは起点エレメントにおけるアプリケーション
・プログラムによって決定され、供給される。しかる
後、起点エレメントにおけるコミュニケーション・サブ
システムは、このデータすべてを含む単一のパケットを
形成し、パケット・ネットワークを介して宛先処理エレ
メントにこのパケットを送信する。
【0052】同様に、基本的には逆であるけれども、通
常、着信データを受信する場合、宛先処理エレメントに
おけるコミュニケーション・サブシステムは、このデー
タをすべてストライド1入力バッファにコピーする。一
旦このコピーが完了すると、コミュニケーション・サブ
システムは、このデータの連続部分をそのバッファから
ローカル・アプリケーション・データ・メモリに任意に
変化するストライドで分散(スキャッタ)する。宛先エ
レメントで実行するアプリケーション・プログラムは、
ローカル的に記憶されるべきそのような各部分に対する
開始メモリ・アドレス及び長さを供給する。起点エレメ
ント及び宛先エレメントは、通常は、同じデータを種々
の任意に変化するストライドで記憶する。それら部分の
各々のサイズも、起点エレメントと宛先エレメントとの
間では異なることがある。
【0053】図5は、通常のメッセージ制御ブロック
(MCB)、例えば、MCB500及びそれの構成フィ
ールドを示す。図示のように、MCB500は3つの独
立したフィールド、即ち、プロトコル・ヘッダ510、
データ・ポインタ530、及び完了コールバック540
を含む。プロトコル・ヘッダ510は長さフィールド5
20及び他のフィールド(図を簡単にするためにすべて
図示されてない)を含む。その長さフィールド520
は、送信されるべき又は受信されるべきデータすべての
合計バイト長を指定する。上記他のフィールドは、この
データが送られる特定の処理エレメント、このデータを
得るべき実行中の特定のアプリケーション、及びこのデ
ータの起点となる処理エレメント及びアプリケーション
指定する(代表的には、経路指定ヘッダによる)。送信
に対しては、データ・ポインタ530は、送信されるべ
きデータの第1メモリ・ロケーションの起点アプリケー
ション・データ・メモリにおけるアドレスを含む。受信
に対しては、このデータ・ポインタは、このデータが記
憶されるべき宛先アプリケーション・データ・メモリに
おける第1メモリ・ロケーションのアドレスを含む。
【0054】完了コールバック・フィールド540は、
実行が終わった時、一般に「エグジット(exit)」
と呼ばれているものを実装する命令に対するポインタを
持っており、パケット・コミュニケーション動作の完了
時に直ちに読み出しプログラムに戻す。特に、データ・
パケットが送信されるべき場合、この終了は、いわゆる
「送信完了エグジット」であり、それはコミュニケーシ
ョン・サブシステムがこのパケットを正常に送信したこ
とを起点アプリケーション・プログラムに効果的に知ら
せる。一方、データパケットが受信されるべき場合、こ
のエグジットは、いわゆる「受信完了エグジット」であ
り、それはデータ・パケット全体が正常に受信されたこ
とを宛先アプリケーション・プログラムに効果的に知ら
せる。実行が何れかのエグジットを通過する時、これ
は、アプリケーション・プログラムにより呼び出された
現在のコミュニケーション・タスクが正常に終了し、そ
れによって、そのアプリケーション・プログラムが他の
タスクを呼び出すのを可能にする。
【0055】図6は、処理エレメント間データ転送を処
理するための各処理エレメント、例えば、エレメント1
1において通常の、即ち、従来のプロトコルを実施す
るために利用されるプロセスを高レベルのブロック形式
で示す。図示のように、これらプロセスは、コミュニケ
ーション・サブシステム620と関連したアプリケーシ
ョン・プログラム610を含み、そしてコミュニケーシ
ョン・サブシステムはI/Oバッファ630を含む。独
立の入力バッファ及び出力バッファ(両方ともこの図に
は明確には示されていない)は、着信メッセージ・デー
タ及び発信メッセージ・データのコピーを保持するため
に使用される。メモリ230(図2参照)における負担
を軽減し、従って、各処理エレメントの処理スループッ
トを増大させるために、通常これらバッファは、各処理
エレメントにおける関連の物理的メモリ230内にある
プログラム及びデータ記憶領域とは別個の高速度ハード
ウエア・バッファを占有する。図6に示された線615
で表わされるように及び上述のように、通常のコミュニ
ケーション・プロトコルは、アプリケーション・プログ
ラム610及びコミュニケーション・サブシステム62
0の間の双方向対話に依存する。この対話は、アプリケ
ーション・プログラムによってMCB500(図5参
照)をコミュニケーション・サブシステムに発生するこ
と、アプリケーション・プログラムによって開始アドレ
ス及び長さ情報をコミュニケーション・サブシステムに
与えること、及びコミュニケーション動作の正常な終了
時に、アプリケーション・プログラムにおける適当なエ
グジット動作を呼び出すためにコミュニケーション・サ
ブシステムによって完了コールバックを発生することに
よって例証される。
【0056】上記のことを留意して図7を参照すると、
これらの図は、システム5において1つの処理エレメン
ト、例えば、エレメント101からパケット・コミュニ
ケーションを介して他のエレメント、例えば、エレメン
ト10J+1に、任意に変化するストライドの例示的デー
タを通常どうりに転送する方法の高レベルのシステム・
ブロック図を示す。
【0057】説明の便宜上、処理エレメント101にお
いて実行するアプリケーション・プログラムAは、アプ
リケーション・プログラムAのデータ・メモリ700に
おける5つの異なるメモリ領域、即ち、記憶領域700
A、700B、700C、700D、及び700Eに現
在記憶されているデータ、即ち、部分A、B、C、D及
びEを、アプリケーション・プログラムBによるその後
の使用のために処理エレメント10J+1にあるアプリケ
ーション・プログラムBのデータ・メモリ760に転送
しようとしていると仮定する。明瞭には示されていない
けれども、各処理エレメントに対するアプリケーション
・データ・メモリはそのエレメント内にある物理的メモ
リ、即ち、図2に示されたメモリ230内に含まれる。
図7に示されるように、これらのデータ部分は任意に変
化するストライド、従って、非一定且つ不規則的なスト
ライド(例えば、ストライドx)を記憶される。このデ
ータを処理エレメント101から転送するために、アプ
リケーション・プログラムAは、このデータの各部分が
記憶されている開始アドレス及びこのような各部分の長
さを決定する。このアドレス及び長さ情報はコミュニケ
ーション・サブシステム620に送られる。このコミュ
ニケーション・サブシステムは、このデータの各部分
(リンクされたリストとして集合的に記憶されることが
多い)をアクセスし、そしてその部分を、コミュニケー
ション・サブシステム620にあるストライド1出力バ
ッファ632内の連続したロケーションに読み込む。
【0058】メモリ開始アドレス及びデータ長を先ず決
定しそして各データ部分をメモリ700から出力バッフ
ァ632の対応部分に1対1でコピーするというこの動
作全体は、線710により示される、いわゆる「ギャ
ザ」動作を遂行することである。その結果、これら5つ
の無関係に置かれたデータ部分が、ストライド1データ
として集合的に構成されるように、出力バッファ632
相互に連続してコピーされる。処理エレメント10J+1
に送信されるべきすべてのデータ(ここでは、データ部
分A乃至Eより成る)がストライド1データとして出力
バッファ632に一旦コピーされると、コミュニケーシ
ョン・サブシステム620は、線715により示される
ように、このサブシステムの一部分を形成する周知のパ
ケット・アセンブリ及び送信プロセス720を介してデ
ータを取り出し、このデータすべて及び適当なヘッダ及
びトレイラ情報を含む適当なメッセージ・パケットを構
成し、しかる後、パス201を介してコミュニケーショ
ン組織50にそのパケットを送信する。
【0059】コミュニケーション組織を介して送られる
メッセージ・パケットの一般的形式がパケット770に
よって示される。このパケットは、3つの基本的フィー
ルド、即ち、ヘッダ・フィールド772、データ・フィ
ールド774、及びトレイラ・フィールド776を含
む。ヘッダ・フィールド772は種々のフィールド(す
べて通常のものであり、図示されてない)を含んでお
り、なかんずく、パケットに含まれたデータが送られる
宛先処理エレメント及びそこで実行するアプリケーショ
ン、並びにこのデータを発生する処理エレメント及びア
プリケーション・プログラムを指定するフィールドを含
んでいる。データ・フィールド774は、アプリケーシ
ョン・プログラムA及びアプリケーション・プログラム
Bの間で送信されるべきすべてのデータ、ここでは、ス
トライド1構成で配置されたデータ部分A乃至Dより成
るデータを含んでいる。トレイラ・フィールド776は
種々のフィールド(すべて通常のものであり、図示され
てない)を含んでおり、なかんずく、種々のデリミッタ
及びエラー訂正のために使用されるフィールドを含んで
いる。
【0060】そこで、パケット770はコミュニケーシ
ョン組織50を介して処理エレメント10J+1に搬送さ
れる。それの到達の時、コミュニケーション・サブシス
テム620の一部分を形成するパケット受信及びディス
アセンブリ・プロセス740がエレメント10J+1を処
理してそのパケットに含まれたすべてのデータを取り出
す。説明の便宜上、このデータはアプリケーション・プ
ログラムBによって送信請求されたと仮定する。その場
合、着信パケット770は、そのデータがこのアプリケ
ーション・プログラムBによって要求されるまで、コミ
ュニケーション・サブシステムによって一時的に記憶さ
れるというものではない。従って、送信請求されたデー
タに対して、パケット770から取り出されたデータは
コミュニケーション・サブシステム620によって利用
されるストライド1入力バッファ634にコピーされる
であろう。着信パケット内に含まれたすべてのデータ
(ここでは、データ部分A乃至E)が一旦ストライド1
入力バッファ634にコピーされてしまうと、アプリケ
ーション・プログラムBは、このデータの各部分に対す
る開始メモリ・アドレス及びそのような各部分の長さを
決定することによってそのデータを、このアプリケーシ
ョンが必要とするもの、ここではA'、B'、C'、及び
D'として示された4つの部分に効果的に区分される。
【0061】しかる後、アプリケーション・プログラム
Bは、このアドレス及び長さ情報をコミュニケーション
・サブシステムに供給する。コミュニケーション・サブ
システムは、これら部分の各々を、このアプリケーショ
ンが使用しようとしているストライド(例えば、任意に
変化するストライドy、但し、一般にはyはxに等しく
ない)でもって、対応するメモリ領域760A'、760
B'、760C'、及び760D'内に1対1で記憶する(こ
のデータはリンクされたリストとして集合的に記憶され
ることが多い)。この区分化及び記憶動作は、いわゆる
「スキャッタ」動作であり、線750によって示され
る。同様に、ギャザ動作とは反対であるけれども、スキ
ャッタ動作は、アプリケーションBのデータ・メモリに
おける開始メモリ・ロケーション及び個々の各データ部
分(A'乃至D')の長さの両方を計算すること及びその
部分をアプリケーションBデータ・メモリ内の対応する
記憶領域にコピーすることを含む。
【0062】従って、容易に明らかなように、ストライ
ド1出力バッファ及びストライド1入力バッファを使用
する2つのコピー動作を介して、起点処理エレメントに
あるどのような任意に変化するストライドのデータから
でも、宛先処理エレメントにおけるアプリケーション・
プログラムが必要とするどのような任意に変化するスト
ライドのものにでもに、データを変換するという付随的
な必要性があっても、通常のデータ転送プロトコルで
は、起点処理エレメントから宛先処理エレメントにその
データすべてを送信するために1つのパケット770し
か使用しない。
【0063】理解を固めるために、図8は、データの送
信及び受信の両方に対する機能的な見地からのこの通常
のプロトコルを示す。
【0064】特に、図8は、この従来のプロトコルの高
レベルの機能的ブロック図を示し、特にその部分800
は、処理エレメント101において実行するアプリケー
ション・プログラムAから処理エレメント10J+1にお
いて実行するアプリケーション・プログラムBにアプリ
ケーション・データを送信するためのものである。
【0065】図示のように、データを送信するために、
アプリケーション・プログラムA(一般的には、図6に
示されたアプリケーション・プログラム610とみなす
ことができる)は、ブロック810によって示されるよ
うに、通常のメッセージ制御ブロック(MCB)500
を発生する。アプリケーション・プログラムAは、プロ
トコル・ヘッダ・フィールド、長さフィールド、及び完
了コールバック・フィールド(図5参照)に適当なエン
トリを挿入する。長さフィールドは、送信されるべきデ
ータ全体の長さのバイト・カウントを与えられる。プロ
トコル・ヘッダの残り部分は、なかんずく、起点処理エ
レメント及び宛先処理エレメント、この場合、エレメン
ト101及び10J+1、並びにそのデータを発生するアプ
リケーション・プログラム及びそのデータを供給される
アプリケーション・プログラム、この場合、アプリケー
ション・プログラムA及びB、を識別するために与えら
れる。しかる後、図8に示されるように、アプリケーシ
ョン・プログラムAは線815によってMCB500を
コミュニケーション・サブシステム620に与える。更
に、アプリケーション・プログラムAは、それぞれバラ
バラに記憶されたそのデータのストライド1部分に対す
る開始ロケーション及び長さをすべて決定する。
【0066】それに応答して、コミュニケーション・サ
ブシステム620はそのデータ部分をすべてアプリケー
ションAのデータ・メモリからストライド1出力バッフ
ァ632にコピーする。しかる後、コミュニケーション
・サブシステムは、図8のブロック830によって示さ
れるように、そのデータを含むデータ・パケットを構成
し、コミュニケーション組織を介して宛先処理エレメン
ト10J+1にそのパケットを送信する。一旦パケットが
正常に送信されると、コミュニケーション・サブシステ
ムはアプリケーション・プログラムAに完了コールバッ
クを与える(ブロック840)。即ち、実行は、MCB
500の完了コールバック・フィールドで指定されたア
ドレスにあるこのアプリケーション・プログラム内の命
令に戻される。このように及び線845によって示され
るように、完了コールバックの結果、プロトコルから送
信完了エグジットを生じる。
【0067】図9は、処理エレメント10J+1において
行われるこの従来のプロトコルの高レベルの機能的ブロ
ック図を示す。特に、このプロトコルの部分900は、
処理エレメント101において実行されるアプリケーシ
ョン・プログラムAによって送信されそしてエレメント
10J+1において実行されるアプリケーション・プログ
ラムBに与えられるアプリケーション・データを受信す
るためのものである。
【0068】図示のように、データを送信請求するため
に、アプリケーション・プログラムB(一般には、図6
に示されたアプリケーション・プログラム610とみな
すことができる)は、ブロック810で示されるよう
に、先ずメッセージ制御ブロック(MCB)500を発
生する。アプリケーション・プログラムBは、プロトコ
ル・ヘッダ・フィールド、長さフィールド、データ・ポ
インタ・フィールド、及び完了コールバック・フィール
ド(図5参照)に適当なエントリを挿入する。長さフィ
ールドは、受信されるべきデータ全体の長さのバイト・
カウントを与えられる。プロトコル・ヘッダ・フィール
ドの残りの部分は、なかんずく、起点処理エレメント及
び宛先処理エレメント、この場合、エレメント101
び10J+1、及びデータを発生するアプリケーション・
プログラム及びそのデータを受信するアプリケーション
・プログラム、この場合、アプリケーション・プログラ
ムA及びBを識別するために与えられる。しかる後、図
9に示されるように、アプリケーション・プログラムB
は、線915によってコミュニケーション・サブシステ
ムにMCB500を与える。更に、アプリケーション・
プログラムBは、このデータの対応する部分が書き込ま
れるべきそれぞれ独立のストライド1メモリ領域に対す
るすべての開始アドレス及び長さを先ず決定することに
よって、そのアプリケーションが必要とする任意に変化
するストライドに着信データを効果的に区分する。
【0069】しかる後、コミュニケーション・サブシス
テムは、ブロック920によって示されるようにデータ
・パケットを受信し、図9のブロック930によって示
されるように、ストライド1入力バッファ634からア
プリケーションBデータ・メモリにおける分散した且つ
対応するストライド1記憶領域に、アプリケーション・
プログラムBにより指定されるように部分ごとにコピー
する。パケット全体が完全に受信されてしまい、そして
そのデータがすべてアプリケーションBデータ・メモリ
にコピーされてしまうと、コミュニケーション・サブシ
ステム620は、ブロック940によって示されるよう
にアプリケーション・プログラムBに完了コールバック
を与える。即ち、実行は、MCB500の完了コールバ
ック・フィールド540において指定されたアドレスに
あるこのアプリケーション・プログラムにおける命令に
戻される。このようにそして図9の線945によって示
されるように、完了コールバックの結果、受信完了エグ
ジットがそのプロトコルから生じる。
【0070】D.本発明の処理エレメント間データ・コ
ミュニケーション・プロトコル 上述のように、通常のプロトコルは、本来、2つの処理
エレメント間で通信されるべきすべてのアプリケーショ
ン・データを単一のパケットを介して転送されるように
制限する。これは、データがこの単一のパケットで通信
可能となるように、このデータすべてが2つの独立した
ストライド1I/Oバッファ(送信用の出力バッファ及
び受信用の入力バッファ)を通過することを必要とす
る。このように、このデータはすべて、送信に対して
は、出力バッファにコピーする「ギャザ」動作を介し
て、1つの任意に変化するメモリ・ストライドからスト
ライド1に変換されなければならず、そして受信の際に
は、コピー及び「スキャッタ」動作を介して、ストライ
ド1から他の任意に変化するメモリ・ストライドに変換
されなければならない。この動作によって、「ギャザ」
及び「スキャッタ」動作を行う場合、特に、そこで使用
するための開始アドレスを計算するために大量の処理時
間が消費されることがある。これは、各処理エレメント
によって与えられるアプリケーション・スループットを
減少させ、従って、処理システム全体のアプリケーショ
ン・スループットを減少させる。更に、このプロトコル
はI/Oバッファの使用を必要とし、そしてそのI/O
バッファは、複雑性、スペース、及びコストを各処理エ
レメントに加え、結果として、システム全体にも加える
ことになり、そしてそれらの制限された容量のために、
大量のデータが転送されるべき場合には、システム・ス
ループットを制限することがある。
【0071】本発明によれば、特に、処理エレメント間
データ転送に有用なコミュニケーション・プロトコルが
提供され、一方、通常のプロトコルに基づく関連の欠点
はすべて除去される。
【0072】特に、本発明は、各パケットが部分データ
・メッセージを含む場合、1つのパケットでなく、一連
のパケットでアプリケーション・データを転送すること
によるものである。各部分データ・メッセージは、起点
アプリケーション・データ・メモリに記憶されるデータ
のストライド1部分を含む。本発明のプロトコルの一部
分を形成するアプリケーション・インターフェースは、
個々のデータ部分の開始位置及び長さをローカル的に決
定する。そこで、そのインターフェースは、本発明のメ
ッセージ制御ブロック(詳細に後述される)を適当に更
新するアプリケーション・プログラムにこの情報を与え
る。
【0073】一般的に言えば、本発明のメッセージ制御
ブロックは2つの付加フィールド、即ち、「未完コール
バック」フィールド及び「未処理サイズ」フィールドを
含み、これらは共に通常のメッセージ制御ブロックには
存在しない。各部分メッセージに対して、未処理サイズ
はそのメッセージ内に含まれたデータの長さを指定す
る。未完コールバックはアプリケーション・インターフ
ェースにおける最初の命令に対するポインタを含む。
【0074】メッセージ送信に対して、本発明のインタ
ーフェースは、起点アプリケーション・データ・メモリ
の対応するストライド1領域に記憶された各データ部分
の開始ロケーション及びサイズを決定するために、アプ
リケーション・データに特有な送信充填関数(以下で
は、ΦSと記す)を利用する。各部分メッセージが1つ
の独立のパケットとして構成されそして送信された後、
コミュニケーション・サブシステムは、送信されないで
残っているデータ部分があるかどうか、従って、更に部
分メッセージを送信する必要があるかどうかを決定す
る。その必要がある場合、「送信未完エグジット」の形
で実行をアプリケーション・インターフェースに戻すた
めに未完コールバックが使用されて、次のデータ部分に
対する開始ロケーション及びデータ長を決定し、しかる
後、コミュニケーション・サブシステムを介してそのデ
ータ部分を読み出し、そして最後に、そのデータ部分を
含むパケットを構成して送信し、そして残りのデータ部
分すべてに対してそのようにする。一方、最後のデータ
部分を含む部分メッセージが送信されてしまった場合、
コミュニケーション・サブシステムは完了コールバック
を呼び出して送信完了エグジットを設定する。
【0075】メッセージ受信に対して、本発明のプロト
コルは、本質的には逆の態様であるけれども、全く同様
に機能する。詳しく言えば、本発明のアプリケーション
・インターフェースは、着信の部分データ・メッセージ
におけるデータ部分が記憶されるべき宛先アプリケーシ
ョン・メモリにおける対応するメモリ領域の開始アドレ
ス及び長さを、宛先アプリケーションの必要性に基づい
て決定するために受信充填関数(以下では、ΦRと記
す)を利用する。この情報は、未処理サイズをその長さ
に等しく設定し且つデータ・ポインタを開始ロケーショ
ンに設定することによって、本発明のメッセージ制御ブ
ロックを更新する受信動作を開始した宛先アプリケーシ
ョン・プログラムにより与えられる。更新されたMCB
はコミュニケーション・サブシステム620に与えられ
る。コミュニケーション・サブシステムは、その後、こ
の部分データ・メッセージを受信した時、そこに含まれ
たデータ部分を、開始アドレスで且つ指定された長さだ
けメモリ領域に書き込むだけである。各部分メッセージ
が受信された後、コミュニケーション・サブシステム
は、データ部分の脱落があるかどうか、即ち、受信され
ずに残っているメッセージ部分があるかどうかを決定す
る。そのようなメッセージがある場合、本発明のMCB
における未完コールバックが実行をアプリケーション・
インターフェースに「受信未完エグジット」という形で
戻すために使用されて、次のデータ・パケットに対する
開始ロケーション及びデータ長を決定し、しかる後、コ
ミュニケーション・サブシステムを介してそのデータ部
分を次の着信パケットから取り出し、そして単にそのデ
ータ部分を宛先アプリケーション・メモリにおける適正
な領域に書き込み、そして残りのデータ部分すべてに対
してそのようにする。一方、最後のデータ部分を含む部
分メッセージが受信されされてしまった場合、コミュニ
ケーション・サブシステムは完了コールバックを呼び出
して受信完了エグジットを設定する。
【0076】従って、本発明のコミュニケーション・プ
ロトコルは、たとえメモリ・ストライドが任意に変化す
るもの及び異なるものであっても、中間のI/Oバッフ
ァを介してデータを送ることを必要とせず、1つのアプ
リケーション・メモリから他のアプリケーション・メモ
リにアプリケーション・データを転送する。従って、こ
れらI/Oバッファは、各処理エレメント及びシステム
全体における回路の複雑性、物理的サイズ及びコストの
付随的な節約を伴って都合よく除去可能である。更に、
これらバッファを介してアプリケーション・データをコ
ピーするに必要な処理オーバヘッドを除くことによっ
て、各処理エレメントに対する、従って、システム全体
のアプリケーション処理スループットを大いに増大させ
ることができる。
【0077】本発明のプロトコルを詳しく示すために、
以下では、先ず、各処理エレメントにおいてそのプロト
コルを実施するプロセスを説明し、続いて、本発明のメ
ッセージ制御ブロックを説明し、そして最後に、アプリ
ケーション・データの送信及び受信のためにそのプロト
コルの使用中に生じる機能的動作を個々に説明する。本
発明のプロトコルの特定の実施例、即ち、特定の低レベ
ル・コーディングと、それと共に使用される特殊なソフ
トウエア・ルーチンとは実施する上で関連しており、そ
して処理エレメント間で大きく変化し得るので、そして
それは、これらの何れの環境に対しても、以下の説明か
ら当業者には容易に明らかであるので、説明を比較的高
レベルのものに限定する。
【0078】図10は、任意に変化するストライドの処
理エレメント間データ転送を処理するための各処理エレ
メント、例えば、エレメント101において本発明のプ
ロトコルを実施するために利用されるプロセスを、高レ
ベルのブロック図形式で示す。図示のように、これらプ
ロセスは、アプリケーション・プログラム(高レベル)
252、及びアプリケーション・インターフェース(低
レベル)254(図2では、物理的メモリ230内にあ
るものとして示される)を含むアプリケーション層25
5と、図10に示されるように、コミュニケーション・
サブシステム620(図6)と同じであるが如何なるI
/Oバッファも含まないコミュニケーション・サブシス
テム1030とを含む。図10の線1015及び102
5によって示されるように、本発明のコミュニケーショ
ン・プロトコルは、アプリケーション・プログラム25
2、アプリケーション・インターフェース254、及び
コミュニケーション・サブシステム1030の間の双方
向的な対話に依存する。この対話は、コミュニケーショ
ン・サブシステムに対するアプリケーション・プログラ
ムによるMCB1100(図11参照)の発生及び連続
的更新によって、各データ部分に対してアプリケーショ
ン・インターフェース開始アドレス及び長さ情報を介し
てコミュニケーション・サブシステムに供給することに
よって、及び、コミュニケーション動作の正常な完了の
際、アプリケーション・プログラム内の適当なエグジッ
ト動作呼び出すためのコミュニケーション・サブシステ
ムによる完了コールバックの発生によって例示される。
【0079】図11は、本発明のメッセージ制御ブロッ
ク(MCB)1100及びその構成フィールドを示す。
図示のように、MCB1100は、5つの独立のフィー
ルド、即ち、長さフィールド520を内蔵したプロトコ
ル・ヘッダ・フィールド510、データ・ポインタ・フ
ィールド530、完了コールバック・フィールド54
0、未完コールバック・フィールド1110、及び未処
理サイズ・フィールド1120を含む。フィールド51
0、520、530、及び540すべて十分に上述され
そしてそこに述べたものと同じ機能を与えるので、付加
的なフィールド1110及び1120だけを説明する。
【0080】全体的な機能では、完了コールバック・フ
ィールド540と同様の未完コールバック・フィールド
1110は、実行された時に呼び出しプログラムに戻る
ように「エグジット」を実施するポインタを含む。未完
コールバックの場合、エグジット(図12乃至図16と
関連して詳しく後述する)は部分データ・メッセージを
介して送信又は受信されるべき次のデータ部分に対する
開始アドレス及び長さを計算するためのアプリケーショ
ン・インターフェースに対するものである。未処理サイ
ズ・フィールド1120は、部分メッセージとして送信
又は受信されるべき次のデータ部分のバイト長を含む。
【0081】図12ないし図13は、処理エレメント1
1において動作し、任意に変化するストライドのアプ
リケーション・データをそのエレメントから他のそのよ
うなエレメント、例えば、エレメント10J+1に送信す
るための本発明のプロトコルの部分1200の高レベル
の機能的ブロック図を示す。
【0082】図示のように、データを送信するために
は、アプリケーション・プログラムA(一般的には、図
12及び図13に示された高レベルのアプリケーション
・プログラム252とみなすことができる)は、先ず、
ブロック1210によって示されるように、送信される
べきデータの第1ストライド1データ部分に対するメッ
セージ制御ブロック1100を発生する。これに関し
て、アプリケーション・プログラムAは、メッセージ全
体に対する内蔵の長さフィールドを含むプロトコル・ヘ
ッダを完成する。即ち、プロトコル・ヘッダは起点処理
エレメント、宛先処理エレメント及びそれらにおけるア
プリケーション・プログラムを指定するように適当にセ
ットされる。長さフィールドは、送信されるべきデータ
すべてのバイト長を指定するようにセットされる。デー
タ・ポインタは、送信されるべき第1データ部分に対す
るアプリケーションAデータ・メモリにおける開始メモ
リ・アドレスを指すようにセットされる。特に、任意に
変化するストライドでもって構成されるデータ全体は一
連のいわゆる「データ・パーシャル(data par
tials)」として記憶される。ここでは、そのよう
な各データ・パーシャルはそのデータのストライド1部
分である。完了コールバック・フィールドは、送信完了
エグジットを呼び出すために適正にセットされる。
【0083】コミュニケーション・サブシステムを介し
て連続的な各ストライド1データ部分を送るために連続
的な各部分データ・メッセージを生成する過程を通し
て、、同じプロトコル・ヘッダをコミュニケーション・
サブシステム1030が繰り返し使用して関連のデータ
・パケット、特に、これらパケットの各々のヘッダ部分
を構成することが可能である。第1の部分データ・メッ
セージに関して、未完コールバック・フィールドは、ア
プリケーション・インターフェースにおける開始の命令
を指すようにセットされる。未処理サイズ・フィールド
は、第1ストライド1データ部分のバイト長を指定する
ようにセットされる。明らかなように、未完コールバッ
ク・フィールドも連続した各部分データ・メッセージに
対して変化しないであろう。しかし、長さフィールド
は、アプリケーションAデータ・メモリにおける対応す
るストライド1データ部分のサイズに基づいて変化する
であろう。
【0084】線1215により示されるように一旦MC
Bが発生されると、コミュニケーション・サブシステム
1030は、ブロック1220に示されるように、アプ
リケーションAデータ・メモリから現在のデータ・パー
シャル、この場合は、第1データ・パーシャルに対する
適当なストライド1データ部分(即ち、第1部分データ
・メッセージを構成する)を読み出す。しかる後、この
サブシステム1030は、ブロック1230(図12)
に示されるように、部分データ・メッセージ・パケット
を構成し、それを、プロトコル・ヘッダに基づいた経路
指定情報と共にコミュニケーション組織を介して送信す
る。その送信動作は、線1235によって示される。一
旦このパケットが送信されると、そのサブシステムは、
ブロック1240に示されるように、送信されるべきデ
ータ全体を形成する連続的なストライド1データ部分す
べてが宛先処理エレメントに送信されてしまったかどう
かを決定する。
【0085】この機能を達成するために、コミュニケー
ション・サブシステムは、現在のデータに関してそれま
でに送信された個々のストライド1データ部分すべての
長さの累計を保持している。そのような各部分の長さ
は、未処理サイズ・フィールドの値を通して与えられ
る。その累計は、現在の部分メッセージ・パケットがコ
ミュニケーション組織へ送信された後、この値でインク
レメントされる。送信されたストライド1データ部分す
べての和がプロトコル・ヘッダにおける長さフィールド
のバイト値に等しい場合、コミュニケーション・サブシ
ステムは線1247をによって完了コールバックを発生
して、送信完了エグジットをアプリケーション・プログ
ラムAにおける適当なポイントに呼び出す。
【0086】一方、未処理サイズ・フィールドの和がプ
ロトコル・ヘッダにおける長さフィールドの値よりも小
さく、それにより、転送されるべき追加のストライド1
データ部分が残っていることを示す場合、コミュニケー
ション・サブシステム線は、1243によって示されよ
うに未完コールバックを発生する。その未完コールバッ
クはアプリケーション・インターフェースに実行を転送
する。この場合、アプリケーション・インターフェース
は、図13のブロック1250によって示されるよう
に、送信充填関数ΦSを計算して、次のストライド1デ
ータ部分に対するアプリケーションAデータ・メモリに
おける開始ロケーション及びその部分のバイト長を決定
する。この関数及び受信充填関数ΦRは、アプリケーシ
ョン・データ・メモリに記憶された基本的なデータ・エ
レメントのストライドにおけるロケーション、連係、変
動と同様、転送されるデータ構造にたいへん特有なもの
である。これらの関数は共に当業者には容易に明らかで
あり且つ本発明は何れの例で使用される特殊な関数に存
在するものでもないので、使用される特殊な関数をあま
り詳細に説明することはしない。
【0087】これに関して、次のストライド1データ部
分に対する開始ロケーション及び長さが一旦決定される
と、ブロック1260及び線1265によって示される
ように、アプリケーション・インターフェースはこの開
始ロケーション及び長さ情報を線1265を介してアプ
リケーション・プログラムAに与える。しかる後、アプ
リケーション・プログラムAは、ブロック1270によ
って示されるように、次の部分データ・メッセージに対
するストライド1データの長さにセットされた未処理サ
イズ・フィールド1120及びこのデータ部分に対する
開始ロケーションにセットされそしてアプリケーション
・インターフェースによって供給されたデータ・ポイン
タ・フィールド530でもってMCB1100を更新す
る。しかる後、ブロック1280によって示されるよう
に、アプリケーション・プログラムAは、その更新され
たMCBをコミュニケーション・サブシステムに発生し
てこの次のストライド1データ部分をアプリケーション
Aデータ・メモリから読み取り、そして、このデータ・
メモリから宛先処理エレメント10J+1におけるアプリ
ケーションBデータ・メモリに転送されずに残っている
アプリケーションAデータ・メモリにおける連続した各
ストライド1データ部分に対して、このデータ部分を含
む対応する部分メッセージ・パケットを構成して送信す
る。
【0088】従って、明らかなように、ブロック122
0、1230、1240、1250、1260、127
0、及び1280の繰り返し実行を通して、コミュニケ
ーション・サブシステム、アプリケーション・インター
フェース及びアプリケーション・プログラムAの間で機
能的対話が生じ、データ全体を宛先処理エレメントに一
連の部分データ・パケットとして送信する。その場合、
これらパケットの各々は、アプリケーションAデータ・
メモリからの連続したストライド1データ部分を含んで
いる。
【0089】図14乃至図16は、処理エレメント10
J+1において動作し、任意に変化するストライドで記憶
するためのアプリケーション・データを、他のそのよう
な処理エレメント、例えば、エレメント101から受信
するための本発明のプロトコルの部分1300を高レベ
ルの機能的ブロック図で集合的に示す。このアプリケー
ション・データの受信と関連した動作は、アプリケーシ
ョン・データを送信するための図12乃至図13に示さ
れたものとは本質的に逆ではあるけれども同様である。
【0090】詳しく言えば、起点処理エレメントからア
プリケーション・データを受信するためには、コミュニ
ケーション・サブシステム1030は、ブロック130
5によって示されるように、先ず、線1301によっ
て、パケット・ネットワーク50から着信部分データ・
パケットの始めの部分を受信する。この特定のパケット
は、起点処理エレメントからの一連のデータ・パケット
における第1パケットである。各部分データ・パケット
及び対応するデータ部分の間の1対1の対応によって、
この一連のデータ・パケットは、一般的には、2つ以上
のデータ・パケットを含み得るものである。これらパケ
ットは、2つの処理エレメントの間でアプリケーション
・データをすべて集合的に転送する。第1着信部分デー
タ・パケットの始めの部分の受信に応答して、コミュニ
ケーション・サブシステムは、ブロック1305に示さ
れるように、これまでに受信したパケットのこの部分か
らプロトコル・ヘッダを取り出す。前述のように、この
ヘッダは、起点処理エレメント、宛先処理エレメント及
び対応するアプリケーションを指定する種々のサブフィ
ールドとともに、長さフィールドを含んでいる。一旦そ
のプロトコル・ヘッダが取り出されると、コミュニケー
ション・サブシステムはブロック1310に示されるよ
うに、メッセージ制御ブロック1100の不完全バージ
ョン(スタブともいう)を構成する。これまでに受信さ
れたこのMCBに対する唯一の情報がプロトコル・ヘッ
ダであるので、このフィールドだけがそのスタブで完成
される。他のすべてのフィールドはゼロのままである。
そこで、コミュニケーション・サブシステムはMCBス
タブをそのまま線1313によってアプリケーション・
プログラムB(一般的には、図2及び図13に示された
高レベルのアプリケーション・プログラム252とみな
すこともできる)に発生する。
【0091】この時点で、後述のように、未完コールバ
ックがまだ生じてない場合、ブロック1315に示され
るように、アプリケーション自体がアプリケーション・
インターフェース254を呼び出し、着信データ部分の
ためのメモリにおける第1ストライド1領域に対する開
始メモリ・ロケーション及び未処理サイズを決定する。
このように、アプリケーション・インターフェース25
4は、ブロック1320に示されるように、先ず受信充
填関数ΦRを計算して、着信データが記憶されるべきア
プリケーションBデータ・メモリにおける第1ストライ
ド領域の始め及び利用可能なこの領域のサイズを指定す
る。この領域のサイズ及びロケーションは、このデータ
の起点となるアプリケーションAデータ・メモリにおけ
るストライド1データ領域のサイズ及びロケーションと
は総体的には無関係であることに注意してほしい。一旦
この開始ロケーション及びサイズが決定されると、ブロ
ック1325によって示されるように、これらの両方と
もアプリケーション・プログラムBに、特に、サイズは
未処理サイズとして、送られる。この情報に応答して、
アプリケーション・プログラムBは、ブロック1330
に示された機能を通して、完了コールバック、未処理サ
イズ及びデータ・ポインタ・フィールドをそこに挿入す
ることによってMCBスタブを完成する。データ・ポイ
ンタは、アプリケーション・インターフェースによって
今与えられた開始アドレス値にセットされる。しかる
後、アプリケーション・プログラムBは今完成したMC
B1100を線1333によってコミュニケーション・
サブシステムに発生して、アプリケーションBデータ・
メモリへの第1データ部分の転送を制御させる。
【0092】その完成したMCBに応答して、コミュニ
ケーション・サブシステム1030は、ブロック133
5に示されるように、第1着信部分データ・メッセージ
・パケットの残りから第1データ部分を取り出す。その
データが取り出されている時、コミュニケーション・サ
ブシステムは、中間コピーを形成することなく、データ
・ポインタ及び未処理サイズによって定義されたアプリ
ケーションBデータ・メモリ内のストライド1メモリ領
域にこのデータを単に書き込むだけである。勿論、受信
される特定のデータ部分の長さによっては、このデータ
は利用可能なストライド1データ領域全体を十分には満
たさないこともある。従って、次のデータ部分からの
(必要に応じて、連続した他の部分からも)着信データ
が、受信充填関数によって指定されるように、このスト
ライド1領域の残り部分を連続して満たすために使用さ
れるであろう。いずれにしても、一旦現在のデータ部分
がアプリケーションBデータ・メモリのこのストライド
1領域に書き込まれてしまうと、コミュニケーション・
サブシステムは、ブロック1343によって示されるよ
うに、すべての着信アプリケーション・データが、この
場合は単一のストライド1部分として、アプリケーショ
ンBデータ・メモリに書き込まれたかどうかを決定す
る。
【0093】この機能を達成するために及び部分メッセ
ージ送信中に生じるものと同様に、コミュニケーション
・サブシステムは、現在のデータに対するこれまでに受
信した個々のストライド1データ部分すべての長さの累
計を保持する。このような各部分の長さは未処理サイズ
・フィールドの値を通して与えられる。その累計は、現
在の部分メッセージ・パケットがアプリケーションBデ
ータ・メモリに書き込まれた後、この値でもってインク
レメントされる。転送されたすべてのストライド1デー
タ部分の長さの和がプロトコル・ヘッダにおける長さフ
ィールドのバイト値に等しい場合、コミュニケーション
・サブシステムは、線1343及び1375で示される
ように完了コールバック信号を発生して受信完了エグジ
ットを呼び出し、アプリケーション・プログラムBにお
ける適当なポイントまで戻る。
【0094】一方、未処理サイズ・フィールドの和がプ
ロトコル・ヘッダにおける長さフィールドよりも小さ
く、それによって、追加のストライド1データ部分がア
プリケーションBデータ・メモリに書き込まれずに残っ
ていることが示される場合、コミュニケーション・サブ
システムは線1341によって示されるように未完コー
ルバックを発生する。一方、その未完コールバックは、
アプリケーション・インターフェース254に実行を転
送する。それに応答して、そのアプリケーション・イン
ターフェースは、ブロック1345によって示されるよ
うに、受信充填関数ΦRを計算してアプリケーションB
データ・メモリにおける次のストライド1データ領域の
開始ロケーション及びその領域のバイト長を決定する。
【0095】次のストライド1データ領域に対する開始
ロケーション及び長さが決定されてしまうと、アプリケ
ーション・インターフェースは、ブロック1350及び
線1353によって示されるように、この開始ロケーシ
ョン及び長さ情報をアプリケーション・プログラムBに
与える。しかる後、ブロック1355によって示される
ように、アプリケーション・プログラムBは、次の部分
データ・メッセージを記憶すべきこのストライド1領域
の長さにセットされた未処理サイズ・フィールド112
0及びこのデータ部分に対する開始ロケーションにセッ
トされたデータ・ポインタ・フィールド530でもって
MCB1100を更新する。勿論、前のストライド1デ
ータ領域が今受信されたデータ部分によって満たされな
かった場合、データ・ポインタ及び未処理サイズは、こ
の領域の残り部分における開始ロケーションを指すよう
に及びこの領域の残りのサイズを反映するように受信充
填関数によってセットされるであろう。いずれにして
も、アプリケーション・プログラムBがMCB1100
を適当に更新すると、その更新されたMCBは、線13
57によって示されるように、コミュニケーション・サ
ブシステムに与えられる。
【0096】その更新されたMCBに応答して、コミュ
ニケーション・サブシステム1030は、ブロック13
60によって示されるように、次の着信部分データ・メ
ッセージ・パケットから次のデータ部分を取り出す。そ
のデータが取り出されている時、コミュニケーション・
サブシステムは、中間コピーを形成することなく、デー
タ・ポインタ及び未処理サイズの現在値によって定義さ
れたアプリケーションBデータ・メモリ内のストライド
1メモリ領域にこのデータを書き込むだけである。しか
る後、コミュニケーション・サブシステムは、ブロック
1365に示されるように、転送されるすべての着信デ
ータがアプリケーションBデータ・メモリにおける適当
な連続的ストライド1データ部分に書き込まれてしまっ
たかどうかを決定する。これを達成するために、コミュ
ニケーション・サブシステムは、今書き込まれた現在の
部分に対する未処理サイズでもって累計をインクレメン
トする。現在のデータ転送に対して書き込まれたストラ
イド1データ部分すべての和がプロトコル・ヘッダにお
ける長さフィールドのバイト値に等しい場合、コミュニ
ケーション・サブシステムは、線1369及び1375
によって示されるように、受信完了エグジットを呼び出
してアプリケーション・プログラムBにおける適当なポ
イントに戻る。
【0097】一方、書き込まれるべき追加のデータ部分
が残っている場合、ブロック1365は、線1367に
よって示されるように、アプリケーション・インターフ
ェース254に未完コールバックを発生して、ブロック
1345によって示されるように、アプリケーションA
データ・メモリから生じた着信ストライド1データ部分
が書き込まれるべきアプリケーションBデータ・メモリ
における次のストライド1データ領域の開始ロケーショ
ン及び長さを計算させ、それをそのような連続した着信
データ部分に対しても行う。従って、明らかのように、
宛先処理エレメントにおいてデータ全体を一連の部分デ
ータ・パケットとして受信するために、コミュニケーシ
ョン・サブシステム、アプリケーション・インターフェ
ース、及びアプリケーション・プログラムBの間で機能
的対話が生じる。その場合、これらパケットの各々にお
けるデータ部分はアプリケーションBデータ・メモリに
おける対応するストライド1領域に書き込まれる。
【0098】従って、2つのアプリケーション・プログ
ラムA及びBの間で同じデータが転送されるけれども、
このデータが書き込まれるアプリケーションBデータ・
メモリにおける各ストライド1データ領域の長さ及びそ
のような領域の数はそのデータが読み取られるアプリケ
ーションAデータ・メモリにおいて使用されたものとは
総体的には無関係であることは容易に認識できることで
ある。このように、本発明のプロトコルは、そのデータ
すべてのサイズ及び起点アプリケーション・データ・メ
モリにそのデータを集合的に記憶するストライドに関係
なく、必要に応じてデータ・パーシャルを宛先アプリケ
ーション・データ・メモリにステア(steer)する
ように使用することができる。
【0099】本発明のコミュニケーション・プロトコル
は、アプリケーション・データの不要な部分をその送信
前にフィルタ・アウトする(取り除く)ために、又は着
信アプリケーション・データをその受信時に切り捨てる
ために容易に使用できる。データ切り捨て及びデータ・
フィルタリングは共に、データベース・トランザクショ
ン、文献照会、実時間データ、その他のような情報の着
信ストリームを管理する非常に高性能の情報フィルタリ
ング・プロセスに対する重要なアプリケーションを持つ
ことが期待できる。従って、本発明のプロトコルは、こ
れらのアプリケーションにおいて特に有用となろう。
【0100】詳しく言えば、図17は、発信データ14
00をその送信前にフィルタするために本発明のプロト
コルが使用される例示的態様を示す。これは、不要な各
ストライド1データ部分をスキップするように単に送信
充填関数を修正することによって達成される。詳しく
は、データ1400は、データ部分1、2、及び3(部
分1410、1420及び1430としても指定され
る)含むものとして、単純化して見ることが可能であ
る。メモリ・ロケーションD1及びD3で開始し且つ長さ
1およびながさ3の対応するストライド1長を有するデ
ータ部分1410及び1430は宛先アプリケーション
・プログラムによって要求され、一方、D2の開始アド
レス及び長さ2のストライド1長を有するデータ部分1
420は不要であるとする。データ部分1420が送信
されないようにするために、送信充填関数ΦSは、デー
タ部分1410の開始ロケーション及びサイズが計算さ
れた後、次のデータ部分の開始ロケーションがロケーシ
ョンD2ではなくD3にセットされそしてこの部分の長さ
が長さ2ではなく長さ3にセットされるように適当に修
正され、それによって、不要なデータ部分1420を効
果的にスキップし、それを含む部分データ・メッセージ
・パケットを送信しないようにする。
【0101】切り捨てに関して、図18は、着信データ
1500をその受信時に切り捨てるために本発明のプロ
トコルを使用する方法を示す。本質的には、切り捨ては
単に未処理サイズをゼロに設定することにより、受信充
填関数を通して達成される。そのようにすることは、後
続するそれ以上のデータがなく、従って、受信動作を停
止し、完了コールバックを宛先アプリケーション・プロ
グラムに発生することをコミュニケーション・サブシス
テムに知らせる。詳しくは、この場合、転送されるべき
アプリケーション・データ1500はデータ部分1及び
2(部分1510及び1520としても指定される)を
含むものとして、単純化して見ることもできる。宛先ア
プリケーション・プログラムはデータ部分1510を必
要とするだけであり、データ部分1520を使用しない
と仮定する。従って、データ部分1510が宛先処理エ
レメントで受信されそしてそこの対応するアプリケーシ
ョン・データ・メモリに記憶されてしまうと、受信充填
関数ΦRは、次のストライド1メモリ領域に対するデー
タ長、従って未処理サイズ、即ち、着信データ部分15
20を記憶するために使用されたであろう未処理サイズ
を単にゼロにセットするように修正される。従って、デ
ータ部分1510が宛先アプリケーション・データ・メ
モリに書き込まれてしまうと、コミュニケーション・サ
ブシステムは完了コールバックを発生する。その完了コ
ールバックは、呼び出されると、受信完了エグジット設
定して宛先アプリケーション・プログラムに戻す。
【0102】独特の高レベルアプリケーション・プログ
ラム及び独特の低レベルアプリケーション・インターフ
ェースを利用するものとして本発明のプロトコルを説明
したけれども、それらの間のそのようなはっきりした境
界が必要ないことは当業者には明らかであろう。それに
関して、アプリケーション・プログラムを、それ自身の
アプリケーション・インターフェースを含むように書く
ことも可能である。更に、アプリケーション・プログラ
ムは任意の数の内部アプリケーション・インターフェー
スを持つことも可能である。更に、アプリケーション・
インターフェースは、多数の異なる送信充填関数及び多
数の異なる受信充填機能を組み込むことができ、その場
合、特殊な充填関数が、そのインターフェースを通る関
数である各特定のアプリケーション・プログラムに対応
する。これに関して、特殊な送信充填関数は、起点アプ
リケーション・データ・メモリに記憶された特殊なアプ
リケーション・データの編成、ストライド及びロケーシ
ョンに基づいて選択されるであろう。特殊な受信充填関
数は、同じ特性に基づいて、しかし宛先アプリケーショ
ン・データ・メモリ及びそこに書き込まれるべきアプリ
ケーション・データと関連して選択されるであろう。
【0103】更に、アプリケーション・データを転送す
ることによって本発明のプロトコルを説明したけれど
も、このプロトコルは、任意の形のディジタル情報、例
えば、プログラム又はデータを1つのメモリから、使用
されるべき任意に変化するストライドを持った他のメモ
リに転送するために使用可能である。それに関して、こ
れらメモリは、物理的に独特のメモリ・ユニットである
必要はなく、むしろ、普通の物理的メモリ・ユニット内
にある単に2つの論理的に独立した記憶領域であればよ
い。
【0104】更に、各々が対応するデータ部分を含む複
数のパケットを転送することによって本発明のプロトコ
ルを明瞭に説明したかもしれないけれども、一般的言っ
て、このプロトコルは、メッセージがパケットの形を取
るかどうかに関係なく、そのメッセージ内の任意のタイ
プのデータ部分を転送するために使用し得るものなので
ある。それに関して、当業者は、必ずしもパケットに基
づかない任意のタイプのメッセージを搬送する広範囲の
コミュニケーション組織のうちの何れかで使用するため
に、本発明のプロトコル及びここで開示した実施例を容
易に適応させることができるであろう。
【0105】
【発明の効果】本発明によれば、任意に変化するストラ
イドのアプリケーション・データを、中間のデータ記憶
装置を必要とすることなく独立の処理装置間で転送する
ことができる。
【図面の簡単な説明】
【図1】本発明を利用する代表的な大規模並列処理シス
テム、即ち、システム5の非常に高レベルの簡単化した
ブロック図を示す。
【図2】処理エレメント5において利用された処理エレ
メント101及びメモリ230の、特に、ソフトウエア
記憶されたメモリ・マップ250の高レベル・ブロック
図を示す。
【図3】連続的に水平方向及び垂直方向に配置されたデ
ータ・エレメントの間に一定のストライドを有するマト
リクス400を示す。
【図4】連続したデータエレメントの間に変化するスト
ライドを有するマトリクス400を示す。
【図5】通常の、即ち、従来のメッセージ制御ブロック
500及びそれの構成フィールドを示す。
【図6】処理エレメント間データ転送を処理するための
各処理エレメント内で従来のプロトコルを実施するため
に利用されるプロセスを高レベルのブロック図形式で示
す。
【図7】図1に示されたシステム5において、任意に変
化する例示データが1つの処理エレメント、例えばエレ
メント101からパケット・コミュニケーションを介し
て他のエレメント、例えば10J+1に通常転送される従
来方法の高レベルのシステム・ブロック図の一部分を示
す。
【図8】プロセッサ間データ・コミュニケーションのた
めの通常のプロトコルの高レベルの機能的ブロック図の
一部分を示し、特に、システム5において、任意に変化
するストライドのアプリケーション・データを処理エレ
メント101から他の処理エレメント10J+1に送信する
ためのその処理エレメント101おいて動作する通常の
プロトコルの部分800の一部分を示す。
【図9】プロセッサ間データ・コミュニケーションのた
めの通常のプロトコルの高レベルの機能的ブロック図の
一部分を示し、特に、システム5において、処理エレメ
ント101からアプリケーション・データを受信して任
意に変化するストライドで記憶するための他の処理エレ
メント10J+1において動作する通常のプロトコルの部
分900の一部分を示す。
【図10】任意に変化するストライドの処理エレメント
間データ転送を処理するための本発明のプロトコルを各
処理エレメント、例えば、エレメント101において実
施するために利用されるプロセスを高レベルのブロック
図形式で示す。
【図11】本発明のメッセージ制御ブロック1100及
びその構成フィールドを示す。
【図12】プロセッサ間データ・コミュニケーションの
ための本発明のプロトコルの高レベルの機能的ブロック
図の一部分を示し、特に、システム5において、任意に
変化するストライドのアプリケーション・データを処理
エレメント101から他の処理エレメント10J+1に送信
するためのその処理エレメント101おいて動作する本
発明のプロトコルの部分1200の一部分を示す。
【図13】プロセッサ間データ・コミュニケーションの
ための本発明のプロトコルの高レベルの機能的ブロック
図の一部分を示し、特に、システム5において、処理エ
レメント101からアプリケーション・データを受信し
て任意に変化するストライドで記憶するための他の処理
エレメント10J+1において動作する通常のプロトコル
の部分1300の一部分を示す。
【図14】図19に示されたプロセッサ間データ・コミ
ュニケーションのための本発明のプロトコルの高レベル
の機能的ブロック図の他の一部分を示す。
【図15】図19に示されたプロセッサ間データ・コミ
ュニケーションのための本発明のプロトコルの高レベル
の機能的ブロック図の更に他の一部分を示す。
【図16】図19に示されたプロセッサ間データ・コミ
ュニケーションのための本発明のプロトコルの高レベル
の機能的ブロック図の更に他の一部分を示す。
【図17】発信データ1400を、その送信前に本発明
のプロトコルの使用を通してフィルタする例示的方法を
示す。
【図18】着信データ1500を、その受信時に本発明
のプロトコルの使用を通して切り捨てる例示的方法を示
す。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ディーパック・モーハン・アドバニ アメリカ合衆国ニューヨーク州、ポート・ イーウェン、レイクショア・ビラズ、ナン バー2ディー (72)発明者 オーウェン・キース・モンロー アメリカ合衆国ニューヨーク州、キングス トン、セカンド・アベニュー 59番地 ア パートメント・ナンバー2 (72)発明者 ロバート・マイケル・ストラウブ アメリカ合衆国ニューヨーク州、キングス トン、ミラーズ・レイン 21ビー番地 (72)発明者 マイナー・ホルダー・グリーソン・ザ・サ ード アメリカ合衆国ニューヨーク州、ウエス ト・ハーレイ、フランダース・レイン 325番地 (72)発明者 ユンーポン・ファン アメリカ合衆国ニューヨーク州、ハーレ イ、フェアウェイ・ドライブ 112番地

Claims (12)

    【特許請求の範囲】
  1. 【請求項1】第1メモリにおける起点ポイント及び第2
    メモリにおける宛先ポイントがコミュニケーション組織
    に接続されているものにおいて、前記起点ポイントに第
    1の任意に変化するストライドで記憶されたディジタル
    情報を前記宛先ポイントに第2の任意に変化するストラ
    イドで転送するための方法にして、(a)前記起点ポイ
    ントにおいて、 第1の所定関数に応答して、前記第1メモリに記憶され
    たディジタル情報の一部分の第1開始ロケーション及び
    第1サイズを決定するステップであって、前記ディジタ
    ル情報のすべては前記第1メモリ内に前記第1の任意に
    変化するストライドで記憶され、前記一部分はストライ
    ド1編成で記憶されることと、 前記第1開始ロケーション及び第1サイズに応答して、
    ディジタル情報部分を得るように前記第1メモリの対応
    するストライド1セクションを読み取るステップと、 前記読み取りステップに応答して、読み取られた部分を
    含むメッセージを形成し、該メッセージを前記コミュニ
    ケーション組織に送信するステップと、 ディジタル情報の連続した各部分に対して前記決定ステ
    ップ、読み取りステップ、及び形成・送信ステップを繰
    り返すステップであって、該ディジタル情報の前記一部
    分は複数のメッセージを形成するように前記第1メモリ
    の別の対応するセクションにストライド1編成で記憶さ
    れ、前記メッセージの各々は前記コミュニケーション組
    織を介して前記ディジタル情報部分のうちの対応する1
    つを転送し、前記メッセージのすべては前記ディジタル
    情報のすべてを集合的に転送することと、(b)前記宛
    先ポイントにおいて、 前記コミュニケーション組織から前記メッセージの1つ
    を受信するステップと、 第2の所定関数に応答して、前記コミュニケーション組
    織から受信した前記1つのメッセージに含まれた前記デ
    ィジタル情報部分のうちの対応する1つが記憶されるべ
    き前記第2メモリのストライド1セクションの第2開始
    ロケーション及び第2サイズを確認するステップと、 前記受信ステップと前記第2開始ロケーション及び第2
    サイズとに応答して、前記対応する1つのディジタル情
    報部分を前記1つのメッセージから前記第2のメモリの
    前記セクションに書き込むステップと、 前記ディジタル情報のすべてを前記第2の任意に変化す
    るストライドで前記第2メモリ内に集合的に編成するた
    めに、前記メッセージのうちの他の各メッセージに含ま
    れたディジタル情報の部分の各々を前記第2メモリの個
    々の対応するストライド1セクションに連続して書き込
    むよう前記他の各メッセージに対して前記受信ステッ
    プ、確認ステップ、及び書き込みステップを繰り返すス
    テップと、 より成る方法。
  2. 【請求項2】前記第1及び第2の任意に変化するストラ
    イドは等しくないことを特徴とする請求項1に記載の方
    法。
  3. 【請求項3】前記第1及び第2の任意に変化するストラ
    イドは複合変化ストライドであることを特徴とする請求
    項2に記載の方法。
  4. 【請求項4】前記第1及び第2の所定関数はそれぞれ所
    定の送信及び受信充填関数であり、前記第1の所定関数
    は前記第1メモリ内に前記第1の任意に変化するストラ
    イドで記憶されたディジタル情報の各部分の第1開始ロ
    ケーション及び第1サイズを連続的に決定し、前記第2
    の所定関数は前記部分のうち各対応する1つが記憶され
    るべき前記第2メモリにおける各ストライド1セクショ
    ンの第2開始ロケーション及び第2サイズを連続的に決
    定することを特徴とする請求項2に記載の方法。
  5. 【請求項5】前記起点ポイントは第1及び第2の所定プ
    ロセス及び所定コミュニケーション・プロセスを組み込
    むこと及び、 前記方法は、(c)前記第1所定プロセスにおいて、 前記ディジタル情報部分のうちの初期部分を前記コミュ
    ニケーション組織を介して送信するよう前記コミュニケ
    ーション・プロセスに命令するためのメッセージ制御ブ
    ロック(MCB)を発生するステップであって、該MC
    Bはプロトコル・ヘッダ・フィールド、開始ロケーショ
    ン・フィールド、長さフィールド、完了コールバック・
    フィールド、未処理サイズ・フィールド、及び未完コー
    ルバック・フィールドを含み、該長さフィールドは転送
    されるべきすべてのディジタル情報のサイズを指定し、
    該未処理サイズ・フィールドは前記各メッセージに含ま
    れたディジタル情報部分の対応する部分の長さを含むこ
    とと、 前記開始ロケーション・フィールド及び未処理サイズ・
    フィールドが前記第2所定プロセスにより確認された開
    始ロケーション及び長さの値に等しくセットされるよう
    に前記ディジタル情報部分の次に続く部分に対してMC
    Bを更新し、それに応答して更新されたMCBを前記M
    CBとして発生するステップと、(d)前記コミュニケ
    ーション・プロセスにおいて、 前記MCBに応答して、前記第1メモリの対応するスト
    ライド1セクションから前記ディジタル情報部分のうち
    の関連した1つを読み取るステップと、 前記プロトコル・ヘッダに応答して、前記関連した1つ
    のディジタル情報部分を含むように前記メッセージうち
    の対応する1つを形成し、前記コミュニケーション組織
    を介して前記宛先ポイントに前記メッセージのうちの前
    記対応する1つを送信するステップと、 前記ディジタル情報部分が前記メッセージのうちの対応
    するものを介して未だ送信されてない追加のデータ部分
    を含む場合、未完コールバック・フィールドにおいて定
    義された未完コールバックを前記第2所定プロセスに発
    生し、又は、前記ディジタル情報すべてが送信されてし
    まった場合、完了コールバック・フィールドにおいて定
    義された完了コールバックを前記第1所定プロセスに発
    生するステップと、(e)前記第2所定プロセスにおい
    て、 前記未完コールバック及び前記第1の所定関数の発生に
    応答して、ストライド1編成をを有し且つ前記第1メモ
    リ内にある前記ディジタル情報部分のうちの次に続く部
    分に対する開始ロケーション及び未処理サイズを確認す
    るステップと、 より成ることを特徴とする請求項2に記載の方法。
  6. 【請求項6】前記宛先ポイントは第1及び第2所定プロ
    セス及び所定コミュニケーションプロセスを組み込むこ
    と及び、 前記方法は、(f)前記コミュニケーション・プロセス
    において、 前記コミュニケーション組織から受信したメッセージの
    うちの初期の1つのメッセージの一部分に応答して、前
    記初期の1つのメッセージに含まれたディジタル情報の
    初期部分に対する開始アドレス及びサイズを決定するよ
    う前記第1所定プロセスに命令するためのメッセージ制
    御ブロック(MCB)スタブを発生するステップであっ
    て、該MCBスタブは前記初期の1つのメッセージの部
    分によって供給されたプロトコル・ヘッダ・フィールド
    及び長さフィールドに対して非ゼロ値を含み且つ開始ロ
    ケーション・フィールド、完了コールバック・フィール
    ド、未完コールバック・フィールド及び未処理サイズ・
    フィールドに対してゼロ値を含むことと、 完成したMCBに応答して、初期の1つのメッセージか
    ら前記ディジタル情報部分の初期の1つを取り出す第1
    取り出しステップと、 前記第1取り出しステップに応答して、前記初期の1つ
    のメッセージに含まれた前記初期の1つのディジタル情
    報部分を前記完成したMCBにおける前記開始ロケーシ
    ョン・フィールド及び未処理サイズ・フィールドにより
    定義された前記第2メモリの初期ストライド1セクショ
    ンに書き込む第1書き込みステップと、 更新されたMCBに応答して、前記ディジタル情報部分
    のうちの次に続く部分を前記メッセージのうちの対応す
    る次のものから取り出す第2取り出しステップと、 前記第2取り出しステップに応答して、前記ディジタル
    情報部分のうちの前記次に続く部分を前記更新されたM
    CBにおける前記開始ロケーション・フィールド及び未
    処理サイズ・フィールドにより定義された前記第2メモ
    リの対応する次に続くストライド1セクションに書き込
    む第2書き込みステップと、 前記ディジタル情報が前記メッセージのうちの対応する
    ものを介して未だ受信されてない追加のディジタル情報
    部分を含む場合、未完コールバック・フィールドにおい
    て定義された未完コールバックを前記第2所定プロセス
    に発生するか、又は前記ディジタル情報のすべてが受信
    され且つ前記第2メモリに書き込まれてしまった場合、
    完了コールバック・フィールドにおいて定義された完了
    コールバックを前記第1所定プロセスに発生するステッ
    プと、(g)前記第1所定プロセスにおいて、 前記ディジタル情報の初期部分が書き込まれるべき前記
    第2メモリの初期ストライド1セクションの開始ロケー
    ション及びサイズを確認するために前記第2所定プロセ
    スを呼び出すステップと、 前記第2所定プロセスによって確認された前記ディジタ
    ル情報部分の初期部分に対する開始ロケーション及びサ
    イズに応答して、ゼロ値のフィールドを非ゼロ値にセッ
    トすることによってMCBスタブを1つの完成したMC
    Bに変換するステップであって、前記開始ロケーション
    ・フィールドは前記第2所定プロセスによって確認され
    た開始ロケーションを含むようにセットされ、前記未処
    理サイズ・フィールドは前記第2所定プロセスによって
    確認されたサイズにセットされることと、 前記ディジタル情報部分の次に続く各部分に対する前記
    第2所定プロセスにより確認された前記開始ロケーショ
    ン及び未処理サイズの値でもって前記完成したMCBを
    更新して更新済みMCBを形成し、それに応答して、該
    更新済みMCBを発生するステップと、(h)前記第2
    所定プロセスにおいて、 前記第2所定関数及び前記第1所定プロセスからの呼び
    出し又は前記未完コールバックの発生に応答して次に続
    くディジタル情報部分が書き込まれるべき前記第2メモ
    リにおける対応する次に続くストライド1セクションの
    開始ロケーション及びサイズを確認するステップと、 より成ることを特徴とする請求項2に記載の方法。
  7. 【請求項7】第1メモリにおける起点ポイント及び第2
    メモリにおける宛先ポイントがコミュニケーション組織
    悦属されているものにおいて、前記起点ポイントに且つ
    第1の任意に変化するストライドで記憶されたディジタ
    ル情報を前記宛先ポイントに且つ第2の任意に変化する
    ストライドで転送するための装置にして、 前記起点ポイントにおける、(a)第1の所定関数に応
    答して、前記第1メモリに記憶されたディジタル情報の
    一部分の第1開始ロケーション及び第1サイズを決定す
    るための手段であって、前記ディジタル情報のすべては
    前記第1メモリ内に前記第1の任意に変化するストライ
    ドで記憶され、前記一部分はストライド1編成で記憶さ
    れることと、 前記第1開始ロケーション及び第1サイズに応答して、
    ディジタル情報部分を得るように前記第1メモリの対応
    するストライド1セクションを読み取るための手段と、 前記読み取りステップに応答して、読み取られた部分を
    含むメッセージを形成し、該メッセージを前記コミュニ
    ケーション組織に送信するための手段と、 ディジタル情報の連続した各部分に対して前記決定手
    段、読み取り手段、及び形成・送信手段を呼び出すため
    の手段であって、該ディジタル情報の前記一部分は複数
    のメッセージを形成するように前記第1メモリの別の対
    応するセクションにストライド1編成で記憶され、前記
    メッセージの各々は前記コミュニケーション組織を介し
    て前記ディジタル情報部分のうちの対応する1つを転送
    し、前記メッセージのすべては前記ディジタル情報のす
    べてを集合的に転送することと、(b)前記宛先ポイン
    トにおける、 前記コミュニケーション組織から前記メッセージの1つ
    を受信するための手段と、 第2の所定関数に応答して、前記コミュニケーション組
    織から受信した前記1つのメッセージに含まれた前記デ
    ィジタル情報部分のうちの対応する1つが記憶されるべ
    き前記第2メモリのストライド1セクションの第2開始
    ロケーション及び第2サイズを確認するための手段と、 前記受信ステップと前記第2開始ロケーション及び第2
    サイズとに応答して、前記対応する1つのディジタル情
    報部分を前記1つのメッセージから前記第2のメモリの
    前記セクションに書き込むための手段と、 前記ディジタル情報のすべてを前記第2の任意に変化す
    るストライドで前記第2メモリ内に集合的に編成するた
    めに、前記メッセージのうちの他の各メッセージに含ま
    れたディジタル情報の部分の各々を前記第2メモリの個
    々の対応するストライド1セクションに連続して書き込
    むよう前記他の各メッセージに対して前記受信手段、確
    認手段、及び書き込み手段を呼び出すための手段と、 より成る装置。
  8. 【請求項8】前記第1及び第2の任意に変化するストラ
    イドは等しくないことを特徴とする請求項7に記載の装
    置。
  9. 【請求項9】前記第1及び第2の任意に変化するストラ
    イドは複合変化ストライドであることを特徴とする請求
    項8に記載の装置。
  10. 【請求項10】前記第1及び第2の所定関数はそれぞれ
    所定の送信及び受信充填関数であり、前記第1の所定関
    数は前記第1メモリ内に前記第1の任意に変化するスト
    ライドで記憶されたディジタル情報の各部分の第1開始
    ロケーション及び第1サイズを連続的に決定し、前記第
    2の所定関数は前記部分のうち各対応する1つが記憶さ
    れるべき前記第2メモリにおける各ストライド1セクシ
    ョンの第2開始ロケーション及び第2サイズを連続的に
    決定することを特徴とする請求項8に記載の装置。
  11. 【請求項11】(c)前記ディジタル情報部分のうちの
    初期部分を前記コミュニケーション組織を介して送信す
    るよう前記コミュニケーション・システムに命令するた
    めのメッセージ制御ブロック(MCB)を発生するため
    の手段であって、該MCBはプロトコル・ヘッダ・フィ
    ールド、開始ロケーション・フィールド、長さフィール
    ド、完了コールバック・フィールド、未処理サイズ・フ
    ィールド、及び未完コールバック・フィールドを含み、
    該長さフィールドは転送されるべきすべてのディジタル
    情報のサイズを指定し、該未処理サイズ・フィールドは
    前記各メッセージに含まれたディジタル情報部分の対応
    する部分の長さを含むことと、 前記開始ロケーション・フィールド及び未処理サイズ・
    フィールドが第2プログラムにより確認された開始ロケ
    ーション及び長さの値に等しくセットされるように前記
    ディジタル情報部分の次に続く部分に対してMCBを更
    新し、それに応答して更新されたMCBを前記MCBと
    して発生するための手段と、 を有する第1プログラムを含み、(d)前記コミュニケ
    ーション・システムは、 前記MCBに応答して、前記第1メモリの対応するスト
    ライド1セクションから前記ディジタル情報部分のうち
    の関連した1つを読み取るための手段と、 前記プロトコル・ヘッダに応答して、前記関連した1つ
    のディジタル情報部分を含むように前記メッセージうち
    の対応する1つを形成し、前記コミュニケーション組織
    を介して前記宛先ポイントに前記メッセージのうちの前
    記対応する1つを送信するための手段と、 前記ディジタル情報部分が前記メッセージのうちの対応
    するものを介して未だ送信されてない追加のデータ部分
    を含む場合、未完コールバック・フィールドにおいて定
    義された未完コールバックを前記第2プログラムに発生
    し、又は、前記ディジタル情報すべてが送信されてしま
    った場合、完了コールバック・フィールドにおいて定義
    された完了コールバックを前記第1プログラムに発生す
    るための手段と、 を有し、(e)前記第2プログラムは、前記未完コール
    バック及び前記第1所定関数の発生に応答して、ストラ
    イド1編成をを有し且つ前記第1メモリ内にある前記デ
    ィジタル情報部分のうちの次に続く部分に対する開始ロ
    ケーション及び未処理サイズを確認するための手段より
    成ること、 を特徴とする請求項8に記載の装置。
  12. 【請求項12】前記宛先ポイントにおける、(f)前記
    コミュニケーション組織から受信したメッセージのうち
    の初期の1つのメッセージの一部分に応答して、前記初
    期の1つのメッセージに含まれたディジタル情報の初期
    部分に対する開始アドレス及びサイズを決定するよう第
    1プログラムに命令するためのメッセージ制御ブロック
    (MCB)スタブを発生するための手段であって、該M
    CBスタブは前記初期の1つのメッセージの部分によっ
    て供給されたプロトコル・ヘッダ・フィールド及び長さ
    フィールドに対して非ゼロ値を含み且つ開始ロケーショ
    ン・フィールド、完了コールバック・フィールド、未完
    コールバック・フィールド及び未処理サイズ・フィール
    ドに対してゼロ値を含むことと、 完成したMCBに応答して、初期の1つのメッセージか
    ら前記ディジタル情報部分の初期の1つを取り出すため
    の第1取り出し手段と、 前記第1取り出しステップに応答して、前記初期の1つ
    のメッセージに含まれた前記初期の1つのディジタル情
    報部分を前記完成したMCBにおける前記開始ロケーシ
    ョン・フィールド及び未処理サイズ・フィールドにより
    定義された前記第2メモリの初期ストライド1セクショ
    ンに書き込むための第1書き込み手段と、 更新されたMCBに応答して、前記ディジタル情報部分
    のうちの次に続く部分を前記メッセージのうちの対応す
    る次のものから取り出すための第2取り出し手段と、 前記第2取り出しステップに応答して、前記ディジタル
    情報部分のうちの前記次に続く部分を前記更新されたM
    CBにおける前記開始ロケーション・フィールド及び未
    処理サイズ・フィールドにより定義された前記第2メモ
    リの対応する次に続くストライド1セクションに書き込
    むための第2書き込み手段と、 前記ディジタル情報が前記メッセージのうちの対応する
    ものを介して未だ受信されてない追加のディジタル情報
    部分を含む場合、未完コールバック・フィールドにおい
    て定義された未完コールバックを第2プログラムに発生
    するか、又は前記ディジタル情報のすべてが受信され且
    つ前記第2メモリに書き込まれてしまった場合、完了コ
    ールバック・フィールドにおいて定義された完了コール
    バックを前記第1プログラムに発生するための手段と、 を有するコミュニケーション・システムより成り、
    (g)前記第1プログラムは、 前記ディジタル情報の初期部分が書き込まれるべき前記
    第2メモリの初期ストライド1セクションの開始ロケー
    ション及びサイズを確認するために前記第2プログラム
    を呼び出すための手段と、 前記第2プログラムによって確認された前記ディジタル
    情報部分の初期部分に対する開始ロケーション及びサイ
    ズに応答して、ゼロ値のフィールドを非ゼロ値にセット
    することによってMCBスタブを1つの完成したMCB
    に変換するための手段であって、前記開始ロケーション
    ・フィールドは前記第2プログラムによって確認された
    開始ロケーションを含むようにセットされ、前記未処理
    サイズ・フィールドは前記第2プログラムによって確認
    されたサイズにセットされることと、 前記ディジタル情報部分の次に続く各部分に対する前記
    第2プログラムにより確認された前記開始ロケーション
    及び未処理サイズの値でもって前記完成したMCBを更
    新して更新済みMCBを形成し、それに応答して、該更
    新済みMCBを発生するための手段と、 を有し、(h)前記第2プログラムは、前記第2所定関
    数及び前記第1プログラムからの呼び出し又は前記未完
    コールバックの発生に応答して次に続くディジタル情報
    部分が書き込まれるべき前記第2メモリにおける対応す
    る次に続くストライド1セクションの開始ロケーション
    及びサイズを確認するための手段を有する、 ことを特徴とする請求項8に記載の装置。
JP5334511A 1993-01-29 1993-12-28 任意に変化するデータ・ストライドで情報を転送する方法及び装置 Expired - Lifetime JP2642049B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10917 1993-01-29
US010917 1993-01-29
US08/010,917 US5440687A (en) 1993-01-29 1993-01-29 Communication protocol for handling arbitrarily varying data strides in a distributed processing environment

Publications (2)

Publication Number Publication Date
JPH06243105A true JPH06243105A (ja) 1994-09-02
JP2642049B2 JP2642049B2 (ja) 1997-08-20

Family

ID=21748023

Family Applications (1)

Application Number Title Priority Date Filing Date
JP5334511A Expired - Lifetime JP2642049B2 (ja) 1993-01-29 1993-12-28 任意に変化するデータ・ストライドで情報を転送する方法及び装置

Country Status (4)

Country Link
US (1) US5440687A (ja)
EP (1) EP0608541A3 (ja)
JP (1) JP2642049B2 (ja)
CA (1) CA2107303C (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006518495A (ja) * 2002-10-31 2006-08-10 ロッキード マーティン コーポレーション 改善された計算アーキテクチャを有する計算マシン、関連システム、並びに、方法

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5652885A (en) * 1993-05-25 1997-07-29 Storage Technology Corporation Interprocess communications system and method utilizing shared memory for message transfer and datagram sockets for message control
JP3487641B2 (ja) * 1993-11-10 2004-01-19 富士通株式会社 並列計算機システムにおける記憶装置アクセス方式
US5761464A (en) * 1995-05-22 1998-06-02 Emc Corporation Prefetching variable length data
US5774721A (en) * 1995-09-08 1998-06-30 Iq Systems, Inc. Method of communication between processors in a distributed processing system having a host processor and at least one object oriented processor
JP3120963B2 (ja) * 1995-12-14 2000-12-25 株式会社日立製作所 メッセージを転送する方法およびメッセージを転送するシステム
US5805823A (en) * 1996-01-30 1998-09-08 Wayfarer Communications, Inc. System and method for optimal multiplexed message aggregation between client applications in client-server networks
US6145027A (en) * 1997-07-09 2000-11-07 Texas Instruments Incorporated DMA controller with split channel transfer capability and FIFO buffering allowing transmit channel to get ahead of corresponding receive channel by preselected number of elements
JP3036489B2 (ja) * 1997-10-24 2000-04-24 日本電気株式会社 マルチプロセッサシステムにおける集団通信装置
JP3672159B2 (ja) * 1998-03-31 2005-07-13 ヤマハ株式会社 音源システム
US6219725B1 (en) * 1998-08-28 2001-04-17 Hewlett-Packard Company Method and apparatus for performing direct memory access transfers involving non-sequentially-addressable memory locations
US7061821B2 (en) * 1998-10-20 2006-06-13 International Business Machines Corporation Address wrap function for addressable memory devices
US6823523B1 (en) 1999-07-29 2004-11-23 International Business Machines Corporations Process and system for blocking unnecessary callbacks to empty paint methods of graphical user interface components
US6785743B1 (en) * 2000-03-22 2004-08-31 University Of Washington Template data transfer coprocessor
JP3578062B2 (ja) * 2000-08-09 2004-10-20 日本電気株式会社 通信ネットワーク設計回路及びその設計方法並びにその制御プログラムを記録した記録媒体及び伝送媒体
GB2372914B (en) * 2001-02-28 2003-12-24 3Com Corp Direct data placement and message reassembly
US20040006667A1 (en) * 2002-06-21 2004-01-08 Bik Aart J.C. Apparatus and method for implementing adjacent, non-unit stride memory access patterns utilizing SIMD instructions
US6963955B1 (en) * 2002-08-20 2005-11-08 Juniper Networks, Inc. Scattering and gathering data for faster processing
US20050091467A1 (en) * 2003-10-22 2005-04-28 Robotham Robert E. Method and apparatus for accessing data segments having arbitrary alignment with the memory structure in which they are stored
US7367026B2 (en) * 2004-06-07 2008-04-29 International Business Machines Corporation Framework for integrated intra- and inter-loop aggregation of contiguous memory accesses for SIMD vectorization
US7395531B2 (en) 2004-06-07 2008-07-01 International Business Machines Corporation Framework for efficient code generation using loop peeling for SIMD loop code with multiple misaligned statements
US8549501B2 (en) * 2004-06-07 2013-10-01 International Business Machines Corporation Framework for generating mixed-mode operations in loop-level simdization
US7475392B2 (en) * 2004-06-07 2009-01-06 International Business Machines Corporation SIMD code generation for loops with mixed data lengths
US7386842B2 (en) * 2004-06-07 2008-06-10 International Business Machines Corporation Efficient data reorganization to satisfy data alignment constraints
US7478377B2 (en) 2004-06-07 2009-01-13 International Business Machines Corporation SIMD code generation in the presence of optimized misaligned data reorganization
US7454491B2 (en) * 2004-10-14 2008-11-18 International Business Machines Corporation Method and system for efficiently transferring a self-defined non-contiguous message in a one-sided communication model
US7925860B1 (en) * 2006-05-11 2011-04-12 Nvidia Corporation Maximized memory throughput using cooperative thread arrays
US11488442B1 (en) * 2021-07-08 2022-11-01 Nasdaq Technology Ab Pari-mutuel pool calculation engine across multiple processors

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0342740A (ja) * 1989-07-11 1991-02-22 Hitachi Ltd ファイルの媒体割付け方法
JPH03238522A (ja) * 1990-02-15 1991-10-24 Mitsubishi Electric Corp フレキシブル・ディスクのファイル管理方式
JPH04311231A (ja) * 1991-04-10 1992-11-04 Ricoh Co Ltd ファイル転送制御方法
JPH05334207A (ja) * 1991-11-13 1993-12-17 Nec Software Ltd ファイル転送装置

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4363093A (en) * 1980-03-10 1982-12-07 International Business Machines Corporation Processor intercommunication system
US4777595A (en) * 1982-05-07 1988-10-11 Digital Equipment Corporation Apparatus for transferring blocks of information from one node to a second node in a computer network
US4494230A (en) * 1982-06-25 1985-01-15 At&T Bell Laboratories Fast packet switching system
US4555774A (en) * 1982-08-19 1985-11-26 At&T Bell Laboratories Fast response for switched data networks
JPS6057457A (ja) * 1983-09-07 1985-04-03 Ricoh Co Ltd Dma装置
US4897835A (en) * 1985-11-27 1990-01-30 At&E Corporation High capacity protocol with multistation capability
US4858112A (en) * 1985-12-17 1989-08-15 General Electric Company Interface comprising message and protocol processors for interfacing digital data with a bus network
IT1188561B (it) * 1986-03-05 1988-01-20 Italtel Spa Rete per la commutazione dei messaggi tra una pluralita' diunita' di elaborazione
ZA883232B (en) * 1987-05-06 1989-07-26 Dowd Research Pty Ltd O Packet switches,switching methods,protocols and networks
US4972367A (en) * 1987-10-23 1990-11-20 Allen-Bradley Company, Inc. System for generating unsolicited messages on high-tier communication link in response to changed states at station-level computers
US5111389A (en) * 1987-10-29 1992-05-05 International Business Machines Corporation Aperiodic mapping system using power-of-two stride access to interleaved devices
US4888679A (en) * 1988-01-11 1989-12-19 Digital Equipment Corporation Method and apparatus using a cache and main memory for both vector processing and scalar processing by prefetching cache blocks including vector data elements
DE3822263A1 (de) * 1988-07-01 1990-01-04 Philips Patentverwaltung Schaltungsanordnung zum uebertragen von informationen
EP0381645A3 (en) * 1989-01-18 1992-08-05 International Business Machines Corporation System and method for communicating between a plurality of processors
US5237670A (en) * 1989-01-30 1993-08-17 Alantec, Inc. Method and apparatus for data transfer between source and destination modules
US5051892A (en) * 1989-02-09 1991-09-24 International Business Machines Corp. Full duplex conversation between transaction programs
US5247613A (en) * 1990-05-08 1993-09-21 Thinking Machines Corporation Massively parallel processor including transpose arrangement for serially transmitting bits of data words stored in parallel
JPH0776950B2 (ja) * 1990-06-22 1995-08-16 インターナショナル・ビジネス・マシーンズ・コーポレイション データ処理方法及び装置
JP3038868B2 (ja) * 1990-10-08 2000-05-08 ソニー株式会社 画像データのブロック転送装置
GB2250615B (en) * 1990-11-21 1995-06-14 Apple Computer Apparatus for performing direct memory access with stride
US5151899A (en) * 1991-02-11 1992-09-29 Digital Equipment Corporation Tracking sequence numbers in packet data communication system
US5357618A (en) * 1991-04-15 1994-10-18 International Business Machines Corporation Cache prefetch and bypass using stride registers

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0342740A (ja) * 1989-07-11 1991-02-22 Hitachi Ltd ファイルの媒体割付け方法
JPH03238522A (ja) * 1990-02-15 1991-10-24 Mitsubishi Electric Corp フレキシブル・ディスクのファイル管理方式
JPH04311231A (ja) * 1991-04-10 1992-11-04 Ricoh Co Ltd ファイル転送制御方法
JPH05334207A (ja) * 1991-11-13 1993-12-17 Nec Software Ltd ファイル転送装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006518495A (ja) * 2002-10-31 2006-08-10 ロッキード マーティン コーポレーション 改善された計算アーキテクチャを有する計算マシン、関連システム、並びに、方法

Also Published As

Publication number Publication date
EP0608541A3 (en) 1995-11-08
EP0608541A2 (en) 1994-08-03
CA2107303C (en) 1998-09-15
CA2107303A1 (en) 1994-07-30
JP2642049B2 (ja) 1997-08-20
US5440687A (en) 1995-08-08

Similar Documents

Publication Publication Date Title
JPH06243105A (ja) 任意に変化するデータ・ストライドで情報を転送する方法及び装置
US7290096B2 (en) Full access to memory interfaces via remote request
JP4124491B2 (ja) 異なるデータ転送速度での共用メモリへのアクセスを制御するパケット・ルーティング・スイッチ
US6147996A (en) Pipelined multiple issue packet switch
JP2576846B2 (ja) クラスタ制御装置及びクラスタ接続多重多重プロセッシング・システム
JP3628706B2 (ja) メモリインタフェースユニット、共有メモリスイッチシステムおよび関連の方法
JP3241045B2 (ja) マルチポート共有メモリインタフェースおよび関連の方法
US5187780A (en) Dual-path computer interconnect system with zone manager for packet memory
US20070067545A1 (en) Data Communication Method and Apparatus Utilizing Credit-Based Data Transfer Protocol and Credit Loss Detection Mechanism
JPH0856230A (ja) スイッチングシステム
KR20030007447A (ko) 내부 프로세서 메모리 공간을 이용한 고속 데이터 처리
JP2003531435A (ja) ソフトな実時間応答性と連続利用可能性とを用意する分散形計算機処理システムクラスタ化モデル
US6715008B2 (en) Method and system for over-run protection in a message passing multi-processor computer system using a credit-based protocol
US20040153588A1 (en) Fencepost descriptor caching mechanism and method therefor
KR0155368B1 (ko) 램을 기초로 하는 이벤트 계수 장치 및 그 계수 방법
JPH02255932A (ja) マルチプロセツサ・システム
US7293158B2 (en) Systems and methods for implementing counters in a network processor with cost effective memory
CN100354853C (zh) 用于芯片处理器间的控制平面通信的系统和方法
US20040100900A1 (en) Message transfer system
US5473755A (en) System for controlling data stream by changing fall through FIFO last cell state of first component whenever data read out of second component last latch
US7272151B2 (en) Centralized switching fabric scheduler supporting simultaneous updates
US20040107308A1 (en) Memory that allows simultaneous read requests
US6654819B1 (en) External direct memory access processor interface to centralized transaction processor
JPH07281950A (ja) データ記憶装置をアクセスする方法及びメモリアクセス制御装置
Youn et al. On multistage interconnection networks with small clock cycles