(57)【特許請求の範囲】
【請求項１】
（１）セマフォ値の記憶装置から処理資源に対応するセマフォ値を検索するステップと、
（２）どのセマフォ値が検索されたかを示すセマフォ識別データを記憶するステップと、
（３）排他的アクセスを要求している要求者による前記処理資源への排他的アクセスが可能であるか否かを、前記セマフォ値から判断するステップと、
（４）前記セマフォ識別データをチェックして、前記検索ステップのあとに前記セマフォ識別データがクリアされていないことを判断し、前記排他的アクセスの要求者に排他的アクセスが許可されたことを示す新しいセマフォ値を、前記セマフォ値の記憶装置に書き込むステップと、
を含むデータ処理装置であって、
排他的アクセスの要求者による排他的アクセスのクリア命令の実行に呼応して、記憶されている前記排他的アクセスの要求者のためのセマフォ識別データをクリアし、
前記ステップ（４）で、もしも前記セマフォ識別データがクリアされていれば、前記新しいセマフォ値の書き込みは試行されない
データ処理方法。
【請求項２】
請求項１記載の方法において、前記新しいセマフォ値を書き込むステップが前記セマフォ値記憶装置に前記新しいセマフォ値が書き込まれたか否かを示す結果値を返す、データ処理方法。
【請求項３】
請求項２記載の方法において、前記検索ステップと前記書き込みステップとの間に別の排他的アクセスの要求者が前記セマフォ値記憶装置に新しいセマフォ値を書き込んだならば、前記結果値は前記排他的アクセス要求者による新しいセマフォ値の前記書き込みは失敗したことを示す、データ処理方法。
【請求項４】
請求項１記載の方法において、複数台のデータ処理装置が前記処理資源を共有している、データ処理方法。
【請求項５】
請求項４記載の方法において、前記複数台のデータ処理装置は少なくとも１個の共通アクセス点を共有していて、その点を経由して前記処理資源へのアクセスがなされる、データ処理方法。
【請求項６】
請求項１記載の方法において、ローカルセマフォ識別データ記憶装置が前記排他的アクセスの要求者に対してローカルに備わっている、データ処理方法。
【請求項７】
請求項６に記載の方法において、複数台のデータ処理装置が前記処理資源を共有しており、前記複数台のデータ処理装置は少なくとも１個の共通アクセス点を共有していて、その点を経由して前記処理資源へのアクセスがなされており、もしも前記ローカルセマフォ識別データ記憶装置に記憶されている前記セマフォ識別データがクリアされていたならば、書き込み試行は前記共通のアクセス点に到達しない、データ処理方法。
【請求項８】
請求項４記載の方法において、共有セマフォ識別データ記憶装置が前記処理資源に備わっている、データ処理方法。
【請求項９】
請求項１記載の方法において、種々の処理タスクが種々の排他的アクセス要求者として作用するようにマルチタスク処理が実行される、データ処理方法。
【請求項１０】
請求項８に記載の方法において、ローカルセマフォ識別データ記憶装置が前記排他的アクセスの要求者に対してローカルに備わっており、前記排他的アクセスクリア命令が前記前記ローカルセマフォ識別データ記憶装置をクリアするが、前記共有セマフォ識別データ記憶装置をクリアせず、かつ、前記ローカルセマフォ識別データ記憶装置内の前記セマフォ識別データを調べて、前記検索ステップと前記書き込みステップとの間に前記セマフォ識別データがクリアされたか否かを判断する、データ処理方法。
【請求項１１】
請求項１記載の方法において、前記処理資源はデータメモリ内に記憶されているデータ要素である、データ処理方法。
【請求項１２】
請求項１記載の方法において、排他的アクセスのクリア命令は、
（１）例外処理をトリガする例外、
（２）マルチタス動作内における種々のタスク間のコンテキストスイッチ、
のうち１個以上起きたときに実行される、データ処理方法。
【請求項１３】
請求項１記載の方法において、前記セマフォ識別データは前記処理資源と関連するメモリアドレスを指示するデータである、データ処理方法。
【請求項１４】
請求項４に記載の方法において、共有セマフォ識別データ記憶装置が前記処理資源に備わっており、前記共有セマフォ識別データ記憶装置はどのプロセッサが前記処理資源に排他的アクセスを要求しているかを示すデータを記憶している、データ処理方法。
【請求項１５】
請求項１記載の方法にしたがってデータ処理装置を制御するコンピュータプログラムを記録したコンピュータ読み取り可能な記憶媒体。
【請求項１６】
（１）セマフォ値の記憶装置から処理資源に対応するセマフォ値を検索するための検索論理装置と、
（２）どのセマフォ値が検索されたかを示すセマフォ識別データを記憶するための記憶論理装置と、
（３）排他的アクセスを要求している要求者による前記処理資源への排他的アクセスが可能であるか否かを、前記セマフォ値から判断するための判断論理装置と、
（４）前記セマフォ識別データをチェックして、前記検索のあとに前記セマフォ識別データがクリアされていないことを判断し、前記排他的アクセスの要求者に排他的アクセスが許可されたことを示す新しいセマフォ値を、前記セマフォ値の記憶装置に書き込むための書き込み論理装置と、
（５）排他的アクセスの要求者による排他的アクセスのクリア命令の実行に呼応して、記憶されている前記排他的アクセスの要求者のためのセマフォ識別データをクリアするためのクリア論理装置と、
を含むデータ処理装置であって、
前記書き込み論理装置（４）において、もしも前記セマフォ識別データがクリアされていれば、前記新しいセマフォ値の書き込みは試行されない、
データ処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はデータ処理システムに関するものである。特に本発明は処理資源への排他的アクセスを調整する制御機構を有するデータ処理システムに関するものである。
【０００２】
【背景技術】
種々のプロセッサやプロセス間で共有することができるデータベース内のデータ要素のような処理資源を備えることが、データ処理システムの分野で知られている。たとえば、航空会社の予約データベースシステムは、航空機の現在の予約状態に関する情報を記憶する中央データベースを有することができる。この中央データベースは多くの種々のコンピュータから独立にアクセスすることができるし、かつ１台のコンピュータ上で動いている種々のプロセスからもアクセスすることができる。関連するデータの統合性を確実にするために、排他的アクセス制御機構が使われ、それによって一度に１台の特定のプロセッサまたはプロセスにデータベースのある部分への排他的アクセスが許可される。こうして、データ統合問題を起こす同じデータの種々のコピーが存在しないように保証している。
【０００３】
その処理資源への排他的アクセスが可能か否かをアクセス要求者に指示するために、処理資源に付随したセマフォ（ｓｅｍａｐｈｏｒｅ）値を使うことが知られている。詳しく言うと、排他的アクセスが許可されるか否かを判断するために、読み取り命令がセマフォ値を読む。もしも排他的アクセスが可能であるとセマフォ値が示していれば、別の命令を実行してセマフォ値を修正し、排他的アクセスがアクセス要求者に許可されたということを示す。
【０００４】
このような仕組みで処理資源へのアクセスを制御することができるが、リアルライフシステムはまた、割り込み、例外またはコンテキストスイッチの発生に従うような機構もシステム内に収容することができる必要がある。たとえば、排他的アクセスが可能か否かを判断するために読み込んだセマフォ値と、排他的アクセスが許されたということを指示するために書き込まれたセマフォ値との間を調整する機構である。システムの待ち時間に過度に影響を与えるものではないが、そのようなことが起こるのを許すことが必要であることは技術的な問題を呈している。
【０００５】
【発明の実施の形態】
本発明の一態様によれば、次のステップを含むデータ処理方法が提供される。
（１）セマフォ値の記憶装置から処理資源に対応するセマフォ値を検索するステップと、
（２）どのセマフォ値が検索されたかを示すセマフォ識別データを記憶するステップと、
（３）排他的アクセスを要求している要求者による前記処理資源への排他的アクセスが可能であるか否かを、前記セマフォ値から判断するステップと、
（４）前記排他的アクセスの要求者に排他的アクセスが許可されたことを示す新しいセマフォ値を、前記セマフォ値の記憶装置に書き込むステップと、
（５）排他的アクセス要求者による排他的アクセスのクリア命令の実行に呼応して、記憶されている前記排他的アクセス要求者用セマフォ識別データをクリアするステップ。
【０００６】
本発明が提供する排他的アクセスのクリア命令は、セマフォ値の検索と新セマフォ値の書き込みとの間に記憶されたセマフォ識別データをクリアする働きをする。ある処理資源への排他的アクセスの許可を確立するための新しいスタートを後で起こさなければならないことがあり、それによって調整処理に起因する問題を避けることができる。特殊な例として、もしも割り込み、例外またはコンテキストスイッチが発生したならば、オペレーティングシステムによって排他的アクセスクリア命令が実行されるようにすることができる。まだ許可されてなかった排他的アクセスに対する未決の要求を流し去って、適所に適切にロックし、それによって不適切な動作を避けるためである。
【０００７】
いろいろな資源から発せられる多数の排他的アクセスの要求を収納するために、新セマフォ値の書き込みステップは新セマフォ値が書き込まれたか否かを示す結果値を返す。その結果値がなし得ることは、現在のアクセス要求者に対する書き込みステップがそのアクセス要求者向けの排他的アクセスを確立することができる前に、何らかのほかのプロセッサまたはプロセスがその処理資源に対する排他的アクセスを与えられているか否かの判断である。
【０００８】
排他的アクセスの許可の確立を制御するためにセマフォ識別データをいろいろな方法で使うことができるであろうが、安全な制御を提供するのに特に効率的な方法は、新しいセマフォ値を書き込むステップがセマフォ識別データを調べるようにして、記憶ステップと書き込みステップとの間にそれがクリアされたか否かを判断することである。
【０００９】
記憶とそれに続く書き込み試行との間に割り込み、例外、コンテキストスイッチまたは何らかのほかのイベントが起きた場合、排他的アクセスクリア命令が実行されて、セマフォ識別データをクリアしたであろうから、書き込み試行は成功せず、不適切な排他的アクセス許可は与えられないであろう。不適切な書き込みを避けることによって、共有バスを有するシステム内のバス資源を節約することもできる。たとえばもし書き込み動作が主メモリを使うのであれば、書き込み動作は共有バスを介して行わなければならない。主メモリは通常共有バス上にあり、この書き込みを中止することはバス資源の節約になる。共有バスをシステムの他のパーティに自由に使わせることにより、システム全体の効率が上がる。
【００１０】
排他的アクセスの要求者はマルチプロセッサシステム内の種々のプロセッサ、またはマルチタスク／マルチ処理システム内の種々のタスク／プロセスであろうことが理解されよう。
【００１１】
セマフォ識別データは排他的アクセス要求者にローカルに、または共有処理資源にローカルに、または両方の場所に記憶することができる。セマフォ識別データをローカルに記憶することによりアクセス速度が速くなり、排他的アクセス要求者に非ローカルなアクセスを与えるために備える必要がある資源の量が少なくなる。
【００１２】
処理資源は各種の形式を取ることができることが理解されよう。たとえば、処理資源は入出力ポートかもしれない。高級なメモリ装置または類似のものかもしれない。しかしながら本発明はデータメモリ内のデータ要素への排他的アクセスを制御するのに使うのが特に有用である。
【００１３】
本発明の別の態様として、下記の手段を含むデータ処理装置が提供される。
（１）セマフォ値の記憶装置から処理資源に対応するセマフォ値を検索するための検索論理装置と、
（２）どのセマフォ値が検索されたかを示すセマフォ識別データを記憶するための記憶論理装置と、
（３）排他的アクセスを要求している要求者による前記処理資源への排他的アクセスが可能であるか否かを、前記セマフォ値から判断するための判断論理装置と、
（４）前記排他的アクセスの要求者に排他的アクセスが許可されたことを示す新しいセマフォ値を、前記セマフォ値の記憶装置に書き込むための書き込み論理装置と、
（５）排他的アクセスの要求者による排他的アクセスのクリア命令の実行に呼応して、記憶されている前記排他的アクセスの要求者向けのセマフォ識別データをクリアするためのクリア論理装置。
【００１４】
本発明は上述の技術にしたがってデータ処理装置を制御するコンピュータプログラムを搭載したコンピュータプログラム製品として具体化することもできる。本発明の上記および他の目的、特徴、利点について、以下図面を参照しながら実施例を詳細に説明することにより明らかにする。
【００１５】
【発明の実施の形態】
図１は第１のプロセッサ４と第２のプロセッサ６とを含むデータ処理システム２の概略図を示す。第１のキャッシュメモリ８に第１のプロセッサ４が関係しており、第２のキャッシュメモリ１０に第２のプロセッサ６が関係している。共有されているアドレス・データバス１２が第１のプロセッサ４と第２のプロセッサ６とをほかのシステム要素と接続している。ほかのシステム要素にはＵＡＲＴ回路１４，ＤＭＡ回路１６および共有されている主メモリ１８とが含まれる。バスアービタ２０は１個のバスマスターだけが任意の所定の時間に共有バス１２の制御権を有することを保証する働きをする。
【００１６】
主メモリ１８はたとえばデータベース・レコードのようなデータ要素を記憶する。このデータ要素には、第１のプロセッサ４と第２のプロセッサ６のうち一方による排他的アクセスを許可することが要求される。セマフォ値は主メモリ１８内に記憶され、個々のデータレコードまたはメモリエリアのようなデータ要素へのアクセスを制御する。このデータ要素に排他的アクセスの要求がなされる。モニタ回路２２が主メモリ１８にローカルに付随していて、どのセマフォ値がプロセッサ４または６により検索されたかを識別するデータを記憶する。セマフォ識別データは、バスアービタ２０により割り当てられるプロセッサ番号のようなプロセッサ識別データと共に、主メモリ内でセマフォの物理的アドレスの形式を取る。セマフォ識別データ記憶装置２４がキャッシュメモリ８に付随していて、別のセマフォ識別データ記憶装置２６がキャッシュメモリ１０に付随している。これらのセマフォ識別データ記憶装置２４，２６はそれぞれプロセッサ４，６にローカルに供給されている。主メモリ１８内のセマフォ値に対して検索操作が行われると、そのセマフォ値の物理的アドレスがそれぞれのローカルセマフォ識別データ記憶装置２４，２６の中に記憶される。１個の未決の排他的アクセス確立操作だけが任意の所定の時間に各プロセッサ４，６に対して存在することを許される。２個のプロセッサ４，６は各々自分自身の未決の排他的アクセス確立要求を有することができるが、データ処理システム２のソフトウェア・プログラマは所定のプロセッサ４，６内に１個より多い未決の排他的アクセス要求操作に頼らないように制限されている。
【００１７】
プロセッサ４，６は仮想アドレスを使って動作することができるが、メモリアドレスがそれぞれのキャッシュメモリ８，10と主メモリ１８に出力される前に、各プロセッサ４，６内で翻訳ルックアサイドテーブル（ＴＬＢ）を使って物理的アドレスへの翻訳が行われる。したがって、セマフォ識別データはこの実施例では仮想アドレスよりもむしろ物理的アドレスに関連がある。
【００１８】
図２は図１に示したシステムの動作の概要を示す流れ図である。ステップ２６で、プロセッサ４，６のうちの一方がＬＤＲＥＸ命令を実行して、主メモリ１８内のメモリ位置（レジスタＲmの中で指定される）からセマフォ値をロードする。ＬＤＲＥＸ命令はメモリ値をロードするのに使われる標準的なＡＲＭ  ＬＤＲと異なる。ＬＤＲＥＸ命令は排他的アクセスの関係を確立ための機構を利用するが、標準的なＬＤＲはそうしない。
【００１９】
ステップ２８で、捜し求めたセマフォ値がキャッシュ可能か否かが調べられる。関連するＭＭＵ（図示せず）の中に指示されているように、もしもセマフォ値がキャッシュ可能でなければ、処理はステップ３０に進む。もしもセマフォ値がキャッシュ可能であれば、処理はステップ３２に進む。
【００２０】
ステップ３０で、Ｒmレジスタ値により指定されたアドレスに対応するセマフォ値が、ＬＤＲＥＸ命令の中に明記されたレジスタＲdに記憶される。更に、セマフォ値の物理的アドレスがＬＤＲＥＸ命令を実行するプロセッサのプロセッサ識別番号と共に主メモリのモニタ回路２２に記憶される。バスアービタ２０は、プロセッサ４，６のうちの一方によるＬＤＲＥＸ命令の解読により、このプロセッサ識別番号を主メモリのモニタ回路２２に送るようにトリガされる。ステップ３０で、セモファデータの物理的アドレスもまたＬＤＲＥＸ命令を実行するプロセッサのローカルセマフォ識別データ記憶装置２４，２６内に記憶される。
【００２１】
もしも処理がステップ２８からステップ30でなくてステップ３２に進んだならば、主メモリのモニタ回路２２には何もデータが書き込まれなくて、アドレスＲmからレジスタＲdに返されたセマフォ値の物理的アドレスが適当なローカルセマフォ識別データ記憶装置２４，２６に書き込まれる。
【００２２】
ステップ３４で、主メモリ１８からプロセッサ４，６のうちの一方に返されたセマフォ値が検査されて、検索されたセマフォ値が関連するデータ要素への排他的アクセスが許可されていることを示すか否かを判断する。もしも排他的アクセスが許可されていなければ、処理は終わる。排他的アクセス要求を後刻、できれば直後にコードのタイトなループ部分を使って再試行するのが効果的である。
【００２３】
もしもステップ３６で排他的アクセスが可能であることを返されたセマフォ値が示したならば、処理はステップ３８に進み、ここでＳＴＲＥＸ命令が実行される。ＳＴＲＥＸ命令は排他的アクセスが許可されているということを示す新しいセマフォ値を主メモリ１８に記憶しようとする。ＳＴＲＥＸ命令は未決のセマフォ識別データを更に調べて、書き込みが完了したか否かを示す結果値を返すという点で、標準的なＡＲＭ  ＳＴＲとは異なる。
【００２４】
もしも書き込みが完了してなかったならば、ステップ２６におけるセマフォ値の読みとりとステップ３８における対応するＳＴＲＥＸ命令の実行の試行との間の調整時間に、別のプロセッサまたはプロセスが同じデータ要素に対して排他的アクセスの許可を確立したことを意味する。
【００２５】
もしもセマフォ値の物理的メモリアドレスがそのセマフォ値はキャッシュ可能であるということを示せば、処理はステップ４０に進む。もしもセマフォ値がキャッシュ可能でなければ、処理はステップ４２に進む。
【００２６】
ステップ４２はローカルセマフォ識別データ記憶装置２４，２６と主メモリモニタ回路２２の中で、書き込み中のセマフォ値の物理的アドレスがまだ記憶されている（すなわちクリアされてないかまたは重ね書きされていない）ことを調べる。また、主メモリモニタ回路２２の場合、整合するプロセッサ番号が物理的メモリアドレスと関連していることを調べる。最初にローカル記憶装置２４，２６について調べる。もしもこれがクリアされていれば、失敗の結果が返される。そうでなければ、主メモリモニタ回路２２が調べられて、そこから結果が返される。もしもこれらの条件が双方とも満たされなければ、処理はステップ４４に進み、ここで失敗の結果値がＳＴＲＥＸ命令から返され、書き込みは行われなかったとして、処理は終わる。実際には排他的アクセスを再試行することができる。
【００２７】
もしもステップ４２の検査により、プロセッサ４，６と主メモリモニタ回路２２の両方にローカルに記憶されているセマフォ識別データがまだ整合している（すなわち、別のプロセスに与えられた介在する排他的アクセス許可、介在するクリア命令、または正常な排他的アクセス許可プロセスとの何らかの他の干渉が全くなかった）ことが示されていれば、処理はステップ４６に進む。ステップ４６で、主メモリ内のセマフォ値が更新され、ＳＴＲＥＸ命令の発信者に排他的アクセスの許可が与えられて許可の結果値が返されたことを示す。
【００２８】
もしもＳＴＲＥＸ命令の新セマフォ値がキャッシュ可能であったか否かの検査の結果、キャッシュ可能であったと示されれば、ステップ４０でローカルセマフォ識別データ記憶装置２４，２６の中を見て、整合する物理的アドレスがまだ存在しているか否かを調べる。もしも整合する物理的アドレスが存在していなければ、処理はステップ４８に進み、失敗の結果値が返される。もしも整合する物理的アドレスがまだ存在していれば、処理はステップ５０に進む。ここで主メモリ内のセマフォ値が更新され、許可の結果値が返される。
【００２９】
図３は排他的アクセスの許可を確立するためのＡＲＭオブジェクトコード・ルーチンの概略を示す。ＬＤＲＥＸ命令は主メモリ１８からセマフォ値を返して、適切なセマフォ識別データを設定する。ＣＭＰ命令は、セマフォ値が排他的アクセスは可能であることを示しているか否かを判断する。もしも排他的アクセスが可能でなければ、ＢＮＥ命令が処理を要求の再試行に戻す。もしも排他的アクセスが可能であれば、処理は所望の新セマフォ値をレジスタＲdに設定するという次の命令（図示せず）に進む。命令ＳＴＲＥＸは主メモリ１８に新セマフォ値を書き込むための試行の働きをする。図２に関して説明した動作によれば、もしも適切な記憶装置内にあるセマフォ識別データが整合して、確立されつつある適切な排他的アクセス関係と干渉するであろう不適切な介在動作が全く起きなかったことを示すならば、ＳＴＲＥＸ命令は単に適切に終了するだけであろう。ＳＴＲＥＸ命令に続くＣＭＰ命令はＳＴＲＥＸ命令から返された結果値を調べて、新セマフォ値が適切に記憶されて、その結果排他的アクセス関係が確立されたか否かを判断する。もしも結果値が失敗を示していれば、ＢＮＥ命令は再びプロセスの再試行を試みる。
【００３０】
図４は２台のプロセッサが同じデータ要素に排他的アクセス関係を確立しようと競っているときの概要を示す。プロセッサ１は最初にセマフォ値を読み取るためにそのＬＤＲＥＸ命令を発する。これは排他的アクセスの許可が可能であることを示す。しかしながら、プロセッサ１が排他的アクセス関係を確認するためにそのＳＴＲＥＸ命令を発行することができる前に、プロセッサ２が同じセマフォ値を読み書きとも行って、プロセッサ２の対する排他的アクセス関係を確立した。したがってプロセッサ１に対するＳＴＲＥＸ命令が試行されたとき、たとえプロセッサ１により読み取られたセマフォ値がこれは可能であることを示したにしても、排他的アクセスの許可が与えられないことを示す失敗値が返される。
【００３１】
図５はＣＬＲＥＸ命令の動作の概要を示す。このＣＬＲＥＸ命令はマルチタスク環境の中でコンテキストスイッチング制御ソフトウェアのみならず、割り込みコードまたは例外コードの中で早期のステップとして実行される。ＣＬＲＥＸ命令はＣＬＲＥＸ命令を実行するプロセッサのために存在する未決の排他的アクセス許可要求をクリアする働きをする。実際には、セマフォ値がキャッシュ可能であるか否かにかかわらず、セマフォ識別データはプロセッサ４，６のローカルセマフォ識別データ記憶装置２４，２６の中に記憶されているので、プロセッサ用のこのローカルセマフォ識別データをクリアすることは、後に続くＳＴＲＥＸ命令がそのセマフォ値に対して不適切に実行されるのを止める効果を有する。更に、プロセッサ４，６にローカルにこの検査を行うことにより、共有システムバス１２の使用を避け、それによってデータ処理システム２内の他の要素にこの資源の使用を開放する。
【００３２】
以上本発明の実施例について図面を参照しながら詳細に説明したが、本発明はこれらの実施例に厳密に限定されるものではないこと、そして特許請求の項に記載された本発明の範囲と思想から逸脱することなく種々の変更と修正が当業者になし得ることを理解されたい。
【図面の簡単な説明】
【図１】排他的メモリアクセス要求がなされる共有主メモリを有するマルチプロセッサシステムの概略図。
【図２】図１のシステムにおいて排他的アクセス許可を確立する通常の動作を示す流れ図。
【図３】排他的アクセス許可を確立するのに使われるあるＡＲＭプロセッサオブジェクトコードの一例。
【図４】メモリ内の同じデータ要素に対する排他的アクセスを得ようと競っている図１に示す２台の処理装置間の相互作用の一例。
【図５】図１のシステムにおいて排他的アクセスのクリア命令の作用を示す流れ図。
【符号の説明】
２  データ処理システム
４、６  プロセッサ
８、１０  キャッシュメモリ
１２  バス
１８  主メモリ
２０  バスアービタ
２２  モニタ回路
２４，２６  セマフォ識別データ記憶装置
【図１】
0003814521.tif 000002
【図２】
0003814521.tif 000003
【図３】
0003814521.tif 000004
【図４】
0003814521.tif 000005
【図５】
0003814521.tif 000006