(57)【特許請求の範囲】
【請求項１】
揮発性キャッシュメモリーと、
不揮発性キャッシュメモリーと、
前記揮発性キャッシュメモリーに記憶される各データに対応付けて、その揮発性キャッシュメモリーに記憶されるデータよりも未使用時間の長いデータが前記不揮発性キャッシュメモリーに記憶されている数、もしくは、その揮発性キャッシュメモリーに記憶されるデータよりも未使用時間の短いデータが前記不揮発性キャッシュメモリーに記憶されている数に応じたデータを記憶する順序保存部と、
前記揮発性キャッシュメモリーに記憶された第１のデータを他のアドレスを有する第２のデータで上書きするときに、前記第１のデータと対応付けて前記順序保存部に記憶されたデータに基づいて、前記第１のデータの未使用時間が前記不揮発性キャッシュメモリーに記憶されているいずれかのデータの未使用時間よりも短いと判断できる場合、前記第１のデータを前記不揮発性キャッシュメモリーに記憶させる制御部とを有し、
前記制御部は、前記揮発性キャッシュメモリーの電源を切るときに、前記揮発性キャッシュメモリーに記憶された前記第１のデータと対応付けて前記順序保存部に記憶されたデータに基づいて、前記第１のデータの未使用時間が前記不揮発性キャッシュメモリーに記憶されているいずれかのデータの未使用時間よりも短いと判断できる場合、前記第１のデータを前記不揮発性キャッシュメモリーに記憶させるキャッシュシステム。
【請求項２】
揮発性キャッシュメモリーと、
不揮発性キャッシュメモリーと、
前記揮発性キャッシュメモリーに記憶される各データに対応付けて、その揮発性キャッシュメモリーに記憶されるデータよりも未使用時間の長いデータが前記不揮発性キャッシュメモリーに記憶されている数、もしくは、その揮発性キャッシュメモリーに記憶されるデータよりも未使用時間の短いデータが前記不揮発性キャッシュメモリーに記憶されている数に応じたデータを記憶する順序保存部と、
前記揮発性キャッシュメモリーに記憶された第１のデータを他のアドレスを有する第２のデータで上書きするときに、前記第１のデータと対応付けて前記順序保存部に記憶されたデータに基づいて、前記第１のデータの未使用時間が前記不揮発性キャッシュメモリーに記憶されているいずれかのデータの未使用時間よりも短いと判断できる場合、前記第１のデータを前記不揮発性キャッシュメモリーに記憶させる制御部とを有し、
前記制御部は、前記揮発性キャッシュメモリーに記憶された第１のデータを他のアドレスを有する第２のデータで上書きするとき、もしくは前記揮発性キャッシュメモリーの電源を切るときに、前記第１のデータに対応付けて前記順序保存部に記憶されたデータに基づいて、前記第１のデータの未使用時間が前記不揮発性キャッシュメモリーに記憶されている全てのデータの未使用時間よりも長いと判断できる場合、前記第１のデータを前記不揮発性キャッシュメモリーに記憶させずに、上位の記憶装置に記憶させるキャッシュシステム。
【請求項３】
揮発性キャッシュメモリーと、
不揮発性キャッシュメモリーと、
前記揮発性キャッシュメモリーに記憶される各データに対応付けて、その揮発性キャッシュメモリーに記憶されるデータよりも未使用時間の長いデータが前記不揮発性キャッシュメモリーに記憶されている数、もしくは、その揮発性キャッシュメモリーに記憶されるデータよりも未使用時間の短いデータが前記不揮発性キャッシュメモリーに記憶されている数に応じたデータを記憶する順序保存部と、
前記揮発性キャッシュメモリーに記憶された第１のデータを他のアドレスを有する第２のデータで上書きするときに、前記第１のデータと対応付けて前記順序保存部に記憶されたデータに基づいて、前記第１のデータの未使用時間が前記不揮発性キャッシュメモリーに記憶されているいずれかのデータの未使用時間よりも短いと判断できる場合、前記第１のデータを前記不揮発性キャッシュメモリーに記憶させる制御部とを有し、
前記揮発性キャッシュメモリーの各データに対応付けてそれらのデータと同一のデータが前記不揮発性キャッシュメモリーに記憶されているか否かを示すコピー済み情報を記憶するコピー済み記憶領域を更に有し、
前記制御部は、前記揮発性キャッシュメモリーに記憶された第１のデータを他のアドレスを有する第２のデータで上書きするとき、もしくは前記揮発性キャッシュメモリーの電源を切るときに、前記第１のデータと対応付けてこのデータと同一のデータが前記不揮発性キャッシュメモリーに記憶されていないことを示すコピー済み情報が記憶されている場合であって、前記第１のデータと対応付けて前記順序保存部に記憶されたデータに基づいて、前記第１のデータの未使用時間が前記不揮発性キャッシュメモリーに記憶されているいずれかのデータの未使用時間よりも短いと判断できる場合、前記第１のデータを前記不揮発性キャッシュメモリーに記憶させるキャッシュシステム。
【請求項４】
前記制御部は、前記揮発性キャッシュメモリーに記憶された第１のデータを他のアドレスを有する第２のデータで上書きするとき、もしくは前記揮発性キャッシュメモリーの電源を切るときに、前記第１のデータに対応付けて前記順序保存部に記憶されたデータに基づいて、前記第１のデータの未使用時間が前記不揮発性キャッシュメモリーに記憶されている全てのデータの未使用時間よりも長いと判断できる場合、前記第１のデータを前記不揮発性キャッシュメモリーに記憶させずに、上位の記憶装置に記憶させる請求項１または３に記載のキャッシュシステム。
【請求項５】
前記不揮発性キャッシュメモリーに記憶された各データに対応付けて、前記不揮発性キャッシュメモリーに記憶されたデータの中で未使用時間の長さの順序を示すデータを記憶するＬＲＵ記憶部と、
前記制御部が、前記第１のデータを前記不揮発性キャッシュメモリーに記憶させると、前記第１のデータに対応付けて前記順序保存部に記憶されたデータを用いて前記ＬＲＵ記憶部を更新するＬＲＵ更新部とを更に有する請求項１乃至４のいずれかに記載のキャッシュシステム。
【請求項６】
前記不揮発性キャッシュメモリーのデータが使用された時に、このデータと対応付けて前記ＬＲＵ記憶部に記憶されたデータを用いて前記順序保存部の値を更新することを特徴とする更新演算部を更に有する請求項５に記載のキャッシュシステム。
【請求項７】
前記揮発性キャッシュメモリーのライン数と前記不揮発性キャッシュメモリーのライン数とは同じである請求項１乃至６のいずれか１項に記載のキャッシュシステム。
【請求項８】
前記不揮発性キャッシュメモリーは、磁気抵抗メモリーである請求項１乃至７のいずれか１項に記載のキャッシュシステム。
【請求項９】
請求項１乃至８のいずれか１項に記載のキャッシュシステムと、
前記キャッシュシステムから出力されるデータを用いた演算を行うプロセッサエレメントを有する処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態はキャッシュシステムおよび処理装置に関する。
【背景技術】
【０００２】
近年、回路システム全体の低消費電力化が課題となっている。プロセッサ部分は、動作させている最中にも使用されていないことが頻繁に発生するため、プロセッサ部分の消費電力削減によって、回路システム全体の消費電力を低減することができる。そこで、プロセッサが使用されていない時には、動作周波数を下げることでプロセッサ部分の消費電力を削減する方法が取られてきた。しかしこの方法では、プロセッサのスタンバイ時であっても動作電源そのものを切ることはできない。そのため、更なる消費電力削減が求められている。これに対して、プロセッサに含まれるキャッシュを不揮発性メモリーで構成し、プロセッサがスタンバイの時に動作電源を切断することも考えられるが、不揮発性メモリーは揮発性メモリーに比べて書き込み速度が遅いため、プロセッサ性能の悪化が生じる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】米国特許第７０９３０８９号
【発明の概要】
【発明が解決しようとする課題】
【０００４】
そこで本発明は、動作速度が速い低消費電力キャッシュシステムおよび処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００５】
上記目的を達成するために、本発明の実施形態によるキャッシュシステムは、
揮発性キャッシュメモリーと、不揮発性キャッシュメモリーと、前記揮発性キャッシュメモリーに記憶される各データに対応付けて、その揮発性キャッシュメモリーに記憶されるデータよりも未使用時間の長いデータが前記不揮発性キャッシュメモリーに記憶されている数、もしくは、その揮発性キャッシュメモリーに記憶されるデータよりも未使用時間の短いデータが前記不揮発性キャッシュメモリーに記憶されている数に応じたデータを記憶する順序保存部と、前記揮発性キャッシュメモリーに記憶された第１のデータを他のアドレスを有する第２のデータで上書きするときに、前記第１のデータと対応付けて前記順序保存部に記憶されたデータに基づいて、前記第１のデータの未使用時間が前記不揮発性キャッシュメモリーに記憶されているいずれかのデータの未使用時間よりも短いと判断できる場合、前記第１のデータを前記不揮発性キャッシュメモリーに記憶させる制御部を有することを特徴としている。
【図面の簡単な説明】
【０００６】
【図１】本発明の実施形態に係る情報処理装置の構成を示すブロック図。
【図２】本発明の第１の実施形態に係る情報処理装置のキャッシュの構成を示すブロック図。
【図３】本発明の第１の実施形態に係る情報処理装置のキャッシュがプロセッサエレメントから参照要求を受けたときの処理を示すフローチャート
【図４】本発明の第１の実施形態に係る情報処理装置のキャッシュが揮発性メモリーへの書き込み要求を受けたときの処理を示すフローチャート
【図５】本発明の第１の実施形態に係る情報処理装置のキャッシュのＬＲＵ領域と順序保存領域とが記憶するデータの例。
【図６】本発明の第１の実施形態に係る情報処理装置のプロセッサの電源をオフにするときのキャッシュの処理を示すフローチャート。
【図７】本発明の第２の実施形態に係る情報処理装置のキャッシュを示すブロック図。
【図８】本発明の第２の実施形態に係る情報処理装置のキャッシュが揮発性メモリーへの書き込み要求を受けたときの処理を示すフローチャート
【図９】本発明の第２の実施形態に係る情報処理装置のプロセッサの電源をオフにするときのキャッシュの処理を示すフローチャート。
【図１０】順序保存領域を持たないキャッシュの４ウェイの揮発性メモリーと６ウェイの不揮発性メモリーに対応づけられたＬＲＵ領域が記憶するデータの例。
【発明を実施するための形態】
【０００７】
まず、本発明に至った経緯について説明する。例えば、揮発性メモリーと揮発性メモリーよりも容量の多い不揮発性メモリーを有するキャッシュシステムを考える。この揮発性メモリーと不揮発性メモリーはいずれもセットアソシアティブ（Set Associative）キャ
ッシュであって、双方のライン数は同じで、ウェイ数が異なるとする。このキャッシュシステムでは、不揮発性メモリーの書き込み速度による性能劣化を抑えるために、書き込み要求を受け取った場合には揮発性メモリーに書き込む。そして、参照要求を受け取った場合には揮発性メモリーと不揮発性メモリーのいずれか、該当するデータが格納されている方からデータを読み出す。
【０００８】
ただし、このキャッシュシステムに書き込み要求がなされたときに、書き込み要求がなされたデータを書き込むべき揮発性メモリーのライン上に空きが無い場合がある。そこで、この場合には、揮発性メモリーに記憶されているデータの中で未使用時間が最も長いデータ（データＡと称する）を不揮発性メモリーに記憶させ、データＡが格納されていた揮発性メモリーの領域上に書き込み要求がなされたデータを格納する。
【０００９】
しかしながら、不揮発性メモリーにデータを格納しようとしたときに、不揮発性メモリーの同一ラインにも空きが無い場合がある。このとき、不揮発性メモリーに記憶されているデータの中で、未使用時間が最も長いデータ（データＢと称する）が格納されている領域上にデータＡを上書きすることが考えられる。しかしながら、不揮発性メモリーに記憶されているデータＢは、揮発性メモリーに記憶されていたデータＡよりも未使用時間が短い場合がある。
【００１０】
図１０に一例を示す。図１０では、４ウェイの揮発性メモリーと６ウェイの不揮発性メモリーの同一ラインを例示している。ここで、図１０の丸括弧で表す数字が大きいもの程、未使用時間の長いデータであるとする。揮発性メモリーと不揮発性メモリーの各ウェイに対応づけて図１０に示すようにＬＲＵ（Least Recently Used）を記憶している。その
ため、揮発性メモリーと不揮発性メモリーは、ＬＲＵを確認することによって、それぞれのメモリーごとに、１ライン中に記憶されたデータの未使用時間の長さの順番を知ることができる。しかし、このキャッシュシステムでは、揮発性メモリーに記憶されたデータと不揮発性メモリーデータに記憶されたデータの未使用時間のいずれが長いかを知ることができない。
【００１１】
図１０に示すようにＬＲＵが記憶された状態で、キャッシュシステムが書き込み要求を受けると、揮発性メモリーに空きが無いため、揮発性メモリーに記憶されているデータの中で未使用時間が最も長いデータ（図１０中では（１０）と示されているデータ）を不揮発性メモリーに記憶されているデータの中で未使用時間が最も長いデータ（図１０中では（８）と示されているデータ。（１０）のデータよりも未使用時間が短い）に上書きしてしまう。このように、不揮発性メモリーに格納されているデータを、より未使用時間の長い揮発性メモリーに格納されているデータで上書きすることによって、このキャッシュシステムのヒット率が低下し、処理時間の増大につながる。そこで、以下に示す実施形態では、揮発性メモリーに記憶された各データに対応付けて不揮発性メモリーデータに記憶されたデータと比較した未使用時間の長短を記憶するための保存領域を設ける。
【００１２】
（第１の実施形態）
図１は、本発明の実施形態に係る情報処理装置を示す構成図である。この情報処理装置は、例えば通信機器やＰＣやテレビなどであり、プロセッサ１０、メインメモリー２０、ハードディスク３０、入出力装置４０が内部インタフェースで接続されている。また、メインメモリー２０には不揮発性メモリー５０が接続されている。
【００１３】
プロセッサ１０は、プロセッサエレメント（ＰＥ）１１とキャッシュ１２とを含み、プロセッサエレメント１１には、演算を行うコア１３やＬ１キャッシュと呼ばれる高速な記憶装置などが含まれる。本実施形態に係るプロセッサ１０は、プロセッサ１０の稼働状況に応じてプロセッサ電源のオン・オフを繰り返すことによって、プロセッサ１０の消費電力削減を行う。
【００１４】
キャッシュ１２は、揮発性メモリーを有する揮発性キャッシュ部１４と、不揮発性メモリーを有する不揮発性キャッシュ部１５を含む。キャッシュ１２は、一時的にプロセッサ電源をオフにする際には、揮発性キャッシュ部１４の揮発性メモリーに記憶されているデータを不揮発性キャッシュ部１５の不揮発性メモリーに退避させてデータの消失を防ぎ、プロセッサ電源を再度立ち上げた直後には、不揮発性キャッシュ部１５の不揮発性メモリーに保存されているデータを使用して動作する。なお、以下の説明では、揮発性キャッシュ部１４と不揮発性キャッシュ部１５は、いずれもセットアソシアティブキャッシュであるとして説明する。
【００１５】
図２は、キャッシュ１２の構成を示すブロック図である。キャッシュ１２は、前述の揮発性キャッシュ部１４、不揮発性キャッシュ部１５のほかに、マルチプレクサ１２１と制御部１２２を有する。
【００１６】
揮発性キャッシュ部１４は、揮発性メモリー１４１、ＬＲＵ領域１４２、ＬＲＵ更新回路１４３、順序保存領域１４４、更新演算回路１４５を含む。
【００１７】
揮発性メモリー１４１は、例えばＳＲＡＭ（Static Random Access Memory）などであ
る。揮発性メモリー１４１には、プロセッサエレメント１１からキャッシュ１２への書き込み要求がなされているデータかメインメモリー２０等、上位の記憶媒体から取り出されたデータを格納することができる。プロセッサエレメント１１からの書き込み要求がなされるデータは、例えば、プロセッサエレメント１１で演算処理に使用されたデータである。
【００１８】
ＬＲＵ領域１４２は、揮発性メモリー１４１に記憶された各データに対応付けて、同一ラインに記憶されたウェイ数分のデータの中での未使用時間の長短に関する順番を表すデータを記憶する。以降では、ＬＲＵ領域１４２の各データが、未使用時間が短いデータから順に数字”１”、”２”、”３”、・・・が設定されるとして説明する。ＬＲＵ更新回路１４３は、揮発性メモリー１４１に記憶されたデータが参照または書き込みされたときに、ＬＲＵ領域１４２に記憶されたデータの更新を行う。
【００１９】
順序保存領域１４４は、揮発性メモリー１４１に記憶された各データに対応付けられており、不揮発性キャッシュ部１５の不揮発性メモリー１５１に記憶されたデータの未使用時間と揮発性メモリー１４１に記憶されたデータの未使用時間の関係を示すデータを記憶する。具体的には、順序保存領域１４４は、揮発性メモリー１４１の各データに対して、それぞれのデータが使用（参照または書き込み）された後に使用（参照）された、不揮発性メモリー１５１に記憶されているデータの数に応じたデータを記憶する。
【００２０】
更新演算回路１４５は、揮発性メモリー１４１に記憶されたデータが使用された場合と、不揮発性メモリー１５１に記憶されたデータが使用されたことを示す信号を不揮発性キャッシュ部１５から受けた場合に、順序保存領域１４４に記憶されたデータの更新を行う。
【００２１】
不揮発性キャッシュ部１５は、不揮発性メモリー１５１、ＬＲＵ領域１５２、ＬＲＵ更新回路１５３を含む。
【００２２】
不揮発性メモリー１５１は、例えば磁気抵抗メモリー（ＭＲＡＭ：Megnetoresistive Random Access Memory）、強誘電体メモリー（ＦｅＲＡＭ：Ferroelectric Random Access Memory）、抵抗変化型メモリー（ＲｅＲＡＭ：Resistance Random Access Memory）、相変化メモリー（ＰＲＡＭ：Phase change RAM）などである。不揮発性メモリー１５１としてＭＲＡＭを用いた場合、他の不揮発性メモリーと比較して、書き換え耐性が高く、書き込みスピードも速い。また、ＦｅＲＡＭを不揮発性メモリー１５１として用いた場合は、ＦｅＲＡＭは、ＭＲＡＭとほぼ同じ程度の書き換え耐性を有し、既存の集積回路の作成プロセスと相性が良いため、製造が容易である。不揮発性メモリー１５１は、揮発性メモリー１４１と同じライン数を有し、揮発性メモリー１４１よりもウェイ数が多い。不揮発性メモリー１５１には、揮発性キャッシュ部１４から出力されたデータを格納することができる。
【００２３】
ＬＲＵ領域１５２は、不揮発性メモリー１５１に記憶された各データに対応付けて、同一ラインに記憶されたウェイ数分のデータの中での未使用時間の長短に関する順番を表すデータを記憶する。以降では、ＬＲＵ領域１５２の各データが、未使用時間が短いデータから順に数字”１”、”２”、”３”、・・・が設定されるとして説明する。ＬＲＵ更新回路１５３は、不揮発性メモリー１５１に記憶されたデータが参照または書き込みされたときに、ＬＲＵ領域１５２に記憶されたデータの更新を行う。
【００２４】
マルチプレクサ１２１は、制御部１２２の制御に応じて、揮発性キャッシュ部１４から出力されるデータと不揮発性キャッシュ部１５から出力されるデータのいずれか一方をプロセッサエレメント１１へ出力する。
【００２５】
制御部１２２は、揮発性キャッシュ部１４、不揮発性キャッシュ部１５の制御を行う。
【００２６】
また、制御部１２２は、揮発性キャッシュ部１４、不揮発性キャッシュ部１５から取得したアドレスヒットの状態とプロセッサエレメント１１から出力された要求の種類に応じて、マルチプレクサ１２１の出力を制御する。
【００２７】
図３は、キャッシュ１２がプロセッサエレメント１１から参照要求を受けたときの処理を示すフローチャートである。キャッシュ１２がプロセッサエレメント１１から参照要求を受けると（Ｓ１０）、参照が要求されたアドレスのデータが揮発性メモリー１４１に存在するか否かを確認する（Ｓ１１）。
【００２８】
当該データが揮発性メモリー１４１に格納されている場合（Ｓ１１のＹｅｓ）、そのデータを揮発性メモリー１４１から読み出してマルチプレクサ１２１へ送る（Ｓ１２）。そして、揮発性キャッシュ部１４から制御部１２２に対して、揮発性メモリー１４１のデータを使用したことを示す信号（Ｃａｓｈ  Ｕｓｅ信号”１”）を出力する（Ｓ１３）。制御部１２２は、揮発性メモリー１４１から受け取ったＣａｓｈ  Ｕｓｅ信号に基づいてマルチプレクサ１２１を制御し、揮発性メモリー１４１から読み出したデータをマルチプレクサ１２１から出力させる。
【００２９】
また、揮発性キャッシュ部１４では、更新演算回路１４５が、参照された揮発性メモリー１４１のデータに対応する順序保存領域１４４のデータをリセットする（Ｓ１４）。なお、本実施形態では、順序保存領域１４４のデータを”１”にすることがリセットに該当するとして説明する。
【００３０】
さらに、ＬＲＵ更新回路１４３が、ＬＲＵ領域１４２に記憶されたデータを更新する（Ｓ１５）。具体的には、ステップＳ１２で参照されたデータに対応するＬＲＵ領域１４２のデータを、最も未使用時間が短いことを示すデータ”１”とし、それ以外のＬＲＵ領域１４２のデータは、更新前のデータに基づいて未使用時間が短いものから順に”２”、”３”、・・・となるように更新する。
【００３１】
一方、キャッシュ１２がプロセッサエレメント１１から参照要求を受けたときに、当該データが揮発性メモリー１４１に格納されておらず、さらに不揮発性メモリー１５１にも格納されていない場合（Ｓ１６のＮｏ）、キャッシュ１２よりも上位の記憶媒体（例えば、上位キャッシュやメインメモリー２０）に対してデータを要求する（Ｓ１７）。そして、上位の記憶媒体から得られたデータを揮発性メモリー１４１へ書き込むための処理を行う（Ｓ１８）。揮発性メモリー１４１へデータを書き込むための処理については、後ほど図４を用いて説明する。
【００３２】
キャッシュ１２がプロセッサエレメント１１から参照要求を受けたときに、当該データが揮発性メモリー１４１に格納されておらず、不揮発性メモリー１５１に格納されている場合（Ｓ１６のＹｅｓ）、そのデータを不揮発性メモリー１５１から読み出してマルチプレクサ１２１へ送る（Ｓ１９）。そして、不揮発性キャッシュ部１５から制御部１２２および揮発性キャッシュ部１４に対して、不揮発性メモリー１５１のデータを使用したことを示す信号（Ｃａｓｈ  Ｕｓｅ信号”１”）を出力する（Ｓ２０）。またこの時、不揮発性メモリー１５１から読み出したデータと対応づけてＬＲＵ領域１５２に記憶されているデータを揮発性キャッシュ部１４へ出力する。
【００３３】
制御部１２２は、不揮発性メモリー１５１から受け取ったＣａｓｈ  Ｕｓｅ信号に基づいてマルチプレクサ１２１を制御し、不揮発性メモリー１５１から読み出したデータをマルチプレクサ１２１から出力させる。
【００３４】
不揮発性キャッシュ部１５からＣａｓｈ  Ｕｓｅ信号とＬＲＵ領域１５２に記憶されたデータを受け取った揮発性キャッシュ部１４では、更新演算回路１４５が、順序保存領域１４４に記憶されたデータを更新する（Ｓ２１）。具体的には、データが参照された不揮発性メモリー１５１のラインと同じラインの揮発性メモリー１４１のデータに対応付けられた順序保存領域１４４の各データのうち、不揮発性メモリー１５１から読み出したデータに対応付けられたＬＲＵ領域１５２の値以下のデータに対して、１を加える。
【００３５】
ステップＳ２１の処理の意味は、以下のとおりである。順序保存領域１４４に記憶されたデータが、不揮発性メモリー１５１から読み出したデータに対応付けられたＬＲＵ領域１５２の値以下のデータであるということは、その不揮発性メモリー１５１から読み出したデータが、ステップＳ１９開始前には、順序保存領域１４４に対応付けられた揮発性メモリー１４１のデータよりも未使用時間が長かったことを示す。ステップＳ１９で、この不揮発性メモリー１５１のデータが参照され、揮発性メモリー１４１に記憶されたデータよりも未使用時間が短くなる。順序保存領域１４４のデータは、揮発性メモリー１４１のデータよりも未使用時間が短い不揮発性メモリー１５１のデータの数（本実施形態では、ウェイ数）を表している。そのため、揮発性メモリー１４１のデータに対応付けたＬＲＵ領域１５２のデータに１を加える。
【００３６】
不揮発性キャッシュ部１５のＬＲＵ更新回路１５３は、ＬＲＵ領域１５２に記憶されたデータを更新する（Ｓ２２）。具体的には、ステップＳ１９で参照されたデータに対応するＬＲＵ領域１５２のデータを、最も未使用時間が短いことを示すデータ”１”とし、それ以外のＬＲＵ領域１５２のデータは、更新前のデータに基づいて未使用時間が短いものから順に”２”、”３”、・・・となるように更新する。
【００３７】
図４は、キャッシュ１２が揮発性メモリー１４１への書き込み要求を受けたときの処理を示すフローチャートである。揮発性メモリー１４１への書き込みが発生する場合とは、プロセッサエレメント１１から書き込み要求を受けた場合や、図３のステップＳ１８で説明したように、上位の記憶媒体のデータを参照した場合である。
【００３８】
キャッシュ１２が揮発性メモリー１４１への書き込み要求を受けると（Ｓ５０）、書き込みが要求されたデータのアドレスに基づいて揮発性メモリー１４１を検索し、そのアドレスのデータが揮発性メモリー１４１にすでに格納されているか否かを判断する（Ｓ５１）。
【００３９】
当該データが揮発性メモリー１４１にすでに格納されている場合（Ｓ５１のＹｅｓ）、書き込み要求されたデータを揮発性メモリー１４１に書き込む（Ｓ５２）。なお、ステップＳ５１にて揮発性メモリー１４１にデータが格納されていることが確認された場合、書き込み要求されたデータは、ステップＳ５１にて検索された揮発性メモリー１４１のデータに上書きする。
【００４０】
そして、揮発性キャッシュ部１４から制御部１２２に対して、揮発性メモリー１４１のデータを使用したことを示す信号（Ｃａｓｈ  Ｕｓｅ信号”１”）を出力する（Ｓ５３）。また、揮発性メモリー１４１に書き込まれたデータに対応する順序保存領域１４４のデータをリセットする（Ｓ５４）。
【００４１】
さらに、ＬＲＵ更新回路１４３が、ＬＲＵ領域１４２に記憶されたデータを更新する（Ｓ５５）。具体的には、ステップＳ５２で書き込まれたデータに対応するＬＲＵ領域１４２のデータを、最も未使用時間が短いことを示すデータ”１”とし、それ以外のＬＲＵ領域１４２のデータは、更新前のデータに基づいて未使用時間が短いものから順に”２”、”３”、・・・となるように更新する。
【００４２】
書き込みが要求されたときに、書き込み要求されたデータと同じアドレスを有するデータが揮発性メモリー１４１に記憶されていない場合であっても（Ｓ５１のＮｏ）、揮発性メモリー１４１に空きがあれば（Ｓ５６のＮｏ）、ステップＳ５２〜Ｓ５５に示す揮発性メモリー１４１へのデータの書き込みに関する処理を行う。なお、書き込みが要求されたデータと同じアドレスを有するデータが記憶されておらず、揮発性メモリー１４１に空きがある場合、ステップＳ５２でのデータの書き込み先は、揮発性メモリー１４１の空き領域である。
【００４３】
一方、書き込みが要求されたときに、書き込み要求されたデータと同じアドレスを有するデータが揮発性メモリー１４１に記憶されておらず（Ｓ５１のＮｏ）、揮発性メモリー１４１に空きが無い場合（Ｓ５６のＹｅｓ）、要求されたデータを揮発性メモリー１４１に書き込むと、既に揮発性メモリー１４１に記憶されているデータのいずれかが上書きされる。そこで、ステップＳ５２〜Ｓ５５によって、揮発メモリー１４１への書き込みに関する処理を行う前に、ステップＳ５７〜Ｓ６３の処理を行う。
【００４４】
ステップＳ５７では、不揮発性メモリー１５１に、揮発性メモリー１４１内に記憶されているデータの中で未使用時間が最も長いデータ（データＡと称する）と同じアドレスを有するデータが記憶されているか否かを確認する。もし、データＡと同じアドレスを有するデータが不揮発性メモリー１５１に記憶されていれば（Ｓ５７のＹｅｓ）、不揮発性メモリー１５１に、データＡを書き込む（Ｓ５８）。なお、このように不揮発性メモリー１５１にデータＡと同じアドレスを有するデータが記憶されている場合には、そのデータにデータＡを上書きする。
【００４５】
そして、ＬＲＵ更新回路１５３がＬＲＵ領域１５２に記憶されたデータを更新する（Ｓ５９）。このとき、データＡに対応づけて順序保存領域１４４に記憶されたデータを用いてＬＲＵ領域１５２の更新を行う。つまり、ステップＳ５８で書き込まれたデータに対応するＬＲＵ領域１５２のデータを、データＡに対応づけて順序保存領域１４４に記憶された値とし、データＡに対応づけて順序保存領域１４４に記憶された値以上のＬＲＵ領域１５２に格納されている値に対して１を加算する。なお、このＬＲＵ領域１５２の更新方法は、順序保存領域１４４に記憶されるデータとＬＲＵ領域１５２に記憶されるデータの初期値が同じ数字であるため、ステップＳ５８で書き込まれたデータに対応するＬＲＵ領域１５２のデータを、データＡに対応づけて順序保存領域１４４に記憶された値としている。しかし、それぞれの初期値が異なっていても、データＡに対応づけて順序保存領域１４４に記憶された値に基づいてＬＲＵ領域１５２のデータを更新することができる。
【００４６】
このように、不揮発性メモリー１５１へ書き込みに関する処理が実行された後に、ステップＳ５２〜Ｓ５５によって、揮発性メモリー１４１への書き込み処理を行う。なお、ステップＳ５８〜Ｓ５９終了後にステップＳ５２にて揮発性メモリー１４１への書き込みを行う際には、不揮発性メモリー１５１へ記憶させたデータＡに対して、揮発性メモリー１４１への書き込み要求されたデータを上書きする。
【００４７】
一方、ステップＳ５７にて、不揮発性メモリー１５１に、データＡと同じアドレスを有するデータが記憶されていない場合、データＡを不揮発性メモリー１５１に書き込むと、既に不揮発性メモリー１５１に記憶されているデータのいずれかが上書きされてしまう可能性がある。そこで、ステップＳ６０〜Ｓ６３の処理を行う。
【００４８】
ステップＳ６０では、データＡに対応付けて順序保存領域１４４が記憶しているデータが、不揮発性メモリー１５１に保存可能なキャッシュデータ数よりも大きいか否かを判断する。上述のとおり、揮発性メモリー１４１の各データに対応づけて保存される順序保存領域１４４の各データは、揮発性メモリー１４１のデータが参照された場合もしくは書き込みされた場合にリセットされる。また、揮発性メモリー１４１のデータよりも未使用時間が長い不揮発性メモリー１５１のデータが参照されると、その揮発性メモリー１４１のデータに対応付けられた順序保存領域１４４のデータに１が加算される。つまり、順序保存領域１４４のデータは、対応する揮発性メモリー１４１のデータよりも未使用時間が短い不揮発性メモリー１５１のデータの数を、順序保存領域１４４のデータの初期値に加算した数を記憶する。
【００４９】
そのため、順序保存領域１４４のデータの初期値を１とすると、順序保存領域１４４に記憶されたデータが不揮発性メモリー１５１に保存可能なキャッシュデータ数よりも大きいことは、その順序保存領域１４４のデータに対応付けられた揮発性メモリー１４１のデータが、不揮発性メモリー１５１のいずれのデータよりも未使用時間が長いことを意味する。
【００５０】
そこで、データＡに対応付けて順序保存領域１４４が記憶しているデータが、不揮発性メモリー１５１に保存可能なキャッシュデータ数よりも大きい場合（Ｓ６０のＹｅｓ）、不揮発性メモリー１５１にデータＡを格納せずに、キャッシュ１２よりも上位の記憶媒体（上位のキャッシュやメインメモリー２０等）のデータを、データＡを用いて更新する（Ｓ６１）。そして、ステップＳ５２にて、揮発性メモリー１４１のデータＡが格納されている領域に書き込み要求されたデータを書き込み、ステップＳ５３〜Ｓ５４の処理を実行する。
【００５１】
ステップＳ６０で、データＡに対応付けて順序保存領域１４４が記憶しているデータが、不揮発性メモリー１５１に保存可能なキャッシュデータ数よりも小さい場合（Ｓ６０のＮｏ）、不揮発性メモリー１５１に格納されたデータのうち、最も未使用時間の長いデータの未使用時間よりも、データＡの未使用時間の方が短い。そこで、不揮発性メモリー１５１にデータＡを格納する。このとき、不揮発性メモリー１５１に空きがある場合には（Ｓ６２のＮｏ）、不揮発性メモリー１５１の空いている領域に揮発性メモリー１４１から出力されたデータＡを格納し（Ｓ５８）、ＬＲＵ更新回路１５３がＬＲＵ領域１５２に格納されているデータを更新する（Ｓ５９）。つまり、ステップＳ５８で書き込まれたデータに対応するＬＲＵ領域１５２のデータを、データＡに対応づけて順序保存領域１４４に記憶された値とし、データＡに対応づけて順序保存領域１４４に記憶された値以上のＬＲＵ領域１５２に格納されている値に対して１を加算する。
【００５２】
一方、ステップＳ６２にて、不揮発性メモリー１５１に空きが無いことが確認された場合（Ｓ６２のＹｅｓ）、ＬＲＵ領域１５２に格納されたデータを用いて不揮発性メモリー１５１に記憶されているデータの中で最も未使用時間が長いデータ（データＢと称する）を特定し、データＢを用いて、キャッシュ１２よりも上位の記憶媒体（上位のキャッシュやメインメモリー２０等）のデータを更新する（Ｓ６３）。そして、不揮発性メモリー１５１のデータＢが格納されている領域に揮発性メモリー１４１から出力されたデータＡを格納し（Ｓ５８）、ＬＲＵ更新回路１５３がＬＲＵ領域１５２に格納されているデータを更新する（Ｓ５９）。そして、ステップＳ５２にて、揮発性メモリー１４１のデータＡが格納されている領域に書き込み要求されたデータを書き込み、ステップＳ５３〜Ｓ５５の処理を実行する。
【００５３】
以上説明したように、揮発性メモリー１４１の各データに対して、それぞれのデータが使用された後に、不揮発性メモリー１５１に記憶されるいずれかのデータが使用された回数に応じたデータを記憶する順序保存領域１４４を設ける。そして、揮発性メモリー１４１に記憶されたデータのいずれかを揮発性メモリー１４１から読み出せない状態にする時（例えば異なるアドレスのデータを上書きする時）に、順序保存領域１４４に記憶したデータを用いて、揮発性メモリー１４１から読み出せない状態にするデータを不揮発性メモリー１５１へコピーする必要があるか否かを判断する。
【００５４】
例えば、図５に示すように４ウェイの揮発性メモリーと６ウェイの不揮発性メモリーに、丸括弧で表す数字が大きいものから順にデータを使用したとする。このとき、揮発性メモリーのデータに対応付けられた順序保存領域の値が、不揮発性メモリーのウェイ数”６”よりも大きい値”７”であるデータは、不揮発性メモリーに記憶されたいずれのデータよりも未使用時間が長いと判断することができる。このように、順序保存領域に記憶するデータを用いることで、不揮発性メモリー１５１に記憶されていたデータが、揮発性メモリー１４１に記憶されていた未使用時間の長いデータによって上書きされることを防ぐことができる。そのため、キャッシュ１２のヒット率低下を抑制することができる。
【００５５】
次に、図６を参照してプロセッサ１０の電源をオフにするときのキャッシュ１２の処理について説明する。プロセッサ１０の電源をオフにすると、揮発性メモリー１４１内に記憶されたデータが消える。そこで、揮発性メモリー１４１に記憶されたデータを不揮発性メモリー１５１や上位の記憶装置へ記憶させる。
【００５６】
まず、揮発性メモリー１４１のいずれかのデータを参照した状態で、参照したデータと同じアドレスを有するデータが不揮発性メモリー１５１中にあるか否かを確認する（Ｓ１０１）。不揮発性メモリー１５１中に当該データが存在すれば（Ｓ１０１のＹｅｓ）、不揮発性メモリー１５１のそのデータに揮発性メモリー１４１の参照データを上書きする（Ｓ１０６）。そして、ＬＲＵ更新回路１５３が、ＬＲＵ領域１５２のデータを更新する（Ｓ１０７）。このとき、参照された揮発性メモリー１４１のデータと対応づけて順序保存領域１４４に記憶されたデータを用いてＬＲＵ領域１５２の更新を行う。つまり、ステップＳ１０６で書き込まれたデータに対応するＬＲＵ領域１５２のデータを、参照された揮発性メモリー１４１のデータと対応づけて順序保存領域１４４に記憶された値とし、順序保存領域１４４に記憶された値以上のＬＲＵ領域１５２に格納されている値に対して１を加算する。
【００５７】
ステップＳ１０１にて不揮発性メモリー１５１中に揮発性メモリー１４１の参照データと同じアドレスを有するデータが無いと判断された場合（Ｓ１０１のＮｏ）、参照データに対応づけて順序保存領域１４４に記憶された値を読み出し、その値が不揮発性メモリー１５１の保存可能データ数よりも大きいか否かを判断する（Ｓ１０２）。
【００５８】
順序保存領域１４４に記憶された値が不揮発性メモリー１５１の保存可能データ数よりも大きい場合（Ｓ１０２のＹｅｓ）、参照されている揮発性メモリー１４１のデータは、不揮発性メモリー１５１に記憶されたどのデータよりも未使用時間が長いデータである。
【００５９】
そこで、メインメモリー２０など上位の記憶媒体に、参照されている揮発性メモリー１４１のデータを記憶する（Ｓ１０３）。
【００６０】
一方、順序保存領域１４４に記憶された値が不揮発性メモリー１５１の保存可能データ数以下の場合（Ｓ１０２のＮｏ）、不揮発性メモリー１５１に空きがあれば（Ｓ１０４のＮｏ）、不揮発性メモリー１５１の空き領域にデータを書き込む（Ｓ１０６）。そして、前述のとおり、ＬＲＵ更新回路１５３が、ＬＲＵ領域１５２のデータを変更する（Ｓ１０７）。
【００６１】
また一方、ステップＳ１０４で不揮発性メモリー１５１に空きが無いと判断された場合（Ｓ１０４のＹｅｓ）、不揮発性メモリー１５１に記憶されたデータ中最も未使用時間の長いデータを選出して、このデータを上位の記憶媒体に記憶させ（Ｓ１０５）、このデータ上に揮発性メモリーのデータを書き込む（Ｓ１０６）。そして、前述のとおり、ＬＲＵ更新回路１５３が、ＬＲＵ領域１５２のデータを変更する（Ｓ１０７）。
【００６２】
ステップＳ１０３またはステップＳ１０７の処理が終了すると、揮発性メモリー１４１の全てのデータを参照し終えたか否かを判断する（Ｓ１０８）。
【００６３】
揮発性メモリー１４１の全てのデータを参照し終えていない場合（Ｓ１０８のＮｏ）、揮発性メモリー１４１の次のデータに参照先を移動し（Ｓ１０９）、ステップＳ１０１からステップＳ１０８の処理を行う。ステップＳ１０８で、揮発性メモリー１４１の全てのデータを参照し終えた場合（Ｓ１０８のＹｅｓ）、キャッシュ１２の電源をオフにする（Ｓ１１０）。
【００６４】
このように、プロセッサ１０の電源をオフにするときに、揮発性メモリー１４１に記憶されたデータの中で、不揮発性メモリー１５１よりも未使用時間が短いものを不揮発性メモリー１５１に記憶させることで、次にプロセッサ１０の電源をオンにしたときに、キャッシュ１２のヒット率が低減することを抑制することができる。
【００６５】
（第２の実施形態）
図７は、本発明の第２の実施形態に係る情報処理装置のキャッシュを示すブロック図である。図７では、図２に示したキャッシュ１２と同じ構成要素については同じ記号を付し、詳細な説明を省略する。
【００６６】
図７に示すキャッシュ１２ａの揮発性キャッシュ部１４ａは、コピー済み記憶領域１４６を有する。通常動作中、プロセッサエレメント１１からキャッシュ１２ａに対する要求は、常に発生しているわけではない。頻繁に要求が発生する時と要求が発生しない時とが交互に生じる。そこで、要求が発生しないときに、キャッシュ１２ａ内で揮発性メモリー１４１に格納されたデータを不揮発性メモリー１５１にコピーする。
【００６７】
コピー済み記憶領域１４６は、揮発性メモリー１４１の各データに対して、そのデータがすでに不揮発性メモリー１５１へコピーされたか否かを示すフラグを記憶する。コピー済み記憶領域１４６に記憶するフラグは、不揮発性メモリー１５１へ揮発性メモリー１４１のデータをコピーしたときに、コピーしたデータに対応づけられたコピー済み記憶領域１４６の記憶データをコピー済みであることを示すフラグに変更する。
【００６８】
また、メインメモリー２０など上位の記憶装置から取得されたデータや、プロセッサエレメント１１から書き込み要求されたデータを、揮発性メモリー１４１に対して書き込んだときに、書き込んだデータに対応して記憶されるコピー済み記憶領域１４６のデータをリセットする。
【００６９】
このように設定されるコピー済み記憶領域１４６の値は、揮発性メモリー１４１に記憶されたデータが消える状況が発生するときに、揮発性メモリー１４１に記憶されたデータを不揮発性メモリー１５１へコピーする処理を行うか否かを判断するために用いる。
【００７０】
第２の実施形態に係るキャッシュ１２ａがプロセッサエレメント１１から参照要求を受けたときの処理フローは、第１の実施形態に係るキャッシュ１２にて説明した処理（図３参照）と同様である。
【００７１】
図８は、キャッシュ１２ａが揮発性メモリー１４１への書き込み要求を受けたときの処理フローチャートである。図８中、図４と同じステップは同じ記号を付す。揮発性メモリー１４１への書き込み要求があり、そのデータと同じアドレスを有するデータが揮発性メモリー１４１に記憶されておらず（Ｓ５１のＮｏ）、揮発性メモリー１４１に空きが無い場合（Ｓ５６のＹｅｓ）、揮発性メモリー１４１が記憶しているデータの中で最も未使用時間が長いデータＡを選出する。そして、選出したデータＡに対応付けられてコピー済み記憶領域１４６に記憶されたフラグが、コピー済みであることを示すフラグである場合には（Ｓ２０３のＹｅｓ）、不揮発性メモリー１５１や上位の記憶媒体にデータＡを改めて記憶させる処理を行う必要が無いため、ステップＳ５２〜Ｓ２０２の処理を行う。一方、データＡに対応付けられてコピー済み記憶領域１４６に記憶されたフラグが、コピー済みであることを示すフラグでない場合には（Ｓ２０３のＮｏ）、ステップＳ５２〜Ｓ２０２の処理を行う前に、ステップＳ５７〜Ｓ６１の処理を実行する。
【００７２】
図９は、プロセッサ１０の電源をオフにするときのキャッシュ１２ａの処理を示すフローチャートである。図９中、図６と同じステップは同じ記号を付す。キャッシュ１２ａでは、揮発性メモリー１４１のデータに対応づけて記憶されているコピー済み記憶領域１４６のフラグが、コピー済みであることを示すフラグである場合には（Ｓ２０４のＹｅｓ）、ステップＳ１０１〜Ｓ１０７の処理を行わず、次のデータに参照先を移動させるか（Ｓ１０９）、キャッシュ１２ａの電源をオフにする（Ｓ１１０）。
【００７３】
このように、プロセッサエレメント１１からの要求が発生しないときに、キャッシュ１２ａ内で揮発性メモリー１４１に格納されたデータを不揮発性メモリー１５１にコピーし、揮発性メモリー１４１のデータが不揮発性メモリー１５１へのコピー済みであるか否かを記憶するフラグを設けることで、プロセッサエレメント１１からの要求が発生したときに揮発性メモリー１４１から不揮発性メモリー１５１へデータをコピーする頻度が減り、処理時間を短縮することができる。また、プロセッサ１０の電源をオフにするまでにかかる実行時間が短くなり、より長いパワーゲーティング時間を確保することによる低消費電力化が可能となる。
【００７４】
本発明の実施形態は、上記実施形態とその変形例に限定されることはなく、本発明の要旨を逸脱しない範囲において、適宜変更しても良い。
【００７５】
例えば、上記実施形態では、揮発性メモリーが不揮発性メモリーよりも容量が小さいとして説明したが、双方の容量は同じでも良いし、不揮発性メモリーの方が揮発性メモリーよりも容量が小さくても良い。
【００７６】
また、上記実施形態では、キャッシュがセットアソシアティブキャッシュであるとして説明したが、フルアソシアティブ方式やダイレクトマップ方式のキャッシュにも適用することができる。
【００７７】
また、上記実施形態では、順序保存領域１４４のデータは、揮発性メモリー１４１のデータよりも未使用時間が短い不揮発性メモリー１５１のデータの数を表しているとして説明したが、揮発性メモリー１４１のデータよりも未使用時間が長い不揮発性メモリー１５１のデータの数を表しても良い。例えば、順序保存領域の初期値を不揮発性メモリー１５１の保存可能データ数とし、揮発性メモリー１４１のデータよりも未使用時間が長い不揮発性メモリー１５１のデータが参照されると順序保存領域のデータから１を減算すれば、このようなキャッシュシステムを実現することができる。このキャッシュシステムでは、順序保存領域のデータが１以上であれば、揮発性メモリー１４１のデータを不揮発性メモリー１５１へ記憶させることができる。
【符号の説明】
【００７８】
１０…プロセッサ、  １１…プロセッサエレメント、  １２，１２ａ…キャッシュ、  ２０…メインメモリー、  ３０…ハードディスク、  ４０…入出力装置、  ５０…不揮発性メモリー、  １３…コア、  １４，１４ａ…揮発性キャッシュ部、  １５…不揮発性キャッシュ部、  １２１…マルチプレクサ、  １２２…制御部、  １４１…揮発性メモリー、  １４２…ＬＲＵ領域、  １４３…ＬＲＵ更新回路、  １４４…順序保存領域、  １４５…更新演算回路、  １４６…コピー済み記憶領域、  １５１…不揮発性メモリー、  １５２…ＬＲＵ領域、  １５３…ＬＲＵ更新回路
【図１】
0005627521.tif 000002
【図２】
0005627521.tif 000003
【図３】
0005627521.tif 000004
【図４】
0005627521.tif 000005
【図５】
0005627521.tif 000006
【図６】
0005627521.tif 000007
【図７】
0005627521.tif 000008
【図８】
0005627521.tif 000009
【図９】
0005627521.tif 000010
【図１０】
0005627521.tif 000011