JPH10307756A - キャッシュ除外方法及びシステム - Google Patents

キャッシュ除外方法及びシステム

Info

Publication number
JPH10307756A
JPH10307756A JP10078873A JP7887398A JPH10307756A JP H10307756 A JPH10307756 A JP H10307756A JP 10078873 A JP10078873 A JP 10078873A JP 7887398 A JP7887398 A JP 7887398A JP H10307756 A JPH10307756 A JP H10307756A
Authority
JP
Japan
Prior art keywords
cache
algorithm
randomness
bits
level
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.)
Granted
Application number
JP10078873A
Other languages
English (en)
Other versions
JP3197866B2 (ja
Inventor
Kumar Arimiri Ravi
ラヴィ・カマー・アライミリ
James Clark Leo
レオ・ジェームズ・クラーク
Stephen Doddson John
ジョン・スティーブン・ドッドソン
Don Lewis Jerry
ジェリー・ドン・リュイス
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JPH10307756A publication Critical patent/JPH10307756A/ja
Application granted granted Critical
Publication of JP3197866B2 publication Critical patent/JP3197866B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related 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
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • G06F12/127Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning using additional 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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/123Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
    • 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/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0846Cache with multiple tag or data arrays being simultaneously accessible
    • G06F12/0848Partitioned cache, e.g. separate instruction and operand caches
    • 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/0864Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/601Reconfiguration of cache memory

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)

Abstract

(57)【要約】 【課題】 キャッシュ内の"ストライド"を少なくするた
めに、キャッシュによって用いられる置換アルゴリズム
にあるレベルのランダムネスを導入することでコンピュ
ータ・システムのプロセッサに用いられるキャッシュの
操作を改良する方法を開示している。 【解決手段】 プロセッサで実行される異なる手順を考
慮してキャッシュを最適化するために、置換アルゴリズ
ムには、異なる時間に異なるレベルのランダムネスを導
入できる。ランダムネスのレベルは、基本置換アルゴリ
ズムによりコングルエンス・クラスのサブセットを選択
することで選択的に導入でき、そこでサブセット内の除
外するキャッシュ・ブロックを選択するため、ランダム
・ビットが用いられる。基本置換アルゴリズムはLRU
アルゴリズム等である。4ウェイ・セット連想キャッシ
ュには3つのレベルのランダムネスが考えられ、8ウェ
イ・セット連想キャッシュには4レベルのランダムネス
が考えられる。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、一般的にはコンピ
ュータ・システムに関し、特に、プロセッサによって用
いられるキャッシュ、中でも連想キャッシュを効率よく
使用する方法に関する。
【0002】従来のコンピュータ・システム10の基本
構造を図1に示す。コンピュータ・システム10には複
数の処理装置を使用できるが、図に示しているのはその
うちの2つ、12a及び12bである。これらはさまざ
まな周辺装置に接続される。周辺装置は、入出力(I/
O)装置14(ディスプレイ・モニタ、キーボード、及
び永続記憶装置等)、プログラム命令を実行するために
処理装置によって用いられるメモリ装置16(RAM、
つまりランダム・アクセス・メモリ等)、基本的にはコ
ンピュータが最初に起動されたときに周辺装置の1つ
(通常は永続メモリ装置)からオペレーティング・シス
テムを探し出してロードするためのファームウェア18
を含む。処理装置12a及び12bは、汎用相互接続部
またはバス20を含むさまざまな手段により周辺装置と
通信する。コンピュータ・システム10には、図示して
いないが、例えばモデムまたはプリンタ等と接続するた
めのシリアル・ポート及びパラレル・ポート等の多くの
コンポーネントを追加できる。当業者には明らかなよう
に、図1のブロック図に示したものと共に使用するよう
なコンポーネントは他にもある。例えばビデオ・ディス
プレイ・モニタを制御するために使用されるディスプレ
イ・アダプタ、メモリ16にアクセスするため使用でき
るメモリ・コントローラ等がある。I/O装置14をバ
スに直接接続する代わりに、I/Oブリッジからバス2
0に接続された2次(I/O)バスに接続してもよい。
コンピュータの処理装置は2つ以上使用してもよい。
【0003】対称型マルチプロセッサ(SMP)・コン
ピュータでは、処理装置はすべてほぼ同一である。つま
り、すべて、操作するための命令及びプロトコルの共通
セットまたはサブセットを使用し、一般的には同じアー
キテクチャを有する。代表的なアーキテクチャを図1に
示している。処理装置は、コンピュータを操作するため
にプログラム命令を実行する複数のレジスタ及び実行装
置を有するプロセッサ・コア22を含む。代表的な処理
装置はInternational Business Machines Corporation
のPowerPC(TM)プロセッサを含む。また処理装
置には、命令キャッシュ24及びデータ・キャッシュ2
6等の1つ以上のキャッシュを置くことができる。これ
らは高速メモリ装置を使用して実現される。命令及びデ
ータは、オペランドが命令対データである操作をCPU
が要求しているかどうかを示す信号を調べることによっ
て、対応するキャッシュ24または26に向けることが
できる。キャッシュは、メモリ装置16から値をロード
するという長いステップを避けることによって処理を高
速化するために、プロセッサによって繰り返しアクセス
される値を一時的に保存するため、広く用いられる。こ
れらのキャッシュは、プロセッサ・コアと一体化した1
つの集積チップ28上にパッケージ化されるときは、"
オンボード"・キャッシュと呼ばれる。キャッシュはそ
れぞれ、プロセッサ・コアとキャッシュ・メモリとの間
のデータ及び命令の転送を管理するキャッシュ・コント
ローラ(図示なし)に関連付けられる。
【0004】処理装置には、キャッシュ30等のキャッ
シュを追加することができる。キャッシュ30はレベル
2(L2)キャッシュと呼ばれるが、これはオンボード
(レベル1)・キャッシュ24及び26をサポートする
からである。言い換えると、キャッシュ30はメモリ装
置16とオンボードキャッシュの仲介役になり、オンボ
ード・キャッシュよりもかなり多くの情報(命令及びデ
ータ)を格納できるが、それだけアクセス時間がかか
る。例えばキャッシュ30は、記憶容量が256または
512キロバイトのチップでよく、プロセッサは、総記
憶域64キロバイトのオンボード・キャッシュを有する
IBM PowerPC(TM)604シリーズ・プロセ
ッサでもよい。キャッシュ30はバス20に接続され、
メモリ装置16からプロセッサ・コア22への情報のロ
ードは、すべてキャッシュ30を経由する。図1は2レ
ベルのキャッシュ階層のみ示しているが、多くのレベル
の直列接続キャッシュを有するマルチレベルのキャッシ
ュ階層も可能である。
【0005】キャッシュには多くの"ブロック"があり、
ブロックは個別にさまざまな命令及びデータの値を格納
する。ブロックはどのキャッシュでも"セット"と呼ばれ
るブロックのグループに分けられる。セットは所与のメ
モリ・ブロックが存在できるキャッシュ・ブロックの集
合である。キャッシュには、与えられた任意のメモリ・
ブロックについて、プリセットされたマッピング・ファ
ンクションに従って、ブロックのマップ先になり得る固
有セットがある。セットのブロック数はキャッシュの連
想性と呼ばれる。例えば「2ウェイ・セット連想性」と
は、任意のメモリ・ブロックについて、キャッシュ内
に、メモリ・ブロックのマップ先になり得るブロックが
2つあるということを意味する。しかしながら、メイン
・メモリ内のいくつか異なるブロックを、与えられた任
意のセットにマップすることができる。1ウェイ・セッ
ト連想キャッシュは、直接マップされる。つまり、特定
のメモリ・ブロックを有することができるキャッシュ・
ブロックは1つしかない。キャッシュは、メモリ・ブロ
ックが任意のキャッシュ・ブロックを占有できる場合、
完全連想性があると言われる。つまりセットが1つあ
り、アドレス・タグはそのメモリ・ブロックの完全アド
レスである。
【0006】代表的なキャッシュ・ライン(ブロック)
は、アドレス・タグ・フィールド、状態ビット・フィー
ルド、包括性ビット・フィールド(inclusivity bit fi
eld)、及び実際の命令またはデータを格納する値フィ
ールドを含む。状態ビット・フィールド及び包括性ビッ
ト・フィールドは、マルチプロセッサ・コンピュータ・
システムでキャッシュ・コヒーレンシを維持するため用
いられる。アドレス・タグは対応するメモリ・ブロック
の完全アドレスのサブセットである。効率のよい受信ア
ドレスとアドレス・タグ・フィールド内のタグの1つの
比較一致はキャッシュ・"ヒット"を示す。あるキャッシ
ュ内のアドレス・タグすべての集合(また時には状態ビ
ットと包括性ビットのフィールド)はディレクトリと呼
ばれ、値フィールドのすべての集合はキャッシュ・エン
トリ・アレイと呼ばれる。
【0007】あるキャッシュでセットのすべてのブロッ
クが一杯で、そのキャッシュが"読取り"にしろ"書込み"
にしろ、完全セットにマップされるメモリ位置に対する
何らかのリクエストを受信したとき、キャッシュはクラ
スに現在あるブロックの1つを"追い出す"必要がある。
キャッシュは、追い出すブロックを、当業者には知られ
ている手段(最低使用頻度(LRU:least recently u
sed)、ランダム、疑似LRU等)の1つで選択する。
選択されたブロックのデータが変更された場合、そのデ
ータはメモリ階層で次に最下位のレベルに書込まれる。
このレベルはもう1つのキャッシュ(L1またはオンボ
ード・キャッシュの場合)かもしれないし、メイン・メ
モリ(図1の2レベル・アーキテクチャに示すようなL
2キャッシュの場合)かもしれない。包括の原理から、
階層の下位レベルには、書込まれた変更済みデータを保
持するために利用できるブロックが常にある。しかしな
がら、選択されたブロックのデータが変更されていない
場合は、ブロックはただ棄却されるだけであり、階層の
次に最下位のレベルに書込まれることはない。ブロック
を階層の1レベルから削除するこのプロセスは"追い出
し"として知られる。このプロセスの終わりに、キャッ
シュは、追い出されたブロックのコピーを保持しなくな
る。
【0008】プロセッサで実行される手順(プログラ
ム)の中には、キャッシュの効率が低下するように、限
られた数のセット(コングルエンス・クラス(congruen
ce class))を繰り返し使用して予定外の効果を上げる
手順がある。言い換えると、ある手順により、他の多数
のメンバを使用しないとき、少数のコングルエンス・ク
ラス・メンバで多数の除外または追い出し(eviction)
が生じる際には、メモリ待ち時間の遅延は増加する。ス
トライドと呼ばれるこの効果は、コングルエンス・マッ
ピング・ファンクション、及び特定の手順によりメイン
・メモリ装置(RAM16)のメモリ・ブロックを割当
てる方法に関係する。特定の連想キャッシュを使用する
統計上の利点は、このようなタイプの手順については失
われる。
【0009】時によっては失われる他の統計的な利点
は、命令及びデータ(I/D)に対して個別のキャッシ
ュ・ブロック(キャッシュ24及び26等)を与えるこ
とに関係する。代表的な処理装置では、命令及びデータ
に同数のL1キャッシュ・ブロックが与えられるので、
使用可能なキャッシュ・エントリの50%は、このレベ
ルで命令に使用でき、50%はデータに使用できる。L
2キャッシュの場合は区別がない。つまりL2レベルの
キャッシュの100%を命令に使用でき、100%をデ
ータに使用できる。しかし命令対データに使用可能なブ
ロックのこの比率により、ある手順に関してキャッシュ
を常に最大限の効率で使用できるわけではない。アプリ
ケーション・ソフトウェアの多くは、分割I/Dキャッ
シングのシステムで実行されるときは問題なく、他のア
プリケーションは、統合された均一なキャッシュ上で実
行されるとき(合計キャッシュ・スペースが同じとき)
は問題ない。キャッシュI/D比が、命令とデータのキ
ャッシュ操作の実際の比率に特別に近くはない場合に
も、除外の数は許容できないほど大きい。
【0010】失われる可能性のある連想キャッシュの他
の統計的利点は、所与のセットで除外するキャッシュ・
ブロックが決定されるキャッシュ置換アルゴリズムに関
係する。例えば8ウェイ連想キャッシュに用いられるL
RU装置では、セットに関連付けられた7ビット・フィ
ールドが調べられる。プロセッサで実行される手順の特
定のサイクル周波数により、この7ビットLRUアルゴ
リズムでは、キャッシュが4ウェイ連想、または2ウェ
イ連想だった場合よりも多くのキャッシュ・ブロックが
除外される。
【0011】ストライド条件または命令/データ比は、
技術的用途によって異なることがあるので、連想キャッ
シュを統計的に最適化することは困難である。例えば、
デスクトップ・パブリッシング・プログラム、在庫管理
プログラム、空気力学モデリング・プログラム、及びサ
ーバ・プログラムでは、ストライド条件または命令操作
のデータ操作に対する比が異なることがある。従って、
プロセッサで実行される手順のタイプとは無関係に、そ
の統計的利点をより完全に最適化するキャッシュを設計
することが望ましく、且つ好都合である。
【0012】
【発明が解決しようとする課題】従って、本発明の目的
は、コンピュータ・システムのプロセッサのための改良
されたキャッシュを提供することである。
【0013】本発明の他の目的は、連想性に関して統計
的利点を最適化するキャッシュを提供することである。
【0014】本発明の他の目的は、命令対データのアク
セスに関して統計的利点を最適化するキャッシュを提供
することである。
【0015】本発明の他の目的は、キャッシュ置換(除
外)アルゴリズムに関して統計的利点を最適化するキャ
ッシュを提供することである。
【0016】
【課題を解決するための手段】上述の目的は、コンピュ
ータ・システムのプロセッサによって用いられるキャッ
シュの操作を改良する方法によって達成される。この方
法は、一般にはキャッシュの複数のブロックの中から除
外するキャッシュ・ブロックを選択するため、キャッシ
ュ置換制御装置を与えるステップ、キャッシュ置換制御
装置によって用いられる置換アルゴリズムに、あるレベ
ルのランダムネスを選択的に導入するステップ、及びそ
の後に、置換アルゴリズムに従ってキャッシュ・ブロッ
クを除外するステップを含む。後に異なるレベルのラン
ダムネスを置換アルゴリズムに導入することもできる。
その後、異なるレベルのランダムネスを使用した置換ア
ルゴリズムに従ってキャッシュ・ブロックが除外され
る。ランダムネスのレベルは、基本置換アルゴリズムを
使用してコングルエンス・クラスのサブセットを選択
し、次に1つ以上のランダム・ビットにより、サブセッ
ト内の除外するキャッシュ・ブロックを選択することに
よって選択的に導入できる。4ウェイ・セット連想キャ
ッシュでは3つのレベルのランダムネスが、8ウェイ・
セット連想キャッシュでは4つのレベルのランダムネス
が考えられる。基本置換アルゴリズムは、LRU(leas
t recently used)アルゴリズムでよい。ランダムネス
のレベルは、キャッシュで生じるストライドからの除外
を最適化するよう選択できる。
【0017】上述の、並びに本発明の更なる目的、機
構、及び利点が、以下の詳細な説明で明らかになろう。
【0018】本発明は、処理装置のキャッシュによる操
作効率の向上を対象にしており、キャッシュ効率を改良
するいくつかの方法を提示する。1つの方法は、キャッ
シュ構造の連想性に関係する。これは1つのキャッシュ
40の異なる状態を示す図2乃至図4から理解できよ
う。キャッシュ・コントローラ(図示なし)を追加でき
るキャッシュ40では、連想性を与えるために複数のキ
ャッシュ・ラインがセット(コングルエンス・クラス)
として配置される。図2に示したキャッシュ40の第1
状態では、セットに8つのキャッシュ・ラインがある。
例えば、セット1にキャッシュ・ライン1〜8、セット
2にキャッシュ・ライン9〜16等があり、これは8ウ
ェイ連想である。キャッシュ40のエントリは、アドレ
ス・タグ・フィールド、状態ビット・フィールド、包括
性ビット・フィールド、値フィールドなど、形式を変え
ることができる。
【0019】図2の静的イメージからは、従来の8ウェ
イ連想キャッシュの利点が得られるが、本発明はさら
に、図3及び4に示すように、連想の適合性またはプロ
グラム可能性を与える。図3の8ブロックのセットはそ
れぞれ、セット1a、1b、2a、及び2bと、より小
さいセットに分けられている。これらのセットはそれぞ
れ4つのブロックを含むので、キャッシュ40のこの状
態は4ウェイ連想である。図4のセットはさらに分割さ
れ、セット当たり2つのブロックが作られる。つまり2
ウェイ連想である。このプログレッション(progressio
n)は1ウェイ連想にまで展開することもできる。また
プログレッションを、例えば8の代わりに16等、最大
のセットでキャッシュ・ブロックの数を多くして始める
こともできよう。
【0020】キャッシュ40の連想レベルを変更する機
能により、キャッシュ40は、より効率よく動作する。
従来技術の項で述べているように、ストライドが生じる
手順もある。つまりキャッシュが、特定の連想サイズも
一因になり、1つまたは2つのコングルエンス・クラス
でロール(roll)する。このような手順の場合、ストラ
イドをなくす、または最小にするには、異なる連想サイ
ズを使用する。連想サイズは、異なるアプリケーション
に応じて、所望の連想レベルを示すため用いられるプロ
グラマブル・ビットを与えることによって最適化するこ
とができる。例えば表1に、図2乃至図4の適合可能な
連想機構を実現するため、プログラム可能な2ビット機
構がどのように用いられるかを示す。
【表1】
【0021】2ビット機構は、8ウェイ連想を示すた
め"00"にセットされ、4ウェイ連想を示すため"01"
にセットされ、2ウェイ連想を示すため"10"にセット
され、1ウェイ連想(つまり直接マップ)を示すため"
11"にセットされる。セットに必要になる小分割は、
コングルエンス・クラス・マッピング・ファンクション
を変更し、1つ以上の元のセットの特定のサブセットを
従来のように使用することによって制御される。言い換
えると、2つのセット、1a及び1b、は元のセット1
にあったキャッシュ・ラインのみを含み、セット1c及
び1dは、小分割された最初のセット1aにあったキャ
ッシュ・ラインだけを含む。一定数のキャッシュ・ライ
ンを有するキャッシュ40の場合、これはつまり、コン
グルエンス・クラス数がNとN×8の間で変化すること
を意味する。ここでNは基本マッピング・ファンクショ
ンによって指示されるコングルエンス・クラスの最小数
である。
【0022】特定のサブセットが識別される方法は変更
することができる。メモリ・ブロックの完全アドレスの
一部を使用して、コングルエンス・クラスのマッピング
を洗練することができる。例えば、32ビット完全アド
レスは、図5に示すように、オフセット・フィールド、
コングルエンス・クラス・フィールド、及びアドレス・
タグ・フィールドの3つの部分に分けられる。オフセッ
ト・フィールドはこの例では6ビットで、実際の命令ま
たはデータに対応した値フィールド内のバイトの正確な
位置を定義する。コングルエンス・クラス・フィールド
は、マッピング・ファンクションの入力オペランドとし
て用いられ、メモリ・ブロックを1次セット、つまりセ
ット1等、8つのブロックを有するセットに割当てる。
この例で、8ウェイ連想については、コングルエンス・
クラス・フィールドは13ビットで、アドレス・タグも
13ビットであるが、コングルエンス・クラス・フィー
ルドは、他の連想レベルについてはアドレス・タグから
の他のビットを使用することで効果的に拡大されるの
で、アドレス・タグ・フィールドは収縮する。4ウェイ
連想は、元のアドレス・タグ・フィールドの最後のビッ
トを使用し、8ブロック・セットをそれぞれ4ブロック
の2つの小さいグループに小分割することによって実現
される。同様に2ウェイまたは1ウェイ連想は、元のア
ドレス・タグ・フィールドの第2ビットと最後のビット
及び第3ビットと最後のビットを使用し、セットをさら
に小分割することで実現される。
【0023】プログラマブル連想性は、2ビット機構を
設定するハードウェアまたはソフトウェアのいずれかに
より提供できる。前者の例では、ロジック装置がミス情
報を集め、1つのコングルエンス・クラス、またはミス
・レートがしきい値を超える一定数のコングルエンス・
クラスの最大ミス・レート等の定義済み基準をもとに連
想レベルを選択できる。この連想性の管理は、コンピュ
ータ・システムで実行されるアプリケーションのタイプ
の変化による等、プロセッサで実行される手順の性質変
化にキャッシュが素早く応答するように動的に行える。
これに代えて、マニュアルで選択できるよう1組の接続
ピンを使用することもできよう。ソフトウェア例(プロ
グラム命令)も同様に動作して連想レベルを調整する。
ストライドが生じ得る手順のあることがわかっている特
定のプログラムには、アプリケーション・ソフトウェア
を用意することができるが、アプリケーション・ソフト
ウェアは、ストライドによる余分なメモリ待ち時間を少
なくするため、2ビット連想機構を、既知の適切なレベ
ルにセットできる。アプリケーション・ソフトウェアに
より、プログラムによって用いられる異なるルーチンを
もとに連想レベルを間欠的に調整することもできよう。
オペレーティング・システムのソフトウェアも、アドレ
ス・リクエストを監視し、手順の動作が異なる連想レベ
ルでどれほど効率的かを予測する形で確認するために使
用でき、オペレーティング・システムは次に最も効率の
いいレベルを選択できる。この手法では、プログラムの
実行途中であっても、連想レベルがリアルタイムに調整
される。
【0024】上述のプログラマブル連想性では、コング
ルエンス・クラスに影響を与える1つの方法が与えられ
る。つまり、代表例では、ある乗数に従ってコングルエ
ンス・クラス数を増やすことによる。本発明に従ってキ
ャッシュ効率を改良する他の方法は、コングルエンス・
クラスの異なる側面、つまり、どのコングルエンス・ク
ラスにどのメモリ・ブロックを割当てるかを指定するマ
ッピング・ファンクションの側面に関係する。従来技術
のマッピング手法は通常、モジュロ型ファンクションを
伴うが、このファンクションの周期的な性質は、ストラ
イドの問題につながることがある。本発明はこの問題を
解決するために、完全アドレスまたは部分アドレスを新
たな固有アドレスにエンコードできるマッピング・ファ
ンクションを使用する。つまり特定のコングルエンス・
クラスに対する特定のアドレスの任意(定義済み)割当
てが実現される。図6の例に示すように、完全(元の)
32ビット・アドレスの10番目のビットは、エンコー
ドされた32ビット・アドレスの26番目のビットにシ
フトされ、元のアドレスの26番目のビットはエンコー
ドされたアドレスの18番目のビットにシフトされ、元
のアドレスの18番目のビットはエンコードされたアド
レスの22番目のビットにシフトされ、完全(元の)ア
ドレスの22番目のビットはエンコードされたアドレス
の10番目のビットにシフトされる。この例では、アド
レス・ビットを切り替えることによって、特定のコング
ルエンス・クラスに対する特定のアドレスの固有の任意
割当てが実現される。
【0025】コングルエンス・クラスのこのプログラム
可能性はまた、ハードウェアまたはソフトウェアの例で
も達成できる。アプリケーション・ソフトウェアは、キ
ャッシュ/プロセッサに送られる前にアドレスの適切な
エンコーディングを与えることができる。オペレーティ
ング・システム・ソフトウェアは、メモリ・ブロックの
割当てを監視し、ハードウェアに送られたときインタプ
リタを使用してアドレスを変更することができる。こう
した手法では、コングルエンス・クラスのメンバを間欠
的にまたはリアルタイムに調整できる。図7にハードウ
ェア例を示す。複数の5ビット・プログラマブル・フィ
ールド50が、エンコードされるアドレス(完全または
部分)の各ビットに1つ与えられる。これら5ビット・
プログラマブル・フィールド50は、それぞれ対応する
5/32デコーダ52に接続し、デコーダ出力(32ラ
イン)はそれぞれ対応するANDゲート・アレイ54
(アレイ当たり32のANDゲート)に接続する。AN
Dゲート・アレイ54の出力(それぞれ32ライン)は
複数のORゲート56に分岐する。ORゲート56は、
それぞれANDゲート・アレイ54それぞれから1つの
入力を受け取る。ORゲート56の出力により、エンコ
ードされたアドレスのシフト値が得られる。このハード
ウェアは、5ビット・プログラマブル・フィールド50
に適切な値を選択することでプログラマブル・コングル
エンス・クラスを与える他に、定義済み基準をもとに、
ミス情報を集め、任意マッピング・ファンクションを選
択する、というように動的でもある。このハードウェア
例では、コヒーレンシを保証するために連想レベルを変
更する前に、キャッシュのフラッシュが必要である。
【0026】上述のプログラマブル・コングルエンス・
クラスは、先に述べたプログラマブル連想性から独立し
ているが、この2つは組み合わせて使用できる。例えば
プログラマブル連想性は、2ビット連想機構をセットし
てそのレベルを最適化するために使用でき、次に5ビッ
ト・エンコード・フィールドを使用するプログラマブル
・コングルエンス・クラスにより、除外レートを小さく
することができる。
【0027】本発明に従ってキャッシュ効率を改良する
他の方法は、命令対データに対するキャッシュの使用に
関係する。CPUキャッシング構造を実現したコンピュ
ータ・システムでは、命令及びデータの扱いが常に同じ
統合キャッシュとして、あるいは合計キャッシュRAM
スペースの一部(普通は1/2)が命令専用であり、残
りはデータ専用である分割I/Dキャッシュとして、キ
ャッシュを前もって定義するのが普通である。また、従
来の分割I/Dキャッシュ設計では、命令対データの専
用スペース比は固定である(通常は50:50)。
【0028】この開示では、命令/データ分割比を、程
度を変えてプログラムできる新規なキャッシュ割当て設
計について述べる。ある実施例では、このプログラム可
能性は、ソフトウェアによる読取り及び書込みが可能な
2ビットI/D機構(以下、"id_ratio"と呼ぶ)により
実現される。この機構の設定の定義を、代表例について
表2に示すが、本発明は、他のキャッシュ比にも簡単に
適合及び(または)拡張することができる。
【表2】
【0029】プログラマブルI/D比は、セット連想キ
ャッシュの犠牲(Victim)置換アルゴリズムを変更する
ことによって達成される。下の実施例では、キャッシュ
は8ウェイ・セット連想(8つのメンバはa、b、c、
d、e、f、g、hと示している)であり、7ビットL
RUアルゴリズムが用いられる。この例では、通常の犠
牲選択ロジックが次のブール式で記述される。次のロジ
ックは従来技術の7ビットLRUアルゴリズムを表す
(これらブール式で"^"は論理否定(反転)、"&"は論
理積、"+"は論理和である)。 victim_is_member_a = ^lru_bit(0) & ^lru_bits(1) &
^lru_bits(3); victim_is_member_b = ^lru_bit(0) & ^lru_bits(1) &
lru_bits(3); victim_is_member_c = ^lru_bit(0) & lru_bits(1) & ^
lru_bits(4); victim_is_member_d = ^lru_bit(0) & lru_bits(1) & l
ru_bits(4); victim_is_member_e = ^lru_bit(0) & ^lru_bits(2) &
^lru_bits(5); victim_is_member_f = ^lru_bit(0) & ^lru_bits(2) &
lru_bits(5); victim_is_member_g = ^lru_bit(0) & lru_bits(2) & ^
lru_bits(6); victim_is_member_h = ^lru_bit(0) & lru_bits(2) & l
ru_bits(6); I/D比を変更するため、"id_ratio"の設定、及びCP
Uが命令の読取り(i_read)を要求しているかデータの
読取り(^i_read)を要求しているかに応じて、選択さ
れた除外は、次のように特定のコングルエンス・クラス
・メンバだけに限定される。 d50_mode = (id_ratio = "01"); i50_mode = (id_ratio = "20"); gate_abcd = ^((d50_mode & ^i_read)+(i50_mode & i_r
ead))
【0030】"gate_abcd"信号では、これが"1"なら、
コングルエンス・クラス・メンバa、b、c、またはd
は置換する犠牲として使用できる。"gate_abcd"が"0"
なら、コングルエンス・クラス・メンバe、f、g、ま
たはhを犠牲として使用しなければならない。従って犠
牲選択式は次に示すように変更される。 victim_is_member_a = gate_abcd & ^lru_bit(0) & ^lr
u_bits(1) & ^lru_bits(3); victim_is_member_b = gate_abcd & ^lru_bit(0) & ^lr
u_bits(1) & lru_bits(3); victim_is_member_c = gate_abcd & ^lru_bit(0) & lru
_bits(1) & ^lru_bits(4); victim_is_member_d = gate_abcd & ^lru_bit(0) & lru
_bits(1) & lru_bits(4); victim_is_member_e = (^gate_abcd + lru_bit(0)) & ^
lru_bits(2) & ^lru_bits(5); victim_is_member_f = (^gate_abcd + lru_bit(0)) & ^
lru_bits(2) & lru_bits(5); victim_is_member_g = (^gate_abcd + lru_bit(0)) & l
ru_bits(2) & ^lru_bits(6); victim_is_member_h = (^gate_abcd + lru_bit(0)) & l
ru_bits(2) & lru_bits(6);
【0031】上に述べた本発明の使用例として、id_rat
ioが"01"の場合を考える。この場合では、CPUリク
エストが命令読取りのとき、gate_abcdは"1"であり、
8つのコングルエンス・クラス・メンバはいずれも置換
のための犠牲として選択できる。CPUがデータ読取り
を要求した場合、犠牲にするメンバはe、f、g、また
はhしか選択できない。その結果、命令を格納するため
キャッシュ全体を使用できるが、データの格納にはキャ
ッシュの50%しか使用できない。従って、このモード
ではキャッシュは命令の方へ"重み付け"される。上述の
例は、命令/データ・キャッシュ・ブロック使用比とし
て2:1、1:1、及び1:2を示す。3:1、4:
1、8:1等、例えば使用可能なキャッシュの量を1
2.5%増分することによって他の比率も可能である。
12.5%、25%、37.5%、50%、62.5
%、75%、87.5%、または100%の相対使用率
を得るためには3ビットI/Dが用いられる。
【0032】この新規のキャッシュ割当て設計により、
プログラム可能な命令/データ分割比が得られる。これ
によりアプリケーション・ソフトウェアまたはオペレー
ティング・システムは、性能を最適化するため、キャッ
シュの命令対データのリアルタイムの重み付けを調整す
ることができる。I/Dキャッシュ比の設定は、いつで
も変更でき、ソフトウェアによってCPU及びキャッシ
ュの状態を最初にセーブする必要がない。この手法はま
た、ハードウェアでも、命令読取り対データ読取りの相
対量を監視することによって実現できる。LRU犠牲選
択ロジックの他には、キャッシュ・コントローラ・ロジ
ックが、どのI/D比モードが使われているかに無関係
に同じように機能する。このプログラム可能性は、どの
タイプのキャッシュ(インライン、ルックアサイド、ラ
イトスルー等)でも使用できるよう適合化できる。上に
述べた本発明の実施例は、8ウェイ・セット連想キャッ
シュを使用するが、本発明は、程度に無関係に任意の連
想性(2ウェイ以上)に適用可能である。また上述の実
施例は、7ビットLRUアルゴリズムを用いるが、本発
明は他のLRUアルゴリズムにもて適用できる。犠牲選
択ロジックを、変更可能なI/Dの重み付けを達成する
手段として使用することによって、かなり少ないロジッ
ク回路でも本発明を実現可能である。
【0033】本発明に従って、キャッシュ効率を改良す
る他の方法は、2つの値クラスの相対的なキャッシュ使
用方法(命令またはデータ)を調整する以外の方法で、
キャッシュ・ブロックを除外するメカニズムに関係す
る。キャッシュの効率を改良するために上述の手法を採
用したとしても、何らかのレベルのストライドが、特に
メモリ・ブロックとそれぞれのキャッシュ・ブロックの
割当ての間で起こる周期的なパターンにより生じること
がある。これらの場合では、キャッシュ置換アルゴリズ
ム(LRU等)をさらに変更して、非効率で周期的な除
外を解消し、従ってストライドを少なくする定義済みラ
ンダムネス要素を導入する方法を提供できる。
【0034】本発明のこの側面の1つの実施例を図8に
示す。キャッシュ60は数個のコンポーネントを含み、
コンポーネントはキャッシュに格納されたさまざまな値
のキャッシュ・エントリ・アレイ62、エントリを追跡
するためのキャッシュ・ディレクトリ64、及び乱数に
より選択的に変更されるLRUアルゴリズムを使用する
置換制御装置66を含む。この実施例では、ランダムネ
ス要素を導入するため、置換制御装置の4つの変形例が
考えられる。最初の変形例68では、ランダム化が導入
されないときは、7ビットにより8ブロックのセット
(つまりキャッシュが8ウェイ連想)から最低使用頻度
(least recently used)のキャッシュ・ブロックが選
択され、ランダマイザのために追加ビットを必要としな
い。
【0035】わずかなランダム化が望ましい場合は、第
2変形例70で、少量のランダムネスを導入することに
よって置換アルゴリズムが変更される。所与のコングル
エンス・クラス(キャッシュ・セット)内で、それぞれ
クラスの4分の1を含む4つのグループから、または8
ウェイ連想キャッシュの場合では2つのブロックから、
最初に選択を行うためのLRUビットは3つしか用いら
れない。この2メンバのグループ(サブクラス)が選択
された後、1つのランダム・ビットにより、そのグルー
プ内の2つのブロックのうち1つが選択される。ランダ
ムネスを増やすことが求められる場合は、第3変形例7
2により、1ビットLRUアルゴリズムが用いられ、元
のコングルエンス・クラスが2つのサブクラス(キャッ
シュが8ウェイ連想の場合はそれぞれ4ブロック)に分
割され、2つのランダム・ビットにより、サブクラスの
4つのメンバのうち1つが選択される。最後の変形例7
4では、LRUビットは用いられず、3つのランダム・
ビットにより、8メンバ・クラス内で除外するブロック
が完全に決定される。
【0036】図8でLRU及びランダムのブロックは別
々に示してあるが、これらは組み合わせて1つの7ビッ
ト・フィールドを作ることもできる。言い換えると、こ
のフィールドは完全に変形例68に用いられるが、この
フィールドの4ビットだけは変形例70(LRUビット
3個とランダム・ビット1個)及び74(LRUビット
2個とランダム・ビット2個)に用いられ、フィールド
の3ビットだけが変形例74に用いられる。
【0037】図8の例は8ウェイ連想の場合であるが、
当業者には明らかなように、本発明は他のセット・サイ
ズにも適用できる。例えば4ウェイ連想セットでは3つ
の変形例が考えられる。第1変形例は3つのLRUビッ
トを使用し、ランダム・ビットは使用しない。第2変形
例は1つのLRUビット及び1つのランダム・ビットを
使用する。第3変形例はLRUビットは使用せず、2つ
のランダム・ビットを使用する。2ウェイ連想セットで
は2つの変形例が考えられる。第1変形例は1つのLR
Uビットを使用しランダム・ビットは使用しない。第2
変形例はLRUビットは使用せず、1つのランダム・ビ
ットを使用する。このような可変ランダムネスは、除外
を最適化するもう1つの方法であり、上述のプログラマ
ブル連想性、プログラマブル・コングルエンス・クラ
ス、及びプログラマブルI/D比のいずれにも使用でき
る。
【0038】ここで述べた改良されたキャッシュは、オ
ンボード(L1)キャッシュとして、または下位レベル
・キャッシュ(L2等)として使用できる。キャッシュ
のこのような構成は、キャッシュ階層のただ1つのキャ
ッシュ・レベル、または限られた数のキャッシュ・レベ
ルでしか使用できない場合もあるが、当業者には明らか
なように、性能面の利点を最大にするように、すべての
キャッシュ・レベルについてこの構成を使用することも
望ましい。本発明は、一般にはシングル・プロセッサの
コンピュータ・システム並びにマルチプロセッサのコン
ピュータ・システムに適用できる。
【0039】本発明が特定の実施例を参照して述べられ
たが、この説明は、制限を意味するものではない。当業
者には、本発明の説明の参照に際し、開示された実施例
の様々な変更が、本発明の代替実施例と同様に明らかに
なろう。従って、このような変更は、本発明の趣旨また
は範囲を逸脱することなく実施され得ることが考慮され
る。
【0040】まとめとして、本発明の構成に関して以下
の事項を開示する。
【0041】(1)コンピュータ・システムのプロセッ
サによって用いられるキャッシュの操作を改良する方法
であって、前記キャッシュの複数のブロックから除外す
るキャッシュ・ブロックを選択するためキャッシュ置換
制御装置を与えるステップと、前記キャッシュ置換制御
装置によって用いられる置換アルゴリズムに、あるレベ
ルのランダムネスの選択的に導入するステップと、その
後に前記置換アルゴリズムに従ってキャッシュ・ブロッ
クを除外するステップと、を含む、方法。 (2)前記置換アルゴリズムに異なるレベルのランダム
ネスを選択的に導入し、その後に前記置換アルゴリズム
に従ってキャッシュ・ブロックを除外するステップを含
む、前記(1)記載の方法。 (3)基本置換アルゴリズムを使用し、コングルエンス
・クラスのサブセットを選択することによって前記レベ
ルのランダムネスが選択的に導入され、1つ以上のラン
ダム・ビットにより前記サブセット内の除外するキャッ
シュ・ブロックが選択される、前記(1)記載の方法。 (4)前記レベルのランダムネスを前記置換アルゴリズ
ムに選択的に導入する前記ステップは、少なくとも3つ
の異なるレベルのランダムネスから前記レベルを選択す
る、前記(1)記載の方法。 (5)前記レベルのランダムネスを前記置換アルゴリズ
ムに選択的に導入する前記ステップは、正確に4つの異
なるレベルのランダムネスから前記レベルを選択する、
前記(1)記載の方法。 (6)前記置換アルゴリズムは最低使用頻度(LRU)
アルゴリズムを含む、前記(1)記載の方法。 (7)前記レベルのランダムネスは、前記キャッシュで
生じるストライドからの除外を最適化するため選択され
る、前記(4)記載の方法。 (8)前記置換アルゴリズムは非ランダム・アルゴリズ
ム及びランダム・アルゴリズムを含み、前記置換アルゴ
リズムにより複数の置換制御ビットが用いられ、前記置
換制御ビットの数は、前記非ランダム・アルゴリズムと
ランダム・アルゴリズムの組み合わせを変えて少なくと
も3つの異なるレベルのランダムネスを実現するために
必要なビットの最大数に等しい、前記(4)記載の方
法。 (9)前記非ランダム・アルゴリズムは最低使用頻度
(LRU)アルゴリズムであり、前記キャッシュはnウ
ェイ連想であり、前記置換制御ビットの数はn−1に等
しい、前記(8)記載の方法。 (10)プロセッサと、メモリ装置と、前記プロセッサ
及び前記メモリ装置に接続され、前記メモリ装置のアド
レスに対応したメモリ・ブロックを格納する複数のキャ
ッシュ・ブロックを有するキャッシュと、前記キャッシ
ュの複数のブロックから除外するキャッシュ・ブロック
を選択する手段を有し、キャッシュ置換制御装置によっ
て用いられる置換アルゴリズムに、あるレベルのランダ
ムネスを選択的に導入する手段を含む、前記キャッシュ
置換制御装置と、を含む、コンピュータ・システム。 (11)前記キャッシュ置換制御装置は、前記キャッシ
ュで生じるストライドからの除外を最適化するため、前
記置換アルゴリズムに導入される前記レベルのランダム
ネスを変更する手段を含む、前記(10)記載のコンピ
ュータ・システム。 (12)基本置換アルゴリズムを使用してコングルエン
ス・クラスのサブセットを選択することによって前記レ
ベルのランダムネスが選択的に導入され、ランダム・ビ
ットにより前記サブセット内の除外するキャッシュ・ブ
ロックが選択される、前記(10)記載のコンピュータ
・システム。 (13)前記レベルのランダムネスは、少なくとも3つ
の異なるレベルのランダムネスから選択される、前記
(10)記載のコンピュータ・システム。 (14)前記レベルのランダムネスは、正確に4つの異
なるレベルのランダムネスから選択される、前記(1
0)記載のコンピュータ・システム。 (15)前記置換アルゴリズムは最低使用頻度(LR
U)アルゴリズムを含む、前記(10)記載のコンピュ
ータ・システム。 (16)前記置換アルゴリズムは非ランダム・アルゴリ
ズム及びランダム・アルゴリズムを含み、前記置換アル
ゴリズムにより複数の置換制御ビットが用いられ、前記
置換制御ビットの数は、前記非ランダム・アルゴリズム
とランダム・アルゴリズムの組み合わせを変えて少なく
とも3つの異なるレベルのランダムネスを実現するため
に必要なビットの最大数に等しい、前記(13)記載の
コンピュータ・システム。 (17)前記非ランダム・アルゴリズムは最低使用頻度
(LRU)アルゴリズムであり、前記キャッシュはnウ
ェイ連想であり、前記置換制御ビットの数はn−1に等
しい、前記(16)記載のコンピュータ・システム。
【図面の簡単な説明】
【図1】従来技術のマルチプロセッサ・コンピュータ・
システムのブロック図である。
【図2】連想キャッシュの連想性を変更する新規な方法
を示す図である。
【図3】連想キャッシュの連想性を変更する新規な方法
を示す図である。
【図4】連想キャッシュの連想性を変更する新規な方法
を示す図である。
【図5】アドレス・タグからのビットにより、追加クラ
スを作成することによって変更される、基本コングルエ
ンス・クラス・マッピングを使用し、図2乃至図4に示
したような、プログラマブル連想性を与える方法を示す
図である。
【図6】アドレス・ビットを切り替えることにより、特
定のコングルエンス・クラスに特定のアドレスを任意に
割当てられるようにするプログラマブル・コングルエン
ス・クラスを与える新規な方法を示す図である。
【図7】完全アドレスの各ビットのエンコード値を使用
し、図6に示したようなプログラマブル・コングルエン
ス・クラスを与える1つのハードウェア例の概略図であ
る。
【図8】LRUアルゴリズムにランダムネスの要素を程
度を変えて導入できる置換制御装置を有する新規なキャ
ッシュのブロック図である。
【符号の説明】
10 コンピュータ・システム 12a、12b 処理装置 14 入出力(I/O)装置 16 メモリ装置 18 ファームウェア(ROS) 20 汎用相互接続部 22 プロセッサ・コア 24 命令キャッシュ 26 データ・キャッシュ 28 集積チップ 30、40、60 キャッシュ 50 プログラマブル・フィールド 52 デコーダ 54 ANDゲート・アレイ 56 ORゲート・アレイ 62 キャッシュ・エントリ・アレイ 64 キャッシュ・ディレクトリ 68、70、72、74 変形例
───────────────────────────────────────────────────── フロントページの続き (72)発明者 レオ・ジェームズ・クラーク アメリカ合衆国78628、テキサス州ジョー ジタウン、ラ・クインタ・ドライブ 30514 (72)発明者 ジョン・スティーブン・ドッドソン アメリカ合衆国78660、テキサス州フェラ ガービル、ベル・ロック・サークル 1205 (72)発明者 ジェリー・ドン・リュイス アメリカ合衆国78681、テキサス州ラウン ド・ロック、アローヘッド・サークル 3409

Claims (17)

    【特許請求の範囲】
  1. 【請求項1】コンピュータ・システムのプロセッサによ
    って用いられるキャッシュの操作を改良する方法であっ
    て、 前記キャッシュの複数のブロックから除外するキャッシ
    ュ・ブロックを選択するためキャッシュ置換制御装置を
    与えるステップと、 前記キャッシュ置換制御装置によって用いられる置換ア
    ルゴリズムに、あるレベルのランダムネスの選択的に導
    入するステップと、 その後に前記置換アルゴリズムに従ってキャッシュ・ブ
    ロックを除外するステップと、 を含む、方法。
  2. 【請求項2】前記置換アルゴリズムに異なるレベルのラ
    ンダムネスを選択的に導入し、その後に前記置換アルゴ
    リズムに従ってキャッシュ・ブロックを除外するステッ
    プを含む、請求項1記載の方法。
  3. 【請求項3】基本置換アルゴリズムを使用し、コングル
    エンス・クラスのサブセットを選択することによって前
    記レベルのランダムネスが選択的に導入され、1つ以上
    のランダム・ビットにより前記サブセット内の除外する
    キャッシュ・ブロックが選択される、請求項1記載の方
    法。
  4. 【請求項4】前記レベルのランダムネスを前記置換アル
    ゴリズムに選択的に導入する前記ステップは、少なくと
    も3つの異なるレベルのランダムネスから前記レベルを
    選択する、請求項1記載の方法。
  5. 【請求項5】前記レベルのランダムネスを前記置換アル
    ゴリズムに選択的に導入する前記ステップは、正確に4
    つの異なるレベルのランダムネスから前記レベルを選択
    する、請求項1記載の方法。
  6. 【請求項6】前記置換アルゴリズムは最低使用頻度(L
    RU)アルゴリズムを含む、請求項1記載の方法。
  7. 【請求項7】前記レベルのランダムネスは、前記キャッ
    シュで生じるストライドからの除外を最適化するため選
    択される、請求項4記載の方法。
  8. 【請求項8】前記置換アルゴリズムは非ランダム・アル
    ゴリズム及びランダム・アルゴリズムを含み、 前記置換アルゴリズムにより複数の置換制御ビットが用
    いられ、 前記置換制御ビットの数は、前記非ランダム・アルゴリ
    ズムとランダム・アルゴリズムの組み合わせを変えて少
    なくとも3つの異なるレベルのランダムネスを実現する
    ために必要なビットの最大数に等しい、 請求項4記載の方法。
  9. 【請求項9】前記非ランダム・アルゴリズムは最低使用
    頻度(LRU)アルゴリズムであり、 前記キャッシュはnウェイ連想であり、 前記置換制御ビットの数はn−1に等しい、 請求項8記載の方法。
  10. 【請求項10】プロセッサと、 メモリ装置と、 前記プロセッサ及び前記メモリ装置に接続され、前記メ
    モリ装置のアドレスに対応したメモリ・ブロックを格納
    する複数のキャッシュ・ブロックを有するキャッシュ
    と、 前記キャッシュの複数のブロックから除外するキャッシ
    ュ・ブロックを選択する手段を有し、キャッシュ置換制
    御装置によって用いられる置換アルゴリズムに、あるレ
    ベルのランダムネスを選択的に導入する手段を含む、前
    記キャッシュ置換制御装置と、 を含む、コンピュータ・システム。
  11. 【請求項11】前記キャッシュ置換制御装置は、前記キ
    ャッシュで生じるストライドからの除外を最適化するた
    め、前記置換アルゴリズムに導入される前記レベルのラ
    ンダムネスを変更する手段を含む、請求項10記載のコ
    ンピュータ・システム。
  12. 【請求項12】基本置換アルゴリズムを使用してコング
    ルエンス・クラスのサブセットを選択することによって
    前記レベルのランダムネスが選択的に導入され、ランダ
    ム・ビットにより前記サブセット内の除外するキャッシ
    ュ・ブロックが選択される、請求項10記載のコンピュ
    ータ・システム。
  13. 【請求項13】前記レベルのランダムネスは、少なくと
    も3つの異なるレベルのランダムネスから選択される、
    請求項10記載のコンピュータ・システム。
  14. 【請求項14】前記レベルのランダムネスは、正確に4
    つの異なるレベルのランダムネスから選択される、請求
    項10記載のコンピュータ・システム。
  15. 【請求項15】前記置換アルゴリズムは最低使用頻度
    (LRU)アルゴリズムを含む、請求項10記載のコン
    ピュータ・システム。
  16. 【請求項16】前記置換アルゴリズムは非ランダム・ア
    ルゴリズム及びランダム・アルゴリズムを含み、 前記置換アルゴリズムにより複数の置換制御ビットが用
    いられ、 前記置換制御ビットの数は、前記非ランダム・アルゴリ
    ズムとランダム・アルゴリズムの組み合わせを変えて少
    なくとも3つの異なるレベルのランダムネスを実現する
    ために必要なビットの最大数に等しい、 請求項13記載のコンピュータ・システム。
  17. 【請求項17】前記非ランダム・アルゴリズムは最低使
    用頻度(LRU)アルゴリズムであり、 前記キャッシュはnウェイ連想であり、 前記置換制御ビットの数はn−1に等しい、 請求項16記載のコンピュータ・システム。
JP07887398A 1997-04-14 1998-03-26 キャッシュの操作を改良する方法及びコンピュータ・システム Expired - Fee Related JP3197866B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/837,512 US5974507A (en) 1997-04-14 1997-04-14 Optimizing a cache eviction mechanism by selectively introducing different levels of randomness into a replacement algorithm
US08/837512 1997-04-14

Publications (2)

Publication Number Publication Date
JPH10307756A true JPH10307756A (ja) 1998-11-17
JP3197866B2 JP3197866B2 (ja) 2001-08-13

Family

ID=25274671

Family Applications (1)

Application Number Title Priority Date Filing Date
JP07887398A Expired - Fee Related JP3197866B2 (ja) 1997-04-14 1998-03-26 キャッシュの操作を改良する方法及びコンピュータ・システム

Country Status (2)

Country Link
US (1) US5974507A (ja)
JP (1) JP3197866B2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2000070468A1 (en) * 1999-05-18 2000-11-23 Intel Corporation Least recently used replacement method with protection
KR100379993B1 (ko) * 1999-07-15 2003-04-14 인터내셔널 비지네스 머신즈 코포레이션 컴퓨터 시스템에서 캐시 라인 교체를 관리하기 위한 방법및 장치
JP2014123357A (ja) * 2012-12-13 2014-07-03 Arm Ltd 保持優先度に基づくキャッシュ置換ポリシー

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2348717B (en) * 1999-01-11 2003-08-06 Sgs Thomson Microelectronics Data flow control circuitry
US6859862B1 (en) 2000-04-07 2005-02-22 Nintendo Co., Ltd. Method and apparatus for software management of on-chip cache
US6732234B1 (en) 2000-08-07 2004-05-04 Broadcom Corporation Direct access mode for a cache
US6748492B1 (en) * 2000-08-07 2004-06-08 Broadcom Corporation Deterministic setting of replacement policy in a cache through way selection
US6848024B1 (en) 2000-08-07 2005-01-25 Broadcom Corporation Programmably disabling one or more cache entries
US6493801B2 (en) * 2001-01-26 2002-12-10 Compaq Computer Corporation Adaptive dirty-block purging
US6748495B2 (en) 2001-05-15 2004-06-08 Broadcom Corporation Random generator
US6823427B1 (en) 2001-05-16 2004-11-23 Advanced Micro Devices, Inc. Sectored least-recently-used cache replacement
US7058771B2 (en) * 2001-11-21 2006-06-06 Reno System and method for managing memory in a surveillance system
US6823426B2 (en) 2001-12-20 2004-11-23 Intel Corporation System and method of data replacement in cache ways
US8074081B2 (en) * 2002-04-15 2011-12-06 Infineon Technologies Ag Method for replacing contents of a data storage unit
US7266587B2 (en) * 2002-05-15 2007-09-04 Broadcom Corporation System having interfaces, switch, and memory bridge for CC-NUMA operation
DE10303752B4 (de) * 2003-01-30 2012-02-23 Infineon Technologies Ag Steuerung einer Cachespeicheranordnung mit zufälligen Zurückschreibevorgängen
US7055003B2 (en) * 2003-04-25 2006-05-30 International Business Machines Corporation Data cache scrub mechanism for large L2/L3 data cache structures
US6996679B2 (en) * 2003-04-28 2006-02-07 International Business Machines Corporation Cache allocation mechanism for saving multiple elected unworthy members via substitute victimization and imputed worthiness of multiple substitute victim members
US6993628B2 (en) * 2003-04-28 2006-01-31 International Business Machines Corporation Cache allocation mechanism for saving elected unworthy member via substitute victimization and imputed worthiness of substitute victim member
US7120748B2 (en) * 2003-09-04 2006-10-10 International Business Machines Corporation Software-controlled cache set management
US7114035B2 (en) * 2003-09-04 2006-09-26 International Business Machines Corporation Software-controlled cache set management with software-generated class identifiers
US8417913B2 (en) * 2003-11-13 2013-04-09 International Business Machines Corporation Superpage coalescing which supports read/write access to a new virtual superpage mapping during copying of physical pages
US20070185015A1 (en) * 2005-02-28 2007-08-09 Chiron Corporation and North China Pharmaceutical Corporation Semi-synthetic desmethyl-vancomycin-based glycopeptides with antibiotic activity
US20070162475A1 (en) * 2005-12-30 2007-07-12 Intel Corporation Method and apparatus for hardware-based dynamic escape detection in managed run-time environments
US7991965B2 (en) * 2006-02-07 2011-08-02 Intel Corporation Technique for using memory attributes
US7603522B1 (en) 2006-05-10 2009-10-13 Globalfoundries Inc. Blocking aggressive neighbors in a cache subsystem
US7610448B2 (en) * 2006-12-27 2009-10-27 Intel Corporation Obscuring memory access patterns
US8250302B2 (en) * 2008-01-31 2012-08-21 Hewlett-Packard Development Company, L.P. Cache management using sampled values assigned to a request
US8806145B2 (en) * 2008-11-07 2014-08-12 Oracle America, Inc. Methods and apparatuses for improving speculation success in processors
US8898401B2 (en) * 2008-11-07 2014-11-25 Oracle America, Inc. Methods and apparatuses for improving speculation success in processors
US8209491B2 (en) * 2010-04-27 2012-06-26 Symantec Corporation Techniques for directory server integration
US20120096226A1 (en) * 2010-10-18 2012-04-19 Thompson Stephen P Two level replacement scheme optimizes for performance, power, and area
JP6209689B2 (ja) * 2014-12-14 2017-10-04 ヴィア アライアンス セミコンダクター カンパニー リミテッド モードに応じてウェイの全部又はサブセットに選択的に割り当てるように動的に構成可能であるマルチモード・セット・アソシエイティブ・キャッシュ・メモリ
US10698827B2 (en) 2014-12-14 2020-06-30 Via Alliance Semiconductor Co., Ltd. Dynamic cache replacement way selection based on address tag bits
KR101820223B1 (ko) 2014-12-14 2018-01-18 비아 얼라이언스 세미컨덕터 씨오., 엘티디. 모드에 따라 선택적으로 하나 또는 복수의 셋트를 선택하도록 동적으로 구성가능한 멀티 모드 셋트 연관 캐시 메모리
US20230214222A1 (en) * 2021-12-30 2023-07-06 Arm Limited Methods and apparatus for storing instruction information

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4713755A (en) * 1985-06-28 1987-12-15 Hewlett-Packard Company Cache memory consistency control with explicit software instructions
US5185878A (en) * 1988-01-20 1993-02-09 Advanced Micro Device, Inc. Programmable cache memory as well as system incorporating same and method of operating programmable cache memory
US5025366A (en) * 1988-01-20 1991-06-18 Advanced Micro Devices, Inc. Organization of an integrated cache unit for flexible usage in cache system design
US5136691A (en) * 1988-01-20 1992-08-04 Advanced Micro Devices, Inc. Methods and apparatus for caching interlock variables in an integrated cache memory
US5297270A (en) * 1989-11-13 1994-03-22 Zenith Data Systems Corporation Programmable cache memory which associates each section of main memory to be cached with a status bit which enables/disables the caching accessibility of the particular section, and with the capability of functioning with memory areas of varying size
US5450564A (en) * 1990-05-04 1995-09-12 Unisys Corporation Method and apparatus for cache memory access with separate fetch and store queues
EP0463874A2 (en) * 1990-06-29 1992-01-02 Digital Equipment Corporation Cache arrangement for file system in digital data processing system
US5187893A (en) * 1991-02-07 1993-02-23 Knight Richard S Wire mesh lobster trap launch steadying device
US5367653A (en) * 1991-12-26 1994-11-22 International Business Machines Corporation Reconfigurable multi-way associative cache memory
JP2839060B2 (ja) * 1992-03-02 1998-12-16 インターナショナル・ビジネス・マシーンズ・コーポレイション データ処理システムおよびデータ処理方法
GB9307359D0 (en) * 1993-04-08 1993-06-02 Int Computers Ltd Cache replacement mechanism
JPH06348595A (ja) * 1993-06-07 1994-12-22 Hitachi Ltd キャッシュ装置
US5623627A (en) * 1993-12-09 1997-04-22 Advanced Micro Devices, Inc. Computer memory architecture including a replacement cache
US5778432A (en) * 1996-07-01 1998-07-07 Motorola, Inc. Method and apparatus for performing different cache replacement algorithms for flush and non-flush operations in response to a cache flush control bit register

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2000070468A1 (en) * 1999-05-18 2000-11-23 Intel Corporation Least recently used replacement method with protection
JP2002544624A (ja) * 1999-05-18 2002-12-24 インテル・コーポレーション 保護機能付き最近最低使用頻度置換方法
KR100379993B1 (ko) * 1999-07-15 2003-04-14 인터내셔널 비지네스 머신즈 코포레이션 컴퓨터 시스템에서 캐시 라인 교체를 관리하기 위한 방법및 장치
JP2014123357A (ja) * 2012-12-13 2014-07-03 Arm Ltd 保持優先度に基づくキャッシュ置換ポリシー

Also Published As

Publication number Publication date
US5974507A (en) 1999-10-26
JP3197866B2 (ja) 2001-08-13

Similar Documents

Publication Publication Date Title
JPH10307756A (ja) キャッシュ除外方法及びシステム
US6058456A (en) Software-managed programmable unified/split caching mechanism for instructions and data
US5978888A (en) Hardware-managed programmable associativity caching mechanism monitoring cache misses to selectively implement multiple associativity levels
US8140764B2 (en) System for reconfiguring cache memory having an access bit associated with a sector of a lower-level cache memory and a granularity bit associated with a sector of a higher-level cache memory
US6889291B1 (en) Method and apparatus for cache replacement for a multiple variable-way associative cache
EP1654660B1 (en) A method of data caching
US10430349B2 (en) Scaled set dueling for cache replacement policies
US5689679A (en) Memory system and method for selective multi-level caching using a cache level code
US7861055B2 (en) Method and system for on-chip configurable data ram for fast memory and pseudo associative caches
US7277992B2 (en) Cache eviction technique for reducing cache eviction traffic
US20090172344A1 (en) Method, system, and apparatus for page sizing extension
US6026470A (en) Software-managed programmable associativity caching mechanism monitoring cache misses to selectively implement multiple associativity levels
KR100395768B1 (ko) 멀티 레벨 캐쉬 시스템
US5983322A (en) Hardware-managed programmable congruence class caching mechanism
US8266379B2 (en) Multithreaded processor with multiple caches
KR20010021053A (ko) 컴퓨터 시스템에서 캐시 라인 교체를 관리하기 위한 방법및 장치
US6360302B1 (en) Method and system for dynamically changing page types in unified scalable shared-memory architectures
US6000014A (en) Software-managed programmable congruence class caching mechanism
EP4246334B1 (en) Systems and methods for managing memory utilization
KR100302928B1 (ko) 명령어및데이터에대한하드웨어-관리프로그래머블통합/분할된캐싱메카니즘
US20230100746A1 (en) Multi-level partitioned snoop filter
TWI742770B (zh) 神經網路計算裝置及其快取管理方法
CN116756060A (zh) 用于管理存储器利用的系统和方法
JP2008544366A (ja) 柔軟な構成を有するキャッシュ、それを使用するデータ処理システム、およびそのための方法
NO20220189A1 (en) Snoop filter scalability

Legal Events

Date Code Title Description
LAPS Cancellation because of no payment of annual fees