(57)【要約】【課題】エラー訂正データの書き戻しのために特別なサイクルを消費せず、特別な記憶素子などを追加せず、ＣＰＵの割り込み機能を必要とせず、キャッシュ制御回路のみで訂正データの書き戻しを実現する。【解決手段】Ｄｉｒｔｙ判定処理を行うブロックに、訂正可能エラー発生条件を追加条件として新たに設けた。これにより、本来発生するライトバック動作に付随して訂正データの主記憶への書き戻しが可能になった。【選択図】図２
2011100269.tif 000002
【特許請求の範囲】
【請求項１】
ライトバック方式で制御されるキャッシュシステムであって、
前記ライトバック方式に基づいて、キャッシュデータがＤｉｒｔｙ状態であるかどうかを表す１ｂｉｔ情報を格納するＤｉｒｔｙ  Ｂｉｔ部と、
前記Ｄｉｒｔｙ  Ｂｉｔ部の前段に接続されたＯＲ演算回路と
を具備し、
前記ＯＲ演算回路は、
前記キャッシュデータの書き込み要求を意味するＷｒｉｔｅ  Ｒｅｑｕｅｓｔ信号を入力する第１の入力部と、
前記キャッシュデータに訂正可能エラーがあることを意味する訂正可能エラー判定信号を入力する第２の入力部と、
前記Ｗｒｉｔｅ  Ｒｅｑｕｅｓｔ信号と、前記訂正可能エラー判定信号とのうち、少なくとも１つの信号を入力した場合に、前記Ｄｉｒｔｙ  Ｂｉｔ部をＤｉｒｔｙ状態にする信号を出力する出力部と
を具備する
キャッシュシステム。
【請求項２】
請求項１に記載のキャッシュシステムにおいて、
前記ライトバック方式に基づいて、前記キャッシュデータがＶａｌｉｄ状態であるかどうかを表す１ｂｉｔ情報を格納するＶａｌｉｄ  Ｂｉｔ部と、
前記Ｖａｌｉｄ  Ｂｉｔ部の前段に接続された演算回路と
をさらに具備し、
前記ＡＮＤ演算回路は、
前記キャッシュデータ以外の他のキャッシュデータに基づくＩｎＶａｌｉｄ要求信号を入力する第１の入力部と、
前記他のキャッシュデータに訂正可能エラーがあることを意味する他キャッシュデータ訂正可能エラー判定信号を入力する第２の入力部と、
前記ＩｎＶａｌｉｄ要求信号と、前記他キャッシュデータ訂正可能エラー判定信号とのうち、少なくとも１つの信号を入力した場合に、前記Ｖａｌｉｄ  Ｂｉｔ部をＩｎＶａｌｉｄ状態にする信号を出力する出力部と
を具備する
キャッシュシステム。
【請求項３】
ライトバック方式で制御されるキャッシュシステムを用いるキャッシュ方法であって、
（ａ）キャッシュデータの書き込み要求を意味するＷｒｉｔｅ  Ｒｅｑｕｅｓｔ信号を入力するステップと、
（ｂ）前記キャッシュデータに訂正可能エラーがあることを意味する訂正可能エラー判定信号を入力するステップと、
（ｃ）前記Ｗｒｉｔｅ  Ｒｅｑｕｅｓｔ信号と、前記訂正可能エラー判定信号とのうち、少なくとも１つの信号を入力した場合に、前記ライトバック方式に基づいて、キャッシュデータがＤｉｒｔｙ状態であるかどうかを表す１ｂｉｔ情報を格納する前記Ｄｉｒｔｙ  Ｂｉｔ部をＤｉｒｔｙ状態にする信号を出力するステップと
を具備する
キャッシュ方法。
【請求項４】
請求項３に記載のキャッシュ方法において、
（ｄ）前記キャッシュデータ以外の他のキャッシュデータに基づくＩｎＶａｌｉｄ要求信号を入力するステップと、
（ｅ）前記他のキャッシュデータに訂正可能エラーがあることを意味する他キャッシュデータ訂正可能エラー判定信号を入力するステップと、
（ｆ）前記ＩｎＶａｌｉｄ要求信号と、前記他キャッシュデータ訂正可能エラー判定信号とのうち、少なくとも１つの信号を入力した場合に、前記ライトバック方式に基づいて、前記キャッシュデータがＶａｌｉｄ状態であるかどうかを表す１ｂｉｔ情報を格納する前記Ｖａｌｉｄ  Ｂｉｔ部をＩｎＶａｌｉｄ状態にする信号を出力するステップと
をさらに具備する
キャッシュ方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、キャッシュシステムと、このキャッシュシステムを用いるキャッシュ方法に係り、特に、ライトバック方式で制御されるキャッシュシステムと、このキャッシュシステムを用いるキャッシュ方法とに係る。
【背景技術】
【０００２】
近年、コンピュータシステムでは主記憶容量の増加、半導体プロセスの微細化に伴い、ソフトエラーの問題が顕在化している。そこで、信頼性向上のためにＥＣＣ（Ｅｒｒｏｒ  Ｃｈｅｃｋ  ａｎｄ  Ｃｏｒｒｅｃｔ：エラー検出訂正）回路を設け、メモリリード時に１ｂｉｔエラーの場合は訂正、複数ｂｉｔエラーの場合は検出を行っている。
【０００３】
しかし、１ｂｉｔエラーの発生したメモリデータを、訂正データで修正せずにそのままにしておくと、訂正不可能な複数ｂｉｔエラーとなる危険性が高い。そこで、信頼性向上のためには１ｂｉｔエラーとなったメモリデータの修正ライトを行い、複数ｂｉｔエラーの発生を防止するシステムが求められている。
【０００４】
上記に関連して、特許文献１（特開平５−１５８８０９号公報）には、メモリエラー自動修正ライト方式に係る記載が開示されている。このメモリエラー自動修正ライト方式は、メモリからリードしたデータを修正しライトするものである。このメモリエラー自動修正ライト方式は、メモリからリードしたデータの１ビットエラーを検出する１ビットエラー検出回路と、この１ビットエラー検出回路によって１ビットエラー検出したアドレスをラッチするアドレスラッチと、メモリからリードしたデータの１ビットエラーを修正する修正回路とを備え、メモリからブロックリードしたデータについて、上記１ビットエラー検出回路が１ビットエラー検出したときに上記修正回路が修正を行い、修正後のデータを出力すると共に、１ビットエラー検出したアドレスを上記アドレスラッチが保持しておき、ブロックリード終了後にこのアドレスラッチが保持するアドレスのメモリからリードしたデータを上記修正回路が修正した後の修正データをメモリに書き込んで修正するように構成したことを特徴とする。
【０００５】
また、特許文献２（特開平１０−８３３５７号公報）には、データ記憶制御方法に係る記載が開示されている。このデータ記憶制御方法は、連続したアドレスのデータを転送するバースト転送用の外部バスインタフェースを有するＣＰＵと、主記憶手段と、データの誤り検出訂正を行うＥＣＣ実行部とを有するコンピュータシステムで用いられるものである。このデータ記憶制御方法は、ＣＰＵから上記主記憶手段へのデータの読み出しが要求され、読み出されたデータに誤りがあることが上記ＥＣＣ実行部に検出されたときに、誤りのあるデータのアドレスを保持し、上記ＥＣＣ実行部によりデータの誤りが検出された際に、割込み情報を保持し、上記ＣＰＵに割込み要求を行い、ＣＰＵの割込み処理ルーチンにて、ＣＰＵを割込み禁止にし、主記憶手段から上記保持されたアドレスと下位の固定長ビットのみアドレスの異なる複数のデータを読み出し、上記読み出した複数のデータを上記ＥＣＣ実行部により誤り訂正を実行し、誤りを訂正した複数のデータを主記憶手段に書き戻し、上記割込み情報をクリアし、ＣＰＵを割込み許可状態とすることを特徴とする。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平５−１５８８０９号公報
【特許文献２】特開平１０−８３３５７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
特許文献１によるメモリエラー自動修正ライト方式では、エラー発生したリードサイクルの次サイクルには必ずリード／訂正ライトが入る。このため、連続リードリクエストがあった場合などのケースにおいては、システム性能が低下してしまうという問題がある。また、エラー発生アドレスを保持する必要があるが、最大の保持数、すなわち最大のエラー発生回数が、論理的には決定出来ない。このため、アドレスラッチの保持数によって性能と面積のトレードオフが発生し、効果にばらつきが出る問題がある。
【０００８】
特許文献１の問題についてさらに詳細に説明する。特許文献１によるメモリエラー自動修正ライト方式では、アドレスラッチにアドレスを保持し、その保持されたアドレスに対してエラー訂正を行う。このため、この保持数によって一度にエラー訂正できる数が決まる。また、特許文献１ではメモリブロックリードサイクルの性能処理向上に着目しているが、エラー訂正のライトを次のサイクルへ先送りしているため、そのしわ寄せが次のサイクルに発生するという制限を有している。
【０００９】
特許文献２によるデータ記憶制御方法では、エラー訂正を行う際に、ＣＰＵに割り込みを挙げて、ＣＰＵの割り込み処理ルーチンで行う。このため、割り込み機能を有したＣＰＵが接続されたシステムでしか使用できないという問題がある。ＤＭＡデバイスなどが接続されていた場合、ＤＭＡデバイスを停止する必要があるなど、システムバスに接続される構成によって影響範囲が広くなる可能性がある。このため、システムの制御が複雑となり、実現性に困難なケースが発生する問題がある。
【００１０】
特許文献２の問題についてさらに詳細に説明する。特許文献２によるデータ記憶制御方法では、ＣＰＵの割り込み処理ルーチンにおいてエラー訂正を行う制御方式であるため、割り込み機能が必須である。また、ＣＰＵの制御下にないデバイスに関しては、割り込みをトリガとして、ＤＭＡ停止などの制御を個々に行う必要がある。このため、特許文献２の発明を実現するための必要条件が多くなってしまう制限を有している。
【課題を解決するための手段】
【００１１】
以下に、（発明を実施するための形態）で使用される番号を用いて、課題を解決するための手段を説明する。これらの番号は、（特許請求の範囲）の記載と（発明を実施するための形態）との対応関係を明らかにするために付加されたものである。ただし、それらの番号を、（特許請求の範囲）に記載されている発明の技術的範囲の解釈に用いてはならない。
【００１２】
本発明によるキャッシュシステムは、ライトバック方式で制御される。このキャッシュシステムは、Ｄｉｒｔｙ  Ｂｉｔ部（３２、３２−１、３２−２）と、ＯＲ演算回路（３５、３５−１、３５−２）とを具備する。ここで、Ｄｉｒｔｙ  Ｂｉｔ部（３２、３２−１、３２−２）は、ライトバック方式に基づいて、キャッシュデータがＤｉｒｔｙ状態であるかどうかを表す１ｂｉｔ情報を格納する。ＯＲ演算回路（３５、３５−１、３５−２）は、Ｄｉｒｔｙ  Ｂｉｔ部（３２、３２−１、３２−２）の前段に接続されている。ＯＲ演算回路（３５、３５−１、３５−２）は、第１の入力部と、第２の入力部と、出力部とを具備する。ここで、第１の入力部は、キャッシュデータの書き込み要求を意味するＷｒｉｔｅ  Ｒｅｑｕｅｓｔ信号を入力する。第２の入力部は、キャッシュデータに訂正可能エラーがあることを意味する訂正可能エラー判定信号を入力する。出力部は、Ｗｒｉｔｅ  Ｒｅｑｕｅｓｔ信号と、訂正可能エラー判定信号とのうち、少なくとも１つの信号を入力した場合に、Ｄｉｒｔｙ  Ｂｉｔ部（３２、３２−１、３２−２）をＤｉｒｔｙ状態にする信号を出力する。
【００１３】
本発明によるキャッシュ方法は、ライトバック方式で制御されるキャッシュシステムを用いる。このキャッシュ方法は、（ａ）キャッシュデータの書き込み要求を意味するＷｒｉｔｅ  Ｒｅｑｕｅｓｔ信号を入力するステップと、（ｂ）キャッシュデータに訂正可能エラーがあることを意味する訂正可能エラー判定信号を入力するステップと、（ｃ）Ｗｒｉｔｅ  Ｒｅｑｕｅｓｔ信号と、訂正可能エラー判定信号とのうち、少なくとも１つの信号を入力した場合に、ライトバック方式に基づいて、キャッシュデータがＤｉｒｔｙ状態であるかどうかを表す１ｂｉｔ情報を格納するＤｉｒｔｙ  Ｂｉｔ部（３２、３２−１、３２−２）をＤｉｒｔｙ状態にする信号を出力するステップとを具備する。
【発明の効果】
【００１４】
本発明では、Ｄｉｒｔｙ判定処理を行うブロックに、訂正可能エラー発生条件を追加条件として新たに設けた。これにより、本来発生するライトバック動作に付随して訂正データの主記憶への書き戻しが可能になった。
【図面の簡単な説明】
【００１５】
【図１】図１は、本発明の第１の実施形態によるキャッシュシステムの構成について説明するためのブロック図である。
【図２】図２は、本発明の第１の実施形態によるキャッシュと、ＤＲＡＭコントローラと、ＤＲＡＭにおける詳細な構成について説明するためのブロック図である。
【図３】図３は、本発明の第１および第２の実施形態によるキャッシュシステムの動作方法、すなわち本発明の第１および第２の実施形態によるキャッシュ方法について説明するためのフローチャートである。
【図４】図４は、本発明の第１および第２の実施形態によるキャッシュシステムの動作方法、すなわち本発明の第１および第２の実施形態によるキャッシュ方法について説明するためのフローチャートである。
【図５】図５は、本発明の第２の実施形態によるキャッシュシステムの構成について説明するためのブロック図である。
【図６】図６は、本発明の第２の実施形態による２つのキャッシュと、ＤＲＡＭコントローラと、ＤＲＡＭにおける詳細な構成について説明するためのブロック図である。
【発明を実施するための形態】
【００１６】
添付図面を参照して、本発明によるキャッシュシステムと、このキャッシュシステムを用いるシャッシュ方法とを実施するための形態を以下に説明する。
【００１７】
（第１の実施形態）
本発明の第１の実施形態では、ＣＰＵ１がシングルコアである場合を扱う。図１は、本実施形態によるキャッシュシステムの構成について説明するためのブロック図である。このキャッシュシステムは、ＣＰＵ１と、ＤＭＡコントローラ２と、キャッシュ３と、ＤＲＡＭコントローラ４と、ＤＲＡＭ５と、バス６とを具備している。
【００１８】
図２は、本実施形態によるキャッシュ３と、ＤＲＡＭコントローラ４と、ＤＲＡＭ５における詳細な構成について説明するためのブロック図である。キャッシュ３は、キャッシュライン３０と、ＯＲ演算回路３５とを具備する。キャッシュライン３０の数は、１つであっても良いし、複数であっても良い。それぞれのキャッシュライン３０は、Ｔａｇ部３１と、Ｄｉｒｔｙ  Ｂｉｔ部３２と、Ｖａｌｉｄ  Ｂｉｔ部３３と、Ｄａｔａ部３４とを具備する。ＤＲＡＭコントローラ４は、エラー制御判定部４１を具備する。ＤＲＡＭ５は、ＥＣＣ部５１と、Ｄａｔａ部５２とを具備する。
【００１９】
キャッシュライン３０における各構成要素について説明する。キャッシュライン３０が１つのデータをキャッシュする際、データの本体はＤａｔａ部３４に格納される。このデータが主記憶としてのＤＲＡＭ５に格納されているアドレスなどの情報は、Ｔａｇ部３１に格納される。
【００２０】
Ｄｉｒｔｙ  Ｂｉｔ部３２は、Ｄａｔａ部３４に格納されているデータの状態が、「Ｄｉｒｔｙ」であるか、「Ｃｌｅａｎ」であるかを示す１Ｂｉｔ情報を格納する。なお、Ｄａｔａ部３４に格納されたキャッシュデータが、ＤＲＡＭ５に格納されている元のデータと同一である場合は「Ｃｌｅａｎ」状態であり、更新されて異なる場合は「Ｄｉｒｔｙ」状態である。
【００２１】
Ｖａｌｉｄ  Ｂｉｔ部３３は、Ｄａｔａ部３４に格納されたキャッシュデータの状態が、「Ｖａｌｉｄ」であるか、「ＩｎＶａｌｉｄ」であるかを示す１Ｂｉｔ情報を格納する。なお、「Ｖａｌｉｄ」状態は、有効なキャッシュデータがＤａｔａ部３４に格納されていることを意味し、「ＩｎＶａｌｉｄ」状態はその反対を意味する。
【００２２】
次に、本実施形態によるキャッシュシステムにおける各構成要素同士の接続関係について説明する。
【００２３】
バス６は、ＣＰＵ１と、ＤＭＡコントローラ２と、キャッシュ３とに接続されている。キャッシュ３と、ＤＲＡＭコントローラ４と、ＤＲＡＭ５とは、この順番に直列に接続されている。
【００２４】
ＥＣＣ部５１における出力部と、Ｄａｔａ部５２における出力部とは、エラー制御判定部４１における第１および第２の入力部にそれぞれ接続されている。エラー制御判定部４１における出力部は、ＯＲ演算回路３５における第１の入力部に接続されている。ＯＲ演算回路３５における第２の入力部には、図示されないＷｒｉｔｅ  Ｒｅｑｕｅｓｔ信号の出力部が接続されている。ＯＲ演算回路３５における出力部は、Ｄｉｒｔｙ  Ｂｉｔ部３２における入力部に接続されている。
【００２５】
以上、本実施形態によるキャッシュシステムにおける各構成要素同士の接続関係のうち、本実施形態における動作を行うために必須のものについて説明した。一般的なキャッシュシステムと同様に、構成要素同士の接続関係は他に必要なものもあるが、詳細な説明は省略する。
【００２６】
このように、ＣＰＵ１からは、ＤＲＡＭ５が直接的には見えない。つまり、ＣＰＵ１がＤＲＡＭ５にアクセスするためには、読み込みを行う場合でも、書き込みを行う場合でも、必ずキャッシュ３を経由する必要がある。
【００２７】
図３および図４は、本実施形態によるキャッシュシステムの動作方法、すなわち本実施形態によるキャッシュ方法について説明するためのフローチャートである。まず、図３を用いて、Ｗｒｉｔｅ  Ｒｅｑｕｅｓｔ信号がＯＲ演算回路３５に供給された時の動作について、すなわち書き込みがリクエストされた時の動作について、説明する。
【００２８】
図３の、本実施形態の書き込み時に係るフローチャートは、Ｓ１〜Ｓ８のステップを具備する。
【００２９】
まず、ステップＳ１では、キャッシュヒットが発生したかどうかを判定する。キャッシュヒットしなかった、すなわちキャッシュミスした（ＮＯ）場合は、ステップＳ２に進む。キャッシュヒットした（ＹＥＳ）場合は、ステップＳ８に進む。
【００３０】
ステップＳ２では、Ｖａｌｉｄ  Ｂｉｔ部３３に格納されたビット情報を判定する。Ｖａｌｉｄ  Ｂｉｔ部３３の状態がＩｎＶａｌｉｄであった（ＹＥＳ）場合は、ステップＳ３に進む。Ｖａｌｉｄ  Ｂｉｔ部３３の状態がＶａｌｉｄであった（ＮＯ）場合は、ステップＳ５に進む。
【００３１】
ステップＳ３では、Ｄｉｒｔｙ  Ｂｉｔ部３２に格納されたビット情報を判定する。Ｄｉｒｔｙ  Ｂｉｔ部３２の情報がＤｉｒｔｙであった（ＹＥＳ）場合は、ステップＳ４に進む。Ｄｉｒｔｙ  Ｂｉｔ部３２の情報がＣｌｅａｎであった（ＮＯ）場合は、ステップＳ５に進む。
【００３２】
ステップＳ４では、ライトバック動作を行う。具体的には、現キャッシュライン３０に格納された内容を、主記憶のＤＲＡＭ５に書き戻す作業を行う。このとき、Ｄｉｒｔｙ  Ｂｉｔ部３２の状態をそのまま残す。また、Ｖａｌｉｄ  Ｂｉｔ部３３の状態をＩｎＶａｌｉｄ状態にする。その後、ステップＳ５に進む。
【００３３】
ステップＳ５では、ステップＳ４で主記憶のＤＲＡＭ５に書き込んだ内容を、主記憶のＤＲＡＭ５からＲｅａｄを行い、キャッシュライン３０に格納する。このとき、Ｄｉｒｔｙ  Ｂｉｔ部３２の状態をＣｌｅａｎにする。また、Ｖａｌｉｄ  Ｂｉｔ部３３の状態をＶａｌｉｄにする。その後、ステップＳ６に進む。
【００３４】
ステップＳ６では、ステップＳ５でＲｅａｄした際に、このＲｅａｄデータに１ビットエラーが発生したかどうかを判定する。１ビットエラーが発生した（ＹＥＳ）場合は、ステップＳ７に進む。１ビットエラーが発生しなかった（ＮＯ）場合は、ステップＳ８に進む。
【００３５】
ステップＳ７では、Ｄｉｒｔｙ  Ｂｉｔ部３２をＤｉｒｔｙ状態にする。また、Ｖａｌｉｄ  Ｂｉｔ部３３はそのままの状態に残す。なお、本実施形態では、ＣＰＵ１がシングルコアの場合を扱うので、他のブロックに係る動作を行わない。その後、ステップＳ８に進む。
【００３６】
ステップＳ８では、キャッシュライン３０の内容を更新し、Ｄｉｒｔｙ  Ｂｉｔ部３２の状態をＤｉｒｔｙにする。なお、Ｖａｌｉｄ  Ｂｉｔ部３３はそのままの状態で残す。
【００３７】
次に、図４を用いて、本実施形態による読み出し（Ｒｅａｄ）がリクエストされた時の動作について説明する。
【００３８】
まず、ステップＳ１では、キャッシュヒットが発生したかどうかを判定する。キャッシュヒットが発生していない（ＮＯ）場合は、ステップＳ２に進む。キャッシュヒットが発生している（ＹＥＳ）場合は、ステップＳ９に進む。
【００３９】
ステップＳ２〜ステップＳ５については、図３における書き込み（Ｗｒｉｔｅ）動作の場合と同じであるので、詳細な説明を省略する。
【００４０】
ステップＳ６では、ステップＳ５でＲｅａｄした際に、このＲｅａｄデータに１ビットエラーが発生したかどうかを判定する。１ビットエラーが発生した（ＹＥＳ）場合は、ステップＳ７に進む。１ビットエラーが発生しなかった（ＮＯ）場合は、ステップＳ１０に進む。
【００４１】
ステップＳ７では、Ｄｉｒｔｙ  Ｂｉｔ部３２をＤｉｒｔｙ状態にする。また、Ｖａｌｉｄ  Ｂｉｔ部３３はそのままの状態に残す。ただし、他のブロックに該当キャッシュラインが存在すれば、Ｓｎｏｏｐリクエストを発生して、そのキャッシュラインについてはＶａｌｉｄ  Ｂｉｔ部３３をＩｎＶａｌｉｄ状態にする。その後、ステップＳ１０に進む。
【００４２】
ステップＳ９では、キャッシュ３のＤａｔａ部３４からデータの読み出し（Ｒｅａｄ）を行う。このとき、Ｄｉｒｔｙ  Ｂｉｔ部３２およびＶａｌｉｄ  Ｂｉｔ部３３は、そのままの状態で残す。その後、ステップＳ１０に進む。
【００４３】
ステップＳ１０では、Ｒｅａｄデータを上位に返す。このとき、Ｄｉｒｔｙ  Ｂｉｔ部３２およびＶａｌｉｄ  Ｂｉｔ部３３は、そのままの状態で残す。
【００４４】
以上に説明をまとめると、本発明の特徴は次のとおりである。主記憶としてのＤＲＡＭ５からのリードデータをキャッシュライン３０に格納する際に、リードデータが１ｂｉｔ訂正可能エラーだった場合、Ｄｉｒｔｙ  Ｂｉｔ部３２の状態をＤｉｒｔｙにする。こうすることにより、次回に同じキャッシュライン３０でキャッシュミスが発生した際に、そのキャッシュライン３０の内容を主記憶としてのＤＲＡＭ５に書き戻すライトバック動作に付随して、キャッシュライン３０内にある訂正データの書き戻し処理が行われる。
【００４５】
（第２の実施形態）
本発明の第２の実施形態では、ＣＰＵ１−１、１−２がマルチコアである場合を扱う。
【００４６】
図５は、本実施形態によるキャッシュシステムの構成について説明するためのブロック図である。このキャッシュシステムは、第１および第２のＣＰＵ１−１、１−２と、第１および第２のＤＭＡコントローラ２−１、２−２と、第１および第２のキャッシュ３−１、３−２と、ＤＲＡＭコントローラ４と、ＤＲＡＭ５と、３つのバス６０、６０−１、６０−２とを具備する。
【００４７】
なお、図５に示すキャッシュシステムの構成は、ＣＰＵ１−１、１−２が２つのマルチコアである場合であって、さらに多くのＣＰＵによるマルチコアであっても本実施形態によるキャッシュシステムは実施可能である。ただし、その場合、ＤＭＡコントローラ、キャッシュ、バスの総数を、ＣＰＵの総数に合わせて適宜増減する必要があることは言うまでも無い。ここでは、ＣＰＵ１−１、１−２が２つの場合について説明を続ける。
【００４８】
図６は、本実施形態による２つのキャッシュ３−１、３−２と、ＤＲＡＭコントローラ４と、ＤＲＡＭ５における詳細な構成について説明するためのブロック図である。
【００４９】
第１のキャッシュ３−１は、第１のキャッシュライン３０−１と、第１のＯＲ演算回路３５−１と、第１のＡＮＤ演算回路３６−１と、２つのＮＯＴ演算回路３７−１、３８−１とを具備する。第１のキャッシュライン３０−１の数は、１つであっても良いし、複数であっても良い。それぞれの第１のキャッシュライン３０−１は、第１のＴａｇ部３１−１と、第１のＤｉｒｔｙ  Ｂｉｔ部３２−１と、第１のＶａｌｉｄ  Ｂｉｔ部３３−１と、第１のＤａｔａ部３４−１とを具備する。
【００５０】
第２のキャッシュ３−２は、第２のキャッシュライン３０−２と、第２のＯＲ演算回路３５−２と、第２のＡＮＤ演算回路３６−２と、２つのＮＯＴ演算回路３７−２、３８−２とを具備する。第２のキャッシュライン３０−２の数は、１つであっても良いし、複数であっても良い。それぞれの第２のキャッシュライン３０−２は、第２のＴａｇ部３１−２と、第２のＤｉｒｔｙ  Ｂｉｔ部３２−２と、第２のＶａｌｉｄ  Ｂｉｔ部３３−２と、第２のＤａｔａ部３４−２とを具備する。
【００５１】
ＤＲＡＭコントローラ４は、エラー制御判定部４１を具備する。ＤＲＡＭ５は、ＥＣＣ部５１と、Ｄａｔａ部５２とを具備する。
【００５２】
次に、本実施形態によるキャッシュシステムにおける各構成要素同士の接続関係について説明する。
【００５３】
バス６０−１は、第１のＣＰＵ１−１と、第１のＤＭＡコントローラ２−１と、第１のキャッシュ３−１とに接続されている。バス６０−２は、第２のＣＰＵ１−２と、第２のＤＭＡコントローラ２−２と、第２のキャッシュ３−２とに接続されている。バス６０は、第１のキャッシュ３−１と、第２のキャッシュ３−２と、ＤＲＡＭコントローラ４とに接続されている。ＤＲＡＭコントローラ４は、ＤＲＡＭ５に接続されている。
【００５４】
ＥＣＣ部５１における出力部と、Ｄａｔａ部５２における出力部とは、エラー制御判定部４１における第１および第２の入力部にそれぞれ接続されている。エラー制御判定部４１における第１の出力部は、第１のＯＲ演算回路３５−１における第１の入力部と、第２のキャッシュ３−２のＮＯＴ演算回路３７−２における入力部とに接続されている。エラー制御判定部４１における第２の出力部は、第１のキャッシュ３−１のＮＯＴ演算回路３７−１における入力部と、第２のＯＲ演算回路３５−２における第１の入力部とに接続されている。第１のキャッシュ３−１のＮＯＴ演算回路３８−１における入力部と、第２のキャッシュ３−２のＮＯＴ演算回路３８−２における入力部とには、図示されない他キャッシュからのＩｎｖａｌｉｄ要求信号の出力部が接続されている。
【００５５】
第１のキャッシュ３−１の内部における各構成要素同士の接続関係について説明する。第１のＯＲ演算回路３５−１における第２の入力部には、図示されないＷｒｉｔｅ  Ｒｅｑｕｅｓｔ信号の出力部が接続されている。２つのＮＯＴ演算回路３７−１、３８−１における出力部は、第１のＡＮＤ演算回路３６−１における２つの入力部にそれぞれ接続されている。第１のＯＲ演算回路３５−１における出力部は、Ｄｉｒｔｙ  Ｂｉｔ部３２−１における入力部に接続されている。第１のＡＮＤ演算回路３６−１における出力部は、Ｖａｌｉｄ  Ｂｉｔ部３３−１における入力部に接続されている。
【００５６】
第２のキャッシュ３−２の内部における各構成要素同士の接続関係について説明する。第２のＯＲ演算回路３５−２における第２の入力部には、図示されないＷｒｉｔｅ  Ｒｅｑｕｅｓｔ信号の出力部が接続されている。２つのＮＯＴ演算回路３７−２、３８−２における出力部は、第２のＡＮＤ演算回路３６−２における２つの入力部にそれぞれ接続されている。第２のＯＲ演算回路３５−２における出力部は、Ｄｉｒｔｙ  Ｂｉｔ部３２−２における入力部に接続されている。第２のＡＮＤ演算回路３６−２における出力部は、Ｖａｌｉｄ  Ｂｉｔ部３３−２における入力部に接続されている。
【００５７】
以上、本実施形態によるキャッシュシステムにおける各構成要素同士の接続関係のうち、本実施形態における動作を行うために必須のものについて説明した。一般的なキャッシュシステムと同様に、構成要素同士の接続関係は他に必要なものもあるが、詳細な説明は省略する。
【００５８】
本実施形態によるキャッシュシステムの動作、すなわち、本実施形態によるキャッシュ方法について説明する。例として、第１のキャッシュ３−１でリードリクエストが発生した場合について説明する。
【００５９】
本実施形態でも、基本的には、本発明の第１の実施形態と同様に、図３および図４に示すフローチャートに基づいてＷｒｉｔｅ動作とＲｅａｄ動作を行う。ここで、本発明の第１の実施形態おけるキャッシュライン３０、Ｄｉｒｔｙ  Ｂｉｔ部３２、Ｖａｌｉｄ  Ｂｉｔ部３３は、本実施例におけるキャッシュライン３０−１または３０−２、Ｄｉｒｔｙ  Ｂｉｔ部３２−１または３２−２、Ｖａｌｉｄ  Ｂｉｔ部３３−１または３３−２に、それぞれ読み替える必要がある。つまり、図３および図４は、本実施形態によるキャッシュシステムの動作、すなわち、本実施形態によるキャッシュ方法について説明するためのフローチャートでもある。ただし、本実施形態と、本発明の第１の実施形態とでは、ステップＳ７に差異がある。
【００６０】
本実施形態によるＷｒｉｔｅ動作およびＲｅａｄ動作において、ステップＳ７では、まず、本発明の第１の実施形態と同様に、Ｄｉｒｔｙ  Ｂｉｔ部３２−１をＤｉｒｔｙ状態にする。また、Ｖａｌｉｄ  Ｂｉｔ部３３−１はそのままの状態に残す。ただし、他のブロックに該当キャッシュラインが存在すれば、Ｓｎｏｏｐリクエストを発生して、そのキャッシュラインについてはＶａｌｉｄ  Ｂｉｔ部３３−１をＩｎＶａｌｉｄ状態にする。その後、ステップＳ８に進む。
【００６１】
本実施形態によるキャッシュ方法における、ステップＳ７以外の各ステップについては、本発明の第１の実施形態と同様であるので、詳細な説明を省略する。
【００６２】
このように、本実施形態では、リクエスト元以外の、他のキャッシュ３−２におけるＶａｌｉｄ  Ｂｉｔ部３３−２の状態をＩｎＶａｌｉｄにする。これにより、次回、他のキャッシュ３−２のキャッシュライン３０−２に対してリードリクエストが発生した場合に、ライトバック方式に基づいて他のキャッシュ３−２が主記憶としてのＤＲＡＭ５からメモリリードを行う前に、第１のキャッシュ３−１のシャッシュライン３０−１の内容を主記憶としてのＤＲＡＭ５に書き戻すライトバック動作に付随して、キャッシュライン３０−１内にある訂正データの書き戻し処理が行われる。その後、他のキャッシュ３−２のキャッシュライン３０−２に主記憶としてのＤＲＡＭ５からのメモリリードが行われるため、他のキャッシュ３−２のキャッシュライン３０−２には訂正後のデータが格納される。
【００６３】
その他の動作については、複数のキャッシュ３−１、３−２のうちの１つに注目すると、図３および図４で説明した本発明の第１の実施形態の場合と同じである。言い換えれば、複数のキャッシュ３−１、３−２のそれぞれにおいて、図３および図４のフローチャートに基づく動作が独立に行うことが可能である。
【００６４】
したがって、本発明によるキャッシュシステムおよびキャッシュ方法は、キャッシュの総数を３つ以上に増やすことも容易である。ただし、キャッシュの総数の増減に応じて、エラー制御判定部４１の出力部と、ＡＮＤ演算回路３６−１、３６−２における入力部と、ＡＮＤ演算回路３６−１、３６−２の入力部に接続されたＮＯＴ演算回路３７−１、３７−２、３８−１、３８−２とも増減する必要があることは言うまでも無い。
【００６５】
本実施形態によるキャッシュシステムは、本発明の第１の実施形態によるキャッシュシステムに、Ｖａｌｉｄ  Ｂｉｔ部３３−１、３３−２に接続されるＡＮＤ演算回路３６−１、３６−２を追加するのみで、ライトバック方式を採用したマルチコア構成にも適応可能となる。また、マルチコア構成の複雑なキャッシュアルゴリズム自体の修正をする必要が無く、Ｖａｌｉｄ  Ｂｉｔ部３３−１、３３−２への書きこみ条件のみの簡単な修正内容で、ＥＣＣ訂正データの書き戻しが実現できる。
【符号の説明】
【００６６】
１、１−１、１−２  ＣＰＵ
２、２−１、２−２  ＤＭＡコントローラ
３、３−１、３−２  キャッシュ
３０、３０−１、３０−２  キャッシュライン
３１、３１−１、３１−２  Ｔａｇ部
３２、３２−１、３２−２  Ｄｉｒｔｙ  Ｂｉｔ部
３３、３３−１、３３−２  Ｖａｌｉｄ  Ｂｉｔ部
３４、３４−１、３４−２  Ｄａｔａ部
３５、３５−１、３５−２  ＯＲ演算回路
３６−１、３６−２  ＡＮＤ演算回路
３７−１〜３７−４  ＮＯＴ演算回路
４  ＤＲＡＭコントローラ
４１  エラー制御判定部
５  ＤＲＡＭ
５１  ＥＣＣ部
５２  Ｄａｔａ部
６、６０、６０−１、６０−２  バス
【図１】
2011100269.tif 000003
【図２】
2011100269.tif 000004
【図３】
2011100269.tif 000005
【図４】
2011100269.tif 000006
【図５】
2011100269.tif 000007
【図６】
2011100269.tif 000008