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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/126—Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
- G06F12/127—Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning using additional replacement algorithms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/123—Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0846—Cache with multiple tag or data arrays being simultaneously accessible
- G06F12/0848—Partitioned cache, e.g. separate instruction and operand caches
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0864—Addressing 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/601—Reconfiguration 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つ以上使用してもよい。
構造を図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上にパッケージ化されるとき
は、「オンボード」キャッシュと呼ばれる。各キャッシ
ュは、プロセッサ・コアと当該キャッシュ・メモリとの
間のデータ及び命令の転送を管理するキャッシュ・コン
トローラ(図示せず)に関連付けられる。
ュータでは、処理装置はすべてほぼ同一である。つま
り、すべて、操作するための命令及びプロトコルの共通
セットまたはサブセットを使用し、一般的には同じアー
キテクチャを有する。代表的なアーキテクチャを図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レベルのキャッシュ階層のみ示しているが、多
くのレベルの直列接続キャッシュを有するマルチレベル
のキャッシュ階層を設けることも可能である。
キャッシュを設けることができる。キャッシュ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つあり、アドレス・タグはそのメ
モリ・ブロックの完全アドレスである。
ロック」(以下「ブロック」とも略記)があり、それぞ
れのブロックは個別にさまざまな命令及びデータの値を
格納する。これらのブロックは、どのキャッシュでも
「セット」に分割される。セットとは、所与のメモリ・
ブロックが存在できる複数のキャッシュ・ブロックの集
合である。キャッシュには、与えられた任意のメモリ・
ブロックについて、予め設定されたマッピング関数に従
って、このメモリ・ブロックのマップ先になり得る固有
セットがある。セット内のブロックの数は、キャッシュ
の連想性と呼ばれる。例えば「2ウェイ・セット連想
性」(以下「2ウェイ連想性」と略記。他のウェイにつ
いても同様。)とは、任意のメモリ・ブロックについ
て、キャッシュ内に、このメモリ・ブロックのマップ先
になり得るブロックが2つあるということを意味する。
しかしながら、メイン・メモリ内のいくつか異なるブロ
ックを、与えられた任意のセットにマップすることがで
きる。1ウェイ連想性のキャッシュは、直接マップされ
る。つまり、特定のメモリ・ブロックを有することがで
きるキャッシュ・ブロックは1つしかない。任意のメモ
リ・ブロックが任意のキャッシュ・ブロックを占有でき
る場合、キャッシュは、完全連想性を有すると言われ
る。つまりセットが1つあり、アドレス・タグはそのメ
モリ・ブロックの完全アドレスである。
【0006】代表的なキャッシュ・ライン(ブロック)
は、アドレス・タグ・フィールド、状態ビット・フィー
ルド、包括性(inclusivity)ビット・フィールド、及
び実際の命令またはデータを格納する値フィールドを含
む。状態ビット・フィールド及び包括性ビット・フィー
ルドは、マルチプロセッサ・コンピュータ・システム内
でキャッシュ・コヒーレンシを維持するために用いられ
る。アドレス・タグは、対応するメモリ・ブロックの完
全アドレスのサブセットである。受け取られる実効アド
レスとアドレス・タグ・フィールド内のタグの1つとの
比較一致は、キャッシュ・ヒットを示す。キャッシュ内
のアドレス・タグすべての集合(また時には状態ビット
と包括性ビットのフィールド)はキャッシュ・ディレク
トリと呼ばれ、値フィールドのすべての集合はキャッシ
ュ・エントリ・アレイと呼ばれる。
は、アドレス・タグ・フィールド、状態ビット・フィー
ルド、包括性(inclusivity)ビット・フィールド、及
び実際の命令またはデータを格納する値フィールドを含
む。状態ビット・フィールド及び包括性ビット・フィー
ルドは、マルチプロセッサ・コンピュータ・システム内
でキャッシュ・コヒーレンシを維持するために用いられ
る。アドレス・タグは、対応するメモリ・ブロックの完
全アドレスのサブセットである。受け取られる実効アド
レスとアドレス・タグ・フィールド内のタグの1つとの
比較一致は、キャッシュ・ヒットを示す。キャッシュ内
のアドレス・タグすべての集合(また時には状態ビット
と包括性ビットのフィールド)はキャッシュ・ディレク
トリと呼ばれ、値フィールドのすべての集合はキャッシ
ュ・エントリ・アレイと呼ばれる。
【0007】一のキャッシュについて一のセット内のす
べてのブロックが一杯で、このキャッシュが「読取り」
にしろ「書込み」にしろ、このセットにマップされるよ
うな一のメモリ位置に対する何らかの要求を受信したと
き、このキャッシュは、このセット内に現在あるブロッ
クの1つを「追い出す」必要がある。このキャッシュ
は、追い出すべき(置換対象)ブロックを、当業者には
周知の手段(最低使用頻度(LRU:least recently u
sed)、ランダム、疑似LRUアルゴリズム等)の1つ
で選択する。もし、選択されたブロック内のデータが変
更されていれば、そのデータは、メモリ階層内の次の下
位レベルに書込まれる。このレベルは、もう1つのキャ
ッシュ(L1またはオンボード・キャッシュの場合)か
もしれないし、メイン・メモリ(図1の2レベルのキャ
ッシュ階層に示すようなL2キャッシュの場合)かもし
れない。包括の原理から、メモリ階層内の次の下位レベ
ルには、書込まれた変更済みデータを保持するために利
用できるブロックが常に存在する。しかしながら、選択
されたブロック内のデータが変更されていなければ、こ
のブロックはただ放棄されるだけであり、メモリ階層内
の次の下位レベルに書込まれることはない。ブロックを
メモリ階層の1つのレベルから除去するこのプロセス
は、「追い出し」(eviction)として知られる。このプ
ロセスの終わりに、このキャッシュは、追い出されたブ
ロックのコピーをもはや保持しなくなる。
べてのブロックが一杯で、このキャッシュが「読取り」
にしろ「書込み」にしろ、このセットにマップされるよ
うな一のメモリ位置に対する何らかの要求を受信したと
き、このキャッシュは、このセット内に現在あるブロッ
クの1つを「追い出す」必要がある。このキャッシュ
は、追い出すべき(置換対象)ブロックを、当業者には
周知の手段(最低使用頻度(LRU:least recently u
sed)、ランダム、疑似LRUアルゴリズム等)の1つ
で選択する。もし、選択されたブロック内のデータが変
更されていれば、そのデータは、メモリ階層内の次の下
位レベルに書込まれる。このレベルは、もう1つのキャ
ッシュ(L1またはオンボード・キャッシュの場合)か
もしれないし、メイン・メモリ(図1の2レベルのキャ
ッシュ階層に示すようなL2キャッシュの場合)かもし
れない。包括の原理から、メモリ階層内の次の下位レベ
ルには、書込まれた変更済みデータを保持するために利
用できるブロックが常に存在する。しかしながら、選択
されたブロック内のデータが変更されていなければ、こ
のブロックはただ放棄されるだけであり、メモリ階層内
の次の下位レベルに書込まれることはない。ブロックを
メモリ階層の1つのレベルから除去するこのプロセス
は、「追い出し」(eviction)として知られる。このプ
ロセスの終わりに、このキャッシュは、追い出されたブ
ロックのコピーをもはや保持しなくなる。
【0008】プロセッサ上で実行される手順(プログラ
ム)の中には、限られた数のセット(コングルエンス・
クラス)を繰り返し使用してキャッシュ効率を低下させ
るものがある。言い換えると、ある手順により、コング
ルエンス・クラスの少数のメンバにおいて多数の追い出
しが生ぜられ、その際に他の多数のメンバが使用されな
い場合には、メモリ待ち時間の遅延が増加する。ストラ
イドと呼ばれるこの現象は、コングルエンス・クラスの
マッピング関数、及び特定の手順により主メモリ装置
(RAM16)内のメモリ・ブロックを割当てる方法に
関係する。特定の連想型キャッシュを使用する統計上の
利点は、このようなタイプの手順については失われる。
ム)の中には、限られた数のセット(コングルエンス・
クラス)を繰り返し使用してキャッシュ効率を低下させ
るものがある。言い換えると、ある手順により、コング
ルエンス・クラスの少数のメンバにおいて多数の追い出
しが生ぜられ、その際に他の多数のメンバが使用されな
い場合には、メモリ待ち時間の遅延が増加する。ストラ
イドと呼ばれるこの現象は、コングルエンス・クラスの
マッピング関数、及び特定の手順により主メモリ装置
(RAM16)内のメモリ・ブロックを割当てる方法に
関係する。特定の連想型キャッシュを使用する統計上の
利点は、このようなタイプの手順については失われる。
【0009】時によっては失われる他の統計的な利点
は、命令用及びデータ用の別個のキャッシュ・ブロック
(命令キャッシュ24及びデータ・キャッシュ26等)
を与えることに関係する。代表的な処理装置では、命令
用及びデータ用に同数のL1キャッシュ・ブロックが与
えられるので、使用可能なキャッシュ・エントリの50
%は、このL1レベルで命令用に使用でき、50%はデ
ータ用に使用できる。L2キャッシュの場合は区別がな
い。つまり、L2レベルのキャッシュの100%を命令
用に使用でき、100%をデータ用に使用できる。しか
し、命令用及びデータ用に使用可能なブロックのこの比
率は、ある特定の手順についてはキャッシュを常に最大
限の効率で使用できるわけではない。アプリケーション
・ソフトウェアの多くは、分割型I/D(命令/デー
タ)キャッシュを備えたシステム上で実行されるときは
効率的に処理され、他のアプリケーションは、統合型キ
ャッシュ(全体的なキャッシュ空間が同じであるものと
する)を備えたシステム上で実行されるときは効率的に
処理される。I/Dキャッシュの比が、命令キャッシュ
操作とデータ・キャッシュ操作の実際の比率に特別に近
くはない場合にも、追い出しの数は許容できないほど大
きい。
は、命令用及びデータ用の別個のキャッシュ・ブロック
(命令キャッシュ24及びデータ・キャッシュ26等)
を与えることに関係する。代表的な処理装置では、命令
用及びデータ用に同数のL1キャッシュ・ブロックが与
えられるので、使用可能なキャッシュ・エントリの50
%は、このL1レベルで命令用に使用でき、50%はデ
ータ用に使用できる。L2キャッシュの場合は区別がな
い。つまり、L2レベルのキャッシュの100%を命令
用に使用でき、100%をデータ用に使用できる。しか
し、命令用及びデータ用に使用可能なブロックのこの比
率は、ある特定の手順についてはキャッシュを常に最大
限の効率で使用できるわけではない。アプリケーション
・ソフトウェアの多くは、分割型I/D(命令/デー
タ)キャッシュを備えたシステム上で実行されるときは
効率的に処理され、他のアプリケーションは、統合型キ
ャッシュ(全体的なキャッシュ空間が同じであるものと
する)を備えたシステム上で実行されるときは効率的に
処理される。I/Dキャッシュの比が、命令キャッシュ
操作とデータ・キャッシュ操作の実際の比率に特別に近
くはない場合にも、追い出しの数は許容できないほど大
きい。
【0010】失われる可能性のある連想型キャッシュの
他の統計的利点は、所与のセット内に存在する追い出す
べきキャッシュ・ブロックを決定するためのキャッシュ
置換アルゴリズムに関係する。例えば8ウェイ連想型キ
ャッシュが使用できるLRU装置は、そのセットに関連
する7ビットのLRUフィールドを調べる。プロセッサ
上で実行される手順の特定のサイクル周波数に起因し
て、この7ビットのLRUアルゴリズムは、キャッシュ
が4ウェイ連想性または2ウェイ連想性を有する場合に
比較して、より多くのキャッシュ・ブロックを追い出す
ことになろう。
他の統計的利点は、所与のセット内に存在する追い出す
べきキャッシュ・ブロックを決定するためのキャッシュ
置換アルゴリズムに関係する。例えば8ウェイ連想型キ
ャッシュが使用できるLRU装置は、そのセットに関連
する7ビットのLRUフィールドを調べる。プロセッサ
上で実行される手順の特定のサイクル周波数に起因し
て、この7ビットのLRUアルゴリズムは、キャッシュ
が4ウェイ連想性または2ウェイ連想性を有する場合に
比較して、より多くのキャッシュ・ブロックを追い出す
ことになろう。
【0011】ストライド条件または命令/データ(I/
D)比は、技術的アプリケーションによって異なること
があるので、連想型キャッシュを統計的に最適化するこ
とは困難である。例えば、デスクトップ・パブリッシン
グ・プログラム、在庫管理プログラム、空気力学モデリ
ング・プログラム、及びサーバ・プログラムでは、スト
ライド条件または命令操作とデータ操作との比がそれぞ
れ互いに異なることがある。従って、プロセッサ上で実
行される手順のタイプとは無関係に、その統計的利点を
より完全に最適化できるように、連想型キャッシュを設
計することが望ましく、且つ好都合である。
D)比は、技術的アプリケーションによって異なること
があるので、連想型キャッシュを統計的に最適化するこ
とは困難である。例えば、デスクトップ・パブリッシン
グ・プログラム、在庫管理プログラム、空気力学モデリ
ング・プログラム、及びサーバ・プログラムでは、スト
ライド条件または命令操作とデータ操作との比がそれぞ
れ互いに異なることがある。従って、プロセッサ上で実
行される手順のタイプとは無関係に、その統計的利点を
より完全に最適化できるように、連想型キャッシュを設
計することが望ましく、且つ好都合である。
【0012】
【発明が解決しようとする課題】従って、本発明の目的
は、コンピュータ・システムのプロセッサのための改良
されたキャッシュを提供することである。
は、コンピュータ・システムのプロセッサのための改良
されたキャッシュを提供することである。
【0013】本発明の他の目的は、連想性に関して統計
的利点を最適化したキャッシュを提供することである。
的利点を最適化したキャッシュを提供することである。
【0014】本発明の他の目的は、命令またはデータの
アクセスに関して統計的利点を最適化したキャッシュを
提供することである。
アクセスに関して統計的利点を最適化したキャッシュを
提供することである。
【0015】本発明の他の目的は、キャッシュの置換
(追い出し)アルゴリズムに関して統計的利点を最適化
したキャッシュを提供することである。
(追い出し)アルゴリズムに関して統計的利点を最適化
したキャッシュを提供することである。
【0016】
【課題を解決するための手段】前述の目的は、プロセッ
サによって使用されるセット連想型キャッシュと、複数
の置換制御ビットを使用する置換アルゴリズムにより、
キャッシュ内の複数のキャッシュ・ブロックから追い出
すべき一のキャッシュ・ブロックを選択するためのキャ
ッシュ置換制御装置とを備えたコンピュータ・システム
において、キャッシュの操作を改良する方法を提供する
ことによって達成される。この方法は、一般には置換制
御ビットの数を動的に変更することにより、当該変更さ
れた数の置換制御ビットを使用する置換アルゴリズムに
よってキャッシュ内の一のコングルエンス・クラスにお
ける一のサブセットを選択するステップと、変更された
数の置換制御ビットに関連する1つ以上のランダム・ビ
ットを使用することにより、前記選択されたサブセット
内の特定のキャッシュ・ブロックを追い出すべきキャッ
シュ・ブロックとして選択するステップと、選択された
キャッシュ・ブロックをキャッシュから追い出すステッ
プとを含む。4ウェイ連想型キャッシュでは3つの変形
例が、8ウェイ連想型キャッシュでは4つの変形例が考
えられる。基本置換アルゴリズムは、LRUアルゴリズ
ムでよい。これにより、キャッシュ内で生じるストライ
ドからの追い出しを最適化することができる。
サによって使用されるセット連想型キャッシュと、複数
の置換制御ビットを使用する置換アルゴリズムにより、
キャッシュ内の複数のキャッシュ・ブロックから追い出
すべき一のキャッシュ・ブロックを選択するためのキャ
ッシュ置換制御装置とを備えたコンピュータ・システム
において、キャッシュの操作を改良する方法を提供する
ことによって達成される。この方法は、一般には置換制
御ビットの数を動的に変更することにより、当該変更さ
れた数の置換制御ビットを使用する置換アルゴリズムに
よってキャッシュ内の一のコングルエンス・クラスにお
ける一のサブセットを選択するステップと、変更された
数の置換制御ビットに関連する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)ビット・フィ
ールド及び値フィールドを有している。
作効率の向上を対象にしており、キャッシュ効率を改良
するいくつかの方法を提示する。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ウェイ連想性である。図
4では、これらのサブセットがさらに細分され、セット
当たり2つのブロックが作られる。つまり2ウェイ連想
性である。この作業は1ウェイ連想性にまで展開するこ
ともできる。またこの作業を、例えば8の代わりに16
のように、最大のセット内のより多数のキャッシュ・ブ
ロックから始めることもできよう。
想型キャッシュの利点を与えるが、本発明はさらに、図
3及び4に示すように、連想の適応性またはプログラム
可能性を与える。図3では、8ブロックを有する各セッ
トは、(セット1a、1b、2a、及び2bを含む)2
つのサブセットにそれぞれ分割されている。これらのサ
ブセットの各々はそれぞれ4つのブロックを含むので、
キャッシュ40のこの状態は4ウェイ連想性である。図
4では、これらのサブセットがさらに細分され、セット
当たり2つのブロックが作られる。つまり2ウェイ連想
性である。この作業は1ウェイ連想性にまで展開するこ
ともできる。またこの作業を、例えば8の代わりに16
のように、最大のセット内のより多数のキャッシュ・ブ
ロックから始めることもできよう。
【0020】キャッシュ40の連想レベルを変更するこ
の能力は、キャッシュ40がより効率よく動作すること
を可能にする。従来技術の項で述べたように、幾つかの
手順によっては、特定の連想サイズも一因になって、ス
トライド(すなわち、キャッシュが1つまたは2つのコ
ングルエンス・クラスにロール・インすること)が生じ
ることもある。これらの手順については、異なる連想サ
イズを使用することにより、ストライドをなくすか、ま
たは最小にすることができる。連想サイズを、異なるア
プリケーションに応じて最適化するためには、1つ以上
のプログラマブル・ビットを与え且つこれらのビットを
使用して所望の連想レベルを示すようにすればよい。例
えば、以下の表1は、図2〜図4の適応可能な連想機構
を実現するため、プログラム可能な2ビット機構(以下
「2ビット連想機構」と称す)がどのように用いられる
かを示す。
の能力は、キャッシュ40がより効率よく動作すること
を可能にする。従来技術の項で述べたように、幾つかの
手順によっては、特定の連想サイズも一因になって、ス
トライド(すなわち、キャッシュが1つまたは2つのコ
ングルエンス・クラスにロール・インすること)が生じ
ることもある。これらの手順については、異なる連想サ
イズを使用することにより、ストライドをなくすか、ま
たは最小にすることができる。連想サイズを、異なるア
プリケーションに応じて最適化するためには、1つ以上
のプログラマブル・ビットを与え且つこれらのビットを
使用して所望の連想レベルを示すようにすればよい。例
えば、以下の表1は、図2〜図4の適応可能な連想機構
を実現するため、プログラム可能な2ビット機構(以下
「2ビット連想機構」と称す)がどのように用いられる
かを示す。
【表1】
【0021】2ビット連想機構は、8ウェイ連想性を示
すため「00」に設定され、4ウェイ連想性を示すため
「01」に設定され、2ウェイ連想性を示すため「1
0」に設定され、1ウェイ連想性(つまり直接マップ)
を示すため「11」に設定される。このセットに必要な
細分は、基本セットの1つ以上の特定サブセットを適切
に使用するように、コングルエンス・クラスのマッピン
グ関数を変更することによって制御される。言い換える
と、2つのサブセット、1a及び1b(図3)、は基本
セット1(図1)にあったキャッシュ・ラインのみを含
み、サブセット1c及び1d(図4)は、最初のサブセ
ット1aにあったキャッシュ・ラインだけを含む。一定
数のキャッシュ・ラインを有するキャッシュ40につい
ては、これは、コングルエンス・クラスの数がNとN×
8の間で変化することを意味する。ただし、Nは基本マ
ッピング関数によって指示されるコングルエンス・クラ
スの最小数である。
すため「00」に設定され、4ウェイ連想性を示すため
「01」に設定され、2ウェイ連想性を示すため「1
0」に設定され、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番目のビットを使用して、それぞれのサブセ
ットをさらに細分すればよい。
ることができる。メモリ・ブロックの完全アドレスの一
部を使用して、コングルエンス・クラスのマッピングを
洗練することができる。例えば、32ビットの完全アド
レスは、図5に示すように、オフセット・フィールド、
コングルエンス・クラス・フィールド、及びアドレス・
タグ・フィールドの3つの部分に分けることができる。
オフセット・フィールドは、この例では6ビットで、実
際の命令またはデータに対応する値フィールド内のバイ
トの正確な位置を定義する。コングルエンス・クラス・
フィールドは、マッピング関数の入力オペランドとして
用いられ、メモリ・ブロックを基本セット、つまりセッ
ト1のような8ブロックを有するセットに割当てる。こ
の例では、8ウェイ連想性については、コングルエンス
・クラス・フィールドは13ビットで、アドレス・タグ
も13ビットである。しかし、コングルエンス・クラス
・フィールドは、他の連想レベルについては、アドレス
・タグからの他のビットを使用することで実効的に拡大
されるので、アドレス・タグ・フィールドは収縮するこ
とになる。4ウェイ連想性を実現するには、元のアドレ
ス・タグ・フィールド内の最後のビットを使用して、8
ブロックを有する基本セットをそれぞれ4ブロックの2
つの小さいサブセットに細分すればよい。同様に、2ウ
ェイまたは1ウェイ連想性を実現するには、元のアドレ
ス・タグ・フィールド内の最後のビットから2番目のビ
ット及び3番目のビットを使用して、それぞれのサブセ
ットをさらに細分すればよい。
【0023】プログラム可能な連想性は、2ビット連想
機構を設定するハードウェアまたはソフトウェアのいず
れかにより実現できる。前者の実現形態では、一のロジ
ック装置がミス情報を収集し、予め定義された基準(例
えば、1つのコングルエンス・クラスに対する最大ミス
・レート、またはそれぞれのミス・レートが1つ以上の
しきい値を超える一定数以上のコングルエンス・クラ
ス)に基づいて、一の連想レベルを選択できる。この連
想性の管理は、動的に行うことができる。かくて、キャ
ッシュは、コンピュータ・システム上で実行中のアプリ
ケーションのタイプの変化等に起因する、プロセッサ上
で実行中の手順の性質変化に素早く応答できるようにな
る。これに代えて、手動的に選択できるよう1組の接続
ピンを使用することもできよう。ソフトウェアの実現形
態(プログラム命令)も同様に動作して、連想レベルを
調整する。ストライドが生じ得る手順を有することがわ
かっている特定のプログラムには、アプリケーション・
ソフトウェアを用意することができるが、このアプリケ
ーション・ソフトウェアは、ストライドに起因する余分
なメモリ待ち時間を少なくするため、2ビット連想機構
を既知の適切な値に設定できる。このアプリケーション
・ソフトウェアは、プログラムによって用いられる異な
るルーチンに基づいて連想レベルを間欠的に調整するこ
ともできよう。また、オペレーティング・システムを使
用して、アドレス要求を監視し、それぞれの手順が異な
る連想レベルでどれほど効率的に動作するかを予測した
後、最も効率の良い連想レベルを選択することもでき
る。この手法では、プログラムの実行途中であっても、
連想レベルが実時間的に調整される。
機構を設定するハードウェアまたはソフトウェアのいず
れかにより実現できる。前者の実現形態では、一のロジ
ック装置がミス情報を収集し、予め定義された基準(例
えば、1つのコングルエンス・クラスに対する最大ミス
・レート、またはそれぞれのミス・レートが1つ以上の
しきい値を超える一定数以上のコングルエンス・クラ
ス)に基づいて、一の連想レベルを選択できる。この連
想性の管理は、動的に行うことができる。かくて、キャ
ッシュは、コンピュータ・システム上で実行中のアプリ
ケーションのタイプの変化等に起因する、プロセッサ上
で実行中の手順の性質変化に素早く応答できるようにな
る。これに代えて、手動的に選択できるよう1組の接続
ピンを使用することもできよう。ソフトウェアの実現形
態(プログラム命令)も同様に動作して、連想レベルを
調整する。ストライドが生じ得る手順を有することがわ
かっている特定のプログラムには、アプリケーション・
ソフトウェアを用意することができるが、このアプリケ
ーション・ソフトウェアは、ストライドに起因する余分
なメモリ待ち時間を少なくするため、2ビット連想機構
を既知の適切な値に設定できる。このアプリケーション
・ソフトウェアは、プログラムによって用いられる異な
るルーチンに基づいて連想レベルを間欠的に調整するこ
ともできよう。また、オペレーティング・システムを使
用して、アドレス要求を監視し、それぞれの手順が異な
る連想レベルでどれほど効率的に動作するかを予測した
後、最も効率の良い連想レベルを選択することもでき
る。この手法では、プログラムの実行途中であっても、
連想レベルが実時間的に調整される。
【0024】前述のプログラム可能な連想性は、例え
ば、ある乗数に従ってコングルエンス・クラスの数を増
やすことによって、コングルエンス・クラスに影響を与
える1つの方法を与える。本発明に従ってキャッシュ効
率を改良する他の方法は、コングルエンス・クラスの異
なる側面、つまり、どのコングルエンス・クラスにどの
メモリ・ブロックを割当てるかを指定するマッピング関
数の側面に関係する。従来技術のマッピング手法は、モ
ジュロ型関数を伴うことが多いが、この関数の周期的な
性質は、ストライドの問題につながることがある。本発
明は、この問題を解決するために、完全アドレスまたは
部分アドレスを新たな固有アドレスにエンコードできる
マッピング関数を使用する。つまり、特定のコングルエ
ンス・クラスに対する特定のアドレスの任意の(予め定
義された)割当てが実現される。図6の例に示すよう
に、元の(完全な)32ビット・アドレスの10番目の
ビットは、エンコードされた32ビット・アドレスの2
6番目のビットにシフトされ、元のアドレスの26番目
のビットはエンコードされたアドレスの18番目のビッ
トにシフトされ、元のアドレスの18番目のビットはエ
ンコードされたアドレスの22番目のビットにシフトさ
れ、元のアドレスの22番目のビットはエンコードされ
たアドレスの10番目のビットにシフトされる。この例
では、複数のアドレス・ビットを切り替えることによっ
て、特定のコングルエンス・クラスに対する特定のアド
レスの固有で且つ任意の割当てが実現される。
ば、ある乗数に従ってコングルエンス・クラスの数を増
やすことによって、コングルエンス・クラスに影響を与
える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
2本の線)は、複数のORゲート56に分岐接続され
る。ORゲート56の各々は、各ANDゲート・アレイ
54から1つの入力をそれぞれ受け取る。ORゲート5
6の出力は、エンコードされたアドレス用のシフト値を
与える。このハードウェアは、プログラム可能な複数の
5ビット・フィールド50について適切な値を選択する
ことによってプログラム可能なコングルエンス・クラス
を与える他に、予め定義された基準に基づいて、ミス情
報を収集し且つ任意のマッピング関数を選択する、とい
うように動的でもある。このハードウェアの実現形態で
は、コヒーレンシを保証するために、連想レベルを変更
する前にキャッシュのフラッシュが必要である。
グラム可能性は、ハードウェアまたはソフトウェアの形
態でも実現できる。アプリケーション・ソフトウェア
は、キャッシュ/プロセッサに送られる前に、アドレス
の適切なエンコーディングを与えることができる。他
方、オペレーティング・システムは、メモリ・ブロック
の割当てを監視し、インタプリタを使用してハードウェ
アに送られるアドレスを変更することができる。こうし
た手法では、コングルエンス・クラスのメンバを間欠的
にまたは実時間的に調整できる。図7にハードウェアの
実現例を示す。プログラム可能な複数の5ビット・フィ
ールド50が、エンコードすべき(完全または部分)ア
ドレス内の各ビットごとに1つずつ与えられる。これら
の5ビット・フィールド50の各々は、対応する5/3
2デコーダ52にそれぞれ接続され、各デコーダ出力
(32本の線)は、対応するANDゲート・アレイ54
(アレイ当たり32個のANDゲート)にそれぞれ接続
される。ANDゲート・アレイ54の出力(それぞれ3
2本の線)は、複数のORゲート56に分岐接続され
る。ORゲート56の各々は、各ANDゲート・アレイ
54から1つの入力をそれぞれ受け取る。ORゲート5
6の出力は、エンコードされたアドレス用のシフト値を
与える。このハードウェアは、プログラム可能な複数の
5ビット・フィールド50について適切な値を選択する
ことによってプログラム可能なコングルエンス・クラス
を与える他に、予め定義された基準に基づいて、ミス情
報を収集し且つ任意のマッピング関数を選択する、とい
うように動的でもある。このハードウェアの実現形態で
は、コヒーレンシを保証するために、連想レベルを変更
する前にキャッシュのフラッシュが必要である。
【0026】前述のプログラム可能なコングルエンス・
クラスは、先に述べたプログラム可能な連想性から独立
しているが、これらの2つを組み合わせて使用できる。
例えばプログラム可能な連想性は、2ビット連想機構を
設定してその連想レベルを最適化するために使用でき、
次に5ビットのエンコード・フィールドを使用するプロ
グラム可能なコングルエンス・クラスにより、追い出し
レートを小さくすることができる。
クラスは、先に述べたプログラム可能な連想性から独立
しているが、これらの2つを組み合わせて使用できる。
例えばプログラム可能な連想性は、2ビット連想機構を
設定してその連想レベルを最適化するために使用でき、
次に5ビットのエンコード・フィールドを使用するプロ
グラム可能なコングルエンス・クラスにより、追い出し
レートを小さくすることができる。
【0027】本発明に従ってキャッシュ効率を改良する
他の方法は、命令対データに対するキャッシュの使用に
関係する。CPUキャッシング構造を実現したコンピュ
ータ・システムでは、命令及びデータの扱いが常に同じ
であるような統合型キャッシュとして、あるいは全体的
なキャッシュRAM空間の一部(普通は1/2)が命令
専用であり、残りがデータ専用であるような分割型I/
Dキャッシュとして、キャッシュを予め定義するのが普
通である。また、従来の分割型I/Dキャッシュ設計で
は、命令及びデータがそれぞれ専用する空間の比は一定
である(通常は50:50)。
他の方法は、命令対データに対するキャッシュの使用に
関係する。CPUキャッシング構造を実現したコンピュ
ータ・システムでは、命令及びデータの扱いが常に同じ
であるような統合型キャッシュとして、あるいは全体的
なキャッシュRAM空間の一部(普通は1/2)が命令
専用であり、残りがデータ専用であるような分割型I/
Dキャッシュとして、キャッシュを予め定義するのが普
通である。また、従来の分割型I/Dキャッシュ設計で
は、命令及びデータがそれぞれ専用する空間の比は一定
である(通常は50:50)。
【0028】本明細書では、命令/データの分割比を、
程度を変えてプログラムできる新規なキャッシュ割当て
設計について述べる。ある実現例では、このプログラム
可能性は、ソフトウェアによる読取り及び書込みが可能
な2ビットI/D機構(以下「id_ratio」とも称す)に
より実現される。この機構の設定の定義は、代表例につ
いて表2に示されているが、本発明は、他のキャッシュ
比にも簡単に適応させることができる。
程度を変えてプログラムできる新規なキャッシュ割当て
設計について述べる。ある実現例では、このプログラム
可能性は、ソフトウェアによる読取り及び書込みが可能
な2ビットI/D機構(以下「id_ratio」とも称す)に
より実現される。この機構の設定の定義は、代表例につ
いて表2に示されているが、本発明は、他のキャッシュ
比にも簡単に適応させることができる。
【表2】
【0029】プログラム可能なI/D比は、連想型キャ
ッシュの置換アルゴリズムを変更することによって達成
される。以下の実現例では、キャッシュは8ウェイ連想
性を 有し(その8つのメンバはa〜hと示している)、
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))
ッシュの置換アルゴリズムを変更することによって達成
される。以下の実現例では、キャッシュは8ウェイ連想
性を 有し(その8つのメンバはa〜hと示している)、
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〜dのいずれか
を置換対象として使用できる。他方、「gate_abcd」が
「0」であれば、コングルエンス・クラスのメンバe〜
hのいずれかを置換対象として使用しなければならな
い。従って、置換対象の選択式は次に示すように変更さ
れる。 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);
ば、コングルエンス・クラスのメンバa〜dのいずれか
を置換対象として使用できる。他方、「gate_abcd」が
「0」であれば、コングルエンス・クラスのメンバe〜
hのいずれかを置換対象として使用しなければならな
い。従って、置換対象の選択式は次に示すように変更さ
れる。 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
o」が「01」の場合を考える。この場合、CPUが命
令の読取りを要求していれば、「gate_abcd」は「1」
であり、コングルエンス・クラスの8つのメンバa〜h
のうちいずれかを置換対象として選択できる。他方、C
PUがデータの読取りを要求していれば、メンバe〜h
のうちいずれかを置換対象として選択しなければならな
い。その結果、命令を格納するためにキャッシュ全体を
使用できるが、データを格納するためにはキャッシュの
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機構が用いられる。
o」が「01」の場合を考える。この場合、CPUが命
令の読取りを要求していれば、「gate_abcd」は「1」
であり、コングルエンス・クラスの8つのメンバa〜h
のうちいずれかを置換対象として選択できる。他方、C
PUがデータの読取りを要求していれば、メンバe〜h
のうちいずれかを置換対象として選択しなければならな
い。その結果、命令を格納するためにキャッシュ全体を
使用できるが、データを格納するためにはキャッシュの
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の重み付けを
達成する手段として使用することによって、かなり少な
いロジック回路でも本発明を実現可能である。
グラム可能な命令/データの分割比を与える。これによ
り、アプリケーション・ソフトウェアまたはオペレーテ
ィング・システムは、性能を最適化するため、キャッシ
ュ内の命令対データの重み付けを実時間的に調整するこ
とができる。I/Dキャッシュの比の設定は、いつでも
変更でき、ソフトウェアによってCPU及びキャッシュ
の状態を最初に保存することを必要としない。この手法
は、命令の読取り対データの読取りの相対量を監視する
ことによって、ハードウェアでも実現できる。置換対象
を選択するためのLRUアルゴリズムに従った選択ロジ
ックを除くと、キャッシュ・コントローラ・ロジック
は、どのI/D比モードが使われているかに無関係に、
同じように機能する。このプログラム可能性は、どのタ
イプのキャッシュ(インライン、ルックアサイド、ライ
トスルー等)でも使用できるよう適応化できる。前述の
本発明の実現例は、8ウェイ連想型キャッシュを使用す
るが、本発明は、程度に無関係に任意の連想性(2ウェ
イ以上)に適用可能である。また前述の実現例は、7ビ
ットのLRUアルゴリズムを用いるが、本発明は他のL
RUアルゴリズムにも適用できる。置換対象を選択する
ための選択ロジックを、変更可能なI/Dの重み付けを
達成する手段として使用することによって、かなり少な
いロジック回路でも本発明を実現可能である。
【0033】本発明に従って、キャッシュ効率を改良す
る他の方法は、2つの値クラス(命令またはデータ)の
相対的なキャッシュ使用率を調整するのとは異なる方法
で、キャッシュ・ブロックを追い出すメカニズムに関係
する。キャッシュ効率を改良するために前述の手法を採
用したとしても、或るレベルのストライドが依然として
生じることがある。これは、特にメモリ・ブロックとそ
れぞれのキャッシュ・ブロックの割当ての間で起こる周
期的なパターンに起因する。これらの場合、キャッシュ
置換アルゴリズム(LRU等)をさらに変更して、非効
率で周期的な追い出しを解消し、従ってストライドを少
なくする定義されたランダムネス要素を導入する方法を
提供できる。
る他の方法は、2つの値クラス(命令またはデータ)の
相対的なキャッシュ使用率を調整するのとは異なる方法
で、キャッシュ・ブロックを追い出すメカニズムに関係
する。キャッシュ効率を改良するために前述の手法を採
用したとしても、或るレベルのストライドが依然として
生じることがある。これは、特にメモリ・ブロックとそ
れぞれのキャッシュ・ブロックの割当ての間で起こる周
期的なパターンに起因する。これらの場合、キャッシュ
置換アルゴリズム(LRU等)をさらに変更して、非効
率で周期的な追い出しを解消し、従ってストライドを少
なくする定義されたランダムネス要素を導入する方法を
提供できる。
【0034】本発明のこの側面の1つの実施例を図8に
示す。キャッシュ60は、その構成要素として、さまざ
まな値を格納するためのキャッシュ・エントリ・アレイ
62と、これらのエントリを追跡するためのキャッシュ
・ディレクトリ64と、ランダムネス要素により選択的
に変更されたLRUアルゴリズムを使用する置換制御装
置66を含む。この実施例では、ランダムネス要素を導
入するため、置換制御装置66の4つの変形例が考えら
れる。最初の変形例68では、ランダム化が導入されな
いときは、7つのLRUビットを使用して8ブロックを
有する一のセット(つまり、8ウェイ連想型キャッシュ
を想定)から最低使用頻度(LRU)のキャッシュ・ブ
ロックが選択され、ランダマイザのために追加ビットを
必要としない。
示す。キャッシュ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メンバのクラス内で置換
対象に相当するブロックが完全に決定される。
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つのランダム・ビット)及び72
(1つのLRUビットと2つのランダム・ビット)で用
いられ、このフィールドの3ビットだけが変形例74で
用いられる。
は別々に示してあるが、これらを1つの7ビット・フィ
ールドに組み合わせることもできる。言い換えると、こ
のフィールドは、完全に変形例68のために用いられる
が、このフィールドの4ビットだけが変形例70(3つ
のLRUビットと1つのランダム・ビット)及び72
(1つのLRUビットと2つのランダム・ビット)で用
いられ、このフィールドの3ビットだけが変形例74で
用いられる。
【0037】図8の例は8ウェイ連想型キャッシュの場
合であるが、当業者には明らかなように、本発明は他の
セット・サイズにも適用できる。例えば4ウェイ連想型
キャッシュでは、3つの変形例が考えられる。第1変形
例は、3つのLRUビットを使用し、ランダム・ビット
は使用しない。第2変形例は、1つのLRUビット及び
1つのランダム・ビットを使用する。第3変形例は、L
RUビットは使用せず、2つのランダム・ビットを使用
する。2ウェイ連想型キャッシュでは、2つの変形例が
考えられる。第1変形例は、1つのLRUビットを使用
し、ランダム・ビットは使用しない。第2変形例は、L
RUビットは使用せず、1つのランダム・ビットを使用
する。このような可変ランダムネスは、追い出しを最適
化するもう1つの方法であり、前述のプログラム可能な
連想性、プログラム可能なコングルエンス・クラス、及
びプログラム可能なI/D比のいずれにも使用できる。
合であるが、当業者には明らかなように、本発明は他の
セット・サイズにも適用できる。例えば4ウェイ連想型
キャッシュでは、3つの変形例が考えられる。第1変形
例は、3つのLRUビットを使用し、ランダム・ビット
は使用しない。第2変形例は、1つのLRUビット及び
1つのランダム・ビットを使用する。第3変形例は、L
RUビットは使用せず、2つのランダム・ビットを使用
する。2ウェイ連想型キャッシュでは、2つの変形例が
考えられる。第1変形例は、1つのLRUビットを使用
し、ランダム・ビットは使用しない。第2変形例は、L
RUビットは使用せず、1つのランダム・ビットを使用
する。このような可変ランダムネスは、追い出しを最適
化するもう1つの方法であり、前述のプログラム可能な
連想性、プログラム可能なコングルエンス・クラス、及
びプログラム可能なI/D比のいずれにも使用できる。
【0038】ここで述べた改良されたキャッシュは、オ
ンボード(L1)キャッシュとして、または下位レベル
・キャッシュ(L2等)として使用できる。キャッシュ
のこのような構成は、キャッシュ階層のただ1つのキャ
ッシュ・レベル、または限られた数のキャッシュ・レベ
ルでしか使用できない場合もあるが、当業者には明らか
なように、性能面の利点を最大にするように、すべての
キャッシュ・レベルについてこの構成を使用することも
望ましい。本発明は、一般にはシングル・プロセッサの
コンピュータ・システム並びにマルチプロセッサのコン
ピュータ・システムに適用できる。
ンボード(L1)キャッシュとして、または下位レベル
・キャッシュ(L2等)として使用できる。キャッシュ
のこのような構成は、キャッシュ階層のただ1つのキャ
ッシュ・レベル、または限られた数のキャッシュ・レベ
ルでしか使用できない場合もあるが、当業者には明らか
なように、性能面の利点を最大にするように、すべての
キャッシュ・レベルについてこの構成を使用することも
望ましい。本発明は、一般にはシングル・プロセッサの
コンピュータ・システム並びにマルチプロセッサのコン
ピュータ・システムに適用できる。
【図1】従来技術のマルチプロセッサ・コンピュータ・
システムのブロック図である。
システムのブロック図である。
【図2】連想型キャッシュの連想性を変更する新規な方
法を示す図である。
法を示す図である。
【図3】連想型キャッシュの連想性を変更する新規な方
法を示す図である。
法を示す図である。
【図4】連想型キャッシュの連想性を変更する新規な方
法を示す図である。
法を示す図である。
【図5】アドレス・タグからのビットを使用して追加ク
ラスを作成するようにコングルエンス・クラスの基本マ
ッピングを変更することにより、図2〜図4に示したよ
うなプログラム可能な連想性を与える方法を示す図であ
る。
ラスを作成するようにコングルエンス・クラスの基本マ
ッピングを変更することにより、図2〜図4に示したよ
うなプログラム可能な連想性を与える方法を示す図であ
る。
【図6】アドレス・ビットを切り替えて特定のコングル
エンス・クラスに特定のアドレスを任意に割当てられる
ようにすることにより、プログラム可能なコングルエン
ス・クラスを与える新規な方法を示す図である。
エンス・クラスに特定のアドレスを任意に割当てられる
ようにすることにより、プログラム可能なコングルエン
ス・クラスを与える新規な方法を示す図である。
【図7】完全アドレス内の各ビットごとにエンコード値
を使用して、図6に示したようなプログラム可能なコン
グルエンス・クラスを与える1つのハードウェア実現例
の概略図である。
を使用して、図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)
- 【請求項1】プロセッサによって使用されるセット連想
型キャッシュと、複数の置換制御ビットを使用する置換
アルゴリズムにより、前記キャッシュ内の複数のキャッ
シュ・ブロックから追い出すべき一のキャッシュ・ブロ
ックを選択するためのキャッシュ置換制御装置とを備え
たコンピュータ・システムにおいて、 前記置換制御ビットの数を動的に変更することにより、
当該変更された数の置換制御ビットを使用する前記置換
アルゴリズムによって前記キャッシュ内の一のコングル
エンス・クラスにおける一のサブセットを選択するステ
ップと、 前記変更された数の置換制御ビットに関連する1つ以上
のランダム・ビットを使用することにより、前記選択さ
れたサブセット内の特定のキャッシュ・ブロックを追い
出すべきキャッシュ・ブロックとして選択するステップ
と、 前記選択されたキャッシュ・ブロックを前記キャッシュ
から追い出すステップと、 を含む、キャッシュの操作を改良する方法。 - 【請求項2】前記置換アルゴリズムがLRUアルゴリズ
ムを含む、請求項1記載の方法。 - 【請求項3】前記キャッシュがnウェイのセット連想型
キャッシュであり、 前記置換制御ビットの数がn−1に等しい、 請求項2記載の方法。 - 【請求項4】プロセッサと、主 メモリ装置と、 前記プロセッサ及び前記主メモリ装置に接続され、前記
主メモリ装置の複数のアドレスに対応する複数のメモリ
・ブロックを格納する複数のキャッシュ・ブロックを有
するセット連想型キャッシュと、 前記キャッシュ内の複数のキャッシュ・ブロックから追
い出すべき一のキャッシュ・ブロックを選択する手段を
有するキャッシュ置換制御装置とを備え、 前記キャッシュ置換制御装置が、 前記置換アルゴリズムによって前記キャッシュ内の一の
コングルエンス・クラスにおける一のサブセットが選択
されるように、前記置換制御ビットの数を動的に変更す
る手段と、 前記選択されたサブセット内の特定のキャッシュ・ブロ
ックが追い出すべきキャッシュ・ブロックとして選択さ
れるように、前記変更された数の置換制御ビットに関連
する1つ以上のランダム・ビットを使用する手段と、 前記選択されたキャッシュ・ブロックを前記キャッシュ
から追い出す手段と を含む、コンピュータ・システム。 - 【請求項5】前記置換アルゴリズムがLRUアルゴリズ
ムを含む、請求項4記載のコンピュータ・システム。 - 【請求項6】前記キャッシュがnウェイのセット連想型
キャッシュであり、 前記置換制御ビットの数がn−1に等しい、 請求項5記載のコンピュータ・システム。
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)
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)
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 |
-
1997
- 1997-04-14 US US08/837,512 patent/US5974507A/en not_active Expired - Lifetime
-
1998
- 1998-03-26 JP JP07887398A patent/JP3197866B2/ja not_active Expired - Fee Related
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 |