(57)【要約】  セキュアＯＳと通常ＯＳとを実行するプロセッサと、キャッシュメモリとを備える仮想計算機システムである。キャッシュメモリは、格納するデータについて、外部のメインメモリにおけるセキュア記憶領域から読み出されたデータであるか否かを識別可能に格納する。そして、キャッシュメモリは、プロセッサが通常ＯＳを実行している際に発生する、セキュア記憶領域への書き戻しの断続的に実行される回数を抑制するように、メインメモリへのデータの書き戻しを行う。
2012102002.tif 000002
【特許請求の範囲】
【請求項１】
第１モードと第２モードとを有するプロセッサと、当該プロセッサによって当該第１モードで実行される第１オペレーティングシステムと、当該プロセッサによって当該第２モードで実行される第２オペレーティングシステムとから構成される仮想計算機システムであって、
前記プロセッサが前記第１モードであるときに限って、外部のメインメモリにおける所定のセキュア記憶領域への書き込みを許可する書込制御部と、
前記プロセッサによって前記メインメモリから読み出されたデータを格納する複数のウェイを有するキャッシュメモリとを備え、
前記キャッシュメモリは、
前記プロセッサが前記メインメモリからデータを読み出す際に、前記セキュア記憶領域からデータが読み出されたか否かを識別可能に、当該データを、前記複数のウェイのうちの新規格納可能状態であるウェイのいずれかに格納するデータ格納部と、
前記第２オペレーティングシステムを実行する前記プロセッサが前記メインメモリにアクセスする際に発生する、前記複数のウェイのうちの少なくとも１つを新規格納可能状態とするための前記セキュア記憶領域へのデータの書き戻しについて、断続的に実行される回数が抑制されるように、前記セキュア記憶領域からデータが読み出されたか否かを識別して、識別結果を用いた所定アルゴリズムで、前記複数のウェイに格納されているデータの前記メインメモリへの書き戻しを行う書戻部とを有する
ことを特徴とする仮想計算機システム。
【請求項２】
前記キャッシュメモリは、格納するデータについて、前記セキュア記憶領域から読み出されたデータであることを示すセキュア識別情報を格納するためのセキュア識別情報格納領域を有し、
前記データ格納部は、前記プロセッサによって前記メインメモリから読み出されたデータを前記複数のウェイのいずれかに格納する場合において、当該データが前記セキュア記憶領域から読み出されたものであるときに限って、前記セキュア識別情報を当該データに対応付けて前記セキュア識別情報格納領域に格納することで前記識別を可能とする
ことを特徴とする請求項１記載の仮想計算機システム。
【請求項３】
前記複数のウェイのそれぞれは、前記メインメモリの記憶領域を指定するアドレスにおける所定の一部のビット列からなるインデックスによって指定される、前記メインメモリから読み出されたデータを格納するためのライン格納領域を複数含み、
前記データ格納部は、前記格納を、前記プロセッサが前記メインメモリからアドレスを指定してデータを読み出す際に、当該アドレスを構成するインデックスによって指定されるライン格納領域のうち、新規格納可能状態であるウェイのライン格納領域に対して行い、
前記キャッシュメモリは、
前記ライン格納領域のそれぞれについての、格納するデータが前記メインメモリとの間でコヒーレンシが保たれていないことを示すダーティ情報を格納するためのダーティ情報格納領域と、
前記ライン格納領域のそれぞれについて、格納するデータが前記メインメモリとの間でコヒーレンシが保たれていない場合に限って、前記ダーティ情報格納領域に前記ダーティ情報が格納されるように、前記ダーティ情報格納領域への前記ダーティ情報の格納を制御するダーティ情報格納制御部とを有し、
前記所定アルゴリズムは、前記第１オペレーティングシステムを実行するプロセッサによって電力削減命令が発行された場合に、前記ダーティ情報格納領域に前記ダーティ情報が格納されているライン格納領域のうちの、前記セキュア識別情報格納領域に前記セキュア識別情報が格納されているライン格納領域の全てについて、格納されているデータを連続して前記セキュア記憶領域へ書き戻すアルゴリズムである
ことを特徴とする請求項２記載の仮想計算機システム。
【請求項４】
電力削減命令のそれぞれは、複数の電力削減レベルのうちのいずれかに属し、
前記キャッシュメモリは、前記ライン格納領域のそれぞれについての、同一インデックスで指定されるライン記憶領域のうちのいずれかを新規格納可能状態とするための優先度を示す新規格納優先度を格納する新規格納優先度格納領域を有し、
前記書戻部は、前記書き戻しを、発行された電力削減命令の属する電力削減レベルによって定められる所定の優先度以上の新規格納優先度が前記新規格納優先度格納領域に格納されているライン格納領域に限って行う
ことを特徴とする請求項３記載の仮想計算機システム。
【請求項５】
前記複数のウェイのそれぞれは、前記メインメモリの記憶領域を指定するアドレスにおける所定の一部のビット列からなるインデックスによって指定される、前記メインメモリから読み出されたデータを格納するためのライン格納領域を複数含み、
前記データ格納部は、前記格納を、前記プロセッサが前記メインメモリからアドレスを指定してデータを読み出す際に、当該アドレスを構成するインデックスによって指定されるライン格納領域のうち、新規格納可能状態であるウェイのライン格納領域に対して行い、
前記キャッシュメモリは、
前記ライン格納領域のそれぞれについての、同一インデックスで指定されるライン記憶領域のうちのいずれかを新規格納可能状態とするための優先度を示す新規格納優先度を格納する新規格納優先度格納領域と、
前記データ格納部によって、いずれかのライン格納領域にデータが格納される際に、当該ライン格納領域を指定するインデックスによって指定される各ライン格納領域について、前記セキュア識別情報格納領域にセキュア識別情報が格納されているライン格納領域についての新規格納優先度の方が、前記セキュア識別情報格納領域にセキュア識別情報が格納されていないライン格納領域についての新規格納優先度よりも低くなるように、前記新規格納優先度格納領域に格納されている新規格納優先度を更新する新規格納優先度更新部とを有し、
前記所定アルゴリズムは、前記新規格納優先度格納領域に格納されている新規格納優先度を参照して、同一のインデックスによって指定されるライン格納領域のうち、最も高い新規格納優先度となるライン格納領域に格納されているデータについて書き戻すアルゴリズムである
ことを特徴とする請求項２記載の仮想計算機システム。
【請求項６】
前記複数のウェイのそれぞれは、前記メインメモリの記憶領域を指定するアドレスにおける所定の一部のビット列からなるインデックスによって指定される、前記メインメモリから読み出されたデータを格納するためのライン格納領域を複数含み、
前記データ格納部は、前記格納を、前記プロセッサが前記メインメモリからアドレスを指定してデータを読み出す際に、当該アドレスを構成するインデックスによって指定されるライン格納領域のうち、新規格納可能状態であるウェイのライン格納領域に対して行い、
前記キャッシュメモリは、
前記ライン格納領域のそれぞれについての、同一インデックスで指定されるライン記憶領域のうちのいずれかを新規格納可能状態とするための優先度を示す新規格納優先度を格納する新規格納優先度格納領域と、
前記第１オペレーティングシステムを実行するプロセッサによって電力削減命令が発行された場合に、前記セキュア識別情報格納領域にセキュア識別情報が格納されているライン格納領域についての新規格納優先度の方が、前記セキュア識別情報格納領域にセキュア識別情報が格納されていないライン格納領域についての新規格納優先度よりも低くなるように、前記新規格納優先度格納領域に格納されている新規格納優先度を更新する新規格納優先度更新部とを有し、
前記所定アルゴリズムは、前記新規格納優先度格納領域に格納されている新規格納優先度を参照して、同一のインデックスによって指定されるライン格納領域のうち、最も高い新規格納優先度のライン格納領域に格納されているデータについて書き戻すアルゴリズムである
ことを特徴とする請求項２記載の仮想計算機システム。
【請求項７】
前記複数のウェイのそれぞれは、前記メインメモリにおける記憶領域を指定するアドレスにおける所定の一部のビット列からなるインデックスによって指定される、前記メインメモリから読み出されたデータを格納するためのライン格納領域を複数含み、
前記データ格納部は、前記格納を、前記プロセッサが前記メインメモリからアドレスを指定してデータを読み出す際に、当該アドレスを構成するインデックスによって指定されるライン格納領域のうち、新規格納可能状態であるウェイのライン格納領域に対して行い、
前記キャッシュメモリは、
前記プロセッサが前記メインメモリからアドレスを指定してデータを読み出す際に、当該アドレスを構成するインデックスによって指定されるライン格納領域についての、同一インデックスで指定されるライン記憶領域のうちのいずれかを新規格納可能状態とするための優先度を示す新規格納優先度を格納するための新規格納優先度格納領域と、
前記第２オペレーティングシステムの実行制御状態がスリープ状態である場合において、前記プロセッサが前記メインメモリからアドレスを指定してデータを読み出す際に、当該アドレスを構成するインデックスによって指定されるライン格納領域のそれぞれについて、前記第２オペレーティングシステムを実行するプロセッサによって読み出されたデータが格納されているライン格納領域についての新規格納優先度の方が、前記第１オペレーティングシステムを実行するプロセッサによって読み出されたデータが格納されているライン格納領域についての新規格納優先度よりも低くなるように新規格納優先度を生成して前記新規格納優先度格納領域に格納する新規格納優先度格納部とを有し、
前記所定アルゴリズムは、前記新規格納優先度格納領域に格納されている新規格納優先度を参照して、前記プロセッサが前記メインメモリからアドレスを指定してデータを読み出す際に、当該アドレスを構成するインデックスによって指定されるライン格納領域のうち、最も高い新規格納優先度となるライン格納領域に格納されているデータについて書き戻すアルゴリズムである
ことを特徴とする請求項２記載の仮想計算機システム。
【請求項８】
前記複数のウェイは、第１ウェイと第２ウェイとを含み、
前記データ格納部は、前記セキュア記憶領域から読み出されたデータに限って前記第１ウェイに格納し、前記セキュア記憶領域以外の記憶領域から読み出されたデータに限って前記第２ウェイに格納することで前記識別を可能とし、
前記所定アルゴリズムは、前記セキュア記憶領域以外の記憶領域から読み出されたデータを格納する場合において、前記メインメモリへの書き戻しが発生するとき、前記第２ウェイを前記メインメモリへの書き戻しの対象ウェイとするアルゴリズムである
ことを特徴とする請求項１記載の仮想計算機システム。
【請求項９】
第１モードと第２モードとを有するプロセッサと、当該プロセッサによって当該第１モードで実行される第１オペレーティングシステムと、当該プロセッサによって当該第２モードで実行される第２オペレーティングシステムと、前記プロセッサが前記第１モードであるときに限って、外部のメインメモリにおける所定のセキュア記憶領域への書き込みを許可する書込制御部と、前記プロセッサによって前記メインメモリから読み出されたデータを格納する複数のウェイを有するキャッシュメモリとから構成される仮想計算機システムを制御する仮想計算機制御方法であって、
前記キャッシュメモリが、前記プロセッサが前記メインメモリからデータを読み出す際に、前記セキュア記憶領域からデータが読み出されたか否かを識別可能に、当該データを、前記複数のウェイのうちの新規格納可能状態であるウェイのいずれかに格納するデータ格納ステップと、
前記キャッシュメモリが、前記第２オペレーティングシステムを実行する前記プロセッサが前記メインメモリにアクセスする際に発生する、前記複数のウェイのうちの少なくとも１つを新規格納可能状態とするための前記セキュア記憶領域へのデータの書き戻しについて、断続的に実行される回数が抑制されるように、前記セキュア記憶領域からデータが読み出されたか否かを識別して、識別結果を用いた所定アルゴリズムで、前記複数のウェイに格納されているデータの前記メインメモリへの書き戻しを行う書戻ステップとを含む
ことを特徴とする仮想計算機制御方法。
【請求項１０】
第１モードと第２モードとを有するプロセッサと、当該プロセッサによって当該第１モードで実行される第１オペレーティングシステムと、当該プロセッサによって当該第２モードで実行される第２オペレーティングシステムと、前記プロセッサが前記第１モードであるときに限って、外部のメインメモリにおける所定のセキュア記憶領域への書き込みを許可する書込制御部と、前記プロセッサによって前記メインメモリから読み出されたデータを格納する複数のウェイを有するキャッシュメモリとから構成される仮想計算機システムに、自システムを制御する仮想計算機制御処理を実行させるための仮想計算機制御プログラムであって、
前記仮想計算機制御処理は、
前記キャッシュメモリが、前記プロセッサが前記メインメモリからデータを読み出す際に、前記セキュア記憶領域からデータが読み出されたか否かを識別可能に、当該データを、前記複数のウェイのうちの新規格納可能状態であるウェイのいずれかに格納するデータ格納ステップと、
前記キャッシュメモリが、前記第２オペレーティングシステムを実行する前記プロセッサが前記メインメモリにアクセスする際に発生する、前記複数のウェイのうちの少なくとも１つを新規格納可能状態とするための前記セキュア記憶領域へのデータの書き戻しについて、断続的に実行される回数が抑制されるように、前記セキュア記憶領域からデータが読み出されたか否かを識別して、識別結果を用いた所定アルゴリズムで、前記複数のウェイに格納されているデータの前記メインメモリへの書き戻しを行う書戻ステップとを含む
ことを特徴とする仮想計算機制御プログラム。
【請求項１１】
第１モードと第２モードとを有するプロセッサと、当該プロセッサによって当該第１モードで実行される第１オペレーティングシステムと、当該プロセッサによって当該第２モードで実行される第２オペレーティングシステムと、前記プロセッサが前記第１モードであるときに限って、外部のメインメモリにおける所定のセキュア記憶領域への書き込みを許可する書込制御部と、前記プロセッサによって前記メインメモリから読み出されたデータを格納する複数のウェイを有するキャッシュメモリとから構成される仮想計算機システムに、自システムを制御する仮想計算機制御処理を実行させるための仮想計算機制御プログラムを記録する記録媒体であって、
前記仮想計算機制御処理は、
前記キャッシュメモリが、前記プロセッサが前記メインメモリからデータを読み出す際に、前記セキュア記憶領域からデータが読み出されたか否かを識別可能に、当該データを、前記複数のウェイのうちの新規格納可能状態であるウェイのいずれかに格納するデータ格納ステップと、
前記キャッシュメモリが、前記第２オペレーティングシステムを実行する前記プロセッサが前記メインメモリにアクセスする際に発生する、前記複数のウェイのうちの少なくとも１つを新規格納可能状態とするための前記セキュア記憶領域へのデータの書き戻しについて、断続的に実行される回数が抑制されるように、前記セキュア記憶領域からデータが読み出されたか否かを識別して、識別結果を用いた所定アルゴリズムで、前記複数のウェイに格納されているデータの前記メインメモリへの書き戻しを行う書戻ステップとを含む
ことを特徴とする記録媒体。
【請求項１２】
第１モードと第２モードとを有するプロセッサと、当該プロセッサによって当該第１モードで実行される第１オペレーティングシステムと、当該プロセッサによって当該第２モードで実行される第２オペレーティングシステムとから構成される集積回路であって、
前記プロセッサが前記第１モードであるときに限って、外部のメインメモリにおける所定のセキュア記憶領域への書き込みを許可する書込制御部と、
前記プロセッサによって前記メインメモリから読み出されたデータを格納する複数のウェイを有するキャッシュメモリとを備え、
前記キャッシュメモリは、
前記プロセッサが前記メインメモリからデータを読み出す際に、前記セキュア記憶領域からデータが読み出されたか否かを識別可能に、当該データを、前記複数のウェイのうちの新規格納可能状態であるウェイのいずれかに格納するデータ格納部と、
前記第２オペレーティングシステムを実行する前記プロセッサが前記メインメモリにアクセスする際に発生する、前記複数のウェイのうちの少なくとも１つを新規格納可能状態とするための前記セキュア記憶領域へのデータの書き戻しについて、断続的に実行される回数が抑制されるように、前記セキュア記憶領域からデータが読み出されたか否かを識別して、識別結果を用いた所定アルゴリズムで、前記複数のウェイに格納されているデータの前記メインメモリへの書き戻しを行う書戻部とを有する
ことを特徴とする集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、キャッシュメモリを備える仮想計算機システムに関する。
【背景技術】
【０００２】
従来、１つの物理計算機上で複数のオペレーティングシステム（Operating System:OS）を実行する仮想計算機システムが知られている。【０００３】
例えば、特許文献１〜特許文献４には、プロセッサとキャッシュメモリとを備える仮想計算機システムについての技術が記載されている。【０００４】
ところで、秘匿すべき情報を取り扱う仮想計算機システムにおいては、セキュリティ保護の観点から、その秘匿すべき情報は、信頼できる特定のプログラム（以下、「セキュアプログラム」という。）以外のプログラムによってアクセス（読み出し又は書き込み）されないように保護されていることが望まれる。【０００５】
このため、仮想計算機システムには、プロセッサのモードが特定の特権モード（以下、「セキュアモード」と呼ぶ。）である場合に限って、メインメモリの記憶領域のうちの特定の記憶領域（以下、「セキュア領域」と呼ぶ。）へのアクセスを許可するＭＰＵ（Memory Protection Unit：メモリ保護ユニット）と、セキュアプログラムに限って実行制御を行う信頼できる特定のオペレーティングシステム（以下、「セキュアＯＳ」と呼ぶ。）と、セキュアプログラム以外のプログラムに限って実行制御を行うオペレーティングシステム（以下、「通常ＯＳ」と呼ぶ。）とを備えるものがある。そして、このような仮想計算機システムにおいて、秘匿すべき情報がセキュア領域に格納され、プロセッサが、セキュアモードである場合に限ってセキュアＯＳを実行し、プロセッサが、セキュアモードよりも下位の特権モード（以下、「通常特権モード」と呼ぶ。）である場合には通常ＯＳを実行することで、その秘匿すべき情報は、セキュアプログラム以外のプログラムから保護される。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開昭６２−１０５２５０号公報
【特許文献２】特開平０７−１０５０９１号公報
【特許文献３】特開２００１−２８２５６０号公報
【特許文献４】ＷＯ  ２００９／０７５０７０号公報
【特許文献５】特開２０００−２４２５１２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
上記構成を備える仮想計算機システムがキャッシュメモリを搭載している場合において、キャッシュメモリに、セキュア領域に記憶されていたデータが格納されているときには、プロセッサが通常特権モードで通常ＯＳを実行制御している期間中に、キャッシュメモリの利用に伴って、そのデータについての、キャッシュメモリによるセキュア領域への書き戻し（以下、「通常ＯＳ実行制御時におけるセキュア領域への書き戻し」と呼ぶ。）が発生することがある。【０００８】
以下、通常ＯＳ実行制御時におけるセキュア領域への書き戻しが発生した場合に、この仮想計算機システムで行われることとなる処理について説明する。【０００９】
通常ＯＳ実行制御時におけるセキュア領域への書き戻しが発生すると、ＭＰＵは、プロセッサのモードがセキュアモードでないため、そのデータについてのセキュア領域への書き込みを許可せずに、プロセッサへ例外の発生を通知する。すると、プロセッサは、セキュア領域へのデータの書き戻しを実現するために、（１）プロセッサのレジスタ値等といったプロセッサの状態を示す情報をメインメモリの所定のコンテクスト退避領域に退避させ、（２）プロセッサのモードをセキュアモードに変更し、（３）所定のコンテクスト退避領域に退避していた、セキュアＯＳ実行時のプロセッサの状態を示す情報をプロセッサのレジスタ値等に復元して、実行するＯＳを、通常ＯＳからセキュアＯＳへと切り替える。すると、ＭＰＵがセキュア領域へのデータの書き込みを許可するようになるので、キャッシュメモリによるデータの書き戻しが実行される。その後、プロセッサは、通常特権モードでの通常ＯＳの実行制御を再開するために、（１）プロセッサのレジスタ値等といったプロセッサの状態を示す情報をメインメモリの所定のコンテクスト退避領域に退避させ、（２）プロセッサのモードを通常特権モードに変更し、（３）所定のコンテクスト退避領域に退避していた、通常ＯＳ実行時のプロセッサの状態を示す情報をプロセッサのレジスタ値等に復元して、実行するＯＳを、セキュアＯＳから通常ＯＳへと切り替える。【００１０】
このように、通常ＯＳ実行制御時におけるセキュア領域への書き戻しが発生すると、プロセッサは、少なくとも２回のコンテクストスイッチングを行わなければならない。このため、通常ＯＳ実行制御時におけるセキュア領域への書き戻しにおける処理時間が比較的大きく（例えば、数ｍｓ）なってしまう。【００１１】
従って、一定の処理性能が必要となる仮想計算機システムにとっては、通常ＯＳ実行制御時におけるセキュア領域への書き戻しの発生頻度が低減されることが望ましい。【００１２】
そこで、本発明は係る問題に鑑みてなされたものであり、通常ＯＳ実行制御時におけるセキュア領域への書き戻しの発生頻度が、従来よりも低減される可能性を高くする仮想計算機システムを提供することを目的とする。
【課題を解決するための手段】
【００１３】
上記課題を解決するために本発明に係る仮想計算機システムは、第１モードと第２モードとを有するプロセッサと、当該プロセッサによって当該第１モードで実行される第１オペレーティングシステムと、当該プロセッサによって当該第２モードで実行される第２オペレーティングシステムとから構成される仮想計算機システムであって、前記プロセッサが前記第１モードであるときに限って、外部のメインメモリにおける所定のセキュア記憶領域への書き込みを許可する書込制御部と、前記プロセッサによって前記メインメモリから読み出されたデータを格納する複数のウェイを有するキャッシュメモリとを備え、前記キャッシュメモリは、前記プロセッサが前記メインメモリからデータを読み出す際に、前記セキュア記憶領域からデータが読み出されたか否かを識別可能に、当該データを、前記複数のウェイのうちの新規格納可能状態であるウェイのいずれかに格納するデータ格納部と、前記第２オペレーティングシステムを実行する前記プロセッサが前記メインメモリにアクセスする際に発生する、前記複数のウェイのうちの少なくとも１つを新規格納可能状態とするための前記セキュア記憶領域へのデータの書き戻しについて、断続的に実行される回数が抑制されるように、前記セキュア記憶領域からデータが読み出されたか否かを識別して、識別結果を用いた所定アルゴリズムで、前記複数のウェイに格納されているデータの前記メインメモリへの書き戻しを行う書戻部とを有することを特徴とする。
【発明の効果】
【００１４】
上述の構成を備える本発明に係る仮想計算機システムによると、プロセッサが第２モード（通常特権モード）で第２オペレーティングシステム（通常ＯＳ）を実行している場合における、セキュア記憶領域（セキュア領域）への書き戻しについて、断続的に実行される回数が抑制されることとなる。【００１５】
このことによって、この仮想計算機システムは、通常ＯＳ実行制御時におけるセキュア領域への書き戻しの発生頻度が、従来よりも低減される可能性を高くすることができる。
【図面の簡単な説明】
【００１６】
【図１】仮想計算機システム１００の主要なハードウエア構成を示すブロック図
【図２】プロセッサ１０１が有する動作モードを模式的に示す模式図
【図３】キャッシュメモリ１０２の主要なハードウエア構成を示すブロック図
【図４】（ａ）アドレス構成図、（ｂ）第０ウェイ３１０のハードウエア構成を示すブロック図
【図５】データ読出機能ブロックの機能ブロック図
【図６】データ格納機能ブロックの機能ブロック図
【図７】置換対象選択部６１０の機能構成を示す機能ブロック図
【図８】参照時刻情報が取り得る値を模式的に示した模式図
【図９】格納処理のフローチャート
【図１０】第１変形データ格納機能ブロックの機能ブロック図
【図１１】第１変形データ格納処理のフローチャート
【図１２】スリープ命令発行時処理のフローチャート
【図１３】スリープ命令のスリープ命令種と電力削減レベル情報（ＥＶ）との対応関係を示す対応表
【図１４】第２変形データ格納機能ブロックの機能ブロック図
【図１５】第１変形スリープ命令発行時処理のフローチャート
【図１６】第３変形データ格納機能ブロックの機能ブロック図
【図１７】第２変形スリープ命令発行時処理のフローチャート
【図１８】第４変形データ格納機能ブロックの機能ブロック図
【図１９】第２変形データ格納処理のフローチャート
【図２０】第５変形データ格納機能ブロックの機能ブロック図
【図２１】第３変形データ格納処理のフローチャート
【図２２】変形例における仮想計算機システムのブロック図
【発明を実施するための形態】
【００１７】
＜実施の形態１＞
＜概要＞
以下、本発明に係る仮想計算機システムの一実施形態として、特権モードであるセキュアモードを有するプロセッサと、セキュア記憶領域を含むメインメモリと、プロセッサがセキュアモードである場合に限って、セキュア記憶領域へのアクセスを許可するＭＰＵと、プロセッサが利用する４ウェイセットアソシアティブ方式のキャッシュメモリとを備える仮想計算機システムについて説明する。
【００１８】
この仮想計算機システムにおいて、秘匿されるべきデータ（例えば、デジタル書作物を復号するための暗号キー、個人情報を含む住所録データ等）は、セキュア記憶領域に記憶される。そして、その秘匿されるべきデータへのアクセスが許可されているセキュアプログラムは、プロセッサがセキュアモードである場合に限って実行されるセキュアＯＳに限って実行制御される。セキュアプログラム以外のアプリケーションプログラムは、セキュアモードよりも下位の特権モードである通常特権モードで実行される通常ＯＳに限って実行制御される。
【００１９】
キャッシュメモリの各ウェイを構成するラインのそれぞれは、格納するデータに加えて、その格納するデータがメインメモリから読み出された際にプロセッサによって実行されていたＯＳを特定するＯＳ識別子を格納する。そして、キャッシュメモリは、同一インデックスによって指定されるラインのうちのいずれかについてメインメモリへの書き戻しを行う必要が生じた場合おいて、ＯＳ識別子を参照して、スリープ状態となっている通常ＯＳが存在するときに、メインメモリへの書き戻しを行う必要が生じれば、そのＯＳが実行されていた期間に読み出されたデータを優先して書き戻しを行う。
【００２０】
以下、本実施の形態１に係る仮想計算機システムの構成について図面を参照しながら説明する。
【００２１】
＜構成＞
図１は、仮想計算機システム１００の主要なハードウエア構成を示すブロック図である。
【００２２】
同図に示す通り、仮想計算機システム１００は、ハードウエアとしてはコンピュータ装置であり、集積回路１１０と入力装置１３０と出力装置１４０とから構成される。
【００２３】
集積回路１１０は、プロセッサ１０１とキャッシュメモリ１０２とメインメモリ１０３とＭＰＵ１０４と周辺回路１０５とＲＯＭ１０６と第１インターフェース１０７と第２インターフェース１０８と内部バス１２０とから構成される。
【００２４】
メインメモリ１０３は、内部バス１２０に接続され、プロセッサ１０１の動作を規定するプログラムと、プロセッサ１０１が利用するデータとを記憶する。メインメモリ１０３の記憶領域のうちの一部の領域は、秘匿されるべきデータを記憶するためのセキュア記憶領域として設定されている。
【００２５】
ＲＯＭ１０６は、内部バス１２０に接続され、プロセッサ１０１の動作を規定するプログラムと、プロセッサ１０１が利用するデータとを記憶する。
【００２６】
周辺回路１０５は、内部バス１２０に接続され、プロセッサ１０１によって制御され、タイマ機能等を有する。
【００２７】
第１インターフェース１０７と第２インターフェース１０８とは、それぞれ内部バス１２０に接続され、それぞれ内部バス１２０と入力装置１３０との間の信号のやり取りを仲介する機能、内部バス１２０と出力装置１４０との間の信号のやり取りを仲介する機能を有する。
【００２８】
入力装置１３０は、キーボード、マウス等で構成され、第１インターフェース１０７に接続され、プロセッサ１０１によって制御され、キーボード、マウス等を通じてユーザからの操作コマンドを受け付け、受け付けた操作コマンドをプロセッサ１０１に送る機能を有する。
【００２９】
出力装置１４０は、ディスプレイ、スピーカー等を内蔵し、第２インターフェース１０８に接続され、プロセッサ１０１によって制御され、内蔵するディスプレイ、スピーカー等を用いて文字列、画像、音声等を表示・出力する機能を有する。
【００３０】
ＭＰＵ１０４は、内部バス１２０とプロセッサ１０１とに接続され、プロセッサ１０１によって制御され、プロセッサ１０１の要求するメモリアクセスを処理する機能を有する。特に、プロセッサ１０１と連動して、プロセッサ１０１がセキュア領域へのアクセスを要求した場合において、プロセッサ１０１の動作モードがセキュアモード（後述）のときに、そのアクセスを実行し、プロセッサ１０１の動作モードが通常特権モード（後述）又はユーザモード（後述）のときに、そのアクセスを実行せずに、プロセッサ１０１に対して、例外発生割り込み（以下、「セキュア記憶領域アクセス例外割り込み」と呼ぶ。）を行う機能を有する。
【００３１】
プロセッサ１０１は、キャッシュメモリ１０２とＭＰＵ１０４とに接続され、メインメモリ１０３又はＲＯＭ１０６に記憶されているプログラムを実行することで、キャッシュメモリ１０２とメインメモリ１０３とＭＰＵ１０４と周辺回路１０５とＲＯＭ１０６と入力装置１３０と出力装置１４０とを制御して、仮想計算機システム１００を、コンピュータ装置として機能させる機能を有する。
【００３２】
また、プロセッサ１０１は、ロード命令実行時、ストア命令実行時、及び命令フェッチ実行時に、現在実行制御しているＯＳを識別するＯＳ識別子をキャッシュメモリ１０２に出力する機能を有する。さらに、プロセッサ１０１は、自プロセッサの消費電力を削減するための命令である、指定するＯＳをスリープ状態とするスリープ命令を発行する機能と、スリープ状態のＯＳを通常状態とするウェイクアップ命令を発行する機能とを有する。
【００３３】
図２は、プロセッサ１０１が有する動作モードを模式的に示す模式図である。
【００３４】
同図に示されるように、プロセッサ１０１は、アプリケーションプログラム（図中のタスクＡ２２１〜タスクＺ２１６）を実行するユーザモード２１０と、通常ＯＳ（図中の第１ＯＳ２２１〜第ｎＯＳ２２２）を実行する第１の特権モード（以下、「通常特権モード２２０」と呼ぶ。）と、通常特権モードよりも上位の特権モードであって、セキュアＯＳ２３１を実行する第２の特権モード（以下、「セキュアモード２３０」と呼ぶ。）と、セキュアモードよりも上位の特権モードであって、ＯＳの実行制御を行うハイパバイザ２４１を実行する第３の特権モード（以下、「ハイパバイザモード２４０」と呼ぶ。）とを有する。
【００３５】
ここで、タスクＡ２１１〜タスクＫ２１２は、メインメモリ１０３の記憶領域の一部であるセキュア記憶領域（後述）に記憶されている、秘匿されるべきデータへのアクセスが許可されているセキュアプログラムであって、セキュアＯＳ２３１によって実行制御される。
【００３６】
これらのうち、タスクＬ２１３〜タスクＺ２１６は、秘匿されるべきデータへのアクセスが許可されていない通常プログラムであって、第１ＯＳ２２１〜第ｎＯＳ２２２のいずれかによって実行制御される。そして、タスクＡ２１１〜タスクＫ２１２は、秘匿されるべきデータへのアクセスが許可されているセキュアプログラムであって、セキュアＯＳ２３１によって実行制御される。
【００３７】
ハイパバイザ２４１は、ＯＳの実行制御を行う機能に加えて、プロセッサ１０１が通常ＯＳ実行時にＭＰＵ１０４からセキュア記憶領域アクセス例外割り込みを受けた場合に、（１）プロセッサ１０１のレジスタ値等といったプロセッサ１０１の状態を示す情報をメインメモリ１０３の所定のコンテクスト退避領域に退避させ、（２）プロセッサ１０１のモードをセキュアモードに変更し、（３）所定のコンテクスト退避領域に待機していた、セキュアＯＳ実行時のプロセッサ１０１の状態を示す情報をプロセッサ１０１のレジスタ値等に復元して、実行するＯＳを、通常ＯＳからセキュアＯＳへと切り替える機能を有する。
【００３８】
再び図１に戻って、仮想計算機システム１００のハードウエア構成の説明を続ける。
【００３９】
キャッシュメモリ１０２は、内部バス１２０とプロセッサ１０１とに接続される、４ウェイセットアソシアティブ方式の、命令、データ共用キャッシュメモリである。
【００４０】
図３は、キャッシュメモリ１０２の主要なハードウエア構成を示すブロック図である。
【００４１】
同図に示す通り、キャッシュメモリ１０２は、コントローラ３０１と入出力回路３０２と第０ウェイ３１０と第１ウェイ３１１と第２ウェイ３１２と第３ウェイ３１３とから構成される。
【００４２】
コントローラ３０１は、入出力回路３０２と第０ウェイ３１０と第１ウェイ３１１と第２ウェイ３１２と第３ウェイ３１３とに接続され、内蔵する記憶素子に記憶されているプログラムを実行することで、入出力回路３０２と第０ウェイ３１０と第１ウェイ３１１と第２ウェイ３１２と第３ウェイ３１３とを制御して、キャッシュメモリ１０２を４ウェイセットアソシアティブ方式のキャッシュメモリとして機能させる機能を有する。
【００４３】
第０ウェイ３１０〜第３ウェイ３１３は、それぞれ、互いに同等の機能を有し、互いに同等な構成を備えている。よって、以下、特別な断りがある場合を除いて、これらのウェイの代表として、第０ウェイ３１０について説明する。
【００４４】
第０ウェイ３１０は、コントローラ３０１と入出力回路３０２とに接続され、コントローラ３０１によって制御され、メインメモリ１０３の記憶領域を指定するアドレスにおける一部のビット列からなるインデックスによって指定されるライン記憶領域を複数備えるＳＲＡＭ（Static Random Access Memory）であって、プロセッサ１０１が利用する命令又はデータであるビット列（以下、単に「データ」と呼ぶ。）を記憶する機能を有する。
【００４５】
図４（ａ）は、メインメモリ１０３の記憶領域を指定するアドレスの構成を示すアドレス構成図である。
【００４６】
図４（ａ）に示される通り、メインメモリ１０３の記憶領域を指定するアドレスは、上位ビット側のビット列であるタグ４０１と下位ビット側のビット列であるインデックス４０２とから構成される。
【００４７】
図４（ｂ）は、第０ウェイ３１０のハードウエア構成を示すブロック図である。
【００４８】
図４（ｂ）に示される通り、第０ウェイ３１０は、タグ記憶領域４１１とダーティビット記憶領域４１２とバリッドビット記憶領域４１３とＯＳ識別子記憶領域４１４とカウンタ記憶領域４１５とセキュアビット記憶領域４１６とデータ記憶領域４１７とからなる、インデックスによって指定されるライン記憶領域を複数備えるＳＲＡＭである。
【００４９】
データ記憶領域４１７は、プロセッサ１０１が利用するデータを格納する記憶領域である。
【００５０】
タグ記憶領域４１１は、データ記憶領域４１７に格納されているデータの、メインメモリ１０３におけるアドレスを構成するタグを格納する記憶領域である。
【００５１】
ダーティビット記憶領域４１２は、データ記憶領域４１７に格納されているデータがメインメモリ１０３との間のコヒーレンシが保証されているか否かを示すダーティビットを格納する記憶領域である。ここで、このダーティビットは、データ記憶領域４１７に格納されているデータが、メインメモリ１０３との間のコヒーレンシが保証されていない場合に“１”となり、保証されている場合に“０”となる。
【００５２】
バリッドビット記憶領域４１３は、データ記憶領域４１７に格納されているデータが有効であるか否かを示すバリッドビットを格納する記憶領域である。ここで、このバリッドビットは、データ記憶領域４１７に格納されているデータが有効である場合に“１”となり、無効である場合に“０”となる。
【００５３】
ＯＳ識別子記憶領域４１４は、データ記憶領域４１７に格納されているデータがメインメモリ１０３から読み出された際にプロセッサによって実行されていたＯＳを特定するＯＳ識別子を記憶する複数ビットからなるＯＳ識別ビットを格納する記憶領域である。
【００５４】
カウンタ記憶領域４１５は、同一インデックスによって指定される、第０ウェイ３１０〜第３ウェイ３１３の４つのライン格納領域について、データ記憶領域４１７にデータが格納された順番を示す２ビットのカウンタ値を格納する記憶領域である。このカウンタ値は、コントローラ３０１によってカウントされる。ここで、このカウンタ値は、より値が大きい程、より過去にデータが格納されたことを示している。すなわち、カウンタ値が“１１”であれば最も古い過去にデータが格納されたことを示し、カウンタ値が“００”であれば最も新しい過去にデータが格納されたことを示す。
【００５５】
セキュアビット記憶領域４１６は、データ記憶領域４１７に格納されているデータが、セキュア領域に記憶されていたものであるか否かを示すセキュアビットを格納する記憶領域である。ここで、このセキュアビットは、データ記憶領域４１７に格納されているデータが、セキュア領域に記憶されていたものである場合に“１”となり、セキュア領域に記憶されていたものでない場合に“０”となる。
【００５６】
入出力回路３０２は、コントローラ３０１と第０ウェイ３１０と第１ウェイ３１１と第２ウェイ３１２と第３ウェイ３１３とプロセッサ１０１と内部バス１２０とに接続され、コントローラ３０１によって制御され、第０ウェイ３１０〜第３ウェイ３１３にデータを書き込む機能と、第０ウェイ３１０〜第３ウェイ３１３からデータを読み出す機能と、第０ウェイ３１０〜第３ウェイ３１３からデータの読み出しを試みた場合において、該当するデータが保持されていないときにキャッシュミス信号を出力する機能とを有する。
【００５７】
上記構成を備えるキャッシュメモリ１０２は、コントローラ３０１が内蔵する記憶素子に記憶されているプログラムを実行して、入出力回路３０２と、第０ウェイ３１０〜第３ウェイ３１３とを制御することで、（１）タグとインデックスとが入力されてデータを読み出すデータ読出機能と、（２）タグとインデックスとデータとＯＳ識別子とが入力されてデータを格納するデータ格納機能とを実現する。
【００５８】
以下、これらの機能について、図面を用いて説明する。
【００５９】
図５は、前述のデータ読出機能を実現するデータ読出機能ブロックの機能ブロック図である。このデータ読出機能ブロックは、コントローラ３０１が内蔵する記憶素子に記憶されているプログラムを実行して、入出力回路３０２と、第０ウェイ３１０〜第３ウェイ３１３とを制御することで実現される。
【００６０】
同図に示されるように、データ読出機能ブロックは、第０ウェイ３１０〜第３ウェイ３１３と比較器部５１０〜比較器部５１３と論理和部５２０〜論理和部５２３とトライステートバッファ部５３０〜トライステートバッファ部５３３と論理和否定部５４０とワイヤードオア部５５０とタグ入力部５０１とインデックス入力部５０２とキャッシュミス信号出力部５０３とデータ出力部５０４とから構成される。
【００６１】
タグ入力部５０１は、図５中に図示されないプロセッサ１０１と、比較器部５１０〜比較器部５１３とに接続され、プロセッサ１０１から送られて来たアドレスを構成するタグを受け取った場合に、受け取ったタグを比較器部５１０〜比較器部５１３へ送る機能を有する。
【００６２】
インデックス入力部５０２は、図５中に図示されないプロセッサ１０１と、第０ウェイ３１０〜第３ウェイ３１３とに接続され、プロセッサ１０１から送られて来たアドレスを構成するインデックスを受け取った場合に、読出信号と受け取ったインデックスとを第０ウェイ３１０〜第３ウェイ３１３へ送る機能を有する。
【００６３】
第０ウェイ３１０は、前述したように、インデックスによって指定されるライン記憶領域を複数備えるＳＲＡＭであって、インデックス入力部５０２と比較器部５１０と論理和部５２０とトライステートバッファ部５３０とに接続される。
【００６４】
比較器部５１０〜比較器部５１３は、それぞれ、互いに同等の機能を有する。よって、ここでは、これらの比較器部の代表として、比較器部５１０の説明を行う。
【００６５】
比較器部５１０は、タグ入力部５０１と第０ウェイ３１０と論理和部５２０とに接続され、タグ入力部５０１と第０ウェイ３１０とのそれぞれからタグが送られてくると、それらのタグを比較し、それらのタグが一致する場合に論理値“１”の信号を出力し、それらのタグが一致しない場合に論理値“０”の信号を出力する機能を有する。
【００６６】
論理和部５２０〜論理和部５２３は、それぞれ互いに同等の機能を有する。よって、ここでは、これらの論理和部の代表として、論理和部５２０の説明を行う。
【００６７】
論理和部５２０は、比較器部５１０と第０ウェイ３１０とトライステートバッファ部５３０と論理和否定部５４０とに接続され、比較器部５１０から送られてくる信号と第０ウェイ３１０から出力されるバリッドビットとの論理和信号を出力する機能を有する。
【００６８】
トライステートバッファ部５３０〜トライステートバッファ部５３３は、それぞれ互いに同等の機能を有する。よって、ここでは、これらのトライステートバッファ部の代表として、トライステートバッファ部５３０の説明を行う。
【００６９】
トライステートバッファ部５３０は、第０ウェイ３１０と論理和部５２０とワイヤードオア部５５０とに接続され、論理和部５２０から出力される信号が論理値“０”の場合に出力がハイインピーダンス状態となり、論理和部５２０から出力される信号が論理値“１”の場合に第０ウェイ３１０から出力されるデータを出力する機能を有する。
【００７０】
論理和否定部５４０は、論理和部５２０〜論理和部５２３と、キャッシュミス信号出力部５０３とに接続され、論理和部５２０〜論理和部５２３から出力される信号の論理和否定信号を生成して、キャッシュミス信号として出力する機能を有する。
【００７１】
ワイヤードオア部５５０は、トライステートバッファ部５３０〜トライステートバッファ部５３３と、データ出力部５０４とに接続され、トライステートバッファ部５３０〜トライステートバッファ部５３３のワイヤードオア信号を生成して、データ信号として出力する機能を有する。
【００７２】
キャッシュミス信号出力部５０３は、論理和否定部５４０と図５中に図示されないプロセッサ１０１と図５中に図示されないＭＰＵ１０４とに接続され、論理和否定部５４０から出力されるキャッシュミス信号を、プロセッサ１０１とＭＰＵ１０４とに出力する機能を有する。
【００７３】
データ出力部５０４は、ワイヤードオア部５５０と図５中に図示されないプロセッサ１０１とに接続され、ワイヤードオア部５５０から出力されるデータ信号を、プロセッサ１０１に出力する機能を有する。
【００７４】
図６は、前述のデータ格納機能を実現するデータ格納機能ブロックの機能ブロック図である。このデータ格納機能ブロックは、コントローラ３０１が内蔵する記憶素子に記憶されているプログラムを実行して、入出力回路３０２と、第０ウェイ３１０〜第３ウェイ３１３とを制御することで実現される。
【００７５】
同図に示されるように、データ格納機能ブロックは、第０ウェイ３１０〜第３ウェイ３１３と置換対象選択部６１０とライトバック部６２０と格納部６３０とから構成される。
【００７６】
置換対象選択部６１０は、プロセッサ１０１とライトバック部６２０と格納部６３０と第０ウェイ３１０〜第３ウェイ３１３とに接続され、第０ウェイ３１０〜第３ウェイ３１３のうちのいずれかにデータを格納する必要が生じた場合に、データを格納すべき１つのウェイを、これら４つのウェイの中から選択する機能を有する。
【００７７】
図７は、置換対象選択部６１０の機能構成を示す機能ブロック図である。
【００７８】
同図に示されるように、置換対象選択部６１０は、第０参照時刻計算部７００と第１参照時刻計算部７１０と第２参照時刻計算部７２０と第３参照時刻計算部７３０と選択部７４０とから構成される。
【００７９】
第０参照時刻計算部７００〜第３参照時刻計算部７３０は、それぞれ、互いに同等の機能を有している。よって、以下、特別な断りがある場合を除いて、これらの参照時刻計算部の代表として、第０参照時刻計算部７００について説明する。
【００８０】
第０参照時刻計算部７００は、プロセッサ１０１と格納部６３０と第０ウェイ３１０と選択部７４０とに接続され、第０ウェイ３１０から読み出されたバリッドビットとＯＳ識別子とカウンタ値とを参照して、参照時刻情報（後述）を生成する機能を有する。
【００８１】
図７に示されるように、第０参照時刻計算部７００は、さらに、テーブル更新部７０１と開放レベルテーブル記憶部７０２と参照時刻情報更新部７０５と参照時刻情報保持部７０６とから構成される。
【００８２】
開放レベルテーブル記憶部７０２は、テーブル更新部７０１と参照時刻情報更新部７０５とに接続され、開放レベルテーブルを記憶する機能を有する。
【００８３】
開放レベルテーブルは、ＯＳ識別子７０３と状態７０４とが対応付けられてなるテーブルである。
【００８４】
ＯＳ識別子７０３は、プロセッサ１０１の実行制御対象となるＯＳを識別するための識別子であって、プロセッサ１０１の実行制御対象となるＯＳ毎に予め設定されている。
【００８５】
状態７０４は、対応付けられているＯＳ識別子によって識別されるＯＳの状態を示す情報であって、対応するＯＳが、プロセッサ１０１によって起動されているが、過去にプロセッサ１０１が発行したスリープ命令によって、そのＯＳが現にスリープ状態となっていることを示すスリープ（ＳＬＥＥＰ）状態と、対応するＯＳが、スリープ状態以外の状態となっていることを示すラン（ＲＵＮ）状態との２つの状態のうちのいずれかの状態を示す。
【００８６】
例えば、開放レベルテーブル記憶部７０２が記憶する開放レベルテーブルによると、セキュアＯＳがスリープ状態であり、第１ＯＳがラン状態であり、第ｎＯＳがラン状態であることがわかる。
【００８７】
テーブル更新部７０１は、プロセッサ１０１と開放レベルテーブル記憶部７０２とに接続され、プロセッサ１０１によって発行されたスリープ命令とウェイクアップ命令とを検知して、開放レベルテーブル記憶部７０２が記憶する開放レベルテーブルを更新する機能を有する。
【００８８】
参照時刻情報更新部７０５は、格納部６３０と開放レベルテーブル記憶部７０２と第０ウェイ３１０と参照時刻情報保持部７０６とに接続され、以下の３つの機能を有する。
【００８９】
読出機能：格納部６３０からインデックスを受け取ると、受け取ったインデックスで指定される、第０ウェイ３１０のライン記憶領域に記憶されている、バリッドビットとＯＳ識別子とカウンタ値とを読み出す機能。
【００９０】
状態ビット生成機能：第０ウェイ３１０からＯＳ識別子を読み出した場合に、開放レベルテーブル記憶部７０２に記憶されている開放レベルテーブルを参照して、読み出したＯＳ識別子によって識別されるＯＳが、（１）通常ＯＳであって、かつ（２）スリープ状態である場合に論理値“１”となり、それ以外の場合に論理値“０”となる状態ビットを生成する機能。
【００９１】
参照時刻情報更新機能：第０ウェイ３１０からバリッドビットとＯＳ識別子とカウンタ値とを読み出した場合において、状態ビットを生成したときに、第０ウェイ３１０から読み出したバリッドビットとカウンタ値と、生成した状態ビットとを用いて、参照時刻情報更新部７０５が記憶する参照時刻情報（後述）を更新する機能。
【００９２】
参照時刻情報保持部７０６は、参照時刻情報更新部７０５と選択部７４０とに接続され、参照時刻情報を記憶する機能を有する。
【００９３】
参照時刻情報は、参照時刻情報更新部７０５によって第０ウェイ３１０から読み出されたバリッドビットの反転信号である１ビットのインバリッドビットと、参照時刻情報更新部７０５によって生成された１ビットの状態ビットと、参照時刻情報更新部７０５によって第０ウェイ３１０から読み出された２ビットのカウンタ値とからなる４ビットの信号からなる。
【００９４】
選択部７４０は、第０参照時刻計算部７００〜第３参照時刻計算部７３０とライトバック部６２０とに接続され、（１）第０参照時刻計算部７００の参照時刻情報保持部７０６に記憶されている、第０ウェイ３１０に対応する参照時刻情報と、（２）第１参照時刻計算部７１０の参照時刻情報保持部７１６に記憶されている、第１ウェイ３１１に対応する参照時刻情報と、（３）第２参照時刻計算部７２０の参照時刻情報保持部７３６に記憶されている、第２ウェイ３１２に対応する参照時刻情報と、（４）第３参照時刻計算部７３０の参照時刻情報保持部７４６に記憶されている、第３ウェイ３１３に対応する参照時刻情報とを比較して、これらの４つの参照時刻情報のうち、最も大きな値を示す参照時刻情報に対応するウェイを選択して、選択したウェイを特定するウェイ選択信号を、ライトバック部６２０へ送る機能を有する。ここで、最も大きな値を示す参照時刻情報が複数ある場合には、最も小さなウェイ番号のウェイを選択する。
【００９５】
図８は、参照時刻情報が取り得る値を模式的に示した模式図である。
【００９６】
同図に示されるように、参照時刻情報は、上位ビット側から順に、１ビットのインバリッドビット８０１と１ビットの状態ビット８０２と２ビットのカウンタ値８０３とから構成される。
【００９７】
参照時刻情報８１０は、インバリッドビット８０１の論理値が“１”である場合における、参照時刻情報を示し、参照時刻情報８２０は、インバリッドビット８０１の論理値が“０”であり、状態ビット８０２の論理値が“１”である場合における、参照時刻情報を示し、参照時刻情報８３０〜参照時刻情報８３３は、インバリッドビット８０１の論理値が“０”であり、状態ビット８０２の論理値が“０”である場合における、参照時刻情報を示している。
【００９８】
同図に示されるように、インバリッドビット８０１の論理値が“１”である参照時刻情報の方が、インバリッドビット８０１の論理値が“０”である参照時刻情報よりも大きな値となる。このことによって、選択部７４０は、選択対象となる４つの参照時刻情報の中にインバリッドビット８０１の論理値が“１”となるものが存在する場合には、インバリッドビット８０１の論理値が“１”となる参照時刻情報に対応するウェイの中から、ウェイを選択することとなる。これは、すなわち、選択部７４０が、ウェイの選択を行う場合に、無効なデータが保持されているウェイの方を、有効なデータが保持されているウェイよりも優先して選択することを示している。
【００９９】
また、インバリッドビット８０１の論理値が“０”である参照時刻情報については、状態ビット８０２の論理値が“１”である参照時刻情報の方が、状態ビット８０２の論理値が“０”である参照時刻情報よりも大きな値となる。このことによって、選択部７４０は、選択対象となる４つの参照時刻情報の中に状態ビット８０２の論理値が“１”となるものが存在する場合には、状態ビット８０２の論理値が“１”となる参照時刻情報に対応するウェイの中から、ウェイを選択することとなる。これは、すなわち、選択部７４０が、無効なデータが保持されているウェイが存在しない場合においてウェイの選択を行うときに、スリープ状態である通常ＯＳがプロセッサ１０１によって実行制御されていた際にメインメモリ１０３から読み出されたデータが格納されているウェイの方を、それ以外のウェイよりも優先して選択することを示している。
【０１００】
これに対して、選択部７４０が行うウェイの選択において、スリープ状態であるセキュアＯＳがプロセッサ１０１によって実行制御されていた際にメインメモリ１０３から読み出されたデータが格納されているウェイの方が、他のウェイに対して特段優先されることはない。
【０１０１】
再び図６に戻って、データ格納機能ブロックの説明を続ける。
【０１０２】
ライトバック部６２０は、内部バス１２０と置換対象選択部６１０と格納部６３０と第０ウェイ３１０〜第３ウェイ３１３とに接続され、以下の３つの機能を有する。
【０１０３】
ライトバック機能：格納部６３０からインデックスを受け取った場合において、置換対象選択部６１０からウェイ選択信号を受け取ったときに、置換対象選択部６１０から受け取ったウェイ選択信号によって特定されるウェイにおける、格納部６３０から受け取ったインデックスによって指定されるライン記憶領域に保持されているバリッドビットの論理値とダーティビットの論理値との双方が“１”であれば、そのライン記憶領域に保持されているデータをメインメモリ１０３に書き戻す書戻処理を行う機能。ここで、メインメモリ１０３への書き戻しは、そのライン記憶領域に保持されているタグと受け取ったインデックスとによって構成されるアドレスを用いて行う。
【０１０４】
ダーティビット更新機能：書戻処理を行った場合に、書戻処理の対象となったライン記憶領域に保持されているダーティビットの論理値を“０”に更新して、置換対象選択部６１０から受け取ったウェイ選択信号と、ダーティビットの論理値を“０”に更新した旨を示すダーティビット更新信号とを格納部６３０に送る機能。
【０１０５】
スルー機能：格納部６３０からインデックスを受け取った場合において、置換対象選択部からウェイ選択信号を受け取ったときに、受け取ったウェイ選択信号によって特定されるウェイにおける、受け取ったインデックスによって指定されるライン記憶領域に保持されているバリッドビットの論理値とダーティビットの論理値との少なくとも一方が“０”であれば、書き戻しを行わずに、置換対象選択部６１０から受け取ったウェイ選択信号と、バリッドビットの論理値とダーティビットの論理値との少なくとも一方が“０”である旨を示すスルー信号とを格納部６３０に送る機能。
【０１０６】
格納部６３０は、プロセッサ１０１と内部バス１２０と置換対象選択部６１０とライトバック部６２０とに接続され、以下の２つの機能を有する。
【０１０７】
インデックス送信機能：キャッシュメモリ１０２が、新たにプロセッサ１０１が利用するデータを格納する場合において、プロセッサ１０１からタグとインデックスとＯＳ識別子とを受け取り、さらに、プロセッサ１０１又はメインメモリ１０３から格納するデータを受け取った場合に、受け取ったインデックスを置換対象選択部６１０とライトバック部６２０へと送るインデックス送信処理を行う機能。
【０１０８】
格納機能：インデックス送信処理を行った場合において、（１）ライトバック部６２０からダーティビット更新信号とウェイ選択信号とを受け取ったとき、又は（２）ライトバック部６２０からスルー信号とウェイ選択信号とを受け取ったときに、（Ａ）ライトバック部６２０から受け取ったウェイ選択信号と、プロセッサ１０１から受け取ったインデックスとによって指定されるライン記憶領域（以下、「指定ライン記憶領域」と呼ぶ。）に、プロセッサ１０１から受け取ったタグと、プロセッサ１０１又はメインメモリ１０３から受け取ったデータとを格納して、（Ｂ）指定ライン記憶領域に保持されている、ダーティビットとバリッドビットとＯＳ識別子とセキュアビットとを更新して、（Ｃ）第０ウェイ３１０〜第３ウェイ３１３における、プロセッサ１０１から受け取ったインデックスによって指定される各ライン記憶領域に保持されているカウンタ値のそれぞれを更新する機能。ここで、格納部６３０は、ダーティビットの更新を、ダーティビットの論理値が“０”となるように行い、バリッドビットの更新を、バリッドビットの論理値が“１”となるように行い、ＯＳ識別子の更新を、プロセッサ１０１から受け取ったＯＳ識別子を用いて行い、セキュアビットの更新を、プロセッサから受け取ったタグとインデックスとで構成されるアドレスが、セキュア領域を指定するものであるか否かに基づいて行い、カウンタ値の更新を、より過去にデータが格納されたライン記憶領域であるほど、より値が大きくなるように行う。
【０１０９】
以上のように構成される仮想計算機システム１００の行う動作について、以下図面を参照しながら説明する。
【０１１０】
＜動作＞
ここでは、仮想計算機システム１００の行う動作のうち、特徴的な動作である格納処理について説明する。
【０１１１】
＜格納処理＞
格納処理は、キャッシュメモリ１０２が、内蔵する第０ウェイ３１０〜第３ウェイ３１３のいずれかに、プロセッサ１０１が利用するデータを新たに格納する処理である。
【０１１２】
図９は、格納処理のフローチャートである。
【０１１３】
格納処理は、格納部６３０が、プロセッサ１０１からタグとインデックスとＯＳ識別子とを受け取り、さらに、プロセッサ１０１又はメインメモリ１０３から格納するデータを受け取ったことで開始される。
【０１１４】
格納処理が開始されると、格納部６３０は、プロセッサ１０１から受け取ったインデックスを置換対象選択部６１０とライトバック部６２０へと送る（ステップＳ９００）。
【０１１５】
格納部６３０からインデックスが送られてくると、置換対象選択部６１０は、第０ウェイ３１０〜第３ウェイ３１３のそれぞれから、そのインデックスで指定されるライン記憶領域に記憶されている、バリッドビットとＯＳ識別子とカウンタ値とを読み出す（ステップＳ９１０）。
【０１１６】
そして、置換対象選択部６１０は、第０ウェイ３１０〜第３ウェイ３１３のそれぞれについて、読み出したバリッドビットとＯＳ識別子とカウンタ値と、記憶する開放レベルテーブルとから、記憶する参照時刻情報を更新する（ステップＳ９２０）。
【０１１７】
第０ウェイ３１０〜第３ウェイ３１３のそれぞれについての参照時刻情報を更新すると、置換対象選択部６１０は、これら参照時刻情報のうち、最も値の大きな値を示す参照時刻情報に対応するウェイを選択して、この選択したウェイを特定するウェイ選択信号を、ライトバック部６２０へ送る（ステップＳ９３０）。
【０１１８】
置換対象選択部６１０からウェイ選択信号が送られてくると、ライトバック部６２０は、置換対象選択部６１０から受け取ったウェイ選択信号によって特定されるウェイにおける、格納部６３０から受け取ったインデックスによって指定されるライン記憶領域に保持されているバリッドビットの論理値とダーティビットの論理値との双方が“１”であるか否かを調べる（ステップＳ９４０）。
【０１１９】
ステップＳ９４０の処理において、バリッドビットの論理値とダーティビットの論理値との双方が“１”である場合に（ステップＳ９４０：Ｙｅｓ）、ライトバック部６２０は、そのライン記憶領域に保持されているデータをメインメモリ１０３に書き戻して（ステップＳ９５０）、そのライン記憶領域に保持されているダーティビットの論理値を“０”に更新して（ステップＳ９６０）、置換対象選択部６１０から受け取ったウェイ選択信号と、ダーティビットの論理値を“０”に更新した旨を示すダーティビット更新信号とを格納部６３０に送る。
【０１２０】
ステップＳ９４０の処理において、バリッドビットの論理値とダーティビットの論理値との少なくとも一方が“０”である場合に（ステップＳ９４０：Ｎｏ）、ライトバック部６２０は、書き戻しを行わずに、置換対象選択部６１０から受け取ったウェイ選択信号と、バリッドビットの論理値とダーティビットの論理値との少なくとも一方が“０”である旨を示すスルー信号とを格納部６３０に送る（ステップＳ９７０）。
【０１２１】
ステップＳ９６０の処理が終了した場合、又はステップＳ９７０の処理が終了した場合に、格納部６３０は、ライトバック部６２０から受け取ったウェイ選択信号と、プロセッサ１０１から受け取ったインデックスとによって指定されるライン記憶領域に、プロセッサから受け取ったタグと、プロセッサ１０１又はメインメモリ１０３から受け取ったデータとを格納する（ステップＳ９８０）。さらに、格納部６３０は、ライトバック部６２０から受け取ったウェイ選択信号と、プロセッサ１０１から受け取ったインデックスとによって指定されるライン記憶領域に保持されている、ダーティビットとバリッドビットとＯＳ識別子とセキュアビットとを更新して、第０ウェイ３１０〜第３ウェイ３１３における、プロセッサ１０１から受け取ったインデックスによって指定される各ライン記憶領域に保持されているカウンタ値のそれぞれを更新する（ステップＳ９９０）。
【０１２２】
ステップＳ９９０の処理が終了すると、キャッシュメモリ１０２は、その格納処理を終了する。
【０１２３】
＜考察＞
一般に、キャッシュメモリを有する仮想計算機システムにおいて、キャッシュメモリに保持されているデータのうち、スリープ状態である通常ＯＳがプロセッサによって実行制御されていた際にメインメモリから読み出されたデータは、しばらくの間（そのＯＳがスリープ状態である期間）、プロセッサによって利用される可能性が低くなることが知られている。
【０１２４】
上記構成の仮想計算機システム１００は、キャッシュメモリ１０２が、プロセッサ１０１が利用するデータを新たに格納する場合において、メインメモリ１０３への書き戻しが発生するときに、書き戻し対象とするウェイの選択を、スリープ状態である通常ＯＳがプロセッサ１０１によって実行制御されていた際にメインメモリ１０３から読み出されたデータが格納されているウェイの方が、それ以外のウェイよりも優先されるように行う。
【０１２５】
このことにより、仮想計算機システム１００は、スリープ状態である通常ＯＳが存在している場合に、キャッシュメモリ１０２を比較的効率的に利用することができる。
【０１２６】
一方、セキュアＯＳがプロセッサ１０１によって実行制御されていた際にメインメモリ１０３から読み出されたデータは、セキュア記憶領域から読み出された可能性がある。
【０１２７】
セキュアＯＳがスリープ状態である場合、すなわち、プロセッサ１０１によって通常ＯＳが実行制御されている状態である場合おいて、セキュア記憶領域から読み出されたデータを書き戻そうとすると、一旦、プロセッサ１０１の動作モードをセキュアモードに切り替える必要があるため、実行するＯＳを通常ＯＳからセキュアＯＳへと切り替えなければならない。そして、この切り替えには、比較的大きな処理時間がかかってしまう。
【０１２８】
上記構成の仮想計算機システム１００は、セキュアＯＳがスリープ状態である場合において、メインメモリ１０３への書き戻しが発生するときに、書き戻し対象とするウェイの選択を、スリープ状態であるセキュアＯＳがプロセッサ１０１によって実行制御されていた際にメインメモリ１０３から読み出されたデータが格納されているウェイの方が、それ以外のウェイよりも優先されるように行うことはない。
【０１２９】
このことにより、仮想計算機システム１００は、スリープ状態である通常ＯＳとスリープ状態であるセキュアＯＳとを同等に取り扱う従来の仮想計算機システムに比べて、通常ＯＳ実行制御時におけるセキュア領域への書き戻しの発生頻度が低減される可能性が高くなっている。
【０１３０】
なお、一般に、セキュアＯＳがプロセッサによって実行制御されていた際にメインメモリから読み出されたデータは、必ずしもセキュア領域から読み出されたものであるとは限られない。しかしながら、仮想計算機システム１００において、プロセッサ１０１によって実行制御されているセキュアＯＳが取り扱うデータの全てが、セキュア領域に記憶されているように運用することも可能である。そして、この場合、ライン記憶領域に格納されているＯＳ識別子がセキュアＯＳを示していることが、そのライン記憶領域に記憶されているデータがセキュア領域から読み出されたものであることを示すこととなる。
＜実施の形態２＞
＜概要＞
以下、本発明に係る仮想計算機システムの一実施形態として、実施の形態１における仮想計算機システム１００の一部を変形した第１変形仮想計算機システムについて説明する。
【０１３１】
実施の形態２に係る第１変形仮想計算機システムは、そのハードウエア構成が実施の形態１に係る仮想計算機システム１００と同一のものであるが、コントローラ３０１に内蔵される記憶素子に記憶されているプログラムの一部が実施の形態１に係る仮想計算機システム１００と異なっている。
【０１３２】
実施の形態１に係る仮想計算機システム１００は、キャッシュメモリ１０２が、プロセッサ１０１が利用するデータを新たに記憶する場合において、メインメモリ１０３への書き戻しが発生するときに、書き戻し対象とするウェイの選択を、スリープ状態である通常ＯＳがプロセッサ１０１によって実行制御されていた際にメインメモリ１０３から読み出されたデータが格納されているウェイの方が、それ以外のウェイよりも優先されるように行う構成の例であった。これに対して、実施の形態２に係る第１変形仮想計算機システムは、プロセッサ１０１がセキュアＯＳをスリープ状態とするスリープ命令を発行した場合に、キャッシュメモリ１０２が、セキュアビットの論理値が“１”となるライン記憶領域の全てを一気に開放する構成の例である。ここで、ライン記憶領域を開放するとは、対象となるライン記憶領域に格納されているデータについて、メインメモリ１０３との間のコヒーレンシが保証されている状態とした上で、対象となるライン記憶領域のバリッドビットの論理値を“０”とすることをいう。
【０１３３】
以下、本実施の形態２に係る第１変形仮想計算機システムの構成について、図面を参照しながら、実施の形態１に係る仮想計算機システム１００との相違点を中心に説明する。
【０１３４】
＜構成＞
第１変形仮想計算機システムのハードウエア構成は、実施の形態１に係る仮想計算機システム１００のハードウエア構成と同一のものである。よって、ここではその説明を省略する。
【０１３５】
これに対して、コントローラ３０１に内蔵される記憶素子に記憶されているプログラムの一部が、実施の形態１に係る仮想計算機システム１００から変形されている。そして、このことによって、実施の形態１に係る仮想計算機システム１００においてキャッシュメモリ１０２が実現していたデータ格納機能が、第１変形データ格納機能に変形されている。
【０１３６】
以下、この第１変形データ格納機能について図面を用いて説明する。
【０１３７】
図１０は、第１変形データ格納機能を実現する第１変形データ格納機能ブロックの機能ブロック図である。この第１変形データ格納機能ブロックは、コントローラ３０１が内蔵する記憶素子に記憶されているプログラムを実行して、入出力回路３０２と、第０ウェイ３１０〜第３ウェイ３１３とを制御することで実現される。
【０１３８】
同図に示されるように、第１変形データ格納機能ブロックは、実施の形態１に係るデータ格納機能ブロックから、置換対象選択部６１０が置換対象選択部１０１０に変形され、ライトバック部６２０がライトバック部１０２０に変形されている。
【０１３９】
置換対象選択部１０１０は、プロセッサ１０１とライトバック部１０２０と格納部６３０と第０ウェイ３１０〜第３ウェイ３１３とに接続され、以下の２つの機能を有する。
【０１４０】
第１変形読出機能：格納部６３０からインデックスを受け取ると、受け取ったインデックスで指定される、第０ウェイ３１０〜第３ウェイ３１３のライン記憶領域のそれぞれに記憶されている、バリッドビットとカウンタ値とを読み出す読出処理を行う機能。
【０１４１】
ウェイ選択機能：読出処理を行った場合に、各ウェイについて、読み出したバリッドビットの反転信号である１ビットのインバリッドビットが上位ビット側、読み出した２ビットのカウンタ値が下位ビット側となる３ビットの選択用ビット列を生成し、生成した４つの選択用ビット列のうち、最も大きな値を示す選択用ビット列に対応するウェイを選択して、このウェイを特定するウェイ選択信号を、ライトバック部１０２０へ送る機能。ここで、最も大きな値を示す選択用ビット列が複数ある場合には、最も小さなウェイ番号のウェイを選択する。
【０１４２】
ライトバック部１０２０は、プロセッサ１０１と内部バス１２０と置換対象選択部１０１０と格納部６３０と第０ウェイ３１０〜第３ウェイ３１３とに接続され、実施の形態１に係るライトバック部６２０の有するライトバック機能とダーティビット更新機能とスルー機能とに加えて、以下の２つの機能を有する。
【０１４３】
セキュアビット検索機能：プロセッサ１０１によって発行された、セキュアＯＳをスリープ状態とするスリープ命令を検知して、第０ウェイ３１０〜第３ウェイ３１３の中から、セキュアビットの論理値が“１”となるライン記憶領域が存在するか否かを調べて、セキュアビットの論理値が“１”となるライン記憶領域が存在する場合に、それらのライン記憶領域のそれぞれについて、ライン記憶領域を指定するウェイ番号とインデックスとを取得するセキュアビット探索処理を行う機能。
【０１４４】
セキュアデータ書戻機能：セキュアビット探索処理を行った場合において、ライン記憶領域を指定するウェイ番号とインデックスとの組を１組以上取得した場合に、それらの組それぞれによって指定されるライン記憶領域の全てについて、ライン記憶領域に保持されているデータを連続してメインメモリ１０３に書き戻して、それらの組それぞれによって指定されるライン記憶領域の全てについて、バリッドビットの論理値を“０”に更新する機能。
【０１４５】
以上のように構成される第１変形仮想計算機システムの行う動作について、以下図面を参照しながら説明する。
【０１４６】
＜動作＞
ここでは、第１変形仮想計算機システムの行う動作のうち、特徴的な動作である第１変形データ格納処理とスリープ命令発行時処理とについて説明する。
【０１４７】
＜第１変形データ格納処理＞
第１変形データ格納処理は、キャッシュメモリ１０２が、内蔵する第０ウェイ３１０〜第３ウェイ３１３のいずれかに、プロセッサ１０１が利用するデータを新たに格納する処理である。
【０１４８】
図１１は、第１変形データ格納処理のフローチャートである。
【０１４９】
第１変形データ格納処理は、格納部６３０が、プロセッサ１０１からタグとインデックスとＯＳ識別子とを受け取り、さらに、プロセッサ１０１又はメインメモリ１０３から格納するデータを受け取ったことで開始される。
【０１５０】
第１変形データ格納処理が開始されると、格納部６３０は、プロセッサ１０１から受け取ったインデックスを置換対象選択部１０１０とライトバック部６２０へと送る（ステップＳ１１００）。
【０１５１】
格納部６３０からインデックスが送られてくると、置換対象選択部１０１０は、第０ウェイ３１０〜第３ウェイ３１３のそれぞれから、そのインデックスで指定されるライン記憶領域に記憶されている、バリッドビットとカウンタ値とを読み出す（ステップＳ１１１０）。そして、置換対象選択部１０１０は、各ウェイについて、読み出したバリッドビットの反転信号である１ビットのインバリッドビットが上位ビット側、読み出した２ビットのカウンタ値が下位ビット側となる３ビットの選択用ビット列を生成し、生成した４つの選択用ビット列のうち、最も大きな値を示す選択用ビット列に対応するウェイを選択して、このウェイを特定するウェイ選択信号を、ライトバック部６２０へ送る（ステップＳ１１２０）。
【０１５２】
ステップＳ１１４０の処理〜ステップＳ１１９０の処理のそれぞれは、実施の形態１に係る格納処理（図９参照）における、ステップＳ９４０の処理〜ステップＳ９９０の処理のそれぞれにおいて、置換対象選択部６１０を置換対象選択部１０１０に読み替えて、ライトバック部６２０をライトバック部１０２０に読み替えたものと同等の処理となっている。よってここでは、これらの説明を省略する。
【０１５３】
ステップＳ１１９０の処理が終了すると、キャッシュメモリ１０２は、その第１変形データ格納処理を終了する。
【０１５４】
＜スリープ命令発行時処理＞
スリープ命令発行時処理は、キャッシュメモリ１０２が行う処理であって、プロセッサ１０１がセキュアＯＳをスリープ状態とするスリープ命令を発行した場合に、セキュアビットの論理値が“１”となるライン記憶領域の全てを開放する処理である。
【０１５５】
図１２は、スリープ命令発行時処理のフローチャートである。
【０１５６】
スリープ命令発行時処理は、ライトバック部１０２０が、プロセッサ１０１によって発行された、セキュアＯＳをスリープ状態とするスリープ命令を検知することで開始される。
【０１５７】
スリープ命令発行時処理が開始されると、ライトバック部１０２０は、第０ウェイ３１０〜第３ウェイ３１３の中から、セキュアビットの論理値が“１”となるライン記憶領域が存在するか否かを調べる（ステップＳ１２００）。
【０１５８】
ステップＳ１２００の処理において、該当するライン記憶領域が存在する場合（ステップＳ１２００：Ｙｅｓ）に、ライトバック部１０２０は、それらのライン記憶領域のそれぞれについて、ライン記憶領域を指定するウェイ番号とインデックスとを取得する（ステップＳ１２１０）。そして、ライトバック部１０２０は、さらに、取得したウェイ番号とインデックスとの組それぞれによって指定されるライン記憶領域の全てについて、ライン記憶領域に保持されているデータを連続してメインメモリ１０３に書き戻して（ステップＳ１２２０）、それらの組それぞれによって指定されるライン記憶領域の全てについて、バリッドビットの論理値を“０”に更新する（ステップＳ１２３０）。
【０１５９】
ステップＳ１２３０の処理が終了した場合、又は、ステップＳ１２００の処理において、該当するライン記憶領域が存在しない場合（ステップＳ１２００：Ｎｏ）に、キャッシュメモリ１０２は、そのスリープ命令発行時処理を終了する。
【０１６０】
＜考察＞
上記構成の第１変形仮想計算機システムは、プロセッサ１０１がセキュアＯＳをスリープ状態とするスリープ命令を発行した場合に、キャッシュメモリ１０２が、セキュアビットの論理値が“１”となるライン記憶領域の全てを一気に開放することとなる。
【０１６１】
このことによって、この第１変形仮想計算機システムは、セキュアＯＳがスリープ状態である期間中において、セキュアビットの論理値が“１”となるライン記憶領域を解放した以降に、通常ＯＳ実行制御時におけるセキュア領域への書き戻しが発生しなくなる。
【０１６２】
従って、この第１変形仮想計算機システムは、プロセッサがセキュアＯＳをスリープ状態とするスリープ命令を発行した場合に、キャッシュメモリが、セキュアビットの論理値が“１”となるライン記憶領域の全てを一気に開放しない従来の仮想計算機システムに比べて、通常ＯＳ実行制御時におけるセキュア領域への書き戻しの発生頻度が低減される可能性が高くなっている。
＜実施の形態３＞
＜概要＞
以下、本発明に係る仮想計算機システムの一実施形態として、実施の形態２における第１仮想計算機システムの一部を変形した第２変形仮想計算機システムについて説明する。
【０１６３】
実施の形態３に係る第２変形仮想計算機システムは、そのハードウエア構成が実施の形態２に係る第１変形仮想計算機システムと同一のものであるが、コントローラ３０１に内蔵される記憶素子に記憶されているプログラムの一部が実施の形態２に係る第１変形仮想計算機システムと異なっている。
【０１６４】
実施の形態２に係る第１変形仮想計算機システムは、プロセッサ１０１がセキュアＯＳをスリープ状態とするスリープ命令を発行した場合に、キャッシュメモリ１０２が、セキュアビットの論理値が“１”となるライン記憶領域の全てを一気に開放する構成の例であって、プロセッサ１０１の発行するスリープ命令が複数種存在し、スリープ命令のそれぞれが、複数の電力削減レベルのうちのいずれかに属しているとしても、それらのスリープ命令の属する電力削減レベルを考慮することがない構成の例であった。これに対して実施の形態３に係る第２変形仮想計算機システムは、プロセッサ１０１がセキュアＯＳをスリープ状態とするスリープ命令を発行した場合に、キャッシュメモリ１０２が、セキュアビットの論理値が“１”となるライン記憶領域を一気に開放する構成の例ではあるが、その発行されたスリープ命令の属する電力レベルに応じて、開放するライン記憶領域の適用範囲を制限する構成の例である。
【０１６５】
以下、本実施の形態３に係る第２変形仮想計算機システムの構成について、図面を参照しながら、実施の形態２に係る第１変形仮想計算機システムとの相違点を中心に説明する。
【０１６６】
＜構成＞
第２変形仮想計算機システムのハードウエア構成は、実施の形態２に係る第１変形仮想計算機システムのハードウエア構成と同一のものである。よって、ここではその説明を省略する。
【０１６７】
これに対して、コントローラ３０１に内蔵される記憶素子に記憶されているプログラムの一部が、実施の形態２に係る第１変形仮想計算機システムから変形されている。そして、このことによって、実施の形態２に係る第１変形仮想計算機システムにおいてキャッシュメモリ１０２が実現していた第１変形データ格納機能が、第２変形データ格納機能に変形されている。
【０１６８】
また、プロセッサ１０１が発行するスリープ命令は複数種存在し、各スリープ命令は、それぞれ互いに電力削減レベルの異なる４種のスリープ命令種のいずれかに属している。そして、スリープ命令のそれぞれは、電力削減レベルを示す２ビットの電力削減レベル情報（ＥＶ）に対応付けられている。
【０１６９】
図１３は、スリープ命令のスリープ命令種と電力削減レベル情報（ＥＶ）との対応関係を示す対応表である。
【０１７０】
同図に示される通り、この対応表は、スリープ命令種１３００と電力削減レベル１３１０と電力削減レベル情報（ＥＶ）１３２０とが対応付けられて構成されている。
【０１７１】
スリープ命令種１３００は、スリープ命令が属するスリープ命令の種類であって、スリープ命令には、ＩＮＳＴ０、ＩＮＳＴ１、ＩＮＳＴ２、ＩＮＳＴ３との４つの種類が存在している。
【０１７２】
電力削減レベル１３１０は、対応するスリープ命令種１３００の電力削減レベルを示している。ここで、電力削減レベルとは、スリープの深さのレベルのことである。そして、電力削減レベルがより小さい程、スリープの深さのレベルがより深いことを示している。
【０１７３】
電力削減レベル情報（ＥＶ）１３２０は、対応するスリープ命令種１３００に対応付けられた２ビットのビット列であり、対応するスリープ命令種１３００の電力削減レベルがより小さい程、より小さな値となっている。
【０１７４】
以下、第２変形データ格納機能について図面を用いて説明する。
【０１７５】
図１４は、第２変形データ格納機能を実現する第２変形データ格納機能ブロックの機能ブロック図である。この第２変形データ格納機能ブロックは、コントローラ３０１が内蔵する記憶素子に記憶されているプログラムを実行して、入出力回路３０２と、第０ウェイ３１０〜第３ウェイ３１３とを制御することで実現される。
【０１７６】
同図に示されるように、第２変形データ格納機能ブロックは、実施の形態２に係る第１変形データ格納機能ブロックから、ライトバック部１０２０がライトバック部１４２０に変形されている。
【０１７７】
ライトバック部１４２０は、プロセッサ１０１と内部バス１２０と置換対象選択部１０１０と格納部６３０と第０ウェイ３１０〜第３ウェイ３１３とに接続され、実施の形態２に係るライトバック部１０２０の有するライトバック機能とダーティビット更新機能とスルー機能とに加えて、以下の２つの機能を有する。
【０１７８】
変形セキュアビット検索機能：プロセッサ１０１によって発行された、セキュアＯＳをスリープ状態とするスリープ命令を検知して、（１）第０ウェイ３１０〜第３ウェイ３１３の中から、セキュアビットの論理値が“１”となり、かつ、（２）カウンタ値が、そのスリープ命令に対応する電力削減レベル情報（ＥＶ）の値以上となるライン記憶領域が存在するか否かを調べて、該当するライン記憶領域が存在する場合に、それらのライン記憶領域のそれぞれについて、ライン記憶領域を指定するウェイ番号とインデックスとを取得する変形セキュアビット探索処理を行う機能。
【０１７９】
変形セキュアデータ書戻機能：変形セキュアビット探索処理を行った場合において、ライン記憶領域を指定するウェイ番号とインデックスとの組を１組以上取得した場合に、それらの組それぞれによって指定されるライン記憶領域の全てについて、ライン記憶領域に保持されているデータを連続してメインメモリ１０３に書き戻して、それらの組それぞれによって指定されるライン記憶領域の全てについて、バリッドビットの論理値を“０”に更新する機能。
【０１８０】
以上のように構成される第２変形仮想計算機システムの行う動作について、以下図面を参照しながら説明する。
【０１８１】
＜動作＞
ここでは、第２変形仮想計算機システムの行う動作のうち、実施の形態２に係る第１変形仮想計算機システムの行うスリープ命令発行時処理から一部の処理が変形された第１変形スリープ命令発行時処理について説明する。
【０１８２】
＜第１変形スリープ命令発行時処理＞
第１変形スリープ命令発行時処理は、キャッシュメモリ１０２が行う処理であって、プロセッサ１０１がセキュアＯＳをスリープ状態とするスリープ命令を発行した場合に、セキュアビットの論理値が“１”となり、かつ、カウンタ値が、そのスリープ命令に対応する電力削減レベル情報（ＥＶ）の値以上となるライン記憶領域の全てを開放する処理である。
【０１８３】
図１５は、第１変形スリープ命令発行時処理のフローチャートである。
【０１８４】
第１変形スリープ命令発行時処理は、ライトバック部１４２０が、プロセッサ１０１によって発行された、セキュアＯＳをスリープ状態とするスリープ命令を検知することで開始される。
【０１８５】
この第１変形スリープ命令発行時処理は、実施の形態２に係る第１変形仮想計算機システムの行うスリープ命令発行時処理（図１２参照）から、ステップＳ１２００の処理がステップＳ１５００の処理に変形され、ステップＳ１５１０の処理〜ステップＳ１５３０の処理のそれぞれは、ステップＳ１２１０の処理〜ステップＳ１２３０の処理のそれぞれにおいて、ライトバック部１０２０をライトバック部１４２０に読み替えたものと同等の処理となっている。よってここではステップＳ１５００の処理について説明する。
【０１８６】
第１変形スリープ命令発行時処理が開始されると、ライトバック部１４２０は、第０ウェイ３１０〜第３ウェイ３１３の中から、セキュアビットの論理値が“１”となり、かつ、カウンタ値が、そのスリープ命令に対応する電力削減レベル情報（ＥＶ）の値以上となるライン記憶領域が存在するか否かを調べる（ステップＳ１５００）。
【０１８７】
ステップＳ１５００の処理において、該当するライン記憶領域が存在する場合（ステップＳ１５００：Ｙｅｓ）に、ステップＳ１５１０以下の処理を行う。
【０１８８】
ステップＳ１５３０の処理が終了した場合、又は、ステップＳ１５００の処理において、該当するライン記憶領域が存在しない場合（ステップＳ１５００：Ｎｏ）に、キャッシュメモリ１０２は、その第１変形スリープ命令発行時処理を終了する。
【０１８９】
＜考察＞
上記構成の第２変形仮想計算機システムは、実施の形態２に係る第２変形仮想計算機システムと比べて、スリープ命令の命令種に応じて、開放するライン記憶領域の範囲を制御することができるようになる。
＜実施の形態４＞
＜概要＞
以下、本発明に係る仮想計算機システムの一実施形態として、実施の形態２における第１変形仮想計算機システムの一部を変形した第３変形仮想計算機システムについて説明する。
【０１９０】
実施の形態４に係る第３変形仮想計算機システムは、そのハードウエア構成が実施の形態２に係る第１変形仮想計算機システムと同一のものであるが、コントローラ３０１に内蔵される記憶素子に記憶されているプログラムの一部が実施の形態２に係る第１変形仮想計算機システムと異なっている。
【０１９１】
実施の形態２に係る第１変形仮想計算機システムは、プロセッサ１０１がセキュアＯＳをスリープ状態とするスリープ命令を発行した場合に、キャッシュメモリ１０２が、セキュアビットの論理値が“１”となるライン記憶領域の全てを一気に開放する構成の例であった。これに対して、実施の形態４に係る第３変形仮想計算機システムは、プロセッサ１０１がセキュアＯＳをスリープ状態とするスリープ命令を発行した場合に、キャッシュメモリ１０２が、セキュアビットの論理値が“１”となるライン記憶領域の全てについて、同一インデックスで指定されるウェイのカウンタ値のそれぞれを、セキュアビットの論理値が“１”となるライン記憶領域のカウンタ値の方が、セキュアビットの論理値が“０”となるライン記憶領域のカウンタ値よりも小さくなるように更新する構成の例である。
【０１９２】
以下、本実施の形態４に係る第３変形仮想計算機システムの構成について、図面を参照しながら、実施の形態２に係る第１変形仮想計算機システムとの相違点を中心に説明する。
【０１９３】
＜構成＞
第３変形仮想計算機システムのハードウエア構成は、実施の形態２に係る第１変形仮想計算機システムのハードウエア構成と同一のものである。よって、ここではその説明を省略する。
【０１９４】
これに対して、コントローラ３０１に内蔵される記憶素子に記憶されているプログラムの一部が、実施の形態２に係る第１変形仮想計算機システムから変形されている。そして、このことによって、実施の形態２に係る第１変形仮想計算機システムにおいてキャッシュメモリ１０２が実現していた第１変形データ格納機能が、第３変形データ格納機能に変形されている。
【０１９５】
以下、この第３変形データ格納機能について図面を用いて説明する。
【０１９６】
図１６は、第３変形データ格納機能を実現する第３変形データ格納機能ブロックの機能ブロック図である。この第３変形データ格納機能ブロックは、コントローラ３０１が内蔵する記憶素子に記憶されているプログラムを実行して、入出力回路３０２と、第０ウェイ３１０〜第３ウェイ３１３とを制御することで実現される。
【０１９７】
同図に示されるように、第３変形データ格納機能ブロックは、実施の形態２に係る第１変形データ格納機能ブロックから、ライトバック部１０２０がライトバック部１６２０に変形されている。
【０１９８】
ライトバック部１６２０は、プロセッサ１０１と内部バス１２０と置換対象選択部１０１０と格納部６３０と第０ウェイ３１０〜第３ウェイ３１３とに接続され、実施の形態２に係るライトバック部１０２０の有するライトバック機能とダーティビット更新機能とスルー機能とに加えて、以下の２つの機能を有する。
【０１９９】
第２変形セキュアビット探索機能：プロセッサ１０１によって発行された、セキュアＯＳをスリープ状態とするスリープ命令を検知して、第０ウェイ３１０〜第３ウェイ３１３の中から、セキュアビットの論理値が“１”となるライン記憶領域が存在するか否かを調べて、セキュアビットの論理値が“１”となるライン記憶領域が存在する場合に、それらのライン記憶領域について、ライン記憶領域を指定するインデックスを取得する第２変形セキュアビット探索処理を行う機能。
【０２００】
カウンタ値更新機能：第２変形セキュアビット探索処理を行った場合において、ライン記憶領域を指定するインデックスを１つ以上取得した場合に、それらのインデックスの全てについて、同一インデックスで指定されるウェイのカウンタ値のそれぞれを、セキュアビットの論理値が“１”となるライン記憶領域のカウンタ値の方が、セキュアビットの論理値が“０”となるライン記憶領域のカウンタ値よりも小さくなるように更新する機能。
【０２０１】
以上のように構成される第３変形仮想計算機システムの行う動作について、以下図面を参照しながら説明する。
【０２０２】
＜動作＞
ここでは、第３変形仮想計算機システムの行う動作のうち、実施の形態２に係る第１変形仮想計算機システムの行うスリープ命令発行時処理から一部の処理が変形された第２変形スリープ命令発行時処理について説明する。
【０２０３】
＜第２変形スリープ命令発行時処理＞
第２変形スリープ命令発行時処理は、キャッシュメモリ１０２が行う処理であって、プロセッサ１０１がセキュアＯＳをスリープ状態とするスリープ命令を発行した場合に、セキュアビットの論理値が“１”となるライン記憶領域の全てについて、同一インデックスで指定されるウェイのカウンタ値のそれぞれを、セキュアビットの論理値が“１”となるライン記憶領域のカウンタ値の方が、セキュアビットの論理値が“０”となるライン記憶領域のカウンタ値よりも小さくなるように更新する処理である。
【０２０４】
図１７は、第２変形スリープ命令発行時処理のフローチャートである。
【０２０５】
第１変形スリープ命令発行時処理は、ライトバック部１４２０が、プロセッサ１０１によって発行された、セキュアＯＳをスリープ状態とするスリープ命令を検知することで開始される。
【０２０６】
第２変形スリープ命令発行時処理が開始されると、ライトバック部１６２０は、第０ウェイ３１０〜第３ウェイ３１３の中から、セキュアビットの論理値が“１”となるライン記憶領域が存在するか否かを調べる（ステップＳ１７００）。
【０２０７】
ステップＳ１７００の処理において、該当するライン記憶領域が存在する場合（ステップＳ１７００：Ｙｅｓ）に、ライトバック部１６２０は、該当するライン記憶領域それぞれについて、同一インデックスで指定されるウェイのカウンタ値のそれぞれを、セキュアビットの論理値が“１”となるライン記憶領域のカウンタ値の方が、セキュアビットの論理値が“０”となるライン記憶領域のカウンタ値よりも小さくなるように更新する（ステップＳ１７１０）。
【０２０８】
ステップＳ１７１０の処理が終了した場合、又は、ステップＳ１７００の処理において、該当するライン記憶領域が存在しない場合（ステップＳ１７００：Ｎｏ）に、キャッシュメモリ１０２は、その第２変形スリープ命令発行時処理を終了する。
【０２０９】
＜考察＞
上記構成の第３変形仮想計算機システムは、プロセッサ１０１がセキュアＯＳをスリープ状態とするスリープ命令を発行した場合に、キャッシュメモリ１０２が、セキュアビットの論理値が“１”となるライン記憶領域の全てについて、同一インデックスで指定されるウェイのカウンタ値のそれぞれを、セキュアビットの論理値が“１”となるライン記憶領域のカウンタ値の方が、セキュアビットの論理値が“０”となるライン記憶領域のカウンタ値よりも小さくなるように更新する。このことによって、セキュアＯＳがスリープ状態となる期間において、通常ＯＳ実行制御時におけるセキュア領域への書き戻しの発生頻度が、従来よりも低減される可能性が高くなる。
＜実施の形態５＞
＜概要＞
以下、本発明に係る仮想計算機システムの一実施形態として、実施の形態１における仮想計算機システム１００の一部を変形した第４変形仮想計算機システムについて説明する。
【０２１０】
実施の形態５に係る第４変形仮想計算機システムは、そのハードウエア構成が実施の形態１に係る仮想計算機システム１００と同一のものであるが、コントローラ３０１に内蔵される記憶素子に記憶されているプログラムの一部が実施の形態１に係る仮想計算機システム１００と異なっている。
【０２１１】
実施の形態１に係る仮想計算機システム１００は、キャッシュメモリ１０２が、プロセッサ１０１が利用するデータを新たに記憶する場合において、メインメモリ１０３への書き戻しが発生するときに、書き戻し対象とするウェイの選択を、スリープ状態である通常ＯＳがプロセッサ１０１によって実行制御されていた際にメインメモリ１０３から読み出されたデータが格納されているウェイの方が、それ以外のウェイよりも優先されるように行う構成の例であった。これに対して、実施の形態５に係る第４変形仮想計算機システムは、キャッシュメモリ１０２が、プロセッサ１０１が利用するデータを新たに記憶する場合において、メインメモリ１０３への書き戻しが発生するときに、書き戻し対象とするウェイの選択を、セキュアエリア以外から読み出されたデータが格納されているウェイの方が、セキュアエリアから読み出されたデータが格納されているウェイよりも優先されるように行う構成の例である。
【０２１２】
以下、本実施の形態５に係る第４変形仮想計算機システムの構成について、図面を参照しながら、実施の形態１に係る仮想計算機システムとの相違点を中心に説明する。
【０２１３】
＜構成＞
第４変形仮想計算機システムのハードウエア構成は、実施の形態１に係る仮想計算機システム１００のハードウエア構成と同一のものである。よって、ここではその説明を省略する。
【０２１４】
これに対して、コントローラ３０１に内蔵される記憶素子に記憶されているプログラムの一部が、実施の形態１に係る仮想計算機システム１００から変形されている。そして、このことによって、実施の形態１に係る仮想計算機システム１００においてキャッシュメモリ１０２が実現していたデータ格納機能が、第４変形データ格納機能に変形されている。
【０２１５】
以下、この第４変形データ格納機能について図面を用いて説明する。
【０２１６】
図１８は、第４変形データ格納機能を実現する第４変形データ格納機能ブロックの機能ブロック図である。この第４変形データ格納機能ブロックは、コントローラ３０１が内蔵する記憶素子に記憶されているプログラムを実行して、入出力回路３０２と、第０ウェイ３１０〜第３ウェイ３１３とを制御することで実現される。
【０２１７】
同図に示されるように、第４変形データ格納機能ブロックは、実施の形態１に係るデータ格納機能ブロックから、置換対象選択部６１０が置換対象選択部１８１０に変形されている。
【０２１８】
置換対象選択部１８１０は、プロセッサ１０１とライトバック部６２０と格納部６３０と第０ウェイ３１０〜第３ウェイ３１３とに接続され、以下の２つの機能を有する。
【０２１９】
第２変形読出機能：格納部６３０からインデックスを受け取ると、受け取ったインデックスで指定される、第０ウェイ３１０〜第３ウェイ３１３のライン記憶領域のそれぞれに記憶されている、バリッドビットとセキュアビットとカウンタ値とを読み出す読出処理を行う機能。
【０２２０】
第１変形ウェイ選択機能：読出処理を行った場合に、各ウェイについて、読み出したバリッドビットの反転信号である１ビットのインバリッドビットが上位ビット側、読み出したセキュアビットの反転信号である１ビットの非セキュアビットが中位ビット側、読み出した２ビットのカウンタ値が下位ビット側となる４ビットの変形選択用ビット列を生成し、生成した４つの変形選択用ビット列のうち、最も大きな値を示す変形選択用ビット列に対応するウェイを選択して、このウェイを特定するウェイ選択信号を、ライトバック部６２０へ送る機能。ここで、最も大きな値を示す変形選択用ビット列が複数ある場合には、最も小さなウェイ番号のウェイを選択する。
【０２２１】
以上のように構成される第３変形仮想計算機システムの行う動作について、以下図面を参照しながら説明する。
【０２２２】
＜動作＞
ここでは、第４変形仮想計算機システムの行う動作のうち、特徴的な動作である第２変形データ格納処理について説明する。
【０２２３】
＜第２変形データ格納処理＞
第２変形データ格納処理は、キャッシュメモリ１０２が、内蔵する第０ウェイ３１０〜第３ウェイ３１３のいずれかに、プロセッサ１０１が利用するデータを新たに格納する処理である。
【０２２４】
図１９は、第２変形データ格納処理のフローチャートである。
【０２２５】
第２変形データ格納処理は、格納部６３０が、プロセッサ１０１からタグとインデックスとＯＳ識別子とを受け取り、さらに、プロセッサ１０１又はメインメモリ１０３から格納するデータを受け取ったことで開始される。
【０２２６】
第２変形データ格納処理が開始されると、格納部６３０は、プロセッサ１０１から受け取ったインデックスを置換対象選択部１８１０とライトバック部６２０へと送る（ステップＳ１９００）。
【０２２７】
格納部６３０からインデックスが送られてくると、置換対象選択部１８１０は、第０ウェイ３１０〜第３ウェイ３１３のそれぞれから、そのインデックスで指定されるライン記憶領域に記憶されている、バリッドビットとセキュアビットとカウンタ値とを読み出す（ステップＳ１９１０）。そして、置換対象選択部１８１０は、各ウェイについて、読み出したバリッドビットの反転信号である１ビットのインバリッドビットが上位ビット側、読み出したセキュアビットの反転信号である１ビットの非セキュアビットが中位ビット側、読み出した２ビットのカウンタ値が下位ビット側となる４ビットの変形選択用ビット列を生成し、生成した４つの変形選択用ビット列のうち、最も大きな値を示す変形選択用ビット列に対応するウェイを選択して、このウェイを特定するウェイ選択信号を、ライトバック部６２０へ送る（ステップＳ１９２０）。
【０２２８】
ステップＳ１９４０の処理〜ステップＳ１９９０の処理のそれぞれは、実施の形態１に係る格納処理（図９参照）における、ステップＳ９４０の処理〜ステップＳ９９０の処理のそれぞれにおいて、置換対象選択部６１０を置換対象選択部１８１０に読み替えたものと同等の処理となっている。よってここでは、これらの説明を省略する。
【０２２９】
ステップＳ１９９０の処理が終了すると、キャッシュメモリ１０２は、その第２変形データ格納処理を終了する。
【０２３０】
＜考察＞
上記構成の第４変形仮想計算機システムは、キャッシュメモリ１０２が、プロセッサ１０１が利用するデータを新たに記憶する場合において、メインメモリ１０３への書き戻しが発生するときに、書き戻し対象とするウェイの選択を、セキュアエリア以外から読み出されたデータが格納されているウェイの方が、セキュアエリアから読み出されたデータが格納されているウェイよりも優先されるように行う。
【０２３１】
このことによって、この第３変形仮想計算機システムは、通常ＯＳ実行制御時におけるセキュア領域への書き戻しの発生頻度を、従来よりも低減する可能性を高くすることができる。
＜実施の形態６＞
＜概要＞
以下、本発明に係る仮想計算機システムの一実施形態として、実施の形態１における仮想計算機システム１００の一部を変形した第５変形仮想計算機システムについて説明する。
【０２３２】
実施の形態６に係る第５変形仮想計算機システムは、そのハードウエア構成が実施の形態１に係る仮想計算機システム１００と同一のものであるが、コントローラ３０１に内蔵される記憶素子に記憶されているプログラムの一部が実施の形態１に係る仮想計算機システム１００と異なっている。
【０２３３】
実施の形態１に係る仮想計算機システム１００は、キャッシュメモリ１０２が、プロセッサ１０１が利用するデータを新たに記憶する場合において、メインメモリ１０３への書き戻しが発生するときに、書き戻し対象とするウェイの選択を、スリープ状態である通常ＯＳがプロセッサ１０１によって実行制御されていた際にメインメモリ１０３から読み出されたデータが格納されているウェイの方が、それ以外のウェイよりも優先されるように行う構成の例であった。これに対して、実施の形態６に係る第５変形仮想計算機システムは、キャッシュメモリ１０２が、格納するデータがセキュア記憶領域から読み出されたか否かを区別して、セキュア記憶領域以外の記憶領域から読み出されたデータを第０ウェイ３１０と第１ウェイ３１１とのいずれかに格納し、セキュア記憶領域から読み出されたデータを第２ウェイ３１２と第３ウェイ３１３とのいずれかに格納する構成の例である。
【０２３４】
以下、本実施の形態６に係る第５変形仮想計算機システムの構成について、図面を参照しながら、実施の形態１に係る仮想計算機システム１００との相違点を中心に説明する。
【０２３５】
＜構成＞
第５変形仮想計算機システムのハードウエア構成は、実施の形態１に係る仮想計算機システム１００のハードウエア構成と同一のものである。よって、ここではその説明を省略する。
【０２３６】
これに対して、コントローラ３０１に内蔵される記憶素子に記憶されているプログラムの一部が、実施の形態１に係る仮想計算機システム１００から変形されている。そして、このことによって、実施の形態１に係る仮想計算機システム１００においてキャッシュメモリ１０２が実現していたデータ格納機能が、第５変形データ格納機能に変形されている。
【０２３７】
以下、この第５変形データ格納機能について図面を用いて説明する。
【０２３８】
図２０は、第５変形データ格納機能を実現する第５変形データ格納機能ブロックの機能ブロック図である。この第５変形データ格納機能ブロックは、コントローラ３０１が内蔵する記憶素子に記憶されているプログラムを実行して、入出力回路３０２と、第０ウェイ３１０〜第３ウェイ３１３とを制御することで実現される。
【０２３９】
同図に示されるように、第５変形データ格納機能ブロックは、実施の形態１に係るデータ格納機能ブロックから、置換対象選択部６１０が置換対象選択部２０１０に変形され、格納部６３０が格納部２０３０に変形されている。
【０２４０】
置換対象選択部２０１０は、プロセッサ１０１とライトバック部６２０と格納部６３０と第０ウェイ３１０〜第３ウェイ３１３とに接続され、以下の２つの機能を有する。
【０２４１】
第３変形読出機能：格納部２０３０からタグとインデックスを受け取ると、受け取ったタグとインデックスとで構成されるアドレスが、セキュア記憶領域を示しているか否かを調べ、（１）受け取ったタグとインデックスとで構成されるアドレスが、セキュア記憶領域を示している場合に、受け取ったインデックスで指定される、第０ウェイ３１０と第１ウェイ３１１とのライン記憶領域のそれぞれに記憶されている、バリッドビットとカウンタ値とを読み出すセキュア読出処理を行い、（２）受け取ったタグとインデックスとで構成されるアドレスが、セキュア記憶領域以外の記憶領域を示している場合に、受け取ったインデックスで指定される、第２ウェイ３１２と第３ウェイ３１３とのライン記憶領域のそれぞれに記憶されている、バリッドビットとカウンタ値とを読み出す非セキュア読出処理を行う機能。
【０２４２】
第２変形ウェイ選択機能：（１）セキュア読出処理を行った場合に、第０ウェイ３１０と第１ウェイ３１１とについて、読み出したバリッドビットの反転信号である１ビットのインバリッドビットが上位ビット側、読み出した２ビットのカウンタ値が下位ビット側となる３ビットのセキュア選択用ビット列を生成し、生成した２つのセキュア選択用ビット列のうち、最も大きな値を示すセキュア選択用ビット列に対応するウェイを選択して、このウェイを特定するウェイ選択信号を、ライトバック部６２０へ送り、（２）非セキュア読出処理を行った場合に、第２ウェイ３１２と第３ウェイ３１３とについて、読み出したバリッドビットの反転信号である１ビットのインバリッドビットが上位ビット側、読み出した２ビットのカウンタ値が下位ビット側となる３ビットの非セキュア選択用ビット列を生成し、生成した２つの非セキュア選択用ビット列のうち、最も大きな値を示す非セキュア選択用ビット列に対応するウェイを選択して、このウェイを特定するウェイ選択信号を、ライトバック部６２０へ送る機能。ここで、最も大きな値を示す選択用ビット列が複数ある場合には、最も小さなウェイ番号のウェイを選択する。
【０２４３】
格納部６３０は、プロセッサ１０１と内部バス１２０と置換対象選択部６１０とライトバック部６２０とに接続され、実施の形態１に係る格納機能に加えて、以下の変形インデックス送信機能を有する。
【０２４４】
変形インデックス送信機能：キャッシュメモリ１０２が、新たにプロセッサ１０１が利用するデータを格納する場合において、プロセッサ１０１からタグとインデックスとＯＳ識別子とを受け取り、さらに、プロセッサ１０１又はメインメモリ１０３から格納するデータを受け取った場合に、受け取ったタグとインデックスとを置換対象選択部２０１０へ送り、受け取ったインデックスをライトバック部６２０へ送る変形インデックス送信処理を行う機能。
【０２４５】
以上のように構成される第５変形仮想計算機システムの行う動作について、以下図面を参照しながら説明する。
【０２４６】
＜動作＞
ここでは、第５変形仮想計算機システムの行う動作のうち、実施の形態１に係る仮想計算機システム１００の行う格納処理から一部の処理が変形された第３変形データ格納処理について説明する。
【０２４７】
＜第３変形データ格納処理＞
第３変形データ格納処理は、キャッシュメモリ１０２が、内蔵する第０ウェイ３１０〜第３ウェイ３１３のいずれかに、プロセッサ１０１が利用するデータを新たに格納する処理である。
【０２４８】
図２１は、第３変形データ格納処理のフローチャートである。
【０２４９】
第３変形格データ納処理は、格納部２０３０が、プロセッサ１０１からタグとインデックスとＯＳ識別子とを受け取り、さらに、プロセッサ１０１又はメインメモリ１０３から格納するデータを受け取ったことで開始される。
【０２５０】
第３変形データ格納処理が開始されると、格納部２０３０は、プロセッサ１０１から受け取ったタグとインデックスとを置換対象選択部２０１０へ送り、受け取ったインデックスをライトバック部６２０へと送る（ステップＳ２１００）。
【０２５１】
格納部２０３０からタグとインデックスとが送られてくると、置換対象選択部２０１０は、受け取ったタグとインデックスとで構成されるアドレスが、セキュア記憶領域を示しているか否かを調べる（ステップＳ２１１０）。
【０２５２】
ステップＳ２１１０の処理において、受け取ったタグとインデックスとで構成されるアドレスが、セキュア記憶領域を示している場合に（ステップＳ２１１０：Ｙｅｓ）、置換対象選択部２０１０は、受け取ったインデックスで指定される、第０ウェイ３１０と第１ウェイ３１１とのライン記憶領域のそれぞれに記憶されている、バリッドビットとカウンタ値とを読み出す（ステップＳ２１２０）。
【０２５３】
ステップＳ２１１０の処理において、受け取ったタグとインデックスとで構成されるアドレスが、セキュア記憶領域以外の記憶領域を示している場合に（ステップＳ２１１０：Ｎｏ）、置換対象選択部２０１０は、受け取ったインデックスで指定される、第２ウェイ３１２と第３ウェイ３１３のライン記憶領域とのそれぞれに記憶されている、バリッドビットとカウンタ値とを読み出す（ステップＳ２１２５）。
【０２５４】
ステップＳ２１２０の処理が終了した場合、又は、ステップＳ２１２５の処理が終了した場合に、キャッシュメモリ１０２は、ステップＳ２１４０以降の処理を行う。
【０２５５】
ステップＳ２１４０の処理〜ステップＳ２１９０の処理のそれぞれは、実施の形態１に係る格納処理（図９参照）における、ステップＳ９４０の処理〜ステップＳ９９０の処理のそれぞれにおいて、置換対象選択部６１０を置換対象選択部２０１０に読み替えて、格納部６３０を格納部２０３０に読み替えたものと同等の処理となっている。よってここでは、これらの説明を省略する。
【０２５６】
ステップＳ２１９０の処理が終了すると、キャッシュメモリ１０２は、その第３変形データ格納処理を終了する。
【０２５７】
＜考察＞
上記構成の第５変形仮想計算機システムは、キャッシュメモリ１０２が、格納するデータがセキュア記憶領域から読み出されたか否かを区別して、セキュア記憶領域以外の記憶領域から読み出されたデータを第０ウェイ３１０と第１ウェイ３１１とのいずれかに格納し、セキュア記憶領域から読み出されたデータを第２ウェイ３１２と第３ウェイ３１３とのいずれかに格納する。このことによって、通常ＯＳ実行制御時におけるセキュア領域への書き戻しは、発生することがない。
＜補足＞
以上、本発明に係る仮想計算機システムの一実施形態として、実施の形態１〜実施の形態６において、６つの仮想計算機システムの例について説明したが、以下のように変形することも可能であり、本発明は上述した実施の形態で示した通りの仮想計算機システムに限られないことはもちろんである。
（１）実施の形態１において、仮想計算機システム１００が１つのプロセッサを備える構成の例について説明したが、仮想計算機システムとして成立することができれば、必ずしもプロセッサの数は１つに限られる必要はなく、例えば、２つ、３つといった複数個であっても構わない。プロセッサの数が複数個の場合には、一例として、複数のプロセッサが１つのキャッシュメモリを共用する構成の例が考えられる。また、別の一例として、プロセッサの数だけキャッシュメモリが存在し、それぞれのプロセッサが１つのキャッシュメモリを専有して利用する構成の例等も考えられる。
（２）実施の形態１において、キャッシュメモリ１０２が４ウェイセットアソシアティブ方式である構成の例について説明したが、セットアソシアティブ方式のキャッシュメモリであれば、必ずしも４つのウェイを備える構成に限られる必要はなく、例えば、８つのウェイを備える構成、２つのウェイを備える構成といった構成であっても構わない。
（３）実施の形態１において、プロセッサ１０１が通常特権モードとセキュアモードとハイパバイザモードとの３つの特権モードを有し、通常ＯＳが通常特権モードで実行され、セキュアＯＳがセキュアモードで実行され、ハイパバイザがハイパバイザモードで実行される構成の例について説明した。しかしながら、通常ＯＳが実行される特権モードよりも上位の特権モードでセキュアＯＳが実行される構成であれば、プロセッサ１０１の有する特権モードの数が３つである構成に限られる必要はない。一例として、プロセッサが下位特権モードと上位特権モードとの２つの特権モードを有し、通常ＯＳが下位特権モードで実行され、セキュアＯＳとハイパバイザとが上位特権モードで実行される構成の例が考えられる。また、別の一例として、プロセッサが４つの特権モードを有する構成の例等が考えられる。
（４）実施の形態１において、第０参照時刻計算部７００〜第３参照時刻計算部７３０のそれぞれが開放テーブルを記憶する開放テーブル記憶部を有する構成の例について説明した。しかしながら、第０参照時刻計算部７００〜第３参照時刻計算部７３０のそれぞれが開放テーブルを参照することができる構成であれば、必ずしも第０参照時刻計算部７００〜第３参照時刻計算部７３０のそれぞれが開放テーブル記憶部を有する必要はない。一例として、第０参照時刻計算部７００〜第３参照時刻計算部７３０のそれぞれが開放テーブル記憶部を備えずに、置換対象選択部６１０が１つの開放テーブル記憶部を備え、第０参照時刻計算部７００〜第３参照時刻計算部７３０のそれぞれが、置換対象選択部６１０に備えられている開放テーブル記憶部に記憶されている開放テーブルを参照するという構成の例が考えられる。
（５）実施の形態１において、プロセッサ１０１とキャッシュメモリ１０２とメインメモリ１０３とＭＰＵ１０４と周辺回路１０５とＲＯＭ１０６と第１インターフェース１０７と第２インターフェース１０８と内部バス１２０とが１つの集積回路１１０に集積されている場合の例について説明したが、これらの回路が必ずしも１つの集積回路に集積されている必要はない。例えば、プロセッサ１０１とキャッシュメモリ１０２とが第１の集積回路に集積され、その他の回路が第２の集積回路に集積される構成されていても構わないし、例えば、各回路がそれぞれ互いに異なる集積回路に集積される構成であっても構わない。
（６）以下、さらに本発明の一実施形態に係る仮想計算機システムの構成及びその変形例と各効果について説明する。
【０２５８】
（ａ）本発明の一実施形態に係る仮想計算機システムは、第１モードと第２モードとを有するプロセッサと、当該プロセッサによって当該第１モードで実行される第１オペレーティングシステムと、当該プロセッサによって当該第２モードで実行される第２オペレーティングシステムとから構成される仮想計算機システムであって、前記プロセッサが前記第１モードであるときに限って、外部のメインメモリにおける所定のセキュア記憶領域への書き込みを許可する書込制御部と、前記プロセッサによって前記メインメモリから読み出されたデータを格納する複数のウェイを有するキャッシュメモリとを備え、前記キャッシュメモリは、前記プロセッサが前記メインメモリからデータを読み出す際に、前記セキュア記憶領域からデータが読み出されたか否かを識別可能に、当該データを、前記複数のウェイのうちの新規格納可能状態であるウェイのいずれかに格納するデータ格納部と、前記第２オペレーティングシステムを実行する前記プロセッサが前記メインメモリにアクセスする際に発生する、前記複数のウェイのうちの少なくとも１つを新規格納可能状態とするための前記セキュア記憶領域へのデータの書き戻しについて、断続的に実行される回数が抑制されるように、前記セキュア記憶領域からデータが読み出されたか否かを識別して、識別結果を用いた所定アルゴリズムで、前記複数のウェイに格納されているデータの前記メインメモリへの書き戻しを行う書戻部とを有することを特徴とする。
【０２５９】
上述の構成を備える本実施形態に係る仮想計算機システムによると、プロセッサが第２モード（通常特権モード）で第２オペレーティングシステム（通常ＯＳ）を実行している場合における、セキュア記憶領域（セキュア領域）への書き戻しについて、断続的に実行される回数が抑制されることとなる。
【０２６０】
このことによって、この仮想計算機システムは、通常ＯＳ実行制御時におけるセキュア領域への書き戻しの発生頻度が、従来よりも低減される可能性を高くすることができる。
【０２６１】
図２２は、上記変形例における仮想計算機システム２２００の概略構成図である。
【０２６２】
同図に示されるように仮想計算機システム２２００は、プロセッサ２２１０とキャッシュメモリ２２２０と書込制御部２２３０とから構成される。そして、キャッシュメモリ２２２０は、第０ウェイ２２２１と第１ウェイ２２２２と第２ウェイ２２２３と第３ウェイ２２２４とデータ格納部２２２５と書戻部２２２６とから構成される。
【０２６３】
プロセッサ２２１０はデータ格納部２２２５と書戻部２２２６と書込制御部２２３０とに接続され、第１モードと第２モードとを有し、第１モードで第１オペレーティングシステムを実行し、第２モードで第２オペレーティングシステムを実行する。
【０２６４】
このプロセッサ２２１０は、一例として、実施の形態１におけるプロセッサ１０１（図１参照）として実現される。第１モードは、一例として、実施の形態１におけるプロセッサ１０１の有するセキュアモード２３０（図２参照）として実現される。第２モードは、一例として、実施の形態１におけるプロセッサ１０１の有する通常特権モード２２０（図２参照）として実現される。第１オペレーティングシステムは、一例として、実施の形態１におけるセキュアＯＳ２２０（図２参照）として実現される。第２オペレーティングシステムは、一例として、実施の形態１における第１ＯＳ２２１（図２参照）として実現される。
【０２６５】
書込制御部２２３０は、プロセッサ２２１０とデータ格納部２２２５と書戻部２２２６とメインメモリ２２４０とに接続され、プロセッサ２２１０が第１モードであるときに限って、外部のメインメモリ２２４０における所定のセキュア記憶領域への書き込みを許可する機能を有する。この書込制御部２２３０は、一例として、実施の形態１におけるＭＰＵ１０４（図１参照）として実現される。
【０２６６】
第０ウェイ２２２１は、データ格納部２２２５と書戻部２２２６とに接続され、プロセッサ２２１０によって外部のメインメモリ２２４０から読み出されたデータを格納する機能を有する。この第０ウェイ２２２１は、一例として、実施の形態１における第０ウェイ３１０（図３参照）として実現される。
【０２６７】
第１ウェイ２２２２は、データ格納部２２２５と書戻部２２２６とに接続され、プロセッサ２２１０によって外部のメインメモリ２２４０から読み出されたデータを格納する機能を有する。この第１ウェイ２２２２は、一例として、実施の形態１における第１ウェイ３１１（図３参照）として実現される。
【０２６８】
第２ウェイ２２２３は、データ格納部２２２５と書戻部２２２６とに接続され、プロセッサ２２１０によって外部のメインメモリ２２４０から読み出されたデータを格納する機能を有する。この第２ウェイ２２２３は、一例として、実施の形態１における第２ウェイ３１２（図３参照）として実現される。
【０２６９】
第３ウェイ２２２４は、データ格納部２２２５と書戻部２２２６とに接続され、プロセッサ２２１０によって外部のメインメモリ２２４０から読み出されたデータを格納する機能を有する。この第３ウェイ２２２３は、一例として、実施の形態１における第３ウェイ３１３（図３参照）として実現される。
【０２７０】
データ格納部２２２５は、第０ウェイ２２２１と第１ウェイ２２２２と第２ウェイ２２２３と第３ウェイ２２２４とプロセッサ２２１０と書込制御部２２３０とに接続され、プロセッサ２２１０がメインメモリ２２４０からデータを読み出す際に、セキュア記憶領域からデータが読み出されたか否かを識別可能に、当該データを、第０ウェイ２２２１〜第３ウェイ２２２４のうちの新規格納可能状態であるウェイのいずれかに格納する機能を有する。このデータ格納部２２２５は、一例として、実施の形態１における格納部６３０（図６参照）として実現される。
【０２７１】
書戻部２２２６は、第０ウェイ２２２１と第１ウェイ２２２２と第２ウェイ２２２３と第３ウェイ２２２４とプロセッサ２２１０と書込制御部２２３０とに接続され、第２オペレーティングシステムを実行するプロセッサ２２１０がメインメモリ２２４０にアクセスする際に発生する、第０ウェイ２２２１〜第３ウェイ２２２４のウェイのうちの少なくとも１つを新規格納可能状態とするためのセキュア記憶領域へのデータの書き戻しについて、断続的に実行される回数が抑制されるように、セキュア記憶領域からデータが読み出されたか否かを識別して、識別結果を用いた所定アルゴリズムで、第０ウェイ２２２１〜第３ウェイ２２２４のウェイに格納されているデータのメインメモリ２２４０への書き戻しを行う機能を有する。この書戻部２２２６は、一例として、実施の形態１における、置換対象選択部６１０（図６参照）とライトバック部６２０（図６参照）とからなるブロックして実現される。
【０２７２】
（ｂ）また、前記キャッシュメモリは、格納するデータについて、前記セキュア記憶領域から読み出されたデータであることを示すセキュア識別情報を格納するためのセキュア識別情報格納領域を有し、前記データ格納部は、前記プロセッサによって前記メインメモリから読み出されたデータを前記複数のウェイのいずれかに格納する場合において、当該データが前記セキュア記憶領域から読み出されたものであるときに限って、前記セキュア識別情報を当該データに対応付けて前記セキュア識別情報格納領域に格納することで前記識別を可能とするとしてもよい。
【０２７３】
このような構成にすることで、セキュア識別情報格納領域にセキュア識別情報が格納されているか否かを調べるという比較的簡素な処理を行うことで、ウェイに格納されているデータが、セキュア記憶領域からデータが読み出されたか否かを識別することができるようになる。
【０２７４】
（ｃ）また、前記複数のウェイのそれぞれは、前記メインメモリの記憶領域を指定するアドレスにおける所定の一部のビット列からなるインデックスによって指定される、前記メインメモリから読み出されたデータを格納するためのライン格納領域を複数含み、前記データ格納部は、前記格納を、前記プロセッサが前記メインメモリからアドレスを指定してデータを読み出す際に、当該アドレスを構成するインデックスによって指定されるライン格納領域のうち、新規格納可能状態であるウェイのライン格納領域に対して行い、前記キャッシュメモリは、前記ライン格納領域のそれぞれについての、格納するデータが前記メインメモリとの間でコヒーレンシが保たれていないことを示すダーティ情報を格納するためのダーティ情報格納領域と、前記ライン格納領域のそれぞれについて、格納するデータが前記メインメモリとの間でコヒーレンシが保たれていない場合に限って、前記ダーティ情報格納領域に前記ダーティ情報が格納されるように、前記ダーティ情報格納領域への前記ダーティ情報の格納を制御するダーティ情報格納制御部とを有し、前記所定アルゴリズムは、前記第１オペレーティングシステムを実行するプロセッサによって電力削減命令が発行された場合に、前記ダーティ情報格納領域に前記ダーティ情報が格納されているライン格納領域のうちの、前記セキュア識別情報格納領域に前記セキュア識別情報が格納されているライン格納領域の全てについて、格納されているデータを連続して前記セキュア記憶領域へ書き戻すアルゴリズムであるとしてもよい。
【０２７５】
このような構成にすることで、前記第１オペレーティングシステムを実行するプロセッサによって電力削減命令が発行された場合に、キャッシュメモリに含まれるライン格納領域のうち、セキュア記憶領域から読み出されたデータが格納されていたライン格納領域の全てついて、格納するデータをセキュア記憶領域へ書き戻すこととなる。そして、このことによって、キャッシュメモリに格納しているデータの中に、セキュア記憶領域へ書き戻す対象となるものが存在しなくなる。
【０２７６】
（ｄ）また、電力削減命令のそれぞれは、複数の電力削減レベルのうちのいずれかに属し、前記キャッシュメモリは、前記ライン格納領域のそれぞれについての、同一インデックスで指定されるライン記憶領域のうちのいずれかを新規格納可能状態とするための優先度を示す新規格納優先度を格納する新規格納優先度格納領域を有し、前記書戻部は、前記書き戻しを、発行された電力削減命令の属する電力削減レベルによって定められる所定の優先度以上の新規格納優先度が前記新規格納優先度格納領域に格納されているライン格納領域に限って行うとしてもよい。
【０２７７】
このような構成にすることで、電力削減命令の電力削減レベルに応じて、セキュア記憶領域への書き戻す対象となるデータの範囲を制限することができるようになる。
【０２７８】
（ｅ）また、前記複数のウェイのそれぞれは、前記メインメモリの記憶領域を指定するアドレスにおける所定の一部のビット列からなるインデックスによって指定される、前記メインメモリから読み出されたデータを格納するためのライン格納領域を複数含み、前記データ格納部は、前記格納を、前記プロセッサが前記メインメモリからアドレスを指定してデータを読み出す際に、当該アドレスを構成するインデックスによって指定されるライン格納領域のうち、新規格納可能状態であるウェイのライン格納領域に対して行い、前記キャッシュメモリは、前記ライン格納領域のそれぞれについての、同一インデックスで指定されるライン記憶領域のうちのいずれかを新規格納可能状態とするための優先度を示す新規格納優先度を格納する新規格納優先度格納領域と、前記データ格納部によって、いずれかのライン格納領域にデータが格納される際に、当該ライン格納領域を指定するインデックスによって指定される各ライン格納領域について、前記セキュア識別情報格納領域にセキュア識別情報が格納されているライン格納領域についての新規格納優先度の方が、前記セキュア識別情報格納領域にセキュア識別情報が格納されていないライン格納領域についての新規格納優先度よりも低くなるように、前記新規格納優先度格納領域に格納されている新規格納優先度を更新する新規格納優先度更新部とを有し、前記所定アルゴリズムは、前記新規格納優先度格納領域に格納されている新規格納優先度を参照して、同一のインデックスによって指定されるライン格納領域のうち、最も高い新規格納優先度となるライン格納領域に格納されているデータについて書き戻すアルゴリズムであるとしてもよい。
【０２７９】
このような構成にすることで、メインメモリへのデータの書き戻しが発生する場合に、書き戻しの対象となるデータについて、セキュア記憶領域以外の記憶領域から読み出されたデータの方が、セキュア記憶領域から読み出されたデータよりも優先されることとなる。
【０２８０】
（ｆ）また、前記複数のウェイのそれぞれは、前記メインメモリの記憶領域を指定するアドレスにおける所定の一部のビット列からなるインデックスによって指定される、前記メインメモリから読み出されたデータを格納するためのライン格納領域を複数含み、前記データ格納部は、前記格納を、前記プロセッサが前記メインメモリからアドレスを指定してデータを読み出す際に、当該アドレスを構成するインデックスによって指定されるライン格納領域のうち、新規格納可能状態であるウェイのライン格納領域に対して行い、前記キャッシュメモリは、前記ライン格納領域のそれぞれについての、同一インデックスで指定されるライン記憶領域のうちのいずれかを新規格納可能状態とするための優先度を示す新規格納優先度を格納する新規格納優先度格納領域と、前記第１オペレーティングシステムを実行するプロセッサによって電力削減命令が発行された場合に、前記セキュア識別情報格納領域にセキュア識別情報が格納されているライン格納領域についての新規格納優先度の方が、前記セキュア識別情報格納領域にセキュア識別情報が格納されていないライン格納領域についての新規格納優先度よりも低くなるように、前記新規格納優先度格納領域に格納されている新規格納優先度を更新する新規格納優先度更新部とを有し、前記所定アルゴリズムは、前記新規格納優先度格納領域に格納されている新規格納優先度を参照して、同一のインデックスによって指定されるライン格納領域のうち、最も高い新規格納優先度のライン格納領域に格納されているデータについて書き戻すアルゴリズムであるとしてもよい。
【０２８１】
このような構成にすることで、第１オペレーティングシステムを実行するプロセッサによって電力削減命令が発行された場合において、メインメモリへのデータの書き戻しが発生するときに、書き戻しの対象となるデータについて、セキュア記憶領域以外の記憶領域から読み出されたデータの方が、セキュア記憶領域から読み出されたデータよりも優先されることとなる。
【０２８２】
（ｇ）また、前記複数のウェイのそれぞれは、前記メインメモリにおける記憶領域を指定するアドレスにおける所定の一部のビット列からなるインデックスによって指定される、前記メインメモリから読み出されたデータを格納するためのライン格納領域を複数含み、前記データ格納部は、前記格納を、前記プロセッサが前記メインメモリからアドレスを指定してデータを読み出す際に、当該アドレスを構成するインデックスによって指定されるライン格納領域のうち、新規格納可能状態であるウェイのライン格納領域に対して行い、前記キャッシュメモリは、前記プロセッサが前記メインメモリからアドレスを指定してデータを読み出す際に、当該アドレスを構成するインデックスによって指定されるライン格納領域についての、同一インデックスで指定されるライン記憶領域のうちのいずれかを新規格納可能状態とするための優先度を示す新規格納優先度を格納するための新規格納優先度格納領域と、前記第２オペレーティングシステムの実行制御状態がスリープ状態である場合において、前記プロセッサが前記メインメモリからアドレスを指定してデータを読み出す際に、当該アドレスを構成するインデックスによって指定されるライン格納領域のそれぞれについて、前記第２オペレーティングシステムを実行するプロセッサによって読み出されたデータが格納されているライン格納領域についての新規格納優先度の方が、前記第１オペレーティングシステムを実行するプロセッサによって読み出されたデータが格納されているライン格納領域についての新規格納優先度よりも低くなるように新規格納優先度を生成して前記新規格納優先度格納領域に格納する新規格納優先度格納部とを有し、前記所定アルゴリズムは、前記新規格納優先度格納領域に格納されている新規格納優先度を参照して、前記プロセッサが前記メインメモリからアドレスを指定してデータを読み出す際に、当該アドレスを構成するインデックスによって指定されるライン格納領域のうち、最も高い新規格納優先度となるライン格納領域に格納されているデータについて書き戻すアルゴリズムであるとしてもよい。
【０２８３】
このような構成にすることで、第２オペレーティングシステムの実行制御状態がスリープ状態である場合において、メインメモリへのデータの書き戻しが発生するときに、書き戻しの対象となるデータについて、第２オペレーティングシステムを実行するプロセッサによって読み出されたデータの方が、第１オペレーティングシステムを実行するプロセッサによって読み出されたデータよりも優先されることとなる。
【０２８４】
（ｈ）また、前記複数のウェイは、第１ウェイと第２ウェイとを含み、前記データ格納部は、前記セキュア記憶領域から読み出されたデータに限って前記第１ウェイに格納し、前記セキュア記憶領域以外の記憶領域から読み出されたデータに限って前記第２ウェイに格納することで前記識別を可能とし、前記所定アルゴリズムは、前記セキュア記憶領域以外の記憶領域から読み出されたデータを格納する場合において、前記メインメモリへの書き戻しが発生するとき、前記第２ウェイを前記メインメモリへの書き戻しの対象ウェイとするアルゴリズムであるとしてもよい。
【０２８５】
このような構成にすることで、プロセッサが第２モードで第２オペレーティングシステムを実行している場合における、セキュア記憶領域への書き戻しが発生しなくなる。
【産業上の利用可能性】
【０２８６】
本発明は、キャッシュメモリを有する仮想計算機システムに広く利用することができる。
【符号の説明】
【０２８７】
１００  仮想計算機システム
１１０  集積回路
１０１  プロセッサ
１０２  キャッシュメモリ
１０３  メインメモリ
１０４  ＭＰＵ
１０５  周辺回路
１０６  ＲＯＭ
１０７  第１インターフェース
１０８  第２インターフェース
１３０  入力回路
１４０  出力回路
６１０  置換対象選択部
６２０  ライトバック部
６３０  格納部
【図１】
2012102002.tif 000003
【図２】
2012102002.tif 000004
【図３】
2012102002.tif 000005
【図４】
2012102002.tif 000006
【図５】
2012102002.tif 000007
【図６】
2012102002.tif 000008
【図７】
2012102002.tif 000009
【図８】
2012102002.tif 000010
【図９】
2012102002.tif 000011
【図１０】
2012102002.tif 000012
【図１１】
2012102002.tif 000013
【図１２】
2012102002.tif 000014
【図１３】
2012102002.tif 000015
【図１４】
2012102002.tif 000016
【図１５】
2012102002.tif 000017
【図１６】
2012102002.tif 000018
【図１７】
2012102002.tif 000019
【図１８】
2012102002.tif 000020
【図１９】
2012102002.tif 000021
【図２０】
2012102002.tif 000022
【図２１】
2012102002.tif 000023
【図２２】
2012102002.tif 000024
【国際調査報告】
2012102002.tif 000025
2012102002.tif 000026
2012102002.tif 000027
2012102002.tif 000028