JP4128878B2 - キャッシュ中のラインを投機的に無効にする方法とシステム - Google Patents
キャッシュ中のラインを投機的に無効にする方法とシステム Download PDFInfo
- Publication number
- JP4128878B2 JP4128878B2 JP2002589993A JP2002589993A JP4128878B2 JP 4128878 B2 JP4128878 B2 JP 4128878B2 JP 2002589993 A JP2002589993 A JP 2002589993A JP 2002589993 A JP2002589993 A JP 2002589993A JP 4128878 B2 JP4128878 B2 JP 4128878B2
- Authority
- JP
- Japan
- Prior art keywords
- cache
- line
- cache line
- speculative
- request
- 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
-
- 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/0891—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
-
- 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/50—Control mechanisms for virtual memory, cache or TLB
- G06F2212/507—Control mechanisms for virtual memory, cache or TLB using speculative control
Description
キャッシュは、メインメモリよりもさらに速くアクセスできる、小さなメモリである。コンピュータシステムは、多くの異なるレベルのキャッシュを有している。例えば、コンピュータシステムは、「レベル1(L1)」キャッシュおよび「レベル2(L2)」キャッシュを有している。これらのキャッシュは、マイクロプロセッサに一般的に統合される。
キャッシュは、メインシステムメモリに使用されているメモリ(一般的には、DRAM(dynamic random access memories)またはSDRAM(synchronous dynamic random access memories))よりも速いアクセス時間を有しているSRAM(static random access memories)のような、速いメモリセルから一般的に構成される。
SRAMはより高速であるが、記録密度が低く、またコストが高いので、メインシステムメモリに一般的には使用されない。
例えば、メインシステムメモリは、そのシステムのより遅いダイレクトアクセス記憶装置(例えば、ハードディスクドライブ)のキャッシュの役割をする。ハードドライブのような他のデバイスもまた、それらの性能を改良するための内部キャッシュを含んでいる。
同時に、L2キャッシュをミスする場合に備え、そのデータはメモリに対してもリクエストされる。
L2キャッシュがそのデータを格納している場合、L2キャッシュは、一般的にメインシステムメモリよりもはるかに高い速度、またより低いレイテンシで、マイクロプロセッサにそのデータを供給する。また、そのデータがメモリに対してリクエストされていた場合、そのリクエストはキャンセルされる。
データがL1キャッシュまたはL2キャッシュに入れられていない場合(「キャッシュミス」と呼ばれる)、そのデータは、メインシステムメモリまたは色々なタイプの大容量記憶装置(例えば、ハードディスクドライブ)から読み込まれる。
メモリにアクセスすることは、L1キャッシュからデータにアクセスすることに比べて、かなり多くのクロックサイクルを必要とする。同様に、データがメインシステムメモリにない場合に、大容量記憶装置のデータにアクセスすることはさらに多くのサイクルを必要とする。
コンピュータソフトウェアは、一般的に、あらかじめ実行されたコードが再実行されるループおよびブランチを有するので、この法則は有効である。
キャッシュに最近アクセスされた命令およびデータを格納することによって、マイクロプロセッサが命令とデータとがメインメモリから読み込まれるのを待つ必要がないので、システム性能が増加する。
さらに、命令またはデータのバイトがメモリから読まれる場合、その命令またはデータに続くバイトが追加して読み込まれ、キャッシュに入れられる。
メモリアクセスの局所性の原理は、これらの命令とデータバイトがプロセッサによって必要となる可能性が他のデータや命令よりも一般的に高いことを示す。
効率性を上げるために、キャッシュメモリのトランザクションは一般的に、単一のバイト毎というよりキャッシュライン毎に行われる。
メインメモリ中のキャッシュに入れることができるロケーションは、各々、キャッシュラインのセットのうちの1つに割り当てられる。その結果、各ロケーションは、その割り当てられたセット内のn個の場所のうちのどのキャッシュにでも入れることができる。
nウェイ・セットアソシアティブキャッシュの特別なケースの一つは、ダイレクトマップキャッシュである。n=1であるダイレクトマップキャッシュでは、各メモリロケーションがキャッシュ中の単なる一つのロケーションにマップされ得る。
nウェイ・セットアソシアティブキャッシュの他の特別なケースは、フルアソシアティブキャッシュである。このケースでは、n=mであり、mがそのキャッシュ中のラインの数である(つまり、ただ一つのセット」がある)。このケースでは、各メモリロケーションは、そのキャッシュ中の全てのロケーションにもマップされ得る。
ダイレクトマップキャッシュでは、検索速度はヒット率を犠牲にして最適化される。
これは、ヒットまたはミスの判断をすることが比較的容易である(メモリロケーションは、単に1つのキャッシュラインへマップするだけなので、そのラインだけをチェックする。)が、複数のメモリロケーションが一つのキャッシュラインへマップするので、高いヒット率を持つのは困難であるからである。
反対に、フルアソシアティブキャッシュは、検索速度を犠牲にする一方、ヒット率を最適化する。
すべてのメモリロケーションをすべてのキャッシュラインにマップすることを許可することは、ヒットする確率を改善するが、各メモリロケーションを探すためにすべてのキャッシュラインを検索しなければならないため、検索の複雑さを大幅に増加させる。
セットアソシアティブキャッシュは、フルアソシアティブキャッシュよりも速い検索速度を提供する一方、ダイレクトマップキャッシュよりも大きなアソシアティビティ(すなわち、より高いヒット率)を提供する意味で、二つのキャッシュ方式の折衷案である。
新たな命令およびデータのための場所を作るために、キャッシュ中の既存の命令およびデータを上書きするため、または無効にするためのポリシー決定は、設計者の関心が高い分野である。
したがって、n>1であるセットアソシアティブキャッシュ(すなわち、特定のメモリロケーションをキャッシュするためのラインの選択の余地がある)中で、どのキャッシュラインを新しいデータで満たすべきかを決定するための方法が必要である。
よくある解決策は、キャッシュされた各メモリロケーションに対するアクセスの相対的な順位をトラックし、次に、最も少ない使用頻度の命令またはデータを、新しい命令またはデータに取り替えるものである。
この解決策は、最近アクセスされたキャッシュラインが再びアクセスされる可能性があるという法則に基づく。他の解決策は、ランダムな置換およびFIFOテクニックを含む。
しかしながら、nウェイ・セットアソシアティブキャッシュ中の最低使用頻度(LRU)キャッシュラインを決定するための従来のアプローチは、LRUアルゴリズムをインプリメントするために、カウンタおよびnウェイ・マルチプレクサを含む相当量の複雑なハードウェアを必要とする。さらに、各キャッシュエントリのステータスビットは、各エントリの使用量をトラックする。
新しいエントリがセット中でなされる場合、ステータスビットはどのキャッシュラインの使用頻度が最低か、または無効であるかを決定するためにスキャンされる。最低使用頻度ラインまたは無効なラインはその後、新しいエントリに場所を空けるために追い出される。
従来のLRU置換アルゴリズムの欠点は、相当量のハードウェアとアルゴリズムをインプリメントするのに必要なステータスビットの時間を多く必要とするとともに、そのセットに無効なエントリがないかをスキャンするために時間とハードウェアが必要なことである。
しかしながら、キャッシュラインの無効(無効処理)は、多くの根本的な要因に依存する可能性がある。多くの状況では、エラーチェックがこれらの根本的な要因が正確だったかどうか断定するために行なわる。これらの要因が正確でない場合、その無効は誤りであるので行なわれるべきではない。
エラーチェックを完了するためには相当量の時間がかかることがあるため、無効リクエストがキャッシュコントローラによって実際に読み込まれるとき、その無効が誤っているかどうかに関する決定は不確定である。その結果、無効リクエストは、キャッシュコントローラが他のペンディング中のタスクに移行するのを防ぐために、エラーチェックが終わるまで待機することをキャッシュコントローラに要求することができる。
同時に、キャッシュラインの無効が誤っていることは稀であるため、エラーチェックが完了するのをキャッシュコントローラが待機する時間が無駄になることが多い。
キャッシュコントローラはまた、無効が誤っていて行なわれるべきでない稀な状況を処理するために、エラーチェックが完了するまで、投機的に無効にされたキャッシュラインが変更されるのを防ぐことができる。このように、後でその無効が誤っていた場合、投機的な無効をリバースする(覆す)ことができる。
一つの実施例では、コンピュータシステムは、プロセッサ、システムメモリ、キャッシュコントローラ、キャッシュおよびエラー検出ユニットを含む。
キャッシュは、プロセッサに接続され、多くのキャッシュライン記憶領域を含む。キャッシュコントローラは、第1キャッシュラインを無効にする第1リクエストを受け取るために接続される。第1リクエストの受け取りに応じ、キャッシュコントローラは投機的に第1キャッシュラインを無効にするように形成される。
後に、投機的な無効をリバースする必要があるときのために第1キャッシュラインを保存するため、第1キャッシュラインの無効が投機的でなくなるまで、キャッシュコントローラはさらに第1キャッシュライン記憶領域が変更されるのを防ぐように形成される。
エラー検出ユニットは、第1リクエストに対応する少なくとも1つのチェックを行なうように形成される。エラー検出ユニットは、例えばキャッシュコントローラ自体であり、そのチェックは、投機的な無効(例えば、より高いレベルのキャッシュからのフィルリクエストに応じた排他キャッシュでのヒット)に結びついた処理が第1キャッシュラインの状態において適切だったことを確かめるためのチェックを含む。エラー検出ユニットがチェックを行なってエラーを検出しなければ、第1キャッシュラインの無効は投機的でなくなる。
従って、投機的な無効をリバースすることは、第1キャッシュラインが再び有効なことを示すために再度有効ビットをトグルすることを含んでいてもよい。
さらに、いくつかの実施例では、キャッシュコントローラは第1キャッシュラインのデータまたはその状態に依存するリクエストを、第1キャッシュラインの無効が投機的でなくなるまで受け入れないように形成される。
このように、投機的な無効が投機的ではなくなるかリバースされるまで、これらのリクエストは遅延されることがある。
一般にキャッシュコントローラは、第1キャッシュラインの無効が投機的でなくなるまで、リクエストのタイプに基づく追加のリクエスト、または投機的に無効にされた第1キャッシュラインに依存するか、または投機的に無効にされた第1キャッシュラインを変更するリクエストを受け入れないように、形成される。
例えば、キャッシュコントローラは、追加のリクエスト(第1キャッシュラインをヒットするより高いレベルのキャッシュからのフィルリクエスト、第1キャッシュラインへのプローブ・リクエストまたはステートチェンジ・リクエスト、置換のために第1キャッシュラインを選択するより高いレベルのキャッシュからのコピーバック)を受け入れないように形成されてもよい。
キャッシュコントローラは、第1キャッシュラインのタグの一部と一致する追加のリクエストを受け入れないように形成することもできる。
投機的な無効がその後誤っていると決定された場合、キャッシュコントローラは、投機的な無効をリバースするとき、保存された投機的な無効置換事前状態を回復することができる。
この方法は、キャッシュのラインが無効にされる結果になるリクエストを受け入れるステップ、その無効が誤っているかどうか決定するチェックを開始するステップ、投機的にラインを無効にするステップを含む。
投機的にラインを無効にするステップは、そのチェックが完了するまで、ラインが無効であることを示すステップ、その後ラインが変更されるのを防ぐステップを含む。
この方法はさらに、上記チェックのうちの一つによってその無効が誤っていると決定された場合、ラインが再び有効であることを示すことによって投機的な無効をリバースするステップを含む。
この方法は、より高いレベルのキャッシュからのフィルリクエストを受け入れるステップ、フィルリクエストが排他キャッシュの中でヒットするか決定するステップ、そのフィルリクエストが誤って開始されたかどうかのチェックを開始するステップ、そして、フィルリクエストが排他キャッシュの中でヒットした場合、排他キャッシュからより高いレベルのキャッシュに第1キャッシュラインを供給すること、を含み得る。
第1キャッシュラインがより高いレベルのキャッシュに供給される場合、チェックがまだ完了していなければ、第1キャッシュラインは投機的に無効にされる。
投機的に無効にするステップは、第1キャッシュラインが無効であることを示すステップ、チェックが完成するまで第1キャッシュラインがその後変更されるのを防ぐステップを含んでいてもよい。
キャッシュコントローラは、投機的に第1キャッシュラインを無効にするように形成される。
投機的な無効が誤っていると検出された場合、キャッシュコントローラは、投機的な無効をリバースするように形成され得る。
キャッシュサブシステムはまた、その無効が投機的でなくなるまで、第1キャッシュラインが変更されるのを防ぐように形成された投機的無効コントローラを含んでいてもよい。
投機的な無効が誤っているかどうかを検出することは、所定のサイクル数を必要とすることがあり、それゆえ投機的な無効は、その所定のサイクル数の後にならないと投機的ではなくならない。
しかしながら、図面および詳細な説明は、発明を開示された特別の形式に制限するものではない。それどころか、本発明は添付の請求項によって定義されるような本発明の趣旨およびその範囲内にある変形例、均等物および代替物に及ぶ。
下記の図6および図7に示されるようなコンピュータシステムは、一般的にはキャッシュサブシステムを使用する。
一般的には、これらのキャッシュサブシステムは、プロセッサに統合されたL1キャッシュおよび統合されていないL2キャッシュを含む。
しかしながら、プロセス技術の進歩によって、半導体デバイスのより高い集積化が可能となるにつれて、マイクロプロセッサ設計者は、性能をより良くする方法として、現在、第2レベル(L2)のキャッシュをチップ上に含めることができる。
L2キャッシュの統合によって、信号ピンを通じて通信する必要がなくなるため、L1とL2のキャッシュ間の転送レイテンシおよび転送帯域幅が改良され得る。
従来、この大きなL1キャッシュは、通常はL1キャッシュと同一またはより大きい大きさであって、通常はL1キャッシュよりも大きいがシステムメモリよりは小さいレイテンシを有するL2キャッシュによって補完される。
理想的な統合的なL2キャッシュは、図1Aのベン図に示すように、L1キャッシュにあるすべてのラインはL2キャッシュにもある。対照的に、理想的な排他的なL2キャッシュでは、図1Bのベン図に示すように、L1キャッシュにあるラインはL2キャッシュにはない。
図1Aまたは図1Bに示すように、いくつかの実施例では、統合的なL2キャッシュおよび排他的なL2キャッシュの両方とも、システムメモリに関しては統合的であり得るため、「排他的な」L2キャッシュはL1キャッシュに関してのみ排他的である。
統合的でも排他的でもないキャッシュシステムでは、L2キャッシュに格納されるラインは、どのラインがL1キャッシュに格納されるかに依存しない。したがってまた、L1キャッシュ中のラインがL2キャッシュの中に存在するか否かに関しての保証はない。
L2キャッシュに変更されていないL1ヴィクティム(victim)をコピーバックする必要がないので、この転送数の減少が生じる。ヴィクティムは、再度使用される前に、メインメモリにライトバックされる(書き戻される)データブロックである。
例えば、L1キャッシュフィルが既存のラインの置換を必要とする場合、入ってくるラインに場所を空けるために、既存のラインまたはヴィクティムは、L1キャッシュから放出される。統合キャッシュでは、L1ヴィクティムのコピーは、既にL2キャッシュにある。
したがって、L1キャッシュで、L1ヴィクティムが変更されていない場合、同一のラインが既に存在するので、L2キャッシュにそのラインをコピーする必要はない。
オフチップL2キャッシュについては、L1キャッシュ中のラインがL2キャッシュにあることが保証されるため、L1からL2へのコピーバックする間に外部のL2タグ検査を行なう必要がないので、統合性もまた非常に重要である。さらに、L2キャッシュは、例えば、インラインのL2構成が使用される場合、L1キャッシュ用のスヌープフィルタとなる。
L1中のすべてのラインがL2にもあるので、図1Aに示すように、L1キャッシュとL2キャッシュをあわせた有効なキャッシュサイズは、L2キャッシュのサイズとなる。これが、一般的にL2キャッシュがL1キャッシュよりも大きい理由の一つである。
他の欠点は、統合性を維持する必要のためにキャッシュコントローラ設計がより複雑になることである。
例えば、潜在的なL2ヴィクティムが選択されている場合、統合キャッシュコントローラは、L2ヴィクティムがL1キャッシュに現在存在しないことを確かめるためにL1キャッシュをバックプルーブ(back-probe)しなければならない。
潜在的なL2ヴィクティムがL1キャッシュに存在する場合、統合性を維持するために別のヴィクティムを選択しなければならない。
代わりに、他の実施例では、潜在的なL2ヴィクティムがさらにL1キャッシュに存在する場合、統合性は、(別のL2ヴィクティムを選択するのではなく)L1キャッシュの対応するラインを無効にすることによって維持される。
例えば、L1ヴィクティムは、変更されたかどうかにかかわらず、メモリアクセスの局所性の原理に従って、L2キャッシュにコピーされるので、L1からL2へのデータ転送の数は増加することがある。
L1ヴィクティムは、L2キャッシュ中の他のどのラインよりも使用頻度が高い可能性があるので、L2キャッシュにL1ヴィクティムを格納することにより、メモリアクセスの局所性の原理を満足させ得る。
いくつかの例では、増加したL1からL2へのトラヒックは、L1とL2のキャッシュ間の通信リンクに依存して、統合キャッシュをより望ましくすることができる。
例えば、グラフィックスシステムまたはハードディスクドライブと共に使用されるマルチレベルキャッシュサブシステムを設計することは有用である。
これらの実施例では、統合キャッシュに必要とされる付加的なキャッシュメモリの量と同じ量のキャッシュメモリを必要とすることなく、キャッシュサブシステムの有効なサイズを増加させるために排他キャッシュを使用することは望ましい。
いくつかの実施例では、排他キャッシュは、より高いレベルのキャッシュとしてそれが同じ基板に統合されていないとしても、実用的な設計選択である。
実行コア409は、キャッシュサブシステムコントローラ419にアドレスバス411上のアドレスを提示することによって、データを要求する。そのアドレスは、仮想アドレスであってもよい。
この例では、同じキャッシュサブシステムコントローラ419がL1キャッシュおよびL2キャッシュの両方を制御しているが、個別のL1コントローラおよびL2コントローラを他の実施例として使用してもよい。L2キャッシュ423は、統合的、排他的、またはそのどちらでもないものとすることができる。
いくつかの実施例では、L1キャッシュ417は、線形に、または仮想的にアドレスされ得る。したがって、実行コア409から受け取ったアドレスが仮想アドレスである場合、L1キャッシュ417にそれを提供する前にアドレスを翻訳する必要はない。
対照的に、L2キャッシュ423は、いくつかの実施例で物理的にアドレスされ得る。したがって、L1キャッシュ417にミスが生じた場合、仮想アドレスはL2キャッシュ423への提供の前に翻訳される必要がある。
他の実施例では、両方のキャッシュは同じように(例えば、仮想的にまたは物理的に)アドレスされ得る。
L1キャッシュ417中のリクエストされたラインをフィルするために、L1ヴィクティムが作成され、L2キャッシュ423にコピーバックされ得る(L2キャッシュ423が排他的である場合、L1ヴィクティムがクリーンであるか変更されるかどうかに関わらず、またはL2キャッシュ423が統合的である場合、L1ヴィクティムが変更されるかどうかに関わらず)。
L2キャッシュ423が排他的な場合、このコピーバックは、L2ラインの立ち退きを要求することもある。したがって、L2ヴィクティムが作成される可能性があると共に、ヴィクティムが変更される場合、メモリ425にライトバックされ得る。
L2キャッシュ423が排他的な実施例では、L1キャッシュとL2キャッシュの両方のキャッシュは、一つまたはそれ以上のヴィクティムバッファ421を共有し得る。ヴィクティムバッファ421は、それらが排他的なL2キャッシュ423(それらがL1ヴィクティムである場合)または、システムメモリ425(それらが変更済のL2ヴィクティムである場合)にコピーバックされるヴィクティムラインをバッファリングする。
そのL1リクエストがL2排他キャッシュ423でヒットすれば、排他性を維持することに関連する理由によって、ヒットラインを有効にしておくのではなく、無効にすることが望ましい。たとえば、ラインが無効にされれば、キャッシュサブシステム407にはそのラインのコピーが一つだけある。
このことは、ある瞬間にそのラインのどのコピーがより新しいかをトラックする必要がないので、キャッシュサブシステム407のための制御ロジックを非常に単純化し得る。
さらに、ラインを無効にすることは、排他キャッシュシステムによって提示されたより大きな有効なキャッシュサイズが実現されることを可能にして、L2キャッシュ423中の場所を解放する。
しかしながら、ラインが無効にされる前に、無効に結びつくオペレーション(例えば、L2キャッシュへのフィルリクエストを生成するL1キャッシュのミス)が誤って行なわれたかどうか断定するためのいくつかのチェックを行うことができる。そのチェックによってエラーが露呈する場合、そのオペレーションをキャンセルすると共に/または、後で再試行することができる。
このようにして、これらのチェックが無効を引き起こす条件が誤っていないことを示す場合にのみ、無効化が実行される。
排他キャッシュでの無効のように、これらのチェックは、無効にする命令が誤っていたかどうかを断定する様々なチェックに結局依存する。
例えば、命令がアウトオブオーダー(out of order)で実行されている場合、ある命令は分岐予測の結果、フェッチされることがある。
この分岐予測が正しくないことが判明した場合、フェッチされた命令の実行は取り消される必要があると共に/または、フェッチされた命令の実行の影響はリバースされる必要がある。
あるいはまた、非優先モード中でアウトオブオーダーで実行される命令は、優先命令であり得る。
これらの命令のうちの一つが、キャッシュから実際にラインをフラッシュせずに、キャッシュラインまたはブロックを無効にする命令であり、その命令がL1キャッシュ中のラインを無効にする場合、さらに統合的なL2キャッシュ中のそのラインのコピーを無効にすることは望ましい。
しかしながら、あるチェックが、後に分岐予測の誤りまたは優先違反を発見した場合、一つの例外が生成され得る。また、例外を生成する命令に起因する無効がリバースされる必要がある。
このように、キャッシュの無効は例外チェックに依存する。
例えば、リクエストされたデータラインの変更済のコピーは、バッファ(例えば、より高いレベルのキャッシュからの書込みバッファあるいはヴィクティムバッファ)に格納される。
この変更済のコピーは、下位レベルのキャッシュに格納されたコピーよりも最近に変更されている可能性がある。よって、そのようなコピーが発見された場合、リクエストしているデバイスがリクエストされたデータの最も直近の変更済のコピーを受け取るように、下位レベルキャッシュへのフィルリクエストは取り消される。
これらの異なる仮想アドレス(すなわち、エイリアス)は、仮想アドレスキャッシュ中の複数の場所にキャッシュされる。
例えば、それが異なるキャッシュラインおよび異なる仮想ページへマップする二つまたは二つ以上の異なる仮想アドレスにマップする場合、単一の物理ページからのデータは、仮想アドレスキャッシュ内の複数の場所に、潜在的にキャッシュされる。
その結果、一つの仮想アドレスを使用して、あるラインをリクエストすることは、たとえヒットを生成する可能性のある異なるエイリアスを使用して同じラインをリクエストしたとしても、ミスを生成する可能性がある。
エイリアスチェックは、仮想アドレスキャッシュ中のエイリアスされたラインに明白なミスが実際にヒットしたことを検出することができる。
例えば、一実施例では、仮想アドレスされたL1キャッシュは、独立した命令およびデータキャッシュを含む。
同じデータのコピーが命令とデータキャッシュの両方に同時に存在するように、L1キャッシュが形成される。L1コントローラは、データキャッシュ中のL1ヴィクティムを選択する場合に、エイリアスされたコピーをチェックするようには形成されない可能性がある。
その結果、L1ヴィクティムは、たとえそのラインのエイリアスされたコピーが、命令キャッシュ(あるいはヴィクティムがその命令キャッシュから選択された場合のデータキャッシュ)にまだ存在していても、排他的なL2キャッシュにコピーバックされる。
その結果、エイリアスチェックが完了する前に、そのデータのためのその後のフィルリクエストはL1でミスする可能性があるが、L2でヒットする可能性がある。
エイリアスチェックによってL1キャッシュのエイリアスされたコピーを発見されるので、そのラインはL2キャッシュ中で無効にされるべきではない。
したがって、以上のような実施例では、排他キャッシュ中の無効は、エイリアスチェックの結果に依存する。
ライン上であるオペレーションを行なうことが許容できるかどうかは、そのラインの状態による。
例えば、L1命令キャッシュからのフィルリクエストが、L2キャッシュ中の変更済のラインにヒットする場合、変更済のL2ラインがメモリに書き出された後まで、フィルリクエストに対応することは適切ではない(例えば、命令キャッシュがキャッシュコヒーレンシの状態を格納しない場合、そのような制限が使用されてもよい。)。
したがって、あるチェックは、特別のアクセスが、そのラインの現状を考慮に入れて、適切かどうか決めることを含んでいる。
同時にこれらの無効は、完了までに比較的長い時間を要する様々なチェックの結果によってリバースされ得る。
チェックが完了する後までその無効を遅らせるとすると、キャッシュは、チェック待ちに不適当な時間を費やす可能性がある。
キャッシュコントローラが、チェックが完了するまでそのラインを無効にするのを待機する場合、キャッシュは他のオペレーションを行うことができず、それゆえこの遅延は、キャッシュ性能に悪い影響を与える。
あるいはまた、チェックが完成する前に、キャッシュコントローラが無効を実行する場合、その無効がその後誤っていることが明らかになった場合、その無効にされたラインを回復する方法はない。
その結果、チェックを行うことがキャッシュサブシステムの精度を改良するが、この改良された精度は、性能を犠牲にして実現される。
図2で示されるようなキャッシュサブシステムの性能を改善するために、リクエストの検査が完了していなくても、キャッシュコントローラは命令またはリクエストに応じてキャッシュラインを投機的に無効にするように形成される。
例えば、下位レベルの排他キャッシュのアクセスレイテンシを最小限にするために、ミスがより高いレベルのキャッシュに検出されるとすぐに、フィルリクエスト(このリクエストが排他キャッシュの中でヒットする場合、排他キャッシュのラインを最終的に無効にする。)は、下位レベルの排他キャッシュコントローラへ送られる。
これはエイリアシングおよび、オーダリング要求のような様々なチェックが行なわれる前に、下位レベルの排他キャッシュコントローラへリクエストを送信することを含んでいる。これらのチェックは、完了するまでいくつかのサイクルを要するが、それらが実際に誤っていることは稀である。
したがって、チェックが完了する前に投機的にキャッシュラインを無効にすることは、同時に不要な遅延を回避する一方、一般的に正確な結果を生む。
できる限りより良い効率を提供することに加えて、投機的な無効を行なうためにキャッシュコントローラを形成することに起因し得る利益の一つは、より良いリソースの使用量効率の向上である。
例えば、排他キャッシュコントローラは、各コマンドを別々に実行しなければならない代わりに、単一のコマンドとしてタグ検査および投機的な無効を実行することができる。
例えば、命令キャッシュからのフィルリクエストが排他的なL2キャッシュの中でヒットする場合、そのリクエストは、L2キャッシュ中のヒットラインが変更済の状態である場合、取り消される。
しかしながら、ヒットラインが投機的に無効にされた場合、チェックが完了する時に無効をリバースすることは不可能なことがあり得る。
この状況を回避するために、投機的な無効を実行するように形成されるキャッシュコントローラは、また、その後そのチェックに失敗した場合に、投機的に無効にされたラインを元に戻すことを可能にする回復方法を提供するように形成される。
このように、投機的にラインを無効にすることは、キャッシュコントローラが、投機的に無効にされたラインを変更しない他のオペレーションに移すことを可能にする。
例えば、いくつかの実施例では、キャッシュコントローラに、ラインが投機的に無効にされる時間と、チェックが完了する時間との間に、いくつかのリクエストが与えられる。
これらの連続的な命令またはリクエスト、そして投機的な無効の間のコンフリクトを防ぐために(投機的な無効が後にリバースされる場合に備えて)、キャッシュコントローラは潜在的なコンフリクトをもたらすどんなリクエストも受け入れないように形成することができる。
キャッシュコントローラは、それらのリクエストが実際にそのラインを変更しなくても、投機的に無効にされたラインに関係するリクエストを遮るように形成することもできる。
例えば、投機的な無効が結局リバースされる場合(例えば、チェックのうちの一つがエラーを示すため)、チェック完了後まで、これらの変更を行わないリクエストを受け入れないことにより、あたかもそのラインが無効であるかのように、リクエストが誤って処理されるのを防ぐ。
したがって、一つの実施例では、キャッシュコントローラは、投機的に無効にされたラインのタグの一部と一致するタグがあるどんなリクエストあるいは命令も受け入れないように形成される。
例えば、キャッシュコントローラは、投機的に無効にされたラインのタグと一致するフィルリクエスト、プローブあるいは状態変更を遮る(screen out)ように形成される。
さらに、キャッシュコントローラは、タグ一致およびそのラインの置換状態の両方に基づいて、投機的に無効にされたラインを置換するコピーバックまたはフィルを受理しないように形成される。
例えば、コピーバックが投機的に無効にされたラインのタグと一致し、そのラインがセット中の最低使用頻度ラインである場合、LRU置換が使用されているとすると、通常、そのラインは、コピーバックと置換される。
あるいはまた、キャッシュコントローラは、コピーバックを受理するが、(現在の置換状態を無視して)投機的に無効にされたラインの代わりに別のラインを置換するように形成される。
投機的に無効にされたラインの置換状態が、コピーバックまたはフィルが、投機的に無効にされたライン(例えば、LRU置換手法が使用されており、投機的に無効にされたラインがLRUラインではない。)に上書きしないであろうことを示す場合、キャッシュコントローラは、リクエストを受け入れるように形成される。
アドレスコンフリクト検出ハードウェアは、投機的に無効にされているラインに帰着するリクエストと、ラインが無効にされる時間と、投機的な無効用のチェックが完了する時間の間で受信された後続するリクエストまたは命令との間の、相互作用を検出するように形成され得る。
投機的に複数のラインを無効にする能力を提供するために、これらのレジスタ504のいくつかは記憶装置502で提供される。
コンパレータ501は、係属中のリクエストのアドレスを、アドレスレジスタ504および/または記憶装置502の中のアドレスと比較する。
アドレスが一致しない場合、コンパレータ501は、イネーブル信号をアサートする。
キャッシュコントローラは、イネーブル信号の状態に基づいて、係属中のリクエストの受け入れを許可し、または許可しない。
例えば、係属中のリクエストのアドレスが投機的に無効にされたラインに対応するアドレス(またはアドレスの一部)と一致する場合、コンパレータ501は、イネーブル信号をディアサート(deassert)し、その結果キャッシュコントローラに係属中のリクエストを受け入れさせないようにする。
投機的な無効コントローラ506は、投機的に無効にされたラインのアドレスの一部またはタグの一部を記憶装置502のレジスタ504のうちの一つにロードするように形成される。
投機的な無効コントローラ506は、あるチェックにかかる最大サイクル数の間、投機的に無効にされたラインが変更されるのを防ぐように形成される。
例えば、投機的な無効コントローラ506は、エイリアスチェックが完了するのに必要なサイクル数の間、投機的に無効にされたラインが変更されるのを防ぐように形成される。
別の実施例では、投機的な無効コントローラ506は、例外チェックが完了するのに必要なサイクル数の間、投機的に無効にされたラインが変更されるのを防ぐ。
指定されたサイクル数の後、投機的な無効コントローラ506は、レジスタ504をクリアするか、または、これ以上レジスタ504の値を入って来るリクエストと比較しないようにコンパレーター501に命じる。
投機的な無効コントローラも、変更されるのを防ぐべき投機的に無効にされたラインがない場合、イネーブル信号をアサートすることにより、コンパレータ501をバイパスするように形成される。
同様に、それらが投機的に無効にされたラインを含んでいない限り、追加のプルーブまたは状態変更リクエストが受け入れられる。また、置換を行うために投機的に無効にされたラインを選ばない限り、L1からL2へのコピーバックが受け入れられる。
したがって、追加の比較によりあるタイプの命令を検出し、それらの命令だけが、記憶装置502のアドレスレジスタ504の値と比較される。
例えば、LRU置換を使用するNウェイ・セットアソシアティブキャッシュでは、コピーバックは、通常はセット中の最低使用頻度ラインを置換する。
しかしながら、適切なセット中の最低使用頻度ラインが投機的に無効にされたラインである場合、コピーバックは受理されない。
あるいはまた、コピーバックを受理しない代わりにそのコピーバックは受理されるが、投機的に無効にされたラインを置換する代わりに、コピーバックは、投機的に無効にされたラインのLRU状態を無視して、セット中の別のラインを置換する。
したがって、アドレスコンフリクト検出ハードウェア500は、投機的に無効にされたラインが、ラインまたはラインを含んでいるセットの置換状態(例えば、LRU状態、FIFO等)に依存するコピーバックによって置換されるどうかを決定するロジックを含む。
コピーバックが投機的に無効にされたラインを置換する場合、アドレスコンフリクト検出ハードウェア500は、イネーブル信号をディアサートするか、または別のラインを置換するコピーバックを行う。
キャッシュコントローラは、そのラインが無効であるとマークする(例えば、有効ビットを有効から無効にトグルする)ことによって、投機的にラインを無効にする。
好ましい実施例では、キャッシュコントローラは、いずれかのチェックに失敗した場合にラインが容易に無効にされないように、ラインに格納されたデータに影響を与えることなく、ラインが無効であることを示すことができる。
キャッシュコントローラ419はまた、投機的に無効にされた変更されるのを防ぐために、アドレスコンフリクト検出ハードウェア500のような保護メカニズムを含んでいてもよい。
従って、キャッシュコントローラ419は、投機的にラインを無効にすると共に、保護メカニズムを作動させる。
例えば、図3で示す保護メカニズムが作動させることで、投機的に無効にされたラインに対応するアドレスのすべてあるいは一部は、アドレスレジスタ504にロードされる。
無効に対応するチェックにおいて失敗した場合、キャッシュコントローラ419は、ラインがもう一度有効である(例えば、有効ビットを無効から有効にトグルする。)ことを示すことにより、投機的な無効をリバースする。キャッシュコントローラ419はまた、チェックが完了した後、保護メカニズムをシャットオフするように形成される。
例えば、キャッシュコントローラはLRUまたはFIFOの置換手法を使用する。そのような手法を実行するために、キャッシュコントローラは、各ラインまたはライン群のために置換状態情報を保存できる。
LRU置換手法を実行する実施例では、この置換状態は、キャッシュの各ライン、またはキャッシュの一部(例えば、セットアソシエイティブキャッシュのセット)の相対的な使用量の状態を示してもよい。
あるいはまた、FIFO置換手法を実行する実施例では、置換状態は、各ラインが、どれくらいの時間、キャッシュまたはそのキャッシュの一部の他のラインと関連のあるキャッシュの一部(例えば、セット)にあったかを示してもよい。
しかしながら、投機的な無効がその後取り消される場合、更新された置換状態情報は、ラインのための適切な置換状態を反映しない可能性がある。
これを補償するために、キャッシュコントローラ419は、無効を反映するために置換状態を更新する前に、投機的にラインを無効にする際に先在する置換状態を保存するように形成される。
投機的な無効がその後リバースされる場合、キャッシュコントローラ419は、保存された置換状態を元に戻すように形成される。
このように、いくつかの実施例では、キャッシュコントローラ419は、投機的な無効を行なう場合に置換状態を変更し保存するように形成される。
機能ブロックは、記載された実施例において、ある規則で配列されているが、この配置は単なる例であり、この方法が特定の時間的な順序を要求することを意味しないので、他の実施例が機能ブロックの異なる配置を使用する可能性がある。
フィルリクエストは排他キャッシュコントローラによって受け付けられる(ステップ601)。いくつかの実施例では、排他キャッシュは、L2キャッシュであり、排他キャッシュコントローラは、実際にL1キャッシュとL2キャッシュの両方を制御する。
排他キャッシュがリクエストを受け付ける前または受け付けた後のある時点では、チェックは、リクエストしているキャッシュのミス、および/または、リクエストに起因する排他キャッシュ中のヒットによって開始される(ステップ603)。
便宜上、リクエストされたラインは「LineN」として示す。
排他性を維持するために、ステップ607で示されるように、排他キャッシュコントローラは、LineNを無効にすることができる。
しかしながら、ステップ603で開始されたチェックが完了する前にこの無効が生じる可能性があるため、キャッシュコントローラは、無効を投機的に行なう。
チェックに失敗した場合にその無効をリバースするために、ステップ607で、キャッシュコントローラはまた、無効がその置換状態情報に影響する場合にLineNに対応する以前の置換状態情報(例えば、LRU情報またはFIFO情報のような、セットまたはキャッシュ中のどのラインが最初に置換されるかを決定する情報)を保存し、無効を反映するために置換状態情報を更新する。
したがって、他のリクエストを受け付けるために排他キャッシュコントローラを解放すべくLineNが無効にされている一方、排他キャッシュコントローラは、チェックの完了後までLineNに潜在的に影響するか依存するリクエストを受け入れることを遅延または拒絶することがある。
このように、ステップ611で、新規なリクエストが排他キャッシュに提示され、そのリクエストがLineNに潜在的に影響するか依存する場合、ステップ613で示されるように、キャッシュコントローラはリクエストを受け付けない。例えば、キャッシュコントローラは、LineNを上書きするリクエストを受け付けない。
しかしながら、そのリクエストがLineNに関係がない場合、排他キャッシュはリクエストを受け付けて、ステップ617に示すように、それに従って処理することができる。
いくつかの実施例では、排他キャッシュコントローラは、リクエストのタグがLineNのタグと一致するかどうかチェックすることにより、リクエストが潜在的にLineNに影響するかどうか決めることができる。
一つの実施例では、コピーバックリクエストが提示される場合、排他キャッシュコントローラは、LineNが、現在の置換状態において、コピーバックによって置換されるかどうか決定するロジックをさらに含んでいてもよい。
LineNが置換され得る場合、排他キャッシュコントローラは、コピーバックを受け付けない、あるいはコピーバックを受け付けるが、LineNの代わりに別のラインを置換することを強制する。
ステップ603で開始されたチェックが失敗した場合、排他キャッシュコントローラは、ステップ623で無効をリバースするために、回復メカニズムを使用することができる。
例えば、排他キャッシュコントローラは再びラインを有効であるとマークし(例えば、有効ビットを無効から有効にトグルすることによって)、LineNに対応する前の無効置換状態情報を回復することができる。
代わりに、ステップ603で開始されたチェックをパスした場合、排他キャッシュコントローラは、投機的に無効にされたLineNに潜在的に影響し得るリクエストの遮断を中止する。
一旦チェックをパスすれば、その無効は投機的でない無効として扱うことができ、したがって、置換状態情報がステップ607で保存される場合、一旦チェックが完了すれば、保存された情報はもはや維持されない。
この状況で、キャッシュコントローラは、ステップ607で示された投機的な無効の実行とは反対に、投機的にラインを無効にしてはならない。
多くの実施例では、リクエストしているキャッシュは、フィルリクエストが排他キャッシュでミスする際にシステムメモリのレイテンシを最小限にするために、フィルリクエストを排他キャッシュに送るのと同時に、システムメモリにも送る。
フィルリクエストを送った後に、排他キャッシュは、他のリクエストを受信し、それらに応答することができる。
ステップ701で、キャッシュコントローラは、命令またはリクエストを受け付ける。
例えば、受け付けた命令は、フィルリクエスト、コピーバック、プルーブ、状態変更または無効であり得る。
このリクエストを充足するには、結局受け付けられるキャッシュのラインが無効にされることが要求される。
しかしながら、ある種のチェックは、ステップ703で示されるように、命令、リクエスト(例えば、より高いレベルのキャッシュのミス)、または無効に通じるイベント(例えば、排他キャッシュのヒット)の存在下で実行され、これらのチェックに失敗した場合、そのリクエストおよび/または無効は、取り消される。
これらのチェックは、完了するまでにいくつかのサイクルを必要とするので、チェックが完了するまで、キャッシュコントローラが新規なリクエストの受け付けを継続するように、キャッシュコントローラは、投機的にラインを無効にする。
したがって、ステップ707で、キャッシュコントローラは、ラインの有効ビットをトグルすることによってそのラインを投機的に無効にし、その無効が、無効にされたラインに対応する置換状態情報に影響する場合、前の置換状態情報を保存し、かつ、無効を反映するために置換状態情報を更新する。
したがって、潜在的に無効にされたラインに関係がある新規なリクエストが示され、チェックが完了していない場合、キャッシュコントローラは、ステップ719に示すように、リクエストを受け付けない。
キャッシュコントローラは、投機的に無効にされたラインへ潜在的に関係がないリクエストを、ステップ717で受け付けることができる。
チェックをパスする場合、無効はもはや投機的ではないので、キャッシュコントローラは、投機的に無効にされたラインが変更されるのを防ぐことを中止する。
しかしながら、チェックに失敗した場合、キャッシュコントローラは、ステップ723で示されるように、それが有効であることを示すために無効にされたラインの有効ビットをトグルし、置換状態情報が保存されている場合には保存された置換状態情報を元に戻すことによって、無効をリバースすることができる。
この状況で、キャッシュコントローラは、ステップ707で示された投機的な無効とは反対に、投機的にラインを無効にしてはならない。
図6は、バスブリッジ202によって様々なシステムコンポーネントにつながれたプロセッサ10を含むコンピュータシステム200の一実施例を示すブロック図である。
コンピュータシステムの他の実施例は存在し、また想起し得る。
記載されたシステムでは、メインメモリ204は、メモリバス206によって、バスブリッジ202に接続される。また、グラフィックコントローラ208は、AGPバス210によって、バスブリッジ202に接続される。PCIデバイス212Aないし212Bは、PCIバス214によって、バスブリッジ202に接続される。第2バスブリッジ216はまた、EISA/ISAバス220によって、一つ以上のEISAあるいはISAデバイス218に電気的なインタフェースを提供するために採用される。
この例において、プロセッサ10は、CPUバス224によって、バスブリッジ202に接続され、またオプションのL2キャッシュ228に接続される。
いくつかの実施例では、プロセッサ10は、図示しない統合L1キャッシュを含んでいてもよい。
オペレーションが、バスブリッジ202に接続されたデバイスの一つから受信される場合、バスブリッジ202は、オペレーションのターゲットを識別する。
(例えば、特定のデバイスまたはPCIバス214の場合は、そのターゲットは、PCIバス214上にある。)
バスブリッジ202は、目標のデバイスへオペレーションを送る。
バスブリッジ202は、一般的に、オペレーションを、ソースデバイスまたはバスで使用されるプロトコルからターゲットデバイスまたはバスで使用されるプロトコルに翻訳する。
第2バスブリッジ216から外部の、または第2バスブリッジ216に統合された、図示しないI/Oコントローラはまた、キーボードとマウス222、および様々なシリアルとパラレルのポートの動作をサポートするために、コンピュータシステム200内に含まれていてもよい。
図示しない外部キャッシュユニットはまた、他の実施例においてプロセッサ10とバスブリッジ202の間のCPUバス224に接続されていてもよい。
あるいはまた、外部キャッシュは、バスブリッジ202に接続されていてもよいし、外部キャッシュのためのキャッシュ制御ロジックは、バスブリッジ202に統合されていてもよい。
L2キャッシュ228は、プロセッサ10のバックサイド仕様として示される。
L2キャッシュ228は、プロセッサ10と分離していてもよいし、カートリッジ中でプロセッサ10と統合されていてもよいし(例えば、スロット1またはスロットA)、または、半導体基板上でプロセッサ10と統合されていてもよい。
例えば、複数のバンクを有するSDRAM(Synchronous DRAM)またはRambus DRAM(RDRAM)が適切である。
同様に、ISAデバイス218は、モデム、サウンドカード、そして、GPIB、またはフィールドバスのインターフェースカードのような様々なデータ取得カードのような様々なタイプの周辺機器を例示したものである。
グラフィックコントローラ208は、メインメモリ204へ、およびそのメインメモリ204から効果的にシフトできる三次元のデータ構造をレンダリングするための当該技術分野において一般的なグラフィックアクセラレータを含む。
したがって、グラフィックコントローラ208は、それがバスブリッジ202内のターゲットインタフェースへのアクセスをリクエストし、受け取ることができ、そのためメインメモリ204にアクセスできるという点でAGPバス210のマスターであり得る。
専用のグラフィックスバスは、メインメモリ204からのデータの迅速なリトリーブを提供する。
あるオペレーションについては、グラフィックコントローラ208は、AGPバス210上でPCIプロトコルトランザクションを生成するようにさらに形成され得る。
バスブリッジ202のAGPインタフェースはこのように、PCIプロトコルターゲットおよびイニシエータトランザクションと同様に、AGPプロトコルトランザクションをもサポートする機能を含んでいてもよい。
ディスプレイ226は、イメージまたはテキストを表示できるすべての電子ディスプレイである。適切なディスプレイ226は、陰極線管(CRT)、液晶ディスプレイ(LCD)等を含む。
さらに、コンピュータシステム200が追加のプロセッサ(例えば、コンピュータシステム200のオプションのコンポーネントとして示されたプロセッサ10a)を含む多重プロセッシングコンピュータシステムであってもよい。プロセッサ10aは、プロセッサ10と同種のものでもよい。
より詳細には、プロセッサ10aは、プロセッサ10と完全同一のコピーであってもよい。
プロセッサ10aは、図6に示すように、独立したバスによってバスブリッジ202に接続されていてもよいし、あるいは、CPUバス224をプロセッサ10と共有していてもよい。
さらに、プロセッサ10aは、L2キャッシュ228と類似するオプションのL2キャッシュ228aに接続されていてもよい。
図7は、コンピュータシステム300の他の実施例を示す。
コンピュータシステムの他の実施例は存在し、また想起し得る。
図7の具体例では、コンピュータシステム300は、いくつかの処理ノード312A,312B,312C,312Dを含む。
各処理ノードは、それぞれ処理ノード312Aないし312Dに含まれた、メモリーコントローラ316Aないし316Dによって、それぞれメモリ314Aないし314Dに接続される。
さらに、処理ノード312Aないし312Dは、処理ノード312Aないし312D間の通信に使用されるインタフェースロジックを含む。
例えば、処理ノード312Aは、処理ノード312Bと通信するためのインタフェースロジック318A、処理ノード312Cと通信するためのインタフェースロジック318B、および図示しないさらに他の処理ノードと通信するための第三のインタフェースロジック318Cを含む。
同様に、処理ノード312Bは、インタフェースロジック318D、318Eおよび318Fを含む。処理ノード312Cは、インタフェースロジック318G、318H、および318Iを含む。そして処理ノード312Dは、インタフェースロジック318J、318Kおよび318Lを含む。
処理ノード312Dは、インタフェースロジック318Lによって多くのI/Oデバイス(例えば、デイジーチェーン構成中のデバイス320Aないし320B)と通信するように接続される。
他の処理ノードは、同様の方法で、他のI/Oデバイスと通信できる。
本実施例では、リンクは一方向のラインのセットとして実現される(例えば、ライン324Aは、処理ノード312Aから処理ノード312Bにパケットを送信するために使用され、ライン324Bは、処理ノード312Bから処理ノード312Aにパケットを送信するために使用される)。
ライン324Cないし324Hの他のセットは、図7に示すような他の処理ノード間のパケットを送信するために使用される。
一般に、ライン324の各セットは、一つ以上のデータライン、データラインに対応する一つ以上のクロックライン、および伝達されているパケットのタイプを示す一つ以上の制御ラインを含む。
リンクは、処理ノード間の通信のキャッシュコヒーレント方式において、または処理ノードとI/Oデバイス(またはPCIバスかISAバスのような、従来の構造のI/Oバスへのバスブリッジ)の間の通信の非コヒーレント方式において動作する。
さらにリンクは、示されるようなI/Oデバイス間のデイジーチェーン構造を使用して、非コヒーレント方式で動作してもよい。
ある処理ノードから別のノードに送信されるパケットが、一つ以上の中間ノードを介して通過してもよい。
例えば、処理ノード312Aから処理ノード312Dに送信されたパケットは、図7に示すように、処理ノード312Bまたは処理ノード312Cのいずれかを通過することができる。他のどのような適切なルーティングのアルゴリズムも使用することができる。
コンピュータシステム300の他の実施例は、図7で示す実施例において、より多くの、またはより少数の処理ノードを含んでいてもよい。
パケットは、トランザクションを開始するためのコマンドパケット、キャッシュコヒーレンシを維持するためのプルーブパケット、およびプルーブとコマンドに応答する応答パケット、を含んでいてもよい。
広義には、処理ノードは少なくとも1つのプロセッサを含んでおり、必要に応じてメモリおよび他のロジックと通信するためのメモリコントローラを含んでいてもよい。
より詳しくは、各処理ノード312Aないし312Dは、プロセッサ10の一つ以上のコピーを含んでいてもよい。
外部インタフェースユニット18は、メモリコントローラ316とともに、ノード内にインタフェースロジック318を含んでいてもよい。
コンピュータシステム300のアドレス空間は、メモリ314Aないし314D間で分割される。
各処理ノード312Aないし312Dは、どのアドレスがメモリ314Aないし314Dのどのメモリにマッピングされるか、つまり、特別のアドレス用のメモリーリクエストがどの処理ノード312Aないし312Dに送られるべきか、を決定するために使用されるメモリーマップを含んでいる。
一つの実施例では、コンピュータシステム300内のアドレスのコヒーレントポイントは、そのアドレスに対応するバイトを格納するメモリに接続されたメモリコントローラ316Aないし316Dである。
言いかえれば、メモリコントローラ316Aないし316Dは、対応するメモリ314Aないし314Dへの各メモリアクセスが、キャッシュコヒーレントな方法で起こることを保証する。
メモリコントローラ316Aないし316Dは、メモリ314Aないし314Dに接続するための制御回路を含んでいてもよい。
さらに、メモリコントローラ316Aないし316Dは、メモリリクエストをキューするためのリクエストキューを含んでいてもよい。
コンピュータシステム300は、パケットを送信するのに適切などのようなフロー制御メカニズムも使用することができる。
例えば、一つの実施例では、各インタフェースロジック318は、そのインタフェースロジックが接続されるリンクの他端におけるレシーバ内の各タイプのバッファの数(カウント)を格納する。
受信インタフェースロジックが、パケットを格納するためのフリーバッファを有しないとすれば、インタフェースロジックはパケットを送信しない。
パケットを前方に送ることによって受信バッファが解放されるとともに、受信インタフェースロジックは、バッファが解放されたことを示すため、送信インタフェースロジックにメッセージを送信する。
このようなメカニズムは、「クーポンベースの」システムとして呼ばれる。
例えば、I/Oデバイス320Aおよび320Bは、そのデバイスが接続され得る他のコンピュータシステムと通信するためのデバイス(例えば、ネットワークインターフェースカードまたはモデム)を含んでいてもよい。
さらに、I/Oデバイス320Aおよび320Bは、ビデオアクセラレータ、オーディオカード、ハードまたはフロッピーディスクドライブ、ドライブコントローラ、SCSI(スカジー)アダプタ、電話カード、サウンドカード、GPIBまたはフィールドバス・インターフェースカードのような様々なデータ取得カードを含んでいてもよい。
ここでは、「I/Oデバイス」という用語は、「周辺機器」という用語と同じ意味である。
Claims (44)
- プロセッサと、
システムメモリと、
前記プロセッサと接続されており、複数のキャッシュライン記憶領域を有するキャッシュと、
第1リクエストを受け取るために接続されており、前記第1リクエストに応じて、第1キャッシュライン記憶領域の第1キャッシュラインを投機的に無効にするように構成されると共に、前記第1キャッシュラインを投機的に無効にすることに応じて、前記第1キャッシュラインの無効が投機的でなくなるまで、前記第1キャッシュラインが変更されるのを防ぐように構成される、キャッシュコントローラと、
前記第1リクエストに対応する少なくとも一つのチェックを実行するように構成されるエラー検出ユニットとを含み、
前記チェックが実行され、エラーを検出しない場合、前記第1キャッシュラインの無効は投機的でなくなる、
コンピュータシステム。 - 前記キャッシュコントローラは、前記第1キャッシュラインに関連する有効ビットをトグルすることによって、前記第1キャッシュラインを投機的に無効にするように構成される、請求項1記載のコンピュータシステム。
- 前記キャッシュコントローラは、前記チェックが実行され、エラーを検出する場合、前記第1キャッシュラインに関連する前記有効ビットをトグルすることによって、前記投機的な実行をリバースするようにさらに構成される、請求項2記載のコンピュータシステム。
- 前記キャッシュコントローラはさらに、前記第1キャッシュラインの無効が非投機的になるまでは、前記第1キャッシュライン中のデータの状態またはデータに依存するリクエストを受け付けないように構成されている、請求項1記載のコンピュータシステム。
- 前記キャッシュコントローラは、前記第1キャッシュラインの無効が非投機的になるまで、追加の各リクエストのタイプ、および追加の各リクエストが前記投機的に無効にされた第1キャッシュラインに依存するか、またはそれを変更するかどうかに基づき、追加のリクエストを受け付けないか否かを判断するように構成されている、請求項1記載のコンピュータシステム。
- 前記第1キャッシュラインの無効が非投機的になるまで、前記キャッシュコントローラは、
前記第1キャッシュラインをヒットする上位レベルキャッシュからのフィル・リクエスト、
前記第1キャッシュラインに対するプローブ・リクエスト、もしくはステートチェンジリクエスト、または
置換のために前記第1キャッシュラインを選択する上位レベルキャッシュからのコピー・バック
である追加のリクエストを受け付けないように構成されている、請求項1記載のコンピュータシステム。 - 前記キャッシュコントローラは、前記第1キャッシュラインの無効が非投機的になるまでは、前記第1キャッシュラインの第1タグの第1部分に合致する追加のリクエストを受け付けないように構成されている、請求項1記載のコンピュータシステム。
- 前記キャッシュコントローラはさらに、前記投機的無効の一部として、前記第1キャッシュラインに関連した投機的無効を行う前の置換状態情報を保存し、前記第1キャッシュラインがすでに無効にされたかのように置換状態情報を更新するように構成されている、請求項1記載のコンピュータシステム。
- 前記チェックを実行して、エラーを検出したときに、前記キャッシュコントローラはさらに、前記保存された前記投機的無効を行う前の置換状態情報をリストアするように構成されている、請求項8記載のコンピュータシステム。
- 前記キャッシュコントローラはさらに、前記第1キャッシュラインの無効が非投機的になった後に、前記第1キャッシュラインを変更する追加のリクエストを受け付けるように構成されている、請求項1記載のコンピュータシステム。
- 前記少なくとも一つのチェックはオーダリングのチェックを含む、請求項1記載のコンピュータシステム。
- 前記少なくとも一つのチェックはエイリアスのチェックを含む、請求項1記載のコンピュータシステム。
- 前記少なくとも一つのチェックは、アクセスされたキャッシュラインの状態が与えられたときに、前記アクセスされたキャッシュラインへのアクセスが適切かどうかをチェックすることを含む、請求項1記載のコンピュータシステム。
- 前記キャッシュは互いにデータの重複のない上位レベルキャッシュと排他キャッシュを含み、前記第1リクエストは、上位レベルキャッシュからのフィル・リクエストである、請求項1記載のコンピュータシステム。
- キャッシュ中のラインを投機的に無効にする方法であって、
前記キャッシュ中の前記ラインを無効にするリクエストを受け付けるステップと、
前記無効が誤っているかどうかを決定するチェックを開始するステップと、
前記受け付けるステップに応じて、前記ラインを投機的に無効にするステップとを含み、
前記投機的に無効にするステップは、前記ラインが無効であることを示すステップと、前記チェックが完了するまで、前記ラインがその後変更されるのを防ぐ前記ラインを保護するステップとを含み、
前記受け付けるステップに応答して、前記保護するステップは、前記チェックが完了するまで、前記投機的に無効にされたライン中のデータまたはその状態に依存する追加のリクエストを受け付けないステップをさらに含み、
前記無効が誤りであることを決定するチェックの一つに応答して、前記ラインが有効であることを示すことによって前記投機的無効をリバースするステップとを含む、方法。 - 前記投機的に無効にするステップは、前記ラインに関連する有効ビットをトグルするステップを含む、請求項15記載の方法。
- 前記リバースするステップは、前記ラインに関連する有効ビットをトグルするステップを含む、請求項16記載の方法。
- 前記保護するステップは、前記投機的に無効にされたラインのタグの第1部分に合致する追加のリクエストを受け付けないステップを含む、請求項15記載の方法。
- 前記投機的に無効にするステップは、前記ラインに関連した投機的無効を行う前の置換状態情報を保存するステップと、前記ラインがすでに無効にされたかのように置換状態情報を更新するステップとをさらに含む、請求項15記載の方法。
- 前記無効が誤りであることを決定するチェックの一つに応答して、前記保存された前記投機的無効を行う前の置換状態情報をリストアするステップをさらに含む、請求項19記載の方法。
- 前記チェックが終了した後に前記保護を停止するステップをさらに含む、請求項15記載の方法。
- 互いにデータの重複のない上位レベルキャッシュと排他キャッシュとを含むシステムにおける排他キャッシュ中の第1キャッシュラインを投機的に無効にする方法であって、
上位レベルキャッシュからのフィル・リクエストを受け付けるステップと、
前記フィル・リクエストが前記排他キャッシュ中でヒットするかどうかを決定するステップと、
前記フィル・リクエストが誤って開始されたかどうかを決定するためのチェックを開始するステップと、
前記排他キャッシュ中で前記フィル・リクエストがヒットすることに応答して、前記第1キャッシュラインを前記排他キャッシュから前記上位レベルキャッシュに供給するステップと、もし前記チェックが未だ完了していないときには、前記排他キャッシュ中の前記第1キャッシュラインを投機的に無効にするステップとを含み、
前記投機的に無効にするステップは、前記第1キャッシュラインが無効であることを示すステップと、前記チェックが完了するまで、前記第1キャッシュラインがその後変更されるのを防ぐ前記第1キャッシュラインを保護するステップとを含み、
前記フィル・リクエストが誤って開始されたことを決定する前記フィル・リクエストに関連するチェックの一つに応答して、前記第1キャッシュラインの投機的無効をリバースするステップとを含む、方法。 - 前記第1キャッシュラインが無効であることを示すステップは、前記第1キャッシュラインに関連する有効ビットをトグルするステップを含む、請求項22記載の方法。
- 前記リバースするステップは、前記第1キャッシュラインに関連する有効ビットをトグルするステップを含む、請求項23記載の方法。
- 前記投機的に無効にするステップは、前記チェックが完了するまでは、前記第1キャッシュライン中のデータの状態またはデータに依存する追加のリクエストを受け付けないステップをさらに含む、請求項22記載の方法。
- 前記保護するステップは、前記投機的に無効にされたラインの第1タグの第1部分に合致する追加のリクエストが受け付けられないようにするステップを含む、請求項22記載の方法。
- 前記保護するステップは、上位レベルキャッシュから排他キャッシュへのコピーバックが前記投機的に無効にされたラインを上書きすることを検出するステップと、前記検出するステップに応答して、前記コピーバックが異なったラインを上書きするようにさせるステップとを含む、請求項22記載の方法。
- 前記投機的に無効にするステップは、前記ラインに関連した投機的無効を行う前の置換状態情報を保存するステップと、前記ラインがすでに無効にされたかのように置換状態情報を更新するステップとをさらに含む、請求項22記載の方法。
- 前記フィル・リクエストが誤って開始されたことを決定するチェックの一つに応答して、前記保存された前記投機的無効を行う前の置換状態情報をリストアするステップをさらに含む、請求項28記載の方法。
- 複数のキャッシュライン記憶領域を有するキャッシュと、
第1リクエストを受け付けるために接続されており、前記第1リクエストの受け付けに応じて、第1キャッシュライン記憶領域中の第1キャッシュラインを投機的に無効にするように形成され、さらに、前記投機的な無効が誤っていることが検出される場合、前記第1キャッシュラインの前記投機的な無効をリバースするように形成され、前記投機的な無効が誤っているかどうかを検出するために複数のサイクルを必要とするキャッシュコントローラと、
前記キャッシュコントローラが前記第1キャッシュラインを投機的に無効にするのに応じて、前記複数のサイクルの間、前記第1キャッシュラインが変更されるのを防ぐように構成される、投機的無効コントローラとを有し、
前記投機的な無効は前記複数のサイクルの後に投機的でなくなり、前記投機的無効コントローラはさらに、前記複数のサイクルにおいて、投機的に無効にされた第1キャッシュラインを変更する、またはそれに依存する追加のリクエストの受付を妨げるように構成されている、
キャッシュサブシステム。 - 前記キャッシュコントローラは、前記第1キャッシュラインに関連する有効ビットをトグルすることによって、前記第1キャッシュラインを投機的に無効にするように構成される、請求項30記載のキャッシュサブシステム。
- 前記キャッシュコントローラはさらに、前記第1キャッシュラインに関連する前記有効ビットをトグルすることにより、前記投機的な実行をリバースするように構成される、請求項31記載のキャッシュサブシステム。
- 前記投機的無効コントローラは、前記キャッシュコントローラが前記第1キャッシュラインを投機的に無効にするのに応答して、前記第1キャッシュラインのタグの第1部分をレジスタにロードするように構成されている、請求項31記載のキャッシュサブシステム。
- 前記レジスタに記憶された前記タグの第1部分と前記キャッシュコントローラに送られた追加のリクエスト中の別のタグとを比較するように構成され、それらのタグが一致するとイネーブル信号をディアサートし、前記キャッシュコントローラにイネーブル信号を供給するようにさらに構成され、前記イネーブル信号がディアサートされたとき、受信したリクエストを受け付けないように構成されている比較器をさらに含む、請求項33記載のキャッシュサブシステム。
- 前記投機的無効コントローラはさらに、前記投機的無効が非投機的になった後、前記第1キャッシュラインが後から変更されるのを妨げないように構成される、請求項30記載のキャッシュサブシステム。
- 前記キャッシュコントローラはさらに、前記投機的無効の一部として、前記第1キャッシュラインに関連した投機的無効を行う前の置換状態情報を保存し、前記第1キャッシュラインがすでに無効にされたかのように置換状態情報を更新するように構成されている、請求項30記載のキャッシュサブシステム。
- 前記第1キャッシュラインの投機的無効は誤りであったことの表示の受信に応答して、前記キャッシュコントローラはさらに、前記保存された前記投機的無効を行う前の置換状態情報をリストアするように構成されている、請求項36記載のキャッシュサブシステム。
- 前記複数のサイクルは前記第1リクエストを開始したイベントのエイリアスチェックを完了するためのサイクル数を含む、請求項30記載のキャッシュサブシステム。
- 前記キャッシュコントローラは、後続のリクエストが前記第1キャッシュラインを上書きすることを検出して、前記第1キャッシュラインを保護し、それに応答して、前記後続のリクエストに異なったキャッシュラインを上書きさせる、請求項30記載のキャッシュサブシステム。
- プロセッサと、
システムメモリと、
前記プロセッサと接続されており、複数のキャッシュライン記憶領域を有するキャッシュと、
第1リクエストを受け取るために接続されており、前記第1リクエストに応じて、第1キャッシュライン記憶領域の第1キャッシュラインを投機的に無効にするように構成されると共に、前記第1キャッシュラインを投機的に無効にすることに応じて、前記第1キャッシュラインの無効が投機的でなくなるまで、前記第1キャッシュラインが変更されるのを防ぐように構成される、キャッシュコントローラと、
前記第1リクエストに対応する少なくとも一つのチェックを実行するように構成され、前記チェックを実行して、エラーを検出しない場合は、前記第1キャッシュラインの無効は非投機的になるエラー検出ユニットとを含み、
前記キャッシュコントローラは、前記第1キャッシュラインの無効が非投機的になるまでは、前記第1キャッシュライン中のデータの状態またはそのデータに依存するリクエストを受け付けないように構成された、
コンピュータシステム。 - プロセッサと、
システムメモリと、
前記プロセッサと接続されており、複数のキャッシュライン記憶領域を有するキャッシュと、
第1リクエストを受け取るために接続されており、前記第1リクエストに応じて、第1キャッシュライン記憶領域の第1キャッシュラインを投機的に無効にするように構成されると共に、前記第1キャッシュラインを投機的に無効にすることに応じて、前記第1キャッシュラインの無効が投機的でなくなるまで、前記第1キャッシュラインが変更されるのを防ぐように構成される、キャッシュコントローラと、
前記第1リクエストに対応する少なくとも一つのチェックを実行するように構成され、前記チェックを実行して、エラーを検出しない場合は、前記第1キャッシュラインの無効は非投機的になるエラー検出ユニットとを含み、
前記キャッシュコントローラは、前記第1キャッシュラインの無効が非投機的になるまで、追加の各リクエストのタイプ、および追加の各リクエストが前記投機的に無効にされた第1キャッシュラインに依存するか、またはそれを変更するかどうかに基づき、追加のリクエストを受け付けないか否かを判断するように構成されている、
コンピュータシステム。 - キャッシュ中のラインを投機的に無効にする方法であって、
前記キャッシュ中の前記ラインを無効にするリクエストを受け付けるステップと、
前記無効が誤っているかどうかを決定するチェックを開始するステップと、
前記受け付けるステップに応じて、前記ラインを投機的に無効にするステップとを含み、
前記投機的に無効にするステップは、前記ラインが無効であることを示すステップと、前記チェックが完了するまで、前記ラインがその後変更されるのを防ぐ前記ラインを保護するステップとを含み、
前記保護するステップは、前記投機的に無効にされたライン中のタグの第1部分に合致する追加のリクエストを受け付けないステップを含み、
前記無効が誤りであることを決定するチェックの一つに応答して、前記ラインが有効であることを示すことによって前記投機的無効をリバースするステップとを含む、方法。 - 複数のキャッシュライン記憶領域を有するキャッシュと、
第1リクエストを受け付けるために接続されており、前記第1リクエストの受け付けに応じて、第1キャッシュライン記憶領域中の第1キャッシュラインを投機的に無効にするように形成され、さらに、前記投機的な無効が誤っていることが検出される場合、前記第1キャッシュラインの前記投機的な無効をリバースするように形成され、前記投機的な無効が誤っているかどうかを検出するために複数のサイクルを必要とし、前記複数のサイクルは前記第1リクエストを開始したイベントのエイリアスチェックを完了するためのサイクル数を含むキャッシュコントローラと、
前記キャッシュコントローラが前記第1キャッシュラインを投機的に無効にするのに応じて、前記複数のサイクルの間、前記第1キャッシュラインが変更されるのを防ぐように構成され、前記投機的な無効は前記複数のサイクルの後に投機的でなくなる投機的無効コントローラとを含む、
キャッシュサブシステム。 - 複数のキャッシュライン記憶領域を有するキャッシュと、
第1リクエストを受け付けるために接続されており、前記第1リクエストの受け付けに応じて、第1キャッシュライン記憶領域中の第1キャッシュラインを投機的に無効にするように形成され、さらに、前記投機的な無効が誤っていることが検出される場合、前記第1キャッシュラインの前記投機的な無効をリバースするように形成され、前記投機的な無効が誤っているかどうかを検出するために複数のサイクルを必要とし、後続のリクエストが前記第1キャッシュラインを上書きすることを検出して、前記第1キャッシュラインを保護し、それに応答して、前記後続のリクエストに異なったキャッシュラインを上書きさせるキャッシュコントローラと、
前記キャッシュコントローラが前記第1キャッシュラインを投機的に無効にするのに応じて、前記複数のサイクルの間、前記第1キャッシュラインが変更されるのを防ぐように構成され、前記投機的な無効は前記複数のサイクルの後に投機的でなくなる投機的無効コントローラとを含む、
キャッシュサブシステム。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/859,290 US6725337B1 (en) | 2001-05-16 | 2001-05-16 | Method and system for speculatively invalidating lines in a cache |
PCT/US2002/008804 WO2002093385A2 (en) | 2001-05-16 | 2002-03-21 | Method and system for speculatively invalidating lines in a cache |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2004529435A JP2004529435A (ja) | 2004-09-24 |
JP2004529435A5 JP2004529435A5 (ja) | 2006-01-05 |
JP4128878B2 true JP4128878B2 (ja) | 2008-07-30 |
Family
ID=25330505
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002589993A Expired - Fee Related JP4128878B2 (ja) | 2001-05-16 | 2002-03-21 | キャッシュ中のラインを投機的に無効にする方法とシステム |
Country Status (9)
Country | Link |
---|---|
US (1) | US6725337B1 (ja) |
EP (1) | EP1388065B1 (ja) |
JP (1) | JP4128878B2 (ja) |
KR (1) | KR100885277B1 (ja) |
CN (1) | CN1248118C (ja) |
AU (1) | AU2002248679A1 (ja) |
DE (1) | DE60222402T2 (ja) |
TW (1) | TW591384B (ja) |
WO (1) | WO2002093385A2 (ja) |
Families Citing this family (61)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6961827B2 (en) | 2001-11-13 | 2005-11-01 | Sun Microsystems, Inc. | Victim invalidation |
US6842827B2 (en) | 2002-01-02 | 2005-01-11 | Intel Corporation | Cache coherency arrangement to enhance inbound bandwidth |
US20030200386A1 (en) * | 2002-04-19 | 2003-10-23 | Seagate Technology Llc | Data retention prioritization for a data storage device |
US6996678B1 (en) * | 2002-07-31 | 2006-02-07 | Cisco Technology, Inc. | Method and apparatus for randomized cache entry replacement |
US8185602B2 (en) | 2002-11-05 | 2012-05-22 | Newisys, Inc. | Transaction processing using multiple protocol engines in systems having multiple multi-processor clusters |
US7617329B2 (en) * | 2002-12-30 | 2009-11-10 | Intel Corporation | Programmable protocol to support coherent and non-coherent transactions in a multinode system |
US7636837B2 (en) * | 2003-05-28 | 2009-12-22 | Fujitsu Limited | Apparatus and method for controlling instructions at time of failure of branch prediction |
US7225299B1 (en) | 2003-07-16 | 2007-05-29 | Transmeta Corporation | Supporting speculative modification in a data cache |
US7149851B1 (en) | 2003-08-21 | 2006-12-12 | Transmeta Corporation | Method and system for conservatively managing store capacity available to a processor issuing stores |
US20050172076A1 (en) * | 2004-01-30 | 2005-08-04 | Gateway Inc. | System for managing distributed cache resources on a computing grid |
US9727468B2 (en) | 2004-09-09 | 2017-08-08 | Intel Corporation | Resolving multi-core shared cache access conflicts |
US7984248B2 (en) | 2004-12-29 | 2011-07-19 | Intel Corporation | Transaction based shared data operations in a multiprocessor environment |
US20060179231A1 (en) * | 2005-02-07 | 2006-08-10 | Advanced Micron Devices, Inc. | System having cache memory and method of accessing |
US7930484B2 (en) * | 2005-02-07 | 2011-04-19 | Advanced Micro Devices, Inc. | System for restricted cache access during data transfers and method thereof |
US7434007B2 (en) * | 2005-03-29 | 2008-10-07 | Arm Limited | Management of cache memories in a data processing apparatus |
CN100378687C (zh) * | 2005-08-25 | 2008-04-02 | 北京中星微电子有限公司 | 一种高速缓存预取模块及其方法 |
US7577793B2 (en) * | 2006-01-19 | 2009-08-18 | International Business Machines Corporation | Patrol snooping for higher level cache eviction candidate identification |
US7640399B1 (en) | 2006-05-10 | 2009-12-29 | Advanced Micro Devices, Inc. | Mostly exclusive shared cache management policies |
JP4783229B2 (ja) * | 2006-07-19 | 2011-09-28 | パナソニック株式会社 | キャッシュメモリシステム |
US8606998B2 (en) * | 2006-08-24 | 2013-12-10 | Advanced Micro Devices, Inc. | System and method for instruction-based cache allocation policies |
US7702858B2 (en) * | 2007-06-05 | 2010-04-20 | Apple Inc. | Latency reduction for cache coherent bus-based cache |
US8156309B2 (en) * | 2007-10-18 | 2012-04-10 | Cisco Technology, Inc. | Translation look-aside buffer with variable page sizes |
US7996626B2 (en) * | 2007-12-13 | 2011-08-09 | Dell Products L.P. | Snoop filter optimization |
US8464000B2 (en) * | 2008-02-29 | 2013-06-11 | Qualcomm Incorporated | Systems and methods for cache line replacements |
US8489820B1 (en) | 2008-03-18 | 2013-07-16 | Netapp, Inc | Speculative copying of data from main buffer cache to solid-state secondary cache of a storage server |
US8775718B2 (en) * | 2008-05-23 | 2014-07-08 | Netapp, Inc. | Use of RDMA to access non-volatile solid-state memory in a network storage system |
US8239416B2 (en) * | 2008-05-30 | 2012-08-07 | Armanta, Inc. | System, method, and computer program product for modeling changes to large scale datasets |
US20100083247A1 (en) * | 2008-09-26 | 2010-04-01 | Netapp, Inc. | System And Method Of Providing Multiple Virtual Machines With Shared Access To Non-Volatile Solid-State Memory Using RDMA |
US8095831B2 (en) * | 2008-11-18 | 2012-01-10 | Freescale Semiconductor, Inc. | Programmable error actions for a cache in a data processing system |
US8677075B2 (en) | 2010-05-18 | 2014-03-18 | Lsi Corporation | Memory manager for a network communications processor architecture |
US9461930B2 (en) | 2009-04-27 | 2016-10-04 | Intel Corporation | Modifying data streams without reordering in a multi-thread, multi-flow network processor |
US8521961B2 (en) * | 2009-08-20 | 2013-08-27 | International Business Machines Corporation | Checkpointing in speculative versioning caches |
US20110055482A1 (en) * | 2009-08-28 | 2011-03-03 | Broadcom Corporation | Shared cache reservation |
US8713277B2 (en) | 2010-06-01 | 2014-04-29 | Apple Inc. | Critical word forwarding with adaptive prediction |
US8935475B2 (en) * | 2012-03-30 | 2015-01-13 | Ati Technologies Ulc | Cache management for memory operations |
US9311101B2 (en) | 2012-06-15 | 2016-04-12 | International Business Machines Corporation | Intra-instructional transaction abort handling |
US9298631B2 (en) | 2012-06-15 | 2016-03-29 | International Business Machines Corporation | Managing transactional and non-transactional store observability |
US9262320B2 (en) | 2012-06-15 | 2016-02-16 | International Business Machines Corporation | Tracking transactional execution footprint |
US9298469B2 (en) | 2012-06-15 | 2016-03-29 | International Business Machines Corporation | Management of multiple nested transactions |
US9223687B2 (en) * | 2012-06-15 | 2015-12-29 | International Business Machines Corporation | Determining the logical address of a transaction abort |
US9015419B2 (en) | 2012-06-15 | 2015-04-21 | International Business Machines Corporation | Avoiding aborts due to associativity conflicts in a transactional environment |
CN103885890B (zh) * | 2012-12-21 | 2017-04-12 | 华为技术有限公司 | 高速缓冲存储器cache中cache块的替换处理方法和装置 |
US9589606B2 (en) * | 2014-01-15 | 2017-03-07 | Samsung Electronics Co., Ltd. | Handling maximum activation count limit and target row refresh in DDR4 SDRAM |
US9632775B2 (en) | 2014-02-11 | 2017-04-25 | Apple Inc. | Completion time prediction for vector instructions |
US9442734B2 (en) * | 2014-02-11 | 2016-09-13 | Apple Inc. | Completion time determination for vector instructions |
US9672180B1 (en) | 2014-08-06 | 2017-06-06 | Sanmina Corporation | Cache memory management system and method |
US9715428B1 (en) * | 2014-09-24 | 2017-07-25 | Sanmina Corporation | System and method for cache data recovery |
US9760314B2 (en) | 2015-05-29 | 2017-09-12 | Netapp, Inc. | Methods for sharing NVM SSD across a cluster group and devices thereof |
US9952797B2 (en) | 2015-07-31 | 2018-04-24 | Netapp, Inc. | Systems, methods and devices for addressing data blocks in mass storage filing systems |
US10257273B2 (en) | 2015-07-31 | 2019-04-09 | Netapp, Inc. | Systems, methods and devices for RDMA read/write operations |
GB2543745B (en) * | 2015-10-15 | 2018-07-04 | Advanced Risc Mach Ltd | An apparatus and method for operating a virtually indexed physically tagged cache |
US10262721B2 (en) * | 2016-03-10 | 2019-04-16 | Micron Technology, Inc. | Apparatuses and methods for cache invalidate |
TWI611296B (zh) | 2017-04-13 | 2018-01-11 | 慧榮科技股份有限公司 | 記憶體控制器與資料儲存裝置 |
TWI676104B (zh) * | 2017-04-13 | 2019-11-01 | 慧榮科技股份有限公司 | 記憶體控制器與資料儲存裝置 |
US10585734B2 (en) * | 2018-01-04 | 2020-03-10 | Qualcomm Incorporated | Fast invalidation in peripheral component interconnect (PCI) express (PCIe) address translation services (ATS) |
US10528482B2 (en) | 2018-06-04 | 2020-01-07 | International Business Machines Corporation | Cache management |
US11334495B2 (en) * | 2019-08-23 | 2022-05-17 | Arm Limited | Cache eviction |
US11947456B2 (en) * | 2021-09-30 | 2024-04-02 | Advanced Micro Devices, Inc. | Weak cache line invalidation requests for speculatively executing instructions |
US11822479B2 (en) * | 2021-10-29 | 2023-11-21 | Advanced Micro Devices, Inc. | History-based selective cache line invalidation requests |
US11720444B1 (en) * | 2021-12-10 | 2023-08-08 | Amazon Technologies, Inc. | Increasing of cache reliability lifetime through dynamic invalidation and deactivation of problematic cache lines |
CN114726759B (zh) * | 2022-02-21 | 2024-03-22 | 清华大学 | 一种本机或远程通信请求延迟异常监控方法和装置 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH03154948A (ja) * | 1989-11-13 | 1991-07-02 | Toshiba Corp | 情報処理装置 |
US5197144A (en) * | 1990-02-26 | 1993-03-23 | Motorola, Inc. | Data processor for reloading deferred pushes in a copy-back data cache |
DE69219433T2 (de) * | 1991-11-04 | 1997-12-11 | Sun Microsystems Inc | Virtueller Durchschreibcachespeicher Synonym-Adressierung und Cache-Ungültigkeitserklärungen |
JP3013631B2 (ja) * | 1992-09-28 | 2000-02-28 | 日本電気株式会社 | キャッシュメモリ同期方法 |
JPH06242977A (ja) * | 1993-02-16 | 1994-09-02 | Mitsubishi Electric Corp | 1チップマイクロプロセッサ |
US5717895A (en) | 1994-12-01 | 1998-02-10 | Cray Research, Inc. | Associative scalar data cache with write-through capabilities for a vector processor |
GB9521977D0 (en) * | 1995-10-26 | 1996-01-03 | Sgs Thomson Microelectronics | Cache memory |
JPH09190379A (ja) * | 1996-01-10 | 1997-07-22 | Mitsubishi Electric Corp | キャッシュシステム |
US5835950A (en) * | 1996-07-12 | 1998-11-10 | Samsung Electronics Co., Ltd. | Self-invalidation method for reducing coherence overheads in a bus-based shared-memory multiprocessor apparatus |
JP3083786B2 (ja) * | 1996-09-30 | 2000-09-04 | 株式会社東芝 | メモリ更新履歴保存装置およびメモリ更新履歴保存方法 |
TW379298B (en) | 1996-09-30 | 2000-01-11 | Toshiba Corp | Memory updating history saving device and memory updating history saving method |
US6175906B1 (en) | 1996-12-06 | 2001-01-16 | Advanced Micro Devices, Inc. | Mechanism for fast revalidation of virtual tags |
US5924118A (en) | 1997-04-14 | 1999-07-13 | International Business Machines Corporation | Method and system for speculatively sourcing cache memory data prior to upstream cache invalidation within a multiprocessor data-processing system |
US6119205A (en) | 1997-12-22 | 2000-09-12 | Sun Microsystems, Inc. | Speculative cache line write backs to avoid hotspots |
JP2001034533A (ja) * | 1999-07-21 | 2001-02-09 | Nec Kofu Ltd | キャッシュコヒーレンシ制御装置、2次キャッシュメモリ、中央処理装置、マルチプロセッサシステム、プロセッサノード、キャッシュコヒーレンシ制御方法 |
-
2001
- 2001-05-16 US US09/859,290 patent/US6725337B1/en not_active Expired - Lifetime
-
2002
- 2002-03-21 WO PCT/US2002/008804 patent/WO2002093385A2/en active IP Right Grant
- 2002-03-21 CN CNB028099834A patent/CN1248118C/zh not_active Expired - Lifetime
- 2002-03-21 EP EP02717694A patent/EP1388065B1/en not_active Expired - Lifetime
- 2002-03-21 DE DE60222402T patent/DE60222402T2/de not_active Expired - Lifetime
- 2002-03-21 KR KR1020037014899A patent/KR100885277B1/ko not_active IP Right Cessation
- 2002-03-21 AU AU2002248679A patent/AU2002248679A1/en not_active Abandoned
- 2002-03-21 JP JP2002589993A patent/JP4128878B2/ja not_active Expired - Fee Related
- 2002-04-22 TW TW091108186A patent/TW591384B/zh not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
EP1388065B1 (en) | 2007-09-12 |
DE60222402D1 (de) | 2007-10-25 |
CN1509436A (zh) | 2004-06-30 |
TW591384B (en) | 2004-06-11 |
CN1248118C (zh) | 2006-03-29 |
AU2002248679A1 (en) | 2002-11-25 |
US6725337B1 (en) | 2004-04-20 |
KR100885277B1 (ko) | 2009-02-23 |
EP1388065A2 (en) | 2004-02-11 |
JP2004529435A (ja) | 2004-09-24 |
KR20030097871A (ko) | 2003-12-31 |
WO2002093385A2 (en) | 2002-11-21 |
WO2002093385A3 (en) | 2003-10-09 |
DE60222402T2 (de) | 2008-05-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4128878B2 (ja) | キャッシュ中のラインを投機的に無効にする方法とシステム | |
US11803486B2 (en) | Write merging on stores with different privilege levels | |
US8782348B2 (en) | Microprocessor cache line evict array | |
US6366984B1 (en) | Write combining buffer that supports snoop request | |
US7032074B2 (en) | Method and mechanism to use a cache to translate from a virtual bus to a physical bus | |
US6085291A (en) | System and method for selectively controlling fetching and prefetching of data to a processor | |
US5715428A (en) | Apparatus for maintaining multilevel cache hierarchy coherency in a multiprocessor computer system | |
US7383394B2 (en) | Microprocessor, apparatus and method for selective prefetch retire | |
US7237068B2 (en) | Computer system employing bundled prefetching and null-data packet transmission | |
US20110072218A1 (en) | Prefetch promotion mechanism to reduce cache pollution | |
US20140237174A1 (en) | Highly Efficient Design of Storage Array Utilizing Multiple Cache Lines for Use in First and Second Cache Spaces and Memory Subsystems | |
US20090132750A1 (en) | Cache memory system | |
US20070136535A1 (en) | System and Method for Reducing Unnecessary Cache Operations | |
US20060064547A1 (en) | Method and apparatus for run-ahead victim selection to reduce undesirable replacement behavior in inclusive caches | |
JPH0962572A (ja) | ストリーム・フィルタ装置及び方法 | |
JP2000250813A (ja) | I/oキャッシュ・メモリにおけるデータ管理方法 | |
US7380068B2 (en) | System and method for contention-based cache performance optimization | |
US7165146B2 (en) | Multiprocessing computer system employing capacity prefetching | |
US6976130B2 (en) | Cache controller unit architecture and applied method | |
JP3732397B2 (ja) | キャッシュシステム | |
US7035981B1 (en) | Asynchronous input/output cache having reduced latency | |
GB2401227A (en) | Cache line flush instruction and method |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050317 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20051003 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20070508 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070515 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20070814 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20070821 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20070918 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20070926 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20071015 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20071022 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20071115 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20071211 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080311 |
|
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: 20080422 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20080515 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110523 Year of fee payment: 3 |
|
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: 20120523 Year of fee payment: 4 |
|
LAPS | Cancellation because of no payment of annual fees |