説明

マルチプロセッサ装置、マルチプロセッサ装置における排他制御方法、及びプログラム

【課題】排他制御フラグの取得タイミングを最適化する。
【解決手段】排他制御部12は排他制御フラグが取得されているか否かを判定し、メモリ処理部11は排他制御フラグが取得されていない場合に、当該排他制御フラグを取得し、排他制御部は現在時刻と前回実行時の排他制御の処理時間よりフラグ開放予測時間を算出し記憶する。処理部14が排他制御フラグに関連付けられたデータに対する処理を終えると、メモリ処理部11は排他制御フラグを解放し、排他制御部12は排他制御フラグを取得した時刻と排他制御フラグを解放した時刻との差である排他制御時間を算出し記憶する。メモリ処理部は排他制御フラグがすでに取得されている場合に、フラグ開放予測時間を使用して取得タイミングを最適化する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、排他制御情報によって排他制御を行う複数のプロセッサと当該プロセッサが共有するメインメモリとを備えるマルチプロセッサ装置、マルチプロセッサ装置における排他制御方法、及びプログラムに関する。
【背景技術】
【0002】
従来、複数のプロセッサを備え、当該プロセッサによって処理を分散させることで処理能力を向上させるマルチプロセッサ装置が用いられている。マルチプロセッサ装置に備えられたプロセッサは、メインメモリを共有し、当該メモリ上のデータにアクセスすることで処理を行う。このようなマルチプロセッサ装置は、複数のプロセッサ間によるデータの同時更新による矛盾やデータの破壊を回避するため、排他制御を行っている。
【0003】
図4は、関連するマルチプロセッサ装置による排他制御動作を示すフローチャートである。
従来のマルチプロセッサ装置のプロセッサは、メインメモリに格納されているあるデータへのアクセスを行う場合、まず、当該データに関連付けられた排他制御フラグをメインメモリから読み出す(ステップS91)。ここで、排他制御フラグとは、関連付けられたデータが使用されているプロセッサの識別情報を示す情報であり、関連付けられたデータが使用されていない場合は、NULLを示すものとする。次に、読み出した排他制御フラグがNULLであるか否かを判定する(ステップS92)。
プロセッサは、排他制御フラグに他のプロセッサの識別情報が格納されていると判定した場合(ステップS92:NO)、排他制御フラグがNULLであると判定されるまで、ステップS91、S92の処理を繰り返す。
他方、排他制御フラグがNULLであると判定した場合(ステップS92:YES)、プロセッサは、排他制御フラグを自プロセッサの識別情報に書き換える(ステップS93)。これにより、他のプロセッサが同一のデータにアクセスすることを防ぐことができる。ここでは、ステップS91〜93の処理、すなわち排他制御フラグの読み出し及び書き換えを行う処理を、「排他制御フラグ取得処理」と定義する。また、排他制御フラグに自プロセッサの識別情報を書き込むことを、「排他制御フラグの取得」と定義とする。
【0004】
排他制御フラグ取得処理により、排他制御フラグに識別情報を書き込むと、プロセッサは、当該排他制御フラグに関連付けられたデータに対する処理を行う(ステップS94)。
プロセッサは、データに対する処理を終了すると、当該データに対応付けられた排他制御フラグをNULLに書き換える(ステップS95)。これにより、排他制御フラグが解放され、他のプロセッサが当該データへのアクセスを行うことができるようになる。
【0005】
図5は、関連するマルチプロセッサ装置による排他制御動作の一例を示すシーケンス図である。
ここでは、マルチプロセッサ装置がプロセッサAとプロセッサBとを備える場合を例に説明を行う。
プロセッサAは、まず、排他制御フラグ取得処理を実行する。すなわち、まず、プロセッサAは、メインメモリに格納されている排他制御フラグを読み出す。次に、プロセッサAは、読み出した排他制御フラグがNULLであるか否かを判定する。ここでは、排他制御フラグがNULLであるため、プロセッサAは、排他制御フラグに自プロセッサの識別番号「A」を書き込むことで、排他制御フラグを取得する。そして、プロセッサAは、取得した排他制御フラグに関連付けられたデータに対する処理を実行する。
【0006】
他方、プロセッサBも、排他制御フラグ取得処理を実行する。まず、プロセッサBは、メインメモリに格納されている排他制御フラグを読み出す。次に、プロセッサBは、読み出した排他制御フラグがNULLであるか否かを判定する。ここでは、上述した処理により、排他制御フラグに識別番号「A」が書き込まれているため、排他制御フラグがNULLになるまで、プロセッサBは排他制御フラグ取得処理を繰り返す。
【0007】
プロセッサAは、取得した排他制御フラグに関連付けられたデータに対する処理を終了すると、排他制御フラグをNULLに書き換える。
プロセッサBは、プロセッサAが排他制御フラグをNULLに書き換えた後の時刻に実行した排他制御フラグ取得処理により、排他制御フラグを取得する。そして、プロセッサBは、取得した排他制御フラグに関連付けられたデータに対する処理を実行し、取得した排他制御フラグに関連付けられたデータに対する処理を終了すると、排他制御フラグをNULLに書き換える。
このように、排他制御フラグを用いて排他制御処理を行うことで、複数のプロセッサ間によるデータの同時更新による矛盾やデータの破壊を回避することができる。
【0008】
なお、特許文献1に、排他制御フラグの取得タイミングを段階的に増加させることで、オーバーヘッドを減らす技術が開示されている。
また、特許文献2に、排他制御フラグを取得できなかった場合に、他のプロセッサが排他制御フラグを取得した時刻から、予め決められた排他制御時間の経過後に排他制御フラグの取得処理を行うことで、プロセッサの処理能力の低下を防止する技術が開示されている。
【先行技術文献】
【特許文献】
【0009】
【特許文献1】特開平02−056031号公報
【特許文献2】特開平03−059756号公報
【発明の概要】
【発明が解決しようとする課題】
【0010】
しかしながら、従来の排他制御フラグの取得方法では、排他制御フラグを取得できなかったプロセッサは、排他制御フラグがいつ解放されるかを認識できないため、断続的に排他制御フラグ取得処理を繰り返すこととなる。排他制御フラグ取得処理を行っている間、プロセッサは他の処理を行うことができないため、排他制御フラグ取得処理の増加によって性能低下が発生してしまうという問題があった。また、プロセッサ台数が多いコンピュータほど、性能の低下が顕著に発生することとなる。
【0011】
特許文献1に記載の技術によれば、排他制御フラグの取得タイミングを段階的に増加させることで、オーバーヘッドを減らすことができるが、排他制御フラグの取得タイミングを最適化するものではないため、排他制御フラグ取得処理による性能の低下を防ぐことはできない。
また、特許文献2に記載の技術によれば、予め決められた排他制御時間の経過後に排他制御フラグの取得処理を行うことで、排他制御フラグ取得処理による性能の低下を防ぐことができる。しかし、予め決められた排他制御時間を用いるため、プロセスによって排他制御時間が異なる場合や、プロセッサの性能が異なる場合など、排他制御フラグを保持する時間が一定とならない場合は、プロセスやプロセッサの種類に関わらず同一の排他制御時間を用いることとなるために、この手法によって排他制御フラグの取得タイミングを最適化することができないという問題がある。
本発明は上記の点に鑑みてなされたものであり、その目的は、排他制御フラグの取得タイミングを最適化するマルチプロセッサ装置、マルチプロセッサ装置における排他制御方法、及びプログラムを提供することにある。
【課題を解決するための手段】
【0012】
本発明は上記の課題を解決するためになされたものであり、排他制御情報によって排他制御を行う複数のプロセッサと当該プロセッサが共有するメインメモリとを備えるマルチプロセッサ装置であって、前記プロセッサは、前記メインメモリが記憶する所定のデータが何れかのプロセッサによって使用されているか否かを示す排他制御情報が、前記データが他のプロセッサによって使用されていることを示しているか否かを判定する排他制御判定部と、前記排他制御判定部によって、前記排他制御情報が、前記データが使用中でないことを示していると判定された場合に、当該排他制御情報を、前記データが使用中であることを示す情報に書き換える排他制御開始部と、前記排他制御開始部が前記排他制御情報を使用中であることを示す情報に書き換える時刻を特定する排他制御開始時刻特定部と、前記データの使用が完了したときに、前記排他制御解除部が前記排他制御情報を使用中でないことを示す情報に書き換える時刻を特定する排他制御終了時刻特定部と、前記排他制御開始時刻特定部が特定した時刻と前記排他制御終了時刻特定部が特定した時刻との差の時間である排他制御時間を算出する排他制御時間算出部と、前記排他制御情報を、前記データが使用中でないことを示す情報に書き換える排他制御解除部と、を備えることを特徴とする。
【0013】
また、本発明は、排他制御情報によって排他制御を行う複数のプロセッサと当該プロセッサが共有するメインメモリとを備えるマルチプロセッサ装置における排他制御方法であって、前記プロセッサの排他制御判定部は、前記メインメモリが記憶する所定のデータが何れかのプロセッサによって使用されているか否かを示す排他制御情報が、前記データが他のプロセッサによって使用されていることを示しているか否かを判定し、前記プロセッサの排他制御開始時刻特定部は、前記排他制御判定部によって、前記排他制御情報が、前記データが使用中でないことを示していると判定された場合に、当該排他制御情報を、前記データが使用中であることを示す情報に書き換える排他制御開始部と、前記排他制御開始部が前記排他制御情報を使用中であることを示す情報に書き換える時刻を特定し、前記プロセッサの排他制御終了時刻特定部は、前記データの使用が完了したときに、前記排他制御解除部が前記排他制御情報を使用中でないことを示す情報に書き換える時刻を特定し、前記プロセッサの排他制御時間算出部は、前記排他制御開始時刻特定部が特定した時刻と前記排他制御終了時刻特定部が特定した時刻との差の時間である排他制御時間を算出し、前記プロセッサの排他制御解除部は、前記排他制御情報を、前記データが使用中でないことを示す情報に書き換える、ことを特徴とする。
【0014】
また、本発明は、排他制御情報によって排他制御を行う複数のプロセッサと当該プロセッサが共有するメインメモリとを備えるマルチプロセッサ装置の各プロセッサを、前記メインメモリが記憶する所定のデータが何れかのプロセッサによって使用されているか否かを示す排他制御情報が、前記データが他のプロセッサによって使用されていることを示しているか否かを判定する排他制御判定部、前記排他制御判定部によって、前記排他制御情報が、前記データが使用中でないことを示していると判定された場合に、当該排他制御情報を、前記データが使用中であることを示す情報に書き換える排他制御開始部、前記排他制御開始部が前記排他制御情報を使用中であることを示す情報に書き換える時刻を特定する排他制御開始時刻特定部、前記データの使用が完了したときに、前記排他制御解除部が前記排他制御情報を使用中でないことを示す情報に書き換える時刻を特定する排他制御終了時刻特定部、前記排他制御開始時刻特定部が特定した時刻と前記排他制御終了時刻特定部が特定した時刻との差の時間である排他制御時間を算出する排他制御時間算出部、前記排他制御情報を、前記データが使用中でないことを示す情報に書き換える排他制御解除部、として機能させるためのプログラムである。
【発明の効果】
【0015】
本発明によれば、プロセッサの排他制御時間算出部は、排他制御開始時刻特定部が特定した時刻と前記排他制御終了時刻特定部が特定した時刻との差の時間である排他制御時間を算出する。そして、他のプロセッサが排他制御フラグを取得している場合、当該他のプロセッサが排他制御フラグを取得した時刻から算出した排他制御時間が経過した時刻の前後の時刻まで、前記排他制御判定部による処理を抑止する。これにより、他のプロセッサが排他制御フラグを解放する前後の時刻に排他制御フラグの取得タイミングを最適化することができる。
【図面の簡単な説明】
【0016】
【図1】本発明の一実施形態によるマルチプロセッサ装置の構成を示す概略ブロック図である。
【図2】マルチプロセッサの各プロセッサの動作を示すフローチャートである。
【図3】マルチプロセッサ装置による排他制御動作の一例を示すシーケンス図である。
【図4】従来のマルチプロセッサ装置による排他制御動作を示すフローチャートである。
【図5】従来のマルチプロセッサ装置による排他制御動作の一例を示すシーケンス図である。
【発明を実施するための形態】
【0017】
以下、図面を参照しながら本発明の実施形態について詳しく説明する。
図1は、本発明の一実施形態によるマルチプロセッサ装置の構成を示す概略ブロック図である。
マルチプロセッサ装置は、複数のプロセッサ10−1〜10−N(以下、プロセッサ全体を指す場合はプロセッサ10と表記する)とメインメモリ20を備える。プロセッサ10は、メモリ処理部11(排他制御開始部、排他制御解除部、排他制御時間読出部、排他制御終了予定時刻書込部、排他制御時間書込部)、排他制御部12(排他制御判定部、排他制御開始時刻特定部、排他制御終了時刻特定部、排他制御時間算出部、判定処理抑止部)、時刻制御部13、処理部14を備える。
メモリ処理部11は、メインメモリ20への読み出し処理及び書き込み処理を行う。
排他制御部12は、排他制御フラグの取得及び解放処理を実行する。ここで、排他制御フラグとは、当該フラグに関連付けられたデータが使用されているプロセッサの識別情報を示す情報であり、当該フラグに関連付けられたデータが使用されていない場合は、NULLを示すものとする。
【0018】
また、ここでは、排他制御フラグの読み出し及び書き換えを行う処理を、「排他制御フラグ取得処理」と定義する。また、排他制御フラグに自プロセッサの識別情報及び実行中のプロセスの識別情報を書き込むことを、「排他制御フラグの取得」と定義する。他方、排他制御フラグをNULLに書き換えることを、「排他制御フラグの解放」と定義する。
【0019】
時刻制御部13は、現在の時刻を出力する。時刻制御部13は、例えばマルチプロセッサ装置の内蔵時計を参照して時刻を出力するものであっても良いし、マルチプロセッサ装置の起動後の総クロック数を出力するものであっても良い。
処理部14は、排他制御フラグに関連付けられたデータに対する処理を行う。
【0020】
そして、排他制御部12は、メインメモリ20が記憶する所定のデータが何れかのプロセッサ10によって使用されているか否かを示す排他制御フラグが、当該排他制御フラグに関連付けられているデータが使用されていることを示すか否かを判定し、メモリ処理部11は、排他制御部12によって、排他制御フラグが当該排他制御フラグに関連付けられているデータが使用されていないことを示すと判定された場合に、当該排他制御フラグを、当該排他制御フラグに関連付けられているデータが使用されていることを示す情報に書き換える。次に、排他制御部12は、排他制御フラグを、当該排他制御フラグに関連付けられているデータが使用されていることを示す情報に書き換える時刻を特定する。
【0021】
処理部14が排他制御フラグに関連付けられたデータに対する処理を終えると、メモリ処理部11は、排他制御フラグを、当該排他制御フラグに関連付けられているデータが使用されていないことを示す情報に書き換え、排他制御部12は、排他制御フラグを、当該排他制御フラグに関連付けられているデータが使用されていることを示す情報に書き換える時刻を特定し、排他制御部12は、排他制御フラグを当該排他制御フラグに関連付けられているデータが使用されていることを示す情報に書き換える時刻と排他制御フラグを当該排他制御フラグに関連付けられているデータが使用されていることを示す情報に書き換える時刻との差の時間である排他制御時間を算出する。
これにより、排他制御フラグの取得タイミングを最適化する。
【0022】
次に、本実施形態によるマルチプロセッサ装置の各プロセッサの動作を説明する。
図2は、マルチプロセッサの各プロセッサの動作を示すフローチャートである。
プロセッサ10の処理部14がプロセスを実行することで、メインメモリ20に格納されているデータへのアクセス要求を出力すると、メモリ処理部11は、まず、メインメモリ20から、アクセス要求の対象となるデータに関連付けられた排他制御フラグを読み出す(ステップS1)。
次に、排他制御部12は、読み出した排他制御フラグがNULLであるか否かを判定する(ステップS2)。排他制御部12は、排他制御フラグがNULLであると判定した場合(ステップS2:YES)、排他制御フラグを、自プロセッサ10の識別情報に書き換える(ステップS3)。つまり、ステップS1〜S3の処理は、排他制御フラグの取得処理である。これにより、他のプロセッサ10が同一のデータにアクセスすることを防ぐことができる。
【0023】
排他制御部12は、排他制御フラグを書き換えると、時刻制御部13が示す現在の時刻を特定する(ステップS4)。すなわち、排他制御フラグを取得する時刻を特定する。なお、ここで特定した時刻の情報は、排他制御部12の内部メモリに格納しておく。
排他制御部12が時刻を特定すると、メモリ処理部11は、メインメモリ20内の取得トレースエリアから、自プロセッサ10の識別情報及び実行中のプロセスの識別情報に関連付けられた、排他制御時間情報を読み出す(ステップS5)。ここで、排他制御時間情報とは、プロセッサ10の識別情報とプロセスの識別情報とに関連付けられた情報であって、当該プロセッサ10による当該プロセスの前回の実行時に、排他制御フラグを取得した時刻から解放した時刻までの時間を示す情報である。また、プロセスの初回の実行時には、メインメモリ20に排他制御時間情報が格納されていないため、当該情報が0を示すものとして処理を行う。また、メインメモリ20内の取得トレースエリアとは、メインメモリ20内で排他制御時間情報を格納する記憶領域のことである。
【0024】
メモリ処理部11が排他制御時間情報を読み出すと、排他制御部12は、ステップS4で特定した時刻に排他制御時間情報を加算した時刻を、排他制御フラグ解放予想時刻として算出する(ステップS6)。次に、メモリ処理部11は、排他制御部12が算出した排他制御フラグ解放予想時刻を示す排他制御フラグ解放予想時刻情報を、排他制御フラグの識別情報に対応付けてメインメモリ20内の排他制御フラグ開放予測エリアに書き込む(ステップS7)。なお、排他制御フラグ開放予測エリアとは、メインメモリ20内で排他制御フラグ解放予想時刻情報を格納する記憶領域のことである。
【0025】
そして、メモリ処理部11が排他制御フラグ解放予想時刻を書き込むと、処理部14は、メモリ処理部11を介して、排他制御フラグに関連付けられたデータを読み出し、当該データに対する処理を実行する(ステップS8)。処理部14が処理を完了すると、メモリ処理部11は、必要に応じてメインメモリ20に処理部14が処理を行ったデータを書き込む。
【0026】
処理部14がステップS8による処理を完了すると、排他制御部12は、時刻制御部13が示す現在の時刻を特定する(ステップS9)。すなわち、排他制御フラグを解放する時刻を特定する。次に、排他制御部12は、ステップS4で特定した排他制御フラグを取得する時刻と、ステップS9で特定した排他制御フラグを解放する時刻との差を、排他制御時間として算出する(ステップS10)。
【0027】
排他制御部12が排他制御時間を算出すると、メモリ処理部11は、メインメモリ20内の取得トレースエリアに、自プロセッサの識別情報及び実行中のプロセスの識別情報に関連付けて、排他制御時間情報を書き込む(ステップS11)。
そして、メモリ処理部11は、処理部14が処理を行ったデータに関連付けられた排他制御フラグをNULLに書き換えてメインメモリ20に格納する(ステップS12)。
【0028】
他方、ステップS2で排他制御部12が、排他制御フラグがNULLでないと判定した場合(ステップS2:NO)、すなわち他のプロセッサ10が排他制御フラグを取得している場合、メモリ処理部11は、排他制御フラグの識別情報に基づいてメインメモリ20内の排他制御フラグ開放予測エリアから排他制御フラグ解放予想時刻情報を読み出す(ステップS13)。
【0029】
次に、排他制御部12は、時刻制御部13が出力する現在の時刻が、読み出した排他制御フラグ解放予想時刻情報が示す時刻を経過しているか否かを判定する(ステップS14)。排他制御部12は、現在の時刻が、排他制御フラグ解放予想時刻情報が示す時刻を経過していないと判定した場合(ステップS14:NO)、時刻制御部13が出力する現在の時刻が、読み出した排他制御フラグ解放予想時刻情報が示す時刻になるまで待ち処理を行う(ステップS15)。すなわち、排他制御フラグの取得処理の実行を抑止する。なお、プロセッサ10は待ち処理を行っている間、実行中のプロセスを待機状態とし、他のプロセスを実行することができる。
排他制御部12が待ち処理を終了すると、ステップS1に戻り、再度排他制御フラグの取得処理を行う。
【0030】
他方、排他制御部12は、現在の時刻が、排他制御フラグ解放予想時刻情報が示す時刻を経過していると判定した場合(ステップS14:YES)、待ち処理を行わずにステップS1に戻り、再度排他制御フラグの取得処理を行う。
このように、ステップS16で他のプロセッサ10が排他制御フラグを解放すると予想される時刻まで排他制御フラグの取得処理を行わないことで、排他制御フラグの取得タイミングを最適化し、排他制御フラグの取得処理によるプロセッサ10の性能低下を防止することができる。
また、排他制御時間情報を、排他制御フラグの解放毎に書き換えるため、排他制御時間情報には、マルチプロセッサ装置の直近の負荷状況下における排他制御フラグの保持時間が格納されることとなる。そのため、当該排他制御時間情報に基づいて排他制御フラグの取得処理の実行を抑止することで、負荷状況によって排他制御フラグの保持時間が変化する場合にも、適切な時刻まで排他制御フラグの取得処理の実行を抑止することができる。
【0031】
また、排他制御時間情報をプロセッサ10の識別情報に関連付けておくことで、プロセッサ10それぞれに性能の差があることで、処理部14による処理の実行時間が異なる場合にも、適切な時刻まで排他制御フラグの取得処理の実行を抑止することができる。
また、排他制御時間情報をプロセスの識別情報に関連付けておくことで、プロセス毎に処理の実行時間が異なる場合にも、適切な時刻まで排他制御フラグの取得処理の実行を抑止することができる。
【0032】
図3は、マルチプロセッサ装置による排他制御動作の一例を示すシーケンス図である。
ここでは、プロセッサ10−1とプロセッサ10−2とが同一のデータに対する処理を行う場合を例に説明を行う。
プロセッサ10−1のメモリ処理部11は、まず、上述したステップS1〜S3により、排他制御フラグの取得処理を実行する(ステップS101)。ここでは、排他制御フラグがNULLであるため、プロセッサ10−1のメモリ処理部11は、排他制御フラグに自プロセッサの識別番号「10−1」を書き込むことで、排他制御フラグを取得する。次に、プロセッサ10−1の排他制御部12は、排他制御フラグを取得する時刻を特定する。そして、プロセッサ10−1の排他制御部12は、メインメモリ20の取得トレースエリアから排他制御時間情報を読み出す(ステップS102)。次に、プロセッサ10−1の排他制御部12は、排他制御フラグ解放予想時刻を算出し、メモリ処理部11は、当該排他制御フラグ解放予想時刻を示す排他制御フラグ解放予想時刻情報をメインメモリ20の排他制御フラグ解放予想エリアに書き込む(ステップS103)。そして、プロセッサ10−1の処理部14は、取得した排他制御フラグに関連付けられたデータに対する処理を実行する。
【0033】
他方、プロセッサ10−2のメモリ処理部11は、まず、上述したステップS1〜S3により、排他制御フラグの取得処理を実行する(ステップS201)。ここでは、上述した処理により、プロセッサ10−1が排他制御フラグを取得しているため、プロセッサ10−2のメモリ処理部11は、排他制御フラグ解放予想時刻情報を読み出す(ステップS202)。そして、プロセッサ10−2は、当該排他制御フラグ解放予想時刻情報が示す時刻まで待ち処理を行う。
【0034】
プロセッサ10−1の処理部14がデータに対する処理を終了すると、プロセッサ10−1の排他制御部12は、時刻制御部13が示す排他制御フラグを解放する時刻を特定し、排他制御フラグを取得する時刻と排他制御フラグを解放する時刻との差を、排他制御時間として算出する。次に、プロセッサ10−1のメモリ処理部11は、メインメモリ20内の取得トレースエリアに、自プロセッサの識別情報及び実行中のプロセスの識別情報に関連付けて、排他制御時間情報を書き込む(ステップS104)。
そして、プロセッサ10−1のメモリ処理部11は、処理部14が処理を行ったデータに関連付けられた排他制御フラグをNULLに書き換えてメインメモリ20に格納する(ステップS105)。
【0035】
プロセッサ10−2は、ステップS202で読み出した排他制御フラグ解放予想時刻情報が示す時刻まで待ち処理を行うと、プロセッサ10−2のメモリ処理部11は、再度排他制御フラグの取得処理を実行する(ステップS203)。ここでは、ステップS105で排他制御フラグがNULLに書き換えられているため、プロセッサ10−2のメモリ処理部11は、排他制御フラグに自プロセッサの識別番号「10−2」を書き込むことで、排他制御フラグを取得する。
【0036】
このように、本実施形態によれば、排他制御フラグを用いて排他制御処理を行うことで、複数のプロセッサ間によるデータの同時更新による矛盾やデータの破壊を回避することができる。さらに、本実施形態によれば、プロセッサ10−2が、プロセッサ10−1が排他制御フラグを解放すると予想される時刻まで排他制御フラグの取得処理を行わないことで、排他制御フラグの取得タイミングを最適化し、排他制御フラグの取得処理によるプロセッサ10−2の性能低下を防止することができる。
【0037】
以上、図面を参照してこの発明の一実施形態について詳しく説明してきたが、具体的な構成は上述のものに限られることはなく、この発明の要旨を逸脱しない範囲内において様々な設計変更等をすることが可能である。
【0038】
なお、本実施形態では、メインメモリ20の排他制御フラグ解放予想エリアに排他制御フラグ解放予想時刻情報を格納し、プロセッサ10が、当該排他制御フラグ解放予想時刻情報が示す時刻まで待ち処理を行うことで排他制御フラグの取得タイミングの最適化を計る例を説明したが、これに限られない。
例えば、排他制御フラグがプロセッサの識別番号とプロセスの識別番号とを示し、メインメモリ20に排他制御フラグが取得された時刻を示す情報が格納されている場合、以下のような処理を行うことで、メインメモリ20の排他制御フラグ解放予想エリアに排他制御フラグ解放予想時刻情報が格納されていない場合にも排他制御フラグの取得タイミングの最適化を計ることができる。
まず、プロセッサ10のメモリ処理部11は、メインメモリ20の取得トレースエリアから排他制御フラグが示すプロセッサの識別番号とプロセスの識別番号とに関連付けられた排他制御時間を読み出す。次に、メモリ処理部11は、メインメモリ20から排他制御フラグが取得された時刻を示す情報を読み出す。そして、排他制御部12は、排他制御フラグが取得された時刻に読み出した排他制御時間を加算して得られる時刻まで待ち処理を実行する。これにより、上述した実施形態と同じ時刻に排他制御フラグの取得処理を行うことができる。
【0039】
また、本実施形態では、プロセッサ10が、排他制御フラグ解放予想時刻情報が示す時刻まで待ち処理を行う場合を説明したが、これに限られず、例えば、排他制御フラグ解放予想時刻情報が示す時刻より所定の時間だけ前の時刻に待ち処理を終了するようにしても良い。これにより、他のプロセッサ10が排他制御フラグを解放する直前に排他制御フラグの取得処理を開始する可能性が高くなり、排他制御フラグがNULLを示す時間をより少なくすることができる。
また、例えば、排他制御フラグ解放予想時刻情報が示す時刻より所定の時間だけ後の時刻に待ち処理を終了するようにしても良い。これにより、他のプロセッサ10が排他制御フラグを解放した後に排他制御フラグの取得処理を開始する可能性が高くなり、プロセッサ10が排他制御フラグの取得に失敗する回数を少なくすることができる。
【0040】
また、本実施形態では、メインメモリ20の取得トレースエリアに、プロセッサ10の識別情報とプロセスの識別情報とに関連付けて排他制御時間情報を格納する場合を説明したが、これに限られず、例えばプロセッサ10の識別情報またはプロセスの識別情報の何れか一方のみに関連付けて格納しても良い。または、いずれの情報にも関連付けずに、排他制御時間情報を1つだけ格納するようにしても良い。
また、排他制御時間情報を、排他制御フラグに関連付けて格納するようにしても良い。この場合、排他制御フラグに関連付けられたデータ毎に処理時間が異なるときに、より適したタイミングで排他制御フラグの取得処理を行うことができる。
【0041】
また、本実施形態では、排他制御時間情報をメインメモリ20の取得トレースエリアに格納しておく場合を説明したが、これに限られず、例えばプロセッサ10の各々の内部メモリに格納するようにしても良い。
また、本実施形態では、排他制御フラグが当該排他制御フラグを取得したプロセッサ10の識別情報を示す場合を説明したが、これに限られず、例えば、排他制御フラグは、当該排他制御フラグが取得済みであるか否かのみを示す情報であっても良い。
【0042】
また、本実施形態では、排他制御フラグの取得後に排他制御フラグを取得する時刻を特定する場合を説明したが、これに限られず、例えば、排他制御フラグの取得前、または排他制御フラグの取得と同時に時刻を特定しても良い。
また、本実施形態では、排他制御フラグの解放前に排他制御フラグを解放する時刻を特定する場合を説明したが、これに限られず、例えば、排他制御フラグの解放後、または排他制御フラグの解放と同時に時刻を特定しても良い。
【0043】
上述のマルチプロセッサ装置はコンピュータシステムであり、上述した各処理部の動作は、プログラムの形式でコンピュータ読み取り可能な記録媒体に記憶されている。そして、このプログラムをコンピュータが読み出して実行することによって、上記処理が行われる。ここでコンピュータ読み取り可能な記録媒体とは、磁気ディスク、光磁気ディスク、CD−ROM、DVD−ROM、半導体メモリ等をいう。また、このコンピュータプログラムを通信回線によってコンピュータに配信し、この配信を受けたコンピュータが当該プログラムを実行するようにしても良い。
【0044】
また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル(差分プログラム)であっても良い。
【符号の説明】
【0045】
10、10−1〜10−N…プロセッサ 11…メモリ処理部 12…排他制御部 13…時刻制御部 14…処理部 20…メインメモリ

【特許請求の範囲】
【請求項1】
排他制御情報によって排他制御を行う複数のプロセッサと当該プロセッサが共有するメインメモリとを備えるマルチプロセッサ装置であって、
前記プロセッサは、
前記メインメモリが記憶する所定のデータが何れかのプロセッサによって使用されているか否かを示す排他制御情報が、前記データが他のプロセッサによって使用されていることを示しているか否かを判定する排他制御判定部と、
前記排他制御判定部によって、前記排他制御情報が、前記データが使用中でないことを示していると判定された場合に、当該排他制御情報を、前記データが使用中であることを示す情報に書き換える排他制御開始部と、
前記排他制御開始部が前記排他制御情報を使用中であることを示す情報に書き換える時刻を特定する排他制御開始時刻特定部と、
前記データの使用が完了したときに、前記排他制御解除部が前記排他制御情報を使用中でないことを示す情報に書き換える時刻を特定する排他制御終了時刻特定部と、
前記排他制御開始時刻特定部が特定した時刻と前記排他制御終了時刻特定部が特定した時刻との差の時間である排他制御時間を算出する排他制御時間算出部と、
前記排他制御情報を、前記データが使用中でないことを示す情報に書き換える排他制御解除部と、
を備えることを特徴とするマルチプロセッサ装置。
【請求項2】
前記プロセッサは、
前記排他制御判定部によって、前記排他制御情報が、前記データが他のプロセッサによって使用されていることを示していると判定された場合に、当該他のプロセッサの排他制御開始時刻特定部が特定した時刻から、何れかのプロセッサの排他制御時間算出部が算出した排他制御時間が経過する時刻に基づいて、前記排他制御判定部による処理を抑止する判定処理抑止部
を備えることを特徴とする請求項1に記載のマルチプロセッサ装置。
【請求項3】
前記排他制御時間を示す排他制御時間情報は、前記メインメモリまたは前記プロセッサのキャッシュメモリの何れかに格納され、
前記プロセッサは、
前記排他制御時間情報を前記メインメモリまたは前記プロセッサのキャッシュメモリから読み出す排他制御時間読出部と、
前記排他制御開始時刻特定部が特定した時刻に、前記排他制御時間読出部が読み出した排他制御時間情報が示す排他制御時間を加算した時刻である排他制御終了予定時刻を算出し、当該排他制御終了予定時刻を、前記メインメモリに書き込む排他制御終了予定時刻書込部と、
前記排他制御時間算出部が排他制御時間を算出した後、前記メインメモリまたは自プロセッサのキャッシュメモリに、前記算出した排他制御時間を示す排他制御時間情報を書き込む排他制御時間書込部と、
を備え、
前記判定処理抑止部は、前記メインメモリから前記排他制御終了予定時刻を読み出し、当該排他制御終了予定時刻まで、前記排他制御判定部による処理を抑止する
ことを特徴とする請求項2に記載のマルチプロセッサ装置。
【請求項4】
前記排他制御情報は、前記データを使用しているプロセッサの識別情報を含み、
前記排他制御時間書込部は、自プロセッサの識別情報に関連付けて前記メインメモリに前記排他制御時間を書き込み、
前記排他制御時間読出部は、前記メインメモリが記憶する排他制御時間のうち、前記データを使用しているプロセッサの識別情報に関連付けられた排他制御時間を読み出す
ことを特徴とする請求項3に記載のマルチプロセッサ装置。
【請求項5】
前記排他制御情報は、前記データを使用しているプロセスの識別情報を含み、
前記排他制御時間書込部は、前記データを使用するプロセスの識別情報に関連付けて前記メインメモリに前記排他制御時間を書き込み、
前記排他制御時間読出部は、前記メインメモリが記憶する排他制御時間のうち、前記データを使用しているプロセスの識別情報に関連付けられた排他制御時間を読み出す
ことを特徴とする請求項3または請求項4の何れか1項に記載のマルチプロセッサ装置。
【請求項6】
排他制御情報によって排他制御を行う複数のプロセッサと当該プロセッサが共有するメインメモリとを備えるマルチプロセッサ装置における排他制御方法であって、
前記プロセッサの排他制御判定部は、前記メインメモリが記憶する所定のデータが何れかのプロセッサによって使用されているか否かを示す排他制御情報が、前記データが他のプロセッサによって使用されていることを示しているか否かを判定し、
前記プロセッサの排他制御開始時刻特定部は、前記排他制御判定部によって、前記排他制御情報が、前記データが使用中でないことを示していると判定された場合に、当該排他制御情報を、前記データが使用中であることを示す情報に書き換える排他制御開始部と、
前記排他制御開始部が前記排他制御情報を使用中であることを示す情報に書き換える時刻を特定し、
前記プロセッサの排他制御終了時刻特定部は、前記データの使用が完了したときに、前記排他制御解除部が前記排他制御情報を使用中でないことを示す情報に書き換える時刻を特定し、
前記プロセッサの排他制御時間算出部は、前記排他制御開始時刻特定部が特定した時刻と前記排他制御終了時刻特定部が特定した時刻との差の時間である排他制御時間を算出し、
前記プロセッサの排他制御解除部は、前記排他制御情報を、前記データが使用中でないことを示す情報に書き換える、
ことを特徴とする排他制御方法。
【請求項7】
排他制御情報によって排他制御を行う複数のプロセッサと当該プロセッサが共有するメインメモリとを備えるマルチプロセッサ装置の各プロセッサを、
前記メインメモリが記憶する所定のデータが何れかのプロセッサによって使用されているか否かを示す排他制御情報が、前記データが他のプロセッサによって使用されていることを示しているか否かを判定する排他制御判定部、
前記排他制御判定部によって、前記排他制御情報が、前記データが使用中でないことを示していると判定された場合に、当該排他制御情報を、前記データが使用中であることを示す情報に書き換える排他制御開始部、
前記排他制御開始部が前記排他制御情報を使用中であることを示す情報に書き換える時刻を特定する排他制御開始時刻特定部、
前記データの使用が完了したときに、前記排他制御解除部が前記排他制御情報を使用中でないことを示す情報に書き換える時刻を特定する排他制御終了時刻特定部、
前記排他制御開始時刻特定部が特定した時刻と前記排他制御終了時刻特定部が特定した時刻との差の時間である排他制御時間を算出する排他制御時間算出部、
前記排他制御情報を、前記データが使用中でないことを示す情報に書き換える排他制御解除部、
として機能させるためのプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate


【公開番号】特開2011−65452(P2011−65452A)
【公開日】平成23年3月31日(2011.3.31)
【国際特許分類】
【出願番号】特願2009−215905(P2009−215905)
【出願日】平成21年9月17日(2009.9.17)
【出願人】(000168285)エヌイーシーコンピュータテクノ株式会社 (572)