JP3375649B2 - 並列計算機 - Google Patents

並列計算機

Info

Publication number
JP3375649B2
JP3375649B2 JP24109491A JP24109491A JP3375649B2 JP 3375649 B2 JP3375649 B2 JP 3375649B2 JP 24109491 A JP24109491 A JP 24109491A JP 24109491 A JP24109491 A JP 24109491A JP 3375649 B2 JP3375649 B2 JP 3375649B2
Authority
JP
Japan
Prior art keywords
cluster
data
destination
address
communication area
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 - Lifetime
Application number
JP24109491A
Other languages
English (en)
Other versions
JPH0619856A (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
Hitachi Solutions Technology Ltd
Original Assignee
Hitachi Ltd
Hitachi ULSI Systems Co 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, Hitachi ULSI Systems Co Ltd filed Critical Hitachi Ltd
Priority to JP24109491A priority Critical patent/JP3375649B2/ja
Priority to US07/853,427 priority patent/US5386566A/en
Priority to DE4208924A priority patent/DE4208924B4/de
Publication of JPH0619856A publication Critical patent/JPH0619856A/ja
Application granted granted Critical
Publication of JP3375649B2 publication Critical patent/JP3375649B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Landscapes

  • Multi Processors (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は並列計算機の構成法に関
する。
【0002】
【従来の技術】従来、ローカルメモリを持ち、独立に動
作可能な複数のプロセッサから構成されるクラスタを複
数用いて構成され、他のクラスタとの間でデータを相互
に通信する並列計算機においては、プロセス間通信をす
るときに、送信クラスタではユーザ空間からオペレーテ
ィングシステム内のカーネル空間へのデータのコピー
を、受信クラスタではオペレーティングシステム内のカ
ーネル空間からユーザ空間へのデータのコピーを行なっ
ていた。例えば、イーサネットで結合された、UNIX
オペレーティングシステムを搭載した複数のワークステ
ーションでの通信がこれに当たる。
【0003】一方、ローカルメモリを持つ複数のプロセ
ッサエレメントからなり、他のプロセッサエレメントか
らローカルメモリにデータを書き込める並列計算機にお
いて、あるプロセッサエレメントが他のプロセッサエレ
メントのローカルメモリを介してデータを受け渡すとき
に、ローカルメモリの一部または全部の語にタグを設け
ておき、このタグでその語の内容が有効か無効かを表す
ようにした装置がある。例えば、特開平1−19405
5において論じられている装置がこれに相当する。
【0004】
【発明が解決しようとする課題】上記従来技術のうち前
者においては、各クラスタにオペレーティングシステム
が動作しているために複数のプロセスが同時に1つのク
ラスタで動作することができるため、並列計算機で実行
するプログラムにより生成されるユーザプロセスの数が
このプログラムを実行するために割当てられたクラスタ
の数と等しくない場合にも、各ユーザプロセスに対応し
て仮想空間を割当てることによりこのプログラムを実行
することができる。そのため、ユーザプロセス間のデー
タ転送とは、具体的には送信元のプロセスに対応する仮
想空間の中のデータを、送信先のプロセスに対応する仮
想空間の中に転送することに相当する。しかも、オペレ
ーティングシステムの保護機構等により、仮にユーザプ
ログラムに誤りがあっても、このプログラムにかかわり
のないプロセスのデータを不当に破壊することがないよ
うに制御されている。
【0005】あるクラスタから、そのクラスタの外部の
装置、例えばクラスタ間を結合するネットワークに、デ
ータを高速に送出するためには通常DMA転送が用いら
れる。DMA転送は、メモリアドレスをハードウェアに
より連続的に生成し、連続的にメモリからデータを読み
だすように、あるいはメモリにデータを書き込むように
構成されたDMAコントローラという回路を用いること
により実現される。ところが、送信元プロセスの仮想空
間にあるデータをDMAコントローラによりネットワー
クに送出しようとする場合、仮想空間にある送出すべき
データが、クラスタの実メモリにあるという保障がな
い。そのため、送出すべきデータが実メモリにあること
を保障するために、必要に応じてページインを行ない、
その後にDMAコントローラに転送させるようにする必
要がある。ページインはオペレーティングシステムにの
み許された機能であるため、従来技術のデータ送信にお
いてはオペレーティングシステムが必ず介入することに
なる。
【0006】このような準備の後、DMAコントローラ
によって連続的にデータ送出が行なわれたとしても、送
信先プロセスに対応する仮想空間中の、送出されたデー
タを格納すべき領域が、送信先クラスタの実メモリに割
当てられている保障がない。そのため、従来技術におい
ては、送信先クラスタのオペレーティングシステムは、
送出されたデータを格納するために実メモリ上に設けた
バッファ(受信バッファ)をオペレーティングシステム
内部に準備し、この中に送出されたデータをいったん格
納し、その後に必要に応じてページイン(これもオペレ
ーティングシステムが介入して実行する必要がある)を
実行してから送信先のプロセスに対応する仮想空間中の
データ格納領域にデータを転送する。
【0007】しかし、例え送信先クラスタにこのような
受信バッファを設けても、送信先クラスタにとっては送
信元クラスタがいつどのくらいの量のデータを送出して
くるかを知る手段がないので、必要な大きさの受信バッ
ファをあらかじめ確保することができない。そのため、
従来技術では、送出されてきたデータの量が予想より大
きく、確保しておいた受信バッファの大きさを越える場
合には、送信先クラスタにおいて送信元クラスタが送出
したデータを受け取らず、必要な受信バッファを新たに
確保した後に、送信元クラスタから送信先クラスタにデ
ータを再送するようになっている。
【0008】この再送を可能にするため、従来技術では
送信元クラスタのオペレーティングシステムの内部に送
信バッファを持ち、送信したいデータが送信先クラスタ
に確実に受け取られたことを確認するまで、送信したい
データを格納するようになっている。
【0009】この送信バッファを実メモリに設ければ、
送信バッファに格納された送信したいデータをDMAコ
ントローラにより連続的にネットワークに送出すること
ができる。それゆえ、従来技術では送信元プロセスに対
応する仮想空間にあるデータを送信先プロセスに転送す
る際には、送信元クラスタでは、上述したように必要に
応じてページインを行ないつつ、仮想空間にある送信し
たいデータを、実メモリにある送信バッファに転送し、
その後にDMAコントローラによって送信バッファに格
納されたデータをネットワークに送出するようにインプ
リメントされている。
【0010】以上で示したように、従来技術では送信元
プロセスに対応する仮想空間から、送信先プロセスに対
応する仮想空間にデータを転送する場合には、送信した
いデータが送信元クラスタのオペレーティングシステム
の介入のもとで、その中にある送信バッファを、さらに
送信先クラスタのオペレーティングシステムの介入のも
とで、その中にある受信バッファを経由することにな
る。バッファへのコピーは、送信したいデータ長にほぼ
比例するオーバヘッドをもたらす。このオーバヘッドは
並列計算機の性能を著しく低下させる恐れがある。
【0011】一方、上記従来技術のうちの後者において
は、上記のデータのコピーのオーバヘッドはないもの
の、1つのクラスタの中で複数のプロセスを動作させる
ときにそれらのうちの特定の受信プロセスに対して他ク
ラスタの送信プロセスがローカルメモリを介してデータ
の受け渡しをするときに、受信プロセスと同じクラスタ
上で同時に動作しているプロセスのデータを送信プロセ
スが不当に変更する恐れがある。
【0012】本発明の目的は、同一クラスタで複数プロ
セスが同時に動作し、あるプロセスが異なるクラスタ上
で動作するプロセスとの間でデータを受け渡すときに発
生するオペレーティングシステムによるオーバヘッドを
削減することにある。
【0013】
【課題を解決するための手段】本発明の目的は、独立に
動作可能な1台以上のプロセッサと、この1台以上のプ
ロセッサに共有されるメモリとからなるクラスタを複数
用いて構成され、複数のクラスタを接続するネットワー
クを有し、該複数のクラスタのそれぞれにおいて少なく
とも1つの仮想空間が割当てられ、その仮想空間におい
て少なくとも1つのプロセスがオペレーティングシステ
ムの制御下で実行される並列プロセッサにおいて、クラ
スタ内のメモリに常駐し、仮想空間に配置された通信領
域をプロセスが持ち、あるクラスタ(送信元クラスタ)
で実行中のプロセス(送信元プロセス)から他のクラス
タ(送信先クラスタ)に割当てられた他のプロセス(送
信先プロセス)に送信すべきデータを、送信元プロセス
に割当てられた通信領域内の、送信データ用の位置に割
当てられた、送信元クラスタのメモリ内の位置から、送
信元プロセスを制御するオペレーティングシステム内部
に設けたバッファの介在なしに読み出し、その読み出さ
れたデータと、送信元プロセスおよびそれを制御するオ
ペレーティングシステムが管理する情報から生成される
送信先プロセスに関連する情報とを送信元クラスタから
送信先クラスタに送信し、送信先クラスタでは、このデ
ータを受信したとき、上記関連する情報と送信先クラス
タのオペレーティングシステムが管理する情報とにより
定まり、送信先プロセスに割当てられた通信領域内の、
受信データ用の位置に割当てられた、送信先クラスタの
メモリ内の位置を、受信データ記憶位置として決定し、
その受信したデータをその決定された受信データ記憶位
置に、送信先クラスタを制御するオペレーティングシス
テム内部に設けたバッファの介在なしに書き込むことに
より達成される。
【0014】
【作用】本発明に係る並列計算機においては、送信すべ
きデータを格納し、また、送信されてきたデータを格納
するための仮想空間中の通信領域が、オペレーティング
システムによってクラスタ内のメモリに常駐するように
制御されている。そのため、送信元クラスタが送信元プ
ロセスが実行される仮想空間からデータを読み出し、こ
れをネットワークを経由して送信先クラスタに転送し、
送信先クラスタが送信されたデータを格納する送信先プ
ロセスの仮想空間内の位置を決定し、そこに送信された
データを書き込む一連の動作において、ページフォルト
が発生することがない。
【0015】それゆえ、送信元クラスタが送信したデー
タが、確実に送信先クラスタの実メモリに書き込まれる
ことが保証される。そのため、従来の技術に見られるよ
うな、送信されたデータが送信先クラスタのメモリに書
き込まれないような事態が発生しても、再度データを送
信できるようにするために、送信元クラスタのオペレー
ティングシステムの中に設ける送信バッファを、本発明
では設ける必要がない。同様にして、送信元クラスタの
受信バッファも不要になる。そのため、必要最小限であ
る送信元プロセスのメモリ領域から、送信先プロセスの
メモリ領域への1回のコピーのみで転送が終了し、その
結果として、従来技術に比べ送信元プロセスから送信先
プロセスにデータを転送する場合に発生するオーバヘッ
ドを著しく低減することが可能になる。
【0016】さらに、上記転送においては、送信元プロ
セスが生成する情報に加え、送信元クラスタおよび送信
先クラスタのオペレーティングシステムが管理する情報
を用いてデータの読みだしおよび書きこみを行なうの
で、送信元プロセスのプログラムに誤りがあっても、デ
ータの不当な変更が生じないようにできる。
【0017】
【実施例】
(第1実施例)以下、本発明の第1の実施例を図1を用
いて説明する。図1は本発明に係る並列計算機を示す。
本実施例では複数のクラスタ100がネットワーク4に
より結合されている。図では、一つのクラスタ100の
構成を示すが、他のクラスタ100は図示されていな
い。図1において、1はCPUであり、従来技術による
マイクロプロセッサと同様の構成であってよい。図1で
は簡単のためにCPUは1つしか書かれていないが、各
クラスタ100は2台以上のCPUからなる密結合マル
チプロセッサである。ただし本発明は各クラスタ100
がシングルプロセッサからなるときにも有効である。2
はクラスタ100の主記憶として用いるメモリであり、
従来技術を用いてCPU1や外部のデバイス(図示せ
ず)からバス3を介してアクセスする。4はクラスタ1
00を接続するネットワークであり、あるクラスタから
送信先クラスタアドレスを指定されると、そのアドレス
に対応する送信先クラスタ(図示せず)にデータなどを
送信する。
【0018】110は、メモリ2から送信すべきデータ
を読みだす送信データ読みだし回路、28は読みだされ
た送信データをパケットの形にしてネットワーク4に送
出する送信回路、42はネットワーク4からパケットを
受信する回路、120は受信されたパケット中の受信デ
ータをメモリ2に書き込む受信データ書き込み回路、7
は送信データの読みだしあるいは受信データ書き込みの
ためにメモリ2をアクセスするメモリアクセス回路であ
る。
【0019】CPU1には、米国UNIXシステムラボ
ラトリーズ社が開発しライセンスしているオペレーティ
ングシステムであるUNIXの下で実行されるプロセス
と同様にユーザプロセスが実行される。1つのユーザプ
ロセスに対応して1つの仮想空間が存在する。図では説
明の判り易さのために、CPU1内に一つの仮想空間1
0を図示してある。この仮想空間10には、送信データ
および受信データ用の仮想の通信領域11と、送信デー
タに付随する情報のための仮想のリクエスト領域12が
設けられる。
【0020】メモリ2には、各ユーザプロセスに対する
仮想の通信領域11がマッピングされた実の通信領域1
3、各ユーザプロセスに対して設けられた仮想のリクエ
スト領域12がマッピングされた実のリクエスト領域1
4と、各ユーザプロセスに対して設けられたアドレス変
換のためのページテーブル15と、このクラスタ内の複
数の通信領域13をアクセスするための、通信領域テー
ブル16が設けられる。
【0021】本実施例では、あるクラスタで実行される
ユーザプロセスが、送信データをそのクラスタ内の実の
通信領域13に、そのクラスタを制御するオペレーティ
ングシステム(OS)の介入なしに書き込み、送信デー
タ読みだし回路110が、そのOSの介入なしにこの送
信データを読みだすこと、さらに、受信データ書き込み
回路120が、他のクラスタから受信したデータをこの
実の通信領域13にそのOSの介入なしに書き込み、ユ
ーザプロセスがそのOSの介入なしにそのデータを読み
だすようになっている。
【0022】図6に仮想の通信領域11の構成を示す。
仮想の通信領域11にはユーザプロセスから送信するデ
ータ(例えば配列Aや、変数)あるいは他から受信した
データおよびデータ受信フラグが配置される。この領域
は主に他のクラスタに配置されたプロセスとのデータの
交換を目的としている領域である。
【0023】図7に仮想のリクエスト領域12の構成を
示す。このリクエスト領域12はユーザプロセスが利用
するライブラリ関数がアクセスする領域である。リクエ
スト領域12には、1つ以上のリクエスト構造体12−
1と、ロケーションテーブル12−2がある。リクエス
ト構造体12−1は、このリクエスト領域12が置かれ
ている仮想空間10に対応するプロセスが発し、他のク
ラスタにあるプロセスへのデータ送信要求とそれに付随
するパラメータを格納する。ロケーションテーブル12
−2は、他のクラスタで起動されたプロセスに関する情
報を保持する。図9に通信領域テーブル16の構成を示
す。通信領域テーブル16はそれぞれ一つの通信領域に
対応した複数のエントリからなる。各エントリには対応
する通信領域のベースアドレスBASEとその領域のサ
イズLNが保持される。
【0024】図10にリクエストテーブル17の構成を
示す。リクエストテーブル17は、いずれかの仮想空間
の仮想のリクエスト領域12ないの仮想のリクエスト構
造体12−1(図7)の実アドレスをそれぞれ格納する
複数のエントリを持つ。
【0025】図8にページテーブル15の構成を示す。
ページテーブル15の各エントリには、実ページアドレ
スフィールド、ページ固定フラグフィールド、その他の
制御情報がある。ページ固定フラグフィールドにページ
固定を示すフラグFが格納されている場合には、そのエ
ントリに対応する実ページはページアウトされないよう
にオペレーティングシステムによって制御される。その
他の制御情報には従来技術による動的アドレス変換と同
様の情報が格納される。
【0026】続いて本実施例に係る並列計算機の動作を
説明する。まず、並列計算機の初期化について説明す
る。各クラスタは簡単のために図では省略されている
が、起動に必要な装置、例えば磁気ディスク装置を備え
ている。システムの電源投入後、各クラスタは従来技術
による密結合マルチプロセッサと同様に初期プログラム
ロードし、オペレーティングシステムがそれぞれのクラ
スタで独立に起動する。起動後各クラスタのオペレーテ
ィングシステムは、従来技術、例えばTCP/IPプロ
トコルを用いて任意のクラスタのオペレーティングシス
テムとネットワーク4あるいは図示されていない従来技
術によるネットワークを介してデータのやり取りを行な
うことができる。
【0027】本実施例では、オペレーティングシステム
の起動時にさらに次のことを行なう。各クラスタのオペ
レーティングシステムはメモリ2上に通信領域テーブル
16を作成し、その先頭アドレスを通信領域テーブルオ
リジンレジスタ6にバス3を介してセットする。次にメ
モリ2上にリクエストテーブル17を作成し、その先頭
アドレスをリクエストテーブルオリジンレジスタ5にセ
ットする。ただし、このテーブル17の内容はまだ書き
込まれていない。
【0028】続いて、ユーザプロセスの初期化について
説明する。
【0029】まず、ユーザが各クラスタのオペレーティ
ングシステムにプロセス起動を指示する。続いて、プロ
セス起動を指示されたオペレーティングシステムは、そ
の指示の対象となったプロセスに対応する仮想空間10
を作るために、メモリ2上にページテーブル15を作成
する。これは、従来技術と同様である。次に仮想の通信
領域11を以下のように初期化する。まず、プログラマ
またはコンパイラによって指定された大きさの連続する
実アドレス領域をメモリ2上に確保し、これを実の通信
領域13とする。続いて仮想空間10上の通信領域11
の仮想アドレスに対応するページテーブル15のエント
リの実ページアドレスフィールド(図8参照)に、この
実の通信領域13のアドレスを先頭から順に書き込み、
かつその領域がページアウトされないようにそのテーブ
ル15内の対応するページ固定フラグフィールドにペー
ジ固定フラグFを設定する。ここで、仮想の通信領域1
1の先頭アドレスはあらかじめ定められた値に設定さ
れ、この値は全クラスタの全てのユーザプロセスで共通
であるとする。また、仮想の通信領域11と実の通信領
域13の大きさについても同じであるとする。
【0030】続いて、オペレーティングシステムはこの
実の通信領域13にそのクラスタ内で一意な通信領域識
別子を割り当て、その通信領域識別子をエントリ番号と
する通信領域テーブル16のエントリ(図9参照)にこ
の実の通信領域13のベースアドレス(先頭アドレス)
と、その大きさをセットする。仮想の通信領域11はペ
ージテーブルのページ固定フラグによって固定的に実の
通信領域13に割り当てられているため、この実の通信
領域13につけた、クラスタ内で一意の通信領域識別子
によって仮想の通信領域11もクラスタ内で一意に識別
されうる。
【0031】さらにメモリ2上の連続領域に実のリクエ
スト領域14を確保し、仮想空間10のリクエスト領域
12の仮想アドレスに対応するページテーブル15のエ
ントリの実ページアドレスフィールドに、確保した実の
リクエスト領域14のアドレスを順次書き込み、その領
域がページアウトされないようにページ固定フラグフィ
ールド(図8参照)にページ固定フラグFを設定する。
そして、図7に示すように仮想のリクエスト領域12
に、リクエスト構造体12−1とロケーションテーブル
12−2を作成する。上述のように仮想のリクエスト領
域12には、対応する実のリクエスト領域14が確保さ
れ、かつその領域はページアウトされないように、すな
わち、メモリ2に常駐するようにされている。したがっ
て、リクエスト構造体12−1およびロケーションテー
ブル12−2には、必ず実メモリが対応していることに
なる。ただし、それらにはまだ情報が格納されていな
い。
【0032】続いて、オペレーティングシステムは起動
するプロセスのあらかじめ定められた領域(図示せず)
にページテーブル15のアドレスを設定し、そのプロセ
スがページテーブル15を参照できるようにする。
【0033】続いて、オペレーティングシステムは、実
のリクエストテーブル17中の未使用エントリに、上記
で作成したリクエスト構造体12−1に対応する実のリ
クエスト領域14の中の領域の先頭の実アドレスを書き
込む。
【0034】オペレーティングシステムによる以上の初
期化によって、実の通信領域13はユーザプロセスから
仮想の通信領域11の仮想アドレスを用いてアクセスで
き、オペレーティングシステムや外部デバイスからは実
の通信領域テーブル16を介して実アドレスを用いてア
クセスできるようになる。また、仮想のリクエスト構造
体12−1に対応する実領域はユーザプロセスから仮想
のリクエスト領域12−1の仮想アドレスを用いてアク
セスでき、オペレーティングシステムや外部デバイスか
らはリクエストテーブル17を介して実アドレスを用い
て直接アクセスできるようになる。
【0035】続いて、オペレーティングシステムは、起
動したプロセスにプログラマまたはコンパイラがあらか
じめ与えてあるプロセスの名前と、そのプロセスが利用
する実の通信領域13の通信領域識別子と、そのクラス
タのネットワーク内のアドレスを組にして、他の全ての
クラスタに転送する。このプロセス名前と通信領域識別
子とクラスタのネットワーク内のアドレスを受け取っ
た、他のクラスタのオペレーティングシステムは、予め
プログラマまたはコンパイラによってこのプロセス名を
参照することが決められているユーザプロセスに対して
そのクラスタ内に設けられている実のリクエスト領域1
4にあるロケーションテーブル(図7の12−2に対応
する相当する実メモリ上の領域)の空きエントリに、受
け取ったプロセスの名前、通信領域識別子とクラスタの
ネットワーク内のアドレスを書き込む。上記のユーザプ
ロセスを起動するクラスタにおいても、このクラスタ内
のプロセスを送信先のユーザプロセスとするユーザプロ
セスが他のクラスタにおいて起動されたとき、上記と同
じ処理をする。これによって、後述するように、仮想空
間10で実行されるプロセスが、その送信先ユーザプロ
セスの名前を指定すればそのプロセスの存在するクラス
タのアドレスとその送信先ユーザプロセスが利用する通
信領域11の通信領域識別子をオペレーティングシステ
ムを用いずに求めることができるようになる。
【0036】以上のようにして起動されたユーザプロセ
スは、それぞれ交互にデータを送信しあいながら並列に
動作しする。
【0037】次に、本実施例に係るプロセス間のデータ
通信について図11を用いて説明する。ユーザプロセス
間のデータ通信を行なう手順を送信元ユーザプロセスと
送信先ユーザプロセスの動作に分けて説明する。さら
に、送信元ユーザプロセスの動作の説明では、送信元ユ
ーザプロセスの動作と送信元クラスタの動作と送信先ク
ラスタ(図示せず)の動作に分けて説明する。以下にお
いて、特に明示しないかぎり処理はCPU1によりなさ
れる。
【0038】ステップ50:ライブラリ関数sendの
call 送信元プロセスが、その仮想の通信領域11中の送信デ
ータ、例えば配列Aを送信先プロセスに送信するとき、
あらかじめ準備されたライブラリ関数send(図示せ
ず)を次の形式で呼び出す。
【0039】 Send(”送信先プロセス名”,X,Y,Z,L) ここで、第1引数の送信先プロセスの名前は、ユーザが
一意に定める。第2引数のXは送信データの送信元プロ
セスの仮想空間10での先頭の仮想アドレスである。第
3引数のYは送信先プロセスの仮想空間(図示せず)中
の、そのデータを格納したい領域の先頭の仮想アドレス
である。第4引数のZは、そのデータを受信したときに
送信先クラスタで記憶すべきデータ受信フラグに割当て
られている仮想アドレスである。第5引数のLは、送信
すべきデータ量である。本実施例では、送信元プロセス
は送信先プロセスの仮想の通信領域の位置と大きさをあ
らかじめ知っている。したがって、上記第3,第4引数
で指定される仮想アドレスは、この通信領域に属するよ
うにプログラムされている。さらに、第5引数で指定さ
れるデータ量は、この仮想の通信領域の大きさより小さ
くなるようにプログラムされている。
【0040】ステップ51:引数の変換 呼び出されたライブラリ関数sendは、ユーザプロセ
スの一部として仮想空間10の中で以下のように動作す
る。まず、送信先プロセスの名前に基づいて、仮想のリ
クエスト領域12(対応する実のリクエスト領域14が
メモリ2に常駐している)にあるロケーションテーブル
12−2から、送信先プロセスのクラスタアドレスと通
信領域識別子を読みだす。さらに、ライブラリ関数se
ndは送信データの先頭の仮想アドレスを、ページテー
ブル15を用いてメモリ2上の実の通信領域13にある
送信データの実アドレスに変換する。また、ライブラリ
関数sendはデータ受信領域とデータ受信フラグの仮
想アドレスから、送信元クラスタの仮想の通信領域11
の先頭アドレスを減じ、送信先の実の通信領域13内で
のオフセットをそれぞれ求める。この動作の正当性は、
全クラスタにおいてユーザプロセス内の仮想の通信領域
11の先頭アドレスが同一にセットされていることと、
仮想の通信領域11がメモリ2上の連続領域にある実の
通信領域13に領域の先頭から順次割等当てられている
ことにより保障される。
【0041】なお、先に求めたオフセット量が負になる
のは、ユーザプロセスにプログラムエラーがあるときで
あり、プログラム割り込みをOSに発生する。
【0042】ステップ52:リクエスト領域へのセット 次に、ライブラリ関数sendは、先に読み出した送信
先クラスタのアドレスCLと、通信領域識別子IDと、
先に求めたデータ受信領域のオフセットSOと、データ
受信フラグのオフセットFOと、送信データのデータ長
と実アドレスを仮想のリクエスト領域12にあるリクエ
スト構造体12−1(図7)にそれぞれ書き込む。さら
に、その中のリクエストフラグフィールドにリクエスト
フラグをセットする。仮想のリクエスト領域12は実の
リクエスト領域14に常駐しているため、これらのパラ
メータは実のリクエスト領域14に書き込まれる。
【0043】ステップ53:次命令の実行 これらの処理を終了するとライブラリ関数sendはユ
ーザプロセスに制御を戻す。ユーザプロセスは送信要求
の次の命令を、以下の動作と並行して実行する。
【0044】 ステップ54:パラメータのレジスタへのセット リクエスト選択回路21は常時以下の動作を繰り返して
いる。
【0045】まず、OS起動時にOSが値を設定したリ
クエストテーブルオリジンレジスタ5の値をその回路2
1内のリクエストテーブルエントリアドレス生成回路2
1−1(図2)に読み込み、メモリ2上のリクエストテ
ーブル17の先頭のエントリの実アドレスを生成し、こ
のエントリの内容であるリクエスト構造体(図示せず)
の実アドレスを、メモリアクセス回路7とバス3を介し
てメモリ2からリクエストフラグアドレス生成回路21
−2に読み込む。回路21−2は読み込んだリクエクト
構造体の実アドレスからリクエストフラグフィールドの
実アドレスを求め、その内容をメモリアクセス回路7と
バス3を介してメモリ2からリクエストフラグ判定回路
21−3に読み込む。21−3はリクエストフラグフィ
ールドにリクエストフラグが書き込まれているか否かを
判定し、書き込まれていなければ上記のリクエストテー
ブルエントリアドレス生成回路21−1に信号を送る。
この回路21−1は、リクエストテーブル17の次のエ
ントリのアドレスを生成し、以下回路リクエストフラグ
アドレス生成回路21−2、リクエストフラグ判定回路
21−3が上と同じように動作する。リクエストフラグ
判定回路21−3は、リクエストフラグフィールドにリ
クエストフラグが書き込まれていれば、さらに送信回路
状態判定回路21−4に信号を送り、当該クラスタの送
信回路28の状態を判定させる。この送信回路28がビ
ジーのときには回路21−4は再度状態の判定をする。
回路28がビジーでないときには、リクエスト構造体エ
ントリアドレス生成回路21−5を起動する。この回路
21−5は、リクエストテーブルエントリアドレス生成
回路21−1により先に読み出されたリクエスト構造体
12−1のアドレスに基づいて、仮想のリクエスト構造
体12−1に対応する実アドレス領域にあるリクエスト
構造体(図示せず)を読み出し、その内のクラスタアド
レスCLをレジスタ22に、通信領域識別子IDをレジ
スタ23に、データ受信領域のオフセットSOをレジス
タ24に、データの受信フラグのオフセットFOをレジ
スタ25に、データ長LENをレジスタ26にコピーす
る。さらに、読み出された実のリクエスト構造体(図示
せず)内の、送信データの実アドレスを用いて、送信す
べきデータを実の通信領域13からバッファ27にコピ
ーする。さらに、送信すべきデータの読みだしが終了し
たため、送信すべきデータを格納した領域の内容を変更
してもよいことを当該送信要求をしたユーザプロセスが
認識できるようにするため、リクエストフラグフィール
ドをリセットするため、リクエストフラグアドレスとリ
セット指示を送る。
【0046】以上の処理の終了時にリクエストテーブル
エントリアドレス生成回路21−1にそのことを線10
00を介し、通知する。
【0047】その後の他のリクエスト構造体について同
様の処理がなされる。
【0048】ステップ55:データの転送 続いて、送信回路28がレジスタ22ないし26の内容
をバッファ27の内容と共にパケットとしてネットワー
ク4に送信する。
【0049】このように、送信元クラスタでは送信元プ
ロセスからの要求に応答して、ライブラリ関数send
と送信データ読み出し回路110および送信回路28
が、OSの介入なしにデータをネットワーク4に送信す
る。以下、送信先クラスタでの動作を説明する。
【0050】 ステップ56:通信領域への収納可能性検査 ネットワーク4から送信先クラスタにパケットが到着す
ると、これをまず受信回路42が受け取り、通信領域識
別子(ID)をレジスタ37に、データ受信領域のオフ
セット(SO)をレジスタ38に、データ受信フラグの
オフセット(FO)をレジスタ39に、データ長(LE
N)をレジスタ40に、データをバッファ41にそれぞ
れコピーする。
【0051】続いて、通信領域テーブルアドレス生成回
路31(図3)がレジスタ37に格納された通信領域識
別子IDをもとにオフセット計算回路31−1により、
通信領域テーブル内16(図9)内のこのIDに対応す
るエントリのオフセットを計算する。これと通信領域テ
ーブルオリジンレジスタ6が指すメモリ2上の通信領域
テーブル16の先頭アドレスを加算回路31−2で加算
することによって、通信領域テーブル16の、この通信
領域識別子に対応するエントリアドレス(実アドレス)
を計算し、メモリアクセス回路7とバス3を介して、こ
のエントリの通信領域ベースアドレスBASEをレジス
タ32に、その通信領域のサイズLNをレジスタ33に
それぞれコピーする。
【0052】続いて、送信元プロセスが正常にプログラ
ムされていれば、受信したデータを格納すべきアドレス
とデータ受信フラグを格納すべきアドレスが実の通信領
域13に収まる。本実施例では、送信元プロセスのプロ
グラムエラーを検出するために、これらのアドレスが実
の通信領域13に収まるかを判定するようにもなってい
る。すなわち、判定回路35(図4)では、レジスタ3
8の内容であるデータ受信領域のオフセットSO、レジ
スタ39の内容であるデータ受信フラグのオフセットF
O、レジスタ40の内容であるデータ長LEN、レジス
タ33の内容である通信領域のサイズLNを用いて比較
回路35−1、35−2によって判定する。35−1と
35−2は、それぞれ図4に示した不等式で判定し、不
等式が成立すると書き込み不可信号を出力する。35−
1と35−2の出力信号をOR回路35−4によりOR
し、ここに信号が出力された場合、通信領域11に収ま
らないことになる。
【0053】ステップ59:割り込みの発生 判定によって実の通信領域13に収まらない場合には判
定回路35がバス3にハードウエア割込み信号を発生さ
せる。
【0054】ステップ60:通信の抑制 このハードウェア割り込み信号は、送信先クラスタの1
台以上のCPU1に通知される。この信号を最初に認識
したCPU1の割り込み処理ルーチンによりオペレーテ
ィングシステムが起動され、他クラスタのオペレーティ
ングシステム間との通信によって以降の送信を抑止す
る。
【0055】ステップ57:アドレス変換 実の通信領域13に収まる場合には、アドレス生成回路
34(図5)がレジスタ38の内容である受信データ領
域のオフセットSOとレジスタ32の内容である通信領
域13のベースアドレスBASEを用いて加算回路34
−1により受信したデータを格納する位置の実アドレス
を生成する。さらに、レジスタ39と32の内容である
データ受信フラグのオフセットFOとベースアドレスB
ASEを用いて加算回路34−2によりデータ受信フラ
グを格納する位置のの実アドレスを生成する。
【0056】ステップ58:データのストア ステップ57で生成した受信データの実アドレスとレジ
スタ40の内容であるデータ長LENを用いてメモリア
クセス回路7がバッファ41にある受信データを実の通
信領域13に転送する。さらにステップ57で生成した
データ受信フラグの実アドレスの位置に、メモリアクセ
ス回路7がデータ受信フラグをセットする。
【0057】以上のごとく、OSの介入なしに受信デー
タが実の通信領域に書き込まれる。以上において、送信
元プロセスでは受信データおよびデータ受信フラグの位
置を仮想の通信領域11の仮想アドレスで指定している
が、仮想の通信領域11は実の通信領域13に常駐して
いるので、ページフォルトにより書き込みが不成功に終
わることはない。つまり、送信元クラスタから送信先ク
ラスタにパケットを再送することがない。そのため、本
実施例では、従来技術のようにパケットの再送に備える
ためにパケットの写しを格納する領域を用意する必要が
ない。
【0058】次に、送信先プロセスの動作について説明
する。
【0059】送信先プロセスは、そのデータを使用した
い時点で、データの到着確認のためのライブラリ関数c
heckを実行すると、仮想の通信領域11にあるデー
タ受信フラグを、その仮想アドレスを用いて読み、受信
完了か否かをデータ受信フラグの値から判断する。送信
先プロセスはデータが送信される前に予めプログラマま
たはコンパイラの指定により、このデータ受信フラグを
リセットする。前述のようにデータの受信が完了すると
このフラグがセットされるため、送信先プロセスが受信
完了このフラグから判断できる。送信先プロセスは受信
完了を確認したあと、その受信データを仮想アドレスを
用いてアクセスする。フラグがリセットされたままの場
合には、送信先プロセスが仮想の通信領域11内のデー
タをアクセスしないようにプログラムされてにる。
【0060】次に、プロセスの終了について説明する。
オペレーティングシステムはプロセスを終了するとき
に、そのプロセスに対応するページテーブル15を削除
し、そのプロセスに対応するメモリ領域などのリソース
を開放するなど従来技術のUNIXと同様の動作をする
が、本実施例ではではさらに、通信領域テーブル16中
の、終了するプロセスに割当てられた実の通信領域13
に対応するエントリを削除する。さらに、終了するプロ
セスの名前をネットワークを介して他のクラスタのオペ
レーティングシステムに通知する。プロセスが終了した
ことを通知されたクラスタのオペレーティングシステム
は、ロケーションテーブル12−2から終了したプロセ
ス名に対応する項を削除する。以上が本発明の第1の実
施例である。
【0061】(第1実施例の変形例)以上に示した実施
例では、仮想の通信領域11を各仮想空間で同一のアド
レスに置くとしたが、ロケーションテーブル12−2
(図7)の各エントリに第4のフィールドを設け、ここ
に対応するプロセスの仮想の通信領域11の先頭の仮想
アドレスを格納し、さらに上記のステップ51において
送信元プロセスの仮想の通信領域11の先頭アドレスを
用いてデータ受信領域のオフセットを計算している部分
を、上記第4のフィールドの内容を用いるようにすれ
ば、各仮想空間の中の仮想の通信領域11の先頭の仮想
のアドレスを同一にしなくてもよい。
【0062】さらに、上記のステップ56では、受信し
たパケットに含まれており、レジスタ37に格納される
通信領域識別子IDを用いて実の通信領域13の先頭ア
ドレスと長さを得ているが、通信領域識別子IDのかわ
りにデータを受信するプロセスを一意に識別することが
可能な識別子を用い、この識別子から実の通信領域13
の先頭アドレスと長さを得る回路を受信データ書き込み
回路内に用意するようにしてもよい。
【0063】本発明の第2の実施例を図12を用いて説
明する。第2の実施例は、第1の実施例の変形であるた
め、相違点を中心に説明する。本実施例では、送信先プ
ロセスはオペレーティングシステムを介さずにデータを
受信するが、送信元プロセスのみ送信するときにオペレ
ーティングシステムを介してネットワークへデータを転
送する点で、第1の実施例と異なる。したがって、デー
タの送受信に関するオペレーティングシステムの介入は
第1の実施例より多いが、公知の技術よりは少ないとい
うメリットがある。図12はこの第2の実施例によるク
ラスタ100Bを示す。図において、図1と同一の番号
をもつ要素の構成は、第1の実施例の要素と同一であ
る。
【0064】本実施例では第1の実施例と異なり、各ク
ラスタ100Aにはリクエストテーブル17、リクエス
ト領域12、14、リクエストテーブルオリジンレジス
タ5がない。
【0065】図12において、122、123、12
4、125、126、129はそれぞれ図1の22、2
3、24、25、26、29に対応するレジスタで、バ
ス3に直接結合され、CPU1からメモリ2と同様にデ
ータを直接書きこむことができる。130はバス3に結
合するレジスタで、CPU1からメモリ2と同様にデー
タを直接読みだすことができる。122は送信先クラス
タのアドレスCLを格納するレジスタである。123は
送信先プロセスに割当てられた実の通信領域13の通信
領域識別子IDを格納するレジスタである。124は送
信先プロセスの仮想の通信領域11に対応する実の通信
領域13の中にあるデータ受信領域の、実の通信領域1
3の先頭の実アドレスからのオフセットSOを、同じく
125はデータ受信フラグのオフセットFOを格納する
レジスタである。126は送信するデータのデータ長L
ENを格納するレジスタである。129は送信元プロセ
スが送信するデータの先頭の実アドレスADRを格納す
るレジスタである。130には送信回路28がビジー状
態であるかそうでないかの状態CCをこの回路28が反
映する。127はバッファで、メモリ2から送信すべき
データを保持する。107はメモリアクセス回路でメモ
リのアドレスを与えられると、その位置に格納された値
をメモリ2から読み、指定されたレジスタやメモリ2に
書き込んだり、その逆に指定されたレジスタやメモリ2
から、メモリ2の別のアドレスに値を書き込むメモリア
クセス回路である。
【0066】続いて、本実施例に係る並列プロセッサの
動作のうち、第1の実施例と異なる部分について図13
を参照して説明する。
【0067】並列計算機の初期化について説明する。本
実施例では図1のリクエストテーブル17とリクエスト
テーブルオリジンレジスタ5がないため、これらに関す
る処理は行なわない。これ以外は、第1の実施例と同じ
である。
【0068】続いて、プロセスの初期化を説明する。本
実施例では図1の仮想のリクエスト領域12、実のリク
エスト領域14がないため、これらに関する処理は行な
わない。ただし、図1の仮想のリクエスト領域12の中
にあるロケーションテーブル12−2と同一内容のテー
ブル(図示せず)をオペレーティングシステムの内部に
作成する。これ以外は、第1の実施例と同じである。
【0069】次に、本発明に係るプロセス間のデータ通
信について説明する。本実施例では第1の実施例とは送
信元プロセスの動作が異なる。これ以外は同じであるた
め、これら異なる動作のみを図13を参照して説明す
る。
【0070】ステップ61:Sendシステムコール ユーザプログラムが、オペレーティングシステムのシス
テムコールを発行し、制御をオペレーティングシステム
に渡す。このコールは前述の第1の実施例におけるライ
ブラリ関数sendのcall文と同じ形式を有する。
【0071】ステップ62:引数の変換 オペレーティングシステムはシステムコールが発行され
ると、予めプロセスの初期化の時にオペレーティングシ
ステム内部のテーブル(図示せず)に登録した内容(第
1の実施例におけるロケーションテーブル12−2に相
当)を用いて、送信先プロセス名から送信先プロセスの
存在するクラスタのネットワーク上のアドレスと送信先
プロセスに割当てられた実の通信領域13の通信領域識
別子を決める。また、オペレーティングシステムは送信
データの先頭の仮想アドレスからページテーブル15を
用いてメモリ2上の実の通信領域13にある送信データ
の先頭の実アドレスを決める。さらに、第1の実施例と
同様にしてデータ受信領域の仮想アドレス、データ受信
フラグの仮想アドレスから、送信先プロセス内にある仮
想の通信領域11の先頭アドレスからのオフセットS
O、FOをそれぞれ求める。
【0072】 ステップ63:パラメータのレジスタへのセット 続いて、オペレーティングシステムはCC130をバス
3を介して読み、通信回路28がビジー状態でないこと
を確認し、レジスタ122、123、124、125、
126、129にそれぞれ送信先クラスタのアドレスC
L、送信先プロセスに割当てられた実の通信領域13の
通信領域識別子ID、データ受信領域のオフセットS
O、データ受信フラグのオフセットFO、送信データの
データ長LEN、送信データの先頭の実アドレスをセッ
トする。そして、実行の制御をユーザプログラムに渡
す。
【0073】続いて、メモリアクセス回路107はレジ
スタ129に値が書き込まれたことでCPU1から起動
のきっかけを与えられ、メモリ2上の129の示す実ア
ドレスから送信データをデータバッファ127にバス3
を介して読みだす。
【0074】ステップ64:次命令の実行 読み出しが終了するとユーザプログラムに制御を戻し、
次命令を実行する。
【0075】ステップ65:データの転送 続いて、送信回路28はレジスタ122、123、12
4、125、126とデータバッファ127を用いてパ
ケットを構成し、ネットワーク4に送信する。ネットワ
ーク4からパケットを受信したときの動作は、第1の実
施例と同様であるため省略する。
【0076】次にプロセスの終了について説明する。本
実施例では、第1の実施例と異なりリクエスト領域1
2、14が無いため、プロセスの終了に伴ってリクエス
ト領域の削除を行なう必要がない。
【0077】以上が、第2の実施例である。
【0078】本実施例によれば、送信元クラスタにおい
てオペレーティングシステムの介入があるため、第1の
実施例に比べてオーバヘッドが若干大きくなる。しか
し、公知の技術と異なり、オペレーティングシステム内
に送信バッファおよび受信バッファを設ける必要がない
のは、第1の実施例と同じであるため、公知の技術に比
べてデータ送受信のオーバヘッドが低減できる。さらに
本実施例は、第1の実施例よりも簡単な回路で構成する
ことができる。
【0079】(第3実施例)本発明の第3の実施例を図
14によって説明する。第3の実施例は、第2の実施例
の変形であるため、相違点を中心に説明する。本実施例
は、送信元プロセスが送信するときにオペレーティング
システムを介してネットワークへデータを転送するが、
送信先プロセスはオペレーティングシステムを介さずに
データを受信する点では第2の実施例と同じであるが、
データ転送のために必要なパラメータをオペレーティン
グシステムがメモリ2上に置く点が異なる。図14は、
本実施例によるクラスタ100Bを示す。図において、
図1または図12と同一の番号を持つ要素の構成は、第
1または第2の実施例の要素と同一である。図14にお
いて、218はリクエスト領域であり、メモリ2上にあ
りオペレーティングシステムが管理する。230はリク
エスト領域オリジンレジスタであり、リクエスト領域2
18の先頭アドレスを格納する。222、223、22
4、225、226、227はレジスタであり、それぞ
れ第2の実施例の122、123、124、125、1
26および127に対応する。222は送信先クラスタ
のネットワーク上のクラスタアドレスCLを格納する。
223は送信先プロセスに割当てられた実の通信領域1
3の通信領域識別子IDを格納する。224は送信先プ
ロセスに割当てられた実の通信領域13中でのデータ受
信領域のオフセットSOを、225は同じくデータ受信
フラグのオフセットFOを格納する。226は送信デー
タのデータ長LENを格納する。229はレジスタで、
送信回路128の状態CCを反映した値がセットされ
る。227はデータバッファで、ネットワークへ送出す
るために、送信データの内容を格納する。207はメモ
リアクセス回路で、アドレスを渡されるとメモリ2をア
クセスして値を指定されたレジスタに格納したり、レジ
スタの値をメモリに書き込む。
【0080】続いて、本実施例に係る並列プロセッサの
動作を説明する。本実施例に係る動作は第2の実施例と
異なる動作についてのみ説明する。
【0081】並列計算機の初期化について説明する。本
実施例ではオペレーティングシステムの起動時にメモリ
2上にリクエスト領域218を確保してその先頭の実ア
ドレスをリクエスト領域オリジンレジスタ230にセッ
トする。これ以外は第2の実施例と同一である。
【0082】次に、本実施例に係るプロセス間のデータ
通信について説明する。本実施例では送信元プロセスの
動作が第2の実施例と異なるため、これらのみについて
図15を参照して説明する。
【0083】ステップ61:Sendシステムコール ユーザプロセスからシステムコールを発行する動作は第
2の実施例の場合と同一である。
【0084】ステップ62:引数の変換 第2の実施例と同様である。
【0085】 ステップ66:リクエスト領域へのセット 続いて、オペレーティングシステムはCC229をバス
を介して読んで、通信回路28がビジー状態でないこと
を確認し、メモリ2上のリクエスト領域218に送信先
クラスタのアドレスCL、送信先プロセスに割当てられ
た実の通信領域13の通信領域識別子ID、データ受信
領域のオフセットSO、データ受信フラグのオフセット
FO、送信データのデータ長、送信データの先頭の実ア
ドレスをセットする。このセットに伴って、メモリアク
セス回路207が起動するが、リクエスト領域218に
セマフォアを設けて、セマフォアを介してメモリアクセ
ス回路207を起動することもできる。そして、実行の
制御をユーザプログラムに渡し、次命令を実行する(図
15の64)。
【0086】 ステップ67:パラメータのレジスタへのセット 続いて、OSがリクエスト領域アクセス回路21Aに、
リクエスト領域218の読み出しをバス3を介して指示
する。この回路21Aはリクエスト領域オリジンレジス
タ230からリクエスト領域218の各エントリを生成
し、メモリアクセス回路207を介して、それらの内容
を読み出し、レジスタ222、223、224、22
5、226にそれぞれ送信先クラスタのアドレスCL、
送信先プロセスに割当てられた実の通信領域13の通信
領域識別子ID、データ受信領域のオフセットSO、デ
ータ受信フラグのオフセットFO、送信データのデータ
長LENをセットする。また、メモリアクセス回路20
7はメモリ2から送信データの先頭の実アドレスにより
送信データをデータバッファ227にコピーする。
【0087】ステップ65:データの転送 これらのレジスタがセットされると、送信回路128が
レジスタ222、223、224、225、226とバ
ッファ227を用いてパケットを構成し、ネットワーク
へ送信する。
【0088】ネットワーク4からパケットを受信したと
きの動作は、第2の実施例と同様であるため省略する。
【0089】以上が第3の実施例である。本実施例によ
れば、第2の実施例と同様に、第1の実施例よりも簡単
な回路で、第1の実施例に匹敵する性能を得ることがで
きる。
【0090】(第4実施例)本発明の第4の実施例を説
明する。第4の実施例は第3の実施例の変形である。第
4の実施例のクラスタの装置構成は第3の実施例と同一
であるため図14を用いて説明するが、リクエスト領域
218とリクエスト領域オリジンレジスタ230の使い
方が異なるため、これを中心に説明する。
【0091】まず、システムの初期化を説明する。第3
の実施例と異なり、リクエスト領域218はメモリ2上
に固定されていないので、システムを初期化するときに
は確保せず、データ送信時に確保する。また、システム
の初期化でリクエスト領域オリジンレジスタ230に値
をセットしない。
【0092】次に、送信元プロセスのオペレーティング
システムの動作を図16を参照して説明する。
【0093】ステップ61:Sendシステムコール 第3の実施例と同じである。
【0094】ステップ62:引数の変換 第3の実施例と同じである。
【0095】ステップ68:リクエスト領域へのセット オペレーティングシステムはメモリ2上にリクエスト領
域218を確保して、218に送信先クラスタのアドレ
スCL、送信先プロセスに割当てられた実の通信領域1
3の通信領域識別子ID、データ受信領域のオフセット
SO、データ受信フラグのオフセットFO、送信データ
のデータ長LEN、送信データの先頭の実アドレスアド
レスを書き込む。
【0096】ステップ69:リクエスト領域オリジンレ
ジスタのセット CC229を読み込んで送信回路128がビジー状態で
ないことを確認し、リクエスト領域218の先頭アドレ
スをリクエスト領域オリジンレジスタ230にセットす
る。230へのセットによって、メモリアクセス回路2
07および送信回路128が起動する。そして、オペレ
ーティングシステムは実行の制御をユーザプログラムに
渡し、次命令を実行する(図16の64)。
【0097】ステップ67:パラメータのレジスタへの
セット 第3の実施例と同じである。
【0098】ステップ65:データの転送 第3の実施例と同じである。
【0099】ネットワーク4からパケットを受信したと
きの動作は、第3の実施例と同じであるため、省略す
る。
【0100】以上が第4の実施例である。
【0101】本実施例では、リクエスト領域218はデ
ータ送信のたびに確保してよい。そのため、クラスタに
含まれる各CPU1が、メモリ2中の異なるアドレスに
リクエスト領域218をそれぞれ確保するように制御す
ることにより、ステップ61、ステップ62、およびス
テップ68を各CPU1で同時に並行して実行すること
ができるようになる。このようにすると、あるCPU1
が実行したステップ69により起動された送信回路12
8の動作と並行して、他のCPU1はステップ61、6
2、68を実行することができ、送信回路128の動作
が終了すると直ちに他のCPU1がステップ69を実行
することができる。そのため、第3の実施例に比べてデ
ータ送信に介入するオペレーティングシステムのオーバ
ヘッドをより少なくすることができる。
【0102】
【発明の効果】本発明によれば、ユーザプロセス間のデ
ータ転送において、ユーザプロセスの起動時に各クラス
タのオペレーティングシステムの間での通信による初期
化処理が必要であるが、実際のユーザプロセス間のデー
タ転送においてはあるクラスタにあるユーザプロセスの
仮想空間中ののデータを他のクラスタにあるユーザプロ
セスの仮想空間に転送するときにオペレーティングシス
テムの中のバッファ領域にデータをコピーすることなし
に直接転送することができる。そのため、小さなオーバ
ヘッドで、かつ、データ転送とは無関係なユーザプロセ
スの仮想空間に不当な変更を与えずにデータ転送を行な
うことができる。
【図面の簡単な説明】
【図1】本発明の第1の実施例に係る並列計算機の構成
図。
【図2】リクエスト選択回路の構成図。
【図3】通信領域テーブルアドレス生成回路の構成図。
【図4】判定回路の構成図。
【図5】アドレス生成回路の構成図。
【図6】通信領域の構成図。
【図7】リクエスト領域の構成図。
【図8】ページテーブルの構成図。
【図9】通信領域テーブルの構成図。
【図10】リクエストテーブルの構成図。
【図11】本発明の第1の実施例に係る並列計算機のプ
ロセス間データ転送フローを示す図。
【図12】本発明の第2の実施例に係る並列計算機の構
成図。
【図13】本発明の第2の実施例に係る並列計算機のプ
ロセス間データ転送フローを示す図。
【図14】本発明の第3の実施例に係る並列計算機の構
成図。
【図15】本発明の第3の実施例に係る並列計算機のプ
ロセス間データ転送フローを示す図。
【図16】本発明の第4の実施例に係る並列計算機のプ
ロセス間データ転送フローを示す図。
【符号の説明】
1…CPU、2…メモリ、3…バス、4…ネットワー
ク、5…リスエストテーブルオリジンレジスタ、6…通
信領域テーブルオリジンレジスタ、7…メモリアクセス
回路、10…仮想空間、11…通信領域、12…リクエ
スト領域、13…通信領域、14…リクエスト領域、1
5…ページテーブル、16…通信領域テーブル、17…
リクエストテーブル、21…リクエスト選択回路、22
〜26…レジスタ、27…バッファ、28…送信回路、
31…通信領域テーブルアドレス生成回路、32〜33
…レジスタ、34…アドレス生成回路、35…判定回
路、37〜40…レジスタ、41…バッファ、42…受
信回路、110…送信データ読みだし回路、120…受
信データ書き込み回路。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 中越 順二 東京都国分寺市東恋ケ窪1丁目280番地 株式会社日立製作所中央研究所内 (72)発明者 千葉 寛之 東京都国分寺市東恋ケ窪1丁目280番地 株式会社日立製作所中央研究所内 (72)発明者 首藤 信一 東京都国分寺市東恋ケ窪1丁目280番地 株式会社日立製作所中央研究所内 (72)発明者 武内 茂雄 東京都小平市上水本町5丁目20番1号 日立超エル・エス・アイ・エンジニアリ ング株式会社内 (72)発明者 緒方 康洋 東京都小平市上水本町5丁目20番1号 日立超エル・エス・アイ・エンジニアリ ング株式会社内 (72)発明者 鳥羽 達 東京都小平市上水本町5丁目20番1号 日立超エル・エス・アイ・エンジニアリ ング株式会社内 (56)参考文献 特開 平2−311050(JP,A) 特開 平2−28748(JP,A) 特開 平3−18959(JP,A) 特開 平4−291660(JP,A) 特開 平4−151721(JP,A) 特開 平4−149651(JP,A) (58)調査した分野(Int.Cl.7,DB名) G06F 15/16 - 15/177 G06F 12/08 - 12/12

Claims (12)

    (57)【特許請求の範囲】
  1. 【請求項1】1台以上のプロセッサと該1台以上のプロ
    セッサにより使用される主メモリとからなる複数のクラ
    スタと、該複数のクラスタを接続するネットワークとを
    具備し、それぞれのクラスタにおいて少なくとも1つの
    仮想空間が割当てられた少なくとも1つのプロセスが
    OSの制御下で実行される並列プロセッサにおいて、 それぞれのクラスタで実行されるプロセスがそれぞれ使
    用する仮想空間内に位置し、所定の大きさを持つ仮想の
    通信領域にマッピングされるべき実の通信領域をそれぞ
    れのクラスタ内の主メモリに常駐させ、 送信元クラスタでは送信先プロセスに割り当てられた仮
    想の通信領域に属する送信先仮想アドレスに基づいて送
    信先プロセスに割り当てられた実の通信領域内のデータ
    格納位置を決定し、 送信元プロセスに割当てた実の通信領域にある、送信
    元プロセスにより指定された送信データとともに、決定
    されたデータ格納位置を指定する位置情報を送信元クラ
    スタから送信先クラスタに送信し、 送信先クラスタでは、送信先プロセスの実の通信領域内
    の、受信した位置情報により指定される位置に、受信し
    たデータを、送信先プロセスを制御するOSを介さない
    で書き込むプロセッサ間通信方法。
  2. 【請求項2】上記送信データの送信は、上記送信データ
    を送信元プロセスを制御するOSの介入なしに送信元プ
    ロセスに割当てた実の通信領域から読み出すことによ
    り行う請求項1記載のプロセッサ間通信方法。
  3. 【請求項3】上記送信データの送信は、上記送信データ
    を送信元プロセスを制御するOSの下で送信元プロセス
    に割当てた実の通信領域から読み出すことにより行う
    請求項1記載のプロセッサ間通信方法。
  4. 【請求項4】上記位置情報は、送信先プロセスに割
    てられた実の通信領域の先頭から送信データを格納する
    位置までのオフセットアドレスを含み、送信先クラスタ
    では送信先プロセスに割当てられた実の通信領域の先
    頭アドレスと、送信された位置情報内の上記オフセット
    アドレスから受信したデータを格納する位置を決定する
    請求項1記載のプロセッサ間通信方法。
  5. 【請求項5】上記送信元クラスタでは、送信先プロセス
    に割り当てられた仮想の通信領域の先頭アドレスと送信
    先仮想アドレスとの差を上記オフセットアドレスとして
    もとめる請求項4記載のプロセッサ間通信方法。
  6. 【請求項6】上記位置情報は、送信先プロセスの割り当
    てられた実の通信領域の識別子をさらに含み、上記送信
    先クラスタでは、該識別子から上記実の通信領域の先頭
    アドレスを決定し、該先頭アドレスと上記オフセットア
    ドレスとら上記データを格納する位置を決定する請求
    項4記載のプロセッサ間通信方法。
  7. 【請求項7】上記送信元プロセスにより上記オフセット
    アドレスとは独立に指定され、上記送信先プロセスに割
    り当てられた通信領域内のフラグ領域の、該通信領域の
    先頭アドレスからのオフセットを示すフラグオフセット
    アドレスをさらに上記送信先クラスタに送信し、 上記送信先クラスタでは、該フラグ領域の位置を送信さ
    れたフラグオフセットアドレスにより決定し、上記デー
    タの上記送信先クラスタへの書き込みが終了した後に、
    該フラグ領域の位置に予めさだめられた特定の値を書き
    込むことを特徴とする請求項4記載のプロセッサ間通信
    方法。
  8. 【請求項8】1台以上のプロセッサと該1台以上のプロ
    セッサにより使用される主メモリとからなる複数のクラ
    スタと、該複数のクラスタを接続するネットワークとを
    具備し、それぞれのクラスタにおいて少なくとも1つの
    仮想空間が割当てられた少なくとも1つのプロセスが
    OSの制御下で実行される並列プロセッサにおいて、 それぞれのクラスタで実行されるプロセスがそれぞれ使
    用する仮想空間内に位置し、所定の大きさを持つ仮想の
    通信領域にマッピングされるべき実の通信領域をそれぞ
    れのクラスタ内の主メモリに常駐させ、 送信元クラスタで実行中の送信元プロセスに割当てた
    実の通信領域から、送信先クラスタの送信先プロセスに
    当てた実の通信領域に送信データを転送するプロセ
    ッサ間通信方法。
  9. 【請求項9】1台以上のプロセッサと該1台以上のプロ
    セッサにより使用される主メモリとからなる複数のクラ
    スタと、該複数のクラスタを接続するネットワークとを
    具備し、それぞれのクラスタにおいて少なくとも1つの
    仮想空間が割当てられた少なくとも1つのプロセスが
    OSの制御下で実行される並列プロセッサにおいて、 各クラスタに、 そのクラスタで実行されるプロセスが使用する仮想空間
    内の所定の位置に位置し、所定の大きさを有する仮想の
    通信領域にマッピングされるべき、そのクラスタの主メ
    モリに常駐された実の通信領域と、 該実の通信領域内の、送信元プロセスが指定した送信デ
    ータを読み出し、送信回路に供給する手段と、 上記送信回路により読み出されたデータを送信先クラス
    タに送信する手段と、他のクラスタから送信されたデー
    タを送信先プロセスに割り当てられた実の通信領域に格
    納する手段とを有することを特徴とする並列プロセッ
    サ。
  10. 【請求項10】各クラスタに、送信元プロセスが指定す
    る送信先プロセスに応答して、それが使用する通信領域
    を一意に識別する通信領域識別手段と、送信元プロセス
    が指定する送信先仮想アドレスから、送信先プロセスに
    割り当てられた実の通信領域内のデータ格納位置を決定
    し、上記送信回路に供給する手段と、他のクラスタから
    受信した通信領域識別子から該通信領域の先頭アドレス
    を決定する手段と、決定した上記先頭アドレスと受信し
    たデータ格納位置とからそのクラスタの主メモリ内のデ
    ータ格納位置を決定する手段とを有する請求項9記載の
    並列プロセッサ。
  11. 【請求項11】上記データ格納位置が上記送信先プロセ
    スに割り当てられた送信先プロセスに割当てられた通
    信領域に収まるか否かを判定する手段と、該判定手段に
    よる判定結果を送信元クラスタのプロセッサに通知する
    通知手段をさらに有する請求項9記載の並列プロセッ
    サ。
  12. 【請求項12】独立に動作可能な1台以上のプロセッサ
    と、該プロッセッサにより使用されるローカルメモリと
    を有するクラスタを複数用いて構成され、さらにクラス
    タ間でデータの受け渡しをするためのネットワークを有
    する並列計算機において、 各クラスタには、 各クラスタのユーザプロセスに対応して、該クラスタの
    ローカルメモリに常駐して該プロセスの仮想アドレス空
    間にマッピングされた通信領域を備え、且つ、 該プロセスが実行するデータ送信命令で指定するデータ
    送信先である受信プロセスを識別する受信プロセス識別
    子を、該受信プロセスが存在するクラスタを識別する受
    信クラスタ識別子と該受信プロセスに対応する通信領域
    を識別する通信領域識別子との組に変換する宛先変換手
    段と、 該受信クラスタ識別子と通信領域識別子とで指定された
    通信領域の中のデータを格納すべきデータアドレスと、
    該送信命令で指定された該通信領域内の該データアドレ
    スにデータを格納し終えたことを示すフラグを格納すべ
    きフラグアドレスとを該送信命令で指定されたデータと
    共に上記ネットワークに送出する送出手段と、 該ネットワークから受信した上記通信領域識別子と上記
    データアドレスとから上記受信プロセスに対応する通信
    領域の中の上記データを格納すべきアドレスに対応する
    実アドレスを求め、かつ受信した上記通信領域識別子と
    上記フラグアドレスから上記受信プロセスに対応する
    通信領域の中の上記フラグを格納すべきアドレスに対応
    する実アドレスを求めるアドレス変換手段とを有する
    とを特徴とする並列プロセッサ。
JP24109491A 1991-03-20 1991-09-20 並列計算機 Expired - Lifetime JP3375649B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP24109491A JP3375649B2 (ja) 1991-09-20 1991-09-20 並列計算機
US07/853,427 US5386566A (en) 1991-03-20 1992-03-18 Inter-processor communication method for transmitting data and processor dependent information predetermined for a receiving process of another processor
DE4208924A DE4208924B4 (de) 1991-03-20 1992-03-19 Verfahren zur Kommunikation zwischen Prozessoren und Parallelverarbeitungscomputer hierfür

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP24109491A JP3375649B2 (ja) 1991-09-20 1991-09-20 並列計算機

Publications (2)

Publication Number Publication Date
JPH0619856A JPH0619856A (ja) 1994-01-28
JP3375649B2 true JP3375649B2 (ja) 2003-02-10

Family

ID=17069202

Family Applications (1)

Application Number Title Priority Date Filing Date
JP24109491A Expired - Lifetime JP3375649B2 (ja) 1991-03-20 1991-09-20 並列計算機

Country Status (1)

Country Link
JP (1) JP3375649B2 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1998041927A1 (fr) * 1997-03-19 1998-09-24 Hitachi, Ltd. Calculateur parallele
JPH11203254A (ja) 1998-01-14 1999-07-30 Nec Corp 共有プロセス制御装置及びプログラムを記録した機械読み取り可能な記録媒体
JP5132339B2 (ja) * 2008-01-31 2013-01-30 キヤノン株式会社 情報処理装置及びその制御方法、及びコンピュータプログラム
JP5867482B2 (ja) 2013-11-08 2016-02-24 日本電気株式会社 情報処理装置、情報処理方法、プログラム、計算処理装置、計算処理方法
JP6922879B2 (ja) 2018-11-30 2021-08-18 日本電気株式会社 通信装置、情報処理システム、および通信方法

Also Published As

Publication number Publication date
JPH0619856A (ja) 1994-01-28

Similar Documents

Publication Publication Date Title
US5386566A (en) Inter-processor communication method for transmitting data and processor dependent information predetermined for a receiving process of another processor
US4951193A (en) Parallel computer with distributed shared memories and distributed task activating circuits
US5790807A (en) Computer sysem data I/O by reference among CPUS and I/O devices
US7533197B2 (en) System and method for remote direct memory access without page locking by the operating system
US4937737A (en) Process transparent multi storage mode data transfer and buffer control
JP3385091B2 (ja) 計算機間の排他制御装置
JP3807250B2 (ja) クラスタシステム、コンピュータ及びプログラム
US6668314B1 (en) Virtual memory translation control by TLB purge monitoring
JPH09506727A (ja) 大規模並列処理システムのためのメッセージ機構
JP2006216068A (ja) コンピュータ・システムの異なるパーティション中で複数のオペレーティング・システムを動作させ、異なるパーティションが共用メモリを介して相互に通信できるようにするコンピュータ・システムおよび方法
US5954794A (en) Computer system data I/O by reference among I/O devices and multiple memory units
JP2000020490A (ja) 遠隔手続き呼出し機構またはオブジェクトリクエストブローカ機構を有する計算機、データ転送方法、および転送方法記憶媒体
JPH01200466A (ja) データ処理システム
US5852719A (en) System for transferring data over a network in which a data source sends only a descriptor which a data sink uses to retrieve data
US5941959A (en) System for transferring a data stream to a requestor without copying data segments to each one of multiple data source/sinks during data stream building
JP3375649B2 (ja) 並列計算機
JP2001333137A (ja) 自主動作通信制御装置及び自主動作通信制御方法
JP3169624B2 (ja) プロセッサ間通信方法およびそのための並列プロセッサ
JPH1173365A (ja) データ移動操作を最適化する方法
JP2736237B2 (ja) 遠隔メモリアクセス制御装置
US7320044B1 (en) System, method, and computer program product for interrupt scheduling in processing communication
EP0789306A2 (en) Computer system data I/O by reference among multiple cpus
CN117519955B (zh) 一种加速设备的控制方法、系统、装置及加速设备
JPH08106440A (ja) 分散共有メモリ計算機システム
JP2781999B2 (ja) マルチプロセツサシステムにおける共通データチヤネル装置起動方式

Legal Events

Date Code Title Description
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20021029

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20071129

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20081129

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20081129

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20091129

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101129

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101129

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111129

Year of fee payment: 9

EXPY Cancellation because of completion of term