(57)【特許請求の範囲】
【請求項１】
不揮発性キャッシュメモリと揮発性キャッシュメモリとメインメモリとを有するキャッシュシステムにおける方法であって、前記キャッシュシステムが動作を開始してから前記キャッシュシステムが有する前記不揮発性キャッシュメモリ、前記揮発性キャッシュメモリ、及び前記メインメモリの全てが停止するまでの期間における方法であり、
前記不揮発性キャッシュメモリに記憶された記憶データの少なくとも一部を、前記揮発性キャッシュメモリに書きこむ第一のステップと、
前記キャッシュシステムが第一の条件を満たしたとき、前記第一のステップを中止する第二のステップと、
前記キャッシュシステムが前記第一の条件を満たしたとき、前記記憶データのうち前記揮発性キャッシュメモリに書きこまれていないデータの少なくとも一部を、前記メインメモリに書きこむ第三のステップと、
を含む、方法であって、
前記第一の条件は、前記揮発性キャッシュメモリの空き容量が閾値以下であることである方法。
【請求項２】
前記第一の条件は、前記揮発性キャッシュメモリの空き容量がゼロになることである、請求項１に記載の方法。
【請求項３】
前記記憶データのうち、前記第一のステップにおいて前記揮発性キャッシュメモリに書きこまれたデータの前記不揮発性キャッシュメモリでのステータスが更新される更新ステップを含む、
請求項１または２に記載の方法。
【請求項４】
前記キャッシュシステムは、ライトバック方式を採用する、請求項１乃至３のいずれかに記載の方法。
【請求項５】
不揮発性キャッシュメモリと揮発性キャッシュメモリとメインメモリと制御部とデータ監視部とを有するキャッシュシステムであって、
前記制御部は、前記キャッシュシステムが動作を開始してから前記キャッシュシステムが有する前記不揮発性キャッシュメモリ、前記揮発性キャッシュメモリ、及び前記メインメモリの全てが停止するまでの期間において、
前記不揮発性キャッシュメモリに記憶された記憶データの少なくとも一部を、前記揮発性キャッシュメモリに書きこむ動作を実行し、
前記キャッシュシステムが第一の条件を満たしたとき、前記書きこみ動作を中止し、
前記データ監視部は、前記キャッシュシステムが動作を開始してから前記キャッシュシステムが有する前記不揮発性キャッシュメモリ、前記揮発性キャッシュメモリ、及び前記メインメモリの全てが停止するまでの期間において、
前記キャッシュシステムが前記第一の条件を満たしたとき、前記記憶データのうち前記揮発性キャッシュメモリに書きこまれていないデータの少なくとも一部を、前記メインメモリに書きこむ、
キャッシュシステムであって、
前記第一の条件は、前記揮発性キャッシュメモリの空き容量が閾値以下であることであるキャッシュシステム。
【請求項６】
不揮発性キャッシュメモリと揮発性キャッシュメモリとメインメモリと制御部とを有するキャッシュシステムにおけるデータ監視部であって、
前記キャッシュシステムが動作を開始してから前記キャッシュシステムが有する前記不揮発性キャッシュメモリ、前記揮発性キャッシュメモリ、及び前記メインメモリの全てが停止するまでの期間において、前記キャッシュシステムが第一の条件を満たしたとき、前記不揮発性キャッシュメモリに記憶された記憶データのうち前記揮発性キャッシュメモリに書きこまれていないデータの少なくとも一部を、前記メインメモリに書きこむ、データ監視部であって、
前記第一の条件は、前記揮発性キャッシュメモリの空き容量が，前記揮発性キャッシュメモリの空き容量が閾値以下であることであるデータ監視部。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセッサ、キャッシュシステム、制御方法及びプログラムに関する。
【背景技術】
【０００２】
近年、回路システム全体の低消費電力化が課題となっている。低消費電力化を実現するための方法の１つに、プロセッサが使用されていない時に動作周波数を小さくする方法がある。しかし、この方法では、プロセッサがスタンバイ状態であっても電源そのものをオフにすることはできない。これに対して、プロセッサに含まれるキャッシュメモリを不揮発性メモリのみで構成し、プロセッサがスタンバイ状態の時に電源をオフにすることも考えられる。しかし、不揮発性メモリは揮発性メモリに比べて書き込み速度が遅いため、プロセッサ性能の悪化が生じる。
【０００３】
特許文献１では、揮発性キャッシュメモリと不揮発性キャッシュメモリとでキャッシュシステムを構成し、通常は揮発性キャッシュメモリのみをキャッシュメモリとして使用し、プロセッサの電源をオフにする（言い換えると、パワーゲーティングを行う）際は、揮発性キャッシュメモリのデータを不揮発性キャッシュメモリに書き込んだ後に、プロセッサの電源をオフにする技術が開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１２−１９０３５９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ここで、キャッシュシステムへのアクセス方式は、ライトスルー方式とライトバック方式の２通りが知られている。
【０００６】
ライトスルー方式は、書き込み時にキャッシュメモリとメインメモリの両方のデータが更新される手法である。この方式は、常に最新のデータがメインメモリに書き込まれるので、キャッシュメモリとメインメモリとの同期を考慮する必要がない。しかし、キャッシュメモリとメインメモリとの間のバスが混雑するので、メインメモリへの書き込み待ち時間が発生するという欠点がある。
【０００７】
一方、ライトバック方式は、書き込み時にキャッシュメモリのみが更新され、対象キャッシュラインがリプレイスされるときにメインメモリが更新される手法である。この方式では、高速にデータを書き込むことが可能となるが、一定期間キャッシュメモリとメインメモリとが非同期となる。
【０００８】
特許文献１に記載の手法では、ライトスルー方式を前提としており、ライトバック方式を採用する場合にはキャッシュシステム内の一部のデータにアクセスできなくなる可能性がある。特許文献１に記載の手法では、パワーゲーティング状態から復帰後、揮発性キャッシュメモリの空き容量が無くなると、不揮発性キャッシュメモリの電源がオフになる。この際、不揮発性キャッシュメモリ内のデータの内、プロセッサからのアクセス要求が無かったデータは、揮発性キャッシュメモリに書きこまれないままになる。つまり、不揮発性キャッシュメモリの電源がオフになっている間は、プロセッサからのアクセス要求が無かったデータを、揮発性キャッシュメモリに書きこむことができない。
【０００９】
そこで、本明細書に開示される実施形態が達成しようとする目的の一つは、不揮発性キャッシュメモリに記録されていたデータにアクセスできなくなることを防ぐことができるキャッシュシステムを提供することである。
【課題を解決するための手段】
【００１０】
本実施形態の方法は、不揮発性キャッシュメモリと揮発性キャッシュメモリとメインメモリとを有するキャッシュシステムにおける方法であって、前記不揮発性キャッシュメモリに記憶された記憶データの少なくとも一部を、前記キャッシュシステムが第一の条件を満たすまで、前記揮発性キャッシュメモリに書きこむ第一のステップと、前記キャッシュシステムが第一の条件を満たしたとき、前記第一のステップを中止する第二のステップと、前記キャッシュシステムが第一の条件を満たしたとき、前記記憶データのうち前記揮発性キャッシュメモリに書きこまれていないデータの少なくとも一部を、前記メインメモリに書きこむ第三のステップと、有する。
【００１１】
本実施形態のキャッシュシステムは、不揮発性キャッシュメモリと揮発性キャッシュメモリとメインメモリと制御部とデータ監視部とを有するキャッシュシステムであって、前記制御部は、前記不揮発性キャッシュメモリに記憶された記憶データの少なくとも一部を、前記揮発性キャッシュメモリに書きこむ動作を実行し、前記キャッシュシステムが第一の条件を満たしたとき、前記書きこみ動作を中止し、前記データ監視部は、前記キャッシュシステムが前記第一の条件を満たしたとき、前記記憶データのうち前記揮発性キャッシュメモリに書きこまれていないデータの少なくとも一部を、前記メインメモリに書き込む。
【００１２】
本実施形態のデータ監視部は、不揮発性キャッシュメモリと揮発性キャッシュメモリとメインメモリと制御部とデータ監視部とを有するキャッシュシステムにおけるデータ監視部であって、前記制御部が前記不揮発性キャッシュメモリに記憶された記憶データの少なくとも一部を前記揮発性キャッシュメモリに書きこむキャッシュシステムにおいて、前記キャッシュシステムが第一の条件を満たしたとき、前記記憶データのうち前記揮発性キャッシュメモリに書きこまれていないデータの少なくとも一部を、前記メインメモリに書き込む、データ監視部。
【発明の効果】
【００１３】
上述の実施形態によれば、不揮発性キャッシュメモリに記録されていたデータにアクセスできなくなることを防ぐことができるキャッシュシステムを提供することができる。
【図面の簡単な説明】
【００１４】
【図１】第１の実施形態に係るキャッシュシステムのブロック図である。
【図２】第１の実施形態に係るキャッシュシステムの動作のフローチャートである。
【図３】第２の実施形態に係るキャッシュシステムのブロック図である。
【図４】第２の実施形態に係るキャッシュシステムの動作のフローチャートである。
【図５】第２の実施形態に係るキャッシュシステムのブロック図である。
【図６】第２の実施形態に係るキャッシュシステムの動作のフローチャートである。
【図７】第２の実施形態に係るキャッシュシステムの動作のフローチャートである。
【図８】第２の実施形態に係るキャッシュシステムの動作のフローチャートである。
【発明を実施するための形態】
【００１５】
以下では、具体的な実施形態について、図面を参照しながら詳細に説明する。各図面において、同一又は対応する要素には同一の符号が付されており、説明の明確化のため、必要に応じて重複説明は省略される。
【００１６】
以下に説明される複数の実施形態は、独立に実施されることもできるし、適宜組み合わせて実施されることもできる。これら複数の実施形態は、互いに異なる新規な特徴を有している。したがって、これら複数の実施形態は、互いに異なる目的又は課題を解決することに寄与し、互いに異なる効果を奏することに寄与する。
【００１７】
＜第１の実施形態＞
図１は、第１の実施形態におけるキャッシュシステム１００の構成の一例を示す。
【００１８】
キャッシュシステム１００は、揮発性キャッシュメモリ１０と不揮発性キャッシュメモリ１１とデータ監視部１２とメインメモリ１３と制御部１４とを少なくとも有する。
【００１９】
揮発性キャッシュメモリ１０には、不揮発性キャッシュメモリ１１に記憶された記憶データの少なくとも一部が、キャッシュシステム１００が第一の条件を満たすまで書きこまれる。なお、揮発性キャッシュメモリ１０には、例えば、ＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）などを用いても良い。
【００２０】
不揮発性キャッシュメモリ１１は、種々のデータを記憶する。なお、不揮発性キャッシュメモリ１１には、磁気抵抗メモリ（ＭＲＡＭ：Ｍａｇｎｅｔｏｒｅｓｉｓｔｉｖｅ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）などを用いても良い。不揮発性キャッシュメモリとしてＭＲＡＭを用いた場合、他の素材を用いた場合と比較して、書き換え耐性が高く、書き込みスピードも速い。
【００２１】
データ監視部１２は、キャッシュシステム１００が第一の条件を満たしたとき、不揮発性キャッシュメモリ１１に記憶された記憶データのうち、揮発性キャッシュメモリ１０に書きこまれていないデータの少なくとも一部を、メインメモリ１３に書き込む。
【００２２】
メインメモリ１３には、キャッシュシステム１００が第一の条件を満たしたとき、不揮発性キャッシュメモリ１１に記憶された記憶データのうち、揮発性キャッシュメモリ１０に書きこまれていないデータの少なくとも一部が、データ監視部１２により書きこまれる。また、メインメモリ１３に記憶されているデータは、揮発性キャッシュメモリ１０に書きこまれる。
【００２３】
制御部１４は、不揮発性キャッシュメモリ１１に記憶された記憶データの少なくとも一部を、キャッシュシステム１００が第一の条件を満たすまで、揮発性キャッシュメモリ１０に書きこむ。
【００２４】
なお、第一の条件は、例えば、揮発性キャッシュメモリ１０の空き容量に関する条件である。例えば、第一の条件は、揮発性キャッシュメモリ１０の空き容量が閾値以下になることであっても良い。あるいは、第一の条件は、揮発性キャッシュメモリ１０の空き容量がゼロになることであっても良い。
【００２５】
なお、揮発性キャッシュメモリ１０と不揮発性キャッシュメモリ１１とを組み合わせた構造を用いることで、一時的にプロセッサの電源をオフにする場合に、揮発性キャッシュメモリ１０に記憶されているデータを不揮発性キャッシュメモリ１１に退避させることができる。これにより、データが消失することを防ぐことができる。また、プロセッサの電源を再度オンにした直後には、不揮発性キャッシュメモリ１１に記憶されている記憶データを使用して、キャッシュシステム１００を動作させることができる。
【００２６】
次に、本実施形態のキャッシュシステム１００の動作について、図２を用いて説明する。
【００２７】
はじめに、揮発性キャッシュメモリの電源および不揮発性キャッシュメモリの電源をオンにする（ステップＳ１０）。このとき、揮発性キャッシュメモリは空である。不揮発性キャッシュメモリには、不揮発性キャッシュメモリの電源がオフにされる前に書きこまれたデータが記憶されている。
【００２８】
制御部１４は、揮発性キャッシュメモリ１０に、不揮発性キャッシュメモリ１１に記憶された記憶データの少なくとも一部を、キャッシュシステム１００が第一の条件を満たすまで書きこむ（ステップＳ１１）。なお、制御部１４は、キャッシュシステム１００が第一の条件を満たしたとき、不揮発性キャッシュメモリ１１に記憶された記憶データの少なくとも一部を揮発性キャッシュメモリ１０に書きこむ動作を中止する。
【００２９】
キャッシュシステム１００が第一の条件を満たしたとき、データ監視部１２は、不揮発性キャッシュメモリ１１に記憶された記憶データのうち、揮発性キャッシュメモリ１０に書きこまれていない記憶データの内の少なくとも一部を、メインメモリ１３に書き込む（ステップＳ１２）。
【００３０】
以上のようにして、本実施形態におけるキャッシュシステム１００は、不揮発性キャッシュメモリ１１に記憶された記憶データの内、揮発性キャッシュメモリ１０に書きこまれていないデータを、不揮発性キャッシュメモリ１１からメインメモリ１３に書きこむ。これにより、キャッシュシステム１００は、不揮発性キャッシュメモリ１１の電源がオフにされている間も、不揮発性キャッシュメモリに記憶されていた記憶データの内、メインメモリ１３に書きこまれたデータを、揮発性キャッシュメモリ１０に書きこむことができる。そのため、不揮発性キャッシュメモリに記録されていたデータにアクセスできなくなることを防ぐことができる。
【００３１】
ところで、不揮発性キャッシュメモリ内の全データを揮発性キャッシュメモリに書き戻すために、パワーゲーティング状態からの復帰時に、不揮発性キャッシュメモリの全データを揮発性キャッシュメモリに書きこむという方法も考えられる。しかし、その場合は書きこみ処理のために復帰が遅延するというデメリットがある。本実施形態におけるキャッシュシステム１００では、パワーゲーティング状態からの復帰時に、不揮発性キャッシュメモリの全データを揮発性キャッシュメモリに書きこむということを行わない。そのため、書きこみ処理による復帰遅延を抑制することができるという効果もある。
【００３２】
＜第２の実施形態＞
次に、本発明の第２の実施形態におけるキャッシュシステムについて説明する。
【００３３】
本実施形態では、キャッシュシステム、特にデータ監視部の構成および動作について、第１の実施形態よりも詳細に説明する。
【００３４】
図３は、本実施形態におけるキャッシュシステム１１０の構成の一例を示す。
【００３５】
揮発性キャッシュメモリ１０、不揮発性キャッシュメモリ１１、メインメモリ１３および制御部１４の構成は、第１の実施形態と同様である。
【００３６】
データ監視部１５は、第１の実施形態で述べた動作に加え、不揮発性キャッシュメモリ１１の記憶データのステータスの更新、および、ダーティデータの検出を行う。
【００３７】
まず、データ監視部１５による記憶データのステータス更新について説明する。ここで、不揮発性キャッシュメモリ１１から揮発性キャッシュメモリ１０に書きこまれたデータのステータスはクリーンであり、そのようなデータをクリーンデータと呼ぶ。また、不揮発性キャッシュメモリ１１から揮発性キャッシュメモリ１０に書きこまれていないデータのステータスはダーティであり、そのようなデータをダーティデータと呼ぶ。データ監視部１５は、揮発性キャッシュメモリ１０の電源および不揮発性キャッシュメモリ１１の電源がオンになったとき、データ監視部１５は、不揮発性キャッシュメモリ１１の全ての記憶データのステータスを、ダーティとする。また、不揮発性キャッシュメモリ１１から揮発性キャッシュメモリ１０にダーティデータが送られるとき、データ監視部１５は、当該データのステータスをダーティからクリーンに変更する。
【００３８】
次に、データ監視部１５によるダーティデータの検出について説明する。データ監視部１５は、キャッシュシステム１１０が第一の条件を満たしたとき、不揮発性キャッシュメモリ１１の記憶データの中から、揮発性キャッシュメモリ１０に書きこまれていないデータ、すなわちダーティデータを検出する。検出されたダーティデータは、メインメモリ１３に記録される。なお、第一の条件とは、第１の実施形態で述べた条件と同じである。
【００３９】
次に、本実施形態のキャッシュシステム１１０の動作について、図４を用いて説明する。
【００４０】
揮発性キャッシュメモリ１０の電源および不揮発性キャッシュメモリ１１の電源がオンになったとき、データ監視部１５は、不揮発性キャッシュメモリ１１の全ての記憶データのステータスを、ダーティに更新する（ステップＳ２０）。
【００４１】
不揮発性キャッシュメモリ１１に記憶された記憶データの少なくとも一部が、揮発性キャッシュメモリ１０に書きこまれる。また、不揮発性キャッシュメモリ１１から揮発性キャッシュメモリ１０にダーティデータが書きこまれるとき、データ監視部１５は、当該データのステータスをダーティからクリーンに変更する（ステップＳ２１）。
【００４２】
キャッシュシステム１１０が第一の条件を満たしたか否かを判断する（ステップＳ２２）。キャッシュシステムが第一の条件を満たしている場合（ステップＳ２２：Ｙｅｓ）、ステップＳ２３に進む。キャッシュシステムが第一の条件を満たしていない場合（ステップＳ２２：Ｎｏ）、ステップＳ２１に戻る。
【００４３】
データ監視部１５は、不揮発性キャッシュメモリ１１が記憶する記憶データの中にダーティデータがあるか否かを検出する（ステップＳ２３）。不揮発性キャッシュメモリ１１の記憶データの中にダーティデータが無い場合（ステップＳ２３：Ｎｏ）、ステップＳ２４に進み、不揮発性キャッシュメモリ１１の電源をオフにする。不揮発性キャッシュメモリ１１の記憶データの中にダーティデータがある場合（ステップＳ２３：Ｙｅｓ）、ステップＳ２５に進む。
【００４４】
データ監視部１５は、ダーティデータの少なくとも一部を、メインメモリ１３に書き込む（ステップＳ２５）。
【００４５】
そして、不揮発性キャッシュメモリ１１の電源をオフにする（ステップＳ２６）。
【００４６】
以上のようにして、本実施形態におけるキャッシュシステム１１０は、不揮発性キャッシュメモリ１１の記憶データが、揮発性キャッシュメモリ１０に書きこまれたデータであるか否かを、ステータスにより管理する。そのため、本実施形態のキャッシュシステム１１０は、キャッシュシステム１１０が第一の条件を満たしたときに、不揮発性キャッシュメモリ１１の記憶データの中から、揮発性キャッシュメモリ１０に書きこまれていないデータを確実に発見することができる、という効果がある。
【００４７】
ところで、一般に、キャッシュシステムは、アドレスデコーダを有する。上述の実施形態では、キャッシュシステムは、揮発性キャッシュメモリ１０と不揮発性キャッシュメモリ１１とで、アドレスデコーダを共有してもよい。アドレスデコーダを共有することで、装置面積を削減することができる。
【００４８】
以下では、上述の実施形態においてアドレスデコーダを共有することで生じる課題、および、その解決策を説明する。
【００４９】
アドレスデコーダは、プロセッサから出力されるアドレスデータに応じて、揮発性キャッシュメモリと不揮発性キャッシュメモリのラインを指定する。
【００５０】
アドレスデコーダを共有することにより、不揮発性キャッシュメモリから揮発性キャッシュメモリへデータをコピーする場合には、同じライン上へコピーされる。そのため、書き込み先に既に他のデータが存在している場合、既に存在していた他のデータが上書きされてしまう。上書きされたデータが最近使用されたものであるとき、このデータが再度要求される確率は高い。そのため、データが上書きされることによって、キャッシュミスが起きる確率が上がる。
【００５１】
上述の課題を解決するために、上述の実施形態におけるキャッシュシステムを以下のように改変しても良い。
【００５２】
図５は、キャッシュシステム１２０の構成の一例を示す。
【００５３】
キャッシュシステム１２０は、揮発性キャッシュメモリ１０、不揮発性キャッシュメモリ１１、アドレスデコーダ１６、退避領域１７、マルチプレクサ１８、１９、制御部２０、データ監視部１５、および、メインメモリ１３を少なくとも有する。
【００５４】
なお、揮発性キャッシュメモリ１０、不揮発性キャッシュメモリ１１、メインメモリ１３およびデータ監視部１５の構成は、第２の実施形態と同様である。また、揮発性キャッシュメモリ１０と、揮発性キャッシュメモリ１１の容量は、同じとする。
【００５５】
アドレスデコーダ１６は、揮発性キャッシュメモリ１０と不揮発性キャッシュメモリ１１とで共有されている。
【００５６】
退避領域１７は、揮発性キャッシュメモリ１０に接続されている。退避領域１７は、一時的にデータを記憶するものであって、揮発性キャッシュメモリ１０の１ライン分のデータを保存することができる。退避領域１７は、フリップフロップ（Ｆｌｉｐ−Ｆｌｏｐ：ＦＦ）やＳＲＡＭなどのメモリから構成されても良い。
【００５７】
マルチプレクサ１８は、制御部２０の制御に応じて、揮発性キャッシュメモリ１０から出力されるデータと不揮発性キャッシュメモリ１１から出力されるデータのいずれか一方をプロセッサへ出力する。
【００５８】
マルチプレクサ１９は、制御部２０の制御に応じて、プロセッサから要求されたデータ、不揮発性キャッシュメモリ１１に記憶された記憶データ、退避領域１７に記憶されたデータのいずれかを、揮発性キャッシュメモリ１０へ入力する。
【００５９】
制御部２０は、揮発性キャッシュメモリ１０、不揮発性キャッシュメモリ１１、および、アドレスデコーダ１６の制御を行う。また、制御部２０は、揮発性キャッシュメモリ１０、不揮発性キャッシュメモリ１１から取得したアドレスヒットの状態とプロセッサから出力された要求の種類に応じて、マルチプレクサ１８、１９の出力を制御する。
【００６０】
次に、キャッシュシステム１２０の動作について説明する。
【００６１】
本キャッシュシステムには、３通りの動作モードがある。
【００６２】
第１の動作モードは、揮発性キャッシュメモリ１０のみをキャッシュメモリとして用いる動作モードである。つまり、第１の動作モードのとき、キャッシュシステム１２０は、プロセッサの要求に基づいて、揮発性キャッシュメモリ１０からデータを出力する。また、第１の動作モードのとき、キャッシュシステム１２０は、プロセッサの要求に基づいて、メインメモリ１３に含まれるデータやプロセッサのＬ１キャッシュに含まれるデータを揮発性キャッシュメモリ１０へ書きこむ。
【００６３】
第２の動作モードは、プロセッサの電源をオフにしてパワーゲーティングを行うまでの動作モードである。アドレスデコーダ１６が揮発性キャッシュメモリ１０と不揮発性キャッシュメモリ１１のメモリの１ラインずつを指定し、揮発性キャッシュメモリ１０のデータが１ラインずつ不揮発性キャッシュメモリ１１の同じラインに書きこまれる。そして、この書きこみ作業が終了すると同時に、プロセッサの電源がオフになる。
【００６４】
第３の動作モードは、プロセッサがパワーゲーティングの状態から復帰した直後から第１の動作モードへ移行するまでの間の動作モードである。第２の動作モードにて、プロセッサの電源がオフになるため、揮発性キャッシュメモリ１０に記憶されたデータは消える。その後、プロセッサがパワーゲーティングの状態から復帰すると、揮発性キャッシュメモリ１０と不揮発性キャッシュメモリ１１の両方の電源がオンになる。このとき、不揮発性キャッシュメモリ１１にはパワーゲーティング前に揮発性キャッシュメモリ１０からコピーされたデータが格納されているが、揮発性キャッシュメモリ１０にはデータが格納されていない。そこで、パワーゲーティングから復帰した直後は、プロセッサが処理を行うために必要なデータを不揮発性キャッシュメモリ１１やメインメモリからデータを読み込む。そして、この読み込んだデータを揮発性キャッシュメモリ１０へ格納する。
【００６５】
図６〜図８は、第３の動作モード時のキャッシュシステムの動作を示すフローチャートである。
【００６６】
プロセッサがパワーゲーティングの状態から復帰し、キャッシュシステム１２０がプロセッサから要求を取得すると（ステップＳ３０：Ｙｅｓ）、制御部２０は、指定されたアドレスのデータが揮発性キャッシュメモリ１０に存在するか否かを確認する（ステップＳ３１）。
【００６７】
指定されたアドレスのデータが揮発性キャッシュメモリ１０に存在し（ステップＳ３１：Ｙｅｓ）、プロセッサからの要求がリード要求であるならば（ステップＳ３２：Ｙｅｓ）、揮発性キャッシュメモリ１０は当該データをプロセッサに書きこむ（ステップＳ３３）。また、プロセッサからの要求がリード要求でないならば（ステップＳ３２：Ｎｏ）、制御部２０は、揮発性キャッシュメモリ１０の指定されたアドレスに当該データを書き込む（ステップＳ３４）。
【００６８】
また、制御部２０はプロセッサからの要求に基づいて、不揮発性キャッシュメモリ１１に、指定されたアドレスのデータが存在するか否かも確認する（ステップＳ３５）。制御部２０は、この確認をステップＳ３１の確認と並行して行っても良い。指定されたアドレスのデータが揮発性キャッシュメモリ１０にも不揮発性キャッシュメモリ１１にも存在せず（ステップＳ３５：Ｎｏ）、プロセッサからの要求がリード要求であったならば（ステップＳ３６：Ｙｅｓ）、制御部２０は上位の記憶媒体（例えばメインメモリ）にリード要求を出し、取得したデータを揮発性キャッシュメモリ１０に書き込むとともに、そのデータをプロセッサに送る（ステップＳ３７）。指定されたアドレスのデータが揮発性キャッシュメモリ１０にも不揮発性キャッシュメモリ１１にも存在せず（ステップＳ３５：Ｎｏ）、プロセッサからの要求がリード要求でないならば（ステップＳ３６：Ｎｏ）、制御部２０は、揮発性キャッシュメモリ１０にデータを書きこむ（ステップＳ３８）。なお、データを書きこむ際、揮発性キャッシュメモリ１０の容量に空きが無ければ、制御部２０は、いずれかのラインのデータを追い出して空きを作り、そのラインに当該データを書きこんでも良い。どのラインのデータを追い出すかは、例えばＬＲＵ（Ｌｅａｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄ）等の方法を用いても良い。
【００６９】
プロセッサから指定されたアドレスのデータが揮発性キャッシュメモリ１０に存在せず、不揮発性キャッシュメモリ１１に存在する場合（ステップＳ３５：Ｙｅｓ）、アドレスデコーダ１６は、不揮発性キャッシュメモリ１１の当該データが格納されているラインを指定する。アドレスデコーダ１６は、揮発性キャッシュメモリ１０と不揮発性キャッシュメモリ１１とで共有されているため、アドレスデコーダ１６は、揮発性キャッシュメモリ１０についても同じラインを指定する。そして、制御部２０は、揮発性キャッシュメモリ１０の当該ライン上に、既に他のデータが格納されているか否かを確認する（ステップＳ３９）。
【００７０】
アドレスデコーダ１６によって指定された揮発性キャッシュメモリ１０のライン上にデータが格納されておらず（ステップＳ３９：Ｎｏ）、プロセッサから出された要求がリード要求であれば（ステップＳ５２：Ｙｅｓ）、不揮発性キャッシュメモリ１１は、不揮発性キャッシュメモリ１１のライン上のデータをプロセッサへ転送する（ステップＳ５３）。このとき、転送するデータのステータスがダーティの場合（ステップＳ５４：Ｎｏ）、データ監視部１５は、当該データのステータスをクリーンに変更する（ステップＳ５６）。そして、不揮発性キャッシュメモリ１１は、アドレスデコーダ１６が指定する不揮発性キャッシュメモリ１１のラインに記憶されたデータを、揮発性キャッシュメモリ１０の同じラインに書きこむ（ステップＳ５７）。書きこまれるデータのステータスがクリーンの場合（ステップＳ５４：Ｙｅｓ）は、当該データのステータスは変更されずに、ステップＳ５７の処理が行われる。プロセッサからの要求がリード要求でないならば（ステップＳ５２：Ｎｏ）、プロセッサへの転送は行われず、制御部２０は、アドレスデコーダ１６が指定するライン上にプロセッサに指示されたデータを書きこむ（ステップＳ５５）。
【００７１】
ここで、揮発性キャッシュメモリ１０において、アドレスデコーダ１６によって指定されたライン上に既にデータが格納されている場合（ステップＳ３９：Ｙｅｓ）、不揮発性キャッシュメモリ１１の指定ライン上のデータを揮発性キャッシュメモリ１０にコピーすると、当該ラインに格納されているデータが上書きされてしまう。そのため、既存のデータを一時的に退避させる必要がある。
【００７２】
そこでまず、制御部２０は、アドレスデコーダ１６によって指定された揮発性キャッシュメモリ１０のライン上に記憶されたデータを退避領域１７へ転送する（ステップＳ４０）。
【００７３】
そして、プロセッサからの要求がリード要求であれば（ステップＳ４１：Ｙｅｓ）、不揮発性キャッシュメモリ１１は、アドレスデコーダ１６によって指定されている不揮発性キャッシュメモリ１１のデータをプロセッサへ転送する（ステップＳ４２）。このとき、転送されるデータのステータスがダーティの場合（ステップＳ４３：Ｎｏ）、データ監視部１５は、当該データのステータスをクリーンに変更する（ステップＳ４５）。その後、不揮発性キャッシュメモリ１１は、不揮発性キャッシュメモリ１１の指定ライン上のデータを揮発性キャッシュメモリ１０の同じライン上に書きこむ（ステップＳ４６）。プロセッサへ転送されるデータのステータスがクリーンの場合（ステップＳ４３：Ｙｅｓ）は、当該データのステータスは変更されずに、ステップＳ４６の処理が行われる。プロセッサからの要求がリード要求でないならば（ステップＳ４１：Ｎｏ）、制御部２０は、アドレスデコーダ１６によって指定された揮発性キャッシュメモリ１０のライン上にプロセッサから指示されたデータを書きこむ（ステップＳ４４）。
【００７４】
その後、制御部２０は、アドレスデコーダ１６によって指定されるラインを、揮発性キャッシュメモリ１０の空き領域に変更させた上で、退避領域１７に格納したデータを揮発性キャッシュメモリ１０に書きこむ（ステップＳ４７）。
【００７５】
上述のステップＳ４０〜Ｓ４７によって、揮発性キャッシュメモリ１０に格納されているデータが上書きされることを防ぎ、揮発性キャッシュメモリ１０のヒット率低下を防ぐことができる。
【００７６】
図６、図７、図８のステップＳ３３、Ｓ３４、Ｓ３７、Ｓ３８、Ｓ４７、Ｓ５５、Ｓ５７終了後には、制御部２０は、揮発性キャッシュメモリ１０に空き領域が有るか否かを確認する（ステップＳ４８）。そして、揮発性キャッシュメモリ１０に空き領域が無い場合（ステップＳ４８：Ｎｏ）、データ監視部１５は、不揮発性キャッシュメモリ１１のラインを１つずつ走査し、ステータスがダーティであるデータを検出する。データ監視部１５は、検出したダーティデータをメインメモリ１３に書きこむとともに、当該データのステータスをクリーンに変更する（ステップＳ４９）。データ監視部１５は、不揮発性キャッシュメモリ１１にダーティデータが存在しなくなるまで、ステップＳ４９の処理を行う（ステップＳ５０：Ｙｅｓ）。
【００７７】
以上のような実施形態をとることで、第１の実施形態および第２の実施形態で述べた効果を奏するとともに、アドレスデコーダ共通化により面積を削減することができる。
【００７８】
なお、上述した各実施形態の各処理は、ソフトウェアによって実行されてもよい。すなわち、各処理を行うためのコンピュータ・プログラムが、情報処理装置が備えるＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）によって読み込まれ、実行されてもよい。プログラムを用いて各処理を行っても、上述の実施形態の処理と同内容の処理を行うことができる。そして、上記のプログラムは、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、フラッシュメモリ等の半導体記憶装置、光ディスク、磁気ディスク、光磁気ディスク等、非一時的な媒体に格納されてもよい。
【００７９】
上記の各実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
【００８０】
（付記１）不揮発性キャッシュメモリと揮発性キャッシュメモリとメインメモリと制御部とデータ監視部とを有するキャッシュシステムであって、前記制御部は、前記不揮発性キャッシュメモリに記憶された記憶データの少なくとも一部を、前記揮発性キャッシュメモリに書きこむ動作を実行し、前記キャッシュシステムが第一の条件を満たしたとき、前記書きこみ動作を中止し、前記データ監視部は、前記キャッシュシステムが前記第一の条件を満たしたとき、前記記憶データのうち前記揮発性キャッシュメモリに書きこまれていないデータの少なくとも一部を、前記メインメモリに書きこむ、キャッシュシステム。
【００８１】
（付記２）前記第一の条件は、前記揮発性キャッシュメモリの空き容量に関する条件である、付記１に記載のキャッシュシステム。
【００８２】
（付記３）前記第一の条件は、前記揮発性キャッシュメモリの空き容量が閾値以下であることである、付記１または２に記載のキャッシュシステム。
【００８３】
（付記４）前記データ監視部は、前記記憶データのうち、前記揮発性キャッシュメモリに書き込まれていないデータがあるか否かを検出する、付記１乃至３のいずれかに記載のキャッシュシステム。
【００８４】
（付記５）前記データ監視部は、前記記憶データのうち、前記揮発性キャッシュメモリに書きこまれたデータのステータスを更新する、付記１乃至４のいずれかに記載のキャッシュシステム。
【００８５】
（付記６）前記検出は、前記キャッシュシステムが前記第一の条件を満たしたときに行われる、付記１乃至５のいずれかに記載のキャッシュシステム。
【００８６】
（付記７）前記不揮発性キャッシュメモリの容量と前記揮発性キャッシュメモリの容量とは同じである、付記１乃至６のいずれかに記載のキャッシュシステム。
【００８７】
（付記８）前記キャッシュシステムは、ライトバック方式を採用する、付記１乃至７のいずれかに記載のキャッシュシステム。
【００８８】
（付記９）前記揮発性キャッシュメモリと前記不揮発性キャッシュメモリとに対して同じラインを指定するアドレスデコーダと、前記揮発性キャッシュメモリからデータが入力される退避領域とをさらに有し、前記退避領域は、前記入力データを前記揮発性キャッシュメモリに出力する、付記１乃至８のいずれかに記載のキャッシュシステム。
【００８９】
（付記１０）前記揮発性キャッシュメモリの所定のライン上に他のデータが記録されていた場合、前記退避領域は、前記他のデータが前記揮発性キャッシュメモリから出力され、その後、前記他のデータを前記揮発性キャッシュメモリに出力する、付記１乃至９のいずれかに記載のキャッシュシステム。
【００９０】
（付記１１）不揮発性キャッシュメモリと揮発性キャッシュメモリとメインメモリと制御部を有するキャッシュシステムにおけるデータ監視部であって、前記キャッシュシステムが第一の条件を満たしたとき、前記不揮発性キャッシュメモリに記憶された記憶データのうち前記揮発性キャッシュメモリに書きこまれていないデータの少なくとも一部を、前記メインメモリに書きこむ、データ監視部。
【００９１】
（付記１２）前記第一の条件は、前記揮発性キャッシュメモリの空き容量に関する条件である、付記１１に記載のデータ監視部。
【００９２】
（付記１３）前記第一の条件は、前記揮発性キャッシュメモリの空き容量が閾値以下であることである、付記１１または１２に記載のデータ監視部。
【００９３】
（付記１４）前記データ監視部は、前記記憶データのうち、前記揮発性キャッシュメモリに書きこまれていないデータがあるか否かを検出する、付記１１乃至１３のいずれかに記載のデータ監視部。
【００９４】
（付記１５）前記データ監視部は、前記記憶データのうち、前記揮発性キャッシュメモリに書きこまれたデータのステータスを更新する、付記１１乃至１４のいずれかに記載のデータ監視部。
【００９５】
（付記１６）前記検出は、前記キャッシュシステムが前記第一の条件を満たしたときに行われる、付記１１乃至１５のいずれかに記載のデータ監視部。
【００９６】
（付記１７）前記不揮発性キャッシュメモリの容量と前記揮発性キャッシュメモリの容量とは同じである、付記１１乃至１６のいずれかに記載のデータ監視部。
【００９７】
（付記１８）前記キャッシュシステムは、ライトバック方式を採用する、付記１１乃至１７のいずれかに記載のデータ監視部。
【００９８】
（付記１９）不揮発性キャッシュメモリと揮発性キャッシュメモリとメインメモリとを有するキャッシュシステムにおける方法であって、前記不揮発性キャッシュメモリに記憶された記憶データの少なくとも一部を、前記揮発性キャッシュメモリに書きこむ第一のステップと、前記キャッシュシステムが第一の条件を満たしたとき、前記第一のステップを中止する第二のステップと、前記キャッシュシステムが前記第一の条件を満たしたとき、前記記憶データのうち、前記揮発性キャッシュメモリに書きこまれていないデータの少なくとも一部を、前記メインメモリに書きこむ第三のステップと、を含む、方法。
【００９９】
（付記２０）不揮発性キャッシュメモリと揮発性キャッシュメモリとメインメモリと制御部とデータ監視部とを有するキャッシュシステムにおけるデータ監視部の制御方法であって、前記不揮発性キャッシュメモリに記憶された記憶データの少なくとも一部が前記揮発性キャッシュメモリに書きこまれるキャッシュシステムにおいて、前記キャッシュシステムが第一の条件を満たしたとき、前記記憶データのうち前記揮発性キャッシュメモリに書きこまれていないデータの少なくとも一部を、前記メインメモリに書きこむステップを有する、方法。
【０１００】
（付記２１）不揮発性キャッシュメモリと揮発性キャッシュメモリとメインメモリとを有するキャッシュシステムにおける方法であって、コンピュータ上で実行された際に、前記不揮発性キャッシュメモリに記憶された記憶データの少なくとも一部を、前記揮発性キャッシュメモリに書きこむ第一の工程と、前記キャッシュシステムが第一の条件を満たしたとき、前記第一のステップを中止する第二の工程と、前記キャッシュシステムが前記第一の条件を満たしたとき、前記記憶データのうち、前記揮発性キャッシュメモリに書きこまれていないデータの少なくとも一部を、前記メインメモリに書きこむ第三の工程と、を有する制御方法を実行することが可能なプログラムコードを有するプログラム。
【０１０１】
（付記２２）不揮発性キャッシュメモリと揮発性キャッシュメモリとメインメモリと制御部とデータ監視部とを有するキャッシュシステムにおけるデータ監視部の制御方法であって、前記不揮発性キャッシュメモリに記憶された記憶データの少なくとも一部が前記揮発性キャッシュメモリに書きこまれるキャッシュシステムにおいて、コンピュータ上で実行された際に、前記キャッシュシステムが第一の条件を満たしたとき、前記記憶データのうち前記揮発性キャッシュメモリに書きこまれていないデータの少なくとも一部を、前記メインメモリに書きこむ工程を有する制御方法を実行することが可能なプログラムコードを有するプログラム。
【０１０２】
（付記２３）コンピュータに読み取り可能な情報記憶媒体であって、付記２１に記載のプログラムを記憶する記憶媒体。
【０１０３】
（付記２４）コンピュータに読み取り可能な情報記憶媒体であって、付記２２に記載のプログラムを記憶する記憶媒体。
【符号の説明】
【０１０４】
１０    揮発性キャッシュメモリ
１１    不揮発性キャッシュメモリ
１２、１５    データ監視部
１３    メインメモリ
１４    制御部
１６    アドレスデコーダ
１７    退避領域
１８、１９    マルチプレクサ
２０    制御部
１００、１１０、１２０    キャッシュシステム
【図１】
0006784033.tif 000002
【図２】
0006784033.tif 000003
【図３】
0006784033.tif 000004
【図４】
0006784033.tif 000005
【図５】
0006784033.tif 000006
【図６】
0006784033.tif 000007
【図７】
0006784033.tif 000008
【図８】
0006784033.tif 000009