(57)【要約】【課題】従来のマルチプロセッサシステムでは、プロセッサ間の資源排他制御において無駄なオーバーヘッドが発生し、プロセッサ資源を浪費してしまうという課題があった。【解決手段】並列処理の実行が可能な複数のプロセッサ（情報処理手段）Ｐ１，Ｐ２，Ｐ３間で排他制御を行う資源排他制御装置Ａは、共有資源Ｒ１，Ｒ２ごとに対応し、各共有資源がどのプロセッサによってロックされているかを管理する複数のロックオブジェクトＬ１，Ｌ２と、ロックオブジェクトのロック獲得を要求するプロセッサがロック獲得に失敗したときに、先行するロック獲得プロセッサのロック継続時間Ｔを取得するロック継続時間取得手段１１と、ロック継続時間Ｔを判定閾値時間Ｔｈと比較し、その比較結果に応じてロック待ち動作を選択するロック待ち動作選択手段１２と、ロック待ち動作選択手段１２によって選択される複数種類のロック待ち動作機構（スピンロック機構１３、サスペンドロック機構１４）とを備える。【選択図】図１
2010191575.tif 000002
【特許請求の範囲】
【請求項１】
並列処理の実行が可能な複数の情報処理手段間で排他制御を行う資源排他制御方法であって、ロックオブジェクトのロック獲得を要求する情報処理手段がロック獲得に失敗したときに、先行するロック獲得情報処理手段のロック継続時間を判定閾値時間と比較し、その比較結果に応じてロック待ち動作を選択するように制御することを特徴とする資源排他制御方法。
【請求項２】
前記ロック待ち動作の選択については、前記ロック継続時間が前記判定閾値時間を超えるときはスピンロックを選択し、前記ロック継続時間が前記判定閾値時間以下のときはサスペンドロックを選択する請求項１に記載の資源排他制御方法。
【請求項３】
前記ロック継続時間については、ロック獲得成功時のシステム時刻をロック開始時刻として保持し、その保持したロック開始時刻から現在のシステム時刻までの経過時間をロック継続時間とする請求項１または請求項２に記載の資源排他制御方法。
【請求項４】
前記ロック継続時間については、ロック獲得成功時にタイマを起動させ、そのタイマのカウントを読み取ってロック継続時間とする請求項１または請求項２に記載の資源排他制御方法。
【請求項５】
前記判定閾値時間については、実際に消費されたロック時間に応じて動的に変更する請求項１から請求項４までのいずれかに記載の資源排他制御方法。
【請求項６】
前記判定閾値時間の動的な変更については、実際に消費されたロック時間が現在の判定閾値時間より短いときに限定して変更する請求項５に記載の資源排他制御方法。
【請求項７】
前記判定閾値時間の動的な変更については、現在までの実際に消費されたロック時間の平均値に変更する請求項５に記載の資源排他制御方法。
【請求項８】
前記判定閾値時間については、情報処理手段ごとに固有の判定閾値時間を保有する請求項１から請求項７までのいずれかに記載の資源排他制御方法。
【請求項９】
前記情報処理手段がマルチプロセッサシステムにおけるプロセッサであり、前記ロックオブジェクトが前記マルチプロセッサシステムにおけるプロセッサ間排他制御のロックオブジェクトである請求項１から請求項８までのいずれかに記載の資源排他制御方法。
【請求項１０】
並列処理の実行が可能な複数の情報処理手段間で排他制御を行う資源排他制御装置であって、
共有資源ごとに対応し、各共有資源がどの情報処理手段によってロックされているかを管理する複数のロックオブジェクトと、
前記ロックオブジェクトのロック獲得を要求する情報処理手段がロック獲得に失敗したときに、先行するロック獲得情報処理手段のロック継続時間を取得するロック継続時間取得手段と、
前記ロック継続時間取得手段による前記ロック継続時間を判定閾値時間と比較し、その比較結果に応じてロック待ち動作を選択するロック待ち動作選択手段と、
前記ロック待ち動作選択手段によって選択される複数種類のロック待ち動作機構とを備えた資源排他制御装置。
【請求項１１】
前記ロック待ち動作機構は、スピンロック機構とサスペンドロック機構とを保有し、
前記ロック待ち動作選択手段は、前記ロック継続時間が前記判定閾値時間を超えるときは前記スピンロック機構を選択し、前記ロック継続時間が前記判定閾値時間以下のときは前記サスペンドロック機構を選択する請求項１０に記載の資源排他制御装置。
【請求項１２】
前記ロック継続時間については、ロック獲得成功時のシステム時刻をロック開始時刻として保持し、その保持したロック開始時刻から現在のシステム時刻までの経過時間をロック継続時間とする請求項１０または請求項１１に記載の資源排他制御装置。
【請求項１３】
前記ロック継続時間については、ロック獲得成功時にタイマを起動させ、そのタイマのカウントを読み取ってロック継続時間とする請求項１０または請求項１１に記載の資源排他制御装置。
【請求項１４】
さらに、実際に消費されたロック時間に応じて前記判定閾値時間を動的に変更する判定閾値時間変更手段を備えている請求項１０から請求項１３までのいずれかに記載の資源排他制御装置。
【請求項１５】
前記判定閾値時間変更手段は、実際に消費されたロック時間が現在の判定閾値時間より短いときに限定して前記判定閾値時間の動的な変更を行う請求項１４に記載の資源排他制御装置。
【請求項１６】
前記判定閾値時間変更手段は、前記判定閾値時間の動的な変更において現在までの実際に消費されたロック時間の平均値に変更する請求項１４に記載の資源排他制御装置。
【請求項１７】
前記判定閾値時間については、情報処理手段ごとに固有の判定閾値時間を保有する請求項１０から請求項１６までのいずれかに記載の資源排他制御装置。
【請求項１８】
前記情報処理手段がマルチプロセッサシステムにおけるプロセッサであり、前記ロックオブジェクトが前記マルチプロセッサシステムにおけるプロセッサ間排他制御のロックオブジェクトである請求項１０から請求項１７までのいずれかに記載の資源排他制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、並列処理の実行が可能な複数のプロセッサ等の情報処理手段間で排他制御を行う資源排他制御方法および資源排他制御装置にかかわり、特にはロックオブジェクトのロック獲得に失敗した場合に、リソースとしての情報処理手段（プロセッサ）の浪費を極力少なくして情報処理手段（プロセッサ）の使用効率を向上させるための技術に関する。
【背景技術】
【０００２】
複数の情報処理手段（プロセッサ）によって並列処理を行うマルチ情報処理システム（マルチプロセッサシステム）において、システム中の資源を複数の情報処理手段間で共有する場合、その一貫性（コンシステンシ：consistency）を保証するために情報処理手段間で共有資源の排他制御（相互排除）を行う必要がある。
【０００３】
共有資源の一貫性を維持する一般的な方法としては、共有資源ごとに対応付けられたロックオブジェクトに対するロックを共有資源の操作前に獲得し、共有資源の操作後にロックオブジェクトのロックを解放（アンロック）するようにして、複数の情報処理手段の同一資源への操作が同時に実行されないようにすることで一貫性を保証している。ロックオブジェクトとは、共有資源がロック状態（プロセスにより取得されている状態）にあるかアンロック状態（プロセスにより取得されていない状態）にあるかを、またどの情報処理手段によってロックされているかを管理する部分のことである。その管理の情報をロック情報という。
【０００４】
排他制御のためのロックオブジェクトのロック獲得の方法としては、大別して、スピンロック方式とサスペンドロック方式とがある。スピンロック方式は、ロックが獲得できるまでチェックを繰り返すロック方式である。サスペンドロック方式は、ロックが獲得できなかった場合に他のプロセスにコンテキストスイッチ（スリープ）し、先行するロック獲得情報処理手段（プロセッサ）でのロックが解放されたときに、ロック獲得を再度試み、元のプロセスに復帰（ウェイクアップ）するロック方式である。サスペンド（suspend）とは、「保留」という意味である。
【０００５】
スピンロック方式では、スピンしている期間はビジーウェイト（busy wait）状態となり、情報処理手段は他の処理を行えず、情報処理手段がリソースとして浪費されることになる。
【０００６】
一方、サスペンドロック方式では、ロックオブジェクトのロックが獲得できなかった場合には他のプロセスに情報処理手段の実行権を渡すため、情報処理手段（プロセッサ）が浪費されるということはない。しかし、プロセスのスリープおよびウェイクアップのためのコンテキストスイッチに、処理時間が余分に掛かってしまう。
【０００７】
スピンロック方式を使用するかサスペンドロック方式を使用するかについては、これを静的に決めている場合と動的（ダイナミック）に決める場合とがある。
【０００８】
ロック方式が静的に決められている場合には、ロックオブジェクトのロックが長時間獲得できないときでもスピンしたり、ロックをすぐに獲得できる場合でもスリープするなど、情報処理手段（プロセッサ）を浪費してしまう問題がある。
【０００９】
ロック方式を動的に決定するロック方式としては、ロックオブジェクトのロックを獲得しているプロセスが実行状態か（情報処理手段の実行権を所有しているか）を判別し、スピンロック方式を用いるかサスペンドロック方式を用いるかを決定するロック方式（特許文献１参照）や、まずはスピンロック方式によるロックを試み、一定時間スピンしてもロックを獲得できなければサスペンドロック方式に切り換えるロック方式（特許文献２参照）などが考案されている。
【特許文献１】特開平７−３１９７１６号公報
【特許文献２】特開平５−２２５１４９号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
従来のロック方式を動的に決定するロック方式では、特許文献１記載の方式の場合、ロックオブジェクトのロックを獲得しているプロセスが実行状態の場合には、ロックが長時間獲得できない場合でもスピンし続けてしまい、情報処理手段（プロセッサ）を浪費する問題がある。
【００１１】
また、特許文献２記載の方式の場合では、一定時間スピンしてもロックが獲得できずにサスペンド方式に切り換え、スリープし始めたところで獲得しようとしているロックオブジェクトのロックが解放された場合には、またすぐにウェイクアップする必要があり、コンテキストスイッチ分のオーバーヘッドが掛かってしまうという問題がある。
【００１２】
本発明は、このような事情に鑑みて創作したものであり、ロックオブジェクトのロック獲得に失敗した場合に、リソースとしての情報処理手段（プロセッサ）の浪費を少なくし、情報処理手段（プロセッサ）の使用効率を向上させることを目的としている。
【課題を解決するための手段】
【００１３】
本発明による資源排他制御方法は、並列処理の実行が可能な複数の情報処理手段間で排他制御を行う資源排他制御方法であって、ロックオブジェクトのロック獲得を要求する情報処理手段がロック獲得に失敗したときに、先行するロック獲得情報処理手段のロック継続時間を判定閾値時間と比較し、その比較結果に応じてロック待ち動作を選択するように制御することを特徴とするものである。
【００１４】
この構成において、ロックオブジェクトのロック獲得を要求している情報処理手段（ロック要求情報処理手段）がロック獲得に失敗したときには、先行してそのロックオブジェクトのロックを獲得している情報処理手段（ロック獲得情報処理手段）についてのロック継続時間を判定閾値時間と比較し、ロック継続時間が判定閾値時間を超過している場合には、ロック獲得情報処理手段におけるロック解放のタイミングが早い（すぐにロック解放される可能性が高い）ものとして、スピンロックなどのロック待ち動作を選択する。また、ロック継続時間が判定閾値時間以下の場合には、ロック獲得情報処理手段によるロックオブジェクトのロックが解放されるタイミングが遅い（すぐにロック解放される可能性は低い）ものとして、スリープなどのロック待ち動作を選択する。これらはいわば、ロック獲得が可能となるまでの時間を予測していることになる。いずれにおいても、先行するロック獲得情報処理手段におけるロック解放を待つが、上記のようにロック継続時間の判定閾値時間に対する比較を通してロック待ち動作を合理的に選択しているため、その待ち時間はいずれも短い時間で済み、リソースとしての情報処理手段の使用効率を向上させることが可能となる。
【００１５】
上記の資源排他制御方法に対応する資源排他制御装置は、その方法に対応する各手段を備えた構成のものである。すなわち、本発明による資源排他制御装置は、並列処理の実行が可能な複数の情報処理手段間で排他制御を行う資源排他制御装置であって、
共有資源ごとに対応し、各共有資源がどの情報処理手段によってロックされているかを管理する複数のロックオブジェクトと、
前記ロックオブジェクトのロック獲得を要求する情報処理手段がロック獲得に失敗したときに、先行するロック獲得情報処理手段のロック継続時間を取得するロック継続時間取得手段と、
前記ロック継続時間取得手段による前記ロック継続時間を判定閾値時間と比較し、その比較結果に応じてロック待ち動作を選択するロック待ち動作選択手段と、
前記ロック待ち動作選択手段によって選択される複数種類のロック待ち動作機構とを備えたものである。
【００１６】
この構成において、ロック要求情報処理手段がロックオブジェクトのロック獲得に失敗したとき、ロック継続時間取得手段は先行するロック獲得情報処理手段についてのロック継続時間を取得し、その取得したロック継続時間をロック待ち動作選択手段に渡す。ロック待ち動作選択手段は受け取ったロック継続時間を判定閾値時間と比較し、ロック継続時間が判定閾値時間を超過している場合には、ロック獲得情報処理手段におけるロック解放のタイミングが早いものとして、それに適した種類のスピンロック機構などのロック待ち動作機構を選択する。また、ロック継続時間が判定閾値時間以下の場合には、ロック獲得情報処理手段によるロックオブジェクトのロックが解放されるタイミングが遅いものとして、それに適した種類のサスペンドロック機構などのロック待ち動作機構を選択する。いずれのロック待ち動作機構においても、先行するロック獲得情報処理手段におけるロック解放を待つが、上記のようにロック継続時間の判定閾値時間に対する比較を通してロック待ち動作を合理的に選択しているため、その待ち時間はいずれも短い時間で済み、リソースとしての情報処理手段の使用効率を向上させることが可能となる。
【００１７】
上記の資源排他制御方法において、前記ロック待ち動作の選択については、前記ロック継続時間が前記判定閾値時間を超えるときはスピンロックを選択し、前記ロック継続時間が前記判定閾値時間以下のときはサスペンドロックを選択するという態様がある。
【００１８】
また上記構成の資源排他制御装置において、前記ロック待ち動作機構は、スピンロック機構とサスペンドロック機構とを保有し、前記ロック待ち動作選択手段は、前記ロック継続時間が前記判定閾値時間を超えるときは前記スピンロック機構を選択し、前記ロック継続時間が前記判定閾値時間以下のときは前記サスペンドロック機構を選択するという態様がある。
【００１９】
スピンロック機構は、ロック要求情報処理手段がロックオブジェクトのロックを獲得するまでロック獲得の動作をし続ける。このスピンしている期間ではビジーウェイト状態となるが、ロック継続時間が判定閾値時間を超えているので、ロック獲得情報処理手段がアンロックするタイミングは近く、ロック要求情報処理手段によるロック獲得の要求は比較的早期に行われることになる。ビジーウェイト状態は存在しても、その期間は短く、リソースとしての情報処理手段の浪費は軽微なものですむことになる。
【００２０】
サスペンドロック機構は、ロック要求情報処理手段をスリープさせ、ロック獲得情報処理手段がアンロック（ロック解放）されるに至ったときにロック要求情報処理手段をウェイクアップさせて（起こして）から、ロックオブジェクトのロックを獲得させに行く。ロック獲得情報処理手段が共有資源の保持をアンロックするに至るまで、他のプロセスに実行権を渡す。そして、先行するロック獲得情報処理手段が共有資源の保持をアンロックするに至ると、ロック要求情報処理手段がウェイクアップする。したがって、ロック要求情報処理手段がリソースとして浪費されるといった事態は免れている。ウェイクアップされたロック要求情報処理手段は、再度の共有資源に対するロック獲得の要求を行う。この場合、共有資源に対するロック獲得の要求が他の情報処理手段から出されていなければ、そのロックオブジェクトのロックが獲得されることになる。この場合のスリープからウェイクアップのためのコンテキストスイッチ動作は、予想される時間を最大限待った上でのウェイクアップであり、不当に処理時間が余分に掛かったということにはならず、合理的な時間待ちといえる。
【００２１】
以上のように、ロックオブジェクトのロックの解放を長時間にわたるスピンロックで無駄に待つことや、すぐにロックオブジェクトのロックが獲得できる場合の無駄なコンテキストスイッチのオーバーヘッド等を回避することができ、リソースとしての情報処理手段の使用効率を向上させることが可能となる。
【００２２】
なお、ロック待ち動作選択手段をスピンロック機構とサスペンドロック機構で構成する代わりに、行いたいロック待ち動作に応じてこれらの構成は変更することが可能である。例えば、情報処理手段のクロック数を低下させる機構や、情報処理手段をスリープモード（クロック供給停止モード）に切り換える機構や、キャッシュのプリフェッチを行う機構等に変更してもよい。なお、ハードウェアを用いなくてもよく、ソフトウェアで同様の構成を用いて実施することもできる。
【００２３】
上記の資源排他制御方法または資源排他制御装置において、前記ロック継続時間については、ロック獲得成功時のシステム時刻をロック開始時刻として保持し、その保持したロック開始時刻から現在のシステム時刻までの経過時間をロック継続時間とするという態様がある。この構成によれば、先行するロック獲得情報処理手段についてロックオブジェクトに保持されているロック開始時刻を読み出し、現在のシステム時刻からロック開始時刻を減算することによりロック継続時間を求めることが可能となる。
【００２４】
また上記の資源排他制御方法または資源排他制御装置において、前記ロック継続時間については、ロック獲得成功時にタイマを起動させ、そのタイマのカウントを読み取ってロック継続時間とするという態様がある。この構成によれば、ロックオブジェクト内にロック開始時刻の保持手段を設けなくても、ロック継続時間を取得することが可能となる。
【００２５】
また上記の資源排他制御方法において、前記判定閾値時間については、実際に消費されたロック時間に応じて動的に変更するという態様がある。また上記構成の資源排他制御装置において、さらに、実際に消費されたロック時間に応じて前記判定閾値時間を動的に変更する判定閾値時間変更手段を備えているという態様がある。この構成によれば、実際に消費されたロック時間に応じて判定閾値時間を新たに設定するので、実動作により適した状態で判定閾値時間を更新でき、より効率の良いロック待ち動作機構を選択することが可能となる。
【００２６】
また上記の資源排他制御方法において、前記判定閾値時間の動的な変更については、実際に消費されたロック時間が現在の判定閾値時間より短いときに限定して変更するという態様がある。また上記構成の資源排他制御装置において、前記判定閾値時間変更手段は、実際に消費されたロック時間が現在の判定閾値時間より短いときに限定して前記判定閾値時間の動的な変更を行うという態様がある。実際に消費されたロック時間が現在の判定閾値時間よりも短いということは、その判定閾値時間が長すぎるということであり、これを是正するために、実際に消費されたロック時間を新たな判定閾値時間として設定する。これは、最小値での設定となる。これにより、実動作により適した状態で判定閾値時間を更新でき、より効率の良いロック待ち動作機構を選択することが可能となる。
【００２７】
また上記の資源排他制御方法において、前記判定閾値時間の動的な変更については、現在までの実際に消費されたロック時間の平均値に変更するという態様がある。また上記構成の資源排他制御装置において、前記判定閾値時間変更手段は、実際に消費されたロック時間が現在の判定閾値時間より短いときに限定して前記判定閾値時間の動的な変更を行うという態様がある。この構成によれば、実動作により適した状態で判定閾値時間を更新でき、より効率の良いロック待ち動作機構を選択することが可能となる。
【００２８】
また上記の資源排他制御方法または資源排他制御装置において、前記判定閾値時間については、情報処理手段ごとに固有の判定閾値時間を保有するという態様がある。この構成によれば、情報処理手段ごとに処理内容に偏りが生じるような場合であっても、その情報処理手段ごとの処理内容に応じて適正な判定閾値時間を用いることにより、実動作により適した状態で、より効率の良いロック待ち動作機構を選択することが可能となる。
【００２９】
また上記の資源排他制御方法または資源排他制御装置において、前記情報処理手段がマルチプロセッサシステムにおけるプロセッサであり、前記ロックオブジェクトが前記マルチプロセッサシステムにおけるプロセッサ間排他制御のロックオブジェクトであるという態様がある。この態様は、本発明の最も好適な適用例の１つである。
【００３０】
なお、共有資源については、共有メモリをはじめとして、各種任意のデバイスが適用可能である。
【発明の効果】
【００３１】
本発明によれば、ロック獲得に失敗したときには、先行するロック獲得情報処理手段（プロセッサ）についてのロック継続時間を判定閾値時間と比較し、ロック継続時間が判定閾値時間を超過しているか判定閾値時間以下かに応じて、それぞれ最適なロック待ち動作を選択するので、先行するロック獲得情報処理手段におけるロック解放の待ち時間はいずれも短い時間で済み、リソースとしての情報処理手段の使用効率を向上させることができる。
【発明を実施するための最良の形態】
【００３２】
以下、本発明にかかわる資源排他制御方法および資源排他制御装置の実施の形態を図面を用いて詳細に説明する。
【００３３】
（実施の形態１）
図１は本発明の実施の形態１における資源排他制御装置を用いたマルチプロセッサシステムのシステム構成を示すブロック図である。このマルチプロセッサシステムは、複数の情報処理手段としての複数のプロセッサＰ１，Ｐ２，Ｐ３と、複数の共有資源Ｒ１，Ｒ２と、資源排他制御装置Ａとから構成されている。資源排他制御装置Ａは、資源ロック制御機構１０とロックオブジェクト管理テーブル２０とから構成されている。３０はプロセッサＰ１，Ｐ２，Ｐ３と共有資源Ｒ１，Ｒ２と資源排他制御装置Ａを相互に接続するバスである。以下、資源排他制御装置Ａの構成要素について説明する。
【００３４】
資源ロック制御機構１０は、ロック継続時間取得部１１とロック待ち動作選択部１２とから構成されている。
【００３５】
ロック継続時間取得部１１は、現在すでにロックオブジェクトのロックを獲得しているプロセッサ（ロック獲得プロセッサ）のロック開始からの経過時間であるロック継続時間Ｔを取得し、取得したロック継続時間Ｔをロック待ち動作選択部１２に送出するように構成されている（詳しくは後述する）。
【００３６】
ロック待ち動作選択部１２は、スピンロック機構１３とサスペンドロック機構１４とを内蔵している。ロック待ち動作選択部１２は、ロック継続時間取得部１１から取得した先行するロック獲得プロセッサについてのロック継続時間Ｔの長さに応じて、スピンロック機構１３とサスペンドロック機構１４のいずれかを選択する。このロック継続時間Ｔの長さは、その時々の状況に応じてまちまちに変化するものである。このロック継続時間Ｔは、当該の判断の瞬間において一意に決まっているものであり、判断の過程の中で増大するといった性質のものではない。当該の判断の瞬間において長い場合もあれば、短い場合もある。取得した先行するロック獲得プロセッサについてのロック継続時間Ｔが判定閾値時間Ｔｈを超えているときには、ロック待ち動作選択部１２はスピンロック機構１３を選択する。一方、先行するロック獲得プロセッサについてのロック継続時間Ｔが判定閾値時間Ｔｈ以下のときには、ロック待ち動作選択部１２はサスペンドロック機構１４を選択する。スピンロック機構１３の選択とサスペンドロック機構１４の選択との間には優先関係はない（詳しくは後述する）。
【００３７】
スピンロック機構１３は、ロックオブジェクトのロック獲得を要求しているプロセッサ（ロック要求プロセッサ）がロックを獲得するまでロック獲得の動作をし続けるスピンロックを行うものとして構成されている（詳しくは後述する）。
【００３８】
サスペンドロック機構１４は、現下のロック要求プロセッサで実行されているプロセスをスリープさせ、先行するロック獲得プロセッサがアンロック（ロック解放）されるに至ったときに現下のロック要求プロセッサで実行されていたプロセスをウェイクアップさせて（起こして）からロックオブジェクトのロックを獲得させに行くサスペンドロック（スリープロック）を行うものとして構成されている（詳しくは後述する）。
【００３９】
ロックオブジェクト管理テーブル２０は、共有資源Ｒ１，Ｒ２の数と同数のロックオブジェクトＬ１，Ｌ２を管理している。各ロックオブジェクトＬ１，Ｌ２は、それぞれ各共有資源Ｒ１，Ｒ２に対応付けられている。ロックオブジェクトＬ１は、ロック情報２１と判定閾値時間Ｔｈを保有し、ロック情報２１には、ロックオブジェクトのロック獲得を開始した時刻を示すロック開始時刻ｔs が保持されるようになっている。ロックオブジェクトＬ２もロックオブジェクトＬ１と同様の構成となっている。
【００４０】
資源ロック制御機構１０は、現下のロック要求プロセッサからロック獲得の要求があったとき、ロックオブジェクト管理テーブル２０を参照し、要求にかかわるロックオブジェクトがアンロック状態のときは、直ちにその要求に応答して該当の共有資源にロックをかけるとともに、該当するロックオブジェクト管理テーブル２０内のロックオブジェクトにおいてロック情報２１にロック開始時刻ｔs を記録する。ロックオブジェクト管理テーブル２０を参照して要求にかかわるロックオブジェクトが既にロック状態のときは、資源ロック制御機構１０はロック継続時間取得部１１とロック待ち動作選択部１２を起動する。
【００４１】
ロック継続時間取得部１１は、起動されると、ロックオブジェクト管理テーブル２０を参照し、先行するロック獲得プロセッサについてのロック情報２１からロック開始時刻ｔs を読み出し、そのロック開始時刻ｔs からの現在までの経過時間であるロック継続時間Ｔを算出し、そのロック継続時間Ｔをロック待ち動作選択部１２に送出する。図２に示すように、現在時刻をｔ0 とすると、ロック継続時間Ｔは、Ｔ＝ｔ0 −ｔs である。
【００４２】
ロック待ち動作選択部１２は、ロック継続時間取得部１１から先行するロック獲得プロセッサについてのロック継続時間Ｔを受け取ると、ロックオブジェクト管理テーブル２０を参照して要求にかかわるロックオブジェクトから判定閾値時間Ｔｈを読み出し、ロック継続時間Ｔを判定閾値時間Ｔｈと比較する。そして、ロック待ち動作選択部１２は、図２（ａ）のようにＴ＞Ｔｈのときはスピンロック機構１３を選択し、図２（ｂ）のようにＴ＝Ｔｈのとき、および図２（ｃ）のようにＴ＜Ｔｈのときはサスペンドロック機構１４を選択する。
【００４３】
いま、プロセッサＰ２が共有資源Ｒ１に対応するロックオブジェクトのロック状態を保持しているとする。このとき、資源排他制御装置Ａにおけるロックオブジェクト管理テーブル２０の共有資源Ｒ１に対応したロックオブジェクトＬ１では、そのロック情報２１のロック開始時刻ｔs が格納されている。このような状態で、プロセッサＰ１が同じ共有資源Ｒ１に対するアクセスを行おうとしたとする。
【００４４】
プロセッサＰ１による共有資源Ｒ１に対するロック獲得の要求がバス３０を介して資源排他制御装置Ａに送られる。この要求を受けた資源排他制御装置Ａは、資源ロック制御機構１０を起動し、ロックオブジェクト管理テーブル２０を参照する。ここでは、ロック獲得の要求にかかわる共有資源がＲ１であるので、対応するロックオブジェクトＬ１を参照する。すると、すでに、プロセッサＰ２による共有資源Ｒ１のロック保持状態であることがわかる。そこで、ロック継続時間取得部１１は、ロックオブジェクトＬ１からロック開始時刻ｔs を取得する。このロック開始時刻ｔs は、現在のロック獲得プロセッサＰ２が共有資源Ｒ１のロック保持を開始した時刻である。ロック継続時間取得部１１は、取得したロック開始時刻ｔs を基準にして、ロック獲得プロセッサＰ２による共有資源Ｒ１のロック状態の現在までの経過時間であるロック継続時間Ｔを算出し（Ｔ＝ｔ0 −ｔs ）、ロック待ち動作選択部１２に渡す。
【００４５】
ロック継続時間Ｔを受け取ったロック待ち動作選択部１２は、ロックオブジェクトＬ１の判定閾値時間Ｔｈを参照し、図２（ａ）のようにロック継続時間Ｔがすでに判定閾値時間Ｔｈを超えていることを確認したときは、スピンロック機構１３を選択し、これを起動するが、図２（ｂ），（ｃ）のようにロック継続時間Ｔがまだ判定閾値時間Ｔｈ以下であることを確認したときは、サスペンドロック機構１４を選択し、これを起動する。
【００４６】
図２（ａ）に示すように、現在時刻ｔ0 を基準として、ロック獲得プロセッサＰ２によるロック開始時刻ｔs が現在時刻ｔ0 に対して相対的に離れた時刻ｔ-3で、現在時刻ｔ0 においてロック継続時間Ｔが判定閾値時間Ｔｈを超えているとすると、この場合はロック待ち動作選択部１２はスピンロック機構１３を選択する。
【００４７】
図２（ｂ）に示すように、ロック開始時刻ｔs が現在時刻ｔ0 により近い時刻ｔ-2で、ロック継続時間Ｔが判定閾値時間Ｔｈに丁度一致したのが現在時刻ｔ0 であるとすると、この場合は、Ｔ＝Ｔｈであるので、ロック待ち動作選択部１２はサスペンドロック機構１４を選択する。
【００４８】
図２（ｃ）,（ｄ）に示すように、ロック開始時刻ｔs がさらに近い時刻ｔ-1であり、判定閾値時間Ｔｈはまだ経過していないとすると、ロック待ち動作選択部１２はサスペンドロック機構１４を選択する。
【００４９】
なお、図２（ａ），（ｂ），（ｃ）,（ｄ）において判定閾値時間Ｔｈの長さは同一で描いてある。
【００５０】
図２（ａ）に示すように、ロック待ち動作選択部１２によりスピンロック機構１３が起動された場合、スピンロック機構１３はロック要求プロセッサＰ１をスピンロックする。すなわち、ロックオブジェクトのロックが獲得できるまでチェックを繰り返す。スピンしている期間はビジーウェイト状態となるが、ロック継続時間Ｔが判定閾値時間Ｔｈを超えているので、ロック獲得プロセッサＰ２がアンロックするタイミングは近く、現下のロック要求プロセッサＰ１によるロック獲得の要求は比較的早期に行われることになる。ビジーウェイト状態は存在しても、その期間は短く、リソースとしてのプロセッサの浪費は軽微なものですむことになる。
【００５１】
一方、図２（ｂ），（ｃ）に示すように、ロック待ち動作選択部１２によりサスペンドロック機構１４が起動された場合、サスペンドロック機構１４はロック要求プロセッサＰ１で実行されているプロセスをスリープさせる。すなわち、ロック獲得プロセッサＰ２が共有資源Ｒ１の保持をアンロックするに至るまで、他のプロセスに実行権を渡す。そして、ロック獲得プロセッサＰ２が共有資源Ｒ１の保持をアンロックするに至ると、ロック要求プロセッサＰ１で実行されていたプロセスがウェイクアップする。したがって、ロック要求プロセッサＰ１がリソースとして浪費されるといった事態は免れている。ウェイクアップされたロック要求プロセッサＰ１は、再度の共有資源Ｒ１に対するロック獲得の要求を行う。この場合、共有資源Ｒ１に対するロック獲得の要求が他のプロセッサから出されていなければ、そのロックオブジェクトのロックが獲得されることになる。この場合のスリープからウェイクアップのためのコンテキストスイッチ動作は、予想される時間を最大限待った上でのウェイクアップであり、不当に処理時間が余分に掛かったということにはならず、合理的な時間待ちといえる。
【００５２】
また、一般的なスリープ、ウェイクアップの方法と同様に、ロック要求プロセッサＰ１で実行されているプロセスのスリープ時に、そのプロセスを共有資源Ｒ１に対応するウェイトキューの末尾に繋ぎ、ロック獲得プロセッサＰ２が共有資源Ｒ１の保持をアンロックするに至ったときには、そのウェイトキューの先頭に繋がっているプロセスに共有資源Ｒ１に対応するロックを獲得させ、ウェイトキューから外し、ウェイクアップさせることも考えられる。ウェイトキューに繋がっていても先頭でないプロセスは、この時点ではまだウェイクアップされない。この場合、ウェイクアップしたプロセスは既にロックを獲得した状態になっているため、再度のロック獲得の要求を行う必要がなく、ウェイクアップ後に再びロック獲得に失敗するということを防ぐことができる。
【００５３】
なお、ウェイクアップさせるタイミングについては図２（ｄ）に示すように、ロック開始時刻ｔs に判定閾値時間Ｔｈを加えた時刻に割り込みを発生させるなどしてウェイクアップさせる等でもよく、その後はスピンロックによりロック獲得プロセッサＰ２が共有資源Ｒ１の保持をアンロックするのを待つ等、ロックの待ち方を切り換えることも考えられる。この場合、ロック獲得プロセッサＰ２が共有資源Ｒ１の保持をアンロックしてからウェイクアップさせる場合に比べ、ロック要求プロセッサＰ１はコンテキストスイッチ処理にかかるオーバーヘッドの時間分、早くロックを獲得することが可能となり、ロック獲得プロセッサＰ２から見れば、ロック要求プロセッサＰ１はあたかも最初からずっとスピンロック方式で待っていたかのように見える。すなわち、ロックが解放された際にはスピンロック方式と同等の速さでロックを獲得することができ、かつプロセッサを他のプロセスの実行に使用することも行っており、ロック獲得までの時間を劣化させずにリソースとしてのプロセッサの使用効率を向上させることが可能となる。
【００５４】
次に、上記のように構成された本実施の形態の資源排他制御装置の動作を図３（ａ），（ｂ）のフローチャートに従って説明する。図３（ａ）は実施の形態１におけるロックオブジェクトのロック獲得の処理の流れの一例を示し、図３（ｂ）はロック解放（アンロック）の処理の流れの一例を示す。
【００５５】
プロセッサ間排他が必要な共有資源を操作しようとするプロセッサ（ロック要求プロセッサ）は、その共有資源を操作する前に、その共有資源に対応するロックオブジェクトのロック獲得を試みる。このロック獲得の要求が資源排他制御装置Ａに伝えられる。
【００５６】
まず、ステップＳ１において、資源ロック制御機構１０は要求のあったロックオブジェクトにつきロックオブジェクト管理テーブル２０を参照して、ロックオブジェクトがロック状態か否かをチェックする。すでにロック状態のときは、ロックオブジェクトのロック獲得が失敗であるとしてステップＳ２に進み、一方、アンロック状態のときはロック獲得が成功であるとしてステップＳ６に進む。ここでは、説明の順序としてステップＳ２に進むとする。
【００５７】
ステップＳ２において、この場合はロック獲得に失敗していて、現在既にロックオブジェクトのロックを獲得しているプロセッサ（ロック獲得プロセッサ）が存在するのであるが、ロック継続時間取得部１１によりその先行するロック獲得プロセッサのロックオブジェクトのロック継続時間Ｔを取得する。このロック継続時間Ｔの取得においては、ロック獲得プロセッサのロック開始時刻ｔs を読み出し、現在時刻ｔ0 からロック開始時刻ｔs を減算して、ロック継続時間Ｔを求める（Ｔ＝ｔ0 −ｔs ）。このロック継続時間Ｔは、既にロックを獲得しているプロセッサがロック獲得に成功したときの時刻から現在までの経過時間である。このロック継続時間Ｔの長さは、その時々の状況によってまちまちである。図２（ａ）のようにロック継続時間Ｔが判定閾値時間Ｔｈを超えているときもあれば、図２（ｂ）のように丁度判定閾値時間Ｔｈに達したタイミングである場合もあるし、図２（ｃ）のように未だ判定閾値時間Ｔｈに達していない場合もある。ロック継続時間取得部１１は、演算によって取得したロック継続時間Ｔをロック待ち動作選択部１２に渡す。
【００５８】
次いでステップＳ３において、ロック待ち動作選択部１２は先行するロック獲得プロセッサのロックオブジェクトから判定閾値時間Ｔｈを読み出し、ロック継続時間取得部１１から受け取ったロック継続時間Ｔを判定閾値時間Ｔｈと比較する。すなわち、ロック継続時間Ｔが判定閾値時間Ｔｈに達しているかを判定する。図２（ａ）のようにロック継続時間Ｔが判定閾値時間Ｔｈを超過している場合には、ロック待ち動作選択部１２がスピンロック機構１３を選択するためにステップＳ４に進む。また図２（ｂ），（ｃ）のようにロック継続時間Ｔが判定閾値時間Ｔｈ以下の場合には、ロック待ち動作選択部１２がサスペンドロック機構１４を選択するためにステップＳ５に進む。
【００５９】
ステップＳ４においては、スピンロック機構１３を起動し、図３（ａ）のフローチャートのルーチンを抜ける。このステップＳ４の場合、ロック獲得プロセッサがロックオブジェクトのロックを獲得してから判定閾値時間Ｔｈに相当する一定時間がすでに経過しており、ロック獲得プロセッサは間もなくロックオブジェクトのロックを解放する（図３（ｂ）参照）と予測される。したがって、スピンロックすることは、過剰な時間待ちを意味しない合理的な判断である。
【００６０】
一方、ステップＳ５においては、サスペンドロック機構１４を起動し、図３（ａ）のフローチャートのルーチンを抜ける。このステップＳ５の場合、ロック獲得プロセッサがロックオブジェクトのロックを獲得してからそれほど時間が経過しておらず、ロックオブジェクトのロックがすぐに解放される（図３（ｂ）参照）可能性は低いと予測される。したがって、スリープすることは、早すぎるということにはならなくて、むしろ他のプロセスに実行権を渡すので合理的な判断であるといえる。
【００６１】
ステップＳ４のスピンロックした経緯ののちであるかステップＳ５のスリープした経緯ののちであるかを問わず、やがてロック獲得プロセッサがアンロックし（図３（ｂ）参照）、ロック要求プロセッサがロックオブジェクトのロック獲得に成功するに至る。この場合は、図３（ａ）のフローチャートのルーチンにおいて、そのステップＳ１のロック獲得の成否の判断が成功となり、ステップＳ６に進む。
【００６２】
ステップＳ６において、ロックオブジェクト管理テーブル２０は要求にかかわるロックオブジェクトにおいて、現在の時刻情報をそのロックオブジェクトの保持するロック開始時刻ｔs に記録し、図３（ａ）のフローチャートのルーチンを抜ける（ロック獲得処理の終了）。
【００６３】
図３（ｂ）はロックオブジェクトのロック解放（アンロック）の処理の流れ示す。プロセッサ間排他が必要な共有資源の操作を終えたプロセッサ（ロック要求プロセッサからロック獲得プロセッサとなる）は、その共有資源の操作後に、その共有資源に対応するロックオブジェクトのロックを解放する（ステップＳ１１）。
【００６４】
本実施の形態によれば、ロック獲得に失敗したときには、先行するロック獲得プロセッサについてのロック継続時間Ｔを判定閾値時間Ｔｈと比較し、ロック継続時間Ｔが判定閾値時間Ｔｈを超過しているか判定閾値時間Ｔｈ以下かに応じて、それぞれ最適なロック待ち動作を選択するので、先行するロック獲得プロセッサにおけるロック解放の待ち時間はいずれも充分に短い時間で済み、リソースとしてのプロセッサの使用効率を向上させることができる。
【００６５】
なお、本実施の形態では、ロック待ち動作選択部１２をスピンロック機構１３とサスペンドロック機構１４で構成しているが、行いたいロック待ち動作に応じてこれらの構成は変更することが可能である。例えば、プロセッサのクロック数を低下させる機構や、プロセッサをスリープモード（クロック供給停止モード）に切り換える機構や、キャッシュのプリフェッチを行う機構等に変更してもよい。なお、特殊な装置を用いなくても、ソフトウェアで同様の構成を用いて実施することもできる。
【００６６】
なお、ステップＳ６において説明した現在の時刻情報とは、例えばシステム起動からのフリーランタイマのタイムスタンプ値等である。あるいは、これに代えて、ロック獲得に成功した場合に専用のタイマをスタートさせる等すれば、ロック開始時刻ｔs をロックオブジェクト内に設けなくても、ロック開始からの経過時間であるロック継続時間Ｔを取得することができる。
【００６７】
（実施の形態２）
図４は本発明の実施の形態２における資源排他制御装置を用いたマルチプロセッサシステムのシステム構成を示すブロック図である。図４において、実施の形態１の図１におけるのと同じ符号は同一構成要素を指しているので、詳しい説明は省略する。本実施の形態に特有の構成は、資源ロック制御機構１０において、実際に消費されたロック時間に応じて判定閾値時間Ｔｈを動的（ダイナミック）に変更する判定閾値時間変更部１５が追加されている点にある。本実施の形態の資源排他制御装置の基本的な動作は、実施の形態１の場合の図３（ａ）のフローチャートに従う。
【００６８】
図５は実施の形態２におけるロックオブジェクトのロック解放の処理の流れの一例を示すフローチャートである。ステップＳ１１のロックオブジェクトのロック解放に引き続いて、ステップＳ１２において、判定閾値時間変更部１５は、実際に消費されたロック時間に応じて判定閾値時間Ｔｈを動的に変更し、新たに設定する。例えばロック開始時刻ｔs からロックを解放する現在までの経過時間（実際に消費されたロック時間）がそのロックオブジェクトを保有していた時間となる。したがって、その時間に応じて判定閾値時間Ｔｈを新たに設定すればよい。実際に消費されたロック時間が長ければ判定閾値時間Ｔｈも長くし、実際に消費されたロック時間が短ければ判定閾値時間Ｔｈも短くする。このような調整を動的（ダイナミック）に行うのである。
【００６９】
本実施の形態によれば、実際に消費されたロック時間に応じて判定閾値時間Ｔｈを新たに設定するので、実動作により適した状態で判定閾値時間を更新でき、より効率の良いロック待ち動作機構（スピンロック機構１３またはサスペンドロック機構１４）を選択することができる。
【００７０】
なお、判定閾値時間Ｔｈの動的な変更については、実際に消費されたロック時間が現在の判定閾値時間Ｔｈより短いときに（ロック継続時間Ｔが判定閾値時間Ｔｈより短いタイミングで終了した場合に）限定して変更するようにすれば、最小値での設定が可能となる。これにより、ロック獲得速度が要求されるシビアなシステムにおいても対応可能で、実動作により適した状態で判定閾値時間Ｔｈを更新でき、より効率の良いロック待ち動作機構（スピンロック機構１３またはサスペンドロック機構１４）を選択することができる。
【００７１】
あるいは、現在までの実際のロック時間の平均値を設定することなども考えられる。この場合も、実動作により適した状態で判定閾値時間Ｔｈを更新でき、より効率の良いロック待ち動作機構（スピンロック機構１３またはサスペンドロック機構１４）を選択することができる。
【００７２】
（実施の形態３）
図６は本発明の実施の形態３における資源排他制御装置を用いたマルチプロセッサシステムのシステム構成を示すブロック図である。図６において、実施の形態１の図１におけるのと同じ符号は同一構成要素を指しているので、詳しい説明は省略する。本実施の形態に特有の構成は、ロックオブジェクト管理テーブル２０のロックオブジェクトＬ１において、複数のプロセッサＰ１，Ｐ２，Ｐ３のそれぞれに応じた固有の判定閾値時間Ｔｈ1 ，Ｔｈ2 ，Ｔｈ3 を保有しているとともに、ロック情報２１において、ロックオブジェクトのロックを獲得したプロセッサを示すロック獲得プロセッサＰL をさらに保有している点である。ロックオブジェクトＬ２についても同様の構成となっている。なお、本構成は実施の形態２の構成に適用することもできる。
【００７３】
図７は実施の形態３におけるロック獲得の処理の流れの一例を示すフローチャートである。図７では、実施の形態１の場合の図３（ａ）において、ロック獲得に成功した場合のステップＳ６の次に、ステップＳ７として、ロックオブジェクトのロックを獲得したプロセッサ識別子をそのロックオブジェクトの保持するロック獲得プロセッサＰL に記録するようになっている。プロセッサ識別子とは、例えば複数のプロセッサを一意に特定できるプロセッサごとに割り振られたＣＰＵ番号等である。
【００７４】
ロック待ち動作選択部１２は、ステップＳ３での先行するロック獲得プロセッサについてのロック継続時間Ｔが判定閾値時間Ｔｈを超えているか否かの判断において、そのロック情報２１におけるロック獲得プロセッサＰL を参照し、判定閾値時間Ｔｈ1 ，Ｔｈ2 ，Ｔｈ3 の中からそのロック獲得プロセッサＰL に対応する判定閾値時間Ｔｈi （ｉ＝１，２，３）を選択し、ロック継続時間Ｔと比較する。
【００７５】
本実施の形態によれば、判定閾値時間について、プロセッサＰi ごとに（ｉ＝１，２，３）、固有の判定閾値時間Ｔｈi を持たせていることにより、プロセッサごとに処理内容に偏りが生じるような場合であっても、そのプロセッサごとの処理内容に応じて適正な判定閾値時間Ｔｈi を用いるので、実動作により適した状態で、より効率の良いロック待ち動作機構（スピンロック機構１３またはサスペンドロック機構１４）を選択することができる。
【００７６】
なお、ロック獲得に失敗した場合において、既にそのロックオブジェクトのロック解放を待っているプロセッサが別に存在している場合に、ロック獲得プロセッサおよび既ロック待ちプロセッサのそれぞれの判定閾値時間Ｔｈi に応じて、ロック待ち動作機構（スピンロック機構１３またはサスペンドロック機構１４）を選択するようにしてもよい。例えば、ロック獲得プロセッサおよび既ロック待ちプロセッサのそれぞれの判定閾値時間Ｔｈi の総和をロック継続時間Ｔとを比較し、ロック待ち動作機構を選択することなどが考えられる。具体的には、プロセッサＰ１がロックを獲得しプロセッサＰ２が既にロック獲得を待っている状態において、プロセッサＰ３が新たにロック獲得を試み失敗した場合には、ロック獲得プロセッサＰ１と既ロック待ちプロセッサＰ２のそれぞれの判定閾値時間Ｔｈ1 ，Ｔｈ2の合計値とロック継続時間Ｔを比較し、プロセッサＰ３のロック待ち動作機構を選択するなどである。
【００７７】
以上説明したように本発明の技術を用いることにより、ロック獲得の際に、ロックオブジェクトのロック解放を無駄にスピンロックで長時間待つことや、無駄なコンテキストスイッチのオーバーヘッド等を回避することができ、リソースとしてのプロセッサの使用効率を向上させることができる。
【産業上の利用可能性】
【００７８】
本発明の資源排他制御方法または資源排他制御装置は、複数のプロセッサ間で排他処理が必要となるプロセッサにおいてプロセッサ資源の使用効率の向上が可能となるので、並列処理実行が可能なプロセッサを搭載する家電製品等に有用である。
【図面の簡単な説明】
【００７９】
【図１】本発明の実施の形態１における資源排他制御装置を用いたマルチプロセッサシステムのシステム構成を示すブロック図
【図２】本発明の実施の形態１における資源排他制御装置の動作原理の説明図
【図３】本発明の実施の形態１における資源排他制御装置のロック獲得ルーチンのフローチャート（ａ）とロック解放ルーチンのフローチャート（ｂ）
【図４】本発明の実施の形態２における資源排他制御装置を用いたマルチプロセッサシステムのシステム構成を示すブロック図
【図５】本発明の実施の形態２における資源排他制御装置のロック解放ルーチンのフローチャート
【図６】本発明の実施の形態３における資源排他制御装置を用いたマルチプロセッサシステムのシステム構成を示すブロック図
【図７】本発明の実施の形態３における資源排他制御装置のロック獲得ルーチンのフローチャート
【符号の説明】
【００８０】
１０…資源ロック制御機構
１１…ロック継続時間取得部
１２…ロック待ち動作選択部
１３…スピンロック機構
１４…サスペンドロック機構
１５…判定閾値時間変更部
２０…ロックオブジェクト管理テーブル
２１…ロック情報
Ａ…資源排他制御装置
Ｌ１，Ｌ２…ロックオブジェクト
Ｐ１，Ｐ２，Ｐ３…プロセッサ（情報処理手段）
ＰL …ロック獲得プロセッサ（ロック獲得情報処理手段）
Ｒ１，Ｒ２…共有資源
Ｔ  ロック継続時間
Ｔｈ，Ｔｈ1 ，Ｔｈ2 ，Ｔｈ3 …判定閾値時間
ｔs …ロック開始時刻
【図１】
2010191575.tif 000003
【図２】
2010191575.tif 000004
【図３】
2010191575.tif 000005
【図４】
2010191575.tif 000006
【図５】
2010191575.tif 000007
【図６】
2010191575.tif 000008
【図７】
2010191575.tif 000009