JP2005149497A - 動的頻発命令ライン・キャッシュ - Google Patents

動的頻発命令ライン・キャッシュ Download PDF

Info

Publication number
JP2005149497A
JP2005149497A JP2004323732A JP2004323732A JP2005149497A JP 2005149497 A JP2005149497 A JP 2005149497A JP 2004323732 A JP2004323732 A JP 2004323732A JP 2004323732 A JP2004323732 A JP 2004323732A JP 2005149497 A JP2005149497 A JP 2005149497A
Authority
JP
Japan
Prior art keywords
cache
instruction
counter
stack
line
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
JP2004323732A
Other languages
English (en)
Inventor
Lane T Holloway
レーン・トーマス・ホロウエイ
Nadeem Malik
ナディーム・マリク
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2005149497A publication Critical patent/JP2005149497A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/122Replacement control using replacement algorithms of the least frequently used [LFU] type, e.g. with individual count value
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0846Cache with multiple tag or data arrays being simultaneously accessible
    • G06F12/0848Partitioned cache, e.g. separate instruction and operand caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing 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

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

【課題】 使用頻度に基づいてラインをキャッシュし続けることができ、キャッシュ・メモリの全ヒット率を潜在的に上げることができるキャッシュ・システムを提供する。
【解決手段】 好適な実施形態では、DFIキャッシュ(Dynamic Frequent Instruction cache)に、主キャッシュと同時にクエリを行い、要求されたアドレスがいずれかのキャッシュにある場合、ヒットが生じる。DFIキャッシュは、主キャッシュよりも長く高頻度に用いられる命令を保持するので、主キャッシュは、ラインに次にアクセスする場合に、キャッシュ・ヒットの恩恵を受けながら、ラインを無効にすることができる。
【選択図】 図1

Description

本発明は、一般に、コンピュータ・メモリに関し、更に具体的には、頻繁にアクセスされるラインをストアするためのコンピュータ・キャッシュに関する。
キャッシュとは、コンピュータにおいて用いられる上位レベルのメモリのことを指す。メモリ・システムを選択する場合、設計者は、通常、性能および速度と、コストおよびその他の制約とのバランスを取らなければならない。最も有効な機械を生成可能とするために、通常、多数の種類のメモリが実装される。
ほとんどのコンピュータ・システムにおいては、プロセッサは、最近要求した情報を再び要求する可能性が高い。高速であるが主メモリより容量が小さいキャッシュ・メモリは、プロセッサが用いた命令をストアするために用いられるので、キャッシュにストアされたアドレス・ラインが要求されると、キャッシュは、情報を主メモリから検索しなければならない場合よりも速くプロセッサに情報を提供することができる。従って、キャッシュ・メモリによって性能が向上する。
コンピュータ・システムにおいて、キャッシュ性能は、ますます重要になっている。要求されたラインがキャッシュに保持され、従って主メモリからフェッチする必要がない場合に生じるキャッシュ・ヒットは、コンピュータ・システムにおいて時間およびリソースを節約する。従って、一致するキャッシュ・ヒットの可能性を高め、できる限りミスを少なくするために、いくつかの種類のキャッシュが開発されている。
従来技術のシステムにおいて、いくつかの種類のキャッシュが用いられている。命令キャッシュ(I-caches)は、ストレージの時間的および空間的な局所性を利用して、主メモリから命令にアクセスすることに伴う遅延を生じることなく、命令フェッチを可能とする。しかしながら、頻繁に用いられるが時間的または空間的に離れているキャッシュ・ラインは、キャッシュの結合性およびサイズに応じてキャッシュから取り除かれる場合がある。キャッシュ・ミスの時、プロセッサは、主メモリからラインをフェッチする不利を招き、このため全体的な性能が低下する。
従って、ラインの使用頻度に基づいてラインをキャッシュし続けることができ、キャッシュ・メモリの全ヒット率を潜在的に上げることができる方法および装置を有することは有利であろう。
コンピュータ・システムのためのキャッシュ・システムには、第1の複数の命令をストアするための第1のキャッシュと、第2の複数の命令をストアするための第2のキャッシュとが備えられ、第1のキャッシュ内の命令は、命令にアクセスされた場合に増分する関連カウンタを有する。この実施形態では、カウンタが閾値に達すると、関連した命令は第1のキャッシュから第2のキャッシュにコピーされ、これは、第1のキャッシュにストアされるよりも長い間、維持されて、上書きされない。
本発明の新規な特徴と考えられるものは、特許請求の範囲に述べる。しかしながら、本発明自体は、好適な使用態様、更に別の目的および利点と共に、添付図面と関連付けて以下の例示的な実施形態の詳細な説明を参照することによって、最も良く理解されよう。
ここで図面を参照し、特に図1を参照すると、本発明の好適な実施形態による、本発明を実施可能なデータ処理システムの図が示されている。コンピュータ100は、システム・ユニット102、ビデオ・ディスプレイ端末104、キーボード106、フロッピ・ドライブならびに他の種類の永続的および着脱可能ストレージ媒体を含み得るストレージ・デバイス108、マウス110を含むものとして図示されている。パーソナル・コンピュータ100と共に、例えばジョイスティック、タッチパッド、タッチ・スクリーン、トラックボール、マイクロフォン等、追加の入力デバイスが含まれる場合がある。コンピュータ100は、ニューヨーク州アーモンクに位置するInternational Business Machines Corporationの製品であるIBM (R) RS/6000コンピュータまたはIntelliStationコンピュータ等の適切なコンピュータを用いて実施可能である。ここに表す図はコンピュータを示すが、本発明の他の実施形態は、ネットワーク・コンピュータ等の他の種類のデータ処理システムにおいて実施することも可能である。また、コンピュータ100は、好ましくは、コンピュータ100内で動作するコンピュータ読み取り可能媒体内にあるシステム・ソフトウエアによって実施可能なグラフィカル・ユーザ・インタフェースも含む。
ここで図2を参照すると、本発明を実施可能なデータ処理システムのブロック図が示されている。データ処理システム200は、本発明のプロセスを実施するコードまたは命令を配置可能な図1のコンピュータ100等、コンピュータの1例である。データ処理システム200は、周辺要素相互接続(PCI:peripheral component interconnect)ローカル・バス・アーキテクチャを用いる。図示する例はPCIバスを用いるが、AGP(Accelerated Graphics Port)およびISAアーキテクチャ(ISA:Industry Standard Architecture)等の他のバス・アーキテクチャも使用可能である。プロセッサ202および主メモリ204は、PCIブリッジ208を介してPCIローカル・バス206に接続されている。また、PCIブリッジ208は、プロセッサ202のための統合メモリ・コントローラおよびキャッシュ・メモリを含むことができる。PCIローカル・バス206に対する追加の接続は、直接要素相互接続を介して、または拡張ボードを介して行うことができる。図示の例では、ローカル・エリア・ネットワーク(LAN)アダプタ210、小型コンピュータ・システム・インタフェースSCSIホスト・バス・アダプタ212、および拡張バス・インタフェース214が、直接要素接続によって、PCIローカル・バス206に接続されている。これに対して、オーディ・アダプタ216、グラフィクス・アダプタ218、およびオーディオ/ビデオ・アダプタ219は、拡張スロット内に挿入された拡張ボードによって、PCIローカル・バス206に接続されている。拡張バス・インタフェース214は、キーボードおよびマウス・アダプタ220、モデム222、および追加メモリ224のための接続を提供する。SCSIホスト・バス・アダプタ212は、ハード・ディスク・ドライブ226、テープ・ドライブ228、およびCD−ROMドライブ230のための接続を提供する。典型的なPCIローカル・バスの実例は、3または4つのPCI拡張スロットまたは拡張コネクタをサポートする。
プロセッサ202上で、オペレーティング・システムが実行し、図2のデータ処理システム200内の様々な構成要素を調整し制御するために用いられる。オペレーティング・システムは、Microsoft (R)社から入手可能なWindows2000(R)等の市販のオペレーティング・システムとすることができる。Java(R)等のオブジェクト指向プログラミング・システムが、オペレーティング・システムと関連して実行する場合があり、データ処理システム200上で実行するJava(R)プログラムまたはアプリケーションからオペレーティング・システムへの呼び出しを提供する。「Java(R)」は、SunMicrosystems, Inc.の商標である。オペレーティング・システム、オブジェクト指向プログラミング・システム、およびアプリケーションまたはプログラムのための命令は、ハード・ディスク・ドライブ226等のストレージ・デバイス上に位置し、プロセッサ202によって実行するため主メモリ204にロードすることができる。
図2のハードウエアは実施に応じて変動し得ることは、当業者には認められよう。図2に示すハードウエアに加えて、またはその代わりに、フラッシュROM(または同等の不揮発性メモリ)または光ディスク・ドライブ等、他の内部ハードウエアまたは周辺機器を使用可能である。また、本発明のプロセスは、マルチプロセッサ・データ処理システムにも適用することができる。
例えば、データ処理システム200は、ネットワーク・コンピュータとして任意選択的に構成される場合、任意選択的な含有を示す図2の点線232に示すように、SCSIホスト・バス・アダプタ212、ハード・ディスク・ドライブ226、テープ・ドライブ228、およびCD−ROM230を含まない場合がある。この場合、コンピュータは、クライアント・コンピュータと呼ぶのが適切であるが、LANアダプタ210、モデム222等の何らかのタイプのネットワーク通信インタフェースを含まなければならない。別の例として、データ処理システム200は、何らかのタイプのネットワーク通信インタフェースに頼ることなく、データ処理システム200が何らかのタイプのネットワーク通信インタフェースを備えるにしても備えないにしても、ブート可能に構成されたスタンドアロンのシステムとすることができる。更に別の例として、データ処理システム200は、パーソナル・デジタル・アシスタント(PDA:personal digital assistant)とすることができ、オペレーティング・システム・ライフおよび/またはユーザが発生したデータをストアするための不揮発性メモリを提供するROMおよび/またはフラッシュROMと共に構成する。
図2の図示した例および上述の例は、アーキテクチャの限定を暗示することを意図していない。例えば、データ処理システム200は、PDAの形態を取ることに加えて、ノートブック・コンピュータまたはハンドヘルド・コンピュータとすることも可能である。データ処理システム200は、キオスク(kiosk)端末またはウエブ端末装置とすることも可能である。
本発明のプロセスは、例えば、主メモリ204、メモリ224等のメモリ、または1つ以上の周辺機器226〜230に位置することができるコンピュータが実施する命令を用いて、プロセッサ202によって実行される。
本発明は、例えば図1および2に示すシステムのようなコンピュータ・システムのための革新的なキャッシュ・システムを教示する。好適な実施形態では、本発明のキャッシュは、例えば、主メモリ204または他のキャッシュ・メモリの一部として実施される。
好適な実施形態の1例として、例えば命令キャッシュ(Iキャッシュ(I-cache))のような主キャッシュと共に、動的頻度命令キャッシュ(DFI−cache:DynamicFrequent Instruction cache)を実施する。双方のキャッシュには同時にクエリを行うので、いずれかのキャッシュにラインが保持されている場合、クエリは結果としてヒットとなる。
一実施形態では、主キャッシュにおける各ラインに、そのアドレス・ラインがアドレスされた場合にいつでも増分する関連カウンタを取り付けられる。カウンタがある数に達すると、そのラインは主キャッシュから除去されてDFIキャッシュに配置される。DFIキャッシュは、これによって、主キャッシュよりも長く頻繁にアクセスされるラインを保持する。
別の実施形態では、主キャッシュに、最も多く参照されたラインをカウントするハードウエア・カウンタを追加する。主キャッシュからあるアイテムが取り除かれる場合、最高のカウンタ値が、どのラインを除去するかを決定する。除去されたラインは、好ましくはDFIキャッシュに移されるので、最も頻繁にアクセスされるラインはキャッシュに長く残る。
図3は、本発明の好適な実施形態に一致する、コンピュータ・システムのキャッシュ・アーキテクチャを示す。この例では、2つのキャッシュを示す。すなわち、第1のキャッシュ302(命令キャッシュすなわちIキャッシュ等)および動的頻度命令(DFI)キャッシュ300である。この例の第1のキャッシュ302は、Iキャッシュ302の各ライン306A〜Cに対応するカウンタ308A〜Cのためのスペースを含む。各ライン306A〜Cには、カウンタ308A〜Cの1つのカウンタが取り付けられ、ライン306A等のラインがアクセスされると、そのカウンタ308Aが増分される。この例は、第1のキャッシュとしてIキャッシュに対する参照を行うが、他のタイプのキャッシュをその代わりに実施可能であることに留意すべきである。他のタイプのキャッシュとは、例えば、N. P. Jouppiによる、IEEE、CH2887−8/9/90に発表された、「Improving Direct-Mapped Cache Performance by the Addition of a SmallFully-Associative Cache and Prefetch Buffers」に記載されたビクティム・キャッシュ(victim cache)等である。この文献は、参照により本願にも含まれるものとする。
カウンタが、所定の閾値(または、実施によっては可変閾値)に達した場合、ラインはIキャッシュ302から除去されて、DFIキャッシュ300内、例えばライン304Aに配置される。この例では、DFIキャッシュは充分に関連付けられ、新しいラインを加える場合にどのラインを上書きするかを決定するためのLRU(Least Recently Used)ポリシーに従う。
DFIキャッシュは、追加キャッシュであり、例えば関連カウンタが閾値に達したことによって頻度が高いと決定した命令ラインをストアする。上述の例では、IキャシュおよびDFIキャッシュで、好ましくは同時にクエリを行う。求められた命令が、DFIキャッシュまたはIキャッシュにある場合、ヒットが生じる。DFIは、ある命令を頻度が高いと決定した場合に更新される。
本発明は、関連カウンタが閾値に達することによって「高頻度」命令ラインを説明するが、本発明の範囲内で、命令を「高頻度」と指定する他の方法も実施可能である。
DFIは、通常の命令キャッシュよりもキャッシュ内に高頻度で用いるラインを長く保持するので、通常の命令キャッシュは、高頻度で用いるラインと見なされたラインを含めて、ラインを無効にすることができる。かかる命令が再び要求された場合、これはDFIキャッシュ内で見つかり、ヒットが生じる。従って、本発明の機構によって、いくつかのキャッシュ・ミスがヒットへと変わる。ラインがDFIキャッシュのみで見つかった場合、そのラインはDFIキャッシュのみに維持することができ、またはDFIキャシュから削除して主キャッシュにコピーすることができ、またはDFIキャッシュに保持して主キャッシュにコピーすることができる。好適な実施形態では、DFIキャッシュ内のアクセスされたラインの頻度も、カウンタを用いて測定する。例えば、最後の「X」回のアクセスを追跡するアルゴリズムを用いることができる。「X」は所定の数である。また、本発明の範囲内で、DFIキャッシュにおけるアクセスされたラインの頻度を追跡する他の方法も実施可能である。
DFIキャッシュは、ダイレクトマップ方式またはセットアソシアティブ方式のキャッシュとして構成することができ、そのサイズは、空間および性能の間の必要なトレードオフを与えるように選択すると好ましい。
別の例示的な実施形態では、キャッシュ・ライン306Aにアクセスする場合に実施される、Iキャッシュ302の高頻度で用いられるキャッシュ・ライン306Aに関連付けたカウンタ308A等のカウンタを増分するだけでなく、Iキャッシュ302における他のキャッシュ・ラインに関連付けたカウンタを減分する。Iキャッシュにおいてラインを置換する場合、最小カウンタ数を有するラインを置換のために選択する。
このプロセスによって、DFIキャッシュ300は、高頻度でアクセスされ、より長く保持される、もっと高いカウンタ値を有するラインを保持することができる。
図4は、本発明の好適な実施形態を実施するためのフローチャートを示す。この例のプロセスでは、例えばキャッシュ302のような主キャッシュにおいてキャッシュ・ヒットが起こると、カウンタを増分する。主キャッシュ302のラインのカウンタが閾値を超えると、そのラインは高頻度であると見なされ、そのラインは補助キャッシュに移動する。この例では、このように主キャッシュから補助キャッシュに移動したデータは、補助キャッシュからアクセスされる。
この例のプロセスでは、図3のキャッシュ302に類似した主キャッシュおよび図3のDFIキャッシュ300に類似した補助キャッシュを説明する。このプロセスは、主キャッシュにおいてメイン・アドレスを見つけたか否かのチェックによって開始する(ステップ402)。メモリ・アドレスが見つかると、そのキャッシュ・ラインに対応したカウンタを増分する(ステップ404)。カウンタが閾値を超えると(ステップ406)、補助キャッシュをチェックしてそれがいっぱいかどうかを調べる(ステップ408)。カウンタが閾値を超えない場合、データは単に主キャッシュからアクセスされ(ステップ416)、プロセスは終了する。
カウンタが閾値を越え、補助キャッシュがいっぱいである場合、補助キャッシュのエントリを置換のために選択する(ステップ410)。補助キャッシュがいっぱいでない場合、または補助キャッシュのエントリを置換のために選択した後、キャッシュ・ラインを主キャッシュから補助キャッシュに移動させる(ステップ412)。これは、主メモリからのキャッシュ・ラインの除去を含むことに留意すべきである。次に、データは、補助キャッシュからアクセスされ(ステップ414)、プロセスは終了する。
ステップ402において求めたメモリ・アドレスが主キャッシュ内で見つからない場合、補助キャッシュでメモリ・アドレスをチェックする(ステップ418)。これが見つかった場合、プロセスはステップ414に移り、データは補助キャッシュからアクセスされる(ステップ414)。補助キャッシュにメモリ・アドレスが存在しない場合、主キャッシュをチェックして、これがいっぱいかどうかを調べる(ステップ420)。主キャッシュがいっぱいである場合、主キャッシュのエントリを置換のため選択し(ステップ422)、データをコンピュータ・システムの主メモリから主キャッシュ内に移し(ステップ424)、プロセスは終了する。主キャッシュがいっぱいでない場合、データを主メモリから主キャッシュに移し(ステップ424)、プロセスは終了する。
図5は、本発明の好適な実施形態を実施するための別のフローチャートを示す。この例では、選択されたラインがキャッシュ内で見つかった場合、キャッシュ302の選択したライン306Aのためのカウンタ308Aを増分し、一方、他の全てのキャッシュ・ライン308B、306C等のためのカウンタ308B、308C等を減分する。キャッシュにおいてキャッシュ・ラインの置換が必要な場合、最少のカウンタを有するキャッシュ・ライン(従って、アクセス頻度が最低のもの)を置換する。
このプロセスは、キャッシュにおいてメモリ要求を受信することから開始する(ステップ502)。この例では、記載するキャッシュは、図3の主キャッシュ302に類似したものである。このキャッシュは、好ましくは、キャッシュの各ラインまたはメモリ・アドレスに関連したカウンタが備えられている。所望のアドレスがキャッシュ内にある場合(ステップ504)、そのラインの関連カウンタを増分する(ステップ506)。また、他の全てのカウンタを減分し(ステップ508)、プロセスは終了する。
所望のアドレスがキャッシュ内に存在しない場合(ステップ504)、最少のカウンタを有するキャッシュ・ラインを置換のために選択する(ステップ512)。次いで、選択したキャッシュ・ラインを新しいデータによって置換する(ステップ514)。そして、プロセスは終了する。
図6および7は、本発明の別の実施を示す。この例では、ハードウエア・カウンタ・スタック600は、「Addr8」604および「Addr3」602を含む、個別のアドレス・ラインに関連したカウンタを示す。
この例では、主キャッシュは、図3に示したものと同じであるが、最も多く参照されたラインをカウントするハードウエア・カウンタ600があることが異なる。アドレス・ラインがフェッチされると、これはハードウエア・カウンタ内のスタック最下部に配置される。そのアドレス・ラインが再びアドレスされると、その関連カウンタが増分し、そのアドレス・ラインはスタックを上昇する。このため、スタック内の上方のエントリは、スタック内の下方のエントリよりも多く参照されている。ハードウエアが、アドレス・ラインのためのカウンタでいっぱいになった場合、かつ新たなアドレス・ラインが参照された場合、スタックの最下部アドレス・ラインを置換のため選択する。
図6は、スタック内でアドレス3(602)がアドレス8(604)の下にある場合の例を示す。この場合、アドレス3(602)は、アドレス8(604)よりも小さいカウンタ値を有する。アドレス3(602)がもっとアクセスされると、そのカウンタ値が増加し、最終的にアドレス8(604)のカウンタ値を超える。図7は、アドレス3(602)のカウンタ値がアドレス8(604)よりも高くなった後のそれらの相対的な位置を示す。図7において、アドレス3(602)は、スタック内でアドレス8(604)よりも上方にある。この例で、新しいアドレスを参照すると、以下で説明するように、アドレスに関連するカウンタを置換のため選択する。
本発明のこのハードウエア・カウンタは、例えば、主キャッシュからどのアドレスを補助キャッシュに移すべきかを決定する際、および、補助キャッシュ(例えばDFIキャッシュ)がいっぱいの場合にキャッシュ内のどのラインを除去するかを決定するために有用である。例えば、一実施形態では、主キャッシュがIキャッシュであり、補助キャッシュがDFIキャッシュである。Iキャッシュ内のアドレスは、各々、ハードウエア・カウンタ600内の位置を有する。Iキャッシュがいっぱいであり、別のアドレス・ラインを追加しなければならない場合、アドレス・ラインを追い出して、空き場所を作らなければならない。Iキャッシュのどのラインを追い出すかの決定(および、好ましくは、DFIキャッシュに書き込む)は、ハードウエア・カウンタ600を参照して行う。好適な実施形態では、最も頻繁にアクセスされたライン、すなわちハードウエア・カウンタ・スタック600において最上部にあるものをIキャッシュから除去する。この例では、新しいアドレスを加える場合、スタックの最下部に加えられるが、アドレス1は、Iキャッシュから完全に除去され、DFIキャッシュに配置される。アイテムがIキャッシュから除去される場合、カウンタ600からも除去される。
別の実施形態では、DFIキャッシュの各ラインは、それに関連したカウタンを有する。DFIキャッシュのラインがヒットすると、DFIキャッシュの他のラインに関連したカンタの値を減分する。このため、DFIキャッシュ内の高頻度で用いられるラインは、もっと低頻度で用いられるラインよりも高い値を有する。DFIキャッシュにおいてラインを置換する場合は、最小カウンタ数を有するラインを置換する。このように、DFIキャッシュは、高頻度で用いられるラインをIキャッシュよりも長く保持する。
DFIキャッシュからラインを除去する場合、他の方法を用いてどのラインを除去するかを決定することができる。場合によっては、ヒットの最も少ないラインを除去することは望ましくないか、または非効率的であり得る。本発明の状況において、ワーキング・セット置換アルゴリズム等、ページ置換のための既知のアルゴリズムを実施可能である。かかるアルゴリズムは、経時的に動くウインドウを用い、指定した時間内に参照されないページまたはラインは、ワーキング・セットまたはキャッシュから除去される。
留意すべき重要なこととして、本発明は完全に機能するデータ処理システムに関連付けて説明したが、本発明のプロセスは、命令のコンピュータ読み取り可能媒体の形態および様々な形態で分配することができ、本発明は、この分配を実行するために実際に用いる信号搬送媒体の特定の種類には無関係に等しく適用されることは、当業者には理解されるであろう。コンピュータ読み取り可能媒体の例は、フロッピ・ディスク、ハード・ディスク・ドライブ、RAM、CD−ROM、DVD−ROM等の記録可能型媒体、ならびに、デジタルおよびアナログ通信リンク、例えば無線周波数および光波伝送等の伝送形態を用いた有線または無線通信リンク等の伝送型媒体を含む。コンピュータ読み取り可能媒体は、特定のデータ処理システムにおいて実際に用いるために復号される符号化フォーマットの形態を取ることができる。
本発明の記載は、例示および説明の目的のために提示し、包括的であることまたは開示した形態に本発明を限定することは意図していない。多くの修正および変更は、当業者には明らかであろう。実施形態は、本発明の原理、実際の用途を最も良く説明するため、更に、当業者に、本発明を理解させ、考えられる特定の使用に適切な様々な修正によって様々な実施形態を理解させるために、選択し記載したものである。
本発明の好適な実施形態の実施と一致するコンピュータ・システムのブロック図である。 本発明の好適な実施形態の実施と一致する例示的なコンピュータ・システムの構成要素の図を示す。 本発明の好適な実施形態によるキャッシュ・システムを示す。 本発明の好適な実施形態の実施と一致するプロセス・ステップのフローチャートを示す。 本発明の好適な実施形態の実施と一致するプロセス・ステップのフローチャートを示す。 本発明の好適な実施形態と一致するハードウエア・カウンタ・スタックを示す。 本発明の好適な実施形態と一致するハードウエア・カウンタ・スタックを示す。

Claims (15)

  1. コンピュータ・システムのためのキャッシュ・システムであって、
    複数の第1の命令をストアするための第1のキャッシュと、
    複数の第2の命令をストアするための第2のキャッシュと、
    を備え、前記複数の第1の命令の各々は対応したカウンタを有し、前記複数の第1の命令のうちある第1の命令がアクセスされた場合、当該第1の対応するカウンタを増分し、
    前記第1の対応するカウンタが閾値に達した場合、前記複数の第1の命令のうち前記第1の命令を前記第2のキャッシュにコピーする、キャッシュ・システム。
  2. 前記複数の第2の命令の各々は対応したカウンタを有し、前記複数の第2の命令のうちのある第2の命令がアクセスされた場合、前記複数の第1の他の全てのカウンタを減分する、請求項1に記載のキャッシュ・システム。
  3. 前記第2のキャッシュから前記複数の第1の命令の前記第1の命令にアクセスする、請求項1に記載のキャッシュ・システム。
  4. 前記対応するカウンタはハードウエア・カウンタから成り、
    命令をフェッチする場合、当該命令は前記ハードウエア・カウンタ内で前記ハードウエア・カウンタのスタックの最下部に配置され、
    前記命令に再びアクセスする場合、当該命令は前記スタック内で上方に移動し、
    前記スタックがいっぱいになり、前記スタック内に新たな命令をストアする場合、前記新たな命令は前記ハードウエア・カウンタ内の最下部アドレスを置換する、請求項1に記載のキャッシュ・システム。
  5. 前記第1のキャッシュは命令キャッシュであり、前記第2のキャッシュは、フルアソシアティブ方式で、LPU(least recently used)ポリシーに従う、請求項1に記載のキャッシュ・システム。
  6. コンピュータ・システムにおいてキャッシュを管理する方法であって、
    前記第1のキャッシュ内の各命令は対応するカウンタを有し、第1のキャッシュにおいて第1の命令についてチェックするステップと、
    前記第1のキャッシュにおいて前記第1の命令が見つかった場合、第1の対応するカウンタを増分するステップと、
    前記第1の対応するカウンタの値を閾値と比較するステップと、
    前記第1の対応するカウンタが前記閾値を超えた場合、前記第1のキャッシュから第2のキャッシュに前記第1の命令を移動させるステップと、
    を備える、方法。
  7. 前記第2のキャッシュから前記第1に命令にアクセスするステップを更に備える、請求項6に記載の方法。
  8. 前記第2のキャッシュの各命令は対応したカウンタを有し、前記第2のキャッシュの命令がアクセスされた場合、前記複数の第2の他の全てのカウンタを減分する、請求項6に記載の方法。
  9. 前記対応するカウンタはハードウエア・カウンタから成り、
    命令をフェッチする場合、当該命令は前記ハードウエア・カウンタ内で前記ハードウエア・カウンタのスタックの最下部に配置され、
    前記命令に再びアクセスする場合、当該命令は前記スタック内で上方に移動し、
    前記スタックがいっぱいになり、前記スタック内に新たな命令をストアする場合、前記新たな命令は前記ハードウエア・カウンタ内の最下部アドレスを置換する、請求項6に記載の方法。
  10. 前記第1のキャッシュは命令キャッシュであり、前記第2のキャッシュは、フルアソシアライブ方式で、LPU(least recently used)ポリシーに従う、請求項6に記載の方法。
  11. コンピュータ読み取り可能媒体内のコンピュータ・プログラムであって、
    前記第1のキャッシュにおいてデータの各ラインは対応したカウンタを有し、第1のキャッシュにおいてデータの第1のラインについてチェックするための第1の命令と、
    前記第1のキャッシュにおいて前記データの第1のラインが見つかった場合、第1の対応するカウンタを増分するための第2の命令と、
    前記第1の対応するカウンタの値を閾値と比較するための第3の命令と、
    前記第1の対応するカウンタが前記閾値を超えた場合、前記第1のキャッシュから第2のキャッシュに前記データの第1のラインを移動させるための第4の命令と、
    を備える、コンピュータ・プログラム。
  12. 前記第2のキャッシュから前記第1に命令にアクセスするステップを更に備える、請求項11に記載のコンピュータ・プログラム。
  13. 前記第2のキャッシュの各命令は対応したカウンタを有し、前記第2のキャッシュの命令がアクセスされた場合、前記複数の第2の他の全てのカウンタを減分する、請求項11に記載のコンピュータ・プログラム。
  14. 前記対応するカウンタはハードウエア・カウンタから成り、
    命令をフェッチする場合、これは前記ハードウエア・カウンタ内で前記ハードウエア・カウンタのスタックの最下部に配置され、
    前記命令に再びアクセスする場合、当該命令は前記スタック内で上方に移動し、
    前記スタックがいっぱいになり、前記スタック内に新たな命令をストアする場合、前記新たな命令は前記ハードウエア・カウンタ内の最下部アドレスを置換する、請求項11に記載のコンピュータ・プログラム・プロダクト。
  15. 前記第1のキャッシュは命令キャッシュであり、前記第2のキャッシュは、フルアソシアティブ方式で、LPU(least recently used)ポリシーに従う、請求項11に記載のコンピュータ・プログラム・プロダクト。
JP2004323732A 2003-11-13 2004-11-08 動的頻発命令ライン・キャッシュ Pending JP2005149497A (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/713,725 US20050108478A1 (en) 2003-11-13 2003-11-13 Dynamic frequent instruction line cache

Publications (1)

Publication Number Publication Date
JP2005149497A true JP2005149497A (ja) 2005-06-09

Family

ID=34573790

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004323732A Pending JP2005149497A (ja) 2003-11-13 2004-11-08 動的頻発命令ライン・キャッシュ

Country Status (5)

Country Link
US (1) US20050108478A1 (ja)
JP (1) JP2005149497A (ja)
KR (1) KR100582340B1 (ja)
CN (1) CN1286006C (ja)
TW (1) TW200537374A (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011129101A (ja) * 2009-12-16 2011-06-30 Intel Corp キャッシュメモリにおけるキャッシュラインの置き換え
JP2013109588A (ja) * 2011-11-21 2013-06-06 Internatl Business Mach Corp <Ibm> プログラムの命令を実行する装置および命令をキャッシュするシステム
JP2015525913A (ja) * 2012-06-27 2015-09-07 アルカテル−ルーセント N個のアイテムのリストをキャッシュシステムのc個のアイテムのメモリキャッシュに格納することを管理するための方法
WO2015141820A1 (ja) * 2014-03-20 2015-09-24 株式会社 東芝 キャッシュメモリシステムおよびプロセッサシステム

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8549226B2 (en) * 2004-05-14 2013-10-01 Hewlett-Packard Development Company, L.P. Providing an alternative caching scheme at the storage area network level
CN100465955C (zh) * 2004-10-12 2009-03-04 国际商业机器公司 用于高速缓存万维网内容的方法和系统
TW200745847A (en) * 2005-12-23 2007-12-16 Koninkl Philips Electronics Nv Apparatus and method for dynamic cache management
US8051248B2 (en) * 2008-05-05 2011-11-01 Globalfoundries Inc. Transient transactional cache
CN103377141B (zh) * 2012-04-12 2016-10-12 无锡江南计算技术研究所 高速存储区的访问方法以及访问装置
US10496277B1 (en) * 2015-12-30 2019-12-03 EMC IP Holding Company LLC Method, apparatus and computer program product for storing data storage metrics
US10387329B2 (en) * 2016-02-10 2019-08-20 Google Llc Profiling cache replacement
US11899589B2 (en) 2021-06-22 2024-02-13 Samsung Electronics Co., Ltd. Systems, methods, and devices for bias mode management in memory systems

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5043885A (en) * 1989-08-08 1991-08-27 International Business Machines Corporation Data cache using dynamic frequency based replacement and boundary criteria
US6490654B2 (en) * 1998-07-31 2002-12-03 Hewlett-Packard Company Method and apparatus for replacing cache lines in a cache memory
US6591347B2 (en) * 1998-10-09 2003-07-08 National Semiconductor Corporation Dynamic replacement technique in a shared cache
TW451132B (en) * 1998-12-15 2001-08-21 Nippon Electric Co System and method for cache processing
US6532520B1 (en) * 1999-09-10 2003-03-11 International Business Machines Corporation Method and apparatus for allocating data and instructions within a shared cache
US6393522B1 (en) * 2000-01-27 2002-05-21 Ati International Srl Method and apparatus for cache memory management
US20010049818A1 (en) * 2000-02-09 2001-12-06 Sanjeev Banerjia Partitioned code cache organization to exploit program locallity
US7260684B2 (en) * 2001-01-16 2007-08-21 Intel Corporation Trace cache filtering

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011129101A (ja) * 2009-12-16 2011-06-30 Intel Corp キャッシュメモリにおけるキャッシュラインの置き換え
JP2013109588A (ja) * 2011-11-21 2013-06-06 Internatl Business Mach Corp <Ibm> プログラムの命令を実行する装置および命令をキャッシュするシステム
US9244850B2 (en) 2011-11-21 2016-01-26 International Business Machines Corporation Device for executing program instructions and system for caching instructions
JP2015525913A (ja) * 2012-06-27 2015-09-07 アルカテル−ルーセント N個のアイテムのリストをキャッシュシステムのc個のアイテムのメモリキャッシュに格納することを管理するための方法
WO2015141820A1 (ja) * 2014-03-20 2015-09-24 株式会社 東芝 キャッシュメモリシステムおよびプロセッサシステム
JP2015184794A (ja) * 2014-03-20 2015-10-22 株式会社東芝 キャッシュメモリシステムおよびプロセッサシステム

Also Published As

Publication number Publication date
KR20050046535A (ko) 2005-05-18
KR100582340B1 (ko) 2006-05-23
CN1286006C (zh) 2006-11-22
TW200537374A (en) 2005-11-16
CN1617095A (zh) 2005-05-18
US20050108478A1 (en) 2005-05-19

Similar Documents

Publication Publication Date Title
US8943272B2 (en) Variable cache line size management
US7689775B2 (en) System using stream prefetching history to improve data prefetching performance
JP4486750B2 (ja) テンポラリ命令及び非テンポラリ命令用の共用キャッシュ構造
US8490065B2 (en) Method and apparatus for software-assisted data cache and prefetch control
JP4028875B2 (ja) メモリを管理するためのシステムおよび方法
JP4226057B2 (ja) 包含キャッシュにおける望ましくない置換動作を低減するための先行犠牲選択のための方法及び装置
US8176255B2 (en) Allocating space in dedicated cache ways
US7571286B2 (en) Reduced memory traffic via detection and tracking of temporally silent stores
JP5090047B2 (ja) ロックされたキャッシュ内のセットの置換を管理するための方法、コンピュータ・プログラム、キャッシング・システムおよびプロセッサ
EP1573555B1 (en) Page descriptors for prefetching and memory management
JP2005528695A (ja) キャッシュ置換ポリシーの簡略化した実施態様を用いたマルチスレッド化キャッシュのための方法および装置
JP7308745B2 (ja) データキャッシュ領域プリフェッチャ
KR100582340B1 (ko) 캐시 시스템, 캐시 관리 방법 및 컴퓨터 판독가능한 기록매체
JP2014115851A (ja) データ処理装置及びその制御方法
JP5255049B2 (ja) データをキャッシュ・メモリにプリフェッチする方法、コンピュータ・プログラム、及びシステム
US20170046278A1 (en) Method and apparatus for updating replacement policy information for a fully associative buffer cache
US20060101208A1 (en) Method and apparatus for handling non-temporal memory accesses in a cache
JP2010176305A (ja) 情報処理装置およびデータ記憶装置
US7401186B2 (en) System and method for tracking changes in L1 data cache directory
JP2011008315A (ja) キャッシュ制御方法
WO2023055478A1 (en) Using request class and reuse recording in one cache for insertion policies of another cache

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070130

RD12 Notification of acceptance of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7432

Effective date: 20070216

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20070216

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070425

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20070515

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070809

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20070914

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20071005

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20090817