JP2007293839A - ロックされたキャッシュ内のセットの置換を管理するための方法、コンピュータ・プログラム、キャッシング・システムおよびプロセッサ - Google Patents

ロックされたキャッシュ内のセットの置換を管理するための方法、コンピュータ・プログラム、キャッシング・システムおよびプロセッサ Download PDF

Info

Publication number
JP2007293839A
JP2007293839A JP2007099120A JP2007099120A JP2007293839A JP 2007293839 A JP2007293839 A JP 2007293839A JP 2007099120 A JP2007099120 A JP 2007099120A JP 2007099120 A JP2007099120 A JP 2007099120A JP 2007293839 A JP2007293839 A JP 2007293839A
Authority
JP
Japan
Prior art keywords
cache
lru
array
identified
program
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.)
Granted
Application number
JP2007099120A
Other languages
English (en)
Other versions
JP5090047B2 (ja
Inventor
Hall Ronald
ロナルド・ホール
Jonathan J Dement
ジョナサン・ジェームズ・デメント
Brian P Hanley
ブライアン・パトリック・ハンレイ
Kevin C Stelzer
ケビン・シー・ステルツァー
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 JP2007293839A publication Critical patent/JP2007293839A/ja
Application granted granted Critical
Publication of JP5090047B2 publication Critical patent/JP5090047B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/123Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
    • G06F12/124Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list being minimized, e.g. non MRU
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/123Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
    • G06F12/125Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list being generated by decoding an array or storage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking

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

【課題】ロックされたキャッシュ内のセットの置換を管理するための方法、装置、コンピュータ・プログラムおよびプロセッサを提供すること。
【解決手段】プログラムによるキャッシュ・アクセスに応答して、基底ノードによってポイントされている2分木の側を識別する。2分木の識別された側へのアクセスの回数が、識別された側のプログラムに関連するセットの個数と等しいかどうかに関する判定を行う。識別された側へのアクセスの回数が、識別された側のプログラムに関連するセットの個数と等しい場合に、基底ノードは、2分木の反対側をポイントするように変更される。
【選択図】図4

Description

本発明は、一般的には、改良されたデータ処理システムに関し、具体的には、データを処理する方法および装置に関する。より具体的には、本発明は、キャッシュ内のデータを管理するための方法、コンピュータ・プログラム、システムおよびプロセッサに関する。
キャッシュは、より長いアクセス時間を要するストレージ・ロケーション内のデータと比較して頻繁に使用されるデータを保管するために使用されるメモリのセクションである。プロセッサは、通常、キャッシュを使用してメモリにアクセスするために必要な平均時間を減少させる。プロセッサが、メインメモリ内のあるロケーションについて読み取りまたは書き込みをしようとする場合に、プロセッサは、まず、そのメモリ・ロケーションがキャッシュ内に存在するかどうかを調べる。プロセッサが、そのメモリ・ロケーションがキャッシュ内に存在することを見つけた場合、キャッシュ・ヒットが発生する。そうでない場合には、キャッシュ・ミスが存在することになる。プロセッサは、キャッシュ・ヒットの結果として、キャッシュ・ライン内のデータを即座に読み取るかまたは書き込む。キャッシュ・ラインとは、キャッシュに保管されているメインメモリ内のデータのインデックスを含むタグを有する、キャッシュ内のロケーションである。キャッシュ・ラインは、キャッシュ・ブロックとも称される。
現在、プロセッサの開発において発生している設計上の問題の1つは、メモリ待ち時間である。多くのプロセッサ設計において、メインメモリから実行ユニットへのデータ移送に要するサイクル・タイムが400サイクルを超える可能性がある。この問題を回避するために、ローカル・レベル1(L1)キャッシュおよびローカル・レベル2(L2)キャッシュが使用される。ローカル・レベル・キャッシュは、データの時間的局所性および空間的局所性という2つの一般的なアーキテクチャ上の問題を助けるのに使用されるメモリのサブセットである。
ローカル・メモリ競合の問題および偽共有(false sharing)の問題は、オペレーティング・システムがマルチタスキング環境、マルチスレッディング環境のような技法を使用するときに発生する可能性がある。これらの応用例は、キャッシュのスラッシングを引き起こす可能性がある。この非決定的メモリ再割振り(non−deterministic memory reallocation)は、プリフェッチおよびキャストアウトのようなデータ技法の局所性の効率を下げる。
応用例は、3つのデータ・パターン・タイプに分類することができる。その3つのデータ・パターン・タイプは、「ストリーミング」、「ロッキング」、および「opportunistic(便宜的)」である。「ストリーミング」は、シーケンシャルにアクセスされ、あるいは変更され、そしてその後は参照されないデータである。「ロッキング」は、複数回参照されるかまたは長いアイドル時間の後に参照される可能性がある、特にアソシアティブなデータである。割振り(allocation)および置換(replacement)は、通常、なんらかのランダム・アルゴリズム、ラウンド・ロビン・アルゴリズム、または最長未使用時間(LRU:Least Recently Used)アルゴリズムによって処理される。ソフトウェアは、それが使用しているデータ・パターン・タイプを検出し、ハードウェアがメモリ待ち時間を最小にするようにリソース管理アルゴリズムを使用しなければならない。セット・アソシアティブ・キャッシュでのソフトウェアによって指示されるセット割振りおよび置換の方法では、アプリケーションごとに「仮想」操作スペースが作成される。いくつかの場合に、ソフトウェアは、8ウェイ・セット・アソシアティブ・キャッシュを、5ウェイと3ウェイ、6ウェイと2ウェイ、7ウェイと1ウェイの組合せに分割することができる。キャッシュ構造は、エントリ(行(row)に類似)およびウェイ(列(column)に類似)に分割される。各エントリは、複数のウェイを有することができる。8ウェイ・セット・アソシアティブ・キャッシュでは、各エントリに8つのウェイがある。したがって、データを、1エントリ内の8つのウェイのうちの1つに保管することができる。ウェイは、セットとも称される。「opportunistic(便宜的)」は、ランダム・データ・アクセスを記述する。
擬似LRU(p−LRU)は、キャッシュ合同クラス(cache congruence class)内のラインがアクセスされる順序を記憶し、その結果、キャッシュ・ミスがあるときに、最も以前にアクセスされたラインが新しいデータに置換されるようにする、近似された置換ポリシである。キャッシュ・アクセスごとに、擬似LRUは、最後にアクセスされたアイテムが、現在は最も最近に使用されたアイテムになり、最も以前から2番目に使用されたアイテムが、現在は最も以前に使用されたデータになるように更新される。
完全なLRUは、実施が非常に高価である。完全なLRUは、Nウェイ・セット・アソシアティブ・キャッシュの合同クラス1つあたり少なくともlog2(N!)ビットを必要とする(たとえば、4ウェイの場合に5ビット)。そのため、擬似LRUが一般的に妥協策として使用されている。伝統的に、擬似LRUは、N−1ビットだけ、すなわち、8ウェイ・セット・アソシアティブ・キャッシュでは7ビットだけを使用することとなる2分木アルゴリズムを用いて実施される。各ビットは、そのノードがN個のセットを表す、2分木の1つの内部ノードを表す。
擬似LRU置換の目標は、完全なLRUプロセスで得られるものとできる限り近い性能を維持しながら、必要なスペース量を節約することである。しかし、擬似LRUプロセスが8ウェイ・セット・アソシアティブ・キャッシュを5ウェイと3ウェイの組合せまたは6ウェイと2ウェイの組合せのようにアンバランスな形で分割する場合、擬似LRUプロセスは、連続的なキャッシュ・ミスの場合に、完全なLRUと比較して約40%の性能しか達成することができない。さらに、現在のプロセスは、キャッシュ・ミスとキャッシュ・ヒットが組み合わされたキャッシュ・アクセスにおいて、完全なLRUプロセス性能の約40%しか達成することができない。
本発明は、ロッキング・キャッシュでのセットの置換を管理するためのコンピュータ実施される方法、装置、およびコンピュータ・プログラムおよびプロセッサを提供する。プログラムによるキャッシュ・アクセスに応答して、2分木の、基底ノード(base leaf)によってポイントされる側を識別する。2分木の識別された側へのアクセスの回数が、識別された側のプログラムに関連するセットの個数と等しいかどうかに関する判定を行う。識別された側へのアクセスの回数が、識別された側のプログラムに関連するセットの個数と等しい場合に、基底ノードは、2分木の反対側をポイントするように変更される。
例示的な実施形態に特有と思われる新規な特徴を、添付の特許請求の範囲に示す。しかし、例示的な実施形態自体ならびにその使用の好ましい態様、さらなる目的、および利点は、例示的実施形態の次の詳細な説明を添付図面とともに参照することによって最もよく理解されるであろう。
今は図1を参照すると、本発明の諸態様を実施できるデータ処理システムのブロック図が示されている。データ処理システム100は、本発明の実施形態のプロセスを実施することができるコンピュータの例である。図示の例では、データ処理システム100は、ノース・ブリッジおよびメモリ・コントローラ・ハブ(MCH)102と、サウス・ブリッジおよび入出力(I/O)コントローラ・ハブ(ICH)104とを含むハブ・アーキテクチャを使用する。プロセッサ・ユニット106、メインメモリ108、およびグラフィックス・プロセッサ110は、ノース・ブリッジおよびメモリ・コントローラ・ハブ102に接続される。
グラフィックス・プロセッサ110を、たとえばAccelerated Graphics Port(AGP)を介してMCHに接続することができる。プロセッサ・ユニット106には、1以上のプロセッサのセットが含まれる。複数のプロセッサが存在するときに、これらのプロセッサを、別々のパッケージ内の別々のプロセッサとすることができる。その代わりに、これらのプロセッサを、1パッケージ内の複数のコアとすることができる。さらに、これらのプロセッサを、複数のマルチコア・ユニットとすることができる。
このタイプのプロセッサの例が、ヘテロジニアス・プロセッサであるCell Broadband Engine(商標)プロセッサである。このプロセッサは、分散処理を対象とするプロセッサ・アーキテクチャを有する。この構造は、多数の異なるシステム要件およびアプリケーション要件に最適に対処するために、広範囲の単一プロセッサまたは複数プロセッサとメモリとの構成の実施を可能にする。このタイプのプロセッサは、使用されるテクノロジと実施態様のコスト/性能特性とに応じて、マザーボード上その他の第2レベル・パッケージ上の、シングル・チップ、1以上のマルチチップ・モジュール、あるいは複数のシングルチップ・モジュールからなるものとすることができる。Cell Broadband Engine(商標)は、1つのPowerPC Processor Element(PPE)および複数のSynergistic Processor Unit(SPU)を有する。PPEは、メモリ保護テーブルのアドレッシングなど、システム管理機能を実行できる汎用処理ユニットである。SPUは、システム管理機能を有しない、より単純な計算ユニットである。その代わり、SPUは、アプリケーションに計算処理を提供し、PPEによって管理される。
図示の例では、ローカル・エリア・ネットワーク(LAN)アダプタ112は、サウス・ブリッジおよびI/Oコントローラ・ハブ104に接続され、オーディオ・アダプタ116と、キーボードおよびマウス・アダプタ120と、モデム122と、読取専用メモリ(ROM)124と、ハード・ディスク・ドライブ(HDD)126と、CD−ROMドライブ130と、ユニバーサル・シリアル・バス(USB)ポートおよび他の通信ポート132と、PCI/PCIeデバイス134とは、バス138およびバス140を介してサウス・ブリッジおよびI/Oコントローラ・ハブ104に接続される。PCI/PCIeデバイスには、たとえば、イーサネット(登録商標)・アダプタ、アドイン・カード、およびノートブック・コンピュータ用のPCカードを含めることができる。PCIは、カード・バス・コントローラを使用するが、PCIeは使用しない。ROM124は、たとえば、フラッシュ基本入出力システム(BIOS)とすることができる。ハード・ディスク・ドライブ126およびCD−ROMドライブ130は、たとえば、Integrated Drive Electronics(IDE)インターフェースまたはSerial Advanced Technology Attachment(SATA)インターフェースを使用することができる。スーパーI/O(SIO)デバイス136を、サウス・ブリッジおよびI/Oコントローラ・ハブ104に接続することができる。
プロセッサ・ユニット106上で稼動するオペレーティング・システムが、図1のデータ処理システム100内のさまざまなコンポーネントを調整し、その制御を実施する。オペレーティング・システムは、Microsoft(R)Windows(R)XPなどの市販オペレーティング・システムとすることができる(MicrosoftおよびWindowsは、米国その他の国におけるMicrosoft Corporationの商標)。Java(登録商標)プログラミング・システムなどのオブジェクト指向プログラミング・システムが、オペレーティング・システムとあいまって稼動し、データ処理システム100上で実行されるJavaプログラムまたはJavaアプリケーションからオペレーティング・システムへの呼出しを提供することができる(Javaは、米国その他の国におけるSun Microsystems,Inc.の商標)。
オペレーティング・システム、オブジェクト指向プログラミング・システム、およびアプリケーションまたはプログラムの命令は、ハード・ディスク・ドライブ126などのストレージ・デバイスに配置され、プロセッサ・ユニット106による実行のためにメインメモリ108にロードすることができる。本発明の実施形態のプロセスは、コンピュータ実施される命令を使用してプロセッサ・ユニット106によって実行され、このコンピュータ実施される命令は、たとえばメインメモリ108、ROM 124などのメモリ内に、または1以上の周辺デバイス内に配置することができる。
当業者は、このハードウェアを実施態様に応じて変更できることを諒解するであろう。フラッシュ・メモリ、同等の不揮発性メモリ、または光ディスク・ドライブおよび類似物などの他の内蔵ハードウェアまたは周辺デバイスを、このハードウェアに加えてまたはその代わりに使用することができる。また、本発明の実施形態のプロセスを、マルチプロセッサ・データ処理システムに適用することができる。
ある例示的な実施形態においては、データ処理システム100を携帯情報端末(PDA)とすることができ、このPDAは、オペレーティング・システム・ファイルおよび/またはユーザ生成データを保管する不揮発性メモリを提供するためにフラッシュ・メモリを用いて構成される。バス・システムは、システム、バス、I/Oバス、およびPCIバスなど、1以上のバスからなるものとすることができる。もちろん、バス・システムを、通信ファブリックまたは通信アーキテクチャに接続された異なるコンポーネントまたはデバイスの間でのデータの転送をもたらす、任意のタイプの通信ファブリックまたは通信アーキテクチャを使用して実施することができる。通信ユニットには、モデムまたはネットワーク・アダプタなど、データを送受信するために使用される1以上のデバイスを含めることができる。メモリは、たとえば、メインメモリ108またはノース・ブリッジおよびメモリ・コントローラ・ハブ102内に見られるものなどのキャッシュとすることができる。処理ユニットには、1以上のプロセッサまたはCPUを含めることができる。図1に示された例および上で説明した例は、アーキテクチャの限定を意図することを意味するものではない。たとえば、データ処理システム100を、PDAの形をとることに加えて、タブレット・コンピュータ、ラップトップ・コンピュータ、または電話とすることもできる。
ここで図2に移ると、例示的実施形態によるプロセッサ・システムを示す図が示されている。プロセッサ・システム200は、図1のプロセッサ・ユニット106内に存在し得るプロセッサの例である。この例では、プロセッサ・システム200には、フェッチ・ユニット202と、デコード・ユニット204と、発行ユニット206と、分岐ユニット208と、実行ユニット210と、完了ユニット212とが含まれる。プロセッサ・システム200には、メモリ・サブシステム214も含まれる。メモリ・サブシステム214には、キャッシュ・アレイ216と、LRUアレイ218と、LRUコントロール220と、L2ロード・アンド・ストア・キュー・コントロール222と、ディレクトリ・アレイ224と、置換管理テーブル(RMT)226とが含まれる。プロセッサ・システム200は、ホスト・バス228に接続される。さらに、メインメモリ・ユニット230と、バス制御ユニット232と、さらなるプロセッサおよび外部デバイス234とも、ホスト・バス228に接続される。
これらの例では、フェッチ・ユニット202は、プログラムの実行を高速化するために、メモリ・サブシステム214またはメインメモリ・ユニット230から命令をフェッチする。フェッチ・ユニット202は、命令が必要になる前に、その命令をメモリから取り出して、メモリ・サブシステム214またはメインメモリ・ユニット230などのメモリが命令に関する要求に応答するのをプロセッサが待つ必要を回避する。デコード・ユニット204は、実行のために命令をデコードする。言い換えると、デコード・ユニット204は、実行されるコマンドならびにそのコマンドが適用されるオペランドを識別する。発行ユニット206は、デコードされた命令を、たとえば実行ユニット210など、実行のためのユニットに送る。実行ユニット210は、発行ユニット206から受け取られた命令を実行するユニットの例である。実行ユニット210は、命令によって要求された動作および計算を実行する。たとえば、実行ユニット210に、浮動小数点ユニット、算術論理ユニット(ALU)、またはなんらかの他のユニットなど、内部ユニットを含めることができる。完了ユニット212は、実行ユニット210によってアウト・オブ・オーダーで実行される可能性がある命令について、プログラム順で動作の妥当性検査をする。分岐ユニット208は、命令内の分岐を処理する。
キャッシュ・アレイ216には、プロセッサ・システム200が必要とするデータのセットが含まれる。これらのセットは、ウェイとも呼ばれ、アレイ内の列に類似する。本発明の実施形態では、キャッシュ・アレイ216は、L2キャッシュである。LRUアレイ218は、Nウェイ・セット・アソシアティブ・キャッシュのビットを保持する。セット・アソシアティブ・キャッシュとは、同一のキャッシュ・エントリにマッピングできる、2次メモリ内の異なるデータを有するキャッシュである。8ウェイ・セット・アソシアティブ・キャッシュには、1エントリあたり8つの異なるウェイまたはセットがある。したがって、同一のエントリにマッピングされる8つの異なるデータがある可能性がある。このシステムは、キャッシュ・ヒット率性能を改善するために使用される。このアレイ内の各ビットは、対応するキャッシュ・エントリのウェイまたはセットごとにLRU情報を表すノードを有する2分木の1つの内部ノードを表す。LRUコントロール220は、キャッシュ・アレイ216に保管されたデータを管理するために使用されるこの例示的実施形態のプロセスを実施する。RMT226は、セット・アソシアティブ・キャッシュ内のどのセットが置換に使用されるかを定義する。8ウェイ・セット・アソシアティブ・キャッシュでは、RMT226を、8ビット幅で8エントリの深さのテーブルとすることができる。1つのエントリ内の各ビットに、1つのキャッシュ・ウェイのロッキング情報を保管することができる。その値が「1」の場合には、そのウェイを置換することができる。その値が「0」の場合には、そのウェイは置換からロックされている。RMT226内の各エントリを、異なるプログラムまたは異なるメモリ空間のために割り当てることができる。RMTは、オペレーティング・ソフトウェアなど、特権モード・ソフトウェアによってプログラムされる。L2ロード・アンド・ストア・キュー・コントロール222は、L2キャッシュすなわちキャッシュ・アレイ216内のキャッシュ・セットのストレージおよび保存を制御する。
ディレクトリ・アレイ224には、キャッシュ・アレイ216内の対応するキャッシュ・エントリ内のデータの、キャッシュ・コヒーレンス情報、実アドレス、および有効ビットが保管される。このアレイは、キャッシュ・アレイ216と同一のセット・アソシアティブ構造をも有する。たとえば、8ウェイ・セット・アソシアティブ・キャッシュでは、ディレクトリ・アレイ224も8ウェイを有する。ウェイは、セットとも称される。このディレクトリは、1対1の一致を有する。キャッシュ・アレイ216がアクセスされるたびに、ディレクトリ・アレイ224が同時にアクセスされて、キャッシュ・ヒットまたはキャッシュ・ミスが発生するかどうか、およびエントリが有効であるかどうかが判定される。
メインメモリ・ユニット230には、実行のためにプロセッサ・システム200によってフェッチするか取り出すことができる命令およびデータが含まれる。データがキャッシュ・アレイ216にフェッチされていない場合に、バス制御ユニット232は、バスのトラフィック・コントローラとして実行して、バスに接続されたデバイスからの要求および応答を調停する。この例では、実行ユニット210は、実行ユニット210内のL1データ・キャッシュ(図示せず)でミスが発生するときに、要求およびアドレスをメモリ・サブシステム214に送る。その結果、実行ユニット210は、L2ロード・アンド・ストア・キュー・コントロール222に、LRUアレイ218、ディレクトリ・アレイ224、およびキャッシュ・アレイ216にアクセスさせる。ディレクトリ・アレイ224内のデータを、L1キャッシュ内のキャッシュ・ミスによって持ち込むことができる。ディレクトリ・アレイ224は、L1キャッシュ内のミスで要求されたデータが、この例ではL2キャッシュとして働くキャッシュ・アレイ216内に置かれているかどうかを示すためにデータを返す。ディレクトリ・アレイ224から返されるデータには、ヒットまたはミスと、キャッシュ・エントリのウェイ内のデータが有効または無効であることと、共用、排他的、変更など、エントリのメモリ・コヒーレンス状態とが含まれる。LRUアレイ218は、LRUデータをLRUコントロール220に返す。LRUコントロール220は、セットのロッキング情報もRMT 226から取り出す。RMT226は、キャッシュ・アレイ216内の異なる要求メモリ・アドレス範囲に関する置換の管理ストラテジ(戦略)を提供する。
例示的な実施形態では、キャッシュ・システムは、「ロッキング」ストラテジを使用してロッキング・キャッシュを形成する。ロッキング・キャッシュとは、1以上のキャッシュ・セットが置換されないようにされ得るキャッシュである。これらのキャッシュ・セットは、「ロックされている」と考えられる。1つの例が、オペレーティング・システムがキャッシュ・アレイ216内の所与のセットをロックすることを選択する第1レベル割込みハンドラである。この情報を用いて、LRUコントロール220は、キャッシュ・アレイ216について最も更新されている、最も以前に使用されたキャッシュ・セットおよび最も最近に使用されたキャッシュ・セットを計算する。
データに関する要求が、ディレクトリ・アレイ224内のヒットをもたらす場合に、LRUコントロール220は、LRUアレイ218に保管されたLRUデータを更新する。この場合に、キャッシュ・アレイ216は、データを含み、他の情報を有しない。ディレクトリ・アレイ224は、アドレス、妥当性、およびキャッシュ・コヒーレンス状態など、キャッシュ・アレイ内の他のすべての情報を保持するアレイと見なすことができる。ディレクトリ・アレイおよびキャッシュ・アレイにアクセスするためのアドレスを伴うL1キャッシュ・ミス要求があるときに、そのアドレスが、ディレクトリ・アレイ224内の対応するエントリに保管されたアドレスと一致するならば、それは、L2キャッシュ・アレイ内にヒットが存在することを意味する。そうでなければ、ミスが発生する。LRUデータに対するこの更新は、L2キャッシュすなわちキャッシュ・アレイ216内の最も最近に使用されたセットおよび最も以前に使用されたセットである。LRUコントロール220は、LRUアレイ218に書き戻すことによって、本明細書で説明する2分木方式からLRUデータを更新する。キャッシュ・アレイ216は、ディレクトリ・アレイ224でのヒットに応答して、実行ユニット210にデータを返す。
ディレクトリ・アレイ224でのミスが生じると、実行ユニット210がL2ロード・アンド・ストア・キュー・コントロール222に要求を配置することとなる。要求は、L2ロード・アンド・ストア・キュー・コントロール222がホスト・バス228からデータを取り出すまで、このコンポーネント内に留まる。このミスに応答して、LRUコントロール220は、LRUアレイ218に書き戻すことによって、2分木方式からLRUデータを更新する。LRUデータのこの更新には、キャッシュ・アレイ216内の最も最近に使用されたキャッシュ・セットおよび最も以前に使用されたキャッシュ・セットが含まれる。ミス・データがホスト・バス228からL2キャッシュに返されたならば、LRUコントロール220は、このデータをL1キャッシュおよび実行ユニット210に戻して転送する。
ここで図3を参照すると、例示的実施形態によるキャッシュの管理に使用されるコンポーネントを示す図が示されている。この例では、これらのコンポーネントに、キャッシュ・アレイ300、ディレクトリ・アレイ302、LRUアレイ304、および擬似LRU(p−LRU)コントロール306が含まれる。キャッシュ・アレイ300は、図2のキャッシュ・アレイ216に類似する。ディレクトリ・アレイ302は、図2のディレクトリ・アレイ224として実施することができる。LRUアレイ304は、図2のLRUアレイ218として実施することができる。p−LRUコントロール306は、図2のLRUコントロール220またはその一部として実施することができる。
図3には、p−LRUコントロール306が、キャッシュ・アレイ300、ディレクトリ・アレイ302、およびLRUアレイ304とどのように相互作用するかが示されている。p−LRUコントロール306が、アドレスと一緒にロード/ストア要求を実行ユニットまたはL2ロード・アンド・ストア・キュー(図示せず)から受け取るときに、必ず、p−LRUコントロール306は、LRUアレイ304内のデータを検査する。具体的に言うと、p−LRUコントロール306は、LRUアレイ304からLRUビットを取り出す。同一の個数のエントリが、L2キャッシュ・アレイ内、ディレクトリ・アレイ302内、およびLRUアレイ304内に存在する。L1キャッシュ・ミス要求が、p−LRUコントロール306まで送られるときに、この要求には、アドレスも含まれる。p−LRUコントロール306は、3つのすべてのアレイすなわち、キャッシュ・アレイ300、ディレクトリ・アレイ302、およびLRUアレイ304でのルック・アップにこのアドレスを使用する。ディレクトリ・アレイでのヒットは、L2キャッシュ・アレイ内の対応するエントリに、キャッシュ・データを返させる。LRUアレイ304内の対応するエントリは、更新および置換のためにp−LRUコントロール306にLRUビットを返す。ディレクトリ・アレイ302内でミスが発生する場合には、キャッシュ・アレイ300内の対応するL2キャッシュ・アレイ・エントリからのデータは、無視される。対応するLRUアレイ・エントリからのLRUデータは、ミス・データが返された時の置換に使用される。
対応するLRUエントリ内の全ビットが、置換を計算するために使用される。p−LRUコントロール306は、これらのビットを検査して、キャッシュ・ミスの場合の置換のために、キャッシュ・アレイ300内で最も以前に使用されたセットを選択する。キャッシュ内のセットの選択は、後で図4を参照して説明する選択プロセスを使用して行われる。新しいLRUビットは、キャッシュ・ヒットまたはキャッシュ・ミスのいずれかについて、次の最も以前に使用されたセットをポイントするように更新される。次に、p−LRUコントロール306は、新しいLRUビットおよびそのアレイ書込イネーブルをLRUアレイ304に送り返す。
ここで図4に移ると、例示的実施形態による2分木を示す図が示されている。2分木またはルート木400には、ノード402〜414が含まれる。2分木400は、図3のLRUアレイ304など、LRUアレイ内で実施できる2分木の絵図表現である。この木は、これらの例では、キャッシュ内のどのセットを置換しなければならないかを判定するために使用される。ノード402は、基底ノードであり、ビット0に対応し、ノード404は、ビット1に対応し、ノード406は、ビット2に対応し、ノード408は、ビット3に対応し、ノード410は、ビット4に対応し、ノード412は、ビット5に対応し、ノード414は、ビット6に対応する。
末端のノードであるノード408〜414は、これらの例ではセットA〜Hをポイントする。もちろん、特定の実施形態に応じて、異なる個数のセットを実施することができる。ノード402のビット0が、0と等しくなるようにセットされている場合には、このプロセスは、左側のノード404に進む。ノード402のビット0が、1と等しくなるようにセットされている場合には、このプロセスは、この木の右側のノード406に進む。2分木400内で表されるセットがアクセスされるときに、必ず、図3のp−LRUコントロール306などのp−LRUコントロールが、そのセットから離れてポイントするように、対応するLRUビットをセットする。
例示的な実施形態では、2分木400は、p−LRU内の2分木アルゴリズムによる使用のために実施される。キャッシュ内にロッキングが存在するときには、セットのアンバランスな置換が発生し得る。というのは、2分木400の片側が、2分木400内のセットがアプリケーションによる使用のためにロックされるときに、より多くのアクセスを有する可能性があるからである。2分木400は、2つの側を有する。一方の側すなわち左側は、ノード404、408、および410を含み、他方の側すなわち右側は、ノード406、412、および414を含み、左側に対する反対側である。重い側は、2分木のうちで、ロックされたより多くのセットを有した側である。
現在の擬似LRUシステムは、図3のキャッシュ・アレイ300などのキャッシュを、アンバランスな組合せに分割する。たとえば、8ウェイ・アソシアティブ・キャッシュが、5ウェイと3ウェイまたは6ウェイと2ウェイに分割される場合がある。たとえば、セットA、B、C、D、およびEが、プログラムXによる使用のためにロックされ、セットF、G、およびHが、プログラムYによる使用のためにロックされる。プログラムXは、セットA、B、C、D、およびEだけを置換できるので、LRUビット(0,1,3,4)だけが、置換のためにp−LRUによって更新され得る。LRUビット(2,5,6)は、無視される。その結果、セットEは、この例では1つおきのキャッシュ・ミスについて置換のために選択される。キャッシュ・ミスが発生する場合に、セットDが選択される。P−LRUは、セットDにつながるビットを反対の値に反転し、ビット0が論理1になることをもたらす。
この例に存在するロッキングのゆえに、ビット0が論理1であるときには、p−LRUによって、セットEだけが置換のために選択される。次のミスの時には、p−LRU制御ビット0は、論理0に戻ってセットされ、セットBが選択される。次のミスは、ビット0を論理1に変化させ、もう一度セットEが選択されることをもたらす。ミスが発生するときに、p−LRUコントロールは、ビット0が論理0と等しくなるようにセットされている側の異なるセットを選択するが、ビット0が論理1と等しくなるようにセットされているときには、p−LRUコントロールは、必ずセットEを選択する。
同一の合同クラスへの10回の連続するキャッシュ・ミスについて、各セットは、完全なLRUでは2回だけ置換のために選択されなければならない。この例では、p−LRUは、セットEを5回選択する。したがって、完全なLRU性能の約40%だけが、連続するキャッシュ・ミスの場合に達成される。このワースト・ケースは、2分木の左側または右側のいずれかの4つのセットが予約されるかロックされ、2分木の反対側で1つのセットだけが予約されるかロックされる、すべての事例にあてはまる可能性がある。
例示的実施形態は、仮想カウンタ416を使用することによって、セットのロッキングが存在するキャッシュ内のセットのこのアンバランスな置換を減らす。仮想カウンタ416は、これらの例では図3のLRUアレイ304内に置かれる。これらの例では、仮想カウンタ416は、図3のLRUアレイ304内のエントリごとにビット0、1、および4を使用することによって形成される。このカウンタは、通常のカウンタと同一の形ではカウントしない仮想カウンタである。たとえば、LRUアレイの各エントリのビット0は、ビット0、1、4=「011」でない限り、「1」に変化する。仮想カウンタ416は、ノード402のビット0が同一の合同クラスへのすべてのキャッシュ・アクセスで更新されないことを強制するために使用される。これらの例では、合同クラスは、キャッシュ・アレイのエントリまたは行である。
さらに、アドレスの同一のより低いセットを有するデータについて、同一のキャッシュ・エントリにマッピングされる。8ウェイ・セット・アソシアティブ・キャッシュでは、同一キャッシュ・エントリ内に8つの異なるデータ・ストアを設けることができる。これらの例では、キャッシュ・アクセスは、あるセットのキャッシュ・ヒットまたは置換が発生する場合に発生する。
これらの例示的な例では、ノード402のビット0は、軽い側よりも重い側へのより多くのアクセスが発生したことを仮想カウンタ416が示すときに、更新される。具体的に言うと、この例では、仮想カウンタ416は、重い側で4つのヒットが発生した後に、ノード402のビット0を論理1に変更する。図示の例では、4つのセットが、LRUビット0の片側でロックされ、1つのセットが、反対側でロックされている。LRUビット1、3、および4など、残りのビットは、普通のLRU方式と同一の形で切り替えられる。これらの例示的な例では、ビット0だけが、仮想カウンタによって実施される。
図示の実施形態は、追加LRUビットを追加せずに、この擬似LRUシステムの性能を改善する。これらの例示的な例では、仮想カウンタ416によって示されているように、既存のビットが仮想カウンタとして使用される。2分木400に使用される仮想カウンタは、これらの例でp−LRUコントロールがLRUビット0の重い側を4回選択した後に、p−LRUコントロール内のロジックが、LRUビット0のビット・サイズを選択することを保証する。この例では、ノード402内のLRUビット0、ノード404内のビット1、およびビット4を有する仮想カウンタ416が「011」と等しくなるようにセットされているときに、p−LRUは、ノード402内のLRUビット0を論理1に切り替えて、置換に関する次の最近に使用されたセットとしてセットEを選択する。その結果、これらの例では、p−LRUコントロールがノード402内のビット0を4回選択した後に、そのp−LRUコントロールは、セットA〜D内のデータの選択を繰り返すのではなく、次に最近に使用されたセット置換としてセットEを選択する。
次に図5に移ると、例示的実施形態によるキャッシュ・ミスの場合の式を示す図が示されている。セクション500および502の式は、図3のp−LRUコントロール306などのp−LRUコントロール内で実施できる式の例である。新しいLRUビットを計算する式が、セクション500に見られ、書込パルス式が、セクション502に見られる。セクション500の式は、キャッシュ・ミスの場合に新しいLRUビット0、1、3、および4を計算するためにp−LRUコントロールによって使用される式を示す。LRUビット1、3、および4の式は、普通のp−LRUコントロールによって使用されるものと同一である。
キャッシュ・ミスまたはキャッシュ・ヒットが発生するたびに、LRUデータが、置換について計算するために使用される。このデータは、同一キャッシュ・エントリへの次のアクセスのために更新するためにも必要である。これらの式は、更新されたLRUビットがp−LRUコントロールによってどのように生成されるかを示す。LRUビット0について、p−LRUコントロールは、古いLRUビット0、1、および4の値=「011」のときに限って1に変更される。書込パルス式は、キャッシュ・アレイへのアクセスが発生するのでLRUアレイを更新する必要が存在するときに、必ず使用される。
セクション502の書込パルス式は、更新される必要があるLRUビットだけがLRUアレイに書き戻されるようにし、電力を節約するために使用される。更新される必要がないLRUビットについて、これらのLRUビットは、LRUアレイに書き戻されない。書込パルス式は、L2キャッシュへのアクセスが発生するときに、必ず、更新されるLRUごとに電力トークンを生成する。これらのトークンは、どのビットをp−LRUコントロールによってLRUアレイに書き戻さなければならないかを判定するために使用される。したがって、L2キャッシュへのアクセスが発生しないときには、LRUアレイを更新する必要は存在しない。
ここで図6に移ると、例示的実施形態によるキャッシュ・ヒットの場合の式を示す図が示されている。セクション600および602の式は、LRUビットを実施する際に使用される式の例である。これらの式は、図3のp−LRUコントロール306などのLRUコントロール内で実施することができる。新しいLRUビットを計算する式が、セクション600に見られ、書込パルス式が、セクション602に見られる。図6のセクション600の式は、キャッシュ・ヒットの場合のp−LRUコントロールによる新しいLRUビット0、1、3、および4の計算の式を示す。
たとえば、LRU_bit0には、「0」または「1」のいずれかである、LRUビット0の値が含まれる。LRUビット1、3、および4の式は、普通のp−LRUコントロールによって使用されるものと同一である。その結果、LRUビットが何であるかにかかわりなく、セットA、B、またはCでキャッシュ・ヒットがあるときには必ず、p−LRUコントロールLRUビット1、3、および4が、更新される。LRUビット0は、セットDがヒットであり、かつ、LRUビット0、1、および4が「011」と等しいときに限って更新される。セクション602の書込パルス式は、キャッシュ・アレイへのアクセスが発生するのでLRUアレイを更新する必要が存在するときに、必ず使用される。たとえば、LRU0_WR_ENは、LRU_bit0の電力トークンである。
ここで図7に移ると、例示的実施形態によるLRUビットの定義を示す図が示されている。この例では、テーブル700は、異なるセット名に関するLRUアレイ内のLRUビットを示す。これらのセット名は、この例では、図4の2分木400からのセットA〜Hに対応する。この例では、エントリ702〜716が、それぞれセットA〜Hに対応する。これらのエントリ内のLRUビットの値は、図4の2分木400内で特定のセットに達するために必要な値に対応する。
ここで図8に移ると、例示的実施形態による、図5および6で説明した式に基づくLRUビットに対する更新を示す図が示されている。テーブル800では、エントリ802〜810に、それぞれセットB、C、A、D、およびEの更新されたLRUビットが含まれる。これらのビットは、図3のLRUアレイ304に見られるビットの例である。p−LRUコントロールは、これらの例ではLRUビット0、ビット1、およびビット4を用いる仮想カウンタを使用してこれらの更新を行う。この形で、実際のLRUの実施態様に関して高められた性能が達成される。この高められた性能は、通常はチップ上の追加スペースを必要とするはずである。
キャッシュ・ヒットの場合に、p−LRUコントロールは、キャッシュ・ヒットがセットDに存在し、セットDが最も以前に使用されたセットであるときに限ってLRUビット0に1をセットする。この例では、セットDは、図4で説明した例を参照しなおすと、この2分木の重い側にある。その例から、セットA、B、C、D、およびEは、プログラムXによる使用のためにロックされ、セットF、G、およびHは、プログラムYによる使用のためにロックされている。より軽い側は、2分木の、特定のプログラムのためにロックされているより少数のセットを有する側である。p−LRUコントロールが、論理1と等しくなるようにLRUビット0をセットしたならば、このビットは、より軽い側のセットが置換のために選択されるまで、1と等しいままになる。
ここで図9に移ると、例示的実施形態によるセットを置換するための仮想カウンタの使用を示すテーブルが示されている。この例では、テーブル900は、LRUビット0、ビット1、およびビット4を用いる仮想カウンタの使用を示す。この例では、エントリ902〜914が存在する。各エントリには、アクション、現在のLRUビット、置換されるセット、および更新されたLRUビットが含まれる。p−LRUコントロールは、仮想カウンタを使用してLRUビットを更新する。この特定の例からわかるように、p−LRUコントロールは、現在使用されているプロセスについて発生するはずの4回ではなく、2回、置換のためにセットEを選択する。その結果、この仮想カウンタ方式は、通常の擬似LRU実施態様に対する50%の改善をもたらす。
ここで図10に移ると、例示的実施形態によるLRUアレイを管理するプロセスの流れ図が示されている。図10に示されたプロセスは、図3のp−LRUコントロール306などのLRUユニット内で実施することができる。具体的に言うと、このプロセスは、LRUコントロールがLRUアレイおよび置換管理テーブルとどのように相互作用するかのタイミングを示す。
このプロセスは、要求側からロード/ストア要求およびアドレスを受け取ること(ステップ1000)によって開始される。これらの例では、要求側は、たとえば、実行ユニットまたはL2ロード・アンド・ストア・キュー・コントロールのいずれかである。次に、このプロセスは、LRUアレイおよびRMTテーブルにアクセスする(ステップ1002)。このアクセスは、第1プロセッサ・サイクル中に発生する。LRUデータおよびRMTデータが、入手され、このプロセスは、LRUデータおよびRMTデータを検査して、キャッシュ・アレイ内の最も以前に使用されたセットを識別する(ステップ1004)。このステップは、第2プロセッサ・サイクル中に発生する。
その後、このプロセスは、LRUデータおよびRMTデータを使用して、次に最も以前に使用されたセットおよびそのセットに関連するLRUデータを識別する(ステップ1006)。この特定のステップは、これらの例ではプロセッサ内のサイクル3で発生する。次に、このプロセスは、新しいデータを用いてLRUアレイを更新し(ステップ1008)、このプロセスは、その後、終了する。新しいデータとは、すべてのキャッシュ・アクセス時に図5および図6に示された式によって生成される新しいLRUデータである。図5で生成されるデータは、キャッシュ・ミス用であり、図6で生成されるデータは、キャッシュ・ヒット用である。
ここで図11を参照すると、例示的実施形態による仮想カウンタを用いて2分木の側を選択するプロセスの流れ図が示されている。図11に示されたプロセスは、図3のp−LRUコントロール306などのコンポーネント内で実施することができる。
このプロセスは、セットがキャッシュ内でロックされているときのセットへのキャッシュ・アクセスに応答して開始される。これらの例でのアクセスは、セットでのキャッシュ・ヒットまたはセットの置換である。このプロセスは、セットへのキャッシュ・アクセスが発生するのを待つこと(ステップ1100)によって開始される。これらの例では、キャッシュ・アクセスは、実行されつつあるプログラムに関する。キャッシュ・アクセスが発生するときに、このプロセスは、2分木の基底ノードによってポイントされている側を識別する(ステップ1102)。基底ノードは、ビット0を含む、2分木内のノードである。その後、このプロセスは、仮想カウンタを増分する(ステップ1104)。仮想カウンタは、たとえば図4の仮想カウンタ416であり、図3のLRUアレイ304などのLRUアレイ内で維持される。このプロセスは、セットへのアクセスが発生するたびに、このカウンタを増分する。仮想カウンタが、識別された側のセットの個数と等しいかどうかに関する判定を行う(ステップ1106)。
仮想カウンタが、セットの個数と等しい場合に、このプロセスは、2分木の反対側をポイントするように、基底ノードの値を変更する(ステップ1108)。その後、このプロセスは、0と等しくなるように仮想カウンタをリセットし(ステップ1110)、終了する。ステップ1106で行われる判定に戻って、仮想カウンタがセットの個数と等しくない場合には、このプロセスは終了する。
例示的な実施形態は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態、またはハードウェア要素とソフトウェア要素の両方を含む実施形態の形をとることができる。この例示的実施形態は、ソフトウェアで実施され、このソフトウェアは、ファームウェア、常駐ソフトウェア、マイクロコードなどを含むが、これらに限定はされない。
さらに、例示的な実施形態は、コンピュータまたは任意の命令実行システムによってまたはこれらとともに使用されるプログラム・コードを供給するコンピュータ使用可能媒体またはコンピュータ可読媒体からアクセス可能なコンピュータ・プログラム製品の形をとることができる。この説明において、コンピュータ使用可能媒体またはコンピュータ可読媒体は、命令実行システム、命令実行装置、または命令実行デバイスによってまたはこれらとともに使用されるプログラムを含み、保管し、通信し、伝搬し、または転送することができるすべての有形の装置とすることができる。
媒体は、電子の、磁気の、光の、電磁気の、赤外線の、または半導体のシステム(または装置もしくはデバイス)、あるいは伝搬媒体とすることができる。コンピュータ可読媒体の例に、半導体メモリまたはソリッド・ステート・メモリ、磁気テープ、取外し可能コンピュータ・ディスケット、ランダム・アクセス・メモリ(RAM)、読取専用メモリ(ROM)、磁気ディスク、および光ディスクが含まれる。光ディスクの現在の例には、コンパクト・ディスク読取専用メモリ(CD−ROM)、書き換え可能なコンパクト・ディスク(CD−R/W)、およびDVDが含まれる。
プログラム・コードの保管および/または実行に適切なデータ処理システムには、システム・バスを介してメモリ要素に直接にまたは間接に結合された少なくとも1つのプロセッサが含まれる。メモリ要素には、プログラム・コードの実際の実行中に使用されるローカル・メモリと、大容量記憶装置と、実行中にコードを大容量記憶装置から取り出さなければならない回数を減らすために少なくとも一部のプログラム・コードの一時的保管を提供するキャッシュ・メモリとを含めることができる。
入出力(I/O)デバイス(キーボード、ディスプレイ、ポインティング・デバイスなどを含むがこれに限定されない)を、直接にまたはI/Oコントローラを介してのいずれかでこのシステムに結合することができる。
データ処理システムが私有ネットワークまたは公衆ネットワークを介して他のデータ処理システム、リモート・プリンタ、またはストレージ・デバイスに結合されることを可能にするために、ネットワーク・アダプタをこのシステムに結合することもできる。現在使用可能なタイプのネットワーク・アダプタのごく一部の例として、モデム、ケーブル・モデム、およびイーサネット(登録商標)・カードを挙げることができる。
例示的実施形態の説明は、例示および説明のために提示されたものであり、網羅的であること、開示される形態での例示的実施形態に限定されることは意図されていない。多数の修正形態および変形形態が、当業者に明白であろう。実施形態は、例示的実施形態の原理、実用的応用例を最もよく説明するため、および企図される特定の使用に適するさまざまな変更を伴うさまざまな実施形態のために例示的実施形態を当業者が理解できるようにするために選択され、説明された。
例示的実施形態を実施できるデータ処理システムを示すブロック図である。 例示的実施形態によるプロセッサ・システムを示す図である。 例示的実施形態によるキャッシュの管理に使用されるコンポーネントを示す図である。 例示的実施形態による2分木を示す図である。 例示的実施形態によるキャッシュ・ミスの場合の式を示す図である。 例示的実施形態によるキャッシュ・ヒットの場合の式を示す図である。 例示的実施形態によるLRUビットの定義を示す図である。 例示的実施形態による、図5および6で説明した式に基づくLRUビットに対する更新を示す図である。 例示的実施形態によるセットを置換するための仮想カウンタの使用を示すテーブルである。 例示的実施形態によるLRUアレイを管理するプロセスを示す流れ図である。 例示的実施形態による仮想カウンタを用いて2分木の側を選択するプロセスを示す流れ図である。
符号の説明
100 データ処理システム
102 ノース・ブリッジおよびメモリ・コントローラ・ハブ
104 サウス・ブリッジおよび入出力(I/O)コントローラ・ハブ
106 プロセッサ・ユニット
108 メインメモリ
110 グラフィックス・プロセッサ
112 ローカル・エリア・ネットワーク(LAN)アダプタ
116 オーディオ・アダプタ
120 キーボードおよびマウス・アダプタ
122 モデム
124 読取専用メモリ(ROM)
126 ハード・ディスク・ドライブ(HDD)
130 CD−ROMドライブ
132 USBポートその他の通信ポート
134 PCI/PCIeデバイス
136 スーパーI/O(SIO)デバイス
138 バス
140 バス
200 プロセッサ・システム
202 フェッチ・ユニット
204 デコード・ユニット
206 発行ユニット
208 分岐ユニット
210 実行ユニット
212 完了ユニット
214 メモリ・サブシステム
216 キャッシュ・アレイ
218 LRUアレイ
220 LRUコントロール
222 L2ロード・アンド・ストア・キュー・コントロール
224 ディレクトリ・アレイ
226 置換管理テーブル(RMT)
228 ホスト・バス
230 メインメモリ・ユニット
232 バス制御ユニット
234 さらなるプロセッサおよび外部デバイス
300 キャッシュ・アレイ
302 ディレクトリ・アレイ
304 LRUアレイ
306 擬似LRU(p−LRU)コントロール
400 2分木
402 ノード
404 ノード
406 ノード
408 ノード
410 ノード
412 ノード
414 ノード
416 仮想カウンタ
500 セクション
502 セクション
600 セクション
602 セクション
700 テーブル
702 エントリ
704 エントリ
706 エントリ
708 エントリ
710 エントリ
712 エントリ
714 エントリ
716 エントリ
800 テーブル
802 エントリ
804 エントリ
806 エントリ
808 エントリ
810 エントリ
900 テーブル
902 エントリ
904 エントリ
906 エントリ
908 エントリ
910 エントリ
912 エントリ
914 エントリ
1000 要求側からロード/ストア要求およびアドレスを受け取るステップ
1002 LRUアレイおよびRMTテーブルにアクセスするステップ
1004 LRUデータおよびRMTデータを検査するステップ
1006 新しいLRUデータを識別するステップ
1008 新しいデータを用いてLRUを更新するステップ
1100 キャッシュ・アクセスを待つステップ
1102 基底ノードによってポイントされている側を識別するステップ
1104 仮想カウンタを増分するステップ
1106 仮想カウンタがセットの個数と等しいかどうかを判定するステップ
1108 反対側をポイントするように基底ノードの値を変更するステップ
1110 仮想カウンタをリセットするステップ

Claims (11)

  1. ロックされたキャッシュ内のセットの置換を管理するための方法であって、
    プログラムによるキャッシュ・アクセスに応答して、基底ノードによってポイントされる2分木の側を識別するステップと、
    前記識別された側へのアクセスの回数が、前記識別された側の前記プログラムに関連するセットの個数と等しいかどうかを判定するステップと、
    前記識別された側へのアクセスの回数が、前記識別された側の前記プログラムに関連するセットの前記個数と等しい場合に、前記2分木の反対側をポイントするように前記基底ノードを変更するステップと、
    を含む、方法。
  2. 前記基底ノードの値を使用して、LRUアレイを更新するステップ
    をさらに含む、請求項1に記載の方法。
  3. 仮想カウンタが、前記識別された側へのアクセスの回数をトラッキングする、請求項1に記載の方法。
  4. 前記アクセスが、キャッシュ・ヒットまたは前記ロックされたキャッシュ内のセットの置換である、請求項1に記載の方法。
  5. 前記キャッシュは、前記2分木がアンバランスになるようにロックされる、請求項1に記載の方法。
  6. 前記キャッシュが、8つのセットを有する、請求項1に記載の方法。
  7. 前記識別ステップ、前記判定ステップ、および前記変更ステップが、LRUコントロールによって実行される、請求項1に記載の方法。
  8. ロックされたキャッシュ内のセットを管理するためのコンピュータ・プログラムであって、
    プログラムによるキャッシュ・アクセスに応答して、基底ノードによってポイントされる2分木の側を識別するステップと、
    前記識別された側へのアクセスの回数が、前記識別された側の前記プログラムに関連するセットの個数と等しいかどうかを判定するステップと、
    前記識別された側へのアクセスの前記回数が、前記識別された側の前記プログラムに関連するセットの前記個数と等しい場合に、前記2分木の反対側をポイントするように前記基底ノードを変更するステップと、
    をコンピュータ・システムに実行させる、コンピュータ・プログラム。
  9. データのセットが保管されるキャッシュ・アレイであって、前記キャッシュが、ロックされたキャッシュである、キャッシュ・アレイと、
    2分木を含む、LRUアレイと、
    プログラムによるキャッシュ・アクセスに応答して、基底ノードによってポイントされる前記2分木の側を識別し、前記識別された側へのアクセスの回数が、前記識別された側の前記プログラムに関連するセットの個数と等しいかどうかを判定し、前記識別された側へのアクセスの前記回数が、前記識別された側の前記プログラムに関連するセットの前記個数と等しい場合に、前記2分木の反対側をポイントするように前記基底ノードを変更する、制御ユニットと、
    を備える、キャッシング・システム。
  10. 実行ユニットと、
    前記実行ユニットに結合されたメモリ・サブシステムを備えるプロセッサであって、前記メモリ・サブシステムが、
    キャッシュ・アレイと、
    前記実行ユニットによる前記キャッシュ・アレイのキャッシュ・アクセスに応答して、基底ノードによってポイントされる2分木の側を識別し、前記識別された側へのアクセスの回数が、前記識別された側のプログラムに関連するセットの個数と等しいかどうかを判定し、前記識別された側へのアクセスの前記回数が、前記識別された側のプログラムに関連するセットの前記個数と等しい場合に、前記2分木の反対側をポイントするように前記基底ノードを変更する、前記キャッシュ・アレイに結合されたコントローラと、
    を備える、プロセッサ。
  11. 前記メモリ・サブシステムが、
    前記実行ユニットから受け取られる要求に応答して前記キャッシュ・アレイにアクセスする、前記キャッシュ・アレイに結合されたロード・アンド・ストア・キュー・コントロール
    をさらに含む、請求項10に記載のプロセッサ。
JP2007099120A 2006-04-25 2007-04-05 ロックされたキャッシュ内のセットの置換を管理するための方法、コンピュータ・プログラム、キャッシング・システムおよびプロセッサ Expired - Fee Related JP5090047B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/380140 2006-04-25
US11/380,140 US7516275B2 (en) 2006-04-25 2006-04-25 Pseudo-LRU virtual counter for a locking cache

Publications (2)

Publication Number Publication Date
JP2007293839A true JP2007293839A (ja) 2007-11-08
JP5090047B2 JP5090047B2 (ja) 2012-12-05

Family

ID=38620810

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007099120A Expired - Fee Related JP5090047B2 (ja) 2006-04-25 2007-04-05 ロックされたキャッシュ内のセットの置換を管理するための方法、コンピュータ・プログラム、キャッシング・システムおよびプロセッサ

Country Status (4)

Country Link
US (1) US7516275B2 (ja)
JP (1) JP5090047B2 (ja)
CN (1) CN100573477C (ja)
TW (1) TW200817897A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010538390A (ja) * 2007-09-04 2010-12-09 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド プロセッサの非常にアソシエティビティの高いキャッシュメモリ用のセカンドチャンス置換機構
JP2016018563A (ja) * 2014-07-08 2016-02-01 エイアールエム リミテッド 調停兼多重化回路
CN110704541A (zh) * 2019-10-15 2020-01-17 浪潮云信息技术有限公司 一种Redis集群多数据中心高可用的分布式方法及架构

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101107599B (zh) * 2005-03-22 2011-09-21 松下电器产业株式会社 高速缓冲存储器控制方法和高速缓冲存储器控制装置
US7512739B2 (en) * 2006-07-05 2009-03-31 International Business Machines Corporation Updating a node-based cache LRU tree
US8296320B1 (en) * 2007-04-30 2012-10-23 Network Appliance, Inc. Method and system for storing clients' access permissions in a cache
US8566529B2 (en) * 2008-02-13 2013-10-22 International Business Machines Corporation Method, system and computer program product for generalized LRU in cache and memory performance analysis and modeling
US8195881B2 (en) * 2008-02-26 2012-06-05 International Business Machines Corporation System, method and processor for accessing data after a translation lookaside buffer miss
US8660234B2 (en) 2008-07-31 2014-02-25 International Business Machines Corporation RAM based implementation for scalable, reliable high speed event counters
US8140767B2 (en) * 2009-06-04 2012-03-20 International Business Machines Corporation Cache management through delayed writeback
US8386717B1 (en) * 2010-09-08 2013-02-26 Symantec Corporation Method and apparatus to free up cache memory space with a pseudo least recently used scheme
US20130339620A1 (en) * 2012-06-15 2013-12-19 Futurewei Technololgies, Inc. Providing Cache Replacement Notice Using a Cache Miss Request
US9164928B2 (en) * 2013-05-22 2015-10-20 Globalfoundries U.S. 2 Llc Validation of cache locking using instruction fetch and execution
CN104850508B (zh) * 2015-04-09 2018-02-09 深圳大学 基于数据局部性的访存方法
US11106599B2 (en) * 2016-09-30 2021-08-31 Intel Corporation System and method for replacement in associative memories using weighted PLRU trees
US10528482B2 (en) 2018-06-04 2020-01-07 International Business Machines Corporation Cache management
US11360704B2 (en) * 2018-12-21 2022-06-14 Micron Technology, Inc. Multiplexed signal development in a memory device
CN112948283B (zh) * 2021-01-25 2024-03-08 中国人民解放军军事科学院国防科技创新研究院 一种Cache替换方法
US11893254B2 (en) * 2021-06-04 2024-02-06 International Business Machines Corporation Dynamic permission management of storage blocks

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06124238A (ja) * 1992-10-13 1994-05-06 Toshiba Corp 書換え対象エントリ選択方法および装置
JPH1196073A (ja) * 1997-06-30 1999-04-09 Hyundai Electron Ind Co Ltd 高性能マルチポート支援lruメモリ
JP2003248625A (ja) * 2002-02-25 2003-09-05 Seiko Epson Corp キャッシュ回路、情報処理装置及び電子機器
US20050055506A1 (en) * 2003-09-04 2005-03-10 International Business Machines Corporation Pseudo-LRU for a locking cache
WO2005029336A1 (ja) * 2003-09-19 2005-03-31 Matsushita Electric Industrial Co., Ltd. キャッシュメモリおよびキャッシュメモリ制御方法
WO2005048112A1 (ja) * 2003-11-12 2005-05-26 Matsushita Electric Industrial Co., Ltd. キャッシュメモリおよびその制御方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5594886A (en) * 1994-10-23 1997-01-14 Lsi Logic Corporation Pseudo-LRU cache memory replacement method and apparatus utilizing nodes
US20030159003A1 (en) * 2001-10-23 2003-08-21 Ip-First, Llc Associative cache memory with replacement way information integrated into directory
US7020748B2 (en) * 2003-01-21 2006-03-28 Sun Microsystems, Inc. Cache replacement policy to mitigate pollution in multicore processors
US7558921B2 (en) * 2005-08-16 2009-07-07 International Business Machines Corporation Method for data set replacement in 4-way or greater locking cache
US7716423B2 (en) * 2006-02-07 2010-05-11 International Business Machines Corporation Pseudo LRU algorithm for hint-locking during software and hardware address translation cache miss handling modes

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06124238A (ja) * 1992-10-13 1994-05-06 Toshiba Corp 書換え対象エントリ選択方法および装置
JPH1196073A (ja) * 1997-06-30 1999-04-09 Hyundai Electron Ind Co Ltd 高性能マルチポート支援lruメモリ
JP2003248625A (ja) * 2002-02-25 2003-09-05 Seiko Epson Corp キャッシュ回路、情報処理装置及び電子機器
US20050055506A1 (en) * 2003-09-04 2005-03-10 International Business Machines Corporation Pseudo-LRU for a locking cache
WO2005029336A1 (ja) * 2003-09-19 2005-03-31 Matsushita Electric Industrial Co., Ltd. キャッシュメモリおよびキャッシュメモリ制御方法
WO2005048112A1 (ja) * 2003-11-12 2005-05-26 Matsushita Electric Industrial Co., Ltd. キャッシュメモリおよびその制御方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010538390A (ja) * 2007-09-04 2010-12-09 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド プロセッサの非常にアソシエティビティの高いキャッシュメモリ用のセカンドチャンス置換機構
JP2016018563A (ja) * 2014-07-08 2016-02-01 エイアールエム リミテッド 調停兼多重化回路
CN110704541A (zh) * 2019-10-15 2020-01-17 浪潮云信息技术有限公司 一种Redis集群多数据中心高可用的分布式方法及架构

Also Published As

Publication number Publication date
CN101063957A (zh) 2007-10-31
US7516275B2 (en) 2009-04-07
CN100573477C (zh) 2009-12-23
US20070250667A1 (en) 2007-10-25
TW200817897A (en) 2008-04-16
JP5090047B2 (ja) 2012-12-05

Similar Documents

Publication Publication Date Title
JP5090047B2 (ja) ロックされたキャッシュ内のセットの置換を管理するための方法、コンピュータ・プログラム、キャッシング・システムおよびプロセッサ
US11789872B2 (en) Slot/sub-slot prefetch architecture for multiple memory requestors
US10896128B2 (en) Partitioning shared caches
US10430349B2 (en) Scaled set dueling for cache replacement policies
US9223710B2 (en) Read-write partitioning of cache memory
US20080086599A1 (en) Method to retain critical data in a cache in order to increase application performance
US8001330B2 (en) L2 cache controller with slice directory and unified cache structure
US7805574B2 (en) Method and cache system with soft I-MRU member protection scheme during make MRU allocation
US8352683B2 (en) Method and system to reduce the power consumption of a memory device
US9311239B2 (en) Power efficient level one data cache access with pre-validated tags
US20080086598A1 (en) System and method for establishing cache priority for critical data structures of an application
US20080065809A1 (en) Optimized software cache lookup for simd architectures
KR20060049710A (ko) 칩 멀티-프로세서의 공유 캐시를 분할하기 위한 장치 및방법
US10831675B2 (en) Adaptive tablewalk translation storage buffer predictor
JP2017503299A (ja) モードに応じてセットの1つ又は複数を選択的に選択するように動的に構成可能であるマルチモード・セット・アソシエイティブ・キャッシュ・メモリ
US10437732B2 (en) Multi-level cache with associativity collision compensation
CN112148641A (zh) 用于跟踪由cpu或设备进行的物理地址访问的系统和方法
KR100582340B1 (ko) 캐시 시스템, 캐시 관리 방법 및 컴퓨터 판독가능한 기록매체
US7325101B1 (en) Techniques for reducing off-chip cache memory accesses
US11822652B1 (en) Prime and probe attack mitigation
Gupta et al. A comparative study of cache optimization techniques and cache mapping techniques
WO2008043670A1 (en) Managing cache data
Islam et al. A unified approach to eliminate memory accesses early
Park et al. Aggressive superpage support with the shadow memory and the partial-subblock TLB
Kravtsov Methods of cache memory optimization for multimedia applications

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100122

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120515

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120808

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: 20120828

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: 20120912

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150921

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees