JP2005528694A - スレッド識別子に基づくキャッシュ追い出しを用いたマルチスレッド化キャッシュのための方法および装置 - Google Patents
スレッド識別子に基づくキャッシュ追い出しを用いたマルチスレッド化キャッシュのための方法および装置 Download PDFInfo
- Publication number
- JP2005528694A JP2005528694A JP2004509798A JP2004509798A JP2005528694A JP 2005528694 A JP2005528694 A JP 2005528694A JP 2004509798 A JP2004509798 A JP 2004509798A JP 2004509798 A JP2004509798 A JP 2004509798A JP 2005528694 A JP2005528694 A JP 2005528694A
- Authority
- JP
- Japan
- Prior art keywords
- cache
- thread
- memory
- directory
- given
- 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.)
- Withdrawn
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/12—Replacement control
-
- 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/0893—Caches characterised by their organisation or structure
- G06F12/0895—Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
-
- 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/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0842—Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/128—Replacement control using replacement algorithms adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel
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
マルチスレッド化プロセッサで使用するためのキャッシュ・メモリは、いくつかのセット連想スレッド・キャッシュを含み、それらのスレッド・キャッシュ(400’)の1つまたは複数は、それぞれ、キャッシュ・メモリで必要とされる置換ポリシー記憶の量を削減するスレッドベースの追い出しプロセスを実装する。例示的実施形態におけるスレッド・キャッシュのうちの少なくとも所与の1つは、複数のメモリ位置のセット(セット1〜セット4)を有するメモリ・アレイ(402)、および、それぞれメモリ位置のうちの1つの特定のアドレスの少なくとも一部分に対応するタグ(404−k)を格納するディレクトリ(404)を含む。ディレクトリ(404)は、それぞれそのタグ(404−k)のうちの複数を格納する複数のエントリを有し、メモリ・アレイ中にnセットのメモリ位置がある場合には、各ディレクトリ・エントリに関連付けられたn個のタグ(404−k)がある。ディレクトリ(404)は、アクセス要求とメモリ・アレイのメモリ位置の間のセット連想アドレス・マッピングを実施する際に利用される。メモリ位置のうちの特定の1つにあるエントリが、少なくとも一部は所与のスレッド・キャッシュのスレッド識別子の少なくとも一部分に基づき、キャッシュ・ミス・イベントに伴う所与のスレッド・キャッシュからの追い出しのために選択される。
Description
本発明は、一般に、コンピュータ・アーキテクチャの分野に関し、より詳細には、マルチスレッド化プロセッサでの使用のためのキャッシュ・メモリに関する。
本発明は、参照により本明細書に組み込まれている、本出願と同時に出願した、「Method and Apparatus for Multithreaded Cache with Simplified Implementation of Cache Replacement Policy」という名称の米国特許出願整理番号第1007−3号に記載の発明に関連するものである。
公知のように、プロセッサは、しばしば、様々な記憶要素の階層を含むメモリ・システムと併せて使用される。例えば、そのようなメモリ・システムには、参照により本明細書に組み込まれている、M.J.Flynn、「Computer Architecture:Pipelined and Parallel Processor Design」、Jones and Bartlett Publishers、ボストン、マサチューセッツ州、1995年などに記載されるように、外部記憶装置、メイン・メモリおよびキャッシュ・メモリが含まれ得る。
外部記憶装置は、階層的メモリ・システム中の最上位メモリを表し、アクセス時間の点でプロセッサから最も遠いとみなされ、通常は、アクセスするのに多数のサイクルを必要とする。代表的な例が、ハード・ドライブである。外部記憶装置は、ギガバイト(GB)程度の容量、および約10−3秒のアクセス時間を持ち得る。
メイン・メモリまたはレベル1メモリは、プロセッサに対してアクセス時間の点で適度な近さにある。代表的な例が、動的ランダム・アクセス・メモリ(DRAM)である。この典型的な容量はメガバイト(MB)程度であるが、アクセス時間は外部記憶装置よりはるかに高速であり、通常、10−8秒程度である。
キャッシュ・メモリは、レベル0メモリまたは単に「キャッシュ」とも呼ばれ、最も頻繁に使用されるデータへの効率的で高速のアクセスを実現し、アクセス時間の点ではプロセッサの最も近くにある。代表的な例が、静的ランダム・アクセス・メモリ(SRAM)である。これは、通常は小型で、キロバイト(kB)程度の容量を持つが、アクセス時間は非常に高速で、10−9秒程度である。
キャッシュ・メモリは局所性の原理に基づいて機能する。局所性には、空間的局所性、時間的局所性または連続的局所性が含まれ得る。空間的局所性とは、プロセッサによって実行されているプログラムが、その実行期間中に同じまたは隣接するメモリ位置にアクセスする可能性をいう。時間的局所性とは、プログラムがいくつかの異なる位置へのアクセスのシーケンスを含む場合に、このシーケンスに続くアクセスも、このシーケンスに関連する位置に対して行われる確率が高い特性をいう。連続的局所性とは、特定の位置sに対してアクセスが行われた場合に、後続のアクセスがその位置s+1に対して行われる可能性が高い特性をいう。本明細書では、プロセッサ・データ・アクセスも「参照」と呼ぶ。
キャッシュ制御装置により実施されるアドレス・マッピング制御機能は、データがどのようにキャッシュに格納され、レベル1以上のレベルのメモリからキャッシュに移動されるかを決定する。特定のプロセッサ・データ・アクセスがキャッシュによって満たされる場合、そのアクセスを「キャッシュ・ヒット」と呼び、そうでない場合を「キャッシュ・ミス」と呼ぶ。キャッシュは、通常、上位レベルのメモリからメモリのラインをフェッチする。ラインのサイズは、一般に、実行中のプログラムの期待される空間的局所性と一致するように設計される。
キャッシュは、要求時にデータをフェッチし、またはデータをプリフェッチするように編成され得る。大部分のプロセッサは、要求時フェッチ方式を用い、キャッシュ・ミスが発生すると、キャッシュ制御装置が現在のラインを追い出し、それをプロセッサにより参照されるラインで置き換える。プリフェッチ方式では、キャッシュ制御装置は、どのラインが必要とされるかを予測しようとし、次いで、それらのラインを、プロセッサが参照する前にキャッシュに移動する。
従来のキャッシュ・メモリで使用されるアドレス・マッピング制御の3つの基本方式は、完全連想マッピング、直接マッピングおよびセット連想マッピングである。完全連想マッピング方式と直接マッピング方式を、それぞれ、図1と図2に示す。これらの図では、例示を簡単明解にするために、キャッシュ制御装置およびそれに対応するマッピング論理回路の少なくとも一部分が省略されている。
図1に完全連想アドレス・マッピングを利用するキャッシュ・メモリ100を示す。キャッシュ100はメモリ・アレイ102およびディレクトリ104を含む。図には、キャッシュがアクセス要求106を処理する方式が示されている。アクセス要求106はタグ110、オフセット112、およびバイト/ワード(B/W)選択フィールド114を含む。説明のために、アクセス要求106の部分110、部分112、部分114の長さを、それぞれ、18ビット、3ビット、3ビットとする。タグ110はディレクトリ104中のエントリに対して比較される。キャッシュ・ヒットは、ディレクトリ104の特定のエントリ104−k中のタグ120がアクセス要求106のタグ110にマッチする場合に生じる。この場合には、やはりディレクトリ104のエントリ104−kに格納されている対応するアドレス122を、アクセス要求106のオフセット112と併せて使用して、メモリ・アレイ102中の特定のライン102−jが識別される。次いで、要求されたラインがプロセッサに送られる。キャッシュ・ミスは、この例では、タグ110がディレクトリ104に格納されているどのタグにもマッチしない場合に生じる。図示のメモリ・アレイ102は、各8バイトずつの512ラインで構成された4kBのデータを含む。図に示すように、メモリ・アレイ102中の512ラインのうちの特定の1つは、ディレクトリ104からの6ビットのアドレス122と3ビットのオフセット112を組み合わせたものを含む一意の9ビット・アドレスによって識別される。
図2に、直接マッピングを利用するキャッシュ・メモリ200を示す。キャッシュ200はメモリ・アレイ202およびディレクトリ204を含む。図には、キャッシュがアクセス要求206を処理する方式が示されている。アクセス要求206は、タグ210、指標211、オフセット212およびB/Wフィールド214を含む。説明のために、アクセス要求206の部分210、部分211、部分212、部分214の長さを、それぞれ、10ビット、8ビット、3ビット、3ビットとする。直接マッピング方式によれば、指標211を用いてディレクトリ204中の特定のエントリ204−kが識別される。特定のエントリ204−kはタグ220を含む。指標211だけを用いてディレクトリ204中の特定のエントリが識別されるため、異なるアドレスを求めるアクセス要求がディレクトリ204中の同じ位置にマッピングされ得る。したがって、結果として生じるタグ220が、比較器222中のアクセス要求206のタグ210に比べられ、それら2つのタグがマッチする場合にはそのマッチ出力がロジック・ハイ・レベルにされ、そうでない場合にはロジック・ロー・レベルにされる。このマッチ出力は、指標211およびオフセット212に基づいて決定されたメモリ・アレイ202の特定のエントリ202−jがプロセッサに供給されるかどうか決定するゲート224のイネーブル信号として使用される。キャッシュ・ヒットは、ディレクトリ204のエントリ204−kに格納されているタグ220が、アクセス要求206のタグ210にマッチする場合に生じ、そうでない場合にはキャッシュ・ミスが生じる。図示のメモリ・アレイ202は、各8バイトずつの2048ラインで構成された、16kBのデータを含む。したがって、メモリ・アレイ202中の2048ラインのうちの特定の1つは、8ビットの指標211と3ビットのオフセット212を組み合わせたものを含む一意の11ビット・アドレスによって識別される。
セット連想キャッシュは、アクセス要求アドレスに複数の選択肢が存在し得ることを除いて、前述の直接マッピング・キャッシュ200と同様の方式で動作する。セット連想キャッシュのメモリ・アレイは異なる部分またはセットに分かれており、ディレクトリはその各エントリ中に、各タグがそれらのセットのうちの1つに対応する複数のタグを含む。各アクセス要求アドレスのタグ部分は、そのアクセス要求の指標部分で識別される、ディレクトリの特定のエントリ中のタグのそれぞれに比べられる。マッチが見つかった場合には、その比較結果も用いて、プロセッサへの送出のためにメモリ・アレイのセットのうちの1つからラインが選択される。
前述のキャッシュ・メモリのうちの1つでキャッシュ・ミスが発生した場合には、一般に、対応するデータがキャッシュから追い出され、正しいデータがフェッチされ、キャッシュに格納される。どのデータを追い出すべきか決定するためには多くの置換ポリシーが利用可能である。例えば、最低使用頻度(LRU)置換ポリシーは、時間的局所性を利用して、常に、キャッシュ中の最後にアクセスされた時間が最も古い位置の関連付けられたデータを除去しようとする。nリソース(nは、例えば、セット連想キャッシュ・メモリ中のセット数など)でのLRU置換ポリシーを実施する状態情報を維持するために、1つの公知の手法は、n2ビットの状態情報を必要とする。参照により本明細書に組み込まれている、G.A.Blaauwら、「Computer Architecture:Concepts and Evolution」、Addison−Wesley、レディング、マサチューセッツ州、1997年に記載されているように、この要件をn(n−1)/2ビットの状態情報にまで削減するさらなる改善方法も開発されている。キャッシュ・メモリで使用される他の置換ポリシーの例には、ランダム置換および先入れ先出し(FIFO)置換が含まれる。
図1および図2のメモリ・キャッシュの例は、メモリ位置からデータを読み取るプロセッサの状況で説明されている。類似のシナリオが、メモリ位置にデータを書き込むプロセッサにも存在する。その主要な違いは、データがプロセッサによってキャッシュのメモリ・アレイ中の適当な位置に書き込まれ、次いで、キャッシュが、このデータをいつメイン・メモリにライトバックすべきか決定する必要があることである。ライトスルー・キャッシュは、メイン・メモリとキャッシュ・メモリ・アレイの両方に即座に格納を行う。コピーバック・キャッシュは、所与のラインの任意の位置への書込みが発生した場合には、そのラインに「ダーティ」とマークし、メイン・メモリは、そのラインが追い出されることになっており、かつそれがダーティとマークされている場合に限り更新される。
米国特許出願整理番号第1007−3号
M.J.Flynn、「Computer Architecture:Pipelined and Parallel Processor Design」、Jones and Bartlett Publishers、ボストン、マサチューセッツ州、1995年
G.A.Blaauwら、「Computer Architecture:Concepts and Evolution」、Addison−Wesley、レディング、マサチューセッツ州、1997年
米国仮出願第60/341,289号
前述の方式の従来のキャッシュ・メモリに関連する重大な問題は、それらが、一般に、マルチスレッド化プロセッサ、すなわち、複数の別個の命令シーケンスまたは「スレッド」の同時実行をサポートするプロセッサと共に使用するために最適化されていないことである。したがって、マルチスレッド化プロセッサにおけるキャッシュ・メモリの実装のための改善された技法が求められている。
本発明は、改善されたマルチスレッド化キャッシュ・メモリを提供し、これは、例示的実施形態では、スレッド識別子を利用して、キャッシュ・ミスが発生した場合にキャッシュから追い出される1つまたは複数のラインあるいは他のエントリの決定を制御する。
本発明の一態様によれば、マルチスレッド化プロセッサで使用するためのキャッシュ・メモリは、いくつかのセット連想スレッド・キャッシュを含み、それらのスレッド・キャッシュのうちの1つまたは複数が、それぞれ、キャッシュ・メモリで必要とされる置換ポリシー記憶の量を削減するスレッドベースの追い出しプロセスを実装する。
例示の実施形態におけるスレッド・キャッシュの1つまたは複数は、それぞれ、複数のメモリ位置のセットを有するメモリ・アレイ、および、それぞれメモリ位置のうちの1つの特定のアドレスの少なくとも一部分に対応するタグを格納するディレクトリを含む。ディレクトリは、それぞれそのタグのうちの複数を格納する複数のエントリを有し、メモリ・アレイ中にnセットのメモリ位置がある場合には、各ディレクトリ・エントリに関連付けられたn個のタグがある。ディレクトリは、アクセス要求とメモリ・アレイのメモリ位置の間のセット連想アドレス・マッピングを実施する際に利用される。それらのメモリ位置の特定の1つにおけるエントリが、少なくとも一部はスレッド・キャッシュのスレッド識別子に基づき、キャッシュ・ミス・イベントに伴うスレッド・キャッシュからの追い出しのために選択される。
より具体的な例としては、ディレクトリを第1の部分と第2の部分に分けて、ディレクトリ中の所与のエントリが各部分に2つ以上のタグを持つようにし、スレッド識別子の最下位ビットを用いて、スレッド・キャッシュからの追い出しのためにタグがそこから選択されるディレクトリの一部分が選択されることが考えられる。スレッド識別子の最下位ビットを用いてディレクトリの特定の一部分が選択された後で、1つまたは複数の置換ポリシー・ビットを用いて選択された部分からの特定のタグが決定され得る。次いで、この特定のタグおよびそれに対応するメモリ位置エントリがキャッシュから追い出される。
有利には、本発明は、キャッシュ・メモリ中の置換ポリシー状態の複雑度を低減し、置換ポリシーが通常必要とされるはずのものよりも小規模な回路構成で実施され得るようにし、それによって前述した従来の方式に優る回路面積と省力化とを実現する。
本明細書では、本発明を、マルチスレッド化プロセッサのマルチスレッド化キャッシュ・メモリに実装されたものとして示す。ただし、本発明が、例示の実施形態の特定のマルチスレッド化キャッシュおよびプロセッサ構成の利用を必要とせず、より広く、そのために置換ポリシー回路複雑度の低減が求められており、スレッド化処理を伴う任意のセット連想キャッシュ・メモリ用途での使用に適するものであることを理解すべきである。
以下では、本発明によるマルチスレッド化キャッシュ・メモリを実装する例示的処理システム300を、図3A、図3B、図4、図5との関連で説明する。図3Aに処理システム300を、メイン・メモリ304に結合されたマルチスレッド化プロセッサ302を含むものとして示す。図3Bに、マルチスレッド化プロセッサ302の1つの可能な実施態様のより詳細な図を示す。この実施形態では、マルチスレッド化プロセッサ302は、マルチスレッド化キャッシュ310、データ・メモリ312、キャッシュ制御装置314、命令復号器316、レジスタ・ファイル318、および演算論理装置(ALU)のセット320を含む。本明細書では、マルチスレッド化キャッシュ310をキャッシュ・メモリとも呼ぶ。当分野の技術者には明らかなように、図3Aおよび図3Bに示す具体的構成は、例示を明解にするために単純化されており、明示的に示されていない他のまたは代替の要素も含まれ得ることを強調しておく必要がある。
マルチスレッド化キャッシュ310は、複数のスレッド・キャッシュ310−1、310−2、...310−Nを含み、Nは、一般に、マルチスレッド化プロセッサ302によりサポートされるスレッドの数を表す。したがって、各スレッドは、マルチスレッド化キャッシュ310中にそれに関連付けられた対応するスレッド・キャッシュを持つ。同様に、データ・メモリ312は、図にデータ・メモリ312−1、312−2、...312−Nで表すN個の異なるデータ・メモリ・インスタンスを含む。
マルチスレッド化キャッシュ310は、キャッシュ制御装置314を介してメイン・メモリ304とインターフェースをとる。キャッシュ制御装置314は、メイン・メモリ304から適当な命令がマルチスレッド化キャッシュ310にロードされることを保証する。この例示的実施形態でのキャッシュ制御装置314は、個々のスレッド・キャッシュ310−1、310−2、...310−Nに関連付けられた論理回路または他の処理要素と一緒に動作し、セット連想アドレス・マッピングおよび最低使用頻度(LRU)置換ポリシーの少なくとも一部分を実施する。以下で、セット連想アドレス・マッピングおよびLRU置換ポリシーを、図4および図5との関連でより詳細に説明する。ただし、例示の実施形態の具体的マッピング方式およびLRU置換ポリシーは、本発明を限定するものと解釈すべきではない。他のセット連想マッピング実施態様およびランダム置換やFIFO置換など代替の置換ポリシーも、本発明と一緒に使用され得る。
一般に、マルチスレッド化キャッシュ310は、マルチスレッド化プロセッサ302によって実行される命令を格納するのに使用され、データ・メモリ312は、それらの命令により処理されるデータを格納する。命令は、レジスタ・ファイル318およびALU320と一緒に動作して従来方式で命令実行を制御する命令復号器316により、マルチスレッド化キャッシュ310からフェッチされる。316、318、320などのマルチスレッド化プロセッサ要素の動作は当分野ではよく理解されており、したがって、本明細書ではこれ以上詳細には説明しない。
図4に、マルチスレッド化キャッシュ310のスレッド・キャッシュのうちの所与の1つで実装され得るセット連想アドレス・マッピングを示す。図4に示すように、このセット連想マッピングは、本発明の改善されたスレッドベースのキャッシュ追い出し技法を含まない。図5に、本発明によるスレッドベースのキャッシュ追い出しを組み込むように構成された図4のスレッド・キャッシュを示す。
最初に図4を参照すると、セット連想アドレス・マッピングを用いたスレッド・キャッシュ400が示されている。スレッド・キャッシュ400は、図3Bのマルチスレッド化キャッシュ310中のスレッド・キャッシュのうちの特定の1つに対応するものであると想定され、マルチスレッド化キャッシュ310中のその他のスレッド・キャッシュの全部または一部も同様に実施され得る。図示のスレッド・キャッシュ400は、メモリ・アレイ402およびディレクトリ404を含む。メモリ・アレイ402はいくつかの異なるメモリ位置のセットを含む。この実施形態では、異なるメモリ位置のセットの数は4つであり、それらのセットを図にセット1、セット2、セット3、セット4で表すが、他の実施形態では、4より多い、または少ないセットも使用し得るはずである。ディレクトリ404は複数のエントリを含み、各エントリは4つのタグを格納する。ディレクトリ404の所与のエントリ中のタグのそれぞれは、メモリ・アレイ402中のセットのうちの対応する1つにある特定のメモリ位置のアドレスに対応する。より具体的には、ディレクトリ404中の所与のエントリ404−kが、図示のように4つの別個のタグを含み、それらのタグのそれぞれが、メモリ・アレイ402の各セット、セット1、セット2、セット3またはセット4中のうちの1つの対応するメモリ位置へのマッピングを制御する。一般に、この方式のセット連想キャッシュでは、メモリ・アレイ402がnセットのメモリ位置を含む場合には、ディレクトリ404中の各エントリはn個のタグを格納する。したがって、ディレクトリ404は、各部分がディレクトリ404の各エントリ中の1つのタグだけと関連付けられている、図中の1、2、3、4で表す4つの部分に分かれているとみなすことができる。
図4のセット連想スレッド・キャッシュ400では、キャッシュによって処理される例示的アクセス要求406は、タグ410、指標411、オフセット412およびB/Wフィールド414を含む。アクセス要求は、マルチスレッド化プロセッサ302での命令フェッチ動作に関連して命令復号器316から発せられ得る。説明のために、アクセス要求406の部分410、部分411、部分412、部分414の長さを、それぞれ、12ビット、6ビット、3ビット、3ビットとする。これらのフィールド長およびその具体的アクセス要求構成は例として示すものにすぎず、決して本発明の範囲を限定するものであると解釈すべきではない。セット連想マッピング方式によれば、指標411を用いてディレクトリ404中の特定のエントリ404−kが識別される。特定のエントリ404−kは、この実施形態でのその他のディレクトリ・エントリのそれぞれと同様に、それぞれメモリ・アレイ402の各セット、セット1、セット2、セット3またはセット4のうちの1つに関連付けられた、図示の4つのタグを含む。これらのタグのそれぞれは、無制限に、タグ410と同じ長さ、すなわちこの実施形態では12ビットであると想定される。識別されたエントリ404−kのこれらのタグは、それぞれ、4つの比較器416のうちの対応する1つにあるタグ410に比べられる。より具体的には、ディレクトリ・エントリ404−kの部分1からの第1のタグが比較器416−1中のタグ410に比べられ、部分2からの第2のタグが比較器416−2中のタグ410に比べられ、部分3からの第3のタグが比較器416−3中のタグ410に比べられ、部分4からの第4のタグが比較器416−4中のタグ410に比べられる。比較器416の出力は、それぞれが各セット、セット1、セット2、セット3またはセット4のうちの対応する1つを選択する選択信号のセットを形成する。
タグ410とディレクトリ・エントリ404−kからのタグのうちの1つの間にマッチがあった場合には、対応する選択信号がイネーブルにされ、例えば、ロジック・ハイ・レベルにされる。そうでない場合には、キャッシュ・ミスがあり、選択信号はイネーブルにされない。一度に選択信号のうちの1つだけがイネーブルにされる。選択信号はマルチプレクサ418の選択信号入力に適用され、そこで、イネーブルにされた選択信号の特定の1つに基づき、プロセッサへの送出のために、メモリ・アレイ402の選択されたセット中の対応するメモリ位置からのラインが選択される。より具体的には、本実施形態では、要求されたラインが、マルチスレッド化プロセッサ302での復号化および実行のために、命令復号器316に送出され得る。
図示のメモリ・アレイ402は、各8バイトずつの2048ラインで構成された16kBのデータを含む。セット1、セット2、セット3、セット4の各セットは、それぞれ、512ラインを含む。したがって、メモリ・アレイ402の4つの異なるセットのうちの所与の1つの中のラインうちの特定の1つは一意の9ビット・アドレスにより識別可能であり、それは、この実施形態では、6ビットの指標411と3ビットのオフセット412を組み合わせたものを含む。
本発明の一態様によれば、メモリ・アレイ402の所与のセット中のメモリ位置のうちの特定の1つにあるラインまたは他のエントリが、少なくとも一部は所与のスレッド・キャッシュのスレッド識別子に基づき、キャッシュ・ミス・イベントに伴う追い出しのために選択される。前述したように、スレッドベースの追い出しプロセスを図5との関連でより詳細に説明する。
次に図5を参照すると、スレッド・キャッシュ400’が示されている。スレッド・キャッシュ400’は、図3Bのマルチスレッド化キャッシュ310中のスレッド・キャッシュのうちの特定の1つに対応し、マルチスレッド化キャッシュ310中のその他のスレッド・キャッシュの全部または一部も同様に構成され得る。スレッド・キャッシュ400’は、メモリ・アレイ402、ディレクトリ404、比較器416およびマルチプレクサ418を含み、それぞれ、アクセス要求406などのアクセス要求を処理するに際して、実質的に図4との関連で前述したように動作する。スレッド・キャッシュ400’は、下位または最下位ビット(LSB)504を含むスレッド識別子レジスタ502、追い出しエントリ決定マルチプレクサ506、508、およびこの実施形態ではLRU状態レジスタ510の形をとる置換ポリシー記憶要素をさらに含む。
スレッド識別子レジスタ502、追い出しエントリ決定マルチプレクサ506、508、およびLRU状態レジスタは、図5ではスレッド・キャッシュ400’の要素として示されているが、それぞれ、全部または一部をスレッド・キャッシュの外部に実装することも可能である。例えば、所与のスレッド・キャッシュにおけるアドレス・マッピングおよび置換ポリシー実装に関連する上記その他の要素は、その一部または全部をキャッシュ制御装置314に実装することも、マルチスレッド化プロセッサ302の別の部分に実装することもできる。
スレッド識別子レジスタ502は、マルチスレッド化プロセッサ302によってスレッド・キャッシュ400’に対応する特定のスレッドを識別するのに使用されるマルチビット・スレッド識別子を格納する。そのようなスレッド識別子は、当分野の技術者であれば理解するように、従来の方式で生成され得る。この例示的実施形態でのLRU状態レジスタ510は、状態情報の1ビット512を格納する1ビット・レジスタを含む。
本明細書で使用する「スレッド識別子」という用語は、マルチスレッド化プロセッサ中の個々のスレッドまたは複数のスレッドのセットを識別するのに適した任意の情報を含むためのものである。例をあげると、それだけに限らないが、スレッド識別子は、マルチスレッド化プロセッサ中のスレッド・カウンタの出力に対応し得る。より具体的には、所与のマルチスレッド化プロセッサは、複数のスレッドが、ラウンド・ロビン順など所定の順序で処理され、スレッド・カウンタ出力を用いて実行中の特定のスレッドが識別されるように構成され得る。そのような実施形態では、ラウンド・ロビン順で処理される合計8個のスレッドがあり、各スレッドが3ビットの識別子で識別され、3ビット・カウンタの出力を用いて処理中の特定のスレッドが識別され得ることが考えられる。他の実施形態では、スレッド識別子のカウンタ以外の実施態様を用いることが可能である。本発明と共に使用するのに適した多種多様なスレッド識別子構成が、当分野の技術者には容易に明らかになるであろう。
追い出しエントリ決定マルチプレクサ506、508は、合わせて、ディレクトリ404から追い出される特定のタグを決定し、それにより、メモリ・アレイ402中の対応するメモリ位置から追い出されるエントリが決定される。
図5に示すディレクトリ404は、図示のように左部分と右部分に分かれている。より具体的には、ディレクトリ404の左部分は、左から2つの部分1および部分2を含み、ディレクトリ404の右部分は、右から2つの部分3および部分4を含む。したがって、左部分と右部分は合わせてディレクトリ404全体を包含し、左部分と右部分は、それぞれ、ディレクトリ404の各エントリごとに2つのタグを含む。スレッド識別子レジスタ502のLSB504は、マルチプレクサ508の入力への伝搬のための4つの入力のうちの2つを選択するマルチプレクサ506への選択信号として適用される。マルチプレクサ506への4つの入力は、図示のようにt0L、t1L、t0R、t1Rで表され、それぞれ、ディレクトリの左部分からのタグ0、ディレクトリの左部分からのタグ1、ディレクトリの右部分からのタグ0、ディレクトリの右部分からのタグ1に対応する。LSB504を用いて、マルチプレクサ508の入力への伝搬のために左ディレクトリ・タグまたは右ディレクトリ・タグのどちらかが選択される。
したがって、マルチプレクサ508への入力は、左ディレクトリ・タグt0L、t1Lまたは右ディレクトリ・タグt0R、t1Rである。LRUビット512は、マルチプレクサ508に選択信号として供給され、それを用いて、スレッド・キャッシュ400’からの追い出しのために適用された左または右ディレクトリ・タグのうちの1つが選択される。追い出しのための所与のタグが選択された後で、そのタグおよびそれに対応するメモリ位置エントリを、従来の方式でスレッド・キャッシュから追い出すことができ、例えば、当分野でよく理解されている方式で新しいエントリ情報を用いて上書きすることもできる。
前述のスレッドベースのキャッシュ追い出し技法は、従来の技法と比べて著しい改善を提供する。例えば、この技法は、LRU置換ポリシーを実施するために格納される必要のある状態情報の量を大幅に削減する。より具体的には、前述の、4セットを用いた(すなわちn=4の)セット連想キャッシュに基づく例示的実施形態では、LRU置換ポリシーのための状態情報を格納するのに1つの1ビット・レジスタだけしか必要としない。前述の従来の技法がn2またはn(n−1)/2ビットの置換ポリシー状態情報を要するのに対し、前述の例示的実施形態でのスレッドベースの追い出し技法は、スレッド識別子の1ビットだけの使用を想定すると、n(n−2)/8ビットの状態情報を要する。この例示的実施形態によって実現される、従来技法に優る改善を、以下の表にnの例示的値の関数として示す。
さらに、置換ポリシーを実施するために格納される必要のある状態情報の量を削減することにより、本発明は、マルチスレッド化キャッシュ・メモリの回路面積および電力要件の削減も実現する。
前述したように、上記の表では、本発明のキャッシュ追い出し技法の実装に際して、スレッド識別子の1ビットだけの使用が想定されている。しかしながら、スレッド識別子の2つ以上のビットを使用することも可能である。例えば、n=8の実施形態では、そのディレクトリを、各部分が1ディレクトリ・エントリ当たり2つのタグを有する4つの部分に分割させ、スレッド識別子の下位2ビットを用いて、置換ポリシー状態情報に基づいて追い出しのためにそこからタグが選択される4つの部分のうちの特定の1つを選択することができるはずである。この例では、図5の例示的実施形態と同様に、置換ポリシー状態情報の1ビットだけしか必要とされない。
以上、キャッシュ・メモリのメモリ・アレイ中のメモリ位置への読取りアクセスとの関連で説明したが、本発明は、そのような位置への書込みアクセスにも使用され得る。あるいは、従来の書込み技法を、本明細書での開示に基づき、書込みアクセスのために本発明の技法を実装するように簡単に変更することも可能である。
前述したように、本発明は、セット連想マッピングの利用のために構成され得る任意のマルチスレッド化プロセッサで実装され得る。そのようなプロセッサのより具体的な例は、参照により本明細書に組み込まれている、2001年12月20日に出願された、米国仮出願第60/341,289号に詳細に記載されている。
前述の本発明の実施形態は、例示のためのものにすぎず、添付の特許請求の範囲内に含まれる多数の代替実施形態が当分野の技術者には明らかであろう。例えば、所与のスレッド・キャッシュ・ディレクトリは、図5に示す左部分と右部分以上に細かく、すなわち、3つ以上の別個の部分に分割し、ディレクトリ・エントリからの追い出しのために特定のタグを選択するのに用いられるスレッド識別子および置換ポリシー・ビットの数を適当に増加させることもできる。例示の実施形態で追い出しエントリ決定を実装するのに使用される具体的回路構成は、代替構成で置き換えることができる。セットの数nは、前述のように変動し得る。さらに、例示の実施形態のLRU置換ポリシーの代わりに、ランダム置換やFIFO置換など、他の置換ポリシーを用いることもできる。ランダム置換に関するより具体的な例としては、スレッド識別子の1つまたは複数のビットを用いて、所与のディレクトリ内のどこで特定のランダム置換が行われるかを決定することが考えられる。
Claims (15)
- マルチスレッド化プロセッサで使用するための、複数のスレッド・キャッシュを含むキャッシュ・メモリであって、前記スレッド・キャッシュのうちの少なくとも所与の1つが、
複数のメモリ位置のセットを含むメモリ・アレイと、
それぞれ前記メモリ位置のうちの1つの特定のアドレスの少なくとも一部分に対応するタグを格納し、それぞれ前記タグのうちの複数を格納する複数のエントリを有するディレクトリとを含み、
前記メモリ位置のうちの特定の1つにあるエントリが、少なくとも一部は前記所与のスレッド・キャッシュのスレッド識別子の少なくとも一部分に基づき、キャッシュ・ミス・イベントに伴う前記所与のスレッド・キャッシュからの追い出しのために選択されるキャッシュ・メモリ。 - 前記複数のメモリ位置のセットがnセットのメモリ位置を含み、前記ディレクトリ・エントリがそれぞれn個のタグを格納する請求項1に記載のキャッシュ・メモリ。
- 前記所与のスレッド・キャッシュに格納される置換ポリシー状態情報ビットの総数がおおよそn(n−2)/8で与えられる請求項2に記載のキャッシュ・メモリ。
- 前記所与のスレッド・キャッシュがセット連想キャッシュとして動作する請求項1に記載のキャッシュ・メモリ。
- 前記所与のスレッド・キャッシュが、前記スレッド識別子を格納するスレッド・レジスタをさらに含む請求項1に記載のキャッシュ・メモリ。
- 前記所与のスレッド・キャッシュが1つまたは複数の置換ポリシー・ビットを格納するレジスタをさらに含み、前記所与のスレッド・キャッシュからの追い出しのために選択される前記メモリ位置エントリが、少なくとも一部は前記スレッド識別子および前記1つまたは複数の格納された置換ポリシー・ビットに基づいて選択される請求項1に記載のキャッシュ・メモリ。
- 前記スレッド識別子の1つまたは複数のビットを用いて、前記所与のスレッド・キャッシュから追い出される前記エントリの決定のためにそこからタグが選択される前記ディレクトリの特定の一部分が決定され、前記特定の一部分がその所与のエントリ中にそれに関連付けられた複数のタグを有し、さらに前記1つまたは複数の格納された置換ポリシー・ビットが、前記スレッド識別子の前記1つまたは複数のビットに基づいて決定された前記特定の一部分に関連付けられた前記複数のタグから前記選択されたタグを決定する請求項6に記載のキャッシュ・メモリ。
- 前記所与のスレッド・キャッシュが、前記スレッド・キャッシュから追い出される前記特定のエントリの選択に際して最低使用頻度(LRU)置換ポリシーを利用する請求項1に記載のキャッシュ・メモリ。
- 前記スレッド識別子の1つまたは複数の最下位ビットを利用して、追い出される前記メモリ位置エントリに対応するタグがそこから選択される前記ディレクトリの特定の一部分が決定される請求項1に記載のキャッシュ・メモリ。
- 前記ディレクトリが第1の部分と第2の部分とに編成され、前記ディレクトリの前記エントリのそれぞれが、前記ディレクトリの前記第1の部分に1つまたは複数の関連付けられたタグと、前記ディレクトリの前記第2の部分に1つまたは複数の関連付けられたタグとを有し、さらに前記スレッド識別子の最下位ビットを用いて、追い出される前記エントリに対応するタグが前記ディレクトリの前記第1の部分から選択されるべきか、それとも前記ディレクトリの前記第2の部分から選択されるべきかが決定される請求項1に記載のキャッシュ・メモリ。
- 少なくとも前記所与のスレッド・キャッシュに関連付けられた追い出し決定回路をさらに含み、
前記スレッド識別子の1つまたは複数のビットに基づき、前記ディレクトリの所与のエントリ中のタグの総数の一部を選択する第1の選択回路と、
前記所与のスレッド・キャッシュに関連付けられた1つまたは複数の置換ポリシー・ビットに基づき、前記ディレクトリからの追い出しのために前記タグの一部の特定の1つを選択する第2の選択回路とを含む請求項1に記載のキャッシュ・メモリ。 - 前記第1の選択回路が、それぞれ前記タグのうちの1つに対応する複数の入力と、前記スレッド識別子の前記1つまたは複数のビットに対応する選択信号とを有する第1のマルチプレクサを含む請求項11に記載のキャッシュ・メモリ。
- 前記第2の選択回路が、それぞれ前記第1のマルチプレクサの出力に対応する複数の入力と、前記1つまたは複数の置換ポリシー・ビットに対応する選択信号とを有する第2のマルチプレクサを含む請求項12に記載のキャッシュ・メモリ。
- マルチスレッド化プロセッサであって、
前記プロセッサによって実行される命令を格納するキャッシュ・メモリと、
前記命令に従って処理されるデータを格納するデータ・メモリと、
前記キャッシュ・メモリからフェッチされた命令を復号化する命令復号器と、
前記復号化された命令に従って前記データに関する演算を実施する1つまたは複数の演算論理装置とを含み、
前記キャッシュ・メモリが複数のスレッド・キャッシュを含み、前記スレッド・キャッシュのうちの少なくとも所与の1つが、
複数のメモリ位置のセットを含むメモリ・アレイと、
それぞれ前記メモリ位置のうちの1つの特定のアドレスの少なくとも一部分に対応するタグを格納し、それぞれ前記タグのうちの複数を格納する複数のエントリを有するディレクトリとを含み、
前記メモリ位置のうちの特定の1つにあるエントリが、少なくとも一部は前記所与のスレッド・キャッシュのスレッド識別子の少なくとも一部分に基づき、キャッシュ・ミス・イベントに伴う前記所与のスレッド・キャッシュからの追い出しのために選択されるマルチスレッド化プロセッサ。 - マルチスレッド化プロセッサ中のキャッシュ・メモリの制御方法であって、前記キャッシュ・メモリが複数のスレッド・キャッシュを含み、前記スレッド・キャッシュの少なくとも所与の1つが、複数のメモリ位置のセットを有するメモリ・アレイと、それぞれ前記メモリ位置のうちの1つの特定のアドレスの少なくとも一部分に対応するタグを格納し、それぞれ前記タグのうちの複数を格納する複数のエントリを有するディレクトリとを含み、
前記所与のスレッド・キャッシュでのキャッシュ・ミス・イベントの発生を決定する工程と、
少なくとも一部は前記所与のスレッド・キャッシュのスレッド識別子の少なくとも一部分に基づき、前記キャッシュ・ミス・イベントに伴う前記所与のスレッド・キャッシュからの追い出しのために前記メモリ位置のうちの特定の1つにあるエントリを選択する工程とを含む方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/161,774 US6990557B2 (en) | 2002-06-04 | 2002-06-04 | Method and apparatus for multithreaded cache with cache eviction based on thread identifier |
PCT/US2003/017332 WO2003102780A1 (en) | 2002-06-04 | 2003-06-03 | Method and apparatus for multithreaded cache with cache eviction based on thread identifier |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2005528694A true JP2005528694A (ja) | 2005-09-22 |
Family
ID=29583482
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004509798A Withdrawn JP2005528694A (ja) | 2002-06-04 | 2003-06-03 | スレッド識別子に基づくキャッシュ追い出しを用いたマルチスレッド化キャッシュのための方法および装置 |
Country Status (7)
Country | Link |
---|---|
US (1) | US6990557B2 (ja) |
EP (1) | EP1532532A4 (ja) |
JP (1) | JP2005528694A (ja) |
KR (1) | KR100962058B1 (ja) |
CN (1) | CN1317645C (ja) |
AU (1) | AU2003243368A1 (ja) |
WO (1) | WO2003102780A1 (ja) |
Families Citing this family (38)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4363716B2 (ja) * | 1999-06-25 | 2009-11-11 | 株式会社東芝 | Lsiの配線構造の設計方法 |
JP3981070B2 (ja) * | 2003-12-26 | 2007-09-26 | 株式会社東芝 | キャッシュリプレース装置及びキャッシュリプレース方法 |
US7213107B2 (en) | 2003-12-31 | 2007-05-01 | Intel Corporation | Dedicated cache memory |
US8074051B2 (en) | 2004-04-07 | 2011-12-06 | Aspen Acquisition Corporation | Multithreaded processor with multiple concurrent pipelines per thread |
TW200625097A (en) * | 2004-11-17 | 2006-07-16 | Sandbridge Technologies Inc | Data file storing multiple date types with controlled data access |
EP1834231A1 (en) * | 2004-12-10 | 2007-09-19 | Koninklijke Philips Electronics N.V. | Data processing system and method for cache replacement |
US7853777B2 (en) * | 2005-02-04 | 2010-12-14 | Mips Technologies, Inc. | Instruction/skid buffers in a multithreading microprocessor that store dispatched instructions to avoid re-fetching flushed instructions |
US7490230B2 (en) | 2005-02-04 | 2009-02-10 | Mips Technologies, Inc. | Fetch director employing barrel-incrementer-based round-robin apparatus for use in multithreading microprocessor |
US7657891B2 (en) * | 2005-02-04 | 2010-02-02 | Mips Technologies, Inc. | Multithreading microprocessor with optimized thread scheduler for increasing pipeline utilization efficiency |
US7631130B2 (en) * | 2005-02-04 | 2009-12-08 | Mips Technologies, Inc | Barrel-incrementer-based round-robin apparatus and instruction dispatch scheduler employing same for use in multithreading microprocessor |
WO2007014261A2 (en) * | 2005-07-25 | 2007-02-01 | Sysair, Inc. | Cellular pc modem architecture and method of operation |
WO2008070250A2 (en) * | 2006-09-26 | 2008-06-12 | Sandbridge Technologies Inc. | Software implementation of matrix inversion in a wireless communication system |
WO2008060948A2 (en) * | 2006-11-10 | 2008-05-22 | Sandbridge Technologies, Inc. | Method and system for parallelization of pipelined computations |
US7958320B2 (en) * | 2006-12-05 | 2011-06-07 | Intel Corporation | Protected cache architecture and secure programming paradigm to protect applications |
US7610448B2 (en) * | 2006-12-27 | 2009-10-27 | Intel Corporation | Obscuring memory access patterns |
US7991956B2 (en) * | 2007-06-27 | 2011-08-02 | Intel Corporation | Providing application-level information for use in cache management |
US8171225B2 (en) * | 2007-06-28 | 2012-05-01 | Intel Corporation | Cache for a multi thread and multi core system and methods thereof |
EP2602710A1 (en) * | 2007-11-05 | 2013-06-12 | Aspen Acquisition Corporation | Method of encoding register instruction fields |
JP5217432B2 (ja) | 2007-12-28 | 2013-06-19 | 富士通株式会社 | セクタ機能付きキャッシュメモリ |
EP2250539A1 (en) * | 2008-01-30 | 2010-11-17 | Sandbridge Technologies, Inc. | Method for enabling multi-processor synchronization |
EP2245529A1 (en) * | 2008-02-18 | 2010-11-03 | Sandbridge Technologies, Inc. | Method to accelerate null-terminated string operations |
KR20100133964A (ko) * | 2008-03-13 | 2010-12-22 | 아스펜 액퀴지션 코포레이션 | 유효 어레이를 비활성화함으로써 전력을 절약하기 위한 방법 |
JP2011530744A (ja) | 2008-08-06 | 2011-12-22 | アスペン・アクイジション・コーポレーション | 停止可能および再始動可能dmaエンジン |
US8806101B2 (en) * | 2008-12-30 | 2014-08-12 | Intel Corporation | Metaphysical address space for holding lossy metadata in hardware |
AU2010201718B2 (en) * | 2010-04-29 | 2012-08-23 | Canon Kabushiki Kaisha | Method, system and apparatus for identifying a cache line |
KR20130084846A (ko) | 2012-01-18 | 2013-07-26 | 삼성전자주식회사 | 플래시 메모리를 기반으로 하는 저장 장치, 그것을 포함한 사용자 장치, 그리고 그것의 데이터 읽기 방법 |
US9122786B2 (en) * | 2012-09-14 | 2015-09-01 | Software Ag | Systems and/or methods for statistical online analysis of large and potentially heterogeneous data sets |
US9588893B2 (en) | 2014-11-10 | 2017-03-07 | International Business Machines Corporation | Store cache for transactional memory |
US9971693B2 (en) | 2015-05-13 | 2018-05-15 | Ampere Computing Llc | Prefetch tag for eviction promotion |
US10565121B2 (en) * | 2016-12-16 | 2020-02-18 | Alibaba Group Holding Limited | Method and apparatus for reducing read/write contention to a cache |
CN106649139B (zh) * | 2016-12-29 | 2020-01-10 | 北京奇虎科技有限公司 | 一种基于多个缓存的数据淘汰方法及装置 |
US10963256B2 (en) * | 2018-09-28 | 2021-03-30 | Intel Corporation | Systems and methods for performing instructions to transform matrices into row-interleaved format |
US10942904B2 (en) * | 2018-10-09 | 2021-03-09 | Arm Limited | Mapping first identifier to second identifier |
KR20200056548A (ko) * | 2018-11-14 | 2020-05-25 | 에스케이하이닉스 주식회사 | 캐시 시스템을 갖는 메모리 시스템 및 메모리 시스템에서의 캐싱 동작 제어방법 |
KR20200112435A (ko) | 2019-03-22 | 2020-10-05 | 에스케이하이닉스 주식회사 | 캐시 메모리, 이를 포함하는 메모리 시스템, 및 그의 동작 방법 |
CN112100089B (zh) * | 2020-07-30 | 2023-08-01 | 重庆兰德适普信息科技有限公司 | 内存管理方法 |
US11593109B2 (en) * | 2021-06-07 | 2023-02-28 | International Business Machines Corporation | Sharing instruction cache lines between multiple threads |
US11593108B2 (en) | 2021-06-07 | 2023-02-28 | International Business Machines Corporation | Sharing instruction cache footprint between multiple threads |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0673114B2 (ja) * | 1987-03-31 | 1994-09-14 | 日本電気株式会社 | キヤツシユ制御装置 |
JP3309425B2 (ja) * | 1992-05-22 | 2002-07-29 | 松下電器産業株式会社 | キャッシュ制御装置 |
US5381539A (en) * | 1992-06-04 | 1995-01-10 | Emc Corporation | System and method for dynamically controlling cache management |
US6205519B1 (en) * | 1998-05-27 | 2001-03-20 | Hewlett Packard Company | Cache management for a multi-threaded processor |
CN1168025C (zh) * | 1999-03-10 | 2004-09-22 | 国际商业机器公司 | 用于多线程处理机的指令高速缓存器 |
US6542991B1 (en) * | 1999-05-11 | 2003-04-01 | Sun Microsystems, Inc. | Multiple-thread processor with single-thread interface shared among threads |
US6341347B1 (en) * | 1999-05-11 | 2002-01-22 | Sun Microsystems, Inc. | Thread switch logic in a multiple-thread processor |
US6282617B1 (en) * | 1999-10-01 | 2001-08-28 | Sun Microsystems, Inc. | Multiple variable cache replacement policy |
US6405287B1 (en) * | 1999-11-17 | 2002-06-11 | Hewlett-Packard Company | Cache line replacement using cache status to bias way selection |
US6965982B2 (en) * | 2001-06-29 | 2005-11-15 | International Business Machines Corporation | Multithreaded processor efficiency by pre-fetching instructions for a scheduled thread |
US7127561B2 (en) * | 2001-12-31 | 2006-10-24 | Intel Corporation | Coherency techniques for suspending execution of a thread until a specified memory access occurs |
-
2002
- 2002-06-04 US US10/161,774 patent/US6990557B2/en not_active Expired - Lifetime
-
2003
- 2003-06-03 AU AU2003243368A patent/AU2003243368A1/en not_active Abandoned
- 2003-06-03 CN CNB038129469A patent/CN1317645C/zh not_active Expired - Fee Related
- 2003-06-03 JP JP2004509798A patent/JP2005528694A/ja not_active Withdrawn
- 2003-06-03 WO PCT/US2003/017332 patent/WO2003102780A1/en active Application Filing
- 2003-06-03 KR KR1020047019733A patent/KR100962058B1/ko not_active IP Right Cessation
- 2003-06-03 EP EP03756358A patent/EP1532532A4/en not_active Withdrawn
Also Published As
Publication number | Publication date |
---|---|
KR100962058B1 (ko) | 2010-06-08 |
AU2003243368A1 (en) | 2003-12-19 |
KR20050005535A (ko) | 2005-01-13 |
US20030225975A1 (en) | 2003-12-04 |
CN1317645C (zh) | 2007-05-23 |
EP1532532A4 (en) | 2008-05-07 |
CN1659526A (zh) | 2005-08-24 |
US6990557B2 (en) | 2006-01-24 |
WO2003102780A1 (en) | 2003-12-11 |
EP1532532A1 (en) | 2005-05-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2005528694A (ja) | スレッド識別子に基づくキャッシュ追い出しを用いたマルチスレッド化キャッシュのための方法および装置 | |
US6912623B2 (en) | Method and apparatus for multithreaded cache with simplified implementation of cache replacement policy | |
US5091851A (en) | Fast multiple-word accesses from a multi-way set-associative cache memory | |
USRE45078E1 (en) | Highly efficient design of storage array utilizing multiple pointers to indicate valid and invalid lines for use in first and second cache spaces and memory subsystems | |
US7284096B2 (en) | Systems and methods for data caching | |
JP4486750B2 (ja) | テンポラリ命令及び非テンポラリ命令用の共用キャッシュ構造 | |
US6640283B2 (en) | Apparatus for cache compression engine for data compression of on-chip caches to increase effective cache size | |
EP0695996B1 (en) | Multi-level cache system | |
US6425058B1 (en) | Cache management mechanism to enable information-type dependent cache policies | |
US20080168236A1 (en) | Performance of a cache by detecting cache lines that have been reused | |
US7380047B2 (en) | Apparatus and method for filtering unused sub-blocks in cache memories | |
KR20000069836A (ko) | 로킹을 사용한 캐시 대체방법 | |
US10725923B1 (en) | Cache access detection and prediction | |
JPH0364893B2 (ja) | ||
US20100217937A1 (en) | Data processing apparatus and method | |
EP2926257B1 (en) | Memory management using dynamically allocated dirty mask space | |
US20110320720A1 (en) | Cache Line Replacement In A Symmetric Multiprocessing Computer | |
JP3463292B2 (ja) | キャッシュ動作要求間の競合に応答して置換用の代替キャッシュ・エントリを選択する方法及びシステム | |
US6715040B2 (en) | Performance improvement of a write instruction of a non-inclusive hierarchical cache memory unit | |
US20190034335A1 (en) | Cache and method | |
EP0942376A1 (en) | Method and system for pre-fetch cache interrogation using snoop port | |
US20040117555A1 (en) | Method and system to overlap pointer load cache misses | |
US20110179227A1 (en) | Cache memory and method for cache entry replacement based on modified access order | |
US10268581B2 (en) | Cache hierarchy management | |
US7143239B2 (en) | Cache structure and methodology |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20060524 |
|
A761 | Written withdrawal of application |
Free format text: JAPANESE INTERMEDIATE CODE: A761 Effective date: 20081128 |