JP4923288B2 - 非同期共有オブジェクトシステムの耐故障合意手法およびその実現機構 - Google Patents
非同期共有オブジェクトシステムの耐故障合意手法およびその実現機構 Download PDFInfo
- Publication number
- JP4923288B2 JP4923288B2 JP2000068746A JP2000068746A JP4923288B2 JP 4923288 B2 JP4923288 B2 JP 4923288B2 JP 2000068746 A JP2000068746 A JP 2000068746A JP 2000068746 A JP2000068746 A JP 2000068746A JP 4923288 B2 JP4923288 B2 JP 4923288B2
- Authority
- JP
- Japan
- Prior art keywords
- identifier
- value
- binary variable
- shared
- variable array
- 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
Links
Images
Landscapes
- Multi Processors (AREA)
Description
【発明の属する技術分野】
共有オブジェクトを通じて情報を伝達する複数の非同期プロセッサからなる共有オブジェクトシステムにおいて、
故障していないプロセッサの全てが故障により停止したプロセッサの影響を受けることなく有限ステップ後に合意を得る手法、耐故障性をもつ非同期共有オブジェクトシステムにおける合意問題を解く手法、および、それらの実現機構。
【0002】
【従来の技術】
複数のプロセッサからなる共有オブジェクトシステムにおいて、
故障して停止しているプロセッサに関わらず、故障していないプロセッサの全てが1つの値に合意する非同期共有オブジェクトシステムにおける耐故障合意問題は非同期システムにおける同期化およびプロセッサの故障検出に有効な応用をもつ。
非同期共有オブジェクトシステムは複数のプロセッサと有限個の共有2値変数配列の集合である共有オブジェクトからなる。
プロセッサは共有2値変数配列を介して通信する。
各プロセッサは入力動作や出力動作を行い外部と対話するためのポートをもつ。
Vをある値の集合とし、1からnまでの自然数でラベル付けされたn個のプロセッサと共有2値変数の集合Xからなる共有オブジェクトシステムを考える。
各プロセッサへの外部入力をinit(v)とする。
ここで、vは集合Vの要素である。また、各プロセッサはdecide(v) の形で外部に出力する。
【0003】
各プロセッサは特別な入力 Stop をもつ可能性がある。
Stop信号は特定できない外部からの入力で、プロセスのStop信号受信後は動作を停止する。
共有オブジェクトシステムが以下の3つの条件を満たすとき合意に達する。
(1) 任意のプロセッサに対して、そのプロセッサのinitとdecideとの時間的系列は列init(v)、 decide(w)のある接頭辞である。
つまり、何もないか、init(v) のみであるか、init(v)、 decide(w)の2つの動作の列である。
(2) 全ての決定値は同じ値である。(Agreement条件) (3) 決定値はあるプロセッサの入力値である。(Validity条件)
【0004】
共有オブジェクトシステムで1からn-1までの任意の個数のプロセッサがStop信号を受信して停止した場合でも、残りの停止していないプロセッサの全てが合意するとき、システムが耐故障合意に達する。
【0005】
この耐故障合意を共有オブジェクトの各2値変数配列を適用可能な操作でタイプ分けした場合、どのような手法が存在するかを示す。
従来、共有オブジェクトの2値変数配列は1命令中に読み出しまたは書き込みのみを許すread-write 2値変数配列と書き込みと読み出しの両方を1命令中に実行可能な read-modify-write 2値変数配列に大別される。
非同期共有オブジェクトシステムでは、read-write 2値変数配列のみでは耐故障合意が得られない。
初期値unknownである共有2値変数配列xを用いる合意手法の具体例を示す。
【0006】
外部からの入力値をkとする。
次に、read(x)命令により共有2値変数配列xの値を戻り値vとして受け取る。
もし、値vが初期値unknownのままであれば、write(x、k)命令により共有2値変数配列xにkの値を代入しdecide(k)で値kに合意する。そうでなければ、decide(v)で値vに合意する。
この場合共有オブジェクトの内容を読み込んで、プロセッサがその内容に従って書き込みを行う前に共有オブジェクトの内容が変化してしまうことで不合意を導いてしまう。
【0007】
そこで、読み出しと書き込みの両方を1命令で行うread-modify-write により耐故障性をもつ合意手法が考えられる。
read-modify-write命令の1つであるcompare-and-swap命令について説明する。
共有2値変数配列xと値v、 値kにおいてcompare-and-swap(x、v、k)命令は共有2値変数配列xの値wがvと一致するなら共有2値変数配列xに値kを書き込み値wを戻り値として返す。そうでなければ何もせず、値wを戻り値として返す。この手続きを1命令ステップ中に実行する。
【0008】
compare-and-swap命令による耐故障合意を得る手法の例を示す。
初期値がunknownである共有2値変数配列xにおいて、始めに外部からの入力値をkとする。
次に、compare-and-swap(x、unknown、k)命令により共有2値変数配列xの値wがunknownならxにkを書き込み戻り値としてunknownを受け取る。そうでなければ、wを戻り値として受け取る。compare-and-swap命令の戻り値vがunknownなら、decide(k)により値kに合意する。
そうでなければ、decide(v)により値vに合意する。
【0009】
共有2値変数配列内容の多重書き込みを許さない単一書き込みのみ可能な2値配列変数xの場合、read-modify-write命令を実行中、変数xはロックされ、変数xに対する他の全ての命令が実行不能となる。
【0010】
複数のプロセッサが同時に変数xに対するread-modify-write命令を発行した場合、プロセッサ数の長さをもつロックの連なりができてしまう。
この状況を競合と呼ぶ。また、1つの命令に対してできる可能性のあるロックの連なりに属しているロックの最大個数、つまり、長さを競合のコストとする。
【0011】
【発明が解決しようとしている課題】
上記従来手法のread-modify-write 命令では競合コストはシステム内のプロセッサ数に比例して大きくなる。
理論的にはread-modify-write 命令を用いる任意の耐故障合意手法の競合コストがプロセッサ数に比例して大きくなることが示されている。
この競合コストの削減を目的にread命令とwrite命令だけで合意が失敗する確率を保証する手法も存在する。
この場合、競合のコストはプロセス数に依存しないが、手法の実行ステップ数はプロセッサ数の二乗ないし三乗に比例する。
本発明は競合のコストがプロセッサ数に依存しない耐故障性をもち、特にほとんど同期してプロセッサが動作する場合に効率よく合意を得る手法とその実現機構を提案する。
【0012】
【課題を解決するための手段】
上記の目的を達成するため、
本発明の共有オブジェクトシステムでは全てのプロセッサが同時に書き込み、読み出しができる多重読み出し多重書き込み可能な共有2値変数配列xと各プロセッサごとにそのプロセッサのみが書き込みができ他の全てのプロセッサが同時に読み出しができる単一書き込み多重読み出し可能な2値変数配列を設定する。
【0013】
さらに、本発明の共有オブジェクトシステムでは新たな命令read-and-write(x、y、k)を備えもつ。
read-and-write命令は共有2値変数配列xの読み込みと共有2値変数配列yの書き込みを1ステップで行う命令であり、
命令開始から終了まで書き込む変数yがロックされ、他のプロセッサが読み書きできない。しかし、読み出しの対象である変数xは排他的制御を必要としない、つまり、多重読み出し、書き込みを許す。
具体的には変数xが1ならば変数yにkを書き込み1を返し、変数xが1でなければ何もせずに0を返すという以下の手続きを1命令ステップで実行する。
【0014】
【発明の実施の形態】
このとき、共有オブジェクトシステムは全ての多重書き込み多重読み出し可能な2値配列xと単一書き込み、多重読み出し可能なレジスタをプロセッサnの2倍であるn×2個の2次元2値変数配列y[n][2]を備えもつ。
各プロセッサiは配列yではi行目の要素であるy[i][1]とy[i][2]のみを書き込むことが可能である。
初期設定x=1、 y[n][2]の全ての2n個の要素をNULLとして、各プロセッサiにおいて以下のプロトコルを実行する。
【0015】
始めに入力値をkとする。write(y[i][2]、k)命令により共有2値変数配列y[i][2]に値kを書き込む。次に、read-and-write(x、 y[i][1]、1)命令により共有2値変数配列xの値が1ならば共有変数配列y[i][1]に値1を書き込む、そうでなければなにもしない。次にwrite(x、0)命令によって共有2値変数配列xに0を書き込む。
その後、局所変数jによりインデックス付けされたループ内においてread(y[i][1])命令による戻り値が1となるインデックスjを見つけるまでjを1からnまで1ずつ増加する。ループを抜けた後,read(y[j][2])命令を実行して共有2値変数配列y[j][2]の値をvとする。最後にdecide(v)により値vに合意する。
共有2値変数配列xと共有2値変数配列群の各プロセッサiに割り当てられた領域y[i][1],y[i][2]の合意手法における役割は以下である。共有2値変数配列xでは、その真偽により共有2値変数配列を1回でも書き込んだプロセスが存在するか否かを示す。一方、共有2値変数配列群の値y[i][2]は合意の対象として各プロセスiが提示する入力値を示し、y[i][1]はその真偽により他のプロセスに値y[i][2]が合意の候補であるかどうかを示す。
【0016】
【発明の効果】
発明合意プロトコルではシステム中に故障したプロセッサが存在しても、故障していないプロセッサはプロトコルを終了することができる。
発明合意プロトコルにおいて発明機構を用いた場合、各プロセッサはwrite命令でy[i][2]を、read-and-write命令でy[i][1]のみをロックする。
xに対するwrite命令は多重書き込み読み出しが可能であるためロックを必要としない。
よって、各命令に対するロックの連なりの長さは高々1であり、発明合意プロトコルの競合コストは1である。
つまり、競合コストはシステム中のプロセス数に依存しない。特にほとんど同期したシステム中ではどんなにプロセス数が大きくともプロトコルの終了はほとんど同時に小さいステップ数で終了する。
【図面の簡単な説明】
【図1】共有オブジェクトシステムの実施例を示す図である。
【図2】共有2値変数配列の実施例を示す図である。
Claims (3)
- 2以上の非同期プロセッサとプロセッサの数をnとしたときに初期値を真とし、真か偽の値を記憶する共有2値変数配列xと
プロセッサ各々でそのプロセッサの識別子を1以上n以下の整数iとしたとき、識別子iと領域y[i][1]が1対1に対応する、初期値を偽とする真か偽の値を記憶する領域y[i][1]により構成されている共有2値変数配列群y[1...n][1]とプロセッサ各々でそのプロセッサの識別子を1以上n以下の整数iとしたとき,識別子i と領域y[i][2]が1対1に対応する,領域y[i][2]により構成されている共有2値変数配列群y[1...n][2]なる共有オブジェクトを備える非同期共有オブジェクトシステムの
プロセッサにより利用される合意解決手法であって、
外部より受け取った入力値を当該プロセッサの識別子で1以上n以下の整数iに対応する前記共有2値変数配列群y[1...n][2]の領域y[i][2]へ書き込むステップと、
前記共有2値変数配列xの値を読み出し、その結果が真である場合のみ当該プロセッサの前記識別子iに対応する前記共有2値変数配列群y[1...n][1]の領域y[i][1]に真の値を書き込むという動作を単一ステップ時間で行うステップと、
前記共有2値変数配列xに偽の値を書き込むステップと、
前記共有2値変数配列群y[1...n][1]の中の各識別子jに対応する領域y[j][1]を識別子1から識別子の値の増加順に読み出し、前記領域y[j][1]の値が真である最も小さな識別子jminを求めるステップと、前記共有2値変数配列群y[1...n][2]の中の前記識別子jminに対応する領域y[jmin][2]の値を読み出し決定候補値とするステップと、
前記決定候補値を出力するステップとを
有することを特徴とする合意解決手法。 - 2以上の非同期プロセッサと共有オブジェクトで構成される非同期共有オブジェクトシステムであって、
プロセッサの数をnとしたときに初期値を真とし、真か偽の値を記憶する共有2値変数配列xとプロセッサ各々でそのプロセッサの識別子を1以上n以下の整数iとしたとき、識別子iと領域y[i][1]が1対1に対応する、初期値を偽とする真か偽の値を記憶する領域y[i][1]により構成されている共有2値変数配列群y[1...n][1]とプロセッサ各々でそのプロセッサの識別子を1以上n以下の整数iとしたとき,識別子i と領域y[i][2]が1対1に対応する、領域y[i][2]により構成されている共有2値変数配列群y[1...n][2]なる共有オブジェクトを備え、
各プロセッサが外部より受け取った入力値を当該プロセッサの識別子で1以上n以下の整数iに対応する前記共有2値変数配列群y[1...n][2]の領域y[i][2]へ書き込む手段と、
前記共有2値変数配列xの値を読み出し、その結果が真である場合のみ当該プロセッサの識別子iに対応する前記共有2値変数配列群y[1...n][1]の領域y[i][1]に真の値を書き込むという動作を1命令ステップで行うread-and-write(x,y[i][1],1)命令を実行する手段と、
前記共有2値変数配列xに偽の値を書き込む手段と、前記共有2値変数配列群y[1...n][1]の中の各識別子jに対応する領域y[j][1]を識別子1から識別子の値の増加順に読み出し、領域y[j][1]の値が真である最も小さな識別子jminを求める手段と、
前記共有2値変数配列群y[1...n][2]の中の前記識別子jminに対応する領域y[jmin][2]の値を読み出し決定候補値とする手段と、
前記決定候補値を出力する手段とを
有することを特徴とし、請求項1の手法を実施可能な非同期共有オブジェクトシステム。 - 前記read-and-write(x,y[i][1],1)命令を実行する手段は、
前記識別子iをもつ当該プロセッサが前記共有2値変数配列群y[1...n][1]の前記領域y[i][1]に前記共有2値変数配列xの値が真の場合のみ真の値を書き込み、
前記共有2値変数配列群y[1...n][1]の前記領域y[i][1]を前記共有2値変数配列xの読み出し開始から前記領域y[i][1]の書き込み終了までの間前記識別子i以外の識別子をもつプロセッサが読み書きできないようロックする、
しかし、
前記共有2値変数配列xの排他的制御を行わず、前記識別子iをもつプロセッサ以外のプロセッサによる読み出し、真の値の書き込みを許す
ことを特徴とする請求項2に記載の非同期共有オブジェクトシステム。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2000068746A JP4923288B2 (ja) | 2000-03-13 | 2000-03-13 | 非同期共有オブジェクトシステムの耐故障合意手法およびその実現機構 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2000068746A JP4923288B2 (ja) | 2000-03-13 | 2000-03-13 | 非同期共有オブジェクトシステムの耐故障合意手法およびその実現機構 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JP2001256209A JP2001256209A (ja) | 2001-09-21 |
| JP4923288B2 true JP4923288B2 (ja) | 2012-04-25 |
Family
ID=18587755
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2000068746A Expired - Fee Related JP4923288B2 (ja) | 2000-03-13 | 2000-03-13 | 非同期共有オブジェクトシステムの耐故障合意手法およびその実現機構 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JP4923288B2 (ja) |
Families Citing this family (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP5201434B2 (ja) * | 2001-09-28 | 2013-06-05 | 陽子 友保 | 耐故障合意手法およびその高速動作を保証する非同期共有オブジェクトシステム |
Family Cites Families (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH0512100A (ja) * | 1991-07-05 | 1993-01-22 | Fujitsu Ltd | セルの管理方法及びセル管理テーブル |
| JP2781742B2 (ja) * | 1995-05-30 | 1998-07-30 | 甲府日本電気株式会社 | 並列計算機 |
| US5696939A (en) * | 1995-09-29 | 1997-12-09 | Hewlett-Packard Co. | Apparatus and method using a semaphore buffer for semaphore instructions |
| JP3675623B2 (ja) * | 1997-10-31 | 2005-07-27 | 株式会社東芝 | プログラム開発支援装置及び方法並びにプログラム開発支援用ソフトウェアを記録した記録媒体 |
| JPH11312148A (ja) * | 1998-04-28 | 1999-11-09 | Hitachi Ltd | バリア同期方法及び装置 |
-
2000
- 2000-03-13 JP JP2000068746A patent/JP4923288B2/ja not_active Expired - Fee Related
Also Published As
| Publication number | Publication date |
|---|---|
| JP2001256209A (ja) | 2001-09-21 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US4497059A (en) | Multi-channel redundant processing systems | |
| Jayanti et al. | Fault-tolerant wait-free shared objects | |
| JPS62208158A (ja) | マルチプロセツサシステム | |
| US20030126404A1 (en) | Data processing system, array-type processor, data processor, and information storage medium | |
| JP4923288B2 (ja) | 非同期共有オブジェクトシステムの耐故障合意手法およびその実現機構 | |
| JPH0833842B2 (ja) | 論理演算装置 | |
| RU2411570C2 (ru) | Способ и устройство для сравнения данных в вычислительной системе, включающей в себя по меньшей мере два исполнительных блока | |
| CA2258859A1 (en) | Arrangement for operating two functionally parallel processors | |
| JP2001337822A (ja) | 命令バッファ及びバッファキュー制御 | |
| JP3553793B2 (ja) | シングルイベントアップセット対策データ処理装置およびシングルイベントアップセット対策処理方法 | |
| CA2151673C (en) | Parallel processing system with a plurality of communication register modules | |
| CN114981781B (zh) | 信息处理装置、控制方法和记录介质 | |
| JP5201434B2 (ja) | 耐故障合意手法およびその高速動作を保証する非同期共有オブジェクトシステム | |
| JPS62180470A (ja) | ベクトル処理装置 | |
| JPH0713818B2 (ja) | マイクロプロセッサ | |
| JPH0769836B2 (ja) | マイクロプロセッサ | |
| SU1365086A1 (ru) | Устройство дл контрол блоков управлени | |
| JPH0690728B2 (ja) | マイクロプロセッサ | |
| JPH10340202A (ja) | 故障検証を容易にするアドレストラップ比較回路 | |
| JP2968658B2 (ja) | バリア同期実現方法 | |
| JPH1074186A (ja) | アレイからエントリを選択する方法および装置 | |
| JPH04286031A (ja) | プログラムのループ並列実行処理方法 | |
| Elphick et al. | Enhanced distributed recovery blocks: a unified approach for the design of safety-critical distributed systems | |
| JP2004302831A (ja) | 非同期分散システムとその排他的命令の耐故障かつ競合低減化実行方法 | |
| JPH0769754B2 (ja) | 同期タイミング制御方式 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20000313 |
|
| A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20070312 |
|
| A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20070314 |
|
| A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20070315 |
|
| A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070427 |
|
| A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A711 Effective date: 20070504 |
|
| A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20100212 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20100223 |
|
| A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20100423 |
|
| A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20100423 |
|
| A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20100628 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20110315 |
|
| A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20110511 |
|
| TRDD | Decision of grant or rejection written | ||
| A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20120110 |
|
| A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20120118 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20150217 Year of fee payment: 3 |
|
| R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
| LAPS | Cancellation because of no payment of annual fees |