JP3312361B2 - 分散共有メモリシステム - Google Patents

分散共有メモリシステム

Info

Publication number
JP3312361B2
JP3312361B2 JP07466994A JP7466994A JP3312361B2 JP 3312361 B2 JP3312361 B2 JP 3312361B2 JP 07466994 A JP07466994 A JP 07466994A JP 7466994 A JP7466994 A JP 7466994A JP 3312361 B2 JP3312361 B2 JP 3312361B2
Authority
JP
Japan
Prior art keywords
processor module
memory
message
distributed shared
shared memory
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
JP07466994A
Other languages
English (en)
Other versions
JPH07282027A (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.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Priority to JP07466994A priority Critical patent/JP3312361B2/ja
Publication of JPH07282027A publication Critical patent/JPH07282027A/ja
Application granted granted Critical
Publication of JP3312361B2 publication Critical patent/JP3312361B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Multi Processors (AREA)

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、分散共有メモリを介し
て複数のプロセッサモジュール間でデータ転送を行う際
の分散共有メモリの構成ならびに管理に関し、特に大規
模分散処理システムにおけるデータ送受信に好適な分散
共有メモリシステムに関する。
【0002】
【従来の技術】従来、複数のプロセッサを組み合わせた
マルチプロセッサシステムにおいて、複数のスレッド、
つまり並列実行の単位となる軽量プロセスの間でメッセ
ージと呼ばれるデータを交信しながら処理を進行させる
分散処理方式が提案されている。この分散処理方式を具
体的に実現する案として、例えば、特公平5−1134
1号公報に示されている技術を適用する方法が考えられ
る。図2はそのシステム構成ブロックを示したもので、
110は通信機構、111は通信機構110の制御部、
112は共用メモリ、113は転送制御部、120は計
算機、121は中央処理装置、122は主記憶装置、1
24は通信領域を示す。疎結合マルチプロセッサシステ
ムを構成する各計算機120の主記憶装置122の記憶
領域には、同じ領域構成の通信領域124が設けられ、
各通信領域124は、このシステムの各計算機120に
割り当てられたブロックに分割されている。また、通信
機構110には、通信領域124と同一の構成の記憶領
域からなる共用メモリ112を設け、転送制御部113
を経て、全ての主記憶装置122と接続し転送制御部1
13の制御によって主記憶装置122の通信領域124
と共用メモリとの対応ブロック間でデータ転送が可能と
なるように構成されている。ここで、送信スレッドが計
算機A、受信スレッドが計算機Bに存在し、送信スレッ
ドから受信スレッドへデータを送る場合、送信スレッド
の計算機120Aでは、CPU121が、通信領域12
4の宛先計算機120Bに対応するブロックBにデータ
を書き込み、通信機構110に送る。通信機構110の
制御部111がこの要求を受信し、要求元(送信スレッ
ド)の宛先対応ブロックBのデータを、共用メモリ11
2の同じブロックBに転送し、宛先のCPU121に割
り込み要求を送る。宛先のCPU121は割り込みによ
って、データ受信の必要を知ると、通信機構に応答し、
その応答により通信機構110では、共用メモリ112
の宛先対応ブロックBから、宛先通信領域124の同じ
ブロックBへデータを転送することにより、スレッド間
のデータ送受信を実現することができる。
【0003】
【発明が解決しようとする課題】上記従来技術では、宛
先計算機すなわち受信側計算機対応にデータの書き込み
領域が決められているため、例えば計算機Aから計算機
Bへのデータ送受信は、計算機Cから計算機Bへのデー
タ送受信と同じ対応ブロックBを使用することになり、
宛先計算機を同じくする複数の送信側計算機間で、ブロ
ックを捕捉するための競合整理を通信機構110で集中
的に行う必要がある。しかしながら、通信機構110は
システムに1個のみ設置されているので、データ送受信
頻度が高い場合には競合整理の負荷が増大し、通信機構
110の制御部111がシステム全体の性能ボトルネッ
クなってしまうという問題がある。さらに、この方式の
構造では、データは送信側のブロックから通信機構11
0内の共用メモリ112に一旦蓄積された後、受信側の
ブロックに転送されるので、通信機構110の転送制御
部113がシステム全体のメッセージ転送能力の上限を
決めてしまう他、データの蓄積によってメッセージ転送
遅延も大きくなるという問題がある。本発明の目的は、
このような問題点を改善し、特に大規模分散処理システ
ムにおけるデータ送受信を効率よく行うことが可能な分
散共有メモリシステムを提供することにある。
【0004】
【課題を解決するための手段】上記目的を達成するた
め、本発明の分散共有メモリシステムは、分散共有メモ
リシステムにおいて、複数のプロセッサモジュールの各
々は、一つ以上のプロセッサ(図3の19−1、19−
2)、分散共有メモリ(図3の21−1、21−2)、
メモリセグメント管理手段(図6の60−1、60−
2)、データ転送手段(図3の23−1、23−2)を
具備し、分散共有メモリは、全プロセッサモジュールで
同一のアドレスが割り付けられ、その分散共有メモリが
属するプロセッサモジュールのプロセッサからアクセス
され、その分散共有メモリは、データを記憶するための
複数のメモリセグメント(図1のX12−1、Y12−
1等)を含み、その複数のメモリセグメントは、データ
送信側である送信プロセッサモジュールと、データ受信
側である受信プロセッサモジュールの組み合わせで指定
される管理単位毎に分類され、その管理単位内の各メモ
リセグメントは、送信側の分散共有メモリと受信側の分
散共有メモリの同一アドレスロケーションに配置され
て、一つのメモリセグメントペアを構成し、そのメモリ
セグメントペアは、ペアを単位として送信側プロセッサ
モジュールのメモリセグメント管理手段または受信側プ
ロセッサモジュールのメモリセグメント管理手段の何れ
かによって重複しないように管理され、その送信側プロ
セッサモジュールのメモリセグメント管理手段は、メモ
リセグメント補捉要求に対しては、管理下のメモリセグ
メントペアのうち1ペア(A,B)を捕捉し、送信側プ
ロセッサモジュールのデータ転送手段は、捕捉されたメ
モリセグメントA内のデータを受信側プロセッサモジュ
ールに転送し、受信側プロセッサモジュールのデータ転
送手段は、受信したデータを、受信側プロセッサモジュ
ールの分散共有メモリ内の、送信側と同一アドレスでペ
アを構成するメモリセグメントBに転送し、受信側プロ
セッサモジュールのメモリセグメント管理手段は、メモ
リセグメントペア(A,B)の解放要求に対して、その
メモリセグメントペア(A,B)を解放して受信側プロ
セッサモジュールで再利用すること等に特徴がある。ま
た、各分散共有メモリは、その分散共有メモリが属する
プロセッサモジュールが送信または受信するデータを記
憶するメモリセグメントに相当する容量のメモリのみを
実装することに特徴がある。さらに、送信側プロセッサ
モジュールと受信側プロセッサモジュールとが同一であ
るローカル転送データと、送信側プロセッサモジュール
と受信側プロセッサモジュールとが異なるリモート転送
データを識別する手段(図6の60−1、60−2)を
具備し、ローカル転送データの場合とリモート転送デー
タの場合とで、異なる数のメモリセグメントを割り当
て、ローカル転送データの場合には同一のメモリセグメ
ントを用い、送信スレッドが直接、データを書こ込み、
受信スレッドが直接、そのデータを読み出すことに特徴
がある。
【0005】
【作用】本発明においては、分散共有メモリは、全ての
プロセッサモジュール間で同一のアドレスが割り付けら
れ、分散共有メモリ内の複数のメモリセグメントは送信
プロセッサモジュールと受信プロセッサモジュールの組
み合わせで指定される管理単位毎に分類され、各メモリ
セグメントは送信プロセッサモジュールまたは受信プロ
セッサモジュールの何れかによって捕捉、解放の管理が
行われる。従って、各プロセッサモジュール毎に管理さ
れるメモリセグメントが異なるので、異なる二つの送信
プロセッサモジュールから、同一受信プロセッサモジュ
ール宛てにデータ通信要求が同時に発生しても、各送信
側プロセッサモジュールが、互いに重複しないメモリセ
グメントを捕捉することができ、プロセッサモジュール
間でメモリセグメント捕捉のための競合処理が不要とな
る。従って、性能低下や性能ボトルネックを回避するこ
とができる。捕捉されたメモリセグメント内のデータ
は、データ転送機構によって受信側の分散共有メモリ
の、送信側と同一アドレスのメモリセグメントに書き込
まれ、受信スレッドによってメモリセグメントからデー
タが読み出される。受信側プロセッサモジュールは、上
記メモリセグメントが不要となった時、受信側プロセッ
サモジュールで解放して再利用するか、あるいは送信プ
ロセッサモジュールに通知し、送信プロセッサモジュー
ルで解放して再利用する。このように、送信側でのメッ
セージバッファ捕捉に伴い、自動的に受信側のメッセー
ジバッファ捕捉もなされるので、受信側のメッセージバ
ッファ捕捉のオーバヘッドがなくなる。また、各プロセ
ッサモジュールは、自分がデータ送受信に使用する全て
の受信プロセッサ対応の分散共有メモリのみを実装す
る。これによって、広い共有アドレス空間に対して少な
いメモリ実装量で実現する。また、ローカル転送データ
かリモート転送データかを識別できるようにして、例え
ばローカル転送データ用には多数のメモリセグメント
を、リモート転送データ用には比較的少数のメモリセグ
メントを割り当てることにより、ローカル転送データに
ついては物理的な転送や複写を不要にするとともに、ロ
ーカル/リモート転送データのトラヒック・アンバラン
スにも柔軟に対処できる。
【0006】
【実施例】以下、本発明の一実施例を図面により説明す
る。本実施例は、プロセッサモジュール内およびプロセ
ッサモジュール間でメッセージと呼ばれるデータを送受
信するもので、データを記憶するメモリセグメントをメ
ッセージバッファと称して説明する。図3は、本発明の
一実施例における分散共有メモリシステムの構成図であ
る。図3において、18−1、18−2はマルチプロセ
ッサシステムにおけるプロセッサモジュール、19−
1、19−2はプロセッサ、20−1、20−2はそれ
ぞれ対応するプロセッサ19−1、19−2から読み書
きアクセス可能なローカルメモリ、21−1、21−2
は全プロセッサモジュール間で同一のアドレスを与えら
れた分散共有メモリである。但し、プロセッサ19−1
からアクセスできる分散共有メモリは21−1のみであ
り、分散共有メモリ21−2はアクセスできない。同様
に、プロセッサ19−2からアクセスできる分散共有メ
モリ21−2のみであり、分散共有メモリ21−1には
アクセスできない。22−1、22−2はそれぞれ分散
共有メモリ21−1、21−2上に配置されたメッセー
ジエリア群で、両者とも同じアドレスを持つものとす
る。23−1、23−2はメッセージ転送装置で、メッ
セージ同期化ならびにプロセッサモジュール間のメッセ
ージ転送を行う。24−1、24−2はプロセッサモジ
ュール間でメッセージ転送を行うための要求を記憶する
キュー(待ち行列)でモジュール間転送要求キュー(I
PQと略す)と呼ぶ。IPQ24−1、24−2はそれ
ぞれ、他プロセッサモジュールへの要求を記憶する要求
出力キュー(IPOQと域す)25−1、25−2と、
自プロセッサモジュールおよび他プロセッサモジュール
からの要求を記憶する要求入力キュー(IPIQと略
す)26−1、26−2より構成される。27−1、2
7−2は、メッセージ等を一時的に記憶するキュー(待
ち行列)で、メッセージバッファキュー(MBQと略
す)と呼ぶ。MBQ27−1、27−2はそれぞれ、自
プロセッサモジュールからのメッセージを記憶する出力
メッセージバッファキュー(MBOQと略す)28−
1、28−2と、他プロセッサモジュールからのメッセ
ージを記憶する入力メッセージバッファキュー(MBI
Qと略す)29−1、29−2より構成される。30−
1、30−2はそれぞれ、分散共有メモリ21−1、2
1−2とMBQ27−1、27−2との間のデータ転
送、あるいは自プロセッサモジュールのMBQ27−
1、27−2と他プロセッサモジュールのMBQとの間
のデータ転送を司る転送制御部である。32はモジュー
ル間通信路で、指定された宛先のプロセッサモジュール
に情報を転送する。33−1、33−2はメッセージ同
期化機構で、送信ストレッドあるいは受信ストレッドの
うち、先に実行されたストレッドに関して、そのメッセ
ージ送信要求または受信要求を記憶しておき、残りの一
方のストレッドが実行されるまで待ち合わせる機能を有
する。54−1、54−2は、同期待ちバッファ(SW
B)で、送信要求あるいは受信要求を記憶しておく部分
である。
【0007】図1は、本発明の一実施例における分散共
有メモリ内のメッセージバッファの配置を示す図であ
る。図1において、分散共有メモリ21−3(図3では
図示省略)は第3番目のプロセッサモジュール18−3
(図3では図示省略)内の分散共有メモリを指す。ま
た、各分散共有メモリ21−1〜21−3は、同一の物
理アドレスが割り付けられているものとする。本実施例
では、各メッセージバッファを識別するために、「Mi
j−k」という識別名を用いる。「M」は、その所属す
るプロセッサモジュールの識別名で、プロセッサモジュ
ール18−1〜18−3に対応して「X、Y、Z」とい
う名前が与えられている。「i」および「j」は、メッ
セージ送受信に関わるプロセッサモジュールの識別番号
で、プロセッサモジュール18−1〜18−3に対応し
てそれぞれ「1、2、3」という名前が与えられてい
る。「k」は同一エリア内での複数個のメッセージバッ
ファを識別するためのもので、1から順に値が割りふら
れている。例えば、Z13−2は、分散共通メモリ21
−3内に実装されたメッセージバッファで、1番目と3
番目のプロセッサモジュールとの間で対応するメッセー
ジバッファ4個(Z13−1〜Z13−4)のうち、2
番目のバッファを表わす。分散共有メモリ内のメッセー
ジバッファ群は(a)リモートメッセージ送受信用、
(b)ローカルメッセージ送受信用の2種類に大別され
る。リモートメッセージ送受信用のメッセージバッファ
は、あるプロセッサモジュールから他のプロセッサモジ
ュールへ転送されるメッセージを記憶するエリアで、i
≠jとなるメッセージバッファである。例えば、1番目
のプロセッサモジュール18−1の分散共有メモリ21
−1内ではリモートメッセージ送受信用メッセージバッ
ファはX12−1〜X12−4、X13−1〜X13−
4であり、このうち、2番目のプロセッサモジュール1
8−2との送受信用メッセージバッファはX12−1〜
X12−4で、3番目のプロセッサモジュール18−3
との送受信用メッセージバッファはX13−1〜X13
−4である。ローカルメッセージ送受信用メッセージバ
ッファは、自プロセッサモジュール内で送受信されるメ
ッセージを記憶するエリアで、i=jとなるメッセージ
バッファである。ローカルメッセージ送受信用メッセー
ジバッファは、送受信スレッドから直接アクセス可能な
共有メモリ空間に配置されているので、送信スレッドが
直接、メッセージを書き込んだ後、受信スレッドが同一
のメッセージバッファから直接、メッセージを読み出す
ようにしてメッセージの物理的な転送や複写を不要にし
ている。一般に、ローカルメッセージのトラヒックが特
定プロセッサモジュール宛のリモートメッセージのトラ
ヒックより多いことを考慮して、プロセッサモジュール
当たりのローカルメッセージバッファの数を他のプロセ
ッサモジュール宛のメッセージバッファの数よりも多く
設定する。例えば、図1では、分散共有メモリ21−1
内でローカル受信用メッセージバッファは6個のメッセ
ージバッファX11−1〜X11−6が用意されてお
り、これらの数(=6)は、プロセッサモジュール18
−2との送受信用メッセージバッファX12−1〜X1
2−4の数(=4)よりも多く設定されている。各分散
共有メモリは実効的に必要とされるメモリ量、すなわ
ち、自プロセッサが送受信するのに必要なメッセージバ
ッファのみが実装されている。より具体的には、図1の
ハッチ部分が実装されている部分、例えば分散共有メモ
リ21−1に実装されているメッセージバッファはX1
2−1〜X12−4、X13−1〜X13−4、X11
−1〜X11−6であり、それ以外のエリアにはメモリ
が実装されていない。
【0008】二つのメッセージバッファのi,j,kの
値がそれぞれ一致し、Mが異なるメッセージバッファが
ペアを構成する。これらは、異なる分散共有メモリ内の
同一の物理アドレスのロケーションに配置される。例え
ば、図1において、メッセージバッファX12−1とY
12−1はペアを構成し、互いに同じ物理アドレスを有
する。各ペアは、初期設定時に送信側プロセッサモジュ
ールのカーネルまたは受信側プロセッサモジュールのカ
ーネルの何れかによって、互いに重複しないように管理
されている。例えば、プロセッサモジュール18−1、
18−2間の送受信メッセージバッファペア群(X12
−1、Y12−1)、(X12−2、Y12−2)は初
期設定時にプロセッサモジュール18−1のカーネルに
よって管理され、残りのペア群(X12−3、Y12−
3)、(X12−4、Y12−4)は初期設定時にプロ
セッサモジュール18−2のカーネルによって管理され
る。他のメッセージバッファペア群についても、同様に
ペア毎に唯一つのカーネルによって管理されている。管
理の具体的な方法としては、各カーネルは、自分が管理
している未使用のメッセージバッファペアの情報をロー
カルメモリ20−1、20−2内にリスト形式で記憶し
ておき、ペアの捕捉要求に対しては、リストから一つ取
り出してリストから外す。また、ペアの解放要求に対し
ては、管理リストに追加し、再使用する。各カーネル
は、ペアの捕捉、解放の責任を通信相手のカーネルに譲
る場合がある。例えば、プロセッサモジュール18−
1、18−2間の送受信メッセージバッファペア(X1
2−1、Y12−1)に対して初期設定時に、プロセッ
サモジュール18−1のカーネルが管理責任を有してお
り、このペアを捕捉したものと仮定する。メッセージが
X12−1に書き込まれると、最終的に受信プロセッサ
モジュール18−2のY12−1に届き、そのメッセー
ジを読み出して処理が終わると、メッセージバッファペ
ア(X12−1、Y12−1)を解放する必要がある。
この解放は受信側カーネルまたは送信側カーネルで行わ
れる。受信側カーネルが解放する場合は、受信側カーネ
ルの未使用メッセージバッファペアの管理リストに登録
し、送信側カーネルで行う場合には、受信側カーネルが
送信側カーネルに通知し、送信側カーネルが自分の未使
用メッセージバッファペアの管理リストに登録する。こ
のようにして、登録されたプロセッサモジュールでメッ
セージバッファの再利用が行われる。
【0009】図4は、本発明の一実施例におけるメッセ
ージの先頭に付加するヘッダの情報フォーマットを示す
図である。これらの情報は、後述するメッセージ送信要
求あるいは受信要求の情報フォーマットと同一である。
このヘッダ情報は、図4に示すように、ワード単位に分
割されてメッセージ転送装置23内のキュー(IPIQ
26、IPOQ25)内に一時記憶される。自プロセッ
サモジュール内あるいは他プロセッサモジュールに転送
されて使用される。図4で、79は受信スレッドIDフ
ィールドで、メッセージを受信するスレッドの識別番号
であり、その上位ビットは受信プロセッサモジュール番
号、下位ビットは受信プロセッサモジュール内のスレッ
ド番号を表わす。80はメッセージバッファ(MB)論
理アドレスフィールドで、分散共有メモリにおけるメッ
セージバッファの先頭の論理アドレスを表示するもの
で、送信スレッドから受信スレッドにメッセージの所在
場所を知らせるためのソフトウェアレベルの情報であ
る。81はメッセージサイズフィールドでメッセージ本
体の長さを表わす。82はメッセージバッファ(MB)
物理アドレスフィールドで、分散共有メモリにおけるメ
ッセージバッファの先頭の物理アドレスを示し、送受信
プロセッサモジュールのメッセージ転送装置が分散共有
メモリへハードウェアレベルでアクセスする際に使用す
る。83は送信スレッドIDフィールドで、メッセージ
を送信するスレッドの識別番号を表わし、その上位ビッ
トは送信プロセッサモジュール番号、下位ビットは送信
プロセッサモジュール内のスレッド番号を表わす。84
はカーネルコマンドフィールドで、異なるプロセッサモ
ジュールのカーネル間でやりとりするコマンド情報が含
まれる。
【0010】図5は、本発明の一実施例におけるローカ
ルメッセージ送受信のソフトウェア制御シーケンス図で
あって、送信スレッドが受信スレッドよりも先に実行さ
れる場合を表わす。図5でカーネル60−1、60−2
は、各プロセッサモジュールのローカルメモリ20−
1、20−2に存在し、自プロセッサモジュール内に存
在するスレッドの実行制御、メッセージバッファの管理
等を行うものである。図6は、本発明の一実施例におけ
るリモートメッセージ送受信のソフトウェア制御シーケ
ンス図であって、図5と同様、送信スレッドが受信スレ
ッドよりも先に実行される場合を表わしている。
【0011】以下、ローカルメッセージとリモートメッ
セージ各々のケースについて図1、図3〜図6を用いて
説明する。 (1)ローカルメッセージ通信の実施例 (a)送信側の処理 プロセッサモジュール18−1内の送信スレッドから同
じプロセッサモジュール18−1内の受信スレッドにロ
ーカルメッセージを転送する場合を仮定する。送信スレ
ッドと受信スレッドは互いに非同期に実行されるため、
その実行順序はいろいろなケースが考えられるが、ここ
では簡単のため、送信スレッドが受信スレッドよりも先
に実行される図5のケースを仮定する。図5において、
カーネル60−1が次に実行すべきスレッドとして送信
スレッドを選択すると、ステップ201で送信スレッド
を起動する。ステップ202で送信スレッドは、受信ス
レッドID情報(図4の79)とともにメッセージバッ
ファ(MB)捕捉要求をカーネルに送る。カーネルは受
信スレッドID79の上位ビットを参照し、自プロセッ
サモジュール番号と一致すればローカルメッセージ、一
致しなければリモートメッセージと判定する。本実施例
ではローカルメッセージなので、カーネルは、リスト形
式で管理しているローカルメッセージ送受信用メッセー
ジバッファ(図3のX11−1〜X11−6)のうち、
リストの先頭に登録されている空きのメッセージバッフ
ァ(例えばX11−1)を捕捉し、ステップ203(M
B確保通知)で、その論理アドレスを送信スレッドに通
知する。送信スレッドはステップ204でメッセージバ
ッファX11−1にメッセージを書き込み、ステップ2
05でカーネルにメッセージ送信トラップを発行する。
カーネルはステップ206aで送信要求をメッセージ転
送装置23−1に送って起動すると、メッセージ転送装
置23−1内のメッセージ同期化機構33−1は、送ら
れてきた要求がローカルメッセージの送信要求であるこ
とを識別し、ステップ206bで同期待ちバッファ(S
WB)54−1内に、対応する受信要求が登録されてい
るかどうかをチェックする。この時点では、まだ登録さ
れていないので同期待ちバッファ54−1に送信要求を
登録し、ステップ207でカーネルに戻る。カーネルは
ステップ208で送信トラップを終了し、ステップ20
9で送信スレッド全体の処理が終了する。
【0012】(b)受信側の処理 その後、カーネル60−1は次に実行すべきスレッドと
して受信スレッドを選択すると仮定する。ステップ21
3で受信スレッドを起動すると、ステップ214で受信
スレッドが受信トラップを発行する。カーネルはステッ
プ215(同期化チェック)でメッセージ転送装置23
−1をアクセスし、相手側(送信側)の要求が到着して
いるかどうかをチェックする。メッセージ転送装置23
−1内メッセージ同期化機構33−1は、対応する送信
要求が同期待ちバッファ54−1内に登録されているか
どうかをチェックする。この時点では登録されているの
で、受信要求の情報と同期待ちバッファ54−1内の送
信要求の情報を合わせて同期済み情報を作成し、ステッ
プ216でカーネルに通知する。カーネルはステップ2
17で受信トラップを終了し、受信スレッドはステップ
218でMB22−1からメッセージを読み出し、必要
な処理を行った後、ステップ219でメッセージバッフ
ァX11−1のアドレス情報と併せてMB解放要求をカ
ーネルに送る。カーネルは、指定されたメッセージバッ
ファX11−1を空きバッファ管理リストの最後に登録
する。この後、ステップ220で送信トラップを終了
し、ステップ221で処理を終了する。このように、ロ
ーカルメッセージの場合、分散共有メモリを介して送信
スレッドが確保したメッセージバッファをコピーした
り、移動したりせずに、受信スレッドがそのまま使用で
きるようにしている。
【0013】(2)リモートメッセージ通信の実施例 (a)送信側の処理 プロセッサモジュール18−1内の送信スレッドから他
のプロセッサモジュール18−2内の受信スレッドにリ
モートメッセージを転送する場合を仮定する。さらに、
ローカルメッセージ通信の実施例と同様に、送信スレッ
ドが受信スレッドよりも先に実行される図6のケースを
仮定する。また、プロセッサモジュール18−2との送
受信用のメッセージバッファペア(図3の(X12−
1,Y12−1)、(X12−2,Y12−2)、(X
12−3,Y12−3)、(X12−4,Y12−
4))のうち、この時点ではプロセッサモジュール18
−1が管理しているペアは(X12−1,Y12−
1)、(X12−2,Y12−2)で、プロセッサモジ
ュール18−2が管理しているペアは(X12−3,Y
12−3)、(X12−4,Y12−4)であると仮定
する。図6で、カーネル60−1が次に実行すべきスレ
ッドとして送信スレッドを選択すると、ステップ301
で送信スレッドを起動する。ステップ302で送信スレ
ッドは、受信スレッドID情報(図4の79)とともに
メッセージバッファ(MB)捕捉要求をカーネルに知ら
せる。カーネルは受信スレッドID79の上位ビットを
参照して、プロセッサモジュール18−2宛のリモート
メッセージであることを識別し、メッセージバッファリ
ストの先頭に登録されている空きのメッセージバッファ
ペアの一つ(例えば(X12−1,Y12−1))を捕
捉し、ステップ303で、X12−1の論理アドレスを
送信スレッドに通知する。送信スレッドはステップ30
4でメッセージバッファX12−1にメッセージを書き
込み、ステップ305でカーネルにメッセージ送信(ト
ラップ)を要求すると、カーネルは、ステップ306で
送信要求をメッセージ転送装置23−1に送る。メッセ
ージ転送装置23−1内のメッセージ同期化機構33−
1は、送られてきた要求がリモートメッセージの送信要
求であることを識別して送信要求を要求出力キュー(I
POQ)25−1に登録し、ステップ307でカーネル
に登録終了を通知する。このIPOQ25−1はFIF
O(First In First Out)構造になっており、登録した要
求は転送制御部30−1が順次処理していく(ステップ
308(送信要求の移送))。ステップ309で、着目
しているリモート送信要求の処理の順番がくると、転送
制御部30−1はIPOQ25−1内の送信要求をメッ
セージヘッダ情報としてMBOQ28−1に送る。引き
続き転送制御部30−1はIPOQ25−1内の送信要
求に基づいてメッセージバッファX12−1内のメッセ
ージをMBOQ28−1内の転送データ(メッセージヘ
ッダ+メッセージ本体)が準備されたことになるので、
転送制御部30−1は、ステップ320で、モジュール
間通信路32にメッセージを送り出す。モジュール間通
信路32では、メッセージヘッダ中の受信スレッドID
79の上位ビットを参照して受信プロセッサモジュール
を識別し、受信プロセッサモジュール18−2にルーチ
ングして、そのMBIQ29−2に転送データを送り届
ける。一方、送信側のカーネルはステップ310で送信
トラップを終了し、送信スレッドはステップ311で処
理を終了する。
【0014】(b)受信側の処理 受信側MBIQ29−2内のメッセージヘッダ情報79
−84のうち、MB物理アドレス82の値はメッセージ
バッファX12−1のアドレスを示しているが、この値
は、ペアをなす受信側分散共有メモリ21−2のメッセ
ージバッファY12−1のアドレスと等しい。従って、
受信プロセッサモジュール18−2の転送制御部30−
2は、図6のステップ321で29−2内のメッセージ
本体をメッセージバッファY12−1にメッセージサイ
ズ32で指定された分、転送することになる。これは、
物理アドレスは同一で、かつ物理的には異なる二つの分
散共有メモリ間でデータのコピーが行われたことを意味
する。このように、送信側の分散共有メモリにメッセー
ジを転送することにより、カーネル60−1によるメッ
セージバッファ割り当ての処理を不要にしている。次
に、転送制御部30−2はステップ322で受信側のメ
ッセージ同期化機構33−2を起動し、MBIQ29−
2に到着した送信要求に対応する受信要求が同期待ちバ
ッファ(SWB)54−2に登録されているかどうかを
チェックする。この時点では登録されていないので、ス
テップ194でこの送信要求を同期待ちバッファ(SW
B)54−2に登録する。一方、受信側プロセッサモジ
ュールのカーネル60−2は、受信スレッドを実行する
段階になると、ステップ324で受信スレッドを起動す
る。受信スレッドはステップ325でカーネルに受信ト
ラップを発行する。カーネルはステップ326で、対応
する送信要求が同期待ちバッファ(SWB)54−2に
登録されているかどうかをチェックする。この時点では
登録されているので、ステップ327でメッセージ転送
装置から同期済みの要求を読み出す。その後、ステップ
328で呼び出し元の受信スレッドに戻り、受信スレッ
ドはメッセージが到着していることを知り、ステップ3
29でメッセージの読み出しを開始し、対応する処理を
行う。その後、カーネルはステップ330でMB解放要
求の情報をカーネルに登録し、ステップ331でカーネ
ルの処理を終了し、ステップ332で受信スレッド処理
を完了する。
【0015】その後、カーネル60−2はMB解放要求
登録情報を参照して、送信スレッドID情報を基にメッ
セージを送信したプロセッサモジュール番号を求め、こ
のプロセッサモジュール対応に記憶されている未使用メ
ッセージバッファペアの管理リストを参照し、予め規定
された数以上のペアが記憶されているかチェックする。
もし、規定値より小さければ、この未使用メッセージバ
ッファペアの管理リストに登録し、次回の再利用に備え
る。もし、規定値以上になれば、これは、自分が再利用
できるメッセージバッファのペアは多数あるが、通信相
手のプロセッサモジュールでは再利用できるメッセージ
バッファのペアは不足している状態を表わしているの
で、相手側プロセッサモジュールに未使用メッセージバ
ッファペアの再利用権を譲るために、受信側カーネル6
0−2が相手側プロセッサモジュール18−1にMB解
放要求メッセージを送る。具体的には、相手側プロセッ
サモジュール18−1宛のリモートメッセージ送信用メ
ッセージバッファペアの一つ(例えば(X12−3、Y
12−3))を補捉し、ステップ340でY12−3
に、解放したい全てのメッセージバッファペアの論理ア
ドレスをまとめて書き込む。なお、MB解放要求メッセ
ージのメッセージヘッダは以下のように作成する。図4
に示したフォーマットと対応させて述べると、受信スレ
ッドIDフィールド79の上位ビットは、MB解放要求
メッセージを受信するプロセッサモジュール18−1の
番号とし、下位ビットは、そのカーネル60−1のID
とする。また、MB論理アドレスフィールド80の内容
は、MB解放要求メッセージを書き込んだMB(Y12
−3)の論理アドレスメッセージサイズフィールド81
と同じであって、「Y12−3内のメッセージサイズ」
を示す。また、MB物理アドレスフィールド82の内容
は、Y12−3の物理アドレスとする。また、送信スレ
ッドIDフィールド83の上位ビットは、MB解放要求
メッセージを送信するプロセッサモジュール18−2の
番号とし、下位ビットは、そのカーネル60−2のID
とする。また、カーネルコマンドフィールド85の内容
は、メッセージバッファ解放要求の指示コマンドとす
る。
【0016】以上のメッセージヘッダとメッセージ本体
を、プロセッサモジュール間で転送する。即ち、ステッ
プ341でメッセージ転送装置23−2に転送要求を送
り、ステップ342、343で転送要求(メッセージヘ
ッダ)とメッセージ本体をMBOQ28−2に取り出
し、それらをステップ344で相手プロセッサモジュー
ル18−1のメッセージ転送装置23−1に送り込む。
また、ステップ345でメッセージ転送装置23−2は
カーネル60−2に転送終了通知を行なう。一方、メッ
セージ転送装置23−1はステップ346でメッセージ
を、指定されたメッセージバッファX12−3に転送
し、メッセージヘッダ内のカーネルコマンドフィールド
84を見て、メッセージバッファペア((X12−1、
Y12−1)等)を次々と未使用バッファ管理リストに
登録することにより、解放処理を行ない、ステップ34
7で転送終了通知をカーネル60−1に行なう。このよ
うにカーネル間のメッセージ転送では、送信、受信間の
同期を必要とせず、メッセージの転送のみでカーネル間
の同期がとれるようにしてカーネル間のメッセージ転送
の効率を上げている。なお、この際、MB解放要求に使
用したメッセージバッファペア(X12−3、Y12−
3)も一緒に未使用バッファ管理リストに登録してお
く。上記実施例は、プロセッサモジュール内のプロセッ
サが1台の場合を説明したが、2台以上の場合でも、カ
ーネルが、自己の属するプロセッサモジュールから送信
するメッセージのためのメッセージバッファを一元管理
する限り、上記と全く同様の方法で実現できる。また、
MB解放要求メッセージの内容としてMB論理アドレス
を使用したが、MB物理アドレス等、MBを一意に識別
できる手段ならば、何でもよい。さらに、上記実施例で
は、送信プロセッサモジュールと受信プロセッサモジュ
ールのペアで分類されたメッセージバッファ群が、連続
したメモリロケーションに配置された場合を説明した
が、これらは、必ずしも連続エリアに配置する必要はな
く、リスト構造等により、メッセージバッファ単位で分
散共有メモリ上の任意のエリアに配置することができ
る。
【0017】次に、各プロセッサモジュールに最低必要
な分散共有メモリの実装量を算出する。 S=メッセージバッファサイズ(バイト) R=送信、受信プロセッサモジュールの組み合わせごと
に必要なリモートメッセージ用送受信メッセージバッフ
ァの面数 L=プロセッサモジュールあたり必要なローカルメッセ
ージ用送受信メッセージバッファの面数 P=システムあたりのプロセッサモジュール数 とした場合、各プロセッサモジュールでローカルメッセ
ージ用にSL、リモートメッセージ用にSR(P−1)
の実装量が必要なので、各プロセッサモジュールあたり
必要な分散共有メモリの実送量C1は、次のように表わ
せる。 C1=S(L+R(P−1)) 一方、共有空間全体のサイズは、アドレスローカルメッ
セージ用にSLP、リモートメッセージの送信用バッフ
ァと受信用バッファのアドレス空間が重複していること
を考慮して、リモートメッセージ送受信用にSR(P−
1)P/2のサイズが必要となり、共有空間全体サイズ
C2は、C2=SP(L+R(P−1)/2) となる。したがって各プロセッサの共有分散メモリの実
装量の縮小比率rは、Pの値が充分大きい場合には、 r=C1/C2≒2/P となる。本実施例によれば、プロセッサモジュールが多
いほど、メモリ量削減効果が大きいことがわかる。
【0018】
【発明の効果】本発明によれば、分散共有メモリは、送
信プロセッサモジュールと受信プロセッサモジュールの
組み合わせ毎に対応して分割されており、各プロセッサ
モジュールからメッセージを送信する場合に、自プロセ
ッサモジュールを送信元とする受信プロセッサモジュー
ル対応のエリアを使用する。その結果、異なる二つの送
信プロセッサモジュールから、同一受信プロセッサモジ
ュールにメッセージ通信要求が同時に発生しても、互い
に使用するメッセージバッファが重複することはなく、
メッセージバッファ確保のための競合処理に伴う性能低
下や性能ボトルネックを回避することができる。また、
送信側と受信側で同一アドレスのメッセージバッファを
使用しているので、送信側でメッセージバッファを捕捉
すると、受信側でメッセージバッファを自動的に捕捉し
たことになり、従来、必要であった受信側のメッセージ
バッファ捕捉のオーバヘッドを除去できる。さらに、各
プロセッサモジュールは、自プロセッサモジュールで使
用する分散共有メモリのみを実装すればよく、広い共有
アドレス空間に対しても少ないメモリ実装量で実現する
ことが可能となる。さらに、ローカルメッセージかリモ
ートメッセージかを識別できるようにして、例えばロー
カルメッセージ用には多数のメッセージバッファを、リ
モートメッセージ用には比較的少ない数のメッセージバ
ッファを自由に割り当てられるようにして、ローカル転
送データについては物理的な転送や複写を不要にすると
ともに、ローカル/リモートメッセージのトラヒック・
アンバランスにも柔軟に対処できる。なお、本発明は、
メッセージの転送やメッセージバッファと言う特殊な応
用に限定されるものではなく、一般のデータの転送と、
それらのデータを記憶するデータセグメントへの応用に
適用できることは言うまでもない。例えば、リスト処理
におけるリスト構造や仮想記憶システムにおけるページ
等をプロセッサモジュール間で転送する場合は、その一
例である。
【図面の簡単な説明】
【図1】本発明の一実施例における分散共有メモリ内の
メッセージバッファの配置を示す図である。
【図2】従来の分散共有メモリシステムの構成例図であ
る。
【図3】本発明の一実施例における分散共有メモリシス
テムの構成図である。
【図4】本発明の一実施例におけるメッセージの先頭に
付加するヘッダの情報フォーマットを示す図である。
【図5】本発明の一実施例におけるローカルメッセージ
送受信のソフトウェア制御シーケンス図である。
【図6】本発明の一実施例におけるリモートメッセージ
送受信のソフトウェア制御シーケンス図である。
【符号の説明】
18−1,18−2:プロセッサモジュール、19−
1,19−2:プロセッサ、20−1,20−2:ロー
カルメモリ、21−1,21−2,21−3:分散共有
メモリ、22−1,22−2:メッセージエリア群、2
3−1,23−2:メッセージ転送装置、24−1,2
4−2:モジュール間転送要求キュー(IPQ)、25
−1,25−2:要求出力キュー(IPOQ)、26−
1,25−2:要求入力キュー(IPIQ)、27−
1、27−2:メッセージバッファキュー(MBQ)、
28−1、28−2:出力メッセージバッファキュー
(MBOQ)、29−1、29−2:入力メッセージバ
ッファキュー(MBIQ)、30−1,30−2:転送
制御部、32:モジュール間通信路、33−1、33−
2:メッセージ同期化機構、54−1、54−2:同期
待ちバッファ(SWB)、60−1、60−2:カーネ
ル、79:受信スレッドIDフィールド、80:メッセ
ージバッファ(MB)論理アドレスフィールド、81:
メッセージサイズフィールド、82:メッセージバッフ
ァ(MB)物理アドレスフィールド、83:送信スレッ
ドIDフィールド、84:カーネルコマンドフィールド
───────────────────────────────────────────────────── フロントページの続き (56)参考文献 特開 平6−19785(JP,A) 特開 平4−291660(JP,A) 村山秀樹、他5名,マルチコンピュー タにおけるノード間高速通信アーキテク チャの検討,情報処理学会研究報告,日 本,社団法人情報処理学会,1994年3月 11日,Vol.94,No.22,(94−A RC−105,94−HPC−50),P.89 −96 (58)調査した分野(Int.Cl.7,DB名) G06F 15/16 - 15/177 G06F 9/46 - 9/54

Claims (4)

    (57)【特許請求の範囲】
  1. 【請求項1】 複数のプロセッサモジュールを接続し、
    プロセッサモジュール間でデータを転送するコンピュー
    タシステムでの分散共有メモリシステムにおいて、 上記プロセッサモジュールには、 各プロセッサモジュール間で共通の同一アドレスを有
    し、送信側プロセッサモジュールと受信側プロセッサモ
    ジュールの組み合わせで指定される管理単位毎に分類さ
    れた、複数のメモリセグメントを含む分散共有メモリ
    と、 送信側と受信側の分散共有メモリの同一アドレスロケー
    ションに配置された、該メモリセグメントのペアを単位
    として、分散共有メモリの当該エリアを一元管理するメ
    モリセグメント管理手段と、 所属プロセッサモジュールの分散共有メモリをアクセス
    するプロセッサと、 転送データの同期化および各プロセッサモジュール間の
    データ転送を行うデータ転送手段とを具備するととも
    に、各プロセッサモジュール間でデータ転送を行なう際
    に、 (1)送信側のプロセッサモジュールでは、 前記メモリセグメント管理手段が、管理下のメモリセ
    グメントペア(A,B)を捕捉し、 前記データ転送手段は、該捕捉したメモリセグメント
    A内のデータを、受信側プロセッサモジュールの前記分
    散共有メモリ内のメモリセグメントB宛に転送し、 (2)受信側のプロセッサモジュールでは、 前記データ転送手段が、受信したデータを、自プロセ
    ッサモジュール内の自分散共有メモリ内のメモリセグメ
    ントBに転送し、 前記メモリゼクメント管理手段は、前記メモリセグメ
    ントペア(A,B)を解放して自プロセッサモジュール
    で再利用するか、該メモリセグメントペア(A,B)を
    解放して送信側のプロセッサモジュールに再利用させる
    ために送信側に通知するか、の何れかを選択・決定する
    ことにより、前記メモリセグメントペアを送受信プロセ
    ッサモジュールの何れかで一元管理してプロセッサモジ
    ュール間のデータ転送を行う如く構成したことを特徴と
    する分散共有メモリシステム。
  2. 【請求項2】 上記分散共有メモリは、該分散共有メモ
    リが属するプロセッサモジュールが送受信したデータを
    記憶するメモリセグメントに相当する容量のメモリのみ
    を実装することを特徴とする請求項1記載の分散共有メ
    モリシステム。
  3. 【請求項3】 上記送信側プロセッサモジュールと受信
    側プロセッサモジュールが同一であるローカル転送デー
    タと両該プロセッサモジュールが異なるリモート転送デ
    ータとを識別する手段を具備し、上記分散共有メモリ
    は、ローカル転送用およびリモート転送用のエリアから
    なり、該ローカル転送用とリモート転送用で上記メモリ
    セグメントの割り当て数が異なることを特徴とする請求
    1または2に記載の分散共有メモリシステム。
  4. 【請求項4】 複数のプロセッサモジュールを接続し、
    プロセッサモジュール間でデータを転送するコンピュー
    タシステムでの分散共有メモリシステムにおいて、 上記プロセッサモジュールには、 各プロセッサモジュール間で共通の同一アドレスを有
    し、送信側プロセッサモジュールと受信側プロセッサモ
    ジュールの組み合わせで指定される管理単位毎に分類さ
    れた、複数のメモリセグメントを含む分散共有メモリ
    と、 送信側と受信側の分散共有メモリの同一アドレスロケー
    ションに配置された、該メモリセグメントのペアを単位
    として、分散共有メモリの当該エリアを一元管理するメ
    モリセグメント管理手段と、 所属プロセッサモジュールの分散共有メモリをアクセス
    するプロセッサと、 転送データの同期化および各プロセッサモジュール間の
    データ転送を行うデータ転送手段とを具備することを特
    徴とする分散共有メモリシステム。
JP07466994A 1994-04-13 1994-04-13 分散共有メモリシステム Expired - Fee Related JP3312361B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP07466994A JP3312361B2 (ja) 1994-04-13 1994-04-13 分散共有メモリシステム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP07466994A JP3312361B2 (ja) 1994-04-13 1994-04-13 分散共有メモリシステム

Publications (2)

Publication Number Publication Date
JPH07282027A JPH07282027A (ja) 1995-10-27
JP3312361B2 true JP3312361B2 (ja) 2002-08-05

Family

ID=13553880

Family Applications (1)

Application Number Title Priority Date Filing Date
JP07466994A Expired - Fee Related JP3312361B2 (ja) 1994-04-13 1994-04-13 分散共有メモリシステム

Country Status (1)

Country Link
JP (1) JP3312361B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5544099B2 (ja) * 2009-02-27 2014-07-09 株式会社日立製作所 コントローラ通信方法およびコントローラ通信装置
JP6079065B2 (ja) * 2012-08-31 2017-02-15 富士通株式会社 情報処理装置,処理方法及びプログラム

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
村山秀樹、他5名,マルチコンピュータにおけるノード間高速通信アーキテクチャの検討,情報処理学会研究報告,日本,社団法人情報処理学会,1994年3月11日,Vol.94,No.22,(94−ARC−105,94−HPC−50),P.89−96

Also Published As

Publication number Publication date
JPH07282027A (ja) 1995-10-27

Similar Documents

Publication Publication Date Title
US6667920B2 (en) Scratchpad memory
JP2889932B2 (ja) 4ポート付きパケットメモリ制御装置を有する二重経路コンピュータ相互接続システム
US6023732A (en) Message transfer apparatus for controlling a message send in a packet switched interconnection network
TW544589B (en) Loosely coupled-multi processor server
US5519883A (en) Interbus interface module
JP6676027B2 (ja) ネットワークプロセッサにおけるマルチコア相互接続
CN104050091B (zh) 基于非一致性内存访问系统的网络设备及其设置方法
JP4509248B2 (ja) ネットワーク通信におけるデッドロックを回避するためのコンピュータアーキテクチャ
US7802025B2 (en) DMA engine for repeating communication patterns
JP2003178039A (ja) 分散共有仮想メモリーとその構成方法
JPH07311741A (ja) 並列計算機システム
JPH0944424A (ja) 遠隔情報処理システム間のメッセージ伝送方法
EP1508100B1 (en) Inter-chip processor control plane
JP4053208B2 (ja) ディスクアレイ制御装置
US6466993B1 (en) Method and apparatus for performing transactions rendering between host processors and I/O devices using concurrent non-blocking queuing techniques and I/O bus write operations
JP3312361B2 (ja) 分散共有メモリシステム
US9804959B2 (en) In-flight packet processing
US9703739B2 (en) Return available PPI credits command
EP1936514B1 (en) Apparatus and method for controlling issue of requests to another operation processing device
JPH05224956A (ja) プロセス間メッセージ通信方法
JP2002198987A (ja) ハブおよびポート付き転送コントローラのアクティブ・ポート
JP3536219B2 (ja) 分散メモリ保護管理装置
JP3644158B2 (ja) 並列計算機におけるデータ送受信方法
JP2971119B2 (ja) 複数プロセッサシステムにおける高速データ転送方式
US9699107B2 (en) Packet engine that uses PPI addressing

Legal Events

Date Code Title Description
LAPS Cancellation because of no payment of annual fees