(57)【特許請求の範囲】
【請求項１】
データまたは命令である記憶情報を保持するための主メモリと、データ・キャッシュ及び命令キャッシュを含むキャッシュ・メモリを備えたコンピュータによって利用される、先取りユニットによって用いられる先取り命令を生成する方法において、
命令／データ・フィールドを含む先取り命令を受け取るステップと、
前記命令／データ・フィールドに、前記記憶情報が命令であるか、または、データであるかを示す先取りタイプの値を充填し、これによって、前記情報を前記命令キャッシュに記憶すべきか、または、前記データ・キャッシュに記憶すべきかを指示するステップと、
を有する方法。
【請求項２】
記憶情報を保持するための主メモリ及びキャッシュ・メモリを備えたコンピュータによって利用される、先取りユニットによって用いられる先取り命令を生成する方法において、
サイズ・フィールドを含む初期先取り命令を受け取るステップと、
前記主メモリから検索すべき情報及び前記キャッシュ・メモリに記憶すべき情報の量を示す先取りタイプ値を前記サイズ・フィールドに充填するステップと、
を有する方法。
【請求項３】
記憶情報を保持するための主メモリと少なくとも２つのキャッシュ・セットを含むキャッシュ・メモリを備えたコンピュータによって利用される、先取りユニットによって用いられる先取り命令を生成する方法において、
キャッシュ・セット・フィールドを含む先取り命令を受け取るステップと、
前記キャッシュ・セット・フィールドに先取りタイプ値を充填して、前記主メモリから検索した情報を前記少なくとも２つのキャッシュ・セットのどちらに記憶すべきかを指示するステップと、
を有する方法。
【請求項４】
メモリ管理装置、データまたは命令である記憶情報を保持するための主メモリ、及び、データ・キャッシュ及び命令キャッシュを含むキャッシュ・メモリを備えたコンピュータによって利用される、先取り命令を生成する方法において、
初期先取り命令を受け取るステップと、
前記メモリ管理装置が前記初期先取り命令を強化し、前記記憶情報が命令であるか、または、データであるかを指示する、従って、前記情報を前記命令キャッシュに記憶すべきか、または、前記データ・キャッシュに記憶すべきかを指示する先取りタイプ値が含まれている、命令／データ・フィールドを含む出力として、強化先取り命令を生成するステップと、
を有する方法。
【請求項５】
メモリ管理装置、記憶情報を保持するための主メモリ、及び、キャッシュ・メモリを備えたコンピュータによって利用される、先取り命令を提供する方法において、
初期先取り命令を受け取るステップと、
前記メモリ管理装置が前記初期先取り命令を強化し、前記主メモリから検索すべき情報及び前記キャッシュ・メモリに記憶すべき情報の量を指示する先取りタイプ値が含まれているサイズ・フィールドを含む出力として、強化先取り命令を生成するステップと、
を有する方法。
【請求項６】
メモリ管理装置、記憶情報を保持するための主メモリ、及び、少なくとも２つのキャッシュ・セットを含むキャッシュ・メモリを備えたコンピュータによって利用される、先取り命令を提供する方法において、
初期先取り命令を受け取るステップと、
前記メモリ管理装置が前記初期先取り命令を強化し、前記主メモリから検索した情報を前記少なくとも２つのキャッシュ・セットのどちらに記憶すべきかを指示する先取りタイプ値が含まれているキャッシュ・セット・フィールドを含む出力として、強化先取り命令を生成するステップと、
を有する方法。
【請求項７】
ＣＰＵ、データまたは命令である記憶情報を保持するための主メモリ、及び、データ・キャッシュ及び命令キャッシュを含むキャッシュ・メモリから成り、前記ＣＰＵが、前記主メモリに記憶されている前記ＣＰＵに必要となる情報の先取りを実施するように構成された先取り命令が含まれている命令ストリームを実行するように構成されている、強化先取り命令を生成するためのコンピュータ・システムにおいて、
初期先取り命令を受け取って、前記主メモリに記憶されている前記ＣＰＵに必要となる情報が命令であるか、または、データであるかを指示する、従って前記情報を前記命令キャッシュに記憶すべきか、あるいは前記データ・キャッシュに記憶すべきかを指示する先取りタイプ値が含まれている命令／データ・フィールドを備えた強化先取り命令を出力として生成するように構成されたメモリ管理装置と、
前記情報が、前記命令／データ・フィールドに含まれている前記先取りタイプ値に基づいて前記主メモリから検索され、前記命令キャッシュまたは前記データ・キャッシュに記憶されるように、前記強化先取り命令を実行するように構成された先取りユニットと、
を有するコンピュータ・システム。
【請求項８】
ＣＰＵ、及び、データまたは命令である記憶情報を保持するための主メモリを備え、前記ＣＰＵが、前記主メモリに記憶されている前記ＣＰＵに必要となる情報の先取りを実施するように構成された少なくとも１つの先取り命令が含まれている命令ストリームを実行するように構成されている、コンピュータと連係して機能するように構成された先取り強化装置において、
少なくとも１つの前記先取り命令を受信して、前記主メモリに記憶されている前記ＣＰＵに必要となる情報が命令であるか、または、データであるかを指示する、従って、前記情報を命令キャッシュに記憶すべきか、または、データ・キャッシュに記憶すべきかを指示する先取りタイプ値が含まれている命令／データ・フィールドを備えた強化先取り命令を出力として生成するように構成されたメモリ管理装置と、
前記情報が、前記命令／データ・フィールドに含まれている前記先取りタイプ値に基づいて前記主メモリから検索され、前記命令キャッシュまたは前記データ・キャッシュに記憶されるように、前記強化先取り命令を実行するように構成された先取りユニットと、
を有する先取り強化装置。
【請求項９】
前記データ・キャッシュに、少なくとも２つのデータ・キャッシュ・セットが含まれ、前記メモリ管理装置によって生成される前記強化先取り命令に、前記主メモリから検索された情報を前記データ・キャッシュ・セットのどちらに記憶すべきかを指示するように構成された先取りタイプ値が含まれている、データ・キャッシュ・セット・フィールドが含まれる請求項８に記載の装置。
【発明の詳細な説明】
【０００１】
【発明が属する技術分野】
本発明は、メモリ管理装置に関するものであり、とりわけ、主メモリからキャッシュ・メモリにデータ及び命令を供給する先取り命令に関するものである。
【０００２】
【従来の技術】
最新世代のコンピュータ・コンポーネント、とりわけ、マイクロプロセッサ（ＣＰＵ）は、旧世代のものに比べるとはるかに高速で動作する。ＣＰＵは、動作する際、主メモリからのデータと命令の両方にアクセスして、その動作を実施しなければならない。従って、ＣＰＵの速度が増すと、データ及び命令の高速検索への要求も高まる。しかし、主メモリからデータ及び命令を検索するためのアクセス時間は、ＣＰＵが、遊休状態のまま、要求されるデータまたは命令の受信を待つことになるので、ＣＰＵの動作を相当に減速させることになるのが普通である。このタイム・ラグはメモリ待ち時間と呼ばれる。
【０００３】
現時点において、ＣＰＵは、１０ナノ秒未満のクロックを備え、一方、主メモリは、６０ナノ秒のクロックを備えているので、組み合わせると、メモリ待ち時間比は１０対１になる。近い将来、改良されたマイクロプロセッサは、３ナノ秒未満のクロックを備えることが予測され、一方、主メモリは、改良されても、５０ナノ秒のクロックを備えることにしかならないものと予測される。従って、メモリ待ち時間が増して、１５対１の比率を超えることになるものと予測される。
【０００４】
メモリ待ち時間に対する２つの構成要素が存在する。第１の構成要素であるバス転送時間は、メモリに要求を転送し、その要求された情報を転送するのに要する時間量の関数である。第２の構成要素は、主メモリのアクセス時間それ自体である。アドレス復号化及びダイナミックＲＡＭ（ＤＲＡＭ）のＣＭＯＳテクノロジの他のロジックは、主メモリからの情報に対するアクセスに固有の遅延の原因となる。アプリケーションは仮想アドレス（ＶＡ）だけしか生成しないので、ＶＡを主メモリ内における情報の物理アドレス（ＰＡ）に変換したものを主メモリよりもＣＰＵに近いある記憶場所に記憶することによって、主メモリに記憶されている情報に対するアクセス時間が短縮される。この点において、ＣＰＵがデータ及び命令をアクセスするとき、「メモリ管理装置」（ＭＭＵ）がデータ及び命令の管理を助ける働きをする。従って、変換は、ＭＭＵの一部をなす「変換索引バッファ」（ＴＬＢ）に記憶される。要求された変換がＴＬＢにない場合、ＴＬＢに欠落があるので、主メモリに記憶されているページ・テーブルを調べることによって、ＶＡからＰＡへの変換を得なければならない。
【０００５】
メモリ待ち時間を回避するため、頻繁に用いられるデータ及び命令は、主メモリに記憶されるだけではなく、よりＣＰＵに近い「キャッシュ」・メモリに記憶される。キャッシュは、主メモリよりはるかに少ないラインのための容量しかなく、スタティック・ＲＡＭ（ＳＲＡＭ）である（ＤＲＡＭに比べるとはるかに高速で、電力消費がはるかに大きく、はるかに高価である）。実際、上述のＴＬＢは、キャッシュ・メモリに似ている。従って、キャッシュの機能は、はるかにアクセス時間が長くなる主メモリから呼び出す代わりに、頻繁に用いられるデータまたは命令をＣＰＵの近くに納めて、メモリ待ち時間の影響を軽減することにある。
【０００６】
キャッシュ・メモリによってメモリ待ち時間の影響が軽減されるが、その構造のためにそれ自体の問題が悪化する。図１を参照すると、最も単純なタイプのキャッシュであるシングル・セット・キャッシュが示されている。主メモリ１０とキャッシュ１２及びＣＰＵ１４の組み合わせとの離隔距離は、キャッシュ１２とＣＰＵとの互いの離隔距離よりかなり大きく描かれている。すなわち、「スラッシング」の問題によって、「ミス・ペナルティ」として知られるスピード・ペイメントが導入される。ミス・ペナルティは、キャッシュに必要なデータをロードするのに必要な時間遅延に等しい。
【０００７】
スラッシングが生じるのは、複数データ要素が同じキャッシュ・セットを利用する場合である。図１に戻ると、主メモリ１０は、それぞれ、１００オフセット単位のインクリメントで１００〜１０００のラインを含む「ページ」に分割される（実際には、主メモリには、もっと多くのページが含まれることになる）。従って、最初のページがライン１００〜１０００を占め、第２のページには、ライン１１００〜２０００が含まれ、以下同様になっている。
【０００８】
スラッシングを例示するため、図１には、主メモリから検索され、キャッシュのオフセット４００に記憶されているライン１４００をＣＰＵが要求したところが示されている。ときどきそのすぐ後、ＣＰＵはライン２４００を要求すると、主メモリから検索され、やはりキャッシュのオフセット４００にマッピングされ、従って、既に記憶されているライン１４００に重ね書きされる。キャッシュには要求されたラインが含まれておらず、主メモリから検索することが必要になるので、ミス・ペナルティを被ることになった。そのすぐ後、ＣＰＵはライン１４００が再び必要になり、これを要求すると、主メモリから検索され、キャッシュのオフセット４００にマッピングされ、従って、既に記憶されているライン２４００に重ね書きされる。再び、ミス・ペナルティを被ることになった。２つのライン１４００及び２４００が、両方とも、ＣＰＵによって定期的に必要とされる場合、スラッシングのピンポン効果によって、繰り返しミス・ペナルティを被ることになる。
【０００９】
主メモリから頻繁に用いる情報（データまたは命令）の受けるのを待つのにかなりの時間を費やすため、スラッシングによって、ＣＰＵの処理速度は大幅に低下する。こうした場合、複合化されたミス・ペナルティによってＣＰＵの性能が抑制されることになる。逆に、よく用いられる情報が、キャッシュにいつでも記憶されているとしたら、ＣＰＵはそのピークの能力で動作することが可能になろう。従って、マイクロプロセッサの速度が引き続き向上すると、ミス・ペナルティのペイメントも増大することになる。
【００１０】
スラッシングの問題を解消しようと努力して、導入されることになった多種多様なキャッシュ構造が存在する。例えば、一般的な解決策の一つは、シングル・セット・キャッシュの代わりに「マルチ・セット・キャッシュ」を用いることである。図２を参照すると、競合するラインのために二つ以上のオフセット記憶場所を提供することが潜在的に可能な２セット・キャッシュが示されている。セット１２及びセット１４は、両方とも、情報を記憶するためのオフセット４００の記憶場所を備えている。従って、ライン１４００及び２４００は、両方とも、同時にキャッシュに記憶することが可能であり、これらのいずれかを交互に要求しても、おそらく、スラッシングを生じることはない。実際の利点は実際にプログラムを実行することに依存する。しかし、マルチ・セットによって、シングル・セット・キャッシュに比べて改善されたとしても、ミス・ペナルティに関する性能コストは、ＣＰＵの処理速度が増すにつれて、引き続き増大することになる。
【００１１】
データと命令に対して別々のキャッシュが設けられるハーバード・アーキテクチャの場合、少なくともデータが命令とスラッシングを生じることに対して、スラッシングが軽減される。もちろん、上述のように、ＳＲＡＭは高価であり、従って、とりわけハーバード・アーキテクチャにおけるマルチ・セット・キャッシュのセット数には制限がある。
【００１２】
スラッシングを回避するもう一つの方法は、必要になる前に、データと命令をキャッシュに「先取り」しておくことである。すなわち、ＣＰＵからの要求を待つのではなく、実際に必要とされる前に、ＣＰＵがどんな情報を必要とするかを予測しようと試みる各種メカニズムが存在する。例えば、ＳＰＡＲＣ（Ｒ）バージョン９アーキテクチャには、データをデータ・キャッシュに先取りするデータ先取り命令を実行する能力が組み込まれている。しかし、この先取り命令によって可能になるのは、不変の静的サイズの先取りであり、他の能力は得られない。
【００１３】
現在のところ、静的、非特定先取り命令が、コンパイル時にコンパイルされるコードに挿入され、コンパイルされた命令ストリームの一部として実施される。不変の静的先取り命令は、命令ストリームに加え、既存のアーキテクチャによって実施するのは簡単であるが、検索した情報をどのキャッシュまたはキャッシュ・セットに記憶すべきか、あるいは、どれだけの情報を検索すべきかに関する情報が、命令ストリームに含まれていないので、こうした案によって、キャッシュ・メモリの管理は必ずしも強化されるわけではない。近い将来に予測されるＣＰＵの速度の大幅な向上を考慮すると、スラッシングの確率をいっそう低下させる先取り制御を可能にすることが有利である。
【００１４】
【発明が解決しようとする課題】
ハーバード・アーキテクチャの場合、命令とデータを異なるキャッシュに記憶することが可能であり、先行技術による先取りは、データの先取りを可能にするので、命令とデータを適合するキャッシュに書き込むようにする動的方法及びシステムが有利であろう。さらに、先取りのサイズ、または、情報が書き込まれるマルチ・セット・キャッシュの特定のセットを動的に制御する、従って、キャッシュ・メモリ管理プロセスを最大限に活用することが有利であろう。
【００１５】
本発明は、主メモリからのデータまたは命令の先取りを可能にする方法及びシステムである。
【００１６】
【課題を解決するための手段】
命令ストリームの一部をなす先取り命令は、先取りキャッシュ制御情報が既存の先取り命令に付加されている強化ＭＭＵによって処理される。ＴＬＢによって処理されると、先取り命令には、２進フィールドが含まれることになり、この２進フィールドに、最適なキャッシュ・セット記憶場所及び先取りすべき最適データ量を規定する、従って、スラッシングを軽減することになる値を割り当てることによって、オペレーティング・システム、ローダ、または、実行時ソフトウェアは、キャッシュの先取りを制御することが可能になる。
【００１７】
独立した命令キャッシュ及びデータ・キャッシュによるハーバード・アーキテクチャの支援は、独立した命令キャッシュ及びデータ・キャッシュの動的ソフトウェア制御によって可能になる。すなわち、先取り命令には、検索を受ける情報のタイプによって、データの先取りか、あるいは、命令の先取りかを指示するフィールドが含まれている。キャッシュ・セット番号は、実行時ソフトウェアまたはオペレーティング・システムによって動的に調製され、どのセットに情報をプリロードすべきかが指示される。サイズ・フィールドも、要求される情報に応じて可変先取りサイズが得られるように動的に調整される。アドレス・フィールドは、先取りの開始アドレスを指示する。
【００１８】
【発明の実施の形態】
上述のように、ＣＰＵからの要求を待つのではなく、実際に必要になる前に、ＣＰＵがどの情報を必要とすることになるかを予測しようと試みる各種メカニズムが存在する。先取りメカニズムには、次のラインがキャッシュによるミスを生じるものと予測して、先取りを実施するものがある。先取り命令は、例えば、現在のＰＡ  Ｒｉｓｃ、ＳＧＩ−ＭＩＰＳ、及び、パワーＰＣに用いられている。
【００１９】
一般に、全てのミスが否応なく生じるものと仮定して、取り出された最後のラインに続くラインが先取りされ、ライン・バッファに記憶される、すなわち、取り出されるラインは、それまでキャッシュに納められていないものである。次のミスを予測して先取りが行われるキャッシュは、「フェッチ・オールウェイズ」またはクラス２キャッシュと呼ばれる。逆に、ミスを生じたラインだけが取り出されるキャッシュは、クラス１、フェッチ・オン・デマンド、または、フェッチ・オン・フォールト・キャッシュと呼ばれる。本発明は、任意のタイプの先取りメカニズムと組み合わせて用いられ、キャッシュ構造を管理する初期先取りコマンドに対する拡張として実行される。
【００２０】
コンピュータ・システムにおいて、コンパイラは、一般に、オブジェクト・プログラムに所定のコンピュータにおけるそのプログラムの実行に必要な命令を組み込む。すなわち、コンパイラは、特定の高レベル言語（ソース・コード）による入力プログラムを特定の機械タイプの機械言語（オブジェクト・コード）に変換するプログラムである。従って、上述の先取りコマンドは、コンパイラによって生成され、その結果生じるオブジェクト・コードまたは命令ストリームの一部として実行される。
【００２１】
上述のように、本発明以前には、先取り命令によって、不変、静的サイズの先取りが可能であったが、キャッシュ・セット管理のような他の能力は得られなかった。すなわち、先行技術の先取り命令は、先取りをトリガするだけであった。一方、本発明によれば、先取り命令に処理を加え、処理が済むと、ＴＬＢ項目に、オペレーティング・システム（Ｏ／Ｓ）、ローダ、または、実行時ソフトウェアによる先取りの制御を可能にする２進フィールドが含まれることになる強化ＴＬＢ（従って、ＭＭＵ）が得られる。そうするとき、先取りハードウェアには、最適なキャッシュ・セット記憶場所、及び、先取りすべき最適データ量に関する情報が提供されるので、スラッシングが軽減されることになる。
【００２２】
ＴＬＢ先取り項目に先取り制御情報を納めることによって、キャッシュ制御は、先取り命令によって明示的に送り出されるのではなく、ページ毎に実行されることになる。こうしたメカニズムによって、制御情報のない先取り命令を備えたアーキテクチャとの互換性が得られる。さらに、オペレーティング・システム・ソフトウェアによって、実行時にページ毎に制御を変更することが可能になる。
【００２３】
図３を参照すると、先取り命令２０には、ＴＬＢ２２によって処理される命令ストリームの一部として仮想アドレスが含まれている。一般に、ＴＬＢは、仮想・物理アドレス・マッピング、アクセス制御、及び、従来のＴＬＢ２２の項目に含まれる他の２進要素に関する情報を含む＜Ａｄｄｒ  ＴｒａｎｓｌａｔｉｏｎＩｎｆｏ＞フィールドを生成する。しかし、本発明によれば、結果得られる、ＴＬＢ２２で処理されたアドレスには、下記の２進フィールドを含む追加フィールドが含まれている：
＜Ａｄｄｒ  Ｔｒａｎｓｌａｔｉｏｎ  Ｉｎｆｏ＞＜Ｐｒｅｆｅｔｃｈ  Ｆａｕｌｔ  Ｂｉｔ＞＜Ｉ／Ｄ  ＢＩＴ＞＜ＳＥＴ  ＃＞＜ＳＩＺＥ＞
【００２４】
ＭＭＵ出力フィールドがＯ／Ｓによって充填され、２つの操作、すなわち、メモリからの情報検索とキャッシュ管理、に有効な２進値が含まれることになる。〈Ｐｒｅｆｅｔｃｈ  Ｆａｕｌｔ  Ｂｉｔ〉がセットされている時に、ＭＭＵにマッピングするアドレスのために先取り命令が実行されると、＜Ｐｒｅｆｅｔｃｈ  Ｆａｕｌｔ  Ｂｉｔ＞によって、プロセッサのフォールトが生じる。＜Ｉ／Ｄ  ＢＩＴ＞フィールドは、先取りがデータのために行われるのか、あるいは、命令のために行われるのかを指示する。＜ＳＥＴ  ＃＞フィールドの識別によって、どのセットに情報をプリロードすべきかが指示される。＜ＳＩＺＥ＞フィールドによって、可変先取りサイズが得られる。上述の先取り命令フィールドまたはその任意の部分は、任意のアクセス可能な記憶場所に記憶されているＯ／Ｓ、ローダ、実行時ソフトウェア、または、コンパイラによる充填が可能である。コンパイラまたはローダは、フィールドに関する省略時初期値の供給に利用することが可能である。
【００２５】
代替案として、コンパイルされる先取り命令に、コンパイラによって空フィールドを設けることによって、最終的には、オペレーティング・システム、ローダ、または、実行時ソフトウェアが、特定の原則に従って、実行中にフィールドに対して２進値を与えることができるようにすることが可能であり、これは、本発明の範囲内である。
【００２６】
これらのフィールドは、充填されると、主メモリ３０にメモリ要求を出し、先取りした情報をキャッシュ・メモリに記憶させる先取りユニット２４によって処理を受ける。キャッシュ・メモリは命令キャッシュ２６及びデータ・キャッシュ２８を含む。従って、スラッシングは、上述のフィールドに充填し、最適なキャッシュ・セット記憶場所及びデータの取り出し量に関する情報が、先取り制御ハードウェア２４に提供されるようにすることによって軽減される。
【００２７】
図３示すように、先取りユニット２４は、主メモリから検索したデータを命令キャッシュ２６及びデータ・キャッシュ２８に送り、「Ｓｅｔ  ０」、「Ｓｅｔ１」、．．．「Ｓｅｔ  Ｎ」で表示の矢印による指示に従って、その情報が特定のセットに記憶されるように指定する。こうした指定の有用性が、図４に示されている。
【００２８】
図４を参照すると、ＣＰＵ３２及び主メモリ３４が、ハーバード・アーキテクチャのマルチ・セット（この場合、２セット）・キャッシュであるキャッシュ・メモリ３６と共に示されている。Ｉｎｓｔｒｕｃｔｉｏｎ  Ｃａｃｈｅ  Ｓｅｔ＃１及び＃２が示され、Ｄａｔａ  Ｃａｃｈｅ  Ｓｅｔ  ＃１及び＃２が示されている。例えば、Ｏ／Ｓによって生成される先取り命令には、下記の値が含まれる：
＜Ｐｒｅｆｅｔｃｈ  Ａｄｄｒ  Ｉｎｆｏ＞＜Ｉ＞＜１＞＜３００＞＜４＞
【００２９】
こうした場合、先取りを実行すると、ライン３００で始まる、４ライン・サイズのＩｎｓｔｒｕｃｔｉｏｎ  Ｃａｃｈｅ  Ｓｅｔ  ＃１命令、すなわち、ライン３００、４００、５００、及び、６００を検索し、記憶することになる。先取りハードウェア２４（図３参照）にこの情報を提供することによって、スラッシングの軽減は、下記のように強化される。ライン３００から始まる、４ラインから構成されるメモリ・ブロックには、特定の操作を実施するのに必要な、Ｉｎｓｔｒｕｃｔｉｏｎ  Ｓｅｔ  ＃１に記憶されるラインが含まれていることが望ましい。異なる先取りにおいて、ライン１３００で始まるメモリ・ブロックは、異なる特定の操作の実施に必要な２ラインから構成され、従って、Ｉｎｓｔｒｕｃｔｉｏｎ  Ｓｅｔ  ＃１におけるキャッシュ・ミスを回避するため、ライン３００で始まるブロックとは異なるセット、すなわち、Ｉｎｓｔｒｕｃｔｉｏｎ  Ｓｅｔ  ＃２に記憶される。サイズ・フィールド及びキャッシュ・セット記憶場所フィールドの最適化プロセスについては、以下で述べる。
【００３０】
上述のように、＜ＳＩＺＥ＞フィールドによって、取り出すべきライン量を指示する２進数が得られる。実施例の一つでは、サイズ・フィールドの最適化は、「先入れ−−先出し」（ＦＩＦＯ）方式で保持されているプログラム・カレンダのヒストグラムに各先取りの履歴を記録して、キャッシュ・ミスのモニタを行うことによって実施される。ヒストグラムは、例えば、物理アドレス、そのアドレスに対応する先取り、先取り時間、及び、特定のデータがキャッシュに保持されたクロック・サイクル数のテーブルである。このメカニズムにおいて、Ｏ／Ｓまたは実行時ソフトウェアは、ビットの置換に関する原則を有しており、ミス及び置換に関する情報を受信すると、その原則に基づいてサイズ・フィールドを変更することが可能である。異なる方法において、Ｏ／Ｓは、命令先取りについてはある省略時サイズを利用し、データ先取りについては別の省略時サイズを利用して、サイズを決定する。別の実施例では、サイズは、ページ毎にローダ・ソフトウェアによって統計的に割り当てることが可能であり、ローダは、同じページにおいて同様のサイズのデータ構造を割り当てることが可能である。さらにもう一つの実施例では、プログラムは、数回にわたって実行され、その性能は、ページ毎に省略時解釈として用いられる各種サイズのインクリメントによって測定される。
【００３１】
図５を参照すると、本発明のステップを実施する順序を明らかにしたフローチャートが示されている。プログラムは、まず、要素４０から開始する。ステップ４２において、カウンタが初期化され、全てのフィールドがゼロにセットされる。次のステップは、４４において、ＴＬＢミスの有無を判定することである。応答がイエスの場合、すなわち、ＴＬＢミスが存在する場合、次のステップは、先取りフォールト・ビットをセットする、中断命令を開始することである。すなわち、ステップ４６において、このＴＬＢ項目を参照する最初の先取り命令によって、先取りフォールトが生じる。Ｏ／Ｓは、このフォールトを生じる参照が、命令に関するものか、あるいは、データに関するものかを判定し、Ｉ／Ｄビットを適正にセットすることが可能である。Ｃａｃｈｅ  Ｓｅｔ  ＃フィールドにラウンド・ロビン方式で値を割り当てることによって、Ｃａｃｈｅ  Ｓｅｔ  ＃フィールドに最近用いられた最も小さいキャッシュ・セット番号が納められるようにすることが可能である。Ｓｉｚｅフィールドも上述のようにセットされる。ステップ４８において、Ｏ／Ｓは、これに従ってＴＬＢのロードを行い、この命令が先取り命令であるか否かを尋ねる。それが先取り命令でなければ、次のステップは、５０において、ただ次の命令を実行するだけのことである。
【００３２】
ステップ４４に戻って、ＴＬＢミスがないと分かった場合、システムは、ステップ４６をスキップし、ステップ４８において、この命令が先取り命令であるか否かを尋ねる。やはり、先取り命令でない場合には、次のステップは、５０において、ただ次の命令を実行するだけのことである。
【００３３】
ステップ４８において、このシステムが、問題となる命令が先取り命令であると判定すると、ステップ５２において、その先取り命令がデータを参照するか否かの質問が行われる。その先取り命令がデータを参照する場合、ステップ５４において、Ｉ／Ｄビットはデータにセットされる。その先取り命令が命令を参照する場合、ステップ５６においてＩ／Ｄビットは命令にセットされる。ハーバード・アーキテクチャを備えたシステムの場合、＜Ｉ／Ｄ＞フィールドは、どのキャッシュに、すなわち、命令キャッシュとデータ・キャッシュのどちらに、検索した情報を記憶すべきかを指示する。
【００３４】
上述のように、ステップ５２において、先取りがデータの先取りということになると、このシステムは、ステップ５４においてＩ／Ｄビットをデータにセットする。このシステム及び方法は、次に、ステップ５８において、Ｄａｔａ  Ｃａｃｈｅ  Ｓｅｔ  ＃をインクリメントする。従って、ステップ６０において、このＣａｃｈｅ  Ｓｅｔ  ＃を特定のＤａｔａ  Ｃａｃｈｅ  Ｓｅｔ  ＃にセットすることが可能になる。ステップ６２において、上述のやり方でＳｉｚｅフィールドをセットし、ステップ６４において、キャッシュ・メモリの最適化及び制御が実施される。さらに、それに従って作成された命令が実行される。
【００３５】
やはり上述のように、ステップ５２において、先取りがデータの先取りではないということになると、ステップ５６において、Ｉ／Ｄビットを命令にセットする。次に、ステップ６６において、Ｉｎｓｔｒｕｃｔｉｏｎ  Ｃａｃｈｅ  Ｓｅｔ  ＃をインクリメントする。従って、ステップ６８において、このＣａｃｈｅＳｅｔ  ＃を特定のＩｎｓｔｒｕｃｔｉｏｎ  Ｃａｃｈｅ  Ｓｅｔ  ＃にセットすることが可能になる。次に、ステップ７０において、上述のやり方でＳｉｚｅフィールドをセットし、ステップ６４において、キャッシュ・メモリの最適化及び制御が実施される。さらに、それに従って作成された命令が実行される。最後に、所定のサイズを備えた情報が特定のキャッシュ・セットに書き込まれる。
【００３６】
とりわけ、本書に解説の２進フィールドを有する先取り命令の実施シーケンスについて記載のある、＿／＿／＿に提出された、出願番号０＿／＿，＿の、Ｔｕｎａｂｌｅ  Ｓｏｆｔｗａｒｅ  Ｃｏｎｔｒｏｌ  ｏｆ  Ｈａｒｖａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ  Ｃａｃｈｅ  Ｍｅｍｏｒｉｅｓ  Ｕｓｉｎｇ  Ｐｒｅｆｅｔｃｈ  Ｉｎｓｔｒｕｃｔｉｏｎｓと題する同時出願の米国特許出願が、参考までに本書に組み込まれている。
【００３７】
図５に関する上記説明は、このプログラムを実行するプラットフォームが、先取りを実施する能力を含んでおり、マルチ・セット・ハーバード・アーキテクチャであるという前提によるものであるが、この方法及びシステムは、もちろん、クロス・プラットフォームである。本書に解説の発明は、フィールドそれ自体、及び、それを生成し、活用するシステム及び方法にある。
【図面の簡単な説明】
【図１】  先行技術によるシングル・セット・キャッシュを示す図である。
【図２】  先行技術によるマルチ・セット・キャッシュを示す図である。
【図３】  先取り命令を受信する変換索引バッファと、本発明の先取り命令フィールドを含む変換索引バッファの出力を示す図である。
【図４】  本発明の先取り命令が実施されるハーバード・アーキテクチャ・システムを示す図である。
【図５】  本発明の先取り命令を実施するためのステップを示すフローチャートである。
【符号の説明】
２０    先取り命令
２２    ＴＬＢ
２４    先取りユニット
２６    命令キャッシュ
２８    データ・キャッシュ
３０    主メモリ
【図１】
0003816586.tif 000002
【図２】
0003816586.tif 000003
【図３】
0003816586.tif 000004
【図４】
0003816586.tif 000005
【図５】
0003816586.tif 000006