JP2000250813A - I/oキャッシュ・メモリにおけるデータ管理方法 - Google Patents
I/oキャッシュ・メモリにおけるデータ管理方法Info
- Publication number
- JP2000250813A JP2000250813A JP2000002085A JP2000002085A JP2000250813A JP 2000250813 A JP2000250813 A JP 2000250813A JP 2000002085 A JP2000002085 A JP 2000002085A JP 2000002085 A JP2000002085 A JP 2000002085A JP 2000250813 A JP2000250813 A JP 2000250813A
- Authority
- JP
- Japan
- Prior art keywords
- data
- cache
- memory
- area
- storage area
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
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/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/0804—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
-
- 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/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
-
- 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
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
ッシュ・メモリ管理を実現するシステム及び方法を提供
する。 【解決手段】デバイスによるシステム・メモリのデータ
要求が発生し、要求されたデータが現在キャッシュ・メ
モリ128のデータ記憶領域204に存在しないことを
識別するステップと、システム・メモリからデータ記憶
領域204にデータを読み出すステップを備える。キャ
ッシュ・メモリを評価して、データ記憶領域204内で
所定のサイズ以上の領域が直ちに使用可能かどうかを判
断する。更に、所定のサイズ以上の領域が直ちに使用で
きない場合にのみ、データ記憶領域204内のデータの
一部をフラッシュする。
Description
システムに関し、特に非同期I/Oキャッシュ・メモリ
内のデータを管理するシステムに関する。
は、より高速でより効率的なコンピュータ・システムを
絶えず設計し続けることが主要な目標である。このた
め、従来の高性能コンピュータ・システムのほとんどは
キャッシュ・メモリを備えている。周知のとおり、キャ
ッシュ・メモリは、システム性能を向上するためにコン
ピュータ・システム内のマイクロプロセッサとメイン・
メモリの間に配置した高速メモリである。一般に、キャ
ッシュ・メモリ(又はキャッシュ)はプログラム実行中
に中央処理装置(CPU:Central Processing Unit)
が頻繁に使用するメイン・メモリ・データの一部のコピ
ーを格納する。キャッシュへのアクセス時間はメイン・
メモリへのアクセス時間よりも短いので、全体のアクセ
ス時間を短縮することができる。
を使用すると、通常の条件下では比較的大きな低速のメ
イン・メモリに比較的高速でアクセスすることができ
る。キャッシュ・メモリは、比較的小さな高速メモリで
あり、メイン・メモリに記憶したデータの一部をいつで
も格納することができる。又、キャッシュ・メモリに
は、キャッシュ・ディレクトリ、すなわちキャッシュに
格納したデータ要素のインデックスが存在する。キャッ
シュ・ディレクトリを参照すれば、所定の時刻に各デー
タ要素がキャッシュ・メモリ内に存在するかどうかを確
認でき、存在する場合はキャッシュ・メモリ内のデータ
要素の現在位置を特定することができる。
ンピュータからのデータ・アクセス要求に応答する。デ
ータ・アクセス要求には、読み出し要求や書き込み要求
などがある。キャッシュ・メモリを備えたデータ記憶シ
ステムがデータへのアクセス要求を受信すると、キャッ
シュ・ディレクトリを検査し、アクセス対象のデータ要
素がキャッシュ・メモリ内に存在するかどうかを判断す
る。存在する場合、データ記憶システムはキャッシュ・
メモリ内のデータにアクセスする。存在しない場合、デ
ータ記憶システムはメイン・メモリ内のデータにアクセ
スし、近い将来、同じデータに再びアクセスする可能性
がある場合はこのデータをキャッシュ・メモリにコピー
する。
知られているが、他のキャッシュもよく知られており、
使用されている。例えば、I/Oキャッシュはシステム
・バスとI/Oバスの間でデータをバッファリング及び
キャッシングするものとして知られている。以下に詳述
するとおり、マイクロプロセッサやメモリなど、一部の
システム構成要素は、I/Oトランザクションとは異な
るクロックで同期をとる。2つの異なる周波数領域間で
データをやりとりする場合は、通常、必要がなくても何
らかの方法でデータをバッファリングするのが望まし
い。その1つは、I/Oキャッシュを介してデータやり
とりする方法である。
ン・メモリよりもかなり小さいので、新しく受け取るデ
ータ要素をキャッシュ・メモリにコピーする領域を確保
するためには、キャッシュ・メモリ内のデータ要素の置
換又は削除が必要な場合が多い。一般に、キャッシュ・
メモリが有効であるためには、置換又は削除するデータ
要素は、近い将来、それにアクセスする可能性がキャッ
シュ・メモリにコピーするデータ要素よりも低いことが
必要である。この処理は、以前からキャッシュ管理とし
て知られている。
のデータを管理して最適なシステム性能を実現する様々
な方法や戦略が知られている。このような方法は、シス
テムやアプリケーション毎に異なったものとなることが
多い。管理の方法は、キャッシュ・メモリがディスク・
ドライブ(メイン・メモリ)上のデータをキャッシング
する電子(集積回路)メモリであるか、あるいは低速の
電子メモリ(メイン・メモリ)のデータをキャッシング
する高速の電子メモリであるかによって異なる場合があ
る。管理の方法は更にキャッシュ・メモリの大きさによ
って変わる場合がある。
るが、一般にキャッシュ・メモリ内に新しいデータの受
け取りに使用可能な領域がある場合、新しいデータは単
に、使用可能な領域にコピーされ、キャッシュのディレ
クトリ/インデックスに記録される。しかし、新しいデ
ータの受け取りに使用することができる領域がない場合
は、新しいデータをコピーする領域を確保するために既
存のデータを廃棄する必要がある。また、それに応じて
ディレクトリ/インデックスを更新する必要もある。前
述のように、キャッシュ内のどのデータを廃棄するかを
決定するさまざまな方法が知られており、実施されてい
るが、どの方法も(少なくともすぐには)再利用しない
であろうデータを廃棄することを目指している。
々な方法が知られているが、更なる向上が望まれてい
る。
新しい特徴については、一部には以下の説明に記載し、
一部には、当業者においては以下を検討することにより
明らかになるか又は本発明の実施によって理解されるで
あろう。本発明の目的及び利点は、特に請求項において
示される手段及び組合せにより実現され達成されるもの
である。
に、本発明は、概して、高度なキャッシュ・メモリ管理
を行うシステム及び方法を対象とする。大まかに言う
と、本発明は、ある所定のサイズの領域が常に新しいデ
ータの受け取りに使用することができることを保証し、
このことによって非同期I/Oキャッシュの性能を向上す
る。この点に関しては、メモリ・マネージャ(キャッシ
ュ内の専用ハードウェア)が常にキャッシュ・メモリ領
域を監視し、「空き」領域すなわち使用可能な領域のサ
イズを評価する。新しいデータがキャッシュ・メモリ領
域に読み込まれると、「空き」領域は減少する。空き領
域が所定のサイズよりも小さくなると、1ライン以上の
キャッシュを廃棄し、所定のサイズの領域が常に使用可
能な状態であることを保証する。
キャッシュ・メモリ内のデータを管理する方法を提供す
る。この方法は、デバイスからシステム・メモリへのデ
ータ要求が発生し、要求されたデータが現在キャッシュ
・メモリのデータ記憶領域にないことを識別するステッ
プと、データをシステム・メモリからデータ記憶領域に
読み出すステップとで構成される。次に、本方法はキャ
ッシュ・メモリを評価し、データ記憶領域内で所定のサ
イズ以上の領域が使用可能かどうかを判断する。続い
て、本方法では、所定のサイズ以上の領域が使用できな
い場合にのみ、データ記憶領域内のデータの一部をフラ
ッシュする。更に、以上のステップを繰り返す。
領域へ読み出すステップがデータ要求を識別するステッ
プの直後に行われることが重要である。ここでは、本発
明により、キャッシュ・メモリ内の領域を直ちに新しい
データの受け取りに使用することができると仮定するこ
とができる。従って、待ち時間による遅れは発生しな
い。しかし、それ以外の場合、すなわちキャッシュ・メ
モリに空きがないために一部のデータを廃棄しなければ
ならない状況では待ち時間による遅れが発生する。
所定のサイズはプログラム的に設定可能である。この所
定のサイズは、1キャッシュラインから4キャッシュラ
インの範囲にあるのが好ましい。又、キャッシュ・メモ
リにデータを読み出すステップは、キャッシュ・メモリ
に読み出すデータのバイト数(2バイト以上の場合)を
判断するステップと、要求されたデータの全バイトを使
用可能なキャッシュ・メモリ領域に直ちに読み出すステ
ップとを更に有する。
メモリ内のデータを管理する方法が提供される。本方法
は、データ記憶領域内の使用可能な領域のサイズを決定
するステップと、使用可能な領域のサイズと所定の値と
を比較するステップとを有する。更に、本方法は、使用
可能な領域が所定の値に満たない場合にキャッシュ・メ
モリの1ライン以上のデータをフラッシュするステップ
を有する。1つの実施形態では、上記比較のステップ
が、所定の値を表すフラッシュ制御レジスタを評価する
ステップを含む。
ュ・メモリのデータを管理するシステムが提供される。
このシステムは、キャッシュ・メモリ内に複数のデータ
・ラインで構成されるメモリ領域と、メモリ領域のデー
タを管理するよう構成されたメモリ・マネージャとを備
えている。メモリ・マネージャは、データ記憶領域内の
使用可能な領域のサイズを決定する第1の手段と、使用
可能な領域のサイズと所定の値とを比較する第2の手段
と、使用可能な領域が所定の値に満たない場合にキャッ
シュ・メモリの1ライン以上のデータ・フラッシュを制
御することができる第3の手段とを更に備えている。
たデータのアドレスを表すディレクトリを評価するよう
構成された回路を備えているのが好ましい。同様に、第
2の手段は、フラッシュ制御レジスタを有する回路を備
えており、この場合、上記所定の値を表す複数のビット
をフラッシュ制御レジスタが備えているのが好ましい
(上記複数のビットはプログラム的に変更することがで
きる)。最後に、第3の手段は、データ記憶領域から1
ライン以上のデータをフラッシュし、上記所定の値以上
のキャッシュ・ラインを常に新しいデータの受け取りに
使用することができる状態に保持するよう構成した回路
を備えている。
要約して述べてきたが、ここで添付の図面に示す本発明
の詳細な説明に入る。これらの図面に関連して本発明を
説明するが、本発明はここで開示する実施形態に限定さ
れるものではなく、あらゆる代案、修正及び均等物は、
請求項に記載の本発明の精神及び範囲に含まれるもので
ある。
シュ・メモリに関して更に説明を行う。前述のように、
キャッシュ・メモリはシステム性能を向上するためにコ
ンピュータ・システム内のマイクロプロセッサとメイン
・メモリの間に配置した高速メモリである。キャッシュ
・メモリ(又はキャッシュ)は、プログラム稼働中に中
央処理装置(CPU)が頻繁に使用するメイン・メモリ
・データの一部のコピーを格納する。キャッシュのアク
セス時間はメイン・メモリのアクセス時間より短いの
で、全体としてアクセス時間を短縮することができる。
多くは、「直接マッピング」方式のキャッシュ・メモリ
を実装している。一般に、直接マッピング方式のキャッ
シュ・メモリは、高速のデータ・ランダム・アクセス・
メモリ(RAM:Random Access Memory)と並列高速タ
グRAMで構成される。データ・キャッシュ内の各ライ
ンのRAMアドレスは、そのエントリに対応するメイン
・メモリのライン・アドレスの低位部分と同一である。
メイン・メモリ・アドレスの高位部分はタグRAMに格
納される。従ってメイン・メモリに2n「ライン」(各
ラインは1バイト以上)で構成されるブロック2m個が
存在すると考えた場合、キャッシュ・データRAMの第
iラインはメイン・メモリを構成する2m個のブロック
のいずれかの第iラインをコピーしたものである。その
ラインのコピー元のメイン・メモリ・ブロックがどれで
あるかは、タグRAMのi番目の場所に格納される。
ラインアドレスの低位部分はキャッシュ・データRAM
とキャッシュ・タグRAM両方にアドレスとして渡され
る。選択したキャッシュ・エントリに対応するタグをC
PUのアドレスの高位部分と比較し、一致する場合は
「キャッシュ・ヒット」が発生し、キャッシュ・データ
RAM内のデータはシステムのデータ・バス上で使用可
能になる。タグがCPUのアドレスの高位部分に一致し
ない場合、又はタグ・データが無効な場合は「キャッシ
ュ・ミス」が発生し、データはメイン・メモリから取り
出される。このデータは後に使用する可能性を考慮して
キャッシュにもコピーされ、前のエントリに上書きされ
る。通常、キャッシュ・ミスの場合は、1バイトのみが
要求された場合でも、メイン・メモリの1ライン全体が
読み出されてキャッシュ内にコピーされる。CPUによ
るデータの書き込みが発生すると、場合によってキャッ
シュRAM又はメイン・メモリ、或いはその両方が更新
されるので、一方に書き込みが発生したことを他方に示
すフラグが必要なことは言うまでもない。
では、補助記憶装置の各「ライン」はキャッシュ内のあ
る1つのラインだけにマッピングされる。「完全連想」
方式のキャッシュでは、補助記憶装置の特定のラインを
キャッシュの任意のラインにマッピングすることができ
る。この場合、キャッシングが可能なアクセスでは、キ
ャッシュ・ヒットとキャッシュ・ミスのいずれが発生し
たのかを判断するために全てのタグをアドレスと比較す
る必要がある。直接マッピング・キャッシュと完全連想
キャッシュの中間に相当する「kウェイ・セット連想」
方式のキャッシュ・アーキテクチャも存在する。「kウ
ェイ・セット連想」方式のキャッシュ・アーキテクチャ
では、補助記憶装置の各ラインはキャッシュ内のk個の
ラインのいずれかにマッピングすることができる。この
場合、キャッシング可能な補助記憶装置のアクセス中に
キャッシュ・ヒットとキャッシュ・ミスのいずれが発生
したのかを判断するためには、k個のタグとアドレスを
比較する必要がある。又、それぞれ独自の有効ビットを
有するいくつかのキャッシュ・データ・ラインが1つの
キャッシュ・タグRAMエントリに対応する「セクタ・
バッファ」型、又は「サブ・ブロック」型のキャッシュ
もある。
を実行した場合は、メイン・メモリにも同じ変更を加え
る必要がある。この作業を実行しない場合、メイン・メ
モリのデータが「陳腐」になる。メイン・メモリの内容
とキャッシュの内容との整合性を保つための技法には、
従来、(1)ライトスルー法及び(2)ライトバックす
なわちコピーバック法の2つがある。ライトスルー法で
は、キャッシュへの書き込みがヒットすると、データを
キャッシュに書き込んだ直後又は書き込み実行中にメイ
ン・メモリにもデータが書き込まれる。この結果、メイ
ン・メモリの内容は常に有効であり、キャッシュの内容
との整合性を保持することができる。ライトバック法で
は、キャッシュへの書き込みがヒットすると、システム
はキャッシュにデータを書き込み、データ・ワードがキ
ャッシュには書き込まれたがメイン・メモリには書き込
まれていないことを表す「ダーティー・ビット」をセッ
トする。キャッシュ・コントローラはキャッシュ内の任
意のデータ・ラインを上書きする前にダーティー・ビッ
トを検査し、セットされていればメイン・メモリにその
データ・ラインを書き出してから新しいデータをキャッ
シュにロードする。
レス領域に2レベル以上のキャッシュ・メモリを配置す
ることができる。例えば、2レベル・キャッシュ・シス
テムでは「レベル1」(L1)キャッシュは論理的にホ
スト・プロセッサの次の位置にある。第2レベル(L
2)のキャッシュは論理的に第1レベルのキャッシュの
次の位置にあり、DRAMメモリ(この場合は第3のメ
モリと言える)は論理的に第2レベルのキャッシュの次
の位置にある。ホスト・プロセッサがメモリ・アドレス
領域のあるアドレスへのアクセスを実行すると、第1レ
ベルのキャッシュが応答可能な場合は第1レベルのキャ
ッシュが応答する。第1レベルのキャッシュが(L1キ
ャッシュ・ミスなどによって)応答不可能で、第2レベ
ルのキャッシュが応答可能な場合は、第2レベルのキャ
ッシュが応答する。第2レベルのキャッシュも応答不可
能な場合は、DRAM自体にアクセスが行われる。ホス
ト・プロセッサは、システムのキャッシシングのレベル
がいくつか、あるいは実際にどんなキャッシングが存在
するかは全く知る必要はない。同様に、第1レベルのキ
ャッシュはDRAMの前に第2レベルのキャッシュが存
在するかどうかを知る必要はない。従って、ホスト・プ
ロセッシング装置にとって2つのキャッシュとDRAM
の組合せは、単一のメイン・メモリ構造としか見えな
い。同様に、L1キャッシュにとってL2キャッシュと
DRAMの組合せは、単一のメイン・メモリ構造としか
見えない。更に言えば、L2キャッシュとDRAMの間
に第3レベルのキャッシングが存在すれば、L2キャッ
シュは、L3とDRAMの組合せを単一のメイン・メモ
リ構造と見なすこととなる。
モリは、通常、CPUのためにメイン・メモリ・データ
をキャッシングする。キャッシュがライトバック・プロ
トコルを使用する場合、キャッシュ・メモリ内のデータ
はメイン・メモリ内の対応するラインよりも新しいこと
が多い。この場合、メイン・メモリのデータのバージョ
ンが最新かどうか分からないので、メイン・メモリのラ
インにアクセス要求をする他のバス・マスタ(及びマル
チプロセッサ・システム内の他のCPU)に問題が発生
する。そこで、ライトバックのキャッシュ・コントロー
ラは、問い合わせ周期(スヌープ周期としても知られ
る)をサポートし、バス・マスタがキャッシュ・メモリ
に対してデータのコピーがより新しいものかどうかをこ
の周期で問い合わせるのが一般的である。
な構成要素の一部を示すブロック図である。これらの基
本的な構成要素には、複数のデータ・ライン54に対応
する複数のタグ52及びディレクトリ/インデックス5
6がある。周知のとおり、キャッシュ・タグ52は、通
常、ターゲット・データの記憶場所のブロック(ライ
ン)を定義する、アドレス・ビットの一部(上位ビッ
ト)を含む。下位ビット(ドントケア値として示す)は
対応するデータ・ライン54内のターゲット・データの
値に固有の位置(ブロック内の位置)を表す。本発明の
好ましい実施形態によれば、キャッシュ・メモリ50は
64バイトのデータ・ライン54を利用する。従って、
アドレス・ビットの下位6ビットは、所与のデータ・ラ
イン54内のターゲット・データ値の固有の記憶場所を
表す。
6も示している。周知のとおり、ディレクトリ56はさ
まざまなタグ52のログ又はデータベースを保持してい
る。起動時又は初期設定時にはキャッシュ・メモリ50
にはデータが一切格納されておらず、よってディレクト
リ56にもタグは一切格納されていない。従って、デバ
イスがシステム・メモリからのデータの読み出しを要求
すると、システム・メモリのライン54全体がキャッシ
ュ・メモリ50のデータ・ライン54の中に読み込ま
れ、アドレス・バスの上位ビットが対応するタグ52に
書き込まれる。ここで、タグはディレクトリ56に格納
される。次に、特定の記憶場所のデータが要求される
と、キャッシュ・メモリ50はディレクトリ56を調
べ、データ値が現在キャッシュにあるかどうかを判断す
る。データ値が実際にキャッシュ・メモリ50に存在す
る場合は、そのデータ値にアクセスし、高速で読み出し
を行う。しかし、データ値が現在キャッシュ・メモリ5
0に存在しない場合は、そのデータ値をシステム・メモ
リから取り出し、キャッシュ・メモリ50の使用可能な
データ・ライン54に読み込む。前述のとおり、アドレ
ス・バスの上位ビットは対応するタグに書き込まれ、デ
ィレクトリ56に記録される。
された場合は、前述のプロセスを繰り返す。しかし、あ
る時点でキャッシュ・メモリ50の全てのデータ・ライ
ン54にデータが入ることになる。この時点で、キャッ
シュ・メモリ50はキャッシュ50に新しいデータを読
み込む領域を空けるために、1ライン54以上のデータ
を廃棄しなければならない。前述のように、どのライン
すなわちライン54のデータをキャッシュ50から廃棄
するかを決定する様々なアルゴリズムや方法が知られて
いる。近い将来に再び使用される可能性の最も少ないと
予測されるデータ・ライン54を廃棄するアルゴリズム
を選択するのが好ましい。データがキャッシュ50から
廃棄されると、ディレクトリ56が更新され、それによ
り対応するタグ52がディレクトリ領域から削除され
る。
すなわちあらゆるメモリ・アクセスにおいて発生するキ
ャッシュ・ヒットのパーセンテージが高い。キャッシュ
のヒット率が高いと、メモリ・アクセスの大部分は待ち
状態なしで処理される。キャッシュ・ヒット率が高いこ
とによる実際の効果は、比較的稀にキャッシュ・ミスに
よる待ち状態が発生しても、待ち状態がゼロのキャッシ
ュ・ヒット・アクセスが非常に多いので、1回のアクセ
スの待ち状態は平均してほとんどゼロになることであ
る。また、通常、キャッシュはマイクロプロセッサのロ
ーカル・バス上に存在するので、キャッシュ・ヒットの
場合はシステム・バスを使用する必要が無くローカルに
処理される。従って、プロセッサがそのローカル・キャ
ッシュから処理を行う場合は「バス利用」がはるかに少
なくなる。この結果、プロセッサが使用するシステム・
バス帯域幅が減少し、単独でバスにアクセスすることが
できるインテリジェント・バス・マスターなど、他のデ
バイスが利用することができる帯域幅が増大する。
知られているが、他のキャッシュもよく知られており、
使用されている。例えば、I/Oキャッシュはシステム
・バスとI/Oバスの間でデータをバッファリング及び
キャッシングするものとして知られている。以下に詳述
するとおり、マイクロプロセッサやメモリなど、一部の
システム構成要素は、I/Oトランザクションとは異な
るクロックで同期をとる。2つの異なる周波数領域間で
データをやりとりする場合は、通常、必要がなくても何
らかの方法でデータをバッファリングするのが望まし
い。その方法の1つは、I/Oキャッシュを介してデー
タをやりとりするものである。
コントローラと呼ばれるデバイスが行う。キャッシュ・
コントローラが行うキャッシュ管理作業の1つは、プロ
セッサによるメモリへの書き込みの処理である。書込み
操作を処理する方法によって、キャッシュが「ライトス
ルー」か「ライトバック」のどちらであるかが決まる。
プロセッサがメイン・メモリへの書き込みを開始する
と、まずキャッシュを検査し、この記憶場所のデータの
コピーがキャッシュにあるかどうかを判断する。ライト
バック・キャッシュ設計では、プロセッサの書き込みが
ヒットすると、キャッシュの記憶場所を新しいデータで
更新し、後でこのデータがバス・マスタなど、他のデバ
イスから要求された場合にのみメイン・メモリを更新す
る。すなわち、キャッシュはそれ以降正しいすなわち
「クリーン」なデータのコピーを保持し、メイン・メモ
リはフラッシュ操作が発生した場合にのみ更新される。
ライトスルーのキャッシュでは、一般にプロセッサの書
き込みがヒットすると、メイン・メモリの記憶場所はキ
ャッシュの記憶場所と同時に更新される。ライトスルー
のキャッシュでプロセッサの書き込みがミスした場合、
キャッシュ・コントローラは書き込みミスを無視する
か、又は「書き込み割り当て」を実行する。書き込み割
り当てによって、キャッシュ・コントローラがメイン・
メモリにデータを引き渡し、更にキャッシュに新しいラ
インを割り当てる。ライトバック・キャッシュ設計で
は、一般にプロセッサによる書き込みがミスした場合に
キャッシュ・コントローラがキャッシュ内に新しいライ
ンを割り当てる。この場合は、一般に新しい書き込みデ
ータを割り当て、更にメイン・メモリから残りのエント
リを読み込んでラインを満たす。
内の各セットに対応するエントリを保持するディレクト
リを備えている。ライトスルー・キャッシュでは、この
エントリには、一般に3つの構成要素、すなわちタグ、
タグ有効ビット、及び各キャッシュ・セット内のライン
と同数の複数のライン有効ビットがある。タグはメイン
・メモリのページ番号として機能し、キャッシュの各セ
ットに存在するデータのコピー元となるメイン・メモリ
の特定ページの上位アドレス・ビットを保持する。タグ
有効ビットのステータスによって、キャッシュの各セッ
トのデータが有効と見なされるか無効と見なされるかが
決まる。すなわち、タグ有効ビットがOFFの場合はそ
のセット全体が無効と見なされる。タグ有効ビットがO
Nの場合、セット内の個々のラインは、そのラインに対
応するライン有効ビットのステータスによって有効又は
無効と見なされる。ライトバックのキャッシュでは、キ
ャッシュ・ディレクトリのエントリは一般にタグと各セ
ットの各ラインに対する複数のタグ・ステータス・ビッ
トから構成される。前述のとおり、タグはコピー元とな
るメイン・メモリの特定ページの上位アドレス・ビット
で構成される。タグ・ステータス・ビットは、各々対応
するラインのデータの状態、すなわちデータが無効か、
変更済み(所有された:owned)か、あるいはクリーン
かを決定する。
キャッシュ・コヒーレンシを保持することである。キャ
ッシュ・コヒーレンシとは、キャッシュ内のどのデータ
のコピーもその記憶場所のデータのオーナと同一(又は
実際にそのもの)でなければならないという要件であ
る。記憶場所のデータのオーナとは、一般に最新のバー
ジョン、すなわち正しいバージョンのデータを有するそ
れぞれの記憶場所と定義される。データのオーナは、一
般にメイン・メモリ内の変更されていない記憶場所か、
あるいはライトバック・キャッシュ内の変更された記憶
場所のいずれかである。
することができるコンピュータ・システムでは、直接メ
モリ・アクセス・コントローラ、ネットワーク・インタ
フェース・カード、ディスク・インタフェース・カー
ド、あるいはビデオ・グラフィックス・カードのような
バス・マスタが、キャッシュにコピーがあるメイン・メ
モリの記憶場所の内容を直接変更する可能性がある。こ
の場合、キャシュは「陳腐」、「ダーティ」、あるいは
無効なデータを保持していると言われる。プロセッサが
ライトバック・キャッシュへのキャッシュ書き込みヒッ
ト操作を行う場合にも、キャッシュは新しいデータを受
け取るが、メイン・メモリはすぐには更新されない。こ
の場合、キャッシュには「クリーン」なデータ、すなわ
ち正しいバージョンのデータが格納されており、キャッ
シュは記憶場所を所有していると言われ、メイン・メモ
リは無効なすなわち「陳腐」データを保持している。プ
ロセッサがキャッシュの陳腐データへのアクセスを許可
されたり、バス・マスタがメイン・メモリのダーティ・
データへのアクセスを許可されたりすると問題が発生す
る。従って、キャッシュ・コヒーレンシを保つため、す
なわちプロセッサやバス・マスタなどのデバイスが不用
意に正しくないすなわち陳腐なデータを受け取るのを防
ぐために、キャッシュ・コントローラは、プロセッサが
システム・バスを制御していないときにバス・マスタが
メイン・メモリにアクセスしているかどうかについて、
システム・バスを監視する必要がある。このバスを監視
する方法をスヌーピングと呼ぶ。
・マスタがメモリを読み出している間は、キャッシュが
記憶場所を所有している、すなわちキャッシュのみがこ
の記憶場所の正しいデータのコピー(変更済みのデータ
と言う)を有する可能性があるので、キャッシュ・コン
トローラはシステム・バスを監視する必要がある。これ
を読み出しスヌーピングと呼ぶ。読み出しスヌープ(sn
oop:詮索)がヒットした場合すなわちキャッシュのデー
タが変更済みの場合、キャッシュ・コントローラが一般
に個々のデータをメイン・メモリに提供し、要求元のバ
ス・マスタが一般にキャッシュ・コントローラからメイ
ン・メモリに達する途中でこのデータを読み出す。この
操作をスナーフィング(snarfing)と言う。もう1つの
方法では、キャッシュ・コントローラは個々のデータを
メイン・メモリでなく直接バス・マスタに提供する。後
者の方法では、メイン・メモリはキャッシュにフラッシ
ュが発生するまで誤ったすなわち「陳腐」データを保持
し続けることになる。
キャッシュ設計においても、バス・マスタがキャッシュ
に存在するデータを有するメモリ記憶場所に書き込みや
変更を行う可能性があるので、バス・マスタがメモリに
書き込んでいる間、キャッシュ・コントローラはシステ
ム・バスも監視しなければならない。これを書き込みス
ヌーピングと言う。ライトスルー・キャッシュへの書き
込みスヌープがヒットすると、一般にキャッシュ・コン
トローラはキャッシュ・ディレクトリ内のキャッシュ・
エントリに無効のマークを付け、このエントリがもはや
正しくないことを示す。ライトバック・キャッシュで
は、キャッシュはメイン・メモリと一緒に更新され、タ
グ・ステート・ビットをセットしてキャッシュのそれぞ
れの記憶場所には現在新しいデータのコピーが入ってい
ることを示す。別法として、ライトバック・キャッシュ
では書き込みスヌープがヒットするとライン全体を無効
化することもある。従って、ライトバック・キャッシュ
設計ではキャッシュ・コントローラはバス・マスタのメ
イン・メモリ読み出しおよび書き込みの両方をスヌープ
しなければならない。ライトスルー・キャッシュ設計で
は、キャッシュ・コントローラはバス・マスタのメイン
・メモリへの書き込みのみをスヌープすればよい。
ュ・コントローラがシステム・バス・アドレスをラッチ
し、メモリ・アクセスが起こる記憶場所のページ相対位
置に対応するタグ・ディレクトリ内のキャッシュ・ルッ
クアップを行い、アクセス対象のメイン・メモリの記憶
場所にあるデータのコピーがキャッシュにも存在するか
どうか知るという意味がある。この記憶場所のデータの
コピーがキャッシュに存在する場合は、ライトバックと
ライトスルーのいずれのキャッシュ設計が実装されてい
るかにより、あるいは読み込みと書き出しのいずれのス
ヌープ・ヒットが発生したかにより、キャッシュ・コン
トローラは適切な処置をとる。この結果、メイン・メモ
リとキャッシュに相反するデータが格納されることを防
ぎ、それによってキャッシュ・コヒーレンシを保持す
る。
ついて述べてきたが、ここで本発明の好ましい実施形態
の動作環境について説明する。なお、本発明はキャッシ
ュ・メモリ内のデータを管理するシステム及び方法を対
象としている。更に詳しくは、キャッシュ・データを管
理する本発明の方法は、I/Oキャッシュや、第1のク
ロックに同期する1つの同期サブシステムから第2のク
ロックに同期する別の同期サブシステムにデータを送信
する他の同様の環境では特に有効である。
好ましいコンピューティング環境に従って構成したシス
テム100の基本的な構成を示すブロック図である。具
体的には、本発明は、システム・バス108とI/Oバ
ス110の間に介在するように特に構成された装置10
2を備える。当業者には言うまでもないが、システム・
バス108は、メモリ104、CPU 106など、コ
ンピューティング・システム内の多くのデバイス間に相
互通信の手段を提供する導線の集まりである。同様に、
I/Oバス110は、システム・バス108上のデバイ
ス104、106が他のリモート・デバイスと相互通信
を行う手段を提供する導線の集まりである。
コンピューティング環境では、多くの場合は、メモリや
CPUなど、特定のシステム構成要素を含むマザーボー
ドを備えたシステムが提供される。さまざまな「拡張」
カードに対応するために、マザーボードは複数の拡張ス
ロットも備えている。このような拡張カードには、ディ
スク・デバイス・コントローラ、モデム・カードやその
他の通信カードなどがある。これらのカード又はデバイ
スのように、システム・バス108を介してCPU及び
メモリと相互通信することができるものもあるが、PC
IバスなどのI/Oバスを介して通信を行うものも多
い。
して相互通信するデバイスは、一般に共通のシステム・
クロックで動作する限り同期態様で通信を行う。図で
は、これを破線116で表し、破線116のシステム側
のデバイスはシステム周波数領域で動作すると言われ
る。システム周波数は、システム・クロックの周波数で
ある。I/Oバスを介して相互通信するデバイスも同期
通信を行うが、別のクロックに同期する。実際には、I
/Oクロックはシステム・クロックとは異なる周波数で
動作する(ことが多い)のが一般的である。従って、破
線のI/Oバス側のデバイスはI/O周波数領域で動作
すると言われる。従来技術におけるシステムでは、キャ
ッシュなど、システム・バスとI/Oバスの間に介在す
るバッファリング・デバイスは、システム周波数領域又
はI/O周波数領域のどちらかで動作するように設計さ
れるのが一般的であった。その結果、この周波数境界1
16を越えるオペレーション又はトランザクションを実
行すると、その代償として待ち時間が発生した。
テムでは、実質的に周波数境界116にまたがるデバイ
ス102を提供することによって、待ち時間という欠点
を克服する。本発明は、周波数境界116にまたがるキ
ャッシュ・データ記憶領域120とアドレス(すなわち
タグ)記憶領域122を有するデバイスで動作する。な
お、周波数境界116は概念的に境界というほど物理的
な境界にはならないことは理解されよう。データ記憶領
域120とアドレス記憶領域122がこの境界にまたが
る場合、デバイス102内では、2組のデータと2組の
アドレスではなく、単に1組のデータと1組のアドレス
が指定されることになる。従って、2組のデータ記憶領
域とアドレス記憶領域を格納するのに必要であったチッ
プ領域が最小になるという効果がある。本発明に関連し
て2つ存在するのは、妥当性/ステータス回路124及
び126である。具体的には、回路124はシステム・
バス108から見てデータ記憶領域120内のデータが
有効かどうかを示すために提供される。同様に、回路1
26はI/Oバス110から見てデータ記憶領域120
内のデータが有効かどうかを示すために提供される。以
下の説明から分かるように、本システムは、周波数境界
116を越えるときに発生する待ち時間を事実上隠すこ
とによってその利点を実現する。ちなみに、この待ち時
間のペナルティはクリティカルではない時に払われる。
実行する場合、デバイスはI/Oバス110を介してシ
ステム・メモリ104からデータをシークし、フェッチ
する。ここで、周波数境界116を越えるデータをフェ
ッチするために数周期の遅れが発生する。フェッチ対象
データの後続のバイトのそれぞれについてこの待ち時間
がたびたび発生するが、デバイス102は(I/Oバス
110から見て)データの最初にフェッチするバイト以
外では待ち時間を発生させないようにして、この待ち時
間を事実上隠す。データの後続のバイトはデータ記憶領
域120にフェッチされてからI/Oバス110によっ
て取り出され、後続の待ち時間は発生しない。同様に、
以下に詳述するとおり、デバイス102はシステム側
(システム・バス108とデバイス102の間)でスヌ
ープによるコヒーレンシ・プロトコルを実行でき、クリ
ティカルな期間に待ち時間による遅れを発生することが
ないように動作する。
102を更に詳細に示すブロック図である。前述のとお
り、デバイス102にはデータ記憶領域120とアドレ
ス記憶領域122が存在し、これらは概念的にシステム
周波数領域とI/O周波数領域の間の周波数境界116
にまたがる。本発明の概念に従って同期回路130と1
40が提供され、これらも概念的に周波数境界116に
またがっている。
は、同期回路130を構成する好ましい回路を示す概略
図である。具体的には、同期ブロック130は図示のよ
うに構成した3つのフリップフロップ132、134、
136を備えているのが好ましい。I/O周波数領域
(より一般的には、第1の周波数領域)から渡される信
号は、D型フリップフロップ132に第1のクロック
(CLK1)で同期読み出しされる。次に、このフリッ
プフロップの出力はフリップフロップ134に送信され
る。この信号は、システム周波数領域(より一般的に
は、第2の周波数領域)で動作する第2のクロック(C
LK2)で同期読み出しされる。第3のフリップフロッ
プ136が提供され、フリップフロップ134の出力は
フリップフロップ136の入力に送信される。フリップ
フロップ136の目的は、フリップフロップ134の準
安定性の潜在的な影響を克服することである。具体的に
は、信号がフリップフロップ132からフリップフロッ
プ134に同期読み出しされ、フリップフロップ134
のセットアップの要件も保持の要件も満足しない場合、
フリップフロップ134の出力は準安定である(すなわ
ち論理的に高くも低くもない)。周知のとおり、通常、
この準安定性は1クロックサイクルの間に自然に解消す
る。従って、次のCLK2のクロックサイクルと同時
に、フリップフロップ134の出力は論理的に高又は低
のいずれかに落ち着き、フリップフロップ136の出力
に有効な出力を提供する。
40及び142が設けられており、この2つの回路では
同期回路130と逆方向に信号が渡される。以下に詳述
するように、ステート・マシン152及び154が設け
られており、これらは周波数境界を越える信号の送信と
同期化を制御する。
領域ごとに1組の信号のみを示している。ただし、好ま
しい実施形態では、データ記憶領域120の各データ・
ラインごとに回路と信号のセットが2つ存在することは
言うまでもない。更に、好ましい実施形態に従って構成
したI/Oデバイス102においては、データ記憶領域
120に16ラインのキャッシュ・データが存在し、各
ラインには64バイトのデータが格納されている。従っ
て、ここでは1ライン分の妥当性/ステータス回路を示
したが、16ラインではこの16倍になる。
領域120内のデータは、デバイス102のI/O側で
は有効で、デバイス102のシステム側では有効でない
ということがあってはならない。図3から明らかなよう
に、このステータスは無効化、I/O有効、システム有
効の各信号ラインの構成によって保証される。一般に、
周波数境界を越える信号を操作する場合、信号がアサー
トされる時間の正確な長さは不定である。従って、信号
通信によってある種のフィードバックを提供するのが好
ましい。このことは、事実上、無効化、I/O有効、シ
ステム有効の各信号ラインの使用によって実現される。
は、システム有効と無効化の両方の信号ラインを生成す
る。これらの信号ラインによって、システム周波数領域
から見てデータが有効か無効かを示す。これら2つの信
号はそれぞれ同期回路140と142を介してステート
・マシン152に渡され、入力される。ステート・マシ
ン152はI/O有効信号を生成する。I/O有効信号
はANDゲート164に送信されるとともに、同期回路
130を介してシステム周波数領域に戻される。
ックによってデータ記憶領域内のデータがもやは有効で
はない(すなわち、新しいデータ値がシステム・メモリ
に書き込まれている)と判断された場合は、ステート・
マシン154が無効化信号ラインをアサートする。この
信号は、同期回路142を介してステート・マシン15
2に入る。これに応じて、ステート・マシン152はI
/O有効信号ラインを否定し、I/O周波数帯域で直ち
にデータが有効でないことを示す信号通信を行う。I/
O有効信号は同期回路130を介してステート・マシン
154にも送信される。従って、若干のクロック周期の
遅れの後に、否定されたI/O有効信号がステート・マ
シン154に入り、それに応じてシステム有効信号が否
定される。更に、無効化信号ラインがディアサートされ
る場合もある。システム有効信号はANDゲート168
に送信され、システム周波数領域でデータが有効でなく
なっていることを示す。又、システム有効信号は、同期
回路140を介してステート・マシン152に送信され
る。従って、この信号通信によって、データ記憶領域1
20のデータの妥当性ステータスは、まずI/O側で無
効が示されてからシステム側で無効が示されることが分
かる。
タ記憶領域120に取り込むと、ステート・マシン15
4はシステム有効信号ラインをアサートすることができ
る。この信号がステート・マシン152に達すると、I
/O有効信号ラインをアサートする。逆に、データ記憶
領域内のデータがI/O周波数領域の側から無効のマー
ク付けをされた場合、(最初に無効化信号ラインの指示
がなくても)ステート・マシン152は単にI/O有効
信号を否定する。これで、直ちに(ANDゲート164
を介して)データ記憶領域120内のデータが有効でな
いという信号がI/O周波数領域に送信される。更に数
サイクル遅れて、システム周波数領域でデータが無効で
あることが(ANDゲート168を介して)示される。
54を設けて、無効化、システム有効、I/O有効の各
信号ラインのステータスを生成し、制御する。例えば、
第1のステート・マシン154がシステム・データ・バ
スのコヒーレンシ・トランザクションに応答して無効化
信号を生成するように構成してもよい。更に、第2のス
テート・マシン152は、データをシステム・メモリか
らデータ記憶領域にフェッチするフェッチ操作の完了に
応答してI/O有効信号を生成するように構成してもよ
い。ステート・マシン152と154を実現するための
具体的な回路は、この発明の構成ではないので、ここで
は図示しない。実際、この回路はデバイス102の個々
の適用とデバイス102に対して選択した個々の実施例
によって、さまざまな方法で実現される。しかし、ステ
ート・マシン152と154を実現する多くの方法は当
業者には明らかであるため、その詳細な説明は省略す
る。
168が提供され、(アドレスで指定した)特定のデー
タが現在データ記憶領域120にあるかどうかを示す。
この回路は従来の方法で実現されており、比較論理16
2が特定のアドレスが現在アドレス記憶領域122に存
在するかどうかを判断する。存在する場合、コンパレー
タ162の出力はI/O有効信号ラインが表す妥当性ス
テータスと実質的に“AND”される。すなわち、I/
O要求の「ヒット」を生成するためには、特定のデータ
のアドレスがアドレス記憶領域122に存在する(コン
パレータ162で判断する)だけでなく、このデータが
有効(ステート・マシン152と154で判断する)で
なければならない。同様に、デバイス102のシステム
側からのデータ要求は、アドレスがアドレス記憶領域1
22内に存在し(コンパレータ166で判断する)、デ
ータが有効(ステート・マシン152と154で判断す
る)な場合にのみ「ヒット」という結果になる。
ら要求されたデータは、通常、システム・メモリ104
からデータ記憶領域120にフェッチされる。前述のと
おり、この好ましい実施形態では、I/Oデータ・バス
110はPCIバスである。周知のとおり、PCI通信
に伴って提供されるメカニズムが存在し、そのメカニズ
ムによれば、システム・メモリから要求されたデータが
デバイス102のキャッシュで利用できない場合、要求
回路は数サイクル後に再度要求を行うことになる。従っ
て、PCIバスから要求されたデータが現在デバイス1
02のキャッシュ内に存在しない場合、ヒット(ゲート
164で表す)は生成されない。本発明のシステムで
は、ここでシステム・メモリ104からそのデータを要
求し、データ記憶領域120に取り出す。そのため、そ
の後PCIバスからこのデータを読み出すと実際にヒッ
トが生成される。このデータは直ちにデータ記憶領域1
20からPCIバスに読み出すことができ、待ち時間は
発生しない。本発明によると、PCIバスからのデータ
のフェッチ又は要求に伴う待ち時間が最初のフェッチに
関してのみ発生するようにデータをシステム・メモリ1
04から事前にフェッチすることができ、後続のフェッ
チによるデータは直ちにデータ記憶領域120から取り
出すことが出来る。
デバイスは、システム・メモリ104のデータ要求、又
はシステム・メモリ104内の記憶場所へのデータの書
き込みを実行するので、本発明のデバイス102はシス
テム・メモリ104とデータ記憶領域120の間でデー
タのコヒーレンシを保証する必要がある。既知の方法で
は、このコヒーレンシはスヌープによるキャッシュ・コ
ヒーレンシ処理で保持される。上記の説明から分かるよ
うに、コンパレータ166にシステム・アドレスが示さ
れ、データが現在データ記憶領域120に存在するかど
うか(アドレス記憶領域122内のアドレスで指定)が
判明すると、ステート・マシン152及び154を備え
た妥当性回路はデータ記憶領域120内のデータが有効
かどうかを直ちに示す。ここでは、周波数境界116を
越えること以外による待ち時間の遅れは発生しない。従
って、データが不在(データ記憶領域120内に存在し
ない)の場合は直ちに検出されるという利点があること
が理解されよう。ただし、データが検出された場合は、
詳細情報を取得する必要があるので待ち時間が発生す
る。しかし、本発明はI/Oキャッシュに採用されるた
め、要求されたデータはキャッシュ内に存在しない場合
が多く、ほとんどの場合に迅速なデータの不在検出によ
る利益が得られる。
基本的ないくつかの側面について述べた上で、次に本発
明の好ましい実施形態について説明する。なお、本発明
はキャッシュ・メモリ128内のデータを管理するシス
テム及び方法に注目したものであり、近い将来再び使用
しないと予測されるデータを直ちにキャッシュ126か
ら廃棄するものである。
べてきたが、ここで図5を参照する。図5は、本発明に
従って構成したキャッシュ・メモリ128の基本的ない
くつかの構成要素を示すブロック図である。主として、
キャッシュ・メモリ128は、メモリ・マネージャ20
2、メモリ領域204、ディレクトリ/インデックス2
06を有する。メモリ領域204は、図1に関連して説
明したデータ・ラインに対応する。メモリ・マネージャ
202は、ハードウェアとして実装され、さまざまな機
能を実行するように特に構成した複数の集積回路で構成
されるのが好ましい。ある意味では、メモリ・マネージ
ャ202の一部は、それぞれは専用のハードウェアで構
成された複数の機能ユニット210からなるという見方
ができる。例えば、図6に関連して以下に詳述するよう
に、これらの機能としては、使用可能な領域を作るため
のキャッシュ・データの廃棄214、キャッシュへのデ
ータの読み込み216、PCIバスへのデータの書き出
し218、フラッシュ制御レジスタの評価220などが
ある。上に挙げた機能の具体的な実装は、本発明の概念
及びその教えるところに従ってさまざまな方法で行うこ
とが出来る。
すると、キャッシュ・メモリを含むデバイス126のキ
ャッシュ・メモリ・マネージャ202の性能を向上する
方法が提供される。本発明の一般的な側面によれば、メ
モリ・マネージャは単にある所定のサイズのメモリ領域
がいつでも使用可能な状態にあることを保証する。これ
を実現するために、メモリ・マネージャ202はキャッ
シュのメモリ領域を継続的に監視する。新しいデータの
受け取りに直ちに使用可能な(すなわち、キャッシュ・
ラインにデータが存在しない)メモリ領域がある所定の
サイズを下回ると、メモリ・マネージャは1ライン以上
のキャッシュ・データをフラッシュする。
ータのフェッチ(ステップ302)の際に、新しいデー
タがキャッシュに到着する。要求が検出されると、メモ
リ・マネージャ202は直ちにキャッシュ・メモリのメ
モリ領域にデータを読み込む(ステップ304)。この
とき、本発明では、メモリ・マネージャ202によっ
て、キャッシュ・メモリ内のメモリ領域に直ちに記憶す
ることができることが予想されるので、不必要な待ち時
間による遅れは発生しない。
テム・メモリ104からキャッシュ・メモリ128のメ
モリ領域204にデータを読み込む際の配置を制御す
る。このステップには、キャッシュ・メモリ128に読
み込むデータ・ラインのタグによるディレクトリ206
の更新が伴うことは言うまでもない。更に、メモリ・マ
ネージャ202はキャッシュ126からPCIバス11
0への通信及びデータの書き込み(ステップ306)を
制御する。
マネージャ202によって、所定のサイズの領域が常に
新しいキャッシュ・データの受け取りに「使用可能」な
状態にあることを保証する(ステップ308)。後述の
ように、この「使用可能」な領域はフラッシュ制御レジ
スタ208を使用してプログラム的に定義することがで
きる。この所定のサイズ以上の領域が使用可能と判定さ
れれば、システムはステップ302に戻り、次のデータ
の読み込みを待つ。一方、使用可能な領域が所定のサイ
ズ(キャッシュ・ライン数)に満たない場合は、1ライ
ン以上(所定のサイズの領域を確保するために、必要に
応じてライン数が増える)が廃棄される(ステップ31
0)。
リ・マネージャ202はキャッシュ制御レジスタ208
を利用する。キャッシュ制御レジスタ208は、使用可
能な領域のサイズをプログラム的に変更することができ
るというメカニズムを提供する。具体的には、前述のよ
うに、I/Oバスから周波数境界116を越えてメモリ
からのフェッチを実行すると、必然的に数サイクルの待
ち時間が発生する。この待ち時間による遅れは、(概念
的に)周波数境界116にまたがるデバイスを配置する
ことによって最小となる。すなわち、周波数境界116
にまたがる信号転送を同期化する際に発生する遅れを最
初の待ち時間のみに抑える。本発明では、キャッシュ・
メモリ内に新しいデータの受け取りに使用可能な領域が
常に存在することを保証し、このことによって更に遅れ
を最小化する。クリーンなキャッシュ・ラインにデータ
を取り出す場合にも若干の待ち時間はあるが、本発明で
は、キャッシュ・メモリに空きがないためにデータを廃
棄してから新しいデータをキャッシュ・メモリにフェッ
チしなければならない場合に発生する待ち時間による遅
れを短縮する。
ッシュ制御レジスタは以下の表1に示す形をとる。
は64ビットのレジスタである。上位16ビット(第6
3〜48ビット)は予約されており(現在は未使用)、
初期設定時のデフォルト値は0000(16進)であ
る。次の16ビット(第47〜32ビット)はライン有
効を表し、初期設定時のデフォルト値は0xFFFF
(16進)である。このライン有効機能により、フォー
ルト・トレランスが強化され、テスト・シナリオが提供
される。次の20ビット(第31〜12ビット)は予約
されており、初期設定時のデフォルト値は00000
(16進)である。同様に、第2〜7ビットは予約され
ており、初期設定時のデフォルト値は0(16進)であ
る。
次の表2に示すように定義される。
Yと表す)は書き込み用FIFOが空かどうかを示す。
このビットが「セット」されていることが認識される
と、必ず直接メモリ・アクセスが非アクティブと見なさ
れる。第10ビット(FLUSH_CACHE)は、キ
ャッシュ・ライン・フラッシュが未決かどうかを表す。
この点に関しては、第10ビットがセットされると(こ
のビット位置に1が書き込まれると)、すべてのキャッ
シュ・ラインにフラッシュ信号が送信される。フラッシ
ュが完了すると、回路は自動的に第10ビットをクリア
する。従って、第10ビットを監視すれば、フラッシュ
が完了するタイミングを特定することができる。又、こ
のビット位置を調べれば、フラッシュ操作のステータス
がわかる(1はフラッシュ操作が未決であることを表
す)。第8ビット及び第9ビット(AUTO_RD_F
LUSH及びAUTO_W_FLUSH)は、それぞれ
ラインの最終バイトが読み出された、又は書き込まれた
ときに、キャッシュのライン・フラッシュを有効化す
る。このように、一部のデータ・タイプでは、データの
読み出し又は書き込みが行われた直後にこのデータを廃
棄(フラッシュ)するのが望ましい。
1ビット(FLUSH_LEVEL)はメモリ・マネー
ジャ202が常に「使用可能」な状態に保持すべき領域
のサイズを(キャッシュ・ライン数で)定義するビット
である。好ましい実施形態では、「使用可能」な状態に
保持されるキャッシュ・ライン数は、実際にはフラッシ
ュ制御レジスタ208のこの2ビットで指定する2進数
よりも1つ多い。こうして、好ましい実施形態のデバイ
ス102は、使用可能なキャッシュ・ラインの数を1か
ら4までの間でプログラム的に制御して変更することが
できる。あるいは、この2つのビット位置は使用可能な
キャッシュ・ラインを0から3までの間で指定するよう
に構成することもできる。
ころに従って、フラッシュ制御レジスタのビット位置を
追加して使用可能なライン数を制御するように定義して
もよい。例えば、別の実施形態では、キャッシュ・メモ
リ内の使用可能な領域をフラッシュ制御レジスタの4つ
のビット位置で指定するように定義してもよい。このよ
うな実施形態では、異なる16のレベルで使用可能な領
域サイズを指定することができる。そのような実施形態
の1つでは、4つのビット位置によって1から16まで
の間で「使用可能」なキャッシュ・ラインを指定するこ
とができる。又、別の実施形態では、4つのビット位置
によって0から15までの間で「使用可能」なキャッシ
ュ・ラインを指定することもできる。
述べてきたが、本発明の広い概念は他のシステムにも適
用することができることは当業者にとっては言うまでも
ない。この点に関連して、本発明の一般的な目的は、キ
ャッシュ・メモリ領域のサイズが所定の閾値を超えた場
合に1ライン以上のデータを廃棄することによって、シ
ステムの性能を向上することである。換言すれば、本発
明のキャッシュ・メモリは、事前に定義した(ただしプ
ログラム的に変更可能な)特定のサイズの領域を常に新
しいデータの受け取りに使用することができる状態に保
持するように設計されている。新しいデータをこの領域
に読み込むことによって最小の領域サイズを下回る場合
は、少なくとも1ライン(又はそれ以上)のキャッシュ
・データを廃棄して新たに領域を解放する。このことに
よって、キャッシュ内で特定のサイズの領域がいつでも
新しいデータの受け取りに使用することができる状態に
保持され、新しいデータの受け取りに先だってキャッシ
ュ・メモリ内に保持される他のデータを廃棄する必要は
ない。使用可能な領域を確保するためにキャッシュ・デ
ータを廃棄する方法又はアルゴリズムとしては、本発明
では様々なものを用いることができる。この点に関し
て、本発明ではLRU(Least Recently Used)法など
のアルゴリズムを使用して領域を解放してもよい。
利点は、新しいデータをシークしてキャッシュ・メモリ
に読み込もうとしても使用可能な領域がない場合に発生
する、キャッシュ・メモリのデータのフラッシングに伴
う待ち時間による遅れを短縮することである。この利点
のトレードオフとして、本発明ではキャッシュ・サイズ
を実質的に縮小する。
ン・キャッシュであり、各ラインのデータ・サイズは6
4バイトである。
本発明を開示された明確な形式に限定するものでもな
く、修正や変更が可能である。なお、検討した実施例
は、本発明の原理およびその実地の用途を最も良く例示
するよう選択され説明されたものである。これに対する
修正や変更は全てこの発明の範囲内に含まれる。この発
明は、例として次の実施形態を含む。
デバイスとの間にキャッシュ・メモリ(128)を配置
したコンピューティング・システムにおいてキャッシュ
・メモリ(128)内のデータを管理する方法であっ
て、(a)要求されたデータが現在キャッシュ・メモリ
(128)のデータ記憶領域(204)に存在しない状
態で、デバイスからシステム・メモリ(104)へのデ
ータ要求を識別する(302)ステップと、(b)シス
テム・メモリ(104)からデータ記憶領域(204)
にデータを読み出すステップと、(c)キャッシュ・メ
モリ(128)を評価して、少なくとも所定のサイズの
領域がデータ記憶領域(204)内で直ちに使用可能か
どうかを判断するステップと、(d)ステップ(c)に
対応して、少なくとも上記所定のサイズの領域が直ちに
使用可能ではない場合には、データ記憶領域(204)
内のデータの一部をフラッシュするステップと、(e)
(a)から(d)までのステップを繰り返すステップと
を含むデータ管理方法。
定の領域サイズをプログラム的に設定することができる
データ管理方法。
ラインの記憶領域が常に使用可能な状態であるように、
上記所定の領域サイズをプログラム的に設定することが
できるデータ管理方法。
記憶領域(204)が16ラインで構成され、各ライン
に64バイトのデータを有するデータ管理方法。
プ(b)が、メモリ内のデータをデータ記憶領域(20
4)内の使用可能なラインに直ちに読み出す(304)
ステップを含むデータ管理方法。
プ(b)が、システム・メモリからキャッシュ・メモリ
に読み出すデータのサイズを判断し、適切なキャッシュ
・ライン数のデータを自動的にキャッシュ・メモリに読
み出すステップを含むデータ管理方法。
バス(110)の間にキャッシュ・メモリ(128)を
配置し、システム・メモリ(104)からPCIバス
(110)に読み出すデータがキャッシュ・メモリ(1
28)を介して読み出されるコンピューティング・シス
テムにおいて、キャッシュ・メモリ内のデータを管理す
る方法であって、(a)データ記憶領域(204)内で
使用可能な領域のサイズを判断するステップと、(b)
使用可能な領域のサイズと所定の値とを比較する(30
8)ステップと、(c)使用可能な領域が上記所定の値
に満たない場合に、キャッシュ・メモリ(128)内の
少なくとも1ラインのデータをフラッシュする(31
0)ステップとを含むデータ管理方法。
断のステップが、アドレス・ディレクトリを監視して使
用可能な領域のサイズを判断するステップを備える方
法。
較のステップが、上記所定の値を指定するフラッシュ制
御レジスタを評価するステップ(220)を含むデータ
管理方法。
フラッシュ制御レジスタが指定する値をプログラム的に
変更することができるデータ管理方法。
で常に新しいデータの受け取りに使用することができる
領域が保証され、システム・バスとI/Oバスの間のデ
ータ伝達に伴う待ち時間が短縮される。
的な構成要素を示すブロック図である。
たI/Oキャッシュ・システムのブロック図である。
キャッシュを含むデバイスのブロック図である。
メモリ/メモリ・マネージャを示すブロック図である。
高位の機能上の動作を示すフローチャートである。
54 データ・ライン、56 ディレクトリ/インデ
ックス、104 システム・メモリ、106 CPU、
110 I/Oバス(PCIバス)、116
周波数境界、 120 データ記憶領域、122
アドレス記憶領域、124,126 妥当性/ステー
タス回路、128キャッシュ・メモリ、130,14
0,142 同期回路、132,134,136 フリ
ップフロップ、152,154 ステート・マシン、1
62,164,166、168 比較回路(コンパレー
タ)、202 メモリ・マネージャ、204 メモリ領
域、 206 ディレクトリ/インデックス、20
8 フラッシュ制御レジスタ(キャッシュ制御レジス
タ)
Claims (1)
- 【請求項1】システム・メモリと要求元デバイスとの間
にキャッシュ・メモリを配置したコンピューティング・
システムにおいてキャッシュ・メモリ内のデータを管理
する方法であって、 (a)要求されたデータが現在キャッシュ・メモリのデ
ータ記憶領域に存在しない状態で、デバイスからシステ
ム・メモリへのデータ要求を識別するステップと、 (b)システム・メモリからデータ記憶領域にデータを
読み出すステップと、 (c)キャッシュ・メモリを評価して、少なくとも所定
のサイズの領域がデータ記憶領域内で直ちに使用可能か
どうかを判断するステップと、 (d)ステップ(c)に対応して、少なくとも上記所定
のサイズの領域が直ちに使用可能ではない場合には、デ
ータ記憶領域内のデータの一部をフラッシュするステッ
プと、 (e)(a)から(d)までのステップを繰り返すステ
ップと、 を含むデータ管理方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/232,194 US6295582B1 (en) | 1999-01-15 | 1999-01-15 | System and method for managing data in an asynchronous I/O cache memory to maintain a predetermined amount of storage space that is readily available |
US09/232194 | 1999-01-15 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2000250813A true JP2000250813A (ja) | 2000-09-14 |
Family
ID=22872212
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000002085A Pending JP2000250813A (ja) | 1999-01-15 | 2000-01-11 | I/oキャッシュ・メモリにおけるデータ管理方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US6295582B1 (ja) |
JP (1) | JP2000250813A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2015036959A (ja) * | 2013-08-16 | 2015-02-23 | 富士通株式会社 | キャッシュメモリ制御プログラム,キャッシュメモリを内蔵するプロセッサ及びキャッシュメモリ制御方法 |
JP2015060376A (ja) * | 2013-09-18 | 2015-03-30 | 富士通株式会社 | キャッシュメモリ制御プログラム,キャッシュメモリを内蔵するプロセッサ及びキャッシュメモリ制御方法 |
Families Citing this family (44)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7000078B1 (en) * | 1999-10-01 | 2006-02-14 | Stmicroelectronics Ltd. | System and method for maintaining cache coherency in a shared memory system |
US6694490B2 (en) * | 2002-07-10 | 2004-02-17 | Hewlett-Packard Development Company, L.P. | DIMM and method for producing a DIMM |
US6574713B1 (en) * | 2000-10-10 | 2003-06-03 | Sun Microsystems, Inc. | Heuristic for identifying loads guaranteed to hit in processor cache |
US20020144037A1 (en) * | 2001-03-29 | 2002-10-03 | Bennett Joseph A. | Data fetching mechanism and method for fetching data |
JP2002366433A (ja) * | 2001-06-11 | 2002-12-20 | Nec Microsystems Ltd | キャッシュメモリ制御装置およびプロセッサ |
US7089362B2 (en) * | 2001-12-27 | 2006-08-08 | Intel Corporation | Cache memory eviction policy for combining write transactions |
US7302455B1 (en) * | 2002-02-26 | 2007-11-27 | At&T Bls Intellectual Property, Inc. | System and method for reliably purging statistical records |
US7277399B1 (en) * | 2002-04-08 | 2007-10-02 | Cisco Technology, Inc. | Hardware-based route cache using prefix length |
US7043606B2 (en) * | 2002-10-01 | 2006-05-09 | America Online, Inc. | Automatic browser web cache resizing system |
US6978349B1 (en) | 2003-01-09 | 2005-12-20 | Hewlett-Packard Development Company, L.P. | Adaptive cache memory management |
US7039785B2 (en) | 2004-02-24 | 2006-05-02 | Hitachi, Ltd. | Method and apparatus for increasing an amount of memory on demand when monitoring remote mirroring performance |
GB0414151D0 (en) * | 2004-06-24 | 2004-07-28 | Ibm | Involving a secondary storage system in a data transfer decision |
US7589738B2 (en) * | 2004-07-14 | 2009-09-15 | Integrated Device Technology, Inc. | Cache memory management system and method |
US7418560B2 (en) * | 2004-09-23 | 2008-08-26 | Sap Ag | Centralized cache storage for runtime systems |
US7590803B2 (en) * | 2004-09-23 | 2009-09-15 | Sap Ag | Cache eviction |
US7580915B2 (en) | 2004-12-14 | 2009-08-25 | Sap Ag | Socket-like communication API for C |
US7600217B2 (en) | 2004-12-14 | 2009-10-06 | Sap Ag | Socket-like communication API for Java |
US7593930B2 (en) | 2004-12-14 | 2009-09-22 | Sap Ag | Fast channel architecture |
US20060143398A1 (en) * | 2004-12-23 | 2006-06-29 | Stefan Rau | Method and apparatus for least recently used (LRU) software cache |
US7313656B1 (en) * | 2004-12-27 | 2007-12-25 | Emc Corporation | Pre-fetch prediction method for disk drives |
US20060143256A1 (en) | 2004-12-28 | 2006-06-29 | Galin Galchev | Cache region concept |
US7451275B2 (en) * | 2004-12-28 | 2008-11-11 | Sap Ag | Programming models for storage plug-ins |
US7437516B2 (en) * | 2004-12-28 | 2008-10-14 | Sap Ag | Programming models for eviction policies |
US7523263B2 (en) * | 2004-12-28 | 2009-04-21 | Michael Wintergerst | Storage plug-in based on shared closures |
US7539821B2 (en) * | 2004-12-28 | 2009-05-26 | Sap Ag | First in first out eviction implementation |
US7493449B2 (en) * | 2004-12-28 | 2009-02-17 | Sap Ag | Storage plug-in based on hashmaps |
US7694065B2 (en) | 2004-12-28 | 2010-04-06 | Sap Ag | Distributed cache architecture |
US8204931B2 (en) | 2004-12-28 | 2012-06-19 | Sap Ag | Session management within a multi-tiered enterprise network |
US7552153B2 (en) | 2004-12-28 | 2009-06-23 | Sap Ag | Virtual machine monitoring using shared memory |
US7971001B2 (en) * | 2004-12-28 | 2011-06-28 | Sap Ag | Least recently used eviction implementation |
US7552284B2 (en) * | 2004-12-28 | 2009-06-23 | Sap Ag | Least frequently used eviction implementation |
US7512737B2 (en) * | 2004-12-28 | 2009-03-31 | Sap Ag | Size based eviction implementation |
US7386684B2 (en) * | 2005-03-29 | 2008-06-10 | International Business Machines Corporation | Method and apparatus for detecting a cache wrap condition |
US7581066B2 (en) * | 2005-04-29 | 2009-08-25 | Sap Ag | Cache isolation model |
US7831634B2 (en) | 2005-04-29 | 2010-11-09 | Sap Ag | Initializing a cache region using a generated cache region configuration structure |
US7966412B2 (en) | 2005-07-19 | 2011-06-21 | Sap Ag | System and method for a pluggable protocol handler |
US20070198754A1 (en) * | 2006-02-07 | 2007-08-23 | International Business Machines Corporation | Data transfer buffer control for performance |
US7624235B2 (en) * | 2006-11-30 | 2009-11-24 | Apple Inc. | Cache used both as cache and staging buffer |
CN102763139B (zh) * | 2010-02-23 | 2015-07-01 | 三菱电机株式会社 | 图像显示装置 |
US8924646B2 (en) * | 2010-10-07 | 2014-12-30 | Lsi Corporation | Methods for managing data movement and destaging data in a multi-level cache system utilizing threshold values and metadata |
US8868841B2 (en) * | 2012-09-04 | 2014-10-21 | Facebook, Inc. | Statistical cache promotion |
US10922228B1 (en) | 2015-03-31 | 2021-02-16 | EMC IP Holding Company LLC | Multiple location index |
US10210087B1 (en) | 2015-03-31 | 2019-02-19 | EMC IP Holding Company LLC | Reducing index operations in a cache |
KR102490104B1 (ko) | 2017-10-30 | 2023-01-19 | 삼성전자주식회사 | 데이터 보호를 사용하는 인-밴드 메모리에 액세스하기 위한 장치 및 방법 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0727494B2 (ja) | 1992-01-02 | 1995-03-29 | インターナショナル・ビジネス・マシーンズ・コーポレイション | キャッシュ・スヌープ/データ無効化機能を有するコンピュータ・システム |
US5325503A (en) | 1992-02-21 | 1994-06-28 | Compaq Computer Corporation | Cache memory system which snoops an operation to a first location in a cache line and does not snoop further operations to locations in the same line |
US5724549A (en) | 1992-04-06 | 1998-03-03 | Cyrix Corporation | Cache coherency without bus master arbitration signals |
US5664106A (en) * | 1993-06-04 | 1997-09-02 | Digital Equipment Corporation | Phase-space surface representation of server computer performance in a computer network |
JP3490742B2 (ja) | 1993-09-08 | 2004-01-26 | 松下電器産業株式会社 | メモリ管理装置 |
US5608878A (en) | 1994-10-03 | 1997-03-04 | International Business Machines Corporation | Dual latency status and coherency reporting for a multiprocessing system |
US5751993A (en) | 1995-09-05 | 1998-05-12 | Emc Corporation | Cache management system |
US5592432A (en) | 1995-09-05 | 1997-01-07 | Emc Corp | Cache management system using time stamping for replacement queue |
US5717884A (en) | 1996-02-02 | 1998-02-10 | Storage Technology Corporation | Method and apparatus for cache management |
US5809022A (en) | 1996-03-19 | 1998-09-15 | Lucent Technologies Inc. | Method and apparatus for converting synchronous narrowband signals into broadband asynchronous transfer mode signals |
US5893920A (en) * | 1996-09-30 | 1999-04-13 | International Business Machines Corporation | System and method for cache management in mobile user file systems |
US5895488A (en) * | 1997-02-24 | 1999-04-20 | Eccs, Inc. | Cache flushing methods and apparatus |
US5926834A (en) * | 1997-05-29 | 1999-07-20 | International Business Machines Corporation | Virtual data storage system with an overrun-resistant cache using an adaptive throttle based upon the amount of cache free space |
US6078994A (en) * | 1997-05-30 | 2000-06-20 | Oracle Corporation | System for maintaining a shared cache in a multi-threaded computer environment |
US6073215A (en) * | 1998-08-03 | 2000-06-06 | Motorola, Inc. | Data processing system having a data prefetch mechanism and method therefor |
-
1999
- 1999-01-15 US US09/232,194 patent/US6295582B1/en not_active Expired - Lifetime
-
2000
- 2000-01-11 JP JP2000002085A patent/JP2000250813A/ja active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2015036959A (ja) * | 2013-08-16 | 2015-02-23 | 富士通株式会社 | キャッシュメモリ制御プログラム,キャッシュメモリを内蔵するプロセッサ及びキャッシュメモリ制御方法 |
JP2015060376A (ja) * | 2013-09-18 | 2015-03-30 | 富士通株式会社 | キャッシュメモリ制御プログラム,キャッシュメモリを内蔵するプロセッサ及びキャッシュメモリ制御方法 |
Also Published As
Publication number | Publication date |
---|---|
US6295582B1 (en) | 2001-09-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2000250813A (ja) | I/oキャッシュ・メモリにおけるデータ管理方法 | |
EP1388065B1 (en) | Method and system for speculatively invalidating lines in a cache | |
EP2430551B1 (en) | Cache coherent support for flash in a memory hierarchy | |
US6542968B1 (en) | System and method for managing data in an I/O cache | |
KR100970229B1 (ko) | 원격 캐시 존재 정보를 저장하는 프로세서 캐시를 구비한 컴퓨터 시스템 | |
JP3067112B2 (ja) | 遅延プッシュをコピー・バック・データ・キャッシュに再ロードする方法 | |
US8782348B2 (en) | Microprocessor cache line evict array | |
US5561779A (en) | Processor board having a second level writeback cache system and a third level writethrough cache system which stores exclusive state information for use in a multiprocessor computer system | |
US7434007B2 (en) | Management of cache memories in a data processing apparatus | |
US20090132750A1 (en) | Cache memory system | |
US11816032B2 (en) | Cache size change | |
JP2008502069A (ja) | メモリ・キャッシュ制御装置及びそのためのコヒーレンシ動作を実行する方法 | |
US5551000A (en) | I/O cache with dual tag arrays | |
US20060179173A1 (en) | Method and system for cache utilization by prefetching for multiple DMA reads | |
CN110737407A (zh) | 一种支持混合写策略的数据缓冲存储器实现方法 | |
US7035981B1 (en) | Asynchronous input/output cache having reduced latency | |
CN113094297A (zh) | 一种支持混合写策略的数据缓冲存储器装置 | |
EP0470737A1 (en) | Cache memory operating method and structure |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20050624 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20050823 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20051116 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20051121 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060216 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20060307 |