(57)【要約】【課題】キャッシュエイリアスが発生しないようにする。【解決手段】キャッシュメモリシステム１は仮想アドレスに基づいてアクセス対象のキャッシュライン及び当該アクセス対象のキャッシュラインとキャッシュエイリアスの関係になり得るキャッシュラインの各々の仮想インデックスを取得する仮想インデックス取得部１３と、前記仮想アドレスをアドレス変換して物理ページの物理タグを取得する物理タグ取得部１５と、仮想インデックス取得部１３により取得される各々の仮想インデックスに基づいてタグアレイ１１ａから出力される各仮想インデックスに対応するキャッシュラインのタグ情報ＴＡＧ（ｉ）を物理タグ取得部１５により取得される物理タグＴＡＧと比較し、キャッシュヒットかキャッシュミスかを判定する比較部１６と、を備える。【選択図】図１
2008027040.tif 000002
【特許請求の範囲】
【請求項１】
仮想インデックスにより識別される複数のキャッシュラインを有し、前記キャッシュラインにデータが格納されているメインメモリの物理ブロックを含む物理ページを示す物理タグに一致するタグ情報を記憶するタグアレイ及び当該物理ブロックのデータを記憶するデータアレイを有するキャッシュメモリにＶＩＰＴ（Virtual Indexed Physical Tagged）方式でアクセスするキャッシュメモリシステムにおいて、
仮想アドレスに基づいてアクセス対象のキャッシュライン及び当該アクセス対象のキャッシュラインとキャッシュエイリアスの関係になり得るキャッシュラインの各々の仮想インデックスを取得する仮想インデックス取得手段と、
前記仮想アドレスの少なくとも一部を変換して物理ページの物理タグを取得する物理タグ取得手段と、
前記仮想インデックス取得手段により取得される各々の前記仮想インデックスに基づいて前記タグアレイから出力される各前記仮想インデックスに対応するキャッシュラインのタグ情報と前記物理タグ取得手段により取得される前記物理タグとを比較し、前記物理タグに一致する前記タグ情報があればキャッシュヒットとする比較手段と、
を備えたことを特徴とするキャッシュメモリシステム。
【請求項２】
前記比較手段による比較の結果、前記物理タグ情報に一致する前記タグ情報がなければ、前記メインメモリのデータを前記アクセス対象のキャッシュライン及び前記キャッシュエイリアスの関係になり得るキャッシュラインのうちデータが格納されていないキャッシュラインがあればその何れか１つにキャッシュフィルするキャッシュフィル手段
を更に備えたことを特徴とする請求項１記載のキャッシュメモリシステム。
【請求項３】
仮想インデックスにより識別される複数のキャッシュラインを有し、前記キャッシュラインにデータが格納されているメインメモリの物理ブロックを含む物理ページを示す物理タグに一致するタグ情報を記憶するタグアレイ及び当該物理ブロックのデータを記憶するデータアレイを有するキャッシュメモリにＶＩＰＴ（Virtual Indexed Physical Tagged）方式でアクセスするキャッシュメモリシステムにおいて、
仮想アドレスに基づいてアクセス対象のキャッシュライン及び当該アクセス対象のキャッシュラインとキャッシュエイリアスの関係になり得るキャッシュラインの各々の仮想インデックスを取得する仮想インデックス取得手段と、
前記仮想インデックス取得手段により取得される前記アクセス対象のキャッシュラインの前記仮想インデックスに基づいて前記タグアレイから出力される前記タグ情報と前記仮想インデックス取得手段により取得される前記キャッシュエイリアスの関係になり得るキャッシュラインの各々の前記仮想インデックスに基づいて前記タグアレイから出力される前記タグ情報とを比較することによってキャッシュエイリアスを検出する比較手段と、
を備えたことを特徴とするキャッシュメモリシステム。
【請求項４】
前記キャッシュメモリはライトスルーキャッシュであり、
前記比較手段によりキャッシュエイリアスが検出された場合には、前記アクセス対象のキャッシュライン及び当該アクセス対象のキャッシュラインとキャッシュエイリアスの関係にあったキャッシュラインを無効化する無効化手段と、
前記メインメモリのデータを前記無効化手段により無効化される前記キャッシュラインの何れか１つにキャッシュフィルするキャッシュフィル手段と、
を更に備えたことを特徴とする請求項３記載のキャッシュメモリシステム。
【請求項５】
前記キャッシュメモリはライトスルーキャッシュであり、
前記比較手段によりキャッシュエイリアスが検出された場合において、ライト操作であれば、前記アクセス対象のキャッシュラインとキャッシュエイリアスの関係にあったキャッシュラインを無効化する無効化手段と、
前記仮想アドレスの少なくとも一部を変換して物理ページの物理タグを取得する物理タグ取得手段と、
前記アクセス対象のキャッシュラインの前記タグ情報と前記物理タグ取得手段により取得される前記物理タグとを比較し、一致すればキャッシュヒットとし、一致しなければキャッシュミスとする物理タグ比較手段と、
を更に備えたことを特徴とする請求項３記載のキャッシュメモリシステム。
【請求項６】
前記キャッシュメモリはライトスルーキャッシュであり、
前記比較手段によりキャッシュエイリアスが検出された場合において、リード操作であれば、前記アクセス対象のキャッシュライン及び当該アクセス対象のキャッシュラインとキャッシュエイリアスの関係にあったキャッシュラインの１つを除き無効化する無効化手段と、
前記仮想アドレスの少なくとも一部を変換して物理ページの物理タグを取得する物理タグ取得手段と、
前記無効化手段により無効化されなかった前記キャッシュラインの前記タグ情報と前記物理タグ取得手段により取得される前記物理タグとを比較し、一致すればキャッシュヒットとし、一致しなければキャッシュミスとする物理タグ比較手段と、
を更に備えたことを特徴とする請求項３記載のキャッシュメモリシステム。
【請求項７】
仮想インデックスにより識別される複数のキャッシュラインを有し、前記キャッシュラインにデータが格納されているメインメモリの物理ブロックを含む物理ページを示す物理タグに一致するタグ情報を記憶するタグアレイ及び当該物理ブロックのデータを記憶するデータアレイを有するキャッシュメモリにＶＩＰＴ（Virtual Indexed Physical Tagged）方式でアクセスするキャッシュメモリシステムにおいて行われるキャッシュエイリアス回避方法であって、
仮想アドレスに基づいてアクセス対象のキャッシュライン及び当該アクセス対象のキャッシュラインとキャッシュエイリアスの関係になり得るキャッシュラインの各々の仮想インデックスを取得する仮想インデックス取得ステップと、
前記仮想アドレスの少なくとも一部を変換して物理ページの物理タグを取得する物理タグ取得ステップと、
前記仮想インデックス取得ステップにおいて取得された各々の前記仮想インデックスに基づいて前記タグアレイから出力される各前記仮想インデックスに対応するキャッシュラインのタグ情報と前記物理タグ取得ステップにおいて取得された前記物理タグとを比較し、前記物理タグに一致する前記タグ情報があればキャッシュヒットとし、前記物理タグに一致する前記タグ情報がなければキャッシュミスとする比較ステップと、
を有することを特徴とするキャッシュエイリアス回避方法。
【請求項８】
仮想インデックスにより識別される複数のキャッシュラインを有し、前記キャッシュラインにデータが格納されているメインメモリの物理ブロックを含む物理ページを示す物理タグに一致するタグ情報を記憶するタグアレイ及び当該物理ブロックのデータを記憶するデータアレイを有するキャッシュメモリにＶＩＰＴ（Virtual Indexed Physical Tagged）方式でアクセスするキャッシュメモリシステムにおいて行われるキャッシュエイリアス検出方法であって、
仮想アドレスに基づいてアクセス対象のキャッシュライン及び当該アクセス対象のキャッシュラインとキャッシュエイリアスの関係になり得るキャッシュラインの各々の仮想インデックスを取得する仮想インデックス取得ステップと、
前記仮想インデックス取得ステップにおいて取得された前記キャッシュエイリアスの関係になり得るキャッシュラインの各々の前記仮想インデックスに基づいて前記タグアレイから出力される各タグ情報と前記仮想インデックス取得ステップにおいて取得された前記アクセス対象のキャッシュラインの前記仮想インデックスに基づいて前記タグアレイから出力される前記タグ情報とを比較することによってキャッシュエイリアスを検出する比較ステップと、
を有することを特徴とするキャッシュエイリアス検出方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＶＩＰＴ（Virtual Indexed Physical Tagged）方式でメモリアクセスする技術に関する。
【背景技術】
【０００２】
現在、ダイレクトマップキャッシュにアクセスする方式として、ＶＩＰＴ方式がある。
ＶＩＰＴ方式は、仮想アドレスの仮想インデックスに基づいてキャッシュメモリのキャッシュラインにアクセスし、アクセスしたキャッシュラインのタグ情報（キャッシュラインのデータが格納されていたメインメモリの物理ページを示す情報、つまり、当該物理ページの物理タグに一致する情報）をタグアレイから読み出す。また、仮想アドレスの上位ビットをアドレス変換して物理アドレスの物理タグを得る。そして、タグアレイから読み出したタグ情報とアドレス変換により得られた物理タグとを比較して、キャッシュヒットかキャッシュミスかの判定を行う。
【０００３】
ところで、キャッシュメモリのキャッシュサイズがメインメモリの物理ページより大きい場合、いわゆるキャッシュエイリアス問題が発生する。以下、このキャッシュエイリアス問題について説明する。
図１０はダイレクトマップ型のキャッシュメモリにおいて物理ブロックがマッピングされるキャッシュラインを説明するための図である。但し、キャッシュサイズが物理ページの２ページ分であるとする。
【０００４】
この場合、例えば、メインメモリの図１０に示すラインｂｌｋ１にある物理ページｐａｇｅ１〜ｐａｇｅｍの物理ブロックがマッピングされる可能性があるキャッシュメモリのキャッシュラインはキャッシュラインｌｉｎｅ１−１，ｌｉｎｅ２−１である。また、ラインｂｌｋｎにある物理ページｐａｇｅ１〜ｐａｇｅｍの物理ブロックがマッピングされる可能性があるキャッシュメモリのキャッシュラインはキャッシュラインｌｉｎｅ１−ｎ，ｌｉｎｅ２−ｎである。
【０００５】
ある物理ブロックがマッピングされる可能性のある複数のキャッシュラインにおいて、当該複数のキャッシュラインのある一のキャッシュラインとキャッシュエイリアスの関係になり得るキャッシュラインは、当該複数のキャッシュラインの当該ある一のキャッシュラインを除くキャッシュラインである。例えば、キャッシュラインｌｉｎｅ１−１とキャッシュエイリアスの関係になり得るキャッシュラインはキャッシュラインｌｉｎｅ２−１であり、キャッシュラインｌｉｎｅ２−１とキャッシュエイリアスの関係になり得るキャッシュラインはキャッシュラインｌｉｎｅ１−１である。
【０００６】
図１１はＶＩＰＴ方式を説明するための図である。但し、物理ページの１ページサイズが４Ｋバイト、キャッシュメモリのメモリサイズが８Ｋバイト、キャッシュラインの１ラインサイズ及び物理ページの１物理ブロックサイズが１６バイト、及び仮想アドレスが３２ビットとする。
キャッシュサイズは物理ページの２ページ分であるので、例えば、１つの物理アドレスＰＡと２つの仮想アドレスＶＡ，ＶＡ’とが対応する。
【０００７】
１ラインサイズが１６バイトであるので、キャッシュライン内のワードを識別するためのオフセットは３〜０ビット桁の４ビットとなる。また、キャッシュメモリのメモリサイズが８Ｋバイトで１ラインサイズが１６バイトであるので、キャッシュメモリ内のキャッシュラインを識別するための仮想インデックスＶＩ，ＶＩ’は１２〜４ビット桁の９ビットとなる。
【０００８】
仮想アドレスＶＡ，ＶＡ’の３１〜１２ビット桁の２０ビットの仮想タグが物理アドレスＰＡの３１〜１２ビット桁の２０ビットに変換され、物理アドレスＰＡの３１〜１３ビット桁の１９ビットがメインメモリの物理ページを識別するための物理タグＴＡＧである。なお、物理アドレスＰＡの１２ビット桁は仮想アドレスＶＡ，ＶＡ’に対して同じ値をとる。
【０００９】
例えば、入力される仮想アドレスが仮想アドレスＶＡの場合、物理タグＴＡＧと仮想アドレスＶＡの仮想インデックスＶＩに対応するキャッシュラインのタグアレイに格納されているタグ情報とが比較され、一致していればキャッシュヒット、一致していなければキャッシュミスと判断される。
図１２はキャッシュエイリアスの問題を説明するための図である。
【００１０】
例えば、一のプロセスが仮想アドレスＶＡでメモリアクセスし、他のプロセスが仮想アドレスＶＡ’でメモリアクセスしたとする。この場合、図１２（ａ）に示すように、キャッシュメモリの仮想インデックスＶＩ，ＶＩ’に対応するタグアレイ及びデータアレイのキャッシュラインのエントリには、仮想アドレスＶＡ，ＶＡ’に対応した物理アドレスＰＡが含まれる物理ページＰ０を示すタグ情報及び仮想アドレスＶＡ，ＶＡ’に対応した物理アドレスＰＡが含まれる物理ページＰ０の物理ブロックのデータＤ１が夫々格納される。このように、２つのキャッシュラインに同じ物理ページの同じ物理ブロックのデータが格納される。
【００１１】
この状態において、一のプロセスが仮想アドレスＶＡでデータＤ２をメインメモリに書き込むとすると、図１２（ｂ）に示すように、キャッシュメモリのタグアレイ及びデータアレイの仮想インデックスＶＩに対応するキャッシュラインのエントリには、物理ページＰ０を示すタグ情報及びデータＤ２が夫々格納され、メインメモリにもデータＤ２が書き込まれる。しかしながら、仮想インデックスＶＩ’に対応するキャッシュラインのデータアレイには古いデータＤ１が格納されたままである。
【００１２】
このように、仮想インデックスＶＩ，ＶＩ’に対応する各キャッシュラインには同じ物理ページの同じ物理ブロックのデータが格納されるにもかかわらず、仮想インデックスＶＩ，ＶＩ’に対応する各キャッシュラインのデータは互いに異なり、キャッシュエイリアス問題が発生する。
このキャッシュエイリアス問題に対処する技術として、例えば、次のようなものがある。
【００１３】
アクセスするキャッシュラインの仮想アドレスの仮想タグをアドレス変換して物理タグを得る。物理タグをアクセスするキャッシュラインのタグ情報と比較するとともに、当該アクセスするキャッシュラインとキャッシュエイリアスの関係になり得るキャッシュラインのタグ情報とも比較する。そして、物理タグがアクセスするキャッシュラインのタグ情報と一致するとともに、キャッシュエイリアスの関係になり得るキャッシュラインのタグ情報とも一致する場合にキャッシュエイリアスを検出し、キャッシュメモリ全体をフラッシュする（例えば、特許文献１参照。）。
【特許文献１】特開平６−１３９１４６号公報
【発明の開示】
【発明が解決しようとする課題】
【００１４】
しかしながら、上記の技術では、仮想アドレスから物理アドレスへのアドレス変換が完了するまでキャッシュエイリアスの検出を行う処理を開始することができず、メモリアクセスの速度が低下するという問題がある。また、キャッシュエイリアスが検出されるとキャッシュメモリ全体をフラッシュするので、メインメモリにアクセスする回数が多くなってしまい、メモリアクセスの平均時間が長くなるという問題がある。
【００１５】
そこで、本発明は、同じ物理ページの同じ物理ブロックのデータがキャッシュメモリの２以上のキャッシュラインに格納されないようにしてキャッシュエイリアスの検出を行う必要がないキャッシュメモリシステム及びキャッシュエイリアス回避方法を提供することを目的とする。また、本発明は、仮想アドレスだけを使用してキャッシュエイリアスを検出することを可能にして上記問題を回避するキャッシュメモリシステム及びキャッシュエイリアス検出方法を提供することを目的とする。
【課題を解決するための手段】
【００１６】
上記目的を達成するために本発明のキャッシュメモリシステムは、仮想インデックスにより識別される複数のキャッシュラインを有し、前記キャッシュラインにデータが格納されているメインメモリの物理ブロックを含む物理ページを示す物理タグに一致するタグ情報を記憶するタグアレイ及び当該物理ブロックのデータを記憶するデータアレイを有するキャッシュメモリにＶＩＰＴ（Virtual Indexed Physical Tagged）方式でアクセスするキャッシュメモリシステムにおいて、仮想アドレスに基づいてアクセス対象のキャッシュライン及び当該アクセス対象のキャッシュラインとキャッシュエイリアスの関係になり得るキャッシュラインの各々の仮想インデックスを取得する仮想インデックス取得手段と、前記仮想アドレスの少なくとも一部を変換して物理ページの物理タグを取得する物理タグ取得手段と、前記仮想インデックス取得手段により取得される各々の前記仮想インデックスに基づいて前記タグアレイから出力される各前記仮想インデックスに対応するキャッシュラインのタグ情報と前記物理タグ取得手段により取得される前記物理タグとを比較し、前記物理タグに一致する前記タグ情報があればキャッシュヒットとする比較手段と、を備える。
【００１７】
本発明のキャッシュエイリアス回避方法は、仮想インデックスにより識別される複数のキャッシュラインを有し、前記キャッシュラインにデータが格納されているメインメモリの物理ブロックを含む物理ページを示す物理タグに一致するタグ情報を記憶するタグアレイ及び当該物理ブロックのデータを記憶するデータアレイを有するキャッシュメモリにＶＩＰＴ（Virtual Indexed Physical Tagged）方式でアクセスするキャッシュメモリシステムにおいて行われるキャッシュエイリアス回避方法であって、仮想アドレスに基づいてアクセス対象のキャッシュライン及び当該アクセス対象のキャッシュラインとキャッシュエイリアスの関係になり得るキャッシュラインの各々の仮想インデックスを取得する仮想インデックス取得ステップと、前記仮想アドレスの少なくとも一部を変換して物理ページの物理タグを取得する物理タグ取得ステップと、前記仮想インデックス取得ステップにおいて取得された各々の前記仮想インデックスに基づいて前記タグアレイから出力される各前記仮想インデックスに対応するキャッシュラインのタグ情報と前記物理タグ取得ステップにおいて取得された前記物理タグとを比較し、前記物理タグに一致する前記タグ情報があればキャッシュヒットとし、前記物理タグに一致する前記タグ情報がなければキャッシュミスとする比較ステップと、を有する。
【発明の効果】
【００１８】
上記キャッシュメモリシステム及びキャッシュエイリアス回避方法の夫々によれば、キャッシュヒットかキャッシュミスかの判定を、アクセス対象のキャッシュライン及び当該アクセス対象のキャッシュラインとキャッシュエイリアスの関係になり得るキャッシュラインの全てについて行う。このため、ある物理ページのある物理ブロックのデータが２つ以上のキャッシュラインに格納されることがなく、キャッシュエイリアス問題を回避することができる。
【００１９】
上記のキャッシュメモリシステムにおいて、前記比較手段による比較の結果、前記物理タグ情報に一致する前記タグ情報がなければ、前記メインメモリのデータを前記アクセス対象のキャッシュライン及び前記キャッシュエイリアスの関係になり得るキャッシュラインのうちデータが格納されていないキャッシュラインがあればその何れか１つにキャッシュフィルするキャッシュフィル手段を更に備えるようにしてもよい。
【００２０】
これによれば、キャッシュミスの場合に、アクセス対象のキャッシュライン及び当該アクセス対象のキャッシュラインとキャッシュエイリアスの関係になり得るキャッシュラインのうちデータが格納されていないキャッシュラインがあればその何れか１つにメインメモリのデータをフィルする。このため、キャッシュメモリに格納されている他の物理ページの物理ブロックのデータが上書きされる回数が減って、メモリアクセスの平均時間を短縮することが可能になる。
【００２１】
本発明のキャッシュメモリシステムは、仮想インデックスにより識別される複数のキャッシュラインを有し、前記キャッシュラインにデータが格納されているメインメモリの物理ブロックを含む物理ページを示す物理タグに一致するタグ情報を記憶するタグアレイ及び当該物理ブロックのデータを記憶するデータアレイを有するキャッシュメモリにＶＩＰＴ（Virtual Indexed Physical Tagged）方式でアクセスするキャッシュメモリシステムにおいて、仮想アドレスに基づいてアクセス対象のキャッシュライン及び当該アクセス対象のキャッシュラインとキャッシュエイリアスの関係になり得るキャッシュラインの各々の仮想インデックスを取得する仮想インデックス取得手段と、前記仮想インデックス取得手段により取得される前記アクセス対象のキャッシュラインの前記仮想インデックスに基づいて前記タグアレイから出力される前記タグ情報と前記仮想インデックス取得手段により取得される前記キャッシュエイリアスの関係になり得るキャッシュラインの各々の前記仮想インデックスに基づいて前記タグアレイから出力される前記タグ情報とを比較することによってキャッシュエイリアスを検出する比較手段と、を備える。
【００２２】
本発明のキャッシュエイリアス検出方法は、仮想インデックスにより識別される複数のキャッシュラインを有し、前記キャッシュラインにデータが格納されているメインメモリの物理ブロックを含む物理ページを示す物理タグに一致するタグ情報を記憶するタグアレイ及び当該物理ブロックのデータを記憶するデータアレイを有するキャッシュメモリにＶＩＰＴ（Virtual Indexed Physical Tagged）方式でアクセスするキャッシュメモリシステムにおいて行われるキャッシュエイリアス検出方法であって、仮想アドレスに基づいてアクセス対象のキャッシュライン及び当該アクセス対象のキャッシュラインとキャッシュエイリアスの関係になり得るキャッシュラインの各々の仮想インデックスを取得する仮想インデックス取得ステップと、前記仮想インデックス取得ステップにおいて取得された前記キャッシュエイリアスの関係になり得るキャッシュラインの各々の前記仮想インデックスに基づいて前記タグアレイから出力される各タグ情報と前記仮想インデックス取得ステップにおいて取得された前記アクセス対象のキャッシュラインの前記仮想インデックスに基づいて前記タグアレイから出力される前記タグ情報とを比較することによってキャッシュエイリアスを検出する比較ステップと、を有する。
【００２３】
上記キャッシュメモリシステム及びキャッシュエイリアス検出方法の夫々によれば、仮想アドレスをアドレス変換することなく得られるアクセス対象のキャッシュライン及び当該アクセス対象のキャッシュラインとキャッシュエイリアスの関係になり得るキャッシュラインの仮想インデックスを取得する。そして、取得したキャッシュエイリアスの関係になり得るキャッシュラインの各々の仮想インデックスに基づいてタグアレイから出力されるタグ情報と取得したアクセス対象のキャッシュラインの仮想インデックスに基づいてタグアレイから出力されるタグ情報とを比較することによってキャッシュエイリアスの検出を行う。このため、仮想アドレスから物理アドレスへのアドレス変換の完了を待たずに、キャッシュエイリアスの検出を開始することができ、メモリアクセスの低下を抑えながらキャッシュエイリアスの検出が可能になる。
【００２４】
上記のキャッシュメモリシステムにおいて、前記キャッシュメモリはライトスルーキャッシュであり、前記比較手段によりキャッシュエイリアスが検出された場合には、前記アクセス対象のキャッシュライン及び当該アクセス対象のキャッシュラインとキャッシュエイリアスの関係にあったキャッシュラインを無効化する無効化手段と、前記メインメモリのデータを前記無効化手段により無効化される前記キャッシュラインの何れか１つにキャッシュフィルするキャッシュフィル手段と、を更に備えるようにしてもよい。
【００２５】
これによれば、キャッシュエイリアスが検出された場合には、アクセス対象のキャッシュラインと当該アクセス対象のキャッシュラインとキャッシュエイリアスの関係にあったキャッシュラインとを無効化して、無効化された何れか１つのキャッシュラインにメインメモリのデータをフィルする。このため、以降のキャッシュエイリアスを回避することができる。
【００２６】
上記のキャッシュメモリシステムにおいて、前記キャッシュメモリはライトスルーキャッシュであり、前記比較手段によりキャッシュエイリアスが検出された場合において、ライト操作であれば、前記アクセス対象のキャッシュラインとキャッシュエイリアスの関係にあったキャッシュラインを無効化する無効化手段と、前記仮想アドレスの少なくとも一部を変換して物理ページの物理タグを取得する物理タグ取得手段と、前記アクセス対象のキャッシュラインの前記タグ情報と前記物理タグ取得手段により取得される前記物理タグとを比較し、一致すればキャッシュヒットとし、一致しなければキャッシュミスとする物理タグ比較手段と、を更に備えるようにしてもよい。
【００２７】
これによれば、キャッシュエイリアスが検出された場合には、アクセス対象のキャッシュラインとキャッシュエイリアスの関係にあったキャッシュラインを無効化して、アクセス対象のキャッシュラインにおいてキャッシュヒットかキャッシュミスかの判定を行う。このため、以降のキャッシュエイリアスを回避することができる。
上記のキャッシュメモリシステムにおいて、前記キャッシュメモリはライトスルーキャッシュであり、前記比較手段によりキャッシュエイリアスが検出された場合において、リード操作であれば、前記アクセス対象のキャッシュライン及び当該アクセス対象のキャッシュラインとキャッシュエイリアスの関係にあったキャッシュラインの１つを除き無効化する無効化手段と、前記仮想アドレスの少なくとも一部を変換して物理ページの物理タグを取得する物理タグ取得手段と、前記無効化手段により無効化されなかった前記キャッシュラインの前記タグ情報と前記物理タグ取得手段により取得される前記物理タグとを比較し、一致すればキャッシュヒットとし、一致しなければキャッシュミスとする物理タグ比較手段と、を更に備えるようにしてもよい。
【００２８】
これによれば、キャッシュエイリアスが検出された場合には、アクセス対象のキャッシュライン及び当該アクセス対象のキャッシュラインとキャッシュエイリアスの関係にあったキャッシュラインの１つを除き無効化して、無効化されなかったキャッシュラインにおいてキャッシュヒットかキャッシュミスかの判定を行う。このため、以降のキャッシュエイリアスを回避することができる。
【発明を実施するための最良の形態】
【００２９】
≪第１の実施の形態≫
以下、本発明の第１の実施の形態について図面を参照しつつ説明する。なお、本実施の形態及び後述する実施の形態ではダイレクトマップ型のキャッシュにＶＩＰＴ方式でアクセスし、キャッシュメモリのキャッシュサイズがメインメモリの物理ページのページサイズより大きい場合について説明する。
【００３０】
＜構成＞
本実施の形態のキャッシュメモリシステムのシステム構成について図１を参照しつつ説明する。図１はキャッシュメモリシステムのシステム構成図である。
キャッシュメモリシステム１は、キャッシュメモリ１１、メインメモリ１２、仮想インデックス取得部１３、デコーダ１４、物理タグ取得部１５、比較部１６及びキャッシュフィル部１７を備える。
【００３１】
キャッシュメモリ１１はタグアレイ１１ａ、選択回路１１ｂ及びデータアレイ１１ｃを有する。キャッシュメモリ１１では、デコードされた仮想アドレスに対応したキャッシュラインがアクセスされ、デコーダ１１ａ及びデータアレイ１１ｃからデータが取り出される。
データアレイ１１ｃの各々のキャッシュラインのエントリには、対応するキャッシュラインと例えば図１０を参照して説明した関係にある物理ブロックの何れかの物理ブロックのデータが格納される。
【００３２】
タグアレイ１１ａの各キャッシュラインのエントリには、対応するデータアレイ１１ｃのエントリのデータが格納されていた物理ブロックを含む物理ページを識別するためのタグ情報（当該物理ページの物理タグに一致する情報）が格納される。
選択回路１１ｂは、比較部１６からのヒット信号に応じてデコードされた仮想インデックスに対応したデータアレイ１１ｃのキャッシュラインから取り出されたデータＤａｔａ１を不図示のマイクロプロセッサへ出力する。
【００３３】
メインメモリ１２は、複数の物理ページからなり、各物理ページは複数の物理ブロックからなる。ある物理ページのある物理ブロックがマッピングされる可能性がある複数のキャッシュメモリ１１のキャッシュラインは予め決まっている。
仮想インデックス取得部１３は、不図示のマイクロプロセッサから入力される仮想アドレスＶＡＤに基づいてアクセス対象のキャッシュラインの仮想インデックスＶＩ（０）及び当該アクセス対象のキャッシュラインとキャッシュエイリアスの関係になり得るキャッシュラインの仮想インデックスＶＩ（１），ＶＩ（２），・・・を取得する。そして、仮想インデックス取得部１３は、取得した仮想インデックスＶＩ（ｉ）（ｉ＝０，１，２，・・・）をデコーダ１４へ出力し、仮想インデックスＶＩ（０）をキャッシュフィル部１７へ出力する。但し、仮想インデックス取得部１３は不図示のマイクロプロセッサから仮想アドレスＶＡＤが入力された時に仮想インデックスＶＩ（０）をデコーダ１４に出力し、比較部１６から不一致信号が入力された時にその度に仮想インデックスＶＩ（１），ＶＩ（２），・・・のうちの１つの未出力の仮想インデックスをデコーダ１４に出力する。
【００３４】
また、仮想インデックス取得部１３は、比較部１６から不一致信号が入力された時にアクセス対象のキャッシュラインの仮想インデックスＶＩ（０）及び当該アクセス対象のキャッシュラインとキャッシュエイリアスの関係になり得る全てのキャッシュラインの仮想インデックスＶＩ（１），ＶＩ（２），・・・をデコーダ１４に出力していればキャッシュミスとしてミス信号をキャッシュフィル部１７へ出力する。
【００３５】
デコーダ１４は、仮想インデックス取得部１３から入力される仮想インデックスＶＩ（ｉ）（ｉ＝０，１，２，・・・）をデコードする。このデコードされた仮想インデックスによりキャッシュメモリ１１のキャッシュラインにアクセスされる。これにより、タグアレイ１１ａから仮想インデックスＶＩ（ｉ）に対応したタグ情報ＴＡＧ（ｉ）が取り出され、取り出されたタグ情報ＴＡＧ（ｉ）が比較部１６へ出力される。
【００３６】
物理タグ取得部１５は、仮想アドレスＶＡＤの仮想タグをアドレス変換して物理タグＴＡＧを取得し、物理タグＴＡＧを比較部１６へ出力する。
比較部１６は、物理タグ取得部１５から入力される物理タグＴＡＧとキャッシュメモリ１１のタグアレイ１１ａから入力されるタグ情報ＴＡＧ（ｉ）とを比較する。比較部１６は、物理タグＴＡＧとタグ情報ＴＡＧ（ｉ）とが一致しなければ不一致信号を仮想インデックス取得部１３へ出力し、一致すればキャッシュヒットとしてヒット信号を選択回路１１ｂへ出力する。
【００３７】
キャッシュフィル部１７は仮想インデックス取得部１３からミス信号が入力されると、物理タグ取得部１５から入力される物理ＴＡＧと仮想インデックス取得部１３から入力される仮想インデックスＶＩ（０）とに基づいてメインメモリ１２にアクセスしてデータＤａｔａ２を取り出す。そして、キャッシュフィル部１７は、仮想インデックスＶＩ（０）に対応したキャッシュラインのタグアレイ１１ａ及びデータアレイ１１ｃのエントリの夫々に物理ＴＡＧ及びデータＤａｔａ２を格納する（フィル）。
【００３８】
（仮想インデックス取得部の構成）
図１の仮想インデックス取得部の構成について図２を参照しつつ説明する。図２は図１の仮想インデックス取得部の構成図の一例である。
ただし、物理ページの１ページサイズが４Ｋバイト、キャッシュメモリのメモリサイズが８Ｋバイト、キャッシュラインの１ラインサイズ及び物理ページの１物理ブロックサイズが１６バイト、及び仮想アドレスが３２ビットとする。
【００３９】
キャッシュサイズが物理ページの２ページ分であるので、アクセス対象のキャッシュラインとキャッシュエイリアスの関係になり得るキャッシュラインの数は１つである。
また、図１１の場合と同じく、仮想アドレスＶＡＤの１２〜４ビット桁の９ビットが仮想インデックスである。仮想アドレスＶＡＤの仮想インデックスＶＩ（０）に対応するキャッシュラインとキャッシュエイリアスの関係になり得るキャッシュラインの仮想インデックスＶＩ（１）は、仮想インデックスＶＩ（０）の最上位ビットを反転して得られるビット列である。
【００４０】
仮想インデックス取得部１３は、仮想アドレス分離部１３ａ、反転器１３ｂ、選択器１３ｃ及びカウンタ１３ｄを有する。
仮想アドレス分離部１３ａは、仮想アドレスＶＡＤ[３１：０]の１１〜４ビット桁の仮想アドレスＶＡＤ[１１：４]をデコーダ１４に出力し、その１２ビット桁の仮想アドレスＶＡＤ[１２]を反転器１３ｂ及び選択器１３ｃに出力する。
【００４１】
反転器１３ｂは、仮想アドレス分離部１３ａから入力される仮想アドレスＶＡＤ[１２]の値を反転し、反転した反転仮想アドレス／ＶＡＤ[１２]を選択器１３ｃに出力する。例えば、仮想アドレスＶＡＤ[１２]の値が１であれば反転仮想アドレス／ＶＡＤ[１２]の値は０となる。
選択器１３ｃは、仮想アドレス取得部１３に仮想アドレスＶＡＤ[１２]の入力時において仮想アドレス分離部１３ａからの入力である仮想アドレスＶＡＤ[１２]を選択してデコーダ１４に出力する。これにより、デコーダ１４には仮想アドレスＶＡＤ[３１：０]の仮想インデックスＶＩ（０）（ＶＡＤ[１２：４]）が入力されることになる。
【００４２】
選択器１３ｃは、カウンタ１３ｄからの切り替え信号が入力されると、反転器１３ｂからの入力である反転仮想アドレス／ＶＡＤ[１２]を選択してデコーダ１４に出力する。これにより、デコーダ１４には仮想インデックスＶＩ（０）に対応するキャッシュラインとキャッシュエイリアスの関係になり得るキャッシュラインに対応した仮想インデックスＶＩ（１）が入力されることになる。
【００４３】
カウンタ１３ｄは、仮想アドレスＶＡＤ[３１：０]の入力時に０にリセットされ、不一致信号の数をカウントする。カウンタ１３ｄは、キャッシュエイリアスの関係になり得るキャッシュラインの数が１つであるので、不一致信号が入力されてカウントアップされたカウンタ値が１であれば選択器１３ｃへ切り替え信号を出力し、当該カウンタ値が１を超えていればキャッシュミスとしてミス信号をキャッシュフィル部１７へ出力する。
【００４４】
なお、キャッシュサイズが物理ページの４ページ分である場合には、仮想インデックスの上位２ビットのビット値の組み合わせで得られる仮想インデックスのうちアクセス対象のキャッシュラインの仮想インデックスを除く各仮想インデックスがアクセス対象のキャッシュラインとキャッシュエイリアスの関係になり得るキャッシュラインの仮想インデックスである。この場合には、反転器の数を２つ用意し、カウンタ値が３以下であれば出力の切り替えを行う。但し、アクセス対象のキャッシュラインとキャッシュエイリアスの関係になり得るキャッシュラインの仮想インデックスの数は３つである。
【００４５】
このように、キャッシュエイリアスの関係になり得るキャッシュラインの仮想インデックスは、キャッシュサイズと物理ページのページサイズとで決まるアクセス対象の仮想インデックスの上位何ビットのビット値を切り替えていくことにより得られる。
＜動作＞
図１のキャッシュメモリシステムの動作について図３を参照しつつ説明する。図３は図１のキャッシュメモリシステムの動作のフローチャートである。
【００４６】
仮想インデックス取得部１３及び物理タグ取得部１５に不図示のマイクロプロセッサから仮想アドレスＶＡＤが入力される（ステップＳ１０１）。物理タグ取得部１５は仮想アドレスＶＡＤに基づいて物理タグＴＡＧを取得する（ステップＳ１０２）。仮想インデックス取得部１３は、カウンタ値ｉを０にセットする（ステップＳ１０３）。
仮想インデックス取得部１３は、デコーダ１４へ出力する仮想インデックスとして仮想インデックスＶＩ（ｉ）を選択し、選択した仮想インデックスＶＩ（ｉ）をデコーダ１４へ出力する（ステップＳ１０４）。
【００４７】
仮想インデックスＶＩ（ｉ）はデコーダ１４によってデコードされ、仮想インデックスＶＩ（ｉ）に対応したキャッシュラインがアクセスされる。これにより、タグアレイ１１ａから仮想インデックスＶＩ（ｉ）に対応したタグ情報ＴＡＧ（ｉ）が取り出され、取り出されたタグ情報ＴＡＧ（ｉ）が比較部１６へ出力される（ステップＳ１０５）。
比較部１６は、タグ情報ＴＡＧ（ｉ）と物理タグＴＡＧとを比較する（ステップＳ１０６）。
【００４８】
比較の結果、タグ情報ＴＡＧ（ｉ）が物理タグＴＡＧと一致していれば（Ｓ１０６：ＹＥＳ）、比較部１６はキャッシュヒットとしてヒット信号を選択回路１１ｂへ出力する。これにより、選択回路１１ｂは仮想インデックスＶＩ（ｉ）に対応したキャッシュラインのデータを不図示のマイクロプロセッサへ出力する（ステップＳ１０７）。
比較の結果、タグ情報ＴＡＧ（ｉ）が物理タグＴＡＧと一致していなければ（Ｓ１０６：ＮＯ）、比較部１６は仮想インデックス取得部１３に不一致信号を出力し、仮想インデックス取得部１３はカウンタ値ｉを１カウントアップする（ステップＳ１０８）。
【００４９】
仮想インデックス取得部１３はカウントアップ後のカウンタ値ｉが定数Ｎより大きいかを判定する（ステップＳ１０９）。但し、定数Ｎは物理ページのページサイズとキャッシュメモリのキャッシュサイズとで決まり、例えば、キャッシュサイズが物理ページの２ページ分であれば定数Ｎは１であり、キャッシュサイズが物理ページの４ページ分であれば定数Ｎは３である。
【００５０】
カウンタ値ｉが定数Ｎより大きくなければ（Ｓ１０９：ＮＯ）、キャッシュヒットかキャッシュミスかの判定対象となっていないキャッシュエイリアスの関係になり得るキャッシュラインに対して判定処理を行うために、ステップＳ１０４以降の処理が行われる。
カウンタ値ｉが定数Ｎより大きければ（Ｓ１０９：ＹＥＳ）、アクセス対象のキャッシュライン及び当該アクセス対象のキャッシュラインとキャッシュエイリアスの関係になり得るキャッシュラインの全てのタグ情報ＴＡＧ（ｉ）（ｉ＝０，１，・・・，Ｎ）が物理タグＴＡＧと一致しなかったので、仮想インデックス取得部１３はキャッシュミスとしてミス信号をキャッシュフィル部１７へ出力する（ステップＳ１１０）。
【００５１】
キャッシュフィル部１７はメインメモリ１２のデータをキャッシュメモリ１１の仮想インデックスＶＩ（０）に対応したキャッシュラインにフィルする（ステップＳ１１１）。
≪第２の実施の形態≫
以下、本発明の第２の実施の形態について図面を参照しつつ説明する。但し、第１の実施の形態は同じ物理ページの同じ物理ブロックがキャッシュメモリの２つ以上のキャッシュラインに同時に格納されないようにしてキャッシュエイリアスを回避するものであるのに対して、第２の実施の形態は同じ物理ページの同じ物理ブロックのデータがキャッシュメモリの２つ以上のキャッシュラインに格納されて生じるキャッシュエイリアスを検出するものである。
【００５２】
＜構成＞
本実施の形態のキャッシュメモリシステムのシステム構成について図４を参照しつつ説明する。図４はキャッシュメモリシステムのシステム構成図である。なお、第２の実施の形態において、第１の実施の形態と同じ機能を有する構成には同じ符号を付し、その説明が適用できるため説明を省略する。
【００５３】
キャッシュシステム１ａは、キャッシュメモリ３１、メインメモリ１２、仮想インデックス取得部３２、デコーダ１４、物理タグ取得部１５、第１比較部３３、第２比較部３４及びキャッシュフィル部３５を備える。
キャッシュメモリ３１はタグアレイ３１ａ、選択回路１１ｂ、データアレイ１１ｃを有する。キャッシュメモリ３１では、デコードされた仮想アドレスに対応したキャッシュラインがアクセスされ、デコーダ３１ａ及びデータアレイ３１ｃからデータが取り出される。
【００５４】
タグアレイ３１ａから出力されるアクセス対象のキャッシュラインのタグ情報ＴＡＧ（０）は第１比較部３３及び第２比較部３４へ出力される。また、タグアレイ３１ａから出力されるアクセス対象のキャッシュラインとキャッシュエイリアスの関係になり得るキャッシュラインのタグ情報ＴＡＧ（ｉ）（ｉ＝１，２，・・・）は第１比較部３３へ出力される。
【００５５】
仮想インデックス取得部３２は、不図示のマイクロプロセッサから入力される仮想アドレスＶＡＤに基づいてアクセス対象のキャッシュラインの仮想インデックスＶＩ（０）及び当該アクセス対象のキャッシュラインとキャッシュエイリアスの関係になり得るキャッシュラインの仮想インデックスＶＩ（１），ＶＩ（２），・・・を取得する。そして、仮想インデックス取得部３２は、取得した仮想インデックスＶＩ（ｉ）（ｉ＝０，１，２，・・・）をデコーダ１４へ出力し、仮想インデックスＶＩ（０）をキャッシュフィル部３５へ出力する。但し、仮想インデックス取得部３２は不図示のマイクロプロセッサから仮想アドレスＶＡＤが入力された時に仮想インデックスＶＩ（０）と仮想インデックスＶＩ（１）を順次デコーダ１４へ出力し、第１比較部３３から不一致信号が入力された時にその度に仮想インデックスＶＩ（２），ＶＩ（３），・・・のうちの１つの未出力の仮想インデックスをデコーダ１４に出力する。
【００５６】
また、仮想インデックス取得部３２は、第１比較部３３から不一致信号が入力された時にアクセス対象のキャッシュラインとキャッシュエイリアスの関係になり得る全てのキャッシュラインの仮想インデックスＶＩ（１），ＶＩ（２），・・・をデコーダ１４に出力していればヒットミス判定信号を第２比較部３４に出力する。
第１比較部３３は、アクセス対象のキャッシュラインのタグ情報ＴＡＧ（０）と、当該アクセス対象のキャッシュラインとキャッシュエイリアスの関係になり得るキャッシュラインのタグ情報ＴＡＧ（ｉ）（ｉ＝１，２，・・・）とを比較する。第１比較部３３は、タグ情報ＴＡＧ（０）とタグ情報ＴＡＧ（ｉ）とが一致していればキャッシュエイリアスを検出したとして不図示のマイクロプロセッサにエイリアス検出信号を出力し、一致していなければ不一致信号を仮想インデックス取得部３２へ出力する。
【００５７】
第２比較部３４は、仮想インデックス取得部３２からヒットミス判定信号が入力されると、物理タグ取得部１５から入力される物理タグＴＡＧとタグアレイ３１ａから入力されるタグ情報ＴＡＧ（０）とを比較する。そして、第２比較部３４は、物理タグＴＡＧとタグ情報ＴＡＧ（０）とが一致していなければキャッシュミスとしてミス信号をキャッシュフィル部３５へ出力し、一致していればキャッシュヒットとしてヒット信号を選択回路１１ｂへヒット信号を出力する。
【００５８】
キャッシュフィル部３５は、第２比較部３４からミス信号が入力されると、キャッシュフィル部１７と同じ処理を行って、仮想インデックスＶＩ（０）に対応したキャッシュラインにデータを格納する（フィル）。
＜動作＞
図４のキャッシュメモリシステムの動作について図５を参照しつつ説明する。図５は図４のキャッシュメモリシステムの動作のフローチャートである。
【００５９】
仮想インデックス取得部３２及び物理タグ取得部１５に不図示のマイクロプロセッサから仮想アドレスＶＡＤが入力される（ステップＳ２０１）。物理タグ取得部１５は仮想アドレスＶＡＤに基づいて物理タグＴＡＧを取得する（ステップＳ２０２）。仮想インデックス取得部３２は、デコーダ１４へ出力する仮想インデックスとしてアクセス対象のキャッシュラインの仮想インデックスＶＩ（０）を選択し、選択した仮想インデックスＶＩ（０）をデコーダ１４へ出力する（ステップＳ２０３）。
【００６０】
仮想インデックスＶＩ（０）はデコーダ１４によってデコードされ、仮想インデックスＶＩ（０）に対応したキャッシュラインがアクセスされる。これにより、タグアレイ３１ａから仮想インデックスＶＩ（０）に対応したタグ情報ＴＡＧ（０）が取り出され、タグ情報ＴＡＧ（０）が第１比較部３３及び第２比較部３４へ出力される（ステップＳ２０４）。
【００６１】
仮想インデックス取得部３２は、カウンタ値ｉを１にセットする（ステップＳ２０５）。
仮想インデックス取得部３２は、デコーダ１４へ出力する仮想インデックスとしてアクセス対象のキャッシュラインとキャッシュエイリアスの関係になり得るキャッシュラインの仮想インデックスＶＩ（ｉ）を選択し、選択した仮想インデックスＶＩ（ｉ）をデコーダ１４へ出力する（ステップＳ２０６）。
【００６２】
仮想インデックスＶＩ（ｉ）はデコーダ１４によってデコードされ、仮想インデックスＶＩ（ｉ）に対応したキャッシュラインがアクセスされる。これにより、タグアレイ３１ａから仮想インデックスＶＩ（ｉ）に対応したタグ情報ＴＡＧ（ｉ）が取り出され、タグ情報ＴＡＧ（ｉ）が第１比較部３３へ出力される（ステップＳ２０７）。
第１比較部３３は、タグ情報ＴＡＧ（０）とタグ情報ＴＡＧ（ｉ）とを比較する（ステップＳ２０８）。
【００６３】
比較の結果、タグ情報ＴＡＧ（ｉ）がタグ情報ＴＡＧ（０）と一致していれば（Ｓ２０８：ＹＥＳ）、第１比較部３３はキャッシュエイリアスを検出したとしてエイリアス検出信号を不図示のマイクロプロセッサに出力する（ステップＳ２０９）。
比較の結果、タグ情報ＴＡＧ（ｉ）がタグ情報ＴＡＧ（０）と一致していなければ（Ｓ２０８：ＮＯ）、第１比較部３３は仮想インデックス取得部３２に不一致信号を出力し、仮想インデックス取得部３２はカウンタ値ｉを１カウントアップする（ステップＳ２１０）。
【００６４】
仮想インデックス取得部３２はカウントアップ後のカウンタ値ｉが定数Ｎより大きいかを判定する（ステップＳ２１１）。なお、定数Ｎは第1の実施の形態と同じようにして決められる。
カウンタ値ｉが定数Ｎより大きくなければ（Ｓ２１１：ＮＯ）、キャッシュエイリアスの判定対象となっていないキャッシュエイリアスの関係になり得るキャッシュラインに対して判定処理を行うために、ステップＳ２０６以降の処理が行われる。
【００６５】
カウンタ値ｉが定数Ｎより大きければ（Ｓ２１１：ＹＥＳ）、アクセス対象のキャッシュラインとキャッシュエイリアスの関係になり得る全てのキャッシュラインにおいてキャッシュエイリアスが検出されなかったので、仮想インデックス取得部３２は第２比較部３４へヒットミス判定信号を出力する。第２比較部３４はヒットミス判定信号が入力されると、物理タグＴＡＧとタグ情報ＴＡＧ（０）とを比較する（ステップＳ２１２）。
【００６６】
比較の結果、タグ情報ＴＡＧ（０）が物理タグＴＡＧに一致していれば（Ｓ２１２：ＹＥＳ）、第２比較部３４はキャッシュヒットとしてヒット信号を選択回路１１ｂへ出力する。これにより、選択回路１１ｂは仮想インデックスＶＩ（０）に対応したキャッシュラインのデータを不図示のマイクロプロセッサへ出力する（ステップＳ２１３）。なお、仮想インデックスＶＩ（０）に対応したデータをマイクロプロセッサに出力するために、再度、仮想インデックスＶＩ（０）をデコードし、デコードされた仮想インデックスを基にキャッシュメモリ３１にアクセスする動作が行われる。
【００６７】
比較の結果、タグ情報ＴＡＧ（０）が物理タグに一致していなければ（Ｓ２１２：ＮＯ）、第２比較部３４はキャッシュミスとしてミス信号をキャッシュフィル部３５へ出力する（ステップＳ２１４）。そして、キャッシュフィル部３５はメインメモリ１２のデータをキャッシュメモリ１１の仮想インデックスＶＩ（０）に対応したキャッシュラインにフィルする（ステップＳ２１５）。
【００６８】
≪第３の実施の形態≫
以下、本発明の第３の実施の形態について図面を参照しつつ説明する。但し、第３の実施の形態は第２の実施の形態のキャッシュメモリシステムにキャッシュエイリアス検出時にキャッシュエイリアスの関係にあったキャッシュラインを無効化する機能を付加したものである。なお、本実施の形態のキャッシュメモリは、ライトスルーキャッシュメモリとする。
【００６９】
＜構成＞
本実施の形態のキャッシュメモリシステムのシステム構成について図６を参照しつつ説明する。図６はキャッシュメモリシステムのシステム構成図である。なお、第３の実施の形態において、第１及び第２の実施の形態と同じ機能を有する構成には同じ符号を付し、その説明が適用できるため説明を省略する。
【００７０】
キャッシュシステム１ｂは、キャッシュメモリ３１、メインメモリ１２、仮想インデックス取得部５１、デコーダ１４、物理タグ取得部１５、第１比較部５２、第２比較部３４、無効化部５３及びキャッシュフィル部５４を備える。
仮想インデックス取得部５１は、不図示のマイクロプロセッサから入力される仮想アドレスＶＡＤに基づいてアクセス対象のキャッシュラインの仮想インデックスＶＩ（０）及び当該アクセス対象のキャッシュラインとキャッシュエイリアスの関係になり得るキャッシュラインの仮想インデックスＶＩ（１），ＶＩ（２），・・・を取得する。そして、仮想インデックス取得部５１は、取得した仮想インデックスＶＩ（ｉ）（ｉ＝０，１，２，・・・）をデコーダ１４へ出力し、仮想インデックスＶＩ（０）をキャッシュフィル部５４へ出力する。但し、仮想インデックス取得部５１は不図示のマイクロプロセッサから仮想アドレスＶＡＤが入力された時に仮想インデックスＶＩ（０）と仮想インデックスＶＩ（１）を順次デコーダ１４へ出力し、第１比較部５２からカウント信号が入力された時にその度に仮想インデックスＶＩ（２），ＶＩ（３），・・・のうちの１つの未出力の仮想インデックスをデコーダ１４に出力する。
【００７１】
また、仮想インデックス取得部５１は、第１比較部５２からカウント信号が入力された時にアクセス対象のキャッシュラインとキャッシュエイリアスの関係になり得る全てのキャッシュラインの仮想インデックスＶＩ（１），ＶＩ（２），・・・をデコーダ１４に出力していればヒットミス判定信号を第２比較部３４に出力し、又は、第２フィル開始信号をキャッシュフィル部５４に出力する。なお、仮想インデックス取得部５１は第１比較部５２から入力されたカウント信号に無効化したことを示す情報が一度も含まれていなければヒットミス判定信号を出力し、一度でも含まれていれば代２フィル開始信号を出力する。
【００７２】
第１比較部５２は、アクセス対象のキャッシュラインのタグ情報ＴＡＧ（０）と、当該アクセス対象のキャッシュラインとエイリアスの関係になり得るキャッシュラインのタグ情報ＴＡＧ（ｉ）（ｉ＝１，２，・・・）とを比較する。第１比較部５２はタグ情報ＴＡＧ（０）とタグ情報ＴＡＧ（ｉ）とが一致していれば無効化部５３に無効化信号を出力する。また、第１比較部５２は、タグ情報ＴＡＧ（０）とタグ情報ＴＡＧ（ｉ）とが一致していれば無効化した情報を含むカウント信号を、タグ情報ＴＡＧ（０）とタグ情報ＴＡＧ（ｉ）とが一致していなければ無効化した情報を含まないカウント信号を仮想インデックス取得部５１に出力する。
【００７３】
無効化部５３は、第１比較部５２から無効化信号が入力されると、アクセス対象のキャッシュライン及び当該アクセス対象のキャッシュラインとキャッシュエイリアスの関係にあったキャッシュラインを無効化し、第１フィル開始信号をキャッシュフィル部５４に出力する。但し、無効化は無効化するキャッシュラインのタグ情報を当該キャッシュラインが無効であることを示す予め決められた値（メインメモリの何れの物理ページの物理タグとも一致しない値）を格納することにより行われる。
【００７４】
キャッシュフィル部５４は、ミス信号が入力されると、又は、第１フィル開始信号及び第２フィル開始信号の双方が入力されると、キャッシュフィル部１７と同じ処理を行って、仮想インデックスＶＩ（０）に対応したキャッシュラインにデータを格納する（フィル）。
＜動作＞
図６のキャッシュメモリシステムの動作について図７を参照しつつ説明する。図７は図６のキャッシュメモリシステムの動作のフローチャートである。
【００７５】
仮想インデックス取得部５１及び物理タグ取得部１５に不図示のマイクロプロセッサから仮想アドレスＶＡＤが入力される（ステップＳ３０１）。物理タグ取得部１５は仮想アドレスＶＡＤに基づいて物理タグＴＡＧを取得する（ステップＳ３０２）。仮想インデックス取得部５１は、デコーダ１４へ出力する仮想インデックスとしてアクセス対象のキャッシュラインの仮想インデックスＶＩ（０）を選択し、選択した仮想インデックスＶＩ（０）をデコーダ１４へ出力する（ステップＳ３０３）。
【００７６】
仮想インデックスＶＩ（０）はデコーダ１４によってデコードされ、仮想インデックスＶＩ（０）に対応したキャッシュラインがアクセスされる。これにより、タグアレイ３１ａから仮想インデックスＶＩ（０）に対応したタグ情報ＴＡＧ（０）が取り出され、タグ情報ＴＡＧ（０）が第１比較部５２及び第２比較部３４へ出力される（ステップＳ３０４）。
【００７７】
仮想インデックス取得部５１は、カウンタ値ｉを１にセットする（ステップＳ３０５）。
仮想インデックス取得部５１は、デコーダ１４へ出力する仮想インデックスとしてアクセス対象のキャッシュラインとキャッシュエイリアスの関係になり得る仮想インデックスＶＩ（ｉ）を選択し、選択した仮想インデックスＶＩ（ｉ）をデコーダ１４へ出力する（ステップＳ３０６）。
【００７８】
仮想インデックスＶＩ（ｉ）はデコーダ１４によってデコードされ、仮想インデックスＶＩ（ｉ）に対応したキャッシュラインがアクセスされる。これにより、タグアレイ３１ａから仮想インデックスＶＩ（ｉ）に対応したタグ情報ＴＡＧ（ｉ）が取り出され、タグ情報ＴＡＧ（ｉ）が第１比較部５２へ出力される（ステップＳ３０７）。
第１比較部５２は、タグ情報ＴＡＧ（０）とタグ情報ＴＡＧ（ｉ）とを比較する（ステップＳ３０８）。
【００７９】
ステップＳ３０８における比較の結果、タグ情報ＴＡＧ（ｉ）がタグ情報ＴＡＧ（０）と一致していれば（Ｓ３０８：ＹＥＳ）、第１比較部５２はキャッシュエイリアスを検出したとして無効化信号を無効化部５３に出力するとともに、カウント信号を仮想インデックス取得部５１に出力する。無効化部５３は、仮想インデックスＶＩ（０）に対応したキャッシュラインを無効化し、第１フィル開始信号をキャッシュフィル部５４に出力する（ステップＳ３０９）。無効化部５３は、仮想インデックスＶＩ（ｉ）に対応したキャッシュラインを無効化する（ステップＳ３１０）。
【００８０】
仮想インデックス取得部５１は、カウント信号が入力されると、カウンタ値ｉを１カウントアップする（ステップＳ３１１）。仮想インデックス取得部５１はカウントアップ後のカウンタ値ｉが定数Ｎより大きいかを判定する（ステップＳ３１２）。なお、定数Ｎは第１の実施の形態と同じようにして決められる。
ステップＳ３１２における判定の結果、カウンタ値ｉが定数Ｎより大きくなければ（Ｓ３１２：ＮＯ）、キャッシュエイリアスの判定対象となっていないキャッシュエイリアスの関係になり得るキャッシュラインに対して判定処理を行うために、仮想インデックス取得部５１は、仮想インデックスＶＩ（ｉ）を選択し、選択した仮想インデックスＶＩ（ｉ）をデコーダ１４へ出力する（ステップＳ３１３）。
【００８１】
仮想インデックスＶＩ（ｉ）はデコーダ１４によってデコードされ、仮想インデックスＶＩ（ｉ）に対応したキャッシュラインがアクセスされる。これにより、タグアレイ３１ａから仮想インデックスＶＩ（ｉ）に対応したタグ情報ＴＡＧ（ｉ）が取り出され、タグ情報ＴＡＧ（ｉ）が第１比較部５２へ出力される（ステップＳ３１４）。
第１比較部５２は、タグ情報ＴＡＧ（０）とタグ情報ＴＡＧ（ｉ）とを比較する（ステップＳ３１５）。比較の結果、タグ情報ＴＡＧ（ｉ）がタグ情報ＴＡＧ（０）と一致していれば（Ｓ３１５：ＹＥＳ）、ステップＳ３１０以降の処理が行われ、一致していなけれ（Ｓ３１５：ＮＯ）、ステップＳ３１１以降の処理が行われる。
【００８２】
ステップＳ３１２における判定の結果、カウンタ値ｉが定数Ｎより大きければ（Ｓ３１２：ＮＯ）、仮想インデックス取得部５１はキャッシュフィル部５４へ第２フィル開始信号を出力する。キャッシュフィル部５４は、第１フィル開始信号及び第２フィル開始信号の双方が入力されると、メインメモリ１２のデータをキャッシュメモリ１１の仮想インデックスＶＩ（０）に対応したキャッシュラインにフィルする（ステップＳ３１６）。
【００８３】
ステップＳ３０８における比較の結果、タグ情報ＴＡＧ（ｉ）がタグ情報ＴＡＧ（０）と一致していなければ（Ｓ３０８：ＮＯ）、第１比較部５２はカウント信号を仮想アドレス取得部５１へ出力し、仮想アドレス取得部５１はカウンタ値ｉを１カウントアップする（ステップＳ３１７）。
仮想アドレス変更部５１はカウンタ値ｉが定数Ｎより大きいかを判定する（ステップＳ３１８）。
【００８４】
ステップＳ３１８における判定の結果、カウンタ値が定数Ｎより大きくなければ（Ｓ３１８：ＮＯ）、キャッシュエイリアスの判定対象となっていないキャッシュエイリアスの関係になり得るキャッシュラインに対して判定処理を行うために、ステップＳ３０６以降の処理が行われる。
ステップＳ３１８における判定の結果、カウンタ値ｉが定数Ｎより大きければ（Ｓ３１８：ＹＥＳ）、アクセス対象のキャッシュラインとキャッシュエイリアスの関係になり得る全てのキャッシュラインにおいてキャッシュエイリアスが検出されなかったので、仮想インデックス取得部５１はヒットミス判定信号を第２比較部３４に出力する。第２比較部３４は、ヒットミス判定信号が入力されると、物理タグＴＡＧとタグ情報ＴＡＧ（０）とを比較する（ステップＳ３１９）。
【００８５】
比較の結果、タグ情報ＴＡＧ（０）が物理タグＴＡＧに一致していれば（Ｓ３１９：ＹＥＳ）、第２比較部３４はキャッシュヒットとしてヒット信号を選択回路１１ｂへ出力する。これにより、選択回路１１ｂは仮想インデックスＶＩ（０）に対応したキャッシュラインのデータを不図示のマイクロプロセッサへ出力する（ステップＳ３２０）。
比較の結果、タグ情報ＴＡＧ（０）が物理タグに一致していなければ（Ｓ３１９：ＮＯ）、第２比較部３４はキャッシュミスとしてミス信号をキャッシュフィル部５４へ出力する（ステップＳ３２１）。そして、キャッシュフィル部５４は、ミス信号が入力されると、メインメモリ１２のデータをキャッシュメモリ１１の仮想インデックスＶＩ（０）に対応したキャッシュラインにフィルする（ステップＳ３２２）。
【００８６】
≪第４の実施の形態≫
以下、本発明の第４の実施の形態について図面を参照しつつ説明する。但し、第４の実施の形態は第２の実施の形態のキャッシュメモリシステムにキャッシュエイリアス検出時にキャッシュエイリアスの関係にあったキャッシュラインを無効化する機能を付加したものである。なお、本実施の形態のキャッシュメモリは、ライトスルーキャッシュメモリとする。
【００８７】
＜構成＞
本実施の形態のキャッシュメモリシステムのシステム構成について図８を参照しつつ説明する。図８はキャッシュメモリシステムのシステム構成図である。なお、第４の実施の形態において、第１から第３の実施の形態と同じ機能を有する構成には同じ符号を付し、その説明が適用できるため説明を省略する。
【００８８】
キャッシュシステム１ｃは、キャッシュメモリ３１、メインメモリ１２、仮想インデックス取得部７１、デコーダ１４、物理タグ取得部１５、第１比較部５２、第２比較部３４、無効化部７２及びキャッシュフィル部３５を備える。
仮想インデックス取得部７１は、不図示のマイクロプロセッサから入力される仮想アドレスＶＡＤに基づいてアクセス対象のキャッシュラインの仮想インデックスＶＩ（０）及び当該アクセス対象のキャッシュラインとキャッシュエイリアスの関係になり得るキャッシュラインの仮想インデックスＶＩ（１），ＶＩ（２），・・・を取得する。そして、仮想インデックス取得部７１は、取得した仮想インデックスＶＩ（ｉ）（ｉ＝０，１，２，・・・）をデコーダ１４へ出力し、仮想インデックスＶＩ（０）をキャッシュフィル部３５へ出力する。但し、仮想インデックス取得部７１は不図示のマイクロプロセッサから仮想アドレスＶＡＤが入力された時に仮想インデックスＶＩ（０）と仮想インデックスＶＩ（１）を順次デコーダ１４へ出力し、第１比較部５２からカウント信号が入力された時にその度に仮想インデックスＶＩ（２），ＶＩ（３），・・・のうちの１つの未出力の仮想インデックスをデコーダ１４に出力する。なお、本実施の形態のカウント信号には第３の実施の形態のカウント信号とは異なり、無効化に関する情報は含まれていない。
【００８９】
また、仮想インデックス取得部７１は、第１比較部５２からカウント信号が入力された時にアクセス対象のキャッシュラインとキャッシュエイリアスの関係になり得る全てのキャッシュラインの仮想インデックスＶＩ（１），ＶＩ（２），・・・をデコーダ１４に出力していればヒットミス判定信号を第２比較部３４に出力する。
無効化部７２は、第１比較部５２から無効化信号が入力されると、アクセス対象のキャッシュラインとキャッシュエイリアスの関係にあったキャッシュラインを無効化する。
【００９０】
＜動作＞
図８のキャッシュメモリシステムの動作について図９を参照しつつ説明する。図９は図８のキャッシュメモリシステムの動作のフローチャートである。
仮想インデックス取得部７１及び物理タグ取得部１５に不図示のマイクロプロセッサから仮想アドレスＶＡＤが入力される（ステップＳ４０１）。物理タグ取得部１５は仮想アドレスＶＡＤに基づいて物理タグＴＡＧを取得する（ステップＳ４０２）。仮想インデックス取得部７１は、デコーダ１４へ出力する仮想インデックスとしてアクセス対象のキャッシュラインの仮想インデックスＶＩ（０）を選択し、選択した仮想インデックスＶＩ（０）をデコーダ１４へ出力する（ステップＳ４０３）。
【００９１】
仮想インデックスＶＩ（０）はデコーダ１４によってデコードされ、仮想インデックスＶＩ（０）に対応したキャッシュラインがアクセスされる。これにより、タグアレイ３１ａから仮想インデックスＶＩ（０）に対応したタグ情報ＴＡＧ（０）が取り出され、タグ情報ＴＡＧ（０）が第１比較部５２及び第２比較部３４へ出力される（ステップＳ４０４）。
【００９２】
仮想インデックス取得部７１は、カウンタ値ｉを１にセットする（ステップＳ４０５）。
仮想インデックス取得部７１は、デコーダ１４へ出力する仮想インデックスとしてアクセス対象のキャッシュラインとキャッシュエイリアスの関係になり得る仮想インデックスＶＩ（ｉ）を選択し、選択した仮想インデックスＶＩ（ｉ）をデコーダ１４へ出力する（ステップＳ４０６）。
【００９３】
仮想インデックスＶＩ（ｉ）はデコーダ１４によってデコードされ、仮想インデックスＶＩ（ｉ）に対応したキャッシュラインがアクセスされる。これにより、タグアレイ３１ａから仮想インデックスＶＩ（ｉ）に対応したタグ情報ＴＡＧ（ｉ）が取り出され、タグ情報ＴＡＧ（ｉ）が第１比較部５２へ出力される（ステップＳ４０７）。
第１比較部５２は、タグ情報ＴＡＧ（０）とタグ情報ＴＡＧ（ｉ）とを比較する（ステップＳ４０８）。
【００９４】
ステップＳ４０８における比較の結果、タグ情報ＴＡＧ（ｉ）がタグ情報ＴＡＧ（０）と一致していれば（Ｓ４０８：ＹＥＳ）、第１比較部５２はキャッシュエイリアスを検出したとして無効化信号を無効化部７２に出力するとともに、カウント信号を仮想インデックス取得部７１に出力する。無効化部７２は、ライト操作かリード操作かを判定する（ステップＳ４０９）。
【００９５】
ステップＳ４０９における判定の結果、ライト操作であれば（Ｓ４０９：ライト）、無効化部７２は、仮想インデックスＶＩ（ｉ）に対応したキャッシュラインを無効化する（ステップＳ４１０）。
仮想インデックス取得部７１は、カウント信号が入力されると、カウンタ値ｉを１カウントアップする（ステップＳ４１１）。仮想インデックス取得部７１はカウントアップ後のカウンタ値ｉが定数Ｎより大きいかを判定する（ステップＳ４１２）。なお、定数Ｎは第１の実施の形態と同じようにして決められる。
【００９６】
ステップＳ４１２における判定の結果、カウンタ値ｉが定数Ｎより大きくなければ（Ｓ４１２：ＮＯ）、キャッシュエイリアスの判定対象となっていないキャッシュエイリアスの関係になり得るキャッシュラインに対して判定処理を行うために、仮想インデックス取得部７１は、仮想インデックスＶＩ（ｉ）を選択し、選択した仮想インデックスＶＩ（ｉ）をデコーダ１４へ出力する（ステップＳ４１３）。
【００９７】
仮想インデックスＶＩ（ｉ）はデコーダ１４によってデコードされ、仮想インデックスＶＩ（ｉ）に対応したキャッシュラインがアクセスされる。これにより、タグアレイ３１ａから仮想インデックスＶＩ（ｉ）に対応したタグ情報ＴＡＧ（ｉ）が取り出され、タグ情報ＴＡＧ（ｉ）が第１比較部５２へ出力される（ステップＳ４１４）。
第１比較部５２は、タグ情報ＴＡＧ（０）とタグ情報ＴＡＧ（ｉ）とを比較する（ステップＳ４１５）。比較の結果、タグ情報ＴＡＧ（ｉ）がタグ情報ＴＡＧ（０）と一致していれば（Ｓ４１５：ＹＥＳ）、ステップＳ４１０以降の処理が行われ、一致していなけれ（Ｓ４１５：ＮＯ）、ステップＳ４１１以降の処理が行われる。
【００９８】
ステップＳ４１２における判定の結果、カウンタ値ｉが定数Ｎより大きければ（Ｓ４１２：ＹＥＳ）、仮想インデックス取得部７１はヒットミス判定信号を第２比較部３４に出力し、第２比較部３４は物理タグＴＡＧとアクセス対象のキャッシュラインのタグ情報ＴＡＧ（０）とを比較することによってキャッシュヒットかキャッシュミスかの判定を行う（ステップＳ４２５）。この判定結果に応じてキャッシュフィルなどの処理が行われる。
【００９９】
ステップＳ４０９における判定の結果、リード操作であれば（Ｓ４０９：リード）、無効化部７２は、仮想インデックスＶＩ（ｉ）に対応したキャッシュラインを無効化する（ステップＳ４１６）。
仮想インデックス取得部７１は、カウント信号が入力されると、カウンタ値ｉを１カウントアップする（ステップＳ４１７）。仮想インデックス取得部７１はカウントアップ後のカウンタ値ｉが定数Ｎより大きいかを判定する（ステップＳ４１８）。
【０１００】
ステップＳ４１８における判定の結果、カウンタ値ｉが定数Ｎより大きくなければ（Ｓ４１８：ＮＯ）、キャッシュエイリアスの判定対象となっていないキャッシュエイリアスの関係になり得るキャッシュラインに対して判定処理を行うために、仮想インデックス取得部７１は、仮想インデックスＶＩ（ｉ）を選択し、選択した仮想インデックスＶＩ（ｉ）をデコーダ１４へ出力する（ステップＳ４１９）。
【０１０１】
仮想インデックスＶＩ（ｉ）はデコーダ１４によってデコードされ、仮想インデックスＶＩ（ｉ）に対応したキャッシュラインがアクセスされる。これにより、タグアレイ３１ａから仮想インデックスＶＩ（ｉ）に対応したタグ情報ＴＡＧ（ｉ）が取り出され、タグ情報ＴＡＧ（ｉ）が第１比較部５２へ出力される（ステップＳ４２０）。
第１比較部５２は、タグ情報ＴＡＧ（０）とタグ情報ＴＡＧ（ｉ）とを比較する（ステップＳ４２１）。比較の結果、タグ情報ＴＡＧ（ｉ）がタグ情報ＴＡＧ（０）と一致していれば（Ｓ４２１：ＹＥＳ）、ステップＳ４１６以降の処理が行われ、一致していなけれ（Ｓ４２１：ＮＯ）、ステップＳ４１７以降の処理が行われる。
【０１０２】
ステップＳ４１８における判定の結果、カウンタ値ｉが定数Ｎより大きければ（Ｓ４１８：ＹＥＳ）、仮想インデックス取得部７１はヒットミス判定信号を第２比較部３４に出力し、第２比較部３４は物理タグＴＡＧとアクセス対象のキャッシュラインのタグ情報ＴＡＧ（０）とを比較することによってキャッシュヒットかキャッシュミスかの判定を行う（ステップＳ４２２）。この判定結果に応じてキャッシュフィルなどの処理が行われる。
【０１０３】
ステップＳ４０８における比較の結果、タグ情報ＴＡＧ（ｉ）がタグ情報ＴＡＧ（０）と一致していなければ（Ｓ４０８：ＮＯ）、第１比較部５２はカウント信号を仮想アドレス取得部７１へ出力し、仮想アドレス取得部７１はカウンタ値ｉを１カウントアップする（ステップＳ４２３）。
仮想アドレス変更部５１はカウンタ値ｉが定数Ｎより大きいかを判定する（ステップＳ４２４）。
【０１０４】
ステップＳ４２４における判定の結果、カウンタ値が定数Ｎより大きくなければ（Ｓ４２４：ＮＯ）、キャッシュエイリアスの判定対象となっていないキャッシュエイリアスの関係になり得るキャッシュラインに対して判定処理を行うために、ステップＳ４０６以降の処理が行われる。
ステップＳ４２４における判定の結果、カウンタ値ｉが定数Ｎより大きければ（Ｓ４２４：ＹＥＳ）、アクセス対象のキャッシュラインとキャッシュエイリアスの関係になり得る全てのキャッシュラインにおいてキャッシュエイリアスが検出されなかったので、仮想インデックス取得部７１はヒットミス判定信号を第２比較部３４に出力する。第２比較部３４は、ヒットミス判定信号が入力されると、第２比較部３４は物理タグＴＡＧとアクセス対象のキャッシュラインのタグ情報ＴＡＧ（０）とを比較することによってキャッシュヒットかキャッシュミスかの判定を行う（ステップＳ４２５）。この判定結果に応じてキャッシュフィルなどの処理が行われる。
【０１０５】
≪補足≫
本発明は上記の実施の形態に限られるものではなく、例えば、以下のようなものも含まれる。
（１）各実施の形態では、ダイレクトマップ型のキャッシュメモリを例に挙げて説明したが、これに限らず、本発明はキャッシュエイリアスが起こりうる各種キャッシュメモリに適用することができる。
【０１０６】
（２）第１の実施の形態では、アクセス対象のキャッシュライン及び当該アクセス対象のキャッシュラインとキャッシュエイリアスの関係になり得るキャッシュラインのタグ情報ＴＡＧ（ｉ）の全てが物理タグＴＡＧと一致しなかった場合に、キャッシュミスとしてアクセス対象のキャッシュラインにメインメモリ１２のデータをフィルする場合を説明した。しかしながら、本発明はこれに限られるものではなく、例えば、アクセス対象のキャッシュラインとキャッシュエイリアスの関係になり得るキャッシュラインの何れか１つにメインメモリ１２のデータをフィルするようにしてもよい。
【０１０７】
（３）第１の実施の形態では、アクセス対象のキャッシュライン及び当該アクセス対象のキャッシュラインとキャッシュエイリアスの関係になり得るキャッシュラインのタグ情報ＴＡＧ（ｉ）の全てが物理タグＴＡＧと一致しなかった場合に、キャッシュミスとしてアクセス対象のキャッシュラインにメインメモリ１２のデータをフィルする場合を説明した。しかしながら、本発明はこれに限られるものではなく、例えば、アクセス対象のキャッシュライン及び当該アクセス対象のキャッシュラインとキャッシュエイリアスの関係になり得るキャッシュラインのうちデータが格納されていない何れか１つのキャッシュラインにメインメモリ１２のデータをフィルするようにしてもよい。
【０１０８】
（４）第３の実施の形態では、キャッシュエイリアスが検出された場合にはアクセス対象のキャッシュラインにメインメモリのデータをフィルする場合を説明した。しかしながら、本発明はこれに限られるものではなく、例えば、アクセス対象のキャッシュラインとキャッシュエイリアスの関係にあったため無効化された何れか１つのキャッシュラインにメインメモリ１２のデータをフィルするようにしてもよい。
【０１０９】
（５）第４の実施の形態では、キャッシュエイリアスが検出され、リード操作である場合には、アクセス対象のキャッシュラインとキャッシュエイリアスの関係にあったキャッシュラインを無効化する場合を説明した。しかしながら、本発明はこれに限られるものではなく、例えば、アクセス対象のキャッシュライン及び当該アクセス対象のキャッシュラインとキャッシュエイリアスの関係にあったキャッシュラインのうち何れか１つを除いて無効化し、無効化されなかったキャッシュラインによりキャッシュヒットかキャッシュミスかの判定を行うようにしてもよい。
【０１１０】
（６）各実施の形態のキャッシュエイリアス回避方法及びキャッシュエイリアス検出方法などの処理全体をハードウェア又はソフトウェアにより構成してもよく、その一部をハードウェアで構成し、残りの部分をソフトウェアで構成してもよい。
【産業上の利用可能性】
【０１１１】
本発明は、キャッシュエイリアスの検出や回避を行うキャッシュメモリシステムに利用することができる。
【図面の簡単な説明】
【０１１２】
【図１】第１の実施の形態のキャッシュメモリシステムのシステム構成図。
【図２】図１の仮想インデックス取得部の構成図。
【図３】図１のキャッシュメモリシステムの動作のフローチャート。
【図４】第２の実施の形態のキャッシュメモリシステムのシステム構成図。
【図５】図４のキャッシュメモリシステムの動作のフローチャート。
【図６】第３の実施の形態のキャッシュメモリシステムのシステム構成図。
【図７】図６のキャッシュメモリシステムの動作のフローチャート。
【図８】第４の実施の形態のキャッシュメモリシステムのシステム構成図。
【図９】図８のキャッシュメモリシステムの動作のフローチャート。
【図１０】ダイレクトマップ型のキャッシュメモリにおいて物理ブロックがマッピングされるキャッシュラインを説明するための図。
【図１１】ＶＩＰＴ方式を説明するための図。
【図１２】キャッシュエイリアスの問題を説明するための図。
【符号の説明】
【０１１３】
１  キャッシュメモリシステム
１１  キャッシュメモリ
１１ａ  タグアレイ
１１ｂ  選択回路
１１ｃ  データアレイ
１２  メインメモリ
１３  仮想インデックス取得部
１４  デコーダ
１５  物理タグ取得部
１６  比較部
１７  キャッシュフィル部
【図１】
2008027040.tif 000003
【図２】
2008027040.tif 000004
【図３】
2008027040.tif 000005
【図４】
2008027040.tif 000006
【図５】
2008027040.tif 000007
【図６】
2008027040.tif 000008
【図７】
2008027040.tif 000009
【図８】
2008027040.tif 000010
【図９】
2008027040.tif 000011
【図１０】
2008027040.tif 000012
【図１１】
2008027040.tif 000013
【図１２】
2008027040.tif 000014