キャッシュメモリ装置、プロセッサ、および情報処理装置
【課題】十分な消費電力の削減が図ることができるキャッシュメモリ装置を提供する。
【解決手段】キャッシュメモリ装置100aは、記憶装置のデータをキャッシュする。キャッシュメモリ装置100aは、記憶部110aと、制御部120aと、を備える。記憶部110aは、複数のキャッシュラインを有する。制御部120aは、前記複数のキャッシュラインのうち、前記記憶装置に書き込まれていないデータを含むダーティラインの数が予め定めた所定数を超える場合に、前記ダーティラインのデータを前記記憶装置に書き込む。
【解決手段】キャッシュメモリ装置100aは、記憶装置のデータをキャッシュする。キャッシュメモリ装置100aは、記憶部110aと、制御部120aと、を備える。記憶部110aは、複数のキャッシュラインを有する。制御部120aは、前記複数のキャッシュラインのうち、前記記憶装置に書き込まれていないデータを含むダーティラインの数が予め定めた所定数を超える場合に、前記ダーティラインのデータを前記記憶装置に書き込む。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施の形態は、キャッシュメモリ装置、プロセッサ、および情報処理装置に関する。
【背景技術】
【0002】
情報処理装置において、プロセッサは、外部からのデータの入力、入力されたデータの処理、処理した結果の外部への出力、を繰り返すことで、プログラムを実行する。プロセッサが外部からのデータの入力を待機しているとき、あるいはタイマに設定した時刻が経過するのを待機しているときなど、他に実行すべき処理がない場合、プロセッサは低消費電力で待機するモード(以下、「待機モード」という。)に入る。待機モード中のプロセッサは、外部からデータが入力されたことや、タイマに設定した時刻が経過したことなどが割り込みによって通知されると、再びプログラムを実行するモード(以下、「実行モード」という。)に入り、割り込み処理を開始する。
【0003】
待機モード中のプロセッサは、プロセッサ内部の各種モジュール(演算器やキャッシュメモリなど)に対して、クロックの周波数を低くしたり、クロックの供給を停止したり、電源の供給を停止するなどの手段によって、消費電力を削減する。このとき、クロックや電源の供給を停止するモジュールの数が多いほど、消費電力の削減量が大きくなる。特に、高集積化した現代のプロセッサでは、リーク電流などの影響でキャッシュメモリの消費電力は大きい。そのため、待機モード中にキャッシュメモリに対する電源の供給を停止すれば、消費電力の大幅な削減が期待できる。
【0004】
キャッシュメモリは、プロセッサによるデータの書き込み方式の違いにより、ライトスルー型とライトバック型に大別される。ライトスルー型のキャッシュメモリを持つプロセッサでは、プロセッサによるメインメモリへのデータの書き込みは、キャッシュメモリ内への書き込みとメインメモリへの書き込みが同時に行われる。これに対して、ライトバック型のキャッシュメモリを持つプロセッサでは、プロセッサによるメインメモリへのデータの書き込みは、キャッシュメモリ内への書き込みだけで完了し、そのデータは後のしかるべきタイミングでメインメモリに書き込まれる。
【0005】
ライトバック型のキャッシュメモリを持つプロセッサでは、キャッシュメモリへのデータの書き込みが終われば、メインメモリへの書き込みが完了することを待つことなく、プログラムの実行を続けることができる。また、プロセッサが同じアドレスのデータあるいはキャッシュメモリ内の同じラインのデータを複数回書き込んだ場合には、これらのデータをメインメモリに対してまとめて書き込むことができる。そのため、一般にライトバック型のキャッシュメモリの方が、ライトスルー型のキャッシュメモリに比べて、処理効率が高くなって消費電力の削減にもつながる。
【0006】
しかし、ライトバック型のキャッシュメモリを持つプロセッサでは、キャッシュメモリに対する電源供給を停止する際に、キャッシュメモリ内にのみ書き込まれてメインメモリに書き込まれていないデータをメインメモリに書き込んだ後に、キャッシュメモリに対する電源の供給を遮断する必要がある。このため、ライトバック型のキャッシュメモリは、実行モードから待機モードへの切り替えに要するコスト(時間や消費電力)が、ライトスルー型のキャッシュメモリに比べて大きい。キャッシュメモリに対する電源の供給を停止する待機モードへの切り替え頻度が少ない場合には、待機モードへ入るためのコストは無視できるが、その頻度が大きくなると無視できなくなる。例えば、消費電力の大幅な削減を実現するために、プロセッサが数ミリ秒乃至は数十ミリ秒単位のごく短い待機時間でもキャッシュメモリに対する電源の供給を停止させる待機モードに入るようにした場合、実行モードから待機モードへの切り替えが頻繁に発生し、切り替えに要するコストが大きいために、期待通りの消費電力の削減が図れない。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】特開2009−64456号公報
【非特許文献】
【0008】
【非特許文献1】砂田 徹也ら著“細粒度パワーゲーティングを制御するOSの資源管理方式”、情報処理学会研究報告、Vol.2010-OS-114 No.8, 2010
【発明の概要】
【発明が解決しようとする課題】
【0009】
従来技術では、十分な消費電力の削減が図れない。
【課題を解決するための手段】
【0010】
実施形態のキャッシュメモリ装置は、記憶装置のデータをキャッシュする。このキャッシュメモリ装置は、記憶部と、制御部と、を備える。記憶部は、複数のキャッシュラインを有する。制御部は、前記複数のキャッシュラインのうち、前記記憶装置に書き込まれていないデータを含むダーティラインの数が予め定めた所定数を超える場合に、前記ダーティラインのデータを前記記憶装置に書き込む。
【図面の簡単な説明】
【0011】
【図1】実施形態の情報処理装置の外観図。
【図2】実施形態の情報処理装置のハードウェア構成図。
【図3】実施形態のキャッシュメモリ装置の概要を説明する図。
【図4】第1実施例のキャッシュメモリ装置の構成図。
【図5】第1実施例の読み出し制御部による処理のフローチャート。
【図6】第1実施例の書き込み制御部による処理のフローチャート。
【図7】第2実施例のキャッシュメモリ装置の構成図。
【図8】第2実施例の読み出し制御部による処理のフローチャート。
【図9】第2実施例の書き込み制御部による処理のフローチャート。
【図10】第3実施例のキャッシュメモリ装置の構成図。
【図11】第3実施例の読み出し制御部による処理のフローチャート。
【図12】第3実施例の書き込み制御部による処理のフローチャート。
【図13】第3実施例のライトバッファの動作のフローチャート。
【図14】第4実施例のキャッシュメモリ装置の構成図。
【図15】第4実施例の書き込み制御部による処理のフローチャート。
【図16】第4実施例の書き戻し制御部による処理のフローチャート。
【図17】第4実施例の書き戻し制御部による処理のフローチャート。
【図18】第5実施例のキャッシュメモリ装置の構成図。
【図19】第5実施例の書き込み制御部による処理のフローチャート。
【図20】第5実施例の書き戻し制御部による処理のフローチャート。
【図21】第5実施例の書き戻し制御部による処理のフローチャート。
【図22】第6実施例のキャッシュメモリ装置の概要を説明する図。
【図23】第6実施例のキャッシュメモリ装置の構成図。
【図24】第6実施例の第1読み出し制御部による処理のフローチャート。
【図25】第6実施例の第1書き込み制御部による処理のフローチャート。
【図26】第6実施例の第1書き込み制御部による処理のフローチャート。
【図27】第6実施例の第2読み出し制御部による処理のフローチャート。
【図28】第6実施例の第2書き込み制御部による処理のフローチャート。
【図29】実施形態のプロセッサのバリエーションを示す図。
【発明を実施するための形態】
【0012】
以下、実施形態のキャッシュメモリ装置、プロセッサ、および情報処理装置について、図面を参照して説明する。
【0013】
(情報処理装置)
図1は、本実施形態の情報処理装置1の外観を示す図である。この情報処理装置1は、タブレット型の情報端末として構成されている。情報処理装置1は、端末表面に表示部2aを備える。表示部2aには、例えば、低消費電力の反射型液晶ディスプレイ、あるいは電子ペーパーなどが用いられる。また、情報処理装置1は、端末表面の表示部2a以外の部分に太陽電池3を備える。また、情報処理装置1は、表示部2aの表面にポインティングデバイスとして機能するタッチパネル2bを備える。さらに、情報処理装置1は、端末表面の表示部2aと重ならない位置にキーボード4を備える。キーボード4は、太陽電池3の表面に透明なタッチパネル2bを重ねることで実現してもよい。また、透明な素材または遮光性の部分の少ない素材を用いた機械式のキーボード4として実現してもよい。
【0014】
図2は、本実施形態の情報処理装置1のハードウェア構成例を示すブロック図である。情報処理装置1は、主なハードウェア構成として、プロセッサ10と、メインメモリ(記憶装置)5と、2次ストレージ6と、太陽電池3と、蓄電部7と、電源制御部8と、表示部2aと、タッチパネル2bと、キーボード4と、通信インタフェース(通信I/F)9と、を備えている。
【0015】
情報処理装置1は、太陽電池3で発電した電力で動作する。しかし、太陽電池3で発電する電力だけでは動作時(何らかの処理を実行しているとき)の情報処理装置1全体のピークの消費電力をまかなえない。このため、アイドル時(ユーザからの応答待ちの時間や、情報処理装置1を使用していない時間など)に太陽電池3で発電した余剰電力を蓄電部7に充電しておく。そして、動作時には、電源制御部8が、蓄電部7からの電力を情報処理装置1の各部に供給するように制御する。このような電源制御は、ピークシフトとも呼ばれる。
【0016】
蓄電部7は、リチウムイオン電池などのバッテリ、または電気2重層キャパシタなどを、単独で、または組み合わせて実現できる。例えば、太陽電池3で発電した電力をまず電気2重層キャパシタに蓄積し、蓄積した電力をさらにリチウムイオン電池に充電するような組み合わせが可能である。
【0017】
電源制御部8は、蓄電部7に蓄積している電力量を管理し、プロセッサ10などの外部の構成部が蓄電部7に蓄積している電力量を知るための機能を備える。プロセッサ10が蓄電部7に蓄積している電力量を知る機能は、例えば、蓄電部7に蓄積している電力量が予め決められた規定量より少なくなった時点、または多くなった時点で、電源制御部8がプロセッサ10に対して割り込みで伝えるように構成することで実現できる。また、別の実現方法としては、プロセッサ10からのコマンドを受け取ると電源制御部8が現在の電力量をプロセッサ10に送り返すように実装することもできる。
【0018】
プロセッサ10は、アプリケーションプログラムやオペレーティングシステムを実行して情報処理装置1の全体を制御する。本実施形態の情報処理装置1は、例えばLinux(登録商標)などのオペレーティングシステムを搭載している。
【0019】
プロセッサ10は、プロセッサコア11と、キャッシュメモリ装置100とを備える。プロセッサコア11は、メインメモリ5にアクセスしながらアプリケーションプログラムやオペレーティングシステムを実行する。キャッシュメモリ装置100は、メインメモリ5のデータの一部をキャッシュする。プロセッサ10は、詳細を後述するキャッシュメモリ装置100を備えることで、キャッシュメモリ装置100に対する電源の供給を停止する深い待機モードに積極的に入るようにし、待機モード中の消費電力の大幅な削減を実現する。
【0020】
メインメモリ5は、例えば、高速に読み書きできるMRAM(Magnetoresistive Random Access Memory)などの不揮発メモリで実現する。MRAM以外に、PCM(Phase Change Memory、PRAMやPCRAMと呼ばれることもある)やReRAM(Resistance Random Access Memory)をメインメモリ5として用いることもできる。また、待機時の消費電力が小さなローパワーDRAM(Dynamic Random Access Memory)や、通常のDRAMをメインメモリ5として用いるようにしてもよい。
【0021】
2次ストレージ6は、情報処理装置1が必要とするデータやプログラムを記憶する補助記憶部である。例えば、2次ストレージ6は、フラッシュメモリのチップを搭載した記憶部により実現できる。また、2次ストレージ6としてSDカードやSSDを用いることもできる。
【0022】
通信I/F9は、例えば無線LAN(Local Area Network)などによる通信を行うためのインタフェースである。通信のプロトコルは無線LANに限られず、有線LAN、Bluetooth(登録商標)、ZigBee(登録商標)、赤外線通信、可視光通信、光回線網、電話回線網、およびインターネットなどのあらゆるプロトコルを利用できる。
【0023】
(キャッシュメモリ装置の概要)
次に、本実施形態の情報処理装置1のプロセッサ10が備えるキャッシュメモリ装置100について説明する。図3は、キャッシュメモリ装置100の概要を説明する図である。
【0024】
キャッシュメモリ装置100は、図3に示すように、キャッシュメモリ(記憶部)110と、キャッシュコントローラ(制御部)120と、を備える。
【0025】
キャッシュメモリ110は、キャッシュしたデータを記憶するメモリである。キャッシュメモリ110は、複数のキャッシュライン(以下、単に「ライン」という。)を有する。キャッシュメモリ110の各ラインは、一定のサイズのまとまったデータを記憶するようになっている。各ラインが記憶するデータのサイズをラインサイズと呼び、ラインサイズの代表的な例は64バイトである。キャッシュメモリ110の各ラインのことをエントリと呼ぶ場合もある。
【0026】
キャッシュメモリ110の各ラインは、そのラインに記憶するデータのメインメモリ5上のアドレスを指定する「アドレス」欄と、そのラインに有効なデータが入っていることを示す「バリッドフラグ(V)」と、そのラインがダーティラインであることを示す「ダーティフラグ(D)」と、ラインサイズのデータを記憶する「データ」欄とを有し、これら4つの情報の組を保持する。ダーティラインとは、プロセッサ10の書き込みデータが記憶され、且つ、その書き込みデータがメインメモリ5にはまだ書き込まれていない状態のラインをいう。なお、後述する実施例においては、ラインのバリッドフラグ(V)が立っていない時はダーティフラグ(D)が下がっているように管理することで、ダーティフラグ(D)をチェックすることでラインがダーティラインであるか否かを簡単に判断できるように実施する方法を示している。ラインのバリッドフラグ(V)が立っていないときはダーティフラグ(D)の値が不定になるように実施する場合は、バリッドフラグ(V)とダーティフラグ(D)の両方が立っていることを確認することで、ラインがダーティラインか否かを判断するように実施できる。
【0027】
キャッシュコントローラ120は、読み出し制御部121と、書き込み制御部122と、を備える。読み出し制御部121は、プロセッサコア11からのメインメモリ5に対するデータ読み出し要求を処理する。書き込み制御部122は、プロセッサコア11からのメインメモリ5に対するデータ書き込み要求を処理する。プロセッサコア11がプログラムの実行に伴って1つの命令でメインメモリ5に対して読み書きするデータのサイズは、例えば、4バイト、1バイト、8バイトといったように、キャッシュメモリ110のラインサイズよりも小さい。
【0028】
プロセッサコア11がメインメモリ5からデータを読み出す場合、キャッシュコントローラ120の読み出し制御部121は、プロセッサコア11からのデータ読み出し要求に従い、まず、指定されたアドレスに対応するラインがキャッシュメモリ110中に存在するか否かを確認する。そして、該当するラインがキャッシュメモリ110中に存在していれば(ヒット)、読み出し制御部121は、指定されたアドレスのデータをキャッシュメモリ110から読み出してプロセッサコア11に返す。一方、該当するラインがキャッシュメモリ110中に存在していなければ(ミスヒット)、読み出し制御部121は、指定されたアドレスを含むラインサイズ分のデータをメインメモリ5から読み出してキャッシュメモリ110に記憶した後、指定されたアドレスのデータをキャッシュメモリ110から読み出してプロセッサコア11に返す。ミスヒット時にメインメモリ5からキャッシュメモリ110にラインサイズ分のデータをまとめて読み込んでおくことによって、次に近傍のアドレスのデータをアクセス(読み出しあるいは書き込み)する際は、そのデータは既にキャッシュメモリ110上に読み込まれているため、高速にアクセスできる。
【0029】
また、プロセッサコア11がメインメモリ5にデータを書き込む場合は、キャッシュコントローラ120の書き込み制御部122が、プロセッサコア11からのデータ書き込み要求に従い、まず、指定されたアドレスに対応するラインがキャッシュメモリ110中に存在するか否かを確認する。ここで、データの書き込みは、直前に読み出したデータの上書きかその近傍のアドレスへの書き込みが多い(参照局所性が高い)ため、多くの場合、書き込みたいアドレスに対応するラインがキャッシュメモリ110中に存在する。該当するラインがキャッシュメモリ110中に存在する場合(ヒット)、書き込み制御部122は、指定されたアドレスにデータを書き込む。一方、該当するラインがキャッシュメモリ110中に存在しない場合は(ミスヒット)、書き込み制御部122は、例えば、指定されたアドレスを含むラインサイズ分のデータをメインメモリ5から読み出してキャッシュメモリ110に記憶した後、指定されたアドレスのデータを書き換える。なお、ミスヒット時に、キャッシュメモリ110のラインをデータ書き込み用に確保して、そのライン中のいずれかのバイトにデータを書き込むとともに、どのバイトにデータを書き込んだかを示すフラグを別途用意することで、メインメモリ5にアクセスすることなくキャッシュメモリ110にデータを書き込めるようにする方法もある。また、ミスヒット時に、キャッシュメモリ110にはデータを書き込まず、メインメモリ5に直接データを書き込む方法もある。本実施形態は、いずれのミスヒット時の処理方式とも組み合わせて実施することができる。
【0030】
一般的に、キャッシュメモリ装置の構成方法としては、フルアソシアティブ型、ダイレクトマッピング型、(nウェイ)セットアソシアティブ型などが知られている。
【0031】
フルアソシアティブ型のキャッシュメモリ装置では、プロセッサコア11がメインメモリ5をアクセスするためのアドレスを上位と下位に分け、上位アドレスでキャッシュメモリ110の「アドレス」欄を検索し、上位アドレスと同じアドレスの「アドレス」欄を持つラインがあれば、そのラインの「データ」欄の中の下位アドレスで指定される位置のデータをアクセスする。
【0032】
ダイレクトマッピング型あるいはセットアソシアティブ型の場合は、プロセッサコア11がメインメモリ5をアクセスするためのアドレスを上位と中位と下位に分け、中位アドレスでキャッシュメモリ110のライン(セットアソシアティブの場合は各ウェイのラインの集合)を選択し、選択したラインのうち、「アドレス」欄が上位アドレスと等しいラインがあれば、そのラインの「データ」欄の中の下位アドレスで指定される位置のデータをアクセスする。
【0033】
本実施形態のキャッシュメモリ装置100は、以上の一般的に知られている構成方法をいずれも採用できる。
【0034】
また、本実施形態のキャッシュメモリ装置100は、ライトバック型のデータ書き込み方式を基本とする。すなわち、本実施形態のキャッシュメモリ装置100は、キャッシュメモリ110のダーティフラグが立っているダーティラインのデータを、ダーティラインにデータを書き込んだときよりも後のしかるべき時点で、メインメモリ5に書き込む(書き戻す)。このダーティラインのデータをメインメモリ5に書き込むタイミングは、プロセッサコア11がアクセスした他のアドレスのデータを格納するためにダーティラインのデータを入れ替えるとき(言い換えれば、ダーティラインを再利用するとき)、あるいは、プロセッサコア11がキャッシュメモリ110のパージ(フラッシュとも呼ぶ)を指示する命令を出したとき、あるいは、マルチコアプロセッサで他のプロセッサコアのキャッシュメモリからアクセスされたときなど、様々である。
【0035】
本実施形態のキャッシュメモリ装置100は、キャッシュメモリ110内に存在するダーティラインの数が予め定めた所定数(以下、「許容ライン数」という。)を超えないように管理する。すなわち、本実施形態のキャッシュメモリ装置100では、キャッシュメモリ110内のダーティラインが許容ライン数を超える場合には、ダーティラインのデータをメインメモリ5に書き込む(書き戻す)機能を、キャッシュコントローラ120に持たせている。このような機能をキャッシュコントローラ120が持つことで、本実施形態のキャッシュメモリ装置100は、ライトバック型の特徴を活かしてメインメモリ5への書き込み頻度を削減し、メインメモリ5への書き込み完了待ちによるプロセッサコア11のストール(メインメモリ5への書き込みの完了を待っている間プロセッサコア11が次の命令の実行に進めない状態)の発生を有効に抑制しながら、キャッシュメモリ装置100に対する電源の供給を遮断するときに、プロセッサコア11からのパージを指示する命令に応じてキャッシュメモリ110からメインメモリ5に書き戻すデータ量を抑えることができる。したがって、本実施形態のキャッシュメモリ装置100を備えるプロセッサ10は、実行モードから、キャッシュメモリ装置100に対する電源の供給を遮断する深い待機モードに切り替わるのに要する時間と消費電力を削減することができるので、ごく短時間の待機時間であっても深い待機モードに切り替えることができ、大幅な消費電力の削減を図ることができる。
【0036】
また、本実施形態の適用ケースについて説明する。ライトバック型のキャッシュメモリを持つプロセッサでは、キャッシュメモリに対する電源供給を停止する際に、キャッシュメモリ内にのみ書き込まれてメインメモリに書き込まれていないデータをメインメモリに書き込んだ後に、キャッシュメモリに対する電源の供給を遮断する必要がある。このため、ライトバック型のキャッシュメモリは、実行モードから待機モードへの切り替えに要するコスト(時間や消費電力)が、ライトスルー型のキャッシュメモリに比べて大きい。キャッシュメモリに対する電源の供給を停止する待機モードへの切り替え頻度が少ない場合には、待機モードへ入るためのコストは無視できるが、その頻度が大きくなると無視できなくなる。例えば、消費電力の大幅な削減を実現するために、プロセッサが数ミリ秒乃至は数十ミリ秒単位のごく短い待機時間でもキャッシュメモリに対する電源の供給を停止させる待機モードに入るようにした場合、実行モードから待機モードへの切り替えが頻繁に発生し、切り替えに要するコストが大きいために、期待通りの消費電力の削減が図れない。このようなケースで、本実施形態の発明を適用すると、プログラム実行中のメインメモリへのデータの書き込み頻度が小さく、かつ、実行モードから待機モードへの切り替えに要する時間や消費電力を抑えることができる。
【0037】
以下、本実施形態のキャッシュメモリ装置100の具体例(第1実施例乃至第6実施例)について、図4乃至図28を参照して説明する。以下では、第1実施例のキャッシュメモリ装置100をキャッシュメモリ装置100a、第2実施例のキャッシュメモリ装置100をキャッシュメモリ装置100b、第3実施例のキャッシュメモリ装置100をキャッシュメモリ装置100c、第4実施例のキャッシュメモリ装置100をキャッシュメモリ装置100d、第5実施例のキャッシュメモリ装置100をキャッシュメモリ装置100e、第6実施例のキャッシュメモリ装置100をキャッシュメモリ装置100fと表記する。
【0038】
(第1実施例)
まず、第1実施例のキャッシュメモリ装置100aについて説明する。図4は、第1実施例のキャッシュメモリ装置100aの構成を示す図である。第1実施例のキャッシュメモリ装置100aは、キャッシュメモリ110aと、キャッシュコントローラ120aと、を備える。
【0039】
キャッシュメモリ110aは、Rキャッシュメモリ(第1記憶部)111と、Wキャッシュメモリ(第2記憶部)112と、の2つの記憶部を有する。Rキャッシュメモリ111は、任意の数のラインを有するキャッシュメモリである。Wキャッシュメモリ112は、許容ライン数(許容するダーティラインの数)のラインを有するキャッシュメモリである。プロセッサ10がメインメモリ5から読み出したデータは、Rキャッシュメモリ111とWキャッシュメモリ112のいずれかに記憶されるが、プロセッサ10がメインメモリ5に書き込むデータは、Wキャッシュメモリ112にのみ記憶される。つまり、第1実施例のキャッシュメモリ装置100aでは、ダーティラインはWキャッシュメモリ112にしか存在させない。そのため、Rキャッシュメモリ111の各ラインには、ダーティフラグ(D)欄は不要である。
【0040】
キャッシュコントローラ120aは、読み出し制御部121aと、書き込み制御部122aと、を備える。
【0041】
読み出し制御部121aは、プロセッサコア11からのメインメモリ5に対するデータ読み出し要求があると、Rキャッシュメモリ111とWキャッシュメモリ112の双方を対象としてデータの読み出しを行う。
【0042】
一方、書き込み制御部122aは、プロセッサコア11からのメインメモリ5に対するデータ書き込み要求があると、Wキャッシュメモリ112のみを対象としてデータの書き込みを行う。そして、書き込み制御部122aは、Wキャッシュメモリ112のラインがすべてダーティラインとなっており、新たなデータを書き込むラインを確保する必要がある場合に、そのダーティラインのデータをメインメモリ5に書き戻してラインを開放した後、そのラインにデータを書き込む。これにより、キャッシュメモリ110a内に存在するダーティラインの数を、常に許容ライン数以下とすることができる。
【0043】
図5は、プロセッサコア11がメインメモリ5に対するデータの読み出し要求を出したときに、キャッシュコントローラ120aの読み出し制御部121aにより実行される処理を示すフローチャートである。
【0044】
プロセッサコア11からのメインメモリ5に対するデータ読み出し要求があると、読み出し制御部121aは、まず、指定されたアドレスに対応するラインがRキャッシュメモリ111中に存在するか否かを判定する(ステップS101)。そして、指定されたアドレスに対応するラインがRキャッシュメモリ111中に存在する場合(ステップS101:Yes)、読み出し制御部121aは、該当するラインから指定されたアドレスのデータを読み出してプロセッサコア11に返す(ステップS102)。
【0045】
一方、指定されたアドレスに対応するラインがRキャッシュメモリ111中に存在しない場合(ステップS101:No)、読み出し制御部121aは、次に、指定されたアドレスに対応するラインがWキャッシュメモリ112中に存在するか否かを判定する(ステップS103)。そして、指定されたアドレスに対応するラインがWキャッシュメモリ112中に存在する場合(ステップS103:Yes)、読み出し制御部121aは、該当するラインから指定されたアドレスのデータを読み出してプロセッサコア11に返す(ステップS104)。
【0046】
一方、指定されたアドレスに対応するラインがWキャッシュメモリ112中に存在しない場合(ステップS103:No)、読み出し制御部121aは、Rキャッシュメモリ111のいずれかのラインを選択し、指定されたアドレスを含むラインサイズ分のデータをメインメモリ5から読み出して選択したラインに記憶する。そして、読み出し制御部121aは、データを記憶したラインのバリッドフラグ(V)を立て、指定されたアドレスのデータをプロセッサコア11に返す(ステップS105)。
【0047】
なお、以上の例では、ステップS105において、メインメモリ5から新しく読み出したデータを記憶するキャッシュメモリ110のラインをRキャッシュメモリ111に確保するようにしているが、Rキャッシュメモリ111とWキャッシュメモリ112のいずれかから確保するようにしてもよい。その場合、Wキャッシュメモリ112中のダーティフラグ(D)が立っているラインを確保して再利用する際には、そのライン(ダーティライン)に記憶しているデータをメインメモリ5に書き戻してから再利用する必要がある。
【0048】
図6は、プロセッサコア11がメインメモリ5に対するデータの書き込み要求を出したときに、キャッシュコントローラ120aの書き込み制御部122aにより実行される処理を示すフローチャートである。
【0049】
プロセッサコア11からのメインメモリ5に対するデータ書き込み要求があると、書き込み制御部122aは、まず、指定されたアドレスに対応するラインがWキャッシュメモリ112中に存在するか否かを判定する(ステップS201)。そして、指定されたアドレスに対応するラインがWキャッシュメモリ112中に存在する場合(ステップS201:Yes)、書き込み制御部122aは、該当するラインを書き込み対象のラインとして選択する(ステップS202)。
【0050】
一方、指定されたアドレスに対応するラインがWキャッシュメモリ112中に存在しない場合(ステップS201:No)、書き込み制御部122aは、Wキャッシュメモリ112内の1つのラインを書き込み対象のラインとして選択する(ステップS203)。このとき、書き込み制御部122aは、Wキャッシュメモリ112内にダーティフラグ(D)が立っていないラインがあれば、そのラインを書き込み対象のラインとして優先的に選択し、Wキャッシュメモリ112内のすべてのラインにダーティフラグ(D)が立っている、つまりWキャッシュメモリ112内のすべてのラインがダーティラインの場合に、ダーティラインのいずれかを書き込み対象のラインとして選択する。
【0051】
次に、書き込み制御部122aは、ステップS203で選択したラインがダーティラインであるか否かを判定する(ステップS204)。そして、ステップS203で選択したラインがダーティラインであれば(ステップS204:Yes)、書き込み制御部122aは、ステップS203で選択したラインのデータをメインメモリ5に書き戻す(ステップS205)。一方、ステップS203で選択したラインがダーティラインでなければ(ステップS204:No)、ステップS205の処理は行わずに次に進む。
【0052】
次に、書き込み制御部122aは、指定されたアドレスに対応するラインがRキャッシュメモリ111中に存在するか否かを判定する(ステップS206)。そして、指定されたアドレスに対応するラインがRキャッシュメモリ111中に存在しなければ(ステップS206:No)、書き込み制御部122aは、指定されたアドレスを含むラインサイズ分のデータをメインメモリ5から読み出して、ステップS203で選択したラインに記憶する(ステップS207)。
【0053】
一方、指定されたアドレスに対応するラインがRキャッシュメモリ111中に存在する場合は(ステップS206:Yes)、書き込み制御部122aは、指定されたアドレスに対応するRキャッシュメモリ111のラインの内容を、ステップS203で選択したラインにコピーする。そして、コピー元のRキャッシュメモリ111のラインのバリッドフラグ(V)を下げ、当該ラインを未使用にする(ステップS208)。
【0054】
次に、書き込み制御部122aは、ステップS202またはステップS203で選択したラインの指定されたアドレスにデータを書き込み、当該ラインのダーティフラグ(D)を立てる(ステップS209)。
【0055】
以上説明した第1実施例のキャッシュメモリ装置100aは、フルアソシアティブ型、ダイレクトマッピング型、セットアソシアティブ型など、従来知られている様々な方式のキャッシュメモリ装置をベースに実現できる。フルアソシアティブ型をベースとしたキャッシュメモリ装置100aは、キャッシュメモリ110aのラインを2つの部分に分けてキャッシュコントローラ120aが管理することで実現することができる。ダイレクトマッピング型をベースとしたキャッシュメモリ装置100aの場合には、Rキャッシュメモリ111とWキャッシュメモリ112の2つダイレクトマッピング型のキャッシュメモリを用意することで実現できる。セットアソシアティブ型をベースとしたキャッシュメモリ装置100aの場合には、セット単位でRキャッシュメモリ111とWキャッシュメモリ112に分けて実現できる。例えば4ウェイセットアソシアティブ型の場合には、3つのウェイをRキャッシュメモリ111に、1つのウェイをWキャッシュメモリ112に対応させると、ダーティラインがキャッシュメモリ110a中の総ライン数の25%を超えないように実現することができる。
【0056】
なお、以上説明した第1実施例のキャッシュメモリ装置100aに対して、ライトバッファを付加することも可能である。ライトバッファを付加した場合、図6のステップS205でラインのデータをメインメモリ5に書き戻す代わりに、書き戻すのに必要な情報をライトバッファに入れておく。ライトバッファは、プロセッサ10からメインメモリ5へのアクセスがないタイミングを見計らって、メインメモリ5へデータを書き込む。
【0057】
(第2実施例)
次に、第2実施例のキャッシュメモリ装置100bについて説明する。図7は、第2実施例のキャッシュメモリ装置100bの構成を示す図である。第2実施例のキャッシュメモリ装置100bは、キャッシュメモリ110と、キャッシュコントローラ120bと、を備える。キャッシュメモリ110は、図3に示したキャッシュメモリ110と同様である。
【0058】
キャッシュコントローラ120bは、読み出し制御部121と、書き込み制御部122bと、ダーティラインカウント部123と、を備える。読み出し制御部121は、図3に示した読み出し制御部121と同様である。
【0059】
書き込み制御部122bは、プロセッサコア11からのメインメモリ5に対するデータ書き込み要求があると、指定されたアドレスに対応するキャッシュメモリ110のラインを選択し、そのラインの指定されたアドレスにデータを書き込む。そして、書き込み制御部122bは、選択したラインにデータを書き込んだ結果、キャッシュメモリ110内のダーティラインの数が許容ライン数を超える場合に、ダーティラインのデータをメインメモリ5に書き戻す。これにより、キャッシュメモリ110内に存在するダーティラインの数を許容ライン数以下に保つことができる。
【0060】
ダーティラインカウント部123は、キャッシュメモリ110内のダーティラインの数をカウントする。書き込み制御部122bは、プロセッサコア11からのデータ書き込み要求に応じてデータの書き込みを行った後、ダーティラインカウント部123の出力を参照して、キャッシュメモリ110内のダーティラインの数が許容ライン数を超えるか否かを判定する。
【0061】
なお、第2実施例のキャッシュメモリ装置100bも、第1実施例のキャッシュメモリ装置100aと同様に、フルアソシアティブ型、ダイレクトマッピング型、セットアソシアティブ型など、従来知られている様々な方式のキャッシュメモリ装置をベースに実現できる。
【0062】
図8は、プロセッサコア11がメインメモリ5に対するデータの読み出し要求を出したときに、キャッシュコントローラ120bの読み出し制御部121により実行される処理を示すフローチャートである。
【0063】
プロセッサコア11からのメインメモリ5に対するデータ読み出し要求があると、読み出し制御部121は、指定されたアドレスに対応するラインがキャッシュメモリ110内に存在するか否かを判定する(ステップS301)。そして、指定されたアドレスに対応するラインがキャッシュメモリ110内に存在する場合(ステップS301:Yes)、読み出し制御部121は、該当するラインから指定されたアドレスのデータを読み出してプロセッサコア11に返す(ステップS302)。
【0064】
一方、指定されたアドレスに対応するラインがキャッシュメモリ110内に存在しない場合(ステップS301:No)、読み出し制御部121は、キャッシュメモリ110のいずれかのラインを選択する(ステップS303)。そして、読み出し制御部121は、ステップS303で選択したラインのダーティフラグ(D)を参照し、そのラインがダーティラインであるか否かを判定する(ステップS304)。そして、ステップS303で選択したラインがダーティラインであれば(ステップS304:Yes)、読み出し制御部121は、ステップS303で選択したラインのデータをメインメモリ5に書き戻す(ステップS305)。一方、ステップS303で選択したラインがダーティラインでなければ(ステップS304:No)、ステップS305の処理は行わずに次に進む。
【0065】
次に、読み出し制御部121は、指定されたアドレスを含むラインサイズ分のデータをメインメモリ5から読み出して、そのデータをステップS303で選択したラインに記憶する。そして、読み出し制御部121は、データを記憶したラインのバリッドフラグ(V)を立てるとともにダーティフラグ(D)を下げ、指定されたアドレスのデータをプロセッサコア11に返す(ステップS306)。
【0066】
図9は、プロセッサコア11がメインメモリ5に対するデータの書き込み要求を出したときに、キャッシュコントローラ120bの書き込み制御部122bにより実行される処理を示すフローチャートである。
【0067】
プロセッサコア11からのメインメモリ5に対するデータ書き込み要求があると、書き込み制御部122bは、まず、指定されたアドレスに対応するラインがキャッシュメモリ110内に存在するか否かを判定する(ステップS401)。そして、指定されたアドレスに対応するラインがキャッシュメモリ110内に存在する場合(ステップS401:Yes)、書き込み制御部122bは、該当するラインを書き込み対象のラインとして選択し、そのライン内の該当箇所(通常は書き込みたいデータサイズはラインサイズよりも小さいので、ライン内の書き込むべき位置を、指定されたアドレスから計算する)にデータを書き込んで、そのラインのダーティフラグ(D)を立てる(ステップS402)。
【0068】
一方、指定されたアドレスに対応するラインがキャッシュメモリ110内に存在しない場合(ステップS401:No)、書き込み制御部122bは、キャッシュメモリ110内の1つのラインを書き込み対象のラインとして選択する(ステップS403)。次に、書き込み制御部122bは、ステップS403で選択したラインがダーティラインであるか否かを判定する(ステップS404)。そして、ステップS403で選択したラインがダーティラインであれば(ステップS404:Yes)、書き込み制御部122bは、ステップS403で選択したラインのデータをメインメモリ5に書き戻す(ステップS405)。一方、ステップS403で選択したラインがダーティラインでなければ(ステップS404:No)、ステップS405の処理は行わずに次に進む。
【0069】
次に、書き込み制御部122bは、指定されたアドレスを含むラインサイズ分のデータをメインメモリ5から読み出して、ステップS403で選択したラインに記憶し、そのラインのバリッドフラグ(V)とダーティフラグ(D)を立てるとともに、そのライン内の該当箇所にデータを書き込む(ステップS406)。
【0070】
次に、書き込み制御部122bは、ダーティラインカウント部123の出力を参照し、キャッシュメモリ110内のダーティラインの数が許容ライン数を超えるか否かを判定する(ステップS407)。そして、キャッシュメモリ110内のダーティラインの数が許容ライン数に達していれば(ステップS407:Yes)、書き込み制御部122bは、キャッシュメモリ110内のステップS406でデータを書き込んだライン以外のラインを選択し、そのラインのデータをメインメモリ5に書き戻して、そのラインのダーティフラグ(D)を下げる(ステップS408)。一方、キャッシュメモリ110内のダーティラインの数が許容ライン数を超えなければ(ステップS407:No)、ステップS408の処理は行わずに終了する。
【0071】
なお、図9のステップS408において、メインメモリ5にデータを書き戻すダーティラインを選択する際に、ステップS406でデータを書き込んだラインを除外するようにしているのは、データを書き込んだラインに対するアクセスがそのあと続けて発生する確率が高いためである。ただし、ステップS406でデータを書き込んだラインも含めて、キャッシュメモリ110内のすべてのダーティラインの中から、メインメモリ5にデータを書き戻すラインを選択するようにしてもよい。
【0072】
また、図8のステップS303および図9のステップS403でキャッシュメモリ110内の1つのラインを選択する方法は、一般的に知られている方法をいずれも採用できる。例えば、データが書き込まれてから最も時間がたっているラインを選択する方法や、最後に書き込みがあってから最も時間がたっているラインを選択する方法、最後にアクセス(読み出しあるいは書き込み)があってから最も時間がたっているラインを選ぶ方法、ダーティフラグ(D)が立っていないラインを優先的に選択する方法、バリッドフラグ(V)が立っていないラインを優先的に選択する方法、ランダムに選ぶ方法、あるいはそれらの組み合わせなど、様々な方法を採用することができる。
【0073】
また、ラインを選択する範囲は、フルアソシアティブ型をベースとしたキャッシュメモリ装置100bであれば、キャッシュメモリ110全体が対象範囲である。ダイレクトマッピング型をベースとしたキャッシュメモリ装置100bであれば、アクセスしたいメインメモリ5のアドレスからラインが一意に決まるので選ぶところは1つになる。セットアソシアティブ型をベースとしたキャッシュメモリ装置100bであれば、アクセスしたいメインメモリ5のアドレスから各ウェイにおけるラインがダイレクトマッピング型と同様に1つずつ決まるので、それらのラインの集合が選択する対象範囲になる。
【0074】
また、図9のステップS408におけるダーティラインの選択は、最後に書き込みがあってから最も時間がたっているラインを選ぶ方法、最後にアクセス(読み出しあるいは書き込み)があってから最も時間がたっているラインを選ぶ方法、ランダムに選ぶ方法、あるいはそれらの組み合わせなど、様々な方法を採用することができる。
【0075】
(第3実施例)
次に、第3実施例のキャッシュメモリ装置100cについて説明する。図10は、第3実施例のキャッシュメモリ装置100cの構成を示す図である。第3実施例のキャッシュメモリ装置100cは、キャッシュメモリ110と、キャッシュコントローラ120cと、ライトバッファ130と、を備える。キャッシュメモリ110は、図3に示したキャッシュメモリ110と同様である。
【0076】
キャッシュコントローラ120cは、読み出し制御部121と、書き込み制御部122cと、ダーティラインカウント部123と、を備える。読み出し制御部121は、図3に示した読み出し制御部121と同様である。ダーティラインカウント部123は、図7に示したダーティラインカウント部123と同様である。
【0077】
書き込み制御部122cは、図7に示した書き込み制御部122bと同様に、プロセッサコア11からのメインメモリ5に対するデータ書き込み要求があると、指定されたアドレスに対応するキャッシュメモリ110のラインを選択する。このとき、指定されたアドレスに対応するラインがキャッシュメモリ110内に存在していなければ、書き込み制御部122cは、キャッシュメモリ110から1つのラインを選択し、選択したラインがダーティラインであれば、そのラインのデータをメインメモリ5に書き戻すために必要な情報をライトバッファ130に入れる。また、書き込み制御部122cは、選択したラインの指定されたアドレスにデータを書き込んだ後、ダーティラインカウント部123の出力を参照して、キャッシュメモリ110内のダーティラインの数が許容ライン数を超えるか否かを判定する。そして、書き込み制御部122cは、キャッシュメモリ110内のダーティラインの数が許容ライン数を超える場合に、ダーティラインのデータをメインメモリ5に書き戻すために必要な情報をライトバッファ130に入れる。
【0078】
ライトバッファ130は、メインメモリ5に書き戻すデータを一時的に保持する。ライトバッファ130は、キャッシュメモリ装置の性能向上のために一般的に広く用いられている機構である。ライトバッファ130を備えていないキャッシュメモリ装置では、キャッシュメモリ110内のダーティラインを、新しいアドレスのデータを記憶するために再利用する際などに、ダーティラインのデータをメインメモリ5に書き戻す処理が終了してからでないと新しいアドレスのデータを書き込めないのに対し、ライトバッファ130を備えるキャッシュメモリ装置では、メインメモリ5にデータを書き戻すのに必要な情報、すなわちメインメモリ5上の書き戻すべきアドレスとデータの組からなる情報をライトバッファ130に入れておけば、すぐに新しいアドレスのデータを書き込むことができる。このように、ライトバッファ130を備えるキャッシュメモリ装置は、メインメモリ5に対するデータ書き戻しの完了を待つ必要がないので、プロセッサ10がストールすることがなくなる。また、ライトバッファ130にアドレスとデータの組が入れられると、しかるべきタイミングでメインメモリ5への書き戻しが行われる。この書き戻しは、メインメモリ5に対する他のアクセスがないときに行うことが望ましい。
【0079】
第3実施例のキャッシュメモリ装置100cは、書き込み制御部122cがダーティラインのデータを直接メインメモリ5に書き戻すのではなく、書き戻しに必要な情報をライトバッファ130に入れるようにしている点のみが、第2実施例のキャッシュメモリ装置100bと相違する。したがって、第3実施例のキャッシュメモリ装置100cにおいても、第2実施例のキャッシュメモリ装置100bと同様に、キャッシュメモリ110内に存在するダーティラインの数を許容ライン数以下に保つことができる。また、第3実施例のキャッシュメモリ装置100cは、メインメモリ5へのデータの書き戻しに伴うプロセッサ10のストールを有効に防止できる。
【0080】
図11は、プロセッサコア11がメインメモリ5に対するデータの読み出し要求を出したときに、キャッシュコントローラ120cの読み出し制御部121により実行される処理を示すフローチャートである。なお、図11のフローチャートにおけるステップS501〜ステップS504の処理は、図8のフローチャートにおけるステップS301〜ステップS304の処理と同じである。また、図11のフローチャートにおけるステップS506の処理は、図8のフローチャートにおけるステップS306の処理と同じである。図11のフローチャートにおいて、図8のフローチャートと相違するのは、ステップS505の処理である。
【0081】
すなわち、キャッシュコントローラ120cの読み出し制御部121は、ステップS503で選択したラインがダーティラインであれば(ステップS504:Yes)、ステップS505において、ステップS503で選択したラインのデータをメインメモリ5に書き戻すために必要な情報をライトバッファ130に入れる。
【0082】
図12は、プロセッサコア11がメインメモリ5に対するデータの書き込み要求を出したときに、キャッシュコントローラ120cの書き込み制御部122cにより実行される処理を示すフローチャートである。なお、図12のフローチャートにおけるステップS601〜ステップS604の処理は、図9のフローチャートにおけるステップS401〜ステップS404の処理と同じである。また、図12のフローチャートにおけるステップS606およびステップS607の処理は、図9のフローチャートにおけるステップS406およびステップS407の処理と同じである。図12のフローチャートにおいて、図9のフローチャートと相違するのは、ステップS605の処理とステップS608の処理である。
【0083】
すなわち、キャッシュコントローラ120cの書き込み制御部122cは、ステップS603で選択したラインがダーティラインであれば(ステップS604:Yes)、ステップS605において、ステップS603で選択したラインのデータをメインメモリ5に書き戻すために必要な情報をライトバッファ130に入れる。
【0084】
また、キャッシュコントローラ120cの書き込み制御部122cは、ステップS606におけるデータの書き込み後、キャッシュメモリ110内のダーティラインの数が許容ライン数に達していれば(ステップS607:Yes)、ステップS608において、キャッシュメモリ110内のステップS606でデータを書き込んだライン以外のダーティラインを選択し、そのラインのデータをメインメモリ5に書き戻すために必要な情報をライトバッファ130に入れて、そのラインのダーティフラグ(D)を下げる。
【0085】
ライトバッファ130は、一般的に用いられているものと同様の動作を行う。図13は、ライトバッファ130の動作の一例を示すフローチャートである。図13のフローチャートで示す処理は、プロセッサ10がメインメモリ5にアクセスしていないときなど任意のタイミングで実行される。
【0086】
ライトバッファ130は、まず、メインメモリ5に対するデータの書き戻しに必要な情報が入っているか否かを判定する(ステップS701)。そして、メインメモリ5に対するデータの書き戻しに必要な情報が入っていなければ(ステップS701:No)、そのまま処理を終了する。一方、メインメモリ5に対するデータの書き戻しに必要な情報が入っていれば(ステップS701:Yes)、ライトバッファ130は、プロセッサ10がメインメモリ5にアクセスしている状態か否か、すなわちメインメモリ5に対するデータの読み出し、または書き込みの動作中か否かを判定する(ステップS702)。
【0087】
そして、メインメモリ5に対するデータの読み出し、または書き込みの動作中であれば(ステップS702:Yes)、その動作が終了するまで待機する。一方、メインメモリ5に対するデータの読み出しも書き込みも行っていなければ(ステップS702:No)、ライトバッファ130は、メインメモリ5に対するデータの書き戻しに必要な情報を1つ取り出し、取り出した情報に基づいて、メインメモリ5に対するデータの書き込みを行う(ステップS703)。その後、ステップS701に戻って、メインメモリ5に対するデータの書き戻しがすべて終了するまで、以降の処理を繰り返す。
【0088】
(第4実施例)
次に、第4実施例のキャッシュメモリ装置100dについて説明する。図14は、第4実施例のキャッシュメモリ装置100dの構成を示す図である。第4実施例のキャッシュメモリ装置100dは、キャッシュメモリ110と、キャッシュコントローラ120dと、を備える。キャッシュメモリ110は、図3に示したキャッシュメモリ110と同様である。
【0089】
キャッシュコントローラ120dは、読み出し制御部121と、書き込み制御部122dと、ダーティラインカウント部123と、書き戻し制御部124と、を備える。読み出し制御部121は、図3に示した読み出し制御部121と同様である。ダーティラインカウント部123は、図7に示したダーティラインカウント部123と同様である。
【0090】
書き込み制御部122dは、プロセッサコア11からのメインメモリ5に対するデータ書き込み要求があると、指定されたアドレスに対応するキャッシュメモリ110のラインを選択し、そのラインの指定されたアドレスにデータを書き込む。
【0091】
書き戻し制御部124は、プロセッサ10がメインメモリ5にアクセスしていないときなどの任意のタイミングでダーティラインカウント部123の出力を参照し、キャッシュメモリ110内のダーティラインの数が許容ライン数を超えているか否かを判定する。そして、書き戻し制御部124は、キャッシュメモリ110内のダーティラインの数が許容ライン数を超えている場合に、ダーティラインのデータをメインメモリ5に書き戻す。これにより、キャッシュメモリ110内に存在するダーティラインの数が一時的に許容ライン数を超えていたとしても、ダーティラインの数を許容ライン数以下に戻すことができる。また、ダーティラインのデータをメインメモリ5に書き戻す処理を任意のタイミングで行うため、メインメモリ5へのデータの書き戻しに伴うプロセッサ10のストールを有効に防止できる。
【0092】
図15は、プロセッサコア11がメインメモリ5に対するデータの書き込み要求を出したときに、キャッシュコントローラ120dの書き込み制御部122dにより実行される処理を示すフローチャートである。なお、図15のフローチャートにおけるステップS801〜ステップS806の処理は、図9のフローチャートにおけるステップS401〜ステップS406の処理と同じである。図15のフローチャートにおいて、図9のフローチャートと相違するのは、ステップS407およびステップS408に相当する処理を含まない点である。
【0093】
すなわち、キャッシュコントローラ120dの書き込み制御部122dは、ステップS802またはステップS806において、選択したラインの指定されたアドレスにデータを書き込むと、処理を終了する。
【0094】
図16は、キャッシュコントローラ120dの書き戻し制御部124により実行される処理の一例を示すフローチャートである。この図16のフローチャートで示す処理は、プロセッサ10がメインメモリ5にアクセスしていないときなどの任意のタイミングで実行される。
【0095】
処理が開始されると、書き戻し制御部124は、まず、ダーティラインカウント部123の出力を参照し、キャッシュメモリ110内のダーティラインの数が許容ライン数を超えているか否かを判定する(ステップS901)。そして、書き戻し制御部124は、キャッシュメモリ110内のダーティラインの数が許容ライン数以下であれば(ステップS901:No)、そのまま処理を終了する。
【0096】
一方、キャッシュメモリ110内のダーティラインの数が許容ライン数を超えている場合(ステップS901:Yes)、書き戻し制御部124は、キャッシュメモリ110内のいずれかのダーティラインを選択する(ステップS902)。そして、書き戻し制御部124は、ステップS902で選択したダーティラインのデータをメインメモリ5に書き戻し(ステップS903)、そのラインのダーティフラグ(D)を下げる(ステップS904)。その後、ステップS901に戻って、キャッシュメモリ110内のダーティラインの数が許容ライン数以下になるまで、以降の処理を繰り返す。
【0097】
図17は、キャッシュコントローラ120dの書き戻し制御部124により実行される処理の他の例を示すフローチャートである。なお、図17のフローチャートにおけるステップS1001〜ステップS1004の処理は、図16のフローチャートにおけるステップS901〜ステップS904の処理と同じである。図17のフローチャートにおいて、図16のフローチャートと相違するのは、ステップS1005の処理が追加されている点である。
【0098】
すなわち、書き戻し制御部124は、ステップS1001でキャッシュメモリ110内のダーティラインの数が許容ライン数以下であると判定した場合(ステップS1001:No)、ステップS1005において、キャッシュメモリ110内のダーティラインの数が目標ライン数を超えているか否かを判定する。ここで、目標ライン数とは、キャッシュメモリ110内のダーティラインの数を減らすときの目標値であり、許容ライン数よりも小さな数である。
【0099】
ステップS1005の判定の結果、キャッシュメモリ110内のダーティラインの数が目標ライン数を超えていれば(ステップS1005:Yes)、ステップS1002に進んで、以降の処理を繰り返す。そして、キャッシュメモリ110内のダーティラインの数が目標ライン数以下となった段階で(ステップS1005:No)、処理を終了する。
【0100】
書き戻し制御部124が図17のフローチャートで示す処理を実行した場合、キャッシュメモリ110内のダーティラインが目標ライン数まで減少するので、その後、キャッシュメモリ110内のダーティラインが許容ライン数に達するまでの時間を長くすることができ、メインメモリ5に対するデータの書き戻しの頻度を低下させることができる。
【0101】
(第5実施例)
次に、第5実施例のキャッシュメモリ装置100eについて説明する。図18は、第5実施例のキャッシュメモリ装置100eの構成を示す図である。第5実施例のキャッシュメモリ装置100eは、キャッシュメモリ110と、キャッシュコントローラ120eと、ライトバッファ130と、を備える。キャッシュメモリ110は、図3に示したキャッシュメモリ110と同様である。ライトバッファ130は、図10に示したライトバッファ130と同様である。
【0102】
キャッシュコントローラ120eは、読み出し制御部121と、書き込み制御部122eと、ダーティラインカウント部123と、書き戻し制御部124eと、を備える。読み出し制御部121は、図3に示した読み出し制御部121と同様である。ダーティラインカウント部123は、図7に示したダーティラインカウント部123と同様である。
【0103】
書き込み制御部122eは、図14に示した書き込み制御部122dと同様に、プロセッサコア11からのメインメモリ5に対するデータ書き込み要求があると、指定されたアドレスに対応するキャッシュメモリ110のラインを選択する。このとき、指定されたアドレスに対応するラインがキャッシュメモリ110内に存在していなければ、書き込み制御部122eは、キャッシュメモリ110から1つのラインを選択し、選択したラインがダーティラインであれば、そのラインのデータをメインメモリ5に書き戻すために必要な情報をライトバッファ130に入れる。
【0104】
書き戻し制御部124eは、プロセッサ10がメインメモリ5にアクセスしていないときなどの任意のタイミングでダーティラインカウント部123の出力を参照し、キャッシュメモリ110内のダーティラインの数が許容ライン数を超えているか否かを判定する。そして、書き戻し制御部124eは、キャッシュメモリ110内のダーティラインの数が許容ライン数を超えている場合に、ダーティラインのデータをメインメモリ5に書き戻すために必要な情報をライトバッファ130に入れる。これにより、キャッシュメモリ110内に存在するダーティラインの数が一時的に許容ライン数を超えていたとしても、ダーティラインの数を許容ライン数以下に戻すことができる。また、ダーティラインのデータをメインメモリ5に直接書き戻すのではなく、書き戻しに必要な情報をライトバッファ130に入れるようにしているので、メインメモリ5へのデータの書き戻しに伴うプロセッサ10のストールを有効に防止できる。
【0105】
図19は、プロセッサコア11がメインメモリ5に対するデータの書き込み要求を出したときに、キャッシュコントローラ120eの書き込み制御部122eにより実行される処理を示すフローチャートである。なお、図19のフローチャートにおけるステップS1101〜ステップS1104の処理は、図15のフローチャートにおけるステップS801〜ステップS804の処理と同じである。また、図19のフローチャートにおけるステップS1106の処理は、図15のフローチャートにおけるステップS806の処理と同じである。図19のフローチャートにおいて、図15のフローチャートと相違するのは、ステップS1105の処理である。
【0106】
すなわち、キャッシュコントローラ120eの書き込み制御部122eは、ステップS1103で選択したラインがダーティラインであれば(ステップS1104:Yes)、ステップS1105において、ステップS1103で選択したラインのデータをメインメモリ5に書き戻すために必要な情報をライトバッファ130に入れる。
【0107】
図20は、キャッシュコントローラ120eの書き戻し制御部124eにより実行される処理の一例を示すフローチャートである。なお、図20のフローチャートにおけるステップS1201およびステップS1202の処理は、図16のフローチャートにおけるステップS901およびステップS902の処理と同じである。また、図20のフローチャートにおけるステップS1204の処理は、図16のフローチャートにおけるステップS904の処理と同じである。図20のフローチャートにおいて、図16のフローチャートと相違するのは、ステップS1203の処理である。
【0108】
すなわち、キャッシュコントローラ120eの書き戻し制御部124eは、ステップS1203において、ステップS1202で選択したダーティラインのデータをメインメモリ5に書き戻すために必要な情報をライトバッファ130に入れる。
【0109】
図21は、キャッシュコントローラ120eの書き戻し制御部124eにより実行される処理の他の例を示すフローチャートである。なお、図21のフローチャートにおけるステップS1301およびステップS1302の処理は、図17のフローチャートにおけるステップS1001およびステップS1002の処理と同じである。また、図21のフローチャートにおけるステップS1304およびステップS1305の処理は、図17のフローチャートにおけるステップS1004およびステップS1005の処理と同じである。図21のフローチャートにおいて、図17のフローチャートと相違するのは、ステップS1303の処理である。
【0110】
すなわち、キャッシュコントローラ120eの書き戻し制御部124eは、ステップS1303において、ステップS1302で選択したダーティラインのデータをメインメモリ5に書き戻すために必要な情報をライトバッファ130に入れる。
【0111】
(第6実施例)
次に、第6実施例のキャッシュメモリ装置100fについて説明する。図22は、第6実施例のキャッシュメモリ装置100fの概要を説明する図である。第6実施例のキャッシュメモリ装置は、第1キャッシュメモリ装置100f−1と第2キャッシュメモリ装置100f−2を階層的に組み合わせた構成になっている。プロセッサコア11側の第1キャッシュメモリ装置100f−1は、許容ライン数と同じ数のラインを持つライトバック型のキャッシュメモリ装置として動作する。第1キャッシュメモリ装置100f−1とメインメモリ5の間の第2キャッシュメモリ装置100f−2は、任意の数のラインを持つライトスルー型のキャッシュメモリとして動作する。第2キャッシュメモリ装置100f−2はライトスルー型なので、その中にはダーティなラインは存在しない。この組み合わせにより、第1キャッシュメモリ装置100f−1と第2キャッシュメモリ装置100f−2から構成されるキャッシュメモリ装置100f内のダーティラインの最大数(許容ライン数)は、第1キャッシュメモリ装置100f−1内のダーティラインの最大数と同じライン数に抑えることができる。
【0112】
図23は、第6実施例のキャッシュメモリ装置100fの構成を示す図である。第6実施例のキャッシュメモリ装置100fは、第1キャッシュメモリ装置100f−1と、第2キャッシュメモリ装置100f−2と、を備える。第1キャッシュメモリ装置100f−1は、第1キャッシュメモリ110f−1と、第1キャッシュコントローラ120f−2と、を備える。第1キャッシュコントローラ120f−1は、第1読み出し制御部121f−1と、第1書き込み制御部122f−1と、を備える。第2キャッシュメモリ装置100f−2は、第2キャッシュメモリ110f−2と、第2キャッシュコントローラ120f−2と、を備える。第2キャッシュコントローラ120f−2は、第2読み出し制御部121f−2と、第2書き込み制御部122f−2と、を備える。
【0113】
図24は、プロセッサコア11がメインメモリ5に対するデータの読み出し要求を出したときに、第1キャッシュコントローラ120f−1の第1読み出し制御部121f−1により実行される処理を示すフローチャートである。
【0114】
プロセッサコア11からメインメモリ5に対するデータ読み出し要求があると、第1読み出し制御部121f−1は、まず、指定されたアドレスに対応するラインが第1キャッシュメモリ110f-1内に存在するか否かを判定する(ステップS1401)。そして、指定されたアドレスに対応するラインが第1キャッシュメモリ110f-1内に存在する場合(ステップS1401:Yes)、第1読み出し制御部121f−1は、該当するラインから指定されたアドレスのデータを読み出してプロセッサコア5に返す(ステップS1402)。
【0115】
一方、指定されたアドレスに対応するラインが第1キャッシュメモリ110f−1内に存在しない場合(ステップS1401:No)、第1読み出し制御部121f−1は、第1キャッシュメモリ110f−1のいずれかのラインを選択する(ステップS1403)。そして、第1読み出し制御部121f−1は、ステップS1403で選択したラインのダーティフラグ(D)を参照し、そのラインがダーティラインであるか否かを判定する(ステップS1404)。そして、ステップS1403で選択したラインがダーティラインであれば(ステップS1404:Yes)、第1読み出し制御部121f−1は、ステップS1403で選択したラインに記憶しているデータをメインメモリ5に書き戻すことを第2キャッシュメモリ装置100f−2に依頼する(ステッS1405)。一方、ステップS1403で選択したラインがダーティラインでなければ(ステップS1404:No)、ステップS1405の処理は行わずに次に進む。
【0116】
次に、第1読み出し制御部121f−1は、指定されたアドレスを含むラインサイズ分のデータを第2キャッシュメモリ装置100f−2から読み出して、そのデータをステップS1403で選択したラインに記憶する。そして、第1読み出し制御部121f−1は、データを記憶したラインのバリッドフラグ(V)を立てるとともにダーティフラグ(D)を下げ、指定されたアドレスのデータをプロセッサコア5に返す(ステッS1406)。
【0117】
図25は、プロセッサコア11がメインメモリ5に対するデータの書き込み要求を出したときに、第1キャッシュコントローラ120f−1の第1書き込み制御部122f−1により実行される処理の一例を示すフローチャートである。
【0118】
プロセッサコア11からのメインメモリ5に対するデータ書き込み要求があると、第1書き込み制御部122f−1は、まず、指定されたアドレスに対応するラインが第1キャッシュメモリ110f−1内に存在するか否かを判定する(ステップS1501)。そして、指定されたアドレスに対応するラインが第1キャッシュメモリ110f−1内に存在する場合(ステップS1501:Yes)、第1書き込み制御部122f−1は、該当するラインを書き込み対象のラインとして選択し、そのライン内の該当個所にデータを書き込んで、そのラインのダーティフラグ(D)を立てる(ステップS1502)。
【0119】
一方、指定されたアドレスに対応するラインが第1キャッシュメモリ110f−1内に存在しない場合(ステップS1501:No)、第1書き込み制御部122f−1は、第1キャッシュメモリ110f−1内の1つのラインを書き込み対象のラインとして選択する(ステップS1503)。次に、第1書き込み制御部122f−1は、ステップS1503で選択したラインのダーティフラグ(D)を参照し、そのラインがダーティラインであるか否かを判定する(ステップS1504)。そして、ステップS1503で選択したラインがダーティラインであれば(ステップS1504:Yes)、第1書き込み制御部122f−1は、ステップS1503で選択したラインに記憶しているデータをメインメモリ5に書き戻すことを第2キャッシュメモリ装置100f−2に依頼する(ステップS1505)。一方、ステップS1503で選択したラインがダーティラインでなければ(ステップS1504:No)、ステップS1505の処理は行わずに次に進む。
【0120】
次に、第1書き込み制御部122f−1は、指定されたアドレスを含むラインサイズ分のデータを第2キャッシュメモリ装置100f−2から読み出して、ステップS1503で選択したラインに記憶し、そのラインのバリッドフラグ(V)を立てるとともに、そのライン内の該当個所にデータを書き込む(ステップS1506)。
【0121】
図26は、プロセッサコア11がメインメモリ5に対するデータの書き込み要求を出したときに、第1キャッシュコントローラ120f−1の書き込み制御部122f−1により実行される処理の他の例を示すフローチャートである。図25に示した例と図26の例とでは、プロセッサコア11からのメインメモリ5に対するデータ書き込み要求を第1書き込み制御部122f−1が処理する際に、書き込み対象のアドレスのデータに対応するラインが第1キャッシュメモリ110f−1内に存在しない場合、すなわちミスヒット時の処理方式が異なる。図25に示した例は、書き込みのミスヒットが発生すると、該当するアドレスを含むラインサイズ分のデータをメインメモリ5から読み出して新しく確保したラインに書き込むことでミスヒット状態を解消する方式である。一方、図26の例は、書き込みのミスヒットが発生すると、メインメモリ5へのデータの書き込みを第2キャッシュメモリ装置100f−2に依頼する方式である。
【0122】
プロセッサコア11からのメインメモリ5に対するデータ書き込み要求があると、第1書き込み制御部122f−1は、まず、指定されたアドレスに対応するラインが第1キャッシュメモリ110f−1内に存在するか否かを判定する(ステップS1601)。そして、指定されたアドレスに対応するラインが第1キャッシュメモリ110f−1内に存在する場合(ステップS1601:Yes)、第1書き込み制御部122f−1は、該当するラインを書き込み対象のラインとして選択し、そのライン内の該当個所にデータを書き込んで、そのラインのダーティフラグ(D)を立てる(ステップS1602)。
【0123】
一方、指定されたアドレスに対応するラインが第1キャッシュメモリ110f−1内に存在しない場合(ステップS1601:No)、第1書き込み制御部122f−1は、メインメモリ5に対するデータの書き込みを第2キャッシュメモリ装置100f−2に依頼する(ステップS1603)。
【0124】
図27は、第1キャッシュメモリ装置100f−1がメインメモリ5に対するデータの読み出し要求を出したときに、第2キャッシュコントローラ120f−2の読み出し制御部121f−2により実行される処理を示すフローチャートである。
【0125】
第1キャッシュメモリ装置100f−1(詳しくは第1キャッシュメモリ装置100f−1内の第1キャッシュコントローラ120f−1)からメインメモリ5に対するデータ読み出し要求があると、第2読み出し制御部121f−2は、まず、指定されたアドレスに対応するラインが第2キャッシュメモリ110f-2内に存在するか否かを判定する(ステップS1701)。そして、指定されたアドレスに対応するラインが第2キャッシュメモリ110f−2内に存在する場合(ステップS1701:Yes)、第2読み出し制御部121f−2は、該当するラインから指定されたアドレスのデータを読み出して第1キャッシュメモリ装置100f−1に返す(ステップS1702)。
【0126】
一方、指定されたアドレスに対応するラインが第2キャッシュメモリ110f−2内に存在しない場合(ステップS1701:No)、第2読み出し制御部121f−2は、第2キャッシュメモリ110f−2のいずれかのラインを選択する(ステップS1703)。次に、第2読み出し制御部121f−2は、指定されたアドレスを含むラインサイズ分のデータをメインメモリ5から読み出して、そのデータをステップS1703で選択したラインに記憶する。そして、第2読み出し制御部121f−2は、データを記憶したラインのバリッドフラグ(V)を立て、指定されたアドレスのデータを第1キャッシュメモリ装置100f−1に返す(ステップS1704)。
【0127】
図28は、第1キャッシュメモリ装置100f−1がメインメモリ5に対するデータの書き込み要求を出したときに、第2キャッシュコントローラ120f−2の第2書き込み制御部122f−2により実行される処理を示すフローチャートである。
【0128】
第1キャッシュメモリ装置100f−1(詳しくは第1キャッシュメモリ装置100f−1内の第1キャッシュコントローラ120f−1)からのメインメモリ5に対するデータ書き込み要求があると、第2書き込み制御部122f−2は、まず、指定されたアドレスに対応するラインが第2キャッシュメモリ110f−2内に存在するか否かを判定する(ステップS1801)。そして、指定されたアドレスに対応するラインが第2キャッシュメモリ110f−2内に存在する場合(ステップS1701:Yes)、第2書き込み制御部122f−2は、該当するラインを書き込み対象のラインとして選択し、そのライン内の該当個所にデータを書き込む(ステップS1702)。一方、指定されたアドレスに対応するラインが第2キャッシュメモリ110f−2内に存在しない場合(ステップS1701:No)、ステップS1702の処理は行わずに次に進む。
【0129】
次に、第2書き込み制御部122f−2は、メインメモリ5にデータを書き込む(ステップS1703)。
【0130】
なお、第1キャッシュメモリ装置100f−1は、ライトバッファ130を備える構成であってもよい。また、第2キャッシュメモリ装置100f−2は、ライトバッファ130を備える構成であってもよい。
【0131】
図22に示したように、第6実施例のキャッシュメモリ装置100fが備える第1キャッシュメモリ装置100f−1と第2キャッシュメモリ装置100f−2との関係は、2階層のキャッシュメモリ装置を備えるSoC(System on a Chip)あるいはプロセッサにおける、プロセッサコア11に近いレベル1キャッシュと、メインメモリ5に近いレベル2キャッシュとの関係と同じである。よって、レベル1キャッシュとレベル2キャッシュから構成される階層キャッシュメモリ装置を備え、レベル1キャッシュおよびレベル2キャッシュの制御方式をライトバック方式かライトスルー方式かを設定できるSoCあるいはプロセッサを用いれば、レベル1キャッシュのライン数を許容ライン数として、レベル1キャッシュをライトバック方式に、レベル2キャッシュをライトスルー方式に設定することで、本実施例に基づいた動作をさせることができる。
【0132】
(プロセッサのバリエーション)
以上、具体例を挙げて詳細に説明した本実施形態のキャッシュメモリ装置100は、様々な構成のプロセッサ10に適用できる。図29は、情報処理装置1が備えるプロセッサ10のバリエーションを示す図である。図2に示したプロセッサ10の構成は、図29(a)に示す例と一致している。
【0133】
図29(b)に示す例は、プロセッサ10が、1次キャッシュメモリ装置200と、2次キャッシュメモリ装置300と、を備える例である。プロセッサ10が図29(b)に示す構成の場合、1次キャッシュメモリ装置200が、本実施形態のキャッシュメモリ装置100となる。そして、本実施形態のキャッシュメモリ装置100がデータを書き戻す対象は、2次キャッシュメモリ装置300となる。なお、第6実施例を図29(b)のような変形例で実施する場合、1次キャッシュメモリ装置200がレベル1キャッシュとレベル2キャッシュから構成される階層キャッシュメモリ装置となる。
【0134】
2次キャッシュメモリ装置300は、MRAMやPCMなどの不揮発メモリの技術を用いた不揮発キャッシュメモリ装置として実現することが望ましいが、SRAMを用いた構成でも構わない。また、2次キャッシュメモリ装置300はライトスルー型でもライトバック型でもよい。2次キャッシュメモリ装置300をライトバック型にする方がメインメモリ5へのアクセス頻度を削減することができる。なお、図29(b)に示す例では、1次キャッシュメモリ装置200と2次キャッシュメモリ装置300との2段のキャッシュメモリ装置を備える構成であるが、3段以上のキャッシュメモリ装置を備える構成であってもよい。3段以上のキャッシュメモリ装置を備える構成の場合も、1次キャッシュメモリ装置200が、本実施形態のキャッシュメモリ装置100となる。
【0135】
図29(c)に示す例は、プロセッサ10が、第1プロセッサコア11aと第2プロセッサコア11bとを備えるマルチコアプロセッサとして構成された例である。この図29(c)の例では、第1プロセッサコア11aが第1の1次キャッシュメモリ装置200aを使用し、第2プロセッサコア11bが第2の1次キャッシュメモリ装置200bを使用する。また、第1の1次キャッシュメモリ装置200aと第2の1次キャッシュメモリ装置200bとに共通の2次キャッシュメモリ装置300が設けられている。
【0136】
プロセッサ10が図29(c)に示す構成の場合、第1の1次キャッシュメモリ装置200aおよび第2の1次キャッシュメモリ装置200bが、本実施形態のキャッシュメモリ装置100となる。そして、本実施形態のキャッシュメモリ装置100がデータを書き戻す対象は、2次キャッシュメモリ装置300となる。なお、図29(c)に示す例では、第1プロセッサコア11aおよび第2プロセッサコア11bの2つのプロセッサコアを備える構成であるが、3つ以上のプロセッサコアを備える構成であってもよい。3つ以上のプロセッサコアを備える構成の場合も、各プロセッサコアが使用する1次キャッシュメモリ装置が、本実施形態のキャッシュメモリ装置100となる。
【0137】
以上説明したように、本実施形態のキャッシュメモリ装置100は、ライトバック型の書き込み方式を基本にしながら、キャッシュメモリ110内に存在するダーティラインの数を許容ライン数で制限し、ダーティラインの数が許容ライン数に超えるとダーティラインのデータをメインメモリ5に書き戻すようにしている。したがって、プロセッサ10がプログラムを実行している間のメインメモリ5への書き込み頻度を削減できるといったライトバック型の利点を活かしつつ、電源の供給が遮断されるときにキャッシュメモリ110からメインメモリ5に書き戻すデータ量を抑えることができる。したがって、本実施形態のキャッシュメモリ装置100を備えるプロセッサ10は、実行モードから、キャッシュメモリ装置100に対する電源の供給を遮断する深い待機モードに切り替わるのに要する時間と消費電力を削減することができるので、ごく短時間の待機時間であっても深い待機モードに切り替えることができ、大幅な消費電力の削減を図ることができる。
【0138】
以上、本発明の実施形態を説明したが、ここで説明した実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。ここで説明した新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。ここで説明した実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0139】
1 情報処理装置
5 メインメモリ
10 プロセッサ
11 プロセッサコア
100 キャッシュメモリ装置
110 キャッシュメモリ
111 Rキャッシュメモリ
112 Wキャッシュメモリ
120 キャッシュコントローラ
122 書き込み制御部
123 ダーティラインカウント部
124 書き戻し制御部
130 ライトバッファ
【技術分野】
【0001】
本発明の実施の形態は、キャッシュメモリ装置、プロセッサ、および情報処理装置に関する。
【背景技術】
【0002】
情報処理装置において、プロセッサは、外部からのデータの入力、入力されたデータの処理、処理した結果の外部への出力、を繰り返すことで、プログラムを実行する。プロセッサが外部からのデータの入力を待機しているとき、あるいはタイマに設定した時刻が経過するのを待機しているときなど、他に実行すべき処理がない場合、プロセッサは低消費電力で待機するモード(以下、「待機モード」という。)に入る。待機モード中のプロセッサは、外部からデータが入力されたことや、タイマに設定した時刻が経過したことなどが割り込みによって通知されると、再びプログラムを実行するモード(以下、「実行モード」という。)に入り、割り込み処理を開始する。
【0003】
待機モード中のプロセッサは、プロセッサ内部の各種モジュール(演算器やキャッシュメモリなど)に対して、クロックの周波数を低くしたり、クロックの供給を停止したり、電源の供給を停止するなどの手段によって、消費電力を削減する。このとき、クロックや電源の供給を停止するモジュールの数が多いほど、消費電力の削減量が大きくなる。特に、高集積化した現代のプロセッサでは、リーク電流などの影響でキャッシュメモリの消費電力は大きい。そのため、待機モード中にキャッシュメモリに対する電源の供給を停止すれば、消費電力の大幅な削減が期待できる。
【0004】
キャッシュメモリは、プロセッサによるデータの書き込み方式の違いにより、ライトスルー型とライトバック型に大別される。ライトスルー型のキャッシュメモリを持つプロセッサでは、プロセッサによるメインメモリへのデータの書き込みは、キャッシュメモリ内への書き込みとメインメモリへの書き込みが同時に行われる。これに対して、ライトバック型のキャッシュメモリを持つプロセッサでは、プロセッサによるメインメモリへのデータの書き込みは、キャッシュメモリ内への書き込みだけで完了し、そのデータは後のしかるべきタイミングでメインメモリに書き込まれる。
【0005】
ライトバック型のキャッシュメモリを持つプロセッサでは、キャッシュメモリへのデータの書き込みが終われば、メインメモリへの書き込みが完了することを待つことなく、プログラムの実行を続けることができる。また、プロセッサが同じアドレスのデータあるいはキャッシュメモリ内の同じラインのデータを複数回書き込んだ場合には、これらのデータをメインメモリに対してまとめて書き込むことができる。そのため、一般にライトバック型のキャッシュメモリの方が、ライトスルー型のキャッシュメモリに比べて、処理効率が高くなって消費電力の削減にもつながる。
【0006】
しかし、ライトバック型のキャッシュメモリを持つプロセッサでは、キャッシュメモリに対する電源供給を停止する際に、キャッシュメモリ内にのみ書き込まれてメインメモリに書き込まれていないデータをメインメモリに書き込んだ後に、キャッシュメモリに対する電源の供給を遮断する必要がある。このため、ライトバック型のキャッシュメモリは、実行モードから待機モードへの切り替えに要するコスト(時間や消費電力)が、ライトスルー型のキャッシュメモリに比べて大きい。キャッシュメモリに対する電源の供給を停止する待機モードへの切り替え頻度が少ない場合には、待機モードへ入るためのコストは無視できるが、その頻度が大きくなると無視できなくなる。例えば、消費電力の大幅な削減を実現するために、プロセッサが数ミリ秒乃至は数十ミリ秒単位のごく短い待機時間でもキャッシュメモリに対する電源の供給を停止させる待機モードに入るようにした場合、実行モードから待機モードへの切り替えが頻繁に発生し、切り替えに要するコストが大きいために、期待通りの消費電力の削減が図れない。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】特開2009−64456号公報
【非特許文献】
【0008】
【非特許文献1】砂田 徹也ら著“細粒度パワーゲーティングを制御するOSの資源管理方式”、情報処理学会研究報告、Vol.2010-OS-114 No.8, 2010
【発明の概要】
【発明が解決しようとする課題】
【0009】
従来技術では、十分な消費電力の削減が図れない。
【課題を解決するための手段】
【0010】
実施形態のキャッシュメモリ装置は、記憶装置のデータをキャッシュする。このキャッシュメモリ装置は、記憶部と、制御部と、を備える。記憶部は、複数のキャッシュラインを有する。制御部は、前記複数のキャッシュラインのうち、前記記憶装置に書き込まれていないデータを含むダーティラインの数が予め定めた所定数を超える場合に、前記ダーティラインのデータを前記記憶装置に書き込む。
【図面の簡単な説明】
【0011】
【図1】実施形態の情報処理装置の外観図。
【図2】実施形態の情報処理装置のハードウェア構成図。
【図3】実施形態のキャッシュメモリ装置の概要を説明する図。
【図4】第1実施例のキャッシュメモリ装置の構成図。
【図5】第1実施例の読み出し制御部による処理のフローチャート。
【図6】第1実施例の書き込み制御部による処理のフローチャート。
【図7】第2実施例のキャッシュメモリ装置の構成図。
【図8】第2実施例の読み出し制御部による処理のフローチャート。
【図9】第2実施例の書き込み制御部による処理のフローチャート。
【図10】第3実施例のキャッシュメモリ装置の構成図。
【図11】第3実施例の読み出し制御部による処理のフローチャート。
【図12】第3実施例の書き込み制御部による処理のフローチャート。
【図13】第3実施例のライトバッファの動作のフローチャート。
【図14】第4実施例のキャッシュメモリ装置の構成図。
【図15】第4実施例の書き込み制御部による処理のフローチャート。
【図16】第4実施例の書き戻し制御部による処理のフローチャート。
【図17】第4実施例の書き戻し制御部による処理のフローチャート。
【図18】第5実施例のキャッシュメモリ装置の構成図。
【図19】第5実施例の書き込み制御部による処理のフローチャート。
【図20】第5実施例の書き戻し制御部による処理のフローチャート。
【図21】第5実施例の書き戻し制御部による処理のフローチャート。
【図22】第6実施例のキャッシュメモリ装置の概要を説明する図。
【図23】第6実施例のキャッシュメモリ装置の構成図。
【図24】第6実施例の第1読み出し制御部による処理のフローチャート。
【図25】第6実施例の第1書き込み制御部による処理のフローチャート。
【図26】第6実施例の第1書き込み制御部による処理のフローチャート。
【図27】第6実施例の第2読み出し制御部による処理のフローチャート。
【図28】第6実施例の第2書き込み制御部による処理のフローチャート。
【図29】実施形態のプロセッサのバリエーションを示す図。
【発明を実施するための形態】
【0012】
以下、実施形態のキャッシュメモリ装置、プロセッサ、および情報処理装置について、図面を参照して説明する。
【0013】
(情報処理装置)
図1は、本実施形態の情報処理装置1の外観を示す図である。この情報処理装置1は、タブレット型の情報端末として構成されている。情報処理装置1は、端末表面に表示部2aを備える。表示部2aには、例えば、低消費電力の反射型液晶ディスプレイ、あるいは電子ペーパーなどが用いられる。また、情報処理装置1は、端末表面の表示部2a以外の部分に太陽電池3を備える。また、情報処理装置1は、表示部2aの表面にポインティングデバイスとして機能するタッチパネル2bを備える。さらに、情報処理装置1は、端末表面の表示部2aと重ならない位置にキーボード4を備える。キーボード4は、太陽電池3の表面に透明なタッチパネル2bを重ねることで実現してもよい。また、透明な素材または遮光性の部分の少ない素材を用いた機械式のキーボード4として実現してもよい。
【0014】
図2は、本実施形態の情報処理装置1のハードウェア構成例を示すブロック図である。情報処理装置1は、主なハードウェア構成として、プロセッサ10と、メインメモリ(記憶装置)5と、2次ストレージ6と、太陽電池3と、蓄電部7と、電源制御部8と、表示部2aと、タッチパネル2bと、キーボード4と、通信インタフェース(通信I/F)9と、を備えている。
【0015】
情報処理装置1は、太陽電池3で発電した電力で動作する。しかし、太陽電池3で発電する電力だけでは動作時(何らかの処理を実行しているとき)の情報処理装置1全体のピークの消費電力をまかなえない。このため、アイドル時(ユーザからの応答待ちの時間や、情報処理装置1を使用していない時間など)に太陽電池3で発電した余剰電力を蓄電部7に充電しておく。そして、動作時には、電源制御部8が、蓄電部7からの電力を情報処理装置1の各部に供給するように制御する。このような電源制御は、ピークシフトとも呼ばれる。
【0016】
蓄電部7は、リチウムイオン電池などのバッテリ、または電気2重層キャパシタなどを、単独で、または組み合わせて実現できる。例えば、太陽電池3で発電した電力をまず電気2重層キャパシタに蓄積し、蓄積した電力をさらにリチウムイオン電池に充電するような組み合わせが可能である。
【0017】
電源制御部8は、蓄電部7に蓄積している電力量を管理し、プロセッサ10などの外部の構成部が蓄電部7に蓄積している電力量を知るための機能を備える。プロセッサ10が蓄電部7に蓄積している電力量を知る機能は、例えば、蓄電部7に蓄積している電力量が予め決められた規定量より少なくなった時点、または多くなった時点で、電源制御部8がプロセッサ10に対して割り込みで伝えるように構成することで実現できる。また、別の実現方法としては、プロセッサ10からのコマンドを受け取ると電源制御部8が現在の電力量をプロセッサ10に送り返すように実装することもできる。
【0018】
プロセッサ10は、アプリケーションプログラムやオペレーティングシステムを実行して情報処理装置1の全体を制御する。本実施形態の情報処理装置1は、例えばLinux(登録商標)などのオペレーティングシステムを搭載している。
【0019】
プロセッサ10は、プロセッサコア11と、キャッシュメモリ装置100とを備える。プロセッサコア11は、メインメモリ5にアクセスしながらアプリケーションプログラムやオペレーティングシステムを実行する。キャッシュメモリ装置100は、メインメモリ5のデータの一部をキャッシュする。プロセッサ10は、詳細を後述するキャッシュメモリ装置100を備えることで、キャッシュメモリ装置100に対する電源の供給を停止する深い待機モードに積極的に入るようにし、待機モード中の消費電力の大幅な削減を実現する。
【0020】
メインメモリ5は、例えば、高速に読み書きできるMRAM(Magnetoresistive Random Access Memory)などの不揮発メモリで実現する。MRAM以外に、PCM(Phase Change Memory、PRAMやPCRAMと呼ばれることもある)やReRAM(Resistance Random Access Memory)をメインメモリ5として用いることもできる。また、待機時の消費電力が小さなローパワーDRAM(Dynamic Random Access Memory)や、通常のDRAMをメインメモリ5として用いるようにしてもよい。
【0021】
2次ストレージ6は、情報処理装置1が必要とするデータやプログラムを記憶する補助記憶部である。例えば、2次ストレージ6は、フラッシュメモリのチップを搭載した記憶部により実現できる。また、2次ストレージ6としてSDカードやSSDを用いることもできる。
【0022】
通信I/F9は、例えば無線LAN(Local Area Network)などによる通信を行うためのインタフェースである。通信のプロトコルは無線LANに限られず、有線LAN、Bluetooth(登録商標)、ZigBee(登録商標)、赤外線通信、可視光通信、光回線網、電話回線網、およびインターネットなどのあらゆるプロトコルを利用できる。
【0023】
(キャッシュメモリ装置の概要)
次に、本実施形態の情報処理装置1のプロセッサ10が備えるキャッシュメモリ装置100について説明する。図3は、キャッシュメモリ装置100の概要を説明する図である。
【0024】
キャッシュメモリ装置100は、図3に示すように、キャッシュメモリ(記憶部)110と、キャッシュコントローラ(制御部)120と、を備える。
【0025】
キャッシュメモリ110は、キャッシュしたデータを記憶するメモリである。キャッシュメモリ110は、複数のキャッシュライン(以下、単に「ライン」という。)を有する。キャッシュメモリ110の各ラインは、一定のサイズのまとまったデータを記憶するようになっている。各ラインが記憶するデータのサイズをラインサイズと呼び、ラインサイズの代表的な例は64バイトである。キャッシュメモリ110の各ラインのことをエントリと呼ぶ場合もある。
【0026】
キャッシュメモリ110の各ラインは、そのラインに記憶するデータのメインメモリ5上のアドレスを指定する「アドレス」欄と、そのラインに有効なデータが入っていることを示す「バリッドフラグ(V)」と、そのラインがダーティラインであることを示す「ダーティフラグ(D)」と、ラインサイズのデータを記憶する「データ」欄とを有し、これら4つの情報の組を保持する。ダーティラインとは、プロセッサ10の書き込みデータが記憶され、且つ、その書き込みデータがメインメモリ5にはまだ書き込まれていない状態のラインをいう。なお、後述する実施例においては、ラインのバリッドフラグ(V)が立っていない時はダーティフラグ(D)が下がっているように管理することで、ダーティフラグ(D)をチェックすることでラインがダーティラインであるか否かを簡単に判断できるように実施する方法を示している。ラインのバリッドフラグ(V)が立っていないときはダーティフラグ(D)の値が不定になるように実施する場合は、バリッドフラグ(V)とダーティフラグ(D)の両方が立っていることを確認することで、ラインがダーティラインか否かを判断するように実施できる。
【0027】
キャッシュコントローラ120は、読み出し制御部121と、書き込み制御部122と、を備える。読み出し制御部121は、プロセッサコア11からのメインメモリ5に対するデータ読み出し要求を処理する。書き込み制御部122は、プロセッサコア11からのメインメモリ5に対するデータ書き込み要求を処理する。プロセッサコア11がプログラムの実行に伴って1つの命令でメインメモリ5に対して読み書きするデータのサイズは、例えば、4バイト、1バイト、8バイトといったように、キャッシュメモリ110のラインサイズよりも小さい。
【0028】
プロセッサコア11がメインメモリ5からデータを読み出す場合、キャッシュコントローラ120の読み出し制御部121は、プロセッサコア11からのデータ読み出し要求に従い、まず、指定されたアドレスに対応するラインがキャッシュメモリ110中に存在するか否かを確認する。そして、該当するラインがキャッシュメモリ110中に存在していれば(ヒット)、読み出し制御部121は、指定されたアドレスのデータをキャッシュメモリ110から読み出してプロセッサコア11に返す。一方、該当するラインがキャッシュメモリ110中に存在していなければ(ミスヒット)、読み出し制御部121は、指定されたアドレスを含むラインサイズ分のデータをメインメモリ5から読み出してキャッシュメモリ110に記憶した後、指定されたアドレスのデータをキャッシュメモリ110から読み出してプロセッサコア11に返す。ミスヒット時にメインメモリ5からキャッシュメモリ110にラインサイズ分のデータをまとめて読み込んでおくことによって、次に近傍のアドレスのデータをアクセス(読み出しあるいは書き込み)する際は、そのデータは既にキャッシュメモリ110上に読み込まれているため、高速にアクセスできる。
【0029】
また、プロセッサコア11がメインメモリ5にデータを書き込む場合は、キャッシュコントローラ120の書き込み制御部122が、プロセッサコア11からのデータ書き込み要求に従い、まず、指定されたアドレスに対応するラインがキャッシュメモリ110中に存在するか否かを確認する。ここで、データの書き込みは、直前に読み出したデータの上書きかその近傍のアドレスへの書き込みが多い(参照局所性が高い)ため、多くの場合、書き込みたいアドレスに対応するラインがキャッシュメモリ110中に存在する。該当するラインがキャッシュメモリ110中に存在する場合(ヒット)、書き込み制御部122は、指定されたアドレスにデータを書き込む。一方、該当するラインがキャッシュメモリ110中に存在しない場合は(ミスヒット)、書き込み制御部122は、例えば、指定されたアドレスを含むラインサイズ分のデータをメインメモリ5から読み出してキャッシュメモリ110に記憶した後、指定されたアドレスのデータを書き換える。なお、ミスヒット時に、キャッシュメモリ110のラインをデータ書き込み用に確保して、そのライン中のいずれかのバイトにデータを書き込むとともに、どのバイトにデータを書き込んだかを示すフラグを別途用意することで、メインメモリ5にアクセスすることなくキャッシュメモリ110にデータを書き込めるようにする方法もある。また、ミスヒット時に、キャッシュメモリ110にはデータを書き込まず、メインメモリ5に直接データを書き込む方法もある。本実施形態は、いずれのミスヒット時の処理方式とも組み合わせて実施することができる。
【0030】
一般的に、キャッシュメモリ装置の構成方法としては、フルアソシアティブ型、ダイレクトマッピング型、(nウェイ)セットアソシアティブ型などが知られている。
【0031】
フルアソシアティブ型のキャッシュメモリ装置では、プロセッサコア11がメインメモリ5をアクセスするためのアドレスを上位と下位に分け、上位アドレスでキャッシュメモリ110の「アドレス」欄を検索し、上位アドレスと同じアドレスの「アドレス」欄を持つラインがあれば、そのラインの「データ」欄の中の下位アドレスで指定される位置のデータをアクセスする。
【0032】
ダイレクトマッピング型あるいはセットアソシアティブ型の場合は、プロセッサコア11がメインメモリ5をアクセスするためのアドレスを上位と中位と下位に分け、中位アドレスでキャッシュメモリ110のライン(セットアソシアティブの場合は各ウェイのラインの集合)を選択し、選択したラインのうち、「アドレス」欄が上位アドレスと等しいラインがあれば、そのラインの「データ」欄の中の下位アドレスで指定される位置のデータをアクセスする。
【0033】
本実施形態のキャッシュメモリ装置100は、以上の一般的に知られている構成方法をいずれも採用できる。
【0034】
また、本実施形態のキャッシュメモリ装置100は、ライトバック型のデータ書き込み方式を基本とする。すなわち、本実施形態のキャッシュメモリ装置100は、キャッシュメモリ110のダーティフラグが立っているダーティラインのデータを、ダーティラインにデータを書き込んだときよりも後のしかるべき時点で、メインメモリ5に書き込む(書き戻す)。このダーティラインのデータをメインメモリ5に書き込むタイミングは、プロセッサコア11がアクセスした他のアドレスのデータを格納するためにダーティラインのデータを入れ替えるとき(言い換えれば、ダーティラインを再利用するとき)、あるいは、プロセッサコア11がキャッシュメモリ110のパージ(フラッシュとも呼ぶ)を指示する命令を出したとき、あるいは、マルチコアプロセッサで他のプロセッサコアのキャッシュメモリからアクセスされたときなど、様々である。
【0035】
本実施形態のキャッシュメモリ装置100は、キャッシュメモリ110内に存在するダーティラインの数が予め定めた所定数(以下、「許容ライン数」という。)を超えないように管理する。すなわち、本実施形態のキャッシュメモリ装置100では、キャッシュメモリ110内のダーティラインが許容ライン数を超える場合には、ダーティラインのデータをメインメモリ5に書き込む(書き戻す)機能を、キャッシュコントローラ120に持たせている。このような機能をキャッシュコントローラ120が持つことで、本実施形態のキャッシュメモリ装置100は、ライトバック型の特徴を活かしてメインメモリ5への書き込み頻度を削減し、メインメモリ5への書き込み完了待ちによるプロセッサコア11のストール(メインメモリ5への書き込みの完了を待っている間プロセッサコア11が次の命令の実行に進めない状態)の発生を有効に抑制しながら、キャッシュメモリ装置100に対する電源の供給を遮断するときに、プロセッサコア11からのパージを指示する命令に応じてキャッシュメモリ110からメインメモリ5に書き戻すデータ量を抑えることができる。したがって、本実施形態のキャッシュメモリ装置100を備えるプロセッサ10は、実行モードから、キャッシュメモリ装置100に対する電源の供給を遮断する深い待機モードに切り替わるのに要する時間と消費電力を削減することができるので、ごく短時間の待機時間であっても深い待機モードに切り替えることができ、大幅な消費電力の削減を図ることができる。
【0036】
また、本実施形態の適用ケースについて説明する。ライトバック型のキャッシュメモリを持つプロセッサでは、キャッシュメモリに対する電源供給を停止する際に、キャッシュメモリ内にのみ書き込まれてメインメモリに書き込まれていないデータをメインメモリに書き込んだ後に、キャッシュメモリに対する電源の供給を遮断する必要がある。このため、ライトバック型のキャッシュメモリは、実行モードから待機モードへの切り替えに要するコスト(時間や消費電力)が、ライトスルー型のキャッシュメモリに比べて大きい。キャッシュメモリに対する電源の供給を停止する待機モードへの切り替え頻度が少ない場合には、待機モードへ入るためのコストは無視できるが、その頻度が大きくなると無視できなくなる。例えば、消費電力の大幅な削減を実現するために、プロセッサが数ミリ秒乃至は数十ミリ秒単位のごく短い待機時間でもキャッシュメモリに対する電源の供給を停止させる待機モードに入るようにした場合、実行モードから待機モードへの切り替えが頻繁に発生し、切り替えに要するコストが大きいために、期待通りの消費電力の削減が図れない。このようなケースで、本実施形態の発明を適用すると、プログラム実行中のメインメモリへのデータの書き込み頻度が小さく、かつ、実行モードから待機モードへの切り替えに要する時間や消費電力を抑えることができる。
【0037】
以下、本実施形態のキャッシュメモリ装置100の具体例(第1実施例乃至第6実施例)について、図4乃至図28を参照して説明する。以下では、第1実施例のキャッシュメモリ装置100をキャッシュメモリ装置100a、第2実施例のキャッシュメモリ装置100をキャッシュメモリ装置100b、第3実施例のキャッシュメモリ装置100をキャッシュメモリ装置100c、第4実施例のキャッシュメモリ装置100をキャッシュメモリ装置100d、第5実施例のキャッシュメモリ装置100をキャッシュメモリ装置100e、第6実施例のキャッシュメモリ装置100をキャッシュメモリ装置100fと表記する。
【0038】
(第1実施例)
まず、第1実施例のキャッシュメモリ装置100aについて説明する。図4は、第1実施例のキャッシュメモリ装置100aの構成を示す図である。第1実施例のキャッシュメモリ装置100aは、キャッシュメモリ110aと、キャッシュコントローラ120aと、を備える。
【0039】
キャッシュメモリ110aは、Rキャッシュメモリ(第1記憶部)111と、Wキャッシュメモリ(第2記憶部)112と、の2つの記憶部を有する。Rキャッシュメモリ111は、任意の数のラインを有するキャッシュメモリである。Wキャッシュメモリ112は、許容ライン数(許容するダーティラインの数)のラインを有するキャッシュメモリである。プロセッサ10がメインメモリ5から読み出したデータは、Rキャッシュメモリ111とWキャッシュメモリ112のいずれかに記憶されるが、プロセッサ10がメインメモリ5に書き込むデータは、Wキャッシュメモリ112にのみ記憶される。つまり、第1実施例のキャッシュメモリ装置100aでは、ダーティラインはWキャッシュメモリ112にしか存在させない。そのため、Rキャッシュメモリ111の各ラインには、ダーティフラグ(D)欄は不要である。
【0040】
キャッシュコントローラ120aは、読み出し制御部121aと、書き込み制御部122aと、を備える。
【0041】
読み出し制御部121aは、プロセッサコア11からのメインメモリ5に対するデータ読み出し要求があると、Rキャッシュメモリ111とWキャッシュメモリ112の双方を対象としてデータの読み出しを行う。
【0042】
一方、書き込み制御部122aは、プロセッサコア11からのメインメモリ5に対するデータ書き込み要求があると、Wキャッシュメモリ112のみを対象としてデータの書き込みを行う。そして、書き込み制御部122aは、Wキャッシュメモリ112のラインがすべてダーティラインとなっており、新たなデータを書き込むラインを確保する必要がある場合に、そのダーティラインのデータをメインメモリ5に書き戻してラインを開放した後、そのラインにデータを書き込む。これにより、キャッシュメモリ110a内に存在するダーティラインの数を、常に許容ライン数以下とすることができる。
【0043】
図5は、プロセッサコア11がメインメモリ5に対するデータの読み出し要求を出したときに、キャッシュコントローラ120aの読み出し制御部121aにより実行される処理を示すフローチャートである。
【0044】
プロセッサコア11からのメインメモリ5に対するデータ読み出し要求があると、読み出し制御部121aは、まず、指定されたアドレスに対応するラインがRキャッシュメモリ111中に存在するか否かを判定する(ステップS101)。そして、指定されたアドレスに対応するラインがRキャッシュメモリ111中に存在する場合(ステップS101:Yes)、読み出し制御部121aは、該当するラインから指定されたアドレスのデータを読み出してプロセッサコア11に返す(ステップS102)。
【0045】
一方、指定されたアドレスに対応するラインがRキャッシュメモリ111中に存在しない場合(ステップS101:No)、読み出し制御部121aは、次に、指定されたアドレスに対応するラインがWキャッシュメモリ112中に存在するか否かを判定する(ステップS103)。そして、指定されたアドレスに対応するラインがWキャッシュメモリ112中に存在する場合(ステップS103:Yes)、読み出し制御部121aは、該当するラインから指定されたアドレスのデータを読み出してプロセッサコア11に返す(ステップS104)。
【0046】
一方、指定されたアドレスに対応するラインがWキャッシュメモリ112中に存在しない場合(ステップS103:No)、読み出し制御部121aは、Rキャッシュメモリ111のいずれかのラインを選択し、指定されたアドレスを含むラインサイズ分のデータをメインメモリ5から読み出して選択したラインに記憶する。そして、読み出し制御部121aは、データを記憶したラインのバリッドフラグ(V)を立て、指定されたアドレスのデータをプロセッサコア11に返す(ステップS105)。
【0047】
なお、以上の例では、ステップS105において、メインメモリ5から新しく読み出したデータを記憶するキャッシュメモリ110のラインをRキャッシュメモリ111に確保するようにしているが、Rキャッシュメモリ111とWキャッシュメモリ112のいずれかから確保するようにしてもよい。その場合、Wキャッシュメモリ112中のダーティフラグ(D)が立っているラインを確保して再利用する際には、そのライン(ダーティライン)に記憶しているデータをメインメモリ5に書き戻してから再利用する必要がある。
【0048】
図6は、プロセッサコア11がメインメモリ5に対するデータの書き込み要求を出したときに、キャッシュコントローラ120aの書き込み制御部122aにより実行される処理を示すフローチャートである。
【0049】
プロセッサコア11からのメインメモリ5に対するデータ書き込み要求があると、書き込み制御部122aは、まず、指定されたアドレスに対応するラインがWキャッシュメモリ112中に存在するか否かを判定する(ステップS201)。そして、指定されたアドレスに対応するラインがWキャッシュメモリ112中に存在する場合(ステップS201:Yes)、書き込み制御部122aは、該当するラインを書き込み対象のラインとして選択する(ステップS202)。
【0050】
一方、指定されたアドレスに対応するラインがWキャッシュメモリ112中に存在しない場合(ステップS201:No)、書き込み制御部122aは、Wキャッシュメモリ112内の1つのラインを書き込み対象のラインとして選択する(ステップS203)。このとき、書き込み制御部122aは、Wキャッシュメモリ112内にダーティフラグ(D)が立っていないラインがあれば、そのラインを書き込み対象のラインとして優先的に選択し、Wキャッシュメモリ112内のすべてのラインにダーティフラグ(D)が立っている、つまりWキャッシュメモリ112内のすべてのラインがダーティラインの場合に、ダーティラインのいずれかを書き込み対象のラインとして選択する。
【0051】
次に、書き込み制御部122aは、ステップS203で選択したラインがダーティラインであるか否かを判定する(ステップS204)。そして、ステップS203で選択したラインがダーティラインであれば(ステップS204:Yes)、書き込み制御部122aは、ステップS203で選択したラインのデータをメインメモリ5に書き戻す(ステップS205)。一方、ステップS203で選択したラインがダーティラインでなければ(ステップS204:No)、ステップS205の処理は行わずに次に進む。
【0052】
次に、書き込み制御部122aは、指定されたアドレスに対応するラインがRキャッシュメモリ111中に存在するか否かを判定する(ステップS206)。そして、指定されたアドレスに対応するラインがRキャッシュメモリ111中に存在しなければ(ステップS206:No)、書き込み制御部122aは、指定されたアドレスを含むラインサイズ分のデータをメインメモリ5から読み出して、ステップS203で選択したラインに記憶する(ステップS207)。
【0053】
一方、指定されたアドレスに対応するラインがRキャッシュメモリ111中に存在する場合は(ステップS206:Yes)、書き込み制御部122aは、指定されたアドレスに対応するRキャッシュメモリ111のラインの内容を、ステップS203で選択したラインにコピーする。そして、コピー元のRキャッシュメモリ111のラインのバリッドフラグ(V)を下げ、当該ラインを未使用にする(ステップS208)。
【0054】
次に、書き込み制御部122aは、ステップS202またはステップS203で選択したラインの指定されたアドレスにデータを書き込み、当該ラインのダーティフラグ(D)を立てる(ステップS209)。
【0055】
以上説明した第1実施例のキャッシュメモリ装置100aは、フルアソシアティブ型、ダイレクトマッピング型、セットアソシアティブ型など、従来知られている様々な方式のキャッシュメモリ装置をベースに実現できる。フルアソシアティブ型をベースとしたキャッシュメモリ装置100aは、キャッシュメモリ110aのラインを2つの部分に分けてキャッシュコントローラ120aが管理することで実現することができる。ダイレクトマッピング型をベースとしたキャッシュメモリ装置100aの場合には、Rキャッシュメモリ111とWキャッシュメモリ112の2つダイレクトマッピング型のキャッシュメモリを用意することで実現できる。セットアソシアティブ型をベースとしたキャッシュメモリ装置100aの場合には、セット単位でRキャッシュメモリ111とWキャッシュメモリ112に分けて実現できる。例えば4ウェイセットアソシアティブ型の場合には、3つのウェイをRキャッシュメモリ111に、1つのウェイをWキャッシュメモリ112に対応させると、ダーティラインがキャッシュメモリ110a中の総ライン数の25%を超えないように実現することができる。
【0056】
なお、以上説明した第1実施例のキャッシュメモリ装置100aに対して、ライトバッファを付加することも可能である。ライトバッファを付加した場合、図6のステップS205でラインのデータをメインメモリ5に書き戻す代わりに、書き戻すのに必要な情報をライトバッファに入れておく。ライトバッファは、プロセッサ10からメインメモリ5へのアクセスがないタイミングを見計らって、メインメモリ5へデータを書き込む。
【0057】
(第2実施例)
次に、第2実施例のキャッシュメモリ装置100bについて説明する。図7は、第2実施例のキャッシュメモリ装置100bの構成を示す図である。第2実施例のキャッシュメモリ装置100bは、キャッシュメモリ110と、キャッシュコントローラ120bと、を備える。キャッシュメモリ110は、図3に示したキャッシュメモリ110と同様である。
【0058】
キャッシュコントローラ120bは、読み出し制御部121と、書き込み制御部122bと、ダーティラインカウント部123と、を備える。読み出し制御部121は、図3に示した読み出し制御部121と同様である。
【0059】
書き込み制御部122bは、プロセッサコア11からのメインメモリ5に対するデータ書き込み要求があると、指定されたアドレスに対応するキャッシュメモリ110のラインを選択し、そのラインの指定されたアドレスにデータを書き込む。そして、書き込み制御部122bは、選択したラインにデータを書き込んだ結果、キャッシュメモリ110内のダーティラインの数が許容ライン数を超える場合に、ダーティラインのデータをメインメモリ5に書き戻す。これにより、キャッシュメモリ110内に存在するダーティラインの数を許容ライン数以下に保つことができる。
【0060】
ダーティラインカウント部123は、キャッシュメモリ110内のダーティラインの数をカウントする。書き込み制御部122bは、プロセッサコア11からのデータ書き込み要求に応じてデータの書き込みを行った後、ダーティラインカウント部123の出力を参照して、キャッシュメモリ110内のダーティラインの数が許容ライン数を超えるか否かを判定する。
【0061】
なお、第2実施例のキャッシュメモリ装置100bも、第1実施例のキャッシュメモリ装置100aと同様に、フルアソシアティブ型、ダイレクトマッピング型、セットアソシアティブ型など、従来知られている様々な方式のキャッシュメモリ装置をベースに実現できる。
【0062】
図8は、プロセッサコア11がメインメモリ5に対するデータの読み出し要求を出したときに、キャッシュコントローラ120bの読み出し制御部121により実行される処理を示すフローチャートである。
【0063】
プロセッサコア11からのメインメモリ5に対するデータ読み出し要求があると、読み出し制御部121は、指定されたアドレスに対応するラインがキャッシュメモリ110内に存在するか否かを判定する(ステップS301)。そして、指定されたアドレスに対応するラインがキャッシュメモリ110内に存在する場合(ステップS301:Yes)、読み出し制御部121は、該当するラインから指定されたアドレスのデータを読み出してプロセッサコア11に返す(ステップS302)。
【0064】
一方、指定されたアドレスに対応するラインがキャッシュメモリ110内に存在しない場合(ステップS301:No)、読み出し制御部121は、キャッシュメモリ110のいずれかのラインを選択する(ステップS303)。そして、読み出し制御部121は、ステップS303で選択したラインのダーティフラグ(D)を参照し、そのラインがダーティラインであるか否かを判定する(ステップS304)。そして、ステップS303で選択したラインがダーティラインであれば(ステップS304:Yes)、読み出し制御部121は、ステップS303で選択したラインのデータをメインメモリ5に書き戻す(ステップS305)。一方、ステップS303で選択したラインがダーティラインでなければ(ステップS304:No)、ステップS305の処理は行わずに次に進む。
【0065】
次に、読み出し制御部121は、指定されたアドレスを含むラインサイズ分のデータをメインメモリ5から読み出して、そのデータをステップS303で選択したラインに記憶する。そして、読み出し制御部121は、データを記憶したラインのバリッドフラグ(V)を立てるとともにダーティフラグ(D)を下げ、指定されたアドレスのデータをプロセッサコア11に返す(ステップS306)。
【0066】
図9は、プロセッサコア11がメインメモリ5に対するデータの書き込み要求を出したときに、キャッシュコントローラ120bの書き込み制御部122bにより実行される処理を示すフローチャートである。
【0067】
プロセッサコア11からのメインメモリ5に対するデータ書き込み要求があると、書き込み制御部122bは、まず、指定されたアドレスに対応するラインがキャッシュメモリ110内に存在するか否かを判定する(ステップS401)。そして、指定されたアドレスに対応するラインがキャッシュメモリ110内に存在する場合(ステップS401:Yes)、書き込み制御部122bは、該当するラインを書き込み対象のラインとして選択し、そのライン内の該当箇所(通常は書き込みたいデータサイズはラインサイズよりも小さいので、ライン内の書き込むべき位置を、指定されたアドレスから計算する)にデータを書き込んで、そのラインのダーティフラグ(D)を立てる(ステップS402)。
【0068】
一方、指定されたアドレスに対応するラインがキャッシュメモリ110内に存在しない場合(ステップS401:No)、書き込み制御部122bは、キャッシュメモリ110内の1つのラインを書き込み対象のラインとして選択する(ステップS403)。次に、書き込み制御部122bは、ステップS403で選択したラインがダーティラインであるか否かを判定する(ステップS404)。そして、ステップS403で選択したラインがダーティラインであれば(ステップS404:Yes)、書き込み制御部122bは、ステップS403で選択したラインのデータをメインメモリ5に書き戻す(ステップS405)。一方、ステップS403で選択したラインがダーティラインでなければ(ステップS404:No)、ステップS405の処理は行わずに次に進む。
【0069】
次に、書き込み制御部122bは、指定されたアドレスを含むラインサイズ分のデータをメインメモリ5から読み出して、ステップS403で選択したラインに記憶し、そのラインのバリッドフラグ(V)とダーティフラグ(D)を立てるとともに、そのライン内の該当箇所にデータを書き込む(ステップS406)。
【0070】
次に、書き込み制御部122bは、ダーティラインカウント部123の出力を参照し、キャッシュメモリ110内のダーティラインの数が許容ライン数を超えるか否かを判定する(ステップS407)。そして、キャッシュメモリ110内のダーティラインの数が許容ライン数に達していれば(ステップS407:Yes)、書き込み制御部122bは、キャッシュメモリ110内のステップS406でデータを書き込んだライン以外のラインを選択し、そのラインのデータをメインメモリ5に書き戻して、そのラインのダーティフラグ(D)を下げる(ステップS408)。一方、キャッシュメモリ110内のダーティラインの数が許容ライン数を超えなければ(ステップS407:No)、ステップS408の処理は行わずに終了する。
【0071】
なお、図9のステップS408において、メインメモリ5にデータを書き戻すダーティラインを選択する際に、ステップS406でデータを書き込んだラインを除外するようにしているのは、データを書き込んだラインに対するアクセスがそのあと続けて発生する確率が高いためである。ただし、ステップS406でデータを書き込んだラインも含めて、キャッシュメモリ110内のすべてのダーティラインの中から、メインメモリ5にデータを書き戻すラインを選択するようにしてもよい。
【0072】
また、図8のステップS303および図9のステップS403でキャッシュメモリ110内の1つのラインを選択する方法は、一般的に知られている方法をいずれも採用できる。例えば、データが書き込まれてから最も時間がたっているラインを選択する方法や、最後に書き込みがあってから最も時間がたっているラインを選択する方法、最後にアクセス(読み出しあるいは書き込み)があってから最も時間がたっているラインを選ぶ方法、ダーティフラグ(D)が立っていないラインを優先的に選択する方法、バリッドフラグ(V)が立っていないラインを優先的に選択する方法、ランダムに選ぶ方法、あるいはそれらの組み合わせなど、様々な方法を採用することができる。
【0073】
また、ラインを選択する範囲は、フルアソシアティブ型をベースとしたキャッシュメモリ装置100bであれば、キャッシュメモリ110全体が対象範囲である。ダイレクトマッピング型をベースとしたキャッシュメモリ装置100bであれば、アクセスしたいメインメモリ5のアドレスからラインが一意に決まるので選ぶところは1つになる。セットアソシアティブ型をベースとしたキャッシュメモリ装置100bであれば、アクセスしたいメインメモリ5のアドレスから各ウェイにおけるラインがダイレクトマッピング型と同様に1つずつ決まるので、それらのラインの集合が選択する対象範囲になる。
【0074】
また、図9のステップS408におけるダーティラインの選択は、最後に書き込みがあってから最も時間がたっているラインを選ぶ方法、最後にアクセス(読み出しあるいは書き込み)があってから最も時間がたっているラインを選ぶ方法、ランダムに選ぶ方法、あるいはそれらの組み合わせなど、様々な方法を採用することができる。
【0075】
(第3実施例)
次に、第3実施例のキャッシュメモリ装置100cについて説明する。図10は、第3実施例のキャッシュメモリ装置100cの構成を示す図である。第3実施例のキャッシュメモリ装置100cは、キャッシュメモリ110と、キャッシュコントローラ120cと、ライトバッファ130と、を備える。キャッシュメモリ110は、図3に示したキャッシュメモリ110と同様である。
【0076】
キャッシュコントローラ120cは、読み出し制御部121と、書き込み制御部122cと、ダーティラインカウント部123と、を備える。読み出し制御部121は、図3に示した読み出し制御部121と同様である。ダーティラインカウント部123は、図7に示したダーティラインカウント部123と同様である。
【0077】
書き込み制御部122cは、図7に示した書き込み制御部122bと同様に、プロセッサコア11からのメインメモリ5に対するデータ書き込み要求があると、指定されたアドレスに対応するキャッシュメモリ110のラインを選択する。このとき、指定されたアドレスに対応するラインがキャッシュメモリ110内に存在していなければ、書き込み制御部122cは、キャッシュメモリ110から1つのラインを選択し、選択したラインがダーティラインであれば、そのラインのデータをメインメモリ5に書き戻すために必要な情報をライトバッファ130に入れる。また、書き込み制御部122cは、選択したラインの指定されたアドレスにデータを書き込んだ後、ダーティラインカウント部123の出力を参照して、キャッシュメモリ110内のダーティラインの数が許容ライン数を超えるか否かを判定する。そして、書き込み制御部122cは、キャッシュメモリ110内のダーティラインの数が許容ライン数を超える場合に、ダーティラインのデータをメインメモリ5に書き戻すために必要な情報をライトバッファ130に入れる。
【0078】
ライトバッファ130は、メインメモリ5に書き戻すデータを一時的に保持する。ライトバッファ130は、キャッシュメモリ装置の性能向上のために一般的に広く用いられている機構である。ライトバッファ130を備えていないキャッシュメモリ装置では、キャッシュメモリ110内のダーティラインを、新しいアドレスのデータを記憶するために再利用する際などに、ダーティラインのデータをメインメモリ5に書き戻す処理が終了してからでないと新しいアドレスのデータを書き込めないのに対し、ライトバッファ130を備えるキャッシュメモリ装置では、メインメモリ5にデータを書き戻すのに必要な情報、すなわちメインメモリ5上の書き戻すべきアドレスとデータの組からなる情報をライトバッファ130に入れておけば、すぐに新しいアドレスのデータを書き込むことができる。このように、ライトバッファ130を備えるキャッシュメモリ装置は、メインメモリ5に対するデータ書き戻しの完了を待つ必要がないので、プロセッサ10がストールすることがなくなる。また、ライトバッファ130にアドレスとデータの組が入れられると、しかるべきタイミングでメインメモリ5への書き戻しが行われる。この書き戻しは、メインメモリ5に対する他のアクセスがないときに行うことが望ましい。
【0079】
第3実施例のキャッシュメモリ装置100cは、書き込み制御部122cがダーティラインのデータを直接メインメモリ5に書き戻すのではなく、書き戻しに必要な情報をライトバッファ130に入れるようにしている点のみが、第2実施例のキャッシュメモリ装置100bと相違する。したがって、第3実施例のキャッシュメモリ装置100cにおいても、第2実施例のキャッシュメモリ装置100bと同様に、キャッシュメモリ110内に存在するダーティラインの数を許容ライン数以下に保つことができる。また、第3実施例のキャッシュメモリ装置100cは、メインメモリ5へのデータの書き戻しに伴うプロセッサ10のストールを有効に防止できる。
【0080】
図11は、プロセッサコア11がメインメモリ5に対するデータの読み出し要求を出したときに、キャッシュコントローラ120cの読み出し制御部121により実行される処理を示すフローチャートである。なお、図11のフローチャートにおけるステップS501〜ステップS504の処理は、図8のフローチャートにおけるステップS301〜ステップS304の処理と同じである。また、図11のフローチャートにおけるステップS506の処理は、図8のフローチャートにおけるステップS306の処理と同じである。図11のフローチャートにおいて、図8のフローチャートと相違するのは、ステップS505の処理である。
【0081】
すなわち、キャッシュコントローラ120cの読み出し制御部121は、ステップS503で選択したラインがダーティラインであれば(ステップS504:Yes)、ステップS505において、ステップS503で選択したラインのデータをメインメモリ5に書き戻すために必要な情報をライトバッファ130に入れる。
【0082】
図12は、プロセッサコア11がメインメモリ5に対するデータの書き込み要求を出したときに、キャッシュコントローラ120cの書き込み制御部122cにより実行される処理を示すフローチャートである。なお、図12のフローチャートにおけるステップS601〜ステップS604の処理は、図9のフローチャートにおけるステップS401〜ステップS404の処理と同じである。また、図12のフローチャートにおけるステップS606およびステップS607の処理は、図9のフローチャートにおけるステップS406およびステップS407の処理と同じである。図12のフローチャートにおいて、図9のフローチャートと相違するのは、ステップS605の処理とステップS608の処理である。
【0083】
すなわち、キャッシュコントローラ120cの書き込み制御部122cは、ステップS603で選択したラインがダーティラインであれば(ステップS604:Yes)、ステップS605において、ステップS603で選択したラインのデータをメインメモリ5に書き戻すために必要な情報をライトバッファ130に入れる。
【0084】
また、キャッシュコントローラ120cの書き込み制御部122cは、ステップS606におけるデータの書き込み後、キャッシュメモリ110内のダーティラインの数が許容ライン数に達していれば(ステップS607:Yes)、ステップS608において、キャッシュメモリ110内のステップS606でデータを書き込んだライン以外のダーティラインを選択し、そのラインのデータをメインメモリ5に書き戻すために必要な情報をライトバッファ130に入れて、そのラインのダーティフラグ(D)を下げる。
【0085】
ライトバッファ130は、一般的に用いられているものと同様の動作を行う。図13は、ライトバッファ130の動作の一例を示すフローチャートである。図13のフローチャートで示す処理は、プロセッサ10がメインメモリ5にアクセスしていないときなど任意のタイミングで実行される。
【0086】
ライトバッファ130は、まず、メインメモリ5に対するデータの書き戻しに必要な情報が入っているか否かを判定する(ステップS701)。そして、メインメモリ5に対するデータの書き戻しに必要な情報が入っていなければ(ステップS701:No)、そのまま処理を終了する。一方、メインメモリ5に対するデータの書き戻しに必要な情報が入っていれば(ステップS701:Yes)、ライトバッファ130は、プロセッサ10がメインメモリ5にアクセスしている状態か否か、すなわちメインメモリ5に対するデータの読み出し、または書き込みの動作中か否かを判定する(ステップS702)。
【0087】
そして、メインメモリ5に対するデータの読み出し、または書き込みの動作中であれば(ステップS702:Yes)、その動作が終了するまで待機する。一方、メインメモリ5に対するデータの読み出しも書き込みも行っていなければ(ステップS702:No)、ライトバッファ130は、メインメモリ5に対するデータの書き戻しに必要な情報を1つ取り出し、取り出した情報に基づいて、メインメモリ5に対するデータの書き込みを行う(ステップS703)。その後、ステップS701に戻って、メインメモリ5に対するデータの書き戻しがすべて終了するまで、以降の処理を繰り返す。
【0088】
(第4実施例)
次に、第4実施例のキャッシュメモリ装置100dについて説明する。図14は、第4実施例のキャッシュメモリ装置100dの構成を示す図である。第4実施例のキャッシュメモリ装置100dは、キャッシュメモリ110と、キャッシュコントローラ120dと、を備える。キャッシュメモリ110は、図3に示したキャッシュメモリ110と同様である。
【0089】
キャッシュコントローラ120dは、読み出し制御部121と、書き込み制御部122dと、ダーティラインカウント部123と、書き戻し制御部124と、を備える。読み出し制御部121は、図3に示した読み出し制御部121と同様である。ダーティラインカウント部123は、図7に示したダーティラインカウント部123と同様である。
【0090】
書き込み制御部122dは、プロセッサコア11からのメインメモリ5に対するデータ書き込み要求があると、指定されたアドレスに対応するキャッシュメモリ110のラインを選択し、そのラインの指定されたアドレスにデータを書き込む。
【0091】
書き戻し制御部124は、プロセッサ10がメインメモリ5にアクセスしていないときなどの任意のタイミングでダーティラインカウント部123の出力を参照し、キャッシュメモリ110内のダーティラインの数が許容ライン数を超えているか否かを判定する。そして、書き戻し制御部124は、キャッシュメモリ110内のダーティラインの数が許容ライン数を超えている場合に、ダーティラインのデータをメインメモリ5に書き戻す。これにより、キャッシュメモリ110内に存在するダーティラインの数が一時的に許容ライン数を超えていたとしても、ダーティラインの数を許容ライン数以下に戻すことができる。また、ダーティラインのデータをメインメモリ5に書き戻す処理を任意のタイミングで行うため、メインメモリ5へのデータの書き戻しに伴うプロセッサ10のストールを有効に防止できる。
【0092】
図15は、プロセッサコア11がメインメモリ5に対するデータの書き込み要求を出したときに、キャッシュコントローラ120dの書き込み制御部122dにより実行される処理を示すフローチャートである。なお、図15のフローチャートにおけるステップS801〜ステップS806の処理は、図9のフローチャートにおけるステップS401〜ステップS406の処理と同じである。図15のフローチャートにおいて、図9のフローチャートと相違するのは、ステップS407およびステップS408に相当する処理を含まない点である。
【0093】
すなわち、キャッシュコントローラ120dの書き込み制御部122dは、ステップS802またはステップS806において、選択したラインの指定されたアドレスにデータを書き込むと、処理を終了する。
【0094】
図16は、キャッシュコントローラ120dの書き戻し制御部124により実行される処理の一例を示すフローチャートである。この図16のフローチャートで示す処理は、プロセッサ10がメインメモリ5にアクセスしていないときなどの任意のタイミングで実行される。
【0095】
処理が開始されると、書き戻し制御部124は、まず、ダーティラインカウント部123の出力を参照し、キャッシュメモリ110内のダーティラインの数が許容ライン数を超えているか否かを判定する(ステップS901)。そして、書き戻し制御部124は、キャッシュメモリ110内のダーティラインの数が許容ライン数以下であれば(ステップS901:No)、そのまま処理を終了する。
【0096】
一方、キャッシュメモリ110内のダーティラインの数が許容ライン数を超えている場合(ステップS901:Yes)、書き戻し制御部124は、キャッシュメモリ110内のいずれかのダーティラインを選択する(ステップS902)。そして、書き戻し制御部124は、ステップS902で選択したダーティラインのデータをメインメモリ5に書き戻し(ステップS903)、そのラインのダーティフラグ(D)を下げる(ステップS904)。その後、ステップS901に戻って、キャッシュメモリ110内のダーティラインの数が許容ライン数以下になるまで、以降の処理を繰り返す。
【0097】
図17は、キャッシュコントローラ120dの書き戻し制御部124により実行される処理の他の例を示すフローチャートである。なお、図17のフローチャートにおけるステップS1001〜ステップS1004の処理は、図16のフローチャートにおけるステップS901〜ステップS904の処理と同じである。図17のフローチャートにおいて、図16のフローチャートと相違するのは、ステップS1005の処理が追加されている点である。
【0098】
すなわち、書き戻し制御部124は、ステップS1001でキャッシュメモリ110内のダーティラインの数が許容ライン数以下であると判定した場合(ステップS1001:No)、ステップS1005において、キャッシュメモリ110内のダーティラインの数が目標ライン数を超えているか否かを判定する。ここで、目標ライン数とは、キャッシュメモリ110内のダーティラインの数を減らすときの目標値であり、許容ライン数よりも小さな数である。
【0099】
ステップS1005の判定の結果、キャッシュメモリ110内のダーティラインの数が目標ライン数を超えていれば(ステップS1005:Yes)、ステップS1002に進んで、以降の処理を繰り返す。そして、キャッシュメモリ110内のダーティラインの数が目標ライン数以下となった段階で(ステップS1005:No)、処理を終了する。
【0100】
書き戻し制御部124が図17のフローチャートで示す処理を実行した場合、キャッシュメモリ110内のダーティラインが目標ライン数まで減少するので、その後、キャッシュメモリ110内のダーティラインが許容ライン数に達するまでの時間を長くすることができ、メインメモリ5に対するデータの書き戻しの頻度を低下させることができる。
【0101】
(第5実施例)
次に、第5実施例のキャッシュメモリ装置100eについて説明する。図18は、第5実施例のキャッシュメモリ装置100eの構成を示す図である。第5実施例のキャッシュメモリ装置100eは、キャッシュメモリ110と、キャッシュコントローラ120eと、ライトバッファ130と、を備える。キャッシュメモリ110は、図3に示したキャッシュメモリ110と同様である。ライトバッファ130は、図10に示したライトバッファ130と同様である。
【0102】
キャッシュコントローラ120eは、読み出し制御部121と、書き込み制御部122eと、ダーティラインカウント部123と、書き戻し制御部124eと、を備える。読み出し制御部121は、図3に示した読み出し制御部121と同様である。ダーティラインカウント部123は、図7に示したダーティラインカウント部123と同様である。
【0103】
書き込み制御部122eは、図14に示した書き込み制御部122dと同様に、プロセッサコア11からのメインメモリ5に対するデータ書き込み要求があると、指定されたアドレスに対応するキャッシュメモリ110のラインを選択する。このとき、指定されたアドレスに対応するラインがキャッシュメモリ110内に存在していなければ、書き込み制御部122eは、キャッシュメモリ110から1つのラインを選択し、選択したラインがダーティラインであれば、そのラインのデータをメインメモリ5に書き戻すために必要な情報をライトバッファ130に入れる。
【0104】
書き戻し制御部124eは、プロセッサ10がメインメモリ5にアクセスしていないときなどの任意のタイミングでダーティラインカウント部123の出力を参照し、キャッシュメモリ110内のダーティラインの数が許容ライン数を超えているか否かを判定する。そして、書き戻し制御部124eは、キャッシュメモリ110内のダーティラインの数が許容ライン数を超えている場合に、ダーティラインのデータをメインメモリ5に書き戻すために必要な情報をライトバッファ130に入れる。これにより、キャッシュメモリ110内に存在するダーティラインの数が一時的に許容ライン数を超えていたとしても、ダーティラインの数を許容ライン数以下に戻すことができる。また、ダーティラインのデータをメインメモリ5に直接書き戻すのではなく、書き戻しに必要な情報をライトバッファ130に入れるようにしているので、メインメモリ5へのデータの書き戻しに伴うプロセッサ10のストールを有効に防止できる。
【0105】
図19は、プロセッサコア11がメインメモリ5に対するデータの書き込み要求を出したときに、キャッシュコントローラ120eの書き込み制御部122eにより実行される処理を示すフローチャートである。なお、図19のフローチャートにおけるステップS1101〜ステップS1104の処理は、図15のフローチャートにおけるステップS801〜ステップS804の処理と同じである。また、図19のフローチャートにおけるステップS1106の処理は、図15のフローチャートにおけるステップS806の処理と同じである。図19のフローチャートにおいて、図15のフローチャートと相違するのは、ステップS1105の処理である。
【0106】
すなわち、キャッシュコントローラ120eの書き込み制御部122eは、ステップS1103で選択したラインがダーティラインであれば(ステップS1104:Yes)、ステップS1105において、ステップS1103で選択したラインのデータをメインメモリ5に書き戻すために必要な情報をライトバッファ130に入れる。
【0107】
図20は、キャッシュコントローラ120eの書き戻し制御部124eにより実行される処理の一例を示すフローチャートである。なお、図20のフローチャートにおけるステップS1201およびステップS1202の処理は、図16のフローチャートにおけるステップS901およびステップS902の処理と同じである。また、図20のフローチャートにおけるステップS1204の処理は、図16のフローチャートにおけるステップS904の処理と同じである。図20のフローチャートにおいて、図16のフローチャートと相違するのは、ステップS1203の処理である。
【0108】
すなわち、キャッシュコントローラ120eの書き戻し制御部124eは、ステップS1203において、ステップS1202で選択したダーティラインのデータをメインメモリ5に書き戻すために必要な情報をライトバッファ130に入れる。
【0109】
図21は、キャッシュコントローラ120eの書き戻し制御部124eにより実行される処理の他の例を示すフローチャートである。なお、図21のフローチャートにおけるステップS1301およびステップS1302の処理は、図17のフローチャートにおけるステップS1001およびステップS1002の処理と同じである。また、図21のフローチャートにおけるステップS1304およびステップS1305の処理は、図17のフローチャートにおけるステップS1004およびステップS1005の処理と同じである。図21のフローチャートにおいて、図17のフローチャートと相違するのは、ステップS1303の処理である。
【0110】
すなわち、キャッシュコントローラ120eの書き戻し制御部124eは、ステップS1303において、ステップS1302で選択したダーティラインのデータをメインメモリ5に書き戻すために必要な情報をライトバッファ130に入れる。
【0111】
(第6実施例)
次に、第6実施例のキャッシュメモリ装置100fについて説明する。図22は、第6実施例のキャッシュメモリ装置100fの概要を説明する図である。第6実施例のキャッシュメモリ装置は、第1キャッシュメモリ装置100f−1と第2キャッシュメモリ装置100f−2を階層的に組み合わせた構成になっている。プロセッサコア11側の第1キャッシュメモリ装置100f−1は、許容ライン数と同じ数のラインを持つライトバック型のキャッシュメモリ装置として動作する。第1キャッシュメモリ装置100f−1とメインメモリ5の間の第2キャッシュメモリ装置100f−2は、任意の数のラインを持つライトスルー型のキャッシュメモリとして動作する。第2キャッシュメモリ装置100f−2はライトスルー型なので、その中にはダーティなラインは存在しない。この組み合わせにより、第1キャッシュメモリ装置100f−1と第2キャッシュメモリ装置100f−2から構成されるキャッシュメモリ装置100f内のダーティラインの最大数(許容ライン数)は、第1キャッシュメモリ装置100f−1内のダーティラインの最大数と同じライン数に抑えることができる。
【0112】
図23は、第6実施例のキャッシュメモリ装置100fの構成を示す図である。第6実施例のキャッシュメモリ装置100fは、第1キャッシュメモリ装置100f−1と、第2キャッシュメモリ装置100f−2と、を備える。第1キャッシュメモリ装置100f−1は、第1キャッシュメモリ110f−1と、第1キャッシュコントローラ120f−2と、を備える。第1キャッシュコントローラ120f−1は、第1読み出し制御部121f−1と、第1書き込み制御部122f−1と、を備える。第2キャッシュメモリ装置100f−2は、第2キャッシュメモリ110f−2と、第2キャッシュコントローラ120f−2と、を備える。第2キャッシュコントローラ120f−2は、第2読み出し制御部121f−2と、第2書き込み制御部122f−2と、を備える。
【0113】
図24は、プロセッサコア11がメインメモリ5に対するデータの読み出し要求を出したときに、第1キャッシュコントローラ120f−1の第1読み出し制御部121f−1により実行される処理を示すフローチャートである。
【0114】
プロセッサコア11からメインメモリ5に対するデータ読み出し要求があると、第1読み出し制御部121f−1は、まず、指定されたアドレスに対応するラインが第1キャッシュメモリ110f-1内に存在するか否かを判定する(ステップS1401)。そして、指定されたアドレスに対応するラインが第1キャッシュメモリ110f-1内に存在する場合(ステップS1401:Yes)、第1読み出し制御部121f−1は、該当するラインから指定されたアドレスのデータを読み出してプロセッサコア5に返す(ステップS1402)。
【0115】
一方、指定されたアドレスに対応するラインが第1キャッシュメモリ110f−1内に存在しない場合(ステップS1401:No)、第1読み出し制御部121f−1は、第1キャッシュメモリ110f−1のいずれかのラインを選択する(ステップS1403)。そして、第1読み出し制御部121f−1は、ステップS1403で選択したラインのダーティフラグ(D)を参照し、そのラインがダーティラインであるか否かを判定する(ステップS1404)。そして、ステップS1403で選択したラインがダーティラインであれば(ステップS1404:Yes)、第1読み出し制御部121f−1は、ステップS1403で選択したラインに記憶しているデータをメインメモリ5に書き戻すことを第2キャッシュメモリ装置100f−2に依頼する(ステッS1405)。一方、ステップS1403で選択したラインがダーティラインでなければ(ステップS1404:No)、ステップS1405の処理は行わずに次に進む。
【0116】
次に、第1読み出し制御部121f−1は、指定されたアドレスを含むラインサイズ分のデータを第2キャッシュメモリ装置100f−2から読み出して、そのデータをステップS1403で選択したラインに記憶する。そして、第1読み出し制御部121f−1は、データを記憶したラインのバリッドフラグ(V)を立てるとともにダーティフラグ(D)を下げ、指定されたアドレスのデータをプロセッサコア5に返す(ステッS1406)。
【0117】
図25は、プロセッサコア11がメインメモリ5に対するデータの書き込み要求を出したときに、第1キャッシュコントローラ120f−1の第1書き込み制御部122f−1により実行される処理の一例を示すフローチャートである。
【0118】
プロセッサコア11からのメインメモリ5に対するデータ書き込み要求があると、第1書き込み制御部122f−1は、まず、指定されたアドレスに対応するラインが第1キャッシュメモリ110f−1内に存在するか否かを判定する(ステップS1501)。そして、指定されたアドレスに対応するラインが第1キャッシュメモリ110f−1内に存在する場合(ステップS1501:Yes)、第1書き込み制御部122f−1は、該当するラインを書き込み対象のラインとして選択し、そのライン内の該当個所にデータを書き込んで、そのラインのダーティフラグ(D)を立てる(ステップS1502)。
【0119】
一方、指定されたアドレスに対応するラインが第1キャッシュメモリ110f−1内に存在しない場合(ステップS1501:No)、第1書き込み制御部122f−1は、第1キャッシュメモリ110f−1内の1つのラインを書き込み対象のラインとして選択する(ステップS1503)。次に、第1書き込み制御部122f−1は、ステップS1503で選択したラインのダーティフラグ(D)を参照し、そのラインがダーティラインであるか否かを判定する(ステップS1504)。そして、ステップS1503で選択したラインがダーティラインであれば(ステップS1504:Yes)、第1書き込み制御部122f−1は、ステップS1503で選択したラインに記憶しているデータをメインメモリ5に書き戻すことを第2キャッシュメモリ装置100f−2に依頼する(ステップS1505)。一方、ステップS1503で選択したラインがダーティラインでなければ(ステップS1504:No)、ステップS1505の処理は行わずに次に進む。
【0120】
次に、第1書き込み制御部122f−1は、指定されたアドレスを含むラインサイズ分のデータを第2キャッシュメモリ装置100f−2から読み出して、ステップS1503で選択したラインに記憶し、そのラインのバリッドフラグ(V)を立てるとともに、そのライン内の該当個所にデータを書き込む(ステップS1506)。
【0121】
図26は、プロセッサコア11がメインメモリ5に対するデータの書き込み要求を出したときに、第1キャッシュコントローラ120f−1の書き込み制御部122f−1により実行される処理の他の例を示すフローチャートである。図25に示した例と図26の例とでは、プロセッサコア11からのメインメモリ5に対するデータ書き込み要求を第1書き込み制御部122f−1が処理する際に、書き込み対象のアドレスのデータに対応するラインが第1キャッシュメモリ110f−1内に存在しない場合、すなわちミスヒット時の処理方式が異なる。図25に示した例は、書き込みのミスヒットが発生すると、該当するアドレスを含むラインサイズ分のデータをメインメモリ5から読み出して新しく確保したラインに書き込むことでミスヒット状態を解消する方式である。一方、図26の例は、書き込みのミスヒットが発生すると、メインメモリ5へのデータの書き込みを第2キャッシュメモリ装置100f−2に依頼する方式である。
【0122】
プロセッサコア11からのメインメモリ5に対するデータ書き込み要求があると、第1書き込み制御部122f−1は、まず、指定されたアドレスに対応するラインが第1キャッシュメモリ110f−1内に存在するか否かを判定する(ステップS1601)。そして、指定されたアドレスに対応するラインが第1キャッシュメモリ110f−1内に存在する場合(ステップS1601:Yes)、第1書き込み制御部122f−1は、該当するラインを書き込み対象のラインとして選択し、そのライン内の該当個所にデータを書き込んで、そのラインのダーティフラグ(D)を立てる(ステップS1602)。
【0123】
一方、指定されたアドレスに対応するラインが第1キャッシュメモリ110f−1内に存在しない場合(ステップS1601:No)、第1書き込み制御部122f−1は、メインメモリ5に対するデータの書き込みを第2キャッシュメモリ装置100f−2に依頼する(ステップS1603)。
【0124】
図27は、第1キャッシュメモリ装置100f−1がメインメモリ5に対するデータの読み出し要求を出したときに、第2キャッシュコントローラ120f−2の読み出し制御部121f−2により実行される処理を示すフローチャートである。
【0125】
第1キャッシュメモリ装置100f−1(詳しくは第1キャッシュメモリ装置100f−1内の第1キャッシュコントローラ120f−1)からメインメモリ5に対するデータ読み出し要求があると、第2読み出し制御部121f−2は、まず、指定されたアドレスに対応するラインが第2キャッシュメモリ110f-2内に存在するか否かを判定する(ステップS1701)。そして、指定されたアドレスに対応するラインが第2キャッシュメモリ110f−2内に存在する場合(ステップS1701:Yes)、第2読み出し制御部121f−2は、該当するラインから指定されたアドレスのデータを読み出して第1キャッシュメモリ装置100f−1に返す(ステップS1702)。
【0126】
一方、指定されたアドレスに対応するラインが第2キャッシュメモリ110f−2内に存在しない場合(ステップS1701:No)、第2読み出し制御部121f−2は、第2キャッシュメモリ110f−2のいずれかのラインを選択する(ステップS1703)。次に、第2読み出し制御部121f−2は、指定されたアドレスを含むラインサイズ分のデータをメインメモリ5から読み出して、そのデータをステップS1703で選択したラインに記憶する。そして、第2読み出し制御部121f−2は、データを記憶したラインのバリッドフラグ(V)を立て、指定されたアドレスのデータを第1キャッシュメモリ装置100f−1に返す(ステップS1704)。
【0127】
図28は、第1キャッシュメモリ装置100f−1がメインメモリ5に対するデータの書き込み要求を出したときに、第2キャッシュコントローラ120f−2の第2書き込み制御部122f−2により実行される処理を示すフローチャートである。
【0128】
第1キャッシュメモリ装置100f−1(詳しくは第1キャッシュメモリ装置100f−1内の第1キャッシュコントローラ120f−1)からのメインメモリ5に対するデータ書き込み要求があると、第2書き込み制御部122f−2は、まず、指定されたアドレスに対応するラインが第2キャッシュメモリ110f−2内に存在するか否かを判定する(ステップS1801)。そして、指定されたアドレスに対応するラインが第2キャッシュメモリ110f−2内に存在する場合(ステップS1701:Yes)、第2書き込み制御部122f−2は、該当するラインを書き込み対象のラインとして選択し、そのライン内の該当個所にデータを書き込む(ステップS1702)。一方、指定されたアドレスに対応するラインが第2キャッシュメモリ110f−2内に存在しない場合(ステップS1701:No)、ステップS1702の処理は行わずに次に進む。
【0129】
次に、第2書き込み制御部122f−2は、メインメモリ5にデータを書き込む(ステップS1703)。
【0130】
なお、第1キャッシュメモリ装置100f−1は、ライトバッファ130を備える構成であってもよい。また、第2キャッシュメモリ装置100f−2は、ライトバッファ130を備える構成であってもよい。
【0131】
図22に示したように、第6実施例のキャッシュメモリ装置100fが備える第1キャッシュメモリ装置100f−1と第2キャッシュメモリ装置100f−2との関係は、2階層のキャッシュメモリ装置を備えるSoC(System on a Chip)あるいはプロセッサにおける、プロセッサコア11に近いレベル1キャッシュと、メインメモリ5に近いレベル2キャッシュとの関係と同じである。よって、レベル1キャッシュとレベル2キャッシュから構成される階層キャッシュメモリ装置を備え、レベル1キャッシュおよびレベル2キャッシュの制御方式をライトバック方式かライトスルー方式かを設定できるSoCあるいはプロセッサを用いれば、レベル1キャッシュのライン数を許容ライン数として、レベル1キャッシュをライトバック方式に、レベル2キャッシュをライトスルー方式に設定することで、本実施例に基づいた動作をさせることができる。
【0132】
(プロセッサのバリエーション)
以上、具体例を挙げて詳細に説明した本実施形態のキャッシュメモリ装置100は、様々な構成のプロセッサ10に適用できる。図29は、情報処理装置1が備えるプロセッサ10のバリエーションを示す図である。図2に示したプロセッサ10の構成は、図29(a)に示す例と一致している。
【0133】
図29(b)に示す例は、プロセッサ10が、1次キャッシュメモリ装置200と、2次キャッシュメモリ装置300と、を備える例である。プロセッサ10が図29(b)に示す構成の場合、1次キャッシュメモリ装置200が、本実施形態のキャッシュメモリ装置100となる。そして、本実施形態のキャッシュメモリ装置100がデータを書き戻す対象は、2次キャッシュメモリ装置300となる。なお、第6実施例を図29(b)のような変形例で実施する場合、1次キャッシュメモリ装置200がレベル1キャッシュとレベル2キャッシュから構成される階層キャッシュメモリ装置となる。
【0134】
2次キャッシュメモリ装置300は、MRAMやPCMなどの不揮発メモリの技術を用いた不揮発キャッシュメモリ装置として実現することが望ましいが、SRAMを用いた構成でも構わない。また、2次キャッシュメモリ装置300はライトスルー型でもライトバック型でもよい。2次キャッシュメモリ装置300をライトバック型にする方がメインメモリ5へのアクセス頻度を削減することができる。なお、図29(b)に示す例では、1次キャッシュメモリ装置200と2次キャッシュメモリ装置300との2段のキャッシュメモリ装置を備える構成であるが、3段以上のキャッシュメモリ装置を備える構成であってもよい。3段以上のキャッシュメモリ装置を備える構成の場合も、1次キャッシュメモリ装置200が、本実施形態のキャッシュメモリ装置100となる。
【0135】
図29(c)に示す例は、プロセッサ10が、第1プロセッサコア11aと第2プロセッサコア11bとを備えるマルチコアプロセッサとして構成された例である。この図29(c)の例では、第1プロセッサコア11aが第1の1次キャッシュメモリ装置200aを使用し、第2プロセッサコア11bが第2の1次キャッシュメモリ装置200bを使用する。また、第1の1次キャッシュメモリ装置200aと第2の1次キャッシュメモリ装置200bとに共通の2次キャッシュメモリ装置300が設けられている。
【0136】
プロセッサ10が図29(c)に示す構成の場合、第1の1次キャッシュメモリ装置200aおよび第2の1次キャッシュメモリ装置200bが、本実施形態のキャッシュメモリ装置100となる。そして、本実施形態のキャッシュメモリ装置100がデータを書き戻す対象は、2次キャッシュメモリ装置300となる。なお、図29(c)に示す例では、第1プロセッサコア11aおよび第2プロセッサコア11bの2つのプロセッサコアを備える構成であるが、3つ以上のプロセッサコアを備える構成であってもよい。3つ以上のプロセッサコアを備える構成の場合も、各プロセッサコアが使用する1次キャッシュメモリ装置が、本実施形態のキャッシュメモリ装置100となる。
【0137】
以上説明したように、本実施形態のキャッシュメモリ装置100は、ライトバック型の書き込み方式を基本にしながら、キャッシュメモリ110内に存在するダーティラインの数を許容ライン数で制限し、ダーティラインの数が許容ライン数に超えるとダーティラインのデータをメインメモリ5に書き戻すようにしている。したがって、プロセッサ10がプログラムを実行している間のメインメモリ5への書き込み頻度を削減できるといったライトバック型の利点を活かしつつ、電源の供給が遮断されるときにキャッシュメモリ110からメインメモリ5に書き戻すデータ量を抑えることができる。したがって、本実施形態のキャッシュメモリ装置100を備えるプロセッサ10は、実行モードから、キャッシュメモリ装置100に対する電源の供給を遮断する深い待機モードに切り替わるのに要する時間と消費電力を削減することができるので、ごく短時間の待機時間であっても深い待機モードに切り替えることができ、大幅な消費電力の削減を図ることができる。
【0138】
以上、本発明の実施形態を説明したが、ここで説明した実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。ここで説明した新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。ここで説明した実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0139】
1 情報処理装置
5 メインメモリ
10 プロセッサ
11 プロセッサコア
100 キャッシュメモリ装置
110 キャッシュメモリ
111 Rキャッシュメモリ
112 Wキャッシュメモリ
120 キャッシュコントローラ
122 書き込み制御部
123 ダーティラインカウント部
124 書き戻し制御部
130 ライトバッファ
【特許請求の範囲】
【請求項1】
記憶装置のデータをキャッシュするキャッシュメモリ装置であって、
複数のキャッシュラインを有する記憶部と、
前記複数のキャッシュラインのうち、前記記憶装置に書き込まれていないデータを含むダーティラインの数が予め定めた所定数を超える場合に、前記ダーティラインのデータを前記記憶装置に書き込む制御部と、を備えることを特徴とするキャッシュメモリ装置。
【請求項2】
前記記憶部は、任意の数のキャッシュラインを有する第1記憶部と、前記所定数のキャッシュラインを有する第2記憶部と、を有し、
前記制御部は、前記第2記憶部のキャッシュラインに対してのみデータの書き込みを行い、前記第2記憶部の前記ダーティラインを再利用する場合に、前記ダーティラインのデータを前記記憶装置に書き込むことを特徴とする請求項1に記載のキャッシュメモリ装置。
【請求項3】
前記制御部は、前記複数のキャッシュラインのいずれかにデータの書き込みを行った結果、前記ダーティラインの数が前記所定数を超える場合に、前記ダーティラインのデータを前記記憶装置に書き込むことを特徴とする請求項1に記載のキャッシュメモリ装置。
【請求項4】
前記制御部は、任意のタイミングで前記ダーティラインの数をカウントし、カウントした前記ダーティラインの数が前記所定数を超えている場合に、前記ダーティラインのデータを前記記憶装置に書き込むことを特徴とする請求項1に記載のキャッシュメモリ装置。
【請求項5】
前記記憶部は、前記所定数のキャッシュラインを有する第1記憶部と、任意の数のキャッシュラインを有する第2記憶部と、を有し、
前記制御部は、前記第1記憶部を制御する第1制御部と、前記第2記憶部を制御する第2制御部と、を有し、
前記第1制御部は、前記第1記憶部のキャッシュラインに対してのみデータの書き込みを行い、前記第1記憶部のダーティラインを再利用する場合に、前記ダーティラインのデータを前記記憶装置に書き込むことを前記第2制御部に指示し、
前記第2制御部は、前記第1制御部からの指示に応じて、前記ダーティラインのデータを前記記憶装置に書き込むことを特徴とする請求項1に記載のキャッシュメモリ装置。
【請求項6】
前記記憶装置は、不揮発性の2次キャッシュメモリ装置であることを特徴とする請求項1〜5のいずれか一項に記載のキャッシュメモリ装置。
【請求項7】
前記ダーティラインのデータを一時的に保持するライトバッファを備え、
前記制御部は、前記ダーティラインのデータを前記ライトバッファに出力し、任意のタイミングで前記ライトバッファから前記記憶装置に前記ダーティラインのデータを書き込むことを特徴とする請求項1〜6のいずれか一項に記載のキャッシュメモリ装置。
【請求項8】
記憶装置にアクセスしてプログラムを実行するプロセッサコアと、
前記記憶装置のデータをキャッシュするキャッシュメモリ装置と、を備え、
前記キャッシュメモリ装置は、
複数のキャッシュラインを有する記憶部と、
前記複数のキャッシュラインのうち、前記記憶装置に書き込まれていないデータを含むダーティラインの数が予め定めた所定数を超える場合に、前記ダーティラインのデータを前記記憶装置に書き込む制御部と、を備えることを特徴とするプロセッサ。
【請求項9】
記憶装置と、
前記記憶装置にアクセスしてプログラムを実行するプロセッサコアと、
前記記憶装置のデータをキャッシュするキャッシュメモリ装置と、を備え、
前記キャッシュメモリ装置は、
複数のキャッシュラインを有する記憶部と、
前記複数のキャッシュラインのうち、前記記憶装置に書き込まれていないデータを含むダーティラインの数が予め定めた所定数を超える場合に、前記ダーティラインのデータを前記記憶装置に書き込む制御部と、を備えることを特徴とする情報処理装置。
【請求項1】
記憶装置のデータをキャッシュするキャッシュメモリ装置であって、
複数のキャッシュラインを有する記憶部と、
前記複数のキャッシュラインのうち、前記記憶装置に書き込まれていないデータを含むダーティラインの数が予め定めた所定数を超える場合に、前記ダーティラインのデータを前記記憶装置に書き込む制御部と、を備えることを特徴とするキャッシュメモリ装置。
【請求項2】
前記記憶部は、任意の数のキャッシュラインを有する第1記憶部と、前記所定数のキャッシュラインを有する第2記憶部と、を有し、
前記制御部は、前記第2記憶部のキャッシュラインに対してのみデータの書き込みを行い、前記第2記憶部の前記ダーティラインを再利用する場合に、前記ダーティラインのデータを前記記憶装置に書き込むことを特徴とする請求項1に記載のキャッシュメモリ装置。
【請求項3】
前記制御部は、前記複数のキャッシュラインのいずれかにデータの書き込みを行った結果、前記ダーティラインの数が前記所定数を超える場合に、前記ダーティラインのデータを前記記憶装置に書き込むことを特徴とする請求項1に記載のキャッシュメモリ装置。
【請求項4】
前記制御部は、任意のタイミングで前記ダーティラインの数をカウントし、カウントした前記ダーティラインの数が前記所定数を超えている場合に、前記ダーティラインのデータを前記記憶装置に書き込むことを特徴とする請求項1に記載のキャッシュメモリ装置。
【請求項5】
前記記憶部は、前記所定数のキャッシュラインを有する第1記憶部と、任意の数のキャッシュラインを有する第2記憶部と、を有し、
前記制御部は、前記第1記憶部を制御する第1制御部と、前記第2記憶部を制御する第2制御部と、を有し、
前記第1制御部は、前記第1記憶部のキャッシュラインに対してのみデータの書き込みを行い、前記第1記憶部のダーティラインを再利用する場合に、前記ダーティラインのデータを前記記憶装置に書き込むことを前記第2制御部に指示し、
前記第2制御部は、前記第1制御部からの指示に応じて、前記ダーティラインのデータを前記記憶装置に書き込むことを特徴とする請求項1に記載のキャッシュメモリ装置。
【請求項6】
前記記憶装置は、不揮発性の2次キャッシュメモリ装置であることを特徴とする請求項1〜5のいずれか一項に記載のキャッシュメモリ装置。
【請求項7】
前記ダーティラインのデータを一時的に保持するライトバッファを備え、
前記制御部は、前記ダーティラインのデータを前記ライトバッファに出力し、任意のタイミングで前記ライトバッファから前記記憶装置に前記ダーティラインのデータを書き込むことを特徴とする請求項1〜6のいずれか一項に記載のキャッシュメモリ装置。
【請求項8】
記憶装置にアクセスしてプログラムを実行するプロセッサコアと、
前記記憶装置のデータをキャッシュするキャッシュメモリ装置と、を備え、
前記キャッシュメモリ装置は、
複数のキャッシュラインを有する記憶部と、
前記複数のキャッシュラインのうち、前記記憶装置に書き込まれていないデータを含むダーティラインの数が予め定めた所定数を超える場合に、前記ダーティラインのデータを前記記憶装置に書き込む制御部と、を備えることを特徴とするプロセッサ。
【請求項9】
記憶装置と、
前記記憶装置にアクセスしてプログラムを実行するプロセッサコアと、
前記記憶装置のデータをキャッシュするキャッシュメモリ装置と、を備え、
前記キャッシュメモリ装置は、
複数のキャッシュラインを有する記憶部と、
前記複数のキャッシュラインのうち、前記記憶装置に書き込まれていないデータを含むダーティラインの数が予め定めた所定数を超える場合に、前記ダーティラインのデータを前記記憶装置に書き込む制御部と、を備えることを特徴とする情報処理装置。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26】
【図27】
【図28】
【図29】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26】
【図27】
【図28】
【図29】
【公開番号】特開2013−65150(P2013−65150A)
【公開日】平成25年4月11日(2013.4.11)
【国際特許分類】
【出願番号】特願2011−202740(P2011−202740)
【出願日】平成23年9月16日(2011.9.16)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】
【公開日】平成25年4月11日(2013.4.11)
【国際特許分類】
【出願日】平成23年9月16日(2011.9.16)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】
[ Back to top ]