(57)【要約】      （修正有）【課題】排他制御フラグの取得タイミングを最適化する。【解決手段】排他制御部１２は排他制御フラグが取得されているか否かを判定し、メモリ処理部１１は排他制御フラグが取得されていない場合に、当該排他制御フラグを取得し、排他制御部は現在時刻と前回実行時の排他制御の処理時間よりフラグ開放予測時間を算出し記憶する。処理部１４が排他制御フラグに関連付けられたデータに対する処理を終えると、メモリ処理部１１は排他制御フラグを解放し、排他制御部１２は排他制御フラグを取得した時刻と排他制御フラグを解放した時刻との差である排他制御時間を算出し記憶する。メモリ処理部は排他制御フラグがすでに取得されている場合に、フラグ開放予測時間を使用して取得タイミングを最適化する。【選択図】図１
2011065452.tif 000002
【特許請求の範囲】
【請求項１】
排他制御情報によって排他制御を行う複数のプロセッサと当該プロセッサが共有するメインメモリとを備えるマルチプロセッサ装置であって、
前記プロセッサは、
前記メインメモリが記憶する所定のデータが何れかのプロセッサによって使用されているか否かを示す排他制御情報が、前記データが他のプロセッサによって使用されていることを示しているか否かを判定する排他制御判定部と、
前記排他制御判定部によって、前記排他制御情報が、前記データが使用中でないことを示していると判定された場合に、当該排他制御情報を、前記データが使用中であることを示す情報に書き換える排他制御開始部と、
前記排他制御開始部が前記排他制御情報を使用中であることを示す情報に書き換える時刻を特定する排他制御開始時刻特定部と、
前記データの使用が完了したときに、前記排他制御解除部が前記排他制御情報を使用中でないことを示す情報に書き換える時刻を特定する排他制御終了時刻特定部と、
前記排他制御開始時刻特定部が特定した時刻と前記排他制御終了時刻特定部が特定した時刻との差の時間である排他制御時間を算出する排他制御時間算出部と、
前記排他制御情報を、前記データが使用中でないことを示す情報に書き換える排他制御解除部と、
を備えることを特徴とするマルチプロセッサ装置。
【請求項２】
前記プロセッサは、
前記排他制御判定部によって、前記排他制御情報が、前記データが他のプロセッサによって使用されていることを示していると判定された場合に、当該他のプロセッサの排他制御開始時刻特定部が特定した時刻から、何れかのプロセッサの排他制御時間算出部が算出した排他制御時間が経過する時刻に基づいて、前記排他制御判定部による処理を抑止する判定処理抑止部
を備えることを特徴とする請求項１に記載のマルチプロセッサ装置。
【請求項３】
前記排他制御時間を示す排他制御時間情報は、前記メインメモリまたは前記プロセッサのキャッシュメモリの何れかに格納され、
前記プロセッサは、
前記排他制御時間情報を前記メインメモリまたは前記プロセッサのキャッシュメモリから読み出す排他制御時間読出部と、
前記排他制御開始時刻特定部が特定した時刻に、前記排他制御時間読出部が読み出した排他制御時間情報が示す排他制御時間を加算した時刻である排他制御終了予定時刻を算出し、当該排他制御終了予定時刻を、前記メインメモリに書き込む排他制御終了予定時刻書込部と、
前記排他制御時間算出部が排他制御時間を算出した後、前記メインメモリまたは自プロセッサのキャッシュメモリに、前記算出した排他制御時間を示す排他制御時間情報を書き込む排他制御時間書込部と、
を備え、
前記判定処理抑止部は、前記メインメモリから前記排他制御終了予定時刻を読み出し、当該排他制御終了予定時刻まで、前記排他制御判定部による処理を抑止する
ことを特徴とする請求項２に記載のマルチプロセッサ装置。
【請求項４】
前記排他制御情報は、前記データを使用しているプロセッサの識別情報を含み、
前記排他制御時間書込部は、自プロセッサの識別情報に関連付けて前記メインメモリに前記排他制御時間を書き込み、
前記排他制御時間読出部は、前記メインメモリが記憶する排他制御時間のうち、前記データを使用しているプロセッサの識別情報に関連付けられた排他制御時間を読み出す
ことを特徴とする請求項３に記載のマルチプロセッサ装置。
【請求項５】
前記排他制御情報は、前記データを使用しているプロセスの識別情報を含み、
前記排他制御時間書込部は、前記データを使用するプロセスの識別情報に関連付けて前記メインメモリに前記排他制御時間を書き込み、
前記排他制御時間読出部は、前記メインメモリが記憶する排他制御時間のうち、前記データを使用しているプロセスの識別情報に関連付けられた排他制御時間を読み出す
ことを特徴とする請求項３または請求項４の何れか１項に記載のマルチプロセッサ装置。
【請求項６】
排他制御情報によって排他制御を行う複数のプロセッサと当該プロセッサが共有するメインメモリとを備えるマルチプロセッサ装置における排他制御方法であって、
前記プロセッサの排他制御判定部は、前記メインメモリが記憶する所定のデータが何れかのプロセッサによって使用されているか否かを示す排他制御情報が、前記データが他のプロセッサによって使用されていることを示しているか否かを判定し、
前記プロセッサの排他制御開始時刻特定部は、前記排他制御判定部によって、前記排他制御情報が、前記データが使用中でないことを示していると判定された場合に、当該排他制御情報を、前記データが使用中であることを示す情報に書き換える排他制御開始部と、
前記排他制御開始部が前記排他制御情報を使用中であることを示す情報に書き換える時刻を特定し、
前記プロセッサの排他制御終了時刻特定部は、前記データの使用が完了したときに、前記排他制御解除部が前記排他制御情報を使用中でないことを示す情報に書き換える時刻を特定し、
前記プロセッサの排他制御時間算出部は、前記排他制御開始時刻特定部が特定した時刻と前記排他制御終了時刻特定部が特定した時刻との差の時間である排他制御時間を算出し、
前記プロセッサの排他制御解除部は、前記排他制御情報を、前記データが使用中でないことを示す情報に書き換える、
ことを特徴とする排他制御方法。
【請求項７】
排他制御情報によって排他制御を行う複数のプロセッサと当該プロセッサが共有するメインメモリとを備えるマルチプロセッサ装置の各プロセッサを、
前記メインメモリが記憶する所定のデータが何れかのプロセッサによって使用されているか否かを示す排他制御情報が、前記データが他のプロセッサによって使用されていることを示しているか否かを判定する排他制御判定部、
前記排他制御判定部によって、前記排他制御情報が、前記データが使用中でないことを示していると判定された場合に、当該排他制御情報を、前記データが使用中であることを示す情報に書き換える排他制御開始部、
前記排他制御開始部が前記排他制御情報を使用中であることを示す情報に書き換える時刻を特定する排他制御開始時刻特定部、
前記データの使用が完了したときに、前記排他制御解除部が前記排他制御情報を使用中でないことを示す情報に書き換える時刻を特定する排他制御終了時刻特定部、
前記排他制御開始時刻特定部が特定した時刻と前記排他制御終了時刻特定部が特定した時刻との差の時間である排他制御時間を算出する排他制御時間算出部、
前記排他制御情報を、前記データが使用中でないことを示す情報に書き換える排他制御解除部、
として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、排他制御情報によって排他制御を行う複数のプロセッサと当該プロセッサが共有するメインメモリとを備えるマルチプロセッサ装置、マルチプロセッサ装置における排他制御方法、及びプログラムに関する。
【背景技術】
【０００２】
従来、複数のプロセッサを備え、当該プロセッサによって処理を分散させることで処理能力を向上させるマルチプロセッサ装置が用いられている。マルチプロセッサ装置に備えられたプロセッサは、メインメモリを共有し、当該メモリ上のデータにアクセスすることで処理を行う。このようなマルチプロセッサ装置は、複数のプロセッサ間によるデータの同時更新による矛盾やデータの破壊を回避するため、排他制御を行っている。
【０００３】
図４は、関連するマルチプロセッサ装置による排他制御動作を示すフローチャートである。
従来のマルチプロセッサ装置のプロセッサは、メインメモリに格納されているあるデータへのアクセスを行う場合、まず、当該データに関連付けられた排他制御フラグをメインメモリから読み出す（ステップＳ９１）。ここで、排他制御フラグとは、関連付けられたデータが使用されているプロセッサの識別情報を示す情報であり、関連付けられたデータが使用されていない場合は、ＮＵＬＬを示すものとする。次に、読み出した排他制御フラグがＮＵＬＬであるか否かを判定する（ステップＳ９２）。
プロセッサは、排他制御フラグに他のプロセッサの識別情報が格納されていると判定した場合（ステップＳ９２：ＮＯ）、排他制御フラグがＮＵＬＬであると判定されるまで、ステップＳ９１、Ｓ９２の処理を繰り返す。
他方、排他制御フラグがＮＵＬＬであると判定した場合（ステップＳ９２：ＹＥＳ）、プロセッサは、排他制御フラグを自プロセッサの識別情報に書き換える（ステップＳ９３）。これにより、他のプロセッサが同一のデータにアクセスすることを防ぐことができる。ここでは、ステップＳ９１〜９３の処理、すなわち排他制御フラグの読み出し及び書き換えを行う処理を、「排他制御フラグ取得処理」と定義する。また、排他制御フラグに自プロセッサの識別情報を書き込むことを、「排他制御フラグの取得」と定義とする。
【０００４】
排他制御フラグ取得処理により、排他制御フラグに識別情報を書き込むと、プロセッサは、当該排他制御フラグに関連付けられたデータに対する処理を行う（ステップＳ９４）。
プロセッサは、データに対する処理を終了すると、当該データに対応付けられた排他制御フラグをＮＵＬＬに書き換える（ステップＳ９５）。これにより、排他制御フラグが解放され、他のプロセッサが当該データへのアクセスを行うことができるようになる。
【０００５】
図５は、関連するマルチプロセッサ装置による排他制御動作の一例を示すシーケンス図である。
ここでは、マルチプロセッサ装置がプロセッサＡとプロセッサＢとを備える場合を例に説明を行う。
プロセッサＡは、まず、排他制御フラグ取得処理を実行する。すなわち、まず、プロセッサＡは、メインメモリに格納されている排他制御フラグを読み出す。次に、プロセッサＡは、読み出した排他制御フラグがＮＵＬＬであるか否かを判定する。ここでは、排他制御フラグがＮＵＬＬであるため、プロセッサＡは、排他制御フラグに自プロセッサの識別番号「Ａ」を書き込むことで、排他制御フラグを取得する。そして、プロセッサＡは、取得した排他制御フラグに関連付けられたデータに対する処理を実行する。
【０００６】
他方、プロセッサＢも、排他制御フラグ取得処理を実行する。まず、プロセッサＢは、メインメモリに格納されている排他制御フラグを読み出す。次に、プロセッサＢは、読み出した排他制御フラグがＮＵＬＬであるか否かを判定する。ここでは、上述した処理により、排他制御フラグに識別番号「Ａ」が書き込まれているため、排他制御フラグがＮＵＬＬになるまで、プロセッサＢは排他制御フラグ取得処理を繰り返す。
【０００７】
プロセッサＡは、取得した排他制御フラグに関連付けられたデータに対する処理を終了すると、排他制御フラグをＮＵＬＬに書き換える。
プロセッサＢは、プロセッサＡが排他制御フラグをＮＵＬＬに書き換えた後の時刻に実行した排他制御フラグ取得処理により、排他制御フラグを取得する。そして、プロセッサＢは、取得した排他制御フラグに関連付けられたデータに対する処理を実行し、取得した排他制御フラグに関連付けられたデータに対する処理を終了すると、排他制御フラグをＮＵＬＬに書き換える。
このように、排他制御フラグを用いて排他制御処理を行うことで、複数のプロセッサ間によるデータの同時更新による矛盾やデータの破壊を回避することができる。
【０００８】
なお、特許文献１に、排他制御フラグの取得タイミングを段階的に増加させることで、オーバーヘッドを減らす技術が開示されている。
また、特許文献２に、排他制御フラグを取得できなかった場合に、他のプロセッサが排他制御フラグを取得した時刻から、予め決められた排他制御時間の経過後に排他制御フラグの取得処理を行うことで、プロセッサの処理能力の低下を防止する技術が開示されている。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開平０２−０５６０３１号公報
【特許文献２】特開平０３−０５９７５６号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
しかしながら、従来の排他制御フラグの取得方法では、排他制御フラグを取得できなかったプロセッサは、排他制御フラグがいつ解放されるかを認識できないため、断続的に排他制御フラグ取得処理を繰り返すこととなる。排他制御フラグ取得処理を行っている間、プロセッサは他の処理を行うことができないため、排他制御フラグ取得処理の増加によって性能低下が発生してしまうという問題があった。また、プロセッサ台数が多いコンピュータほど、性能の低下が顕著に発生することとなる。
【００１１】
特許文献１に記載の技術によれば、排他制御フラグの取得タイミングを段階的に増加させることで、オーバーヘッドを減らすことができるが、排他制御フラグの取得タイミングを最適化するものではないため、排他制御フラグ取得処理による性能の低下を防ぐことはできない。
また、特許文献２に記載の技術によれば、予め決められた排他制御時間の経過後に排他制御フラグの取得処理を行うことで、排他制御フラグ取得処理による性能の低下を防ぐことができる。しかし、予め決められた排他制御時間を用いるため、プロセスによって排他制御時間が異なる場合や、プロセッサの性能が異なる場合など、排他制御フラグを保持する時間が一定とならない場合は、プロセスやプロセッサの種類に関わらず同一の排他制御時間を用いることとなるために、この手法によって排他制御フラグの取得タイミングを最適化することができないという問題がある。
本発明は上記の点に鑑みてなされたものであり、その目的は、排他制御フラグの取得タイミングを最適化するマルチプロセッサ装置、マルチプロセッサ装置における排他制御方法、及びプログラムを提供することにある。
【課題を解決するための手段】
【００１２】
本発明は上記の課題を解決するためになされたものであり、排他制御情報によって排他制御を行う複数のプロセッサと当該プロセッサが共有するメインメモリとを備えるマルチプロセッサ装置であって、前記プロセッサは、前記メインメモリが記憶する所定のデータが何れかのプロセッサによって使用されているか否かを示す排他制御情報が、前記データが他のプロセッサによって使用されていることを示しているか否かを判定する排他制御判定部と、前記排他制御判定部によって、前記排他制御情報が、前記データが使用中でないことを示していると判定された場合に、当該排他制御情報を、前記データが使用中であることを示す情報に書き換える排他制御開始部と、前記排他制御開始部が前記排他制御情報を使用中であることを示す情報に書き換える時刻を特定する排他制御開始時刻特定部と、前記データの使用が完了したときに、前記排他制御解除部が前記排他制御情報を使用中でないことを示す情報に書き換える時刻を特定する排他制御終了時刻特定部と、前記排他制御開始時刻特定部が特定した時刻と前記排他制御終了時刻特定部が特定した時刻との差の時間である排他制御時間を算出する排他制御時間算出部と、前記排他制御情報を、前記データが使用中でないことを示す情報に書き換える排他制御解除部と、を備えることを特徴とする。
【００１３】
また、本発明は、排他制御情報によって排他制御を行う複数のプロセッサと当該プロセッサが共有するメインメモリとを備えるマルチプロセッサ装置における排他制御方法であって、前記プロセッサの排他制御判定部は、前記メインメモリが記憶する所定のデータが何れかのプロセッサによって使用されているか否かを示す排他制御情報が、前記データが他のプロセッサによって使用されていることを示しているか否かを判定し、前記プロセッサの排他制御開始時刻特定部は、前記排他制御判定部によって、前記排他制御情報が、前記データが使用中でないことを示していると判定された場合に、当該排他制御情報を、前記データが使用中であることを示す情報に書き換える排他制御開始部と、前記排他制御開始部が前記排他制御情報を使用中であることを示す情報に書き換える時刻を特定し、前記プロセッサの排他制御終了時刻特定部は、前記データの使用が完了したときに、前記排他制御解除部が前記排他制御情報を使用中でないことを示す情報に書き換える時刻を特定し、前記プロセッサの排他制御時間算出部は、前記排他制御開始時刻特定部が特定した時刻と前記排他制御終了時刻特定部が特定した時刻との差の時間である排他制御時間を算出し、前記プロセッサの排他制御解除部は、前記排他制御情報を、前記データが使用中でないことを示す情報に書き換える、ことを特徴とする。
【００１４】
また、本発明は、排他制御情報によって排他制御を行う複数のプロセッサと当該プロセッサが共有するメインメモリとを備えるマルチプロセッサ装置の各プロセッサを、前記メインメモリが記憶する所定のデータが何れかのプロセッサによって使用されているか否かを示す排他制御情報が、前記データが他のプロセッサによって使用されていることを示しているか否かを判定する排他制御判定部、前記排他制御判定部によって、前記排他制御情報が、前記データが使用中でないことを示していると判定された場合に、当該排他制御情報を、前記データが使用中であることを示す情報に書き換える排他制御開始部、前記排他制御開始部が前記排他制御情報を使用中であることを示す情報に書き換える時刻を特定する排他制御開始時刻特定部、前記データの使用が完了したときに、前記排他制御解除部が前記排他制御情報を使用中でないことを示す情報に書き換える時刻を特定する排他制御終了時刻特定部、前記排他制御開始時刻特定部が特定した時刻と前記排他制御終了時刻特定部が特定した時刻との差の時間である排他制御時間を算出する排他制御時間算出部、前記排他制御情報を、前記データが使用中でないことを示す情報に書き換える排他制御解除部、として機能させるためのプログラムである。
【発明の効果】
【００１５】
本発明によれば、プロセッサの排他制御時間算出部は、排他制御開始時刻特定部が特定した時刻と前記排他制御終了時刻特定部が特定した時刻との差の時間である排他制御時間を算出する。そして、他のプロセッサが排他制御フラグを取得している場合、当該他のプロセッサが排他制御フラグを取得した時刻から算出した排他制御時間が経過した時刻の前後の時刻まで、前記排他制御判定部による処理を抑止する。これにより、他のプロセッサが排他制御フラグを解放する前後の時刻に排他制御フラグの取得タイミングを最適化することができる。
【図面の簡単な説明】
【００１６】
【図１】本発明の一実施形態によるマルチプロセッサ装置の構成を示す概略ブロック図である。
【図２】マルチプロセッサの各プロセッサの動作を示すフローチャートである。
【図３】マルチプロセッサ装置による排他制御動作の一例を示すシーケンス図である。
【図４】従来のマルチプロセッサ装置による排他制御動作を示すフローチャートである。
【図５】従来のマルチプロセッサ装置による排他制御動作の一例を示すシーケンス図である。
【発明を実施するための形態】
【００１７】
以下、図面を参照しながら本発明の実施形態について詳しく説明する。
図１は、本発明の一実施形態によるマルチプロセッサ装置の構成を示す概略ブロック図である。
マルチプロセッサ装置は、複数のプロセッサ１０−１〜１０−Ｎ（以下、プロセッサ全体を指す場合はプロセッサ１０と表記する）とメインメモリ２０を備える。プロセッサ１０は、メモリ処理部１１（排他制御開始部、排他制御解除部、排他制御時間読出部、排他制御終了予定時刻書込部、排他制御時間書込部）、排他制御部１２（排他制御判定部、排他制御開始時刻特定部、排他制御終了時刻特定部、排他制御時間算出部、判定処理抑止部）、時刻制御部１３、処理部１４を備える。
メモリ処理部１１は、メインメモリ２０への読み出し処理及び書き込み処理を行う。
排他制御部１２は、排他制御フラグの取得及び解放処理を実行する。ここで、排他制御フラグとは、当該フラグに関連付けられたデータが使用されているプロセッサの識別情報を示す情報であり、当該フラグに関連付けられたデータが使用されていない場合は、ＮＵＬＬを示すものとする。
【００１８】
また、ここでは、排他制御フラグの読み出し及び書き換えを行う処理を、「排他制御フラグ取得処理」と定義する。また、排他制御フラグに自プロセッサの識別情報及び実行中のプロセスの識別情報を書き込むことを、「排他制御フラグの取得」と定義する。他方、排他制御フラグをＮＵＬＬに書き換えることを、「排他制御フラグの解放」と定義する。
【００１９】
時刻制御部１３は、現在の時刻を出力する。時刻制御部１３は、例えばマルチプロセッサ装置の内蔵時計を参照して時刻を出力するものであっても良いし、マルチプロセッサ装置の起動後の総クロック数を出力するものであっても良い。
処理部１４は、排他制御フラグに関連付けられたデータに対する処理を行う。
【００２０】
そして、排他制御部１２は、メインメモリ２０が記憶する所定のデータが何れかのプロセッサ１０によって使用されているか否かを示す排他制御フラグが、当該排他制御フラグに関連付けられているデータが使用されていることを示すか否かを判定し、メモリ処理部１１は、排他制御部１２によって、排他制御フラグが当該排他制御フラグに関連付けられているデータが使用されていないことを示すと判定された場合に、当該排他制御フラグを、当該排他制御フラグに関連付けられているデータが使用されていることを示す情報に書き換える。次に、排他制御部１２は、排他制御フラグを、当該排他制御フラグに関連付けられているデータが使用されていることを示す情報に書き換える時刻を特定する。
【００２１】
処理部１４が排他制御フラグに関連付けられたデータに対する処理を終えると、メモリ処理部１１は、排他制御フラグを、当該排他制御フラグに関連付けられているデータが使用されていないことを示す情報に書き換え、排他制御部１２は、排他制御フラグを、当該排他制御フラグに関連付けられているデータが使用されていることを示す情報に書き換える時刻を特定し、排他制御部１２は、排他制御フラグを当該排他制御フラグに関連付けられているデータが使用されていることを示す情報に書き換える時刻と排他制御フラグを当該排他制御フラグに関連付けられているデータが使用されていることを示す情報に書き換える時刻との差の時間である排他制御時間を算出する。
これにより、排他制御フラグの取得タイミングを最適化する。
【００２２】
次に、本実施形態によるマルチプロセッサ装置の各プロセッサの動作を説明する。
図２は、マルチプロセッサの各プロセッサの動作を示すフローチャートである。
プロセッサ１０の処理部１４がプロセスを実行することで、メインメモリ２０に格納されているデータへのアクセス要求を出力すると、メモリ処理部１１は、まず、メインメモリ２０から、アクセス要求の対象となるデータに関連付けられた排他制御フラグを読み出す（ステップＳ１）。
次に、排他制御部１２は、読み出した排他制御フラグがＮＵＬＬであるか否かを判定する（ステップＳ２）。排他制御部１２は、排他制御フラグがＮＵＬＬであると判定した場合（ステップＳ２：ＹＥＳ）、排他制御フラグを、自プロセッサ１０の識別情報に書き換える（ステップＳ３）。つまり、ステップＳ１〜Ｓ３の処理は、排他制御フラグの取得処理である。これにより、他のプロセッサ１０が同一のデータにアクセスすることを防ぐことができる。
【００２３】
排他制御部１２は、排他制御フラグを書き換えると、時刻制御部１３が示す現在の時刻を特定する（ステップＳ４）。すなわち、排他制御フラグを取得する時刻を特定する。なお、ここで特定した時刻の情報は、排他制御部１２の内部メモリに格納しておく。
排他制御部１２が時刻を特定すると、メモリ処理部１１は、メインメモリ２０内の取得トレースエリアから、自プロセッサ１０の識別情報及び実行中のプロセスの識別情報に関連付けられた、排他制御時間情報を読み出す（ステップＳ５）。ここで、排他制御時間情報とは、プロセッサ１０の識別情報とプロセスの識別情報とに関連付けられた情報であって、当該プロセッサ１０による当該プロセスの前回の実行時に、排他制御フラグを取得した時刻から解放した時刻までの時間を示す情報である。また、プロセスの初回の実行時には、メインメモリ２０に排他制御時間情報が格納されていないため、当該情報が０を示すものとして処理を行う。また、メインメモリ２０内の取得トレースエリアとは、メインメモリ２０内で排他制御時間情報を格納する記憶領域のことである。
【００２４】
メモリ処理部１１が排他制御時間情報を読み出すと、排他制御部１２は、ステップＳ４で特定した時刻に排他制御時間情報を加算した時刻を、排他制御フラグ解放予想時刻として算出する（ステップＳ６）。次に、メモリ処理部１１は、排他制御部１２が算出した排他制御フラグ解放予想時刻を示す排他制御フラグ解放予想時刻情報を、排他制御フラグの識別情報に対応付けてメインメモリ２０内の排他制御フラグ開放予測エリアに書き込む（ステップＳ７）。なお、排他制御フラグ開放予測エリアとは、メインメモリ２０内で排他制御フラグ解放予想時刻情報を格納する記憶領域のことである。
【００２５】
そして、メモリ処理部１１が排他制御フラグ解放予想時刻を書き込むと、処理部１４は、メモリ処理部１１を介して、排他制御フラグに関連付けられたデータを読み出し、当該データに対する処理を実行する（ステップＳ８）。処理部１４が処理を完了すると、メモリ処理部１１は、必要に応じてメインメモリ２０に処理部１４が処理を行ったデータを書き込む。
【００２６】
処理部１４がステップＳ８による処理を完了すると、排他制御部１２は、時刻制御部１３が示す現在の時刻を特定する（ステップＳ９）。すなわち、排他制御フラグを解放する時刻を特定する。次に、排他制御部１２は、ステップＳ４で特定した排他制御フラグを取得する時刻と、ステップＳ９で特定した排他制御フラグを解放する時刻との差を、排他制御時間として算出する（ステップＳ１０）。
【００２７】
排他制御部１２が排他制御時間を算出すると、メモリ処理部１１は、メインメモリ２０内の取得トレースエリアに、自プロセッサの識別情報及び実行中のプロセスの識別情報に関連付けて、排他制御時間情報を書き込む（ステップＳ１１）。
そして、メモリ処理部１１は、処理部１４が処理を行ったデータに関連付けられた排他制御フラグをＮＵＬＬに書き換えてメインメモリ２０に格納する（ステップＳ１２）。
【００２８】
他方、ステップＳ２で排他制御部１２が、排他制御フラグがＮＵＬＬでないと判定した場合（ステップＳ２：ＮＯ）、すなわち他のプロセッサ１０が排他制御フラグを取得している場合、メモリ処理部１１は、排他制御フラグの識別情報に基づいてメインメモリ２０内の排他制御フラグ開放予測エリアから排他制御フラグ解放予想時刻情報を読み出す（ステップＳ１３）。
【００２９】
次に、排他制御部１２は、時刻制御部１３が出力する現在の時刻が、読み出した排他制御フラグ解放予想時刻情報が示す時刻を経過しているか否かを判定する（ステップＳ１４）。排他制御部１２は、現在の時刻が、排他制御フラグ解放予想時刻情報が示す時刻を経過していないと判定した場合（ステップＳ１４：ＮＯ）、時刻制御部１３が出力する現在の時刻が、読み出した排他制御フラグ解放予想時刻情報が示す時刻になるまで待ち処理を行う（ステップＳ１５）。すなわち、排他制御フラグの取得処理の実行を抑止する。なお、プロセッサ１０は待ち処理を行っている間、実行中のプロセスを待機状態とし、他のプロセスを実行することができる。
排他制御部１２が待ち処理を終了すると、ステップＳ１に戻り、再度排他制御フラグの取得処理を行う。
【００３０】
他方、排他制御部１２は、現在の時刻が、排他制御フラグ解放予想時刻情報が示す時刻を経過していると判定した場合（ステップＳ１４：ＹＥＳ）、待ち処理を行わずにステップＳ１に戻り、再度排他制御フラグの取得処理を行う。
このように、ステップＳ１６で他のプロセッサ１０が排他制御フラグを解放すると予想される時刻まで排他制御フラグの取得処理を行わないことで、排他制御フラグの取得タイミングを最適化し、排他制御フラグの取得処理によるプロセッサ１０の性能低下を防止することができる。
また、排他制御時間情報を、排他制御フラグの解放毎に書き換えるため、排他制御時間情報には、マルチプロセッサ装置の直近の負荷状況下における排他制御フラグの保持時間が格納されることとなる。そのため、当該排他制御時間情報に基づいて排他制御フラグの取得処理の実行を抑止することで、負荷状況によって排他制御フラグの保持時間が変化する場合にも、適切な時刻まで排他制御フラグの取得処理の実行を抑止することができる。
【００３１】
また、排他制御時間情報をプロセッサ１０の識別情報に関連付けておくことで、プロセッサ１０それぞれに性能の差があることで、処理部１４による処理の実行時間が異なる場合にも、適切な時刻まで排他制御フラグの取得処理の実行を抑止することができる。
また、排他制御時間情報をプロセスの識別情報に関連付けておくことで、プロセス毎に処理の実行時間が異なる場合にも、適切な時刻まで排他制御フラグの取得処理の実行を抑止することができる。
【００３２】
図３は、マルチプロセッサ装置による排他制御動作の一例を示すシーケンス図である。
ここでは、プロセッサ１０−１とプロセッサ１０−２とが同一のデータに対する処理を行う場合を例に説明を行う。
プロセッサ１０−１のメモリ処理部１１は、まず、上述したステップＳ１〜Ｓ３により、排他制御フラグの取得処理を実行する（ステップＳ１０１）。ここでは、排他制御フラグがＮＵＬＬであるため、プロセッサ１０−１のメモリ処理部１１は、排他制御フラグに自プロセッサの識別番号「１０−１」を書き込むことで、排他制御フラグを取得する。次に、プロセッサ１０−１の排他制御部１２は、排他制御フラグを取得する時刻を特定する。そして、プロセッサ１０−１の排他制御部１２は、メインメモリ２０の取得トレースエリアから排他制御時間情報を読み出す（ステップＳ１０２）。次に、プロセッサ１０−１の排他制御部１２は、排他制御フラグ解放予想時刻を算出し、メモリ処理部１１は、当該排他制御フラグ解放予想時刻を示す排他制御フラグ解放予想時刻情報をメインメモリ２０の排他制御フラグ解放予想エリアに書き込む（ステップＳ１０３）。そして、プロセッサ１０−１の処理部１４は、取得した排他制御フラグに関連付けられたデータに対する処理を実行する。
【００３３】
他方、プロセッサ１０−２のメモリ処理部１１は、まず、上述したステップＳ１〜Ｓ３により、排他制御フラグの取得処理を実行する（ステップＳ２０１）。ここでは、上述した処理により、プロセッサ１０−１が排他制御フラグを取得しているため、プロセッサ１０−２のメモリ処理部１１は、排他制御フラグ解放予想時刻情報を読み出す（ステップＳ２０２）。そして、プロセッサ１０−２は、当該排他制御フラグ解放予想時刻情報が示す時刻まで待ち処理を行う。
【００３４】
プロセッサ１０−１の処理部１４がデータに対する処理を終了すると、プロセッサ１０−１の排他制御部１２は、時刻制御部１３が示す排他制御フラグを解放する時刻を特定し、排他制御フラグを取得する時刻と排他制御フラグを解放する時刻との差を、排他制御時間として算出する。次に、プロセッサ１０−１のメモリ処理部１１は、メインメモリ２０内の取得トレースエリアに、自プロセッサの識別情報及び実行中のプロセスの識別情報に関連付けて、排他制御時間情報を書き込む（ステップＳ１０４）。
そして、プロセッサ１０−１のメモリ処理部１１は、処理部１４が処理を行ったデータに関連付けられた排他制御フラグをＮＵＬＬに書き換えてメインメモリ２０に格納する（ステップＳ１０５）。
【００３５】
プロセッサ１０−２は、ステップＳ２０２で読み出した排他制御フラグ解放予想時刻情報が示す時刻まで待ち処理を行うと、プロセッサ１０−２のメモリ処理部１１は、再度排他制御フラグの取得処理を実行する（ステップＳ２０３）。ここでは、ステップＳ１０５で排他制御フラグがＮＵＬＬに書き換えられているため、プロセッサ１０−２のメモリ処理部１１は、排他制御フラグに自プロセッサの識別番号「１０−２」を書き込むことで、排他制御フラグを取得する。
【００３６】
このように、本実施形態によれば、排他制御フラグを用いて排他制御処理を行うことで、複数のプロセッサ間によるデータの同時更新による矛盾やデータの破壊を回避することができる。さらに、本実施形態によれば、プロセッサ１０−２が、プロセッサ１０−１が排他制御フラグを解放すると予想される時刻まで排他制御フラグの取得処理を行わないことで、排他制御フラグの取得タイミングを最適化し、排他制御フラグの取得処理によるプロセッサ１０−２の性能低下を防止することができる。
【００３７】
以上、図面を参照してこの発明の一実施形態について詳しく説明してきたが、具体的な構成は上述のものに限られることはなく、この発明の要旨を逸脱しない範囲内において様々な設計変更等をすることが可能である。
【００３８】
なお、本実施形態では、メインメモリ２０の排他制御フラグ解放予想エリアに排他制御フラグ解放予想時刻情報を格納し、プロセッサ１０が、当該排他制御フラグ解放予想時刻情報が示す時刻まで待ち処理を行うことで排他制御フラグの取得タイミングの最適化を計る例を説明したが、これに限られない。
例えば、排他制御フラグがプロセッサの識別番号とプロセスの識別番号とを示し、メインメモリ２０に排他制御フラグが取得された時刻を示す情報が格納されている場合、以下のような処理を行うことで、メインメモリ２０の排他制御フラグ解放予想エリアに排他制御フラグ解放予想時刻情報が格納されていない場合にも排他制御フラグの取得タイミングの最適化を計ることができる。
まず、プロセッサ１０のメモリ処理部１１は、メインメモリ２０の取得トレースエリアから排他制御フラグが示すプロセッサの識別番号とプロセスの識別番号とに関連付けられた排他制御時間を読み出す。次に、メモリ処理部１１は、メインメモリ２０から排他制御フラグが取得された時刻を示す情報を読み出す。そして、排他制御部１２は、排他制御フラグが取得された時刻に読み出した排他制御時間を加算して得られる時刻まで待ち処理を実行する。これにより、上述した実施形態と同じ時刻に排他制御フラグの取得処理を行うことができる。
【００３９】
また、本実施形態では、プロセッサ１０が、排他制御フラグ解放予想時刻情報が示す時刻まで待ち処理を行う場合を説明したが、これに限られず、例えば、排他制御フラグ解放予想時刻情報が示す時刻より所定の時間だけ前の時刻に待ち処理を終了するようにしても良い。これにより、他のプロセッサ１０が排他制御フラグを解放する直前に排他制御フラグの取得処理を開始する可能性が高くなり、排他制御フラグがＮＵＬＬを示す時間をより少なくすることができる。
また、例えば、排他制御フラグ解放予想時刻情報が示す時刻より所定の時間だけ後の時刻に待ち処理を終了するようにしても良い。これにより、他のプロセッサ１０が排他制御フラグを解放した後に排他制御フラグの取得処理を開始する可能性が高くなり、プロセッサ１０が排他制御フラグの取得に失敗する回数を少なくすることができる。
【００４０】
また、本実施形態では、メインメモリ２０の取得トレースエリアに、プロセッサ１０の識別情報とプロセスの識別情報とに関連付けて排他制御時間情報を格納する場合を説明したが、これに限られず、例えばプロセッサ１０の識別情報またはプロセスの識別情報の何れか一方のみに関連付けて格納しても良い。または、いずれの情報にも関連付けずに、排他制御時間情報を１つだけ格納するようにしても良い。
また、排他制御時間情報を、排他制御フラグに関連付けて格納するようにしても良い。この場合、排他制御フラグに関連付けられたデータ毎に処理時間が異なるときに、より適したタイミングで排他制御フラグの取得処理を行うことができる。
【００４１】
また、本実施形態では、排他制御時間情報をメインメモリ２０の取得トレースエリアに格納しておく場合を説明したが、これに限られず、例えばプロセッサ１０の各々の内部メモリに格納するようにしても良い。
また、本実施形態では、排他制御フラグが当該排他制御フラグを取得したプロセッサ１０の識別情報を示す場合を説明したが、これに限られず、例えば、排他制御フラグは、当該排他制御フラグが取得済みであるか否かのみを示す情報であっても良い。
【００４２】
また、本実施形態では、排他制御フラグの取得後に排他制御フラグを取得する時刻を特定する場合を説明したが、これに限られず、例えば、排他制御フラグの取得前、または排他制御フラグの取得と同時に時刻を特定しても良い。
また、本実施形態では、排他制御フラグの解放前に排他制御フラグを解放する時刻を特定する場合を説明したが、これに限られず、例えば、排他制御フラグの解放後、または排他制御フラグの解放と同時に時刻を特定しても良い。
【００４３】
上述のマルチプロセッサ装置はコンピュータシステムであり、上述した各処理部の動作は、プログラムの形式でコンピュータ読み取り可能な記録媒体に記憶されている。そして、このプログラムをコンピュータが読み出して実行することによって、上記処理が行われる。ここでコンピュータ読み取り可能な記録媒体とは、磁気ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、半導体メモリ等をいう。また、このコンピュータプログラムを通信回線によってコンピュータに配信し、この配信を受けたコンピュータが当該プログラムを実行するようにしても良い。
【００４４】
また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル（差分プログラム）であっても良い。
【符号の説明】
【００４５】
１０、１０−１〜１０−Ｎ…プロセッサ  １１…メモリ処理部  １２…排他制御部  １３…時刻制御部  １４…処理部  ２０…メインメモリ
【図１】
2011065452.tif 000003
【図２】
2011065452.tif 000004
【図３】
2011065452.tif 000005
【図４】
2011065452.tif 000006
【図５】
2011065452.tif 000007