JP3003418B2 - プロセッサ間データ通信方法 - Google Patents

プロセッサ間データ通信方法

Info

Publication number
JP3003418B2
JP3003418B2 JP4256155A JP25615592A JP3003418B2 JP 3003418 B2 JP3003418 B2 JP 3003418B2 JP 4256155 A JP4256155 A JP 4256155A JP 25615592 A JP25615592 A JP 25615592A JP 3003418 B2 JP3003418 B2 JP 3003418B2
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.)
Expired - Fee Related
Application number
JP4256155A
Other languages
English (en)
Other versions
JPH06110845A (ja
Inventor
正明 岩嵜
寛之 千葉
直樹 宇都宮
浩二 薗田
聡 吉沢
雅彦 山内
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 JP4256155A priority Critical patent/JP3003418B2/ja
Priority to US08/126,088 priority patent/US5659777A/en
Priority to GB9319816A priority patent/GB2271006B/en
Priority to GB9602317A priority patent/GB2295473B/en
Publication of JPH06110845A publication Critical patent/JPH06110845A/ja
Priority to US08/759,890 priority patent/US5867656A/en
Application granted granted Critical
Publication of JP3003418B2 publication Critical patent/JP3003418B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/17Interprocessor 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)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computer And Data Communications (AREA)
  • Multi Processors (AREA)
  • Communication Control (AREA)

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明はネットワークで接続され
たコンピュータ・システム間のデータ通信方式に関わ
る。特に並列処理等に要求される低オーバヘッドの高速
通信機能の実現に適している。
【0002】
【従来の技術】分散処理システムあるいは分散メモリア
ーキテクチャの並列処理システムにおけるプロセス間通
信では、各ノードに送信プロセスや受信プロセスが同時
に複数存在し、各ノードの送信プロセスから他のノード
の受信プロセスへデータを転送する必要がある。この
際、各ノードで実行されるプロセスは、仮想メモリ空間
を使用するのが普通である。これに対し、ハードウェア
のレベルでのネットワーク通信機能は、ある送信ノード
から指定された受信ノードへデータを転送するのみであ
る。即ち、ハードウェアのレベルでは、受信ノードを指
定してパケット単位でデータ転送を行なう機能を提供し
ているのみである。
【0003】一般的に、このソフトウェアとハードウェ
アの間のギャップを埋めるため、オペレーティング・シ
ステムは以下の様な処理を行っている。
【0004】1) バッファリング … 受信ノード側にお
いて、受信プロセスが走行していない場合(一般にrecie
veを発行した受信プロセスはデータが到着するまでbloc
k(休止)状態となっている)、一旦受信データをカーネル
内の受信バッファに受け取り、受信プロセスが再び実行
状態になった後、カーネル内の受信バッファから受信プ
ロセスの受信領域へコピーする処理である。
【0005】2) パケット・ヘッダの付加と削除 … 送
信側では、各パケット毎に送信プロセスや受信プロセス
等を識別するためのヘッダ情報を付加する。また、受信
側では、各パケットからこのヘッダ情報を削除する。
【0006】3) セグメント化とリアセンブル … セグ
メント化は、送信しようとするデータの量が大きく、ネ
ットワーク上で1度に転送できる単位(パケットの大きさ
の上限値)を越える場合、送信データを複数のパケット
に分割する処理である。リアセンブルは、分割されて到
着したデータをもとの連続するデータに再構成する処理
である。
【0007】4) マルチプレキシングとデマルチプレキ
シング … マルチプレキシングは、送信側で複数のプロ
セスから出される送信要求を逐次化して、パケットとし
て順番にネットワークに送り出す処理である。デマルチ
プレクキシングは、ネットワークから到着したパケット
をどの受信プロセスに渡すかの分配をつかさどる処理で
ある。
【0008】これらの処理の詳細については、例えば、
Douglas E. Comer, David L. Stevens共著InternetwORk
ing With TCP/IP Volume 2(ダグラス・イー・コマー、
デビッド・エル・スティーブンス共著インターネットワ
ークキング・ウィズ・ティーシーピー/アイピー・ボリ
ューム・ツー)14頁から36頁,103頁から121頁等に解説さ
れている。
【0009】上述のバッファリング、パケット・ヘッダ
の付加と削除、マルチプレキシングとデマルチプレキシ
ング等の処理は、汎用的なノードをまたがるプロセス間
通信の機能を実現する。しかしながら、当然これらの処
理に要するソフトウェアの実行ステップ数は、通信処理
に伴うオーバヘッドに加算される。特にノード間通信の
高速性が要求される用途、例えば高速な画像転送、ある
いは並列演算処理等のアプリケーションを実現しようと
すると、この通信オーバヘッドが問題となる。
【0010】
【発明が解決しようとする課題】これらの問題の内、主
として第1の問題を解決するために、本出願人は、いく
つかの特許出願をした。
【0011】例えば、特願平3ー56469では、受信
ノードにおいて、転送データを格納するデータ受信バッ
ファ領域をそのノードの物理メモリ上に常駐させる方式
を提案している。さらに、特願平3ー241094で
は、送信ノードおよび受信ノードの双方において、転送
データを格納する領域を物理的なメモリ上に常駐させる
方式(以下、これを主記憶常駐化通信方式と呼ぶ)を提
案した。
【0012】特に後者によれば、ユーザ・アプリケーシ
ョン空間上の主記憶常駐化された領域間で直接データ転
送を行なう機能を提供している。即ち、送信ノード及び
受信ノードの双方で、転送データ領域を物理メモリ上に
常駐させ、送信ノード側の物理メモリから、受信ノード
側の物理メモリへ直接データを転送する手法が用いられ
る。
【0013】送受信データ領域を主記憶常駐化する通信
方式では、送信側で受信側のデータ書き込みアドレスを
指定する必要がある。
【0014】即ち、転送データのヘッダ内に受信側のデ
ータ書き込みアドレス情報を挿入し、受信側でこのアド
レス情報に従って、受信データを主記憶上に書き込む必
要がある。
【0015】なお、特開平4-40551や特開平1-194056等
では、送信ノードがデータを転送するときに、受信側の
メモリ内の、そのデータの書き込みアドレスをそのデー
タともに転送することが記載されている。しかし、これ
らの技術は、各ノードで実行されるプログラムが仮想メ
モリ空間を使用する場合の技術は記載されていない。
【0016】上述の主記憶常駐化通信方式は原理的には
単純であるが、実用上以下の様な課題を抱えている。
【0017】課題2)先に出願した特願平3ー5646
9、さらに、特願平3ー241094では、受信側の仮
想アドレスを指定してデータを送信し、受信側で仮想ア
ドレスから物理アドレスへ変換する方式を採用した。
【0018】しかし、この受信側でアドレス変換を行な
う方式には欠点がある。
【0019】ノード数の多いシステムでは、多数の送信
ノードから一つの受信ノードへのパケットの集中が発生
する。この様な状況は、プログラムや初期データのロー
ディング時に、ファイルが存在するノードへのファイル
アクセス要求が集中するといった場合に発生する。ま
た、演算の途中でもブロードキャスト(一斉放送)を行
なった場合に、それに対する応答がブロードキャスト元
に一斉に返ってくる場合にも同様な状況が発生する。
【0020】この様な状況、例えば63台の送信ノードか
ら1台の受信ノードにパケットが集中する様な場合、単
純には受信側は送信側のおよそ63倍の性能を要求され
る。このため、受信ノードの受信処理オーバヘッドは極
力小さくする必要がある。
【0021】この点では、受信側でアドレス変換を行な
う方式は不利であり、本発明の送信側で受信側の物理ア
ドレスを指定する方式が、受信処理オーバヘッドを低減
できて有利である。
【0022】課題2) 受信領域へのオーバライト回避が
困難 である。
【0023】バッファリングを行わず受信プロセスの仮
想アドレス空間にデータを直接書き込む主記憶常駐化通
信方式では、データ受信によって、受信側のプロセスが
データを破壊される可能性が出てくる。即ち、受信側の
プロセスが演算に使用しているデータの上に、受信デー
タが上書き(オーバライト)されることを抑止できない。
【0024】課題3) 高速ネットワークの転送性能に見
合う低オーバヘッドの送受信同期手段の実現が困難 で
ある。
【0025】上記のオーバライトを抑止するには、送信
処理(send)と受信処理(receive)の実行タイミングを同
期させる必要がある。例えば、receiveより先にsendが
発行された場合、どうやって送信側と受信側のタイミン
グを整合させるかという問題が生じる。
【0026】課題5)ソフトウェア・バグ等によって発
生するデータの誤転送を検出することが困難 である。
【0027】主記憶常駐化通信方式ではバッファリング
が行なわれず、受信データが受信側のプロセスの仮想ア
ドレス空間上に直接書き込まれるため、誤転送や不当転
送によって引き起こされる受信側のメモリ内容の破壊を
検出することが困難となる。
【0028】課題5) 転送データ領域が複数のページに
またがる場合の処理が複雑である。
【0029】転送データ領域が複数のページにまたがる
場合、送受信側ともに転送データ領域を単に主記憶常駐
(ページ固定)にしただけでは、これらの仮想ページが物
理メモリ上で連続アドレスに割り当てられている保証は
ない。このため、送信ノードにおいて、多数のページか
ら転送すべきデータおよびそれらのデータの転送に用い
るパケットヘッダを高速に読み出すための処理が複雑に
なる。あるいは、それを高速化しようとすると、そのた
めのハードウエアが必要になる。この問題は、受信側ノ
ードでも受信した複数のページのデータおよびパケット
ヘッダを書き込むときに生じる。
【0030】本願発明の第1の目的は、主記憶常駐化通
信方式を採用して場合の、データ受信ノードでのデータ
受信時の処理を軽減し得るプロセッサ間データ通信方法
を提供することにある。
【0031】本願発明の第2の目的は、主記憶常駐化通
信方式を採用して場合の、データ受信ノードでのデータ
のオーバライトを防止し得るプロセッサ間データ通信方
法を提供することにある。
【0032】本願発明の第3の目的は、主記憶常駐化通
信方式を採用して場合の、複数のノードでの処理の同期
を取り得るプロセッサ間データ通信方法を提供すること
にある。
【0033】本願発明の第4の目的は、主記憶常駐化通
信方式を採用して場合の、アクセス権限のチェックが容
易になし得るプロセッサ間データ通信方法を提供するこ
とにある。
【0034】本願発明の第5の目的は、主記憶常駐化通
信方式を採用し、データ送信領域およびデータ受信領域
が複数のページにまたがる大きさを有する場合にそれら
に含まれるデータおよびそれらのデータの転送に用いる
パケットヘッダを高速に読み出しあるいは書き込みする
ことが出来るプロセッサ間データ通信方法を提供するこ
とにある。
【0035】
【課題を解決するための手段】本願第1の発明では、送
信データ領域と受信データ領域とをそれぞれのノードの
物理メモリ上に常駐化させ、実際のデータ転送を開始す
る前に、この受信データ領域の物理アドレス空間上での
アドレスを送信ノードに記憶しておき、送信ノードから
受信ノードにデータを転送するときに、転送データにこ
のアドレスを付加して転送する。
【0036】より望ましい態様では、受信ノードにおい
て受信データ領域をその物理メモリに割り当てたとき、
受信ノードから送信ノードにこのアドレスを転送し、送
信ノードでそれを記憶する。
【0037】本願第2の発明では、受信側プロセスの仮
想アドレス空間上の受信データ領域に対して、2面の物
理メモリ領域(A面とB面)を割り当て、受信側において
受信処理の実行に同期して、仮想ページと物理ページの
マッピングをA面とB面交互に切り替えるページ変換切り
替え処理を実行し、かつ、送信側において送信処理の実
行に同期して、受信側のデータ書き込み物理ページをA
面とB面交互に切り替える受信ページ切り替え処理を実
行する。
【0038】本願第3の発明では、各ノード上のプロセ
スが同一のプログラムコードを実行し、対称的に他ノー
ド上のプロセスと相互にデータ交換を繰り返す並列演算
処理方式において、各プロセス間のデータ交換に上記の
通信方式を用い、各プロセスが全ての相手プロセスへの
送信を完了してから、相手プロセスからの受信を待つよ
うにする。
【0039】本願第4の発明では、実際のデータ転送を
開始する前に、受信データ領域へのアクセス権コードを
送信側に通知して、送信側がこのアクセス権コードを付
与してデータ転送を行い、データ受信時にアクセス権コ
ードの正当性を検査する。
【0040】本願第5の発明では、送信データ領域およ
び受信データ領域として、それぞれ実メモリを仮想メモ
リに割り当てる単位であるページの大きさを有し、その
境界に一致する境界を有する離散的に位置した複数の部
分データ送信領域あるいは複数の部分データ受信領域を
確保するとともに、それぞれの複数の部分データ送信領
域あるいは部分データ受信領域の前方に隣接した位置
に、それぞれのデータの転送に使用するパケットヘッダ
を保持する複数の部分ヘッダ送信領域あるいはそれぞれ
のデータとともに受信したパケットヘッダを保持するた
めの複数の部分ヘッダ受信領域を確保し、一つのパケッ
トヘッダと部分データを続けて読み出し、あるいは続け
て書き込む。
【0041】より望ましくは、複数の部分パケット送信
領域と複数の部分データ送信領域を交互には位置し、複
数の部分パケット受信領域と複数の部分データ受信領域
を交互に配置する。
【0042】
【作用】本願第1の発明では、受信ノード内の受信デー
タの書き込みアドレスは、送信ノードから転送されるの
で、受信ノードは、書き込みアドレスを決定するための
処理あるいは特別な回路を要しない。
【0043】本願第2の発明では、受信領域の各ページ
に対してそれぞれ2つの物理ページを割り当てること
で、ダブル・バッファリングが可能となる。即ち、A面
を使用して演算を行なっている場合には、B面側にデー
タを受信することができる。受信側でのA面とB面の切り
替えは、受信処理ルーチンの内部でオペレーティング・
システムが自動的に行なうことができるので、ユーザ・
プログラムが誤って受信処理ルーチンを呼び出さない限
り、受信データ領域にオーバライトすることはない。ま
た、送信側でのデータ書き込みアドレスの指定も、送信
処理ルーチンの内部でオペレーティング・システムが自
動的に行なうことができるので、ユーザ・プログラムが
誤って送信処理ルーチンを呼び出さない限り、受信デー
タ領域にオーバライトすることはない。
【0044】本願第3の発明では、相互に通信するプロ
セス間で自動的に同期をとるデータフロー的な動作を行
なわせることができ、データ転送によって送受信同期を
図ることが出来る。
【0045】本願第4の発明では、アクセス権コードの
一致検査等の簡単な方法で、正当な通信相手以外からの
プログラム・バグ等による不当なデータ転送を検出する
ことができる。
【0046】本願第5の発明では、複数のページにまた
がる大きさのデータとそれらに対するパケットヘッダと
を高速に読み出しあるいは書き込みすることが出来る。
【0047】
【実施例】次に図面を用いて本発明の一実施例を詳細に
説明する。
【0048】以下、§1では本発明の適用対象となる分
散並列処理システムのハードウェア構成および各ノード
の物理メモリ空間の構成について、§2では主記憶常駐
化通信の動作概要とプロトコルについて、§3では分散
並列処理システムのソフトウェアの構成概要について、
§4ではこの分散並列処理システム上でのアプリケーシ
ョン・プログラムの動作概要について、§5ではこのア
プリケーション・プログラムへの主記憶常駐化通信の適
用方法、およびダブル・バッファリングとデータ・フロ
ー制御を組み合わせた並列処理方式(クロス・カスケー
ド・データ・ストリーム方式)について説明する。
【0049】§1.1. ハードウェア構成概要 図1から図3に分散並列処理システムのハードウェア構成
を示す。システム全体は、ネットワーク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も
接続している。
【0050】受信時のハードウェアの動作を以下に説明
する。受信回路503がネットワーク402からデータを受信
すると、一旦これを受信バッファ・メモリ507に蓄え、
受信割り込み信号線511を介して、DMA内蔵プロセッサ50
1へ割り込みを発生する。DMA内蔵プロセッサ501は、シ
ステム・バス406を介して、このデータを受信バッファ
・メモリ507から主メモリ404へDMA転送する。この転送
が完了すると、DMA内蔵プロセッサ501はリセット信号線
510を介して、受信回路508にリセット信号を送る。この
リセット信号によって、受信回路508は次のデータをネ
ットワーク402から受信可能となる。またこれと同時
に、DMA内蔵プロセッサ501はシステム・バス406を介し
てMPU403に割り込みを発生し、データ受信を通知する。
【0051】送信時のハードウェアの動作を以下に説明
する。送信処理では、まず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に割り込み
を発生しデータ送信完了を通知する。
【0052】MPU403からのDMA内蔵プロセッサ501の起動
は、NIA制御レジスタ513に転送データの先頭アドレスを
設定することで行なう。また、MPU403はNIA状態レジス
タ514を読み取ることでNIAの状態をセンスすることがで
きる。
【0053】§1.2. 物理メモリ空間の構成 次に、本実施例のシステムにおける各ノードの主メモリ
104が使用する物理アドレス空間の構成を概説する。
【0054】図4に示すように、送受信データ領域とし
て使用するためのページ固定領域1308を各ノードの物理
アドレス空間1340上に確保する。物理アドレス空間の
内、ページ固定領域1308として使用する領域のサイズ
は、各ノードのオペレーティング・システムの起動(ブ
ート)時に設定する。具体的には、パラメータRAM(不揮
発性メモリ)領域1331中にページ固定領域1308の先頭を
指す境界設定ポインタ1303を記憶させておき、ブート時
にオペレーティング・システムがこれを読み込む。
【0055】仮想アドレス空間1350の内、ページ固定領
域1308上にマッピングされた仮想ページ(図4の斜線部13
21)は、オペレーティング・システムの自動ページング
の対象から除外し、物理メモリ領域(図4の斜線部1322)
上に常駐させる。未使用領域ポインタ1320は、ページ固
定領域1308の空き領域先頭を指し、主記憶常駐領域の割
り当てや解放を行なうたびにオペレーティング・システ
ムが更新する。
【0056】OS常駐領域1305には、オペレーティング・
システムを構成するカーネル・コード1310やカーネル・
データ1311を格納する。また、バッファ領域1306はディ
スク装置408等との入出力バッファ1312として使用す
る。ページング領域1307には、カーネル・スタック131
3、ユーザ・スタック1314、ユーザ・コード1315、ユー
ザ・データ1316等のプロセス毎に必要な情報を格納す
る。ブートROM1330は電源投入後、オペレーティング・
システムをディスク装置408からローディングするため
のコードを格納している。I/Oマッピング領域1309は、N
IA405やSCSIコントローラ407の制御レジスタをアドレス
空間上にマッピングするために使用する。
【0057】§2. 主記憶常駐化通信プロトコル ここでは、主記憶常駐化通信の動作概要およびプロトコ
ル(通信手順)について説明する。
【0058】まず、動作概要について説明する。図5
は、送信ノード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にデータ
を転送する。これらによって、データ転送によるオーバ
ーライトの問題を解消する。
【0059】次に、主記憶常駐化通信プロトコルの概略
を図6を用いて説明する。尚、文中の"combuf_xxxx"は、
主記憶常駐化通信の機能を使用するためにユーザ・プロ
グラムが呼び出すオペレーティング・システムのルーチ
ンの名称である。以下本明細書では、主記憶のページ固
定領域1308上に常駐化させた送受信データ領域をcombuf
と呼ぶ。尚、ページ固定領域1308へのcombufの割り当て
方法については§2.1および§5.2に詳説する。
【0060】1) 送信側、受信側ともにcombuf_allocを
発行して、ページ固定領域1308上にcombufを割り当て
る。
【0061】2) 送信側はcombuf_openを発行して、受信
側combufとの間のコネクションを確立する。
【0062】3) 送信側はcombuf_writeを発行して、受
信側combufへデータを送信する。
【0063】4) 受信側はcombuf_watchを発行して、デ
ータの到着を待つ。
【0064】5) 送信側はcombuf_closeを発行して、受
信側combufとの間のコネクションを破棄する。
【0065】6) 送信側、受信側ともにcombuf_freeを発
行して、ページ固定領域1308上のcombufを解放する。
【0066】上記の1)〜6)の各処理の内、1)および2)は
データ転送に先立つ前処理であり、3)および4)はそれぞ
れ送信処理と受信処理であり、5)および6)はデータ転送
完了後の後処理である。主記憶常駐化通信では、前処理
を一度行った後、データの送受信処理を多数回繰り返す
使い方を前提としている。以下、各処理の詳細について
説明する。
【0067】§2.1. combuf_alloc処理 combuf_allocルーチンは、ユーザ・プログラムを実行す
るプロセス(以下ユーザ・プロセスと呼ぶ)の仮想アドレ
ス空間の一部を、主メモリ404上のページ固定領域1308
に割り当てる機能を提供する。ユーザ・プログラムは以
下のパラメータを指定してcombuf_allocを呼び出す。
【0068】1) 先頭仮想アドレス … combufとして使
用するデータ領域の先頭仮想アドレスを指すポインタ。
先頭仮想アドレスはページ境界に整合していなければな
らない。
【0069】2) 領域サイズ … combufとして使用する
データ領域のサイズ(単位はバイト)。本実施例では、
領域サイズはページサイズの整数倍に制限する。
【0070】3) 種別フラグ … 送信データ領域、受信
データ領域の区別を指定する。
【0071】図7に送信データ領域に対するcombuf_allo
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には、ダブル・バッファリングを行う
ためにこの領域のページ数の倍の物理ページを割り当て
る。
【0072】例えば、受信データ領域に属する図9の仮
想Page1には、物理ページ群1705のうち、A面用の物理Pa
ge5(1703)とB面用の物理Page7(1704)を割り当ててい
る。また、図9および図10に示す様に、データ転送に必
要なパケットのヘッダ部2310を格納するために、ページ
単位に余分に1ページのメモリを割り当てる。即ち、ユ
ーザ・プロセスの仮想ページには奇数番目の物理ページ
を割り当て、ヘッダ部2310を格納するために偶数番目の
物理ページを使用する。
【0073】物理ページの確保が完了すると、パラメー
タで指定されたデータ領域がマッピングされていた古い
物理ページの内容を、新たに割り当てた物理ページにコ
ピーし(処理1903,2003)、このデータ領域の各仮想ペー
ジが新しい物理ページにマッピングされるようにページ
変換テーブル1702(図9)を更新する(処理1904,2004)。
【0074】combuf_allocによって割り当てられたcomb
ufには、ノード内で一意なcombuf番号をオペレーティン
グ・システムが付与する。ここでは、簡単化のために、
各combufには、あらかじめその番号が定められているも
のとする。combuf_allocルーチンはリターン値としてこ
のcombuf番号を返す。ユーザ・プログラムは、combuf番
号とノード番号の対によって、システム全体に渡って一
意に各combufを識別することができる。
【0075】最後にcombuf_allocルーチンの内部では、
新たに割り当てたcombufを図24に示すローカルcombuf管
理テーブル(LCT)2100に登録する(処理1905,2005)。LCT2
100は、combuf番号によってインデクス付けされ、アク
セス権コード、ダブルバッファの有無、先頭物理アドレ
ス, combufのサイズ等を各combuf毎に記憶する。LCT210
0にはノード内のcombufのみを登録する。アクセス権コ
ードは、ノード番号とクロック値(combuf_alloc処理を
実行した時刻)の対で、combuf_alloc発行毎に各combuf
に割り当てる。
【0076】§2.2. combuf_open処理 図11に示すcombuf_open処理は送信側と受信側のコネク
ションを確立する。送信側はcombuf_open処理によっ
て、受信側のcombufの先頭物理アドレスやサイズ,アク
セス権コード等の情報を獲得する。ユーザ・プログラム
は以下のパラメータを指定してcombuf_openを呼び出
す。
【0077】1) 受信ノード番号 … 受信側のノード番
号。
【0078】2) 受信combuf番号 … 受信側のcombuf番
号。
【0079】combuf_openルーチンの内部では、図25に
示す送信側のリモートcombuf管理テーブル(RCT)2200に
受信側のローカルcombuf管理テーブル(LCT)2100の内容
の一部をコピーする処理を行なう。このため以下に述べ
る様に、combuf_open処理には送信側OSで処理する部分
と受信側OSで処理する部分とがある。
【0080】まず、送信側OSが受信側OSにcombuf番号を
指定して、受信combufに対応する受信側LCT2100検索要
求メッセージを送信する(処理2701)。この通信にはバッ
ファリングを行う通常のメッセージ通信を用いる。受信
側OSは指定された受信combufに対応するLCT2100のエン
トリを検索(処理2702)し、その検索結果として、上述し
たようなこのテーブルの内容を送信側OSへ返送する(処
理2703)。送信側OSが検索結果を受信し(処理2704)、受
信combufに関する情報を自ノードのRCT2200に登録する
(処理2705)。
【0081】さらに、送信側と受信側の間で使用する受
信combufの面を一致させるため、最初に使用する受信バ
ッファ面をB面側の物理ページに初期設定する(処理270
6)。この処理は具体的にはRCT2200のバッファ面欄2205
に1を設定する。
【0082】§2.3. ローカルcombuf管理テーブルとリ
モートcombuf管理テーブル 図24のローカルcombuf管理テーブル(LCT)2100には自ノ
ード内のcombufのみを登録する。他ノードとの通信を行
なうには、他ノードのcombufの物理アドレスやサイズ、
あるいはアクセス権コードを知る必要がある。この目的
で使用するのが図25に示すリモートcombuf管理テーブル
(RCT)2200である。
【0083】相手側のLCT2100へのアクセスは、§2.2に
述べた様にノード間を渡る通信が必要となる。このた
め、相手側のLCT2100へのアクセスは、自ノード内のLCT
2100へのアクセスに比べオーバヘッドが大きい。combuf
_open処理においてRCT2200に受信combufの先頭物理アド
レス等の情報をキャッシングすることにより、データ送
信(combuf_write)ルーチンの中で、相手側のLCT2100に
アクセスする必要がなくなり、前述のオーバヘッドを解
消することができる。
【0084】LCT2100及びRCT2200の各フィールドは以下
の意味を持つ。
【0085】1) combuf番号 … ノード内で一意なcombu
fを識別するための番号。
【0086】2) アクセス権コード … combuf番号のcom
bufへ受信データを書き込むために必要なアクセス権を
示すコード。
【0087】3) ダブルバッファ … ダブル・バッファ
リングの有無を示す。送信combufはダブル・バッファリ
ング無し、受信combufはダブル・バッファリング有り。
【0088】4) バッファ面 … ダブル・バッファリン
グ有りの受信combufの場合に、LCT2100では演算に使用
している面を示す。RCT2200ではデータを書き込む面を
示す。 5) 先頭物理アドレス … combuf番号のcombufの先頭デ
ータの物理アドレスを示す。
【0089】6) サイズ … combuf番号のcombufのサイ
ズを示す。
【0090】7) ノード番号 … 受信側のcombufが存在
するノードの番号を示す。
【0091】尚、LCT2100はネットワーク・インタフェ
ース・アダプタ(NIA)405とオペレーティング・システム
によって共有する。オペレーティング・システムはLCT2
100の全てのフィールドを読み書きする。NIA405はcombu
f番号をインデクスとして、アクセス権コード・フィー
ルドに読み出しアクセスを行なう。
【0092】オペレーティング・システムは、ユーザ・
プログラムからcombuf_alloc及びcombuf_freeが発行さ
れた場合、LCT2100を更新する。プログラム・バグ等に
よってこの更新処理中にパケットが到着しても誤動作が
発生しない様に、LCT2100のアクセス権コード・フィー
ルドが0の状態でパケットが到着したら、NIA405が主メ
モリ404へデータを書き込まず、MPU403へ割り込みを発
生する。オペレーティング・システムは更新処理を行う
場合、まずアクセス権コード・フィールドに0を書き込
んでから、他のフィールドを更新する。
【0093】§2.4. combuf_write処理 図12に示すcombuf_writeは送信combuf上のデータを受信
combufへ転送する。ユーザ・プログラムは以下のパラメ
ータを指定してcombuf_writeを呼び出す。
【0094】1) 受信ノード番号 … 受信側のノード番
号。
【0095】2) 受信combuf番号 … 受信側のcombuf番
号。
【0096】3) 送信combuf番号 … 送信側のcombuf番
号。
【0097】combuf_writeルーチンの内部では、まず受
信combufのA面側とB面側のどちらへ送信するかを決定す
る。また、combufが複数ページにまたがる大きさの場
合、各ページ毎にcombuf先頭アドレスから受信領域の物
理アドレスを計算する処理も行なう。
【0098】処理2801でリモートcombuf管理テーブル(R
CT)2200のバッファ面欄2205を参照し、受信バッファ面
を決定する。次に、PageSize, HeaderSize, NPage, Rec
vOrg等の変数の初期設定を行なう(処理2802)。変数Npag
eは受信combufのページ数を格納する。変数RecvOrgは受
信combufの先頭物理アドレスを格納する。これは、図20
や図9に示す様に、受信combufのA面側の先頭の奇数物理
ページの先頭アドレスを指す。
【0099】次に、forブロック2803で送信combufの各
ページ毎に送信処理を行なう。各ページ毎に受信側の物
理アドレスを計算する(処理2804)。この際、HeaderSize
を差し引いて、ヘッダのサイズ分だけ物理アドレスを前
方へずらす。これは、送受信側ともに、偶数ページをヘ
ッダ書き込み用にcombuf_alloc処理時に確保している為
である。つまり、本実施例で送信ノードから転送される
メモリアドレスは、転送されるデータの書き込みアドレ
スではなく、それに先行するヘッダの書き込みアドレス
である。
【0100】この計算した受信アドレスRecvAddrをヘッ
ダ2310の受信先物理アドレス欄2305に格納し、その他の
各フィールド2301〜2306を設定し、NIA405に起動をかけ
る。NIA405の起動は、NIA制御レジスタ513にOSが送信パ
ケット2300の先頭物理アドレスを設定することで行な
う。こうしてNIA405は、このパケットを送信先ノードに
ネットワークを介して転送する。以下この動作を送信デ
ータ領域内の複数のページに対して行なう。
【0101】forブロック2803の処理が完了し、送信com
bufの全ページを送信し終えると、次回の送信時に使用
する受信バッファの面を反対側の面に切り替える処理を
行なう。具体的には、if文2808によって変数Sideの値を
反転させ、RCT2200のバッファ面欄2205に反転した変数S
ideの値を格納する。
【0102】尚、図12に示す処理2801, 2808, 2809が、
図5に示す受信ページ切り替え処理105に相当する。
【0103】§2.5. パケット形式 図10に主記憶常駐通信方式で使用するパケットの形式を
示す。各フィールドの意味は以下の通り。
【0104】1) 受信ノード番号2301 … 受信ノード番
号。
【0105】2) 転送データサイズ2302 … 転送データ
バイト数。当該パケットに含まれるヘッダ部分及びデー
タ部分のバイト数の合計。
【0106】3) 受信側combuf番号2303 … 受信ノード
側のcombuf番号。受信側NIA405は、このcombuf番号を用
いて受信側ローカルcombuf管理テーブル(LCT)2100上の
該当エントリを読み出す。
【0107】4) アクセス権コード2304 … 受信側combu
fへのアクセス権限を示すアクセス権コード。受信側NIA
405は、受信データの書き込み開始前に、このアクセス
権コードがLCT2100上のアクセス権コードと一致するこ
とをチェックし、もし2つのアクセス権コードが一致し
ない場合には、不当アクセス権コード割り込みを受信側
MPU403に通知する。
【0108】5) 転送先物理アドレス2305 … 受信デー
タを書き込む物理アドレスを示す。 6) 送信ノード番号2306 … 送信ノード番号。
【0109】8) データ2307 … 送信側combufから受信
側combufへ実際に転送されるデータ。
【0110】§2.6. combuf_watch処理 図13に示すcombuf_watch処理2900は、指定したcombufへ
のデータの到着を待つ受信同期機能を提供する。ユーザ
・プログラムは受信combuf番号をパラメータとしてcomb
uf_watchを呼び出す。
【0111】受信同期処理には、MPU403のみでなく、DM
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に割り込みを発生して異常を通知する。
【0112】アクセス権コードが一致していた場合に
は、DMA内蔵プロセッサ501はパケット・ヘッダ2310中の
受信先物理アドレスを読み出し、パケット・ヘッダを含
む受信データ全体を、NIA上の受信バッファ・メモリ502
から主メモリ404の指定されたアドレスへDMA転送する
(処理2907)。
【0113】このように、本実施例で転送されるデータ
に付されるアドレスは、そのデータの書き込みアドレス
ではなく、そのデータに先行するヘッダのアドレスであ
る。しかし、本実施例では、このヘッダの書き込み位置
に続く位置に受信データをNIA405によりDMA転送でも
って書き込むので、受信ノードでは、データの書き込み
のためのアドレスを決めるための処理あるいはそのため
の特別のハードを要しない。従って、受信ノードに多く
の送信ノードからデータが転送された場合でも、それら
のデータを高速にメモリに書き込むことが出来る。
【0114】さて、DMA転送が完了すると、DMA内蔵プロ
セッサ501はデータ到着を受信プロセスに通知するため
に到着フラグ2308をセットし(処理2908)、MPU403へ割り
込みを発生する(処理2909)。MPU403側の割り込み処理ル
ーチン2905はNIA405へリセット信号を送り、NIA405が次
のパケットの受信が行なえる様にする。尚、図10に示す
様に、到着フラグ2308(図10)は、A面用とB面用とがそれ
ぞれ独立である。それぞれ、各ヘッダ領域の前に1ワー
ド確保する。
【0115】一方、MPU上では上記のDMA内蔵プロセッサ
501の処理と並行してcombuf_watch処理2
900が実行される。この処理では、まず受信バッファ
面の切り替えを行なう。具体的には、LCT2100のバッフ
ァ面欄2105を更新し(処理2901)、ページ管理テーブル17
02(図9)の物理ページ欄を反対側の面に対応する物理ペ
ージを指すように更新する(処理2902)。
【0116】受信バッファ面の切り替えが完了すると、
データが到着し、到着フラグ2308(図10)がセットされる
のをループして待つ(処理2903)。もし、先にデータが到
着して到着フラグ2308がセットされていれば、直ちにル
ープを抜ける。また、データが未到着の場合、DMA内蔵
プロセッサが処理2908で到着フラグ2308をセットするま
で待ち続ける。但し実際にはプログラム・バグ等により
無限ループしない様にループ回数の上限を設ける。デー
タが到着すると到着フラグ2308をクリアして、受信処理
を完了する。
【0117】尚、図13の処理2901と2902が図5に示すペ
ージ変換切り替え処理108に相当する。
【0118】§2.7. combuf_closeとcombuf_free処理 combuf_closeは、combuf_openで登録したリモートcombu
f管理テーブル2200のエントリを消去する。ユーザ・プ
ログラムは通信相手のノード番号とcombuf番号をパラメ
ータとしてcombuf_closeを呼び出す。また、combuf_fre
eは、ローカルcombuf管理テーブル2100から該当エント
リを消去し、combufを解放する。ユーザ・プログラムは
解放するcombuf番号をパラメータとしてcombuf_freeを
呼び出す。
【0119】§3. ソフトウェア構成概要 ここでは分散並列処理システムのソフトウェア構成を図
14を用いて説明する。本システムでは、各ノード401の
ハードウエア806上に図14に示すオペレーティング・シ
ステムを搭載する。図14に示すようにこのオペレーティ
ング・システムは、ローカル・オペレーティング・シス
テム804, メッセージ通信サーバ801, ネームサーバ802
及びプロセス制御サーバ803から構成する。本システム
は、全ノードが同一のオペレーティング・システムを搭
載した均質で対称な分散構成であり、ノード間に主従関
係はなく、全体を集中的に管理するノードも存在しな
い。尚、図14に示すユーザ・プロセス805は、ユーザの
アプリケーション・プログラムを実行するプロセスであ
り、オペレーティング・システムの一部ではない。
【0120】ローカル・オペレーティング・システム80
4は、ノード内でのプロセス生成やスケジューリング,
仮想メモリ管理, ハードウェア資源管理等の機能を実現
する。プロセス制御サーバ803は、任意のノード上に新
たに子プロセスを生成させ、この子プロセス上でユーザ
・プログラムの実行を開始させる機能などのノード間を
渡るプロセス制御機能を提供する。メッセージ通信サー
バ801は、ノード内でのプロセス間通信機能、及びノー
ド間を渡るプロセス間通信機能を提供する。メッセージ
通信サーバ801は通信相手の存在位置をネームサーバ802
に問い合わせ、メッセージの送信先ノードを決定する。
即ち、ネームサーバ802は位置透過なメッセージ通信(デ
ータ転送)が行なえるように、通信相手の名前とその存
在位置との対応関係を管理する機能を提供する。
【0121】ここに述べたノード間を渡るプロセス制御
機能や位置透過なプロセス間通信機能は、その実現方式
や機能仕様の詳細に違いはあるが、多くの分散オペレー
ティング・システムが備える機能である。これらの機能
に関しては、例えば前川守,所真理雄, 清水謙多郎共著
「分散オペレーティング・システム:Unixの次にくるも
の」52頁〜105頁等に解説されている。
【0122】尚、オペレーティング・システムどうしの
メッセージ通信は、通常のカーネル内のバッファリング
を伴う通信方式であり、主記憶常駐化通信方式ではな
い。主記憶常駐化通信方式はユーザ・プロセスどうしの
演算データの交換に用いる。
【0123】§4. アプリケーション・プログラムの動
作概要 ここでは、分散並列処理システム上でのアプリケーショ
ン・プログラムの動作概要について、全ノードで同一の
プログラム・コードを動作させる場合を例に説明する。
この例の様に、全ノードで同一のプログラム・コードを
実行する並列処理方式は、一般にSPMD(Single Program
Multiple Data)と呼ばれる。図15にこのプログラム・コ
ードの処理の流れの概略を示す。このプログラムは、全
ノードに同一のプログラムを起動する初期化処理901を
実行し、ノード内での演算処理902とデータ転送処理903
を繰り返し、所定回数の繰り返しが終了(判定処理904に
て判断)したら、終了処理905を行なう。尚、本実施例で
は、データ転送処理903の部分に主記憶常駐化通信方式
を適用する。
【0124】最初のプログラムの起動は、ネットワーク
402上のいづれかのノード401でプログラムを起動するコ
マンドを投入する。このコマンドを投入した直後の時点
では、そのノード上だけでプログラムが走り始め、まず
初期化処理901の実行を開始する。尚、以下の説明で
は、プログラムの実行に対応してプロセスが生成され、
プログラムの終了とともにプロセスは消滅することを前
提とする。また、プロセスはそれが生成されたノード上
でのみ実行され、それが他のノードへ移動することはな
いことを前提とする。
【0125】図16に初期化処理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が生成される。
【0126】尚、関数remote_execは他のノード上にプ
ロセスを生成し、自プロセスと同じプログラム・コード
をロードして起動する機能を提供する。引き数のchild_
idは、新たに生成する子プロセスの名前(即ち番号)を指
定する。
【0127】一連のプロセス1102はそれぞれ0番プロセ
スと同様に代入文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の判定文がいずれも
偽となるので、これ以上の子プロセスの生成は行なわな
い。
【0128】この例では以上の処理で合計64個のプロセ
スが生成され、並列に動作し始める。これら64個のプロ
セスは、主記憶常駐化通信の前処理1012を実行後、関数
get_my_dataのコール1011によって、それぞれのプロセ
スが処理すべき初期データをロードする。このローディ
ングが完了すると、他のプロセスのデータ・ローディン
グの完了を待つために関数barrierをコール1004し、全
プロセスで同期をとる。最後のプロセスが関数barrier
をコールすると、待ち状態となっていた全プロセスが一
斉に実行を再開する。尚、子プロセスを生成するノード
の決定は、各ノードのプロセス制御サーバ803どうしが
通信し、複数のプロセスをひとつのノードに重複して割
り当てない様に制御する。
【0129】以上の初期化処理901が完了すると、各ノ
ードのプロセスは演算処理902を開始する。演算処理902
が完了すると、他プロセスへのデータ送信と他プロセス
からのデータ受信を行なうデータ転送処理903を行な
う。このデータ転送処理903によって演算処理902の結果
をプロセス間で交換する。判定処理904によって演算の
終了まで、これらの演算処理902とデータ転送処理903を
繰り返す。終了条件が満たされたら各プロセスは終了処
理905を実行し、全ノードでのユーザ・プログラムの実
行が完了する。
【0130】§5. 主記憶常駐化通信の応用 ここでは、領域分割型並列処理を例に、アプリケーショ
ン・プログラムへの主記憶常駐化通信の適用方法、およ
び主記憶常駐化通信とデータ・フロー制御を組み合わせ
た並列処理方式(クロス・カスケード・データ・ストリ
ーム方式, 以下CCDSと記す)について説明する。
【0131】§5.1. 領域分割型並列処理 流体解析問題や構造解析問題などを並列処理する場合、
図18に示す様に配列データを複数の部分配列に分割し、
各ノードがひとつの部分配列を分担して計算する領域分
割型並列処理の手法がよく用いられる。この種の手法で
は部分配列間の境界部分(図18の斜線部分1403)の計算に
際して、隣接するノードとのデータ交換が必要となる。
【0132】以下の説明では、図18に示す8176行×8176
列の配列データに対して並列処理を施す場合を考える。
8176行×8176列の配列を行方向,列方向それぞれ8等分
して、1022行×1022列の部分配列64個に分割する。各ノ
ードのプロセスは、1022行×1022列の部分配列に対して
演算を行ない、上下左右の隣接する4ノードのプロセス
とは、内部処理データ1404以外の境界データ1403を交換
する処理を繰り返す。尚、各要素は8バイト長の倍精度
実数とする。また、図18に示す右端の部分配列8個の右
端1列は、左端の部分配列の左端1列に隣接していると考
える。同様に上端の部分配列8個の上端1行は、下端の部
分配列の下端1行に隣接していると考える。
【0133】また、配列の各要素に対する演算として、
上下左右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列とする。
【0134】尚、「Top(receive)」なる表記は、上側(T
op)に隣接するノードからの境界データを受信(receive)
する領域を意味する。また、「隣接ノード」という言葉
は、「物理的に隣接しているノード」という意味ではな
く、「隣接する部分配列を処理するプロセスが存在する
ノード」という意味で用いる。図18に示す様にX軸方
向、Y軸方向に番号を振ると、同図の斜線のノードはX-Y
座標が6-6で、隣接ノードは6-5, 5-6, 7-6, 6-7となる
(以下、本明細書中ではノード番号はこのX-Y座標で表わ
す)。
【0135】Top(send), Bottom(send), Left(send), R
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の横方
向)の位置を表わす。
【0136】配列Arrayの要素は行方向に連続アドレス
に割り当てる。即ち、Top行やBottom行の行方向の隣接
要素は(仮想)アドレスが連続する。Left列やRight列の
列方向の隣接要素は(仮想)アドレスが不連続になる。こ
のため、列方向の境界データの送信に際しては、データ
を連続アドレスに詰め込むため、配列Arrayから配列Lef
tBuf(send)および配列RightBuf(send)へコピーする。ま
た、列方向の境界データの受信に際しては、配列LeftBu
f(receive)および配列RightBuf(receive)から配列Array
へコピーする。
【0137】§5.2. 仮想-物理マッピング 次に、配列Arrayの主記憶上での配置について説明す
る。尚、以下の説明では、本実施例のシステムのページ
・サイズが4096バイトであることを前提とする。また、
ネットワークを介して転送できるパケットの最大サイズ
は4608バイトで、1ページ分のデータを1パケットで転送
できることを前提とする。
【0138】配列Arrayの先頭、即ち要素Array〔0〕
〔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に割り当てる。
【0139】図20の表に示す物理ページ割り当ての一部
を、図9に図示する。隣接ノードからの境界データを受
信するTop(receive), Bottom(receive), LeftBuf(recei
ve),RightBuf(receive)の部分は、A面とB面の2面を用い
たダブル・バッファリングが行なえる様に、物理ページ
を2面割り当てる。この工夫によって、一方の面で演算
を行なっている間に、他方の面に隣接ノードからのデー
タを受信することが可能となる。
【0140】また、図9に示す様に、ページ固定領域130
8上にページを割り当てる際、偶数番号の物理ページを
使用せず、奇数番号の物理ページのみをユーザ空間(即
ち配列Array等)に割り当てる。この様に一つ置きの物理
ページ、本実施例では奇数物理ページ、のみを配列に割
り当てることで、それらの間に位置する物理ページ、本
実施例では偶数物理ページ、にパケット・ヘッダを挿入
できる。この工夫によって、データのコピー処理を施す
ことなく、あるいは特別のハードを使用することなし
に、送信ノードでの、送信データへのパケット・ヘッダ
の付加や受信ノードでの受信パケットからのパケットヘ
ッダの削除を行なえる。
【0141】§5.3. クロス・カスケード・データ・ス
トリーミング 主記憶常駐化通信方式では、受信側が演算に使用してい
る最中のデータを、送信側からのデータ転送によって破
壊してしまうオーバライトが発生する。§2に述べた様
に、A面, B面を用いたダブル・バッファリング機能をco
mbuf_writeルーチン及びcombuf_watchルーチン内に組み
込むことで、ある程度このオーバライトを低減できる。
しかし、§2に述べた方式でも、受信側がcombuf_watch
を発行する前に、連続してcombuf_writeが2回以上発行
されるとオーバライトが発生する。
【0142】ここでは、データ・フロー的な動作と前述
のダブル・バッファリングの組み合わせにより、上記の
combufへのオーバライトを完全に抑止する並列演算方式
(クロス・カスケード・データ・ストリーミング方式:以
下CCDSと記す)について説明する。この並列演算方式で
は、図15のアルゴリズムを拡張した図21に示すアルゴリ
ズムに従って、各ノードの演算処理を行なう。図21の中
央部分がひとつのノードの処理フローを示す。この図に
は隣接ノードの処理フローも部分的に描いている。ま
た、太い斜めの矢印は隣接ノードとの通信を表している
(作図上4方向の隣接ノードとの通信の内、2方向しか表
示していない)。
【0143】このアルゴリズムは、演算処理を2つのフ
ェーズに分け、隣接ノードからのデータが全て揃うま
で、次の演算フェーズを開始しないデータ・フロー的な
制御を行なう。また、受信combufに割り当てられた2面
の物理ページ(A面側とB面側)をフェーズ毎に交互に用い
て演算を行なう。即ち、A面側物理ページを用いて演算
を行なっているフェーズでは、隣接ノードからのデータ
をB面側物理ページに受信する。
【0144】図27に4方向の隣接ノードとのデータ転送
の手順の詳細を示す。ノード内演算処理が完了した後、
図27のフローに従い、Top, Bottom, Left, Rightの4方
向の隣接ノードに自ノードのデータをcombuf_writeで送
信する。この送信が完了すると、4方向の隣接ノードか
らのデータ受信をcombuf_watchで待つ。
【0145】尚、§2に述べた様にA面, B面のバッファ
面の切り替え処理は、combuf_writeルーチン及びcombuf
_watchルーチンの内部で行なっている。このため、ユー
ザ・プログラム上は、ノード内演算処理902及びデータ
転送処理903のいずれも2つのフェーズを意識する必要は
ない。
【0146】CCDS方式を用いると、隣接ノードからデー
タが到着するまでは、反対側の面の演算に移行しないの
で受信データによるオーバライトの問題を完全に回避で
きる。即ち、図21の制御に従えば、あるノードの演算処
理時間が伸びる等の原因により、ノード間の処理の進捗
に不均衡が生じても、自動的に隣接ノードとの同期が取
れる。隣接ノードは処理が遅れたノードからのデータが
到着しない限り、反対側の面の演算を開始しない。この
様子を図22及び図23に示す。これらの図の斜線部分はA
面を用いた演算フェーズを、白色部分はB面を用いた演
算フェーズを、矢印はB面からA面へのデータ転送、また
はA面からB面へのデータ転送を示す。
【0147】図22は全ノードの処理が均衡して進行して
いる場合を示す。図23はプロセス2のA面側の演算時間が
伸びた場合を示す。プロセス2のA面側の演算時間が伸び
ても、隣接するプロセス1やプロセス3から送られてくる
データはB面側に書き込まれるため、演算途中のデータ
を破壊することはない。また、プロセス1やプロセス3
は、プロセス2からのデータが到着するまで、B面側の演
算を開始しない。
【0148】この様にCCDSでは一種のフィードバック作
用が働くため、あるノードだけが他のノードを追い越し
て、次の演算フェーズに進むことがない。CCDSでは、こ
のフィードバック作用により、全ノードに渡る一斉同期
のハードウェア機構を持たなくても、隣接ノード間の同
期の連鎖作用によってシステム全体に渡る同期を実現す
ることができる。
【0149】(変形例)本実施例では、転送データに付
して転送されるデータが、パケットヘッダの書き込みア
ドレスであったが、パケットヘッダを、転送データを書
き込むページのの前のページにしないときには、データ
と転送するアドレスをそのデータの書き込みアドレスと
すればよい。結局、本発明では、受信側が特別の処理を
することなく、受信データを書き込むことが出来るアド
レスを転送すればよい。
【0150】また、本実施例では、受信ノードでデータ
受信領域をメモリに常駐した後、その領域のアドレスを
送信ノードに転送しているが、本実施例では、このアド
レスに変えて、その領域に先行して位置に確保したヘッ
ダ領域のアドレスを転送してもよい。
【0151】また、このアドレスの転送に変えて、あら
かじめ決めたアドレスの位置に受信データ領域を確保す
るようにすれば、そのアドレスを予め送信ノード側に記
憶しておく方法でもよい。もちろん、本実施例のごと
く、受信バッファ領域を確保する毎に、送信ノードにそ
のアドレスに関連する情報を転送する方法は、受信デー
タ領域を確保する位置の制限が緩和されるのでより望ま
しい。
【0152】
【発明の効果】本発明によって主記憶常駐化通信方式が
抱える諸問題を解消し、きわめて高速なノード間通信を
実現することができる。具体的には、本発明により以下
の効果が得られる。
【0153】1) 受信ノードでの転送データ書き込みの
アドレスを決める処理を減少させられる。
【0154】2) オーバライト回避と送受信プロセス同
期の実現 ダブル・バッファリング機能を備えた主記憶常駐化通信
方式、およびクロス・カスケード・データ・ストリーム
方式によって、受信データ領域へのオーバライトの問題
を解消できる。また同時に、各ノードのプロセスが相互
にデータを転送しあうことで低オーバヘッドの送受信プ
ロセス間同期機能を実現できる。
【0155】3) 複数のページまたがるデータとそれら
の転送のためのヘッダとを簡単な処理により高速に転送
できる。
【0156】3) 不当データ転送の検出と抑止 実際のデータ転送に先立って受信領域へのアクセス権コ
ードを送信側のオペレーティング・システムに伝えるこ
と、及び、転送データと共に返送されてきたアクセス権
コードの正当性を受信側でチェックすることで、プログ
ラム・バグ等による不当データ転送を検出でき、システ
ムの信頼性を高めることができる。
【0157】4) プログラミングの容易性 データの送信,受信と同期して、オペレーティング・シ
ステム内部で受信バッファ面を切り替えることで、ユー
ザ・プログラムのレベルではダブル・バッファリングを
明示的に記述する必要がなくなり、プログラミング作業
が容易になる。
【0158】5) 部分同期の連鎖作用による全体同期 クロス・カスケード・データ・ストリーム方式によっ
て、全ノードでの一斉同期をとらなくても、データを交
換する隣接ノードとの部分同期のみで全体の同期を実現
することができる。部分同期の連鎖作用による全体同期
の実現は、高性能な一斉同期が困難な分散システムや大
規模な並列処理システムにおいて極めて有用である。
【図面の簡単な説明】
【図1】並列処理システムのハードウェア構成を示す
図。
【図2】各ノードのハードウェア構成を示す図。
【図3】ネットワーク・インタフェース・アダプタのハ
ードウェア構成を示す図。
【図4】物理メモリ割り当てを示す図。
【図5】主記憶常駐化通信方式の概要を示す図。
【図6】主記憶常駐化通信プロトコルを示す図。
【図7】送信用combufの割り当て処理を示す図。
【図8】受信用combufの割り当て処理を示す図。
【図9】主記憶常駐化通信領域(combuf)の物理ページへ
のマッピング例を示す図。
【図10】パケット形式を示す図。
【図11】combuf_open処理のフローを示す図。
【図12】combuf_write処理のフローを示す図。
【図13】combuf_watch処理のフローを示す図。
【図14】各ノードのオペレーティング・システムの構
成を示す図。
【図15】アプリケーション・プログラムの処理フロー
を示す図。
【図16】プロセス起動の処理フローを示す図。
【図17】階層的プロセス起動を示す図。
【図18】領域分割型並列処理におけるデータ配列分割
を示す図。
【図19】各ノード内の配列上の転送領域を示す図。
【図20】主記憶常駐通信領域(combuf)の物理ページへ
のマッピング表。
【図21】クロス・カスケード・データ・ストリーミン
グ(CCDS)の処理フローを示す図。
【図22】均一なCCDS動作を示す図。
【図23】不均一なCCDS動作を示す図。
【図24】ローカルcombuf管理テーブルを示す図。
【図25】リモートcombuf管理テーブルを示す図。
【図26】主記憶常駐通信方式の前処理を示す図。
【図27】隣接ノードとのデータ交換処理のフローを示
す図。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 薗田 浩二 東京都国分寺市東恋ケ窪1丁目280番地 株式会社日立製作所中央研究所内 (72)発明者 吉沢 聡 東京都国分寺市東恋ケ窪1丁目280番地 株式会社日立製作所中央研究所内 (72)発明者 山内 雅彦 東京都国分寺市東恋ケ窪1丁目280番地 株式会社日立製作所中央研究所内 (58)調査した分野(Int.Cl.7,DB名) G06F 15/177 676 G06F 13/00 355

Claims (30)

    (57)【特許請求の範囲】
  1. 【請求項1】それぞれ、プロセッサと、そのプロセッサ
    で実行される、それぞれ仮想メモリ空間を使用するプロ
    グラムおよびそのプログラムで使用されるデータを保持
    する実メモリとを有する複数のノードと、それらを相互
    に接続するデータ転送ネットワークとを有する分散メモ
    リ型計算機システムにおいて、 該複数のノードの内の、データを受信するプロセス(デ
    ータ受信プロセス)が使用する仮想メモリ空間内の仮想
    のデータ受信領域に対して、そのデータ受信プロセスを
    実行するノード(データ受信ノード)内の該実メモリ
    (データ受信側実メモリ)に常駐した実のデータ受信領
    域を割り当て、 該複数のノードの内の、該データ受信プロセスにデータ
    を送信するプロセス(データ送信プロセス)が使用する
    仮想メモリ空間内の仮想のデータ送信領域に対して、そ
    のデータ送信プロセスを実行するノード(データ送信ノ
    ード)内の該実メモリ(データ送信側実メモリ)に常駐
    した実のデータ送信領域を割り当て、 該送信ノード内に、その実のデータ受信領域のアドレス
    に関連する情報を記憶し、 該データ送信プロセスにより、該仮想のデータ送信領域
    をアクセスし、もって、該データ受信プロセスに転送す
    べきデータを該実のデータ送信領域に書き込み、 該記憶されたアドレスに関連する情報から定まる、該デ
    ータ受信ノード内メモリの、そのデータの書き込みアド
    レスを指定するアドレス情報を、その書き込まれたデー
    タとともに、該データ送信ノードから該データ受信ノー
    ドへ転送し、 該データ受信ノードにより、該転送されたデータを、該
    データ受信側実メモリ内の、その転送されたアドレス情
    報が指定する位置に書き込み、 該データ受信プロセスにより該仮想のデータ受信領域を
    アクセスし、もってその書き込まれたデータを読み出す
    プロセッサ間データ通信方法。
  2. 【請求項2】該データ受信ノードから該データ送信ノー
    ドに、該データ受信領域の該アドレスに関連する情報を
    転送するステップをさらに有する請求項1記載プロセッ
    サ間データ転送方法。
  3. 【請求項3】該データ受信領域の割り当ては、該データ
    受信ノードを制御するOS(受信側OS)により行なわ
    れ、 該データ送信領域の割り当ては、該データ送信ノードを
    制御するOS(送信側OS)により行なわれ、 該アドレス情報の転送は、その受信側OSから該送信側
    OSに対して行なわれ該データと該アドレスに関連する
    情報の転送は、 該データ送信プロセスから該送信側OSにデータ送信を
    要求し、 該送信側OSにより、その書き込まれたデータに付すべ
    きアドレス情報を決定するステップを有する請求項2記
    載のプロセッサ間データ転送方法。
  4. 【請求項4】該転送されたデータの書き込みは、該受信
    側OSの介入なしに行なう請求項2記載のプロセッサ間
    データ転送方法。
  5. 【請求項5】該受信側OSにより、該アドレスに関連す
    る情報とともに、該データ受信領域の識別子を該送信側
    OSに送信し、 データ送信プロセスにより、データを転送すべき受信デ
    ータ領域の識別子と送信先ノードを該送信側OSに通知
    し、 該送信側OSにより、その通知された送信先ノードと該
    識別子とに基づいて該転送すべきデータに付すべきアド
    レス情報を決定するステップを更に有する請求項3記載
    のプロセッサ間データ転送方法。
  6. 【請求項6】該データ受信側ノードにより、該データ受
    信プロセスが使用する複数の仮想のデータ受信領域に対
    して、該受信側メモリに常駐した複数の実のデータ受信
    領域を割り当て、 それぞれの仮想のデータ受信領域にデータを送信するデ
    ータ送信ノードに、該該データ受信ノードからそれぞれ
    の実のデータ受信領域のアドレスに関連する情報を転送
    するステップをさらに有する請求項1記載のプロセッサ
    間データ転送方法。
  7. 【請求項7】該複数の仮想のデータ受信領域は、それぞ
    れ異なるノードで実行されるデータ送信プロセスに対応
    して定められている請求項6記載のプロセッサ間データ
    転送方法。
  8. 【請求項8】該データ送信ノードからの該データ送信バ
    ッファ内のデータの転送は、 そのデータの互いに異なる複数の部分を該受信側メモリ
    に書き込む位置を指定する複数のアドレス情報を該記憶
    されたアドレスに関連する情報から生成し、それぞれ該
    複数の部分データの一つと該複数のアドレス情報の内
    の、その部分データに関して生成された一つのアドレス
    情報とを含む複数のパケットを順次転送するステップか
    らなる請求項1記載のプロセッサ間データ転送方法。
  9. 【請求項9】該実のデータ受信領域を割り当てるとき
    に、該実のデータ受信領域に先行するアドレス位置に、
    受信データともに転送されるヘッダを格納するためのヘ
    ッダ受信領域を確保するステップを更に有し、 該データ送信ノードからの該データと該アドレス情報の
    転送は、該アドレス情報を含むヘッダと、該データを含
    む、そのヘッダに続くデータ部からなるパケットを転送
    するステップを有し、 該アドレス情報は、そのデータを記憶する位置に先行す
    る、そのデータとともに転送されるべきヘッダを記憶す
    る位置を指定し、 該データ受信ノードによる受信データの書き込みは、 該パケット内のヘッダをその中に含まれたアドレス情報
    に依存して、該受信側メモリ内の該ヘッダ受信領域に記
    憶し、 その後、該パケット内のデータ部を、該ヘッダ受信領域
    に続いて位置する該受信データ領域に記憶するステップ
    からなる請求項1記載のプロセッサ間データ転送方法。
  10. 【請求項10】該実のデータ受信領域の割り当ては、複
    数の離散した位置に位置する部分データ受信領域を該仮
    想のデータ受信領域の異なる部分に対して割り当てるス
    テップからなり、 それぞれ該複数の実の部分データ受信領域に先行するア
    ドレス位置に位置する、複数のヘッダ受信領域を確保す
    るステップを更に有し、 該データ送信ノードからの該データ送信バッファ内のデ
    ータの転送は、 そのデータの互いに異なる複数の部分を該受信側メモリ
    に書き込む位置を指定する複数のアドレス情報として、
    それぞれの部分データとともに転送されるヘッダを書き
    込むアドレスを指定する複数のアドレス情報を、該記憶
    されたアドレスに関連する情報から生成し、 それぞれ、該複数の部分データの一つを含むデータ部と
    該複数のアドレス情報の内の、その部分データに関して
    生成された一つのアドレス情報を含む、該データ部に先
    行するヘッダ部とを含む複数のパケットを順次転送する
    ステップからなり、 該データ受信ノードによる受信データの書き込みは、 該複数のパケットの各々内のヘッダをその中に含まれた
    アドレス情報に依存して、該受信側メモリ内の該複数の
    ヘッダ受信領域の一つに記憶し、 その後、そのパケット内のデータ部を、該一つのヘッダ
    受信領域に続いて位置する該部分データ受信領域に記憶
    するステップからなる請求項9記載のプロセッサ間デー
    タ転送方法。
  11. 【請求項11】該実のデータ送信領域の割り当ては、複
    数の離散した位置に位置する部分データ送信領域を該仮
    想のデータ送信領域の異なる部分に対して割り当てるス
    テップからなり、 それぞれ該複数の実の部分データ送信領域に先行するア
    ドレス位置に位置する、複数のヘッダ送信領域を確保
    し、 該複数の部分データ送信領域に該データ送信プロセスに
    より送信データを書き込んだ後、それぞれのヘッダ送信
    領域に、それぞれの部分データとともに転送されるべき
    ヘッダを書き込むステップを更に有し、 該複数のパケットの転送は、 該複数のヘッダ送信領域の一つからヘッダを読みだし、 その読み出しに引き続いて、そのヘッダ送信領域に続く
    位置にある一つの実の部分データ送信領域内の部分デー
    タを続けて読み出すステップを有する請求項10記載の
    プロセッサ間データ転送方法。
  12. 【請求項12】該転送されたデータの書き込みは、該デ
    ータ受信ノードを制御するOSの介入なしに行なう請求
    項1記載のプロセッサ間データ転送方法。
  13. 【請求項13】それぞれ、プロセッサと、そのプロセッ
    サで実行される、それぞれ仮想メモリ空間を使用するプ
    ログラムおよびそのプログラムで使用されるデータを保
    持する実メモリとを有する複数のノードと、それらを相
    互に接続するデータ転送ネットワークとを有する分散メ
    モリ型計算機システムにおいて、 各ノードで、そのノードを制御するOSにより、そこで
    実行されるプロセスが要求するデータ送信領域とデータ
    受信領域とをそのノード内の実メモリに常駐して確保
    し、 そのOSにより、データ受信領域のアドレスを、そこへ
    データを送信するデータ送信ノードのOSに通知し、 全てのノードで以上の処理が完了したことを検出しその
    後、各ノードでプロセスを実行し、 そのプロセスから他のノードへ転送すべきデータをその
    プロセスからそのノード内のデータ送信領域に書き込
    み、 そのデータの転送要求をそのプロセスを制御するOSに
    出力し、 そのOSがそのプロセスが指定する、そのデータを受信
    すべきデータ受信ノードとその中のデータ受信領域に基
    づいて、そのデータとともに転送されるべきメモリアド
    レスを選択し、 そのデータにそのメモリアドレスを付加して該データ受
    信ノードに転送し、 該データ受信ノードにより、その転送されたデータをO
    Sの介入なしに、その付加されたメモリアドレスにより
    定まる位置に、かつ、そのノードでのプロセスの実行と
    並行して格納するプロセッサ間データ転送方法。
  14. 【請求項14】各ノードで実行中のプロセスが要求する
    処理の実行およびデータの転送後、そのプロセスの次の
    実行時に使用するデータのうち他のノードから転送され
    るべきデータが全て受信済みか否かを検出し、 該転送されるべき全てのデータが受信済みであるとき、
    そのプロセスの次の実行を開始する請求項13記載のプ
    ロセッサ間データ転送方法。
  15. 【請求項15】各ノードのデータ受信領域およびデータ
    送信領域としてそれぞれ一対のデータ受信領域を確保
    し、 各ノードでのあるプロセスに実行完了毎に、そのプロセ
    スの次の実行時に使用するデータ送信領域を切り替え、 そのプロセスの次の実行時に他のノードへ送信するとき
    に指定するデータ受信領域を切り替える請求項14記載
    のプロセッサ間データ転送方法。
  16. 【請求項16】各ノードでのプロセスの実行後、そのプ
    ロセスの次の実行に必要なデータが受信済みか否かを検
    出し、 受信済みのとき、次の実行を、他のノードと非同期に開
    始する請求項14記載のプロセッサ間データ転送方法。
  17. 【請求項17】それぞれ、プロセッサと、そのプロセッ
    サで実行される、それぞれ仮想メモリ空間を使用するプ
    ログラムおよびそのプログラムで使用されるデータを保
    持する実メモリとを有する複数のノードと、それらを相
    互に接続するデータ転送ネットワークとを有する分散メ
    モリ型計算機システムにおいて、 受信側ノードで一対のデータ受信領域を実メモリに常駐
    して確保し、 送信側で処理を実行し、 受信側のノードではこの実行と並行して、該一対のデー
    タ受信領域の一方にすでに受信されたデータを使用して
    処理を実行し、 送信側ノードでの処理の実行終了後、その処理の結果得
    られたデータをその受信側のノードに、その受信側のノ
    ードの処理の実行と並行して転送し、 その受信側ノードで、送信側のノードから転送されたデ
    ータを該一対のデータ受信領域の他方に書き込み、 その受信側ノードが次の処理を実行する前に、そのノー
    ドで、次の処理で使用するデータ受信領域を該一対のデ
    ータ受信領域の該一方から該他方に実メモリのマッピン
    グにより切り替え、その後、次の処理を実行し、 その受信側ノードと並行してその送信側ノードでその後
    の処理を実行し、 その結果得られたデータを該一方のデータ受信領域に書
    き込むプロセッサ間データ転送方法。
  18. 【請求項18】送信側ノードからデータを送信するとき
    に、そのデータともに、受信側ノードのデータ書き込み
    を行なうデータ受信領域を指定する情報をその受信側ノ
    ードに転送する請求項17記載のプロセッサ間データ転
    送方法。
  19. 【請求項19】この指定をする情報を送信側ノードが先
    の処理を終了後切り替える請求項18記載のプロセッサ
    間データ転送方法。
  20. 【請求項20】送信側ノードが先の処理を終了したか否
    かを受信側ノードから送信されるべきデータが受信され
    たか否かに基づいて、送信側ノードにより判断する請求
    項19記載のプロセッサ間データ転送方法。
  21. 【請求項21】それぞれ、プロセッサと、そのプロセッ
    サで実行される、それぞれ仮想メモリ空間を使用するプ
    ログラムおよびそのプログラムで使用されるデータを保
    持する実メモリとを有する複数のノードと、それらを相
    互に接続するデータ転送ネットワークとを有する分散メ
    モリ型計算機システムにおいて、 各ノードで、その中のOSにより、そこで実行されるプ
    ロセスが要求するデータ送信領域とデータ受信領域とを
    そのノード内の実メモリに常駐して確保し、 受信データ領域へのアクセス権コードを送信側に通知し
    て、 送信プロセスが受信プロセスにデータを送信するとき、
    その受信プロセスが実行されている受信ノードの実メモ
    リ内の送信データを書き込むアドレスをそのデートとも
    に送信プロセスを実行するノードから該受信ノードに転
    送し、 その実際のデータ転送を開始する前に、 送信側がこのアクセス権コードを付与してデータ転送を
    行い、データ受信時にアクセス権コードの正当性を検査
    するプロセッサ間データ転送方法。
  22. 【請求項22】それぞれ、プロセッサと、そのプロセッ
    サで実行される、それぞれ仮想メモリ空間を使用するプ
    ログラムおよびそのプログラムで使用されるデータを保
    持する実メモリとを有する複数のノードと、それらを相
    互に接続するデータ転送ネットワークとを有する分散メ
    モリ型計算機システムにおいて、 各ノードにて実行されるプロセスの要求により、そのノ
    ードのOSが複数のそれぞれ所定の大きさを有するデー
    タ送信領域およびそれぞれに対応する複数のヘッダ送信
    領域ならびに複数のデータ受信領域およびそれぞれに対
    応する複数のヘッダ受信領域およびを実メモリ上に常駐
    して確保し、 各ノードでプロセスを互いに並行して実行し、 各ノードで実行中のプロセスにより、複数の送信データ
    を複数のデータ送信領域に書き込み、 その書き込みの後、そのプロセスからそのプロセスを実
    行中のノードを制御するOSにデータ送信を要求し、 そのOSからそれらのデータのそれぞれに対応するヘッ
    ダをそれぞれのデータ送信領域に対応するヘッダ送信領
    域に書き込み、 その後、それぞれのデータとそれぞれに対応するヘッダ
    からなる複数のパケットをデータ受信ノードに順次転送
    し、 該データ受信ノードでは、受信した複数のパケットの各
    々内のデータとヘッダとをそれぞれ互いに対応するデー
    タ受信領域とヘッダ受信領域に書き込むプロセッサ間デ
    ータ転送方法。
  23. 【請求項23】該データ受信ノードでは、そのノードを
    制御するOSの介入なしに、かつ、そこでのプロセスの
    実行と並行して該複数のパケットを書き込む請求項22
    記載のプロセッサ間データ転送方法。
  24. 【請求項24】それぞれのヘッダ送信領域は対応するデ
    ータ送信領域に隣接し、かつ、それより先行するメモリ
    位置にあり、それぞれのヘッダ受信領域は対応するデー
    タ受信領域に隣接し、かつ、それより先行するメモリ位
    置にある請求項22記載のプロセッサ間データ転送方
    法。
  25. 【請求項25】データを送信するノードではそれぞれの
    ヘッダ領域の一つ内のヘッダとそれに隣接するデータ送
    信領域内のデータを続けて読み出し、 該データ受信ノードでは、転送されたパケット内のヘッ
    ダとデータを該ヘッダ受信領域の一つと該複数のデータ
    受信領域の内のその一つのヘッダ受信領域に続く一つに
    続けて書き込む請求項24記載のプロセッサ間データ転
    送方法。
  26. 【請求項26】各データ送信領域、各ヘッダ送信領域な
    らびに各データ受信領域、各ヘッダ受信領域は、各ノー
    ドの実メモリを仮想空間に割り当てるときの割り当て単
    位の大きさに等しい大きさを有する請求項25記載のプ
    ロセッサ間データ転送方法。
  27. 【請求項27】それぞれ、プロセッサと、そのプロセッ
    サで実行される、それぞれ仮想メモリ空間を使用するプ
    ログラムおよびそのプログラムで使用されるデータを保
    持する実メモリとを有する複数のノードと、それらを相
    互に接続するデータ転送ネットワークとを有する分散メ
    モリ型計算機システムにおいて、 データを他のノード(データ受信ノード)に送信するノ
    ード(データ送信ノード)の実メモリ内に、それぞれ、
    その該実メモリを仮想空間に割り当てるときの割当単位
    の大きさをそれぞれ有し、互いに離散して位置に割当単
    位の境界に一致する境界を有し、該実メモリに常駐し
    た、複数のデータ送信領域を確保し、 それぞれ該複数のデータ送信領域の一つに対応し、該割
    当単位の大きさを有し、かつ割当単位の境界に一致する
    境界を有する複数のヘッダ領域をそれぞれ対応するデー
    タ送信領域に先行し、かつ、それぞれに隣接する位置に
    確保し該複数のデータ送信領域に送信データを書き込
    み、 該複数のヘッダ送信領域に、対応するデータ送信領域内
    のデータをパケットして転送するのに必要なヘッダを書
    き込み、 該複数のヘッダ送信領域内のヘッダを順次読み出し、か
    つ、それぞれのヘッダ送信領域のヘッダを読み出した
    後、次のヘッダ領域を読み出す前に、それぞれのヘッダ
    送信領域に対応するデータ送信領域のデータを読み出
    し、 それぞれ、一つのヘッダ送信領域から読み出されたヘッ
    ダとそのヘッダ送信領域い対応する一つのデータ送信領
    域から読み出さされたデータの組を含む複数のパケット
    を、そのデータ送信ノードからそのデータ受信ノードに
    順次転送するプロセッサ間データ転送方法。
  28. 【請求項28】該複数のヘッダ受信領域と該複数のデー
    タ受信領域とは交互に、かつ、連続する位置されている
    請求項27記載のプロセッサ間データ転送方法。
  29. 【請求項29】それぞれ、プロセッサと、そのプロセッ
    サで実行される、それぞれ仮想メモリ空間を使用するプ
    ログラムおよびそのプログラムで使用されるデータを保
    持する実メモリとを有する複数のノードと、それらを相
    互に接続するデータ転送ネットワークとを有する分散メ
    モリ型計算機システムにおいて、 データを他のノード(データ送信ノード)から受信する
    ノード(データ受信ノード)の実メモリ内に、それぞ
    れ、その該実メモリを仮想空間に割り当てるときの割当
    単位の大きさをそれぞれ有し、互いに離散して位置に割
    当単位の境界に一致する境界を有し、該実メモリに常駐
    した、複数のデータ受信領域を確保し、 それぞれ該複数のデータ受信領域の一つに対応し、該割
    当単位の大きさを有し、かつ割当単位の境界に一致する
    境界を有する複数のヘッダ受信領域をそれぞれ対応する
    データ受信領域に先行し、かつ、それぞれに隣接する位
    置に確保し該データ送信ノードより該データ受信ノード
    に、ともに該割当単位の大きさに等しい大きさを有する
    ヘッダとデータをそれぞれ含む複数のパケットを順次転
    送し、 該データ受信ノードにより、そえぞれのパケットのヘッ
    ダとデータとをいずれか一つのヘッダ受信領域とそれに
    続くデータ受信領域とに連続して書き込むように、該複
    数のパケットを該データ受信ノードの該実メモリに順次
    書き込むプロセッサ間データ転送方法。
  30. 【請求項30】該複数のヘッダ受信領域と該複数のデー
    タ受信領域とは交互に、かつ、連続する位置されている
    請求項29記載のプロセッサ間データ転送方法。
JP4256155A 1992-09-25 1992-09-25 プロセッサ間データ通信方法 Expired - Fee Related JP3003418B2 (ja)

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 JPH06110845A (ja) 1994-04-22
JP3003418B2 true 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)

Families Citing this family (39)

* Cited by examiner, † Cited by third party
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 コンピュータシステム
JP3674720B2 (ja) * 1995-10-23 2005-07-20 富士通株式会社 並列計算機におけるデータ転送方法
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
JPH11502350A (ja) * 1996-01-09 1999-02-23 フィリップス エレクトロニクス ネムローゼ フェンノートシャップ イントラプロセス更新動作及びインタープロセス適合動作による並列の順次のプロセスの同期方法及びシステム
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 株式会社日立製作所 データ転送方法およびそれに適した計算機システム
JPH11203254A (ja) 1998-01-14 1999-07-30 Nec Corp 共有プロセス制御装置及びプログラムを記録した機械読み取り可能な記録媒体
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
US6421745B1 (en) 1999-04-12 2002-07-16 Sony Corporation Asynchronous connections with scattering page tables for transmitting data from a producer device to a consumer device over an IEEE 1394 serial data bus
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
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
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
US20030177248A1 (en) * 2001-09-05 2003-09-18 International Business Machines Corporation Apparatus and method for providing access rights information on computer accessible content
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
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
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
US6795902B2 (en) * 2002-01-09 2004-09-21 Sun Microsystems, Inc. Inter-domain data transfer
US7020753B2 (en) * 2002-01-09 2006-03-28 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
JPWO2010027064A1 (ja) * 2008-09-04 2012-02-02 日本電気株式会社 データ伝送方法、データ伝送システム、データ送信装置、データ受信装置、及び制御プログラム
RU2524857C2 (ru) * 2009-09-16 2014-08-10 Сименс Акциенгезелльшафт Способ работы подстанции системы электроснабжения
JP5549574B2 (ja) 2010-12-17 2014-07-16 富士通株式会社 並列計算機システム、同期装置、並列計算機システムの制御方法
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 北京百度网讯科技有限公司 数据传输方法和***
WO2018014282A1 (en) * 2016-07-21 2018-01-25 Baidu.Com Times Technology (Beijing) Co., Ltd. Efficient communications amongst computing nodes for operating autonomous vehicles
DE102019214324A1 (de) * 2019-09-20 2021-03-25 Robert Bosch Gmbh Verfahren und Vorrichtung zum Verarbeiten von Daten
GB2590658A (en) 2019-12-23 2021-07-07 Graphcore Ltd Communication in a computer having multiple processors

Family Cites Families (19)

* Cited by examiner, † Cited by third party
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 プログラマブル・ロジツク・コントロ−ラ
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
JPS6145272B2 (ja) * 1981-12-04 1986-10-07 Burroughs Corp
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
JPH01194055A (ja) * 1988-01-29 1989-08-04 Hitachi Ltd 並列計算機及びそのデータ転送方法
JPH01194056A (ja) * 1988-01-29 1989-08-04 Hitachi Ltd 並列プロセッサ
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
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
EP0411497B1 (en) * 1989-07-31 2000-01-26 Hitachi, Ltd. Data processing system and data transmission and processing method
WO1991010204A1 (en) * 1989-12-26 1991-07-11 Eastman Kodak Company Image processing apparatus having disk storage resembling ram memory
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 株式会社日立製作所 プロセッサ間データ通信方法

Also Published As

Publication number Publication date
US5659777A (en) 1997-08-19
JPH06110845A (ja) 1994-04-22
GB2271006B (en) 1996-10-30
GB2271006A (en) 1994-03-30
GB9319816D0 (en) 1993-11-10
US5867656A (en) 1999-02-02

Similar Documents

Publication Publication Date Title
JP3003418B2 (ja) プロセッサ間データ通信方法
US5043873A (en) Method of parallel processing for avoiding competition control problems and data up dating problems common in shared memory systems
Kuskin et al. The stanford flash multiprocessor
Blumrich et al. Virtual-memory-mapped network interfaces
US5864738A (en) Massively parallel processing system using two data paths: one connecting router circuit to the interconnect network and the other connecting router circuit to I/O controller
JP2500095B2 (ja) 入出力資源を共用するための方法及びシステム
US5446915A (en) Parallel processing system virtual connection method and apparatus with protection and flow control
US5355453A (en) Parallel I/O network file server architecture
Felten et al. Early experience with message-passing on the shrimp multicomputer
US6163829A (en) DSP interrupt control for handling multiple interrupts
US6678801B1 (en) DSP with distributed RAM structure
JP2003178039A (ja) 分散共有仮想メモリーとその構成方法
JP2010165022A (ja) プロセッサ間通信装置、プロセッサ間通信方法、プログラムおよび記録媒体
US6738837B1 (en) Digital system with split transaction memory access
Bilas et al. Fast rpc on the shrimp virtual memory mapped network interface
JP2736237B2 (ja) 遠隔メモリアクセス制御装置
Blumrich et al. Two virtual memory mapped network interface designs
JP2993728B2 (ja) プロトコル高速処理装置
Kuskin et al. The stanford flash multiprocessor
Maples et al. Merlin: A superglue for multicomputer systems
JPH04291660A (ja) プロセッサ間通信方法およびそのための並列プロセッサ
JPH07152640A (ja) 分散共有メモリ方式
JP3375649B2 (ja) 並列計算機
Tuazon et al. Mark IIIfp hypercube concurrent processor architecture
US6393530B1 (en) Paging method for DSP

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