(57)【要約】【課題】キャッシュメモリに発生するディレイをなくし、マシンサイクルを高速化すること。【解決手段】キャッシュメモリ装置２００は、第２レベルキャッシュタグに第１レベルキャッシュ制御部２２０の登録情報を記憶させる。そして、コヒーレンシ維持処理部２６０ａは、第１レベルキャッシュ制御部２２０からメモリアクセス要求を受けた場合に、該当する第２レベルキャッシュタグを検索し、プロセッサの要求するデータを第１レベルキャッシュに転送すると共に、第２レベルキャッシュに記録された登録情報を基にして、第１レベルキャッシュ制御部２２０および第２レベルキャッシュ制御部間のコヒーレンシを維持する。【選択図】        図３
2006040175.tif 000002
【特許請求の範囲】
【請求項１】
データ部およびタグ部からなる第１レベルキャッシュメモリ部と、該第１レベルキャッシュメモリ部を包含する第２レベルキャッシュメモリ部とを有し、プロセッサの要求に応答して該当するデータを前記プロセッサに渡すキャッシュメモリ装置であって、
前記第１レベルキャッシュメモリ部に係る情報の一部を記憶する記憶手段と、
前記記憶手段に記憶された情報を基にして、前記第１レベルキャッシュメモリ部と、前記第２レベルキャッシュメモリ部との間で、キャッシュコヒーレンシを維持するコヒーレンシ維持手段と、
を備えたことを特徴とするキャッシュメモリ装置。
【請求項２】
前記記憶手段は、前記第２レベルキャッシュメモリ部に対するタグの物理アドレス、ステータス、仮想インデックスおよび前記第１レベルキャッシュメモリ部に係る情報の一部を関連付けて記憶することを特徴とする請求項１に記載のキャッシュメモリ装置。
【請求項３】
前記第１レベルキャッシュメモリ部に係る情報の一部は、複数のビットによって構成され、前記コヒーレンシ維持手段は、前記複数のビットから前記第１レベルキャッシュメモリ部の登録状態を把握し、前記第１レベルキャッシュメモリ部と、前記第２レベルキャッシュメモリ部との間で、キャッシュコヒーレンシを維持することを特徴とする請求項１または２に記載のキャッシュメモリ装置。
【請求項４】
前記第１レベルキャッシュメモリ部に対するタグの物理アドレス、ステータスおよび第２レベルキャッシュメモリ部に登録されたウェイの情報を関連付けて記憶する第１キャッシュ記憶手段を更に備えたことを特徴とする請求項１に記載のキャッシュメモリ装置。
【請求項５】
前記第１レベルキャッシュメモリ部にエラーが発生した場合に、前記記憶手段に記憶された情報と、前記第１キャッシュ記憶手段に記憶された情報とを基にして、前記第１レベルキャッシュメモリ部に発生したエラーを修正する修正手段をさらに備えたことを特徴とする請求項４に記載のキャッシュメモリ装置。
【請求項６】
前記修正手段は、前記第１レベルキャッシュメモリ部にエラーが発生した場合に、エラーの発生したデータを示すエラーデータが更新されている可能性があるか否かを判定し、更新されている可能性がある場合には、前記エラーデータを第２レベルキャッシュメモリ部に吐き出し、更新されている可能性がない場合には、前記エラーデータを無効化することを特徴とする請求項５に記載のキャッシュメモリ装置。
【請求項７】
データ部およびタグ部からなる第１レベルキャッシュメモリ部と、該第１レベルキャッシュメモリ部を包含する第２レベルキャッシュメモリ部とを有し、プロセッサの要求に応答して該当するデータを前記プロセッサに渡すキャッシュメモリ装置を制御するキャッシュメモリ制御方法であって、
前記第１レベルキャッシュメモリ部に係る情報の一部を記憶装置に記憶する記憶工程と、
前記記憶装置に記憶された情報を基にして、前記第１レベルキャッシュメモリ部と、前記第２レベルキャッシュメモリ部との間で、キャッシュコヒーレンシを維持するコヒーレンシ維持工程と、
を含んだことを特徴とするキャッシュメモリ制御方法。
【請求項８】
前記記憶装置は、前記第２レベルキャッシュメモリ部に対するタグの物理アドレス、ステータス、仮想インデックスおよび前記第１レベルキャッシュメモリ部に係る情報の一部を関連付けて記憶することを特徴とする請求項７に記載のキャッシュメモリ制御方法。
【請求項９】
データ部およびタグ部からなる第１レベルキャッシュメモリ部と、該第１レベルキャッシュメモリ部を包含する第２レベルキャッシュメモリ部とを有し、プロセッサの要求に応答して該当するデータを前記プロセッサに渡すキャッシュメモリ装置を制御するキャッシュメモリ制御方法であって、
前記第１レベルキャッシュメモリ部に係る情報の一部を記憶装置に記憶する記憶工程と、
前記第１レベルのキャッシュメモリ部にエラーが発生した場合に、前記記憶装置に記憶された情報を基にして、前記第１キャッシュメモリ部に発生したエラーを修正する修正工程と、
を含んだことを特徴とするキャッシュメモリ制御方法。
【請求項１０】
前記修正工程は、前記第１レベルキャッシュメモリ部にエラーが発生した場合に、エラーの発生したデータを示すエラーデータが更新されている可能性があるか否かを判定し、更新されている可能性がある場合には、前記エラーデータを第２レベルキャッシュメモリ部に吐き出し、更新されている可能性がない場合には、前記エラーデータを無効化することを特徴とする請求項９に記載のキャッシュメモリ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、データ部およびタグ部からなる第１レベルキャッシュメモリ部と、該第１レベルキャッシュメモリ部を包含する第２レベルキャッシュメモリ部とを有し、プロセッサの要求に応答して該当するデータを前記プロセッサに渡すキャッシュメモリ装置などに関し、特に、マシンサイクルを高速化することができるキャッシュメモリ装置およびキャッシュメモリ制御方法に関するものである。
【背景技術】
【０００２】
近年、ＣＰＵ（Central Processing Unit）およびメインメモリ間に発生するデータ遅延の問題を解消すべくキャッシュメモリが利用されている。このキャッシュメモリは、それ自体階層構造になっており、現在では複数のキャッシュメモリを用いている。そして、ＣＰＵに近い高速なキャッシュメモリから順に、第１レベルキャッシュおよび第２レベルキャッシュとして分類される。
【０００３】
また、従来に係るキャッシュメモリは、第１レベルキャッシュに対するタグの写しを、第２レベルキャッシュに保持させ、第２レベルキャッシュが該タグの写しを利用し、第１レベルキャッシュの情報を得ることによって、第１レベルキャッシュおよび第２レベルキャッシュ間の相互矛盾を無くしている。
【０００４】
例えば、図１１に示すように、物理インデックスで第２レベルキャッシュのタグにアクセスした場合に、第２レベルキャッシュに含まれる仮想インデックスを利用して第１レベルキャッシュのタグの写しにアクセスし、第１レベルキャッシュの登録状態を把握することによって、両者のコヒーレンシを維持している。
【０００５】
なお、特許文献１では、キャッシュに含まれる各キャッシュラインに状態ビットフィールドなどを関連付けて、キャッシュライン状態のデコード効率を向上させる技術が公開されており、特許文献２では、共用の第２レベルキャッシュに包含ビット、命令ビットおよびデータビットを有するディレクトリを含ませることでデータキャッシュの包含を正確に追跡可能とする技術が公開されている。
【０００６】
【特許文献１】特開平１０−３０１８５０号公報
【特許文献２】特開平８−２３５０６１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、従来に係る技術では、キャッシュメモリのマシンサイクルを高速化することができないという問題があった。
【０００８】
具体的には、第２レベルキャッシュと第１レベルキャッシュとの間で相互矛盾を無くすために、第２レベルキャッシュが第１レベルキャッシュの登録情報を得る際、タグを２段階でアクセスするため、ディレイが発生してしまうからである。
【０００９】
また、年々ＣＰＵの処理速度が飛躍的に向上しているが、ＣＰＵにデータを渡すキャッシュメモリの処理速度が遅いことは、ＣＰＵの足かせとなってしまうため、キャッシュメモリに発生するディレイの問題は更に深刻なものとなる。
【００１０】
すなわち、第１レベルキャッシュの登録情報を得る際に発生するディレイをなくし、マシンサイクルを高速化させることが極めて重要な課題となっている。
【００１１】
この発明は、上述した従来技術による問題点を解消するためになされたものであり、キャッシュメモリに発生するディレイをなくし、マシンサイクルを高速化することができるキャッシュメモリ装置およびキャッシュメモリ制御方法を提供することを目的とする。
【課題を解決するための手段】
【００１２】
上述した課題を解決し、目的を達成するため、本発明は、データ部およびタグ部からなる第１レベルキャッシュメモリ部と、該第１レベルキャッシュメモリ部を包含する第２レベルキャッシュメモリ部とを有し、プロセッサの要求に応答して該当するデータを前記プロセッサに渡すキャッシュメモリ装置であって、前記第１レベルキャッシュメモリ部に係る情報の一部を記憶する記憶手段と、前記記憶手段に記憶された情報を基にして、前記第１レベルキャッシュメモリ部と、前記第２レベルキャッシュメモリ部との間で、キャッシュコヒーレンシを維持するコヒーレンシ維持手段と、を備えたことを特徴とする。
【００１３】
また、本発明は、上記発明において、前記記憶手段は、前記第２レベルキャッシュメモリ部に対するタグの物理アドレス、ステータス、仮想インデックスおよび前記第１レベルキャッシュメモリ部に係る情報の一部を関連付けて記憶することを特徴とする。
【００１４】
また、本発明は、上記発明において、前記第１レベルキャッシュメモリ部に係る情報の一部は、複数のビットによって構成され、前記コヒーレンシ維持手段は、前記複数のビットから前記第１レベルキャッシュメモリ部の登録状態を把握し、前記第１レベルキャッシュメモリ部と、前記第２レベルキャッシュメモリ部との間で、キャッシュコヒーレンシを維持することを特徴とする。
【００１５】
また、本発明は、上記発明において、前記第１レベルキャッシュメモリ部に対するタグの物理アドレス、ステータスおよび第２レベルキャッシュメモリ部に登録されたウェイの情報を関連付けて記憶する第１キャッシュ記憶手段を更に備えたことを特徴とする。
【００１６】
また、本発明は、上記発明において、前記第１レベルキャッシュメモリ部にエラーが発生した場合に、前記記憶手段に記憶された情報と、前記第１キャッシュ記憶手段に記憶された情報とを基にして、前記第１レベルキャッシュメモリ部に発生したエラーを修正する修正手段をさらに備えたことを特徴とする。
【００１７】
また、本発明は、上記発明において、前記修正手段は、前記第１レベルキャッシュメモリ部にエラーが発生した場合に、エラーの発生したデータを示すエラーデータが更新されている可能性があるか否かを判定し、更新されている可能性がある場合には、前記エラーデータを第２レベルキャッシュメモリ部に吐き出し、更新されている可能性がない場合には、前記エラーデータを無効化することを特徴とする。
【００１８】
また、本発明は、データ部およびタグ部からなる第１レベルキャッシュメモリ部と、該第１レベルキャッシュメモリ部を包含する第２レベルキャッシュメモリ部とを有し、プロセッサの要求に応答して該当するデータを前記プロセッサに渡すキャッシュメモリ装置を制御するキャッシュメモリ制御方法であって、前記第１レベルキャッシュメモリ部に係る情報の一部を記憶装置に記憶する記憶工程と、前記記憶装置に記憶された情報を基にして、前記第１レベルキャッシュメモリ部と、前記第２レベルキャッシュメモリ部との間で、キャッシュコヒーレンシを維持するコヒーレンシ維持工程と、を含んだことを特徴とする。
【００１９】
また、本発明は、上記発明において、前記記憶装置は、前記第２レベルキャッシュメモリ部に対するタグの物理アドレス、ステータス、仮想インデックスおよび前記第１レベルキャッシュメモリ部に係る情報の一部を関連付けて記憶することを特徴とする。
【００２０】
また、本発明は、データ部およびタグ部からなる第１レベルキャッシュメモリ部と、該第１レベルキャッシュメモリ部を包含する第２レベルキャッシュメモリ部とを有し、プロセッサの要求に応答して該当するデータを前記プロセッサに渡すキャッシュメモリ装置を制御するキャッシュメモリ制御方法であって、前記第１レベルキャッシュメモリ部に係る情報の一部を記憶装置に記憶する記憶工程と、前記第１レベルのキャッシュメモリ部にエラーが発生した場合に、前記記憶装置に記憶された情報を基にして、前記第１キャッシュメモリ部に発生したエラーを修正する修正工程と、を含んだことを特徴とする。
【００２１】
また、本発明は、上記発明において、前記修正工程は、前記第１レベルキャッシュメモリ部にエラーが発生した場合に、エラーの発生したデータを示すエラーデータが更新されている可能性があるか否かを判定し、更新されている可能性がある場合には、前記エラーデータを第２レベルキャッシュメモリ部に吐き出し、更新されている可能性がない場合には、前記エラーデータを無効化することを特徴とする。
【発明の効果】
【００２２】
本発明によれば、第１レベルキャッシュメモリ部に係る情報の一部を記憶させ、該第１レベルキャッシュメモリ部に係る情報の一部を基にして、第１レベルキャッシュメモリ部と第２レベルキャッシュメモリ部との間で、コヒーレンシを維持するので、迅速に第１レベルキャッシュメモリ部の登録状態を把握でき、マシンサイクルを高速化することができるという効果を奏する。
【００２３】
また、発明によれば、第１レベルキャッシュメモリ部にタグの物理アドレス、ステータスおよび第２レベルキャッシュメモリ部に登録されたウェイの情報を関連付けて記録するので、第１レベルキャッシュメモリ部に発生したエラーを効率よく修復することができるという効果を奏する。
【発明を実施するための最良の形態】
【００２４】
以下に添付図面を参照して、この発明に係るキャッシュメモリ装置およびキャッシュメモリ制御方法の好適な実施の形態を詳細に説明する。
【実施例】
【００２５】
本実施例に係るキャッシュメモリ装置は、従来利用していた第１レベルキャッシュの情報を含んだタグの写しを第２レベルキャッシュから取り除く。また、第２レベルキャッシュのタグ部に第１レベルキャッシュの情報の一部を保持させ、該保持した情報を基にして第１レベルキャッシュの状態を把握することによって、タグの２段階アクセスを回避すると共に、第１レベルキャッシュと第２レベルキャッシュのコヒーレンシを維持する。
【００２６】
すなわち、図１に示すように、物理インデックスで、第２レベルキャッシュのタグ部をアクセスした場合に、該第２レベルキャッシュのタグ部に第１レベルキャッシュの情報が含まれているため、迅速に第１レベルキャッシュの状態を把握できる。
【００２７】
また、本実施例に係るキャッシュメモリ装置は、プロセッサに内蔵することやプロセッサに付加させることが可能であるが、以降の説明では、図２に示すように、キャッシュメモリ装置２００が、プロセッサ１００に直接接続されていると共に、メインメモリ３００へのアクセスは、キャッシュ２００を介して行われるシステムを例に挙げて説明する。
【００２８】
なお、本実施例のキャッシュメモリ装置で利用する連想方式は、一例として、２種類のウェイ（ウェイ０およびウェイ１）を持つ２ウェイセットアソシエイティブ方式を採用する。
【００２９】
図３は、本実施例に係るキャッシュメモリ装置２００の構成を示す機能ブロック図である。同図に示すように、このキャッシュメモリ装置２００は、命令実行制御部２１０と、第１レベルキャッシュ制御部２２０と、第２レベルキャッシュ制御部２５０と、メインメモリ制御部２８０とを有する。
【００３０】
命令実行制御部２１０は、プロセッサ１００から仮想アドレスＡを受付け、受付けた仮想アドレスＡを第１レベルキャッシュ制御部２２０に渡す。図４に仮想アドレスＡのデータ構造の一例を示す。
【００３１】
図４に示すように、仮想アドレスＡは、仮想アドレス上位ビットＡ１と、第１レベルキャッシュインデックスＡ２と、仮想アドレス下位ビットＡ３とを含む。ここで、仮想アドレス上位ビットＡ１は、物理アドレスに変換された後、プロセッサ１００の要求するデータにヒットしたか否かを判定するために利用される。
【００３２】
第１レベルキャッシュインデックスＡ２は、後述する第１レベルキャッシュ制御部２２０の記憶部２４０に記憶されたタグの位置を特定するための情報が格納される。なお、仮想アドレス下位ビットＡ３には、その他の情報が格納される。
【００３３】
第１レベルキャッシュ制御部２２０は、第１レベルキャッシュブロック部２３０および記憶部２２０を有する。また、第１レベルキャッシュブロック部２３０は、アドレス変換処理部２３０ａと、検索処理部２３０ｂと、エラー検出部２３０ｃとを有する。
【００３４】
アドレス変換処理部２３０ａは、命令実行処理部２１０から仮想アドレスＡを受取り、受取った仮想アドレスＡを物理アドレスＡ´に変換する処理部である。図５に物理アドレスＡ´のデータ構造の一例を示す。
【００３５】
図５に示すように、物理アドレスＡ´は、物理アドレス上位ビットＡ１´と、第２レベルキャッシュインデックスＡ２´と、物理アドレス下位ビットＡ３´とを含む。ここで、物理アドレス上位ビットＡ１´には、タグ比較アドレスが格納される。
【００３６】
この、タグ比較アドレスは、データがヒットしたか否かを判定するために利用されるアドレスである。具体的には、第１レベルキャッシュインデックスＡ２によって特定されるタグの物理アドレスと、タグ比較アドレスが等しければ、データがヒットしたことになり、等しくなければ、ヒットしなかったこととなる。
【００３７】
第２レベルキャッシュインデックスＡ２´は、後述する第２レベルキャッシュ制御部２５０の記憶部２７０に記録されたタグの位置を特定するための情報が格納される。なお、物理アドレス下位ビットＡ３´は、その他の情報が格納される。
【００３８】
検索処理部２３０ｂは、プロセッサ１００から要求されたデータが、記憶部２２０に存在するか否かを判定し、要求されたデータが記憶部２２０に存在する場合には、該当データを、命令実行処理部２１０を介してプロセッサ１００に渡す。一方、プロセッサ１００から要求されたデータが、記憶部２２０に存在しない場合は、その旨を第２レベルキャッシュ制御部２５０に通知する。また、検索処理部２３０ｂは、第１レベルキャッシュ制御部２２０の記憶部２４０に対するライトバック処理も行う。
【００３９】
具体的に、検索処理部２３０ｂは、仮想アドレスＡに含まれる第１レベルキャッシュインデックスＡ２を基にして、対応するタグを、命令キャッシュタグ部２４０ａまたはオペランドキャッシュタグ部２４０ｃから検索する。以下、命令キャッシュタグ部２４０ａまたはオペランドキャッシュタグ部２４０ｃに格納されるタグを第１レベルキャッシュタグと表記する。
【００４０】
ここに、命令キャッシュタグ部２４０ａは、命令が格納された命令キャッシュデータ部２４０ｂに対応するタグを格納しており、オペランドキャッシュタグ部２４０ｃは、データが格納されたオペランドキャッシュデータ部２４０ｄに対応するタグを格納している。
【００４１】
図６に第１レベルキャッシュタグのデータ構造の一例を示す。同図に示すように、第１レベルキャッシュタグは、第１物理アドレス２４１と、ステータス２４２と、第２レベルキャッシュ登録ウェイ情報２４３とを含む。
【００４２】
第１物理アドレス２４１は、検索処理部２３０ｂによって物理アドレス上位ビットＡ１´と比較され、両者が一致した場合には、プロセッサ１００が要求するデータにヒットしたことになる。一方、両者が一致しない場合には、プロセッサ１００が要求するデータにヒットしなかったこととなる。ステータス２４２は、第１レベルキャッシュタグが有効か否かの情報などを格納する。
【００４３】
第２レベルキャッシュ登録ウェイ情報２４３は、第１レベルキャッシュタグに対応するデータが第２レベルキャッシュのどのウェイに登録されているかを特定するための情報（以下、ウェイ特定情報と表記する）が格納されている。
【００４４】
このウェイ特定情報を、第１レベルキャッシュタグに格納することによって、第１レベルキャッシュ制御部２２０から第２レベルキャッシュ制御部２５０へのライトバックを高速に行うことができる。
【００４５】
なぜなら、第１レベルキャッシュ制御部２２０から第２レベルキャッシュ制御部２５０へライトバックのリクエストが発生した場合にウェイ特定情報を利用することによって、第２レベルキャッシュのタグの再検索を行う必要がなくなり、即時、ウェイ特定情報によって特定されるウェイで第２レベルキャッシュ制御部２５０に、該当するデータを書き込むことができるからである。
【００４６】
ところで、検索処理部２３０ｂは、第１レベルキャッシュタグに含まれる第１物理アドレス２４１と、物理アドレス上位ビットＡ１´とを比較し、両者が一致する場合には、対応する命令またはデータを命令キャッシュデータ２４０ｂまたはオペランドキャッシュデータ２４０ｄから検出し、検出した命令またはデータを、命令実行制御部２１０を介してプロセッサ１００に渡す。
【００４７】
一方、第１レベルキャッシュタグの第１物理アドレス２４１と、物理アドレス上位ビットＡ１´とが一致しない場合には、対応するデータが第１レベルキャッシュ制御部２２０に存在しないこととなるので、検索処理部２３０ｂは、対応するデータを取得すべく、物理アドレスＡ´と、第１レベルキャッシュインデックスＡ２とを第２レベルキャッシュ制御部２５０に渡す。
【００４８】
エラー検出部２３０ｃは、命令キャッシュタグ２４０ａ、命令キャッシュデータ２４０ｂ、オペランドキャッシュタグ２４０ｃおよびオペランドキャッシュデータ２４０ｄに発生するエラーを検出する処理部である。
【００４９】
また、エラー検出部２３０ｃがエラーを検出した場合には、第２レベルキャッシュ制御部２５０にエラーが発生した旨を通知すると共に、エラーの発生したデータに係る第１レベルキャッシュインデックスＡ２およびエラーの発生した第１レベルキャッシュの命令側またはオペランド側のウェイを特定する情報（以下、エラーウェイ特定情報）を第２レベルキャッシュ制御部２５０に渡す。
【００５０】
次に、第２レベルキャッシュ制御部２５０の説明を行う。第２レベルキャッシュ制御部２５０は、第２レベルキャッシュブロック２６０と、記憶部２７０とを有する。また、第２レベルキャッシュブロック２６０は、コヒーレンシ維持処理部２６０ａと、エラー処理部２６０ｂとを有する。
【００５１】
コヒーレンシ維持処理部２６０ａは、第１レベルキャッシュ制御部２２０からの要求に応じて、該当するデータを記憶部２７０から検索し、検索したデータを第１レベルキャッシュ制御部２２０に渡す。また、コヒーレンシ維持処理部２６０ａは、第１レベルキャッシュ制御部２２０および第２レベルキャッシュ制御部２５０のコヒーレンシを維持する。また、コヒーレンシ維持処理部２６０ａは、第２レベルキャッシュ制御部２５０の記憶部２７０に対するライトバック処理も行う。
【００５２】
具体的に、コヒーレンシ維持処理部２６０は、第１レベルキャッシュ制御部２２０から、物理アドレスＡ´と、第１レベルキャッシュインデックスＡ２とを受取り、物理アドレスＡ´に含まれる第２レベルキャッシュインデックスＡ２´をもとにして、対応するタグを第２レベルキャッシュタグ部２７０ａから検索する。なお、本実施例では、第２レベルキャッシュタグ部２７０ａに含まれるタグを第２レベルキャッシュタグと表記する。
【００５３】
図７に、第２レベルキャッシュタグのデータ構造の一例を示す。同図に示すように、第２レベルキャッシュタグは、第２物理アドレス２７１と、ステータス２７２と、仮想インデックス２７３と、第１レベルキャッシュ登録情報２７４とを含む。
【００５４】
第２物理アドレス２７１は、コヒーレンシ維持処理部２６０ａによって物理アドレス上位ビットＡ１´と比較され、両者が一致した場合には、プロセッサ１００の要求するデータが第２レベルキャッシュデータ部２７０ｂに格納されていることになる。一方、両者が一致しない場合には、プロセッサ１００が要求するデータが第２レベルキャッシュデータ部２７０ｂに格納されていないこととなる。
【００５５】
ステータス２７２は、第２レベルキャッシュタグが有効か否かの情報などを格納している。また、仮想インデックス２７３は、コヒーレンシ維持処理部２６０ａによって、第１レベルキャッシュインデックスＡ２と比較され、シノニムか否かを判定される。
【００５６】
第１レベルキャッシュインデックスＡ２と仮想インデックス２７３が等しい場合には、シノニムではなく、第１レベルキャッシュインデックスＡ２と仮想インデックス２７３が等しくない場合にはシノニムとなる。なお、シノニムと判定された場合の処理は、後述するフローチャートで説明する。
【００５７】
第１レベルキャッシュ登録情報２７４は、第１レベルキャッシュ制御部２２０に係る登録情報を格納する。この登録情報を参照することによって、第２レベルキャッシュ制御部２５０は、第１レベルキャッシュ制御部２２０の登録状態を把握することができる。
【００５８】
また、登録情報は、４ビットで構成されており、図７に示すような意味付けとなる。なお、本実施例では一例として、登録情報が４ビットで構成される例を示すが、これに限定されるものではなく、登録情報をどのようなビット数で構成してもよい。
【００５９】
図８に示すように、登録情報が「００００」の場合には、「命令、オペランドとも無効」であることを示し、登録情報が「０１１０」の場合には、「オペランドのウェイ０のみ更新型」であることを示し、登録情報が「０１１１」の場合には、「オペランドのウェイ１のみ更新型」であることを示し、登録情報が「１０００」の場合には、「命令のウェイ０が有効、オペランドが無効」であることを示し、登録情報が「１００１」の場合には、「命令のウェイ１有効、オペランド無効」であることを示す。
【００６０】
また、登録情報が「１０１０」の場合には、「命令が無効、オペランドのウェイ０が共有型」であることを示し、登録情報が「１０１１」の場合には、「命令が無効、オペランドのウェイ１が共有型」であることを示し、登録情報が「１１００」の場合には、「命令のウェイ０が有効、オペランドのウェイ０が共有型」あることを示す。
【００６１】
また、登録情報が「１１０１」の場合には、「命令のウェイ０が有効、オペランドのウェイ１が共有型」であることを示し、登録情報が「１１１０」の場合には、「命令のウェイ１が有効、オペランドのウェイ０が供給型」であることを示し、登録情報が「１１１１」の場合には、「命令のウェイ１が有効、オペランドのウェイ１が共有型」であることを示す。
【００６２】
なお、「更新型」とは、第１レベルキャッシュ制御部２２０に係るデータが書き換えられている可能性があることを示し、「共有型」とは、第１レベルキャッシュ制御部２２０に係るデータが書き換えられている可能性がないことを示す。
【００６３】
すなわち、コヒーレンシ維持処理部２６０は、第２レベルキャッシュタグに含まれる登録情報を参照することによって、高速に第１レベルキャッシュ制御部２２０の状態を把握できる。また、コヒーレンシ維持処理部２６０は、図８に示した情報を保持する。
【００６４】
エラー処理部２６０ｂは、第１レベルキャッシュ制御部２２０および第２レベルキャッシュ制御部２５０に発生したエラーを修正する処理部である。第１レベルキャッシュ制御部２２０に記録されるデータは、応答速度を速めるため、パリティ保護しか行っておらず、第１レベルキャッシュ制御部２２０のみでは、エラーを訂正することができない。したがって、エラー処理部２６０ｂが、第２レベルキャッシュ制御部のＥＣＣ（Error Correcting Code）によって保護されたデータを利用して、第１レベルキャッシュ制御部２２０に発生したエラーを訂正する。
【００６５】
メインメモリ制御部２８０は、第２レベルキャッシュ制御部２５０にプロセッサ１００の要求するデータが存在しない場合に、メインメモリ３００にデータを要求する。また、メインメモリ制御部２８０は、メインメモリからデータを受付け、受付けたデータを第２レベルキャッシュ制御部２５０に渡す。
【００６６】
次に、本実施例に係るキャッシュメモリ装置が行うデータ処理について説明する。図９は、本実施例に係るキャッシュメモリ装置のデータ処理を示すフローチャートである。同図に示すように、命令実行制御部２１０が、メモリアクセス要求を受付け（ステップＳ１０１）、アドレス変換処理部２３０ａが、アドレス変換を行い（ステップＳ１０２）、検索処理部２３０ｂが、第１レベルキャッシュインデックスＡ２で第１レベルキャッシュタグを検索する（ステップＳ１０３）。
【００６７】
そして、検索処理部２３０ｂが、タグに記録された第１物理アドレス２４１と、物理アドレス上位ビットＡ´とを比較し（ステップＳ１０４）、ヒットしたか否かを判定し（ステップＳ１０５）、ヒットした場合には（ステップＳ１０５，Ｙｅｓ）、そのままステップＳ１１５に移行する。
【００６８】
一方、ヒットしなかった場合には（ステップＳ１０５，Ｎｏ）、第２レベルキャッシュ制御部２５０に物理アドレスＡ´と、第１レベルキャッシュインデックスＡ２を渡し（ステップＳ１０６）、コヒーレンシ維持処理部２６０ａは、第２レベルキャッシュインデックスＡ２´で、第２レベルキャッシュタグを検索する（ステップＳ１０７）。
【００６９】
そして、コヒーレンシ維持処理部２６０ａは、第２レベルキャッシュタグに記憶された第２物理アドレス２７１と、物理アドレス上位ビットＡ１´とを比較し（ステップＳ１０８）、ヒットしたか否かを判定する（ステップＳ１０９）。
【００７０】
ヒットしなかった場合には（ステップＳ１０９，Ｎｏ）、メインメモリ制御部２８０にメモリアクセス要求を行い（ステップＳ１１０）、メインメモリ制御部２８０は、メインメモリからのデータを第２レベルキャッシュ制御部２５０に渡す（ステップＳ１１１）。
【００７１】
そして、コヒーレンシ維持処理部２６０ａは、ライトバック処理をおこない（ステップＳ１１２）、データを第１レベルキャッシュ制御部２２０に転送し（ステップＳ１１３）、検索処理部２３０ｂがライトバック処理を行い（ステップＳ１１４）、データをプロセッサ１００に転送する（ステップＳ１１５）。
【００７２】
一方、ヒットした場合には（ステップＳ１０９，Ｙｅｓ）、第２レベルキャッシュタグの仮想インデックス２７３と、第１レベルキャッシュインデックスＡ２とを比較し（ステップＳ１１６）、両者が一致したが否かを判定し（ステップＳ１１７）、一致した場合には（ステップＳ１１７，Ｙｅｓ）、ステップＳ１１３に移行する。
【００７３】
一方、一致しない場合（シノニムの場合）には（ステップＳ１１７，Ｎｏ）、第１レベルキャッシュの登録情報２７４を基にして、対応するデータが存在するか否かを判定し（ステップＳ１１８）、存在しない場合には（ステップＳ１１９，Ｎｏ）、第１レベルキャッシュ制御部２２０の仮想インデックスに係るデータの再登録を行い（ステップＳ１２０）、ステップＳ１１３に移行する。
【００７４】
一方、対応するデータが存在する場合には（ステップＳ１１９，Ｙｅｓ）、第１レベルキャッシュ制御部２２０のデータは更新型か否かを判定し（ステップＳ１２１）、更新型の場合には（ステップＳ１２２，Ｙｅｓ）、対応する第１レベルキャッシュのデータを吐き出し（ステップＳ１２３）、ステップＳ１２０に移行する。
【００７５】
なお、更新型でない場合には（ステップＳ１２２，Ｎｏ）、対応する第１レベルキャッシュのデータを無効化し（ステップＳ１２４）、ステップＳ１１８に移行する。
【００７６】
次に、キャッシュメモリ装置２００が行うエラー処理について説明する。図１０は、本実施例に係るエラー処理を示すフローチャートである。同図に示すように、第１レベルキャッシュ制御部２２０にエラーが発生し（ステップＳ２０１）、エラー検出部２３０ｃが、第２レベルキャッシュ制御部２５０にエラーが発生した旨を通知すると共に、第１レベルキャッシュインデックスＡ２およびエラーウェイ特定情報を通知する（ステップＳ２０２）。
【００７７】
そして、エラー処理部２６０ｂは、順次、第２レベルキャッシュタグを検索し（ステップＳ２０３）、第１レベルキャッシュインデックスＡ２と等しい仮想インデックスを含んだ第２レベルキャッシュタグを検出したか否かを判断する（ステップＳ２０４）。
【００７８】
第１レベルキャッシュインデックスＡ２と等しい仮想インデックスを含んだ第２レベルキャッシュタグを検出しなかった場合には（ステップＳ２０４，Ｎｏ）、全て検索が終了したか否かを判断し（ステップＳ２０５）、全て検索が終了していない場合には（ステップＳ２０５，Ｎｏ）、ステップＳ２０３に移行する。
【００７９】
一方、全て検索が終了した場合には（ステップＳ２０５，Ｙｅｓ）、エラー処理部２６０ｂは、エラー報告を受付けた第１レベルインデックスＡ２とウェイに対応するデータの無効化指示を行い（ステップＳ２０６）、エラー処理が完了した旨を第１レベルキャッシュ制御部２２０に通知する（ステップＳ２０７）。
【００８０】
ところで、第１レベルキャッシュインデックスＡ２と等しい仮想インデックスを含んだ第２レベルキャッシュタグを検出した場合には（ステップＳ２０４，Ｙｅｓ）、ウェイが一致するか否かを判定し（ステップＳ２０８）、ウェイが一致しない場合には（ステップＳ２０８，Ｎｏ）、ステップＳ２０５に移行する。
【００８１】
一方、ウェイが一致する場合には（ステップＳ２０８，Ｙｅｓ）、対応する第１レベルキャッシュ制御部２２０のデータが更新型か否かを判定し（ステップＳ２０９）、更新型である場合には（ステップＳ２０９，Ｙｅｓ）、対応する第１レベルキャッシュ制御部２２０のデータを吐き出し（ステップＳ２１１）、ステップＳ２０７に移行する。
【００８２】
一方、更新型でない場合には（ステップＳ２０９，Ｎｏ）、対応する第１レベルキャッシュ制御部２２０のデータを無効化し（ステップＳ２１０）、ステップＳ２０７に移行する。
【００８３】
上述してきたように、本実施例に係るキャッシュメモリ装置２００は、第２レベルキャッシュタグに第１レベルキャッシュ制御部２２０の登録情報を記憶させる。そして、コヒーレンシ維持処理部２６０ａは、第１レベルキャッシュ制御部２２０からメモリアクセス要求を受けた場合に、該当する第２レベルキャッシュタグを検索し、プロセッサの要求するデータを第１レベルキャッシュに転送すると共に、第２レベルキャッシュに記録された登録情報を基にして、第１レベルキャッシュ制御部２２０および第２レベルキャッシュ制御部間のコヒーレンシを維持するので、タグの２段階アクセスを回避し、キャッシュメモリ装置２００のマシンサイクルを高速化することができる。
【００８４】
また、従来のように、第１キャッシュメモリタグの写しを、第２レベルキャッシュ制御部２５０の記憶部２７０に記録される必要がないため、物量を削減することが可能となる。
【００８５】
（付記１）データ部およびタグ部からなる第１レベルキャッシュメモリ部と、該第１レベルキャッシュメモリ部を包含する第２レベルキャッシュメモリ部とを有し、プロセッサの要求に応答して該当するデータを前記プロセッサに渡すキャッシュメモリ装置であって、
前記第１レベルキャッシュメモリ部に係る情報の一部を記憶する記憶手段と、
前記記憶手段に記憶された情報を基にして、前記第１レベルキャッシュメモリ部と、前記第２レベルキャッシュメモリ部との間で、キャッシュコヒーレンシを維持するコヒーレンシ維持手段と、
を備えたことを特徴とするキャッシュメモリ装置。
【００８６】
（付記２）前記記憶手段は、前記第２レベルキャッシュメモリ部に対するタグの物理アドレス、ステータス、仮想インデックスおよび前記第１レベルキャッシュメモリ部に係る情報の一部を関連付けて記憶することを特徴とする付記１に記載のキャッシュメモリ装置。
【００８７】
（付記３）前記第１レベルキャッシュメモリ部に係る情報の一部は、複数のビットによって構成され、前記コヒーレンシ維持手段は、前記複数のビットから前記第１レベルキャッシュメモリ部の登録状態を把握し、前記第１レベルキャッシュメモリ部と、前記第２レベルキャッシュメモリ部との間で、キャッシュコヒーレンシを維持することを特徴とする付記１または２に記載のキャッシュメモリ装置。
【００８８】
（付記４）前記第１レベルキャッシュメモリ部に対するタグの物理アドレス、ステータスおよび第２レベルキャッシュメモリ部に登録されたウェイの情報を関連付けて記憶する第１キャッシュ記憶手段を更に備えたことを特徴とする付記１に記載のキャッシュメモリ装置。
【００８９】
（付記５）前記第１レベルキャッシュメモリ部にエラーが発生した場合に、前記記憶手段に記憶された情報と、前記第１キャッシュ記憶手段に記憶された情報とを基にして、前記第１レベルキャッシュメモリ部に発生したエラーを修正する修正手段をさらに備えたことを特徴とする付記４に記載のキャッシュメモリ装置。
【００９０】
（付記６）前記修正手段は、前記第１レベルキャッシュメモリ部にエラーが発生した場合に、エラーの発生したデータを示すエラーデータが更新されている可能性があるか否かを判定し、更新されている可能性がある場合には、前記エラーデータを第２レベルキャッシュメモリ部に吐き出し、更新されている可能性がない場合には、前記エラーデータを無効化することを特徴とする付記５に記載のキャッシュメモリ装置。
【００９１】
（付記７）データ部およびタグ部からなる第１レベルキャッシュメモリ部と、該第１レベルキャッシュメモリ部を包含する第２レベルキャッシュメモリ部とを有し、プロセッサの要求に応答して該当するデータを前記プロセッサに渡すキャッシュメモリ装置を制御するキャッシュメモリ制御方法であって、
前記第１レベルキャッシュメモリ部に係る情報の一部を記憶装置に記憶する記憶工程と、
前記記憶装置に記憶された情報を基にして、前記第１レベルキャッシュメモリ部と、前記第２レベルキャッシュメモリ部との間で、キャッシュコヒーレンシを維持するコヒーレンシ維持工程と、
を含んだことを特徴とするキャッシュメモリ制御方法。
【００９２】
（付記８）前記記憶装置は、前記第２レベルキャッシュメモリ部に対するタグの物理アドレス、ステータス、仮想インデックスおよび前記第１レベルキャッシュメモリ部に係る情報の一部を関連付けて記憶することを特徴とする付記７に記載のキャッシュメモリ制御方法。
【００９３】
（付記９）データ部およびタグ部からなる第１レベルキャッシュメモリ部と、該第１レベルキャッシュメモリ部を包含する第２レベルキャッシュメモリ部とを有し、プロセッサの要求に応答して該当するデータを前記プロセッサに渡すキャッシュメモリ装置を制御するキャッシュメモリ制御方法であって、
前記第１レベルキャッシュメモリ部に係る情報の一部を記憶装置に記憶する記憶工程と、
前記第１レベルのキャッシュメモリ部にエラーが発生した場合に、前記記憶装置に記憶された情報を基にして、前記第１キャッシュメモリ部に発生したエラーを修正する修正工程と、
を含んだことを特徴とするキャッシュメモリ制御方法。
【００９４】
（付記１０）前記修正工程は、前記第１レベルキャッシュメモリ部にエラーが発生した場合に、エラーの発生したデータを示すエラーデータが更新されている可能性があるか否かを判定し、更新されている可能性がある場合には、前記エラーデータを第２レベルキャッシュメモリ部に吐き出し、更新されている可能性がない場合には、前記エラーデータを無効化することを特徴とする付記９に記載のキャッシュメモリ制御方法。
【産業上の利用可能性】
【００９５】
以上のように、本発明にかかるキャッシュメモリ装置およびキャッシュメモリ制御方法は、キャッシュメモリなどに対して有用であり、特に、マシンサイクルを高速化させる場合に適している。
【図面の簡単な説明】
【００９６】
【図１】本発明に対する第１レベルキャッシュの状態を得るまでのステージを示す図である。
【図２】本実施例に係るキャッシュメモリ装置を説明するための図である。
【図３】本実施例に係るキャッシュメモリ装置の構成を示す機能ブロック図である。
【図４】仮想アドレスのデータ構造の一例を示す図である。
【図５】物理アドレスのデータ構造の一例を示す図である。
【図６】第１レベルキャッシュタグのデータ構造の一例を示す図である。
【図７】第２レベルキャッシュタグのデータ構造の一例を示す図である。
【図８】第１レベルキャッシュ情報の意味づけの一例を示す図である。
【図９】本実施例に係るキャッシュメモリ装置のデータ処理を示すフローチャートである。
【図１０】本実施例に係るエラー処理を示すフローチャートである。
【図１１】従来技術に対する第１レベルキャッシュの状態を得るまでのステージを示す図である。
【符号の説明】
【００９７】
１００    プロセッサ
２００    キャッシュメモリ装置
２１０    命令実行制御部
２２０    第１レベルキャッシュ制御部
２３０    第１レベルキャッシュブロック部
２３０ａ  アドレス変換処理部
２３０ｂ  検索処理部
２３０ｃ  エラー検出部
２４０，２７０    記憶部
２４０ａ  命令キャッシュタグ部
２４０ｂ  命令キャッシュデータ部
２４０ｃ  オペランドキャッシュタグ部
２４０ｄ  オペランドキャッシュデータ部
２５０    第２レベルキャッシュ制御部
２６０    第２レベルキャッシュブロック部
２６０ａ  コヒーレンシ維持処理部
２６０ｂ  エラー処理部
２７０ａ  第２レベルキャッシュタグ部
２７０ｂ  第２レベルキャッシュデータ部
３００    メインメモリ
【図１】
2006040175.tif 000003
【図２】
2006040175.tif 000004
【図３】
2006040175.tif 000005
【図４】
2006040175.tif 000006
【図５】
2006040175.tif 000007
【図６】
2006040175.tif 000008
【図７】
2006040175.tif 000009
【図８】
2006040175.tif 000010
【図９】
2006040175.tif 000011
【図１０】
2006040175.tif 000012
【図１１】
2006040175.tif 000013