(57)【要約】  リプレース処理時のタグ情報のエラーを防止し、システムの損傷を防止すること。エラー検出部（１０４）は、読み出し要求された所望データのアドレスに対応するタグ情報のエラー検出を行う。検索部（１０７）は、タグ情報にエラーが検出されない場合、このタグ情報に所望データのアドレスが含まれているか否かを検索する。ウェイ選択部（１０８）は、キャッシュミスが発生した場合、タグ情報から最近の使用頻度が最も低いウェイを選択し、選択されたウェイに格納されているデータのアドレスをアドレス記憶部（１１０）へ出力する。リプレース制御部（１０９）は、キャッシュミスが発生した場合、アドレス記憶部（１１０）からアドレスを読み出し、読み出されたアドレスのデータと所望のデータとを置き換えるリプレース要求を２次キャッシュ制御部（３００）へ出力する。アドレス記憶部（１１０）は、ウェイ選択部（１０８）から出力されるアドレスを記憶する。
2007096998.tif 000002
【特許請求の範囲】
【請求項１】
データを記憶するとともに、記憶されたデータを特定するアドレスを示すタグ情報を記憶するキャッシュを備えるキャッシュメモリ装置であって、
前記キャッシュに対する所望データの書き込み／読み出し要求発生時に、前記タグ情報を読み出してエラーを検出する検出手段と、
前記検出手段によるエラー検出の結果、前記タグ情報にエラーが検出されない場合に、所望データのアドレスを前記タグ情報から検索する検索手段と、
前記検索手段による検索の結果、所望データのアドレスが前記タグ情報に含まれない場合に、前記タグ情報に含まれるアドレスであって所望データと置換されるデータのアドレスを記憶する記憶手段と、
前記記憶手段によって記憶されたアドレスを用いてデータの置換を外部に要求する制御手段と
を有することを特徴とするキャッシュメモリ装置。
【請求項２】
前記記憶手段は、
前記タグ情報に含まれる複数のアドレスのうち、最も長い時間アクセスされていないデータのアドレスを選択する選択手段を含み、
前記選択手段によって選択されたアドレスを記憶することを特徴とする請求項１記載のキャッシュメモリ装置。
【請求項３】
前記制御手段は、
前記記憶手段によって記憶されたアドレスに対応するデータを前記キャッシュから読み出して無効化することを特徴とする請求項１記載のキャッシュメモリ装置。
【請求項４】
前記制御手段は、
前記記憶手段によって記憶されたアドレスに対応するデータを前記キャッシュから読み出して外部へ転送することを特徴とする請求項１記載のキャッシュメモリ装置。
【請求項５】
前記制御手段は、
前記記憶手段によってアドレスが記憶された後、データの置換以外の処理が要求された場合に、この処理対象のデータのアドレスと前記記憶手段によって記憶されたアドレスとを比較し、両アドレスが一致する際に前記処理を中止させることを特徴とする請求項１記載のキャッシュメモリ装置。
【請求項６】
前記検出手段によるエラー検出の結果、前記タグ情報にエラーが検出された場合に、エラーが検出されたタグ情報およびこのタグ情報に対応するデータを外部から取得する取得手段と、
前記取得手段によって取得されたタグ情報およびデータを前記キャッシュに書き込む書込手段と
をさらに有することを特徴とする請求項１記載のキャッシュメモリ装置。
【請求項７】
前記検索手段による検索の結果、所望データのアドレスが前記タグ情報に含まれる場合に、前記キャッシュに記憶された所望データに対する書き込み／読み出しを実行する書込／読出手段をさらに有することを特徴とする請求項１記載のキャッシュメモリ装置。
【請求項８】
データを記憶するとともに、記憶されたデータを特定するアドレスを示すタグ情報を記憶するキャッシュを制御するキャッシュメモリ制御方法であって、
前記キャッシュに対する所望データの書き込み／読み出し要求発生時に、前記タグ情報を読み出してエラーを検出する検出工程と、
前記検出工程におけるエラー検出の結果、前記タグ情報にエラーが検出されない場合に、所望データのアドレスを前記タグ情報から検索する検索工程と、
前記検索工程における検索の結果、所望データのアドレスが前記タグ情報に含まれない場合に、前記タグ情報に含まれるアドレスであって所望データと置換されるデータのアドレスを記憶する記憶工程と、
前記記憶工程にて記憶されたアドレスを用いてデータの置換を外部に要求する要求工程と
を有することを特徴とするキャッシュメモリ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データを記憶するとともに、記憶されたデータを特定するアドレスを示すタグ情報を記憶するキャッシュを備えるキャッシュメモリ装置およびキャッシュメモリ制御方法に関し、特に、リプレース処理時のタグ情報のエラーを防止し、システムの損傷を防止することができるキャッシュメモリ装置およびキャッシュメモリ制御方法に関する。
【背景技術】
【０００２】
通常、ＣＰＵなどのプロセッサ内に備えられるキャッシュメモリは、高速アクセスが可能である反面、メインメモリよりも記憶容量が小さい。このため、メインメモリに記憶されているデータをすべてキャッシュメモリに記憶させることはできず、キャッシュメモリは、メインメモリに記憶されたデータの一部を記憶することになる。このため、メインメモリ上のどのアドレスのデータがキャッシュメモリに記憶されて（キャッシュされて）いるか検索できるよう、キャッシュメモリには、データそのものに加えてデータのメインメモリ上でのアドレスを示すタグ情報が記憶されている。【０００３】
そして、ＣＰＵにおける処理の過程でキャッシュメモリに対するデータの読み出しおよび書き込みの処理が発生すると、まず、キャッシュメモリからタグ情報が読み出され、所望のデータがキャッシュメモリにキャッシュされているか否かが検索される。このとき、タグ情報の読み出し時にエラーが発生していないことを担保するため、タグ情報に付加されているパリティビットが用いられてエラー検出が行われることがある。【０００４】
このエラー検出には、例えば特許文献１に記載されているように、パリティビットの他にＥＣＣ（Error  Correcting  Code：誤り訂正符号）などが用いられることもある。そして、特許文献１においては、メインメモリ容量とキャッシュメモリ容量との割合に応じて、パリティビットまたはＥＣＣを用いてタグ情報のエラー検出を行い、信頼性を向上することが開示されている。【０００５】
【特許文献１】特開２０００−２０３９７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
ところで、タグ情報のエラー検出の結果、読み出されたタグ情報にエラーが検出されない場合は、このタグ情報が検索されて所望のデータがキャッシュメモリに記憶されているか否かが判定される。この結果、キャッシュメモリに所望のデータが記憶されていない（キャッシュミス）場合は、現在のキャッシュメモリに記憶されているデータを、メインメモリまたは上位のキャッシュメモリ（すなわち２次キャッシュなど）に記憶されている所望のデータに置き換えるリプレース処理が行われることになる。【０００７】
リプレース処理の際には、再びキャッシュメモリからタグ情報が読み出され、所望のデータに置き換えられるデータが決定される。置き換えられるデータが決定されると、このデータおよびデータに対応するタグ情報は、一時的に退避用のバッファに記憶されるとともに、タグ情報によって示されるアドレスのデータを所望のデータに置き換えることがメインメモリまたは上位のキャッシュメモリに要求される。【０００８】
しかしながら、このとき、キャッシュメモリから読み出されたタグ情報が正しいという前提の下でリプレース処理が行われるため、キャッシュメモリからの読み出しおよび書き込みの際にタグ情報にエラーがなくても、リプレース処理の際のタグ情報の読み出しに際してエラーが発生した場合、システムの重大な損傷などを引き起こす恐れがあるという問題がある。【０００９】
本発明はかかる点に鑑みてなされたものであり、リプレース処理時のタグ情報のエラーを防止し、システムの損傷を防止することができるキャッシュメモリ装置およびキャッシュメモリ制御方法を提供することを目的とする。
【課題を解決するための手段】
【００１０】
上記課題を解決するために、本発明は、データを記憶するとともに、記憶されたデータを特定するアドレスを示すタグ情報を記憶するキャッシュを備えるキャッシュメモリ装置であって、前記キャッシュに対する所望データの書き込み／読み出し要求発生時に、前記タグ情報を読み出してエラーを検出する検出手段と、前記検出手段によるエラー検出の結果、前記タグ情報にエラーが検出されない場合に、所望データのアドレスを前記タグ情報から検索する検索手段と、前記検索手段による検索の結果、所望データのアドレスが前記タグ情報に含まれない場合に、前記タグ情報に含まれるアドレスであって所望データと置換されるデータのアドレスを記憶する記憶手段と、前記記憶手段によって記憶されたアドレスを用いてデータの置換を外部に要求する制御手段とを有することを特徴とする。【００１１】
また、本発明は、上記発明において、前記記憶手段は、前記タグ情報に含まれる複数のアドレスのうち、最も長い時間アクセスされていないデータのアドレスを選択する選択手段を含み、前記選択手段によって選択されたアドレスを記憶することを特徴とする。【００１２】
また、本発明は、上記発明において、前記制御手段は、前記記憶手段によって記憶されたアドレスに対応するデータを前記キャッシュから読み出して無効化することを特徴とする。【００１３】
また、本発明は、上記発明において、前記制御手段は、前記記憶手段によって記憶されたアドレスに対応するデータを前記キャッシュから読み出して外部へ転送することを特徴とする。【００１４】
また、本発明は、上記発明において、前記制御手段は、前記記憶手段によってアドレスが記憶された後、データの置換以外の処理が要求された場合に、この処理対象のデータのアドレスと前記記憶手段によって記憶されたアドレスとを比較し、両アドレスが一致する際に前記処理を中止させることを特徴とする。【００１５】
また、本発明は、上記発明において、前記検出手段によるエラー検出の結果、前記タグ情報にエラーが検出された場合に、エラーが検出されたタグ情報およびこのタグ情報に対応するデータを外部から取得する取得手段と、前記取得手段によって取得されたタグ情報およびデータを前記キャッシュに書き込む書込手段とをさらに有することを特徴とする。【００１６】
また、本発明は、上記発明において、前記検索手段による検索の結果、所望データのアドレスが前記タグ情報に含まれる場合に、前記キャッシュに記憶された所望データに対する書き込み／読み出しを実行する書込／読出手段をさらに有することを特徴とする。【００１７】
また、本発明は、データを記憶するとともに、記憶されたデータを特定するアドレスを示すタグ情報を記憶するキャッシュを制御するキャッシュメモリ制御方法であって、前記キャッシュに対する所望データの書き込み／読み出し要求発生時に、前記タグ情報を読み出してエラーを検出する検出工程と、前記検出工程におけるエラー検出の結果、前記タグ情報にエラーが検出されない場合に、所望データのアドレスを前記タグ情報から検索する検索工程と、前記検索工程における検索の結果、所望データのアドレスが前記タグ情報に含まれない場合に、前記タグ情報に含まれるアドレスであって所望データと置換されるデータのアドレスを記憶する記憶工程と、前記記憶工程にて記憶されたアドレスを用いてデータの置換を外部に要求する要求工程とを有することを特徴とする。
【発明の効果】
【００１８】
本発明によれば、キャッシュに対する所望データの書き込み／読み出し要求発生時に、タグ情報を読み出してエラーを検出し、エラー検出の結果、タグ情報にエラーが検出されない場合に、所望データのアドレスをタグ情報から検索し、検索の結果、所望データのアドレスがタグ情報に含まれない場合に、タグ情報に含まれるアドレスであって所望データと置換されるデータのアドレスを記憶し、記憶されたアドレスを用いてデータの置換を外部に要求する。このため、データの置換、すなわちリプレース処理時に用いられるアドレスは、エラーが検出されなかったタグ情報に基づくものとなり、タグ情報の正確性を担保することができ、リプレース処理時のタグ情報のエラーを防止し、結果としてシステムの損傷を防止することができる。【００１９】
また、本発明によれば、タグ情報に含まれる複数のアドレスのうち、最も長い時間アクセスされていないデータのアドレスを選択し、選択されたアドレスを記憶するため、アクセスされる可能性が最も低いデータがリプレース対象のデータとなり、キャッシュ効率を向上することができる。【００２０】
また、本発明によれば、記憶されたアドレスに対応するデータをキャッシュから読み出して無効化するため、リプレース対象のデータが無効化されてキャッシュ容量が確保され、所望データを新たにキャッシュに記憶させることができる。【００２１】
また、本発明によれば、記憶されたアドレスに対応するデータをキャッシュから読み出して外部へ転送するため、リプレース対象のデータが例えば２次キャッシュやメインメモリへ転送されてキャッシュ容量が確保され、所望データを新たにキャッシュに記憶させることができる。【００２２】
また、本発明によれば、アドレスが記憶された後、データの置換以外の処理が要求された場合に、この処理対象のデータのアドレスと記憶されたアドレスとを比較し、両アドレスが一致する際に処理を中止させる。このため、リプレース対象となって無効化または転送されるデータに対して、例えばストア処理などが要求されても、無駄に処理が実行されることがない。【００２３】
また、本発明によれば、エラー検出の結果、タグ情報にエラーが検出された場合に、エラーが検出されたタグ情報およびこのタグ情報に対応するデータを外部から取得し、取得されたタグ情報およびデータをキャッシュに書き込む。このため、タグ情報が更新され、エラーの再発を防止することができる。【００２４】
また、本発明によれば、検索の結果、所望データのアドレスがタグ情報に含まれる場合に、キャッシュに記憶された所望データに対する書き込み／読み出しを実行するため、所望データがキャッシュに記憶されているキャッシュヒットの場合は、迅速にデータの書き込み／読み出しが行われる。
【図面の簡単な説明】
【００２５】
【図１】図１は、本発明の一実施の形態に係るＣＰＵの概略構成を示すブロック図である。
【図２】図２は、一実施の形態に係る１次キャッシュ制御部の要部構成を示すブロック図である。
【図３】図３は、一実施の形態に係る１次キャッシュの構成を説明するための図である。
【図４】図４は、一実施の形態に係るキャッシュメモリ制御動作を示すフロー図である。
【符号の説明】
【００２６】
１００  １次キャッシュ制御部
１０１  接続部
１０２  読出指示部
１０３  書込／読出部
１０４  エラー検出部
１０５  エラー通知部
１０６  タグ／データ取得部
１０７  検索部
１０８  ウェイ選択部
１０９  リプレース制御部
１１０  アドレス記憶部
１１１  データ記憶部
２００  １次キャッシュ
３００  ２次キャッシュ制御部
４００  ２次キャッシュ
５００  命令処理部
６００  演算処理部
７００  メインメモリ
【発明を実施するための最良の形態】
【００２７】
以下、本発明の一実施の形態について、図面を参照して詳細に説明する。なお、以下においては、ＣＰＵに１次キャッシュおよび２次キャッシュが備えられている場合を例に挙げて説明するが、ＣＰＵが１次キャッシュのみを備えている場合や、ＣＰＵがさらに３次以上のキャッシュメモリを備えている場合などにも本発明を適用することができる。【００２８】
図１は、本発明の一実施の形態に係るキャッシュメモリ装置を備えたＣＰＵの概略構成を示すブロック図である。図１に示すＣＰＵは、１次キャッシュ制御部１００、１次キャッシュ２００、２次キャッシュ制御部３００、２次キャッシュ４００、命令処理部５００、演算処理部６００を備えている。また、このＣＰＵは、メインメモリ７００に接続されている。【００２９】
１次キャッシュ制御部１００は、命令処理部５００からの命令に応じて１次キャッシュ２００に対するデータの読み出しおよび書き込みを行う。また１次キャッシュ制御部１００は、１次キャッシュ２００からのデータの読み出しに際して所望のデータが記憶されていない場合、２次キャッシュ制御部３００に対してリプレース要求を送出する。このとき、１次キャッシュ制御部１００は、１次キャッシュ２００からのデータの読み出し時にエラー検出されたタグ情報を保持しておき、このタグ情報に基づくリプレース処理を行う。１次キャッシュ制御部１００の具体的な動作については、後に詳述する。【００３０】
１次キャッシュ２００は、２次キャッシュ４００およびメインメモリ７００上の頻繁に使用されるデータを記憶するとともに、記憶されたデータのメインメモリ７００上におけるアドレスを示すタグ情報を記憶する。本実施の形態においては、１次キャッシュ２００は、メインメモリ７００の所定のメモリブロックごとに複数のキャッシュラインが対応しているセットアソシアティブ構成を採っているものとする。以下では、同一のメモリブロックに対応する各キャッシュラインをウェイと呼ぶ。【００３１】
２次キャッシュ制御部３００は、１次キャッシュ制御部１００からのリプレース要求に従って、２次キャッシュ４００に対するデータの読み出しおよび書き込みを行う。また２次キャッシュ制御部３００は、１次キャッシュ制御部１００からタグ情報にエラーが検出された旨のエラー情報が出力された場合、１次キャッシュ２００のタグ情報のコピーを参照して、エラーが発生したタグ情報とこのタグ情報に対応するデータとを２次キャッシュ４００から読み出し、１次キャッシュ制御部１００へ出力する。【００３２】
２次キャッシュ４００は、メインメモリ７００上の頻繁に使用されるデータを記憶するとともに、記憶されたデータのタグ情報および１次キャッシュ２００のタグ情報のコピーを記憶する。【００３３】
命令処理部５００は、プログラムなどの命令を解釈し、必要な演算処理の実行を演算処理部６００に指示するとともに、必要なデータの読み出しおよび書き込みを１次キャッシュ制御部１００へ指示する。演算処理部６００は、命令処理部５００からの指示に応じて、１次キャッシュ２００などから読み出されたデータを用いた演算処理を行う。【００３４】
メインメモリ７００は、主記憶装置であって、ＣＰＵにおける処理に必要なデータやプログラムを記憶している。メインメモリ７００は、１次キャッシュ２００および２次キャッシュ４００と比較すると大容量であるが、アクセス速度が遅い。【００３５】
図２は、本実施の形態に係る１次キャッシュ制御部１００および１次キャッシュ２００の要部構成を示すブロック図である。図２において、１次キャッシュ制御部１００は、接続部１０１、読出指示部１０２、書込／読出部１０３、エラー検出部１０４、エラー通知部１０５、タグ／データ取得部１０６、検索部１０７、ウェイ選択部１０８、リプレース制御部１０９、アドレス記憶部１１０、およびデータ記憶部１１１を有している。また、１次キャッシュ２００は、タグＲＡＭ２０１およびデータＲＡＭ２０２を有している。【００３６】
接続部１０１は、命令処理部５００と接続されており、命令処理部５００からのデータの読み出し命令を読出指示部１０２へ通知し、１次キャッシュ２００から読み出されたデータを命令処理部５００へ出力する。【００３７】
読出指示部１０２は、命令処理部５００からデータの読み出し命令が出された場合、読み出すデータのアドレスを書込／読出部１０３へ指示する。【００３８】
書込／読出部１０３は、読出指示部１０２からアドレスを指示されると、このアドレスに対応するタグ情報をタグＲＡＭ２０１から読み出し、エラー検出部１０４へ出力する。また、書込／読出部１０３は、検索部１０７からキャッシュヒットの旨が通知されると、読出指示部１０２から指示されたアドレスに対応するデータをデータＲＡＭ２０２から読み出し、接続部１０１経由で命令処理部５００へ出力する。さらに、書込／読出部１０３は、タグ／データ取得部１０６から出力されるタグ情報およびデータをそれぞれタグＲＡＭ２０１およびデータＲＡＭ２０２に書き込む。また、書込／読出部１０３は、リプレース制御部１０９による制御に応じてデータＲＡＭ２０２からデータを読み出す。【００３９】
エラー検出部１０４は、書込／読出部１０３から出力されるタグ情報のエラー検出を行う。具体的には、エラー検出部１０４は、タグ情報に付加されたパリティビットを用いてエラー検出を行い、タグ情報にエラーが検出されれば、その旨をエラー通知部１０５へ通知し、タグ情報にエラーが検出されなければ、その旨をタグ情報とともに検索部１０７へ通知する。【００４０】
エラー通知部１０５は、タグ情報にエラーが検出された場合、このタグ情報とタグ情報に対応するデータとを更新するために、エラーが検出されたタグ情報を特定可能なエラー情報を２次キャッシュ制御部３００へ出力する。【００４１】
タグ／データ取得部１０６は、２次キャッシュ制御部３００から出力されるタグ情報およびデータを取得し、取得されたタグ情報およびデータの１次キャッシュ２００への書き込みを書込／読出部１０３へ指示する。【００４２】
検索部１０７は、タグ情報にエラーが検出されない場合、このタグ情報に読出指示部１０２が書込／読出部１０３に読み出しを指示するアドレスが含まれているか否かを検索する。書込／読出部１０３によって読み出されるタグ情報には、同一のメモリブロックに対応する複数のウェイの情報が含まれており、したがって、ウェイごとに異なるデータのアドレスが格納されている。このため、所望のデータが１次キャッシュ２００に記憶されているか否かを判断するためにタグ情報の検索が必要となり、検索の結果、読み出すデータのアドレスがタグ情報に含まれていればキャッシュヒットとなり、読み出すデータのアドレスがタグ情報に含まれていなければキャッシュミスとなる。【００４３】
そして、検索部１０７は、キャッシュヒットの場合、１次キャッシュ２００のデータＲＡＭ２０２からデータが読み出されるように、キャッシュヒットである旨を書込／読出部１０３へ通知する。一方、検索部１０７は、キャッシュミスの場合、タグ情報をウェイ選択部１０８へ出力し、キャッシュミスである旨をリプレース制御部１０９へ通知する。【００４４】
ウェイ選択部１０８は、タグ情報からＬＲＵ（Least  Recently  Used）制御により、最近の使用頻度が最も低いウェイを選択し、選択されたウェイに格納されているデータのアドレスをアドレス記憶部１１０へ出力する。【００４５】
リプレース制御部１０９は、キャッシュミスの場合、１次キャッシュ２００のデータＲＡＭ２０２に記憶されているデータを２次キャッシュ４００またはメインメモリ７００に記憶されている所望のデータに置き換えるリプレース処理を開始する。すなわち、リプレース制御部１０９は、検索部１０７からキャッシュミスの旨が通知されると、アドレス記憶部１１０からアドレスを読み出し、読み出されたアドレスのデータと所望のデータとを置き換える旨を要求するリプレース要求を２次キャッシュ制御部３００へ出力する。【００４６】
また、リプレース制御部１０９は、アドレス記憶部１１０に記憶されたアドレスのデータをデータＲＡＭ２０２から読み出すように書込／読出部１０３へ指示する。そして、リプレース制御部１０９は、書込／読出部１０３によって読み出されたデータをデータ記憶部１１１へ出力する。【００４７】
アドレス記憶部１１０は、ウェイ選択部１０８から出力される、所望のデータと置き換えられるデータのアドレスを記憶する。アドレス記憶部１１０は、エラー検出部１０４によるエラー検出の結果、エラーが検出されないタグ情報から選択されたウェイに格納されたアドレスを記憶するため、記憶されるアドレスにはエラーがないことを担保することができる。【００４８】
データ記憶部１１１は、リプレース制御部１０９から出力される、所望のデータと置き換えられるデータを記憶する。また、図２では省略したが、アドレス記憶部１１０およびデータ記憶部１１１は、２次キャッシュ制御部３００から置き換えられるデータの無効化要求が発行された場合、記憶したアドレスおよびデータを無効化する。【００４９】
タグＲＡＭ２０１は、１次キャッシュ２００に記憶されるデータのメインメモリ７００上のアドレスを示すタグ情報を記憶している。データＲＡＭ２０２は、タグＲＡＭ２０１に記憶されたアドレスに対応するデータを記憶している。上述したように、本実施の形態においては、１次キャッシュ２００は、セットアソシアティブ構成を採っている。したがって、タグＲＡＭ２０１およびデータＲＡＭ２０２は、メインメモリ７００の各メモリブロックに対して、例えば図３に示すような複数のウェイ０〜ｎのセットを対応付けて備えている。そして、タグＲＡＭ２０１の各ウェイには、対応するメモリブロック上のデータＲＡＭ２０２に記憶されたデータのアドレスが格納されており、データＲＡＭ２０２の各ウェイには、対応するメモリブロック上のデータそのものが格納されている。【００５０】
また、ウェイ０〜ｎからなる各セットには、図３に示すように、このセットが有効であるか否かを示すバリッドビット（Valid  bit）Ｖ、各ウェイに格納されているデータまたはアドレスに対応するシステム絶対アドレスＡｄｒｓ、およびバリッドビットＶとシステム絶対アドレスＡｄｒｓのエラー検出のためのパリティビット（Parity  bit）Ｐが付加されている。【００５１】
次いで、上記のように構成された１次キャッシュ制御部１００によるキャッシュメモリ制御方法について、図４に示すフロー図を参照しながら説明する。【００５２】
まず、命令処理部５００から所望のデータを１次キャッシュ２００から読み出す読出命令が発行され、１次キャッシュ制御部１００の接続部１０１に到達する（ステップＳ１０１）。そして、接続部１０１によって読み出し命令が読出指示部１０２へ出力され、読出指示部１０２によって読み出し命令に含まれる所望のデータのアドレスが書込／読出部１０３へ通知され、書込／読出部１０３によって通知されたアドレスに対応するタグ情報が１次キャッシュ２００のタグＲＡＭ２０１から読み出される（ステップＳ１０２）。【００５３】
読み出されたタグ情報は、エラー検出部１０４へ出力され、エラー検出部１０４によってタグ情報のパリティビットが用いられ、タグ情報のエラー検出が実行される（ステップＳ１０３）。エラー検出の結果、タグ情報にエラーが検出された場合（ステップＳ１０３Ｙｅｓ）、エラー通知部１０５によってエラー情報が２次キャッシュ制御部３００へ出力される（ステップＳ１０４）。そして、２次キャッシュ制御部３００によって、１次キャッシュ２００のタグ情報のコピーが参照され、エラー情報を基にエラーが検出されたタグ情報に対応するデータおよびタグ情報が２次キャッシュ４００から読み出され、１次キャッシュ制御部１００へ出力される。これらのデータおよびタグ情報は、１次キャッシュ制御部１００のタグ／データ取得部１０６によって取得され、書込／読出部１０３に対してそれぞれデータＲＡＭ２０２およびタグＲＡＭ２０１への書き込みが指示される。これにより、書込／読出部１０３によってエラーがないデータおよびタグ情報がデータＲＡＭ２０２およびタグＲＡＭ２０１に書き込まれ、タグＲＡＭ２０１の更新が行われる（ステップＳ１０５）。【００５４】
一方、タグ情報のエラー検出の結果、タグ情報にエラーが検出されない場合（ステップＳ１０３Ｎｏ）、タグ情報は検索部１０７へ出力され、検索部１０７によって所望のデータがタグ情報に登録されているか否かが検索される（ステップＳ１０６）。この結果、所望のデータがタグ情報に登録されておりキャッシュヒットすれば（ステップＳ１０６Ｙｅｓ）、命令処理部５００からの読み出し命令に応じたデータがデータＲＡＭ２０２に記憶されているため、このデータの読み出し処理が実行される（ステップＳ１０７）。すなわち、検索部１０７によって所望のデータの読み出しが書込／読出部１０３へ指示され、書込／読出部１０３によってデータＲＡＭ２０２から所望のデータが読み出され、接続部１０１経由で命令処理部５００へ出力される。【００５５】
また、検索部１０７によるタグ情報の検索の結果、所望のデータがタグ情報に登録されておらずキャッシュミスすれば（ステップＳ１０６Ｎｏ）、タグ情報がウェイ選択部１０８へ出力されるとともに、リプレース制御部１０９へキャッシュミスの旨が通知される。そして、ウェイ選択部１０８によって、タグ情報に含まれる複数のウェイのうち、最近一番長い時間アクセスされていないウェイが選択される（すなわち、ＬＲＵ制御が行われる）。このウェイは、最近のアクセス頻度が低いため、今回アクセスされる所望のデータとの置き換え対象のウェイとなる。このため、ウェイ選択部１０８によって選択されたウェイに格納されているアドレスは、アドレス記憶部１１０に記憶される（ステップＳ１０８）。ここで、アドレス記憶部１１０に記憶されるアドレスは、エラー検出部１０４によるエラー検出の結果、エラーが検出されなかったタグ情報から得られるものであるため、正確なものであることが担保される。【００５６】
そして、キャッシュミスが発生した旨が通知されたリプレース制御部１０９によって、アドレス記憶部１１０に記憶されたアドレスが読み出され、１次キャッシュ２００において、読み出されたアドレスのデータと所望のデータとの置き換えを要求するリプレース要求が２次キャッシュ制御部３００へ発行される（ステップＳ１０９）。【００５７】
さらに、リプレース制御部１０９によって、アドレス記憶部１１０から読み出されたアドレスのデータを読み出すように書込／読出部１０３へ指示され、このデータがリプレース対象のデータとしてデータＲＡＭ２０２から書込／読出部１０３によって読み出されると（ステップＳ１１０）、リプレース制御部１０９からデータ記憶部１１１へ出力されて記憶される（ステップＳ１１１）。【００５８】
このようなリプレース処理時において、本実施の形態では、上述のようにアドレス記憶部１１０に記憶されたアドレスの正確さが担保されているため、リプレース処理時に改めてタグ情報をタグＲＡＭ２０１から読み出してエラー検出を行う必要がないとともに、リプレース処理に用いられるタグ情報（すなわちアドレス）にエラーが発生することもない。【００５９】
なお、データＲＡＭ２０２からのデータの読み出しに際して、ＬＲＵ制御によりリプレース対象のデータを格納するウェイを決定するようにしても良いが、タグＲＡＭ２０１のウェイとデータＲＡＭ２０２のウェイとが対応しているため、タグ情報に関するウェイ選択と同じウェイが選択されることになり、結果として、アドレス記憶部１１０に記憶されたアドレスのデータが格納されているウェイが選択されることになる。【００６０】
その後、リプレース要求を受けた２次キャッシュ制御部３００からリプレース対象のデータの無効化要求が発行されると、リプレース制御部１０９によって、アドレス記憶部１１０に記憶されたアドレスおよびデータ記憶部１１１に記憶されたデータが無効化され（ステップＳ１１２）、２次キャッシュ制御部３００から出力された所望のデータおよびタグ情報がそれぞれデータＲＡＭ２０２およびタグＲＡＭ２０１に記憶され、リプレース処理が終了する。なお、２次キャッシュ制御部３００は、リプレース要求された所望のデータが２次キャッシュ４００に記憶されていない場合は、メインメモリ７００から所望のデータを取得して、１次キャッシュ制御部１００へ出力する。また、２次キャッシュ制御部３００から、無効化要求の代わりにデータのムーブアウト要求が発行された場合は、リプレース制御部１０９によって、アドレス記憶部１１０に記憶されたアドレスおよびデータ記憶部１１１に記憶されたデータが２次キャッシュ制御部３００へムーブアウトされるようにしても良い。【００６１】
以上のように、本実施の形態によれば、データの読み出し命令に応じたタグ情報の読み出し時にタグ情報のエラー検出を実行し、タグ情報にエラーが検出されず、かつ、キャッシュミスが発生した場合は、エラーが検出されなかったタグ情報に格納されているアドレスをキャッシュミスに伴うリプレース処理用に一時的に保持しておく。このため、リプレース処理に用いられるタグ情報（アドレス）の正確性が担保され、リプレース処理時のタグ情報のエラーを防止し、システムの損傷を防止することができる。【００６２】
なお、上記一実施の形態において、アドレス記憶部１１０にアドレスが記憶された後であってリプレース処理が開始される前に、例えばストア処理が実行される場合は、ストア対象のデータのアドレスがアドレス記憶部１１０に記憶されたアドレスと比較され、両アドレスが一致する場合は、リプレースによって無効化またはムーブアウトされるデータのストア処理が実行されることを意味しているため、ストア処理の実行が中止されるようにしても良い。
【産業上の利用可能性】
【００６３】
本発明は、リプレース処理時のタグ情報のエラーを防止し、システムの損傷を防止する場合に適用することができる。
【図１】
2007096998.tif 000003
【図２】
2007096998.tif 000004
【図３】
2007096998.tif 000005
【図４】
2007096998.tif 000006
【手続補正書】
【提出日】平成20年4月25日(2008.4.25)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
データを記憶するとともに、記憶されたデータを特定するアドレスを示すタグ情報を記憶するキャッシュを備えるキャッシュメモリ装置であって、
前記キャッシュに対する所望データの書き込み／読み出し要求発生時に、前記タグ情報を読み出してエラーを検出する検出手段と、
前記検出手段によるエラー検出の結果、前記タグ情報にエラーが検出されない場合に、所望データのアドレスを前記タグ情報から検索する検索手段と、
前記検索手段による検索の結果、所望データのアドレスが前記タグ情報に含まれない場合に、前記タグ情報に含まれるアドレスであって所望データと置換されるデータのアドレスを記憶する記憶手段と、
前記記憶手段によって記憶されたアドレスを用いてデータの置換を外部に要求する制御手段と
を有することを特徴とするキャッシュメモリ装置。
【請求項２】
前記記憶手段は、
前記タグ情報に含まれる複数のアドレスのうち、最も長い時間アクセスされていないデータのアドレスを選択する選択手段を含み、
前記選択手段によって選択されたアドレスを記憶することを特徴とする請求項１記載のキャッシュメモリ装置。
【請求項３】
前記制御手段は、
前記記憶手段によってアドレスが記憶された後、データの置換以外の処理が要求された場合に、この処理対象のデータのアドレスと前記記憶手段によって記憶されたアドレスとを比較し、両アドレスが一致する際に前記処理を中止させることを特徴とする請求項１記載のキャッシュメモリ装置。
【請求項４】
データを記憶するとともに、記憶されたデータを特定するアドレスを示すタグ情報を記憶するキャッシュを制御するキャッシュメモリ制御方法であって、
前記キャッシュに対する所望データの書き込み／読み出し要求発生時に、前記タグ情報を読み出してエラーを検出する検出工程と、
前記検出工程におけるエラー検出の結果、前記タグ情報にエラーが検出されない場合に、所望データのアドレスを前記タグ情報から検索する検索工程と、
前記検索工程における検索の結果、所望データのアドレスが前記タグ情報に含まれない場合に、前記タグ情報に含まれるアドレスであって所望データと置換されるデータのアドレスを記憶する記憶工程と、
前記記憶工程にて記憶されたアドレスを用いてデータの置換を外部に要求する要求工程と
を有することを特徴とするキャッシュメモリ制御方法。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データを記憶するとともに、記憶されたデータを特定するアドレスを示すタグ情報を記憶するキャッシュを備えるキャッシュメモリ装置およびキャッシュメモリ制御方法に関し、特に、リプレース処理時のタグ情報のエラーを防止し、システムの損傷を防止することができるキャッシュメモリ装置およびキャッシュメモリ制御方法に関する。
【背景技術】
【０００２】
通常、ＣＰＵなどのプロセッサ内に備えられるキャッシュメモリは、高速アクセスが可能である反面、メインメモリよりも記憶容量が小さい。このため、メインメモリに記憶されているデータをすべてキャッシュメモリに記憶させることはできず、キャッシュメモリは、メインメモリに記憶されたデータの一部を記憶することになる。このため、メインメモリ上のどのアドレスのデータがキャッシュメモリに記憶されて（キャッシュされて）いるか検索できるよう、キャッシュメモリには、データそのものに加えてデータのメインメモリ上でのアドレスを示すタグ情報が記憶されている。
【０００３】
そして、ＣＰＵにおける処理の過程でキャッシュメモリに対するデータの読み出しおよび書き込みの処理が発生すると、まず、キャッシュメモリからタグ情報が読み出され、所望のデータがキャッシュメモリにキャッシュされているか否かが検索される。このとき、タグ情報の読み出し時にエラーが発生していないことを担保するため、タグ情報に付加されているパリティビットが用いられてエラー検出が行われることがある。
【０００４】
このエラー検出には、例えば特許文献１に記載されているように、パリティビットの他にＥＣＣ（Error  Correcting  Code：誤り訂正符号）などが用いられることもある。そして、特許文献１においては、メインメモリ容量とキャッシュメモリ容量との割合に応じて、パリティビットまたはＥＣＣを用いてタグ情報のエラー検出を行い、信頼性を向上することが開示されている。
【０００５】
【特許文献１】特開２０００−２０３９７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
ところで、タグ情報のエラー検出の結果、読み出されたタグ情報にエラーが検出されない場合は、このタグ情報が検索されて所望のデータがキャッシュメモリに記憶されているか否かが判定される。この結果、キャッシュメモリに所望のデータが記憶されていない（キャッシュミス）場合は、現在のキャッシュメモリに記憶されているデータを、メインメモリまたは上位のキャッシュメモリ（すなわち２次キャッシュなど）に記憶されている所望のデータに置き換えるリプレース処理が行われることになる。
【０００７】
リプレース処理の際には、再びキャッシュメモリからタグ情報が読み出され、所望のデータに置き換えられるデータが決定される。置き換えられるデータが決定されると、このデータおよびデータに対応するタグ情報は、一時的に退避用のバッファに記憶されるとともに、タグ情報によって示されるアドレスのデータを所望のデータに置き換えることがメインメモリまたは上位のキャッシュメモリに要求される。
【０００８】
しかしながら、このとき、キャッシュメモリから読み出されたタグ情報が正しいという前提の下でリプレース処理が行われるため、キャッシュメモリからの読み出しおよび書き込みの際にタグ情報にエラーがなくても、リプレース処理の際のタグ情報の読み出しに際してエラーが発生した場合、システムの重大な損傷などを引き起こす恐れがあるという問題がある。
【０００９】
本発明はかかる点に鑑みてなされたものであり、リプレース処理時のタグ情報のエラーを防止し、システムの損傷を防止することができるキャッシュメモリ装置およびキャッシュメモリ制御方法を提供することを目的とする。
【課題を解決するための手段】
【００１０】
上記課題を解決するために、キャッシュメモリ装置は、データを記憶するとともに、記憶されたデータを特定するアドレスを示すタグ情報を記憶するキャッシュを備えるキャッシュメモリ装置であって、前記キャッシュに対する所望データの書き込み／読み出し要求発生時に、前記タグ情報を読み出してエラーを検出する検出手段と、前記検出手段によるエラー検出の結果、前記タグ情報にエラーが検出されない場合に、所望データのアドレスを前記タグ情報から検索する検索手段と、前記検索手段による検索の結果、所望データのアドレスが前記タグ情報に含まれない場合に、前記タグ情報に含まれるアドレスであって所望データと置換されるデータのアドレスを記憶する記憶手段と、前記記憶手段によって記憶されたアドレスを用いてデータの置換を外部に要求する制御手段とを有する構成を採る。
【００１１】
また、キャッシュメモリ装置は、上記構成において、前記記憶手段は、前記タグ情報に含まれる複数のアドレスのうち、最も長い時間アクセスされていないデータのアドレスを選択する選択手段を含み、前記選択手段によって選択されたアドレスを記憶する構成を採る。
【００１２】
また、キャッシュメモリ装置は、上記構成において、前記制御手段は、前記記憶手段によって記憶されたアドレスに対応するデータを前記キャッシュから読み出して無効化する構成を採る。
【００１３】
また、キャッシュメモリ装置は、上記構成において、前記制御手段は、前記記憶手段によって記憶されたアドレスに対応するデータを前記キャッシュから読み出して外部へ転送する構成を採る。
【００１４】
また、キャッシュメモリ装置は、上記構成において、前記制御手段は、前記記憶手段によってアドレスが記憶された後、データの置換以外の処理が要求された場合に、この処理対象のデータのアドレスと前記記憶手段によって記憶されたアドレスとを比較し、両アドレスが一致する際に前記処理を中止させる構成を採る。
【００１５】
また、キャッシュメモリ装置は、上記構成において、前記検出手段によるエラー検出の結果、前記タグ情報にエラーが検出された場合に、エラーが検出されたタグ情報およびこのタグ情報に対応するデータを外部から取得する取得手段と、前記取得手段によって取得されたタグ情報およびデータを前記キャッシュに書き込む書込手段とをさらに有する構成を採る。
【００１６】
また、キャッシュメモリ装置は、上記構成において、前記検索手段による検索の結果、所望データのアドレスが前記タグ情報に含まれる場合に、前記キャッシュに記憶された所望データに対する書き込み／読み出しを実行する書込／読出手段をさらに有する構成を採る。
【００１７】
また、キャッシュメモリ制御方法は、データを記憶するとともに、記憶されたデータを特定するアドレスを示すタグ情報を記憶するキャッシュを制御するキャッシュメモリ制御方法であって、前記キャッシュに対する所望データの書き込み／読み出し要求発生時に、前記タグ情報を読み出してエラーを検出する検出工程と、前記検出工程におけるエラー検出の結果、前記タグ情報にエラーが検出されない場合に、所望データのアドレスを前記タグ情報から検索する検索工程と、前記検索工程における検索の結果、所望データのアドレスが前記タグ情報に含まれない場合に、前記タグ情報に含まれるアドレスであって所望データと置換されるデータのアドレスを記憶する記憶工程と、前記記憶工程にて記憶されたアドレスを用いてデータの置換を外部に要求する要求工程とを有するようにした。
【発明の効果】
【００１８】
本発明によれば、キャッシュに対する所望データの書き込み／読み出し要求発生時に、タグ情報を読み出してエラーを検出し、エラー検出の結果、タグ情報にエラーが検出されない場合に、所望データのアドレスをタグ情報から検索し、検索の結果、所望データのアドレスがタグ情報に含まれない場合に、タグ情報に含まれるアドレスであって所望データと置換されるデータのアドレスを記憶し、記憶されたアドレスを用いてデータの置換を外部に要求する。このため、データの置換、すなわちリプレース処理時に用いられるアドレスは、エラーが検出されなかったタグ情報に基づくものとなり、タグ情報の正確性を担保することができ、リプレース処理時のタグ情報のエラーを防止し、結果としてシステムの損傷を防止することができる。
【００１９】
また、本発明によれば、タグ情報に含まれる複数のアドレスのうち、最も長い時間アクセスされていないデータのアドレスを選択し、選択されたアドレスを記憶するため、アクセスされる可能性が最も低いデータがリプレース対象のデータとなり、キャッシュ効率を向上することができる。
【００２０】
また、本発明によれば、記憶されたアドレスに対応するデータをキャッシュから読み出して無効化するため、リプレース対象のデータが無効化されてキャッシュ容量が確保され、所望データを新たにキャッシュに記憶させることができる。
【００２１】
また、本発明によれば、記憶されたアドレスに対応するデータをキャッシュから読み出して外部へ転送するため、リプレース対象のデータが例えば２次キャッシュやメインメモリへ転送されてキャッシュ容量が確保され、所望データを新たにキャッシュに記憶させることができる。
【００２２】
また、本発明によれば、アドレスが記憶された後、データの置換以外の処理が要求された場合に、この処理対象のデータのアドレスと記憶されたアドレスとを比較し、両アドレスが一致する際に処理を中止させる。このため、リプレース対象となって無効化または転送されるデータに対して、例えばストア処理などが要求されても、無駄に処理が実行されることがない。
【００２３】
また、本発明によれば、エラー検出の結果、タグ情報にエラーが検出された場合に、エラーが検出されたタグ情報およびこのタグ情報に対応するデータを外部から取得し、取得されたタグ情報およびデータをキャッシュに書き込む。このため、タグ情報が更新され、エラーの再発を防止することができる。
【００２４】
また、本発明によれば、検索の結果、所望データのアドレスがタグ情報に含まれる場合に、キャッシュに記憶された所望データに対する書き込み／読み出しを実行するため、所望データがキャッシュに記憶されているキャッシュヒットの場合は、迅速にデータの書き込み／読み出しが行われる。
【発明を実施するための最良の形態】
【００２５】
以下、本発明の一実施の形態について、図面を参照して詳細に説明する。なお、以下においては、ＣＰＵに１次キャッシュおよび２次キャッシュが備えられている場合を例に挙げて説明するが、ＣＰＵが１次キャッシュのみを備えている場合や、ＣＰＵがさらに３次以上のキャッシュメモリを備えている場合などにも本発明を適用することができる。
【００２６】
図１は、本発明の一実施の形態に係るキャッシュメモリ装置を備えたＣＰＵの概略構成を示すブロック図である。図１に示すＣＰＵは、１次キャッシュ制御部１００、１次キャッシュ２００、２次キャッシュ制御部３００、２次キャッシュ４００、命令処理部５００、演算処理部６００を備えている。また、このＣＰＵは、メインメモリ７００に接続されている。
【００２７】
１次キャッシュ制御部１００は、命令処理部５００からの命令に応じて１次キャッシュ２００に対するデータの読み出しおよび書き込みを行う。また１次キャッシュ制御部１００は、１次キャッシュ２００からのデータの読み出しに際して所望のデータが記憶されていない場合、２次キャッシュ制御部３００に対してリプレース要求を送出する。このとき、１次キャッシュ制御部１００は、１次キャッシュ２００からのデータの読み出し時にエラー検出されたタグ情報を保持しておき、このタグ情報に基づくリプレース処理を行う。１次キャッシュ制御部１００の具体的な動作については、後に詳述する。
【００２８】
１次キャッシュ２００は、２次キャッシュ４００およびメインメモリ７００上の頻繁に使用されるデータを記憶するとともに、記憶されたデータのメインメモリ７００上におけるアドレスを示すタグ情報を記憶する。本実施の形態においては、１次キャッシュ２００は、メインメモリ７００の所定のメモリブロックごとに複数のキャッシュラインが対応しているセットアソシアティブ構成を採っているものとする。以下では、同一のメモリブロックに対応する各キャッシュラインをウェイと呼ぶ。
【００２９】
２次キャッシュ制御部３００は、１次キャッシュ制御部１００からのリプレース要求に従って、２次キャッシュ４００に対するデータの読み出しおよび書き込みを行う。また２次キャッシュ制御部３００は、１次キャッシュ制御部１００からタグ情報にエラーが検出された旨のエラー情報が出力された場合、１次キャッシュ２００のタグ情報のコピーを参照して、エラーが発生したタグ情報とこのタグ情報に対応するデータとを２次キャッシュ４００から読み出し、１次キャッシュ制御部１００へ出力する。
【００３０】
２次キャッシュ４００は、メインメモリ７００上の頻繁に使用されるデータを記憶するとともに、記憶されたデータのタグ情報および１次キャッシュ２００のタグ情報のコピーを記憶する。
【００３１】
命令処理部５００は、プログラムなどの命令を解釈し、必要な演算処理の実行を演算処理部６００に指示するとともに、必要なデータの読み出しおよび書き込みを１次キャッシュ制御部１００へ指示する。演算処理部６００は、命令処理部５００からの指示に応じて、１次キャッシュ２００などから読み出されたデータを用いた演算処理を行う。
【００３２】
メインメモリ７００は、主記憶装置であって、ＣＰＵにおける処理に必要なデータやプログラムを記憶している。メインメモリ７００は、１次キャッシュ２００および２次キャッシュ４００と比較すると大容量であるが、アクセス速度が遅い。
【００３３】
図２は、本実施の形態に係る１次キャッシュ制御部１００および１次キャッシュ２００の要部構成を示すブロック図である。図２において、１次キャッシュ制御部１００は、接続部１０１、読出指示部１０２、書込／読出部１０３、エラー検出部１０４、エラー通知部１０５、タグ／データ取得部１０６、検索部１０７、ウェイ選択部１０８、リプレース制御部１０９、アドレス記憶部１１０、およびデータ記憶部１１１を有している。また、１次キャッシュ２００は、タグＲＡＭ２０１およびデータＲＡＭ２０２を有している。
【００３４】
接続部１０１は、命令処理部５００と接続されており、命令処理部５００からのデータの読み出し命令を読出指示部１０２へ通知し、１次キャッシュ２００から読み出されたデータを命令処理部５００へ出力する。
【００３５】
読出指示部１０２は、命令処理部５００からデータの読み出し命令が出された場合、読み出すデータのアドレスを書込／読出部１０３へ指示する。
【００３６】
書込／読出部１０３は、読出指示部１０２からアドレスを指示されると、このアドレスに対応するタグ情報をタグＲＡＭ２０１から読み出し、エラー検出部１０４へ出力する。また、書込／読出部１０３は、検索部１０７からキャッシュヒットの旨が通知されると、読出指示部１０２から指示されたアドレスに対応するデータをデータＲＡＭ２０２から読み出し、接続部１０１経由で命令処理部５００へ出力する。さらに、書込／読出部１０３は、タグ／データ取得部１０６から出力されるタグ情報およびデータをそれぞれタグＲＡＭ２０１およびデータＲＡＭ２０２に書き込む。また、書込／読出部１０３は、リプレース制御部１０９による制御に応じてデータＲＡＭ２０２からデータを読み出す。
【００３７】
エラー検出部１０４は、書込／読出部１０３から出力されるタグ情報のエラー検出を行う。具体的には、エラー検出部１０４は、タグ情報に付加されたパリティビットを用いてエラー検出を行い、タグ情報にエラーが検出されれば、その旨をエラー通知部１０５へ通知し、タグ情報にエラーが検出されなければ、その旨をタグ情報とともに検索部１０７へ通知する。
【００３８】
エラー通知部１０５は、タグ情報にエラーが検出された場合、このタグ情報とタグ情報に対応するデータとを更新するために、エラーが検出されたタグ情報を特定可能なエラー情報を２次キャッシュ制御部３００へ出力する。
【００３９】
タグ／データ取得部１０６は、２次キャッシュ制御部３００から出力されるタグ情報およびデータを取得し、取得されたタグ情報およびデータの１次キャッシュ２００への書き込みを書込／読出部１０３へ指示する。
【００４０】
検索部１０７は、タグ情報にエラーが検出されない場合、このタグ情報に読出指示部１０２が書込／読出部１０３に読み出しを指示するアドレスが含まれているか否かを検索する。書込／読出部１０３によって読み出されるタグ情報には、同一のメモリブロックに対応する複数のウェイの情報が含まれており、したがって、ウェイごとに異なるデータのアドレスが格納されている。このため、所望のデータが１次キャッシュ２００に記憶されているか否かを判断するためにタグ情報の検索が必要となり、検索の結果、読み出すデータのアドレスがタグ情報に含まれていればキャッシュヒットとなり、読み出すデータのアドレスがタグ情報に含まれていなければキャッシュミスとなる。
【００４１】
そして、検索部１０７は、キャッシュヒットの場合、１次キャッシュ２００のデータＲＡＭ２０２からデータが読み出されるように、キャッシュヒットである旨を書込／読出部１０３へ通知する。一方、検索部１０７は、キャッシュミスの場合、タグ情報をウェイ選択部１０８へ出力し、キャッシュミスである旨をリプレース制御部１０９へ通知する。
【００４２】
ウェイ選択部１０８は、タグ情報からＬＲＵ（Least  Recently  Used）制御により、最近の使用頻度が最も低いウェイを選択し、選択されたウェイに格納されているデータのアドレスをアドレス記憶部１１０へ出力する。
【００４３】
リプレース制御部１０９は、キャッシュミスの場合、１次キャッシュ２００のデータＲＡＭ２０２に記憶されているデータを２次キャッシュ４００またはメインメモリ７００に記憶されている所望のデータに置き換えるリプレース処理を開始する。すなわち、リプレース制御部１０９は、検索部１０７からキャッシュミスの旨が通知されると、アドレス記憶部１１０からアドレスを読み出し、読み出されたアドレスのデータと所望のデータとを置き換える旨を要求するリプレース要求を２次キャッシュ制御部３００へ出力する。
【００４４】
また、リプレース制御部１０９は、アドレス記憶部１１０に記憶されたアドレスのデータをデータＲＡＭ２０２から読み出すように書込／読出部１０３へ指示する。そして、リプレース制御部１０９は、書込／読出部１０３によって読み出されたデータをデータ記憶部１１１へ出力する。
【００４５】
アドレス記憶部１１０は、ウェイ選択部１０８から出力される、所望のデータと置き換えられるデータのアドレスを記憶する。アドレス記憶部１１０は、エラー検出部１０４によるエラー検出の結果、エラーが検出されないタグ情報から選択されたウェイに格納されたアドレスを記憶するため、記憶されるアドレスにはエラーがないことを担保することができる。
【００４６】
データ記憶部１１１は、リプレース制御部１０９から出力される、所望のデータと置き換えられるデータを記憶する。また、図２では省略したが、アドレス記憶部１１０およびデータ記憶部１１１は、２次キャッシュ制御部３００から置き換えられるデータの無効化要求が発行された場合、記憶したアドレスおよびデータを無効化する。
【００４７】
タグＲＡＭ２０１は、１次キャッシュ２００に記憶されるデータのメインメモリ７００上のアドレスを示すタグ情報を記憶している。データＲＡＭ２０２は、タグＲＡＭ２０１に記憶されたアドレスに対応するデータを記憶している。上述したように、本実施の形態においては、１次キャッシュ２００は、セットアソシアティブ構成を採っている。したがって、タグＲＡＭ２０１およびデータＲＡＭ２０２は、メインメモリ７００の各メモリブロックに対して、例えば図３に示すような複数のウェイ０〜ｎのセットを対応付けて備えている。そして、タグＲＡＭ２０１の各ウェイには、対応するメモリブロック上のデータＲＡＭ２０２に記憶されたデータのアドレスが格納されており、データＲＡＭ２０２の各ウェイには、対応するメモリブロック上のデータそのものが格納されている。
【００４８】
また、ウェイ０〜ｎからなる各セットには、図３に示すように、このセットが有効であるか否かを示すバリッドビット（Valid  bit）Ｖ、各ウェイに格納されているデータまたはアドレスに対応するシステム絶対アドレスＡｄｒｓ、およびバリッドビットＶとシステム絶対アドレスＡｄｒｓのエラー検出のためのパリティビット（Parity  bit）Ｐが付加されている。
【００４９】
次いで、上記のように構成された１次キャッシュ制御部１００によるキャッシュメモリ制御方法について、図４に示すフロー図を参照しながら説明する。
【００５０】
まず、命令処理部５００から所望のデータを１次キャッシュ２００から読み出す読出命令が発行され、１次キャッシュ制御部１００の接続部１０１に到達する（ステップＳ１０１）。そして、接続部１０１によって読み出し命令が読出指示部１０２へ出力され、読出指示部１０２によって読み出し命令に含まれる所望のデータのアドレスが書込／読出部１０３へ通知され、書込／読出部１０３によって通知されたアドレスに対応するタグ情報が１次キャッシュ２００のタグＲＡＭ２０１から読み出される（ステップＳ１０２）。
【００５１】
読み出されたタグ情報は、エラー検出部１０４へ出力され、エラー検出部１０４によってタグ情報のパリティビットが用いられ、タグ情報のエラー検出が実行される（ステップＳ１０３）。エラー検出の結果、タグ情報にエラーが検出された場合（ステップＳ１０３Ｙｅｓ）、エラー通知部１０５によってエラー情報が２次キャッシュ制御部３００へ出力される（ステップＳ１０４）。そして、２次キャッシュ制御部３００によって、１次キャッシュ２００のタグ情報のコピーが参照され、エラー情報を基にエラーが検出されたタグ情報に対応するデータおよびタグ情報が２次キャッシュ４００から読み出され、１次キャッシュ制御部１００へ出力される。これらのデータおよびタグ情報は、１次キャッシュ制御部１００のタグ／データ取得部１０６によって取得され、書込／読出部１０３に対してそれぞれデータＲＡＭ２０２およびタグＲＡＭ２０１への書き込みが指示される。これにより、書込／読出部１０３によってエラーがないデータおよびタグ情報がデータＲＡＭ２０２およびタグＲＡＭ２０１に書き込まれ、タグＲＡＭ２０１の更新が行われる（ステップＳ１０５）。
【００５２】
一方、タグ情報のエラー検出の結果、タグ情報にエラーが検出されない場合（ステップＳ１０３Ｎｏ）、タグ情報は検索部１０７へ出力され、検索部１０７によって所望のデータがタグ情報に登録されているか否かが検索される（ステップＳ１０６）。この結果、所望のデータがタグ情報に登録されておりキャッシュヒットすれば（ステップＳ１０６Ｙｅｓ）、命令処理部５００からの読み出し命令に応じたデータがデータＲＡＭ２０２に記憶されているため、このデータの読み出し処理が実行される（ステップＳ１０７）。すなわち、検索部１０７によって所望のデータの読み出しが書込／読出部１０３へ指示され、書込／読出部１０３によってデータＲＡＭ２０２から所望のデータが読み出され、接続部１０１経由で命令処理部５００へ出力される。
【００５３】
また、検索部１０７によるタグ情報の検索の結果、所望のデータがタグ情報に登録されておらずキャッシュミスすれば（ステップＳ１０６Ｎｏ）、タグ情報がウェイ選択部１０８へ出力されるとともに、リプレース制御部１０９へキャッシュミスの旨が通知される。そして、ウェイ選択部１０８によって、タグ情報に含まれる複数のウェイのうち、最近一番長い時間アクセスされていないウェイが選択される（すなわち、ＬＲＵ制御が行われる）。このウェイは、最近のアクセス頻度が低いため、今回アクセスされる所望のデータとの置き換え対象のウェイとなる。このため、ウェイ選択部１０８によって選択されたウェイに格納されているアドレスは、アドレス記憶部１１０に記憶される（ステップＳ１０８）。ここで、アドレス記憶部１１０に記憶されるアドレスは、エラー検出部１０４によるエラー検出の結果、エラーが検出されなかったタグ情報から得られるものであるため、正確なものであることが担保される。
【００５４】
そして、キャッシュミスが発生した旨が通知されたリプレース制御部１０９によって、アドレス記憶部１１０に記憶されたアドレスが読み出され、１次キャッシュ２００において、読み出されたアドレスのデータと所望のデータとの置き換えを要求するリプレース要求が２次キャッシュ制御部３００へ発行される（ステップＳ１０９）。
【００５５】
さらに、リプレース制御部１０９によって、アドレス記憶部１１０から読み出されたアドレスのデータを読み出すように書込／読出部１０３へ指示され、このデータがリプレース対象のデータとしてデータＲＡＭ２０２から書込／読出部１０３によって読み出されると（ステップＳ１１０）、リプレース制御部１０９からデータ記憶部１１１へ出力されて記憶される（ステップＳ１１１）。
【００５６】
このようなリプレース処理時において、本実施の形態では、上述のようにアドレス記憶部１１０に記憶されたアドレスの正確さが担保されているため、リプレース処理時に改めてタグ情報をタグＲＡＭ２０１から読み出してエラー検出を行う必要がないとともに、リプレース処理に用いられるタグ情報（すなわちアドレス）にエラーが発生することもない。
【００５７】
なお、データＲＡＭ２０２からのデータの読み出しに際して、ＬＲＵ制御によりリプレース対象のデータを格納するウェイを決定するようにしても良いが、タグＲＡＭ２０１のウェイとデータＲＡＭ２０２のウェイとが対応しているため、タグ情報に関するウェイ選択と同じウェイが選択されることになり、結果として、アドレス記憶部１１０に記憶されたアドレスのデータが格納されているウェイが選択されることになる。
【００５８】
その後、リプレース要求を受けた２次キャッシュ制御部３００からリプレース対象のデータの無効化要求が発行されると、リプレース制御部１０９によって、アドレス記憶部１１０に記憶されたアドレスおよびデータ記憶部１１１に記憶されたデータが無効化され（ステップＳ１１２）、２次キャッシュ制御部３００から出力された所望のデータおよびタグ情報がそれぞれデータＲＡＭ２０２およびタグＲＡＭ２０１に記憶され、リプレース処理が終了する。なお、２次キャッシュ制御部３００は、リプレース要求された所望のデータが２次キャッシュ４００に記憶されていない場合は、メインメモリ７００から所望のデータを取得して、１次キャッシュ制御部１００へ出力する。また、２次キャッシュ制御部３００から、無効化要求の代わりにデータのムーブアウト要求が発行された場合は、リプレース制御部１０９によって、アドレス記憶部１１０に記憶されたアドレスおよびデータ記憶部１１１に記憶されたデータが２次キャッシュ制御部３００へムーブアウトされるようにしても良い。
【００５９】
以上のように、本実施の形態によれば、データの読み出し命令に応じたタグ情報の読み出し時にタグ情報のエラー検出を実行し、タグ情報にエラーが検出されず、かつ、キャッシュミスが発生した場合は、エラーが検出されなかったタグ情報に格納されているアドレスをキャッシュミスに伴うリプレース処理用に一時的に保持しておく。このため、リプレース処理に用いられるタグ情報（アドレス）の正確性が担保され、リプレース処理時のタグ情報のエラーを防止し、システムの損傷を防止することができる。
【００６０】
なお、上記一実施の形態において、アドレス記憶部１１０にアドレスが記憶された後であってリプレース処理が開始される前に、例えばストア処理が実行される場合は、ストア対象のデータのアドレスがアドレス記憶部１１０に記憶されたアドレスと比較され、両アドレスが一致する場合は、リプレースによって無効化またはムーブアウトされるデータのストア処理が実行されることを意味しているため、ストア処理の実行が中止されるようにしても良い。
【産業上の利用可能性】
【００６１】
本発明は、リプレース処理時のタグ情報のエラーを防止し、システムの損傷を防止する場合に適用することができる。
【図面の簡単な説明】
【００６２】
【図１】図１は、本発明の一実施の形態に係るＣＰＵの概略構成を示すブロック図である。
【図２】図２は、一実施の形態に係る１次キャッシュ制御部の要部構成を示すブロック図である。
【図３】図３は、一実施の形態に係る１次キャッシュの構成を説明するための図である。
【図４】図４は、一実施の形態に係るキャッシュメモリ制御動作を示すフロー図である。
【符号の説明】
【００６３】
１００  １次キャッシュ制御部
１０１  接続部
１０２  読出指示部
１０３  書込／読出部
１０４  エラー検出部
１０５  エラー通知部
１０６  タグ／データ取得部
１０７  検索部
１０８  ウェイ選択部
１０９  リプレース制御部
１１０  アドレス記憶部
１１１  データ記憶部
２００  １次キャッシュ
３００  ２次キャッシュ制御部
４００  ２次キャッシュ
５００  命令処理部
６００  演算処理部
７００  メインメモリ
【国際調査報告】
2007096998.tif 000007
2007096998.tif 000008
2007096998.tif 000009
2007096998.tif 000010