JPH09146903A - 並列計算機におけるデータ転送制御方法 - Google Patents

並列計算機におけるデータ転送制御方法

Info

Publication number
JPH09146903A
JPH09146903A JP7307111A JP30711195A JPH09146903A JP H09146903 A JPH09146903 A JP H09146903A JP 7307111 A JP7307111 A JP 7307111A JP 30711195 A JP30711195 A JP 30711195A JP H09146903 A JPH09146903 A JP H09146903A
Authority
JP
Japan
Prior art keywords
data
function
window
computer
program
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.)
Pending
Application number
JP7307111A
Other languages
English (en)
Inventor
Nobutoshi Sagawa
暢俊 佐川
Naonobu Sukegawa
直伸 助川
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.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP7307111A priority Critical patent/JPH09146903A/ja
Publication of JPH09146903A publication Critical patent/JPH09146903A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Multi Processors (AREA)
  • Computer And Data Communications (AREA)

Abstract

(57)【要約】 【課題】並列計算機上でリモートメモリ転送を用いたメ
ッセージの送受信を安全に行なう。 【解決手段】並列計算機上でリモートメモリ転送により
メッセージを送受信する際に、各要素計算機上にリモー
トアクセス可能な任意個数のメモリ領域(122,12
3)とその管理領域(124,125)を設け、各々の
メモリ領域について管理領域上にリモートアクセス禁止
のフラグを設けることにより、その領域に対してリモー
トアクセスを任意に許可あるいは禁止できるようにす
る。 【効果】同一メモリ領域への複数の書き込みによりデー
タがオーバーライトされること、および同一メモリ領域
への書き込みと読み出しの重複により不正なデータが読
み出されることを防止できる。

Description

【発明の詳細な説明】
【0001】
【発明の属する利用分野】本発明は複数の要素計算機
(プロセシングユニット、以下PU)を通信網によって
結合した並列計算機におけるPU間のデータ通信に係わ
り、特にデータ通信が相手PUの介入なしに行なわれる
リモートメモリへのデータ転送時のデータの安全性の確
保に関する。
【0002】
【従来の技術】並列計算機は、複数のPUを通信網によ
って結合し、それらを同時に稼働させることによって処
理速度を向上させる。本発明では特に、各PUがそれに
付随するメモリ空間のみをアクセスすることができる分
散メモリ型の並列計算機を対象とする。分散メモリ型並
列計算機では、他のPUのメモリ上にあるデータを直接
アクセスすることはできない。データが必要となる度に
送受信を行なってそのデータを自PUに移動する必要が
ある。
【0003】分散メモリ型並列計算機では、PU間のデ
ータのやりとりをすべてプログラム中に記述する必要が
ある。ここで、PU間で受け渡されるデータをメッセー
ジと呼ぶ。並列計算機用プログラムでは、他のPUで必
要となるデータが自PUのメモリ上にある場合にはそれ
をあらかじめ送信し、他のPUのメモリ上にあるデータ
を自PUが必要とする場合にはあらかじめ受信しておく
ような指示を各PUのプログラム中に明示的に記述する
必要がある。多くの並列計算機システムでは、このよう
なPU間のメッセージの送受信をサポートする目的で、
メッセージパシングライブラリと呼ばれる関数(あるい
はサブルーチン)群があらかじめ用意されており、通信
は「C」や「FORTRAN」などのプログラムからの
関数コールとして記述できるようになっている。メッセ
ージパシングライブラリの中には、異なる並列計算機ハ
ードウェア上にインプリメントされ、事実上の標準とし
ての通信環境を提供するものも現われている。米国Oa
k Ridge National Laborato
ryで開発されたPVMや、近年標準化が進められてい
るMPI(Message Passing Inte
rface)はその例である。これらの通信ライブラリ
をコールすることにより書かれた並列プログラムは、異
なる並列計算機上でも再コンパイルのみで動作させ得る
可能性(可搬性)が高い。
【0004】通信ライブラリでPU間のメッセージの受
け渡しを行なうには、2種類の方式が知られている。第
1は、送信側PUでメッセージの送信関数をコールし、
受信側PUでそれに対応するメッセージの受信関数をコ
ールし、これらの間でメッセージを送受信する方式であ
る。送信関数より受信関数が先にコールされた場合には
受信関数はデータの到着までブロック(停止)し、送信
関数が先にコールされた場合には受信関数の発行までブ
ロックするか、メッセージがシステム内にバッファリン
グされるのが一般的である。これはsend/rece
ive方式と呼ばれる。第2は、送信側PUでメッセー
ジの送信関数をコールしただけで(対応する受信関数の
発行なしに)メッセージを相手PUに書き込み、あるい
は受信関数のコールにより(対応する送信関数の発行な
しに)データを相手PUから読み込む方式である。これ
はput/get方式、あるいはリモートメモリコピー
方式と呼ばれ、送信関数はput関数、受信関数はge
t関数と呼ばれる。
【0005】上に挙げた標準的なメッセージパシングラ
イブラリのうちPVMではsend/receive方
式による通信のみをサポートしている。MPIもsen
d/receive方式のみをサポートしているが、時
期バージョンとして現在検討が進められているMPI−
2ではこれに加えてput/get方式による通信も取
り入れる計画がある。
【0006】send/receive方式は、送信
側、受信側のPUがそれぞれに送信、受信関数を発行し
て明示的にメッセージを受け渡すため、利用者はどのタ
イミングでメッセージが自PUのどのメモリ領域に送受
信されるかを制御することができる。しかし、利用者は
プログラム中で送信と受信の対応付けを常に行なわなく
てはならいので、プログラムの手間は大きい。これに対
し、put/get方式は送信側、受信側がそれぞれ一
方的に相手PU上にあるデータを読み書きする。データ
が必要になった時点でput、あるいはgetの一方を
発行すればよいので、プログラムの手間は少なくなる。
しかし、メッセージの送受信先メモリ領域を誤った場
合、あるいは2つ以上のPUがほぼ同時に同一のメモリ
領域に読み書きを行なった場合には、データを破壊した
り、データを上書きしたり、誤ったデータを読み出す恐
れがある。
【0007】MPI−2では、送受信先メモリ領域の誤
りにより利用者プログラムが破壊されることを防ぐ目的
で、各PUにput/get専用のメモリ領域を確保す
る関数を提供している。put/get 操作は、各P
Uであらかじめ確保された領域に対してしかメッセージ
の送受信を行なえないので、それ以外のメモリ領域に誤
って書き出し、読み込みを行なう可能性がなくなる。
【0008】以下、メッセージパシングライブラリMP
I−2で提案されているput/get関数を用いたメ
ッセージ通信方法の概略を説明する。ただし、説明を簡
単にするために、関数仕様は一部簡略化して記述する。
【0009】MPI利用時には、まず通信に参画する全
プログラム上で次のようなMPI初期化関数をコールす
る。通常この処理は並列プログラムの先頭で行なう。
【0010】Init() 本関数中で、メッセージパシングライブラリは必要な初
期化操作を行なう。以下に挙げる関数は、初期化関数を
コールした後でのみ使用することができる。
【0011】初期か終了後put/getを用いる際に
は、全PU上でput/get用に専用のメモリ領域を
確保するための次の関数をコールする。
【0012】Rmc_malloc(base, si
ze, id) ここでbaseは確保するメモリ領域(ウィンドウ)の
先頭アドレス、sizeはメモリ領域の長さである。i
dはウィンドウの識別子であり本関数の出力引き数であ
る。本関数を複数回コールすることにより、ウィンドウ
を一つのPU上に任意個数設けることができる。本関数
で生成したウィンドウには、get/put関数からセ
ットできるカウンタが自動的に付属する。このカウンタ
は直接利用者がアクセスすることはできないが、後述の
ハンドラを用いてその値を監視することで、ウィンドウ
に対するput/get操作の完了を検知することがで
きる。
【0013】他のPUのウィンドウに対するput操作
は次の関数コールにより実行する。 Put(origin_addr, origin_s
ize, target_rank, id, inc
r) ここでorigin_addr, origin_si
zeは送るべきメッセージが格納された自PUのメモリ
の先頭アドレスと長さである。target_rank
は送り先のPU番号である。idはputの対象となる
相手PU上のウィンドウを示す。incrは、当該ウィ
ンドウに付属するカウンタのインクリメント値を表わ
し、メッセージの書き込みと同時にput先ウィンドウ
のカウンタがここに指定した値だけインクリメントされ
る。
【0014】一方、get操作は次の関数コールによ
る。
【0015】Get(origin_addr, or
igin_size, target_rank, i
d, incr) 各引数の意味はgetの場合と同様である。ただし、本
関数ではメッセージが相手PUのウィンドウから読み出
され、自PUのorigin_addr以降のメモリに
受信される。
【0016】put/get操作の完了は、カウンタが
利用者があらかじめ指定した上限値を越えたかどうかで
判定する。ここで、カウンタの上限値は利用者がウィン
ドウごとに次の関数をコールすることにより設定するこ
とができる。
【0017】Set_counter_thresho
ld(id, count) idはウィンドウの識別子、countは設定すべき上
限値である。カウンタが上限値を超えた場合には、利用
者があらかじめ登録したハンドリング関数がMPIによ
りコールバックされる。ハンドリング関数の設定は、次
の関数コールにより行なう。
【0018】 Post_handler(id, handler) idはハンドリング関数の呼び出し対象となるウィンド
ウの識別子、handlerはハンドリング関数へのポ
インタである。ハンドリング関数自体は利用者が自由に
記述することができる。カウンタの上限値に1を指定
し、put/getの引き数incrにも1を指定すれ
ば、個々のput/getの終了時にハンドリング関数
を呼び出すことができる。また、カウンタの上限値とi
ncrで指定する値を適宜変更することで、複数回のp
ut/getが終了した時点でハンドリング関数をコー
ルすることも可能である。
【0019】以上が、MPIを用いた場合の利用者プロ
グラムからのput/get操作方法の説明である。
【0020】
【発明が解決しようとする課題】上述のようにput/
get方式は潜在的にデータを破壊する可能性のある危
険な通信方式であるにもかかわらず、MPIを含む従来
のメッセージパシングライブラリでは2つ以上のPUが
同一のメモリ領域に読み書きを行なった場合に対する考
慮がなされていなかった。また、put/get操作に
よるデータの予期しない破壊が起こった場合に、利用者
からこれを検出する手段が設けられていなかった。
【0021】本発明の目的は、分散メモリ型並列計算機
のメッセージパシングライブラリにおいて、利用者がp
ut/get操作による同一メモリ領域へのメッセージ
の重複した書き込みを防止することと、同一メモリ領域
への重複した書き込みがあった場合にこれを検出するこ
とを可能とし、put/get方式による通信の安全性
を高めることにある。
【0022】
【課題を解決するための手段】本発明は、put/ge
t方式による送受信おいて、複数のPUからの同一メモ
リ領域へのput/getの発行によるデータの上書き
や誤ったデータの読み出しを防ぐために、各PU上でp
ut/get用に確保したメモリ領域に対して書き込
み、読み出し禁止フラグを設け、そのフラグを利用者プ
ログラムから制御可能とすることにより、利用者が当該
メモリ領域への他PUからの書き込み、読み出しを禁止
するようにすることによって達成される。
【0023】また、同一メモリ領域への重複した書き込
み、読み出しを利用者が検出できるようにするために、
書き込み、読み出し禁止フラグの立ったメモリ領域への
put/getの発行を利用者に通知するようにするこ
とによって達成される。
【0024】
【発明の実施の形態】以下、図を参照して本発明の詳細
を説明する。
【0025】まず、本発明の実装方法の具体例を図を参
照して説明する。図1に本発明の全体構成図を示す。1
01,102はPUを示し、103,104はそれらの
CPU、105,106はメモリである。107はそれ
らPUを結ぶ通信路である。PUの数は実際には任意で
あるが、ここでは説明のために2つのPUからなる並列
機を示している。108,109は各PUのOS(オペ
レーティングシステム)である。利用者プログラムを実
行する際には、各PUのメモリ上にプログラムがローデ
ィングされる(110,111)。利用者プログラム
は、あらかじめ本発明のメッセージパシングライブラリ
(114,115)とリンクされている。利用者プログ
ラム中には、他のPUからリモートメモリ転送により読
み書きが可能なメモリ領域(122,123)を設ける
ことができる。さらに、並列プログラムの実行開始と同
時に、put/getデーモンプロセス(112,11
3)が各PUごとに起動される。メッセージパシングラ
イブラリ中には、put/getデーモンからの割り込
み要求によって起動される特別なルーチン(割り込みハ
ンドラ)120,121およびput/get用のメモ
リ領域の管理情報を格納するウィンドウ情報テーブル
(124,125)が設けられる。割り込みハンドラ中
には、put要求にたいする割り込みを処理するput
ハンドラと、get要求に対する割り込みを処理するg
etハンドラが存在する。
【0026】以上の構成要素のうち、メッセージパシン
グライブラリとput/getデーモンとが本発明の特
徴をなす構成要素である。以下、これら2つの構成要素
について詳細に説明する。
【0027】(メッセージパシングライブラリのインタ
ーフェイス)本発明におけるメッセージパシングライブ
ラリ(114,115)について説明する。メッセージ
パシングライブラリは利用者の並列プログラムからコー
ルすることにより、put/getデーモンプロセスを
介してメッセージパシングを実行するための関数群であ
る。
【0028】以下に、メッセージパシングライブラリの
関数インターフェイスを説明する。本実施例では上述の
MPI−2の仕様を基本とし、それに必要な変更を加え
ることによって関数インターフェイスを構築する。実際
には関数名称、引き数名称などは任意であり、必ずしも
ここで説明する仕様と同じである必要はない。
【0029】(1)Init() 本関数のインターフェイスは上述のMPIと同様であ
る。
【0030】(2)RMC_Malloc(base,
size, counter, counter_s
uccess, id) 自PU上にput/getウィンドウを確保する関数で
ある。引き数base, size, counte
r, idの意味は、従来の技術の項で述べたMPIの
場合と同様である。counter_successは
本発明にて新たに設けられたカウンタであり、利用法は
後述する。
【0031】(3)Get(origin_addr,
origin_size, target_ran
k, id, incr) 本関数インターフェイスと引き数の意味は上述のMPI
の場合と同様である。
【0032】(4)Put(origin_addr,
origin_size, target_ran
k, id, incr) 本関数インターフェイスと引き数の意味は上述のMPI
の場合と同様である。
【0033】(5)Set_counter_thre
shold(id, count) 本関数インターフェイスと引き数の意味は上述のMPI
の場合と同様である。
【0034】(6)Post_handler(id,
count) 本関数インターフェイスと引き数の意味は上述のMPI
の場合と同様である。
【0035】(7)Window_lock(id) 本関数と次のWindow_unlock関数は本発明
に特徴的なものである。本関数が利用者プログラムから
呼び出されると、引き数idで指定されたウィンドウ識
別子に対応するウィンドウをput/get禁止とす
る。本操作をウィンドウのロックと呼ぶ。このウィンド
ウを対象とするput/get操作は、同じウィンドウ
に対して次のWindow_unlock関数がコール
されるまで行なうことができない。ロックされたウィン
ドウに対してput操作を行なった場合には、そのメッ
セージは破棄される。ロックされたウィンドウにたいし
てget操作を行なった場合には、メッセージは読みだ
されず、get関数の戻り値としてエラーコードが返さ
れる。
【0036】 (8)Window_unlock(id) 本関数は、idで指定されたウィンドウ識別子に対する
ウィンドウのput/get禁止を解除する。本操作を
ウィンドウのアンロックと呼ぶ。
【0037】(メッセージパシングライブラリの動作)
以下、本発明のリモートメモリへのデータ転送制御方式
における上記各関数の実現方法を示す。
【0038】(1)Initの動作 メッセージパシングライブラリの初期化関数は、利用者
プログラムからコールされると、図2に示すウィンドウ
情報テーブルをライブラリのメモリ領域(図1の10
5,106)上に作成する。ウィンドウ情報テーブル
は、ウィンドウ識別子のカラム、ウィンドウ開始アドレ
スのカラム、ウィンドウ末尾アドレスのカラム、カウン
タ値のカラム、成功カウンタ値のカラム、カウンタの上
限値のカラムおよびウィンドウのロック状態を示すフラ
グ(一般的にこの情報を保持できるものであればよい)
のフィールドを有する。ついで、生成されたテーブルの
各カラムを初期化する。初期値には、カウンタ上限値の
カラムのみ1、他のすべてのカラムは0を用いる。上述
のように利用者は初期化関数を全PUから呼び出すの
で、ウィンドウ情報テーブルも全PU上に作成される。
【0039】(2)Rmc_malloc関数の動作 ウィンドウ生成関数Rmc_mallocがコールされ
た場合の動作を図3に示す。まず、関数の引き数として
与えられたウィンドウの先頭アドレスbuffと長さs
izeを用いてウィンドウ用メモリを確保する(30
1)。ウィンドウ情報テーブルのidのカラムをスキャ
ンし、idが0(初期値)であるカラムを見つける(3
02)。そのカラムの行番号をウィンドウの識別子とし
て採用し、対応するカラムに格納する(303)。次い
で、ウィンドウの先頭アドレスのカラムにbuffで与
えられたアドレスを格納し、ウィンドウ末尾アドレスに
buff+sizeの値を格納する(304,30
5)。
【0040】カウンタ値、カウンタ最大値、ロック状態
フラグは初期値のまま変化させない。
【0041】(3)Put関数の動作 次に、Put関数がコールされた場合の動作を説明す
る。図4に処理の流れを示す。まず、相手PU上のpu
t/getデーモンに対し、put要求が出されたこと
を通知する短いメッセージ(put要求)を送り、次い
で関数の引き数として与えられた送信先ウィンドウの識
別子とインクリメント値を、同じく引き数target
_rank中で指定された相手PU上のput/get
デーモンに送信する(401)。(put/getデー
モンの動作は後述する。)この送信は、通常のsend
関数を用いて行なう。送信後、同デーモンからの認識信
号(ack)を待ち、ブロックする(402)。ack
が到着したならば、同デーモンに対して、引き数のor
igin_addrおよびorigin_sizeで示
される送信バッファの内容を送信する(403)。この
送信もsend関数によって行なう。送信バッファの内
容がすべて送出されたならば、利用者プログラムへリタ
ーンする。
【0042】(4)Get関数の動作 同様に、Get関数がコールされた場合の動作を図5を
用いて説明する。まず、まず、相手PU上のput/g
etデーモンに対し、put要求が出されたことを通知
する短いメッセージ(get要求)を送り、次いで関数
の引き数として与えられた送信先ウィンドウの識別子と
インクリメント値を、同じく引き数target_ra
nk中で指定された相手PU上のput/getデーモ
ンに送信する(501)。この送信は、通常のsend
関数を用いて行なう。送信後、同デーモンを対象として
receive関数を発行しデータの到着を待つ。受け
取ったメッセージは、引き数のorigin_addr
およびorigin_sizeで指定された受信バッフ
ァに格納する(502)。受信バッファへ内容がすべて
格納されたならば、利用者プログラムへリターンする。
【0043】(5)Set_counter_thre
shold関数の動作 本関数がコールされると、自PUのウィンドウ情報テー
ブル(図2)から引き数で指定された識別子を持つ行を
サーチし、その行のカウンタ上限値のカラムに引き数で
指定されたカウンタ上限値を格納する。
【0044】(6)Post_hander関数の動作 本関数がコールされると、自PUのウィンドウ情報テー
ブル(図2)から引き数で指定された識別子を持つ行を
サーチし、その行のハンドラのカラムに引き数で指定さ
れたハンドリング関数のポインタを格納する。
【0045】(7)Window_lock関数の動作 本関数がコールされると、自PUのウィンドウ情報テー
ブル(図2)から引き数で指定された識別子を持つ行を
サーチし、その行のロック状態フラグ(書き込み、読み
出し禁止フラグ)をonにする。
【0046】(8)Window_unlock関数の
動作 本関数がコールされると、自PUのウィンドウ情報テー
ブル(図2)から引き数で指定された識別子を持つ行を
サーチし、その行のロック状態フラグ(書き込み、読み
出し禁止フラグ)をoffにする。
【0047】以上が本発明のリモートメモリ転送制御方
式における各関数の実現方法の例である。
【0048】(9)putハンドラの動作 メッセージパシングライブラリ中には、利用者からコー
ルされる上記の関数群以外に、put/getデーモン
プロセスからの割り込みによって起動されるput/g
etハンドラが存在する。このうちputハンドラの動
作を図7を参照して説明する。割り込みを受け付ける
と、put/getデーモンプロセスからの受信待ち状
態に移行し、ウィンドウ識別子とカウンタのインクリメ
ント値を受け取る(701)。識別子を受け取ると、そ
れを用いて自PU上のウィンドウ情報テーブル(図2)
をサーチし、対応するカウンタを受け取ったインクリメ
ント値にしたがってインクリメントする。また、ロック
フラグのカラムを調べて当該ウィンドウがロック状態に
あるか否かを調べる(704)。ロックされていない場
合には、put/getデーモンプロセスにackを返
し(702)、続いてput/getデーモンプロセス
から送信されてくるメッセージ本体を受け取り、ウィン
ドウに格納する(703)。また、対応する成功カウン
タの値をインクリメント値にしたがってインクリメント
する(706)。ロックされていた場合にはput/g
etデーモンプロセスにnackを返す(705)。最
後にカウンタ値とカウンタ上限値とを比較し、カウンタ
値が等しいか大きくなっていればカウンタをクリアして
対応する利用者定義のハンドラに制御を移す(70
7)。 (10)getハンドラの動作 getハンドラの動作を図8を参照して説明する。割り
込みを受け付けると、put/getデーモンプロセス
からの受信待ち状態に移行し、ウィンドウ識別子を受け
取る(801)。識別子を受け取ると、それを用いて自
PU上のウィンドウ情報テーブル(図2)をサーチし、
ロックフラグのカラムを調べて当該ウィンドウがロック
状態にあるか否かを調べる(804)。ロックされてい
ない場合には、put/getデーモンプロセスにac
kを返し(802)、続いてウィンドウに格納されてい
るメッセージ本体をput/getデーモンプロセスに
送信する(803)。ロックされていた場合にはput
/getデーモンプロセスにnackを返す(80
5)。最後にカウンタ値とカウンタ上限値とを比較し、
カウンタ値が等しいか大きくなっていればカウンタをク
リアして対応する利用者定義のハンドラに制御を移す
(807)。
【0049】(11)ロックされているウィンドウに対
するput/getの検出 本発明では、何等かの原因でロックされているウィンド
ウにメッセージがput/getされた場合、これを次
のようにして検出することができる。
【0050】get関数に対しては、get先のget
ハンドラからnackが返された場合、put/get
デーモンプロセスはget関数発行元にたいしてエラー
コードを返す(619)。したがって、利用者はget
関数のリターン値がエラーコードであった場合には、ロ
ックされたウィンドウに対してgetが発行されたこと
を検知できる。
【0051】put関数は、相手PUに対してメッセー
ジを送信した後直ちにリターンするので、リターンコー
ドによってロックされたウィンドウに書き込みを行なお
うとしたことを検出できない。しかし、putハンドラ
はputが成功した場合には成功カウンタとカウンタの
双方をインクリメントするのに対して、putが成功し
なかった場合には成功カウンタをインクリメントしな
い。したがって、利用者はput関数の完了ハンドリン
グ関数中で両者の値を比較することにより、ロックした
ウィンドウへのputが行われたことを検知できる。す
なわち、ロックされたウィンドウへputが行われた場
合には、成功カウンタの値がカウンタの値よりも小さく
なっているはずである。
【0052】(put/getデーモンの実現方法)次
に、本発明のリモートメモリ転送方式におけるput/
getデーモンの実現方法の例を図6を参照して説明す
る。
【0053】put/getデーモンは通常はいずれか
のPUのユーザプログラムからのput/get要求待
ちでブロック状態にある(601)。put/get関
数コールによりput/get要求を受信すると、それ
がput要求であるかget要求であるかによって分岐
し(602)、各々に対応する処理に入る。put要求
であった場合には、まず送信されてくるウィンドウ識別
子とインクリメント値を読み込んで記憶し(603)、
put要求元プログラムにackを返す(604)。次
いで、put要求元から送信されてくるメッセージ本体
を受信して記憶し(605)、メッセージをすべて受診
すると自PU上の利用者プログラムにたいして割り込み
を発生する(606)。(この割り込みによって利用者
プログラム側ではputハンドラがコールされ、受信待
ち状態となる。)デーモンは利用者プログラムに対し
て、603にて記憶したウィンドウ識別子を送信し、肯
定応答(ack)または否定応答(nack)を待って
処理を分岐する(610)。ackを受け取った場合に
は、当該ウィンドウはロック状態にはないので、605
にて記憶したメッセージ本体を利用者プログラムに送信
して処理を終了する。nackを受け取った場合には、
当該ウィンドウはロックされているので、メッセージを
破棄して処理を終了する。一方602にてget要求へ
分岐した場合には、要求元PUからウィンドウ識別子を
受け取り(612)、自PU上の利用者プログラムに割
り込みをかける(613)。(この割り込みによって利
用者プログラム側ではgetハンドラがコールされ、受
信待ち状態となる。)デーモンは利用者プログラムに対
して、612にて記憶したウィンドウ識別子を送信し、
肯定応答(ack)または否定応答(nack)を待っ
て処理を分岐する(618)。ackを受け取った場合
には、当該ウィンドウはロック状態にはないので、利用
者プログラムのget処理ハンドリング関数よりメッセ
ージが送られてくる。これを記憶し、get要求元に送
信して処理を終了する(616,617)。nackを
受け取った場合には、当該ウィンドウはロックされてお
りメッセージは送られてこないので、get要求元にエ
ラーコードを返す(619)。
【0054】以上がput/getデーモンの実現方法
の例である。
【0055】
【発明の効果】本発明のリモートメモリ転送制御方式に
よれば、メッセージパシングライブラリを用いたput
/get方式のメッセージ通信において、put/ge
t用のメモリ領域を利用者プログラム中からロック、ア
ンロックすることが可能となる。これによって利用者は
put/get用のメモリ領域に複数のPUからのデー
タが上書きされたり、不正なデータが読みだされたりす
ることを防止することができ、put/get方式によ
るメッセージ通信をより安全に行なうことができるよう
になる。
【0056】また、本発明のリモートメモリ転送制御方
式によれば、何等かの原因でロックされたメモリ領域に
たいして誤ったput/getがなされた場合に、これ
を検出することができる。これによって利用者は、適当
なエラーリカバリをプログラム中に組み込むことが可能
となり、put/get方式を用いて信頼性の高いプロ
グラムを作成することができる。
【図面の簡単な説明】
【図1】本発明の実施例の全体構成図。
【図2】ウィンドウ情報テーブルの説明図。
【図3】ウィンドウ生成関数の動作説明図。
【図4】put関数の動作説明図。
【図5】get関数の動作説明図。
【図6】put/getデーモンプロセスの動作説明
図。
【図7】putハンドラの動作説明図。
【図8】getハンドラの動作説明図。
【符号の説明】
101,102...要素計算機 103,104...CPU 105,106...メモリ 107...通信路 108,109...オペレーティングシステム 110,111...利用者プログラム 112,113...put/getデーモンプロセス 114,115...メッセージパシングライブラリ 120,121...put/get割り込みハンドラ 122,123...put/get用ウィンドウ。

Claims (3)

    【特許請求の範囲】
  1. 【請求項1】複数台の計算機を通信路によって結合して
    なり、該計算機がデータ転送先の計算機のメモリ領域を
    指定してデータ転送を行う並列計算機におけるデータ転
    送制御方法であって、 各々の計算上で、他の計算機上で実行されているプログ
    ラムからデータの読み出し、書き込みを行なうことので
    きるメモリ領域を、自計算機上で実行されているプログ
    ラムから任意個数指定し、 該指定された複数のメモリ領域の各々について、他の計
    算機上で実行されているプログラムからのデータの読み
    出しおよび書き込みが禁止されていることを示す情報を
    保持し、自計算機上で実行されているプログラムから該
    情報を制御することにより、該メモリ領域へのデータの
    読みだしおよび書き込みを禁止することを特徴とする並
    列計算機におけるデータ転送制御方法。
  2. 【請求項2】該指定された複数のメモリ領域のうち、他
    の計算機上で実行されているプログラムからのデータの
    読み出しおよび書き込みを禁止された該メモリ領域に対
    し、他の計算機で実行されているプログラムからデータ
    の読み出しが要求された場合、該他の計算機上のプログ
    ラムに対しエラーを通知することを特徴とする請求項1
    記載の並列計算機におけるデータ転送制御方法。
  3. 【請求項3】該指定された複数のメモリ領域のうち、他
    の計算機上で実行されているプログラムからのデータの
    読み出しおよび書き込みを禁止された該メモリ領域に対
    し、他の計算機上で実行されているプログラムからデー
    タの書き込みが要求された場合、該データを破棄し、 該データを破棄した計算機において、該データの破棄
    を、該計算機上で実行されているプログラムに対して通
    知することを特徴とする請求項1記載の並列計算機にお
    けるデータ転送制御方法。
JP7307111A 1995-11-27 1995-11-27 並列計算機におけるデータ転送制御方法 Pending JPH09146903A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP7307111A JPH09146903A (ja) 1995-11-27 1995-11-27 並列計算機におけるデータ転送制御方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP7307111A JPH09146903A (ja) 1995-11-27 1995-11-27 並列計算機におけるデータ転送制御方法

Publications (1)

Publication Number Publication Date
JPH09146903A true JPH09146903A (ja) 1997-06-06

Family

ID=17965172

Family Applications (1)

Application Number Title Priority Date Filing Date
JP7307111A Pending JPH09146903A (ja) 1995-11-27 1995-11-27 並列計算機におけるデータ転送制御方法

Country Status (1)

Country Link
JP (1) JPH09146903A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6351798B1 (en) 1998-06-15 2002-02-26 Nec Corporation Address resolution unit and address resolution method for a multiprocessor system
WO2006004196A1 (ja) * 2004-07-02 2006-01-12 Nec Corporation マルチプロセッサシステムおよびメモリアクセス処理方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6351798B1 (en) 1998-06-15 2002-02-26 Nec Corporation Address resolution unit and address resolution method for a multiprocessor system
WO2006004196A1 (ja) * 2004-07-02 2006-01-12 Nec Corporation マルチプロセッサシステムおよびメモリアクセス処理方法
US7664900B2 (en) 2004-07-02 2010-02-16 Nec Corporation Multiprocessor system and method for processing memory access

Similar Documents

Publication Publication Date Title
US5423044A (en) Shared, distributed lock manager for loosely coupled processing systems
US6343338B1 (en) System and method for synchronizing disparate processing modes and for controlling access to shared resources
US6633925B2 (en) Operating system for generating overlapped input-output requests to a device in a disk array storage
US7870296B2 (en) High availability system and execution state control method
US6735636B1 (en) Device, system, and method of intelligently splitting information in an I/O system
US6446153B2 (en) Shared embedded microcontroller interface
US6636908B1 (en) I/O system supporting extended functions and method therefor
US5392397A (en) Command execution system for using first and second commands to reserve and store second command related status information in memory portion respectively
US6338095B1 (en) Data transfer method for reduced number of messages by message passing library and direct intermemory data transfer library and computer system suitable therefor
JPH06161932A (ja) 入力/出力制御装置および方法
US6081664A (en) Method for monitoring a BIOS
US7080128B2 (en) Inter-processor communication method using a disk cache in a network storage system
US6986009B1 (en) Intercepting control of a host I/O process
EP1214651A2 (en) Semaphore control of shared-memory
JPH09146903A (ja) 並列計算機におけるデータ転送制御方法
JPH04291660A (ja) プロセッサ間通信方法およびそのための並列プロセッサ
JP3536219B2 (ja) 分散メモリ保護管理装置
JP2710587B2 (ja) 情報処理システム
US6247093B1 (en) Data processing apparatus for executing synchronous instructions prior to executing asynchronous instructions
JPH07234850A (ja) マルチプロセッサの装置と方法
JP2001101080A (ja) 空きバッファ管理方法
JPH02132548A (ja) 並列プロセツサのデバツグ支援方式
JPH02188863A (ja) マルチプロセッサシステム
JPH10143444A (ja) 障害処理方式
JPS6388644A (ja) 中央処理装置