(57)【要約】  【課題】  従来のキャッシュメモリリプレース方式では、キャッシュメモリにあるデータを完全にリプレースから保護できない。  【解決手段】  タグメモリの各エントリにリプレース保護状態であることを示すリプレース保護ビットＬ（リプレース保護ビット）を備え、リプレースから保護したいデータのアドレス領域を指定する。キャッシュミスによりアドレス領域内のデータをキャッシュメモリに書き込むときに、書き込むエントリのリプレース保護ビットＬを有効な値に設定する。以降のアドレス領域外のアクセスによるキャッシュミスでリプレース対象ウェイを選択するときには、リプレース保護ビットＬが有効なエントリのウェイは選択されず、キャッシュメモリ上のデータをリプレースから保護される。【選択図】  図１
2005301387.tif 000002
【特許請求の範囲】
【請求項１】
有効ビットとリプレース保護ビットとタグアドレスを保持するエントリを複数備えるタグメモリと、
前記タグメモリのエントリに対応したデータを保持するデータメモリと、
前記タグメモリから出力される前記タグアドレスとアクセス要求アドレスとの比較および前記有効ビットの値に基づいてキャッシュヒットを検出するキャッシュヒット検出手段と、
リプレース保護対象のアドレス領域と前記アクセス要求アドレスとを比較して、一致するときにロック領域ヒット信号を出力するロック領域判定手段と、
前記タグメモリが保持する前記有効ビットの値と前記リプレース保護ビットの値を入力とし、リプレース対象ウェイを選択するリプレース制御手段とを備え、
前記タグメモリは、前記ロック領域ヒット信号に応じて該当する前記エントリの前記リプレース保護ビットを有効にし、
前記リプレース制御手段は、前記リプレース保護ビットが有効でないエントリを優先的にリプレース対象として選択することを特徴とするキャッシュメモリ制御装置。
【請求項２】
前記ロック領域判定手段は、
前記リプレース保護対象のアドレス領域を指定するアドレス領域指定手段と、
前記アドレス領域指定手段が保持する値と前記アクセス要求アドレスを比較する比較手段とを備えている請求項１に記載のキャッシュメモリ制御装置。
【請求項３】
前記タグメモリがさらにリプレース保護をソフトウェアにより制御可能なリプレース保護許可ビットを備え、前記リプレース制御手段は、前記リプレース保護許可ビットに基づいて有効となっているリプレース保護の無効化を行うことを特徴とする請求項１または請求項２に記載のキャッシュメモリ制御装置。
【請求項４】
有効ビットとリプレース保護ビットとタグアドレスを保持するエントリを複数備えるタグメモリと、
前記タグメモリのエントリに対応したデータを保持するデータメモリと、
前記タグメモリから出力される前記タグアドレスとアクセス要求アドレスとの比較および前記有効ビットの値に基づいてキャッシュヒットを検出するキャッシュヒット検出手段と、
リプレース保護対象のアドレス領域と前記アクセス要求アドレスとを比較して、一致するときにロック領域ヒット信号を出力するロック領域判定手段と、
前記ロック領域判定手段が出力する前記ロック領域ヒット信号によりリプレース保護対象のアドレス領域へのアクセス頻度を評価し、前記アクセス頻度の低下を検出したときにアクセス頻度低下信号を出力するアクセス頻度評価手段と、
前記タグメモリが保持する前記有効ビットの値と前記リプレース保護ビットの値と前記アクセス頻度評価手段が出力する前記アクセス頻度低下信号を入力とし、リプレース対象ウェイを選択するリプレース制御手段とを備え、
前記タグメモリは、前記ロック領域ヒット信号に応じて該当する前記エントリの前記リプレース保護ビットを有効にし、
前記リプレース制御手段は、前記アクセス頻度低下信号が有効な場合はリプレース保護を無効化してリプレース対象エントリを選択し、前記アクセス頻度低下信号が無効な場合は前記リプレース保護ビットが有効でないエントリを優先的にリプレース対象として選択することを特徴とするキャッシュメモリ制御装置。
【請求項５】
前記ロック領域判定手段は、
前記リプレース保護対象のアドレス領域を指定するアドレス領域指定手段と、
前記アドレス領域指定手段が保持する値と前記アクセス要求アドレスを比較する比較手段とを備えている請求項４に記載のキャッシュメモリ制御装置。
【請求項６】
さらに、前記有効ビットと前記リプレース保護ビットの両方が有効な値を持つすべてのエントリの前記有効ビットを無効化するエントリ無効手段を備え、
前記リプレース制御手段は、前記アクセス頻度低下信号が有効になったときに前記タグメモリの前記エントリ無効手段を動作させるように構成されている請求項４または請求項５に記載のキャッシュメモリ制御装置。
【請求項７】
有効ビットとリプレース保護ビットとタグアドレスを保持するエントリを複数備えるタグメモリと、
前記タグメモリのエントリに対応したデータを保持するデータメモリと、
前記タグメモリから出力される前記タグアドレスとアクセス要求アドレスとの比較および前記有効ビットの値に基づいてキャッシュヒットを検出するキャッシュヒット検出手段と、
リプレース保護対象のアドレス領域と前記アクセス要求アドレスとを比較して、一致するときにロック領域ヒット信号を出力する複数のロック領域判定手段と、
前記ロック領域判定手段が出力する前記ロック領域ヒット信号によりリプレース保護対象のアドレス領域へのアクセス頻度を評価し、前記アクセス頻度の低下を検出したときにアクセス頻度低下信号を出力するアクセス頻度評価手段と、
前記タグメモリが保持する前記有効ビットの値と前記リプレース保護ビットの値と前記アクセス頻度評価手段が出力する前記アクセス頻度低下信号を入力とし、リプレース対象ウェイを選択するリプレース制御手段とを備え、
複数の前記ロック領域判定手段で複数のアドレス領域にリプレース保護を設定し、
前記タグメモリは、前記ロック領域ヒット信号に応じて該当する前記エントリの前記リプレース保護ビットを有効にし、
前記リプレース制御手段は、前記アクセス頻度低下信号が有効な場合はリプレース保護を無効化してリプレース対象エントリを選択し、前記アクセス頻度低下信号が無効な場合は前記リプレース保護ビットが有効でないエントリを優先的にリプレース対象として選択することを特徴とするキャッシュメモリ制御装置。
【請求項８】
前記ロック領域判定手段は、
前記リプレース保護対象のアドレス領域を指定するアドレス領域指定手段と、
前記アドレス領域指定手段が保持する値と前記アクセス要求アドレスを比較する比較手段とを備えている請求項７に記載のキャッシュメモリ制御装置。
【請求項９】
有効ビットと複数のリプレース保護ビットとタグアドレスを保持するエントリを複数備えるタグメモリと、
前記タグメモリのエントリに対応したデータを保持するデータメモリと、
前記タグメモリから出力される前記タグアドレスとアクセス要求アドレスとの比較および前記有効ビットの値に基づいてキャッシュヒットを検出するキャッシュヒット検出手段と、
リプレース保護対象のアドレス領域と前記アクセス要求アドレスとを比較して、一致するときにロック領域ヒット信号を出力する複数のロック領域判定手段と、
前記ロック領域判定手段が出力する前記ロック領域ヒット信号によりリプレース保護対象のアドレス領域へのアクセス頻度を評価し、前記アクセス頻度の低下を検出したときにアクセス頻度低下信号を出力する複数のアクセス頻度評価手段と、
前記タグメモリが保持する前記有効ビットの値と複数の前記リプレース保護ビットの値と複数の前記アクセス頻度評価手段が出力する前記アクセス頻度低下信号を入力とし、リプレース対象ウェイを選択するリプレース制御手段とを備え、
複数の前記ロック領域判定手段で複数のアドレス領域にリプレース保護を設定し、
前記タグメモリは、複数の前記ロック領域ヒット信号に応じて該当する前記エントリの前記ロック領域ヒット信号に対応する前記リプレース保護ビットを有効にし、
前記リプレース制御手段は、前記アクセス頻度低下信号が有効な場合はリプレース保護を無効化してリプレース対象エントリを選択し、前記アクセス頻度低下信号が無効な場合は前記リプレース保護ビットが有効でないエントリを優先的にリプレース対象として選択することを特徴とするキャッシュメモリ制御装置。
【請求項１０】
前記ロック領域判定手段は、
前記リプレース保護対象のアドレス領域を指定するアドレス領域指定手段と、
前記アドレス領域指定手段が保持する値と前記アクセス要求アドレスを比較する比較手段とを備えている請求項９に記載のキャッシュメモリ制御装置。
【請求項１１】
有効ビットとタグアドレスを保持するエントリを複数備えるタグメモリと、
前記タグメモリのエントリに対応したデータを保持するデータメモリと、
前記タグメモリから出力される前記タグアドレスとアクセス要求アドレスとの比較および前記有効ビットの値に基づいてキャッシュヒットを検出するキャッシュヒット検出手段と、
リプレース保護対象のアドレス領域と前記タグメモリから出力される前記タグアドレスとを比較して、一致するときにロック領域ヒット信号を出力する複数のロック領域判定手段と、
前記タグメモリが保持する前記有効ビットの値と前記ロック領域ヒット信号を入力とし、リプレース対象ウェイを選択するリプレース制御手段とを備え、
それらによってアドレス空間を指定したリプレース保護を行うことを特徴とするキャッシュメモリ制御装置。
【請求項１２】
前記ロック領域判定手段は、
前記リプレース保護対象のアドレス領域を指定するアドレス領域指定手段と、
前記アドレス領域指定手段が保持する値と前記アクセス要求アドレスを比較する比較手段とを備えている請求項１１に記載のキャッシュメモリ制御装置。
【請求項１３】
有効ビットとリプレース保護ビットとタグアドレスを保持するエントリを複数備えるタグメモリと、
前記タグメモリのエントリに対応したデータを保持するデータメモリと、
前記タグメモリから出力される前記タグアドレスとアクセス要求アドレスとの比較および前記有効ビットの値に基づいてキャッシュヒットを検出するキャッシュヒット検出手段と、
リプレース保護対象のタスクＩＤとＣＰＵが出力する実行中のタスクＩＤとを比較して、一致するときにロック領域ヒット信号を出力するロック領域判定手段と、
前記タグメモリが保持する前記有効ビットの値と前記リプレース保護ビットの値を入力とし、リプレース対象ウェイを選択するリプレース制御手段とを備え、
それらによって、タスクＩＤを指定したリプレース保護を行うことを特徴とするキャッシュメモリ制御装置。
【請求項１４】
前記ロック領域判定手段は、
前記リプレース保護対象のタスクＩＤを指定するタスクＩＤ指定手段と、
前記タスクＩＤ指定手段が保持するタスクＩＤと前記実行中のタスクＩＤを比較する比較手段とを備えている請求項１３に記載のキャッシュメモリ制御装置。
【請求項１５】
さらに、前記ロック領域判定手段が出力する前記ロック領域ヒット信号によりリプレース保護対象のタスクの実行頻度を評価し、前記実行頻度の低下を検出したときに実行頻度低下信号を出力するタスク実行頻度評価手段を備え、
前記リプレース制御手段は、前記タスク実行頻度評価手段が出力する実行頻度低下信号を入力として加え、前記実行頻度低下信号が有効な場合はリプレース保護を無効化してリプレース対象エントリを選択するように構成されている請求項１３または請求項１４に記載のキャッシュメモリ制御装置。
【請求項１６】
有効ビットとリプレース保護ビットとタグアドレスを保持するエントリを複数備えるタグメモリと、
前記タグメモリから出力される前記タグアドレスとアクセス要求アドレスとの比較および前記有効ビットの値に基づいてキャッシュヒットを検出するキャッシュヒット検出手段と、
リプレース保護対象の割り込みレベルとＣＰＵが出力する実行中の割り込みレベルとを比較して、一致するときにロック領域ヒット信号を出力するロック領域判定手段と、
前記タグメモリが保持する前記有効ビットの値と前記リプレース保護ビットの値を入力とし、リプレース対象ウェイを選択するリプレース制御手段とを備え、
それらによって、割り込みレベルを指定したリプレース保護を行うことを特徴とするキャッシュメモリ制御装置。
【請求項１７】
前記ロック領域判定手段は、
前記リプレース保護対象の割り込みレベルを指定する割り込みレベル指定手段と、
前記割り込みレベル指定手段が保持する割り込みレベルと前記実行中の割り込みレベルを比較する比較手段とを備えている請求項１６に記載のキャッシュメモリ制御装置。
【請求項１８】
ＣＰＵからのアクセス要求がリプレース保護対象のアドレス領域へのアクセスであるかを判定する領域判定ステップと、
キャッシュミスによるリプレースを行うエントリとして有効ビットが設定されていないエントリを選択する選択ステップ１と、
前記選択ステップ１でリプレースを行うエントリを選択できなかった場合に、リプレース保護ビットが設定されていないエントリを選択する選択ステップ２と、
前記選択ステップ１、選択ステップ２のいずれかによって選択されたエントリへデータを書き込む書き込みステップと、
前記領域判定ステップの結果を選択されたエントリのリプレース保護ビットに書き込む保護設定ステップとを含むことを特徴とするキャッシュメモリ制御方法。
【請求項１９】
ＣＰＵからのアクセス要求がリプレース保護対象のアドレス領域へのアクセスであるかを判定する領域判定ステップと、
前記リプレース保護対象のアドレス領域へのアクセス頻度を評価し、前記アクセス頻度が低下するとアクセス頻度低下信号を出力するアクセス頻度評価ステップと、
キャッシュミスによるリプレースを行うエントリとして有効ビットが設定されていないエントリを選択する選択ステップ１と、
前記選択ステップ１でリプレースを行うエントリを選択できず、かつ前記アクセス頻度低下信号によりアクセス頻度が低下していないことが示された場合に、リプレースを行うエントリとしてリプレース保護ビットが設定されていないエントリを選択する選択ステップ２と、
前記選択ステップ１でリプレースを行うエントリを選択できず、かつ前記アクセス頻度低下信号によりアクセス頻度の低下が示された場合に、前記リプレース保護ビットに関係なくリプレースすべきエントリを選択する選択ステップ３と、
前記選択ステップ１、選択ステップ２、選択ステップ３のいずれかによって選択されたエントリへデータを書き込む書き込みステップと、
前記領域判定ステップの結果を選択されたエントリのリプレース保護ビットに書き込む保護設定ステップとを含むことを特徴とするキャッシュメモリ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、キャッシュメモリ制御装置およびその制御方法にかかわり、特に、高速処理を行う必要があるデータのキャッシュのヒット率を上げるために、キャッシュのリプレースを制御するようにした技術に関する。
【背景技術】
【０００２】
キャッシュメモリは、メインメモリへのアクセスを高速化し、ＣＰＵ（中央演算処理装置）等の動作性能を決めるアクセス速度が高速な一時記憶装置として一般的に使用されている。
【０００３】
キャッシュメモリの記憶容量は、メインメモリの記憶容量に比べてかなり小さいのが普通である。キャッシュメモリの任意のエントリに保持されているデータは、キャッシュメモリの利用状況によって破棄され、そのエントリに新しいデータのリプレース（置き換え）が必要となる。複数ウェイで構成されるキャッシュメモリでは、リプレースすべきエントリのウェイを決定する方式として、ＬＲＵ（Least Recently Used）方式、ＦＩＦＯ（First-In First-Out）方式、ランダム方式などがある。
【０００４】
２ウェイ構成のキャッシュメモリにおいて、図４のようなメインプログラムの“Loop”ラベルと“Loop”ラベルへの条件分岐命令により３つのサブルーチンが繰り返しコールされる場合を説明する。ここでは、３つのサブルーチン１〜３は、キャッシュメモリ上では同じエントリを使用するアドレスにマッピングされているものとする。サブルーチン１〜３が逐次コールされ実行されると、キャッシュのウェイが２つしかないので、サブルーチン１とサブルーチン２は２つのウェイのそれぞれに格納される。そして、サブルーチン３を実行する場合、サブルーチン１かサブルーチン２のいずれかを破棄してサブルーチン３を格納する必要がある。ＬＲＵ方式やＦＩＦＯ方式では、サブルーチン１がリプレースされる。次にサブルーチン１がコールされると、サブルーチン１はキャッシュメモリには存在しないのでキャッシュミスとなり、サブルーチン２がリプレースされる。
【０００５】
このように従来のキャッシュメモリではキャッシュミスが多発し、性能低下を生じるという問題がある。
【０００６】
さらに、特定のサブルーチンを高速実行したい場合でも、キャッシュヒットはアクセスのアドレスの順番などに依存するため予測ができず、高速実行の保証が困難であるという問題がある。
【０００７】
特許文献１に記載された発明では、キャッシュミスによるリプレース動作を行うときに、リプレース優先順位レジスタに設定されているリプレース優先順位をタグメモリのエントリに格納する。そして、以降のキャッシュミスによるリプレース動作時に、リプレースを行うエントリを選択するが、このときリプレースから優先的に保護する機能を任意のアドレス領域に対して実現する。これにより、前述のようなキャッシュメモリの利用効率低下の問題を改善している。
【特許文献１】特開平１０-１９８６０４号公報（第３−６頁、第１，４図）
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、特許文献１に記載された発明では、あくまでもリプレース優先度が設定されるだけで、特定の命令やデータをリプレースしないようにするものではない。そのため、ある期間、キャッシュメモリに確実に保持しておきたい命令やデータをリプレース動作から確実に保護することができないという問題点がある。
【０００９】
さらに、キャッシュメモリに特定の命令やデータを保持して高速実行を行う必要性が動的に変化する場合に、効率良く対応できないという問題がある。
【課題を解決するための手段】
【００１０】
本発明は、上記の課題を解決するために次のような手段を講じる。
【００１１】
本発明における第１のキャッシュメモリ制御装置は、複数ウェイで構成されるキャッシュメモリにおいて、
有効ビットとリプレース保護ビットとタグアドレスを保持するエントリを複数備えるタグメモリと、
前記タグメモリのエントリに対応したデータを保持するデータメモリと、
前記タグメモリから出力される前記タグアドレスとアクセス要求アドレスとの比較および前記有効ビットの値に基づいてキャッシュヒットを検出するキャッシュヒット検出手段と、
リプレース保護対象のアドレス領域と前記アクセス要求アドレスとを比較して、一致するときにロック領域ヒット信号を出力するロック領域判定手段と、
前記タグメモリが保持する前記有効ビットの値と前記リプレース保護ビットの値を入力とし、リプレース対象ウェイを選択するリプレース制御手段とを備え、
前記タグメモリは、前記ロック領域ヒット信号に応じて該当する前記エントリの前記リプレース保護ビットを有効にし、
前記リプレース制御手段は、前記リプレース保護ビットが有効でないエントリを優先的にリプレース対象として選択することを特徴とする。
【００１２】
この構成によれば、リプレース保護を必要とするアドレス領域をあらかじめ指定しておく。そして、指定したアドレス領域のデータをキャッシュメモリへ格納するときにリプレース保護ビットを有効にする。これにより、このアドレス領域のデータを以降のリプレース動作から確実に保護することができ、指定した領域を高速にアクセスすることができる。
【００１３】
なお、上記構成において、前記ロック領域判定手段としては、前記リプレース保護対象のアドレス領域を指定するアドレス領域指定手段と、前記アドレス領域指定手段が保持する値と前記アクセス要求アドレスを比較する比較手段とを備えた構成が好ましい。
【００１４】
また、上記構成において、前記タグメモリがさらにリプレース保護をソフトウェアにより制御可能なリプレース保護許可ビットを備え、前記リプレース制御手段は、前記リプレース保護許可ビットに基づいて有効となっているリプレース保護の無効化を行うように構成することも好ましい。
【００１５】
ところで、上記第１のキャッシュメモリ制御装置では、リプレースから保護したい領域へのアクセス頻度がプログラムの実行時の状態で変わる場合の問題がある。すなわち、リプレース保護対象のアドレス領域に該当するデータをキャッシュメモリに格納しているときに、リプレース保護対象のアドレス領域へのアクセス頻度がプログラムの実行時の状態で変われば、リプレース保護の有効／無効の切り替えをプログラムで制御するのが困難になったり、状態を判定するためにプログラムが増大する。この課題を含めて解決するのが、次に述べる第２のキャッシュメモリ制御装置である。
【００１６】
本発明における第２のキャッシュメモリ制御装置は、複数ウェイで構成されるキャッシュメモリにおいて、
有効ビットとリプレース保護ビットとタグアドレスを保持するエントリを複数備えるタグメモリと、
前記タグメモリのエントリに対応したデータを保持するデータメモリと、
前記タグメモリから出力される前記タグアドレスとアクセス要求アドレスとの比較および前記有効ビットの値に基づいてキャッシュヒットを検出するキャッシュヒット検出手段と、
リプレース保護対象のアドレス領域と前記アクセス要求アドレスとを比較して、一致するときにロック領域ヒット信号を出力するロック領域判定手段と、
前記ロック領域判定手段が出力する前記ロック領域ヒット信号によりリプレース保護対象のアドレス領域へのアクセス頻度を評価し、前記アクセス頻度の低下を検出したときにアクセス頻度低下信号を出力するアクセス頻度評価手段と、
前記タグメモリが保持する前記有効ビットの値と前記リプレース保護ビットの値と前記アクセス頻度評価手段が出力する前記アクセス頻度低下信号を入力とし、リプレース対象ウェイを選択するリプレース制御手段とを備え、
前記タグメモリは、前記ロック領域ヒット信号に応じて該当する前記エントリの前記リプレース保護ビットを有効にし、
前記リプレース制御手段は、前記アクセス頻度低下信号が有効な場合はリプレース保護を無効化してリプレース対象エントリを選択し、前記アクセス頻度低下信号が無効な場合は前記リプレース保護ビットが有効でないエントリを優先的にリプレース対象として選択することを特徴とするものである。
【００１７】
この構成によれば、リプレース保護対象のアドレス領域へのアクセス頻度がプログラムの実行時の状態で変わり、保護対象から外れる状況になった場合には、リプレース保護の無効化を自動的にかつプログラムの増大を招かずに実現でき、キャッシュメモリのさらなる効率的な利用が可能となる。
【００１８】
上記構成において、前記ロック領域判定手段としては、前記リプレース保護対象のアドレス領域を指定するアドレス領域指定手段と、前記アドレス領域指定手段が保持する値と前記アクセス要求アドレスを比較する比較手段とを備えた構成が好ましい。
【００１９】
また、上記構成において、さらに、前記有効ビットと前記リプレース保護ビットの両方が有効な値を持つすべてのエントリの前記有効ビットを無効化するエントリ無効手段を備え、前記リプレース制御手段は、前記アクセス頻度低下信号が有効になったときに前記タグメモリの前記エントリ無効手段を動作させるように構成されていることも好ましい。
【００２０】
ところで、上記第２のキャッシュメモリ制御装置では、ロック領域判定手段が１つであれば、リプレース保護領域が１つの連続したものではなく、間にリプレース保護が不要の領域を挟んで分断されたものである場合に、リプレース保護に際して、リプレース保護が不要の領域も含んで保護してしまい、リプレース保護の負担が増大する。この課題を含めて解決するのが、次に述べる第３のキャッシュメモリ制御装置である。
【００２１】
本発明における第３のキャッシュメモリ制御装置は、複数ウェイで構成されるキャッシュメモリにおいて、
有効ビットとリプレース保護ビットとタグアドレスを保持するエントリを複数備えるタグメモリと、
前記タグメモリのエントリに対応したデータを保持するデータメモリと、
前記タグメモリから出力される前記タグアドレスとアクセス要求アドレスとの比較および前記有効ビットの値に基づいてキャッシュヒットを検出するキャッシュヒット検出手段と、
リプレース保護対象のアドレス領域と前記アクセス要求アドレスとを比較して、一致するときにロック領域ヒット信号を出力する複数のロック領域判定手段と、
前記ロック領域判定手段が出力する前記ロック領域ヒット信号によりリプレース保護対象のアドレス領域へのアクセス頻度を評価し、前記アクセス頻度の低下を検出したときにアクセス頻度低下信号を出力するアクセス頻度評価手段と、
前記タグメモリが保持する前記有効ビットの値と前記リプレース保護ビットの値と前記アクセス頻度評価手段が出力する前記アクセス頻度低下信号を入力とし、リプレース対象ウェイを選択するリプレース制御手段とを備え、
複数の前記ロック領域判定手段で複数のアドレス領域にリプレース保護を設定し、
前記タグメモリは、前記ロック領域ヒット信号に応じて該当する前記エントリの前記リプレース保護ビットを有効にし、
前記リプレース制御手段は、前記アクセス頻度低下信号が有効な場合はリプレース保護を無効化してリプレース対象エントリを選択し、前記アクセス頻度低下信号が無効な場合は前記リプレース保護ビットが有効でないエントリを優先的にリプレース対象として選択することを特徴とするものである。
【００２２】
ここでの技術的特徴は、ロック領域判定手段を複数備え、複数のリプレース保護領域を個別的に設定するということである。
【００２３】
この構成によれば、ロック領域判定手段を複数使用することにより、リプレース保護を行う領域を複数設定することが可能となり、効果的なリプレース保護を実現できる。
【００２４】
ところで、上記第３のキャッシュメモリ制御装置では、複数のアドレス領域をリプレース保護に指定できるが、アクセス頻度評価手段とタグメモリのリプレース保護ビットを複数のロック領域判定手段が共有するため、ロック領域判定手段ごとにリプレース保護の設定／解除ができない。この課題を含めて解決するのが、次に述べる第４のキャッシュメモリ制御装置である。
【００２５】
本発明における第４のキャッシュメモリ制御装置は、複数ウェイで構成されるキャッシュメモリにおいて、
有効ビットと複数のリプレース保護ビットとタグアドレスを保持するエントリを複数備えるタグメモリと、
前記タグメモリのエントリに対応したデータを保持するデータメモリと、
前記タグメモリから出力される前記タグアドレスとアクセス要求アドレスとの比較および前記有効ビットの値に基づいてキャッシュヒットを検出するキャッシュヒット検出手段と、
リプレース保護対象のアドレス領域と前記アクセス要求アドレスとを比較して、一致するときにロック領域ヒット信号を出力する複数のロック領域判定手段と、
前記ロック領域判定手段が出力する前記ロック領域ヒット信号によりリプレース保護対象のアドレス領域へのアクセス頻度を評価し、前記アクセス頻度の低下を検出したときにアクセス頻度低下信号を出力する複数のアクセス頻度評価手段と、
前記タグメモリが保持する前記有効ビットの値と複数の前記リプレース保護ビットの値と複数の前記アクセス頻度評価手段が出力する前記アクセス頻度低下信号を入力とし、リプレース対象ウェイを選択するリプレース制御手段とを備え、
複数の前記ロック領域判定手段で複数のアドレス領域にリプレース保護を設定し、
前記タグメモリは、複数の前記ロック領域ヒット信号に応じて該当する前記エントリの前記ロック領域ヒット信号に対応する前記リプレース保護ビットを有効にし、
前記リプレース制御手段は、前記アクセス頻度低下信号が有効な場合はリプレース保護を無効化してリプレース対象エントリを選択し、前記アクセス頻度低下信号が無効な場合は前記リプレース保護ビットが有効でないエントリを優先的にリプレース対象として選択することを特徴とするものである。
【００２６】
ここでの技術的特徴は、タグメモリが複数のリプレース保護ビットを有することと、複数のロック領域判定手段にそれぞれアクセス頻度評価手段が対応しているということである。
【００２７】
この構成によれば、ロック領域判定手段ごとにアクセス頻度評価手段を持っていて、リプレース保護領域ごとのアクセス頻度の評価を行うことで、リプレース制御手段がリプレース保護領域ごとにリプレース保護の設定／解除を行うことが可能となり、効果的なリプレース保護を実現できる。
【００２８】
ところで、上記第１のキャッシュメモリ制御装置では、タグメモリに対してエントリごとにリプレース保護状態を示すリプレース保護ビットを追加しているが、キャッシュメモリの容量が大きい場合にはタグメモリのエントリ数が増加するので、リプレース保護ビットの追加はタグメモリの物理面積の増加を招く。この課題を含めて解決するのが、次に述べる第５のキャッシュメモリ制御装置である。
【００２９】
本発明における第５のキャッシュメモリ制御装置は、複数ウェイで構成されるキャッシュメモリにおいて、
有効ビットとタグアドレスを保持するエントリを複数備えるタグメモリと、
前記タグメモリのエントリに対応したデータを保持するデータメモリと、
前記タグメモリから出力される前記タグアドレスとアクセス要求アドレスとの比較および前記有効ビットの値に基づいてキャッシュヒットを検出するキャッシュヒット検出手段と、
リプレース保護対象のアドレス領域と前記タグメモリから出力される前記タグアドレスとを比較して、一致するときにロック領域ヒット信号を出力する複数のロック領域判定手段と、
前記タグメモリが保持する前記有効ビットの値と前記ロック領域ヒット信号を入力とし、リプレース対象ウェイを選択するリプレース制御手段とを備え、
それらによってアドレス空間を指定したリプレース保護を行うことを特徴とするものである。
【００３０】
ここでの技術的特徴は、タグメモリにおいてはリプレース保護ビットを有していないということと、ロック領域判定手段ではリプレース保護対象のアドレス領域の比較対象を、タグメモリから直接読み出したタグアドレスとするということである。
【００３１】
この構成によれば、リプレース保護ビットをもったタグメモリを使用しなくてもリプレース保護を実現することが可能となり、リプレース保護ビットの追加によるタグメモリの面積増加を招くことなく、リプレース保護が可能となる。
【００３２】
本発明における第６のキャッシュメモリ制御装置は、複数ウェイで構成されるキャッシュメモリにおいて、
有効ビットとリプレース保護ビットとタグアドレスを保持するエントリを複数備えるタグメモリと、
前記タグメモリのエントリに対応したデータを保持するデータメモリと、
前記タグメモリから出力される前記タグアドレスとアクセス要求アドレスとの比較および前記有効ビットの値に基づいてキャッシュヒットを検出するキャッシュヒット検出手段と、
リプレース保護対象のタスクＩＤとＣＰＵが出力する実行中のタスクＩＤとを比較して、一致するときにロック領域ヒット信号を出力するロック領域判定手段と、
前記タグメモリが保持する前記有効ビットの値と前記リプレース保護ビットの値を入力とし、リプレース対象ウェイを選択するリプレース制御手段とを備え、
それらによって、タスクＩＤを指定したリプレース保護を行うことを特徴とするものである。
【００３３】
ここでの技術的特徴は、リプレース保護の判定の基準を、アドレス領域ではなく、タスクＩＤにしているということである。
【００３４】
この構成によれば、リプレース保護の指定をメモリアドレスではなく、タスクＩＤとすることで、タスク単位でのリプレース保護が可能となる。すなわち、タスクで使用するアドレス領域を調べる必要がなく、容易なリプレース保護設定が可能となる。
【００３５】
本発明の第７のキャッシュメモリ制御装置は、複数ウェイで構成されるキャッシュメモリにおいて、
有効ビットとリプレース保護ビットとタグアドレスを保持するエントリを複数備えるタグメモリと、
前記タグメモリから出力される前記タグアドレスとアクセス要求アドレスとの比較および前記有効ビットの値に基づいてキャッシュヒットを検出するキャッシュヒット検出手段と、
リプレース保護対象の割り込みレベルとＣＰＵが出力する実行中の割り込みレベルとを比較して、一致するときにロック領域ヒット信号を出力するロック領域判定手段と、
前記タグメモリが保持する前記有効ビットの値と前記リプレース保護ビットの値を入力とし、リプレース対象ウェイを選択するリプレース制御手段とを備え、
それらによって、割り込みレベルを指定したリプレース保護を行うように構成することも好ましい。
【００３６】
また、キャッシュメモリ制御方法としては、次のように構成することが好ましい。
【００３７】
すなわち、ＣＰＵからのアクセス要求がリプレース保護対象のアドレス領域へのアクセスであるかを判定する領域判定ステップと、
キャッシュミスによるリプレースを行うエントリとして有効ビットが設定されていないエントリを選択する選択ステップ１と、
前記選択ステップ１でリプレースを行うエントリを選択できなかった場合に、リプレース保護ビットが設定されていないエントリを選択する選択ステップ２と、
前記選択ステップ１、選択ステップ２のいずれかによって選択されたエントリへデータを書き込む書き込みステップと、
前記領域判定ステップの結果を選択されたエントリのリプレース保護ビットに書き込む保護設定ステップとを含むものである。
【００３８】
また、次の方式のキャッシュメモリ制御方法も好ましい。
【００３９】
ＣＰＵからのアクセス要求がリプレース保護対象のアドレス領域へのアクセスであるかを判定する領域判定ステップと、
前記リプレース保護対象のアドレス領域へのアクセス頻度を評価し、前記アクセス頻度が低下するとアクセス頻度低下信号を出力するアクセス頻度評価ステップと、
キャッシュミスによるリプレースを行うエントリとして有効ビットが設定されていないエントリを選択する選択ステップ１と、
前記選択ステップ１でリプレースを行うエントリを選択できず、かつ前記アクセス頻度低下信号によりアクセス頻度が低下していないことが示された場合に、リプレースを行うエントリとしてリプレース保護ビットが設定されていないエントリを選択する選択ステップ２と、
前記選択ステップ１でリプレースを行うエントリを選択できず、かつ前記アクセス頻度低下信号によりアクセス頻度の低下が示された場合に、前記リプレース保護ビットに関係なくリプレースすべきエントリを選択する選択ステップ３と、
前記選択ステップ１、選択ステップ２、選択ステップ３のいずれかによって選択されたエントリへデータを書き込む書き込みステップと、
前記領域判定ステップの結果を選択されたエントリのリプレース保護ビットに書き込む保護設定ステップとを含むものである。
【発明の効果】
【００４０】
第１のキャッシュメモリ制御装置によれば、リプレース動作から保護する領域を設定するもので、ある期間はキャッシュメモリに確実に保持しておきたい命令やデータをリプレース動作から確実に保護することができる。また、特定の命令やデータをキャッシュメモリに保持して高速実行を行う必要がある場合に、その高速実行を確実に実現できる。
【００４１】
第２のキャッシュメモリ制御装置によれば、第１のキャッシュメモリ制御装置よりもキャッシュメモリの利用効率を向上することができる。
【００４２】
第３のキャッシュメモリ制御装置によれば、第２のキャッシュメモリ制御装置よりも緻密なリプレース保護が可能となり、キャッシュメモリの利用効率を向上させることができる。
【００４３】
第４のキャッシュメモリ制御装置によれば、第３のキャッシュメモリ制御装置よりもさらに緻密なリプレース保護が可能となり、キャッシュメモリの利用効率を向上させることができる。
【００４４】
第５のキャッシュメモリ制御装置によれば、第１のキャッシュメモリ制御装置と同様の効果を得ながら、タグメモリの面積を削減することができる。
【００４５】
第６のキャッシュメモリ制御装置によれば、リプレース動作から保護するタスクＩＤを設定し、リプレース動作から確実に保護することで、指定したタスクＩＤの高速な実行ができる。
【００４６】
第７のキャッシュメモリ制御装置によれば、リプレース動作から保護する割り込みレベルを設定し、リプレース動作から確実に保護することで、指定した割り込みレベルの割り込み処理を高速な実行ができる。
【発明を実施するための最良の形態】
【００４７】
以下、本発明にかかわるキャッシュメモリ制御装置の実施の形態を図面に基づいて詳細に説明する。
【００４８】
（第１の実施の形態）
図１は本発明の第１の実施の形態におけるキャッシュメモリ制御装置の構成を示すブロック図、図２は第１の実施の形態のキャッシュメモリアクセス制御の動作を示すフローチャート、図３はロック領域判定回路の動作を示すフローチャート、図４は第１の実施の形態で実行されるプログラムの一部を示すものである。
【００４９】
本実施の形態のキャッシュメモリ制御装置は、ウェイ０のタグメモリ１００とウェイ１のタグメモリ１０１とウェイ０のデータメモリ１０２とウェイ１のデータメモリ１０３とヒット検出器１０４，１０５と出力回路１０６，１０７とロック領域判定回路１１１とリプレース制御回路１１２から構成されている。１０８はＣＰＵ、８００は外部メモリである。
【００５０】
ウェイ０のタグメモリ１００とウェイ１のタグメモリ１０１は、各ウェイのエントリ毎にタグアドレス、エントリの有効性を示す有効ビットＶ、エントリのロック状態を示すリプレース保護ビットＬの保持を行うものである。
【００５１】
ヒット検出器１０４，１０５は、次の比較を行う。比較の一方の要素は、ＣＰＵ１０８からアドレスバスを介して出力されたアクセス要求アドレスの上位部である。比較のもう一方の要素は、アクセス要求アドレスの下位部を用いてウェイ０のタグメモリ１００、ウェイ１のタグメモリ１０１から読み出されたエントリに保持されているタグアドレスである。ヒット検出器１０４，１０５は、アクセス要求アドレスの上位部と読み出されたタグアドレスとの比較を行い、結果が一致し、かつ有効ビットＶが“１”であるときは、ヒット信号Ｓｈを出力回路１０６，１０７へ出力するように構成されている。
【００５２】
出力回路１０６，１０７は、ヒット検出器１０４，１０５より出力されるウェイごとのヒット信号Ｓｈに基づいて、ウェイ０のデータメモリ１０２とウェイ１のデータメモリ１０３が出力するデータの出力制御を行うように構成されている。
【００５３】
ロック領域判定回路１１１は、ロック領域を保持するアドレス領域指定レジスタ１１０と比較器１０９を備えている。比較器１０９は、ＣＰＵ１０８からメモリアクセスのためにアドレスバスに出力されたアクセス要求アドレスと、アドレス領域指定レジスタ１１０に指定されているアドレス領域の比較を行う。そして、ロック領域の範囲内のアクセスであった場合には、ウェイ０のタグメモリ１００とウェイ１のタグメモリ１０１の該当するエントリのリプレース保護ビットＬに“１”をセットするためのロック領域ヒット信号Ｓｌを出力するように構成されている。
【００５４】
リプレース制御回路１１２は、ウェイ０のタグメモリ１００とウェイ１のタグメモリ１０１の各エントリのリプレース保護ビットＬ、有効ビットＶを入力信号とし、リプレース動作を行うウェイの選択の制御を行うように構成されている。
【００５５】
次に、キャッシュメモリ制御装置のリプレース制御動作を図２、図３のフローチャートを用いて説明する。
【００５６】
まず、キャッシュメモリアクセス制御の基本の動作を図２のフローチャートに基づいて説明する。
【００５７】
キャッシュメモリアクセス制御動作は、ＣＰＵ１０８からのアクセス要求により、ステップＡ１以降の処理を開始する。
【００５８】
ステップＡ１において、ＣＰＵ１０８がアクセスをするデータがキャッシュヒットかキャッシュミスかの判定を行い、キャッシュヒットの場合はステップＡ２へ分岐し、キャッシュミスの場合はステップＡ３へ分岐する。
【００５９】
キャッシュヒットの場合のステップＡ２においては、キャッシュメモリへのアクセスを行い、ＣＰＵ１０８からのアクセスは終了する。
【００６０】
一方、キャッシュミスの場合のステップＡ３においては、アクセスの対象となるエントリに有効ビットＶが“０”になっているエントリがあるか否かの判定を行い、ある場合はステップＡ６へ分岐し、ない場合はステップＡ４へ分岐する。
【００６１】
有効ビットＶが“０”になっているエントリがある場合のステップＡ６においては、有効ビットＶが“０”であるエントリのうち１つを選択する。そして、ステップＡ１０に進む。
【００６２】
一方、有効ビットＶが“０”になっているエントリがない場合のステップＡ４においては、アクセスの対象となるエントリにリプレース保護ビットＬが“０”になっているエントリがあるか否かの判定を行い、ある場合はステップＡ７へ分岐し、ない場合はステップＡ５へ分岐する。
【００６３】
アクセスの対象となるエントリにリプレース保護ビットＬが“０”になっているエントリがある場合のステップＡ７においては、リプレース保護ビットＬが“０”であるエントリのうち１つを選択する。そして、ステップＡ１０に進む。
【００６４】
一方、アクセスの対象となるエントリにリプレース保護ビットＬが“０”になっているエントリがない場合のステップＡ５においては、ロック領域ヒット信号Ｓｌが“１”か否かの判定を行い、“１”である場合はステップＡ８へ分岐し、“０”である場合はステップＡ９へ分岐する。
【００６５】
ロック領域ヒット信号Ｓｌが“１”である場合のステップＡ８においては、アクセスの対象となるエントリのうち１つを選択する。このときエントリを選択する方式としては、ＬＲＵ方式やＦＩＦＯ方式やランダムに選択する方式などを用いることができる。次いで、ステップＡ１０に進む。
【００６６】
一方、ロック領域ヒット信号Ｓｌが“０”である場合のステップＡ９においては、外部メモリ８００に対して、ＣＰＵ１０８が要求するアクセスを実行し、アクセスは終了する。
【００６７】
１つのエントリが選択されたあとのステップＡ１０においては、ＣＰＵ１０８が要求するデータを外部メモリ８００から読み出し、選択したエントリへ書き込みを行う。
【００６８】
次いで、ステップＡ１１において、ロック領域ヒット信号Ｓｌが“１”か否かの判定を行い、“１”である場合はステップＡ１２へ分岐し、“０”である場合はステップＡ１３へ分岐する。そして、ステップＡ１４に進む。
【００６９】
ロック領域ヒット信号Ｓｌが“１”である場合のステップＡ１２においては、選択したエントリのリプレース保護ビットＬに“１”をセットする。
【００７０】
一方、ロック領域ヒット信号Ｓｌが“０”である場合のステップＡ１３においては、選択したエントリのリプレース保護ビットＬに“０”をセットする。そして、ステップＡ１４に進む。
【００７１】
ステップＡ１４においては、ＣＰＵ１０８が要求するアクセスを実行し、アクセスは終了する。
【００７２】
次に、ロック領域判定回路１１１の動作を図３のフローチャートに基づいて説明する。
【００７３】
ロック領域判定回路１１１は、ＣＰＵ１０８からのアクセス要求により、ステップＢ１以降の処理を開始する。
【００７４】
ステップＢ１において、ＣＰＵ１０８からのアクセス要求アドレスが、アドレス領域指定レジスタ１１０に指定された範囲か否かの評価を行い、範囲内である場合はステップＢ２へ分岐し、範囲外である場合はステップＢ３へ分岐する。
【００７５】
ステップＢ２においては、ロック領域ヒット信号Ｓｌに“１”を出力し、フローを終了する。
【００７６】
一方、ステップＢ３においては、ロック領域ヒット信号Ｓｌに“０”を出力し、フローを終了する。
【００７７】
具体的な例として、図４に示すようなプログラムにおける本実施の形態上でのキャッシュリプレース制御の動作を以下に示す。
【００７８】
図１、図２、図３に示されるキャッシュリプレース方式のキャッシュメモリ制御装置において、図４のようなメインプログラムから繰り返しコールされ、かつキャッシュメモリ上では同じエントリを使用するアドレスにマッピングされているサブルーチン１〜３があるとする。さらに、その中でもサブルーチン１は高速実行が必要なプログラムであるとする。
【００７９】
図４のメインプログラムでラベル“Loop”を先頭とする繰り返しの処理を実行する前に、あらかじめプログラムによってロック領域判定回路１１１におけるアドレス領域指定レジスタ１１０に、高速実行が必要なサブルーチン１の先頭番地と末尾番地がロック領域として指定されている。また、キャッシュメモリはウェイ０、ウェイ１ともに初期化が行われており、すべてのエントリの有効ビットＶは“０”にクリアされている。
【００８０】
以降、メインプログラムはサブルーチン１〜３のコールを繰り返し実行する。
【００８１】
まず、サブルーチン１がメインプログラムからコールされ、サブルーチン１の命令が実行される。この場合、初回であるので、キャッシュミスが発生する。リプレース制御回路１１２の制御によりウェイ０が選択され、外部メモリ８００から読み出されたデータによりウェイ０の該当するエントリがリプレースされる（ステップＡ１→ステップＡ３→ステップＡ６→ステップＡ１０）。
【００８２】
このときロック領域判定回路１１１はアクセスを行うアドレスバスのアドレスが指定されているアドレス領域のアドレスであるか否かの判定を行い（ステップＡ１１）、サブルーチン１の場合は範囲内であるため、ロック領域ヒット信号Ｓｌに“１”をセットする。
【００８３】
ウェイ０のタグメモリ１００は前記のロック領域判定回路１１１のロック領域ヒット信号Ｓｌが“１”にセットされていることにより、リプレースを行ったエントリのリプレース保護ビットＬを“１”にセットする（ステップＡ１２）。
【００８４】
そして、ＣＰＵ１０８は、外部メモリ８００から読み出したデータを実行する（ステップＡ１４）。
【００８５】
サブルーチン１の処理が終わり、メインプログラムへ復帰すると、次にサブルーチン２がメインプログラムからコールされ、サブルーチン２の命令が実行される。このときサブルーチン２の命令実行でもキャッシュミスが発生し、リプレース制御回路１１２の制御により有効ビットＶ、リプレース保護ビットＬともに“０”のウェイ１が選択され、外部メモリ８００から読み出されたデータによりウェイ１の該当するエントリがリプレースされる（ステップＡ１→ステップＡ３→ステップＡ６→ステップＡ１０）。
【００８６】
このときロック領域判定回路１１１はアクセスを行うアドレスバスのアドレスが指定されているアドレス領域のアドレスであるか否かの判定を行い（ステップＡ１１）、サブルーチン２の場合は範囲内でないため、ロック領域ヒット信号Ｓｌに“０”をセットする。
【００８７】
ウェイ１のタグメモリ１０１は前記のロック領域判定回路１１１のロック領域ヒット信号Ｓｌが“０”にセットされていることにより、リプレースを行ったエントリのリプレース保護ビットＬを“０”にセットする（ステップＡ１３）。
【００８８】
そして、ＣＰＵ１０８は、外部メモリ８００から読み出したデータを実行する（ステップＡ１４）。
【００８９】
サブルーチン２の処理が終わり、メインプログラムへ復帰すると、次にサブルーチン３がメインプログラムからコールされ、サブルーチン３の命令が実行される。このときサブルーチン３の命令実行でもキャッシュミスが発生する。すでにウェイ０、ウェイ１ともに、有効ビットＶが“１”にセットされている。そこで、ステップＡ４に進んで、リプレース制御回路１１２の制御により、リプレース保護ビットＬが“０”であるウェイ１が選択される。外部メモリ８００から読み出されたデータによりウェイ１の該当するエントリがリプレースされる（ステップＡ１→ステップＡ３→ステップＡ４→ステップＡ７→ステップＡ１０）。
【００９０】
すなわち、ウェイ０に格納されているサブルーチン１は、リプレース保護ビットＬが“１”であるため、リプレースから保護されてキャッシュメモリに保持される。
【００９１】
このときロック領域判定回路１１１は、アクセスを行うアドレスバスのアドレスが指定されているアドレス領域のアドレスであるか否かの判定を行い（ステップＡ１１）、サブルーチン３の場合は範囲内でないため、ロック領域ヒット信号Ｓｌに“０”をセットする。
【００９２】
ウェイ１のタグメモリ１０１は前記のロック領域判定回路１１１のロック領域ヒット信号Ｓｌが“０”にセットされていることにより、リプレースを行ったエントリのリプレース保護ビットＬを“０”にセットする（ステップＡ１３）。
【００９３】
そして、ＣＰＵ１０８は、外部メモリ８００から読み出したデータを実行する（ステップＡ１４）。
【００９４】
サブルーチン３の処理が終わり、メインプログラムへ復帰すると、次にある条件分岐命令を実行する。条件分岐命令では、条件の判定によりLoopラベルへの分岐が行われ、再びメインプログラムはサブルーチン１をコールする。キャッシュヒットとなり、ＣＰＵ１０８はキャッシュメモリから命令を読み出し実行する（ステップＡ１→ステップＡ２）。
【００９５】
サブルーチン１の処理が完了すると、メインプログラムは前述したようにサブルーチン２、サブルーチン３を逐次コールし、それらの処理が行われるが、サブルーチン２、サブルーチン３の命令が実行されるときのリプレース制御回路１１２の動作は前述のものと同様にリプレース保護ビットＬが“０”であるウェイ１のエントリへリプレースされる（ステップＡ１→ステップＡ３→ステップＡ４→ステップＡ７→ステップＡ１０）。
【００９６】
このように、高速実行が必要なサブルーチン１の命令を、キャッシュミスによるリプレース動作から確実に保護することが可能になる。
【００９７】
以上のように本実施の形態によれば、特定の領域をアドレス領域指定レジスタ１１０で指定し、指定した領域をキャッシュメモリへ格納するときにリプレース保護ビットＬを“１”に設定することで、以降のリプレース動作から確実に保護することができ、指定した領域を高速にアクセスすることができる。
【００９８】
なお、本実施の形態で説明したリプレース制御回路１１２の前述した機能に加え、ソフトウェアにより制御されるリプレース保護イネーブルレジスタを設け、それによりリプレース制御でリプレース保護の有効／無効の制御を行うように構成すれば、キャッシュメモリをより効率的に利用することができる。
【００９９】
（第２の実施の形態）
本発明の第２の実施の形態は、上記の第１の実施の形態における次のような問題点にも配慮したものである。それは、リプレースから保護したい領域へのアクセス頻度がプログラムの実行時の状態で変わる場合の問題である。すなわち、第１の実施の形態においては、ロック領域判定回路１１１内のアドレス領域指定レジスタ１１０にリプレース保護対象のアドレス領域を指定する。その範囲に該当するデータをキャッシュメモリに格納しているときに、リプレース保護対象のアドレス領域へのアクセス頻度がプログラムの実行時の状態で変われば、リプレース保護の有効／無効の切り替えをプログラムで制御するのが困難になったり、状態を判定するためにプログラムが増大するという問題がある。
【０１００】
第２の実施の形態では、アクセス頻度の情報を用いて、自動的にリプレース保護の有効／無効の切り替えを行うものである。
【０１０１】
図５は本発明の第２の実施の形態におけるキャッシュメモリ制御装置の構成を示すブロック図、図６は第２の実施の形態のキャッシュメモリアクセス制御の動作を示すフローチャート、図７はロック領域判定回路の動作を示すフローチャートである。
【０１０２】
本実施の形態のキャッシュメモリ制御装置は、第１の実施の形態で説明したウェイ０のタグメモリ１００とウェイ１のタグメモリ１０１とウェイ０のデータメモリ１０２とウェイ１のデータメモリ１０３とヒット検出器１０４，１０５と出力回路１０６，１０７とロック領域判定回路１１１と今回構造を変更したリプレース制御回路１１２ａとアクセス頻度カウンタ１１３から構成されている。
【０１０３】
以下では、第１の実施の形態とは異なる部分のアクセス頻度カウンタ１１３とリプレース制御回路１１２ａについて説明する。
【０１０４】
アクセス頻度カウンタ１１３は、一定時間ごとに値を減算するダウンカウンタであり、ロック領域判定回路１１１から出力されるロック領域ヒット信号Ｓｌの出力が“１”になることにより、カウント値をあらかじめ指定された値へ設定するとともに、カウント値がアンダーフローを起こすと、アクセス頻度低下信号Ｓｆを出力するように構成されている。
【０１０５】
リプレース制御回路１１２ａは、ウェイ０のタグメモリ１００とウェイ１のタグメモリ１０１の各エントリのリプレース保護ビットＬ、有効ビットＶとアクセス頻度カウンタ１１３から出力されるアクセス頻度低下信号Ｓｆとを入力信号とし、リプレース動作を行うウェイの選択の制御を行う。
【０１０６】
以下に、キャッシュメモリ制御装置のリプレース制御動作を図６、図７のフローチャートを用いて説明する。
【０１０７】
まず、キャッシュリプレース制御の動作を図６のフローチャートに基づいて説明する。ここでは、図２に示す第１の実施の形態でのキャッシュリプレース制御動作からの変更点を説明する。
【０１０８】
ステップＣ１において、アクセスの対象となるエントリに有効ビットＶが“０”になっているエントリがあるか否かの判定を行い、ある場合はステップＡ６へ分岐し、ない場合はステップＣ２へ分岐する。
【０１０９】
ステップＣ２においては、ロック領域判定回路１１１から出力されたアクセス頻度低下信号Ｓｆが“１”であるか否かの判定を行い、“１”である場合はステップＣ３へ分岐し、“１”でない場合はステップＡ４へ分岐する。
【０１１０】
ステップＣ３においては、エントリのリプレース保護ビットＬの値に関係なく、アクセスの対象となるエントリのうち１つを選択する。このときエントリを選択する方式はＬＲＵ方式とする。なお、エントリを選択する方式はＬＲＵ方式だけではなく、ＦＩＦＯ方式やランダムに選択する方式でもよい。
【０１１１】
次に、ロック領域判定回路１１１の動作を図７のフローチャートに基づいて説明する。ここでは、図３に示す第１の実施の形態でのキャッシュリプレース制御動作からの変更点を説明する。
【０１１２】
ステップＢ４において、比較器１０９が出力するロック領域ヒット信号Ｓｌが“１”になることで、アクセス頻度カウンタ１１３のカウント値があらかじめ設定された初期値に設定され、同時にダウンカウントが開始される。
【０１１３】
ステップＢ５において、アドレスカウンタでアンダーフローが発生しているか否かの判定を行い、発生していない場合はステップＢ６へ、発生している場合はステップＢ７へ分岐する。
【０１１４】
アンダーフローが発生していない場合のステップＢ６においては、アクセス頻度低下信号Ｓｆに“０”を出力し、フローを終了する。
【０１１５】
アンダーフローが発生している場合のステップＢ７においては、アクセス頻度低下信号Ｓｆに“１”を出力し、フローを終了する。
【０１１６】
以上のように本実施の形態によれば、ロック領域判定回路１１１においてリプレース保護を設定されたアドレス領域のデータがキャッシュメモリに格納された後に、ＣＰＵ１０８から発行されるアクセスが指定した領域内となる頻度をアクセス発生により初期値にセットされるダウンカウンタで評価することにより、プログラムがリプレースから保護している命令の実行を行わない実行状況になったことを検出し、リプレース保護を自動的に無効化することを実現できるようになり、キャッシュメモリの効率的な利用が可能となる。
【０１１７】
なお、図８は本実施の形態の変形の形態のキャッシュメモリ制御装置の構成を示すブロック図である。
【０１１８】
これは、リプレース制御回路１１２ｂを次のように構成したものである。条件に応じて、リプレース制御回路１１２ｂからウェイ０のタグメモリ１００とウェイ１のタグメモリ１０１に対してロックエントリ無効化信号Ｓｉを出力するようになっている。すなわち、アクセス頻度カウンタ１１３からアクセス頻度低下信号Ｓｆが“１”で出力されると、リプレース保護ビットＬが“１”になっているエントリは不要になったとして、リプレース制御回路１１２ｂがロックエントリ無効化信号Ｓｉを出力する。その場合、ウェイ０のタグメモリ１００とウェイ１のタグメモリ１０１においては、リプレース保護ビットＬが“１”となっているエントリの有効ビットＶを一括で“０”にクリアすることにより、エントリを無効化する。その結果として、キャッシュメモリの効率的な利用を実現できる。
【０１１９】
なお、アクセス頻度低下信号Ｓｆではなく、ＣＰＵ１０８が特別な命令を実行して出力する制御信号により、リプレース保護ビットＬが“１”であるエントリの有効ビットＶを“０”にクリアして無効化しても良い。
【０１２０】
なお、アクセス頻度カウンタは一定時間ごとに値を減算するとしたが、これに代えて、アクセス毎に値を減算するとしてもよい。また、ダウンカウンタの代わりに値を加算するアップカウンタとし、オーバーフローによりアクセス頻度低下信号Ｓｆを出力するとしても良い。
【０１２１】
（第３の実施の形態）
本発明の第３の実施の形態は、上記の第２の実施の形態における次のような問題点にも配慮したものである。
【０１２２】
第２の実施の形態において、高速実行の必要のためにキャッシュメモリ上で保持を行う必要がある命令に対して、命令の配置されているアドレス領域をリプレース保護領域としてロック領域判定回路に指定し、リプレース保護領域のデータをキャッシュメモリに格納するときにタグメモリのエントリのリプレース保護ビットＬを“１”にセットすることでリプレース動作からの保護を可能とし、キャッシュメモリの効率的な利用が可能となった。
【０１２３】
しかし、リプレースから保護を行いたい命令が１つの連続したアドレス領域ではなく、間にリプレースから保護を行う必要のないアドレス領域を挟んだ２つ以上のアドレス領域である場合に、リプレースから保護を行うためには保護の必要のない領域を含んだ１つのアドレス空間として保護を行わなくてはいけないという問題がある。
【０１２４】
図９は本発明の第３の実施の形態におけるキャッシュメモリ制御装置の構成を示すブロック図である。
【０１２５】
本実施の形態のキャッシュメモリ制御装置は、第２の実施の形態で説明したウェイ０のタグメモリ１００とウェイ１のタグメモリ１０１とウェイ０のデータメモリ１０２とウェイ１のデータメモリ１０３とヒット検出器１０４，１０５と出力回路１０６，１０７とロック領域判定回路１１１とリプレース制御回路１１２ａと今回新たに追加したロック領域判定回路１２１とＯＲ回路１１８から構成されている。
【０１２６】
以下では、第２の実施の形態とは異なる部分について説明する。
【０１２７】
ロック領域判定回路１２１は、ロック領域判定回路１１１と同じ構成である。ＯＲ回路１１８は、２つのロック領域判定回路１１１，１２１から出力されたロック領域ヒット信号の論理和をロック領域ヒット信号Ｓｌとして出力するように構成されている。
【０１２８】
本実施の形態のキャッシュリプレース制御のフローは図６、図７に示される第２の実施の形態と同様であるので、ここでの説明は省略する。
【０１２９】
本実施の形態によれば、ロック領域判定回路を複数個使用することにより、リプレース保護を行う領域を複数個設定することが可能となり、効果的なリプレース保護を実現できる。
【０１３０】
なお、本実施の形態では説明を簡単に行うために、アドレス領域指定レジスタと比較器からなるロック領域判定回路を２つとし、ＯＲ回路１１８で２つの比較器の出力の論理和をとるようにしているが、アドレス領域指定レジスタと比較器からなるロック領域判定回路を３つ以上使用し、すべての比較器の出力の論理和を行うＯＲ回路を使用する構成とすることも可能である。
【０１３１】
（第４の実施の形態）
本発明の第４の実施の形態は、上記の第３の実施の形態における次のような問題点にも配慮したものである。
【０１３２】
第３の実施の形態において、ロック領域判定回路を複数個使用することで複数のアドレス領域へのリプレース保護を実現し、効率的なリプレース保護が可能になった。
【０１３３】
しかし、第３の実施の形態でのキャッシュメモリ制御装置の構成では、複数のアドレス領域をリプレース保護に指定できるが、アクセス頻度カウンタとタグメモリのリプレース保護ビットＬを複数のロック領域判定回路が共有するため、ロック領域判定回路ごとにリプレース保護の設定／解除ができないという問題がある。
【０１３４】
図１０は本発明の第４の実施の形態におけるキャッシュメモリ制御装置の構成を示すブロック図である。
【０１３５】
本実施の形態にかかわるキャッシュメモリ制御装置は、第３の実施の形態で説明したウェイ０のデータメモリ１０２とウェイ１のデータメモリ１０３とヒット検出器１０４，１０５と出力回路１０６，１０７とロック領域判定回路１１１，１２１と今回変更したウェイ０のタグメモリ２００とウェイ１のタグメモリ２０１とリプレース制御回路１１２ｃと今回新たに追加したアクセス頻度カウンタ１２３から構成されている。第３の実施の形態の図９に示すＯＲ回路１１８はない。
【０１３６】
以下では、第３の実施の形態とは異なる部分について説明する。
【０１３７】
ウェイ０のタグメモリ２００とウェイ１のタグメモリ２０１は、各ウェイのエントリ毎にタグアドレス、エントリの有効性を示す有効ビットＶ、エントリのロック状態を示す複数のビットで構成されたリプレース保護ビットＬの保持を行う。今回、リプレース保護ビットＬは２ビットで構成され、０ビット目はロック領域判定回路１２１から出力されるロック領域ヒット信号Ｓｌ1によって制御され、１ビット目はロック領域判定回路１１１から出力されるロック領域ヒット信号Ｓｌ2によって制御される。
【０１３８】
リプレース制御回路１１２ｃは、ウェイ０のタグメモリ２００とウェイ１のタグメモリ２０１の各エントリのリプレース保護ビットＬ（２ビット）、有効ビットＶとアクセス頻度カウンタ１１３，１２３から出力されるアクセス頻度低下信号Ｓｆ2，Ｓｆ1を入力信号とし、リプレース動作を行うウェイの選択の制御を行う。
【０１３９】
アクセス頻度カウンタ１２３は、アクセス頻度カウンタ１１３と同じ構成であり、ロック領域判定回路１２１から出力されるロック領域ヒット信号Ｓｌ1をカウンタの初期値設定信号とする。
【０１４０】
本実施の形態のキャッシュリプレース制御のフローは図６、図７に示される第２の実施の形態と同様であるので、ここでの説明は省略する。
【０１４１】
本実施の形態によれば、ロック領域判定回路を複数個使用し、複数領域のリプレース保護を行うキャッシュメモリにおいて、タグメモリのリプレース保護ビットＬをどのリプレース保護領域のリプレース保護を行っているか特定できるビット数で構成することと、ロック領域判定回路ごとにアクセス頻度カウンタを持ってリプレース保護領域ごとのアクセス頻度の評価を行うことで、リプレース制御回路がリプレース保護領域ごとにリプレース保護の設定／解除を行うことが可能となり、効果的なリプレース保護を実現できる。
【０１４２】
なお、複数のロック領域判定回路で設定されるリプレース保護領域のそれぞれに対して、リプレース保護優先度をリプレース制御回路１１２ｃにリプレース保護優先度に応じたリプレース保護制御を行う機能を加えることにより、キャッシュミスを生じたアドレスがリプレース保護領域内であり、リプレースの対象となるエントリのすべてのリプレース保護ビットＬが“１”である場合に、優先度の低いエントリをリプレースし、優先度の高い領域の命令をキャッシュメモリに保持でき、キャッシュメモリの効果的な利用が可能となる。
【０１４３】
（第５の実施の形態）
本発明の第５の実施の形態は、上記の第１の実施の形態における次のような問題点にも配慮したものである。
【０１４４】
第１の実施の形態では、リプレース保護を実現するために、従来のタグメモリに対してエントリごとにリプレース保護状態を示すリプレース保護ビットＬを追加している。リプレース保護ビットＬの追加はリプレース保護を行うには有効な手段ではあるが、キャッシュメモリの容量が大きい場合にはタグメモリのエントリ数が増加するので、リプレース保護ビットＬの追加によるタグメモリの物理面積増加が無視できなくなるという問題がある。
【０１４５】
図１１は本発明の第５の実施の形態のキャッシュメモリ制御装置の構成を示すブロック図である。
【０１４６】
本実施の形態のキャッシュメモリ制御装置は、ウェイ０のタグメモリ６００とウェイ１のタグメモリ６０１とウェイ０のデータメモリ１０２とウェイ１のデータメモリ１０３とヒット検出器１０４，１０５と出力回路１０６，１０７とＣＰＵ１０８と比較器１０９とアドレス領域指定レジスタ１１０とロック領域判定回路１１１とリプレース制御回路１１２ｄから構成されている。１０８はＣＰＵ、８００は外部メモリである。
【０１４７】
以下では、第１の実施の形態とは異なる部分について説明する。
【０１４８】
ウェイ０のタグメモリ６００とウェイ１のタグメモリ６０１は、各ウェイのエントリ毎にタグアドレス、エントリの有効性を示す有効ビットＶの保持を行う。
【０１４９】
リプレース制御回路１１２ｄは、ウェイ０のタグメモリ６００とウェイ１のタグメモリ６０１の各エントリの有効ビットＶとロック領域判定回路１１１から出力されるロック領域ヒット信号Ｓｌを入力信号とし、ロック領域判定回路１１１へ入力するウェイ０およびウェイ１のタグメモリ６００，６０１から出力されているタグアドレスを選択するセレクタ１６１の制御信号を出力信号とし、リプレース動作を行うウェイの選択の制御を行う。
【０１５０】
本実施の形態によれば、リプレース制御回路１１２ｄは、リプレース動作を実行するときに、ウェイ０、ウェイ１のリプレース対象となるエントリのタグアドレスを逐次、ロック領域判定回路１１１で比較を行い、キャッシュメモリに保持されているデータがリプレース動作から確実に保護するデータであるかの判定を行う。
【０１５１】
これによって、リプレース保護ビットＬをもったタグメモリを使用しなくてもリプレース保護を実現することが可能となり、リプレース保護ビットＬの追加によるタグメモリの面積増加を招くことなく、リプレース保護が可能となる。
【０１５２】
なお、比較器１０９を複数設け、複数のウェイのタグアドレスとアドレス領域指定レジスタ１１０の値の比較を同時に行っても良い。
【０１５３】
（第６の実施の形態）
図１２は本発明の第６の実施の形態におけるキャッシュメモリ制御装置の構成を示すブロック図である。
【０１５４】
第１の実施の形態は、指定されたアドレス領域に対してリプレースの保護を行うものであるが、本実施の形態ではタスク単位でリプレース保護を行うものである。
【０１５５】
本実施の形態のキャッシュメモリ制御装置は、第１の実施の形態で説明したウェイ０のタグメモリ１００とウェイ１のタグメモリ１０１とウェイ０のデータメモリ１０２とウェイ１のデータメモリ１０３とヒット検出器１０４，１０５と出力回路１０６，１０７とリプレース制御回路１１２と今回構造を変更したロック領域判定回路５０１から構成されている。ロック領域判定回路５０１は、リプレース保護対象のタスクＩＤを保持するタスクＩＤ指定レジスタ５００と比較器１０９ａから構成されている。
【０１５６】
以下では、第１の実施の形態とは異なる部分について説明する。
【０１５７】
ＣＰＵ１０８は、現在実行中のタスクが持つタスクＩＤをロック領域判定回路５０１へ出力するように構成されている。
【０１５８】
ロック領域判定回路５０１は、その比較器１０９ａにおいて、タスクＩＤ指定レジスタ５００に保持されたリプレース保護対象のタスクＩＤとＣＰＵ１０８から出力された実行中のタスクのタスクＩＤとを比較し、結果が一致した場合にロック領域ヒット信号Ｓｌを出力するように構成されている。そのロック領域ヒット信号Ｓｌは、ウェイ０のタグメモリ１００とウェイ１のタグメモリ１０１の該当するエントリのリプレース保護ビットＬに“１”をセットする。
【０１５９】
本実施の形態によれば、リプレース保護の指定をメモリアドレスではなく、タスクＩＤとすることで、タスク単位でのリプレース保護を行うことが可能となり、タスクで使用するアドレス領域を調べる必要がなく、容易なリプレース保護設定が可能となる。
【０１６０】
（第７の実施の形態）
図１３は本発明の第７の実施の形態のキャッシュメモリ制御装置の構成を示すブロック図である。
【０１６１】
これは、第４の実施の形態などにあるアクセス頻度カウンタ１１３と同様の機能を有するタスク頻度カウンタ１１３ａを設けたものである。このタスク頻度カウンタ１１３ａは、ロック領域判定回路５０１から出力されるロック領域ヒット信号Ｓｌを用いて、プログラムがリプレースから保護しているタスクの実行を行わない実行状況になったことを検出し、その検出信号をリプレース制御回路１１２ｄに出力する。検出信号を受け取ったリプレース制御回路１１２ｄは、リプレース保護を自動的に無効化する。これにより、キャッシュメモリの効率的な利用が可能となる。
【０１６２】
また、図１４はリプレース保護をタクス単位で行う代わりにＣＰＵ１０８から出力される割り込みレベルに変更した実施の形態のキャッシュメモリ制御装置の構成を示すブロック図である。
【０１６３】
図１２におけるタスクＩＤ指定レジスタ５００を割り込みレベル指定レジスタ５１０に変更して、割り込みレベル単位でリプレース保護を行うものである。その場合、割り込みレベル指定レジスタ５１０にあらかじめ設定された値と、ＣＰＵ１０８が出力する割り込みレベル信号を比較して、ロック領域ヒット信号Ｓｌを出力し、これによってエントリのリプレース保護ビットＬが設定され、リプレース時のウェイ選択に用いる。
【０１６４】
なお、第１〜第６の実施の形態では、命令に対するキャッシュのアクセスについて説明したが、データのアクセスについても同様である。
【０１６５】
また、キャッシュメモリとして２ウェイ構成のものについて説明したが、２ウェイ以外の構成でも同様である。
【０１６６】
また、ロック領域を指定するのに、アドレス領域指定レジスタ１１０にロック領域の先頭アドレスと最終アドレスを設定するとしたが、領域のアドレスに共通な上位部を設定するとしても良い。これにより設定された上位部のみと比較することで、アドレスがロック領域に含まれるか判定される。
【産業上の利用可能性】
【０１６７】
本発明のキャッシュメモリ制御装置および制御方法は、リプレース保護を設定する機能を有し、マイクロプロセッサやキャッシュメモリを使用する情報処理装置等に対して有用である。
【図面の簡単な説明】
【０１６８】
【図１】本発明の第１の実施の形態のキャッシュメモリ制御装置の構成を示すブロック図
【図２】第１の実施の形態のキャッシュメモリアクセス制御の動作を示すフローチャート
【図３】第１の実施の形態のロック領域判定回路の動作を示すフローチャート
【図４】第１の実施の形態で実行されるプログラムの一部
【図５】本発明の第２の実施の形態のキャッシュメモリ制御装置の構成を示すブロック図
【図６】第２の実施の形態のキャッシュメモリアクセス制御の動作を示すフローチャート
【図７】第２の実施の形態のロック領域判定回路の動作を示すフローチャート
【図８】本発明の第２の実施の形態の変形の形態のキャッシュメモリ制御装置の構成を示すブロック図
【図９】本発明の第３の実施の形態のキャッシュメモリ制御装置の構成を示すブロック図
【図１０】本発明の第４の実施の形態のキャッシュメモリ制御装置の構成を示すブロック図
【図１１】本発明の第５の実施の形態のキャッシュメモリ制御装置の構成を示すブロック図
【図１２】本発明の第６の実施の形態のキャッシュメモリ制御装置の構成を示すブロック図
【図１３】本発明の第７の実施の形態のキャッシュメモリ制御装置の構成を示すブロック図
【図１４】本発明の第７の実施の形態の変形の形態のキャッシュメモリ制御装置の構成を示すブロック図
【符号の説明】
【０１６９】
１００，２００，３０１，６００  ウェイ０のタグメモリ
１０１，２０１，３０２，６０１  ウェイ１のタグメモリ
１０２  ウェイの０データメモリ
１０３  ウェイ１のデータメモリ
１０４，１０５  ヒット検出器
１０６，１０７  出力回路
１０８  ＣＰＵ
１０９，１０９ａ  比較器
１１０  アドレス領域指定レジスタ
１１１，１２１，５０１，５１１  ロック領域判定回路
１１２，１１２ａ，１１２ｂ，１１２ｃ，１１２ｄ  リプレース制御回路
１１３，１２３  アクセス頻度カウンタ
１１３ａ  タスク頻度カウンタ
１１８  ＯＲ回路
５００  タスクＩＤ指定レジスタ
５１０  割り込みレベル指定レジスタ
８００  外部メモリ
【図１】
2005301387.tif 000003
【図２】
2005301387.tif 000004
【図３】
2005301387.tif 000005
【図４】
2005301387.tif 000006
【図５】
2005301387.tif 000007
【図６】
2005301387.tif 000008
【図７】
2005301387.tif 000009
【図８】
2005301387.tif 000010
【図９】
2005301387.tif 000011
【図１０】
2005301387.tif 000012
【図１１】
2005301387.tif 000013
【図１２】
2005301387.tif 000014
【図１３】
2005301387.tif 000015
【図１４】
2005301387.tif 000016