JP2005528695A - キャッシュ置換ポリシーの簡略化した実施態様を用いたマルチスレッド化キャッシュのための方法および装置 - Google Patents

キャッシュ置換ポリシーの簡略化した実施態様を用いたマルチスレッド化キャッシュのための方法および装置 Download PDF

Info

Publication number
JP2005528695A
JP2005528695A JP2004509799A JP2004509799A JP2005528695A JP 2005528695 A JP2005528695 A JP 2005528695A JP 2004509799 A JP2004509799 A JP 2004509799A JP 2004509799 A JP2004509799 A JP 2004509799A JP 2005528695 A JP2005528695 A JP 2005528695A
Authority
JP
Japan
Prior art keywords
cache
memory
directory
address
thread
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
Application number
JP2004509799A
Other languages
English (en)
Inventor
ホケネク,エルデム
シー. グロスナー,ジョン,
ジョセフ ホーン,アーサー
マウディル,メイアン
ワン,シェンホン
Original Assignee
サンドブリッジ テクノロジーズ インコーポレーテッド
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by サンドブリッジ テクノロジーズ インコーポレーテッド filed Critical サンドブリッジ テクノロジーズ インコーポレーテッド
Publication of JP2005528695A publication Critical patent/JP2005528695A/ja
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0864Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/123Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

マルチスレッド化プロセッサで使用するためのキャッシュ・メモリは、いくつかのセット連想スレッド・キャッシュを含み、それらのスレッド・キャッシュのうちの1つまたは複数は、それぞれ、キャッシュ・メモリで必要とされる置換ポリシー記憶の量を削減する、アクセス要求アドレスに基づく追い出しプロセスを実装する。例示的実施形態におけるスレッド・キャッシュのうちの少なくとも所与の1つは、複数のメモリ位置のセットを有するメモリ・アレイ、および、それぞれメモリ位置のうちの1つの特定のアドレスの少なくとも一部分に対応するタグを格納するディレクトリを含む。ディレクトリは、それぞれそのタグのうちの複数を格納する複数のエントリを有し、メモリ・アレイ中にnセットのメモリ位置がある場合には、各ディレクトリ・エントリに関連付けられたn個のタグがある。ディレクトリは、アクセス要求とメモリ・アレイのメモリ位置の間のセット連想アドレス・マッピングを実施する際に利用される。メモリ位置のうちの特定の1つにあるエントリが、少なくとも一部はキャッシュ・ミス・イベントに関連付けられたアクセス要求中のアドレスの少なくとも一部分に基づき、キャッシュ・ミス・イベントに伴う所与のスレッド・キャッシュからの追い出しのために選択される。

Description

本発明は、一般に、コンピュータ・アーキテクチャの分野に関し、より詳細には、マルチスレッド化プロセッサでの使用のためのキャッシュ・メモリに関する。
本発明は、参照により本明細書に組み込まれている、本明細書と同時に出願した「Method and Apparatus for Multithreaded Cache with Cache Eviction Based on Thread Identifier」という名称の米国特許出願整理番号第1007−2号に記載されている発明に関連するものである。
公知のように、プロセッサは、しばしば、様々な記憶要素の階層を含むメモリ・システムと併せて使用される。例えば、そのようなメモリ・システムには、参照により本明細書に組み込まれている、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つの公知の手法は、nビットの状態情報を必要とする。参照により本明細書に組み込まれている、G.A.Blaauwら、「Computer Architecture:Concepts and Evolution」、Addison−Wesley、レディング、マサチューセッツ州、1997年に記載されているように、この要件をn(n−1)/2ビットの状態情報にまで削減するさらなる改善方法も開発されている。キャッシュ・メモリで使用される他の置換ポリシーの例には、ランダム置換および先入れ先出し(FIFO)置換が含まれる。
図1および図2のメモリ・キャッシュの例は、メモリ位置からデータを読み取るプロセッサの状況で説明されている。類似のシナリオが、メモリ位置にデータを書き込むプロセッサにも存在する。その主要な違いは、データがプロセッサによってキャッシュのメモリ・アレイ中の適当な位置に書き込まれ、次いで、キャッシュが、このデータをいつメイン・メモリにライトバックすべきか決定する必要があることである。ライトスルー・キャッシュは、メイン・メモリとキャッシュ・メモリ・アレイの両方に即座に格納を行う。コピーバック・キャッシュは、所与のラインの任意の位置への書込みが発生した場合には、そのラインに「ダーティ」とマークし、メイン・メモリは、そのラインが追い出されることになっており、かつそれがダーティとマークされている場合に限り更新される。
米国特許出願整理番号第1007−2号 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フィールド214を含む。アクセス要求は、マルチスレッド化プロセッサ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を組み合わせたものを含む。
図4の実施形態でのタグ410、指標411およびオフセット412は、一括して、アクセス要求406に関連付けられたアドレスとみなされ得る。本明細書で使用する「アドレス」という用語は、アドレス関連の情報を含むアクセス要求の任意の1つまたは複数の部分を含むものであると理解すべきである。本発明はどんな具体的なアクセス要求アドレス形式も必要としないことを理解されたい。さらに、アクセス要求406の具体的形式は、例示のためのものにすぎず、本発明の要件ではない。本発明による所与のアクセス要求は、他の形式では、図4に示すものより多い、または少ないアドレス情報を含み得るものであり、当分野の技術者には公知の種類の他の、または代替の情報を含み得るものである。
本発明の一態様によれば、メモリ・アレイ402の所与のセット中のメモリ位置のうちの特定の1つにあるラインまたは他のエントリが、少なくとも一部はアクセス要求アドレスに基づいて、キャッシュ・ミス・イベントに伴う追い出しのために選択される。前述のように、アドレスベースの追い出しプロセスを、図5との関連でより詳細に説明する。
次に図5を参照すると、スレッド・キャッシュ400’が示されている。スレッド・キャッシュ400’は、図3Bのマルチスレッド化キャッシュ310中のスレッド・キャッシュのうちの特定の1つに対応し、マルチスレッド化キャッシュ310中のその他のスレッド・キャッシュの全部または一部も、同様に構成され得る。スレッド・キャッシュ400’は、メモリ・アレイ402、ディレクトリ404、比較器416およびマルチプレクサ418を含み、それぞれ、アクセス要求406などのアクセス要求を処理するに際して、実質的に図4との関連で前述したように動作する。例示的実施形態におけるアドレスベースの追い出しプロセスは、アクセス要求406のタグ部分410の下位または最下位ビット(LSB)502を利用する。スレッド・キャッシュ400’は、追い出しエントリ決定マルチプレクサ506、508、およびこの実施形態ではLRU状態レジスタ510の形をとる置換ポリシー記憶要素をさらに含む。この例示的実施形態でのLRU状態レジスタ510は、状態情報の1ビット512を格納する1ビット・レジスタを含む。
追い出しエントリ決定マルチプレクサ506、508、およびLRU状態レジスタ510は、図5ではスレッド・キャッシュ400’の要素として示されているが、それぞれ、全部または一部をスレッド・キャッシュの外部に実装することも可能である。例えば、所与のスレッド・キャッシュにおけるアドレス・マッピングおよび置換ポリシー実装に関連する上記その他の要素は、その一部または全部をキャッシュ制御装置314に実装することも、マルチスレッド化プロセッサ302の別の部分にも実装することもできる。
追い出しエントリ決定マルチプレクサ506、508は、合わせて、ディレクトリ404から追い出される特定のタグを決定し、それにより、メモリ・アレイ402中の対応するメモリ位置から追い出されるエントリが決定される。
図5に示すディレクトリ404は、図示のように左部分と右部分に分かれている。より具体的には、ディレクトリ404の左部分は、左から2つの部分1および部分2を含み、ディレクトリ404の右部分は、右から2つの部分3および部分4を含む。したがって、左部分と右部分は合わせてディレクトリ404全体を包含し、左部分と右部分は、それぞれ、ディレクトリ404の各エントリごとに2つのタグを含む。アクセス要求406のタグ部分410のLSB502は、マルチプレクサ508の入力への伝搬のための4つの入力のうちの2つを選択するマルチプレクサ506への選択信号として適用される。マルチプレクサ506への4つの入力は、図示のようにt0L、t1L、t0R、t1Rで表され、それぞれ、ディレクトリの左部分からのタグ0、ディレクトリの左部分からのタグ1、ディレクトリの右部分からのタグ0、ディレクトリの右部分からのタグ1に対応する。LSB502を用いて、マルチプレクサ508の入力への伝搬のために左ディレクトリ・タグまたは右ディレクトリ・タグのどちらかが選択される。
したがって、マルチプレクサ508への入力は、左ディレクトリ・タグt0L、t1Lまたは右ディレクトリ・タグt0R、t1Rである。LRUビット512は、マルチプレクサ508に選択信号として供給され、それを用いて、スレッド・キャッシュ400’からの追い出しのために適用された左または右ディレクトリ・タグのうちの1つが選択される。追い出しのための所与のタグが選択された後で、そのタグおよびそれに対応するメモリ位置エントリを、従来の方式でスレッド・キャッシュから追い出すことができ、例えば、当分野でよく理解されている方式で新しいエントリ情報を用いて上書きすることもできる。
図5の実施形態では、キャッシュ追い出しプロセスでアクセス要求アドレスのタグ部分410のLSB502が用いられるが、これは例としてあげただけにすぎない。他の実施形態では、例えば、タグ部分の複数の下位ビット、アクセス要求アドレスの他の部分の1つまたは複数のビットなど、アクセス要求アドレスの他の部分も使用され得る。所与の実施形態で使用される特定の部分は、一般に、アクセス要求形式、アドレス形式、キャッシュ・メモリ構成など、用途別の要因に左右されるであろう。
前述のアドレスベースのキャッシュ追い出し技法は、従来の技法と比べて著しい改善を提供する。例えば、この技法は、LRU置換ポリシーを実施するために格納される必要のある状態情報の量を大幅に削減する。より具体的には、前述の、4セットを用いた(すなわちn=4の)セット連想キャッシュに基づく例示的実施形態では、LRU置換ポリシーのための状態情報を格納するのに1つの1ビット・レジスタだけしか必要としない。前述の従来の技法がnまたはn(n−1)/2ビットの置換ポリシー状態情報を要するのに対し、前述の例示的実施形態でのアドレスベースの追い出し技法は、アクセス要求アドレスの1ビットだけの使用を想定すると、n(n−2)/8ビットの状態情報を要する。この例示的実施形態によって実現される、従来技法に優る改善を、以下の表にnの例示的値の関数として示す。
Figure 2005528695
さらに、置換ポリシーを実施するために格納される必要のある状態情報の量を削減することにより、本発明は、マルチスレッド化キャッシュ・メモリの回路面積および電力要件の削減も実現する。
前述したように、上記の表では、本発明のキャッシュ追い出し技法の実装に際して、アクセス要求アドレスの1ビットだけの使用が想定されている。しかしながら、アクセス要求アドレスの2つ以上のビットを使用することも可能である。例えば、n=8の実施形態では、そのディレクトリを、各部分が1ディレクトリ・エントリ当たり2つのタグを有する4つの部分に分割させ、アクセス要求アドレスのタグ部分の下位2ビットを用いて、置換ポリシー状態情報に基づいて追い出しのためにそこからタグが選択される4つの部分のうちの特定の1つを選択することができるはずである。この例では、図5の例示的実施形態と同様に、置換ポリシー状態情報の1ビットだけしか必要とされない。
以上、キャッシュ・メモリのメモリ・アレイ中のメモリ位置への読取りアクセスとの関連で説明したが、本発明は、そのような位置への書込みアクセスにも使用され得る。あるいは、従来の書込み技法を、本明細書での開示に基づき、書込みアクセスのために本発明の技法を実装するように簡単に変更することも可能である。
前述したように、本発明は、セット連想マッピングの利用のために構成され得る任意のマルチスレッド化プロセッサで実装され得る。そのようなプロセッサのより具体的な例は、参照により本明細書に組み込まれている、2001年12月20日に出願された、米国仮出願第60/341,289号に詳細に記載されている。
前述の本発明の実施形態は、例示のためのものにすぎず、添付の特許請求の範囲内に含まれる多数の代替実施形態が当分野の技術者には明らかであろう。例えば、所与のスレッド・キャッシュ・ディレクトリは、図5に示す左部分と右部分以上に細かく、すなわち、3つ以上の別個の部分に分割し、ディレクトリ・エントリからの追い出しのために特定のタグを選択するのに用いられるアクセス要求アドレスおよび置換ポリシー・ビットの数を適当に増加させることもできる。例示の実施形態で追い出しエントリ決定を実装するのに使用される具体的回路構成は、代替構成で置き換えることができる。セットの数nは、前述のように変動し得る。さらに、例示の実施形態のLRU置換ポリシーの代わりに、ランダム置換やFIFO置換など、他の置換ポリシーを用いることもできる。ランダム置換に関するより具体的な例としては、アクセス要求アドレスの1つまたは複数のビットを用いて、所与のディレクトリ内のどこで特定のランダム置換が行われるかを決定することが考えられる。
完全連想マッピングを用いた従来のキャッシュ・メモリを示す図である。 直接マッピングを用いた従来のキャッシュ・メモリを示す図である。 本発明が実装される例示的処理システムを示す構成図である。 本発明が実装されるマルチスレッド化キャッシュを示す、図3Aの処理システムにおけるマルチスレッド化プロセッサのより詳細な構成図である。 本発明と併せて利用され得るセット連想アドレス・マッピングを用いたキャッシュ・メモリを示す図である。 本発明の例示的実施形態によるキャッシュ・メモリを示す図である。

Claims (15)

  1. マルチスレッド化プロセッサで使用するための、複数のスレッド・キャッシュを含むキャッシュ・メモリであって、前記スレッド・キャッシュのうちの少なくとも所与の1つが、
    複数のメモリ位置のセットを含むメモリ・アレイと、
    それぞれ前記メモリ位置のうちの1つの特定のアドレスの少なくとも一部分に対応するタグを格納し、それぞれ前記タグのうちの複数を格納する複数のエントリを有するディレクトリとを含み、
    前記メモリ位置のうちの特定の1つにあるエントリが、少なくとも一部は前記キャッシュ・ミス・イベントに関連するアクセス要求におけるアドレスの少なくとも一部分に基づき、キャッシュ・ミス・イベントに伴う前記所与のスレッド・キャッシュからの追い出しのために選択されるキャッシュ・メモリ。
  2. 前記複数のメモリ位置のセットがnセットのメモリ位置を含み、前記ディレクトリ・エントリがそれぞれn個のタグを格納する請求項1に記載のキャッシュ・メモリ。
  3. 前記所与のスレッド・キャッシュに格納される置換ポリシー状態情報ビットの総数がおおよそn(n−2)/8で与えられる請求項2に記載のキャッシュ・メモリ。
  4. 前記所与のスレッド・キャッシュがセット連想キャッシュとして動作する請求項1に記載のキャッシュ・メモリ。
  5. 前記アドレスの前記部分が前記アドレスのタグ部分の1つまたは複数のビットを含む請求項1に記載のキャッシュ・メモリ。
  6. 前記所与のスレッド・キャッシュが1つまたは複数の置換ポリシー・ビットを格納するレジスタをさらに含み、前記所与のスレッド・キャッシュからの追い出しのために選択される前記メモリ位置エントリが、少なくとも一部は前記アクセス要求アドレスおよび前記1つまたは複数の格納された置換ポリシー・ビットに基づいて選択される請求項1に記載のキャッシュ・メモリ。
  7. 前記アクセス要求アドレスの1つまたは複数のビットを用いて、前記所与のスレッド・キャッシュから追い出される前記エントリの決定のためにそこからタグが選択される前記ディレクトリの特定の一部分が決定され、前記特定の一部分がその所与のエントリ中にそれに関連付けられた複数のタグを有し、さらに前記1つまたは複数の格納された置換ポリシー・ビットが、前記アクセス要求アドレスの前記1つまたは複数のビットに基づいて決定された前記特定の一部分に関連付けられた前記複数のタグから前記選択されたタグを決定する請求項6に記載のキャッシュ・メモリ。
  8. 前記所与のスレッド・キャッシュが、前記スレッド・キャッシュから追い出される前記特定のエントリの選択に際して最低使用頻度(LRU)置換ポリシーを利用する請求項1に記載のキャッシュ・メモリ。
  9. 前記アクセス要求アドレスのタグ部分の1つまたは複数の最下位ビットを利用して、追い出される前記メモリ位置エントリに対応するタグがそこから選択される前記ディレクトリの特定の一部分が決定される請求項1に記載のキャッシュ・メモリ。
  10. 前記ディレクトリが第1の部分と第2の部分とに編成され、前記ディレクトリの前記エントリのそれぞれが、前記ディレクトリの前記第1の部分に1つまたは複数の関連付けられたタグと、前記ディレクトリの前記第2の部分に1つまたは複数の関連付けられたタグとを有し、さらに前記アクセス要求アドレスのタグ部分の最下位ビットを用いて、追い出される前記エントリに対応するタグが前記ディレクトリの前記第1の部分から選択されるべきか、それとも前記ディレクトリの前記第2の部分から選択されるべきかが決定される請求項1に記載のキャッシュ・メモリ。
  11. 少なくとも前記所与のスレッド・キャッシュに関連付けられた追い出し決定回路をさらに含み、
    前記アクセス要求アドレスの1つまたは複数のビットに基づき、前記ディレクトリの所与のエントリ中のタグの総数の一部を選択する第1の選択回路と、
    前記所与のスレッド・キャッシュに関連付けられた1つまたは複数の置換ポリシー・ビットに基づき、前記ディレクトリからの追い出しのために前記タグの一部の前記タグのうちの特定の1つを選択する第2の選択回路とを含む請求項1に記載のキャッシュ・メモリ。
  12. 前記第1の選択回路が、それぞれ前記タグのうちの1つに対応する複数の入力と、前記アクセス要求アドレスの前記1つまたは複数のビットに対応する選択信号とを有する第1のマルチプレクサを含む請求項11に記載のキャッシュ・メモリ。
  13. 前記第2の選択回路が、それぞれ前記第1のマルチプレクサの出力に対応する複数の入力と、前記1つまたは複数の置換ポリシー・ビットに対応する選択信号とを有する第2のマルチプレクサを含む請求項12に記載のキャッシュ・メモリ。
  14. マルチスレッド化プロセッサであって、
    前記プロセッサによって実行される命令を格納するキャッシュ・メモリと、
    前記命令に従って処理されるデータを格納するデータ・メモリと、
    前記キャッシュ・メモリからフェッチされた命令を復号化する命令復号器と、
    前記復号化された命令に従って前記データに関する演算を実施する1つまたは複数の演算論理装置とを含み、
    前記キャッシュ・メモリが複数のスレッド・キャッシュを含み、前記スレッド・キャッシュのうちの少なくとも所与の1つが、
    複数のメモリ位置のセットを含むメモリ・アレイと、
    それぞれ前記メモリ位置のうちの1つの特定のアドレスの少なくとも一部分に対応するタグを格納し、それぞれ前記タグのうちの複数を格納する複数のエントリを有するディレクトリとを含み、
    前記メモリ位置のうちの特定の1つにあるエントリが、少なくとも一部は前記キャッシュ・ミス・イベントに関連するアクセス要求におけるアドレスの少なくとも一部分に基づき、キャッシュ・ミス・イベントに伴う前記所与のスレッド・キャッシュからの追い出しのために選択されるマルチスレッド化プロセッサ。
  15. マルチスレッド化プロセッサ中のキャッシュ・メモリの制御方法であって、前記キャッシュ・メモリが複数のスレッド・キャッシュを含み、前記スレッド・キャッシュの少なくとも所与の1つが、複数のメモリ位置のセットを有するメモリ・アレイと、それぞれ前記メモリ位置のうちの1つの特定のアドレスの少なくとも一部分に対応するタグを格納し、それぞれ前記タグのうちの複数を格納する複数のエントリを有するディレクトリとを含み、
    前記所与のスレッド・キャッシュでのキャッシュ・ミス・イベントの発生を決定する工程と、
    少なくとも一部は前記キャッシュ・ミス・イベントに関連するアクセス要求におけるアドレスの少なくとも一部分に基づき、前記キャッシュ・ミス・イベントに伴う前記所与のスレッド・キャッシュからの追い出しのために前記メモリ位置のうちの特定の1つにあるエントリを選択する工程とを含む方法。
JP2004509799A 2002-06-04 2003-06-03 キャッシュ置換ポリシーの簡略化した実施態様を用いたマルチスレッド化キャッシュのための方法および装置 Withdrawn JP2005528695A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/161,874 US6912623B2 (en) 2002-06-04 2002-06-04 Method and apparatus for multithreaded cache with simplified implementation of cache replacement policy
PCT/US2003/017345 WO2003102781A1 (en) 2002-06-04 2003-06-03 Method and apparatus for multithreaded cache with simplified implementation of cache replacement policy

Publications (1)

Publication Number Publication Date
JP2005528695A true JP2005528695A (ja) 2005-09-22

Family

ID=29583502

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004509799A Withdrawn JP2005528695A (ja) 2002-06-04 2003-06-03 キャッシュ置換ポリシーの簡略化した実施態様を用いたマルチスレッド化キャッシュのための方法および装置

Country Status (7)

Country Link
US (1) US6912623B2 (ja)
EP (1) EP1532531A4 (ja)
JP (1) JP2005528695A (ja)
KR (1) KR100962057B1 (ja)
CN (1) CN1317644C (ja)
AU (1) AU2003245384A1 (ja)
WO (1) WO2003102781A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008027444A (ja) * 2006-07-20 2008-02-07 Internatl Business Mach Corp <Ibm> 方法、システム、製品(複数のデータ構造を用いるキャッシュ内のデータの管理)
JP2009545080A (ja) * 2006-07-25 2009-12-17 クゥアルコム・インコーポレイテッド 複数のソフトウェアプログラムに関するタイル化キャッシュ

Families Citing this family (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6925536B2 (en) * 2002-11-05 2005-08-02 Newisys, Inc. Cache coherence directory eviction mechanisms for unmodified copies of memory lines in multiprocessor systems
US6934814B2 (en) * 2002-11-05 2005-08-23 Newisys, Inc. Cache coherence directory eviction mechanisms in multiprocessor systems which maintain transaction ordering
US6920532B2 (en) * 2002-11-05 2005-07-19 Newisys, Inc. Cache coherence directory eviction mechanisms for modified copies of memory lines in multiprocessor systems
US8074051B2 (en) 2004-04-07 2011-12-06 Aspen Acquisition Corporation Multithreaded processor with multiple concurrent pipelines per thread
CN100440170C (zh) * 2004-05-26 2008-12-03 英特尔公司 网络应用内的自动高速缓存生成
TW200625097A (en) * 2004-11-17 2006-07-16 Sandbridge Technologies Inc Data file storing multiple date types with controlled data access
US20070223599A1 (en) * 2005-07-25 2007-09-27 Sysair, Inc., A Delaware Corporation Cellular PC modem architecture and method of operation
EP2069947A4 (en) * 2006-09-26 2013-10-09 Qualcomm Inc APPLICATION OF MATRIX INVERSION SOFTWARE IN A WIRELESS COMMUNICATION SYSTEM
KR101545357B1 (ko) * 2006-11-10 2015-08-18 퀄컴 인코포레이티드 파이프라인 컴퓨터 처리의 병렬화를 위한 방법 및 시스템
US7610448B2 (en) * 2006-12-27 2009-10-27 Intel Corporation Obscuring memory access patterns
JP4973730B2 (ja) * 2007-06-20 2012-07-11 富士通株式会社 演算処理装置及び演算処理装置の制御方法
WO2009061547A1 (en) * 2007-11-05 2009-05-14 Sandbridge Technologies, Inc. Method of encoding register instruction fields
US8539188B2 (en) * 2008-01-30 2013-09-17 Qualcomm Incorporated Method for enabling multi-processor synchronization
KR20100133964A (ko) * 2008-03-13 2010-12-22 아스펜 액퀴지션 코포레이션 유효 어레이를 비활성화함으로써 전력을 절약하기 위한 방법
WO2010017263A1 (en) 2008-08-06 2010-02-11 Sandbridge Technologies, Inc. Haltable and restartable dma engine
CN101751537B (zh) * 2008-12-01 2012-05-09 中兴通讯股份有限公司 一种射频识别应用系统中标签事件的处理方法及装置
GB2469299B (en) * 2009-04-07 2011-02-16 Imagination Tech Ltd Ensuring consistency between a data cache and a main memory
US8392658B2 (en) * 2009-07-10 2013-03-05 Apple Inc. Cache implementing multiple replacement policies
CN102063407B (zh) * 2010-12-24 2012-12-26 清华大学 用于多核处理器的网络牺牲Cache及基于该Cache的数据请求方法
US9396117B2 (en) * 2012-01-09 2016-07-19 Nvidia Corporation Instruction cache power reduction
US9552032B2 (en) 2012-04-27 2017-01-24 Nvidia Corporation Branch prediction power reduction
US20130339620A1 (en) * 2012-06-15 2013-12-19 Futurewei Technololgies, Inc. Providing Cache Replacement Notice Using a Cache Miss Request
US9043554B2 (en) 2012-12-21 2015-05-26 Apple Inc. Cache policies for uncacheable memory requests
CN103455434B (zh) * 2013-08-26 2016-12-28 华为技术有限公司 一种建立缓存目录的方法及系统
KR101904421B1 (ko) 2013-09-27 2018-11-30 삼성전자주식회사 캐시 메모리를 제어하는 방법 및 장치.
CN104636268B (zh) * 2013-11-08 2019-07-26 上海芯豪微电子有限公司 一种可重构缓存产品与方法
KR102354990B1 (ko) 2014-09-17 2022-01-24 삼성전자주식회사 캐시 메모리 시스템 및 그 동작방법
US9910785B2 (en) 2014-12-14 2018-03-06 Via Alliance Semiconductor Co., Ltd Cache memory budgeted by ways based on memory access type
EP3066572B1 (en) * 2014-12-14 2020-02-19 VIA Alliance Semiconductor Co., Ltd. Cache memory budgeted by chunks based on memory access type
US9652400B2 (en) * 2014-12-14 2017-05-16 Via Alliance Semiconductor Co., Ltd. Fully associative cache memory budgeted by memory access type
WO2016097813A1 (en) * 2014-12-14 2016-06-23 Via Alliance Semiconductor Co., Ltd. Set associative cache memory with heterogeneous replacement policy
KR101835949B1 (ko) * 2014-12-14 2018-03-08 비아 얼라이언스 세미컨덕터 씨오., 엘티디. 메모리 접근 타입을 고려한 캐시 치환 정책
US9582430B2 (en) * 2015-03-27 2017-02-28 Intel Corporation Asymmetric set combined cache
CN105095354A (zh) * 2015-06-19 2015-11-25 北京奇虎科技有限公司 数据更新的方法及装置
JP2017033446A (ja) * 2015-08-05 2017-02-09 株式会社リコー 情報処理システム、情報処理システムの制御方法、及びプログラム
US9952982B2 (en) * 2016-06-06 2018-04-24 International Business Machines Corporation Invoking demote threads on processors to demote tracks indicated in demote ready lists from a cache when a number of free cache segments in the cache is below a free cache segment threshold
US10922230B2 (en) * 2016-07-15 2021-02-16 Advanced Micro Devices, Inc. System and method for identifying pendency of a memory access request at a cache entry
US10565121B2 (en) * 2016-12-16 2020-02-18 Alibaba Group Holding Limited Method and apparatus for reducing read/write contention to a cache
US10394719B2 (en) * 2017-01-25 2019-08-27 Samsung Electronics Co., Ltd. Refresh aware replacement policy for volatile memory cache
US10353817B2 (en) * 2017-03-07 2019-07-16 International Business Machines Corporation Cache miss thread balancing
US10789175B2 (en) * 2017-06-01 2020-09-29 Mellanox Technologies Ltd. Caching policy in a multicore system on a chip (SOC)
CN109240948A (zh) * 2018-08-21 2019-01-18 北京京东尚科信息技术有限公司 一种缓存数据存储和清理方法和装置
US11086777B2 (en) * 2019-04-01 2021-08-10 Arm Limited Replacement of cache entries in a set-associative cache
KR20220104829A (ko) 2019-12-23 2022-07-26 마이크론 테크놀로지, 인크. 라인 캐시 실패의 효과적인 방지
US11188465B1 (en) * 2020-09-02 2021-11-30 Shenzhen GOODIX Technology Co., Ltd. Cache memory replacement policy
CN113722244B (zh) * 2021-11-02 2022-02-22 北京微核芯科技有限公司 一种高速缓存结构、访问方法和电子设备

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0673114B2 (ja) * 1987-03-31 1994-09-14 日本電気株式会社 キヤツシユ制御装置
US5875464A (en) * 1991-12-10 1999-02-23 International Business Machines Corporation Computer system with private and shared partitions in cache
JP3309425B2 (ja) * 1992-05-22 2002-07-29 松下電器産業株式会社 キャッシュ制御装置
US6047358A (en) * 1997-10-31 2000-04-04 Philips Electronics North America Corporation Computer system, cache memory and process for cache entry replacement with selective locking of elements in different ways and groups
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

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008027444A (ja) * 2006-07-20 2008-02-07 Internatl Business Mach Corp <Ibm> 方法、システム、製品(複数のデータ構造を用いるキャッシュ内のデータの管理)
JP2009545080A (ja) * 2006-07-25 2009-12-17 クゥアルコム・インコーポレイテッド 複数のソフトウェアプログラムに関するタイル化キャッシュ

Also Published As

Publication number Publication date
KR100962057B1 (ko) 2010-06-08
US20030225976A1 (en) 2003-12-04
EP1532531A4 (en) 2008-05-28
US6912623B2 (en) 2005-06-28
WO2003102781A1 (en) 2003-12-11
CN1317644C (zh) 2007-05-23
CN1659525A (zh) 2005-08-24
KR20050069934A (ko) 2005-07-05
EP1532531A1 (en) 2005-05-25
AU2003245384A1 (en) 2003-12-19

Similar Documents

Publication Publication Date Title
US6912623B2 (en) Method and apparatus for multithreaded cache with simplified implementation of cache replacement policy
US6990557B2 (en) Method and apparatus for multithreaded cache with cache eviction based on thread identifier
US5091851A (en) Fast multiple-word accesses from a multi-way set-associative cache memory
JP6505132B2 (ja) メモリ容量圧縮を利用するメモリコントローラならびに関連するプロセッサベースのシステムおよび方法
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
JP4486750B2 (ja) テンポラリ命令及び非テンポラリ命令用の共用キャッシュ構造
US6640283B2 (en) Apparatus for cache compression engine for data compression of on-chip caches to increase effective cache size
US6219760B1 (en) Cache including a prefetch way for storing cache lines and configured to move a prefetched cache line to a non-prefetch way upon access to the prefetched cache line
EP0695996B1 (en) Multi-level cache system
JP2554449B2 (ja) キャッシュ・メモリを有するデータ処理システム
US7380065B2 (en) Performance of a cache by detecting cache lines that have been reused
US6425055B1 (en) Way-predicting cache memory
JP3718302B2 (ja) 命令取り出し方法および装置
KR20000069836A (ko) 로킹을 사용한 캐시 대체방법
JPH0364893B2 (ja)
US20100217937A1 (en) Data processing apparatus and method
EP2926257B1 (en) Memory management using dynamically allocated dirty mask space
US6715040B2 (en) Performance improvement of a write instruction of a non-inclusive hierarchical cache memory unit
EP0942376A1 (en) Method and system for pre-fetch cache interrogation using snoop port
US6535961B2 (en) Spatial footprint prediction
US20110179227A1 (en) Cache memory and method for cache entry replacement based on modified access order
JP3971807B2 (ja) キャッシュ記憶装置および方法
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