(57)【要約】【課題】キャッシュコヒーレンシ保証の際の不必要なキャッシュクリアの回数を抑制して、計算機の性能の向上を図り得る、マルチプロセッサ計算機、キャッシュ整合性の保証方法、及びプログラムを提供する。【解決手段】メインメモリ４と、プロセッサ１０−１〜Ｎと、キャッシュメモリ２−１〜Ｎとを備えるマルチプロセッサ計算機１１において、メインメモリ４は、情報を資源１０−１〜Ｍとして記憶し、各プロセッサは、一のプロセッサがある資源に対して排他的制御によってアクセスするときに、アクセス対象の資源を最後に更新したプロセッサを特定する情報を用い、アクセス対象の資源が最後に更新された時刻ｔ１と、アクセス対象の資源を最後に更新したプロセッサのキャッシュメモリがクリアされた最新の時刻ｔ２と、一のプロセッサのキャッシュメモリがクリアされた最新の時刻ｔ３との関係に基づいて、キャッシュメモリをクリアする。【選択図】図１
2010170493.tif 000002
【特許請求の範囲】
【請求項１】
メインメモリと、前記メインメモリを共有する複数のプロセッサと、前記複数のプロセッサそれぞれ毎に設けられた複数のキャッシュメモリとを備えるマルチプロセッサ計算機であって、
前記メインメモリは、前記複数のプロセッサ間で共有される情報を複数個の資源として記憶し、
前記複数のプロセッサそれぞれは、前記複数個の資源のいずれかに対して排他的制御によってアクセスするときに、
一のプロセッサによってアクセス対象とされている前記資源を最後に更新したプロセッサを特定する情報を用い、
前記アクセス対象とされている資源が最後に更新された時刻ｔ１と、前記アクセス対象とされている資源を最後に更新したプロセッサに対応するキャッシュメモリがクリアされた最新の時刻ｔ２と、前記一のプロセッサに対応するキャッシュメモリがクリアされた最新の時刻ｔ３との関係に基づいて、
前記複数のキャッシュメモリの全部又は一部のクリアを実行する、ことを特徴とするマルチプロセッサ計算機。
【請求項２】
前記時刻ｔ１、前記時刻ｔ２、及び前記時刻ｔ３が、設定された基準時からの経過時間によって特定され、
前記複数のプロセッサそれぞれが、前記一のプロセッサによってアクセス対象とされている前記資源を最後に更新したプロセッサが、前記一のプロセッサ以外のプロセッサである場合に、前記時刻ｔ１≦前記時刻ｔ２≦前記時刻ｔ３の関係が成立するように、前記複数のキャッシュメモリの全部又は一部のクリアを実行する、請求項１に記載のマルチプロセッサ計算機。
【請求項３】
前記複数のプロセッサそれぞれが、前記時刻ｔ１≦前記時刻ｔ２≦前記時刻ｔ３の関係が既に成立している場合に、前記複数のキャッシュメモリの全部又は一部のクリアを実行しない、請求項２に記載のマルチプロセッサ計算機。
【請求項４】
前記複数のプロセッサそれぞれが、予め設定されたプログラムに従って、前記複数のキャッシュメモリのクリアを実行する、請求項１〜３のいずれかに記載のマルチプロセッサ計算機。
【請求項５】
前記複数のプロセッサそれぞれが、リードオンリーキャッシュ機構、ライトスルーキャッシュ機構、及びライトバックキャッシュ機構のうち何れかの機構を備えている、請求項１〜４のいずれかに記載のマルチプロセッサ計算機。
【請求項６】
メインメモリと、前記メインメモリを共有する複数のプロセッサと、前記複数のプロセッサそれぞれ毎に設けられた複数のキャッシュメモリとを備えるマルチプロセッサ計算機において、前記複数のキャッシュメモリの整合性を保証するための方法であって、
前記複数のプロセッサのいずれかが、前記メインメモリによって記憶され、且つ、前記複数のプロセッサ間で共有される情報で構成された複数個の資源のいずれかに対して、排他的制御によってアクセスするときに、
一のプロセッサによってアクセス対象とされている前記資源を最後に更新したプロセッサを特定する情報を用い、
前記アクセス対象とされている資源が最後に更新された時刻ｔ１と、前記アクセス対象とされている資源を最後に更新したプロセッサに対応するキャッシュメモリがクリアされた最新の時刻ｔ２と、前記一のプロセッサに対応するキャッシュメモリがクリアされた最新の時刻ｔ３との関係に基づいて、前記複数のキャッシュメモリの全部又は一部のクリアを
実行するステップを有する、ことを特徴とするキャッシュ整合性の保証方法。
【請求項７】
前記時刻ｔ１、前記時刻ｔ２、及び前記時刻ｔ３が、設定された基準時からの経過時間によって特定されており、
前記一のプロセッサによってアクセス対象とされている前記資源を最後に更新したプロセッサが、前記一のプロセッサ以外のプロセッサである場合に、前記時刻ｔ１≦前記時刻ｔ２≦前記時刻ｔ３の関係が成立するように、前記複数のキャッシュメモリの全部又は一部のクリアを実行する、請求項６に記載のキャッシュ整合性の保証方法。
【請求項８】
前記時刻ｔ１≦前記時刻ｔ２≦前記時刻ｔ３の関係が既に成立している場合に、前記複数のキャッシュメモリの全部又は一部のクリアを実行しない、請求項７に記載のキャッシュ整合性の保証方法。
【請求項９】
前記複数のプロセッサそれぞれが、リードオンリーキャッシュ機構、ライトスルーキャッシュ機構、及びライトバックキャッシュ機構のうち何れかの機構を備えている、請求項６〜８のいずれかに記載のキャッシュ整合性の保証方法。
【請求項１０】
メインメモリと、前記メインメモリを共有する複数のプロセッサと、前記複数のプロセッサそれぞれ毎に設けられた複数のキャッシュメモリとを備えるマルチプロセッサ計算機において、前記複数のプロセッサに、前記複数のキャッシュメモリの整合性を保証させるプログラムであって、
前記複数のプロセッサそれぞれに対して、
前記複数のプロセッサのいずれかが、前記メインメモリによって記憶され、且つ、前記複数のプロセッサ間で共有される情報で構成された複数個の資源のいずれかに対して、排他的制御によってアクセスするときに、
一のプロセッサによってアクセス対象とされている前記資源を最後に更新したプロセッサを特定する情報を用い、
前記アクセス対象とされている資源が最後に更新された時刻ｔ１と、前記アクセス対象とされている資源を最後に更新したプロセッサに対応するキャッシュメモリがクリアされた最新の時刻ｔ２と、前記一のプロセッサに対応するキャッシュメモリがクリアされた最新の時刻ｔ３との関係に基づいて、
前記複数のキャッシュメモリの全部又は一部のクリアを実行するステップを実行させる、ことを特徴とするプログラム。
【請求項１１】
前記時刻ｔ１、前記時刻ｔ２、及び前記時刻ｔ３が、設定された基準時からの経過時間によって特定されており、
前記一のプロセッサによってアクセス対象とされている前記資源を最後に更新したプロセッサが、前記一のプロセッサ以外のプロセッサである場合に、前記時刻ｔ１≦前記時刻ｔ２≦前記時刻ｔ３の関係が成立するように、前記複数のキャッシュメモリの全部又は一部のクリアを実行する、請求項１０に記載のプログラム。
【請求項１２】
前記時刻ｔ１≦前記時刻ｔ２≦前記時刻ｔ３の関係が既に成立している場合に、前記複数のキャッシュメモリの全部又は一部のクリアを実行しない、請求項１１に記載のプログラム。
【請求項１３】
前記複数のプロセッサそれぞれが、リードオンリーキャッシュ機構、ライトスルーキャッシュ機構、及びライトバックキャッシュ機構のうち何れかの機構を備えている、請求項１０〜１２のいずれかに記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチプロセッサ計算機、マルチプロセッサ計算機におけるキャッシュ整合性の保証方法、及び、これらを実現するためのプログラムに関する。
【背景技術】
【０００２】
一般に、ＨＰＣ（high-performance computing）分野における、ＳＭＰ（対象型マルチプロセッサ：Symmetric Multiprocessor）型計算機に代表されるマルチプロセッサ計算機においては、キャッシュコヒーレンシ（キャッシュ整合性）の保証が、重要である。多くのＳＭＰ型計算機では、キャッシュコヒーレンシの保証は、ハードウェアに委ねられている（例えば、特許文献１参照）。また、ＨＰＣ分野における、ベクトル型スーパーコンピュータ等のＳＭＰ型計算機においては、主としてハードウェアの実装上のコストや性能の観点から、キャッシュコヒーレンシの保証がソフトウェアに委ねられることもある。
【０００３】
ところで、通常、ＳＭＰ型計算機であっても、シングルプロセッサ計算機で提供されるレベルのキャッシュ制御命令（キャッシュバイパス命令、キャッシュクリア命令等）しか実装されていないという現状がある。このため、キャッシュコヒーレンシの保証をソフトウェアに委ねる場合、ＳＭＰ型計算機は、これらのキャッシュ制御命令を使用した処理を行って、プロセッサ毎のキャッシュ間の整合性を保証する必要がある。
【０００４】
具体的には、キャッシュ制御命令によってキャッシュコヒーレンシを保証する処理としては、複数のプロセッサがアクセスする可能性のある共有資源に対して、常に、キャッシュバイパスでアクセスを行う処理が挙げられる。また、一のプロセッサが、他のプロセッサが更新した可能性のある資源にアクセスする直前に、無条件にキャッシュクリアを行う処理も挙げられる。更に、他のプロセッサが参照する可能性のある資源にアクセスした直後に、無条件にキャッシュクリアを行う処理も挙げられる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特許第３２１９８１０号
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、上述の処理によってキャッシュコヒーレンシを保証しようとした場合は、いずれの処理においても、不必要なキャッシュクリアが行われる。このため、これらの不必要なキャッシュクリアは、ＳＭＰ型計算機においてオーバーヘッドとなり、ＳＭＰ型計算機の性能低下を招くという問題を発生させる。
【０００７】
また、不必要なキャッシュクリアによる性能低下の問題は、キャッシュコヒーレンシがハードウェアに委ねられている場合であっても生じている。例えば、上記の特許文献１に開示の計算機では、「最後に資源を更新したプロセッサの情報」のみを参照してキャッシュクリアの有無が判定され、キャッシュクリアが行われる。
【０００８】
よって、資源が更新された時刻とキャッシュがクリアされた時刻の順序関係は考慮されていないため、本来キャッシュクリアが必要ない場面でも、キャッシュクリアが行われてしまう。例えば、一のプロセッサが、他のプロセッサによるある資源の更新後に、その資源にアクセスする場合において、この間に既に一のプロセッサが別の要因でキャッシュク
リアを行っていても、他プロセッサの更新後に再度キャッシュクリアが行われる。このように、上記の特許文献１に開示の計算機においても、不要なキャッシュクリアが行われている。
【０００９】
本発明の目的は、上記問題を解決し、キャッシュコヒーレンシ保証の際の不必要なキャッシュクリアの回数を抑制して、計算機の性能の向上を図り得る、マルチプロセッサ計算機、キャッシュ整合性の保証方法、及びプログラムを提供することにある。
【課題を解決するための手段】
【００１０】
上記目的を達成するため、本発明におけるマルチプロセッサ計算機は、メインメモリと、前記メインメモリを共有する複数のプロセッサと、前記複数のプロセッサそれぞれ毎に設けられた複数のキャッシュメモリとを備えるマルチプロセッサ計算機であって、
前記メインメモリは、前記複数のプロセッサ間で共有される情報を複数個の資源として記憶し、
前記複数のプロセッサそれぞれは、前記複数個の資源のいずれかに対して排他的制御によってアクセスするときに、
一のプロセッサによってアクセス対象とされている前記資源を最後に更新したプロセッサを特定する情報を用い、
前記アクセス対象とされている資源が最後に更新された時刻ｔ１と、前記アクセス対象とされている資源を最後に更新したプロセッサに対応するキャッシュメモリがクリアされた最新の時刻ｔ２と、前記一のプロセッサに対応するキャッシュメモリがクリアされた最新の時刻ｔ３との関係に基づいて、
前記複数のキャッシュメモリの全部又は一部のクリアを実行する、ことを特徴とする。
【００１１】
また、上記目的を達成するため、本発明におけるキャッシュ整合性の保証方法は、メインメモリと、前記メインメモリを共有する複数のプロセッサと、前記複数のプロセッサそれぞれ毎に設けられた複数のキャッシュメモリとを備えるマルチプロセッサ計算機において、前記複数のキャッシュメモリの整合性を保証するための方法であって、
前記複数のプロセッサのいずれかが、前記メインメモリによって記憶され、且つ、前記複数のプロセッサ間で共有される情報で構成された複数個の資源のいずれかに対して、排他的制御によってアクセスするときに、
一のプロセッサによってアクセス対象とされている前記資源を最後に更新したプロセッサを特定する情報を用い、
前記アクセス対象とされている資源が最後に更新された時刻ｔ１と、前記アクセス対象とされている資源を最後に更新したプロセッサに対応するキャッシュメモリがクリアされた最新の時刻ｔ２と、前記一のプロセッサに対応するキャッシュメモリがクリアされた最新の時刻ｔ３との関係に基づいて、
前記複数のキャッシュメモリの全部又は一部のクリアを実行するステップを有する、ことを特徴とする。
【００１２】
また、上記目的を達成するため、本発明におけるプログラムは、メインメモリと、前記メインメモリを共有する複数のプロセッサと、前記複数のプロセッサそれぞれ毎に設けられた複数のキャッシュメモリとを備えるマルチプロセッサ計算機において、前記複数のプロセッサに、前記複数のキャッシュメモリの整合性を保証させるプログラムであって、
前記複数のプロセッサそれぞれに対して、
前記複数のプロセッサのいずれかが、前記メインメモリによって記憶され、且つ、前記複数のプロセッサ間で共有される情報で構成された複数個の資源のいずれかに対して、排他的制御によってアクセスするときに、
一のプロセッサによってアクセス対象とされている前記資源を最後に更新したプロセッサを特定する情報を用い、前記アクセス対象とされている資源が最後に更新された時刻ｔ１
と、前記アクセス対象とされている資源を最後に更新したプロセッサに対応するキャッシュメモリがクリアされた最新の時刻ｔ２と、前記一のプロセッサに対応するキャッシュメモリがクリアされた最新の時刻ｔ３との関係に基づいて、
前記複数のキャッシュメモリの全部又は一部のクリアを実行するステップを実行させる、ことを特徴とする。
【発明の効果】
【００１３】
以上のように本発明における、マルチプロセッサ計算機、キャッシュ整合性の保証方法、及びこれらを実現するためのプログラムによれば、キャッシュコヒーレンシ保証の際の不必要なキャッシュクリアの回数を抑制して、計算機の性能の向上を図ることができる。
【図面の簡単な説明】
【００１４】
【図１】図１は、本発明の実施の形態１におけるマルチプロセッサ計算機の概略構成を示すブロック図である。
【図２】図２は、本発明の実施の形態１におけるマルチプロセッサ計算機におけるロック処理を示すフロー図である。
【図３】図３は、本発明の実施の形態１におけるマルチプロセッサ計算機におけるアンロック処理を示すフロー図である。
【図４】図４は、本発明の実施の形態１におけるマルチプロセッサ計算機におけるアイドル処理を示すフロー図である。
【図５】図５は、本発明の実施の形態１におけるマルチプロセッサ計算機の動作の一例を示すタイムチャートである。
【図６】図６（ａ）は、一般的なキャッシュクリアのパターンを示すタイムチャートである。図６（ｂ）は、本発明の実施の形態１におけるキャッシュクリアのパターンを示すタイムチャートである。
【図７】図７は、本発明の実施の形態２におけるマルチプロセッサ計算機の概略構成を示すブロック図である。
【発明を実施するための形態】
【００１５】
（用語の定義）
最初に、本発明で使用する用語について、次のように定義する。先ず、本発明のマルチプロセッサ計算機において、演算器を、「プロセッサ」と表記し、主記憶装置を、「メインメモリ」と表記する。また、メインメモリより高速な記憶装置を、「キャッシュ（またはキャッシュメモリ）」と表記し、メインメモリ上に格納された情報の集合を「資源」と表記する。
【００１６】
また、メインメモリに記憶されている情報の一部を一時的にキャッシュ上に乗せることでプロセッサの動作を高速化する仕組みを、「キャッシュ機構」と表記する。キャッシュは、メインメモリに記憶されている情報の一部が一時的に複製される複数の領域（単位）から構成されており、この複数の領域それぞれを「キャッシュライン」と表記する。
【００１７】
また、メインメモリ上の一部の情報を空いているキャッシュラインに読み込むプロセッサの動作を、「キャッシュフィル」と表記する。更に、キャッシュラインに読み込まれた情報をメインメモリに書き戻して、開放する処理を、「キャッシュフラッシュ」と表記する。
【００１８】
メインメモリへのアクセスに際して、対象のメモリ領域がキャッシュ上に存在しており、メインメモリまでアクセスする必要がない場合を「キャッシュヒット」と表記する。一方、対象のメモリ領域がキャッシュ上に存在せず、メインメモリまでアクセスする必要がある場合を「キャッシュミスヒット」と表記する。
【００１９】
キャッシュヒット／キャッシュミスヒットに関わらず、キャッシュにアクセスせずに常にメインメモリにアクセスするプロセッサの動作を、「キャッシュバイパス」と表記する。また、全てのキャッシュラインをフラッシュするプロセッサの動作を、「キャッシュクリア」と表記する。
【００２０】
メインメモリの内容を読み出す時に、キャッシュヒットした場合はキャッシュの内容を読み出し、キャッシュミスヒットした場合は特定のアルゴリズムに従ってキャッシュフィルしてからキャッシュの内容を読み出す方式を、「リードキャッシュ」と表記する。また、キャッシュにおいて、メインメモリからの情報の読み込みのみを許可し、プロセッサによる情報の書き込みを禁止する方式を「リードオンリーキャッシュ」と表記する。
【００２１】
メインメモリに情報を書き込む時に、キャッシュヒットした場合はキャッシュの内容を書き込み、キャッシュミスヒットした場合は特定のアルゴリズムに従ってキャッシュフィルしてからキャッシュ上に情報を書き込み、その後に特定のアルゴリズムにしたがってメインメモリにキャッシュフラッシュする方式を、「ライトバックキャッシュ」と表記する。また、メインメモリに情報を書き込む時に、同時に、同じ情報をキャッシュ上にも書き込む方式を「ライトスルーキャッシュ」と表記する。
【００２２】
複数のプロセッサが１つのメインメモリを共有している対称型マルチプロセッサ計算機のことを「ＳＭＰ型計算機」と表記する。本発明で「ＳＭＰ型計算機」と表記した場合、特に断りのない限り、最も一般的な「プロセッサ毎にキャッシュが存在するＳＭＰ型計算機」の事を意味するものとする。
【００２３】
マルチプロセッサ計算機では各プロセッサのキャッシュの間で矛盾が発生しないように整合性を保証する必要があり、このような「キャッシュの整合性」の事を「キャッシュコヒーレンシ」と表記する。一般に、マルチプロセッサ計算機では、背景技術の欄でも述べたように、キャッシュコヒーレンシを保証する必要がある。
【００２４】
また、メインメモリの内容をキャッシュバイパスで読み込み、その値がある条件を満たす場合に別の値にキャッシュバイパスで書き換えるような一連の動作を、１サイクルで同時に実行する命令を「アトミック命令」と表記する。一般に、マルチプロセッサ計算機では、プロセッサ間で資源を排他的にアクセスするためにアトミック命令が使用される。
【００２５】
更に、ある資源を連続して排他的にアクセスするためには、その資源が特定プロセッサによって独占的に使用されている状態か否かを表す「ロックワード」が利用される。一般的にロックワードは資源ごとに存在し、メインメモリ上に置かれる事が多いことから、本発明においても、特に断りのない限り、「ロックワード」はメインメモリ上に置かれているものとする。
【００２６】
ロックワードには、特定プロセッサが排他的にアクセスしている事を意味する「ロック状態」と、そうではない「アンロック状態」の２つの状態がある。資源を連続して排他的にアクセスするためには、プロセッサは、先ず、アトミック命令でロックワードをロック状態にし、資源を更新した後に、ロックワードをアンロック状態に戻す一連の操作を実行する。
【００２７】
このように、ある資源に対応するロックワードをロック状態にする動作を「ロック処理」と表記し、アンロック状態にする動作を「アンロック処理」と表記する。また、ロック処理とアンロック処理とを合わせて「排他制御」と表記する。更に、ある資源に対するロック処理を実行する事を「資源をロックする」と表記し、ある資源に対するアンロック処
理を実行する事を「資源をアンロックする」と表記する。
【００２８】
また、命令の実行に要する最小の単位を「マシンクロック」と表記する。そして、各プロセッサからアクセス可能で、システム立ち上げ時に０（ゼロ）から開始し、マシンクロック単位で単調に増加する時刻を、「システムタイマ」と表記する。即ち、システムタイマは、システム立ち上げ時からの経過時間を表している。
【００２９】
（実施の形態１）
以下、本発明の実施の形態１におけるマルチプロセッサ計算機、キャッシュ整合性の保証方法、及びプログラムについて、図１〜図４を参照しながら説明する。最初に、本実施の形態１におけるマルチプロセッサ計算機の概略構成について図１を用いて説明する。図１は、本発明の実施の形態１におけるマルチプロセッサ計算機の概略構成を示すブロック図である。
【００３０】
図１に示す本実施の形態１におけるマルチプロセッサ計算機１１は、ＳＭＰ型計算機である。図１に示すように、本実施の形態１におけるマルチプロセッサ計算機１１は、メインメモリ４と、メインメモリ４を共有する複数のプロセッサ１−１〜１−Ｎと、複数のプロセッサそれぞれ毎に設けられた複数のキャッシュメモリ２−１〜２−Ｎとを備えている。また、メインメモリ４は、複数のプロセッサ間で共有される情報を複数個の資源１０−１〜１０−Ｍとして記憶している。ここで、Ｎはプロセッサ数、Ｍは資源数を表している。また、ｎは１≦ｎ≦Ｎである任意の自然数、ｍは１≦ｍ≦Ｍである任意の自然数とする。
【００３１】
また、図１に示すように、本実施の形態１では、マルチプロセッサ計算機１１は、一つのシステムタイマ３を備えている。システムタイマ３は、マシンクロック単位の分解能を持ち、システムの基準時からの経過時刻を表すタイマである。システムタイマ３の初期値は０に設定されており、システムの動作開始時を基準時とし、動作開始後、マシンクロック単位で増加する。
【００３２】
更に、メインメモリ４には、プロセッサ１−１〜１−Ｎが資源１０−１〜１０−Ｍに対してロック処理及びアンロック処理を行うための排他制御部９が構築されている。排他制御部９は、キャッシュクリアタイムスタンプ５―１〜５−Ｎ、ロックワード６−１〜６−Ｍ、資源更新スタンプ７−１〜７−Ｍ、及び資源更新プロセッサ８−１〜８−Ｍを備えている。また、キャッシュクリアタイムスタンプ５―１〜５−Ｎ、ロックワード６−１〜６−Ｍ、資源更新スタンプ７−１〜７−Ｍ、及び資源更新プロセッサ８−１〜８−Ｍは、メインメモリ４の記憶領域上に設けられている。
【００３３】
このうち、キャッシュクリアタイムスタンプ５―１〜５−Ｎは、各プロセッサに対応して設けられている。キャッシュクリアタイムスタンプ５―ｎは、プロセッサ１−ｎが最後にキャッシュクリアを行った時の時刻（システムタイマの値）を格納し、その初期値は０である。
【００３４】
また、ロックワード６−１〜６−Ｍは、各資源に対応して設けられている。ロックワード６−ｍは、資源１０−ｍがロックされているか又はアンロックされているかを特定する情報を格納する。具体的には、ロックワード６−ｍは、資源１０−ｍがロックされている場合は「１」を格納し、アンロックされている場合は「０」を格納する。ロックワード６−ｍの初期値は０である。
【００３５】
資源更新タイムスタンプ７−１〜７−Ｍ、及び資源更新プロセッサ８−１〜８−Ｍも、各資源に対応して設けられている。資源更新タイムスタンプ７−ｍは、資源１０−ｍが最
後に更新された時刻（システムタイマの値）を格納し、その初期値は０である。資源更新プロセッサ８−ｍは、資源１０−ｍを最後に更新したプロセッサを特定する情報（♯１〜♯Ｎ）を格納し、その初期値は０である。
【００３６】
また、このような構成において、プロセッサ１−１〜１−Ｎそれぞれは、資源１０−１〜１０−Ｍのいずれかに対して排他的制御によってアクセスするときに、以下の情報を用い、そして以下の時刻の関係に基づいて、キャッシュメモリのクリアを実行する。ここで、「情報」とは、「プロセッサ１−ｎによってアクセス対象とされている資源１−ｍを最後に更新したプロセッサを特定する情報」である。
【００３７】
また、「時刻の関係」とは、「アクセス対象とされている資源が最後に更新された時刻ｔ１と、アクセス対象とされている資源を最後に更新したプロセッサに対応するキャッシュメモリがクリアされた最新の時刻ｔ２と、プロセッサ１−ｎに対応するキャッシュメモリ２−ｎがクリアされた最新の時刻ｔ３との関係」である。なお、時刻ｔ１、時刻ｔ２、及び時刻ｔ３は、設定された基準時からの経過時間によって特定される時刻であり、本実施の形態１では、システムタイマの値が用いられる。
【００３８】
よって、プロセッサ１−ｎは、資源１―ｍにアクセスする際に、資源１―ｍを最後に更新したのが自身であるかどうかを判断する。そして、自身である場合は、プロセッサ１−ｎはキャッシュメモリ２−ｎのクリアをせず、不要なキャッシュクリアの実行が回避される。この結果、マルチプロセッサ計算機１１における性能の低下が抑制される。
【００３９】
また、プロセッサ１−１〜１−Ｎそれぞれは、例えば、「時刻ｔ１≦時刻ｔ２≦時刻ｔ３」の関係が成立するように、キャッシュメモリのクリアを実行する。具体的には、プロセッサ１−ｎは、資源１−ｍにアクセスする際に、それを最後に更新したプロセッサが他のプロセッサである場合は、初めに、資源１が最後に更新された時刻ｔ１を特定する。
【００４０】
そして、時刻ｔ１、他のプロセッサのキャッシュメモリがクリアされた時刻ｔ２、プロッセ１−ｎのキャッシュメモリ２−ｎがクリアされた時刻ｔ３が、「時刻ｔ１≦時刻ｔ２≦時刻ｔ３」の関係にあるように、キャッシュメモリがクリアされる。この場合、不要なキャッシュクリアの実行が回避され、マルチプロセッサ計算機１１における性能の低下が抑制される。
【００４１】
また、本実施の形態１では、プロセッサ１−１〜１−ｎそれぞれは、予め設定されたプログラムに従って、キャッシュメモリのクリアを実行する。つまり、本実施の形態１におけるマルチプロセッサ計算機１１では、キャッシュコヒーレンシの保証は、ハードウェアによって行われておらず、ソフトウェアによって行われている。このため、キャッシュコヒーレンシの保証にかかるコストの低減が図られている。
【００４２】
更に、本実施の形態１では、プロセッサ１−１〜１−ｎそれぞれは、リードオンリーキャッシュ機構、ライトスルーキャッシュ機構、及びライトバックキャッシュ機構のうち何れの機構を備えていても良い。
【００４３】
ところで、本実施の形態１で行われるキャッシュコヒーレンシの保証は、共有資源の一貫性をグローバルなクロックを利用して保証する方式の一形態と見なす事ができる。一般的には、共有資源の一貫性の保証にグローバルクロックを使用する場合、コストがかかり性能が得られないと考えられている。
【００４４】
しかし、ＨＰＣ分野では、再現性のある計算時間の算出や、高精度な並列度を得るために必要な同時実行時間の算出のために、全てのプロセッサからアクセス可能で、なおかつ
同期を取って順序関係を保証する時刻（システムタイマ）が低コストで取得可能な必要がある。また、ＨＰＣ分野では、そのような時刻を取得する機構を組み込む事が容易なようにハードウェアが設計されている。
【００４５】
従って、本実施の形態１においては、ＨＰＣ分野において利用される時刻（システムタイマ）をグローバルクロックとして採用する事で、通常考えられているよりも高い性能の、実用に耐えるレベルで、キャッシュコヒーレンシの保証を実現する。
【００４６】
また、一般的には、キャッシュコヒーレンシを保証しないようなハードウェアでは、各プロセッサは、自身に対応するキャッシュメモリをクリアする機能を有しているが、他のプロセッサのキャッシュメモリをクリアする機能は有していない。このため、プロセッサ間通信等による割込みを利用して、他のプロセッサのキャッシュメモリをクリアする機構をソフトウェアレベルで実装する必要がある。この場合、計算機としての性能を十分に得ることは困難とも考えられる。
【００４７】
しかし、ＨＰＣ分野では、高速なＩ／Ｏアクセスにおける効率的なキャッシュメモリが利用できるため、多くの場合、割込み機能の一環として、任意のプロセッサのキャッシュメモリをクリアする機構は低コストで実装されている。従って、ＨＰＣ分野では、このような他のプロセッサのキャッシュメモリをクリアする機能をキャッシュコヒーレンシの保証に利用できる。そして、本実施の形態１においても、このような機能を利用し、これにより、通常考えられているよりも高い性能の、実用に耐えるレベルで、キャッシュコヒーレンシの保証を実現している。
【００４８】
次に、図１に示したマルチプロセッサ計算機１１における動作について、図２〜図４を用いて説明する。図２は、本発明の実施の形態１におけるマルチプロセッサ計算機におけるロック処理を示すフロー図である。図３は、本発明の実施の形態１におけるマルチプロセッサ計算機におけるアンロック処理を示すフロー図である。図４は、本発明の実施の形態１におけるマルチプロセッサ計算機におけるアイドル処理を示すフロー図である。
【００４９】
ところで、本実施の形態１におけるキャッシュ整合性の保証方法は、図１に示した本実施の形態１におけるマルチプロセッサ計算機を動作させることによって実施される。このため、本実施の形態１におけるキャッシュ整合性の保証方法の説明は、以下のマルチプロセッサ計算機１の動作の説明に代える。
【００５０】
また、図２に示すロック処理と、図３に示すアンロック処理とは、任意のプロセッサ１−ｎが、任意の資源１０−ｍに対して排他的制御によってアクセスする場合の処理を示している。更に、図４に示すアイドル処理は、任意のプロセッサ１−ｎが、実行待ち処理が無い場合に実行される処理を示している。
【００５１】
図２に示すように、ロック処理においては、先ず、プロセッサ１−ｎは、ロックワード６−ｍに対してアトミック命令で排他的にアクセスし、ロックワード６−ｍがアンロック状態（値が０）であれば、ロック状態（値が１）に変更する（ステップＡ１）。
【００５２】
なお、プロッセサ１−ｎは、もし、ロックワード６−ｍがロック状態（値が１）であるならば、一定時間待ってから再度アトミック命令を使用して同様にアクセスする。そして、プロセッサ１−ｎは、ロックワード６−ｍが、アンロック状態であって、ロック状態に変更できるまで、アクセスを繰り返す。このような処理により、常に１つのプロセッサのみがロックワード６−ｍをロック状態にすることができる事になり、ロックワード６−ｍがロック状態になることにより、資源１０−ｍへの排他的なアクセスが保証される。    
【００５３】
次に、プロセッサ１−ｎは、自身の識別番号（♯ｎ）を変数ｎ１の値に設定し、更に、資源更新プロセッサ８−ｍに格納されている最後に資源１０−ｍを更新したプロセッサの識別番号をキャッシュバイパス命令で呼び出し、これを変数ｎ２の値に設定する（ステップＡ２）。
【００５４】
次に、プロセッサ１−ｎは、ｎ２＝＝０またはｎ２＝＝ｎ１であるかどうかを判定する（ステップＡ３）。ステップＡ３の判定の結果、ｎ２＝＝０またはｎ２＝＝ｎ１ならば、プロセッサ１−ｎが資源１０−ｍを最後に更新した後に、他のプロセッサが資源１０−ｍを更新していないこととなる。よって、プロセッサ１−ｎは、キャッシュクリアの必要がないと判断して、ロック処理を終了する。
【００５５】
一方、ステップＡ３の判定の結果、ｎ２＝＝０またはｎ２＝＝ｎ１が成立していない場合は、プロセッサ１−ｎは、ステップＡ４を実行する。ステップＡ４では、プロセッサ１−ｎは、資源更新タイムスタンプ７−ｍに格納されている値と、キャッシュクリアタイムスタンプ５−ｎ２に格納されている値とを、それぞれキャッシュバイパス命令で読み出して比較する。
【００５６】
ステップＡ４での判断の結果、資源更新タイムスタンプ７−ｍの値がキャッシュクリアタイムスタンプ５−ｎ２の値と同じか小さい場合は、プロセッサ１−ｎは、ステップＡ５に進む。これは、資源１０−ｍの更新後に、キャッシュメモリ２−ｎ２がクリアされているため、プロセッサ１−ｎは、プロセッサ１−ｎ２のキャッシュメモリ２−ｎ２をクリアする必要がないと判断するからである。
【００５７】
一方、ステップＡ４での判断の結果、資源更新タイムスタンプ７−ｍの値がキャッシュクリアタイムスタンプ５−ｎ２の値より大きい場合は、プロッセ１−ｎは、ステップＡ６に進む。
【００５８】
ステップＡ６では、プロセッサ１−ｎは、キャッシュクリアタイムスタンプ５−ｎ２にキャッシュバイパス命令でシステムタイマの値を設定する。更に、プロセッサ１−ｎは、プロセッサ１−ｎ２に対するキャッシュクリア命令を実行して、キャッシュメモリ２−ｎ２上の全てのキャッシュラインをフラッシュ（クリア）する。その後、プロセッサ１−ｎは、ステップＡ７を実行する。
【００５９】
次に、ステップＡ５では、プロセッサ１−ｎは、キャッシュクリアタイムスタンプ５−ｎ２の値と、キャッシュクリアタイムスタンプ５−ｎ１とをそれぞれキャッシュバイパス命令で読み出して比較する。
【００６０】
ステップＡ５での判断の結果、キャッシュフラッシュタイムスタンプｎ２の値がキャッシュクリアタイムスタンプｎ１の値と同じか小さい場合は、プロセッサ１−ｎは、ロック処理を終了する。この場合は、資源１−ｍの更新後にキャッシュメモリ２−ｎ１がクリアされているため、プロセッサ１−ｎ（１−ｎ１）は自身のキャッシャメモリ２−ｎ（２−ｎ１）をクリアする必要がないと判断するからである。
【００６１】
一方、ステップＡ５での判断の結果、キャッシュフラッシュタイムスタンプｎ２の値がキャッシュクリアタイムスタンプｎ１の値より大きい場合は、プロセッサ１−ｎは、ステップＡ７に進む。
【００６２】
ステップＡ７では、プロセッサ１−ｎは、キャッシュクリアタイムスタンプ５−ｎ１にキャッシュバイパス命令でシステムタイマの値を設定する。更に、プロセッサ１−ｎは、自身に対するキャッシュクリア命令を実行してキャッシュメモリ２−ｎ（２−ｎ１）上の
全てのキャッシュラインをフラッシュ（クリア）する。その後、プロセッサ１−ｎは、ロック処理を終了する。
【００６３】
このステップＡ７の実行により、「時刻ｔ１≦時刻ｔ２≦時刻ｔ３」の関係が成立するように、キャッシュメモリのクリアが行われることとなる。なお、時刻ｔ１は、資源更新タイムスタンプ７−ｍの値である。時刻ｔ２の値は、ステップＡ６が実行されない場合は、キャッシュククリアタイムスタンプ５−ｎ２の値、ステップＡ６が実行された場合はそのときのシステムタイマの値である。時刻ｔ３は、ステップＡ７が実行されたときのシステムタイマの値である。
【００６４】
また、図３に示すように、アンロック処理においては、先ず、プロセッサ１−ｎは、資源更新タイムスタンプ７−ｍにキャッシュバイパス命令によってシステムタイマの値を設定する（ステップＢ１）。
【００６５】
次に、プロセッサ１−ｎは、資源更新プロセッサ８−ｍにキャッシュバイパス命令によって、自身の識別番号（♯ｎ）を設定する（ステップＢ２）。これにより、資源１０−ｍは、資源更新プロセッサ８−ｍによって、資源更新タイムスタンプ７−ｍの値より前に更新されたのを最後に、その後更新されていない事が保証される。
【００６６】
その後、プロセッサ１−ｎは、ロックワード６−ｍの値をアンロック状態（値が０）に変更する。これにより、他のプロセッサは、ロックワード６−ｍをロック状態（値が１）に変更し、資源１０−ｍに対して排他的にアクセスすることができるようになる。
【００６７】
また、図４に示すように、アイドル処理においては、先ず、プロセッサ１−ｎは、キャッシュクリアタイムスタンプ５−ｎにキャッシュバイパス命令でシステムタイマの値を設定し、自身に対するキャッシュクリア命令を実行する（ステップＣ１）。これにより、キャッシュメモリ２−ｎ上の全てのキャッシュラインがフラッシュ（クリア）される。
【００６８】
次に、プロセッサ１−ｎは、実行待ち処理があるかどうかを判定する（ステップＣ２）。判定の結果、実行待ち処理がない場合は、実行待ち処理が見つかるまで待機状態となる。一方、判定の結果、実行待ち処理がある場合（見つかった場合）は、アイドル処理を終了する。
【００６９】
なお、図２〜図４に示した各ステップのうち、「システムタイマの値をメインメモリ４上に格納する行為」を含んでいる処理、具体的には、ステップＡ６、Ａ７、Ｂ１、及びＣ１の各処理は、複数のプロセッサ上で同時に実行される事がないものとする。
【００７０】
また、このことを実現する方式については、本明細書では特に規定されないが、例えば、メインメモリ４上にシステムに一意の資源「システムタイマ用ロックワード」を設け、これを利用した排他制御を行うことで実現することができる。即ち、ステップＡ６、Ａ７、Ｂ１、及びＣ１の各処理の開始時に「システムタイマ用ロックワード」をロックし、終了時にアンロックすることで実現する。
【００７１】
このように、ステップＡ６、Ａ７、Ｂ１、及びＣ１の各処理が同時に実行されないようにすれば、各タイムスタンプに（初期値の０を除いて）同じ値が格納される事も無いこととなる。
【００７２】
ここで、図５を用いて、図１に示したマルチプロセッサ計算機１１における動作を更に詳細に説明する。また、以下の説明においては、適宜図１〜図４を参照する。図５は、本発明の実施の形態１におけるマルチプロセッサ計算機の動作の一例を示すタイムチャート
である。また、図５においては、プロセッサ１−１、プロセッサ１−２、プロセッサ１−３の３つのプロセッサが、ある順番で資源１０−１、資源１０−２、資源１０−３の３つの資源を排他的にアクセスした場合に、キャッシュメモリのクリアが実行される箇所が示されている。
【００７３】
なお、図５の例では、説明を容易にする為に、各資源にアクセスする前後では必ずその資源に対するロック処理とアンロック処理が呼び出されているものとし、且つ、このロック処理及びアンロック処理にかかる時間は十分に小さく無視できるものとする。
【００７４】
例えば、プロセッサ１−１が、システムタイマ１〜３の間で資源を１０−１にアクセスしているが、ロック処理はシステムタイマ１の時点で実行され、アンロック処理はシステムタイマ３の時点で実行されているものとする。また、説明を容易にするために、図２に示したステップＡ６及びＡ７の処理に要する時間は十分に小さく、同一時間に行われるものとする。例えば、プロセッサ１−３は、システムタイマ７でステップＡ６とステップＡ７の処理を一度に実行しているものとする。
【００７５】
先ず、プロセッサ１−１に着目して図５の例を説明する。プロセッサ１−１は、システムタイマ１の時点で資源１０−１をロックするが、この時の資源更新プロセッサ８−１が格納している値は０である。よって、プロセッサ１−１は、キャッシュメモリ２−１のキャッシュクリアを実行しない。
【００７６】
次に、プロセッサン１−１は、システムタイマ３の時点で資源１０−１をアンロックするので、資源更新プロセッサ８−１は「１」を格納し、また、資源更新タイムスタンプ７−１はシステムタイマの値「３」を格納する。
【００７７】
次に、プロセッサ１−１は、システムタイマ４の時点で資源１０−３をロックするが、この時の資源更新プロセッサ８−３が格納している値は「０」である。このため、この場合も、プロセッサ１−１は、キャッシュメモリ２−１のキャッシュクリアを実行しない。
【００７８】
次に、プロセッサ１−１は、システムタイマ６の時点で資源１０−３をアンロックするので、資源更新プロセッサ８−３は「１」を格納し、また、資源更新タイムスタンプ７−３はシステムタイマの値「６」を格納する。
【００７９】
次に、プロセッサ１−１は、システムタイマ７の時点で資源１０−１をロックする。この時の資源更新プロセッサ８−１が格納している値は「１」、キャッシュクリアタイムスタンプ５−１が格納しているシステムタイマの値は「０」、資源更新タイムスタンプ７−１が格納しているシステムタイマの値は「３」である。そして、資源更新プロセッサ８−１が格納している値は、プロセッサ１−１自身の識別番号である「１」と同じ値であるため、プロセッサ１−１はキャッシュクリアを実行しない。
【００８０】
次に、プロセッサ１−１は、システムタイマ９の時点で資源１０−１をアンロックするので、資源更新プロセッサ８−１は「１」を格納し、また、資源更新タイムスタンプ７−１はシステムタイマの値「９」を格納する。
【００８１】
その後、プロセッサ１−１は、システムタイマ１０の時点でアイドル状態に移行する。キャッシュクリアタイムスタンプ５−１が格納するシステムタイマの値は「１０」に設定され、プロセッサ１−１は、キャッシュメモリ２−１をクリアする（図４参照）。
【００８２】
続いて、プロセッサ１−２に着目して図５の例を説明する。プロセッサ１−２は、先ず、システムタイマ２の時点で資源２をロックするが、この時の資源更新プロセッサ８−２
が格納している値は「０」である。よって、プロセッサ１−２は、キャッシュメモリ２−２のキャッシュクリアを実行しない。
【００８３】
次に、プロセッサ１−２は、システムタイマ５の時点で資源１０−２をアンロックするので、資源更新プロセッサ８−２は「２」を格納し、また、資源更新タイムスタンプ７−２はシステムタイマの値「５」を格納する。
【００８４】
次に、プロセッサ１−２は、システムタイマ１２の時点で資源１０−３をロックするが、この時の資源更新プロセッサ８−３が格納している値は「１」、資源更新タイムスタンプ７−３が格納しているシステムスタイマの値は「６」である。また、この時、キャッシュクリアタイムスタンプ５−１が格納しているシステムタイマの値は「１０」、キャッシュクリアタイムスタンプ５−２が格納しているシステムタイマの値は「０」である。
【００８５】
よって、ステップＡ４においてＹＥＳと判断され、ステップＡ５においてＮＯと判断されるので（図２参照）、システムタイマ１２の時点でキャッシュメモリ２−２はクリアされる。また、システムタイマ１２の時点でのキャッシュメモリ２−２のクリアにより、ｔ１≦ｔ２≦ｔ３が成立する。そして、キャッシュクリアタイムスタンプ５−２が格納するシステムスタンプの値は「１２」となる。
【００８６】
次に、プロセッサ１−２は、システムタイマ１４の時点で資源３をアンロックするので、資源更新プロセッサ８−３は「２」を格納し、また、資源更新タイムスタンプ７−３はシステムタイマの値「１４」を格納する。
【００８７】
次に、プロセッサ１−２は、システムタイマ１５の時点で資源２をロックするが、後述するように、この時の資源更新プロセッサ８−２が格納しているプロセッサの識別番号は「３」、資源更新タイムスタンプ７−２が格納しているシステムタイマの値は「１０」である。また、キャッシュクリアタイムスタンプ５−３が格納しているシステムタイマの値は「１１」、キャッシュクリアタイムスタンプ５−２が格納しているシステムタイマの値は「１２」である。
【００８８】
この場合は、システムタイマ１５の時点でキャッシュメモリのクリアを行わなくても、既にｔ１≦ｔ２≦ｔ３の関係が成立している（ステップＡ５においてＹＥＳと判断されるため）。よって、プロセッサ１−２によるキャッシュメモリ２−２及び２−３のクリアは行われない。
【００８９】
次に、プロセッサ１−２は、システムタイマ１８の時点で資源２をアンロックするので、資源更新タイムスタンプ７−２はシステムタイマの値「１８」を格納し、資源更新プロセッサ８−２は「２」を格納する。
【００９０】
続いて、プロセッサ１−３に着目して図５の例を説明する。プロセッサ１−３は、先ず、システムタイマ７の時点で資源２をロックするが、この時の資源更新プロセッサ８−２が格納している値は「２」である。また、このとき、資源更新タイムスタンプ７−２はシステムタイマの値「５」を格納し、キャッシュクリアタイムスタンプ５−３は「０」を格納している。
【００９１】
よって、ステップＡ４（図２参照）においてＮＯと判断される。この結果、プロセッサ１−３は、キャッシュメモリ２−２をクリアし（ステップＡ６）、更に、キャッシュメモリ２−３をクリアする（ステップＡ７）。そして、ｔ１≦ｔ２≦ｔ３が成立する。キャッシュクリアタイムスタンプ５−２及びキャッシュクリアタイムスタンプ５−３は、システムタイマの値「７」を格納する。
【００９２】
次に、プロセッサ１−３は、システムタイマ１０の時点で資源２をアンロックするので、資源更新プロセッサ８−２は「３」を格納し、資源更新タイムスタンプ７−２はシステムタイマの値「１０」を格納する。
【００９３】
次に、プロセッサ１−３は、システムタイマ１１の時点でアイドル状態に移行する。キャッシュクリアタイムスタンプ５−３が格納するシステムタイマの値は「１１」に設定され、プロセッサ１−３は、キャッシュメモリ２−３をクリアする（図４参照）。
【００９４】
次に、プロセッサ１−３は、システムタイマ１６の時点で資源１をロックするが、この時の資源更新プロセッサ８−１が格納している値は「１」であり、資源更新タイムスタンプ７−１が格納しているシステムタイマの値は「９」である。更に、この時、キャッシュクリアタイムスタンプ５−１が格納しているシステムタイマの値は「１０」、キャッシュクリアタイムスタンプ５−３が格納しているシステムタイマの値は「１１」である。このため、既にｔ１≦ｔ２≦ｔ３の関係が成立しているため、プロセッサ１−３によるキャッシュメモリ２−１及び２−３のクリアは行われない。
【００９５】
次に、プロセッサ１−３は、システムタイマ１８の時点で資源１をアンロックするので、資源更新プロセッサ８−１は「３」を格納し、資源更新タイムスタンプ７−１はシステムタイマの値「１８」を格納する。
【００９６】
以上のように、本実施の形態１では、プロセッサ１−ｎは、資源１０−ｍをロックする際に、「アクセス対象とされている資源が最後に更新された時刻ｔ１≦アクセス対象とされている資源を最後に更新したプロセッサに対応するキャッシュメモリがクリアされた最新の時刻ｔ２≦プロセッサ１−ｎに対応するキャッシュメモリ２−ｎがクリアされた最新の時刻ｔ３」が成立するように、キャッシュメモリのクリアを実行する。この結果、キャッシュコヒーレンシを保証するための各キャッシュメモリのクリアは必要最小限で済み、マルチプロセッサ計算機１１の性能の向上が図られる。
【００９７】
ここで、図６（ａ）及び（ｂ）を用いて、本発明の実施の形態１におけるマルチプロセッサ計算機で実行されるキャッシュクリアのパターンについて説明する。図６（ａ）は、一般的なキャッシュクリアのパターンを示すタイムチャートである。図６（ｂ）は、本発明の実施の形態１におけるキャッシュクリアのパターンを示すタイムチャートである。図６（ａ）及び図６（ｂ）は、プロセッサが資源をロックする際に、「資源を最後にアクセスしたプロセッサ」の情報と、時刻ｔ１〜ｔ３の関係とによって、キャッシュクリアがどのように行われるかを示している。
【００９８】
図６（ａ）及び図６（ｂ）に示すように、本実施の形態１では、プロセッサ間の排他制御である、ロック処理、アンロック処理及びアイドル処理に、キャッシュコヒーレンシを保証する処理が追加されている。即ち、本実施の形態では、「キャッシュの整合性を考慮する必要があるのは、複数のプロセッサが同時に更新する可能性のある資源にアクセスする時に限定される」という点が着目されている。そして、この着目点に基づくことで、キャッシュコヒーレンシの保証は、資源の排他制御の一環として低コストで実現されるのである。
【００９９】
また、本実施の形態１は、リードオンリーキャッシュ機構や、ライトスルーキャッシュ機構を備えたプロセッサに限定されず、ライトバックキャッシュ機構を備えたプロセッサにも適用でき、キャッシュコヒーレンシの保証を実現する。これは、本実施の形態１におけるマルチプロセッサ計算機１１では、他のプロセッサによるメインメモリへの書き込みの際のライトバックキャッシュ機構も意識した上で、キャッシュコヒーレンシを保証して
いるからである。
【０１００】
本発明の実施の形態１におけるプログラムは、コンピュータに、図２に示すステップＡ１〜Ａ７を実行させることができるプログラムであれば良い。このプログラムをコンピュータにインストールし、実行すれば、本実施の形態１におけるマルチプロセッサ計算機及びキャッシュ整合性の保証方法を具現化できる。但し、コンピュータとしては、メインメモリと、メインメモリを共有する複数のプロセッサと、複数のプロセッサそれぞれ毎に設けられた複数のキャッシュメモリとを備えるコンピュータが用いられる。
【０１０１】
（実施の形態２）
次に、本発明の実施の形態２におけるマルチプロセッサ計算機、キャッシュ整合性の保証方法、及びプログラムについて、図７を参照しながら説明する。図７は、本発明の実施の形態２におけるマルチプロセッサ計算機の概略構成を示すブロック図である。
【０１０２】
図７に示すように、本実施の形態２におけるマルチプロセッサ計算機２２は、図１に示した実施の形態１におけるマルチプロセッサ計算機１１と異なり、２種類のメインメモリを備えている。即ち、マルチプロセッサ計算機２２は、ハードウェアによってキャッシュコヒーレンシが保証されるメインメモリ２１と、ハードウェアによってキャッシュコヒーレンシが保証されないメインメモリ２３とを備えている。
【０１０３】
上述した実施の形態１におけるマルチプロセッサ計算機１１では、メインメモリの全ての領域に関してハードウェアによってキャッシュコヒーレンシが保証されないため、各プロッセは、排他制御部９へのアクセスを、常に、キャッシュバイパスによって行っている。
【０１０４】
これに対して、本実施の形態２におけるマルチプロセッサ計算機２２では、排他制御部２４は、キャッシュコヒーレンシ機能を有し、メインメモリ２２に配置されている。よって、メインメモリ２２に対しては、通常のアクセスにおいて、ハードウェアによってキャッシュコヒーレンシが保証される。なお、排他制御の対象である資源１０−１〜１０−Ｍは、メインメモリ２３に配置されている。
【０１０５】
つまり、本実施の形態２においても、マルチプロセッサ計算機２２における動作のアルゴリズムは、図２〜図６に示した実施の形態１における動作のアルゴリズムと同様である。但し、排他制御部２４がキャッシュコヒーレンシ機能を有するため、排他制御部２４に対する全てのアクセスに対してキャッシュコヒーレンシが保証される。このため、本実施の形態２によれば、実施の形態１と異なり、キャッシュバイパスによってアクセスしていた処理（ステップＡ２、Ａ４、Ａ５、Ａ６、Ａ７、Ｂ１、Ｂ２、Ｃ１）は、全て通常のアクセスによって行うことが可能となる。
【産業上の利用可能性】
【０１０６】
本発明は、ハードウェアによってキャッシュコヒーレンシが保証されない事を特徴とする、リードキャッシュ機構を備えたＳＭＰ型計算機に対して、プログラムによりキャッシュコヒーレンシを保証する用途に利用できる。また、本発明は、ハードウェアによってキャッシュコヒーレンシが保証されない事を特徴とする、ライトスルーキャッシュ機構を備えたＳＭＰ型計算機に対して、プログラムによりキャッシュコヒーレンシを保証する用途にも利用できる。更に、ハードウェアによってキャッシュコヒーレンシが保証されない事を特徴とする、ライトバックキャッシュ機構を備えたＳＭＰ型計算機に対して、プログラムによりキャッシュコヒーレンシを保証する用途にも利用できる。また、本発明で述べた排他制御部をハードウェアとして実装すれば、ハードウェアによってキャッシュコヒーレンシを保証する用途に利用できる。
【符号の説明】
【０１０７】
１−１〜１−Ｎ  プロセッサ
２−１〜２−Ｎ  キャッシュメモリ
３  システムタイマ
４  メインメモリ
５−１〜５−Ｎ  キャッシュクリアタイムスタンプ
６−１〜６−Ｍ  ロックワード
７−１〜７−Ｍ  資源更新タイムスタンプ
８−１〜８−Ｍ  資源更新プロセッサ
９  排他制御部
１０−１〜１０−Ｍ  資源
１１  マルチプロセッサ計算機（実施の形態１）
２１  マルチプロセッサ計算機（実施の形態２）
２２  メインメモリ
２３  メインメモリ
２４  排他制御部
【図１】
2010170493.tif 000003
【図２】
2010170493.tif 000004
【図３】
2010170493.tif 000005
【図４】
2010170493.tif 000006
【図５】
2010170493.tif 000007
【図６】
2010170493.tif 000008
【図７】
2010170493.tif 000009