(57)【要約】  複数のエントリ（４０）を備え、前記エントリ（４０）毎に、データ（４２）と前記データ（４２）の状態を表すステータス（４３）とを含む少なくとも１のブロックを備えるキャッシュメモリ（４）と、前記キャッシュメモリ（４）の各ブロックに対して前記データ（４２）のリプレースを行なう制御部（５）とを備え、前記制御部（５）は、前記各エントリ（４０）において前記データ（４２）がリプレースされたリプレース回数を、前記エントリ（４０）毎に計数するカウンタ（５３）と、前記リプレース回数に応じて、前記データ（４２）のリプレース方式を切り替える切替部（５４１）とを備える。
2012095957.tif 000002
【特許請求の範囲】
【請求項１】
複数のエントリを備え、前記エントリ毎に、データと前記データの状態を表すステータスとを含む少なくとも１のブロックを備えるキャッシュメモリと、
前記キャッシュメモリの各ブロックに対して前記データのリプレースを行なう制御部とを備え、
前記制御部は、
前記各エントリにおいて前記データがリプレースされたリプレース回数を、前記エントリ毎に計数するカウンタと、
前記リプレース回数に応じて、前記データのリプレース方式を切り替える切替部とを備えることを特徴とする、キャッシュメモリ装置。
【請求項２】
前記切替部は、前記リプレース回数が所定の閾値に達した場合に、前記リプレース方式を切り替えることを特徴とする、請求項１記載のキャッシュメモリ装置。
【請求項３】
前記制御部は、
前記所定の閾値を決定する閾値決定部をさらに備え、
前記切替部は、前記閾値決定部によって決定された所定の閾値を用いて、前記リプレース方式を切り替えることを特徴とする、請求項２記載のキャッシュメモリ装置。
【請求項４】
前記閾値決定部は、前記所定の閾値を変化させてキャッシュヒット率を算出し、算出されたキャッシュヒット率に基づいて、前記所定の閾値を決定することを特徴とする、請求項３記載のキャッシュメモリ装置。
【請求項５】
前記閾値決定部は、前記所定の閾値を変化させて前記エントリ毎のキャッシュヒット率を算出し、算出された各キャッシュヒット率に基づいて、前記エントリ毎に前記所定の閾値を決定することを特徴とする、請求項４記載のキャッシュメモリ装置。
【請求項６】
前記カウンタは、前記リプレース回数が所定の数と等しくなった場合に、前記リプレース回数をリセットすることを特徴とする、請求項１〜５のいずれか１項記載のキャッシュメモリ装置。
【請求項７】
前記カウンタは、前記リプレース回数が前記エントリにおけるブロックの数と等しくなった場合に、前記リプレース回数をリセットすることを特徴とする、請求項６記載のキャッシュメモリ装置。
【請求項８】
前記リプレース方式は、前記ステータスに応じた優先度に基づいて、前記リプレースを行なうリプレース対象のブロックを選択する優先順位方式と、前記リプレース対象のブロックとして、前記エントリにおいて最も古くアクセスされたブロックを選択するＬＲＵ（Least Recently Used）方式とを含むことを特徴とする、請求項１〜７のいずれか１項記載のキャッシュメモリ装置。
【請求項９】
前記制御部は、
前記エントリ毎に、前記ブロックがアクセスされたアクセス順序を管理するアクセス順序管理部をさらに備え、
前記アクセス順序管理部が管理するアクセス順序に基づいて、前記ＬＲＵ方式によるリプレースを実行することを特徴とする、請求項８記載のキャッシュメモリ装置。
【請求項１０】
前記制御部は、
リプレースを行なうリプレース対象のエントリに対応するリプレース方式を前記切替部から取得し、取得したリプレース方式に基づいて、前記リプレース対象のエントリにおけるリプレース対象のブロックを選択するブロック選択部と、
前記リプレース対象のエントリを決定し、当該エントリを示す情報を前記ブロック選択部に出力するとともに、前記ブロック選択部によって選択された前記リプレース対象のブロックに対して、前記データのリプレースを行なう処理部とをさらに備えることを特徴とする、請求項１〜９のいずれか１項記載のキャッシュメモリ装置。
【請求項１１】
セットアソシアティブ方式を採用することを特徴とする、請求項１〜１０のいずれか１項記載のキャッシュメモリ装置。
【請求項１２】
複数のエントリを備え、前記エントリ毎に、データと前記データの状態を表すステータスとを含む少なくとも１のブロックを備えるキャッシュメモリの各ブロックに対して前記データのリプレースを行なう制御装置であって、
前記各エントリにおいて前記データがリプレースされたリプレース回数を、前記エントリ毎に計数するカウンタと、
前記リプレース回数に応じて、前記データのリプレース方式を切り替える切替部とを備えることを特徴とする、キャッシュメモリの制御装置。
【請求項１３】
前記切替部は、前記リプレース回数が所定の閾値に達した場合に、前記リプレース方式を切り替えることを特徴とする、請求項１２記載のキャッシュメモリの制御装置。
【請求項１４】
前記所定の閾値を決定する閾値決定部をさらに備え、
前記切替部は、前記閾値決定部によって決定された所定の閾値を用いて、前記リプレース方式を切り替えることを特徴とする、請求項１３記載のキャッシュメモリの制御装置。
【請求項１５】
請求項１〜１１のいずれか１項に記載のキャッシュメモリ装置を備えることを特徴とする、情報処理装置。
【請求項１６】
複数のエントリを備え、前記エントリ毎に、データと前記データの状態を表すステータスとを含む少なくとも１のブロックを備えるキャッシュメモリの各ブロックに対して前記データのリプレースを行なう制御方法であって、
前記各エントリにおいて前記データがリプレースされたリプレース回数を、前記エントリ毎に計数し、
前記計数したリプレース回数に応じて、前記データのリプレース方式を切り替えることを特徴とする、キャッシュメモリの制御方法。
【請求項１７】
複数のエントリを備え、前記エントリ毎に、データと前記データの状態を表すステータスとを含む少なくとも１のブロックを備えるキャッシュメモリと、前記キャッシュメモリの各ブロックに対して前記データのリプレースを行なう制御部とを備え、前記制御部は、前記各エントリにおいて前記データがリプレースされたリプレース回数を、前記エントリ毎に計数するカウンタと、前記リプレース回数に応じて、前記データのリプレース方式を切り替える切替部とを備えるとともに、前記切替部は、前記リプレース回数が所定の閾値に達した場合に、前記リプレース方式を切り替えるキャッシュメモリ装置において、
前記所定の閾値を変化させ、変化させた所定の閾値毎にキャッシュヒット率を算出し、
算出された複数のキャッシュヒット率に基づいて、前記所定の閾値を決定する、
処理をコンピュータに実行させる、キャッシュメモリ装置の閾値決定プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本件は、キャッシュメモリ装置，キャッシュメモリの制御装置，情報処理装置，キャッシュメモリの制御方法，及びキャッシュメモリ装置の閾値決定プログラムに関する。
【背景技術】
【０００２】
サーバやパーソナルコンピュータ等の情報処理装置において、プロセッサによる主記憶装置からのデータの取得は、キャッシュ（キャッシュメモリ装置）を介して行なわれることがある。
キャッシュとは、ＣＰＵ（Central Processing Unit）等のプロセッサがＲＡＭ（Random Access Memory）等の主記憶装置からデータを取得するのにかかる時間を低減するために、プロセッサと主記憶装置との間に備えられる。キャッシュは、キャッシュメモリと、キャッシュメモリに対する制御を行なう制御部とを備える。また、一般的に、キャッシュメモリは、主記憶装置よりも高速で小規模なメモリである。【０００３】
プロセッサから主記憶装置へ要求のあったデータがキャッシュにヒットした場合、プロセッサは、キャッシュからデータを取得することができ、主記憶装置からデータを取得せずに済むため、高速な処理が実現できる。
なお、キャッシュは、データをキャッシュライン単位で格納する。
キャッシュラインとは、キャッシュに格納するデータを管理する単位であり、例えば、主記憶装置のうちの所定の領域（サイズ）のデータが、１つのキャッシュラインに格納される。キャッシュラインに格納されるデータには、当該キャッシュラインに格納されているデータの主記憶装置上の位置に対応するタグが対応付けられる。【０００４】
キャッシュは、プロセッサからのアドレスに基づいて、複数のキャッシュラインのうちのタグが格納されるタグ部を検索する。そして、キャッシュは、プロセッサからの要求のうちのタグを示す情報に該当するタグを発見すると、当該タグに対応付けられたデータをプロセッサに渡す。
一方、キャッシュは、該当するタグを発見しない場合は、プロセッサからのアドレスに基づいて、主記憶装置からデータを取得し、取得したデータをプロセッサに渡すとともに、当該データを、複数のキャッシュラインのうちの任意のキャッシュラインに、タグと対応付けて格納（リプレース）する。【０００５】
キャッシュによるリプレースでは、例えば、以下のリプレース方式に従って、複数のキャッシュラインのうちから任意のキャッシュライン、つまりリプレース対象のキャッシュラインを選択することが知られている。
一例として、キャッシュには、アクセスされたアドレスは近い将来使用される可能性があるという時間的局所性があり、この性質を用いたアルゴリズムとして、ＬＲＵ方式（Least Recently Used）が知られている。ＬＲＵ方式は、最近最もアクセスされなかったキャッシュラインをリプレース対象とすることで、プロセッサが要求するデータがキャッシュにヒットする確率（キャッシュヒット率）を向上させる方式である。【０００６】
他にキャッシュヒット率を上げる方式として、キャッシュ性能向上に寄与する特定のキャッシュを優先してキャッシュする優先順位方式などがある。つまり、特定の優先順位の高いキャッシュがリプレース対象にならないように優先順位の高いキャッシュをキャッシュロックする方式である。
優先順位方式では、キャッシュメモリに格納されたデータ毎に、データの状態を表すステータスの情報が対応付けられており、このステータスに応じて、キャッシュ性能向上に寄与する特定のキャッシュ（タグ，データ，及びステータス）を優先してキャッシュする。【０００７】
また、キャッシュにおけるデータの格納構造として、フルアソシアティブ方式やセットアソシアティブ方式が挙げられる。
フルアソシアティブ方式では、データをどのキャッシュラインにも格納することができ、プロセッサから与えられた入力アドレスは、上述の如く全てのタグ部と比較される。フルアソシアティブ方式においては、プロセッサからの入力アドレスを全てのタグ部と比較するため、キャッシュのライン数が増えてくると比較回路の論理段数が大きくなり、リプレース対象のキャッシュラインを選択するＬＲＵなどの論理回路も複雑になる。【０００８】
近年、キャッシュライン数の増加に伴い、上記の理由によりフルアソシアティブ方式は採用され難く、セットアソシアティブ方式が多く採用されている。セットアソシアティブ方式は、キャッシュメモリの複数のブロックに対応する方式であり、同一のエントリ（キャッシュライン）に異なるアドレスのデータを複数格納することができる。すなわち、例えば、主記憶装置のうちの複数の所定の領域（サイズ）のデータが、それぞれブロック毎にキャッシュメモリに格納され、複数のブロックは、１つのキャッシュラインとして管理される。【０００９】
セットアソシアティブ方式においては、キャッシュは、プロセッサからの要求（入力アドレス）のうちのエントリを示す情報（インデックス）に基づいて、複数のキャッシュラインから１つのキャッシュラインを絞り込む。そして、キャッシュは、プロセッサからの要求（入力アドレス）のうちのタグを示す情報に基づいて、絞り込んだキャッシュライン内の複数のブロックにおけるタグ部を検索する。キャッシュは、プロセッサからの要求のうちのタグを示す情報に該当するタグを発見すると、当該タグに対応付けられたデータをプロセッサに渡す。【００１０】
一方、キャッシュは、該当するタグを発見しない場合は、プロセッサからのアドレスに基づいて、主記憶装置からデータを取得し、取得したデータをプロセッサに渡すとともに、当該データを、絞り込んだキャッシュラインのうちの任意のブロックに、タグと対応付けて格納（リプレース）する。なお、任意のブロックの選択は、キャッシュメモリ装置により、上述したリプレース方式に従って、絞り込んだキャッシュライン内の複数のブロックから、リプレース対象のブロックが選択されることにより行なわれる。【００１１】
上述のように、セットアソシアティブ方式において、プロセッサから与えられたアドレスは、キャッシュの１ラインにあるｎ個のブロック（ｎＷＡＹ）と比較される。キャッシュライン内の複数のブロックに格納されるデータには、当該ブロックに格納されているデータの主記憶装置上の位置に対応するタグが対応付けられる。
上述の如きセットアソシアティブ方式（ｎＷＡＹセットアソシアティブ方式）によれば、キャッシュライン数が増加しても、プロセッサからの入力アドレスに基づいて、１つに絞り込んだキャッシュライン内のブロックのタグ部と比較するため、比較回路の論理段数を抑えることができる。また、リプレース対象のブロック（ＷＡＹ）を選択するＬＲＵなどの論理回路もフルアソシアティブ方式と比較して簡単な構成とすることができる。【００１２】
なお、フルアソシアティブ方式のキャッシュメモリ装置において、排他不一致（dirty exclusive）など特定のステータスを持つキャッシュの数がある閾値を超えた場合に、前述されたＬＲＵ方式か優先順位方式かのリプレース方式を切り替える手法が知られている。
【先行技術文献】
【特許文献】
【００１３】
【特許文献１】特開平１０−２７１３３号公報
【発明の概要】
【発明が解決しようとする課題】
【００１４】
ところで、上述した優先順位方式では、性能向上に寄与する特定のキャッシュを優先してキャッシュに格納すると、優先度の高いキャッシュ種類がキャッシュラインを占めるようになり、かえって性能が悪化する虞がある。
図１０は、８つのＷＡＹを持つキャッシュラインに格納されるキャッシュを示す図であり、図１０（ａ）は、キャッシュラインに格納される３種類の優先度のキャッシュを示す図である。また、図１０（ｂ）は、図１０（ａ）に示すキャッシュラインに、優先度の高いキャッシュが格納された場合を示す図であり、図１０（ｃ）は、図１０（ｂ）に示すキャッシュラインに、優先度の高いキャッシュが格納された場合を示す図である。【００１５】
図１０（ａ）〜（ｃ）に示すように、キャッシュラインが備える８つのＷＡＹには、Ｈ（High），Ｍ（Middle），Ｌ（Low）の優先度を持つキャッシュがそれぞれ格納されている。これらの優先度を持つキャッシュについて、キャッシュメモリ装置は、Ｈ＞Ｍ＞Ｌの順番でキャッシュを優先するものとする。
なお、図１０（ａ）〜図１０（ｃ）に示すＨ，Ｍ，Ｌの優先度は、ＷＡＹ毎のデータに対応付けられたステータスに応じて決定されるものである。【００１６】
図１０（ａ）に示すキャッシュラインにおいて、ＷＡＹ１〜５には優先度Ｈのキャッシュが格納されており、ＷＡＹ６には優先度Ｍのキャッシュが格納されており、ＷＡＹ７〜８には優先度Ｌのキャッシュが格納されている。
次に、図１０（ａ）に示すキャッシュラインのいずれかのＷＡＹに、優先度Ｈのキャッシュを格納（リプレース）する場合、図１０（ｂ）に示すように、キャッシュする優先度の低い、優先度ＬのＷＡＹが優先的にリプレース対象となる。図１０（ｂ）に示す例においては、ＷＡＹ７に優先度Ｈのキャッシュがリプレースされる。【００１７】
また、図１０（ｂ）に示すキャッシュラインのいずれかのＷＡＹに、さらに優先度Ｈのキャッシュを格納（リプレース）する場合、図１０（ｃ）に示すように、キャッシュする優先度の低い、優先度ＬのＷＡＹが優先的にリプレース対象となる。図１０（ｃ）に示す例においては、ＷＡＹ８に優先度Ｈのキャッシュがリプレースされる。
従って、図１０（ａ）〜（ｃ）を用いて上述の如く、優先順位方式では、性能向上に寄与する特定のキャッシュを優先してキャッシュに格納すると、優先度の高いキャッシュ種類がキャッシュラインを占めるようになり、かえって性能が悪化する虞がある。【００１８】
また、上述した優先順位方式では、キャッシュラインを特定のキャッシュ種類を優先するように割り当てると、例えば、優先順位の高いキャッシュであるが時間的に古いものがいつまでもキャッシュラインに残ってしまい、キャッシュライン全体を有効に使用することができなくなるといった問題がある。
さらに、上述の如く、特定のステータスを持つキャッシュの数がある閾値を超えた場合に、ＬＲＵ方式か優先順位方式かのリプレース方式を切り替える手法が知られているが、この手法は、プロセッサからの入力アドレスを全キャッシュラインと比較するフルアソシアティブ方式において採用されているものである。【００１９】
一方、セットアソシアティブ方式では、複数のブロックを１つのキャッシュラインとして管理するため、キャッシュラインによって格納されるキャッシュの種類に偏りが生じ、特定の種類のキャッシュが、あるキャッシュライン内に偏って格納されることがある。
従って、上述の如き手法をセットアソシアティブ方式に適用しようとすると、全てのキャッシュラインに同一の閾値を用いているため、キャッシュラインによってキャッシュの種類に偏りが生じるセットアソシアティブ方式では、必ずしも性能の向上につながるわけではない。【００２０】
また、上述の如き手法では、キャッシュは、特定のステータスを持つキャッシュの数が閾値をいつまでも超えないと優先順位方式のリプレースのみを実行し、優先順位の高いキャッシュであるが時間的に古いものがいつまでもキャッシュラインに残ってしまう。すなわち、上述の如き手法では、特定のステータスを持つキャッシュの数が閾値をいつまでも超えないと、キャッシュの時間的局所性の観点から、キャッシュヒット率の低下を招くという問題がある。【００２１】
さらに、上述の如き手法における閾値によるリプレース方式の切り替えでは、特定のステータスを持つキャッシュの数が閾値を超えない場合に、優先順位の低いキャッシュ種が連続してキャッシュメモリに格納される対象になった場合、優先順位の高いキャッシュエントリ（ブロック）はリプレース対象とならない。従って、実質的にエントリ数が少なくなり、優先順位の低いキャッシュ種が連続してキャッシュメモリに格納される対象になった場合などに、性能の低下が予想される。【００２２】
上述の点に鑑み、本件の目的の１つは、キャッシュメモリ装置におけるキャッシュヒット率の向上を実現することである。
なお、前記目的に限らず、後述する発明を実施するための形態に示す各構成により導かれる作用効果であって、従来の技術によっては得られない作用効果を奏することも本発明の他の目的の１つとして位置付けることができる。
【課題を解決するための手段】
【００２３】
本件のキャッシュメモリ装置は、複数のエントリを備え、前記エントリ毎に、データと前記データの状態を表すステータスとを含む少なくとも１のブロックを備えるキャッシュメモリと、前記キャッシュメモリの各ブロックに対して前記キャッシュデータのリプレースを行なう制御部とを備え、前記制御部は、前記各エントリにおいて前記キャッシュデータがリプレースされたリプレース回数を、前記エントリ毎に計数するカウンタと、前記リプレース回数に応じて、前記キャッシュデータのリプレース方式を切り替える切替部とを備えるものである。【００２４】
また、本件のキャッシュメモリの制御装置は、複数のエントリを備え、前記エントリ毎に、データと前記データの状態を表すステータスとを含む少なくとも１のブロックを備えるキャッシュメモリの各ブロックに対して前記データのリプレースを行なう制御装置であって、前記各エントリにおいて前記データがリプレースされたリプレース回数を、前記エントリ毎に計数するカウンタと、前記リプレース回数に応じて、前記データのリプレース方式を切り替える切替部とを備えるものである。【００２５】
さらに、本件の情報処理装置は、上述したキャッシュメモリ装置を備えるものである。
また、本件のキャッシュメモリの制御方法は、複数のエントリを備え、前記エントリ毎に、データと前記データの状態を表すステータスとを含む少なくとも１のブロックを備えるキャッシュメモリの各ブロックに対して前記データのリプレースを行なうリプレース方法であって、前記各エントリにおいて前記データがリプレースされたリプレース回数を、前記エントリ毎に計数し、前記計数したリプレース回数に応じて、前記データのリプレース方式を切り替えるものである。【００２６】
さらに、本件のキャッシュメモリ装置の閾値決定プログラムは、複数のエントリを備え、前記エントリ毎に、データと前記データの状態を表すステータスとを含む少なくとも１のブロックを備えるキャッシュメモリと、前記キャッシュメモリの各ブロックに対して前記データのリプレースを行なう制御部とを備え、前記制御部は、前記各エントリにおいて前記データがリプレースされたリプレース回数を、前記エントリ毎に計数するカウンタと、前記リプレース回数に応じて、前記データのリプレース方式を切り替える切替部とを備えるとともに、前記切替部は、前記リプレース回数が所定の閾値に達した場合に、前記リプレース方式を切り替えるキャッシュメモリ装置において、前記所定の閾値を変化させ、変化させた所定の閾値毎にキャッシュヒット率を算出し、算出された複数のキャッシュヒット率に基づいて、前記所定の閾値を決定する、処理をコンピュータに実行させるものである。
【発明の効果】
【００２７】
開示の技術によれば、キャッシュメモリ装置におけるキャッシュヒット率の向上を実現することができる。
【図面の簡単な説明】
【００２８】
【図１】本実施形態の一例としての情報処理装置のハードウェアの構成例を示す図である。
【図２】本実施形態の一例としてのキャッシュメモリ装置の構成例を示す図である。
【図３】本実施形態の一例としてのキャッシュメモリ装置によるキャッシュ管理の処理を説明するための図である。
【図４】本実施形態の一例としてのキャッシュメモリ装置によるリプレース対象のＷＡＹを選択する処理を説明するための図である。
【図５】本実施形態の一例としてのカウント値とＷＡＹ選択方式との対応関係を示す図である。
【図６】本実施形態の一例としてのリプレース対象ＷＡＹ選択部の処理を説明するためのフローチャートである。
【図７】本実施形態の一例としての閾値決定部の処理を説明するためのフローチャートである。
【図８】本実施形態の変形例としてのリプレース対象ＷＡＹ選択部の処理を説明するためのフローチャートである。
【図９】本実施形態の変形例としての閾値決定部の処理を説明するためのフローチャートである。
【図１０】８つのＷＡＹを持つキャッシュラインに格納されるキャッシュを示す図である。（ａ）は、キャッシュラインに格納される３種類の優先度のキャッシュを示す図である。（ｂ）は、（ａ）に示すキャッシュラインに、優先度の高いキャッシュが格納された場合を示す図である。（ｃ）は、（ｂ）に示すキャッシュラインに、優先度の高いキャッシュが格納された場合を示す図である。
【符号の説明】
【００２９】
１    情報処理装置
２    ＣＰＵ
２１    入力アドレス
３    キャッシュメモリ装置
４    キャッシュメモリ
４０，４０−１〜４０−ｍ    キャッシュライン（エントリ）
４１    タグ
４２    データ
４３    ステータス
５    キャッシュ制御部（制御部，制御装置）
５１    処理部
５１１    比較部
５１２    データ選択部
５２    アクセス順序管理部
５３    カウンタ
５４    リプレース対象ＷＡＹ選択部
５４１    切替部
５４２    ブロック選択部
５５    閾値決定部
６    メモリ（主記憶装置）
７    Ｉ／Ｏ装置
【発明を実施するための形態】
【００３０】
以下、図面を参照して本発明の実施の形態を説明する。
〔１〕一実施形態
〔１−１〕一実施形態の構成
図１は、本実施形態の一例としての情報処理装置１のハードウェアの構成例を示す図である。
【００３１】
図１に示すように、情報処理装置１は、ＣＰＵ２と、キャッシュメモリ装置３と、ＤＲＡＭ（Dynamic RAM）等のＲＡＭなどのメモリ６と、ＨＤＤ（Hard Disk Drive）等のＩ／Ｏ（Input/Output）装置７とを備える。
ＣＰＵ２は、情報処理装置１における種々の制御や演算を行なう演算処理装置であり、例えば、ＨＤＤ等のＩ／Ｏ装置７に格納されたプログラムをメモリ６に展開して実行することにより、種々の機能を実現する。
【００３２】
キャッシュメモリ装置３は、ＣＰＵ２とメモリ６との間に備えられ、ＣＰＵ２とメモリ６との間で転送されるデータ及びそのデータの参照情報を保持する。本実施形態においては、キャッシュメモリ装置３は、ｎＷＡＹセットアソシアティブ方式を採用するものとして説明する。
メモリ（主記憶装置）６は、種々のデータやプログラムを一時的に格納する記憶領域であって、ＣＰＵ２がプログラムを実行する際に、データやプログラムを一時的に格納・展開して用いる。なお、情報処理装置１には、メモリ６とキャッシュメモリ装置３との間の入出力制御を行なうメモリコントローラ（図示省略）が備えられても良い。
【００３３】
Ｉ／Ｏ装置７は、例えば、ＨＤＤ等の外部装置である。なお、情報処理装置１には、Ｉ／Ｏ装置７とＣＰＵ２との間の入出力制御を行なうＩ／Ｏコントローラ（図示省略）が備えられても良い。
図２は、本実施形態の一例としてのｎＷＡＹセットアソシアティブ方式を採用するキャッシュメモリ装置３の構成例を示す図である。
【００３４】
また、図３は、本実施形態の一例としてのキャッシュメモリ装置３によるキャッシュ管理の処理を説明するための図である。なお、図３においては、図の簡略化のため、キャッシュ制御部５の一部の構成要素の記載を省略している。
キャッシュメモリ装置３は、キャッシュメモリ４と、キャッシュ制御部５とを備える。
キャッシュメモリ４は、図２に示す如く、複数のキャッシュライン（エントリ）４０−１〜４０−ｍを備える。なお、以下、キャッシュラインを示す符号としては、複数のキャッシュラインのうちの１つを特定する必要があるときには符号４０−１〜４０−ｍを用いるが、任意のキャッシュラインを指すときには符号４０を用いる。
【００３５】
また、キャッシュメモリ４は、キャッシュライン４０毎に、タグ４１と、タグ４１に対応付けられたデータ４２と、キャッシュの状態、例えば、データ４２の優先順位を表すステータス４３とを含む少なくとも１つのＷＡＹ（ブロック）を備える。
本実施形態においては、キャッシュメモリ４は、キャッシュライン４０−１〜４０−ｍ毎に、タグ４１、データ４２、ステータス４３を含むＷＡＹ１〜ｎを備える。
【００３６】
なお、キャッシュメモリ４は、メモリ６よりも高速なメモリであり、キャッシュメモリ４としては、例えば、ＳＲＡＭ（Static RAM）等が挙げられる。
キャッシュ制御部（制御部，制御装置）５は、ＣＰＵ２からメモリ６への要求（入力アドレス）に応じて、キャッシュメモリ４に対するキャッシュ管理を行ない、得られたデータ４２をＣＰＵ２に渡す。また、キャッシュ制御部５は、キャッシュメモリ４の各ＷＡＹに対してキャッシュのリプレースを行なう。
【００３７】
キャッシュ制御部５は、処理部５１と、アクセス順序管理部５２と、カウンタ５３と、リプレース対象ＷＡＹ選択部５４と、閾値決定部５５とを備える。
処理部５１は、キャッシュ制御部５におけるキャッシュメモリ４に対するキャッシュ管理を行なうとともに、ＣＰＵ２及びメモリ６に対するデータの受け渡しを行なう。
また、処理部５１は、リプレースを行なうキャッシュライン４０を決定し、リプレースが発生することを示すリプレース通知を後述するリプレース対象ＷＡＹ選択部５４に出力するとともに、リプレース対象ＷＡＹ選択部５４によって選択されたリプレース対象のＷＡＹに対して、キャッシュのリプレースを行なう。
【００３８】
なお、以下、キャッシュのリプレースとは、リプレース対象のＷＡＹに格納されたデータ４２を、必要に応じてメモリ６へ書き込む処理（ライトバック）、及びメモリ６から読み出した、キャッシュに格納されるタグ４１、データ４２、及びステータス４３を、リプレース対象のＷＡＹに書き込む処理を含むものとする。
なお、ライトバックの処理は、リプレース対象のＷＡＹに格納されたデータ４２のステータス４３に応じて、行なわれない場合がある。ライトバックの処理が行なわれない状況としては、例えば、リプレース対象のＷＡＹに格納されたデータ４２が他のＣＰＵのキャッシュにも格納されている場合（Share；共有状態）や、当該ＷＡＹが無効である場合（Invalid；無効状態）等が挙げられる。
【００３９】
さらに、処理部５１は、比較部５１１と、データ選択部５１２とを備える。
比較部５１１は、ＣＰＵ２からの要求（入力アドレス２１）のうちのタグ、つまり１のタグ４１を示す情報と、１のキャッシュライン４０内の複数のＷＡＹ１〜ｎにおけるタグ４１とを比較する。
そして、比較部５１１は、入力アドレス２１のうちのタグに該当するタグ４１がＷＡＹ１〜ｎのうちのいずれかのＷＡＹのタグ４１にあった場合（ヒットした場合）に、当該タグ４１に対応するＷＡＹをデータ選択部５１２に出力する。
【００４０】
また、比較部５１１は、ヒットした場合、及びヒットしなかった場合（ミスの場合）のいずれの場合においても、ヒット／ミスの情報を、比較を行なったキャッシュライン４０を示す情報とともに後述する閾値決定部５５に出力する。
データ選択部５１２は、比較部５１１から入力されたヒットしたＷＡＹの情報に基づいて、１のキャッシュライン４０内の当該ヒットしたＷＡＹから、データ４２を選択する。そして、データ選択部５１２は、選択したデータ４２をＣＰＵ２へ出力する。
【００４１】
具体的には、図３に示す如く、キャッシュメモリ４では、ＣＰＵ２からの要求（入力アドレス２１）のうちのインデックス、つまり１のキャッシュライン４０を示すエントリ情報に基づいて、複数のキャッシュライン４０−１〜４０−ｍから１のキャッシュライン４０が絞り込まれる（選択される）。なお、入力アドレス２１のうちのインデックスには、例えば、キャッシュライン４０−１〜４０−ｍの通し番号、つまりキャッシュライン４０−１〜４０−ｍのうちの、先頭から何番目のキャッシュライン４０かを示す番号（値）が設定される。
【００４２】
処理部５１は、比較部５１１により、入力アドレス２１のうちのタグ、つまり１のタグ４１を示す情報に基づいて、絞り込まれたキャッシュライン４０内の複数のＷＡＹ１〜ｎを検索する。
そして、処理部５１は、比較部５１１により、入力アドレス２１のうちのタグに該当するタグ４１を、絞り込まれたキャッシュライン４０内の複数のＷＡＹ１〜ｎにおけるタグ４１から発見（ヒット）した場合に、データ選択部５１２により、当該タグ４１に対応付けられたデータ４２をＣＰＵ２に渡す。
【００４３】
一方、処理部５１は、入力アドレス２１のうちのタグに該当するタグ４１を発見しない（ミスした）場合には、ＣＰＵ２からの入力アドレス２１に基づいて、メモリ６からデータを取得し、取得したデータをＣＰＵ２に渡す。また、このとき処理部５１は、当該データを、絞り込まれたキャッシュライン４０のうちの任意のＷＡＹに、対応するタグ４１及び当該データ４２の優先順位を表すステータス４３とともに格納（リプレース）する。
【００４４】
また、処理部５１は、入力アドレス２１のうちのタグに該当するタグ４１を発見しない（ミスした）場合には、絞り込まれたキャッシュライン４０のうちの任意のＷＡＹをリプレース対象のＷＡＹとして選択するために、リプレースが発生することを示すリプレース通知を、後述するリプレース対象ＷＡＹ選択部５４に出力する。
なお、このリプレース通知は、絞り込まれたリプレース対象のキャッシュライン４０の情報を含んでも良い。
【００４５】
リプレース対象ＷＡＹ選択部５４からリプレース対象のＷＡＹが入力されると、処理部５１は、リプレース対象のＷＡＹに対してキャッシュのリプレースを実行する。
なお、入力アドレス２１のうちのタグに該当するタグ４１を発見（ヒット）し、当該タグ４１に対応するＷＡＹをアクセス（参照）した場合には、処理部５１は、アクセスしたＷＡＹについて、後述するアクセス順序管理部５２が管理するアクセス順序（ＬＲＵ情報）を更新する。
【００４６】
また、入力アドレス２１のうちのタグに該当するタグ４１を発見せず、絞り込まれたキャッシュライン４０のうちのリプレース対象のＷＡＹにアクセス（リプレース）を行なった場合にも、処理部５１は、アクセスしたＷＡＹについて、後述するアクセス順序管理部５２が管理するアクセス順序（ＬＲＵ情報）を更新する。
なお、図３においては、図の簡略化のため、処理部５１からキャッシュメモリ４に対する、ＣＰＵ２にデータ４２を出力するための参照の信号線、並びにリプレース対象のＷＡＹにリプレースを行なうための参照及び書き込みの信号線は、省略している。
【００４７】
また、図３においては、図の簡略化のため、処理部５１からアクセス順序管理部５２に対する、アクセス順序（ＬＲＵ情報）の更新の信号線は、省略している。
図４は、本実施形態の一例としてのキャッシュメモリ装置３によるリプレース対象のＷＡＹを選択する処理を説明するための図である。
なお、図４においては、図の簡略化のため、キャッシュメモリ４の一部の構成要素及びキャッシュ制御部５の一部の構成要素の記載を省略している。
【００４８】
アクセス順序管理部５２は、キャッシュのリプレース対象のＷＡＹを選択するための情報として、キャッシュライン４０毎に、ＷＡＹ１〜ｎがアクセスされたアクセス順序（ＬＲＵ情報）を格納し管理する。
ここで、ＬＲＵ情報は、キャッシュライン４０内のＷＡＹ１〜ｎがアクセスされた順序を示す情報である。ＬＲＵ情報は、ＷＡＹ１〜ｎが処理部５１によってヒットされ、データが参照（取得）された場合や、処理部５１によってリプレースされた場合など、ＷＡＹ１〜ｎのキャッシュがアクセス（参照、変更）された場合に、処理部５１によって更新される。
【００４９】
アクセス順序管理部５２では、図４に示す如く、ＣＰＵ２からの要求（入力アドレス２１）のうちのインデックス、つまり１のキャッシュライン４０を示すエントリ情報によって、当該１のキャッシュライン４０に対応するＬＲＵ情報が選択される。
処理部５１は、入力アドレス２１のうちのインデックスによって指定されたキャッシュライン４０において、ＷＡＹ１〜ｎのうちのいずれかのＷＡＹのキャッシュにアクセス（参照、変更）した場合に、アクセス順序管理部５２において上述の如く選択されているＬＲＵ情報を更新する。
【００５０】
なお、アクセス順序管理部５２において上述の如く選択されるＬＲＵ情報は、後述するリプレース対象ＷＡＹ選択部５４によるリプレース対象のＷＡＹの選択の際に参照される。
ＬＲＵ情報としては、例えば、キャッシュライン４０においてアクセスされたキャッシュのＷＡＹの番号（１〜ｎ）を、最近のものから順に先頭から並べたものとすることができる。最近のものから順に先頭から並べた場合、処理部５１によるＬＲＵ情報の更新は、新たにアクセスされたＷＡＹの番号を、ＬＲＵ情報のうちの先頭に移動されることにより行なうことができる。
【００５１】
なお、ＬＲＵ情報は上述したものに限定されず、例えば、ＷＡＹ１〜ｎ毎に、最後にアクセスのあった時刻をタイムスタンプとして格納したものであっても良い。ＷＡＹ１〜ｎ毎のタイムスタンプを格納する場合、ＬＲＵ情報を用いる後述するリプレース対象ＷＡＹ選択部５４においては、ＬＲＵ情報内のタイムスタンプに基づいて、最も古い（過去の）時刻にアクセスされたＷＡＹを選択する処理を行なうことが好ましい。
【００５２】
カウンタ５３は、キャッシュのリプレース対象のＷＡＹを選択するための情報として、キャッシュライン４０毎にカウント値を格納し管理している。また、後述するリプレース対象ＷＡＹ選択部５４においてリプレース対象のＷＡＹが選択される度に、リプレース対象のキャッシュライン４０に対応するカウント値が、リプレース対象ＷＡＹ選択部５４によってカウントアップされる。
【００５３】
つまり、カウンタ５３は、各キャッシュライン４０においてキャッシュがリプレースされるリプレース回数を、キャッシュライン４０毎に計数する。
なお、処理部５１によってリプレース対象のＷＡＹが実際にリプレースされるタイミングで、リプレース対象のキャッシュライン４０に対応するカウント値が、処理部５１によってカウントアップされても良い。
【００５４】
また、カウンタ５３では、図４に示す如く、ＣＰＵ２からの要求（入力アドレス２１）のうちのインデックス、つまり１のキャッシュライン４０を示すエントリ情報によって、当該１のキャッシュライン４０に対応するカウント値が選択される。
リプレース対象ＷＡＹ選択部５４又は処理部５１は、リプレース対象のＷＡＹを選択する度又はリプレース対象のＷＡＹをリプレースする度に、カウンタ５３において上述の如く選択されているカウント値をカウントアップする。
【００５５】
なお、図４においては、図の簡略化のため、リプレース対象ＷＡＹ選択部５４又は処理部５１からカウンタ５３に対する、カウント値のカウントアップを行なうための信号線は、省略している。
なお、カウンタ５３において選択されるカウント値は、リプレース対象ＷＡＹ選択部５４によるリプレース対象のＷＡＹの選択の際に参照される。
【００５６】
また、カウンタ５３は、リプレース回数であるカウント値が所定の数と等しくなった場合、例えば、本実施形態においては、図５に示す如く、カウント値がキャッシュライン４０におけるＷＡＹの数ｎと等しくなった場合に、カウント値を０にリセットする。
すなわち、本実施形態におけるカウンタ５３は、０〜ｎ−１の値を繰り返すカウンタである。
【００５７】
なお、所定の数は、上述したものに限定されず、キャッシュライン４０におけるＷＡＹの数ｎよりも小さな数或いは大きな数としても良い。
リプレース対象ＷＡＹ選択部５４は、処理部５１からリプレース通知を入力されると、カウンタ５３に格納されているカウント値に基づいてリプレース方式を選択し、選択したリプレース方式に従って、リプレース対象のＷＡＹを選択する。
【００５８】
リプレース対象ＷＡＹ選択部５４は、切替部５４１と、ブロック選択部５４２とを備える。
切替部５４１は、カウンタ５３のカウント値（リプレース回数）を参照し、参照したカウント値に応じて、キャッシュのリプレース対象のＷＡＹを選択するリプレース方式を切り替える。具体的には、切替部５４１は、後述する閾値決定部５５によって決定される所定の閾値を用いて、カウント値が所定の閾値に達した場合に、リプレース方式を切り替える。
【００５９】
そして、切替部５４１は、図４に示す如く、カウンタ５３のカウント値（リプレース回数）に応じたリプレース方式を示す情報を、ブロック選択部５４２に出力する。
なお、リプレース対象ＷＡＹ選択部５４が処理部５１からのリプレース通知を入力されるとき、上述の如く、カウンタ５３では、ＣＰＵ２からの入力アドレス２１によって、１の（この場合はリプレース対象の）キャッシュライン４０に対応するカウント値が選択されている。
【００６０】
従って、処理部５１からトリガとなるリプレース通知がリプレース対象ＷＡＹ選択部５４に入力されたとき、切替部５４１は、カウンタ５３において選択されているカウント値を参照することで、リプレース対象のキャッシュライン４０に対応するカウント値を取得することができる。
ブロック選択部５４２は、切替部５４１からのリプレース方式を示す情報に基づいて、リプレース対象のＷＡＹを選択し、選択したリプレース対象のＷＡＹを示す情報を処理部５１に出力する。
【００６１】
図５は、本実施形態の一例としてのカウント値とＷＡＹ選択方式（リプレース方式）との対応関係を示す図である。
本実施形態においては、リプレース方式には、優先順位方式とＬＲＵ方式とが含まれるが、これに限定されず、キャッシュメモリ装置３の使用態様に応じて、既知の種々の方式を含むことができる。
【００６２】
図５に示すように、本実施形態において、切替部５４１により用いられる所定の閾値は、“０”及び“ｘ”である。
すなわち、本実施形態におけるリプレース方式は、カウント値が所定の閾値である“ｘ”に達した場合に、切替部５４１により、優先順位方式（第１のリプレース方式）からＬＲＵ方式（第２のリプレース方式）に切り替えられる。
【００６３】
一方、カウント値が所定の閾値である“０”に達した場合、つまり、カウント値がキャッシュライン４０におけるＷＡＹの数ｎに達し、カウンタ５３により０にリセットされたとき、切替部５４１により、ＬＲＵ方式（第２のリプレース方式）から優先順位方式（第１のリプレース方式）に切り替えられる。
従って、切替部５４１は、図５に示す如く、カウンタ５３のカウント値（リプレース回数）に応じて、カウント値が０〜ｘ−１の間、つまりカウント値がｘ未満の場合には、キャッシュのリプレース方式として優先順位方式を示す情報を、ブロック選択部５４２に出力する。
【００６４】
また、切替部５４１は、カウント値がｘ〜ｎ−１の間、つまりカウント値がｘ以上の場合には、キャッシュのリプレース方式としてＬＲＵ方式を示す情報を、ブロック選択部５４２に出力する。
そして、ブロック選択部５４２は、切替部５４１から取得したリプレース方式に基づいて、リプレース対象のキャッシュライン４０におけるリプレース対象のＷＡＹを選択し、選択したリプレース対象のＷＡＹを示す情報を処理部５１に出力する。
【００６５】
具体的には、リプレース対象のキャッシュライン４０について、切替部５４１によりリプレース方式のうちの優先順位方式が選択された場合、ブロック選択部５４２は、リプレース対象のキャッシュライン４０が備えるＷＡＹ１〜ｎのうちのステータス４３に基づいて、リプレース対象のＷＡＹを選択する。
以下、リプレース対象ＷＡＹ選択部５４によって実行されるリプレース対象のＷＡＹの選択方式（リプレース方式）のうちの、優先順位方式について説明する。
【００６６】
リプレース方式のうちの優先順位方式は、リプレース対象ＷＡＹ選択部５４（ブロック選択部５４２）が、リプレース対象のキャッシュライン４０が備えるＷＡＹ１〜ｎのうちのステータス４３に応じた優先度に基づいて、リプレース対象のＷＡＹを選択するものである。
なお、ブロック選択部５４２が切替部５４１から優先順位方式を示す情報を入力されたとき、上述の如く、キャッシュメモリ４では、ＣＰＵ２からの入力アドレス２１によって、１の（この場合はリプレース対象の）キャッシュライン４０に対応するＷＡＹ１〜ｎが選択されている。
【００６７】
従って、ブロック選択部５４２が切替部５４１から優先順位方式を示す情報を入力されたとき、ブロック選択部５４２は、キャッシュメモリ４において選択されているＷＡＹ１〜ｎの各ステータス４３を参照することで、リプレース対象のキャッシュライン４０に対応するステータス４３を取得することができる。
以下、ブロック選択部５４２が、リプレース対象のキャッシュライン４０について、切替部５４１から優先順位方式を示す情報を入力された場合について説明する。
【００６８】
ここで、各キャッシュ、つまり各ＷＡＹ１〜ｎに格納されるステータス４３とは、例えばマルチプロセッサシステムで使用されるＭＥＳＩプロトコルに代表されるものである。
ＭＥＳＩプロトコルとは、Ｍ（Modified；変更）、Ｅ（Exclusive；排他）、Ｓ（Shared；共有）、及びＩ（Invalid；無効）の４つのキャッシュステータスを採用するプロトコルである。
【００６９】
以下、特定のプログラムやシステム構成、または実際のキャッシュヒット率測定などにより、上述したＭＥＳＩプロトコルの各キャッシュステータスについて、例えば、キャッシュの優先度Ｍ、Ｅ、Ｓの順番で優先的にキャッシュを行なうと、キャッシュヒット率が向上することが分かっているものとする。
なお、キャッシュステータスがＩ（無効）のＷＡＹについては、そのＷＡＹのデータが無効であることを示すため、キャッシュの優先度は設定していない。
【００７０】
ステータス４３として上述の如きＭＥＳＩプロトコルを採用する場合、ブロック選択部５４２は、キャッシュの優先度の高いステータス４３のキャッシュを優先的に各ＷＡＹ１〜ｎに格納するように、リプレース対象のＷＡＹを選択する。
換言すれば、ブロック選択部５４２は、リプレース対象のキャッシュライン４０について、キャッシュの優先度の低いステータス４３のキャッシュを優先的にリプレース対象のＷＡＹとして選択する。つまり、ブロック選択部５４２は、各ＷＡＹ１〜ｎのステータス４３と、上述したキャッシュの優先度とは逆の、リプレース対象の優先度Ｓ、Ｅ、Ｍの順番とに基づいて、リプレース対象のＷＡＹを選択する。
【００７１】
なお、ブロック選択部５４２は、キャッシュステータスがＩ（無効）のＷＡＹ、つまり使用されていない（無駄になっている）ＷＡＹを優先的にリプレース対象のＷＡＹとして選択しても良い。
つまり、キャッシュステータスがＩ（無効）のＷＡＹを優先的にリプレース対象のＷＡＹとする場合、ブロック選択部５４２は、各ＷＡＹ１〜ｎのステータス４３と、リプレース対象の優先度Ｉ、Ｓ、Ｅ、Ｍの順番とに基づいて、リプレース対象のＷＡＹを選択しても良い。
【００７２】
なお、リプレース対象ＷＡＹ選択部５４は、リプレース対象のキャッシュライン４０において、同一の優先度のキャッシュ（ＷＡＹ）からリプレース対象のＷＡＹを選択する場合は、同一優先度のキャッシュの中から後述するＬＲＵ方式によりリプレース対象のＷＡＹを選択する。
例えば、リプレース対象ＷＡＹ選択部５４は、リプレース対象のキャッシュライン４０内に、優先的にリプレース対象となるＳのステータス４３を持つＷＡＹが複数含まれる場合、当該Ｓのステータス４３を持つＷＡＹの中からＬＲＵ方式によりリプレース対象のＷＡＹを選択する。
【００７３】
上述のように、リプレース対象ＷＡＹ選択部５４によって、ステータス４３に応じた上述の如き優先度に基づいて、リプレース対象のＷＡＹが選択されることにより、キャッシュヒット率の向上を実現することができる。
なお、上述の如く、本実施形態においては、ステータス４３としてＭＥＳＩプロトコルのキャッシュステータスを採用したが、これに限定されるものではなく、他のプロトコルのキャッシュステータスを採用しても良い。また、データの利用頻度に応じて変化する値等、例えば、データの利用頻度に応じたキャッシュの優先度を表わす値などをステータス４３として各ＷＡＹ１〜ｎに格納しても良い。
【００７４】
次に、リプレース対象ＷＡＹ選択部５４によって実行されるリプレース対象のＷＡＹの選択方式（リプレース方式）のうちの、ＬＲＵ方式について説明する。
リプレース対象のキャッシュライン４０について、切替部５４１によりリプレース方式のうちのＬＲＵ方式が選択された場合、ブロック選択部５４２は、リプレース対象のＷＡＹとして、リプレース対象のキャッシュライン４０において最も古くアクセスされたＷＡＹを選択する。
【００７５】
つまり、ブロック選択部５４２は、切替部５４１からリプレース方式のうちのＬＲＵ方式を示す情報を入力されると、アクセス順序管理部５２において選択されているＬＲＵ情報に基づいて、リプレース対象のキャッシュライン４０において最も古くアクセスされたＷＡＹをリプレース対象のＷＡＹとして選択する。
なお、ブロック選択部５４２が切替部５４１からＬＲＵ方式を示す情報を入力されたとき、上述の如く、アクセス順序管理部５２では、ＣＰＵ２からの入力アドレス２１によって、１の（この場合はリプレース対象の）キャッシュライン４０に対応するＬＲＵ情報が選択されている。
【００７６】
従って、ブロック選択部５４２が切替部５４１からＬＲＵ方式を示す情報を入力されたとき、ブロック選択部５４２は、アクセス順序管理部５２において選択されているＬＲＵ情報を参照することで、リプレース対象のキャッシュライン４０に対応するＬＲＵ情報を取得することができる。
なお、上述の如く、アクセス順序管理部５２が格納するＬＲＵ情報が、ＷＡＹ１〜ｎ毎のタイムスタンプである場合には、リプレース対象ＷＡＹ選択部５４（ブロック選択部５４２）は、アクセス順序管理部５２から取得するＬＲＵ情報内のタイムスタンプの中から最も古い（過去の）時刻を探すことが好ましい。これにより、リプレース対象ＷＡＹ選択部５４（ブロック選択部５４２）は、最も古い（過去の）時刻のタイムスタンプに対応するＷＡＹをリプレース対象のＷＡＹとして選択することができる。
【００７７】
なお、リプレース対象ＷＡＹ選択部５４は、処理部５１から、リプレース通知とともに絞り込まれたリプレース対象のキャッシュライン４０の情報が入力されても良い。この場合、リプレース対象ＷＡＹ選択部５４は、選択されているカウント値やステータス情報４３或いはＬＲＵ情報が、入力されたリプレース対象のキャッシュライン４０に対応するものであるか否かを確認することができる。
【００７８】
または、リプレース対象ＷＡＹ選択部５４は、入力されたリプレース対象のキャッシュライン４０の情報に基づいて、カウント値と、ステータス情報４３若しくはＬＲＵ情報とを取得しても良い。つまり、リプレース対象ＷＡＹ選択部５４は、ＣＰＵ２からの入力アドレス２１に基づいて選択されているカウント値やステータス情報４３或いはＬＲＵ情報を用いず、処理部５１から入力されたリプレース対象のキャッシュライン４０の情報に基づいて、これらの情報を取得しても良い。
【００７９】
次に、上述の如く構成されたキャッシュメモリ装置３におけるリプレース対象ＷＡＹ選択部５４による処理を、図６のフローチャートを参照しながら説明する。
図６は、本実施形態の一例としてのリプレース対象ＷＡＹ選択部５４の処理を説明するためのフローチャートである。
はじめに、リプレース対象ＷＡＹ選択部５４が処理部５１からリプレース通知を受けると、切替部５４１により、カウンタ５３のカウント値と、所定の閾値“ｘ”とが比較され、カウント値が所定の閾値“ｘ”未満であるか否かが判断される（ステップＳ１）。なお、以下、図６に示すフローチャートにおけるカウント値は、カウンタ５３において選択されているリプレース対象のキャッシュライン４０に対応するものであり、所定の閾値“ｘ”は、リプレース対象のキャッシュライン４０に対応するものである。
【００８０】
切替部５４１による比較の結果、カウント値が所定の閾値“ｘ”未満であった場合（ステップＳ１のＹｅｓルート）、切替部５４１により、優先順位方式を示す情報がブロック選択部５４２に出力される。
ブロック選択部５４２に優先順位方式を示す情報が入力されると、ブロック選択部５４２により、上述した優先順位方式によるリプレース対象のＷＡＹの選択が行なわれ（ステップＳ２）、選択されたＷＡＹを示す情報が処理部５１に出力される。
【００８１】
一方、ステップＳ１の切替部５４１による比較の結果、カウント値が所定の閾値“ｘ”以上であった場合（ステップＳ１のＮｏルート参照）、切替部５４１により、ＬＲＵ方式を示す情報がブロック選択部５４２に出力される。
ブロック選択部５４２にＬＲＵ方式を示す情報が入力されると、ブロック選択部５４２により、上述したＬＲＵ方式によるリプレース対象のＷＡＹの選択が行なわれ（ステップＳ３）、選択されたＷＡＹを示す情報が処理部５１に出力される。
【００８２】
ステップＳ２又はステップＳ３において、ブロック選択部５４２によりリプレース対象のＷＡＹが選択されると、リプレース対象ＷＡＹ選択部５４により、カウンタ５３のカウント値が判定され、カウント値がｎ−１未満であるか否かが判断される（ステップＳ４）。
カウント値がＷＡＹの数−１、つまりｎ−１未満であった場合（ステップＳ４のＹｅｓルート）、リプレース対象ＷＡＹ選択部５４により、当該カウント値に１が加算され（ステップＳ５）、リプレース対象ＷＡＹ選択部５４の処理が終了する。
【００８３】
一方、カウント値がＷＡＹの数−１、つまりｎ−１と等しい場合（ステップＳ４のＮｏルート）、リプレース対象ＷＡＹ選択部５４により、当該カウント値が０にリセットされ（ステップＳ６）、リプレース対象ＷＡＹ選択部５４の処理が終了する。
閾値決定部５５は、リプレース方式の切り替えの判断基準となる所定の閾値を決定し、決定した所定の閾値を切替部５４１へ出力する。
【００８４】
本実施形態においては、閾値決定部５５は、所定の閾値“ｘ”について、“ｘ”の値を動的に変化させてキャッシュヒット率を算出し、算出されたキャッシュヒット率に基づいて所定の閾値を決定し、切替部５４１へ出力する。
具体的には、閾値決定部５５は、“ｘ”の値を所定の時間毎に変化させ、変化させた値を切替部５４１に出力するとともに、処理部５１の比較部５１１から出力されるヒット／ミスの情報に基づいて、“ｘ”の値毎にキャッシュヒット率を算出する。そして、閾値決定部５５は、キャッシュヒット率が最大になったときの“ｘ”の値を所定の閾値として決定し、切替部５４１へ出力する。
【００８５】
上述のように、閾値決定部５５によれば、“ｘ”の値を動的に変化させることにより、優先順位方式とＬＲＵ方式との２つの最適比率を動的に設定することが可能となる。
なお、上述したように、所定の閾値には、“０”及び“ｘ”があり、閾値決定部５５は、所定の閾値“ｘ”の値を決定する。
一方、所定の閾値“０”については、閾値決定部５５により切替部５４１に出力されなくても良い。つまり、本実施形態においては、切替部５４１は、カウント値がｘ未満の場合、及びｘ以上の場合のいずれかの場合に応じて、リプレース方式を切り替える。従って、カウント値がｘ以上であるｎ−１から、ｘ未満である０に変わったとき、必然的に切替部５５によりリプレース方式が切り替えられる。
【００８６】
上述のことから、閾値決定部５５は、所定の閾値“０”及び“ｘ”のうちの“ｘ”の値を決定し、決定した所定の閾値を切替部５４１へ出力するだけで良い。
なお、閾値決定部５５は、所定の閾値をキャッシュライン４０毎に設定することができる。つまり、閾値決定部５５は、所定の閾値を変化させてキャッシュライン４０毎のキャッシュヒット率を算出し、算出された各キャッシュヒット率に基づいて、キャッシュライン４０毎に所定の閾値を決定することができる。この場合、所定の閾値をキャッシュライン４０毎に柔軟に設定することができるため、特定の種類のキャッシュが、あるキャッシュライン４０内に偏って格納されたとしても、キャッシュヒット率が最大になる閾値を設定することができる。
【００８７】
また、閾値決定部５５は、キャッシュメモリ４全体で１つの所定の閾値を設定しても良い。
閾値決定部５５によって決定された所定の閾値は、切替部５４１又は閾値決定部５５のいずれかに備えられた図示しないレジスタ等に保持されても良い。
なお、閾値決定部５５としての機能は、ハードウェアにより実現されても良いし、例えば、システムサービスプロセッサなどの外部設定ノードによって実現されても良い。
【００８８】
また、閾値決定部５５を設けずに、所定の閾値を固定として予め切替部５４１に設定されても良いし、上述した外部設定ノードによって任意のタイミングで切替部５４１に設定されても良い。
上述のように、リプレース対象ＷＡＹ選択部５４により、キャッシュステータスに設けられた優先順位に応じてリプレース対象のＷＡＹを選択する優先順位方式と、キャッシュステータスに関係なくアクセスされたのが最も古いＷＡＹを選択するＬＲＵ方式とが併用される。そして、リプレース対象ＷＡＹ選択部５４により実行されるリプレース方式の比率が、閾値決定部５５によって最適な比率に設定されることにより、キャッシュヒット率の向上が実現される。
【００８９】
次に、上述の如く構成されたキャッシュメモリ装置３における閾値決定部５５の処理について説明する。
図７は、本実施形態の一例としての閾値決定部５５の処理を説明するためのフローチャートである。
はじめに、閾値決定部５５により、所定の閾値“ｘ”に初期値Ｐが設定されるとともに、計測時間Ｔが設定される（ステップＳ１１）。
【００９０】
ここで、初期値Ｐとは、カウンタ５３のカウント値がとり得る範囲内の任意の値であり、本実施形態においては、０〜ｎ−１の範囲内の任意の値である。
また、計測時間Ｔとは、所定の閾値“ｘ”を切替部５４１に出力（設定）した後に、処理部５１からのヒット／ミスの情報を計測する時間である。計測時間Ｔとしては、ＣＰＵ２からメモリ６へのアクセス頻度や、キャッシュヒット率の計算に用いるヒット／ミスの情報の要求母数等に応じて、例えば、数秒程度の時間を設定しても良いし、数分〜数時間程度の時間を設定しても良い。
【００９１】
次に、閾値決定部５５により、所定の閾値“ｘ”についての処理部５１からのヒット／ミスの情報が計測時間Ｔの間計測され、所定の閾値“ｘ”についてのキャッシュヒット率が計算される。
なお、キャッシュヒット率は、例えば、計測時間Ｔにおけるヒット数から計測時間Ｔにおけるヒット数及びミス数を除算することにより求められる。
【００９２】
また、閾値決定部５５により、所定の閾値を“ｘ−１”に変化させた場合、及び“ｘ＋１”に変化させた場合の、それぞれのキャッシュヒット率も計算される（ステップＳ１２）。
すなわち、ステップＳ１２においては、所定の閾値“ｘ”についてのキャッシュヒット率の他に、閾値決定部５５により、所定の閾値“ｘ−１”についての処理部５１からのヒット／ミスの情報が計測時間Ｔの間計測され、所定の閾値“ｘ−１”についてのキャッシュヒット率も計算される。また、閾値決定部５５により、所定の閾値“ｘ＋１”についての処理部５１からのヒット／ミスの情報が計測時間Ｔの間計測され、所定の閾値“ｘ＋１”についてのキャッシュヒット率も計算される。
【００９３】
なお、ステップＳ１１において、初期値Ｐを設定された所定の閾値“ｘ”の値が、カウンタ５３のカウント値がとり得る範囲内の値のうちの、最小又は最大の値であった場合、ステップＳ１２におけるキャッシュヒット率の計算は、一部が実行されない。
例えば、所定の閾値“ｘ”の値が、本実施形態におけるカウンタ５３のカウント値がとり得る範囲内０〜ｎ−１の値のうちの、最小の値０であった場合には、ステップＳ１２において、キャッシュヒット率（ｘ−１）の計算は実行されない。同様に、所定の閾値“ｘ”の値が、本実施形態におけるカウンタ５３のカウント値がとり得る範囲内０〜ｎ−１の値のうちの、最大の値ｎ−１であった場合には、ステップＳ１２において、キャッシュヒット率（ｘ＋１）の計算は実行されない。
【００９４】
ここで、図７における「キャッシュヒット率計算（ｘ）」の文言は、所定の閾値“ｘ”についてのキャッシュヒット率が、上述の如く計算されることを示す。括弧内がｘ−１又はｘ＋１の場合も同様に、所定の閾値“ｘ−１”又は“ｘ＋１”についてのキャッシュヒット率が、上述の如く計算されることを示す。
ステップＳ１２において、所定の閾値“ｘ”、“ｘ−１”、“ｘ＋１”についてのキャッシュヒット率がそれぞれ計算されると、閾値決定部５５により、これらのキャッシュヒット率（ｘ）、（ｘ−１）、（ｘ＋１）が比較される（ステップＳ１３）。
【００９５】
なお、上述の如く、所定の閾値“ｘ”の値が、カウンタ５３のカウント値がとり得る範囲内の値のうちの、最小又は最大の値であった場合には、ステップＳ１２において求められたキャッシュヒット率のみを用いて、閾値決定部５５による比較が実行される。
以下、所定の閾値を括弧で括った、（ｘ）、（ｘ−１）、（ｘ＋１）は、その所定の閾値についてのキャッシュヒット率を示すものとする。
【００９６】
キャッシュヒット率の比較により、（ｘ）が（ｘ−１）以上、且つ（ｘ＋１）以上であった場合（ステップＳ１３の「（ｘ）≧（ｘ−１）且つ（ｘ）≧（ｘ＋１）」ルート）、閾値決定部５５により、“ｘ”が所定の閾値に決定され（ステップＳ１４）、閾値決定部５５による処理が終了する。
すなわち、所定の閾値を“ｘ”とした場合の方が、所定の閾値を“ｘ”の前後の値とした場合よりもキャッシュヒット率が高い場合、つまり、所定の閾値“ｘ”のときキャッシュヒット率が最大になると考えられる場合、所定の閾値を“ｘ”とすることで、優先順位方式及びＬＲＵ方式の切り替えの比率が最適比率となる。従って、所定の閾値を“ｘ”とした場合の方が、所定の閾値を“ｘ”の前後の値とした場合よりもキャッシュヒット率が高い場合、閾値決定部５５により、“ｘ”が所定の閾値に決定される。
【００９７】
一方、ステップＳ１３において、キャッシュヒット率の比較により、（ｘ）が（ｘ−１）未満であった場合（ステップＳ１３の「（ｘ）＜（ｘ−１）」ルート）、閾値決定部５５により、所定の閾値“ｘ”から１を減じられる（デクリメント）（ステップＳ１５）。
そして、閾値決定部５５により、ステップＳ１５においてデクリメントされた所定の閾値“ｘ”がＸ０と等しいか否かが判断される（ステップＳ１６）。
【００９８】
なお、Ｘ０とは、カウンタ５３のカウント値がとり得る範囲内の値のうちの、最小の値であり、本実施形態においては、カウンタ５３のカウント値がとり得る０〜ｎ−１の範囲内の値のうちの、最小の値０である。
ステップＳ１６において、所定の閾値“ｘ”がＸ０と等しいと判断された場合（ステップＳ１６のＹｅｓルート）、閾値決定部５５により、“ｘ”、つまり、ステップＳ１５においてデクリメントされた値が所定の閾値に決定され（ステップＳ１４）、閾値決定部５５による処理が終了する。
【００９９】
すなわち、ステップＳ１６において、所定の閾値“ｘ”がＸ０と等しいと判断された場合、所定の閾値“ｘ”は、カウンタ５３のカウント値がとり得る範囲内の値のうちの、最小の値であるため、現在の“ｘ”未満の値について、キャッシュヒット率を求めることができない。つまり、キャッシュヒット率の大小を比較した結果、ステップＳ１５において変更された“ｘ”の値が、カウンタ５３のカウント値がとり得る範囲内の値のうちの、最小の値になったとき、“ｘ”を所定の閾値に決定することで、キャッシュヒット率（ｘ）が最大になるものと考えられる。従って、ステップＳ１６において、閾値決定部５５により、所定の閾値“ｘ”がＸ０と等しいと判断された場合には、現在の“ｘ”の値が所定の閾値に決定され（ステップＳ１４）、閾値決定部５５による処理が終了する。
【０１００】
一方、ステップＳ１６において、所定の閾値“ｘ”がＸ０とは等しくないと判断された場合（ステップＳ１６のＮｏルート）、閾値決定部５５により、所定の閾値“ｘ−１”についてのキャッシュヒット率が、上述の如く計算される（ステップＳ１７）。
なお、ステップＳ１７において計算されるキャッシュヒット率は、ステップＳ１５でデクリメントされた所定の閾値“ｘ”から、さらに１を減じた“ｘ−１”について行なわれる。
【０１０１】
ステップＳ１７において、所定の閾値“ｘ−１”についてのキャッシュヒット率が計算されると、閾値決定部５５により、キャッシュヒット率（ｘ）と、（ｘ−１）とが比較され、（ｘ）が（ｘ−１）以上であるか否かが判断される（ステップＳ１８）。
キャッシュヒット率の比較により、（ｘ）が（ｘ−１）未満であった場合（ステップＳ１８のＮｏルート）、ステップＳ１５の処理に戻る。
【０１０２】
一方、ステップＳ１８において、キャッシュヒット率の比較により、（ｘ）が（ｘ−１）以上であった場合（ステップＳ１８のＹｅｓルート）、閾値決定部５５により、“ｘ”、つまり、ステップＳ１５においてデクリメントされた値が所定の閾値に決定され（ステップＳ１４）、閾値決定部５５による処理が終了する。
また、ステップＳ１３において、キャッシュヒット率の比較により、（ｘ）が（ｘ＋１）未満であった場合（ステップＳ１３の「（ｘ）＜（ｘ＋１）」ルート）、閾値決定部５５により、所定の閾値“ｘ”に１が加算される（インクリメント）（ステップＳ１９）。
【０１０３】
そして、閾値決定部５５により、ステップＳ１９においてインクリメントされた所定の閾値“ｘ”がＸｎと等しいか否かが判断される（ステップＳ２０）。
なお、Ｘｎとは、カウンタ５３のカウント値がとり得る範囲内の値のうちの、最大の値であり、本実施形態においては、カウンタ５３のカウント値がとり得る０〜ｎ−１の範囲内の値のうちの、最大の値ｎ−１である。
【０１０４】
ステップＳ２０において、所定の閾値“ｘ”がＸｎと等しいと判断された場合（ステップＳ２０のＹｅｓルート）、閾値決定部５５により、“ｘ”、つまり、ステップＳ１９においてインクリメントされた値が所定の閾値に決定され（ステップＳ１４）、閾値決定部５５による処理が終了する。
すなわち、ステップＳ２０において、所定の閾値“ｘ”がＸｎと等しいと判断された場合、所定の閾値“ｘ”は、カウンタ５３のカウント値がとり得る範囲内の値のうちの、最大の値であるため、現在の“ｘ”より大きな値について、キャッシュヒット率を求めることができない。つまり、キャッシュヒット率の大小を比較した結果、ステップＳ１９において変更された“ｘ”の値が、カウンタ５３のカウント値がとり得る範囲内の値のうちの、最大の値になったとき、“ｘ”を所定の閾値に決定することで、キャッシュヒット率（ｘ）が最大になるものと考えられる。従って、ステップＳ２０において、閾値決定部５５により、所定の閾値“ｘ”がＸｎと等しいと判断された場合には、現在の“ｘ”の値が所定の閾値に決定され（ステップＳ１４）、閾値決定部５５による処理が終了する。
【０１０５】
一方、ステップＳ２０において、所定の閾値“ｘ”がＸｎとは等しくないと判断された場合（ステップＳ２０のＮｏルート）、所定の閾値“ｘ＋１”についてのキャッシュヒット率が、上述の如く計算される（ステップＳ２１）。
なお、ステップＳ２１において計算されるキャッシュヒット率は、ステップＳ１９でインクリメントされた所定の閾値“ｘ”に、さらに１を加算した“ｘ＋１”について行なわれる。
【０１０６】
ステップＳ２１において、所定の閾値“ｘ＋１”についてのキャッシュヒット率が計算されると、閾値決定部５５により、キャッシュヒット率（ｘ）と、（ｘ＋１）とが比較され、（ｘ）が（ｘ＋１）以上であるか否かが判断される（ステップＳ２２）。
キャッシュヒット率の比較により、（ｘ）が（ｘ＋１）未満であった場合（ステップＳ２２のＮｏルート）、ステップＳ１９の処理に戻る。
【０１０７】
一方、ステップＳ２２において、キャッシュヒット率の比較により、（ｘ）が（ｘ＋１）以上であった場合（ステップＳ２２のＹｅｓルート）、閾値決定部５５により、“ｘ”、つまり、ステップＳ１９においてインクリメントされた値が所定の閾値に決定され（ステップＳ１４）、閾値決定部５５による処理が終了する。
なお、上述したステップＳ１３において、キャッシュヒット率の比較により、（ｘ）が（ｘ−１）未満であり、且つ（ｘ＋１）未満であった場合には、閾値決定部５５により、（ｘ−１）及び（ｘ＋１）のうちのキャッシュヒット率が大きい方が選択される。そして、閾値決定部５５により、（ｘ−１）が選択された場合には、ステップＳ１５の処理に移行し、（ｘ＋１）が選択された場合には、ステップＳ１９の処理に移行する。
【０１０８】
上述のように、閾値決定部５５は、所定の閾値“ｘ”を変化させ、変化させた所定の閾値毎にキャッシュヒット率を算出し、算出された複数のキャッシュヒット率に基づいて所定の閾値を決定し、切替部５４１へ出力する。
また、上述のように、閾値決定部５５によるキャッシュヒット率を算出する処理は、所定の閾値“ｘ”を所定の時間毎に変化させ、変化させた所定の閾値“ｘ”を切替部５４１に設定すべく出力されることにより行なわれる。そして、閾値決定部５５によるキャッシュヒット率を算出する処理は、変化させた所定の閾値“ｘ”に基づいて切替部５４１によりリプレース方式が切り替えられる状態において、処理部５１から出力されるヒット／ミスの情報に基づいて、所定の閾値毎にキャッシュヒット率を算出することにより行なわれる。
【０１０９】
さらに、上述のように、閾値決定部５５による所定の閾値“ｘ”を決定する処理は、複数のキャッシュヒット率の中から最大のキャッシュヒット率を選択し、最大のキャッシュヒット率が算出されたときの所定の閾値“ｘ”を、切替部５４１に設定すべき所定の閾値“ｘ”として決定することにより行なわれる。
なお、上述したステップＳ１１〜ステップＳ２２の処理は、閾値決定部５５により、キャッシュライン４０毎に個別に所定の閾値を決定すべく、キャッシュライン４０毎に独立して行なわれても良いし、キャッシュメモリ４全体で１つの所定の閾値を決定すべく行なわれても良い。
【０１１０】
また、キャッシュライン４０毎に個別に所定の閾値が決定される場合、上述したステップＳ１１〜ステップＳ２２の処理は、キャッシュライン４０毎に並行して実施されても良いし、例えばキャッシュライン４０−１から４０−ｍまで１ラインずつ順に実施されても良い。
なお、キャッシュライン４０毎に個別に所定の閾値が決定される場合、閾値決定部５５は、比較部５１１からヒット／ミスの情報とともに入力される、当該ヒット／ミスが発生したキャッシュライン４０の情報に基づいて、ヒット／ミスの情報を集計するキャッシュライン４０を特定することができる。
【０１１１】
また、上述したステップＳ１１〜ステップＳ２２の処理は、情報処理装置１の起動時、所定のタイミング、または所定の間隔で、閾値決定部５５により実行される。
なお、閾値決定部５５により決定された所定の閾値“ｘ”は、次回の閾値決定部５５による所定の閾値の決定の際に、初期値Ｐとして用いられても良い。
このように、本実施形態の一例としてのキャッシュメモリ装置３のキャッシュ制御部５によれば、各キャッシュライン４０におけるＷＡＹのリプレース回数を計数するカウンタ５３と、カウント値で示されるリプレース回数に応じて、ＷＡＹのリプレース方式を切り替える切替部５４１とが備えられる。
【０１１２】
これにより、切替部５４１によって、リプレース回数に応じて、例えば優先順位方式からＬＲＵ方式に切り替えることができる。従って、図１０（ａ）〜（ｃ）を用いて上述した優先順位方式のみを行なう場合とは異なり、優先度の高いキャッシュがキャッシュライン４０を占めないようにリプレース方式を切り替えることができるため、キャッシュヒット率の向上を実現することができる。また、キャッシュライン全体を有効に使用することができる。さらに、特定のステータスを持つキャッシュの数がある閾値を超えた場合に、ＬＲＵ方式か優先順位方式かのリプレース方式を切り替える上述の如き既知の手法とは異なり、特定のステータスを持つキャッシュの数に関係なく、確実にカウンタ５３におけるリプレースの実行回数がカウントアップされる。従って、特定のステータスを持つキャッシュの数が閾値をいつまでも超えないことによるキャッシュヒット率の低下を抑制することができる。
【０１１３】
また、本実施形態の一例としてのキャッシュメモリ装置３のキャッシュ制御部５によれば、切替部５４１により、カウント値で示されるリプレース回数が所定の閾値“ｘ”に達した場合に、リプレース方式が切り替えられる。また、上述の如くカウンタ５３により、キャッシュライン４０毎のリプレース回数が計数される。
これにより、特定のステータスを持つキャッシュの数がある閾値を超えた場合にリプレース方式を切り替える上述の如き既知の手法とは異なり、例えば、優先順位方式によるリプレース回数が所定の閾値“ｘ”に達した場合に、確実に他のリプレース方式（例えばＬＲＵ方式）に切り替えることができる。すなわち、例えば、リプレース回数が所定の閾値“ｘ”までは優先順位方式によるリプレースを行ない、所定の閾値“ｘ”に達した場合にＬＲＵ方式によるリプレースに切り替えるといった制御が可能となる。
【０１１４】
従って、リプレース回数が所定の閾値に達した場合に、例えば優先順位方式からＬＲＵ方式に確実に切り替えられるため、優先順位の高いキャッシュであるが時間的に古いものが残らず、キャッシュの時間的局所性の観点から、キャッシュヒット率の向上を実現することができる。
また、優先順位方式によって実質的にエントリ数が少なくなっていても、ＬＲＵ方式に切り替えられることで、優先順位の低いキャッシュ種が連続してキャッシュメモリに格納される対象になった場合に、優先順位の高いキャッシュであるが時間的に古いものがリプレース対象となる。従って、リプレース回数が所定の閾値に達した場合、つまり所定の閾値“ｘ”を境に、優先順位方式により実質的に減少したエントリ数を、ＬＲＵ方式により実質的に増加させることができる。
【０１１５】
さらに、本実施形態の一例としてのキャッシュメモリ装置３のキャッシュ制御部５によれば、所定の閾値“ｘ”を決定する閾値決定部５５がさらに備えられる。また、閾値決定部５５により、所定の閾値“ｘ”を変化させてキャッシュヒット率が算出され、算出されたキャッシュヒット率に基づいて、所定の閾値“ｘ”が決定される。
これにより、キャッシュメモリ４において設定される所定の閾値“ｘ”の値を、キャッシュライン４０について最適な値とすることができ、キャッシュヒット率の向上を実現することができる。
【０１１６】
また、本実施形態の一例としてのキャッシュメモリ装置３のキャッシュ制御部５によれば、閾値決定部５５により、所定の閾値“ｘ”を変化させてキャッシュライン４０毎のキャッシュヒット率が算出され、算出された各キャッシュヒット率に基づいて、キャッシュライン４０毎に所定の閾値“ｘ”が決定される。
これにより、キャッシュライン４０によって格納されるキャッシュの種類に偏りが生じ、特定の種類のキャッシュが、あるキャッシュライン４０内に偏って格納されていても、キャッシュライン４０毎にキャッシュヒット率が算出され、所定の閾値“ｘ”が設定される。すなわち、閾値決定部５５により、キャッシュライン４０に格納されるキャッシュの種類の偏りに応じて、キャッシュライン４０毎に柔軟に所定の閾値“ｘ”が設定される。従って、キャッシュヒット率の向上を実現することができる。
【０１１７】
さらに、本実施形態の一例としてのキャッシュメモリ装置３のキャッシュ制御部５によれば、カウンタ５３により、カウント値で示されるリプレース回数が所定の数、例えばキャッシュライン４０におけるＷＡＹの数と等しくなった場合に、リプレース回数が０にリセットされる。
これにより、所定の閾値“ｘ”は、カウンタ５３のカウント値がとり得る範囲内の値、例えば、本実施形態においては、０〜ｎ−１のうちの任意の値となる。
【０１１８】
一方、特定のステータスを持つキャッシュの数がある閾値を超えた場合に、リプレース方式を切り替える上述の如き既知の手法では、閾値の設定値は、理論上キャッシュラインの数だけ存在し、ＣＰＵのキャッシュメモリが年々大容量となってきている現在は最適なヒット率となる閾値を設定することは容易ではない。
従って、上述のように、本実施形態の一例としてのキャッシュメモリ装置３のキャッシュ制御部５によれば、特定のステータスを持つキャッシュの数がある閾値を超えた場合に、リプレース方式を切り替える上述の如き既知の手法よりも容易に、最適な所定の閾値を決定することができる。
【０１１９】
〔２〕第１変形例
上述した本実施形態においては、リプレース方式として、優先順位方式及びＬＲＵ方式を採用して説明したが、これに限定されず、ラウンドロビン方式やランダム方式など、既知のリプレース方式を採用することができる。
例えば、キャッシュメモリ装置３は、切替部５４１により、所定の閾値に応じて優先順位方式とラウンドロビン方式或いはランダム方式とが切り替えられるように構成されても良い。また、キャッシュメモリ装置３は、複数（例えば３つ）の所定の閾値“０”、“ｘ１”、及び“ｘ２”を用いて、切替部５４１により、カウント値が０〜ｘ１−１の場合は第１のリプレース方式、ｘ１〜ｘ２−１の場合は第２のリプレース方式、ｘ２〜ｎ−１の場合は第３のリプレース方式が選択されるように構成されても良い。
【０１２０】
なお、３つのリプレース方式を切り替える場合、所定の閾値“ｘ１”及び“ｘ２”の値は、閾値決定部５５により、上述した図７若しくは後述する図９に示すフローチャートに従って、順に決定されても良いし、システムサービスプロセッサ等の外部設定ノードにより、決定されても良い。
以下、本第１変形例における、閾値決定部５５により所定の閾値“ｘ１”及び“ｘ２”が決定された場合の、リプレース対象ＷＡＹ選択部５４による第１〜第３のリプレース方式の切り替え処理について説明する。
【０１２１】
図８は、本実施形態の変形例としてのリプレース対象ＷＡＹ選択部５４の処理を説明するためのフローチャートである。
はじめに、リプレース対象ＷＡＹ選択部５４が処理部５１からリプレース通知を受けると、切替部５４１により、カウンタ５３のカウント値と、所定の閾値“ｘ１”、“ｘ２”とが比較される（ステップＴ１）。
【０１２２】
なお、以下、図８に示すフローチャートにおけるカウント値は、カウンタ５３において選択されているリプレース対象のキャッシュライン４０に対応するものであり、所定の閾値“ｘ１”、“ｘ２”は、リプレース対象のキャッシュライン４０に対応するものである。また、所定の閾値には、“ｘ１”＜“ｘ２”の関係があるものとする。
切替部５４１による比較の結果、カウント値が所定の閾値“ｘ１”未満であった場合（ステップＴ１の「カウント値＜所定の閾値ｘ１」ルート）、切替部５４１により、第１のリプレース方式を示す情報がブロック選択部５４２に出力される。
【０１２３】
ブロック選択部５４２に第１のリプレース方式を示す情報が入力されると、ブロック選択部５４２により、第１のリプレース方式によるリプレース対象のＷＡＹの選択が行なわれ（ステップＴ２）、選択されたＷＡＹを示す情報が処理部５１に出力される。
一方、ステップＴ１の切替部５４１による比較の結果、カウント値が所定の閾値“ｘ１”以上であり、且つ、所定の閾値“ｘ２”未満であった場合（ステップＴ１の「カウント値≧所定の閾値ｘ１  且つ  カウント値＜所定の閾値ｘ２」ルート参照）、切替部５４１により、第２のリプレース方式を示す情報がブロック選択部５４２に出力される。
【０１２４】
ブロック選択部５４２に第２のリプレース方式を示す情報が入力されると、ブロック選択部５４２により、第２のリプレース方式によるリプレース対象のＷＡＹの選択が行なわれ（ステップＴ３）、選択されたＷＡＹを示す情報が処理部５１に出力される。
また、切替部５４１による比較の結果、カウント値が所定の閾値“ｘ２”以上であった場合（ステップＴ１の「カウント値≧所定の閾値ｘ２」ルート）、切替部５４１により、第３のリプレース方式を示す情報がブロック選択部５４２に出力される。
【０１２５】
ブロック選択部５４２に第３のリプレース方式を示す情報が入力されると、ブロック選択部５４２により、第３のリプレース方式によるリプレース対象のＷＡＹの選択が行なわれ（ステップＴ４）、選択されたＷＡＹを示す情報が処理部５１に出力される。
ステップＴ２〜ステップＴ４のいずれかにおいて、ブロック選択部５４２によりリプレース対象のＷＡＹが選択されると、リプレース対象ＷＡＹ選択部５４により、カウンタ５３のカウント値が判定され、カウント値がｎ−１未満であるか否かが判断される（ステップＴ５）。
【０１２６】
カウント値がＷＡＹの数−１、つまりｎ−１未満であった場合（ステップＴ５のＹｅｓルート）、リプレース対象ＷＡＹ選択部５４により、当該カウント値に１が加算され（ステップＴ６）、リプレース対象ＷＡＹ選択部５４の処理が終了する。
一方、カウント値がＷＡＹの数−１、つまりｎ−１と等しい場合（ステップＴ５のＮｏルート）、リプレース対象ＷＡＹ選択部５４により、当該カウント値が０にリセットされ（ステップＴ７）、リプレース対象ＷＡＹ選択部５４の処理が終了する。
【０１２７】
このように、本第１変形例としてのキャッシュメモリ装置３のキャッシュ制御部５によれば、本実施形態と同様の効果が得られるほか、優先順位方式及びＬＲＵ方式に限定されず、リプレース対象ＷＡＹ選択部５４によって他のリプレース方式を切り替えることができる。また、３つ以上のリプレース方式をリプレース対象ＷＡＹ選択部５４によって切り替えることができるため、使用態様に応じた所定の閾値“ｘ１”、“ｘ２”の設定により、最適なリプレース方式を選択することができ、キャッシュヒット率の向上を実現することができる。
【０１２８】
〔３〕第２変形例
上述した本実施形態及び第１変形例においては、閾値決定部５５による所定の閾値“ｘ”の決定は、図７に示すフローチャートに従っていたが、これに限定されず、例えば、図９に示すフローチャートに従って行なわれても良い。
以下、本第２変形例における、閾値決定部５５による所定の閾値“ｘ”の決定処理について説明する。
【０１２９】
図９は、本実施形態の変形例としての閾値決定部５５の処理を説明するためのフローチャートである。
はじめに、閾値決定部５５により、所定の閾値“ｘ”に初期値０が設定されるとともに、計測時間Ｔが設定される（ステップＴ１１）。
ここで、初期値０とは、カウンタ５３のカウント値がとり得る範囲内の値のうちの、最小の値であり、本実施形態においては、カウンタ５３のカウント値がとり得る０〜ｎ−１の範囲内の値のうちの、最小の値０である。
【０１３０】
また、計測時間Ｔは、図７を参照して説明したものと同様である。
次に、閾値決定部５５により、（ｘ）ｍａｘに０が設定され、ｘｍａｘにＮｕｌｌが設定されるとともに、最大のｘの値Ｘｎが設定される（ステップＴ１２）。
なお、（ｘ）ｍａｘとは、最大のキャッシュヒット率である。また、ｘｍａｘとは、最大のキャッシュヒット率が得られたときの所定の閾値“ｘ”の値である。さらに、Ｘｎとは、カウンタ５３のカウント値がとり得る範囲内の値のうちの、最大の値であり、本実施形態においては、カウンタ５３のカウント値がとり得る０〜ｎ−１の範囲内の値のうちの、最大の値ｎ−１である。
【０１３１】
そして、閾値決定部５５により、所定の閾値“ｘ”についての処理部５１からのヒット／ミスの情報が計測時間Ｔの間計測され、所定の閾値“ｘ”についてのキャッシュヒット率が計算される（ステップＴ１３）。
なお、キャッシュヒット率は、図７を参照しながら既述の如く、例えば、計測時間Ｔにおけるヒット数から計測時間Ｔにおけるヒット数及びミス数を除算することにより求められる。
【０１３２】
また、図９における「キャッシュヒット率計算（ｘ）」の文言は、所定の閾値“ｘ”についてのキャッシュヒット率が、上述の如く計算されることを示す。
ステップＴ１３において、所定の閾値“ｘ”についてのキャッシュヒット率が計算されると、閾値決定部５５により、キャッシュヒット率（ｘ）と、最大のキャッシュヒット率（ｘ）ｍａｘとが比較され、（ｘ）が（ｘ）ｍａｘよりも大きいか否かが判断される（ステップＴ１４）。
【０１３３】
以下、所定の閾値を括弧で括った（ｘ）は、所定の閾値“ｘ”についてのキャッシュヒット率を示すものとする。
キャッシュヒット率の比較により、（ｘ）が（ｘ）ｍａｘよりも大きい場合（ステップＴ１４のＹｅｓルート）、閾値決定部５５により、最大のキャッシュヒット率（ｘ）ｍａｘに（ｘ）が設定され、ｘｍａｘにｘが設定される（ステップＴ１５）。
【０１３４】
すなわち、（ｘ）が（ｘ）ｍａｘよりも大きい場合、閾値決定部５５により、（ｘ）が最大のキャッシュヒット率であると判断され、（ｘ）ｍａｘが（ｘ）の値に更新されるとともに、ｘｍａｘが、最大のキャッシュヒット率（ｘ）が得られたときの所定の閾値“ｘ”に更新される。
そして、閾値決定部５５により、ｘがＸｎと等しいか否かが判断され（ステップＴ１６）、ｘ＝Ｘｎであった場合（ステップＴ１６のＹｅｓルート）、閾値決定部５５により、ｘｍａｘの値が所定の閾値“ｘ”に設定され（ステップＴ１７）、閾値決定部５５による処理が終了する。
【０１３５】
すなわち、ｘ＝Ｘｎであった場合、閾値決定部５５により、カウンタ５３のカウント値がとり得る範囲内の全ての値に所定の閾値“ｘ”の値を設定し、キャッシュヒット率の比較が行なわれたと判断され、最終的にｘｍａｘに設定されている値が、所定の閾値“ｘ”に設定される。
一方、ステップＴ１６におけるｘがＸｎと等しいか否かの判断において、ｘ＝Ｘｎではなかった場合（ステップＴ１６のＮｏルート）、閾値決定部５５により、ｘに１が加算（インクリメント）され（ステップＴ１８）、ステップＴ１３の処理に移行する。
【０１３６】
また、ステップＴ１４におけるキャッシュヒット率の比較により、（ｘ）が（ｘ）ｍａｘよりも大きくなかった場合（ステップＴ１４のＮｏルート）、閾値決定部５５により、ステップＴ１５の処理をスキップされ、ステップＴ１６の処理に移行する。
上述のように、本第２変形例における閾値決定部５５によっても、図７を用いて説明した場合と同様に、キャッシュヒット率を算出する処理及び所定の閾値を決定する処理が実行され、所定の閾値“ｘ”が決定される。
【０１３７】
すなわち、本第２変形例における閾値決定部５５によるキャッシュヒット率を算出する処理も、図７を用いて説明した場合と同様に、所定の閾値“ｘ”を所定の時間毎に変化させ、変化させた所定の閾値“ｘ”を切替部５４１に設定すべく出力されることにより行なわれる。そして、変化させた所定の閾値“ｘ”に基づいて切替部５４１によりリプレース方式が切り替えられる状態において、処理部５１から出力されるヒット／ミスの情報に基づいて、所定の閾値毎にキャッシュヒット率を算出することにより行なわれる。
【０１３８】
また、本第２変形例における閾値決定部５５による所定の閾値“ｘ”を決定する処理も、図７を用いて説明した場合と同様に、複数のキャッシュヒット率の中から最大のキャッシュヒット率を選択し、最大のキャッシュヒット率が算出されたときの所定の閾値“ｘ”を、切替部５４１に設定すべき所定の閾値“ｘ”として決定することにより行なわれる。
なお、上述したステップＴ１１〜ステップＴ１８の処理も、図７に示すステップＳ１１〜ステップＳ２２の処理と同様に、閾値決定部５５により、キャッシュライン４０毎に個別に所定の閾値を決定すべく、キャッシュライン４０毎に独立して行なわれても良いし、キャッシュメモリ４全体で１つの所定の閾値を決定すべく行なわれても良い。
【０１３９】
また、キャッシュライン４０毎に個別に所定の閾値が決定される場合、上述したステップＴ１１〜ステップＴ１８の処理は、キャッシュライン４０毎に並行して実施されても良いし、例えばキャッシュライン４０−１から４０−ｍまで１ラインずつ順に実施されても良い。
なお、キャッシュライン４０毎に個別に所定の閾値が決定される場合、閾値決定部５５は、比較部５１１からヒット／ミスの情報とともに入力される、当該ヒット／ミスが発生したキャッシュライン４０の情報に基づいて、ヒット／ミスの情報を集計するキャッシュライン４０を特定することができる。
【０１４０】
また、上述したステップＴ１１〜ステップＴ１８の処理は、情報処理装置１の起動時、所定のタイミング、または所定の間隔で、閾値決定部５５により実行される。
上述のように、本第２変形例としての閾値決定部５５によれば、カウンタ５３のカウント値がとり得る範囲内のうちの最小の値から最大の値まで、所定の閾値“ｘ”がインクリメントされ、その都度キャッシュヒット率が計算される。そして、閾値決定部５５により、最大のキャッシュヒット率及びそのときの“ｘ”の値が、（ｘ）ｍａｘ及びｘｍａｘとして記憶されるため、カウンタ５３のカウント値がとり得る範囲内について、確実に、所定の閾値“ｘ”を決定することができる。
【０１４１】
なお、ステップＴ１１において所定の閾値“ｘ”に設定する初期値を、カウンタ５３のカウント値がとり得る範囲内の値のうちの、最大の値、つまり、本実施形態においては、ｎ−１としても良い。なお、この場合、ステップＴ１２において設定されるＸｎは、カウンタ５３のカウント値がとり得る範囲内の値のうちの、最小の値、つまり、本実施形態においては、０とする。また、ステップＴ１８においては、閾値決定部５５により、ｘから１が減算（デクリメント）される。
【０１４２】
このように、本第２変形例としてのキャッシュメモリ装置３のキャッシュ制御部５によれば、本実施形態及び第１実施形態と同様の効果が得られるほか、カウンタ５３のカウント値がとり得る範囲内の値から、キャッシュヒット率が最大となる値を、所定の閾値“ｘ”として確実に決定することができる。
例えば、ある所定の閾値“ｘ”及びその前後の閾値についてのキャッシュヒット率が、ある所定の閾値“ｘ”について極大を示すものであった場合でも、所定の閾値として設定可能な範囲内において、他にキャッシュヒット率が最大となる所定の閾値が存在する場合がある。この場合でも、本第２変形例としての閾値決定部５５によれば、極大値を所定の閾値“ｘ”に決定せずに、所定の閾値として設定可能な範囲内を全て検証し、最大となる値を所定の閾値に決定することができる。従って、閾値決定部５５により、最適な所定の閾値を決定することができ、キャッシュヒット率の向上を実現することができる。
【０１４３】
〔４〕その他
以上、本発明の好ましい実施形態及び変形例について詳述したが、本発明は、かかる特定の実施形態及び変形例に限定されるものではなく、本発明の趣旨を逸脱しない範囲内において、種々の変形、変更して実施することができる。
例えば、図２〜図４に示す切替部５４１は、リプレース対象ＷＡＹ選択部５４から分離して、カウンタ５３とリプレース対象ＷＡＹ選択部５４との間に備えられても良い。
【０１４４】
また、本実施形態及び本変形例の一例としてのキャッシュメモリ装置３は、セットアソシアティブ方式を採用するものとして説明したが、これに限定されるものではなく、例えば、フルアソシアティブ方式を採用するものであっても良い。
例えば、キャッシュメモリ装置３がフルアソシアティブ方式を採用する場合、複数のエントリ（キャッシュライン）からリプレース対象のエントリを選択する処理に、上述の如きリプレース対象ＷＡＹ選択部５４による、リプレース対象のＷＡＹを選択する処理を適用すれば良い。すなわち、本実施形態及び本変形例において説明した、１つのキャッシュラインにおける複数のＷＡＹを、フルアソシアティブ方式のキャッシュメモリにおける複数のエントリに置き換えることにより、キャッシュメモリ装置３をフルアソシアティブ方式に適用することができる。
【０１４５】
なお、閾値決定部５５としての機能を実現するためのプログラム（閾値決定プログラム）は、例えばフレキシブルディスク，ＣＤ（ＣＤ−ＲＯＭ，ＣＤ−Ｒ，ＣＤ−ＲＷ等），ＤＶＤ（ＤＶＤ−ＲＯＭ，ＤＶＤ−ＲＡＭ，ＤＶＤ−Ｒ，ＤＶＤ＋Ｒ，ＤＶＤ−ＲＷ，ＤＶＤ＋ＲＷ，ＨＤ  ＤＶＤ等），ブルーレイディスク，磁気ディスク，光ディスク，光磁気ディスク等の、コンピュータ読取可能な記録媒体に記録された形態で提供される。そして、コンピュータはその記録媒体からプログラムを読み取って内部記憶装置または外部記憶装置に転送し格納して用いる。また、そのプログラムを、例えば磁気ディスク，光ディスク，光磁気ディスク等の記憶装置（記録媒体）に記録しておき、その記憶装置から通信回線を介してコンピュータに提供するようにしても良い。
【０１４６】
閾値決定部５５としての機能を実現する際には、内部記憶装置（本実施形態ではメモリ６又はＨＤＤ等のＩ／Ｏ装置７）に格納されたプログラムがコンピュータのマイクロプロセッサ（本実施形態ではＣＰＵ２）によって実行される。このとき、記録媒体に記録されたプログラムをコンピュータが読み取って実行するようにしても良い。また、閾値決定部５５としての機能を実現する際には、外部設定ノードの記憶装置に格納されたプログラムがコンピュータのマイクロプロセッサ（本実施形態では例えばシステムサービスプロセッサ）によって実行されても良い。
【０１４７】
なお、本実施形態において、コンピュータとは、ハードウェアとオペレーティングシステムとを含む概念であり、オペレーティングシステムの制御の下で動作するハードウェアを意味している。また、オペレーティングシステムが不要でアプリケーションプログラム単独でハードウェアを動作させるような場合には、そのハードウェア自体がコンピュータに相当する。ハードウェアは、少なくとも、ＣＰＵ等のマイクロプロセッサと、記録媒体に記録されたコンピュータプログラムを読み取るための手段とをそなえており、本実施形態においては、情報処理装置１がコンピュータとしての機能を有しているのである。
【図１】
2012095957.tif 000003
【図２】
2012095957.tif 000004
【図３】
2012095957.tif 000005
【図４】
2012095957.tif 000006
【図５】
2012095957.tif 000007
【図６】
2012095957.tif 000008
【図７】
2012095957.tif 000009
【図８】
2012095957.tif 000010
【図９】
2012095957.tif 000011
【図１０】
2012095957.tif 000012
【手続補正書】
【提出日】平成25年8月7日(2013.8.7)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】００８５
【補正方法】変更
【補正の内容】
【００８５】
上述のように、閾値決定部５５によれば、“ｘ”の値を動的に変化させることにより、優先順位方式とＬＲＵ方式との２つの最適比率を動的に設定することが可能となる。
なお、上述したように、所定の閾値には、“０”及び“ｘ”があり、閾値決定部５５は、所定の閾値“ｘ”の値を決定する。
一方、所定の閾値“０”については、閾値決定部５５により切替部５４１に出力されなくても良い。つまり、本実施形態においては、切替部５４１は、カウント値がｘ未満の場合、及びｘ以上の場合のいずれかの場合に応じて、リプレース方式を切り替える。従って、カウント値がｘ以上であるｎ−１から、ｘ未満である０に変わったとき、必然的に切替部５４１によりリプレース方式が切り替えられる。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０１４２
【補正方法】変更
【補正の内容】
【０１４２】
このように、本第２変形例としてのキャッシュメモリ装置３のキャッシュ制御部５によれば、本実施形態及び第１変形例と同様の効果が得られるほか、カウンタ５３のカウント値がとり得る範囲内の値から、キャッシュヒット率が最大となる値を、所定の閾値“ｘ”として確実に決定することができる。
例えば、ある所定の閾値“ｘ”及びその前後の閾値についてのキャッシュヒット率が、ある所定の閾値“ｘ”について極大を示すものであった場合でも、所定の閾値として設定可能な範囲内において、他にキャッシュヒット率が最大となる所定の閾値が存在する場合がある。この場合でも、本第２変形例としての閾値決定部５５によれば、極大値を所定の閾値“ｘ”に決定せずに、所定の閾値として設定可能な範囲内を全て検証し、最大となる値を所定の閾値に決定することができる。従って、閾値決定部５５により、最適な所定の閾値を決定することができ、キャッシュヒット率の向上を実現することができる。
【手続補正書】
【提出日】平成25年12月25日(2013.12.25)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数のエントリを備え、前記エントリ毎に、データと前記データの状態を表すステータスとを含む少なくとも１のブロックを備えるキャッシュメモリと、
前記キャッシュメモリの各ブロックに対して前記データのリプレースを行なう制御部とを備え、
前記制御部は、
前記各エントリにおいて前記データがリプレースされたリプレース回数を、前記エントリ毎に計数するカウンタと、
前記リプレース回数に応じて、前記データのリプレース対象のブロックを選択するリプレース方式を切り替える切替部とを備えることを特徴とする、キャッシュメモリ装置。
【請求項２】
前記切替部は、前記リプレース回数が所定の閾値に達した場合に、前記リプレース方式を切り替えることを特徴とする、請求項１記載のキャッシュメモリ装置。
【請求項３】
前記制御部は、
前記所定の閾値を決定する閾値決定部をさらに備え、
前記切替部は、前記閾値決定部によって決定された所定の閾値を用いて、前記リプレース方式を切り替えることを特徴とする、請求項２記載のキャッシュメモリ装置。
【請求項４】
前記閾値決定部は、前記所定の閾値を変化させてキャッシュヒット率を算出し、算出されたキャッシュヒット率に基づいて、前記所定の閾値を決定することを特徴とする、請求項３記載のキャッシュメモリ装置。
【請求項５】
前記閾値決定部は、前記所定の閾値を変化させて前記エントリ毎のキャッシュヒット率を算出し、算出された各キャッシュヒット率に基づいて、前記エントリ毎に前記所定の閾値を決定することを特徴とする、請求項４記載のキャッシュメモリ装置。
【請求項６】
前記カウンタは、前記リプレース回数が所定の数と等しくなった場合に、前記リプレース回数をリセットすることを特徴とする、請求項１〜５のいずれか１項記載のキャッシュメモリ装置。
【請求項７】
前記カウンタは、前記リプレース回数が前記エントリにおけるブロックの数と等しくなった場合に、前記リプレース回数をリセットすることを特徴とする、請求項６記載のキャッシュメモリ装置。
【請求項８】
前記リプレース方式は、前記ステータスに応じた優先度に基づいて、前記リプレースを行なうリプレース対象のブロックを選択する優先順位方式と、前記リプレース対象のブロックとして、前記エントリにおいて最も古くアクセスされたブロックを選択するＬＲＵ（Least Recently Used）方式とを含むことを特徴とする、請求項１〜７のいずれか１項記載のキャッシュメモリ装置。
【請求項９】
前記制御部は、
前記エントリ毎に、前記ブロックがアクセスされたアクセス順序を管理するアクセス順序管理部をさらに備え、
前記アクセス順序管理部が管理するアクセス順序に基づいて、前記ＬＲＵ方式によるリプレースを実行することを特徴とする、請求項８記載のキャッシュメモリ装置。
【請求項１０】
前記制御部は、
リプレースを行なうリプレース対象のエントリに対応するリプレース方式を前記切替部から取得し、取得したリプレース方式に基づいて、前記リプレース対象のエントリにおけるリプレース対象のブロックを選択するブロック選択部と、
前記リプレース対象のエントリを決定し、当該エントリを示す情報を前記ブロック選択部に出力するとともに、前記ブロック選択部によって選択された前記リプレース対象のブロックに対して、前記データのリプレースを行なう処理部とをさらに備えることを特徴とする、請求項１〜９のいずれか１項記載のキャッシュメモリ装置。
【請求項１１】
セットアソシアティブ方式を採用することを特徴とする、請求項１〜１０のいずれか１項記載のキャッシュメモリ装置。
【請求項１２】
複数のエントリを備え、前記エントリ毎に、データと前記データの状態を表すステータスとを含む少なくとも１のブロックを備えるキャッシュメモリの各ブロックに対して前記データのリプレースを行なう制御装置であって、
前記各エントリにおいて前記データがリプレースされたリプレース回数を、前記エントリ毎に計数するカウンタと、
前記リプレース回数に応じて、前記データのリプレース対象のブロックを選択するリプレース方式を切り替える切替部とを備えることを特徴とする、キャッシュメモリの制御装置。
【請求項１３】
前記切替部は、前記リプレース回数が所定の閾値に達した場合に、前記リプレース方式を切り替えることを特徴とする、請求項１２記載のキャッシュメモリの制御装置。
【請求項１４】
前記所定の閾値を決定する閾値決定部をさらに備え、
前記切替部は、前記閾値決定部によって決定された所定の閾値を用いて、前記リプレース方式を切り替えることを特徴とする、請求項１３記載のキャッシュメモリの制御装置。
【請求項１５】
請求項１〜１１のいずれか１項に記載のキャッシュメモリ装置を備えることを特徴とする、情報処理装置。
【請求項１６】
複数のエントリを備え、前記エントリ毎に、データと前記データの状態を表すステータスとを含む少なくとも１のブロックを備えるキャッシュメモリの各ブロックに対して前記データのリプレースを行なう制御方法であって、
前記各エントリにおいて前記データがリプレースされたリプレース回数を、前記エントリ毎に計数し、
前記計数したリプレース回数に応じて、前記データのリプレース対象のブロックを選択するリプレース方式を切り替えることを特徴とする、キャッシュメモリの制御方法。
【請求項１７】
複数のエントリを備え、前記エントリ毎に、データと前記データの状態を表すステータスとを含む少なくとも１のブロックを備えるキャッシュメモリと、前記キャッシュメモリの各ブロックに対して前記データのリプレースを行なう制御部とを備え、前記制御部は、前記各エントリにおいて前記データがリプレースされたリプレース回数を、前記エントリ毎に計数するカウンタと、前記リプレース回数に応じて、前記データのリプレース方式を切り替える切替部とを備えるとともに、前記切替部は、前記リプレース回数が所定の閾値に達した場合に、前記リプレース方式を切り替えるキャッシュメモリ装置において、
前記所定の閾値を変化させ、変化させた所定の閾値毎にキャッシュヒット率を算出し、
算出された複数のキャッシュヒット率に基づいて、前記所定の閾値を決定する、
処理をコンピュータに実行させる、キャッシュメモリ装置の閾値決定プログラム。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００２３
【補正方法】変更
【補正の内容】
【００２３】
本件のキャッシュメモリ装置は、複数のエントリを備え、前記エントリ毎に、データと前記データの状態を表すステータスとを含む少なくとも１のブロックを備えるキャッシュメモリと、前記キャッシュメモリの各ブロックに対して前記データのリプレースを行なう制御部とを備え、前記制御部は、前記各エントリにおいて前記データがリプレースされたリプレース回数を、前記エントリ毎に計数するカウンタと、前記リプレース回数に応じて、前記データのリプレース対象のブロックを選択するリプレース方式を切り替える切替部とを備えるものである。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００２４
【補正方法】変更
【補正の内容】
【００２４】
また、本件のキャッシュメモリの制御装置は、複数のエントリを備え、前記エントリ毎に、データと前記データの状態を表すステータスとを含む少なくとも１のブロックを備えるキャッシュメモリの各ブロックに対して前記データのリプレースを行なう制御装置であって、前記各エントリにおいて前記データがリプレースされたリプレース回数を、前記エントリ毎に計数するカウンタと、前記リプレース回数に応じて、前記データのリプレース対象のブロックを選択するリプレース方式を切り替える切替部とを備えるものである。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００２５
【補正方法】変更
【補正の内容】
【００２５】
さらに、本件の情報処理装置は、上述したキャッシュメモリ装置を備えるものである。
また、本件のキャッシュメモリの制御方法は、複数のエントリを備え、前記エントリ毎に、データと前記データの状態を表すステータスとを含む少なくとも１のブロックを備えるキャッシュメモリの各ブロックに対して前記データのリプレースを行なうリプレース方法であって、前記各エントリにおいて前記データがリプレースされたリプレース回数を、前記エントリ毎に計数し、前記計数したリプレース回数に応じて、前記データのリプレース対象のブロックを選択するリプレース方式を切り替えるものである。
【国際調査報告】
2012095957.tif 000013
2012095957.tif 000014
2012095957.tif 000015
2012095957.tif 000016