(57)【特許請求の範囲】
【請求項１】
セット・アソシアティブ方式のキャッシュシステムであって、
アクセス要求のあったデータがキャッシュメモリ中に存在しない場合に、キャッシュメモリのデータとメインメモリのデータを置き換える置換規則を複数備え、そのうちの１つの置換規則を用いて、前記データの置き換えを行う置換制御回路と、
前記置換規則の何れかに対応する複数の性能評価回路を備え、該複数の性能評価回路で対応する前記複数の置換規則のそれぞれのキャッシュ動作をプログラム実行中にシミュレートし、アクセス要求のあったデータがキャッシュメモリ中に存在する割合を示すヒット率及び存在しない割合を示すミス率を、前記複数の置換規則ごとに算出する置換規則性能評価回路と、
前記算出されたヒット／ミス率に基づいて、前記置換制御回路で用いる置換規則を、前記複数の置換規則の中の１つと切り換える置換規則切換制御回路と、
を備えたことを特徴とする適応置換制御機能を有するセット・アソシアティブ方式のキャッシュシステム。
【請求項２】
セット・アソシアティブ方式のキャッシュ制御方法であって、
アクセス要求のあったデータがキャッシュメモリ中に存在しない場合に、キャッシュメモリのデータとメインメモリのデータを置き換える複数の置換規則を備え、
前記複数の置換規則のそれぞれのキャッシュ動作をプログラム実行中にシミュレートし、アクセス要求のあったデータがキャッシュメモリ中に存在する割合を示すヒット率及び存在しない割合を示すミス率を、キャッシュ動作中に前記複数の置換規則毎に算出し、
前記算出されたヒット／ミス率に基づいて、前記複数の置換規則のうちで用いる置換規則を適応的に切り換えることを特徴とするセット・アソシアティブ方式のキャッシュ制御方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、セット・アソシアティブ方式のキャッシュシステム及びキャッシュ制御方法に係り、特に、プロセッサからアクセスされたデータがキャッシュメモリにない場合に、メインメモリのデータと置き換えを行う置換規則を、適応的に切り換える適応置換制御機能を有するセット・アソシアティブ方式のキャッシュシステム及びキャッシュ制御方法に関する。
【０００２】
【従来の技術】
従来、コンピュータシステムにおいて、大容量の主記憶装置（メインメモリ）は、動作速度がマイクロプロセッサに比べて遅いため、例えばＳＲＡＭ等の、容量は小さいが高速のメモリを、キャッシュメモリとしてマイクロプロセッサの内部あるいはその近傍に配置して、メインメモリのデータの一部をこのキャッシュメモリに記憶するようにして、マイクロプロセッサを高速で動作させるようにしている。
【０００３】
このようなコンピュータシステムにおいて、マイクロプロセッサからキャッシュメモリへのアクセス要求に対し、要求されたデータがキャッシュメモリに存在しないとき（ミスヒットの場合）は、メインメモリから新たに読み出されたデータがキャッシュメモリのあるブロックに格納される。しかし、一般にキャッシュメモリは、メインメモリに比べ容量が小さいため、キャッシュメモリ中のいずれかのブロックを選択し、そのブロックのデータとメインメモリのデータを置き換える必要がある。
【０００４】
従来、このようなデータの置き換えを行う場合、キャッシュメモリ中のどのブロックを置き換えるかを決定する置換規則として、ＬＲＵ（Least Recently Used)方式( アクセスされたのが最も古いデータのブロックを置き換える方式）、ＦＩＦＯ（First In First Out) 方式( 入れ換えたのが最も古いデータのブロックを置き換える方式）、アクセス頻度による方式、キャッシュのステータスによる固定優先度方式等、様々な方式が提案されている。
【０００５】
【発明が解決しようとする課題】
しかしながら、前記従来提案されている各種の置換規則では、その実現される性能がプログラムに依存する部分が大きく、必ずしも良い性能が得られるとは限らないという問題があった。
例えば、２つの置換規則Ａ及びＢと、２つのプログラムＸ及びＹがあった場合に、プログラムＸを実行するとき、置換規則Ａを採用したキャッシュシステムの方が、置換規則Ｂを採用したキャッシュシステムよりもヒット率が高く、プログラム実行速度が速くなったとしても、プログラムＹの実行においても、置換規則Ａを採用したキャッシュシステムの方が性能が良いとは限らない。
【０００６】
また、同一プログラムを実行するにしても、ある部分は置換規則Ａを採用した方が性能が良く、またある部分では置換規則Ｂを採用した方が性能が良いという場合もある。
このように、キャッシュメモリに対してアクセス要求のあったデータがキャッシュメモリ内に存在するか否かというヒット率（ミス率）は、プログラムの実行速度に大きな影響を与えるため、ヒット率を向上させ、ミス率を低減することのできる置換規則が望まれていた。
【０００７】
本発明は、前記従来の問題に鑑みてなされたものであり、実行するプログラムに対して、適応的に置換規則を切り換えることにより、単一の置換規則を採用した場合よりも平均的にプログラムの実行速度を高めることのできる適応置換制御機能を有するセット・アソシアティブ方式のキャッシュシステム及びキャッシュ制御方法を提供することを課題とする。
【０００８】
【課題を解決するための手段】
前記課題を解決するために、本発明の第一の態様は、セット・アソシアティブ方式のキャッシュシステムであって、アクセス要求のあったデータがキャッシュメモリ中に存在しない場合に、キャッシュメモリのデータとメインメモリのデータを置き換える置換規則を複数備え、そのうちの１つの置換規則を用いて、前記データの置き換えを行う置換制御回路と、前記置換規則の何れかに対応する複数の性能評価回路を備え、該複数の性能評価回路で対応する前記複数の置換規則のそれぞれのキャッシュ動作をプログラム実行中にシミュレートし、アクセス要求のあったデータがキャッシュメモリ中に存在する割合を示すヒット率及び存在しない割合を示すミス率を、前記複数の置換規則ごとに算出する置換規則性能評価回路と、前記算出されたヒット／ミス率に基づいて、前記置換制御回路で用いる置換規則を、前記複数の置換規則の中の１つと切り換える置換規則切換制御回路と、を備えたことを特徴とする適応置換制御機能を有するセット・アソシアティブ方式のキャッシュシステムを提供する。
【０００９】
また、同様に前記課題を解決するために、本発明の第二の態様は、セット・アソシアティブ方式のキャッシュ制御方法であって、アクセス要求のあったデータがキャッシュメモリ中に存在しない場合に、キャッシュメモリのデータとメインメモリのデータを置き換える複数の置換規則を備え、前記複数の置換規則のそれぞれのキャッシュ動作をプログラム実行中にシミュレートし、アクセス要求のあったデータがキャッシュメモリ中に存在する割合を示すヒット率及び存在しない割合を示すミス率を、キャッシュ動作中に前記複数の置換規則毎に算出し、前記算出されたヒット／ミス率に基づいて、前記複数の置換規則のうちで用いる置換規則を適応的に切り換えることを特徴とするセット・アソシアティブ方式のキャッシュ制御方法を提供する。
【００１０】
【発明の実施の形態】
以下、本発明の適応置換制御機能を有するセット・アソシアティブ方式のキャッシュシステム及びキャッシュ制御方法について、添付の図面に示される好適実施形態を基に詳細に説明する。
【００１１】
図１は、本発明に係る適応置換制御機能を有するセット・アソシアティブ方式のキャッシュシステム及びキャッシュ制御方法の一実施形態の概略構成を示す図である。
図１に示すように、キャッシュシステム１は、置換制御回路１０、置換規則性能評価回路１２、置換規則切換制御回路１４を備え、キャッシュメモリのタグメモリ１６のデータを置き換える置換規則を適応的に切り換えるよう制御して、単一の置き換え規則を採用する場合よりも平均的に良い性能を得るようにするものである。
【００１２】
置換制御回路１０は、複数の置換規則（例えば、＃０〜＃（Ｎ−１）のＮ個の置換規則）を備え、このＮ個の置換規則のうち、置換規則切換制御回路１４によって選択された１つの置換規則に基づいて、タグメモリ１６の置き換えるべき所定のブロック（置換ブロック）を選択し、メインメモリ（図示せず）のデータをタグメモリ１６に書き込み（タグメモリライト）、キャッシュメモリ（タグメモリ１６）のデータをメインメモリのデータと置き換える。
【００１３】
置換規則性能評価回路１２は、Ｎ個の置換規則毎に、その置換規則によりキャッシュメモリのデータを置き換えた場合の、キャッシュメモリに対する最近一定アクセス回数中のヒット率及びミス率を算出する。図に示すように、置換規則性能評価回路１２は、各置換規則毎に、その置換規則用の性能評価回路１２ａが設けられている。すなわち、置換規則＃０用のものから、置換規則＃（Ｎ−１）用のものまで、Ｎ個の各置換規則用の性能評価回路１２ａを有して構成され、各置換規則毎のヒット率を算出するようにしている。
【００１４】
置換規則切換制御回路１４は、置換規則性能評価回路１２中の各置換規則用の性能評価回路１２ａで、Ｎ個の置換規則毎に算出された各ヒット率／ミス率に基づいて置換制御回路１０で用いる置換規則を選択する。このとき、どの置換規則を選択するかは、特に限定はされないが、あまり頻繁に置換規則の切り換えが発生するのを抑制するために、例えば、ある置換規則に対応するヒット率が、他の置換規則に対応するヒット率よりも十分大きい場合に、この置換規則を選択するようにすることが好ましい。ある置換規則に対応するヒット率が他の置換規則に対応するヒット率よりも十分大きいか否かは、その差が予め設定されたある閾値を越えたか否かで判定すればよい。
【００１５】
タグメモリ（タグＲＡＭ）１６は、図示を省略したデータメモリ（データＲＡＭ）とともにキャッシュメモリを構成し、データメモリ中に格納されているデータが、メインメモリのどのアドレスに対応するものかを示すアドレス部を格納するものである。データメモリのデータは、タグメモリ１６に格納されるアドレス部とプロセッサの示すアクセス先アドレスが一致した場合、それに対応したデータが読み出される。データを置き換える場合には、データとアドレスの両方が置き換えられる。
【００１６】
本実施形態は、このように構成されたセット・アソシアティブ方式のキャッシュシステムにおいて、置換規則性能評価回路１２中の各置換規則用の性能評価回路１２ａで、複数の置換規則のそれぞれのキャッシュ動作をプログラム実行中にシミュレートし、各置換規則毎のヒット率を算出して各置換規則の性能を評価し、最も性能の良い置換規則に適応的に切り換えるよう制御するものである。
【００１７】
次に、置換規則性能評価回路１２及び置換規則切換制御回路１４についてさらに詳しく説明する。
図２に、置換規則性能評価回路１２を構成する複数（Ｎ個）の各置換規則毎に用意された性能評価回路１２ａの１つの性能評価回路１３の一構成例を示す。図２に示すように、ある置換規則の性能評価回路１３は、その置換規則の性能評価用タグメモリ１３ａ、比較器１３ｂ、ヒット数カウンタ１３ｃ及びその置換規則によってデータの置き換えを行う置換制御回路１３ｄを含んで構成される。また、ヒット数カウンタ１３ｃは、ヒット／ミス履歴レジスタ１３ｅ及びヒット数出力回路１３ｆを含んでいる。
【００１８】
性能評価用タグメモリ１３ａには、メモリアクセス信号及びアドレス（インデックス部）が入力される。性能評価用タグメモリ１３ａからは、これらの信号により、そのインデックスに対応する各ウエイ（セットの構成要素）のアドレスが読み出され、比較器１３ｂにおいて、前記読み出されたアドレスと、今メモリアクセスが要求されているアドレス（タグ部）とが比較される。比較器１３ｂからは、前記比較の結果、ヒットがあるか否か（ヒット／ミス）がヒット数カウンタ１３ｃ及び置換制御回路１３ｄに出力される。
【００１９】
ヒット数カウンタ１３ｃは、キャッシュメモリに対する最近一定アクセス回数中の性能評価用タグメモリ１３ａにおけるヒット数（ヒット率）を出力する回路である。ヒット／ミス履歴レジスタ１３ｅは、その一定アクセス回数分のビット数を持っている。比較器１３ｂから出力されるヒット信号（ヒット／ミス）は、メモリアクセス発生ごとにヒット／ミス履歴レジスタ１３ｅにシフト入力され、それにより最近一定アクセス回数中のヒット／ミス履歴がヒット／ミス履歴レジスタ１３ｅに保持される。ヒット数出力回路１３ｆは、ヒット／ミス履歴レジスタ１３ｅの中身から、最近一定アクセス回数中のヒット数を出力する。
【００２０】
また、置換制御回路１３ｄは、その性能評価回路１３が評価しようとする置換規則を備えており、比較器１３ｂからヒット／ミス結果を受け取り、ミス発生時には、その置換規則により性能評価用タグメモリ１３ａのブロックを置き換えるため、置換ブロック選択信号及び性能評価用タグメモリライト信号を生成する。
【００２１】
置換規則切換制御回路１４は、各置き換え規則用の性能評価回路１２ａが出力する一定アクセス回数中のヒット数の最大値選択回路と、複数のヒット数が同じ場合に対応するための優先度付けをして出力する回路とにより、構成することができる。
ただし、このように構成した場合、置換規則の切り換えが過剰な頻度で発生する可能性があるため、それを回避するように回路を設計することが好ましい。
【００２２】
図３に示す回路は、前記問題を回避するため、置換規則切換制御回路１４を構成した例である。レジスタ１４ａに所定の閾値を予め設定しておき、ある置換規則のヒット数と他の置換規則のヒット数との差が前記レジスタ１４ａに設定された閾値を越えないと、置換規則選択信号が切り換わらないように動作する。
【００２３】
また、図３において、置換規則切換制御回路１４には、ヒット数が入力され、αを置換規則用の性能評価回路のヒット数、βをヒット数にレジスタ値を加算した値とするとき、比較回路１４ｂは、α＞βのときはγ＝１、α≦βのときはγ＝０を出力し、フリップフロップ１４ｃからは置換規則選択信号が出力される。
【００２４】
以下、本実施形態の作用を図４の制御フローチャートを用いて説明する。
まず図４のステップ１００において、プログラム実行中にメモリアクセスが発生した場合には、次のステップ１０２、１１２、・・・、１２２以下において、複数（Ｎ個）の置換規則に対応した性能評価処理が、置換規則性能評価回路１２中の（Ｎ個の）各置換規則用の性能評価回路１２ａにおいて行われ、それぞれ各置換規則に対応したヒット数が算出される。
すなわち、その後のステップ１０２〜１０８の処理、ステップ１１２〜１１８の処理及びステップ１２２〜１２８の処理は、各置換規則に対応した性能評価をシミュレートする処理であり、それぞれ同じ処理が、Ｎ個の各性能評価回路１２ａにおいて、シーケンシャルに、または並行して行われる。
【００２５】
そこで、置換規則＃０に対応する性能評価回路１２ａ（その具体的構成は、例えば図２に示されている。）の処理であるステップ１０２〜１０８の処理についてのみ説明することとする。
ステップ１０２において、前述したように、置換規則＃０用の性能評価回路１２ａ（１３）中の比較器１３ｂ（図２参照）により、性能評価用タグメモリ１３ａから読み出されたアドレス（タグ部）と、今メモリアクセスが要求されているアドレス（タグ部）を比較し、ヒットがあるかどうか判定する。
【００２６】
ヒットがない場合には、ステップ１０４へ進み、前述したように、図２の置換制御回路１３ｄにより発生された置換ブロック選択信号及び性能評価用タグメモリライト信号により、置換規則＃０評価用タグメモリ１３ａを更新する。
そして、ステップ１０６において、ヒット数カウンタ１３ｃにより、ヒット／ミス履歴レジスタ１３ｅのヒット／ミス履歴を更新する。
また、ステップ１０２において、ヒットがあった場合には、評価用タグメモリ１３ａは更新せず、直接ステップ１０６へ進み、ヒット／ミス履歴を更新する。
【００２７】
また、ステップ１０８において、ヒット数出力回路１３ｆにより、置換規則＃０における最近一定アクセス回数中のヒット数（ヒット率）を算出し、出力する。
以上のような処理がＮ個の各置換規則＃０〜＃（Ｎ−１）に対しシーケンシャルに、または並行して行われ、それぞれに対するヒット率（数）が算出され、置換規則切換制御回路１４に入力される。
【００２８】
次にステップ１３０において、置換規則切換制御回路１４により、ある置換規則のヒット率が他の置換規則のヒット率よりも十分大きいか否か判定する。
ステップ１３２において、このように他の置換規則のヒット率よりも十分大きいヒット率を有する置換規則を選択し、置換規則選択信号を置換規則切換制御回路１４から出力する。
【００２９】
出力された置換規則選択信号は、置換制御回路１０（図１参照）へ入力される。そして、置換制御回路１０は、選択された置換規則に基づいて、置換ブロック選択信号を出力し、タグメモリ１６のブロックを置き換え、メインメモリのデータをキャッシュメモリのそのブロックに書き込み（タグメモリライト）、キャッシュメモリのデータをメインメモリのデータと置き換える。
【００３０】
このように本実施形態では、プログラム実行中に、複数の各置換規則に対するヒット率（ヒット率）をそれぞれ算出して、比較することにより、各置換規則の性能をシミュレートして、適応的に置換規則を切り換えるようにしたため、単一の置き換え規則を採用する場合よりも、平均的に良い性能を得ることができる。
【００３１】
以上、本発明の適応置換制御機能を有するセット・アソシアティブ方式のキャッシュシステム及びキャッシュ制御方法について詳細に説明したが、本発明は、以上の実施形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において、各種の改良や変更を行ってもよいのはもちろんである。
【００３２】
【発明の効果】
以上、説明した通り、本発明によれば、実行するプログラムに対して、適応的に置換規則を切り換えることにより、単一の置換規則を採用した場合よりも平均的に良い性能を得ることができ、プログラムの実行速度を高めることが可能となる。
【図面の簡単な説明】
【図１】  本発明に係る適応置換制御機能を有するセット・アソシアティブ方式のキャッシュシステム及びキャッシュ制御方法の一実施形態の概略構成を示す図である。
【図２】  本実施形態の置換規則性能評価回路を構成する複数の置換規則毎の性能評価回路の一構成例を示す回路図である。
【図３】  本実施形態の置換規則切換制御回路の一構成例を示す回路図である。
【図４】  本実施形態の作用を示す制御フローチャートである。
【符号の説明】
１  キャッシュシステム
１０  置換制御回路
１２  置換規則性能評価回路
１２ａ  各置換規則用の性能評価回路
１３  （ある置換規則に対する）性能評価回路
１３ａ  性能評価用タグメモリ
１３ｂ  比較器
１３ｃ  ヒット数カウンタ
１３ｄ  置換制御回路
１３ｅ  ヒット／ミス履歴レジスタ
１３ｆ  ヒット数出力回路
１４  置換規則切換制御回路
１４ａ  レジスタ
１４ｂ  比較回路
１４ｃ  フリップフロップ
１６  タグメモリ
【図１】
0003964705.tif 000002
【図２】
0003964705.tif 000003
【図３】
0003964705.tif 000004
【図４】
0003964705.tif 000005