JP2009524137A - 上位レベル・キャッシュのエビクション候補を識別するための巡回スヌープ - Google Patents

上位レベル・キャッシュのエビクション候補を識別するための巡回スヌープ Download PDF

Info

Publication number
JP2009524137A
JP2009524137A JP2008550761A JP2008550761A JP2009524137A JP 2009524137 A JP2009524137 A JP 2009524137A JP 2008550761 A JP2008550761 A JP 2008550761A JP 2008550761 A JP2008550761 A JP 2008550761A JP 2009524137 A JP2009524137 A JP 2009524137A
Authority
JP
Japan
Prior art keywords
cache
level cache
lower level
line
directory
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
JP2008550761A
Other languages
English (en)
Other versions
JP4563486B2 (ja
JP2009524137A5 (ja
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.)
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 JP2009524137A publication Critical patent/JP2009524137A/ja
Publication of JP2009524137A5 publication Critical patent/JP2009524137A5/ja
Application granted granted Critical
Publication of JP4563486B2 publication Critical patent/JP4563486B2/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/128Replacement control using replacement algorithms adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel
    • 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/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels

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

【課題】 キャッシュ・ライン置換を改善することによって、コンピュータ・システムの性能を高める方法及び装置を提供する。
【解決手段】 上位レベル・キャッシュに保持されたキャッシュ・ラインのアドレス指定を順番に行い、それらのアドレスを用いて下位レベル・キャッシュのスヌープ読み出しを行う巡回スヌープ・シーケンサを有するコンピュータ・システムである。上位レベル・キャッシュに保持された特定のキャッシュ・ラインが下位レベル・キャッシュに保持されていない場合には、新しいキャッシュ・ラインが上位レベル・キャッシュにロードされなければならないときに、特定のキャッシュ・ラインが上位レベル・キャッシュ内のエビクション候補として識別される。
【選択図】 図5

Description

本発明は、一般に、マルチレベル・キャッシュに関する。より具体的には、本発明は、新しいキャッシュ・ラインが上位レベル・キャッシュにロードされなければならないときに、上位レベル・キャッシュにおけるエビクション候補である上位レベル・キャッシュ内のキャッシュ・ラインを識別することに関する。
今日のコンピュータ・システムは、典型的には、マルチレベル・キャッシュを用いる。例えば、極めて高速であるが相対的に小容量の第1レベル・キャッシュが、典型的には、プロセッサと同じ半導体チップ上に実装され、1回又は2回のプロセッサ・サイクルでデータをプロセッサに与える。第1レベル・キャッシュ(L1キャッシュ)は、通常、極めて高速ではあるがより大容量で遅いメモリほどはコンパクトでないスタティック・ランダム・アクセス・メモリ(SRAM)を用いて実装される。第1レベル・キャッシュはまた、制御、アドレス、及び信号の相互接続の長さを制限するために、相対的に小容量でなければならない。今日のコンピュータ・システムでは、プロセッサと同じ半導体チップ上に第2レベル・キャッシュ(L2キャッシュ)が実装されることも多い。第2レベル・キャッシュもまた、SRAMメモリを用いて構築されることが多い。第2レベル・キャッシュは、典型的には、物理的領域と格納されるデータ量とのいずれも第1レベル・キャッシュより大容量である。第2レベル・キャッシュは、典型的には、第1レベル・キャッシュよりアクセス(読み出し又は書き込み)が遅い。今日のコンピュータ・システムは、第2レベル・キャッシュよりさらに多くのデータを保持し、アクセスするのにさらに時間がかかる、第3レベル・キャッシュ(L3キャッシュ)も含む。多くの場合、第3レベル・キャッシュは、ダイナミック・ランダム・アクセス・メモリ(DRAM)を用いて実装されるが、SRAMメモリが第3レベル・キャッシュの設計に用いられることもある。
キャッシュは、キャッシュ・ラインと呼ばれるブロックでデータを格納する。例えば、種々のコンピュータ・システムにおいて、キャッシュ・ラインは、64バイト、128バイト、256バイト等とすることができる。キャッシュ・ラインは、キャッシュ・ラインのアドレス及び当該キャッシュに結合された置換論理に基づいて、キャッシュ内のキャッシュ・ライン位置に格納される。キャッシュに結合されたキャッシュ・ディレクトリは、キャッシュに格納されたキャッシュ・ラインごとに状態情報及びタグ情報を維持する。
プロセッサが特定のアドレスにおけるデータ片(a piece of data)を要求したときに、コンピュータ・システムは、そのデータが第1レベル・キャッシュに格納されているかどうかをチェックする。特定のアドレスは、データが第1レベル・キャッシュに格納されているかどうかを判断する第1レベル・キャッシュ・ディレクトリに提示される。データ片を含むキャッシュ・ラインが第1レベル・キャッシュに存在する場合には、データは、プロセッサによって用いられるように第1レベル・キャッシュからフェッチされ、これは、第1レベル・キャッシュにおけるキャッシュ・ヒットとして知られている。データ片を含むキャッシュ・ラインが第1レベル・キャッシュに保持されていない場合には、第1レベル・キャッシュによってキャッシュ・ミスが報告される。次に、第2レベル・キャッシュに要求が出される。第2レベル・キャッシュが特定のデータ片を保持する場合には、特定のデータ片を含むキャッシュ・ラインが、第2レベル・キャッシュからフェッチされ、第1レベル・キャッシュに格納される。多くの実装態様においては、特定のデータ片は、特定のデータ片を含むキャッシュ・ラインが第1レベル・キャッシュに書き込まれると同時にプロセッサが使用できるようになる。特定のデータ片が第2レベル・キャッシュに保持されていない場合には、第3レベル・キャッシュに要求が出される。特定のデータ片が第3レベル・キャッシュに保持されている場合には、特定のデータ片を含むキャッシュ・ラインが、第3レベル・キャッシュからフェッチされ、第2レベル・キャッシュ及び第1レベル・キャッシュに格納され、プロセッサが使用できるようになる。第3レベル・キャッシュにおいてキャッシュ・ミスが生じた場合には、さらなる要求が、第4レベル・キャッシュが存在すれば第4レベル・キャッシュに出されるか、又はメイン・メモリに出される。
下位レベル・キャッシュは、上位レベル・キャッシュより少ないデータを保持するため、上位レベル・キャッシュにおける多数のキャッシュ・ライン位置は、下位レベル・キャッシュのより少ないキャッシュ・ライン位置にマッピングされる。今日のコンピュータ・システムにおいて、キャッシュは、典型的には、連想性(associativity)を備えた設計になっている。連想性は、特定のキャッシュ・ラインがキャッシュ内の特定のセット(行)にマッピングされることを意味するが、キャッシュをサポートする置換論理は、そのセットにおける多数のクラス(キャッシュ・ライン位置)のいずれかに特定のキャッシュ・ラインを配置することができる。特定のセットにおける特定のクラスが、キャッシュ・ライン位置である。例えば、連想度4ウェイの第2レベル・キャッシュの場合には、置換論理が、特定のセットにマッピングされる特定のキャッシュ・ラインを4つのクラスのうちのいずれに格納するかを選択する。
キャッシュ・ラインが、上位レベル・キャッシュからキャッシュに書き込まれるときは、キャッシュ・ラインは、エビクトされなければならない(上位レベル・キャッシュに書き込まれるか、又は、キャッシュ・ライン内のデータが変更されていない場合には、単に上書きされる)。
連想性を備えたキャッシュにおいては、置換アルゴリズムが、セット内のどのキャッシュ・ラインが置換されるかを選択する。例えば、キャッシュが、連想度8ウェイである、すなわち1セット当たり8つのクラスを有する場合には、8つのうちの1つのキャッシュ・ラインをエビクトして、そのセットにマッピングされるアドレスを有する新しいキャッシュ・ラインのために場所を空けなければならない。
多数の置換アルゴリズムが、種々のコンピュータ・システムに実装されてきた。より最近用いられたキャッシュ・ラインが最近用いられていないキャッシュ・ラインと比べて再び必要とされる可能性が高いという考え方による最長時間未使用(LRU;Least Recently Used)アルゴリズムが、広く使用されてきた。LRUアルゴリズムの問題は、2つの理由のために、特定のキャッシュ・ラインが相対的に長い時間用いられていないように見える可能性があることである。第1の理由は、プロセッサが、特定のキャッシュ・ライン内のデータを必要としなくなり、別のキャッシュ・ラインをロードしてその特定のキャッシュ・ラインを上書きすることである。第2の理由は、プロセッサが、特定のキャッシュ・ライン内のデータを頻繁に用いて、上位レベル・キャッシュをしばらくの間更新しないことである。上位レベル・キャッシュにとって特定のキャッシュ・ラインがLRUアルゴリズムに基づいてエビクション候補であるように見えるが、第2の理由として説明されたように特定のキャッシュ・ライン内のデータが頻繁に用いられている場合には、エビクションには下位レベル・キャッシュからのエビクションも含まれることになるため、上位レベル・キャッシュが特定のキャッシュ・ラインをエビクトするときに非効率となる。特定のキャッシュ・ライン内のデータが頻繁に用いられているため、プロセッサは、単に再度キャッシュ・ラインを要求し、キャッシュ・ラインが上位レベル・キャッシュより上位のレベルから取得されるまで待つことが必要になる。
上述されたLRUの問題のため、マルチレベル・キャッシュを有する多くのコンピュータ・システムは、事実上、上位レベル・キャッシュが、上位レベル・キャッシュにおけるセットのうちのどのキャッシュ・ラインが好ましいエビクション候補であるかを知らず、エビクションのためのセットからランダムに1つのキャッシュ・ラインを選定するだけであることを許容する、上位レベル・キャッシュの擬似ランダム・エビクション・アルゴリズムを実装してきた。残念なことに、擬似ランダム・エビクション・アルゴリズムは、プロセッサによって頻繁に用いられているキャッシュ・ラインをエビクトして、エビクトされたキャッシュ・ラインが上位レベル・キャッシュより上位のレベルのメモリからフェッチされるまでプロセッサを待機させることも多い。
したがって、上位レベル・キャッシュにおける改善されたエビクション・スキームを提供する方法及び装置についての必要性が存在する。
本発明は、キャッシュ・ライン置換を改善することによって、コンピュータ・システムの性能を高める方法及び装置を提供する。
1つの実施形態においては、上位レベル・キャッシュ内のキャッシュ・ラインは、下位レベル・キャッシュに存在しないものとして識別される。下位レベル・キャッシュに存在しない上位レベル・キャッシュ内のキャッシュ・ラインは、上位レベル・キャッシュに格納される必要がないため、このようなキャッシュ・ラインは、エビクション候補としてマークされる。上位レベル・キャッシュが、多数のクラスを有するセットにおいてキャッシュ・ラインを置換しなければならないときには、エビクション候補としてマークされなかったキャッシュ・ラインの代わりに、エビクション候補としてマークされたキャッシュ・ラインが、優先的にエビクトされる。
本発明の1つの実施形態においては、上位レベル・キャッシュを有するメモリ・コントローラの巡回スヌープ・シーケンサは、上位レベル・キャッシュ・ディレクトリが使用されていないときに、上位レベル・キャッシュ・ディレクトリからディレクトリ・エントリを読み出す。巡回スヌープ・シーケンサは、上位レベル・キャッシュ・ディレクトリからの情報を用いて、プロセッサ・メモリ・バス及び下位レベル・キャッシュ・ディレクトリが使用されていないときに、下位レベル・キャッシュ・ディレクトリのスヌープ読み出しを行う。下位レベル・キャッシュ・ディレクトリが、特定のスヌープ読み出しについてキャッシュ・ミスを報告した場合には、巡回スヌープ・シーケンサは、上位レベル・キャッシュ・ディレクトリが使用されていないときに、対応するキャッシュ・ラインをエビクション候補として識別するために上位レベル・キャッシュ・ディレクトリ内の状態情報を更新する。スヌープ読み出しは、上位レベル・キャッシュに関連する巡回スヌープ・シーケンサから、上位レベル・キャッシュ内の特定のキャッシュ・ラインが下位レベル・キャッシュに存在するかどうかを判断することができる下位レベル・キャッシュ・ディレクトリに送信されるいずれかのコマンドであり、このコマンドは、下位レベル・キャッシュにおいてエビクションを起こさせるものではない。
メモリ・コントローラ内の巡回スヌープ・シーケンサは、上位レベル・キャッシュ・ディレクトリ、プロセッサ・メモリ・バス、及び下位レベル・キャッシュ・ディレクトリが使用されていない時間を利用して、上位レベル・キャッシュ・ディレクトリ内のエントリを循環し続け、キャッシュ・ラインのエビクション候補を探す。メモリ・コントローラ内の置換論理は、エビクション候補情報を用いて、幾つかの環境においては上位レベル・キャッシュにおいて依然として必要とされるキャッシュ・ラインの前に、上位レベル・キャッシュにおいては必要とされなくなったキャッシュ・ラインをエビクトする。
好ましい実施形態の以下の詳細な説明においては、本出願の一部を形成し、本発明を実施することができる特定の実施形態が例示の目的で示される、添付図面を参照する。他の実施形態を利用することができ、本発明の範囲から逸脱することなく構造的な変更を加えることができることを理解すべきである。
本発明は、上位レベル・キャッシュにおけるエビクション候補を決定するための方法及び装置を提供する。階層キャッシュ・システム(すなわち、上位レベル・キャッシュと下位レベル・キャッシュとを有するキャッシュ・システム)においては、下位レベル・キャッシュ内のすべてのキャッシュ・ラインは、上位レベル・キャッシュにも存在する。しかしながら、上位レベル・キャッシュ内の特定のキャッシュ・ラインが、下位レベル・キャッシュには存在しない場合がある。例えば、プロセッサが、下位レベル・キャッシュにロードされなければならない第1のキャッシュ・ラインにおける第1のデータを要求することがある。プロセッサは、第1のデータを読み出す。その後、プロセッサは、下位レベル・キャッシュにロードされなければならない第2のキャッシュ・ラインにおける第2のデータを要求することがある。第1のキャッシュ・ラインが変更されなかったので、第2のキャッシュ・ラインは、単に第1のキャッシュ・ラインに上書きされる。従来の方法及び装置は、第1のキャッシュ・ラインが下位レベル・キャッシュに存在しなくなったことを上位レベル・キャッシュに通知するものではない。
本発明の実施形態は、キャッシュ・ディレクトリ及びバスが使用されていない時間中に、上位レベル・キャッシュが、上位レベル・キャッシュのキャッシュ・ディレクトリ・エントリを用いる「スヌープ読み出し」を下位レベル・キャッシュに対して行うことを可能にする。スヌープ読み出しは、上位レベル・キャッシュに関連する巡回スヌープ・シーケンサから、上位レベル・キャッシュの特定のキャッシュ・ラインが下位レベル・キャッシュに存在するかどうかを判断することができる、下位レベル・キャッシュ・ディレクトリに送信されるいずれかのコマンドであり、このコマンドは、下位レベル・キャッシュにおいてキャッシュ・ラインのエビクションを起こさせるものではない。スヌープ読み出しによって下位レベル・キャッシュにおけるキャッシュ・ヒットが生じた場合には、上位レベル・キャッシュからキャッシュ・ディレクトリ・エントリによってアドレス指定されたキャッシュ・ラインは、下位レベル・キャッシュに依然として存在する。スヌープ読み出しによって下位レベル・キャッシュにおけるキャッシュ・ミスが生じた場合には、上位レベル・キャッシュからキャッシュ・ディレクトリ・エントリによってアドレス指定されたキャッシュ・ラインは、下位レベル・キャッシュには存在せず、上位レベル・キャッシュにおいてキャッシュ・ディレクトリ・エントリによってアドレス指定されたキャッシュ・ラインが、エビクション候補としてマークされる。エビクション候補としてマークされた上位レベル・キャッシュ内のセットにおけるキャッシュ・ラインは、エビクション候補としてマークされていない上位レベル・キャッシュ内のセットにおけるキャッシュ・ラインより先にエビクションのために選択される。幾つかのキャッシュは、「無効」状態を含む状態情報を用いる。無効状態を有するキャッシュ・ラインは、典型的には、エビクトされる第1のキャッシュ・ラインである。
ここで、図1を参照すれば、コンピュータ・システム100が、本発明の実施形態を説明するのに十分な詳細さで示されている。コンピュータ・システムは、ディスク・メモリ、ネットワーク・インタフェース、ユーザ・インタフェース等をさらに含むことが分かるであろう。
コンピュータ・システム100は、プロセッサ105A及び105Bとして示される1つ又は複数のプロセッサ105を含む。各々のプロセッサ105は、L2キャッシュ110と、関連するL2キャッシュ・ディレクトリと、置換論理109とをさらに含む。置換論理109は、新しいキャッシュ・ラインとの置換が要求されたときに、L2キャッシュ110のどのキャッシュ・ラインを置換する(エビクトする)かを選択する。プロセッサ105Aは、L2キャッシュ110Aと、L2キャッシュ・ディレクトリ111Aと、置換論理109Aとを含むように示されており、プロセッサ105Bは、L2キャッシュ110Bと、L2キャッシュ・ディレクトリ111Bと、置換論理109Bとを含むように示されている。多くのコンピュータ・システムにおいては、L2キャッシュが2つ以上のプロセッサによって共有されることが分かるであろう。プロセッサ105A及び105Bは、プロセッサ・メモリ・バス115A及びプロセッサ・メモリ・バス115Bによってメモリ・コントローラ130に結合されている。幾つかのプロセッサは、図示されるような別個のバス(115A、115B)の代わりに、共通バスを用いてメモリ・コントローラに結合されることが分かるであろう。プロセッサ・メモリ・バスは、まとめてプロセッサ・メモリ・バス115と呼ばれる。
メモリ・コントローラ130は、既存のコンピュータ・システムに用いられるものと同様のL3キャッシュ132及びL3キャッシュ・ディレクトリ136を含む。メモリ・コントローラ130は、巡回スヌープ・シーケンサ134をさらに含む。メモリ・コントローラ130内の置換論理133が、巡回スヌープ・シーケンサ134によってL3キャッシュ・ディレクトリ136に格納される情報を用いるキャッシュ・ライン置換方法を実装する。より詳細に後述されるように、巡回スヌープ・シーケンサ134は、リソース(L3キャッシュ・ディレクトリ136、メモリ・プロセッサ・バス115、及びL2キャッシュ・ディレクトリ111)がアイドル状態である(すなわち、アクセスされていない)時間を利用する。巡回スヌープ・シーケンサ134は、それらのリソースのこのようなアイドル時間を利用して、L3キャッシュ・ディレクトリ136内のアドレスを用いるスヌープ読み出しを行う。巡回スヌープ・シーケンサは、(キャッシュ・ラインのアドレスを用いて)キャッシュ・ラインについてのL3キャッシュ・ディレクトリ・エントリを循環して、L3キャッシュ132のどのキャッシュ・ラインがL2キャッシュ110A及び110Bに存在しないかを決定し、このようなキャッシュ・ラインのすべてをL3キャッシュ132におけるエビクション候補として記録する。
メモリ・コントローラ130は、バス116を介してメモリ150に結合される。コンピュータ・システム100のメモリ150は、コンピュータ・システム100のメイン・メモリである。コンピュータ・システム100の別の実施形態においては、メモリ150は、レベル4(L4)キャッシュとすることができる。
図2は、プロセッサ・メモリ・バス115を示す。プロセッサ105とメモリ・コントローラ130との間で通信するように実装される多くの構成が存在することが分かるであろう。プロセッサ・メモリ・バス115は、コマンド/ステータス116と、アドレス117と、データ118とを含むように示されている。コマンド/ステータス116は、コマンド(例えば、読み出し、書き込み)及びステータス(キャッシュ・ミス、キャッシュ・ヒット、及び、幾つかの実施形態においてはスヌープ読み出し)を転送するために用いられる。アドレス117は、アドレスを転送するために用いられる。例えば、プロセッサ105が特定のアドレスのデータを必要とし、そのデータがL2キャッシュ110には存在しないときは、特定のアドレスが、アドレス117によってメモリ・コントローラ130に伝送される。データは、データ118によって転送される。例えば、変更されたキャッシュ・ラインは、L2キャッシュ110からL3キャッシュ132に書き込まれる。キャッシュ・ラインは、プロセッサ105からの要求に応答して、L3キャッシュ132からL2キャッシュ110に送られる。多くの実装形態においては、情報は特定のプロセッサ・メモリ・バス115上に多重化されることが分かるであろう。例えば、データ118は8バイト幅であるがキャッシュ・ラインは64バイト幅である場合には、キャッシュ・ラインを転送するために8サイクルが必要である。同様に、幾つかのコンピュータ・システムにおいては、アドレス117は、データ118と同じ物理線を用いるが、多重化されている。
図3Aは、L3キャッシュ132をより詳細に示す。説明のために、L3キャッシュ132は8ウェイ・セット連想である、すなわち、セット(行)の各々が、クラス0から7まで(クラス0、クラス3、及びクラス7が矢印で示されている)の8つのクラスを含む。L3キャッシュ132は、矢印で示されたセット0、セット2、及びセットN−1のN個のセット(セット0からN−1まで)を有するように示されている。特定のキャッシュ・ラインは、キャッシュ・ラインのアドレスの一部を用いて、L3キャッシュ132の特定のセットにマッピングされる。メモリ・コントローラ130の置換論理133は、特定のキャッシュ・ラインがどのクラスに配置されるかを決定する。特定のキャッシュ・ラインは、特定のキャッシュ・ラインがキャッシュ132にロードされるたびに、8つのクラスのいずれかに配置することができる。キャッシュ・ラインについての幾つかのキャッシュ・ライン位置が図3Aに示されており、セット及び列によって参照される。例えば、キャッシュ・ライン位置132−00は、L3キャッシュ132のセット0、クラス0である。同様に、キャッシュ・ライン位置132−03は、L3キャッシュ132のセット0、クラス3である。キャッシュ・ライン132−07及び132−23は、同様の命名規則で示されている。L3キャッシュ132のキャッシュ・ラインは、図3Bに示されるL2キャッシュ110にマッピングされなければならない。L2キャッシュ110は、L3キャッシュ132より小さく、典型的には、L3キャッシュ132より少ない連想(すなわち、少ないクラス)で設計されている。説明のために、(図3Aにおいて矢印及び第1の網掛けパターンによって示される)L3キャッシュ132のサブセット132AはL2キャッシュ110のセット1にマッピングされ、(図3Aにおいて矢印及び第2の網掛けパターンによって示される)サブセット132BはL2キャッシュ110のセット3にマッピングされる。
このマッピングは単なる例示であり、上位レベル・キャッシュの特定のキャッシュ・ライン位置を下位レベル・キャッシュにマッピングする多くの方法が存在することが分かるであろう。例えば、図3Cは、マッピングの1つの例を示す。プロセッサ105が用いる32ビットのアドレスのようなアドレスは、キャッシュ・ラインのビットを識別するために用いられる部分を有する。キャッシュ・ラインが128バイトを含む場合には、図3Cにおける「キャッシュ・ライン内のバイト」という名称の部分は、7ビットを有することになる。「L2インデックス」という名称の部分は、キャッシュ・ラインがL2キャッシュ110のどのセットにマッピングされることになるかを決定するのに必要なだけのビットを含む。例えば、L2キャッシュ110が1024のセットを有する場合には、図3CにおけるL2インデックスは、10ビットを必要とする。「L2タグ」という名称の部分は、図5A−5Cを参照して説明されるように、L2キャッシュ・ディレクトリのタグ・フィールドに格納されなければならないアドレスのタグ部分である。L3キャッシュ132は、L2キャッシュ110より大きい、すなわち、より多くのキャッシュ・ラインを保持する。L2キャッシュ110内に保持されたキャッシュ・ラインは、L3キャッシュ132内に保持されたキャッシュ・ラインと同じバイト数であるので、アドレスの「キャッシュ・ライン内のバイト」部分は、L3キャッシュ132内のキャッシュ・ラインについてのアドレスの同じ部分である。図3Cに示される「L3インデックス」という名称のアドレス部分は、「L2インデックス」という名称のアドレス部分より多くのビットを有する。例えば、L3キャッシュ132が4096セットを有する場合には、図3Cに示されるL3インデックスは、12ビットを必要とする。図3に示されるアドレス部分「L3タグ」は、後述されるように、L3キャッシュ・ディレクトリ内のタグ・エントリに格納されなければならない。他のマッピング技術が、アドレスの部分の「ハッシュ値を計算する(hash)」。あらゆるマッピングが考慮される。
図3Bにおいて、L2キャッシュ110は、M個のセット(0〜M−1)を有するように示されており、L2キャッシュ110は、4ウェイ・セット連想である、すなわちクラス0からクラス3まで4つのクラスを有するように示されている。サブセット132A及び132Bは、上述のように示されている。キャッシュ・ライン位置110−00(L2キャッシュ110のセット0、クラス0)及びキャッシュ・ライン位置110−23(L2キャッシュ110のセット2、クラス3)は、L3キャッシュ132について上述されたセット/クラス命名規則を表すように示される。
図4A及び図4Bは、L3キャッシュ132及びL2キャッシュ110の特定のキャッシュ・ラインを示す。キャッシュ・ラインA、B、C、D、E、F、G、及びHは、図4Aに示されるように、L3キャッシュ132のセット0に格納されている。キャッシュ・ラインAは、(上記の命名規則を用いて)L2キャッシュ110の110−10に格納され、キャッシュ・ラインCは、L2キャッシュ110の110−12に格納され、キャッシュ・ラインFは、110−31に格納されている。図4A、図4Bの例においては、キャッシュ・ラインB、D、E、G、及びHは、L2キャッシュ110に存在しない。キャッシュ・ラインW、X、Q、R、及びSは、L2キャッシュ110内に保持され、セット1(W及びX)又はセット3(Q、R、及びS)にマッピングされているアドレスを有する位置(図示せず)においてL3キャッシュ132にも存在しなければならない。L2キャッシュ110に存在するすべてのキャッシュ・ラインがL3キャッシュ132にも存在することに留意されたい。しかしながら、L3キャッシュ132のすべてのキャッシュ・ラインがL2キャッシュ110に存在する必要はない。前述のように、第1のキャッシュ・ラインが変更されなかった場合には、L2キャッシュ110は、新たにフェッチされたキャッシュ・ラインで第1のキャッシュ・ラインを単純に上書きすることができる。L2キャッシュ110は、第1のキャッシュ・ラインが上書きされたことをL3キャッシュ132に通知しない。
図3A、図3B、図4A、図4B、及び上記のその説明は、L3キャッシュ132及びL2キャッシュ110のキャッシュ・ラインの物理的位置に焦点を当てたものである。(図1においてキャッシュ・ディレクトリ111A及び111Bとして示される)キャッシュ・ディレクトリ111は、L2キャッシュ110に格納されたキャッシュ・ラインのアドレスと、L2キャッシュ110に格納されたキャッシュ・ラインの状態とを追跡するために用いられる。キャッシュ・ディレクトリ136(図1)は、L3キャッシュ132に格納されたキャッシュ・ラインのアドレスと、L3キャッシュ132に格納されたキャッシュ・ラインの状態とを追跡するために用いられる。
例示的なL2キャッシュ・ディレクトリ111が、図5Aに示される。L2キャッシュ・ディレクトリ111は、4つのエントリ列を有するキャッシュ・ディレクトリ・アレイ112を含み、エントリ列70の各々は、L2キャッシュ110のクラス(図3B)に対応する。L2キャッシュ・ディレクトリ・アレイ112は、M個の行113を有し、行113の各々は、L2キャッシュ110のM個のセットにおける1つのセット(図3B)に対応する。L2キャッシュ・ディレクトリ・エントリ76(1つのL2キャッシュ・ディレクトリ・エントリが、網掛け、符号「76」、及び矢印によって示される)が、行113とエントリ列70との交点の各々に格納される。L2キャッシュ・ディレクトリ・エントリは、L2キャッシュ110に格納されたキャッシュ・ラインごとにキャッシュ・ディレクトリ・アレイ112に格納される。L3キャッシュ・ディレクトリ136も同様に構成されることが分かるであろう。
L2キャッシュ・ディレクトリ・エントリ76の各々は、状態フィールド73とタグ・フィールド72とを含む。状態フィールド73は、対応するキャッシュ・ラインに関する状態情報を保持する。多くのコンピュータ・システムにおいて、状態フィールドは、対応するキャッシュ・ラインが、(1)変更済み(modified)、(2)排他的(exclusive)、(3)共有(shared)、又は(4)無効(invalid)であることを意味する4つのビットを含む。このような状態情報は、MESI状態情報と呼ばれる。例示的な状態フィールド73が、図5Bに示される。しかしながら、本発明の実施形態について、図5Cにおいては、MESI状態情報を有するが「X」ビットも有する例示的な状態フィールド74が示される。状態フィールド74内の「X」ビットは、後述されるように、エビクション候補として識別されたキャッシュ・ラインのフラグを立てるのに用いられる。タグ・フィールド72は、キャッシュ・ラインのアドレスのタグ部分を保持する。キャッシュ・コヒーレンシを強化するために、MESI状態の多くの変化形が用いられており、本発明は、MESI又は他のいずれかのコヒーレンシ・プロトコルのいずれかの特定の実装形態に限定されないことを認識されたい。
キャッシュ・ディレクトリ111は、そのアドレスを有するキャッシュ・ラインがL2キャッシュ・ディレクトリ111にあるかどうかを確かめるためにアドレス117によってL2キャッシュ・ディレクトリ111に送られるアドレスを保持するアドレス・レジスタ90をさらに含む。アドレス117によってL2キャッシュ・ディレクトリ111に送られるアドレスは、プロセッサ105から発生する場合も、メモリ・コントローラ130から発生する場合もある。最初のアドレス部分92は、L2キャッシュ・ディレクトリ・アレイ112のM個の行のうちの1つを選択するために用いられる。アドレス・レジスタ90のアドレスのタグ部分91は、信号93によって比較部80に送られる。タグ72は、信号81A、81B、81C、及び81DによってL2キャッシュ・ディレクトリ・アレイ112の選択された行から読み出され、アドレスのタグ部分と比較される。信号81A、81B、81C、及び81Dによって送られたタグの1つがアドレスのタグ部分と等しい場合には、キャッシュ・ヒットが信号82によって報告される。信号81A、81B、81C、及び81Dによって送られたタグのいずれもアドレスのタグ部分と等しくない場合には、キャッシュ・ミスが信号82によって報告される。ディレクトリごとの状態情報は、典型的には、タグ72と同時にL2キャッシュ・ディレクトリ・アレイ112から読み出される。
L3キャッシュ132、L3キャッシュ・ディレクトリ136、L2キャッシュ110、及びL2キャッシュ・ディレクトリ111の作用に関する上述の説明を念頭に置いて、図1に戻り、巡回スヌープ・シーケンサ134の動作を説明する。
巡回スヌープ・シーケンサ134は、L3キャッシュ・ディレクトリ136及びプロセッサ・メモリ・バス115の各々(図1に示されるプロセッサ・メモリ・バス115A及び115B)に結合されている。巡回スヌープ・シーケンサ134は、ディレクトリ・インデックスを初期化して、L3キャッシュ・ディレクトリ136の第1の行をアドレス指定する。L3キャッシュ・ディレクトリ136は、L3キャッシュ・ディレクトリ136が用いられていないときに、そのインデックスで読み出される。L3キャッシュ・ディレクトリ136は、アクセスされたときに、図3AにおいてL3キャッシュ132内に示される8つのクラスに対応する8つのエントリを戻す。巡回スヌープ・シーケンサ134は、必要に応じて、L3キャッシュ132のキャッシュ・ラインのどれがL2キャッシュ110に存在しないかを判断するための処理を実行する。巡回スヌープ・シーケンサ134は、インデックスと共に、L3キャッシュ・ディレクトリのエントリごとに格納されるタグを用いて、巡回スヌープ・アドレスを生成する。巡回スヌープ・アドレスは、プロセッサ・メモリ・バス115がアイドル状態のときに、プロセッサ・メモリ・バス115によってL2キャッシュ・ディレクトリ111に送られる。L2キャッシュ・ディレクトリ111がアイドル状態のときに、L2キャッシュ・ディレクトリ111のスヌープ読み出しが行われる。L2キャッシュ・ディレクトリ111が、信号82によってL2キャッシュ・ミスを報告した場合には、巡回スヌープ・アドレスに対応するキャッシュ・ラインは、L2キャッシュ111に存在しない。信号82は、プロセッサ・メモリ・バス115のコマンド/ステータス116によって巡回スヌープ134に結合されている。巡回スヌープ・シーケンサ134は、状態フィールド74内のビット「X」をアサートすることによってL3キャッシュ・ディレクトリ136の対応するエントリを更新し、それによりそのキャッシュ・ラインをエビクション候補として識別する。L2キャッシュ・ディレクトリ111が、信号82によってL2キャッシュ・ヒットを報告した場合には、対応するキャッシュ・ラインは、L2キャッシュ111に依然として存在しており、巡回スヌープ・シーケンサ134は、そのキャッシュ・ラインをエビクション候補として識別するためにL3キャッシュ・ディレクトリ136の対応するエントリを更新することはない。巡回スヌープ・シーケンサ134は、L3キャッシュ・ディレクトリ136のインデックスが付けられた行のエントリごとにスヌープ読み出しを繰返し、次いで、インデックスの値を増加させて、L3キャッシュ・ディレクトリ136の次の行にアクセスする。L3キャッシュ・ディレクトリ136の最終行が完了したときに、インデックスは、第1の行に再度アクセスするためにリセットされる。本発明の実施形態においては、L3キャッシュ・ディレクトリがアイドル状態のときにのみ巡回スヌープ・シーケンサがL3キャッシュ・ディレクトリ136にアクセスし、プロセッサ・メモリ・バス115がアイドル状態のときにのみプロセッサ・メモリ・バス115によってスヌープ読み出しが送られ、L2キャッシュ・ディレクトリ111がアイドル状態のときにのみL2キャッシュ・ディレクトリ111へのアクセスが行われるため、エビクション候補を識別することについての性能上の不利益はない。
スヌープ読み出しによって、キャッシュ・ラインがL2キャッシュ110からエビクトされてはならない。L2キャッシュ110の多くのキャッシュ・ラインがプロセッサによって用いられているため、スヌープ読み出しによってキャッシュ・ラインがエビクトされた場合には、性能低下が生じる可能性がある。スヌープ読み出しによって望ましくないエビクションが生じないようにするために、プロセッサ105の置換論理109(図1)は、巡回スヌープ・シーケンサ134によってアサートされたスヌープ読み出しとしてコマンド/ステータス116上のコマンドを解釈し、スヌープ読み出しを認識し、スヌープ読み出しコマンドに応答して下位レベル・キャッシュのキャッシュ・ラインをエビクトしようとするあらゆる試みを抑制することによって、簡単にスヌープ読み出しを識別することができる。
1つの実施形態においては、巡回スヌープ・シーケンサ134は、L3キャッシュ・ディレクトリ136の現在考慮されているエントリからの状態74の情報を用いて、現在考慮されているエントリについてスヌープ読み出しが行われるべきかどうかを判断する。現在のエントリに対応するキャッシュ・ラインが(例として、特定のMESI状態の実装形態を用いて)変更されたことを状態74が示す場合には、対応するキャッシュ・ラインがL2キャッシュ110に存在するため、スヌープ読み出しは行われない。現在のエントリに対応するキャッシュ・ラインが共有されていることを状態74が示す場合には、対応するキャッシュ・ラインがL2キャッシュ110に存在することも存在しないこともあるため、スヌープ読み出しが行われる。MESIを用いたキャッシュ・コヒーレンシの種々の実装形態は、異なった「排他的」状態を扱う。例えば、幾つかの実装形態は、1つのプロセッサのみがキャッシュ・ラインを有するが、そのキャッシュ・ラインを変更していない可能性があることを意味するものとして、「排他的」を定義する場合があり、別のプロセッサがキャッシュ・ラインを要求する場合には、「排他的」は「共有」に変更され、「共有」と同様に、このようなキャッシュ・ラインは、このような実装形態においては下位レベル・キャッシュに存在しない場合があり、スヌープ読み出しは、「排他的」状態を有するキャッシュ・エントリを含むものである。MESIの他の実装形態においては、「排他的」は、キャッシュ・ラインが用いられているためエビクション候補とすべきではないことを意味する場合がある。現在のエントリに対応するキャッシュ・ラインが無効であることを状態74が示す場合には、スヌープ読み出しは行われない。典型的には、無効の状態は、コンピュータ・システムの立ち上げの際にのみ生じる。キャッシュ・ラインが無効の場合には、置換論理133が対応するキャッシュ・ラインを置換し、キャッシュ・ラインが無効であることを状態フィールドが示すときは、スヌープ読み出しは不要である。
エビクション候補としてマークされたキャッシュ・ラインが、エビクトされる前にプロセッサ105によってアクセスされた場合には、そのキャッシュ・ラインは、それがエビクション候補ではないように再びマークされる(すなわち、図5Cにおける状態74に示されるビット「X」がディアサートされる)ことが分かるであろう。
図1は、L3キャッシュ132が、L2キャッシュ110A、110Bをそれぞれ有する2つのプロセッサ105A、105Bをサポートすることを示す。1つの実施形態においては、メモリ・コントローラ130は、特定のキャッシュ・ラインがどのL2キャッシュ110に送られたかを追跡し、そのキャッシュ・ラインが送られたL2キャッシュ110にその特定のキャッシュ・ラインが存在するかどうかを判断することのみが必要である。第2の実施形態においては、メモリ・コントローラ130は、特定のキャッシュ・ラインがどのL2キャッシュ110に送られたかを追跡せず、特定のキャッシュ・ラインがどのL2キャッシュ110に存在するかを確かめるためにL2キャッシュ110の各々を常にチェックしなければならない。
上位レベル・キャッシュ及び下位レベル・キャッシュを示すために、L3及びL2キャッシュ・システムが用いられたが、本発明はL3及びL2レベル・キャッシュに限定されるものではないことが分かるであろう。例えば、L2キャッシュ110及びL2キャッシュ・ディレクトリ111に関連する巡回スヌープ・シーケンサは、プロセッサ105のレベル1キャッシュ(レベル1キャッシュは図示されていない)に対して同じ機能を行うことができる。
本発明の実施形態は、方法として表現することもできる。図6は、方法300のフローチャートを示す。方法300は、ステップ302で開始する。ステップ304において、上位レベル・キャッシュ・ディレクトリの行のインデックスが、0に初期化される。ステップ306において、上位レベル・キャッシュ・ディレクトリが使用されているかどうかがチェックされる。上位レベル・キャッシュ・ディレクトリが使用されている場合には、制御は、単にステップ306に戻される。上位レベル・キャッシュ・ディレクトリが使用されていない場合には、制御はステップ308に移る。ステップ308において、上位レベル・キャッシュ・ディレクトリのエントリが読み出され、エントリのインデックス及びタグ情報を用いて巡回スヌープ・アドレスが生成される。典型的には、上位レベル・キャッシュ・ディレクトリの行の全エントリが、並行して読み出される。その場合には、巡回スヌープ・シーケンサは、並行して読み出されたエントリを格納し、次に行の各々のエントリを処理する。例えば、図5Aは、1行に4つのエントリを有するL2キャッシュ・ディレクトリ・アレイ112を示す。L3キャッシュ132は、8つのクラス(図3A)を有するように示されており、したがって、L3キャッシュ・ディレクトリ136は、1行に8つのエントリを有するL3キャッシュ・ディレクトリ・アレイを含む(L3キャッシュ・ディレクトリは示されていないが、L3キャッシュ・ディレクトリ136の設計は、L2キャッシュ・ディレクトリ111と同様に設計されるものとして記載されている)。
ステップ310において、下位レベル・キャッシュ・ディレクトリが使用されていないときに、ステップ308において生成された巡回スヌープ・アドレスを用いて下位レベル・キャッシュ・ディレクトリのスヌープ読み出しが行われる。ステップ312において、スヌープ読み出しが、下位レベル・キャッシュにおけるキャッシュ・ヒットを報告しない場合には、エビクション候補として対応するキャッシュ・ラインのフラグを立てるようにエントリがマークされる。ステップ316は、最後のスヌープ読み出しに用いられたエントリが上位レベル・キャッシュ・ディレクトリ内の最後のエントリであるかどうかを判断する。最後のエントリでない場合には、ステップ318においてインデックスの値が進められ、制御がステップ306に移る。最後のエントリである場合には、ステップ320においてインデックスの値が0にリセットされ、制御がステップ306に移る。
図7に示される方法350は、方法300(図6)と同様であるが、MESI状態規則を用いる例示的なキャッシュ設計についてより多くの細部を含む。
方法350は、ステップ352で開始する。ステップ354は、上位レベル・キャッシュ・ディレクトリの特定の行に対応するインデックスを初期化する。ステップ356は、上位レベル・キャッシュ・ディレクトリが使用されているかどうかをチェックする。使用されている場合には、ステップ356は、分岐して単にステップ356に戻り、上位レベル・キャッシュ・ディレクトリが使用されていない時間を待つ。
ステップ356が、上位レベル・キャッシュ・ディレクトリが使用されていないと判断すると、制御はステップ381に移る。ステップ381は、上位レベル・キャッシュ・ディレクトリ・アレイの1つ又は複数のエントリに関する状態情報について、上位レベル・キャッシュ・ディレクトリを読み出す。前の場合と同様に、キャッシュ・ディレクトリは、典型的には、インデックスによってアクセスされた特定の行についての全ディレクトリ情報を読み出す。ステップ381は、制御をステップ382に移す。ステップ382は、ステップ381におけるどのエントリ読み出しが無効状態を有するかをチェックする。無効状態は、希であり、一般には、コンピュータ・システムの立ち上げの際に現れるのみである。エントリについての無効状態は、対応するキャッシュ・ラインが、プロセッサ105によって必要とされるものを含まず、上書きされる可能性があり、スヌープ読み出しが行われる必要がないことを意味する。ステップ381において読み出されたキャッシュ・エントリが無効である場合には、ステップ382は、制御をステップ366に移す。ステップ381において読み出されたエントリが無効でない場合には、ステップ382は、制御をステップ384に移す。ステップ384は、いずれかの状態が共有であるかどうかをチェックする。共有でない場合には、対応するキャッシュ・ラインは下位レベル・キャッシュにおいて用いられており、対応する上位レベル・キャッシュ・ラインはエビクション候補としてマークされず、制御はステップ366に移る。エントリが共有状態を有する場合には、ステップ384は、ステップ381において読み出されたディレクトリ・エントリからのインデックス及びタグ情報を用いてアドレスを生成するステップ358に制御を移す。ステップ360は、プロセッサ・メモリ・バス115が未使用であるとき、及び、下位レベル・キャッシュ・ディレクトリが未使用であるときに、下位レベル・キャッシュのスヌープ読み出しを行う。スヌープ応答がヒットである場合には、対応するキャッシュ・ラインは、下位レベル・キャッシュに存在し、エビクション候補ではない。スヌープ応答がヒットではない(すなわち、ミスである)場合には、制御はステップ364に移り、スヌープ読み出しを生成するのに用いられたディレクトリ・エントリに状態情報を設定することによって、エビクション候補としてキャッシュ・ラインにフラグを立てる。前述のように、エントリの状態ビット「X」を用いて、エビクション候補としてキャッシュ・ラインにフラグを立てることができる。次に、ステップ364は制御をステップ386に移し、ステップ381において読み出された共有状態を有するエントリの現在の行にさらにエントリが存在するかどうかをチェックする。存在する場合には制御はステップ358に移り、存在しない場合には制御はステップ366に移る。
ステップ366は、上位レベル・キャッシュ・ディレクトリの全エントリが考慮されたかどうかをチェックする、すなわち、インデックスは、上位レベル・キャッシュ・ディレクトリ・アレイの行数を超えて扱うことになる。全エントリが考慮されていない場合には、ステップ368においてインデックスの値が増加され、全エントリが考慮された場合には、ステップ370においてインデックスが0に再初期化される。ステップ368及び370は、制御をステップ356に戻し、上位レベル・キャッシュ・ディレクトリの未使用時間を利用してエントリを読み出し、共有状態を有するエントリを見つけ出し、リソース(上位レベル・キャッシュ・ディレクトリ、メモリ・プロセッサ・バス、及び下位レベル・キャッシュ・ディレクトリ)がアイドル状態であるときに、スヌープ読み出し要求を下位レベル・キャッシュ・ディレクトリに送り、共有キャッシュ・ラインが下位レベル・キャッシュに存在するかどうかを下位レベル・キャッシュ・ディレクトリからのヒット又はミス応答によって判断する方法が、続けられる。共有キャッシュ・ラインが下位レベル・キャッシュに存在しない場合には、上位レベル・キャッシュのキャッシュ・ラインが、エビクション候補としてマークされる。
図8に示される方法400は、方法及び装置として前述された本発明のスヌープ読み出しの実施形態によって識別されるエビクション候補によって、例えばLRU置換アルゴリズム及び擬似ランダム置換アルゴリズムであるがこれらに限定されない既知の置換アルゴリズムの置換選択がどのように改善されるかを示す。
方法400は、ステップ402で開始する。ステップ404において、上位レベル・キャッシュが、上位レベル・キャッシュのキャッシュ・ラインのエビクションを要求する、新しいキャッシュ・ラインのデータについての要求を受け取る。ステップ406において、上位レベル・キャッシュは、新しいキャッシュ・ラインが配置されるクラスについての状態及びタグ情報を含むエントリを含む、キャッシュ・ディレクトリ・アレイの行を決定する。ステップ408において、ステップ406において決定された行が、キャッシュ・ディレクトリ・アレイから読み出される。
ステップ410において、要求されたキャッシュ・ラインが上位レベル・キャッシュに存在するかどうかがチェックされる。存在する場合には、ステップ412において、要求されたキャッシュ・ラインがエビクション候補としてマークされているかどうかがチェックされる。要求されたキャッシュ・ラインがエビクション候補としてマークされている場合には、制御は、要求されたキャッシュ・ラインをエビクション候補からマーク解除するステップ414に移る。ステップ414は、制御をステップ416に移す。要求されたキャッシュ・ラインがエビクション候補としてマークされていないとステップ412が判断した場合には、制御はステップ416に移る。ステップ416は、要求されたキャッシュ・ラインを下位レベル・キャッシュにコピーする。制御は、ステップ416からステップ426に移り、方法は終了する。要求されたキャッシュ・ラインが上位レベル・キャッシュに存在しないとステップ410が判断した場合には、制御はステップ420に移る。
ステップ420において、ステップ408において読み出された行のいずれかのエントリが無効状態を有する場合には、制御はステップ421に移り、要求されたキャッシュ・ラインは、ステップ420による無効状態エントリに対応する上位レベル・キャッシュのクラスに書き込まれ、これにより無効キャッシュ・ラインをエビクトする(実際には上書きする)。次に、ステップ421は制御をステップ426に移し、プロセス400は終了する。エントリが無効キャッシュ・ラインを示す状態を有していないことをステップ420が検出した場合には、制御はステップ422に移る。
ステップ422において、ステップ408において読み出された上位レベル・キャッシュ・ディレクトリ・アレイにおける行のエントリの状態をチェックして、いずれかのエントリがエビクション候補としてマークされているかどうかを確かめる。このステップは、第1のエビクション候補が発見されるまで、各々のエントリを順番に調べるのみである。エビクション候補が発見された場合には、制御はステップ423に移り、要求されたキャッシュ・ラインが、エビクション候補であることが判明したキャッシュ・ラインに書き込まれる。ステップ423は制御をステップ426に移し、プロセスが終了する。ステップ422が、エビクション候補としてマークされたエントリを発見しない場合には、制御はステップ424に移る。ステップ424は、LRUアルゴリズム又は擬似ランダム置換アルゴリズムといった、多くの既知の置換アルゴリズムのいずれかを実行する。
1つ又は複数のプロセッサとメモリ・コントローラとメモリとを含むコンピュータ・システムのブロック図である。 図1に示されるプロセッサ・メモリ・バスをさらに詳細に示す。 (A)上位レベル・キャッシュのブロック図を示す。(B)下位レベル・キャッシュのブロック図を示す。(C)L2及びL3タグ部分と、L2及びL3インデックス部分と、キャッシュ・ライン内のバイトを決定するのに用いられる部分とを有する例示的なアドレスを示す。 (A)セットに格納された例示的なキャッシュ・ラインを有する上位レベル・キャッシュを示す。(B)セットに格納された例示的なキャッシュ・ラインを有する下位レベル・キャッシュを示す。 (A)例示的なキャッシュ・ディレクトリを示す。(B)キャッシュ・ディレクトリのエントリの例示的な状態フィールドを示す。(C)エビクション候補を示すビットを有する、キャッシュ・ディレクトリのエントリの例示的な状態フィールドを示す。 上位レベル・キャッシュにおけるエビクション候補を決定するための第1の方法のフローチャートである。 上位レベル・キャッシュにおけるエビクション候補を決定するための第2の方法のフローチャートである。 エビクション候補情報を用いてキャッシュ置換アルゴリズムを補う方法のフローチャートである。

Claims (13)

  1. キャッシュ・ライン置換のための方法であって、
    下位レベル・キャッシュに存在しない上位レベル・キャッシュの第1のキャッシュ・ラインを識別するステップと、
    前記下位レベル・キャッシュに存在する前記上位レベル・キャッシュの第2のキャッシュ・ラインの代わりに、前記上位レベル・キャッシュから前記第1のキャッシュ・ラインをエビクトするステップと、
    を含む方法。
  2. 前記下位レベル・キャッシュに存在しない前記上位レベル・キャッシュの前記第1のキャッシュ・ラインを識別する前記ステップは、
    前記上位レベル・キャッシュのキャッシュ・ラインのアドレスを用いて前記下位レベル・キャッシュのスヌープ読み出しを行うステップと、
    前記下位レベル・キャッシュの前記スヌープ読み出しが、前記下位レベル・キャッシュにおけるミスという結果になった場合には、前記キャッシュ・ラインをエビクション候補として識別するステップと、
    前記下位レベル・キャッシュの前記スヌープ読み出しが、前記下位レベル・キャッシュにおけるミスという結果にならなかった場合には、前記キャッシュ・ラインをエビクション候補として識別しないステップと、
    をさらに含む、請求項1に記載の方法。
  3. 前記下位レベル・キャッシュのスヌープ読み出しを行う前記ステップは、
    上位レベル・キャッシュ・ディレクトリがアイドル状態である第1の時間を決定するステップと、
    前記上位レベル・キャッシュ・ディレクトリがアイドル状態であるときに、前記上位レベル・キャッシュ・ディレクトリからの1つ又は複数のキャッシュ・エントリを読み出すステップと、
    前記上位レベル・キャッシュ・ディレクトリからの前記1つ又は複数のキャッシュ・エントリのタグ・フィールドを用いて、前記上位レベル・キャッシュの前記キャッシュ・ラインの前記アドレスを生成するステップと、
    をさらに含む、請求項2に記載の方法。
  4. 前記下位レベル・キャッシュのスヌープ読み出しを行う前記ステップは、
    下位レベル・キャッシュ・ディレクトリがアイドル状態である第2の時間を決定するステップと、
    前記第2の時間中に、前記上位レベル・キャッシュの前記キャッシュ・ラインの前記アドレスを用いて前記下位レベル・キャッシュ・ディレクトリにアクセスするステップと、
    前記第2の時間中に、前記上位レベル・キャッシュの前記キャッシュ・ラインの前記アドレスを用いて前記下位レベル・キャッシュ・ディレクトリにアクセスする前記ステップが、前記下位レベル・キャッシュ・ディレクトリにおけるミスという結果になった場合には、前記下位レベル・キャッシュにおける前記ミスを返すステップと、
    前記第2の時間中に、前記上位レベル・キャッシュの前記キャッシュ・ラインの前記アドレスを用いて前記下位レベル・キャッシュ・ディレクトリにアクセスする前記ステップが、前記下位レベル・キャッシュ・ディレクトリにおけるヒットという結果になった場合には、前記下位レベル・キャッシュにおける前記ヒットを返すステップと、
    をさらに含む、請求項3に記載の方法。
  5. a)前記上位レベル・キャッシュの第2のエントリについて請求項4に記載のステップを繰り返すステップと、
    b)前記上位レベル・キャッシュ・ディレクトリからの前記1つ又は複数のキャッシュ・エントリの状態情報を読み出し、
    前記上位レベル・キャッシュ・ディレクトリからの前記1つ又は複数のキャッシュ・エントリの特定のキャッシュ・エントリについての前記状態情報が、対応するキャッシュ・ラインが無効であることを示す場合には、前記特定のエントリについて請求項4に記載の前記ステップを行わないステップ、又は
    c)前記上位レベル・キャッシュ・ディレクトリからの前記1つ又は複数のキャッシュ・エントリの状態情報を読み出し、
    前記上位レベル・キャッシュ・ディレクトリからの前記1つ又は複数のキャッシュ・エントリの特定のキャッシュ・エントリについての前記状態情報が、対応するキャッシュ・ラインが変更されたことを示す場合には、前記特定のエントリについて請求項4に記載の前記ステップを行わないステップと、
    をさらに含む、請求項4に記載の方法。
  6. a)前記上位レベル・キャッシュによるデータについての要求を受け取り、
    前記データを含む特定のキャッシュ・ラインが前記上位レベル・キャッシュに存在するかどうかをチェックし、
    前記特定のキャッシュ・ラインが前記上位レベル・キャッシュに存在する場合に、
    前記特定のキャッシュ・ラインが前記下位レベル・キャッシュに存在しないものとして識別された場合には、前記下位レベル・キャッシュに存在しないものとした前記キャッシュ・ラインの識別を解除することを実行するステップ、又は、
    b)前記上位レベル・キャッシュが、各々が同じレベルにある複数の下位レベル・キャッシュに結合されている場合には、前記下位レベル・キャッシュに存在しない前記上位レベル・キャッシュの前記第1のキャッシュ・ラインを識別する前記ステップは、
    前記第1のキャッシュ・ラインが前記複数の下位レベル・キャッシュのいずれにも存在しないことを保証することをさらに含むステップ、
    をさらに含む、請求項1から請求項5のいずれか1項に記載の方法。
  7. 前記上位レベル・キャッシュがL3キャッシュであり、前記下位レベル・キャッシュがL2キャッシュであるか、又は、前記上位レベル・キャッシュがL2キャッシュであり、前記下位レベル・キャッシュがL1キャッシュである、請求項1から請求項6のいずれか1項に記載の方法。
  8. 上位レベル・キャッシュと、
    巡回スヌープ・シーケンサと、
    を含むメモリ・コントローラと、
    前記メモリ・コントローラに結合された下位レベル・キャッシュと、
    を備え、
    前記巡回スヌープ・シーケンサは、前記下位レベル・キャッシュに存在しない前記上位レベル・キャッシュのキャッシュ・ラインを識別することができるように構成された、コンピュータ・システム。
  9. 前記メモリ・コントローラ内に、前記下位レベル・キャッシュに存在する第2のキャッシュ・ラインの代わりに、前記下位レベル・キャッシュに存在しないものとして識別された第1のキャッシュ・ラインをエビクトするように構成された論理をさらに備える、請求項8に記載のコンピュータ・システム。
  10. 前記メモリ・コントローラは、前記巡回スヌープ・シーケンサに結合され、前記上位レベル・キャッシュのキャッシュ・ラインごとのエントリを保持する、上位レベル・キャッシュ・ディレクトリをさらに備え、
    前記エントリの各々は、前記上位レベル・キャッシュのキャッシュ・ラインごとの状態フィールド及びタグ・フィールドをさらに含み、
    前記上位レベル・キャッシュのキャッシュ・ラインごとの前記エントリは、前記上位レベル・キャッシュの特定のキャッシュ・ラインが前記下位レベル・キャッシュに存在しないかどうかに関する情報を保持するフィールドをさらに含む、
    請求項9に記載のコンピュータ・システム。
  11. 前記メモリ・コントローラに結合され、前記下位レベル・キャッシュのキャッシュ・ラインごとのエントリを有する、下位レベル・キャッシュ・ディレクトリをさらに備える、請求項9に記載のコンピュータ・システム。
  12. 前記巡回スヌープ・シーケンサは、
    前記上位レベル・キャッシュ・ディレクトリを読み出し、
    前記上位レベル・キャッシュ内のエントリを読み出し、
    前記上位レベル・キャッシュ内のキャッシュ・ラインのアドレスを生成し、
    下位レベル・キャッシュ・ディレクトリのスヌープ読み出しを行い、
    前記スヌープ読み出しが、前記下位レベル・キャッシュ・ディレクトリにおけるキャッシュ・ミスという結果になった場合には、前記上位レベル・キャッシュの特定のキャッシュ・ラインが前記下位レベル・キャッシュに存在しないかどうかに関する情報を保持する前記エントリについての前記フィールドに、前記エントリに対応するキャッシュ・ラインをエビクション候補として識別するように書き込み、
    前記スヌープ読み出しが、前記下位レベル・キャッシュ・ディレクトリにおけるキャッシュ・ヒットという結果になった場合には、前記上位レベル・キャッシュの特定のキャッシュ・ラインが前記下位レベル・キャッシュに存在しないかどうかに関する情報を保持する前記エントリについての前記フィールドに、前記エントリに対応するキャッシュ・ラインをエビクション候補として識別するようには書き込まない、
    ように構成される、請求項10に記載のコンピュータ・システム。
  13. 前記メモリ・コントローラに結合された第2の下位レベル・キャッシュをさらに備え、
    前記巡回スヌープ・シーケンサは、前記第2の下位レベル・キャッシュに存在しない前記上位レベル・キャッシュのキャッシュ・ラインを識別することができるように構成され、
    必要に応じて、前記メモリ・コントローラ内に、前記下位レベル・キャッシュ又は前記第2の下位レベル・キャッシュのいずれかに存在する第2のキャッシュ・ラインの代わりに、前記下位レベル・キャッシュにも前記第2の下位レベル・キャッシュにも存在しないものとして識別された第1のキャッシュ・ラインをエビクトするように構成された論理をさらに含む、請求項8から請求項12のいずれか1項に記載のコンピュータ・システム。
JP2008550761A 2006-01-19 2007-01-18 上位レベル・キャッシュのエビクション候補を識別するための巡回スヌープ Expired - Fee Related JP4563486B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/335,765 US7577793B2 (en) 2006-01-19 2006-01-19 Patrol snooping for higher level cache eviction candidate identification
PCT/EP2007/050503 WO2007082917A2 (en) 2006-01-19 2007-01-18 Patrol snooping for higher level cache eviction candidate identification

Publications (3)

Publication Number Publication Date
JP2009524137A true JP2009524137A (ja) 2009-06-25
JP2009524137A5 JP2009524137A5 (ja) 2010-04-02
JP4563486B2 JP4563486B2 (ja) 2010-10-13

Family

ID=37955186

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008550761A Expired - Fee Related JP4563486B2 (ja) 2006-01-19 2007-01-18 上位レベル・キャッシュのエビクション候補を識別するための巡回スヌープ

Country Status (8)

Country Link
US (1) US7577793B2 (ja)
EP (1) EP1977322B1 (ja)
JP (1) JP4563486B2 (ja)
CN (1) CN101361049B (ja)
AT (1) ATE467182T1 (ja)
DE (1) DE602007006277D1 (ja)
TW (1) TWI417723B (ja)
WO (1) WO2007082917A2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008129712A (ja) * 2006-11-17 2008-06-05 Toshiba Corp 情報処理装置およびデータ検索方法
JP2011028736A (ja) * 2009-07-02 2011-02-10 Fujitsu Ltd キャッシュメモリ装置、演算処理装置及びキャッシュメモリ装置の制御方法
US10423528B2 (en) 2016-06-29 2019-09-24 Fujitsu Limited Operation processing device, information processing apparatus, and control method for operation processing device

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7624234B2 (en) * 2006-08-31 2009-11-24 Hewlett-Packard Development Company, L.P. Directory caches, and methods for operation thereof
US7457920B1 (en) 2008-01-26 2008-11-25 International Business Machines Corporation Method and system for cache eviction
US8271735B2 (en) * 2009-01-13 2012-09-18 Oracle America, Inc. Cache-coherency protocol with held state
US8566531B2 (en) * 2009-08-21 2013-10-22 Google Inc. System and method of selectively caching information based on the interarrival time of requests for the same information
AU2010201718B2 (en) * 2010-04-29 2012-08-23 Canon Kabushiki Kaisha Method, system and apparatus for identifying a cache line
US8769209B2 (en) * 2010-12-20 2014-07-01 Intel Corporation Method and apparatus for achieving non-inclusive cache performance with inclusive caches
US9804971B2 (en) * 2012-01-17 2017-10-31 International Business Machines Corporation Cache management of track removal in a cache for storage
WO2016055828A1 (en) * 2014-10-08 2016-04-14 Via Alliance Semiconductor Co., Ltd. Cache system with primary cache and overflow fifo cache
EP3572946B1 (en) * 2017-03-08 2022-12-07 Huawei Technologies Co., Ltd. Cache replacement method, device, and system
US20190012259A1 (en) * 2017-07-06 2019-01-10 Futurewei Technologies, Inc. Lba eviction in pcm media
US10915461B2 (en) * 2019-03-05 2021-02-09 International Business Machines Corporation Multilevel cache eviction management
US10997074B2 (en) 2019-04-30 2021-05-04 Hewlett Packard Enterprise Development Lp Management of coherency directory cache entry ejection

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5373927A (en) * 1976-11-10 1978-06-30 Fujitsu Ltd Replacing system of intermediate buffer memory
JPH01199251A (ja) * 1988-02-04 1989-08-10 Fujitsu Ltd キャッシュメモリアクセス制御方式
JPH02188847A (ja) * 1989-01-18 1990-07-24 Agency Of Ind Science & Technol 階層キャッシュメモリにおけるデータ交換方式
JPH05216765A (ja) * 1992-02-06 1993-08-27 Hitachi Ltd 階層バッファ記憶装置
JPH10105463A (ja) * 1996-09-27 1998-04-24 Mitsubishi Electric Corp キャッシュシステム及びリプレース判定方法
US5829038A (en) * 1996-06-20 1998-10-27 Intel Corporation Backward inquiry to lower level caches prior to the eviction of a modified line from a higher level cache in a microprocessor hierarchical cache structure
JPH11102320A (ja) * 1997-09-29 1999-04-13 Mitsubishi Electric Corp キャッシュシステム
JP2002140232A (ja) * 2000-09-22 2002-05-17 Hitachi Ltd マルチプロセッサシステム及びキャッシュを制御する方法
US20070073974A1 (en) * 2005-09-29 2007-03-29 International Business Machines Corporation Eviction algorithm for inclusive lower level cache based upon state of higher level cache
US20070186045A1 (en) * 2004-07-23 2007-08-09 Shannon Christopher J Cache eviction technique for inclusive cache systems

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5530832A (en) * 1993-10-14 1996-06-25 International Business Machines Corporation System and method for practicing essential inclusion in a multiprocessor and cache hierarchy
US5850534A (en) * 1995-06-05 1998-12-15 Advanced Micro Devices, Inc. Method and apparatus for reducing cache snooping overhead in a multilevel cache system
US6023747A (en) * 1997-12-17 2000-02-08 International Business Machines Corporation Method and system for handling conflicts between cache operation requests in a data processing system
US6343344B1 (en) * 1999-08-04 2002-01-29 International Business Machines Corporation System bus directory snooping mechanism for read/castout (RCO) address transaction
US6725337B1 (en) * 2001-05-16 2004-04-20 Advanced Micro Devices, Inc. Method and system for speculatively invalidating lines in a cache
US7024545B1 (en) * 2001-07-24 2006-04-04 Advanced Micro Devices, Inc. Hybrid branch prediction device with two levels of branch prediction cache
TWI246658B (en) * 2003-04-25 2006-01-01 Ip First Llc Microprocessor, apparatus and method for selectively associating store buffer cache line status with response buffer cache line status
US7143246B2 (en) * 2004-01-16 2006-11-28 International Business Machines Corporation Method for supporting improved burst transfers on a coherent bus
US20060212654A1 (en) * 2005-03-18 2006-09-21 Vinod Balakrishnan Method and apparatus for intelligent instruction caching using application characteristics

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5373927A (en) * 1976-11-10 1978-06-30 Fujitsu Ltd Replacing system of intermediate buffer memory
JPH01199251A (ja) * 1988-02-04 1989-08-10 Fujitsu Ltd キャッシュメモリアクセス制御方式
JPH02188847A (ja) * 1989-01-18 1990-07-24 Agency Of Ind Science & Technol 階層キャッシュメモリにおけるデータ交換方式
JPH05216765A (ja) * 1992-02-06 1993-08-27 Hitachi Ltd 階層バッファ記憶装置
US5829038A (en) * 1996-06-20 1998-10-27 Intel Corporation Backward inquiry to lower level caches prior to the eviction of a modified line from a higher level cache in a microprocessor hierarchical cache structure
JPH10105463A (ja) * 1996-09-27 1998-04-24 Mitsubishi Electric Corp キャッシュシステム及びリプレース判定方法
JPH11102320A (ja) * 1997-09-29 1999-04-13 Mitsubishi Electric Corp キャッシュシステム
JP2002140232A (ja) * 2000-09-22 2002-05-17 Hitachi Ltd マルチプロセッサシステム及びキャッシュを制御する方法
US20070186045A1 (en) * 2004-07-23 2007-08-09 Shannon Christopher J Cache eviction technique for inclusive cache systems
US20070073974A1 (en) * 2005-09-29 2007-03-29 International Business Machines Corporation Eviction algorithm for inclusive lower level cache based upon state of higher level cache

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008129712A (ja) * 2006-11-17 2008-06-05 Toshiba Corp 情報処理装置およびデータ検索方法
JP2011028736A (ja) * 2009-07-02 2011-02-10 Fujitsu Ltd キャッシュメモリ装置、演算処理装置及びキャッシュメモリ装置の制御方法
US10423528B2 (en) 2016-06-29 2019-09-24 Fujitsu Limited Operation processing device, information processing apparatus, and control method for operation processing device

Also Published As

Publication number Publication date
ATE467182T1 (de) 2010-05-15
EP1977322A2 (en) 2008-10-08
WO2007082917A3 (en) 2007-10-04
DE602007006277D1 (de) 2010-06-17
CN101361049B (zh) 2011-12-28
CN101361049A (zh) 2009-02-04
JP4563486B2 (ja) 2010-10-13
TW200805061A (en) 2008-01-16
WO2007082917A2 (en) 2007-07-26
US20070168617A1 (en) 2007-07-19
EP1977322B1 (en) 2010-05-05
US7577793B2 (en) 2009-08-18
TWI417723B (zh) 2013-12-01

Similar Documents

Publication Publication Date Title
JP4563486B2 (ja) 上位レベル・キャッシュのエビクション候補を識別するための巡回スヌープ
JP4486750B2 (ja) テンポラリ命令及び非テンポラリ命令用の共用キャッシュ構造
EP0780769B1 (en) Hybrid numa coma caching system and methods for selecting between the caching modes
US7698508B2 (en) System and method for reducing unnecessary cache operations
US6339813B1 (en) Memory system for permitting simultaneous processor access to a cache line and sub-cache line sectors fill and writeback to a system memory
US6901483B2 (en) Prioritizing and locking removed and subsequently reloaded cache lines
US5893150A (en) Efficient allocation of cache memory space in a computer system
US6826651B2 (en) State-based allocation and replacement for improved hit ratio in directory caches
JP4447580B2 (ja) 分散共有メモリマルチプロセッサシステムのための分割疎ディレクトリ
CN109582214B (zh) 数据访问方法以及计算机系统
US5787478A (en) Method and system for implementing a cache coherency mechanism for utilization within a non-inclusive cache memory hierarchy
US20140181402A1 (en) Selective cache memory write-back and replacement policies
US20180300258A1 (en) Access rank aware cache replacement policy
US20100281218A1 (en) Intelligent cache replacement mechanism with varying and adaptive temporal residency requirements
US20030061450A1 (en) List based method and apparatus for selective and rapid cache flushes
US20110320720A1 (en) Cache Line Replacement In A Symmetric Multiprocessing Computer
JP6630449B2 (ja) 他のキャッシュでのエントリの可用性に基づくキャッシュエントリの置換
JP2008502069A (ja) メモリ・キャッシュ制御装置及びそのためのコヒーレンシ動作を実行する方法
US6625694B2 (en) System and method for allocating a directory entry for use in multiprocessor-node data processing systems
KR100243319B1 (ko) 비포함적 메모리 억세스 메커니즘
US20180113815A1 (en) Cache entry replacement based on penalty of memory access
US7117312B1 (en) Mechanism and method employing a plurality of hash functions for cache snoop filtering
US7325102B1 (en) Mechanism and method for cache snoop filtering
JP4068185B2 (ja) コンピュータ・システムでのメモリ・ストレージ・モードの効果的な選択
CN118020064A (zh) 具有伪lru补充年龄信息的重新引用区间预测(rrip)

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090313

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20091026

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100208

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20100208

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20100215

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100223

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100524

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

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

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

Free format text: PAYMENT UNTIL: 20130806

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