(57)【特許請求の範囲】
【請求項１】
ウェイ数がＮのキャッシュメモリと、
前記キャッシュメモリの容量を増加、または削減するための指示にしたがって、前記容量を増加、または削減するとともに、前記容量を増加、または削減した際に無効となる位置に格納されているデータの無効化を行い、前記キャッシュメモリへのアクセス要求時に受信するアクセスアドレスに対応するインデックスが、無効化の対象か否かに基づいて適切なインデックスを選択し、前記適切なインデックスによるアクセス処理を実行する無効化処理部と
を具備し、
前記無効化処理部は、
変更前の容量と変更後の容量とに応じて無効化するインデックスを設定し、アービタに対して、設定したインデックスの無効化を要求する増減処理ユニットと、
前記アービタからの前記アクセスアドレスに応じた、前記変更前の容量にもとづいたインデックスまたは前記変更後の容量にもとづいたインデックスのいずれかを選択し、前記選択されたインデックスに応じてタグメモリ内から対応するタグ情報を読み出すインデックス変換機と、
を含み、
前記キャッシュメモリのウェイ数を維持したまま、前記キャッシュメモリへのアクセスを禁止せずに前記キャッシュメモリの容量を増加、または削減することを特徴とするキャッシュメモリシステム。
【請求項２】
前記アービタは、前記無効化処理部の動作中に、前記キャッシュメモリに対するアクセス要求を受けると、
前記アクセスアドレスに対応する、前記変更前の容量にもとづいたインデックスが無効化の対象でなければ、前記変更後の容量にもとづいたインデックスを選択するように前記インデックス変換機を制御して、前記変更後の容量にもとづいたインデックスによるアクセス処理を実行させ、
前記変更前の容量にもとづいたインデックスが無効化の対象であって、既に無効化のための動作が終了している場合には、前記変更後の容量にもとづいたインデックスを選択するように前記インデックス変換機を制御して、前記変更後の容量にもとづいたインデックスによるアクセス処理を実行させ、
前記変更前の容量にもとづいたインデックスが無効化の対象であって、無効化のための動作が終了していない場合には、前記変更前の容量にもとづいたインデックスを選択するように前記インデックス変換機を制御し、前記変更前の容量にもとづいたインデックスを用いたタグ比較結果がヒットしたならば、前記変更前の容量にもとづいたインデックスによるアクセス処理を実行させ、前記タグ比較結果がミスしたならば、前記変更後の容量にもとづいたインデックスを選択するように前記インデックス変換機を制御して、前記変更後の容量にもとづいたインデックスによるアクセス処理を実行させる
ことを特徴とする請求項１に記載のキャッシュメモリシステム。
【請求項３】
前記指示が、前記キャッシュメモリの容量を増加させる指示の場合、無効化すべきデータが格納されているインデックスのウェイを無効化するためのタグ比較器をさらに備えることを特徴とする請求項１に記載のキャッシュメモリシステム。
【請求項４】
前記インデックス変換機は、前記変更前の容量にもとづいたインデックスを第１の選択インデックスとして選択し、前記変更後の容量にもとづいたインデックスを第２の選択インデックスとして選択するものであって、
前記無効化処理部の動作中に、前記キャッシュメモリに対するアクセス要求を受けると、
前記アクセスアドレスに対応する、前記変更前の容量にもとづいたインデックスが無効化の対象でない場合には、前記第１の選択インデックスによるアクセス処理を実行し、
前記変更前の容量にもとづいたインデックスが無効化の対象である場合には、前記第１の選択インデックスを用いたタグ比較結果がヒットしたならば、前記第１の選択インデックスによるアクセス処理を実行し、前記タグ比較結果がミスしたならば、前記第２の選択インデックスによるアクセス処理を実行する
ことを特徴とする請求項１に記載のキャッシュメモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、キャッシュメモリシステムに関するもので、たとえば、キャッシュメモリの容量（メモリサイズ）を変更することが可能なキャッシュシステムに関するものである。
【背景技術】
【０００２】
キャッシュシステムの消費電力を抑える方法として、データメモリおよびタグメモリを複数個に分割し、その一部のアドレスにしかアクセスしないことで、アクセス時の消費電力を下げる方法がある。また、アクセスしていない時のリーク電力が問題になってきている近年においては、セットアソシアティブキャッシュの一部のウェイ（ｗａｙ）へのアクセスを禁止することによってキャッシュメモリの容量を減らし、そのｗａｙに割り当てられたメモリ用の電源を遮断する方法も取られるようになった。この方法を取る場合、あるｗａｙへのアクセスを禁止した際に、そのｗａｙに格納されていたデータが無効化されてしまうので、下の階層のメモリにデータを書き戻す必要がある。逆に、アクセス禁止を解除する際には、格納されているデータについては何も処理を行う必要がない。
【０００３】
しかしながら、上述した一部のｗａｙへのアクセスを禁止する方法の場合、キャッシュメモリの容量を削減するためにｗａｙ数を減らさなければならず、競合ミスに弱くなり、キャッシュメモリとしての性能が悪化してしまうという問題がある。また、ｗａｙ数以上には容量の増減ができないという問題もある。
【０００４】
なお、本発明に関連する技術として、以下のような提案がある（たとえば、特許文献１参照）。
【０００５】
この特許文献１に記載された発明は、可変サイズのキャッシュメモリを持つ集積回路の動作方法に関するものであって、キャッシュメモリサイズ信号に応じて変化するマスクを用いて、キャッシュメモリのサイズを可変させるようにしたものである。しかしながら、キャッシュメモリのサイズを可変させる場合には、キャッシュメモリへのアクセスを禁止する必要があった。
【特許文献１】特開２００７−１７２６２３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
本発明は、キャッシュメモリへのアクセスを禁止したりすることなく、ｗａｙ数を維持したまま、キャッシュメモリの容量を変更することが可能なキャッシュメモリシステムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
実施形態によれば、ウェイ数がＮのキャッシュメモリと、前記キャッシュメモリの容量を増加、または削減するための指示にしたがって、前記容量を増加、または削減するとともに、前記容量を増加、または削減した際に無効となる位置に格納されているデータの無効化を行い、前記キャッシュメモリへのアクセス要求時に受信するアクセスアドレスに対応するインデックスが、無効化の対象か否かに基づいて適切なインデックスを選択し、前記適切なインデックスによるアクセス処理を実行する無効化処理部とを具備し、前記無効化処理部は、変更前の容量と変更後の容量とに応じて無効化するインデックスを設定し、アービタに対して、設定したインデックスの無効化を要求する増減処理ユニットと、前記アービタからの前記アクセスアドレスに応じた、前記変更前の容量にもとづいたインデックスまたは前記変更後の容量にもとづいたインデックスのいずれかを選択し、前記選択されたインデックスに応じてタグメモリ内から対応するタグ情報を読み出すインデックス変換機と、を含み、前記キャッシュメモリのウェイ数を維持したまま、前記キャッシュメモリへのアクセスを禁止せずに前記キャッシュメモリの容量を増加、または削減することを特徴とするキャッシュメモリシステムが提供される。
【発明の効果】
【０００８】
本発明によれば、キャッシュメモリへのアクセスを禁止したりすることなく、ｗａｙ数を維持したまま、キャッシュメモリの容量を変更することが可能なキャッシュメモリシステムを提供できる。
【発明を実施するための最良の形態】
【０００９】
以下、本発明の実施の形態について図面を参照して説明する。ただし、図面は模式的なものであり、各図面の寸法および比率などは現実のものとは異なることに留意すべきである。また、図面の相互間においても、互いの寸法の関係および／または比率が異なる部分が含まれていることは勿論である。特に、以下に示すいくつかの実施の形態は、本発明の技術思想を具体化するための装置および方法を例示したものであって、構成部品の形状、構造、配置などによって、本発明の技術思想が特定されるものではない。この発明の技術思想は、その要旨を逸脱しない範囲において、種々の変更を加えることができる。
【００１０】
［第１の実施形態］
図１は、本発明の第１の実施形態にしたがったキャッシュシステムの構成例を示すものである。なお、本実施形態では、プロセッサを含む集積回路として構成した場合を例に説明する。
【００１１】
図１において、プロセッサ１１は、メモリアクセス時に、たとえば３２ビット（ｂｉｔ）のアクセスアドレスを用いて、キャッシュメモリ部１２へのアクセスを実行する。キャッシュメモリ部１２は、タグメモリ２１、タグ比較器２２、および、データメモリ（キャッシュ）２３によって構成されている。データメモリ２３には、バス１３が接続されている。
【００１２】
本実施形態の場合、たとえば図２に示すように、データメモリ２３は、ラインサイズが２５６バイト（Ｂｙｔｅ）で、最大容量が５１２キロバイト（ＫＢｙｔｅ）の、４−ｗａｙ・キャッシュ（ｗａｙ０〜ｗａｙ３）となっている。つまり、容量が５１２ＫＢｙｔｅのキャッシュの場合、２５６Ｂｙｔｅ×４ｗａｙが、５１２インデックス（ｉｎｄｅｘ）分存在する。また、本実施形態においては、データメモリ２３の容量を、たとえば５１２ＫＢｙｔｅ，２５６ＫＢｙｔｅ，１２８ＫＢｙｔｅ，６４ＫＢｙｔｅの４つのパターン（メモリサイズ）に変更できるものとする。なお、データメモリ２３は、Ｌ１，Ｌ２，Ｌ３のように様々な階層に置かれるが、本実施形態では階層を特定しない。また、データメモリ２３は、連想度に応じて複数の種類（たとえば、ｄｉｒｅｃｔ  ｃａｃｈｅ、ｓｅｔ−ａｓｓｏｃｉａｔｉｖｅ  ｃａｃｈｅ、ｆｕｌｌ−ａｓｓｏｃｉａｔｉｖｅ  ｃａｃｈｅ）があるが、本実施形態は、どの連想度のものにも対応が可能である。
【００１３】
キャッシュメモリの削減を行わない場合のキャッシュアクセス、つまり、データメモリ２３の容量を変更しない場合のプロセッサ１１からの通常のメモリアクセスは、図１に示すように、アービタ２４およびインデックス変換機２５を介して、タグメモリ２１から該当するインデックスのタグ情報を引き出し、タグ比較器２２でアクセスアドレス上のタグ情報とのタグ比較を行い、その結果に応じてデータメモリ２３をアクセスすることにより行われる。
【００１４】
一方、キャッシュメモリの削減を行う場合のプロセッサ１１からの通常のキャッシュアクセスは、キャッシュ増減処理ユニット２６、アービタ２４およびインデックス変換機２５を介して、データメモリ２３の容量の削減にともなうデータの無効化（インデックスの無効化・再割り当て）に応じて更新される、更新前または更新後のタグメモリ２１内から該当するインデックスのタグ情報を引き出し、タグ比較器２２でアクセスアドレス上のタグ情報とのタグ比較を行い、その結果に応じてデータメモリ２３をアクセスすることにより行われる。
【００１５】
図３は、タグ比較器２２でのタグ比較に使用されるアクセスアドレス上のタグ情報のサイズについて、メモリサイズごとに示すものである。すなわち、同図（ａ）は、メモリサイズを５１２ＫＢｙｔｅとした場合のアクセスアドレスであって、１５ｂｉｔのタグ情報（ｔａｇ）と９ビットのインデックスとを有した、３２ｂｉｔ構成とされている。同図（ｂ）は、メモリサイズを２５６ＫＢｙｔｅとした場合のアクセスアドレスであって、１６ｂｉｔのタグ情報と８ビットのインデックスとを有した、３２ｂｉｔ構成とされている。同図（ｃ）は、メモリサイズを１２８ＫＢｙｔｅとした場合のアクセスアドレスであって、１７ｂｉｔのタグ情報と７ビットのインデックスとを有した、３２ｂｉｔ構成とされている。同図（ｄ）は、メモリサイズを６４ＫＢｙｔｅとした場合のアクセスアドレスであって、１８ｂｉｔのタグ情報と６ビットのインデックスとを有した、３２ｂｉｔ構成とされている。
【００１６】
なお、本実施形態の場合、キャッシュメモリの削減を可能とするために、タグメモリ２１内に格納されるタグ情報のサイズは、現在のキャッシュメモリの容量に関わらず、図３（ｄ）に示されたタグ情報と同じ「１８ｂｉｔ」となっている。
【００１７】
次に、ｗａｙ数を保ったまま、キャッシュメモリの容量を削減させる際の動作について説明する。ここでは、容量を５１２ＫＢｙｔｅから１２８ＫＢｙｔｅに変更する場合を例に説明する。この例の場合、たとえば図４に示すように、３８４個分のインデックスを無効化する（ｗｒｉｔｅ−ｂａｃｋキャッシュの場合は、下位のメモリへ書き戻す）必要がある。無効化されたインデックスに割り当てられていたアドレスは、１２８インデックスごとに、変更後のインデックスに再割り当てし直される。たとえば、５１２ＫＢｙｔｅ時にｉｎｄｅｘ１９２，３２０，４４８にそれぞれ割り当てられた各アドレスは、１２８ＫＢｙｔｅに変更後は全てｉｎｄｅｘ６４に割り当てられることになる。変更後のサイズにもとづいた新しいインデックスは、変更前（現在）のサイズにもとづいた古いインデックスを、変更後のサイズによって割ったときの「余り」として求められる。
【００１８】
たとえば、プロセッサ１１が、キャッシュメモリの容量を５１２ＫＢｙｔｅから１２８ＫＢｙｔｅに削減させる指示を出したとする。すると、その“削減の指示”は、キャッシュ増減処理ユニット２６およびインデックス変換機２５に送られる。
【００１９】
キャッシュ増減処理ユニット２６は、たとえば図５に示すように、“削減の指示”がプロセッサ１１から入力されると、“変更後のサイズ”を保持器２６ａにセットする。また、保持器２６ｂには“現在のサイズ”がセットされており、“変更後のサイズ”および“現在のサイズ”を次インデックス算出器２６ｃに送ることによって、無効化するインデックスの範囲を設定する。この例の場合は、ｉｎｄｅｘ１２８〜５１１が無効化する範囲として設定される。次インデックス算出器２６ｃは、また、無効化する範囲のインデックスの内、初めに処理する“処理対象インデックス”を保持器２６ｄにセットする。
【００２０】
一方、プロセッサ１１からの“削減の指示”が入力されると、ＯＮ／ＯＦＦステート２６ｅがオン状態（ＯＮ）となる。そして、このオン状態のときに、保持器２６ｄからの“処理対象インデックス”が入力されることにより、ＯＮ／ＯＦＦステート２６ｅは、アービタ２４に対して、該当するインデックスについての無効化を要求する。
【００２１】
インデックス変換機２５は、たとえば図６に示すように、プロセッサ１１からの“削減の指示”が入力されると、保持器２５ａに“変更後のサイズ”をセットする。また、ＯＮ／ＯＦＦステート２５ｂがオン状態となるとともに、無効化対象テーブル２５ｃを活性化する。無効化対象テーブル２５ｃは、最大インデックス数（この例の場合、５１２インデックス）分のエントリを持ち、各エントリには“現在のサイズ”にもとづくインデックスが無効化対象か否かの情報が格納されている。また、無効化対象テーブル２５ｃは、“削減の指示”が入力されると、無効化対象のインデックスのフラグが全て“オン”にセットされる。つまり、無効化対象テーブル２５ｃは、キャッシュ増減処理ユニット２６からの“処理対象インデックス”が入力された際に、保持器２５ｄによって保持されている“現在のサイズ”にもとづくインデックスが無効化対象かどうかをチェックするのに使用される。
【００２２】
セレクタ（ＳＥＬ）２５ｅは、アービタ２４から入力されたアクセスアドレスに対応する、“現在のサイズ”にもとづいたインデックスまたは“変更後のサイズ”にもとづいたインデックスのいずれかを選択する。その際、ＯＮ／ＯＦＦステート２５ｂの状態と、無効化対象テーブル２５ｃを参照することにより得られる“現在のサイズ”にもとづいたインデックスが無効化対象か否かの情報と、アクセスアドレスに付随してアービタ２４から入力されるリトライフラグとによって、どちらのインデックスを使用するかが決定される。なお、ＯＮ／ＯＦＦステート２５ｂは、キャッシュ増減処理ユニット２６からの出力“無効化処理終了”によってオフ状態（ＯＦＦ）となる。
【００２３】
図７は、上記したセレクタ２５ｅにおける選択論理を示すものである。たとえば、キャッシュメモリの容量を削減する場合においては、キャッシュ増減処理ユニット２６から“無効化要求”が出力される（ＯＮ／ＯＦＦステート２６ｅの出力がＯＮ）。これにより、発生する通常のキャッシュアクセスとの競合が、アービタ２４によって制御される。競合発生時、アービタ２４は、通常のキャッシュアクセスまたは“無効化要求”のどちらの処理を優先しても構わない。
【００２４】
以下では、アービタ２４において、「ｉｎｄｅｘ１９２」に対する“無効化要求”が選択された場合を仮定して説明する。“無効化要求”時、リトライフラグは常にオフ状態である。そのため、“無効化要求”がインデックス変換機２５に入力されると、セレクタ２５ｅによって、アクセスするインデックス番号が選択される。この際、無効化のための処理を実行中なので、ＯＮ／ＯＦＦステート２５ｂは常に“オン”となり、無効化対象テーブル２５ｃの該当エントリのフラグ（無効化対象か否かの情報）も同様に常に“オン”になる。よって、アクセスするインデックス番号（選択結果）としては、保持器２５ｄで保持されている“現在のサイズ（この例では、５１２ＫＢｙｔｅ）”にもとづいたインデックス番号、つまり、「ｉｎｄｅｘ１９２」が選択される。なお、この場合、“変更後のサイズ”にもとづいたインデックス番号は、１９２÷１２８の余りから「６４」になるはずである。
【００２５】
次いで、選択された「ｉｎｄｅｘ１９２」に応じて、タグメモリ２１内からタグ情報が読み出される。この読み出しの結果、たとえば、ｗａｙ０〜２が“ｖａｌｉｄ”であり、ｗａｙ３が“ｉｎｖａｌｉｄ”だったとすると、データメモリ２３における、ｗａｙ０〜２の無効化のための処理が行われる。なお、データメモリ２３がｗｒｉｔｅ−ｂａｃｋキャッシュの場合は、“ｄｉｒｔｙ状態”であるｗａｙの書き戻しが必要である。
【００２６】
無効化のための処理が終了すると、タグ比較器２２よりキャッシュ増減処理ユニット２６に対して、“無効化処理終了”とともに、処理の終了した「インデックス番号」が通知される。タグ比較器２２からの“無効化処理終了”は、プロセッサ１１にも通知される。この通知を受けたキャッシュ増減処理ユニット２６は、次インデックス算出器２６ｃによって、次に処理する「インデックス番号」を決定し、それを保持器２６ｄにセットする。また、キャッシュ増減処理ユニット２６は、同時に、インデックス変換機２５に対して、無効化のための処理が終了した「インデックス番号」を通知する。一方、インデックス変換機２５は、無効化対象テーブル２５ｃの、受け取った「インデックス番号」に該当するエントリのフラグを“オフ”する。こうして、次に処理する「インデックス番号」が決定したら、再度、キャッシュ増減処理ユニット２６より“無効化要求”が出力される。
【００２７】
以上の動作を繰り返し、キャッシュ増減処理ユニット２６に“無効化処理終了”とともに通知された「インデックス番号」が最後の無効化対象の「インデックス番号」の場合、“削減の指示”に対する無効化のための処理の終了なので、ＯＮ／ＯＦＦステート２６ｅがオフ状態にセットされるとともに、保持器２６ｂの“現在のサイズ”が保持器２６ａの“変更後のサイズ”によって更新される。また、“削減の指示”に対する無効化のための処理の終了はインデックス変換機２５にも通知され、ＯＮ／ＯＦＦステート２５ｂがオフ状態にセットされるとともに、保持器２５ｄの“現在のサイズ”が保持器２５ａの“変更後のサイズ”によって更新される。
【００２８】
最終的には、フラグが“オフ”された無効化対象テーブル２５ｃのエントリによってタグメモリ２１内のタグ情報が更新されることにより、“削減の指示”に対する一連の動作が完了する。
【００２９】
次に、図８を参照して、無効化のための処理の最中に、プロセッサ１１からの通常のキャッシュアクセスにより競合が発生した場合について説明する。プロセッサ１１からの“アクセス要求”は、初めはリトライフラグがオフの状態でインデックス変換機２５に入力される（ステップＳＴ０１）。
【００３０】
このとき、インデックス変換機２５は、たとえば図７に示したように、ＯＮ／ＯＦＦステート２５ｂがオン状態であり、リトライフラグはオフ状態なので、アクセスするインデックスが“無効化対象”か否かに応じて、選択する「インデックス番号」を決定する（ステップＳＴ０２）。たとえば、「ｉｎｄｅｘ３２」へのアクセスは、初めから“無効化対象”になっていないので、“変更後のサイズ”にもとづいた「インデックス番号」が選択される。この場合、削減の前後で「インデックス番号」に変化がないので、「ｉｎｄｅｘ３２」がそのまま選択される（ステップＳＴ０３）。
【００３１】
また、たとえば「ｉｎｄｅｘ１９２」へのアクセスにおいて、既に、その「インデックス番号」に対する無効化のための処理が終了している場合は、５１２ＫＢｙｔｅ時に割り当てられていた「ｉｎｄｅｘ１９２」に対応する位置にはもはや有効なデータが格納されていないので、“変更後のサイズ”にもとづいた「ｉｎｄｅｘ６４」が選択される。つまり、「ｉｎｄｅｘ６４」に対応する位置に有効なデータが格納し直されているので、以降は、変更後の「ｉｎｄｅｘ６４」で通常通りのアクセスとなる（ステップＳＴ０３）。
【００３２】
一方、“無効化対象”の場合、たとえば「ｉｎｄｅｘ１９２」へのアクセスにおいて、いまだ無効化のための処理が終わっていない場合は、「ｉｎｄｅｘ１９２」によってタグメモリ２１内のタグ情報を参照し、タグ比較器２２でのタグ比較を行う（ステップＳＴ０４）。“キャッシュヒット”の場合は、いまだ無効化されていない位置（“現在のサイズ”にもとづいた「ｉｎｄｅｘ１９２」）上に有効なデータが存在するので、“通常のヒット処理”を行う（ステップＳＴ０５，ＳＴ０６）。
【００３３】
これに対し、“キャッシュミス”の場合、無効化される予定のインデックスにアクセスすると、無効化のための処理が無限に終了しない危険性があるので、選択された「インデックス番号」ではアクセスせず、リトライフラグをオン状態にした後、“アクセス要求”を再投入する（ステップＳＴ０５，ＳＴ０７）。再投入された“アクセス要求”では、たとえば図７に示したように、“変更後のサイズ”にもとづいた「インデックス番号」が必ず選択されるので、変更後の「ｉｎｄｅｘ６４」で通常のアクセスを行う（ステップＳＴ０８）。
【００３４】
なお、無効化のための処理が終了する前に、さらに「ｉｎｄｅｘ１９２」へのアクセス要求が入力された場合、同様の手順により、最終的には「ｉｎｄｅｘ６４」へアクセスされるので、データの不一致は起こらない。また、「ｉｎｄｅｘ３２０」へのアクセス要求が入力され、これが“キャッシュミス”となり、「ｉｎｄｅｘ６４」へのアクセス要求が選択された場合も、図３（ｄ）に示したように、６４ＫＢｙｔｅのタグ情報（１８ｂｉｔ）には５１２ＫＢｙｔｅの場合のｉｎｄｅｘ（９ｂｉｔ）の上位３ｂｉｔが含まれるので、「ｉｎｄｅｘ１９２」へのアクセスと「ｉｎｄｅｘ３２０」へのアクセスとで必ずタグ情報が異なる（インデックスの上位３ｂｉｔ（＝タグ情報の下位３ｂｉｔ）が「０１１」または「１０１」）。このため、正しく“ヒット／ミス”が判定される。
【００３５】
このように、いずれの場合も無効化すべきインデックスに対応する位置に格納されているデータは無効化により変化しないので、必ずキャッシュメモリの容量を削減するための処理は正常に終了する。
【００３６】
上記したように、ｗａｙ数を保ったまま、キャッシュメモリの容量を削減できるようにしているので、ｗａｙ数を減らしてキャッシュメモリの容量を削減する場合に比べ、競合ミスに強い。また、容量の削減にともなってインデックスが変化するデータについてのみ、正しく無効化を行うとともに、削減の前後でインデックスが異なるアドレスへのアクセス要求についても、無効化のための処理の最中にアクセスできるので、動的に、つまり、通常のアクセス動作を禁止することなしに、キャッシュメモリの容量を削減することが可能となるなど、キャッシュ容量削減時のペナルティが少なくて済む。
【００３７】
また、キャッシュ容量削減時には、キャッシュシステムの消費電力を抑制できることは勿論である。
【００３８】
［第２の実施形態］
図９は、本発明の第２の実施形態にしたがったキャッシュシステムの構成例を示すものである。なお、本実施形態では、さらに、キャッシュメモリの容量を増加させる場合を例に説明する。また、第１の実施形態と同一の部分には同一の符号を付して、詳しい説明は割愛する。
【００３９】
たとえば、プロセッサ１１が、ｗａｙ数を保ったまま、キャッシュメモリの容量を１２８Ｋｂｙｔｅから５１２ＫＢｙｔｅに増加させる指示を出したとする。すると、その“増加の指示”は、インデックス変換機２５、キャッシュ増減処理ユニット２６およびタグ比較器２２’に送られる。
【００４０】
ここで、「ｉｎｄｅｘ０」のｗａｙ０〜２には、サイズ変更後に、「ｉｎｄｅｘ１２８，２５６，３８４」に配置されるデータがそれぞれ格納されているとする。この例の場合、たとえば図１０に示すように、容量の増加にともなって、「ｉｎｄｅｘ０」に格納されているデータの内、ｗａｙ０のデータは「ｉｎｄｅｘ１２８」に、ｗａｙ１のデータは「ｉｎｄｅｘ２５６」に、ｗａｙ２のデータは「ｉｎｄｅｘ３８４」に、それぞれ配置し直す必要がある。このように、配置のし直しが必要な場合があるため、ｗａｙ数を単純に増加する場合とは異なり、“現在のサイズ”にもとづいたインデックスのデータを無効化しなければならない。
【００４１】
無効化のための処理は、上述した第１の実施形態の場合と同様に、キャッシュ増減処理ユニット２６によって実行される。容量を増加させる場合は、現在の全てのインデックスに無効化すべきデータが格納されている可能性がある。よって、この例では「ｉｎｄｅｘ０〜１２７」の各ｗａｙ０〜３が無効化のための処理の対象になる。
【００４２】
無効化するｗａｙ０〜３は、タグ比較器２２’によって選択される。すなわち、タグ比較器２２’は、たとえば図１１に示すように、“増加の指示”がプロセッサ１１から入力されると、“変更後のサイズ”を保持器２２ａに、“現在のサイズ”を保持器２２ｂに、それぞれ格納する。また、比較ｂｉｔ生成器２２ｃにより、“現在のサイズ”と“変更後のサイズ”とから比較対象となる３ｂｉｔのデータ（比較ビット）を生成する。一方、ｗａｙ０〜３ごとにタグ情報を読み出し、それぞれレジスタ２２ｄに格納する。そして、各比較器２２ｅにより、タグ情報の末尾３ｂｉｔと比較ビットとをそれぞれ比較する。各比較器２２ｅは、等しくない場合に“１”を出力する。さらに、演算器２２ｆにより、それぞれ、比較器２２ｅの出力とｖａｌｉｄ信号とのビット積を取る。演算器２２ｆでの結果（無効化ｂｉｔ）が“１”の場合、そのｗａｙは無効化対象となる。
【００４３】
図１２は、上記した比較ｂｉｔ生成器２２ｃにおける生成論理を示すものである。なお、比較ビットの「？」は、“０”または“１”のどちらでもよいことを示している。また、比較ビットのｂｉｔ数は、“最小サイズ時の必要ｔａｇ長−最大サイズ時の必要ｔａｇ長”で決まり、この例の場合は“１８−１５”で“３ｂｉｔ”となる。
【００４４】
図１２に示すように、比較ビットは、それぞれ容量増加前後のｉｎｄｅｘに対応している。たとえば、キャッシュの容量を１２８ＫＢｙｔｅから５１２ＫＢｙｔｅに増加させる場合は、タグ情報の末尾が“０００”または“００１”のいずれかとなる。つまり、容量が１２８ＫＢｙｔｅの場合にインデックスが「０〜１２７」になるので、キャッシュメモリの増加を行った前後でのインデックスの割り当てに変化はない。
【００４５】
このようにして、無効化するｗａｙ０〜３をタグ比較器２２’により選択し、その選択結果に応じて、無効化のための処理をキャッシュ増減処理ユニット２６によって実行することにより、ｗａｙ数はそのままで、キャッシュメモリの容量を増加させることが可能である。
【００４６】
なお、無効化のための処理の最中に、通常の“アクセス要求”が発生した場合には、上述した第１の実施形態の場合と同様に動作する。たとえば、無効化対象にアクセスする場合は、一度、“現在のサイズ”にもとづいた変更前のインデックスにアクセスする。そして、このアクセスが“キャッシュミス”となった場合に、改めて“変更後のサイズ”にもとづいたインデックスに対してアクセスを行うことになる。
【００４７】
本実施形態によれば、キャッシュメモリの容量を削減させる場合のみならず、それに加えて、容量の増加にともなってインデックスが変化するｗａｙを無効化することにより、ｗａｙ数を保ったまま、キャッシュメモリの容量を増加させることが可能となる。しかも、通常のアクセス動作を同時に実行できるようにすることで、キャッシュメモリの容量を動的に増加させることが可能である。
【００４８】
［第３の実施形態］
図１３は、本発明の第３の実施形態にしたがったキャッシュシステムの構成例を示すものである。なお、本実施形態は、キャッシュミス時のアクセスの再実行を防ぐことができるように構成した場合の例である。また、第１の実施形態と同一の部分には同一の符号を付して、詳しい説明は割愛する。
【００４９】
本実施形態の場合、インデックス変換機およびタグ比較器の構成が、第１の実施形態の場合と異なる。すなわち、本実施形態に係るインデックス変換機２５’は、たとえば図１４に示すように、セレクタ２５ｅ’へのリトライフラグの入力がない。よって、セレクタ２５ｅ’は、ＯＮ／ＯＦＦステート２５ｂの状態と、無効化対象テーブル２５ｃを参照することにより得られる“現在のサイズ”にもとづいたインデックスが無効化対象か否かの情報とによって、出力するｉｎｄｅｘＡ，ｉｎｄｅｘＢを選択する。出力されるｉｎｄｅｘＡ，ｉｎｄｅｘＢは、いずれも、入力されるアクセスアドレスに応じた、保持器２５ａによって保持されている“変更後のサイズ”にもとづいたインデックス、または、保持器２５ｄによって保持されている“現在のサイズ”にもとづいたインデックスである。
【００５０】
タグ比較器２２は、無効化のための処理が終了したことをプロセッサ１１に通知するための機能を有していない。
【００５１】
図１５は、上記したセレクタ２５ｅ’における選択論理を示すものである。なお、ｉｎｄｅｘＢの「Ｄｏｎ’ｔ  Ｃａｒｅ」は、“現在”または“変更後”のどちらでもよいことを示している。
【００５２】
たとえば、キャッシュメモリの容量を変更（増加／削減）する場合、インデックス変換機２５’は、セレクタ２５ｅ’によって選択されたｉｎｄｅｘＡ，ｉｎｄｅｘＢをタグメモリ２１へ出力する。これにより、タグメモリ２１からは、２つのｉｎｄｅｘＡ，ｉｎｄｅｘＢに対応するタグ情報がそれぞれ読み出され、タグ比較器２２に出力される。その際、ｉｎｄｅｘＢが「Ｄｏｎ’ｔ  Ｃａｒｅ」の場合は、タグ情報を読み出す必要はない。
【００５３】
タグ比較器２２は、タグメモリ２１内より読み出されたｉｎｄｅｘＡに対応するタグ情報とアクセスアドレス上のタグ情報とを比較する。通常のタグ比較に使用されるのは、たとえば、ｉｎｄｅｘＡに対応したタグ情報である。ｉｎｄｅｘＢに対応したタグ情報は、たとえば、無効化のための処理の最中に、通常のアクセス要求がなされた際にのみ使用される。
【００５４】
次に、図１６を参照して、無効化のための処理の最中に、プロセッサ１１からの通常のキャッシュアクセスにより競合が発生した場合について説明する。プロセッサ１１からの“アクセス要求”は、インデックス変換機２５’に入力される（ステップＳＴ１１）。
【００５５】
アクセスしたインデックスが無効化対象になっていない場合には、ｉｎｄｅｘＡに対応するタグ情報を使用して、通常通りのアクセス処理を行う（ステップＳＴ１２，ＳＴ１３）。
【００５６】
一方、無効化対象の場合は、同様に、ｉｎｄｅｘＡに対応するタグ情報を使って“キャッシュヒット／ミス”の判定を行う（ステップＳＴ１２，ＳＴ１４，ＳＴ１５）。“キャッシュヒット”の場合は、通常のヒット処理を行う（ステップＳＴ１６）。“キャッシュミス”の場合は、ｉｎｄｅｘＢに対応するタグ情報を用いてキャッシュミス時の処理を行う（ステップＳＴ１７）。その際、ｉｎｄｅｘＢとしては、“変更後のサイズ”にもとづいたインデックスが選択されているので、結果的に、第１の実施形態の場合と同様のアクセスを実現できる。
【００５７】
本実施形態においては、キャッシュメモリの容量を変更する際の無効化のための処理の最中に通常のアクセス要求が発生した場合に、アクセス対象のデータが格納される可能性のある２つのインデックスに対応するタグ情報を同時に読み出すようにしているので、キャッシュミス時のアクセスの再実行を防止できるとともに、無効化のための処理の最中に発生した通常のアクセス要求に対するオーバヘッドを減らすことが可能となる。
【００５８】
なお、上記した各実施形態においては、いずれもキャッシュメモリのｗａｙ数を“４”とした場合（４−ｗａｙ・キャッシュ）について説明したが、これに限定されるものではない。
【００５９】
また、ｗａｙ数とは無関係に、キャッシュメモリの容量を増減させるようにすることも容易に可能である。
【００６０】
また、キャッシュシステムとしては、必ずしもプロセッサを備える必要はなく、省略することもできる。
【００６１】
その他、本願発明は、上記（各）実施形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で種々に変形することが可能である。さらに、上記（各）実施形態には種々の段階の発明が含まれており、開示される複数の構成要件における適宜な組み合わせにより種々の発明が抽出され得る。たとえば、（各）実施形態に示される全構成要件からいくつかの構成要件が削除されても、発明が解決しようとする課題の欄で述べた課題（の少なくとも１つ）が解決でき、発明の効果の欄で述べられている効果（の少なくとも１つ）が得られる場合には、その構成要件が削除された構成が発明として抽出され得る。
【図面の簡単な説明】
【００６２】
【図１】本発明の第１の実施形態にしたがったキャッシュシステムの構成例を示すブロック図。
【図２】本キャッシュシステムにおける、データメモリ（キャッシュ）の一例を示す構成図。
【図３】アクセスアドレスの構成をメモリサイズごとに示す図。
【図４】キャッシュの容量を、５１２ＫＢｙｔｅから１２８ＫＢｙｔｅに削減させる場合を例に示す図。
【図５】本キャッシュシステムにおける、キャッシュ増減処理ユニットの構成例を示すブロック図。
【図６】本キャッシュシステムにおける、インデックス変換機の構成例を示すブロック図。
【図７】インデックス変換機を構成するセレクタの選択論理を示す図。
【図８】無効化のための処理の実行中に、通常のキャッシュアクセス要求が発生した場合の処理の流れについて説明するために示すフローチャート。
【図９】本発明の第２の実施形態にしたがったキャッシュシステムの構成例を示すブロック図。
【図１０】キャッシュの容量を、１２８ＫＢｙｔｅから５１２ＫＢｙｔｅに増加させる場合を例に示す図。
【図１１】本キャッシュシステムにおける、タグ比較器の構成例を示すブロック図。
【図１２】タグ比較器を構成する比較ｂｉｔ生成器の生成論理を示す図。
【図１３】本発明の第３の実施形態にしたがったキャッシュシステムの構成例を示すブロック図。
【図１４】本キャッシュシステムにおける、インデックス変換機の構成例を示すブロック図。
【図１５】インデックス変換機を構成するセレクタの選択論理を示す図。
【図１６】無効化のための処理の実行中に、通常のキャッシュアクセス要求が発生した場合の処理の流れについて説明するために示すフローチャート。
【符号の説明】
【００６３】
２１…タグメモリ、２２，２２’…タグ比較器、２３…データメモリ、２４…アービタ、２５，２５’…インデックス変換機、２６…キャッシュ増減処理ユニット。
【図１】
0005231867.tif 000002
【図２】
0005231867.tif 000003
【図３】
0005231867.tif 000004
【図４】
0005231867.tif 000005
【図５】
0005231867.tif 000006
【図６】
0005231867.tif 000007
【図７】
0005231867.tif 000008
【図８】
0005231867.tif 000009
【図９】
0005231867.tif 000010
【図１０】
0005231867.tif 000011
【図１１】
0005231867.tif 000012
【図１２】
0005231867.tif 000013
【図１３】
0005231867.tif 000014
【図１４】
0005231867.tif 000015
【図１５】
0005231867.tif 000016
【図１６】
0005231867.tif 000017