以下、本発明の実施の形態について、図面を参照しながら説明する。尚、以下の実施の形態は、本発明を具体化した一例であって、本発明の技術的範囲を限定する性格のものではない。
(実施の形態1)
図1は、本発明の実施の形態1における計算機システムの構成を示す図である。計算機システム100は、一つのプロセッサ上で複数のオペレーティングシステムを動作させる仮想計算機システムである。計算機システム100は、内部バス110、キャッシュ記憶装置111、プロセッサ112、メモリ113、周辺モジュール群114及びステータスレジスタ115を備えている。
キャッシュ記憶装置111、メモリ113、周辺モジュール群114及びステータスレジスタ115は、それぞれ内部バス110に接続されている。近年のLSIの高集積化により、計算機システム100を構成する複数の回路を一つのシステムLSI内に搭載することも可能であるが、本実施の形態1において、回路群が単一のシステムLSI内に実装されるか、それぞれ別のシステムLSIで提供されるかについての限定は行わない。なお、図1では、ステータスレジスタ115は、内部バス110に接続しているが、プロセッサ112に直接接続してもよい。
プロセッサ112は、メモリ113に格納されているプログラム(命令コード)を読み出して実行する。また、プロセッサ112は、プログラムの実行時には、メモリ113上のデータや、周辺モジュール群114からの入出力データを参照して動作する。また、プロセッサ112は、ステータスレジスタ115が保持している動作中の状態パラメータの値を用いて制御を行う。
メモリ113は、第1〜第nのタスク124〜129と、第1〜第3のオペレーティングシステム121,122,123と、ハイパバイザ120とを備えている。
第1〜第nのタスク124〜129は、それぞれ計算機システム100上で動作する単一又は複数の命令コードを含む実行単位であり、例えば、プロセッサ112により実行されるアプリケーションプログラムである。
第1〜第3のオペレーティングシステム121,122,123は、計算機システム100で動作するソフトウェア全体を制御するオペレーティングシステムであり、ここでは、メモリ113は、3つのオペレーティングシステム121,122,123を備える。
ハイパバイザ120は、プロセッサ112上で動作し、第1〜第3のオペレーティングシステム121,122,123に対して、それぞれ、あたかも単一のオペレーティングシステムが動作しているかのような環境、すなわち、仮想計算機環境を提供するためのエミュレーション手段である。つまり、一つのプロセッサ上に一つのオペレーティングシステムが存在して、一つのオペレーティングシステムが当該プロセッサの複数のハードウェア資源を管理するのではなく、ハイパバイザ120によって、複数のハードウェア資源を分割し、個々のオペレーティングシステムに割り当てることができる。なお、割り当て方法は、ハードウェア資源の種類によって、固定的に割り振る方法、又は時分割で割り当てる方法などが可能である。
本実施の形態1の計算機システムの一例として、図1では、第1及び第2のタスク124,125は、第1のオペレーティングシステム121上で動作し、第3及び第4のタスク126,127は、第2のオペレーティングシステム122上で動作し、第5〜第nのタスク128,129は、第3のオペレーティングシステム123上で動作するようにコンパイルされているものとする。これにより、第1のオペレーティングシステム121が、第1及び第2のタスク124,125の実行状態を管理し、第2のオペレーティングシステム122が、第3及び第4のタスク126,127の実行状態を管理し、第3のオペレーティングシステム123が、第5〜第nのタスク128,129の実行状態を管理する。
なお、ここでは、第1のオペレーティングシステム121と第2のオペレーティングシステム122と第3のオペレーティングシステム123とは、異なったオペレーティングシステムとしているが、同じオペレーティングシステムでもよい。なお、タスク数、オペレーティングシステム数、及び、タスクとオペレーティングシステムとの関係は、図1で示した例に一致しなくてもよい。例えば、動作するオペレーティングシステムの数を変更しても構わない。
キャッシュ記憶装置111は、セットアソシアティブ方式のキャッシュ記憶装置であり、複数のウェイに分割されたキャッシュ記憶データメモリを備える。図1では、4つのウェイに分割されたキャッシュ記憶データメモリ130〜133が存在しているが、4ウェイ未満又は4ウェイを越えて搭載することも可能である。セットアソシアティブ方式のキャッシュ記憶装置では、一つのアドレスに対して、選択可能なキャッシュエントリがウェイ数に相当する数だけ存在する。
キャッシュ記憶データメモリ130〜133は、それぞれ、メモリ113から読み出されたデータを格納する複数のキャッシュエントリから構成される。
図2は、4ウェイのセットアソシアティブ方式のキャッシュ記憶装置について説明するための図である。メモリ113上のデータの位置を示すアドレス信号200は、上位アドレスタグ201とインデックス番号202とを備えており、アドレス信号200によって、メモリ113上のデータが、タグの個数分のグループに分けられる。また、このメモリ113上の一つのグループのデータは、キャッシュ記憶装置の一つのウェイに格納される。つまり、ここでは、4個のウェイが存在することから、4個のグループのデータが、同時にキャッシュ記憶装置に格納される。
図3及び図4にて後述するが、通常、ウェイ数が多い場合には、並列動作する比較器が多数存在することになり、消費電力的に不利となる。一方、ウェイ数が少ない場合には、一つのアドレス上のデータを保存できる箇所が少なくなり、スラッシング(複数のアドレスに格納されているデータが相互にキャッシュエントリから相手を追い出し合うこと)と呼ばれる現象が発生し、性能劣化を引き起こすことになる。
また、キャッシュミスが発生して、あるアドレスのデータをキャッシュ記憶装置上に格納する場合、いずれか一つのキャッシュエントリを選択し、データを置換する必要がある。キャッシュミスを最も低減させる置換アルゴリズムとして、最近にアクセスされたデータは再利用される確率が高く、一番長くアクセスされていないデータは再利用される確率が低いと仮定するLRU(Least Recently Used)アルゴリズムがある。本実施の形態1では、キャッシュ記憶装置111は、LRUアルゴリズムでキャッシュエントリの置換を行う。また、個々のキャッシュエントリ内には、いずれのオペレーティングシステムが当該キャッシュエントリを使用しているかを示すオペレーティングシステム識別子を搭載する。なお、オペレーティングシステム識別子については図3において説明する。
キャッシュ記憶装置111は、前述したキャッシュ記憶データメモリ130〜133と、置換対象選択部136と、アクセス対象選択部137と、バッファ138と、監視部139と、入出力部140と、キャッシュエントリ設定部141とを備えている。
入出力部140は、プロセッサ112からのデータ読み出し命令やデータ書き込み命令など、メモリ113や周辺モジュール群114上のデータに対するアクセス命令の入力や、アクセス命令に対するプロセッサ112やメモリ113や周辺モジュール群114へのデータの出力を行う。
監視部139は、ステータスレジスタ115をチェックすることで、プロセッサ112で実行される電力制御命令を監視し、当該電力制御命令を実行するオペレーティングシステムの状態変化を参照時刻計算部134に通知する。監視部139は、複数のオペレーティングシステムを動作させるプロセッサ112に供給される電力を制御するための電力制御命令を監視する。電力制御命令は、オペレーティングシステムの動作停止を指示するスリープ命令、プロセッサ112に供給する電力を低減する電源制御命令及びプロセッサ112に供給するクロックを低減するクロック制御命令を含む。本実施の形態1では、電力制御命令は、スリープ命令を少なくとも含む。
なお、第1〜第3のオペレーティングシステム121,122,123は、それぞれ、個々のオペレーティングシステム上で動作しているタスク数及びタスクの状態などによって、スリープモードに移行する場合、電力制御命令を発行し、プロセッサ112は、発行された電力制御命令を実行する。また、プロセッサ112は、割込みなどの発生を受けて処理負荷が変化した場合、スリープモードから通常動作モードに復帰する処理を実行する。
キャッシュエントリ設定部141は、キャッシュミスが発生し、複数のキャッシュエントリの中から置換対象となるキャッシュエントリを選択する際に、電力制御命令に基づいて変更される複数のオペレーティングシステムの実行状態を用いて、電力制御命令を実行したオペレーティングシステムが利用していたキャッシュエントリを、過去に使用された状態に設定する。本実施の形態1において、実行状態は、オペレーティングシステムを高速クロックで動作する通常動作モードと、オペレーティングシステムの動作を停止するスリープモードとを少なくとも含む。キャッシュエントリ設定部141は、スリープモードのオペレーティングシステムが利用しているキャッシュエントリを、通常動作モードのオペレーティングシステムが利用しているキャッシュエントリより過去に使用された状態に設定する。
キャッシュエントリ設定部141は、参照時刻計算部134と、OS実行状態記憶部135とを備える。
参照時刻計算部134は、監視部139からの通知を受け取り、電力制御命令を実行するオペレーティングシステムの動作モードを、OS実行状態記憶部135を用いて管理する。OS実行状態記憶部135は、オペレーティングシステムを識別するオペレーティングシステム識別子と、各オペレーティングシステムの実行状態(通常動作モード又はスリープモード)とをテーブル形式で保持している。
なお、ここでは、OS実行状態記憶部135がオペレーティングシステムの動作モードをテーブル形式で保持するとしたが、他のフォーマットでオペレーティングシステムの動作モードを記憶してもよい。
また、参照時刻計算部134は、置換対象選択部136からの問い合わせに対し、置換対象の候補となる複数のキャッシュエントリの参照時刻データを計算して、計算した参照時刻データを置換対象選択部136に通知する。参照時刻データは、置換対象となるキャッシュエントリを選択するために用いられるデータである。なお、参照時刻データの詳細については後述する。
参照時刻計算部134は、OS実行状態記憶部135と、個々のキャッシュエントリに設けられたオペレーティングシステム識別子と、後述する参照時刻カウンタとを用いて、スリープモードのオペレーティングシステムが利用しているキャッシュエントリの参照時刻データを、最も過去に使用された値として出力する。なお、キャッシュ記憶装置111は、スリープモードのオペレーティングシステムが存在しない場合には、通常のLRUアルゴリズムで動作する。
置換対象選択部136は、キャッシュエントリ設定部141によって過去に使用された状態に設定されたキャッシュエントリを、置換対象となるキャッシュエントリとして選択する。置換対象選択部136は、キャッシュミスなどにより、新たなデータをメモリ113から読み出してキャッシュ記憶装置111に格納する場合に、キャッシュ記憶装置111上に既に格納済みのデータのうち、どのデータを追い出すかを決定し、決定したデータを新たなデータに置換する。つまり、置換対象選択部136は、アクセス対象選択部137からキャッシュミスの発生が通知されると、置換対象の候補となる複数のキャッシュエントリを参照時刻計算部134に問い合わせる。その後、置換対象選択部136は、参照時刻計算部134から出力される計算結果にしたがって、複数のキャッシュエントリから置換対象のキャッシュエントリを選択し、選択したキャッシュエントリに新たなデータを格納する。
また、キャッシュエントリを置換することで追い出されたデータがある場合、追い出されたデータをメモリ113に書き戻す処理が必要となる。この場合、置換対象選択部136は、置換対象のキャッシュエントリと同じウェイのデータをバッファ138に書き込み、置換前のデータをメモリ113へ書き戻す。
以上のような構成により、スリープモードで実行しているオペレーティングシステムが利用しているキャッシュ記憶装置111上のデータを最も過去に使用されたデータとみなすことにより、通常動作モードのオペレーティングシステムの新たなデータと置換することができる。その結果、通常動作モードのオペレーティングシステムのデータが優先的にキャッシュ記憶装置111内に残るように制御することができる。これにより、オペレーティングシステムがスリープモードに移行することで、利用される頻度が少なくなったキャッシュエントリを、別のオペレーティングシステムによって有効に利用することが可能となり、システム全体としての性能向上を図ることができる。
さらに、本実施の形態1は、スリープモードに移行したオペレーティングシステムが利用していたデータを一律にキャッシュエントリから無効化することで、別のオペレーティングシステムが利用可能とする方法ではない。そのため、スリープモードに移行したオペレーティングシステムが再度通常動作モードに戻った場合に、必要となるデータがキャッシュ上に保持されたままであるなら、過去に使用したキャッシュエントリを有効活用することが可能である。
なお、本実施の形態1において、計算機システム100が共有キャッシュ制御装置の一例に相当し、メモリ113が主記憶部の一例に相当し、キャッシュ記憶装置111がキャッシュ記憶装置の一例に相当し、監視部139が監視部の一例に相当し、キャッシュエントリ設定部141がキャッシュエントリ設定部の一例に相当し、置換対象選択部136が置換対象選択部の一例に相当し、OS実行状態記憶部135が実行状態記憶部の一例に相当し、参照時刻計算部134が参照時刻データ作成部の一例に相当する。
図3は、プロセッサ112から出力されるメモリアクセス命令などにより、プロセッサ112がキャッシュ記憶装置111内にアクセスする場合の、キャッシュエントリ選択処理に関するキャッシュ記憶装置111の詳細な構成を示す図である。図3において、キャッシュ記憶データメモリ130〜133は、図1と同様のハードウェア部品を示す。
なお、アクセス対象のデータを示すアドレス信号200には、前述した通り、キャッシュ記憶データメモリ130〜133内のオフセットを示すインデックス番号202と、インデックス番号202以外の上位アドレスタグ201とが含まれている。個々のキャッシュ記憶データメモリ130〜133において、インデックス番号202で指定されたオフセットにあるキャッシュエントリがアクセス対象となり得るキャッシュエントリである。これらインデックス番号202で指定されたオフセットにある4個のキャッシュエントリの中から、キャッシュヒットの検出が行われる。
また、本実施の形態1では、図面の都合上、4ウェイのキャッシュ記憶データメモリ130〜133のみが記載されているが、本発明は特にこれに限定されず、キャッシュ記憶装置111は、4ウェイ未満又は4ウェイを越えるキャッシュ記憶データメモリを搭載することが可能であり、置換対象となり得るキャッシュエントリはウェイ数にしたがって増減する。
また、個々のキャッシュ記憶データメモリ内の各キャッシュエントリは、少なくとも、上位アドレスタグ210、ダーティビット211、有効ビット212、オペレーティングシステム識別子213、参照時刻カウンタ(参照時刻カウント値)214及びキャッシュデータ215を含むフィールドから構成される。
上位アドレスタグ210は、当該キャッシュエントリに格納されているデータのアドレスに関して、インデックス番号を除いた上位アドレスが格納されているフィールドである。ダーティビット211は、キャッシュ記憶装置111上で書き換えられたかどうかを示すフィールドである。ダーティビット211がONの場合、キャッシュデータ215を最終的にはメモリ113上に書き戻さなければならず、ダーティビット211がOFFの場合、キャッシュデータ215をメモリ113上に書き戻す必要はない。
有効ビット212は、当該キャッシュエントリが有効であるか否かを示すフィールドである。オペレーティングシステム識別子213は、当該キャッシュエントリをいずれのオペレーティングシステムが利用しているかを示すフィールドである。個々のオペレーティングシステムがキャッシュエントリにアクセスした場合、当該オペレーティングシステムを識別するための番号が該フィールドに格納される。
参照時刻カウンタ214は、当該キャッシュエントリのデータがどの程度過去に参照されたかを示すフィールドである。例えば、キャッシュ記憶装置111が4ウェイのキャッシュ記憶データメモリを構成する場合、2ビットの参照時刻カウンタを設け、アクセスが発生する都度、参照時刻カウンタ214の値は“0”に設定される。4ウェイのキャッシュ記憶データメモリのうち、選択されなかったキャッシュエントリの参照時刻カウンタ214の値は“3”までの範囲で一連の値になるように増加させる。これにより、参照時刻カウンタ214の値は、最も過去にアクセスされたキャッシュエントリから、“3”、“2”、“1”及び“0”の順に並ぶことになる。LRUアルゴリズムを利用するキャッシュ記憶装置では、参照時刻カウンタ214の値の最も大きいキャッシュエントリが最終的な置換対象となる。キャッシュデータ215は、メモリ113から読み出したデータを一時的に格納しておくためのフィールドである。
このように、キャッシュエントリは、当該キャッシュエントリを使用するオペレーティングシステムを識別するためのオペレーティングシステム識別子213と、当該キャッシュエントリが参照された時刻に応じてカウントされ、参照された時刻が古くなるほど値が大きくなる参照時刻カウンタ(参照時刻カウント値)214と、キャッシュデータ215とを含む。
以下、アクセス対象となるキャッシュエントリを選択するキャッシュエントリ選択処理の詳細について図3を用いて説明する。
まず、メモリアクセス命令などにより、キャッシュ記憶装置111内のデータにアクセスする場合、アクセス対象選択部137は、プロセッサ112から入出力部140を介してアドレス信号200を受け取り、キャッシュエントリ選択処理を開始する。
アクセス対象選択部137は、アドレス信号200内に含まれるインデックス番号202を用いて、キャッシュ記憶データメモリ130〜133内の4つのキャッシュエントリを選択する。ここでは、キャッシュエントリ216a〜216dが選択されたものとする。
次に、比較器400a〜400dは、アドレス信号200内の上位アドレスタグ201と、キャッシュエントリ216a〜216d内の上位アドレスタグ210とをそれぞれ比較する。
アドレス信号200内の上位アドレスタグ201と上位アドレスタグ210とが一致し、かつ、有効ビット212がONのキャッシュエントリが存在する場合、そのキャッシュエントリ内に所望のデータが存在することになる。図3では、論理積演算子401a〜401dは、比較器400a〜400dからの出力と、キャッシュエントリ216a〜216d内の有効ビット212との論理積を計算することにより、キャッシュヒットを検出している。
なお、キャッシュヒットとは、メモリアクセス命令によって読み出されるデータがキャッシュ記憶装置111内に存在することである。アクセス対象選択部137は、アドレス信号200内の上位アドレスタグ201と上位アドレスタグ210とが一致し、かつ、有効ビット212がONである場合に、キャッシュヒットを検出する。論理積演算子401a〜401dは、キャッシュヒットであるか否かを表す制御信号をバッファ402a〜402dに出力する。
論理積演算子401a〜401dは、それぞれ、バッファ402a〜402dの出力を制御する。バッファ402a〜402dには、それぞれ、キャッシュエントリ216a〜216d内のキャッシュデータ215が入力される。バッファ402a〜402dは、論理積演算子401a〜401dからの制御信号がキャッシュヒットであることを表す場合、キャッシュデータ215と同一の値を出力する。一方、制御信号がキャッシュヒットでないことを表す場合、バッファ402a〜402dは、ハイインピーダンス(高抵抗)状態となる。キャッシュエントリ216a〜216dのうち、実際にキャッシュヒットするエントリは、高々一つである。そのため、入出力部140は、バッファ402a〜402dの出力信号がそのまま入力されることにより、出力データ412を得ることが可能である。
なお、図面の関係上記載されていないが、アクセス対象選択部137は、キャッシュエントリ216a〜216dのうち、キャッシュヒットしたキャッシュエントリの参照時刻カウンタ214を“0”に設定し、キャッシュヒットしていないキャッシュエントリの参照時刻カウンタ214のうち、参照時刻カウンタ214の値が小さいものから順に、再度、“1”、“2”及び“3”の値を設定する。これにより、前述したように、最も過去にアクセスされたキャッシュエントリから“3”、“2”、“1”及び“0”の順に参照時刻カウンタ214の値が並ぶ状態が形成される。
また、アクセス対象選択部137は、論理積演算子401a〜401dからの出力の全てを入力とする否定論理和演算子411を用いることにより、キャッシュエントリ216a〜216dのうち、いずれのエントリもキャッシュヒットしないことを検出することができる。否定論理和演算子411は、論理積演算子401a〜401dからの出力を用いて、キャッシュミス信号410を計算する。キャッシュミスが発生した場合、アクセス対象選択部137は、キャッシュミス信号410を置換対象選択部136に通知し、置換対象選択部136はキャッシュエントリ置換処理を行う。
図4は、図3に示したキャッシュエントリ選択処理の結果、キャッシュミスが発生した場合のキャッシュエントリ置換処理に関するキャッシュ記憶装置111の詳細な構成を示す図である。図4において、キャッシュ記憶データメモリ130〜133は、図1と同様のハードウェア部品を示す。また、参照時刻計算部134a〜134dは、図1で説明した参照時刻計算部134に相当する。
以下、キャッシュエントリ内のデータを新たなデータに置換するキャッシュエントリ置換処理の詳細について図4を用いて説明する。
まず、キャッシュミスなどにより、新たなデータをメモリ113から読み出して、キャッシュ記憶装置111に格納する必要がある場合、置換対象選択部136は、アクセス対象選択部137からキャッシュミス信号410を受け取り、キャッシュエントリ置換処理を開始する。
置換対象選択部136は、アドレス信号200内に含まれるインデックス番号202を用いて、キャッシュ記憶データメモリ130〜133内の4つのキャッシュエントリを選択する。ここでは、キャッシュエントリ216a〜216dが選択されたものとする。
この4つのキャッシュエントリ216a〜216dの中から、一つのキャッシュエントリを置換対象として選択する方法として、通常のLRUアルゴリズムを用いた場合、キャッシュエントリ216a〜216d内の参照時刻カウンタ214を比較して、最も過去に参照されたキャッシュエントリ、すなわち参照時刻カウンタ214の値が最も大きいキャッシュエントリが選択されることになる。しかしながら、LRUアルゴリズムを用いた方法は、通常動作モードのオペレーティングシステムのデータも、直近にスリープモードに移行したオペレーティングシステムのデータも同一に扱うことになる。
一方、本実施の形態1におけるキャッシュ記憶装置111では、監視部139が、プロセッサ112で実行される電力制御命令を監視し、当該電力制御命令を実行するオペレーティングシステムの状態変化を参照時刻計算部134に通知し、参照時刻計算部134が、各オペレーティングシステムの実行状態を管理する。これにより、スリープモードに移行するオペレーティングシステムが利用していたキャッシュエントリを最も過去に使用された状態に設定することが可能となり、別のオペレーティングシステムが、スリープモードに移行したオペレーティングシステムが利用していたキャッシュエントリを有効に利用することができる。
第1〜第3のオペレーティングシステム121,122,123のそれぞれは、個々のオペレーティングシステム上で動作しているタスク数及びタスクの状態などによって、スリープモードに移行する場合、電力制御命令を発行する。また、第1〜第3のオペレーティングシステム121,122,123のそれぞれは、割込みなどの発生を受けて処理負荷が変化した場合、スリープモードから通常動作モードに復帰する。
参照時刻計算部134a〜134dは、OS実行状態記憶部135a〜135dを用いて、個々のオペレーティングシステムの動作モードを管理する。なお、本実施の形態1では、個々のキャッシュエントリ設定部141a〜141d内に参照時刻計算部134a〜134d及びOS実行状態記憶部135a〜135dを搭載する構成としているが、キャッシュエントリ設定部141a〜141d間で一つの参照時刻計算部134及び一つのOS実行状態記憶部135を共有してもよい。これにより、データの一貫性をより効率的に保障することができる。
図4では、OS実行状態記憶部135aのみ、テーブル内の詳細を示している。図4のOS実行状態記憶部135aが記憶するテーブルでは、3つのオペレーティングシステムが存在している。3つのオペレーティングシステムのそれぞれのオペレーティングシステム識別子は、“0”、“1”及び“2”である。オペレーティングシステム識別子“0”の実行状態は、通常動作モードであると仮定し、オペレーティングシステム識別子“1”の実行状態は、スリープモードであると仮定し、オペレーティングシステム識別子“2”の実行状態は、通常動作モードであると仮定している。
なお、図4では、通常動作モードであるオペレーティングシステムの実行状態が、“RUN”と表され、スリープモードであるオペレーティングシステムの実行状態が、“SLEEP”と表されている。
OS実行状態記憶部135a〜135dは、オペレーティングシステムの実行状態に対応する実行状態値(Val)として、通常動作モードであれば“0”を保持し、スリープモードであれば“1”を保持している。
次に、参照時刻計算部134a〜134dは、選択されたキャッシュエントリ216a〜216d内の参照時刻カウンタ214と、選択されたキャッシュエントリ216a〜216d内の有効ビット212と、OS実行状態記憶部135a〜135d内のオペレーティングシステムの実行状態に対応する実行状態値(Val)とを用いて、各キャッシュエントリ216a〜216dに対応付けられた参照時刻データを生成する。
キャッシュエントリ216aに対応付けられた参照時刻データ221aは、有効ビット212を否定演算子220aによって反転させた無効ビット222a、OS実行状態記憶部135aに記憶されているオペレーティングシステムの実行状態に対応する実行状態値(Val)を利用した状態ビット223a、及び、参照時刻カウンタ214の値をそのまま利用した参照カウンタビット224aから構成される。同様に、キャッシュエントリ216b〜216dに対応付けられた参照時刻データ221b〜221dは、それぞれのキャッシュエントリの有効ビット212を否定演算子220b〜220dによって反転させた無効ビット222b〜222d、OS実行状態記憶部135b〜135dに記憶されているオペレーティングシステムの実行状態に対応する実行状態値(Val)を利用した状態ビット223b〜223d、及び、それぞれのキャッシュエントリの参照時刻カウンタ214の値をそのまま利用した参照カウンタビット224b〜224dから構成される。
置換対象選択部136は、これらの参照時刻データ221a〜221dを受け取って比較し、参照時刻データの数値が最も大きいキャッシュエントリを置換対象として選択し、選択したキャッシュエントリを置換対象キャッシュエントリ230として出力する。また、置換対象選択部136は、選択されたキャッシュエントリを置換することで追い出されたデータがある場合、置換対象のキャッシュエントリと同じウェイのデータをバッファ138に書き込み、置換前のデータをメモリ113へ書き戻す。
具体的には、選択されたキャッシュエントリ216a〜216d内のうち、有効ビット212がOFFであるキャッシュエントリが一つあれば、参照時刻データ221a〜221dにおける最上位ビットである無効ビット222a〜222dがONになるため、当該キャッシュエントリの参照時刻データが最も大きくなる。
また、キャッシュエントリ216a〜216dが全て有効である場合、すなわち、キャッシュエントリ216a〜216dの全ての有効ビット212がONである場合、参照時刻データ221a〜221dにおける最上位ビットである無効ビット222a〜222dは全て“0”となる。このとき、選択されたキャッシュエントリ216a〜216d内のうち、スリープモードのオペレーティングシステムが使用しているキャッシュエントリが一つあれば、参照時刻データ221a〜221dにおける上位第二ビットである状態ビット223a〜223dがONになるため、当該キャッシュエントリの参照時刻データが最も大きくなる。
さらに、キャッシュエントリ216a〜216dが全て有効であって、かつ、全て通常動作モードのオペレーティングシステムが使用している場合、最上位ビットである無効ビット222a〜222dと、上位第二ビットである状態ビット223a〜223dとは、全て“0”となる。このとき、キャッシュエントリ216a〜216dの参照時刻カウンタ214の値に対応する参照カウンタビット224a〜224dがそのまま用いられる。そのため、参照時刻データ221a〜221dのうち、最も過去に参照されたキャッシュエントリに対応する参照時刻データの値が最も大きくなる。
図5は、参照時刻データ221aが取り得る値を示す図である。参照時刻データ300は、有効ビット212がOFFである場合の値である。この場合、無効ビット222a以外の他のビットがいずれの値を示しても、参照時刻データ300の値は、他のいかなる参照時刻データ301〜305よりも大きくなる。
参照時刻データ301は、有効ビット212がONであるが、キャッシュエントリをスリープモードのオペレーティングシステムが利用している場合の値である。この場合、参照カウンタビット224aがいずれの値を示しても、参照時刻データ301の値は、通常動作モードのオペレーティングシステムが利用しているキャッシュエントリの参照時刻データ302〜305よりも大きくなる。
参照時刻データ302〜305は、有効ビット212がONであり、かつキャッシュエントリを通常動作モードのオペレーティングシステムが利用している場合の値である。参照時刻データ302〜305は、参照カウンタビット224aの値によって大小が比較される。なお、参照カウンタビット224aは、本実施の形態1では、キャッシュ記憶データメモリが4ウェイ構成であるため、2ビットで表される。
このように、OS実行状態記憶部135a〜135dは、電力制御命令に基づいて変更される複数のオペレーティングシステムの実行状態と、実行状態に応じて予め設定される値であり、通常動作モードに対応する値よりもスリープモードに対応する値の方が大きい実行状態値とを記憶する。また、参照時刻計算部134a〜134dは、実行状態値と、参照時刻カウント値とを含む参照時刻データ221a〜221dを複数のキャッシュエントリ毎に作成する。
置換対象選択部136は、参照時刻計算部134によって作成された複数のキャッシュエントリ毎の参照時刻データ221a〜221dを比較し、参照時刻データに含まれる実行状態値が最も大きい参照時刻データに対応するキャッシュエントリを、置換対象となるキャッシュエントリとして選択する。
また、置換対象選択部136は、参照時刻計算部134によって作成された複数のキャッシュエントリ毎の参照時刻データ221a〜221dを比較し、参照時刻データに含まれる実行状態値が全て同じである場合、参照時刻データに含まれる参照時刻カウント値が最も大きい参照時刻データに対応するキャッシュエントリを、置換対象となるキャッシュエントリとして選択する。
この構成により、有効ビット212がONでないキャッシュエントリ、及びスリープモードのオペレーティングシステムが利用しているキャッシュエントリが優先して置換対象として選択される。そして、これらのキャッシュエントリが存在しない場合のみ、LRUアルゴリズムでキャッシュエントリが置換されることになる。これにより、複数のオペレーティングシステムがキャッシュ記憶装置を共有する計算機システムにおいて、一つのオペレーティングシステムによって利用されなくなったキャッシュエントリを、別のオペレーティングシステムが優先的に利用することができ、限られたサイズのキャッシュ記憶装置を有効に活用することが可能となる。
以上により、有効でないキャッシュエントリを最優先で置換対象とするとともに、次に、スリープモードで実行しているオペレーティングシステムが利用しているキャッシュエントリのデータを、最も過去に使用されたキャッシュエントリのデータとみなして置換対象とすることができる。これにより、通常動作モードのオペレーティングシステムのデータが優先的にキャッシュ記憶装置111内に残るように制御することができる。
また、本実施の形態1は、データが一律にキャッシュエントリから無効化される方法ではない。そのため、デバイスなどの状態によって、スリープモードに移行したオペレーティングシステムが再度通常動作モードに戻った場合に、過去に使用したキャッシュエントリを有効活用することが可能である。通常動作モードに戻った場合、状態ビットの値が“0”に戻るため、LRUアルゴリズムで置換対象が選択されることになる。
(実施の形態2)
図6は、本発明の実施の形態2における計算機システムの構成を示す図である。計算機システム500は、複数のプロセッサがメモリ及びキャッシュ記憶装置を共有するマルチプロセッサシステムである。
計算機システム500は、内部バス110、周辺モジュール群114、ステータスレジスタ115、複数のプロセッサ(第1のプロセッサ502及び第2のプロセッサ503)、複数のレベル1キャッシュ記憶装置(第1のレベル1キャッシュ記憶装置504及び第2のレベル1キャッシュ記憶装置505)、レベル2キャッシュ記憶装置501及びメモリ506を備えている。内部バス110、周辺モジュール群114及びステータスレジスタ115は、図1において説明した構成要素と同じ構成要素である。
近年のLSIの高集積化により、計算機システム500を構成する複数の回路を一つのシステムLSI内に搭載することも可能であるが、本実施の形態2において、回路群が単一のシステムLSI内に実装されるか、それぞれ別のシステムLSIで提供されるかについての限定は行わない。また、本実施の形態2では、2つのプロセッサのみが搭載されている例を示しているが、プロセッサ数は2個に限定されず、3個以上のプロセッサを共存させてもよい。また、ステータスレジスタ115は、図1と同様に、内部バス110に接続しているが、第1のプロセッサ502及び第2のプロセッサ503に直接接続してもよい。
第1のプロセッサ502及び第2のプロセッサ503は、それぞれ、メモリ506に格納されているプログラム(命令コード)を読み出して実行する。また、第1のプロセッサ502及び第2のプロセッサ503は、プログラムの実行時には、メモリ506上のデータや、周辺モジュール群114からの入出力データを参照して動作する。また、第1のプロセッサ502及び第2のプロセッサ503は、ステータスレジスタ115が保持している動作中の状態パラメータの値を用いて制御を行う。
メモリ506は、第1〜第nのタスク523〜527と、第1及び第2のオペレーティングシステム521,522とを備えている。
第1〜第nのタスク523〜527は、それぞれ計算機システム500上で動作する単一又は複数の命令コードを含む実行単位であり、例えば、第1のプロセッサ502により実行されるアプリケーションプログラムである。
第1のオペレーティングシステム521及び第2のオペレーティングシステム522は、計算機システム500で動作するソフトウェア全体を制御するオペレーティングシステムであり、実施の形態2では、2つのオペレーティングシステムを備える。
本実施の形態2のマルチプロセッサシステムの一例として、図6では、第1及び第2のタスク523,524と第1のオペレーティングシステム521とは、第1のプロセッサ502上で動作し、第3〜第nのタスク525,526,527と第2のオペレーティングシステム522とは、第2のプロセッサ503上で動作するようにコンパイルされている。
第1のオペレーティングシステム521は、第1及び第2のタスク523,524の実行状態と、第1のプロセッサ502のハードウェア状態とを管理する。第2のオペレーティングシステム522は、第3〜第nのタスク525,526,527の実行状態と、第2のプロセッサ503のハードウェア状態とを管理する。また、計算機システム500は、複数のプロセッサでそれぞれ一つずつのオペレーティングシステムを実行するため、仮想計算機環境を提供する必要はない。そのため、本実施の形態2には、実施の形態1で説明したハイパバイザ120は存在していない。なお、タスク数、オペレーティングシステム数、及び、タスクとオペレーティングシステムとの関係は、図6で示した例に一致しなくてもよい。
第1及び第2のレベル1キャッシュ記憶装置504,505は、それぞれ、第1のプロセッサ502及び第2のプロセッサ503が参照したデータ及び命令を一時的に格納しておくための記憶手段である。なお、個々のプロセッサ毎にキャッシュ記憶装置を搭載する場合には、共有データの一貫性を保証するためのスヌープ制御が必要であるが、本発明の主要構成要素でないため、図中には記載していない。一般に、スヌープ制御では、個々のプロセッサにおける書込み動作を監視しておき、一方のプロセッサで書込みが行われると、もう一方のプロセッサが利用しているキャッシュ記憶装置の対応するキャッシュエントリを無効化又は更新する。これにより、複数のプロセッサに対応するキャッシュ記憶装置間で論理的矛盾が発生しなくなる。
レベル2キャッシュ記憶装置501は、第1のプロセッサ502及び第2のプロセッサ503によって共有され、第1のプロセッサ502及び第2のプロセッサ503が第1及び第2のレベル1キャッシュ記憶装置504,505を介して参照したデータ及び命令を一時的に格納しておくための記憶手段である。レベル2キャッシュ記憶装置501は、図1におけるキャッシュ記憶装置111に相当する。実施の形態1において、キャッシュ記憶装置111は、仮想計算機システムにおける複数のオペレーティングシステムから共有されていたが、本実施の形態2においては、レベル2キャッシュ記憶装置501は、複数のプロセッサから共有されることになる。
レベル2キャッシュ記憶装置501は、セットアソシアティブ方式のキャッシュ記憶装置であり、複数のウェイに分割されたキャッシュ記憶データメモリを備える。なお、セットアソシアティブ方式のキャッシュ記憶装置については、前述した通り、図2に示している。図6では、4つのウェイに分割されたキャッシュ記憶データメモリ510〜513が存在しているが、4ウェイ未満又は4ウェイを越えて搭載することも可能である。また、レベル2キャッシュ記憶装置501は、複数のプロセッサから共有されるため、個々のキャッシュエントリ内には、いずれのプロセッサが当該キャッシュエントリを使用しているかを示すプロセッサ識別子が搭載される。なお、プロセッサ識別子については図7において説明する。
レベル2キャッシュ記憶装置501は、前述したキャッシュ記憶データメモリ510〜513と、置換対象選択部136と、アクセス対象選択部137と、バッファ138と、監視部519と、入出力部140と、キャッシュエントリ設定部141とを備えている。以下、実施の形態1と異なる構成要素である参照時刻計算部514と、プロセッサ実行状態記憶部515と、監視部519とについて説明する。
監視部519は、ステータスレジスタ115をチェックすることで、第1のプロセッサ502及び第2のプロセッサ503で実行される電力制御命令を監視し、当該電力制御命令を実行するプロセッサの状態変化を参照時刻計算部514に通知する。電力制御命令は、スリープ命令、電源制御命令及びクロック制御命令を含む。なお、第1のプロセッサ502及び第2のプロセッサ503は、それぞれ、第1のオペレーティングシステム521又は第2のオペレーティングシステム522上で動作しているタスク数及びタスクの状態などによって、スリープモードに移行する場合、電力制御命令を発行し、第1のプロセッサ502及び第2のプロセッサ503は、発行された電力制御命令を実行する。また、第1のプロセッサ502及び第2のプロセッサ503は、割込みなどの発生を受けて処理負荷が変化した場合、スリープモードから通常動作モードに復帰する処理を実行する。
キャッシュエントリ設定部141は、キャッシュミスが発生し、複数のキャッシュエントリの中から置換対象となるキャッシュエントリを選択する際に、電力制御命令に基づいて変更される複数のプロセッサの実行状態を用いて、電力制御命令を実行したプロセッサが利用していたキャッシュエントリを、過去に使用された状態に設定する。キャッシュエントリ設定部141は、スリープモードのプロセッサが利用しているキャッシュエントリを、通常動作モードのプロセッサが利用しているキャッシュエントリより過去に使用された状態に設定する。
キャッシュエントリ設定部141は、参照時刻計算部514と、プロセッサ実行状態記憶部515とを備える。
参照時刻計算部514は、監視部519からの通知を受け取り、個々のプロセッサの動作モードを、プロセッサ実行状態記憶部515を用いて管理する。プロセッサ実行状態記憶部515は、プロセッサを識別するプロセッサ識別子と、各プロセッサの実行状態(通常動作モード又はスリープモード)とをテーブル形式で保持している。
なお、ここでは、プロセッサ実行状態記憶部515が複数のプロセッサの動作モードをテーブル形式で保持するとしたが、他のフォーマットで複数のプロセッサの動作モードを記憶してもよい。
また、参照時刻計算部514は、置換対象選択部136からの問い合わせに対し、置換対象の候補となる複数のキャッシュエントリの参照時刻データを計算して、計算した参照時刻データを置換対象選択部136に通知する。参照時刻計算部514は、プロセッサ実行状態記憶部515と、個々のキャッシュエントリに設けられたプロセッサ識別子とを用いて、スリープモードのプロセッサが利用しているキャッシュエントリの参照時刻データを、最も過去に使用された値として出力する。なお、レベル2キャッシュ記憶装置501は、スリープモードのプロセッサが存在しない場合には、通常のLRUアルゴリズムで動作する。
以上のような構成により、スリープモードで実行しているプロセッサが利用しているキャッシュエントリ上のデータを、最も過去に使用されたキャッシュエントリ上のデータとみなして置換対象とすることができる。これにより、通常動作モードのプロセッサのデータが優先的にレベル2キャッシュ記憶装置501内に残るように制御することができる。また、プロセッサがスリープモードに移行することで利用される頻度が少なくなったキャッシュエントリを、別のプロセッサで有効に利用することが可能となり、システム全体としての性能向上を図ることができる。
さらに、本実施の形態2は、スリープモードに移行したプロセッサが利用していたデータが一律にキャッシュエントリから無効化されることにより、キャッシュエントリを別のプロセッサが利用可能とする方法ではない。そのため、デバイスなどの状態によって、スリープモードに移行したプロセッサが再度通常動作モードに戻った場合に、必要となるデータがレベル2キャッシュ記憶装置501上に保持されたままであるなら、過去に使用したキャッシュエントリを有効活用することが可能である。
なお、本実施の形態2において、計算機システム500が共有キャッシュ制御装置の一例に相当し、メモリ506が主記憶部の一例に相当し、キャッシュ記憶装置501がキャッシュ記憶装置の一例に相当し、監視部519が監視部の一例に相当し、キャッシュエントリ設定部141がキャッシュエントリ設定部の一例に相当し、置換対象選択部136が置換対象選択部の一例に相当し、プロセッサ実行状態記憶部515が実行状態記憶部の一例に相当し、参照時刻計算部514が参照時刻データ作成部の一例に相当する。
図7は、メモリアクセス命令などにより、第1のプロセッサ502又は第2のプロセッサ503がレベル2キャッシュ記憶装置501内にアクセスする場合の、キャッシュエントリ選択処理に関するレベル2キャッシュ記憶装置501の詳細な構成を示す図である。
アクセス対象のデータを示すアドレス信号200は、キャッシュ記憶データメモリ510〜513内のオフセットを示すインデックス番号202と、インデックス番号202以外の上位アドレスタグ201とが含まれている。個々のキャッシュ記憶データメモリ510〜513において、インデックス番号202で指定されたオフセットにあるキャッシュエントリがアクセス対象となり得るキャッシュエントリである。これらインデックス番号202で指定されたオフセットにある4個のキャッシュエントリの中から、キャッシュヒットの検出が行われる。
また、本実施の形態2では、図面の都合上、4ウェイのキャッシュ記憶データメモリ510〜513のみが記載されているが、本発明は特にこれに限定されず、レベル2キャッシュ記憶装置501は、4ウェイ未満又は4ウェイを越えるキャッシュ記憶データメモリを搭載することが可能であり、置換対象となり得るキャッシュエントリはウェイ数にしたがって増減する。
また、個々のキャッシュ記憶データメモリ内の各キャッシュエントリは、少なくとも、上位アドレスタグ210、ダーティビット211、有効ビット212、プロセッサ識別子600、参照時刻カウンタ214及びキャッシュデータ215を含むフィールドから構成される。図7において、プロセッサ識別子600を除く他の構成要素は、図3と同様の構成要素であり、図3と同様の動作を行うため、本実施の形態2での説明は省略する。個々のプロセッサがキャッシュエントリにアクセスした場合、当該プロセッサの番号がプロセッサ識別子600に格納される。
このように、キャッシュエントリは、当該キャッシュエントリを使用するプロセッサを識別するためのプロセッサ識別子600と、当該キャッシュエントリが参照された時刻に応じてカウントされ、参照された時刻が古くなるほど値が大きくなる参照時刻カウンタ(参照時刻カウント値)214と、キャッシュデータ215とを含む。
図8は、図7で示したキャッシュエントリ選択処理の結果、キャッシュミスが発生した場合のキャッシュエントリ置換処理に関するレベル2キャッシュ記憶装置501の詳細な構成を示す図である。図8において、プロセッサ識別子600、参照時刻計算部514a〜514d及びプロセッサ実行状態記憶部515a〜515dを除く他の構成要素は、図4と同じ構成要素である。また、参照時刻計算部514a〜514dは、図6で説明した参照時刻計算部514に相当する。
以下、キャッシュエントリ内のデータを新たなデータに置換するキャッシュエントリ置換処理の詳細について図8を用いて説明する。
まず、キャッシュミスなどにより、新たなデータをメモリ506から読み出して、レベル2キャッシュ記憶装置501に格納する必要がある場合、置換対象選択部136は、アクセス対象選択部137からキャッシュミス信号410を受け取り、キャッシュエントリ置換処理を開始する。
置換対象選択部136は、アドレス信号200内に含まれるインデックス番号202を用いて、キャッシュ記憶データメモリ510〜513内の4つのキャッシュエントリを選択する。ここでは、キャッシュエントリ216a〜216dが選択されたものとする。
この4つのキャッシュエントリ216a〜216dの中から、一つのキャッシュエントリが置換対象として選択される。そのため、本実施の形態2におけるレベル2キャッシュ記憶装置501では、監視部519が、第1のプロセッサ502及び第2のプロセッサ503で実行される電力制御命令を監視し、当該電力制御命令を実行するプロセッサの状態変化を参照時刻計算部514に通知し、参照時刻計算部514が、各プロセッサの実行状態を管理する。これにより、スリープモードに移行するプロセッサが利用していたキャッシュエントリを最も過去に使用された状態に設定することが可能となり、別のプロセッサが、スリープモードに移行したプロセッサが利用していたキャッシュエントリを有効に利用することができる。
第1及び第2のプロセッサ502,503のそれぞれは、対応する第1及び第2のオペレーティングシステム521,522上で動作しているタスク数及びタスクの状態などによって、スリープモードに移行する場合、電力制御命令を発行する。また、第1及び第2のプロセッサ502,503のそれぞれは、割込みなどの発生を受けて処理負荷が変化した場合、スリープモードから通常動作モードに復帰する。
参照時刻計算部514a〜514dは、プロセッサ実行状態記憶部515a〜515dを用いて、個々のプロセッサの動作モードを管理する。なお、本実施の形態2では、個々のキャッシュエントリ設定部141a〜141d内に参照時刻計算部514a〜514d及びプロセッサ実行状態記憶部515a〜515dを搭載する構成としているが、キャッシュエントリ設定部141a〜141d間で一つの参照時刻計算部514及び一つのプロセッサ実行状態記憶部515を共有してもよい。これにより、データの一貫性をより効率的に保証することができる。
図8では、プロセッサ実行状態記憶部515aのみ、テーブル内の詳細を示している。図8のプロセッサ実行状態記憶部515aが記憶するテーブルでは、2つのプロセッサ(識別子“0”及び“1”)が存在し、それぞれ、通常動作モード及びスリープモードであると仮定している。なお、図8では、プロセッサ識別子が、“0”及び“1”と表され、通常動作モードであるプロセッサの実行状態が、“RUN”と表され、スリープモードであるプロセッサの実行状態が、“SLEEP”と表されている。また、プロセッサ実行状態記憶部515a〜515dは、プロセッサの実行状態に対応する実行状態値(Val)として、通常動作モードであれば“0”を保持し、スリープモードであれば“1”を保持している。
次に、参照時刻計算部514a〜514dは、選択されたキャッシュエントリ216a〜216d内の参照時刻カウンタ214と、選択されたキャッシュエントリ216a〜216d内の有効ビット212と、プロセッサ実行状態記憶部515a〜515d内のプロセッサの実行状態に対応する実行状態値(Val)とを用いて、各キャッシュエントリ216a〜216dに対応付けられた参照時刻データを生成する。
一例として、キャッシュエントリ216aに対応付けられた参照時刻データ221aは、有効ビット212を否定演算子220aによって反転させた無効ビット222a、プロセッサ実行状態記憶部515aに記憶されているプロセッサの実行状態に対応する実行状態値(Val)を利用した状態ビット223a、及び、参照時刻カウンタ214をそのまま利用した参照カウンタビット224aから構成される。同様に、キャッシュエントリ216b〜216dに対応付けられた参照時刻データ221b〜221dは、それぞれのキャッシュエントリの有効ビット212を否定演算子220b〜220dによって反転させた無効ビット222b〜222d、プロセッサ実行状態記憶部515b〜515dに記憶されているプロセッサの実行状態に対応する実行状態値(Val)を利用した状態ビット223b〜223d、及び、それぞれのキャッシュエントリの参照時刻カウンタ214をそのまま利用した参照カウンタビット224b〜224dから構成される。
置換対象選択部136は、これらの参照時刻データ221a〜221dを受け取って比較し、参照時刻データの数値が最も大きいキャッシュエントリを置換対象として選択し、選択したキャッシュエントリを置換対象キャッシュエントリ230として出力する。また、置換対象選択部136は、選択されたキャッシュエントリを置換することで追い出されたデータがある場合、置換対象のキャッシュエントリと同じウェイのデータをバッファ138に書き込み、置換前のデータをメモリ506へ書き戻す。
具体的には、選択されたキャッシュエントリ216a〜216d内のうち、有効ビット212がOFFであるキャッシュエントリが一つあれば、参照時刻データ221a〜221dにおける最上位ビットである無効ビット222a〜222dがONになるため、当該キャッシュエントリの参照時刻データが最も大きくなる。
また、キャッシュエントリ216a〜216dが全て有効である場合、すなわち、キャッシュエントリ216a〜216dの全ての有効ビット212がONである場合、参照時刻データ221a〜221dにおける最上位ビットである無効ビット222a〜222dは全て“0”となる。このとき、選択されたキャッシュエントリ216a〜216d内のうち、スリープモードのプロセッサが使用しているキャッシュエントリが一つあれば、参照時刻データ221a〜221dにおける上位第二ビットである状態ビット223a〜223dがONになるため、当該キャッシュエントリの参照時刻データが最も大きくなる。
さらに、キャッシュエントリ216a〜216dが全て有効であって、かつ、全て通常動作モードのプロセッサが使用している場合、最上位ビットである無効ビット222a〜222dと、上位第二ビットである状態ビット223a〜223dとは、全て“0”となる。このとき、キャッシュエントリ216a〜216dの参照時刻カウンタ214の値に対応する参照カウンタビット224a〜224dがそのまま用いられる。そのため、参照時刻データ221a〜221dのうち、最も過去に参照されたキャッシュエントリの参照時刻データの値が最も大きくなる。
このように、プロセッサ実行状態記憶部515b〜515dは、電力制御命令に基づいて変更される複数のプロセッサの実行状態と、実行状態に応じて予め設定される値であり、通常動作モードに対応する値よりもスリープモードに対応する値の方が大きい実行状態値とを記憶する。また、参照時刻計算部514a〜514dは、実行状態値と、参照時刻カウント値とを含む参照時刻データ221a〜221dを複数のキャッシュエントリ毎に作成する。
置換対象選択部136は、参照時刻計算部514a〜514dによって作成された複数のキャッシュエントリ毎の参照時刻データ221a〜221dを比較し、参照時刻データに含まれる実行状態値が最も大きい参照時刻データに対応するキャッシュエントリを、置換対象となるキャッシュエントリとして選択する。また、置換対象選択部136は、参照時刻計算部514a〜514dによって作成された複数のキャッシュエントリ毎の参照時刻データ221a〜221dを比較し、参照時刻データに含まれる実行状態値が全て同じである場合、参照時刻データに含まれる参照時刻カウント値が最も大きい参照時刻データに対応するキャッシュエントリを、置換対象となるキャッシュエントリとして選択する。
この構成により、有効ビット212がONでないキャッシュエントリ、及びスリープモードのプロセッサが利用しているキャッシュエントリが優先して置換対象として選択される。そして、これらのキャッシュエントリが存在しない場合のみ、LRUアルゴリズムでキャッシュエントリが置換されることになる。これにより、複数のプロセッサがキャッシュ記憶装置を共有する計算機システムにおいて、一つのプロセッサによって利用されなくなったキャッシュエントリを、別のプロセッサが優先的に利用することができ、限られたサイズのキャッシュ記憶装置を有効に活用することが可能となる。
以上により、有効でないキャッシュエントリを最優先で置換対象とするとともに、次に、スリープモードで実行しているプロセッサが利用しているキャッシュエントリのデータを、最も過去に使用されたキャッシュエントリのデータとみなして置換対象とすることができる。これにより、通常動作モードのプロセッサのデータが優先的にレベル2キャッシュ記憶装置501内に残るように制御することができる。
また、本実施の形態2は、データが一律にキャッシュエントリから無効化される方法ではない。そのため、デバイスなどの状態によって、スリープモードに移行したプロセッサが再度通常動作モードに戻った場合に、過去に使用したキャッシュエントリを有効活用することが可能である。通常動作モードに戻った場合、状態ビットの値が“0”に戻るため、LRUアルゴリズムで置換対象が選択されることになる。
(実施の形態3)
図9は、本発明の実施の形態3における計算機システムの構成を示す図である。計算機システム800は、一つのプロセッサ上で複数のオペレーティングシステムを動作させる仮想計算機システムである。計算機システム800は、内部バス110、キャッシュ記憶装置801、プロセッサ112、メモリ813、周辺モジュール群114及びステータスレジスタ115を備えている。キャッシュ記憶装置801、メモリ813、周辺モジュール群114及びステータスレジスタ115は、それぞれ内部バス110に接続されている。内部バス110、プロセッサ112、周辺モジュール群114及びステータスレジスタ115は、図1において説明したのと同じ構成要素である。
メモリ813は、第1〜第nのタスク823〜827と、第1及び第2のオペレーティングシステム821,822と、ハイパバイザ820とを備えている。図1のメモリ113は、オペレーティングシステムを3個備えているのに対し、図9のメモリ813は、オペレーティングシステムを2個備えている点が異なっており、各構成要素は同じである。
キャッシュ記憶装置801は、キャッシュ記憶装置111と同様のセットアソシアティブ方式のキャッシュ記憶装置である。この場合、キャッシュ記憶装置801は、複数のウェイに分割されたキャッシュ記憶データメモリ830〜833と、置換対象選択部841と、アクセス対象選択部137と、バッファ138と、監視部139と、入出力部140と、キャッシュエントリ設定部141とを備える。キャッシュ記憶データメモリ830〜833は、前述のキャッシュ記憶データメモリ130〜133と同様の構成であるが、個々のキャッシュエントリ内に、オペレーティングシステム識別子を搭載する必要はない。また、アクセス対象選択部137、バッファ138、監視部139及び入出力部140の構成は、実施の形態1と同じ構成であるので説明を省略する。
キャッシュエントリ設定部141は、ロックダウン制御部834と、ロックダウンテーブル記憶部838とを備える。
ロックダウン制御部834は、複数のキャッシュ記憶データメモリ830〜833のうち、指定されたウェイを置換対象としないように設定する。例えば、ロックダウン制御部834によってキャッシュ記憶データメモリ831がロックダウンされると、キャッシュミスが発生した場合、キャッシュ記憶データメモリ830,832,833のいずれかから置換対象キャッシュエントリが選択される。
ロックダウンテーブル記憶部838は、ロックダウンテーブル835を記憶する。ロックダウンテーブル835は、個々のオペレーティングシステムの実行状態、及び個々のオペレーティングシステムが占有するウェイを指定するためのテーブルである。ロックダウンテーブル835には、オペレーティングシステム実行状態836と、占有ウェイ837とを示すエントリが存在する。
オペレーティングシステム実行状態836は、各オペレーティングシステムの実行状態を示す。図9では、第1のオペレーティングシステム821が通常動作モードであり、第2のオペレーティングシステム822がスリープモードであることを示している。なお、図9では、オペレーティングシステム識別子が、“1”及び“2”と表され、通常動作モードであるオペレーティングシステムの実行状態が、“RUN”と表され、スリープモードであるオペレーティングシステムの実行状態が、“SLEEP”と表されている。
占有ウェイ837は、各オペレーティングシステムが占有して使用するキャッシュ記憶データメモリ(ウェイ)を示す。あるオペレーティングシステムが占有するウェイは、他のオペレーティングシステムが置換対象とすることができない。図9の例では、第1のオペレーティングシステム821は、ウェイ0のキャッシュ記憶データメモリ830及びウェイ1のキャッシュ記憶データメモリ831を占有し、第2のオペレーティングシステム822は、ウェイ3のキャッシュ記憶データメモリ833を占有している。
このとき、ロックダウン制御部834は、実行中のオペレーティングシステムを監視し、第2のオペレーティングシステム822が動作する場合、第1のオペレーティングシステム821が占有しているウェイ0のキャッシュ記憶データメモリ830及びウェイ1のキャッシュ記憶データメモリ831をロックダウンする。これにより、第1のオペレーティングシステム821以外のオペレーティングシステムが動作している場合、ウェイ0のキャッシュ記憶データメモリ830及びウェイ1のキャッシュ記憶データメモリ831は置換対象とならない。
オペレーティングシステムがスリープモードである場合、当該オペレーティングシステムがキャッシュ記憶データメモリを占有することは、システム全体の性能に影響を及ぼす。そこで、ロックダウン制御部834は、ロックダウンテーブル835内のオペレーティングシステム実行状態836を参照し、スリープモードであれば、当該オペレーティングシステムに占有されるべきウェイのキャッシュ記憶データメモリをロックダウンしない。
図9の例では、第2のオペレーティングシステム822がウェイ3のキャッシュ記憶データメモリ833を占有するとしている。このとき、ロックダウン制御部834は、第1のオペレーティングシステム821が動作し、第2のオペレーティングシステム822がスリープモードであると判断した場合、本来第2のオペレーティングシステム822が占有するべきウェイ3のキャッシュ記憶データメモリ833をロックダウンしない。これにより、第1のオペレーティングシステム821は、ウェイ3のキャッシュ記憶データメモリ833も置換対象とすることができ、通常に比べて高速なプログラムの実行が期待できる。
このように、キャッシュ記憶装置801は、複数のキャッシュエントリをそれぞれ有する複数のウェイ(キャッシュ記憶データメモリ830〜833)を含む。ロックダウンテーブル記憶部838は、電力制御命令に基づいて変更される複数のオペレーティングシステムの実行状態と、複数のウェイのうちのオペレーティングシステムが利用するウェイを識別するためのウェイ識別子とを記憶する。また、ロックダウン制御部834は、ロックダウンテーブル記憶部838を参照し、スリープモードのオペレーティングシステムが利用しているウェイを置換対象となるウェイに設定するとともに、通常動作モードのオペレーティングシステムが利用しているウェイを置換対象とならないウェイに設定する。
置換対象選択部841は、ロックダウン制御部834によって置換対象となるウェイに設定されたウェイの中から、最も過去に使用されたキャッシュエントリを、置換対象となるキャッシュエントリとして選択する。
なお、本実施の形態3において、キャッシュ記憶装置801がキャッシュ記憶装置の一例に相当し、置換対象選択部841が置換対象選択部の一例に相当し、ロックダウン制御部834がロックダウン制御部の一例に相当し、ロックダウンテーブル記憶部838が実行状態記憶部の一例に相当する。
図10は、図9に示すロックダウン制御部834の動作を説明するためのフローチャートである。なお、図9に示したロックダウン制御部834は、キャッシュ記憶装置801内の制御回路であるとして記載しているが、図10に示すように、例えば、ハイパバイザ820内のプログラムあってもよい。制御回路及びプログラムのいずれであっても、同様の処理フローで実現することができる。
最初に、ロックダウン制御部834は、オペレーティングシステム切替え待ち状態に移行する(ステップS1)。
オペレーティングシステムが切り替えられた場合、ロックダウン制御部834は、ステップS2の処理に移行し、次に実行すべきオペレーティングシステム以外のオペレーティングシステムについて、ステップS3の処理及びステップS4の処理を実行する。すなわち、ロックダウン制御部834は、次に実行すべきオペレーティングシステム以外の全てのオペレーティングシステムについて通常動作モードであるか否かのチェックが完了したか否かを判断する(ステップS2)。
次に実行すべきオペレーティングシステム以外の全てのオペレーティングシステムについて通常動作モードであるか否かのチェックが完了していないと判断された場合(ステップS2でNO)、ロックダウン制御部834は、次に実行すべきオペレーティングシステム以外の他のオペレーティングシステムであり、かつ通常動作モードであるか否かのチェックが完了していないオペレーティングシステムを選択する。そして、ロックダウン制御部834は、ロックダウンテーブル835を参照し、選択されたオペレーティングシステムが通常動作モードであるか否かを判断する(ステップS3)。
通常動作モードであると判断された場合(ステップS3でYES)、ロックダウン制御部834は、ロックダウンテーブル835内の占有ウェイ837で指定されたキャッシュ記憶データメモリをロックダウンする(ステップS4)。一方、通常動作モードでないと判断された場合(ステップS3でNO)、ロックダウン制御部834は、ステップS2の処理に戻る。
一方、次に実行すべきオペレーティングシステム以外の全てのオペレーティングシステムについて通常動作モードであるか否かのチェックが完了したと判断された場合(ステップS2でYES)、ロックダウン制御部834は、ステップS1の処理へ戻り、オペレーティングシステム切替え待ち状態に移行する。
図9に示した構成を用いることにより、キャッシュ記憶装置内にオペレーティングシステム識別子を搭載することなく、より簡易な方法で、オペレーティングシステムの実行状態に応じたキャッシュ記憶装置の有効活用を行うことができる。具体的には、通常動作モードのオペレーティングシステムが利用しているキャッシュ記憶データメモリがロックダウンされるため、当該キャッシュ記憶データメモリが他のオペレーティングシステムによって追い出されることがない。また、スリープモードに移行したオペレーティングシステムのキャッシュ記憶データメモリはロックダウンされないため、他のオペレーティングシステムがキャッシュ記憶装置内のキャッシュエントリを効率的に利用できるようになる。
本実施の形態3は、キャッシュ記憶装置の記憶領域を分割して個々のオペレーティングシステムに完全に割り振る方法に比べて、処理の高速化の効果が期待できる。さらにまた、本実施の形態3は、データが一律にキャッシュエントリから無効化される方法ではないため、デバイスなどの状態によって、スリープモードに移行したオペレーティングシステムが再度通常動作モードに戻った場合に、過去に使用したキャッシュエントリを有効活用することが可能である。
(実施の形態4)
本発明の実施の形態1においては、複数のオペレーティングシステムのうちのいずれかのオペレーティングシステムがスリープモードに移行した場合、当該オペレーティングシステムの使用しているキャッシュエントリが置換対象として完全に優先される。しかしながら、通常動作モードのオペレーティングシステムが最も過去に利用したキャッシュエントリを置換対象としたほうが有効な場合がある。
例えば、オペレーティングシステムの実行状態として、スリープモード及び通常動作モードの他に通常動作モードよりも低速クロックで動作する低消費電力モードを設け、スリープモード時には、当該オペレーティングシステムの利用しているキャッシュエントリを置換対象として完全に優先し、低消費電力モード時には、当該オペレーティングシステムの利用しているキャッシュエントリをある程度置換対象として優先させる。すなわち、通常動作モードのオペレーティングシステムであっても、最も過去に利用したキャッシュエントリは、低消費電力モードのオペレーティングシステムが最近アクセスしたキャッシュエントリよりも優先して置換させることが望ましい場合にも対応可能にする。
図11は、低消費電力モードを考慮した本発明の実施の形態4における計算機システムの構成を示す図である。計算機システム1000は、一つのプロセッサ上で複数のオペレーティングシステムを動作させる仮想計算機システムである。
計算機システム1000は、内部バス110、キャッシュ記憶装置1001、プロセッサ112、メモリ113、周辺モジュール群114及びステータスレジスタ115を備えている。キャッシュ記憶装置1001、メモリ113、周辺モジュール群114及びステータスレジスタ115は、それぞれ内部バス110に接続されている。内部バス110、プロセッサ112、メモリ113、周辺モジュール群114及びステータスレジスタ115は、図1において説明したのと同じ構成要素であるため、説明を省略し、異なる構成要素であるキャッシュ記憶装置1001についてのみ説明する。
また、近年のLSIの高集積化により、計算機システム1000を構成する複数の回路を一つのシステムLSI内に搭載することも可能であるが、本実施の形態4において、回路群が単一のシステムLSI内に実装されるか、それぞれ別のシステムLSIで提供されるかについての限定は行わない。なお、図11では、ステータスレジスタ115は、内部バス110に接続しているが、プロセッサ112に直接接続してもよい。
キャッシュ記憶装置1001は、キャッシュ記憶データメモリ130〜133と、置換対象選択部136と、アクセス対象選択部137と、バッファ138と、監視部139と、入出力部140と、キャッシュエントリ設定部141とを備えている。キャッシュエントリ設定部141は、参照時刻計算部1004と、OS実行状態記憶部1005とを備える。以下、実施の形態1と異なる構成要素である参照時刻計算部1004と、OS実行状態記憶部1005とについて説明する。
参照時刻計算部1004は、監視部139からの通知を受け取り、電力制御命令を実行するオペレーティングシステムの動作モードを、OS実行状態記憶部1005を用いて管理する。OS実行状態記憶部1005は、オペレーティングシステムを識別するオペレーティングシステム識別子と、各オペレーティングシステムの実行状態(通常動作モード、スリープモード及び低消費電力モード)と、オペレーティングシステムの実行状態に対応した未使用時刻加算指標(未使用時刻加算値)とをテーブル形式で保持している。
なお、ここでは、OS実行状態記憶部1005がオペレーティングシステムの動作モード及び未使用時刻加算指標をテーブル形式で保持するとしたが、他のフォーマットでオペレーティングシステムの動作モード及び未使用時刻加算指標を記憶してもよい。
また、参照時刻計算部1004は、置換対象選択部136からの問い合わせに対し、置換対象の候補となる複数のキャッシュエントリの参照時刻データを計算して、計算した参照時刻データを置換対象選択部136に通知する。参照時刻計算部1004は、OS実行状態記憶部1005と、個々のキャッシュエントリに設けられたオペレーティングシステム識別子と、参照時刻カウンタとを用いて、スリープモードのオペレーティングシステムが利用しているキャッシュエントリの参照時刻データを、最も過去に使用された値とし、低消費電力モードのオペレーティングシステムが利用しているキャッシュエントリの参照時刻データを、ある程度過去に使用された値として出力する。なお、キャッシュ記憶装置1001は、スリープモード及び低消費電力モードのオペレーティングシステムが存在しない場合には、通常のLRUアルゴリズムで動作する。
以上のような構成により、スリープモードで実行しているオペレーティングシステムが利用しているキャッシュエントリ上のデータが最も過去に使用されたデータとみなされ、また、低消費電力モードで動作しているオペレーティングシステムが利用しているキャッシュエントリ上のデータが、ある程度過去に使用されたデータとみなされる。したがって、通常動作モードのオペレーティングシステムのデータが優先的にキャッシュ記憶装置1001内に残るように制御することができる。これにより、オペレーティングシステムがスリープモード又は低消費電力モードに移行することで利用される頻度が少なくなったキャッシュエントリを、別のオペレーティングシステムで有効に利用することが可能となり、システム全体としての性能向上を図ることができる。
なお、本実施の形態4において、計算機システム1000が共有キャッシュ制御装置の一例に相当し、メモリ113が主記憶部の一例に相当し、キャッシュ記憶装置1001がキャッシュ記憶装置の一例に相当し、監視部139が監視部の一例に相当し、キャッシュエントリ設定部141がキャッシュエントリ設定部の一例に相当し、置換対象選択部136が置換対象選択部の一例に相当し、OS実行状態記憶部1005が実行状態記憶部の一例に相当し、参照時刻計算部1004が参照時刻データ作成部の一例に相当する。
図12は、キャッシュエントリ選択処理の結果、キャッシュミスが発生した場合のキャッシュエントリ置換処理に関するキャッシュ記憶装置1001の詳細な構成を示す図である。図12において、参照時刻計算部1004a〜1004d、OS実行状態記憶部1005a〜1005d、参照時刻データ1002a〜1002d、参照カウンタビット1003a〜1003d及び加算器1010a〜1010dを除く他の構成要素は、図4と同じ構成要素である。また、参照時刻計算部1004a〜1004dは、図11で説明した参照時刻計算部1004に相当し、OS実行状態記憶部1005a〜1005dは、図11で説明したOS実行状態記憶部1005に相当する。
以下、キャッシュエントリ内のデータを新たなデータに置換するキャッシュエントリ置換処理の詳細について図12を用いて説明する。
まず、キャッシュミスなどにより、新たなデータをメモリ113から読み出して、キャッシュ記憶装置1001に格納する必要がある場合、置換対象選択部136は、アクセス対象選択部137からキャッシュミス信号410を受け取り、キャッシュエントリ置換処理を開始する。
置換対象選択部136は、アドレス信号200内に含まれるインデックス番号202を用いて、キャッシュ記憶データメモリ130〜133内の4つのキャッシュエントリを選択する。ここでは、キャッシュエントリ216a〜216dが選択されたものとする。
この4つのキャッシュエントリ216a〜216dの中から、一つのキャッシュエントリが置換対象として選択される。そのため、本実施の形態4におけるキャッシュ記憶装置1001では、監視部139が、プロセッサ112で実行される電力制御命令を監視し、当該電力制御命令を実行するオペレーティングシステムの状態変化を参照時刻計算部1004に通知し、参照時刻計算部1004が、各オペレーティングシステムの実行状態を管理する。
これにより、スリープモードに移行するオペレーティングシステムが利用していたキャッシュエントリを最も過去に使用された状態に設定することが可能となり、また、低消費電力モードで動作しているオペレーティングシステムが利用しているキャッシュエントリをある程度過去に使用された状態に設定することが可能となる。したがって、通常動作モードのオペレーティングシステムのデータが優先的にキャッシュ記憶装置1001内に残るように制御することができ、同時に、通常動作モードのオペレーティングシステムであっても最も過去に利用したキャッシュエントリは、低消費電力モードのオペレーティングシステムが最近アクセスしたキャッシュエントリよりも優先して置換させることが可能となる。
第1〜第3のオペレーティングシステム121,122,123のそれぞれは、個々のオペレーティングシステム上で動作しているタスク数及びタスクの状態などによって、スリープモード又は低消費電力モードに移行する場合、電力制御命令を発行する。また、第1〜第3のオペレーティングシステム121,122,123のそれぞれは、割込みなどの発生を受けて処理負荷が変化した場合、スリープモード又は低消費電力モードから通常動作モードに復帰する。
参照時刻計算部1004a〜1004dは、OS実行状態記憶部1005a〜1005dを用いて、個々のオペレーティングシステムの動作状態(実行状態)と未使用時間加算指標とを管理する。なお、本実施の形態4では、個々のキャッシュエントリ設定部141a〜141d内に参照時刻計算部1004a〜1004d及びOS実行状態記憶部1005a〜1005dを搭載する構成としているが、キャッシュエントリ設定部141a〜141d間で一つの参照時刻計算部1004及び一つのOS実行状態記憶部1005を共有してもよい。これにより、データの一貫性をより効率的に保障することができる。
図12では、OS実行状態記憶部1005aのみ、テーブル内の詳細を示している。図12のOS実行状態記憶部1005aが記憶するテーブルでは、3つのオペレーティングシステムが存在している。3つのオペレーティングシステムのそれぞれのオペレーティングシステム識別子は、“0”、“1”及び“2”であり、それぞれの実行状態は、通常動作モード、スリープモード及び低消費電力モードであり、それぞれの未使用時刻加算指標(Val)は、“0”、“4”及び“2”であると仮定している。
なお、図12では、通常動作モードであるオペレーティングシステムの実行状態が、“RUN”と表され、スリープモードであるオペレーティングシステムの実行状態が、“SLEEP”と表され、低消費電力モードであるオペレーティングシステムの実行状態が、“SLOW”と表されている。
つまり、OS実行状態記憶部1005a〜1005dは、未使用時刻加算指標として、通常動作モードであれば“0”を保持し、低消費電力モードであれば“2”を保持し、スリープモードであれば“4”を保持している。
次に、参照時刻計算部1004a〜1004dは、選択されたキャッシュエントリ216a〜216d内の参照時刻カウンタ214と、選択されたキャッシュエントリ216a〜216d内の有効ビット212と、OS実行状態記憶部1005a〜1005d内の未使用時刻加算指標(Val)とを用いて、各キャッシュエントリ216a〜216dに対応付けられた参照時刻データを生成する。
キャッシュエントリ216aに対応付けられた参照時刻データ1002aは、有効ビット212を否定演算子220aによって反転させた無効ビット222a、及び、加算器1010aを用いて、各キャッシュエントリの参照時刻カウンタ214の値にOS実行状態記憶部1005aに記憶されている未使用時刻加算指標(Val)を加えた参照カウンタビット1003aから構成される。同様に、キャッシュエントリ216b〜216dに対応付けられた参照時刻データ1002b〜1002dは、それぞれのキャッシュエントリの有効ビット212を否定演算子220b〜220dによって反転させた無効ビット222b〜222d、及び、加算器1010b〜1010dを用いて、それぞれのキャッシュエントリの参照時刻カウンタ214の値にOS実行状態記憶部1005b〜1005dに記憶されている未使用時間加算指標(Val)を加えた参照カウンタビット1003b〜1003dから構成される。
置換対象選択部136は、これらの参照時刻データ1002a〜1002dを受け取って比較し、参照時刻データの数値が最も大きいキャッシュエントリを置換対象として選択し、選択したキャッシュエントリを置換対象キャッシュエントリ230として出力する。また、置換対象選択部136は、選択されたキャッシュエントリを置換することで追い出されたデータがある場合、置換対象のキャッシュエントリと同じウェイのデータをバッファ138に書き込み、置換前のデータをメモリ113へ書き戻す。
図13は、参照時刻データ1002aの参照カウンタビット1003aが取り得る値を示す図である。図13では、オペレーティングシステムの実行状態が通常動作モード(“RUN”)、スリープモード(“SLEEP”)及び低消費電力モード(“SLOW”)のうちのいずれであるか、及び、参照時刻カウンタ(“Cnt”)214の値の変化によって、参照カウンタビット(“CNT”)1003aがどのような値になるかについて示している。
例えば、レコード1103の場合、オペレーティングシステムの実行状態は低消費電力モードであり、参照時刻カウンタ214の値は“0”である。低消費電力モードに対応付けられている未使用時間加算指標は、“2”であるので、参照時刻カウンタ214の値と未使用時間加算指標とを加算することで、参照カウンタビット1003aの値は、“2”となる。また、レコード1104の場合、オペレーティングシステムの実行状態は通常動作モードであり、参照時刻カウンタ214の値は“3”である。通常動作モードに対応付けられている未使用時間加算指標は、“0”であるので、参照時刻カウンタ214の値と未使用時間加算指標とを加算することで、参照カウンタビット1003aの値は、“3”となる。なお、図13に示す各値は、2進数で表している。
ここで、レコード1103とレコード1104とを比較すると、レコード1104における参照カウンタビットの値のほうが、レコード1103における参照カウンタビットの値よりも大きい。そのため、通常動作モード(レコード1104)のオペレーティングシステムが利用しているキャッシュエントリであっても、低消費電力モード(レコード1103)のオペレーティングシステムが利用しているキャッシュエントリよりも優先して置換対象となる場合があることが理解できる。
このように、OS実行状態記憶部1005a〜1005dは、オペレーティングシステムの実行状態と、実行状態に応じて参照時刻カウント値に加算する値を表す未使用時刻加算指標とを記憶する。また、参照時刻計算部1004a〜1004dは、キャッシュエントリを使用しているオペレーティングシステムの実行状態に応じた未使用時刻加算指標を、キャッシュエントリに含まれる参照時刻カウント値に加算し、参照時刻カウント値を含む参照時刻データ1002a〜1002dを複数のキャッシュエントリ毎に作成する。
置換対象選択部136は、参照時刻計算部1004a〜1004dによって作成された複数の参照時刻データ1002a〜1002dに含まれる複数の参照時刻カウント値のうち、値が最も大きい参照時刻カウント値に対応するキャッシュエントリを、置換対象となるキャッシュエントリとして選択する。
なお、スリープモードに対応付けられる未使用時刻加算指標は、低消費電力モードに対応付けられる未使用時刻加算指標に比べて大きい。また、低消費電力モードに対応付けられる未使用時刻加算指標は、通常動作モードに対応付けられる未使用時刻加算指標に比べて大きく、かつスリープモードに対応付けられる未使用時刻加算指標に比べて小さい。
この構成により、有効ビット212がONでないキャッシュエントリを最優先の置換対象とし、次に、スリープモード及び低消費電力モードのオペレーティングシステムが利用しているキャッシュエントリが優先して置換対象として選択される。また、低消費電力モードのオペレーティングシステムが利用するキャッシュエントリを、通常動作モードのオペレーティングシステムが利用するキャッシュエントリに比べてある程度優先的に置換対象とすることができる。これにより、複数のオペレーティングシステムがキャッシュ記憶装置を共有するシステムにおいて、一つのオペレーティングシステムによって利用頻度が少なくなったキャッシュエントリを、別のオペレーティングシステムが優先的に利用することができ、限られたサイズのキャッシュ記憶装置を有効に活用することが可能となる。
以上により、有効でないキャッシュエントリを最優先で置換対象とするとともに、オペレーティングシステムの実行状態として、スリープモード及び通常動作モードの他に通常動作モードよりも低速クロックで動作する低消費電力モードを設け、スリープモード時には、当該オペレーティングシステムの利用しているキャッシュエントリを置換対象として完全に優先し、低消費電力モード時には、当該オペレーティングシステムの利用しているキャッシュエントリをある程度置換対象として優先させることが可能となる。
また、一つのオペレーティングシステムが通常動作モードから低消費電力モード(ここでは、低速クロックで動作するモードを意味する)に移行した場合などにおいて、低消費電力モードにおけるオペレーティングシステムは、スリープモードと異なり、低速ながらも動作する。そのため、当該低消費電力モードのオペレーティングシステムが利用していたキャッシュエントリを一律に最も過去に使用された状態に設定するのではなく、オペレーティングシステムの実行状態に応じて、置換対象とするキャッシュエントリの優先度を可変する。これにより、低消費電力モードのオペレーティングシステムが、ある程度だけ置換対象として優先されるので、キャッシュエントリを有効活用することができる。
また、本実施の形態4は、データが一律にキャッシュエントリから無効化される方法ではないため、デバイスなどの状態によって、スリープモード又は低消費電力動作モードに移行したオペレーティングシステムが再度通常動作モードに戻った場合に、過去に使用したキャッシュエントリを有効活用することが可能である。通常動作モードに戻った場合、キャッシュ記憶装置は、LRUアルゴリズムで置換対象を選択することになる。
(実施の形態5)
本発明の実施の形態2においては、複数のプロセッサのうちのいずれかのプロセッサがスリープモードに移行した場合、当該プロセッサの使用しているキャッシュエントリが置換対象として完全に優先される。しかしながら、通常動作モードのプロセッサが最も過去に利用したキャッシュエントリを置換対象としたほうが有効な場合がある。
例えば、プロセッサの実行状態として、スリープモード及び通常動作モードの他に通常動作モードよりも低速クロックで動作する低消費電力モードを設け、スリープモード時には、当該プロセッサの利用しているキャッシュエントリを置換対象として完全に優先し、低消費電力モード時には、当該プロセッサの利用しているキャッシュエントリをある程度置換対象として優先させる。すなわち、通常動作モードのプロセッサであっても、最も過去に利用したキャッシュエントリは、低消費電力モードのプロセッサが最近アクセスしたキャッシュエントリよりも優先して置換させることが望ましい場合にも対応可能にする。
図14は、低消費電力モードを考慮した本発明の実施の形態5における計算機システムの構成を示す図である。計算機システム1200は、複数のプロセッサがメモリ及びキャッシュ記憶装置を共有するマルチプロセッサシステムである。
計算機システム1200は、内部バス110、複数のプロセッサ(第1のプロセッサ502及び第2のプロセッサ503)、複数のレベル1キャッシュ記憶装置(第1のレベル1キャッシュ記憶装置504及び第2のレベル1キャッシュ記憶装置505)、レベル2キャッシュ記憶装置1201、メモリ506、周辺モジュール群114及びステータスレジスタ115を備えている。内部バス110、複数のプロセッサ(第1のプロセッサ502及び第2のプロセッサ503)、複数のレベル1キャッシュ記憶装置(第1のレベル1キャッシュ記憶装置504及び第2のレベル1キャッシュ記憶装置505)、メモリ506、周辺モジュール群114及びステータスレジスタ115は、図6において説明した構成要素と同じであるため、説明を省略し、異なる構成要素であるレベル2キャッシュ記憶装置1201についてのみ説明する。
また、近年のLSIの高集積化により、計算機システム1200を構成する複数の回路を一つのシステムLSI内に搭載することも可能であるが、本実施の形態5において、回路群が単一のシステムLSI内に実装されるか、それぞれ別のシステムLSIで提供されるかについての限定は行わない。なお、図14では、ステータスレジスタ115は、内部バス110に接続しているが、第1のプロセッサ502及び第2のプロセッサ503に直接接続してもよい。
レベル2キャッシュ記憶装置1201は、第1のプロセッサ502及び第2のプロセッサ503から共有され、第1のプロセッサ502及び第2のプロセッサ503が第1のレベル1キャッシュ記憶装置504及び第2のレベル1キャッシュ記憶装置505を介して参照したデータ及び命令を一時的に格納しておくための記憶手段である。レベル2キャッシュ記憶装置1201は、キャッシュ記憶データメモリ510〜513と、参照時刻計算部1204と、プロセッサ実行状態記憶部1205と、置換対象選択部136と、アクセス対象選択部137と、バッファ138と、監視部519と、入出力部140とを備えている。以下、実施の形態2と異なる構成要素である参照時刻計算部1204と、プロセッサ実行状態記憶部1205とについて説明する。
参照時刻計算部1204は、監視部519からの通知を受け取り、個々のプロセッサの動作モードを、プロセッサ実行状態記憶部1205を用いて管理する。プロセッサ実行状態記憶部1205は、プロセッサを識別するプロセッサ識別子と、各プロセッサの実行状態(通常動作モード、スリープモード及び低消費電力モード)と、プロセッサの実行状態に対応した未使用時刻加算指標とをテーブル形式で保持している。
なお、ここでは、プロセッサ実行状態記憶部1205がプロセッサの動作モード及び未使用時刻加算指標をテーブル形式で保持するとしたが、他のフォーマットでプロセッサの動作モード及び未使用時刻加算指標を記憶してもよい。
また、参照時刻計算部1204は、置換対象選択部136からの問い合わせに対し、置換対象の候補となる複数のキャッシュエントリの参照時刻データを計算して、計算した参照時刻データを置換対象選択部136に通知する。参照時刻計算部1204は、プロセッサ実行状態記憶部1205と、個々のキャッシュエントリに設けられたプロセッサ識別子と、参照時刻カウンタとを用いて、スリープモードのプロセッサが利用しているキャッシュエントリの参照時刻データを、最も過去に使用された値とし、低消費電力モードのプロセッサが利用しているキャッシュエントリの参照時刻データを、ある程度過去に使用された値として出力する。なお、レベル2キャッシュ記憶装置1201は、スリープモード及び低消費電力モードのプロセッサが存在しない場合には、通常のLRUアルゴリズムで動作する。
以上のような構成により、スリープモードで実行しているプロセッサが利用しているキャッシュエントリ上のデータが、最も過去に使用されたデータとみなされ、また、低消費電力モードで動作しているプロセッサが利用しているキャッシュエントリ上のデータが、ある程度過去に使用されたデータとみなされる。したがって、通常動作モードのプロセッサのデータが優先的にキャッシュ記憶装置1201内に残るように制御することができる。これにより、プロセッサがスリープモード又は低消費電力モードに移行することで利用される頻度が少なくなったキャッシュエントリを、別のプロセッサで有効に利用することが可能となり、システム全体としての性能向上を図ることができる。
なお、本実施の形態5において、計算機システム1200が共有キャッシュ制御装置の一例に相当し、メモリ506が主記憶部の一例に相当し、レベル2キャッシュ記憶装置1201がキャッシュ記憶装置の一例に相当し、監視部519が監視部の一例に相当し、キャッシュエントリ設定部141がキャッシュエントリ設定部の一例に相当し、置換対象選択部136が置換対象選択部の一例に相当し、プロセッサ実行状態記憶部1205が実行状態記憶部の一例に相当し、参照時刻計算部1204が参照時刻データ作成部の一例に相当する。
図15は、キャッシュエントリ選択処理の結果、キャッシュミスが発生した場合のキャッシュエントリ置換処理に関するレベル2キャッシュ記憶装置1201の詳細な構成を示す図である。図15において、参照時刻計算部1204a〜1204d及びプロセッサ実行状態記憶部1205a〜1205dを除く他の構成要素は、図8又は図12と同じ構成要素である。また、参照時刻計算部1204a〜1204dは、図14で説明した参照時刻計算部1204に相当し、プロセッサ実行状態記憶部1205a〜1205dは、図14で説明したプロセッサ実行状態記憶部1205に相当する。
以下、キャッシュエントリ内のデータを新たなデータに置換するキャッシュエントリ置換処理の詳細について図15を用いて説明する。
まず、キャッシュミスなどにより、新たなデータをメモリ506から読み出して、レベル2キャッシュ記憶装置1201に格納する必要がある場合、置換対象選択部136は、アクセス対象選択部137からキャッシュミス信号410を受け取り、キャッシュエントリ置換処理を開始する。
置換対象選択部136は、アドレス信号200内に含まれるインデックス番号202を用いて、キャッシュ記憶データメモリ510〜513内の4つのキャッシュエントリを選択する。ここでは、キャッシュエントリ216a〜216dが選択されたものとする。
この4つのキャッシュエントリ216a〜216dの中から、一つのキャッシュエントリが置換対象として選択される。そのため、本実施の形態5におけるキャッシュ記憶装置1201では、監視部519が、第1のプロセッサ502及び第2のプロセッサ503で実行される電力制御命令を監視し、当該電力制御命令を実行するプロセッサの状態変化を参照時刻計算部1204に通知し、参照時刻計算部1204が、各プロセッサの実行状態を管理する。
これにより、スリープモードに移行するプロセッサが利用していたキャッシュエントリを最も過去に使用された状態に設定することが可能となり、また、低消費電力モードで動作しているプロセッサが利用しているキャッシュエントリをある程度過去に使用された状態に設定することが可能となる。したがって、通常動作モードのプロセッサのデータが優先的にレベル2キャッシュ記憶装置1201内に残るように制御することができ、同時に、通常動作モードのプロセッサであっても最も過去に利用したキャッシュエントリは、低消費電力モードのプロセッサが最近アクセスしたキャッシュエントリよりも優先して置換させることが可能となる。
第1のプロセッサ502及び第2のプロセッサ503のそれぞれは、対応する第1のオペレーティングシステム521及び第2のオペレーティングシステム522上で動作しているタスク数及びタスクの状態などによって、スリープモード又は低消費電力モードに移行する場合、電力制御命令を発行する。また、第1のプロセッサ502及び第2のプロセッサ503のそれぞれは、割込みなどの発生を受けて処理負荷が変化した場合、スリープモード又は低消費電力モードから通常動作モードに復帰する。
参照時刻計算部1204a〜1204dは、プロセッサ実行状態記憶部1205a〜1205dを用いて、個々のプロセッサの実行状態と未使用時間加算指標とを管理する。なお、本実施の形態5では、個々のキャッシュエントリ設定部141a〜141d内に参照時刻計算部1204a〜1204d及びプロセッサ実行状態記憶部1205a〜1205dを搭載する構成としているが、キャッシュエントリ設定部141a〜141d間で一つの参照時刻計算部1204及び一つのプロセッサ実行状態記憶部1205を共有してもよい。これにより、データの一貫性をより効率的に保障することができる。
図15では、プロセッサ実行状態記憶部1205aのみ、テーブル内の詳細を示している。図15のプロセッサ実行状態記憶部1205aが記憶するテーブルでは、2つのプロセッサが存在している。2つのプロセッサのそれぞれのプロセッサ識別子は、“0”及び“1”であり、それぞれの実行状態は、通常動作モード及び低消費電力モードであり、それぞれの未使用時刻加算指標(Val)は、“0”及び“2”であると仮定している。また、スリープモードに対応する未使用時刻加算指標(Val)は、“4”とする。
なお、図15では、通常動作モードであるプロセッサの実行状態が、“RUN”と表され、低消費電力モードであるプロセッサの実行状態が、“SLOW”と表されている。
つまり、プロセッサ実行状態記憶部1205a〜1205dは、未使用時刻加算指標として、通常動作モードであれば“0”を保持し、低消費電力モードであれば“2”を保持し、スリープモードであれば“4”を保持している。
次に、参照時刻計算部1204a〜1204dは、選択されたキャッシュエントリ216a〜216d内の参照時刻カウンタ214と、選択されたキャッシュエントリ216a〜216d内の有効ビット212と、プロセッサ実行状態記憶部1205a〜1205d内の未使用時刻加算指標(Val)とを用いて、各キャッシュエントリ216a〜216dに対応付けられた参照時刻データを生成する。
キャッシュエントリ216aに対応付けられた参照時刻データ1002aは、有効ビット212を否定演算子220aによって反転させた無効ビット222a、及び、加算器1010aを用いて、各キャッシュエントリの参照時刻カウンタ214の値にプロセッサ実行状態記憶部1205aに記憶されている未使用時刻加算指標(Val)を加えた参照カウンタビット1003aから構成される。同様に、キャッシュエントリ216b〜216dに対応付けられた参照時刻データ1002b〜1002dは、それぞれのキャッシュエントリの有効ビット212を否定演算子220b〜220dによって反転させた無効ビット222b〜222d、及び、加算器1010b〜1010dを用いて、それぞれのキャッシュエントリの参照時刻カウンタ214の値にプロセッサ実行状態記憶部1205b〜1205dに記憶されている未使用時間加算指標(Val)を加えた参照カウンタビット1003b〜1003dから構成される。
置換対象選択部136は、これらの参照時刻データ1002a〜1002dを受け取って比較し、参照時刻データの数値が最も大きいキャッシュエントリを置換対象として選択し、選択したキャッシュエントリを置換対象キャッシュエントリ230として出力する。また、置換対象選択部136は、選択されたキャッシュエントリを置換することで追い出されたデータがある場合、置換対象のキャッシュエントリと同じウェイのデータをバッファ138に書き込み、置換前のデータをメモリ506へ書き戻す。
このように、プロセッサ実行状態記憶部1205a〜1205dは、プロセッサの実行状態と、実行状態に応じて参照時刻カウント値に加算する値を表す未使用時刻加算指標とを記憶する。参照時刻計算部1204a〜1204dは、キャッシュエントリを使用しているプロセッサの実行状態に応じた未使用時刻加算指標を、キャッシュエントリに含まれる参照時刻カウント値に加算し、参照時刻カウント値を含む参照時刻データ1002a〜1002dを複数のキャッシュエントリ毎に作成する。
置換対象選択部136は、参照時刻計算部1204a〜1204dによって作成された複数の参照時刻データ1002a〜1002dに含まれる複数の参照時刻カウント値のうち、値が最も大きい参照時刻カウント値に対応するキャッシュエントリを、置換対象となるキャッシュエントリとして選択する。
なお、スリープモードに対応付けられる未使用時刻加算指標は、低消費電力モードに対応付けられる未使用時刻加算指標に比べて大きい。また、低消費電力モードに対応付けられる未使用時刻加算指標は、通常動作モードに対応付けられる未使用時刻加算指標に比べて大きく、かつスリープモードに対応付けられる未使用時刻加算指標に比べて小さい。
この構成により、有効ビット212がONでないキャッシュエントリを最優先の置換対象とし、次に、スリープモード及び低消費電力モードのプロセッサが利用しているキャッシュエントリが優先して置換対象として選択される。また、低消費電力モードのプロセッサが利用するキャッシュエントリを、通常動作モードのプロセッサが利用するキャッシュエントリに比べてある程度優先的に置換対象とすることができる。これにより、複数のプロセッサがキャッシュ記憶装置を共有するシステムにおいて、一つのプロセッサによって利用頻度が少なくなったキャッシュエントリを、別のプロセッサが優先的に利用することができ、限られたサイズのキャッシュ記憶装置を有効に活用することが可能となる。
以上により、有効でないキャッシュエントリを最優先で置換対象とするとともに、プロセッサの実行状態として、スリープモード及び通常動作モードの他に通常動作モードよりも低速クロックで動作する低消費電力モードを設け、スリープモード時には、当該プロセッサの利用しているキャッシュエントリを置換対象として完全に優先し、低消費電力モード時には、当該プロセッサの利用しているキャッシュエントリをある程度置換対象として優先させることが可能となる。
また、一つのプロセッサが通常動作モードから低消費電力モード(ここでは、低速クロックで動作するモードを意味する)に移行した場合などにおいて、低消費電力モードにおけるプロセッサは、スリープモードと異なり、低速ながらも動作する。そのため、当該低消費電力モードのプロセッサが利用していたキャッシュエントリを一律に最も過去に使用された状態に設定するのではなく、プロセッサの実行状態に応じて、置換対象とするキャッシュエントリの優先度を可変とする。これにより、低消費電力モードのプロセッサが、ある程度置換対象として優先されるので、キャッシュエントリの有効活用することができる。
また、本実施の形態5は、データが一律にキャッシュエントリから無効化される方法ではないため、デバイスなどの状態によって、スリープモード又は低消費電力動作モードに移行したプロセッサが再度通常動作モードに戻った場合に、過去に使用したキャッシュエントリを有効活用することが可能である。通常動作モードに戻った場合、レベル2キャッシュ記憶装置は、LRUアルゴリズムで置換対象を選択することになる。
(実施の形態6)
図16は、本発明の実施の形態6における計算機システム1300の構成を示す図である。図16に示す計算機システム1300は、メモリ113と、周辺モジュール群114と集積回路1301とを備える。
集積回路1301は、キャッシュ記憶装置1302と、プロセッサ112とステータスレジスタ115とを備える。キャッシュ記憶装置1302は、キャッシュ記憶データメモリ1310〜1313と、キャッシュエントリ設定回路1321と、置換対象選択回路1316と、アクセス対象選択回路1317と、バッファ1318と、監視回路1319と、入出力回路1320とを備えている。キャッシュエントリ設定回路1321は、参照時刻計算回路1314と、OS実行状態記憶回路1315とを備える。
実施の形態6におけるキャッシュ記憶装置1302、キャッシュ記憶データメモリ1310〜1313、キャッシュエントリ設定回路1321、置換対象選択回路1316、アクセス対象選択回路1317、バッファ1318、監視回路1319、入出力回路1320、参照時刻計算回路1314及びOS実行状態記憶回路1315は、それぞれ、実施の形態1におけるキャッシュ記憶装置111、キャッシュ記憶データメモリ130〜133、キャッシュエントリ設定部141、置換対象選択部136、アクセス対象選択部137、バッファ138、監視部139、入出力部140、参照時刻計算部134及びOS実行状態記憶部135と同じ機能を有している。
このように、キャッシュ記憶装置1302と、ステータスレジスタ115と、プロセッサ112とは、1つの集積回路に搭載することができる。
なお、上述した具体的実施形態には以下の構成を有する発明が主に含まれている。
本発明の一局面に係る共有キャッシュ制御装置は、主記憶部と、複数のオペレーティングシステム又は複数のプロセッサによって共有され、かつ、前記主記憶部から読み出されたデータを格納する複数のキャッシュエントリから構成されるキャッシュ記憶装置と、前記複数のオペレーティングシステムを動作させるプロセッサ又は前記複数のプロセッサに供給される電力を制御するための電力制御命令を監視する監視部と、キャッシュミスが発生し、前記複数のキャッシュエントリの中から置換対象となるキャッシュエントリを選択する際に、前記電力制御命令に基づいて変更される前記複数のオペレーティングシステム又は前記複数のプロセッサの実行状態を用いて、前記電力制御命令を実行した前記オペレーティングシステム又は前記プロセッサが利用していたキャッシュエントリを、過去に使用された状態に設定するキャッシュエントリ設定部と、前記キャッシュエントリ設定部によって過去に使用された状態に設定された前記キャッシュエントリを、置換対象となるキャッシュエントリとして選択する置換対象選択部とを備える。
本発明の他の局面に係る共有キャッシュ制御方法は、複数のオペレーティングシステム又は複数のプロセッサによって共有され、かつ、主記憶部から読み出されたデータを格納する複数のキャッシュエントリから構成されるキャッシュ記憶装置にデータを記憶するキャッシュ記憶ステップと、前記複数のオペレーティングシステムを動作させるプロセッサ又は前記複数のプロセッサに供給される電力を制御するための電力制御命令を監視する監視ステップと、前記複数のキャッシュエントリの中から置換対象となるキャッシュエントリを選択する際に、前記電力制御命令に基づいて変更される前記複数のオペレーティングシステム又は前記複数のプロセッサの前記実行状態を用いて、前記電力制御命令を実行した前記オペレーティングシステム又は前記プロセッサが利用していたキャッシュエントリを、過去に使用された状態に設定するキャッシュエントリ設定ステップと、前記キャッシュエントリ設定ステップにおいて過去に使用された状態に設定された前記キャッシュエントリを、置換対象となるキャッシュエントリとして選択する置換対象選択ステップとを含む。
本発明の他の局面に係る集積回路は、複数のオペレーティングシステム又は複数のプロセッサによって共有され、かつ、主記憶装置から読み出されたデータを格納する複数のキャッシュエントリから構成されるキャッシュ記憶装置と、前記複数のオペレーティングシステムを動作させるプロセッサ又は前記複数のプロセッサに供給される電力を制御するための電力制御命令を監視する監視回路と、前記複数のキャッシュエントリの中から置換対象となるキャッシュエントリを選択する際に、前記電力制御命令に基づいて変更される前記複数のオペレーティングシステム又は前記複数のプロセッサの実行状態を用いて、前記電力制御命令を実行した前記オペレーティングシステム又は前記プロセッサが利用していたキャッシュエントリを、過去に使用された状態に設定するキャッシュエントリ設定回路と、前記キャッシュエントリ設定回路によって過去に使用された状態に設定された前記キャッシュエントリを、置換対象となるキャッシュエントリとして選択する置換対象選択回路とを備える。
これらの構成によれば、キャッシュ記憶装置は、複数のオペレーティングシステム又は複数のプロセッサによって共有され、かつ、主記憶部から読み出されたデータを格納する複数のキャッシュエントリから構成される。複数のオペレーティングシステムを動作させるプロセッサ又は複数のプロセッサに供給される電力を制御するための電力制御命令が監視される。そして、複数のキャッシュエントリの中から置換対象となるキャッシュエントリが選択される際に、電力制御命令に基づいて変更される複数のオペレーティングシステム又は複数のプロセッサの実行状態を用いて、電力制御命令を実行したオペレーティングシステム又はプロセッサが利用していたキャッシュエントリが、過去に使用された状態に設定される。その後、過去に使用された状態に設定されたキャッシュエントリが、置換対象となるキャッシュエントリとして選択される。
したがって、複数のオペレーティングシステム又は複数のプロセッサがキャッシュ記憶装置を共有する場合において、実行状態が変化することにより、1のオペレーティングシステム又は1のプロセッサによって利用されなくなったキャッシュ記憶装置内のキャッシュエントリを、他のオペレーティングシステム又は他のプロセッサが優先的に利用できるようになり、複数のオペレーティングシステム又は複数のプロセッサが1のキャッシュ記憶装置を有効活用できる。
また、上記の共有キャッシュ制御装置において、前記電力制御命令は、前記オペレーティングシステムの動作停止を指示するスリープ命令を少なくとも含み、前記実行状態は、前記オペレーティングシステムを高速クロックで動作する通常動作モードと、前記オペレーティングシステムの動作を停止するスリープモードとを少なくとも含み、前記キャッシュエントリ設定部は、前記スリープモードの前記オペレーティングシステムが利用しているキャッシュエントリを、前記通常動作モードの前記オペレーティングシステムが利用しているキャッシュエントリより過去に使用された状態に設定し、前記置換対象選択部は、前記キャッシュエントリ設定部によって最も過去に使用された状態に設定された前記キャッシュエントリを、置換対象となるキャッシュエントリとして選択することが好ましい。
この構成によれば、電力制御命令は、オペレーティングシステムの動作停止を指示するスリープ命令を少なくとも含み、実行状態は、オペレーティングシステムを高速クロックで動作する通常動作モードと、オペレーティングシステムの動作を停止するスリープモードとを少なくとも含む。スリープモードのオペレーティングシステムが利用しているキャッシュエントリが、通常動作モードのオペレーティングシステムが利用しているキャッシュエントリより過去に使用された状態に設定される。そして、最も過去に使用された状態に設定されたキャッシュエントリが、置換対象となるキャッシュエントリとして選択される。
したがって、通常動作モードのオペレーティングシステムは、スリープモードのオペレーティングシステムが使用していたキャッシュエントリを使用することが可能となり、複数のオペレーティングシステムが1のキャッシュ記憶装置を有効活用できる。
また、上記の共有キャッシュ制御装置において、前記キャッシュエントリは、当該キャッシュエントリを使用するオペレーティングシステムを識別するためのオペレーティングシステム識別子と、当該キャッシュエントリが参照された時刻に応じてカウントされ、参照された時刻が古くなるほど値が大きくなる参照時刻カウント値と、データとを含み、前記キャッシュエントリ設定部は、前記電力制御命令に基づいて変更される前記複数のオペレーティングシステムの実行状態と、前記実行状態に応じて予め設定される値であり、前記通常動作モードに対応する値よりも前記スリープモードに対応する値の方が大きい実行状態値とを記憶する実行状態記憶部と、前記実行状態値と、前記参照時刻カウント値とを含む参照時刻データを前記複数のキャッシュエントリ毎に作成する参照時刻データ作成部とを含み、前記置換対象選択部は、前記参照時刻データ作成部によって作成された前記複数のキャッシュエントリ毎の前記参照時刻データを比較し、前記参照時刻データに含まれる前記実行状態値が最も大きい前記参照時刻データに対応するキャッシュエントリを、置換対象となるキャッシュエントリとして選択することが好ましい。
この構成によれば、キャッシュエントリは、当該キャッシュエントリを使用するオペレーティングシステムを識別するためのオペレーティングシステム識別子と、当該キャッシュエントリが参照された時刻に応じてカウントされ、参照された時刻が古くなるほど値が大きくなる参照時刻カウント値と、データとを含む。実行状態記憶部は、電力制御命令に基づいて変更される複数のオペレーティングシステムの実行状態と、実行状態に応じて予め設定される値であり、通常動作モードに対応する値よりもスリープモードに対応する値の方が大きい実行状態値とを記憶している。そして、実行状態値と、参照時刻カウント値とを含む参照時刻データが複数のキャッシュエントリ毎に作成され、作成された複数のキャッシュエントリ毎の参照時刻データが比較され、参照時刻データに含まれる実行状態値が最も大きい参照時刻データに対応するキャッシュエントリが、置換対象となるキャッシュエントリとして選択される。
したがって、各キャッシュエントリに対応する実行状態値を比較することにより、スリープモードのオペレーティングシステムが使用しているキャッシュエントリが特定されるので、容易に置換対象となるキャッシュエントリを選択することができる。
また、上記の共有キャッシュ制御装置において、前記置換対象選択部は、前記参照時刻データ作成部によって作成された前記複数のキャッシュエントリ毎の前記参照時刻データを比較し、前記参照時刻データに含まれる前記実行状態値が全て同じである場合、前記参照時刻データに含まれる前記参照時刻カウント値が最も大きい前記参照時刻データに対応するキャッシュエントリを、置換対象となるキャッシュエントリとして選択することが好ましい。
この構成によれば、複数のキャッシュエントリ毎の参照時刻データが比較され、参照時刻データに含まれる実行状態値が全て同じである場合、参照時刻データに含まれる参照時刻カウント値が最も大きい参照時刻データに対応するキャッシュエントリが、置換対象となるキャッシュエントリとして選択される。
したがって、複数のキャッシュエントリを利用している各オペレーティングシステムの実行状態が同じ場合であっても、キャッシュエントリが参照された時刻に基づいて、置換対象となるキャッシュエントリが選択されるので、置換対象となるキャッシュエントリをより確実に選択することができる。
また、上記の共有キャッシュ制御装置において、前記電力制御命令は、前記プロセッサの動作停止を指示するスリープ命令を少なくとも含み、前記実行状態は、前記プロセッサを高速クロックで動作する通常動作モードと、前記プロセッサの動作を停止するスリープモードとを含み、前記キャッシュエントリ設定部は、前記スリープモードの前記プロセッサが利用しているキャッシュエントリを、前記通常動作モードの前記プロセッサが利用しているキャッシュエントリより過去に使用された状態に設定し、前記置換対象選択部は、前記キャッシュエントリ設定部によって最も過去に使用された状態に設定された前記キャッシュエントリを、置換対象となるキャッシュエントリとして選択することが好ましい。
この構成によれば、電力制御命令は、プロセッサの動作停止を指示するスリープ命令を少なくとも含み、実行状態は、プロセッサを高速クロックで動作する通常動作モードと、プロセッサの動作を停止するスリープモードとを含む。スリープモードのプロセッサが利用しているキャッシュエントリが、通常動作モードのプロセッサが利用しているキャッシュエントリより過去に使用された状態に設定される。そして、最も過去に使用された状態に設定されたキャッシュエントリが、置換対象となるキャッシュエントリとして選択される。
したがって、通常動作モードのプロセッサは、スリープモードのプロセッサが使用していたキャッシュエントリを使用することが可能となり、複数のプロセッサが1のキャッシュ記憶装置を有効活用できる。
また、上記の共有キャッシュ制御装置において、前記キャッシュエントリは、当該キャッシュエントリを使用するプロセッサを識別するためのプロセッサ識別子と、当該キャッシュエントリが参照された時刻に応じてカウントされ、参照された時刻が古くなるほど値が大きくなる参照時刻カウント値と、データとを含み、前記キャッシュエントリ設定部は、前記電力制御命令に基づいて変更される前記複数のプロセッサの実行状態と、前記実行状態に応じて予め設定される値であり、前記通常動作モードに対応する値よりも前記スリープモードに対応する値の方が大きい実行状態値とを記憶する実行状態記憶部と、前記実行状態値と、前記参照時刻カウント値とを含む参照時刻データを前記複数のキャッシュエントリ毎に作成する参照時刻データ作成部とを含み、前記置換対象選択部は、前記参照時刻データ作成部によって作成された前記複数のキャッシュエントリ毎の前記参照時刻データを比較し、前記参照時刻データに含まれる前記実行状態値が最も大きい前記参照時刻データに対応するキャッシュエントリを、置換対象となるキャッシュエントリとして選択することが好ましい。
この構成によれば、キャッシュエントリは、当該キャッシュエントリを使用するプロセッサを識別するためのプロセッサ識別子と、当該キャッシュエントリが参照された時刻に応じてカウントされ、参照された時刻が古くなるほど値が大きくなる参照時刻カウント値と、データとを含む。実行状態記憶部は、電力制御命令に基づいて変更される複数のプロセッサの実行状態と、実行状態に応じて予め設定される値であり、通常動作モードに対応する値よりもスリープモードに対応する値の方が大きい実行状態値とを記憶している。そして、実行状態値と、参照時刻カウント値とを含む参照時刻データが複数のキャッシュエントリ毎に作成され、作成された複数のキャッシュエントリ毎の参照時刻データが比較され、参照時刻データに含まれる実行状態値が最も大きい参照時刻データに対応するキャッシュエントリが、置換対象となるキャッシュエントリとして選択される。
したがって、各キャッシュエントリに対応する実行状態値を比較することにより、スリープモードのプロセッサが使用しているキャッシュエントリが特定されるので、容易に置換対象となるキャッシュエントリを選択することができる。
また、上記の共有キャッシュ制御装置において、前記置換対象選択部は、前記参照時刻データ作成部によって作成された前記複数のキャッシュエントリ毎の前記参照時刻データを比較し、前記参照時刻データに含まれる前記実行状態値が全て同じである場合、前記参照時刻データに含まれる前記参照時刻カウント値が最も大きい前記参照時刻データに対応するキャッシュエントリを、置換対象となるキャッシュエントリとして選択することが好ましい。
この構成によれば、複数のキャッシュエントリ毎の参照時刻データが比較され、参照時刻データに含まれる実行状態値が全て同じである場合、参照時刻データに含まれる参照時刻カウント値が最も大きい参照時刻データに対応するキャッシュエントリが、置換対象となるキャッシュエントリとして選択される。
したがって、複数のキャッシュエントリを利用している各プロセッサの実行状態が同じ場合であっても、キャッシュエントリが参照された時刻に基づいて、置換対象となるキャッシュエントリが選択されるので、置換対象となるキャッシュエントリをより確実に選択することができる。
また、上記の共有キャッシュ制御装置において、前記キャッシュエントリは、当該キャッシュエントリを使用するオペレーティングシステムを識別するためのオペレーティングシステム識別子と、当該キャッシュエントリが参照された時刻に応じてカウントされ、参照された時刻が古くなるほど値が大きくなる参照時刻カウント値と、データとを含み、前記キャッシュエントリ設定部は、前記オペレーティングシステムの実行状態と、前記実行状態に応じて前記参照時刻カウント値に加算する値を表す未使用時刻加算値とを記憶する実行状態記憶部と、前記キャッシュエントリを使用している前記オペレーティングシステムの実行状態に応じた前記未使用時刻加算値を、前記キャッシュエントリに含まれる前記参照時刻カウント値に加算し、前記参照時刻カウント値を含む参照時刻データを前記複数のキャッシュエントリ毎に作成する参照時刻データ作成部とを含み、前記置換対象選択部は、前記参照時刻データ作成部によって作成された複数の参照時刻データに含まれる複数の参照時刻カウント値のうち、値が最も大きい前記参照時刻カウント値に対応する前記キャッシュエントリを、置換対象となるキャッシュエントリとして選択することが好ましい。
この構成によれば、キャッシュエントリは、当該キャッシュエントリを使用するオペレーティングシステムを識別するためのオペレーティングシステム識別子と、当該キャッシュエントリが参照された時刻に応じてカウントされ、参照された時刻が古くなるほど値が大きくなる参照時刻カウント値と、データとを含む。また、実行状態記憶部は、オペレーティングシステムの実行状態と、実行状態に応じて参照時刻カウント値に加算する値を表す未使用時刻加算値とを記憶している。そして、キャッシュエントリを使用しているオペレーティングシステムの実行状態に応じた未使用時刻加算値が、キャッシュエントリに含まれる参照時刻カウント値に加算され、参照時刻カウント値を含む参照時刻データが複数のキャッシュエントリ毎に作成される。その後、作成された複数の参照時刻データに含まれる複数の参照時刻カウント値のうち、値が最も大きい参照時刻カウント値に対応するキャッシュエントリが、置換対象となるキャッシュエントリとして選択される。
したがって、キャッシュエントリを使用しているオペレーティングシステムの実行状態と、当該キャッシュエントリが参照された時刻とに応じて、置換対象となるキャッシュエントリが選択されるので、最も使用される可能性が少ないキャッシュエントリを選択することができる。
また、上記の共有キャッシュ制御装置において、前記キャッシュエントリは、当該キャッシュエントリを使用するプロセッサを識別するためのプロセッサ識別子と、当該キャッシュエントリが参照された時刻に応じてカウントされ、参照された時刻が古くなるほど値が大きくなる参照時刻カウント値と、データとを含み、前記キャッシュエントリ設定部は、前記プロセッサの実行状態と、前記実行状態に応じて前記参照時刻カウント値に加算する値を表す未使用時刻加算値とを記憶する実行状態記憶部と、前記キャッシュエントリを使用している前記プロセッサの実行状態に応じた前記未使用時刻加算値を、前記キャッシュエントリに含まれる前記参照時刻カウント値に加算し、前記参照時刻カウント値を含む参照時刻データを前記複数のキャッシュエントリ毎に作成する参照時刻データ作成部とを含み、前記置換対象選択部は、前記参照時刻データ作成部によって作成された複数の参照時刻データに含まれる複数の参照時刻カウント値のうち、値が最も大きい前記参照時刻カウント値に対応する前記キャッシュエントリを、置換対象となるキャッシュエントリとして選択することが好ましい。
この構成によれば、キャッシュエントリは、当該キャッシュエントリを使用するプロセッサを識別するためのプロセッサ識別子と、当該キャッシュエントリが参照された時刻に応じてカウントされ、参照された時刻が古くなるほど値が大きくなる参照時刻カウント値と、データとを含む。また、実行状態記憶部は、プロセッサの実行状態と、実行状態に応じて参照時刻カウント値に加算する値を表す未使用時刻加算値とを記憶している。そして、キャッシュエントリを使用しているプロセッサの実行状態に応じた未使用時刻加算値が、キャッシュエントリに含まれる参照時刻カウント値に加算され、参照時刻カウント値を含む参照時刻データが複数のキャッシュエントリ毎に作成される。その後、作成された複数の参照時刻データに含まれる複数の参照時刻カウント値のうち、値が最も大きい参照時刻カウント値に対応するキャッシュエントリが、置換対象となるキャッシュエントリとして選択される。
したがって、キャッシュエントリを使用しているプロセッサの実行状態と、当該キャッシュエントリが参照された時刻とに応じて、置換対象となるキャッシュエントリが選択されるので、最も使用される可能性が少ないキャッシュエントリを選択することができる。
また、上記の共有キャッシュ制御装置において、前記電力制御命令は、前記プロセッサに供給する電力を低減する電源制御命令及び前記プロセッサに供給するクロックを低減するクロック制御命令のうちの少なくとも一方を含み、前記実行状態は、低速クロックで動作する低消費電力モードをさらに含み、前記スリープモードに対応付けられる前記未使用時刻加算値は、前記低消費電力モードに対応付けられる前記未使用時刻加算値に比べて大きいことが好ましい。
この構成によれば、電力制御命令は、プロセッサに供給する電力を低減する電源制御命令及びプロセッサに供給するクロックを低減するクロック制御命令のうちの少なくとも一方を含み、実行状態は、低速クロックで動作する低消費電力モードをさらに含む。スリープモードに対応付けられる未使用時刻加算値は、低消費電力モードに対応付けられる未使用時刻加算値に比べて大きいので、スリープモードのオペレーティングシステム又はプロセッサが使用するキャッシュエントリを、低消費電力モードのオペレーティングシステム又はプロセッサが使用するキャッシュエントリよりも優先的に置換対象として選択することができる。
また、上記の共有キャッシュ制御装置において、前記低消費電力モードに対応付けられる前記未使用時刻加算値は、前記通常動作モードに対応付けられる前記未使用時刻加算値に比べて大きく、かつ前記スリープモードに対応付けられる前記未使用時刻加算値に比べて小さいことが好ましい。
この構成によれば、低消費電力モードに対応付けられる未使用時刻加算値は、通常動作モードに対応付けられる未使用時刻加算値に比べて大きく、かつスリープモードに対応付けられる未使用時刻加算値に比べて小さいので、低消費電力モードのオペレーティングシステム又はプロセッサが使用するキャッシュエントリを、通常動作モードのオペレーティングシステム又はプロセッサが使用するキャッシュエントリよりも優先的に置換対象として選択することができる。
また、上記の共有キャッシュ制御装置において、前記電力制御命令は、前記オペレーティングシステムの動作停止を指示するスリープ命令を少なくとも含み、前記実行状態は、前記オペレーティングシステムを高速クロックで動作する通常動作モードと、前記オペレーティングシステムの動作を停止するスリープモードとを少なくとも含み、前記キャッシュ記憶装置は、前記複数のキャッシュエントリをそれぞれ有する複数のウェイを含み、前記キャッシュエントリ設定部は、前記電力制御命令に基づいて変更される前記複数のオペレーティングシステムの実行状態と、前記複数のウェイのうちの前記オペレーティングシステムが利用するウェイを識別するためのウェイ識別子とを記憶する実行状態記憶部と、前記実行状態記憶部を参照し、前記スリープモードの前記オペレーティングシステムが利用しているウェイを置換対象となるウェイに設定するとともに、前記通常動作モードの前記オペレーティングシステムが利用しているウェイを置換対象とならないウェイに設定するロックダウン制御部とを含み、前記置換対象選択部は、前記ロックダウン制御部によって置換対象となるウェイに設定されたウェイの中から、最も過去に使用された前記キャッシュエントリを、置換対象となるキャッシュエントリとして選択することが好ましい。
この構成によれば、電力制御命令は、オペレーティングシステムの動作停止を指示するスリープ命令を少なくとも含み、実行状態は、オペレーティングシステムを高速クロックで動作する通常動作モードと、オペレーティングシステムの動作を停止するスリープモードとを少なくとも含み、キャッシュ記憶装置は、複数のキャッシュエントリをそれぞれ有する複数のウェイを含む。また、実行状態記憶部は、電力制御命令に基づいて変更される複数のオペレーティングシステムの実行状態と、複数のウェイのうちのオペレーティングシステムが利用するウェイを識別するためのウェイ識別子とを記憶している。そして、実行状態記憶部が参照され、スリープモードのオペレーティングシステムが利用しているウェイが、置換対象となるウェイに設定されるとともに、通常動作モードのオペレーティングシステムが利用しているウェイが、置換対象とならないウェイに設定される。その後、置換対象となるウェイに設定されたウェイの中から、最も過去に使用されたキャッシュエントリが、置換対象となるキャッシュエントリとして選択される。
したがって、スリープモードのオペレーティングシステムが利用しているウェイが、置換対象となるウェイに設定されるとともに、通常動作モードのオペレーティングシステムが利用しているウェイが、置換対象とならないウェイに設定されるので、通常動作モードのオペレーティングシステムは、スリープモードのオペレーティングシステムが使用しているキャッシュエントリを使用することができ、キャッシュエントリにオペレーティングシステム識別子を搭載することなく、オペレーティングシステムの実行状態に応じてキャッシュ記憶装置を有効活用できる。