JPH06110845A - プロセッサ間データ通信方法 - Google Patents
プロセッサ間データ通信方法Info
- Publication number
- JPH06110845A JPH06110845A JP4256155A JP25615592A JPH06110845A JP H06110845 A JPH06110845 A JP H06110845A JP 4256155 A JP4256155 A JP 4256155A JP 25615592 A JP25615592 A JP 25615592A JP H06110845 A JPH06110845 A JP H06110845A
- Authority
- JP
- Japan
- Prior art keywords
- data
- node
- receiving
- area
- header
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- 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/17—Interprocessor communication using an input/output type connection, e.g. channel, I/O port
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
- Computer And Data Communications (AREA)
- Communication Control (AREA)
Abstract
タ・システムにおいて、送信プロセスと受信プロセスの
送受信バッファを主記憶常駐化して高速化をはかる場合
に、送受信同期やオーバライトの問題を解消する。 【構成】 受信側のデータ受信領域の物理アドレスを通
信開始以前に送信側に通知する機能、受信側でのダブル
・バッファリングによりデータ受信領域へのオーバライ
トを抑止する機能、隣接ノードとの部分同期を連鎖的に
行なうことによって、全ノードの自動的な同期をとる機
能、データ受信領域に識別子を付与し、該識別子を通信
開始以前に送信側に通知し、該識別子を付加してデータ
を送信し、受信側で2つの識別子を比較し、不一致なら
ば受信ノードのプロセッサへ割り込みを発生させる機能
を備える。 【効果】 メモリー間コピーを無くした高速なノード間
データ通信が実現できる。
Description
たコンピュータ・システム間のデータ通信方式に関わ
る。特に並列処理等に要求される低オーバヘッドの高速
通信機能の実現に適している。
ーキテクチャの並列処理システムにおけるプロセス間通
信では、各ノードに送信プロセスや受信プロセスが同時
に複数存在し、各ノードの送信プロセスから他のノード
の受信プロセスへデータを転送する必要がある。この
際、各ノードで実行されるプロセスは、仮想メモリ空間
を使用するのが普通である。これに対し、ハードウェア
のレベルでのネットワーク通信機能は、ある送信ノード
から指定された受信ノードへデータを転送するのみであ
る。即ち、ハードウェアのレベルでは、受信ノードを指
定してパケット単位でデータ転送を行なう機能を提供し
ているのみである。
アの間のギャップを埋めるため、オペレーティング・シ
ステムは以下の様な処理を行っている。
いて、受信プロセスが走行していない場合(一般にrecie
veを発行した受信プロセスはデータが到着するまでbloc
k(休止)状態となっている)、一旦受信データをカーネル
内の受信バッファに受け取り、受信プロセスが再び実行
状態になった後、カーネル内の受信バッファから受信プ
ロセスの受信領域へコピーする処理である。
信側では、各パケット毎に送信プロセスや受信プロセス
等を識別するためのヘッダ情報を付加する。また、受信
側では、各パケットからこのヘッダ情報を削除する。
メント化は、送信しようとするデータの量が大きく、ネ
ットワーク上で1度に転送できる単位(パケットの大きさ
の上限値)を越える場合、送信データを複数のパケット
に分割する処理である。リアセンブルは、分割されて到
着したデータをもとの連続するデータに再構成する処理
である。
シング … マルチプレキシングは、送信側で複数のプロ
セスから出される送信要求を逐次化して、パケットとし
て順番にネットワークに送り出す処理である。デマルチ
プレクキシングは、ネットワークから到着したパケット
をどの受信プロセスに渡すかの分配をつかさどる処理で
ある。
Douglas E. Comer, David L. Stevens共著InternetwORk
ing With TCP/IP Volume 2(ダグラス・イー・コマー、
デビッド・エル・スティーブンス共著インターネットワ
ークキング・ウィズ・ティーシーピー/アイピー・ボリ
ューム・ツー)14頁から36頁,103頁から121頁等に解説さ
れている。
の付加と削除、マルチプレキシングとデマルチプレキシ
ング等の処理は、汎用的なノードをまたがるプロセス間
通信の機能を実現する。しかしながら、当然これらの処
理に要するソフトウェアの実行ステップ数は、通信処理
に伴うオーバヘッドに加算される。特にノード間通信の
高速性が要求される用途、例えば高速な画像転送、ある
いは並列演算処理等のアプリケーションを実現しようと
すると、この通信オーバヘッドが問題となる。
として第1の問題を解決するために、本出願人は、いく
つかの特許出願をした。
ノードにおいて、転送データを格納するデータ受信バッ
ファ領域をそのノードの物理メモリ上に常駐させる方式
を提案している。さらに、特願平3ー241094で
は、送信ノードおよび受信ノードの双方において、転送
データを格納する領域を物理的なメモリ上に常駐させる
方式(以下、これを主記憶常駐化通信方式と呼ぶ)を提
案した。
ョン空間上の主記憶常駐化された領域間で直接データ転
送を行なう機能を提供している。即ち、送信ノード及び
受信ノードの双方で、転送データ領域を物理メモリ上に
常駐させ、送信ノード側の物理メモリから、受信ノード
側の物理メモリへ直接データを転送する手法が用いられ
る。
方式では、送信側で受信側のデータ書き込みアドレスを
指定する必要がある。
ータ書き込みアドレス情報を挿入し、受信側でこのアド
レス情報に従って、受信データを主記憶上に書き込む必
要がある。
では、送信ノードがデータを転送するときに、受信側の
メモリ内の、そのデータの書き込みアドレスをそのデー
タともに転送することが記載されている。しかし、これ
らの技術は、各ノードで実行されるプログラムが仮想メ
モリ空間を使用する場合の技術は記載されていない。
単純であるが、実用上以下の様な課題を抱えている。
9、さらに、特願平3ー241094では、受信側の仮
想アドレスを指定してデータを送信し、受信側で仮想ア
ドレスから物理アドレスへ変換する方式を採用した。
う方式には欠点がある。
ノードから一つの受信ノードへのパケットの集中が発生
する。この様な状況は、プログラムや初期データのロー
ディング時に、ファイルが存在するノードへのファイル
アクセス要求が集中するといった場合に発生する。ま
た、演算の途中でもブロードキャスト(一斉放送)を行
なった場合に、それに対する応答がブロードキャスト元
に一斉に返ってくる場合にも同様な状況が発生する。
ら1台の受信ノードにパケットが集中する様な場合、単
純には受信側は送信側のおよそ63倍の性能を要求され
る。このため、受信ノードの受信処理オーバヘッドは極
力小さくする必要がある。
う方式は不利であり、本発明の送信側で受信側の物理ア
ドレスを指定する方式が、受信処理オーバヘッドを低減
できて有利である。
困難 である。
想アドレス空間にデータを直接書き込む主記憶常駐化通
信方式では、データ受信によって、受信側のプロセスが
データを破壊される可能性が出てくる。即ち、受信側の
プロセスが演算に使用しているデータの上に、受信デー
タが上書き(オーバライト)されることを抑止できない。
合う低オーバヘッドの送受信同期手段の実現が困難 で
ある。
処理(send)と受信処理(receive)の実行タイミングを同
期させる必要がある。例えば、receiveより先にsendが
発行された場合、どうやって送信側と受信側のタイミン
グを整合させるかという問題が生じる。
生するデータの誤転送を検出することが困難 である。
が行なわれず、受信データが受信側のプロセスの仮想ア
ドレス空間上に直接書き込まれるため、誤転送や不当転
送によって引き起こされる受信側のメモリ内容の破壊を
検出することが困難となる。
またがる場合の処理が複雑である。
場合、送受信側ともに転送データ領域を単に主記憶常駐
(ページ固定)にしただけでは、これらの仮想ページが物
理メモリ上で連続アドレスに割り当てられている保証は
ない。このため、送信ノードにおいて、多数のページか
ら転送すべきデータおよびそれらのデータの転送に用い
るパケットヘッダを高速に読み出すための処理が複雑に
なる。あるいは、それを高速化しようとすると、そのた
めのハードウエアが必要になる。この問題は、受信側ノ
ードでも受信した複数のページのデータおよびパケット
ヘッダを書き込むときに生じる。
信方式を採用して場合の、データ受信ノードでのデータ
受信時の処理を軽減し得るプロセッサ間データ通信方法
を提供することにある。
信方式を採用して場合の、データ受信ノードでのデータ
のオーバライトを防止し得るプロセッサ間データ通信方
法を提供することにある。
信方式を採用して場合の、複数のノードでの処理の同期
を取り得るプロセッサ間データ通信方法を提供すること
にある。
信方式を採用して場合の、アクセス権限のチェックが容
易になし得るプロセッサ間データ通信方法を提供するこ
とにある。
信方式を採用し、データ送信領域およびデータ受信領域
が複数のページにまたがる大きさを有する場合にそれら
に含まれるデータおよびそれらのデータの転送に用いる
パケットヘッダを高速に読み出しあるいは書き込みする
ことが出来るプロセッサ間データ通信方法を提供するこ
とにある。
信データ領域と受信データ領域とをそれぞれのノードの
物理メモリ上に常駐化させ、実際のデータ転送を開始す
る前に、この受信データ領域の物理アドレス空間上での
アドレスを送信ノードに記憶しておき、送信ノードから
受信ノードにデータを転送するときに、転送データにこ
のアドレスを付加して転送する。
て受信データ領域をその物理メモリに割り当てたとき、
受信ノードから送信ノードにこのアドレスを転送し、送
信ノードでそれを記憶する。
想アドレス空間上の受信データ領域に対して、2面の物
理メモリ領域(A面とB面)を割り当て、受信側において
受信処理の実行に同期して、仮想ページと物理ページの
マッピングをA面とB面交互に切り替えるページ変換切り
替え処理を実行し、かつ、送信側において送信処理の実
行に同期して、受信側のデータ書き込み物理ページをA
面とB面交互に切り替える受信ページ切り替え処理を実
行する。
スが同一のプログラムコードを実行し、対称的に他ノー
ド上のプロセスと相互にデータ交換を繰り返す並列演算
処理方式において、各プロセス間のデータ交換に上記の
通信方式を用い、各プロセスが全ての相手プロセスへの
送信を完了してから、相手プロセスからの受信を待つよ
うにする。
開始する前に、受信データ領域へのアクセス権コードを
送信側に通知して、送信側がこのアクセス権コードを付
与してデータ転送を行い、データ受信時にアクセス権コ
ードの正当性を検査する。
び受信データ領域として、それぞれ実メモリを仮想メモ
リに割り当てる単位であるページの大きさを有し、その
境界に一致する境界を有する離散的に位置した複数の部
分データ送信領域あるいは複数の部分データ受信領域を
確保するとともに、それぞれの複数の部分データ送信領
域あるいは部分データ受信領域の前方に隣接した位置
に、それぞれのデータの転送に使用するパケットヘッダ
を保持する複数の部分ヘッダ送信領域あるいはそれぞれ
のデータとともに受信したパケットヘッダを保持するた
めの複数の部分ヘッダ受信領域を確保し、一つのパケッ
トヘッダと部分データを続けて読み出し、あるいは続け
て書き込む。
領域と複数の部分データ送信領域を交互には位置し、複
数の部分パケット受信領域と複数の部分データ受信領域
を交互に配置する。
タの書き込みアドレスは、送信ノードから転送されるの
で、受信ノードは、書き込みアドレスを決定するための
処理あるいは特別な回路を要しない。
に対してそれぞれ2つの物理ページを割り当てること
で、ダブル・バッファリングが可能となる。即ち、A面
を使用して演算を行なっている場合には、B面側にデー
タを受信することができる。受信側でのA面とB面の切り
替えは、受信処理ルーチンの内部でオペレーティング・
システムが自動的に行なうことができるので、ユーザ・
プログラムが誤って受信処理ルーチンを呼び出さない限
り、受信データ領域にオーバライトすることはない。ま
た、送信側でのデータ書き込みアドレスの指定も、送信
処理ルーチンの内部でオペレーティング・システムが自
動的に行なうことができるので、ユーザ・プログラムが
誤って送信処理ルーチンを呼び出さない限り、受信デー
タ領域にオーバライトすることはない。
セス間で自動的に同期をとるデータフロー的な動作を行
なわせることができ、データ転送によって送受信同期を
図ることが出来る。
一致検査等の簡単な方法で、正当な通信相手以外からの
プログラム・バグ等による不当なデータ転送を検出する
ことができる。
がる大きさのデータとそれらに対するパケットヘッダと
を高速に読み出しあるいは書き込みすることが出来る。
説明する。
散並列処理システムのハードウェア構成および各ノード
の物理メモリ空間の構成について、§2では主記憶常駐
化通信の動作概要とプロトコルについて、§3では分散
並列処理システムのソフトウェアの構成概要について、
§4ではこの分散並列処理システム上でのアプリケーシ
ョン・プログラムの動作概要について、§5ではこのア
プリケーション・プログラムへの主記憶常駐化通信の適
用方法、およびダブル・バッファリングとデータ・フロ
ー制御を組み合わせた並列処理方式(クロス・カスケー
ド・データ・ストリーム方式)について説明する。
を示す。システム全体は、ネットワーク402で結合した
ノード401の集合体である。ここで、ネットワーク40
2は、データ転送バスでもよいが、ここではより望まし
いネットワークとして、複数のパケットを並列に転送す
ることが出来るパケット転送ネットワーク、例えばクロ
スバスイッチからなるネットワークを使用する。各ノー
ド401はネットワーク402を介して、任意のノードにデー
タを転送することができる。各ノード401は、図2に示す
ように、システム・バス406によってマイクロプロセッ
サ・ユニット(MPU)403, 主メモリ404及びネットワーク
・インタフェース・アダプタ(NIA)405とを接続して構成
する。NIA405は、図3に示すように、DMA機能を内蔵した
汎用プロセッサ(DMA内蔵プロセッサ)501, 送信バッファ
・メモリ502, 送信回路503, 受信バッファ・メモリ507,
受信回路508及び調停回路512で構成する。調停回路512
は、送信データと受信データのネットワーク上での衝突
を検出し、衝突が起きた場合にはランダム時間後に送信
データを再送する機能を提供する。システム・バス406
にはSCSIコントローラ407を経由してディスク装置408も
接続している。
する。受信回路503がネットワーク402からデータを受信
すると、一旦これを受信バッファ・メモリ507に蓄え、
受信割り込み信号線511を介して、DMA内蔵プロセッサ50
1へ割り込みを発生する。DMA内蔵プロセッサ501は、シ
ステム・バス406を介して、このデータを受信バッファ
・メモリ507から主メモリ404へDMA転送する。この転送
が完了すると、DMA内蔵プロセッサ501はリセット信号線
510を介して、受信回路508にリセット信号を送る。この
リセット信号によって、受信回路508は次のデータをネ
ットワーク402から受信可能となる。またこれと同時
に、DMA内蔵プロセッサ501はシステム・バス406を介し
てMPU403に割り込みを発生し、データ受信を通知する。
する。送信処理では、まずMPU403が主メモリ404上に送
信データを作成し、DMA内蔵プロセッサ501を起動する。
これによって、DMA内蔵プロセッサ501が送信データを主
メモリ404から送信バッファ・メモリ502にDMA転送する
(但し、送信回路503が送信バッファ・メモリ502にアク
セス中は、これが完了するまでDMA転送開始を待つ)。こ
のDMA転送が完了すると、DMA内蔵プロセッサ501は、送
信起動信号線506を介して送信回路503に起動信号を送
る。送信回路503は、送信バッファ・メモリ502上のデー
タを調停回路512を介してネットワークへ送出する。こ
の送信が完了すると、送信回路503は送信完了割り込み
信号線505を介してDMA内蔵プロセッサ501に割り込みを
発生する。この割り込みを受け付けたDMA内蔵プロセッ
サ501は、システム・バス406を介してMPU403に割り込み
を発生しデータ送信完了を通知する。
は、NIA制御レジスタ513に転送データの先頭アドレスを
設定することで行なう。また、MPU403はNIA状態レジス
タ514を読み取ることでNIAの状態をセンスすることがで
きる。
104が使用する物理アドレス空間の構成を概説する。
て使用するためのページ固定領域1308を各ノードの物理
アドレス空間1340上に確保する。物理アドレス空間の
内、ページ固定領域1308として使用する領域のサイズ
は、各ノードのオペレーティング・システムの起動(ブ
ート)時に設定する。具体的には、パラメータRAM(不揮
発性メモリ)領域1331中にページ固定領域1308の先頭を
指す境界設定ポインタ1303を記憶させておき、ブート時
にオペレーティング・システムがこれを読み込む。
域1308上にマッピングされた仮想ページ(図4の斜線部13
21)は、オペレーティング・システムの自動ページング
の対象から除外し、物理メモリ領域(図4の斜線部1322)
上に常駐させる。未使用領域ポインタ1320は、ページ固
定領域1308の空き領域先頭を指し、主記憶常駐領域の割
り当てや解放を行なうたびにオペレーティング・システ
ムが更新する。
システムを構成するカーネル・コード1310やカーネル・
データ1311を格納する。また、バッファ領域1306はディ
スク装置408等との入出力バッファ1312として使用す
る。ページング領域1307には、カーネル・スタック131
3、ユーザ・スタック1314、ユーザ・コード1315、ユー
ザ・データ1316等のプロセス毎に必要な情報を格納す
る。ブートROM1330は電源投入後、オペレーティング・
システムをディスク装置408からローディングするため
のコードを格納している。I/Oマッピング領域1309は、N
IA405やSCSIコントローラ407の制御レジスタをアドレス
空間上にマッピングするために使用する。
ル(通信手順)について説明する。
は、送信ノード120で稼働する送信プロセスの仮想アド
レス空間121上のデータ送信領域(X)101内の仮想ページ
(Xk)102の内容を、受信ノードで稼働する受信プロセス
が使用する仮想アドレス空間上の領域(Y)107内の仮想ペ
ージ(Yk)107に転送する場合を示している。図5では送信
側オペレーティング・システムによって、仮想ページ(X
k)102は物理ページ(Sk)104にマッピングされている。ま
た、受信ノード122では、受信プロセスの仮想空間123の
データ受信領域106内の仮想ページ(Yk)107は、受信側オ
ペレーティング・システムによって、物理ページ(Ak)11
0または(Bk)112に切り替えてマッピングされる。仮想ペ
ージ(Yk)107を物理ページ(Ak)110または(Bk)112のどち
ら側にマッピングするかは、ページ変換切り替え処理10
8によって制御する。送信側オペレーティング・システ
ムは、物理ページ(Sk)104の内容を物理ページ(Ak)110ま
たは(Bk9112のどちら側に転送するかを、受信ページ切
り替え処理105によって制御する。本実施例では、送信
側オペレーティング・システムがデータを送信する毎に
受信ページ切り替え処理105内部で送信側フラグを反転
し、かつ、受信側オペレーティング・システムがデータ
を受信する毎にページ変換切り替え処理108内部で受信
側フラグを反転することによって、受信プロセスが演算
に物理ページAkを使用している場合には、物理ページBk
にデータを転送する。逆に受信プロセスが演算に物理ペ
ージBkを使用している場合には、物理ページAkにデータ
を転送する。これらによって、データ転送によるオーバ
ーライトの問題を解消する。
を図6を用いて説明する。尚、文中の"combuf_xxxx"は、
主記憶常駐化通信の機能を使用するためにユーザ・プロ
グラムが呼び出すオペレーティング・システムのルーチ
ンの名称である。以下本明細書では、主記憶のページ固
定領域1308上に常駐化させた送受信データ領域をcombuf
と呼ぶ。尚、ページ固定領域1308へのcombufの割り当て
方法については§2.1および§5.2に詳説する。
発行して、ページ固定領域1308上にcombufを割り当て
る。
側combufとの間のコネクションを確立する。
信側combufへデータを送信する。
ータの到着を待つ。
信側combufとの間のコネクションを破棄する。
行して、ページ固定領域1308上のcombufを解放する。
データ転送に先立つ前処理であり、3)および4)はそれぞ
れ送信処理と受信処理であり、5)および6)はデータ転送
完了後の後処理である。主記憶常駐化通信では、前処理
を一度行った後、データの送受信処理を多数回繰り返す
使い方を前提としている。以下、各処理の詳細について
説明する。
るプロセス(以下ユーザ・プロセスと呼ぶ)の仮想アドレ
ス空間の一部を、主メモリ404上のページ固定領域1308
に割り当てる機能を提供する。ユーザ・プログラムは以
下のパラメータを指定してcombuf_allocを呼び出す。
用するデータ領域の先頭仮想アドレスを指すポインタ。
先頭仮想アドレスはページ境界に整合していなければな
らない。
データ領域のサイズ(単位はバイト)。本実施例では、
領域サイズはページサイズの整数倍に制限する。
データ領域の区別を指定する。
c処理を、図8に受信データ領域に対するcombuf_alloc処
理を示す。両者とも、パラメータで指定された領域サイ
ズから必要な物理ページ数を求め(処理1901,2001)、ペ
ージ固定領域1308上の物理ページを確保し、ページ変換
テーブル1702を書き換えるとともに、未使用領域ポイン
タ1320(図4)を更新する(処理1902,2002)。両者ともほぼ
同じ処理であるが、図9に示す例では、仮想のページ群1
701のうち、仮想の受信データ領域1701Rは、ページ0、1
からなり、仮想の送信データ領域1701Sは、仮想ページ
2、3からなると仮定している。この場合、この2ページ
の仮想受信データ領域1701Rには、合計8ページの実の
受信データ領域1705Rが割り当てられ、2ページの仮想
送信データ領域1701Sには、4ページの実の送信データ
領域1705Sが割り当てられる。このように、仮想の受信
データ領域1701Rには、ダブル・バッファリングを行う
ためにこの領域のページ数の倍の物理ページを割り当て
る。
想Page1には、物理ページ群1705のうち、A面用の物理Pa
ge5(1703)とB面用の物理Page7(1704)を割り当ててい
る。また、図9および図10に示す様に、データ転送に必
要なパケットのヘッダ部2310を格納するために、ページ
単位に余分に1ページのメモリを割り当てる。即ち、ユ
ーザ・プロセスの仮想ページには奇数番目の物理ページ
を割り当て、ヘッダ部2310を格納するために偶数番目の
物理ページを使用する。
タで指定されたデータ領域がマッピングされていた古い
物理ページの内容を、新たに割り当てた物理ページにコ
ピーし(処理1903,2003)、このデータ領域の各仮想ペー
ジが新しい物理ページにマッピングされるようにページ
変換テーブル1702(図9)を更新する(処理1904,2004)。
ufには、ノード内で一意なcombuf番号をオペレーティン
グ・システムが付与する。ここでは、簡単化のために、
各combufには、あらかじめその番号が定められているも
のとする。combuf_allocルーチンはリターン値としてこ
のcombuf番号を返す。ユーザ・プログラムは、combuf番
号とノード番号の対によって、システム全体に渡って一
意に各combufを識別することができる。
新たに割り当てたcombufを図24に示すローカルcombuf管
理テーブル(LCT)2100に登録する(処理1905,2005)。LCT2
100は、combuf番号によってインデクス付けされ、アク
セス権コード、ダブルバッファの有無、先頭物理アドレ
ス, combufのサイズ等を各combuf毎に記憶する。LCT210
0にはノード内のcombufのみを登録する。アクセス権コ
ードは、ノード番号とクロック値(combuf_alloc処理を
実行した時刻)の対で、combuf_alloc発行毎に各combuf
に割り当てる。
ションを確立する。送信側はcombuf_open処理によっ
て、受信側のcombufの先頭物理アドレスやサイズ,アク
セス権コード等の情報を獲得する。ユーザ・プログラム
は以下のパラメータを指定してcombuf_openを呼び出
す。
号。
号。
示す送信側のリモートcombuf管理テーブル(RCT)2200に
受信側のローカルcombuf管理テーブル(LCT)2100の内容
の一部をコピーする処理を行なう。このため以下に述べ
る様に、combuf_open処理には送信側OSで処理する部分
と受信側OSで処理する部分とがある。
指定して、受信combufに対応する受信側LCT2100検索要
求メッセージを送信する(処理2701)。この通信にはバッ
ファリングを行う通常のメッセージ通信を用いる。受信
側OSは指定された受信combufに対応するLCT2100のエン
トリを検索(処理2702)し、その検索結果として、上述し
たようなこのテーブルの内容を送信側OSへ返送する(処
理2703)。送信側OSが検索結果を受信し(処理2704)、受
信combufに関する情報を自ノードのRCT2200に登録する
(処理2705)。
信combufの面を一致させるため、最初に使用する受信バ
ッファ面をB面側の物理ページに初期設定する(処理270
6)。この処理は具体的にはRCT2200のバッファ面欄2205
に1を設定する。
モートcombuf管理テーブル 図24のローカルcombuf管理テーブル(LCT)2100には自ノ
ード内のcombufのみを登録する。他ノードとの通信を行
なうには、他ノードのcombufの物理アドレスやサイズ、
あるいはアクセス権コードを知る必要がある。この目的
で使用するのが図25に示すリモートcombuf管理テーブル
(RCT)2200である。
述べた様にノード間を渡る通信が必要となる。このた
め、相手側のLCT2100へのアクセスは、自ノード内のLCT
2100へのアクセスに比べオーバヘッドが大きい。combuf
_open処理においてRCT2200に受信combufの先頭物理アド
レス等の情報をキャッシングすることにより、データ送
信(combuf_write)ルーチンの中で、相手側のLCT2100に
アクセスする必要がなくなり、前述のオーバヘッドを解
消することができる。
の意味を持つ。
fを識別するための番号。
bufへ受信データを書き込むために必要なアクセス権を
示すコード。
リングの有無を示す。送信combufはダブル・バッファリ
ング無し、受信combufはダブル・バッファリング有り。
グ有りの受信combufの場合に、LCT2100では演算に使用
している面を示す。RCT2200ではデータを書き込む面を
示す。 5) 先頭物理アドレス … combuf番号のcombufの先頭デ
ータの物理アドレスを示す。
ズを示す。
するノードの番号を示す。
ース・アダプタ(NIA)405とオペレーティング・システム
によって共有する。オペレーティング・システムはLCT2
100の全てのフィールドを読み書きする。NIA405はcombu
f番号をインデクスとして、アクセス権コード・フィー
ルドに読み出しアクセスを行なう。
プログラムからcombuf_alloc及びcombuf_freeが発行さ
れた場合、LCT2100を更新する。プログラム・バグ等に
よってこの更新処理中にパケットが到着しても誤動作が
発生しない様に、LCT2100のアクセス権コード・フィー
ルドが0の状態でパケットが到着したら、NIA405が主メ
モリ404へデータを書き込まず、MPU403へ割り込みを発
生する。オペレーティング・システムは更新処理を行う
場合、まずアクセス権コード・フィールドに0を書き込
んでから、他のフィールドを更新する。
combufへ転送する。ユーザ・プログラムは以下のパラメ
ータを指定してcombuf_writeを呼び出す。
号。
号。
号。
信combufのA面側とB面側のどちらへ送信するかを決定す
る。また、combufが複数ページにまたがる大きさの場
合、各ページ毎にcombuf先頭アドレスから受信領域の物
理アドレスを計算する処理も行なう。
CT)2200のバッファ面欄2205を参照し、受信バッファ面
を決定する。次に、PageSize, HeaderSize, NPage, Rec
vOrg等の変数の初期設定を行なう(処理2802)。変数Npag
eは受信combufのページ数を格納する。変数RecvOrgは受
信combufの先頭物理アドレスを格納する。これは、図20
や図9に示す様に、受信combufのA面側の先頭の奇数物理
ページの先頭アドレスを指す。
ページ毎に送信処理を行なう。各ページ毎に受信側の物
理アドレスを計算する(処理2804)。この際、HeaderSize
を差し引いて、ヘッダのサイズ分だけ物理アドレスを前
方へずらす。これは、送受信側ともに、偶数ページをヘ
ッダ書き込み用にcombuf_alloc処理時に確保している為
である。つまり、本実施例で送信ノードから転送される
メモリアドレスは、転送されるデータの書き込みアドレ
スではなく、それに先行するヘッダの書き込みアドレス
である。
ダ2310の受信先物理アドレス欄2305に格納し、その他の
各フィールド2301〜2306を設定し、NIA405に起動をかけ
る。NIA405の起動は、NIA制御レジスタ513にOSが送信パ
ケット2300の先頭物理アドレスを設定することで行な
う。こうしてNIA405は、このパケットを送信先ノードに
ネットワークを介して転送する。以下この動作を送信デ
ータ領域内の複数のページに対して行なう。
bufの全ページを送信し終えると、次回の送信時に使用
する受信バッファの面を反対側の面に切り替える処理を
行なう。具体的には、if文2808によって変数Sideの値を
反転させ、RCT2200のバッファ面欄2205に反転した変数S
ideの値を格納する。
図5に示す受信ページ切り替え処理105に相当する。
示す。各フィールドの意味は以下の通り。
号。
バイト数。当該パケットに含まれるヘッダ部分及びデー
タ部分のバイト数の合計。
側のcombuf番号。受信側NIA405は、このcombuf番号を用
いて受信側ローカルcombuf管理テーブル(LCT)2100上の
該当エントリを読み出す。
fへのアクセス権限を示すアクセス権コード。受信側NIA
405は、受信データの書き込み開始前に、このアクセス
権コードがLCT2100上のアクセス権コードと一致するこ
とをチェックし、もし2つのアクセス権コードが一致し
ない場合には、不当アクセス権コード割り込みを受信側
MPU403に通知する。
タを書き込む物理アドレスを示す。 6) 送信ノード番号2306 … 送信ノード番号。
側combufへ実際に転送されるデータ。
のデータの到着を待つ受信同期機能を提供する。ユーザ
・プログラムは受信combuf番号をパラメータとしてcomb
uf_watchを呼び出す。
A内蔵プロセッサ501も関与する。図13の処理2906〜2909
は、DMA内蔵プロセッサ501が実行する。ネットワーク40
2からデータが到着すると、DMA内蔵プロセッサ501がア
クセス権コードの検査を行なう(処理2906)。これは、パ
ケット・ヘッダ2310中のアクセス権コード欄2304の値
と、ローカルcombuf管理テーブル(LCT)2100のアクセス
権コード欄2103の値との一致を検査する。LCT2100の検
索は、パケット・ヘッダ2310中の受信combuf番号欄2303
の値を用いて、DMA内蔵プロセッサ501が行なう。もし、
この検査でアクセス権コードが不一致な場合は、プログ
ラム・バグ等によるエラーが発生したのであるから、MP
Uに割り込みを発生して異常を通知する。
は、DMA内蔵プロセッサ501はパケット・ヘッダ2310中の
受信先物理アドレスを読み出し、パケット・ヘッダを含
む受信データ全体を、NIA上の受信バッファ・メモリ502
から主メモリ404の指定されたアドレスへDMA転送する
(処理2907)。
に付されるアドレスは、そのデータの書き込みアドレス
ではなく、そのデータに先行するヘッダのアドレスであ
る。しかし、本実施例では、このヘッダの書き込み位置
に続く位置に受信データをNIA405によりDMA転送でも
って書き込むので、受信ノードでは、データの書き込み
のためのアドレスを決めるための処理あるいはそのため
の特別のハードを要しない。従って、受信ノードに多く
の送信ノードからデータが転送された場合でも、それら
のデータを高速にメモリに書き込むことが出来る。
セッサ501はデータ到着を受信プロセスに通知するため
に到着フラグ2308をセットし(処理2908)、MPU403へ割り
込みを発生する(処理2909)。MPU403側の割り込み処理ル
ーチン2905はNIA405へリセット信号を送り、NIA405が次
のパケットの受信が行なえる様にする。尚、図10に示す
様に、到着フラグ2308(図10)は、A面用とB面用とがそれ
ぞれ独立である。それぞれ、各ヘッダ領域の前に1ワー
ド確保する。
501の処理と並行してcombuf_watch処理2
900が実行される。この処理では、まず受信バッファ
面の切り替えを行なう。具体的には、LCT2100のバッフ
ァ面欄2105を更新し(処理2901)、ページ管理テーブル17
02(図9)の物理ページ欄を反対側の面に対応する物理ペ
ージを指すように更新する(処理2902)。
データが到着し、到着フラグ2308(図10)がセットされる
のをループして待つ(処理2903)。もし、先にデータが到
着して到着フラグ2308がセットされていれば、直ちにル
ープを抜ける。また、データが未到着の場合、DMA内蔵
プロセッサが処理2908で到着フラグ2308をセットするま
で待ち続ける。但し実際にはプログラム・バグ等により
無限ループしない様にループ回数の上限を設ける。デー
タが到着すると到着フラグ2308をクリアして、受信処理
を完了する。
ージ変換切り替え処理108に相当する。
f管理テーブル2200のエントリを消去する。ユーザ・プ
ログラムは通信相手のノード番号とcombuf番号をパラメ
ータとしてcombuf_closeを呼び出す。また、combuf_fre
eは、ローカルcombuf管理テーブル2100から該当エント
リを消去し、combufを解放する。ユーザ・プログラムは
解放するcombuf番号をパラメータとしてcombuf_freeを
呼び出す。
14を用いて説明する。本システムでは、各ノード401の
ハードウエア806上に図14に示すオペレーティング・シ
ステムを搭載する。図14に示すようにこのオペレーティ
ング・システムは、ローカル・オペレーティング・シス
テム804, メッセージ通信サーバ801, ネームサーバ802
及びプロセス制御サーバ803から構成する。本システム
は、全ノードが同一のオペレーティング・システムを搭
載した均質で対称な分散構成であり、ノード間に主従関
係はなく、全体を集中的に管理するノードも存在しな
い。尚、図14に示すユーザ・プロセス805は、ユーザの
アプリケーション・プログラムを実行するプロセスであ
り、オペレーティング・システムの一部ではない。
4は、ノード内でのプロセス生成やスケジューリング,
仮想メモリ管理, ハードウェア資源管理等の機能を実現
する。プロセス制御サーバ803は、任意のノード上に新
たに子プロセスを生成させ、この子プロセス上でユーザ
・プログラムの実行を開始させる機能などのノード間を
渡るプロセス制御機能を提供する。メッセージ通信サー
バ801は、ノード内でのプロセス間通信機能、及びノー
ド間を渡るプロセス間通信機能を提供する。メッセージ
通信サーバ801は通信相手の存在位置をネームサーバ802
に問い合わせ、メッセージの送信先ノードを決定する。
即ち、ネームサーバ802は位置透過なメッセージ通信(デ
ータ転送)が行なえるように、通信相手の名前とその存
在位置との対応関係を管理する機能を提供する。
機能や位置透過なプロセス間通信機能は、その実現方式
や機能仕様の詳細に違いはあるが、多くの分散オペレー
ティング・システムが備える機能である。これらの機能
に関しては、例えば前川守,所真理雄, 清水謙多郎共著
「分散オペレーティング・システム:Unixの次にくるも
の」52頁〜105頁等に解説されている。
メッセージ通信は、通常のカーネル内のバッファリング
を伴う通信方式であり、主記憶常駐化通信方式ではな
い。主記憶常駐化通信方式はユーザ・プロセスどうしの
演算データの交換に用いる。
作概要 ここでは、分散並列処理システム上でのアプリケーショ
ン・プログラムの動作概要について、全ノードで同一の
プログラム・コードを動作させる場合を例に説明する。
この例の様に、全ノードで同一のプログラム・コードを
実行する並列処理方式は、一般にSPMD(Single Program
Multiple Data)と呼ばれる。図15にこのプログラム・コ
ードの処理の流れの概略を示す。このプログラムは、全
ノードに同一のプログラムを起動する初期化処理901を
実行し、ノード内での演算処理902とデータ転送処理903
を繰り返し、所定回数の繰り返しが終了(判定処理904に
て判断)したら、終了処理905を行なう。尚、本実施例で
は、データ転送処理903の部分に主記憶常駐化通信方式
を適用する。
402上のいづれかのノード401でプログラムを起動するコ
マンドを投入する。このコマンドを投入した直後の時点
では、そのノード上だけでプログラムが走り始め、まず
初期化処理901の実行を開始する。尚、以下の説明で
は、プログラムの実行に対応してプロセスが生成され、
プログラムの終了とともにプロセスは消滅することを前
提とする。また、プロセスはそれが生成されたノード上
でのみ実行され、それが他のノードへ移動することはな
いことを前提とする。
す。代入文1001は関数who_am_iで自プロセスの名前を読
み出している。以下ではプロセスの名前には0から始ま
る整数を用いることとし、「5番プロセス」といった呼
び方をする。最初に起動されたプロセスは0番プロセス
となる。ifブロック1002の判定文によって、もし自分が
0番プロセスである場合には、forブロック1005を実行す
る。このforブロック1005の実行によって、ネットワー
ク402上の他の7個のノードにそれぞれプロセスが生成さ
れ、0番プロセスと同じプログラム・コードの実行が開
始される。即ち、図17に示す様に0番プロセス1101の子
プロセスとして、8番, 16番, 24番, 32番, 40番, 48番,
56番の一連のプロセス1102が生成される。
ロセスを生成し、自プロセスと同じプログラム・コード
をロードして起動する機能を提供する。引き数のchild_
idは、新たに生成する子プロセスの名前(即ち番号)を指
定する。
スと同様に代入文1001とifブロック1002の判定文を実行
する。これらのプロセスではこの判定が偽となるのでfo
rブロック1005は実行されない。0番プロセスと上記の一
連のプロセス1102は、それぞれ引き続くifブロック1003
の判定によって、forブロック1008の実行を開始する。
このforブロック1008の実行によって、それぞれのプロ
セスがネットワーク402上の他の7個のノードに子プロセ
スを生成する。即ち、図17に示す様に0番プロセス1101
の子プロセスとして、1番〜7番の一連のプロセス1103が
生成され、8番プロセスの子プロセスとして、9番〜15番
の一連のプロセス1104が生成される。16番, 24番, 32
番, 40番, 48番, 56番の各プロセスについてもそれぞれ
7個の子プロセスが生成される。これらの子プロセスはi
fブロック1002及びifブロック1003の判定文がいずれも
偽となるので、これ以上の子プロセスの生成は行なわな
い。
スが生成され、並列に動作し始める。これら64個のプロ
セスは、主記憶常駐化通信の前処理1012を実行後、関数
get_my_dataのコール1011によって、それぞれのプロセ
スが処理すべき初期データをロードする。このローディ
ングが完了すると、他のプロセスのデータ・ローディン
グの完了を待つために関数barrierをコール1004し、全
プロセスで同期をとる。最後のプロセスが関数barrier
をコールすると、待ち状態となっていた全プロセスが一
斉に実行を再開する。尚、子プロセスを生成するノード
の決定は、各ノードのプロセス制御サーバ803どうしが
通信し、複数のプロセスをひとつのノードに重複して割
り当てない様に制御する。
ードのプロセスは演算処理902を開始する。演算処理902
が完了すると、他プロセスへのデータ送信と他プロセス
からのデータ受信を行なうデータ転送処理903を行な
う。このデータ転送処理903によって演算処理902の結果
をプロセス間で交換する。判定処理904によって演算の
終了まで、これらの演算処理902とデータ転送処理903を
繰り返す。終了条件が満たされたら各プロセスは終了処
理905を実行し、全ノードでのユーザ・プログラムの実
行が完了する。
ン・プログラムへの主記憶常駐化通信の適用方法、およ
び主記憶常駐化通信とデータ・フロー制御を組み合わせ
た並列処理方式(クロス・カスケード・データ・ストリ
ーム方式, 以下CCDSと記す)について説明する。
図18に示す様に配列データを複数の部分配列に分割し、
各ノードがひとつの部分配列を分担して計算する領域分
割型並列処理の手法がよく用いられる。この種の手法で
は部分配列間の境界部分(図18の斜線部分1403)の計算に
際して、隣接するノードとのデータ交換が必要となる。
列の配列データに対して並列処理を施す場合を考える。
8176行×8176列の配列を行方向,列方向それぞれ8等分
して、1022行×1022列の部分配列64個に分割する。各ノ
ードのプロセスは、1022行×1022列の部分配列に対して
演算を行ない、上下左右の隣接する4ノードのプロセス
とは、内部処理データ1404以外の境界データ1403を交換
する処理を繰り返す。尚、各要素は8バイト長の倍精度
実数とする。また、図18に示す右端の部分配列8個の右
端1列は、左端の部分配列の左端1列に隣接していると考
える。同様に上端の部分配列8個の上端1行は、下端の部
分配列の下端1行に隣接していると考える。
上下左右4個の隣接要素と自要素の値の平均を算出する
処理(平滑化処理)を考える。各ノードのプログラムは10
22行×1022列の全要素に平滑化処理を施す。このため、
1022行×1022列の配列の上端1行,下端1行,左端1列,
右端1列からなる境界データ1403を処理する場合には、
隣接するノードの境界データが必要となる。この隣接ノ
ードの境界データが格納できる様に、各ノード内に図19
に示す1024行×1024列の大きさの配列Array1405を用意
する。即ち、Top(receive), Bottom(receive)各1行の追
加により、1022行に2行を加えて1024行とする。同様にL
eft(receive), Right(receive)各1列の追加により、102
2列に2列を加えて1024列とする。
op)に隣接するノードからの境界データを受信(receive)
する領域を意味する。また、「隣接ノード」という言葉
は、「物理的に隣接しているノード」という意味ではな
く、「隣接する部分配列を処理するプロセスが存在する
ノード」という意味で用いる。図18に示す様にX軸方
向、Y軸方向に番号を振ると、同図の斜線のノードはX-Y
座標が6-6で、隣接ノードは6-5, 5-6, 7-6, 6-7となる
(以下、本明細書中ではノード番号はこのX-Y座標で表わ
す)。
ight(send)部分のデータは、ノード内での全要素の演算
が完了した後、隣接ノードへ送出する。平滑化処理の対
象となるのはTop(send), Bottom(send), Left(send), R
ight(send)の部分を含めた内側の領域であるから、図19
の斜線で示すArray〔0〕〔0〕, Array〔0,1023〕, Arra
y〔1023〕〔0〕, Array〔1023〕〔1023〕の4要素が演算
で用いられることはない。尚、配列の添え字はC言語流
に0から始める。最初の添え字が列方向(図19の縦方向)
の位置を表わし、2番目の添え字が行方向(図19の横方
向)の位置を表わす。
に割り当てる。即ち、Top行やBottom行の行方向の隣接
要素は(仮想)アドレスが連続する。Left列やRight列の
列方向の隣接要素は(仮想)アドレスが不連続になる。こ
のため、列方向の境界データの送信に際しては、データ
を連続アドレスに詰め込むため、配列Arrayから配列Lef
tBuf(send)および配列RightBuf(send)へコピーする。ま
た、列方向の境界データの受信に際しては、配列LeftBu
f(receive)および配列RightBuf(receive)から配列Array
へコピーする。
る。尚、以下の説明では、本実施例のシステムのページ
・サイズが4096バイトであることを前提とする。また、
ネットワークを介して転送できるパケットの最大サイズ
は4608バイトで、1ページ分のデータを1パケットで転送
できることを前提とする。
〔0〕がページ境界に整合する様にプログラミングされ
ていると仮定する。また、列方向の境界データをバッフ
ァリングする配列LeftBuf(send), RightBuf(send), Lef
tBuf(receive)およびRightBuf(receive)についても、そ
の先頭がページ境界に整合する様にプログラミングされ
ていると仮定する。配列Arrayの各要素は8バイト長の倍
精度実数で、行方向の要素数が1024個であるから、配列
Array1行のデータは8192バイトで、ちょうど主記憶の2
ページに収まる。よって、配列Arrayの各行の先頭はペ
ージ境界に整合する。図26に本例題における主記憶常駐
化通信の前処理の詳細なフローを示す。このフローの実
行によって実現されるデータ送受信領域(即ちTop, Bott
om, LeftBuf,RightBuf部分)の物理ページへのマッピン
グを図20の表に示す。1行分のデータが8192バイトなの
で、これを前半4096バイトと後半4096バイトに分けて各
1ページに格納する。Top, Bottom, LeftBuf, RightBuf
部分に対応する物理ページは、図4のページ固定領域上1
308に割り当てる。尚、図20の表に明示していない配列A
rrayのページはページング領域上1307に割り当てる。
を、図9に図示する。隣接ノードからの境界データを受
信するTop(receive), Bottom(receive), LeftBuf(recei
ve),RightBuf(receive)の部分は、A面とB面の2面を用い
たダブル・バッファリングが行なえる様に、物理ページ
を2面割り当てる。この工夫によって、一方の面で演算
を行なっている間に、他方の面に隣接ノードからのデー
タを受信することが可能となる。
8上にページを割り当てる際、偶数番号の物理ページを
使用せず、奇数番号の物理ページのみをユーザ空間(即
ち配列Array等)に割り当てる。この様に一つ置きの物理
ページ、本実施例では奇数物理ページ、のみを配列に割
り当てることで、それらの間に位置する物理ページ、本
実施例では偶数物理ページ、にパケット・ヘッダを挿入
できる。この工夫によって、データのコピー処理を施す
ことなく、あるいは特別のハードを使用することなし
に、送信ノードでの、送信データへのパケット・ヘッダ
の付加や受信ノードでの受信パケットからのパケットヘ
ッダの削除を行なえる。
トリーミング 主記憶常駐化通信方式では、受信側が演算に使用してい
る最中のデータを、送信側からのデータ転送によって破
壊してしまうオーバライトが発生する。§2に述べた様
に、A面, B面を用いたダブル・バッファリング機能をco
mbuf_writeルーチン及びcombuf_watchルーチン内に組み
込むことで、ある程度このオーバライトを低減できる。
しかし、§2に述べた方式でも、受信側がcombuf_watch
を発行する前に、連続してcombuf_writeが2回以上発行
されるとオーバライトが発生する。
のダブル・バッファリングの組み合わせにより、上記の
combufへのオーバライトを完全に抑止する並列演算方式
(クロス・カスケード・データ・ストリーミング方式:以
下CCDSと記す)について説明する。この並列演算方式で
は、図15のアルゴリズムを拡張した図21に示すアルゴリ
ズムに従って、各ノードの演算処理を行なう。図21の中
央部分がひとつのノードの処理フローを示す。この図に
は隣接ノードの処理フローも部分的に描いている。ま
た、太い斜めの矢印は隣接ノードとの通信を表している
(作図上4方向の隣接ノードとの通信の内、2方向しか表
示していない)。
ェーズに分け、隣接ノードからのデータが全て揃うま
で、次の演算フェーズを開始しないデータ・フロー的な
制御を行なう。また、受信combufに割り当てられた2面
の物理ページ(A面側とB面側)をフェーズ毎に交互に用い
て演算を行なう。即ち、A面側物理ページを用いて演算
を行なっているフェーズでは、隣接ノードからのデータ
をB面側物理ページに受信する。
の手順の詳細を示す。ノード内演算処理が完了した後、
図27のフローに従い、Top, Bottom, Left, Rightの4方
向の隣接ノードに自ノードのデータをcombuf_writeで送
信する。この送信が完了すると、4方向の隣接ノードか
らのデータ受信をcombuf_watchで待つ。
面の切り替え処理は、combuf_writeルーチン及びcombuf
_watchルーチンの内部で行なっている。このため、ユー
ザ・プログラム上は、ノード内演算処理902及びデータ
転送処理903のいずれも2つのフェーズを意識する必要は
ない。
タが到着するまでは、反対側の面の演算に移行しないの
で受信データによるオーバライトの問題を完全に回避で
きる。即ち、図21の制御に従えば、あるノードの演算処
理時間が伸びる等の原因により、ノード間の処理の進捗
に不均衡が生じても、自動的に隣接ノードとの同期が取
れる。隣接ノードは処理が遅れたノードからのデータが
到着しない限り、反対側の面の演算を開始しない。この
様子を図22及び図23に示す。これらの図の斜線部分はA
面を用いた演算フェーズを、白色部分はB面を用いた演
算フェーズを、矢印はB面からA面へのデータ転送、また
はA面からB面へのデータ転送を示す。
いる場合を示す。図23はプロセス2のA面側の演算時間が
伸びた場合を示す。プロセス2のA面側の演算時間が伸び
ても、隣接するプロセス1やプロセス3から送られてくる
データはB面側に書き込まれるため、演算途中のデータ
を破壊することはない。また、プロセス1やプロセス3
は、プロセス2からのデータが到着するまで、B面側の演
算を開始しない。
用が働くため、あるノードだけが他のノードを追い越し
て、次の演算フェーズに進むことがない。CCDSでは、こ
のフィードバック作用により、全ノードに渡る一斉同期
のハードウェア機構を持たなくても、隣接ノード間の同
期の連鎖作用によってシステム全体に渡る同期を実現す
ることができる。
して転送されるデータが、パケットヘッダの書き込みア
ドレスであったが、パケットヘッダを、転送データを書
き込むページのの前のページにしないときには、データ
と転送するアドレスをそのデータの書き込みアドレスと
すればよい。結局、本発明では、受信側が特別の処理を
することなく、受信データを書き込むことが出来るアド
レスを転送すればよい。
受信領域をメモリに常駐した後、その領域のアドレスを
送信ノードに転送しているが、本実施例では、このアド
レスに変えて、その領域に先行して位置に確保したヘッ
ダ領域のアドレスを転送してもよい。
かじめ決めたアドレスの位置に受信データ領域を確保す
るようにすれば、そのアドレスを予め送信ノード側に記
憶しておく方法でもよい。もちろん、本実施例のごと
く、受信バッファ領域を確保する毎に、送信ノードにそ
のアドレスに関連する情報を転送する方法は、受信デー
タ領域を確保する位置の制限が緩和されるのでより望ま
しい。
抱える諸問題を解消し、きわめて高速なノード間通信を
実現することができる。具体的には、本発明により以下
の効果が得られる。
アドレスを決める処理を減少させられる。
期の実現 ダブル・バッファリング機能を備えた主記憶常駐化通信
方式、およびクロス・カスケード・データ・ストリーム
方式によって、受信データ領域へのオーバライトの問題
を解消できる。また同時に、各ノードのプロセスが相互
にデータを転送しあうことで低オーバヘッドの送受信プ
ロセス間同期機能を実現できる。
の転送のためのヘッダとを簡単な処理により高速に転送
できる。
ードを送信側のオペレーティング・システムに伝えるこ
と、及び、転送データと共に返送されてきたアクセス権
コードの正当性を受信側でチェックすることで、プログ
ラム・バグ等による不当データ転送を検出でき、システ
ムの信頼性を高めることができる。
ステム内部で受信バッファ面を切り替えることで、ユー
ザ・プログラムのレベルではダブル・バッファリングを
明示的に記述する必要がなくなり、プログラミング作業
が容易になる。
て、全ノードでの一斉同期をとらなくても、データを交
換する隣接ノードとの部分同期のみで全体の同期を実現
することができる。部分同期の連鎖作用による全体同期
の実現は、高性能な一斉同期が困難な分散システムや大
規模な並列処理システムにおいて極めて有用である。
図。
ードウェア構成を示す図。
のマッピング例を示す図。
成を示す図。
を示す図。
を示す図。
のマッピング表。
グ(CCDS)の処理フローを示す図。
す図。
Claims (30)
- 【請求項1】それぞれ、プロセッサと、そのプロセッサ
で実行される、それぞれ仮想メモリ空間を使用するプロ
グラムおよびそのプログラムで使用されるデータを保持
する実メモリとを有する複数のノードと、それらを相互
に接続するデータ転送ネットワークとを有する分散メモ
リ型計算機システムにおいて、 該複数のノードの内の、データを受信するプロセス(デ
ータ受信プロセス)が使用する仮想メモリ空間内の仮想
のデータ受信領域に対して、そのデータ受信プロセスを
実行するノード(データ受信ノード)内の該実メモリ
(データ受信側実メモリ)に常駐した実のデータ受信領
域を割り当て、 該複数のノードの内の、該データ受信プロセスにデータ
を送信するプロセス(データ送信プロセス)が使用する
仮想メモリ空間内の仮想のデータ送信領域に対して、そ
のデータ送信プロセスを実行するノード(データ送信ノ
ード)内の該実メモリ(データ送信側実メモリ)に常駐
した実のデータ送信領域を割り当て、 該送信ノード内に、その実のデータ受信領域のアドレス
に関連する情報を記憶し、 該データ送信プロセスにより、該仮想のデータ送信領域
をアクセスし、もって、該データ受信プロセスに転送す
べきデータを該実のデータ送信領域に書き込み、 該記憶されたアドレスに関連する情報から定まる、該デ
ータ受信ノード内メモリの、そのデータの書き込みアド
レスを指定するアドレス情報を、その書き込まれたデー
タとともに、該データ送信ノードから該データ受信ノー
ドへ転送し、 該データ受信ノードにより、該転送されたデータを、該
データ受信側実メモリ内の、その転送されたアドレス情
報が指定する位置に書き込み、 該データ受信プロセスにより該仮想のデータ受信領域を
アクセスし、もってその書き込まれたデータを読み出す
プロセッサ間データ通信方法。 - 【請求項2】該データ受信ノードから該データ送信ノー
ドに、該データ受信領域の該アドレスに関連する情報を
転送するステップをさらに有する請求項1記載プロセッ
サ間データ転送方法。 - 【請求項3】該データ受信領域の割り当ては、該データ
受信ノードを制御するOS(受信側OS)により行なわ
れ、 該データ送信領域の割り当ては、該データ送信ノードを
制御するOS(送信側OS)により行なわれ、 該アドレス情報の転送は、その受信側OSから該送信側
OSに対して行なわれ該データと該アドレスに関連する
情報の転送は、 該データ送信プロセスから該送信側OSにデータ送信を
要求し、 該送信側OSにより、その書き込まれたデータに付すべ
きアドレス情報を決定するステップを有する請求項2記
載のプロセッサ間データ転送方法。 - 【請求項4】該転送されたデータの書き込みは、該受信
側OSの介入なしに行なう請求項2記載のプロセッサ間
データ転送方法。 - 【請求項5】該受信側OSにより、該アドレスに関連す
る情報とともに、該データ受信領域の識別子を該送信側
OSに送信し、 データ送信プロセスにより、データを転送すべき受信デ
ータ領域の識別子と送信先ノードを該送信側OSに通知
し、 該送信側OSにより、その通知された送信先ノードと該
識別子とに基づいて該転送すべきデータに付すべきアド
レス情報を決定するステップを更に有する請求項3記載
のプロセッサ間データ転送方法。 - 【請求項6】該データ受信側ノードにより、該データ受
信プロセスが使用する複数の仮想のデータ受信領域に対
して、該受信側メモリに常駐した複数の実のデータ受信
領域を割り当て、 それぞれの仮想のデータ受信領域にデータを送信するデ
ータ送信ノードに、該該データ受信ノードからそれぞれ
の実のデータ受信領域のアドレスに関連する情報を転送
するステップをさらに有する請求項1記載のプロセッサ
間データ転送方法。 - 【請求項7】該複数の仮想のデータ受信領域は、それぞ
れ異なるノードで実行されるデータ送信プロセスに対応
して定められている請求項6記載のプロセッサ間データ
転送方法。 - 【請求項8】該データ送信ノードからの該データ送信バ
ッファ内のデータの転送は、 そのデータの互いに異なる複数の部分を該受信側メモリ
に書き込む位置を指定する複数のアドレス情報を該記憶
されたアドレスに関連する情報から生成し、それぞれ該
複数の部分データの一つと該複数のアドレス情報の内
の、その部分データに関して生成された一つのアドレス
情報とを含む複数のパケットを順次転送するステップか
らなる請求項1記載のプロセッサ間データ転送方法。 - 【請求項9】該実のデータ受信領域を割り当てるとき
に、該実のデータ受信領域に先行するアドレス位置に、
受信データともに転送されるヘッダを格納するためのヘ
ッダ受信領域を確保するステップを更に有し、 該データ送信ノードからの該データと該アドレス情報の
転送は、該アドレス情報を含むヘッダと、該データを含
む、そのヘッダに続くデータ部からなるパケットを転送
するステップを有し、 該アドレス情報は、そのデータを記憶する位置に先行す
る、そのデータとともに転送されるべきヘッダを記憶す
る位置を指定し、 該データ受信ノードによる受信データの書き込みは、 該パケット内のヘッダをその中に含まれたアドレス情報
に依存して、該受信側メモリ内の該ヘッダ受信領域に記
憶し、 その後、該パケット内のデータ部を、該ヘッダ受信領域
に続いて位置する該受信データ領域に記憶するステップ
からなる請求項1記載のプロセッサ間データ転送方法。 - 【請求項10】該実のデータ受信領域の割り当ては、複
数の離散した位置に位置する部分データ受信領域を該仮
想のデータ受信領域の異なる部分に対して割り当てるス
テップからなり、 それぞれ該複数の実の部分データ受信領域に先行するア
ドレス位置に位置する、複数のヘッダ受信領域を確保す
るステップを更に有し、 該データ送信ノードからの該データ送信バッファ内のデ
ータの転送は、 そのデータの互いに異なる複数の部分を該受信側メモリ
に書き込む位置を指定する複数のアドレス情報として、
それぞれの部分データとともに転送されるヘッダを書き
込むアドレスを指定する複数のアドレス情報を、該記憶
されたアドレスに関連する情報から生成し、 それぞれ、該複数の部分データの一つを含むデータ部と
該複数のアドレス情報の内の、その部分データに関して
生成された一つのアドレス情報を含む、該データ部に先
行するヘッダ部とを含む複数のパケットを順次転送する
ステップからなり、 該データ受信ノードによる受信データの書き込みは、 該複数のパケットの各々内のヘッダをその中に含まれた
アドレス情報に依存して、該受信側メモリ内の該複数の
ヘッダ受信領域の一つに記憶し、 その後、そのパケット内のデータ部を、該一つのヘッダ
受信領域に続いて位置する該部分データ受信領域に記憶
するステップからなる請求項9記載のプロセッサ間デー
タ転送方法。 - 【請求項11】該実のデータ送信領域の割り当ては、複
数の離散した位置に位置する部分データ送信領域を該仮
想のデータ送信領域の異なる部分に対して割り当てるス
テップからなり、 それぞれ該複数の実の部分データ送信領域に先行するア
ドレス位置に位置する、複数のヘッダ送信領域を確保
し、 該複数の部分データ送信領域に該データ送信プロセスに
より送信データを書き込んだ後、それぞれのヘッダ送信
領域に、それぞれの部分データとともに転送されるべき
ヘッダを書き込むステップを更に有し、 該複数のパケットの転送は、 該複数のヘッダ送信領域の一つからヘッダを読みだし、 その読み出しに引き続いて、そのヘッダ送信領域に続く
位置にある一つの実の部分データ送信領域内の部分デー
タを続けて読み出すステップを有する請求項10記載の
プロセッサ間データ転送方法。 - 【請求項12】該転送されたデータの書き込みは、該デ
ータ受信ノードを制御するOSの介入なしに行なう請求
項1記載のプロセッサ間データ転送方法。 - 【請求項13】それぞれ、プロセッサと、そのプロセッ
サで実行される、それぞれ仮想メモリ空間を使用するプ
ログラムおよびそのプログラムで使用されるデータを保
持する実メモリとを有する複数のノードと、それらを相
互に接続するデータ転送ネットワークとを有する分散メ
モリ型計算機システムにおいて、 各ノードで、そのノードを制御するOSにより、そこで
実行されるプロセスが要求するデータ送信領域とデータ
受信領域とをそのノード内の実メモリに常駐して確保
し、 そのOSにより、データ受信領域のアドレスを、そこへ
データを送信するデータ送信ノードのOSに通知し、 全てのノードで以上の処理が完了したことを検出しその
後、各ノードでプロセスを実行し、 そのプロセスから他のノードへ転送すべきデータをその
プロセスからそのノード内のデータ送信領域に書き込
み、 そのデータの転送要求をそのプロセスを制御するOSに
出力し、 そのOSがそのプロセスが指定する、そのデータを受信
すべきデータ受信ノードとその中のデータ受信領域に基
づいて、そのデータとともに転送されるべきメモリアド
レスを選択し、 そのデータにそのメモリアドレスを付加して該データ受
信ノードに転送し、 該データ受信ノードにより、その転送されたデータをO
Sの介入なしに、その付加されたメモリアドレスにより
定まる位置に、かつ、そのノードでのプロセスの実行と
並行して格納するプロセッサ間データ転送方法。 - 【請求項14】各ノードで実行中のプロセスが要求する
処理の実行およびデータの転送後、そのプロセスの次の
実行時に使用するデータのうち他のノードから転送され
るべきデータが全て受信済みか否かを検出し、 該転送されるべき全てのデータが受信済みであるとき、
そのプロセスの次の実行を開始する請求項13記載のプ
ロセッサ間データ転送方法。 - 【請求項15】各ノードのデータ受信領域およびデータ
送信領域としてそれぞれ一対のデータ受信領域を確保
し、 各ノードでのあるプロセスに実行完了毎に、そのプロセ
スの次の実行時に使用するデータ送信領域を切り替え、 そのプロセスの次の実行時に他のノードへ送信するとき
に指定するデータ受信領域を切り替える請求項14記載
のプロセッサ間データ転送方法。 - 【請求項16】各ノードでのプロセスの実行後、そのプ
ロセスの次の実行に必要なデータが受信済みか否かを検
出し、 受信済みのとき、次の実行を、他のノードと非同期に開
始する請求項14記載のプロセッサ間データ転送方法。 - 【請求項17】それぞれ、プロセッサと、そのプロセッ
サで実行される、それぞれ仮想メモリ空間を使用するプ
ログラムおよびそのプログラムで使用されるデータを保
持する実メモリとを有する複数のノードと、それらを相
互に接続するデータ転送ネットワークとを有する分散メ
モリ型計算機システムにおいて、 受信側ノードで一対のデータ受信領域を実メモリに常駐
して確保し、 送信側で処理を実行し、 受信側のノードではこの実行と並行して、該一対のデー
タ受信領域の一方にすでに受信されたデータを使用して
処理を実行し、 送信側ノードでの処理の実行終了後、その処理の結果得
られたデータをその受信側のノードに、その受信側のノ
ードの処理の実行と並行して転送し、 その受信側ノードで、送信側のノードから転送されたデ
ータを該一対のデータ受信領域の他方に書き込み、 その受信側ノードが次の処理を実行する前に、そのノー
ドで、次の処理で使用するデータ受信領域を該一対のデ
ータ受信領域の該一方から該他方に実メモリのマッピン
グにより切り替え、その後、次の処理を実行し、 その受信側ノードと並行してその送信側ノードでその後
の処理を実行し、 その結果得られたデータを該一方のデータ受信領域に書
き込むプロセッサ間データ転送方法。 - 【請求項18】送信側ノードからデータを送信するとき
に、そのデータともに、受信側ノードのデータ書き込み
を行なうデータ受信領域を指定する情報をその受信側ノ
ードに転送する請求項17記載のプロセッサ間データ転
送方法。 - 【請求項19】この指定をする情報を送信側ノードが先
の処理を終了後切り替える請求項18記載のプロセッサ
間データ転送方法。 - 【請求項20】送信側ノードが先の処理を終了したか否
かを受信側ノードから送信されるべきデータが受信され
たか否かに基づいて、送信側ノードにより判断する請求
項19記載のプロセッサ間データ転送方法。 - 【請求項21】それぞれ、プロセッサと、そのプロセッ
サで実行される、それぞれ仮想メモリ空間を使用するプ
ログラムおよびそのプログラムで使用されるデータを保
持する実メモリとを有する複数のノードと、それらを相
互に接続するデータ転送ネットワークとを有する分散メ
モリ型計算機システムにおいて、 各ノードで、その中のOSにより、そこで実行されるプ
ロセスが要求するデータ送信領域とデータ受信領域とを
そのノード内の実メモリに常駐して確保し、 受信データ領域へのアクセス権コードを送信側に通知し
て、 送信プロセスが受信プロセスにデータを送信するとき、
その受信プロセスが実行されている受信ノードの実メモ
リ内の送信データを書き込むアドレスをそのデートとも
に送信プロセスを実行するノードから該受信ノードに転
送し、 その実際のデータ転送を開始する前に、 送信側がこのアクセス権コードを付与してデータ転送を
行い、データ受信時にアクセス権コードの正当性を検査
するプロセッサ間データ転送方法。 - 【請求項22】それぞれ、プロセッサと、そのプロセッ
サで実行される、それぞれ仮想メモリ空間を使用するプ
ログラムおよびそのプログラムで使用されるデータを保
持する実メモリとを有する複数のノードと、それらを相
互に接続するデータ転送ネットワークとを有する分散メ
モリ型計算機システムにおいて、 各ノードにて実行されるプロセスの要求により、そのノ
ードのOSが複数のそれぞれ所定の大きさを有するデー
タ送信領域およびそれぞれに対応する複数のヘッダ送信
領域ならびに複数のデータ受信領域およびそれぞれに対
応する複数のヘッダ受信領域およびを実メモリ上に常駐
して確保し、 各ノードでプロセスを互いに並行して実行し、 各ノードで実行中のプロセスにより、複数の送信データ
を複数のデータ送信領域に書き込み、 その書き込みの後、そのプロセスからそのプロセスを実
行中のノードを制御するOSにデータ送信を要求し、 そのOSからそれらのデータのそれぞれに対応するヘッ
ダをそれぞれのデータ送信領域に対応するヘッダ送信領
域に書き込み、 その後、それぞれのデータとそれぞれに対応するヘッダ
からなる複数のパケットをデータ受信ノードに順次転送
し、 該データ受信ノードでは、受信した複数のパケットの各
々内のデータとヘッダとをそれぞれ互いに対応するデー
タ受信領域とヘッダ受信領域に書き込むプロセッサ間デ
ータ転送方法。 - 【請求項23】該データ受信ノードでは、そのノードを
制御するOSの介入なしに、かつ、そこでのプロセスの
実行と並行して該複数のパケットを書き込む請求項22
記載のプロセッサ間データ転送方法。 - 【請求項24】それぞれのヘッダ送信領域は対応するデ
ータ送信領域に隣接し、かつ、それより先行するメモリ
位置にあり、それぞれのヘッダ受信領域は対応するデー
タ受信領域に隣接し、かつ、それより先行するメモリ位
置にある請求項22記載のプロセッサ間データ転送方
法。 - 【請求項25】データを送信するノードではそれぞれの
ヘッダ領域の一つ内のヘッダとそれに隣接するデータ送
信領域内のデータを続けて読み出し、 該データ受信ノードでは、転送されたパケット内のヘッ
ダとデータを該ヘッダ受信領域の一つと該複数のデータ
受信領域の内のその一つのヘッダ受信領域に続く一つに
続けて書き込む請求項24記載のプロセッサ間データ転
送方法。 - 【請求項26】各データ送信領域、各ヘッダ送信領域な
らびに各データ受信領域、各ヘッダ受信領域は、各ノー
ドの実メモリを仮想空間に割り当てるときの割り当て単
位の大きさに等しい大きさを有する請求項25記載のプ
ロセッサ間データ転送方法。 - 【請求項27】それぞれ、プロセッサと、そのプロセッ
サで実行される、それぞれ仮想メモリ空間を使用するプ
ログラムおよびそのプログラムで使用されるデータを保
持する実メモリとを有する複数のノードと、それらを相
互に接続するデータ転送ネットワークとを有する分散メ
モリ型計算機システムにおいて、 データを他のノード(データ受信ノード)に送信するノ
ード(データ送信ノード)の実メモリ内に、それぞれ、
その該実メモリを仮想空間に割り当てるときの割当単位
の大きさをそれぞれ有し、互いに離散して位置に割当単
位の境界に一致する境界を有し、該実メモリに常駐し
た、複数のデータ送信領域を確保し、 それぞれ該複数のデータ送信領域の一つに対応し、該割
当単位の大きさを有し、かつ割当単位の境界に一致する
境界を有する複数のヘッダ領域をそれぞれ対応するデー
タ送信領域に先行し、かつ、それぞれに隣接する位置に
確保し該複数のデータ送信領域に送信データを書き込
み、 該複数のヘッダ送信領域に、対応するデータ送信領域内
のデータをパケットして転送するのに必要なヘッダを書
き込み、 該複数のヘッダ送信領域内のヘッダを順次読み出し、か
つ、それぞれのヘッダ送信領域のヘッダを読み出した
後、次のヘッダ領域を読み出す前に、それぞれのヘッダ
送信領域に対応するデータ送信領域のデータを読み出
し、 それぞれ、一つのヘッダ送信領域から読み出されたヘッ
ダとそのヘッダ送信領域い対応する一つのデータ送信領
域から読み出さされたデータの組を含む複数のパケット
を、そのデータ送信ノードからそのデータ受信ノードに
順次転送するプロセッサ間データ転送方法。 - 【請求項28】該複数のヘッダ受信領域と該複数のデー
タ受信領域とは交互に、かつ、連続する位置されている
請求項27記載のプロセッサ間データ転送方法。 - 【請求項29】それぞれ、プロセッサと、そのプロセッ
サで実行される、それぞれ仮想メモリ空間を使用するプ
ログラムおよびそのプログラムで使用されるデータを保
持する実メモリとを有する複数のノードと、それらを相
互に接続するデータ転送ネットワークとを有する分散メ
モリ型計算機システムにおいて、 データを他のノード(データ送信ノード)から受信する
ノード(データ受信ノード)の実メモリ内に、それぞ
れ、その該実メモリを仮想空間に割り当てるときの割当
単位の大きさをそれぞれ有し、互いに離散して位置に割
当単位の境界に一致する境界を有し、該実メモリに常駐
した、複数のデータ受信領域を確保し、 それぞれ該複数のデータ受信領域の一つに対応し、該割
当単位の大きさを有し、かつ割当単位の境界に一致する
境界を有する複数のヘッダ受信領域をそれぞれ対応する
データ受信領域に先行し、かつ、それぞれに隣接する位
置に確保し該データ送信ノードより該データ受信ノード
に、ともに該割当単位の大きさに等しい大きさを有する
ヘッダとデータをそれぞれ含む複数のパケットを順次転
送し、 該データ受信ノードにより、そえぞれのパケットのヘッ
ダとデータとをいずれか一つのヘッダ受信領域とそれに
続くデータ受信領域とに連続して書き込むように、該複
数のパケットを該データ受信ノードの該実メモリに順次
書き込むプロセッサ間データ転送方法。 - 【請求項30】該複数のヘッダ受信領域と該複数のデー
タ受信領域とは交互に、かつ、連続する位置されている
請求項29記載のプロセッサ間データ転送方法。
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP4256155A JP3003418B2 (ja) | 1992-09-25 | 1992-09-25 | プロセッサ間データ通信方法 |
US08/126,088 US5659777A (en) | 1992-09-25 | 1993-09-23 | Method for intraprocessor communication |
GB9319816A GB2271006B (en) | 1992-09-25 | 1993-09-24 | Method for interprocessor communication |
GB9602317A GB2295473B (en) | 1992-09-25 | 1993-09-24 | Method for interprocessor communication |
US08/759,890 US5867656A (en) | 1992-09-25 | 1996-12-03 | Method for interprocessor communication |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP4256155A JP3003418B2 (ja) | 1992-09-25 | 1992-09-25 | プロセッサ間データ通信方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH06110845A true JPH06110845A (ja) | 1994-04-22 |
JP3003418B2 JP3003418B2 (ja) | 2000-01-31 |
Family
ID=17288677
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP4256155A Expired - Fee Related JP3003418B2 (ja) | 1992-09-25 | 1992-09-25 | プロセッサ間データ通信方法 |
Country Status (3)
Country | Link |
---|---|
US (2) | US5659777A (ja) |
JP (1) | JP3003418B2 (ja) |
GB (1) | GB2271006B (ja) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH09120391A (ja) * | 1995-10-23 | 1997-05-06 | Fujitsu Ltd | 並列計算機におけるデータ転送方法および並列計算機用処理装置 |
US5978894A (en) * | 1995-11-27 | 1999-11-02 | Hitachi, Ltd. | Method of interprocessor data transfer using a network, virtual addresses and paging, a buffer, flags, data transfer status information and user accessible storage areas in main memory |
US6374362B1 (en) | 1998-01-14 | 2002-04-16 | Nec Corporation | Device and method for shared process control |
JPWO2010027064A1 (ja) * | 2008-09-04 | 2012-02-02 | 日本電気株式会社 | データ伝送方法、データ伝送システム、データ送信装置、データ受信装置、及び制御プログラム |
EP2466484A1 (en) | 2010-12-17 | 2012-06-20 | Fujitsu Limited | Parallel computing system, synchronization device, and control method of parallel computing system |
KR20180039011A (ko) * | 2016-07-21 | 2018-04-17 | 바이두 유에스에이 엘엘씨 | 자율 주행 차량을 작동하는 컴퓨팅 노드들 사이의 효율적 통신 |
JP2022545222A (ja) * | 2019-12-23 | 2022-10-26 | グラフコアー リミテッド | 複数のプロセッサを有するコンピュータにおける通信 |
JP2022549206A (ja) * | 2019-09-20 | 2022-11-24 | ロベルト・ボッシュ・ゲゼルシャフト・ミト・ベシュレンクテル・ハフツング | データを処理するための方法および装置 |
Families Citing this family (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3003418B2 (ja) * | 1992-09-25 | 2000-01-31 | 株式会社日立製作所 | プロセッサ間データ通信方法 |
JPH07262152A (ja) * | 1994-03-24 | 1995-10-13 | Hitachi Ltd | コンピュータシステム |
EP0813710B1 (en) * | 1996-01-09 | 2001-08-22 | Koninklijke Philips Electronics N.V. | A method and system for synchronizing concurrent sequential processes by means of intra-process update operations and inter-process adapt operations |
GB9602552D0 (en) * | 1996-02-08 | 1996-04-10 | Madge Networks Ltd | Communication network end station and adaptor card |
US6185634B1 (en) * | 1996-09-27 | 2001-02-06 | Emc Corporation | Address triggered DMA controller with an indicative signal including circuitry for calculating a new trigger address value based on the sum of the current trigger address and the descriptor register data with a trigger address register |
US6802068B1 (en) * | 1996-10-16 | 2004-10-05 | International Business Machines Corporation | Addressless internetworking |
US5987496A (en) * | 1996-12-03 | 1999-11-16 | Mitsubishi Electric Information Technology Center America, Inc. (Ita) | Real-time channel-based reflective memory |
US6829764B1 (en) * | 1997-06-23 | 2004-12-07 | International Business Machines Corporation | System and method for maximizing usage of computer resources in scheduling of application tasks |
US5999712A (en) * | 1997-10-21 | 1999-12-07 | Sun Microsystems, Inc. | Determining cluster membership in a distributed computer system |
JP3601955B2 (ja) * | 1997-10-23 | 2004-12-15 | 株式会社日立製作所 | データ転送方法およびそれに適した計算機システム |
US6601146B2 (en) * | 1998-06-16 | 2003-07-29 | International Business Machines Corporation | Technique for efficiently transferring moderate amounts of data across address space boundary |
EP0987893A1 (en) * | 1998-09-16 | 2000-03-22 | CANAL+ Société Anonyme | Management of data in a receiver/decoder |
US6693905B1 (en) * | 1999-04-09 | 2004-02-17 | Matsushita Electric Industrial Co., Ltd. | Data exchange unit |
WO2000062179A1 (en) * | 1999-04-12 | 2000-10-19 | Sony Electronics Inc. | Asynchronous data transmission with scattering page tables |
US6445711B1 (en) | 1999-04-23 | 2002-09-03 | Sony Corporation | Method of and apparatus for implementing and sending an asynchronous control mechanism packet used to control bridge devices within a network of IEEE STD 1394 serial buses |
US6799317B1 (en) | 2000-06-27 | 2004-09-28 | International Business Machines Corporation | Interrupt mechanism for shared memory message passing |
US7171562B2 (en) * | 2001-09-05 | 2007-01-30 | International Business Machines Corporation | Apparatus and method for providing a user interface based on access rights information |
US20030051039A1 (en) * | 2001-09-05 | 2003-03-13 | International Business Machines Corporation | Apparatus and method for awarding a user for accessing content based on access rights information |
US20030046578A1 (en) * | 2001-09-05 | 2003-03-06 | International Business Machines Incorporation | Apparatus and method for providing access rights information in metadata of a file |
US20030061567A1 (en) * | 2001-09-05 | 2003-03-27 | International Business Machines Corporation | Apparatus and method for protecting entries in a form using access rights information |
US6892201B2 (en) * | 2001-09-05 | 2005-05-10 | International Business Machines Corporation | Apparatus and method for providing access rights information in a portion of a file |
US20030177248A1 (en) * | 2001-09-05 | 2003-09-18 | International Business Machines Corporation | Apparatus and method for providing access rights information on computer accessible content |
US7020753B2 (en) * | 2002-01-09 | 2006-03-28 | Sun Microsystems, Inc. | Inter-domain data transfer |
US6795902B2 (en) * | 2002-01-09 | 2004-09-21 | Sun Microsystems, Inc. | Inter-domain data transfer |
US7447735B2 (en) * | 2003-07-01 | 2008-11-04 | Motorola, Inc. | Interprocessor communication protocol |
US7739577B2 (en) * | 2004-06-03 | 2010-06-15 | Inphase Technologies | Data protection system |
US7865570B2 (en) * | 2005-08-30 | 2011-01-04 | Illinois Institute Of Technology | Memory server |
BR112012005749A2 (pt) * | 2009-09-16 | 2019-09-24 | Siemens Ag | método de execução de uma subestação de um sistema de fornecimento de energia elétrica |
US9176872B2 (en) | 2013-02-25 | 2015-11-03 | Barco N.V. | Wait-free algorithm for inter-core, inter-process, or inter-task communication |
KR20160146055A (ko) * | 2015-06-11 | 2016-12-21 | 현대자동차주식회사 | 차량 네트워크에서 통신 노드의 동작방법 |
CN105978997A (zh) * | 2016-06-24 | 2016-09-28 | 北京百度网讯科技有限公司 | 数据传输方法和系统 |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5833972B2 (ja) * | 1979-11-12 | 1983-07-23 | 富士通株式会社 | 計算機システム間通信方式 |
JPS582904A (ja) * | 1981-06-27 | 1983-01-08 | Omron Tateisi Electronics Co | プログラマブル・ロジツク・コントロ−ラ |
JPS6145272B2 (ja) * | 1981-12-04 | 1986-10-07 | Burroughs Corp | |
US4803655A (en) * | 1981-12-04 | 1989-02-07 | Unisys Corp. | Data processing system employing a plurality of rapidly switchable pages for providing data transfer between modules |
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 |
US4654654A (en) * | 1983-02-07 | 1987-03-31 | At&T Bell Laboratories | Data network acknowledgement arrangement |
US5010477A (en) * | 1986-10-17 | 1991-04-23 | Hitachi, Ltd. | Method and apparatus for transferring vector data between parallel processing system with registers & logic for inter-processor data communication independents of processing operations |
US4827403A (en) * | 1986-11-24 | 1989-05-02 | Thinking Machines Corporation | Virtual processor techniques in a SIMD multiprocessor array |
EP0296862B1 (en) * | 1987-06-24 | 1995-05-10 | Westinghouse Electric Corporation | Multiprocessor information exchange |
US5297255A (en) * | 1987-07-28 | 1994-03-22 | Hitachi, Ltd. | Parallel computer comprised of processor elements having a local memory and an enhanced data transfer mechanism |
JPH01194055A (ja) * | 1988-01-29 | 1989-08-04 | Hitachi Ltd | 並列計算機及びそのデータ転送方法 |
JPH01194056A (ja) * | 1988-01-29 | 1989-08-04 | Hitachi Ltd | 並列プロセッサ |
US5239643A (en) * | 1987-11-30 | 1993-08-24 | International Business Machines Corporation | Method for reducing disk I/O accesses in a multi-processor clustered type data processing system |
GB8915135D0 (en) * | 1989-06-30 | 1989-08-23 | Inmos Ltd | Message routing |
DE69033434T2 (de) * | 1989-07-31 | 2000-08-03 | Hitachi, Ltd. | Datenverarbeitungssystem und Datenübertragungs- und -verarbeitungsverfahren |
JPH04505065A (ja) * | 1989-12-26 | 1992-09-03 | イーストマン・コダック・カンパニー | Ram記憶装置に類似したディスク記憶装置を備えた画像処理装置 |
JPH0440551A (ja) * | 1990-06-07 | 1992-02-10 | Fujitsu Ltd | データ転送方式 |
JP3169624B2 (ja) * | 1991-03-20 | 2001-05-28 | 株式会社日立製作所 | プロセッサ間通信方法およびそのための並列プロセッサ |
JP3003418B2 (ja) * | 1992-09-25 | 2000-01-31 | 株式会社日立製作所 | プロセッサ間データ通信方法 |
-
1992
- 1992-09-25 JP JP4256155A patent/JP3003418B2/ja not_active Expired - Fee Related
-
1993
- 1993-09-23 US US08/126,088 patent/US5659777A/en not_active Expired - Lifetime
- 1993-09-24 GB GB9319816A patent/GB2271006B/en not_active Expired - Fee Related
-
1996
- 1996-12-03 US US08/759,890 patent/US5867656A/en not_active Expired - Fee Related
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH09120391A (ja) * | 1995-10-23 | 1997-05-06 | Fujitsu Ltd | 並列計算機におけるデータ転送方法および並列計算機用処理装置 |
US5978894A (en) * | 1995-11-27 | 1999-11-02 | Hitachi, Ltd. | Method of interprocessor data transfer using a network, virtual addresses and paging, a buffer, flags, data transfer status information and user accessible storage areas in main memory |
US6374362B1 (en) | 1998-01-14 | 2002-04-16 | Nec Corporation | Device and method for shared process control |
JPWO2010027064A1 (ja) * | 2008-09-04 | 2012-02-02 | 日本電気株式会社 | データ伝送方法、データ伝送システム、データ送信装置、データ受信装置、及び制御プログラム |
EP2466484A1 (en) | 2010-12-17 | 2012-06-20 | Fujitsu Limited | Parallel computing system, synchronization device, and control method of parallel computing system |
US8572615B2 (en) | 2010-12-17 | 2013-10-29 | Fujitsu Limited | Parallel computing system, synchronization device, and control method of parallel computing system |
KR20180039011A (ko) * | 2016-07-21 | 2018-04-17 | 바이두 유에스에이 엘엘씨 | 자율 주행 차량을 작동하는 컴퓨팅 노드들 사이의 효율적 통신 |
JP2018531436A (ja) * | 2016-07-21 | 2018-10-25 | バイドゥ ドットコム タイムズ テクノロジー(ペキン)カンパニー リミテッドBaidu.com Times Technology (Beijing) Co., Ltd. | 自律走行車における処理ノードのデータフローを管理する方法、装置及びシステム |
JP2022549206A (ja) * | 2019-09-20 | 2022-11-24 | ロベルト・ボッシュ・ゲゼルシャフト・ミト・ベシュレンクテル・ハフツング | データを処理するための方法および装置 |
JP2022545222A (ja) * | 2019-12-23 | 2022-10-26 | グラフコアー リミテッド | 複数のプロセッサを有するコンピュータにおける通信 |
Also Published As
Publication number | Publication date |
---|---|
GB2271006A (en) | 1994-03-30 |
US5659777A (en) | 1997-08-19 |
GB2271006B (en) | 1996-10-30 |
US5867656A (en) | 1999-02-02 |
GB9319816D0 (en) | 1993-11-10 |
JP3003418B2 (ja) | 2000-01-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3003418B2 (ja) | プロセッサ間データ通信方法 | |
US5649102A (en) | Distributed shared data management system for controlling structured shared data and for serializing access to shared data | |
JP2882475B2 (ja) | スレッド実行方法 | |
JP3139392B2 (ja) | 並列処理システム | |
US5043873A (en) | Method of parallel processing for avoiding competition control problems and data up dating problems common in shared memory systems | |
US8607004B2 (en) | Distributed symmetric multiprocessing computing architecture | |
EP0712076A2 (en) | System for distributed multiprocessor communication | |
JPH1011372A (ja) | Cpu及びi/oデバイス間のリファレンスによるコンピュータシステムデータi/o | |
JPH1115720A (ja) | 高速ファイル入出力制御方法 | |
JPH09325944A (ja) | I/oデバイス及び多重メモリ装置間のリファレンスによるコンピュータシステムデータi/o | |
US6665700B1 (en) | Distributed-memory multiprocessor system utilizing plural multiprocessors with virtual storage space | |
JP2010165022A (ja) | プロセッサ間通信装置、プロセッサ間通信方法、プログラムおよび記録媒体 | |
US6986147B2 (en) | Method for transparent, location-independent, remote procedure calls in a heterogeneous network environment | |
JPH09288654A (ja) | 多重データソース及びシンク間のリファレンスによるコンピュータシステムデータi/o | |
US7028313B2 (en) | Method for transmitting function parameters to a remote node for execution of the function thereon | |
CA2019300C (en) | Multiprocessor system with shared memory | |
Karl et al. | Supporting shared memory and message passing on clusters of PCs with a SMiLE | |
JP2736237B2 (ja) | 遠隔メモリアクセス制御装置 | |
JP3489157B2 (ja) | 分散共有メモリシステムおよび計算機 | |
JP2993728B2 (ja) | プロトコル高速処理装置 | |
Maples et al. | Merlin: A superglue for multicomputer systems | |
JPH04291660A (ja) | プロセッサ間通信方法およびそのための並列プロセッサ | |
JP3375649B2 (ja) | 並列計算機 | |
JP2602241B2 (ja) | 並列計算機 | |
Cvijović et al. | An approach to the design of distributed real-time operating systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20071119 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20081119 Year of fee payment: 9 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20081119 Year of fee payment: 9 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20091119 Year of fee payment: 10 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101119 Year of fee payment: 11 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101119 Year of fee payment: 11 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111119 Year of fee payment: 12 |
|
LAPS | Cancellation because of no payment of annual fees |