(57)【要約】【課題】キャッシュ容量の変更に要する時間を低減させることを可能とするキャッシュシステムを提供すること。【解決手段】複数に分割されたメモリ領域を単位としてキャッシュ容量を動的に変更可能なキャッシュシステム１であって、有効なキャッシュデータが格納されたキャッシュラインである有効ラインの数を、キャッシュ容量を変更した場合にキャッシュデータが配置されることになるメモリ領域ごとにカウントするラインカウンタ１４を有し、キャッシュ容量を変更する場合にキャッシュデータを無効化する無効化対象が、ラインカウンタ１４によりカウントされた有効ラインの数に基づいて選択される。【選択図】      図１
2010033317.tif 000002
【特許請求の範囲】
【請求項１】
複数に分割されたメモリ領域を単位としてキャッシュ容量を動的に変更可能なキャッシュシステムであって、
有効なキャッシュデータが格納されたキャッシュラインである有効ラインの数を、前記キャッシュ容量を最大とした場合に前記キャッシュデータが配置されることになる前記メモリ領域ごとにカウントするラインカウンタを有し、
前記キャッシュ容量を変更する場合に前記キャッシュデータを無効化する無効化対象が、前記ラインカウンタによりカウントされた前記有効ラインの数に基づいて選択されることを特徴とするキャッシュシステム。
【請求項２】
前記ラインカウンタは、前記キャッシュシステムに対して下位の階層にある下位メモリに格納されたデータに整合しない前記キャッシュデータが格納された前記有効ラインであるダーティラインの数をカウントすることを特徴とする請求項１に記載のキャッシュシステム。
【請求項３】
前記ラインカウンタは、前記キャッシュラインへデータを書き込むライトアクセスがあるごとに前記カウントをプラスし、かつ前記キャッシュラインから前記下位メモリへデータを書き戻すライトバックがあるごとに前記カウントをマイナスし、
前記キャッシュ容量を変更することにより、前記カウントが少ない前記メモリ領域へ配置されることになる前記キャッシュデータが優先して前記無効化対象とされることを特徴とする請求項２に記載のキャッシュシステム。
【請求項４】
前記ラインカウンタは、前記キャッシュシステムに対して下位の階層にある下位メモリから前記キャッシュラインへデータをリフィルするごとに前記カウントをプラスし、かつ前記キャッシュラインに格納された前記キャッシュデータを解放するごとに前記カウントをマイナスし、
前記キャッシュ容量を変更することにより、前記カウントが少ない前記メモリ領域へ配置されることになる前記キャッシュデータが優先して前記無効化対象とされることを特徴とする請求項１に記載のキャッシュシステム。
【請求項５】
前記キャッシュシステムへキャッシュアクセスされたアドレスのインデックスを変換することにより、前記キャッシュシステムに格納された前記キャッシュデータのアドレスに整合させるインデックス変換手段を有することを特徴とする請求項１〜４のいずれか一項に記載のキャッシュシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、キャッシュシステムに関するものである。
【背景技術】
【０００２】
従来、マイクロプロセッサは、メモリアクセスのボトルネックを解消するために、チップ上にキャッシュメモリを搭載するものが主流となっている。処理性能の向上を図るために、チップに搭載されるキャッシュメモリの容量は年々増加している。チップが低消費電力化の傾向にある一方、マイクロプロセッサの消費電力に占めるキャッシュメモリの消費電力の割合が増加していることから、キャッシュメモリは、消費電力の低減が求められている。
【０００３】
キャッシュメモリの消費電力を低減させる方法として、データメモリやタグメモリを複数のメモリ領域に分割し、一部のメモリ領域のみへのアクセスとすることで、アクセス時の消費電力を低減させる方法がある。また、近年、アクセスを停止したときのリーク電力が問題視されるにつれ、複数のウェイを用いるセットアソシアティブ（Set  Associative）方式において、複数に分割されたメモリ領域を各ウェイに割り当て、一部のメモリ領域への電力供給を遮断する方法も取られている（例えば、特許文献１参照）。各ウェイへのアクセスを制御することにより、ウェイに割り当てられたメモリ領域を単位としてキャッシュ容量が変更される。
【０００４】
あるウェイへのアクセスを新たに禁止する場合、当該ウェイに格納されていたキャッシュデータが無効化されることになるため、下位の階層にある下位メモリへのデータの書き戻しが必要となる。また、キャッシュ容量を減少させる場合、ウェイの数を減少させることとなるため、キャッシュミスを生じる頻度が高まりキャッシュの性能を低下させることになる。また、キャッシュ容量は、ウェイの数以上のパターンへは変更できないことにもなる。
【０００５】
キャッシュ容量を変更するには、インデックスの数を変更する方法も取り得る。ウェイの数を維持することにより、キャッシュミスの増加を抑制させる。キャッシュ容量を増加させる場合は、インデックスの数を増加することにより配置が変化するデータが存在することとなる。インデックスの数を変更する方法の場合、ウェイの数を変更する場合とは異なり、下位メモリへのデータの書き戻しは、キャッシュ容量を減少させる場合のみならず、キャッシュ容量を増加させる場合にも必要となる。このことから、キャッシュ容量の変更に要する時間が増大するという問題を生じる。
【０００６】
【特許文献１】特開２００５−３１６８４２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
本発明は、キャッシュ容量の変更に要する時間を低減させることを可能とするキャッシュシステムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
本願発明の一態様によれば、複数に分割されたメモリ領域を単位としてキャッシュ容量を動的に変更可能なキャッシュシステムであって、有効なキャッシュデータが格納されたキャッシュラインである有効ラインの数を、キャッシュ容量を最大とした場合にキャッシュデータが配置されることになるメモリ領域ごとにカウントするラインカウンタを有し、キャッシュ容量を変更する場合にキャッシュデータを無効化する無効化対象が、ラインカウンタによりカウントされた有効ラインの数に基づいて選択されることを特徴とするキャッシュシステムが提供される。
【発明の効果】
【０００９】
本発明によれば、キャッシュ容量の変更に要する時間を低減させるという効果を奏する。
【発明を実施するための最良の形態】
【００１０】
以下に添付図面を参照して、本発明に係るキャッシュシステムの最良な実施の形態を詳細に説明する。
【００１１】
（第１の実施の形態）
図１は、本発明の第１の実施の形態に係るキャッシュシステム１、及びキャッシュシステム１へアクセスするマスタ２の構成を示すブロック図である。キャッシュシステム１は、データキャッシュメモリを備えるデータキャッシュシステムであって、例えば４ウェイのセットアソシアティブ方式を採用する。マスタ２は、プロセッサやハードエンジン等、キャッシュシステム１へアクセスするいずれのものとしても良い。キャッシュシステム１は、バス３を介して不図示のメインメモリ等に接続されている。
【００１２】
本実施の形態に係るキャッシュシステム１は、チップに内蔵されるもの、外付けされるもののいずれであっても良く、例えば、Ｌ１キャッシュ（Level  1  Cache）、Ｌ２キャッシュ（Level  2  Cache）、Ｌ３キャッシュ（Level  3  Cache）のいずれの階層へも採用可能である。また、キャッシュシステム１は、本発明が属する分野の技術者によって、以下の説明要綱に基づき、適宜変形可能である。例えば、キャッシュシステム１は、４ウェイ以外のｎウェイセットアソシアティブ方式、フルアソシアティブ（Full  Associative）方式、ダイレクトマップ（Direct  Map）方式のいずれの連想度を採用するものへも変形可能である。従って、以下の説明は、当該分野に対して開示される内容として広く理解されるべきであり、本発明を限定するものではない。
【００１３】
キャッシュシステム１は、インデックス変換器１０、タグメモリ１１、タグ比較部１２、データメモリ１３、ラインカウンタ１４を有する。タグメモリ１１は、キャッシュラインに対応するタグ情報を格納する。タグ比較部１２は、キャッシュシステム１へキャッシュアクセスされたアドレスのタグ情報と、タグメモリ１１から読み出されたタグ情報とを比較する。データメモリ１３は、キャッシュデータを格納する。インデックス変換器１０及びラインカウンタ１４については後述する。
【００１４】
マスタ２がデータを読み出すリードアクセスをした場合、アクセスがあったインデックスについて各ウェイのタグ情報がタグメモリ１１から読み出される。タグ比較部１２は、タグメモリ１１から読み出されたタグ情報と、アクセスされたアドレスのタグ情報とを比較する。タグメモリ１１から読み出されたいずれかのタグ情報と、アクセスされたアドレスのタグ情報とが、タグ比較部１２での比較により一致した場合、ヒットしたキャッシュデータが選択され、データメモリ１３から出力される。タグメモリ１１から読み出されたいずれのタグ情報も、アクセスされたアドレスのタグ情報に一致しない場合、下位メモリからキャッシュラインへデータをリフィルする。なお、下位メモリとは、キャッシュシステム１に対して下位の階層にあるメモリであって、例えば、Ｌ１キャッシュに対してＬ２キャッシュやＬ３キャッシュ、チップに内蔵されるキャッシュに対してチップに外付けされるメモリ等であるとする。
【００１５】
マスタ２がデータを書き込むライトアクセスをした場合、アクセスがあったインデックスについて各ウェイのタグ情報がタグメモリ１１から読み出される。タグ比較部１２は、タグメモリ１１から読み出されたタグ情報と、アクセスされたアドレスのタグ情報とを比較する。タグメモリ１１から読み出されたいずれかのタグ情報と、アクセスされたアドレスのタグ情報とが、タグ比較部１２での比較により一致した場合、データメモリ１３のうちヒットしたキャッシュデータを更新する。タグメモリ１１から読み出されたいずれのタグ情報も、アクセスされたアドレスのタグ情報に一致しない場合、キャッシュミスがあったラインをリフィルして、キャッシュ上にデータを割り当てる（ライトアロケート方式）。または、キャッシュミスがあったラインをリフィルせず、下位メモリにデータを書き込む（ノンアロケート方式）。本実施の形態に係るキャッシュシステム１は、ライトアクセスに対してキャッシュデータのみを更新し、メインメモリへの書き込みを一括して行うライトバック方式を採用する。
【００１６】
キャッシュシステム１は、キャッシュラインのラインサイズが２５６バイト、最大のキャッシュ容量が５１２キロ（ｋ）バイトであって、１２８ｋバイト、２５６ｋバイト、５１２ｋバイトの３つのパターンへキャッシュ容量の増減が可能であるとする。
【００１７】
図２は、キャッシュアクセスされたアドレスにおけるタグ情報及びインデックス番号の位置と、キャッシュ容量の変更とについて説明するものである。ここでは、３２ビットの信号によりキャッシュアクセスがなされるものとして説明する。メモリ容量が５１２ｋバイト、２５６ｋバイト、１２８ｋバイトのいずれである場合も、３２ビットのうち末尾の８ビットはアドレス以外の用途に用いられる。５１２ｋバイトの場合、末尾の８ビットの上の９ビットがインデックス番号、インデックス番号の上の１５ビットがタグ情報としてそれぞれ利用される。２５６ｋバイトの場合、末尾の８ビットの上の８ビットがインデックス番号、インデックス番号の上の１６ビットがタグ情報としてそれぞれ利用される。１２８ｋバイトの場合、末尾の８ビットの上の７ビットがインデックス番号、インデックス番号の上の１７ビットがタグ情報としてそれぞれ利用される。
【００１８】
図３は、キャッシュシステム１によるキャッシュ容量の増加について説明するものである。キャッシュシステム１は、最大容量時のメモリ領域を４つに分割して得られる１２８ｋバイトのメモリ領域ＭＡ、ＭＢ、ＭＣ、ＭＤを単位として、キャッシュ容量を動的に変更可能である。各メモリ領域ＭＡ、ＭＢ、ＭＣ、ＭＤは、それぞれ１２８インデックスに相当する。
【００１９】
例えば、ウェイの数を変更せずにキャッシュ容量を１２８ｋバイトから５１２ｋバイトへ変更する場合、インデックスの数は１２８から５１２へ変化する。キャッシュ容量が１２８ｋバイトであるときにおけるタグ情報の下位２ビットは、キャッシュ容量を５１２ｋバイトへ変更することによりインデックス番号の上位２ビットとされる（図２参照）。インデックス番号の上位２ビットが変化するキャッシュデータについては、キャッシュ容量を増加させる前後において配置が変化することとなる。
【００２０】
キャッシュ容量を変更させることにより、例えば、図３に示すように、インデックス０に格納されていたキャッシュデータのうち、ウェイ０のキャッシュデータがインデックス１２８へ、ウェイ１のキャッシュデータがインデックス２５６へ、ウェイ２のキャッシュデータがインデックス３８４へ、それぞれ移動するようなケースが起こり得る。このように配置が変化したキャッシュデータへはアクセスができなくなるため、キャッシュ容量の変更に伴い、有効なキャッシュデータを下位メモリへ書き戻し、キャッシュデータを無効化する処理が必要となる。なお、キャッシュ容量を１２８ｋバイトから２５６ｋバイトへ変更する場合、及び２５６ｋバイトから５１２ｋバイトへ変更する場合も、キャッシュデータの書き戻し及び無効化処理は必要となる。
【００２１】
図４は、図１に示すラインカウンタ１４の詳細な構成を示す。ラインカウンタ１４は、４つのカウンタ（カウンタＡ、カウンタＢ、カウンタＣ、カウンタＤ）と、カウンタごとに設けられた比較器とを有する。マスタ２によるライトアクセスがあった場合、及びライトバックがあった場合、タグ比較部１２は、アクセスされたアドレスのうち１６ビット目〜１５ビット目の２ビットをラインカウンタ１４へ出力する。
【００２２】
タグ比較部１２からラインカウンタ１４へ出力されるビット列は、キャッシュ容量が最大である場合にインデックス番号を表すビット列のうち上位から、ラインカウンタ１４のカウンタの個数を示すために必要十分なビット数とされる。本実施の形態の場合、最大容量の５１２ｋバイトのとき、インデックス番号を表すビット列は１６ビット目〜８ビット目である。ラインカウンタ１４のカウンタの個数４つを示すためには２ビットが必要十分であることから、ラインカウンタ１４への入力は１６ビット目〜１５ビット目の２ビットとされる。ラインカウンタ１４へ出力されるビット列は、キャッシュ容量が最大であるものとした場合にデータが配置されるメモリ領域を表す。なお、１６ビット目〜１５ビット目の２ビットは、キャッシュ容量が１２８ｋバイトであるときは、タグ情報の末尾２ビットに相当する。
【００２３】
カウンタＡ、カウンタＢ、カウンタＣ、カウンタＤは、いずれもライトアクセスがあるごとにカウントをプラス１、ライトバックがあるごとにカウントをマイナス１とする。カウンタＡの操作は、カウンタＡに対応する比較器において、入力されたビットと「０（＝００）」とを比較した結果、一致したことが条件とされる。カウンタＢの操作は、カウンタＢに対応する比較器において、入力されたビットと「１（＝０１）」とを比較した結果、一致したことが条件とされる。カウンタＣの操作は、カウンタＣに対応する比較器において、入力されたビットと「２（＝１０）」とを比較した結果、一致したことが条件とされる。カウンタＤの操作は、カウンタＤに対応する比較器において、入力されたビットと「３（＝１１）」とを比較した結果、一致したことが条件とされる。
【００２４】
カウンタＡによるカウントは、キャッシュ容量を最大の５１２ｋバイトとした場合に、キャッシュデータがメモリ領域ＭＡ（インデックス０〜１２７）に配置されることになるダーティラインの数を表す。カウンタＢによるカウントは、キャッシュ容量を最大の５１２ｋバイトとした場合に、キャッシュデータがメモリ領域ＭＢ（インデックス１２８〜２５５）に配置されることになるダーティラインの数を表す。カウンタＣによるカウントは、キャッシュ容量を最大の５１２ｋバイトとした場合に、キャッシュデータがメモリ領域ＭＣ（インデックス２５６〜３８３）に配置されることになるダーティラインの数を表す。カウンタＤによるカウントは、キャッシュ容量を最大の５１２ｋバイトとした場合に、キャッシュデータがメモリ領域ＭＤ（インデックス３８４〜５１１）に配置されることになるダーティラインの数を表す。
【００２５】
ダーティラインは、下位メモリ、例えばメインメモリに格納されたデータに整合しないキャッシュデータが格納された、いわゆるダーティな状態の有効ラインである。ラインカウンタ１４は、ダーティラインの数を、キャッシュ容量を最大の５１２ｋバイトとした場合にキャッシュデータが配置されることになるメモリ領域ＭＡ、ＭＢ、ＭＣ、ＭＤごとにカウントする。有効ラインは、有効なキャッシュデータが格納されたキャッシュラインである。
【００２６】
キャッシュ容量を１２８ｋバイトから５１２ｋバイトへ変更することにより、ラインカウンタ１４によるカウントが少ないメモリ領域に配置されることになるキャッシュデータが優先して無効化対象とされる。１２８ｋバイトから５１２ｋバイトへキャッシュ容量を増加する際において、例えば、図５に示すように、カウンタＡのカウントが「１８」、カウンタＢのカウントが「４５」、カウンタＣのカウントが「３０」、カウンタＤのカウントが「３８」であるとする。この場合、カウントが最大であるカウンタＢ以外の、カウンタＡ、カウンタＣ、及びカウンタＤが割り当てられたメモリ領域ＭＡ、ＭＣ、ＭＤへ配置されることになるキャッシュデータが無効化対象とされる。マスタ２は、ラインカウンタ１４のカウントを読み出し、メモリ領域ＭＡ、ＭＣ、ＭＤへ配置されることになるキャッシュデータのキャッシュラインに対して無効化要求を出す。
【００２７】
マスタ２からの無効化要求に対して、キャッシュ容量の変更前のインデックス０〜１２７にある全てのキャッシュラインのタグ情報がタグメモリ１１から読み出される。タグ比較部１２は、タグメモリ１１から読み出されたタグ情報と、ラインカウンタ１４によるカウントの結果から無効化対象とされたキャッシュデータのタグ情報とを比較する。キャッシュシステム１は、タグの末尾２ビットがカウンタＡに対応する「００」、カウンタＣに対応する「１０」、カウンタＤに対応する「１１」であるダーティなデータをデータメモリ１３からメインメモリへ書き戻し、キャッシュデータを無効化する。
【００２８】
無効化処理の後、ラインカウンタ１４は、カウンタＡ、カウンタＣ、カウンタＤの各カウントをゼロにリセットする。このように、キャッシュシステム１は、キャッシュ容量を変更する場合における無効化対象が、ラインカウンタ１４によりカウントされた有効ラインの数に基づいて選択される。これにより、書き戻し処理が最も少なくて済む動作を選択可能とし、キャッシュ容量の変更に要する時間を低減させることが可能となる。
【００２９】
図６は、１２８ｋバイトから５１２ｋバイトへキャッシュ容量を変更した後におけるキャッシュデータの配置について説明するものである。キャッシュ容量の変更前にカウンタＢが割り当てられ、メモリ領域ＭＢへ配置されることとされていたキャッシュデータ（以下、「本来のインデックス１２８〜２５５のキャッシュデータ」とする）は、キャッシュ容量の変更前に使用されていた１２８ｋバイトのメモリ領域ＭＡへ移動する。カウンタＡが割り当てられ、メモリ領域ＭＡへ配置されることとされていたキャッシュデータ（以下、「本来のインデックス０〜１２７のキャッシュデータ」とする）は、メモリ領域ＭＢに配置される。
【００３０】
カウンタＣが割り当てられ、メモリ領域ＭＣへ配置されることとされていたキャッシュデータ（以下、「本来のインデックス２５６〜３８３のキャッシュデータ」とする）は、メモリ領域ＭＣに配置される。カウンタＤが割り当てられ、メモリ領域ＭＤへ配置されることとされていたキャッシュデータ（以下、「本来のインデックス３８４〜５１１のキャッシュデータ」とする）は、メモリ領域ＭＤに配置される。なお、キャッシュ容量の変更前から変更後においてキャッシュデータが残されるメモリ領域ＭＡ以外のメモリ領域ＭＢ、ＭＣ、ＭＤにおけるキャッシュデータの配置は任意であって、上記の説明以外の配置であっても良い。
【００３１】
図７は、図１に示すインデックス変換器１０の詳細な構成を示す。インデックス変換器１０は、キャッシュシステム１へキャッシュアクセスされたアドレスのインデックスを変換することにより、キャッシュシステム１に格納されたキャッシュデータのアドレスに整合させるインデックス変換手段として機能する。インデックス変換器１０は、４つのレジスタＲ１、Ｒ２、Ｒ３、Ｒ４と、セレクタ（ＳＥＬ）とを有する。レジスタＲ１〜Ｒ４は、ラインカウンタ１４（図４参照）に設けられるカウンタと同数とされる。
【００３２】
無効化処理が終了した後、マスタ２は、各レジスタＲ１、Ｒ２、Ｒ３、Ｒ４に２ビットの値を設定する。各レジスタＲ１、Ｒ２、Ｒ３、Ｒ４に設定される値は、各メモリ領域ＭＡ、ＭＢ、ＭＣ、ＭＤに、キャッシュ容量の変更前における本来のいずれのインデックスのキャッシュデータが配置されているかを表す。「０（＝００）」は、本来のインデックス０〜１２７のキャッシュデータが配置されていることを表す。「１（＝０１）」は、本来のインデックス１２８〜２５５のキャッシュデータが配置されていることを表す。「２（＝１０）」は、本来のインデックス２５６〜３８３のキャッシュデータが配置されていることを表す。「３＝（１１）」は、本来のインデックス３８４〜５１１のキャッシュデータが配置されていることを表す。
【００３３】
レジスタＲ１、Ｒ２、Ｒ３、Ｒ４は、それぞれメモリ領域ＭＡ、ＭＢ、ＭＣ、ＭＤに対応している。レジスタＲ１の値「０１」は、メモリ領域ＭＡに配置されたキャッシュデータが本来のインデックス１２８〜２５５のキャッシュデータであることを示す。同様に、レジスタＲ２の値「００」は、メモリ領域ＭＢに配置されたキャッシュデータが本来のインデックス０〜１２７のキャッシュデータであること、レジスタＲ３の値「１０」は、メモリ領域ＭＣに配置されたキャッシュデータが本来のインデックス２５６〜３８３のキャッシュデータであること、レジスタＲ４の値「１１」は、メモリ領域ＭＤに配置されたキャッシュデータが本来のインデックス３８４〜５１１のキャッシュデータであることをそれぞれ示す。
【００３４】
セレクタは、マスタ２からアクセスされたアドレスのうち１６ビット目〜１５ビット目の２ビットの値に応じて、レジスタＲ１、Ｒ２、Ｒ３、Ｒ４に格納されたいずれかの値を選択し、出力する。アクセスされたアドレスのうち１６ビット目〜１５ビット目の２ビットは、キャッシュ容量が５１２ｋバイトであるときは、インデックス番号の上位２ビットに相当する。
【００３５】
図８は、セレクタによる値の選択について説明するものである。アクセスされたアドレスの１６ビット目〜１５ビット目が「００」である場合、セレクタは、レジスタＲ１に格納された値を出力する。アクセスされたアドレスの１６ビット目〜１５ビット目が「０１」である場合、セレクタは、レジスタＲ２に格納された値を出力する。アクセスされたアドレスの１６ビット目〜１５ビット目が「１０」である場合、セレクタは、レジスタＲ３に格納された値を出力する。アクセスされたアドレスの１６ビット目〜１５ビット目が「１１」である場合、セレクタは、レジスタＲ４に格納された値を出力する。
【００３６】
セレクタにより選択された値は、変換後のインデックス番号の上位２ビットとされる。変換後のインデックス番号のうち末尾７ビットは、アクセスされたアドレスの１４ビット目〜８ビット目のビット列がそのまま使用される。
【００３７】
本実施の形態の場合、アクセスされたアドレスの１６ビット目〜１５ビット目が「０１」であった場合、セレクタは、レジスタＲ２に格納された値「００」を出力する。インデックス番号の上位２ビットが「０１」から「００」へ変換されることで、本来のインデックス１２８〜２５５のキャッシュデータへのアクセスが可能となる。アクセスされたアドレスの１６ビット目〜１５ビット目が「００」であった場合、セレクタは、レジスタＲ１に格納された値「０１」を出力する。インデックス番号の上位２ビットが「００」から「０１」へ変換されることで、本来のインデックス０〜１２７のキャッシュデータへのアクセスが可能となる。
【００３８】
アクセスされたアドレスの１６ビット目〜１５ビット目が「１０」であった場合、セレクタは、レジスタＲ３に格納された値「１０」を出力する。インデックス番号の上位２ビットを「１０」のままとすることで、本来のインデックス２５６〜３８３のキャッシュデータへのアクセスが可能となる。アクセスされたアドレスの１６ビット目〜１５ビット目が「１１」であった場合、セレクタは、レジスタＲ４に格納された値「１１」を出力する。インデックス番号の上位２ビットを「１１」のままとすることで、本来のインデックス３８４〜５１１のキャッシュデータへのアクセスが可能となる。キャッシュシステム１は、インデックス変換器１０によるインデックスの変換により、キャッシュ容量を変更した後も、アクセスされるアドレスと、キャッシュシステム１に格納されたキャッシュデータとを整合させることができる。
【００３９】
なお、インデックス変換器１０は、リードアクセス、ライトアクセスの場合のみならず、キャッシュ容量の変更に伴う無効化処理等、キャッシュシステム１への全てのアクセスに対してインデックスを変換する。これにより、アクセスされるアドレスと、キャッシュシステム１に格納されたキャッシュデータとの整合性を常に確保できる。
【００４０】
本実施の形態では、ラインカウンタ１４に設けられるカウンタの個数は、キャッシュ容量の最大値を最小値で割った数（最大値／最小値）（５１２ｋバイト／１２８ｋバイト＝４）と一致する。カウンタの個数はキャッシュ容量の最大値／最小値に一致させる場合に限られない。カウンタの個数は、キャッシュ容量の最大値／最小値より大きい数であっても良い。カウンタは、少なくとも複数であれば良く、キャッシュ容量の最大値／最小値未満の個数であっても適用可能である。
【００４１】
（第２の実施の形態）
本発明の第２の実施の形態は、第１の実施の形態に係るキャッシュシステム１によるキャッシュ容量の減少について説明する。例えば、ウェイの数を変更せずにキャッシュ容量を５１２ｋバイトから１２８ｋバイトへ変更する場合、インデックスの数は５１２から１２８へ変化する。キャッシュ容量を減少させる場合、アクセスが禁止されるメモリ領域に格納されている有効なキャッシュデータが無効化されることとなる。キャッシュ容量を減少させる場合の前後においても、有効なキャッシュデータを下位メモリへ書き戻し、キャッシュデータを無効化する処理が必要となる。
【００４２】
例えば、５１２ｋバイトから１２８ｋバイトへキャッシュ容量を減少させる際において、図５に示すように、ラインカウンタ１４におけるカウンタＡのカウントが「１８」、カウンタＢのカウントが「４５」、カウンタＣのカウントが「３０」、カウンタＤのカウントが「３８」であるとする。この場合も、カウントが最大であるカウンタＢ以外の、カウンタＡ、カウンタＣ、及びカウンタＤが割り当てられたメモリ領域ＭＡ、ＭＣ、ＭＤへ配置されることになるキャッシュデータが無効化対象とされる。本実施の形態の場合も、書き戻し処理が最も少なくて済む動作を選択可能とし、キャッシュ容量の変更に要する時間を低減させることが可能となる。
【００４３】
図９は、５１２ｋバイトから１２８ｋバイトへキャッシュ容量を変更した後におけるキャッシュデータの配置について説明するものである。無効化処理の後、キャッシュシステム１は、メモリ領域ＭＢのみが使用される。キャッシュ容量を減少させることにより、キャッシュ容量５１２ｋバイトにおける本来のインデックス０〜５１１のキャッシュデータのうちの有効なキャッシュデータが、キャッシュ容量１２８ｋバイトの新たなインデックス０〜１２７に配置される。
【００４４】
本実施の形態では、マスタ２は、インデックス変換器１０の各レジスタＲ１、Ｒ２、Ｒ３、Ｒ４にいずれも「１（＝０１）」を設定する。これにより、いずれのアドレスがアクセスされた場合も、セレクタは、「０１」を出力する。本実施の形態の場合も、インデックス変換器１０によるインデックスの変換により、キャッシュ容量を変更した後も、アクセスされるアドレスと、キャッシュシステム１に格納されたキャッシュデータとを整合させることができる。
【００４５】
（第３の実施の形態）
本発明の第３の実施の形態に係るキャッシュシステムは、ライトアクセスがあるごとにキャッシュデータ及びメインメモリのデータを同時に更新するライトスルー方式を採用することを特徴とする。本実施の形態に係るキャッシュシステムの基本構成は、第１の実施の形態に係るキャッシュシステム１と同様である。以下、第１の実施の形態に係るキャッシュシステム１の構成を用いて、本実施の形態によるキャッシュ容量の変更について説明する。
【００４６】
本実施の形態では、ラインカウンタ１４のカウンタＡ、カウンタＢ、カウンタＣ、カウンタＤは、下位メモリからキャッシュラインへデータをリフィルするごとにカウントをプラス１、キャッシュラインに格納されたキャッシュデータを解放（フラッシュ）するごとにカウントをマイナス１とする。なお、カウントをマイナス１とする条件としては、キャッシュラインから下位メモリへのデータの書き戻しが発生するか否かは問わないものとする。
【００４７】
カウンタＡによるカウントは、キャッシュ容量を最大の５１２ｋバイトとした場合に、キャッシュデータがメモリ領域ＭＡ（インデックス０〜１２７）に配置されることになる有効ラインの数を表す。カウンタＢによるカウントは、キャッシュ容量を最大の５１２ｋバイトとした場合に、キャッシュデータがメモリ領域ＭＢ（インデックス１２８〜２５５）に配置されることになる有効ラインの数を表す。カウンタＣによるカウントは、キャッシュ容量を最大の５１２ｋバイトとした場合に、キャッシュデータがメモリ領域ＭＣ（インデックス２５６〜３８３）に配置されることになる有効ラインの数を表す。カウンタＤによるカウントは、キャッシュ容量を最大の５１２ｋバイトとした場合に、キャッシュデータがメモリ領域ＭＤ（インデックス３８４〜５１１）に配置されることになる有効ラインの数を表す。
【００４８】
ラインカウンタ１４は、有効ラインの数を、キャッシュ容量を最大の５１２ｋバイトとした場合にキャッシュデータが配置されることになるメモリ領域ＭＡ、ＭＢ、ＭＣ、ＭＤごとにカウントする。本実施の形態の場合も、キャッシュ容量を変更することにより、ラインカウンタ１４によるカウントが少ないメモリ領域に配置されることになるキャッシュデータが優先して無効化対象とされる。キャッシュ容量を変更する場合における無効化対象は、ラインカウンタ１４によりカウントされた有効ラインの数に基づいて選択される。これにより、無効化されないキャッシュデータを最大とする動作を選択することで、キャッシュ容量の変更に要する時間を低減させることが可能となる。
【００４９】
さらに、本実施の形態の場合、キャッシュ容量を変更した後に残る有効ラインの数を最大とすることにより、キャッシュ容量を変更した後のヒット率を向上させることができる。ライトスルー方式を採用する場合も、ライトバック方式を採用する場合と同様に、キャッシュ容量の増加及び減少のいずれにおいても、本発明の効果を得ることができる。
【図面の簡単な説明】
【００５０】
【図１】本発明の第１の実施の形態に係るキャッシュシステム、及びマスタの構成を示すブロック図。
【図２】キャッシュアクセスされたアドレスにおけるタグ情報及びインデックス番号の位置と、キャッシュ容量の変更とについて説明する図。
【図３】キャッシュシステムによるキャッシュ容量の増加について説明する図。
【図４】ラインカウンタの詳細な構成を示す図。
【図５】ラインカウンタによるカウントの例を示す図。
【図６】キャッシュ容量を変更した後におけるキャッシュデータの配置について説明する図。
【図７】インデックス変換器の詳細な構成を示す図。
【図８】セレクタによる値の選択について説明する図。
【図９】キャッシュ容量を変更した後におけるキャッシュデータの配置について説明する図。
【符号の説明】
【００５１】
１  キャッシュシステム、１０  インデックス変換器、１１  タグメモリ、１３  データメモリ、１４  ラインカウンタ。
【図１】
2010033317.tif 000003
【図２】
2010033317.tif 000004
【図３】
2010033317.tif 000005
【図４】
2010033317.tif 000006
【図５】
2010033317.tif 000007
【図６】
2010033317.tif 000008
【図７】
2010033317.tif 000009
【図８】
2010033317.tif 000010
【図９】
2010033317.tif 000011