(57)【要約】  監視部１３９は、複数のオペレーティングシステムを動作させるプロセッサ又は複数のプロセッサに供給される電力を制御するための電力制御命令を監視し、キャッシュエントリ設定部１４１は、キャッシュ記憶装置１１１を構成する複数のキャッシュエントリの中から置換対象となるキャッシュエントリを選択する際に、電力制御命令に基づいて変更される複数のオペレーティングシステム又は複数のプロセッサの実行状態を用いて、電力制御命令を実行したオペレーティングシステム又はプロセッサが利用していたキャッシュエントリを、過去に使用された状態に設定し、置換対象選択部１３６は、過去に使用された状態に設定されたキャッシュエントリを、置換対象となるキャッシュエントリとして選択する。これにより、複数のオペレーティングシステム又は複数のプロセッサが１のキャッシュ記憶装置を有効活用できる。
2009075070.tif 000002
【特許請求の範囲】
【請求項１】
主記憶部と、
複数のオペレーティングシステム又は複数のプロセッサによって共有され、かつ、前記主記憶部から読み出されたデータを格納する複数のキャッシュエントリから構成されるキャッシュ記憶装置と、
前記複数のオペレーティングシステムを動作させるプロセッサ又は前記複数のプロセッサに供給される電力を制御するための電力制御命令を監視する監視部と、
前記複数のキャッシュエントリの中から置換対象となるキャッシュエントリを選択する際に、前記電力制御命令に基づいて変更される前記複数のオペレーティングシステム又は前記複数のプロセッサの実行状態を用いて、前記電力制御命令を実行した前記オペレーティングシステム又は前記プロセッサが利用していたキャッシュエントリを、過去に使用された状態に設定するキャッシュエントリ設定部と、
前記キャッシュエントリ設定部によって過去に使用された状態に設定された前記キャッシュエントリを、置換対象となるキャッシュエントリとして選択する置換対象選択部とを備えることを特徴とする共有キャッシュ制御装置。
【請求項２】
前記電力制御命令は、前記オペレーティングシステムの動作停止を指示するスリープ命令を少なくとも含み、
前記実行状態は、前記オペレーティングシステムを高速クロックで動作する通常動作モードと、前記オペレーティングシステムの動作を停止するスリープモードとを少なくとも含み、
前記キャッシュエントリ設定部は、前記スリープモードの前記オペレーティングシステムが利用しているキャッシュエントリを、前記通常動作モードの前記オペレーティングシステムが利用しているキャッシュエントリより過去に使用された状態に設定し、
前記置換対象選択部は、前記キャッシュエントリ設定部によって最も過去に使用された状態に設定された前記キャッシュエントリを、置換対象となるキャッシュエントリとして選択することを特徴とする請求項１記載の共有キャッシュ制御装置。
【請求項３】
前記キャッシュエントリは、当該キャッシュエントリを使用するオペレーティングシステムを識別するためのオペレーティングシステム識別子と、当該キャッシュエントリが参照された時刻に応じてカウントされ、参照された時刻が古くなるほど値が大きくなる参照時刻カウント値と、データとを含み、
前記キャッシュエントリ設定部は、前記電力制御命令に基づいて変更される前記複数のオペレーティングシステムの実行状態と、前記実行状態に応じて予め設定される値であり、前記通常動作モードに対応する値よりも前記スリープモードに対応する値の方が大きい実行状態値とを記憶する実行状態記憶部と、前記実行状態値と、前記参照時刻カウント値とを含む参照時刻データを前記複数のキャッシュエントリ毎に作成する参照時刻データ作成部とを含み、
前記置換対象選択部は、前記参照時刻データ作成部によって作成された前記複数のキャッシュエントリ毎の前記参照時刻データを比較し、前記参照時刻データに含まれる前記実行状態値が最も大きい前記参照時刻データに対応するキャッシュエントリを、置換対象となるキャッシュエントリとして選択することを特徴とする請求項２記載の共有キャッシュ制御装置。
【請求項４】
前記置換対象選択部は、前記参照時刻データ作成部によって作成された前記複数のキャッシュエントリ毎の前記参照時刻データを比較し、前記参照時刻データに含まれる前記実行状態値が全て同じである場合、前記参照時刻データに含まれる前記参照時刻カウント値が最も大きい前記参照時刻データに対応するキャッシュエントリを、置換対象となるキャッシュエントリとして選択することを特徴とする請求項３記載の共有キャッシュ制御装置。
【請求項５】
前記電力制御命令は、前記プロセッサの動作停止を指示するスリープ命令を少なくとも含み、
前記実行状態は、前記プロセッサを高速クロックで動作する通常動作モードと、前記プロセッサの動作を停止するスリープモードとを含み、
前記キャッシュエントリ設定部は、前記スリープモードの前記プロセッサが利用しているキャッシュエントリを、前記通常動作モードの前記プロセッサが利用しているキャッシュエントリより過去に使用された状態に設定し、
前記置換対象選択部は、前記キャッシュエントリ設定部によって最も過去に使用された状態に設定された前記キャッシュエントリを、置換対象となるキャッシュエントリとして選択することを特徴とする請求項１記載の共有キャッシュ制御装置。
【請求項６】
前記キャッシュエントリは、当該キャッシュエントリを使用するプロセッサを識別するためのプロセッサ識別子と、当該キャッシュエントリが参照された時刻に応じてカウントされ、参照された時刻が古くなるほど値が大きくなる参照時刻カウント値と、データとを含み、
前記キャッシュエントリ設定部は、前記電力制御命令に基づいて変更される前記複数のプロセッサの実行状態と、前記実行状態に応じて予め設定される値であり、前記通常動作モードに対応する値よりも前記スリープモードに対応する値の方が大きい実行状態値とを記憶する実行状態記憶部と、前記実行状態値と、前記参照時刻カウント値とを含む参照時刻データを前記複数のキャッシュエントリ毎に作成する参照時刻データ作成部とを含み、
前記置換対象選択部は、前記参照時刻データ作成部によって作成された前記複数のキャッシュエントリ毎の前記参照時刻データを比較し、前記参照時刻データに含まれる前記実行状態値が最も大きい前記参照時刻データに対応するキャッシュエントリを、置換対象となるキャッシュエントリとして選択することを特徴とする請求項５記載の共有キャッシュ制御装置。
【請求項７】
前記置換対象選択部は、前記参照時刻データ作成部によって作成された前記複数のキャッシュエントリ毎の前記参照時刻データを比較し、前記参照時刻データに含まれる前記実行状態値が全て同じである場合、前記参照時刻データに含まれる前記参照時刻カウント値が最も大きい前記参照時刻データに対応するキャッシュエントリを、置換対象となるキャッシュエントリとして選択することを特徴とする請求項６記載の共有キャッシュ制御装置。
【請求項８】
前記キャッシュエントリは、当該キャッシュエントリを使用するオペレーティングシステムを識別するためのオペレーティングシステム識別子と、当該キャッシュエントリが参照された時刻に応じてカウントされ、参照された時刻が古くなるほど値が大きくなる参照時刻カウント値と、データとを含み、
前記キャッシュエントリ設定部は、前記オペレーティングシステムの実行状態と、前記実行状態に応じて前記参照時刻カウント値に加算する値を表す未使用時刻加算値とを記憶する実行状態記憶部と、前記キャッシュエントリを使用している前記オペレーティングシステムの実行状態に応じた前記未使用時刻加算値を、前記キャッシュエントリに含まれる前記参照時刻カウント値に加算し、前記参照時刻カウント値を含む参照時刻データを前記複数のキャッシュエントリ毎に作成する参照時刻データ作成部とを含み、
前記置換対象選択部は、前記参照時刻データ作成部によって作成された複数の参照時刻データに含まれる複数の参照時刻カウント値のうち、値が最も大きい前記参照時刻カウント値に対応する前記キャッシュエントリを、置換対象となるキャッシュエントリとして選択することを特徴とする請求項２記載の共有キャッシュ制御装置。
【請求項９】
前記キャッシュエントリは、当該キャッシュエントリを使用するプロセッサを識別するためのプロセッサ識別子と、当該キャッシュエントリが参照された時刻に応じてカウントされ、参照された時刻が古くなるほど値が大きくなる参照時刻カウント値と、データとを含み、
前記キャッシュエントリ設定部は、前記プロセッサの実行状態と、前記実行状態に応じて前記参照時刻カウント値に加算する値を表す未使用時刻加算値とを記憶する実行状態記憶部と、前記キャッシュエントリを使用している前記プロセッサの実行状態に応じた前記未使用時刻加算値を、前記キャッシュエントリに含まれる前記参照時刻カウント値に加算し、前記参照時刻カウント値を含む参照時刻データを前記複数のキャッシュエントリ毎に作成する参照時刻データ作成部とを含み、
前記置換対象選択部は、前記参照時刻データ作成部によって作成された複数の参照時刻データに含まれる複数の参照時刻カウント値のうち、値が最も大きい前記参照時刻カウント値に対応する前記キャッシュエントリを、置換対象となるキャッシュエントリとして選択することを特徴とする請求項５記載の共有キャッシュ制御装置。
【請求項１０】
前記電力制御命令は、前記プロセッサに供給する電力を低減する電源制御命令及び前記プロセッサに供給するクロックを低減するクロック制御命令のうちの少なくとも一方を含み、
前記実行状態は、低速クロックで動作する低消費電力モードをさらに含み、
前記スリープモードに対応付けられる前記未使用時刻加算値は、前記低消費電力モードに対応付けられる前記未使用時刻加算値に比べて大きいことを特徴とする請求項８又は９記載の共有キャッシュ制御装置。
【請求項１１】
前記低消費電力モードに対応付けられる前記未使用時刻加算値は、前記通常動作モードに対応付けられる前記未使用時刻加算値に比べて大きく、かつ前記スリープモードに対応付けられる前記未使用時刻加算値に比べて小さいことを特徴とする請求項１０記載の共有キャッシュ制御装置。
【請求項１２】
前記電力制御命令は、前記オペレーティングシステムの動作停止を指示するスリープ命令を少なくとも含み、
前記実行状態は、前記オペレーティングシステムを高速クロックで動作する通常動作モードと、前記オペレーティングシステムの動作を停止するスリープモードとを少なくとも含み、
前記キャッシュ記憶装置は、前記複数のキャッシュエントリをそれぞれ有する複数のウェイを含み、
前記キャッシュエントリ設定部は、前記電力制御命令に基づいて変更される前記複数のオペレーティングシステムの実行状態と、前記複数のウェイのうちの前記オペレーティングシステムが利用するウェイを識別するためのウェイ識別子とを記憶する実行状態記憶部と、前記実行状態記憶部を参照し、前記スリープモードの前記オペレーティングシステムが利用しているウェイを置換対象となるウェイに設定するとともに、前記通常動作モードの前記オペレーティングシステムが利用しているウェイを置換対象とならないウェイに設定するロックダウン制御部とを含み、
前記置換対象選択部は、前記ロックダウン制御部によって置換対象となるウェイに設定されたウェイの中から、最も過去に使用された前記キャッシュエントリを、置換対象となるキャッシュエントリとして選択することを特徴とする請求項１記載の共有キャッシュ制御装置。
【請求項１３】
複数のオペレーティングシステム又は複数のプロセッサによって共有され、かつ、主記憶部から読み出されたデータを格納する複数のキャッシュエントリから構成されるキャッシュ記憶装置にデータを記憶するキャッシュ記憶ステップと、
前記複数のオペレーティングシステムを動作させるプロセッサ又は前記複数のプロセッサに供給される電力を制御するための電力制御命令を監視する監視ステップと、
前記複数のキャッシュエントリの中から置換対象となるキャッシュエントリを選択する際に、前記電力制御命令に基づいて変更される前記複数のオペレーティングシステム又は前記複数のプロセッサの前記実行状態を用いて、前記電力制御命令を実行した前記オペレーティングシステム又は前記プロセッサが利用していたキャッシュエントリを、過去に使用された状態に設定するキャッシュエントリ設定ステップと、
前記キャッシュエントリ設定ステップにおいて過去に使用された状態に設定された前記キャッシュエントリを、置換対象となるキャッシュエントリとして選択する置換対象選択ステップとを含むことを特徴とする共有キャッシュ制御方法。
【請求項１４】
複数のオペレーティングシステム又は複数のプロセッサによって共有され、かつ、主記憶装置から読み出されたデータを格納する複数のキャッシュエントリから構成されるキャッシュ記憶装置と、
前記複数のオペレーティングシステムを動作させるプロセッサ又は前記複数のプロセッサに供給される電力を制御するための電力制御命令を監視する監視回路と、
前記複数のキャッシュエントリの中から置換対象となるキャッシュエントリを選択する際に、前記電力制御命令に基づいて変更される前記複数のオペレーティングシステム又は前記複数のプロセッサの実行状態を用いて、前記電力制御命令を実行した前記オペレーティングシステム又は前記プロセッサが利用していたキャッシュエントリを、過去に使用された状態に設定するキャッシュエントリ設定回路と、
前記キャッシュエントリ設定回路によって過去に使用された状態に設定された前記キャッシュエントリを、置換対象となるキャッシュエントリとして選択する置換対象選択回路とを備えることを特徴とする集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のオペレーティングシステム又は複数のプロセッサが共有するキャッシュ記憶装置のキャッシュエントリを有効活用するための共有キャッシュ制御装置、共有キャッシュ制御方法及び集積回路に関するものである。
【背景技術】
【０００２】
近年のシステムＬＳＩの技術潮流として、複数のプロセッサコアを搭載したマルチコアアーキテクチャが盛んになっている。特に、組込み向けシステムＬＳＩにおいては、コスト及び消費電力などの観点から、超高速プロセッサコアを１個実装するよりも、中規模程度以下のプロセッサコアを複数個搭載したほうが有利な場合がある。このような組込み向けシステムＬＳＩでも、近年、階層型キャッシュ記憶装置が導入されつつある。しかしながら、個々のプロセッサコアに搭載されるキャッシュ記憶装置間のデータコヒーレンシ（一貫性）を保つ手段は非常に煩雑である。このため、組込み向けシステムＬＳＩでは、１次レベルキャッシュ記憶装置をプロセッサ毎に実装する場合でも、２次レベルキャッシュ記憶装置は複数のプロセッサ間で共有させることが多い。【０００３】
特に、携帯電話及び携帯端末などに代表されるモバイル型組込み計算機システムの高性能化は著しく、前述したように、組込み向けシステムＬＳＩにおいても、プロセッサコアを複数個搭載したマルチコアアーキテクチャや、高性能プロセッサで複数のオペレーティングシステムを動作させる仮想計算機環境が整ってきている。【０００４】
また、プロセッサコア自体の高性能化に伴い、一つのプロセッサ上で複数のオペレーティングシステムを動作させる仮想計算機システムも数多く用いられている。仮想計算機システムにおいては、上述の階層型キャッシュ記憶装置の導入によらず、一つのキャッシュ記憶装置が複数のオペレーティングシステムによって共有されることになる。【０００５】
このように、キャッシュ記憶装置を共有する計算機システムにおいては、個々のオペレーティングシステム、又は個々のプロセッサに搭載されるオペレーティングシステムのデータが、キャッシュ記憶装置から、別のオペレーティングシステム、又は別のプロセッサに搭載されるオペレーティングシステムのデータを追い出してしまう可能性があった。【０００６】
この課題を解決する方法として、キャッシュ記憶装置を任意のサイズの領域に分割して、個々のオペレーティングシステムに割り当てる方法が、例えば、特許文献１に開示されている。これにより、個々のオペレーティングシステム（プログラム）が、キャッシュ記憶装置から、別のオペレーティングシステムのデータを追い出すことなく、複数のオペレーティングシステムが１つのキャッシュ記憶装置を有効に活用することができる。【０００７】
しかしながら、前記従来の技術では、予め個々のオペレーティングシステムに対して、利用可能なキャッシュ記憶装置の領域を割り当てておく必要がある。そのため、ある一つのオペレーティングシステムがスリープ状態などに移行したとしても、当該オペレーティングシステムが利用していたキャッシュ記憶装置内の領域を、別のオペレーティングシステムが有効に活用することができないという課題を有している。つまり、低消費電力モードやスリープモードなどのオペレーティングシステムの実行状態によっては、割り当てた領域が利用されず、無駄になることがある。
【特許文献１】特開２００４−１７８５７１号公報
【発明の開示】
【０００８】
本発明は、上記の問題を解決するためになされたもので、複数のオペレーティングシステム又は複数のプロセッサが１のキャッシュ記憶装置を有効活用できる共有キャッシュ制御装置、共有キャッシュ制御方法及び集積回路を提供することを目的とする。
【０００９】
本発明の一局面に係る共有キャッシュ制御装置は、主記憶部と、複数のオペレーティングシステム又は複数のプロセッサによって共有され、かつ、前記主記憶部から読み出されたデータを格納する複数のキャッシュエントリから構成されるキャッシュ記憶装置と、前記複数のオペレーティングシステムを動作させるプロセッサ又は前記複数のプロセッサに供給される電力を制御するための電力制御命令を監視する監視部と、前記複数のキャッシュエントリの中から置換対象となるキャッシュエントリを選択する際に、前記電力制御命令に基づいて変更される前記複数のオペレーティングシステム又は前記複数のプロセッサの実行状態を用いて、前記電力制御命令を実行した前記オペレーティングシステム又は前記プロセッサが利用していたキャッシュエントリを、過去に使用された状態に設定するキャッシュエントリ設定部と、前記キャッシュエントリ設定部によって過去に使用された状態に設定された前記キャッシュエントリを、置換対象となるキャッシュエントリとして選択する置換対象選択部とを備える。
【００１０】
本発明の他の局面に係る共有キャッシュ制御方法は、複数のオペレーティングシステム又は複数のプロセッサによって共有され、かつ、主記憶部から読み出されたデータを格納する複数のキャッシュエントリから構成されるキャッシュ記憶装置にデータを記憶するキャッシュ記憶ステップと、前記複数のオペレーティングシステムを動作させるプロセッサ又は前記複数のプロセッサに供給される電力を制御するための電力制御命令を監視する監視ステップと、前記複数のキャッシュエントリの中から置換対象となるキャッシュエントリを選択する際に、前記電力制御命令に基づいて変更される前記複数のオペレーティングシステム又は前記複数のプロセッサの前記実行状態を用いて、前記電力制御命令を実行した前記オペレーティングシステム又は前記プロセッサが利用していたキャッシュエントリを、過去に使用された状態に設定するキャッシュエントリ設定ステップと、前記キャッシュエントリ設定ステップにおいて過去に使用された状態に設定された前記キャッシュエントリを、置換対象となるキャッシュエントリとして選択する置換対象選択ステップとを含む。
【００１１】
本発明の他の局面に係る集積回路は、複数のオペレーティングシステム又は複数のプロセッサによって共有され、かつ、主記憶装置から読み出されたデータを格納する複数のキャッシュエントリから構成されるキャッシュ記憶装置と、前記複数のオペレーティングシステムを動作させるプロセッサ又は前記複数のプロセッサに供給される電力を制御するための電力制御命令を監視する監視回路と、前記複数のキャッシュエントリの中から置換対象となるキャッシュエントリを選択する際に、前記電力制御命令に基づいて変更される前記複数のオペレーティングシステム又は前記複数のプロセッサの実行状態を用いて、前記電力制御命令を実行した前記オペレーティングシステム又は前記プロセッサが利用していたキャッシュエントリを、過去に使用された状態に設定するキャッシュエントリ設定回路と、前記キャッシュエントリ設定回路によって過去に使用された状態に設定された前記キャッシュエントリを、置換対象となるキャッシュエントリとして選択する置換対象選択回路とを備える。
【００１２】
これらの構成によれば、キャッシュ記憶装置は、複数のオペレーティングシステム又は複数のプロセッサによって共有され、かつ、主記憶部から読み出されたデータを格納する複数のキャッシュエントリから構成される。複数のオペレーティングシステムを動作させるプロセッサ又は複数のプロセッサに供給される電力を制御するための電力制御命令が監視される。そして、複数のキャッシュエントリの中から置換対象となるキャッシュエントリが選択される際に、電力制御命令に基づいて変更される複数のオペレーティングシステム又は複数のプロセッサの実行状態を用いて、電力制御命令を実行したオペレーティングシステム又はプロセッサが利用していたキャッシュエントリが、過去に使用された状態に設定される。その後、過去に使用された状態に設定されたキャッシュエントリが、置換対象となるキャッシュエントリとして選択される。
【００１３】
本発明によれば、複数のオペレーティングシステム又は複数のプロセッサがキャッシュ記憶装置を共有する場合において、実行状態が変化することにより、１のオペレーティングシステム又は１のプロセッサによって利用されなくなったキャッシュ記憶装置内のキャッシュエントリを、他のオペレーティングシステム又は他のプロセッサが優先的に利用できるようになり、複数のオペレーティングシステム又は複数のプロセッサが１のキャッシュ記憶装置を有効活用できる。
【００１４】
本発明の目的、特徴及び利点は、以下の詳細な説明と添付図面とによって、より明白となる。
【図面の簡単な説明】
【００１５】
【図１】本発明の実施の形態１における計算機システムの構成を示す図である。
【図２】４ウェイのセットアソシアティブ方式のキャッシュ記憶装置について説明するための図である。
【図３】本発明の実施の形態１におけるキャッシュエントリ選択処理に関するキャッシュ記憶装置の詳細な構成を示す図である。
【図４】本発明の実施の形態１におけるキャッシュエントリ置換処理に関するキャッシュ記憶装置の詳細な構成を示す図である。
【図５】本発明の実施の形態１における参照時刻データが取り得る値を示す図である。
【図６】本発明の実施の形態２における計算機システムの構成を示す図である。
【図７】本発明の実施の形態２におけるキャッシュエントリ選択処理に関するレベル２キャッシュ記憶装置の詳細な構成を示す図である。
【図８】本発明の実施の形態２におけるキャッシュエントリ置換処理に関するレベル２キャッシュ記憶装置の詳細な構成を示す図である。
【図９】本発明の実施の形態３における計算機システムの構成を示す図である。
【図１０】図９に示すロックダウン制御部の動作を説明するためのフローチャートである。
【図１１】本発明の実施の形態４における計算機システムの構成を示す図である。
【図１２】本発明の実施の形態４におけるキャッシュエントリ置換処理に関するキャッシュ記憶装置の詳細な構成を示す図である。
【図１３】本発明の実施の形態４における参照時刻データの参照カウンタビットが取り得る値を示す図である。
【図１４】本発明の実施の形態５における計算機システムの構成を示す図である。
【図１５】本発明の実施の形態５におけるキャッシュエントリ置換処理に関するレベル２キャッシュ記憶装置の詳細な構成を示す図である。
【図１６】本発明の実施の形態６における計算機システムの構成を示す図である。
【発明を実施するための最良の形態】
【００１６】
以下、本発明の実施の形態について、図面を参照しながら説明する。尚、以下の実施の形態は、本発明を具体化した一例であって、本発明の技術的範囲を限定する性格のものではない。【００１７】
（実施の形態１）
図１は、本発明の実施の形態１における計算機システムの構成を示す図である。計算機システム１００は、一つのプロセッサ上で複数のオペレーティングシステムを動作させる仮想計算機システムである。計算機システム１００は、内部バス１１０、キャッシュ記憶装置１１１、プロセッサ１１２、メモリ１１３、周辺モジュール群１１４及びステータスレジスタ１１５を備えている。【００１８】
キャッシュ記憶装置１１１、メモリ１１３、周辺モジュール群１１４及びステータスレジスタ１１５は、それぞれ内部バス１１０に接続されている。近年のＬＳＩの高集積化により、計算機システム１００を構成する複数の回路を一つのシステムＬＳＩ内に搭載することも可能であるが、本実施の形態１において、回路群が単一のシステムＬＳＩ内に実装されるか、それぞれ別のシステムＬＳＩで提供されるかについての限定は行わない。なお、図１では、ステータスレジスタ１１５は、内部バス１１０に接続しているが、プロセッサ１１２に直接接続してもよい。【００１９】
プロセッサ１１２は、メモリ１１３に格納されているプログラム（命令コード）を読み出して実行する。また、プロセッサ１１２は、プログラムの実行時には、メモリ１１３上のデータや、周辺モジュール群１１４からの入出力データを参照して動作する。また、プロセッサ１１２は、ステータスレジスタ１１５が保持している動作中の状態パラメータの値を用いて制御を行う。【００２０】
メモリ１１３は、第１〜第ｎのタスク１２４〜１２９と、第１〜第３のオペレーティングシステム１２１，１２２，１２３と、ハイパバイザ１２０とを備えている。【００２１】
第１〜第ｎのタスク１２４〜１２９は、それぞれ計算機システム１００上で動作する単一又は複数の命令コードを含む実行単位であり、例えば、プロセッサ１１２により実行されるアプリケーションプログラムである。【００２２】
第１〜第３のオペレーティングシステム１２１，１２２，１２３は、計算機システム１００で動作するソフトウェア全体を制御するオペレーティングシステムであり、ここでは、メモリ１１３は、３つのオペレーティングシステム１２１，１２２，１２３を備える。【００２３】
ハイパバイザ１２０は、プロセッサ１１２上で動作し、第１〜第３のオペレーティングシステム１２１，１２２，１２３に対して、それぞれ、あたかも単一のオペレーティングシステムが動作しているかのような環境、すなわち、仮想計算機環境を提供するためのエミュレーション手段である。つまり、一つのプロセッサ上に一つのオペレーティングシステムが存在して、一つのオペレーティングシステムが当該プロセッサの複数のハードウェア資源を管理するのではなく、ハイパバイザ１２０によって、複数のハードウェア資源を分割し、個々のオペレーティングシステムに割り当てることができる。なお、割り当て方法は、ハードウェア資源の種類によって、固定的に割り振る方法、又は時分割で割り当てる方法などが可能である。【００２４】
本実施の形態１の計算機システムの一例として、図１では、第１及び第２のタスク１２４，１２５は、第１のオペレーティングシステム１２１上で動作し、第３及び第４のタスク１２６，１２７は、第２のオペレーティングシステム１２２上で動作し、第５〜第ｎのタスク１２８，１２９は、第３のオペレーティングシステム１２３上で動作するようにコンパイルされているものとする。これにより、第１のオペレーティングシステム１２１が、第１及び第２のタスク１２４，１２５の実行状態を管理し、第２のオペレーティングシステム１２２が、第３及び第４のタスク１２６，１２７の実行状態を管理し、第３のオペレーティングシステム１２３が、第５〜第ｎのタスク１２８，１２９の実行状態を管理する。【００２５】
なお、ここでは、第１のオペレーティングシステム１２１と第２のオペレーティングシステム１２２と第３のオペレーティングシステム１２３とは、異なったオペレーティングシステムとしているが、同じオペレーティングシステムでもよい。なお、タスク数、オペレーティングシステム数、及び、タスクとオペレーティングシステムとの関係は、図１で示した例に一致しなくてもよい。例えば、動作するオペレーティングシステムの数を変更しても構わない。【００２６】
キャッシュ記憶装置１１１は、セットアソシアティブ方式のキャッシュ記憶装置であり、複数のウェイに分割されたキャッシュ記憶データメモリを備える。図１では、４つのウェイに分割されたキャッシュ記憶データメモリ１３０〜１３３が存在しているが、４ウェイ未満又は４ウェイを越えて搭載することも可能である。セットアソシアティブ方式のキャッシュ記憶装置では、一つのアドレスに対して、選択可能なキャッシュエントリがウェイ数に相当する数だけ存在する。【００２７】
キャッシュ記憶データメモリ１３０〜１３３は、それぞれ、メモリ１１３から読み出されたデータを格納する複数のキャッシュエントリから構成される。【００２８】
図２は、４ウェイのセットアソシアティブ方式のキャッシュ記憶装置について説明するための図である。メモリ１１３上のデータの位置を示すアドレス信号２００は、上位アドレスタグ２０１とインデックス番号２０２とを備えており、アドレス信号２００によって、メモリ１１３上のデータが、タグの個数分のグループに分けられる。また、このメモリ１１３上の一つのグループのデータは、キャッシュ記憶装置の一つのウェイに格納される。つまり、ここでは、４個のウェイが存在することから、４個のグループのデータが、同時にキャッシュ記憶装置に格納される。【００２９】
図３及び図４にて後述するが、通常、ウェイ数が多い場合には、並列動作する比較器が多数存在することになり、消費電力的に不利となる。一方、ウェイ数が少ない場合には、一つのアドレス上のデータを保存できる箇所が少なくなり、スラッシング（複数のアドレスに格納されているデータが相互にキャッシュエントリから相手を追い出し合うこと）と呼ばれる現象が発生し、性能劣化を引き起こすことになる。【００３０】
また、キャッシュミスが発生して、あるアドレスのデータをキャッシュ記憶装置上に格納する場合、いずれか一つのキャッシュエントリを選択し、データを置換する必要がある。キャッシュミスを最も低減させる置換アルゴリズムとして、最近にアクセスされたデータは再利用される確率が高く、一番長くアクセスされていないデータは再利用される確率が低いと仮定するＬＲＵ（Ｌｅａｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄ）アルゴリズムがある。本実施の形態１では、キャッシュ記憶装置１１１は、ＬＲＵアルゴリズムでキャッシュエントリの置換を行う。また、個々のキャッシュエントリ内には、いずれのオペレーティングシステムが当該キャッシュエントリを使用しているかを示すオペレーティングシステム識別子を搭載する。なお、オペレーティングシステム識別子については図３において説明する。【００３１】
キャッシュ記憶装置１１１は、前述したキャッシュ記憶データメモリ１３０〜１３３と、置換対象選択部１３６と、アクセス対象選択部１３７と、バッファ１３８と、監視部１３９と、入出力部１４０と、キャッシュエントリ設定部１４１とを備えている。【００３２】
入出力部１４０は、プロセッサ１１２からのデータ読み出し命令やデータ書き込み命令など、メモリ１１３や周辺モジュール群１１４上のデータに対するアクセス命令の入力や、アクセス命令に対するプロセッサ１１２やメモリ１１３や周辺モジュール群１１４へのデータの出力を行う。【００３３】
監視部１３９は、ステータスレジスタ１１５をチェックすることで、プロセッサ１１２で実行される電力制御命令を監視し、当該電力制御命令を実行するオペレーティングシステムの状態変化を参照時刻計算部１３４に通知する。監視部１３９は、複数のオペレーティングシステムを動作させるプロセッサ１１２に供給される電力を制御するための電力制御命令を監視する。電力制御命令は、オペレーティングシステムの動作停止を指示するスリープ命令、プロセッサ１１２に供給する電力を低減する電源制御命令及びプロセッサ１１２に供給するクロックを低減するクロック制御命令を含む。本実施の形態１では、電力制御命令は、スリープ命令を少なくとも含む。【００３４】
なお、第１〜第３のオペレーティングシステム１２１，１２２，１２３は、それぞれ、個々のオペレーティングシステム上で動作しているタスク数及びタスクの状態などによって、スリープモードに移行する場合、電力制御命令を発行し、プロセッサ１１２は、発行された電力制御命令を実行する。また、プロセッサ１１２は、割込みなどの発生を受けて処理負荷が変化した場合、スリープモードから通常動作モードに復帰する処理を実行する。【００３５】
キャッシュエントリ設定部１４１は、キャッシュミスが発生し、複数のキャッシュエントリの中から置換対象となるキャッシュエントリを選択する際に、電力制御命令に基づいて変更される複数のオペレーティングシステムの実行状態を用いて、電力制御命令を実行したオペレーティングシステムが利用していたキャッシュエントリを、過去に使用された状態に設定する。本実施の形態１において、実行状態は、オペレーティングシステムを高速クロックで動作する通常動作モードと、オペレーティングシステムの動作を停止するスリープモードとを少なくとも含む。キャッシュエントリ設定部１４１は、スリープモードのオペレーティングシステムが利用しているキャッシュエントリを、通常動作モードのオペレーティングシステムが利用しているキャッシュエントリより過去に使用された状態に設定する。【００３６】
キャッシュエントリ設定部１４１は、参照時刻計算部１３４と、ＯＳ実行状態記憶部１３５とを備える。【００３７】
参照時刻計算部１３４は、監視部１３９からの通知を受け取り、電力制御命令を実行するオペレーティングシステムの動作モードを、ＯＳ実行状態記憶部１３５を用いて管理する。ＯＳ実行状態記憶部１３５は、オペレーティングシステムを識別するオペレーティングシステム識別子と、各オペレーティングシステムの実行状態（通常動作モード又はスリープモード）とをテーブル形式で保持している。【００３８】
なお、ここでは、ＯＳ実行状態記憶部１３５がオペレーティングシステムの動作モードをテーブル形式で保持するとしたが、他のフォーマットでオペレーティングシステムの動作モードを記憶してもよい。【００３９】
また、参照時刻計算部１３４は、置換対象選択部１３６からの問い合わせに対し、置換対象の候補となる複数のキャッシュエントリの参照時刻データを計算して、計算した参照時刻データを置換対象選択部１３６に通知する。参照時刻データは、置換対象となるキャッシュエントリを選択するために用いられるデータである。なお、参照時刻データの詳細については後述する。【００４０】
参照時刻計算部１３４は、ＯＳ実行状態記憶部１３５と、個々のキャッシュエントリに設けられたオペレーティングシステム識別子と、後述する参照時刻カウンタとを用いて、スリープモードのオペレーティングシステムが利用しているキャッシュエントリの参照時刻データを、最も過去に使用された値として出力する。なお、キャッシュ記憶装置１１１は、スリープモードのオペレーティングシステムが存在しない場合には、通常のＬＲＵアルゴリズムで動作する。【００４１】
置換対象選択部１３６は、キャッシュエントリ設定部１４１によって過去に使用された状態に設定されたキャッシュエントリを、置換対象となるキャッシュエントリとして選択する。置換対象選択部１３６は、キャッシュミスなどにより、新たなデータをメモリ１１３から読み出してキャッシュ記憶装置１１１に格納する場合に、キャッシュ記憶装置１１１上に既に格納済みのデータのうち、どのデータを追い出すかを決定し、決定したデータを新たなデータに置換する。つまり、置換対象選択部１３６は、アクセス対象選択部１３７からキャッシュミスの発生が通知されると、置換対象の候補となる複数のキャッシュエントリを参照時刻計算部１３４に問い合わせる。その後、置換対象選択部１３６は、参照時刻計算部１３４から出力される計算結果にしたがって、複数のキャッシュエントリから置換対象のキャッシュエントリを選択し、選択したキャッシュエントリに新たなデータを格納する。【００４２】
また、キャッシュエントリを置換することで追い出されたデータがある場合、追い出されたデータをメモリ１１３に書き戻す処理が必要となる。この場合、置換対象選択部１３６は、置換対象のキャッシュエントリと同じウェイのデータをバッファ１３８に書き込み、置換前のデータをメモリ１１３へ書き戻す。【００４３】
以上のような構成により、スリープモードで実行しているオペレーティングシステムが利用しているキャッシュ記憶装置１１１上のデータを最も過去に使用されたデータとみなすことにより、通常動作モードのオペレーティングシステムの新たなデータと置換することができる。その結果、通常動作モードのオペレーティングシステムのデータが優先的にキャッシュ記憶装置１１１内に残るように制御することができる。これにより、オペレーティングシステムがスリープモードに移行することで、利用される頻度が少なくなったキャッシュエントリを、別のオペレーティングシステムによって有効に利用することが可能となり、システム全体としての性能向上を図ることができる。【００４４】
さらに、本実施の形態１は、スリープモードに移行したオペレーティングシステムが利用していたデータを一律にキャッシュエントリから無効化することで、別のオペレーティングシステムが利用可能とする方法ではない。そのため、スリープモードに移行したオペレーティングシステムが再度通常動作モードに戻った場合に、必要となるデータがキャッシュ上に保持されたままであるなら、過去に使用したキャッシュエントリを有効活用することが可能である。【００４５】
なお、本実施の形態１において、計算機システム１００が共有キャッシュ制御装置の一例に相当し、メモリ１１３が主記憶部の一例に相当し、キャッシュ記憶装置１１１がキャッシュ記憶装置の一例に相当し、監視部１３９が監視部の一例に相当し、キャッシュエントリ設定部１４１がキャッシュエントリ設定部の一例に相当し、置換対象選択部１３６が置換対象選択部の一例に相当し、ＯＳ実行状態記憶部１３５が実行状態記憶部の一例に相当し、参照時刻計算部１３４が参照時刻データ作成部の一例に相当する。【００４６】
図３は、プロセッサ１１２から出力されるメモリアクセス命令などにより、プロセッサ１１２がキャッシュ記憶装置１１１内にアクセスする場合の、キャッシュエントリ選択処理に関するキャッシュ記憶装置１１１の詳細な構成を示す図である。図３において、キャッシュ記憶データメモリ１３０〜１３３は、図１と同様のハードウェア部品を示す。【００４７】
なお、アクセス対象のデータを示すアドレス信号２００には、前述した通り、キャッシュ記憶データメモリ１３０〜１３３内のオフセットを示すインデックス番号２０２と、インデックス番号２０２以外の上位アドレスタグ２０１とが含まれている。個々のキャッシュ記憶データメモリ１３０〜１３３において、インデックス番号２０２で指定されたオフセットにあるキャッシュエントリがアクセス対象となり得るキャッシュエントリである。これらインデックス番号２０２で指定されたオフセットにある４個のキャッシュエントリの中から、キャッシュヒットの検出が行われる。【００４８】
また、本実施の形態１では、図面の都合上、４ウェイのキャッシュ記憶データメモリ１３０〜１３３のみが記載されているが、本発明は特にこれに限定されず、キャッシュ記憶装置１１１は、４ウェイ未満又は４ウェイを越えるキャッシュ記憶データメモリを搭載することが可能であり、置換対象となり得るキャッシュエントリはウェイ数にしたがって増減する。【００４９】
また、個々のキャッシュ記憶データメモリ内の各キャッシュエントリは、少なくとも、上位アドレスタグ２１０、ダーティビット２１１、有効ビット２１２、オペレーティングシステム識別子２１３、参照時刻カウンタ（参照時刻カウント値）２１４及びキャッシュデータ２１５を含むフィールドから構成される。【００５０】
上位アドレスタグ２１０は、当該キャッシュエントリに格納されているデータのアドレスに関して、インデックス番号を除いた上位アドレスが格納されているフィールドである。ダーティビット２１１は、キャッシュ記憶装置１１１上で書き換えられたかどうかを示すフィールドである。ダーティビット２１１がＯＮの場合、キャッシュデータ２１５を最終的にはメモリ１１３上に書き戻さなければならず、ダーティビット２１１がＯＦＦの場合、キャッシュデータ２１５をメモリ１１３上に書き戻す必要はない。【００５１】
有効ビット２１２は、当該キャッシュエントリが有効であるか否かを示すフィールドである。オペレーティングシステム識別子２１３は、当該キャッシュエントリをいずれのオペレーティングシステムが利用しているかを示すフィールドである。個々のオペレーティングシステムがキャッシュエントリにアクセスした場合、当該オペレーティングシステムを識別するための番号が該フィールドに格納される。【００５２】
参照時刻カウンタ２１４は、当該キャッシュエントリのデータがどの程度過去に参照されたかを示すフィールドである。例えば、キャッシュ記憶装置１１１が４ウェイのキャッシュ記憶データメモリを構成する場合、２ビットの参照時刻カウンタを設け、アクセスが発生する都度、参照時刻カウンタ２１４の値は“０”に設定される。４ウェイのキャッシュ記憶データメモリのうち、選択されなかったキャッシュエントリの参照時刻カウンタ２１４の値は“３”までの範囲で一連の値になるように増加させる。これにより、参照時刻カウンタ２１４の値は、最も過去にアクセスされたキャッシュエントリから、“３”、“２”、“１”及び“０”の順に並ぶことになる。ＬＲＵアルゴリズムを利用するキャッシュ記憶装置では、参照時刻カウンタ２１４の値の最も大きいキャッシュエントリが最終的な置換対象となる。キャッシュデータ２１５は、メモリ１１３から読み出したデータを一時的に格納しておくためのフィールドである。【００５３】
このように、キャッシュエントリは、当該キャッシュエントリを使用するオペレーティングシステムを識別するためのオペレーティングシステム識別子２１３と、当該キャッシュエントリが参照された時刻に応じてカウントされ、参照された時刻が古くなるほど値が大きくなる参照時刻カウンタ（参照時刻カウント値）２１４と、キャッシュデータ２１５とを含む。【００５４】
以下、アクセス対象となるキャッシュエントリを選択するキャッシュエントリ選択処理の詳細について図３を用いて説明する。【００５５】
まず、メモリアクセス命令などにより、キャッシュ記憶装置１１１内のデータにアクセスする場合、アクセス対象選択部１３７は、プロセッサ１１２から入出力部１４０を介してアドレス信号２００を受け取り、キャッシュエントリ選択処理を開始する。【００５６】
アクセス対象選択部１３７は、アドレス信号２００内に含まれるインデックス番号２０２を用いて、キャッシュ記憶データメモリ１３０〜１３３内の４つのキャッシュエントリを選択する。ここでは、キャッシュエントリ２１６ａ〜２１６ｄが選択されたものとする。【００５７】
次に、比較器４００ａ〜４００ｄは、アドレス信号２００内の上位アドレスタグ２０１と、キャッシュエントリ２１６ａ〜２１６ｄ内の上位アドレスタグ２１０とをそれぞれ比較する。【００５８】
アドレス信号２００内の上位アドレスタグ２０１と上位アドレスタグ２１０とが一致し、かつ、有効ビット２１２がＯＮのキャッシュエントリが存在する場合、そのキャッシュエントリ内に所望のデータが存在することになる。図３では、論理積演算子４０１ａ〜４０１ｄは、比較器４００ａ〜４００ｄからの出力と、キャッシュエントリ２１６ａ〜２１６ｄ内の有効ビット２１２との論理積を計算することにより、キャッシュヒットを検出している。【００５９】
なお、キャッシュヒットとは、メモリアクセス命令によって読み出されるデータがキャッシュ記憶装置１１１内に存在することである。アクセス対象選択部１３７は、アドレス信号２００内の上位アドレスタグ２０１と上位アドレスタグ２１０とが一致し、かつ、有効ビット２１２がＯＮである場合に、キャッシュヒットを検出する。論理積演算子４０１ａ〜４０１ｄは、キャッシュヒットであるか否かを表す制御信号をバッファ４０２ａ〜４０２ｄに出力する。【００６０】
論理積演算子４０１ａ〜４０１ｄは、それぞれ、バッファ４０２ａ〜４０２ｄの出力を制御する。バッファ４０２ａ〜４０２ｄには、それぞれ、キャッシュエントリ２１６ａ〜２１６ｄ内のキャッシュデータ２１５が入力される。バッファ４０２ａ〜４０２ｄは、論理積演算子４０１ａ〜４０１ｄからの制御信号がキャッシュヒットであることを表す場合、キャッシュデータ２１５と同一の値を出力する。一方、制御信号がキャッシュヒットでないことを表す場合、バッファ４０２ａ〜４０２ｄは、ハイインピーダンス（高抵抗）状態となる。キャッシュエントリ２１６ａ〜２１６ｄのうち、実際にキャッシュヒットするエントリは、高々一つである。そのため、入出力部１４０は、バッファ４０２ａ〜４０２ｄの出力信号がそのまま入力されることにより、出力データ４１２を得ることが可能である。【００６１】
なお、図面の関係上記載されていないが、アクセス対象選択部１３７は、キャッシュエントリ２１６ａ〜２１６ｄのうち、キャッシュヒットしたキャッシュエントリの参照時刻カウンタ２１４を“０”に設定し、キャッシュヒットしていないキャッシュエントリの参照時刻カウンタ２１４のうち、参照時刻カウンタ２１４の値が小さいものから順に、再度、“１”、“２”及び“３”の値を設定する。これにより、前述したように、最も過去にアクセスされたキャッシュエントリから“３”、“２”、“１”及び“０”の順に参照時刻カウンタ２１４の値が並ぶ状態が形成される。【００６２】
また、アクセス対象選択部１３７は、論理積演算子４０１ａ〜４０１ｄからの出力の全てを入力とする否定論理和演算子４１１を用いることにより、キャッシュエントリ２１６ａ〜２１６ｄのうち、いずれのエントリもキャッシュヒットしないことを検出することができる。否定論理和演算子４１１は、論理積演算子４０１ａ〜４０１ｄからの出力を用いて、キャッシュミス信号４１０を計算する。キャッシュミスが発生した場合、アクセス対象選択部１３７は、キャッシュミス信号４１０を置換対象選択部１３６に通知し、置換対象選択部１３６はキャッシュエントリ置換処理を行う。【００６３】
図４は、図３に示したキャッシュエントリ選択処理の結果、キャッシュミスが発生した場合のキャッシュエントリ置換処理に関するキャッシュ記憶装置１１１の詳細な構成を示す図である。図４において、キャッシュ記憶データメモリ１３０〜１３３は、図１と同様のハードウェア部品を示す。また、参照時刻計算部１３４ａ〜１３４ｄは、図１で説明した参照時刻計算部１３４に相当する。【００６４】
以下、キャッシュエントリ内のデータを新たなデータに置換するキャッシュエントリ置換処理の詳細について図４を用いて説明する。【００６５】
まず、キャッシュミスなどにより、新たなデータをメモリ１１３から読み出して、キャッシュ記憶装置１１１に格納する必要がある場合、置換対象選択部１３６は、アクセス対象選択部１３７からキャッシュミス信号４１０を受け取り、キャッシュエントリ置換処理を開始する。【００６６】
置換対象選択部１３６は、アドレス信号２００内に含まれるインデックス番号２０２を用いて、キャッシュ記憶データメモリ１３０〜１３３内の４つのキャッシュエントリを選択する。ここでは、キャッシュエントリ２１６ａ〜２１６ｄが選択されたものとする。【００６７】
この４つのキャッシュエントリ２１６ａ〜２１６ｄの中から、一つのキャッシュエントリを置換対象として選択する方法として、通常のＬＲＵアルゴリズムを用いた場合、キャッシュエントリ２１６ａ〜２１６ｄ内の参照時刻カウンタ２１４を比較して、最も過去に参照されたキャッシュエントリ、すなわち参照時刻カウンタ２１４の値が最も大きいキャッシュエントリが選択されることになる。しかしながら、ＬＲＵアルゴリズムを用いた方法は、通常動作モードのオペレーティングシステムのデータも、直近にスリープモードに移行したオペレーティングシステムのデータも同一に扱うことになる。【００６８】
一方、本実施の形態１におけるキャッシュ記憶装置１１１では、監視部１３９が、プロセッサ１１２で実行される電力制御命令を監視し、当該電力制御命令を実行するオペレーティングシステムの状態変化を参照時刻計算部１３４に通知し、参照時刻計算部１３４が、各オペレーティングシステムの実行状態を管理する。これにより、スリープモードに移行するオペレーティングシステムが利用していたキャッシュエントリを最も過去に使用された状態に設定することが可能となり、別のオペレーティングシステムが、スリープモードに移行したオペレーティングシステムが利用していたキャッシュエントリを有効に利用することができる。【００６９】
第１〜第３のオペレーティングシステム１２１，１２２，１２３のそれぞれは、個々のオペレーティングシステム上で動作しているタスク数及びタスクの状態などによって、スリープモードに移行する場合、電力制御命令を発行する。また、第１〜第３のオペレーティングシステム１２１，１２２，１２３のそれぞれは、割込みなどの発生を受けて処理負荷が変化した場合、スリープモードから通常動作モードに復帰する。【００７０】
参照時刻計算部１３４ａ〜１３４ｄは、ＯＳ実行状態記憶部１３５ａ〜１３５ｄを用いて、個々のオペレーティングシステムの動作モードを管理する。なお、本実施の形態１では、個々のキャッシュエントリ設定部１４１ａ〜１４１ｄ内に参照時刻計算部１３４ａ〜１３４ｄ及びＯＳ実行状態記憶部１３５ａ〜１３５ｄを搭載する構成としているが、キャッシュエントリ設定部１４１ａ〜１４１ｄ間で一つの参照時刻計算部１３４及び一つのＯＳ実行状態記憶部１３５を共有してもよい。これにより、データの一貫性をより効率的に保障することができる。【００７１】
図４では、ＯＳ実行状態記憶部１３５ａのみ、テーブル内の詳細を示している。図４のＯＳ実行状態記憶部１３５ａが記憶するテーブルでは、３つのオペレーティングシステムが存在している。３つのオペレーティングシステムのそれぞれのオペレーティングシステム識別子は、“０”、“１”及び“２”である。オペレーティングシステム識別子“０”の実行状態は、通常動作モードであると仮定し、オペレーティングシステム識別子“１”の実行状態は、スリープモードであると仮定し、オペレーティングシステム識別子“２”の実行状態は、通常動作モードであると仮定している。【００７２】
なお、図４では、通常動作モードであるオペレーティングシステムの実行状態が、“ＲＵＮ”と表され、スリープモードであるオペレーティングシステムの実行状態が、“ＳＬＥＥＰ”と表されている。【００７３】
ＯＳ実行状態記憶部１３５ａ〜１３５ｄは、オペレーティングシステムの実行状態に対応する実行状態値（Ｖａｌ）として、通常動作モードであれば“０”を保持し、スリープモードであれば“１”を保持している。【００７４】
次に、参照時刻計算部１３４ａ〜１３４ｄは、選択されたキャッシュエントリ２１６ａ〜２１６ｄ内の参照時刻カウンタ２１４と、選択されたキャッシュエントリ２１６ａ〜２１６ｄ内の有効ビット２１２と、ＯＳ実行状態記憶部１３５ａ〜１３５ｄ内のオペレーティングシステムの実行状態に対応する実行状態値（Ｖａｌ）とを用いて、各キャッシュエントリ２１６ａ〜２１６ｄに対応付けられた参照時刻データを生成する。【００７５】
キャッシュエントリ２１６ａに対応付けられた参照時刻データ２２１ａは、有効ビット２１２を否定演算子２２０ａによって反転させた無効ビット２２２ａ、ＯＳ実行状態記憶部１３５ａに記憶されているオペレーティングシステムの実行状態に対応する実行状態値（Ｖａｌ）を利用した状態ビット２２３ａ、及び、参照時刻カウンタ２１４の値をそのまま利用した参照カウンタビット２２４ａから構成される。同様に、キャッシュエントリ２１６ｂ〜２１６ｄに対応付けられた参照時刻データ２２１ｂ〜２２１ｄは、それぞれのキャッシュエントリの有効ビット２１２を否定演算子２２０ｂ〜２２０ｄによって反転させた無効ビット２２２ｂ〜２２２ｄ、ＯＳ実行状態記憶部１３５ｂ〜１３５ｄに記憶されているオペレーティングシステムの実行状態に対応する実行状態値（Ｖａｌ）を利用した状態ビット２２３ｂ〜２２３ｄ、及び、それぞれのキャッシュエントリの参照時刻カウンタ２１４の値をそのまま利用した参照カウンタビット２２４ｂ〜２２４ｄから構成される。【００７６】
置換対象選択部１３６は、これらの参照時刻データ２２１ａ〜２２１ｄを受け取って比較し、参照時刻データの数値が最も大きいキャッシュエントリを置換対象として選択し、選択したキャッシュエントリを置換対象キャッシュエントリ２３０として出力する。また、置換対象選択部１３６は、選択されたキャッシュエントリを置換することで追い出されたデータがある場合、置換対象のキャッシュエントリと同じウェイのデータをバッファ１３８に書き込み、置換前のデータをメモリ１１３へ書き戻す。【００７７】
具体的には、選択されたキャッシュエントリ２１６ａ〜２１６ｄ内のうち、有効ビット２１２がＯＦＦであるキャッシュエントリが一つあれば、参照時刻データ２２１ａ〜２２１ｄにおける最上位ビットである無効ビット２２２ａ〜２２２ｄがＯＮになるため、当該キャッシュエントリの参照時刻データが最も大きくなる。【００７８】
また、キャッシュエントリ２１６ａ〜２１６ｄが全て有効である場合、すなわち、キャッシュエントリ２１６ａ〜２１６ｄの全ての有効ビット２１２がＯＮである場合、参照時刻データ２２１ａ〜２２１ｄにおける最上位ビットである無効ビット２２２ａ〜２２２ｄは全て“０”となる。このとき、選択されたキャッシュエントリ２１６ａ〜２１６ｄ内のうち、スリープモードのオペレーティングシステムが使用しているキャッシュエントリが一つあれば、参照時刻データ２２１ａ〜２２１ｄにおける上位第二ビットである状態ビット２２３ａ〜２２３ｄがＯＮになるため、当該キャッシュエントリの参照時刻データが最も大きくなる。【００７９】
さらに、キャッシュエントリ２１６ａ〜２１６ｄが全て有効であって、かつ、全て通常動作モードのオペレーティングシステムが使用している場合、最上位ビットである無効ビット２２２ａ〜２２２ｄと、上位第二ビットである状態ビット２２３ａ〜２２３ｄとは、全て“０”となる。このとき、キャッシュエントリ２１６ａ〜２１６ｄの参照時刻カウンタ２１４の値に対応する参照カウンタビット２２４ａ〜２２４ｄがそのまま用いられる。そのため、参照時刻データ２２１ａ〜２２１ｄのうち、最も過去に参照されたキャッシュエントリに対応する参照時刻データの値が最も大きくなる。【００８０】
図５は、参照時刻データ２２１ａが取り得る値を示す図である。参照時刻データ３００は、有効ビット２１２がＯＦＦである場合の値である。この場合、無効ビット２２２ａ以外の他のビットがいずれの値を示しても、参照時刻データ３００の値は、他のいかなる参照時刻データ３０１〜３０５よりも大きくなる。【００８１】
参照時刻データ３０１は、有効ビット２１２がＯＮであるが、キャッシュエントリをスリープモードのオペレーティングシステムが利用している場合の値である。この場合、参照カウンタビット２２４ａがいずれの値を示しても、参照時刻データ３０１の値は、通常動作モードのオペレーティングシステムが利用しているキャッシュエントリの参照時刻データ３０２〜３０５よりも大きくなる。【００８２】
参照時刻データ３０２〜３０５は、有効ビット２１２がＯＮであり、かつキャッシュエントリを通常動作モードのオペレーティングシステムが利用している場合の値である。参照時刻データ３０２〜３０５は、参照カウンタビット２２４ａの値によって大小が比較される。なお、参照カウンタビット２２４ａは、本実施の形態１では、キャッシュ記憶データメモリが４ウェイ構成であるため、２ビットで表される。【００８３】
このように、ＯＳ実行状態記憶部１３５ａ〜１３５ｄは、電力制御命令に基づいて変更される複数のオペレーティングシステムの実行状態と、実行状態に応じて予め設定される値であり、通常動作モードに対応する値よりもスリープモードに対応する値の方が大きい実行状態値とを記憶する。また、参照時刻計算部１３４ａ〜１３４ｄは、実行状態値と、参照時刻カウント値とを含む参照時刻データ２２１ａ〜２２１ｄを複数のキャッシュエントリ毎に作成する。【００８４】
置換対象選択部１３６は、参照時刻計算部１３４によって作成された複数のキャッシュエントリ毎の参照時刻データ２２１ａ〜２２１ｄを比較し、参照時刻データに含まれる実行状態値が最も大きい参照時刻データに対応するキャッシュエントリを、置換対象となるキャッシュエントリとして選択する。【００８５】
また、置換対象選択部１３６は、参照時刻計算部１３４によって作成された複数のキャッシュエントリ毎の参照時刻データ２２１ａ〜２２１ｄを比較し、参照時刻データに含まれる実行状態値が全て同じである場合、参照時刻データに含まれる参照時刻カウント値が最も大きい参照時刻データに対応するキャッシュエントリを、置換対象となるキャッシュエントリとして選択する。【００８６】
この構成により、有効ビット２１２がＯＮでないキャッシュエントリ、及びスリープモードのオペレーティングシステムが利用しているキャッシュエントリが優先して置換対象として選択される。そして、これらのキャッシュエントリが存在しない場合のみ、ＬＲＵアルゴリズムでキャッシュエントリが置換されることになる。これにより、複数のオペレーティングシステムがキャッシュ記憶装置を共有する計算機システムにおいて、一つのオペレーティングシステムによって利用されなくなったキャッシュエントリを、別のオペレーティングシステムが優先的に利用することができ、限られたサイズのキャッシュ記憶装置を有効に活用することが可能となる。【００８７】
以上により、有効でないキャッシュエントリを最優先で置換対象とするとともに、次に、スリープモードで実行しているオペレーティングシステムが利用しているキャッシュエントリのデータを、最も過去に使用されたキャッシュエントリのデータとみなして置換対象とすることができる。これにより、通常動作モードのオペレーティングシステムのデータが優先的にキャッシュ記憶装置１１１内に残るように制御することができる。【００８８】
また、本実施の形態１は、データが一律にキャッシュエントリから無効化される方法ではない。そのため、デバイスなどの状態によって、スリープモードに移行したオペレーティングシステムが再度通常動作モードに戻った場合に、過去に使用したキャッシュエントリを有効活用することが可能である。通常動作モードに戻った場合、状態ビットの値が“０”に戻るため、ＬＲＵアルゴリズムで置換対象が選択されることになる。【００８９】
（実施の形態２）
図６は、本発明の実施の形態２における計算機システムの構成を示す図である。計算機システム５００は、複数のプロセッサがメモリ及びキャッシュ記憶装置を共有するマルチプロセッサシステムである。【００９０】
計算機システム５００は、内部バス１１０、周辺モジュール群１１４、ステータスレジスタ１１５、複数のプロセッサ（第１のプロセッサ５０２及び第２のプロセッサ５０３）、複数のレベル１キャッシュ記憶装置（第１のレベル１キャッシュ記憶装置５０４及び第２のレベル１キャッシュ記憶装置５０５）、レベル２キャッシュ記憶装置５０１及びメモリ５０６を備えている。内部バス１１０、周辺モジュール群１１４及びステータスレジスタ１１５は、図１において説明した構成要素と同じ構成要素である。【００９１】
近年のＬＳＩの高集積化により、計算機システム５００を構成する複数の回路を一つのシステムＬＳＩ内に搭載することも可能であるが、本実施の形態２において、回路群が単一のシステムＬＳＩ内に実装されるか、それぞれ別のシステムＬＳＩで提供されるかについての限定は行わない。また、本実施の形態２では、２つのプロセッサのみが搭載されている例を示しているが、プロセッサ数は２個に限定されず、３個以上のプロセッサを共存させてもよい。また、ステータスレジスタ１１５は、図１と同様に、内部バス１１０に接続しているが、第１のプロセッサ５０２及び第２のプロセッサ５０３に直接接続してもよい。【００９２】
第１のプロセッサ５０２及び第２のプロセッサ５０３は、それぞれ、メモリ５０６に格納されているプログラム（命令コード）を読み出して実行する。また、第１のプロセッサ５０２及び第２のプロセッサ５０３は、プログラムの実行時には、メモリ５０６上のデータや、周辺モジュール群１１４からの入出力データを参照して動作する。また、第１のプロセッサ５０２及び第２のプロセッサ５０３は、ステータスレジスタ１１５が保持している動作中の状態パラメータの値を用いて制御を行う。【００９３】
メモリ５０６は、第１〜第ｎのタスク５２３〜５２７と、第１及び第２のオペレーティングシステム５２１，５２２とを備えている。【００９４】
第１〜第ｎのタスク５２３〜５２７は、それぞれ計算機システム５００上で動作する単一又は複数の命令コードを含む実行単位であり、例えば、第１のプロセッサ５０２により実行されるアプリケーションプログラムである。【００９５】
第１のオペレーティングシステム５２１及び第２のオペレーティングシステム５２２は、計算機システム５００で動作するソフトウェア全体を制御するオペレーティングシステムであり、実施の形態２では、２つのオペレーティングシステムを備える。【００９６】
本実施の形態２のマルチプロセッサシステムの一例として、図６では、第１及び第２のタスク５２３，５２４と第１のオペレーティングシステム５２１とは、第１のプロセッサ５０２上で動作し、第３〜第ｎのタスク５２５，５２６，５２７と第２のオペレーティングシステム５２２とは、第２のプロセッサ５０３上で動作するようにコンパイルされている。【００９７】
第１のオペレーティングシステム５２１は、第１及び第２のタスク５２３，５２４の実行状態と、第１のプロセッサ５０２のハードウェア状態とを管理する。第２のオペレーティングシステム５２２は、第３〜第ｎのタスク５２５，５２６，５２７の実行状態と、第２のプロセッサ５０３のハードウェア状態とを管理する。また、計算機システム５００は、複数のプロセッサでそれぞれ一つずつのオペレーティングシステムを実行するため、仮想計算機環境を提供する必要はない。そのため、本実施の形態２には、実施の形態１で説明したハイパバイザ１２０は存在していない。なお、タスク数、オペレーティングシステム数、及び、タスクとオペレーティングシステムとの関係は、図６で示した例に一致しなくてもよい。【００９８】
第１及び第２のレベル１キャッシュ記憶装置５０４，５０５は、それぞれ、第１のプロセッサ５０２及び第２のプロセッサ５０３が参照したデータ及び命令を一時的に格納しておくための記憶手段である。なお、個々のプロセッサ毎にキャッシュ記憶装置を搭載する場合には、共有データの一貫性を保証するためのスヌープ制御が必要であるが、本発明の主要構成要素でないため、図中には記載していない。一般に、スヌープ制御では、個々のプロセッサにおける書込み動作を監視しておき、一方のプロセッサで書込みが行われると、もう一方のプロセッサが利用しているキャッシュ記憶装置の対応するキャッシュエントリを無効化又は更新する。これにより、複数のプロセッサに対応するキャッシュ記憶装置間で論理的矛盾が発生しなくなる。【００９９】
レベル２キャッシュ記憶装置５０１は、第１のプロセッサ５０２及び第２のプロセッサ５０３によって共有され、第１のプロセッサ５０２及び第２のプロセッサ５０３が第１及び第２のレベル１キャッシュ記憶装置５０４，５０５を介して参照したデータ及び命令を一時的に格納しておくための記憶手段である。レベル２キャッシュ記憶装置５０１は、図１におけるキャッシュ記憶装置１１１に相当する。実施の形態１において、キャッシュ記憶装置１１１は、仮想計算機システムにおける複数のオペレーティングシステムから共有されていたが、本実施の形態２においては、レベル２キャッシュ記憶装置５０１は、複数のプロセッサから共有されることになる。【０１００】
レベル２キャッシュ記憶装置５０１は、セットアソシアティブ方式のキャッシュ記憶装置であり、複数のウェイに分割されたキャッシュ記憶データメモリを備える。なお、セットアソシアティブ方式のキャッシュ記憶装置については、前述した通り、図２に示している。図６では、４つのウェイに分割されたキャッシュ記憶データメモリ５１０〜５１３が存在しているが、４ウェイ未満又は４ウェイを越えて搭載することも可能である。また、レベル２キャッシュ記憶装置５０１は、複数のプロセッサから共有されるため、個々のキャッシュエントリ内には、いずれのプロセッサが当該キャッシュエントリを使用しているかを示すプロセッサ識別子が搭載される。なお、プロセッサ識別子については図７において説明する。【０１０１】
レベル２キャッシュ記憶装置５０１は、前述したキャッシュ記憶データメモリ５１０〜５１３と、置換対象選択部１３６と、アクセス対象選択部１３７と、バッファ１３８と、監視部５１９と、入出力部１４０と、キャッシュエントリ設定部１４１とを備えている。以下、実施の形態１と異なる構成要素である参照時刻計算部５１４と、プロセッサ実行状態記憶部５１５と、監視部５１９とについて説明する。【０１０２】
監視部５１９は、ステータスレジスタ１１５をチェックすることで、第１のプロセッサ５０２及び第２のプロセッサ５０３で実行される電力制御命令を監視し、当該電力制御命令を実行するプロセッサの状態変化を参照時刻計算部５１４に通知する。電力制御命令は、スリープ命令、電源制御命令及びクロック制御命令を含む。なお、第１のプロセッサ５０２及び第２のプロセッサ５０３は、それぞれ、第１のオペレーティングシステム５２１又は第２のオペレーティングシステム５２２上で動作しているタスク数及びタスクの状態などによって、スリープモードに移行する場合、電力制御命令を発行し、第１のプロセッサ５０２及び第２のプロセッサ５０３は、発行された電力制御命令を実行する。また、第１のプロセッサ５０２及び第２のプロセッサ５０３は、割込みなどの発生を受けて処理負荷が変化した場合、スリープモードから通常動作モードに復帰する処理を実行する。【０１０３】
キャッシュエントリ設定部１４１は、キャッシュミスが発生し、複数のキャッシュエントリの中から置換対象となるキャッシュエントリを選択する際に、電力制御命令に基づいて変更される複数のプロセッサの実行状態を用いて、電力制御命令を実行したプロセッサが利用していたキャッシュエントリを、過去に使用された状態に設定する。キャッシュエントリ設定部１４１は、スリープモードのプロセッサが利用しているキャッシュエントリを、通常動作モードのプロセッサが利用しているキャッシュエントリより過去に使用された状態に設定する。【０１０４】
キャッシュエントリ設定部１４１は、参照時刻計算部５１４と、プロセッサ実行状態記憶部５１５とを備える。【０１０５】
参照時刻計算部５１４は、監視部５１９からの通知を受け取り、個々のプロセッサの動作モードを、プロセッサ実行状態記憶部５１５を用いて管理する。プロセッサ実行状態記憶部５１５は、プロセッサを識別するプロセッサ識別子と、各プロセッサの実行状態（通常動作モード又はスリープモード）とをテーブル形式で保持している。【０１０６】
なお、ここでは、プロセッサ実行状態記憶部５１５が複数のプロセッサの動作モードをテーブル形式で保持するとしたが、他のフォーマットで複数のプロセッサの動作モードを記憶してもよい。【０１０７】
また、参照時刻計算部５１４は、置換対象選択部１３６からの問い合わせに対し、置換対象の候補となる複数のキャッシュエントリの参照時刻データを計算して、計算した参照時刻データを置換対象選択部１３６に通知する。参照時刻計算部５１４は、プロセッサ実行状態記憶部５１５と、個々のキャッシュエントリに設けられたプロセッサ識別子とを用いて、スリープモードのプロセッサが利用しているキャッシュエントリの参照時刻データを、最も過去に使用された値として出力する。なお、レベル２キャッシュ記憶装置５０１は、スリープモードのプロセッサが存在しない場合には、通常のＬＲＵアルゴリズムで動作する。【０１０８】
以上のような構成により、スリープモードで実行しているプロセッサが利用しているキャッシュエントリ上のデータを、最も過去に使用されたキャッシュエントリ上のデータとみなして置換対象とすることができる。これにより、通常動作モードのプロセッサのデータが優先的にレベル２キャッシュ記憶装置５０１内に残るように制御することができる。また、プロセッサがスリープモードに移行することで利用される頻度が少なくなったキャッシュエントリを、別のプロセッサで有効に利用することが可能となり、システム全体としての性能向上を図ることができる。【０１０９】
さらに、本実施の形態２は、スリープモードに移行したプロセッサが利用していたデータが一律にキャッシュエントリから無効化されることにより、キャッシュエントリを別のプロセッサが利用可能とする方法ではない。そのため、デバイスなどの状態によって、スリープモードに移行したプロセッサが再度通常動作モードに戻った場合に、必要となるデータがレベル２キャッシュ記憶装置５０１上に保持されたままであるなら、過去に使用したキャッシュエントリを有効活用することが可能である。【０１１０】
なお、本実施の形態２において、計算機システム５００が共有キャッシュ制御装置の一例に相当し、メモリ５０６が主記憶部の一例に相当し、キャッシュ記憶装置５０１がキャッシュ記憶装置の一例に相当し、監視部５１９が監視部の一例に相当し、キャッシュエントリ設定部１４１がキャッシュエントリ設定部の一例に相当し、置換対象選択部１３６が置換対象選択部の一例に相当し、プロセッサ実行状態記憶部５１５が実行状態記憶部の一例に相当し、参照時刻計算部５１４が参照時刻データ作成部の一例に相当する。【０１１１】
図７は、メモリアクセス命令などにより、第１のプロセッサ５０２又は第２のプロセッサ５０３がレベル２キャッシュ記憶装置５０１内にアクセスする場合の、キャッシュエントリ選択処理に関するレベル２キャッシュ記憶装置５０１の詳細な構成を示す図である。【０１１２】
アクセス対象のデータを示すアドレス信号２００は、キャッシュ記憶データメモリ５１０〜５１３内のオフセットを示すインデックス番号２０２と、インデックス番号２０２以外の上位アドレスタグ２０１とが含まれている。個々のキャッシュ記憶データメモリ５１０〜５１３において、インデックス番号２０２で指定されたオフセットにあるキャッシュエントリがアクセス対象となり得るキャッシュエントリである。これらインデックス番号２０２で指定されたオフセットにある４個のキャッシュエントリの中から、キャッシュヒットの検出が行われる。【０１１３】
また、本実施の形態２では、図面の都合上、４ウェイのキャッシュ記憶データメモリ５１０〜５１３のみが記載されているが、本発明は特にこれに限定されず、レベル２キャッシュ記憶装置５０１は、４ウェイ未満又は４ウェイを越えるキャッシュ記憶データメモリを搭載することが可能であり、置換対象となり得るキャッシュエントリはウェイ数にしたがって増減する。【０１１４】
また、個々のキャッシュ記憶データメモリ内の各キャッシュエントリは、少なくとも、上位アドレスタグ２１０、ダーティビット２１１、有効ビット２１２、プロセッサ識別子６００、参照時刻カウンタ２１４及びキャッシュデータ２１５を含むフィールドから構成される。図７において、プロセッサ識別子６００を除く他の構成要素は、図３と同様の構成要素であり、図３と同様の動作を行うため、本実施の形態２での説明は省略する。個々のプロセッサがキャッシュエントリにアクセスした場合、当該プロセッサの番号がプロセッサ識別子６００に格納される。【０１１５】
このように、キャッシュエントリは、当該キャッシュエントリを使用するプロセッサを識別するためのプロセッサ識別子６００と、当該キャッシュエントリが参照された時刻に応じてカウントされ、参照された時刻が古くなるほど値が大きくなる参照時刻カウンタ（参照時刻カウント値）２１４と、キャッシュデータ２１５とを含む。【０１１６】
図８は、図７で示したキャッシュエントリ選択処理の結果、キャッシュミスが発生した場合のキャッシュエントリ置換処理に関するレベル２キャッシュ記憶装置５０１の詳細な構成を示す図である。図８において、プロセッサ識別子６００、参照時刻計算部５１４ａ〜５１４ｄ及びプロセッサ実行状態記憶部５１５ａ〜５１５ｄを除く他の構成要素は、図４と同じ構成要素である。また、参照時刻計算部５１４ａ〜５１４ｄは、図６で説明した参照時刻計算部５１４に相当する。【０１１７】
以下、キャッシュエントリ内のデータを新たなデータに置換するキャッシュエントリ置換処理の詳細について図８を用いて説明する。【０１１８】
まず、キャッシュミスなどにより、新たなデータをメモリ５０６から読み出して、レベル２キャッシュ記憶装置５０１に格納する必要がある場合、置換対象選択部１３６は、アクセス対象選択部１３７からキャッシュミス信号４１０を受け取り、キャッシュエントリ置換処理を開始する。【０１１９】
置換対象選択部１３６は、アドレス信号２００内に含まれるインデックス番号２０２を用いて、キャッシュ記憶データメモリ５１０〜５１３内の４つのキャッシュエントリを選択する。ここでは、キャッシュエントリ２１６ａ〜２１６ｄが選択されたものとする。【０１２０】
この４つのキャッシュエントリ２１６ａ〜２１６ｄの中から、一つのキャッシュエントリが置換対象として選択される。そのため、本実施の形態２におけるレベル２キャッシュ記憶装置５０１では、監視部５１９が、第１のプロセッサ５０２及び第２のプロセッサ５０３で実行される電力制御命令を監視し、当該電力制御命令を実行するプロセッサの状態変化を参照時刻計算部５１４に通知し、参照時刻計算部５１４が、各プロセッサの実行状態を管理する。これにより、スリープモードに移行するプロセッサが利用していたキャッシュエントリを最も過去に使用された状態に設定することが可能となり、別のプロセッサが、スリープモードに移行したプロセッサが利用していたキャッシュエントリを有効に利用することができる。【０１２１】
第１及び第２のプロセッサ５０２，５０３のそれぞれは、対応する第１及び第２のオペレーティングシステム５２１，５２２上で動作しているタスク数及びタスクの状態などによって、スリープモードに移行する場合、電力制御命令を発行する。また、第１及び第２のプロセッサ５０２，５０３のそれぞれは、割込みなどの発生を受けて処理負荷が変化した場合、スリープモードから通常動作モードに復帰する。【０１２２】
参照時刻計算部５１４ａ〜５１４ｄは、プロセッサ実行状態記憶部５１５ａ〜５１５ｄを用いて、個々のプロセッサの動作モードを管理する。なお、本実施の形態２では、個々のキャッシュエントリ設定部１４１ａ〜１４１ｄ内に参照時刻計算部５１４ａ〜５１４ｄ及びプロセッサ実行状態記憶部５１５ａ〜５１５ｄを搭載する構成としているが、キャッシュエントリ設定部１４１ａ〜１４１ｄ間で一つの参照時刻計算部５１４及び一つのプロセッサ実行状態記憶部５１５を共有してもよい。これにより、データの一貫性をより効率的に保証することができる。【０１２３】
図８では、プロセッサ実行状態記憶部５１５ａのみ、テーブル内の詳細を示している。図８のプロセッサ実行状態記憶部５１５ａが記憶するテーブルでは、２つのプロセッサ（識別子“０”及び“１”）が存在し、それぞれ、通常動作モード及びスリープモードであると仮定している。なお、図８では、プロセッサ識別子が、“０”及び“１”と表され、通常動作モードであるプロセッサの実行状態が、“ＲＵＮ”と表され、スリープモードであるプロセッサの実行状態が、“ＳＬＥＥＰ”と表されている。また、プロセッサ実行状態記憶部５１５ａ〜５１５ｄは、プロセッサの実行状態に対応する実行状態値（Ｖａｌ）として、通常動作モードであれば“０”を保持し、スリープモードであれば“１”を保持している。【０１２４】
次に、参照時刻計算部５１４ａ〜５１４ｄは、選択されたキャッシュエントリ２１６ａ〜２１６ｄ内の参照時刻カウンタ２１４と、選択されたキャッシュエントリ２１６ａ〜２１６ｄ内の有効ビット２１２と、プロセッサ実行状態記憶部５１５ａ〜５１５ｄ内のプロセッサの実行状態に対応する実行状態値（Ｖａｌ）とを用いて、各キャッシュエントリ２１６ａ〜２１６ｄに対応付けられた参照時刻データを生成する。【０１２５】
一例として、キャッシュエントリ２１６ａに対応付けられた参照時刻データ２２１ａは、有効ビット２１２を否定演算子２２０ａによって反転させた無効ビット２２２ａ、プロセッサ実行状態記憶部５１５ａに記憶されているプロセッサの実行状態に対応する実行状態値（Ｖａｌ）を利用した状態ビット２２３ａ、及び、参照時刻カウンタ２１４をそのまま利用した参照カウンタビット２２４ａから構成される。同様に、キャッシュエントリ２１６ｂ〜２１６ｄに対応付けられた参照時刻データ２２１ｂ〜２２１ｄは、それぞれのキャッシュエントリの有効ビット２１２を否定演算子２２０ｂ〜２２０ｄによって反転させた無効ビット２２２ｂ〜２２２ｄ、プロセッサ実行状態記憶部５１５ｂ〜５１５ｄに記憶されているプロセッサの実行状態に対応する実行状態値（Ｖａｌ）を利用した状態ビット２２３ｂ〜２２３ｄ、及び、それぞれのキャッシュエントリの参照時刻カウンタ２１４をそのまま利用した参照カウンタビット２２４ｂ〜２２４ｄから構成される。【０１２６】
置換対象選択部１３６は、これらの参照時刻データ２２１ａ〜２２１ｄを受け取って比較し、参照時刻データの数値が最も大きいキャッシュエントリを置換対象として選択し、選択したキャッシュエントリを置換対象キャッシュエントリ２３０として出力する。また、置換対象選択部１３６は、選択されたキャッシュエントリを置換することで追い出されたデータがある場合、置換対象のキャッシュエントリと同じウェイのデータをバッファ１３８に書き込み、置換前のデータをメモリ５０６へ書き戻す。【０１２７】
具体的には、選択されたキャッシュエントリ２１６ａ〜２１６ｄ内のうち、有効ビット２１２がＯＦＦであるキャッシュエントリが一つあれば、参照時刻データ２２１ａ〜２２１ｄにおける最上位ビットである無効ビット２２２ａ〜２２２ｄがＯＮになるため、当該キャッシュエントリの参照時刻データが最も大きくなる。【０１２８】
また、キャッシュエントリ２１６ａ〜２１６ｄが全て有効である場合、すなわち、キャッシュエントリ２１６ａ〜２１６ｄの全ての有効ビット２１２がＯＮである場合、参照時刻データ２２１ａ〜２２１ｄにおける最上位ビットである無効ビット２２２ａ〜２２２ｄは全て“０”となる。このとき、選択されたキャッシュエントリ２１６ａ〜２１６ｄ内のうち、スリープモードのプロセッサが使用しているキャッシュエントリが一つあれば、参照時刻データ２２１ａ〜２２１ｄにおける上位第二ビットである状態ビット２２３ａ〜２２３ｄがＯＮになるため、当該キャッシュエントリの参照時刻データが最も大きくなる。【０１２９】
さらに、キャッシュエントリ２１６ａ〜２１６ｄが全て有効であって、かつ、全て通常動作モードのプロセッサが使用している場合、最上位ビットである無効ビット２２２ａ〜２２２ｄと、上位第二ビットである状態ビット２２３ａ〜２２３ｄとは、全て“０”となる。このとき、キャッシュエントリ２１６ａ〜２１６ｄの参照時刻カウンタ２１４の値に対応する参照カウンタビット２２４ａ〜２２４ｄがそのまま用いられる。そのため、参照時刻データ２２１ａ〜２２１ｄのうち、最も過去に参照されたキャッシュエントリの参照時刻データの値が最も大きくなる。【０１３０】
このように、プロセッサ実行状態記憶部５１５ｂ〜５１５ｄは、電力制御命令に基づいて変更される複数のプロセッサの実行状態と、実行状態に応じて予め設定される値であり、通常動作モードに対応する値よりもスリープモードに対応する値の方が大きい実行状態値とを記憶する。また、参照時刻計算部５１４ａ〜５１４ｄは、実行状態値と、参照時刻カウント値とを含む参照時刻データ２２１ａ〜２２１ｄを複数のキャッシュエントリ毎に作成する。【０１３１】
置換対象選択部１３６は、参照時刻計算部５１４ａ〜５１４ｄによって作成された複数のキャッシュエントリ毎の参照時刻データ２２１ａ〜２２１ｄを比較し、参照時刻データに含まれる実行状態値が最も大きい参照時刻データに対応するキャッシュエントリを、置換対象となるキャッシュエントリとして選択する。また、置換対象選択部１３６は、参照時刻計算部５１４ａ〜５１４ｄによって作成された複数のキャッシュエントリ毎の参照時刻データ２２１ａ〜２２１ｄを比較し、参照時刻データに含まれる実行状態値が全て同じである場合、参照時刻データに含まれる参照時刻カウント値が最も大きい参照時刻データに対応するキャッシュエントリを、置換対象となるキャッシュエントリとして選択する。【０１３２】
この構成により、有効ビット２１２がＯＮでないキャッシュエントリ、及びスリープモードのプロセッサが利用しているキャッシュエントリが優先して置換対象として選択される。そして、これらのキャッシュエントリが存在しない場合のみ、ＬＲＵアルゴリズムでキャッシュエントリが置換されることになる。これにより、複数のプロセッサがキャッシュ記憶装置を共有する計算機システムにおいて、一つのプロセッサによって利用されなくなったキャッシュエントリを、別のプロセッサが優先的に利用することができ、限られたサイズのキャッシュ記憶装置を有効に活用することが可能となる。【０１３３】
以上により、有効でないキャッシュエントリを最優先で置換対象とするとともに、次に、スリープモードで実行しているプロセッサが利用しているキャッシュエントリのデータを、最も過去に使用されたキャッシュエントリのデータとみなして置換対象とすることができる。これにより、通常動作モードのプロセッサのデータが優先的にレベル２キャッシュ記憶装置５０１内に残るように制御することができる。【０１３４】
また、本実施の形態２は、データが一律にキャッシュエントリから無効化される方法ではない。そのため、デバイスなどの状態によって、スリープモードに移行したプロセッサが再度通常動作モードに戻った場合に、過去に使用したキャッシュエントリを有効活用することが可能である。通常動作モードに戻った場合、状態ビットの値が“０”に戻るため、ＬＲＵアルゴリズムで置換対象が選択されることになる。【０１３５】
（実施の形態３）
図９は、本発明の実施の形態３における計算機システムの構成を示す図である。計算機システム８００は、一つのプロセッサ上で複数のオペレーティングシステムを動作させる仮想計算機システムである。計算機システム８００は、内部バス１１０、キャッシュ記憶装置８０１、プロセッサ１１２、メモリ８１３、周辺モジュール群１１４及びステータスレジスタ１１５を備えている。キャッシュ記憶装置８０１、メモリ８１３、周辺モジュール群１１４及びステータスレジスタ１１５は、それぞれ内部バス１１０に接続されている。内部バス１１０、プロセッサ１１２、周辺モジュール群１１４及びステータスレジスタ１１５は、図１において説明したのと同じ構成要素である。【０１３６】
メモリ８１３は、第１〜第ｎのタスク８２３〜８２７と、第１及び第２のオペレーティングシステム８２１，８２２と、ハイパバイザ８２０とを備えている。図１のメモリ１１３は、オペレーティングシステムを３個備えているのに対し、図９のメモリ８１３は、オペレーティングシステムを２個備えている点が異なっており、各構成要素は同じである。【０１３７】
キャッシュ記憶装置８０１は、キャッシュ記憶装置１１１と同様のセットアソシアティブ方式のキャッシュ記憶装置である。この場合、キャッシュ記憶装置８０１は、複数のウェイに分割されたキャッシュ記憶データメモリ８３０〜８３３と、置換対象選択部８４１と、アクセス対象選択部１３７と、バッファ１３８と、監視部１３９と、入出力部１４０と、キャッシュエントリ設定部１４１とを備える。キャッシュ記憶データメモリ８３０〜８３３は、前述のキャッシュ記憶データメモリ１３０〜１３３と同様の構成であるが、個々のキャッシュエントリ内に、オペレーティングシステム識別子を搭載する必要はない。また、アクセス対象選択部１３７、バッファ１３８、監視部１３９及び入出力部１４０の構成は、実施の形態１と同じ構成であるので説明を省略する。【０１３８】
キャッシュエントリ設定部１４１は、ロックダウン制御部８３４と、ロックダウンテーブル記憶部８３８とを備える。【０１３９】
ロックダウン制御部８３４は、複数のキャッシュ記憶データメモリ８３０〜８３３のうち、指定されたウェイを置換対象としないように設定する。例えば、ロックダウン制御部８３４によってキャッシュ記憶データメモリ８３１がロックダウンされると、キャッシュミスが発生した場合、キャッシュ記憶データメモリ８３０，８３２，８３３のいずれかから置換対象キャッシュエントリが選択される。【０１４０】
ロックダウンテーブル記憶部８３８は、ロックダウンテーブル８３５を記憶する。ロックダウンテーブル８３５は、個々のオペレーティングシステムの実行状態、及び個々のオペレーティングシステムが占有するウェイを指定するためのテーブルである。ロックダウンテーブル８３５には、オペレーティングシステム実行状態８３６と、占有ウェイ８３７とを示すエントリが存在する。【０１４１】
オペレーティングシステム実行状態８３６は、各オペレーティングシステムの実行状態を示す。図９では、第１のオペレーティングシステム８２１が通常動作モードであり、第２のオペレーティングシステム８２２がスリープモードであることを示している。なお、図９では、オペレーティングシステム識別子が、“１”及び“２”と表され、通常動作モードであるオペレーティングシステムの実行状態が、“ＲＵＮ”と表され、スリープモードであるオペレーティングシステムの実行状態が、“ＳＬＥＥＰ”と表されている。【０１４２】
占有ウェイ８３７は、各オペレーティングシステムが占有して使用するキャッシュ記憶データメモリ（ウェイ）を示す。あるオペレーティングシステムが占有するウェイは、他のオペレーティングシステムが置換対象とすることができない。図９の例では、第１のオペレーティングシステム８２１は、ウェイ０のキャッシュ記憶データメモリ８３０及びウェイ１のキャッシュ記憶データメモリ８３１を占有し、第２のオペレーティングシステム８２２は、ウェイ３のキャッシュ記憶データメモリ８３２を占有している。【０１４３】
このとき、ロックダウン制御部８３４は、実行中のオペレーティングシステムを監視し、第２のオペレーティングシステム８２２が動作する場合、第１のオペレーティングシステム８２１が占有しているウェイ０のキャッシュ記憶データメモリ８３０及びウェイ１のキャッシュ記憶データメモリ８３１をロックダウンする。これにより、第１のオペレーティングシステム８２１以外のオペレーティングシステムが動作している場合、ウェイ０のキャッシュ記憶データメモリ８３０及びウェイ１のキャッシュ記憶データメモリ８３１は置換対象とならない。【０１４４】
オペレーティングシステムがスリープモードである場合、当該オペレーティングシステムがキャッシュ記憶データメモリを占有することは、システム全体の性能に影響を及ぼす。そこで、ロックダウン制御部８３４は、ロックダウンテーブル８３５内のオペレーティングシステム実行状態８３６を参照し、スリープモードであれば、当該オペレーティングシステムに占有されるべきウェイのキャッシュ記憶データメモリをロックダウンしない。【０１４５】
図９の例では、第２のオペレーティングシステム８２２がウェイ３のキャッシュ記憶データメモリ８３２を占有するとしている。このとき、ロックダウン制御部８３４は、第１のオペレーティングシステム８２１が動作し、第２のオペレーティングシステム８２２がスリープモードであると判断した場合、本来第２のオペレーティングシステム８２２が占有するべきウェイ３のキャッシュ記憶データメモリ８３２をロックダウンしない。これにより、第１のオペレーティングシステム８２１は、ウェイ３のキャッシュ記憶データメモリ８３２も置換対象とすることができ、通常に比べて高速なプログラムの実行が期待できる。【０１４６】
このように、キャッシュ記憶装置８０１は、複数のキャッシュエントリをそれぞれ有する複数のウェイ（キャッシュ記憶データメモリ８３０〜８３３）を含む。ロックダウンテーブル記憶部８３８は、電力制御命令に基づいて変更される複数のオペレーティングシステムの実行状態と、複数のウェイのうちのオペレーティングシステムが利用するウェイを識別するためのウェイ識別子とを記憶する。また、ロックダウン制御部８３４は、ロックダウンテーブル記憶部８３８を参照し、スリープモードのオペレーティングシステムが利用しているウェイを置換対象となるウェイに設定するとともに、通常動作モードのオペレーティングシステムが利用しているウェイを置換対象とならないウェイに設定する。【０１４７】
置換対象選択部８４１は、ロックダウン制御部８３４によって置換対象となるウェイに設定されたウェイの中から、最も過去に使用されたキャッシュエントリを、置換対象となるキャッシュエントリとして選択する。【０１４８】
なお、本実施の形態３において、キャッシュ記憶装置８０１がキャッシュ記憶装置の一例に相当し、置換対象選択部８４１が置換対象選択部の一例に相当し、ロックダウン制御部８３４がロックダウン制御部の一例に相当し、ロックダウンテーブル記憶部８３８が実行状態記憶部の一例に相当する。【０１４９】
図１０は、図９に示すロックダウン制御部８３４の動作を説明するためのフローチャートである。なお、図９に示したロックダウン制御部８３４は、キャッシュ記憶装置８０１内の制御回路であるとして記載しているが、図１０に示すように、例えば、ハイパバイザ８２０内のプログラムあってもよい。制御回路及びプログラムのいずれであっても、同様の処理フローで実現することができる。【０１５０】
最初に、ロックダウン制御部８３４は、オペレーティングシステム切替え待ち状態に移行する（ステップＳ１）。【０１５１】
オペレーティングシステムが切り替えられた場合、ロックダウン制御部８３４は、ステップＳ２の処理に移行し、次に実行すべきオペレーティングシステム以外のオペレーティングシステムについて、ステップＳ３の処理及びステップＳ４の処理を実行する。すなわち、ロックダウン制御部８３４は、次に実行すべきオペレーティングシステム以外の全てのオペレーティングシステムについて通常動作モードであるか否かのチェックが完了したか否かを判断する（ステップＳ２）。【０１５２】
次に実行すべきオペレーティングシステム以外の全てのオペレーティングシステムについて通常動作モードであるか否かのチェックが完了していないと判断された場合（ステップＳ２でＮＯ）、ロックダウン制御部８３４は、次に実行すべきオペレーティングシステム以外の他のオペレーティングシステムであり、かつ通常動作モードであるか否かのチェックが完了していないオペレーティングシステムを選択する。そして、ロックダウン制御部８３４は、ロックダウンテーブル８３５を参照し、選択されたオペレーティングシステムが通常動作モードであるか否かを判断する（ステップＳ３）。【０１５３】
通常動作モードであると判断された場合（ステップＳ３でＹＥＳ）、ロックダウン制御部８３４は、ロックダウンテーブル８３５内の占有ウェイ８３７で指定されたキャッシュ記憶データメモリをロックダウンする（ステップＳ４）。一方、通常動作モードでないと判断された場合（ステップＳ３でＮＯ）、ロックダウン制御部８３４は、ステップＳ２の処理に戻る。【０１５４】
一方、次に実行すべきオペレーティングシステム以外の全てのオペレーティングシステムについて通常動作モードであるか否かのチェックが完了したと判断された場合（ステップＳ２でＹＥＳ）、ロックダウン制御部８３４は、ステップＳ１の処理へ戻り、オペレーティングシステム切替え待ち状態に移行する。【０１５５】
図９に示した構成を用いることにより、キャッシュ記憶装置内にオペレーティングシステム識別子を搭載することなく、より簡易な方法で、オペレーティングシステムの実行状態に応じたキャッシュ記憶装置の有効活用を行うことができる。具体的には、通常動作モードのオペレーティングシステムが利用しているキャッシュ記憶データメモリがロックダウンされるため、当該キャッシュ記憶データメモリが他のオペレーティングシステムによって追い出されることがない。また、スリープモードに移行したオペレーティングシステムのキャッシュ記憶データメモリはロックダウンされないため、他のオペレーティングシステムがキャッシュ記憶装置内のキャッシュエントリを効率的に利用できるようになる。【０１５６】
本実施の形態３は、キャッシュ記憶装置の記憶領域を分割して個々のオペレーティングシステムに完全に割り振る方法に比べて、処理の高速化の効果が期待できる。さらにまた、本実施の形態３は、データが一律にキャッシュエントリから無効化される方法ではないため、デバイスなどの状態によって、スリープモードに移行したオペレーティングシステムが再度通常動作モードに戻った場合に、過去に使用したキャッシュエントリを有効活用することが可能である。【０１５７】
（実施の形態４）
本発明の実施の形態１においては、複数のオペレーティングシステムのうちのいずれかのオペレーティングシステムがスリープモードに移行した場合、当該オペレーティングシステムの使用しているキャッシュエントリが置換対象として完全に優先される。しかしながら、通常動作モードのオペレーティングシステムが最も過去に利用したキャッシュエントリを置換対象としたほうが有効な場合がある。【０１５８】
例えば、オペレーティングシステムの実行状態として、スリープモード及び通常動作モードの他に通常動作モードよりも低速クロックで動作する低消費電力モードを設け、スリープモード時には、当該オペレーティングシステムの利用しているキャッシュエントリを置換対象として完全に優先し、低消費電力モード時には、当該オペレーティングシステムの利用しているキャッシュエントリをある程度置換対象として優先させる。すなわち、通常動作モードのオペレーティングシステムであっても、最も過去に利用したキャッシュエントリは、低消費電力モードのオペレーティングシステムが最近アクセスしたキャッシュエントリよりも優先して置換させることが望ましい場合にも対応可能にする。【０１５９】
図１１は、低消費電力モードを考慮した本発明の実施の形態４における計算機システムの構成を示す図である。計算機システム１０００は、一つのプロセッサ上で複数のオペレーティングシステムを動作させる仮想計算機システムである。【０１６０】
計算機システム１０００は、内部バス１１０、キャッシュ記憶装置１００１、プロセッサ１１２、メモリ１１３、周辺モジュール群１１４及びステータスレジスタ１１５を備えている。キャッシュ記憶装置１００１、メモリ１１３、周辺モジュール群１１４及びステータスレジスタ１１５は、それぞれ内部バス１１０に接続されている。内部バス１１０、プロセッサ１１２、メモリ１１３、周辺モジュール群１１４及びステータスレジスタ１１５は、図１において説明したのと同じ構成要素であるため、説明を省略し、異なる構成要素であるキャッシュ記憶装置１００１についてのみ説明する。【０１６１】
また、近年のＬＳＩの高集積化により、計算機システム１０００を構成する複数の回路を一つのシステムＬＳＩ内に搭載することも可能であるが、本実施の形態４において、回路群が単一のシステムＬＳＩ内に実装されるか、それぞれ別のシステムＬＳＩで提供されるかについての限定は行わない。なお、図１１では、ステータスレジスタ１１５は、内部バス１１０に接続しているが、プロセッサ１１２に直接接続してもよい。【０１６２】
キャッシュ記憶装置１００１は、キャッシュ記憶データメモリ１３０〜１３３と、置換対象選択部１３６と、アクセス対象選択部１３７と、バッファ１３８と、監視部１３９と、入出力部１４０と、キャッシュエントリ設定部１４１とを備えている。キャッシュエントリ設定部１４１は、参照時刻計算部１００４と、ＯＳ実行状態記憶部１００５とを備える。以下、実施の形態１と異なる構成要素である参照時刻計算部１００４と、ＯＳ実行状態記憶部１００５とについて説明する。【０１６３】
参照時刻計算部１００４は、監視部１３９からの通知を受け取り、電力制御命令を実行するオペレーティングシステムの動作モードを、ＯＳ実行状態記憶部１００５を用いて管理する。ＯＳ実行状態記憶部１００５は、オペレーティングシステムを識別するオペレーティングシステム識別子と、各オペレーティングシステムの実行状態（通常動作モード、スリープモード及び低消費電力モード）と、オペレーティングシステムの実行状態に対応した未使用時刻加算指標（未使用時刻加算値）とをテーブル形式で保持している。【０１６４】
なお、ここでは、ＯＳ実行状態記憶部１００５がオペレーティングシステムの動作モード及び未使用時刻加算指標をテーブル形式で保持するとしたが、他のフォーマットでオペレーティングシステムの動作モード及び未使用時刻加算指標を記憶してもよい。【０１６５】
また、参照時刻計算部１００４は、置換対象選択部１３６からの問い合わせに対し、置換対象の候補となる複数のキャッシュエントリの参照時刻データを計算して、計算した参照時刻データを置換対象選択部１３６に通知する。参照時刻計算部１００４は、ＯＳ実行状態記憶部１００５と、個々のキャッシュエントリに設けられたオペレーティングシステム識別子と、参照時刻カウンタとを用いて、スリープモードのオペレーティングシステムが利用しているキャッシュエントリの参照時刻データを、最も過去に使用された値とし、低消費電力モードのオペレーティングシステムが利用しているキャッシュエントリの参照時刻データを、ある程度過去に使用された値として出力する。なお、キャッシュ記憶装置１００１は、スリープモード及び低消費電力モードのオペレーティングシステムが存在しない場合には、通常のＬＲＵアルゴリズムで動作する。【０１６６】
以上のような構成により、スリープモードで実行しているオペレーティングシステムが利用しているキャッシュエントリ上のデータが最も過去に使用されたデータとみなされ、また、低消費電力モードで動作しているオペレーティングシステムが利用しているキャッシュエントリ上のデータが、ある程度過去に使用されたデータとみなされる。したがって、通常動作モードのオペレーティングシステムのデータが優先的にキャッシュ記憶装置１００１内に残るように制御することができる。これにより、オペレーティングシステムがスリープモード又は低消費電力モードに移行することで利用される頻度が少なくなったキャッシュエントリを、別のオペレーティングシステムで有効に利用することが可能となり、システム全体としての性能向上を図ることができる。【０１６７】
なお、本実施の形態４において、計算機システム１０００が共有キャッシュ制御装置の一例に相当し、メモリ１１３が主記憶部の一例に相当し、キャッシュ記憶装置１００１がキャッシュ記憶装置の一例に相当し、監視部１３９が監視部の一例に相当し、キャッシュエントリ設定部１４１がキャッシュエントリ設定部の一例に相当し、置換対象選択部１３６が置換対象選択部の一例に相当し、ＯＳ実行状態記憶部１００５が実行状態記憶部の一例に相当し、参照時刻計算部１００４が参照時刻データ作成部の一例に相当する。【０１６８】
図１２は、キャッシュエントリ選択処理の結果、キャッシュミスが発生した場合のキャッシュエントリ置換処理に関するキャッシュ記憶装置１００１の詳細な構成を示す図である。図１２において、参照時刻計算部１００４ａ〜１００４ｄ、ＯＳ実行状態記憶部１００５ａ〜１００５ｄ、参照時刻データ１００２ａ〜１００２ｄ、参照カウンタビット１００３ａ〜１００３ｄ及び加算器１０１０ａ〜１０１０ｄを除く他の構成要素は、図４と同じ構成要素である。また、参照時刻計算部１００４ａ〜１００４ｄは、図１１で説明した参照時刻計算部１００４に相当し、ＯＳ実行状態記憶部１００５ａ〜１００５ｄは、図１１で説明したＯＳ実行状態記憶部１００５に相当する。【０１６９】
以下、キャッシュエントリ内のデータを新たなデータに置換するキャッシュエントリ置換処理の詳細について図１２を用いて説明する。【０１７０】
まず、キャッシュミスなどにより、新たなデータをメモリ１１３から読み出して、キャッシュ記憶装置１００１に格納する必要がある場合、置換対象選択部１３６は、アクセス対象選択部１３７からキャッシュミス信号４１０を受け取り、キャッシュエントリ置換処理を開始する。【０１７１】
置換対象選択部１３６は、アドレス信号２００内に含まれるインデックス番号２０２を用いて、キャッシュ記憶データメモリ１３０〜１３３内の４つのキャッシュエントリを選択する。ここでは、キャッシュエントリ２１６ａ〜２１６ｄが選択されたものとする。【０１７２】
この４つのキャッシュエントリ２１６ａ〜２１６ｄの中から、一つのキャッシュエントリが置換対象として選択される。そのため、本実施の形態４におけるキャッシュ記憶装置１００１では、監視部１３９が、プロセッサ１１２で実行される電力制御命令を監視し、当該電力制御命令を実行するオペレーティングシステムの状態変化を参照時刻計算部１００４に通知し、参照時刻計算部１００４が、各オペレーティングシステムの実行状態を管理する。【０１７３】
これにより、スリープモードに移行するオペレーティングシステムが利用していたキャッシュエントリを最も過去に使用された状態に設定することが可能となり、また、低消費電力モードで動作しているオペレーティングシステムが利用しているキャッシュエントリをある程度過去に使用された状態に設定することが可能となる。したがって、通常動作モードのオペレーティングシステムのデータが優先的にキャッシュ記憶装置１００１内に残るように制御することができ、同時に、通常動作モードのオペレーティングシステムであっても最も過去に利用したキャッシュエントリは、低消費電力モードのオペレーティングシステムが最近アクセスしたキャッシュエントリよりも優先して置換させることが可能となる。【０１７４】
第１〜第３のオペレーティングシステム１２１，１２２，１２３のそれぞれは、個々のオペレーティングシステム上で動作しているタスク数及びタスクの状態などによって、スリープモード又は低消費電力モードに移行する場合、電力制御命令を発行する。また、第１〜第３のオペレーティングシステム１２１，１２２，１２３のそれぞれは、割込みなどの発生を受けて処理負荷が変化した場合、スリープモード又は低消費電力モードから通常動作モードに復帰する。【０１７５】
参照時刻計算部１００４ａ〜１００４ｄは、ＯＳ実行状態記憶部１００５ａ〜１００５ｄを用いて、個々のオペレーティングシステムの動作状態（実行状態）と未使用時間加算指標とを管理する。なお、本実施の形態４では、個々のキャッシュエントリ設定部１４１ａ〜１４１ｄ内に参照時刻計算部１００４ａ〜１００４ｄ及びＯＳ実行状態記憶部１００５ａ〜１００５ｄを搭載する構成としているが、キャッシュエントリ設定部１４１ａ〜１４１ｄ間で一つの参照時刻計算部１００４及び一つのＯＳ実行状態記憶部１００５を共有してもよい。これにより、データの一貫性をより効率的に保障することができる。【０１７６】
図１２では、ＯＳ実行状態記憶部１００５ａのみ、テーブル内の詳細を示している。図１２のＯＳ実行状態記憶部１００５ａが記憶するテーブルでは、３つのオペレーティングシステムが存在している。３つのオペレーティングシステムのそれぞれのオペレーティングシステム識別子は、“０”、“１”及び“２”であり、それぞれの実行状態は、通常動作モード、スリープモード及び低消費電力モードであり、それぞれの未使用時刻加算指標（Ｖａｌ）は、“０”、“４”及び“２”であると仮定している。【０１７７】
なお、図１２では、通常動作モードであるオペレーティングシステムの実行状態が、“ＲＵＮ”と表され、スリープモードであるオペレーティングシステムの実行状態が、“ＳＬＥＥＰ”と表され、低消費電力モードであるオペレーティングシステムの実行状態が、“ＳＬＯＷ”と表されている。【０１７８】
つまり、ＯＳ実行状態記憶部１００５ａ〜１００５ｄは、未使用時刻加算指標として、通常動作モードであれば“０”を保持し、低消費電力モードであれば“２”を保持し、スリープモードであれば“４”を保持している。【０１７９】
次に、参照時刻計算部１００４ａ〜１００４ｄは、選択されたキャッシュエントリ２１６ａ〜２１６ｄ内の参照時刻カウンタ２１４と、選択されたキャッシュエントリ２１６ａ〜２１６ｄ内の有効ビット２１２と、ＯＳ実行状態記憶部１００５ａ〜１００５ｄ内の未使用時刻加算指標（Ｖａｌ）とを用いて、各キャッシュエントリ２１６ａ〜２１６ｄに対応付けられた参照時刻データを生成する。【０１８０】
キャッシュエントリ２１６ａに対応付けられた参照時刻データ１００２ａは、有効ビット２１２を否定演算子２２０ａによって反転させた無効ビット２２２ａ、及び、加算器１０１０ａを用いて、各キャッシュエントリの参照時刻カウンタ２１４の値にＯＳ実行状態記憶部１００５ａに記憶されている未使用時刻加算指標（Ｖａｌ）を加えた参照カウンタビット１００３ａから構成される。同様に、キャッシュエントリ２１６ｂ〜２１６ｄに対応付けられた参照時刻データ１００２ｂ〜１００２ｄは、それぞれのキャッシュエントリの有効ビット２１２を否定演算子２２０ｂ〜２２０ｄによって反転させた無効ビット２２２ｂ〜２２２ｄ、及び、加算器１０１０ｂ〜１０１０ｄを用いて、それぞれのキャッシュエントリの参照時刻カウンタ２１４の値にＯＳ実行状態記憶部１００５ｂ〜１００５ｄに記憶されている未使用時間加算指標（Ｖａｌ）を加えた参照カウンタビット１００３ｂ〜１００３ｄから構成される。【０１８１】
置換対象選択部１３６は、これらの参照時刻データ１００２ａ〜１００２ｄを受け取って比較し、参照時刻データの数値が最も大きいキャッシュエントリを置換対象として選択し、選択したキャッシュエントリを置換対象キャッシュエントリ２３０として出力する。また、置換対象選択部１３６は、選択されたキャッシュエントリを置換することで追い出されたデータがある場合、置換対象のキャッシュエントリと同じウェイのデータをバッファ１３８に書き込み、置換前のデータをメモリ１１３へ書き戻す。【０１８２】
図１３は、参照時刻データ１００２ａの参照カウンタビット１００３ａが取り得る値を示す図である。図１３では、オペレーティングシステムの実行状態が通常動作モード（“ＲＵＮ”）、スリープモード（“ＳＬＥＥＰ”）及び低消費電力モード（“ＳＬＯＷ”）のうちのいずれであるか、及び、参照時刻カウンタ（“Ｃｎｔ”）２１４の値の変化によって、参照カウンタビット（“ＣＮＴ”）１００３ａがどのような値になるかについて示している。【０１８３】
例えば、レコード１１０３の場合、オペレーティングシステムの実行状態は低消費電力モードであり、参照時刻カウンタ２１４の値は“０”である。低消費電力モードに対応付けられている未使用時間加算指標は、“２”であるので、参照時刻カウンタ２１４の値と未使用時間加算指標とを加算することで、参照カウンタビット１００３ａの値は、“２”となる。また、レコード１１０４の場合、オペレーティングシステムの実行状態は通常動作モードであり、参照時刻カウンタ２１４の値は“３”である。通常動作モードに対応付けられている未使用時間加算指標は、“０”であるので、参照時刻カウンタ２１４の値と未使用時間加算指標とを加算することで、参照カウンタビット１００３ａの値は、“３”となる。なお、図１３に示す各値は、２進数で表している。【０１８４】
ここで、レコード１１０３とレコード１１０４とを比較すると、レコード１１０４における参照カウンタビットの値のほうが、レコード１１０４における参照カウンタビットの値よりも大きい。そのため、通常動作モード（レコード１１０４）のオペレーティングシステムが利用しているキャッシュエントリであっても、低消費電力モード（レコード１１０３）のオペレーティングシステムが利用しているキャッシュエントリよりも優先して置換対象となる場合があることが理解できる。【０１８５】
このように、ＯＳ実行状態記憶部１００５ａ〜１００５ｄは、オペレーティングシステムの実行状態と、実行状態に応じて参照時刻カウント値に加算する値を表す未使用時刻加算指標とを記憶する。また、参照時刻計算部１００４ａ〜１００４ｄは、キャッシュエントリを使用しているオペレーティングシステムの実行状態に応じた未使用時刻加算指標を、キャッシュエントリに含まれる参照時刻カウント値に加算し、参照時刻カウント値を含む参照時刻データ１００２ａ〜１００２ｄを複数のキャッシュエントリ毎に作成する。【０１８６】
置換対象選択部１３６は、参照時刻計算部１００４ａ〜１００４ｄによって作成された複数の参照時刻データ１００２ａ〜１００２ｄに含まれる複数の参照時刻カウント値のうち、値が最も大きい参照時刻カウント値に対応するキャッシュエントリを、置換対象となるキャッシュエントリとして選択する。【０１８７】
なお、スリープモードに対応付けられる未使用時刻加算指標は、低消費電力モードに対応付けられる未使用時刻加算指標に比べて大きい。また、低消費電力モードに対応付けられる未使用時刻加算指標は、通常動作モードに対応付けられる未使用時刻加算指標に比べて大きく、かつスリープモードに対応付けられる未使用時刻加算指標に比べて小さい。【０１８８】
この構成により、有効ビット２１２がＯＮでないキャッシュエントリを最優先の置換対象とし、次に、スリープモード及び低消費電力モードのオペレーティングシステムが利用しているキャッシュエントリが優先して置換対象として選択される。また、低消費電力モードのオペレーティングシステムが利用するキャッシュエントリを、通常動作モードのオペレーティングシステムが利用するキャッシュエントリに比べてある程度優先的に置換対象とすることができる。これにより、複数のオペレーティングシステムがキャッシュ記憶装置を共有するシステムにおいて、一つのオペレーティングシステムによって利用頻度が少なくなったキャッシュエントリを、別のオペレーティングシステムが優先的に利用することができ、限られたサイズのキャッシュ記憶装置を有効に活用することが可能となる。【０１８９】
以上により、有効でないキャッシュエントリを最優先で置換対象とするとともに、オペレーティングシステムの実行状態として、スリープモード及び通常動作モードの他に通常動作モードよりも低速クロックで動作する低消費電力モードを設け、スリープモード時には、当該オペレーティングシステムの利用しているキャッシュエントリを置換対象として完全に優先し、低消費電力モード時には、当該オペレーティングシステムの利用しているキャッシュエントリをある程度置換対象として優先させることが可能となる。【０１９０】
また、一つのオペレーティングシステムが通常動作モードから低消費電力モード（ここでは、低速クロックで動作するモードを意味する）に移行した場合などにおいて、低消費電力モードにおけるオペレーティングシステムは、スリープモードと異なり、低速ながらも動作する。そのため、当該低消費電力モードのオペレーティングシステムが利用していたキャッシュエントリを一律に最も過去に使用された状態に設定するのではなく、オペレーティングシステムの実行状態に応じて、置換対象とするキャッシュエントリの優先度を可変する。これにより、低消費電力モードのオペレーティングシステムが、ある程度だけ置換対象として優先されるので、キャッシュエントリを有効活用することができる。【０１９１】
また、本実施の形態４は、データが一律にキャッシュエントリから無効化される方法ではないため、デバイスなどの状態によって、スリープモード又は低消費電力動作モードに移行したオペレーティングシステムが再度通常動作モードに戻った場合に、過去に使用したキャッシュエントリを有効活用することが可能である。通常動作モードに戻った場合、キャッシュ記憶装置は、ＬＲＵアルゴリズムで置換対象を選択することになる。【０１９２】
（実施の形態５）
本発明の実施の形態２においては、複数のプロセッサのうちのいずれかのプロセッサがスリープモードに移行した場合、当該プロセッサの使用しているキャッシュエントリが置換対象として完全に優先される。しかしながら、通常動作モードのプロセッサが最も過去に利用したキャッシュエントリを置換対象としたほうが有効な場合がある。【０１９３】
例えば、プロセッサの実行状態として、スリープモード及び通常動作モードの他に通常動作モードよりも低速クロックで動作する低消費電力モードを設け、スリープモード時には、当該プロセッサの利用しているキャッシュエントリを置換対象として完全に優先し、低消費電力モード時には、当該プロセッサの利用しているキャッシュエントリをある程度置換対象として優先させる。すなわち、通常動作モードのプロセッサであっても、最も過去に利用したキャッシュエントリは、低消費電力モードのプロセッサが最近アクセスしたキャッシュエントリよりも優先して置換させることが望ましい場合にも対応可能にする。【０１９４】
図１４は、低消費電力モードを考慮した本発明の実施の形態５における計算機システムの構成を示す図である。計算機システム１２００は、複数のプロセッサがメモリ及びキャッシュ記憶装置を共有するマルチプロセッサシステムである。【０１９５】
計算機システム１２００は、内部バス１１０、複数のプロセッサ（第１のプロセッサ５０２及び第２のプロセッサ５０３）、複数のレベル１キャッシュ記憶装置（第１のレベル１キャッシュ記憶装置５０４及び第２のレベル１キャッシュ記憶装置５０５）、レベル２キャッシュ記憶装置１２０１、メモリ５０６、周辺モジュール群１１４及びステータスレジスタ１１５を備えている。内部バス１１０、複数のプロセッサ（第１のプロセッサ５０２及び第２のプロセッサ５０３）、複数のレベル１キャッシュ記憶装置（第１のレベル１キャッシュ記憶装置５０４及び第２のレベル１キャッシュ記憶装置５０５）、メモリ５０６、周辺モジュール群１１４及びステータスレジスタ１１５は、図６において説明した構成要素と同じであるため、説明を省略し、異なる構成要素であるレベル２キャッシュ記憶装置１２０１についてのみ説明する。【０１９６】
また、近年のＬＳＩの高集積化により、計算機システム１２００を構成する複数の回路を一つのシステムＬＳＩ内に搭載することも可能であるが、本実施の形態５において、回路群が単一のシステムＬＳＩ内に実装されるか、それぞれ別のシステムＬＳＩで提供されるかについての限定は行わない。なお、図１４では、ステータスレジスタ１１５は、内部バス１１０に接続しているが、第１のプロセッサ５０２及び第２のプロセッサ５０３に直接接続してもよい。【０１９７】
レベル２キャッシュ記憶装置１２０１は、第１のプロセッサ５０２及び第２のプロセッサ５０３から共有され、第１のプロセッサ５０２及び第２のプロセッサ５０３が第１のレベル１キャッシュ記憶装置５０４及び第２のレベル１キャッシュ記憶装置５０５を介して参照したデータ及び命令を一時的に格納しておくための記憶手段である。レベル２キャッシュ記憶装置１２０１は、キャッシュ記憶データメモリ５１０〜５１３と、参照時刻計算部１２０４と、プロセッサ実行状態記憶部１２０５と、置換対象選択部１３６と、アクセス対象選択部１３７と、バッファ１３８と、監視部５１９と、入出力部１４０とを備えている。以下、実施の形態２と異なる構成要素である参照時刻計算部１２０４と、プロセッサ実行状態記憶部１２０５とについて説明する。【０１９８】
参照時刻計算部１２０４は、監視部５１９からの通知を受け取り、個々のプロセッサの動作モードを、プロセッサ実行状態記憶部１２０５を用いて管理する。プロセッサ実行状態記憶部１２０５は、プロセッサを識別するプロセッサ識別子と、各プロセッサの実行状態（通常動作モード、スリープモード及び低消費電力モード）と、プロセッサの実行状態に対応した未使用時刻加算指標とをテーブル形式で保持している。【０１９９】
なお、ここでは、プロセッサ実行状態記憶部１２０５がプロセッサの動作モード及び未使用時刻加算指標をテーブル形式で保持するとしたが、他のフォーマットでプロセッサの動作モード及び未使用時刻加算指標を記憶してもよい。【０２００】
また、参照時刻計算部１２０４は、置換対象選択部１３６からの問い合わせに対し、置換対象の候補となる複数のキャッシュエントリの参照時刻データを計算して、計算した参照時刻データを置換対象選択部１３６に通知する。参照時刻計算部１２０４は、プロセッサ実行状態記憶部１２０５と、個々のキャッシュエントリに設けられたプロセッサ識別子と、参照時刻カウンタとを用いて、スリープモードのプロセッサが利用しているキャッシュエントリの参照時刻データを、最も過去に使用された値とし、低消費電力モードのプロセッサが利用しているキャッシュエントリの参照時刻データを、ある程度過去に使用された値として出力する。なお、レベル２キャッシュ記憶装置１２０１は、スリープモード及び低消費電力モードのプロセッサが存在しない場合には、通常のＬＲＵアルゴリズムで動作する。【０２０１】
以上のような構成により、スリープモードで実行しているプロセッサが利用しているキャッシュエントリ上のデータが、最も過去に使用されたデータとみなされ、また、低消費電力モードで動作しているプロセッサが利用しているキャッシュエントリ上のデータが、ある程度過去に使用されたデータとみなされる。したがって、通常動作モードのプロセッサのデータが優先的にキャッシュ記憶装置１２０１内に残るように制御することができる。これにより、プロセッサがスリープモード又は低消費電力モードに移行することで利用される頻度が少なくなったキャッシュエントリを、別のプロセッサで有効に利用することが可能となり、システム全体としての性能向上を図ることができる。【０２０２】
なお、本実施の形態５において、計算機システム１２００が共有キャッシュ制御装置の一例に相当し、メモリ５０６が主記憶部の一例に相当し、キャッシュ記憶装置１２０１がキャッシュ記憶装置の一例に相当し、監視部５１９が監視部の一例に相当し、キャッシュエントリ設定部１４１がキャッシュエントリ設定部の一例に相当し、置換対象選択部１３６が置換対象選択部の一例に相当し、プロセッサ実行状態記憶部１２０５が実行状態記憶部の一例に相当し、参照時刻計算部１２０４が参照時刻データ作成部の一例に相当する。【０２０３】
図１５は、キャッシュエントリ選択処理の結果、キャッシュミスが発生した場合のキャッシュエントリ置換処理に関するレベル２キャッシュ記憶装置１２０１の詳細な構成を示す図である。図１５において、参照時刻計算部１２０４ａ〜１２０４ｄ及びプロセッサ実行状態記憶部１２０５ａ〜１２０５ｄを除く他の構成要素は、図８又は図１２と同じ構成要素である。また、参照時刻計算部１２０４ａ〜１２０４ｄは、図１４で説明した参照時刻計算部１２０４に相当し、プロセッサ実行状態記憶部１２０５ａ〜１２０５ｄは、図１４で説明したプロセッサ実行状態記憶部１２０５に相当する。【０２０４】
以下、キャッシュエントリ内のデータを新たなデータに置換するキャッシュエントリ置換処理の詳細について図１５を用いて説明する。【０２０５】
まず、キャッシュミスなどにより、新たなデータをメモリ５０６から読み出して、レベル２キャッシュ記憶装置１２０１に格納する必要がある場合、置換対象選択部１３６は、アクセス対象選択部１３７からキャッシュミス信号４１０を受け取り、キャッシュエントリ置換処理を開始する。【０２０６】
置換対象選択部１３６は、アドレス信号２００内に含まれるインデックス番号２０２を用いて、キャッシュ記憶データメモリ５１０〜５１３内の４つのキャッシュエントリを選択する。ここでは、キャッシュエントリ２１６ａ〜２１６ｄが選択されたものとする。【０２０７】
この４つのキャッシュエントリ２１６ａ〜２１６ｄの中から、一つのキャッシュエントリが置換対象として選択される。そのため、本実施の形態５におけるキャッシュ記憶装置１２０１では、監視部５１９が、第１のプロセッサ５０２及び第２のプロセッサ５０３で実行される電力制御命令を監視し、当該電力制御命令を実行するオプロセッサの状態変化を参照時刻計算部１２０４に通知し、参照時刻計算部１２０４が、各プロセッサの実行状態を管理する。【０２０８】
これにより、スリープモードに移行するプロセッサが利用していたキャッシュエントリを最も過去に使用された状態に設定することが可能となり、また、低消費電力モードで動作しているプロセッサが利用しているキャッシュエントリをある程度過去に使用された状態に設定することが可能となる。したがって、通常動作モードのプロセッサのデータが優先的にレベル２キャッシュ記憶装置１２０１内に残るように制御することができ、同時に、通常動作モードのプロセッサであっても最も過去に利用したキャッシュエントリは、低消費電力モードのプロセッサが最近アクセスしたキャッシュエントリよりも優先して置換させることが可能となる。【０２０９】
第１のプロセッサ５０２及び第２のプロセッサ５０３のそれぞれは、対応する第１のオペレーティングシステム５２１及び第２のオペレーティングシステム５２２上で動作しているタスク数及びタスクの状態などによって、スリープモード又は低消費電力モードに移行する場合、電力制御命令を発行する。また、第１のプロセッサ５０２及び第２のプロセッサ５０３のそれぞれは、割込みなどの発生を受けて処理負荷が変化した場合、スリープモード又は低消費電力モードから通常動作モードに復帰する。【０２１０】
参照時刻計算部１２０４ａ〜１２０４ｄは、プロセッサ実行状態記憶部１２０５ａ〜１２０５ｄを用いて、個々のプロセッサの実行状態と未使用時間加算指標とを管理する。なお、本実施の形態５では、個々のキャッシュエントリ設定部１４１ａ〜１４１ｄ内に参照時刻計算部１２０４ａ〜１２０４ｄ及びプロセッサ実行状態記憶部１２０５ａ〜１２０５ｄを搭載する構成としているが、キャッシュエントリ設定部１４１ａ〜１４１ｄ間で一つの参照時刻計算部１２０４及び一つのプロセッサ実行状態記憶部１２０５を共有してもよい。これにより、データの一貫性をより効率的に保障することができる。【０２１１】
図１５では、プロセッサ実行状態記憶部１２０５ａのみ、テーブル内の詳細を示している。図１５のプロセッサ実行状態記憶部１２０５ａが記憶するテーブルでは、２つのプロセッサが存在している。２つのプロセッサのそれぞれのプロセッサ識別子は、“０”及び“１”であり、それぞれの実行状態は、通常動作モード及び低消費電力モードであり、それぞれの未使用時刻加算指標（Ｖａｌ）は、“０”及び“２”であると仮定している。また、スリープモードに対応する未使用時刻加算指標（Ｖａｌ）は、“４”とする。【０２１２】
なお、図１５では、通常動作モードであるプロセッサの実行状態が、“ＲＵＮ”と表され、低消費電力モードであるプロセッサの実行状態が、“ＳＬＯＷ”と表されている。【０２１３】
つまり、プロセッサ実行状態記憶部１２０５ａ〜１２０５ｄは、未使用時刻加算指標として、通常動作モードであれば“０”を保持し、低消費電力モードであれば“２”を保持し、スリープモードであれば“４”を保持している。【０２１４】
次に、参照時刻計算部１２０４ａ〜１２０４ｄは、選択されたキャッシュエントリ２１６ａ〜２１６ｄ内の参照時刻カウンタ２１４と、選択されたキャッシュエントリ２１６ａ〜２１６ｄ内の有効ビット２１２と、プロセッサ実行状態記憶部１２０５ａ〜１２０５ｄ内の未使用時刻加算指標（Ｖａｌ）とを用いて、各キャッシュエントリ２１６ａ〜２１６ｄに対応付けられた参照時刻データを生成する。【０２１５】
キャッシュエントリ２１６ａに対応付けられた参照時刻データ１００２ａは、有効ビット２１２を否定演算子２２０ａによって反転させた無効ビット２２２ａ、及び、加算器１０１０ａを用いて、各キャッシュエントリの参照時刻カウンタ２１４の値にプロセッサ実行状態記憶部１２０５ａに記憶されている未使用時刻加算指標（Ｖａｌ）を加えた参照カウンタビット１００３ａから構成される。同様に、キャッシュエントリ２１６ｂ〜２１６ｄに対応付けられた参照時刻データ１００２ｂ〜１００２ｄは、それぞれのキャッシュエントリの有効ビット２１２を否定演算子２２０ｂ〜２２０ｄによって反転させた無効ビット２２２ｂ〜２２２ｄ、及び、加算器１０１０ｂ〜１０１０ｄを用いて、それぞれのキャッシュエントリの参照時刻カウンタ２１４の値にプロセッサ実行状態記憶部１２０５ｂ〜１２０５ｄに記憶されている未使用時間加算指標（Ｖａｌ）を加えた参照カウンタビット１００３ｂ〜１００３ｄから構成される。【０２１６】
置換対象選択部１３６は、これらの参照時刻データ１００２ａ〜１００２ｄを受け取って比較し、参照時刻データの数値が最も大きいキャッシュエントリを置換対象として選択し、選択したキャッシュエントリを置換対象キャッシュエントリ２３０として出力する。また、置換対象選択部１３６は、選択されたキャッシュエントリを置換することで追い出されたデータがある場合、置換対象のキャッシュエントリと同じウェイのデータをバッファ１３８に書き込み、置換前のデータをメモリ５０６へ書き戻す。【０２１７】
このように、プロセッサ実行状態記憶部１２０５ａ〜１２０５ｄは、プロセッサの実行状態と、実行状態に応じて参照時刻カウント値に加算する値を表す未使用時刻加算指標とを記憶する。参照時刻計算部１２０４ａ〜１２０４ｄは、キャッシュエントリを使用しているプロセッサの実行状態に応じた未使用時刻加算指標を、キャッシュエントリに含まれる参照時刻カウント値に加算し、参照時刻カウント値を含む参照時刻データ１００２ａ〜１００２ｄを複数のキャッシュエントリ毎に作成する。【０２１８】
置換対象選択部１３６は、参照時刻計算部１２０４ａ〜１２０４ｄによって作成された複数の参照時刻データ１００２ａ〜１００２ｄに含まれる複数の参照時刻カウント値のうち、値が最も大きい参照時刻カウント値に対応するキャッシュエントリを、置換対象となるキャッシュエントリとして選択する。【０２１９】
なお、スリープモードに対応付けられる未使用時刻加算指標は、低消費電力モードに対応付けられる未使用時刻加算指標に比べて大きい。また、低消費電力モードに対応付けられる未使用時刻加算指標は、通常動作モードに対応付けられる未使用時刻加算指標に比べて大きく、かつスリープモードに対応付けられる未使用時刻加算指標に比べて小さい。【０２２０】
この構成により、有効ビット２１２がＯＮでないキャッシュエントリを最優先の置換対象とし、次に、スリープモード及び低消費電力モードのプロセッサが利用しているキャッシュエントリが優先して置換対象として選択される。また、低消費電力モードのプロセッサが利用するキャッシュエントリを、通常動作モードのプロセッサが利用するキャッシュエントリに比べてある程度優先的に置換対象とすることができる。これにより、複数のプロセッサがキャッシュ記憶装置を共有するシステムにおいて、一つのプロセッサによって利用頻度が少なくなったキャッシュエントリを、別のプロセッサが優先的に利用することができ、限られたサイズのキャッシュ記憶装置を有効に活用することが可能となる。【０２２１】
以上により、有効でないキャッシュエントリを最優先で置換対象とするとともに、プロセッサの実行状態として、スリープモード及び通常動作モードの他に通常動作モードよりも低速クロックで動作する低消費電力モードを設け、スリープモード時には、当該プロセッサの利用しているキャッシュエントリを置換対象として完全に優先し、低消費電力モード時には、当該プロセッサの利用しているキャッシュエントリをある程度置換対象として優先させることが可能となる。【０２２２】
また、一つのプロセッサが通常動作モードから低消費電力モード（ここでは、低速クロックで動作するモードを意味する）に移行した場合などにおいて、低消費電力モードにおけるプロセッサは、スリープモードと異なり、低速ながらも動作する。そのため、当該低消費電力モードのプロセッサが利用していたキャッシュエントリを一律に最も過去に使用された状態に設定するのではなく、プロセッサの実行状態に応じて、置換対象とするキャッシュエントリの優先度を可変とする。これにより、低消費電力モードのプロセッサが、ある程度置換対象として優先されるので、キャッシュエントリの有効活用することができる。【０２２３】
また、本実施の形態５は、データが一律にキャッシュエントリから無効化される方法ではないため、デバイスなどの状態によって、スリープモード又は低消費電力動作モードに移行したプロセッサが再度通常動作モードに戻った場合に、過去に使用したキャッシュエントリを有効活用することが可能である。通常動作モードに戻った場合、レベル２キャッシュ記憶装置は、ＬＲＵアルゴリズムで置換対象を選択することになる。【０２２４】
（実施の形態６）
図１６は、本発明の実施の形態６における計算機システム１３００の構成を示す図である。図１６に示す計算機システム１３００は、メモリ１１３と、周辺モジュール群１１４と集積回路１３０１とを備える。【０２２５】
集積回路１３０１は、キャッシュ記憶装置１３０２と、プロセッサ１１２とステータスレジスタ１１５とを備える。キャッシュ記憶装置１３０２は、キャッシュ記憶データメモリ１３１０〜１３１３と、キャッシュエントリ設定回路１３２１と、置換対象選択回路１３１６と、アクセス対象選択回路１３１７と、バッファ１３１８と、監視回路１３１９と、入出力回路１３２０とを備えている。キャッシュエントリ設定回路１３２１は、参照時刻計算回路１３１４と、ＯＳ実行状態記憶回路１３１５とを備える。【０２２６】
実施の形態６におけるキャッシュ記憶装置１３０２、キャッシュ記憶データメモリ１３１０〜１３１３、キャッシュエントリ設定回路１３２１、置換対象選択回路１３１６、アクセス対象選択回路１３１７、バッファ１３１８、監視回路１３１９、入出力回路１３２０、参照時刻計算回路１３１４及びＯＳ実行状態記憶回路１３１５は、それぞれ、実施の形態１におけるキャッシュ記憶装置１１１、キャッシュ記憶データメモリ１３０〜１３３、キャッシュエントリ設定部１４１、置換対象選択部１３６、アクセス対象選択部１３７、バッファ１３８、監視部１３９、入出力部１４０、参照時刻計算部１３４及びＯＳ実行状態記憶部１３５と同じ機能を有している。【０２２７】
このように、キャッシュ記憶装置１３０２と、ステータスレジスタ１１５と、プロセッサ１１２とは、１つの集積回路に搭載することができる。【０２２８】
なお、上述した具体的実施形態には以下の構成を有する発明が主に含まれている。【０２２９】
本発明の一局面に係る共有キャッシュ制御装置は、主記憶部と、複数のオペレーティングシステム又は複数のプロセッサによって共有され、かつ、前記主記憶部から読み出されたデータを格納する複数のキャッシュエントリから構成されるキャッシュ記憶装置と、前記複数のオペレーティングシステムを動作させるプロセッサ又は前記複数のプロセッサに供給される電力を制御するための電力制御命令を監視する監視部と、キャッシュミスが発生し、前記複数のキャッシュエントリの中から置換対象となるキャッシュエントリを選択する際に、前記電力制御命令に基づいて変更される前記複数のオペレーティングシステム又は前記複数のプロセッサの実行状態を用いて、前記電力制御命令を実行した前記オペレーティングシステム又は前記プロセッサが利用していたキャッシュエントリを、過去に使用された状態に設定するキャッシュエントリ設定部と、前記キャッシュエントリ設定部によって過去に使用された状態に設定された前記キャッシュエントリを、置換対象となるキャッシュエントリとして選択する置換対象選択部とを備える。【０２３０】
本発明の他の局面に係る共有キャッシュ制御方法は、複数のオペレーティングシステム又は複数のプロセッサによって共有され、かつ、主記憶部から読み出されたデータを格納する複数のキャッシュエントリから構成されるキャッシュ記憶装置にデータを記憶するキャッシュ記憶ステップと、前記複数のオペレーティングシステムを動作させるプロセッサ又は前記複数のプロセッサに供給される電力を制御するための電力制御命令を監視する監視ステップと、前記複数のキャッシュエントリの中から置換対象となるキャッシュエントリを選択する際に、前記電力制御命令に基づいて変更される前記複数のオペレーティングシステム又は前記複数のプロセッサの前記実行状態を用いて、前記電力制御命令を実行した前記オペレーティングシステム又は前記プロセッサが利用していたキャッシュエントリを、過去に使用された状態に設定するキャッシュエントリ設定ステップと、前記キャッシュエントリ設定ステップにおいて過去に使用された状態に設定された前記キャッシュエントリを、置換対象となるキャッシュエントリとして選択する置換対象選択ステップとを含む。【０２３１】
本発明の他の局面に係る集積回路は、複数のオペレーティングシステム又は複数のプロセッサによって共有され、かつ、主記憶装置から読み出されたデータを格納する複数のキャッシュエントリから構成されるキャッシュ記憶装置と、前記複数のオペレーティングシステムを動作させるプロセッサ又は前記複数のプロセッサに供給される電力を制御するための電力制御命令を監視する監視回路と、前記複数のキャッシュエントリの中から置換対象となるキャッシュエントリを選択する際に、前記電力制御命令に基づいて変更される前記複数のオペレーティングシステム又は前記複数のプロセッサの実行状態を用いて、前記電力制御命令を実行した前記オペレーティングシステム又は前記プロセッサが利用していたキャッシュエントリを、過去に使用された状態に設定するキャッシュエントリ設定回路と、前記キャッシュエントリ設定回路によって過去に使用された状態に設定された前記キャッシュエントリを、置換対象となるキャッシュエントリとして選択する置換対象選択回路とを備える。【０２３２】
これらの構成によれば、キャッシュ記憶装置は、複数のオペレーティングシステム又は複数のプロセッサによって共有され、かつ、主記憶部から読み出されたデータを格納する複数のキャッシュエントリから構成される。複数のオペレーティングシステムを動作させるプロセッサ又は複数のプロセッサに供給される電力を制御するための電力制御命令が監視される。そして、複数のキャッシュエントリの中から置換対象となるキャッシュエントリが選択される際に、電力制御命令に基づいて変更される複数のオペレーティングシステム又は複数のプロセッサの実行状態を用いて、電力制御命令を実行したオペレーティングシステム又はプロセッサが利用していたキャッシュエントリが、過去に使用された状態に設定される。その後、過去に使用された状態に設定されたキャッシュエントリが、置換対象となるキャッシュエントリとして選択される。【０２３３】
したがって、複数のオペレーティングシステム又は複数のプロセッサがキャッシュ記憶装置を共有する場合において、実行状態が変化することにより、１のオペレーティングシステム又は１のプロセッサによって利用されなくなったキャッシュ記憶装置内のキャッシュエントリを、他のオペレーティングシステム又は他のプロセッサが優先的に利用できるようになり、複数のオペレーティングシステム又は複数のプロセッサが１のキャッシュ記憶装置を有効活用できる。【０２３４】
また、上記の共有キャッシュ制御装置において、前記電力制御命令は、前記オペレーティングシステムの動作停止を指示するスリープ命令を少なくとも含み、前記実行状態は、前記オペレーティングシステムを高速クロックで動作する通常動作モードと、前記オペレーティングシステムの動作を停止するスリープモードとを少なくとも含み、前記キャッシュエントリ設定部は、前記スリープモードの前記オペレーティングシステムが利用しているキャッシュエントリを、前記通常動作モードの前記オペレーティングシステムが利用しているキャッシュエントリより過去に使用された状態に設定し、前記置換対象選択部は、前記キャッシュエントリ設定部によって最も過去に使用された状態に設定された前記キャッシュエントリを、置換対象となるキャッシュエントリとして選択することが好ましい。【０２３５】
この構成によれば、電力制御命令は、オペレーティングシステムの動作停止を指示するスリープ命令を少なくとも含み、実行状態は、オペレーティングシステムを高速クロックで動作する通常動作モードと、オペレーティングシステムの動作を停止するスリープモードとを少なくとも含む。スリープモードのオペレーティングシステムが利用しているキャッシュエントリが、通常動作モードのオペレーティングシステムが利用しているキャッシュエントリより過去に使用された状態に設定される。そして、最も過去に使用された状態に設定されたキャッシュエントリが、置換対象となるキャッシュエントリとして選択される。【０２３６】
したがって、通常動作モードのオペレーティングシステムは、スリープモードのオペレーティングシステムが使用していたキャッシュエントリを使用することが可能となり、複数のオペレーティングシステムが１のキャッシュ記憶装置を有効活用できる。【０２３７】
また、上記の共有キャッシュ制御装置において、前記キャッシュエントリは、当該キャッシュエントリを使用するオペレーティングシステムを識別するためのオペレーティングシステム識別子と、当該キャッシュエントリが参照された時刻に応じてカウントされ、参照された時刻が古くなるほど値が大きくなる参照時刻カウント値と、データとを含み、前記キャッシュエントリ設定部は、前記電力制御命令に基づいて変更される前記複数のオペレーティングシステムの実行状態と、前記実行状態に応じて予め設定される値であり、前記通常動作モードに対応する値よりも前記スリープモードに対応する値の方が大きい実行状態値とを記憶する実行状態記憶部と、前記実行状態値と、前記参照時刻カウント値とを含む参照時刻データを前記複数のキャッシュエントリ毎に作成する参照時刻データ作成部とを含み、前記置換対象選択部は、前記参照時刻データ作成部によって作成された前記複数のキャッシュエントリ毎の前記参照時刻データを比較し、前記参照時刻データに含まれる前記実行状態値が最も大きい前記参照時刻データに対応するキャッシュエントリを、置換対象となるキャッシュエントリとして選択することが好ましい。【０２３８】
この構成によれば、キャッシュエントリは、当該キャッシュエントリを使用するオペレーティングシステムを識別するためのオペレーティングシステム識別子と、当該キャッシュエントリが参照された時刻に応じてカウントされ、参照された時刻が古くなるほど値が大きくなる参照時刻カウント値と、データとを含む。実行状態記憶部は、電力制御命令に基づいて変更される複数のオペレーティングシステムの実行状態と、実行状態に応じて予め設定される値であり、通常動作モードに対応する値よりもスリープモードに対応する値の方が大きい実行状態値とを記憶している。そして、実行状態値と、参照時刻カウント値とを含む参照時刻データが複数のキャッシュエントリ毎に作成され、作成された複数のキャッシュエントリ毎の参照時刻データが比較され、参照時刻データに含まれる実行状態値が最も大きい参照時刻データに対応するキャッシュエントリが、置換対象となるキャッシュエントリとして選択される。【０２３９】
したがって、各キャッシュエントリに対応する実行状態値を比較することにより、スリープモードのオペレーティングシステムが使用しているキャッシュエントリが特定されるので、容易に置換対象となるキャッシュエントリを選択することができる。【０２４０】
また、上記の共有キャッシュ制御装置において、前記置換対象選択部は、前記参照時刻データ作成部によって作成された前記複数のキャッシュエントリ毎の前記参照時刻データを比較し、前記参照時刻データに含まれる前記実行状態値が全て同じである場合、前記参照時刻データに含まれる前記参照時刻カウント値が最も大きい前記参照時刻データに対応するキャッシュエントリを、置換対象となるキャッシュエントリとして選択することが好ましい。【０２４１】
この構成によれば、複数のキャッシュエントリ毎の参照時刻データが比較され、参照時刻データに含まれる実行状態値が全て同じである場合、参照時刻データに含まれる参照時刻カウント値が最も大きい参照時刻データに対応するキャッシュエントリが、置換対象となるキャッシュエントリとして選択される。【０２４２】
したがって、複数のキャッシュエントリを利用している各オペレーティングシステムの実行状態が同じ場合であっても、キャッシュエントリが参照された時刻に基づいて、置換対象となるキャッシュエントリが選択されるので、置換対象となるキャッシュエントリをより確実に選択することができる。【０２４３】
また、上記の共有キャッシュ制御装置において、前記電力制御命令は、前記プロセッサの動作停止を指示するスリープ命令を少なくとも含み、前記実行状態は、前記プロセッサを高速クロックで動作する通常動作モードと、前記プロセッサの動作を停止するスリープモードとを含み、前記キャッシュエントリ設定部は、前記スリープモードの前記プロセッサが利用しているキャッシュエントリを、前記通常動作モードの前記プロセッサが利用しているキャッシュエントリより過去に使用された状態に設定し、前記置換対象選択部は、前記キャッシュエントリ設定部によって最も過去に使用された状態に設定された前記キャッシュエントリを、置換対象となるキャッシュエントリとして選択することが好ましい。【０２４４】
この構成によれば、電力制御命令は、プロセッサの動作停止を指示するスリープ命令を少なくとも含み、実行状態は、プロセッサを高速クロックで動作する通常動作モードと、プロセッサの動作を停止するスリープモードとを含む。スリープモードのプロセッサが利用しているキャッシュエントリが、通常動作モードのプロセッサが利用しているキャッシュエントリより過去に使用された状態に設定される。そして、最も過去に使用された状態に設定されたキャッシュエントリが、置換対象となるキャッシュエントリとして選択される。【０２４５】
したがって、通常動作モードのプロセッサは、スリープモードのプロセッサが使用していたキャッシュエントリを使用することが可能となり、複数のプロセッサが１のキャッシュ記憶装置を有効活用できる。【０２４６】
また、上記の共有キャッシュ制御装置において、前記キャッシュエントリは、当該キャッシュエントリを使用するプロセッサを識別するためのプロセッサ識別子と、当該キャッシュエントリが参照された時刻に応じてカウントされ、参照された時刻が古くなるほど値が大きくなる参照時刻カウント値と、データとを含み、前記キャッシュエントリ設定部は、前記電力制御命令に基づいて変更される前記複数のプロセッサの実行状態と、前記実行状態に応じて予め設定される値であり、前記通常動作モードに対応する値よりも前記スリープモードに対応する値の方が大きい実行状態値とを記憶する実行状態記憶部と、前記実行状態値と、前記参照時刻カウント値とを含む参照時刻データを前記複数のキャッシュエントリ毎に作成する参照時刻データ作成部とを含み、前記置換対象選択部は、前記参照時刻データ作成部によって作成された前記複数のキャッシュエントリ毎の前記参照時刻データを比較し、前記参照時刻データに含まれる前記実行状態値が最も大きい前記参照時刻データに対応するキャッシュエントリを、置換対象となるキャッシュエントリとして選択することが好ましい。【０２４７】
この構成によれば、キャッシュエントリは、当該キャッシュエントリを使用するプロセッサを識別するためのプロセッサ識別子と、当該キャッシュエントリが参照された時刻に応じてカウントされ、参照された時刻が古くなるほど値が大きくなる参照時刻カウント値と、データとを含む。実行状態記憶部は、電力制御命令に基づいて変更される複数のプロセッサの実行状態と、実行状態に応じて予め設定される値であり、通常動作モードに対応する値よりもスリープモードに対応する値の方が大きい実行状態値とを記憶している。そして、実行状態値と、参照時刻カウント値とを含む参照時刻データが複数のキャッシュエントリ毎に作成され、作成された複数のキャッシュエントリ毎の参照時刻データが比較され、参照時刻データに含まれる実行状態値が最も大きい参照時刻データに対応するキャッシュエントリが、置換対象となるキャッシュエントリとして選択される。【０２４８】
したがって、各キャッシュエントリに対応する実行状態値を比較することにより、スリープモードのプロセッサが使用しているキャッシュエントリが特定されるので、容易に置換対象となるキャッシュエントリを選択することができる。【０２４９】
また、上記の共有キャッシュ制御装置において、前記置換対象選択部は、前記参照時刻データ作成部によって作成された前記複数のキャッシュエントリ毎の前記参照時刻データを比較し、前記参照時刻データに含まれる前記実行状態値が全て同じである場合、前記参照時刻データに含まれる前記参照時刻カウント値が最も大きい前記参照時刻データに対応するキャッシュエントリを、置換対象となるキャッシュエントリとして選択することが好ましい。【０２５０】
この構成によれば、複数のキャッシュエントリ毎の参照時刻データが比較され、参照時刻データに含まれる実行状態値が全て同じである場合、参照時刻データに含まれる参照時刻カウント値が最も大きい参照時刻データに対応するキャッシュエントリが、置換対象となるキャッシュエントリとして選択される。【０２５１】
したがって、複数のキャッシュエントリを利用している各プロセッサの実行状態が同じ場合であっても、キャッシュエントリが参照された時刻に基づいて、置換対象となるキャッシュエントリが選択されるので、置換対象となるキャッシュエントリをより確実に選択することができる。【０２５２】
また、上記の共有キャッシュ制御装置において、前記キャッシュエントリは、当該キャッシュエントリを使用するオペレーティングシステムを識別するためのオペレーティングシステム識別子と、当該キャッシュエントリが参照された時刻に応じてカウントされ、参照された時刻が古くなるほど値が大きくなる参照時刻カウント値と、データとを含み、前記キャッシュエントリ設定部は、前記オペレーティングシステムの実行状態と、前記実行状態に応じて前記参照時刻カウント値に加算する値を表す未使用時刻加算値とを記憶する実行状態記憶部と、前記キャッシュエントリを使用している前記オペレーティングシステムの実行状態に応じた前記未使用時刻加算値を、前記キャッシュエントリに含まれる前記参照時刻カウント値に加算し、前記参照時刻カウント値を含む参照時刻データを前記複数のキャッシュエントリ毎に作成する参照時刻データ作成部とを含み、前記置換対象選択部は、前記参照時刻データ作成部によって作成された複数の参照時刻データに含まれる複数の参照時刻カウント値のうち、値が最も大きい前記参照時刻カウント値に対応する前記キャッシュエントリを、置換対象となるキャッシュエントリとして選択することが好ましい。【０２５３】
この構成によれば、キャッシュエントリは、当該キャッシュエントリを使用するオペレーティングシステムを識別するためのオペレーティングシステム識別子と、当該キャッシュエントリが参照された時刻に応じてカウントされ、参照された時刻が古くなるほど値が大きくなる参照時刻カウント値と、データとを含む。また、実行状態記憶部は、オペレーティングシステムの実行状態と、実行状態に応じて参照時刻カウント値に加算する値を表す未使用時刻加算値とを記憶している。そして、キャッシュエントリを使用しているオペレーティングシステムの実行状態に応じた未使用時刻加算値が、キャッシュエントリに含まれる参照時刻カウント値に加算され、参照時刻カウント値を含む参照時刻データが複数のキャッシュエントリ毎に作成される。その後、作成された複数の参照時刻データに含まれる複数の参照時刻カウント値のうち、値が最も大きい参照時刻カウント値に対応するキャッシュエントリが、置換対象となるキャッシュエントリとして選択される。【０２５４】
したがって、キャッシュエントリを使用しているオペレーティングシステムの実行状態と、当該キャッシュエントリが参照された時刻とに応じて、置換対象となるキャッシュエントリが選択されるので、最も使用される可能性が少ないキャッシュエントリを選択することができる。【０２５５】
また、上記の共有キャッシュ制御装置において、前記キャッシュエントリは、当該キャッシュエントリを使用するプロセッサを識別するためのプロセッサ識別子と、当該キャッシュエントリが参照された時刻に応じてカウントされ、参照された時刻が古くなるほど値が大きくなる参照時刻カウント値と、データとを含み、前記キャッシュエントリ設定部は、前記プロセッサの実行状態と、前記実行状態に応じて前記参照時刻カウント値に加算する値を表す未使用時刻加算値とを記憶する実行状態記憶部と、前記キャッシュエントリを使用している前記プロセッサの実行状態に応じた前記未使用時刻加算値を、前記キャッシュエントリに含まれる前記参照時刻カウント値に加算し、前記参照時刻カウント値を含む参照時刻データを前記複数のキャッシュエントリ毎に作成する参照時刻データ作成部とを含み、前記置換対象選択部は、前記参照時刻データ作成部によって作成された複数の参照時刻データに含まれる複数の参照時刻カウント値のうち、値が最も大きい前記参照時刻カウント値に対応する前記キャッシュエントリを、置換対象となるキャッシュエントリとして選択することが好ましい。【０２５６】
この構成によれば、キャッシュエントリは、当該キャッシュエントリを使用するプロセッサを識別するためのプロセッサ識別子と、当該キャッシュエントリが参照された時刻に応じてカウントされ、参照された時刻が古くなるほど値が大きくなる参照時刻カウント値と、データとを含む。また、実行状態記憶部は、プロセッサの実行状態と、実行状態に応じて参照時刻カウント値に加算する値を表す未使用時刻加算値とを記憶している。そして、キャッシュエントリを使用しているプロセッサの実行状態に応じた未使用時刻加算値が、キャッシュエントリに含まれる参照時刻カウント値に加算され、参照時刻カウント値を含む参照時刻データが複数のキャッシュエントリ毎に作成される。その後、作成された複数の参照時刻データに含まれる複数の参照時刻カウント値のうち、値が最も大きい参照時刻カウント値に対応するキャッシュエントリが、置換対象となるキャッシュエントリとして選択される。【０２５７】
したがって、キャッシュエントリを使用しているプロセッサの実行状態と、当該キャッシュエントリが参照された時刻とに応じて、置換対象となるキャッシュエントリが選択されるので、最も使用される可能性が少ないキャッシュエントリを選択することができる。【０２５８】
また、上記の共有キャッシュ制御装置において、前記電力制御命令は、前記プロセッサに供給する電力を低減する電源制御命令及び前記プロセッサに供給するクロックを低減するクロック制御命令のうちの少なくとも一方を含み、前記実行状態は、低速クロックで動作する低消費電力モードをさらに含み、前記スリープモードに対応付けられる前記未使用時刻加算値は、前記低消費電力モードに対応付けられる前記未使用時刻加算値に比べて大きいことが好ましい。【０２５９】
この構成によれば、電力制御命令は、プロセッサに供給する電力を低減する電源制御命令及びプロセッサに供給するクロックを低減するクロック制御命令のうちの少なくとも一方を含み、実行状態は、低速クロックで動作する低消費電力モードをさらに含む。スリープモードに対応付けられる未使用時刻加算値は、低消費電力モードに対応付けられる未使用時刻加算値に比べて大きいので、スリープモードのオペレーティングシステム又はプロセッサが使用するキャッシュエントリを、低消費電力モードのオペレーティングシステム又はプロセッサが使用するキャッシュエントリよりも優先的に置換対象として選択することができる。【０２６０】
また、上記の共有キャッシュ制御装置において、前記低消費電力モードに対応付けられる前記未使用時刻加算値は、前記通常動作モードに対応付けられる前記未使用時刻加算値に比べて大きく、かつ前記スリープモードに対応付けられる前記未使用時刻加算値に比べて小さいことが好ましい。【０２６１】
この構成によれば、低消費電力モードに対応付けられる未使用時刻加算値は、通常動作モードに対応付けられる未使用時刻加算値に比べて大きく、かつスリープモードに対応付けられる未使用時刻加算値に比べて小さいので、低消費電力モードのオペレーティングシステム又はプロセッサが使用するキャッシュエントリを、通常動作モードのオペレーティングシステム又はプロセッサが使用するキャッシュエントリよりも優先的に置換対象として選択することができる。【０２６２】
また、上記の共有キャッシュ制御装置において、前記電力制御命令は、前記オペレーティングシステムの動作停止を指示するスリープ命令を少なくとも含み、前記実行状態は、前記オペレーティングシステムを高速クロックで動作する通常動作モードと、前記オペレーティングシステムの動作を停止するスリープモードとを少なくとも含み、前記キャッシュ記憶装置は、前記複数のキャッシュエントリをそれぞれ有する複数のウェイを含み、前記キャッシュエントリ設定部は、前記電力制御命令に基づいて変更される前記複数のオペレーティングシステムの実行状態と、前記複数のウェイのうちの前記オペレーティングシステムが利用するウェイを識別するためのウェイ識別子とを記憶する実行状態記憶部と、前記実行状態記憶部を参照し、前記スリープモードの前記オペレーティングシステムが利用しているウェイを置換対象となるウェイに設定するとともに、前記通常動作モードの前記オペレーティングシステムが利用しているウェイを置換対象とならないウェイに設定するロックダウン制御部とを含み、前記置換対象選択部は、前記ロックダウン制御部によって置換対象となるウェイに設定されたウェイの中から、最も過去に使用された前記キャッシュエントリを、置換対象となるキャッシュエントリとして選択することが好ましい。【０２６３】
この構成によれば、電力制御命令は、オペレーティングシステムの動作停止を指示するスリープ命令を少なくとも含み、実行状態は、オペレーティングシステムを高速クロックで動作する通常動作モードと、オペレーティングシステムの動作を停止するスリープモードとを少なくとも含み、キャッシュ記憶装置は、複数のキャッシュエントリをそれぞれ有する複数のウェイを含む。また、実行状態記憶部は、電力制御命令に基づいて変更される複数のオペレーティングシステムの実行状態と、複数のウェイのうちのオペレーティングシステムが利用するウェイを識別するためのウェイ識別子とを記憶している。そして、実行状態記憶部が参照され、スリープモードのオペレーティングシステムが利用しているウェイが、置換対象となるウェイに設定されるとともに、通常動作モードのオペレーティングシステムが利用しているウェイが、置換対象とならないウェイに設定される。その後、置換対象となるウェイに設定されたウェイの中から、最も過去に使用されたキャッシュエントリが、置換対象となるキャッシュエントリとして選択される。【０２６４】
したがって、スリープモードのオペレーティングシステムが利用しているウェイが、置換対象となるウェイに設定されるとともに、通常動作モードのオペレーティングシステムが利用しているウェイが、置換対象とならないウェイに設定されるので、通常動作モードのオペレーティングシステムは、スリープモードのオペレーティングシステムが使用しているキャッシュエントリを使用することができ、キャッシュエントリにオペレーティングシステム識別子を搭載することなく、オペレーティングシステムの実行状態に応じてキャッシュ記憶装置を有効活用できる。
【産業上の利用可能性】
【０２６５】
本発明にかかる共有キャッシュ制御装置、共有キャッシュ制御方法及び集積回路は、複数のオペレーティングシステム又は複数のプロセッサが１のキャッシュ記憶装置を有効活用でき、複数のプロセッサコア又は複数のオペレーティングシステムを搭載した携帯電話機及び情報家電機器などの組み込み向けシステムＬＳＩなどとして有用である。また、組み込み向けシステムＬＳＩ以外でも、複数のプロセッサコア又は複数のオペレーティングシステムによってキャッシュ記憶装置が共有される計算機システム等に有効である。
【図１】
2009075070.tif 000003
【図２】
2009075070.tif 000004
【図３】
2009075070.tif 000005
【図４】
2009075070.tif 000006
【図５】
2009075070.tif 000007
【図６】
2009075070.tif 000008
【図７】
2009075070.tif 000009
【図８】
2009075070.tif 000010
【図９】
2009075070.tif 000011
【図１０】
2009075070.tif 000012
【図１１】
2009075070.tif 000013
【図１２】
2009075070.tif 000014
【図１３】
2009075070.tif 000015
【図１４】
2009075070.tif 000016
【図１５】
2009075070.tif 000017
【図１６】
2009075070.tif 000018
【手続補正書】
【提出日】平成21年8月21日(2009.8.21)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
主記憶部と、
複数のオペレーティングシステム又は複数のプロセッサによって共有され、かつ、前記主記憶部から読み出されたデータを格納する複数のキャッシュエントリから構成されるキャッシュ記憶装置と、
前記複数のオペレーティングシステムを動作させるプロセッサ又は前記複数のプロセッサに供給される電力を制御するための電力制御命令を監視する監視部と、
前記複数のキャッシュエントリの中から置換対象となるキャッシュエントリを選択する際に、前記電力制御命令に基づいて変更される前記複数のオペレーティングシステム又は前記複数のプロセッサの実行状態を用いて、前記電力制御命令を実行した前記オペレーティングシステム又は前記プロセッサが利用していたキャッシュエントリを、過去に使用された状態に設定するキャッシュエントリ設定部と、
前記キャッシュエントリ設定部によって過去に使用された状態に設定された前記キャッシュエントリを、置換対象となるキャッシュエントリとして選択する置換対象選択部とを備えることを特徴とする共有キャッシュ制御装置。
【請求項２】
前記電力制御命令は、前記オペレーティングシステムの動作停止を指示するスリープ命令を少なくとも含み、
前記実行状態は、前記オペレーティングシステムを高速クロックで動作する通常動作モードと、前記オペレーティングシステムの動作を停止するスリープモードとを少なくとも含み、
前記キャッシュエントリ設定部は、前記スリープモードの前記オペレーティングシステムが利用しているキャッシュエントリを、前記通常動作モードの前記オペレーティングシステムが利用しているキャッシュエントリより過去に使用された状態に設定し、
前記置換対象選択部は、前記キャッシュエントリ設定部によって最も過去に使用された状態に設定された前記キャッシュエントリを、置換対象となるキャッシュエントリとして選択することを特徴とする請求項１記載の共有キャッシュ制御装置。
【請求項３】
前記キャッシュエントリは、当該キャッシュエントリを使用するオペレーティングシステムを識別するためのオペレーティングシステム識別子と、当該キャッシュエントリが参照された時刻に応じてカウントされ、参照された時刻が古くなるほど値が大きくなる参照時刻カウント値と、データとを含み、
前記キャッシュエントリ設定部は、前記電力制御命令に基づいて変更される前記複数のオペレーティングシステムの実行状態と、前記実行状態に応じて予め設定される値であり、前記通常動作モードに対応する値よりも前記スリープモードに対応する値の方が大きい実行状態値とを記憶する実行状態記憶部と、前記実行状態値と、前記参照時刻カウント値とを含む参照時刻データを前記複数のキャッシュエントリ毎に作成する参照時刻データ作成部とを含み、
前記置換対象選択部は、前記参照時刻データ作成部によって作成された前記複数のキャッシュエントリ毎の前記参照時刻データを比較し、前記参照時刻データに含まれる前記実行状態値が最も大きい前記参照時刻データに対応するキャッシュエントリを、置換対象となるキャッシュエントリとして選択することを特徴とする請求項２記載の共有キャッシュ制御装置。
【請求項４】
前記置換対象選択部は、前記参照時刻データ作成部によって作成された前記複数のキャッシュエントリ毎の前記参照時刻データを比較し、前記参照時刻データに含まれる前記実行状態値が全て同じである場合、前記参照時刻データに含まれる前記参照時刻カウント値が最も大きい前記参照時刻データに対応するキャッシュエントリを、置換対象となるキャッシュエントリとして選択することを特徴とする請求項３記載の共有キャッシュ制御装置。
【請求項５】
前記電力制御命令は、前記プロセッサの動作停止を指示するスリープ命令を少なくとも含み、
前記実行状態は、前記プロセッサを高速クロックで動作する通常動作モードと、前記プロセッサの動作を停止するスリープモードとを含み、
前記キャッシュエントリ設定部は、前記スリープモードの前記プロセッサが利用しているキャッシュエントリを、前記通常動作モードの前記プロセッサが利用しているキャッシュエントリより過去に使用された状態に設定し、
前記置換対象選択部は、前記キャッシュエントリ設定部によって最も過去に使用された状態に設定された前記キャッシュエントリを、置換対象となるキャッシュエントリとして選択することを特徴とする請求項１記載の共有キャッシュ制御装置。
【請求項６】
前記キャッシュエントリは、当該キャッシュエントリを使用するプロセッサを識別するためのプロセッサ識別子と、当該キャッシュエントリが参照された時刻に応じてカウントされ、参照された時刻が古くなるほど値が大きくなる参照時刻カウント値と、データとを含み、
前記キャッシュエントリ設定部は、前記電力制御命令に基づいて変更される前記複数のプロセッサの実行状態と、前記実行状態に応じて予め設定される値であり、前記通常動作モードに対応する値よりも前記スリープモードに対応する値の方が大きい実行状態値とを記憶する実行状態記憶部と、前記実行状態値と、前記参照時刻カウント値とを含む参照時刻データを前記複数のキャッシュエントリ毎に作成する参照時刻データ作成部とを含み、
前記置換対象選択部は、前記参照時刻データ作成部によって作成された前記複数のキャッシュエントリ毎の前記参照時刻データを比較し、前記参照時刻データに含まれる前記実行状態値が最も大きい前記参照時刻データに対応するキャッシュエントリを、置換対象となるキャッシュエントリとして選択することを特徴とする請求項５記載の共有キャッシュ制御装置。
【請求項７】
前記置換対象選択部は、前記参照時刻データ作成部によって作成された前記複数のキャッシュエントリ毎の前記参照時刻データを比較し、前記参照時刻データに含まれる前記実行状態値が全て同じである場合、前記参照時刻データに含まれる前記参照時刻カウント値が最も大きい前記参照時刻データに対応するキャッシュエントリを、置換対象となるキャッシュエントリとして選択することを特徴とする請求項６記載の共有キャッシュ制御装置。
【請求項８】
前記キャッシュエントリは、当該キャッシュエントリを使用するオペレーティングシステムを識別するためのオペレーティングシステム識別子と、当該キャッシュエントリが参照された時刻に応じてカウントされ、参照された時刻が古くなるほど値が大きくなる参照時刻カウント値と、データとを含み、
前記キャッシュエントリ設定部は、前記オペレーティングシステムの実行状態と、前記実行状態に応じて前記参照時刻カウント値に加算する値を表す未使用時刻加算値とを記憶する実行状態記憶部と、前記キャッシュエントリを使用している前記オペレーティングシステムの実行状態に応じた前記未使用時刻加算値を、前記キャッシュエントリに含まれる前記参照時刻カウント値に加算し、前記参照時刻カウント値を含む参照時刻データを前記複数のキャッシュエントリ毎に作成する参照時刻データ作成部とを含み、
前記置換対象選択部は、前記参照時刻データ作成部によって作成された複数の参照時刻データに含まれる複数の参照時刻カウント値のうち、値が最も大きい前記参照時刻カウント値に対応する前記キャッシュエントリを、置換対象となるキャッシュエントリとして選択することを特徴とする請求項２記載の共有キャッシュ制御装置。
【請求項９】
前記キャッシュエントリは、当該キャッシュエントリを使用するプロセッサを識別するためのプロセッサ識別子と、当該キャッシュエントリが参照された時刻に応じてカウントされ、参照された時刻が古くなるほど値が大きくなる参照時刻カウント値と、データとを含み、
前記キャッシュエントリ設定部は、前記プロセッサの実行状態と、前記実行状態に応じて前記参照時刻カウント値に加算する値を表す未使用時刻加算値とを記憶する実行状態記憶部と、前記キャッシュエントリを使用している前記プロセッサの実行状態に応じた前記未使用時刻加算値を、前記キャッシュエントリに含まれる前記参照時刻カウント値に加算し、前記参照時刻カウント値を含む参照時刻データを前記複数のキャッシュエントリ毎に作成する参照時刻データ作成部とを含み、
前記置換対象選択部は、前記参照時刻データ作成部によって作成された複数の参照時刻データに含まれる複数の参照時刻カウント値のうち、値が最も大きい前記参照時刻カウント値に対応する前記キャッシュエントリを、置換対象となるキャッシュエントリとして選択することを特徴とする請求項５記載の共有キャッシュ制御装置。
【請求項１０】
前記電力制御命令は、前記プロセッサに供給する電力を低減する電源制御命令及び前記プロセッサに供給するクロックを低減するクロック制御命令のうちの少なくとも一方を含み、
前記実行状態は、低速クロックで動作する低消費電力モードをさらに含み、
前記スリープモードに対応付けられる前記未使用時刻加算値は、前記低消費電力モードに対応付けられる前記未使用時刻加算値に比べて大きいことを特徴とする請求項８又は９記載の共有キャッシュ制御装置。
【請求項１１】
前記低消費電力モードに対応付けられる前記未使用時刻加算値は、前記通常動作モードに対応付けられる前記未使用時刻加算値に比べて大きく、かつ前記スリープモードに対応付けられる前記未使用時刻加算値に比べて小さいことを特徴とする請求項１０記載の共有キャッシュ制御装置。
【請求項１２】
前記電力制御命令は、前記オペレーティングシステムの動作停止を指示するスリープ命令を少なくとも含み、
前記実行状態は、前記オペレーティングシステムを高速クロックで動作する通常動作モードと、前記オペレーティングシステムの動作を停止するスリープモードとを少なくとも含み、
前記キャッシュ記憶装置は、前記複数のキャッシュエントリをそれぞれ有する複数のウェイを含み、
前記キャッシュエントリ設定部は、前記電力制御命令に基づいて変更される前記複数のオペレーティングシステムの実行状態と、前記複数のウェイのうちの前記オペレーティングシステムが利用するウェイを識別するためのウェイ識別子とを記憶する実行状態記憶部と、前記実行状態記憶部を参照し、前記スリープモードの前記オペレーティングシステムが利用しているウェイを置換対象となるウェイに設定するとともに、前記通常動作モードの前記オペレーティングシステムが利用しているウェイを置換対象とならないウェイに設定するロックダウン制御部とを含み、
前記置換対象選択部は、前記ロックダウン制御部によって置換対象となるウェイに設定されたウェイの中から、最も過去に使用された前記キャッシュエントリを、置換対象となるキャッシュエントリとして選択することを特徴とする請求項１記載の共有キャッシュ制御装置。
【請求項１３】
複数のオペレーティングシステム又は複数のプロセッサによって共有され、かつ、主記憶部から読み出されたデータを格納する複数のキャッシュエントリから構成されるキャッシュ記憶装置にデータを記憶するキャッシュ記憶ステップと、
前記複数のオペレーティングシステムを動作させるプロセッサ又は前記複数のプロセッサに供給される電力を制御するための電力制御命令を監視する監視ステップと、
前記複数のキャッシュエントリの中から置換対象となるキャッシュエントリを選択する際に、前記電力制御命令に基づいて変更される前記複数のオペレーティングシステム又は前記複数のプロセッサの前記実行状態を用いて、前記電力制御命令を実行した前記オペレーティングシステム又は前記プロセッサが利用していたキャッシュエントリを、過去に使用された状態に設定するキャッシュエントリ設定ステップと、
前記キャッシュエントリ設定ステップにおいて過去に使用された状態に設定された前記キャッシュエントリを、置換対象となるキャッシュエントリとして選択する置換対象選択ステップとを含むことを特徴とする共有キャッシュ制御方法。
【請求項１４】
複数のオペレーティングシステム又は複数のプロセッサによって共有され、かつ、主記憶装置から読み出されたデータを格納する複数のキャッシュエントリから構成されるキャッシュ記憶装置と、
前記複数のオペレーティングシステムを動作させるプロセッサ又は前記複数のプロセッサに供給される電力を制御するための電力制御命令を監視する監視回路と、
前記複数のキャッシュエントリの中から置換対象となるキャッシュエントリを選択する際に、前記電力制御命令に基づいて変更される前記複数のオペレーティングシステム又は前記複数のプロセッサの実行状態を用いて、前記電力制御命令を実行した前記オペレーティングシステム又は前記プロセッサが利用していたキャッシュエントリを、過去に使用された状態に設定するキャッシュエントリ設定回路と、
前記キャッシュエントリ設定回路によって過去に使用された状態に設定された前記キャッシュエントリを、置換対象となるキャッシュエントリとして選択する置換対象選択回路とを備えることを特徴とする集積回路。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のオペレーティングシステム又は複数のプロセッサが共有するキャッシュ記憶装置のキャッシュエントリを有効活用するための共有キャッシュ制御装置、共有キャッシュ制御方法及び集積回路に関するものである。
【背景技術】
【０００２】
近年のシステムＬＳＩの技術潮流として、複数のプロセッサコアを搭載したマルチコアアーキテクチャが盛んになっている。特に、組込み向けシステムＬＳＩにおいては、コスト及び消費電力などの観点から、超高速プロセッサコアを１個実装するよりも、中規模程度以下のプロセッサコアを複数個搭載したほうが有利な場合がある。このような組込み向けシステムＬＳＩでも、近年、階層型キャッシュ記憶装置が導入されつつある。しかしながら、個々のプロセッサコアに搭載されるキャッシュ記憶装置間のデータコヒーレンシ（一貫性）を保つ手段は非常に煩雑である。このため、組込み向けシステムＬＳＩでは、１次レベルキャッシュ記憶装置をプロセッサ毎に実装する場合でも、２次レベルキャッシュ記憶装置は複数のプロセッサ間で共有させることが多い。
【０００３】
特に、携帯電話及び携帯端末などに代表されるモバイル型組込み計算機システムの高性能化は著しく、前述したように、組込み向けシステムＬＳＩにおいても、プロセッサコアを複数個搭載したマルチコアアーキテクチャや、高性能プロセッサで複数のオペレーティングシステムを動作させる仮想計算機環境が整ってきている。
【０００４】
また、プロセッサコア自体の高性能化に伴い、一つのプロセッサ上で複数のオペレーティングシステムを動作させる仮想計算機システムも数多く用いられている。仮想計算機システムにおいては、上述の階層型キャッシュ記憶装置の導入によらず、一つのキャッシュ記憶装置が複数のオペレーティングシステムによって共有されることになる。
【０００５】
このように、キャッシュ記憶装置を共有する計算機システムにおいては、個々のオペレーティングシステム、又は個々のプロセッサに搭載されるオペレーティングシステムのデータが、キャッシュ記憶装置から、別のオペレーティングシステム、又は別のプロセッサに搭載されるオペレーティングシステムのデータを追い出してしまう可能性があった。
【０００６】
この課題を解決する方法として、キャッシュ記憶装置を任意のサイズの領域に分割して、個々のオペレーティングシステムに割り当てる方法が、例えば、特許文献１に開示されている。これにより、個々のオペレーティングシステム（プログラム）が、キャッシュ記憶装置から、別のオペレーティングシステムのデータを追い出すことなく、複数のオペレーティングシステムが１つのキャッシュ記憶装置を有効に活用することができる。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００４−１７８５７１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、前記従来の技術では、予め個々のオペレーティングシステムに対して、利用可能なキャッシュ記憶装置の領域を割り当てておく必要がある。そのため、ある一つのオペレーティングシステムがスリープ状態などに移行したとしても、当該オペレーティングシステムが利用していたキャッシュ記憶装置内の領域を、別のオペレーティングシステムが有効に活用することができないという課題を有している。つまり、低消費電力モードやスリープモードなどのオペレーティングシステムの実行状態によっては、割り当てた領域が利用されず、無駄になることがある。
【０００９】
本発明は、上記の問題を解決するためになされたもので、複数のオペレーティングシステム又は複数のプロセッサが１のキャッシュ記憶装置を有効活用できる共有キャッシュ制御装置、共有キャッシュ制御方法及び集積回路を提供することを目的とする。
【課題を解決するための手段】
【００１０】
本発明の一局面に係る共有キャッシュ制御装置は、主記憶部と、複数のオペレーティングシステム又は複数のプロセッサによって共有され、かつ、前記主記憶部から読み出されたデータを格納する複数のキャッシュエントリから構成されるキャッシュ記憶装置と、前記複数のオペレーティングシステムを動作させるプロセッサ又は前記複数のプロセッサに供給される電力を制御するための電力制御命令を監視する監視部と、前記複数のキャッシュエントリの中から置換対象となるキャッシュエントリを選択する際に、前記電力制御命令に基づいて変更される前記複数のオペレーティングシステム又は前記複数のプロセッサの実行状態を用いて、前記電力制御命令を実行した前記オペレーティングシステム又は前記プロセッサが利用していたキャッシュエントリを、過去に使用された状態に設定するキャッシュエントリ設定部と、前記キャッシュエントリ設定部によって過去に使用された状態に設定された前記キャッシュエントリを、置換対象となるキャッシュエントリとして選択する置換対象選択部とを備える。
【００１１】
本発明の他の局面に係る共有キャッシュ制御方法は、複数のオペレーティングシステム又は複数のプロセッサによって共有され、かつ、主記憶部から読み出されたデータを格納する複数のキャッシュエントリから構成されるキャッシュ記憶装置にデータを記憶するキャッシュ記憶ステップと、前記複数のオペレーティングシステムを動作させるプロセッサ又は前記複数のプロセッサに供給される電力を制御するための電力制御命令を監視する監視ステップと、前記複数のキャッシュエントリの中から置換対象となるキャッシュエントリを選択する際に、前記電力制御命令に基づいて変更される前記複数のオペレーティングシステム又は前記複数のプロセッサの前記実行状態を用いて、前記電力制御命令を実行した前記オペレーティングシステム又は前記プロセッサが利用していたキャッシュエントリを、過去に使用された状態に設定するキャッシュエントリ設定ステップと、前記キャッシュエントリ設定ステップにおいて過去に使用された状態に設定された前記キャッシュエントリを、置換対象となるキャッシュエントリとして選択する置換対象選択ステップとを含む。
【００１２】
本発明の他の局面に係る集積回路は、複数のオペレーティングシステム又は複数のプロセッサによって共有され、かつ、主記憶装置から読み出されたデータを格納する複数のキャッシュエントリから構成されるキャッシュ記憶装置と、前記複数のオペレーティングシステムを動作させるプロセッサ又は前記複数のプロセッサに供給される電力を制御するための電力制御命令を監視する監視回路と、前記複数のキャッシュエントリの中から置換対象となるキャッシュエントリを選択する際に、前記電力制御命令に基づいて変更される前記複数のオペレーティングシステム又は前記複数のプロセッサの実行状態を用いて、前記電力制御命令を実行した前記オペレーティングシステム又は前記プロセッサが利用していたキャッシュエントリを、過去に使用された状態に設定するキャッシュエントリ設定回路と、前記キャッシュエントリ設定回路によって過去に使用された状態に設定された前記キャッシュエントリを、置換対象となるキャッシュエントリとして選択する置換対象選択回路とを備える。
【００１３】
これらの構成によれば、キャッシュ記憶装置は、複数のオペレーティングシステム又は複数のプロセッサによって共有され、かつ、主記憶部から読み出されたデータを格納する複数のキャッシュエントリから構成される。複数のオペレーティングシステムを動作させるプロセッサ又は複数のプロセッサに供給される電力を制御するための電力制御命令が監視される。そして、複数のキャッシュエントリの中から置換対象となるキャッシュエントリが選択される際に、電力制御命令に基づいて変更される複数のオペレーティングシステム又は複数のプロセッサの実行状態を用いて、電力制御命令を実行したオペレーティングシステム又はプロセッサが利用していたキャッシュエントリが、過去に使用された状態に設定される。その後、過去に使用された状態に設定されたキャッシュエントリが、置換対象となるキャッシュエントリとして選択される。
【発明の効果】
【００１４】
本発明によれば、複数のオペレーティングシステム又は複数のプロセッサがキャッシュ記憶装置を共有する場合において、実行状態が変化することにより、１のオペレーティングシステム又は１のプロセッサによって利用されなくなったキャッシュ記憶装置内のキャッシュエントリを、他のオペレーティングシステム又は他のプロセッサが優先的に利用できるようになり、複数のオペレーティングシステム又は複数のプロセッサが１のキャッシュ記憶装置を有効活用できる。
【００１５】
本発明の目的、特徴及び利点は、以下の詳細な説明と添付図面とによって、より明白となる。
【図面の簡単な説明】
【００１６】
【図１】本発明の実施の形態１における計算機システムの構成を示す図である。
【図２】４ウェイのセットアソシアティブ方式のキャッシュ記憶装置について説明するための図である。
【図３】本発明の実施の形態１におけるキャッシュエントリ選択処理に関するキャッシュ記憶装置の詳細な構成を示す図である。
【図４】本発明の実施の形態１におけるキャッシュエントリ置換処理に関するキャッシュ記憶装置の詳細な構成を示す図である。
【図５】本発明の実施の形態１における参照時刻データが取り得る値を示す図である。
【図６】本発明の実施の形態２における計算機システムの構成を示す図である。
【図７】本発明の実施の形態２におけるキャッシュエントリ選択処理に関するレベル２キャッシュ記憶装置の詳細な構成を示す図である。
【図８】本発明の実施の形態２におけるキャッシュエントリ置換処理に関するレベル２キャッシュ記憶装置の詳細な構成を示す図である。
【図９】本発明の実施の形態３における計算機システムの構成を示す図である。
【図１０】図９に示すロックダウン制御部の動作を説明するためのフローチャートである。
【図１１】本発明の実施の形態４における計算機システムの構成を示す図である。
【図１２】本発明の実施の形態４におけるキャッシュエントリ置換処理に関するキャッシュ記憶装置の詳細な構成を示す図である。
【図１３】本発明の実施の形態４における参照時刻データの参照カウンタビットが取り得る値を示す図である。
【図１４】本発明の実施の形態５における計算機システムの構成を示す図である。
【図１５】本発明の実施の形態５におけるキャッシュエントリ置換処理に関するレベル２キャッシュ記憶装置の詳細な構成を示す図である。
【図１６】本発明の実施の形態６における計算機システムの構成を示す図である。
【発明を実施するための形態】
【００１７】
以下、本発明の実施の形態について、図面を参照しながら説明する。尚、以下の実施の形態は、本発明を具体化した一例であって、本発明の技術的範囲を限定する性格のものではない。
【００１８】
（実施の形態１）
図１は、本発明の実施の形態１における計算機システムの構成を示す図である。計算機システム１００は、一つのプロセッサ上で複数のオペレーティングシステムを動作させる仮想計算機システムである。計算機システム１００は、内部バス１１０、キャッシュ記憶装置１１１、プロセッサ１１２、メモリ１１３、周辺モジュール群１１４及びステータスレジスタ１１５を備えている。
【００１９】
キャッシュ記憶装置１１１、メモリ１１３、周辺モジュール群１１４及びステータスレジスタ１１５は、それぞれ内部バス１１０に接続されている。近年のＬＳＩの高集積化により、計算機システム１００を構成する複数の回路を一つのシステムＬＳＩ内に搭載することも可能であるが、本実施の形態１において、回路群が単一のシステムＬＳＩ内に実装されるか、それぞれ別のシステムＬＳＩで提供されるかについての限定は行わない。なお、図１では、ステータスレジスタ１１５は、内部バス１１０に接続しているが、プロセッサ１１２に直接接続してもよい。
【００２０】
プロセッサ１１２は、メモリ１１３に格納されているプログラム（命令コード）を読み出して実行する。また、プロセッサ１１２は、プログラムの実行時には、メモリ１１３上のデータや、周辺モジュール群１１４からの入出力データを参照して動作する。また、プロセッサ１１２は、ステータスレジスタ１１５が保持している動作中の状態パラメータの値を用いて制御を行う。
【００２１】
メモリ１１３は、第１〜第ｎのタスク１２４〜１２９と、第１〜第３のオペレーティングシステム１２１，１２２，１２３と、ハイパバイザ１２０とを備えている。
【００２２】
第１〜第ｎのタスク１２４〜１２９は、それぞれ計算機システム１００上で動作する単一又は複数の命令コードを含む実行単位であり、例えば、プロセッサ１１２により実行されるアプリケーションプログラムである。
【００２３】
第１〜第３のオペレーティングシステム１２１，１２２，１２３は、計算機システム１００で動作するソフトウェア全体を制御するオペレーティングシステムであり、ここでは、メモリ１１３は、３つのオペレーティングシステム１２１，１２２，１２３を備える。
【００２４】
ハイパバイザ１２０は、プロセッサ１１２上で動作し、第１〜第３のオペレーティングシステム１２１，１２２，１２３に対して、それぞれ、あたかも単一のオペレーティングシステムが動作しているかのような環境、すなわち、仮想計算機環境を提供するためのエミュレーション手段である。つまり、一つのプロセッサ上に一つのオペレーティングシステムが存在して、一つのオペレーティングシステムが当該プロセッサの複数のハードウェア資源を管理するのではなく、ハイパバイザ１２０によって、複数のハードウェア資源を分割し、個々のオペレーティングシステムに割り当てることができる。なお、割り当て方法は、ハードウェア資源の種類によって、固定的に割り振る方法、又は時分割で割り当てる方法などが可能である。
【００２５】
本実施の形態１の計算機システムの一例として、図１では、第１及び第２のタスク１２４，１２５は、第１のオペレーティングシステム１２１上で動作し、第３及び第４のタスク１２６，１２７は、第２のオペレーティングシステム１２２上で動作し、第５〜第ｎのタスク１２８，１２９は、第３のオペレーティングシステム１２３上で動作するようにコンパイルされているものとする。これにより、第１のオペレーティングシステム１２１が、第１及び第２のタスク１２４，１２５の実行状態を管理し、第２のオペレーティングシステム１２２が、第３及び第４のタスク１２６，１２７の実行状態を管理し、第３のオペレーティングシステム１２３が、第５〜第ｎのタスク１２８，１２９の実行状態を管理する。
【００２６】
なお、ここでは、第１のオペレーティングシステム１２１と第２のオペレーティングシステム１２２と第３のオペレーティングシステム１２３とは、異なったオペレーティングシステムとしているが、同じオペレーティングシステムでもよい。なお、タスク数、オペレーティングシステム数、及び、タスクとオペレーティングシステムとの関係は、図１で示した例に一致しなくてもよい。例えば、動作するオペレーティングシステムの数を変更しても構わない。
【００２７】
キャッシュ記憶装置１１１は、セットアソシアティブ方式のキャッシュ記憶装置であり、複数のウェイに分割されたキャッシュ記憶データメモリを備える。図１では、４つのウェイに分割されたキャッシュ記憶データメモリ１３０〜１３３が存在しているが、４ウェイ未満又は４ウェイを越えて搭載することも可能である。セットアソシアティブ方式のキャッシュ記憶装置では、一つのアドレスに対して、選択可能なキャッシュエントリがウェイ数に相当する数だけ存在する。
【００２８】
キャッシュ記憶データメモリ１３０〜１３３は、それぞれ、メモリ１１３から読み出されたデータを格納する複数のキャッシュエントリから構成される。
【００２９】
図２は、４ウェイのセットアソシアティブ方式のキャッシュ記憶装置について説明するための図である。メモリ１１３上のデータの位置を示すアドレス信号２００は、上位アドレスタグ２０１とインデックス番号２０２とを備えており、アドレス信号２００によって、メモリ１１３上のデータが、タグの個数分のグループに分けられる。また、このメモリ１１３上の一つのグループのデータは、キャッシュ記憶装置の一つのウェイに格納される。つまり、ここでは、４個のウェイが存在することから、４個のグループのデータが、同時にキャッシュ記憶装置に格納される。
【００３０】
図３及び図４にて後述するが、通常、ウェイ数が多い場合には、並列動作する比較器が多数存在することになり、消費電力的に不利となる。一方、ウェイ数が少ない場合には、一つのアドレス上のデータを保存できる箇所が少なくなり、スラッシング（複数のアドレスに格納されているデータが相互にキャッシュエントリから相手を追い出し合うこと）と呼ばれる現象が発生し、性能劣化を引き起こすことになる。
【００３１】
また、キャッシュミスが発生して、あるアドレスのデータをキャッシュ記憶装置上に格納する場合、いずれか一つのキャッシュエントリを選択し、データを置換する必要がある。キャッシュミスを最も低減させる置換アルゴリズムとして、最近にアクセスされたデータは再利用される確率が高く、一番長くアクセスされていないデータは再利用される確率が低いと仮定するＬＲＵ（Ｌｅａｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄ）アルゴリズムがある。本実施の形態１では、キャッシュ記憶装置１１１は、ＬＲＵアルゴリズムでキャッシュエントリの置換を行う。また、個々のキャッシュエントリ内には、いずれのオペレーティングシステムが当該キャッシュエントリを使用しているかを示すオペレーティングシステム識別子を搭載する。なお、オペレーティングシステム識別子については図３において説明する。
【００３２】
キャッシュ記憶装置１１１は、前述したキャッシュ記憶データメモリ１３０〜１３３と、置換対象選択部１３６と、アクセス対象選択部１３７と、バッファ１３８と、監視部１３９と、入出力部１４０と、キャッシュエントリ設定部１４１とを備えている。
【００３３】
入出力部１４０は、プロセッサ１１２からのデータ読み出し命令やデータ書き込み命令など、メモリ１１３や周辺モジュール群１１４上のデータに対するアクセス命令の入力や、アクセス命令に対するプロセッサ１１２やメモリ１１３や周辺モジュール群１１４へのデータの出力を行う。
【００３４】
監視部１３９は、ステータスレジスタ１１５をチェックすることで、プロセッサ１１２で実行される電力制御命令を監視し、当該電力制御命令を実行するオペレーティングシステムの状態変化を参照時刻計算部１３４に通知する。監視部１３９は、複数のオペレーティングシステムを動作させるプロセッサ１１２に供給される電力を制御するための電力制御命令を監視する。電力制御命令は、オペレーティングシステムの動作停止を指示するスリープ命令、プロセッサ１１２に供給する電力を低減する電源制御命令及びプロセッサ１１２に供給するクロックを低減するクロック制御命令を含む。本実施の形態１では、電力制御命令は、スリープ命令を少なくとも含む。
【００３５】
なお、第１〜第３のオペレーティングシステム１２１，１２２，１２３は、それぞれ、個々のオペレーティングシステム上で動作しているタスク数及びタスクの状態などによって、スリープモードに移行する場合、電力制御命令を発行し、プロセッサ１１２は、発行された電力制御命令を実行する。また、プロセッサ１１２は、割込みなどの発生を受けて処理負荷が変化した場合、スリープモードから通常動作モードに復帰する処理を実行する。
【００３６】
キャッシュエントリ設定部１４１は、キャッシュミスが発生し、複数のキャッシュエントリの中から置換対象となるキャッシュエントリを選択する際に、電力制御命令に基づいて変更される複数のオペレーティングシステムの実行状態を用いて、電力制御命令を実行したオペレーティングシステムが利用していたキャッシュエントリを、過去に使用された状態に設定する。本実施の形態１において、実行状態は、オペレーティングシステムを高速クロックで動作する通常動作モードと、オペレーティングシステムの動作を停止するスリープモードとを少なくとも含む。キャッシュエントリ設定部１４１は、スリープモードのオペレーティングシステムが利用しているキャッシュエントリを、通常動作モードのオペレーティングシステムが利用しているキャッシュエントリより過去に使用された状態に設定する。
【００３７】
キャッシュエントリ設定部１４１は、参照時刻計算部１３４と、ＯＳ実行状態記憶部１３５とを備える。
【００３８】
参照時刻計算部１３４は、監視部１３９からの通知を受け取り、電力制御命令を実行するオペレーティングシステムの動作モードを、ＯＳ実行状態記憶部１３５を用いて管理する。ＯＳ実行状態記憶部１３５は、オペレーティングシステムを識別するオペレーティングシステム識別子と、各オペレーティングシステムの実行状態（通常動作モード又はスリープモード）とをテーブル形式で保持している。
【００３９】
なお、ここでは、ＯＳ実行状態記憶部１３５がオペレーティングシステムの動作モードをテーブル形式で保持するとしたが、他のフォーマットでオペレーティングシステムの動作モードを記憶してもよい。
【００４０】
また、参照時刻計算部１３４は、置換対象選択部１３６からの問い合わせに対し、置換対象の候補となる複数のキャッシュエントリの参照時刻データを計算して、計算した参照時刻データを置換対象選択部１３６に通知する。参照時刻データは、置換対象となるキャッシュエントリを選択するために用いられるデータである。なお、参照時刻データの詳細については後述する。
【００４１】
参照時刻計算部１３４は、ＯＳ実行状態記憶部１３５と、個々のキャッシュエントリに設けられたオペレーティングシステム識別子と、後述する参照時刻カウンタとを用いて、スリープモードのオペレーティングシステムが利用しているキャッシュエントリの参照時刻データを、最も過去に使用された値として出力する。なお、キャッシュ記憶装置１１１は、スリープモードのオペレーティングシステムが存在しない場合には、通常のＬＲＵアルゴリズムで動作する。
【００４２】
置換対象選択部１３６は、キャッシュエントリ設定部１４１によって過去に使用された状態に設定されたキャッシュエントリを、置換対象となるキャッシュエントリとして選択する。置換対象選択部１３６は、キャッシュミスなどにより、新たなデータをメモリ１１３から読み出してキャッシュ記憶装置１１１に格納する場合に、キャッシュ記憶装置１１１上に既に格納済みのデータのうち、どのデータを追い出すかを決定し、決定したデータを新たなデータに置換する。つまり、置換対象選択部１３６は、アクセス対象選択部１３７からキャッシュミスの発生が通知されると、置換対象の候補となる複数のキャッシュエントリを参照時刻計算部１３４に問い合わせる。その後、置換対象選択部１３６は、参照時刻計算部１３４から出力される計算結果にしたがって、複数のキャッシュエントリから置換対象のキャッシュエントリを選択し、選択したキャッシュエントリに新たなデータを格納する。
【００４３】
また、キャッシュエントリを置換することで追い出されたデータがある場合、追い出されたデータをメモリ１１３に書き戻す処理が必要となる。この場合、置換対象選択部１３６は、置換対象のキャッシュエントリと同じウェイのデータをバッファ１３８に書き込み、置換前のデータをメモリ１１３へ書き戻す。
【００４４】
以上のような構成により、スリープモードで実行しているオペレーティングシステムが利用しているキャッシュ記憶装置１１１上のデータを最も過去に使用されたデータとみなすことにより、通常動作モードのオペレーティングシステムの新たなデータと置換することができる。その結果、通常動作モードのオペレーティングシステムのデータが優先的にキャッシュ記憶装置１１１内に残るように制御することができる。これにより、オペレーティングシステムがスリープモードに移行することで、利用される頻度が少なくなったキャッシュエントリを、別のオペレーティングシステムによって有効に利用することが可能となり、システム全体としての性能向上を図ることができる。
【００４５】
さらに、本実施の形態１は、スリープモードに移行したオペレーティングシステムが利用していたデータを一律にキャッシュエントリから無効化することで、別のオペレーティングシステムが利用可能とする方法ではない。そのため、スリープモードに移行したオペレーティングシステムが再度通常動作モードに戻った場合に、必要となるデータがキャッシュ上に保持されたままであるなら、過去に使用したキャッシュエントリを有効活用することが可能である。
【００４６】
なお、本実施の形態１において、計算機システム１００が共有キャッシュ制御装置の一例に相当し、メモリ１１３が主記憶部の一例に相当し、キャッシュ記憶装置１１１がキャッシュ記憶装置の一例に相当し、監視部１３９が監視部の一例に相当し、キャッシュエントリ設定部１４１がキャッシュエントリ設定部の一例に相当し、置換対象選択部１３６が置換対象選択部の一例に相当し、ＯＳ実行状態記憶部１３５が実行状態記憶部の一例に相当し、参照時刻計算部１３４が参照時刻データ作成部の一例に相当する。
【００４７】
図３は、プロセッサ１１２から出力されるメモリアクセス命令などにより、プロセッサ１１２がキャッシュ記憶装置１１１内にアクセスする場合の、キャッシュエントリ選択処理に関するキャッシュ記憶装置１１１の詳細な構成を示す図である。図３において、キャッシュ記憶データメモリ１３０〜１３３は、図１と同様のハードウェア部品を示す。
【００４８】
なお、アクセス対象のデータを示すアドレス信号２００には、前述した通り、キャッシュ記憶データメモリ１３０〜１３３内のオフセットを示すインデックス番号２０２と、インデックス番号２０２以外の上位アドレスタグ２０１とが含まれている。個々のキャッシュ記憶データメモリ１３０〜１３３において、インデックス番号２０２で指定されたオフセットにあるキャッシュエントリがアクセス対象となり得るキャッシュエントリである。これらインデックス番号２０２で指定されたオフセットにある４個のキャッシュエントリの中から、キャッシュヒットの検出が行われる。
【００４９】
また、本実施の形態１では、図面の都合上、４ウェイのキャッシュ記憶データメモリ１３０〜１３３のみが記載されているが、本発明は特にこれに限定されず、キャッシュ記憶装置１１１は、４ウェイ未満又は４ウェイを越えるキャッシュ記憶データメモリを搭載することが可能であり、置換対象となり得るキャッシュエントリはウェイ数にしたがって増減する。
【００５０】
また、個々のキャッシュ記憶データメモリ内の各キャッシュエントリは、少なくとも、上位アドレスタグ２１０、ダーティビット２１１、有効ビット２１２、オペレーティングシステム識別子２１３、参照時刻カウンタ（参照時刻カウント値）２１４及びキャッシュデータ２１５を含むフィールドから構成される。
【００５１】
上位アドレスタグ２１０は、当該キャッシュエントリに格納されているデータのアドレスに関して、インデックス番号を除いた上位アドレスが格納されているフィールドである。ダーティビット２１１は、キャッシュ記憶装置１１１上で書き換えられたかどうかを示すフィールドである。ダーティビット２１１がＯＮの場合、キャッシュデータ２１５を最終的にはメモリ１１３上に書き戻さなければならず、ダーティビット２１１がＯＦＦの場合、キャッシュデータ２１５をメモリ１１３上に書き戻す必要はない。
【００５２】
有効ビット２１２は、当該キャッシュエントリが有効であるか否かを示すフィールドである。オペレーティングシステム識別子２１３は、当該キャッシュエントリをいずれのオペレーティングシステムが利用しているかを示すフィールドである。個々のオペレーティングシステムがキャッシュエントリにアクセスした場合、当該オペレーティングシステムを識別するための番号が該フィールドに格納される。
【００５３】
参照時刻カウンタ２１４は、当該キャッシュエントリのデータがどの程度過去に参照されたかを示すフィールドである。例えば、キャッシュ記憶装置１１１が４ウェイのキャッシュ記憶データメモリを構成する場合、２ビットの参照時刻カウンタを設け、アクセスが発生する都度、参照時刻カウンタ２１４の値は“０”に設定される。４ウェイのキャッシュ記憶データメモリのうち、選択されなかったキャッシュエントリの参照時刻カウンタ２１４の値は“３”までの範囲で一連の値になるように増加させる。これにより、参照時刻カウンタ２１４の値は、最も過去にアクセスされたキャッシュエントリから、“３”、“２”、“１”及び“０”の順に並ぶことになる。ＬＲＵアルゴリズムを利用するキャッシュ記憶装置では、参照時刻カウンタ２１４の値の最も大きいキャッシュエントリが最終的な置換対象となる。キャッシュデータ２１５は、メモリ１１３から読み出したデータを一時的に格納しておくためのフィールドである。
【００５４】
このように、キャッシュエントリは、当該キャッシュエントリを使用するオペレーティングシステムを識別するためのオペレーティングシステム識別子２１３と、当該キャッシュエントリが参照された時刻に応じてカウントされ、参照された時刻が古くなるほど値が大きくなる参照時刻カウンタ（参照時刻カウント値）２１４と、キャッシュデータ２１５とを含む。
【００５５】
以下、アクセス対象となるキャッシュエントリを選択するキャッシュエントリ選択処理の詳細について図３を用いて説明する。
【００５６】
まず、メモリアクセス命令などにより、キャッシュ記憶装置１１１内のデータにアクセスする場合、アクセス対象選択部１３７は、プロセッサ１１２から入出力部１４０を介してアドレス信号２００を受け取り、キャッシュエントリ選択処理を開始する。
【００５７】
アクセス対象選択部１３７は、アドレス信号２００内に含まれるインデックス番号２０２を用いて、キャッシュ記憶データメモリ１３０〜１３３内の４つのキャッシュエントリを選択する。ここでは、キャッシュエントリ２１６ａ〜２１６ｄが選択されたものとする。
【００５８】
次に、比較器４００ａ〜４００ｄは、アドレス信号２００内の上位アドレスタグ２０１と、キャッシュエントリ２１６ａ〜２１６ｄ内の上位アドレスタグ２１０とをそれぞれ比較する。
【００５９】
アドレス信号２００内の上位アドレスタグ２０１と上位アドレスタグ２１０とが一致し、かつ、有効ビット２１２がＯＮのキャッシュエントリが存在する場合、そのキャッシュエントリ内に所望のデータが存在することになる。図３では、論理積演算子４０１ａ〜４０１ｄは、比較器４００ａ〜４００ｄからの出力と、キャッシュエントリ２１６ａ〜２１６ｄ内の有効ビット２１２との論理積を計算することにより、キャッシュヒットを検出している。
【００６０】
なお、キャッシュヒットとは、メモリアクセス命令によって読み出されるデータがキャッシュ記憶装置１１１内に存在することである。アクセス対象選択部１３７は、アドレス信号２００内の上位アドレスタグ２０１と上位アドレスタグ２１０とが一致し、かつ、有効ビット２１２がＯＮである場合に、キャッシュヒットを検出する。論理積演算子４０１ａ〜４０１ｄは、キャッシュヒットであるか否かを表す制御信号をバッファ４０２ａ〜４０２ｄに出力する。
【００６１】
論理積演算子４０１ａ〜４０１ｄは、それぞれ、バッファ４０２ａ〜４０２ｄの出力を制御する。バッファ４０２ａ〜４０２ｄには、それぞれ、キャッシュエントリ２１６ａ〜２１６ｄ内のキャッシュデータ２１５が入力される。バッファ４０２ａ〜４０２ｄは、論理積演算子４０１ａ〜４０１ｄからの制御信号がキャッシュヒットであることを表す場合、キャッシュデータ２１５と同一の値を出力する。一方、制御信号がキャッシュヒットでないことを表す場合、バッファ４０２ａ〜４０２ｄは、ハイインピーダンス（高抵抗）状態となる。キャッシュエントリ２１６ａ〜２１６ｄのうち、実際にキャッシュヒットするエントリは、高々一つである。そのため、入出力部１４０は、バッファ４０２ａ〜４０２ｄの出力信号がそのまま入力されることにより、出力データ４１２を得ることが可能である。
【００６２】
なお、図面の関係上記載されていないが、アクセス対象選択部１３７は、キャッシュエントリ２１６ａ〜２１６ｄのうち、キャッシュヒットしたキャッシュエントリの参照時刻カウンタ２１４を“０”に設定し、キャッシュヒットしていないキャッシュエントリの参照時刻カウンタ２１４のうち、参照時刻カウンタ２１４の値が小さいものから順に、再度、“１”、“２”及び“３”の値を設定する。これにより、前述したように、最も過去にアクセスされたキャッシュエントリから“３”、“２”、“１”及び“０”の順に参照時刻カウンタ２１４の値が並ぶ状態が形成される。
【００６３】
また、アクセス対象選択部１３７は、論理積演算子４０１ａ〜４０１ｄからの出力の全てを入力とする否定論理和演算子４１１を用いることにより、キャッシュエントリ２１６ａ〜２１６ｄのうち、いずれのエントリもキャッシュヒットしないことを検出することができる。否定論理和演算子４１１は、論理積演算子４０１ａ〜４０１ｄからの出力を用いて、キャッシュミス信号４１０を計算する。キャッシュミスが発生した場合、アクセス対象選択部１３７は、キャッシュミス信号４１０を置換対象選択部１３６に通知し、置換対象選択部１３６はキャッシュエントリ置換処理を行う。
【００６４】
図４は、図３に示したキャッシュエントリ選択処理の結果、キャッシュミスが発生した場合のキャッシュエントリ置換処理に関するキャッシュ記憶装置１１１の詳細な構成を示す図である。図４において、キャッシュ記憶データメモリ１３０〜１３３は、図１と同様のハードウェア部品を示す。また、参照時刻計算部１３４ａ〜１３４ｄは、図１で説明した参照時刻計算部１３４に相当する。
【００６５】
以下、キャッシュエントリ内のデータを新たなデータに置換するキャッシュエントリ置換処理の詳細について図４を用いて説明する。
【００６６】
まず、キャッシュミスなどにより、新たなデータをメモリ１１３から読み出して、キャッシュ記憶装置１１１に格納する必要がある場合、置換対象選択部１３６は、アクセス対象選択部１３７からキャッシュミス信号４１０を受け取り、キャッシュエントリ置換処理を開始する。
【００６７】
置換対象選択部１３６は、アドレス信号２００内に含まれるインデックス番号２０２を用いて、キャッシュ記憶データメモリ１３０〜１３３内の４つのキャッシュエントリを選択する。ここでは、キャッシュエントリ２１６ａ〜２１６ｄが選択されたものとする。
【００６８】
この４つのキャッシュエントリ２１６ａ〜２１６ｄの中から、一つのキャッシュエントリを置換対象として選択する方法として、通常のＬＲＵアルゴリズムを用いた場合、キャッシュエントリ２１６ａ〜２１６ｄ内の参照時刻カウンタ２１４を比較して、最も過去に参照されたキャッシュエントリ、すなわち参照時刻カウンタ２１４の値が最も大きいキャッシュエントリが選択されることになる。しかしながら、ＬＲＵアルゴリズムを用いた方法は、通常動作モードのオペレーティングシステムのデータも、直近にスリープモードに移行したオペレーティングシステムのデータも同一に扱うことになる。
【００６９】
一方、本実施の形態１におけるキャッシュ記憶装置１１１では、監視部１３９が、プロセッサ１１２で実行される電力制御命令を監視し、当該電力制御命令を実行するオペレーティングシステムの状態変化を参照時刻計算部１３４に通知し、参照時刻計算部１３４が、各オペレーティングシステムの実行状態を管理する。これにより、スリープモードに移行するオペレーティングシステムが利用していたキャッシュエントリを最も過去に使用された状態に設定することが可能となり、別のオペレーティングシステムが、スリープモードに移行したオペレーティングシステムが利用していたキャッシュエントリを有効に利用することができる。
【００７０】
第１〜第３のオペレーティングシステム１２１，１２２，１２３のそれぞれは、個々のオペレーティングシステム上で動作しているタスク数及びタスクの状態などによって、スリープモードに移行する場合、電力制御命令を発行する。また、第１〜第３のオペレーティングシステム１２１，１２２，１２３のそれぞれは、割込みなどの発生を受けて処理負荷が変化した場合、スリープモードから通常動作モードに復帰する。
【００７１】
参照時刻計算部１３４ａ〜１３４ｄは、ＯＳ実行状態記憶部１３５ａ〜１３５ｄを用いて、個々のオペレーティングシステムの動作モードを管理する。なお、本実施の形態１では、個々のキャッシュエントリ設定部１４１ａ〜１４１ｄ内に参照時刻計算部１３４ａ〜１３４ｄ及びＯＳ実行状態記憶部１３５ａ〜１３５ｄを搭載する構成としているが、キャッシュエントリ設定部１４１ａ〜１４１ｄ間で一つの参照時刻計算部１３４及び一つのＯＳ実行状態記憶部１３５を共有してもよい。これにより、データの一貫性をより効率的に保障することができる。
【００７２】
図４では、ＯＳ実行状態記憶部１３５ａのみ、テーブル内の詳細を示している。図４のＯＳ実行状態記憶部１３５ａが記憶するテーブルでは、３つのオペレーティングシステムが存在している。３つのオペレーティングシステムのそれぞれのオペレーティングシステム識別子は、“０”、“１”及び“２”である。オペレーティングシステム識別子“０”の実行状態は、通常動作モードであると仮定し、オペレーティングシステム識別子“１”の実行状態は、スリープモードであると仮定し、オペレーティングシステム識別子“２”の実行状態は、通常動作モードであると仮定している。
【００７３】
なお、図４では、通常動作モードであるオペレーティングシステムの実行状態が、“ＲＵＮ”と表され、スリープモードであるオペレーティングシステムの実行状態が、“ＳＬＥＥＰ”と表されている。
【００７４】
ＯＳ実行状態記憶部１３５ａ〜１３５ｄは、オペレーティングシステムの実行状態に対応する実行状態値（Ｖａｌ）として、通常動作モードであれば“０”を保持し、スリープモードであれば“１”を保持している。
【００７５】
次に、参照時刻計算部１３４ａ〜１３４ｄは、選択されたキャッシュエントリ２１６ａ〜２１６ｄ内の参照時刻カウンタ２１４と、選択されたキャッシュエントリ２１６ａ〜２１６ｄ内の有効ビット２１２と、ＯＳ実行状態記憶部１３５ａ〜１３５ｄ内のオペレーティングシステムの実行状態に対応する実行状態値（Ｖａｌ）とを用いて、各キャッシュエントリ２１６ａ〜２１６ｄに対応付けられた参照時刻データを生成する。
【００７６】
キャッシュエントリ２１６ａに対応付けられた参照時刻データ２２１ａは、有効ビット２１２を否定演算子２２０ａによって反転させた無効ビット２２２ａ、ＯＳ実行状態記憶部１３５ａに記憶されているオペレーティングシステムの実行状態に対応する実行状態値（Ｖａｌ）を利用した状態ビット２２３ａ、及び、参照時刻カウンタ２１４の値をそのまま利用した参照カウンタビット２２４ａから構成される。同様に、キャッシュエントリ２１６ｂ〜２１６ｄに対応付けられた参照時刻データ２２１ｂ〜２２１ｄは、それぞれのキャッシュエントリの有効ビット２１２を否定演算子２２０ｂ〜２２０ｄによって反転させた無効ビット２２２ｂ〜２２２ｄ、ＯＳ実行状態記憶部１３５ｂ〜１３５ｄに記憶されているオペレーティングシステムの実行状態に対応する実行状態値（Ｖａｌ）を利用した状態ビット２２３ｂ〜２２３ｄ、及び、それぞれのキャッシュエントリの参照時刻カウンタ２１４の値をそのまま利用した参照カウンタビット２２４ｂ〜２２４ｄから構成される。
【００７７】
置換対象選択部１３６は、これらの参照時刻データ２２１ａ〜２２１ｄを受け取って比較し、参照時刻データの数値が最も大きいキャッシュエントリを置換対象として選択し、選択したキャッシュエントリを置換対象キャッシュエントリ２３０として出力する。また、置換対象選択部１３６は、選択されたキャッシュエントリを置換することで追い出されたデータがある場合、置換対象のキャッシュエントリと同じウェイのデータをバッファ１３８に書き込み、置換前のデータをメモリ１１３へ書き戻す。
【００７８】
具体的には、選択されたキャッシュエントリ２１６ａ〜２１６ｄ内のうち、有効ビット２１２がＯＦＦであるキャッシュエントリが一つあれば、参照時刻データ２２１ａ〜２２１ｄにおける最上位ビットである無効ビット２２２ａ〜２２２ｄがＯＮになるため、当該キャッシュエントリの参照時刻データが最も大きくなる。
【００７９】
また、キャッシュエントリ２１６ａ〜２１６ｄが全て有効である場合、すなわち、キャッシュエントリ２１６ａ〜２１６ｄの全ての有効ビット２１２がＯＮである場合、参照時刻データ２２１ａ〜２２１ｄにおける最上位ビットである無効ビット２２２ａ〜２２２ｄは全て“０”となる。このとき、選択されたキャッシュエントリ２１６ａ〜２１６ｄ内のうち、スリープモードのオペレーティングシステムが使用しているキャッシュエントリが一つあれば、参照時刻データ２２１ａ〜２２１ｄにおける上位第二ビットである状態ビット２２３ａ〜２２３ｄがＯＮになるため、当該キャッシュエントリの参照時刻データが最も大きくなる。
【００８０】
さらに、キャッシュエントリ２１６ａ〜２１６ｄが全て有効であって、かつ、全て通常動作モードのオペレーティングシステムが使用している場合、最上位ビットである無効ビット２２２ａ〜２２２ｄと、上位第二ビットである状態ビット２２３ａ〜２２３ｄとは、全て“０”となる。このとき、キャッシュエントリ２１６ａ〜２１６ｄの参照時刻カウンタ２１４の値に対応する参照カウンタビット２２４ａ〜２２４ｄがそのまま用いられる。そのため、参照時刻データ２２１ａ〜２２１ｄのうち、最も過去に参照されたキャッシュエントリに対応する参照時刻データの値が最も大きくなる。
【００８１】
図５は、参照時刻データ２２１ａが取り得る値を示す図である。参照時刻データ３００は、有効ビット２１２がＯＦＦである場合の値である。この場合、無効ビット２２２ａ以外の他のビットがいずれの値を示しても、参照時刻データ３００の値は、他のいかなる参照時刻データ３０１〜３０５よりも大きくなる。
【００８２】
参照時刻データ３０１は、有効ビット２１２がＯＮであるが、キャッシュエントリをスリープモードのオペレーティングシステムが利用している場合の値である。この場合、参照カウンタビット２２４ａがいずれの値を示しても、参照時刻データ３０１の値は、通常動作モードのオペレーティングシステムが利用しているキャッシュエントリの参照時刻データ３０２〜３０５よりも大きくなる。
【００８３】
参照時刻データ３０２〜３０５は、有効ビット２１２がＯＮであり、かつキャッシュエントリを通常動作モードのオペレーティングシステムが利用している場合の値である。参照時刻データ３０２〜３０５は、参照カウンタビット２２４ａの値によって大小が比較される。なお、参照カウンタビット２２４ａは、本実施の形態１では、キャッシュ記憶データメモリが４ウェイ構成であるため、２ビットで表される。
【００８４】
このように、ＯＳ実行状態記憶部１３５ａ〜１３５ｄは、電力制御命令に基づいて変更される複数のオペレーティングシステムの実行状態と、実行状態に応じて予め設定される値であり、通常動作モードに対応する値よりもスリープモードに対応する値の方が大きい実行状態値とを記憶する。また、参照時刻計算部１３４ａ〜１３４ｄは、実行状態値と、参照時刻カウント値とを含む参照時刻データ２２１ａ〜２２１ｄを複数のキャッシュエントリ毎に作成する。
【００８５】
置換対象選択部１３６は、参照時刻計算部１３４によって作成された複数のキャッシュエントリ毎の参照時刻データ２２１ａ〜２２１ｄを比較し、参照時刻データに含まれる実行状態値が最も大きい参照時刻データに対応するキャッシュエントリを、置換対象となるキャッシュエントリとして選択する。
【００８６】
また、置換対象選択部１３６は、参照時刻計算部１３４によって作成された複数のキャッシュエントリ毎の参照時刻データ２２１ａ〜２２１ｄを比較し、参照時刻データに含まれる実行状態値が全て同じである場合、参照時刻データに含まれる参照時刻カウント値が最も大きい参照時刻データに対応するキャッシュエントリを、置換対象となるキャッシュエントリとして選択する。
【００８７】
この構成により、有効ビット２１２がＯＮでないキャッシュエントリ、及びスリープモードのオペレーティングシステムが利用しているキャッシュエントリが優先して置換対象として選択される。そして、これらのキャッシュエントリが存在しない場合のみ、ＬＲＵアルゴリズムでキャッシュエントリが置換されることになる。これにより、複数のオペレーティングシステムがキャッシュ記憶装置を共有する計算機システムにおいて、一つのオペレーティングシステムによって利用されなくなったキャッシュエントリを、別のオペレーティングシステムが優先的に利用することができ、限られたサイズのキャッシュ記憶装置を有効に活用することが可能となる。
【００８８】
以上により、有効でないキャッシュエントリを最優先で置換対象とするとともに、次に、スリープモードで実行しているオペレーティングシステムが利用しているキャッシュエントリのデータを、最も過去に使用されたキャッシュエントリのデータとみなして置換対象とすることができる。これにより、通常動作モードのオペレーティングシステムのデータが優先的にキャッシュ記憶装置１１１内に残るように制御することができる。
【００８９】
また、本実施の形態１は、データが一律にキャッシュエントリから無効化される方法ではない。そのため、デバイスなどの状態によって、スリープモードに移行したオペレーティングシステムが再度通常動作モードに戻った場合に、過去に使用したキャッシュエントリを有効活用することが可能である。通常動作モードに戻った場合、状態ビットの値が“０”に戻るため、ＬＲＵアルゴリズムで置換対象が選択されることになる。
【００９０】
（実施の形態２）
図６は、本発明の実施の形態２における計算機システムの構成を示す図である。計算機システム５００は、複数のプロセッサがメモリ及びキャッシュ記憶装置を共有するマルチプロセッサシステムである。
【００９１】
計算機システム５００は、内部バス１１０、周辺モジュール群１１４、ステータスレジスタ１１５、複数のプロセッサ（第１のプロセッサ５０２及び第２のプロセッサ５０３）、複数のレベル１キャッシュ記憶装置（第１のレベル１キャッシュ記憶装置５０４及び第２のレベル１キャッシュ記憶装置５０５）、レベル２キャッシュ記憶装置５０１及びメモリ５０６を備えている。内部バス１１０、周辺モジュール群１１４及びステータスレジスタ１１５は、図１において説明した構成要素と同じ構成要素である。
【００９２】
近年のＬＳＩの高集積化により、計算機システム５００を構成する複数の回路を一つのシステムＬＳＩ内に搭載することも可能であるが、本実施の形態２において、回路群が単一のシステムＬＳＩ内に実装されるか、それぞれ別のシステムＬＳＩで提供されるかについての限定は行わない。また、本実施の形態２では、２つのプロセッサのみが搭載されている例を示しているが、プロセッサ数は２個に限定されず、３個以上のプロセッサを共存させてもよい。また、ステータスレジスタ１１５は、図１と同様に、内部バス１１０に接続しているが、第１のプロセッサ５０２及び第２のプロセッサ５０３に直接接続してもよい。
【００９３】
第１のプロセッサ５０２及び第２のプロセッサ５０３は、それぞれ、メモリ５０６に格納されているプログラム（命令コード）を読み出して実行する。また、第１のプロセッサ５０２及び第２のプロセッサ５０３は、プログラムの実行時には、メモリ５０６上のデータや、周辺モジュール群１１４からの入出力データを参照して動作する。また、第１のプロセッサ５０２及び第２のプロセッサ５０３は、ステータスレジスタ１１５が保持している動作中の状態パラメータの値を用いて制御を行う。
【００９４】
メモリ５０６は、第１〜第ｎのタスク５２３〜５２７と、第１及び第２のオペレーティングシステム５２１，５２２とを備えている。
【００９５】
第１〜第ｎのタスク５２３〜５２７は、それぞれ計算機システム５００上で動作する単一又は複数の命令コードを含む実行単位であり、例えば、第１のプロセッサ５０２により実行されるアプリケーションプログラムである。
【００９６】
第１のオペレーティングシステム５２１及び第２のオペレーティングシステム５２２は、計算機システム５００で動作するソフトウェア全体を制御するオペレーティングシステムであり、実施の形態２では、２つのオペレーティングシステムを備える。
【００９７】
本実施の形態２のマルチプロセッサシステムの一例として、図６では、第１及び第２のタスク５２３，５２４と第１のオペレーティングシステム５２１とは、第１のプロセッサ５０２上で動作し、第３〜第ｎのタスク５２５，５２６，５２７と第２のオペレーティングシステム５２２とは、第２のプロセッサ５０３上で動作するようにコンパイルされている。
【００９８】
第１のオペレーティングシステム５２１は、第１及び第２のタスク５２３，５２４の実行状態と、第１のプロセッサ５０２のハードウェア状態とを管理する。第２のオペレーティングシステム５２２は、第３〜第ｎのタスク５２５，５２６，５２７の実行状態と、第２のプロセッサ５０３のハードウェア状態とを管理する。また、計算機システム５００は、複数のプロセッサでそれぞれ一つずつのオペレーティングシステムを実行するため、仮想計算機環境を提供する必要はない。そのため、本実施の形態２には、実施の形態１で説明したハイパバイザ１２０は存在していない。なお、タスク数、オペレーティングシステム数、及び、タスクとオペレーティングシステムとの関係は、図６で示した例に一致しなくてもよい。
【００９９】
第１及び第２のレベル１キャッシュ記憶装置５０４，５０５は、それぞれ、第１のプロセッサ５０２及び第２のプロセッサ５０３が参照したデータ及び命令を一時的に格納しておくための記憶手段である。なお、個々のプロセッサ毎にキャッシュ記憶装置を搭載する場合には、共有データの一貫性を保証するためのスヌープ制御が必要であるが、本発明の主要構成要素でないため、図中には記載していない。一般に、スヌープ制御では、個々のプロセッサにおける書込み動作を監視しておき、一方のプロセッサで書込みが行われると、もう一方のプロセッサが利用しているキャッシュ記憶装置の対応するキャッシュエントリを無効化又は更新する。これにより、複数のプロセッサに対応するキャッシュ記憶装置間で論理的矛盾が発生しなくなる。
【０１００】
レベル２キャッシュ記憶装置５０１は、第１のプロセッサ５０２及び第２のプロセッサ５０３によって共有され、第１のプロセッサ５０２及び第２のプロセッサ５０３が第１及び第２のレベル１キャッシュ記憶装置５０４，５０５を介して参照したデータ及び命令を一時的に格納しておくための記憶手段である。レベル２キャッシュ記憶装置５０１は、図１におけるキャッシュ記憶装置１１１に相当する。実施の形態１において、キャッシュ記憶装置１１１は、仮想計算機システムにおける複数のオペレーティングシステムから共有されていたが、本実施の形態２においては、レベル２キャッシュ記憶装置５０１は、複数のプロセッサから共有されることになる。
【０１０１】
レベル２キャッシュ記憶装置５０１は、セットアソシアティブ方式のキャッシュ記憶装置であり、複数のウェイに分割されたキャッシュ記憶データメモリを備える。なお、セットアソシアティブ方式のキャッシュ記憶装置については、前述した通り、図２に示している。図６では、４つのウェイに分割されたキャッシュ記憶データメモリ５１０〜５１３が存在しているが、４ウェイ未満又は４ウェイを越えて搭載することも可能である。また、レベル２キャッシュ記憶装置５０１は、複数のプロセッサから共有されるため、個々のキャッシュエントリ内には、いずれのプロセッサが当該キャッシュエントリを使用しているかを示すプロセッサ識別子が搭載される。なお、プロセッサ識別子については図７において説明する。
【０１０２】
レベル２キャッシュ記憶装置５０１は、前述したキャッシュ記憶データメモリ５１０〜５１３と、置換対象選択部１３６と、アクセス対象選択部１３７と、バッファ１３８と、監視部５１９と、入出力部１４０と、キャッシュエントリ設定部１４１とを備えている。以下、実施の形態１と異なる構成要素である参照時刻計算部５１４と、プロセッサ実行状態記憶部５１５と、監視部５１９とについて説明する。
【０１０３】
監視部５１９は、ステータスレジスタ１１５をチェックすることで、第１のプロセッサ５０２及び第２のプロセッサ５０３で実行される電力制御命令を監視し、当該電力制御命令を実行するプロセッサの状態変化を参照時刻計算部５１４に通知する。電力制御命令は、スリープ命令、電源制御命令及びクロック制御命令を含む。なお、第１のプロセッサ５０２及び第２のプロセッサ５０３は、それぞれ、第１のオペレーティングシステム５２１又は第２のオペレーティングシステム５２２上で動作しているタスク数及びタスクの状態などによって、スリープモードに移行する場合、電力制御命令を発行し、第１のプロセッサ５０２及び第２のプロセッサ５０３は、発行された電力制御命令を実行する。また、第１のプロセッサ５０２及び第２のプロセッサ５０３は、割込みなどの発生を受けて処理負荷が変化した場合、スリープモードから通常動作モードに復帰する処理を実行する。
【０１０４】
キャッシュエントリ設定部１４１は、キャッシュミスが発生し、複数のキャッシュエントリの中から置換対象となるキャッシュエントリを選択する際に、電力制御命令に基づいて変更される複数のプロセッサの実行状態を用いて、電力制御命令を実行したプロセッサが利用していたキャッシュエントリを、過去に使用された状態に設定する。キャッシュエントリ設定部１４１は、スリープモードのプロセッサが利用しているキャッシュエントリを、通常動作モードのプロセッサが利用しているキャッシュエントリより過去に使用された状態に設定する。
【０１０５】
キャッシュエントリ設定部１４１は、参照時刻計算部５１４と、プロセッサ実行状態記憶部５１５とを備える。
【０１０６】
参照時刻計算部５１４は、監視部５１９からの通知を受け取り、個々のプロセッサの動作モードを、プロセッサ実行状態記憶部５１５を用いて管理する。プロセッサ実行状態記憶部５１５は、プロセッサを識別するプロセッサ識別子と、各プロセッサの実行状態（通常動作モード又はスリープモード）とをテーブル形式で保持している。
【０１０７】
なお、ここでは、プロセッサ実行状態記憶部５１５が複数のプロセッサの動作モードをテーブル形式で保持するとしたが、他のフォーマットで複数のプロセッサの動作モードを記憶してもよい。
【０１０８】
また、参照時刻計算部５１４は、置換対象選択部１３６からの問い合わせに対し、置換対象の候補となる複数のキャッシュエントリの参照時刻データを計算して、計算した参照時刻データを置換対象選択部１３６に通知する。参照時刻計算部５１４は、プロセッサ実行状態記憶部５１５と、個々のキャッシュエントリに設けられたプロセッサ識別子とを用いて、スリープモードのプロセッサが利用しているキャッシュエントリの参照時刻データを、最も過去に使用された値として出力する。なお、レベル２キャッシュ記憶装置５０１は、スリープモードのプロセッサが存在しない場合には、通常のＬＲＵアルゴリズムで動作する。
【０１０９】
以上のような構成により、スリープモードで実行しているプロセッサが利用しているキャッシュエントリ上のデータを、最も過去に使用されたキャッシュエントリ上のデータとみなして置換対象とすることができる。これにより、通常動作モードのプロセッサのデータが優先的にレベル２キャッシュ記憶装置５０１内に残るように制御することができる。また、プロセッサがスリープモードに移行することで利用される頻度が少なくなったキャッシュエントリを、別のプロセッサで有効に利用することが可能となり、システム全体としての性能向上を図ることができる。
【０１１０】
さらに、本実施の形態２は、スリープモードに移行したプロセッサが利用していたデータが一律にキャッシュエントリから無効化されることにより、キャッシュエントリを別のプロセッサが利用可能とする方法ではない。そのため、デバイスなどの状態によって、スリープモードに移行したプロセッサが再度通常動作モードに戻った場合に、必要となるデータがレベル２キャッシュ記憶装置５０１上に保持されたままであるなら、過去に使用したキャッシュエントリを有効活用することが可能である。
【０１１１】
なお、本実施の形態２において、計算機システム５００が共有キャッシュ制御装置の一例に相当し、メモリ５０６が主記憶部の一例に相当し、キャッシュ記憶装置５０１がキャッシュ記憶装置の一例に相当し、監視部５１９が監視部の一例に相当し、キャッシュエントリ設定部１４１がキャッシュエントリ設定部の一例に相当し、置換対象選択部１３６が置換対象選択部の一例に相当し、プロセッサ実行状態記憶部５１５が実行状態記憶部の一例に相当し、参照時刻計算部５１４が参照時刻データ作成部の一例に相当する。
【０１１２】
図７は、メモリアクセス命令などにより、第１のプロセッサ５０２又は第２のプロセッサ５０３がレベル２キャッシュ記憶装置５０１内にアクセスする場合の、キャッシュエントリ選択処理に関するレベル２キャッシュ記憶装置５０１の詳細な構成を示す図である。
【０１１３】
アクセス対象のデータを示すアドレス信号２００は、キャッシュ記憶データメモリ５１０〜５１３内のオフセットを示すインデックス番号２０２と、インデックス番号２０２以外の上位アドレスタグ２０１とが含まれている。個々のキャッシュ記憶データメモリ５１０〜５１３において、インデックス番号２０２で指定されたオフセットにあるキャッシュエントリがアクセス対象となり得るキャッシュエントリである。これらインデックス番号２０２で指定されたオフセットにある４個のキャッシュエントリの中から、キャッシュヒットの検出が行われる。
【０１１４】
また、本実施の形態２では、図面の都合上、４ウェイのキャッシュ記憶データメモリ５１０〜５１３のみが記載されているが、本発明は特にこれに限定されず、レベル２キャッシュ記憶装置５０１は、４ウェイ未満又は４ウェイを越えるキャッシュ記憶データメモリを搭載することが可能であり、置換対象となり得るキャッシュエントリはウェイ数にしたがって増減する。
【０１１５】
また、個々のキャッシュ記憶データメモリ内の各キャッシュエントリは、少なくとも、上位アドレスタグ２１０、ダーティビット２１１、有効ビット２１２、プロセッサ識別子６００、参照時刻カウンタ２１４及びキャッシュデータ２１５を含むフィールドから構成される。図７において、プロセッサ識別子６００を除く他の構成要素は、図３と同様の構成要素であり、図３と同様の動作を行うため、本実施の形態２での説明は省略する。個々のプロセッサがキャッシュエントリにアクセスした場合、当該プロセッサの番号がプロセッサ識別子６００に格納される。
【０１１６】
このように、キャッシュエントリは、当該キャッシュエントリを使用するプロセッサを識別するためのプロセッサ識別子６００と、当該キャッシュエントリが参照された時刻に応じてカウントされ、参照された時刻が古くなるほど値が大きくなる参照時刻カウンタ（参照時刻カウント値）２１４と、キャッシュデータ２１５とを含む。
【０１１７】
図８は、図７で示したキャッシュエントリ選択処理の結果、キャッシュミスが発生した場合のキャッシュエントリ置換処理に関するレベル２キャッシュ記憶装置５０１の詳細な構成を示す図である。図８において、プロセッサ識別子６００、参照時刻計算部５１４ａ〜５１４ｄ及びプロセッサ実行状態記憶部５１５ａ〜５１５ｄを除く他の構成要素は、図４と同じ構成要素である。また、参照時刻計算部５１４ａ〜５１４ｄは、図６で説明した参照時刻計算部５１４に相当する。
【０１１８】
以下、キャッシュエントリ内のデータを新たなデータに置換するキャッシュエントリ置換処理の詳細について図８を用いて説明する。
【０１１９】
まず、キャッシュミスなどにより、新たなデータをメモリ５０６から読み出して、レベル２キャッシュ記憶装置５０１に格納する必要がある場合、置換対象選択部１３６は、アクセス対象選択部１３７からキャッシュミス信号４１０を受け取り、キャッシュエントリ置換処理を開始する。
【０１２０】
置換対象選択部１３６は、アドレス信号２００内に含まれるインデックス番号２０２を用いて、キャッシュ記憶データメモリ５１０〜５１３内の４つのキャッシュエントリを選択する。ここでは、キャッシュエントリ２１６ａ〜２１６ｄが選択されたものとする。
【０１２１】
この４つのキャッシュエントリ２１６ａ〜２１６ｄの中から、一つのキャッシュエントリが置換対象として選択される。そのため、本実施の形態２におけるレベル２キャッシュ記憶装置５０１では、監視部５１９が、第１のプロセッサ５０２及び第２のプロセッサ５０３で実行される電力制御命令を監視し、当該電力制御命令を実行するプロセッサの状態変化を参照時刻計算部５１４に通知し、参照時刻計算部５１４が、各プロセッサの実行状態を管理する。これにより、スリープモードに移行するプロセッサが利用していたキャッシュエントリを最も過去に使用された状態に設定することが可能となり、別のプロセッサが、スリープモードに移行したプロセッサが利用していたキャッシュエントリを有効に利用することができる。
【０１２２】
第１及び第２のプロセッサ５０２，５０３のそれぞれは、対応する第１及び第２のオペレーティングシステム５２１，５２２上で動作しているタスク数及びタスクの状態などによって、スリープモードに移行する場合、電力制御命令を発行する。また、第１及び第２のプロセッサ５０２，５０３のそれぞれは、割込みなどの発生を受けて処理負荷が変化した場合、スリープモードから通常動作モードに復帰する。
【０１２３】
参照時刻計算部５１４ａ〜５１４ｄは、プロセッサ実行状態記憶部５１５ａ〜５１５ｄを用いて、個々のプロセッサの動作モードを管理する。なお、本実施の形態２では、個々のキャッシュエントリ設定部１４１ａ〜１４１ｄ内に参照時刻計算部５１４ａ〜５１４ｄ及びプロセッサ実行状態記憶部５１５ａ〜５１５ｄを搭載する構成としているが、キャッシュエントリ設定部１４１ａ〜１４１ｄ間で一つの参照時刻計算部５１４及び一つのプロセッサ実行状態記憶部５１５を共有してもよい。これにより、データの一貫性をより効率的に保証することができる。
【０１２４】
図８では、プロセッサ実行状態記憶部５１５ａのみ、テーブル内の詳細を示している。図８のプロセッサ実行状態記憶部５１５ａが記憶するテーブルでは、２つのプロセッサ（識別子“０”及び“１”）が存在し、それぞれ、通常動作モード及びスリープモードであると仮定している。なお、図８では、プロセッサ識別子が、“０”及び“１”と表され、通常動作モードであるプロセッサの実行状態が、“ＲＵＮ”と表され、スリープモードであるプロセッサの実行状態が、“ＳＬＥＥＰ”と表されている。また、プロセッサ実行状態記憶部５１５ａ〜５１５ｄは、プロセッサの実行状態に対応する実行状態値（Ｖａｌ）として、通常動作モードであれば“０”を保持し、スリープモードであれば“１”を保持している。
【０１２５】
次に、参照時刻計算部５１４ａ〜５１４ｄは、選択されたキャッシュエントリ２１６ａ〜２１６ｄ内の参照時刻カウンタ２１４と、選択されたキャッシュエントリ２１６ａ〜２１６ｄ内の有効ビット２１２と、プロセッサ実行状態記憶部５１５ａ〜５１５ｄ内のプロセッサの実行状態に対応する実行状態値（Ｖａｌ）とを用いて、各キャッシュエントリ２１６ａ〜２１６ｄに対応付けられた参照時刻データを生成する。
【０１２６】
一例として、キャッシュエントリ２１６ａに対応付けられた参照時刻データ２２１ａは、有効ビット２１２を否定演算子２２０ａによって反転させた無効ビット２２２ａ、プロセッサ実行状態記憶部５１５ａに記憶されているプロセッサの実行状態に対応する実行状態値（Ｖａｌ）を利用した状態ビット２２３ａ、及び、参照時刻カウンタ２１４をそのまま利用した参照カウンタビット２２４ａから構成される。同様に、キャッシュエントリ２１６ｂ〜２１６ｄに対応付けられた参照時刻データ２２１ｂ〜２２１ｄは、それぞれのキャッシュエントリの有効ビット２１２を否定演算子２２０ｂ〜２２０ｄによって反転させた無効ビット２２２ｂ〜２２２ｄ、プロセッサ実行状態記憶部５１５ｂ〜５１５ｄに記憶されているプロセッサの実行状態に対応する実行状態値（Ｖａｌ）を利用した状態ビット２２３ｂ〜２２３ｄ、及び、それぞれのキャッシュエントリの参照時刻カウンタ２１４をそのまま利用した参照カウンタビット２２４ｂ〜２２４ｄから構成される。
【０１２７】
置換対象選択部１３６は、これらの参照時刻データ２２１ａ〜２２１ｄを受け取って比較し、参照時刻データの数値が最も大きいキャッシュエントリを置換対象として選択し、選択したキャッシュエントリを置換対象キャッシュエントリ２３０として出力する。また、置換対象選択部１３６は、選択されたキャッシュエントリを置換することで追い出されたデータがある場合、置換対象のキャッシュエントリと同じウェイのデータをバッファ１３８に書き込み、置換前のデータをメモリ５０６へ書き戻す。
【０１２８】
具体的には、選択されたキャッシュエントリ２１６ａ〜２１６ｄ内のうち、有効ビット２１２がＯＦＦであるキャッシュエントリが一つあれば、参照時刻データ２２１ａ〜２２１ｄにおける最上位ビットである無効ビット２２２ａ〜２２２ｄがＯＮになるため、当該キャッシュエントリの参照時刻データが最も大きくなる。
【０１２９】
また、キャッシュエントリ２１６ａ〜２１６ｄが全て有効である場合、すなわち、キャッシュエントリ２１６ａ〜２１６ｄの全ての有効ビット２１２がＯＮである場合、参照時刻データ２２１ａ〜２２１ｄにおける最上位ビットである無効ビット２２２ａ〜２２２ｄは全て“０”となる。このとき、選択されたキャッシュエントリ２１６ａ〜２１６ｄ内のうち、スリープモードのプロセッサが使用しているキャッシュエントリが一つあれば、参照時刻データ２２１ａ〜２２１ｄにおける上位第二ビットである状態ビット２２３ａ〜２２３ｄがＯＮになるため、当該キャッシュエントリの参照時刻データが最も大きくなる。
【０１３０】
さらに、キャッシュエントリ２１６ａ〜２１６ｄが全て有効であって、かつ、全て通常動作モードのプロセッサが使用している場合、最上位ビットである無効ビット２２２ａ〜２２２ｄと、上位第二ビットである状態ビット２２３ａ〜２２３ｄとは、全て“０”となる。このとき、キャッシュエントリ２１６ａ〜２１６ｄの参照時刻カウンタ２１４の値に対応する参照カウンタビット２２４ａ〜２２４ｄがそのまま用いられる。そのため、参照時刻データ２２１ａ〜２２１ｄのうち、最も過去に参照されたキャッシュエントリの参照時刻データの値が最も大きくなる。
【０１３１】
このように、プロセッサ実行状態記憶部５１５ｂ〜５１５ｄは、電力制御命令に基づいて変更される複数のプロセッサの実行状態と、実行状態に応じて予め設定される値であり、通常動作モードに対応する値よりもスリープモードに対応する値の方が大きい実行状態値とを記憶する。また、参照時刻計算部５１４ａ〜５１４ｄは、実行状態値と、参照時刻カウント値とを含む参照時刻データ２２１ａ〜２２１ｄを複数のキャッシュエントリ毎に作成する。
【０１３２】
置換対象選択部１３６は、参照時刻計算部５１４ａ〜５１４ｄによって作成された複数のキャッシュエントリ毎の参照時刻データ２２１ａ〜２２１ｄを比較し、参照時刻データに含まれる実行状態値が最も大きい参照時刻データに対応するキャッシュエントリを、置換対象となるキャッシュエントリとして選択する。また、置換対象選択部１３６は、参照時刻計算部５１４ａ〜５１４ｄによって作成された複数のキャッシュエントリ毎の参照時刻データ２２１ａ〜２２１ｄを比較し、参照時刻データに含まれる実行状態値が全て同じである場合、参照時刻データに含まれる参照時刻カウント値が最も大きい参照時刻データに対応するキャッシュエントリを、置換対象となるキャッシュエントリとして選択する。
【０１３３】
この構成により、有効ビット２１２がＯＮでないキャッシュエントリ、及びスリープモードのプロセッサが利用しているキャッシュエントリが優先して置換対象として選択される。そして、これらのキャッシュエントリが存在しない場合のみ、ＬＲＵアルゴリズムでキャッシュエントリが置換されることになる。これにより、複数のプロセッサがキャッシュ記憶装置を共有する計算機システムにおいて、一つのプロセッサによって利用されなくなったキャッシュエントリを、別のプロセッサが優先的に利用することができ、限られたサイズのキャッシュ記憶装置を有効に活用することが可能となる。
【０１３４】
以上により、有効でないキャッシュエントリを最優先で置換対象とするとともに、次に、スリープモードで実行しているプロセッサが利用しているキャッシュエントリのデータを、最も過去に使用されたキャッシュエントリのデータとみなして置換対象とすることができる。これにより、通常動作モードのプロセッサのデータが優先的にレベル２キャッシュ記憶装置５０１内に残るように制御することができる。
【０１３５】
また、本実施の形態２は、データが一律にキャッシュエントリから無効化される方法ではない。そのため、デバイスなどの状態によって、スリープモードに移行したプロセッサが再度通常動作モードに戻った場合に、過去に使用したキャッシュエントリを有効活用することが可能である。通常動作モードに戻った場合、状態ビットの値が“０”に戻るため、ＬＲＵアルゴリズムで置換対象が選択されることになる。
【０１３６】
（実施の形態３）
図９は、本発明の実施の形態３における計算機システムの構成を示す図である。計算機システム８００は、一つのプロセッサ上で複数のオペレーティングシステムを動作させる仮想計算機システムである。計算機システム８００は、内部バス１１０、キャッシュ記憶装置８０１、プロセッサ１１２、メモリ８１３、周辺モジュール群１１４及びステータスレジスタ１１５を備えている。キャッシュ記憶装置８０１、メモリ８１３、周辺モジュール群１１４及びステータスレジスタ１１５は、それぞれ内部バス１１０に接続されている。内部バス１１０、プロセッサ１１２、周辺モジュール群１１４及びステータスレジスタ１１５は、図１において説明したのと同じ構成要素である。
【０１３７】
メモリ８１３は、第１〜第ｎのタスク８２３〜８２７と、第１及び第２のオペレーティングシステム８２１，８２２と、ハイパバイザ８２０とを備えている。図１のメモリ１１３は、オペレーティングシステムを３個備えているのに対し、図９のメモリ８１３は、オペレーティングシステムを２個備えている点が異なっており、各構成要素は同じである。
【０１３８】
キャッシュ記憶装置８０１は、キャッシュ記憶装置１１１と同様のセットアソシアティブ方式のキャッシュ記憶装置である。この場合、キャッシュ記憶装置８０１は、複数のウェイに分割されたキャッシュ記憶データメモリ８３０〜８３３と、置換対象選択部８４１と、アクセス対象選択部１３７と、バッファ１３８と、監視部１３９と、入出力部１４０と、キャッシュエントリ設定部１４１とを備える。キャッシュ記憶データメモリ８３０〜８３３は、前述のキャッシュ記憶データメモリ１３０〜１３３と同様の構成であるが、個々のキャッシュエントリ内に、オペレーティングシステム識別子を搭載する必要はない。また、アクセス対象選択部１３７、バッファ１３８、監視部１３９及び入出力部１４０の構成は、実施の形態１と同じ構成であるので説明を省略する。
【０１３９】
キャッシュエントリ設定部１４１は、ロックダウン制御部８３４と、ロックダウンテーブル記憶部８３８とを備える。
【０１４０】
ロックダウン制御部８３４は、複数のキャッシュ記憶データメモリ８３０〜８３３のうち、指定されたウェイを置換対象としないように設定する。例えば、ロックダウン制御部８３４によってキャッシュ記憶データメモリ８３１がロックダウンされると、キャッシュミスが発生した場合、キャッシュ記憶データメモリ８３０，８３２，８３３のいずれかから置換対象キャッシュエントリが選択される。
【０１４１】
ロックダウンテーブル記憶部８３８は、ロックダウンテーブル８３５を記憶する。ロックダウンテーブル８３５は、個々のオペレーティングシステムの実行状態、及び個々のオペレーティングシステムが占有するウェイを指定するためのテーブルである。ロックダウンテーブル８３５には、オペレーティングシステム実行状態８３６と、占有ウェイ８３７とを示すエントリが存在する。
【０１４２】
オペレーティングシステム実行状態８３６は、各オペレーティングシステムの実行状態を示す。図９では、第１のオペレーティングシステム８２１が通常動作モードであり、第２のオペレーティングシステム８２２がスリープモードであることを示している。なお、図９では、オペレーティングシステム識別子が、“１”及び“２”と表され、通常動作モードであるオペレーティングシステムの実行状態が、“ＲＵＮ”と表され、スリープモードであるオペレーティングシステムの実行状態が、“ＳＬＥＥＰ”と表されている。
【０１４３】
占有ウェイ８３７は、各オペレーティングシステムが占有して使用するキャッシュ記憶データメモリ（ウェイ）を示す。あるオペレーティングシステムが占有するウェイは、他のオペレーティングシステムが置換対象とすることができない。図９の例では、第１のオペレーティングシステム８２１は、ウェイ０のキャッシュ記憶データメモリ８３０及びウェイ１のキャッシュ記憶データメモリ８３１を占有し、第２のオペレーティングシステム８２２は、ウェイ３のキャッシュ記憶データメモリ８３３を占有している。
【０１４４】
このとき、ロックダウン制御部８３４は、実行中のオペレーティングシステムを監視し、第２のオペレーティングシステム８２２が動作する場合、第１のオペレーティングシステム８２１が占有しているウェイ０のキャッシュ記憶データメモリ８３０及びウェイ１のキャッシュ記憶データメモリ８３１をロックダウンする。これにより、第１のオペレーティングシステム８２１以外のオペレーティングシステムが動作している場合、ウェイ０のキャッシュ記憶データメモリ８３０及びウェイ１のキャッシュ記憶データメモリ８３１は置換対象とならない。
【０１４５】
オペレーティングシステムがスリープモードである場合、当該オペレーティングシステムがキャッシュ記憶データメモリを占有することは、システム全体の性能に影響を及ぼす。そこで、ロックダウン制御部８３４は、ロックダウンテーブル８３５内のオペレーティングシステム実行状態８３６を参照し、スリープモードであれば、当該オペレーティングシステムに占有されるべきウェイのキャッシュ記憶データメモリをロックダウンしない。
【０１４６】
図９の例では、第２のオペレーティングシステム８２２がウェイ３のキャッシュ記憶データメモリ８３３を占有するとしている。このとき、ロックダウン制御部８３４は、第１のオペレーティングシステム８２１が動作し、第２のオペレーティングシステム８２２がスリープモードであると判断した場合、本来第２のオペレーティングシステム８２２が占有するべきウェイ３のキャッシュ記憶データメモリ８３３をロックダウンしない。これにより、第１のオペレーティングシステム８２１は、ウェイ３のキャッシュ記憶データメモリ８３３も置換対象とすることができ、通常に比べて高速なプログラムの実行が期待できる。
【０１４７】
このように、キャッシュ記憶装置８０１は、複数のキャッシュエントリをそれぞれ有する複数のウェイ（キャッシュ記憶データメモリ８３０〜８３３）を含む。ロックダウンテーブル記憶部８３８は、電力制御命令に基づいて変更される複数のオペレーティングシステムの実行状態と、複数のウェイのうちのオペレーティングシステムが利用するウェイを識別するためのウェイ識別子とを記憶する。また、ロックダウン制御部８３４は、ロックダウンテーブル記憶部８３８を参照し、スリープモードのオペレーティングシステムが利用しているウェイを置換対象となるウェイに設定するとともに、通常動作モードのオペレーティングシステムが利用しているウェイを置換対象とならないウェイに設定する。
【０１４８】
置換対象選択部８４１は、ロックダウン制御部８３４によって置換対象となるウェイに設定されたウェイの中から、最も過去に使用されたキャッシュエントリを、置換対象となるキャッシュエントリとして選択する。
【０１４９】
なお、本実施の形態３において、キャッシュ記憶装置８０１がキャッシュ記憶装置の一例に相当し、置換対象選択部８４１が置換対象選択部の一例に相当し、ロックダウン制御部８３４がロックダウン制御部の一例に相当し、ロックダウンテーブル記憶部８３８が実行状態記憶部の一例に相当する。
【０１５０】
図１０は、図９に示すロックダウン制御部８３４の動作を説明するためのフローチャートである。なお、図９に示したロックダウン制御部８３４は、キャッシュ記憶装置８０１内の制御回路であるとして記載しているが、図１０に示すように、例えば、ハイパバイザ８２０内のプログラムあってもよい。制御回路及びプログラムのいずれであっても、同様の処理フローで実現することができる。
【０１５１】
最初に、ロックダウン制御部８３４は、オペレーティングシステム切替え待ち状態に移行する（ステップＳ１）。
【０１５２】
オペレーティングシステムが切り替えられた場合、ロックダウン制御部８３４は、ステップＳ２の処理に移行し、次に実行すべきオペレーティングシステム以外のオペレーティングシステムについて、ステップＳ３の処理及びステップＳ４の処理を実行する。すなわち、ロックダウン制御部８３４は、次に実行すべきオペレーティングシステム以外の全てのオペレーティングシステムについて通常動作モードであるか否かのチェックが完了したか否かを判断する（ステップＳ２）。
【０１５３】
次に実行すべきオペレーティングシステム以外の全てのオペレーティングシステムについて通常動作モードであるか否かのチェックが完了していないと判断された場合（ステップＳ２でＮＯ）、ロックダウン制御部８３４は、次に実行すべきオペレーティングシステム以外の他のオペレーティングシステムであり、かつ通常動作モードであるか否かのチェックが完了していないオペレーティングシステムを選択する。そして、ロックダウン制御部８３４は、ロックダウンテーブル８３５を参照し、選択されたオペレーティングシステムが通常動作モードであるか否かを判断する（ステップＳ３）。
【０１５４】
通常動作モードであると判断された場合（ステップＳ３でＹＥＳ）、ロックダウン制御部８３４は、ロックダウンテーブル８３５内の占有ウェイ８３７で指定されたキャッシュ記憶データメモリをロックダウンする（ステップＳ４）。一方、通常動作モードでないと判断された場合（ステップＳ３でＮＯ）、ロックダウン制御部８３４は、ステップＳ２の処理に戻る。
【０１５５】
一方、次に実行すべきオペレーティングシステム以外の全てのオペレーティングシステムについて通常動作モードであるか否かのチェックが完了したと判断された場合（ステップＳ２でＹＥＳ）、ロックダウン制御部８３４は、ステップＳ１の処理へ戻り、オペレーティングシステム切替え待ち状態に移行する。
【０１５６】
図９に示した構成を用いることにより、キャッシュ記憶装置内にオペレーティングシステム識別子を搭載することなく、より簡易な方法で、オペレーティングシステムの実行状態に応じたキャッシュ記憶装置の有効活用を行うことができる。具体的には、通常動作モードのオペレーティングシステムが利用しているキャッシュ記憶データメモリがロックダウンされるため、当該キャッシュ記憶データメモリが他のオペレーティングシステムによって追い出されることがない。また、スリープモードに移行したオペレーティングシステムのキャッシュ記憶データメモリはロックダウンされないため、他のオペレーティングシステムがキャッシュ記憶装置内のキャッシュエントリを効率的に利用できるようになる。
【０１５７】
本実施の形態３は、キャッシュ記憶装置の記憶領域を分割して個々のオペレーティングシステムに完全に割り振る方法に比べて、処理の高速化の効果が期待できる。さらにまた、本実施の形態３は、データが一律にキャッシュエントリから無効化される方法ではないため、デバイスなどの状態によって、スリープモードに移行したオペレーティングシステムが再度通常動作モードに戻った場合に、過去に使用したキャッシュエントリを有効活用することが可能である。
【０１５８】
（実施の形態４）
本発明の実施の形態１においては、複数のオペレーティングシステムのうちのいずれかのオペレーティングシステムがスリープモードに移行した場合、当該オペレーティングシステムの使用しているキャッシュエントリが置換対象として完全に優先される。しかしながら、通常動作モードのオペレーティングシステムが最も過去に利用したキャッシュエントリを置換対象としたほうが有効な場合がある。
【０１５９】
例えば、オペレーティングシステムの実行状態として、スリープモード及び通常動作モードの他に通常動作モードよりも低速クロックで動作する低消費電力モードを設け、スリープモード時には、当該オペレーティングシステムの利用しているキャッシュエントリを置換対象として完全に優先し、低消費電力モード時には、当該オペレーティングシステムの利用しているキャッシュエントリをある程度置換対象として優先させる。すなわち、通常動作モードのオペレーティングシステムであっても、最も過去に利用したキャッシュエントリは、低消費電力モードのオペレーティングシステムが最近アクセスしたキャッシュエントリよりも優先して置換させることが望ましい場合にも対応可能にする。
【０１６０】
図１１は、低消費電力モードを考慮した本発明の実施の形態４における計算機システムの構成を示す図である。計算機システム１０００は、一つのプロセッサ上で複数のオペレーティングシステムを動作させる仮想計算機システムである。
【０１６１】
計算機システム１０００は、内部バス１１０、キャッシュ記憶装置１００１、プロセッサ１１２、メモリ１１３、周辺モジュール群１１４及びステータスレジスタ１１５を備えている。キャッシュ記憶装置１００１、メモリ１１３、周辺モジュール群１１４及びステータスレジスタ１１５は、それぞれ内部バス１１０に接続されている。内部バス１１０、プロセッサ１１２、メモリ１１３、周辺モジュール群１１４及びステータスレジスタ１１５は、図１において説明したのと同じ構成要素であるため、説明を省略し、異なる構成要素であるキャッシュ記憶装置１００１についてのみ説明する。
【０１６２】
また、近年のＬＳＩの高集積化により、計算機システム１０００を構成する複数の回路を一つのシステムＬＳＩ内に搭載することも可能であるが、本実施の形態４において、回路群が単一のシステムＬＳＩ内に実装されるか、それぞれ別のシステムＬＳＩで提供されるかについての限定は行わない。なお、図１１では、ステータスレジスタ１１５は、内部バス１１０に接続しているが、プロセッサ１１２に直接接続してもよい。
【０１６３】
キャッシュ記憶装置１００１は、キャッシュ記憶データメモリ１３０〜１３３と、置換対象選択部１３６と、アクセス対象選択部１３７と、バッファ１３８と、監視部１３９と、入出力部１４０と、キャッシュエントリ設定部１４１とを備えている。キャッシュエントリ設定部１４１は、参照時刻計算部１００４と、ＯＳ実行状態記憶部１００５とを備える。以下、実施の形態１と異なる構成要素である参照時刻計算部１００４と、ＯＳ実行状態記憶部１００５とについて説明する。
【０１６４】
参照時刻計算部１００４は、監視部１３９からの通知を受け取り、電力制御命令を実行するオペレーティングシステムの動作モードを、ＯＳ実行状態記憶部１００５を用いて管理する。ＯＳ実行状態記憶部１００５は、オペレーティングシステムを識別するオペレーティングシステム識別子と、各オペレーティングシステムの実行状態（通常動作モード、スリープモード及び低消費電力モード）と、オペレーティングシステムの実行状態に対応した未使用時刻加算指標（未使用時刻加算値）とをテーブル形式で保持している。
【０１６５】
なお、ここでは、ＯＳ実行状態記憶部１００５がオペレーティングシステムの動作モード及び未使用時刻加算指標をテーブル形式で保持するとしたが、他のフォーマットでオペレーティングシステムの動作モード及び未使用時刻加算指標を記憶してもよい。
【０１６６】
また、参照時刻計算部１００４は、置換対象選択部１３６からの問い合わせに対し、置換対象の候補となる複数のキャッシュエントリの参照時刻データを計算して、計算した参照時刻データを置換対象選択部１３６に通知する。参照時刻計算部１００４は、ＯＳ実行状態記憶部１００５と、個々のキャッシュエントリに設けられたオペレーティングシステム識別子と、参照時刻カウンタとを用いて、スリープモードのオペレーティングシステムが利用しているキャッシュエントリの参照時刻データを、最も過去に使用された値とし、低消費電力モードのオペレーティングシステムが利用しているキャッシュエントリの参照時刻データを、ある程度過去に使用された値として出力する。なお、キャッシュ記憶装置１００１は、スリープモード及び低消費電力モードのオペレーティングシステムが存在しない場合には、通常のＬＲＵアルゴリズムで動作する。
【０１６７】
以上のような構成により、スリープモードで実行しているオペレーティングシステムが利用しているキャッシュエントリ上のデータが最も過去に使用されたデータとみなされ、また、低消費電力モードで動作しているオペレーティングシステムが利用しているキャッシュエントリ上のデータが、ある程度過去に使用されたデータとみなされる。したがって、通常動作モードのオペレーティングシステムのデータが優先的にキャッシュ記憶装置１００１内に残るように制御することができる。これにより、オペレーティングシステムがスリープモード又は低消費電力モードに移行することで利用される頻度が少なくなったキャッシュエントリを、別のオペレーティングシステムで有効に利用することが可能となり、システム全体としての性能向上を図ることができる。
【０１６８】
なお、本実施の形態４において、計算機システム１０００が共有キャッシュ制御装置の一例に相当し、メモリ１１３が主記憶部の一例に相当し、キャッシュ記憶装置１００１がキャッシュ記憶装置の一例に相当し、監視部１３９が監視部の一例に相当し、キャッシュエントリ設定部１４１がキャッシュエントリ設定部の一例に相当し、置換対象選択部１３６が置換対象選択部の一例に相当し、ＯＳ実行状態記憶部１００５が実行状態記憶部の一例に相当し、参照時刻計算部１００４が参照時刻データ作成部の一例に相当する。
【０１６９】
図１２は、キャッシュエントリ選択処理の結果、キャッシュミスが発生した場合のキャッシュエントリ置換処理に関するキャッシュ記憶装置１００１の詳細な構成を示す図である。図１２において、参照時刻計算部１００４ａ〜１００４ｄ、ＯＳ実行状態記憶部１００５ａ〜１００５ｄ、参照時刻データ１００２ａ〜１００２ｄ、参照カウンタビット１００３ａ〜１００３ｄ及び加算器１０１０ａ〜１０１０ｄを除く他の構成要素は、図４と同じ構成要素である。また、参照時刻計算部１００４ａ〜１００４ｄは、図１１で説明した参照時刻計算部１００４に相当し、ＯＳ実行状態記憶部１００５ａ〜１００５ｄは、図１１で説明したＯＳ実行状態記憶部１００５に相当する。
【０１７０】
以下、キャッシュエントリ内のデータを新たなデータに置換するキャッシュエントリ置換処理の詳細について図１２を用いて説明する。
【０１７１】
まず、キャッシュミスなどにより、新たなデータをメモリ１１３から読み出して、キャッシュ記憶装置１００１に格納する必要がある場合、置換対象選択部１３６は、アクセス対象選択部１３７からキャッシュミス信号４１０を受け取り、キャッシュエントリ置換処理を開始する。
【０１７２】
置換対象選択部１３６は、アドレス信号２００内に含まれるインデックス番号２０２を用いて、キャッシュ記憶データメモリ１３０〜１３３内の４つのキャッシュエントリを選択する。ここでは、キャッシュエントリ２１６ａ〜２１６ｄが選択されたものとする。
【０１７３】
この４つのキャッシュエントリ２１６ａ〜２１６ｄの中から、一つのキャッシュエントリが置換対象として選択される。そのため、本実施の形態４におけるキャッシュ記憶装置１００１では、監視部１３９が、プロセッサ１１２で実行される電力制御命令を監視し、当該電力制御命令を実行するオペレーティングシステムの状態変化を参照時刻計算部１００４に通知し、参照時刻計算部１００４が、各オペレーティングシステムの実行状態を管理する。
【０１７４】
これにより、スリープモードに移行するオペレーティングシステムが利用していたキャッシュエントリを最も過去に使用された状態に設定することが可能となり、また、低消費電力モードで動作しているオペレーティングシステムが利用しているキャッシュエントリをある程度過去に使用された状態に設定することが可能となる。したがって、通常動作モードのオペレーティングシステムのデータが優先的にキャッシュ記憶装置１００１内に残るように制御することができ、同時に、通常動作モードのオペレーティングシステムであっても最も過去に利用したキャッシュエントリは、低消費電力モードのオペレーティングシステムが最近アクセスしたキャッシュエントリよりも優先して置換させることが可能となる。
【０１７５】
第１〜第３のオペレーティングシステム１２１，１２２，１２３のそれぞれは、個々のオペレーティングシステム上で動作しているタスク数及びタスクの状態などによって、スリープモード又は低消費電力モードに移行する場合、電力制御命令を発行する。また、第１〜第３のオペレーティングシステム１２１，１２２，１２３のそれぞれは、割込みなどの発生を受けて処理負荷が変化した場合、スリープモード又は低消費電力モードから通常動作モードに復帰する。
【０１７６】
参照時刻計算部１００４ａ〜１００４ｄは、ＯＳ実行状態記憶部１００５ａ〜１００５ｄを用いて、個々のオペレーティングシステムの動作状態（実行状態）と未使用時間加算指標とを管理する。なお、本実施の形態４では、個々のキャッシュエントリ設定部１４１ａ〜１４１ｄ内に参照時刻計算部１００４ａ〜１００４ｄ及びＯＳ実行状態記憶部１００５ａ〜１００５ｄを搭載する構成としているが、キャッシュエントリ設定部１４１ａ〜１４１ｄ間で一つの参照時刻計算部１００４及び一つのＯＳ実行状態記憶部１００５を共有してもよい。これにより、データの一貫性をより効率的に保障することができる。
【０１７７】
図１２では、ＯＳ実行状態記憶部１００５ａのみ、テーブル内の詳細を示している。図１２のＯＳ実行状態記憶部１００５ａが記憶するテーブルでは、３つのオペレーティングシステムが存在している。３つのオペレーティングシステムのそれぞれのオペレーティングシステム識別子は、“０”、“１”及び“２”であり、それぞれの実行状態は、通常動作モード、スリープモード及び低消費電力モードであり、それぞれの未使用時刻加算指標（Ｖａｌ）は、“０”、“４”及び“２”であると仮定している。
【０１７８】
なお、図１２では、通常動作モードであるオペレーティングシステムの実行状態が、“ＲＵＮ”と表され、スリープモードであるオペレーティングシステムの実行状態が、“ＳＬＥＥＰ”と表され、低消費電力モードであるオペレーティングシステムの実行状態が、“ＳＬＯＷ”と表されている。
【０１７９】
つまり、ＯＳ実行状態記憶部１００５ａ〜１００５ｄは、未使用時刻加算指標として、通常動作モードであれば“０”を保持し、低消費電力モードであれば“２”を保持し、スリープモードであれば“４”を保持している。
【０１８０】
次に、参照時刻計算部１００４ａ〜１００４ｄは、選択されたキャッシュエントリ２１６ａ〜２１６ｄ内の参照時刻カウンタ２１４と、選択されたキャッシュエントリ２１６ａ〜２１６ｄ内の有効ビット２１２と、ＯＳ実行状態記憶部１００５ａ〜１００５ｄ内の未使用時刻加算指標（Ｖａｌ）とを用いて、各キャッシュエントリ２１６ａ〜２１６ｄに対応付けられた参照時刻データを生成する。
【０１８１】
キャッシュエントリ２１６ａに対応付けられた参照時刻データ１００２ａは、有効ビット２１２を否定演算子２２０ａによって反転させた無効ビット２２２ａ、及び、加算器１０１０ａを用いて、各キャッシュエントリの参照時刻カウンタ２１４の値にＯＳ実行状態記憶部１００５ａに記憶されている未使用時刻加算指標（Ｖａｌ）を加えた参照カウンタビット１００３ａから構成される。同様に、キャッシュエントリ２１６ｂ〜２１６ｄに対応付けられた参照時刻データ１００２ｂ〜１００２ｄは、それぞれのキャッシュエントリの有効ビット２１２を否定演算子２２０ｂ〜２２０ｄによって反転させた無効ビット２２２ｂ〜２２２ｄ、及び、加算器１０１０ｂ〜１０１０ｄを用いて、それぞれのキャッシュエントリの参照時刻カウンタ２１４の値にＯＳ実行状態記憶部１００５ｂ〜１００５ｄに記憶されている未使用時間加算指標（Ｖａｌ）を加えた参照カウンタビット１００３ｂ〜１００３ｄから構成される。
【０１８２】
置換対象選択部１３６は、これらの参照時刻データ１００２ａ〜１００２ｄを受け取って比較し、参照時刻データの数値が最も大きいキャッシュエントリを置換対象として選択し、選択したキャッシュエントリを置換対象キャッシュエントリ２３０として出力する。また、置換対象選択部１３６は、選択されたキャッシュエントリを置換することで追い出されたデータがある場合、置換対象のキャッシュエントリと同じウェイのデータをバッファ１３８に書き込み、置換前のデータをメモリ１１３へ書き戻す。
【０１８３】
図１３は、参照時刻データ１００２ａの参照カウンタビット１００３ａが取り得る値を示す図である。図１３では、オペレーティングシステムの実行状態が通常動作モード（“ＲＵＮ”）、スリープモード（“ＳＬＥＥＰ”）及び低消費電力モード（“ＳＬＯＷ”）のうちのいずれであるか、及び、参照時刻カウンタ（“Ｃｎｔ”）２１４の値の変化によって、参照カウンタビット（“ＣＮＴ”）１００３ａがどのような値になるかについて示している。
【０１８４】
例えば、レコード１１０３の場合、オペレーティングシステムの実行状態は低消費電力モードであり、参照時刻カウンタ２１４の値は“０”である。低消費電力モードに対応付けられている未使用時間加算指標は、“２”であるので、参照時刻カウンタ２１４の値と未使用時間加算指標とを加算することで、参照カウンタビット１００３ａの値は、“２”となる。また、レコード１１０４の場合、オペレーティングシステムの実行状態は通常動作モードであり、参照時刻カウンタ２１４の値は“３”である。通常動作モードに対応付けられている未使用時間加算指標は、“０”であるので、参照時刻カウンタ２１４の値と未使用時間加算指標とを加算することで、参照カウンタビット１００３ａの値は、“３”となる。なお、図１３に示す各値は、２進数で表している。
【０１８５】
ここで、レコード１１０３とレコード１１０４とを比較すると、レコード１１０４における参照カウンタビットの値のほうが、レコード１１０３における参照カウンタビットの値よりも大きい。そのため、通常動作モード（レコード１１０４）のオペレーティングシステムが利用しているキャッシュエントリであっても、低消費電力モード（レコード１１０３）のオペレーティングシステムが利用しているキャッシュエントリよりも優先して置換対象となる場合があることが理解できる。
【０１８６】
このように、ＯＳ実行状態記憶部１００５ａ〜１００５ｄは、オペレーティングシステムの実行状態と、実行状態に応じて参照時刻カウント値に加算する値を表す未使用時刻加算指標とを記憶する。また、参照時刻計算部１００４ａ〜１００４ｄは、キャッシュエントリを使用しているオペレーティングシステムの実行状態に応じた未使用時刻加算指標を、キャッシュエントリに含まれる参照時刻カウント値に加算し、参照時刻カウント値を含む参照時刻データ１００２ａ〜１００２ｄを複数のキャッシュエントリ毎に作成する。
【０１８７】
置換対象選択部１３６は、参照時刻計算部１００４ａ〜１００４ｄによって作成された複数の参照時刻データ１００２ａ〜１００２ｄに含まれる複数の参照時刻カウント値のうち、値が最も大きい参照時刻カウント値に対応するキャッシュエントリを、置換対象となるキャッシュエントリとして選択する。
【０１８８】
なお、スリープモードに対応付けられる未使用時刻加算指標は、低消費電力モードに対応付けられる未使用時刻加算指標に比べて大きい。また、低消費電力モードに対応付けられる未使用時刻加算指標は、通常動作モードに対応付けられる未使用時刻加算指標に比べて大きく、かつスリープモードに対応付けられる未使用時刻加算指標に比べて小さい。
【０１８９】
この構成により、有効ビット２１２がＯＮでないキャッシュエントリを最優先の置換対象とし、次に、スリープモード及び低消費電力モードのオペレーティングシステムが利用しているキャッシュエントリが優先して置換対象として選択される。また、低消費電力モードのオペレーティングシステムが利用するキャッシュエントリを、通常動作モードのオペレーティングシステムが利用するキャッシュエントリに比べてある程度優先的に置換対象とすることができる。これにより、複数のオペレーティングシステムがキャッシュ記憶装置を共有するシステムにおいて、一つのオペレーティングシステムによって利用頻度が少なくなったキャッシュエントリを、別のオペレーティングシステムが優先的に利用することができ、限られたサイズのキャッシュ記憶装置を有効に活用することが可能となる。
【０１９０】
以上により、有効でないキャッシュエントリを最優先で置換対象とするとともに、オペレーティングシステムの実行状態として、スリープモード及び通常動作モードの他に通常動作モードよりも低速クロックで動作する低消費電力モードを設け、スリープモード時には、当該オペレーティングシステムの利用しているキャッシュエントリを置換対象として完全に優先し、低消費電力モード時には、当該オペレーティングシステムの利用しているキャッシュエントリをある程度置換対象として優先させることが可能となる。
【０１９１】
また、一つのオペレーティングシステムが通常動作モードから低消費電力モード（ここでは、低速クロックで動作するモードを意味する）に移行した場合などにおいて、低消費電力モードにおけるオペレーティングシステムは、スリープモードと異なり、低速ながらも動作する。そのため、当該低消費電力モードのオペレーティングシステムが利用していたキャッシュエントリを一律に最も過去に使用された状態に設定するのではなく、オペレーティングシステムの実行状態に応じて、置換対象とするキャッシュエントリの優先度を可変する。これにより、低消費電力モードのオペレーティングシステムが、ある程度だけ置換対象として優先されるので、キャッシュエントリを有効活用することができる。
【０１９２】
また、本実施の形態４は、データが一律にキャッシュエントリから無効化される方法ではないため、デバイスなどの状態によって、スリープモード又は低消費電力動作モードに移行したオペレーティングシステムが再度通常動作モードに戻った場合に、過去に使用したキャッシュエントリを有効活用することが可能である。通常動作モードに戻った場合、キャッシュ記憶装置は、ＬＲＵアルゴリズムで置換対象を選択することになる。
【０１９３】
（実施の形態５）
本発明の実施の形態２においては、複数のプロセッサのうちのいずれかのプロセッサがスリープモードに移行した場合、当該プロセッサの使用しているキャッシュエントリが置換対象として完全に優先される。しかしながら、通常動作モードのプロセッサが最も過去に利用したキャッシュエントリを置換対象としたほうが有効な場合がある。
【０１９４】
例えば、プロセッサの実行状態として、スリープモード及び通常動作モードの他に通常動作モードよりも低速クロックで動作する低消費電力モードを設け、スリープモード時には、当該プロセッサの利用しているキャッシュエントリを置換対象として完全に優先し、低消費電力モード時には、当該プロセッサの利用しているキャッシュエントリをある程度置換対象として優先させる。すなわち、通常動作モードのプロセッサであっても、最も過去に利用したキャッシュエントリは、低消費電力モードのプロセッサが最近アクセスしたキャッシュエントリよりも優先して置換させることが望ましい場合にも対応可能にする。
【０１９５】
図１４は、低消費電力モードを考慮した本発明の実施の形態５における計算機システムの構成を示す図である。計算機システム１２００は、複数のプロセッサがメモリ及びキャッシュ記憶装置を共有するマルチプロセッサシステムである。
【０１９６】
計算機システム１２００は、内部バス１１０、複数のプロセッサ（第１のプロセッサ５０２及び第２のプロセッサ５０３）、複数のレベル１キャッシュ記憶装置（第１のレベル１キャッシュ記憶装置５０４及び第２のレベル１キャッシュ記憶装置５０５）、レベル２キャッシュ記憶装置１２０１、メモリ５０６、周辺モジュール群１１４及びステータスレジスタ１１５を備えている。内部バス１１０、複数のプロセッサ（第１のプロセッサ５０２及び第２のプロセッサ５０３）、複数のレベル１キャッシュ記憶装置（第１のレベル１キャッシュ記憶装置５０４及び第２のレベル１キャッシュ記憶装置５０５）、メモリ５０６、周辺モジュール群１１４及びステータスレジスタ１１５は、図６において説明した構成要素と同じであるため、説明を省略し、異なる構成要素であるレベル２キャッシュ記憶装置１２０１についてのみ説明する。
【０１９７】
また、近年のＬＳＩの高集積化により、計算機システム１２００を構成する複数の回路を一つのシステムＬＳＩ内に搭載することも可能であるが、本実施の形態５において、回路群が単一のシステムＬＳＩ内に実装されるか、それぞれ別のシステムＬＳＩで提供されるかについての限定は行わない。なお、図１４では、ステータスレジスタ１１５は、内部バス１１０に接続しているが、第１のプロセッサ５０２及び第２のプロセッサ５０３に直接接続してもよい。
【０１９８】
レベル２キャッシュ記憶装置１２０１は、第１のプロセッサ５０２及び第２のプロセッサ５０３から共有され、第１のプロセッサ５０２及び第２のプロセッサ５０３が第１のレベル１キャッシュ記憶装置５０４及び第２のレベル１キャッシュ記憶装置５０５を介して参照したデータ及び命令を一時的に格納しておくための記憶手段である。レベル２キャッシュ記憶装置１２０１は、キャッシュ記憶データメモリ５１０〜５１３と、参照時刻計算部１２０４と、プロセッサ実行状態記憶部１２０５と、置換対象選択部１３６と、アクセス対象選択部１３７と、バッファ１３８と、監視部５１９と、入出力部１４０とを備えている。以下、実施の形態２と異なる構成要素である参照時刻計算部１２０４と、プロセッサ実行状態記憶部１２０５とについて説明する。
【０１９９】
参照時刻計算部１２０４は、監視部５１９からの通知を受け取り、個々のプロセッサの動作モードを、プロセッサ実行状態記憶部１２０５を用いて管理する。プロセッサ実行状態記憶部１２０５は、プロセッサを識別するプロセッサ識別子と、各プロセッサの実行状態（通常動作モード、スリープモード及び低消費電力モード）と、プロセッサの実行状態に対応した未使用時刻加算指標とをテーブル形式で保持している。
【０２００】
なお、ここでは、プロセッサ実行状態記憶部１２０５がプロセッサの動作モード及び未使用時刻加算指標をテーブル形式で保持するとしたが、他のフォーマットでプロセッサの動作モード及び未使用時刻加算指標を記憶してもよい。
【０２０１】
また、参照時刻計算部１２０４は、置換対象選択部１３６からの問い合わせに対し、置換対象の候補となる複数のキャッシュエントリの参照時刻データを計算して、計算した参照時刻データを置換対象選択部１３６に通知する。参照時刻計算部１２０４は、プロセッサ実行状態記憶部１２０５と、個々のキャッシュエントリに設けられたプロセッサ識別子と、参照時刻カウンタとを用いて、スリープモードのプロセッサが利用しているキャッシュエントリの参照時刻データを、最も過去に使用された値とし、低消費電力モードのプロセッサが利用しているキャッシュエントリの参照時刻データを、ある程度過去に使用された値として出力する。なお、レベル２キャッシュ記憶装置１２０１は、スリープモード及び低消費電力モードのプロセッサが存在しない場合には、通常のＬＲＵアルゴリズムで動作する。
【０２０２】
以上のような構成により、スリープモードで実行しているプロセッサが利用しているキャッシュエントリ上のデータが、最も過去に使用されたデータとみなされ、また、低消費電力モードで動作しているプロセッサが利用しているキャッシュエントリ上のデータが、ある程度過去に使用されたデータとみなされる。したがって、通常動作モードのプロセッサのデータが優先的にキャッシュ記憶装置１２０１内に残るように制御することができる。これにより、プロセッサがスリープモード又は低消費電力モードに移行することで利用される頻度が少なくなったキャッシュエントリを、別のプロセッサで有効に利用することが可能となり、システム全体としての性能向上を図ることができる。
【０２０３】
なお、本実施の形態５において、計算機システム１２００が共有キャッシュ制御装置の一例に相当し、メモリ５０６が主記憶部の一例に相当し、レベル２キャッシュ記憶装置１２０１がキャッシュ記憶装置の一例に相当し、監視部５１９が監視部の一例に相当し、キャッシュエントリ設定部１４１がキャッシュエントリ設定部の一例に相当し、置換対象選択部１３６が置換対象選択部の一例に相当し、プロセッサ実行状態記憶部１２０５が実行状態記憶部の一例に相当し、参照時刻計算部１２０４が参照時刻データ作成部の一例に相当する。
【０２０４】
図１５は、キャッシュエントリ選択処理の結果、キャッシュミスが発生した場合のキャッシュエントリ置換処理に関するレベル２キャッシュ記憶装置１２０１の詳細な構成を示す図である。図１５において、参照時刻計算部１２０４ａ〜１２０４ｄ及びプロセッサ実行状態記憶部１２０５ａ〜１２０５ｄを除く他の構成要素は、図８又は図１２と同じ構成要素である。また、参照時刻計算部１２０４ａ〜１２０４ｄは、図１４で説明した参照時刻計算部１２０４に相当し、プロセッサ実行状態記憶部１２０５ａ〜１２０５ｄは、図１４で説明したプロセッサ実行状態記憶部１２０５に相当する。
【０２０５】
以下、キャッシュエントリ内のデータを新たなデータに置換するキャッシュエントリ置換処理の詳細について図１５を用いて説明する。
【０２０６】
まず、キャッシュミスなどにより、新たなデータをメモリ５０６から読み出して、レベル２キャッシュ記憶装置１２０１に格納する必要がある場合、置換対象選択部１３６は、アクセス対象選択部１３７からキャッシュミス信号４１０を受け取り、キャッシュエントリ置換処理を開始する。
【０２０７】
置換対象選択部１３６は、アドレス信号２００内に含まれるインデックス番号２０２を用いて、キャッシュ記憶データメモリ５１０〜５１３内の４つのキャッシュエントリを選択する。ここでは、キャッシュエントリ２１６ａ〜２１６ｄが選択されたものとする。
【０２０８】
この４つのキャッシュエントリ２１６ａ〜２１６ｄの中から、一つのキャッシュエントリが置換対象として選択される。そのため、本実施の形態５におけるキャッシュ記憶装置１２０１では、監視部５１９が、第１のプロセッサ５０２及び第２のプロセッサ５０３で実行される電力制御命令を監視し、当該電力制御命令を実行するプロセッサの状態変化を参照時刻計算部１２０４に通知し、参照時刻計算部１２０４が、各プロセッサの実行状態を管理する。
【０２０９】
これにより、スリープモードに移行するプロセッサが利用していたキャッシュエントリを最も過去に使用された状態に設定することが可能となり、また、低消費電力モードで動作しているプロセッサが利用しているキャッシュエントリをある程度過去に使用された状態に設定することが可能となる。したがって、通常動作モードのプロセッサのデータが優先的にレベル２キャッシュ記憶装置１２０１内に残るように制御することができ、同時に、通常動作モードのプロセッサであっても最も過去に利用したキャッシュエントリは、低消費電力モードのプロセッサが最近アクセスしたキャッシュエントリよりも優先して置換させることが可能となる。
【０２１０】
第１のプロセッサ５０２及び第２のプロセッサ５０３のそれぞれは、対応する第１のオペレーティングシステム５２１及び第２のオペレーティングシステム５２２上で動作しているタスク数及びタスクの状態などによって、スリープモード又は低消費電力モードに移行する場合、電力制御命令を発行する。また、第１のプロセッサ５０２及び第２のプロセッサ５０３のそれぞれは、割込みなどの発生を受けて処理負荷が変化した場合、スリープモード又は低消費電力モードから通常動作モードに復帰する。
【０２１１】
参照時刻計算部１２０４ａ〜１２０４ｄは、プロセッサ実行状態記憶部１２０５ａ〜１２０５ｄを用いて、個々のプロセッサの実行状態と未使用時間加算指標とを管理する。なお、本実施の形態５では、個々のキャッシュエントリ設定部１４１ａ〜１４１ｄ内に参照時刻計算部１２０４ａ〜１２０４ｄ及びプロセッサ実行状態記憶部１２０５ａ〜１２０５ｄを搭載する構成としているが、キャッシュエントリ設定部１４１ａ〜１４１ｄ間で一つの参照時刻計算部１２０４及び一つのプロセッサ実行状態記憶部１２０５を共有してもよい。これにより、データの一貫性をより効率的に保障することができる。
【０２１２】
図１５では、プロセッサ実行状態記憶部１２０５ａのみ、テーブル内の詳細を示している。図１５のプロセッサ実行状態記憶部１２０５ａが記憶するテーブルでは、２つのプロセッサが存在している。２つのプロセッサのそれぞれのプロセッサ識別子は、“０”及び“１”であり、それぞれの実行状態は、通常動作モード及び低消費電力モードであり、それぞれの未使用時刻加算指標（Ｖａｌ）は、“０”及び“２”であると仮定している。また、スリープモードに対応する未使用時刻加算指標（Ｖａｌ）は、“４”とする。
【０２１３】
なお、図１５では、通常動作モードであるプロセッサの実行状態が、“ＲＵＮ”と表され、低消費電力モードであるプロセッサの実行状態が、“ＳＬＯＷ”と表されている。
【０２１４】
つまり、プロセッサ実行状態記憶部１２０５ａ〜１２０５ｄは、未使用時刻加算指標として、通常動作モードであれば“０”を保持し、低消費電力モードであれば“２”を保持し、スリープモードであれば“４”を保持している。
【０２１５】
次に、参照時刻計算部１２０４ａ〜１２０４ｄは、選択されたキャッシュエントリ２１６ａ〜２１６ｄ内の参照時刻カウンタ２１４と、選択されたキャッシュエントリ２１６ａ〜２１６ｄ内の有効ビット２１２と、プロセッサ実行状態記憶部１２０５ａ〜１２０５ｄ内の未使用時刻加算指標（Ｖａｌ）とを用いて、各キャッシュエントリ２１６ａ〜２１６ｄに対応付けられた参照時刻データを生成する。
【０２１６】
キャッシュエントリ２１６ａに対応付けられた参照時刻データ１００２ａは、有効ビット２１２を否定演算子２２０ａによって反転させた無効ビット２２２ａ、及び、加算器１０１０ａを用いて、各キャッシュエントリの参照時刻カウンタ２１４の値にプロセッサ実行状態記憶部１２０５ａに記憶されている未使用時刻加算指標（Ｖａｌ）を加えた参照カウンタビット１００３ａから構成される。同様に、キャッシュエントリ２１６ｂ〜２１６ｄに対応付けられた参照時刻データ１００２ｂ〜１００２ｄは、それぞれのキャッシュエントリの有効ビット２１２を否定演算子２２０ｂ〜２２０ｄによって反転させた無効ビット２２２ｂ〜２２２ｄ、及び、加算器１０１０ｂ〜１０１０ｄを用いて、それぞれのキャッシュエントリの参照時刻カウンタ２１４の値にプロセッサ実行状態記憶部１２０５ｂ〜１２０５ｄに記憶されている未使用時間加算指標（Ｖａｌ）を加えた参照カウンタビット１００３ｂ〜１００３ｄから構成される。
【０２１７】
置換対象選択部１３６は、これらの参照時刻データ１００２ａ〜１００２ｄを受け取って比較し、参照時刻データの数値が最も大きいキャッシュエントリを置換対象として選択し、選択したキャッシュエントリを置換対象キャッシュエントリ２３０として出力する。また、置換対象選択部１３６は、選択されたキャッシュエントリを置換することで追い出されたデータがある場合、置換対象のキャッシュエントリと同じウェイのデータをバッファ１３８に書き込み、置換前のデータをメモリ５０６へ書き戻す。
【０２１８】
このように、プロセッサ実行状態記憶部１２０５ａ〜１２０５ｄは、プロセッサの実行状態と、実行状態に応じて参照時刻カウント値に加算する値を表す未使用時刻加算指標とを記憶する。参照時刻計算部１２０４ａ〜１２０４ｄは、キャッシュエントリを使用しているプロセッサの実行状態に応じた未使用時刻加算指標を、キャッシュエントリに含まれる参照時刻カウント値に加算し、参照時刻カウント値を含む参照時刻データ１００２ａ〜１００２ｄを複数のキャッシュエントリ毎に作成する。
【０２１９】
置換対象選択部１３６は、参照時刻計算部１２０４ａ〜１２０４ｄによって作成された複数の参照時刻データ１００２ａ〜１００２ｄに含まれる複数の参照時刻カウント値のうち、値が最も大きい参照時刻カウント値に対応するキャッシュエントリを、置換対象となるキャッシュエントリとして選択する。
【０２２０】
なお、スリープモードに対応付けられる未使用時刻加算指標は、低消費電力モードに対応付けられる未使用時刻加算指標に比べて大きい。また、低消費電力モードに対応付けられる未使用時刻加算指標は、通常動作モードに対応付けられる未使用時刻加算指標に比べて大きく、かつスリープモードに対応付けられる未使用時刻加算指標に比べて小さい。
【０２２１】
この構成により、有効ビット２１２がＯＮでないキャッシュエントリを最優先の置換対象とし、次に、スリープモード及び低消費電力モードのプロセッサが利用しているキャッシュエントリが優先して置換対象として選択される。また、低消費電力モードのプロセッサが利用するキャッシュエントリを、通常動作モードのプロセッサが利用するキャッシュエントリに比べてある程度優先的に置換対象とすることができる。これにより、複数のプロセッサがキャッシュ記憶装置を共有するシステムにおいて、一つのプロセッサによって利用頻度が少なくなったキャッシュエントリを、別のプロセッサが優先的に利用することができ、限られたサイズのキャッシュ記憶装置を有効に活用することが可能となる。
【０２２２】
以上により、有効でないキャッシュエントリを最優先で置換対象とするとともに、プロセッサの実行状態として、スリープモード及び通常動作モードの他に通常動作モードよりも低速クロックで動作する低消費電力モードを設け、スリープモード時には、当該プロセッサの利用しているキャッシュエントリを置換対象として完全に優先し、低消費電力モード時には、当該プロセッサの利用しているキャッシュエントリをある程度置換対象として優先させることが可能となる。
【０２２３】
また、一つのプロセッサが通常動作モードから低消費電力モード（ここでは、低速クロックで動作するモードを意味する）に移行した場合などにおいて、低消費電力モードにおけるプロセッサは、スリープモードと異なり、低速ながらも動作する。そのため、当該低消費電力モードのプロセッサが利用していたキャッシュエントリを一律に最も過去に使用された状態に設定するのではなく、プロセッサの実行状態に応じて、置換対象とするキャッシュエントリの優先度を可変とする。これにより、低消費電力モードのプロセッサが、ある程度置換対象として優先されるので、キャッシュエントリの有効活用することができる。
【０２２４】
また、本実施の形態５は、データが一律にキャッシュエントリから無効化される方法ではないため、デバイスなどの状態によって、スリープモード又は低消費電力動作モードに移行したプロセッサが再度通常動作モードに戻った場合に、過去に使用したキャッシュエントリを有効活用することが可能である。通常動作モードに戻った場合、レベル２キャッシュ記憶装置は、ＬＲＵアルゴリズムで置換対象を選択することになる。
【０２２５】
（実施の形態６）
図１６は、本発明の実施の形態６における計算機システム１３００の構成を示す図である。図１６に示す計算機システム１３００は、メモリ１１３と、周辺モジュール群１１４と集積回路１３０１とを備える。
【０２２６】
集積回路１３０１は、キャッシュ記憶装置１３０２と、プロセッサ１１２とステータスレジスタ１１５とを備える。キャッシュ記憶装置１３０２は、キャッシュ記憶データメモリ１３１０〜１３１３と、キャッシュエントリ設定回路１３２１と、置換対象選択回路１３１６と、アクセス対象選択回路１３１７と、バッファ１３１８と、監視回路１３１９と、入出力回路１３２０とを備えている。キャッシュエントリ設定回路１３２１は、参照時刻計算回路１３１４と、ＯＳ実行状態記憶回路１３１５とを備える。
【０２２７】
実施の形態６におけるキャッシュ記憶装置１３０２、キャッシュ記憶データメモリ１３１０〜１３１３、キャッシュエントリ設定回路１３２１、置換対象選択回路１３１６、アクセス対象選択回路１３１７、バッファ１３１８、監視回路１３１９、入出力回路１３２０、参照時刻計算回路１３１４及びＯＳ実行状態記憶回路１３１５は、それぞれ、実施の形態１におけるキャッシュ記憶装置１１１、キャッシュ記憶データメモリ１３０〜１３３、キャッシュエントリ設定部１４１、置換対象選択部１３６、アクセス対象選択部１３７、バッファ１３８、監視部１３９、入出力部１４０、参照時刻計算部１３４及びＯＳ実行状態記憶部１３５と同じ機能を有している。
【０２２８】
このように、キャッシュ記憶装置１３０２と、ステータスレジスタ１１５と、プロセッサ１１２とは、１つの集積回路に搭載することができる。
【０２２９】
なお、上述した具体的実施形態には以下の構成を有する発明が主に含まれている。
【０２３０】
本発明の一局面に係る共有キャッシュ制御装置は、主記憶部と、複数のオペレーティングシステム又は複数のプロセッサによって共有され、かつ、前記主記憶部から読み出されたデータを格納する複数のキャッシュエントリから構成されるキャッシュ記憶装置と、前記複数のオペレーティングシステムを動作させるプロセッサ又は前記複数のプロセッサに供給される電力を制御するための電力制御命令を監視する監視部と、キャッシュミスが発生し、前記複数のキャッシュエントリの中から置換対象となるキャッシュエントリを選択する際に、前記電力制御命令に基づいて変更される前記複数のオペレーティングシステム又は前記複数のプロセッサの実行状態を用いて、前記電力制御命令を実行した前記オペレーティングシステム又は前記プロセッサが利用していたキャッシュエントリを、過去に使用された状態に設定するキャッシュエントリ設定部と、前記キャッシュエントリ設定部によって過去に使用された状態に設定された前記キャッシュエントリを、置換対象となるキャッシュエントリとして選択する置換対象選択部とを備える。
【０２３１】
本発明の他の局面に係る共有キャッシュ制御方法は、複数のオペレーティングシステム又は複数のプロセッサによって共有され、かつ、主記憶部から読み出されたデータを格納する複数のキャッシュエントリから構成されるキャッシュ記憶装置にデータを記憶するキャッシュ記憶ステップと、前記複数のオペレーティングシステムを動作させるプロセッサ又は前記複数のプロセッサに供給される電力を制御するための電力制御命令を監視する監視ステップと、前記複数のキャッシュエントリの中から置換対象となるキャッシュエントリを選択する際に、前記電力制御命令に基づいて変更される前記複数のオペレーティングシステム又は前記複数のプロセッサの前記実行状態を用いて、前記電力制御命令を実行した前記オペレーティングシステム又は前記プロセッサが利用していたキャッシュエントリを、過去に使用された状態に設定するキャッシュエントリ設定ステップと、前記キャッシュエントリ設定ステップにおいて過去に使用された状態に設定された前記キャッシュエントリを、置換対象となるキャッシュエントリとして選択する置換対象選択ステップとを含む。
【０２３２】
本発明の他の局面に係る集積回路は、複数のオペレーティングシステム又は複数のプロセッサによって共有され、かつ、主記憶装置から読み出されたデータを格納する複数のキャッシュエントリから構成されるキャッシュ記憶装置と、前記複数のオペレーティングシステムを動作させるプロセッサ又は前記複数のプロセッサに供給される電力を制御するための電力制御命令を監視する監視回路と、前記複数のキャッシュエントリの中から置換対象となるキャッシュエントリを選択する際に、前記電力制御命令に基づいて変更される前記複数のオペレーティングシステム又は前記複数のプロセッサの実行状態を用いて、前記電力制御命令を実行した前記オペレーティングシステム又は前記プロセッサが利用していたキャッシュエントリを、過去に使用された状態に設定するキャッシュエントリ設定回路と、前記キャッシュエントリ設定回路によって過去に使用された状態に設定された前記キャッシュエントリを、置換対象となるキャッシュエントリとして選択する置換対象選択回路とを備える。
【０２３３】
これらの構成によれば、キャッシュ記憶装置は、複数のオペレーティングシステム又は複数のプロセッサによって共有され、かつ、主記憶部から読み出されたデータを格納する複数のキャッシュエントリから構成される。複数のオペレーティングシステムを動作させるプロセッサ又は複数のプロセッサに供給される電力を制御するための電力制御命令が監視される。そして、複数のキャッシュエントリの中から置換対象となるキャッシュエントリが選択される際に、電力制御命令に基づいて変更される複数のオペレーティングシステム又は複数のプロセッサの実行状態を用いて、電力制御命令を実行したオペレーティングシステム又はプロセッサが利用していたキャッシュエントリが、過去に使用された状態に設定される。その後、過去に使用された状態に設定されたキャッシュエントリが、置換対象となるキャッシュエントリとして選択される。
【０２３４】
したがって、複数のオペレーティングシステム又は複数のプロセッサがキャッシュ記憶装置を共有する場合において、実行状態が変化することにより、１のオペレーティングシステム又は１のプロセッサによって利用されなくなったキャッシュ記憶装置内のキャッシュエントリを、他のオペレーティングシステム又は他のプロセッサが優先的に利用できるようになり、複数のオペレーティングシステム又は複数のプロセッサが１のキャッシュ記憶装置を有効活用できる。
【０２３５】
また、上記の共有キャッシュ制御装置において、前記電力制御命令は、前記オペレーティングシステムの動作停止を指示するスリープ命令を少なくとも含み、前記実行状態は、前記オペレーティングシステムを高速クロックで動作する通常動作モードと、前記オペレーティングシステムの動作を停止するスリープモードとを少なくとも含み、前記キャッシュエントリ設定部は、前記スリープモードの前記オペレーティングシステムが利用しているキャッシュエントリを、前記通常動作モードの前記オペレーティングシステムが利用しているキャッシュエントリより過去に使用された状態に設定し、前記置換対象選択部は、前記キャッシュエントリ設定部によって最も過去に使用された状態に設定された前記キャッシュエントリを、置換対象となるキャッシュエントリとして選択することが好ましい。
【０２３６】
この構成によれば、電力制御命令は、オペレーティングシステムの動作停止を指示するスリープ命令を少なくとも含み、実行状態は、オペレーティングシステムを高速クロックで動作する通常動作モードと、オペレーティングシステムの動作を停止するスリープモードとを少なくとも含む。スリープモードのオペレーティングシステムが利用しているキャッシュエントリが、通常動作モードのオペレーティングシステムが利用しているキャッシュエントリより過去に使用された状態に設定される。そして、最も過去に使用された状態に設定されたキャッシュエントリが、置換対象となるキャッシュエントリとして選択される。
【０２３７】
したがって、通常動作モードのオペレーティングシステムは、スリープモードのオペレーティングシステムが使用していたキャッシュエントリを使用することが可能となり、複数のオペレーティングシステムが１のキャッシュ記憶装置を有効活用できる。
【０２３８】
また、上記の共有キャッシュ制御装置において、前記キャッシュエントリは、当該キャッシュエントリを使用するオペレーティングシステムを識別するためのオペレーティングシステム識別子と、当該キャッシュエントリが参照された時刻に応じてカウントされ、参照された時刻が古くなるほど値が大きくなる参照時刻カウント値と、データとを含み、前記キャッシュエントリ設定部は、前記電力制御命令に基づいて変更される前記複数のオペレーティングシステムの実行状態と、前記実行状態に応じて予め設定される値であり、前記通常動作モードに対応する値よりも前記スリープモードに対応する値の方が大きい実行状態値とを記憶する実行状態記憶部と、前記実行状態値と、前記参照時刻カウント値とを含む参照時刻データを前記複数のキャッシュエントリ毎に作成する参照時刻データ作成部とを含み、前記置換対象選択部は、前記参照時刻データ作成部によって作成された前記複数のキャッシュエントリ毎の前記参照時刻データを比較し、前記参照時刻データに含まれる前記実行状態値が最も大きい前記参照時刻データに対応するキャッシュエントリを、置換対象となるキャッシュエントリとして選択することが好ましい。
【０２３９】
この構成によれば、キャッシュエントリは、当該キャッシュエントリを使用するオペレーティングシステムを識別するためのオペレーティングシステム識別子と、当該キャッシュエントリが参照された時刻に応じてカウントされ、参照された時刻が古くなるほど値が大きくなる参照時刻カウント値と、データとを含む。実行状態記憶部は、電力制御命令に基づいて変更される複数のオペレーティングシステムの実行状態と、実行状態に応じて予め設定される値であり、通常動作モードに対応する値よりもスリープモードに対応する値の方が大きい実行状態値とを記憶している。そして、実行状態値と、参照時刻カウント値とを含む参照時刻データが複数のキャッシュエントリ毎に作成され、作成された複数のキャッシュエントリ毎の参照時刻データが比較され、参照時刻データに含まれる実行状態値が最も大きい参照時刻データに対応するキャッシュエントリが、置換対象となるキャッシュエントリとして選択される。
【０２４０】
したがって、各キャッシュエントリに対応する実行状態値を比較することにより、スリープモードのオペレーティングシステムが使用しているキャッシュエントリが特定されるので、容易に置換対象となるキャッシュエントリを選択することができる。
【０２４１】
また、上記の共有キャッシュ制御装置において、前記置換対象選択部は、前記参照時刻データ作成部によって作成された前記複数のキャッシュエントリ毎の前記参照時刻データを比較し、前記参照時刻データに含まれる前記実行状態値が全て同じである場合、前記参照時刻データに含まれる前記参照時刻カウント値が最も大きい前記参照時刻データに対応するキャッシュエントリを、置換対象となるキャッシュエントリとして選択することが好ましい。
【０２４２】
この構成によれば、複数のキャッシュエントリ毎の参照時刻データが比較され、参照時刻データに含まれる実行状態値が全て同じである場合、参照時刻データに含まれる参照時刻カウント値が最も大きい参照時刻データに対応するキャッシュエントリが、置換対象となるキャッシュエントリとして選択される。
【０２４３】
したがって、複数のキャッシュエントリを利用している各オペレーティングシステムの実行状態が同じ場合であっても、キャッシュエントリが参照された時刻に基づいて、置換対象となるキャッシュエントリが選択されるので、置換対象となるキャッシュエントリをより確実に選択することができる。
【０２４４】
また、上記の共有キャッシュ制御装置において、前記電力制御命令は、前記プロセッサの動作停止を指示するスリープ命令を少なくとも含み、前記実行状態は、前記プロセッサを高速クロックで動作する通常動作モードと、前記プロセッサの動作を停止するスリープモードとを含み、前記キャッシュエントリ設定部は、前記スリープモードの前記プロセッサが利用しているキャッシュエントリを、前記通常動作モードの前記プロセッサが利用しているキャッシュエントリより過去に使用された状態に設定し、前記置換対象選択部は、前記キャッシュエントリ設定部によって最も過去に使用された状態に設定された前記キャッシュエントリを、置換対象となるキャッシュエントリとして選択することが好ましい。
【０２４５】
この構成によれば、電力制御命令は、プロセッサの動作停止を指示するスリープ命令を少なくとも含み、実行状態は、プロセッサを高速クロックで動作する通常動作モードと、プロセッサの動作を停止するスリープモードとを含む。スリープモードのプロセッサが利用しているキャッシュエントリが、通常動作モードのプロセッサが利用しているキャッシュエントリより過去に使用された状態に設定される。そして、最も過去に使用された状態に設定されたキャッシュエントリが、置換対象となるキャッシュエントリとして選択される。
【０２４６】
したがって、通常動作モードのプロセッサは、スリープモードのプロセッサが使用していたキャッシュエントリを使用することが可能となり、複数のプロセッサが１のキャッシュ記憶装置を有効活用できる。
【０２４７】
また、上記の共有キャッシュ制御装置において、前記キャッシュエントリは、当該キャッシュエントリを使用するプロセッサを識別するためのプロセッサ識別子と、当該キャッシュエントリが参照された時刻に応じてカウントされ、参照された時刻が古くなるほど値が大きくなる参照時刻カウント値と、データとを含み、前記キャッシュエントリ設定部は、前記電力制御命令に基づいて変更される前記複数のプロセッサの実行状態と、前記実行状態に応じて予め設定される値であり、前記通常動作モードに対応する値よりも前記スリープモードに対応する値の方が大きい実行状態値とを記憶する実行状態記憶部と、前記実行状態値と、前記参照時刻カウント値とを含む参照時刻データを前記複数のキャッシュエントリ毎に作成する参照時刻データ作成部とを含み、前記置換対象選択部は、前記参照時刻データ作成部によって作成された前記複数のキャッシュエントリ毎の前記参照時刻データを比較し、前記参照時刻データに含まれる前記実行状態値が最も大きい前記参照時刻データに対応するキャッシュエントリを、置換対象となるキャッシュエントリとして選択することが好ましい。
【０２４８】
この構成によれば、キャッシュエントリは、当該キャッシュエントリを使用するプロセッサを識別するためのプロセッサ識別子と、当該キャッシュエントリが参照された時刻に応じてカウントされ、参照された時刻が古くなるほど値が大きくなる参照時刻カウント値と、データとを含む。実行状態記憶部は、電力制御命令に基づいて変更される複数のプロセッサの実行状態と、実行状態に応じて予め設定される値であり、通常動作モードに対応する値よりもスリープモードに対応する値の方が大きい実行状態値とを記憶している。そして、実行状態値と、参照時刻カウント値とを含む参照時刻データが複数のキャッシュエントリ毎に作成され、作成された複数のキャッシュエントリ毎の参照時刻データが比較され、参照時刻データに含まれる実行状態値が最も大きい参照時刻データに対応するキャッシュエントリが、置換対象となるキャッシュエントリとして選択される。
【０２４９】
したがって、各キャッシュエントリに対応する実行状態値を比較することにより、スリープモードのプロセッサが使用しているキャッシュエントリが特定されるので、容易に置換対象となるキャッシュエントリを選択することができる。
【０２５０】
また、上記の共有キャッシュ制御装置において、前記置換対象選択部は、前記参照時刻データ作成部によって作成された前記複数のキャッシュエントリ毎の前記参照時刻データを比較し、前記参照時刻データに含まれる前記実行状態値が全て同じである場合、前記参照時刻データに含まれる前記参照時刻カウント値が最も大きい前記参照時刻データに対応するキャッシュエントリを、置換対象となるキャッシュエントリとして選択することが好ましい。
【０２５１】
この構成によれば、複数のキャッシュエントリ毎の参照時刻データが比較され、参照時刻データに含まれる実行状態値が全て同じである場合、参照時刻データに含まれる参照時刻カウント値が最も大きい参照時刻データに対応するキャッシュエントリが、置換対象となるキャッシュエントリとして選択される。
【０２５２】
したがって、複数のキャッシュエントリを利用している各プロセッサの実行状態が同じ場合であっても、キャッシュエントリが参照された時刻に基づいて、置換対象となるキャッシュエントリが選択されるので、置換対象となるキャッシュエントリをより確実に選択することができる。
【０２５３】
また、上記の共有キャッシュ制御装置において、前記キャッシュエントリは、当該キャッシュエントリを使用するオペレーティングシステムを識別するためのオペレーティングシステム識別子と、当該キャッシュエントリが参照された時刻に応じてカウントされ、参照された時刻が古くなるほど値が大きくなる参照時刻カウント値と、データとを含み、前記キャッシュエントリ設定部は、前記オペレーティングシステムの実行状態と、前記実行状態に応じて前記参照時刻カウント値に加算する値を表す未使用時刻加算値とを記憶する実行状態記憶部と、前記キャッシュエントリを使用している前記オペレーティングシステムの実行状態に応じた前記未使用時刻加算値を、前記キャッシュエントリに含まれる前記参照時刻カウント値に加算し、前記参照時刻カウント値を含む参照時刻データを前記複数のキャッシュエントリ毎に作成する参照時刻データ作成部とを含み、前記置換対象選択部は、前記参照時刻データ作成部によって作成された複数の参照時刻データに含まれる複数の参照時刻カウント値のうち、値が最も大きい前記参照時刻カウント値に対応する前記キャッシュエントリを、置換対象となるキャッシュエントリとして選択することが好ましい。
【０２５４】
この構成によれば、キャッシュエントリは、当該キャッシュエントリを使用するオペレーティングシステムを識別するためのオペレーティングシステム識別子と、当該キャッシュエントリが参照された時刻に応じてカウントされ、参照された時刻が古くなるほど値が大きくなる参照時刻カウント値と、データとを含む。また、実行状態記憶部は、オペレーティングシステムの実行状態と、実行状態に応じて参照時刻カウント値に加算する値を表す未使用時刻加算値とを記憶している。そして、キャッシュエントリを使用しているオペレーティングシステムの実行状態に応じた未使用時刻加算値が、キャッシュエントリに含まれる参照時刻カウント値に加算され、参照時刻カウント値を含む参照時刻データが複数のキャッシュエントリ毎に作成される。その後、作成された複数の参照時刻データに含まれる複数の参照時刻カウント値のうち、値が最も大きい参照時刻カウント値に対応するキャッシュエントリが、置換対象となるキャッシュエントリとして選択される。
【０２５５】
したがって、キャッシュエントリを使用しているオペレーティングシステムの実行状態と、当該キャッシュエントリが参照された時刻とに応じて、置換対象となるキャッシュエントリが選択されるので、最も使用される可能性が少ないキャッシュエントリを選択することができる。
【０２５６】
また、上記の共有キャッシュ制御装置において、前記キャッシュエントリは、当該キャッシュエントリを使用するプロセッサを識別するためのプロセッサ識別子と、当該キャッシュエントリが参照された時刻に応じてカウントされ、参照された時刻が古くなるほど値が大きくなる参照時刻カウント値と、データとを含み、前記キャッシュエントリ設定部は、前記プロセッサの実行状態と、前記実行状態に応じて前記参照時刻カウント値に加算する値を表す未使用時刻加算値とを記憶する実行状態記憶部と、前記キャッシュエントリを使用している前記プロセッサの実行状態に応じた前記未使用時刻加算値を、前記キャッシュエントリに含まれる前記参照時刻カウント値に加算し、前記参照時刻カウント値を含む参照時刻データを前記複数のキャッシュエントリ毎に作成する参照時刻データ作成部とを含み、前記置換対象選択部は、前記参照時刻データ作成部によって作成された複数の参照時刻データに含まれる複数の参照時刻カウント値のうち、値が最も大きい前記参照時刻カウント値に対応する前記キャッシュエントリを、置換対象となるキャッシュエントリとして選択することが好ましい。
【０２５７】
この構成によれば、キャッシュエントリは、当該キャッシュエントリを使用するプロセッサを識別するためのプロセッサ識別子と、当該キャッシュエントリが参照された時刻に応じてカウントされ、参照された時刻が古くなるほど値が大きくなる参照時刻カウント値と、データとを含む。また、実行状態記憶部は、プロセッサの実行状態と、実行状態に応じて参照時刻カウント値に加算する値を表す未使用時刻加算値とを記憶している。そして、キャッシュエントリを使用しているプロセッサの実行状態に応じた未使用時刻加算値が、キャッシュエントリに含まれる参照時刻カウント値に加算され、参照時刻カウント値を含む参照時刻データが複数のキャッシュエントリ毎に作成される。その後、作成された複数の参照時刻データに含まれる複数の参照時刻カウント値のうち、値が最も大きい参照時刻カウント値に対応するキャッシュエントリが、置換対象となるキャッシュエントリとして選択される。
【０２５８】
したがって、キャッシュエントリを使用しているプロセッサの実行状態と、当該キャッシュエントリが参照された時刻とに応じて、置換対象となるキャッシュエントリが選択されるので、最も使用される可能性が少ないキャッシュエントリを選択することができる。
【０２５９】
また、上記の共有キャッシュ制御装置において、前記電力制御命令は、前記プロセッサに供給する電力を低減する電源制御命令及び前記プロセッサに供給するクロックを低減するクロック制御命令のうちの少なくとも一方を含み、前記実行状態は、低速クロックで動作する低消費電力モードをさらに含み、前記スリープモードに対応付けられる前記未使用時刻加算値は、前記低消費電力モードに対応付けられる前記未使用時刻加算値に比べて大きいことが好ましい。
【０２６０】
この構成によれば、電力制御命令は、プロセッサに供給する電力を低減する電源制御命令及びプロセッサに供給するクロックを低減するクロック制御命令のうちの少なくとも一方を含み、実行状態は、低速クロックで動作する低消費電力モードをさらに含む。スリープモードに対応付けられる未使用時刻加算値は、低消費電力モードに対応付けられる未使用時刻加算値に比べて大きいので、スリープモードのオペレーティングシステム又はプロセッサが使用するキャッシュエントリを、低消費電力モードのオペレーティングシステム又はプロセッサが使用するキャッシュエントリよりも優先的に置換対象として選択することができる。
【０２６１】
また、上記の共有キャッシュ制御装置において、前記低消費電力モードに対応付けられる前記未使用時刻加算値は、前記通常動作モードに対応付けられる前記未使用時刻加算値に比べて大きく、かつ前記スリープモードに対応付けられる前記未使用時刻加算値に比べて小さいことが好ましい。
【０２６２】
この構成によれば、低消費電力モードに対応付けられる未使用時刻加算値は、通常動作モードに対応付けられる未使用時刻加算値に比べて大きく、かつスリープモードに対応付けられる未使用時刻加算値に比べて小さいので、低消費電力モードのオペレーティングシステム又はプロセッサが使用するキャッシュエントリを、通常動作モードのオペレーティングシステム又はプロセッサが使用するキャッシュエントリよりも優先的に置換対象として選択することができる。
【０２６３】
また、上記の共有キャッシュ制御装置において、前記電力制御命令は、前記オペレーティングシステムの動作停止を指示するスリープ命令を少なくとも含み、前記実行状態は、前記オペレーティングシステムを高速クロックで動作する通常動作モードと、前記オペレーティングシステムの動作を停止するスリープモードとを少なくとも含み、前記キャッシュ記憶装置は、前記複数のキャッシュエントリをそれぞれ有する複数のウェイを含み、前記キャッシュエントリ設定部は、前記電力制御命令に基づいて変更される前記複数のオペレーティングシステムの実行状態と、前記複数のウェイのうちの前記オペレーティングシステムが利用するウェイを識別するためのウェイ識別子とを記憶する実行状態記憶部と、前記実行状態記憶部を参照し、前記スリープモードの前記オペレーティングシステムが利用しているウェイを置換対象となるウェイに設定するとともに、前記通常動作モードの前記オペレーティングシステムが利用しているウェイを置換対象とならないウェイに設定するロックダウン制御部とを含み、前記置換対象選択部は、前記ロックダウン制御部によって置換対象となるウェイに設定されたウェイの中から、最も過去に使用された前記キャッシュエントリを、置換対象となるキャッシュエントリとして選択することが好ましい。
【０２６４】
この構成によれば、電力制御命令は、オペレーティングシステムの動作停止を指示するスリープ命令を少なくとも含み、実行状態は、オペレーティングシステムを高速クロックで動作する通常動作モードと、オペレーティングシステムの動作を停止するスリープモードとを少なくとも含み、キャッシュ記憶装置は、複数のキャッシュエントリをそれぞれ有する複数のウェイを含む。また、実行状態記憶部は、電力制御命令に基づいて変更される複数のオペレーティングシステムの実行状態と、複数のウェイのうちのオペレーティングシステムが利用するウェイを識別するためのウェイ識別子とを記憶している。そして、実行状態記憶部が参照され、スリープモードのオペレーティングシステムが利用しているウェイが、置換対象となるウェイに設定されるとともに、通常動作モードのオペレーティングシステムが利用しているウェイが、置換対象とならないウェイに設定される。その後、置換対象となるウェイに設定されたウェイの中から、最も過去に使用されたキャッシュエントリが、置換対象となるキャッシュエントリとして選択される。
【０２６５】
したがって、スリープモードのオペレーティングシステムが利用しているウェイが、置換対象となるウェイに設定されるとともに、通常動作モードのオペレーティングシステムが利用しているウェイが、置換対象とならないウェイに設定されるので、通常動作モードのオペレーティングシステムは、スリープモードのオペレーティングシステムが使用しているキャッシュエントリを使用することができ、キャッシュエントリにオペレーティングシステム識別子を搭載することなく、オペレーティングシステムの実行状態に応じてキャッシュ記憶装置を有効活用できる。
【産業上の利用可能性】
【０２６６】
本発明にかかる共有キャッシュ制御装置、共有キャッシュ制御方法及び集積回路は、複数のオペレーティングシステム又は複数のプロセッサが１のキャッシュ記憶装置を有効活用でき、複数のプロセッサコア又は複数のオペレーティングシステムを搭載した携帯電話機及び情報家電機器などの組み込み向けシステムＬＳＩなどとして有用である。また、組み込み向けシステムＬＳＩ以外でも、複数のプロセッサコア又は複数のオペレーティングシステムによってキャッシュ記憶装置が共有される計算機システム等に有効である。
【手続補正３】
【補正対象書類名】図面
【補正対象項目名】全図
【補正方法】変更
【補正の内容】
【図１】
2009075070.tif 000019
【図２】
2009075070.tif 000020
【図３】
2009075070.tif 000021
【図４】
2009075070.tif 000022
【図５】
2009075070.tif 000023
【図６】
2009075070.tif 000024
【図７】
2009075070.tif 000025
【図８】
2009075070.tif 000026
【図９】
2009075070.tif 000027
【図１０】
2009075070.tif 000028
【図１１】
2009075070.tif 000029
【図１２】
2009075070.tif 000030
【図１３】
2009075070.tif 000031
【図１４】
2009075070.tif 000032
【図１５】
2009075070.tif 000033
【図１６】
2009075070.tif 000034
【国際調査報告】
2009075070.tif 000035
2009075070.tif 000036
2009075070.tif 000037