JP5298826B2 - キャッシュメモリ及びプリフェッチ方法 - Google Patents

キャッシュメモリ及びプリフェッチ方法 Download PDF

Info

Publication number
JP5298826B2
JP5298826B2 JP2008320615A JP2008320615A JP5298826B2 JP 5298826 B2 JP5298826 B2 JP 5298826B2 JP 2008320615 A JP2008320615 A JP 2008320615A JP 2008320615 A JP2008320615 A JP 2008320615A JP 5298826 B2 JP5298826 B2 JP 5298826B2
Authority
JP
Japan
Prior art keywords
prefetch
data
line
memory
cache
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2008320615A
Other languages
English (en)
Other versions
JP2010146145A (ja
Inventor
康雄 石井
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP2008320615A priority Critical patent/JP5298826B2/ja
Publication of JP2010146145A publication Critical patent/JP2010146145A/ja
Application granted granted Critical
Publication of JP5298826B2 publication Critical patent/JP5298826B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Memory System Of A Hierarchy Structure (AREA)

Description

本発明は、プロセッサ及び主記憶装置に接続されるキャッシュメモリに関し、特に、空間的局所性を動的に検出するキャッシュメモリ、及びそのプリフェッチ方法に関する。
従来、中央演算処理装置において、プリフェッチは主記憶装置(メインメモリ)とプロセッサの演算処理部との速度差を生めるために利用されている。
たとえば、特許文献1、特許文献2には、プロセッサの実行するループ構造を検出して、プリフェッチ情報を生成する装置が記載されている。ループを検出してプリフェッチ要求を生成することで実効性能を向上させるものである。
しかし、これらの手法には次のような問題点があった。まず、非常に大きなループ検出装置が必要となり、性能の向上幅に見合わないハードウェア量を要求されていた。また、これらの手法は、応用範囲が限定されていた。例えば、これらの手法ではストライドアクセスしかサポートされないため、C言語で多用されるスタック型のメモリ構成などではその効果を十分に発揮できなかった。
また、ハードウェアプリフェッチのプリフェッチ幅は装置によって静的に定められ、動的に適切なプリフェッチ幅に変更する機能を持たない、あるいは、精度の低い予測によりプリフェッチ幅を決定していた。このため、プログラムの挙動に応じたプリフェッチ幅の設定を実現することが困難であった。
さらには、不適切なプリフェッチ幅が設定された場合には、プログラムの実効性能が低下するという問題点があった。
特開2005−242527号公報 特開2002−297379号公報
本発明は、このような事情に鑑みてなされたものであり、動作状況に応じて、プリフェッチ幅を動的に変更するキャッシュメモリ及びプリフェッチ方法を提供することを目的とする。
本発明に係るキャッシュメモリの一態様は、プロセッサ及び主記憶装置に接続され、前記主記憶装置が保存するデータのコピーをライン単位に保持するデータアレイと、前記主記憶装置からデータを読み出し、前記データのコピーを前記データアレイの各ラインに書き込むメモリ制御手段と、各ラインに保持されるデータのコピーを管理する管理情報と、各ラインに保持されたデータのコピーの使用状況を示す使用情報とを保持する制御情報メモリと、前記プロセッサからの要求に応じて、データのコピーが前記データアレイに保持されているかを前記管理情報に基づいて判断し、保持されている場合、前記データアレイからデータを読み出し、保持されていない場合、前記主記憶装置からデータを読み出すことを前記メモリ制御手段に指示するキャッシュ制御手段と、前記使用情報に基づいて、前記メモリ制御手段がプリフェッチするプリフェッチライン数を決定するプリフェッチ制御手段と、を備え、前記メモリ制御手段は、前記キャッシュ制御手段からの指示に応じて前記主記憶装置からデータを読み出すときに、前記プリフェッチライン数に従って、プリフェッチを行う。
また、本発明に係るキャッシュメモリのプリフェッチ方法の一態様は、プロセッサ及び主記憶装置に接続されるキャッシュメモリのプリフェッチ方法であって、前記プロセッサからの要求に応じて、前記主記憶装置からデータを読み出すとともにプリフェッチを行い、読み出したデータのコピーとプリフェッチしたデータのコピーとデータアレイの各ラインに書き込み、前記プリフェッチを用いて書き込まれたラインが保持するデータの使用状況を監視し、前記使用状況に基づいて、プリフェッチするライン数を決定する。
本発明によれば、動作状況に応じて、プリフェッチ幅を動的に変更するキャッシュメモリ及びプリフェッチ方法を提供することが可能となる。
以下、本発明の実施形態について、図面を参照しながら説明する。説明の明確化のため、以下の記載及び図面は、適宜、省略、及び簡略化がなされている。各図面において同一の構成または機能を有する構成要素および相当部分には、同一の符号を付し、その説明は省略する。
本発明のキャッシュメモリが実現するプリフェッチ方式及びその方法は、プリフェッチしたラインが保持するデータの使用状況を監視し、使用状況に応じて、プリフェッチするライン数を動的に変化させる。すなわち、動作中のシステムに利用環境における、主記憶装置のデータの空間的/時間的局所性の程度を、プリフェッチしたデータの利用状況を用いて推定し、推定結果に基づいてプリフェッチするデータ量を決定するプリフェッチ方式である。以下、各実施形態において詳細に説明する。
(実施形態1)
図1は、本発明の実施形態1に係るキャッシュメモリの構成例を示すブロック図である。図1を参照すると、本発明のキャッシュメモリ1は、プロセッサ2、主記憶装置(メインメモリ)3に接続されている。キャッシュメモリ1の内部には、メモリコントローラ(メモリ制御手段)10、キャッシュコントローラ(キャッシュ制御手段)11、プリフェッチ制御部(プリフェッチ制御手段)12、制御情報メモリ13、及びデータアレイ14を含んで構成される。
キャッシュコントローラ11は、プロセッサ2からメモリアクセス要求を受け取り、キャッシュメモリにデータがあるかどうかをチェックする。具体的には、キャッシュコントローラ11は、制御情報メモリ13を参照し、メモリアクセス要求が要求するデータのコピーがデータアレイ14に保持されているかチェックする。キャッシュヒットした場合、データアレイ14からデータを読み出しプロセッサにリプライとして返す。キャッシュミスした場合、メモリコントローラ10に対して要求されたデータを主記憶装置3から読み出すように指示する(読み出し要求)。このとき、メモリアクセス要求が要求しているアドレス(リクエストのアドレス)を通知する。
メモリコントローラ10は、キャッシュコントローラ11から主記憶装置3の読み出し要求が受けた際に、そのリクエストのアドレスで主記憶装置3に対してアクセスを行う。その後、プリフェッチ動作を行う。具体的には、まず、プリフェッチ制御部12からプリフェッチ幅(プリフェッチ幅については、後述する)を取得する。続いて、プリフェッチ幅に従ってプリフェッチのメモリアクセスを実施する。
メモリコントローラ10は、主記憶装置3へアクセスして読み出したデータをデータアレイ14に書き込む。データの書き込みが終了すると制御情報メモリ13に対して、アクセスした主記憶装置3の情報を書き込む。プリフェッチで読み出したデータに関しても制御情報メモリ13へ情報を書き込む。制御情報メモリ13へ書き込むデータについては、制御情報メモリ13の説明で詳述する。
データアレイ14は、キャッシュメモリに格納されている主記憶装置3のデータのコピー(以下、「コピーデータ」ともいう)を保持するRAM(Random Access Memory)である。データアレイ14は、コピーデータをライン(キャッシュライン、ブロック)という単位を用いて保持する。各ラインを管理する情報が制御情報メモリ13に保持される。データアレイ14は通常のキャッシュメモリでも利用されている機能と同様であるため詳細な説明を省略する。
制御情報メモリ13は、有効ビット131、タグアドレス132、LRU(Least Recently Used)情報133、プリフェッチビット(プリフェッチ情報)134の4種類の情報を格納する。制御情報メモリ13は、これら4種類の情報を、データアレイ14の各ラインに対応させて格納する。また、4種類の情報のうち、有効ビット131とタグアドレス132とを管理情報、LRU情報133とプリフェッチビットとを使用情報ということもある。管理情報は、データアレイ14の各ラインに保持されるデータのコピーを管理する情報であり、使用情報は、各ラインに保持されたデータのコピーの使用状況を示す情報である。また、制御情報メモリ13は、上述した4種類以外の情報を含んでいてもよい。
有効ビット131は、対応するラインが有効であるか否かを示す。タグアドレス132は、対応するラインに格納されているデータのコピーの主記憶装置3上のアドレス(もしくはアドレスを導く情報)を保持する。有効ビット131、タグアドレス132に関しては通常のキャッシュメモリと同様であるため詳しい説明を省略する。
LRU情報133はキャッシュメモリの各ラインへのアクセスの最も古かったものを表す整数値である。例えば、Nウェイのセットアソシアティブメモリでは0、1、2、・・・、N−1の値をとる。LRU情報は、最近アクセスされたラインが最小の値となる。キャッシュミスが発生した際には、LRU情報の値が最も大きいラインを置き換え対象とする。
LRU情報は、キャッシュコントローラ11がデータアレイにアクセスしたときに、アクセスしたラインに対応するLRU情報が更新される。また、メモリコントローラ10がデータアレイを置き換えたときに、置き換えたラインに対応するLRU情報が更新される。
プリフェッチビット134は、プリフェッチによってフィルされたキャッシュラインであることを示すビットである。
プリフェッチビット134は、プリフェッチ動作に応じて、設定される。ここでは、1(ON)に設定されることを前提とする。具体的には、メモリコントローラ10が、コピーデータを書き込んだラインに対応するプリフェッチビット134を1に設定する。
また、プリフェッチビット134は、対応するラインがアクセスされたときにクリア(ゼロクリア、OFF)される。具体的には、キャッシュコントローラ11が、メモリアクセス要求に応じて、アクセスしたラインに対応するプリフェッチビット134をクリアする。このとき、キャッシュコントローラ11は、アクセスされたラインに対応するLRU情報133をプリフェッチ制御部12に引き渡す。プリフェッチ制御部12ではこの情報を元にプリフェッチ幅の決定を行うためのプリフェッチ成功失敗カウンタ121を更新する。
プリフェッチ制御部12は、プリフェッチされたラインの使用状況に基づいて、プリフェッチするライン数(プリフェッチ幅)を算出する。プリフェッチ制御部12は、プリフェッチ幅の決定をするためのプリフェッチ成功失敗カウンタ121(以下、「カウンタ121」ともいう)を有する。プリフェッチ成功失敗カウンタ121は、プリフェッチされたラインの使用状況を数値化して示す。プリフェッチ制御部12は、プリフェッチ成功失敗カウンタ121の値によってプリフェッチ幅(プリフェッチライン数)を決定する。カウンタの更新アルゴリズムに関しては後述する。決定したプリフェッチ幅は、前述のようにメモリコントローラ10から主記憶装置3へのアクセス要求の際に利用される。
プリフェッチ成功失敗カウンタ121は、16ビット程度の飽和カウンタで構成する。プリフェッチ成功失敗カウンタ121の情報は符号なし整数として扱う。プリフェッチ成功失敗カウンタ121の更新アルゴリズムは以下のとおりである。
1.プリフェッチ成功失敗カウンタ121を更新するアルゴリズム
1−1. プリフェッチ成功失敗カウンタ121は、プリフェッチしたラインがアクセスされた場合に更新される。具体的には、プリフェッチ成功失敗カウンタ121は、キャッシュメモリアクセスが発生した際に、制御情報メモリ13で読み出されたラインのプリフェッチビット134が1であった場合に更新される。あるいは、キャッシュメモリの置き換え対象となったラインのプリフェッチビット134が1であった場合に更新される。
1−2. 更新時に、そのメモリアクセス(キャッシュリプレース)について、成功失敗度数を計算する。ここでは、Nウェイのセットアソシアティブ方式のキャッシュメモリを一例として説明する。Nウェイのセットアソシアティブ方式の場合には、以下の計算式で計算する。ただし、Nは2の倍数とする。
(ア) キャッシュヒットした場合: N/2−(LRU情報133の値)
(イ) キャッシュミスした場合 : −N/2
1−3. 上記1−2.で計算した値をプリフェッチ成功失敗カウンタに足しこむ。飽和カウンタなので計算結果がオーバーフローやアンダーフローになることはない。すなわち、計算結果が最小値を下回る場合には最小値、最大値を上回る場合には最大値となる。
また、要求するプリフェッチ幅は以下のアルゴリズムで決定する。プリフェッチ成功失敗カウンタ121が保持するカウンタ値に基づいて決定する。以下は8ウェイのセットアソシアティブキャッシュメモリの場合には以下のようになる。
2.プリフェッチ幅を決定するアルゴリズム
2−1. カウンタ値が256未満の場合にはキャッシュライン1つ分のプリフェッチを要求する。
2−2. カウンタ値が256以上、512未満の場合にはキャッシュライン2つ分のプリフェッチを要求する。
2−3. カウンタ値が512以上、1024未満の場合にはキャッシュライン3つ分のプリフェッチを要求する。
2−4. カウンタ値が1024以上の場合にはキャッシュライン4つ分のプリフェッチを要求する。
なお、このカウンタ値と要求するプリフェッチ幅の相関はキャッシュメモリのウェイ数にも依存するため、採用するキャッシュメモリのウェイ数に依存して変更する必要がある。また、キャッシュライン5つ分以上のプリフェッチ要求をすることも考えられる。
ここで、「キャッシュライン1つ分のプリフェッチ」とは図2に示すように、本来メモリアクセス要求が要求したラインと、その後1つ分のラインを指し示すものとする。これが、2つ分なら2ライン分、3つ分なら3ラインとなる。図2では、左側にライン1つ分をプリフェッチする場合、右側にライン2つ分をプリフェッチする場合を示している。
プリフェッチ制御部12は、プリフェッチ成功失敗カウンタ121のカウンタ値に基づいてプリフェッチ幅を決定する。これにより、キャッシュメモリへ書き込んだコピーデータの再利用の度合いを推定する。言い換えれば、キャッシュメモリ登録後の空間的/時間的局所性を推定する。この推定結果(カウンタ値)に基づいてプリフェッチ幅を決定する。プリフェッチ幅で決定した複数のラインをあらかじめ取得することによりキャッシュヒット率を高めることができる。このようにして、プロセッサの実効性能を高めることが可能になる。
以上説明したように、キャッシュメモリ1は、キャッシュメモリ1の各ラインに対して、プリフェッチビット134を備える。そして、プリフェッチ制御部12は、キャッシュメモリ1へのアクセス、すなわち、キャッシュメモリ1からのデータ読み出しとキャッシュメモリ1のデータを置き換えるときに、プリフェッチビット134に従って、プリフェッチしたラインの使用状況をチェックする。また、プリフェッチ制御部12は、チェック結果を数値化(得点化)してその値を累積するプリフェッチ成功失敗カウンタ121を有する。さらに、プリフェッチ制御部12は、プリフェッチ成功失敗カウンタ121を参照してプリフェッチ幅を決定し、プリフェッチリクエストを送出する。
次にキャッシュメモリ1(回路)の動作に関して、図3から図5を用いて説明する。図3は、実施形態1のキャッシュメモリの動作例を示すフローチャートである。図4は、キャッシュヒット時の処理の動作例を示すフローチャートであり、図5は、キャッシュミス時の処理の動作例を示すフローチャートである。プロセッサ2の内部においてロード命令などのメモリアクセス命令(主記憶装置3へのアクセス命令)が発行されると(S11)、メモリアクセス命令はキャッシュコントローラ11に渡される。このとき、キャッシュコントローラ11は、制御情報メモリ13へアクセスする。キャッシュコントローラ11は、制御情報メモリ13に保持する情報に従って動作する。具体的には、制御情報メモリ13を参照し、アクセスする主記憶装置3のデータのコピーがデータアレイ14に保持されているか(キャッシュヒット)否か(キャッシュミス)を判定する(S12)。キャッシュコントローラ11は、キャッシュヒットの場合(S12でYes)、キャッシュヒット時の処理(S13)を実施し、キャッシュミスの場合(S12でNo)、キャッシュミス時の処理(S14)を実施する。以下、図4、図5を用いてキャシュヒットの場合とキャッシュミスの場合との制御の相違を説明する。
まず、図4を用いて、キャッシュヒットの場合の動作を説明する。キャッシュコントローラ11は、制御情報メモリ13のプリフェッチビット134をチェックする(S21)。プリフェッチビット134が1の場合(S22でYes)、キャッシュコントローラ11は、プリフェッチ制御部12に対してプリフェッチ成功失敗カウンタ121の更新指示を出す。このときにLRU情報133もプリフェッチ制御部12に引き渡す。プリフェッチ制御部12は、成功失敗度数を計算し(S23)、プリフェッチ成功失敗カウンタ121を更新する(S24)。その後、キャッシュコントローラ11は、プリフェッチビット134をクリアする(S25)。プリフェッチビット134が1以外の場合(S22でNo)、後述するステップS26の処理へ進む。
また、キャッシュコントローラ11は、LRU情報を更新する(S26)。具体的には、同一のセット中の他のラインでアクセスされたLRU情報133よりも小さいLRU情報133に対して+1を実施する。また、アクセスされたラインのLRU情報を0にセットする。この処理は通常のLRU制御であり、広く知られた手法である。
キャッシュコントローラ11は、データアレイ14から要求された値を読み出して、リプライデータとする。
次に、図5を用いて、キャッシュミスの場合の動作を説明する。キャッシュコントローラ11は、メモリコントローラ10に対して主記憶装置3へのアクセス指示(以下、「主記憶アクセス要求」ともいう)を出す(S31)。メモリコントローラ10は、キャッシュコントローラ11から主記憶アクセス要求を受け取ると、その要求されたアドレスに基づいて主記憶装置3に対してアクセスを実施する。メモリコントローラ10は、要求されたアドレスに応じてデータがリプライとしてかえってくると、データアレイ14にリプライデータを書き戻すため、データアレイ14の書き戻し先を決定する。具体的には、メモリコントローラ10は、キャッシュフィルする対象となるセットのLRU情報133を参照し、最も大きい値を持つラインを追い出されるラインとして決定する(S32)。
続いて、メモリコントローラ10は、追い出し対象のキャッシュラインのプリフェッチビット134を確認し、プリフェッチビット134が1の場合(S33でYes)、メモリコントローラ10は、プリフェッチ制御部12に対してプリフェッチ成功失敗カウンタ121の更新指示を出す。プリフェッチ制御部12は、成功失敗度数を計算し(S34)、プリフェッチ成功失敗カウンタ121を更新する(S35)。
メモリコントローラ10は、リプライデータを制御情報メモリ13とデータアレイ14に対して書き戻す(S36:キャッシュの置き換え)。具体的には、メモリコントローラ10は、リプライデータに応じて制御情報メモリ13を更新し、リプライデータをデータアレイ14にコピーする。このときに、LRU情報133は0として書き戻す。また、制御情報メモリ13にはプリフェッチビット134を0として書き込む。キャッシュの置き換え後、ステップS39のプリフェッチ動作に取り掛かる。
メモリコントローラ10は、キャッシュメモリへのフィルと平行して、プリフェッチを実施する。主記憶アクセス要求で要求されたアドレスがAであった場合、A+1、A+2、A+3、・・・がプリフェッチ対象となる。メモリコントローラ10は、プリフェッチの要求個数をプリフェッチ制御部12に対して問い合わせる。プリフェッチ制御部12は、メモリコントローラ10からの問い合わせに応じて、プリフェッチ成功失敗カウンタ121が保持するカウンタ値に基づいて、プリフェッチ幅を決定し、通知する。メモリコントローラ10は、通知されたプリフェッチ幅をプリフェッチ個数として決定する。メモリコントローラ10は、プリフェッチ個数を確認し(S39)、プリフェッチ要求がある場合(S40でYes)、プリフェッチ動作を、ステップS31以降と同様の処理を用いて進める。プリフェッチ個数がゼロの場合(S40でNo)処理を終了する。
メモリコントローラ10は、プリフェッチリクエストを主記憶装置3に対して送出する(S31)。リプライが返ってくると、ステップS32からS36の手順で書き戻しを実施する。キャッシュの置き換え(S36)終了後、メモリコントローラ10は、今回のキャッシュの置き換えがプリフェッチアクセスであるかを判定し(S37)、プリフェッチアクセスであるので(S37でYes)、制御情報メモリ13にはプリフェッチビットを1として書き込む(S38)。メモリコントローラ10は、プリフェッチ個数を確認する(S39)。プリフェッチ要求が残っている場合(S40でYes)、ステップS31以降の処理をプリフェッチ要求がなくなるまで繰り返し、プリフェッチ個数の処理実施後(S40でNo)終了する。
以上説明したように、本実施形態のキャッシュメモリ1は、プログラムの実行時のプリフェッチの成功度合いを利用してプログラムの空間的局所性を動的に収集し、プリフェッチの要求量を動的に適切な量に変化させることで効率的なハードウェアプリフェッチ方式を実現する。具体的には、プリフェッチ成功失敗カウンタ121、プリフェッチビット134を用いて、プリフェッチ個数を動的に決定する。そして決定したプリフェッチ個数を用いて、主記憶装置3からデータを読み出すときに、読み出すデータに続けて格納されているデータを、プリフェッチ動作によってプリフェッチ個数分読み出す。その結果、データアレイ14は、読み出したコピーデータのラインに加え、プリフェッチ動作によって書き込まれたプリフェッチ個数のラインが書き込まれる。このようにして、ハードウェアによるシーケンシャルプリフェッチ方式を実現する。
(実施形態2)
実施形態1では、Nウェイのセットアソシアティブ方式のキャッシュメモリを一例として説明したが、他の方式のキャッシュメモリに本発明を適用することも可能である。実施形態1では、成功失敗度数を計算する場合に、数値Nを用いて算出したが、ダイレクトマップ方式では、N=1、フルアソシアティブ方式では、Nをエントリー数(総ライン数)として算出する。また、N=1のセットアソシアティブ方式では、N=1として算出する。
また、実施形態1で示した成功失敗度数の計算式は一例であり、この計算式に限られることはない、システムの動作状況等に基づいて、プリフェッチ成功失敗カウンタに適切な値が保持されることが好ましい。すなわち、最大値または最小値が継続して保持されることを避けるように計算式を決定することが好ましい。
(その他の実施形態)
本発明に係るキャッシュメモリ1を、1次キャッシュ、2次キャッシュという階層型のキャッシュメモリの構成をとるものに対しても構成することが可能である。この場合、各階層から見てプロセッサ側の階層を全てプロセッサ2として扱い、主記憶装置3を含む側の階層をすべて主記憶装置3として扱う。これにより、本発明を利用することができる。
以上説明したように、本発明のキャッシュメモリの一態様、及びキャッシュメモリが実現するプリフェッチ方法(プリフェッチ方式)の一態様によれば、次のような効果を奏する。第1の効果は、実行時の履歴を動的に収集し、プリフェッチ幅を決定できることである。メモリの空間的局所性はプログラム毎に大きく挙動の異なるふるまいをするため、実行時の情報を収集することで効率的なプリフェッチが実現できる。また、LRU情報などの既存の情報を有効利用することで収集した情報の信頼度を高めている。
第2の効果は、小さいコストで実現可能なことである。本発明の追加コストはプリフェッチビットとプリフェッチ成功失敗カウンタのみである。このコストは制御情報メモリやデータアレイと比して非常に小さい。たとえば、ラインサイズ32B(バイト)で論理アドレスが8Bのキャッシュメモリ上の各ラインに対するハードウェア増加分は0.3%程度である。
また、本発明は、高速な処理を要求されるプロセッサ、階層間の速度差を埋めるためにキャッシュ型のバッファ構造を持つ装置に対して、その性能を向上させるために適用することができる。
なお、本発明は上記に示す実施形態に限定されるものではない。本発明の範囲において、上記実施形態の各要素を、当業者であれば容易に考えうる内容に変更、追加、変換することが可能である。
本発明の実施形態1に係るキャッシュメモリの構成例を示すブロック図である。 プリフェッチを要求するラインを説明する図である。 実施形態1のキャッシュメモリの動作例を示すフローチャートである。 キャッシュヒット時の処理の動作例を示すフローチャートである。 キャッシュミス時の処理の動作例を示すフローチャートである。
符号の説明
1 キャッシュメモリ
2 プロセッサ
3 主記憶装置
10 メモリコントローラ
11 キャッシュコントローラ
12 プリフェッチ制御部
13 制御情報メモリ
14 データアレイ
121 プリフェッチ成功失敗カウンタ
131 有効ビット
132 タグアドレス
133 LRU情報
134 プリフェッチビット

Claims (8)

  1. プロセッサ及び主記憶装置に接続されるキャッシュメモリであって、
    前記主記憶装置が保存するデータのコピーをライン単位に保持するデータアレイと、
    前記主記憶装置からデータを読み出し、前記データのコピーを前記データアレイの各ラインに書き込むメモリ制御手段と、
    各ラインに保持されるデータのコピーを管理する管理情報と、各ラインに保持されたデータのコピーの使用状況を示す使用情報とを保持する制御情報メモリと、
    前記プロセッサからの要求に応じて、データのコピーが前記データアレイに保持されているかを前記管理情報に基づいて判断し、保持されている場合、前記データアレイからデータを読み出し、保持されていない場合、前記主記憶装置からデータを読み出すことを前記メモリ制御手段に指示するキャッシュ制御手段と、
    前記使用情報に基づいて、前記メモリ制御手段がプリフェッチするプリフェッチライン数を決定するプリフェッチ制御手段と、を備え、
    前記メモリ制御手段は、前記キャッシュ制御手段からの指示に応じて前記主記憶装置からデータを読み出すときに、前記プリフェッチライン数に従って、プリフェッチを行い、
    前記制御情報メモリは、前記使用情報として、LRU(Least Recently Used)情報と、プリフェッチしたラインであることを示すプリフェッチ情報とを、各ラインに対応させて保持し、
    前記プリフェッチ制御手段は、前記LRU情報を用いて、前記プリフェッチしたラインが利用される度合いを推定し、推定結果に基づいて前記プリフェッチライン数を決定する
    キャッシュメモリ。
  2. 前記プリフェッチ制御手段は、前記度合いを推定し、数値化した推定結果を保持するカウンタを備え、前記プリフェッチしたラインが使用された場合、及び前記プリフェッチしたラインが使用されることなく置き換えられた場合に、前記推定結果を算出し、前記推定結果を前記カウンタが保持する値へ足すことを特徴とする請求項記載のキャッシュメモリ。
  3. 前記プリフェッチ制御手段は、前記プリフェッチしたラインが使用された場合、前記LRU情報に基づいて、前記推定結果を増加させる値を算出し、前記プリフェッチしたラインが使用されることなく置き換えられた場合、前記推定結果を減少させる値を算出することを特徴とする請求項記載のキャッシュメモリ。
  4. 前記プリフェッチ制御手段は、前記プリフェッチしたラインが使用された場合、前記LRU情報が最近アクセスしたことを示すほど、前記度合いを推定した算出結果を大きくすることを特徴とする請求項記載のキャッシュメモリ。
  5. 前記メモリ制御手段は、前記プリフェッチしたラインに対応するプリフェッチ情報を、プリフェッチしたことを示すONに設定し、
    前記キャッシュ制御手段は、前記プリフェッチしたラインへアクセスしたときに前記プフェッチ情報をONからOFFに更新し、前記プリフェッチ制御手段へ、前記推定結果の更新を指示することを特徴とする請求項乃至のいずれか一項に記載のキャッシュメモリ。
  6. 前記メモリ制御手段は、前記プリフェッチしたラインに対応するプリフェッチ情報がONであり、かつ、前記プリフェッチしたラインを置き換える場合に、前記プリフェッチ制御手段へ、前記推定結果の更新を指示することを特徴とする請求項記載のキャッシュメモリ。
  7. プロセッサ及び主記憶装置に接続されるキャッシュメモリのプリフェッチ方法であって、
    前記プロセッサからの要求に応じて、前記主記憶装置からデータを読み出すとともにプリフェッチを行い、
    読み出したデータのコピーとプリフェッチしたデータのコピーとデータアレイの各ラインに書き込み、
    前記プリフェッチを用いて書き込まれたラインが保持するデータの使用状況を監視し、
    前記使用状況として、前記プリフェッチを用いて書き込まれたラインであることを示すプリフェッチ情報と、ラインへのアクセス状況を示すLRU情報とを用いて、プリフェッチしたラインが利用される度合いを数値化してカウンタに保持し、
    前記カウンタに保持した値に従って、プリフェッチするライン数を決定する
    プリフェッチ方法。
  8. 前記カウンタの値を、前記プリフェッチしたラインにアクセスがあったとき、及び、前記プリフェッチしたラインが利用されることなく置き換えられたときに更新することを特徴とする請求項記載のプリフェッチ方法。
JP2008320615A 2008-12-17 2008-12-17 キャッシュメモリ及びプリフェッチ方法 Expired - Fee Related JP5298826B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008320615A JP5298826B2 (ja) 2008-12-17 2008-12-17 キャッシュメモリ及びプリフェッチ方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008320615A JP5298826B2 (ja) 2008-12-17 2008-12-17 キャッシュメモリ及びプリフェッチ方法

Publications (2)

Publication Number Publication Date
JP2010146145A JP2010146145A (ja) 2010-07-01
JP5298826B2 true JP5298826B2 (ja) 2013-09-25

Family

ID=42566552

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008320615A Expired - Fee Related JP5298826B2 (ja) 2008-12-17 2008-12-17 キャッシュメモリ及びプリフェッチ方法

Country Status (1)

Country Link
JP (1) JP5298826B2 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8938589B2 (en) 2010-01-28 2015-01-20 Hewlett-Packard Development Company, L. P. Interface methods and apparatus for memory devices using arbitration
US9361955B2 (en) 2010-01-28 2016-06-07 Hewlett Packard Enterprise Development Lp Memory access methods and apparatus
US9146867B2 (en) 2011-10-31 2015-09-29 Hewlett-Packard Development Company, L.P. Methods and apparatus to access memory using runtime characteristics
JP6191240B2 (ja) * 2013-05-28 2017-09-06 富士通株式会社 変数更新装置、変数更新システム、変数更新方法、変数更新プログラム、変換プログラム、及びプログラム変更検証システム

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3407428B2 (ja) * 1994-10-18 2003-05-19 富士ゼロックス株式会社 ディスクキャッシュ装置
JPH08137754A (ja) * 1994-11-10 1996-05-31 Fuji Xerox Co Ltd ディスクキャッシュ装置
JP4072665B2 (ja) * 2000-05-22 2008-04-09 富士ゼロックス株式会社 画像処理装置及びキャッシュメモリ
JP2008225915A (ja) * 2007-03-13 2008-09-25 Fujitsu Ltd プリフェッチ制御装置、記憶装置システムおよびプリフェッチ制御方法

Also Published As

Publication number Publication date
JP2010146145A (ja) 2010-07-01

Similar Documents

Publication Publication Date Title
JP6267314B2 (ja) キャッシュメモリの利用トレンドに基づく複数セットグループ内のウェイごとの動的パワー供給
US8041897B2 (en) Cache management within a data processing apparatus
US9176878B2 (en) Filtering pre-fetch requests to reduce pre-fetching overhead
KR102470184B1 (ko) 캐시 테스트 영역을 기반으로 하는 프리페치를 위한 캐시 에이징 정책 선택
JP4045296B2 (ja) キャッシュメモリ及びその制御方法
JP5661932B2 (ja) ファジー・ストライド・プリフェッチのための方法および装置
US8225070B2 (en) Information processing apparatus and cache memory control method
US8140759B2 (en) Specifying an access hint for prefetching partial cache block data in a cache hierarchy
US9619390B2 (en) Proactive prefetch throttling
CN109478165B (zh) 一种基于缓存测试区针对预取数据选择缓存转移策略的方法和一种处理器
US20080133844A1 (en) Method and apparatus for extending local caches in a multiprocessor system
US8595443B2 (en) Varying a data prefetch size based upon data usage
US20100217937A1 (en) Data processing apparatus and method
JP2023507078A (ja) プリフェッチレベルの降格
JP2009059077A (ja) キャッシュシステム
US8856453B2 (en) Persistent prefetch data stream settings
JP5298826B2 (ja) キャッシュメモリ及びプリフェッチ方法
JP2006516168A (ja) ストライド予測テーブルにアドレスするためにキャッシュミスパターンを使用する方法
JP7453360B2 (ja) キャッシュアクセス測定デスキュー
US20220066940A1 (en) Limited propagation of unnecessary memory updates
JP2013542511A (ja) 積極的プリフェッチングによるプロセッサキャッシュ汚染を低減するための方法及び装置
US8856444B2 (en) Data caching method
JP2024011696A (ja) 演算処理装置及び演算処理方法
JP2024511768A (ja) Dramキャッシュタグプリフェッチャ用の方法及び装置
JP2010191754A (ja) キャッシュ記憶装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20111115

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130327

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130402

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130426

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130521

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130603

R150 Certificate of patent or registration of utility model

Ref document number: 5298826

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees