JPH1115793A - 資源の保全性を保護する方法 - Google Patents

資源の保全性を保護する方法

Info

Publication number
JPH1115793A
JPH1115793A JP10146042A JP14604298A JPH1115793A JP H1115793 A JPH1115793 A JP H1115793A JP 10146042 A JP10146042 A JP 10146042A JP 14604298 A JP14604298 A JP 14604298A JP H1115793 A JPH1115793 A JP H1115793A
Authority
JP
Japan
Prior art keywords
instruction
plo
lock
processor
instance
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP10146042A
Other languages
English (en)
Inventor
J Greenspan Steven
スティーブン・ジェイ・グリーンスパン
Anthony Sukaruji Casper
キャスパー・アンソニー・スカルジ
Ernst Prambeck Kenneth
ケニス・アーネスト・プラムベック
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JPH1115793A publication Critical patent/JPH1115793A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores

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)
  • Multi Processors (AREA)
  • Memory System (AREA)

Abstract

(57)【要約】 (修正有) 【課題】 複数のプロセッサによる記憶アクセス要求の
同時実行を逐次化する。 【解決手段】 複数のプロセッサの各プロセッサ上でブ
ロック記号を含むPLO(ロック操作実行)命令を実行
し、複数のプロセッサのいずれかで変更されるデータ構
造の一貫性を制御する。ブロック記号は、実行プロセッ
サによりPLO命令インスタンスから抽出される。次に
プロセッサはハードウェア−マイクロコードを使用して
ブロック記号をハッシュし、保護記憶域内のロック・フ
ィールドのロケーションを生成する。PLO命令のブロ
ック記号は、PLO命令を備えるソフトウェアにりコン
ピュータ資源に関連づけられ、ブロック記号が、ブロッ
ク記号に対するハッシュ操作を使用して保護されたロッ
クにその資源を関連づける。プロセッサがブロック記号
のロックを獲得しないと、実行PLO命令インスタンス
がブロック記号に関連づけられた資源単位に対するアク
セスおよび変更を行えない。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、複数のプロセッサ
によって行われる記憶アクセス要求の同時実行を逐次化
(直列化)する新規な方法を提供する。本発明は、同じ
データ単位にアクセスする命令実行を求める同時プロセ
ッサ要求を逐次化する。コンピュータ・システムにおけ
る操作にとって逐次化が重要な場合、本発明は、競合す
る同時要求を行う可能性のあるすべての命令に同じブロ
ック記号をソフトウェアに挿入させることによって、そ
のような逐次化をソフトウェアによって制御することが
できるようにする。同時実行命令で同じブロック記号を
使用することによって、それらのプロセッサに同時発生
命令を強制的に逐次実行させる。このようなプロセッサ
実行の逐次化が不可欠な状況の例は、同じデータ要素セ
ットに対する同時アクセス/変更要求があって、データ
要素間のデータ保全性を維持しなければならない場合で
ある。同じデータ要素に対する調整されていない変更要
求が複数のプロセッサによって同時に実行されると、そ
のセット中のデータ要素の内容が予測不能になり、した
がって信頼できなくなる可能性がある。
【0002】
【従来の技術】現在、コンピュータ・システムではプロ
セスの並列実行が一般的であり、この応用分野で扱われ
る逐次化の問題については従来のコンピュータ・システ
ムで対処されてきたが、従来の技法は有効ではないかま
たは本発明によって達成可能なシステム動作の効率を得
ることができない。問題は、共用データの並列的なアク
セスおよび変更ができない状況や、コンピュータ・シス
テムにおけるデータの保全性を保つためにそのようなプ
ロセスを逐次に実行しなければならない状況が多いこと
である。本発明は、このようなタイプの状況に対処し、
コンピュータ・システムにおけるデータ構造に含まれる
共用データの保全性を保つ。本明細書ではデータ構造と
はコンピュータ・システムの「資源」を指し、たとえ
ば、データ・ファイル、あらゆるタイプの待ち行列、デ
ータを一時的に保持するバッファ、変更可能なプログラ
ムなどが含まれる。言い換えると、並列プロセスよって
変更可能なあらゆるコンピュータ・データ構造を含む。
【0003】複数のプロセス(複数のプロセッサによっ
て実行されるプログラム)による資源の使用の逐次化と
は、その資源を一度に1つのプロセスしか使用せず、ど
のプロセスによる使用も他のどのプロセスによる使用と
も重ならないことを意味する。逐次化は通常、一貫性の
ある結果やビューを提供するために必要である。コンピ
ュータ・システムの主記憶装置に対する取り出しアクセ
スおよび格納アクセスは、逐次化が必要になる可能性が
ある重要な状況である。
【0004】第1の例として、プロセス1が値Aおよび
BをそれぞれロケーションXおよびYに格納し、プロセ
ス2が値CおよびDをそれぞれロケーションXおよびY
に格納する場合、XおよびYの最終的な内容は、AとD
またはCとBではなく、AとBまたはCとDになること
が必須であると考えられる。
【0005】第2の例として、ロケーションXおよびY
にそれぞれAおよびBが入っており、プロセス1がXお
よびYにそれぞれCおよびDを格納し、プロセス2がX
およびYから取り出す場合、プロセス2は、AとDまた
はCとBではなく、AとBまたはCとDを取り出すこと
が必須であると考えられる。
【0006】第3の例として、プロセス1および2がロ
ケーションZから取り出し、取り出された値が所定の値
Pであるために、プロセス1がロケーションZにQを格
納し、プロセス2がロケーションZにRを格納する場
合、プロセス1はロケーションZにQが入っていると判
断するのに対し、プロセス2はロケーションZにRが入
っていると判断することがある。
【0007】第3の例は、米国特許第3886525号
で扱われている。米国特許第3886525号は、比較
・置換(CS)命令を開示している。CSは第1オペラ
ンドおよび第3オペランドをレジスタに持ち、第2オペ
ランドを記憶域の指定されたアドレスに持つ。CSは第
1オペランドを第2オペランドと比較し、それらが等し
い場合、第3オペランドを第2オペランドのロケーショ
ンに格納し、条件コード0によってこの結果を示す。第
1と第2のオペランドが等しくない場合、CSは第2オ
ペランドを第1オペランド・レジスタにロードし、この
異なる結果を条件コード1によって示す。CSは、第2
オペランドが取り出される時点とCSが条件コード0ま
たは1を設定することによって完了する時点との間に、
他のプロセッサによって実行された他の命令が第2オペ
ランド・ロケーションへの格納またはそこからの取り出
しを行うことができないようにする新規な機能を備え、
この効果はCSによってそのプロセッサのキャッシュ内
で第2オペランドのロケーションを含むラインをロック
することによって実現される。CSのこの新規な機能を
インターロック更新参照と呼ぶ。
【0008】第3の例で、もし両方のプロセスがCSを
使用してロケーションZに対する取り出しおよび格納を
行うのであれば、一方のプロセスだけが値Pを取り出
し、そのプロセスだけがロケーションZに格納すること
になる。
【0009】第1および第2の例では、XとYはそれぞ
れ異なるキャッシュ・ラインにある可能性が高いため、
CS命令は第1および第2の例には適用されない。プロ
セッサはそれぞれ2つのキャッシュ・ラインをロックす
ることができない。そうするとデッドロックになる可能
性があるためである。たとえば、プロセッサ1がXを含
むラインをロックしており、更にYを含むラインをロッ
クしようとしたときに、プロセッサ2がYを含むライン
をロックしており、Xを含むラインをロックしようとす
ると、どちらのプロセッサも次に進むことができない。
【0010】第1および第2の例は、実際にはプログラ
ム式ロックによって対処されてきた。単純なプログラム
式ロックは、第3の例について説明したCS命令を使用
して実施することができる。第3の例では、第2オペラ
ンド・ロケーションがロックを示すことができ、そして
所定の値Pはそのロックが現在保持されていないという
意味を持つことができる。プロセス1または2がCSを
使用してPをそのプロセスの第3オペランド値(プロセ
ス1の場合はQ、プロセス2の場合はR)で置き換える
場合、そのプロセスはロックを獲得しており、プログラ
ム規則によって第1または第2の例のロケーションXお
よびYにアクセスすることができる。他方のプロセス
は、プログラム規則により、ロックを獲得するまでXお
よびYにアクセスすることができない。そのプロセスは
第1のプロセス(1または2)がZの内容をPに置き換
えるまではロックを獲得することができない。
【0011】ここで、プロセスがロケーションZによっ
て示されたロックを待っている間、そのプロセスは何を
すればよいかという問題が生じる。特定の状況で実施可
能な解決策は、プロセスがロックを「スピン・ロック」
として扱うことである。すなわち、プロセスはロックを
獲得するまでCS命令を繰り返し実行する(ロック上で
スピンする)。この解決策は、問題のプロセスを実行し
ているプロセッサの時間を無駄にし、従ってロックが短
時間しか保持されないことが保証できる場合にのみ実施
可能である。一般には、ロックを保持しているプロセス
がたとえば第1または第2の例のロケーションXまたは
Yにアクセスするときにページ・フォルトが生じると、
そのロックはきわめて長時間保持されることがある。そ
の場合、制御プログラムがページ・フォルトを解決する
ためにプロセスに割込みをかけることになるが、これに
は長時間かかるため、制御プログラムはそのプロセスを
ディスパッチ解除し、その代わりに別のプロセスをディ
スパッチすることがある。制御プログラムは、プロセス
が入っているアドレス空間をスワップ・アウトすること
さえある。したがって、スピン・ロックは実際には、ペ
ージ・フォルトがないことがわかっている場合、および
入出力割込みなどの他の非同期割込みのためにプロセッ
サが使用不能にされている場合にのみ実施可能である。
【0012】一般には、ロックが保持されているときに
どうするかという問題の解決策は制御プログラムのサー
ビスを使用することである。たとえば、ロックは事象制
御ブロック(ECB)によって表すことができ、ロック
が保持されていることを検出したプロセスはECBを指
定する待機サービスを呼び出すことができ、それによっ
てそのプロセスはディスパッチ解除されることになり、
ロックを保持しているプロセスは同じECBを指定する
通知サービスを呼び出すことによってロックを解除する
ことができ、それによって第1のプロセスは再ディスパ
ッチするのに適格なプロセスの待ち行列に入れられるこ
とになる。これらのサービスの使用にはきわめて時間が
かかり、資源の使用を逐次化するためにロック機能を提
供する、単純なCS命令ではない何らかのハードウェア
支援方法が使用可能であることが是非望ましい。
【0013】米国特許第5081572号では、前述の
第1および第2の例で使用する比較・置換分離(CS
D)命令および比較・ロード(CL)命令が開示されて
いる。CSDおよびCLは2つのロケーションに対する
インターロック更新参照を行う。実際には、このインタ
ーロック更新参照を実施する方法は、CSD命令または
CL命令を実行するプロセッサ以外のすべてのプロセッ
サを休止させることである。これは休止させられたプロ
セッサの時間をかなり無駄にし、非効率的である。
【0014】プログラム式ロックの代わりとなる他の方
法は、コンピュータ命令のサブセットをロッキング・ク
ラスに分類し、そのクラス内の命令の使用によって保護
される一般的なタイプの資源へのアクセスを制御するこ
とである。これは、米国特許第5333297号および
米国特許第5488729号で開示されている。このど
ちらの特許も、本発明の重要な構成要素であるブロック
記号を開示していない。前者の特許は、コンピュータ命
令のサブセットをロッキング「クラス」に分類し、各ク
ラスは特定の命令コードによって識別され、コンピュー
タ・システム内の一般的なタイプの資源専用であり、こ
のタイプはそれらの命令コードによって示される。後者
の特許は、命令を実行する実行ユニットに従って命令を
分類し、前者の特許とは異なるタイプの命令分類であ
る。前者では、(命令コードによって決まる)各命令ク
ラスは、二重スレッド待ち行列など、その命令クラスに
関連づけられた一般的タイプの資源のデータ変更をアト
ミックに行うようになっている。前者の命令分類の使用
に関する重大な制約は、複数のプロセッサから成るCE
C(セントラル・エレクトロニック・コンプレックス)
の他のいずれかのプロセッサ上の同じロッキング・クラ
ス内でいずれかの命令が実行されているときに、ロッキ
ング・クラス内の他のどの命令も現在未使用の資源に対
する実行を行うことができないようになっていることで
ある。このようなロックは、各プロセッサのハードウェ
ア−マイクロコードで行われ、各プロセッサとは分離し
た集中ハードウェア−マイクロコード記憶域では行われ
ないことである。資源に対するロックは各プロセッサの
ハードウェアで複製され、各ロックのこれらの複数のコ
ピー間でロックの状態を調整するためにプロセッサ間通
信が必要である。
【0015】
【発明が解決しようとする課題】本発明は、資源へのア
クセスにインターロック更新参照も命令のクラスも使用
せず、本発明にはそれらの方法の欠点がない。本発明に
よる資源逐次化には、米国特許第5333297号の命
令クラスを実行する複数のプロセッサのうちの1つのプ
ロセッサのみが一度に1つの資源にアクセスすることが
できるという制約がない。本発明では、各プロセッサが
異なるブロック記号を使用して異なる資源にアクセス
し、そしてブロック記号に固有のロックが割り当てられ
ている限り、複数のプロセッサが同時に複数の資源に並
列にアクセスすることができる。本発明は、(どの従来
の技術にもない)ブロック記号を使用して資源を識別
し、そのアクセスの逐次化を制御することを発見した。
本発明は、新規なタイプの命令中でブロック記号を使用
して、システムのユーザ(たとえばそのプログラマやプ
ログラム)が、どの周知の従来技術で教示されている技
法よりも、アクセス制御の正確さ、資源アクセス並列
化、および資源アクセス細分性を向上できるようにす
る。
【0016】(米国特許第5333297号で行うよう
な)命令のロック分類は、そのような命令クラスを使用
するようにコンピュータ・アーキテクチャを設計すると
きに、命令クラスのアソシエーションを資源タイプに結
びつける。アーキテクチャ上の決定は、コンピュータ設
計をコンピュータの製造のために発表する前に行わなけ
ればならない。したがって、従来のロック分類された命
令を使用して構築されたコンピュータは後でアーキテク
チャ上の変更を加えることができず、それによってコン
ピュータ・システムに後で組み込まれた資源とロックと
のソフトウェア・アソシエーションができないことがあ
る。大部分のコンピュータ・システムでは、新しいプロ
グラムが常に開発されており、多くの古いプログラムが
変更される。したがって、逐次化すべき資源は時間の経
過とともにプログラムごとに定義または変更されること
になる。本発明は、後で任意の細分性でロックを資源に
ソフトウェア結合することができるようにし、新たに追
加された資源の逐次アクセスを制御するために使用する
ことができるようにする。ロックは、たとえばプログラ
ムによって、機械に合わせて動的に選択され、指定され
る。機械は、プログラム指定ブロック記号で表された資
源に対する操作を強制的に逐次化する。
【0017】また、本発明は、米国特許第533329
7号で行うように、他の各プロセッサに互いに通知する
ために、各プロセッサ命令実行開始時にCPU間でプロ
セッサ間バスを介してCPU間同報通信を行う必要がな
い。
【0018】
【課題を解決するための手段】本発明は、CECにおけ
る資源のユーザが資源に対する変更を制御して、変更が
資源のデータ保全性に影響を与えないようにする、新規
な方法を提供する。本発明は、プログラムとプロセッサ
との間に新規なタイプのインタフェースを使用し、資源
のユーザがブロック記号を指定し、使用して、資源への
ユーザ・アクセスのハードウェア強制逐次化を実現し、
制御することができるようにすると同時に、他のブロッ
ク記号によって制御される他の資源にアクセスして使用
するために同じタイプの命令を使用することができる、
CEC内の他のプロセッサによる他の資源の同時使用
を、逐次使用を含めて可能にする、新規なタイプの命令
を提供する。
【0019】本発明は、単一の新規なタイプの命令の単
一実行インスタンスを使用して、ブロック記号によって
新規な方式で制御される資源をロック、変更、およびロ
ック解除する。資源は、本発明の単一実行インスタンス
の前後ではロック解除されている。本発明では、どの命
令の場合も、同じ資源の逐次化状態は単一実行インスタ
ンス中にのみ存在する。したがって、資源はその他のあ
らゆるときにアンロック状態となることができる。
【0020】ソフトウェア・ロックを使用している場
合、ロックの獲得とその同じロックの解放は必ず2つの
別々の機械命令で行われなければならない。この2つの
命令の間で、ソフトウェアは資源の逐次化を必要とする
計算ステップを行う。これは、ロックの獲得と解放との
間にソフトウェア誤りまたはプロセッサ障害が起こる可
能性があることを意味する。すなわち、ロックが保持さ
れて解放されない場合があり、システム全体の障害にな
る可能性がある。このような不都合が発生したときにシ
ステム回復を行うために、オペレーティング・システム
は一般に、ロックの許可と解放を行い、ロックの実施中
にそれらを記録するロック管理サービスを備え、ソフト
ウェアとハードウェアのどちらの誤りによるものである
かを問わず、終了または再始動されるプログラムが保持
しているロックを解放することによって回復を行う。ロ
ック操作のためのシステム・サービスの呼出しによっ
て、実行される機械命令のプログラム・パス長がかなり
長くなる。これは、ロックの獲得および解放の両方のた
めに、問題プログラム状態から監視プログラム状態へ
の、およびその逆への変更が必要な問題状態のプログラ
ムの場合には特にそうである。
【0021】本発明は、プログラマが、データ保全性を
保持する必要がある各資源または資源のグループにユー
ザ決定ブロック記号を関連づけることができる方法を提
供する。すべてのCECユーザが、関連づけられた資源
に変更を加えるアクセスを逐次化するために、プログラ
ムに書かれた本発明のタイプのすべての命令で同じブロ
ック記号を使用する。複数のプロセッサが、同じ資源
(その資源へのアクセスは本発明により定義されるタイ
プの命令中で同じブロック記号を使用することによって
制御される)に同時にアクセスする命令インスタンスを
実行する場合、それらの複数のプロセッサは関連づけら
れた資源にアクセスする際に逐次化され、一度に1つの
プロセッサ・インスタンスがその資源にアクセスするこ
とができるようにする。複数のプロセッサが同時実行イ
ンスタンス中に異なるブロック記号を使用している限
り、資源競合は存在せず、それぞれの必要な資源に同時
にアクセスすることができる。
【0022】本発明によって提供される特定のタイプの
命令は、その単一実行インスタンスが多くの異なるタイ
プの動作機能を実行することができるようにする。その
各動作機能は、ブロック記号を使用して資源データの保
全性を逐次化により保護する。本明細書で説明する本発
明の実施態様では、この命令タイプをロック操作実行
(PLO)命令と呼ぶ。本発明の詳細な実施態様では、
PLOブロック記号を「プログラム・ロック・トーク
ン」(PLT)と呼ぶ。これは、ソフトウェア・プログ
ラムがトークン(ブロック記号)を選択することを強調
するためである。本発明の逐次化制御は、本命令タイプ
の実行の各インスタンスによって呼び出されるハードウ
ェア−マイクロコードを使用して資源のロックをセット
アップする。この資源は、ロックを使用するプログラム
を含むすべてのソフトウェアから隠蔽されて保護され
る。ソフトウェア・プログラムはロックを直接見たり制
御したりすることができない。ロックはプログラム−プ
ロセッサ・インタフェースの一部ではない。一実施態様
ではロックを内部的に使用してブロック記号の必要な逐
次化を行う。
【0023】したがって、任意のプロセッサ上で任意の
PLO命令を実行する任意のプロセッサのハードウェア
−マイクロコードが、他の任意のプロセッサ上で実行さ
れるPLO命令による、ブロック記号に関連づけられた
特定の資源への他のすべてのアクセス要求を逐次化す
る。この逐次化はPLO命令の実行の1インスタンスの
間存続し、その間にPLO命令は資源内の連続していな
いロケーションにも連続しているロケーションにも変更
を加えることができる。PLO命令は、他のプロセッサ
で実行されている同じブロック記号を指定した他のPL
O命令に関するアトミック操作として、不連続の記憶ロ
ケーションに対する複数の格納操作を行うことができ
る。
【0024】資源単位にブロック記号が関連づけられ
る。資源単位は、待ち行列、ソフトウェア・メッセージ
・バッファ、制御装置、ディスク・ドライブなど、従来
のタイプのCECの1つまたは複数のソフトウェアまた
はハードウェア実体(エンティティ)である。資源に関
連づけられたブロック記号によって、各PLO命令中に
資源単位およびそれに対応するブロック記号が指定され
る。
【0025】同時命令インスタンスが異なるブロック記
号を持っている限り、同じPLO命令タイプは、競合な
しに異なるプロセッサ上で同じ機能または異なる機能を
実行する同時インスタンスを持つことができる。しか
し、異なるプロセッサ上で実行される複数の同時PLO
命令インスタンスが同じブロック記号を持っていて、そ
のブロック記号によって制御される資源に異なる変更を
加えることを要求する場合は、それらのPLO命令が異
なる機能を持っているかどうかを問わず、競合が存在す
る。
【0026】本発明のハードウェア−マイクロコードに
よってセットアップされ、使用されるロックは、ブロッ
ク記号によって制御される資源に対して1対1の関係を
持つことができるが、必ずしもそうである必要はない。
すなわち、本発明は単一のロックを(1つのブロック記
号に関連づけられた)1つの資源にも、(対応する数の
ブロック記号に関連づけられた)任意の数の複数の資源
とでも使用することができるようにする。すなわち、本
発明で使用される任意の1つのロックを、1つのブロッ
ク記号でも複数のブロック記号でも使用することができ
る。(それぞれ複数のブロック記号に関連づけられた)
複数の資源に1つのロックを使用する場合、それらの資
源のうち、一度に(それらのブロック記号のうちの関連
づけられた1つのブロック記号を使用する)1つの資源
だけがそのロックを使用することができる。1つのロッ
クと複数のブロック記号とのこの関係は、当該ロックに
よって制御される複数のブロック記号のセットに関連づ
けられたすべての資源の使用を強制的に逐次化する効果
がある。
【0027】ブロック記号は、プログラム定義データ構
造を逐次化するためにプログラマによって自由に指定さ
れるため、最新の高性能コンピュータ・システムでは潜
在的に多用される可能性がある。コンピュータ・システ
ムが備える物理ロックに対する記号のオーバーコミット
メントは、この状況を処理するための必要な設計上の妥
協である。パフォーマンス上の影響は、十分な数のロッ
クおよび適切なハッシング・アルゴリズムによって最小
限にすることができる。
【0028】したがって、許容されたPLO命令の実行
インスタンス中は、他の命令ストリーム中、たとえば他
のプロセッサで実行される命令ストリーム中で同じブロ
ック記号を使用する同時実行PLO命令インスタンスに
対して資源へのアクセスを禁止する。本発明のPLO逐
次化は、PLO命令の同時実行にのみ適用され、本発明
は資源に対して同時に使用されている非PLO逐次化技
法(ソフトウェア逐次化やその他のタイプのマイクロコ
ード制御逐次化)によって制御されるアクセスに対して
は資源を逐次化しない。PLO命令は、その使用規則に
従うプログラムに協調的な逐次化機能を提供する。した
がって、本発明の顕著な効果を得たい場合には、資源に
アクセスすることができるすべてのソフトウェア・プロ
グラム内で使用する資源逐次化技法は本発明のみでなけ
ればならない。言い換えると、特定の資源にアクセスす
るすべてのプログラムは、被制御資源に対するアクセス
逐次化を強制する唯一の手段として本発明のPLO命令
を排他的に使用しなければならない。
【0029】しかし、本発明のPLO技法は、資源ごと
という限られた範囲では、他のソフトウェア逐次化技法
とコンパチブルである。これは、同じCEC内の他の資
源に他のソフトウェア逐次化技法を使用して、それらの
データ保全性を保証することができることを意味する。
すなわち、PLO技法は、特定の資源に対して排他的に
使用した場合に限り、その資源のデータ保全性を維持す
ることができるが、PLO技法に依らなくてもよい他の
資源は他の逐次化技法を使用してそれぞれのデータ保全
性を維持することができる。したがって、本発明のPL
O技法はCEC内で使用される唯一の逐次化技法である
必要はない。従来のソフトウェア・ロック技法を使用す
る資源逐次化は、ソフトウェア・ロックによる逐次化が
依然として可能であるが、PLO命令とソフトウェア・
ロックとの間に共通部分がないため、同じ資源でPLO
命令をソフトウェア・ロック技法と共に使用することは
できない。ただし、資源内のデータの保全性に関して心
配がない場合には、混在した技法(本発明のPLO命令
と他の技法)を資源と共に使用することができるが、そ
の場合は、データ保全性の維持をPLO命令に求めては
ならない。いずれかの資源でPLO技法を他の逐次化技
法と混在させる場合、その混在によって資源に必要なデ
ータ保全性が付与されるように保証するのは、混在の責
任を負うプログラマの責任である。
【0030】したがって、本発明は、資源内のデータの
保全性を保証する必要がある場合には、そのPLO技法
を資源ごとに排他的に適用することを求める。したがっ
て、各PLO命令実行インスタンスの間は、CEC内の
他のプロセッサ上で実行されているPLO命令の他のす
べてのインスタンスは、ブロック記号に関連づけられた
資源へのアクセスを禁止される。このPLOブロック記
号制御式の資源変更は、資源のすべてのアクセスを制御
するためにPLO命令を排他的に使用することにより、
資源に記憶されたデータの保全性(一貫性)を保証す
る。
【0031】CEC内で使用されるすべてのPLOブロ
ック記号に値を割り当てるために、PLO命令を使用す
る任意のCECで使用されるプロトコルがプログラマに
より設定される。アクセスを逐次化しなければならない
異なる資源単位のそれぞれを表すように異なる値を割り
当てる。このプロトコルは、資源単位のために固有のブ
ロック記号を選択し且つPLO資源単位にアクセスする
すべてのソフトウェアがすべてのPLO命令でそれらの
固有ブロック記号を使用する限り、資源単位のPLOブ
ロック記号として任意の数値を選択することができる。
ブロック記号に関連づけられる資源単位は、ソフトウェ
ア・プロトコル割当てによる決定に従って、単一のコン
ピュータ資源でも複数のコンピュータ資源でもよい柔軟
性を備える(たとえば、資源単位は単一の待ち行列でも
複数の待ち行列でもよい)。したがって、資源の細分性
はシステム・ユーザが決定する。すなわち、ブロック記
号値に資源を割り当てるために行うプロトコル選択によ
って、PLO技法が扱う資源の細分性が決まる。プロセ
ッサはブロック記号のプログラミング上の意味も、それ
に伴う細分性も知らない。どの資源がPLO命令による
データ保全性保護の対象であるかは、各PLO命令で指
定されたブロック記号により決定される。PLO命令実
行によって強制される資源の細分性も同様である。同じ
資源単位にアクセスして、その資源単位内のデータを変
更することができるCEC内のPLO命令のすべての実
行で同じブロック記号を使用しなければならない。プロ
セッサはブロック記号のプログラミング上の意味も、保
護するアクセスの細分性も知らない。プロセッサは記号
自体によって逐次化するに過ぎない。以下では、「資
源」という用語を使用して、上で定義した「資源単位」
を指すことがある。
【0032】従来のソフトウェア・ロック方法は、たと
えば待ち行列ロック・フィールドなど、資源のロック・
フィールドのアドレスを知って、それを使用しなければ
ならない。それに対して、PLOブロック記号を使用す
るソフトウェアは、どのようなロック・フィールドのア
ドレスも知る必要がなく、使用する必要もない。PLO
技法は、ブロック記号をどの特定のロケーションにも記
憶する必要がなく、ソフトウェア・ロック・フィールド
またはソフトウェア・プロトコル・ロック・ロケーショ
ンはない。ソフトウェア・ロックとは異なり、ブロック
記号は特定のロケーションにおいてソフトウェアからア
クセス可能である必要はない。これは、プロトコル・ロ
ケーションにおいてソフトウェアがアクセスする必要が
ある従来のソフトウェア・ロックに勝るブロック記号の
大きな特徴である。したがって、ブロック記号は、それ
らに関連づけられた資源とのどのようなアドレス関係も
ない恣意的に選択された値を有することができ、またプ
ログラムが何らかのアドレス関係を使用してブロック記
号プロトコルを決定することもできる。
【0033】CEC内で使用されているすべてのプログ
ラムでPLO命令を排他的に使用して、複合プログラム
・データ構造に対する複数の取り出し操作および格納操
作のアトミック性を得ることによってシステム・パフォ
ーマンスの大幅な向上が達成される。従来のソフトウェ
ア・プログラムを書き直しまたはコンパイルし直して、
従来のソフトウェア・ロックの使用を本発明のPLO命
令(前述のように資源ごとのPLO排他方式で)に完全
に置き換えることもできる。
【0034】本発明のPLO命令は、PLO命令実行の
単一インスタンスの間、アクセスされた資源内の不連続
ロケーションにおけるデータ変更の保全性を保証する。
PLO命令の実行の各単一インスタンスの間は、そのP
LO命令を出したソフトウェアには、プログラムのため
に実行されるその特定のPLOインスタンスの存続期間
の間、指定された変更のために、関連づけられた資源に
対する排他的制御権が与えられる。PLOインスタンス
のための資源に対する排他的制御は、プロセッサが、中
央ハードウェア−マイクロコード(H−M)記憶域で指
定されたブロック記号のH−Mロックによって示される
使用可能状態を検出することによってその資源に競合が
ないことを検出した場合に開始することができ、競合が
ない場合は、そのPLO命令の指定に従って資源に排他
的変更を加えることができ、その後その実行インスタン
スは終了する。したがって、インスタンスの開始後に競
合があればそれが検出され、インスタンスは競合の終了
が示されるまで待機状態を続け、競合の終わりが示され
るとそのインスタンスは資源に対してその指定された排
他的変更を行い、最後にそのインスタンスが終了する。
【0035】本発明のPLO命令を使用することによる
重要な利点は、他のPLO命令に対して強制される資源
に対する各ロックアウトの期間がきわめて短いことであ
る。各ロックアウトは、逐次化が行われるときにPLO
命令実行の単一インスタンスの間だけしか存在しない。
1つのPLOインスタンスが完了するとただちに、その
資源は他のPLOインスタンスによる変更に応じられる
状態になり、それによって1つのPLO命令実行から次
のPLO命令実行へのきわめて迅速な切替を行うことが
できる。これは、ソフトウェア・ロックでは不可能であ
り、指定されたブロック記号によって制御される資源に
対する命令実行の1つのインスタンスについてしかロッ
ク状態を保持しない本発明と比較して、ソフトウェア・
ロックでは命令実行の多数(たとえば数百)のインスタ
ンスにわたって単一のロック状態を維持しなければなら
ならない。
【0036】本発明のPLO命令は非特権命令とするこ
とができる。その場合、非特権PLO命令は非特権プロ
グラム内から実行することができ、それによって、命令
を実行するためにプロセッサ制御を監視プログラムに切
り換えなければならない大きなシステム・オーバーヘッ
ドが回避される。比較すると、従来のソフトウェア・ロ
ック技法は、監視プログラム状態で(多数の命令を使用
して)実行されるロッキング制御プログラムによって行
われることが多かった。システム資源を変更するには、
従来の非監視プログラムはプロセッサ制御を、資源を変
更したりアクセス・ロックを付与したりすることができ
る監視プログラムに切り替えなければならなかった。監
視プログラムはロック・ロケーション(待ち行列アンカ
ー内など)にアクセスし、そのロック状態をアトミック
に検査し、ロック解除状態を検出した場合はロック状態
を獲得し、次にその資源を変更するか、または単にロッ
クを付与した。そして最後に、監視プログラムは要求側
の非特権プログラムにプロセッサ制御を戻し、それによ
って非特権プログラムが停止した箇所(監視サービスを
呼び出した箇所)から実行を続けることができるように
した。それに対して本発明は、PLO命令実行の単一イ
ンスタンスをその代わりに使用することによってこの複
雑な従来技術の手順を回避することができる。
【0037】資源に対するブロック記号の決定は、任意
のプロセッサが使用するハードウェア−マイクロコード
による制約なしに、PLO命令のソフトウェア・レベル
で行われる。ブロック記号の選択は人為的に行ってもよ
く(たとえば互いに異なるブロック記号を割り当て
る)、また所定のアルゴリズムを使用してもよい。ブロ
ック記号は、ソフトウェアPLO命令で指定される前
に、したがっていずれかのプロセッサによって使用され
る前に、資源に割り当てられる。ソフトウェアは資源に
アクセスするためのオペランドをその各PLO命令に提
供するので、したがってソフトウェアはどのブロック記
号がどの資源に関連づけられるかを認識し、資源のロケ
ーションも認識する。
【0038】本発明の各実施態様は、CEC内でPLO
命令を実行するすべてのプロセッサによって使用される
保護記憶域内にマイクロコード共用域を設ける。このマ
イクロコード共用域は、PLO命令を使用するソフトウ
ェア・プログラムから保護されており、ソフトウェア・
プログラムがアドレス指定できないようになっているの
で、そのようなソフトウェア・プログラムに対してトラ
ンスペアレントである。共用マイクロコード域内のPL
Oロック・フィールドは、同時実行されるPLO命令中
で同じブロック記号を使用する複数のプロセッサを、そ
の数に関係なく調整することができる。
【0039】好ましい実施態様の操作方法では、任意の
PLO命令の処理全体が、PLO命令を含むソフトウェ
アを実行する各プロセッサによって行われる。CEC保
護記憶域内のマイクロコード共用域にはPLO命令実行
をサポートするのに必要なマイクロコードが入れられ、
保護記憶域内のロック・フィールドはCEC内でPLO
命令インスタンスを実行するすべてのプロセッサにより
アクセスされ、使用される。本発明はソフトウェアによ
る実施に限定されず、ハッシングおよびロック操作をハ
ードウェア機能として実行することも可能である。
【0040】本明細書に記載の実施態様では、1つまた
は複数のプロセッサが、PLOロック項目のテーブルを
含むCEC保護記憶域内にあるハードウェア−マイクロ
コード(H−M)を使用して、PLOブロック記号に周
知のハッシュ・タイプの操作を行う。保護記憶域にはハ
ードウェア/マイクロコードしかアクセスすることがで
きず、ソフトウェア命令はアドレス指定することができ
ない。各PLOロック項目(PLO項目)には、CEC
内で実行されるPLO命令で使用可能な1つまたは複数
のブロック記号によって指定される1つまたは複数の資
源単位が関連づけられる。各PLOロック項目のサイズ
は、使用可能(ロック解除)状態およびロック状態の2
つの状態のいずれかに設定可能な1ビット(これをLビ
ット・フィールドと呼ぶことがある)であってもよい。
【0041】PLOブロック記号は、PLO命令実行イ
ンスタンスを呼び出すときに、PLO命令を実行してい
るプロセッサにより抽出される。抽出されたブロック記
号は集中保護記憶域のH−Mロック・フィールド・アド
レスに変換される。
【0042】好ましい実施態様では、各プロセッサは各
PLO命令インスタンスの実行で必要なすべてのH−M
処理を行う。プロセッサは、現在実行中のPLO命令内
のブロック記号に対するハッシング結果の生成を完了す
ると、そのPLO実行インスタンスが関連する資源に変
更を加える前に、探し出したPLO項目のロックを獲得
しなければならない。
【0043】本明細書に記載の好ましい実施態様では、
実行プロセッサのハードウェア−マイクロコードは、1
つまたは複数のブロック記号を対応するPLOロック項
目に関連づける(ロック項目は、同じロックを示す各ソ
フトウェア・プロトコル定義ブロック記号によって制御
される各資源に関連づけられる)。この関連づけ(アソ
シエーション)によって、保護記憶域内のPLO項目は
関連づけられた各資源についてデータ一貫性ロック機能
を実行することができる。各ブロック記号とPLO項目
の1つとの間のPLOアソシエーションは、本発明の好
ましい実施態様では、要求プロセッサのH−Mによりブ
ロック記号に対して行われる所定のハッシュ操作によっ
て実施される。H−Mハッシュ操作(これは実行ソフト
ウェアにはわからない)は、任意のハッシュ・アルゴリ
ズムを使用して、割り当てられた可能な各PLOブロッ
ク記号についてハッシュ結果を出すことができる。たと
えば、ハッシュ操作はブロック記号内の事前選択された
ビット位置のサブセットを使用して、それらのビット値
に算術関数および排他的OR関数の一方または両方を適
用することにより必要なハッシュ結果を出すことができ
る。各ブロック記号のハッシュ結果は、H−M域内の異
なるPLO項目を示す。ハッシュ結果を集中H−M域内
の関連づけられたPLO項目のロケーションに変換する
テーブルを含むハッシュ・アルゴリズムもある。
【0044】複数のブロック記号が同じロックにハッシ
ュされることがあるため、ブロック記号の数はロックの
数よりかなり多くなることがある。その結果、いくつか
のブロック記号が同じハッシュ結果を持ち、同じロック
を示す。同じロックにハッシュされる複数のブロック記
号によって一貫性の問題が起こることはないが、これに
よってシステム・パフォーマンスが低下する可能性があ
る。これは、複数の資源を表す複数のブロック記号のう
ちのいずれかをハッシュすることによって得ることがで
きる1つのハッシュ結果を使用して1つのロックにアク
セスする場合、同じ物理ロックを使用する偶然の競合が
起こる可能性があるためである。その場合、それらの複
数の資源のうち、ロックすることができ、同時に逐次ア
クセスすることができるのは1つの資源だけである。し
たがって、CECは任意の数のロックおよびブロック記
号を持つことができるが、その場合、それらの間に1対
1関係はない。ハードウェア−マイクロコード設計者は
経験によって、自分の機械を使用するコンピュータ環境
にとって最適な数のロックと最善のハッシュ・アルゴリ
ズムを選定することになる。
【0045】各固有ブロック記号はすべてのプロセッサ
について常に同じPLOロック項目にハッシュされるた
め、PLO項目にブロック記号を記憶する必要はない。
各プロセッサに各PLO命令インスタンスのためのH−
M処理(必要なH−Mロックの獲得およびその解放を含
む)を行わせることによって、PLO項目に実行プロセ
ッサのプロセッサ識別子を記憶する必要がない。したが
って、好ましい実施態様では、各PLO項目にブロック
記号または当該PLO項目を使用してアクセスを試みる
プロセッサのプロセッサ識別子(PID)を記憶するか
どうかはオプションである。集中H−M保護記憶域内の
各PLO項目は少なくとも1つのLフィールドを有し、
オフに設定されている場合はそれぞれのPLO項目の使
用可能状態を示し、オンに設定されている場合はそれに
関連づけられた資源のロック状態を示して、現PLO命
令を実行しているプロセッサによる資源への排他的アク
セスを可能にする。
【0046】複数の実行プロセッサの1つがその生成さ
れたハッシュ結果を使用して必要なPLO項目を位置指
定した場合、そのプロセッサは指定されたPLO項目内
のロック・フィールドをめぐって、同じブロック記号、
または同じH−Mロックにハッシュされる他の記号を使
用しているPLO命令インスタンスを同時に実行してい
る他のプロセッサと争わなければならない。この複数プ
ロセッサ競合は、アクセスされたPLO項目内のロック
・フィールドのアトミックな検査および設定を必要とす
る。
【0047】したがって、指定されたPLO項目内のロ
ック・フィールドを獲得するためのアトミック操作によ
って、競合プロセッサのうちのどのプロセッサがそのブ
ロック記号に関連づけられた資源に排他的にアクセスす
るかが決定する。このアトミック操作は、同じブロック
記号を使用する複数の同時PLO要求間の競合のあいま
いさを解消し、資源のデータ保全性が損なわれないよう
にする。アトミック操作を使用しないとすれば、競合す
る複数のプロセッサがLビットを同時に検査して、それ
を使用可能状態であると判断し、それによりLビットを
同時にセットする可能性がある。その結果、それぞれの
プロセッサがその関連づけられた資源にアクセスするよ
うに選択されたものとみなし、それらのプロセッサが同
時にその資源に変更を記憶することが可能になり、それ
によって、一度に1つのプロセッサだけが資源に変更を
加えることができるという一貫性規則に違反することに
なる。この例の一貫性問題は、従来技術のアトミックな
比較・置換(CS)操作を使用することにより解決され
る。あるいは、従来技術に見られるテスト・アンド・セ
ット命令を各実行PLO命令インスタンスに使用して、
保護されたH−Mロックを得ることもできる。したがっ
て、同時に複数のプロセッサが1つのロックをめぐって
競合する場合、競合するプロセッサによるアトミックC
S操作を使用して、どのプロセッサが次に関連づけらた
資源への排他的アクセス権を有するかを決定する。
【0048】アトミック操作は、どのプロセッサが位置
指定されたPLO項目に関連づけられた資源に対するP
LO実行のインスタンスを完了する次のプロセッサであ
るかを決定する。競合するプロセッサがない場合、唯一
の要求プロセッサがそのPLOインスタンスを完了する
ことになる。競合プロセッサがある場合、それらのプロ
セッサは並列にLフィールドの状態を検査し得る。いず
れかのプロセッサによる検査中に、Lフィールドが使用
可能状態であるとわかった場合、アトミック操作はその
プロセッサだけがLフィールドをロック状態に設定する
ことができるようにし、それによってそのプロセッサが
PLO実行のそのインスタンスを完了するように選択さ
れ、PLO実行を続ける。ロック・フィールドを検査し
ている他のプロセッサはそのロック状態を知り、それに
よってPLO実行の残りを続けることができないように
なる。Lフィールドがロック状態であることを検出した
プロセッサはアトミック操作によって選択されず、その
ようなプロセッサは、1)そのPLO実行インスタンス
を終了してその報告をプログラムに返すか、2)遅延ル
ープに入り、その間に使用可能状態であることを検出す
るまでLフィールドのアトミック検査を続ける。使用可
能状態を検出すると、そのプロセッサが関連づけられた
資源への排他アクセス権を持ち、そのPLO実行インス
タンスを完了することを許可される。したがって、PL
Oインスタンスを実行するプロセッサを、異なるプロセ
ッサ上で実行されている前のPLOインスタンスの完了
時にPLO項目のLフィールドが使用可能状態にリセッ
トされるまで、関連づけられた資源への排他アクセスを
獲得しないように遅延させることができ、使用可能状態
にリセットされるとその要求プロセッサがその資源に対
する排他的変更権を獲得してそのPLOインスタンスを
完了することができる。
【0049】H−M域に複数のPLO項目がある場合、
複数のプロセッサが同時に異なる資源にアクセスするこ
とができるように、それらのプロセッサが異なるPLO
項目にアクセスするための異なるブロック記号を使用し
てPLO命令インスタンスを同時に実行することがあ
る。しかし、複数のプロセッサが同じブロック記号を使
用してPLO命令インスタンスを実行しようとする場
合、それらのプロセッサは同じ資源に対する同じPLO
項目にハッシュし、逐次化され、その結果、一度に要求
PLO命令のうちの1つのPLO命令だけが関連づけら
れた資源への排他的アクセス権を持つことができる。
【0050】要約すると、PLO項目内のロック・フィ
ールドLがPLO命令を実行する各プロセッサのH−M
によってアトミックに検査され、一度に1つのプロセッ
サだけがロック・ビットLをロック状態に設定して、そ
のプロセッサに関連づけられた資源を変更する排他的権
利を与えることができる。各PLOインスタンスの完了
時にLフィールドが使用可能状態に設定され、その後、
Lフィールドが使用可能状態であることを検出した最初
のプロセッサがアトミックにLフィールドをロック状態
に設定することができるようになり、関連づけられた資
源を変更してその実行インスタンスを完了する排他的権
利がそのプロセッサに与えられ、他の競合プロセッサは
そのPLOインスタンスの完了を遅延させるか、または
そのPLOインスタンスを終了することができる。した
がって、各PLO実行インスタンスの最初の部分の間に
いずれかのプロセッサによるアトミック比較・置換操作
が行われるが、これは、そのプロセッサによるLフィー
ルドのロック状態の設定およびそのPLO命令実行イン
スタンスの完了がアトミックに可能になるまで、ループ
遅延され得る。
【0051】予想されるPLO競合はまれであり、それ
らは競合するPLOインスタンスの時間を長くするが、
それによる遅延は、持続期間がきわめて短いPLO実行
インスタンスの平均長には大きな影響を与えないはずで
ある。
【0052】
【発明の実施の形態】図1は、本発明の好ましい実施態
様を含むコンピュータ・システム(CEC)の関係部分
を示す図である。このCECには複数の中央プロセッサ
(たとえばCPU)1〜Nが含まれ、各中央プロセッサ
は別々にソフトウェア共用記憶域3にデータおよび制御
バス1B〜NBによって接続されている。CEC内の各
プロセッサは、プロセッサによって実行可能な各命令を
実行するハードウェアおよびマイクロコード(H−M)
を含む。各プロセッサを単一の半導体チップ上に製作す
るか、または複数のプロセッサを単一の半導体チップ上
に製作するか、または単一のプロセッサを複数の半導体
チップを使用して製作することができる。CECの一例
は、IBM S/390システムであり、これには1個
ないし10個のプロセッサを有する多くの異なるモデル
がある。
【0053】本発明は共用記憶域3内の同じ資源に同時
にアクセスしようとする複数のプロセッサ間の競合を扱
うため、本発明は複数のプロセッサを有するCECに適
用される。しかし、本発明は単一のプロセッサと本発明
を含む記憶装置とを有するCECでも適切に機能する。
【0054】CEC記憶装置はすべてのプロセッサ1〜
Nによって使用され、システム主記憶装置か、またはそ
れに接続された2次レベル・キャッシュもしくはL2キ
ャッシュと呼ばれることがあるタイプの共用ハードウェ
ア・キャッシュとすることができる。このCEC記憶装
置は、DRAM(ダイナミック・ランダム・アクセス・
メモリ)チップから構築される。記憶装置はその内容を
DASD(直接アクセス装置)6およびI/O(入出
力)装置7との間で受け渡して記憶する。CEC記憶装
置にはプロセッサ1〜Nが記憶コントローラ2を介して
アクセスする。
【0055】この実施態様では、CEC記憶装置は、ソ
フトウェア・プログラムおよびデータを保持するソフト
ウェア共用記憶域3と、プロセッサ1〜Nが使用するH
−M情報のみを保持する保護記憶域4の2つの部分に分
かれている。ソフトウェア記憶域3はコンピュータ・シ
ステム内のすべてのソフトウェア・プログラムが使用す
る命令およびデータを保持する周知の主コンピュータ・
メモリであり、任意の複合コンピュータ・システムにお
ける動作を可能にするために必要なソフトウェア構造で
あるプログラム、待ち行列、バッファなどを含む周知の
タイプのソフトウェア資源A〜Zを含む。このCECで
は、これらの資源はCECのユーザ間で共用される。C
ECの「ユーザ」には、CEC内で実行される任意のタ
イプのプログラムが含まれ、プログラマを含むそれらの
プログラムの人間の所有者を包含する。
【0056】ソフトウェア記憶域3および保護記憶域4
は両方とも、いずれかのプロセッサ1〜Nによって記憶
コントローラ2に送られるアドレスによってアクセスさ
れる。
【0057】好ましい実施態様では、保護記憶域4はI
BM S/390 CECのそれぞれに見られる周知の
HSA(ハードウェア・システム域)であり、記憶域3
も含むDRAMの同じセットにある保護されたセクショ
ンであるが、異なる絶対アドレス・ロケーションを有す
る。記憶域3および4は両方とも、コントローラ2に接
続された同じバス1B〜NBを使用してアクセスされ
る。H−M記憶域4のアクセス保護はコントローラ2に
送られる特別な絶対アドレスを使用して獲得される。こ
れらの特別なアドレスはH−M記憶域4をそのアドレス
のロケーションとして識別する。ソフトウェア・プログ
ラムはこれらの特別な絶対アドレスをソフトウェア記憶
アドレスとしてアクセスしたり使用したりすることはで
きない。
【0058】本発明は区分化されたCECにも適用され
る。CECは、そのハードウェア資源およびソフトウェ
ア資源を独立した動作区分に分割させることができ、各
区分はCECのハードウェアおよびソフトウェアの排他
的サブセットを含み、IBMMVS(多重仮想記憶)オ
ペレーティング・システムまたはVM(仮想計算機)C
MS(会話型モニタ・システム)制御プログラムのコピ
ーなどのオペレーティング・システムを保持する。これ
らの各オペレーティング・システムはその区分内の資源
のサブセットにのみアクセスすることができ、他の区分
内の資源にはアクセスすることができない。
【0059】区分化CECでは、各区分はCEC内の他
の区分の共用メモリ3から分離され独立したそれ自体の
共用メモリ3を有する。区分内のオペレーティング・シ
ステムはそのそれぞれの区分内の共用メモリ3にのみア
クセスすることができる。したがって、各区分のソフト
ウェア記憶域3は、それ自体の資源A〜Zのセットを有
し、そのセットは他の区分内の資源A〜Zとは異なって
いても、無関係であってもよい。
【0060】保護記憶域4は、ソフトウェア・オペレー
ティング・システムやその制御の下に区分内で稼働して
いるプログラムがアクセスできないようになっているの
で、すべての区分のために1つの保護記憶域4があれば
済む。区分化CECの各プロセッサはすべての区分内の
ソフトウェア記憶域3にアクセスすることができ、それ
によってCECの各プロセッサはその区分間で共用する
ことができる。しかし、1つまたは複数のプロセッサを
いずれかの区分の専用とすることができる。プロセッサ
はそのアクセスを現在処理している区分に割り当てられ
た一部の記憶域に制限されているため、プロセッサの共
用によってデータ保全性問題が生じることはない。
【0061】これまで述べてきた従来技術の機能および
特徴は、以下で説明する本発明の好ましい実施態様にお
いても見られる。
【0062】各プロセッサ1〜Nは、H−Mを従来の方
式で使用することにより、実行すべき各命令の命令コー
ドを検出し、その命令を実行する。したがって、各PL
O命令はプロセッサ1〜Nのいずれかによって従来の方
式でソフトウェア・プログラムの実行命令ストリーム中
で検出される。
【0063】図1には、PLOブロック記号を取り扱う
プロセッサを含む複数のプロセッサ、すなわちプロセッ
サ1〜Nがアクセスし使用するマイクロコード記憶用の
プロセッサ共用マイクロコード域5が保護記憶域4内に
図示されている。共用マイクロコード域5には、プロセ
ッサを制御して、現在呼び出されているPLO命令でア
クセスされるブロック記号BLSをハッシュするための
ハッシュ機能を実行させるマイクロコード化アルゴリズ
ムが含まれる。PLO命令実行インスタンスの間、任意
のプロセッサが任意の時点でブロック記号BLSを処理
することができる。図1では、BLS−1〜BLS−N
は、現PLO命令実行インスタンスの間にプロセッサ1
〜Nによってそれぞれ処理されるブロック記号を表す。
当然ながら、PLO命令以外の他の命令を実行している
プロセッサはどのBLSも処理しない。
【0064】現在PLO命令インスタンスを実行してい
るプロセッサは、図1のH−M保護記憶域4内にあるプ
ロセッサ共用マイクロコード域5内の読取り専用マイク
ロコードにアクセスする。共用域5は、任意のPLO命
令実行インスタンスのための任意の異なる機能を実行す
るのに必要な任意のプロセッサを制御するマイクロコー
ドを含む。共用域5は、プロセッサを制御して現ブロッ
ク記号からハッシュ結果を生成させるハッシュ・アルゴ
リズムも含む。ハッシュ・アルゴリズムは従来の技術で
周知である。本発明のためのハッシュ処理は、関連する
PLO項目の絶対アドレスを生成するプロセスにおい
て、ハッシュ結果を関連するPLO項目のロケーション
に変換するリダイレクト・テーブル(図示せず)をオプ
ションで含むことができ、あるいはハッシュ結果をPL
O項目のテーブルのアドレスへの簡単なインデックスと
して使用することもできる。PLO項目を図2のハッシ
ュ・ロック・テーブル(HLT)8に示す。このテーブ
ルは、プロセッサ1〜Nのいずれかが獲得したブロック
記号によって現在使用されているすべてのPLOロック
を含む。図2に示すように、HLT8は、それぞれが1
つのロック・ビットLを含むPLOロック項目L1〜L
Kを含む。
【0065】図3に、プロセッサ1〜Nのいずれかによ
って実行ソフトウェア・プログラムから呼び出される各
PLO命令の形式を示す。各PLO命令の図示されてい
る形式は、命令コード・フィールド、ブロック記号フィ
ールド(ブロック記号またはブロック記号を見つけるた
めのアドレスが入る)、PLO命令をどのように実行す
るかを制御する特定の機能コード(比較・置換機能、ダ
ブル比較・置換機能、トリプル比較・置換機能など)が
入る機能コード・フィールド(FC)、およびPLO命
令で指定されている機能を実行するのに必要な他のすべ
てのオペランドを含むパラメータ・リストを指すポイン
タが入るオペランド・パラメータ・フィールドを含む。
オペランド・パラメータ・リストには、ブロック記号オ
ペランドおよびFCオペランドの一方または両方をオプ
ションで含めることもできる。このオプションを使用し
た場合、パラメータ・リスト内のパラメータは、図3に
示すようなPLO命令形式内に直接配置されているフィ
ールドには入れられないことになる。
【0066】図4および図5に、ソフトウェア・プログ
ラムによって呼び出された各PLO命令を実行するため
にプロセッサ1〜Nのいずれかによって実行されるステ
ップ11〜25を使用するPLOプロセスの好ましい実
施例を示す。呼び出された各PLO命令は、命令の機能
コードによって指定された記憶アクセスを行う前に、図
2のハッシュ・ロック・テーブル8内の関連づけられた
ロックを入手する要求としてプロセスによって処理され
る。この実施態様では、PLO命令、ブロック記号、ハ
ッシュ、およびテーブル8内のロック・フィールドのす
べての処理は、現行PLO命令を実行しているプロセッ
サによって行われることに留意されたい。すなわち、こ
の実施態様では、同じプロセッサが図4および図5のス
テップ11〜25のすべてを実行する。
【0067】ステップ11は、プロセッサの命令カウン
タ設定値を使用してPLO命令にアクセスし、次にその
PLO命令が実行中のソフトウェア・プログラムにおけ
る現命令になる様子が示されている。ステップ11で現
命令実行インスタンスが呼び出されると、プロセッサは
その命令内の命令コードを検出し、その命令コードがプ
ロセッサによってPLO操作が行われることを必要とし
ていることを検出する。次にステップ12でプロセッサ
は、当該PLO命令の命令コードの指示に従って、現P
LO命令中またはそのPLO命令のオペランド内のロケ
ーションにある現ブロック記号にアクセスする。次のス
テップ13で、プロセッサはプロセッサ共用マイクロコ
ード域5に記憶されているマイクロコード化ハッシュ・
アルゴリズムを使用して現ブロック記号に対してハッシ
ュ操作を行う。ステップ14で、プロセッサはハッシュ
操作からハッシュ結果を得て、そこから保護記憶域4に
あるHLT8内の関連づけられたPLOロック項目を探
し出すための絶対アドレスを得る。
【0068】現PLO命令実行インスタンスは現ブロッ
ク記号によって表される資源への排他アクセスを要求し
ている。したがって現PLOインスタンスがこの時点で
の要求元PLO命令実行インスタンスである。
【0069】要求元PLO実行命令インスタンスのため
に得た絶対アドレスを使用して、現在処理中のブロック
記号に関連づけられたPLOロック項目を探し出し、次
のステップ16のために、PLO項目内のアドレス指定
されたロック・ビットLにアクセスする。Lビットの検
査が開始され、それが現ブロック記号に関連づけられた
資源の使用可能状態およびロック状態のいずれを示して
いるかを決定する。Lがロック状態を示している場合、
その資源は現在他のプロセッサの制御下にあるか、また
は他のブロック記号が同じロック項目にハッシュされて
おり、その結果、現在要求元PLOインスタンスのため
のPLOプロセスを実行しているプロセッサはその資源
にアクセスすることができない。要求元プロセッサのた
めのPLOプロセスは以下のいずれかの方法を含む。 1)図4および図5の好ましい実施態様に示す方法であ
って、Lビットが使用可能状態であることが検出される
まで、ステップ16の始めに戻る分岐17を使用して、
ステップ16を繰り返し実行するスピン・ループによっ
て現PLOインスタンスを遅延させる方法か、または 2)図6および図7に示す代替方法であって、命令イン
スタンスによって定義された機能を実行せずに現PLO
命令インスタンスがステップ21で終了する。ステップ
21は、命令インスタンスが失敗したことをプロセッサ
・プログラムに報告するための条件コードを生成し、そ
の結果、プロセッサは次の命令インスタンスを開始する
ことができる。オプション2)では、プログラムはLが
使用可能状態になっていることを検出することを期待し
て別のインスタンスについて当該PLO命令を後で再実
行することができる。オプション1)および2)の相違
を除けば、図6および図7には図4および図5に示すス
テップと同じステップが含まれている。
【0070】ステップ16では、Lを検査し、Lが使用
可能状態であることが検出された場合に要求元PLO命
令のためにLをロック状態に設定するアトミック操作が
必要である。このアトミック操作中は、1つの要求元プ
ロセッサだけがアクセスされたLフィールドの状態の検
査および変更を行うことができる。アトミック操作は当
技術分野で周知であり、たとえば1つのプロセッサがL
ビットを含む記憶域の排他的制御権を持てるようにする
ことによって行うことができる。
【0071】関連づけられたLフィールドが要求元プロ
セッサによってロック状態に設定されると、ステップ1
9に入る。ステップ19では、現PLO命令中のFCオ
ペランドにアクセスして解釈し、その命令実行インスタ
ンス中に関連づけられた資源に対して実行すべき機能を
判断する。次に、現ブロック記号に関連づけられた資源
にアクセスし、現実行インスタンスが資源に変更を加え
る排他的権利を持つことになる。
【0072】次にステップ22で、現PLO命令内で指
示されたパラメータ・リスト内のオペランドを使用し
て、現PLO命令内の機能コードによって要求されるす
べての操作をその資源に対して実行し、プロセッサは現
FCのために指定された操作を実行するのに必要な変更
をその資源に対して加えることができる。
【0073】プロセッサがFCによって要求されている
すべての操作を実行すると、ステップ24でLフィール
ドが使用可能状態に設定され、資源のロックが解除さ
れ、その結果、関連づけられた資源に他のPLO実行イ
ンスタンスが排他的にアクセスすることができるように
なる。現PLO命令インスタンスのための実行はこれで
完了し、終了する。
【0074】最後に、ステップ25で、現プロセッサが
その命令カウンタを次命令アドレスに増分し、次のソフ
トウェア命令実行インスタンスを開始する。
【0075】まとめとして、本発明の構成に関して以下
の事項を開示する。 (1)異なるプロセッサ上の複数の命令実行インスタン
スによる同時アクセス試行からコンピュータ・システム
における資源の保全性を保護する方法であって、コンピ
ュータ・システム内のコンピュータ資源にブロック記号
をソフトウェアで関連づけるステップと、特別なタイプ
の資源ロック命令(PLO)のオペランドとして前記ブ
ロック記号を指定し、関連づけられた資源においてPL
O命令のための実行インスタンスによってアクセスまた
は変更される場所を示す他のオペランドを指定するステ
ップと、ブロック記号に関連づけられた資源に変更を加
えるすべてのプログラム内のPLO命令のために該ブロ
ック記号を指定する命令インスタンスを排他的に実行す
るステップと、各PLO命令の実行中に保護記憶域にア
クセスして、PLO命令インスタンスによって使用され
るブロック記号に関連づけられたロック・フィールドを
探し出すステップと、前記ロック・フィールドの状態を
検査して、前記ロック・フィールドに関連づけられた資
源が使用可能状態にあるかまたはロック状態であるかを
判断するステップと、前記判断するステップで前記ロッ
ク・フィールドが使用可能状態であることが検出された
場合、他のプロセッサの並列命令実行インスタンスによ
る資源の変更を防止するために前記ロック・フィールド
をロック状態にアトミックに設定するステップと、命令
実行インスタンスで処理が完了すると前記ロック・フィ
ールドを使用可能状態にリセットするステップとを含む
方法。 (2)前記ロック・フィールドを検査して使用可能状態
であることが検出されるまで命令実行インスタンス中に
資源の変更を遅延させるステップをさらに含む、(1)
に記載の方法。 (3)ハードウェア−マイクロコード・サブプロセスを
実行するプロセッサによってロック検査ステップを実行
するステップと、前記ロック・フィールドがロック状態
であることが検出された場合、サブプロセス中でループ
して、前記ロック・フィールドが使用可能状態であるこ
とが検出されるまで命令実行インスタンス中に資源の変
更を遅延させるステップとを含む、(1)に記載の方
法。 (4)前記ロック・フィールドを検査してロック状態で
あることが検出された場合、命令実行インスタンスを終
了するステップをさらに含む、(2)に記載の方法。 (5)前記関連づけるステップが、ブロック記号に対し
てハッシュ操作を行って保護記憶域内のロック・フィー
ルドを示すアドレスを生成するステップをさらに含む、
(2)に記載の方法。 (6)コンピュータ・システムにおいて複数のプロセッ
サ上で実行されているソフトウェア・プログラム内の命
令の実行のインスタンスによってアクセス可能な資源の
保全性を保護する方法であって、該方法を実行する各プ
ロセッサが、ソフトウェア・プログラム内の命令をアク
セスして該命令の実行インスタンスの開始を呼び出すス
テップと、前記実行インスタンス中にコンピュータ・シ
ステム内の資源に対する排他的アクセスを行う特別な要
求が行われているかどうかを前記命令の命令コードから
判断するステップと、前記判断するステップで前記命令
によってブロック記号が使用されていると判断された場
合、前記命令のオペランドからブロック記号を得るステ
ップと、前記ブロック記号に対してハッシュ操作を実行
することにより前記コンピュータ・システムの保護記憶
域内のロック・フィールドのロケーションを指定するス
テップと、他のプロセッサによるロック・フィールドの
アクセスを禁止して、指定されたロック・フィールドが
使用可能状態であるかロック状態であるかを検査するス
テップと、前記検査するステップによって前記ロック・
フィールドが使用可能状態であることが検出された場合
に前記ロック・フィールドをロック状態にアトミックに
設定するステップと、前記ロック・フィールドをロック
状態に設定したプロセッサによる資源への排他的アクセ
スを可能にするステップと、前記実行インスタンスの残
りの期間に、前記命令の機能コードによって要求される
不連続記憶ロケーションへのすべてのアクセスを実行す
るステップと、前記ロック・フィールドを使用可能状態
にリセットするステップと、当該プロセッサの次の命令
を呼び出すステップとを含む方法。 (7)前記検査するステップによってロック状態が検出
された場合に、使用可能状態であることが検出されるま
で前記検査するステップを繰り返す、(6)に記載の方
法。 (8)前記検査するステップによってロック状態が検出
された場合に、前記実行インスタンスを終了するステッ
プを含む、(7)に記載の方法。 (9)コンピュータ・システムにおいて複数のプロセッ
サ上で実行されるソフトウェア・プログラム内の命令の
実行によってアクセス可能な資源の保全性を保護する方
法であって、関連づけられた資源へのアクセスを制御す
るために使用されるブロック記号オペランドを有するロ
ック操作実行(PLO)命令を含むソフトウェア・プロ
グラムをコンピュータ・システムに導入するステップ
と、PLO命令の実行によってのみ変更される各資源単
位に固有ブロック記号を割り当てるステップと、前記ブ
ロック記号に割り当てられた資源単位を変更するオペラ
ンドを各PLO命令に提供するステップと、コンピュー
タ・システム内の複数のプロセッサが、ブロック記号に
関連づけられた資源単位にアクセスするPLO命令を含
むソフトウェア・プログラムを実行するステップと、プ
ロセッサによるすべてのアクセス試行を制御するために
PLO命令を排他的に使用してブロック記号を割り当て
られた資源単位の1つを参照し、同じ資源単位にアクセ
スを試みるすべてのPLO命令によって同じブロック記
号を使用するステップと、PLO命令を実行するすべて
のプロセッサにとってアクセス可能である1つまたは複
数のロック・フィールドを、コンピュータ・システムの
保護された記憶ロケーションに作成するステップと、プ
ロセッサが実行PLO命令内のブロック記号のためのロ
ック・フィールドを得るステップと、前記ロック・フィ
ールドの状態を検査し、それが使用可能状態であると判
断された場合に前記ロック・フィールドをロック状態に
設定することによって検査とアトミックにロックを得る
ステップと、前記ロック・フィールドがロック状態に設
定されている間にプロセッサが資源にアクセスし変更す
るステップと、プロセッサがPLO命令インスタンスの
実行を完了した後で前記ロック・フィールドを使用可能
状態に設定するステップとを含む方法。 (10)コンピュータ・システムにおける複数のプロセ
ッサ上で実行されているプログラムのソフトウェア命令
の実行によってアクセス可能なデータの保全性を保護す
る方法であって、プロセッサによって実行可能な特別の
命令内にブロック記号を指定するステップと、異なるプ
ロセッサによる、同じブロック記号を使用する同時特別
命令インスタンスの実行の試みを逐次化して、一度に1
つの特別命令インスタンスだけを実行できるようにする
ステップとを含む方法。 (11)逐次化された複数の特別命令インスタンスのう
ちの許可された1つを、該許可された1つで指定され、
該許可された1つによってブロック記号に関連づけられ
た資源内にある複数の不連続ロケーションにアクセスす
るプロセッサで実行するステップをさらに含む、(1
0)に記載の方法。 (12)前記ブロック記号にコンピュータ・システムの
保護記憶域内の制御フィールドを関連づけるステップ
と、前記ブロック記号を有する許可された特別命令イン
スタンスの実行を開始するときに前記制御フィールドを
ロック状態に設定し、実行のインスタンスの終わりに前
記制御フィールドを使用可能状態にリセットするステッ
プと、前記制御フィールドがロック状態に設定されてい
る間に、前記許可された特別命令インスタンスがその1
つまたは複数のオペランドで指定された不連続ロケーシ
ョンにある資源に排他的にアクセスすることができるよ
うにするステップとをさらに含む、(11)に記載の方
法。 (13)各プロセッサのハードウェア−マイクロコード
内部制御機構を操作して前記制御フィールドの制御権を
獲得するステップと、各プロセッサのハードウェア−マ
イクロコード内部制御機構を使用して、前記特別命令イ
ンスタンスを同時実行している複数のプロセッサのうち
の1つのプロセッサだけが前記制御フィールドの制御権
を獲得することができるようにするハードウェア強制ア
トミック操作によって、保護記憶ロケーション内の制御
フィールドの状態の制御権をアトミックに獲得するステ
ップと、前記制御フィールドの制御権を獲得したプロセ
ッサによる許可された特別命令インスタンスのための実
行を完了するステップと、前記許可された特別命令イン
スタンスが完了するまで、前記制御フィールドの制御権
を要求する他のすべての同時特別命令インスタンスの実
行の完了を遅延させるステップとを含む、(12)に記
載の方法。 (14)前記制御フィールドに関連づけられたブロック
記号を有する任意の特別命令インスタンスを実行する各
プロセッサからロック・プロセッサに対して要求を行う
ステップと、同じブロック記号を使用する複数の特別命
令インスタンスについて複数のプロセッサが同時要求を
行っていない場合、ロック・プロセッサが、いずれかの
要求元プロセッサに資源の排他的アクセスを許可するス
テップと、前記ロック・プロセッサが、同じブロック記
号を使用する複数のプロセッサのうちの1つのプロセッ
サを選択し、選択されたプロセッサがその特別命令イン
スタンスのための処理を完了することができるようにす
るステップと、前記選択されたプロセッサがその特別命
令インスタンスを完了するまで、他のすべての同時特別
命令インスタンスの実行の完了を遅延させるステップと
を含む、請求項11に記載の方法。
【図面の簡単な説明】
【図1】本発明の好ましい実施態様を含むコンピュータ
・システムを表す図である。
【図2】図1に示すハッシュ・テーブル内のロック・フ
ィールドのセットを示す図である。
【図3】本発明の方法を呼び出す命令を示す概要図であ
る。
【図4】競合するPLO命令インスタンスが必要な資源
が使用可能になるまで遅延され、それによって競合する
各インスタンスがその操作を成功裏に完了することがで
きる、本発明を含む複数のプロセッサのいずれかのハー
ドウェア−マイクロコードの動作の好ましい方法を示す
流れ図である。
【図5】競合するPLO命令インスタンスが必要な資源
が使用可能になるまで遅延され、それによって競合する
各インスタンスがその操作を成功裏に完了することがで
きる、本発明を含む複数のプロセッサのいずれかのハー
ドウェア−マイクロコードの動作の好ましい方法を示す
流れ図である。
【図6】必要な資源が他のPLO命令インスタンスによ
って排他的に使用されているためにいずれかの競合PL
O命令インスタンスが成功裏に完了せずに終了し、必要
な資源が使用可能になると、終了したPLO命令インス
タンスを後の命令インスタンスでそのプログラムによっ
て後で繰り返すことができる、本発明を含む複数のプロ
セッサのいずれかのハードウェア−マイクロコードの動
作の代替方法を示す流れ図である。
【図7】必要な資源が他のPLO命令インスタンスによ
って排他的に使用されているためにいずれかの競合PL
O命令インスタンスが成功裏に完了せずに終了し、必要
な資源が使用可能になると、終了したPLO命令インス
タンスを後の命令インスタンスでそのプログラムによっ
て後で繰り返すことができる、本発明を含む複数のプロ
セッサのいずれかのハードウェア−マイクロコードの動
作の代替方法を示す流れ図である。
【符号の説明】
1 プロセッサ(CPU) 2 記憶コントローラ 3 ソフトウェア共用記憶域 4 保護記憶域 5 共用マイクロコード域 6 直接アクセス記憶装置(DASD) 7 I/O装置 8 ハッシュ・ロック・テーブル(HLT)
───────────────────────────────────────────────────── フロントページの続き (72)発明者 キャスパー・アンソニー・スカルジ アメリカ合衆国12601 ニューヨーク州ポ ーキプシー アカデミー・ストリート 160 (72)発明者 ケニス・アーネスト・プラムベック アメリカ合衆国12603 ニューヨーク州ポ ーキプシー デイジー・レーン 7

Claims (14)

    【特許請求の範囲】
  1. 【請求項1】異なるプロセッサ上の複数の命令実行イン
    スタンスによる同時アクセス試行からコンピュータ・シ
    ステムにおける資源の保全性を保護する方法であって、 コンピュータ・システム内のコンピュータ資源にブロッ
    ク記号をソフトウェアで関連づけるステップと、 特別なタイプの資源ロック命令(PLO)のオペランド
    として前記ブロック記号を指定し、関連づけられた資源
    においてPLO命令のための実行インスタンスによって
    アクセスまたは変更される場所を示す他のオペランドを
    指定するステップと、 ブロック記号に関連づけられた資源に変更を加えるすべ
    てのプログラム内のPLO命令のために該ブロック記号
    を指定する命令インスタンスを排他的に実行するステッ
    プと、 各PLO命令の実行中に保護記憶域にアクセスして、P
    LO命令インスタンスによって使用されるブロック記号
    に関連づけられたロック・フィールドを探し出すステッ
    プと、 前記ロック・フィールドの状態を検査して、前記ロック
    ・フィールドに関連づけられた資源が使用可能状態にあ
    るかまたはロック状態であるかを判断するステップと、 前記判断するステップで前記ロック・フィールドが使用
    可能状態であることが検出された場合、他のプロセッサ
    の並列命令実行インスタンスによる資源の変更を防止す
    るために前記ロック・フィールドをロック状態にアトミ
    ックに設定するステップと、 命令実行インスタンスで処理が完了すると前記ロック・
    フィールドを使用可能状態にリセットするステップとを
    含む方法。
  2. 【請求項2】前記ロック・フィールドを検査して使用可
    能状態であることが検出されるまで命令実行インスタン
    ス中に資源の変更を遅延させるステップをさらに含む、
    請求項1に記載の方法。
  3. 【請求項3】ハードウェア−マイクロコード・サブプロ
    セスを実行するプロセッサによってロック検査ステップ
    を実行するステップと、 前記ロック・フィールドがロック状態であることが検出
    された場合、サブプロセス中でループして、前記ロック
    ・フィールドが使用可能状態であることが検出されるま
    で命令実行インスタンス中に資源の変更を遅延させるス
    テップとを含む、請求項1に記載の方法。
  4. 【請求項4】前記ロック・フィールドを検査してロック
    状態であることが検出された場合、命令実行インスタン
    スを終了するステップをさらに含む、請求項2に記載の
    方法。
  5. 【請求項5】前記関連づけるステップが、 ブロック記号に対してハッシュ操作を行って保護記憶域
    内のロック・フィールドを示すアドレスを生成するステ
    ップをさらに含む、請求項2に記載の方法。
  6. 【請求項6】コンピュータ・システムにおいて複数のプ
    ロセッサ上で実行されているソフトウェア・プログラム
    内の命令の実行のインスタンスによってアクセス可能な
    資源の保全性を保護する方法であって、該方法を実行す
    る各プロセッサが、 ソフトウェア・プログラム内の命令をアクセスして該命
    令の実行インスタンスの開始を呼び出すステップと、 前記実行インスタンス中にコンピュータ・システム内の
    資源に対する排他的アクセスを行う特別な要求が行われ
    ているかどうかを前記命令の命令コードから判断するス
    テップと、 前記判断するステップで前記命令によってブロック記号
    が使用されていると判断された場合、前記命令のオペラ
    ンドからブロック記号を得るステップと、 前記ブロック記号に対してハッシュ操作を実行すること
    により前記コンピュータ・システムの保護記憶域内のロ
    ック・フィールドのロケーションを指定するステップ
    と、 他のプロセッサによるロック・フィールドのアクセスを
    禁止して、指定されたロック・フィールドが使用可能状
    態であるかロック状態であるかを検査するステップと、 前記検査するステップによって前記ロック・フィールド
    が使用可能状態であることが検出された場合に前記ロッ
    ク・フィールドをロック状態にアトミックに設定するス
    テップと、 前記ロック・フィールドをロック状態に設定したプロセ
    ッサによる資源への排他的アクセスを可能にするステッ
    プと、 前記実行インスタンスの残りの期間に、前記命令の機能
    コードによって要求される不連続記憶ロケーションへの
    すべてのアクセスを実行するステップと、 前記ロック・フィールドを使用可能状態にリセットする
    ステップと、 当該プロセッサの次の命令を呼び出すステップとを含む
    方法。
  7. 【請求項7】前記検査するステップによってロック状態
    が検出された場合に、使用可能状態であることが検出さ
    れるまで前記検査するステップを繰り返す、請求項6に
    記載の方法。
  8. 【請求項8】前記検査するステップによってロック状態
    が検出された場合に、前記実行インスタンスを終了する
    ステップを含む、請求項7に記載の方法。
  9. 【請求項9】コンピュータ・システムにおいて複数のプ
    ロセッサ上で実行されるソフトウェア・プログラム内の
    命令の実行によってアクセス可能な資源の保全性を保護
    する方法であって、 関連づけられた資源へのアクセスを制御するために使用
    されるブロック記号オペランドを有するロック操作実行
    (PLO)命令を含むソフトウェア・プログラムをコン
    ピュータ・システムに導入するステップと、 PLO命令の実行によってのみ変更される各資源単位に
    固有ブロック記号を割り当てるステップと、 前記ブロック記号に割り当てられた資源単位を変更する
    オペランドを各PLO命令に提供するステップと、 コンピュータ・システム内の複数のプロセッサが、ブロ
    ック記号に関連づけられた資源単位にアクセスするPL
    O命令を含むソフトウェア・プログラムを実行するステ
    ップと、 プロセッサによるすべてのアクセス試行を制御するため
    にPLO命令を排他的に使用してブロック記号を割り当
    てられた資源単位の1つを参照し、同じ資源単位にアク
    セスを試みるすべてのPLO命令によって同じブロック
    記号を使用するステップと、 PLO命令を実行するすべてのプロセッサにとってアク
    セス可能である1つまたは複数のロック・フィールド
    を、コンピュータ・システムの保護された記憶ロケーシ
    ョンに作成するステップと、 プロセッサが実行PLO命令内のブロック記号のための
    ロック・フィールドを得るステップと、 前記ロック・フィールドの状態を検査し、それが使用可
    能状態であると判断された場合に前記ロック・フィール
    ドをロック状態に設定することによって検査とアトミッ
    クにロックを得るステップと、 前記ロック・フィールドがロック状態に設定されている
    間にプロセッサが資源にアクセスし変更するステップ
    と、 プロセッサがPLO命令インスタンスの実行を完了した
    後で前記ロック・フィールドを使用可能状態に設定する
    ステップとを含む方法。
  10. 【請求項10】コンピュータ・システムにおける複数の
    プロセッサ上で実行されているプログラムのソフトウェ
    ア命令の実行によってアクセス可能なデータの保全性を
    保護する方法であって、 プロセッサによって実行可能な特別の命令内にブロック
    記号を指定するステップと、 異なるプロセッサによる、同じブロック記号を使用する
    同時特別命令インスタンスの実行の試みを逐次化して、
    一度に1つの特別命令インスタンスだけを実行できるよ
    うにするステップとを含む方法。
  11. 【請求項11】逐次化された複数の特別命令インスタン
    スのうちの許可された1つを、該許可された1つで指定
    され、該許可された1つによってブロック記号に関連づ
    けられた資源内にある複数の不連続ロケーションにアク
    セスするプロセッサで実行するステップをさらに含む、
    請求項10に記載の方法。
  12. 【請求項12】前記ブロック記号にコンピュータ・シス
    テムの保護記憶域内の制御フィールドを関連づけるステ
    ップと、 前記ブロック記号を有する許可された特別命令インスタ
    ンスの実行を開始するときに前記制御フィールドをロッ
    ク状態に設定し、実行のインスタンスの終わりに前記制
    御フィールドを使用可能状態にリセットするステップ
    と、 前記制御フィールドがロック状態に設定されている間
    に、前記許可された特別命令インスタンスがその1つま
    たは複数のオペランドで指定された不連続ロケーション
    にある資源に排他的にアクセスすることができるように
    するステップとをさらに含む、請求項11に記載の方
    法。
  13. 【請求項13】各プロセッサのハードウェア−マイクロ
    コード内部制御機構を操作して前記制御フィールドの制
    御権を獲得するステップと、 各プロセッサのハードウェア−マイクロコード内部制御
    機構を使用して、前記特別命令インスタンスを同時実行
    している複数のプロセッサのうちの1つのプロセッサだ
    けが前記制御フィールドの制御権を獲得することができ
    るようにするハードウェア強制アトミック操作によっ
    て、保護記憶ロケーション内の制御フィールドの状態の
    制御権をアトミックに獲得するステップと、 前記制御フィールドの制御権を獲得したプロセッサによ
    る許可された特別命令インスタンスのための実行を完了
    するステップと、 前記許可された特別命令インスタンスが完了するまで、
    前記制御フィールドの制御権を要求する他のすべての同
    時特別命令インスタンスの実行の完了を遅延させるステ
    ップとを含む、請求項12に記載の方法。
  14. 【請求項14】前記制御フィールドに関連づけられたブ
    ロック記号を有する任意の特別命令インスタンスを実行
    する各プロセッサからロック・プロセッサに対して要求
    を行うステップと、 同じブロック記号を使用する複数の特別命令インスタン
    スについて複数のプロセッサが同時要求を行っていない
    場合、ロック・プロセッサが、いずれかの要求元プロセ
    ッサに資源の排他的アクセスを許可するステップと、 前記ロック・プロセッサが、同じブロック記号を使用す
    る複数のプロセッサのうちの1つのプロセッサを選択
    し、選択されたプロセッサがその特別命令インスタンス
    のための処理を完了することができるようにするステッ
    プと、 前記選択されたプロセッサがその特別命令インスタンス
    を完了するまで、他のすべての同時特別命令インスタン
    スの実行の完了を遅延させるステップとを含む、請求項
    11に記載の方法。
JP10146042A 1997-05-28 1998-05-27 資源の保全性を保護する方法 Pending JPH1115793A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/864,402 US5893157A (en) 1997-05-28 1997-05-28 Blocking symbol control in a computer system to serialize accessing a data resource by simultaneous processor requests
US08/864402 1997-05-28

Publications (1)

Publication Number Publication Date
JPH1115793A true JPH1115793A (ja) 1999-01-22

Family

ID=25343194

Family Applications (1)

Application Number Title Priority Date Filing Date
JP10146042A Pending JPH1115793A (ja) 1997-05-28 1998-05-27 資源の保全性を保護する方法

Country Status (3)

Country Link
US (1) US5893157A (ja)
JP (1) JPH1115793A (ja)
KR (1) KR19980086609A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008293368A (ja) * 2007-05-25 2008-12-04 Toyota Motor Corp マルチプロセッサシステム、排他制御方法、車両用電子制御ユニット
WO2011104823A1 (ja) * 2010-02-23 2011-09-01 富士通株式会社 マルチコアプロセッサシステム、スレッド制御方法、およびスレッド制御プログラム

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6173393B1 (en) * 1998-03-31 2001-01-09 Intel Corporation System for writing select non-contiguous bytes of data with single instruction having operand identifying byte mask corresponding to respective blocks of packed data
US6223335B1 (en) * 1998-12-09 2001-04-24 Sun Microsystems, Inc. Platform independent double compare and swap operation
US6976260B1 (en) 1999-09-24 2005-12-13 International Business Machines Corporation Method and apparatus for serializing a message queue in a multiprocessing environment
JP2002041304A (ja) * 2000-07-28 2002-02-08 Hitachi Ltd 論理区画の予備リソース自動付与方法及び論理区画式計算機システム
US7328263B1 (en) * 2001-01-30 2008-02-05 Cisco Technology, Inc. Controlling access of concurrent users of computer resources in a distributed system using an improved semaphore counting approach
US7089555B2 (en) 2001-06-27 2006-08-08 International Business Machines Corporation Ordered semaphore management subsystem
US7454753B2 (en) * 2001-06-27 2008-11-18 International Business Machines Corporation Semaphore management subsystem for use with multi-thread processor systems
US7257815B2 (en) * 2001-09-05 2007-08-14 Microsoft Corporation Methods and system of managing concurrent access to multiple resources
US7143414B2 (en) 2001-09-26 2006-11-28 International Business Machines Corporation Method and apparatus for locking multiple semaphores
US7406690B2 (en) * 2001-09-26 2008-07-29 International Business Machines Corporation Flow lookahead in an ordered semaphore management subsystem
US8234089B2 (en) * 2002-11-07 2012-07-31 National Instruments Corporation Auto-scheduling of tests
US7103766B2 (en) * 2002-12-20 2006-09-05 Hewlett-Packard Development Company, L.P. System and method for making BIOS routine calls from different hardware partitions
US7127587B2 (en) * 2003-12-11 2006-10-24 International Business Machines Corporation Intent seizes in a multi-processor environment
EP1566744A1 (en) * 2004-02-19 2005-08-24 Sap Ag Optimising lock granularity using range locking
US8561071B2 (en) * 2005-07-11 2013-10-15 International Business Machines Corporation Process instance serialization
US7392335B2 (en) * 2006-02-10 2008-06-24 Oracle International Corporation Anticipatory changes to resources managed by locks
US7624237B2 (en) * 2006-05-03 2009-11-24 International Business Machines Corporation Compare, swap and store facility with no external serialization
US7600063B2 (en) * 2006-09-15 2009-10-06 Oracle International Corporation Techniques for improved read-write concurrency
EP2015174B1 (en) * 2007-06-21 2018-03-14 Imsys AB Microprogrammed processor having multiple processor cores using time-shared access to a microprogram control store
US8220004B2 (en) * 2009-04-17 2012-07-10 Nokia Corporation Method, apparatus and computer program product for sharing resources via an interprocess communication
US8452948B2 (en) * 2010-06-28 2013-05-28 International Business Machines Corporation Hybrid compare and swap/perform locked operation queue algorithm
US10394760B1 (en) * 2015-04-16 2019-08-27 Western Digital Technologies, Inc. Browsable data backup
US10496607B2 (en) * 2016-04-01 2019-12-03 Tuxera Inc. Systems and methods for enabling modifications of multiple data objects within a file system volume

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4851990A (en) * 1987-02-09 1989-07-25 Advanced Micro Devices, Inc. High performance processor interface between a single chip processor and off chip memory means having a dedicated and shared bus structure
US5081572A (en) * 1988-10-28 1992-01-14 Arnold Michael E Manipulation of time-ordered lists and instructions therefor
US5142676A (en) * 1988-12-28 1992-08-25 Gte Laboratories Incorporated Separate content addressable memories for storing locked segment addresses and locking processor identifications for controlling access to shared memory
EP0432075B1 (en) * 1989-11-09 1997-02-26 International Business Machines Corporation Multiprocessor with relatively atomic instructions
JP2575543B2 (ja) * 1990-04-04 1997-01-29 インターナショナル・ビジネス・マシーンズ・コーポレイション 同時アクセス管理方法
US5669002A (en) * 1990-06-28 1997-09-16 Digital Equipment Corp. Multi-processor resource locking mechanism with a lock register corresponding to each resource stored in common memory
JP2673390B2 (ja) * 1991-03-13 1997-11-05 三菱電機株式会社 マルチポートメモリ
US5488729A (en) * 1991-05-15 1996-01-30 Ross Technology, Inc. Central processing unit architecture with symmetric instruction scheduling to achieve multiple instruction launch and execution
JPH0784851A (ja) * 1993-09-13 1995-03-31 Toshiba Corp 共有データ管理方法
JPH07262140A (ja) * 1994-03-16 1995-10-13 Nec Corp 排他制御装置
US5574922A (en) * 1994-06-17 1996-11-12 Apple Computer, Inc. Processor with sequences of processor instructions for locked memory updates
US5636361A (en) * 1994-12-22 1997-06-03 International Business Machines Corporation Multi-processor computer system having dual memory subsytems for enabling concurrent memory access thereto by more than one processor
US5696939A (en) * 1995-09-29 1997-12-09 Hewlett-Packard Co. Apparatus and method using a semaphore buffer for semaphore instructions

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008293368A (ja) * 2007-05-25 2008-12-04 Toyota Motor Corp マルチプロセッサシステム、排他制御方法、車両用電子制御ユニット
WO2011104823A1 (ja) * 2010-02-23 2011-09-01 富士通株式会社 マルチコアプロセッサシステム、スレッド制御方法、およびスレッド制御プログラム
JP5408330B2 (ja) * 2010-02-23 2014-02-05 富士通株式会社 マルチコアプロセッサシステム、スレッド制御方法、およびスレッド制御プログラム
US9311142B2 (en) 2010-02-23 2016-04-12 Fujitsu Limited Controlling memory access conflict of threads on multi-core processor with set of highest priority processor cores based on a threshold value of issued-instruction efficiency

Also Published As

Publication number Publication date
US5893157A (en) 1999-04-06
KR19980086609A (ko) 1998-12-05

Similar Documents

Publication Publication Date Title
US5893157A (en) Blocking symbol control in a computer system to serialize accessing a data resource by simultaneous processor requests
KR100270591B1 (ko) 컴퓨터 시스템 내의 데이터 자원의 액세싱를 직렬화하기 위한블록화 심볼 제어에 관련된 프로세서
US8473969B2 (en) Method and system for speeding up mutual exclusion
TWI715087B (zh) 多核系統處理器和資料更新方法
JP2866241B2 (ja) コンピュータシステムおよびスケジューリング方法
US6112222A (en) Method for resource lock/unlock capability in multithreaded computer environment
US4604694A (en) Shared and exclusive access control
US6105049A (en) Resource lock/unlock capability in multithreaded computer environment
US5297283A (en) Object transferring system and method in an object based computer operating system
US5057996A (en) Waitable object creation system and method in an object based computer operating system
US5966543A (en) Method of using collaborative spinlocks to provide exclusive access to a resource in a multiprocessor computer system
EP0747815A2 (en) Method and apparatus for serializing access to multithreading unsafe resources
US12393371B2 (en) Process isolation for a processor-in-memory (“PIM”) device
JP2003186746A (ja) ハードウェア実施セマフォおよび他の同様のハードウェア実施直列化および順位付け機構を使用する、コンピュータ内でのメモリへのアクセスのハードウェア実施制御の方法
US20030105796A1 (en) Method and apparatus for controlling access to shared resources in an environment with multiple logical processors
US20090216929A1 (en) System, method and computer program product for providing a programmable quiesce filtering register
US9164799B2 (en) Multiprocessor system
KR100902977B1 (ko) 하드웨어 공유 시스템 및 방법
EP2948853B1 (en) Synchronizing parallel applications in an asymmetric multi-processing system
US8769546B2 (en) Busy-wait time for threads
US6662364B1 (en) System and method for reducing synchronization overhead in multithreaded code
US6105050A (en) System for resource lock/unlock capability in multithreaded computer environment
JPH02153434A (ja) データ処理システム
US9021483B2 (en) Making hardware objects and operations thread-safe
JPH11282815A (ja) マルチスレッド計算機システム及びマルチスレッド実行制御方法