JPH10504124A - 2方向セットアソシエーテイブ・キャッシュ・メモリ - Google Patents

2方向セットアソシエーテイブ・キャッシュ・メモリ

Info

Publication number
JPH10504124A
JPH10504124A JP8508099A JP50809996A JPH10504124A JP H10504124 A JPH10504124 A JP H10504124A JP 8508099 A JP8508099 A JP 8508099A JP 50809996 A JP50809996 A JP 50809996A JP H10504124 A JPH10504124 A JP H10504124A
Authority
JP
Japan
Prior art keywords
cache
state
data
array
subsystem
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.)
Pending
Application number
JP8508099A
Other languages
English (en)
Inventor
ワング,ウェン・ハン
ライ,コンラッド・ケイ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of JPH10504124A publication Critical patent/JPH10504124A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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

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

(57)【要約】 一実施形態では、2方向セットアソシアティブ・キャッシュ・メモリは、セット・アレイとデータ・アレイの両方を含む。データ・アレイは複数の要素を備え、これらの要素はそれぞれ、キャッシュ行を含むことができる。セット・アレイは複数のセットを備え、セット・アレイ内の各セットは、データ・アレイ内の要素に対応する。セット・アレイ内の各セットは、キャッシュ・メモリが受け取ったアドレスが、データ・アレイのそれに対応する要素に含まれるキャッシュ行に合致するかどうかを示す情報を含む。各セットに記憶されている情報は、タグと状態とを含む。タグは、データ・アレイ内の1つのキャッシュ行の参照を含む。特定のセットのタグが、キャッシュ・メモリが受け取ったアドレスに合致する場合、その特定のセットに関連付けられたキャッシュ行が、要求されたキャッシュ行である。特定のセットの状態は、その特定のセットにマップされているキャッシュ行の数を示す。

Description

【発明の詳細な説明】 2方向セットアソシエーテイブ・キャッシュ・メモリ 発明の背景 発明の分野 本発明は、データ記憶の分野に関する。詳細には、本発明は、キャッシュ・メ モリ・サブシステムに関する。 背景 コンピュータ技術は引き続き進歩しており、マイクロプロセッサの動作速度は ますます高速になっている。このような高速マイクロプロセッサを利用するには 、データ記憶機能が、増加したこの速度に追従しなければならない。しかし、高 速メモリは非常に高価であり、このコストは、多数の現代のソフトウエア・プロ グラムが必要とするメモリの量が多いことによってさらに増大する。 高価なメモリの問題に対する1つの解決策は、キャッシュ・メモリ・サブシス テムによる解決策である。キャッシュ・メモリ・サブシステムとは、一般にシス テム・メモリ装置よりもずっと小型であるが、システム・メモリよりも著しく高 い速度で動作するメモリ装置である。キャッシュ・メモリの目的は、マイクロコ ンピュータが次に使用する情報(データであるか、それとも命令であるかにかか わらない)を含むことである。この情報は、キャッシュ・メモリが高速であるた め、マイクロプロセッサにずっと高速に返すことができる。 キャッシュ・メモリ・サブシステムの動作はそれぞれ異なるが、一般に、デー タはシステム・メモリとキャッシュ・メモリとの間でスワップされる。マイクロ プロセッサは、メモリに情報、たとえば、マイクロプロセッサが実行する命令と 命令に関係するデータのどちらかを要求するとき、所望の情報のメモリ・アドレ スをキャッシュ・メモリへ送る。キャッシュ・メモリは、その情報を含む場合、 それを示す信号をマイクロプロセッサに発行する。この信号を一般に「ヒット」 と呼ぶ。キャッシュ・メモリは次いで、要求された情報をマイクロプロセッサに 返す。したがって、マイクロプロセッサは、キャッシュ・メモリが高速であるた め、要求した情報をより高速に受け取ることができる。 しかし、キャッシュ・メモリが、マイクロプロセッサから要求された情報を含 まない場合、一般に「ミス」と呼ばれる信号がマイクロプロセッサに返される。 ミスは、マイクロプロセッサがより低速のシステム・メモリから情報を検索しな ければならないことをマイクロプロセッサに示す。別法として、キャッシュ・メ モリ・コントローラは、情報をシステム・メモリから検索し、マイクロプロセッ サに返さなければならない。どのサブシステムがシステム・メモリから情報を検 索するかにかかわらず、検索された情報はキャッシュ・メモリにも記憶される。 しかし、この情報をキャッシュ・メモリに記憶するには、キャッシュ内の他のデ ータに上書きする必要があることがある。すなわち、新しい情報が書き込まれる 位置に他の情報が含まれることがある。ある種のシステムでは、キャッシュ・メ モリの特定の位置に記憶されている情報をシステム・メモリに転送し、システム ・メモリに記憶されている情報をキャッシュ・メモリのその特定の位置に転送す ることによってこの状況が解決される。 キャッシュ・メモリが特定の位置の情報をシステム・メモリへ転送しなければ ならないかどうかは、使用されているキャッシュ方式にも依存する。たとえば、 ある種のキャッシュ方式では、キャッシュ内の情報が更新されるときにはいつで も情報がシステム・メモリへ転送される。したがって、システム・メモリから新 しい情報を検索する際、キャッシュ内の情報をシステム・メモリへ転送する必要 はない。 キャッシュ・メモリは一般に、システム・メモリよりもずっと小規模である。 したがって、キャッシュ・インデックスと呼ばれるメモリ・アドレスの一部のみ がキャッシュ・メモリのインデックスとして使用される。メモリ・アドレスの第 2の部分は、一般に「タグ部」と呼ばれ、キャッシュ・メモリに記憶されている 情報が要求された情報であるかどうかを判定するために使用される。したがって 、複数のシステム・メモリ・アドレスがキャッシュ・メモリ内の同じスロットを 参照する。マイクロプロセッサが、すでに別のキャッシュ行によって使用されて い るキャッシュ・メモリのスロットに対応するメモリ・アドレスを要求すると、競 合が発生する。 キャッシュ・メモリ・サブシステムはしばしば、複数のキャッシュ行に分割さ れ、メモリ・アドレスのキャッシュ・インデックス部が、これらのキャッシュ行 のうちの1つに対応する。各キャッシュ行は複数のバイトを含み、マイクロプロ セッサから要求された特定のバイトは、メモリ・アドレスにおけるオフセットと して示される。システム・メモリも、しばしばキャッシュ・メモリと同じ行サイ ズに分割される。システム・メモリ内のこれらの行をデータ行と呼ぶ。 キャッシュ行の競合を解決する1つのタイプのキャッシュ・メモリ・サブシス テムは、当技術分野では直接マップ・キャッシュと呼ばれる。直接マップ・キャ ッシュでは、競合が発生すると、キャッシュに記憶されているキャッシュ行がシ ステム・メモリへ転送され、マイクロプロセッサからの要求に対応するデータ行 がキャッシュ・メモリ内のその位置へ転送される。そのようなキャッシング・シ ステムはいつかの利点を有する。第1に、キャッシュを実施するハードウェアの 複雑さが比較的簡単である。この位置のタグが要求と比較され、それらが合致す る場合、キャッシュ行がマイクロプロセッサに返され、合致しない場合、データ はシステム・メモリから検索される。 第2に、キャッシュ・メモリ・サブシステムのコストは比較的低い。この理由 は2つある。前述のように論理複雑度が低減されているため、システムのコスト が低減される。また、複雑度が低いので、キャッシュ・メモリは静的ランダム・ アクセス・メモリ(SRAM)セルを使用することができる。SRAMは広く市 販されており、他の多数のタイプのメモリ・セルと比べて廉価である。 しかし、直接マップ・キャッシュは、ある種の状況の下では不適切に動作する 。たとえば、メモリ・アドレスAとメモリ・アドレスBが、共に、同じキャッシ ュ位置、すなわち位置Xを参照することとがありうる。マイクロプロセッサが最 初に、メモリ・アドレスAを要求した場合、アドレスAのデータは位置Xに記憶 される。マイクロプロセッサが次のクロック・サイクルでアドレスBを要求した 場合、位置Xのデータがシステム・メモリ(アドレスA)に返され、アドレスB のデータが位置Xに記憶される。その場合、マイクロプロセッサによる次の要求 は、 再びアドレスAを求めるものとなることがある。したがって、位置Xのデータは システム・メモリ(アドレスB)に返され、アドレスAのデータは再び位置Xに 記憶される。したがって、マイクロプロセッサが、アドレスA、アドレスB、ア ドレスA、アドレスB、アドレスA、アドレスBなどの順に要求を出した場合、 ヒット率(すなわち、キャッシュへのアクセスの総数に対するキャッシュ・ヒッ トの数)は非常に低くなる。したがって、マイクロプロセッサがアドレスAとア ドレスBを交互に要求すると直接マップ・キャッシュの性能が影響を受けること が分かる。 この性能上の欠点を解決する第2のタイプのキャッシュ・メモリは、2方向セ ットアソシアティブ・キャッシュ・メモリである。2方向セットアソシアティブ ・キャッシュは、共に動作する2つの直接マップ・キャッシュとみなすことので きる2つの「方向」を含む(このため、直接マップ・キャッシュを1方向キャッ シュと呼ぶこともある)。2方向キャッシュでは、競合が発生した場合、第1の 方向のキャッシュに記憶されているデータが第2の方向のキャッシュへ転送され 、新しいデータがシステム・メモリから第1の方向のキャッシュへ転送される。 したがって、両方のデータ行がキャッシュ・メモリに記憶される。したがって、 マイクロプロセッサが、前述のように、アドレスAの要求とアドレスBの要求と の間で連続的に切り替わる場合、各要求がキャッシュをヒットし、ヒット率が高 くなる。両方のデータ行は、第2の競合、すなわち同じ位置にアクセスする第3 の要求が発生するまでキャッシュに残る。 したがって、2方向キャッシュは、直接マップ・キャッシュの性能問題をある 程度解決することが分かる。しかし、このように性能を増大することは、いくつ かの犠牲を有する。第1に、2方向キャッシュを操作するための論理複雑度が大 きくなる。両方向の両方のキャッシュ行を監視するために追加論理機構を含めな ければならず、この論理機構は、マイクロプロセッサからの要求がキャッシュで ヒットするときには固有のデータを返さなければならない。第2に、2方向キャ ッシュは一般に、標準SRAMではなくカスタマイズ・メモリ・セルを使用する 。したがって、キャッシュ・システムの財政上のコストが増大する。 コスト面の第3の問題は、2方向キャッシュの電力消費量が直接マップ・キャ ッシュの電力消費量よりも大きいことである。直接マップ・キャッシュがヒット が発生したかどうかを判定するためにアクセスするキャッシュ行は1つだけであ る。しかし、2方向キャッシュでは、ヒットが発生したかどうかを判定するため に両方のキャッシュ行がアクセスされ、ヒットが発生した場合は固有の行がマイ クロプロセッサに返される。したがって、2方向キャッシュは、2倍の数のキャ ッシュ行にアクセスするので、直接マップ・キャッシュの電力の2倍の電力を使 用することが分かる。 したがって、現代のマイクロプロセッサの増加した速度を利用するために高速 に動作するキャッシュ・メモリ・サブシステムを提供すると有利である。本発明 はそのような解決策を提供する。 さらに、直接マップ・キャッシュと2方向キャッシュの向上した性能との両方 の利点を有するキャッシュ・メモリ・サブシステムを提供すると有利である。本 発明は、それほど複雑ではなく、2方向キャッシュよりもコストが低く、かつ電 力使用量が低いことを特徴とするキャッシュ・メモリを提供する。本発明は、従 来型の直接マップ・キャッシュと比べて高いヒット率も実現する。 発明の概要 本明細書では2方向セットアソシアティブ・キャッシュ・メモリについて説明 する。一実施態様では、キャッシュ・メモリは、セット・アレイとデータ・アレ イの両方を含む。データ・アレイは、それぞれ、キャッシュ行を含むことができ る複数の要素を備える。セット・アレイは、それぞれ、データ・アレイ内の要素 に対応する、複数のセットを備える。セット・アレイ内の各セットは、キャッシ ュ・メモリが受け取ったアドレスが、データ・アレイの対応する要素内のキャッ シュ行に合致するかどうか(要素がキャッシュ行を含むと仮定する)を示す情報 を含む。 各セットは、タグ情報と状態情報とを含む。タグ情報は、データ・アレイ内の 1つのキャッシュ行の参照である。特定のセットのタグが、キャッシュ・メモリ が受け取ったアドレスのタグ部に合致する場合、その特定のセットに関連付けら れたキャッシュ行が、要求されたキャッシュ行である。特定のセットの状態情報 は、その特定のセットにマップされているキャッシュ行の数を示す。 図面の簡単な説明 本発明を添付の図面に制限ではなく一例として図示する。図面において、同じ 参照符号は同様な要素を示す。 第1図は、本発明のコンピュータ・システムの一例の概要を示す図である。 第2図は、本発明の一実施形態におけるキャッシュ・メモリのセット・アレイ および対応するデータ・アレイを示す図である。 第3A図は、本発明の一実施形態における最後に使用されたセット情報を判定 するためのビット・マップを示す図である。 第3B図は、本発明の代替実施形態における最後に使用されたセット情報を判 定する論理回路を示す図である。 第4図は、本発明の一実施形態におけるキャッシュ・メモリ・サブシステムの ブロック図である。 第5A図は、第4図のキャッシュ・メモリ・サブシステムを操作する際に本発 明の一実施形態が従うステップを示す図である。 第5B図は、第4図のキャッシュ・メモリ・サブシステムを操作する際に本発 明の一実施形態が従うステップを示す図である。 第6図は、本発明の代替実施形態におけるキャッシュ・メモリ・サブシステム のブロック図である。 第7A図は、第6図のキャッシュ・メモリ・サブシステムを操作する際に本発 明の一実施形態が従うステップを示す図である。 第7B図は、第6図のキャッシュ・メモリ・サブシステムを操作する際に本発 明の一実施形態が従うステップを示す図である。 第8図は、本発明の他の実施形態におけるキャッシュ・メモリ・サブシステム のブロック図である。 第9A図は、第8図のキャッシュ・メモリ・サブシステムを操作する際に本発 明の一実施形態が従うステップを示す図である。 第9B図は、第8図のキャッシュ・メモリ・サブシステムを操作する際に本発 明の一実施形態が従うステップを示す図である。 詳細な説明 下記の詳細な説明では、本発明を完全に理解していただくために多数の特定の 詳細について述べる。しかし、当業者には、これらの特定の詳細なしで本発明を 実施できることが理解されよう。他の例では、本発明の態様を曖昧にしないよう に周知の方法、手順、構成要素、回路については詳しく説明しない。 第1図は、本発明のコンピュータ・システムの一例の概略図を示す。コンピュ ータ・システムは一般に、情報を伝達するシステム・バスまたはその他の通信装 置100と、情報および命令を処理するためにバス100に結合された中央演算 処理装置(CPU)101とを備える。一実施態様では、本発明は、CPU10 1としてインテル(Intel)アーキテクチャ・マイクロプロセッサを含むが 、任意のタイプのマイクロプロセッサ・アーキテクチャを使用することができる 。一実施形態では、バス100は、アドレス・バスと、データ・バスと、制御バ スとを含む。コンピュータ・システムは、CPU101に関する情報および命令 を記憶するためにバス100に結合されたシステム・メモリまたはランダム・ア クセス・メモリ(RAM)104と、CPU101に関する静的情報および命令 を記憶するためにバス100に結合された読取り専用メモリ(ROM)105と 、情報および命令を記憶するためにバス100に結合された磁気ディスクやディ スク・ドライバなどのデータ記憶装置106と、コンピュータ・ユーザに情報を 表示するためにバス100に結合された表示装置107と、選択された情報およ びコマンドをCPU101に伝達するためにバス100に結合された英数字キー とファンクション・キーとを含む英数字入力装置108と、選択されたユーザ入 力情報およびコマンドをCPU101に伝達するためにバス100に結合された カーソル制御装置109と、コンピュータ画像の視覚表現を与えるためにバス1 00に結合されたプロッタやプリンタなどのハード・コピー装置111も含む。 本発明のコンピュータ・システムと共に使用される表示装置107は、液晶装 置でも、あるいは陰極線管でも、あるいはユーザが認識できるグラフィック画像 および英数字(漢字文字セット)を作成するのに適したその他の表示装置でもよ い。カーソル制御装置109によって、コンピュータ・ユーザは、表示装置10 7の表示画面上で視覚記号(たとえば、カーソルまたはポインタ)の二次元移動 を動的に表すことができる。所与の変位方向または変位方法の移動を表すことが できるトラックボールや、マウスや、ジョイスティックや、英数字入力装置10 8上の特殊キーを含め、カーソル制御装置の多数の実施態様が当技術分野におい て知られている。カーソルが、特殊キーおよびキー・シーケンス・コマンドを使 用するキーボードからの入力を介して命令し、あるいは作動させることができる ことを理解されたい。別法として、カーソルは、身体障害者向けに固有に開発さ れた装置を含め、特別に適応化されたいくつかのカーソル命令装置からの入力を 介して命令し、あるいは作動させることができる。 CPU101は、CPU101内の構成要素間で情報を伝達すると共に、それ らの構成要素とCPU101の外部の構成要素との間で情報を伝達する内部バス またはその他の通信装置115を含む。CPU101には命令実行ユニット11 6も含まれる。命令実行ユニット116は、命令を受け取って実行し、コンピュ ータ・システム内のデータ記憶装置からデータを検索する。これらのデータおよ び命令は、システム・メモリ104、ROM105、データ記憶装置106など に記憶することができる。CPU101には、実行ユニット116によって使用 されるデータおよび命令を記憶するレベル1(L1)キャッシュ117も含まれ る。CPU101が他の構成要素を含むが、図面を乱雑にし本発明を曖昧にする ことのないようにこれらの構成要素が図示されていないことに留意されたい。 CPU101は、L2バス119を介してレベル2(L2)キャッシュ118 に結合される。L2キャッシュ118は、実行ユニット116によって使用され るデータおよび命令を記憶する追加キャッシュである。本発明の一実施形態では 、L2キャッシュ118はL1キャッシュ117よりも大規模であると共に低速 である。L2キャッシュ118は、L2キャッシュ118の動作を制御するL2 コントローラ120を含み、L2キャッシュ118に含まれるデータおよび命令 を記憶するL2RAM121も含む。図の実施形態では、L2コントローラ12 0はL2キャッシュ118に含まれる。別法として、L2コントローラ120を CPU101に含めることができる。 第1図のコンピュータ・システムが例示的なものに過ぎないことが理解されよ う。本発明のいくつかの実施態様では、コンピュータ・システムに追加プロセッ サまたはその他の構成要素を含めることができる。さらに、本発明のある種の実 施態様では、すべての前述の構成要素が必要とされるわけではなく、また、すべ ての前述の構成要素が含まれるわけでもない。たとえば、表示装置107または ハード・コピー装置111はバス100に結合しなくてもよい。さらに、ある種 の実施態様では、構成要素を異なる方法で結合することができる。たとえば、L 2キャッシュ118を内部バス115ではなくシステム・バス100に直接接続 することができる。 第2図は、本発明の一実施形態におけるキャッシュ・メモリのキャッシュ・イ ンデックスまたはセット・アレイ201と対応するデータ・アレイ221を示す 。セット・アレイ201は、2・n個のデータセットを含み、データ・アレイ2 21は2・n個の要素を含む。セット・アレイ201の各データ・セットは、デ ータ・アレイ221内の単一の要素に対応する。 図のセット・アレイ201は、物理的に連続する単一のアレイである。しかし 、セット・アレイ201は、2方向セットアソシアティブ・キャッシュとみなす ことができる。これは第2図では方向0および方向1によって示されており、各 方向はn個のセットを備える。キャッシュ・メモリが受け取るアドレスは、セッ ト・インデックス205などのセット・インデックスの部分を含む。セット・イ ンデックス205は、そのセットが方向0であるか、それとも方向1であるかに かかわらず、セット・アレイ201内の1つの特定のセットを固有に識別する。 したがって、セット・インデックス205のサイズ(すなわち、ビットの数)は 、セット・アレイ201内のセットの数によって決定される。 第2図に示したように方向0と方向1に分割した場合、方向0のセットを識別 するセット・インデックスと、方向1のセットを識別するセット・インデックス との間の差はセット・インデックスの最上位ビットである。たとえば、最上位ビ ットを含め、セット・インデックス205のすべてのビットが零である場合、セ ット・インデックス205はセット・アレイ201の方向0のセット1にマップ される。しかし、セット・インデックス205の最上位ビットが1であり、他の すべてのビットが零である場合、セット・インデックス205はセット・アレイ 201の方向1のセット1にマップされる。 したがって、セット・アレイ201は基本的に、直接マップ・キャッシュとし て動作できることが分かる。すなわち、セット・アレイ201への各セット・イ ンデックスは、セット・アレイ201の1つの特定のセットにマップされる。し かし、異なる方向の対応するセットにアクセスするには、セット・インデックス の最上位ビットをフリップするだけでよいことに留意されたい。したがって、た とえば方向1のセット4に関するセット・インデックスが与えられた場合、ユー ザが方向0のセット4にアクセスしたい場合は、セット・インデックスの最上位 ビットを0にフリップするだけでよい。 本発明の一実施形態では、セット・アレイ201内の各セットは、タグ・フィ ールドと状態フィールドとを含む。特定のセットのタグ・フィールドは、データ ・アレイ221の対応する要素に記憶されているキャッシュ行を識別する。たと えば、セット・アレイ201の方向0のセット2のタグ・フィールドは、データ ・アレイ221の要素2のメモリ・アドレスを示す。特定のセットのタグ・フィ ールドに記憶されている情報は、プロセッサからのメモリ・アドレス要求の一部 として受け取られる。セット・アレイ201内の特定のセットの状態フィールド は、下記で詳しく説明するように、セットにマップされているキャッシュ行の数 を示す。本発明の代替実施形態では、2つのセット・アレイが使用される。1つ のセット・アレイはタグ・フィールドを含み、それに対して第2のセット・アレ イは状態フィールドを含む。この実施形態については、下記で第4図を参照しな がら詳しく論じる。 当業者には、本発明の代替実施形態が追加情報を含むセット・アレイを使用で きることが理解されよう。たとえば、本発明の一実施形態では、セット・アレイ 201は、エラー検査に使用される各セットごとのパリティ・ビットを含み、( たとえば、周知のMESIプロトコルを使用して)キャッシュ行の妥当性を反映 する状況ビットも含む。 本発明の一実施態様では、セット・アレイ201は合計で1024個のセット を備える。したがって、各方向は、512個のセットを含み、セット・インデッ クス205は10個のビットを備える。したがって、データ・アレイ221も1 024個の要素を含む。本発明の一実施形態では、データ・アレイ221内の各 要素は、コンピュータ・システムの単一のキャッシュ行である。一実施態様では 、このキャッシュ行のサイズは32バイトである。しかし、セット・アレイ、デ ータ・アレイ、キャッシュ行に関するこれらのサイズが例示的なものに過ぎず、 これらの構成要素が任意のサイズのものでよいことが理解されよう。 前述のように、セット・アレイ201内の各セットは、状態フィールドを含む ことができる。本発明の一実施形態では、状態フィールドは、この特定のセット にマップされているキャッシュ行の数を示す。各セット・インデックスは、1組 のセット・アレイ201を固有に識別する。しかし、複数のデータ行が同じセッ ト・インデックスを有することができるので、データ行がキャッシュ行としてキ ャッシュへ転送されるとき、本発明では、セット・インデックスを複数のキャッ シュ行にマップすることができる。この実施形態では、状態フィールドに関して 3つの可能な状態が存在する。この3つの状態は直接状態、対(paired) 状態、借用(borrowed)状態である。 直接状態は、このセットには単一のキャッシュ行しかマップされていないこと を示す。すなわち、このセットに関連付けられているキャッシュ行は1つだけで ある。直接状態のセットは、借用状態と対状態のどちらかに遷移することも、あ るいは直接状態のままでいることもできる。 対状態のセットは、このセットに2つのキャッシュ行がマップされていること を示す。すなわち、このセットには2つのキャッシュ行が関連付けられている。 この状態では、一方のキャッシュ行に関連付けられた情報(すなわち、タグ、状 態、データなど)がこのセットおよび対応するデータ・アレイ要素に記憶されて いる。その場合、このセットを「一次」セットと呼ぶ。第2のキャッシュ行に関 連付けられた情報は、他方向の対応するセットおよびデータ・アレイ要素に記憶 されている。このセットを「パートナー」セットと呼ぶ。パートナー・セットは 、単に一次セットのセット・インデックスの最上位ビットをフリップすることに よってアクセスすることができる。たとえば、一次セットが方向0のセット4で ある場合、パートナー・セットは方向1のセット4である。対状態のセットは、 直 接状態へ遷移することも、あるいは対状態のままでいることもできる。 セットが借用状態である場合、このセットにはキャッシュ行はマップされてい ない。これは、下記の2つのことのうちの一方を示す。第1に、このセットは、 他方向の対応するセットによって使用することができる。すなわち、他方向の対 応するセットは対状態であり、このセットに第2のキャッシュ行がマップされて いる。第2に、他方向の対応するセットも借用状態である。これは、このセット にマップされているキャッシュ行も、あるいは他方向の対応するセット(すなわ ち、このセットのパートナー・セット)にマップされているキャッシュ行もない ことを示す。借用状態のセットは、直接状態に遷移することも、あるいは借用状 態のままでいることもできる。システム・スタートアップ時には、セット・アレ イ201内のすべてのセットが借用状態に初期設定される。 各一対の対応するセット(一対の対応するセットのセット・インデックスは、 最上位ビットのみが異なる)が一次/パートナー・セットの組合せであることに 留意されたい。どちらのセットが一次セットであってもよく、どちらのセットが パートナー・セットであってもよい。どちらのセットが一次セットであり、どち らのセットがパートナー・セットであるかは、セット・インデックスによって示 されるセットによって判定される。セット・インデックスによって示されるセッ トは一次セットであり、他方向の対応するセットはパートナー・セットである。 下記で詳しく論じるように、どちらのセットが一次セットであるかが、2つのセ ットのうちのどちらが最後に使用されたものかにも依存することにも留意された い。 さらに、特定のセットが対状態のときには常に、そのセットのパートナー・セ ットが借用状態であることに留意されたい。対/借用状態を使用することによっ て、2方向キャッシュが作成される。すなわち、特定のセットが対状態である場 合、そのセットは1つのキャッシュ行の情報を含み、そのパートナー・セットは 、このセットにマップされている第2のキャッシュ行の情報を含む。 したがって、2つのキャッシュ行間の競合が発生するまで、キャッシュ・メモ リが直接マップ・キャッシュとして動作することが分かる。そのような競合が発 生すると、キャッシュ・メモリは2方向セットアソシアティブ・キャッシュとし て動作する。 セット・アレイ201内の状態フィールドを使用することによって、要求がキ ャッシュでヒットするか、それともキャッシュをミスするかに関する予備判定を ある種の要求に対して下すことができる。プロセッサから受け取った要求が借用 状態のセットを示す場合、その要求は確実にミスする。すなわち、借用状態は、 このセットにキャッシュ行がマップされていないことを示す。したがって、この 要求のタグをセット・アレイ201の一次セットまたはパートナー・セットのタ グと比較する必要はない。 プロセッサからの要求が直接状態のセットを示す場合、その要求はキャッシュ でヒットすることも、あるいはミスすることもある。インデックスで示されたセ ットのタグ・フィールドをプロセッサからの要求のタグ・フィールドと比較し、 ヒットが発生するかどうかを判定しなければならない。しかし、直接状態が、こ のセットに単一の行しかマップされていないことを示しているので、パートナー ・セットを検査する必要はない。したがって、単一のセットのみのタグ・フィー ルドを、プロセッサから受け取ったアドレスのタグ・フィールドと比較する必要 がある。したがって、当業者には、セット・アレイ201の各セットが直接状態 と借用状態のどちらかであるとき、キャッシュが直接マップ・キャッシュとして 動作することが理解されよう。 プロセッサからの要求が対状態のセット・アレイ201内のセットを示す場合 、その要求はキャッシュでヒットすることも、あるいはミスすることもある。本 発明の一実施態様ではまず、この要求のタグ・フィールドが一次セット内のタグ ・フィールドと比較される。タグ・フィールドが合致する場合、一次セットに関 連付けられたキャッシュ行がプロセッサに返される。しかし、一次セットのタグ ・フィールドが要求のタグ・フィールドに合致しない場合、パートナー・セット のタグ・フィールドが要求のタグ・フィールドと比較される。パートナー・セッ トのタグと要求のタグ・フィールドが合致する場合、パートナー・セットに関連 付けられたキャッシュ行がプロセッサに返される。そうでない場合、プロセッサ にミス表示が返される。 したがって、セットが対状態のとき、そのセットとそのセットのパートナー・ セットは2方向キャッシュと同様に動作する。しかし、第2のセットが、第1の セットがミスであるときにしかアクセスされないので、2つのセットは完全に2 方向キャッシュとして動作するわけではない。 本発明の一実施態様では、一次セットは、最後に使用された(MRU)セット である。MRUセットは、プロセッサから最後にアクセスされたセットである。 したがって、一次セットは、下記で詳しく論じるように、一次セット−パートナ ー・セットの対のうちのどちらのセットでもよい。 第4図および第6図の実施形態では、L2キャッシュにアクセスする際にMR U論理機構が使用される。MRU論理機構(またはインディケータ)は、一次セ ット−パートナー・セットの対のうちのどちらがプロセッサからアクセスされた かを示す。第4図および第6図の実施形態では、MRUセットを一次セットと呼 び、最初に使用された(LRU)セットをパートナー・セットと呼ぶ。プロセッ サからの要求がミスであるとき、一次セットとパートナー・セットのどちらかの キャッシュ行がシステム・メモリへ転送され、システム・メモリから来るキャッ シュ行用の自由位置が与えられる。一実施態様では、最初に使用されたキャッシ ュ行(すなわち、パートナー・セット)は、システム・メモリから来るキャッシ ュ行とスワップされるキャッシュ行である。したがって、MRU論理機構を使用 することによって、システム・メモリへ転送すべき固有のキャッシュ行が分かる 。 第3A図は、本発明の一実施形態において最後に使用されたセット情報を判定 するビット・マップを示す。第3A図は、10個の入力線と1つの出力線とを有 するビット・マップ310を示す。ビット・マップ310の10個の入力線は、 セット・アレイ201のセット・インデックスの10ビットである。したがって 、ビット・マップ310は、10個の入力を用いて、1024個の固有の位置に アクセスすることができる。この10個の入力が与えられた場合、ビット・マッ プ310は、単一ビット、すなわちMRUビット311、すなわちビット・マッ プ310に入力された特定のセットに関するMRUインディケータを出力する。 一実施態様では、MRUビット311が「0」である場合、最後に使用されたセ ットは、セット・インディケータの最上位ビットをフリップしないことによって 判定される。しかし、MRUビット311が「1」である場合、最後に使用され た セットは、セット・インデックスの最上位ビットをフリップすることによって示 される。たとえば、セット・インデックスは、セット・アレイ210内のセット を示す。MRUビット311が「0」である場合、そのセット・インデックスは 一次セットのインデックスである。しかし、MRUビット311が「1」である 場合、そのセット・インデックスはパートナー・セットのインデックスである。 第3B図は、本発明の代替実施形態において最後に使用されたセット情報を判 定する論理回路を示す。第3B図は、9つの入力線を有するビット・マップ32 0を示す。この9つの入力線は、プロセッサから受け取ったアドレスのセット・ インデックスの9つの最下位ビットである。セット・インデックスの最上位ビッ トは、ビット・マップ320からの出力と共に、従来型の排他的論理和ゲート3 22に入力される。次いで、排他的論理和ゲート322の出力が、ゲート322 に入力された最上位ビットではなくセット・インデックス(すなわち、ビット1 4)の最上位ビットとして使用される。したがって、第3B図の回路の結果は、 第3A図で説明したように最上位ビットをフリップするかどうかを示すのではな く実際の最上位ビットを示す。 本発明の一実施態様では、MRU論理機構は、ビット・マップ(第3A図のビ ット・マップ310と第3B図のビット・マップ320のどちらか)内の各位置 をシステム・スタートアップ時に零に設定することによって初期設定される。こ の実施形態では、MRU論理機構は、第3A図と第3B図のどちらかの論理回路 を使用して実施することができる。その場合、MRU論理機構は、下記で詳しく 論じるように、セットが直接状態から対状態に遷移するときに更新される。 第4図は、本発明の一実施形態におけるキャッシュ・メモリ・サブシステムの ブロック図である。この実施形態では、MRU論理機構と状態情報は共に、CP Uと同じ集積回路(IC)パッケージに記憶され、レベル2(L2)キャッシュ は、別のICパッケージに含まれる。第4図は、CPU402とL2キャッシュ 403の両方用の論理回路を示す。この2つのICパッケージ間の分離は境界線 401によって示されている。 CPU402は、命令実行ユニット405と、レベル1(L1)キャッシュお よびコントローラ406と、MRU論理機構407と、L2状態コントローラ4 08と、状態アレイ409とを含む。CPU402内には、CPU402の様々 な構成要素間で情報を伝達する内部バス404も含まれる。当業者には、論理演 算装置など、CPU402の動作に必要な様々な追加構成要素もCPU402内 に含まれることが理解されよう。しかし、図面を乱雑にし本発明を曖昧にするこ とのないように、これらの追加構成要素は第4図には示されていない。 命令実行ユニット405は、コンピュータ・システム内で動作しているプログ ラムから検索された命令を実行する。この実行では、コンピュータ・システムの メモリから命令とデータの両方が検索される。実行ユニット405は、追加命令 またはデータを要求するときにはまず、L1キャッシュおよびコントローラ40 6に情報を要求する。実行ユニット405からの要求がL1キャッシュ406を ヒットする場合、要求された情報が実行ユニット405に返される。しかし、実 行ユニット405からの要求がL1キャッシュ406をミスする場合、L1キャ ッシュ・コントローラ406から受け取ったアドレスがL2状態コントローラ4 08に入力される。本発明の一実施形態では、L1キャッシュおよびコントロー ラ406は従来型のキャッシュ・メモリである。代替実施形態では、L1キャッ シュおよびコントローラ406は、本発明によるキャッシュ・メモリである。 MRU論理機構407は、第3A図および第3B図に示したような、MRU情 報を提供する論理回路である。実行ユニット405からの要求は、L1キャッシ ュ406に入力されるのと同時にMRU論理機構407に入力され、それによっ てL2キャッシュ403内の特定のセットに関するMRU情報にL1キャッシュ 406と並列にアクセスすることができる。したがって、L1キャッシュおよび コントローラ406が要求のアドレスをL2状態コントローラ408に出力する のと同時に、L2状態コントローラ408は、上記で第3A図で論じたMRUビ ット311や第3B図で論じたビット14などのMRU情報を得ることができる 。 L2状態コントローラ408は、L1キャッシュ406とMRU論理機構40 7の両方から入力を受け取る。L2状態コントローラ408は、MRU論理機構 407から受け取ったMRU情報と、L1キャッシュ406から受け取った要求 されたセット・インデックスの最下位ビットを組み合わせる。したがって、L2 状態コントローラ408は、一次セット(すなわち、パートナー・セット−一次 セットの対のうちの最後に使用されたセット)のアドレスを生成する。 L2状態コントローラ408は状態アレイ409にも結合される。状態アレイ 409は、L2キャッシュ内の各セットごとの状態フィールドを含む。特定のセ ットに関する状態フィールドは、そのセットが直接状態であるか、それとも対状 態であるか、それとも借用状態であるかを示す。したがって、要求がL1キャッ シュをミスする場合、L2状態コントローラ408は、要求に関する一次セット の状態を判定する。したがって、セットが借用であり、したがって確実にミスす るかどうかなど予備的な情報に、L2キャッシュ403にアクセスせずにCPU 402と同じICパッケージ内でアクセスすることができる。したがって、ある 種の状況の下では、L2キャッシュ403の別のICパッケージにアクセスする 時間遅延を発生させずに実行ユニット405にミス表示を返すことができる。 要求がL1キャッシュ406をミスし、L2状態コントローラ408が、この セットが直接状態と対状態のどちらかであると判定した場合、L2キャッシュ4 03がアクセスされる。実行ユニット405からの要求されたアドレスは、L2 状態コントローラ408からL2キャッシュ403に入力される。このアドレス は、アドレス420として示されており、32ビットを備える。アドレス420 の最上位16ビットは、実行ユニット405からの要求のタグ・フィールドを含 む。下記で詳しく論じるように、このタグ・フィールドを使用して、一次セット に関連付けられたキャッシュ行が要求に合致するかどうかが判定される。上記で 第2図を参照して説明したように、アドレス420のビット[14:5]は、セ ット・アレイ422のインデックスである。アドレス420の最下位5ビットは 、データ・アレイ424のキャッシュ行内のオフセットである。すなわち、アド レス420のビット[4:0]は、ヒットの場合にはまず、要求されたキャッシ ュ行内のどのバイトを実行ユニット405に返すべきかを示す。 アドレス420に基づく一次セットがアクセスされ、そのセットのタグがタグ 比較論理機構426に入力される。タグ比較論理機構426によって、一次セッ トのタグとアドレス420から得たタグ・フィールドが比較される。次いで、こ の比較の結果が制御論理機構428に入力される。アドレス420のビット[1 4:5]がデータ・アレイ424にも入力されることに留意されたい。したがっ て、データ・アレイ424の出力は、アドレス420によって示されたセットに 関連付けられたキャッシュ行である。タグ比較論理機構426が、一次セットの タグとアドレス420のタグが合致することを示す場合、制御論理機構428に よって、ヒット表示がデータ・アレイ424からのキャッシュ行と共にCPU4 02に返される。 しかし、タグ比較論理機構426が、タグが合致しないことを示す場合、制御 論理機構428は、一次セットの状態が直接であるか、それとも対であるかに応 じて、パートナー・セットを検査し、あるいはミスを返す。一次セットの状態は 、L2状態コントローラ408からの入力として受け取られる。一次セットの状 態が直接である場合、制御論理機構428はミス表示を返す。しかし、一次セッ トの状態が対である場合、制御論理機構428は、最初に使用された(LRU) セットのセット・インデックスを使用してセット・アレイ422とデータ・アレ イ424の両方にアクセスする。前述のように、これは、セット・インデックス の最上位ビット、たとえばアドレス420のビット[14]をフリップすること によって行われる。LRUセットのセット・アレイ422から得たタグは、タグ 比較論理機構426によって、アドレス420から受け取ったタグと比較される 。次いで、この比較の結果が制御論理機構428に出力される。タグ比較論理機 構426がヒットを示す場合、LRUセットに関連付けられたデータ・アレイ4 24のキャッシュ行が、ヒット表示と共にCPU402に返される。しかし、タ グ比較論理機構426がミスを示す場合、制御論理機構428はCPU402に ミス表示を返す。 本発明の一実施形態では、制御論理機構428が、L2キャッシュ403が必 要とするデータ行をシステム・メモリから検索する。代替実施形態では、L1キ ャッシュおよびコントローラ406が、必要なデータ行をシステム・メモリから 検索する。他の代替実施形態では、実行ユニット405が、必要なデータ行をシ ステム・メモリから検索する。 第5A図および第5B図は、第4図のキャッシュ・メモリ・サブシステムを操 作する際に本発明の一実施形態が従うステップを示す。まずステップ505で、 CPUの実行ユニットから、情報を求める要求が発行される。本発明の一実施態 様では、この要求は、第4図に示したアドレス420などのアドレスの形のもの である。ステップ506で、実行ユニットからのこの要求を使用してL1キャッ シュがアクセスされ、ステップ508でMRU論理機構がアクセスされる。第5 A図に示したように、ステップ506とステップ508は並行に実行される。 L1キャッシュおよびコントローラは、実行ユニットから要求を受け取ると、 ステップ510で、要求がL1キャッシュでヒットするかどうかを判定する。要 求がL1キャッシュでヒットする場合、ステップ512で、要求されたキャッシ ュ行がL1キャッシュから実行ユニットに返され、それによって要求が満たされ る。しかし、要求がL1キャッシュをミスする場合、L2状態コントローラはス テップ515で、実行ユニットからの要求によって示された一次セットが借用状 態であるかどうかを判定する。一次セットは、ステップ508で得たMRU情報 によって修正された、実行ユニットから受け取ったセット・アドレスによって示 されるセットである。パートナー・セットは、一次セット・アドレスの最下位ビ ット、およびフリップされた一次セット・アドレスの最上位ビットを使用して示 されるセットである。したがって、一次セットは最後に使用されたセットであり 、パートナー・セットは最初に使用されたセットである。 一次セットが借用状態である場合、L2状態コントローラはただちに、実行ユ ニットからの要求がL2キャッシュをミスすることを知る。したがってステップ 520で、要求されたデータ行がシステム・メモリから検索される。次いでステ ップ525で、システム・メモリから検索されたデータ行が実行ユニットに返さ れ、L2キャッシュにも返される。次いでステップ530で、一次セットに対応 する、L2キャッシュ内のデータ・アレイ行にキャッシュ行が記憶され、一次セ ットの状態とパートナー・セットの状態が共に直接状態に更新される。本発明の 一実施態様では、キャッシュ行はL1キャッシュにも記憶される。 ステップ515に戻ると、一次セットが借用状態ではない場合、L2状態コン トローラはステップ535で、一次セット・アドレスと、一次セットが直接状態 であるか、それとも対状態であるかのL2キャッシュへの表示の両方を出力する 。次いでステップ540で、L2キャッシュ内のタグ比較論理機構が、一次セッ トのタグと要求されたアドレスのタグが合致するかどうかを判定する。タグが合 致 する場合、ステップ542で、要求がL2キャッシュをヒットし、一次セットに 対応するキャッシュ行がL2キャッシュ内のデータ・アレイから実行ユニットに 返される。 しかし、ステップ540でタグが合致しない場合、L2キャッシュ内の制御論 理機構は第5B図のステップ544で、L2状態コントローラから受け取った入 力に基づいて一次セットが直接状態であるかどうかを判定する。一次セットが直 接状態である場合、ステップ545で、要求されたデータ行がシステム・メモリ から検索される。ステップ550で、このデータ行が実行ユニットに返され、パ ートナー・セットにも記憶される。本発明の一実施態様では、データ行はL1キ ャッシュにも記憶される。次いでステップ555で、MRU論理機構が、パート ナー・セットが最後に使用されたセットであることを示すように更新される。次 いでステップ560で、一次セットの状態が対状態に更新され、パートナー・セ ットが借用状態に更新される。 本発明の一実施形態では、第3A図に示したように、MRU論理機構は、10 個の入力線を有するビット・マップを含む。この実施形態では、MRU論理機構 は、一次セットのセット・インデックスの10ビットによって決定されたビット ・マップ内の位置に「1」を記憶し、パートナー・セットのセット・インデック スの10ビットによって決定されたビット・マップ内の位置に「0」を記憶する ことによって、パートナー・セットがMRUセットであることを示すように更新 される(ステップ555)。本発明の代替実施形態では、MRU論理機構は、第 3B図に示したように、9つの入力線を有するビット・マップを含む。この実施 形態では、MRU論理機構は、一次セットのセット・インデックスの最下位9ビ ットによって決定されたビット・マップ内の位置にあるビットをフリップするこ とによって、パートナー・セットがMRUセットであることを示すように更新さ れる。 ステップ544に戻ると、一次セットの状態が直接でも借用でもない場合、一 次セットは対状態でなければならない。一次セットのタグはすでにステップ54 0で、要求のタグには一致しないことが分かっている。したがって、タグ比較論 理機構はステップ575で、パートナー・セットのタグが要求のタグに合致する かどうかを判定する。ステップ575で要求がパートナー・セットをヒットする (すなわち、タグが合致する)場合、ステップ580で、パートナー・セットに 関連付けられたキャッシュ行がL2キャッシュから実行ユニットに返される。次 いでステップ585で、MRU論理機構が、前のLRUセットが現在はMRUセ ットであることを示すように更新される。MRU論理機構は、上記でステップ5 55で論じたように更新される。 ステップ575に戻ると、要求がパートナー・セットをミスする(すなわち、 タグが合致しない)場合、ステップ590で、要求されたデータ行がシステム・ メモリから検索される。このデータ行は次いでステップ595で、実行ユニット とL2キャッシュの両方に返される。一実施態様では、データ行はL1キャッシ ュにも返され記憶される。L2キャッシュはこのデータ行をパートナー・セット に記憶する。次いでステップ585で、MRU論理機構が、前のLRUセットが 現在はMRUセットであることを示すように更新される。 第6図は、本発明の代替実施形態におけるキャッシュ・メモリ・サブシステム のブロック図である。第6図に示した実施形態は第4図に示した実施形態に類似 しているが、セット・アレイ内の各セットごとの状態情報は、CPU602と同 じICパッケージではなく、L2キャッシュ603と同じICパッケージに記憶 される。第6図は、境界線601で分離されたCPU602とL2キャッシュ6 03を示す。 CPU602は、内部バス604と、命令実行ユニット605と、L1キャッ シュおよびコントローラ606とを含む。これらの構成要素の動作については、 上記で第4図を参照しながら論じた。CPU602は、第4図のMRU論理機構 407と同様なMRU論理機構607も含む。しかし、MRU論理機構607は 、L1キャッシュ606から受け取ったセット・インデックスの最上位ビットを フリップするかどうかを判定し、必要に応じて、一次セットのインデックスを得 るために最上位ビットをフリップする。したがって、MRU論理機構607から L2キャッシュ603に入力されるアドレス620のセット・インデックス部分 は、一次セット(すなわち、最後に使用されたセット)のセット・インデックス を含む。上記で第4図のアドレス420に関連して論じたように、第6図のアド レス 620は32ビットを備える。ビット[31:15]はアドレスのタグ・フィー ルドであり、ビット[14:5]はセット・インデックスであり、ビット[4: 0]はキャッシュ行のオフセットである。 セット・アレイ622の各セットは、タグ・フィールドと状態フィールドとを 含む。セット・アレイ622はアドレス620のビット[14:5]によって示 され、インデックスで示されたセットのタグ情報および状態情報はそれぞれ、タ グ比較論理機構626および状態比較論理機構627に入力される。タグ比較論 理機構626は、インデックスで示されたセットのタグをアドレス620のタグ と比較し、結果を制御論理機構628に出力する。同様に、状態比較論理機構6 27は、インデックスで示されたセットの状態を判定し、この情報を制御論理機 構628に出力する。状態比較論理機構627は、このセットが直接状態である か、それとも対状態であるか、それとも借用状態であるかを示す。 制御論理機構628は、入力として、タグ比較論理機構626からタグ比較の 結果を受け取り、状態比較論理機構627からインデックスで示されたセットの 状態を受け取る。この情報に基づいて、制御論理機構628は、実行ユニット6 05からの要求がL2キャッシュ603をヒットするか、それともミスするかを 判定する。 制御論理機構628は、タグ比較論理機構626からの結果と、状態比較論理 機構627から受け取ったインデックスで示されたセットの状態に応じて、ヒッ ト表示とミス表示のどちらかを実行ユニット605に返す。インデックスで示さ れたセットの状態が対である場合、一次セットとパートナー・セットの両方に制 御論理機構628からアクセスする必要があることに留意されたい。両方のセッ トが制御論理機構628からアクセスされるかどうかと、実行ユニット605か らヒット表示が返されるか、それともミス表示が返されるかについて、下記で第 7A図および第7B図を参照しながら詳しく論じる。 本発明の一実施形態では、制御論理機構628が、必要なデータ行をシステム ・メモリから検索する。代替実施形態では、L1キャッシュおよびコントローラ 606が、必要なデータ行をシステム・メモリから検索する。他の代替実施形態 では、実行ユニット605が、必要なデータ行をシステム・メモリから検索する 。 第7A図および第7B図は、第6図のキャッシュ・メモリ・サブシステムを操 作する際に本発明の一実施形態が従うステップを示す。最初にステップ705で 、プロセッサ上の実行ユニットから要求が発行される。情報を求めるこの要求は 、データ行またはキャッシュ行を求める要求であり、プロセッサが使用する命令 情報またはデータ情報を含むことができる。本発明の一実施態様では、この要求 はアドレスである。 実行ユニットからの要求は、ステップ706でL1キャッシュに入力されると 共に、ステップ708でMRU論理機構に入力される。ステップ708でアクセ スされたMRU論理機構は、後述のように本発明によって必要に応じて使用され るL2キャッシュ内のインデックスで示されたセットに関する一次セット(すな わち、最後に使用されたセット)を示す。L1キャッシュは、実行ユニットから 要求を受け取ると、ステップ710で、要求がL1キャッシュでヒットするかど うかを判定する。要求がL1キャッシュでヒットする場合、ステップ712で、 要求されたキャッシュ行がL1キャッシュから実行ユニットに返される。 要求がL1キャッシュをミスする場合、ステップ715で、タグ比較論理機構 が、一次セットのタグと要求のタグが合致するかどうかを判定する。これは、前 述のように、実行ユニットからの要求のタグ・フィールドをL2キャッシュのセ ット・アレイ内の一次セットのタグ・フィールドと比較することによって行われ る。タグが合致する場合、ステップ720で、要求されたキャッシュ行がL2キ ャッシュから実行ユニットに返される。 しかし、タグが合致しない場合、ステップ725で、L2キャッシュ内の制御 論理機構が、一次セットが借用状態であるかどうかを判定する。一次セットが借 用状態である場合、要求はL2キャッシュをミスする。したがって、要求された データ行はステップ730で、コンピュータ・システムのシステム・メモリから 検索される。このデータ行はステップ735で、実行ユニットとL2キャッシュ の両方に返される。システム・メモリから検索されたデータ行は、実行ユニット からの最初の要求によって示されたセット(すなわち、一次セット)に対応する L2キャッシュのデータ・アレイに記憶される。次いでステップ740で、一次 セットの状態が直接状態に更新され、パートナー・セットの状態も直接状態に更 新される。本発明の一実施態様では、データ行はL1キャッシュおよびコントロ ーラにも記憶される。 ステップ725に戻ると、一次セットが借用状態ではない場合、第7B図のス テップ745で、一次セットが直接状態であるかどうかに関する判定が下される 。一次セットが直接状態である場合、ステップ750で、要求されたデータ行が システム・メモリから検索される。このデータ行はステップ755で、実行ユニ ットに返され、L2キャッシュ内のパートナー・セットに記憶される。一実施態 様では、データ行はL1キャッシュにも記憶される。次いでステップ760で、 一次セット用のMRU論理機構が、パートナー・セットが最後に使用されたセッ トであることを示すように更新される。MRU論理機構は、上記で第5A図およ び第5B図を参照しながら論じたように更新される。次いでステップ765で、 一次セットの状態が対状態に更新され、パートナー・セットの状態が借用状態に 更新される。 ステップ745に戻ると、パートナー・セットは、直接状態でも、あるいは借 用状態でもない場合、対状態でなければならない。すでにステップ715で、要 求が一次セットをヒットするかどうかに関する判定を下したので、ステップ77 0で、要求がパートナー・セットをヒットするかどうか(すなわち、パートナー ・セットのタグと要求のタグが合致するかどうか)に関する判断を下す。タグが 合致する場合、ステップ775で、要求されたキャッシュ行がL2キャッシュか ら実行ユニットに返される。次いでステップ780で、MRU論理機構が、パー トナー・セットが最後に使用されたセットであることを示すように更新される。 MRU論理機構は、上記で第5A図および第5B図を参照しながら論じたように 更新される。 しかし、タグが合致しない場合、ステップ785で、要求されたデータ行がシ ステム・メモリから検索される。このデータ行はステップ790で、実行ユニッ トに返されると共に、L2キャッシュ内のパートナー・セットに記憶される。一 実施態様では、データ行はL1キャッシュにも記憶される。次いでステップ78 0で、MRU論理機構が、前述のように、パートナー・セットが最後に使用され たセットであることを示すように更新される。 第8図は、本発明の他の実施形態におけるキャッシュ・メモリ・サブシステム のブロック図である。第8図のキャッシュ・メモリ・サブシステムは、第6図の システムに類似しており、境界線801で分離されたCPU802とL2キャッ シュ803とを含む。CPU802は、内部バス804と、命令実行ユニット8 05と、L1キャッシュおよびコントローラ806とを含む。これらの構成要素 の動作は、上記で第4図および第6図を参照しながら論じたとおりである。しか し、CPU802が、第6図のMRU論理機構607と同様なMRU論理機構を 含まないことに留意されたい。第8図の実施形態では、最後に使用されたセット は、下記で詳しく論じるように、必要に応じてキャッシュ行をスワップされた一 次セットである。 L2キャッシュ803は、第6図のL2キャッシュ603に類似している。L 2キャッシュ803は、第6図のL2キャッシュ603と同様に、セット・アレ イ822と、データ・アレイ824と、タグ比較論理機構826と、状態比較論 理機構827と、制御論理機構828とを含む。タグ比較論理機構826は、要 求820のタグ・フィールドとセット・アレイ822のインデックスで示された セットのタグ・フィールドを比較し、結果を制御論理機構828に出力する。同 様に、状態比較論理機構827は、セット・アレイ822内のインデックスで示 されたセットの状態を判定し、結果を制御論理機構828に出力する。第8図の 実施形態では、一次セットは、MRU論理機構に基づく修正なしの、実行ユニッ ト805からの要求によって示されたセットである。 L2キャッシュ803は、制御論理機構828、セット・アレイ822、デー タ・アレイ824に結合されたスワップ論理機構830も含む。第8図の実施形 態では、最後に使用されたセットは常に、対状態のセットに維持される。したが って、ビット・マップなどの追加MRUインディケータなしでも、どのセットが 最後に使用されたセットであるかを判定することができる。 スワップ論理機構830は、スワップ制御論理機構831と、セット・アレイ ・バッファ832と、データ・アレイ・バッファ833とを含む。セット・アレ イ・バッファ832は従来型のバッファであり、1組のセット・アレイ822に 記憶されるタグ・フィールドおよびその他のデータ用の一次記憶位置である。デ ータ・アレイ・バッファ833は従来型のバッファであり、データ・アレイ82 4の要素に記憶されるキャッシュ行用の一次記憶位置である。スワップ制御論理 機構831は、セット・アレイ822およびデータ・アレイ824から得た情報 の、1つのセットから他のセットへの転送を制御する。スワップ論理機構830 は、制御論理機構828からの指示に応じて2つのセットを切り替える。これは 、2つの状況で行われる。第1の状況は、インデックスで示されたセットが直接 状態であるが、要求がキャッシュをミスするときである。この状況では、要求さ れた線は、システム・メモリから検索されL2キャッシュ803のパートナー・ セットに記憶される。次いで、下記で第9A図および第9B図を参照しながら詳 しく論じるように、パートナー・セットとインデックスで示されたセットがスワ ップされる。同様に、インデックスで示されたセットが対状態であり、要求が一 次セットをミスする場合、キャッシュ行がシステム・メモリからパートナー・セ ットに検索され、スワップを行わなければならず、あるいは要求がパートナー・ セットをヒットし、その場合、パートナー・セットが最後に使用されたセットで あると、スワップが行われる。このことについては、下記で第9A図および第9 B図を参照しながら詳しく論じる。 第9A図および第9B図は、第8図のキャッシュ・メモリ・サブシステムを操 作する際に本発明の一実施形態が従うステップを示す。最初にステップ905で 、プロセッサ上の実行ユニットから要求が発行される。本発明の一実施態様では 、この要求はアドレスの形のものである。ステップ908で、この要求に基づい て、L1キャッシュがアクセスされる。ステップ910で、要求がL1キャッシ ュでヒットする場合、ステップ912で、要求されたキャッシュ行がL1キャッ シュから実行ユニットに返される。 しかし、要求がL1キャッシュをミスする場合、その要求はL2キャッシュへ 送られ、ステップ915で、タグ比較論理機構が、要求のタグと一次セットのタ グが合致するかどうかを判定する。タグが合致する場合、要求はL2キャッシュ をヒットし、ステップ917で、要求されたキャッシュ行がL2キャッシュから 実行ユニットに返される。しかし、タグが合致しない場合、L2キャッシュは、 一次セットの状態を調べる。 ステップ920で、状態比較論理機構が、一次セットが借用状態であるかどう かを判定する。一次セットが借用状態である場合、ステップ925で、システム ・メモリからデータ行が検索される。次いでステップ930で、データ行が実行 ユニットおよびL2キャッシュに返される。一実施態様では、データ行はL1キ ャッシュにも記憶される。L2キャッシュは、このデータ行を一次セットに記憶 し、ステップ935で、一次セットとパートナー・セットの両方の状態を直接に 更新する。 ステップ920に戻ると、一次セットが借用状態ではない場合、第9B図のス テップ940で、状態比較論理機構が、このセットが直接状態であるかどうかを 判定する。一次セットが直接状態である場合、ステップ945で、システム・メ モリからデータ行が検索される。データ行は次いでステップ950で、実行ユニ ットに返され、L2キャッシュ内のパートナー・セットにも記憶される。一実施 態様では、データ行はL1キャッシュにも記憶される。次いでステップ955で 、L2キャッシュ内のスワップ論理機構が、一次セットとパートナー・セットと の間で行をスワップする。次いでステップ960で、一次セットの状態が、対状 態に更新され、パートナー・セットの状態が借用状態に更新される。したがって 、データ行をシステム・メモリからパートナー・セットに検索し、次いでパート ナー・セットと一次セットをスワップすることによって、一次セットは最後に使 用されたキャッシュ行を含むことがわかる。 スワップ制御論理機構は、データ・アレイ内の2つのデータ行ならびにセット ・アレイの関連するタグ(およびその他のパリティ・ビット)を切り替えること によって、一次セットの行とパートナー・セットの行をスワップする。セット・ アレイに記憶されている状態情報が切り替えられないことに留意されたい。この スワッピングは、様々な従来型の方法のうちの任意の方法で行うことができる。 たとえば、本発明の一実施態様では、スワップすべき一次セットのデータ・アレ イおよびセット・アレイ内の情報が、2つのアレイからスワップ制御論理機構内 のバッファへ転送される。次いで、スワップすべきパートナー・セットのデータ ・アレイおよびセット・アレイ内の情報が一次セットのアレイへ転送される。次 いで、スワップ・バッファに記憶されている情報がパートナー・セットのアレイ へ転送され、それによって一次セットとパートナー・セットに含まれるデータお よび情報が切り替えられる。 ステップ940に戻ると、一次セットが直接状態ではない場合、ステップ96 5で、タグ比較論理機構が、要求のタグとパートナー・セットのタグが合致する かどうかを判定する。タグが合致する場合、ステップ970で、要求されたキャ ッシュ行がパートナー・セットから実行ユニットに返される。次いでステップ9 75で、L2キャッシュ内のスワップ制御論理機構が、一次セット内の行とパー トナー・セット内の行をスワップする。したがって、一次セットは対状態のまま で、パートナー・セットは借用状態のままであり、一次セットは、最後に使用さ れたキャッシュ行を含む。 ステップ965に戻ると、タグが合致しない場合、ステップ980で、要求さ れたデータ行がシステム・メモリから検索される。ステップ985で、要求され たデータ行が、システム・メモリから検索され、実行ユニットに返され、L2キ ャッシュ内のパートナー・セットに記憶される。一実施態様では、データ行はL 1キャッシュにも記憶される。ステップ975で、L2キャッシュ内のスワップ 制御論理機構が一次セットの行とパートナー・セットの行をスワップする。 したがって、第9A図および第9B図に示した実施形態では、要求が一次セッ トとパートナー・セットの両方をミスすると、要求されたデータ行が、システム ・メモリから検索され、インデックスで示されたセットのパートナー・セットに 記憶され、次いで一次セットのキャッシュ行とパートナー・セットのキャッシュ 行がスワップされることがわかる。したがって、一次セットは対状態のままで、 パートナー・セットは借用状態のままであり、一次セットは最後に使用されたキ ャッシュ行を含む。 本発明の代替実施形態では、L2キャッシュは、システム・メモリから得たデ ータ行を、前述とは異なりパートナー・セットではなく、直接、一次セットに記 憶する。データ行を直接、一次セットに記憶することによって、L2キャッシュ は、一次セットとパートナー・セットをスワップする必要がなくなる。 上記の説明は、要求がL1キャッシュをミスするがL2キャッシュでヒットす るときのL1キャッシュの更新については論じていないが、L2キャッシュでの キャッシュ行ヒットを、CPUの命令実行ユニットに返すだけでなくL1キャッ シュに記憶することもできることに留意されたい。当業者には理解されるように 、この状況でL1キャッシュが更新されるかどうかは、使用されるキャッシュ方 式に依存する。 上記の説明が、L1キャッシュとL2キャッシュの両方を有するコンピュータ ・システムについて論じたものであることに留意されたい。しかし、単一のキャ ッシュしか有さないシステムが本発明のキャッシュ・メモリを使用できることを 理解されたい。 同様に、上記の説明は、L2キャッシュで実施される本発明のキャッシュ・メ モリについて説明したものである。しかし、本発明の教示が任意のレベルのキャ ッシュに適用でき、特にL2キャッシュに限らないことが理解されよう。たとえ ば、L1キャッシュしか有さないシステムが前述のように実施される。ただし、 2つのキャッシュではなく1つのキャッシュのみをヒットするように、からの要 求が検査される。当業者には、本発明をL1キャッシュで使用する際、アドレス をキャッシュに入力するのと同時に、MRUインディケータからMRU情報を得 ることはできないことが理解されよう。 さらに、上記の説明は、システム・メモリからデータ行を検索する必要がある ときにシステム・メモリへキャッシュ行を転送するキャッシュ・メモリについて 説明している。しかし、他のキャッシュ方式を本発明の趣旨および範囲内で使用 することができる。たとえば、本発明の一実施形態では、キャッシュ・メモリ内 でキャッシュ行を更新するときには常に、システム・メモリ内でもキャッシュ行 を更新することができる。したがって、あるキャッシュ位置へデータ行が転送さ れるとき、システム・メモリがすでにキャッシュ行のコピーを含んでいるので、 システム・メモリへのキャッシュ行の転送は行われない。 したがって、本発明のキャッシュ・メモリ・サブシステムは、直接マップ・キ ャッシュと2方向セットアソシアティブ・キャッシュの両方の利点を与える。直 接マップ・キャッシュのより低い電力消費量および論理複雑度が、2方向セット アソシアティブ・キャッシュのより高いヒット率と組み合わされる。また、本発 明の一実施形態では、キャッシュを含むICパッケージにアクセスせずに、ある 種の要求がキャッシュをミスすることを判定することができ、そのためミス表示 応答速度が向上する。 また、当業者には、上記の説明が2方向キャッシュとして動作できるキャッシ ュについて論じたものであるが、他の多方向キャッシュも本発明の趣旨および範 囲内であることが理解されよう。たとえば、本発明の教示を従来型の2方向キャ ッシュに適用し、それによって、2方向キャッシュの利点と4方向キャッシュの 利点を組み合わせた4方向キャッシュを作成することができる。 当業者には、上記の説明を読んだ後に本発明の多数の変更および修正が理解さ れようが、一例として図示し説明した特定の実施形態が本発明を制限するものと みなすべきものではないことを理解されたい。したがって、特定の実施形態の詳 細の参照は、請求の範囲を制限するものではなく、請求項は基本的に、本発明に 必須とみなされる特徴のみを記載したものである。 したがって、2方向セットアソシアティブ・キャッシュ・メモリについて説明 した。
───────────────────────────────────────────────────── フロントページの続き (81)指定国 EP(AT,BE,CH,DE, DK,ES,FR,GB,GR,IE,IT,LU,M C,NL,PT,SE),OA(BF,BJ,CF,CG ,CI,CM,GA,GN,ML,MR,NE,SN, TD,TG),AP(KE,MW,SD,SZ,UG), AM,AT,AT,AU,BB,BG,BR,BY,C A,CH,CN,CZ,CZ,DE,DE,DK,DK ,EE,EE,ES,FI,FI,GB,GE,HU, IS,JP,KE,KG,KP,KR,KZ,LK,L R,LT,LU,LV,MD,MG,MN,MW,MX ,NO,NZ,PL,PT,RO,RU,SD,SE, SG,SI,SK,SK,TJ,TM,TT,UA,U G,UZ,VN

Claims (1)

  1. 【特許請求の範囲】 1.データ・アレイが複数の要素を備えているとき、入力アドレスがキャッシ ュ・メモリ・システムのデータ・アレイに含まれるかどうかを示すキャッシュ・ インデックスにおいて、 それぞれが前記データ・アレイの要素の一つに対応する、複数のデータセット を備え、 前記複数のデータセットの第1のセットが、第1のタグと第1の状態とを有し 、 前記第1のタグが、前記データ・アレイの前記複数の要素の第1の要素に記憶 されている第1のキャッシュ行のIDを示す第1の複数のビットを備え、 前記第1の状態が、前記第1のセットにマップされているいくつかのキャッシ ュ行を示す第1の状態インデックスを備え、前記各キャッシュ行が、前記データ ・アレイの要素に対応することを特徴とするキャッシュ・インデックス。 2.直接状態である前記第1の状態が、単一の行が前記第1のセットにマップ されていることを示す請求項1に記載のキャッシュ・インデックス。 3.対状態である前記第1の状態が、第1の行と第2の行が共に前記第1のセ ットにマップされていることを示す請求項1に記載のキャッシュ・インデックス 。 4.借用状態である前記第1の状態が、前記第1のセットにマップされている 行がないことを示す請求項1に記載のキャッシュ・インデックス。 5.さらに、第2のセットを備え、その第2のセットは前記複数のセットのう ちの1つであり、その第2のセットが、第2の複数のビットを備える第2のタグ と第2の状態とを含むことを特徴とする請求項1に記載のキャッシュ・インデッ クス。 6.前記第1のセットに第1の行と第2の行が共にマップされている場合、前 記第1の複数のビットが前記第1の行を参照し、前記第2の複数のビットが前記 第2の行を参照することを特徴とする請求項5に記載のキャッシュ・インデック ス。 7.前記キャッシュ・インデックスが、タグ・アレイと状態アレイとを備える ことを特徴とする請求項1に記載のキャッシュ・インデックス。 8.中央演算処理装置(CPU)を有するコンピュータ・システムで使用され るキャッシュ・メモリ・サブシステムにおいて、 複数の要素を有するデータ・アレイと、 セット・アレイとを備え、前記セット・アレイが、 それぞれ、前記データ・アレイの単一の要素に対応し、第1のセットが、第 1のタグ・フィールドと第1の状態フィールドとを含み、第2のセットが、第2 のタグ・フィールドと第2の状態フィールドとを含む、複数のセットと、 前記第1のセットが、前記第2のセットよりも後に前記CPUからアクセス されたかどうかを示す、前記第1のセットに対応する最後に使用されたセット( MRU)インディケータとを含むことを特徴とするキャッシュ・メモリ・サブシ ステム。 9.前記MRUインディケータが、ビット・マップであることを特徴とする請 求項8に記載のサブシステム。 10.前記ビット・マップが、入力として、前記セット・アレイの第3のセッ トを固有に識別する第2の複数のビットを前記CPUから受け取り、前記第1の セットが最後に使用されたセットであるか、それとも前記第2のセットが最後に 使用されたセットであるかを示すMRUビットを出力することを特徴とする請求 項9に記載のサブシステム。 11.さらに、排他的論理和ゲートを備え、前記ビット・マップが、入力とし て、第2の複数のビットを前記CPUから受け取り、前記第2の複数のビットが 、第3の複数のビットの最上位ビットを除く前記第3の複数のビットのすべての ビットであり、前記第3の複数のビットが、前記セット・アレイの第3のセット を固有に識別し、前記単一のビットおよび前記最上位ビットが、前記排他的論理 和ゲートに入力され、前記排他的論理和ゲートが、前記第1のセットが最後に使 用されたセットであるか、それとも前記第2のセットが最後に使用されたセット であるかを示すMRUビットを出力する請求項9に記載のサブシステム。 12.前記第1の状態フィールドおよび前記第2の状態フィールドがそれぞれ 、3つの可能な状態のうちの1つの状態であり、前記3つの可能な状態が、直接 状態、借用状態、対状態である請求項8に記載のサブシステム。 13.前記MRUインディケータが最初、前記第1のセットが最後に使用され たセットであることを示し、かつ前記MRUインディケータが、前記第1の状態 フィールドが前記対状態のとき、前記CPUから前記キャッシュ・サブシステム への要求に応答して、前記第2のセットが最後に使用されたセットであることを 示すように修正される請求項12に記載のサブシステム。 14.前記MRUインディケータが最初、前記第1のセットが最後に使用され たセットであることを示し、かつ前記MRUインディケータが、前記第1の状態 フィールドが前記直接状態であり前記キャッシュ・サブシステムへの要求が前記 第1のセットに配置されていないとき、前記要求に応答して、前記第2のセット が最後に使用されたセットであることを示すように修正される請求項12に記載 のサブシステム。 15.前記MRUインディケータおよび前記CPUが、同じ集積回路パッケー ジに含まれる請求項8に記載のサブシステム。 16.前記第1の状態フィールドおよび前記第2の状態フィールドが、前記集 積回路パッケージに含まれる請求項15に記載のサブシステム。 17.中央演算処理装置(CPU)を有するコンピュータ・システムで使用さ れるキャッシュ・メモリ・サブシステムにおいて、 複数の要素を有するデータ・アレイと、 セット・アレイとを備え、前記セット・アレイは、 前記データ・アレイの単一の要素にそれぞれが対応し、第1のセットが第1 のタグ・フィールドと第1の状態フィールドとを含み、第2のセットが第2のタ グ・フィールドと第2の状態フィールドとを含む、複数のセットと、 第1のキャッシュ行と第2のキャッシュ行をスワップし、そのスワップが、 最初に前記データ・アレイの第1の要素に配置されていた第1のキャッシュ行を 前記データ・アレイの第2の要素に入れ、最初に前記第2の要素に配置されてい た第2のキャッシュ行を前記第1の要素に入れるスワップ制御装置とを備えるこ とを特徴とするキャッシュ・メモリ・サブシステム。 18.前記第1の状態フィールドおよび前記第2の状態フィールドがそれぞれ 、3つの可能な状態のうちの1つであり、その3つの可能な状態は、直接状態、 借 用状態、対状態である請求項17に記載のサブシステム。 19.前記スワップ制御装置が、前記第1の状態フィールドが前記対状態であ るとき、前記CPUから前記キャッシュ・サブシステムへの要求に応答して前記 スワッピングを実行する請求項18に記載のサブシステム。 20.前記スワップ制御装置が、前記第1の状態フィールドが前記直接状態で あり前記CPUから前記キャッシュ・サブシステムへの要求が前記第1のセット に配置されていないとき、前記要求に応答して前記スワッピングを実行する請求 項18に記載のサブシステム。 21.システム・メモリとキャッシュ・メモリ・サブシステムとを含むコンピ ュータ・システムの中央演算処理装置(CPU)から要求されたデータ行を前記 CPUに返す方法であって、前記キャッシュ・メモリ・サブシステムはレベル1 (L1)キャッシュとレベル2(L2)キャッシュと有し、前記L2キャッシュ は複数のキャッシュ行を有し、その複数のキャッシュ行の各キャッシュ行は、前 記複数のキャッシュ行のうちの他のキャッシュ行のパートナー・キャッシュ行で ある前記方法が、 (a)前記データ行が、前記L1キャッシュに記憶されているかどうかを判定 するステップと、 (b)前記キャッシュ行が前記L1キャッシュに記憶されている場合、前記デ ータ行を前記CPUに返すステップと、 (c)前記データ行に対応する前記L2キャッシュ内のキャッシュ行が借用状 態であるかどうかを判定するステップと、 (d)前記システム・メモリから前記データ行を検索し、前記データ行に対応 する前記L2キャッシュ内の前記キャッシュ行に前記データを記憶するステップ と、 (e)前記キャッシュ行の状態を直接状態に更新するステップと を含むことを特徴とする方法。 22.さらに、 前記L2キャッシュ内の前記キャッシュ行が、前記CPUから要求されたデー タ行であるかどうかを判定するステップと、 前記データ行に対応する前記L2キャッシュ内の前記キャッシュ行が直接状態 であるかどうかを判定するステップとを含むことを特徴とする請求項21に記載 の方法。 23.さらに、前記キャッシュ行を前記L2キャッシュから前記CPUに返す ステップを含むことを特徴とする請求項22に記載の方法。 24.さらに、 前記システム・メモリから前記データ行を検索し、前記データ行に対応する前 記L2キャッシュ内の前記キャッシュ行に前記データを記憶するステップと、 前記データ行を前記CPUに返すステップと、 前記キャッシュ行の状態を対状態に更新するステップと、 前記パートナーセットキャッシュ行の状態を借用状態に更新するステップとを 含むことを特徴とする請求項22に記載の方法。 25.さらに、 一次セットおよびパートナー・セットのうちの最初に使用されたセット内のキ ャッシュ行が、要求されたデータ行であるかどうかを判定するステップと、 前記最初に使用されたセットを最後に使用されたセットになるように更新する ステップとを含むことを特徴とする請求項22に記載の方法。 26.さらに、前記キャッシュ行を前記L2キャッシュの前記最初に使用され たセットから前記CPUに返すステップを含むことを特徴とする請求項25に記 載の方法。 27.さらに、前記システム・メモリから前記データ行を検索し、前記データ 行に対応する前記L2キャッシュ内の前記キャッシュ行に前記データ行を記憶す るステップを含むことを特徴とする請求項25に記載の方法。 28.前記最初に使用されたセットを更新するステップが、前記最初に使用さ れたセットと前記最後に使用されたセットをスワップすることを含むことを特徴 とする請求項25に記載の方法。 29.コンピュータ・システムであって、 バスと、 前記バスに結合された中央演算処理装置(CPU)と、 キャッシュ・メモリ・サブシステムとを備え、前記キャッシュ・メモリ・サブ システムが、 複数の要素を有するデータ・アレイと、 前記データ・アレイの単一の要素にそれぞれが対応し、第1のセットが第1 のタグ・フィールドと第1の状態フィールドとを含み、第2のセットが第2のタ グ・フィールドと第2の状態フィールドとを含む複数のセットを含むセット・ア レイとを含み、 前記コンピュータ・システムはさらに、 最後に使用された(MRU)セット、すなわち前記第1のセットと前記第2の セットのどちらかを維持する手段を備えるコンピュータ・システム。 30.前記第1のセットに対応し、前記第1のセットが前記第2のセットより も後に前記CPUからアクセスされたかどうかを示すMRUインディケータを、 前記維持手段が備えることを特徴とする請求項29に記載のシステム。 31.第1のキャッシュ行と第2のキャッシュ行をスワップし、前記スワッピ ングが、最初に前記データ・アレイの第1の要素に配置されていた第1のキャッ シュ行を前記データ・アレイの第2の要素に入れ、最初に前記第2の要素に配置 されていた第2のキャッシュ行を前記第1の要素に入れるスワップ制御装置を、 前記維持装置が備えることを特徴とする請求項29に記載のシステム。 32.前記第1の状態フィールドおよび前記第2の状態フィールドがそれぞれ 、3つの可能な状態のうちの1つであり、前記3つの可能な状態が、直接状態、 借用状態、対状態であることを特徴とする請求項29に記載のシステム。
JP8508099A 1994-08-11 1995-08-04 2方向セットアソシエーテイブ・キャッシュ・メモリ Pending JPH10504124A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08/288,923 1994-08-11
US08/288,923 US5548742A (en) 1994-08-11 1994-08-11 Method and apparatus for combining a direct-mapped cache and a multiple-way cache in a cache memory
PCT/US1995/009896 WO1996006390A2 (en) 1994-08-11 1995-08-04 A two-way set-associative cache memory

Publications (1)

Publication Number Publication Date
JPH10504124A true JPH10504124A (ja) 1998-04-14

Family

ID=23109244

Family Applications (1)

Application Number Title Priority Date Filing Date
JP8508099A Pending JPH10504124A (ja) 1994-08-11 1995-08-04 2方向セットアソシエーテイブ・キャッシュ・メモリ

Country Status (10)

Country Link
US (1) US5548742A (ja)
EP (1) EP0775345B1 (ja)
JP (1) JPH10504124A (ja)
KR (1) KR100382821B1 (ja)
AU (2) AU701467B2 (ja)
DE (1) DE69530776T2 (ja)
ES (1) ES2201114T3 (ja)
GB (1) GB2292237A (ja)
TW (1) TW275689B (ja)
WO (1) WO1996006390A2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018512650A (ja) * 2015-03-27 2018-05-17 インテル・コーポレーション 非対称セットの結合キャッシュ

Families Citing this family (68)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07271672A (ja) * 1994-03-30 1995-10-20 Toshiba Corp マルチウェイセットアソシアティブキャッシュシステム
US6170047B1 (en) 1994-11-16 2001-01-02 Interactive Silicon, Inc. System and method for managing system memory and/or non-volatile memory using a memory controller with integrated compression and decompression capabilities
US6002411A (en) 1994-11-16 1999-12-14 Interactive Silicon, Inc. Integrated video and memory controller with data processing and graphical processing capabilities
US7190284B1 (en) 1994-11-16 2007-03-13 Dye Thomas A Selective lossless, lossy, or no compression of data based on address range, data type, and/or requesting agent
US5893146A (en) * 1995-08-31 1999-04-06 Advanced Micro Design, Inc. Cache structure having a reduced tag comparison to enable data transfer from said cache
US5794243A (en) * 1995-12-11 1998-08-11 International Business Machines Corporation Method and apparatus for executing a binary search in a data cache
US5710905A (en) * 1995-12-21 1998-01-20 Cypress Semiconductor Corp. Cache controller for a non-symetric cache system
US5943691A (en) * 1995-12-27 1999-08-24 Sun Microsystems, Inc. Determination of array padding using collision vectors
US5845308A (en) * 1995-12-27 1998-12-01 Vlsi Technology, Inc. Wrapped-line cache for microprocessor system
US5918245A (en) * 1996-03-13 1999-06-29 Sun Microsystems, Inc. Microprocessor having a cache memory system using multi-level cache set prediction
ES2128938B1 (es) * 1996-07-01 2000-02-01 Univ Catalunya Politecnica Procedimiento para determinar en que via de una memoria rapida intermedia en la jerarquia de memoria de un computador (cache) asociativa por conjuntos de dos vias se encuentra un dato concreto.
US5974471A (en) * 1996-07-19 1999-10-26 Advanced Micro Devices, Inc. Computer system having distributed compression and decompression logic for compressed data movement
US5916314A (en) * 1996-09-11 1999-06-29 Sequent Computer Systems, Inc. Method and apparatus for cache tag mirroring
US6078995A (en) * 1996-12-26 2000-06-20 Micro Magic, Inc. Methods and apparatus for true least recently used (LRU) bit encoding for multi-way associative caches
US6879266B1 (en) 1997-08-08 2005-04-12 Quickshift, Inc. Memory module including scalable embedded parallel data compression and decompression engines
US5956746A (en) * 1997-08-13 1999-09-21 Intel Corporation Computer system having tag information in a processor and cache memory
US6247094B1 (en) 1997-12-22 2001-06-12 Intel Corporation Cache memory architecture with on-chip tag array and off-chip data array
JP3732637B2 (ja) 1997-12-26 2006-01-05 株式会社ルネサステクノロジ 記憶装置、記憶装置のアクセス方法及び半導体装置
US6321375B1 (en) * 1998-05-14 2001-11-20 International Business Machines Corporation Method and apparatus for determining most recently used method
US7219217B1 (en) 1998-10-16 2007-05-15 Intel Corporation Apparatus and method for branch prediction utilizing a predictor combination in parallel with a global predictor
US6425056B2 (en) * 1998-10-26 2002-07-23 Micron Technology, Inc. Method for controlling a direct mapped or two way set associative cache memory in a computer system
US7538694B2 (en) * 1999-01-29 2009-05-26 Mossman Holdings Llc Network device with improved storage density and access speed using compression techniques
US6819271B2 (en) 1999-01-29 2004-11-16 Quickshift, Inc. Parallel compression and decompression system and method having multiple parallel compression and decompression engines
US6885319B2 (en) * 1999-01-29 2005-04-26 Quickshift, Inc. System and method for generating optimally compressed data from a plurality of data compression/decompression engines implementing different data compression algorithms
US7129860B2 (en) * 1999-01-29 2006-10-31 Quickshift, Inc. System and method for performing scalable embedded parallel data decompression
US6822589B1 (en) 1999-01-29 2004-11-23 Quickshift, Inc. System and method for performing scalable embedded parallel data decompression
US6208273B1 (en) 1999-01-29 2001-03-27 Interactive Silicon, Inc. System and method for performing scalable embedded parallel data compression
US6145069A (en) * 1999-01-29 2000-11-07 Interactive Silicon, Inc. Parallel decompression and compression system and method for improving storage density and access speed for non-volatile memory and embedded memory devices
US6581139B1 (en) * 1999-06-24 2003-06-17 International Business Machines Corporation Set-associative cache memory having asymmetric latency among sets
KR100373849B1 (ko) * 2000-03-13 2003-02-26 삼성전자주식회사 어소시어티브 캐시 메모리
US6523102B1 (en) 2000-04-14 2003-02-18 Interactive Silicon, Inc. Parallel compression/decompression system and method for implementation of in-memory compressed cache improving storage density and access speed for industry standard memory subsystems and in-line memory modules
US6857049B1 (en) * 2000-08-30 2005-02-15 Unisys Corporation Method for managing flushes with the cache
US7685372B1 (en) 2005-01-13 2010-03-23 Marvell International Ltd. Transparent level 2 cache controller
US8347034B1 (en) 2005-01-13 2013-01-01 Marvell International Ltd. Transparent level 2 cache that uses independent tag and valid random access memory arrays for cache access
US7475192B2 (en) * 2005-07-12 2009-01-06 International Business Machines Corporation Cache organization for power optimized memory access
EP2011018B1 (en) 2006-04-12 2016-07-13 Soft Machines, Inc. Apparatus and method for processing an instruction matrix specifying parallel and dependent operations
CN107368285B (zh) 2006-11-14 2020-10-09 英特尔公司 多线程架构
US20090157968A1 (en) * 2007-12-12 2009-06-18 International Business Machines Corporation Cache Memory with Extended Set-associativity of Partner Sets
US8327040B2 (en) * 2009-01-26 2012-12-04 Micron Technology, Inc. Host controller
EP3156896B1 (en) 2010-09-17 2020-04-08 Soft Machines, Inc. Single cycle multi-branch prediction including shadow cache for early far branch prediction
CN103547993B (zh) 2011-03-25 2018-06-26 英特尔公司 通过使用由可分割引擎实例化的虚拟核来执行指令序列代码块
KR101620676B1 (ko) 2011-03-25 2016-05-23 소프트 머신즈, 인크. 분할가능한 엔진에 의해 인스턴스화된 가상 코어를 이용한 코드 블록의 실행을 지원하는 레지스터 파일 세그먼트
CN108108188B (zh) 2011-03-25 2022-06-28 英特尔公司 用于通过使用由可分区引擎实例化的虚拟核来支持代码块执行的存储器片段
US9442772B2 (en) 2011-05-20 2016-09-13 Soft Machines Inc. Global and local interconnect structure comprising routing matrix to support the execution of instruction sequences by a plurality of engines
CN107729267B (zh) 2011-05-20 2022-01-25 英特尔公司 资源的分散分配以及用于支持由多个引擎执行指令序列的互连结构
KR101703401B1 (ko) 2011-11-22 2017-02-06 소프트 머신즈, 인크. 다중 엔진 마이크로프로세서용 가속 코드 최적화기
WO2013077876A1 (en) 2011-11-22 2013-05-30 Soft Machines, Inc. A microprocessor accelerated code optimizer
US8930674B2 (en) 2012-03-07 2015-01-06 Soft Machines, Inc. Systems and methods for accessing a unified translation lookaside buffer
US8966327B1 (en) * 2012-06-21 2015-02-24 Inphi Corporation Protocol checking logic circuit for memory system reliability
US9229873B2 (en) 2012-07-30 2016-01-05 Soft Machines, Inc. Systems and methods for supporting a plurality of load and store accesses of a cache
US9430410B2 (en) 2012-07-30 2016-08-30 Soft Machines, Inc. Systems and methods for supporting a plurality of load accesses of a cache in a single cycle
US9916253B2 (en) 2012-07-30 2018-03-13 Intel Corporation Method and apparatus for supporting a plurality of load accesses of a cache in a single cycle to maintain throughput
US9710399B2 (en) 2012-07-30 2017-07-18 Intel Corporation Systems and methods for flushing a cache with modified data
US9740612B2 (en) 2012-07-30 2017-08-22 Intel Corporation Systems and methods for maintaining the coherency of a store coalescing cache and a load cache
US9678882B2 (en) 2012-10-11 2017-06-13 Intel Corporation Systems and methods for non-blocking implementation of cache flush instructions
WO2014150971A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for dependency broadcasting through a block organized source view data structure
WO2014151043A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for emulating a guest centralized flag architecture by using a native distributed flag architecture
WO2014150991A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for implementing a reduced size register view data structure in a microprocessor
US10275255B2 (en) 2013-03-15 2019-04-30 Intel Corporation Method for dependency broadcasting through a source organized source view data structure
US9569216B2 (en) 2013-03-15 2017-02-14 Soft Machines, Inc. Method for populating a source view data structure by using register template snapshots
US9811342B2 (en) 2013-03-15 2017-11-07 Intel Corporation Method for performing dual dispatch of blocks and half blocks
US9886279B2 (en) 2013-03-15 2018-02-06 Intel Corporation Method for populating and instruction view data structure by using register template snapshots
EP2972845B1 (en) 2013-03-15 2021-07-07 Intel Corporation A method for executing multithreaded instructions grouped onto blocks
WO2014150806A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for populating register view data structure by using register template snapshots
US9891924B2 (en) 2013-03-15 2018-02-13 Intel Corporation Method for implementing a reduced size register view data structure in a microprocessor
US10140138B2 (en) 2013-03-15 2018-11-27 Intel Corporation Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation
US9904625B2 (en) 2013-03-15 2018-02-27 Intel Corporation Methods, systems and apparatus for predicting the way of a set associative cache
KR102017135B1 (ko) * 2017-11-21 2019-09-02 주식회사 한화 멀티코어 캐시를 이용한 해싱 처리 장치 및 그 방법

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4631660A (en) * 1983-08-30 1986-12-23 Amdahl Corporation Addressing system for an associative cache memory
EP0271187B1 (en) * 1986-10-17 1995-12-20 Amdahl Corporation Split instruction and operand cache management
US5257360A (en) * 1990-03-23 1993-10-26 Advanced Micro Devices,Inc. Re-configurable block length cache
EP0461923B1 (en) * 1990-06-15 1997-10-01 Compaq Computer Corporation True least recently used replacement apparatus
CA2044689A1 (en) * 1990-06-15 1991-12-16 Roger E. Tipley Multilevel inclusion in multilevel cache hierarchies
US5228134A (en) * 1991-06-04 1993-07-13 Intel Corporation Cache memory integrated circuit for use with a synchronous central processor bus and an asynchronous memory bus
GB2256512B (en) * 1991-06-04 1995-03-15 Intel Corp Second level cache controller unit and system
US5367659A (en) * 1991-09-30 1994-11-22 Intel Corporation Tag initialization in a controller for two-way set associative cache
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
US5392414A (en) * 1992-06-30 1995-02-21 Sun Microsystems, Inc. Rapid data retrieval from data storage structures using prior access predictive annotations
WO1994003856A1 (en) * 1992-08-07 1994-02-17 Massachusetts Institute Of Technology Column-associative cache

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018512650A (ja) * 2015-03-27 2018-05-17 インテル・コーポレーション 非対称セットの結合キャッシュ

Also Published As

Publication number Publication date
KR100382821B1 (ko) 2003-07-18
AU3212795A (en) 1996-03-14
EP0775345B1 (en) 2003-05-14
DE69530776D1 (de) 2003-06-18
ES2201114T3 (es) 2004-03-16
AU701467B2 (en) 1999-01-28
EP0775345A4 (en) 1997-07-16
AU1799195A (en) 1996-02-22
US5548742A (en) 1996-08-20
GB9510677D0 (en) 1995-07-19
TW275689B (ja) 1996-05-11
DE69530776T2 (de) 2004-03-25
EP0775345A2 (en) 1997-05-28
KR960008546A (ko) 1996-03-22
WO1996006390A3 (en) 1996-05-09
GB2292237A (en) 1996-02-14
WO1996006390A2 (en) 1996-02-29

Similar Documents

Publication Publication Date Title
JPH10504124A (ja) 2方向セットアソシエーテイブ・キャッシュ・メモリ
KR100252570B1 (ko) 축소된요구블로킹을갖는캐시메모리
US6725337B1 (en) Method and system for speculatively invalidating lines in a cache
US7032074B2 (en) Method and mechanism to use a cache to translate from a virtual bus to a physical bus
JP3846638B2 (ja) 画素エンジン・データ・キャッシング機構
US7415575B1 (en) Shared cache with client-specific replacement policy
CN112540939A (zh) 存储管理装置、存储管理方法、处理器和计算机系统
JPH11506852A (ja) 多数のバスマスタと共用レベル2キャッシュとを備える多レベルキャッシュシステムでのキャッシュスヌーピングオーバーヘッドの低減
JP3065518B2 (ja) 複数のハッシュ関数を用いるキャッシュ・メモリ管理方法及びシステム
US6124865A (en) Duplicate cache tag store for computer graphics system
US6311253B1 (en) Methods for caching cache tags
JP2571670B2 (ja) メモリ・コヒーレンシィ保持システム及びその方法
US6976130B2 (en) Cache controller unit architecture and applied method
US4648033A (en) Look-aside buffer LRU marker controller
US7356650B1 (en) Cache apparatus and method for accesses lacking locality
JP3732397B2 (ja) キャッシュシステム
US7797492B2 (en) Method and apparatus for dedicating cache entries to certain streams for performance optimization
CN101789118B (zh) 绘图数据存取系统及方法
JP3262182B2 (ja) キャッシュメモリ方式及びマイクロプロセッサ装置
JPH05158793A (ja) 並列キャッシュメモリ
US7840757B2 (en) Method and apparatus for providing high speed memory for a processing unit
CA2502390C (en) Pixel engine data caching mechanism
JPH04102146A (ja) 高性能キャッシュ
JPH10207773A (ja) バス接続装置
JPH04213133A (ja) 記憶キー制御方式

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050104

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20050404

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20050523

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050701

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060613

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20060913

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20061030

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20061213

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20070703