(57)【要約】【課題】  電池でバックアップされた外部メモリにはライトバック型のキャッシュを使用することができないため、キャッシュを用いても高速化することが困難であったという課題を解決する。【解決手段】  キャッシュにデータが書き込まれる度にカウンタをインクリメントし、このカウンタのカウント値が予め規定された値以上になると、１行分のキャッシュデータを外部メモリに書き戻し、カウンタをデクリメントする。また、電源異常信号が入力されると、キャッシュ中の全てのデータを外部メモリに書き戻す。ライトバック型のキャッシュを用いることができるので、高速化を図ることができる。【選択図】                    図１
2008083904.tif 000002
【特許請求の範囲】
【請求項１】
データが書き込まれたときにカウントアップ要求および書き込まれたラインのライン番号を出力し、書き戻し指令が入力されると指定されたラインのデータを外部メモリに書き戻すライトバック型のキャッシュメモリと、
前記カウントアップ要求が入力されるとカウント値をカウントアップし、このカウント値が予め定められた規定値以上になると書き戻しリクエストを出力し、カウントダウン要求が入力されるとカウント値をカウントダウンするカウンタと、
前記キャッシュメモリが出力したライン番号を保存し、前記書き戻しリクエストが入力されると、ライン番号を指定して前記キャッシュメモリに書き戻し指令を出力して当該ライン番号を削除すると共に前記カウンタにカウントダウン要求を出力し、電源異常信号が入力されると、未だ書き戻していない全データを書き戻す書き戻し指令を前記データキャッシュに出力するコヒーレンス維持回路と、
を具備したことを特徴とするキャッシュメモリ装置。
【請求項２】
前記コヒーレンス維持回路は、書き戻しリクエストが入力されたときに１ライン分のデータを書き戻させる書き戻し指令を出力し、前記カウンタはカウントダウン要求が入力されたときにカウント値を１だけカウントダウンするようにしたことを特徴とする請求項１記載のキャッシュメモリ装置。
【請求項３】
キャッシュメモリにデータが書き込まれるとカウンタをカウントアップし、かつ書き込まれたライン番号を保存する工程と、
前記カウンタのカウント値が規定値以上になると、前記キャッシュメモリ中の指定されたラインのデータを外部メモリに書き戻して当該ライン番号を削除すると共に、前記カウンタをカウントダウンする工程と、
電源異常信号が入力されたときに、前記キャッシュメモリ中の未だ書き戻していない全データを外部メモリに書き戻す工程と、
を具備したことを特徴とするキャッシュメモリ装置の制御方法。
【請求項４】
前記カウンタのカウント値が規定以上になると、前記キャッシュメモリ中の１ラインのデータを外部メモリに書き戻し、前記カウンタを１だけカウントダウンするようにしたことを特徴とする請求項３記載のキャッシュメモリ装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は高速化が可能なキャッシュメモリ装置に関し、特に電池でバックアップされた外部メモリのキャッシュに用いて好適なキャッシュメモリ装置に関するものである。
【背景技術】
【０００２】
データのアクセス時間を高速化するために、ＣＰＵ(Central Processing Unit)と外部メモリとの間にアクセス時間が短いキャッシュメモリを配置し、このキャッシュメモリを介して外部メモリをアクセスすることが行われている。このようなキャッシュメモリを用いた構成を図４に示す。
【０００３】
図４において、１２は外部メモリであり、ＣＰＵ１０が実行する命令が格納されている。ＣＰＵ１０と外部メモリ１２との間には命令キャッシュ１１が配置されており、この命令キャッシュ１１に外部メモリ１２のデータが格納され、かつ常時更新されている。ＣＰＵ１０はこの命令キャッシュ１１を介して必要な命令を外部メモリ１２から読み出す。外部メモリ１２に比べて命令キャッシュ１１のアクセス時間を短くすることができるので、平均的なアクセス時間を短縮することができる。
【０００４】
１４は電池１５でバックアップされた外部メモリであり、ＣＰＵ１０が用いるデータが格納されている。ＣＰＵ１０と外部メモリ１４との間にはデータキャッシュ１３が配置されている。ＣＰＵ１０はこのデータキャッシュ１３を介して外部メモリ１４にアクセスする。このようにすることにより、命令キャッシュ１１の場合と同様に平均的なアクセス時間を短くすることができる。
【０００５】
キャッシュメモリには、データを書き込むときはキャッシュメモリを介さず直接外部メモリに書き込むライトスルー(Write Through)型と、書き込むデータを一旦キャッシュメモリに保存し、一括して外部メモリに書き込むライトバック(Write Back)型の２種類がある。ライトバック型は一度に複数のデータを外部メモリに書き込むので、ライトスルー型に比べて高速である。
【０００６】
図４のように電池でバックアップされた外部メモリを用いる場合は、キャッシュメモリはライトスルー型でなければならない。電源が落ちるとキャッシュメモリへの電源も同時に落ち、キャッシュメモリに保持されていたデータは失われる。ライトバック型キャッシュメモリは外部メモリに書き込むデータを一旦保持するので、キャッシュメモリの内容と外部メモリの内容は一般に一致しない。この状態で電源が落ちると、更新されていない古いデータが外部メモリに残ってしまう。そのため、キャッシュメモリに書き込みデータを保持しないライトスルー型キャッシュメモリが用いられる。
【０００７】
図５にデータキャッシュを使用しない構成を示す。なお、図４と同じ要素には同一符号を付し、説明を省略する。ＣＰＵ１０が外部メモリ１２にアクセスするときは命令キャッシュ１１を介して行うが、電池１５でバックアップされている外部メモリ１４にアクセスするときは、キャッシュメモリを用いず、直接外部メモリ１４にアクセスする。外部メモリ１４から読み出す割合より書き込む割合が大きいと、データキャッシュを用いても高速化される割合が小さいので、電池でバックアップされた外部メモリ１４にはキャッシュメモリを用いない。
【０００８】
【特許文献１】特開２００３−２２３３６０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
前述したように、電池でバックアップされた外部メモリに対してはライトバック型のキャッシュメモリを用いることができない。そのため、外部メモリにアクセスするアクセス時間を短くすることができず、装置の高速化が制限されるという課題があった。
【００１０】
従って本発明の目的は、電池でバックアップされた外部メモリにもライトバック型キャッシュメモリを用いることができるキャッシュメモリ装置およびその制御方法を提供することにある。
【課題を解決するための手段】
【００１１】
このような課題を達成するために、本発明のうち請求項１記載の発明は、
データが書き込まれたときにカウントアップ要求および書き込まれたラインのライン番号を出力し、書き戻し指令が入力されると指定されたラインのデータを外部メモリに書き戻すライトバック型のキャッシュメモリと、
前記カウントアップ要求が入力されるとカウント値をカウントアップし、このカウント値が予め定められた規定値以上になると書き戻しリクエストを出力し、カウントダウン要求が入力されるとカウント値をカウントダウンするカウンタと、
前記キャッシュメモリが出力したライン番号を保存し、前記書き戻しリクエストが入力されると、ライン番号を指定して前記キャッシュメモリに書き戻し指令を出力して当該ライン番号を削除すると共に前記カウンタにカウントダウン要求を出力し、電源異常信号が入力されると、未だ書き戻していない全データを書き戻す書き戻し指令を前記データキャッシュに出力するコヒーレンス維持回路と、
を具備したものである。電池でバックアップされた外部メモリへのアクセスを高速化することができる。
【００１２】
請求項２記載の発明は、請求項１記載の発明において、
前記コヒーレンス維持回路は、書き戻しリクエストが入力されたときに１ライン分のデータを書き戻させる書き戻し指令を出力し、前記カウンタはカウントダウン要求が入力されたときにカウント値を１だけカウントダウンするようにしたものである。構成が簡単になる。
【００１３】
請求項３記載の発明は、
キャッシュメモリにデータが書き込まれるとカウンタをカウントアップし、かつ書き込まれたライン番号を保存する工程と、
前記カウンタのカウント値が規定値以上になると、前記キャッシュメモリ中の指定されたラインのデータを外部メモリに書き戻して当該ライン番号を削除すると共に、前記カウンタをカウントダウンする工程と、
電源異常信号が入力されたときに、前記キャッシュメモリ中の未だ書き戻していない全データを外部メモリに書き戻す工程と、
を具備したものである。電池でバックアップされた外部メモリへのアクセスを高速化することができる。
【００１４】
請求項４記載の発明は、請求項３記載の発明において、
前記カウンタのカウント値が規定以上になると、前記キャッシュメモリ中の１ラインのデータを外部メモリに書き戻し、前記カウンタを１だけカウントダウンするようにしたものである。構成が簡単になる。
【発明の効果】
【００１５】
以上説明したことから明らかなように、本発明によれば次のような効果がある。
請求項１，２、３および４の発明によれば、ライトバック型のキャッシュメモリ中の、未だ外部メモリに書き戻していないラインの行数をカウンタでカウントし、このカウント値が規定値以上になるとライン番号を指定してデータを外部メモリに書き戻し、また電源異常信号が発生すると、キャッシュメモリ中の未だ書き戻していない全データを外部メモリに書き戻すようにした。
【００１６】
データキャッシュ中の、外部メモリに書き戻していないラインの数を規定値未満に制限することができるので、電源異常が発生したときにデータキャッシュ中の書き戻されていない全データを確実に外部メモリに書き戻すことができる。そのため、電池でバックアップされている外部メモリのキャッシュにライトバック型のキャッシュメモリを用いることができるので、この外部メモリへのアクセスを高速化することができるという効果がある。
【発明を実施するための最良の形態】
【００１７】
以下本発明を図面を用いて詳細に説明する。図１は本発明に係るキャッシュメモリ装置の一実施例を示す構成図である。なお、図４と同じ要素には同一符号を付し、説明を省略する。図１において、２０はキャッシュメモリ装置であり、データキャッシュ２１、カウンタ２２およびコヒーレンス維持回路２３で構成されている。データキャッシュ２１にはライトバック型のキャッシュメモリを用いる。このキャッシュメモリ装置２０はＣＰＵ１０と外部メモリ１４との間に配置されている。なお、外部メモリ１４は電池１５でバックアップされている。
【００１８】
データキャッシュ２１はカウンタ２２にカウントアップ要求を、コヒーレンス維持回路２３にライン番号を出力する。カウンタ２２はコヒーレンス維持回路２３に書き戻しリクエストを出力する。コヒーレンス維持回路２３はデータキャッシュ２１が出力したライン番号を保存し、カウンタ２２にカウントダウン要求を、データキャッシュ２１に書き戻し指令を出力する。さらに、コヒーレンス維持回路２３には電源異常信号ＡＣＦＡＩＬが入力される。なお、図４と同じように命令が格納されている外部メモリ１２とＣＰＵ１０の間には命令キャッシュ１１が配置されているが、この図では記載を省略している。
【００１９】
図２にデータキャッシュ２１の構成を示す。データキャッシュ２１は複数のラインで構成される。各ラインにはアドレスタグＴａｇ、ライン有効ビットＶａｌｉｄ、ダーティビットＤｉｒｔｙ、および書き込まれたキャッシュデータＤＡＴＡが含まれる。ダーティビットＤｉｒｔｙがセットされているラインはキャッシュデータＤＡＴＡを外部メモリ１４に書き戻していない、すなわちデータキャッシュ２１と外部メモリ１４のデータが一致していないラインであることを表している。
【００２０】
次に、この実施例の動作を図３フローチャートに基づいて説明する。なお、このフローはＣＰＵ１０がデータキャッシュ２１にデータを書き込むときだけ動作する。データキャッシュ２１からデータを読み出すとき、あるいはアクセスミスのときは何もしない。
【００２１】
工程（Ｐ３−１）でデータキャッシュ２１に書き込みが行われると、工程（Ｐ３−２）でデータキャッシュ２１はライン上のデータを更新し、ダーティビットＤｉｒｔｙをセットする。そして、工程（Ｐ３−３）でカウンタ２２にカウント値のカウントアップを要求し、ダーティビットＤｉｒｔｙをセットしたラインの番号をコヒーレンス維持回路２３に出力する。
【００２２】
カウントアップ要求が入力されると、工程（Ｐ３−４）でカウンタ２２は自身のカウント値を１だけ増加させる。コヒーレンス維持回路２３は工程（Ｐ３−５）で入力されたライン番号を登録する。
【００２３】
次に、工程（Ｐ３−６）でカウンタ２２は自身のカウント値が予め規定された値以上であるかを調べ、規定値以上であると、工程（Ｐ３−７）でコヒーレンス維持回路２３に書き戻しリクエストを出力する。カウント値が規定値より小さいと工程（Ｐ３−１）の前に戻り、再度ＣＰＵ１０がデータキャッシュ２１にデータを書き込むのを待つ。
【００２４】
書き戻しリクエストを受けたコヒーレンス維持回路２３は、工程（Ｐ３−８）で保存されているライン番号の１つを指定して、データキャッシュ２１に書き戻し指令を出力する。そして、工程（Ｐ３−９）で書き戻し指令をしたライン番号を削除し、カウンタ２２にカウントダウン要求を出力する。
【００２５】
データキャッシュ２１は、工程（Ｐ３−１０）で書き戻し指令で指定されたライン番号のデータを外部メモリ１４に書き戻す。そして、工程（Ｐ３−１１）で、カウンタ２２はカウントダウン要求に基づいて自身のカウント値を１つだけカウントダウンする。そして、工程（Ｐ３−１）の前に戻り、再度ＣＰＵ１０がデータキャッシュ２１にデータを書き込むのを待つ。
【００２６】
電源異常信号ＡＣＦＡＩＬがアクティブになると、コヒーレンス維持回路２３はデータキャッシュ２１に、保存されている全てのライン番号のデータを外部メモリ１４に書き戻すことを指令する。これにより、データキャッシュ２１はダーティビットＤｉｒｔｙがセットされている全ラインのデータを書き戻す。
【００２７】
このように、外部メモリ１４に書き戻ししていない（ダーティビットＤｉｒｔｙがセットされている）ラインの数をカウンタ２２でカウントし、このカウント値が予め定められた規定値以上になると、書き戻していないラインの１つを書き戻すようにした。また、電源異常信号が入力されると、書き戻していない全てのデータを書き戻すようにした。
【００２８】
この規定値は、電源異常信号が出力されてから実際に電源電圧がキャッシュメモリ装置２０の動作範囲以下になるまでの時間内に、データキャッシュ２１内の書き戻されていない全データを書き戻すことができるライン数以下に設定する。すなわち、規定値をＣ、１ラインの書き戻しに要する時間をＴＬ、電源異常信号が入力されてから電源電圧が動作電圧範囲以下になるまでの時間をＴＭとすると、
Ｃ  ≦ＴＭ／ＴＬ
になるように設定する。
【００２９】
このため、データキャッシュ２１にライトバック型のキャッシュメモリを用いても、電源異常時にキャッシュメモリ装置にのみ保存されていたデータは全て外部メモリに書き戻されるので、外部メモリ１４に古いデータが残ることはなくなる。
【００３０】
なお、この実施例ではカウンタ２２のカウント値が規定値以上になったときに、データキャッシュ２１に保存されているデータのうち、１ラインのデータを書き戻すようにしたが、２ライン以上のデータを書き戻すようにしてもよい。この場合、図３の工程（Ｐ３−８）で２ライン以上を指定し、かつ工程（Ｐ３−１１）で指定されたライン数だけカウント値をカウントダウンすればよい。
【図面の簡単な説明】
【００３１】
【図１】本発明の一実施例を示す構成図である。
【図２】データキャッシュの構造図である。
【図３】本発明の一実施例の動作を示すフローチャートである。
【図４】従来のキャッシュを用いた装置の構成図である。
【図５】従来のデータキャッシュを用いない装置の構成図である。
【符号の説明】
【００３２】
１０  ＣＰＵ
１４  外部メモリ
１５  電池
２０  キャッシュメモリ装置
２１  データキャッシュ
２２  カウンタ
２３  コヒーレンス維持回路
Ｄｉｒｔｙ  ダーティビット
ＤＡＴＡ  外部メモリに書き戻すデータ
【図１】
2008083904.tif 000003
【図２】
2008083904.tif 000004
【図３】
2008083904.tif 000005
【図４】
2008083904.tif 000006
【図５】
2008083904.tif 000007