(57)【特許請求の範囲】
【請求項１】
キャッシュ機能を有するコンピュータにおいて、
読み出しの対象となるデータが本来存在する位置を示す出所データと、読み出しの対象となる頻度に応じたデータの重要度を示す重要度データとを対応づけて格納する重要度テーブルと、
読み出されたデータと共に、同データに対応する前記重要度テーブルに格納されている重要度データを対応付けて格納するためのキャッシュメモリと、
読み出したデータを前記キャッシュメモリに格納しようとする際に、読み出したデータの位置に応じて前記重要度テーブルから得られる第１の重要度データと、前記キャッシュメモリのデータの格納先に存在する先に格納されているデータに対応する第２の重要度データとを比較し、前記第２の重要度データの値の方が高い場合には前記第２の重要度データの値を下げ、前記第２の重要度データの値の方が高くない場合には、読み出したデータを前記第１の重要度データと対応付けて前記キャッシュメモリに格納するキャッシュコントローラと
を具備したことを特徴とするキャッシュ機能を有するコンピュータ。
【請求項２】
キャッシュ機能を有するコンピュータにおいて、
読み出しの対象となるデータに対して、予め読み出しの対象となる頻度に応じた重要度を示す重要度データを設定し、
読み出されたデータをキャッシュメモリに格納する際に、同データについて予め設定された重要度データを対応付けて格納するものであって、
読み出したデータを前記キャッシュメモリに格納しようとする際に、読み出したデータの予め設定された第１の重要度データと、前記キャッシュメモリのデータの格納先に存在する先に格納されているデータに対応する第２の重要度データとを比較し、前記第２の重要度データの値の方が高い場合には前記第２の重要度データの値を下げ、前記第２の重要度データの値の方が高くない場合には、読み出したデータを前記第１の重要度データと対応付けて前記キャッシュメモリに格納することを特徴とするキャッシュメモリ制御方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、キャッシュ機能を有するコンピュータ及びキャッシュメモリ制御方法に関する。
【０００２】
【従来の技術】
キャッシュとは、コンピュータにおいてＣＰＵから読み出し要求のあったデータ及びこのデータに連続する読み出されることが予想されるデータをＣＰＵの近傍に配したキャッシュメモリ（高価だが高速動作可能なＳＲＡＭを用いて構成される）に蓄え、次にＣＰＵがデータを読もうとした時に目的とするデータがキャッシュメモリに存在すれば本来のデータ読出し先からではなく、キャッシュメモリ中に存在するデータから読み出す技術である。このキャッシュ機能により、ＣＰＵの読出しウェイトを低減して、コンピュータの総合的な処理速度を向上させることができる。
【０００３】
キャッシュメモリの記憶容量は、データ読出し先となる主記憶装置（メインメモリ）や補助記憶装置（ハードディスク装置（ＨＤＤ）、フロッピーディスク装置（ＦＤＤ））等の記憶容量に比較して、極めて小さく限られてしまうため、データ読出し先から読出したデータをキャッシュメモリに記憶させようとする場合には、キャッシュメモリに存在する古いデータを消去していく必要がある。
【０００４】
従来のキャッシュメモリ制御方法では、キャッシュメモリ中に存在するデータを消去する際、消去の対象となったデータについては、読み込んだ新しいデータのために、キャッシュメモリ上から無条件に消去している。
【０００５】
【発明が解決しようとする課題】
ここで、データの読出し頻度に対するキャッシュメモリの高速化の効果について考えてみると、「読み出される頻度が高いデータである程、該当データがキャッシュメモリに記憶されている場合のキャッシュメモリによる高速化の効果は高くなる」ことは明らかである。従って、記憶容量が小さいキャッシュメモリには読出し頻度の高いデータをより長期間保存しておくことが、キャッシュメモリによる高速化の効果を高めることになる。
【０００６】
しかしながら、従来のキャッシュでは、新しく読み込んだデータのために単純に古いデータがキャッシュメモリ上から消去されていた。すなわち、新たにキャッシュメモリに書き込もうとする読出し頻度の低いデータのために、読出し頻度の高いデータがキャッシュメモリから消去されていた。
【０００７】
本発明は前記のような事情を考慮してなされたもので、読出し頻度の高いデータをより長期間、キャッシュメモリに記憶させておくことが可能なキャッシュ機能を有するコンピュータ及びキャッシュメモリ制御方法を提供することを目的とする。
【０００８】
【課題を解決するための手段】
本発明は、キャッシュ機能を有するコンピュータにおいて、読み出しの対象となるデータが本来存在する位置を示す出所データと、読み出しの対象となる頻度に応じたデータの重要度を示す重要度データとを対応づけて格納する重要度テーブルと、読み出されたデータと共に、同データに対応する前記重要度テーブルに格納されている重要度データを対応付けて格納するためのキャッシュメモリと、読み出したデータを前記キャッシュメモリに格納しようとする際に、読み出したデータの位置に応じて前記重要度テーブルから得られる第１の重要度データと、前記キャッシュメモリのデータの格納先に存在する先に格納されているデータに対応する第２の重要度データとを比較し、前記第２の重要度データの値の方が高い場合には前記第２の重要度データの値を下げ、前記第２の重要度データの値の方が高くない場合には、読み出したデータを前記第１の重要度データと対応付けて前記キャッシュメモリに格納するキャッシュコントローラとを具備したことを特徴とする。
【０００９】
このような構成によれば、重要度の高いデータ、すなわちＣＰＵにより頻繁に読み込みが行なわれるデータがキャッシュメモリに格納されている期間が長くなる。従って、キャッシュヒットする（ＣＰＵが読み込もうとしているデータがキャッシュメモリに存在している）可能性が高くなり、主記憶装置や外部記憶装置等からデータを読み出す頻度がより低減される。
【００１０】
【発明の実施の形態】
以下、図面を参照して本発明の実施の形態について説明する。図１は本実施形態に係わるコンピュータの構成を示すブロック図である。図１に示すように、コンピュータには、ＣＰＵ１０、ＣＰＵバス１２、キャッシュコントローラ１４、重要度テーブル１６、キャッシュメモリ１８、主記憶装置２０、バスブリッジ２２、ＰＣＩバス２４、補助記憶装置２６、バスブリッジ２８、ＩＳＡバス３０、ＲＯＭ３２を含んで構成されている。
【００１１】
ＣＰＵ１０は、ＣＰＵバス１２と接続され、キャッシュコントローラ１４による制御によって実現されるキャッシュを利用してコマンドまたはデータに対してアクセスする。
【００１２】
ＣＰＵバス１２は、バスブリッジ２２と、ＣＰＵ１０及びキャッシュコントローラ１４とを相互に接続する。
キャッシュコントローラ１４は、ＣＰＵ１０からのコマンドまたはデータへのアクセス要求に対して、重要度テーブル１６に格納されたデータ（後述する）に基づいて、キャッシュメモリ１８についてのキャッシュ動作を制御する。
【００１３】
重要度テーブル１６は、予め、ＣＰＵ１０によるアクセスの対象となるコマンド（群）またはデータ（群）についての、本来存在する位置を示す「出所」データと、そのコマンド（群）またはデータ（群）の重要度を示す（ＣＰＵ１０によるアクセス対象となる頻度に応じた）「重要度」データとを対応づけて格納する。
【００１４】
キャッシュメモリ１８は、例えばＳＲＡＭによって構成され、キャッシュコントローラ１４の制御のもとで、所定の単位（キャッシュブロック）毎にコマンドまたはデータを格納する。キャッシュメモリ１８には、コマンドまたはデータを格納するためのデータ領域、データ領域に格納されたコマンドまたはデータを管理するための情報を格納するためのタグ領域が設けられている。
【００１５】
主記憶装置２０は、例えばＤＲＡＭによって構成され、ＣＰＵ１０によるアクセスの対象となるコマンドやデータ等を記憶する。
バスブリッジ２２は、ＣＰＵバス１２とＰＣＩバス２４との間を接続する。
【００１６】
ＰＣＩバス２４には、補助記憶装置２６の他、周辺装置が接続される。
補助記憶装置２６は、ハードディスク装置（ＨＤＤ）やフロッピーディスク装置（ＦＤＤ）であり、ＣＰＵ１０によりアクセス対象となるデータ等を格納している。
【００１７】
バスブリッジ２８は、ＰＣＩバス２４とＩＳＡバス３０との間を接続する。
ＩＳＡバス３０は、バスブリッジ２８を介してＰＣＩバス２４と接続され、ＲＯＭ３２（ＢＩＯＳ）やその他のデバイスが接続される。
【００１８】
ＲＯＭ３２は、ＩＳＡバス３０に接続され、ＢＩＯＳなどのＣＰＵ１０によりアクセス対象となるデータ等を格納している。
図２にはキャッシュメモリ１８のタグ領域中に格納されるタグに含まれる情報の一例を示している。図２に示すように、タグには、対応するキャッシュブロックに記憶されたデータが有効であるか否かを示すvalid フラグ４０、キャッシュブロック中のデータの重要度を示す重要度データ４２、及び本来データが存在している位置を示すアドレス（またはその一部）４４が含まれている。なお、図示していないが、キャッシュメモリ（データ領域）に記憶するデータを管理するための他のフラグが設けられていても良い。
【００１９】
重要度データは、キャッシュブロックにデータを記憶させる際に、重要度テーブル１６に格納された対象とするデータに対応する「重要度」データがキャッシュコントローラ１４によって読み出されて、ＣＰＵ１０のアクセス要求の対象であるコマンドまたはデータと共に記憶される。
【００２０】
図３にはキャッシュコントローラ１４中の重要度テーブル１６に格納されるデータの一例を示している。図３に示すように、重要度テーブルは、予め、ＣＰＵ１０によるアクセス対象となる記憶媒体（主記憶装置２０、補助記憶装置２６、ＲＯＭ３２、その他周辺装置等）に格納されたデータ毎に、データが存在している位置を示す「出所」データと、そのデータの重要度を示す「重要度」データとが対応づけられて登録されている。
【００２１】
「出所」データは、例えば主記憶装置２０、ＲＯＭ３２、補助記憶装置２６等の所定の領域（データ）を示すアドレスである。また、「重要度」データは、例えばデータの重要度を１バイト（２５６段階）で定義したデータである。
【００２２】
重要度テーブル１６には、例えばＲＯＭ３２に格納されたＢＩＯＳ、主記憶装置２０の所定の領域に格納されるコマンドやデータ等に対して、ＣＰＵ１０によるデータの読出し頻度に基づいて、任意に重要度が設定される。また、コンピュータにおいて使用されるＯＳ（オペレーティングシステム）やアプリケーションに応じた所定のデータに対して設定することもできる。例えば、動的リンクを行なうシステムにおいては、プログラムあるいは関数のライブラリの優先度が高くなるように重要度を設定することもできる。
【００２３】
次に、本実施形態におけるキャッシュコントローラ１４の動作について、図４に示すフローチャートを参照しながら説明する。図５はキャッシュコントローラ１４がデータを読み込む際の動作を説明するための図、図６はキャッシュコントローラ１４のキャッシュメモリ１８に対するキャッシュ制御の動作を説明するための図である。
【００２４】
キャッシュコントローラ１４は、ＣＰＵバス１２上のデータの流れを監視している。ＣＰＵ１０からアクセス要求がＣＰＵバス１２に発行されると、キャッシュコントローラ１４は、このＣＰＵ１０から発行されたアクセス要求を検出する（ステップＳ１）。
【００２５】
キャッシュコントローラ１４は、アクセス対象とするコマンドまたはデータのアドレスをもとにキャッシュメモリ１８のタグ領域（アドレス部）をチェックし、アクセス要求のあったデータがキャッシュメモリ１８のデータ領域中に存在するか否かを判別する（ステップＳ２）。
【００２６】
ここで、キャッシュヒットの（キャッシュメモリ１８に要求するデータが存在する）とき、キャッシュコントローラ１４は、キャッシュメモリ１８中の該当するキャッシュブロック中のデータをＣＰＵ１０に供給する。
【００２７】
一方、キャッシュミスのとき、キャッシュコントローラ１４は、アクセス対象とするデータを、主記憶装置２０の他、補助記憶装置２６、ＲＯＭ３２等から読み込む（ステップＳ４）。読み込まれた新しいデータがＣＰＵ１０に出力される一方で、キャッシュコントローラ１４は、読み込んだ新しいデータに対し、キャッシングのために、図５に示すように動作する。
【００２８】
キャッシュコントローラ１４は、読み込んだデータに対応する重要度を重要度テーブル１６から参照する（ステップＳ５）。すなわち、キャッシュコントローラ１４は、読み込んだデータに対応するアドレスに基づいて、重要度テーブル１６の「出所」データを参照し、読み込んだデータに該当する「重要度」データを求める。ここで、該当する「重要度」データが存在しない場合には、読み込んだデータに対する「重要度」データの値を「０」とする。
【００２９】
ここで、キャッシュコントローラ１４は、読み込んだデータを格納するための、キャッシュメモリ１８のキャッシュブロックを決定する。キャッシュメモリ１８のデータ領域中に空きキャッシュブロックがある場合、すなわちキャッシュブロック中のデータのリプレースが不要な場合（ステップＳ６）、キャッシュコントローラ１４は、読み込んだデータを無条件に空きキャッシュブロックに格納（キャッシング）する。
【００３０】
例えば、読み込んだデータをｄａｔａＸとすると、図６（ａ）に示すように、空いているキャッシュブロックに格納する。その際、キャッシュメモリ１８は、ｄａｔａＸに対応する「重要度」データを、該当するキャッシュブロックのタグ領域に書き込む。
【００３１】
一方、キャッシュメモリ１８のデータ領域中に空きキャッシュブロックがなく、データが書き込まれているキャッシュブロックに新たにデータを書き込もうとする時、すなわちキャッシュブロック中のデータのリプレースが必要な場合（ステップＳ６）、キャッシュコントローラ１４は、リプレースの対象とするキャッシュブロックを決定し（ステップＳ８）、この対象とするキャッシュブロックのタグ領域に格納されている重要度データと、書き込もうとする新たなデータの「重要度」データ（重要度テーブル１６から得られた「重要度」データ）とを比較する（ステップＳ９）。
【００３２】
この結果、タグ領域中の重要度データの値の方が大きい場合、すなわちキャッシュメモリ１８に書き込まれているデータの方が重要度が高い場合には、キャッシュコントローラ１４は、新たに書き込もうとしていたデータについて、キャッシュブロックへのデータ書き込みを行なわない。
【００３３】
この場合、キャッシュコントローラ１４は、対象としているキャッシュブロックに対応するタグ中の重要度の値を例えば「１」下げる（ステップＳ１１）。これは、リプレースの対象となったキャッシュブロックであるにも関わらず、重要度の値が高いために、キャッシュメモリ１８に格納され続けてしまうことを防ぐためである。
【００３４】
一方、タグ領域中の重要度データの値の方が大きくない場合、すなわち新しく読み込んだデータの方が重要度が高い場合には、キャッシュコントローラ１４は、キャッシュメモリ１８中の該当するキャッシュブロック中のデータを破棄（キャッシュ上で変更されている場合には主記憶装置２０等の元の位置に書き戻す）し、読み込んだ新しいデータをキャッシュブロックに書き込む（ステップＳ１２）。その際、新しいデータを書き込んだキャッシュブロックのタグには、新しいデータに対応する重要度テーブル１６から得られた「重要度」データをアドレスと共に格納する。
【００３５】
例えば、図６（ｂ）に示すように、新たなデータｄａｔａＸの重要度が高い場合には、古いデータｄａｔａ１を破棄し、新しいデータに対応する「重要度」データを含むｔａｇＸと共に、キャッシュブロックにｄａｔａＸを格納する。
【００３６】
一方で、キャッシュされているデータｄａｔａ１の重要度の方が高い場合には、新しいデータはキャッシュメモリ１８には格納されない。
このようにして、キャッシュコントローラ１４によって参照される重要度テーブル１６に、ＣＰＵ１０によるアクセスの対象となるコマンド（群）またはデータ（群）についての、本来存在する位置を示す「出所」データと、その重要度を示す（ＣＰＵ１０によるアクセス対象となる頻度に応じた）「重要度」データとを対応づけて格納し、新しく読み込んだデータをキャッシュメモリ１８に格納しようとする際に、キャッシュメモリ１８上のデータの重要度と比較して、重要度の高い方のデータをキャッシュメモリ１８に残す。これにより、ＣＰＵ１０によるアクセス対象となる頻度の高いデータを、より長期間、キャッシュメモリ１８に保存させておくことができる。従って、キャッシュヒットする割合が増えて、データリード時のウェイト動作が減るために、プログラム実行速度が高速化され、コンピュータ全体の処理速度の向上が図れる。
【００３７】
なお、前述した実施形態においては、キャッシュコントローラ１４中の重要度テーブル１６に格納される重要度を示す「重要度」データと、データの本来の存在位置を示す「出所」データとを予め格納しておくものとして説明しているが、重要度テーブル中のデータは動的に変更できるようにしても良い。
【００３８】
例えば、重要度テーブル１６中に格納された「出所」データに対応する元データの位置、例えば主記憶装置２０中のデータの位置が変更される場合には、変更後のアドレスに重要度テーブル１６の「出所」データを変更する。
【００３９】
また、前述した実施形態においては、重要度テーブル１６は、キャッシュコントローラ１４中に設けられる構成としているが、キャッシュコントローラ１４によって直接アクセスできる外部のメモリとしても良い。この場合、ＲＯＭ３２や主記憶装置２０等における本来のデータの位置が変更された際、重要度テーブルが記憶されたメモリを交換することによって対処できるようにしても良い。
【００４０】
【発明の効果】
以上詳述したように本発明によれば、ＣＰＵによって読出しの対象となるデータの「出所」とその「重要度」を記録してある重要度テーブルを設け、その重要度テーブルをもとにキャッシュ動作の制御を行なうことによって、頻繁に読み出されるデータ（重要度の高いデータ）がより長期間キャッシュメモリに保存されるようになるので、「キャッシュヒット率」が向上し、その結果、主記憶装置や補助記憶装置からの読出し回数が低減されて、コンピュータの全体からみたときの動作速度を向上させることが可能となる。
【図面の簡単な説明】
【図１】本発明の実施の形態に係わるコンピュータの構成を示すブロック図。
【図２】本実施形態におけるキャッシュメモリのタグ領域中に格納されるタグに含まれる情報の一例を示す図。
【図３】本実施形態におけるキャッシュコントローラ中の重要度テーブルに格納されるデータの一例を示す図。
【図４】本実施形態におけるキャッシュコントローラの動作を説明するためのフローチャート。
【図５】本実施形態におけるキャッシュコントローラがデータを読み込む際の動作を説明するための図。
【図６】本実施形態におけるキャッシュコントローラのキャッシュメモリに対するキャッシュ制御の動作を説明するための図。
【符号の説明】
１０…ＣＰＵ
１２…ＣＰＵバス
１４…キャッシュコントローラ
１６…重要度テーブル
１８…キャッシュメモリ
２０…主記憶装置
２２，２８…バスブリッジ
２４…ＰＣＩバス
２６…補助記憶装置
３０…ＩＳＡバス
３２…ＲＯＭ（ＢＩＯＳ−ＲＯＭ）
【図１】
0003707854.tif 000002
【図２】
0003707854.tif 000003
【図３】
0003707854.tif 000004
【図４】
0003707854.tif 000005
【図５】
0003707854.tif 000006
【図６】
0003707854.tif 000007