(57)【要約】【課題】複数の仮想計算機が動作している環境でのキャッシュミスを防止することができる。【解決手段】計算機装置１は、高速キャッシュ２と、高速キャッシュ２に転送するデータ３ａを記憶する記憶部３と、仮想計算機を一意に識別する識別子４ａにアドレス４ｂが関連づけられた履歴情報４を格納する履歴情報格納部５と、動作する仮想計算機の切替えがあると、履歴情報格納部５を参照して切替え後の仮想計算機の識別子に一致する履歴情報４に含まれる識別子４ａの有無を判断する判断部６と、一致した識別子４ａに関連づけられたアドレス４ｂに基づいて、記憶部３が記憶しているデータ３ａを特定させ、特定したデータ３ａを高速キャッシュ２に転送させる転送指示部７と、を有する。【選択図】図１
2008293472.tif 000002
【特許請求の範囲】
【請求項１】
複数の仮想計算機を切替えて動作させる計算機装置において、
高速キャッシュと、
前記高速キャッシュに転送するデータを記憶する記憶部と、
仮想計算機を一意に識別する識別子に所定のアドレスが関連づけられた履歴情報を格納する履歴情報格納部と、
動作する仮想計算機の切替えがあると、前記履歴情報格納部を参照して切替え後の仮想計算機の前記識別子に一致する前記履歴情報に含まれる前記識別子の有無を判断する判断部と、
一致した前記識別子に関連づけられた前記所定のアドレスに基づいて、前記記憶部が記憶している前記データを特定させ、特定した前記データを前記高速キャッシュに転送させる転送指示部と、
を有することを特徴とする計算機装置。
【請求項２】
実行中の前記仮想計算機の前記識別子を取得する識別子取得部と、
前記データのアドレスを、前記識別子取得部が取得した前記識別子に関連づけて前記履歴情報を生成する履歴情報生成部と、
をさらに有し、
前記履歴情報格納部は、前記識別子毎に定められた履歴情報格納領域を有しており、
前記判断部は、切替え後の前記仮想計算機の前記識別子により特定される前記履歴情報格納領域を参照することを特徴とする請求項１記載の計算機装置。
【請求項３】
前記データに前記識別子が含まれており、
前記高速キャッシュからの前記データの追い出しまたは無効化を監視する監視部と、
前記データの追い出しまたは無効化が発生すると、追い出されたまたは無効化された前記データと、前記データに含まれている前記識別子とを関連づけて、前記履歴情報を生成する履歴情報生成部と、
をさらに有することを特徴とする請求項１または２記載の計算機装置。
【請求項４】
アクセスの頻度を示すアクセス頻度情報を前記履歴情報に付加する付加部と、
前記高速キャッシュへのアクセスを観測し、アクセスのあったデータに対応する前記履歴情報の前記アクセス頻度情報のアクセスの頻度を増加させるアクセス頻度増加部と、をさらに有し、
前記判断部は、前記判断の際、前記アクセス頻度情報により示されるアクセス頻度が予め定められた条件を満たす前記履歴情報に含まれる前記識別子の有無を判断することを特徴とする請求項１または２記載の計算機装置。
【請求項５】
所定時間アクセスがない前記アクセス頻度情報のアクセス履歴を消去する履歴消去実行部をさらに有することを特徴とする請求項４記載の計算機装置。
【請求項６】
前記アクセス頻度情報は、カウンタで構成されており、前記アクセス頻度増加部は、アクセスのあったデータに対応する前記履歴情報の前記カウンタをインクリメントし、前記判断部は、所定値以上のカウンタ値を備える前記履歴情報に含まれる前記識別子の有無を判断することを特徴とする請求項４または５記載の計算機装置。
【請求項７】
前記履歴情報格納部は、１つの前記識別子に複数の前記履歴情報が関連づけられた履歴情報格納領域を複数有しており、
前記履歴情報格納領域へ前記履歴情報をＦＩＦＯ方式により格納するＦＩＦＯ制御部をさらに有し、
前記ＦＩＦＯ制御部は、前記高速キャッシュへのアクセスを観測し、アクセスのあったデータに対応する前記履歴情報が、前記履歴情報格納領域に格納されているか否かを判断し、格納されている場合、アクセスのあったデータに対応する前記履歴情報を取り出して前記履歴情報格納領域に再度エンキューし、
前記判断部は、切替え後の前記仮想計算機の前記識別子により特定される前記履歴情報格納領域を参照することを特徴とする請求項１または２記載の計算機装置。
【請求項８】
前記高速キャッシュのデータを無効化する情報を監視する監視部と、
前記監視部から得られた無効化する前記データに対応する前記履歴情報を前記履歴情報格納部から削除する履歴情報削除部と、をさらに有することを特徴とする請求項１または２記載の計算機装置。
【請求項９】
前記記憶部に記憶されている前記データを前記高速キャッシュに割り当てる方式としてセットアソシアティブ方式を使用して、前記データを前記高速キャッシュに割り当てる割り当て部と、
アクセスの頻度を示すアクセス頻度情報を前記履歴情報に付加する付加部と、
前記仮想計算機の切替えがあると、前記高速キャッシュに格納されている前記データが廃棄対象となるか否かの指標を示すＬＲＵ情報に対応する前記履歴情報の前記アクセス頻度情報のアクセスの頻度を増加させるアクセス頻度増加部と、をさらに有し、
前記判断部は、前記判断の際、前記アクセス頻度情報により示されるアクセス頻度が予め定められた条件を満たす前記履歴情報に含まれる前記識別子の有無を判断することを特徴とする請求項１または２記載の計算機装置。
【請求項１０】
複数の仮想計算機を切替えて動作させる計算機装置のキャッシュリカバリ方法において、
動作する仮想計算機の切替えがあると、判断部が、仮想計算機を一意に識別する識別子に所定のアドレスが関連づけられた履歴情報を格納する履歴情報格納部を参照して切替え後の仮想計算機の前記識別子に一致する前記履歴情報に含まれる前記識別子の有無を判断し、
転送指示部が、一致した前記識別子に関連づけられた前記所定のアドレスに基づいて、記憶部上のそのアドレスに記憶されている前記データを前記高速キャッシュに転送させる、
ことを特徴とする計算機装置のキャッシュリカバリ方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は計算機装置およびそのキャッシュリカバリ方法に関し、特に、複数の仮想計算機を切替えて動作させる環境における計算機装置およびそのキャッシュリカバリ方法に関する。
【背景技術】
【０００２】
従来、計算機の仮想化は、ネットワークの中心となるホスト計算機（ホストコンピュータ）での利用がほとんどであった。しかし最近では、Ｉｎｔｅｌ（登録商標）プロセッサやＡＭＤ（登録商標）プロセッサなど、身近なＩＡ（インテルアーキテクチャ）プロセッサにおいても、ハードウェアによる仮想化技術が取り入れられ始め、ＰＣ（Personal Computer）レベルにおいても、仮想計算機（ＶＭ：Virtual Machine）環境が珍しくなくなりつつある。これにより、大規模エンタープライズでの利用から個人レベルでの利用まで、今後ますます仮想計算機の利用が広がることが予想される。
【０００３】
計算機には、ＣＰＵ（Central Processing Unit）とメインメモリとの速度緩衝用として、従来から高速小容量のバッファ（キャッシュ）が使われている。ＣＰＵは、データ使用に関する参照の局所性や時間的局所性という特性を利用して、頻繁に使われるデータを一時的にキャッシュに置くことにより大きな性能向上を得ていた。
【０００４】
しかし、これまでのプロセッサのキャッシュは、一つの仮想計算機が動作する環境では高い効果を発揮できるものの、複数の仮想計算機が切替わって動作する様な環境では、仮想計算機相互のキャッシュ汚染が生じ、その効果を十分に発揮することができない。
【０００５】
ここで、キャッシュ汚染とは、複数の仮想計算機が切替わって動作する環境において、ある仮想計算機の動作中に読み込まれた（＝フェッチされた）キャッシュデータが、別の仮想計算機の動作中に追い出されたり、あるいは仮想計算機切替え時にキャッシュデータが一旦無効化されたりして、再び元の仮想計算機に切替わっても、特に切替え直後はキャッシュミスが多発してしまうことをいう。
【０００６】
このキャッシュ汚染により、キャッシュが有効利用できず、キャッシュ本来の役割が果たせていないという問題があった。
これに対し、仮想計算機を識別する手段を用いることにより、他の仮想計算機への悪影響を抑止する方法が知られている（例えば、特許文献１参照）。
【０００７】
また、キャッシュ自体を複数用意してバンク化し、各バンクを個別に仮想計算機に割当ててキャッシュ本来の効果を保つ方法が知られている（例えば、特許文献２参照）。
【特許文献１】特開平７−１０５０９１号公報
【特許文献２】特開昭６１−０３４６４３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかし、従来の技術には以下のような問題があった。
例えば、特許文献１では、キャッシュの無効化命令以外には、性能低下を防ぐ効果がないという問題があった。
【０００９】
また、特許文献２では、キャッシュは非常に高価なため、複数バンク用意するためにキャッシュ全体の容量を大きくすると、コストが増大し現実的ではなくなる。逆に全体の容量をそのままにすると、今度は各仮想計算機に割り当てるキャッシュ容量が小さくなり、その分、容量性のキャッシュミスが増えて、結局キャッシュの効果が得にくいという根本的な問題があった。さらに、予め用意するバンク数は固定的になるので、対応可能な仮想計算機の個数に制限があるという問題もあった。
【００１０】
本発明はこのような点に鑑みてなされたものであり、複数の仮想計算機が動作している環境でのキャッシュミスを防止することができる計算機装置およびそのキャッシュリカバリ方法を提供することを目的とする。
【課題を解決するための手段】
【００１１】
本発明では上記問題を解決するために、図１に示すような計算機装置１が提供される。
本発明に係る計算機装置１は、複数の仮想計算機を切替えて動作させる装置である。
計算機装置１は、高速キャッシュ２と、高速キャッシュ２に転送するデータ３ａを記憶する記憶部３と、仮想計算機を一意に識別する識別子４ａにアドレス４ｂが関連づけられた履歴情報４を格納する履歴情報格納部５と、動作する仮想計算機の切替えがあると、履歴情報格納部５を参照して切替え後の仮想計算機の識別子に一致する履歴情報４に含まれる識別子４ａの有無を判断する判断部６と、一致した識別子４ａに関連づけられたアドレス４ｂに基づいて、記憶部３が記憶しているデータ３ａを特定させ、特定したデータ３ａを高速キャッシュ２に転送させる転送指示部７と、を有する。
【００１２】
このような計算機装置１によれば、動作する仮想計算機の切替えがあると、判断部６により、履歴情報格納部５が参照されて切替え後の仮想計算機の識別子に一致する履歴情報４に含まれる識別子４ａの有無が判断される。そして、転送指示部７により、一致した識別子に関連づけられたアドレス４ｂに基づいて、データ３ａの転送要求が出力され、記憶部３が記憶しているデータ３ａの特定および特定されたデータ３ａの高速キャッシュ２への転送が実行される。
【発明の効果】
【００１３】
本発明によれば、履歴情報格納部を参照して切替え後の仮想計算機が必要とするデータを予め高速キャッシュに転送させることができるため、キャッシュが本来の効果、すなわち参照の局所性や、特に時間的局所性を発揮することができる。
【発明を実施するための最良の形態】
【００１４】
以下、本発明の実施の形態を、図面を参照して詳細に説明する。
まず、本発明の概要について説明し、その後、実施の形態を説明する。
図１は、本発明の概要を示す図である。なお、以下の説明では、１台の計算機装置１上で複数の仮想計算機が動作している環境を前提とする。その場合、各仮想計算機は１つずつ切替わりながら動作しているものとする。
【００１５】
計算機装置１は、高速キャッシュ２と、記憶部３と、履歴情報格納部５と、判断部６と、転送指示部７とを有している。
高速キャッシュ２は、例えばＣＰＵ内部のキャッシュメモリ等である。
【００１６】
記憶部３は、高速キャッシュ２に転送するデータ３ａを記憶する。このデータ３ａは、例えば以前、高速キャッシュ２に記憶されていたデータである。
履歴情報格納部５は、仮想計算機を一意に識別する識別子４ａにアドレス４ｂが関連づけられた履歴情報４を格納する。アドレス４ｂは、識別子４ａによって特定される仮想計算機が動作時に必要とするデータのアドレスであり、例えばキャッシュにフェッチ（取り込み）されるメモリデータのアドレスが取り出され、アドレス４ｂとして識別子４ａに関連づけられている。この履歴情報４は、１つまたは複数格納される。
【００１７】
判断部６は、動作する仮想計算機の切替えがあると、履歴情報格納部５を参照して切替え後の仮想計算機の識別子に一致する履歴情報４に含まれる識別子４ａの有無を判断する。
【００１８】
転送指示部７は、一致した識別子４ａに関連づけられたアドレス４ｂに基づいて、記憶部３が記憶しているデータ３ａを特定させ、特定したデータ３ａを高速キャッシュ２に転送させる。例えば、転送指示部７が、高速キャッシュ２の図示しないキャッシュコントローラにアドレス４ｂに対応するデータの転送要求を出力することにより、このキャッシュコントローラが、アドレス４ｂに一致するメモリ上のアドレスに対応するデータ３ａを特定し、記憶部３から高速キャッシュ２にデータ３ａを取り込む。
【００１９】
このような計算機装置１によれば、動作する仮想計算機の切替えがあると、判断部６により、履歴情報格納部５が参照されて切替え後の仮想計算機の識別子に一致する履歴情報４に含まれる識別子４ａの有無が判断される。そして、転送指示部７により、一致した識別子４ａに関連づけられたアドレス４ｂに基づいて、データ３ａの転送要求が出力され、記憶部３が記憶しているデータ３ａの特定および特定されたデータ３ａの高速キャッシュ２への転送が実行される。
【００２０】
以下、本発明の実施の形態を説明する。
図２は、計算機装置のハードウェア構成例を示す図である。
計算機装置１０は、ＣＰＵ１０１によって装置全体が制御されている。ＣＰＵ１０１には、バス１０７を介してＲＡＭ（Random Access Memory）１０２、ハードディスクドライブ（ＨＤＤ:Hard Disk Drive）１０３、グラフィック処理装置１０４、入力インタフェース１０５、通信インタフェース１０６、およびリカバリコントローラ１５が接続されている。
【００２１】
ＲＡＭ１０２には、ＣＰＵ１０１に実行させるＯＳ（Operating System）のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ１０２には、ＣＰＵ１０１による処理に必要な各種データが格納される。ＨＤＤ１０３には、ＯＳやアプリケーションプログラムが格納される。また、ＨＤＤ１０３内には、プログラムファイルが格納される。
【００２２】
グラフィック処理装置１０４には、モニタ３１が接続されている。グラフィック処理装置１０４は、ＣＰＵ１０１からの命令に従って、画像をモニタ３１の画面に表示させる。入力インタフェース１０５には、キーボード３２とマウス３３とが接続されている。入力インタフェース１０５は、キーボード３２やマウス３３から送られてくる信号を、バス１０７を介してＣＰＵ１０１に送信する。
【００２３】
通信インタフェース１０６は、ネットワーク３０に接続されている。通信インタフェース１０６は、ネットワーク３０を介して、他のコンピュータとの間でデータの送受信を行うことができる。
【００２４】
リカバリコントローラ１５については後述する。
以上のようなハードウェア構成によって、本実施の形態の処理機能を実現することができる。このようなハードウェア構成の計算機装置１０においてキャッシュリカバリを行うために、計算機装置１０内には、以下のような機能が設けられる。
【００２５】
図３は、計算機装置の機能を示すブロック図である。
計算機装置１０は、キャッシュ１１と、メモリ１２と、キャッシュ履歴テーブル１３と、ＶＭ−ＩＤレジスタ１４と、リカバリコントローラ１５と、ＡＮＤ回路１６とを有している。
【００２６】
キャッシュ１１は、ＣＰＵ１０１の演算部とメモリ１２との速度緩衝用として、例えばＣＰＵ１０１の内部に設けられており、ＣＰＵ１０１が使用する頻度の高いデータを一時的に記憶する。キャッシュ１１のデータの入出力は、図示しないキャッシュコントローラによって行われる。
【００２７】
メモリ１２は、例えばキャッシュ１１よりも低速のＲＡＭ１０２（主記憶部）や、下位のキャッシュ層等によって構成されている。主記憶部にはキャッシュ１１にフェッチ（取込）するデータが格納されている。
【００２８】
図４は、キャッシュに格納されているデータを示す図である。このキャッシュ１１には、メモリ１２からキャッシュ１１にフェッチ（取込）するデータ（Data）が格納されている。また、フェッチしたその各データ（Data）は、データの要否を決定するバリッドビット（valid bit）およびアドレス（address）も有しており、それらの各要素の一組をキャッシュデータまたはキャッシュエントリと呼ぶ。
【００２９】
再び図３に戻って説明する。
キャッシュ履歴テーブル１３は、例えばＲＡＭ１０２やＣＰＵ１０１内の高速メモリ、レジスタの一部分により構成されており、複数の履歴エントリ２１、２１、・・・を有している。
【００３０】
１つの履歴エントリ２１は、データの要否を決定するバリッドビット（valid bit）、仮想計算機を識別するためのＩＤタグとしての役割を果たすＶＭ−ＩＤおよびデータアドレス（address）を格納する領域（エントリ）を構成している。以下、バリッドビット、ＶＭ−ＩＤおよびデータアドレス（キャッシュに格納されているデータのアドレス）をまとめて「履歴データ」という。
【００３１】
ＶＭ−ＩＤレジスタ１４は、例えばＣＰＵ１０１内のレジスタの一部分により構成されており、現在動作している仮想計算機のＶＭ−ＩＤが格納される。
リカバリコントローラ１５は、仮想計算機の切替えをきっかけとしてＣＰＵ１０１が生成するＶＭ切替信号が入力されると、キャッシュ１１へのキャッシュデータのリカバリを行うためのリカバリ動作（後述）を行う。それ以外の場合は、キャッシュ履歴テーブル１３の履歴エントリ２１、２１、・・・にバリッドビット、ＶＭ−ＩＤおよびキャッシュデータのアドレスを関連づけて記録する記録動作（後述）を行う。
【００３２】
ＡＮＤ回路１６は、ＶＭ−ＩＤレジスタ１４と履歴エントリ２１に格納されている履歴データのＶＭ−ＩＤとの一致を判断するために設けられている。
次に、履歴エントリ２１、２１、・・・に格納される履歴データの記録方法（フェッチアドレス記録方法）について説明する。
【００３３】
図５は、履歴データの記録方法を説明する図である。なお、図５では同時期に行う動作については、同じステップ番号を付している。
リカバリコントローラ１５は、メモリ１２からキャッシュ１１へのキャッシュデータのフェッチを観察する（ステップＳ１）。
【００３４】
そして、キャッシュデータのフェッチが発生すると、リカバリコントローラ１５は、そのフェッチされるデータのアドレス（データが格納されていた主記憶部の場所＝アドレス）と、その時動作している仮想計算機のＶＭ−ＩＤとを同時に読み込む（ステップＳ２）。
【００３５】
そして、読み込んだアドレスおよびＶＭ−ＩＤを履歴データとして履歴エントリ２１に記録し、バリッドビットを１（有効）にする（ステップＳ３）。
リカバリコントローラ１５は、ステップＳ１〜Ｓ３を繰り返し行う。これにより、履歴エントリ２１、２１、・・・にそれぞれ履歴データが格納される。
【００３６】
次に、計算機装置１０（リカバリコントローラ１５）のリカバリ動作を説明する。
図６は、リカバリ動作を説明する図である。
前処理として、ＣＰＵ１０１が、ＶＭ−ＩＤレジスタ１４に新たなＶＭ−ＩＤを格納するとともに、ＶＭ切替信号を生成する。この時点では、新たな仮想計算機による動作は開始されていない。
【００３７】
ＶＭ切替信号をトリガーとしてリカバリコントローラ１５がリカバリ動作を開始する（ステップＳ１１）。
リカバリコントローラ１５は、キャッシュ履歴テーブル１３上の各履歴エントリ２１、２１、・・・を逐次チェックしていく（ステップＳ１２）。
【００３８】
具体的には、ＡＮＤ回路１６が、リカバリコントローラ１５の指示によって逐次入力される履歴エントリ２１、２１、・・・内のバリッドビットおよびＩＤタグ（＝ＶＭ−ＩＤ）と、ＶＭ切替信号入力時にＶＭ−ＩＤレジスタ１４から入力されるこれから動作しようとしている仮想計算機のＶＭ−ＩＤとを比較し、その結果をリカバリコントローラ１５に出力する。ＡＮＤ回路１６は、これらのＶＭ−ＩＤが一致し、かつ、バリッドビットが「１」であれば、「１」を出力し、それ以外は「０」を出力する（ステップＳ１３）。
【００３９】
リカバリコントローラ１５は、ＡＮＤ回路１６から「１」が出力されると、一致したと判断し、チェックしている（一致したＶＭ−ＩＤが格納されている）履歴エントリ２１に格納されているアドレスを参照する（ステップＳ１４）。
【００４０】
そして、リカバリコントローラ１５は、参照したアドレスをフェッチアドレスとしてキャッシュコントローラへフェッチ要求を出す（ステップＳ１５）。
参照したアドレスのデータがメモリ１２からフェッチされ（ステップＳ１６）、再度キャッシュ１１に格納されることによりキャッシュデータの復元が完了する。
【００４１】
以上でリカバリ動作を終了する。
次に、変形例として履歴エントリを拡張した例を示す。
＜変形例＞
図７は、履歴エントリを拡張した例を示す図である。
【００４２】
履歴エントリ２１ａは、キャッシュ１１の構造が命令キャッシュ、データキャッシュである場合や、２次キャッシュ、３次キャッシュなどの多階層キャッシュ構成である場合にも対応することができるよう構成されている。
【００４３】
履歴エントリ２１ａは、記録しているアドレスが命令アドレス（Ｉ）か、または、データアドレス（Ｄ）かを示す種別フラグを格納する領域２１１と、多階層キャッシュに対応するために設けられ、対象キャッシュの階層を示す階層フラグを格納する領域（Level Index）２１２とをさらに有している。図７では、領域２１１には命令アドレス（Ｉ）が格納されている。
【００４４】
リカバリコントローラ１５は、リカバリ動作時には履歴エントリ２１ａ種別フラグを参照し、履歴が命令アドレス（Ｉ）の場合には命令キャッシュに、データアドレス（Ｄ）の場合にはデータキャッシュにフェッチする様にキャッシュコントローラに要求を出す。
【００４５】
また、例えばリカバリ動作時に参照した履歴エントリ２１ａが２次キャッシュの履歴の場合、リカバリコントローラ１５は、階層フラグを参照し、２次キャッシュに対してフェッチする様にキャッシュコントローラに要求を出す。
【００４６】
以上述べたように、本実施の形態の計算機装置１０によれば、仮想計算機の切替え時に、リカバリコントローラ１５が、これから動作する仮想計算機にとって有効なキャッシュデータを、キャッシュ履歴テーブル１３を参照することにより判断し、該当するキャッシュデータを、そのキャッシュデータが必要になる前にメモリから読み出して（リカバリ動作とは別動作で進行する仮想計算機の切替え動作とオーバーラップさせる様に）キャッシュ１１にフェッチさせるようにした。これにより、特定の仮想計算機に対応する（前回仮想計算機が使用していた）キャッシュデータを、その仮想計算機の動作時に復元することができる。
【００４７】
その結果、仮想計算機の切替え後のキャッシュミスを防止することができ、キャッシュが本来の効果（参照の局所性や特に時間的局所性）を発揮できるようになるため、動作中の複数の仮想計算機の全てを含めた（仮想計算機環境全体の）性能向上が期待できる。
【００４８】
また、無効化命令だけでなく、キャッシュデータ書き換え全般による他の仮想計算機からのキャッシュ汚染を防止することができる。また、特定の仮想計算機だけではなく、計算機装置１０上で同時に動作している全ての仮想計算機がその恩恵を受けることができるという優位性がある。
【００４９】
また、キャッシュ１１の構造自体を変更しなくてもよいため、既存のキャッシュを用いることができる。
また、リカバリコントローラ１５は、ハードウェア構成されているため、処理速度が速く、仮想計算機の切替えと並行して処理を行うことができる。また、ソフトウェアによる対応も不要である。
【００５０】
また、キャッシュデータを単なるＶＭ−ＩＤを用いて（タグ付け方式で）管理するようにしたので、動作する仮想計算機の個数に特に制限はなく、動的に仮想計算機の動作数が増加した場合にも対応することができる。
【００５１】
なお、本実施の形態では、ＡＮＤ回路１６をリカバリコントローラ１５の外部に設けたが、本発明はこれに限定されず、例えばリカバリコントローラ１５内にＡＮＤ回路１６を設けるようにしてもよい。
【００５２】
次に、第２の実施の形態の計算機装置について説明する。
図８は、第２の実施の形態の計算機装置を示す図である。
以下、第２の実施の形態の計算機装置１０ａについて、前述した第１の実施の形態との相違点を中心に説明し、同様の事項については、その説明を省略する。
【００５３】
第２の実施の形態の計算機装置１０ａは、キャッシュ履歴テーブル１３ａの構成が異なり、それ以外は第１の実施の形態と同様である。
計算機装置１０ａのキャッシュ履歴テーブル１３ａは、テーブル内の記録場所を仮想計算機に関連づけて履歴データを管理している。具体的には、テーブル内を図７中上側から順番に各仮想計算機用にエリア分けしたｂａｎｋ単位で履歴データを管理している。１つのｂａｎｋ２１ｂは、仮想計算機のＶＭ−ＩＤに等しい（または対応する）ＩＤ（ＶＭ＃０、ＶＭ＃１、・・・）を有しており、各ｂａｎｋ２１ｂには、それぞれバリッドビットおよびアドレスが格納される。
【００５４】
次に、第２の実施の形態の計算機装置１０ａのリカバリ動作について説明する。
ＶＭ切替入力信号をトリガーとしてリカバリコントローラ１５がリカバリ動作を開始する（ステップＳ２１）。
【００５５】
リカバリコントローラ１５は、ＶＭ−ＩＤレジスタ１４に格納されているＶＭ−ＩＤをチェックする（ステップＳ２２）。
リカバリコントローラ１５は、チェックしたＶＭ−ＩＤに一致するＶＭ−ＩＤを有するキャッシュ履歴テーブル１３ａ上のｂａｎｋ２１ｂを検索する（ステップＳ２３）。
【００５６】
検索の結果、該当したｂａｎｋ２１ｂ（図８では、ＶＭ＃１のｂａｎｋ２１ｂ）内の各エントリのバリッドビットを参照して該当したそのエントリが有効か否かを判断し（ステップＳ２４）、有効であると判断したエントリに格納されているアドレスを参照する（ステップＳ２５）。
【００５７】
そして、参照したアドレスをフェッチアドレスとしてキャッシュコントローラへフェッチ要求を出す（ステップＳ２６）。
参照したアドレスのデータが、メモリ１２からフェッチされ（ステップＳ２７）、再度キャッシュ１１に格納されことにより、キャッシュデータの復元が完了する。
【００５８】
以上で第２の実施の形態のリカバリ動作を終了する。
この第２の実施の形態の計算機装置１０ａによれば、第１の実施の形態の計算機装置１０と同様の効果が得られる。
【００５９】
そして、第２の実施の形態の計算機装置１０ａによれば、キャッシュ履歴テーブル１３ａ上に各仮想計算機用のバリッドビットおよびアドレスを格納する領域が固定的に決まるので、必要な履歴データとして、該当する固定エリアのみを参照すればよく、キャッシュ履歴テーブル１３ａ上を全て探索する必要がなくなるため、リカバリ動作時のキャッシュ履歴テーブル１３ａの無駄な走査を削減することができ、その分、より高速なリカバリ処理を行うことができる。これにより、リカバリ処理のオーバーヘッドが万一あったとしても無駄な走査を削減することができる。
【００６０】
次に、第３の実施の形態の計算機装置について説明する。
以下、第３の実施の形態の計算機装置について、前述した第１の実施の形態との相違点を中心に説明し、同様の事項については、その説明を省略する。
【００６１】
第３の実施の形態の計算機装置は、キャッシュデータの形態およびキャッシュデータのキャッシュ履歴テーブル１３への記録方法が第１の実施の形態の計算機装置１０と異なっている。
【００６２】
図９は、第３の実施の形態の計算機装置のキャッシュの内部構造を示す図である。
キャッシュ１１には、データ格納領域としてキャッシュエントリ１１ａが設けられている。
【００６３】
キャッシュエントリ１１ａは、バリッドビット、アドレスおよびデータの格納領域に加えて、ＶＭ−ＩＤの格納領域を有している。このＶＭ―ＩＤは、例えばキャッシュコントローラによって付加することができる。
【００６４】
次に、第３の実施の形態の計算機装置の履歴データの記録方法（追い出しアドレス記録方法）について説明する。
図１０は、第３の実施の形態の履歴データの記録方法を説明する図である。なお、図１０に示す計算機装置１０ｂは、計算機装置１０と同様の部分については図示を省略しており、同時期に行う動作については、同じステップ番号を付している。
【００６５】
リカバリコントローラ１５は、キャッシュ１１からのデータ追出し（Eject）やデータ無効化（Invalidate）を観察する（ステップＳ１ａ）。
そして、データ追出しやデータ無効化が発生すると、キャッシュ１１から追出されたり（Ejected）、無効化されたり（Invalidated）したキャッシュエントリ１１ａ内に記録されていたアドレスと、その同じキャッシュエントリ１１ａ内に記録されていたＶＭ−ＩＤを読み込む（ステップＳ２ａ）。
【００６６】
そして、読み込んだアドレスとＶＭ−ＩＤとを履歴データとしてキャッシュ履歴テーブル１３の履歴エントリ２１に記録し、その履歴エントリのバリッドビットを有効（１）にする（ステップＳ３ａ）。
【００６７】
このような方法によっても履歴エントリ２１、２１、・・・にそれぞれ履歴データが格納される。
この第３の実施の形態の計算機装置１０ｂによれば、第１の実施の形態の計算機装置１０と同様の効果が得られる。
【００６８】
そして、第３の実施の形態の計算機装置１０ｂによれば、キャッシュ履歴テーブル１３にはリカバリの必要があるキャッシュデータのみが記録されるため、無駄なデータの復元がなくなり、より効率的なリカバリ、すなわちキャッシュをより有効に利用できる様になるので、さらに仮想計算機環境全体の性能を向上させることができる。
【００６９】
以下に示す第４〜第９の実施の形態では、例えば、時間的局所性等の概念を導入してバリッドビットの役割を具体化させ、より優先度の高いキャッシュデータを復元させることにより、無駄な復元を削減させる。
【００７０】
以下、第４の実施の形態の計算機装置について、前述した第１の実施の形態との相違点を中心に説明し、同様の事項については、その説明を省略する。
第４の実施の形態の計算機装置は、履歴エントリに格納されている履歴データの形態およびその制御方法が第１の実施の形態の計算機装置１０と異なっている。
【００７１】
図１１は、第４の実施の形態の履歴データを示す図である。
本実施の形態の履歴エントリ２１に格納されている履歴データは、ＶＭ−ＩＤ、Ａビット（アクセスビット）およびデータアドレス（address）で構成されている。なお、図１１では、キャッシュ履歴テーブル１３等の図示を省略している。
【００７２】
Ａビットは、バリッドビット（リカバリ制御ビット）を具体化したものであり、履歴エントリ２１に格納されている履歴データが使用された頻度を示す指標となるものである。具体的には、ＡビットがＯＮ（１）している履歴データは、使用頻度の比較的高いデータであり、ＡビットがＯＦＦ（０）している履歴データは、使用頻度の比較的低いデータである。以下、このＡビットをＯＮする方法、ＯＦＦする方法およびこの履歴データを用いたときの計算機装置の制御方法を順番に説明する。
【００７３】
図１２は、ＡビットをＯＮする方法を示す図である。
本実施の形態の計算機装置は、アクセス監視部４１と、ＡＮＤ回路４２〜４４とを有している。
【００７４】
アクセス監視部４１は、ＣＰＵ１０１からキャッシュ１１へのアクセスを監視する。そして、アクセスがあれば、そのアドレスをＡＮＤ回路４３に出力する。
ＡＮＤ回路４２は、ＡＮＤ回路１６とは別個に設けられ、ＶＭ−ＩＤレジスタ１４に格納されている現在動作している仮想計算機のＶＭ−ＩＤと履歴エントリ２１に格納されている履歴データのＶＭ−ＩＤとの一致を判断する。
【００７５】
このＡＮＤ回路４２は、これらのＶＭ−ＩＤが一致したときは「１」を出力し、それ以外は「０」を出力する。
ＡＮＤ回路４３は、アクセス監視部４１が監視しているアドレスと履歴エントリ２１内のアドレスとの一致を判断するために設けられている。
【００７６】
このＡＮＤ回路４３は、これらのアドレスが一致したときは「１」を出力し、それ以外は「０」を出力する。
ＡＮＤ回路４４は、ＡＮＤ回路４２の出力とＡＮＤ回路４３の出力がともに「１」のときのみＡビットをＯＮする。
【００７７】
図１３は、ＡビットをＯＦＦする方法を示す図である。
本実施の形態の計算機装置は、プログラム実行部１０１ａと、タイマ１０１ｂと、ＡＮＤ回路４５、４７と、ＯＲ回路４６と、Ａビットクリア実行部４８とを有している。
【００７８】
プログラム実行部１０１ａおよびタイマ１０１ｂは、それぞれＣＰＵ１０１の一機能であり、定期的にＡビットのクリア信号を出力する。
また、クリア信号を出力するタイミングは、特に限定されないが、例えば、仮想計算機の割当て時間等に応じて設定するのが好ましく、一例としては、仮想計算機の割当て時間が５ｍｓ〜１５ｍｓの場合、１００μｍ毎や１ｍｓ毎等が挙げられる。また、タイマ１０１ｂにおいては、新たなクリア信号を出力するのではなく、上記タイミングの信号が存在すれば既存の信号をそのまま用いるようにしてもよい。
【００７９】
ＡＮＤ回路４５は、前述したＡＮＤ回路４２と同様の機能を有している。なお、ＡＮＤ回路４２がＡＮＤ回路４５を兼ねていてもよい。その場合、ＡＮＤ回路４２の出力をＡＮＤ回路４７にも出力するよう構成する。
【００８０】
ＯＲ回路４６は、プログラム実行部１０１ａまたはタイマ１０１ｂのいずれか一方からクリア信号が出力されると「１」を出力する。
ＡＮＤ回路４７は、ＡＮＤ回路４５の出力とＯＲ回路４６の出力がともに「１」のときは「１」を出力する。
【００８１】
Ａビットクリア実行部４８は、ＡＮＤ回路４７の出力が「１」のときＡビットをＯＦＦする。
このように、リカバリ動作とは別に、履歴データの使用頻度に従ってＡビットはＯＮまたはＯＦＦする。
【００８２】
図１４は、第４の実施の形態の計算機装置のリカバリ動作を説明する図である。
図６に示す第１の実施の形態の計算機装置１０のリカバリ動作と異なる点について説明し、同様の点については説明を省略する。
【００８３】
第４の実施の形態の計算機装置１０ｃのリカバリコントローラ１５は、キャッシュ履歴テーブル１３上の各履歴エントリ２１、２１、・・・を逐次チェックしていく（ステップＳ１２）。
【００８４】
具体的には、ＡＮＤ回路１６が、リカバリコントローラ１５の指示によって逐次入力される履歴エントリ２１、２１、・・・内のＡビットおよびＩＤタグ（＝ＶＭ−ＩＤ）と、ＶＭ切替信号入力時にＶＭ−ＩＤレジスタ１４から入力されるこれから動作しようとしている仮想計算機のＶＭ−ＩＤとを比較し、その結果をリカバリコントローラ１５に出力する（ステップＳ１３ａ）。
【００８５】
これにより、リカバリコントローラ１５は、ＡＮＤ回路１６から「１」が出力された履歴データ、すなわち、ＶＭ−ＩＤが一致し、ＡビットがＯＮになっている履歴データのアドレスのみを参照し、参照したアドレスをフェッチアドレスとしてキャッシュコントローラへフェッチ要求を出す（ステップＳ１５）。
【００８６】
この第４の実施の形態の計算機装置１０ｃによれば、第１の実施の形態の計算機装置１０と同様の効果が得られる。
そして、第４の実施の形態の計算機装置１０ｃによれば、ＡビットをＯＮまたはＯＦＦする機構を設け、ＡビットがＯＮになっている履歴データのみリカバリ、プリフェッチを行うようにしたので、リカバリ対象の選択基準を高精度化することができる。これにより、無駄なキャッシュリカバリを防止することができ、リソースとしてのキャッシュ使用の効率化を図ることができる。また、迅速なキャッシュリカバリを行うことができる。
【００８７】
次に、第５の実施の形態の計算機装置について説明する。
以下、第５の実施の形態の計算機装置について、前述した第４の実施の形態との相違点を中心に説明し、同様の事項については、その説明を省略する。
【００８８】
第５の実施の形態の計算機装置は、履歴エントリに格納されている履歴データの形態およびリカバリ動作が第４の実施の形態の計算機装置１０ｃと異なっている。
図１５は、第５の実施の形態の履歴データを示す図である。
【００８９】
本実施の形態の履歴エントリ２１に格納されている履歴データは、ＶＭ−ＩＤ、参照ビット、変更ビットおよびデータアドレス（address）で構成されている。なお、図１５では、キャッシュ履歴テーブル１３等の図示を省略している。
【００９０】
参照ビットおよび変更ビットは、Ａビットの機能をより細分化したものであり、Ａビットと同様に、履歴エントリ２１に格納されている履歴データが使用された頻度を示す指標となるものである。具体的には、ＣＰＵ１０１からキャッシュ１１への参照（ｒｅａｄ）要求があれば、対応する履歴エントリ２１の履歴データの参照ビットをＯＮし、ＣＰＵ１０１からキャッシュ１１への更新（ｗｒｉｔｅ）要求があれば、対応する履歴エントリの履歴データの更新ビットをＯＮする。また、第４の実施の形態と同様に、未使用の参照ビットおよび更新ビットを定期的にＯＦＦする。
【００９１】
さらに第５の実施の形態の計算機装置は、この履歴データを制御するための機能を有している。
図１６は、第５の実施の形態の計算機装置を示す図である。
【００９２】
計算機装置１０ｄは、優先対象設定部５１と有効ランク設定部５２と有効ランク制御部５３とを有している。
優先対象設定部５１には、参照要求と更新要求のどちらを優先するのかが設定されている。
【００９３】
有効ランク設定部５２には、リカバリ動作時に、リカバリ対象とする履歴データの優先度を示すランクが設定されている。
図１７は、ランクを示す図である。
【００９４】
ランクは、例えばテーブル化されて格納されており、ランクテーブル５２ａは、参照ビットを優先したランクを示している。参照ビットおよび更新ビットの組み合わせによりランクが定まり、ランク１が一番優先度が高く、ランク４が一番優先度が低い。
【００９５】
図１６に戻って説明する。
有効ランク制御部５３は、優先対象設定部５１および有効ランク設定部５２により設定された設定基準に基づいて、履歴データに含まれる参照ビットおよび変更ビットが設定基準を満たしているか否かを判断する。例えば、優先対象設定部５１には参照要求が優先されることが設定され、有効ランク設定部５２にランク２が設定されているときは、図１７に示すランクテーブル５２ａが参照され、参照ビットおよび更新ビットがともに「１」の履歴データ、または参照ビットが「１」、更新ビットが「０」の履歴データのみ設定基準を満たしていると判断する。そして、有効ランク制御部５３は、設定基準を満たしているときは、「１」を出力し、満たしていないときは「０」を出力する。
【００９６】
次に、計算機装置１０ｄのリカバリ動作を説明する。第４の実施の形態のリカバリ動作と異なる点について説明し、同様の点については説明を省略する。
リカバリコントローラ１５は、キャッシュ履歴テーブル１３上の各履歴エントリ２１、２１、・・・を逐次チェックしていく（ステップＳ１２）。
【００９７】
具体的には、ＡＮＤ回路１６が、リカバリコントローラ１５の指示によって逐次入力される履歴エントリ２１、２１、・・・内のＩＤタグ（＝ＶＭ−ＩＤ）と、ＶＭ切替信号入力時にＶＭ−ＩＤレジスタ１４から入力されるこれから動作しようとしている仮想計算機のＶＭ−ＩＤとを比較する。また、有効ランク制御部５３の出力をチェックする。そして、その結果をリカバリコントローラ１５に出力する（ステップＳ１３ｂ）。
【００９８】
これにより、リカバリコントローラ１５は、ＡＮＤ回路１６から「１」が出力された履歴データ、すなわち、ＶＭ−ＩＤが一致し、上記設定基準を満たした履歴データのアドレスのみを参照し、参照したアドレスをフェッチアドレスとしてキャッシュコントローラへフェッチ要求を出す（ステップＳ１５）。
【００９９】
この第５の実施の形態の計算機装置１０ｄによれば、第４の実施の形態の計算機装置１０ｃと同様の効果が得られる。
そして、第５の実施の形態の計算機装置１０ｄによれば、参照ビットおよび更新ビットという、より細かい段階的な判断基準を設けたことにより、リカバリ対象の履歴データの絞り込みができ、さらに、リカバリとキャッシュリソース使用の効率化を図ることができる。
【０１００】
＜変形例＞
図示していないが、バリッドビットの代わりに、ビットを使用せず、ＣＰＵやシステムが備える「タイム・スタンプ・カウンタ」や、「ＣＰＵサイクル数カウンタ」等、単調増加するカウンタのカウンタ値を履歴データとともに記録し、より具体的な使用時刻を特定するようにしてもよい。この場合、ビットの定期的なクリア動作を省略することができる。また、この場合、リカバリ動作時のリカバリ対象の履歴データの選出基準として有効数や具体的な時刻を用いることもできる。
【０１０１】
次に、第６の実施の形態の計算機装置について説明する。
以下、第６の実施の形態の計算機装置について、前述した第４の実施の形態との相違点を中心に説明し、同様の事項については、その説明を省略する。
【０１０２】
第６の実施の形態の計算機装置は、履歴エントリに格納されている履歴データの形態およびリカバリ動作が第４の実施の形態の計算機装置１０ｃと異なっている。
図１８は、第６の実施の形態の計算機装置を示す図である。
【０１０３】
本実施の形態の計算機装置１０ｅの履歴エントリ２１に格納されている履歴データは、ＶＭ−ＩＤ、カウンタおよびデータアドレス（address）で構成されている。カウンタは、その履歴データの使用頻度を表すものであり少なくとも２ビット以上で構成されている。
【０１０４】
カウンタのインクリメント方法は、図１２に示したＡビットをＯＮする方法と同様である。但し、本実施の形態ではＡＮＤ回路４４から「１」が出力される度に、カウンタをインクリメントする。
【０１０５】
また、計算機装置１０ｅは、有効閾値設定部６１と、カウンタ比較部６２とを有している。
有効閾値設定部６１には、カウンタ比較部６２が比較するカウンタの閾値（例えば１０回以上等）が設定されている。
【０１０６】
カウンタ比較部６２は、有効閾値設定部６１により設定されたカウンタの閾値と履歴エントリ２１に格納されている履歴データのカウンタのカウンタ値とを比較する。そして、カウンタの閾値の条件を満たしているか否かを判断し、満たしているときは、「１」を出力し、満たしていないときは「０」を出力する。
【０１０７】
次に、計算機装置１０ｅのリカバリ動作を説明する。第４の実施の形態のリカバリ動作と異なる点について説明し、同様の点については説明を省略する。
リカバリコントローラ１５は、キャッシュ履歴テーブル１３上の各履歴エントリ２１、２１、・・・を逐次チェックしていく（ステップＳ１２）。
【０１０８】
具体的には、ＡＮＤ回路１６が、リカバリコントローラ１５の指示によって逐次入力される履歴エントリ２１、２１、・・・内のＩＤタグ（＝ＶＭ−ＩＤ）と、ＶＭ切替信号入力時にＶＭ−ＩＤレジスタ１４から入力されるこれから動作しようとしている仮想計算機のＶＭ−ＩＤとを比較する。また、カウンタ比較部６２の出力をチェックする。そして、その結果をリカバリコントローラ１５に出力する（ステップＳ１３ｃ）。
【０１０９】
これにより、リカバリコントローラ１５は、ＡＮＤ回路１６から「１」が出力された履歴データ、すなわち、ＶＭ−ＩＤが一致し、上記カウンタの閾値の条件を満たした履歴データのアドレスのみを参照し、参照したアドレスをフェッチアドレスとしてキャッシュコントローラへフェッチ要求を出す（ステップＳ１５）。
【０１１０】
この第６の実施の形態の計算機装置１０ｅによれば、第４の実施の形態の計算機装置１０ｃと同様の効果が得られる。
そして、第６の実施の形態の計算機装置１０ｅによれば、カウンタを用いたので、より細かいリカバリ対象の履歴データの絞り込みができ、さらに、リカバリとキャッシュリソース使用の効率化を図ることができる。
【０１１１】
＜変形例１＞
なお、本実施の形態では、キャッシュのアクセス種別によらず、アクセスの度にカウンタをインクリメントするようにしたが、本発明はこれに限らず、例えば、アクセス種別（参照、更新）により、１回のカウンタ増分に重み付けを行い、更新に比べ参照を優先させたり、参照のみを有効としたりするよう制御してもよい。
【０１１２】
＜変形例２＞
また、本実施の形態では、単調増加のカウンタを用いたが、本発明はこれに限らず、例えば、エイジング方式のカウンタ（エイジングカウンタ）を利用することもできる。
【０１１３】
図１９は、エイジングカウンタの推移を示す図である。
各履歴エントリ２１に格納されている全てのデータのエイジングカウンタが、クロック割り込みやメモリアクセス命令時に以下のルールで更新される。
【０１１４】
（１）キャッシュアクセスのあったデータと同じ履歴データのエイジングカウンタは右シフトしてから最も左のビットをインクリメントする。
（２）アクセスのなかった履歴データのエイジングカウンタは右シフトのみ行う。
【０１１５】
これにより、最近のアクセス頻度が高い履歴データほど、カウンタ値が大きくなる。そして、カウンタ比較部６２は、有効閾値設定部６１に設定されている値以上のカウンタ値の場合「１」を出力する。
【０１１６】
このようなエイジングカウンタを設けることにより、定期的なクリア動作を省略することができる。
次に、第７の実施の形態の計算機装置について説明する。
【０１１７】
以下、第７の実施の形態の計算機装置について、前述した第２の実施の形態との相違点を中心に説明し、同様の事項については、その説明を省略する。
第７の実施の形態の計算機装置は、履歴データの格納方法および取り出し方法が第２の実施の形態の計算機装置１０ａと異なっている。
【０１１８】
図２０は、第７の実施の形態の計算機装置（の一部）を示す図である。
第７の実施の形態の計算機装置は、各ｂａｎｋ２１ｂに対し、ＦＩＦＯ（First In First Out）制御を行うＦＩＦＯ制御部７１をさらに有している。。
【０１１９】
以下、第７の実施の形態の計算機装置の動作を、ＶＭ−ＩＤレジスタ１４のＶＭ−ＩＤがＶＭ＃１の場合を例にとって説明する。
まず、ＦＩＦＯ制御部７１は、キャッシュアクセス時に、該当する履歴データがＶＭ＃１のｂａｎｋ２１ｂ内に存在しない場合は、そのキャッシュ履歴を履歴データとしてｂａｎｋ２１ｂの入口ｅｎ１側（図２０中、上側）にエンキューする。
【０１２０】
一方、キャッシュアクセス時に、該当する履歴データがキャッシュ履歴テーブル１３ａ内に存在する場合、その履歴データを抜き出して再度エンキューする。
そしてｂａｎｋ２１ｂが一杯になった場合は、ＦＩＦＯ制御部７１は、キューの出口ｅｘ１側（図２０中、下側）に最も近い履歴データを廃棄する。
【０１２１】
また、ＦＩＦＯ制御部７１は、リカバリ動作時にリカバリ対象とする履歴データを、ｂａｎｋ２１ｂの入口ｅｎ１側から所定個数分、指定する。
そしてリカバリ時には、リカバリコントローラ１５が、ＦＩＦＯ制御部７１が指定した個数分の履歴データを用いてリカバリを行う。すなわち、本実施の形態の計算機装置（リカバリコントローラ１５）は、ＬＩＦＯ（Last In First Out）制御を行う。
【０１２２】
この第７の実施の形態の計算機装置によれば、第２の実施の形態の計算機装置１０ａと同様の効果が得られる。
そして、第７の実施の形態の計算機装置によれば、履歴エントリの記録管理にＦＩＦＯ制御を行い、リカバリ動作時にＬＩＦＯ制御を行うようにしたので、ＣＰＵ１０１とキャッシュ１１との間のアクセスを監視したり、ビットのＯＮ／ＯＦＦを行ったりする必要がないので、計算機装置の構成を大幅に拡張することなく、リカバリとキャッシュリソース使用の効率化を図ることができる。また、リカバリ対象とする履歴データの個数を変えることで、計算機装置の性能に応じた処理を実行させることができる。
【０１２３】
なお、本実施の形態では、ＦＩＦＯ制御部７１が、リカバリ対象とする履歴データの個数を指定したが、リカバリコントローラ１５がリカバリ対象とする履歴データの個数を指定するようにしてもよい。
【０１２４】
次に、第８の実施の形態の計算機装置について説明する。
以下、第８の実施の形態の計算機装置について、前述した第４の実施の形態との相違点を中心に説明し、同様の事項については、その説明を省略する。
【０１２５】
第８の実施の形態の計算機装置は、履歴データの管理方法が第４の実施の形態の計算機装置１０ｃと異なっている。
図２１は、第８の実施の形態の計算機装置を示す図である。
【０１２６】
第８の実施の形態の計算機装置は、ライトバック（write back）監視部８１と無効化信号監視部８２とＯＲ回路８３と、履歴データ削除部８４とをさらに有している。
ライトバック監視部８１は、キャッシュ１１からのメモリ１２へのライトバック（ＣＰＵ１０１からメモリ１２にデータ書込が行われても、キャッシュ１１上のデータを更新するだけで、条件が整わない限りメモリ１２への書き込み反映を行わない方式）を監視し、ライトバックを検出すると、ＯＲ回路８３にそのキャッシュデータのアドレスを出力する。
【０１２７】
無効化信号監視部８２は、キャッシュ１１への無効化命令を監視し、無効化命令を検出すると、ＯＲ回路８３に、その無効化命令のキャッシュデータのアドレスを出力する。
ＯＲ回路８３は、ライトバック監視部８１または無効化信号監視部８２のいずれか一方からアドレスが出力されると、そのアドレスを出力する。
【０１２８】
ＡＮＤ回路４３ａは、ＯＲ回路８３が出力するアドレスと履歴エントリ２１内のアドレスとの一致を判断するために設けられている。
このＡＮＤ回路４３ａは、これらのアドレスが一致したときは「１」を出力し、それ以外は「０」を出力する。
【０１２９】
履歴データ削除部８４は、ＡＮＤ回路４４から「１」が出力されると、該当するＶＭ−ＩＤを備える履歴データをキャッシュ履歴テーブル１３から削除する。
この第８の実施の形態の計算機装置によれば、第４の実施の形態の計算機装置１０ｃと同様の効果が得られる。
【０１３０】
そして、第８の実施の形態の計算機装置によれば、現在動作中の仮想計算機におけるキャッシュデータの無効化情報等についても、キャッシュ履歴テーブル１３の履歴データに反映させることができる。これにより、第４の実施の形態〜第７の実施の形態に比べ、さらに、キャッシュリカバリの効率化を図ることができる。
【０１３１】
次に、第９の実施の形態の計算機装置について説明する。
以下、第９の実施の形態の計算機装置について、前述した第４の実施の形態との相違点を中心に説明し、同様の事項については、その説明を省略する。
【０１３２】
第９の実施の形態の計算機装置は、履歴データの管理方法が第４の実施の形態の計算機装置１０ｃと異なっている。具体的には、第９の実施の形態の計算機装置は、メモリデータをキャッシュへ割り当てる方式としてセットアソシアティブ（set associative）方式を使用し、さらにそのセット内のデータ置換方式としてＬＲＵ（Least Recently Used）方式を利用している。
【０１３３】
図２２は、第９の実施の形態の計算機装置（の一部）を示す図である。
第９の実施の形態の計算機装置１０ｆは、キャッシュ１１の代わりにキャッシュ１１ｂを有し、キャッシュ履歴テーブル１３に格納される履歴データは、キャッシュ１１ｂのＬＲＵ情報（後述）に応じてセットされるＵビットを有している。
【０１３４】
また、計算機装置１０ｆは、このＵビットをセットするためのＬＲＵ情報反映部１５ａをリカバリコントローラ１５とは別個に有している。なお、図２２では、リカバリコントローラ１５等の図示を省略している。
【０１３５】
図２３は、第９の実施の形態のキャッシュを示す図である。
キャッシュ１１ｂは、キャッシュアドレス／データ格納部１１１と、ＬＲＵ情報格納部１１２とを有している。
【０１３６】
キャッシュアドレス／データ格納部１１１は、複数のキャッシュライン（図２３では、Ｗａｙ＃０〜Ｗａｙ＃３）を備える格納領域を示すＳＥＴ＃ｎ（ｎ＝１、２、・・・、ｋ）を有している。
【０１３７】
ＬＲＵ情報格納部１１２には、ＳＥＴ＃ｎ内のキャッシュラインＷａｙ＃０〜Ｗａｙ＃３の優先順を示す数値を備えるＬＲＵ情報が格納されている。「１」が最も新しく（最近使用され）、「４」が最も古い（使われてから最も時間が経過している）。
【０１３８】
キャッシュアドレス／データ格納部１１１の情報とＬＲＵ情報格納部１１２の情報の、横方向に並べられた情報同士が互いに関連づけられている。
ここで、ＳＥＴ＃ｎ内のキャッシュデータが書き換えられる場合、最も古いデータが廃棄され、新しくキャッシュされたデータに置き換わる。すなわち、図２３では、ＳＥＴ＃ｎ内のキャッシュラインＷａｙ＃２のキャッシュデータが、ＳＥＴ＃ｎにおける次の置換対象（リプレース対象）である。
【０１３９】
次に、第９の実施の形態の計算機装置のＵビットの制御方法を説明する。
図２４は、第９の実施の形態の計算機装置のＵビットの制御方法を示す図である。
なお、この処理は、リカバリ動作前に行われる処理である。
【０１４０】
まず、ＶＭ切替のうち他ＶＭへの切替信号をトリガーとしてＬＲＵ情報反映部１５ａが、動作を開始する（ステップＳ３１）。具体的には、キャッシュ履歴テーブル１３から自己の履歴データを見つけるために、ＶＭ−ＩＤレジスタ１４に格納されている（新たな仮想計算機ではなく）現在の仮想計算機のＶＭ−ＩＤに一致する全ての履歴エントリ２１のＶＭ−ＩＤをチェックし（ステップＳ３２、Ｓ３３）、一致する履歴エントリ２１のアドレスを参照する（ステップＳ３４）。
【０１４１】
そして、そのアドレスを有するキャッシュアドレス／データ格納部１１１をキャッシュ１１ｂから検索する（ステップＳ３５）。
次に、ＬＲＵ情報反映部１５ａが、見つかったキャッシュアドレス／データ格納部１１１に対応するＬＲＵ情報格納部１１２からＬＲＵ情報を取り出す（ステップＳ３６）。
【０１４２】
そして、ＬＲＵ情報反映部１５ａが、取り出したＬＲＵ情報を、ステップＳ３４にて参照したアドレスの履歴エントリ２１のＵビットに反映する（ステップＳ３７）。これは、例えば、ＬＲＵ情報が「４」であれば、ＵビットはＯＦＦ（０）、ＬＲＵ情報が「１」〜「３」であれば、ＵビットはＯＮ（１）にセットするようにしてもよいし、ステップＳ３３終了時に一致する履歴エントリのＵビットをＯＮ（１）にセットしておき、取り出したＬＲＵ情報が「４」であるときのみＯＦＦ（０）にセットするようにしてもよい。
【０１４３】
これにより、リカバリ動作時には、リカバリコントローラ１５は、キャッシュ履歴テーブル１３に格納されている履歴データのうち、ＵビットがＯＮにセットされているデータのみ復元するよう制御する。なお、この制御方法は、前述した第４の実施の形態のＡビットを用いた方法と同様であるため、その説明を省略する。
【０１４４】
この第９の実施の形態の計算機装置１０ｆによれば、第４の実施の形態の計算機装置１０ｃと同様の効果が得られる。
そして、第９の実施の形態の計算機装置１０ｆによれば、キャッシュに最小限の機能を追加することで、キャッシュ履歴テーブル１３にｂａｎｋを設定しなくてもキャッシュリカバリの効率化を図ることができ、計算機装置の構造の簡易化を図ることができる。
【０１４５】
＜変形例＞
Ｕビットのバリエーションとして、第５の実施の形態の計算機装置１０ｄにて説明したランクのような概念を導入することもできる。
【０１４６】
例えばキャッシュ１１ｂ（4way set associative）の場合には、４段階の優先度を示す１〜４の数値を保持する手段を履歴データに設け、リカバリ動作時に用いる優先順位を決める。その際、リカバリ有効数や優先度を指定できる手段も設けておき、例えば優先度２までという指定であれば、優先度３、４を備える履歴データはリカバリ対象としないよう制御する。
【０１４７】
以上、本発明の計算機装置およびそのキャッシュリカバリ方法を、図示の実施の形態に基づいて説明したが、本発明はこれに限定されるものではなく、各部の構成は、同様の機能を有する任意の構成のものに置換することができる。また、本発明に、他の任意の構成物や工程が付加されていてもよい。
【０１４８】
また、本発明は、前述した各実施の形態のうちの、任意の２以上の構成（特徴）を組み合わせたものであってもよい。
以上の第１〜第９の実施の形態に関し、更に以下の付記を開示する。
【０１４９】
（付記１）  複数の仮想計算機を切替えて動作させる計算機装置において、
高速キャッシュと、
前記高速キャッシュに転送するデータを記憶する記憶部と、
仮想計算機を一意に識別する識別子に所定のアドレスが関連づけられた履歴情報を格納する履歴情報格納部と、
動作する仮想計算機の切替えがあると、前記履歴情報格納部を参照して切替え後の仮想計算機の前記識別子に一致する前記履歴情報に含まれる前記識別子の有無を判断する判断部と、
一致した前記識別子に関連づけられた前記所定のアドレスに基づいて、前記記憶部が記憶している前記データを特定させ、特定した前記データを前記高速キャッシュに転送させる転送指示部と、
を有することを特徴とする計算機装置。
【０１５０】
（付記２）  実行中の前記仮想計算機の前記識別子を取得する識別子取得部と、
前記データのアドレスを、前記識別子取得部が取得した前記識別子に関連づけて前記履歴情報を生成する履歴情報生成部と、
をさらに有し、
前記履歴情報格納部は、前記識別子毎に定められた履歴情報格納領域を有しており、
前記判断部は、切替え後の前記仮想計算機の前記識別子により特定される前記履歴情報格納領域を参照することを特徴とする付記１記載の計算機装置。
【０１５１】
（付記３）  前記履歴情報格納部は、１つの前記識別子に複数の前記履歴情報が関連づけられた履歴情報格納領域を複数有しており、
前記判断部は、切替え後の前記仮想計算機の前記識別子により特定される前記履歴情報格納領域を参照することを特徴とする付記１または２記載の計算機装置。
【０１５２】
（付記４）  前記データに前記識別子が含まれており、
前記高速キャッシュからの前記データの追い出しまたは無効化を監視する監視部と、
前記データの追い出しまたは無効化が発生すると、追い出されたまたは無効化された前記データと、前記データに含まれている前記識別子とを関連づけて、前記履歴情報を生成する履歴情報生成部と、
をさらに有することを特徴とする付記１または２記載の計算機装置。
【０１５３】
（付記５）  アクセスの頻度を示すアクセス頻度情報を前記履歴情報に付加する付加部と、
前記高速キャッシュへのアクセスを観測し、アクセスのあったデータに対応する前記履歴情報の前記アクセス頻度情報のアクセスの頻度を増加させるアクセス頻度増加部と、をさらに有し、
前記判断部は、前記判断の際、前記アクセス頻度情報により示されるアクセス頻度が予め定められた条件を満たす前記履歴情報に含まれる前記識別子の有無を判断することを特徴とする付記１または２記載の計算機装置。
【０１５４】
（付記６）  前記アクセス頻度増加部は、現在動作している前記仮想計算機の前記識別子に一致する前記識別子を備え、かつ、アクセスのあった前記データのアドレスに一致するアドレスを備える前記履歴情報の前記アクセス頻度情報のアクセスの頻度を増加させることを特徴とする付記５記載の計算機装置。
【０１５５】
（付記７）  前記アクセス頻度情報は、１ビットで構成されており、前記アクセス頻度増加部は、アクセスのあったデータに対応する前記履歴情報の前記アクセス頻度情報のビットを有効とし、前記判断部は、前記ビットが有効とされている前記履歴情報に含まれる前記識別子の有無を判断することを特徴とする付記５記載の計算機装置。
【０１５６】
（付記８）  前記付加部は、前記履歴情報の格納時に前記アクセス頻度情報を付加することを特徴とする付記５記載の計算機装置。
（付記９）  所定時間アクセスがない前記アクセス頻度情報のアクセス履歴を消去する履歴消去実行部をさらに有することを特徴とする付記５記載の計算機装置。
【０１５７】
（付記１０）  前記履歴消去実行部は、前記アクセス履歴を定期的に消去することを特徴とする付記９記載の計算機装置。
（付記１１）  前記アクセス頻度情報は、カウンタで構成されており、前記アクセス頻度増加部は、アクセスのあったデータに対応する前記履歴情報の前記カウンタをインクリメントし、前記判断部は、所定値以上のカウンタ値を備える前記履歴情報に含まれる前記識別子の有無を判断することを特徴とする付記５または９記載の計算機装置。
【０１５８】
（付記１２）  前記履歴情報格納部は、１つの前記識別子に複数の前記履歴情報が関連づけられた履歴情報格納領域を複数有しており、
前記履歴情報格納領域へ前記履歴情報をＦＩＦＯ方式により格納するＦＩＦＯ制御部をさらに有し、
前記ＦＩＦＯ制御部は、前記高速キャッシュへのアクセスを観測し、アクセスのあったデータに対応する前記履歴情報が、前記履歴情報格納領域に格納されているか否かを判断し、格納されている場合、アクセスのあったデータに対応する前記履歴情報を取り出して前記履歴情報格納領域に再度エンキューし、
前記判断部は、切替え後の前記仮想計算機の前記識別子により特定される前記履歴情報格納領域を参照することを特徴とする付記１または２記載の計算機装置。
【０１５９】
（付記１３）  前記ＦＩＦＯ制御部は、前記履歴情報格納領域の出口側から出力される前記履歴情報を廃棄することを特徴とする付記１２記載の計算機装置。
（付記１４）  前記判断部の判断対象とする前記履歴情報の個数は、前記履歴情報格納領域の入口側から所定個指定されることを特徴とする付記１２記載の計算機装置。
【０１６０】
（付記１５）  前記高速キャッシュのデータを無効化する情報を監視する監視部と、
前記監視部から得られた無効化する前記データに対応する前記履歴情報を前記履歴情報格納部から削除する履歴情報削除部と、をさらに有することを特徴とする付記１または２記載の計算機装置。
【０１６１】
（付記１６）  前記履歴情報削除部は、現在動作している前記仮想計算機の前記識別子に一致する前記識別子を備え、かつ、アクセスのあった前記データのアドレスに一致するアドレスを備える前記履歴情報を前記履歴情報格納部から削除することを特徴とする付記１５記載の計算機装置。
【０１６２】
（付記１７）  前記記憶部に記憶されている前記データを前記高速キャッシュに割り当てる方式としてセットアソシアティブ方式を使用して、前記データを前記高速キャッシュに割り当てる割り当て部と、
アクセスの頻度を示すアクセス頻度情報を前記履歴情報に付加する付加部と、
前記仮想計算機の切替えがあると、前記高速キャッシュに格納されている前記データが廃棄対象となるか否かの指標を示すＬＲＵ情報に対応する前記履歴情報の前記アクセス頻度情報のアクセスの頻度を増加させるアクセス頻度増加部と、をさらに有し、
前記判断部は、前記判断の際、前記アクセス頻度情報により示されるアクセス頻度が予め定められた条件を満たす前記履歴情報に含まれる前記識別子の有無を判断することを特徴とする付記１または２記載の計算機装置。
【０１６３】
（付記１８）  前記アクセス頻度増加部は、現在動作している前記仮想計算機の前記識別子に一致する前記識別子を備え、かつ、アクセスのあった前記データのアドレスに一致するアドレスを備える前記履歴情報の前記アクセス頻度情報のアクセスの頻度を増加させることを特徴とする付記１７記載の計算機装置。
【０１６４】
（付記１９）  前記アクセス頻度増加部は、前記データが次の廃棄対象になることを示す前記ＬＲＵ情報以外の前記履歴情報の前記アクセス頻度情報のアクセスの頻度を増加させることを特徴とする付記１７記載の計算機装置。
【０１６５】
（付記２０）  前記アクセス頻度情報は、１ビットで構成されており、
前記アクセス頻度増加部は、前記データが次の廃棄対象になることを示す前記ＬＲＵ情報以外の前記アクセス頻度情報のビットを有効とし、
前記判断部は、前記ビットが有効とされている前記履歴情報に含まれる前記識別子の有無を判断することを特徴とする付記１７記載の計算機装置。
【０１６６】
（付記２１）  前記付加部は、前記履歴情報の格納時に前記アクセス頻度情報を付加することを特徴とする付記１７記載の計算機装置。
（付記２２）  前記アクセス頻度情報は、カウンタで構成されており、前記アクセス頻度増加部は、アクセスのあったデータに対応する前記履歴情報の前記カウンタをインクリメントし、前記判断部は、所定値以上のカウンタ値を備える前記履歴情報に含まれる前記識別子の有無を判断することを特徴とする付記１７記載の計算機装置。
【０１６７】
（付記２３）  複数の仮想計算機を切替えて動作させる計算機装置のキャッシュリカバリ方法において、
動作する仮想計算機の切替えがあると、判断部が、仮想計算機を一意に識別する識別子に所定のアドレスが関連づけられた履歴情報を格納する履歴情報格納部を参照して切替え後の仮想計算機の前記識別子に一致する前記履歴情報に含まれる前記識別子の有無を判断し、
転送指示部が、一致した前記識別子に関連づけられた前記所定のアドレスに基づいて、記憶部上のそのアドレスに記憶されている前記データを前記高速キャッシュに転送させる、
ことを特徴とする計算機装置のキャッシュリカバリ方法。
【図面の簡単な説明】
【０１６８】
【図１】本発明の概要を示す図である。
【図２】計算機装置のハードウェア構成例を示す図である。
【図３】計算機装置の機能を示すブロック図である。
【図４】キャッシュに格納されているデータを示す図である。
【図５】履歴データの記録方法を説明する図である。
【図６】リカバリ動作を説明する図である。
【図７】履歴エントリを拡張した例を示す図である。
【図８】第２の実施の形態の計算機装置を示す図である。
【図９】第３の実施の形態の計算機装置のキャッシュの内部構造を示す図である。
【図１０】第３の実施の形態の履歴データの記録方法を説明する図である。
【図１１】第４の実施の形態の履歴データを示す図である。
【図１２】ＡビットをＯＮする方法を示す図である。
【図１３】ＡビットをＯＦＦする方法を示す図である。
【図１４】第４の実施の形態の計算機装置のリカバリ動作を説明する図である。
【図１５】第５の実施の形態の履歴データを示す図である。
【図１６】第５の実施の形態の計算機装置を示す図である。
【図１７】ランクを示す図である。
【図１８】第６の実施の形態の計算機装置を示す図である。
【図１９】エイジングカウンタの推移を示す図である。
【図２０】第７の実施の形態の計算機装置を示す図である。
【図２１】第８の実施の形態の計算機装置を示す図である。
【図２２】第９の実施の形態の計算機装置を示す図である。
【図２３】第９の実施の形態のキャッシュを示す図である。
【図２４】第９の実施の形態の計算機装置のＵビットの制御方法を示す図である。
【符号の説明】
【０１６９】
１、１０、１０ａ、１０ｂ、１０ｃ、１０ｄ、１０ｅ、１０ｆ  計算機装置
２  高速キャッシュ
３  記憶部
３ａ  データ
４  履歴情報
４ａ  識別子
４ｂ  アドレス
５  履歴情報格納部
６  判断部
７  転送指示部
１１、１１ｂ  キャッシュ
１１ａ  キャッシュエントリ
１２  メモリ
１３、１３ａ  キャッシュ履歴テーブル
１４  ＶＭ−ＩＤレジスタ
１５  リカバリコントローラ
１５ａ  ＬＲＵ情報反映部
１６、４２、４３、４３ａ、４４、４５、４７  ＡＮＤ回路
２１、２１ａ  履歴エントリ
２１ｂ  ｂａｎｋ
４１  アクセス監視部
４６、８３  ＯＲ回路
４８  ビットクリア実行部
５１  優先対象設定部
５２  有効ランク設定部
５２ａ  ランクテーブル
５３  有効ランク制御部
６１  有効閾値設定部
６２  カウンタ比較部
７１  ＦＩＦＯ制御部
８１  ライトバック監視部
８２  無効化信号監視部
８４  履歴データ削除部
１０１ａ  プログラム実行部
１０１ｂ  タイマ
１１１  キャッシュアドレス／データ格納部
１１２  ＬＲＵ情報格納部
２１１  領域
【図１】
2008293472.tif 000003
【図２】
2008293472.tif 000004
【図３】
2008293472.tif 000005
【図４】
2008293472.tif 000006
【図５】
2008293472.tif 000007
【図６】
2008293472.tif 000008
【図７】
2008293472.tif 000009
【図８】
2008293472.tif 000010
【図９】
2008293472.tif 000011
【図１０】
2008293472.tif 000012
【図１１】
2008293472.tif 000013
【図１２】
2008293472.tif 000014
【図１３】
2008293472.tif 000015
【図１４】
2008293472.tif 000016
【図１５】
2008293472.tif 000017
【図１６】
2008293472.tif 000018
【図１７】
2008293472.tif 000019
【図１８】
2008293472.tif 000020
【図１９】
2008293472.tif 000021
【図２０】
2008293472.tif 000022
【図２１】
2008293472.tif 000023
【図２２】
2008293472.tif 000024
【図２３】
2008293472.tif 000025
【図２４】
2008293472.tif 000026