JP3197866B2 - キャッシュの操作を改良する方法及びコンピュータ・システム - Google Patents

キャッシュの操作を改良する方法及びコンピュータ・システム

Info

Publication number
JP3197866B2
JP3197866B2 JP07887398A JP7887398A JP3197866B2 JP 3197866 B2 JP3197866 B2 JP 3197866B2 JP 07887398 A JP07887398 A JP 07887398A JP 7887398 A JP7887398 A JP 7887398A JP 3197866 B2 JP3197866 B2 JP 3197866B2
Authority
JP
Japan
Prior art keywords
cache
bits
lru
block
replacement
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.)
Expired - Fee Related
Application number
JP07887398A
Other languages
English (en)
Other versions
JPH10307756A (ja
Inventor
ラヴィ・カマー・アライミリ
レオ・ジェームズ・クラーク
ジョン・スティーブン・ドッドソン
ジェリー・ドン・リュイス
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)

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、一般的にはコンピ
ュータ・システムに関し、特に、プロセッサによって用
いられるセット連想型のマッピング方式を採用したキャ
ッシュを効率よく使用する方法に関する。
【0002】従来のコンピュータ・システム10の基本
構造を図1に示す。コンピュータ・システム10には複
数の処理装置を使用できるが、図示しているのはそのう
ちの2つ、12a及び12bである。これらはさまざま
な周辺装置に接続される。周辺装置は、入出力(I/
O)装置14(ディスプレイ・モニタ、キーボード、及
び永続記憶装置等)、プログラム命令を実行するために
処理装置によって用いられるメモリ装置16(RA
M、つまりランダム・アクセス・メモリ等)、基本的に
はコンピュータが最初に起動されたときに周辺装置の1
つ(通常は永続メモリ装置)からオペレーティング・シ
ステムを探し出してロードするためのファームウェア1
8を含む。処理装置12a及び12bは、汎用相互接続
部またはバス20を含むさまざまな手段により周辺装置
と通信する。コンピュータ・システム10には、図示し
ていないが、例えばモデムまたはプリンタ等と接続する
ためのシリアル・ポート及びパラレル・ポート等の多く
構成要素を追加できる。当業者には明らかなように、
1に示したものと共に使用するような構成要素は他に
もある。例えばディスプレイ・モニタを制御するために
使用されるディスプレイ・アダプタ、メモリ装置16
にアクセスするため使用できるメモリ・コントローラ等
がある。I/O装置14をバスに直接接続する代わり
に、I/Oブリッジからバス20に接続された2次(I
/O)バスに接続してもよい。コンピュータの処理装置
は2つ以上使用してもよい。
【0003】対称型マルチプロセッサ(SMP)コンピ
ュータでは、処理装置はすべてほぼ同一である。つま
り、すべて、操作するための命令及びプロトコルの共通
セットまたはサブセットを使用し、一般的には同じアー
キテクチャを有する。代表的なアーキテクチャを図1に
示している。処理装置は、コンピュータを操作するため
にプログラム命令を実行する複数のレジスタ及び実行装
置を有するプロセッサ・コア22を含む。代表的な処理
装置はIBM社のPowerPC(TM)プロセッサを
含む。また処理装置には、命令キャッシュ24及びデー
タ・キャッシュ26等の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ウェイ連想性」と略記。他のウェイにつ
いても同様。)とは、任意のメモリ・ブロックについ
て、キャッシュ内に、このメモリ・ブロックのマップ先
になり得るブロックが2つあるということを意味する。
しかしながら、メイン・メモリ内のいくつか異なるブロ
ックを、与えられた任意のセットにマップすることがで
きる。1ウェイ連性のキャッシュは、直接マップされ
る。つまり、特定のメモリ・ブロックを有することがで
きるキャッシュ・ブロックは1つしかない。任意のメモ
リ・ブロックが任意のキャッシュ・ブロックを占有でき
る場合、キャッシュは、完全連想性を有すると言われ
る。つまりセットが1つあり、アドレス・タグはそのメ
モリ・ブロックの完全アドレスである。
【0006】代表的なキャッシュ・ライン(ブロック)
は、アドレス・タグ・フィールド、状態ビット・フィー
ルド、包括性(inclusivity)ビット・フィールド、
び実際の命令またはデータを格納する値フィールドを含
む。状態ビット・フィールド及び包括性ビット・フィー
ルドは、マルチプロセッサ・コンピュータ・システム
でキャッシュ・コヒーレンシを維持するため用いられ
る。アドレス・タグは対応するメモリ・ブロックの完
全アドレスのサブセットである。受け取られる実効アド
レスとアドレス・タグ・フィールド内のタグの1つ
比較一致はキャッシュ・ヒトを示す。キャッシュ内
のアドレス・タグすべての集合(また時には状態ビット
と包括性ビットのフィールド)はキャッシュ・ディレク
トリと呼ばれ、値フィールドのすべての集合はキャッシ
ュ・エントリ・アレイと呼ばれる。
【0007】一のキャッシュについて一のセットのす
べてのブロックが一杯で、このキャッシュが読取り
にしろ書込みにしろ、このセットにマップされる
うな一のメモリ位置に対する何らかの要求を受信したと
き、このキャッシュは、このセット内に現在あるブロッ
クの1つを追い出す必要がある。このキャッシュ
は、追い出すべき(置換対象)ブロックを、当業者には
周知の手段(最低使用頻度(LRU:least recently u
sed)、ランダム、疑似LRUアルゴリズム等)の1つ
で選択する。もし、選択されたブロック内のデータが変
更されていれば、そのデータはメモリ階層内のの下
ベルに書込まれる。このレベルはもう1つのキャ
ッシュ(L1またはオンボード・キャッシュの場合)か
もしれないし、メイン・メモリ(図1の2レベルのキャ
ッシュ階層に示すようなL2キャッシュの場合)かもし
れない。包括の原理から、メモリ階層次の下位レベ
ルには、書込まれた変更済みデータを保持するために利
用できるブロックが常に存在する。しかしながら、選択
されたブロックのデータが変更されていなければ
ブロックはただ放棄されるだけであり、メモリ階層
の次の下位レベルに書込まれることはない。ブロックを
メモリ階層の1つのレベルから除去するこのプロセス
は、追い出し」(eviction)として知られる。このプ
ロセスの終わりに、このキャッシュは、追い出されたブ
ロックのコピーをもはや保持しなくなる。
【0008】プロセッサで実行される手順(プログラ
ム)の中には、限られた数のセット(コングルエンス・
クラス)を繰り返し使用してキャッシュ効率を低下させ
るものがある。言い換えると、ある手順によりコング
ルエンス・クラスの少数のメンバにおいて多数の追い出
しがぜられ、その際に他の多数のメンバが使用されな
い場合には、メモリ待ち時間の遅延増加する。ストラ
イドと呼ばれるこの現象は、コングルエンス・クラスの
マッピング関数、及び特定の手順によりメモリ装置
(RAM16)のメモリ・ブロックを割当てる方法に
関係する。特定の連想キャッシュを使用する統計上の
利点は、このようなタイプの手順については失われる。
【0009】時によっては失われる他の統計的な利点
は、命令及びデータ用の別個のキャッシュ・ブロック
命令キャッシュ24及びデータ・キャッシュ26等)
を与えることに関係する。代表的な処理装置では、命令
及びデータに同数のL1キャッシュ・ブロックが与
えられるので、使用可能なキャッシュ・エントリの50
%は、このL1レベルで命令に使用でき、50%はデ
ータに使用できる。L2キャッシュの場合は区別がな
い。つまりL2レベルのキャッシュの100%を命令
に使用でき、100%をデータに使用できる。しか
命令用及びデータに使用可能なブロックのこの比
、ある特定の手順についてはキャッシュを常に最大
限の効率で使用できるわけではない。アプリケーション
・ソフトウェアの多くは、分割型I/D(命令/デー
タ)キャッシュを備えたシステムで実行されるときは
効率的に処理され、他のアプリケーションは、統合型キ
ャッシュ(全体的なキャッシュ空間が同じであるものと
する)を備えたシステム上で実行されるときは効率的に
処理されるI/Dキャッシュ比が、命令キャッシュ
操作とデータキャッシュ操作の実際の比率に特別に近
くはない場合にも、追い出しの数は許容できないほど大
きい。
【0010】失われる可能性のある連想キャッシュの
他の統計的利点は、所与のセット内に存在する追い出す
べきキャッシュ・ブロック決定するためのキャッシュ
置換アルゴリズムに関係する。例えば8ウェイ連想
ャッシュが使用できるLRU装置はそのセットに関連
する7ビットのLRUフィールド調べる。プロセッサ
で実行される手順の特定のサイクル周波数に起因し
、この7ビットLRUアルゴリズムは、キャッシュ
が4ウェイ連想性または2ウェイ連想性を有する場合
比較して、り多くのキャッシュ・ブロックを追い出す
ことになろう
【0011】ストライド条件または命令/データ(I/
D)比は、技術的アプリケーションによって異なること
があるので、連想キャッシュを統計的に最適化するこ
とは困難である。例えば、デスクトップ・パブリッシン
グ・プログラム、在庫管理プログラム、空気力学モデリ
ング・プログラム、及びサーバ・プログラムでは、スト
ライド条件または命令操作データ操作との比がそれぞ
れ互いに異なることがある。従って、プロセッサで実
行される手順のタイプとは無関係に、その統計的利点を
より完全に最適化できるように、連想型キャッシュを設
計することが望ましく、且つ好都合である。
【0012】
【発明が解決しようとする課題】従って、本発明の目的
は、コンピュータ・システムのプロセッサのための改良
されたキャッシュを提供することである。
【0013】本発明の他の目的は、連想性に関して統計
的利点を最適化したキャッシュを提供することである。
【0014】本発明の他の目的は、命令またはデータの
アクセスに関して統計的利点を最適化したキャッシュを
提供することである。
【0015】本発明の他の目的は、キャッシュ置換
追い出し)アルゴリズムに関して統計的利点を最適化
したキャッシュを提供することである。
【0016】
【課題を解決するための手段】述の目的は、プロセッ
サによって使用されるセット連想型キャッシュと、複数
の置換制御ビットを使用する置換アルゴリズムにより、
キャッシュ内の複数のキャッシュ・ブロックから追い出
すべき一のキャッシュ・ブロックを選択するためのキャ
ッシュ置換制御装置とを備えたコンピュータ・システム
において、キャッシュの操作を改良する方法を提供する
ことによって達成される。この方法は、一般には置換制
御ビットの数を動的に変更することにより、当該変更さ
れた数の置換制御ビットを使用する置換アルゴリズムに
よってキャッシュ内の一のコングルエンス・クラスにお
ける一のサブセットを選択するステップと、変更された
数の置換制御ビットに関連する1つ以上のランダム・ビ
ットを使用することにより、前記選択されたサブセット
内の特定のキャッシュ・ブロックを追い出すべきキャッ
シュ・ブロックとして選択するステップと、選択された
キャッシュ・ブロックをキャッシュから追い出すステッ
プとを含む。4ウェイ連想型キャッシュでは3つの変形
が、8ウェイ連想型キャッシュでは4つの変形例が考
えられる。基本置換アルゴリズムは、LRUアルゴリズ
ムでよい。これにより、キャッシュで生じるストライ
ドからの追い出しを最適化することができる。
【0017】述の、並びに本発明の更なる目的、機
び利点が、以下の詳細な説明から明らかになろう。
【0018】本発明は、処理装置のキャッシュによる操
作効率の向上を対象にしており、キャッシュ効率を改良
するいくつかの方法を提示する。1つの方法は、キャッ
シュ構造の連想性に関係する。これは1つのキャッシュ
40の異なる状態を示す図2図4から理解できよう。
キャッシュ・コントローラ(図示せず)を含むことが
きるキャッシュ40は、連想性を与えるために複数のキ
ャッシュ・ラインが複数のセット(複数のコングルエン
ス・クラス)として配置される。図2に示したキャッシ
ュ40の第1状態では、一のセットに8つのキャッシ
ュ・ラインがある。例えば、セット1にキャッシュ・ラ
イン1〜8があり、セット2にキャッシュ・ライン9〜
16等があり、これは8ウェイ連想性を意味する。キャ
ッシュ40一のエントリは、種々の形式を有するこ
とができ、例えばアドレス・タグ・フィールド、状態
(S)ビット・フィールド、包括性(I)ビット・フィ
ールド及び値フィールドを有している
【0019】図2の静的イメージは、通常の8ウェイ連
キャッシュの利点を与えるが、本発明はさらに、図
3及び4に示すように、連想の適性またはプログラム
可能性を与える。図3では、8ブロックを有する各セッ
は、(セット1a、1b、2a、及び2bを含む)2
つのサブセットにそれぞれ分割されている。これらの
セットの各々はそれぞれ4つのブロックを含むので、
キャッシュ40のこの状態は4ウェイ連想である。図
では、これらのサブセットさらに細分され、セット
当たり2つのブロックが作られる。つまり2ウェイ連想
である。この作業は1ウェイ連想にまで展開するこ
ともできる。またこの作業を、例えば8の代わりに16
のように、最大のセット内のより多数のキャッシュ・ブ
ロックから始めることもできよう。
【0020】キャッシュ40の連想レベルを変更する
の能力は、キャッシュ40より効率よく動作すること
を可能にする。従来技術の項で述べように、幾つかの
手順によっては、特定の連想サイズも一因になって、ス
トライド(すなわち、キャッシュが1つまたは2つのコ
ングルエンス・クラスロール・インすること)が生じ
ることもある。これらの手順については異なる連想サ
イズを使用することにより、ストライドをなくす、ま
たは最小にすることができる。連想サイズ、異なるア
プリケーションに応じて最適化するためには、1つ以上
プログラマブル・ビットを与え且つこれらのビットを
使用して所望の連想レベルを示すようにすればよい。例
えば、以下の表1、図2図4の適可能な連想機構
を実現するため、プログラム可能な2ビット機構(以下
「2ビット連想機構」と称す)がどのように用いられる
かを示す。
【表1】
【0021】2ビット連想機構は、8ウェイ連想を示
すため00設定され、4ウェイ連想を示すため
01設定され、2ウェイ連想を示すため
設定され、1ウェイ連想(つまり直接マップ)
を示すため11設定される。このセットに必要な
細分は、基本セットの1つ以上の定サブセットを適切
使用するように、コングルエンス・クラスのマッピン
グ関数を変更することによって制御される。言い換える
と、2つのサブセット、1a及び1b(図3)は基本
セット1(図1)にあったキャッシュ・ラインのみを含
み、サブセット1c及び1d(図4)、最初のサブ
ット1aにあったキャッシュ・ラインだけを含む。一定
数のキャッシュ・ラインを有するキャッシュ40につい
ては、これは、コングルエンス・クラス数がNとN×
8の間で変化することを意味する。ただし、Nは基本マ
ッピング関数によって指示されるコングルエンス・クラ
スの最小数である。
【0022】特定のサブセット識別する方法は変更す
ることができる。メモリ・ブロックの完全アドレスの一
部を使用して、コングルエンス・クラスのマッピングを
洗練することができる。例えば、32ビット完全アド
レスは、図5に示すように、オフセット・フィールド、
コングルエンス・クラス・フィールド、及びアドレス・
タグ・フィールドの3つの部分に分けることができる
オフセット・フィールドはこの例では6ビットで、実
際の命令またはデータに対応する値フィールド内のバイ
トの正確な位置を定義する。コングルエンス・クラス・
フィールドは、マッピング関数の入力オペランドとして
用いられ、メモリ・ブロックを基本セット、つまりセッ
ト1のような8ブロックを有するセットに割当てる。こ
の例で、8ウェイ連想については、コングルエンス
・クラス・フィールドは13ビットで、アドレス・タグ
も13ビットである。しかし、コングルエンス・クラス
・フィールドは、他の連想レベルについてはアドレス
・タグからの他のビットを使用することで実効的に拡大
されるので、アドレス・タグ・フィールドは収縮する
とになる。4ウェイ連想性を実現するには、元のアドレ
ス・タグ・フィールドの最後のビットを使用し、8
ブロックを有する基本セットをそれぞれ4ブロックの2
つの小さいサブセット細分すればよい。同様に2ウ
ェイまたは1ウェイ連想性を実現するには、元のアドレ
ス・タグ・フィールド最後のビットから2番目のビ
ット及び3番目のビットを使用しそれぞれのサブ
ットをさらに細分すればよい。
【0023】プログラム可能な連想性は、2ビット連想
機構を設定するハードウェアまたはソフトウェアのいず
れかにより実現できる。前者の実現形態では、一のロジ
ック装置がミス情報を収集し、予め定義された基準(例
えば、1つのコングルエンス・クラスに対する最大ミス
・レート、またはそれぞれのミス・レートが1つ以上の
しきい値を超える一定数以上のコングルエンス・クラ
ス)に基づいて、一の連想レベルを選択できる。この連
想性の管理は、動的に行うことができる。かくて、キャ
ッシュは、コンピュータ・システムで実行中のアプリ
ケーションのタイプの変化起因する、プロセッサ
で実行中の手順の性質変化に早く応答できるようにな
。これに代えて、手動的に選択できるよう1組の接続
ピンを使用することもできよう。ソフトウェアの実現形
(プログラム命令)も同様に動作して連想レベルを
調整する。ストライドが生じ得る手順を有することがわ
かっている特定のプログラムには、アプリケーション・
ソフトウェアを用意することができるが、このアプリケ
ーション・ソフトウェアは、ストライドに起因する余分
なメモリ待ち時間を少なくするため、2ビット連想機構
を既知の適切な設定できる。このアプリケーション
・ソフトウェア、プログラムによって用いられる異な
るルーチンに基づいて連想レベルを間欠的に調整するこ
ともできよう。また、オペレーティング・システムを使
用して、アドレス要求を監視し、それぞれの手順が異な
る連想レベルでどれほど効率的に動作するかを予測した
後、最も効率の良い連想レベルを選択することもでき
る。この手法では、プログラムの実行途中であっても、
連想レベルが実時間的に調整される。
【0024】述のプログラム可能な連想性例え
ば、ある乗数に従ってコングルエンス・クラスの数を増
やすことによって、コングルエンス・クラスに影響を与
える1つの方法える。本発明に従ってキャッシュ効
率を改良する他の方法は、コングルエンス・クラスの異
なる側面、つまり、どのコングルエンス・クラスにどの
メモリ・ブロックを割当てるかを指定するマッピング
の側面に関係する。従来技術のマッピング手法は、モ
ジュロ型関数を伴うことが多いが、この関数の周期的な
性質は、ストライドの問題につながることがある。本発
明はこの問題を解決するために、完全アドレスまたは
部分アドレスを新たな固有アドレスにエンコードできる
マッピング関数を使用する。つまり特定のコングルエ
ンス・クラスに対する特定のアドレスの任意予め定
義された)割当てが実現される。図6の例に示すよう
、元(完全な)32ビット・アドレスの10番目の
ビットは、エンコードされた32ビット・アドレスの2
6番目のビットにシフトされ、元のアドレスの26番目
のビットはエンコードされたアドレスの18番目のビッ
トにシフトされ、元のアドレスの18番目のビットはエ
ンコードされたアドレスの22番目のビットにシフトさ
、元のアドレスの22番目のビットはエンコードされ
たアドレスの10番目のビットにシフトされる。この例
では、複数のアドレス・ビットを切り替えることによっ
て、特定のコングルエンス・クラスに対する特定のアド
レスの固有で且つ任割当てが実現される。
【0025】また、コングルエンス・クラスのこのプロ
グラム可能性は、ハードウェアまたはソフトウェアの
でも実現できる。アプリケーション・ソフトウェア
は、キャッシュ/プロセッサに送られる前にアドレス
の適切なエンコーディングを与えることができる。
方、オペレーティング・システムは、メモリ・ブロック
の割当てを監視し、インタプリタを使用してハードウェ
アに送られるアドレスを変更することができる。こうし
た手法では、コングルエンス・クラスのメンバを間欠的
にまたは実時間的に調整できる。図7にハードウェア
実現例を示す。プログラム可能な複数の5ビット・フ
ールド50が、エンコードすべき(完全または部分)
ドレス内の各ビットごとに1つずつ与えられる。これら
5ビット・フィールド50の各々、対応する5/3
2デコーダ52にそれぞれ接続されデコーダ出力
(32本の線は、対応するANDゲート・アレイ54
(アレイ当たり32のANDゲート)にそれぞれ接続
される。ANDゲート・アレイ54の出力(それぞれ3
本の線)は複数のORゲート56に分岐接続され
る。ORゲート56の各々、各ANDゲート・アレイ
4から1つの入力をそれぞれ受け取る。ORゲート5
6の出力、エンコードされたアドレスのシフト値
与える。このハードウェアは、プログラム可能な複数の
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比は、連想型キャ
ッシュの換アルゴリズムを変更することによって達成
される。下の実例では、キャッシュは8ウェイ連
性を 有しその8つのメンバはahと示している)、
7ビットLRUアルゴリズムが用いられる。この実現
例では、通常の置換対象(victim)の選択ロジックが次
のブール式で記述される。次のロジックは従来技術
従った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) & lru_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) & lru_bits(6); I/D比を変更するため、選択された置換対象は、「id
_ratioの設定、及びCPUが命令の読取り(i_read)
またはデータの読取り(∧i_read)のどちらを要求して
いるかに依存し、次のように特定のコングルエンス・
クラス・メンバだけに限定される。 d50_mode = (id_ratio = "01"); i50_mode = (id_ratio = "10"); gate_abcd = ∧((d50_mode & ∧i_read)+(i50_mode & i_read))
【0030】もし「gate_abcd号が「1」であれ
、コングルエンス・クラスメンバaのいずれか
を置換対象として使用できる。他方、「gate_abcd
」であれば、コングルエンス・クラスメンバe
のいずれか置換対象として使用しなければならな
い。従って、置換対象の選択式は次に示すように変更さ
れる。 victim_is_member_a = gate_abcd & ∧lru_bit(0) & ∧lru_bits(1) & ∧lru_bi
ts( 3); victim_is_member_b = gate_abcd & ∧lru_bit(0) & ∧lru_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_
bit s(5); victim_is_member_f = (∧gate_abcd + lru_bit(0)) & ∧lru_bits(2) & lru_bi
ts (5); victim_is_member_g = (∧gate_abcd + lru_bit(0)) & lru_bits(2) & ∧lru_bi
ts (6); victim_is_member_h = (∧gate_abcd + lru_bit(0)) & lru_bits(2) & lru_bits
( 6);
【0031】前述の本発明の使用例として、id_rati
o01の場合を考える。この場合、CPUが命
読取りを要求していればgate_abcd
であり、コングルエンス・クラスの8つのメンバa〜h
のうちいずれかを置換対象として選択できる。他方、
PUがデータ読取りを要求していれば、メンバe〜
のうちいずれかを置換対象として選択しなければなら
い。その結果、命令を格納するためキャッシュ全体を
使用できるが、データ格納するためにはキャッシュの
50%しか使用できない。従って、このモードでは
ャッシュは命令の方へ重み付けされることになる
述の例は、命令/データの相対的なキャッシュ・ブロ
ック使用比として2:1、1:1、及び1:2を示
す。使用可能なキャッシュの量を12.5%増するこ
とによって、他の相対使用比(例えば、3:1、4:
1、8:1等)も可能である。12.5%、25%、3
7.5%、50%、62.5%、75%、87.5%ま
たは100%の相対使用率を得るためには3ビットI
/D機構が用いられる。
【0032】この新規キャッシュ割当て設計、プロ
グラム可能な命令/データ分割比を与える。これによ
アプリケーション・ソフトウェアまたはオペレーテ
ィング・システムは、性能を最適化するため、キャッシ
の命令対データの重み付けを実時間的に調整するこ
とができる。I/Dキャッシュ比の設定は、いつでも
変更でき、ソフトウェアによってCPU及びキャッシュ
の状態を最初に保存することを必要としない。この手法
は、命読取り対データ読取りの相対量を監視する
ことによって、ハードウェアでも実現できる。置換対象
を選択するためのLRUアルゴリズムに従った選択ロジ
ックを除くと、キャッシュ・コントローラ・ロジック
、どのI/D比モードが使われているかに無関係に
同じように機能する。このプログラム可能性は、どのタ
イプのキャッシュ(インライン、ルックアサイド、ライ
トスルー等)でも使用できるよう適化できる。前述の
本発明の実例は、8ウェ連想キャッシュを使用す
るが、本発明は、程度に無関係に任意の連想性(2ウェ
イ以上)に適用可能である。また述の実例は、7ビ
ットLRUアルゴリズムを用いるが、本発明は他のL
RUアルゴリズムにも適用できる。置換対象を選択する
ための選択ロジックを、変更可能なI/Dの重み付けを
達成する手段として使用することによって、かなり少な
いロジック回路でも本発明を実現可能である。
【0033】本発明に従って、キャッシュ効率を改良す
る他の方法は、2つの値クラス(命令またはデータ)
相対的なキャッシュ使用を調整するのとは異なる方法
で、キャッシュ・ブロックを追い出すメカニズムに関係
する。キャッシュ効率を改良するために述の手法を採
用したとしても、或るレベルのストライドが依然として
生じることがある。これは、特にメモリ・ブロックとそ
れぞれのキャッシュ・ブロックの割当ての間で起こる周
期的なパターンに起因する。これらの場合、キャッシュ
置換アルゴリズム(LRU等)をさらに変更して、非効
率で周期的な追い出しを解消し、従ってストライドを少
なくする定義されたランダムネス要素を導入する方法を
提供できる。
【0034】本発明のこの側面の1つの実施例を図8に
示す。キャッシュ60は、その構成要素として、さまざ
まな値を格納するためのキャッシュ・エントリ・アレイ
62と、これらのエントリを追跡するためのキャッシュ
・ディレクトリ64と、ランダムネス要素により選択的
に変更されLRUアルゴリズムを使用する置換制御装
置66を含む。この実施例では、ランダムネス要素を導
入するため、置換制御装置66の4つの変形例が考えら
れる。最初の変形例68では、ランダム化が導入されな
いときは、7つのLRUビットを使用して8ブロック
有する一のセット(つまり、8ウェイ連想型キャッシュ
を想定)から最低使用頻度(LRU)のキャッシュ・ブ
ロックが選択され、ランダマイザのために追加ビットを
必要としない。
【0035】わずかなランダム化が望ましい場合は、第
2変形例70で、少量のランダムネスを導入することに
よって置換アルゴリズムが変更される。所与のコング
ルエンス・クラス(キャッシュ・セット)内で、4つの
サブクラス(サブセット)ら最初に1つのサブクラス
選択を行うために、LRUビットは3つしか用いられ
ない。ただし、各サブクラスは、このコングルエンス・
クラスの4分の1(8ウェイ連想型キャッシュの場合は
2つのブロック)を含む。この2メンバのサブクラスが
選択された後、1つのランダム・ビットを使用して、そ
サブクラス内の2つのブロックのうち1つが選択され
る。ランダムネスを増やすことが求められる場合は、第
3変形例72として、1つのLRUビットを使用して
元のコングルエンス・クラスが2つのサブクラス(8
ェイ連想型キャッシュの場合はそれぞれ4ブロック)に
分割され、そして2つのランダム・ビットを使用して
サブクラスの4つのメンバのうち1つが選択される。最
後の変形例74では、LRUビットは用いられず、3つ
のランダム・ビットにより、8メンバクラス内で置換
対象に相当するブロックが完全に決定される。
【0036】図8では、LRU及びランダムブロック
は別々に示してあるが、これらを1つの7ビット・フィ
ールドに組み合わせることもできる。言い換えると、こ
のフィールドは完全に変形例68のために用いられる
が、このフィールドの4ビットだけ変形例70(3つ
LRUビットと1つのランダム・ビット)及び7
1つのLRUビットと2つのランダム・ビット)で
いられ、このフィールドの3ビットだけが変形例74
用いられる。
【0037】図8の例は8ウェイ連想型キャッシュの場
合であるが、当業者には明らかなように、本発明は他の
セット・サイズにも適用できる。例えば4ウェイ連想
キャッシュでは3つの変形例が考えられる。第1変形
例は3つのLRUビットを使用し、ランダム・ビット
は使用しない。第2変形例は1つのLRUビット及び
1つのランダム・ビットを使用する。第3変形例は
RUビットは使用せず、2つのランダム・ビットを使用
する。2ウェイ連想型キャッシュでは2つの変形例が
考えられる。第1変形例は1つのLRUビットを使用
ランダム・ビットは使用しない。第2変形例は
RUビットは使用せず、1つのランダム・ビットを使用
する。このような可変ランダムネスは、追い出しを最適
化するもう1つの方法であり、述のプログラム可能な
連想性、プログラム可能なコングルエンス・クラス、及
びプログラム可能なI/D比のいずれにも使用できる。
【0038】ここで述べた改良されたキャッシュは、オ
ンボード(L1)キャッシュとして、または下位レベル
・キャッシュ(L2等)として使用できる。キャッシュ
のこのような構成は、キャッシュ階層のただ1つのキャ
ッシュ・レベル、または限られた数のキャッシュ・レベ
ルでしか使用できない場合もあるが、当業者には明らか
なように、性能面の利点を最大にするように、すべての
キャッシュ・レベルについてこの構成を使用することも
望ましい。本発明は、一般にはシングル・プロセッサの
コンピュータ・システム並びにマルチプロセッサのコン
ピュータ・システムに適用できる。
【図面の簡単な説明】
【図1】従来技術のマルチプロセッサ・コンピュータ・
システムのブロック図である。
【図2】連想キャッシュの連想性を変更する新規な方
法を示す図である。
【図3】連想キャッシュの連想性を変更する新規な方
法を示す図である。
【図4】連想キャッシュの連想性を変更する新規な方
法を示す図である。
【図5】アドレス・タグからのビットを使用して追加ク
ラスを作成するようにコングルエンス・クラスの基本
ッピングを変更することにより、図2図4に示したよ
うなプログラム可能な連想性を与える方法を示す図であ
る。
【図6】アドレス・ビットを切り替えて特定のコングル
エンス・クラスに特定のアドレスを任意に割当てられる
ようにすることにより、プログラム可能なコングルエン
ス・クラスを与える新規な方法を示す図である。
【図7】完全アドレスの各ビットごとにエンコード値
を使用し、図6に示したようなプログラム可能なコン
グルエンス・クラスを与える1つのハードウェア実現
の概略図である。
【図8】LRUアルゴリズム内にランダムネスの要素を
程度を変えて導入できる置換制御装置を有する新規なキ
ャッシュのブロック図である。
【符号の説明】
40、60 キャッシュ 50 プログラム可能な5ビット・フィールド 52 5/32デコーダ 54 ANDゲート・アレイ 56 ORゲート・アレイ 68、70、72、74 キャッシュ置換制御装置の変
形例
───────────────────────────────────────────────────── フロントページの続き (72)発明者 レオ・ジェームズ・クラーク アメリカ合衆国78628、テキサス州ジョ ージタウン、ラ・クインタ・ドライブ 30514 (72)発明者 ジョン・スティーブン・ドッドソン アメリカ合衆国78660、テキサス州フェ ラガービル、ベル・ロック・サークル 1205 (72)発明者 ジェリー・ドン・リュイス アメリカ合衆国78681、テキサス州ラウ ンド・ロック、アローヘッド・サークル 3409 (56)参考文献 特開 昭60−163147(JP,A) 特開 昭62−152052(JP,A) 特開 昭56−22280(JP,A) 特開 昭59−3773(JP,A) 特開 平4−92941(JP,A) 特開 昭57−138080(JP,A) 特開 平2−191053(JP,A) 特開 昭63−53661(JP,A) 特開 平6−110782(JP,A) 特開 平4−233643(JP,A) 特開 平4−181446(JP,A) 特表 平8−504042(JP,A) (58)調査した分野(Int.Cl.7,DB名) G06F 12/12 505 G06F 12/12 551 G06F 12/08 507 G06F 12/08 511 G06F 12/08 523

Claims (6)

    (57)【特許請求の範囲】
  1. 【請求項1】ロセッサによって使用されるセット連想
    キャッシュと、複数の置換制御ビットを使用する置換
    アルゴリズムにより、前記キャッシュ内の複数のキャッ
    シュ・ブロックから追い出すべき一のキャッシュ・ブロ
    ックを選択するためのキャッシュ置換制御装置とを備え
    たコンピュータ・システムにおいて、 前記置換制御ビットの数を動的に変更することにより、
    当該変更された数の置換制御ビットを使用する前記置換
    アルゴリズムによって前記キャッシュ内の一のコングル
    エンス・クラスにおける一のサブセットを選択するステ
    ップと、 前記変更された数の置換制御ビットに関連する1つ以上
    のランダム・ビットを使用することにより、前記選択さ
    れたサブセット内の特定のキャッシュ・ブロックを追い
    出すべきキャッシュ・ブロックとして選択するステップ
    と、 前記選択されたキャッシュ・ブロックを前記キャッシュ
    から追い出すステップと、 を含む、キャッシュの操作を改良する方法。
  2. 【請求項2】前記置換アルゴリズムLRUアルゴリズ
    ムを含む、請求項1記載の方法。
  3. 【請求項3】記キャッシュnウェイのセット連想
    キャッシュであり、 前記置換制御ビットの数n−1に等しい、 請求項記載の方法。
  4. 【請求項4】プロセッサと、 メモリ装置と、 前記プロセッサ及び前記メモリ装置に接続され、前記
    メモリ装置の複数のアドレスに対応する複数のメモリ
    ・ブロックを格納する複数のキャッシュ・ブロックを有
    するセット連想型キャッシュと、 前記キャッシュの複数のキャッシュ・ブロックから
    い出すべき一のキャッシュ・ブロックを選択する手段を
    有するキャッシュ置換制御装置とを備え、 前記キャッシュ置換制御装置が、 前記置換アルゴリズムによって前記キャッシュ内の一の
    コングルエンス・クラスにおける一のサブセットが選択
    されるように、前記置換制御ビットの数を動的に変更す
    る手段と、 前記選択されたサブセット内の特定のキャッシュ・ブロ
    ックが追い出すべきキャッシュ・ブロックとして選択さ
    れるように、前記変更された数の置換制御ビットに関連
    する1つ以上のランダム・ビットを使用する手段と、 前記選択されたキャッシュ・ブロックを前記キャッシュ
    から追い出す手段と を含む、コンピュータ・システム。
  5. 【請求項5】前記置換アルゴリズムLRUアルゴリズ
    ムを含む、請求項記載のコンピュータ・システム。
  6. 【請求項6】記キャッシュnウェイのセット連想
    キャッシュであり、 前記置換制御ビットの数n−1に等しい、 請求項記載のコンピュータ・システム。
JP07887398A 1997-04-14 1998-03-26 キャッシュの操作を改良する方法及びコンピュータ・システム Expired - Fee Related JP3197866B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/837512 1997-04-14
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

Publications (2)

Publication Number Publication Date
JPH10307756A JPH10307756A (ja) 1998-11-17
JP3197866B2 true 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)

Families Citing this family (36)

* 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
US6393525B1 (en) * 1999-05-18 2002-05-21 Intel Corporation Least recently used replacement method with protection
US6510493B1 (en) * 1999-07-15 2003-01-21 International Business Machines Corporation Method and apparatus for managing cache line replacement within a computer system
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
US7114035B2 (en) * 2003-09-04 2006-09-26 International Business Machines Corporation Software-controlled cache set management with software-generated class identifiers
US7120748B2 (en) * 2003-09-04 2006-10-10 International Business Machines Corporation Software-controlled cache set management
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
US8898401B2 (en) * 2008-11-07 2014-11-25 Oracle America, Inc. Methods and apparatuses for improving speculation success in processors
US8806145B2 (en) * 2008-11-07 2014-08-12 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
US9372811B2 (en) * 2012-12-13 2016-06-21 Arm Limited Retention priority based cache replacement policy
US9798668B2 (en) 2014-12-14 2017-10-24 Via Alliance Semiconductor Co., Ltd. Multi-mode set associative cache memory dynamically configurable to selectively select one or a plurality of its sets depending upon the mode
US10719434B2 (en) * 2014-12-14 2020-07-21 Via Alliance Semiconductors Co., Ltd. Multi-mode set associative cache memory dynamically configurable to selectively allocate into all or a subset of its ways depending on the mode
WO2016097808A1 (en) 2014-12-14 2016-06-23 Via Alliance Semiconductor Co., Ltd. Dynamic cache replacement way selection based on address tag bits
US12050917B2 (en) * 2021-12-30 2024-07-30 Arm Limited Methods and apparatus for tracking instruction information stored in virtual sub-elements mapped to physical sub-elements of a given element

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
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
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
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

Also Published As

Publication number Publication date
US5974507A (en) 1999-10-26
JPH10307756A (ja) 1998-11-17

Similar Documents

Publication Publication Date Title
JP3197866B2 (ja) キャッシュの操作を改良する方法及びコンピュータ・システム
US11074190B2 (en) Slot/sub-slot prefetch architecture for multiple memory requestors
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
KR100339904B1 (ko) 캐시 프로세스용 시스템 및 방법
JP4006436B2 (ja) 種々のキャッシュ・レベルにおける連想セットの重畳一致グループを有するマルチレベル・キャッシュ
US6105111A (en) Method and apparatus for providing a cache management technique
US6470422B2 (en) Buffer memory management in a system having multiple execution entities
US8230179B2 (en) Administering non-cacheable memory load instructions
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
US20090172344A1 (en) Method, system, and apparatus for page sizing extension
JPH11312121A (ja) 連想性を利用する可変キャッシュ・サイズのための高パフォ―マンス・キャッシュ・ディレクトリ・アドレシング方法及び装置
KR101509628B1 (ko) 프로세서의 하이 어소시에이티브 캐시 메모리를 위한 scr 매커니즘
US20090113137A1 (en) Pseudo least recently used (plru) cache replacement
US20150309944A1 (en) Methods for cache line eviction
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
KR20010021053A (ko) 컴퓨터 시스템에서 캐시 라인 교체를 관리하기 위한 방법및 장치
JPH10301850A (ja) データ処理システム内のキャッシュ・コヒーレンシを維持するためにセクタ化キャッシュ・メモリに疑似精密包含方式を設ける方法及びシステム
US20220121576A1 (en) Reduce Data Traffic between Cache and Memory via Data Access of Variable Sizes
US6000014A (en) Software-managed programmable congruence class caching mechanism
JP2008511882A (ja) 一意のタスク識別子を用いてデータを共用する仮想アドレス・キャッシュ及び方法
US7133997B2 (en) Configurable cache
KR100302928B1 (ko) 명령어및데이터에대한하드웨어-관리프로그래머블통합/분할된캐싱메카니즘

Legal Events

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