JP4486750B2 - テンポラリ命令及び非テンポラリ命令用の共用キャッシュ構造 - Google Patents
テンポラリ命令及び非テンポラリ命令用の共用キャッシュ構造 Download PDFInfo
- Publication number
- JP4486750B2 JP4486750B2 JP2000541596A JP2000541596A JP4486750B2 JP 4486750 B2 JP4486750 B2 JP 4486750B2 JP 2000541596 A JP2000541596 A JP 2000541596A JP 2000541596 A JP2000541596 A JP 2000541596A JP 4486750 B2 JP4486750 B2 JP 4486750B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- bit
- cache
- temporal data
- temporal
- 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
- 230000015654 memory Effects 0.000 claims description 100
- 238000000034 method Methods 0.000 claims description 26
- 230000004044 response Effects 0.000 claims description 7
- 238000012545 processing Methods 0.000 claims description 6
- 230000002123 temporal effect Effects 0.000 claims 52
- 230000008520 organization Effects 0.000 description 18
- 238000010586 diagram Methods 0.000 description 17
- 239000000872 buffer Substances 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 238000012546 transfer Methods 0.000 description 3
- 239000000470 constituent Substances 0.000 description 1
- 238000011109 contamination Methods 0.000 description 1
- 238000013479 data entry Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000007334 memory performance Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000036316 preload Effects 0.000 description 1
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/0875—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
-
- 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/0864—Addressing 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
-
- 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/126—Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
-
- 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/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Description
技術分野
本発明は、広義にはプロセッサの技術分野に関し、より詳しくは、テンポラリ命令及び非テンポラリ命令用の共用キャッシュ構造を達成するための技術に関する。
【0002】
背景技術
プロセッサ付きのキャッシュメモリを使用すると、メモリアクセスタイムが容易に短縮される。キャッシュ構成の基本的な考えは、最も頻繁にアクセスされる命令及びデータを高速キャッシュメモリに置くことによって、平均メモリアクセスタイムをそのキャッシュのアクセスタイムに近づけられるということである。可能な最大演算速度ないしは動作速度を達成するために、典型的なプロセッサでは、キャッシュ階層構造、すなわちいくつかの異なるレベルのキャッシュメモリが実装されている。これらいくつかのキャッシュの異なるレベルは、プロセッサコアからの異なる距離に対応している。キャッシュがプロセッサに近ければ近いほど、データアクセスは速くなる。しかしながら、データアクセスを速くするほど、データを記憶するためのコストは高くなる。その結果、キャッシュレベルがプロセッサに近いほど、キャッシュはより高速で、より小さくなる。
【0003】
キャッシュメモリの性能はヒット率によって評価されることがしばしばある。プロセッサがメモリを参照して、そのワードがキャッシュで見つかった場合、ヒットしたと言われる。そのワードがキャッシュで見つからない場合は、メインメモリ中にあり、それは無ヒットを意味するミスあるいはキャッシュミスとしてカウントされる。ミスが起こると、そのアクセスによってインデックスを付けられたエントリに割当てが行われる。このアクセスはプロセッサにデータをロードするためのアクセスのこともあれば、プロセッサからメモリにデータを記憶するためのアクセスのこともある。キャッシュ記憶された情報は、必要でなくなるか、無効になるか、あるいは他のデータによって置き換えられてキャッシュエントリが割当てを解除されるまで、キャッシュメモリに保持される。
【0004】
L1キャッシュとL2キャッシュを有するPentium Pro(ペンティアム・プロ)TMプロセッサのようなキャッシュ階層構造を実装したプロセッサにおいては、より高速で小さい方のL1キャッシュがL2キャッシュよりもプロセッサに近く配置される。プロセッサがキャッシュ記憶可能なデータ、例えば、ロード命令を要求すると、その要求はまずL1キャッシュに送られる。要求されたデータがL1キャッシュにあれば、そのデータがプロセッサに供給される。要求されたデータがL1キャッシュになければ、L1キャッシュミスになり、要求はL2キャッシュに転送される。同様に、L2キャッシュヒットがあれば、そのデータがL1キャッシュ及びプロセッサコアに送られる。L2キャッシュミスになると、その要求はメインメモリに転送される。メインメモリはL2キャッシュミスに応答して、その要求されたデータをL2キャッシュ、L1キャッシュ、及びプロセッサコアに供給する。
【0005】
通常キャッシュに記憶されるデータのタイプには、プログラム及びデータのアクティブ部分が含まれる。キャッシュが容量いっぱいになったときには、新たに要求された何行かのデータを入れるスペースを得るために、キャッシュメモリで記憶された何行かのデータを置き換えることが必要である。このような一つの置換技術として、最低使用頻度(LRU)アルゴリズムを用いたものがあり、最低使用頻度のデータ行が新たに要求されたデータ行と置き換えられるようになっている。Pentium ProTMプロセッサにおいては、L2キャッシュがL1キャッシュより大きいので、L2キャッシュには、通常、L1キャッシュの全てのデータに加えてL1キャッシュでLRUアルゴリズムにより置き換えられた何行かのデータが記憶されている。
【0006】
「キャッシュ階層管理」と言う名称の米国特許出願第08/767,950号(1996年12月17日出願)には、命令と関連づけられたローカリティヒント(locality hint)を使用することによりキャッシュメモリを割り当てるための技術が開示されている。プロセッサがプロセッサとメモリとの間におけるデータ転送のためにメモリにアクセスするとき、そのアクセスは命令と関連づけられたローカリティヒントに従って種々のレベルのキャッシュに割り当てられるか、あるいはキャッシュメモリに全く割り当てられないかである。命令の中にはまれにしか使われないものがいくつかある。例えば、非テンポラリのプリフェッチ命令(先取り命令)は、プロセッサがすぐには必要としないが近い将来必要になると予測されるデータをプレロードする。このようなデータは、通常、一度しか使われないか、あるいはごく近い将来に再使用されることがなく、「非テンポラリデータ」と呼ばれる。頻繁に使用される命令やデータは「テンポラリデータ」と呼ばれる。非テンポラリデータの場合、データはたまにしか使われないので、最適性能の必要上、キャッシュ記憶されたアプリケーションコードやデータはこの使用頻度の低いデータによっては上書きされないようになっている。上記米国特許出願第08/767,950号は、非テンポラリの先取りデータのような使用頻度の低いデータを記憶するためにキャッシュメモリとは別途にバッファを設けることによってこの問題を解消したものである。しかしながら、別途に余分のバッファを使用することはコスト的にもスペース的にも高価となる。
【0007】
従って、現在、別途バッファを使用する必要がないテンポラリ命令及び非テンポラリ命令用の共用キャッシュ構造を得るための技術が必要とされている情況が存在する。
【0008】
発明の概要
本発明は、キャッシュメモリ・マネジメントを達成するための方法及びシステムにある。本発明のシステムは、メインメモリと、メインメモリに接続されたプロセッサと、データをキャッシュ記憶するための該プロセッサに接続された少なくとも1つのキャッシュメモリとを備える。上記少なくとも1つのキャッシュメモリは、各々複数のキャッシュセットを備え、それぞれが少なくとも2つのキャッシュウェイを有する。上記複数のキャッシュセットの各セットは上記少なくとも2つのキャッシュウェイの一方に非テンポラリのデータが書き込まれているかどうかを指示するビットを有する。プロセッサは、メインメモリまたは上記少なくとも1つのキャッシュメモリの一方のデータにアクセスする。
【0009】
以下、本発明を限定のためではなく、例示説明のための添付図面に示す実施形態に基づき詳細に説明する。図中、同じ参照符号は、同様の構成要素を指示する。
【0010】
【発明を実施するための最良の形態】
キャッシュの割当てがデータの使用度によって決定されるようにしたキャッシュメモリのマネジメントを達成するための技術の実施形態について説明する。以下の説明においては、本発明の完全な理解を期すために特定のメモリデバイス、回路図、プロセッサ命令等のような詳細事項を具体的に多数記載する。しかしながら、当業者ならば、本発明がこれらの特定の細部なしで実施可能であることは理解されよう。その他の場合においては、本発明を不明瞭にしないために、周知の技術や構造については詳細な説明を省略した。また、特定の実施態様を本発明の好ましい実施形態として説明するが、他の実施形態についても、本発明の精神及び範囲を逸脱しない範囲で設計し、実施することが可能なことは容易に理解されよう。さらに、本発明は、直列配置構成のキャッシュ階層システムに基づいて説明するが、厳密にこのような形態の階層構造に限定する必要はないということも理解されよう。
【0011】
典型的なコンピュータシステムを示す図1において、コンピュータシステムの中央処理装置(CPU)を形成するプロセッサ10はバス14によってメインメモリ11に接続されている。メインメモリ11は、通常ランダムアクセスメモリで構成され、RAMと通称される。次に、メインメモリ11は、一般に、情報の大量記憶(または保管)用の磁気記憶装置あるいは光メモリデバイスのような大容量記憶装置12に接続されている。キャッシュメモリ13(以下単にキャッシュとも称する)も同様にバス14に接続されている。図示の場合、キャッシュ13は、例えばキャッシュ13と関連づけられたデータの機能的使用及び転送を実際に行うための例として、CPU10とメインメモリ11との間に配置されている。キャッシュ13の実際の物理的配置は、システム及びプロセッサアーキテクチャによって変わり得るということは理解されよう。さらに、キャッシュ13の動作を制御するために、キャッシュコントローラ15が図示のようにキャッシュ13及びバス14に接続されている。コントローラ15のようなキャッシュコントローラの動作は当技術分野においては周知であり、従って図2以下の図面ではキャッシュコントローラは省略されている。ここでは、図示のキャッシュの動作を制御するために、CPU10の制御下で動作する何らかのコントローラが設けられているものと仮定されている。
【0012】
動作について説明すると、メモリ11とCPU10との間の情報転送はCPU10からのメモリアクセスによって行われる。キャッシュ記憶可能なデータがCPU10によって今現在あるいはすぐ後にアクセスされるはずのデータである場合、そのデータはまずキャッシュ13に割り当てられる。すなわち、CPU10は、メモリ11中の所与の情報にアクセスするとき、まずキャッシュ13からその情報を探す。もしアクセスされたデータがキャッシュ13中にあれば、「ヒット」が起こる。キャッシュ中になければ、「ミス」となり、そのデータについてのキャッシュ割当てがシークされる。現在行われているように、ほとんどのアクセスは(ロードであるか記憶であるかにかかわらず)キャッシュ13の割当てを必要とする。ただキャッシュ不可能なアクセスだけはキャッシュに割り当てられない。
【0013】
図2には、複数キャッシュ構成を実装したコンピュータシステムが示されている。CPU10はやはりバス14によってメインメモリ11に接続され、そしてメモリ11は大容量記憶装置12に接続されている。しかしながら、図2の例においては、互いに別の2つのキャッシュメモリ21及び22が示されている。キャッシュ21及び22は図示のように直列に配置され、その各キャッシュがそれぞれレベル1(L1)キャッシュ及びレベル2(L2)キャッシュと名付けられた一つのキャッシュレベルを表している。さらに、L1キャッシュ21は図示のようにCPU10の一部になっているのに対して、L2キャッシュ22はCPU10の外部にある。この構造は、L1キャッシュをプロセッサチップ上に置き、プロセッサコアからより遠くにあるL1キャッシュより低いレベルのキャッシュをプロセッサの外部に置く現行の実施形態の一例と同じ構造である。種々のキャッシュメモリの実際の配置は設計上の選択事項であるか、あるいはプロセッサアーキテクチャによって決まる。従って、L1キャッシュをCPU10の外部に置くこともできるということは理解されよう。
【0014】
一般に、CPU10は実行ユニット23、レジスタファイル24及びフェッチ/デコーダ・ユニット25を備えている。実行ユニット23は、種々の算術(あるいは非記憶)命令等のプロセッサ命令を実行するためのCPU10の処理コアである。レジスタファイル24は、実行ユニット23が必要とする種々の情報を記憶(あるいはセーブ)するための一群の汎用レジスタよりなる。より高度のシステムでは、2つ以上のレジスタファイルを設けることも可能である。フェッチ/デコーダ・ユニット25は、実行されるプログラムの命令を保持する(メインメモリ11のような)記憶場所から命令をフェッチし、それらの命令を実行ユニット23によって実行されるように解読する。パイプライン型アーキテクチャを用いたさらに高度のプロセッサにおいては、命令が必要になったときフェッチされるのを待ってアイドル状態になるのを防ぐように、後で必要になる未来の命令がそれらが実際に必要になる前に先取りされ、解読される。
【0015】
これらのCPU10の様々な装置23〜25は内部バス構造27に接続されている。バスインタフェースユニット(BIU)26は、CPU10の種々の構成ユニットないしは装置をバス14に接続するためのインタフェースである。図2に示すように、L1キャッシュは内部バス27に接続されており、CPU10用の内部キャッシュとして機能する。しかしながら、この場合も、L1キャッシュはCPU10の外部に置いた上でバス14に接続することも可能であるということに留意すべきである。これらのキャッシュはデータ、命令あるいはその両方をキャッシュ記憶するために用いることができる。一部システムでは、実際にはL1キャッシュを2つの部分に分割し、その1つの部分にデータをキャッシュ記憶し、もう1つの部分に命令をキャッシュ記憶することが行われる。しかしながら、説明を簡単にするために、図で説明する種々のキャッシュは各々単一のキャッシュとして示してあり、本願においてはデータ、命令及びその他の情報を全て含めてデータと総称する。図2に示す構成ユニットないしは装置の動作は周知のものであることは理解されよう。さらに、CPU10は実際には図示されているだけの構成要素以外にはるかに多くの構成要素を備えるということも理解されよう。従って、図2には本発明を理解する上において関係のある構成のみが示されている。一実施形態においては、本発明はデータキャッシュを有するシステムで使用される。しかしながら、本発明はどのような形態のキャッシュについても適用可能である。
【0016】
また、コンピュータシステムは、(図2に破線によって示すように)2つ以上のCPUを備えることも可能であるということに留意するべきである。このようなシステムにおいては、複数のCPUがメインメモリ11及び/または大容量記憶装置12を共用することは通常行われている。従って、コンピュータシステムと関連づけられた一部あるいは全てのキャッシュをコンピュータシステムの種々のプロセッサによって共用することも可能である。例えば、図2のシステムで、各プロセッサのL1キャッシュ21はそのプロセッサのみによって使用され、メインメモリ11はシステムの全てのCPUによって共有されるようなこともある。さらに、各CPUはそれぞれ対応する外部L2キャッシュ22を有する。
【0017】
本発明はシングルCPUコンピュータシステムあるいはマルチCPUコンピュータシステムとして実施することができる。さらに、メモリにアクセスする他の形態の構成ユニットないしは装置(プロセッサ以外)が本願で説明したCPUと等価に機能することができ、従って、本願で説明したCPUと同様のメモリアクセス機能を遂行することができるということも留意されよう。例えば、直接メモリアクセス(DMA)デバイスは本願で説明したプロセッサと同様にメモリに容易にアクセスすることができる。このように、プロセッサ(CPU)は1つしか持たないが、1つ以上のメモリアクセスユニットないしは装置を有するコンピュータシステムは、本願で説明したマルチプロセッサシステムと等価に機能するはずであろう。
【0018】
上にも述べたように、図には2つのキャッシュ21及び22しか示されていない。しかしながら、コンピュータシステムは、必ずしも2レベルのキャッシュのみに限定されるものではない。現在、より進んだシステムでは第3レベル(L3)キャッシュを用いることは一般的に行われるようになっている。また、L1キャッシュにキャッシュ記憶されたデータがL2キャッシュにもキャッシュ記憶されるようにキャッシュメモリを直列配置構成にすることも一般的に行われている。仮にL3キャッシュが設けられる場合は、L2キャッシュにキャッシュ記憶されるデータは通常L3キャッシュにもキャッシュ記憶される。このように、ある特定のキャッシュレベルにキャッシュ記憶されるデータはそれより高いキャッシュ階層の全てのレベルにもキャッシュ記憶される。
【0019】
図3は、本発明の技術が実装されたキャッシュメモリの構成の一実施形態を図解するブロック図である。一般に、キャッシュ構造に「x」のセットと、1セット当たり「y」のウェイ(ただしy≧2)があり、各ウェイには1つのデータエントリまたは1本のキャッシュラインが入っている。本発明によれば、そのセット中のいずれかのウェイに非テンポラリ(NT)データが書き込まれているかどうかを示すLRUロックビットが設けられる。このようにNTデータが書き込まれていれば、正規または疑似のLRUビットがそのNTデータを指示するように更新される。また、1セット毎に「z」の正規または疑似のLRUビットが設けられる。LRUロックビットがセットされていなければ、正規または疑似のLRUビットは実装された最低使用頻度技術に従ってそのセット中のウェイを指示する。1セット当たりの正規または疑似のLRUビットの数は、1セット当たりのウェイ数及び使用される(正規または疑似の)LRU技術によって変わる。
【0020】
図示のような実施形態においては、キャッシュ50は4ウェイ・セット連想キャッシュとして編成されている。図3の例では、各ページはキャッシュサイズの4分の1に等しいものとして示されている。詳しく言うと、キャッシュ50が4つの同じサイズのウェイ(例えば、ウェイ0(52)、ウェイ1(54)、ウェイ2(56)及びウェイ3(58))に分割され、メインメモリ11(図1及び2も参照のこと)は図示のようにいくつかのページ(例えば、ページ0〜ページn)に分割されている。別の実施形態においては、各ページはキャッシュサイズより大きい場合もあれば、キャッシュサイズより小さい場合もある。キャッシュ50の構成(図3に示すような)は、図1のキャッシュ13、図2のL1キャッシュ及び/またはL2キャッシュ22の中に実装することができる。
【0021】
また、キャッシュ50は最低使用頻度(LRU)ビット600〜60nのアレイを備え、その各ビットが最低使用頻度データ(あるいはバイアスされたLRU技術が使用される場合においてはNTデータ)を有するセット中のウェイを指示する。このような表作成がキャッシュコントローラ15の制御下でLRU技術に従って行われ、キャッシュセットがいっぱいの場合にどのキャッシュエントリを上書きするかが決定される。LRU論理回路ないしは論理機構(図示省略)がそれまでの最低使用頻度のセット中のキャッシュ記憶場所を追跡し続ける。一実施形態においては、最低使用頻度ディレクトリアルゴリズムを厳密に追跡し続けるLRU技術を使用することもできる。もう一つの実施形態においては、最低使用頻度のディレクトリ要素を最良の形で追跡しようとする疑似LRUアルゴリズムが使用される。なお、説明の都合上、ビット600〜60nをLRUビット600〜60nと称し、LRUビット600〜60nのアレイをLRUビット60と称する。
【0022】
キャッシュ50は、さらに、この後詳細に説明するように、所与のセット中のウェイ52、54、56、58のいずれかにキャッシュ50を汚さないはずのデータ(すなわち、使用頻度の低いデータ)が書き込まれているどうかを指示するLRUロックビット70O〜70nのアレイを備える。
【0023】
図4は、本発明の原理に基づくキャッシュ・マネジメント技術を図解した表である。本発明は、LRUロックビット700〜70nのアレイを用いて、対応するキャッシュ記憶されたデータのいずれかがストリーミングデータあるいは非テンポラリデータであり、従って、対応するセットに対してキャッシュミスが生じたとき置換される最初のエントリであるのかどうかを指示する。一実施形態においては、LRUロックビット70は、“1”にセットされている場合、対応するセットが非テンポラリのエントリを有することを示す。LRUロックビット70がクリアないしはリセットされている場合は、テンポラリ命令によるキャッシュヒットによって、実装されたLRU技術に従って対応するLRUビット60が更新され、(図4のアイテム1参照)、それに関連付けられたLRUロックビットは更新されない。しかしながら、LRUロックビット70が既に“1”にセットされていれば(対応するセットが非テンポラリ命令を有することを示す)、LRUロックビット70は更新されず、またLRUビット60も更新されない(アイテム2参照)。
【0024】
非テンポラリ命令によりキャッシュヒットが生じた場合は、LRUロックビット70の状態にかかわらずLRUビット60及びLRUロックビット70は更新されない(アイテム3参照)。別の実施形態においては、L1キャッシュコントローラの制御レジスタのモードビットを通して制御されるところに従い、ストリーミング命令あるいは非テンポラリ命令によるキャッシュヒットはLRUビットをそのヒットされたウェイに強制する(アイテム4参照)。さらに、LRUロックビット70は“1”にセットされる。この実施形態においては、ストリーミング命令あるいは非テンポラリ命令によってヒットしたデータは、対応するセットに対するキャッシュミス時に置換される最初のデータになる。
【0025】
テンポラリ命令によるキャッシュミス発生時には、LRUロックビットはクリアされ、LRUビット60は疑似LRU技術に基づいて更新される(アイテム5)。しかしながら、ストリーミング命令あるいは非テンポラリ命令によるキャッシュミス時には、LRUロックビット70は“1”にセットされ、対応するLRUビット60は更新されない(アイテム6)。
【0026】
次に、図4の表に示されている各アイテムについて例示説明する。図5の5A及び5Bは、テンポラリ命令がキャッシュセット0のウェイ2をヒットする前後におけるキャッシュメモリの編成の一例を図解したものである。この例は図4のアイテム1に対応する。この場合、キャッシュセット0に対してLRUロックビット700はあらかじめクリアされており、テンポラリ命令によってキャッシュセット0がヒットしたので、LRUロックビット700は更新されない。しかしながら、LRUビット600は実装されたLRU技術に従って更新される。この例では、疑似LRU技術がウェイ3を最低使用頻度のエントリとして指示するものと仮定されている。
【0027】
図6の6A及び6Bは、テンポラリ命令がキャッシュセット0のウェイ2をヒットする前後におけるキャッシュメモリの編成のもう一つの例を図解したものである。この例は図4のアイテム2に対応する。この場合、キャッシュセット0に対して、LRUロックビット700は、対応するセットに非テンポラリデータが書き込まれていることを指示すようあらかじめ“1”にセットされている。従って、LRUロックビット700もLRUビット600も更新されない。
【0028】
図7の7A乃至7Dは、非テンポラリ命令がキャッシュセット0のウェイ2をヒットする前後におけるキャッシュメモリの編成のもう一つの例を図解したものである。この例は図4のアイテム3に対応し、L1キャッシュコントローラにあるモードビットを“0”にセットして実施することができる(図4参照)。第1の場合においては(図7A及び7B)、キャッシュセット0に対してLRUロックビット700があらかじめクリアされている。この実施形態では、非テンポラリ命令のキャッシュヒットはLRUロックビット70を更新させない。従って、キャッシュセット0が非テンポラリ命令によってヒットしたから、LRUロックビット700もLRUビット600も更新されない。第2の場合は(図7C及び7D)、キャッシュセット0に対して、LRUロックビット700は対応するセットに非テンポラリデータが書き込まれていることを指示するようあらかじめ“1”にセットされている。従って、LRUロックビット700もLRUビット600も更新されない。
【0029】
図8の8A乃至8Dは、非テンポラリ命令がキャッシュセット0のウェイ2をヒットする前後におけるキャッシュメモリの編成のもう一つの例を図解したものである。この例は図4のアイテム4に対応し、L1キャッシュコントローラにあるモードビットを“1”にセットして実施することができる(図4参照)。第1の場合では(図8A及び8B)、キャッシュセット0に対してLRUロックビット700あらかじめクリアされている。図7A乃至7Dに示す例のもう一つの態様であるこの例においては、非テンポラリ命令のキャッシュヒットがLRUロックビット70を更新させる。従って、図8Aに示すように、キャッシュセット0が非テンポラリ命令によってヒットしたので、図8Bに示すようにLRUロックビット700は更新される(“1”にセットされる)。さらに、LRUビット600はウェイがヒットしたことを示すよう更新される。キャッシュセット0に対してLRUロックビット700があらかじめ“1”にセットされていた場合は(図8C及び8D)、LRUロックビット700は“1”にセットされたまま保たれる。さらに、LRUビット60oはヒットしたセット中のウェイを指示するようにされる。
【0030】
図9の9A及び9Bは、テンポラリ命令がキャッシュセット0に対してミスとなる前後におけるキャッシュメモリの編成の一例を図解したものである。この例は図4のアイテム5に対応する。この場合、キャッシュセット0に対してLRUロックビットはあらかじめ“1”にセットされ、セット0を探すテンポラリ命令によりキャッシュミスが生じたかから、そのセットについて、LRUロックビット700はそのキャッシュにおけるテンポラリ命令のミスが置換されると同時にクリアされる。しかしながら、LRUビット600は実装されたLRU技術に従って更新される。この例では、疑似LRU技術はウェイ3が最低使用頻度のエントリであると指示する。
【0031】
図10の10A及び10Bは、非テンポラリ命令がキャッシュセット0に対してミスとなる前後におけるキャッシュメモリの編成の一例を図解したものである。この例は図4のアイテム6に対応する。この場合、キャッシュセット0に関してLRUロックビット700あらかじめクリアされている。キャッシュセット0に対する非テンポラリ命令のキャッシュミスがあるため、対応するセット0における非テンポラリデータを指示するよう、LRUロックビット700はセットされ、LRUビット600は前と同じ状態に保たれる。
【0032】
本発明の装置及びウェイを実装することによって、キャッシュあるいはキャッシュ階層におけるデータ汚染が最小となるテンポラリ命令及び非テンポラリ命令を管理するための共用キャッシュ構造が達成され、本発明を実装することによって別途バッファを使用する必要がなくなり、発明実施上、費用効果及び効率が共に改善される。
【0033】
本発明は、その精神あるいは不可欠の特徴を逸脱することなく、他の具体的な態様で実施することが可能である。本願で開示、説明した実施形態は全ての点において例示説明を目的としして解釈されるべきものであり、本発明を限定する意味を有するものではない。従って、発明の範囲は、以上の説明ではなく特許請求の範囲の記載によって示される。特許請求の範囲に記載する所と等価の意味及び意味及び範囲内の変更態様は全て本発明の範囲に包括されるべきものである。
【図面の簡単な説明】
【図1】 本発明が実装されたコンピュータシステムの一実施形態の回路ブロック図を示し、図示実施形態においてはコンピュータシステムのメインメモリとプロセッサとの間におけるデータアクセスのためにキャッシュメモリが使用される。
【図2】 本発明が実装されたコンピュータシステムの第2の実施形態の回路ブロック図を示し、図示実施形態においてはコンピュータシステムのメインメモリとプロセッサとの間におけるデータアクセスのために、キャッシュメモリ階層構造に編成された2つのキャッシュメモリが使用される。
【図3】 本発明の技術が実装されたキャッシュメモリの構成の一実施形態を図解したブロック図である。
【図4】 本発明の一実施形態に基づくキャッシュ・マネジメント技術を図解した表である。
【図5】 本発明の一実施形態においてテンポラリ命令がキャッシュセット0のウェイ2をヒットする前後におけるキャッシュメモリの編成の一例を5Aと5Bに分けて図解した説明図である。
【図6】 本発明の一実施形態においてテンポラリ命令がキャッシュセット0のウェイ2をヒットする前後におけるキャッシュメモリの編成のもう一つの例を6Aと6Bに分けて図解した説明図である。
【図7A】 本発明の一実施形態において非テンポラリ命令がキャッシュセット0のウェイ2をヒットする前後におけるキャッシュメモリの編成の一例を7A乃至7Dに分けて図解した説明図である。
【図7B】 本発明の一実施形態において非テンポラリ命令がキャッシュセット0のウェイ2をヒットする前後におけるキャッシュメモリの編成の一例を7A乃至7Dに分けて図解した説明図である。
【図7C】 本発明の一実施形態において非テンポラリ命令がキャッシュセット0のウェイ2をヒットする前後におけるキャッシュメモリの編成の一例を7A乃至7Dに分けて図解した説明図である。
【図7D】 本発明の一実施形態において非テンポラリ命令がキャッシュセット0のウェイ2をヒットする前後におけるキャッシュメモリの編成の一例を7A乃至7Dに分けて図解した説明図である。
【図8A】 本発明の一実施形態において非テンポラリ命令がキャッシュセット0のウェイ2をヒットする前後におけるキャッシュメモリの編成のもう一つの例を8A乃至8Dに分けて図解した説明図である。
【図8B】 本発明の一実施形態において非テンポラリ命令がキャッシュセット0のウェイ2をヒットする前後におけるキャッシュメモリの編成のもう一つの例を8A乃至8Dに分けて図解した説明図である。
【図8C】 本発明の一実施形態において非テンポラリ命令がキャッシュセット0のウェイ2をヒットする前後におけるキャッシュメモリの編成のもう一つの例を8A乃至8Dに分けて図解した説明図である。
【図8D】 本発明の一実施形態において非テンポラリ命令がキャッシュセット0のウェイ2をヒットする前後におけるキャッシュメモリの編成のもう一つの例を8A乃至8Dに分けて図解した説明図である。
【図9】 本発明の一実施形態においてテンポラリ命令がキャッシュセット0に対してミスとなる前後におけるキャッシュメモリの編成の一例を9A及び9Bに分けて図解した説明図である。
【図10】 本発明の一実施形態において非テンポラリ命令がキャッシュセット0に対してミスとなる前後におけるキャッシュメモリの編成の一例を10A乃至10Dに分けて図解した説明図である。
Claims (17)
- メインメモリと、
前記メインメモリに接続されたプロセッサであって、非テンポラルデータ及びテンポラルデータを処理する命令を実行するように構成されたプロセッサと、
前記プロセッサに接続された少なくとも1つのキャッシュメモリであって、前記少なくとも1つのキャッシュメモリは複数のセットを有しており、この複数のセットの各々は少なくとも2つのウェイを有するとともに第1のビットと少なくとも1つの第2のビットとを有しており、該第1のビットは対応するセットの前記少なくも2つのウェイの1つが前記プロセッサによって使用される頻度の少ない前記非テンポラルデータであって第1に置換できる前記非テンポラルデータを含んでいることを示すよう構成された、キャッシュメモリと
を含み、
前記プロセッサが、前記メインメモリ又は前記少なくとも1つのキャッシュメモリのうちの1つのデータにアクセスするように構成したコンピュータシステムであって、
前記非テンポラルデータが前記ウェイの1つに入っていることを前記第1のビットが指示している場合には、前記少なくも1つの第2のビットがその非テンポラルデータが入っているウェイを指示するよう構成して、その指示されたウェイ内の非テンポラルデータが置換されるようにしたコンピュータシステム。 - メインメモリと、
前記メインメモリに接続され、非テンポラルデータ及びテンポラルデータを処理する命令を実行するプロセッサと、
前記プロセッサに接続された少なくとも1つのキャッシュメモリであって、前記少なくとも1つのキャッシュメモリは複数のセットを有しており、この複数のセットの各々は少なくとも2つのウェイを有するとともに第1のビットと少なくとも1つの第2のビットとを有しており、該第1のビットは対応するセットの前記少なくも2つのウェイの1つが前記プロセッサによって使用される頻度の少ない前記非テンポラルデータであって第1に置換できる前記非テンポラルデータを含んでいることを示すよう構成された、キャッシュメモリと
を有したコンピュータシステムで非テンポラルデータとテンポラルデータとを処理する方法において、
前記プロセッサによって前記メインメモリ又は前記少なくとも1つのキャッシュメモリのデータにアクセスするステップと、
前記非テンポラルデータが前記セットのウェイの1つに入っていることを前記第1のビットが指示している場合に、前記第2のビットがその非テンポラルデータが入っているウェイを指示するステップと
を含み、その指示されたセットのウェイ内の非テンポラルデータが置換されるようにした、方法。 - それぞれのウェイがデータを保存するように構成された少なくとも2つのウェイを含む、1つ又はそれ以上のセットと、
1つ又はそれ以上のLRUビットと、
対応するセット内の少なくとも2つのウェイのいずれか1つに、第1に置換しても良い非テンポラルデータを含むかどうかを指示する、1つ又はそれ以上のロックビットと
を含み、前記ロックビットの1つが前記非テンポラルデータが前記対応するセット内のいずれかのウェイに含まれていることを指示している場合に、対応するLRUビットがその非テンポラルデータが入っているウェイを指示して、その指示されたウェイ内の非テンポラルデータが第1に置換されるようにした、テンポラルデータと非テンポラルデータとをその中に保存するデータキャッシュメモリ。 - それぞれのウェイがデータを保存するように構成された少なくとも2つのウェイを含む、1つ又はそれ以上のセットと、
1つ又はそれ以上のLRUビットと、
対応するセット内の少なくとも2つのウェイのいずれか1つに、第1に置換しても良い非テンポラルデータを含むかどうかを指示する、1つ又はそれ以上のロックビットと
を含むキャッシュメモリを備えたコンピュータ・システムにおける方法であって、
データを処理する命令に関連したローカリティヒントに基づいて、該データがテンポラルか非テンポラルかを判断するステップと、
前記セットの対応するロックビットが前記非テンポラルデータが該対応するセットのウェイの1つに存在することを指示している場合に、前記非テンポラルデータを有する対応するセット内のウェイを指示するように前記LRUビットの少なくとも1つを更新するステップと
を含み、その指示されたウェイ内の非テンポラルデータが第1に置換されるようにした方法。 - 非テンポラル命令の実行中に、キャッシュメモリ内のセットに生じたキャッシュミスに応答して、該セットの第1のビットを動的に設定するステップであって、該第1のビットは、該セット内の少なくとも2つのウェイのいずれかに非テンポラルデータを有する場合に設定されるものであり、該セット内の第2のビットは、前記第1のビットが設定されている時に前記非テンポラルデータを含んでいるウェイを指示するものである、ステップと、
前記第1のビットが設定され、前記第2のビットが前記非テンポラルデータを含んでいるウェイを指示している場合であって、テンポラル命令の実行中に該セットに生じたキャッシュミスに応答して、該少なくとも2つのウェイのうちの前記第2のビットが指示するウェイの該非テンポラルデータをテンポラルデータに置換するステップと、
その置換が完了したことに応答して、該セット内の該第1のビットをクリアするステップと
を含む、テンポラルデータ及び非テンポラルデータをキャッシュメモリに保存する方法。 - 前記非テンポラルデータが、プロセッサにより使用される頻度が少ないタイプのデータであることを特徴とする請求項3に記載のデータキャッシュメモリ。
- 前記非テンポラルデータが、キャッシュに記憶される必要のないストリーミングデータであることを特徴とする請求項3に記載のデータキャッシュメモリ。
- 前記ロックビットの1つは前記ウェイの1つに前記非テンポラルデータが存在することを示すように設定されるものであり、前記LRUビットは非テンポラルデータを有するウェイを指示するように更新されることを特徴とする請求項3に記載のデータキャッシュメモリ。
- 前記非テンポラルデータが、使用頻度が低いタイプのデータであることを特徴とする請求項5に記載の方法。
- 前記非テンポラルデータが、キャッシュ記憶される必要のないストリーミングデータであることを特徴とする請求項5に記載の方法。
- 前記キャッシュメモリは複数のセットを含んでおり、前記第1のビットを動的に設定する前記ステップ、該第1のビットをクリアする前記ステップ、及び非テンポラルデータを置換する前記ステップは、該キャッシュメモリ内の複数のセットのそれぞれのセットへの命令アクセス中に、1度に1セットずつ実行されることを特徴とする請求項5に記載の方法。
- 前記非テンポラル命令の実行中の前記セットに対する前記キャッシュミスに応答して前記少なくとも2つのウェイの内の前記非テンポラルデータを有する指定されたウェイを指示するように前記第2のビットを維持するステップをさらに含む請求項5に記載の方法。
- テンポラル命令の実行中の前記セットに対するキャッシュヒットに応答して前記少なくとも2つのウェイの内の前記非テンポラルデータを有する前記指定されたウェイを前記第2のビットが指示する設定を維持するステップと、前記第1のビットの前記設定を維持するステップをさらに含む請求項12に記載の方法。
- テンポラル命令の実行中の前記セットに対するキャッシュヒットに応答して前記セットにおける前記第1のビットの前記設定を維持するステップをさらに含む請求項5に記載の方法。
- 前記第1のビットがロックビットであることを特徴とする請求項5に記載の方法。
- 対応するセットのウェイが前記非テンポラルデータを有することをセットのロックビットが指示していない場合には、そのセットの1つ以上のLRUビットが最も過去にアクセスされたとみなされるウェイを指示するよう構成した請求項3に記載のデータキャッシュメモリ。
- 少なくとも1つのキャッシュメモリを有し、非テンポラルデータとテンポラルデータとを処理する命令を実行するプロセッサであって、前記キャッシュメモリは複数のセットを有し、その複数のセットの各々が少なくとも2つのウェイを有するとともに第1のビットと少なくとも1つの第2のビットとを有し、その第1のビットが前記セットのいずれかのウェイが非テンポラルデータを有すると指示している場合に前記セットの少なくとも1つの第2のビットが前記非テンポラルデータを有する前記セットのウェイを指示するよう構成したプロセッサ。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/053,386 US6202129B1 (en) | 1998-03-31 | 1998-03-31 | Shared cache structure for temporal and non-temporal information using indicative bits |
US09/053,386 | 1998-03-31 | ||
PCT/US1999/006501 WO1999050752A1 (en) | 1998-03-31 | 1999-03-24 | Shared cache structure for temporal and non-temporal instructions |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2002510085A JP2002510085A (ja) | 2002-04-02 |
JP2002510085A5 JP2002510085A5 (ja) | 2007-03-08 |
JP4486750B2 true JP4486750B2 (ja) | 2010-06-23 |
Family
ID=21983863
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000541596A Expired - Fee Related JP4486750B2 (ja) | 1998-03-31 | 1999-03-24 | テンポラリ命令及び非テンポラリ命令用の共用キャッシュ構造 |
Country Status (10)
Country | Link |
---|---|
US (2) | US6202129B1 (ja) |
EP (1) | EP1066566B1 (ja) |
JP (1) | JP4486750B2 (ja) |
KR (1) | KR100389549B1 (ja) |
CN (1) | CN1230750C (ja) |
AU (1) | AU3364599A (ja) |
BR (1) | BR9909295A (ja) |
RU (1) | RU2212704C2 (ja) |
TW (1) | TW573252B (ja) |
WO (1) | WO1999050752A1 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US12072803B1 (en) * | 2022-06-30 | 2024-08-27 | Advanced Micro Devices, Inc. | Systems and methods for tracking data cache miss requests with data cache tags |
Families Citing this family (68)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5978379A (en) * | 1997-01-23 | 1999-11-02 | Gadzoox Networks, Inc. | Fiber channel learning bridge, learning half bridge, and protocol |
US6202129B1 (en) * | 1998-03-31 | 2001-03-13 | Intel Corporation | Shared cache structure for temporal and non-temporal information using indicative bits |
US6216215B1 (en) | 1998-04-02 | 2001-04-10 | Intel Corporation | Method and apparatus for senior loads |
US6542966B1 (en) * | 1998-07-16 | 2003-04-01 | Intel Corporation | Method and apparatus for managing temporal and non-temporal data in a single cache structure |
US7430171B2 (en) | 1998-11-19 | 2008-09-30 | Broadcom Corporation | Fibre channel arbitrated loop bufferless switch circuitry to increase bandwidth without significant increase in cost |
US6560677B1 (en) * | 1999-05-04 | 2003-05-06 | International Business Machines Corporation | Methods, cache memories, systems and computer program products for storing transient, normal, and locked entries in an associative cache memory |
US6728835B1 (en) * | 2000-08-30 | 2004-04-27 | Unisys Corporation | Leaky cache mechanism |
US6681295B1 (en) * | 2000-08-31 | 2004-01-20 | Hewlett-Packard Development Company, L.P. | Fast lane prefetching |
US6598124B1 (en) * | 2000-09-29 | 2003-07-22 | Sun Microsystems, Inc. | System and method for identifying streaming-data |
AU2001294856A1 (en) * | 2000-09-29 | 2002-04-08 | Sun Microsystems, Inc. | System and method for identifying and managing streaming-data |
US6578111B1 (en) * | 2000-09-29 | 2003-06-10 | Sun Microsystems, Inc. | Cache memory system and method for managing streaming-data |
US6668307B1 (en) * | 2000-09-29 | 2003-12-23 | Sun Microsystems, Inc. | System and method for a software controlled cache |
US6766413B2 (en) * | 2001-03-01 | 2004-07-20 | Stratus Technologies Bermuda Ltd. | Systems and methods for caching with file-level granularity |
US7287649B2 (en) * | 2001-05-18 | 2007-10-30 | Broadcom Corporation | System on a chip for packet processing |
US6766389B2 (en) | 2001-05-18 | 2004-07-20 | Broadcom Corporation | System on a chip for networking |
US6574708B2 (en) | 2001-05-18 | 2003-06-03 | Broadcom Corporation | Source controlled cache allocation |
US7239636B2 (en) | 2001-07-23 | 2007-07-03 | Broadcom Corporation | Multiple virtual channels for use in network devices |
US6823426B2 (en) * | 2001-12-20 | 2004-11-23 | Intel Corporation | System and method of data replacement in cache ways |
US7328328B2 (en) * | 2002-02-19 | 2008-02-05 | Ip-First, Llc | Non-temporal memory reference control mechanism |
US7295555B2 (en) | 2002-03-08 | 2007-11-13 | Broadcom Corporation | System and method for identifying upper layer protocol message boundaries |
US7114043B2 (en) * | 2002-05-15 | 2006-09-26 | Broadcom Corporation | Ambiguous virtual channels |
US7269709B2 (en) * | 2002-05-15 | 2007-09-11 | Broadcom Corporation | Memory controller configurable to allow bandwidth/latency tradeoff |
US7266587B2 (en) * | 2002-05-15 | 2007-09-04 | Broadcom Corporation | System having interfaces, switch, and memory bridge for CC-NUMA operation |
US7035979B2 (en) * | 2002-05-22 | 2006-04-25 | International Business Machines Corporation | Method and apparatus for optimizing cache hit ratio in non L1 caches |
US7073030B2 (en) | 2002-05-22 | 2006-07-04 | International Business Machines Corporation | Method and apparatus providing non level one information caching using prefetch to increase a hit ratio |
US6904501B1 (en) * | 2002-06-17 | 2005-06-07 | Silicon Graphics, Inc. | Cache memory for identifying locked and least recently used storage locations |
US7934021B2 (en) | 2002-08-29 | 2011-04-26 | Broadcom Corporation | System and method for network interfacing |
US7346701B2 (en) | 2002-08-30 | 2008-03-18 | Broadcom Corporation | System and method for TCP offload |
US8180928B2 (en) | 2002-08-30 | 2012-05-15 | Broadcom Corporation | Method and system for supporting read operations with CRC for iSCSI and iSCSI chimney |
WO2004021626A2 (en) | 2002-08-30 | 2004-03-11 | Broadcom Corporation | System and method for handling out-of-order frames |
US7313623B2 (en) | 2002-08-30 | 2007-12-25 | Broadcom Corporation | System and method for TCP/IP offload independent of bandwidth delay product |
US7512498B2 (en) * | 2002-12-31 | 2009-03-31 | Intel Corporation | Streaming processing of biological sequence matching |
US7984243B2 (en) * | 2003-11-18 | 2011-07-19 | Panasonic Corporation | Cache memory and method for cache entry replacement based on modified access order |
US7321954B2 (en) * | 2004-08-11 | 2008-01-22 | International Business Machines Corporation | Method for software controllable dynamically lockable cache line replacement system |
US20060101208A1 (en) * | 2004-11-09 | 2006-05-11 | Intel Corporation | Method and apparatus for handling non-temporal memory accesses in a cache |
US7356650B1 (en) * | 2005-06-17 | 2008-04-08 | Unisys Corporation | Cache apparatus and method for accesses lacking locality |
US7437510B2 (en) * | 2005-09-30 | 2008-10-14 | Intel Corporation | Instruction-assisted cache management for efficient use of cache and memory |
US7624257B2 (en) * | 2005-11-30 | 2009-11-24 | International Business Machines Corporation | Digital data processing apparatus having hardware multithreading support including a register set reserved for special class threads |
US20070150658A1 (en) * | 2005-12-28 | 2007-06-28 | Jaideep Moses | Pinning locks in shared cache |
US8527713B2 (en) * | 2006-01-31 | 2013-09-03 | Qualcomm Incorporated | Cache locking without interference from normal allocations |
GB0603552D0 (en) | 2006-02-22 | 2006-04-05 | Advanced Risc Mach Ltd | Cache management within a data processing apparatus |
WO2007097028A1 (ja) * | 2006-02-27 | 2007-08-30 | Fujitsu Limited | Lru制御装置、lru制御方法およびlru制御プログラム |
US20080147989A1 (en) * | 2006-12-14 | 2008-06-19 | Arm Limited | Lockdown control of a multi-way set associative cache memory |
CN101595462B (zh) | 2007-01-31 | 2012-04-25 | 高通股份有限公司 | 用以减少多级高速缓冲存储器层级中的掷出的设备和方法 |
US7793049B2 (en) * | 2007-10-30 | 2010-09-07 | International Business Machines Corporation | Mechanism for data cache replacement based on region policies |
US8108614B2 (en) * | 2007-12-31 | 2012-01-31 | Eric Sprangle | Mechanism for effectively caching streaming and non-streaming data patterns |
BRPI0822963B1 (pt) * | 2008-07-23 | 2019-10-01 | Micro Motion, Inc. | Método para executar uma rotina de processamento utilizando uma memória externa e uma memória interna, e, sistema de processamento |
US8364898B2 (en) * | 2009-01-23 | 2013-01-29 | International Business Machines Corporation | Optimizing a cache back invalidation policy |
US8312219B2 (en) | 2009-03-02 | 2012-11-13 | International Business Machines Corporation | Hybrid caching techniques and garbage collection using hybrid caching techniques |
US8392661B1 (en) * | 2009-09-21 | 2013-03-05 | Tilera Corporation | Managing cache coherence |
JP5444477B2 (ja) * | 2009-12-16 | 2014-03-19 | テレフオンアクチーボラゲット エル エム エリクソン(パブル) | キャッシングのための方法、サーバ、コンピュータプログラム及びコンピュータプログラム製品 |
US9323527B2 (en) * | 2010-10-15 | 2016-04-26 | International Business Machines Corporation | Performance of emerging applications in a virtualized environment using transient instruction streams |
CN103946812B (zh) | 2011-09-30 | 2017-06-09 | 英特尔公司 | 用于实现多级别存储器分级体系的设备和方法 |
CN107608910B (zh) | 2011-09-30 | 2021-07-02 | 英特尔公司 | 用于实现具有不同操作模式的多级存储器分级结构的设备和方法 |
WO2013048493A1 (en) | 2011-09-30 | 2013-04-04 | Intel Corporation | Memory channel that supports near memory and far memory access |
US9317429B2 (en) | 2011-09-30 | 2016-04-19 | Intel Corporation | Apparatus and method for implementing a multi-level memory hierarchy over common memory channels |
WO2013080426A1 (ja) * | 2011-12-01 | 2013-06-06 | パナソニック株式会社 | 熱を考慮した構造を持つ集積回路装置、三次元集積回路、三次元プロセッサ装置、及びプロセススケジューラ |
US9519549B2 (en) * | 2012-01-11 | 2016-12-13 | International Business Machines Corporation | Data storage backup with lessened cache pollution |
US8874852B2 (en) | 2012-03-28 | 2014-10-28 | International Business Machines Corporation | Data cache block deallocate requests in a multi-level cache hierarchy |
US8856455B2 (en) | 2012-03-28 | 2014-10-07 | International Business Machines Corporation | Data cache block deallocate requests |
CN103577480B (zh) * | 2012-08-07 | 2017-05-31 | 中国银联股份有限公司 | 一种参数划分系统及其方法、一种业务处理系统及其方法 |
US9558121B2 (en) * | 2012-12-28 | 2017-01-31 | Intel Corporation | Two-level cache locking mechanism |
US9256539B2 (en) | 2013-03-07 | 2016-02-09 | Lenovo Enterprise Solutions (Singapore) Pte. Ltd. | Sharing cache in a computing system |
WO2014142867A1 (en) | 2013-03-14 | 2014-09-18 | Intel Corporation | Power efficient level one data cache access with pre-validated tags |
US20150095586A1 (en) * | 2013-09-30 | 2015-04-02 | Advanced Micro Devices , Inc. | Storing non-temporal cache data |
US11580125B2 (en) * | 2015-05-08 | 2023-02-14 | Adp, Inc. | Information system with temporal data |
US10379827B2 (en) * | 2016-12-29 | 2019-08-13 | Intel Corporation | Automatic identification and generation of non-temporal store and load operations in a dynamic optimization environment |
US11681627B1 (en) * | 2021-10-18 | 2023-06-20 | Meta Platforms Technologies, Llc | Distributed temporal cache for Systems on a Chip |
Family Cites Families (33)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5119453A (en) * | 1974-08-08 | 1976-02-16 | Fujitsu Ltd | Patsufua memoriseigyohoshiki |
JPS5534336A (en) * | 1978-08-31 | 1980-03-10 | Fujitsu Ltd | Buffer memory control method |
JPS58159285A (ja) * | 1982-03-17 | 1983-09-21 | Nec Corp | バツフアメモリ制御方式 |
JPH01133162A (ja) * | 1987-11-18 | 1989-05-25 | Fujitsu Ltd | キャッシュメモリ制御方式 |
US4905141A (en) | 1988-10-25 | 1990-02-27 | International Business Machines Corporation | Partitioned cache memory with partition look-aside table (PLAT) for early partition assignment identification |
JPH0358151A (ja) * | 1989-07-26 | 1991-03-13 | Nec Corp | キャッシュメモリ装置 |
JPH0358252A (ja) * | 1989-07-27 | 1991-03-13 | Nec Corp | キャッシュメモリ制御装置 |
JPH041838A (ja) * | 1990-04-18 | 1992-01-07 | Nec Corp | キャッシュメモリ制御回路 |
JPH04215151A (ja) * | 1990-12-13 | 1992-08-05 | Nec Commun Syst Ltd | キャッシュ制御方式 |
EP0496439B1 (en) * | 1991-01-15 | 1998-01-21 | Koninklijke Philips Electronics N.V. | Computer system with multi-buffer data cache and method therefor |
GB2255211B (en) * | 1991-04-25 | 1995-05-17 | Intel Corp | LRU pointer updating in a controller for two-way set associative cache |
GB2256512B (en) * | 1991-06-04 | 1995-03-15 | Intel Corp | Second level cache controller unit and system |
JPH05165726A (ja) * | 1991-12-12 | 1993-07-02 | Nec Corp | データ処理装置 |
JPH05233454A (ja) * | 1992-02-24 | 1993-09-10 | Hitachi Ltd | キャッシュメモリ装置 |
US5353425A (en) * | 1992-04-29 | 1994-10-04 | Sun Microsystems, Inc. | Methods and apparatus for implementing a pseudo-LRU cache memory replacement scheme with a locking feature |
US5471605A (en) * | 1992-08-27 | 1995-11-28 | Intel Corporation | Apparatus for updating a multi-way set associative cache memory status array |
US5434992A (en) | 1992-09-04 | 1995-07-18 | International Business Machines Corporation | Method and means for dynamically partitioning cache into a global and data type subcache hierarchy from a real time reference trace |
US5493667A (en) * | 1993-02-09 | 1996-02-20 | Intel Corporation | Apparatus and method for an instruction cache locking scheme |
JPH06348595A (ja) * | 1993-06-07 | 1994-12-22 | Hitachi Ltd | キャッシュ装置 |
JPH07281957A (ja) * | 1994-04-15 | 1995-10-27 | Hitachi Ltd | キャッシュ記憶装置およびアクセス命令生成方法 |
US5826052A (en) | 1994-04-29 | 1998-10-20 | Advanced Micro Devices, Inc. | Method and apparatus for concurrent access to multiple physical caches |
JPH07334428A (ja) * | 1994-06-14 | 1995-12-22 | Toshiba Corp | キャッシュメモリ |
US5584014A (en) * | 1994-12-20 | 1996-12-10 | Sun Microsystems, Inc. | Apparatus and method to preserve data in a set associative memory device |
US5701426A (en) * | 1995-03-31 | 1997-12-23 | Bull Information Systems Inc. | Data processing system and method using cache miss address prediction and forced LRU status in a cache memory to improve cache hit ratio |
US5845317A (en) * | 1995-11-17 | 1998-12-01 | Micron Technology, Inc. | Multi-way cache expansion circuit architecture |
GB2311880A (en) * | 1996-04-03 | 1997-10-08 | Advanced Risc Mach Ltd | Partitioned cache memory |
US5829025A (en) * | 1996-12-17 | 1998-10-27 | Intel Corporation | Computer system and method of allocating cache memories in a multilevel cache hierarchy utilizing a locality hint within an instruction |
JPH10207767A (ja) * | 1997-01-16 | 1998-08-07 | Toshiba Corp | ロック機能付キャッシュメモリ及びこのキャッシュメモリを備えたマイクロプロセッサ |
US6434671B2 (en) * | 1997-09-30 | 2002-08-13 | Intel Corporation | Software-controlled cache memory compartmentalization |
US6202129B1 (en) * | 1998-03-31 | 2001-03-13 | Intel Corporation | Shared cache structure for temporal and non-temporal information using indicative bits |
US6105111A (en) * | 1998-03-31 | 2000-08-15 | Intel Corporation | Method and apparatus for providing a cache management technique |
US6205520B1 (en) * | 1998-03-31 | 2001-03-20 | Intel Corporation | Method and apparatus for implementing non-temporal stores |
US6223258B1 (en) * | 1998-03-31 | 2001-04-24 | Intel Corporation | Method and apparatus for implementing non-temporal loads |
-
1998
- 1998-03-31 US US09/053,386 patent/US6202129B1/en not_active Expired - Lifetime
-
1999
- 1999-03-24 EP EP99915030A patent/EP1066566B1/en not_active Expired - Lifetime
- 1999-03-24 BR BR9909295-6A patent/BR9909295A/pt not_active Application Discontinuation
- 1999-03-24 AU AU33645/99A patent/AU3364599A/en not_active Abandoned
- 1999-03-24 KR KR10-2000-7010799A patent/KR100389549B1/ko not_active IP Right Cessation
- 1999-03-24 WO PCT/US1999/006501 patent/WO1999050752A1/en active IP Right Grant
- 1999-03-24 JP JP2000541596A patent/JP4486750B2/ja not_active Expired - Fee Related
- 1999-03-24 CN CNB998047333A patent/CN1230750C/zh not_active Expired - Lifetime
- 1999-03-24 RU RU2000127102/09A patent/RU2212704C2/ru not_active IP Right Cessation
- 1999-03-31 TW TW88105070A patent/TW573252B/zh not_active IP Right Cessation
-
2001
- 2001-03-09 US US09/803,357 patent/US6584547B2/en not_active Expired - Lifetime
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US12072803B1 (en) * | 2022-06-30 | 2024-08-27 | Advanced Micro Devices, Inc. | Systems and methods for tracking data cache miss requests with data cache tags |
Also Published As
Publication number | Publication date |
---|---|
JP2002510085A (ja) | 2002-04-02 |
CN1295687A (zh) | 2001-05-16 |
US20020007441A1 (en) | 2002-01-17 |
US6584547B2 (en) | 2003-06-24 |
EP1066566A1 (en) | 2001-01-10 |
EP1066566A4 (en) | 2002-10-23 |
WO1999050752A9 (en) | 2000-05-25 |
KR100389549B1 (ko) | 2003-06-27 |
CN1230750C (zh) | 2005-12-07 |
TW573252B (en) | 2004-01-21 |
RU2212704C2 (ru) | 2003-09-20 |
KR20010042262A (ko) | 2001-05-25 |
US6202129B1 (en) | 2001-03-13 |
EP1066566B1 (en) | 2006-11-02 |
WO1999050752A1 (en) | 1999-10-07 |
AU3364599A (en) | 1999-10-18 |
BR9909295A (pt) | 2000-12-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4486750B2 (ja) | テンポラリ命令及び非テンポラリ命令用の共用キャッシュ構造 | |
US6105111A (en) | Method and apparatus for providing a cache management technique | |
US6138213A (en) | Cache including a prefetch way for storing prefetch cache lines and configured to move a prefetched cache line to a non-prefetch way upon access to the prefetched cache line | |
US6766419B1 (en) | Optimization of cache evictions through software hints | |
US6957304B2 (en) | Runahead allocation protection (RAP) | |
US6212602B1 (en) | Cache tag caching | |
US8706969B2 (en) | Variable line size prefetcher for multiple memory requestors | |
US7711902B2 (en) | Area effective cache with pseudo associative memory | |
US4774654A (en) | Apparatus and method for prefetching subblocks from a low speed memory to a high speed memory of a memory hierarchy depending upon state of replacing bit in the low speed memory | |
US8725987B2 (en) | Cache memory system including selectively accessible pre-fetch memory for pre-fetch of variable size data | |
US6990557B2 (en) | Method and apparatus for multithreaded cache with cache eviction based on thread identifier | |
JP2554449B2 (ja) | キャッシュ・メモリを有するデータ処理システム | |
US6292871B1 (en) | Loading accessed data from a prefetch buffer to a least recently used position in a cache | |
US5737751A (en) | Cache memory management system having reduced reloads to a second level cache for enhanced memory performance in a data processing system | |
US6715035B1 (en) | Cache for processing data in a memory controller and a method of use thereof to reduce first transfer latency | |
JP3262519B2 (ja) | 第2レベルキャッシュの古いラインの除去によるプロセッサのメモリ性能の強化方法及びシステム | |
US6240489B1 (en) | Method for implementing a pseudo least recent used (LRU) mechanism in a four-way cache memory within a data processing system | |
US20050216610A1 (en) | Method to provide cache management commands for a DMA controller | |
US5926841A (en) | Segment descriptor cache for a processor | |
US7293141B1 (en) | Cache word of interest latency organization | |
US6976130B2 (en) | Cache controller unit architecture and applied method | |
WO1997034229A9 (en) | Segment descriptor cache for a processor | |
JP2001249846A (ja) | キャッシュメモリ装置及びデータ処理システム | |
US6601155B2 (en) | Hot way caches: an energy saving technique for high performance caches | |
WO2010098152A1 (ja) | キャッシュメモリシステムおよびキャッシュメモリ制御方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060317 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20060317 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070122 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20090610 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20090714 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20091014 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20091021 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20091116 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20091124 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20091214 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20100114 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20091221 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20100216 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20100222 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20100224 |
|
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: 20100316 |
|
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: 20100329 |
|
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: 20130402 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130402 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140402 Year of fee payment: 4 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |