JP5494834B2 - キャッシュメモリ装置,キャッシュメモリの制御装置,情報処理装置,キャッシュメモリの制御方法,及びキャッシュメモリ装置の閾値決定プログラム - Google Patents

キャッシュメモリ装置,キャッシュメモリの制御装置,情報処理装置,キャッシュメモリの制御方法,及びキャッシュメモリ装置の閾値決定プログラム Download PDF

Info

Publication number
JP5494834B2
JP5494834B2 JP2012552560A JP2012552560A JP5494834B2 JP 5494834 B2 JP5494834 B2 JP 5494834B2 JP 2012552560 A JP2012552560 A JP 2012552560A JP 2012552560 A JP2012552560 A JP 2012552560A JP 5494834 B2 JP5494834 B2 JP 5494834B2
Authority
JP
Japan
Prior art keywords
cache
replacement
cache memory
predetermined threshold
unit
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.)
Active
Application number
JP2012552560A
Other languages
English (en)
Other versions
JPWO2012095957A1 (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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Application granted granted Critical
Publication of JP5494834B2 publication Critical patent/JP5494834B2/ja
Publication of JPWO2012095957A1 publication Critical patent/JPWO2012095957A1/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/128Replacement control using replacement algorithms adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1021Hit rate improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/50Control mechanisms for virtual memory, cache or TLB
    • G06F2212/502Control mechanisms for virtual memory, cache or TLB using adaptive policy

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

本件は、キャッシュメモリ装置,キャッシュメモリの制御装置,情報処理装置,キャッシュメモリの制御方法,及びキャッシュメモリ装置の閾値決定プログラムに関する。
サーバやパーソナルコンピュータ等の情報処理装置において、プロセッサによる主記憶装置からのデータの取得は、キャッシュ(キャッシュメモリ装置)を介して行なわれることがある。
キャッシュとは、CPU(Central Processing Unit)等のプロセッサがRAM(Random Access Memory)等の主記憶装置からデータを取得するのにかかる時間を低減するために、プロセッサと主記憶装置との間に備えられる。キャッシュは、キャッシュメモリと、キャッシュメモリに対する制御を行なう制御部とを備える。また、一般的に、キャッシュメモリは、主記憶装置よりも高速で小規模なメモリである。
プロセッサから主記憶装置へ要求のあったデータがキャッシュにヒットした場合、プロセッサは、キャッシュからデータを取得することができ、主記憶装置からデータを取得せずに済むため、高速な処理が実現できる。
なお、キャッシュは、データをキャッシュライン単位で格納する。
キャッシュラインとは、キャッシュに格納するデータを管理する単位であり、例えば、主記憶装置のうちの所定の領域(サイズ)のデータが、1つのキャッシュラインに格納される。キャッシュラインに格納されるデータには、当該キャッシュラインに格納されているデータの主記憶装置上の位置に対応するタグが対応付けられる。
キャッシュは、プロセッサからのアドレスに基づいて、複数のキャッシュラインのうちのタグが格納されるタグ部を検索する。そして、キャッシュは、プロセッサからの要求のうちのタグを示す情報に該当するタグを発見すると、当該タグに対応付けられたデータをプロセッサに渡す。
一方、キャッシュは、該当するタグを発見しない場合は、プロセッサからのアドレスに基づいて、主記憶装置からデータを取得し、取得したデータをプロセッサに渡すとともに、当該データを、複数のキャッシュラインのうちの任意のキャッシュラインに、タグと対応付けて格納(リプレース)する。
キャッシュによるリプレースでは、例えば、以下のリプレース方式に従って、複数のキャッシュラインのうちから任意のキャッシュライン、つまりリプレース対象のキャッシュラインを選択することが知られている。
一例として、キャッシュには、アクセスされたアドレスは近い将来使用される可能性があるという時間的局所性があり、この性質を用いたアルゴリズムとして、LRU方式(Least Recently Used)が知られている。LRU方式は、最近最もアクセスされなかったキャッシュラインをリプレース対象とすることで、プロセッサが要求するデータがキャッシュにヒットする確率(キャッシュヒット率)を向上させる方式である。
他にキャッシュヒット率を上げる方式として、キャッシュ性能向上に寄与する特定のキャッシュを優先してキャッシュする優先順位方式などがある。つまり、特定の優先順位の高いキャッシュがリプレース対象にならないように優先順位の高いキャッシュをキャッシュロックする方式である。
優先順位方式では、キャッシュメモリに格納されたデータ毎に、データの状態を表すステータスの情報が対応付けられており、このステータスに応じて、キャッシュ性能向上に寄与する特定のキャッシュ(タグ,データ,及びステータス)を優先してキャッシュする。
また、キャッシュにおけるデータの格納構造として、フルアソシアティブ方式やセットアソシアティブ方式が挙げられる。
フルアソシアティブ方式では、データをどのキャッシュラインにも格納することができ、プロセッサから与えられた入力アドレスは、上述の如く全てのタグ部と比較される。フルアソシアティブ方式においては、プロセッサからの入力アドレスを全てのタグ部と比較するため、キャッシュのライン数が増えてくると比較回路の論理段数が大きくなり、リプレース対象のキャッシュラインを選択するLRUなどの論理回路も複雑になる。
近年、キャッシュライン数の増加に伴い、上記の理由によりフルアソシアティブ方式は採用され難く、セットアソシアティブ方式が多く採用されている。セットアソシアティブ方式は、キャッシュメモリの複数のブロックに対応する方式であり、同一のエントリ(キャッシュライン)に異なるアドレスのデータを複数格納することができる。すなわち、例えば、主記憶装置のうちの複数の所定の領域(サイズ)のデータが、それぞれブロック毎にキャッシュメモリに格納され、複数のブロックは、1つのキャッシュラインとして管理される。
セットアソシアティブ方式においては、キャッシュは、プロセッサからの要求(入力アドレス)のうちのエントリを示す情報(インデックス)に基づいて、複数のキャッシュラインから1つのキャッシュラインを絞り込む。そして、キャッシュは、プロセッサからの要求(入力アドレス)のうちのタグを示す情報に基づいて、絞り込んだキャッシュライン内の複数のブロックにおけるタグ部を検索する。キャッシュは、プロセッサからの要求のうちのタグを示す情報に該当するタグを発見すると、当該タグに対応付けられたデータをプロセッサに渡す。
一方、キャッシュは、該当するタグを発見しない場合は、プロセッサからのアドレスに基づいて、主記憶装置からデータを取得し、取得したデータをプロセッサに渡すとともに、当該データを、絞り込んだキャッシュラインのうちの任意のブロックに、タグと対応付けて格納(リプレース)する。なお、任意のブロックの選択は、キャッシュメモリ装置により、上述したリプレース方式に従って、絞り込んだキャッシュライン内の複数のブロックから、リプレース対象のブロックが選択されることにより行なわれる。
上述のように、セットアソシアティブ方式において、プロセッサから与えられたアドレスは、キャッシュの1ラインにあるn個のブロック(nWAY)と比較される。キャッシュライン内の複数のブロックに格納されるデータには、当該ブロックに格納されているデータの主記憶装置上の位置に対応するタグが対応付けられる。
上述の如きセットアソシアティブ方式(nWAYセットアソシアティブ方式)によれば、キャッシュライン数が増加しても、プロセッサからの入力アドレスに基づいて、1つに絞り込んだキャッシュライン内のブロックのタグ部と比較するため、比較回路の論理段数を抑えることができる。また、リプレース対象のブロック(WAY)を選択するLRUなどの論理回路もフルアソシアティブ方式と比較して簡単な構成とすることができる。
なお、フルアソシアティブ方式のキャッシュメモリ装置において、排他不一致(dirty exclusive)など特定のステータスを持つキャッシュの数がある閾値を超えた場合に、前述されたLRU方式か優先順位方式かのリプレース方式を切り替える手法が知られている。
特開平10−27133号公報
ところで、上述した優先順位方式では、性能向上に寄与する特定のキャッシュを優先してキャッシュに格納すると、優先度の高いキャッシュ種類がキャッシュラインを占めるようになり、かえって性能が悪化する虞がある。
図10は、8つのWAYを持つキャッシュラインに格納されるキャッシュを示す図であり、図10(a)は、キャッシュラインに格納される3種類の優先度のキャッシュを示す図である。また、図10(b)は、図10(a)に示すキャッシュラインに、優先度の高いキャッシュが格納された場合を示す図であり、図10(c)は、図10(b)に示すキャッシュラインに、優先度の高いキャッシュが格納された場合を示す図である。
図10(a)〜(c)に示すように、キャッシュラインが備える8つのWAYには、H(High),M(Middle),L(Low)の優先度を持つキャッシュがそれぞれ格納されている。これらの優先度を持つキャッシュについて、キャッシュメモリ装置は、H>M>Lの順番でキャッシュを優先するものとする。
なお、図10(a)〜図10(c)に示すH,M,Lの優先度は、WAY毎のデータに対応付けられたステータスに応じて決定されるものである。
図10(a)に示すキャッシュラインにおいて、WAY1〜5には優先度Hのキャッシュが格納されており、WAY6には優先度Mのキャッシュが格納されており、WAY7〜8には優先度Lのキャッシュが格納されている。
次に、図10(a)に示すキャッシュラインのいずれかのWAYに、優先度Hのキャッシュを格納(リプレース)する場合、図10(b)に示すように、キャッシュする優先度の低い、優先度LのWAYが優先的にリプレース対象となる。図10(b)に示す例においては、WAY7に優先度Hのキャッシュがリプレースされる。
また、図10(b)に示すキャッシュラインのいずれかのWAYに、さらに優先度Hのキャッシュを格納(リプレース)する場合、図10(c)に示すように、キャッシュする優先度の低い、優先度LのWAYが優先的にリプレース対象となる。図10(c)に示す例においては、WAY8に優先度Hのキャッシュがリプレースされる。
従って、図10(a)〜(c)を用いて上述の如く、優先順位方式では、性能向上に寄与する特定のキャッシュを優先してキャッシュに格納すると、優先度の高いキャッシュ種類がキャッシュラインを占めるようになり、かえって性能が悪化する虞がある。
また、上述した優先順位方式では、キャッシュラインを特定のキャッシュ種類を優先するように割り当てると、例えば、優先順位の高いキャッシュであるが時間的に古いものがいつまでもキャッシュラインに残ってしまい、キャッシュライン全体を有効に使用することができなくなるといった問題がある。
さらに、上述の如く、特定のステータスを持つキャッシュの数がある閾値を超えた場合に、LRU方式か優先順位方式かのリプレース方式を切り替える手法が知られているが、この手法は、プロセッサからの入力アドレスを全キャッシュラインと比較するフルアソシアティブ方式において採用されているものである。
一方、セットアソシアティブ方式では、複数のブロックを1つのキャッシュラインとして管理するため、キャッシュラインによって格納されるキャッシュの種類に偏りが生じ、特定の種類のキャッシュが、あるキャッシュライン内に偏って格納されることがある。
従って、上述の如き手法をセットアソシアティブ方式に適用しようとすると、全てのキャッシュラインに同一の閾値を用いているため、キャッシュラインによってキャッシュの種類に偏りが生じるセットアソシアティブ方式では、必ずしも性能の向上につながるわけではない。
また、上述の如き手法では、キャッシュは、特定のステータスを持つキャッシュの数が閾値をいつまでも超えないと優先順位方式のリプレースのみを実行し、優先順位の高いキャッシュであるが時間的に古いものがいつまでもキャッシュラインに残ってしまう。すなわち、上述の如き手法では、特定のステータスを持つキャッシュの数が閾値をいつまでも超えないと、キャッシュの時間的局所性の観点から、キャッシュヒット率の低下を招くという問題がある。
さらに、上述の如き手法における閾値によるリプレース方式の切り替えでは、特定のステータスを持つキャッシュの数が閾値を超えない場合に、優先順位の低いキャッシュ種が連続してキャッシュメモリに格納される対象になった場合、優先順位の高いキャッシュエントリ(ブロック)はリプレース対象とならない。従って、実質的にエントリ数が少なくなり、優先順位の低いキャッシュ種が連続してキャッシュメモリに格納される対象になった場合などに、性能の低下が予想される。
上述の点に鑑み、本件の目的の1つは、キャッシュメモリ装置におけるキャッシュヒット率の向上を実現することである。
なお、前記目的に限らず、後述する発明を実施するための形態に示す各構成により導かれる作用効果であって、従来の技術によっては得られない作用効果を奏することも本発明の他の目的の1つとして位置付けることができる。
本件のキャッシュメモリ装置は、複数のエントリを備え、前記エントリ毎に、データと前記データの状態を表すステータスとを含む少なくとも1のブロックを備えるキャッシュメモリと、前記キャッシュメモリの各ブロックに対して前記データのリプレースを行なう制御部とを備え、前記制御部は、前記各エントリにおいて前記データがリプレースされたリプレース回数を、前記エントリ毎に計数するカウンタと、前記リプレース回数に応じて、前記データのリプレース対象のブロックを選択するリプレース方式を切り替える切替部とを備えるものである。
また、本件のキャッシュメモリの制御装置は、複数のエントリを備え、前記エントリ毎に、データと前記データの状態を表すステータスとを含む少なくとも1のブロックを備えるキャッシュメモリの各ブロックに対して前記データのリプレースを行なう制御装置であって、前記各エントリにおいて前記データがリプレースされたリプレース回数を、前記エントリ毎に計数するカウンタと、前記リプレース回数に応じて、前記データのリプレース対象のブロックを選択するリプレース方式を切り替える切替部とを備えるものである。
さらに、本件の情報処理装置は、上述したキャッシュメモリ装置を備えるものである。
また、本件のキャッシュメモリの制御方法は、複数のエントリを備え、前記エントリ毎に、データと前記データの状態を表すステータスとを含む少なくとも1のブロックを備えるキャッシュメモリの各ブロックに対して前記データのリプレースを行なうリプレース方法であって、前記各エントリにおいて前記データがリプレースされたリプレース回数を、前記エントリ毎に計数し、前記計数したリプレース回数に応じて、前記データのリプレース対象のブロックを選択するリプレース方式を切り替えるものである。
さらに、本件のキャッシュメモリ装置の閾値決定プログラムは、複数のエントリを備え、前記エントリ毎に、データと前記データの状態を表すステータスとを含む少なくとも1のブロックを備えるキャッシュメモリと、前記キャッシュメモリの各ブロックに対して前記データのリプレースを行なう制御部とを備え、前記制御部は、前記各エントリにおいて前記データがリプレースされたリプレース回数を、前記エントリ毎に計数するカウンタと、前記リプレース回数に応じて、前記データのリプレース方式を切り替える切替部とを備えるとともに、前記切替部は、前記リプレース回数が所定の閾値に達した場合に、前記リプレース方式を切り替えるキャッシュメモリ装置において、前記所定の閾値を変化させ、変化させた所定の閾値毎にキャッシュヒット率を算出し、算出された複数のキャッシュヒット率に基づいて、前記所定の閾値を決定する、処理をコンピュータに実行させるものである。
開示の技術によれば、キャッシュメモリ装置におけるキャッシュヒット率の向上を実現することができる。
本実施形態の一例としての情報処理装置のハードウェアの構成例を示す図である。 本実施形態の一例としてのキャッシュメモリ装置の構成例を示す図である。 本実施形態の一例としてのキャッシュメモリ装置によるキャッシュ管理の処理を説明するための図である。 本実施形態の一例としてのキャッシュメモリ装置によるリプレース対象のWAYを選択する処理を説明するための図である。 本実施形態の一例としてのカウント値とWAY選択方式との対応関係を示す図である。 本実施形態の一例としてのリプレース対象WAY選択部の処理を説明するためのフローチャートである。 本実施形態の一例としての閾値決定部の処理を説明するためのフローチャートである。 本実施形態の変形例としてのリプレース対象WAY選択部の処理を説明するためのフローチャートである。 本実施形態の変形例としての閾値決定部の処理を説明するためのフローチャートである。 8つのWAYを持つキャッシュラインに格納されるキャッシュを示す図である。(a)は、キャッシュラインに格納される3種類の優先度のキャッシュを示す図である。(b)は、(a)に示すキャッシュラインに、優先度の高いキャッシュが格納された場合を示す図である。(c)は、(b)に示すキャッシュラインに、優先度の高いキャッシュが格納された場合を示す図である。
1 情報処理装置
2 CPU
21 入力アドレス
3 キャッシュメモリ装置
4 キャッシュメモリ
40,40−1〜40−m キャッシュライン(エントリ)
41 タグ
42 データ
43 ステータス
5 キャッシュ制御部(制御部,制御装置)
51 処理部
511 比較部
512 データ選択部
52 アクセス順序管理部
53 カウンタ
54 リプレース対象WAY選択部
541 切替部
542 ブロック選択部
55 閾値決定部
6 メモリ(主記憶装置)
7 I/O装置
以下、図面を参照して本発明の実施の形態を説明する。
〔1〕一実施形態
〔1−1〕一実施形態の構成
図1は、本実施形態の一例としての情報処理装置1のハードウェアの構成例を示す図である。
図1に示すように、情報処理装置1は、CPU2と、キャッシュメモリ装置3と、DRAM(Dynamic RAM)等のRAMなどのメモリ6と、HDD(Hard Disk Drive)等のI/O(Input/Output)装置7とを備える。
CPU2は、情報処理装置1における種々の制御や演算を行なう演算処理装置であり、例えば、HDD等のI/O装置7に格納されたプログラムをメモリ6に展開して実行することにより、種々の機能を実現する。
キャッシュメモリ装置3は、CPU2とメモリ6との間に備えられ、CPU2とメモリ6との間で転送されるデータ及びそのデータの参照情報を保持する。本実施形態においては、キャッシュメモリ装置3は、nWAYセットアソシアティブ方式を採用するものとして説明する。
メモリ(主記憶装置)6は、種々のデータやプログラムを一時的に格納する記憶領域であって、CPU2がプログラムを実行する際に、データやプログラムを一時的に格納・展開して用いる。なお、情報処理装置1には、メモリ6とキャッシュメモリ装置3との間の入出力制御を行なうメモリコントローラ(図示省略)が備えられても良い。
I/O装置7は、例えば、HDD等の外部装置である。なお、情報処理装置1には、I/O装置7とCPU2との間の入出力制御を行なうI/Oコントローラ(図示省略)が備えられても良い。
図2は、本実施形態の一例としてのnWAYセットアソシアティブ方式を採用するキャッシュメモリ装置3の構成例を示す図である。
また、図3は、本実施形態の一例としてのキャッシュメモリ装置3によるキャッシュ管理の処理を説明するための図である。なお、図3においては、図の簡略化のため、キャッシュ制御部5の一部の構成要素の記載を省略している。
キャッシュメモリ装置3は、キャッシュメモリ4と、キャッシュ制御部5とを備える。
キャッシュメモリ4は、図2に示す如く、複数のキャッシュライン(エントリ)40−1〜40−mを備える。なお、以下、キャッシュラインを示す符号としては、複数のキャッシュラインのうちの1つを特定する必要があるときには符号40−1〜40−mを用いるが、任意のキャッシュラインを指すときには符号40を用いる。
また、キャッシュメモリ4は、キャッシュライン40毎に、タグ41と、タグ41に対応付けられたデータ42と、キャッシュの状態、例えば、データ42の優先順位を表すステータス43とを含む少なくとも1つのWAY(ブロック)を備える。
本実施形態においては、キャッシュメモリ4は、キャッシュライン40−1〜40−m毎に、タグ41、データ42、ステータス43を含むWAY1〜nを備える。
なお、キャッシュメモリ4は、メモリ6よりも高速なメモリであり、キャッシュメモリ4としては、例えば、SRAM(Static RAM)等が挙げられる。
キャッシュ制御部(制御部,制御装置)5は、CPU2からメモリ6への要求(入力アドレス)に応じて、キャッシュメモリ4に対するキャッシュ管理を行ない、得られたデータ42をCPU2に渡す。また、キャッシュ制御部5は、キャッシュメモリ4の各WAYに対してキャッシュのリプレースを行なう。
キャッシュ制御部5は、処理部51と、アクセス順序管理部52と、カウンタ53と、リプレース対象WAY選択部54と、閾値決定部55とを備える。
処理部51は、キャッシュ制御部5におけるキャッシュメモリ4に対するキャッシュ管理を行なうとともに、CPU2及びメモリ6に対するデータの受け渡しを行なう。
また、処理部51は、リプレースを行なうキャッシュライン40を決定し、リプレースが発生することを示すリプレース通知を後述するリプレース対象WAY選択部54に出力するとともに、リプレース対象WAY選択部54によって選択されたリプレース対象のWAYに対して、キャッシュのリプレースを行なう。
なお、以下、キャッシュのリプレースとは、リプレース対象のWAYに格納されたデータ42を、必要に応じてメモリ6へ書き込む処理(ライトバック)、及びメモリ6から読み出した、キャッシュに格納されるタグ41、データ42、及びステータス43を、リプレース対象のWAYに書き込む処理を含むものとする。
なお、ライトバックの処理は、リプレース対象のWAYに格納されたデータ42のステータス43に応じて、行なわれない場合がある。ライトバックの処理が行なわれない状況としては、例えば、リプレース対象のWAYに格納されたデータ42が他のCPUのキャッシュにも格納されている場合(Share;共有状態)や、当該WAYが無効である場合(Invalid;無効状態)等が挙げられる。
さらに、処理部51は、比較部511と、データ選択部512とを備える。
比較部511は、CPU2からの要求(入力アドレス21)のうちのタグ、つまり1のタグ41を示す情報と、1のキャッシュライン40内の複数のWAY1〜nにおけるタグ41とを比較する。
そして、比較部511は、入力アドレス21のうちのタグに該当するタグ41がWAY1〜nのうちのいずれかのWAYのタグ41にあった場合(ヒットした場合)に、当該タグ41に対応するWAYをデータ選択部512に出力する。
また、比較部511は、ヒットした場合、及びヒットしなかった場合(ミスの場合)のいずれの場合においても、ヒット/ミスの情報を、比較を行なったキャッシュライン40を示す情報とともに後述する閾値決定部55に出力する。
データ選択部512は、比較部511から入力されたヒットしたWAYの情報に基づいて、1のキャッシュライン40内の当該ヒットしたWAYから、データ42を選択する。そして、データ選択部512は、選択したデータ42をCPU2へ出力する。
具体的には、図3に示す如く、キャッシュメモリ4では、CPU2からの要求(入力アドレス21)のうちのインデックス、つまり1のキャッシュライン40を示すエントリ情報に基づいて、複数のキャッシュライン40−1〜40−mから1のキャッシュライン40が絞り込まれる(選択される)。なお、入力アドレス21のうちのインデックスには、例えば、キャッシュライン40−1〜40−mの通し番号、つまりキャッシュライン40−1〜40−mのうちの、先頭から何番目のキャッシュライン40かを示す番号(値)が設定される。
処理部51は、比較部511により、入力アドレス21のうちのタグ、つまり1のタグ41を示す情報に基づいて、絞り込まれたキャッシュライン40内の複数のWAY1〜nを検索する。
そして、処理部51は、比較部511により、入力アドレス21のうちのタグに該当するタグ41を、絞り込まれたキャッシュライン40内の複数のWAY1〜nにおけるタグ41から発見(ヒット)した場合に、データ選択部512により、当該タグ41に対応付けられたデータ42をCPU2に渡す。
一方、処理部51は、入力アドレス21のうちのタグに該当するタグ41を発見しない(ミスした)場合には、CPU2からの入力アドレス21に基づいて、メモリ6からデータを取得し、取得したデータをCPU2に渡す。また、このとき処理部51は、当該データを、絞り込まれたキャッシュライン40のうちの任意のWAYに、対応するタグ41及び当該データ42の優先順位を表すステータス43とともに格納(リプレース)する。
また、処理部51は、入力アドレス21のうちのタグに該当するタグ41を発見しない(ミスした)場合には、絞り込まれたキャッシュライン40のうちの任意のWAYをリプレース対象のWAYとして選択するために、リプレースが発生することを示すリプレース通知を、後述するリプレース対象WAY選択部54に出力する。
なお、このリプレース通知は、絞り込まれたリプレース対象のキャッシュライン40の情報を含んでも良い。
リプレース対象WAY選択部54からリプレース対象のWAYが入力されると、処理部51は、リプレース対象のWAYに対してキャッシュのリプレースを実行する。
なお、入力アドレス21のうちのタグに該当するタグ41を発見(ヒット)し、当該タグ41に対応するWAYをアクセス(参照)した場合には、処理部51は、アクセスしたWAYについて、後述するアクセス順序管理部52が管理するアクセス順序(LRU情報)を更新する。
また、入力アドレス21のうちのタグに該当するタグ41を発見せず、絞り込まれたキャッシュライン40のうちのリプレース対象のWAYにアクセス(リプレース)を行なった場合にも、処理部51は、アクセスしたWAYについて、後述するアクセス順序管理部52が管理するアクセス順序(LRU情報)を更新する。
なお、図3においては、図の簡略化のため、処理部51からキャッシュメモリ4に対する、CPU2にデータ42を出力するための参照の信号線、並びにリプレース対象のWAYにリプレースを行なうための参照及び書き込みの信号線は、省略している。
また、図3においては、図の簡略化のため、処理部51からアクセス順序管理部52に対する、アクセス順序(LRU情報)の更新の信号線は、省略している。
図4は、本実施形態の一例としてのキャッシュメモリ装置3によるリプレース対象のWAYを選択する処理を説明するための図である。
なお、図4においては、図の簡略化のため、キャッシュメモリ4の一部の構成要素及びキャッシュ制御部5の一部の構成要素の記載を省略している。
アクセス順序管理部52は、キャッシュのリプレース対象のWAYを選択するための情報として、キャッシュライン40毎に、WAY1〜nがアクセスされたアクセス順序(LRU情報)を格納し管理する。
ここで、LRU情報は、キャッシュライン40内のWAY1〜nがアクセスされた順序を示す情報である。LRU情報は、WAY1〜nが処理部51によってヒットされ、データが参照(取得)された場合や、処理部51によってリプレースされた場合など、WAY1〜nのキャッシュがアクセス(参照、変更)された場合に、処理部51によって更新される。
アクセス順序管理部52では、図4に示す如く、CPU2からの要求(入力アドレス21)のうちのインデックス、つまり1のキャッシュライン40を示すエントリ情報によって、当該1のキャッシュライン40に対応するLRU情報が選択される。
処理部51は、入力アドレス21のうちのインデックスによって指定されたキャッシュライン40において、WAY1〜nのうちのいずれかのWAYのキャッシュにアクセス(参照、変更)した場合に、アクセス順序管理部52において上述の如く選択されているLRU情報を更新する。
なお、アクセス順序管理部52において上述の如く選択されるLRU情報は、後述するリプレース対象WAY選択部54によるリプレース対象のWAYの選択の際に参照される。
LRU情報としては、例えば、キャッシュライン40においてアクセスされたキャッシュのWAYの番号(1〜n)を、最近のものから順に先頭から並べたものとすることができる。最近のものから順に先頭から並べた場合、処理部51によるLRU情報の更新は、新たにアクセスされたWAYの番号を、LRU情報のうちの先頭に移動されることにより行なうことができる。
なお、LRU情報は上述したものに限定されず、例えば、WAY1〜n毎に、最後にアクセスのあった時刻をタイムスタンプとして格納したものであっても良い。WAY1〜n毎のタイムスタンプを格納する場合、LRU情報を用いる後述するリプレース対象WAY選択部54においては、LRU情報内のタイムスタンプに基づいて、最も古い(過去の)時刻にアクセスされたWAYを選択する処理を行なうことが好ましい。
カウンタ53は、キャッシュのリプレース対象のWAYを選択するための情報として、キャッシュライン40毎にカウント値を格納し管理している。また、後述するリプレース対象WAY選択部54においてリプレース対象のWAYが選択される度に、リプレース対象のキャッシュライン40に対応するカウント値が、リプレース対象WAY選択部54によってカウントアップされる。
つまり、カウンタ53は、各キャッシュライン40においてキャッシュがリプレースされるリプレース回数を、キャッシュライン40毎に計数する。
なお、処理部51によってリプレース対象のWAYが実際にリプレースされるタイミングで、リプレース対象のキャッシュライン40に対応するカウント値が、処理部51によってカウントアップされても良い。
また、カウンタ53では、図4に示す如く、CPU2からの要求(入力アドレス21)のうちのインデックス、つまり1のキャッシュライン40を示すエントリ情報によって、当該1のキャッシュライン40に対応するカウント値が選択される。
リプレース対象WAY選択部54又は処理部51は、リプレース対象のWAYを選択する度又はリプレース対象のWAYをリプレースする度に、カウンタ53において上述の如く選択されているカウント値をカウントアップする。
なお、図4においては、図の簡略化のため、リプレース対象WAY選択部54又は処理部51からカウンタ53に対する、カウント値のカウントアップを行なうための信号線は、省略している。
なお、カウンタ53において選択されるカウント値は、リプレース対象WAY選択部54によるリプレース対象のWAYの選択の際に参照される。
また、カウンタ53は、リプレース回数であるカウント値が所定の数と等しくなった場合、例えば、本実施形態においては、図5に示す如く、カウント値がキャッシュライン40におけるWAYの数nと等しくなった場合に、カウント値を0にリセットする。
すなわち、本実施形態におけるカウンタ53は、0〜n−1の値を繰り返すカウンタである。
なお、所定の数は、上述したものに限定されず、キャッシュライン40におけるWAYの数nよりも小さな数或いは大きな数としても良い。
リプレース対象WAY選択部54は、処理部51からリプレース通知を入力されると、カウンタ53に格納されているカウント値に基づいてリプレース方式を選択し、選択したリプレース方式に従って、リプレース対象のWAYを選択する。
リプレース対象WAY選択部54は、切替部541と、ブロック選択部542とを備える。
切替部541は、カウンタ53のカウント値(リプレース回数)を参照し、参照したカウント値に応じて、キャッシュのリプレース対象のWAYを選択するリプレース方式を切り替える。具体的には、切替部541は、後述する閾値決定部55によって決定される所定の閾値を用いて、カウント値が所定の閾値に達した場合に、リプレース方式を切り替える。
そして、切替部541は、図4に示す如く、カウンタ53のカウント値(リプレース回数)に応じたリプレース方式を示す情報を、ブロック選択部542に出力する。
なお、リプレース対象WAY選択部54が処理部51からのリプレース通知を入力されるとき、上述の如く、カウンタ53では、CPU2からの入力アドレス21によって、1の(この場合はリプレース対象の)キャッシュライン40に対応するカウント値が選択されている。
従って、処理部51からトリガとなるリプレース通知がリプレース対象WAY選択部54に入力されたとき、切替部541は、カウンタ53において選択されているカウント値を参照することで、リプレース対象のキャッシュライン40に対応するカウント値を取得することができる。
ブロック選択部542は、切替部541からのリプレース方式を示す情報に基づいて、リプレース対象のWAYを選択し、選択したリプレース対象のWAYを示す情報を処理部51に出力する。
図5は、本実施形態の一例としてのカウント値とWAY選択方式(リプレース方式)との対応関係を示す図である。
本実施形態においては、リプレース方式には、優先順位方式とLRU方式とが含まれるが、これに限定されず、キャッシュメモリ装置3の使用態様に応じて、既知の種々の方式を含むことができる。
図5に示すように、本実施形態において、切替部541により用いられる所定の閾値は、“0”及び“x”である。
すなわち、本実施形態におけるリプレース方式は、カウント値が所定の閾値である“x”に達した場合に、切替部541により、優先順位方式(第1のリプレース方式)からLRU方式(第2のリプレース方式)に切り替えられる。
一方、カウント値が所定の閾値である“0”に達した場合、つまり、カウント値がキャッシュライン40におけるWAYの数nに達し、カウンタ53により0にリセットされたとき、切替部541により、LRU方式(第2のリプレース方式)から優先順位方式(第1のリプレース方式)に切り替えられる。
従って、切替部541は、図5に示す如く、カウンタ53のカウント値(リプレース回数)に応じて、カウント値が0〜x−1の間、つまりカウント値がx未満の場合には、キャッシュのリプレース方式として優先順位方式を示す情報を、ブロック選択部542に出力する。
また、切替部541は、カウント値がx〜n−1の間、つまりカウント値がx以上の場合には、キャッシュのリプレース方式としてLRU方式を示す情報を、ブロック選択部542に出力する。
そして、ブロック選択部542は、切替部541から取得したリプレース方式に基づいて、リプレース対象のキャッシュライン40におけるリプレース対象のWAYを選択し、選択したリプレース対象のWAYを示す情報を処理部51に出力する。
具体的には、リプレース対象のキャッシュライン40について、切替部541によりリプレース方式のうちの優先順位方式が選択された場合、ブロック選択部542は、リプレース対象のキャッシュライン40が備えるWAY1〜nのうちのステータス43に基づいて、リプレース対象のWAYを選択する。
以下、リプレース対象WAY選択部54によって実行されるリプレース対象のWAYの選択方式(リプレース方式)のうちの、優先順位方式について説明する。
リプレース方式のうちの優先順位方式は、リプレース対象WAY選択部54(ブロック選択部542)が、リプレース対象のキャッシュライン40が備えるWAY1〜nのうちのステータス43に応じた優先度に基づいて、リプレース対象のWAYを選択するものである。
なお、ブロック選択部542が切替部541から優先順位方式を示す情報を入力されたとき、上述の如く、キャッシュメモリ4では、CPU2からの入力アドレス21によって、1の(この場合はリプレース対象の)キャッシュライン40に対応するWAY1〜nが選択されている。
従って、ブロック選択部542が切替部541から優先順位方式を示す情報を入力されたとき、ブロック選択部542は、キャッシュメモリ4において選択されているWAY1〜nの各ステータス43を参照することで、リプレース対象のキャッシュライン40に対応するステータス43を取得することができる。
以下、ブロック選択部542が、リプレース対象のキャッシュライン40について、切替部541から優先順位方式を示す情報を入力された場合について説明する。
ここで、各キャッシュ、つまり各WAY1〜nに格納されるステータス43とは、例えばマルチプロセッサシステムで使用されるMESIプロトコルに代表されるものである。
MESIプロトコルとは、M(Modified;変更)、E(Exclusive;排他)、S(Shared;共有)、及びI(Invalid;無効)の4つのキャッシュステータスを採用するプロトコルである。
以下、特定のプログラムやシステム構成、または実際のキャッシュヒット率測定などにより、上述したMESIプロトコルの各キャッシュステータスについて、例えば、キャッシュの優先度M、E、Sの順番で優先的にキャッシュを行なうと、キャッシュヒット率が向上することが分かっているものとする。
なお、キャッシュステータスがI(無効)のWAYについては、そのWAYのデータが無効であることを示すため、キャッシュの優先度は設定していない。
ステータス43として上述の如きMESIプロトコルを採用する場合、ブロック選択部542は、キャッシュの優先度の高いステータス43のキャッシュを優先的に各WAY1〜nに格納するように、リプレース対象のWAYを選択する。
換言すれば、ブロック選択部542は、リプレース対象のキャッシュライン40について、キャッシュの優先度の低いステータス43のキャッシュを優先的にリプレース対象のWAYとして選択する。つまり、ブロック選択部542は、各WAY1〜nのステータス43と、上述したキャッシュの優先度とは逆の、リプレース対象の優先度S、E、Mの順番とに基づいて、リプレース対象のWAYを選択する。
なお、ブロック選択部542は、キャッシュステータスがI(無効)のWAY、つまり使用されていない(無駄になっている)WAYを優先的にリプレース対象のWAYとして選択しても良い。
つまり、キャッシュステータスがI(無効)のWAYを優先的にリプレース対象のWAYとする場合、ブロック選択部542は、各WAY1〜nのステータス43と、リプレース対象の優先度I、S、E、Mの順番とに基づいて、リプレース対象のWAYを選択しても良い。
なお、リプレース対象WAY選択部54は、リプレース対象のキャッシュライン40において、同一の優先度のキャッシュ(WAY)からリプレース対象のWAYを選択する場合は、同一優先度のキャッシュの中から後述するLRU方式によりリプレース対象のWAYを選択する。
例えば、リプレース対象WAY選択部54は、リプレース対象のキャッシュライン40内に、優先的にリプレース対象となるSのステータス43を持つWAYが複数含まれる場合、当該Sのステータス43を持つWAYの中からLRU方式によりリプレース対象のWAYを選択する。
上述のように、リプレース対象WAY選択部54によって、ステータス43に応じた上述の如き優先度に基づいて、リプレース対象のWAYが選択されることにより、キャッシュヒット率の向上を実現することができる。
なお、上述の如く、本実施形態においては、ステータス43としてMESIプロトコルのキャッシュステータスを採用したが、これに限定されるものではなく、他のプロトコルのキャッシュステータスを採用しても良い。また、データの利用頻度に応じて変化する値等、例えば、データの利用頻度に応じたキャッシュの優先度を表わす値などをステータス43として各WAY1〜nに格納しても良い。
次に、リプレース対象WAY選択部54によって実行されるリプレース対象のWAYの選択方式(リプレース方式)のうちの、LRU方式について説明する。
リプレース対象のキャッシュライン40について、切替部541によりリプレース方式のうちのLRU方式が選択された場合、ブロック選択部542は、リプレース対象のWAYとして、リプレース対象のキャッシュライン40において最も古くアクセスされたWAYを選択する。
つまり、ブロック選択部542は、切替部541からリプレース方式のうちのLRU方式を示す情報を入力されると、アクセス順序管理部52において選択されているLRU情報に基づいて、リプレース対象のキャッシュライン40において最も古くアクセスされたWAYをリプレース対象のWAYとして選択する。
なお、ブロック選択部542が切替部541からLRU方式を示す情報を入力されたとき、上述の如く、アクセス順序管理部52では、CPU2からの入力アドレス21によって、1の(この場合はリプレース対象の)キャッシュライン40に対応するLRU情報が選択されている。
従って、ブロック選択部542が切替部541からLRU方式を示す情報を入力されたとき、ブロック選択部542は、アクセス順序管理部52において選択されているLRU情報を参照することで、リプレース対象のキャッシュライン40に対応するLRU情報を取得することができる。
なお、上述の如く、アクセス順序管理部52が格納するLRU情報が、WAY1〜n毎のタイムスタンプである場合には、リプレース対象WAY選択部54(ブロック選択部542)は、アクセス順序管理部52から取得するLRU情報内のタイムスタンプの中から最も古い(過去の)時刻を探すことが好ましい。これにより、リプレース対象WAY選択部54(ブロック選択部542)は、最も古い(過去の)時刻のタイムスタンプに対応するWAYをリプレース対象のWAYとして選択することができる。
なお、リプレース対象WAY選択部54は、処理部51から、リプレース通知とともに絞り込まれたリプレース対象のキャッシュライン40の情報が入力されても良い。この場合、リプレース対象WAY選択部54は、選択されているカウント値やステータス情報43或いはLRU情報が、入力されたリプレース対象のキャッシュライン40に対応するものであるか否かを確認することができる。
または、リプレース対象WAY選択部54は、入力されたリプレース対象のキャッシュライン40の情報に基づいて、カウント値と、ステータス情報43若しくはLRU情報とを取得しても良い。つまり、リプレース対象WAY選択部54は、CPU2からの入力アドレス21に基づいて選択されているカウント値やステータス情報43或いはLRU情報を用いず、処理部51から入力されたリプレース対象のキャッシュライン40の情報に基づいて、これらの情報を取得しても良い。
次に、上述の如く構成されたキャッシュメモリ装置3におけるリプレース対象WAY選択部54による処理を、図6のフローチャートを参照しながら説明する。
図6は、本実施形態の一例としてのリプレース対象WAY選択部54の処理を説明するためのフローチャートである。
はじめに、リプレース対象WAY選択部54が処理部51からリプレース通知を受けると、切替部541により、カウンタ53のカウント値と、所定の閾値“x”とが比較され、カウント値が所定の閾値“x”未満であるか否かが判断される(ステップS1)。なお、以下、図6に示すフローチャートにおけるカウント値は、カウンタ53において選択されているリプレース対象のキャッシュライン40に対応するものであり、所定の閾値“x”は、リプレース対象のキャッシュライン40に対応するものである。
切替部541による比較の結果、カウント値が所定の閾値“x”未満であった場合(ステップS1のYesルート)、切替部541により、優先順位方式を示す情報がブロック選択部542に出力される。
ブロック選択部542に優先順位方式を示す情報が入力されると、ブロック選択部542により、上述した優先順位方式によるリプレース対象のWAYの選択が行なわれ(ステップS2)、選択されたWAYを示す情報が処理部51に出力される。
一方、ステップS1の切替部541による比較の結果、カウント値が所定の閾値“x”以上であった場合(ステップS1のNoルート参照)、切替部541により、LRU方式を示す情報がブロック選択部542に出力される。
ブロック選択部542にLRU方式を示す情報が入力されると、ブロック選択部542により、上述したLRU方式によるリプレース対象のWAYの選択が行なわれ(ステップS3)、選択されたWAYを示す情報が処理部51に出力される。
ステップS2又はステップS3において、ブロック選択部542によりリプレース対象のWAYが選択されると、リプレース対象WAY選択部54により、カウンタ53のカウント値が判定され、カウント値がn−1未満であるか否かが判断される(ステップS4)。
カウント値がWAYの数−1、つまりn−1未満であった場合(ステップS4のYesルート)、リプレース対象WAY選択部54により、当該カウント値に1が加算され(ステップS5)、リプレース対象WAY選択部54の処理が終了する。
一方、カウント値がWAYの数−1、つまりn−1と等しい場合(ステップS4のNoルート)、リプレース対象WAY選択部54により、当該カウント値が0にリセットされ(ステップS6)、リプレース対象WAY選択部54の処理が終了する。
閾値決定部55は、リプレース方式の切り替えの判断基準となる所定の閾値を決定し、決定した所定の閾値を切替部541へ出力する。
本実施形態においては、閾値決定部55は、所定の閾値“x”について、“x”の値を動的に変化させてキャッシュヒット率を算出し、算出されたキャッシュヒット率に基づいて所定の閾値を決定し、切替部541へ出力する。
具体的には、閾値決定部55は、“x”の値を所定の時間毎に変化させ、変化させた値を切替部541に出力するとともに、処理部51の比較部511から出力されるヒット/ミスの情報に基づいて、“x”の値毎にキャッシュヒット率を算出する。そして、閾値決定部55は、キャッシュヒット率が最大になったときの“x”の値を所定の閾値として決定し、切替部541へ出力する。
上述のように、閾値決定部55によれば、“x”の値を動的に変化させることにより、優先順位方式とLRU方式との2つの最適比率を動的に設定することが可能となる。
なお、上述したように、所定の閾値には、“0”及び“x”があり、閾値決定部55は、所定の閾値“x”の値を決定する。
一方、所定の閾値“0”については、閾値決定部55により切替部541に出力されなくても良い。つまり、本実施形態においては、切替部541は、カウント値がx未満の場合、及びx以上の場合のいずれかの場合に応じて、リプレース方式を切り替える。従って、カウント値がx以上であるn−1から、x未満である0に変わったとき、必然的に切替部541によりリプレース方式が切り替えられる。
上述のことから、閾値決定部55は、所定の閾値“0”及び“x”のうちの“x”の値を決定し、決定した所定の閾値を切替部541へ出力するだけで良い。
なお、閾値決定部55は、所定の閾値をキャッシュライン40毎に設定することができる。つまり、閾値決定部55は、所定の閾値を変化させてキャッシュライン40毎のキャッシュヒット率を算出し、算出された各キャッシュヒット率に基づいて、キャッシュライン40毎に所定の閾値を決定することができる。この場合、所定の閾値をキャッシュライン40毎に柔軟に設定することができるため、特定の種類のキャッシュが、あるキャッシュライン40内に偏って格納されたとしても、キャッシュヒット率が最大になる閾値を設定することができる。
また、閾値決定部55は、キャッシュメモリ4全体で1つの所定の閾値を設定しても良い。
閾値決定部55によって決定された所定の閾値は、切替部541又は閾値決定部55のいずれかに備えられた図示しないレジスタ等に保持されても良い。
なお、閾値決定部55としての機能は、ハードウェアにより実現されても良いし、例えば、システムサービスプロセッサなどの外部設定ノードによって実現されても良い。
また、閾値決定部55を設けずに、所定の閾値を固定として予め切替部541に設定されても良いし、上述した外部設定ノードによって任意のタイミングで切替部541に設定されても良い。
上述のように、リプレース対象WAY選択部54により、キャッシュステータスに設けられた優先順位に応じてリプレース対象のWAYを選択する優先順位方式と、キャッシュステータスに関係なくアクセスされたのが最も古いWAYを選択するLRU方式とが併用される。そして、リプレース対象WAY選択部54により実行されるリプレース方式の比率が、閾値決定部55によって最適な比率に設定されることにより、キャッシュヒット率の向上が実現される。
次に、上述の如く構成されたキャッシュメモリ装置3における閾値決定部55の処理について説明する。
図7は、本実施形態の一例としての閾値決定部55の処理を説明するためのフローチャートである。
はじめに、閾値決定部55により、所定の閾値“x”に初期値Pが設定されるとともに、計測時間Tが設定される(ステップS11)。
ここで、初期値Pとは、カウンタ53のカウント値がとり得る範囲内の任意の値であり、本実施形態においては、0〜n−1の範囲内の任意の値である。
また、計測時間Tとは、所定の閾値“x”を切替部541に出力(設定)した後に、処理部51からのヒット/ミスの情報を計測する時間である。計測時間Tとしては、CPU2からメモリ6へのアクセス頻度や、キャッシュヒット率の計算に用いるヒット/ミスの情報の要求母数等に応じて、例えば、数秒程度の時間を設定しても良いし、数分〜数時間程度の時間を設定しても良い。
次に、閾値決定部55により、所定の閾値“x”についての処理部51からのヒット/ミスの情報が計測時間Tの間計測され、所定の閾値“x”についてのキャッシュヒット率が計算される。
なお、キャッシュヒット率は、例えば、計測時間Tにおけるヒット数から計測時間Tにおけるヒット数及びミス数を除算することにより求められる。
また、閾値決定部55により、所定の閾値を“x−1”に変化させた場合、及び“x+1”に変化させた場合の、それぞれのキャッシュヒット率も計算される(ステップS12)。
すなわち、ステップS12においては、所定の閾値“x”についてのキャッシュヒット率の他に、閾値決定部55により、所定の閾値“x−1”についての処理部51からのヒット/ミスの情報が計測時間Tの間計測され、所定の閾値“x−1”についてのキャッシュヒット率も計算される。また、閾値決定部55により、所定の閾値“x+1”についての処理部51からのヒット/ミスの情報が計測時間Tの間計測され、所定の閾値“x+1”についてのキャッシュヒット率も計算される。
なお、ステップS11において、初期値Pを設定された所定の閾値“x”の値が、カウンタ53のカウント値がとり得る範囲内の値のうちの、最小又は最大の値であった場合、ステップS12におけるキャッシュヒット率の計算は、一部が実行されない。
例えば、所定の閾値“x”の値が、本実施形態におけるカウンタ53のカウント値がとり得る範囲内0〜n−1の値のうちの、最小の値0であった場合には、ステップS12において、キャッシュヒット率(x−1)の計算は実行されない。同様に、所定の閾値“x”の値が、本実施形態におけるカウンタ53のカウント値がとり得る範囲内0〜n−1の値のうちの、最大の値n−1であった場合には、ステップS12において、キャッシュヒット率(x+1)の計算は実行されない。
ここで、図7における「キャッシュヒット率計算(x)」の文言は、所定の閾値“x”についてのキャッシュヒット率が、上述の如く計算されることを示す。括弧内がx−1又はx+1の場合も同様に、所定の閾値“x−1”又は“x+1”についてのキャッシュヒット率が、上述の如く計算されることを示す。
ステップS12において、所定の閾値“x”、“x−1”、“x+1”についてのキャッシュヒット率がそれぞれ計算されると、閾値決定部55により、これらのキャッシュヒット率(x)、(x−1)、(x+1)が比較される(ステップS13)。
なお、上述の如く、所定の閾値“x”の値が、カウンタ53のカウント値がとり得る範囲内の値のうちの、最小又は最大の値であった場合には、ステップS12において求められたキャッシュヒット率のみを用いて、閾値決定部55による比較が実行される。
以下、所定の閾値を括弧で括った、(x)、(x−1)、(x+1)は、その所定の閾値についてのキャッシュヒット率を示すものとする。
キャッシュヒット率の比較により、(x)が(x−1)以上、且つ(x+1)以上であった場合(ステップS13の「(x)≧(x−1)且つ(x)≧(x+1)」ルート)、閾値決定部55により、“x”が所定の閾値に決定され(ステップS14)、閾値決定部55による処理が終了する。
すなわち、所定の閾値を“x”とした場合の方が、所定の閾値を“x”の前後の値とした場合よりもキャッシュヒット率が高い場合、つまり、所定の閾値“x”のときキャッシュヒット率が最大になると考えられる場合、所定の閾値を“x”とすることで、優先順位方式及びLRU方式の切り替えの比率が最適比率となる。従って、所定の閾値を“x”とした場合の方が、所定の閾値を“x”の前後の値とした場合よりもキャッシュヒット率が高い場合、閾値決定部55により、“x”が所定の閾値に決定される。
一方、ステップS13において、キャッシュヒット率の比較により、(x)が(x−1)未満であった場合(ステップS13の「(x)<(x−1)」ルート)、閾値決定部55により、所定の閾値“x”から1を減じられる(デクリメント)(ステップS15)。
そして、閾値決定部55により、ステップS15においてデクリメントされた所定の閾値“x”がX0と等しいか否かが判断される(ステップS16)。
なお、X0とは、カウンタ53のカウント値がとり得る範囲内の値のうちの、最小の値であり、本実施形態においては、カウンタ53のカウント値がとり得る0〜n−1の範囲内の値のうちの、最小の値0である。
ステップS16において、所定の閾値“x”がX0と等しいと判断された場合(ステップS16のYesルート)、閾値決定部55により、“x”、つまり、ステップS15においてデクリメントされた値が所定の閾値に決定され(ステップS14)、閾値決定部55による処理が終了する。
すなわち、ステップS16において、所定の閾値“x”がX0と等しいと判断された場合、所定の閾値“x”は、カウンタ53のカウント値がとり得る範囲内の値のうちの、最小の値であるため、現在の“x”未満の値について、キャッシュヒット率を求めることができない。つまり、キャッシュヒット率の大小を比較した結果、ステップS15において変更された“x”の値が、カウンタ53のカウント値がとり得る範囲内の値のうちの、最小の値になったとき、“x”を所定の閾値に決定することで、キャッシュヒット率(x)が最大になるものと考えられる。従って、ステップS16において、閾値決定部55により、所定の閾値“x”がX0と等しいと判断された場合には、現在の“x”の値が所定の閾値に決定され(ステップS14)、閾値決定部55による処理が終了する。
一方、ステップS16において、所定の閾値“x”がX0とは等しくないと判断された場合(ステップS16のNoルート)、閾値決定部55により、所定の閾値“x−1”についてのキャッシュヒット率が、上述の如く計算される(ステップS17)。
なお、ステップS17において計算されるキャッシュヒット率は、ステップS15でデクリメントされた所定の閾値“x”から、さらに1を減じた“x−1”について行なわれる。
ステップS17において、所定の閾値“x−1”についてのキャッシュヒット率が計算されると、閾値決定部55により、キャッシュヒット率(x)と、(x−1)とが比較され、(x)が(x−1)以上であるか否かが判断される(ステップS18)。
キャッシュヒット率の比較により、(x)が(x−1)未満であった場合(ステップS18のNoルート)、ステップS15の処理に戻る。
一方、ステップS18において、キャッシュヒット率の比較により、(x)が(x−1)以上であった場合(ステップS18のYesルート)、閾値決定部55により、“x”、つまり、ステップS15においてデクリメントされた値が所定の閾値に決定され(ステップS14)、閾値決定部55による処理が終了する。
また、ステップS13において、キャッシュヒット率の比較により、(x)が(x+1)未満であった場合(ステップS13の「(x)<(x+1)」ルート)、閾値決定部55により、所定の閾値“x”に1が加算される(インクリメント)(ステップS19)。
そして、閾値決定部55により、ステップS19においてインクリメントされた所定の閾値“x”がXnと等しいか否かが判断される(ステップS20)。
なお、Xnとは、カウンタ53のカウント値がとり得る範囲内の値のうちの、最大の値であり、本実施形態においては、カウンタ53のカウント値がとり得る0〜n−1の範囲内の値のうちの、最大の値n−1である。
ステップS20において、所定の閾値“x”がXnと等しいと判断された場合(ステップS20のYesルート)、閾値決定部55により、“x”、つまり、ステップS19においてインクリメントされた値が所定の閾値に決定され(ステップS14)、閾値決定部55による処理が終了する。
すなわち、ステップS20において、所定の閾値“x”がXnと等しいと判断された場合、所定の閾値“x”は、カウンタ53のカウント値がとり得る範囲内の値のうちの、最大の値であるため、現在の“x”より大きな値について、キャッシュヒット率を求めることができない。つまり、キャッシュヒット率の大小を比較した結果、ステップS19において変更された“x”の値が、カウンタ53のカウント値がとり得る範囲内の値のうちの、最大の値になったとき、“x”を所定の閾値に決定することで、キャッシュヒット率(x)が最大になるものと考えられる。従って、ステップS20において、閾値決定部55により、所定の閾値“x”がXnと等しいと判断された場合には、現在の“x”の値が所定の閾値に決定され(ステップS14)、閾値決定部55による処理が終了する。
一方、ステップS20において、所定の閾値“x”がXnとは等しくないと判断された場合(ステップS20のNoルート)、所定の閾値“x+1”についてのキャッシュヒット率が、上述の如く計算される(ステップS21)。
なお、ステップS21において計算されるキャッシュヒット率は、ステップS19でインクリメントされた所定の閾値“x”に、さらに1を加算した“x+1”について行なわれる。
ステップS21において、所定の閾値“x+1”についてのキャッシュヒット率が計算されると、閾値決定部55により、キャッシュヒット率(x)と、(x+1)とが比較され、(x)が(x+1)以上であるか否かが判断される(ステップS22)。
キャッシュヒット率の比較により、(x)が(x+1)未満であった場合(ステップS22のNoルート)、ステップS19の処理に戻る。
一方、ステップS22において、キャッシュヒット率の比較により、(x)が(x+1)以上であった場合(ステップS22のYesルート)、閾値決定部55により、“x”、つまり、ステップS19においてインクリメントされた値が所定の閾値に決定され(ステップS14)、閾値決定部55による処理が終了する。
なお、上述したステップS13において、キャッシュヒット率の比較により、(x)が(x−1)未満であり、且つ(x+1)未満であった場合には、閾値決定部55により、(x−1)及び(x+1)のうちのキャッシュヒット率が大きい方が選択される。そして、閾値決定部55により、(x−1)が選択された場合には、ステップS15の処理に移行し、(x+1)が選択された場合には、ステップS19の処理に移行する。
上述のように、閾値決定部55は、所定の閾値“x”を変化させ、変化させた所定の閾値毎にキャッシュヒット率を算出し、算出された複数のキャッシュヒット率に基づいて所定の閾値を決定し、切替部541へ出力する。
また、上述のように、閾値決定部55によるキャッシュヒット率を算出する処理は、所定の閾値“x”を所定の時間毎に変化させ、変化させた所定の閾値“x”を切替部541に設定すべく出力されることにより行なわれる。そして、閾値決定部55によるキャッシュヒット率を算出する処理は、変化させた所定の閾値“x”に基づいて切替部541によりリプレース方式が切り替えられる状態において、処理部51から出力されるヒット/ミスの情報に基づいて、所定の閾値毎にキャッシュヒット率を算出することにより行なわれる。
さらに、上述のように、閾値決定部55による所定の閾値“x”を決定する処理は、複数のキャッシュヒット率の中から最大のキャッシュヒット率を選択し、最大のキャッシュヒット率が算出されたときの所定の閾値“x”を、切替部541に設定すべき所定の閾値“x”として決定することにより行なわれる。
なお、上述したステップS11〜ステップS22の処理は、閾値決定部55により、キャッシュライン40毎に個別に所定の閾値を決定すべく、キャッシュライン40毎に独立して行なわれても良いし、キャッシュメモリ4全体で1つの所定の閾値を決定すべく行なわれても良い。
また、キャッシュライン40毎に個別に所定の閾値が決定される場合、上述したステップS11〜ステップS22の処理は、キャッシュライン40毎に並行して実施されても良いし、例えばキャッシュライン40−1から40−mまで1ラインずつ順に実施されても良い。
なお、キャッシュライン40毎に個別に所定の閾値が決定される場合、閾値決定部55は、比較部511からヒット/ミスの情報とともに入力される、当該ヒット/ミスが発生したキャッシュライン40の情報に基づいて、ヒット/ミスの情報を集計するキャッシュライン40を特定することができる。
また、上述したステップS11〜ステップS22の処理は、情報処理装置1の起動時、所定のタイミング、または所定の間隔で、閾値決定部55により実行される。
なお、閾値決定部55により決定された所定の閾値“x”は、次回の閾値決定部55による所定の閾値の決定の際に、初期値Pとして用いられても良い。
このように、本実施形態の一例としてのキャッシュメモリ装置3のキャッシュ制御部5によれば、各キャッシュライン40におけるWAYのリプレース回数を計数するカウンタ53と、カウント値で示されるリプレース回数に応じて、WAYのリプレース方式を切り替える切替部541とが備えられる。
これにより、切替部541によって、リプレース回数に応じて、例えば優先順位方式からLRU方式に切り替えることができる。従って、図10(a)〜(c)を用いて上述した優先順位方式のみを行なう場合とは異なり、優先度の高いキャッシュがキャッシュライン40を占めないようにリプレース方式を切り替えることができるため、キャッシュヒット率の向上を実現することができる。また、キャッシュライン全体を有効に使用することができる。さらに、特定のステータスを持つキャッシュの数がある閾値を超えた場合に、LRU方式か優先順位方式かのリプレース方式を切り替える上述の如き既知の手法とは異なり、特定のステータスを持つキャッシュの数に関係なく、確実にカウンタ53におけるリプレースの実行回数がカウントアップされる。従って、特定のステータスを持つキャッシュの数が閾値をいつまでも超えないことによるキャッシュヒット率の低下を抑制することができる。
また、本実施形態の一例としてのキャッシュメモリ装置3のキャッシュ制御部5によれば、切替部541により、カウント値で示されるリプレース回数が所定の閾値“x”に達した場合に、リプレース方式が切り替えられる。また、上述の如くカウンタ53により、キャッシュライン40毎のリプレース回数が計数される。
これにより、特定のステータスを持つキャッシュの数がある閾値を超えた場合にリプレース方式を切り替える上述の如き既知の手法とは異なり、例えば、優先順位方式によるリプレース回数が所定の閾値“x”に達した場合に、確実に他のリプレース方式(例えばLRU方式)に切り替えることができる。すなわち、例えば、リプレース回数が所定の閾値“x”までは優先順位方式によるリプレースを行ない、所定の閾値“x”に達した場合にLRU方式によるリプレースに切り替えるといった制御が可能となる。
従って、リプレース回数が所定の閾値に達した場合に、例えば優先順位方式からLRU方式に確実に切り替えられるため、優先順位の高いキャッシュであるが時間的に古いものが残らず、キャッシュの時間的局所性の観点から、キャッシュヒット率の向上を実現することができる。
また、優先順位方式によって実質的にエントリ数が少なくなっていても、LRU方式に切り替えられることで、優先順位の低いキャッシュ種が連続してキャッシュメモリに格納される対象になった場合に、優先順位の高いキャッシュであるが時間的に古いものがリプレース対象となる。従って、リプレース回数が所定の閾値に達した場合、つまり所定の閾値“x”を境に、優先順位方式により実質的に減少したエントリ数を、LRU方式により実質的に増加させることができる。
さらに、本実施形態の一例としてのキャッシュメモリ装置3のキャッシュ制御部5によれば、所定の閾値“x”を決定する閾値決定部55がさらに備えられる。また、閾値決定部55により、所定の閾値“x”を変化させてキャッシュヒット率が算出され、算出されたキャッシュヒット率に基づいて、所定の閾値“x”が決定される。
これにより、キャッシュメモリ4において設定される所定の閾値“x”の値を、キャッシュライン40について最適な値とすることができ、キャッシュヒット率の向上を実現することができる。
また、本実施形態の一例としてのキャッシュメモリ装置3のキャッシュ制御部5によれば、閾値決定部55により、所定の閾値“x”を変化させてキャッシュライン40毎のキャッシュヒット率が算出され、算出された各キャッシュヒット率に基づいて、キャッシュライン40毎に所定の閾値“x”が決定される。
これにより、キャッシュライン40によって格納されるキャッシュの種類に偏りが生じ、特定の種類のキャッシュが、あるキャッシュライン40内に偏って格納されていても、キャッシュライン40毎にキャッシュヒット率が算出され、所定の閾値“x”が設定される。すなわち、閾値決定部55により、キャッシュライン40に格納されるキャッシュの種類の偏りに応じて、キャッシュライン40毎に柔軟に所定の閾値“x”が設定される。従って、キャッシュヒット率の向上を実現することができる。
さらに、本実施形態の一例としてのキャッシュメモリ装置3のキャッシュ制御部5によれば、カウンタ53により、カウント値で示されるリプレース回数が所定の数、例えばキャッシュライン40におけるWAYの数と等しくなった場合に、リプレース回数が0にリセットされる。
これにより、所定の閾値“x”は、カウンタ53のカウント値がとり得る範囲内の値、例えば、本実施形態においては、0〜n−1のうちの任意の値となる。
一方、特定のステータスを持つキャッシュの数がある閾値を超えた場合に、リプレース方式を切り替える上述の如き既知の手法では、閾値の設定値は、理論上キャッシュラインの数だけ存在し、CPUのキャッシュメモリが年々大容量となってきている現在は最適なヒット率となる閾値を設定することは容易ではない。
従って、上述のように、本実施形態の一例としてのキャッシュメモリ装置3のキャッシュ制御部5によれば、特定のステータスを持つキャッシュの数がある閾値を超えた場合に、リプレース方式を切り替える上述の如き既知の手法よりも容易に、最適な所定の閾値を決定することができる。
〔2〕第1変形例
上述した本実施形態においては、リプレース方式として、優先順位方式及びLRU方式を採用して説明したが、これに限定されず、ラウンドロビン方式やランダム方式など、既知のリプレース方式を採用することができる。
例えば、キャッシュメモリ装置3は、切替部541により、所定の閾値に応じて優先順位方式とラウンドロビン方式或いはランダム方式とが切り替えられるように構成されても良い。また、キャッシュメモリ装置3は、複数(例えば3つ)の所定の閾値“0”、“x1”、及び“x2”を用いて、切替部541により、カウント値が0〜x1−1の場合は第1のリプレース方式、x1〜x2−1の場合は第2のリプレース方式、x2〜n−1の場合は第3のリプレース方式が選択されるように構成されても良い。
なお、3つのリプレース方式を切り替える場合、所定の閾値“x1”及び“x2”の値は、閾値決定部55により、上述した図7若しくは後述する図9に示すフローチャートに従って、順に決定されても良いし、システムサービスプロセッサ等の外部設定ノードにより、決定されても良い。
以下、本第1変形例における、閾値決定部55により所定の閾値“x1”及び“x2”が決定された場合の、リプレース対象WAY選択部54による第1〜第3のリプレース方式の切り替え処理について説明する。
図8は、本実施形態の変形例としてのリプレース対象WAY選択部54の処理を説明するためのフローチャートである。
はじめに、リプレース対象WAY選択部54が処理部51からリプレース通知を受けると、切替部541により、カウンタ53のカウント値と、所定の閾値“x1”、“x2”とが比較される(ステップT1)。
なお、以下、図8に示すフローチャートにおけるカウント値は、カウンタ53において選択されているリプレース対象のキャッシュライン40に対応するものであり、所定の閾値“x1”、“x2”は、リプレース対象のキャッシュライン40に対応するものである。また、所定の閾値には、“x1”<“x2”の関係があるものとする。
切替部541による比較の結果、カウント値が所定の閾値“x1”未満であった場合(ステップT1の「カウント値<所定の閾値x1」ルート)、切替部541により、第1のリプレース方式を示す情報がブロック選択部542に出力される。
ブロック選択部542に第1のリプレース方式を示す情報が入力されると、ブロック選択部542により、第1のリプレース方式によるリプレース対象のWAYの選択が行なわれ(ステップT2)、選択されたWAYを示す情報が処理部51に出力される。
一方、ステップT1の切替部541による比較の結果、カウント値が所定の閾値“x1”以上であり、且つ、所定の閾値“x2”未満であった場合(ステップT1の「カウント値≧所定の閾値x1 且つ カウント値<所定の閾値x2」ルート参照)、切替部541により、第2のリプレース方式を示す情報がブロック選択部542に出力される。
ブロック選択部542に第2のリプレース方式を示す情報が入力されると、ブロック選択部542により、第2のリプレース方式によるリプレース対象のWAYの選択が行なわれ(ステップT3)、選択されたWAYを示す情報が処理部51に出力される。
また、切替部541による比較の結果、カウント値が所定の閾値“x2”以上であった場合(ステップT1の「カウント値≧所定の閾値x2」ルート)、切替部541により、第3のリプレース方式を示す情報がブロック選択部542に出力される。
ブロック選択部542に第3のリプレース方式を示す情報が入力されると、ブロック選択部542により、第3のリプレース方式によるリプレース対象のWAYの選択が行なわれ(ステップT4)、選択されたWAYを示す情報が処理部51に出力される。
ステップT2〜ステップT4のいずれかにおいて、ブロック選択部542によりリプレース対象のWAYが選択されると、リプレース対象WAY選択部54により、カウンタ53のカウント値が判定され、カウント値がn−1未満であるか否かが判断される(ステップT5)。
カウント値がWAYの数−1、つまりn−1未満であった場合(ステップT5のYesルート)、リプレース対象WAY選択部54により、当該カウント値に1が加算され(ステップT6)、リプレース対象WAY選択部54の処理が終了する。
一方、カウント値がWAYの数−1、つまりn−1と等しい場合(ステップT5のNoルート)、リプレース対象WAY選択部54により、当該カウント値が0にリセットされ(ステップT7)、リプレース対象WAY選択部54の処理が終了する。
このように、本第1変形例としてのキャッシュメモリ装置3のキャッシュ制御部5によれば、本実施形態と同様の効果が得られるほか、優先順位方式及びLRU方式に限定されず、リプレース対象WAY選択部54によって他のリプレース方式を切り替えることができる。また、3つ以上のリプレース方式をリプレース対象WAY選択部54によって切り替えることができるため、使用態様に応じた所定の閾値“x1”、“x2”の設定により、最適なリプレース方式を選択することができ、キャッシュヒット率の向上を実現することができる。
〔3〕第2変形例
上述した本実施形態及び第1変形例においては、閾値決定部55による所定の閾値“x”の決定は、図7に示すフローチャートに従っていたが、これに限定されず、例えば、図9に示すフローチャートに従って行なわれても良い。
以下、本第2変形例における、閾値決定部55による所定の閾値“x”の決定処理について説明する。
図9は、本実施形態の変形例としての閾値決定部55の処理を説明するためのフローチャートである。
はじめに、閾値決定部55により、所定の閾値“x”に初期値0が設定されるとともに、計測時間Tが設定される(ステップT11)。
ここで、初期値0とは、カウンタ53のカウント値がとり得る範囲内の値のうちの、最小の値であり、本実施形態においては、カウンタ53のカウント値がとり得る0〜n−1の範囲内の値のうちの、最小の値0である。
また、計測時間Tは、図7を参照して説明したものと同様である。
次に、閾値決定部55により、(x)maxに0が設定され、xmaxにNullが設定されるとともに、最大のxの値Xnが設定される(ステップT12)。
なお、(x)maxとは、最大のキャッシュヒット率である。また、xmaxとは、最大のキャッシュヒット率が得られたときの所定の閾値“x”の値である。さらに、Xnとは、カウンタ53のカウント値がとり得る範囲内の値のうちの、最大の値であり、本実施形態においては、カウンタ53のカウント値がとり得る0〜n−1の範囲内の値のうちの、最大の値n−1である。
そして、閾値決定部55により、所定の閾値“x”についての処理部51からのヒット/ミスの情報が計測時間Tの間計測され、所定の閾値“x”についてのキャッシュヒット率が計算される(ステップT13)。
なお、キャッシュヒット率は、図7を参照しながら既述の如く、例えば、計測時間Tにおけるヒット数から計測時間Tにおけるヒット数及びミス数を除算することにより求められる。
また、図9における「キャッシュヒット率計算(x)」の文言は、所定の閾値“x”についてのキャッシュヒット率が、上述の如く計算されることを示す。
ステップT13において、所定の閾値“x”についてのキャッシュヒット率が計算されると、閾値決定部55により、キャッシュヒット率(x)と、最大のキャッシュヒット率(x)maxとが比較され、(x)が(x)maxよりも大きいか否かが判断される(ステップT14)。
以下、所定の閾値を括弧で括った(x)は、所定の閾値“x”についてのキャッシュヒット率を示すものとする。
キャッシュヒット率の比較により、(x)が(x)maxよりも大きい場合(ステップT14のYesルート)、閾値決定部55により、最大のキャッシュヒット率(x)maxに(x)が設定され、xmaxにxが設定される(ステップT15)。
すなわち、(x)が(x)maxよりも大きい場合、閾値決定部55により、(x)が最大のキャッシュヒット率であると判断され、(x)maxが(x)の値に更新されるとともに、xmaxが、最大のキャッシュヒット率(x)が得られたときの所定の閾値“x”に更新される。
そして、閾値決定部55により、xがXnと等しいか否かが判断され(ステップT16)、x=Xnであった場合(ステップT16のYesルート)、閾値決定部55により、xmaxの値が所定の閾値“x”に設定され(ステップT17)、閾値決定部55による処理が終了する。
すなわち、x=Xnであった場合、閾値決定部55により、カウンタ53のカウント値がとり得る範囲内の全ての値に所定の閾値“x”の値を設定し、キャッシュヒット率の比較が行なわれたと判断され、最終的にxmaxに設定されている値が、所定の閾値“x”に設定される。
一方、ステップT16におけるxがXnと等しいか否かの判断において、x=Xnではなかった場合(ステップT16のNoルート)、閾値決定部55により、xに1が加算(インクリメント)され(ステップT18)、ステップT13の処理に移行する。
また、ステップT14におけるキャッシュヒット率の比較により、(x)が(x)maxよりも大きくなかった場合(ステップT14のNoルート)、閾値決定部55により、ステップT15の処理をスキップされ、ステップT16の処理に移行する。
上述のように、本第2変形例における閾値決定部55によっても、図7を用いて説明した場合と同様に、キャッシュヒット率を算出する処理及び所定の閾値を決定する処理が実行され、所定の閾値“x”が決定される。
すなわち、本第2変形例における閾値決定部55によるキャッシュヒット率を算出する処理も、図7を用いて説明した場合と同様に、所定の閾値“x”を所定の時間毎に変化させ、変化させた所定の閾値“x”を切替部541に設定すべく出力されることにより行なわれる。そして、変化させた所定の閾値“x”に基づいて切替部541によりリプレース方式が切り替えられる状態において、処理部51から出力されるヒット/ミスの情報に基づいて、所定の閾値毎にキャッシュヒット率を算出することにより行なわれる。
また、本第2変形例における閾値決定部55による所定の閾値“x”を決定する処理も、図7を用いて説明した場合と同様に、複数のキャッシュヒット率の中から最大のキャッシュヒット率を選択し、最大のキャッシュヒット率が算出されたときの所定の閾値“x”を、切替部541に設定すべき所定の閾値“x”として決定することにより行なわれる。
なお、上述したステップT11〜ステップT18の処理も、図7に示すステップS11〜ステップS22の処理と同様に、閾値決定部55により、キャッシュライン40毎に個別に所定の閾値を決定すべく、キャッシュライン40毎に独立して行なわれても良いし、キャッシュメモリ4全体で1つの所定の閾値を決定すべく行なわれても良い。
また、キャッシュライン40毎に個別に所定の閾値が決定される場合、上述したステップT11〜ステップT18の処理は、キャッシュライン40毎に並行して実施されても良いし、例えばキャッシュライン40−1から40−mまで1ラインずつ順に実施されても良い。
なお、キャッシュライン40毎に個別に所定の閾値が決定される場合、閾値決定部55は、比較部511からヒット/ミスの情報とともに入力される、当該ヒット/ミスが発生したキャッシュライン40の情報に基づいて、ヒット/ミスの情報を集計するキャッシュライン40を特定することができる。
また、上述したステップT11〜ステップT18の処理は、情報処理装置1の起動時、所定のタイミング、または所定の間隔で、閾値決定部55により実行される。
上述のように、本第2変形例としての閾値決定部55によれば、カウンタ53のカウント値がとり得る範囲内のうちの最小の値から最大の値まで、所定の閾値“x”がインクリメントされ、その都度キャッシュヒット率が計算される。そして、閾値決定部55により、最大のキャッシュヒット率及びそのときの“x”の値が、(x)max及びxmaxとして記憶されるため、カウンタ53のカウント値がとり得る範囲内について、確実に、所定の閾値“x”を決定することができる。
なお、ステップT11において所定の閾値“x”に設定する初期値を、カウンタ53のカウント値がとり得る範囲内の値のうちの、最大の値、つまり、本実施形態においては、n−1としても良い。なお、この場合、ステップT12において設定されるXnは、カウンタ53のカウント値がとり得る範囲内の値のうちの、最小の値、つまり、本実施形態においては、0とする。また、ステップT18においては、閾値決定部55により、xから1が減算(デクリメント)される。
このように、本第2変形例としてのキャッシュメモリ装置3のキャッシュ制御部5によれば、本実施形態及び第1変形例と同様の効果が得られるほか、カウンタ53のカウント値がとり得る範囲内の値から、キャッシュヒット率が最大となる値を、所定の閾値“x”として確実に決定することができる。
例えば、ある所定の閾値“x”及びその前後の閾値についてのキャッシュヒット率が、ある所定の閾値“x”について極大を示すものであった場合でも、所定の閾値として設定可能な範囲内において、他にキャッシュヒット率が最大となる所定の閾値が存在する場合がある。この場合でも、本第2変形例としての閾値決定部55によれば、極大値を所定の閾値“x”に決定せずに、所定の閾値として設定可能な範囲内を全て検証し、最大となる値を所定の閾値に決定することができる。従って、閾値決定部55により、最適な所定の閾値を決定することができ、キャッシュヒット率の向上を実現することができる。
〔4〕その他
以上、本発明の好ましい実施形態及び変形例について詳述したが、本発明は、かかる特定の実施形態及び変形例に限定されるものではなく、本発明の趣旨を逸脱しない範囲内において、種々の変形、変更して実施することができる。
例えば、図2〜図4に示す切替部541は、リプレース対象WAY選択部54から分離して、カウンタ53とリプレース対象WAY選択部54との間に備えられても良い。
また、本実施形態及び本変形例の一例としてのキャッシュメモリ装置3は、セットアソシアティブ方式を採用するものとして説明したが、これに限定されるものではなく、例えば、フルアソシアティブ方式を採用するものであっても良い。
例えば、キャッシュメモリ装置3がフルアソシアティブ方式を採用する場合、複数のエントリ(キャッシュライン)からリプレース対象のエントリを選択する処理に、上述の如きリプレース対象WAY選択部54による、リプレース対象のWAYを選択する処理を適用すれば良い。すなわち、本実施形態及び本変形例において説明した、1つのキャッシュラインにおける複数のWAYを、フルアソシアティブ方式のキャッシュメモリにおける複数のエントリに置き換えることにより、キャッシュメモリ装置3をフルアソシアティブ方式に適用することができる。
なお、閾値決定部55としての機能を実現するためのプログラム(閾値決定プログラム)は、例えばフレキシブルディスク,CD(CD−ROM,CD−R,CD−RW等),DVD(DVD−ROM,DVD−RAM,DVD−R,DVD+R,DVD−RW,DVD+RW,HD DVD等),ブルーレイディスク,磁気ディスク,光ディスク,光磁気ディスク等の、コンピュータ読取可能な記録媒体に記録された形態で提供される。そして、コンピュータはその記録媒体からプログラムを読み取って内部記憶装置または外部記憶装置に転送し格納して用いる。また、そのプログラムを、例えば磁気ディスク,光ディスク,光磁気ディスク等の記憶装置(記録媒体)に記録しておき、その記憶装置から通信回線を介してコンピュータに提供するようにしても良い。
閾値決定部55としての機能を実現する際には、内部記憶装置(本実施形態ではメモリ6又はHDD等のI/O装置7)に格納されたプログラムがコンピュータのマイクロプロセッサ(本実施形態ではCPU2)によって実行される。このとき、記録媒体に記録されたプログラムをコンピュータが読み取って実行するようにしても良い。また、閾値決定部55としての機能を実現する際には、外部設定ノードの記憶装置に格納されたプログラムがコンピュータのマイクロプロセッサ(本実施形態では例えばシステムサービスプロセッサ)によって実行されても良い。
なお、本実施形態において、コンピュータとは、ハードウェアとオペレーティングシステムとを含む概念であり、オペレーティングシステムの制御の下で動作するハードウェアを意味している。また、オペレーティングシステムが不要でアプリケーションプログラム単独でハードウェアを動作させるような場合には、そのハードウェア自体がコンピュータに相当する。ハードウェアは、少なくとも、CPU等のマイクロプロセッサと、記録媒体に記録されたコンピュータプログラムを読み取るための手段とをそなえており、本実施形態においては、情報処理装置1がコンピュータとしての機能を有しているのである。

Claims (17)

  1. 複数のエントリを備え、前記エントリ毎に、データと前記データの状態を表すステータスとを含む少なくとも1のブロックを備えるキャッシュメモリと、
    前記キャッシュメモリの各ブロックに対して前記データのリプレースを行なう制御部とを備え、
    前記制御部は、
    前記各エントリにおいて前記データがリプレースされたリプレース回数を、前記エントリ毎に計数するカウンタと、
    前記リプレース回数に応じて、前記データのリプレース対象のブロックを選択するリプレース方式を切り替える切替部とを備えることを特徴とする、キャッシュメモリ装置。
  2. 前記切替部は、前記リプレース回数が所定の閾値に達した場合に、前記リプレース方式を切り替えることを特徴とする、請求項1記載のキャッシュメモリ装置。
  3. 前記制御部は、
    前記所定の閾値を決定する閾値決定部をさらに備え、
    前記切替部は、前記閾値決定部によって決定された所定の閾値を用いて、前記リプレース方式を切り替えることを特徴とする、請求項2記載のキャッシュメモリ装置。
  4. 前記閾値決定部は、前記所定の閾値を変化させてキャッシュヒット率を算出し、算出されたキャッシュヒット率に基づいて、前記所定の閾値を決定することを特徴とする、請求項3記載のキャッシュメモリ装置。
  5. 前記閾値決定部は、前記所定の閾値を変化させて前記エントリ毎のキャッシュヒット率を算出し、算出された各キャッシュヒット率に基づいて、前記エントリ毎に前記所定の閾値を決定することを特徴とする、請求項4記載のキャッシュメモリ装置。
  6. 前記カウンタは、前記リプレース回数が所定の数と等しくなった場合に、前記リプレース回数をリセットすることを特徴とする、請求項1〜5のいずれか1項記載のキャッシュメモリ装置。
  7. 前記カウンタは、前記リプレース回数が前記エントリにおけるブロックの数と等しくなった場合に、前記リプレース回数をリセットすることを特徴とする、請求項6記載のキャッシュメモリ装置。
  8. 前記リプレース方式は、前記ステータスに応じた優先度に基づいて、前記リプレースを行なうリプレース対象のブロックを選択する優先順位方式と、前記リプレース対象のブロックとして、前記エントリにおいて最も古くアクセスされたブロックを選択するLRU(Least Recently Used)方式とを含むことを特徴とする、請求項1〜7のいずれか1項記載のキャッシュメモリ装置。
  9. 前記制御部は、
    前記エントリ毎に、前記ブロックがアクセスされたアクセス順序を管理するアクセス順序管理部をさらに備え、
    前記アクセス順序管理部が管理するアクセス順序に基づいて、前記LRU方式によるリプレースを実行することを特徴とする、請求項8記載のキャッシュメモリ装置。
  10. 前記制御部は、
    リプレースを行なうリプレース対象のエントリに対応するリプレース方式を前記切替部から取得し、取得したリプレース方式に基づいて、前記リプレース対象のエントリにおけるリプレース対象のブロックを選択するブロック選択部と、
    前記リプレース対象のエントリを決定し、当該エントリを示す情報を前記ブロック選択部に出力するとともに、前記ブロック選択部によって選択された前記リプレース対象のブロックに対して、前記データのリプレースを行なう処理部とをさらに備えることを特徴とする、請求項1〜9のいずれか1項記載のキャッシュメモリ装置。
  11. セットアソシアティブ方式を採用することを特徴とする、請求項1〜10のいずれか1項記載のキャッシュメモリ装置。
  12. 複数のエントリを備え、前記エントリ毎に、データと前記データの状態を表すステータスとを含む少なくとも1のブロックを備えるキャッシュメモリの各ブロックに対して前記データのリプレースを行なう制御装置であって、
    前記各エントリにおいて前記データがリプレースされたリプレース回数を、前記エントリ毎に計数するカウンタと、
    前記リプレース回数に応じて、前記データのリプレース対象のブロックを選択するリプレース方式を切り替える切替部とを備えることを特徴とする、キャッシュメモリの制御装置。
  13. 前記切替部は、前記リプレース回数が所定の閾値に達した場合に、前記リプレース方式を切り替えることを特徴とする、請求項12記載のキャッシュメモリの制御装置。
  14. 前記所定の閾値を決定する閾値決定部をさらに備え、
    前記切替部は、前記閾値決定部によって決定された所定の閾値を用いて、前記リプレース方式を切り替えることを特徴とする、請求項13記載のキャッシュメモリの制御装置。
  15. 請求項1〜11のいずれか1項に記載のキャッシュメモリ装置を備えることを特徴とする、情報処理装置。
  16. 複数のエントリを備え、前記エントリ毎に、データと前記データの状態を表すステータスとを含む少なくとも1のブロックを備えるキャッシュメモリの各ブロックに対して前記データのリプレースを行なう制御方法であって、
    前記各エントリにおいて前記データがリプレースされたリプレース回数を、前記エントリ毎に計数し、
    前記計数したリプレース回数に応じて、前記データのリプレース対象のブロックを選択するリプレース方式を切り替えることを特徴とする、キャッシュメモリの制御方法。
  17. 複数のエントリを備え、前記エントリ毎に、データと前記データの状態を表すステータスとを含む少なくとも1のブロックを備えるキャッシュメモリと、前記キャッシュメモリの各ブロックに対して前記データのリプレースを行なう制御部とを備え、前記制御部は、前記各エントリにおいて前記データがリプレースされたリプレース回数を、前記エントリ毎に計数するカウンタと、前記リプレース回数に応じて、前記データのリプレース方式を切り替える切替部とを備えるとともに、前記切替部は、前記リプレース回数が所定の閾値に達した場合に、前記リプレース方式を切り替えるキャッシュメモリ装置において、
    前記所定の閾値を変化させ、変化させた所定の閾値毎にキャッシュヒット率を算出し、
    算出された複数のキャッシュヒット率に基づいて、前記所定の閾値を決定する、
    処理をコンピュータに実行させる、キャッシュメモリ装置の閾値決定プログラム。
JP2012552560A 2011-01-12 2011-01-12 キャッシュメモリ装置,キャッシュメモリの制御装置,情報処理装置,キャッシュメモリの制御方法,及びキャッシュメモリ装置の閾値決定プログラム Active JP5494834B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2011/050338 WO2012095957A1 (ja) 2011-01-12 2011-01-12 キャッシュメモリ装置,キャッシュメモリの制御装置,情報処理装置,キャッシュメモリの制御方法,及びキャッシュメモリ装置の閾値決定プログラム

Publications (2)

Publication Number Publication Date
JP5494834B2 true JP5494834B2 (ja) 2014-05-21
JPWO2012095957A1 JPWO2012095957A1 (ja) 2014-06-09

Family

ID=46506881

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012552560A Active JP5494834B2 (ja) 2011-01-12 2011-01-12 キャッシュメモリ装置,キャッシュメモリの制御装置,情報処理装置,キャッシュメモリの制御方法,及びキャッシュメモリ装置の閾値決定プログラム

Country Status (4)

Country Link
US (1) US20130297882A1 (ja)
EP (1) EP2664993A1 (ja)
JP (1) JP5494834B2 (ja)
WO (1) WO2012095957A1 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150078003A (ko) * 2013-12-30 2015-07-08 삼성전자주식회사 캐시 메모리 시스템 및 그 동작방법
JP6390435B2 (ja) * 2015-01-13 2018-09-19 富士通株式会社 キャッシュ制御方法及びキャッシュ制御装置
US9928176B2 (en) * 2016-07-20 2018-03-27 Advanced Micro Devices, Inc. Selecting cache transfer policy for prefetched data based on cache test regions
US20180173636A1 (en) * 2016-12-20 2018-06-21 Intel Corporation Increasing lifetime reliability for a cache memory
US11656997B2 (en) * 2019-11-26 2023-05-23 Intel Corporation Flexible cache allocation technology priority-based cache line eviction algorithm
CN116897335A (zh) * 2021-02-26 2023-10-17 华为技术有限公司 一种缓存替换方法和装置
US11886342B2 (en) * 2021-12-01 2024-01-30 International Business Machines Corporation Augmenting cache replacement operations

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03144750A (ja) * 1989-10-31 1991-06-20 Pfu Ltd キャッシュメモリ制御方式
JPH06282487A (ja) * 1993-03-25 1994-10-07 Matsushita Electric Ind Co Ltd キャッシュ装置
JPH1027133A (ja) * 1996-07-11 1998-01-27 Nec Corp キャッシュシステム
JPH1139218A (ja) * 1997-07-18 1999-02-12 Nec Corp キャッシュシステム
JP2003186743A (ja) * 2001-10-09 2003-07-04 Agere Systems Inc 適応的キャッシュフレームのロッキング及びアンロッキングのための方法及び装置
JP2003280987A (ja) * 2002-03-25 2003-10-03 Kawasaki Microelectronics Kk 適応置換制御機能を有するセット・アソシアティブ方式のキャッシュシステム及びキャッシュ制御方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03144750A (ja) * 1989-10-31 1991-06-20 Pfu Ltd キャッシュメモリ制御方式
JPH06282487A (ja) * 1993-03-25 1994-10-07 Matsushita Electric Ind Co Ltd キャッシュ装置
JPH1027133A (ja) * 1996-07-11 1998-01-27 Nec Corp キャッシュシステム
JPH1139218A (ja) * 1997-07-18 1999-02-12 Nec Corp キャッシュシステム
JP2003186743A (ja) * 2001-10-09 2003-07-04 Agere Systems Inc 適応的キャッシュフレームのロッキング及びアンロッキングのための方法及び装置
JP2003280987A (ja) * 2002-03-25 2003-10-03 Kawasaki Microelectronics Kk 適応置換制御機能を有するセット・アソシアティブ方式のキャッシュシステム及びキャッシュ制御方法

Also Published As

Publication number Publication date
WO2012095957A1 (ja) 2012-07-19
US20130297882A1 (en) 2013-11-07
EP2664993A1 (en) 2013-11-20
JPWO2012095957A1 (ja) 2014-06-09

Similar Documents

Publication Publication Date Title
JP5494834B2 (ja) キャッシュメモリ装置,キャッシュメモリの制御装置,情報処理装置,キャッシュメモリの制御方法,及びキャッシュメモリ装置の閾値決定プログラム
US9235508B2 (en) Buffer management strategies for flash-based storage systems
US7380065B2 (en) Performance of a cache by detecting cache lines that have been reused
US8745334B2 (en) Sectored cache replacement algorithm for reducing memory writebacks
US8719510B2 (en) Bounding box prefetcher with reduced warm-up penalty on memory block crossings
US20140289479A1 (en) Bounding box prefetcher
US20110238923A1 (en) Combined l2 cache and l1d cache prefetcher
US20170371807A1 (en) Cache data determining method and apparatus
US9348753B2 (en) Controlling prefetch aggressiveness based on thrash events
US20110320720A1 (en) Cache Line Replacement In A Symmetric Multiprocessing Computer
JP2017194947A (ja) キャッシュメモリの利用トレンドに基づく複数セットグループ内のウェイごとの動的パワー供給
JP2011129101A (ja) キャッシュメモリにおけるキャッシュラインの置き換え
JP2017503299A (ja) モードに応じてセットの1つ又は複数を選択的に選択するように動的に構成可能であるマルチモード・セット・アソシエイティブ・キャッシュ・メモリ
US11163573B2 (en) Hierarchical metadata predictor with periodic updates
US20210182214A1 (en) Prefetch level demotion
JP2009059077A (ja) キャッシュシステム
KR20130041585A (ko) 타일 기반 렌더링을 위한 캐쉬 메모리 시스템 및 캐슁 방법
US20180113815A1 (en) Cache entry replacement based on penalty of memory access
JP4297961B2 (ja) メモリアクセス制御装置およびメモリアクセス制御方法
JP4009304B2 (ja) キャッシュメモリおよびキャッシュメモリ制御方法
JP2023532647A (ja) 複合キャッシュポリシーテストに基づくキャッシュのキャッシュポリシーの構成
JP2013041414A (ja) 記憶制御システムおよび方法、置換方式および方法
JP3964705B2 (ja) 適応置換制御機能を有するセット・アソシアティブ方式のキャッシュシステム及びキャッシュ制御方法
US11899642B2 (en) System and method using hash table with a set of frequently-accessed buckets and a set of less frequently-accessed buckets
US20140082286A1 (en) Prefetching Method and Apparatus

Legal Events

Date Code Title Description
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: 20140204

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140217

R150 Certificate of patent or registration of utility model

Ref document number: 5494834

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150