(57)【要約】【課題】メインメモリの種類やプログラムの動作にかかわらず、キャッシュヒット率が上昇することによるメインメモリへのアクセスの減少を回避することができ、メインメモリへの命令アクセス、およびデータアクセスが定常的に行われる状態でのバスの動作検証を行うことができるようにする。【解決手段】命令キャッシュヒットカウンタ１０２によってキャッシュヒット回数がカウントされ、命令メモリアクセスカウンタ１０３によって命令アクセス回数がカウントされる。命令アクセス回数に対するキャッシュヒット回数の割合（キャッシュヒット率）が命令キャッシュヒット率算出／エントリ無効化制御回路１０４によって算出され、キャッシュヒット率が命令キャッシュ用エントリ無効化閾値を超えた場合に、命令キャッシュメモリの内容が命令キャッシュ制御回路１０１により無効化される。【選択図】図１
2006260525.tif 000002
【特許請求の範囲】
【請求項１】
バスに接続されたメインメモリに対して情報処理装置が読み書きするデータおよび前記メインメモリから読み込む命令コードの少なくとも一方が保持されるキャッシュメモリと、
前記情報処理装置によってデータまたは命令コードに対する読み込み要求がなされた際に、キャッシュヒットの場合には、前記キャッシュメモリからデータまたは命令コードを読み込んで前記情報処理装置に出力する一方、キャッシュミスの場合には、前記メインメモリからデータまたは命令コードを読み込んで前記キャッシュメモリに保持させるとともに前記情報処理装置に出力し、情報処理装置によってデータの書き込み要求がなされた際には、前記キャッシュメモリにデータを書き込むキャッシュ制御回路と、
キャッシュヒットの回数に応じて、前記キャッシュメモリに保持されたデータまたは命令コードを無効化するキャッシュメモリ無効化回路と、
を備えたことを特徴とするキャッシュ回路。
【請求項２】
請求項１のキャッシュ回路であって、
前記キャッシュメモリ無効化回路は、キャッシュヒットの回数が所定の回数を超えた場合に、前記キャッシュメモリのデータまたは命令コードを無効化するように構成されていることを特徴とするキャッシュ回路。
【請求項３】
請求項２のキャッシュ回路であって、
さらに、キャッシュヒットの回数をカウントするヒット数カウント回路を備え、
前記キャッシュメモリ無効化回路は、前記ヒット数カウント回路のカウント数が所定の回数を超えた場合に、前記キャッシュメモリのデータまたは命令コードを無効化するように構成されていることを特徴とするキャッシュ回路。
【請求項４】
請求項２のキャッシュ回路であって、
前記キャッシュメモリ、キャッシュ制御回路、およびキャッシュメモリ無効化回路は、それぞれデータ用と命令コード用との少なくとも２つずつ設けられ、
データ用キャッシュメモリ無効化回路は、データ用キャッシュメモリについてのキャッシュヒット回数が所定の回数を超え、かつ命令コード用キャッシュメモリについてのキャッシュヒットの回数が所定の回数を超えた場合に、前記データ用キャッシュメモリのデータを無効化するように構成されていることを特徴とするキャッシュ回路。
【請求項５】
請求項２のキャッシュ回路であって、
前記キャッシュメモリ、キャッシュ制御回路、およびキャッシュメモリ無効化回路は、それぞれデータ用と命令コード用との少なくとも２つずつ設けられ、
命令コード用キャッシュメモリ無効化回路は、命令コード用キャッシュメモリについてのキャッシュヒットの回数が所定の回数を超え、かつデータ用キャッシュメモリについてのキャッシュヒット回数が所定の回数を超えた場合に、前記命令コード用キャッシュメモリの命令コードを無効化するように構成されていることを特徴とするキャッシュ回路。
【請求項６】
請求項１のキャッシュ回路であって、
前記キャッシュメモリ無効化回路は、読み書きの要求がなされた回数に対するキャッシュヒットの回数の割合であるキャッシュヒット率が所定の値を超えた場合に、前記キャッシュメモリに保持されたデータまたは命令コードを無効化するように構成されていることを特徴とするキャッシュ回路。
【請求項７】
請求項６のキャッシュ回路であって、
さらに、前記キャッシュメモリで保持されるデータまたは命令コードに対して、前記情報処理装置によって読み書きの要求がなされた回数をカウントするアクセス回数カウント回路と、
上記読み書きの要求に対するキャッシュヒットの回数をカウントするヒット数カウント回路と、
前記アクセス回数カウント回路がカウントした回数に対する前記ヒット数カウント回路がカウントしたキャッシュヒットの回数の割合を算出するヒット率算出回路と、
を備えていることを特徴とするキャッシュ回路。
【請求項８】
請求項７のキャッシュ回路であって、
前記ヒット率算出回路は、前記アクセス回数カウント回路がカウントした回数が所定の回数を超えた場合に、前記キャッシュヒット率を算出するとともに、前記アクセス回数カウント回路とヒット数カウント回路とをリセットするように構成されていることを特徴とするキャッシュ回路。
【請求項９】
請求項６のキャッシュ回路であって、
前記キャッシュメモリ、キャッシュ制御回路、およびキャッシュメモリ無効化回路は、それぞれデータ用と命令コード用との少なくとも２つずつ設けられ、
データ用キャッシュメモリ無効化回路は、データ用キャッシュメモリについてのキャッシュヒット率が所定の値を超え、かつ命令コード用キャッシュメモリについてのキャッシュヒット率が所定の値を超えた場合に、前記データ用キャッシュメモリのデータを無効化するように構成されていることを特徴とするキャッシュ回路。
【請求項１０】
請求項６のキャッシュ回路であって、
前記キャッシュメモリ、キャッシュ制御回路、およびキャッシュメモリ無効化回路は、それぞれデータ用と命令コード用との少なくとも２つずつ設けられ、
命令コード用キャッシュメモリ無効化回路は、命令コード用キャッシュメモリについてのキャッシュヒット率が所定の値を超え、かつデータ用キャッシュメモリについてのキャッシュヒット率が所定の値を超えた場合に、前記命令コード用キャッシュメモリの命令コードを無効化するように構成されていることを特徴とするキャッシュ回路。
【請求項１１】
請求項１のキャッシュ回路であって、
前記キャッシュメモリは、少なくともデータが保持されるように構成され、
前記キャッシュメモリ無効化回路は、前記キャッシュメモリに保持されたデータまたは命令コードを無効化する際に、前記キャッシュメモリに保持されているデータとメインメモリに保持されているデータとが一致していない場合には、前記キャッシュメモリに保持されているデータを前記メインメモリに書き戻すように構成されていることを特徴とするキャッシュ回路。
【請求項１２】
請求項１のキャッシュ回路であって、
前記キャッシュメモリ無効化回路は、前記キャッシュメモリに保持されたデータまたは命令コードが、メインメモリの所定のアドレス範囲と対応するデータまたは命令コードである場合に、キャッシュヒットの回数に応じて、前記キャッシュメモリに保持されたデータまたは命令コードを無効化するように構成されていることを特徴とするキャッシュ回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、キャッシュメモリの制御を行うキャッシュ回路に関するものである。
【背景技術】
【０００２】
一般に、コンピュータシステムでは、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）とＣＰＵに比べ処理速度が遅いメインメモリとの間に、メインメモリより記憶容量は小さいがメインメモリより処理速度の速いキャッシュメモリが設けられている。
【０００３】
キャッシュメモリは、メインメモリ内の命令コード、またはデータのコピーを一時的に保持することによって、ＣＰＵから見たメインメモリの見かけ上の処理速度を速めるようになっている（例えば、非特許文献１を参照。）。
【０００４】
また、メインメモリに保持された命令コードおよびデータをＣＰＵに転送するために、ＣＰＵとメインメモリの間にはバスが設けられるが、コンピュータシステムでは、バスの動作の検証や評価が行われる場合があり、バスの動作の検証や評価が行われる際には、プログラムを実行させてＣＰＵからメインメモリへの命令アクセス動作、およびデータアクセス動作を様々な条件で繰り返し行わせる。
【０００５】
このようなプログラムは、ＣＰＵにメインメモリへのアクセスを繰り返し行わせるため、通常ループ構造を持つことが多い。
【０００６】
しかし、キャッシュメモリが設けられたコンピュータシステムで、ループ構造を持ったプログラムが実行された場合に、ループ部分のすべての命令コードが命令コード用のキャッシュメモリ（命令キャッシュメモリ）に保持されると、メインメモリへの命令アクセスが行われなくなり、バスを転送されるのは、ＣＰＵのデータアクセスによるデータのみになる。
【０００７】
また、ループ部分でメインメモリにアクセスされるデータがすべてデータ用のキャッシュメモリ（データキャッシュメモリ）に保持された場合には、メインメモリへのデータアクセスが行われなくなり、バスを転送されるのは、ＣＰＵの命令アクセスによる命令コードのみになる。
【０００８】
この結果、メインメモリへの命令アクセス、およびデータアクセスが定常的に行われる状態でのバスの動作検証を行うことができなくなる。
【０００９】
このため、従来のコンピュータシステムでは、コンピュータシステムが持つタイマを動作させて一定時間ごとにＣＰＵに対しタイマ割り込みを発生させ、ＣＰＵがタイマ割り込みを検出するとプログラムにより命令キャッシュメモリあるいはデータキャッシュメモリのエントリを無効化し、メインメモリに保持されている命令コードやデータに対し、バスを介したアクセスを発生させるようになっているものがあった。
【非特許文献１】橋本  昭洋、”情報工学入門選書７  計算機アーキテクチャ”、昭晃堂、平成７年７月２０日
【発明の開示】
【発明が解決しようとする課題】
【００１０】
しかし、タイマ割り込みを用い、プログラムによってキャッシュを無効化する方法では、例えば、ＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＳＤＲＡＭ（Ｓｙｎｃｈｒｏｎｏｕｓ  Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、フラッシュＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）等のメインメモリの種類によってアクセス速度が異なるため、メインメモリの種類に応じてタイマ割り込みの周期を最適に設定する必要があった。
【００１１】
また、プログラムの動作によっては、キャッシュヒット率の上昇率が一定ではなく、タイマ割り込みによる定期的なキャッシュメモリの無効化処理では、キャッシュヒット率が高くなって、メインメモリへのアクセスが起こらない状態が長く続く可能性があった。
【００１２】
本発明は、上記の問題に着目してなされたものであり、メインメモリの種類やプログラムの動作にかかわらず、キャッシュヒット率が上昇することによるメインメモリへのアクセスの減少を回避することができ、メインメモリへの命令アクセス、およびデータアクセスが定常的に行われる状態でのバスの動作検証を行うことができるキャッシュ回路を提供することを課題とする。
【課題を解決するための手段】
【００１３】
前記の課題を解決するため、請求項１の発明は、
バスに接続されたメインメモリに対して情報処理装置が読み書きするデータおよび前記メインメモリから読み込む命令コードの少なくとも一方が保持されるキャッシュメモリと、
前記情報処理装置によってデータまたは命令コードに対する読み込み要求がなされた際に、キャッシュヒットの場合には、前記キャッシュメモリからデータまたは命令コードを読み込んで前記情報処理装置に出力する一方、キャッシュミスの場合には、前記メインメモリからデータまたは命令コードを読み込んで前記キャッシュメモリに保持させるとともに前記情報処理装置に出力し、情報処理装置によってデータの書き込み要求がなされた際には、前記キャッシュメモリにデータを書き込むキャッシュ制御回路と、
キャッシュヒットの回数に応じて、前記キャッシュメモリに保持されたデータまたは命令コードを無効化するキャッシュメモリ無効化回路と、
を備えたことを特徴とする。
【００１４】
これにより、キャッシュヒットの回数に応じて、前記キャッシュメモリのデータまたは命令コードが無効化されるので、メインメモリの種類やプログラムの動作に係わらず、キャッシュメモリのキャッシュヒット率が上昇することによるメインメモリへのアクセスの減少を回避することができ、メインメモリへの命令アクセス、およびデータアクセスが定常的に行われる状態でのバスの動作検証を行うことができる。
【００１５】
また、請求項２の発明は、
請求項１のキャッシュ回路であって、
前記キャッシュメモリ無効化回路は、キャッシュヒットの回数が所定の回数を超えた場合に、前記キャッシュメモリのデータまたは命令コードを無効化するように構成されていることを特徴とする。
【００１６】
また、請求項３の発明は、
請求項２のキャッシュ回路であって、
さらに、キャッシュヒットの回数をカウントするヒット数カウント回路を備え、
前記キャッシュメモリ無効化回路は、前記ヒット数カウント回路のカウント数が所定の回数を超えた場合に、前記キャッシュメモリのデータまたは命令コードを無効化するように構成されていることを特徴とする。
【００１７】
これらにより、キャッシュヒット回数が所定の回数を超えた場合に、前記キャッシュメモリのデータまたは命令コードを無効化できる。
【００１８】
また、請求項４の発明は、
請求項２のキャッシュ回路であって、
前記キャッシュメモリ、キャッシュ制御回路、およびキャッシュメモリ無効化回路は、それぞれデータ用と命令コード用との少なくとも２つずつ設けられ、
データ用キャッシュメモリ無効化回路は、データ用キャッシュメモリについてのキャッシュヒット回数が所定の回数を超え、かつ命令コード用キャッシュメモリについてのキャッシュヒットの回数が所定の回数を超えた場合に、前記データ用キャッシュメモリのデータを無効化するように構成されていることを特徴とする。
【００１９】
また、請求項５の発明は、
請求項２のキャッシュ回路であって、
前記キャッシュメモリ、キャッシュ制御回路、およびキャッシュメモリ無効化回路は、それぞれデータ用と命令コード用との少なくとも２つずつ設けられ、
命令コード用キャッシュメモリ無効化回路は、命令コード用キャッシュメモリについてのキャッシュヒットの回数が所定の回数を超え、かつデータ用キャッシュメモリについてのキャッシュヒット回数が所定の回数を超えた場合に、前記命令コード用キャッシュメモリの命令コードを無効化するように構成されていることを特徴とする。
【００２０】
これらにより、データ用キャッシュメモリについてのキャッシュヒット回数が所定の回数を超え、かつ命令コード用キャッシュメモリについてのキャッシュヒットの回数が所定の回数を超えた場合に、前記データ用キャッシュメモリのデータを無効化したり、命令コード用キャッシュメモリの命令コードを無効化したりできる。
【００２１】
また、請求項６の発明は、
請求項１のキャッシュ回路であって、
前記キャッシュメモリ無効化回路は、読み書きの要求がなされた回数に対するキャッシュヒットの回数の割合であるキャッシュヒット率が所定の値を超えた場合に、前記キャッシュメモリに保持されたデータまたは命令コードを無効化するように構成されていることを特徴とする。
【００２２】
また、請求項７の発明は、
請求項６のキャッシュ回路であって、
さらに、前記キャッシュメモリで保持されるデータまたは命令コードに対して、前記情報処理装置によって読み書きの要求がなされた回数をカウントするアクセス回数カウント回路と、
上記読み書きの要求に対するキャッシュヒットの回数をカウントするヒット数カウント回路と、
前記アクセス回数カウント回路がカウントした回数に対する前記ヒット数カウント回路がカウントしたキャッシュヒットの回数の割合を算出するヒット率算出回路と、
を備えていることを特徴とする。
【００２３】
また、請求項８の発明は、
請求項７のキャッシュ回路であって、
前記ヒット率算出回路は、前記アクセス回数カウント回路がカウントした回数が所定の回数を超えた場合に、前記キャッシュヒット率を算出するとともに、前記アクセス回数カウント回路とヒット数カウント回路とをリセットするように構成されていることを特徴とする。
【００２４】
これらにより、キャッシュヒット率が所定の値を超えた場合に、前記キャッシュメモリのデータまたは命令コードを無効化できる。
【００２５】
また、請求項９の発明は、
請求項６のキャッシュ回路であって、
前記キャッシュメモリ、キャッシュ制御回路、およびキャッシュメモリ無効化回路は、それぞれデータ用と命令コード用との少なくとも２つずつ設けられ、
データ用キャッシュメモリ無効化回路は、データ用キャッシュメモリについてのキャッシュヒット率が所定の値を超え、かつ命令コード用キャッシュメモリについてのキャッシュヒット率が所定の値を超えた場合に、前記データ用キャッシュメモリのデータを無効化するように構成されていることを特徴とする。
【００２６】
また、請求項１０の発明は、
請求項６のキャッシュ回路であって、
前記キャッシュメモリ、キャッシュ制御回路、およびキャッシュメモリ無効化回路は、それぞれデータ用と命令コード用との少なくとも２つずつ設けられ、
命令コード用キャッシュメモリ無効化回路は、命令コード用キャッシュメモリについてのキャッシュヒット率が所定の値を超え、かつデータ用キャッシュメモリについてのキャッシュヒット率が所定の値を超えた場合に、前記命令コード用キャッシュメモリの命令コードを無効化するように構成されていることを特徴とする。
【００２７】
これらにより、データ用キャッシュメモリについてのキャッシュヒット率が所定の値を超え、かつ命令コード用キャッシュメモリについてのキャッシュヒット率が所定の値を超えた場合に、前記データ用キャッシュメモリのデータを無効化したり、命令コード用キャッシュメモリの命令コードを無効化したりできる。
【００２８】
また、請求項１１の発明は、
請求項１のキャッシュ回路であって、
前記キャッシュメモリは、少なくともデータが保持されるように構成され、
前記キャッシュメモリ無効化回路は、前記キャッシュメモリに保持されたデータまたは命令コードを無効化する際に、前記キャッシュメモリに保持されているデータとメインメモリに保持されているデータとが一致していない場合には、前記キャッシュメモリに保持されているデータを前記メインメモリに書き戻すように構成されていることを特徴とする。
【００２９】
これにより、前記キャッシュメモリのデータを無効化する場合に、前記キャッシュメモリのデータとメインメモリに保持されているデータとに不整合が生じていても、その不整合を解消することができる。
【００３０】
また、請求項１２の発明は、
請求項１のキャッシュ回路であって、
前記キャッシュメモリ無効化回路は、前記キャッシュメモリに保持されたデータまたは命令コードが、メインメモリの所定のアドレス範囲と対応するデータまたは命令コードである場合に、キャッシュヒットの回数に応じて、前記キャッシュメモリに保持されたデータまたは命令コードを無効化するように構成されていることを特徴とする。
【００３１】
これにより、前記キャッシュメモリに保持されているデータがメインメモリの所定のアドレス範囲のデータと対応するデータである場合に無効化が行われ、例えば、プログラムで関数呼び出し時、または関数呼び出し元への復帰時にアクセスが行われるスタック領域は、常にキャッシュヒットさせるようにし、スタック領域以外でデータが保持されている領域に対しては、メインメモリへのアクセスをおこさせるようにしてバスの動作検証を行うことが可能になる。
【発明の効果】
【００３２】
本発明によれば、メインメモリの種類やプログラムの動作にかかわらず、キャッシュヒット率（命令キャッシュヒット率、またはデータキャッシュヒット率）を容易に制御することができ、例えば、メインメモリへのアクセスの減少を回避して、メインメモリへの命令アクセス、およびデータアクセスが定常的に行われる状態でのバスの動作検証を行うことが可能になる。
【発明を実施するための最良の形態】
【００３３】
以下、本発明の実施形態について図面を参照しながら説明する。
【００３４】
《発明の実施形態１》
例えばバスの動作の検証や評価が行われる場合に、ＣＰＵの命令コードが保持される命令コード用のキャッシュメモリ（命令キャッシュメモリ）についてのキャッシュヒット率を低く抑えるキャッシュ回路の例を説明する。
【００３５】
図１は、本発明の実施形態１に係るキャッシュ回路１００の構成を示すブロック図である。
【００３６】
キャッシュ回路１００は、図１に示すように、命令キャッシュ制御回路１０１、命令キャッシュヒットカウンタ１０２、命令メモリアクセスカウンタ１０３、および命令キャッシュヒット率算出／エントリ無効化制御回路１０４を備えて構成されている。
【００３７】
命令キャッシュ制御回路１０１は、命令アクセス信号Ｓ１０２（ＣＰＵ４００が命令コードにアクセスしていることを示す信号）が入力された場合に、ＣＰＵ４００が出力するアドレス信号Ｓ１０１（ＣＰＵ４００がアクセスするメインメモリのアドレスを示す信号）から、ＣＰＵ４００がアクセスした命令コードが、図示しない命令キャッシュメモリにあるかないか（すなわち、キャッシュヒットであるかキャッシュミスであるか）を判定するようになっている。
【００３８】
また、命令キャッシュ制御回路１０１は、キャッシュヒットである場合には、キャッシュヒットであることを示すキャッシュヒット信号Ｓ１０３を命令キャッシュヒットカウンタ１０２に出力するとともに、命令キャッシュメモリから読み出した命令コードをＣＰＵ４００に出力（図１の信号Ｓ１０４）し、キャッシュミスの場合には、図示しないバスを介してメインメモリにアクセスして読み出した命令コードをＣＰＵ４００に出力するとともに、命令キャッシュメモリに読み出した命令コードを書き込むようになっている。
【００３９】
また、命令キャッシュ制御回路１０１は、命令キャッシュヒット率算出／エントリ無効化制御回路１０４から命令キャッシュエントリ無効化信号Ｓ１０８（後述）が入力された場合に、命令キャッシュメモリのエントリの無効化処理を行うようになっている。
【００４０】
命令キャッシュヒットカウンタ１０２は、キャッシュヒット信号Ｓ１０３が命令キャッシュ制御回路１０１から入力された回数をカウントし、カウント結果（ヒット数Ｓ１０５）を命令キャッシュヒット率算出／エントリ無効化制御回路１０４に出力するようになっている。
【００４１】
命令メモリアクセスカウンタ１０３は、命令アクセス信号Ｓ１０２がＣＰＵ４００から入力された回数をカウントし、カウント結果（命令アクセス数Ｓ１０６）を命令キャッシュヒット率算出／エントリ無効化制御回路１０４に出力するようになっている。
【００４２】
命令キャッシュヒット率算出／エントリ無効化制御回路１０４は、命令アクセス数Ｓ１０６が所定数以上になった場合に、ヒット数Ｓ１０５の命令アクセス数Ｓ１０６に対する割合（命令キャッシュヒット率）を計算して記憶した後に、命令キャッシュヒットカウンタ１０２、および命令メモリアクセスカウンタ１０３をリセットし、さらに前記命令キャッシュヒット率が、キャッシュ回路１００の外部から入力された命令キャッシュ用エントリ無効化閾値Ｓ１０７を超えた場合は、命令キャッシュエントリ無効化信号Ｓ１０８を命令キャッシュ制御回路１０１に出力するようになっている。
【００４３】
ＣＰＵ４００は、キャッシュ回路１００を介して、命令キャッシュメモリ、およびメインメモリのうちの何れかから命令コードを読み込んで実行するようになっている。
【００４４】
上記のように構成されたキャッシュ回路１００では、通常の動作が行われる場合は、予め命令キャッシュ用エントリ無効化閾値Ｓ１０７として、命令キャッシュヒット率が１００％であることを示す値に設定される。これにより、命令キャッシュエントリ無効化信号Ｓ１０８は出力されなくなり、命令キャッシュメモリのエントリの無効化処理は行われない。
【００４５】
また、バスの動作の検証や評価が行われる際には、前述した通常の動作が行われる場合とは異なる値の命令キャッシュ用エントリ無効化閾値Ｓ１０７が予め命令キャッシュヒット率算出／エントリ無効化制御回路１０４に入力され、検証用のプログラムの実行がＣＰＵ４００に指示される。
【００４６】
検証用のプログラムの実行が開始され、命令アクセス数Ｓ１０６が所定数以上になるごとに、命令キャッシュヒット率算出／エントリ無効化制御回路１０４によって命令キャッシュヒット率が求められる。求められた命令キャッシュヒット率が命令キャッシュ用エントリ無効化閾値Ｓ１０７を超えると、命令キャッシュヒット率算出／エントリ無効化制御回路１０４から命令キャッシュエントリ無効化信号Ｓ１０８が命令キャッシュ制御回路１０１に出力され、命令キャッシュメモリに保持されている命令コードが無効化される。
【００４７】
命令キャッシュメモリに保持されている命令コードが無効化された場合に、ＣＰＵ４００によって、命令コードの読み込みが行われると、命令キャッシュ制御回路１０１は、図示しないバスを介してメインメモリにアクセスし、命令コードを読み出してＣＰＵ４００に出力する。
【００４８】
上記のように、本実施形態のキャッシュ回路によれば、命令キャッシュメモリについてのキャッシュヒット率が命令キャッシュ用エントリ無効化閾値を超えた場合に、命令キャッシュメモリに保持されている命令コードが無効化されるので、メインメモリへのアクセスの減少を回避することができ、命令アクセスにおけるキャッシュヒット率が低い状態でバスの動作検証を行うことが可能になる。
【００４９】
《発明の実施形態２》
ＣＰＵにアクセスされるデータが保持されるデータ用のキャッシュメモリ（データキャッシュメモリ）についてのキャッシュヒット率を低く抑えるキャッシュ回路の例を説明する。
【００５０】
なお、以下の実施形態において前記実施形態１等と同様の機能を有する構成要素については、同一の符号を付して説明を省略する。
【００５１】
図２は、本発明の実施形態２に係るキャッシュ回路２００の構成を示すブロック図である。
【００５２】
キャッシュ回路２００は、図２に示すように、データキャッシュ制御回路２０１、データキャッシュヒットカウンタ２０２、データメモリアクセスカウンタ２０３、データキャッシュヒット率算出／エントリ無効化制御回路２０４、およびアドレス記憶回路２０５を備えて構成されている。
【００５３】
データキャッシュ制御回路２０１は、データアクセス信号Ｓ２０４（ＣＰＵ５００がデータにアクセスしていることを示す信号）が入力された場合に、ＣＰＵ５００が出力するアドレス信号Ｓ１０１（ＣＰＵ５００がアクセスするメインメモリのアドレスを示す信号）に基づいて、ＣＰＵ５００が読み込んでいるデータが前記データキャッシュメモリにあるかないか（すなわちキャッシュヒットであるかキャッシュミスであるか）を判定するようになっている。
【００５４】
また、データキャッシュ制御回路２０１は、キャッシュヒットである場合には、キャッシュヒット信号Ｓ２０３をデータキャッシュヒットカウンタ２０２に出力するとともに、リード・ライト信号Ｓ２０２が読み出しであることを示していれば、データキャッシュメモリから読み出したデータ（図２の信号Ｓ２０９）をＣＰＵ５００に出力し、リード・ライト信号Ｓ２０２が書き込みであることを示していれば、ＣＰＵ５００が出力したデータＳ２１０をデータキャッシュメモリに書き込むようになっている。そして、キャッシュミスの場合には、リード・ライト信号Ｓ２０２が読み出しであることを示していれば、バスを経由してメインメモリから読み出したデータ（信号Ｓ２０９）をＣＰＵ５００に出力するとともに、データキャッシュメモリに前記データを書き込み、リード・ライト信号Ｓ２０２が書き込みであることを示していれば、データキャッシュメモリにデータＳ２１０を書き込むようになっている。
【００５５】
また、データキャッシュ制御回路２０１は、データキャッシュヒット率算出／エントリ無効化制御回路２０４からデータキャッシュエントリ無効化信号Ｓ２０８（後述）が入力され、かつ前記データキャッシュメモリに保持されているデータがメインメモリの所定のアドレス範囲（無効化対象領域）のデータと対応するものであって、データキャッシュメモリに保持されているデータとメインメモリに保持されているデータとが一致していない場合には、データキャッシュメモリに保持されているデータをメインメモリに書き戻した後にデータキャッシュメモリのエントリの無効化処理を行うようになっている。上記のような不一致は、ＣＰＵ５００が書き込みを行った場合に起こる。
【００５６】
また、前記無効化対象領域を示すメインメモリのアドレスは、本キャッシュ回路では、予めアドレス記憶回路２０５に保持され、データキャッシュ制御回路２０１がアドレス記憶回路２０５にアクセスするようになっている。
【００５７】
データキャッシュヒットカウンタ２０２は、キャッシュヒット信号Ｓ２０３が入力された回数をカウントし、カウント結果（ヒット数Ｓ２０５）をデータキャッシュヒット率算出／エントリ無効化制御回路２０４に出力するようになっている。
【００５８】
データメモリアクセスカウンタ２０３は、データアクセス信号Ｓ２０４がＣＰＵ５００から入力された回数をカウントし、カウント結果（データアクセス数Ｓ２０６）をデータキャッシュヒット率算出／エントリ無効化制御回路２０４に出力するようになっている。
【００５９】
データキャッシュヒット率算出／エントリ無効化制御回路２０４は、データキャッシュ用エントリ無効化閾値Ｓ２０７が入力され、データアクセス数Ｓ２０６が所定数以上になった場合に、ヒット数Ｓ２０５のデータアクセス数Ｓ２０６に対する割合（データキャッシュヒット率）を計算して記憶した後に、データキャッシュヒットカウンタ２０２、およびデータメモリアクセスカウンタ２０３をリセットし、さらに、前記データキャッシュヒット率が前記データキャッシュ用エントリ無効化閾値Ｓ２０７を超えた場合に、データキャッシュエントリ無効化信号Ｓ２０８をデータキャッシュ制御回路２０１に出力するようになっている。
【００６０】
ＣＰＵ５００は、データの入出力を行う場合に、アドレス信号Ｓ１０１、リード・ライト信号Ｓ２０２、およびデータアクセス信号Ｓ２０４をキャッシュ回路２００に出力するようになっている。
【００６１】
上記のように構成されたキャッシュ回路２００では、通常の動作が行われる場合は、データキャッシュ用エントリ無効化閾値Ｓ２０７として、データキャッシュヒット率が１００％であることを示す値に設定される。これにより、これにより、データキャッシュエントリ無効化信号Ｓ２０８は出力されなくなり、データキャッシュメモリのエントリの無効化処理は行われない。
【００６２】
また、バスの動作の検証や評価が行われる際には、前述した通常の動作が行われる場合とは異なる値のデータキャッシュ用エントリ無効化閾値Ｓ２０７が予めデータキャッシュヒット率算出／エントリ無効化制御回路２０４に入力され、さらに前記無効化対象領域として例えば検証用のプログラムで使用するデータが保持される領域を示すアドレスがアドレス記憶回路２０５に保持された後、検証用のプログラムの実行が指示される。
【００６３】
検証用のプログラムの実行が開始され、データアクセス数Ｓ２０６が所定数以上になるごとに、データキャッシュヒット率算出／エントリ無効化制御回路２０４によってデータキャッシュヒット率が求められる。求められたデータキャッシュヒット率がデータキャッシュ用エントリ無効化閾値Ｓ２０７を超えると、データキャッシュヒット率算出／エントリ無効化制御回路２０４からデータキャッシュエントリ無効化信号Ｓ２０８がデータキャッシュ制御回路２０１に出力される。
【００６４】
データキャッシュ制御回路２０１は、データキャッシュエントリ無効化信号Ｓ２０８が入力されると、データキャッシュメモリに保持されているデータが前記無効化対象アドレスに保持されているデータに対応するデータである場合には、次の処理を行う。
【００６５】
データキャッシュメモリに保持されているデータと、データキャッシュメモリに対応するメインメモリ内データとが一致していない場合は、データキャッシュメモリに保持されているデータをメインメモリに書き戻した後、データキャッシュメモリのエントリの無効化処理を行い、一致している場合には、データキャッシュメモリのエントリの無効化処理のみを行う。
【００６６】
データキャッシュメモリに保持されているデータが無効化された場合には、ＣＰＵ５００によってデータのリード動作が行われると、データキャッシュ制御回路２０１は、図示しないバスを介してメインメモリにアクセスし、ＣＰＵ５００に出力する。
【００６７】
上記のように、本キャッシュ回路によれば、データキャッシュについてのキャッシュヒット率がデータキャッシュ用エントリ無効化閾値を超えた場合に、データキャッシュメモリのデータが無効化されるので、メインメモリへのアクセスの減少を回避することができ、データアクセスにおけるキャッシュヒット率が低い状態でバスの動作検証を行うことが可能になる。
【００６８】
しかも、前記キャッシュヒット率が高くなった場合に、無効化処理を行うエントリを、ユーザが指定するメインメモリ上の所定のアドレスの範囲に限定することにより、例えば、プログラムで関数呼び出し時や関数呼び出し元への復帰時にデータアクセスが行われるスタック領域のデータは、常にキャッシュヒットさせるようにし、実際に検証用プログラムで利用するデータが保持された領域に対してのみ、メインメモリへのアクセスを起こさせるようにできるので、プログラム作成者が意図するアクセスが行われた場合のバスの動作検証を行うことができる。
【００６９】
《発明の実施形態３》
図３は、本発明の実施形態３におけるキャッシュ回路３００の構成を示すブロック図である。
【００７０】
キャッシュ回路３００は、図３に示すように、命令キャッシュ制御回路１０１、命令キャッシュヒットカウンタ１０２、命令メモリアクセスカウンタ１０３、データキャッシュ制御回路２０１、データキャッシュヒットカウンタ２０２、データメモリアクセスカウンタ２０３、アドレス記憶回路２０５、命令キャッシュヒット率算出／エントリ無効化制御回路３１４、およびデータキャッシュヒット率算出／エントリ無効化制御回路３２４を備えて構成されている。
【００７１】
命令キャッシュヒット率算出／エントリ無効化制御回路３１４は、キャッシュ回路１００の命令キャッシュヒット率算出／エントリ無効化制御回路１０４と比べ、命令キャッシュエントリ無効化信号Ｓ１０８を命令キャッシュ制御回路１０１に出力する条件が異なっている。
【００７２】
具体的には、命令キャッシュヒット率算出／エントリ無効化制御回路３１４は、前記命令キャッシュヒット率が前記命令キャッシュ用エントリ無効化閾値Ｓ１０７を超え、かつデータキャッシュヒット率算出／エントリ無効化制御回路３２４が算出したデータキャッシュヒット率（図３に示す信号Ｓ３０６としてデータキャッシュヒット率算出／エントリ無効化制御回路３２４から入力される）が所定の閾値（図３に示す信号Ｓ２０７としてデータキャッシュヒット率算出／エントリ無効化制御回路３２４に入力されるデータキャッシュ用エントリ無効化閾値Ｓ２０７と区別するため第２のデータキャッシュ用エントリ無効化閾値と呼ぶ）を超えた場合に、命令キャッシュエントリ無効化信号Ｓ１０８を命令キャッシュ制御回路１０１に出力するようになっている。なお、前記第２のデータキャッシュ用エントリ無効化閾値は、固定的に定められた値でもよいし、外部から入力されるようにしてもよい。
【００７３】
データキャッシュヒット率算出／エントリ無効化制御回路３２４は、キャッシュ回路２００のデータキャッシュヒット率算出／エントリ無効化制御回路２０４と比べ、データキャッシュエントリ無効化信号Ｓ２０８をデータキャッシュ制御回路２０１に出力する条件が異なっている。
【００７４】
具体的には、データキャッシュヒット率算出／エントリ無効化制御回路３２４は、前記データキャッシュヒット率が前記データキャッシュ用エントリ無効化閾値Ｓ２０７を超え、かつ命令キャッシュヒット率算出／エントリ無効化制御回路３１４が算出した命令キャッシュヒット率（図３に示す信号Ｓ３０５として命令キャッシュヒット率算出／エントリ無効化制御回路３１４から入力される）が所定の閾値（図３に示す信号Ｓ１０７として命令キャッシュヒット率算出／エントリ無効化制御回路３１４に入力される命令キャッシュ用エントリ無効化閾値Ｓ１０７と区別するため第２の命令キャッシュ用エントリ無効化閾値と呼ぶ）を超えた場合に、データキャッシュエントリ無効化信号Ｓ２０８をデータキャッシュ制御回路２０１に出力するようになっている。なお、前記第２の命令キャッシュ用エントリ無効化閾値は、固定的に定められた値でもよいし、外部から入力されるようにしてもよい。
【００７５】
ＣＰＵ６００は、プログラムを実行する際に、キャッシュ回路３００を介して、命令コードの読み込み、およびデータの読み込みと書き込みを行うようになっている。
【００７６】
上記のように構成されたキャッシュ回路３００では、通常の動作が行われる場合は、命令キャッシュ用エントリ無効化閾値Ｓ１０７、およびデータキャッシュ用エントリ無効化閾値Ｓ２０７がそれぞれキャッシュヒット率が１００％であることを示す値に予め設定される。これにより、命令キャッシュメモリ、およびデータキャッシュメモリのエントリの無効化処理は行われない。
【００７７】
また、バスの動作の検証や評価が行われる際に、予め命令キャッシュ用エントリ無効化閾値Ｓ１０７、およびデータキャッシュ用エントリ無効化閾値Ｓ２０７がそれぞれ命令キャッシュヒット率算出／エントリ無効化制御回路３１４、およびデータキャッシュヒット率算出／エントリ無効化制御回路３２４に入力され、さらに前記無効化対象領域として、例えば検証用のプログラムで使用するデータが保持されるアドレス領域を示す情報がアドレス記憶回路２０５に保持された後、ＣＰＵ６００に検証用のプログラムが実行が指示される。
【００７８】
検証用のプログラムの実行が開始され、命令アクセス数Ｓ１０６が所定数以上になるごとに、前記命令キャッシュヒット率が求められ、また、データアクセス数Ｓ２０６が所定数以上になるごとに、前記データキャッシュヒット率が求められる。
【００７９】
前記命令キャッシュヒット率が命令キャッシュ用エントリ無効化閾値Ｓ１０７を超え、かつ前記第２のデータキャッシュ用エントリ無効化閾値を超えると、命令キャッシュヒット率算出／エントリ無効化制御回路３１４から命令キャッシュエントリ無効化信号Ｓ１０８が命令キャッシュ制御回路１０１に出力され、命令キャッシュ制御回路１０１によって、命令キャッシュメモリに保持されている命令コードが無効化される。
【００８０】
また、データキャッシュヒット率がデータキャッシュ用エントリ無効化閾値Ｓ２０７を超え、かつ前記第２の命令キャッシュ用エントリ無効化閾値を超えた場合には、データキャッシュヒット率算出／エントリ無効化制御回路３２４からデータキャッシュエントリ無効化信号Ｓ２０８がデータキャッシュ制御回路２０１に出力される。データキャッシュ制御回路２０１は、データキャッシュメモリに保持されているデータが前記無効化対象アドレスに保持されているデータに対応するデータであれば、データキャッシュメモリに保持されているデータと、データキャッシュメモリと対応するメインメモリ内データとが一致していない場合には、データキャッシュメモリに保持されているデータをメインメモリに書き戻した後、データキャッシュメモリのエントリの無効化処理を行い、一致している場合には、データキャッシュメモリのエントリの無効化処理のみを行う。
【００８１】
命令キャッシュメモリやデータキャッシュメモリの無効化処理が行われると、ＣＰＵ６００による命令コードやデータの読み込みは、バスを介してメインメモリから行われる。
【００８２】
上記のように、本キャッシュ回路によれば、例えば、命令キャッシュメモリのキャッシュヒット率が高い状態でメインメモリへのデータアクセスを行わせることができ、メインメモリへのデータアクセスが連続的に行われる場合のバスの動作検証を行うことが可能になる。また、例えば、データキャッシュメモリのキャッシュヒット率が高い状態でメインメモリへの命令アクセスを起こすことができ、メインメモリへの命令アクセスが連続的に行われる場合のバスの動作検証を行うことも可能になる。
【００８３】
なお、上記の各実施形態では、キャッシュヒット率に基づいて無効化する例を説明したが、キャッシュヒットの回数が所定の閾値を超えた場合に無効化を行うように構成してもよい。
【００８４】
《発明の実施形態３の変形例》
図４は、発明の実施形態３の変形例に係るキャッシュ回路を示すブロック図である。実施形態３の変形例に係るキャッシュ回路は、図４に示すように、上記のキャッシュ回路３００に対して、プログラム暴走検出回路７０１が追加されて構成されている。
【００８５】
プログラム暴走検出回路７０１は、命令キャッシュヒット率（図４に示すように信号Ｓ３０５として入力されている）、およびデータキャッシュヒット率（図４に示すように信号Ｓ３０６として入力されている）に基づいて、実行されているプログラムが、ユーザの意図しない無限ループに陥っているかどうかを判定するようになっている。
【００８６】
具体的には、プログラム暴走検出回路７０１は、キャッシュヒット率（命令キャッシュヒット率、またはデータキャッシュヒット率）の高い状態が通常考えられないほどの長時間に渡って続いた場合に、命令キャッシュエントリ無効化信号Ｓ１０８、およびデータキャッシュエントリ無効化信号Ｓ２０８をそれぞれ、命令キャッシュ制御回路１０１、およびデータキャッシュ制御回路２０１に出力することによって、キャッシュヒット率を一旦低く制御する。そして、キャッシュヒット率を低くしても、すぐにキャッシュヒット率が高い状態に復帰し、さらにその状態が長時間続くようであれば、プログラム暴走検出回路７０１は、プログラムがユーザの意図しない無限ループに陥っていると判断して、信号Ｓ７０１を出力する。
【００８７】
例えば、プログラム暴走検出回路７０１が出力した信号Ｓ７０１により、ＣＰＵ６００に対する割り込みを発生するようにしておけば、ユーザの意図しないプログラムの暴走を検知して、システムを正常な状態に復帰させることが可能になる。
【００８８】
なお、上記の各実施形態や変形例では、キャッシュヒット率に基づいて無効化する例を説明したが、キャッシュヒットの回数が所定の閾値を超えた場合に無効化を行うように構成してもよい。
【００８９】
以上のように、上記の各実施形態や変形例のキャッシュ回路によれば、メインメモリの種類やプログラムの動作にかかわらず、キャッシュヒット率（命令キャッシュヒット率、またはデータキャッシュヒット率）を容易に制御することができる。
【００９０】
したがって、本発明のキャッシュ回路が用いられたシステムでは、メインメモリへのアクセスの減少を回避することができるので、例えばメインメモリへの命令アクセス、およびデータアクセスが定常的に行われる状態でのバスの動作検証を行うことが可能になる。
【００９１】
また、本発明のキャッシュ回路は、当該キャッシュ回路が用いられたシステムにおける電源回路等の規模の最適化に貢献できる。
【００９２】
キャッシュ回路が用いられたシステムでは、キャッシュメモリに対するキャッシュヒット率が小さい場合は、バスを介したメインメモリへのアクセスが増加するので、一般的には消費電力が増加する。そのため、このシステムに用いられる電源回路は、キャッシュヒット率が小さい場合の消費電力を考慮して設計する必要がある。
【００９３】
しかし、従来のキャッシュ回路が用いられたシステムでは、キャッシュヒット率を容易には小さく制御できない。そのため、キャッシュヒット率が小さい場合の正確な消費電力が判らず、システムの最大消費電力を正確に見積ることができない。したがって、従来のシステムでは、電源回路で供給できる電力のマージンを大きくとって設計する必要があり、電源回路等の規模が必要以上に大きくなって、余分なコストがかかってしまう可能性がある。
【００９４】
これに対して、本発明のキャッシュ回路が用いられたシステムは、キャッシュヒット率が小さい状態でシステムを動作させることが容易にできるので、そのシステムにおける消費電力を予め正確に見積りできる。それゆえ、本発明のキャッシュ回路が用いられたシステムは、電源回路等に必要以上のマージンを持たせて設計する必要がない。
【００９５】
また、本発明のキャッシュ回路は、実行するプログラムの切り替えの高速化に貢献できる。
【００９６】
あるプログラム（以下、第１のプログラムという）から、例えば高速応答が必要な別のプログラム（以下、第２のプログラムという）に、実行の対象が切り替わる場合には、従来のキャッシュ回路が用いられたシステムでは、第１のプログラムの終了後（図５のタイミングチャートに示す時刻ｔ１の後）に、データキャッシュメモリにおいて不要になった第１のプログラムのエントリ（ダーティなエントリ）の書き戻し動作（ライトバック動作）が行われる。そしてその後（図５に示す時刻ｔ２の後）に、第２のプログラムのためのデータキャッシュメモリのリフィル、および第２のプログラムの実行が開始される。
【００９７】
これに対して、本発明のキャッシュ回路が用いられたシステムでは、例えば、第１のプログラムの終了処理が行われている間などにキャッシュヒット率を低く制御することによって、図５に示すように予めデータキャッシュメモリのエントリの無効化を行えば、第１のプログラムが終了するまでに、第１のプログラムのダーティなエントリのライトバック動作を完了できる。したがって、第１のプログラムの終了したタイミング（図５の時刻ｔ１）で、第２のプログラムのためのデータキャッシュメモリのリフィル、および第２のプログラムの実行の開始が可能になる。すなわち、発明のキャッシュ回路が用いられたシステムは、先行的にデータキャッシュメモリのエントリを無効化することで、実行するプリグラムの切り替えをより高速に行うこと可能になる。
【産業上の利用可能性】
【００９８】
本発明にかかるキャッシュ回路は、メインメモリの種類やプログラムの動作にかかわらず、キャッシュヒット率（命令キャッシュヒット率、またはデータキャッシュヒット率）を容易に制御することができるという効果を有し、キャッシュメモリの制御を行うキャッシュ回路等として有用である。
【図面の簡単な説明】
【００９９】
【図１】本発明の実施形態１のキャッシュ回路の構成を示すブロック図である。
【図２】本発明の実施形態２のキャッシュ回路の構成を示すブロック図である。
【図３】本発明の実施形態３のキャッシュ回路の構成を示すブロック図である。
【図４】本発明の実施形態３の変形例に係るキャッシュ回路の構成を示すブロック図である。
【図５】新たなプログラムが起動される場合におけ動作を示すタイミングチャートである。
【符号の説明】
【０１００】
１００      キャッシュ回路
１０１      命令キャッシュ制御回路
１０２      命令キャッシュヒットカウンタ
１０３      命令メモリアクセスカウンタ
１０４      命令キャッシュヒット率算出／エントリ無効化制御回路
２００      キャッシュ回路
２０１      データキャッシュ制御回路
２０２      データキャッシュヒットカウンタ
２０３      データメモリアクセスカウンタ
２０４      データキャッシュヒット率算出／エントリ無効化制御回路
２０５      アドレス記憶回路
３００      キャッシュ回路
３１４      命令キャッシュヒット率算出／エントリ無効化制御回路
３２４      データキャッシュヒット率算出／エントリ無効化制御回路
４００      ＣＰＵ
５００      ＣＰＵ
６００      ＣＰＵ
７０１      プログラム暴走検出回路
【図１】
2006260525.tif 000003
【図２】
2006260525.tif 000004
【図３】
2006260525.tif 000005
【図４】
2006260525.tif 000006
【図５】
2006260525.tif 000007