(57)【特許請求の範囲】
【請求項１】
メインメモリと、
前記メインメモリに接続されたプロセッサであって、非テンポラルデータ及びテンポラルデータを処理する命令を実行するように構成されたプロセッサと、
前記プロセッサに接続された少なくとも１つのキャッシュメモリであって、前記少なくとも１つのキャッシュメモリは複数のセットを有しており、この複数のセットの各々は少なくとも２つのウェイを有するとともに第１のビットと少なくとも１つの第２のビットとを有しており、該第１のビットは対応するセットの前記少なくも２つのウェイの１つが前記プロセッサによって使用される頻度の少ない前記非テンポラルデータであって第１に置換できる前記非テンポラルデータを含んでいることを示すよう構成された、キャッシュメモリと
を含み、
前記プロセッサが、前記メインメモリ又は前記少なくとも１つのキャッシュメモリのうちの１つのデータにアクセスするように構成したコンピュータシステムであって、
前記非テンポラルデータが前記ウェイの１つに入っていることを前記第１のビットが指示している場合には、前記少なくも１つの第２のビットがその非テンポラルデータが入っているウェイを指示するよう構成して、その指示されたウェイ内の非テンポラルデータが置換されるようにしたコンピュータシステム。
【請求項２】
メインメモリと、
前記メインメモリに接続され、非テンポラルデータ及びテンポラルデータを処理する命令を実行するプロセッサと、
前記プロセッサに接続された少なくとも１つのキャッシュメモリであって、前記少なくとも１つのキャッシュメモリは複数のセットを有しており、この複数のセットの各々は少なくとも２つのウェイを有するとともに第１のビットと少なくとも１つの第２のビットとを有しており、該第１のビットは対応するセットの前記少なくも２つのウェイの１つが前記プロセッサによって使用される頻度の少ない前記非テンポラルデータであって第１に置換できる前記非テンポラルデータを含んでいることを示すよう構成された、キャッシュメモリと
を有したコンピュータシステムで非テンポラルデータとテンポラルデータとを処理する方法において、
前記プロセッサによって前記メインメモリ又は前記少なくとも１つのキャッシュメモリのデータにアクセスするステップと、
前記非テンポラルデータが前記セットのウェイの１つに入っていることを前記第１のビットが指示している場合に、前記第２のビットがその非テンポラルデータが入っているウェイを指示するステップと
を含み、その指示されたセットのウェイ内の非テンポラルデータが置換されるようにした、方法。
【請求項３】
それぞれのウェイがデータを保存するように構成された少なくとも２つのウェイを含む、１つ又はそれ以上のセットと、
１つ又はそれ以上のＬＲＵビットと、
対応するセット内の少なくとも２つのウェイのいずれか１つに、第１に置換しても良い非テンポラルデータを含むかどうかを指示する、１つ又はそれ以上のロックビットと
を含み、前記ロックビットの１つが前記非テンポラルデータが前記対応するセット内のいずれかのウェイに含まれていることを指示している場合に、対応するＬＲＵビットがその非テンポラルデータが入っているウェイを指示して、その指示されたウェイ内の非テンポラルデータが第１に置換されるようにした、テンポラルデータと非テンポラルデータとをその中に保存するデータキャッシュメモリ。
【請求項４】
それぞれのウェイがデータを保存するように構成された少なくとも２つのウェイを含む、１つ又はそれ以上のセットと、
１つ又はそれ以上のＬＲＵビットと、
対応するセット内の少なくとも２つのウェイのいずれか１つに、第１に置換しても良い非テンポラルデータを含むかどうかを指示する、１つ又はそれ以上のロックビットと
を含むキャッシュメモリを備えたコンピュータ・システムにおける方法であって、
データを処理する命令に関連したローカリティヒントに基づいて、該データがテンポラルか非テンポラルかを判断するステップと、
前記セットの対応するロックビットが前記非テンポラルデータが該対応するセットのウェイの１つに存在することを指示している場合に、前記非テンポラルデータを有する対応するセット内のウェイを指示するように前記ＬＲＵビットの少なくとも１つを更新するステップと
を含み、その指示されたウェイ内の非テンポラルデータが第１に置換されるようにした方法。
【請求項５】
非テンポラル命令の実行中に、キャッシュメモリ内のセットに生じたキャッシュミスに応答して、該セットの第１のビットを動的に設定するステップであって、該第１のビットは、該セット内の少なくとも２つのウェイのいずれかに非テンポラルデータを有する場合に設定されるものであり、該セット内の第２のビットは、前記第１のビットが設定されている時に前記非テンポラルデータを含んでいるウェイを指示するものである、ステップと、
前記第１のビットが設定され、前記第２のビットが前記非テンポラルデータを含んでいるウェイを指示している場合であって、テンポラル命令の実行中に該セットに生じたキャッシュミスに応答して、該少なくとも２つのウェイのうちの前記第２のビットが指示するウェイの該非テンポラルデータをテンポラルデータに置換するステップと、
その置換が完了したことに応答して、該セット内の該第１のビットをクリアするステップと
を含む、テンポラルデータ及び非テンポラルデータをキャッシュメモリに保存する方法。
【請求項６】
前記非テンポラルデータが、プロセッサにより使用される頻度が少ないタイプのデータであることを特徴とする請求項３に記載のデータキャッシュメモリ。
【請求項７】
前記非テンポラルデータが、キャッシュに記憶される必要のないストリーミングデータであることを特徴とする請求項３に記載のデータキャッシュメモリ。
【請求項８】
前記ロックビットの１つは前記ウェイの１つに前記非テンポラルデータが存在することを示すように設定されるものであり、前記ＬＲＵビットは非テンポラルデータを有するウェイを指示するように更新されることを特徴とする請求項３に記載のデータキャッシュメモリ。
【請求項９】
前記非テンポラルデータが、使用頻度が低いタイプのデータであることを特徴とする請求項５に記載の方法。
【請求項１０】
前記非テンポラルデータが、キャッシュ記憶される必要のないストリーミングデータであることを特徴とする請求項５に記載の方法。
【請求項１１】
前記キャッシュメモリは複数のセットを含んでおり、前記第１のビットを動的に設定する前記ステップ、該第１のビットをクリアする前記ステップ、及び非テンポラルデータを置換する前記ステップは、該キャッシュメモリ内の複数のセットのそれぞれのセットへの命令アクセス中に、１度に１セットずつ実行されることを特徴とする請求項５に記載の方法。
【請求項１２】
前記非テンポラル命令の実行中の前記セットに対する前記キャッシュミスに応答して前記少なくとも２つのウェイの内の前記非テンポラルデータを有する指定されたウェイを指示するように前記第２のビットを維持するステップをさらに含む請求項５に記載の方法。
【請求項１３】
テンポラル命令の実行中の前記セットに対するキャッシュヒットに応答して前記少なくとも２つのウェイの内の前記非テンポラルデータを有する前記指定されたウェイを前記第２のビットが指示する設定を維持するステップと、前記第１のビットの前記設定を維持するステップをさらに含む請求項１２に記載の方法。
【請求項１４】
テンポラル命令の実行中の前記セットに対するキャッシュヒットに応答して前記セットにおける前記第１のビットの前記設定を維持するステップをさらに含む請求項５に記載の方法。
【請求項１５】
前記第１のビットがロックビットであることを特徴とする請求項５に記載の方法。
【請求項１６】
対応するセットのウェイが前記非テンポラルデータを有することをセットのロックビットが指示していない場合には、そのセットの１つ以上のＬＲＵビットが最も過去にアクセスされたとみなされるウェイを指示するよう構成した請求項３に記載のデータキャッシュメモリ。
【請求項１７】
少なくとも１つのキャッシュメモリを有し、非テンポラルデータとテンポラルデータとを処理する命令を実行するプロセッサであって、前記キャッシュメモリは複数のセットを有し、その複数のセットの各々が少なくとも２つのウェイを有するとともに第１のビットと少なくとも１つの第２のビットとを有し、その第１のビットが前記セットのいずれかのウェイが非テンポラルデータを有すると指示している場合に前記セットの少なくとも１つの第２のビットが前記非テンポラルデータを有する前記セットのウェイを指示するよう構成したプロセッサ。
【発明の詳細な説明】
【０００１】
技術分野
本発明は、広義にはプロセッサの技術分野に関し、より詳しくは、テンポラリ命令及び非テンポラリ命令用の共用キャッシュ構造を達成するための技術に関する。
【０００２】
背景技術
プロセッサ付きのキャッシュメモリを使用すると、メモリアクセスタイムが容易に短縮される。キャッシュ構成の基本的な考えは、最も頻繁にアクセスされる命令及びデータを高速キャッシュメモリに置くことによって、平均メモリアクセスタイムをそのキャッシュのアクセスタイムに近づけられるということである。可能な最大演算速度ないしは動作速度を達成するために、典型的なプロセッサでは、キャッシュ階層構造、すなわちいくつかの異なるレベルのキャッシュメモリが実装されている。これらいくつかのキャッシュの異なるレベルは、プロセッサコアからの異なる距離に対応している。キャッシュがプロセッサに近ければ近いほど、データアクセスは速くなる。しかしながら、データアクセスを速くするほど、データを記憶するためのコストは高くなる。その結果、キャッシュレベルがプロセッサに近いほど、キャッシュはより高速で、より小さくなる。
【０００３】
キャッシュメモリの性能はヒット率によって評価されることがしばしばある。プロセッサがメモリを参照して、そのワードがキャッシュで見つかった場合、ヒットしたと言われる。そのワードがキャッシュで見つからない場合は、メインメモリ中にあり、それは無ヒットを意味するミスあるいはキャッシュミスとしてカウントされる。ミスが起こると、そのアクセスによってインデックスを付けられたエントリに割当てが行われる。このアクセスはプロセッサにデータをロードするためのアクセスのこともあれば、プロセッサからメモリにデータを記憶するためのアクセスのこともある。キャッシュ記憶された情報は、必要でなくなるか、無効になるか、あるいは他のデータによって置き換えられてキャッシュエントリが割当てを解除されるまで、キャッシュメモリに保持される。
【０００４】
Ｌ１キャッシュとＬ２キャッシュを有するＰｅｎｔｉｕｍ  Ｐｒｏ（ペンティアム・プロ）TMプロセッサのようなキャッシュ階層構造を実装したプロセッサにおいては、より高速で小さい方のＬ１キャッシュがＬ２キャッシュよりもプロセッサに近く配置される。プロセッサがキャッシュ記憶可能なデータ、例えば、ロード命令を要求すると、その要求はまずＬ１キャッシュに送られる。要求されたデータがＬ１キャッシュにあれば、そのデータがプロセッサに供給される。要求されたデータがＬ１キャッシュになければ、Ｌ１キャッシュミスになり、要求はＬ２キャッシュに転送される。同様に、Ｌ２キャッシュヒットがあれば、そのデータがＬ１キャッシュ及びプロセッサコアに送られる。Ｌ２キャッシュミスになると、その要求はメインメモリに転送される。メインメモリはＬ２キャッシュミスに応答して、その要求されたデータをＬ２キャッシュ、Ｌ１キャッシュ、及びプロセッサコアに供給する。
【０００５】
通常キャッシュに記憶されるデータのタイプには、プログラム及びデータのアクティブ部分が含まれる。キャッシュが容量いっぱいになったときには、新たに要求された何行かのデータを入れるスペースを得るために、キャッシュメモリで記憶された何行かのデータを置き換えることが必要である。このような一つの置換技術として、最低使用頻度（ＬＲＵ）アルゴリズムを用いたものがあり、最低使用頻度のデータ行が新たに要求されたデータ行と置き換えられるようになっている。Ｐｅｎｔｉｕｍ  ＰｒｏTMプロセッサにおいては、Ｌ２キャッシュがＬ１キャッシュより大きいので、Ｌ２キャッシュには、通常、Ｌ１キャッシュの全てのデータに加えてＬ１キャッシュでＬＲＵアルゴリズムにより置き換えられた何行かのデータが記憶されている。
【０００６】
「キャッシュ階層管理」と言う名称の米国特許出願第０８／７６７，９５０号（１９９６年１２月１７日出願）には、命令と関連づけられたローカリティヒント(locality hint)を使用することによりキャッシュメモリを割り当てるための技術が開示されている。プロセッサがプロセッサとメモリとの間におけるデータ転送のためにメモリにアクセスするとき、そのアクセスは命令と関連づけられたローカリティヒントに従って種々のレベルのキャッシュに割り当てられるか、あるいはキャッシュメモリに全く割り当てられないかである。命令の中にはまれにしか使われないものがいくつかある。例えば、非テンポラリのプリフェッチ命令（先取り命令）は、プロセッサがすぐには必要としないが近い将来必要になると予測されるデータをプレロードする。このようなデータは、通常、一度しか使われないか、あるいはごく近い将来に再使用されることがなく、「非テンポラリデータ」と呼ばれる。頻繁に使用される命令やデータは「テンポラリデータ」と呼ばれる。非テンポラリデータの場合、データはたまにしか使われないので、最適性能の必要上、キャッシュ記憶されたアプリケーションコードやデータはこの使用頻度の低いデータによっては上書きされないようになっている。上記米国特許出願第０８／７６７，９５０号は、非テンポラリの先取りデータのような使用頻度の低いデータを記憶するためにキャッシュメモリとは別途にバッファを設けることによってこの問題を解消したものである。しかしながら、別途に余分のバッファを使用することはコスト的にもスペース的にも高価となる。
【０００７】
従って、現在、別途バッファを使用する必要がないテンポラリ命令及び非テンポラリ命令用の共用キャッシュ構造を得るための技術が必要とされている情況が存在する。
【０００８】
発明の概要
本発明は、キャッシュメモリ・マネジメントを達成するための方法及びシステムにある。本発明のシステムは、メインメモリと、メインメモリに接続されたプロセッサと、データをキャッシュ記憶するための該プロセッサに接続された少なくとも１つのキャッシュメモリとを備える。上記少なくとも１つのキャッシュメモリは、各々複数のキャッシュセットを備え、それぞれが少なくとも２つのキャッシュウェイを有する。上記複数のキャッシュセットの各セットは上記少なくとも２つのキャッシュウェイの一方に非テンポラリのデータが書き込まれているかどうかを指示するビットを有する。プロセッサは、メインメモリまたは上記少なくとも１つのキャッシュメモリの一方のデータにアクセスする。
【０００９】
以下、本発明を限定のためではなく、例示説明のための添付図面に示す実施形態に基づき詳細に説明する。図中、同じ参照符号は、同様の構成要素を指示する。
【００１０】
【発明を実施するための最良の形態】
キャッシュの割当てがデータの使用度によって決定されるようにしたキャッシュメモリのマネジメントを達成するための技術の実施形態について説明する。以下の説明においては、本発明の完全な理解を期すために特定のメモリデバイス、回路図、プロセッサ命令等のような詳細事項を具体的に多数記載する。しかしながら、当業者ならば、本発明がこれらの特定の細部なしで実施可能であることは理解されよう。その他の場合においては、本発明を不明瞭にしないために、周知の技術や構造については詳細な説明を省略した。また、特定の実施態様を本発明の好ましい実施形態として説明するが、他の実施形態についても、本発明の精神及び範囲を逸脱しない範囲で設計し、実施することが可能なことは容易に理解されよう。さらに、本発明は、直列配置構成のキャッシュ階層システムに基づいて説明するが、厳密にこのような形態の階層構造に限定する必要はないということも理解されよう。
【００１１】
典型的なコンピュータシステムを示す図１において、コンピュータシステムの中央処理装置（ＣＰＵ）を形成するプロセッサ１０はバス１４によってメインメモリ１１に接続されている。メインメモリ１１は、通常ランダムアクセスメモリで構成され、ＲＡＭと通称される。次に、メインメモリ１１は、一般に、情報の大量記憶（または保管）用の磁気記憶装置あるいは光メモリデバイスのような大容量記憶装置１２に接続されている。キャッシュメモリ１３（以下単にキャッシュとも称する）も同様にバス１４に接続されている。図示の場合、キャッシュ１３は、例えばキャッシュ１３と関連づけられたデータの機能的使用及び転送を実際に行うための例として、ＣＰＵ１０とメインメモリ１１との間に配置されている。キャッシュ１３の実際の物理的配置は、システム及びプロセッサアーキテクチャによって変わり得るということは理解されよう。さらに、キャッシュ１３の動作を制御するために、キャッシュコントローラ１５が図示のようにキャッシュ１３及びバス１４に接続されている。コントローラ１５のようなキャッシュコントローラの動作は当技術分野においては周知であり、従って図２以下の図面ではキャッシュコントローラは省略されている。ここでは、図示のキャッシュの動作を制御するために、ＣＰＵ１０の制御下で動作する何らかのコントローラが設けられているものと仮定されている。
【００１２】
動作について説明すると、メモリ１１とＣＰＵ１０との間の情報転送はＣＰＵ１０からのメモリアクセスによって行われる。キャッシュ記憶可能なデータがＣＰＵ１０によって今現在あるいはすぐ後にアクセスされるはずのデータである場合、そのデータはまずキャッシュ１３に割り当てられる。すなわち、ＣＰＵ１０は、メモリ１１中の所与の情報にアクセスするとき、まずキャッシュ１３からその情報を探す。もしアクセスされたデータがキャッシュ１３中にあれば、「ヒット」が起こる。キャッシュ中になければ、「ミス」となり、そのデータについてのキャッシュ割当てがシークされる。現在行われているように、ほとんどのアクセスは（ロードであるか記憶であるかにかかわらず）キャッシュ１３の割当てを必要とする。ただキャッシュ不可能なアクセスだけはキャッシュに割り当てられない。
【００１３】
図２には、複数キャッシュ構成を実装したコンピュータシステムが示されている。ＣＰＵ１０はやはりバス１４によってメインメモリ１１に接続され、そしてメモリ１１は大容量記憶装置１２に接続されている。しかしながら、図２の例においては、互いに別の２つのキャッシュメモリ２１及び２２が示されている。キャッシュ２１及び２２は図示のように直列に配置され、その各キャッシュがそれぞれレベル１（Ｌ１）キャッシュ及びレベル２（Ｌ２）キャッシュと名付けられた一つのキャッシュレベルを表している。さらに、Ｌ１キャッシュ２１は図示のようにＣＰＵ１０の一部になっているのに対して、Ｌ２キャッシュ２２はＣＰＵ１０の外部にある。この構造は、Ｌ１キャッシュをプロセッサチップ上に置き、プロセッサコアからより遠くにあるＬ１キャッシュより低いレベルのキャッシュをプロセッサの外部に置く現行の実施形態の一例と同じ構造である。種々のキャッシュメモリの実際の配置は設計上の選択事項であるか、あるいはプロセッサアーキテクチャによって決まる。従って、Ｌ１キャッシュをＣＰＵ１０の外部に置くこともできるということは理解されよう。
【００１４】
一般に、ＣＰＵ１０は実行ユニット２３、レジスタファイル２４及びフェッチ／デコーダ・ユニット２５を備えている。実行ユニット２３は、種々の算術（あるいは非記憶）命令等のプロセッサ命令を実行するためのＣＰＵ１０の処理コアである。レジスタファイル２４は、実行ユニット２３が必要とする種々の情報を記憶（あるいはセーブ）するための一群の汎用レジスタよりなる。より高度のシステムでは、２つ以上のレジスタファイルを設けることも可能である。フェッチ／デコーダ・ユニット２５は、実行されるプログラムの命令を保持する（メインメモリ１１のような）記憶場所から命令をフェッチし、それらの命令を実行ユニット２３によって実行されるように解読する。パイプライン型アーキテクチャを用いたさらに高度のプロセッサにおいては、命令が必要になったときフェッチされるのを待ってアイドル状態になるのを防ぐように、後で必要になる未来の命令がそれらが実際に必要になる前に先取りされ、解読される。
【００１５】
これらのＣＰＵ１０の様々な装置２３〜２５は内部バス構造２７に接続されている。バスインタフェースユニット（ＢＩＵ）２６は、ＣＰＵ１０の種々の構成ユニットないしは装置をバス１４に接続するためのインタフェースである。図２に示すように、Ｌ１キャッシュは内部バス２７に接続されており、ＣＰＵ１０用の内部キャッシュとして機能する。しかしながら、この場合も、Ｌ１キャッシュはＣＰＵ１０の外部に置いた上でバス１４に接続することも可能であるということに留意すべきである。これらのキャッシュはデータ、命令あるいはその両方をキャッシュ記憶するために用いることができる。一部システムでは、実際にはＬ１キャッシュを２つの部分に分割し、その１つの部分にデータをキャッシュ記憶し、もう１つの部分に命令をキャッシュ記憶することが行われる。しかしながら、説明を簡単にするために、図で説明する種々のキャッシュは各々単一のキャッシュとして示してあり、本願においてはデータ、命令及びその他の情報を全て含めてデータと総称する。図２に示す構成ユニットないしは装置の動作は周知のものであることは理解されよう。さらに、ＣＰＵ１０は実際には図示されているだけの構成要素以外にはるかに多くの構成要素を備えるということも理解されよう。従って、図２には本発明を理解する上において関係のある構成のみが示されている。一実施形態においては、本発明はデータキャッシュを有するシステムで使用される。しかしながら、本発明はどのような形態のキャッシュについても適用可能である。
【００１６】
また、コンピュータシステムは、（図２に破線によって示すように）２つ以上のＣＰＵを備えることも可能であるということに留意するべきである。このようなシステムにおいては、複数のＣＰＵがメインメモリ１１及び／または大容量記憶装置１２を共用することは通常行われている。従って、コンピュータシステムと関連づけられた一部あるいは全てのキャッシュをコンピュータシステムの種々のプロセッサによって共用することも可能である。例えば、図２のシステムで、各プロセッサのＬ１キャッシュ２１はそのプロセッサのみによって使用され、メインメモリ１１はシステムの全てのＣＰＵによって共有されるようなこともある。さらに、各ＣＰＵはそれぞれ対応する外部Ｌ２キャッシュ２２を有する。
【００１７】
本発明はシングルＣＰＵコンピュータシステムあるいはマルチＣＰＵコンピュータシステムとして実施することができる。さらに、メモリにアクセスする他の形態の構成ユニットないしは装置（プロセッサ以外）が本願で説明したＣＰＵと等価に機能することができ、従って、本願で説明したＣＰＵと同様のメモリアクセス機能を遂行することができるということも留意されよう。例えば、直接メモリアクセス（ＤＭＡ）デバイスは本願で説明したプロセッサと同様にメモリに容易にアクセスすることができる。このように、プロセッサ（ＣＰＵ）は１つしか持たないが、１つ以上のメモリアクセスユニットないしは装置を有するコンピュータシステムは、本願で説明したマルチプロセッサシステムと等価に機能するはずであろう。
【００１８】
上にも述べたように、図には２つのキャッシュ２１及び２２しか示されていない。しかしながら、コンピュータシステムは、必ずしも２レベルのキャッシュのみに限定されるものではない。現在、より進んだシステムでは第３レベル（Ｌ３）キャッシュを用いることは一般的に行われるようになっている。また、Ｌ１キャッシュにキャッシュ記憶されたデータがＬ２キャッシュにもキャッシュ記憶されるようにキャッシュメモリを直列配置構成にすることも一般的に行われている。仮にＬ３キャッシュが設けられる場合は、Ｌ２キャッシュにキャッシュ記憶されるデータは通常Ｌ３キャッシュにもキャッシュ記憶される。このように、ある特定のキャッシュレベルにキャッシュ記憶されるデータはそれより高いキャッシュ階層の全てのレベルにもキャッシュ記憶される。
【００１９】
図３は、本発明の技術が実装されたキャッシュメモリの構成の一実施形態を図解するブロック図である。一般に、キャッシュ構造に「ｘ」のセットと、１セット当たり「ｙ」のウェイ（ただしｙ≧２）があり、各ウェイには１つのデータエントリまたは１本のキャッシュラインが入っている。本発明によれば、そのセット中のいずれかのウェイに非テンポラリ（ＮＴ）データが書き込まれているかどうかを示すＬＲＵロックビットが設けられる。このようにＮＴデータが書き込まれていれば、正規または疑似のＬＲＵビットがそのＮＴデータを指示するように更新される。また、１セット毎に「ｚ」の正規または疑似のＬＲＵビットが設けられる。ＬＲＵロックビットがセットされていなければ、正規または疑似のＬＲＵビットは実装された最低使用頻度技術に従ってそのセット中のウェイを指示する。１セット当たりの正規または疑似のＬＲＵビットの数は、１セット当たりのウェイ数及び使用される（正規または疑似の）ＬＲＵ技術によって変わる。
【００２０】
図示のような実施形態においては、キャッシュ５０は４ウェイ・セット連想キャッシュとして編成されている。図３の例では、各ページはキャッシュサイズの４分の１に等しいものとして示されている。詳しく言うと、キャッシュ５０が４つの同じサイズのウェイ（例えば、ウェイ０（５２）、ウェイ１（５４）、ウェイ２（５６）及びウェイ３（５８））に分割され、メインメモリ１１（図１及び２も参照のこと）は図示のようにいくつかのページ（例えば、ページ０〜ページｎ）に分割されている。別の実施形態においては、各ページはキャッシュサイズより大きい場合もあれば、キャッシュサイズより小さい場合もある。キャッシュ５０の構成（図３に示すような）は、図１のキャッシュ１３、図２のＬ１キャッシュ及び／またはＬ２キャッシュ２２の中に実装することができる。
【００２１】
また、キャッシュ５０は最低使用頻度（ＬＲＵ）ビット６００〜６０ｎのアレイを備え、その各ビットが最低使用頻度データ（あるいはバイアスされたＬＲＵ技術が使用される場合においてはＮＴデータ）を有するセット中のウェイを指示する。このような表作成がキャッシュコントローラ１５の制御下でＬＲＵ技術に従って行われ、キャッシュセットがいっぱいの場合にどのキャッシュエントリを上書きするかが決定される。ＬＲＵ論理回路ないしは論理機構（図示省略）がそれまでの最低使用頻度のセット中のキャッシュ記憶場所を追跡し続ける。一実施形態においては、最低使用頻度ディレクトリアルゴリズムを厳密に追跡し続けるＬＲＵ技術を使用することもできる。もう一つの実施形態においては、最低使用頻度のディレクトリ要素を最良の形で追跡しようとする疑似ＬＲＵアルゴリズムが使用される。なお、説明の都合上、ビット６００〜６０ｎをＬＲＵビット６００〜６０ｎと称し、ＬＲＵビット６００〜６０ｎのアレイをＬＲＵビット６０と称する。
【００２２】
キャッシュ５０は、さらに、この後詳細に説明するように、所与のセット中のウェイ５２、５４、５６、５８のいずれかにキャッシュ５０を汚さないはずのデータ（すなわち、使用頻度の低いデータ）が書き込まれているどうかを指示するＬＲＵロックビット７０O〜７０ｎのアレイを備える。
【００２３】
図４は、本発明の原理に基づくキャッシュ・マネジメント技術を図解した表である。本発明は、ＬＲＵロックビット７００〜７０ｎのアレイを用いて、対応するキャッシュ記憶されたデータのいずれかがストリーミングデータあるいは非テンポラリデータであり、従って、対応するセットに対してキャッシュミスが生じたとき置換される最初のエントリであるのかどうかを指示する。一実施形態においては、ＬＲＵロックビット７０は、“１”にセットされている場合、対応するセットが非テンポラリのエントリを有することを示す。ＬＲＵロックビット７０がクリアないしはリセットされている場合は、テンポラリ命令によるキャッシュヒットによって、実装されたＬＲＵ技術に従って対応するＬＲＵビット６０が更新され、（図４のアイテム１参照）、それに関連付けられたＬＲＵロックビットは更新されない。しかしながら、ＬＲＵロックビット７０が既に“１”にセットされていれば（対応するセットが非テンポラリ命令を有することを示す）、ＬＲＵロックビット７０は更新されず、またＬＲＵビット６０も更新されない（アイテム２参照）。
【００２４】
非テンポラリ命令によりキャッシュヒットが生じた場合は、ＬＲＵロックビット７０の状態にかかわらずＬＲＵビット６０及びＬＲＵロックビット７０は更新されない（アイテム３参照）。別の実施形態においては、Ｌ１キャッシュコントローラの制御レジスタのモードビットを通して制御されるところに従い、ストリーミング命令あるいは非テンポラリ命令によるキャッシュヒットはＬＲＵビットをそのヒットされたウェイに強制する（アイテム４参照）。さらに、ＬＲＵロックビット７０は“１”にセットされる。この実施形態においては、ストリーミング命令あるいは非テンポラリ命令によってヒットしたデータは、対応するセットに対するキャッシュミス時に置換される最初のデータになる。
【００２５】
テンポラリ命令によるキャッシュミス発生時には、ＬＲＵロックビットはクリアされ、ＬＲＵビット６０は疑似ＬＲＵ技術に基づいて更新される（アイテム５）。しかしながら、ストリーミング命令あるいは非テンポラリ命令によるキャッシュミス時には、ＬＲＵロックビット７０は“１”にセットされ、対応するＬＲＵビット６０は更新されない（アイテム６）。
【００２６】
次に、図４の表に示されている各アイテムについて例示説明する。図５の５Ａ及び５Ｂは、テンポラリ命令がキャッシュセット０のウェイ２をヒットする前後におけるキャッシュメモリの編成の一例を図解したものである。この例は図４のアイテム１に対応する。この場合、キャッシュセット０に対してＬＲＵロックビット７００はあらかじめクリアされており、テンポラリ命令によってキャッシュセット０がヒットしたので、ＬＲＵロックビット７００は更新されない。しかしながら、ＬＲＵビット６００は実装されたＬＲＵ技術に従って更新される。この例では、疑似ＬＲＵ技術がウェイ３を最低使用頻度のエントリとして指示するものと仮定されている。
【００２７】
図６の６Ａ及び６Ｂは、テンポラリ命令がキャッシュセット０のウェイ２をヒットする前後におけるキャッシュメモリの編成のもう一つの例を図解したものである。この例は図４のアイテム２に対応する。この場合、キャッシュセット０に対して、ＬＲＵロックビット７００は、対応するセットに非テンポラリデータが書き込まれていることを指示すようあらかじめ“１”にセットされている。従って、ＬＲＵロックビット７００もＬＲＵビット６００も更新されない。
【００２８】
図７の７Ａ乃至７Ｄは、非テンポラリ命令がキャッシュセット０のウェイ２をヒットする前後におけるキャッシュメモリの編成のもう一つの例を図解したものである。この例は図４のアイテム３に対応し、Ｌ１キャッシュコントローラにあるモードビットを“０”にセットして実施することができる（図４参照）。第１の場合においては（図７Ａ及び７Ｂ）、キャッシュセット０に対してＬＲＵロックビット７００があらかじめクリアされている。この実施形態では、非テンポラリ命令のキャッシュヒットはＬＲＵロックビット７０を更新させない。従って、キャッシュセット０が非テンポラリ命令によってヒットしたから、ＬＲＵロックビット７００もＬＲＵビット６００も更新されない。第２の場合は（図７Ｃ及び７Ｄ）、キャッシュセット０に対して、ＬＲＵロックビット７００は対応するセットに非テンポラリデータが書き込まれていることを指示するようあらかじめ“１”にセットされている。従って、ＬＲＵロックビット７００もＬＲＵビット６００も更新されない。
【００２９】
図８の８Ａ乃至８Ｄは、非テンポラリ命令がキャッシュセット０のウェイ２をヒットする前後におけるキャッシュメモリの編成のもう一つの例を図解したものである。この例は図４のアイテム４に対応し、Ｌ１キャッシュコントローラにあるモードビットを“１”にセットして実施することができる（図４参照）。第１の場合では（図８Ａ及び８Ｂ）、キャッシュセット０に対してＬＲＵロックビット７００あらかじめクリアされている。図７Ａ乃至７Ｄに示す例のもう一つの態様であるこの例においては、非テンポラリ命令のキャッシュヒットがＬＲＵロックビット７０を更新させる。従って、図８Ａに示すように、キャッシュセット０が非テンポラリ命令によってヒットしたので、図８Ｂに示すようにＬＲＵロックビット７００は更新される（“１”にセットされる）。さらに、ＬＲＵビット６００はウェイがヒットしたことを示すよう更新される。キャッシュセット０に対してＬＲＵロックビット７００があらかじめ“１”にセットされていた場合は（図８Ｃ及び８Ｄ）、ＬＲＵロックビット７００は“１”にセットされたまま保たれる。さらに、ＬＲＵビット６０ｏはヒットしたセット中のウェイを指示するようにされる。
【００３０】
図９の９Ａ及び９Ｂは、テンポラリ命令がキャッシュセット０に対してミスとなる前後におけるキャッシュメモリの編成の一例を図解したものである。この例は図４のアイテム５に対応する。この場合、キャッシュセット０に対してＬＲＵロックビットはあらかじめ“１”にセットされ、セット０を探すテンポラリ命令によりキャッシュミスが生じたかから、そのセットについて、ＬＲＵロックビット７００はそのキャッシュにおけるテンポラリ命令のミスが置換されると同時にクリアされる。しかしながら、ＬＲＵビット６００は実装されたＬＲＵ技術に従って更新される。この例では、疑似ＬＲＵ技術はウェイ３が最低使用頻度のエントリであると指示する。
【００３１】
図１０の１０Ａ及び１０Ｂは、非テンポラリ命令がキャッシュセット０に対してミスとなる前後におけるキャッシュメモリの編成の一例を図解したものである。この例は図４のアイテム６に対応する。この場合、キャッシュセット０に関してＬＲＵロックビット７００あらかじめクリアされている。キャッシュセット０に対する非テンポラリ命令のキャッシュミスがあるため、対応するセット０における非テンポラリデータを指示するよう、ＬＲＵロックビット７００はセットされ、ＬＲＵビット６００は前と同じ状態に保たれる。
【００３２】
本発明の装置及びウェイを実装することによって、キャッシュあるいはキャッシュ階層におけるデータ汚染が最小となるテンポラリ命令及び非テンポラリ命令を管理するための共用キャッシュ構造が達成され、本発明を実装することによって別途バッファを使用する必要がなくなり、発明実施上、費用効果及び効率が共に改善される。
【００３３】
本発明は、その精神あるいは不可欠の特徴を逸脱することなく、他の具体的な態様で実施することが可能である。本願で開示、説明した実施形態は全ての点において例示説明を目的としして解釈されるべきものであり、本発明を限定する意味を有するものではない。従って、発明の範囲は、以上の説明ではなく特許請求の範囲の記載によって示される。特許請求の範囲に記載する所と等価の意味及び意味及び範囲内の変更態様は全て本発明の範囲に包括されるべきものである。
【図面の簡単な説明】
【図１】  本発明が実装されたコンピュータシステムの一実施形態の回路ブロック図を示し、図示実施形態においてはコンピュータシステムのメインメモリとプロセッサとの間におけるデータアクセスのためにキャッシュメモリが使用される。
【図２】  本発明が実装されたコンピュータシステムの第２の実施形態の回路ブロック図を示し、図示実施形態においてはコンピュータシステムのメインメモリとプロセッサとの間におけるデータアクセスのために、キャッシュメモリ階層構造に編成された２つのキャッシュメモリが使用される。
【図３】  本発明の技術が実装されたキャッシュメモリの構成の一実施形態を図解したブロック図である。
【図４】  本発明の一実施形態に基づくキャッシュ・マネジメント技術を図解した表である。
【図５】  本発明の一実施形態においてテンポラリ命令がキャッシュセット０のウェイ２をヒットする前後におけるキャッシュメモリの編成の一例を５Ａと５Ｂに分けて図解した説明図である。
【図６】  本発明の一実施形態においてテンポラリ命令がキャッシュセット０のウェイ２をヒットする前後におけるキャッシュメモリの編成のもう一つの例を６Ａと６Ｂに分けて図解した説明図である。
【図７Ａ】  本発明の一実施形態において非テンポラリ命令がキャッシュセット０のウェイ２をヒットする前後におけるキャッシュメモリの編成の一例を７Ａ乃至７Ｄに分けて図解した説明図である。
【図７Ｂ】  本発明の一実施形態において非テンポラリ命令がキャッシュセット０のウェイ２をヒットする前後におけるキャッシュメモリの編成の一例を７Ａ乃至７Ｄに分けて図解した説明図である。
【図７Ｃ】  本発明の一実施形態において非テンポラリ命令がキャッシュセット０のウェイ２をヒットする前後におけるキャッシュメモリの編成の一例を７Ａ乃至７Ｄに分けて図解した説明図である。
【図７Ｄ】  本発明の一実施形態において非テンポラリ命令がキャッシュセット０のウェイ２をヒットする前後におけるキャッシュメモリの編成の一例を７Ａ乃至７Ｄに分けて図解した説明図である。
【図８Ａ】  本発明の一実施形態において非テンポラリ命令がキャッシュセット０のウェイ２をヒットする前後におけるキャッシュメモリの編成のもう一つの例を８Ａ乃至８Ｄに分けて図解した説明図である。
【図８Ｂ】  本発明の一実施形態において非テンポラリ命令がキャッシュセット０のウェイ２をヒットする前後におけるキャッシュメモリの編成のもう一つの例を８Ａ乃至８Ｄに分けて図解した説明図である。
【図８Ｃ】  本発明の一実施形態において非テンポラリ命令がキャッシュセット０のウェイ２をヒットする前後におけるキャッシュメモリの編成のもう一つの例を８Ａ乃至８Ｄに分けて図解した説明図である。
【図８Ｄ】  本発明の一実施形態において非テンポラリ命令がキャッシュセット０のウェイ２をヒットする前後におけるキャッシュメモリの編成のもう一つの例を８Ａ乃至８Ｄに分けて図解した説明図である。
【図９】  本発明の一実施形態においてテンポラリ命令がキャッシュセット０に対してミスとなる前後におけるキャッシュメモリの編成の一例を９Ａ及び９Ｂに分けて図解した説明図である。
【図１０】  本発明の一実施形態において非テンポラリ命令がキャッシュセット０に対してミスとなる前後におけるキャッシュメモリの編成の一例を１０Ａ乃至１０Ｄに分けて図解した説明図である。
【図１】
0004486750.tif 000002
【図２】
0004486750.tif 000003
【図３】
0004486750.tif 000004
【図４】
0004486750.tif 000005
【図５】
0004486750.tif 000006
【図６】
0004486750.tif 000007
【図７Ａ】
0004486750.tif 000008
【図７Ｂ】
0004486750.tif 000009
【図７Ｃ】
0004486750.tif 000010
【図７Ｄ】
0004486750.tif 000011
【図８Ａ】
0004486750.tif 000012
【図８Ｂ】
0004486750.tif 000013
【図８Ｃ】
0004486750.tif 000014
【図８Ｄ】
0004486750.tif 000015
【図９】
0004486750.tif 000016
【図１０】
0004486750.tif 000017
0004486750.tif 000018