(57)【要約】    【課題】  ソフトウェア的なキャッシュコヒーレンシの保証処理を資源の排他制御の一環として実装することで、低コストでキャッシュコヒーレンシの保証を実現する。    【解決手段】  複数のプロセッサ１０−１〜１０−Ｎと、各プロセッサ毎に設けられるキャッシュメモリ２０−１〜２０−Ｎと、プロセッサ間で共有される情報としての資源５０−１〜５０−Ｍを格納するメインメモリ４０を備えるハードウェアによるキャッシュコヒーレンシを保証しない構成のマルチプロセッサ計算機であって、各プロセッサがメインメモリ４０の資源に対して排他制御によりアクセスする時に、資源の最後の更新が他のプロセッサによってなされ、かつ当該資源の最後の更新以降に自身のキャッシュメモリのクリア処理が行われていない場合にのみ、プロセッサのキャッシュメモリのクリア処理を実行する。【選択図】    図１
2006276901.tif 000002
【特許請求の範囲】
【請求項１】
複数のプロセッサと、各プロセッサ毎に設けられるキャッシュメモリと、複数のプロセッサ間で共有される情報としての資源を格納する記憶部を備える、ハードウェアによるキャッシュコヒーレンシを保証しない構成のマルチプロセッサ計算機において、
各前記プロセッサが前記記憶部の前記資源に対して排他制御によりアクセスする時に、
前記資源の最後の更新が他のプロセッサによってなされ、かつ当該資源の最後の更新以降に自身の前記キャッシュメモリのクリア処理が行われていない場合にのみ、当該プロセッサの前記キャッシュメモリのクリア処理を実行する機能を有することを特徴とするマルチプロセッサ計算機。
【請求項２】
前記プロセッサが前記記憶部の前記資源に対して排他制御によりアクセスする時に、
前記資源を最後に更新したプロセッサの識別情報を示す更新プロセッサ情報と、前記資源が最後に更新された時点を示す更新時間情報と、前記が最後に前記キャッシュメモリのキャッシュクリア処理を実行した時点を示すクリア時間情報とに基づいて、前記資源の最後の更新が他のプロセッサによってなされ、かつ当該資源の最後の更新以降に自身の前記キャッシュメモリのクリア処理が行われていないかどうかを判定することを特徴とする請求項１に記載のマルチプロセッサ計算機。
【請求項３】
前記更新プロセッサ情報と前記更新時間情報を、前記資源に対応させて前記記憶部に格納し、
前記クリア時間情報を、前記プロセッサ毎に対応させて前記記憶部に格納することを特徴とする請求項２に記載のマルチプロセッサ計算機。
【請求項４】
前記資源毎に対応する前記更新プロセッサ情報と前記更新時間情報と、前記プロセッサ毎に対応する前記クリア時間情報とを、前記記憶部以外の記憶手段に格納することを特徴とする請求項２に記載のマルチプロセッサ計算機。
【請求項５】
前記記憶部内に格納される複数の前記資源毎に、前記更新プロセッサ情報と前記更新時間情報を格納することを特徴とする請求項３又は請求項４に記載のマルチプロセッサ計算機。
【請求項６】
前記プロセッサが前記記憶部の前記資源に対して排他制御によりアクセスする時に、
当該プロセッサの識別情報と前記更新プロセッサ情報で示されるプロセッサの識別情報とが不一致であり、かつ、前記更新時間情報のタイマ値が前記クリア時間情報のタイマ値より大きい場合に、前記キャッシュメモリのクリア処理を実行することを特徴とする請求項２から請求項５の何れか１項に記載のマルチプロセッサ計算機。
【請求項７】
前記キャッシュメモリのクリア処理を実行する際に、前記クリア時間情報にその時点のタイマ値を設定し、
前記資源に対する排他制御を解除する際に、前記更新時間情報にその時点のタイマ値を設定し、かつ前記更新プロセッサ情報に資源の更新を行った前記プロセッサの識別情報を設定することを特徴とする請求項２から請求項６の何れか１項に記載のマルチプロセッサ計算機。
【請求項８】
マルチプロセッサ計算機として、対称型マルチプロセッサ計算機に適用したことを特徴とする請求項１から請求項７の何れか１項に記載のマルチプロセッサ計算機。
【請求項９】
複数のプロセッサと、各プロセッサ毎に設けられるキャッシュメモリと、複数のプロセッサ間で共有される情報としての資源を格納する記憶部を備える、ハードウェアによるキャッシュコヒーレンシを保証しない構成のマルチプロセッサ計算機におけるキャッシュコヒーレンシ保証方法であって、
各前記プロセッサが前記記憶部の前記資源に対して排他制御によりアクセスする時に、前記資源の最後の更新が他のプロセッサによってなされ、かつ当該資源の最後の更新以降に自身の前記キャッシュメモリのクリア処理が行われていない場合にのみ、当該プロセッサの前記キャッシュメモリのクリア処理を実行するステップを有することを特徴とするマルチプロセッサ計算機のキャッシュコヒーレンシ保証方法。
【請求項１０】
前記プロセッサが前記記憶部の前記資源に対して排他制御によりアクセスする時に、
前記資源を最後に更新したプロセッサの識別情報を示す更新プロセッサ情報と、前記資源が最後に更新された時点を示す更新時間情報と、前記が最後に前記キャッシュメモリのキャッシュクリア処理を実行した時点を示すクリア時間情報とに基づいて、前記資源の最後の更新が他のプロセッサによってなされ、かつ当該資源の最後の更新以降に自身の前記キャッシュメモリのクリア処理が行われていないかどうかを判定するステップを有することを特徴とする請求項９に記載のマルチプロセッサ計算機のキャッシュコヒーレンシ保証方法。
【請求項１１】
前記プロセッサが前記記憶部の前記資源に対して排他制御によりアクセスする時に、
当該プロセッサの識別情報と前記更新プロセッサ情報で示されるプロセッサの識別情報とを比較するステップと、
前記識別情報が不一致の場合に、前記更新時間情報のタイマ値が前記クリア時間情報のタイマ値より大きいかどうを判定するステップと、
前記更新時間情報のタイマ値が前記クリア時間情報のタイマ値より大きい場合に、前記キャッシュメモリのクリア処理を実行するステップを有することを特徴とする請求項１０に記載のマルチプロセッサ計算機キャッシュコヒーレンシ保証方法。
【請求項１２】
前記キャッシュメモリのクリア処理を実行する際に、前記クリア時間情報にその時点のタイマ値を設定するステップと、
前記資源に対する排他制御を解除する際に、前記更新時間情報にその時点のタイマ値を設定し、かつ前記更新プロセッサ情報に資源の更新を行った前記プロセッサの識別情報を設定するステップを有することを特徴とする請求項１０又は請求項１１に記載のマルチプロセッサ計算機キャッシュコヒーレンシ保証方法。
【請求項１３】
複数のプロセッサと、各プロセッサ毎に設けられるキャッシュメモリと、複数のプロセッサ間で共有される情報としての資源を格納する記憶部を備える、ハードウェアによるキャッシュコヒーレンシを保証しない構成のマルチプロセッサ計算機におけるキャッシュコヒーレンシの保証を実行するキャッシュコヒーレンシ保証プログラムであって、
前記各プロセッサ上で実行され、
各前記プロセッサが前記記憶部の前記資源に対して排他制御によりアクセスする時に、前記資源の最後の更新が他のプロセッサによってなされ、かつ当該資源の最後の更新以降に自身の前記キャッシュメモリのクリア処理が行われていない場合にのみ、当該プロセッサの前記キャッシュメモリのクリア処理を実行する機能を実行することを特徴とするマルチプロセッサ計算機のキャッシュコヒーレンシ保証プログラム。
【請求項１４】
前記プロセッサが前記記憶部の前記資源に対して排他制御によりアクセスする時に、
前記資源を最後に更新したプロセッサの識別情報を示す更新プロセッサ情報と、前記資源が最後に更新された時点を示す更新時間情報と、前記資源が最後に前記キャッシュメモリのキャッシュクリア処理を実行した時点を示すクリア時間情報とに基づいて、前記資源の最後の更新が他のプロセッサによってなされ、かつ当該資源の最後の更新以降に自身の前記キャッシュメモリのクリア処理が行われていないかどうかを判定する機能を実行することを特徴とする請求項１３に記載のマルチプロセッサ計算機のキャッシュコヒーレンシ保証プログラム。
【請求項１５】
前記プロセッサが前記記憶部の前記資源に対して排他制御によりアクセスする時に、
当該プロセッサの識別情報と前記更新プロセッサ情報で示されるプロセッサの識別情報とを比較する機能と、
前記識別情報が不一致の場合に、前記更新時間情報のタイマ値が前記クリア時間情報のタイマ値より大きいかどうを判定する機能と、
前記更新時間情報のタイマ値が前記クリア時間情報のタイマ値より大きい場合に、前記キャッシュメモリのクリア処理を行う機能を実行することを特徴とする請求項１４に記載のマルチプロセッサ計算機のキャッシュコヒーレンシ保証プログラム。
【請求項１６】
前記キャッシュメモリのクリア処理を実行する際に、前記クリア時間情報にその時点のタイマ値を設定する機能と、
前記資源に対する排他制御を解除する際に、前記更新時間情報にその時点のタイマ値を設定し、かつ前記更新プロセッサ情報に資源の更新を行った前記プロセッサの識別情報を設定する機能を実行することを特徴とする請求項１４又は請求項１５に記載のマルチプロセッサ計算機のキャッシュコヒーレンシ保証プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、キャッシュコヒーレンシを保証しない構成のマルチプロセッサ計算機に関し、特に、プロセッサ間の排他制御に連動してキャッシュコヒーレンシを保証することを可能とするマルチプロセッサ計算機、マルチプロセッサ計算機のキャッシメモリの整合性保証方法、キャッシメモリの整合性保証プログラムに関するものである。
【背景技術】
【０００２】
一般的な複数のプロセッサが１つのメインメモリを共有している対称型マルチプロセッサ計算機（ＳＭＰ型計算機：Symmetric Multiple Process）では、各プロセッサ毎のキャッシュメモリ間で矛盾が発生しないようにキャッシュの整合性（キャッシュコヒーレンシ）を保証する必要がある。
【０００３】
通常の対称型マルチプロセッサ計算機においては、ハードウェアによってキャッシュコヒーレンシが保証されている場合が多いが、ＨＰＣ（High Performance Computing：ハイパフォーマンスコンピューティング）分野におけるベクトル型スーパーコンピュータなどの、一部のＳＭＰ型計算機においては、主としてＨＰＣアーキテクチャにおけるベクトル演算器の実装の観点から、キャッシュコヒーレンシの保証がソフトウェア（プログラム）に委ねられている場合がある。
【０００４】
なお、ハードウェアによってキャッシュコヒーレンシを保証するＳＭＰ型計算機の例が、例えば特開平５−１４３４５４号公報（特許文献１）に開示されている。
【０００５】
そして、キャッシュコヒーレンシの保証がソフトウェア（プログラム）に委ねられているマルチプロセッサ計算機においては、シングルプロセッサ計算機と同程度のキャッシュ制御命令（キャッシュバイパス命令やキャッシュクリア命令など）しか実装されていないため、これらのキャッシュ制御命令を使用することにより、ソフトウェア（プログラム）によるプロセッサ毎のキャッシュメモリ間の整合性（キャッシュコヒーレンシ）を保証する処理がなされている。
【特許文献１】特開平５−１４３４５４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
上述したように、従来のＨＰＣ分野におけるキャッシュコヒーレンシがソフトウェアに委ねられているベクトル型スーパーコンピュータなどの一部のＳＭＰ型計算機においては、キャッシュバイパス命令やキャッシュクリア命令等の命令を使用して、ソフトウェア的にキャッシュの整合性を保証する処理が行われている。
【０００７】
このようなＳＭＰ型計算機では、プロセッサ毎のキャッシュメモリ間の整合性（キャッシュコヒーレンシ）を保証するために、他のプロセッサが更新した可能性のあるメインメモリ上の資源にアクセスする直前に、無条件にキャッシュクリア処理を行う方式を採用しており、この無条件にキャッシュクリアを行う処理がマルチプロセッサのオーバヘッドとなり、性能低下を招くという問題点があった。
【０００８】
本発明の目的は、上記のような従来の問題点を解決し、ソフトウェア的なキャッシュコヒーレンシの保証処理を資源の排他制御の一環として実装することで、低コストでキャッシュコヒーレンシの保証を実現することができる、マルチプロセッサ計算機、マルチプロセッサ計算機のキャッシの整合性保証方法、キャッシメモリの整合性保証プログラムを提案することにある。
【課題を解決するための手段】
【０００９】
上記目的を達成する本発明は、複数のプロセッサと、各プロセッサ毎に設けられるキャッシュメモリと、複数のプロセッサ間で共有される情報としての資源を格納する記憶部を備える、ハードウェアによるキャッシュコヒーレンシを保証しない構成のマルチプロセッサ計算機において、各前記プロセッサが前記記憶部の前記資源に対して排他制御によりアクセスする時に、前記資源の最後の更新が他のプロセッサによってなされ、かつ当該資源の最後の更新以降に自身の前記キャッシュメモリのクリア処理が行われていない場合にのみ、当該プロセッサの前記キャッシュメモリのクリア処理を実行する機能を備えることを特徴とする。
【００１０】
すなわち、本発明では、キャッシュコヒーレンシを保証する必要があるのは、複数のプロセッサが同時に更新する可能性のある資源にアクセスする時、すなわち排他制御を行う必要のある資源にアクセスする時に限定されることに着目し、一般的な排他制御であるロック処理とアンロック処理に、キャッシュコヒーレンシを保証する機能を追加し、排他制御の一環として低コストでキャッシュコヒーレンシを保証することを可能としている。
【００１１】
（作  用）
本発明によれば、各プロセッサが記憶部の資源に対して排他制御によりアクセスする場合、資源を最後に更新したプロセッサの識別情報を示す更新プロセッサ情報に基づいて、資源の最後の更新が他のプロセッサによってなされたことを判定し、資源が最後に更新された時点を示す更新時間情報と最後にキャッシュメモリのキャッシュクリア処理を実行した時点を示すクリア時間情報とに基づいて、資源の最後の更新以降に自身のキャッシュメモリのクリア処理が行われていないことを判定することにより、プロセッサのキャッシュメモリのクリア処理を実行する。
【発明の効果】
【００１２】
本発明のマルチプロセッサ計算機、マルチプロセッサ計算機のキャッシの整合性保証方法、キャッシメモリの整合性保証プログラムによれば、以下に述べるような効果が達成される。
【００１３】
ハードウェア的にキャッシュコヒーレンシを保証しない構成のＳＭＰ型計算機において、ソフトウェア的に低コストでキャッシュコヒーレンシを保証できると共に、キャッシュコヒーレンシの保証のためのキャッシュ制御によるオーバーヘッドを極力少なくすることで性能低下を抑止できることである。
【００１４】
その理由は、プロセッサ間の排他制御の一環として特定の条件で必要最小限のキャッシュクリア処理を実行する機能を追加するだけで、キャッシュコヒーレンシの保証を実現するためである。
【発明を実施するための最良の形態】
【００１５】
以下、本発明の好適な実施の形態について図面を参照して詳細に説明する。
【００１６】
（第１の実施の形態）
図１は、本発明の好適な実施の形態によるＳＭＰ型計算機の構成を示すブロック図である。
【００１７】
図１において、本実施の形態によるＳＭＰ型計算機は、一般的なプロセッサ毎にキャッシュメモリを有し、ハードウェアによってキャッシュコヒーレンシが保証されない構成のＳＭＰ型計算機であって、１つのメインメモリ（主記憶装置）４０と、１つのシステムタイマ３０と、複数（Ｎ個）のプロセッサ（プロセッサ１０−１〜１０−Ｎ）と、各プロセッサに対応した複数（Ｎ個）のキャッシュメモリ（キャッシュメモリ２０−１〜２０−Ｎ）を備えて構成されている。
【００１８】
なお、図１では、説明の便宜上、本発明の特徴的な構成要素のみを示しているが、その他のＳＭＰ型計算機の機能を実現するための一般的の構成要素を備えているのは言うまでもない。
【００１９】
ここで、Ｎ（２以上の任意の自然数）はプロセッサの数、Ｍ（１以上の任意の自然数）はメインメモリ上に格納される資源の数を示しており、ｎは任意の自然数（１≦ｎ≦Ｎ）、ｍは任意の自然数（１≦ｍ≦Ｍ）を表している。
【００２０】
キャッシュメモリ２０−１〜２０−Ｎは、メインメモリ４０の資源の一部が一時的に読み込まれる複数の領域（キャッシュライン）から構成されている。
【００２１】
各プロセッサ１０−１〜１０−Ｎによるメインメモリ４０へのアクセスに際しては、一般的なキャッシュ機能により、アクセス対象の資源の一部がキャッシュメモリ２０−１〜２０−Ｎ上に存在している場合（キャッシュヒット）、メインメモリ４０に対するアクセスがなされず、アクセス対象の資源の一部がキャッシュメモリ２０−１〜２０−Ｎ上に存在しない場合（キャッシュミスヒット）、メインメモリ４０に対するアクセスがなされる。
【００２２】
なお、以下の説明においては、キャッシュヒット／キャッシュミスヒットに関わらず、キャッシュメモリ２０−１〜２０−Ｎにアクセスすることなく常にメインメモリ４０にアクセスすることをキャッシュバイパスと称する。
【００２３】
また、キャッシュメモリのキャッシュラインをメインメモリ４０に書き戻すことをキャッシュフラッシュといい、全てのキャッシュラインをフラッシュすることをキャッシュクリアと称する。
【００２４】
また、メインメモリ４０の内容（資源５０−１〜５０−Ｎ）をキャッシュバイパスによって読み込み、その値がある条件を満たす場合に別の値（内容）にキャッシュバイパスで書き換えるような一連の動作を１サイクルで同時に実行するための命令としてアトミック命令（キャッシュバイパス命令）が用意されており、一般に、マルチプロセッサ計算機では、プロセッサ間で資源を排他的にアクセスするためにアトミック命令が使用される。
【００２５】
さらに、ある資源を連続して排他的にアクセスするためには、その資源が特定のプロセッサ１０−１〜１０−Ｎによって独占的に使用されている状態か否かを指定するためのロックワード情報が利用される。このロックワード情報は、各資源毎に設定されており、本実施の形態では、メインメモリ４０上に設定されている。
【００２６】
このロックワード情報には、特定プロセッサが排他的にアクセスしていることを意味するロック状態と、そうでないことを意味するアンロック状態の２つの状態が指定され、資源５０−１〜５０−Ｎを連続して排他的にアクセスするためには、まずアトミック命令を用いてロックワード情報をロック状態にし、資源を更新した後に、ロックワード情報をアンロック状態に戻す一連の操作を行う。
【００２７】
また、このようにある資源に対応するロックワードをロック状態にすることをロック処理と称し、アンロック状態にすることをアンロック処理と称し、また、ロック処理とアンロック処理による制御を排他制御と称する。
【００２８】
メインメモリ４０上には、各プロセッサ１０−１〜１０−Ｎの各キャッシュメモリ２０−１〜２０−Ｎに対応したＮ個のキャッシュクリアタイムスタンプ情報４１−１〜４１−Ｎが格納されている。
【００２９】
また、メインメモリ４０上には、各プロセッサでアクセスされる情報の集合を示すＭ個の資源５０−１〜５０Ｍが格納されており、各資源５０−１〜５０Ｍに対応してＭ個のロックワード情報５１−１〜５１−Ｍ、Ｍ個の資源更新タイムスタンプ情報５２−１〜５２−Ｍ、Ｍ個の資源更新プロセッサ情報５３−１〜５３−Ｍが格納されている。
【００３０】
システムタイマ３０は、マシンクロック単位の分解能を有し、システムの経過時間を計時するタイマである。このシステムタイマ３０のタイマ値の初期値は「０」であり、マシンクロック毎に一定量で増加していく。
【００３１】
キャッシュクリアタイムスタンプ情報４１−１〜４１−Ｎには、対応するプロセッサ１０−１〜１０Ｎが最後にキャッシュクリア処理を行った時のタイマ値（システムタイマ３０のタイマ値）の情報が設定され、初期値としては「０」が格納されている。
【００３２】
ロックワード情報５１−１〜５１−Ｍには、対応する資源５０−１〜５０Ｍがロック状態かまたはアンロック状態であるかを表す情報が設定され、ロックされている（ロック状態）時は値「１」、アンロックされている（アンロック状態）時は値「０」が設定される。また、ロックワード情報５１−１〜５１−Ｍの初期値は「０」である。
【００３３】
資源更新タイムスタンプ情報５２−１〜５２−Ｍには、対応する資源５０−１〜５０Ｍが最後に更新されたタイマ値（システムタイマ３０のタイマ値）の情報が設定され、初期値としては「０」が格納されている。
【００３４】
資源更新プロセッサ情報５３−１〜５３−Ｍには、対応する資源５０−１〜５０Ｍを最後に更新したプロセッサの識別子であるｎ（１〜Ｎの自然数）が設定され、初期値としては「０」が設定されている。なお、プロセッサ１０−１〜１０−Ｎには、それぞれのプロセッサを一意に識別するための識別子として「１」〜「Ｎ」が設定されている。
【００３５】
次に、図２、図３のフローチャートを参照して、上記のように構成される本実施の形態によるＳＭＰ型計算機における本実施の形態による、ロック処理とアンロック処理によるプロセッサ間の排他制御の一環としてキャッシュコヒーレンシを保証するための処理内容について説明する。図２は、任意のプロセッサ１０−ｎが任意の資源５０−ｍを排他的にアクセスする場合のロック処理における処理内容を説明するフローチャート、図３は、そのアンロック処理における処理内容を説明するフローチャートである。
【００３６】
図２、図３に示すロック処理とアンロック処理によるプロセッサ間の排他制御の一環としてキャッシュコヒーレンシを保証するための処理は、各プロセッサ１０−１〜１０−Ｎ上で実行されるキャッシュコヒーレンシ保証プログラムによってソフトウェア的に実現される。このキャッシュコヒーレンシ保証プログラムは、磁気ディスク、半導体メモリその他の記録媒体に格納され、その記録媒体からメインメモリ４０にロードされ、各プロセッサ１０−１〜１０−Ｎの動作を制御することにより、下記の各処理を実現する。
【００３７】
図２において、プロセッサ１０−ｎが任意の資源５０−ｍを排他的にアクセスする場合のロック処理は、ロックワードロック処理（Ａ１）と、キャッシュクリア判定処理（Ａ２）と、キャッシュクリア処理（Ａ３）で構成されている。
【００３８】
ロックワードロック処理（Ａ１）では、プロセッサ１０−ｎが資源５０−ｍに対応するロックワード情報５１−ｍに対してアトミック命令で排他的にアクセスし、ロックワード情報５１−ｍがアンロック状態であるかを判別する（ステップＡ１−１）。
【００３９】
ロックワード情報５１−ｍがアンロック状態「０」であればロック状態「１」に変更する（ステップＡ１−２）。
【００４０】
もし、ロックワード情報５１−ｍがロック状態「１」であれば、一定時間待ち合わせてから再度同じアトミック命令を使用して同様にアクセスし、ロックワード情報５１−ｍがアンロック状態「０」の時にロック状態「１」へ変更できるまでこれを繰り返す（ステップＡ１−１）。
【００４１】
これにより、常に１つのプロセッサのみがロックワード情報５１−ｍの設定内容をロック状態に設定できることになり、ロックワード情報５１−ｍをロック状態「１」にすることで資源５０−ｍに排他的にアクセスすることが保証できる。
【００４２】
その後、キャッシュクリア判定処理（Ａ２）で、資源５０−ｍにアクセスするためにキャッシュクリアが必要であるか否かを判定し、必要であればキャッシュクリア処理（Ａ３）を呼び出し、必要でなければロック処理を終了する。
【００４３】
キャッシュクリア判定処理（Ａ２）では、まず、資源更新プロセッサ情報５３−ｍの値をキャッシュバイパス命令を使用して読み出し（ステップＡ２−１）、読み出した値をプロセッサ１０−ｎの識別子「ｎ」と比較する（ステップＡ２−２）。
【００４４】
資源更新プロセッサ情報５３−ｍの値とプロセッサ１０−ｎの識別子「ｎ」とが一致していれば、プロセッサ１０−ｎが資源５０−ｍを更新した後に他のプロセッサが資源５０−ｍを更新していないので、キャッシュクリア処理の必要がないと判断し、ロック処理を終了する。
【００４５】
ステップＡ２−２で、資源更新プロセッサ情報５３−ｍの値とプロセッサ１０−ｎの識別子「ｎ」とが一致していない場合は、次に、資源更新タイムスタンプ情報５２−ｍとキャッシュクリアタイムスタンプ情報４１−ｎをそれぞれキャッシュバイパス命令で読み出し（ステップＡ２−３）、読み出した資源更新タイムスタンプ情報５２−ｍとキャッシュクリアタイムスタンプ情報４１−ｎの値を比較する（ステップＡ２−４）。
【００４６】
ステップＡ２−４で、資源更新タイムスタンプ情報５２−ｍの値がキャッシュクリアタイムスタンプ情報４１−ｎの値と同じか小さければ、資源５０−ｍの更新後にキャッシュメモリ２０−ｎがクリアされているためキャッシュクリアの必要がないと判断し、ロック処理を終了する。
【００４７】
そうでない場合（資源更新タイムスタンプ情報５２−ｍの値がキャッシュクリアタイムスタンプ情報４１−ｎの値より大きい場合）は、キャッシュクリア処理を行う必要があると判断し、次の、キャッシュクリア処理（Ａ３）に進む。
【００４８】
これにより、キャッシュクリアが必要最低限の場合にのみ実行されるようになり、プロセッサの性能低下を抑えることができる。
【００４９】
次に、キャッシュクリア処理（Ａ３）では、まず、キャッシュクリアタイムスタンプ情報４１−ｎにキャッシュバイパス命令でシステムタイマ３０の値を設定し（ステップＡ３−１）、次に、キャッシュクリア命令を実行してキャッシュメモリ２０−ｎ上の全てのキャッシュラインをフラッシュする（ステップＡ３−２））。
【００５０】
これにより、プロセッサ１０−ｎがキャッシュクリアタイムスタンプ情報４１−ｎの値以前に更新された資源にアクセスする場合にはキャッシュクリアが必要ないことが保証される。
【００５１】
図３において、プロセッサ１０−ｎが任意の資源５０−ｍを排他的にアクセスした後におけるアンロック処理は、資源更新情報設定処理（Ｂ１）と、ロックワードアンロック処理（Ｂ２）で構成されている。
【００５２】
資源更新情報設定処理（Ｂ１）では、まず、資源更新タイムスタンプ情報５２−ｍにキャッシュバイパス命令でシステムタイマ３０の値を設定し（ステップＢ１−１）、次に、資源更新プロセッサ情報５３−ｍの値にキャッシュバイパス命令でプロセッサ１０−ｎの識別子「ｎ」を設定する（ステップＢ１−２）。
【００５３】
これにより、資源５０−ｍが、資源更新プロセッサ情報５３−ｍの値によって資源更新タイムスタンプ情報５２−ｍの値より前に更新されたのを最後に、その後更新されていないことが保証される。
【００５４】
ロックワードアンロック処理（Ｂ２）では、プロセッサ１０−ｎがロックワード情報５１−ｍの値をアンロック状態「０」に変更する。
【００５５】
これにより、図２で説明したように、他のプロセッサがロックワード情報５１−ｍをロック状態「１」に変更し、資源５０−ｍに排他的にアクセスできるようになる。
【００５６】
以上により、キャッシュコヒーレンシを保証しない構成の本実施の形態のＳＭＰ型計算機において、キャッシュの排他制御の一環として低コストでキャッシュのコヒーレンシの保証を実現できるようになる。
【００５７】
（第１の実施の形態の動作）
次に、図２、図３のフローチャートと、図４のタイミングチャートを用いて本実施の形態の動作を詳細に説明する。
【００５８】
図４は、プロセッサ１０−１、プロセッサ１０−２、プロセッサ１０−３の３つのプロセッサが、ある順番で資源５０−１、資源５０−２、資源５０−３の３つの資源を排他的にアクセスした場合に、キャッシュクリアがどの時点で実行されるかを表している。
【００５９】
なお、説明を分かり易くするために、資源にアクセスする前後において必ずその資源に対するロック処理とアンロック処理が呼び出されているものとし、かつそのロック処理及びアンロック処理に要する時間は十分に短く無視できるものであると仮定する。
【００６０】
例えば、プロセッサ１０−１が資源５０−１をシステムタイマ３０のタイマ値１〜３の間アクセスしているが、ロック処理はシステムタイマ３０のタイマ値「１」の時点で実行され、アンロック処理はシステムタイマ３０のタイマ値「３」の時点で実行されているものとする。
【００６１】
まず、プロセッサ１０−１と資源５０−１について説明する。
【００６２】
プロセッサ１０−１は、システムタイマ３０のタイマ値「１」の時点で資源５０−１をロックするが、この時のキャッシュクリアタイムスタンプ情報４１−１は「０」、資源更新タイムスタンプ情報５２−１は「０」、資源更新プロセッサ情報５３−１は「０」であるため、キャッシュクリアは行われない。
【００６３】
次に、システムタイマ３０のタイマ値「３」の時点で資源５０−１をアンロックするので、資源更新タイムスタンプ情報５２−１は「３」、資源更新プロセッサ情報５３−１は「１」となる。
【００６４】
次に、システムタイマ３０のタイマ値「４」の時点で資源５０−３をロックするが、この時のキャッシュクリアタイムスタンプ情報４１−１は「０」、資源更新タイムスタンプ情報５２−３は「０」、資源更新プロセッサ情報５３−３は「０」であるため、キャッシュクリアは行われない。
【００６５】
次に、システムタイマ３０のタイマ値「６」の時点で資源５０−３をアンロックするので、資源更新タイムスタンプ情報５２−３は「６」、資源更新プロセッサ情報５３−３は「１」となる。
【００６６】
次に、システムタイマ３０のタイマ値「７」の時点で資源５０−１をロックするが、この時のキャッシュクリアタイムスタンプ情報４１−１は「０」、資源更新タイムスタンプ情報５２−１は「３」、資源更新プロセッサ情報５３−１は「１」であり、資源更新プロセッサ情報５３−１の値が自プロセッサ１０−１の識別子「１」と同じ値であるためキャッシュクリアは行われない。
【００６７】
そして、システムタイマ３０のタイマ値「１１」の時点で資源５０−１をアンロックするので、資源更新タイムスタンプ情報５２−１は「１１」、資源更新プロセッサ情報５３−１は「１」となる。
【００６８】
このようにプロセッサ１０−１が２度目に資源５０−１をロックする時点でキャッシュクリアが実行されることはない。
【００６９】
次に、プロセッサ１０−２と資源５０−２について説明する。
【００７０】
プロセッサ１０−２は、システムタイマ３０のタイマ値「２」の時点で資源５０−２をロックするが、この時のキャッシュクリアタイムスタンプ情報４１−２は「０」、資源更新タイムスタンプ情報５２−２は「０」、資源更新プロセッサ情報５３−２は「０」であるため、キャッシュクリアは行われない。
【００７１】
次に、システムタイマ３０のタイマ値「５」の時点で資源５０−２をアンロックするので、資源更新タイムスタンプ情報５２−２は「５」、資源更新プロセッサ情報５３−２は「２」となる。
【００７２】
次に、システムタイマ３０のタイマ値「１０」の時点で資源５０−３をロックするが、この時のキャッシュクリアタイムスタンプ情報４１−２は「０」、資源更新タイムスタンプ情報５２−３は「６」、資源更新プロセッサ情報５３−３は「１」であるため、資源更新プロセッサ情報５３−３の値が自プロセッサ１０−２の識別子「２」と異なり、かつ資源更新タイムスタンプ情報５２−３の値よりもキャッシュクリアタイムスタンプ情報４１−２の値の方が小さいためキャッシュクリアが行われ、キャッシュクリアタイムスタンプ情報４１−２が「１０」に設定される。
【００７３】
次に、システムタイマ３０のタイマ値「１３」の時点で資源５０−３をアンロックするので、資源更新タイムスタンプ情報５２−３は「１３」、資源更新プロセッサ情報５３−３は「２」となる。
【００７４】
次に、システムタイマ３０のタイマ値「１４」の時点で資源５０−２をロックするが、この時のキャッシュクリアタイムスタンプ情報４１−２は「１０」、資源更新タイムスタンプ情報５２−２は「９」、資源更新プロセッサ情報５３−２は「３」であるため、資源更新プロセッサ情報５３−２の値が自プロセッサ１０−２の識別子「２」と異なっているが、資源更新タイムスタンプ情報５２−２の値よりキャッシュクリアタイムスタンプ情報４１−２の値が小さくないのでキャッシュクリアは行われない。
【００７５】
次に、システムタイマ３０のタイマ値「１７」の時点で資源５０−２をアンロックするので、資源更新タイムスタンプ情報５２−２は「１７」、資源更新プロセッサ情報５３−２は「２」となる。
【００７６】
このようにプロセッサ１０−２が２度目に資源５０−２をロックする時点で、後述するようにプロセッサ１０−３がシステムタイマ３０のタイマ値「６」〜「９」において資源５０−２を更新していても、プロセッサ１０−２はシステムタイマ３０のタイマ値「１０」で既にキャッシュクリアを行っているので、再度キャッシュクリアが実行されることはない。
【００７７】
次に、プロセッサ１０−３と資源５０−３について説明する。
【００７８】
プロセッサ１０−３は、システムタイマ３０のタイマ値「６」の時点で資源５０−２をロックするが、この時のキャッシュクリアタイムスタンプ情報４１−３は「０」、資源更新タイムスタンプ情報５２−２は「５」、資源更新プロセッサ情報５３−２は「２」であるため、資源更新プロセッサ情報５３−２の値が自プロセッサ１０−３の識別子「３」と異なり、かつ資源更新タイムスタンプ情報５２−２の値よりもキャッシュクリアタイムスタンプ情報４１−３の値の方が小さいためキャッシュクリアが行われ、キャッシュクリアタイムスタンプ情報４１−３が「６」に設定される。
【００７９】
次に、システムタイマ３０のタイマ値「９」の時点で資源５０−２をアンロックするので、資源更新タイムスタンプ情報５２−２は「９」、資源更新プロセッサ情報５３−２は「３」となる。
【００８０】
次に、システムタイマ３０のタイマ値「１２」の時点で資源５０−１をロックするが、この時のキャッシュクリアタイムスタンプ情報４１−３は「６」、資源更新タイムスタンプ情報５２−１は「１１」、資源更新プロセッサ情報５３−１は「１」であるため、資源更新プロセッサ情報５３−１の値が自プロセッサ１０−３の識別子「３」と異なり、かつ資源更新タイムスタンプ情報５２−１の値よりもキャッシュクリアタイムスタンプ情報４１−３の値の方が小さいためキャッシュクリアが行われ、キャッシュクリアタイムスタンプ情報４１−３が「１２」に設定される。
【００８１】
次に、システムタイマ３０のタイマ値「１４」の時点で資源５０−１をアンロックするので、資源更新タイムスタンプ情報５２−１は「１４」、資源更新プロセッサ情報５３−１は「３」となる。
【００８２】
次に、システムタイマ３０のタイマ値「１５」の時点で資源５０−３をロックするが、この時のキャッシュクリアタイムスタンプ情報４１−３は「１２」、資源更新タイムスタンプ情報５２−３は「１３」、資源更新プロセッサ情報５３−３は「２」であるため、資源更新プロセッサ情報５３−３の値が自プロセッサ１０−３の識別子「３」と異なり、かつ資源更新タイムスタンプ情報５２−３の値よりもキャッシュクリアタイムスタンプ情報４１−３の値の方が小さいためキャッシュクリアが行われ、キャッシュクリアタイムスタンプ情報４１−３が「１５」になる。
【００８３】
次に、システムタイマ３０のタイマ値「１８」の時点で資源５０−３をアンロックするので、資源更新タイムスタンプ情報５２−３は「１８」、資源更新プロセッサ情報５３−３は「３」となる。
【００８４】
このようにプロセッサ１０−３が資源５０−３をロックするタイミングでは、プロセッサ１０−２がシステムタイマ３０のタイマ値「１０」〜「１３」で資源５０−３を更新しており、プロセッサ１０−３がシステムタイマ３０のタイマ値「１２」でキャッシュクリアを実行した後で資源５０−３が更新されている可能性があるため、キャッシュクリアが実行される。
【００８５】
（第１の実施の形態による効果）
第１の実施の形態によれば、キャッシュコヒーレンシを保証する必要があるのは、複数のプロセッサが同時に更新する可能性のある資源にアクセスする時、すなわち排他制御を行う必要のある資源にアクセスする時に限定されるという点に着目し、既存のロック処理とアンロック処理によるプロセッサ間の排他制御の一環としてキャッシュコヒーレンシを保証する機能を追加する構成としたので、ハードウェアによってキャッシュコヒーレンシを保証しない構成のＳＭＰ型計算機において、プログラム（ソフトウェア）により低コストでキャッシュコヒーレンシの保証を実現することができる。
【００８６】
また、従来のプロセッサ毎のキャッシュメモリ間の整合性（キャッシュコヒーレンシ）を保証するために、他のプロセッサが更新した可能性のあるメインメモリ上の資源にアクセスする直前に無条件にキャッシュクリアを行う方式と比べ、必要最小限のキャッシュクリアしか行わないため、キャッシュ制御によるオーバーヘッドを減らし性能低下を抑止することができる。
【００８７】
（第２の実施の形態）
図５に本発明の第２の実施の形態によるＳＭＰ型計算機の構成を示すブロック図である。
【００８８】
この第２の実施の形態によるＳＭＰ型計算機においては、各プロセッサ１０−１〜１０−Ｎのキャッシュメモリ２０−１〜２０−ｎに対応するキャッシュクリアタイムスタンプ情報４１−１〜４１Ｎ、メインメモリ４０上の各資源５０−１〜５０−Ｍに対応するＭ個のロックワード情報５１−１〜５１−Ｍ、Ｍ個の資源更新タイムスタンプ情報５２−１〜５２−Ｍ、Ｍ個の資源更新プロセッサ情報５３−１〜５３−Ｍをそれぞれ、メインメモリ４０上ではなく、別に設けた専用メモリ６０に格納している点で上述した第１の実施の形態と相違する。
【００８９】
その他の構成要素及び動作については、上述した第１の実施の形態と全く同じであるのでその説明は省略する。
【００９０】
上記のように、各種の情報をメインメモリ４０上に格納することなく専用メモリ６０に格納する構成としたことにより、メインメモリ４０上の領域を有効に利用することが可能となる。
【００９１】
なお、本発明は上述した実施の形態に限定されるものではなく、その技術思想の範囲内において様々に変形して実施することができる。
【図面の簡単な説明】
【００９２】
【図１】本発明の第１の実施の形態によるＳＭＰ型計算機の構成を示すブロック図である。
【図２】本発明の第１の実施の形態によるＳＭＰ型計算機の任意のプロセッサが任意の資源を排他的にアクセスする場合のロック処理を説明するフローチャートである。
【図３】本発明の第１の実施の形態によるＳＭＰ型計算機の任意のプロセッサが任意の資源を排他的にアクセスした後におけるアンロック処理を説明するフローチャートである。
【図４】本発明の第１の実施の形態によるＳＭＰ型計算機における、３つのプロセッサが、ある順番で３つの資源を排他的にアクセスした場合にキャッシュクリアがどの時点で実行されるかを説明するタイミングチャートである。
【図５】本発明の第２の実施の形態によるＳＭＰ型計算機の構成を示すブロック図である。
【符号の説明】
【００９３】
１０−１〜１０−Ｎ：プロセッサ
２０−１〜２０−Ｎ：キャッシュメモリ
３０：システムタイマ
４０：メインメモリ
４１−１〜４１Ｎ：キャッシュクリアタイムスタンプ情報
５０−１〜５０−Ｍ：資源
５１−１〜５１−Ｍ：ロックワード情報
５２−１〜５２−Ｍ：資源更新タイムスタンプ情報
５３−１〜５３−Ｍ：資源更新プロセッサ情報
６０：専用メモリ
【図１】
2006276901.tif 000003
【図２】
2006276901.tif 000004
【図３】
2006276901.tif 000005
【図４】
2006276901.tif 000006
【図５】
2006276901.tif 000007