JP2001515624A - ペナルティーに基づくキャッシュ格納置換方法 - Google Patents

ペナルティーに基づくキャッシュ格納置換方法

Info

Publication number
JP2001515624A
JP2001515624A JP54042098A JP54042098A JP2001515624A JP 2001515624 A JP2001515624 A JP 2001515624A JP 54042098 A JP54042098 A JP 54042098A JP 54042098 A JP54042098 A JP 54042098A JP 2001515624 A JP2001515624 A JP 2001515624A
Authority
JP
Japan
Prior art keywords
data
priority value
cache
data item
memory
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.)
Pending
Application number
JP54042098A
Other languages
English (en)
Inventor
リードベルグ,ペール
Original Assignee
テレフォンアクチボラゲット エルエム エリクソン(パブル)
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 テレフォンアクチボラゲット エルエム エリクソン(パブル) filed Critical テレフォンアクチボラゲット エルエム エリクソン(パブル)
Publication of JP2001515624A publication Critical patent/JP2001515624A/ja
Pending legal-status Critical Current

Links

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
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack

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)
  • Advance Control (AREA)

Abstract

(57)【要約】 キャッシュデータ置換方法は、中央処理装置(CPU)、キャッシュメモリ、及びメインメモリを有するコンピュータシステムの動作を改善することを可能にするものであり、キャッシュメモリには複数のデータ項目が格納される。キャッシュデータ置換方法は、優先順位値を格納されている各々のデータ項目に関連させる動作を含んでおり、各データ項目について、優先順位値は、データ項目がキャッシュメモに格納されていない場合にそのデータ項目を前記キャッシュメモリから引き出そうとしたときに生じるCPU機能停止時間の推定値である。キャッシュ項目が置換されなければならないときには、最低の優先順位値を決定するために優先順位値が分析される。最低の優先順位値を有するデータ項目のうちの1つが選択されて、置換データ項目と置換される。データ項目の優先順位値は、メインメモリからのデータ項目の検索の開始と完了とにより画定される時間間隔の間に取り出されてバッファメモリに格納された他の命令の個数の関数として確定されて良く、他の命令の実行は前記データ項目の検索完了に依存する。本発明の他の態様においては、キャッシュ項目の優先順位値は、キャッシュヒット率を高めるために定期的に下げられて良く、また価値あるデータ項目をデータキャッシュに確保しておくために、関連するデータ項目がアクセスされる毎に初期設定され直しても良い。

Description

【発明の詳細な説明】 発明の名称 ペナルティーに基づくキャッシュ格納置換方法 背景 本発明は、キャッシュメモリに関し、特にキャッシュメモリにおいて置換され るべきデータを選択する方法に関するものである。 コンピュータ・システム内での処理は、中央処理装置(CPU)と称されるハ ードウェア・エレメントにより実行される。このCPUのための命令及びデータ は、大規模なメインメモリに格納される。CPUの動作速度(即ち、1つの命令 を実行するのにかかる時間)は、通常、メインメモリのアクセス速度より遥かに 速い。その結果として、CPUは、メインメモリの1メモリアクセス動作のサイ クルの間、要求された命令やデータ項目をむなしく待たざるを得ないことがある 。この無駄な待ち時間がCPUの実効処理速度をひどく低下させる。 この問題に対処するために、しばしば、キャッシュメモリ・ユニットがコンピ ュータシステムに組み込まれている。キャッシュメモリは、CPUとメインメモ リとの間の緩衝記憶能力を提供する補助メモリとして、コンピュータ技術の分野 では良く知られている。キャッシュメモリは、通常、メインメモリより遙かかに 高速で動作し、メインメモリからロードされるように設計されている。 CPUの速度で動作するメモリ装置は、メインメモリを構成する比較的に低速 の装置より遥かに高価で物理的に大規模である。その結果として、キャッシュメ モリのサイズ(メモリに含まれている、別々にアドレス指定することのできる記 憶セルの個数で測られる)は、メインメモリのサイズより遙かに小さい。キャッ シュメモリは、メインメモリに格納されている命令及びデータ項目の全部を含む ことはできな いので、CPUが、時折、キャッシュメモリに現在は格納されていない特定の命 令又はデータを要求することになる。このような出来事は、“キャッシュミス” と称されていて、要求された命令又はデータ項目は、メインメモリから検索され てキャッシュメモリに格納され、その後にCPUに供給される必要がある。この 場合、各々のキャッシュミスは、キャッシュメモリが存在しなければCPUが待 つことになる時間(それより長くはないとしても)だけ、CPUを待たせること になる可能性を持っている。 データ読み込みのキャッシュミスが発生する毎に起こる処理速度のペナルティ ーを軽減するための1つの手法として、命令の実行を順序通りに行わないように する方法がある。これは、キャッシュミスを発生させた命令の後の命令を、CP Uが見つからないデータを待っている間に、実行し続けることを意味する。この 方法が効果を発揮するには、それらの後の命令が見つからないデータに依存しな いことが必要である。見つからないデータに依存する命令の実行は、見つからな いデータを利用できるようになるまで(例えばキューなどで)、一時停止されな ければならない。そのデータが利用可能となったときに、このデータに依存する 命令の全部が実行される。順序外命令実行手法は、ウィリアム・ジョンソンの ーパースケーラー・マイクロプロセッサ・デザイン (William Johnson,Supersca ler Microoocessor Design )、1991(ISBN 0-13-875634-1)で解説されてお り、これを参照として本明細書に取り入れるものとする。 順序外実行方法を採用するとしても、プログラム中に、ターゲット位置が見つ からないデータを何等かの条件とするような分岐命令が存在することがある。C PUの命令取り出し動作の長い遅延を防止するための1つの方法として、どの分 岐が採られるのかを予測し、仮に推測された分岐先から命令を取りだして実行す る動作を継続する方法ある。見つからないデータが利用可能となったときに、そ の推測が正しかったことが分かったならば、前記仮の実行結果を永続なものとで き る(例えば、その結果をターゲット記憶位置に格納することにより)。しかし、 もし間違った推測がなされたならば、条件付き分岐命令後に実行された命令の結 果を全て捨てて、正しい分岐路からプログラムの実行を再開しなければならない 。従って、間違った推測は動作に非常に大きなペナルティーを与える原因となる 。 未決状態の条件付き分岐についての正しい経路を正しく推測する確率を高める ために、前の条件付き分岐の結果についての統計を格納する分岐予測メモリを更 に含むことにより、この方法を改良することができる。この方法を使っても、間 違って予測される分岐があることは避けられないので、動作に大きなペナルティ ーとなる。 CPUの有効実効速度に影響を及ぼす別の要因は、キャッシュミスが発生した ときに、見つからないデータ項目のための空きを作るために、データ(又は、デ ータ及び命令が同じキャッシュメモリを共有する場合には、1つ以上の命令)を キャッシュメモリから除去しなければならないことである。キャッシュから除去 されるべきデータを選択する方法(“キャッシュ置換方法”と称される)は、“ 放り出された(cast out)”データが後に必要になって、他のキャッシュミスを発 生させる原因となるので、CPUの有効実効速度に影響を及ぼす。 現存するキャッシュ置換方法は、要求された命令又はデータ項目がキャッシュ 内で首尾良く確認される(“キャッシュヒット”と称される)確率を最大にする ことを基礎としている。そのような方法の1つでは、除去されるものとして実行 プログラムにより最も古く使われたデータ項目を選択する。このアプローチの根 拠は、時間的局在性という概念、即ち、次にアクセスされるアドレスが最後にア クセスされたアドレスと同じである確率は、第2のアクセスが発生する時期が第 1のアクセスに対して早ければ早いほど、高くなるという概念である。 他のキャッシュ置換方法は、ランダム置換及び先入れ先出し(FIFO)であ る。 上記のキャッシュ置換方法は、全て、普通は、キャッシュ読み出し が試みられてキャッシュからデータが首尾良く得られた回数を、試みられたキャ ッシュアクセスの総数で割ったものとして定義されるキャッシュヒット率を高め ることを目標としている。(関連する尺度としては、普通は(1−キャッシュヒ ット率)として定義されるキャッシュミス率がある)。しかし、これらのキャッ シュ置換方法は、必然的に発生するキャッシュミスの影響を考慮に入れていない ので、不十分である。 要約 従って、本発明の目的は、置換されるキャッシュデータ項目の空きを作るため に、キャッシュメモリ中のどのデータ項目を除去するかを決める改良された方法 及び装置を提供することにより、CPUの有効実行速度を高めることにある。 前記及びその他の目的は、中央処理装置(CPU)、キャッシュメモリ、及び メインメモリを有するコンピュータシステムにおいて、キャッシュデータ置換方 法を利用することにより達成される。前記キャッシュメモリには、複数のデータ 項目が格納される。本発明の1つの態様に従えば、キャッシュデータ置換方法は 、格納されている各々のデータ項目に優先順位値を付随させるステップを含んで いる。各データ項目についての優先順位値は、或るデータ項目がキャッシュメモ リに格納されていないときに前記データ項目をキャッシュメモリから検索しよう と試みた場合に費やされるCPU機能停止時間の推定値である。 本発明の他の態様に従えば、各々のデータ項目についての優先順位値は、メイ ンメモリからのデータ項目の検索の開始と完了とにより画定される時間間隔中に 、他の何個の命令が取り出されてバッファメモリに格納されたかを確認すること によって確かめられる。前記他の命令の実行は前記データ項目の検索の完了に依 存する。 本発明の更に他の態様に従えば、各データ項目について、前記時間 間隔中に他の何個の命令が取り出されてバッファメモリに格納されたか確認する ステップは、前記他の命令のいずれかが条件付き分岐命令であるか否かに基づい て、ある量だけ優先順位値を調整するステップを含む。 本発明の更に他の態様に従えば、各データ項目について、前記時間間隔中に他 の何個の命令が取り出されてバッファメモリに格納されたか確認するステップは 、更に、前記他の命令のいずれかが非分岐命令であるか否かに基づいて、ある量 だけ優先順位値を調整するステップを含む。 本発明の他の態様に従えば、置換データ項目がキャッシュに格納されるときに 、置換されるキャッシュ登録は、優先順位値を分析して最低優先順位値を決定す ることにより決定される。そのとき、最低優先順位値を有するデータ項目のうち の1つが選択されて、置換データ項目に取って代わられる。 本発明の更に他の態様に従えば、データキャッシュのヒット率は、付随するデ ータ項目の優先順位値が不変に保たれる必要がないことによって、改善される。 むしろ、各々の優先順位値は、より低い優先順位値となるように所定量だけ定期 的に調整される。このようにして、最初は高い優先順位値を持っていたキャッシ ュ項目でも、結局は置換の候補となる。 本発明の更に他の態様に従えば、関連するデータ項目の読み出しアクセスに応 答して、貴重なデータ項目の優先順位値を所定量だけ調整することによって、貴 重なデータ項目が無期限にデータキャッシュにとどまることを許すことができ、 その調整はより高い優先順位値をもたらす。或いは、関連するデータ項目の読み 出しアクセスに応答して、その優先順位値を初期値にセットしても良い。データ 項目の優先順位値を定期的に下げる手法と組み台わせると、この手法は、動作し ているプログラムによって貴重なキャッシュ項目がアクセスされ続ける限り、そ れらがデータキャッシュにとどまることを許すと共に、更に、 それらが最早利用されなくなったときには置換されることを許す。 図面の簡単な説明 本発明の上記及びその他の目的及び利点は、以下の詳しい説明を図面と関連さ せて読めば理解されよう。 図1は、本発明を表わす代表的コンピュータシステムのブロック図である。 図2は、データ項目をメインメモリから検索し、それを本発明の1つの態様に 従うデータキャッシュに格納する手順を表すフローチャートである。 図3は、本発明のキャッシュ格納置換方法に用いられるデータキャッシュの代 表的実施態様の図である。 図4は、本発明の他の態様に従ってキャッシュメモリのデータを置換する方法 を表すフローチャートである。 図5は、本発明のキャッシュ格納置換方法に用いるデータキャッシュの他の代 表的実施態様の図である。 図6は、本発明の他の態様に従って優先順位値を維持する方法を表すフローチ ャートである。 詳細な説明 次に本発明の種々の特徴を図に関して説明するが、図においては同様の部分は 同じ参照符号で特定されている。 本発明を表わす代表的コンピュータシステムが図1に示されている。CPU1 01は、メインメモリ107に格納されている命令を実行する。CPU101は 、それらの命令についてのデータを、メインメモリ107に含まれているアドレ ス空間から検索する。命令実行の結果も、この同じアドレス空間に格納される。 メインメモリ107のサイクルタイムは、CPU101の実行速度より遙かに 低速である。CPU101にもっと高速に命令を供給する ために、CPU101とメインメモリ107との間に命令キャッシュ103が置 かれている。命令キャッシュ103は、従来の手法に従って動作するので、ここ ではこれ以上詳しくは説明しない。 CPU101がもっと高速にデータを検索したり格納したりできるようにする ために、CPU101とメインメモリ107との間にデータキャッシュ105も 置かれている。データキャッシュ105へのデータの出入りの流れは、データキ ャッシュ・コントローラ109によって監督される。データキャッシュ105の 動作の多くは既知の手法に従って行われる。従来のキャッシュメモリと同様に、 データキャッシュ105は、そのサイクルタイムがCPUの実行速度に近いメモ リである。また、従来のキャッシュメモリと同様に、データキャッシュ105は メインメモリ107に含まれている情報の部分集合を保持しているに過ぎない。 “背景”の項で論じたように、キャッシュミスの発生をデータキャッシュ105 に対して用いることができる。 “背景”の項で説明したように、キャッシュミスの影響を軽減するために、C PU101の構成を命令の順序外実行とすることができる。この能力を有するC PUを設計する手法は当前記技術分野で知られているので、ここで詳しく説明す る必要はない。本発明を理解し易くするために、CPU101の代表的実施態様 を手短に説明する。ここで説明する本発明の原理は、CPU101が後述する特 定の形をとることを必要とせず、命令の順序外実行を採用するどのようなプロセ ッサ構成にも応用し得るものであることが理解されるべきである。 代表的CPU101は、次の命令のアドレスを確認してその命令を取り出すた めの命令取り出し論理111を含んでいる。代表的CPU101の命令セットは 、アドレス指定可能な多くのワーキングレジスタ113のいずれに格納されてい るオペランドも使用できるように設計されている。従って、ソースオペランドを 使用する命令が実行される前に、まずそのオペランドは、オペランド取り出しロ ジック115、 計算論理(ALU)117,及び再整理バッファ119を介して、データキャッ シュ105からワーキングレジスタにロードされなければならない。当然、本発 明は、ここで説明されているような縮小命令セット・コンピュータ(RISC) での使用だけに限定されるものではない。反対に、それは、複合命令セット・コ ンピュータ(CISC)にも容易に応用し得るものである。いろいろな違いがあ る中で、前記コンピュータでは、ALUが、アドレス指定された記憶場所から直 接受け取られたデータを、始めにワーキングレジスタにロードせずに、操作する ことを許す命令が設けられている。 オペランド取り出しロジック115と再整理バッファ119とは、協動して順 序外実行能力を与える。オペランド取り出しロジック115は、ALU117の それぞれの入力に供給されるソースオペランドを組み立てる。この仕事を容易に するために、オペランド取り出しロジック115は、ソースデータ自体か、或い はソースデータが未だワーキングレジスタ113にロードされていないことを示 す(未だ実行されていない命令に割り当てられた)シーケンス番号を格納してお くための、多くの予約ステーションを含んでいる。 再整理バッファ119は、宛先データを組み立てると共に、与えられた命令が 実行されたか否かと、命令同士の依存関係とを監視し続ける。命令が受け取られ ると、それにタグ番号が割り当てられ、再整理バッファ119に入れられる。そ の後、新しい命令のソースが前の他のいずれかの命令の宛先と一致するか否かを 確かめるために、再整理バッファ119に前もって格納されていた全ての命令が 調べられる。もし一致があるならば、新しい命令が直ちに実行されるのを妨げる 依存関係がある(即ち、その新しい命令は、先の命令によって未だ作られていな いソースオペランドを必要とする)。その結果として、新しい命令のシーケンス 番号が、そのソースデータの代わりにオペランド取り出しロジック115に置か れることになる。 本実施例では、再整理バッファ119は、宛先データ自体を格納す るためのスペースを有している。従って、宛先データを利用できるようになった とき、それは再整理バッファ119にロードされ、そのデータが有効であること を示すために関連する状況フラグがセットされる。宛先データが後の命令のソー スデータでもあるときに命令実行を高速化するため、そのデータをまずワーキン グレジスタ113に書き込んでから前記データをワーキングレジスタ113から オペランド取り出しロジック115へ移すことを必要とせずに、その宛先データ を再整理バッファ119からオペランド取り出しロジック115中の適切な予約 ステーションへ直接に経路指定しても良い。命令実行を更に高速化するために、 新たに作られたソースデータをもっと速やかにロードできるように、代表的CP U101はALU117の出力からオペランド取り出しロジック115の入力へ の経路を更に含んでいる。 作られたデータが再整理バッファ119に格納されているという事実は実行プ ログラムには見えず、実行プログラムは結果をワーキングレジスタ113の1つ 又はデータキャッシュ105(又はメインメモリ107)に格納することにだけ 関わっている。その結果、データは、結局、再整理バッファ119から、対応す る命令により示される宛先へ移されなければならない。作られたデータを再整理 バッファ119から適切な宛先へ移す動作は、データを“引き渡す”、“回収す る”、或いは“書き戻す”と称される。代表的CPU101の構成は、先の命令 に関連する全てのデータが引き渡された後に、はじめて作られたデータを引き渡 す手順を採用している。 順序外実行能力を備えていても、データのキャッシュミスの発生は、CPU1 01の有効実行速度を低下させるオーバーヘッドのペナルティーを依然として残 す。従って、CPU101の有効実行速度を更に速くするために、データキャッ シュ・コントローラ109は、更に、キャッシュミスが発生する度に、後述する 本発明のデータ置換技術を採用する。高いヒット率を達成することに焦点を合わ せるのではなく、本発明のキャッシュ置換思想は、データミスが発生した結果と して生 じる実行速度のペナルティーを軽減することを基礎とする。 本発明の1つの態様において、この目的はデータを3つの種類の1つに分類で きることを認識することにより達成される。 タイプ1のデータは、他のデータ項目の計算のために入力変数として使われず 、単にあるアドレスに書き戻される純粋な情報である。タイプ1のデータ項目の 例は、エディタのコピー及びペースト動作の一部としてメモリから検索されるデ ータである。タイプ1のデータ項目の他の例は、変数へのポインタを使わずにC で書かれた処理手順と関連するパラメータである。そのような場合、その処理手 順の実施では、最初に変数をスタックにコピーし、次に同じ内容でローカル変数 にコピーする。 タイプ2のデータは情報データである。このデータは、あるアドレスに書き戻 される前に、一定の数の命令において計算のための入力変数として使われる。 タイプ3のデータは制御データである。制御データは、条件付き分岐命令の動 作を直接又は間接的に決定する。(制御データは、結果のデータ項目を決定する ために任意の数の計算命令において入力変数として使われるときには間接的に動 作し、そのデータ項目は条件付き分岐命令の動作を決定するための述語として使 われる)。 キャッシュミスが発生したとき、順序外実行を可能とするハードウェアをCP U101が備えている限りは、タイプ1データは実行速度に殆どペナルティーを 課さない。この目的のために、保留中の命令及びデータを保持するためのキュー が、見つからないデータが検索されている間にCPU101中の実行ユニットが 使用され続けるのに充分な長さを持っているべきである。 タイプ2データと関連するキャッシュミスからは、より大きなペナルティーが 実行速度に課される結果となり、このペナルティーの大きさは、見つからないデ ータに直接又は間接的に依存する命令の個数の関数である。(間接的依存は、命 令が、入力として、見つからない データ自体ではなくて、その見つからないデータの関数である計算結果を必要と するときに発生する)。 理論上は、キャッシュミスがタイプ2のデータに関係するときにも、順序外実 行手順を利用することが可能である。しかし、実際上は、保留中の命令及びデー タを保持するのに充分な長さを持ったキューを設計するのは、保留状態にとどま る必要のある依存命令の個数が非常に大きくなるかも知れないので、問題を含ん でいる。 タイプ3のデータに関係するキャッシュミスに関しては、最大の動作問題が発 生する。もし条件付き分岐を評価することができなければ、CPU101はどの 命令を取り出したらよいのか分からない。最悪の場合、実際に必要な命令が命令 キャッシュ103で使うことができなくなる。その結果として、CPU101は 命令取り出し中は機能を停止し、そのために有効実行速度をひどく害してしまう 。 本発明の1つの態様に従えば、キャッシュ置換思想は、始めにデータキャッシ ュ105におけるタイプ3のデータ項目の存在を最大にするように設計される。 本発明の別の態様では、キャッシュ置換思想は、データキャッシュ105におい て、タイプ2のデータ項目にタイプ1のデータ項目より高い優先順位を与える。 データ項目のキャッシュ置換優先権は、そのデータ項目に優先順位値を付随さ せることによって与えられる。例えば、優先順位値は値が高いほどキャッシュミ ス・ペナルティーが大きくなるように定義されて良い。もちろん、より低い優先 順位値により高いキャッシュミス・ペナルティーを指示させるなど、ここで教示 されている発明原理に従う別の定義を、容易に想到することができる。 次に、図2に描かれているフローチャートを参照して、本発明のこれらの態様 の代表的実施例について説明する。データキャッシュミスが発生する毎に、見つ からなかったデータ項目がメインメモリ107から引き出されてデータキャッシ ュ105に格納される(ステップ201)。次に、このデータ項目へのアクセス が試みられたとき、前記 データ項目がもしデータキャッシュ105中に存在しなかったら生じたはずのペ ナルティーの関数として、初期優先順位値が決定される(ステップ203)。そ の優先順位値は、好ましくは、キューとコンピュータの他のハードウェア資源と の現状の関数である。その調整された値は、次に前記データ項目と関連づけられ る(ステップ205)。 初期優先順位値の決定(ステップ203)について詳しく説明する。データ項 目の優先順位値は、好ましくは、そのデータ項目へのアクセスの試みがキャッシ ュミスという結果をもたらしたときに決定される。キャッシュミスが発生したと き、後の命令の順序外実行が始まる。見つからないデータ項目を必要とする命令 があったならば、それらの命令は、それらが実行され得るまでキューに格納され る。例えば、下記のプログラム部分を考察する。 load r1,#1; (r1:=“アドレス1”) add r2,r1,r3; (r2:=r1+r3) add r4,r2,r5; (r4:=r2+r5) 上の例では、最初のロード命令がデータキャッシュ105中のアドレス1のデ ータ項目の存在に依存するだけではなくて、後の2個の加算命令もそれに依存し ている。その理由は、最初の加算命令がr1に適切な値があることを必要とする が、それは最初のロード命令が実行された後にはじめて現実となる。同様に、第 2加算命令は、r2の内容が確定されるまでは実行され得ない。従って、データ キャッシュ105中の“アドレス1”に関連するキャッシュミスが生じた場合に は、見つからないデータが使用可能となるまで上記の3つの命令はキューに格納 される。 命令が格納されたキューは、見つからないデータの優先順位値を決定するため に使われる。依存条件付き分岐があるならば、優先順位値は非常に高い。上の例 と同様のデータ依存関係があるならば、優先順位値を中間レベルにセットするこ とができる。依存関係がなければ、見つからないデータの優先順位値は低い。従 って、優先順位値は、そ れぞれ3,2及び1にセットされて良い。 優先順位値を決定する簡単な方法は、全ての実行命令が直接又は間接的に、見 つからないデータに依存すると仮定することである。その値は、この場合には、 V=N1×V1+N2×V2であり、ここでN1は未だ実行されていない非分岐 命令の個数であり、V1は非分岐命令に割り当てられるペナルティー値であり、 N2は未だ実行されていない条件付き分岐の個数であり、V2は条件付き分岐命 令に割り当てられるペナルティー値である。 実行されていない命令の一部又は全部が、ペナルティー値が計算されているデ ータ項目以外のデータ項目にだけ依存するのであれば、前述した簡単な方法は過 度に高い優先順位値をもたらす結果となることが分かる。また、コードセグメン トにおいて2つのデータ取り出しがあり、その一つ一つが結局キャッシュミスを もたらしたならば、上記の簡単な優先順位値計算方法は、たとえ第1データ項目 が正確に低い優先順位値を持ち第2データ項目が高い優先順位値を持つべきであ っても、各々に高い優先順位値を割り当てる結果をもたらす。 場合によっては、優先順位値を過度に高く見積もる可能性があることを考慮し て、実際に間題のデータ項目に依存する未実行の命令だけを数えるために、再整 理バッファ中の命令バッファの内容をもっと精巧に分析することもできる。しか し、この分析はオーバーヘッドが伴うので、前述した簡単な方法より魅力が少な い。 下記のコードセグメントがCPU101により実行されると想定して、優先順 位値計算のもっと完全な例を考察する。 命令 コメント load R0,#5; (r0:=“アドレス5”) jump on equal r0,r1; (r0=r1ならばジャンプ) add r6,r3,r0: (r6:=r3+r0) add r7,r3,r2; (r7:=r3+r2) add r8,r7,r9; (r8:=r7+r9) addr 9,r10,r11; (r9:=r10+r11) ここで、rxはワーキングレジスタxを意味する。 これらの命令が取り出された後、再整理バッファ119の内容は表1のように 見える。 “load r0,#5”がキャッシュミスという結果をもたらし、所望のデータをメイ ンメモリ107から取り出されなければならなくなったと想定する。このとき、 メモリアドレス5からのデータが到着するまでに、その新たに到着するデータに 依存する1つの条件付きジャンプ(位置1)と1つの加算(位置2)とがある。 位置3,4及び5に位置する“データ有効=1”は、これらの加算命令が既に実 行されていて、他のどの命令にも依存しないことを表している。条件付きジャン プについてのペナルティーが5(即ち、V2=5)であり、他の命令については 1(即ち、V1=1)であるとすると、アドレス5のデータに割り当てられる合 計の優先順位値は(1×5+1×1)=6となる。 この場合、予測されるジャンプ結果が行われないジャンプであることに基づい て、条件付きジャンプ命令の後の全ての命令が投機的に取り出されて実行される 。もしジャンプ結果が間違って予測されたならば、その条件付きジャンプ後の全 ての命令を捨てて、正しい命令経路 を取りだして実行しなければならない。 各データキャッシュ項目について優先順位値を決定するための手順について説 明をした。図2に示されているように、優先順位値をキャッシュ項目に付随させ なければならない。いろいろな方法で、それを行うことができる。それらのうち の1つを図3を参照して説明するが、これは前述した本発明の方法に用いるデー タキャッシュ105の代表的実施態様を記述している。データキャッシュ105 は、0からN−1まで示されているアドレスにN個のデータ項目を格納しておく ことができる。代表的アドレスmに、データ項目301が格納されている。デー タキャッシュ105は、データ項目を格納する各場所に、付随する優先順位値を 格納しておくための対応する場所が存在するように構成される。代表的場所mに ついては、格納されているデータ項目301は、格納されている優先順位値30 3と関連づけられている。このような能力を有するキャッシュメモリを構成する 方法は当前記技術分野では周知なので、ここではあまり詳しくは説明しない。例 えば、ジョンL.ヘネスのコンピュータ・アーキテクチャ、量的アプローチ(Jo hn L.Hennes,Computer Architecture.A Quantitative Approach)、(1990 )を参照されたい。これを参照として本明細書に取り入れるものとする。 次に、本発明の他の態様における、キャッシュメモリ内のデータを置換するた めの方策について、図4のフローチャートを参照して説明する。この代表的実施 態様では、データキャッシュ105内の各登録が、前述したように関連する優先 順位値を持っているということが想定されている。 データキャッシュ105から登録を読み出す試みがなされるとき、要求された データ項目がデータキャッシュ105に現在格納されているか否かに関して判定 が行われる(判定ブロック401)。その項目が見つかったならば(判定ブロッ ク401から出る“NO”経路)、その項目は単にデータキャッシュ105から 検索され(ステップ40 3)、処理が続けて行われる。 キャッシュミスが発生したならば(判定ブロック401から出る“YES”経 路)、要求されたデータ項目のための空きを作るためにデータキャッシュ105 から登録を除去する必要がある。これは、データキャッシュ105に格納されて いる全ての優先順位値303の中から最低の優先順位値を有する登録の場所を見 つけだすことにより達成される(ステップ405)。最低優先順位値を有する登 録が2つ以上ある場合には、データキャッシュ105からどの1つを除去するか 決めるために任意の手法(ランダム選択、ポインタの使用、或いはその他の任意 の手法)を使用することができる。その後、要求された(即ち、“見つからない ”)データ項目がメインメモリ107から検索され(ステップ407)、検索さ れたデータ項目は、データキャッシュ105のステップ405で特定されたアド レスに格納される。最低優先順位値を有する登録を除去することにより、本発明 のキャッシュ置換方法は、除去された登録と関連するキャッシュミスが後に発生 する可能性を減少させ(即ち、除去されたデータ項目は長い時間にわたってアク セスされていなかったので、優先順位値が低かった)、或いは除去された登録と 関連する後のキャッシュミスが顕著な実行速度へのペナルティーをもたらす結果 となる可能性を減少させる(即ち、後の命令の順序外実行を、メインメモリ10 7からの要求されたデータ項目の検索を待っている間に前進させることができる )。 各キャッシュ登録についての優先順位値の決定を含む前述したデータキャッシ ュ置換方法は、キャッシュ内のデータが、もしメインメモリ107から検索され なければならなかったならば顕著な実行速度へのペナルティーを生じさせるよう な種類のデータである可能性を、増大させる。即ち、タイプ1、タイプ2,及び タイプ3のデータについての相対的優先順位値がそれぞれ1,2及び3であると すると、タイプ1及びタイプ2が置換される可能性が大きいので、タイプ3のデ ータがキャッシュ内に存在する可能性の方が大きい。しかし、上記の方 法は、そのデータ項目がCPU101により再び使用されることは決して無いと しても、そのデータ項目がデータキャッシュ105に無期限にとどまる確率を生 じさせる。その理由は、より低い優先順位のキャッシュ登録がある限りは、その ようなデータ項目はデータキャッシュ105において置換されることは決して無 いからである。そのようなキャッシュ登録(即ち、ソースオペランドとして必要 になることが2度と無いとしても決して置換されないもの)の存在は、キャッシ ュのヒット/ミス率を低下させるので、望ましくない。 この問題への対処は、本発明の別の態様において、優先順位値を、更に前記デ ータ項目が最後にアクセスされてからの経過時間の長さの関数とすることを許す ことによって、なされる。このようにして、比較的に高い実行速度へのペナルテ ィーを有するデータタイプに依然として優先権を与えながら、時間的局在性(tem poral locality)の原理を使ってキャッシュのヒット率を高めることもできる。 代表的実施態様では、各キャッシュ登録の優先順位値303はT秒毎に所定量だ けデクリメントされる。その結果として、最初は高い優先順位値を持っていたキ ャッシュ登録でも、結局は、新しいキャッシュ登録を格納しなければならないと きに置換の対象とされ得るのに充分に低い優先順位値を持つようになる。 本発明の更に別の態様において、優先順位値を定期的にデクリメントする方法 は、キャッシュ登録がアクセスされる毎に、その優先順位値を再初期設定するか 、或いはインクリメントすることによって、補われる。一実施態様では、キャッ シュ登録がアクセスされる毎に、その優先順位値303を、関連するペナルティ ー値だけ増大させることができる。このようにして、優先順位値は、1つのキャ ッシュミスのコストだけではなくて、そのデータ項目がアクセスされる頻度も考 慮に入れる。例えば、第1データ項目はキャッシュミスが発生した場合に1クロ ックサイクルのCPU機能停止時間を費やすに過ぎず、また、このデータ項目は 、キャッシュミスが発生した場合に10クロックサ イクルのCPU機能停止時間を費やす第2データ項目の10倍の頻度でアクセス されると仮定する。この場合、第1データ項目の値は、第2データ項目の値と等 しくなる。従って、データ項目がアクセスされる毎に優先順位値を再初期設定或 いはインクリメントすることによって、前記置換方法では頻繁なアクセスの効果 を考慮に入れる。 キャッシュ登録がアクセスされる毎に優先順位値303を最初期設定する方法 を採用するのであれば、各キャッシュ登録についての現在の優先順位値303だ けでなくて、初期優先順位値も追跡する必要がある。図5に示されているように データキャッシュ105’を構成することによって、このことを達成することが できる。データキャッシュ105’は、各キャッシュ登録に付随する初期優先順 位値フィールド501が追加されていることを除いて、図3に示されているデー タキャッシュ105と実質的に同一である。 次に、種々の命令についての相対ペナルティー値(即ちV1及びV2)の決定 に焦点を当てて説明をする。第1データ項目を検索しようとする試みから生じた キャッシュミスが10クロックサイクルのCPU機能停止時間をもたらしたけれ ども、第2データ項目を検索しようとする試みから生じたキャッシュミスは順序 外実行の可能性があるために1クロックサイクルのCPU機能停止時間だけを生 じさせるとする。すると、その2つを選択できるならば、不経済なキャッシュミ スを避けるために、第2データ項目ではなくて第1データ項目をデータキャッシ ュ105に保持すべきである。この意味において、第1データ項目は第2データ 項目より“貴重”である。 キャッシュミスが発生したときに、順序外実行が非常に効率的であるためにC PU機能停止時間を全く生じさせない第3のデータ項目を考察する。その様なデ ータ項目をデータキャッシュに格納する必要は全くない。即ち、その第3データ 項目には殆ど全く価値がない。 上記のことを考慮すれば、データ項目の価値が高いほど、それをデータキャッ シュ105の中に長く保持するべきだと言うことができ る。概して、データ項目をその価値に比例して保持するのが良い。例えば、キャ ッシュミスが発生した場合に10クロックサイクルのCPU機能停止を生じさせ る第1データ項目は、わずか1クロックサイクルのCPU機能停止を生じさせる に過ぎない第2データ項目より10倍長くデータキャッシュ105の中に保持さ れるべきである(この期間中にいずれのデータ項目もアクセスされないと仮定し て)。第1データ項目のペナルティー値を10にセットし(即ち、V1=10) 、第2データ項目のペナルティー値を1にセットし(即ち、V2=1)、各々に ついて前述したように優先順位値303を決定し、次に、データ項目がアクセス される毎に値をロードし直しながら、各優先順位値の大きさを所定頻度で調整す る(例えば減少させる)ことによって、これを容易に達成することができる。 ペナルティー値(例えばV1,V2)決定に関する以上の説明は、種々の命令 についてのCPU機能停止の測定値又は推定値を利用できることを前提としてい る。実例としての実施態様では、種々のデータタイプに付随するペナルティー値 は、初期優先順位値501の各決定について固定されている。タイプ1又はタイ プ2のデータ項目を考察するとき、これらのタイプの命令(即ち、load、add、l ogical AND)の実行速度は容易に決定されるので、平均CPU機能停止時間を表 す値を見つけるのは割合に簡単なことである。 しかし、タイプ3のデータ項目に関しては、実行速度は、分岐が採られるか否 か、また予め取り出されている命令(前記分岐が採られるか否かに関する予測に 基づく)を命令キャッシュ103から捨てて、新しい命令を取りだし実行するか 否かということの関数であるので、タスクはもっと困難になる。プロセッサの速 度、命令メモリへのアクセス時間、キャッシュヒット率、及び分岐予測アルゴリ ズムの相対的精度(例えば、90%の正確さの予測)に関する知識に基づいて、 タイプ3のデータ項目についての平均ペナルティー値を決定できることを当業者 は認めるであろう。 別の実施態様では、種々のデータタイプに付随するペナルティー値を個々のデ ータ項目の各々について動的に決定して良い。タイプ1又はタイプ2のデータ項 目に関しては、動的に決定される値は、これらのタイプの命令(例えば、load、 add、logical AND)のそれぞれの実行速度は時間がたっても概して変化しないの で、おそらく一定(或いは殆ど一定)であろう。(或るアーキテクチャでは、掛 け算やわり算などの命令の実行速度は或る程度データに依存する)。 この代替実施例では、タイプ3のデータに付随するペナルティー値は、見つか らなかったデータが到着した後に、未だ実行されていない条件付き分岐命令の実 行を許し、その後に、遅延時間がどれだけになるか実際に測定することによって (例えば、分岐予測が誤っていたために、予め取りだしてあった命令を捨てる必 要があるか無いかを調べ、もし必要ならば何個の命令を捨てるべきか調べること によって)、動的に決定することができる。当然、各ペナルティー値のこの動的 決定に付随するオーバーヘッドは、ペナルティー値の固定した推定値の使用に付 随するオーバーヘッドより相当多い。また、ペナルティー値を動的に決定すると 、初期優先順位値501の最終的決定が遅れることになる。特定のシステムのた めにどのアプローチ(即ち、静的ペナルティー値決定対動的ペナルティー値決定 )を使用するべきか決めるときには、これらの要素を考慮に入れるべきである。 次に、上記の原理に従って優先順位値を維持する方法について、図6のフロー チャートを参照して説明する。データ項目(データ項目301など)と、それに 対応する現在の優先順位値303と、初期優先順位値501とが、データキャッ シュ105’に格納されているということが仮定されている。この例では、比較 的に高い優先順位値は、そのデータ項目をデータキャッシュ105’に保持して おくことについて比較的に高い優先権を表すということも更に仮定されている。 この代表的優先順位値維持方法は、データキャッシュ105’での高いヒット 率を維持するために時間的局在性の原理を採用する。従っ て、データ項目が最後にアクセスされてからT秒以上が経過していることが確か められたならば(判定ブロック601からの“YES”経路)、そのデータ項目 に付随する優先順位値は所定量だけ下げられる(ステップ603)。好ましい実 施態様では、その所定量は可能な最少量であり、そのような量は1に等しい。 データ項目が最近アクセスされていたことが確かめられたならば(判定ブロッ ク605からの“YES”経路)、それに付随する優先順位値は高められ、或い は最初の計算された優先順位値にセットされる(ステップ607)。こうする理 由は、最近アクセスされたという事実は、このデータ項目が近い将来に再びアク セスされる可能性が高いことを意味するということである。従って、優先順位値 を高めること(或いは初期設定し直すこと)は、そのデータ項目が除去されない ように確保し、近い期間にわたってデータキャッシュ105’中にとどめておく のに役立つ。好ましい実施態様では、ステップ607は読み出しアクセスと書き 込みアクセスとを区別するステップを含んでいて、読み出しアクセスがなされる 度に優先順位値が最初の計算された優先順位値(例えば、1と約8との間の範囲 の量)だけ高められ、書き込みアクセスがなされる度に可能な最少値(例えば、 1に等しい量)だけ優先順位値が高められる。 これまでの説明は、各キャッシュミスが、唯一のデータ項目をメインメモリ1 07から検索させてデータキャッシュ105に格納させるようにデータキャッシ ュ105が制御されるということを前提としている。しかし、各キャッシュミス が数個(例えば、8個、16個)のデータ項目(ここでは“キャッシュ登録”と 称している)をメインメモリ107から検索させてデータキャッシュ105に格 納させるようにデータキャッシュを設計する方がもっと普通である。キャッシュ 登録は、普通、“見つからない”データ項目(即ち、それがデータキャッシュ1 05の中に無かったことがキャッシュミスの原因となったメインメモリのアドレ ス位置の内容)だけではなくて、そのアドレ スが“見つからない”データ項目のそれに近いデータ項目も含む。この方法の理 論的根拠は、“空間的局在性(spatial locality)”(或いは“関連の局在性(l ocality of reference)”として知られている原理に依拠して、データキャッシ ュのヒット率を改善することである。この原理は、プログラムが通常はどのよう に設計されるかを観察した結果に基づいていて、メモリアクセスが現在は場所x からデータを読み出すとすれば、その後のメモリアクセスが場所xに近いメモリ アドレス場所からデータを読みだそうとする確率が高いということを断言してい る。従って、場所xからのデータ項目だけではなくて、xに近い場所に格納され ているデータ項目も含むキャッシュ登録を検索すれば、データキャッシュ105 にアクセスしようとするその後の試みがキャッシュヒットという結果となる確率 が高まる。 他の実施態様では、前述した本発明の原理は、キャッシュミスが発生する度に そのデータキャッシュ・コントローラ109が(単一のデータ項目ではなくて) 複数のキャッシュ登録を検索するようになっているデータキャッシュに応用され る。この目的に合うように改変された代表的データキャッシュ105”が図7に 示されている。現在の優先順位値303と、初期優先順位値501とが、前述し たのと同様の方法で決定され、利用される。データキャッシュ105”と、前に 説明した実施態様との違いは、現在の優先順位値303と初期優先順位値501 との対の各々が、たった1つのデータ項目301だけに付随するのではなくて、 キャッシュ登録701全体に付随しているという事実にある。初期優先順位値5 01の決定は、キャッシュ登録701中のどのデータ項目301もキャッシュミ スを発生させ、キャッシュ登録701をメインメモリ107から検索させる原因 となったという事実に基づいている。キャッシュ登録701中の他のデータ項目 301は類似のデータタイプであり、従って類似の優先順位値を有するというこ とが仮定されている。この実施態様の他の態様では、キャッシュ登録701中の いずれかのデータ項目301がアクセスさ れる毎に、図6に関して前述したように、付随する現在の優先順位値303の値 を調節することができる(例えば、初期設定し直し、或いは高めるなど)。本発 明の更に他の態様では、キャッシュ登録701中のどのデータ項目301も、特 定のどの期間中にもアクセスされたことが無ければ、現在の優先順位値303を 、もっと低い優先順位を意味する値に調整することができる。他の全ての面で、 この実施態様に関わる原理は上記のものと同じであるので、再び説明する必要は ない。 特定の実施態様を参照して本発明を説明した。しかし、前述した好ましい実施 態様以外の特定の形で本発明を実施できることは、当業者にとっては明白なこと である。本発明から逸脱せずにそれを行うことができる。好ましい実施態様は単 なる具体例であって、如何なる意味でも限定するものと解されるべきでない。本 発明の範囲は、上記の説明ではなく、添付の請求項により与えられ、請求項の範 囲に属する全ての変化形及び同等物はそれに含まれるものである。
───────────────────────────────────────────────────── フロントページの続き (81)指定国 EP(AT,BE,CH,DE, DK,ES,FI,FR,GB,GR,IE,IT,L U,MC,NL,PT,SE),OA(BF,BJ,CF ,CG,CI,CM,GA,GN,ML,MR,NE, SN,TD,TG),AP(GH,GM,KE,LS,M W,SD,SZ,UG,ZW),EA(AM,AZ,BY ,KG,KZ,MD,RU,TJ,TM),AL,AM ,AT,AU,AZ,BA,BB,BG,BR,BY, CA,CH,CN,CU,CZ,DE,DK,EE,E S,FI,GB,GE,GH,GM,GW,HU,ID ,IL,IS,JP,KE,KG,KP,KR,KZ, LC,LK,LR,LS,LT,LU,LV,MD,M G,MK,MN,MW,MX,NO,NZ,PL,PT ,RO,RU,SD,SE,SG,SI,SK,SL, TJ,TM,TR,TT,UA,UG,UZ,VN,Y U,ZW

Claims (1)

  1. 【特許請求の範囲】 1. 中央処理装置(CPU)と、キャッシュメモリと、メインメモリとを有す るコンピュータシステムにおいて、データ項目を前記キャッシュメモリに格納す る方法であって、 第1命令の少なくとも部分的実行に応じて、前記メインメモリからのデータ項 目の検索を開始するステップと、 前記データ項目に付随する優先順位値を決定するステップであって、前記優先 順位値が、前記データ項目が前記キャッシュメモリに格納されていない場合に前 記キャッシュメモリから前記データ項目を検索しようとするときに発生するCP U機能停止時間の推定値である前記ステップと、 前記データ項目の検索を完了し、前記データ項目及び前記優先順位値の両方を 前記キャッシュメモリに格納するステップとを有することを特徴とする方法。 2. 前記優先順位値を決定するステップは、前記データ項目の検索の開始と完 了との間に取り出されてバッファメモリに格納された他の命令の個数を確定する ステップから成り、前記他の命令の実行は前記データ項目の検索の完了に依存す ることを特徴とする請求項1に記載の方法。 3. 前記優先順位値を決定するステップは、前記他の命令のいずれかが条件付 き分岐命令であるか否かに基づいて、ある量前記優先順位値を調整するステップ を更に含むことを特徴とする請求項2に記載の方法。 4. 前記優先順位値を決定するステップは、前記他の命令のいずれかが非分岐 命令であるか否かに基づいて、ある量前記優先順位値を調整するステップを更に 含むことを特徴とする請求項2に記載の方法。 5. 前記優先順位値を決定するステップは、前記データ項目の検索が完了した 後に行われることを特徴とする請求項1に記載の方法。 6. 中央処理装置(CPU)と、キャッシュメモリと、メインメモリとを有す るコンピュータシステムで用いられるキャッシュデータ置換方法であって、 前記キャッシュメモリは複数のデータ項目を格納するようになっており、 前記格納されているデータ項目の各々に優先順位値を付随させるステップであ って、前記優先順位値が、各データ項目について、前記データ項目が前記キャッ シュメモリに格納されていない場合に前記キャッシュメモリから前記データ項目 を検索しようとするときに発生するCPU機能停止時間の推定値である前記ステ ップと、 前記優先順位値を分析して最低優先順位値を決定するステップと、 前記最低優先順位値を有するデータ項目のうちの1つを選択するステップと、 前記選択されたデータ項目を置換データ項目と置換するステップとを有するこ とを特徴とするキャッシュデータ置換方法。 7. 格納されているデータ項目の各々に前記優先順位値を付随させる前記ステ ップは、前記データ項目の各々について、前記メインメモリからの前記データ項 目の検索の開始と完了とにより画定される時間間隔中に取り出されてバッファメ モリに格納された他の命令の個数を確定するステップから成り、前記他の命令の 実行は前記データ項目の検索の完了に依存することを特徴とする請求項6に記載 のキャッシュデータ置換方法。 8. 前記時間間隔中に取り出されてバッファメモリに格納された他の命令の個 数を確定する前記ステップは、各データ項目について、前記他の命令のいずれか が条件付き分岐命令であるか否かに基づいて、ある量前記優先順位値を調整する ステップを更に含むことを特徴とする請求項7に記載のキャッシュデータ置換方 法。 9. 前記時間間隔中に取り出されてバッファメモリに格納された他の命令の個 数を確定する前記ステップは、各データ項目について、前 記他の命令のいずれかが非分岐命令であるか否かに基づいて、ある量前記優先順 位値を調整するステップを更に含むことを特徴とする請求項7に記載のキャッシ ュデータ置換方法。 10. 前記優先順位値の各々を、より低い優先順位値をもたらす所定量定期的 に調整するステップを更に含むことを特徴とする請求項6に記載のキャッシュデ ータ置換方法。 11. 各優先順位値について、付随するデータ項目の読み出しアクセスに応答 して、優先順位値を第1所定量調整するステップを更に含み、該調整はより高い 優先順位値をもたらすことを特徴とする請求項6に記載のキャッシュデータ置換 方法。 12. 各優先順位値について、付随するデータ項目の書き込みアクセスに応答 して、優先順位値を第2所定量調整するステップを更に含み、該調整はより高い 優先順位値をもたらすことを特徴とする請求項11に記載のキャッシュデータ置 換方法。 13. 前記第1所定量の調整は、前記第2所定量の調整よりも高い優先順位値 をもたらすことを特徴とする請求項12に記載のキャッシュデータ置換方法。 14. 各優先順位値について、付随するデータ項目の読み出しアクセスに応答 して、優先順位値を初期優先順位値にセットするステップを更に含むことを特徴 とする請求項6に記載のキャッシュデータ置換方法。 15. 中央処理装置(CPU)と、キャッシュメモリと、メインメモリとを有 するコンピュータシステムにおいて、データ項目を前記キャッシュメモリに格納 するための装置であって、 第1命令の少なくとも部分的実行に応答して、前記メインメモリからの前記デ ータ項目の検索を開始するための手段と、 前記データ項目に付随する優先順位値を決定するための手段であって、前記優 先順位値が、前記データ項目が前記キャッシュメモリに格納されていない場合に 前記キャッシュメモリから前記データ項目を検 索しようとするときに発生するCPU機能停止時間の推定値である前記ステップ と、 前記データ項目の検索を完了して前記データ項目及び前記優先順位値の両方を 前記キャッシュメモリに格納するための手段とを含むことを特徴とする装置。 16. 前記優先順位値を決定するための手段は、前記データ項目の検索の開始 と完了との間に取り出されてバッファメモリに格納された他の命令の個数を確定 する手段から成り、前記他の命令の実行は前記データ項目の検索の完了に依存す ることを特徴とする請求項15に記載の装置。 17. 前記優先順位値を決定するための手段は、前記他の命令のいずれかが条 件付き分岐命令であるか否かに基づいて、ある量前記優先順位値を調整するため の手段を更に含むことを特徴とする請求項16に記載の装置。 18. 前記優先順位値を決定するための手段は、前記他の命令のいずれかが非 分岐命令であるか否かに基づいて、ある量前記優先順位値を調整するための手段 を更に含むことを特徴とする請求項16に記載の装置。 19. 前記優先順位値を決定するための手段は、前記データ項目の検索が完了 した後に決定を行うことを特徴とする請求項15に記載の装置。 20. 中央処理装置(CPU)と、キャッシュメモリと、メインメモリとを有 するコンピュータシステムで用いられるキャッシュデータ置換装置であって、 前記キャッシュメモリは複数のデータ項目を格納するようになっており、 前記格納されているデータ項目の各々に優先順位値を付随させるための手段で あって、前記優先順位値が、各データ項目について、前記データ項目が前記キャ ッシュメモリに格納されていない場合に前記 キャッシュメモリから前記データ項目を検索しようとするときに発生するCPU 機能停止時間の推定値である前記手段と、 前記優先順位値を分析して最低優先順位値を決定するための手段と、 前記最低優先順位値を有するデータ項目のうちの1つを選択するための手段と 、 前記選択されたデータ項目を置換データ項目と置換するための手段とを有する ことを特徴とするキャッシュデータ置換装置。 21. 格納されているデータ項目の各々に前記優先順位値を付随させるための 前記手段は、前記データ項目の各々について、前記メインメモリからのそのデー タ項目の検索の開始と完了とにより画定される時間間隔中に取り出されてバッフ ァメモリに格納された他の命令の個数を確定するための手段を有し、前記他の命 令の実行は前記データ項目の検索の完了に依存することを特徴とする請求項20 に記載のキャッシュデータ置換装置。 22. 前記時間間隔中に取り出されてバッファメモリに格納された他の命令の 個数を確定するための手段は、各データ項目について、前記他の命令のいずれか が条件付き分岐命令であるか否かに基づいて、ある量前記優先順位値を調整する ための手段を更に含むことを特徴とする請求項21に記載のキャッシュデータ置 換装置。 23. 前記時間間隔中に取り出されてバッファメモリに格納された他の命令の 個数を確定するための手段は、各データ項目について、前記他の命令のいずれか が非分岐命令であるか否かに基づいて、ある量前記優先順位値を調整するための 手段を更に含むことを特徴とする請求項21に記載のキャッシュデータ置換装置 。 24. 前記優先順位値の各々を、より低い優先順位値をもたらす所定量定期的 に調整するための手段を更に含むことを特徴とする請求項20に記載のキャッシ ュデータ置換装置。 25. 付随するデータ項目の読み出しアクセスに応答して、前記付随するデー タ項目の優先順位値を第1所定量調整するための手段を更 に含み、該調整はより高い優先順位値をもたらすことを特徴とする請求項20に 記載のキャッシュデータ置換装置。 26. 付随するデータ項目の書き込みアクセスに応答して、前記付随するデー タ項目の優先順位値を第2所定量調整するための手段を更に含み、該調整はより 高い優先順位値をもたらすことを特徴とする請求項25に記載のキャッシュデー タ置換装置。 27. 前記第1所定量の調整は、前記第2所定量の調整よりも高い優先順位値 をもたらすことを特徴とする請求項26に記載のキャッシュデータ置換装置。 28. 付随するデータ項目の読み出しアクセスに応答して、前記付随するデー タ項目の優先順位値を初期優先順位値にセットするための手段を更に含むことを 特徴とする請求項20に記載のキャッシュデータ置換装置。
JP54042098A 1997-03-14 1998-03-13 ペナルティーに基づくキャッシュ格納置換方法 Pending JP2001515624A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08/818,340 US5943687A (en) 1997-03-14 1997-03-14 Penalty-based cache storage and replacement techniques
US08/818,340 1997-03-14
PCT/SE1998/000454 WO1998041923A1 (en) 1997-03-14 1998-03-13 Penalty-based cache storage and replacement techniques

Publications (1)

Publication Number Publication Date
JP2001515624A true JP2001515624A (ja) 2001-09-18

Family

ID=25225309

Family Applications (1)

Application Number Title Priority Date Filing Date
JP54042098A Pending JP2001515624A (ja) 1997-03-14 1998-03-13 ペナルティーに基づくキャッシュ格納置換方法

Country Status (9)

Country Link
US (1) US5943687A (ja)
EP (1) EP0966710B1 (ja)
JP (1) JP2001515624A (ja)
CN (1) CN1149486C (ja)
AU (1) AU6430098A (ja)
BR (1) BR9808245A (ja)
CA (1) CA2283323A1 (ja)
DE (1) DE69816044T2 (ja)
WO (1) WO1998041923A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011129101A (ja) * 2009-12-16 2011-06-30 Intel Corp キャッシュメモリにおけるキャッシュラインの置き換え

Families Citing this family (51)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6266742B1 (en) * 1997-10-27 2001-07-24 International Business Machines Corporation Algorithm for cache replacement
US6792600B1 (en) * 1998-05-14 2004-09-14 International Business Machines Corporation Method and apparatus for just in time compilation of instructions
US6219827B1 (en) * 1998-03-12 2001-04-17 Hewlett-Packard Company Trace ranking in a dynamic translation system
US6385699B1 (en) * 1998-04-10 2002-05-07 International Business Machines Corporation Managing an object store based on object replacement penalties and reference probabilities
US6539382B1 (en) * 1999-04-29 2003-03-25 International Business Machines Corporation Intelligent pre-caching algorithm for a directory server based on user data access history
US6378044B1 (en) * 1999-09-22 2002-04-23 Vlsi Technology, Inc. Method and system for cache replacement among configurable cache sets
US6601143B1 (en) * 1999-09-25 2003-07-29 International Business Machines Corporation Self-adapting cache management method and system
AU2001264989A1 (en) * 2000-05-25 2001-12-03 Exent Technologies, Inc. Disk caching
US20050091511A1 (en) * 2000-05-25 2005-04-28 Itay Nave Useability features in on-line delivery of applications
US6801883B1 (en) 2000-06-02 2004-10-05 Unisys Corporation Code type control of caching parameters
US6826599B1 (en) 2000-06-15 2004-11-30 Cisco Technology, Inc. Method and apparatus for optimizing memory use in network caching
WO2002003207A1 (en) * 2000-06-30 2002-01-10 Koninklijke Philips Electronics N.V. Data processing apparatus with a cache memory and method of using such an apparatus
US6681298B1 (en) * 2000-07-12 2004-01-20 Powertv, Inc. Hypertext markup language cache system and method
US6748492B1 (en) * 2000-08-07 2004-06-08 Broadcom Corporation Deterministic setting of replacement policy in a cache through way selection
US7058771B2 (en) * 2001-11-21 2006-06-06 Reno System and method for managing memory in a surveillance system
US8190530B2 (en) 2002-01-30 2012-05-29 Visa U.S.A. Inc. Method and system for providing multiple services via a point-of-sale portal architecture
US6769785B1 (en) * 2002-03-14 2004-08-03 Acuity Brands, Inc. Edge connectable lighting fixture assembly
KR101046320B1 (ko) * 2002-05-10 2011-07-05 인터디지탈 테크날러지 코포레이션 무선 링크 제어 재전송을 지원하기 위해 프로토콜 데이터 단위의 재전송의 순위 지정을 하는 시스템 및 방법
US6996688B2 (en) * 2003-03-11 2006-02-07 International Business Machines Corporation Method, system, and program for improved throughput in remote mirroring systems
US7035978B2 (en) * 2003-03-11 2006-04-25 International Business Machines Corporation Method, system, and program for policies for improving throughput in remote mirroring systems
US7073027B2 (en) * 2003-07-11 2006-07-04 International Business Machines Corporation Methods, systems and computer program products for controlling caching of distributed data
US7085895B2 (en) * 2003-09-05 2006-08-01 International Business Machines Corporation Apparatus, system, and method flushing data from a cache to secondary storage
US7177984B1 (en) * 2004-04-16 2007-02-13 Apple Computer, Inc. Cache management using historical access information
JP2006065805A (ja) * 2004-08-30 2006-03-09 Canon Inc 画像処理装置及び制御方法
US7490197B2 (en) 2004-10-21 2009-02-10 Microsoft Corporation Using external memory devices to improve system performance
US20060090034A1 (en) * 2004-10-22 2006-04-27 Fujitsu Limited System and method for providing a way memoization in a processing environment
US7376792B2 (en) * 2005-08-17 2008-05-20 International Business Machines Corporation Variable cache data retention system
US8914557B2 (en) 2005-12-16 2014-12-16 Microsoft Corporation Optimizing write and wear performance for a memory
US7461210B1 (en) * 2006-04-14 2008-12-02 Tilera Corporation Managing set associative cache memory according to entry type
US7899994B2 (en) * 2006-08-14 2011-03-01 Intel Corporation Providing quality of service (QoS) for cache architectures using priority information
US8065505B2 (en) * 2007-08-16 2011-11-22 Texas Instruments Incorporated Stall-free pipelined cache for statically scheduled and dispatched execution
CN100593146C (zh) * 2007-11-09 2010-03-03 上海可鲁系统软件有限公司 一种防止工业自动化系统雪崩的方法
US20090327577A1 (en) * 2008-06-27 2009-12-31 Microsoft Corporation Hybrid storage
US9032151B2 (en) 2008-09-15 2015-05-12 Microsoft Technology Licensing, Llc Method and system for ensuring reliability of cache data and metadata subsequent to a reboot
US7953774B2 (en) 2008-09-19 2011-05-31 Microsoft Corporation Aggregation of write traffic to a data store
US8832418B2 (en) * 2009-08-28 2014-09-09 Via Technologies, Inc. Efficient branch target address cache entry replacement
AU2010201718B2 (en) * 2010-04-29 2012-08-23 Canon Kabushiki Kaisha Method, system and apparatus for identifying a cache line
US10019381B2 (en) * 2012-05-01 2018-07-10 Nvidia Corporation Cache control to reduce transaction roll back
US9645944B2 (en) 2012-05-07 2017-05-09 International Business Machines Corporation Enhancing data caching performance
US9110815B2 (en) 2012-05-07 2015-08-18 International Business Machines Corporation Enhancing data processing performance by cache management of fingerprint index
US9262327B2 (en) * 2012-06-29 2016-02-16 Intel Corporation Signature based hit-predicting cache
US9372811B2 (en) * 2012-12-13 2016-06-21 Arm Limited Retention priority based cache replacement policy
JP6311370B2 (ja) * 2014-03-12 2018-04-18 日本電気株式会社 バッファキャッシュ管理装置、バッファキャッシュ管理方法、及び、バッファキャッシュ管理プログラム
WO2017015952A1 (zh) * 2015-07-30 2017-02-02 华为技术有限公司 一种高速缓冲存储器中存储数据的替换方法和替换装置
US10474458B2 (en) 2017-04-28 2019-11-12 Intel Corporation Instructions and logic to perform floating-point and integer operations for machine learning
CN109284304A (zh) * 2018-08-13 2019-01-29 中国平安人寿保险股份有限公司 一种基于缓存技术的电子出单方法及终端设备
US11934342B2 (en) 2019-03-15 2024-03-19 Intel Corporation Assistance for hardware prefetch in cache access
CN113396400A (zh) 2019-03-15 2021-09-14 英特尔公司 用于针对高速缓存操作提供层级开放划分扇区和可变扇区大小的系统和方法
EP4130988A1 (en) * 2019-03-15 2023-02-08 INTEL Corporation Systems and methods for cache optimization
WO2020190807A1 (en) 2019-03-15 2020-09-24 Intel Corporation Systolic disaggregation within a matrix accelerator architecture
US11861761B2 (en) 2019-11-15 2024-01-02 Intel Corporation Graphics processing unit processing and caching improvements

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5487162A (en) * 1992-02-25 1996-01-23 Matsushita Electric Industrial Co., Ltd. Cache lock information feeding system using an address translator
JPH06348595A (ja) * 1993-06-07 1994-12-22 Hitachi Ltd キャッシュ装置
JP3490742B2 (ja) * 1993-09-08 2004-01-26 松下電器産業株式会社 メモリ管理装置
US5671444A (en) * 1994-02-28 1997-09-23 Intel Corporaiton Methods and apparatus for caching data in a non-blocking manner using a plurality of fill buffers
US5649137A (en) * 1994-10-20 1997-07-15 Advanced Micro Devices, Inc. Method and apparatus for store-into-instruction-stream detection and maintaining branch prediction cache consistency
US5774685A (en) * 1995-04-21 1998-06-30 International Business Machines Corporation Method and apparatus for biasing cache LRU for prefetched instructions/data based upon evaluation of speculative conditions
US5696932A (en) * 1995-05-16 1997-12-09 International Business Machines Corporation Method and system for estimating minumun requirements on a cache in a computer based storage system

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011129101A (ja) * 2009-12-16 2011-06-30 Intel Corp キャッシュメモリにおけるキャッシュラインの置き換え

Also Published As

Publication number Publication date
US5943687A (en) 1999-08-24
EP0966710B1 (en) 2003-07-02
EP0966710A1 (en) 1999-12-29
CN1255986A (zh) 2000-06-07
WO1998041923A1 (en) 1998-09-24
AU6430098A (en) 1998-10-12
CA2283323A1 (en) 1998-09-24
CN1149486C (zh) 2004-05-12
DE69816044T2 (de) 2004-03-04
DE69816044D1 (de) 2003-08-07
BR9808245A (pt) 2000-05-16

Similar Documents

Publication Publication Date Title
JP2001515624A (ja) ペナルティーに基づくキャッシュ格納置換方法
US7493621B2 (en) Context switch data prefetching in multithreaded computer
US7617499B2 (en) Context switch instruction prefetching in multithreaded computer
US7958316B2 (en) Dynamic adjustment of prefetch stream priority
US6560693B1 (en) Branch history guided instruction/data prefetching
US6799257B2 (en) Method and apparatus to control memory accesses
US6049867A (en) Method and system for multi-thread switching only when a cache miss occurs at a second or higher level
JP4027620B2 (ja) 分岐予測装置、プロセッサ、及び分岐予測方法
US20150154045A1 (en) Contention management for a hardware transactional memory
US11416253B2 (en) Multiple-table branch target buffer
US5790823A (en) Operand prefetch table
JPH0628180A (ja) プリフェッチバッファ
CN112585580A (zh) 处理器的被过滤的分支预测结构
US6581138B2 (en) Branch-prediction driven instruction prefetch
JP4030314B2 (ja) 演算処理装置
EP1599803B1 (en) Reducing cache trashing of certain pieces
JPH0477344B2 (ja)
JP2534662B2 (ja) 命令キヤツシユ制御方法
JP2001154845A (ja) キャッシュミスした後のメモリバスアクセス制御方式
KR100282225B1 (ko) 데이타 캐쉬 메모리의 제어장치
JPH07219838A (ja) データ先読み制御装置
JP2000347934A (ja) キャッシュメモリ装置
JPH09218825A (ja) 可変キャッシュ方式
JPH06309225A (ja) 情報処理装置
JPH02155038A (ja) データ処理装置