(57)【要約】【課題】  プリフェッチされて複数回使用されるデータがその後にプリフェッチされるデータによってリプレースされてしまうことを防止する。【解決手段】  キャッシュ記憶装置１１５は、インデックスによって識別される複数のエントリを持ち、各エントリごとに、フェッチ動作又はプリフェッチ動作により取得したデータと該データに関連付けられた参照カウントとを含むデータ配列構造を有する。参照カウントは、プリフェッチ動作によって当該エントリが参照された回数からフェッチ動作によって当該エントリが参照された回数を減じて得た値を保持する。キャッシュプリフェッチ装置１１２は、プリフェッチ動作によって生成されたエントリについては該エントリの参照カウントの値が０となるまで該エントリのリプレースを禁止する。【選択図】  図１
2014115851.tif 000002
【特許請求の範囲】
【請求項１】
メインメモリのデータの一部を記憶するキャッシュ記憶手段と、
前記メインメモリから前記キャッシュ記憶手段へのデータのフェッチ動作を行うフェッチ手段と、
前記フェッチ動作とは独立に、前記メインメモリからデータを読み出し、前記フェッチ動作によって前記キャッシュ記憶手段に記憶されたデータの少なくとも一部を該読み出したデータでリプレースする処理を含むプリフェッチ動作を行うプリフェッチ手段と、
を有し、
前記キャッシュ記憶手段は、インデックスによって識別される複数のエントリを持ち、各エントリごとに、前記フェッチ動作又は前記プリフェッチ動作により取得したデータと該データに関連付けられた参照カウントとを含むデータ配列構造を有し、
前記参照カウントは、前記プリフェッチ動作によって当該エントリが参照された回数から前記フェッチ動作によって当該エントリが参照された回数を減じて得た値を保持し、
前記プリフェッチ手段は、前記プリフェッチ動作によって生成されたエントリについては該エントリの参照カウントの値が０となるまで該エントリのリプレースを禁止する
ことを特徴とするデータ処理装置。
【請求項２】
前記データ配列構造は、各エントリごとにタグビットを更に含むことを特徴とする請求項１に記載のデータ処理装置。
【請求項３】
前記プリフェッチ手段は、受信した参照アドレスから前記キャッシュ記憶手段のインデックスを算出し、該算出したインデックスに対応するエントリのタグビットが前記参照アドレスと一致する場合に、当該エントリの参照カウントを１インクリメントし、
前記フェッチ手段は、受信した参照アドレスから前記キャッシュ記憶手段のインデックスを算出し、該算出したインデックスに対応するエントリのタグビットが前記参照アドレスと一致する場合に、当該エントリの参照カウントを１デクリメントし、
前記プリフェッチ手段は、更に、前記算出したインデックスに対応するエントリのタグビットが前記参照アドレスと一致しない場合は、当該エントリの参照カウントの値が０となるまでリプレース処理の実行を禁止する
ことを特徴とする請求項２に記載のデータ処理装置。
【請求項４】
前記キャッシュ記憶手段は、前記データ配列構造を、２以上のウェイ数分有することを特徴とする請求項２又は３に記載のデータ処理装置。
【請求項５】
メインメモリのデータの一部をキャッシュするために、インデックスによって識別される複数のエントリを持ち、各エントリごとに、キャッシュするデータと該データに関連付けられた参照カウントとを含むデータ配列構造を有するキャッシュ記憶手段を備えるデータ処理装置の制御方法であって、
フェッチ手段が、前記メインメモリから前記キャッシュ記憶手段へのデータのフェッチ動作を行うフェッチ工程と、
プリフェッチ手段が、前記フェッチ動作とは独立に、前記メインメモリからデータを読み出し、前記フェッチ動作によって前記キャッシュ記憶手段に記憶されたデータの少なくとも一部を該読み出したデータでリプレースする処理を含むプリフェッチ動作を行うプリフェッチ工程と、
を有し、
前記参照カウントは、前記プリフェッチ動作によって当該エントリが参照された回数から前記フェッチ動作によって当該エントリが参照された回数を減じて得た値を保持し、
前記プリフェッチ工程において、前記プリフェッチ手段は、前記プリフェッチ動作によって生成されたエントリについては該エントリの参照カウントの値が０となるまで該エントリのリプレースを禁止する
ことを特徴とするデータ処理装置の制御方法。
【請求項６】
コンピュータに請求項５に記載のデータ処理装置の制御方法における各工程を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理装置及びその制御方法に関する。
【背景技術】
【０００２】
近年の半導体集積度向上によって、処理装置とメインメモリとして多く使用されるＤＲＡＭの速度が向上したが、ＤＲＡＭの速度向上は処理装置の速度向上よりも小さいものであった。そこで、これらの間の速度のギャップを解消するために、小容量であるが高速なキャッシュメモリを高速な処理装置と低速なメインメモリの間に設けることが行われている。
【０００３】
キャッシュメモリは、メモリアクセスを行う際になって初めてキャッシュメモリにメインメモリの内容をコピーすることが多い。しかしながら、この方法ではメモリレイテンシ（メモリへのアクセスに掛かる時間）分だけ処理が遅れるため速度性能が低下してしまう。そこで、メモリレイテンシを隠蔽するために使用予定のアドレス範囲に対してメインメモリの内容を前もってキャッシュメモリにコピーしておくキャッシュのプリフェッチが行われている。
【０００４】
実際に処理を行うフェッチに対してプリフェッチはできるだけ大きく先行して行う方がメモリレイテンシを隠すことができる。しかしながら、プリフェッチが先行しすぎるとプリフェッチされて将来使用されるデータがプリフェッチするデータでリプレースされてしまうという問題がある。
【０００５】
この問題に対して、特許文献１では、プリフェッチされたデータが読み出される前にリプレースされることがないように、プリフェッチデータを格納する際にロックビットを立てる。ロックされたデータを読み出すときにロックを解除する。これによりフェッチ済みで１回も使用されていないデータがリプレースされないようになっている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平１０−３２０２８５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、特許文献１に記載の技術では、１回使用した時点でロックが解除されてリプレース対象となってしまうので、プリフェッチ後に２回以上使用されるデータでもその後にプリフェッチするデータでリプレースされてしまうという問題がある。
【０００８】
そこで、本発明は、プリフェッチによる過剰なデータのリプレースを抑制する構成を提供する。
【課題を解決するための手段】
【０００９】
本発明の一側面によれば、メインメモリのデータの一部を記憶するキャッシュ記憶手段と、前記メインメモリから前記キャッシュ記憶手段へのデータのフェッチ動作を行うフェッチ手段と、前記フェッチ動作とは独立に、前記メインメモリからデータを読み出し、前記フェッチ動作によって前記キャッシュ記憶手段に記憶されたデータの少なくとも一部を該読み出したデータでリプレースする処理を含むプリフェッチ動作を行うプリフェッチ手段とを有し、前記キャッシュ記憶手段は、インデックスによって識別される複数のエントリを持ち、各エントリごとに、前記フェッチ動作又は前記プリフェッチ動作により取得したデータと該データに関連付けられた参照カウントとを含むデータ配列構造を有し、前記参照カウントは、前記プリフェッチ動作によって当該エントリが参照された回数から前記フェッチ動作によって当該エントリが参照された回数を減じて得た値を保持し、前記プリフェッチ手段は、前記プリフェッチ動作によって生成されたエントリについては該エントリの参照カウントの値が０となるまで該エントリのリプレースを禁止することを特徴とするデータ処理装置が提供される。
【発明の効果】
【００１０】
本発明によれば、プリフェッチによる過剰なデータのリプレースを抑制する構成が提供される。具体的には、本発明によれば、プリフェッチされたデータはそのデータを参照するフェッチがすべて行われるまでリプレースされないため、将来フェッチで使用されるデータがプリフェッチ済みデータによってリプレースされることがなくなる。これによりキャッシュミスが減る。この作用により、最大限プリフェッチを先行して行うことができるため、プリフェッチによりメモリレイテンシを隠すためのキャッシュ容量を小さくできるという効果がある。また、最大限プリフェッチを先行して行うことができるため、性能変動を小さくできるという効果もある。
【図面の簡単な説明】
【００１１】
【図１】実施形態におけるデータ処理装置の構成を示す図。
【図２】実施形態におけるコンピュータシステムの全体構成図。
【図３】実施形態におけるキャッシュ記憶装置に記憶されるキャッシュブロックの構造例を示す図。
【図４】実施形態におけるプリフェッチの処理を示すフローチャート。
【図５】実施形態におけるキャッシュフィルの処理を示すフローチャート。
【図６】実施形態におけるフェッチの処理を示すフローチャート。
【発明を実施するための形態】
【００１２】
以下、図面を参照して本発明の好適な実施形態について詳細に説明する。なお、本発明は以下の実施形態に限定されるものではなく、本発明の実施に有利な具体例を示すにすぎない。また、以下の実施形態の中で説明されている特徴の組み合わせの全てが本発明の課題解決のために必須のものであるとは限らない。
【００１３】
まず、図２に本実施形態におけるコンピュータシステムの全体構成図を示す。本実施形態のコンピュータシステムはデータ処理装置１０１、メインメモリであるメモリ１０４、その間を接続するシステムバス１０３で構成されている。
【００１４】
図１にデータ処理装置１０１の構成を示す。データ処理装置１０１は、演算に必要なデータのアドレス生成を行い、メモリ１０４から読み出したデータを用いて演算処理を行う。データ処理装置１０１は、プリフェッチアドレス生成装置１１０、演算処理装置１１１、キャッシュプリフェッチ装置１１２、キャッシュフィル装置１１３を含む。データ処理装置１０１は更に、キャッシュフェッチ装置１１４、キャッシュ記憶装置１１５、制御装置１１６、フェッチアドレス生成装置１１７を含む。キャッシュ記憶装置１１５は、メモリ１０４のデータの一部をキャッシュするもので、メモリ１０４よりも高速にデータの読み書きが可能である。キャッシュフェッチ装置１１４は、メモリ１０４からキャッシュ記憶装置１１５へのデータ（命令コードを含む。）のフェッチ動作を行う。キャッシュプリフェッチ装置１１２は、メモリ１０４のレイテンシを隠蔽するべく、上記フェッチ動作とは独立に、使用予定のアドレス範囲に対してメモリ１０４のデータの一部を先行してキャッシュ記憶装置１１５にコピーするプリフェッチ動作を行う。プリフェッチ動作は、フェッチ動作によってキャッシュ記憶装置１１５に記憶されたデータの少なくとも一部を、メモリ１０４から読み出したデータでリプレースする処理を伴う。
【００１５】
キャッシュ記憶装置１１５におけるキャッシュブロックのデータ配列構造を図３に示す。キャッシュ記憶装置１１５には、例えば、１２０ａで示されるＷａｙ０、１２０ｂで示されるＷａｙ１の２つのウェイが構成されている。各ウェイは、インデックスによって識別される複数のエントリを持つデータ配列構造を有する。各エントリは、少なくとも、フェッチ動作又はプリフェッチ動作により取得したデータとそのデータに関連付けられた参照カウントとを含む。本実施形態において、Ｗａｙ０の各エントリは、エントリ有効ビット１２１ａ（Ｖａｌｉｄビット）、データ有効ビット１２５ａ、タグビット１２２ａ（Ｔａｇビット）、データ１２３ａ（Ｄａｔａ）、参照カウント１２４ａ（ＲｅｆＣｏｕｎｔ）で構成される。同様に、Ｗａｙ１の各エントリは、エントリ有効ビット１２１ｂ（Ｖａｌｉｄビット）、データ有効ビット１２５ｂ、タグビット１２２ｂ（Ｔａｇ）、データ１２３ｂ（Ｄａｔａ）、参照カウント１２４ｂ（ＲｅｆＣｏｕｎｔ）で構成される。各エントリはウェイとインデックス（Ｉｎｄｅｘ）を指定して読み出し／書き込みが可能である。
【００１６】
エントリ有効ビット１２１ａは、そのエントリのデータ有効ビット１２５ａ、タグビット１２２ａ、参照カウント１２４ａが有効であることを示す。データ有効ビット１２５ａは、エントリに格納されているデータ１２３ａが有効であることを示す。本実施形態では、エントリ有効ビット、データ有効ビットとも１である時に有効なデータが存在することを示し、データ有効ビットが０である場合には有効なデータが存在しないことを示すこととする。データ有効ビットは初期状態では０である。また、一連の処理が終了して、次の処理を行う前にはデータ有効ビットを０に初期化する。タグビット１２２ａはデータ１２３ａのメモリ１０４上でのアドレスを示している。データ１２３ａはメモリ１０４上のタグビット１２２ａで示されるアドレスのデータをコピーしたものである。参照カウント１２４ａは、プリフェッチ動作によってエントリが参照された回数からフェッチ動作によって当該エントリが参照された回数を減じて得た値を保持している。この参照カウント１２４ａが０より大きい場合、そのエントリにはフェッチ動作によってこれから参照されるデータが入っていることを示している。
【００１７】
なお、本発明は、特定のウェイ数やキャッシュブロックと参照カウンタとの特定の対応関係に限定されるものではない。例えばウェイ数に関しては、本発明は、上記データ配列構造を、２以上のウェイ数分有するものであってもよい。
【００１８】
次に、本実施形態におけるデータ処理装置１０１の動作を説明する。データ処理装置１０１において、制御装置１１６がＳｔａｒｔ信号をアサートする（図１）。Ｓｔａｒｔ信号がアサートされると、プリフェッチアドレス生成装置１１０とフェッチアドレス生成装置１１７が動作を開始する。プリフェッチアドレス生成装置１１０とフェッチアドレス生成装置１１７は動作を開始すると、参照するアドレスを同一シーケンスで生成する。
【００１９】
プリフェッチアドレス生成装置１１０がプリフェッチアドレスを生成した時の処理フローを図４に示す。プリフェッチアドレス生成装置１１０は、参照アドレスを生成する（Ｓ２０２）。キャッシュプリフェッチ装置１１２はこの参照アドレスを受信するとＳ２０３〜Ｓ２０９の一連の処理を実行する。Ｓ２０３で、参照アドレスに対するキャッシュ記憶装置１１５のインデックスを算出する。例えば、参照アドレスを（エントリ数／ウェイ数）で割った余りをインデックスとする。Ｓ２０４で、キャッシュ記憶装置１１５におけるウェイ毎にインデックスに対応するエントリのエントリ有効ビットとタグビットの読み出しを行う。さらに、ウェイ毎にエントリ有効ビットが１でかつタグビットが参照アドレスと一致する時にはウェイヒット（Ｗａｙ  Ｈｉｔ）、そうでない時にはウェイミス（Ｗａｙ  Ｍｉｓｓ）とする。どちらかのウェイでウェイヒットである場合はヒット（Ｈｉｔ）で、そうでない場合はミス（Ｍｉｓｓ）となる。Ｓ２０５でヒットの場合は後述するＳ２０９の処理を行い、ミスの場合は後述するＳ２０６〜Ｓ２０８のキャッシュのリプレース処理を行う。Ｓ２０６では、いずれかのウェイで算出したインデックスに対する参照カウントの値が０になるまで待機する。
【００２０】
これにより、プリフェッチ動作によって生成されたエントリについては、当該エントリがフェッチ動作で使用される前にリプレースすることを禁止している。Ｓ２０７で、参照カウントが０となったウェイ、インデックスのうち、いずれか一つの内容を更新して、タグを参照アドレスに、データ有効ビットを０に、参照カウントを１にする。Ｓ２０８で、参照アドレス、ウェイ、インデックスを指定してキャッシュフィルを起動する。Ｓ２０５でヒットとなった場合は、Ｓ２０９で、ヒットしたウェイ、インデックスに対応する参照カウントを１インクリメントしてプリフェッチで参照された回数を１増やす。
【００２１】
キャッシュフィルの処理フローを図５に示す。キャッシュフィル装置１１３は、システムバス１０３に対し、指定したアドレスで読み出し要求を発行する（Ｓ２４２）。読み出し要求にはＲｅａｄ  Ｒｅｑｕｅｓｔ信号を用いる（図１）。Ｒｅａｄ  Ｄａｔａ信号を介して、読み出しに係るデータが到着すると、そのデータをキャッシュ記憶装置１１５の指定されたウェイ、インデックスで示されるデータ（Ｄａｔａ）に格納する（Ｓ２４３）。格納が終了すると、キャッシュ記憶装置１１５の指定されたウェイ、インデックスで示されるデータ有効ビットを１にする（Ｓ２４４）。
【００２２】
フェッチアドレス生成装置１１７がフェッチアドレスを生成した時の処理フローを図６に示す。フェッチアドレス生成装置１１７は、参照アドレスを生成する（Ｓ２２２）。キャッシュフェッチ装置１１４は、この参照アドレスを受けるとＳ２２３〜Ｓ２２８の一連の処理を実行する。Ｓ２２３で、参照アドレスに対するキャッシュ記憶装置１１５のインデックスを算出する。Ｓ２２４で、Ｓ２０４と同様に、ヒット／ミス判定を行う。Ｓ２２５でミスの場合はＳ２２４での判定がヒットとなるまで待つ。Ｓ２２５でヒットの場合、Ｓ２２６で、ヒットしたウェイ、インデックスに対応するデータ有効ビットが１になるまで待つ。Ｓ２２７で、ヒットしたウェイ、インデックスに対応するデータを読み出して演算処理装置１１１に出力する。Ｓ２２８で、ヒットしたウェイ、インデックスに対応する参照カウントを１デクリメントして、フェッチで参照した回数分だけ参照カウントを減ずる。
【００２３】
以上のようにして、本実施形態では、参照カウントにプリフェッチにより参照された回数とフェッチにより参照された回数との差を生成し、参照カウントが０となるまで待ってからリプレースを行う。これにより、プリフェッチ済みのデータがフェッチで使用される前にリプレースされてしまうことを防ぐことができる。結果として最大限プリフェッチを先行して行うことができるため、プリフェッチによりメモリレイテンシを隠すためのキャッシュ容量を小さくできる。また、性能変動も小さくできる。
【００２４】
（他の実施形態）
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。この場合、そのプログラム、及び該プログラムを記憶した記憶媒体は本発明を構成することになる。
【図１】
2014115851.tif 000003
【図２】
2014115851.tif 000004
【図３】
2014115851.tif 000005
【図４】
2014115851.tif 000006
【図５】
2014115851.tif 000007
【図６】
2014115851.tif 000008