(57)【要約】【課題】効率的な処理を可能とし、かつ消費電力を低減可能なキャッシュシステムを提供すること。【解決手段】インデックスごとの複数のウェイへキャッシュデータを格納可能に構成されたキャッシュデータ記憶部である命令キャッシュデータＲＡＭ１０と、キャッシュデータ記憶部に格納される他のキャッシュデータに対してアドレスが不連続であるキャッシュデータを格納可能なウェイである有効ウェイ、及び他のキャッシュデータに対してアドレスが不連続であるキャッシュデータの格納が制限されるウェイである無効ウェイのいずれに該当するかを、インデックスごとの各ウェイについて表すウェイ情報を制御するウェイ情報制御部であるウェイバリッドビット制御部１６と、を有し、キャッシュデータ記憶部は、無効ウェイを、無効ウェイと同一或いは異なるインデックスの有効ウェイに統合可能に構成される。【選択図】      図１
2009252004.tif 000002
【特許請求の範囲】
【請求項１】
インデックスごとの複数のウェイへキャッシュデータを格納可能に構成されたキャッシュデータ記憶部と、
前記キャッシュデータ記憶部に格納される他のキャッシュデータに対してアドレスが不連続であるキャッシュデータを格納可能なウェイである有効ウェイ、及び前記他のキャッシュデータに対してアドレスが不連続であるキャッシュデータの格納が制限されるウェイである無効ウェイのいずれに該当するかを、前記インデックスごとの各ウェイについて表すウェイ情報を制御するウェイ情報制御部と、を有し、
前記キャッシュデータ記憶部は、前記無効ウェイを、前記無効ウェイと同一或いは異なるインデックスの前記有効ウェイに統合可能に構成されることを特徴とするキャッシュシステム。
【請求項２】
連続するアドレスへのアクセスである逐次要求の回数、及び不連続であるアドレスへのアクセスである分岐要求の回数の少なくとも一方をカウントするアクセスカウンタを有し、
前記ウェイ情報制御部は、前記アクセスカウンタによりカウントされた前記逐次要求の回数及び前記分岐要求の回数の少なくとも一方に基づいて、前記ウェイ情報を更新することを特徴とする請求項１に記載のキャッシュシステム。
【請求項３】
アクセスされたアドレスをデコードするアドレスデコーダを有し、
前記ウェイ情報制御部は、前記アドレスデコーダによる定義に基づいて前記ウェイ情報を更新することを特徴とする請求項１に記載のキャッシュシステム。
【請求項４】
前記ウェイ情報の更新を指示するウェイ情報更新指示信号を前記ウェイ情報制御部へ伝送するウェイ情報更新指示パスを有することを特徴とする請求項１に記載のキャッシュシステム。
【請求項５】
一つ又は複数の前記ウェイに対応する複数のメモリバンクに分割され、キャッシュタグ情報を格納するキャッシュタグ記憶部と、
前記ウェイ情報制御部により制御された前記ウェイ情報に基づいて、前記メモリバンクへのアクセスを制御するタグメモリアクセス制御部と、を有し、
前記タグメモリアクセス制御部は、前記無効ウェイに対応する前記メモリバンクへのアクセスを抑制することを特徴とする請求項１〜４のいずれか一項に記載のキャッシュシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、キャッシュシステム、特に、プロセッサに搭載されるキャッシュシステムに関する。
【背景技術】
【０００２】
従来、マイクロプロセッサは、メモリアクセスのボトルネックを解消するために、チップ上にキャッシュメモリを搭載するものが主流となっている。キャッシュメモリの構成としては、複数のウェイを用いるセットアソシアティブ（Set  Associative）方式が多く採用されている。セットアソシアティブ方式のキャッシュシステムにおいてヒット率を向上させるための技術として、例えば、特許文献１には、ウェイの数を一時的に増加させる技術が提案されている。
【０００３】
従来、キャッシュメモリは、一旦実装されてからは固定されたラインサイズで使用される。キャッシュタグメモリからのタグ情報の読み出しは、プロセッサコアからのキャッシュアクセスの態様に関わらず、キャッシュラインごとに行われる。このため、連続するアドレスへのアクセスであっても、キャッシュラインの境界を越えるごとにキャッシュタグメモリへのアクセスが必要であることにより、無駄な電力消費が生じることとなる。また、連続するアドレスのデータに対してラインサイズが小さい場合、リフィルの際における主メモリとの間の転送回数を増大させることとなる。これに対して、一定のキャッシュ容量のキャッシュメモリにおいてラインサイズを大きくするに従い、ライン数が減少することとなる。ライン数が減少すると、不連続なアドレスへのアクセスの場合のキャッシュミスが増加することとなる。さらに、特許文献１の技術の場合、ウェイの数を一時的に増加させるための補助的なキャッシュを新たに実装する必要がある。このように、従来の技術によると、効率的な処理を可能とすること、及び消費電力を低減させることが困難であるという問題を生じる。
【０００４】
【特許文献１】特開平６−２３１０４４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
本発明は、上述の問題に鑑みてなされたものであり、効率的な処理を可能とし、かつ消費電力を低減可能なキャッシュシステムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
本願発明の一態様によれば、インデックスごとの複数のウェイへキャッシュデータを格納可能に構成されたキャッシュデータ記憶部と、キャッシュデータ記憶部に格納される他のキャッシュデータに対してアドレスが不連続であるキャッシュデータを格納可能なウェイである有効ウェイ、及び他のキャッシュデータに対してアドレスが不連続であるキャッシュデータの格納が制限されるウェイである無効ウェイのいずれに該当するかを、インデックスごとの各ウェイについて表すウェイ情報を制御するウェイ情報制御部と、を有し、キャッシュデータ記憶部は、無効ウェイを、無効ウェイと同一或いは異なるインデックスの有効ウェイに統合可能に構成されることを特徴とするキャッシュシステムが提供される。
【発明の効果】
【０００７】
本発明によれば、効率的な処理を可能とし、かつ消費電力を低減できるという効果を奏する。
【発明を実施するための最良の形態】
【０００８】
以下に添付図面を参照して、本発明に係るキャッシュシステムの最良な実施の形態を詳細に説明する。
【０００９】
（第１の実施の形態）
図１は、本発明の第１の実施の形態に係るキャッシュシステムの構成を示すブロック図である。本実施の形態に係るキャッシュシステムは、命令キャッシュメモリを備える命令キャッシュシステムであって、本来的に、ウェイ０及びウェイ１からなる２ウェイセットアソシアティブ方式を採用する。命令キャッシュメモリは、プロセッサへの命令群であるプログラムを格納する。
【００１０】
本実施の形態に係るキャッシュシステムは、本発明が属する分野の技術者によって、以下の説明要綱に基づき、命令キャッシュメモリ以外のデータキャッシュメモリ等を備える多様なキャッシュシステム、及び２ウェイより高次なセットアソシアティブ方式のキャッシュシステムへ変形可能である。従って、以下の説明は、当該分野に対して開示される内容として広く理解されるべきであり、本発明を限定するものではない。
【００１１】
本実施の形態に係るキャッシュシステムは、命令キャッシュデータＲＡＭ（Random  Access  Memory）１０、キャッシュタグＲＡＭ１１、命令キャッシュ制御部１２、タグ比較回路１３、及び命令フェッチユニット１５を有する。命令キャッシュデータＲＡＭ１０は、キャッシュデータを格納するキャッシュデータ記憶部として機能する。キャッシュタグＲＡＭ１１は、キャッシュタグ情報を格納するキャッシュタグ記憶部として機能する。命令キャッシュ制御部１２は、キャッシュシステム全体を制御する。
【００１２】
タグ比較回路１３は、プロセッサによりアクセスされたアドレスのタグ情報と、キャッシュタグＲＡＭ１１から読み出されたタグ情報とを比較し、比較結果を命令キャッシュ制御部１２へ出力する。命令フェッチユニット１５は、命令コードをフェッチする。ウェイバリッド（Way  Valid；ＷＶ）ビット制御部１６は、命令キャッシュ制御部１２に含まれる。ウェイバリッドビット制御部１６は、ウェイバリッドビット制御線１７を介してウェイバリッドビットを制御する。
【００１３】
図２は、命令キャッシュデータＲＡＭ１０の構造を説明するものである。命令キャッシュデータＲＡＭ１０は、複数のラインを並列させたアレイ構造をなす。各ラインは、何行目であるかを表すインデックス（Ｉｎｄｅｘ  ０〜Ｉｎｄｅｘ  ｘ）が割り当てられている。各ラインには、ウェイの数に応じて最大２つのキャッシュデータが格納される。命令キャッシュデータＲＡＭ１０は、インデックスごとのウェイ０及びウェイ１へキャッシュデータを格納可能に構成されている。
【００１４】
図３は、キャッシュタグＲＡＭ１１の構造、及びウェイバリッドビットについて説明するものである。キャッシュタグＲＡＭ１１は、命令キャッシュデータＲＡＭ１０と同様に、アレイ構造をなす。キャッシュタグＲＡＭ１１は、インデックスごとの２つのウェイにキャッシュタグ情報を格納可能に構成されている。
【００１５】
ウェイバリッドビットＷＶは、例えば、メモリ上のビットとしてキャッシュタグＲＡＭ１１内に実装される。ウェイバリッドビットＷＶは、有効ウェイ及び無効ウェイのいずれに該当するかを、インデックスごとの各ウェイについて表すウェイ情報である。有効ウェイとは、命令キャッシュデータＲＡＭ１０に格納される他のキャッシュデータに対してアドレスが不連続であるキャッシュデータを格納可能なウェイである。無効ウェイとは、命令キャッシュデータＲＡＭ１０に格納される他のキャッシュデータに対してアドレスが不連続であるキャッシュデータの格納が制限されるウェイである。無効ウェイは、命令キャッシュデータＲＡＭ１０に格納される他のキャッシュデータに対して連続するアドレスのキャッシュデータのみを格納する。
【００１６】
ウェイバリッドビットＷＶは、インデックスごとに設定され、本来のウェイの数に対応するビット幅を持つ。本実施の形態において、ウェイバリッドビットＷＶは、２ビット構成を採る。ウェイバリッドビットＷＶは、例えば、２ビットのうち上位１ビットをウェイ０、下位１ビットをウェイ１に割り当て、無効ウェイである場合を「０」、有効ウェイである場合を「１」と表すとする。ウェイバリッドビットＷＶは、キャッシュタグＲＡＭ１１内に実装される場合に限られず、いずれの位置に実装することとしても良い。ウェイバリッドビットＷＶは、例えば、レジスタとして命令キャッシュ制御部１２内に実装することとしても良い。
【００１７】
また、キャッシュタグＲＡＭ１１は、次にリフィルするウェイを指示するリプレイス（Replace）ビットＲ、格納されたデータがタグ情報として有効であるか否かを示すバリッド（Valid）ビットＶを格納する。リプレイスビットＲは、インデックスごとに設定され、１ビット構成を採る。リプレイスビットＲは、例えば、次にリフィルするのがウェイ０である場合を「０」、次にリフィルするのがウェイ１である場合を「１」と表すとする。リプレイスビットＲの設定は、例えば、長い時間アクセスが無かったデータを優先してリフィルするＬＲＵ（Least  Recently  Used）方式に従う。バリッドビットＶは、各インデックスのウェイごとに設定され、１ビット構成を採る。バリッドビットＶは、例えば、格納されたデータがタグ情報として無効である場合を「０」、タグ情報として有効である場合を「１」と表すとする。
【００１８】
プロセッサから要求された命令のアドレスは、命令フェッチユニット１５を経て命令キャッシュ制御部１２へ供給される。プロセッサからの要求には、逐次要求と分岐要求とがある。逐次要求は、連続するアドレスへのアクセスである。分岐要求は、不連続であるアドレスへのアクセスである。命令キャッシュデータＲＡＭ１０は、命令キャッシュ制御部１２からのアドレスのインデックス部によって指定されたデータを読み出す。キャッシュタグＲＡＭ１１は、命令キャッシュ制御部１２からのアドレスのインデックス部によって指定されたタグ情報を読み出す。タグ比較回路１３は、読み出されたタグ情報と、要求されたアドレスのタグ情報とを比較し、比較結果を命令キャッシュ制御部１２へ出力する。
【００１９】
キャッシュタグＲＡＭ１１から読み出されたいずれかのタグ情報と、要求されたアドレスのタグ情報とが一致（ヒット）した場合、命令キャッシュ制御部１２は、ヒットしたキャッシュデータを選択する。命令キャッシュ制御部１２により選択されたキャッシュデータは、命令フェッチユニット１５へ出力される。キャッシュタグＲＡＭ１１から読み出されたいずれのタグ情報も、要求されたアドレスのタグ情報と一致しない場合（キャッシュミス）、リプレイスビットＲにより指示されたウェイについてリフィルを行う。このようにして、キャッシュシステムは、プロセッサから要求された命令コードを出力する。
【００２０】
図４及び図５は、本実施の形態に係るキャッシュシステムにおけるウェイの統合について説明するものである。例えば、図４の白抜き矢印より上に示すように、全てのインデックスについてウェイバリッドビットＷＶが「１１」であるとする。ウェイバリッドビットＷＶ「１１」は、ウェイ０、ウェイ１ともに有効ウェイであることを表す。
【００２１】
ウェイバリッドビットＷＶ「１１」に対して、図５の白抜き矢印より上に示すように、例えば、命令キャッシュデータＲＡＭ１０のインデックス０について、ウェイ０にラインＡ（Ｌｉｎｅ  Ａ）のキャッシュデータ、ウェイ１にラインＪ（Ｌｉｎｅ  Ｊ）のキャッシュデータが格納されるとする。ここで、ラインＪは、ラインＡに対してアドレスが不連続なデータであるとする。キャッシュタグＲＡＭ１１のインデックス０には、ウェイ０にラインＡのタグ情報、ウェイ１にラインＪのタグ情報が格納される。インデックス０のバリッドビットＶはウェイ０、ウェイ１ともに「１」であって、キャッシュタグＲＡＭ１１に格納されたデータは、ウェイ０、ウェイ１ともに有効なタグ情報であることを表す。なお、インデックス０のリプレイスビットＲ「１」は、先にリフィルされるのがウェイ１に格納されたラインＪであることを表している。
【００２２】
インデックス１、インデックスｘ−１、インデックスｘのバリッドビットＶは、ウェイ０、ウェイ１ともに「０」であって、キャッシュタグＲＡＭ１１に格納されたデータは、ウェイ０、ウェイ１ともにタグ情報として無効であることを表す。キャッシュタグＲＡＭ１１のインデックス１、インデックスｘ−１、インデックスｘのタグ情報は、ウェイ０、ウェイ１ともに「ｄｏｎ’ｔ  ｃａｒｅ」（図中「−」と表示）とされる。
【００２３】
タグ情報が無効であることから、インデックス１、インデックスｘ−１、インデックスｘについて、リプレイスビットＲ、命令キャッシュデータＲＡＭ１０のキャッシュデータも「ｄｏｎ’ｔ  ｃａｒｅ」とされる。インデックス２は、ウェイバリッドビットＷＶが「１１」であるため、ウェイ０、ウェイ１ともに有効である。ウェイ０にはラインＴ（Ｌｉｎｅ  Ｔ）、ウェイ１にはラインＬ（Ｌｉｎｅ  Ｌ）が格納される。ラインＬは、ラインＴに対してアドレスが不連続なデータであるとする。なお、インデックス２のリプレイスビットＲ「１」は、先にリフィルされるのがウェイ１に格納されたラインＬであることを表している。
【００２４】
次に、図４の白抜き矢印より下に示すように、インデックス０についてのウェイバリッドビットＷＶが「１０」であるとする。ウェイバリッドビットＷＶ「１０」は、ウェイ０が有効ウェイ、ウェイ１が無効ウェイであることを表す。ウェイバリッドビットＷＶ「１０」に対して、図５の白抜き矢印より下に示すように、命令キャッシュデータＲＡＭ１０のインデックス０には、ウェイ０にラインＡのキャッシュデータ、ウェイ１にラインＢ（Ｌｉｎｅ  Ｂ）のキャッシュデータが格納される。ラインＢは、ラインＡに対して連続するアドレスのデータであるとする。
【００２５】
無効ウェイとされたウェイ１は、直前のウェイ０に格納されるラインＡに対してアドレスが不連続なキャッシュデータの格納が制限され、ラインＡに対して連続するアドレスのラインＢのキャッシュデータのみを格納する。無効ウェイとされたウェイ１は、同一のインデックス０の有効ウェイであるウェイ０に統合される。インデックス０のラインは、ウェイ０及びウェイ１の統合により、ダイレクトマップ方式のキャッシュラインと同様に扱われる。
【００２６】
キャッシュタグＲＡＭ１１のインデックス０には、本来のウェイ０にラインＡのタグ情報が格納される。本来のウェイ１へ格納されるキャッシュデータはラインＡに対して連続するアドレスのラインＢのキャッシュデータと一意的に決定される。このため、本来のウェイ１へのラインＢのタグ情報の格納は不要であって、ウェイ１のタグ情報は「ｄｏｎ’ｔ  ｃａｒｅ」（図中「−」と表示）とされる。ウェイ０のバリッドビットＶは「１」であって、ウェイ０は有効なキャッシュデータが格納されていることを表す。ウェイ０が有効か否かを判定すればウェイ１が有効か否かの判定は不要であるため、ウェイ１のバリッドビットＶは、「ｄｏｎ’ｔ  ｃａｒｅ」とされる。また、インデックス０については一つのキャッシュラインとして扱われることから、リプレイスビットＲも「ｄｏｎ’ｔ  ｃａｒｅ」とされる。
【００２７】
インデックス０のラインは、ウェイ０及びウェイ１の統合により、本来のセットアソシアティブ方式の場合のラインサイズに比較して２倍のラインサイズのキャッシュラインとして利用される。逐次要求に対しては、ラインＡのヒットにより、ラインＢについてのタグ情報の読み出し及び比較、キャッシュデータの選択をするまでも無く、ラインＡ及びラインＢのキャッシュデータを出力する。
【００２８】
さらに、統合されたウェイは、ウェイバリッドビットＷＶを「１１」とすることにより本来のウェイ０及びウェイ１へ分割され、元のセットアソシアティブ方式のキャッシュラインに再構成される。命令キャッシュデータＲＡＭ１０及びキャッシュタグＲＡＭ１１は、ウェイバリッドビットＷＶに応じて、インデックスごとにウェイの数を１又は２と動的に変化させる。
【００２９】
本実施の形態に係るキャッシュシステムは、有効ウェイに無効ウェイを統合させることにより、格納可能なキャッシュラインのラインサイズを動的に拡張させる。ウェイの統合により適宜ラインサイズを拡張させることにより、連続するアドレスへアクセスする逐次要求に対して、キャッシュラインの境界を越えるごとに必要となるキャッシュタグＲＡＭ１１へのアクセスが減少する。キャッシュタグＲＡＭ１１へのアクセスを減少させることで、電力消費を低減させる。また、一度のバースト転送により多くのデータのリフィルを可能とし、リフィルの効率を向上させる。ウェイバリッドビットＷＶに応じてウェイの数を動的に変化させることで、キャッシュミスの抑制を可能とする。これにより、効率的な処理を可能とし、かつ消費電力を低減できるという効果を奏する。
【００３０】
２ウェイより高次なセットアソシアティブ方式の場合も、上記の説明と同様にして、ウェイを動的に統合する。本発明に係るキャッシュシステムは、ｍウェイ（ｍは、２以上の整数）のセットアソシアティブ方式について、ｍウェイからｎウェイ（ｎは、ｍ＞ｎを満たす正の整数）への統合が可能である。
【００３１】
次に、ウェイバリッドビットＷＶを更新する方式について説明する。第１の方式では、逐次要求及び分岐要求の数に基づいてウェイバリッドビットＷＶを更新する。第２の方式では、アドレスデコーダによる定義に基づいてウェイバリッドビットＷＶを更新する。第３の方式では、ウェイ情報更新指示信号に応じてウェイバリッドビットＷＶを更新する。
【００３２】
図６は、第１の方式によりウェイバリッドビットＷＶを更新するための構成を説明するものである。命令キャッシュ制御部１２に設けられたアクセスカウンタ２１は、逐次要求の回数、及び分岐要求の回数をカウントする。カウント処理部２２は、一定時間においてアクセスカウンタ２１でカウントされた逐次要求及び分岐要求の合計回数のうち分岐要求の回数が占める割合を求める。命令キャッシュ制御部１２は、かかる分岐要求の割合の閾値をレジスタ値として保持する。ウェイバリッドビット制御部１６は、分岐要求の割合が閾値より小さい場合に、分岐要求が少ない命令コードパターンであると判断し、分岐要求の割合が閾値以上である場合に、分岐要求が多い命令コードパターンであると判断する。閾値は、例えばキャッシュメモリの本来のラインサイズ等に応じて任意に設定可能であって、例えばユーザにより設定される。
【００３３】
逐次要求は、連続するアドレスへのアクセスであるため、あるキャッシュラインの終端まで命令フェッチを行うと、次のキャッシュラインへのアクセスが発生する。一方、分岐要求は、アドレスが不連続なデータへのアクセスであるため、あるキャッシュラインの次にアクセスするキャッシュラインは確定されない。分岐要求が多いほどキャッシュミスの確率が増加するため、多くの分岐要求に対してはウェイの数を高次のままとすることが望ましい。これに対して、逐次要求が多いほどアクセスのパターンが確定的となるため、ウェイの数を減少させてラインサイズを拡張することが望ましい。
【００３４】
第１の方式では、カウント処理部２２で求められた分岐要求の割合が閾値より小さい場合に、ウェイバリッドビット制御部１６は、ウェイの数を低次とするウェイバリッドビットＷＶをセットする。これに対して、カウント処理部２２で求められた分岐要求の割合が閾値以上である場合に、ウェイバリッドビット制御部１６は、ウェイの数を高次とするウェイバリッドビットＷＶをセットする。ウェイバリッドビット制御部１６は、アクセスカウンタ２１によりカウントされた逐次要求の回数及び分岐要求の回数に基づいて、ウェイバリッドビットＷＶを更新する。キャッシュシステムは、ウェイバリッドビットＷＶの更新により、ウェイの数を動的に切り替える。これにより、多くの逐次要求に対してリフィル効率の向上、及び消費電力の低減を可能とし、多くの分岐要求に対してキャッシュミスを低減させ、効率的な処理を可能にできる。
【００３５】
なお、ウェイバリッドビット制御部１６は、逐次要求の割合に基づいてウェイバリッドビットＷＶを更新することとしても良い。ウェイバリッドビット制御部１６は、分岐要求及び逐次要求のうちいずれか一方の頻度のみによって命令コードパターンを判断することとしても良い。ウェイバリッドビット制御部１６は、アクセスカウンタ２１によりカウントされた逐次要求の回数及び分岐要求の回数の少なくとも一方に基づいて、ウェイバリッドビットＷＶを更新するものであれば良い。アクセスカウンタ２１は、逐次要求及び分岐要求の少なくとも一方の回数をカウントするものであれば良い。
【００３６】
図７は、第２の方式によりウェイバリッドビットＷＶを更新するための構成を説明するものである。アドレスデコーダ２３は、アクセスされたアドレスをデコードする。アドレスデコーダ２３は、命令キャッシュ制御部１２内に配備されている。アドレスデコーダ２３は、命令キャッシュ制御部１２以外に、例えば、命令フェッチユニット１５に配備しても良い。アドレスデコーダ２３は、動的にメモリ空間を定義可能であるとする。
【００３７】
図８は、アドレスデコーダ２３により定義されたメモリマップの例を示す。ここでは、あるインデックスのラインについて本来の２ウェイセットアソシアティブ方式からウェイを統合することにより、ダイレクトマップ方式のキャッシュラインと同様に扱う場合を例として説明する。メモリアクセスするアドレス空間は、アドレス順に、非キャッシュ領域（Ｕｎ  Ｃａｃｈｅ）、ローカルメモリ領域（Ｌｏｃａｌ  Ｍｅｍｏｒｙ）、リザーブ（禁止）領域（Ｒｅｓｅｒｖｅｄ）、２ウェイセットアソシアティブ用キャッシュ領域（Ｃａｃｈｅ（２−ｗａｙ））、ダイレクトマップ用キャッシュ領域（Ｃａｃｈｅ（Ｄｉｒｅｃｔ））の各メモリ空間が定義されている。各領域の種類及びサイズは、アドレスデコーダ２３内の記憶論理（レジスタ又は小規模なメモリ）に記憶される。なお、非キャッシュ領域、ローカルメモリ領域、リザーブ領域については、第２の方式によるウェイバリッドビットＷＶの切り替えには関係しないことから、詳細な説明を省略する。
【００３８】
アドレスデコーダ２３により定義されたダイレクトマップ用キャッシュ領域へのキャッシュアクセスに対して、ウェイバリッドビット制御部１６は、ダイレクトマップのキャッシュラインとするウェイバリッドビットＷＶをセットする。また、アドレスデコーダ２３により定義された２ウェイセットアソシアティブ用キャッシュ領域へのキャッシュアクセスに対して、ウェイバリッドビット制御部１６は、２ウェイのキャッシュラインとするウェイバリッドビットＷＶをセットする。このように、ウェイバリッドビット制御部１６は、アドレスデコーダ２３による定義に基づいて、ウェイバリッドビットＷＶを更新する。
【００３９】
さらに、アドレスデコーダ２３は、各領域のアドレス位置及び範囲を自由に変更させる。例えば、斜線両矢印を付して示すように、アドレスデコーダ２３は、ダイレクトマップ用キャッシュ領域及び２ウェイセットアソシアティブ用キャッシュ領域の境界を移動させることが可能である。また、白抜き両矢印を付して示すように、アドレスデコーダ２３は、ダイレクトマップ用キャッシュ領域と２ウェイセットアソシアティブ用キャッシュ領域とを置き換えることが可能である。このように、アドレスデコーダ２３は、各領域を動的に定義可能である。
【００４０】
２ウェイセットアソシアティブ用キャッシュ領域は、例えば、多くの条件分岐を必要とするプログラムコードを配備したメモリ空間に適している。ダイレクトマップ用キャッシュ領域は、例えば、演算実行を繰り返すような逐次実行が予想されるプログラムコードを配備したメモリ空間に適している。第２の方式によると、ユーザによるキャッシュ領域の使い分けにより、プログラムコードに応じた効率的な処理を可能にできる。
【００４１】
図９は、第３の方式によりウェイバリッドビットＷＶを更新するための構成を説明するものである。本方式では、ウェイバリッドビットＷＶの更新を指示するウェイバリッドビット更新指示信号に基づいて、ウェイバリッドビットＷＶを更新する。ウェイバリッドビット更新指示信号は、ウェイ情報の更新を指示するウェイ情報更新指示信号である。ウェイバリッドビット更新指示信号は、命令フェッチユニット１５及びウェイバリッドビット制御部１６の間に設けられたウェイバリッドビット更新指示パス２５を介して、命令フェッチユニット１５からウェイバリッドビット制御部１６へ入力される。ウェイバリッドビット更新指示パス２５は、ウェイバリッドビット更新指示信号を伝送するウェイ情報更新指示パスとして機能する。
【００４２】
ウェイの数を切り替えるためのキャッシュ命令がプロセッサコアにおいて実行されると、命令フェッチユニット１５は、ウェイバリッドビット更新指示信号を出力する。ウェイバリッドビット制御部１６は、命令フェッチユニット１５からのウェイバリッドビット更新指示信号に従って、ウェイバリッドビットＷＶを更新する。第３の方式によると、ユーザの自由な設定により効率的な処理を可能にできる。なお、ウェイバリッドビット更新指示パス２５は、命令フェッチユニット１５及びウェイバリッドビット制御部１６の間に設けられる場合に限られず、ウェイバリッドビット制御部１６へウェイバリッドビット更新指示信号を伝送可能であればいずれの位置に設けても良い。
【００４３】
次に、図１０及び図１１を用いて、本実施の形態の変形例に係るキャッシュシステムにおけるウェイの統合について説明する。本変形例に係るキャッシュシステムは、同一のインデックスのウェイのみならず異なるインデックスのウェイを統合可能であることを特徴とする。
【００４４】
例えば、図１０の白抜き矢印より上に示すように、インデックス０についてのウェイバリッドビットＷＶが「１０」であるとする。ウェイバリッドビットＷＶ「１０」に対して、図１１の白抜き矢印より上に示すように、命令キャッシュデータＲＡＭ１０のインデックス０には、アドレスが連続するラインＡのキャッシュデータ、ラインＢのキャッシュデータが格納される。
【００４５】
次に、図１０の白抜き矢印より下に示すように、インデックス０についてのウェイバリッドビットＷＶが「１０」、インデックス１についてのウェイバリッドビットＷＶが「００」であるとする。インデックス１のウェイバリッドビットＷＶ「００」は、ウェイ０、ウェイ１がともに無効ウェイであることを表す。インデックス０についてのウェイバリッドビットＷＶ「１０」に対して、図１１の白抜き矢印より下に示すように、命令キャッシュデータＲＡＭ１０のインデックス０にはラインＡのキャッシュデータ、及びラインＢのキャッシュデータが格納される。インデックス１についてのウェイバリッドビットＷＶ「００」に対して、命令キャッシュデータＲＡＭ１０のインデックス１にはラインＣ（Ｌｉｎｅ  Ｃ）のキャッシュデータ、及びラインＤ（Ｌｉｎｅ  Ｄ）のキャッシュデータが格納される。
【００４６】
ラインＣは、ラインＢに対して連続するアドレスのデータであるとする。ラインＤは、ラインＣに対して連続するアドレスのデータであるとする。インデックス１のウェイ０及びウェイ１は、インデックスの境界を越えて、インデックス１とは異なるインデックス０のウェイ０及びウェイ１に統合される。
【００４７】
キャッシュタグＲＡＭ１１のインデックス０には、本来のウェイ０にラインＡのタグ情報が格納される。インデックス１へ格納されるキャッシュデータはインデックス０に格納されたラインＡ及びラインＢに対して連続するアドレスのラインＣ及びラインＤのキャッシュデータであることが一意的に決定される。このため、インデックス１へのラインＣのタグ情報、ラインＤのタグ情報の格納は不要となる。インデックス１のウェイ０、ウェイ１が有効か否かの判定は不要であるため、インデックス１のバリッドビットＶはいずれも「ｄｏｎ’ｔ  ｃａｒｅ」（図中「−」と表示）とされる。また、インデックス０及びインデックス１が一つのキャッシュラインとして扱われることから、インデックス１のリプレイスビットＲも「ｄｏｎ’ｔ  ｃａｒｅ」とされる。
【００４８】
インデックス０及びインデックス１のラインは、ウェイの統合により、本来の２ウェイセットアソシアティブ方式の場合に対して４倍のラインサイズのキャッシュラインとして利用される。逐次要求に対しては、ラインＡのヒットにより、ラインＢ、ラインＣ、ラインＤのタグ情報の読み出し及び比較、キャッシュデータの選択をするまでも無く、ラインＡ、ラインＢ、ラインＣ、ラインＤのキャッシュデータを出力する。統合されたウェイは、インデックス０、インデックス１のウェイバリッドビットＷＶを「１１」とすることにより本来のウェイへ分割され、元のセットアソシアティブ方式のキャッシュラインに再構成される。
【００４９】
ウェイは、２つのインデックスのみならず３つ以上のインデックスについて統合しても良く、最大で全てのインデックスについて統合可能である。本変形例によると、同一のインデックスのみならず異なるインデックスのウェイを統合することで、元来実装された命令キャッシュデータＲＡＭ１０のラインサイズを超えるラインサイズのキャッシュラインを自由に設定することができる。異なるインデックスについてのウェイの統合により、プロセッサは、最終的に、ローカルメモリに準じるものとしてキャッシュメモリを利用することも可能となる。
【００５０】
（第２の実施の形態）
図１２は、本発明の第２の実施の形態に係るキャッシュシステムの構成を示すブロック図である。本実施の形態に係るキャッシュシステムは、タグメモリアクセス制御部３５を有することを特徴とする。上記第１の実施の形態と同一の部分には同一の符号を付し、重複する説明を省略する。本実施の形態に係るキャッシュシステムは、命令キャッシュデータＲＡＭ３０、キャッシュタグＲＡＭ３１、命令キャッシュ制御部３２、タグ比較回路１３、及び命令フェッチユニット１５を有する。
【００５１】
命令キャッシュデータＲＡＭ３０及びキャッシュタグＲＡＭ３１は、ウェイ０に対応するメモリバンクと、ウェイ１に対応するメモリバンクとに分割されている。各メモリバンクは、それぞれ一つのウェイに対応している。命令キャッシュ制御部３２は、ウェイバリッドビット制御部３３及びタグメモリアクセス制御部３５を有する。ウェイバリッドビット記憶部３４は、レジスタ又は小規模なメモリであって、ウェイバリッドビット制御部３３内に設けられている。ウェイバリッドビット記憶部３４は、ウェイバリッドビット制御部３３により制御されたウェイバリッドビットＷＶを格納する。タグメモリアクセス制御部３５は、ウェイバリッドビット記憶部３４に記憶されたウェイバリッドビットＷＶに基づいて、キャッシュタグＲＡＭ３１の各メモリバンクへのアクセスを制御する。なお、ウェイバリッドビットＷＶ以外の情報であるタグ情報、バリッドビットＶ、リプレイスビットＲは、上記第１の実施の形態と同様に、キャッシュタグＲＡＭ３１に格納される。
【００５２】
例えば、あるインデックスについてウェイバリッドビット記憶部３４に記憶されたウェイバリッドビットＷＶが「１１」であるとする。ウェイバリッドビットＷＶ「１１」は、ウェイ０、ウェイ１ともに有効ウェイであることを表す。ウェイバリッドビットＷＶ「１１」に対して、タグメモリアクセス制御部３５は、ウェイ０に対応するメモリバンク、ウェイ１に対応するメモリバンクの両方へのアクセスを許可する。命令キャッシュ制御部３２からのアクセスに対して、キャッシュタグＲＡＭ３１は、ウェイ０に対応するメモリバンク、ウェイ１に対応するメモリバンクの両方を活性化し、両方のメモリバンクからタグ情報を読み出す。
【００５３】
次に、あるインデックスについてウェイバリッドビット記憶部３４に記憶されたウェイバリッドビットＷＶが「１０」であるとする。ウェイバリッドビットＷＶ「１０」は、ウェイ０が有効ウェイ、ウェイ１が無効ウェイであることを表す。ウェイバリッドビットＷＶ「１０」に対して、タグメモリアクセス制御部３５は、ウェイ０に対応するメモリバンクへのアクセスを許可し、ウェイ１に対応するメモリバンクへのアクセスを遮断する。このように、タグメモリアクセス制御部３５は、無効ウェイに対応するメモリバンクへのアクセスを抑制する。命令キャッシュ制御部３２からのアクセスに対して、キャッシュタグＲＡＭ３１は、ウェイ０に対応するメモリバンクのみを活性化し、ウェイ０に対応するメモリバンクのみからタグ情報を読み出す。
【００５４】
本実施の形態では、ウェイバリッドビットＷＶに基づき、タグメモリアクセス制御部３５によりキャッシュタグＲＡＭ３１への不要なアクセスを遮断するために、ウェイバリッドビット制御部３３内にウェイバリッドビット記憶部３４を設けることが望ましい。本実施の形態に係るキャッシュシステムは、ウェイバリッドビットＷＶによって指定される有効ウェイが存在するメモリバンクのみを活性化させることで、キャッシュタグＲＡＭ３１の全体を活性化させる場合に比較して、タグ情報を読み出す際の電力消費を低減させる。これにより、さらに消費電力を低減できるという効果を奏する。
【００５５】
各メモリバンクを一つのウェイに対応させる場合、ｍウェイに対して、命令キャッシュデータＲＡＭ３０及びキャッシュタグＲＡＭ３１をｍ個のメモリバンクに分割する。本実施の形態に係るキャッシュシステムは、本来のウェイの数とメモリバンクの数とを一致させる場合に限られない。各メモリバンクを複数のウェイに対応させることとし、ウェイの数よりメモリバンクの数を少なくしても良い。例えば、ウェイ０、ウェイ１、ウェイ２、ウェイ３からなる４ウェイセットアソシアティブ方式を採用する場合に、命令キャッシュデータＲＡＭ３０及びキャッシュタグＲＡＭ３１を２個のメモリバンクに分割することとしても良い。この場合、一方のメモリバンクは、ウェイ０及びウェイ１の二つのウェイに対応させ、他方のメモリバンクは、ウェイ２及びウェイ３の二つのウェイに対応させる。このように、各メモリバンクを複数のウェイに対応させる場合も、消費電力を低減させる効果を得ることができる。
【図面の簡単な説明】
【００５６】
【図１】第１の実施の形態に係るキャッシュシステムの構成を示すブロック図。
【図２】命令キャッシュデータＲＡＭの構造を説明する図。
【図３】キャッシュタグＲＡＭの構造、及びウェイバリッドビットについて説明する図。
【図４】キャッシュタグＲＡＭにおけるウェイの統合について説明する図。
【図５】命令キャッシュデータＲＡＭにおけるウェイの統合について説明する図。
【図６】第１の方式によりウェイバリッドビットを更新するための構成を説明する図。
【図７】第２の方式によりウェイバリッドビットを更新するための構成を説明する図。
【図８】アドレスデコーダにより定義されたメモリマップの例を示す図。
【図９】第３の方式によりウェイバリッドビットを更新するための構成を説明する図。
【図１０】キャッシュタグＲＡＭにおけるインデックス境界を越えたウェイの統合について説明する図。
【図１１】命令キャッシュデータＲＡＭにおけるインデックス境界を越えたウェイの統合について説明する図。
【図１２】第２の実施形態に係るキャッシュシステムの構成を示すブロック図。
【符号の説明】
【００５７】
１０、３０  命令キャッシュデータＲＡＭ、１１、３１  キャッシュタグＲＡＭ、１６、３３  ウェイバリッドビット制御部、２１  アクセスカウンタ、２３  アドレスデコーダ、２５  ウェイバリッドビット更新指示パス、３５  タグメモリアクセス制御部。
【図１】
2009252004.tif 000003
【図２】
2009252004.tif 000004
【図３】
2009252004.tif 000005
【図４】
2009252004.tif 000006
【図５】
2009252004.tif 000007
【図６】
2009252004.tif 000008
【図７】
2009252004.tif 000009
【図８】
2009252004.tif 000010
【図９】
2009252004.tif 000011
【図１０】
2009252004.tif 000012
【図１１】
2009252004.tif 000013
【図１２】
2009252004.tif 000014