(57)【要約】【課題】メインメモリからの読み出しの際に訂正されたデータを確実に書き戻す。【解決手段】それぞれアドレス領域２２、データ領域２３及びダーティビット２４を含む複数のキャッシュラインを有するデータ保持部２１と、誤り訂正符号化されたデータを格納するメモリから読み出した読み出しデータ及び前記読み出しデータに対してエラー訂正が行われたか否かを示す訂正実行信号が与えられ、前記複数のキャッシュラインのいずれか１つのキャッシュラインの前記アドレス領域に前記読み出しデータに対応するアドレス情報を格納し、前記データ領域に前記読み出しデータを格納し、前記ダーティビットに前記訂正実行信号に基づいて所定値を設定するコントローラ２０と、を備える。【選択図】図１
2010009102.tif 000002
【特許請求の範囲】
【請求項１】
それぞれアドレス領域、データ領域及びダーティビットを含む複数のキャッシュラインを有するデータ保持部と、
誤り訂正符号化されたデータを格納するメモリから読み出した読み出しデータ及び前記読み出しデータに対してエラー訂正が行われたか否かを示す訂正実行信号が与えられ、前記複数のキャッシュラインのいずれか１つのキャッシュラインの前記アドレス領域に前記読み出しデータに対応するアドレス情報を格納し、前記データ領域に前記読み出しデータを格納し、前記ダーティビットに前記訂正実行信号に基づいて所定値を設定するコントローラと、
を備えるキャッシュメモリ。
【請求項２】
前記コントローラは、前記読み出しデータに対してエラー訂正が行われていた場合は前記ダーティビットに１を設定し、エラー訂正が行われていなかった場合は前記ダーティビットに０を設定することを特徴とする請求項１に記載のキャッシュメモリ。
【請求項３】
前記コントローラは、前記複数のキャッシュラインのうち、前記ダーティビットに１が設定されているキャッシュラインの前記データ領域に格納されているデータを前記メモリへ書き戻し、このキャッシュラインの前記ダーティビットを０に変更することを特徴とする請求項２に記載のキャッシュメモリ。
【請求項４】
前記コントローラは、データ読み出し指示及び指定アドレスをプロセッサから受け付け、前記データ読み出し指示及び前記指定アドレスに基づいて、前記複数のキャッシュラインの各々の前記アドレス領域に格納されているアドレスと前記指定アドレスとを比較し、一致するキャッシュラインがない場合に、前記メモリの前記指定アドレスからデータを読み出すことを特徴とする請求項１に記載のキャッシュメモリ。
【請求項５】
前記コントローラは、前記データ読み出し指示及び前記指定アドレスに基づいて、前記複数のキャッシュラインの各々の前記アドレス領域に格納されているアドレスと前記指定アドレスとを比較し、一致するキャッシュラインがある場合に、前記一致するキャッシュラインの前記データ領域に格納されているデータを前記プロセッサへ送信することを特徴とする請求項４に記載のキャッシュメモリ。
【請求項６】
前記コントローラは、データ書き込み指示、指定アドレス、及び書き込みデータをプロセッサから受け付け、前記データ書き込み指示及び前記指定アドレスに基づいて、前記複数のキャッシュラインの各々の前記アドレス領域に格納されているアドレスと前記指定アドレスとを比較し、一致するキャッシュラインの前記データ領域に前記書き込みデータを格納し、前記ダーティビットに１を設定することを特徴とする請求項２に記載のキャッシュメモリ。
【請求項７】
前記コントローラは、前記複数のキャッシュラインの各々の前記アドレス領域に格納されているアドレスが前記指定アドレスに一致しない場合は、前記複数のキャッシュラインのいずれか１つのキャッシュラインの前記アドレス領域に前記指定アドレスを格納し、前記データ領域に前記書き込みデータを格納し、前記ダーティビットに１を設定することを特徴とする請求項６に記載のキャッシュメモリ。
【請求項８】
前記読み出しデータに発生したエラーを訂正し、エラー訂正した前記読み出しデータと前記訂正実行信号とを前記コントローラへ出力する誤り訂正回路をさらに備えることを特徴とする請求項１に記載のキャッシュメモリ。
【請求項９】
誤り訂正符号化されたデータを格納するメインメモリと、
前記メインメモリへ書き込まれるデータの誤り訂正符号化と、前記メインメモリから読み出されたデータの誤り訂正復号化及び誤りの有無の検出とを行い、前記メインメモリから読み出されたデータに誤りを検出した場合はこの誤りを訂正し、誤り訂正を行ったか否かを示す訂正実行信号を出力する誤り訂正回路と、
読み出し指示及び読み出しアドレスを出力するプロセッサと、
それぞれアドレス領域、データ領域及びダーティビットを含む複数のキャッシュラインと、前記読み出し指示に基づいて前記メインメモリ上の前記読み出しアドレスから前記誤り訂正回路を介してデータを読み出し、前記複数のキャッシュラインのいずれか１つのキャッシュラインの前記アドレス領域に前記読み出しアドレスを格納し、前記データ領域に前記読み出したデータを格納し、前記ダーティビットに前記訂正実行信号に基づいて所定値を設定するキャッシュコントローラと、を有するキャッシュメモリと、
を備えるコンピュータシステム。
【請求項１０】
前記キャッシュコントローラは、前記誤り訂正回路により誤り訂正が行われていた場合は前記ダーティビットに１を設定し、誤り訂正が行われていなかった場合は前記ダーティビットに０を設定することを特徴とする請求項９に記載のコンピュータシステム。
【請求項１１】
前記キャッシュコントローラが、前記読み出し指示に基づいて前記メインメモリ上の前記読み出しアドレスから前記誤り訂正回路を介してデータを読み出し、前記複数のキャッシュラインのいずれか１つのキャッシュラインの前記アドレス領域に前記読み出しアドレスを格納し、前記データ領域に前記読み出したデータを格納し、前記ダーティビットに前記訂正実行信号に基づいて所定値を設定するのは、前記読み出しアドレスと前記複数のキャッシュラインの各々の前記アドレス領域に格納されているアドレスとが一致しない場合であることを特徴とする請求項９に記載のコンピュータシステム。
【請求項１２】
前記キャッシュコントローラは、前記複数のキャッシュラインの各々の前記アドレス領域に格納されているアドレスと前記読み出しアドレスとを比較し、一致するキャッシュラインがある場合には、前記一致するキャッシュラインの前記データ領域に格納されているデータを前記プロセッサへ送信することを特徴とする請求項１１に記載のコンピュータシステム。
【請求項１３】
前記プロセッサは書き込み指示、書き込みアドレス、及び書き込みデータを前記キャッシュコントローラへ出力し、
前記キャッシュコントローラは、前記書き込み指示及び前記書き込みアドレスに基づいて、前記複数のキャッシュラインの各々の前記アドレス領域に格納されているアドレスと前記書き込みアドレスとを比較し、一致するキャッシュラインの前記データ領域に前記書き込みデータを格納し、前記ダーティビットに１を設定することを特徴とする請求項１０に記載のコンピュータシステム。
【請求項１４】
前記キャッシュコントローラは、前記複数のキャッシュラインの各々の前記アドレス領域に格納されているアドレスが前記書き込みアドレスに一致しない場合は、前記複数のキャッシュラインのいずれか１つのキャッシュラインの前記アドレス領域に前記書き込みアドレスを格納し、前記データ領域に前記書き込みデータを格納し、前記ダーティビットに１を設定することを特徴とする請求項１３に記載のコンピュータシステム。
【請求項１５】
前記キャッシュコントローラは、前記ダーティビットに１が設定されているキャッシュラインの前記データ領域に格納されているデータと前記アドレス領域に格納されているアドレスとを取り出し、前記誤り訂正回路を介してこの取り出したデータを前記メインメモリ上の前記取り出したアドレスに書き戻し、このキャッシュラインの前記ダーティビットを０に変更することを特徴とする請求項１０に記載のコンピュータシステム。
【請求項１６】
前記メインメモリはＭＲＡＭであることを特徴とする請求項９に記載のコンピュータシステム。
【請求項１７】
前記メインメモリは高抵抗状態と低抵抗状態とを可逆的に切り替え可能な抵抗記憶素子を用いた不揮発性半導体記憶装置であることを特徴とする請求項９に記載のコンピュータシステム。
【請求項１８】
命令キャッシュメモリをさらに備え、
前記メインメモリから読み出されて前記命令キャッシュメモリに格納されるデータが前記誤り訂正回路により誤りの訂正が行われた場合、前記キャッシュコントローラが前記訂正実行信号に基づいて前記複数のキャッシュラインのいずれか１つのキャッシュラインに前記命令キャッシュメモリに格納されるデータ及びこのデータに対応する前記メインメモリ上のアドレスを格納し、前記ダーティビットに１を設定することを特徴とする請求項１０に記載のコンピュータシステム。
【請求項１９】
プロセッサから読み出し指示及び読み出しアドレスを受け付け、
キャッシュメモリに含まれる複数のキャッシュラインの各々のアドレス領域に格納されたアドレスと前記読み出しアドレスとを比較し、
比較結果が一致しない場合はメインメモリに格納された前記読み出しアドレスに対応する誤り訂正符号化されたデータを読み出し、
前記読み出したデータの誤り訂正復号化を行い、
前記読み出したデータの誤りの有無を検出し、
前記読み出したデータに誤りがある場合はこのデータの訂正を行って、訂正を行ったことを示す訂正実行信号を出力し、
前記訂正を行ったデータを前記複数のキャッシュラインのうちいずれか１つのキャッシュラインのデータ領域に格納し、
前記キャッシュラインのアドレス領域に前記読み出しアドレスを格納し、
前記訂正実行信号に基づいて前記キャッシュラインのダーティビットに１を設定し、
前記データ領域に格納した前記データを前記プロセッサへ送信するメモリアクセス方法。
【請求項２０】
前記読み出したデータに誤りが無い場合は、このデータを前記複数のキャッシュラインのうちいずれか１つのキャッシュラインのデータ領域に格納し、
前記キャッシュラインのアドレス領域に前記読み出しアドレスを格納し、
前記キャッシュラインのダーティビットに０を設定し、
前記データ領域に格納した前記データを前記プロセッサへ送信する請求項１９に記載のメモリアクセス方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、キャッシュメモリ、コンピュータシステム、及びメモリアクセス方法に関するものである。
【背景技術】
【０００２】
コンピュータシステムでは、メインメモリに記憶したデータが破壊されると正しい処理を継続できなくなるため、誤り訂正符号（ＥＣＣ）を用いて破壊されたデータを復元することで、データ破壊の影響を回避している。
【０００３】
データ破壊は、宇宙線や熱など、さまざまな要因によって発生する。例えばＭＲＡＭのようなメモリでは、小さな確率ではあるが、データの読み出し操作に伴い記憶している値が反転する読み出し擾乱と呼ばれる現象が発生し、データが破壊される。読み出し擾乱は確率的に発生する物理現象なので確率を０にすることは困難である。また、アクセス速度を高速化するために読み出し電圧を高くすると、読み出し擾乱の発生確率は高くなる。
【０００４】
ＭＲＡＭの読み出し擾乱と同様の現象は、ＲｅＲＡＭ、ＦｅＲＡＭ、フラッシュメモリなど、さまざまな種類の不揮発性メモリでも発生する。そのため、ＥＣＣの使用等の対策が必要となる。
【０００５】
一般にコンピュータシステムでは、メインメモリとプロセッサとの間に高速な記憶装置であるキャッシュメモリを設け、使用頻度の高いデータを格納しておくことで、低速なメインメモリへのアクセスを減らし処理を高速化している。メインメモリから読み出されたデータはキャッシュメモリに記憶される。また、プロセッサにより書き換えられたキャッシュメモリ内のデータはメインメモリに書き戻される（例えば特許文献１参照）。
【０００６】
従来、メインメモリから読み出されたデータがＥＣＣで訂正された場合、プロセッサは訂正済みの正しいデータを得ることができるため、特別な処理は何も行わないことが多かった。また、ＥＣＣでデータの訂正が発生したことを割込みによってプロセッサに伝え、プロセッサ上のオペレーティングシステムがそれに対して、統計情報を採ったり、メインメモリ上の訂正されたデータが記憶されていた領域を使用しないようにしたりする処理が行われる場合もあった。
【０００７】
ＭＲＡＭの読み出し擾乱のような確率的に発生するデータ破壊をＥＣＣで訂正した場合、次に同じアドレスのデータを読み出したときには、さらに別のデータが破壊される可能性があるため、ＥＣＣで訂正したデータをキャッシュメモリからメインメモリへ確実に書き戻すことが必要となる。
【０００８】
しかし、上述のような従来のコンピュータシステムでは、ＥＣＣで訂正が行われたことが割込み通知され、オペレーティングシステムが動作して必要な処理を行うため、その処理の時点でＥＣＣにより訂正された正しいデータがキャッシュメモリに残っていることが保証されない。例えば、後から読み出されたデータによりＥＣＣで訂正されたデータがキャッシュメモリから追い出されて、消失するおそれがある。キャッシュメモリに残っていない場合は、メインメモリから再度読み出すことになり、処理速度を低下させるという問題があった。
【特許文献１】特開平８−１３７７４８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
本発明はメインメモリからの読み出しの際に訂正されたデータを確実に書き戻すことができるキャッシュメモリ、コンピュータシステム、及びメモリアクセス方法を提供することを目的とする。
【課題を解決するための手段】
【００１０】
本発明の一態様によるキャッシュメモリは、それぞれアドレス領域、データ領域及びダーティビットを含む複数のキャッシュラインを有するデータ保持部と、誤り訂正符号化されたデータを格納するメモリから読み出した読み出しデータ及び前記読み出しデータに対してエラー訂正が行われたか否かを示す訂正実行信号が与えられ、前記複数のキャッシュラインのいずれか１つのキャッシュラインの前記アドレス領域に前記読み出しデータに対応するアドレス情報を格納し、前記データ領域に前記読み出しデータを格納し、前記ダーティビットに前記訂正実行信号に基づいて所定値を設定するコントローラと、を備えるものである。
【００１１】
本発明の一態様によるコンピュータシステムは、誤り訂正符号化されたデータを格納するメインメモリと、前記メインメモリへ書き込まれるデータの誤り訂正符号化と、前記メインメモリから読み出されたデータの誤り訂正復号化及び誤りの有無の検出とを行い、前記メインメモリから読み出されたデータに誤りを検出した場合はこの誤りを訂正し、誤り訂正を行ったか否かを示す訂正実行信号を出力する誤り訂正回路と、読み出し指示及び読み出しアドレスを出力するプロセッサと、それぞれアドレス領域、データ領域及びダーティビットを含む複数のキャッシュラインと、前記読み出し指示に基づいて前記メインメモリ上の前記読み出しアドレスから前記誤り訂正回路を介してデータを読み出し、前記複数のキャッシュラインのいずれか１つのキャッシュラインの前記アドレス領域に前記読み出しアドレスを格納し、前記データ領域に前記読み出したデータを格納し、前記ダーティビットに前記訂正実行信号に基づいて所定値を設定するキャッシュコントローラと、を有するキャッシュメモリと、を備えるものである。
【００１２】
本発明の一態様によるメモリアクセス方法は、プロセッサから読み出し指示及び読み出しアドレスを受け付け、キャッシュメモリに含まれる複数のキャッシュラインの各々のアドレス領域に格納されたアドレスと前記読み出しアドレスとを比較し、比較結果が一致しない場合はメインメモリに格納された前記読み出しアドレスに対応する誤り訂正符号化されたデータを読み出し、前記読み出したデータの誤り訂正復号化を行い、前記読み出したデータの誤りの有無を検出し、前記読み出したデータに誤りがある場合はこのデータの訂正を行って、訂正を行ったことを示す訂正実行信号を出力し、前記訂正を行ったデータを前記複数のキャッシュラインのうちいずれか１つのキャッシュラインのデータ領域に格納し、前記キャッシュラインのアドレス領域に前記読み出しアドレスを格納し、前記訂正実行信号に基づいて前記キャッシュラインのダーティビットに１を設定し、前記データ領域に格納した前記データを前記プロセッサへ送信するものである。
【発明の効果】
【００１３】
本発明によれば、メインメモリからの読み出しの際に訂正されたデータを確実に書き戻すことができる。
【発明を実施するための最良の形態】
【００１４】
以下、本発明の実施の形態を図面に基づいて説明する。図１に示すように、キャッシュメモリ２及びＥＣＣ回路３がプロセッサ１に内蔵されている。プロセッサ１はキャッシュメモリ２にアクセスし、キャッシュメモリ２が保持するデータの読み出し、キャッシュメモリ２へのデータの書き込みを行うことができる。
【００１５】
キャッシュメモリ２とメインメモリ４との間にＥＣＣ回路３が設けられており、キャッシュメモリ２はＥＣＣ回路３を介してメインメモリ４へのデータの書き込み（書き戻し）、読み出しを行う。
【００１６】
ＥＣＣ回路３はキャッシュメモリ２に格納されているデータをメインメモリ４に書き込む際にＥＣＣ符号化を行う。メインメモリ４にはＥＣＣ符号化されたデータが書き込まれる。
【００１７】
また、ＥＣＣ回路３はメインメモリ４に格納されたデータをキャッシュメモリ２に読み出す際に、ＥＣＣ復号化を行い、データの誤り有無を検出する。データに誤りが有る場合は誤りを訂正してキャッシュメモリ２へ出力する。さらに、ＥＣＣ回路３は誤り訂正を行ったことを示す訂正実行信号をキャッシュメモリ２へ出力する。
【００１８】
図１に示すように、キャッシュメモリ２は、キャッシュコントローラ２０及びキャッシュデータ保持部２１を有する。キャッシュコントローラ２０はキャッシュメモリ２のコントローラであり、プロセッサ１からのアクセスに応じて、例えばキャッシュデータ保持部２１に格納されているデータの読み出し等を実行する。
【００１９】
キャッシュデータ保持部２１は複数のキャッシュラインからなり、各々のキャッシュラインは、アドレス領域２２と、データ領域２３と、ダーティビット２４とを有する。データ領域２３は、メインメモリ４から読み出されたデータを格納する。アドレス領域２２は、データ領域２３のデータに対応するメインメモリ４上のアドレスを格納する。ダーティビット２４は、データ領域２３のデータをメインメモリ４へ書き戻す必要があるか否かを示す。
【００２０】
プロセッサ１がキャッシュメモリ２にアクセスし、アクセスしたアドレスがキャッシュラインのアドレス領域２２に格納されている場合はキャッシュヒットとなり、プロセッサ１はこのキャッシュラインが有するデータを使用して処理を行う。
【００２１】
プロセッサ１がキャッシュメモリ２にアクセスし、アクセスしたアドレスがキャッシュラインのアドレス領域２２に格納されていない場合はキャッシュミスとなる。その場合、キャッシュメモリ２（キャッシュコントローラ２０）はメインメモリ４上のデータをＥＣＣ回路３を介してキャッシュライン上に取得し、プロセッサ１からのアクセスに対応する。
【００２２】
ダーティビット２４は、キャッシュライン上のデータＤとメインメモリ４上のデータとが一致しない場合に１となる。従って、プロセッサ１からのデータ書き込み（書き換え）によってダーティビット２４は１となる。
【００２３】
また、キャッシュメモリ２（キャッシュコントローラ２０）は、メインメモリ４からデータを読み出した際にＥＣＣ回路３から訂正実行信号を受信すると、そのデータをキャッシュライン上に格納すると共にダーティビット２４を１とする。訂正によりメインメモリ４上のデータと異なるものになるためである。
【００２４】
ダーティビット２４は、ＥＣＣ回路３による訂正が行われずにメインメモリ４からデータがキャッシュライン上に取得された時や、キャッシュライン上のデータがメインメモリ４へ書き戻された時に０となる。
【００２５】
プロセッサ１がデータを読み出す際の動作について図２に示すフローチャートを用いて説明する。
【００２６】
（ステップＳ１００）キャッシュコントローラ２０がプロセッサ１から読み出しを行うデータのアドレスＡを受け取る。
【００２７】
（ステップＳ１０１）キャッシュコントローラ２０はアドレスＡと同じアドレスがキャッシュデータ保持部２１のアドレス領域に存在するか否か調べる。存在する場合はステップＳ１０２へ進み、存在しない場合はステップＳ１０３へ進む。
【００２８】
（ステップＳ１０２）アドレスＡと同じアドレスがアドレス領域２２に記憶されているキャッシュラインのデータ領域２３に格納されているデータを読み出して、プロセッサ１に送信する。
【００２９】
（ステップＳ１０３）メインメモリ４のアドレスＡのデータを読み出し、ＥＣＣ復号化する。
【００３０】
（ステップＳ１０４）ステップＳ１０３のデータ読み出し（ＥＣＣ復号化）の際に、ＥＣＣ回路３によるエラー訂正が行われた場合はステップＳ１０６へ進み、行われていない場合はステップＳ１０５へ進む。
【００３１】
（ステップＳ１０５）メインメモリ４から読み出したデータとアドレスＡがキャッシュラインに格納されると共に、ダーティビット２４に０が設定される。
【００３２】
（ステップＳ１０６）メインメモリ４から読み出され、ＥＣＣ回路３でエラー訂正されたデータとアドレスＡがキャッシュラインに格納される。また、キャッシュコントローラ２０がＥＣＣ回路３から訂正実行信号を受信し、このキャッシュラインのダーティビットを１にする。
【００３３】
（ステップＳ１０７）キャッシュラインに格納したデータをプロセッサ１に送信する。
【００３４】
このように、メインメモリ４からのデータ読み出し時にエラー訂正されてメインメモリ４上のデータと異なるものとなった場合、キャッシュコントローラ２０は訂正実行信号に基づいてダーティビット２４に１を設定し、メインメモリ４への書き戻しが必要であることを記録する。
【００３５】
ステップＳ１０５、Ｓ１０６でデータをキャッシュラインに格納するとき、キャッシュコントローラ２０は新しいキャッシュラインを確保する。キャッシュコントローラ２０はまず、未使用のキャッシュラインを探し、ある場合はそれを使用する。未使用のキャッシュラインが無い場合は、ダーティビット２４が０のキャッシュラインのいずれかを開放して使用する。ダーティビット２４が０のキャッシュラインが無い場合は、いずれかのキャッシュラインのデータをメインメモリ４に書き戻し、そのキャッシュラインを開放して使用する。
【００３６】
次に、プロセッサ１がデータを書き込む際の動作について図３に示すフローチャートを用いて説明する。
【００３７】
（ステップＳ２００）キャッシュコントローラ２０がプロセッサ１から書き込みを行うデータＤとアドレスＡを受け取る。
【００３８】
（ステップＳ２０１）キャッシュコントローラ２０がアドレスＡと同じアドレスがキャッシュデータ保持部２１のアドレス領域に存在するか否か調べる。存在する場合はステップＳ２０２へ進み、存在しない場合はステップＳ２０３へ進む。
【００３９】
（ステップＳ２０２）アドレス領域２２にアドレスＡと同じアドレスが記憶されているキャッシュラインのデータ領域２３のデータをデータＤに書き換えると共に、ダーティビットを１にする。
【００４０】
（ステップＳ２０３）新しいキャッシュラインを確保し、アドレスＡとデータＤの組み合わせをそのキャッシュラインに格納すると共に、ダーティビットを１にする。
【００４１】
このように、プロセッサ１のデータ書き込み時は、キャッシュラインへのデータ書き込みと共にダーティビット２４を１にして、メインメモリ４への書き戻しが必要であることを記録する。
【００４２】
キャッシュメモリ２からメインメモリ４への書き戻しの一例について図４に示すフローチャートを用いて説明する。これはメインメモリ４へのアクセスが行われていない期間にバックグランドで行われる。
【００４３】
（ステップＳ３００）キャッシュデータ保持部２１においてダーティビットが１のキャッシュラインの有無が検出される。ある場合はステップＳ３０１に進む。
【００４４】
（ステップＳ３０１）ダーティビットが１のキャッシュラインを１つ取り出し、書き戻し対象にする。
【００４５】
（ステップＳ３０２）書き戻し対象のキャッシュラインからアドレスＡとデータＤを取り出す。
【００４６】
（ステップＳ３０３）メインメモリ４のアドレスＡにデータＤをＥＣＣ符号化して書き込む。
【００４７】
（ステップＳ３０４）書き込み対象のキャッシュラインのダーティビットを０に変更し、ステップＳ３００に戻る。
【００４８】
このような処理により、書き戻しが必要なキャッシュライン、すなわちダーティビットが１のキャッシュラインのデータをメインメモリ４へ書き戻すことができる。
【００４９】
メインメモリ４への書き戻しは、プロセッサ１のデータ読み出しや書き込みにおいて新しいキャッシュラインを確保する際に、未使用のキャッシュライン及びダーティビットが０のキャッシュラインが無い場合にも行われる。
【００５０】
本実施形態によるキャッシュメモリは、メインメモリから読み出したデータをキャッシュメモリに格納する際に、ＥＣＣ回路から出力される訂正実行信号を参照して、訂正が行われた場合はダーティビットを１にし、書き戻しが必要であることを記録する。そのため、このデータを消失させず、確実にメインメモリへ書き戻すことができる。
【００５１】
これは、従来のライトバック方式のキャッシュメモリに対して、メインメモリから読み出したデータをキャッシュラインに格納する際に、ＥＣＣ回路でデータ訂正が行われた場合はダーティビットに１を設定するという機能を追加するだけで実現できる。
【００５２】
上記実施形態では、プロセッサの読み書きの単位のデータがキャッシュラインの管理単位と同じである例を示したが、異なっていてもよい。例えば、キャッシュラインのデータ領域２３のデータサイズが１２８ビットで、プロセッサ１のデータの読み書きのサイズが３２ビットの場合、メインメモリからは１２８ビット単位で読み出してキャッシュラインに格納し、プロセッサ１には１２８ビット中の３２ビットを送信する。メインメモリ４からのデータ読み出しの際にＥＣＣ回路３でエラー訂正を行った場合は、ダーティビットを１にする。
【００５３】
また、６４ビット単位でＥＣＣ符号化が行われる場合には、１つのキャッシュラインにダーティビットを２ビット設け、書き戻しが必要であるか否かを６４ビット単位で管理することも可能である。
【００５４】
また、プロセッサが３２ビットのデータをメインメモリへ書き込む際に、キャッシュメモリに対応するキャッシュラインが存在しない場合は、まず対応するアドレスの１２８ビットのデータをメインメモリから読み出してキャッシュラインに格納する。そして、そのキャッシュラインのデータのうち３２ビット分を書き換える。
【００５５】
また、キャッシュラインの１２８ビットのデータのうち、有効なデータがどの部分であるかを３２ビット単位で管理するようにしておき、有効な部分だけをメインメモリへ書き戻すようにすることもできる。プロセッサの書き込み時は、キャッシュラインに格納されている１２８ビットのデータのうち、プロセッサが書き込みを行う３２ビットの部分について有効なデータであると記録する。
【００５６】
上記実施形態ではＥＣＣ回路３をプロセッサ１に内蔵し、プロセッサ１とメインメモリ４の間はＥＣＣ付きのデータを受け渡すようにしていたが、図５に示すように、ＥＣＣ回路３をプロセッサ１の外部に設けるようにしてもよい。この場合、プロセッサ１とＥＣＣ回路３の間はＥＣＣを付けないデータが受け渡される。
【００５７】
ＥＣＣ回路３はメモリコントローラの一部として組み込むようにしてもよく、またメモリチップに内蔵するようにしてもよい。
【００５８】
プロセッサが命令キャッシュとデータキャッシュとを別々に有する場合でも上記実施形態による手法を適用することができる。例えば、命令キャッシュが読み出し専用の場合は、メインメモリから読み出したデータを命令キャッシュに格納する際にＥＣＣ回路による誤り訂正が行われたら、上記実施形態によるキャッシュメモリ２と同様の構成のデータキャッシュのキャッシュコントローラが、ＥＣＣ回路３から出力される訂正実行信号に基づいて、そのアドレスとデータの組み合わせをデータキャッシュのキャッシュラインに格納し、ダーティビットに１を設定する。このようにすることで、読み出し専用の命令キャッシュに格納されるデータも確実にメインメモリへ書き戻すことができる。
【００５９】
上記実施形態は、ダイレクトマッピング方式やセットアソシアティブ方式など、様々なキャッシュメモリの方式に対して適用することができる。
【００６０】
上記実施形態はメインメモリとしてＭＲＡＭやＲｅＲＡＭだけでなく、ＳＲＡＭ、ＤＲＡＭ、ＰＲＡＭ、ＰＣＲＡＭ、フラッシュメモリなど、様々な種類のメモリを用いることができる。
【００６１】
上述した実施の形態はいずれも一例であって限定的なものではないと考えられるべきである。本発明の技術的範囲は特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【図面の簡単な説明】
【００６２】
【図１】本発明の実施形態によるキャッシュメモリを含むコンピュータシステムのブロック図である。
【図２】同実施形態によるデータ読み出し処理を説明するフローチャートである。
【図３】同実施形態によるデータ書き込み処理を説明するフローチャートである。
【図４】同実施形態によるデータ読み戻し処理を説明するフローチャートである。
【図５】変形例によるコンピュータシステムのブロック図である。
【符号の説明】
【００６３】
１  プロセッサ
２  キャッシュメモリ
３  ＥＣＣ回路
４  メインメモリ
２０  キャッシュコントローラ
２１  キャッシュデータ保持部
２２  アドレス領域
２３  データ領域
２４  ダーティビット
【図１】
2010009102.tif 000003
【図２】
2010009102.tif 000004
【図３】
2010009102.tif 000005
【図４】
2010009102.tif 000006
【図５】
2010009102.tif 000007