JP3587591B2 - キャッシュ・ミスを制御する方法およびその計算機システム - Google Patents
キャッシュ・ミスを制御する方法およびその計算機システム Download PDFInfo
- Publication number
- JP3587591B2 JP3587591B2 JP18882695A JP18882695A JP3587591B2 JP 3587591 B2 JP3587591 B2 JP 3587591B2 JP 18882695 A JP18882695 A JP 18882695A JP 18882695 A JP18882695 A JP 18882695A JP 3587591 B2 JP3587591 B2 JP 3587591B2
- Authority
- JP
- Japan
- Prior art keywords
- cache
- level cache
- level
- line
- data
- 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
Images
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/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
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
【産業上の利用分野】
本願発明は、多レベル・キャッシュ・システムにおけるキャッシュ・ミスを処理する方法に関する。
【0002】
【従来の技術】
大部分の現代のコンピュータ・システムは、中央演算処理装置(CPU)とメイン・メモリとを含む。CPUが命令およびオペランドを復号し実行できる速度は、その命令およびオペランドをメイン・メモリからCPUへ送ることができる速度に依存する。多数のコンピュータ・システムは、CPUが命令およびオペランドをメイン・メモリから得るために必要な時間を短縮するために、CPUとメイン・メモリの間にキャッシュ・メモリを含む。
【0003】
キャッシュ・メモリとは、小容量の高速バッファ・メモリであり、CPUによって近い将来に使用されると考えられるメイン・メモリの内容の部分を一時的に保持するために使用される。キャッシュの主要な目的は、データ取出しの場合でも、あるいは命令取出しの場合でも、メモリ・アクセスを実行するのに必要な時間を短縮することである。キャッシュ・メモリに位置する情報には、メイン・メモリに位置する情報よりもずっと短い時間でアクセスすることができる。したがって、キャッシュ・メモリを含むCPUは、命令およびオペランドが取り出され、あるいは記憶されるのを待つために費やす必要のある時間がずっと短い。
【0004】
キャッシュ・メモリは、1つまたは複数のデータ・ワードの多数のブロック(ラインとも呼ぶ)から成る。各ブロックには、それがどのブロックまたはメイン・メモリのコピーであるかを一意に識別するアドレス・タグが関連付けられている。プロセッサがメモリを参照するたびに、アドレス・タグの比較が行われ、要求されたデータのコピーがキャッシュ中に存在するかどうかが調べられる。所望のメモリ・ブロックがキャッシュ中にない場合、そのブロックは、メイン・メモリから検索され、キャッシュに記憶され、プロセッサに供給される。新しいキャッシュ・ラインXをキャッシュに導入するとき、ターゲットのキャッシュ・エントリにすでに他のキャッシュ・ラインYがある場合、存在するそのキャッシュ・ラインYは「犠牲キャッシュ・ライン」になる。新しいキャッシュ・ラインXのための空間を設けるには、犠牲キャッシュ・ラインYをキャッシュから削除しなければならない。犠牲キャッシュ・ラインYが、キャッシュに導入されてから修正されている場合、「ダーティ」と呼ばれ、メイン・メモリに書き直さなければならない。犠牲キャッシュ・ラインYが修正されていない場合は、「クリーン」と呼ばれ、単に廃棄することができる。2レベル・キャッシュ・システムでは、「レベル1犠牲キャッシュ・ライン」と「レベル2犠牲キャッシュ・ライン」があってよい。
【0005】
CPUは、キャッシュを使用してメイン・メモリからデータを検索するだけでなく、データを直接メモリに書き込む代わりにキャッシュに書き込むこともできる。プロセッサがデータをメモリに書き込みたいとき、キャッシュはアドレス・タグの比較を行い、データを書き込むべきデータ・ブロックがキャッシュに存在するかどうかが調べられる。データ・ブロックがキャッシュに存在する場合、データはキャッシュ中のそのデータ・ブロックに書き込まれ、そのデータ・ブロックのデータ「ダーティ・ビット」がセットされる。ダーティ・ビットは、データ・ブロック中のデータが修正されており、したがって、そのデータ・ブロックをキャッシュから削除する前に、修正済みデータをメイン・メモリに書き直しておかなければならないことを示す。データを書き込むべきデータ・ブロックがキャッシュに存在しない場合、そのデータ・ブロックをキャッシュに取り込み、あるいは、データを直接メイン・メモリに書き込まなければならない。
【0006】
いくつかの応用例では、2つのキャッシュ・メモリが使用される。第1レベル・キャッシュ・メモリは通常、第2レベル・キャッシュ・メモリ中のデータのサブセットを有する。同様に、第2レベル・キャッシュ・メモリは通常、メイン・メモリ中のデータのサブセットを有する。一般に、第1レベル・キャッシュは、第2レベル・キャッシュと比べてサイズが小さい。第1レベル・キャッシュは、通常1プロセッサ・サイクルである高速アクセス時間を有する。第2レベル・キャッシュは、たとえば、2サイクルないし3サイクルのある程度低速のアクセス時間を有する。第2レベル・キャッシュ・ライン・サイズは、メモリ・アクセス・オーバヘッド(ライン・サイズが大きければ大きいほど向上する)と、使用されないデータを取り出すことによってサイクルの無駄にすることを避けることとの間の最適な折合いである。通常、第2レベル・キャッシュ・ライン・サイズは、2ワードないし16ワードである。第1レベル・キャッシュ・ライン・サイズは通常、1ワードから、第2レベル・キャッシュ用のキャッシュ・ラインのサイズまでの範囲である。
【0007】
アクセスされたデータは、第1レベル・キャッシュ・メモリで探索される。第1レベル・キャッシュ・メモリでミスがあった場合、アクセスされたデータは、第2レベル・キャッシュ・メモリで探索される。第2レベル・キャッシュ・メモリでミスがあった場合、データはメイン・メモリから取り出される。
【0008】
プロセッサ・システム用のある2レベル・キャッシュ構成では、第1レベル・キャッシュは、第2レベル・キャッシュの完全なサブセットである。第1レベル・キャッシュは、第2レベル・キャッシュよりも小規模であり、第2レベル・キャッシュよりもプロセッサに近い。第1レベル・キャッシュは、第2レベル・キャッシュよりも小規模であり、かつ第2レベル・キャッシュよりもプロセッサに近いため、一般に、第1レベル・キャッシュに伴う第2レベル・キャッシュやメモリよりもアクセス待ち時間が短いので改良された性能を提供する。
【0009】
通常の動作では、あるメモリ参照を満たすのに必要ないくつかの異なる動作がある。メモリ参照とは一般に、ロード命令または記憶命令である。まず、最も簡単で最も高速の参照は、第1レベル・キャッシュでヒットすることができる。ヒットは、所望のメモリ・アドレスのデータが、検査中のキャッシュ(第1レベル・キャッシュまたは第2レベル・キャッシュ)に存在するときとして定義されている。ミスは、所望のメモリ・アドレスのデータが、検査中のキャッシュ(第1レベル・キャッシュまたは第2レベル・キャッシュ)に存在しないメモリ参照として定義されている。第1レベル・キャッシュでヒットがあったとき、ゼロ・サイクル・ペナルティがあり、処理ペナルティなしで参照が完了する。
【0010】
次に高速のキャッシュは、第2レベル・キャッシュでヒットする第1レベル・キャッシュ・ミスである。この場合、単一の第1レベル・キャッシュ・ラインを第2レベル・キャッシュから得たデータで埋めるための動作シーケンスが実行される。続いて、データがプロセッサに供給され、あるいは、記憶が完了する。これは、中間速度動作であり、プロセッサは、メモリ参照が成し遂げられる間フリーズする。
【0011】
最も低速の動作は、メモリ参照が第1レベル・キャッシュでも第2レベル・キャッシュでもミスしたときのものである。この例では、関連するラインをメイン・メモリから第2レベル・キャッシュに導入するための長い動作シーケンスが開始される。このデータがメモリから返され第2レベル・キャッシュにコピーされると、第1レベル・キャッシュが再び参照され、その結果、今度は、第1レベル・キャッシュ・ミスが発生し、次に、第2レベル・キャッシュでヒットが発生する。これによって、第2レベル・キャッシュ・ラインの関連する部分が第1レベル・キャッシュに書き込まれ、続いて、要求されたデータがプロセッサに供給され、あるいは、記憶が完了する。
【0012】
1つの拡張は、第2レベル・キャッシュ・ラインが書き込まれるのと同時に、アドレスされた第1レベル・キャッシュ・ラインを埋めることである。これによって、第1レベル・キャッシュ・ミスのペナルティがなくなり、第2レベル・キャッシュ・ミスの性能ペナルティだけになる。マルチレベル・キャッシュ・システムに関する一般的な情報については、たとえば、J. L. Baer、W. H. Wang著「Multilevel Cache Hierarchies; Organizations, Protocols and Performances」(Journal of Parallel Distributed Computing、第6巻、1989年、451〜476ページ)、W. H. Wang、J. Baer、およびH. Levy著「Organization and Performance of a Two−Level Virtual−Real Cache Hierarchy」(Proceedings of the 16th Annual International Symposium on Computer Architecture、1989年、140〜148ページ)、J. L. Baer、W. H. Wang著「On the Inclusion Properties for Multi−Level Cache Hierarchies」(Proceedings of the 15th Annual International Symposium on Computer Architecture、1988年、73〜80ページ)を参照されたい。
【0013】
【発明が解決しようとする課題】
本願発明の目的は、単一のキャッシュ・ミスの処理中に将来のキャッシュ・ミスを処理するようにして、多レベル・キャッシュ・システムを含むコンピュータ・プロセッサでのメモリ参照の結果でおきるキャッシュ・ミス・ペナルティを統計的に減少させることである。
【0014】
【課題を解決するための手段】
本願発明の好ましい実施例によれば、計算機システムは、プロセッサと、メイン・メモリと、第1レベル・キャッシュと、第2レベル・キャッシュとを含む。第2レベル・キャッシュはデータ・ラインを含む。第1レベル・キャッシュは、第2レベル・キャッシュ内のデータ・ラインのデータ・ライン・フラグメントを含む。好ましい実施例では、第2レベル・キャッシュに記憶されるデータ・ラインのサイズは64バイト(16ワード)であり、第1レベル・キャッシュに記憶されるデータ・ライン・フラグメントのサイズは16バイト(4ワード)である。プロセッサがデータ・ワードにアクセスしようとしたことに応答して、キャッシュ制御装置が第1レベル・キャッシュでそのデータ・ワードを探索する。アクセスが試みられた結果、第1レベル・キャッシュ・ミスが発生すると、第2レベル・キャッシュでデータ・ワードが探索される。第2レベル・キャッシュ・ミスが発生すると、参照中のデータ・ワードを含む新しいデータ・ラインがメイン・メモリから取り出される。同時に、キャッシュ制御装置は、新しいメモリ・データ・ラインによってマップされる第1レベル・キャッシュ・エントリのうちのどれが無効であるかを識別する。
【0015】
好ましい実施例では、無効なエントリには、たとえば、パージ、フラッシュ、またはマルチプロセッサのスヌープによって以前に無効のマークが付けられた第1レベル・キャッシュ・エントリと、レベル2犠牲キャッシュ・ラインのキャッシュ・ライン・フラグメントを含んでいた第1レベル・キャッシュ内のエントリとが含まれる。レベル2キャッシュ・ラインとは、メイン・メモリから取り出された新しいデータ・ラインで入れ換えられる第2レベル・キャッシュ内のキャッシュ・ラインである。新しいデータ・ラインは、メイン・メモリから取り出された後、第2レベル・キャッシュに入れられ、レベル2犠牲キャッシュ・ラインと入れ換える。また、新しいデータ・ラインのできるだけ多くのデータ・ライン・フラグメントが、第1レベル・キャッシュ中の無効なエントリに入れられる。第1レベル・キャッシュに入れられた新しいデータ・ラインのデータ・ライン・フラグメントのうちの1つは、現在参照中のデータ・ワードを含む。
【0016】
【実施例】
図1は、本願発明の好ましい実施例による多レベル・キャッシュを含むプロセッサ・システムの概略ブロック図を示す。処理システムに対する命令を実行する中央演算処理装置(CPU)21が示されている。メイン・メモリ25は、処理システム用の記憶域を提供する。好ましい実施例では、各データ・ワードは4バイトを含む。2レベル・キャッシュ・システムは、第1レベル・キャッシュ24と第2レベル・キャッシュ23とを含む。
【0017】
好ましい実施例では、第1レベル・キャッシュ24は、キャッシュ・ライン・サイズが小さな4ワードである、小規模で高速の直接マップ・キャッシュである。第1レベル・キャッシュ24は、第2レベル・キャッシュ23のサブセットを含む。第1レベル・キャッシュ24内の有効な各エントリは、第2レベル・キャッシュ23内の有効なキャッシュ・ラインの4ワード・フラグメントを含む。好ましい実施例では、第1レベル・キャッシュ24から第2レベル・キャッシュへの書込みは行われない。すなわち、記憶命令に応答して、データを第1レベル・キャッシュ24に記憶することはできるが、第2レベル・キャッシュ23に書き込むことはできない。したがって、第1レベル・キャッシュ24は、第2レベル・キャッシュ23よりも新しいデータを有することができる。第2レベル・キャッシュは、キャッシュ・ライン・サイズがより大きな16ワードである、より大規模で低速の直接マップ・キャッシュである。
【0018】
キャッシュ制御論理機構22は、CPU21のために第1レベル・キャッシュ24および第2レベル・キャッシュ23にアクセスし、メモリ25と第1レベル・キャッシュ24と第2レベル・キャッシュ23の間のデータ転送の調和をとる。キャッシュ制御論理機構22とメモリ25の間のデータ・アクセスは、メモリ・データ線40を使用して実行される。CPU21は、アドレス線31および第1レベル・アドレス線37を使用してキャッシュ制御論理機構22および第1レベル・キャッシュ24にデータ・アドレスを送る。CPU21は、記憶データ線33を使用して、記憶すべきデータをキャッシュ制御論理機構22に送る。CPU21は、第1レベル・ロード・データ線32を介してロード・データを受け取る。
【0019】
CPU21は、アドレス線31および第2レベル・アドレス線34を使用してキャッシュ制御論理機構22および第2レベル・キャッシュ23にデータ・アドレスを送る。CPU21は、第2レベル・キャッシュ23から第2レベル・データ出力線35を介してロード・データを受け取る。第2レベル・キャッシュ23は、第2レベル・データ入力線36を介してデータを受け取る。第1レベル・キャッシュ24は、第1レベル・データ入力線39を介してデータを受け取る。第1レベル・キャッシュ24は、第1レベル・データ出力線38を介してキャッシュ制御論理機構22にデータを送る。
【0020】
図2、図3、図4、図5、および図6は、本願発明の好ましい実施例によるメモリ参照の結果として発生する、図1に示したプロセッサでのデータ・フローを示す。
【0021】
図2中の点線は、ロードのためのメモリ参照の結果、第1レベル・キャッシュ24でヒットが発生するときのデータ・フローを示す。図のように、CPU21は、アドレス線31上でキャッシュ制御論理機構22へアドレスを送り、キャッシュ制御機構22はそのアドレスを第1レベル・アドレス線37へ送り、さらに、第1レベル・キャッシュ24へ送る。第1レベル・キャッシュ24から読み取られたデータは、第1レベル・データ出力線38上でキャッシュ制御論理機構22へ送られ、第1レベル・ロード・データ線32上でCPU21へ送られ、ロード要求が完了する。
【0022】
図3中の点線は、記憶のためのメモリ参照の結果、第1レベル・キャッシュ24でヒットが発生するときのデータ・フローを示す。図のように、CPU21は、アドレス線31上でキャッシュ制御論理機構22へアドレスを送る。また、CPU21は、記憶データ線33上でキャッシュ制御論理機構22へ記憶データを送る。キャッシュ制御機構22は、第1レベル・アドレス線37上にアドレスを置き、さらに、そのアドレスを第1レベル・キャッシュ24上に置く。第1レベル・キャッシュ24は、第1レベル・キャッシュ24のそのアドレスにある現内容を第1レベル・データ出力線38上でキャッシュ制御論理機構22に返す。どんなタイプの記憶命令が関与するかに応じて、キャッシュ制御論理機構22は、第1レベル・キャッシュ24から返されたデータをCPU21からの記憶データと選択的にマージする。マージされたデータは、第1レベル・データ入力線39を使用して第1レベル・キャッシュ24に書き込まれ、記憶要求が完了する。
【0023】
図4中の点線は、記憶またはロードのためのメモリ参照の結果、第1レベル・キャッシュ24でクリーン・ミスが発生し、第2レベル・キャッシュ23でヒットが発生するときのデータ・フローを示す。クリーン・ミスが発生するのは、第1レベル・キャッシュ24でアクセスされたデータが、要求されたキャッシュ・ラインの一部ではなく、かつ修正されていないときであり、したがって、この修正済みデータを第2レベル・キャッシュ23に書き込むことも、あるいはメイン・メモリ25に書き込むこともなく、このデータを第1レベル・キャッシュ24から削除して、要求されたキャッシュ・ラインのための空間を設けることができる。アドレス・タグの比較によって、必要なデータ・ブロックが第1レベル・キャッシュ24にないことが示されると、第2レベル・キャッシュ23が検査される。第1レベル・キャッシュ24中の対応するデータ・ブロックがダーティではなく、第2レベル・キャッシュ23でヒットがあった場合、第1レベル・キャッシュ24中の対応するデータ・ブロックは単に、無効化され第2レベル・キャッシュ23から得たデータで上書きされる。CPU21は、第2レベル・キャッシュ23にアクセスするために、キャッシュ制御論理機構22へのアドレス線31をドライブし、キャッシュ制御論理機構22は第2レベル・アドレス線34をドライブする。これに応答して、第2レベル・キャッシュ23は、第2レベル・データ出力線35上でデータを返す。また、キャッシュ制御論理機構22は、第1レベル・アドレス線37上で第1レベル・キャッシュ24のアドレスをドライブする。第2レベル・キャッシュ23からのデータは次いで、第2レベル・データ出力線35および第1レベル・データ入力線39を使用して、キャッシュ制御論理機構22を介して第1レベル・キャッシュ24に書き込まれる。記憶命令の場合、キャッシュ制御論理機構22は、CPU21からのデータが第1レベル・キャッシュ24に書き込まれるとき、CPU21からの記憶データを前記データとマージする。ロード命令の場合、CPU21は、第2レベル・データ出力線35上で第2レベル・キャッシュ23から直接ロード・データを得る。
【0024】
図5および図6中の点線は、記憶またはロードのためのメモリ参照の結果、第1レベル・キャッシュ24でダーティ・ミスが発生し、第2レベル・キャッシュ23でヒットが発生するときのデータ・フローを示す。ダーティ・ミスが発生するのは、第1レベル・キャッシュ24中のアクセスされたデータが、要求されたキャッシュ・ラインの一部ではなく、かつ修正されているときであり、したがって、この修正済みデータを第2レベル・キャッシュ23またはメイン・メモリ25にも書き込まない限り、第1レベル・キャッシュ24からデータを削除することはできない。アドレス・タグの比較によって、必要なデータ・ブロックが第1レベル・キャッシュ24にないことが示されると、第2レベル・キャッシュ23が検査される。第1レベル・キャッシュ24中の対応するデータ・ブロックがダーティであり、第2レベル・キャッシュ23でヒットがあった場合、第1レベル・キャッシュ24中の対応するデータ・ブロックは第2レベル・キャッシュ23に書き込まれる。これを図5で示す。図5で、CPU21は、アドレス線31上でキャッシュ制御論理機構22へアドレスを送る。キャッシュ制御論理機構22は、第1レベル・アドレス線37上で第1レベル・キャッシュ24のアドレスをドライブする。またCPU21は、第2レベル・アドレス線34をドライブするようにしむける。第1レベル・キャッシュ24からのデータは次いで、第1レベル・データ出力線38および第2レベル・データ入力線36を使用して、キャッシュ制御論理機構22を介して第2レベル・キャッシュ23に書き込まれる。
【0025】
ダーティ・データの書直しが完了した後、第1レベル・キャッシュ24でのクリーン・ミスの場合と同様に参照が継続する。図6に示したように、CPU21は、第2レベル・キャッシュ23にアクセスするために、キャッシュ制御論理機構22へのアドレス線31をドライブし、キャッシュ制御論理機構22は、第2レベル・アドレス線34をドライブする。これに応答して、第2レベル・キャッシュは、第2レベル・データ出力線35上でデータを返す。キャッシュ制御論理機構22は、第1レベル・アドレス線37上で第1レベル・キャッシュ24のアドレスをドライブする。第2レベル・キャッシュ23からのデータは次いで、第2レベル・データ出力線35および第1レベル・データ入力線39を使用して、キャッシュ制御論理機構22を介して第1レベル・キャッシュ24に書き込まれる。記憶命令の場合、キャッシュ制御論理機構22は、CPU21からのデータが第1レベル・キャッシュ24に書き込まれるときに、CPU21からの記憶データを前記データとマージする。ロード命令の場合、CPU21は、第2レベル・データ出力線35上で第2レベル・キャッシュ23から直接ロード・データを得る。
【0026】
第1レベル・キャッシュ24と第2レベル・キャッシュ23の両方でミスがあったとき、データはメイン・メモリ25から導入しなければならない。第1レベル・キャッシュ24でダーティ・ミスがあった場合、上述のように、ダーティ・データは第2レベル・キャッシュ23に書き直される。第2レベル・キャッシュ23でダーティ・ミスがあり、すなわち、第2レベル犠牲キャッシュ・ラインがダーティであるとき、第2レベル・コピー出力動作を介してキャッシュ・ライン全体をメイン・メモリ25に書き直さなければならない。第2レベル犠牲キャッシュ・ラインとは、メイン・メモリ25から取り出された新しいデータ・ラインで置換される第2レベル・キャッシュ23内のキャッシュ・ラインである。第2レベル・コピー出力が実行される間、第2レベル犠牲キャッシュ・ラインの各部を保持していた第1レベル・キャッシュ・エントリまたは第2レベル・キャッシュ・エントリが無効化される。第2レベル・コピー出力動作が完了した後、メイン・メモリ25からデータが読み取られ、第2レベル・キャッシュ23に書き込まれる。
【0027】
以下でさらに説明するように、本願発明の好ましい実施例では、メイン・メモリ25からデータ・ラインが取り出されるとき、第1レベル・キャッシュ24中の要求された16バイト・ラインが埋められるだけでなく、第1レベル・キャッシュ24中の最大3つの他の第1レベル・キャッシュ・ラインも埋められる。これらの他の3つのキャッシュ・ラインは、現在参照されていないが、キャッシュ参照の統計的局所性のために、何らかの他のキャッシュ・ミスによって入れ換えられる前に将来の命令によって参照される確率が高い。
【0028】
図7、図8、図9、図10は、本願発明の好ましい実施例によって第2レベル・キャッシュでのミスの後に第1レベル・キャッシュの埋込みを処理する様々な方法を示す。
【0029】
第2レベル・キャッシュ23および第1レベル・キャッシュ24中のキャッシュ・ラインを図7に示す。第2レベル・キャッシュ23は、16個のキャッシュ・ラインを含む。図7は、16個のキャッシュ・ラインのうちのキャッシュ・ライン61、62、64、65、66、67を示す。各キャッシュ・ラインは、16個のデータ・ワードを含む。図7で、16個のワード・キャッシュ・ラインは、4つの4ワード・ライン・フラグメントとして構成されたものとして示されている。各キャッシュ・ラインごとに、第1列51は、キャッシュ・ライン・ワード0ないし3を含む。第2列52は、キャッシュ・ライン・ワード4ないし7を含む。第3列53は、キャッシュ・ライン・ワード8ないし11を含む。第4列54は、キャッシュ・ライン・ワード12ないし15を含む。第1レベル・キャッシュ24は、8つの4ワード・ライン・フラグメントを含む。各4ワード・ライン・フラグメントは、特定の第2レベル・キャッシュ・エントリにマップされる。図7は、ライン・フラグメント71、72、73、74、75、76、77、78を示す。好ましい実施例では、第2レベル・キャッシュ23および第1レベル・キャッシュ24は直接マップされる。各第2レベル・キャッシュ・ラインは、4つの4ワード・フラグメントとして示されている。第2レベル・キャッシュ・ラインの4つの4ワード・フラグメントはそれぞれ、特定の第1レベル・キャッシュ・エントリにマップされる。
【0030】
図7で、16ワード・キャッシュ・ラインAは、第2レベル・キャッシュ23の第2レベル・キャッシュ・エントリ61に存在するものとして示されている。16ワード・キャッシュ・ラインBは、第2レベル・キャッシュ23の第2レベル・キャッシュ・エントリ62に存在するものとして示されている。16ワード・キャッシュ・ラインIは、第2レベル・キャッシュ23の第2レベル・キャッシュ・エントリ64に存在するものとして示されている。16ワード・キャッシュ・ラインJは、第2レベル・キャッシュ23の第2レベル・キャッシュ・エントリ65に存在するものとして示されている。16ワード・キャッシュ・ラインKは、第2レベル・キャッシュ23の第2レベル・キャッシュ・エントリ66に存在するものとして示されている。16ワード・キャッシュ・ラインPは、第2レベル・キャッシュ23の第2レベル・キャッシュ・エントリ67に存在するものとして示されている。
【0031】
同様に、16ワード・キャッシュ・ラインAの最初の4つのワードは、第1レベル・キャッシュ24の第1レベル・キャッシュ・エントリ71に存在する。16ワード・キャッシュ・ラインKのワード8ないし11は、第1レベル・キャッシュ24の第1レベル・キャッシュ・エントリ73に存在する。16ワード・キャッシュ・ラインAの最後の4つのワードは、第1レベル・キャッシュ24の第1レベル・キャッシュ・エントリ74に存在する。16ワード・キャッシュ・ラインBの最初の4つのワードは、第1レベル・キャッシュ24の第1レベル・キャッシュ・エントリ75に存在する。16ワード・キャッシュ・ラインJのワード4ないし7は、第1レベル・キャッシュ24の第1レベル・キャッシュ・エントリ76に存在する。16ワード・キャッシュ・ラインJのワード8ないし11は、第1レベル・キャッシュ24の第1レベル・キャッシュ・エントリ77に存在する。16ワード・キャッシュ・ラインPの最後の4つのワードは、第1レベル・キャッシュ24の第1レベル・キャッシュ・エントリ78に存在する。
【0032】
第1レベル・キャッシュ24の第1レベル・キャッシュ・エントリ72中の見出しは、無効とマーク付けされている。キャッシュ・ラインは、パージ命令やフラッシュ命令やマルチプロセッサ・スヌープなどいくつかの手段を介して無効化することができる。
【0033】
第1レベル・キャッシュ24と第2レベル・キャッシュ23の両方に関してミスが発生すると、第2レベル・キャッシュ23に新しいラインが導入され、第1レベル・キャッシュ24に適当な4ワード・ライン・フラグメントが書き込まれる。
【0034】
たとえば、メイン・メモリ25に存在するが、第1レベル・キャッシュ24にも第2レベル・キャッシュ23にも存在しない、ラインQの第2ワードにCPU21がアクセスする必要があると仮定する。さらに、ラインQが、ラインAと同じ第1レベル・キャッシュ・エントリおよび第2レベル・キャッシュ・エントリにマップされると仮定する。
【0035】
ラインQを第2レベル・キャッシュ23に書き込み、適当な4ワード・フラグメントを第1レベル・キャッシュ24に書き込む、ある方法では、ラインAはまず、それがダーティであるときにメイン・メモリ25に書き直される。次に、ラインAの各部を保持するすべての第1レベル・キャッシュ・エントリおよび第2レベル・キャッシュ・エントリが無効化される。この場合、第2レベル・キャッシュ・エントリ61、第1レベル・キャッシュ・エントリ71、および第1レベル・キャッシュ・エントリ74が無効化される。次いで、ラインQが、メイン・メモリ25から導入され、第2レベル・キャッシュ23中の第2レベル・キャッシュ・エントリ61に書き込まれる。最後に、ラインQの第1の4ワード・フラグメントが、第2レベル・キャッシュ23から読み出され、第1レベル・キャッシュ24の第1レベル・キャッシュ・エントリ71に書き込まれる。この結果を図8に示す。
【0036】
上述の方法は、ラインQの適当な4ワード・フラグメントがメイン・メモリ25から第2レベル・キャッシュ23に導入されるとき、第1レベル・キャッシュ24に直接、前記フラグメントを入れることによって、改善することができる。これによって、ラインQの第1の4ワード・フラグメントを、第2レベル・キャッシュ23から読み出して第1レベル・キャッシュ24に書き込むことができるようにするために、ラインQが第2レベル・キャッシュ23に書き込まれるのを待つことが不要になる。多数のシステムでは、バイパス経路のために、追加データ経路論理機構が必要になる可能性がある。しかし、本発明の好ましい実施例では、キャッシュ制御論理機構22が、第1レベル・キャッシュ24と第2レベル・キャッシュ23の両方及び又はメイン・メモリ25のインタフェースとして働き、追加データ経路論理機構を不要にする。
【0037】
上述の方法に対する追加改良では、キャッシュ制御装置22は、ラインAが上書きされることによって無効化された第1レベル・キャッシュ・エントリを記憶することができる。メイン・メモリ25からラインQが導入されると、4ワード・フラグメントが、第1レベル・キャッシュ24の第1レベル・キャッシュ・エントリ71および第1レベル・キャッシュ・エントリ74に書き込まれる。この結果を図9に示す。この改良の利点は、ラインQの第4の4ワード・フラグメントへの以後のアクセスが第1レベル・キャッシュ24でヒットすることである。ラインQの第2または第3の4ワード・フラグメントへの以後のアクセスでは依然として、第2レベル・キャッシュから第1レベル・キャッシュへの移動が必要である。
【0038】
本願発明の好ましい実施例では、上述の方法が再び改良される。この場合、どの第1レベル・キャッシュ・フラグメントがラインAフラグメントによって無効化されたか記憶されるだけでなく、すでに他の理由で無効化されている可能性がある関連する第1レベル・キャッシュ・エントリに関する検査も行われる。メイン・メモリ25からラインQが導入されると、ラインQのできるだけ多くの4ワード・フラグメントが第1レベル・キャッシュ24に書き込まれる。この結果は、図10で分かる。この「ブートレグ第1レベル・キャッシュ埋込み(bootleg first level cache fill)」は、図1に示した本願発明のシステム構成によって実現可能になる。メイン・メモリ25から第2レベル・キャッシュ23に書き込まれるデータがキャッシュ制御論理機構22を通過するため、データ経路ハードウェアを追加せずにこの好ましい方法を実施することができる。
【0039】
図11は、本願発明の好ましい実施例による方法の動作を要約したものである。この方法は、埋め込まれている位置が、要求されたものではない場合でも、必要に応じて第1レベル・キャッシュ・エントリを埋め込むことを含む。方法ステップ81で、通常の第1レベル・キャッシュ・ミスが発生していて、第2レベル・キャッシュ23が検査され、そして第2レベル・キャッシュ23でもミスが発生し、メイン・メモリ25の参照が開始される。方法ステップ82で、メモリからの新しいデータ・ラインが要求される。
【0040】
方法ステップ83で、新しいメモリ・データを待つ間に、様々な動作が実行され、必要な第1レベル・キャッシュ・エントリが無効化されて第1レベル・キャッシュで空間が設けられる。第1レベル犠牲キャッシュ・ラインがダーティである場合、データは第2レベル・キャッシュに書き直される。必要な第2レベル・キャッシュ・エントリと、第2レベル犠牲キャッシュ・ラインのフラグメントを含む第1レベル・キャッシュ・エントリも無効化され、第2レベル・キャッシュで空間が設けられる。第2レベル犠牲キャッシュ・ラインの一部がダーティである場合、データはメモリに書き直される。また、新しいメモリ・データによってマップされる無効な第1レベル・キャッシュ・エントリはすべて識別される。
【0041】
方法ステップ84で、メモリからの新しいデータ・ラインが第2レベル・キャッシュに書き込まれる間、データ・ラインのフラグメントは、上記ステップで判定された利用可能な第1レベル・キャッシュエントリのそれぞれに書き込まれる。この方法を使用すると、長い時間にわたって無効なままである第1レベル・キャッシュ・エントリはほとんどなくなる。最大3つの余分の第1レベル・キャッシュ・エントリを余分のペナルティなしで埋め込むことができる。
【0042】
以上で説明を終了するが、本願発明には、例として次のような実施態様が含まれる。
【0043】
(イ)プロセッサ(21)と、メイン・メモリ(25)と、第2レベルキャッシュ内のデータ・ラインのデータ・ライン・フラグメントを含む第1レベル・キャッシュ(24)と、データ・ラインを含む前記第2レベル・キャッシュ(23)とを含む計算機システムにおいて、プロセッサ(21)によるキャッシュ参照の結果、第1レベル・キャッシュ(24)のミスおよび第2レベル・キャッシュ(23)のミスが発生したときに実行される方法であって、(a)新しいデータ・ラインをメイン・メモリ(25)から取り出すステップと、(b)ステップ(a)と同時に、第1レベル・キャッシュ(24)中のどのエントリが無効であるかを識別するステップと、(c)新しいデータ・ラインがメイン・メモリ(25)から取り出されたとき、新しいデータ・ラインから得たできるだけ多くのデータ・ライン・フラグメントを第1レベル・キャッシュ(24)中の無効なエントリに入れるステップとを含むことを特徴とする新しいワード・フラグメントの書き込み方法。
【0044】
(ロ)上記ステップ(c)と同時に、新しいデータ・ラインが第2レベル・キャッシュ(23)に入れられ、第2レベル・キャッシュ(23)内の第2レベル犠牲キャッシュ・ラインと入れ換えるステップを更に含むことを特徴とする上記(イ)に記載の方法。
【0045】
(ハ)上記ステップ(b)で、無効とマーク付けされた第1レベル・キャッシュ(24)のエントリと、第2レベル・キャッシュ(23)内の第2レベル犠牲キャッシュ・ラインから得たキャッシュ・ライン・フラグメントを含む第1レベル・キャッシュ(24)内のエントリとが、無効なエントリに含まれることを特徴とする上記(イ)に記載の方法。
【0046】
(ニ)各第2レベル・キャッシュ(23)ラインが、16個のワードを含み、各第1レベル・キャッシュ(24)ライン・フラグメントが、4つのワードを含むことを特徴とする上記(イ)に記載の方法。
【0047】
(ホ)計算機システムにおいて、プロセッサ(21)と、メイン・メモリ(25)と、第2レベル・キャッシュ(23)内のデータ・ラインのデータ・ライン・フラグメントを含む第1レベル・キャッシュ(24)と、データ・ラインを含む前記第2レベル・キャッシュ(23)と、プロセッサ(21)、メイン・メモリ(25)、第1レベル・キャッシュ(24)、および第2レベル・キャッシュ(23)に結合されたキャッシュ制御装置(22)とを備え、キャッシュ制御装置(22)が、第1レベル・キャッシュ(24)のミスおよび第2レベル・キャッシュ(23)のミスが、プロセッサ(21)によるキャッシュ参照の結果に伴って発生したとき、新しいデータ・ラインをメイン・メモリ(25)から取り出す手段と、第1レベル・キャッシュ(24)中のどのエントリが無効であるかを識別する手段と、新しいデータ・ラインがメイン・メモリ(25)から得られたとき、新しいデータ・ラインから得たできるだけ多くのデータ・ライン・フラグメントを第1レベル・キャッシュ(24)中の無効なエントリに入れる手段とを備えることを特徴とする計算機システム。
【0048】
(ヘ)上記キャッシュ制御装置(22)がさらに、新しいデータ・ラインから得たできるだけ多くのデータ・ライン・フラグメントを第1レベル・キャッシュ(24)中の無効なエントリに入れるのと同時に、第2レベル・キャッシュ(23)内の第2レベル犠牲キャッシュ・ラインと入れ換える手段を備えることを特徴とする上記(ホ)に記載の計算機システム。
【0049】
(ト)上記識別手段によって識別されるエントリには、無効とマーク付けされた第1レベル・キャッシュ(24)のエントリと、第2レベル・キャッシュ(23)内の第2レベル犠牲キャッシュ・ラインから得たキャッシュ・ライン・フラグメントを含む第1レベル・キャッシュ(24)内のエントリとが含まれることを特徴とする上記(ホ)に記載の計算機システム。
【0050】
(チ)各第2レベル・キャッシュ(23)ラインが、16個のワードを含み、各第1レベル・キャッシュ(24)ライン・フラグメントが、4つのワードを含むことを特徴とする上記(ホ)に記載の計算機システム。
【0051】
(リ)プロセッサ(21)と、メイン・メモリ(25)と、第2レベルキャッシュ内のデータ・ラインのデータ・ライン・フラグメントを含む第1レベル・キャッシュ(24)と、データ・ラインを含む前記第2レベル・キャッシュ(23)とを含む計算機システムにおける新しいワード・フラグメントの書き込み方法において、(a)プロセッサ(21)がデータ・ワードにアクセスしようとしたことに応答して、第1レベル・キャッシュ(24)でそのデータ・ワードを探索するステップと、(b)ステップ(a)が実行された結果、第1レベル・キャッシュ(24)のミスが発生したとき、第2レベル・キャッシュ(23)でデータ・ワードを探索するステップと、(c)ステップ(b)が実行された結果、第2レベル・キャッシュ(23)のミスが発生したとき、(c.1)データ・ワードを含む新しいデータ・ラインをメイン・メモリ(25)から取り出すサブステップと、(c.2)サブステップ(c.1)と同時に、第1レベル・キャッシュ(24)中のどのエントリが無効であるかを識別するサブステップと、(c.3)データ・ワードを含む新しいデータ・ラインがメイン・メモリ(25)から取り出されたとき、新しいデータ・ラインから得たできるだけ多くのデータ・ライン・フラグメントを第1レベル・キャッシュ(24)中の無効なエントリに入れるサブステップとを含むことを特徴とする新しいワード・フラグメントの書き込み方法。
【0052】
(ヌ)上記サブステップ(c.3)と同時に、新しいデータ・ラインが第2レベル・キャッシュ(23)に入れられ、第2レベル・キャッシュ(23)内の第2レベル犠牲キャッシュ・ラインと入れ換えるサブステップを更に含むことを特徴とする上記(リ)に記載の方法。
【0053】
(ル)上記サブステップ(c.2)で、無効とマーク付けされた第1レベル・キャッシュ(24)のエントリと、第2レベル・キャッシュ(23)内の第2レベル犠牲キャッシュ・ラインから得たキャッシュ・ライン・フラグメントを含む第1レベル・キャッシュ(24)内のエントリとが、無効なエントリに含まれることを特徴とする上記(リ)に記載の方法。
【0054】
(ヲ)各第2レベル・キャッシュ(23)ラインが、16個のワードを含み、各第1レベル・キャッシュ(24)ライン・フラグメントが、4つのワードを含むことを特徴とする上記(リ)に記載の方法。
【0055】
前記の議論は、本願発明の典型的な方法および実施例を開示し説明したものに過ぎない。当業者には理解されるように、本願発明は、その趣旨または基本的な特徴から逸脱せずに他の特定の形で実施することができる。したがって、本願発明の開示は、特許請求の範囲に記載された本発明の範囲を例示するものであるが、制限するものではない。
【0056】
【発明の効果】
以上の説明で明らかなように、本願発明は、単一のキャッシュ・ミスの処理中に将来のキャッシュ・ミスを処理するようにして、多レベル・キャッシュ・システムを含むコンピュータ・プロセッサでのメモリ参照の結果でおきるキャッシュ・ミス・ペナルティを統計的に減少させることが可能となる。
【図面の簡単な説明】
【図1】本願発明の好ましい実施例による多レベル・キャッシュを含むプロセッサ・システムの概略ブロック図である。
【図2】本願発明の好ましい実施例よるメモリ参照の結果として発生する、図1に示したプロセッサでのデータ・フローを示す図である。
【図3】本願発明の好ましい実施例よるメモリ参照の結果として発生する、図1に示したプロセッサでのデータ・フローを示す図である。
【図4】本願発明の好ましい実施例よるメモリ参照の結果として発生する、図1に示したプロセッサでのデータ・フローを示す図である。
【図5】本願発明の好ましい実施例よるメモリ参照の結果として発生する、図1に示したプロセッサでのデータ・フローを示す図である。
【図6】本願発明の好ましい実施例よるメモリ参照の結果として発生する、図1に示したプロセッサでのデータ・フローを示す図である。
【図7】第2レベル・キャッシュでのミスの後の第1レベル・キャッシュの埋込みを処理する様々な方法を示す図である。
【図8】第2レベル・キャッシュでのミスの後の第1レベル・キャッシュの埋込みを処理する様々な方法を示す図である。
【図9】第2レベル・キャッシュでのミスの後の第1レベル・キャッシュの埋込みを処理する様々な方法を示す図である。
【図10】第2レベル・キャッシュでのミスの後の第1レベル・キャッシュの埋込みを処理する様々な方法を示す図である。
【図11】本願発明の好ましい実施例よって第2レベル・キャッシュでのミスの後に第1レベル・キャッシュを埋める方法を示すフロー・チャートである。
【符号の説明】
21 中央演算処理装置(CPU)
22 キャッシュ制御論理機構
23 第2レベル・キャッシュ
24 第1レベル・キャッシュ
25 メイン・メモリ
31 アドレス線
32 第1レベル・ロード・データ線
33 記憶データ線
34 第2レベル・アドレス線
35 第2レベル・データ出力線
36 第2レベル・データ入力線
37 第1レベル・アドレス線
38 第1レベル・データ出力線
39 第1レベル・データ入力線
40 メモリ・データ線
Claims (7)
- プロセッサと、メイン・メモリと、第1レベル・キャッシュおよび第2レベル・キャッシュとを備える計算機システムにおいてキャッシュのミスを制御する方法であって、該第2レベル・キャッシュはデータ・ラインを含み、該第1レベル・キャッシュは、該第2レベル・キャッシュ内におけるデータ・ラインのフラグメントを含んでおり、
前記プロセッサによるキャッシュ参照の結果、前記第1レベル・キャッシュのミスおよび前記第2レベル・キャッシュのミスが発生したとき、
(a)新しいデータ・ラインを前記メイン・メモリから取り出すステップと、
(b)前記ステップ(a)と同時に実行されるステップであって、前記第1レベル・キャッシュ内のどのエントリが無効であるかを判断するステップと、
(c)前記新しいデータ・ラインが前記メイン・メモリから取り出されたとき、該新しいデータ・ラインから得られるできるだけ多くのフラグメントを前記第1レベル・キャッシュ内の無効エントリに入れるステップと、
(d)前記ステップ(c)と同時に実行されるステップであって、前記新しいデータ・ラインを前記第2レベル・キャッシュに入れ、該第2レベル・キャッシュ内の第2レベル犠牲キャッシュ・ラインを入れ換えるステップと、
を含む、キャッシュ・ミスを制御する方法。 - 前記プロセッサがデータワードへのアクセスを試みることに応答して、前記第1レベル・キャッシュにおいて該データワードを検索するステップと、
前記第1レベル・キャッシュのミスが発生したとき、前記第2レベル・キャッシュにおいて前記データワードを検索するステップと、
前記第2レベル・キャッシュのミスが発生したとき、前記ステップ(a)から(c)を実行するステップと、を含み、
前記メイン・メモリからの前記新しいデータ・ラインは前記データワードを含んでおり、前記第1レベル・キャッシュに入れられた前記新しいデータ・ラインからのフラグメントが前記データワードを含む、請求項1に記載のキャッシュ・ミスを制御する方法。 - 前記ステップ(b)において、前記無効エントリには、前記第1レベル・キャッシュ内の無効とマークされたエントリと、前記第2レベル・キャッシュ内の前記第2レベル犠牲キャッシュ・ラインからのフラグメントを含む第1レベル・キャッシュ内のエントリとが含まれる、請求項1または請求項2に記載のキャッシュ・ミスを制御する方法。
- それぞれの第2レベル・キャッシュのデータ・ラインは64バイトを有し、第1レベル・キャッシュのデータ・ラインのフラグメントは16バイトを有する、請求項1から請求項3のいずれかに記載のキャッシュ・ミスを制御する方法。
- プロセッサと、メイン・メモリと、第1レベル・キャッシュと、第2レベル・キャッシュと、キャッシュ・コントローラとを備える計算機システムであって、
前記第2レベル・キャッシュはデータ・ラインを含み、前記第1レベル・キャッシュは、前記第2レベル・キャッシュ内におけるデータ・ラインのフラグメントを含んでおり、
前記キャッシュ・コントローラは、
第1レベル・キャッシュのミスおよび第2レベル・キャッシュのミスが、プロセッサによるキャッシュ参照から生じたとき、前記メイン・メモリから新しいデータ・ラインを取り出す取り出し手段と、
前記第1レベル・キャッシュにおけるどのエントリが無効であるかを判断する判断手段と、
前記新しいデータ・ラインが前記メイン・メモリから取り出されたとき、該新しいデータ・ラインから得られるできるだけ多くのフラグメントを第1レベル・キャッシュ内の無効エントリに入れる挿入手段と、を有しており、
前記キャッシュ・コントローラは、前記挿入手段が前記新しいデータ・ラインからのできるだけ多くのフラグメントを第1レベル・キャッシュ内の無効エントリに入れるとき、前記第2レベル・キャッシュ内の第2レベル犠牲キャッシュ・ラインを入れ換える入れ替え手段を有する、計算機システム。 - 前記判断手段によって無効と判断された無効エントリには、第1レベル・キャッシュ内の無効とマークされたエントリと、前記第2レベルキャッシュ内の前記第2レベル犠牲キャッシュ・ラインからのフラグメントを含む第1レベル・キャッシュ内のエントリとが含まれる、請求項5に記載の計算機システム。
- 第2レベル・キャッシュのデータ・ラインのそれぞれは64バイトを有し、第1レベルキャッシュのデータ・ラインのフラグメントのそれぞれは16バイトを有する、請求項5または請求項6に記載の計算機システム。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/286,121 US5577227A (en) | 1994-08-04 | 1994-08-04 | Method for decreasing penalty resulting from a cache miss in multi-level cache system |
US286,121 | 1994-08-04 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH0863393A JPH0863393A (ja) | 1996-03-08 |
JP3587591B2 true JP3587591B2 (ja) | 2004-11-10 |
Family
ID=23097171
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP18882695A Expired - Fee Related JP3587591B2 (ja) | 1994-08-04 | 1995-07-25 | キャッシュ・ミスを制御する方法およびその計算機システム |
Country Status (4)
Country | Link |
---|---|
US (1) | US5577227A (ja) |
EP (1) | EP0695996B1 (ja) |
JP (1) | JP3587591B2 (ja) |
DE (1) | DE69514165T2 (ja) |
Families Citing this family (49)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5809525A (en) * | 1993-09-17 | 1998-09-15 | International Business Machines Corporation | Multi-level computer cache system providing plural cache controllers associated with memory address ranges and having cache directories |
US5813031A (en) * | 1994-09-21 | 1998-09-22 | Industrial Technology Research Institute | Caching tag for a large scale cache computer memory system |
US5794243A (en) * | 1995-12-11 | 1998-08-11 | International Business Machines Corporation | Method and apparatus for executing a binary search in a data cache |
US5860095A (en) * | 1996-01-02 | 1999-01-12 | Hewlett-Packard Company | Conflict cache having cache miscounters for a computer memory system |
US5729712A (en) * | 1996-01-26 | 1998-03-17 | Unisys Corporation | Smart fill system for multiple cache network |
US6070233A (en) * | 1996-01-26 | 2000-05-30 | Unisys Corporation | Processor bus traffic optimization system for multi-level cache utilizing reflection status bit to indicate data inclusion in higher level cache |
US5781916A (en) * | 1996-03-25 | 1998-07-14 | Motorola, Inc. | Cache control circuitry and method therefor |
US5737749A (en) * | 1996-05-20 | 1998-04-07 | International Business Machines Corporation | Method and system for dynamically sharing cache capacity in a microprocessor |
US5829038A (en) * | 1996-06-20 | 1998-10-27 | Intel Corporation | Backward inquiry to lower level caches prior to the eviction of a modified line from a higher level cache in a microprocessor hierarchical cache structure |
US5802563A (en) * | 1996-07-01 | 1998-09-01 | Sun Microsystems, Inc. | Efficient storage of data in computer system with multiple cache levels |
US5802576A (en) * | 1996-07-01 | 1998-09-01 | Sun Microsystems, Inc. | Speculative cache snoop during DMA line update |
US5809526A (en) * | 1996-10-28 | 1998-09-15 | International Business Machines Corporation | Data processing system and method for selective invalidation of outdated lines in a second level memory in response to a memory request initiated by a store operation |
US6374330B1 (en) * | 1997-04-14 | 2002-04-16 | International Business Machines Corporation | Cache-coherency protocol with upstream undefined state |
US6105112A (en) * | 1997-04-14 | 2000-08-15 | International Business Machines Corporation | Dynamic folding of cache operations for multiple coherency-size systems |
US6175899B1 (en) * | 1997-05-19 | 2001-01-16 | International Business Machines Corporation | Method for providing virtual atomicity in multi processor environment having access to multilevel caches |
US6065099A (en) * | 1997-08-20 | 2000-05-16 | Cypress Semiconductor Corp. | System and method for updating the data stored in a cache memory attached to an input/output system |
US6000015A (en) * | 1997-09-16 | 1999-12-07 | Unisys Corporation | Processor bus traffic optimization system for multi-level cache utilizing reflection status bit to indicate data inclusion in a higher level cache |
US6073212A (en) * | 1997-09-30 | 2000-06-06 | Sun Microsystems, Inc. | Reducing bandwidth and areas needed for non-inclusive memory hierarchy by using dual tags |
US5909697A (en) * | 1997-09-30 | 1999-06-01 | Sun Microsystems, Inc. | Reducing cache misses by snarfing writebacks in non-inclusive memory systems |
US6202126B1 (en) * | 1997-10-24 | 2001-03-13 | Compaq Computer Corporation | Victimization of clean data blocks |
US6078992A (en) * | 1997-12-05 | 2000-06-20 | Intel Corporation | Dirty line cache |
US6216206B1 (en) * | 1997-12-16 | 2001-04-10 | Intel Corporation | Trace victim cache |
US6253291B1 (en) | 1998-02-13 | 2001-06-26 | Sun Microsystems, Inc. | Method and apparatus for relaxing the FIFO ordering constraint for memory accesses in a multi-processor asynchronous cache system |
US6237064B1 (en) * | 1998-02-23 | 2001-05-22 | Intel Corporation | Cache memory with reduced latency |
US6138208A (en) * | 1998-04-13 | 2000-10-24 | International Business Machines Corporation | Multiple level cache memory with overlapped L1 and L2 memory access |
US6401173B1 (en) * | 1999-01-26 | 2002-06-04 | Compaq Information Technologies Group, L.P. | Method and apparatus for optimizing bcache tag performance by inferring bcache tag state from internal processor state |
US6615235B1 (en) * | 1999-07-22 | 2003-09-02 | International Business Machines Corporation | Method and apparatus for cache coordination for multiple address spaces |
US6574710B1 (en) * | 2000-07-31 | 2003-06-03 | Hewlett-Packard Development Company, L.P. | Computer cache system with deferred invalidation |
JP2002366433A (ja) * | 2001-06-11 | 2002-12-20 | Nec Microsystems Ltd | キャッシュメモリ制御装置およびプロセッサ |
WO2003015450A1 (fr) * | 2001-08-08 | 2003-02-20 | Matsushita Electric Industrial Co., Ltd. | Appareil de commande de dispositifs et systeme de commande de dispositifs |
US20040083370A1 (en) * | 2002-09-13 | 2004-04-29 | Sun Microsystems, Inc., A Delaware Corporation | Rights maintenance in a rights locker system for digital content access control |
US20040059939A1 (en) * | 2002-09-13 | 2004-03-25 | Sun Microsystems, Inc., A Delaware Corporation | Controlled delivery of digital content in a system for digital content access control |
US7240365B2 (en) * | 2002-09-13 | 2007-07-03 | Sun Microsystems, Inc. | Repositing for digital content access control |
US7512972B2 (en) * | 2002-09-13 | 2009-03-31 | Sun Microsystems, Inc. | Synchronizing for digital content access control |
US20040054629A1 (en) * | 2002-09-13 | 2004-03-18 | Sun Microsystems, Inc., A Delaware Corporation | Provisioning for digital content access control |
US7363651B2 (en) * | 2002-09-13 | 2008-04-22 | Sun Microsystems, Inc. | System for digital content access control |
US7398557B2 (en) * | 2002-09-13 | 2008-07-08 | Sun Microsystems, Inc. | Accessing in a rights locker system for digital content access control |
US20040064719A1 (en) * | 2002-09-13 | 2004-04-01 | Sun Microsystems, Inc., A Delaware Corporation | Accessing for digital content access control |
US7913312B2 (en) * | 2002-09-13 | 2011-03-22 | Oracle America, Inc. | Embedded content requests in a rights locker system for digital content access control |
US7380280B2 (en) * | 2002-09-13 | 2008-05-27 | Sun Microsystems, Inc. | Rights locker for digital content access control |
US20040059913A1 (en) * | 2002-09-13 | 2004-03-25 | Sun Microsystems, Inc., A Delaware Corporation | Accessing for controlled delivery of digital content in a system for digital content access control |
US20040103251A1 (en) * | 2002-11-26 | 2004-05-27 | Mitchell Alsup | Microprocessor including a first level cache and a second level cache having different cache line sizes |
US7380047B2 (en) * | 2004-09-30 | 2008-05-27 | International Business Machines Corporation | Apparatus and method for filtering unused sub-blocks in cache memories |
US7373480B2 (en) * | 2004-11-18 | 2008-05-13 | Sun Microsystems, Inc. | Apparatus and method for determining stack distance of running software for estimating cache miss rates based upon contents of a hash table |
US7366871B2 (en) * | 2004-11-18 | 2008-04-29 | Sun Microsystems, Inc. | Apparatus and method for determining stack distance including spatial locality of running software for estimating cache miss rates based upon contents of a hash table |
JP5319049B2 (ja) * | 2005-08-22 | 2013-10-16 | 富士通セミコンダクター株式会社 | キャッシュシステム |
US9098296B2 (en) * | 2012-06-17 | 2015-08-04 | Freescale Semiconductor, Inc. | Method for reducing memory latency in processor |
US9244841B2 (en) * | 2012-12-31 | 2016-01-26 | Advanced Micro Devices, Inc. | Merging eviction and fill buffers for cache line transactions |
US11636040B2 (en) * | 2019-05-24 | 2023-04-25 | Texas Instruments Incorporated | Methods and apparatus for inflight data forwarding and invalidation of pending writes in store queue |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4464712A (en) * | 1981-07-06 | 1984-08-07 | International Business Machines Corporation | Second level cache replacement method and apparatus |
US4463420A (en) * | 1982-02-23 | 1984-07-31 | International Business Machines Corporation | Multiprocessor cache replacement under task control |
US4823259A (en) * | 1984-06-29 | 1989-04-18 | International Business Machines Corporation | High speed buffer store arrangement for quick wide transfer of data |
US4774654A (en) * | 1984-12-24 | 1988-09-27 | International Business Machines Corporation | Apparatus and method for prefetching subblocks from a low speed memory to a high speed memory of a memory hierarchy depending upon state of replacing bit in the low speed memory |
US4722047A (en) * | 1985-08-29 | 1988-01-26 | Ncr Corporation | Prefetch circuit and associated method for operation with a virtual command emulator |
US4972316A (en) * | 1987-03-30 | 1990-11-20 | International Business Machines Corporation | Method of handling disk sector errors in DASD cache |
US5214765A (en) * | 1989-08-31 | 1993-05-25 | Sun Microsystems, Inc. | Method and apparatus for executing floating point instructions utilizing complimentary floating point pipeline and multi-level caches |
US5307477A (en) * | 1989-12-01 | 1994-04-26 | Mips Computer Systems, Inc. | Two-level cache memory system |
US5136700A (en) * | 1989-12-22 | 1992-08-04 | Digital Equipment Corporation | Apparatus and method for reducing interference in two-level cache memories |
CA2043493C (en) * | 1990-10-05 | 1997-04-01 | Ricky C. Hetherington | Hierarchical integrated circuit cache memory |
US5249282A (en) * | 1990-11-21 | 1993-09-28 | Benchmarq Microelectronics, Inc. | Integrated cache memory system with primary and secondary cache memories |
US5361391A (en) * | 1992-06-22 | 1994-11-01 | Sun Microsystems, Inc. | Intelligent cache memory and prefetch method based on CPU data fetching characteristics |
-
1994
- 1994-08-04 US US08/286,121 patent/US5577227A/en not_active Expired - Lifetime
-
1995
- 1995-06-20 EP EP95304269A patent/EP0695996B1/en not_active Expired - Lifetime
- 1995-06-20 DE DE69514165T patent/DE69514165T2/de not_active Expired - Fee Related
- 1995-07-25 JP JP18882695A patent/JP3587591B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
DE69514165T2 (de) | 2000-05-31 |
DE69514165D1 (de) | 2000-02-03 |
EP0695996B1 (en) | 1999-12-29 |
JPH0863393A (ja) | 1996-03-08 |
US5577227A (en) | 1996-11-19 |
EP0695996A1 (en) | 1996-02-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3587591B2 (ja) | キャッシュ・ミスを制御する方法およびその計算機システム | |
US5603004A (en) | Method for decreasing time penalty resulting from a cache miss in a multi-level cache system | |
JP3016575B2 (ja) | 複数キャッシュ・メモリ・アクセス方法 | |
US9513904B2 (en) | Computer processor employing cache memory with per-byte valid bits | |
US7493452B2 (en) | Method to efficiently prefetch and batch compiler-assisted software cache accesses | |
JP3577331B2 (ja) | キャッシュメモリシステムおよびマイクロプロセッサ内の命令を操作するための方法 | |
US5353426A (en) | Cache miss buffer adapted to satisfy read requests to portions of a cache fill in progress without waiting for the cache fill to complete | |
US5915262A (en) | Cache system and method using tagged cache lines for matching cache strategy to I/O application | |
US7426626B2 (en) | TLB lock indicator | |
US6205521B1 (en) | Inclusion map for accelerated cache flush | |
US8195881B2 (en) | System, method and processor for accessing data after a translation lookaside buffer miss | |
US6711653B1 (en) | Flexible mechanism for enforcing coherency among caching structures | |
JPH0962572A (ja) | ストリーム・フィルタ装置及び方法 | |
JPS604494B2 (ja) | キヤツシユ記憶システム | |
US7330941B2 (en) | Global modified indicator to reduce power consumption on cache miss | |
US5926841A (en) | Segment descriptor cache for a processor | |
JP2006018841A (ja) | さまざまなメモリラインサイズに適応的に対応可能なキャッシュメモリシステムおよび方法 | |
WO1997034229A9 (en) | Segment descriptor cache for a processor | |
EP0173909B1 (en) | Look-aside buffer least recently used marker controller | |
US20050091459A1 (en) | Flexible mechanism for enforcing coherency among caching structures | |
JPH08314802A (ja) | キャッシュシステム、キャッシュメモリアドレスユニット、およびキャッシュメモリを動作させる方法 | |
US6934810B1 (en) | Delayed leaky write system and method for a cache memory | |
JP3971807B2 (ja) | キャッシュ記憶装置および方法 | |
JP3219196B2 (ja) | キャッシュデータアクセス方法及び装置 | |
US6766427B1 (en) | Method and apparatus for loading data from memory to a cache |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20040716 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20040803 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20040810 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080820 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090820 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100820 Year of fee payment: 6 |
|
LAPS | Cancellation because of no payment of annual fees |