(57)【要約】      （修正有）【課題】十分な消費電力の削減が図ることができるキャッシュメモリ装置を提供する。【解決手段】キャッシュメモリ装置１００ａは、記憶装置のデータをキャッシュする。キャッシュメモリ装置１００ａは、記憶部１１０ａと、制御部１２０ａと、を備える。記憶部１１０ａは、複数のキャッシュラインを有する。制御部１２０ａは、前記複数のキャッシュラインのうち、前記記憶装置に書き込まれていないデータを含むダーティラインの数が予め定めた所定数を超える場合に、前記ダーティラインのデータを前記記憶装置に書き込む。【選択図】図４
2013065150.tif 000002
【特許請求の範囲】
【請求項１】
記憶装置のデータをキャッシュするキャッシュメモリ装置であって、
複数のキャッシュラインを有する記憶部と、
前記複数のキャッシュラインのうち、前記記憶装置に書き込まれていないデータを含むダーティラインの数が予め定めた所定数を超える場合に、前記ダーティラインのデータを前記記憶装置に書き込む制御部と、を備えることを特徴とするキャッシュメモリ装置。
【請求項２】
前記記憶部は、任意の数のキャッシュラインを有する第１記憶部と、前記所定数のキャッシュラインを有する第２記憶部と、を有し、
前記制御部は、前記第２記憶部のキャッシュラインに対してのみデータの書き込みを行い、前記第２記憶部の前記ダーティラインを再利用する場合に、前記ダーティラインのデータを前記記憶装置に書き込むことを特徴とする請求項１に記載のキャッシュメモリ装置。
【請求項３】
前記制御部は、前記複数のキャッシュラインのいずれかにデータの書き込みを行った結果、前記ダーティラインの数が前記所定数を超える場合に、前記ダーティラインのデータを前記記憶装置に書き込むことを特徴とする請求項１に記載のキャッシュメモリ装置。
【請求項４】
前記制御部は、任意のタイミングで前記ダーティラインの数をカウントし、カウントした前記ダーティラインの数が前記所定数を超えている場合に、前記ダーティラインのデータを前記記憶装置に書き込むことを特徴とする請求項１に記載のキャッシュメモリ装置。
【請求項５】
前記記憶部は、前記所定数のキャッシュラインを有する第１記憶部と、任意の数のキャッシュラインを有する第２記憶部と、を有し、
前記制御部は、前記第１記憶部を制御する第１制御部と、前記第２記憶部を制御する第２制御部と、を有し、
前記第１制御部は、前記第１記憶部のキャッシュラインに対してのみデータの書き込みを行い、前記第１記憶部のダーティラインを再利用する場合に、前記ダーティラインのデータを前記記憶装置に書き込むことを前記第２制御部に指示し、
前記第２制御部は、前記第１制御部からの指示に応じて、前記ダーティラインのデータを前記記憶装置に書き込むことを特徴とする請求項１に記載のキャッシュメモリ装置。
【請求項６】
前記記憶装置は、不揮発性の２次キャッシュメモリ装置であることを特徴とする請求項１〜５のいずれか一項に記載のキャッシュメモリ装置。
【請求項７】
前記ダーティラインのデータを一時的に保持するライトバッファを備え、
前記制御部は、前記ダーティラインのデータを前記ライトバッファに出力し、任意のタイミングで前記ライトバッファから前記記憶装置に前記ダーティラインのデータを書き込むことを特徴とする請求項１〜６のいずれか一項に記載のキャッシュメモリ装置。
【請求項８】
記憶装置にアクセスしてプログラムを実行するプロセッサコアと、
前記記憶装置のデータをキャッシュするキャッシュメモリ装置と、を備え、
前記キャッシュメモリ装置は、
複数のキャッシュラインを有する記憶部と、
前記複数のキャッシュラインのうち、前記記憶装置に書き込まれていないデータを含むダーティラインの数が予め定めた所定数を超える場合に、前記ダーティラインのデータを前記記憶装置に書き込む制御部と、を備えることを特徴とするプロセッサ。
【請求項９】
記憶装置と、
前記記憶装置にアクセスしてプログラムを実行するプロセッサコアと、
前記記憶装置のデータをキャッシュするキャッシュメモリ装置と、を備え、
前記キャッシュメモリ装置は、
複数のキャッシュラインを有する記憶部と、
前記複数のキャッシュラインのうち、前記記憶装置に書き込まれていないデータを含むダーティラインの数が予め定めた所定数を超える場合に、前記ダーティラインのデータを前記記憶装置に書き込む制御部と、を備えることを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施の形態は、キャッシュメモリ装置、プロセッサ、および情報処理装置に関する。
【背景技術】
【０００２】
情報処理装置において、プロセッサは、外部からのデータの入力、入力されたデータの処理、処理した結果の外部への出力、を繰り返すことで、プログラムを実行する。プロセッサが外部からのデータの入力を待機しているとき、あるいはタイマに設定した時刻が経過するのを待機しているときなど、他に実行すべき処理がない場合、プロセッサは低消費電力で待機するモード（以下、「待機モード」という。）に入る。待機モード中のプロセッサは、外部からデータが入力されたことや、タイマに設定した時刻が経過したことなどが割り込みによって通知されると、再びプログラムを実行するモード（以下、「実行モード」という。）に入り、割り込み処理を開始する。
【０００３】
待機モード中のプロセッサは、プロセッサ内部の各種モジュール（演算器やキャッシュメモリなど）に対して、クロックの周波数を低くしたり、クロックの供給を停止したり、電源の供給を停止するなどの手段によって、消費電力を削減する。このとき、クロックや電源の供給を停止するモジュールの数が多いほど、消費電力の削減量が大きくなる。特に、高集積化した現代のプロセッサでは、リーク電流などの影響でキャッシュメモリの消費電力は大きい。そのため、待機モード中にキャッシュメモリに対する電源の供給を停止すれば、消費電力の大幅な削減が期待できる。
【０００４】
キャッシュメモリは、プロセッサによるデータの書き込み方式の違いにより、ライトスルー型とライトバック型に大別される。ライトスルー型のキャッシュメモリを持つプロセッサでは、プロセッサによるメインメモリへのデータの書き込みは、キャッシュメモリ内への書き込みとメインメモリへの書き込みが同時に行われる。これに対して、ライトバック型のキャッシュメモリを持つプロセッサでは、プロセッサによるメインメモリへのデータの書き込みは、キャッシュメモリ内への書き込みだけで完了し、そのデータは後のしかるべきタイミングでメインメモリに書き込まれる。
【０００５】
ライトバック型のキャッシュメモリを持つプロセッサでは、キャッシュメモリへのデータの書き込みが終われば、メインメモリへの書き込みが完了することを待つことなく、プログラムの実行を続けることができる。また、プロセッサが同じアドレスのデータあるいはキャッシュメモリ内の同じラインのデータを複数回書き込んだ場合には、これらのデータをメインメモリに対してまとめて書き込むことができる。そのため、一般にライトバック型のキャッシュメモリの方が、ライトスルー型のキャッシュメモリに比べて、処理効率が高くなって消費電力の削減にもつながる。
【０００６】
しかし、ライトバック型のキャッシュメモリを持つプロセッサでは、キャッシュメモリに対する電源供給を停止する際に、キャッシュメモリ内にのみ書き込まれてメインメモリに書き込まれていないデータをメインメモリに書き込んだ後に、キャッシュメモリに対する電源の供給を遮断する必要がある。このため、ライトバック型のキャッシュメモリは、実行モードから待機モードへの切り替えに要するコスト（時間や消費電力）が、ライトスルー型のキャッシュメモリに比べて大きい。キャッシュメモリに対する電源の供給を停止する待機モードへの切り替え頻度が少ない場合には、待機モードへ入るためのコストは無視できるが、その頻度が大きくなると無視できなくなる。例えば、消費電力の大幅な削減を実現するために、プロセッサが数ミリ秒乃至は数十ミリ秒単位のごく短い待機時間でもキャッシュメモリに対する電源の供給を停止させる待機モードに入るようにした場合、実行モードから待機モードへの切り替えが頻繁に発生し、切り替えに要するコストが大きいために、期待通りの消費電力の削減が図れない。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００９−６４４５６号公報
【非特許文献】
【０００８】
【非特許文献１】砂田  徹也ら著“細粒度パワーゲーティングを制御するＯＳの資源管理方式”、情報処理学会研究報告、Vol.2010-OS-114  No.8,  2010
【発明の概要】
【発明が解決しようとする課題】
【０００９】
従来技術では、十分な消費電力の削減が図れない。
【課題を解決するための手段】
【００１０】
実施形態のキャッシュメモリ装置は、記憶装置のデータをキャッシュする。このキャッシュメモリ装置は、記憶部と、制御部と、を備える。記憶部は、複数のキャッシュラインを有する。制御部は、前記複数のキャッシュラインのうち、前記記憶装置に書き込まれていないデータを含むダーティラインの数が予め定めた所定数を超える場合に、前記ダーティラインのデータを前記記憶装置に書き込む。
【図面の簡単な説明】
【００１１】
【図１】実施形態の情報処理装置の外観図。
【図２】実施形態の情報処理装置のハードウェア構成図。
【図３】実施形態のキャッシュメモリ装置の概要を説明する図。
【図４】第１実施例のキャッシュメモリ装置の構成図。
【図５】第１実施例の読み出し制御部による処理のフローチャート。
【図６】第１実施例の書き込み制御部による処理のフローチャート。
【図７】第２実施例のキャッシュメモリ装置の構成図。
【図８】第２実施例の読み出し制御部による処理のフローチャート。
【図９】第２実施例の書き込み制御部による処理のフローチャート。
【図１０】第３実施例のキャッシュメモリ装置の構成図。
【図１１】第３実施例の読み出し制御部による処理のフローチャート。
【図１２】第３実施例の書き込み制御部による処理のフローチャート。
【図１３】第３実施例のライトバッファの動作のフローチャート。
【図１４】第４実施例のキャッシュメモリ装置の構成図。
【図１５】第４実施例の書き込み制御部による処理のフローチャート。
【図１６】第４実施例の書き戻し制御部による処理のフローチャート。
【図１７】第４実施例の書き戻し制御部による処理のフローチャート。
【図１８】第５実施例のキャッシュメモリ装置の構成図。
【図１９】第５実施例の書き込み制御部による処理のフローチャート。
【図２０】第５実施例の書き戻し制御部による処理のフローチャート。
【図２１】第５実施例の書き戻し制御部による処理のフローチャート。
【図２２】第６実施例のキャッシュメモリ装置の概要を説明する図。
【図２３】第６実施例のキャッシュメモリ装置の構成図。
【図２４】第６実施例の第１読み出し制御部による処理のフローチャート。
【図２５】第６実施例の第１書き込み制御部による処理のフローチャート。
【図２６】第６実施例の第１書き込み制御部による処理のフローチャート。
【図２７】第６実施例の第２読み出し制御部による処理のフローチャート。
【図２８】第６実施例の第２書き込み制御部による処理のフローチャート。
【図２９】実施形態のプロセッサのバリエーションを示す図。
【発明を実施するための形態】
【００１２】
以下、実施形態のキャッシュメモリ装置、プロセッサ、および情報処理装置について、図面を参照して説明する。
【００１３】
（情報処理装置）
図１は、本実施形態の情報処理装置１の外観を示す図である。この情報処理装置１は、タブレット型の情報端末として構成されている。情報処理装置１は、端末表面に表示部２ａを備える。表示部２ａには、例えば、低消費電力の反射型液晶ディスプレイ、あるいは電子ペーパーなどが用いられる。また、情報処理装置１は、端末表面の表示部２ａ以外の部分に太陽電池３を備える。また、情報処理装置１は、表示部２ａの表面にポインティングデバイスとして機能するタッチパネル２ｂを備える。さらに、情報処理装置１は、端末表面の表示部２ａと重ならない位置にキーボード４を備える。キーボード４は、太陽電池３の表面に透明なタッチパネル２ｂを重ねることで実現してもよい。また、透明な素材または遮光性の部分の少ない素材を用いた機械式のキーボード４として実現してもよい。
【００１４】
図２は、本実施形態の情報処理装置１のハードウェア構成例を示すブロック図である。情報処理装置１は、主なハードウェア構成として、プロセッサ１０と、メインメモリ（記憶装置）５と、２次ストレージ６と、太陽電池３と、蓄電部７と、電源制御部８と、表示部２ａと、タッチパネル２ｂと、キーボード４と、通信インタフェース（通信Ｉ／Ｆ）９と、を備えている。
【００１５】
情報処理装置１は、太陽電池３で発電した電力で動作する。しかし、太陽電池３で発電する電力だけでは動作時（何らかの処理を実行しているとき）の情報処理装置１全体のピークの消費電力をまかなえない。このため、アイドル時（ユーザからの応答待ちの時間や、情報処理装置１を使用していない時間など）に太陽電池３で発電した余剰電力を蓄電部７に充電しておく。そして、動作時には、電源制御部８が、蓄電部７からの電力を情報処理装置１の各部に供給するように制御する。このような電源制御は、ピークシフトとも呼ばれる。
【００１６】
蓄電部７は、リチウムイオン電池などのバッテリ、または電気２重層キャパシタなどを、単独で、または組み合わせて実現できる。例えば、太陽電池３で発電した電力をまず電気２重層キャパシタに蓄積し、蓄積した電力をさらにリチウムイオン電池に充電するような組み合わせが可能である。
【００１７】
電源制御部８は、蓄電部７に蓄積している電力量を管理し、プロセッサ１０などの外部の構成部が蓄電部７に蓄積している電力量を知るための機能を備える。プロセッサ１０が蓄電部７に蓄積している電力量を知る機能は、例えば、蓄電部７に蓄積している電力量が予め決められた規定量より少なくなった時点、または多くなった時点で、電源制御部８がプロセッサ１０に対して割り込みで伝えるように構成することで実現できる。また、別の実現方法としては、プロセッサ１０からのコマンドを受け取ると電源制御部８が現在の電力量をプロセッサ１０に送り返すように実装することもできる。
【００１８】
プロセッサ１０は、アプリケーションプログラムやオペレーティングシステムを実行して情報処理装置１の全体を制御する。本実施形態の情報処理装置１は、例えばＬｉｎｕｘ（登録商標）などのオペレーティングシステムを搭載している。
【００１９】
プロセッサ１０は、プロセッサコア１１と、キャッシュメモリ装置１００とを備える。プロセッサコア１１は、メインメモリ５にアクセスしながらアプリケーションプログラムやオペレーティングシステムを実行する。キャッシュメモリ装置１００は、メインメモリ５のデータの一部をキャッシュする。プロセッサ１０は、詳細を後述するキャッシュメモリ装置１００を備えることで、キャッシュメモリ装置１００に対する電源の供給を停止する深い待機モードに積極的に入るようにし、待機モード中の消費電力の大幅な削減を実現する。
【００２０】
メインメモリ５は、例えば、高速に読み書きできるＭＲＡＭ（Magnetoresistive  Random  Access  Memory）などの不揮発メモリで実現する。ＭＲＡＭ以外に、ＰＣＭ（Phase  Change  Memory、ＰＲＡＭやＰＣＲＡＭと呼ばれることもある）やＲｅＲＡＭ（Resistance  Random  Access  Memory）をメインメモリ５として用いることもできる。また、待機時の消費電力が小さなローパワーＤＲＡＭ（Dynamic  Random  Access  Memory）や、通常のＤＲＡＭをメインメモリ５として用いるようにしてもよい。
【００２１】
２次ストレージ６は、情報処理装置１が必要とするデータやプログラムを記憶する補助記憶部である。例えば、２次ストレージ６は、フラッシュメモリのチップを搭載した記憶部により実現できる。また、２次ストレージ６としてＳＤカードやＳＳＤを用いることもできる。
【００２２】
通信Ｉ／Ｆ９は、例えば無線ＬＡＮ（Local  Area  Network）などによる通信を行うためのインタフェースである。通信のプロトコルは無線ＬＡＮに限られず、有線ＬＡＮ、Ｂｌｕｅｔｏｏｔｈ（登録商標）、ＺｉｇＢｅｅ（登録商標）、赤外線通信、可視光通信、光回線網、電話回線網、およびインターネットなどのあらゆるプロトコルを利用できる。
【００２３】
（キャッシュメモリ装置の概要）
次に、本実施形態の情報処理装置１のプロセッサ１０が備えるキャッシュメモリ装置１００について説明する。図３は、キャッシュメモリ装置１００の概要を説明する図である。
【００２４】
キャッシュメモリ装置１００は、図３に示すように、キャッシュメモリ（記憶部）１１０と、キャッシュコントローラ（制御部）１２０と、を備える。
【００２５】
キャッシュメモリ１１０は、キャッシュしたデータを記憶するメモリである。キャッシュメモリ１１０は、複数のキャッシュライン（以下、単に「ライン」という。）を有する。キャッシュメモリ１１０の各ラインは、一定のサイズのまとまったデータを記憶するようになっている。各ラインが記憶するデータのサイズをラインサイズと呼び、ラインサイズの代表的な例は６４バイトである。キャッシュメモリ１１０の各ラインのことをエントリと呼ぶ場合もある。
【００２６】
キャッシュメモリ１１０の各ラインは、そのラインに記憶するデータのメインメモリ５上のアドレスを指定する「アドレス」欄と、そのラインに有効なデータが入っていることを示す「バリッドフラグ（Ｖ）」と、そのラインがダーティラインであることを示す「ダーティフラグ（Ｄ）」と、ラインサイズのデータを記憶する「データ」欄とを有し、これら４つの情報の組を保持する。ダーティラインとは、プロセッサ１０の書き込みデータが記憶され、且つ、その書き込みデータがメインメモリ５にはまだ書き込まれていない状態のラインをいう。なお、後述する実施例においては、ラインのバリッドフラグ（Ｖ）が立っていない時はダーティフラグ（Ｄ）が下がっているように管理することで、ダーティフラグ（Ｄ）をチェックすることでラインがダーティラインであるか否かを簡単に判断できるように実施する方法を示している。ラインのバリッドフラグ（Ｖ）が立っていないときはダーティフラグ（Ｄ）の値が不定になるように実施する場合は、バリッドフラグ（Ｖ）とダーティフラグ（Ｄ）の両方が立っていることを確認することで、ラインがダーティラインか否かを判断するように実施できる。
【００２７】
キャッシュコントローラ１２０は、読み出し制御部１２１と、書き込み制御部１２２と、を備える。読み出し制御部１２１は、プロセッサコア１１からのメインメモリ５に対するデータ読み出し要求を処理する。書き込み制御部１２２は、プロセッサコア１１からのメインメモリ５に対するデータ書き込み要求を処理する。プロセッサコア１１がプログラムの実行に伴って１つの命令でメインメモリ５に対して読み書きするデータのサイズは、例えば、４バイト、１バイト、８バイトといったように、キャッシュメモリ１１０のラインサイズよりも小さい。
【００２８】
プロセッサコア１１がメインメモリ５からデータを読み出す場合、キャッシュコントローラ１２０の読み出し制御部１２１は、プロセッサコア１１からのデータ読み出し要求に従い、まず、指定されたアドレスに対応するラインがキャッシュメモリ１１０中に存在するか否かを確認する。そして、該当するラインがキャッシュメモリ１１０中に存在していれば（ヒット）、読み出し制御部１２１は、指定されたアドレスのデータをキャッシュメモリ１１０から読み出してプロセッサコア１１に返す。一方、該当するラインがキャッシュメモリ１１０中に存在していなければ（ミスヒット）、読み出し制御部１２１は、指定されたアドレスを含むラインサイズ分のデータをメインメモリ５から読み出してキャッシュメモリ１１０に記憶した後、指定されたアドレスのデータをキャッシュメモリ１１０から読み出してプロセッサコア１１に返す。ミスヒット時にメインメモリ５からキャッシュメモリ１１０にラインサイズ分のデータをまとめて読み込んでおくことによって、次に近傍のアドレスのデータをアクセス（読み出しあるいは書き込み）する際は、そのデータは既にキャッシュメモリ１１０上に読み込まれているため、高速にアクセスできる。
【００２９】
また、プロセッサコア１１がメインメモリ５にデータを書き込む場合は、キャッシュコントローラ１２０の書き込み制御部１２２が、プロセッサコア１１からのデータ書き込み要求に従い、まず、指定されたアドレスに対応するラインがキャッシュメモリ１１０中に存在するか否かを確認する。ここで、データの書き込みは、直前に読み出したデータの上書きかその近傍のアドレスへの書き込みが多い（参照局所性が高い）ため、多くの場合、書き込みたいアドレスに対応するラインがキャッシュメモリ１１０中に存在する。該当するラインがキャッシュメモリ１１０中に存在する場合（ヒット）、書き込み制御部１２２は、指定されたアドレスにデータを書き込む。一方、該当するラインがキャッシュメモリ１１０中に存在しない場合は（ミスヒット）、書き込み制御部１２２は、例えば、指定されたアドレスを含むラインサイズ分のデータをメインメモリ５から読み出してキャッシュメモリ１１０に記憶した後、指定されたアドレスのデータを書き換える。なお、ミスヒット時に、キャッシュメモリ１１０のラインをデータ書き込み用に確保して、そのライン中のいずれかのバイトにデータを書き込むとともに、どのバイトにデータを書き込んだかを示すフラグを別途用意することで、メインメモリ５にアクセスすることなくキャッシュメモリ１１０にデータを書き込めるようにする方法もある。また、ミスヒット時に、キャッシュメモリ１１０にはデータを書き込まず、メインメモリ５に直接データを書き込む方法もある。本実施形態は、いずれのミスヒット時の処理方式とも組み合わせて実施することができる。
【００３０】
一般的に、キャッシュメモリ装置の構成方法としては、フルアソシアティブ型、ダイレクトマッピング型、（ｎウェイ）セットアソシアティブ型などが知られている。
【００３１】
フルアソシアティブ型のキャッシュメモリ装置では、プロセッサコア１１がメインメモリ５をアクセスするためのアドレスを上位と下位に分け、上位アドレスでキャッシュメモリ１１０の「アドレス」欄を検索し、上位アドレスと同じアドレスの「アドレス」欄を持つラインがあれば、そのラインの「データ」欄の中の下位アドレスで指定される位置のデータをアクセスする。
【００３２】
ダイレクトマッピング型あるいはセットアソシアティブ型の場合は、プロセッサコア１１がメインメモリ５をアクセスするためのアドレスを上位と中位と下位に分け、中位アドレスでキャッシュメモリ１１０のライン（セットアソシアティブの場合は各ウェイのラインの集合）を選択し、選択したラインのうち、「アドレス」欄が上位アドレスと等しいラインがあれば、そのラインの「データ」欄の中の下位アドレスで指定される位置のデータをアクセスする。
【００３３】
本実施形態のキャッシュメモリ装置１００は、以上の一般的に知られている構成方法をいずれも採用できる。
【００３４】
また、本実施形態のキャッシュメモリ装置１００は、ライトバック型のデータ書き込み方式を基本とする。すなわち、本実施形態のキャッシュメモリ装置１００は、キャッシュメモリ１１０のダーティフラグが立っているダーティラインのデータを、ダーティラインにデータを書き込んだときよりも後のしかるべき時点で、メインメモリ５に書き込む（書き戻す）。このダーティラインのデータをメインメモリ５に書き込むタイミングは、プロセッサコア１１がアクセスした他のアドレスのデータを格納するためにダーティラインのデータを入れ替えるとき（言い換えれば、ダーティラインを再利用するとき）、あるいは、プロセッサコア１１がキャッシュメモリ１１０のパージ（フラッシュとも呼ぶ）を指示する命令を出したとき、あるいは、マルチコアプロセッサで他のプロセッサコアのキャッシュメモリからアクセスされたときなど、様々である。
【００３５】
本実施形態のキャッシュメモリ装置１００は、キャッシュメモリ１１０内に存在するダーティラインの数が予め定めた所定数（以下、「許容ライン数」という。）を超えないように管理する。すなわち、本実施形態のキャッシュメモリ装置１００では、キャッシュメモリ１１０内のダーティラインが許容ライン数を超える場合には、ダーティラインのデータをメインメモリ５に書き込む（書き戻す）機能を、キャッシュコントローラ１２０に持たせている。このような機能をキャッシュコントローラ１２０が持つことで、本実施形態のキャッシュメモリ装置１００は、ライトバック型の特徴を活かしてメインメモリ５への書き込み頻度を削減し、メインメモリ５への書き込み完了待ちによるプロセッサコア１１のストール（メインメモリ５への書き込みの完了を待っている間プロセッサコア１１が次の命令の実行に進めない状態）の発生を有効に抑制しながら、キャッシュメモリ装置１００に対する電源の供給を遮断するときに、プロセッサコア１１からのパージを指示する命令に応じてキャッシュメモリ１１０からメインメモリ５に書き戻すデータ量を抑えることができる。したがって、本実施形態のキャッシュメモリ装置１００を備えるプロセッサ１０は、実行モードから、キャッシュメモリ装置１００に対する電源の供給を遮断する深い待機モードに切り替わるのに要する時間と消費電力を削減することができるので、ごく短時間の待機時間であっても深い待機モードに切り替えることができ、大幅な消費電力の削減を図ることができる。
【００３６】
また、本実施形態の適用ケースについて説明する。ライトバック型のキャッシュメモリを持つプロセッサでは、キャッシュメモリに対する電源供給を停止する際に、キャッシュメモリ内にのみ書き込まれてメインメモリに書き込まれていないデータをメインメモリに書き込んだ後に、キャッシュメモリに対する電源の供給を遮断する必要がある。このため、ライトバック型のキャッシュメモリは、実行モードから待機モードへの切り替えに要するコスト（時間や消費電力）が、ライトスルー型のキャッシュメモリに比べて大きい。キャッシュメモリに対する電源の供給を停止する待機モードへの切り替え頻度が少ない場合には、待機モードへ入るためのコストは無視できるが、その頻度が大きくなると無視できなくなる。例えば、消費電力の大幅な削減を実現するために、プロセッサが数ミリ秒乃至は数十ミリ秒単位のごく短い待機時間でもキャッシュメモリに対する電源の供給を停止させる待機モードに入るようにした場合、実行モードから待機モードへの切り替えが頻繁に発生し、切り替えに要するコストが大きいために、期待通りの消費電力の削減が図れない。このようなケースで、本実施形態の発明を適用すると、プログラム実行中のメインメモリへのデータの書き込み頻度が小さく、かつ、実行モードから待機モードへの切り替えに要する時間や消費電力を抑えることができる。
【００３７】
以下、本実施形態のキャッシュメモリ装置１００の具体例（第１実施例乃至第６実施例）について、図４乃至図２８を参照して説明する。以下では、第１実施例のキャッシュメモリ装置１００をキャッシュメモリ装置１００ａ、第２実施例のキャッシュメモリ装置１００をキャッシュメモリ装置１００ｂ、第３実施例のキャッシュメモリ装置１００をキャッシュメモリ装置１００ｃ、第４実施例のキャッシュメモリ装置１００をキャッシュメモリ装置１００ｄ、第５実施例のキャッシュメモリ装置１００をキャッシュメモリ装置１００ｅ、第６実施例のキャッシュメモリ装置１００をキャッシュメモリ装置１００ｆと表記する。
【００３８】
（第１実施例）
まず、第１実施例のキャッシュメモリ装置１００ａについて説明する。図４は、第１実施例のキャッシュメモリ装置１００ａの構成を示す図である。第１実施例のキャッシュメモリ装置１００ａは、キャッシュメモリ１１０ａと、キャッシュコントローラ１２０ａと、を備える。
【００３９】
キャッシュメモリ１１０ａは、Ｒキャッシュメモリ（第１記憶部）１１１と、Ｗキャッシュメモリ（第２記憶部）１１２と、の２つの記憶部を有する。Ｒキャッシュメモリ１１１は、任意の数のラインを有するキャッシュメモリである。Ｗキャッシュメモリ１１２は、許容ライン数（許容するダーティラインの数）のラインを有するキャッシュメモリである。プロセッサ１０がメインメモリ５から読み出したデータは、Ｒキャッシュメモリ１１１とＷキャッシュメモリ１１２のいずれかに記憶されるが、プロセッサ１０がメインメモリ５に書き込むデータは、Ｗキャッシュメモリ１１２にのみ記憶される。つまり、第１実施例のキャッシュメモリ装置１００ａでは、ダーティラインはＷキャッシュメモリ１１２にしか存在させない。そのため、Ｒキャッシュメモリ１１１の各ラインには、ダーティフラグ（Ｄ）欄は不要である。
【００４０】
キャッシュコントローラ１２０ａは、読み出し制御部１２１ａと、書き込み制御部１２２ａと、を備える。
【００４１】
読み出し制御部１２１ａは、プロセッサコア１１からのメインメモリ５に対するデータ読み出し要求があると、Ｒキャッシュメモリ１１１とＷキャッシュメモリ１１２の双方を対象としてデータの読み出しを行う。
【００４２】
一方、書き込み制御部１２２ａは、プロセッサコア１１からのメインメモリ５に対するデータ書き込み要求があると、Ｗキャッシュメモリ１１２のみを対象としてデータの書き込みを行う。そして、書き込み制御部１２２ａは、Ｗキャッシュメモリ１１２のラインがすべてダーティラインとなっており、新たなデータを書き込むラインを確保する必要がある場合に、そのダーティラインのデータをメインメモリ５に書き戻してラインを開放した後、そのラインにデータを書き込む。これにより、キャッシュメモリ１１０ａ内に存在するダーティラインの数を、常に許容ライン数以下とすることができる。
【００４３】
図５は、プロセッサコア１１がメインメモリ５に対するデータの読み出し要求を出したときに、キャッシュコントローラ１２０ａの読み出し制御部１２１ａにより実行される処理を示すフローチャートである。
【００４４】
プロセッサコア１１からのメインメモリ５に対するデータ読み出し要求があると、読み出し制御部１２１ａは、まず、指定されたアドレスに対応するラインがＲキャッシュメモリ１１１中に存在するか否かを判定する（ステップＳ１０１）。そして、指定されたアドレスに対応するラインがＲキャッシュメモリ１１１中に存在する場合（ステップＳ１０１：Ｙｅｓ）、読み出し制御部１２１ａは、該当するラインから指定されたアドレスのデータを読み出してプロセッサコア１１に返す（ステップＳ１０２）。
【００４５】
一方、指定されたアドレスに対応するラインがＲキャッシュメモリ１１１中に存在しない場合（ステップＳ１０１：Ｎｏ）、読み出し制御部１２１ａは、次に、指定されたアドレスに対応するラインがＷキャッシュメモリ１１２中に存在するか否かを判定する（ステップＳ１０３）。そして、指定されたアドレスに対応するラインがＷキャッシュメモリ１１２中に存在する場合（ステップＳ１０３：Ｙｅｓ）、読み出し制御部１２１ａは、該当するラインから指定されたアドレスのデータを読み出してプロセッサコア１１に返す（ステップＳ１０４）。
【００４６】
一方、指定されたアドレスに対応するラインがＷキャッシュメモリ１１２中に存在しない場合（ステップＳ１０３：Ｎｏ）、読み出し制御部１２１ａは、Ｒキャッシュメモリ１１１のいずれかのラインを選択し、指定されたアドレスを含むラインサイズ分のデータをメインメモリ５から読み出して選択したラインに記憶する。そして、読み出し制御部１２１ａは、データを記憶したラインのバリッドフラグ（Ｖ）を立て、指定されたアドレスのデータをプロセッサコア１１に返す（ステップＳ１０５）。
【００４７】
なお、以上の例では、ステップＳ１０５において、メインメモリ５から新しく読み出したデータを記憶するキャッシュメモリ１１０のラインをＲキャッシュメモリ１１１に確保するようにしているが、Ｒキャッシュメモリ１１１とＷキャッシュメモリ１１２のいずれかから確保するようにしてもよい。その場合、Ｗキャッシュメモリ１１２中のダーティフラグ（Ｄ）が立っているラインを確保して再利用する際には、そのライン（ダーティライン）に記憶しているデータをメインメモリ５に書き戻してから再利用する必要がある。
【００４８】
図６は、プロセッサコア１１がメインメモリ５に対するデータの書き込み要求を出したときに、キャッシュコントローラ１２０ａの書き込み制御部１２２ａにより実行される処理を示すフローチャートである。
【００４９】
プロセッサコア１１からのメインメモリ５に対するデータ書き込み要求があると、書き込み制御部１２２ａは、まず、指定されたアドレスに対応するラインがＷキャッシュメモリ１１２中に存在するか否かを判定する（ステップＳ２０１）。そして、指定されたアドレスに対応するラインがＷキャッシュメモリ１１２中に存在する場合（ステップＳ２０１：Ｙｅｓ）、書き込み制御部１２２ａは、該当するラインを書き込み対象のラインとして選択する（ステップＳ２０２）。
【００５０】
一方、指定されたアドレスに対応するラインがＷキャッシュメモリ１１２中に存在しない場合（ステップＳ２０１：Ｎｏ）、書き込み制御部１２２ａは、Ｗキャッシュメモリ１１２内の１つのラインを書き込み対象のラインとして選択する（ステップＳ２０３）。このとき、書き込み制御部１２２ａは、Ｗキャッシュメモリ１１２内にダーティフラグ（Ｄ）が立っていないラインがあれば、そのラインを書き込み対象のラインとして優先的に選択し、Ｗキャッシュメモリ１１２内のすべてのラインにダーティフラグ（Ｄ）が立っている、つまりＷキャッシュメモリ１１２内のすべてのラインがダーティラインの場合に、ダーティラインのいずれかを書き込み対象のラインとして選択する。
【００５１】
次に、書き込み制御部１２２ａは、ステップＳ２０３で選択したラインがダーティラインであるか否かを判定する（ステップＳ２０４）。そして、ステップＳ２０３で選択したラインがダーティラインであれば（ステップＳ２０４：Ｙｅｓ）、書き込み制御部１２２ａは、ステップＳ２０３で選択したラインのデータをメインメモリ５に書き戻す（ステップＳ２０５）。一方、ステップＳ２０３で選択したラインがダーティラインでなければ（ステップＳ２０４：Ｎｏ）、ステップＳ２０５の処理は行わずに次に進む。
【００５２】
次に、書き込み制御部１２２ａは、指定されたアドレスに対応するラインがＲキャッシュメモリ１１１中に存在するか否かを判定する（ステップＳ２０６）。そして、指定されたアドレスに対応するラインがＲキャッシュメモリ１１１中に存在しなければ（ステップＳ２０６：Ｎｏ）、書き込み制御部１２２ａは、指定されたアドレスを含むラインサイズ分のデータをメインメモリ５から読み出して、ステップＳ２０３で選択したラインに記憶する（ステップＳ２０７）。
【００５３】
一方、指定されたアドレスに対応するラインがＲキャッシュメモリ１１１中に存在する場合は（ステップＳ２０６：Ｙｅｓ）、書き込み制御部１２２ａは、指定されたアドレスに対応するＲキャッシュメモリ１１１のラインの内容を、ステップＳ２０３で選択したラインにコピーする。そして、コピー元のＲキャッシュメモリ１１１のラインのバリッドフラグ（Ｖ）を下げ、当該ラインを未使用にする（ステップＳ２０８）。
【００５４】
次に、書き込み制御部１２２ａは、ステップＳ２０２またはステップＳ２０３で選択したラインの指定されたアドレスにデータを書き込み、当該ラインのダーティフラグ（Ｄ）を立てる（ステップＳ２０９）。
【００５５】
以上説明した第１実施例のキャッシュメモリ装置１００ａは、フルアソシアティブ型、ダイレクトマッピング型、セットアソシアティブ型など、従来知られている様々な方式のキャッシュメモリ装置をベースに実現できる。フルアソシアティブ型をベースとしたキャッシュメモリ装置１００ａは、キャッシュメモリ１１０ａのラインを２つの部分に分けてキャッシュコントローラ１２０ａが管理することで実現することができる。ダイレクトマッピング型をベースとしたキャッシュメモリ装置１００ａの場合には、Ｒキャッシュメモリ１１１とＷキャッシュメモリ１１２の２つダイレクトマッピング型のキャッシュメモリを用意することで実現できる。セットアソシアティブ型をベースとしたキャッシュメモリ装置１００ａの場合には、セット単位でＲキャッシュメモリ１１１とＷキャッシュメモリ１１２に分けて実現できる。例えば４ウェイセットアソシアティブ型の場合には、３つのウェイをＲキャッシュメモリ１１１に、１つのウェイをＷキャッシュメモリ１１２に対応させると、ダーティラインがキャッシュメモリ１１０ａ中の総ライン数の２５％を超えないように実現することができる。
【００５６】
なお、以上説明した第１実施例のキャッシュメモリ装置１００ａに対して、ライトバッファを付加することも可能である。ライトバッファを付加した場合、図６のステップＳ２０５でラインのデータをメインメモリ５に書き戻す代わりに、書き戻すのに必要な情報をライトバッファに入れておく。ライトバッファは、プロセッサ１０からメインメモリ５へのアクセスがないタイミングを見計らって、メインメモリ５へデータを書き込む。
【００５７】
（第２実施例）
次に、第２実施例のキャッシュメモリ装置１００ｂについて説明する。図７は、第２実施例のキャッシュメモリ装置１００ｂの構成を示す図である。第２実施例のキャッシュメモリ装置１００ｂは、キャッシュメモリ１１０と、キャッシュコントローラ１２０ｂと、を備える。キャッシュメモリ１１０は、図３に示したキャッシュメモリ１１０と同様である。
【００５８】
キャッシュコントローラ１２０ｂは、読み出し制御部１２１と、書き込み制御部１２２ｂと、ダーティラインカウント部１２３と、を備える。読み出し制御部１２１は、図３に示した読み出し制御部１２１と同様である。
【００５９】
書き込み制御部１２２ｂは、プロセッサコア１１からのメインメモリ５に対するデータ書き込み要求があると、指定されたアドレスに対応するキャッシュメモリ１１０のラインを選択し、そのラインの指定されたアドレスにデータを書き込む。そして、書き込み制御部１２２ｂは、選択したラインにデータを書き込んだ結果、キャッシュメモリ１１０内のダーティラインの数が許容ライン数を超える場合に、ダーティラインのデータをメインメモリ５に書き戻す。これにより、キャッシュメモリ１１０内に存在するダーティラインの数を許容ライン数以下に保つことができる。
【００６０】
ダーティラインカウント部１２３は、キャッシュメモリ１１０内のダーティラインの数をカウントする。書き込み制御部１２２ｂは、プロセッサコア１１からのデータ書き込み要求に応じてデータの書き込みを行った後、ダーティラインカウント部１２３の出力を参照して、キャッシュメモリ１１０内のダーティラインの数が許容ライン数を超えるか否かを判定する。
【００６１】
なお、第２実施例のキャッシュメモリ装置１００ｂも、第１実施例のキャッシュメモリ装置１００ａと同様に、フルアソシアティブ型、ダイレクトマッピング型、セットアソシアティブ型など、従来知られている様々な方式のキャッシュメモリ装置をベースに実現できる。
【００６２】
図８は、プロセッサコア１１がメインメモリ５に対するデータの読み出し要求を出したときに、キャッシュコントローラ１２０ｂの読み出し制御部１２１により実行される処理を示すフローチャートである。
【００６３】
プロセッサコア１１からのメインメモリ５に対するデータ読み出し要求があると、読み出し制御部１２１は、指定されたアドレスに対応するラインがキャッシュメモリ１１０内に存在するか否かを判定する（ステップＳ３０１）。そして、指定されたアドレスに対応するラインがキャッシュメモリ１１０内に存在する場合（ステップＳ３０１：Ｙｅｓ）、読み出し制御部１２１は、該当するラインから指定されたアドレスのデータを読み出してプロセッサコア１１に返す（ステップＳ３０２）。
【００６４】
一方、指定されたアドレスに対応するラインがキャッシュメモリ１１０内に存在しない場合（ステップＳ３０１：Ｎｏ）、読み出し制御部１２１は、キャッシュメモリ１１０のいずれかのラインを選択する（ステップＳ３０３）。そして、読み出し制御部１２１は、ステップＳ３０３で選択したラインのダーティフラグ（Ｄ）を参照し、そのラインがダーティラインであるか否かを判定する（ステップＳ３０４）。そして、ステップＳ３０３で選択したラインがダーティラインであれば（ステップＳ３０４：Ｙｅｓ）、読み出し制御部１２１は、ステップＳ３０３で選択したラインのデータをメインメモリ５に書き戻す（ステップＳ３０５）。一方、ステップＳ３０３で選択したラインがダーティラインでなければ（ステップＳ３０４：Ｎｏ）、ステップＳ３０５の処理は行わずに次に進む。
【００６５】
次に、読み出し制御部１２１は、指定されたアドレスを含むラインサイズ分のデータをメインメモリ５から読み出して、そのデータをステップＳ３０３で選択したラインに記憶する。そして、読み出し制御部１２１は、データを記憶したラインのバリッドフラグ（Ｖ）を立てるとともにダーティフラグ（Ｄ）を下げ、指定されたアドレスのデータをプロセッサコア１１に返す（ステップＳ３０６）。
【００６６】
図９は、プロセッサコア１１がメインメモリ５に対するデータの書き込み要求を出したときに、キャッシュコントローラ１２０ｂの書き込み制御部１２２ｂにより実行される処理を示すフローチャートである。
【００６７】
プロセッサコア１１からのメインメモリ５に対するデータ書き込み要求があると、書き込み制御部１２２ｂは、まず、指定されたアドレスに対応するラインがキャッシュメモリ１１０内に存在するか否かを判定する（ステップＳ４０１）。そして、指定されたアドレスに対応するラインがキャッシュメモリ１１０内に存在する場合（ステップＳ４０１：Ｙｅｓ）、書き込み制御部１２２ｂは、該当するラインを書き込み対象のラインとして選択し、そのライン内の該当箇所（通常は書き込みたいデータサイズはラインサイズよりも小さいので、ライン内の書き込むべき位置を、指定されたアドレスから計算する）にデータを書き込んで、そのラインのダーティフラグ（Ｄ）を立てる（ステップＳ４０２）。
【００６８】
一方、指定されたアドレスに対応するラインがキャッシュメモリ１１０内に存在しない場合（ステップＳ４０１：Ｎｏ）、書き込み制御部１２２ｂは、キャッシュメモリ１１０内の１つのラインを書き込み対象のラインとして選択する（ステップＳ４０３）。次に、書き込み制御部１２２ｂは、ステップＳ４０３で選択したラインがダーティラインであるか否かを判定する（ステップＳ４０４）。そして、ステップＳ４０３で選択したラインがダーティラインであれば（ステップＳ４０４：Ｙｅｓ）、書き込み制御部１２２ｂは、ステップＳ４０３で選択したラインのデータをメインメモリ５に書き戻す（ステップＳ４０５）。一方、ステップＳ４０３で選択したラインがダーティラインでなければ（ステップＳ４０４：Ｎｏ）、ステップＳ４０５の処理は行わずに次に進む。
【００６９】
次に、書き込み制御部１２２ｂは、指定されたアドレスを含むラインサイズ分のデータをメインメモリ５から読み出して、ステップＳ４０３で選択したラインに記憶し、そのラインのバリッドフラグ（Ｖ）とダーティフラグ（Ｄ）を立てるとともに、そのライン内の該当箇所にデータを書き込む（ステップＳ４０６）。
【００７０】
次に、書き込み制御部１２２ｂは、ダーティラインカウント部１２３の出力を参照し、キャッシュメモリ１１０内のダーティラインの数が許容ライン数を超えるか否かを判定する（ステップＳ４０７）。そして、キャッシュメモリ１１０内のダーティラインの数が許容ライン数に達していれば（ステップＳ４０７：Ｙｅｓ）、書き込み制御部１２２ｂは、キャッシュメモリ１１０内のステップＳ４０６でデータを書き込んだライン以外のラインを選択し、そのラインのデータをメインメモリ５に書き戻して、そのラインのダーティフラグ（Ｄ）を下げる（ステップＳ４０８）。一方、キャッシュメモリ１１０内のダーティラインの数が許容ライン数を超えなければ（ステップＳ４０７：Ｎｏ）、ステップＳ４０８の処理は行わずに終了する。
【００７１】
なお、図９のステップＳ４０８において、メインメモリ５にデータを書き戻すダーティラインを選択する際に、ステップＳ４０６でデータを書き込んだラインを除外するようにしているのは、データを書き込んだラインに対するアクセスがそのあと続けて発生する確率が高いためである。ただし、ステップＳ４０６でデータを書き込んだラインも含めて、キャッシュメモリ１１０内のすべてのダーティラインの中から、メインメモリ５にデータを書き戻すラインを選択するようにしてもよい。
【００７２】
また、図８のステップＳ３０３および図９のステップＳ４０３でキャッシュメモリ１１０内の１つのラインを選択する方法は、一般的に知られている方法をいずれも採用できる。例えば、データが書き込まれてから最も時間がたっているラインを選択する方法や、最後に書き込みがあってから最も時間がたっているラインを選択する方法、最後にアクセス（読み出しあるいは書き込み）があってから最も時間がたっているラインを選ぶ方法、ダーティフラグ（Ｄ）が立っていないラインを優先的に選択する方法、バリッドフラグ（Ｖ）が立っていないラインを優先的に選択する方法、ランダムに選ぶ方法、あるいはそれらの組み合わせなど、様々な方法を採用することができる。
【００７３】
また、ラインを選択する範囲は、フルアソシアティブ型をベースとしたキャッシュメモリ装置１００ｂであれば、キャッシュメモリ１１０全体が対象範囲である。ダイレクトマッピング型をベースとしたキャッシュメモリ装置１００ｂであれば、アクセスしたいメインメモリ５のアドレスからラインが一意に決まるので選ぶところは１つになる。セットアソシアティブ型をベースとしたキャッシュメモリ装置１００ｂであれば、アクセスしたいメインメモリ５のアドレスから各ウェイにおけるラインがダイレクトマッピング型と同様に１つずつ決まるので、それらのラインの集合が選択する対象範囲になる。
【００７４】
また、図９のステップＳ４０８におけるダーティラインの選択は、最後に書き込みがあってから最も時間がたっているラインを選ぶ方法、最後にアクセス（読み出しあるいは書き込み）があってから最も時間がたっているラインを選ぶ方法、ランダムに選ぶ方法、あるいはそれらの組み合わせなど、様々な方法を採用することができる。
【００７５】
（第３実施例）
次に、第３実施例のキャッシュメモリ装置１００ｃについて説明する。図１０は、第３実施例のキャッシュメモリ装置１００ｃの構成を示す図である。第３実施例のキャッシュメモリ装置１００ｃは、キャッシュメモリ１１０と、キャッシュコントローラ１２０ｃと、ライトバッファ１３０と、を備える。キャッシュメモリ１１０は、図３に示したキャッシュメモリ１１０と同様である。
【００７６】
キャッシュコントローラ１２０ｃは、読み出し制御部１２１と、書き込み制御部１２２ｃと、ダーティラインカウント部１２３と、を備える。読み出し制御部１２１は、図３に示した読み出し制御部１２１と同様である。ダーティラインカウント部１２３は、図７に示したダーティラインカウント部１２３と同様である。
【００７７】
書き込み制御部１２２ｃは、図７に示した書き込み制御部１２２ｂと同様に、プロセッサコア１１からのメインメモリ５に対するデータ書き込み要求があると、指定されたアドレスに対応するキャッシュメモリ１１０のラインを選択する。このとき、指定されたアドレスに対応するラインがキャッシュメモリ１１０内に存在していなければ、書き込み制御部１２２ｃは、キャッシュメモリ１１０から１つのラインを選択し、選択したラインがダーティラインであれば、そのラインのデータをメインメモリ５に書き戻すために必要な情報をライトバッファ１３０に入れる。また、書き込み制御部１２２ｃは、選択したラインの指定されたアドレスにデータを書き込んだ後、ダーティラインカウント部１２３の出力を参照して、キャッシュメモリ１１０内のダーティラインの数が許容ライン数を超えるか否かを判定する。そして、書き込み制御部１２２ｃは、キャッシュメモリ１１０内のダーティラインの数が許容ライン数を超える場合に、ダーティラインのデータをメインメモリ５に書き戻すために必要な情報をライトバッファ１３０に入れる。
【００７８】
ライトバッファ１３０は、メインメモリ５に書き戻すデータを一時的に保持する。ライトバッファ１３０は、キャッシュメモリ装置の性能向上のために一般的に広く用いられている機構である。ライトバッファ１３０を備えていないキャッシュメモリ装置では、キャッシュメモリ１１０内のダーティラインを、新しいアドレスのデータを記憶するために再利用する際などに、ダーティラインのデータをメインメモリ５に書き戻す処理が終了してからでないと新しいアドレスのデータを書き込めないのに対し、ライトバッファ１３０を備えるキャッシュメモリ装置では、メインメモリ５にデータを書き戻すのに必要な情報、すなわちメインメモリ５上の書き戻すべきアドレスとデータの組からなる情報をライトバッファ１３０に入れておけば、すぐに新しいアドレスのデータを書き込むことができる。このように、ライトバッファ１３０を備えるキャッシュメモリ装置は、メインメモリ５に対するデータ書き戻しの完了を待つ必要がないので、プロセッサ１０がストールすることがなくなる。また、ライトバッファ１３０にアドレスとデータの組が入れられると、しかるべきタイミングでメインメモリ５への書き戻しが行われる。この書き戻しは、メインメモリ５に対する他のアクセスがないときに行うことが望ましい。
【００７９】
第３実施例のキャッシュメモリ装置１００ｃは、書き込み制御部１２２ｃがダーティラインのデータを直接メインメモリ５に書き戻すのではなく、書き戻しに必要な情報をライトバッファ１３０に入れるようにしている点のみが、第２実施例のキャッシュメモリ装置１００ｂと相違する。したがって、第３実施例のキャッシュメモリ装置１００ｃにおいても、第２実施例のキャッシュメモリ装置１００ｂと同様に、キャッシュメモリ１１０内に存在するダーティラインの数を許容ライン数以下に保つことができる。また、第３実施例のキャッシュメモリ装置１００ｃは、メインメモリ５へのデータの書き戻しに伴うプロセッサ１０のストールを有効に防止できる。
【００８０】
図１１は、プロセッサコア１１がメインメモリ５に対するデータの読み出し要求を出したときに、キャッシュコントローラ１２０ｃの読み出し制御部１２１により実行される処理を示すフローチャートである。なお、図１１のフローチャートにおけるステップＳ５０１〜ステップＳ５０４の処理は、図８のフローチャートにおけるステップＳ３０１〜ステップＳ３０４の処理と同じである。また、図１１のフローチャートにおけるステップＳ５０６の処理は、図８のフローチャートにおけるステップＳ３０６の処理と同じである。図１１のフローチャートにおいて、図８のフローチャートと相違するのは、ステップＳ５０５の処理である。
【００８１】
すなわち、キャッシュコントローラ１２０ｃの読み出し制御部１２１は、ステップＳ５０３で選択したラインがダーティラインであれば（ステップＳ５０４：Ｙｅｓ）、ステップＳ５０５において、ステップＳ５０３で選択したラインのデータをメインメモリ５に書き戻すために必要な情報をライトバッファ１３０に入れる。
【００８２】
図１２は、プロセッサコア１１がメインメモリ５に対するデータの書き込み要求を出したときに、キャッシュコントローラ１２０ｃの書き込み制御部１２２ｃにより実行される処理を示すフローチャートである。なお、図１２のフローチャートにおけるステップＳ６０１〜ステップＳ６０４の処理は、図９のフローチャートにおけるステップＳ４０１〜ステップＳ４０４の処理と同じである。また、図１２のフローチャートにおけるステップＳ６０６およびステップＳ６０７の処理は、図９のフローチャートにおけるステップＳ４０６およびステップＳ４０７の処理と同じである。図１２のフローチャートにおいて、図９のフローチャートと相違するのは、ステップＳ６０５の処理とステップＳ６０８の処理である。
【００８３】
すなわち、キャッシュコントローラ１２０ｃの書き込み制御部１２２ｃは、ステップＳ６０３で選択したラインがダーティラインであれば（ステップＳ６０４：Ｙｅｓ）、ステップＳ６０５において、ステップＳ６０３で選択したラインのデータをメインメモリ５に書き戻すために必要な情報をライトバッファ１３０に入れる。
【００８４】
また、キャッシュコントローラ１２０ｃの書き込み制御部１２２ｃは、ステップＳ６０６におけるデータの書き込み後、キャッシュメモリ１１０内のダーティラインの数が許容ライン数に達していれば（ステップＳ６０７：Ｙｅｓ）、ステップＳ６０８において、キャッシュメモリ１１０内のステップＳ６０６でデータを書き込んだライン以外のダーティラインを選択し、そのラインのデータをメインメモリ５に書き戻すために必要な情報をライトバッファ１３０に入れて、そのラインのダーティフラグ（Ｄ）を下げる。
【００８５】
ライトバッファ１３０は、一般的に用いられているものと同様の動作を行う。図１３は、ライトバッファ１３０の動作の一例を示すフローチャートである。図１３のフローチャートで示す処理は、プロセッサ１０がメインメモリ５にアクセスしていないときなど任意のタイミングで実行される。
【００８６】
ライトバッファ１３０は、まず、メインメモリ５に対するデータの書き戻しに必要な情報が入っているか否かを判定する（ステップＳ７０１）。そして、メインメモリ５に対するデータの書き戻しに必要な情報が入っていなければ（ステップＳ７０１：Ｎｏ）、そのまま処理を終了する。一方、メインメモリ５に対するデータの書き戻しに必要な情報が入っていれば（ステップＳ７０１：Ｙｅｓ）、ライトバッファ１３０は、プロセッサ１０がメインメモリ５にアクセスしている状態か否か、すなわちメインメモリ５に対するデータの読み出し、または書き込みの動作中か否かを判定する（ステップＳ７０２）。
【００８７】
そして、メインメモリ５に対するデータの読み出し、または書き込みの動作中であれば（ステップＳ７０２：Ｙｅｓ）、その動作が終了するまで待機する。一方、メインメモリ５に対するデータの読み出しも書き込みも行っていなければ（ステップＳ７０２：Ｎｏ）、ライトバッファ１３０は、メインメモリ５に対するデータの書き戻しに必要な情報を１つ取り出し、取り出した情報に基づいて、メインメモリ５に対するデータの書き込みを行う（ステップＳ７０３）。その後、ステップＳ７０１に戻って、メインメモリ５に対するデータの書き戻しがすべて終了するまで、以降の処理を繰り返す。
【００８８】
（第４実施例）
次に、第４実施例のキャッシュメモリ装置１００ｄについて説明する。図１４は、第４実施例のキャッシュメモリ装置１００ｄの構成を示す図である。第４実施例のキャッシュメモリ装置１００ｄは、キャッシュメモリ１１０と、キャッシュコントローラ１２０ｄと、を備える。キャッシュメモリ１１０は、図３に示したキャッシュメモリ１１０と同様である。
【００８９】
キャッシュコントローラ１２０ｄは、読み出し制御部１２１と、書き込み制御部１２２ｄと、ダーティラインカウント部１２３と、書き戻し制御部１２４と、を備える。読み出し制御部１２１は、図３に示した読み出し制御部１２１と同様である。ダーティラインカウント部１２３は、図７に示したダーティラインカウント部１２３と同様である。
【００９０】
書き込み制御部１２２ｄは、プロセッサコア１１からのメインメモリ５に対するデータ書き込み要求があると、指定されたアドレスに対応するキャッシュメモリ１１０のラインを選択し、そのラインの指定されたアドレスにデータを書き込む。
【００９１】
書き戻し制御部１２４は、プロセッサ１０がメインメモリ５にアクセスしていないときなどの任意のタイミングでダーティラインカウント部１２３の出力を参照し、キャッシュメモリ１１０内のダーティラインの数が許容ライン数を超えているか否かを判定する。そして、書き戻し制御部１２４は、キャッシュメモリ１１０内のダーティラインの数が許容ライン数を超えている場合に、ダーティラインのデータをメインメモリ５に書き戻す。これにより、キャッシュメモリ１１０内に存在するダーティラインの数が一時的に許容ライン数を超えていたとしても、ダーティラインの数を許容ライン数以下に戻すことができる。また、ダーティラインのデータをメインメモリ５に書き戻す処理を任意のタイミングで行うため、メインメモリ５へのデータの書き戻しに伴うプロセッサ１０のストールを有効に防止できる。
【００９２】
図１５は、プロセッサコア１１がメインメモリ５に対するデータの書き込み要求を出したときに、キャッシュコントローラ１２０ｄの書き込み制御部１２２ｄにより実行される処理を示すフローチャートである。なお、図１５のフローチャートにおけるステップＳ８０１〜ステップＳ８０６の処理は、図９のフローチャートにおけるステップＳ４０１〜ステップＳ４０６の処理と同じである。図１５のフローチャートにおいて、図９のフローチャートと相違するのは、ステップＳ４０７およびステップＳ４０８に相当する処理を含まない点である。
【００９３】
すなわち、キャッシュコントローラ１２０ｄの書き込み制御部１２２ｄは、ステップＳ８０２またはステップＳ８０６において、選択したラインの指定されたアドレスにデータを書き込むと、処理を終了する。
【００９４】
図１６は、キャッシュコントローラ１２０ｄの書き戻し制御部１２４により実行される処理の一例を示すフローチャートである。この図１６のフローチャートで示す処理は、プロセッサ１０がメインメモリ５にアクセスしていないときなどの任意のタイミングで実行される。
【００９５】
処理が開始されると、書き戻し制御部１２４は、まず、ダーティラインカウント部１２３の出力を参照し、キャッシュメモリ１１０内のダーティラインの数が許容ライン数を超えているか否かを判定する（ステップＳ９０１）。そして、書き戻し制御部１２４は、キャッシュメモリ１１０内のダーティラインの数が許容ライン数以下であれば（ステップＳ９０１：Ｎｏ）、そのまま処理を終了する。
【００９６】
一方、キャッシュメモリ１１０内のダーティラインの数が許容ライン数を超えている場合（ステップＳ９０１：Ｙｅｓ）、書き戻し制御部１２４は、キャッシュメモリ１１０内のいずれかのダーティラインを選択する（ステップＳ９０２）。そして、書き戻し制御部１２４は、ステップＳ９０２で選択したダーティラインのデータをメインメモリ５に書き戻し（ステップＳ９０３）、そのラインのダーティフラグ（Ｄ）を下げる（ステップＳ９０４）。その後、ステップＳ９０１に戻って、キャッシュメモリ１１０内のダーティラインの数が許容ライン数以下になるまで、以降の処理を繰り返す。
【００９７】
図１７は、キャッシュコントローラ１２０ｄの書き戻し制御部１２４により実行される処理の他の例を示すフローチャートである。なお、図１７のフローチャートにおけるステップＳ１００１〜ステップＳ１００４の処理は、図１６のフローチャートにおけるステップＳ９０１〜ステップＳ９０４の処理と同じである。図１７のフローチャートにおいて、図１６のフローチャートと相違するのは、ステップＳ１００５の処理が追加されている点である。
【００９８】
すなわち、書き戻し制御部１２４は、ステップＳ１００１でキャッシュメモリ１１０内のダーティラインの数が許容ライン数以下であると判定した場合（ステップＳ１００１：Ｎｏ）、ステップＳ１００５において、キャッシュメモリ１１０内のダーティラインの数が目標ライン数を超えているか否かを判定する。ここで、目標ライン数とは、キャッシュメモリ１１０内のダーティラインの数を減らすときの目標値であり、許容ライン数よりも小さな数である。
【００９９】
ステップＳ１００５の判定の結果、キャッシュメモリ１１０内のダーティラインの数が目標ライン数を超えていれば（ステップＳ１００５：Ｙｅｓ）、ステップＳ１００２に進んで、以降の処理を繰り返す。そして、キャッシュメモリ１１０内のダーティラインの数が目標ライン数以下となった段階で（ステップＳ１００５：Ｎｏ）、処理を終了する。
【０１００】
書き戻し制御部１２４が図１７のフローチャートで示す処理を実行した場合、キャッシュメモリ１１０内のダーティラインが目標ライン数まで減少するので、その後、キャッシュメモリ１１０内のダーティラインが許容ライン数に達するまでの時間を長くすることができ、メインメモリ５に対するデータの書き戻しの頻度を低下させることができる。
【０１０１】
（第５実施例）
次に、第５実施例のキャッシュメモリ装置１００ｅについて説明する。図１８は、第５実施例のキャッシュメモリ装置１００ｅの構成を示す図である。第５実施例のキャッシュメモリ装置１００ｅは、キャッシュメモリ１１０と、キャッシュコントローラ１２０ｅと、ライトバッファ１３０と、を備える。キャッシュメモリ１１０は、図３に示したキャッシュメモリ１１０と同様である。ライトバッファ１３０は、図１０に示したライトバッファ１３０と同様である。
【０１０２】
キャッシュコントローラ１２０ｅは、読み出し制御部１２１と、書き込み制御部１２２ｅと、ダーティラインカウント部１２３と、書き戻し制御部１２４ｅと、を備える。読み出し制御部１２１は、図３に示した読み出し制御部１２１と同様である。ダーティラインカウント部１２３は、図７に示したダーティラインカウント部１２３と同様である。
【０１０３】
書き込み制御部１２２ｅは、図１４に示した書き込み制御部１２２ｄと同様に、プロセッサコア１１からのメインメモリ５に対するデータ書き込み要求があると、指定されたアドレスに対応するキャッシュメモリ１１０のラインを選択する。このとき、指定されたアドレスに対応するラインがキャッシュメモリ１１０内に存在していなければ、書き込み制御部１２２ｅは、キャッシュメモリ１１０から１つのラインを選択し、選択したラインがダーティラインであれば、そのラインのデータをメインメモリ５に書き戻すために必要な情報をライトバッファ１３０に入れる。
【０１０４】
書き戻し制御部１２４ｅは、プロセッサ１０がメインメモリ５にアクセスしていないときなどの任意のタイミングでダーティラインカウント部１２３の出力を参照し、キャッシュメモリ１１０内のダーティラインの数が許容ライン数を超えているか否かを判定する。そして、書き戻し制御部１２４ｅは、キャッシュメモリ１１０内のダーティラインの数が許容ライン数を超えている場合に、ダーティラインのデータをメインメモリ５に書き戻すために必要な情報をライトバッファ１３０に入れる。これにより、キャッシュメモリ１１０内に存在するダーティラインの数が一時的に許容ライン数を超えていたとしても、ダーティラインの数を許容ライン数以下に戻すことができる。また、ダーティラインのデータをメインメモリ５に直接書き戻すのではなく、書き戻しに必要な情報をライトバッファ１３０に入れるようにしているので、メインメモリ５へのデータの書き戻しに伴うプロセッサ１０のストールを有効に防止できる。
【０１０５】
図１９は、プロセッサコア１１がメインメモリ５に対するデータの書き込み要求を出したときに、キャッシュコントローラ１２０ｅの書き込み制御部１２２ｅにより実行される処理を示すフローチャートである。なお、図１９のフローチャートにおけるステップＳ１１０１〜ステップＳ１１０４の処理は、図１５のフローチャートにおけるステップＳ８０１〜ステップＳ８０４の処理と同じである。また、図１９のフローチャートにおけるステップＳ１１０６の処理は、図１５のフローチャートにおけるステップＳ８０６の処理と同じである。図１９のフローチャートにおいて、図１５のフローチャートと相違するのは、ステップＳ１１０５の処理である。
【０１０６】
すなわち、キャッシュコントローラ１２０ｅの書き込み制御部１２２ｅは、ステップＳ１１０３で選択したラインがダーティラインであれば（ステップＳ１１０４：Ｙｅｓ）、ステップＳ１１０５において、ステップＳ１１０３で選択したラインのデータをメインメモリ５に書き戻すために必要な情報をライトバッファ１３０に入れる。
【０１０７】
図２０は、キャッシュコントローラ１２０ｅの書き戻し制御部１２４ｅにより実行される処理の一例を示すフローチャートである。なお、図２０のフローチャートにおけるステップＳ１２０１およびステップＳ１２０２の処理は、図１６のフローチャートにおけるステップＳ９０１およびステップＳ９０２の処理と同じである。また、図２０のフローチャートにおけるステップＳ１２０４の処理は、図１６のフローチャートにおけるステップＳ９０４の処理と同じである。図２０のフローチャートにおいて、図１６のフローチャートと相違するのは、ステップＳ１２０３の処理である。
【０１０８】
すなわち、キャッシュコントローラ１２０ｅの書き戻し制御部１２４ｅは、ステップＳ１２０３において、ステップＳ１２０２で選択したダーティラインのデータをメインメモリ５に書き戻すために必要な情報をライトバッファ１３０に入れる。
【０１０９】
図２１は、キャッシュコントローラ１２０ｅの書き戻し制御部１２４ｅにより実行される処理の他の例を示すフローチャートである。なお、図２１のフローチャートにおけるステップＳ１３０１およびステップＳ１３０２の処理は、図１７のフローチャートにおけるステップＳ１００１およびステップＳ１００２の処理と同じである。また、図２１のフローチャートにおけるステップＳ１３０４およびステップＳ１３０５の処理は、図１７のフローチャートにおけるステップＳ１００４およびステップＳ１００５の処理と同じである。図２１のフローチャートにおいて、図１７のフローチャートと相違するのは、ステップＳ１３０３の処理である。
【０１１０】
すなわち、キャッシュコントローラ１２０ｅの書き戻し制御部１２４ｅは、ステップＳ１３０３において、ステップＳ１３０２で選択したダーティラインのデータをメインメモリ５に書き戻すために必要な情報をライトバッファ１３０に入れる。
【０１１１】
（第６実施例）
次に、第６実施例のキャッシュメモリ装置１００ｆについて説明する。図２２は、第６実施例のキャッシュメモリ装置１００ｆの概要を説明する図である。第６実施例のキャッシュメモリ装置は、第１キャッシュメモリ装置１００ｆ−１と第２キャッシュメモリ装置１００ｆ−２を階層的に組み合わせた構成になっている。プロセッサコア１１側の第１キャッシュメモリ装置１００ｆ−１は、許容ライン数と同じ数のラインを持つライトバック型のキャッシュメモリ装置として動作する。第１キャッシュメモリ装置１００ｆ−１とメインメモリ５の間の第２キャッシュメモリ装置１００ｆ−２は、任意の数のラインを持つライトスルー型のキャッシュメモリとして動作する。第２キャッシュメモリ装置１００ｆ−２はライトスルー型なので、その中にはダーティなラインは存在しない。この組み合わせにより、第１キャッシュメモリ装置１００ｆ−１と第２キャッシュメモリ装置１００ｆ−２から構成されるキャッシュメモリ装置１００ｆ内のダーティラインの最大数(許容ライン数）は、第１キャッシュメモリ装置１００ｆ−１内のダーティラインの最大数と同じライン数に抑えることができる。
【０１１２】
図２３は、第６実施例のキャッシュメモリ装置１００ｆの構成を示す図である。第６実施例のキャッシュメモリ装置１００ｆは、第１キャッシュメモリ装置１００ｆ−１と、第２キャッシュメモリ装置１００ｆ−２と、を備える。第１キャッシュメモリ装置１００ｆ−１は、第１キャッシュメモリ１１０ｆ−１と、第１キャッシュコントローラ１２０ｆ−２と、を備える。第１キャッシュコントローラ１２０ｆ−１は、第１読み出し制御部１２１ｆ−１と、第１書き込み制御部１２２ｆ−１と、を備える。第２キャッシュメモリ装置１００ｆ−２は、第２キャッシュメモリ１１０ｆ−２と、第２キャッシュコントローラ１２０ｆ−２と、を備える。第２キャッシュコントローラ１２０ｆ−２は、第２読み出し制御部１２１ｆ−２と、第２書き込み制御部１２２ｆ−２と、を備える。
【０１１３】
図２４は、プロセッサコア１１がメインメモリ５に対するデータの読み出し要求を出したときに、第１キャッシュコントローラ１２０ｆ−１の第１読み出し制御部１２１ｆ−１により実行される処理を示すフローチャートである。
【０１１４】
プロセッサコア１１からメインメモリ５に対するデータ読み出し要求があると、第１読み出し制御部１２１ｆ−１は、まず、指定されたアドレスに対応するラインが第１キャッシュメモリ１１０ｆ-１内に存在するか否かを判定する（ステップＳ１４０１）。そして、指定されたアドレスに対応するラインが第１キャッシュメモリ１１０ｆ-１内に存在する場合（ステップＳ１４０１：Ｙｅｓ）、第１読み出し制御部１２１ｆ−１は、該当するラインから指定されたアドレスのデータを読み出してプロセッサコア５に返す（ステップＳ１４０２）。
【０１１５】
一方、指定されたアドレスに対応するラインが第１キャッシュメモリ１１０ｆ−１内に存在しない場合（ステップＳ１４０１：Ｎｏ）、第１読み出し制御部１２１ｆ−１は、第１キャッシュメモリ１１０ｆ−１のいずれかのラインを選択する（ステップＳ１４０３）。そして、第１読み出し制御部１２１ｆ−１は、ステップＳ１４０３で選択したラインのダーティフラグ（Ｄ）を参照し、そのラインがダーティラインであるか否かを判定する（ステップＳ１４０４）。そして、ステップＳ１４０３で選択したラインがダーティラインであれば（ステップＳ１４０４：Ｙｅｓ）、第１読み出し制御部１２１ｆ−１は、ステップＳ１４０３で選択したラインに記憶しているデータをメインメモリ５に書き戻すことを第２キャッシュメモリ装置１００ｆ−２に依頼する（ステッＳ１４０５）。一方、ステップＳ１４０３で選択したラインがダーティラインでなければ（ステップＳ１４０４：Ｎｏ）、ステップＳ１４０５の処理は行わずに次に進む。
【０１１６】
次に、第１読み出し制御部１２１ｆ−１は、指定されたアドレスを含むラインサイズ分のデータを第２キャッシュメモリ装置１００ｆ−２から読み出して、そのデータをステップＳ１４０３で選択したラインに記憶する。そして、第１読み出し制御部１２１ｆ−１は、データを記憶したラインのバリッドフラグ（Ｖ）を立てるとともにダーティフラグ（Ｄ）を下げ、指定されたアドレスのデータをプロセッサコア５に返す（ステッＳ１４０６）。
【０１１７】
図２５は、プロセッサコア１１がメインメモリ５に対するデータの書き込み要求を出したときに、第１キャッシュコントローラ１２０ｆ−１の第１書き込み制御部１２２ｆ−１により実行される処理の一例を示すフローチャートである。
【０１１８】
プロセッサコア１１からのメインメモリ５に対するデータ書き込み要求があると、第１書き込み制御部１２２ｆ−１は、まず、指定されたアドレスに対応するラインが第１キャッシュメモリ１１０ｆ−１内に存在するか否かを判定する（ステップＳ１５０１）。そして、指定されたアドレスに対応するラインが第１キャッシュメモリ１１０ｆ−１内に存在する場合（ステップＳ１５０１：Ｙｅｓ）、第１書き込み制御部１２２ｆ−１は、該当するラインを書き込み対象のラインとして選択し、そのライン内の該当個所にデータを書き込んで、そのラインのダーティフラグ（Ｄ）を立てる（ステップＳ１５０２）。
【０１１９】
一方、指定されたアドレスに対応するラインが第１キャッシュメモリ１１０ｆ−１内に存在しない場合（ステップＳ１５０１：Ｎｏ）、第１書き込み制御部１２２ｆ−１は、第１キャッシュメモリ１１０ｆ−１内の１つのラインを書き込み対象のラインとして選択する（ステップＳ１５０３）。次に、第１書き込み制御部１２２ｆ−１は、ステップＳ１５０３で選択したラインのダーティフラグ（Ｄ）を参照し、そのラインがダーティラインであるか否かを判定する（ステップＳ１５０４）。そして、ステップＳ１５０３で選択したラインがダーティラインであれば（ステップＳ１５０４：Ｙｅｓ）、第１書き込み制御部１２２ｆ−１は、ステップＳ１５０３で選択したラインに記憶しているデータをメインメモリ５に書き戻すことを第２キャッシュメモリ装置１００ｆ−２に依頼する（ステップＳ１５０５）。一方、ステップＳ１５０３で選択したラインがダーティラインでなければ（ステップＳ１５０４：Ｎｏ）、ステップＳ１５０５の処理は行わずに次に進む。
【０１２０】
次に、第１書き込み制御部１２２ｆ−１は、指定されたアドレスを含むラインサイズ分のデータを第２キャッシュメモリ装置１００ｆ−２から読み出して、ステップＳ１５０３で選択したラインに記憶し、そのラインのバリッドフラグ（Ｖ）を立てるとともに、そのライン内の該当個所にデータを書き込む（ステップＳ１５０６）。
【０１２１】
図２６は、プロセッサコア１１がメインメモリ５に対するデータの書き込み要求を出したときに、第１キャッシュコントローラ１２０ｆ−１の書き込み制御部１２２ｆ−１により実行される処理の他の例を示すフローチャートである。図２５に示した例と図２６の例とでは、プロセッサコア１１からのメインメモリ５に対するデータ書き込み要求を第１書き込み制御部１２２ｆ−１が処理する際に、書き込み対象のアドレスのデータに対応するラインが第１キャッシュメモリ１１０ｆ−１内に存在しない場合、すなわちミスヒット時の処理方式が異なる。図２５に示した例は、書き込みのミスヒットが発生すると、該当するアドレスを含むラインサイズ分のデータをメインメモリ５から読み出して新しく確保したラインに書き込むことでミスヒット状態を解消する方式である。一方、図２６の例は、書き込みのミスヒットが発生すると、メインメモリ５へのデータの書き込みを第２キャッシュメモリ装置１００ｆ−２に依頼する方式である。
【０１２２】
プロセッサコア１１からのメインメモリ５に対するデータ書き込み要求があると、第１書き込み制御部１２２ｆ−１は、まず、指定されたアドレスに対応するラインが第１キャッシュメモリ１１０ｆ−１内に存在するか否かを判定する（ステップＳ１６０１）。そして、指定されたアドレスに対応するラインが第１キャッシュメモリ１１０ｆ−１内に存在する場合（ステップＳ１６０１：Ｙｅｓ）、第１書き込み制御部１２２ｆ−１は、該当するラインを書き込み対象のラインとして選択し、そのライン内の該当個所にデータを書き込んで、そのラインのダーティフラグ（Ｄ）を立てる（ステップＳ１６０２）。
【０１２３】
一方、指定されたアドレスに対応するラインが第１キャッシュメモリ１１０ｆ−１内に存在しない場合（ステップＳ１６０１：Ｎｏ）、第１書き込み制御部１２２ｆ−１は、メインメモリ５に対するデータの書き込みを第２キャッシュメモリ装置１００ｆ−２に依頼する（ステップＳ１６０３）。
【０１２４】
図２７は、第１キャッシュメモリ装置１００ｆ−１がメインメモリ５に対するデータの読み出し要求を出したときに、第２キャッシュコントローラ１２０ｆ−２の読み出し制御部１２１ｆ−２により実行される処理を示すフローチャートである。
【０１２５】
第１キャッシュメモリ装置１００ｆ−１（詳しくは第１キャッシュメモリ装置１００ｆ−１内の第１キャッシュコントローラ１２０ｆ−１）からメインメモリ５に対するデータ読み出し要求があると、第２読み出し制御部１２１ｆ−２は、まず、指定されたアドレスに対応するラインが第２キャッシュメモリ１１０ｆ-２内に存在するか否かを判定する（ステップＳ１７０１）。そして、指定されたアドレスに対応するラインが第２キャッシュメモリ１１０ｆ−２内に存在する場合（ステップＳ１７０１：Ｙｅｓ）、第２読み出し制御部１２１ｆ−２は、該当するラインから指定されたアドレスのデータを読み出して第１キャッシュメモリ装置１００ｆ−１に返す（ステップＳ１７０２）。
【０１２６】
一方、指定されたアドレスに対応するラインが第２キャッシュメモリ１１０ｆ−２内に存在しない場合（ステップＳ１７０１：Ｎｏ）、第２読み出し制御部１２１ｆ−２は、第２キャッシュメモリ１１０ｆ−２のいずれかのラインを選択する（ステップＳ１７０３）。次に、第２読み出し制御部１２１ｆ−２は、指定されたアドレスを含むラインサイズ分のデータをメインメモリ５から読み出して、そのデータをステップＳ１７０３で選択したラインに記憶する。そして、第２読み出し制御部１２１ｆ−２は、データを記憶したラインのバリッドフラグ（Ｖ）を立て、指定されたアドレスのデータを第１キャッシュメモリ装置１００ｆ−１に返す（ステップＳ１７０４）。
【０１２７】
図２８は、第１キャッシュメモリ装置１００ｆ−１がメインメモリ５に対するデータの書き込み要求を出したときに、第２キャッシュコントローラ１２０ｆ−２の第２書き込み制御部１２２ｆ−２により実行される処理を示すフローチャートである。
【０１２８】
第１キャッシュメモリ装置１００ｆ−１（詳しくは第１キャッシュメモリ装置１００ｆ−１内の第１キャッシュコントローラ１２０ｆ−１）からのメインメモリ５に対するデータ書き込み要求があると、第２書き込み制御部１２２ｆ−２は、まず、指定されたアドレスに対応するラインが第２キャッシュメモリ１１０ｆ−２内に存在するか否かを判定する（ステップＳ１８０１）。そして、指定されたアドレスに対応するラインが第２キャッシュメモリ１１０ｆ−２内に存在する場合（ステップＳ１７０１：Ｙｅｓ）、第２書き込み制御部１２２ｆ−２は、該当するラインを書き込み対象のラインとして選択し、そのライン内の該当個所にデータを書き込む（ステップＳ１７０２）。一方、指定されたアドレスに対応するラインが第２キャッシュメモリ１１０ｆ−２内に存在しない場合（ステップＳ１７０１：Ｎｏ）、ステップＳ１７０２の処理は行わずに次に進む。
【０１２９】
次に、第２書き込み制御部１２２ｆ−２は、メインメモリ５にデータを書き込む（ステップＳ１７０３）。
【０１３０】
なお、第１キャッシュメモリ装置１００ｆ−１は、ライトバッファ１３０を備える構成であってもよい。また、第２キャッシュメモリ装置１００ｆ−２は、ライトバッファ１３０を備える構成であってもよい。
【０１３１】
図２２に示したように、第６実施例のキャッシュメモリ装置１００ｆが備える第１キャッシュメモリ装置１００ｆ−１と第２キャッシュメモリ装置１００ｆ−２との関係は、２階層のキャッシュメモリ装置を備えるＳｏＣ（System on a Chip）あるいはプロセッサにおける、プロセッサコア１１に近いレベル１キャッシュと、メインメモリ５に近いレベル２キャッシュとの関係と同じである。よって、レベル１キャッシュとレベル２キャッシュから構成される階層キャッシュメモリ装置を備え、レベル１キャッシュおよびレベル２キャッシュの制御方式をライトバック方式かライトスルー方式かを設定できるＳｏＣあるいはプロセッサを用いれば、レベル１キャッシュのライン数を許容ライン数として、レベル１キャッシュをライトバック方式に、レベル２キャッシュをライトスルー方式に設定することで、本実施例に基づいた動作をさせることができる。
【０１３２】
（プロセッサのバリエーション）
以上、具体例を挙げて詳細に説明した本実施形態のキャッシュメモリ装置１００は、様々な構成のプロセッサ１０に適用できる。図２９は、情報処理装置１が備えるプロセッサ１０のバリエーションを示す図である。図２に示したプロセッサ１０の構成は、図２９（ａ）に示す例と一致している。
【０１３３】
図２９（ｂ）に示す例は、プロセッサ１０が、１次キャッシュメモリ装置２００と、２次キャッシュメモリ装置３００と、を備える例である。プロセッサ１０が図２９（ｂ）に示す構成の場合、１次キャッシュメモリ装置２００が、本実施形態のキャッシュメモリ装置１００となる。そして、本実施形態のキャッシュメモリ装置１００がデータを書き戻す対象は、２次キャッシュメモリ装置３００となる。なお、第６実施例を図２９（ｂ）のような変形例で実施する場合、１次キャッシュメモリ装置２００がレベル１キャッシュとレベル２キャッシュから構成される階層キャッシュメモリ装置となる。
【０１３４】
２次キャッシュメモリ装置３００は、ＭＲＡＭやＰＣＭなどの不揮発メモリの技術を用いた不揮発キャッシュメモリ装置として実現することが望ましいが、ＳＲＡＭを用いた構成でも構わない。また、２次キャッシュメモリ装置３００はライトスルー型でもライトバック型でもよい。２次キャッシュメモリ装置３００をライトバック型にする方がメインメモリ５へのアクセス頻度を削減することができる。なお、図２９（ｂ）に示す例では、１次キャッシュメモリ装置２００と２次キャッシュメモリ装置３００との２段のキャッシュメモリ装置を備える構成であるが、３段以上のキャッシュメモリ装置を備える構成であってもよい。３段以上のキャッシュメモリ装置を備える構成の場合も、１次キャッシュメモリ装置２００が、本実施形態のキャッシュメモリ装置１００となる。
【０１３５】
図２９（ｃ）に示す例は、プロセッサ１０が、第１プロセッサコア１１ａと第２プロセッサコア１１ｂとを備えるマルチコアプロセッサとして構成された例である。この図２９（ｃ）の例では、第１プロセッサコア１１ａが第１の１次キャッシュメモリ装置２００ａを使用し、第２プロセッサコア１１ｂが第２の１次キャッシュメモリ装置２００ｂを使用する。また、第１の１次キャッシュメモリ装置２００ａと第２の１次キャッシュメモリ装置２００ｂとに共通の２次キャッシュメモリ装置３００が設けられている。
【０１３６】
プロセッサ１０が図２９（ｃ）に示す構成の場合、第１の１次キャッシュメモリ装置２００ａおよび第２の１次キャッシュメモリ装置２００ｂが、本実施形態のキャッシュメモリ装置１００となる。そして、本実施形態のキャッシュメモリ装置１００がデータを書き戻す対象は、２次キャッシュメモリ装置３００となる。なお、図２９（ｃ）に示す例では、第１プロセッサコア１１ａおよび第２プロセッサコア１１ｂの２つのプロセッサコアを備える構成であるが、３つ以上のプロセッサコアを備える構成であってもよい。３つ以上のプロセッサコアを備える構成の場合も、各プロセッサコアが使用する１次キャッシュメモリ装置が、本実施形態のキャッシュメモリ装置１００となる。
【０１３７】
以上説明したように、本実施形態のキャッシュメモリ装置１００は、ライトバック型の書き込み方式を基本にしながら、キャッシュメモリ１１０内に存在するダーティラインの数を許容ライン数で制限し、ダーティラインの数が許容ライン数に超えるとダーティラインのデータをメインメモリ５に書き戻すようにしている。したがって、プロセッサ１０がプログラムを実行している間のメインメモリ５への書き込み頻度を削減できるといったライトバック型の利点を活かしつつ、電源の供給が遮断されるときにキャッシュメモリ１１０からメインメモリ５に書き戻すデータ量を抑えることができる。したがって、本実施形態のキャッシュメモリ装置１００を備えるプロセッサ１０は、実行モードから、キャッシュメモリ装置１００に対する電源の供給を遮断する深い待機モードに切り替わるのに要する時間と消費電力を削減することができるので、ごく短時間の待機時間であっても深い待機モードに切り替えることができ、大幅な消費電力の削減を図ることができる。
【０１３８】
以上、本発明の実施形態を説明したが、ここで説明した実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。ここで説明した新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。ここで説明した実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１３９】
１  情報処理装置
５  メインメモリ
１０  プロセッサ
１１  プロセッサコア
１００  キャッシュメモリ装置
１１０  キャッシュメモリ
１１１  Ｒキャッシュメモリ
１１２  Ｗキャッシュメモリ
１２０  キャッシュコントローラ
１２２  書き込み制御部
１２３  ダーティラインカウント部
１２４  書き戻し制御部
１３０  ライトバッファ
【図１】
2013065150.tif 000003
【図２】
2013065150.tif 000004
【図３】
2013065150.tif 000005
【図４】
2013065150.tif 000006
【図５】
2013065150.tif 000007
【図６】
2013065150.tif 000008
【図７】
2013065150.tif 000009
【図８】
2013065150.tif 000010
【図９】
2013065150.tif 000011
【図１０】
2013065150.tif 000012
【図１１】
2013065150.tif 000013
【図１２】
2013065150.tif 000014
【図１３】
2013065150.tif 000015
【図１４】
2013065150.tif 000016
【図１５】
2013065150.tif 000017
【図１６】
2013065150.tif 000018
【図１７】
2013065150.tif 000019
【図１８】
2013065150.tif 000020
【図１９】
2013065150.tif 000021
【図２０】
2013065150.tif 000022
【図２１】
2013065150.tif 000023
【図２２】
2013065150.tif 000024
【図２３】
2013065150.tif 000025
【図２４】
2013065150.tif 000026
【図２５】
2013065150.tif 000027
【図２６】
2013065150.tif 000028
【図２７】
2013065150.tif 000029
【図２８】
2013065150.tif 000030
【図２９】
2013065150.tif 000031