JP4162493B2 - 下位レベルのキャッシュを含むアクセスを促進するためのリバースディレクトリ - Google Patents

下位レベルのキャッシュを含むアクセスを促進するためのリバースディレクトリ Download PDF

Info

Publication number
JP4162493B2
JP4162493B2 JP2002582365A JP2002582365A JP4162493B2 JP 4162493 B2 JP4162493 B2 JP 4162493B2 JP 2002582365 A JP2002582365 A JP 2002582365A JP 2002582365 A JP2002582365 A JP 2002582365A JP 4162493 B2 JP4162493 B2 JP 4162493B2
Authority
JP
Japan
Prior art keywords
cache
level cache
entry
line
lower level
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
JP2002582365A
Other languages
English (en)
Other versions
JP2005509204A (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.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
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
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=26741138&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=JP4162493(B2) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of JP2005509204A publication Critical patent/JP2005509204A/ja
Application granted granted Critical
Publication of JP4162493B2 publication Critical patent/JP4162493B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • 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/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods
    • G06F12/082Associative directories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • 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/0864Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

(背景技術)
(発明の分野)
本発明は、マルチプロセッサシステムの設計に関する。より詳細には、本発明は、下位レベルのキャッシュを介してアクセスを実行する上位レベルのキャッシュを含むオペレーションを促進するために、下位レベルキャッシュに位置するリバースディレクトリを利用する方法と装置に関する。
(関連技術)
計算性能の高速化を達成するために、コンピュータシステム設計者は、単一の計算タスクの実行のために並行に動作するマルチプロセッサを利用し始めている。1つの共通のマルチプロセッサ設計は、単一のレベル2(L2)キャッシュ180およびメモリ183を共用するレベル1(L1)キャッシュ161〜164に接続された複数のプロセッサ151〜154を含む(図1を参照されたい)。動作中、プロセッサ151が、ローカルL1キャッシュ161に存在しないデータアイテムにアクセスする場合、システムは、L2キャッシュ180からデータアイテムを取り出すことを試みる。データアイテムが、L2キャッシュ180に存在しない場合、システムは、最初にメモリ180からL2キャッシュ180へデータアイテムを取り出し、続いてL2キャッシュ180からL1キャッシュ161へ取り出す。
留意すべきは、1つより多いL1キャッシュにおいて、同一のデータアイテムが存在する場合、干渉性の問題が生じ得ることである。この場合、L1キャッシュ161におけるデータアイテムの第1のバージョンに対する修正によって、この第1のバージョンが、L1キャッシュ162におけるデータアイテムの第2のバージョンと異なるようにし得る。
干渉性の問題を防ぐために、コンピュータシステムは、しばしば、バス170を介して動作する干渉性プロトコルを提供する。典型的には、干渉性プロトコルが確実にさせるのは、データアイテムの1つのコピーがL1キャッシュ161で修正される場合、L1キャッシュ162〜164、L2キャッシュ180、および、メモリ183における同一データアイテムの他のコピーは、その修正を反映するようにアップデートされるか、無効化されることである。
干渉性プロトコルは、典型的には、バス170を介して無効メッセージをブロードキャストすることによって、無効化を実行する。そのような無効化が頻繁に発生する場合、これらの無効メッセージは、潜在的にバス170を拘束させ得、それにより全体的なシステム性能を低下させ得る。
この問題を改善するために、いくらかの設計者は、L2キャッシュ180内にディレクトリ情報を維持する可能性を検討し始めた。このディレクトリ情報は、どのL1キャッシュが特定のデータアイテムのコピーを含むかを特定する。このことにより、システムは、全てのL1キャッシュにブロードキャストメッセージを送信するのではなく、そのデータアイテムを含むL1キャッシュに対してのみ無効情報を送信することになる。(このタイプのシステムは、図1に示される例とは異なり、各L1キャッシュ161〜164への無効メッセージのための別個の伝達経路が存在することを仮定している。図1は、L1キャッシュ161〜164と通信する単一の共用バス170を利用している。)
しかし、留意すべきは、L2キャッシュ180が、典型的にはL1キャッシュ161〜164よりも多いエントリを有するために、各エントリに対するディレクトリ情報をL2キャッシュ180に格納することは、浪費である。このことは、L2キャッシュ180におけるディレクトリ情報に対するほとんどのエントリが空になることを意味する。
さらに、留意すべきは、L1キャッシュ161〜164は、典型的にはセットアソシアティブ(set−associative)である。従って、無効メッセージがL1キャッシュ161によって受信されると、ルックアップおよび比較がL1キャッシュ161内で必ず実行されて、データアイテムのウェイ位置を決定する。例えば、4ウェイセットアソシアティブL1キャッシュにおいて、特定のセット(アドレスの一部分によって特定される)に所属するデータアイテムは、4つの可能な「ウェイ」の1つで、格納され得る。結果として、各4つの可能なウェイからのタグは、必ず取り出され比較されて、データアイテムのウェイ位置を決定する。このルックアップは、時間を消費し、システム性能を低下させる。
必要とされるのは、メモリを浪費することなしに、L1キャッシュに対するディレクトリ情報を維持するための方法および装置である。
さらに、必要とされるのは、エントリのウェイ位置を決定するためにルックアップを実行することなく、L1キャッシュにおけるエントリを無効化するための方法および装置である。
(要旨)
本発明の1つの実施形態は、下位レベルのキャッシュを介してメモリアクセスを実行する上位レベルのキャッシュを有する、複数のプロセッサを含むマルチプロセッサシステムを提供する。このマルチプロセッサシステムはまた、下位レベルのキャッシュに接続されるリバースディレクトリを含み、下位レベルのキャッシュは、上位レベルのキャッシュにおけるラインに対応するエントリを含む。ここで、各エントリは、下位レベルにおける関連するエントリを識別する。
本発明の1つの実施形態では、下位レベルのキャッシュは、上位レベルのキャッシュからの要求を受信するように構成されて、下位レベルからのラインを取り出す。ラインが下位レベルのキャッシュ内に存在する場合、システムは、上位レベルのキャッシュへラインを送信し、その結果、ラインは、上位レベルのキャッシュ内に格納され得る。このシステムはまた、ラインが上位レベルのキャッシュ内に格納されることを指示するために、リバースディレクトリ内の情報を格納する。
この実施形態のバリエーションでは、上位レベルのキャッシュは、Nウェイセットアソシアティブキャッシュ(N−way set−associative cache)であり、リバースディレクトリにおける情報を格納するステップは、上位レベルのキャッシュにおけるウェイ位置を識別するウェイ情報を格納するステップを含む。上位レベルのキャッシュでは、ラインが格納され得る。さらに、マイクロプロセッサシステムは、上位レベルにおけるラインのウェイ位置を決定するために上位レベルのキャッシュ内でルックアップを実行することなく、上位レベルキャッシュにおけるラインを無効化する、続く無効化オペレーションの間、このウェイ情報を利用するように構成される。
本発明の1つの実施形態では、さらに、ラインが下位レベルのキャッシュ内に存在しない場合、下位レベルのキャッシュは、ラインを下位レベルのキャッシュへ引き出すために、ミスを生成するように構成される。
本発明の1つの実施形態では、下位レベルのキャッシュ内の目標エントリをアップデートさせるアップデート要求を受信すると、システムは、目標エントリが1つ以上の上位レベルのキャッシュ内に含まれるかどうかを決定するために、リバースディレクトリにおけるルックアップを実行する。目標エントリを含む各上位レベルキャッシュに対して、システムは、目標エントリを無効化するために、上位レベルキャッシュに無効化要求を送信し、目標エントリが上位レベルキャッシュ内で無効化されたことを指示するために、リバースディレクトリにおける対応エントリをアップデートする。
留意すべきは、このアップデート要求は、目標エントリにおけるロードミス、格納ミス、および格納ヒットを含み得る。アップデート要求が格納ヒットである場合、リバースディレクトリにおけるルックアップは、格納ヒットを発生させた上位レベルキャッシュ以外の全ての上位レベルキャッシュにおける目標エントリのルックアップの工程を含む。
本発明の1つの実施形態では、リバースディレクトリは、各上位レベルキャッシュにおける各エントリに対応する固定されたエントリを含む。
本発明の1つの実施形態では、リバースディレクトリにおける各エントリは、下位レベルキャッシュにおける対応するエントリの位置を指定する情報を含む。
本発明の1つの実施形態では、下位レベルキャッシュは、Mウェイセットアソシアティブキャッシュとして、組織化される。この実施形態では、リバースディレクトリにおける各エントリは、下位レベルキャッシュ内の対応するエントリのウェイ位置を識別するウェイ識別子と、下位レベルキャッシュ内の対応するエントリのセット位置を識別するセット識別子であって、セット識別子は、リバースディレクトリ内のエントリの位置から推測され得るセット情報を含まない、セット識別子と、リバースディレクトリ内のエントリが有効であるかどうかを指示する有効フラグとを含む。
本発明の1つの実施形態では、マルチプロセッサシステムは、単一の半導体チップ上に位置する。
本発明の1つの実施形態では、下位レベルキャッシュは、L2キャッシュであり、各上位レベルキャッシュは、L1キャッシュである。
本発明の1つの実施形態では、上位レベルキャッシュは、ライトスルーキャッシュとして組織化され、その結果、上位レベルキャッシュに対するアップデートは、直ちに下位レベルキャッシュまでライトスルーされる。
本発明の1つの実施形態では、下位レベルキャッシュは、並行にアクセスされ得る多重バンクを含む。
(詳細な説明)
以下の説明は、任意の当業者が本発明を製造し利用することができるように表現されており、特的の用途およびその要件に関連して提供される。開示される実施形態に対する様々な改変が、当業者には容易に理解され、本明細書中で定義される一般原理は、本発明の意図および範囲から逸脱することなく、他の実施形態および用途に適用され得る。従って、本発明は、示される実施形態に限定されることを意図しないが、本明細書中で開示された原理および特徴と一貫する最大範囲が許容され得る。
(マルチプロセッサシステム)
図1Bは、本発明の実施形態に従った、リバースディレクトリを有するマルチプロセッサシステム100を示す。マルチプロセッサシステム100の多くは、単一の半導体チップ101内に配置されていることを留意されたい。より詳細には、半導体チップ101は、複数のプロセッサ110、120、130および140を含み、それらのプロセッサは、レベル1(L1)キャッシュ112、122、132、142をそれぞれ含む。留意すべきは、L1キャッシュ112、122、132および142は、別個の命令およびデータキャッシュであってもよく、もしくは、代替として、統一された命令/データキャッシュであってもよいことである。L1キャッシュ112、122、132および142は、レベル2(L2)キャッシュ106に接続され、L2キャッシュ106は、リバースディレクトリ302を含む。リバースディレクトリ302は、以下の図3〜6を参照して、より詳細が述べられる。L2キャッシュ106は、メモリコントローラ104を介して、オフチップメモリ102に接続される。
本発明の1つの実施形態では、L1キャッシュ112、122、132および142は、ライトスルーキャッシュ(write−through cache)であり、つまり、L1キャッシュ112、122、132および142に対する全てのアップデートは、自動的に、L2キャッシュ106に伝播されることを意味する。このことは、プロセッサ110が、L1キャッシュ112に存在するデータアイテムを必要とする場合、プロセッサ110は、そのデータを調達するためにL1キャッシュ112を待つ必要もなく、L2キャッシュ106からそのデータを受信することができるので、干渉性プロトコルを単純化する。さらに、L1キャッシュ112にそのデータを調達できるようにするために、ネットワークをフォワードする必要もない。留意すべきは、本発明の1つの実施形態では、L2キャッシュ106は「包含的キャッシュ」であり、つまり、L1キャッシュ112、122、132および142内の全てのアイテムは、L2キャッシュ106に含まれることを意味することである。
(多重バンクを有するL2キャッシュ)
図2は、本発明の実施形態に従った、多重バンクを有するL2キャッシュを示す。この実施形態では、L2キャッシュ106は、4つのバンク202〜205で実装され、4つのバンク202〜205は、スイッチ220を介して、プロセッサ110、120、130、140によって並列にアクセスされ得る。留意すべきは、メモリ要求がどの4つのバンク202〜205指示しているのかを決定するために、2ビットのアドレスだけが必要とされることである。さらに、スイッチ120は、I/Oデバイスと通信するためのI/Oポート150を含む。また留意すべきは、各これらのバンク202〜205は、リバースディレクトリを含むことである。さらに、各バンク202〜205は、それ自体のメモリコントローラ212〜215を有し、メモリコントローラ212〜215は、オフチップメモリ232〜235の関連するバンクに接続される。
留意すべきは、このアーキテクチャに関して、同時に各L1キャッシュを、L2キャッシュのそれ自体のバンクと接続させることが可能であり、そのことが、L2キャッシュ106に対して処理能力を増加させることである。
(リバースディレクトリ)
図3は、本発明の実施形態に従った、関連するリバースディレクトリ302と一緒のL2バンク202を示す。L2バンク202は、命令およびデータを格納するための8ウェイのセットアソシアティブキャッシュ304を含む。アドレスの一部分は、キャッシュ304内のセットを決定するために利用される。キャッシュ304のセットは、キャッシュ304の行によって表現される。所与のセット内では、8つの異なるエントリが、各8つの異なる「ウェイ位置」に格納され得る。ウェイ位置は、キャッシュ304内の8つの列によって表現される。
リバースディレクトリ302は、各L1キャッシュに対して別個のブロックを含む。より具体的には、ブロック312はL1キャッシュ112と関連し、ブロック322はL1キャッシュ122と関連し、ブロック332はL1キャッシュ132と関連し、かつ、ブロック342はL1キャッシュ142と関連する。
留意すべきは、各これらのブロック312、322、332および342は、関連するL1キャッシュ112、122、132および142内の各ラインに対するエントリを含むことである。さらに、L1キャッシュ112が、4ウェイセットアソシアティブキャッシュとして組織化されるので、リバースディレクトリ302内の関連するブロック312はまた、同一の形式で組織化される。しかし、留意すべきは、L1キャッシュ112内のエントリは、データおよび命令を含むことである。ここで、関連するブロック312内のエントリは、キャッシュ304内のラインの位置を特定するインデックス情報を含む。
(リバースディレクトリエントリ)
図4は、本発明の実施形態に従って、リバースディレクトリエントリ430がどのように生成されるかを示す。
図4の上側は、メモリ102内のデータアイテム(もしくは命令)のアドレス400を示す。L1キャッシュ112は、このアドレスを、L1タグ412、L1セットナンバー414、および、L1ラインオフセット418へ分割する。L1セットナンバー414は、4ウェイセットアソシアティブL1キャッシュ112の特定のセットを調べるために、利用される。L1タグ412は、L1キャッシュ112内に格納され、各セットに対する4ウェイセットアソシアティブメモリを実装するために、比較を実行するように利用される。L1ラインオフセット418は、L1キャッシュ112のライン内の特定のデータアイテムの位置を決定する。
L2キャッシュ106は、アドレス400を、L2タグ402、L2セットナンバー404、L2バンクナンバー406およびL2ラインオフセット408に分割する。L2バンクナンバー406は、L2キャッシュ106の4つのバンク202〜205から、特定のバンクを決定する。L2セットナンバー404は、L2キャッシュ106の8ウェイセットアソシアティブバンクの特定のセットをルックアップするために利用される。L2タグ402は、L2キャッシュ106の特定のバンクに格納され、各セットに対する8ウェイセットアソシアティブメモリを実装するために、比較を実行するように利用される。L2ラインオフセット408は、L2キャッシュ106のライン内の特定のデータアイテムの位置を決定する。
リバースディレクトリ302内のアドレス400に対して関連するエントリ430は、打ち切られたL2セットナンバー424、L2ウェイナンバー429および有効ビット427を含む。打ち切られたL2セットナンバー424は、L1キャッシュ112内のエントリの位置から決定することができないL2セットナンバー404の一部を含む。言い換えると、打ち切られたL2セットナンバー424は、L2セットナンバー404の一部分を含み、L2セットナンバー404の一部分は、L1セットナンバー414と重複しない。L2ウェイナンバー429は、キャッシュ304内で、8つの可能なラインのウェイ位置から、ラインの列位置を特定する3ビットインデックスを含む。最後には、有効ビット427は、エントリ430が有効であるかどうかを指示する。
留意すべきは、L2キャッシュ106内の各ラインに対するL1キャッシュ位置を格納する代わりに、示される実施形態は、L1キャッシュ位置に対するエントリを格納し、各これらのエントリは、L1位置と関連するL2キャッシュ位置を特定することである。
従って、各L2エントリからL1エントリへのポインタをキープする代わりに、各L1エントリから対応するL2エントリディレクトリ302への逆方向におけるポインタをキープするので、ディレクトリ302は、「リバースディレクトリ」として考え得る。このことは、典型的には、L2エントリよりもL1エントリの方がずっと少ないので、メモリを節約する。
(リバースディレクトリエントリ生成のプロセス)
図5は、本発明の実施形態に従った、リバースディレクトリエントリを生成し、または、アップデートするプロセスを示すフローチャートである。このプロセスは、ラインを取り出す要求が、L1キャッシュ112からL2キャッシュ106で受信されたとき(ステップ502)に開始する。この要求は、アドレス400、L1キャッシュ112を識別するL1キャッシュナンバー、および、ラインが取り出された後に格納されるL1キャッシュ112内のウェイ位置を含む。
次に、リクエストが、L2キャッシュ106内でミスを生成した場合、システムは、ラインをメモリ102からL2キャッシュ106へ取り出す(ステップ504)。この取り出しが発生し、L2キャッシュ106内の存在するエントリが無効にされるべきであれば、次いで、リバースディレクトリ302内の対応するエントリは、無効にされなくてはならない。
続いて、システムは、ラインをL2キャッシュ106から取り出し、そのラインをL1キャッシュ112へ送信する(ステップ506)。
システムはまた、リバースディレクトリ302に対するエントリ430を構築する(ステップ508)。このエントリは、図4を参照して上述されたように、打ち切られたL2セットナンバー424、L2ウェイナンバー429、および、有効ビット427を含む。
続いて、システムは、リバースディレクトリ302内のある位置へ、エントリを格納する(ステップ510)。この位置は、アイテムのナンバーによって決定される。L2バンクナンバー406から、システムは、L2バンク202を探索することを知る。L1キャッシュナンバーから、システムは、L1キャッシュ112と関連するブロック312を見ることを知る。アドレス400から、システムは、特定のL1セットと関連する行を決定する。要求を受け取ったL1ウェイ位置から、システムは、行内の列を決定する。
(リバースディレクトリエントリを利用するプロセス)
図6は、本発明の実施形態に従って、無効化を実行するために、リバースディレクトリエントリを利用するプロセスを示す。システムは、L2キャッシュ106のアップデートを発生させる要求を受信する(ステップ602)ことによって、開始する。この要求は、別のプロセッサによる目標エントリにおける格納ヒット、ロードミス、または、格納ミスを含む。
続いて、システムは、リバースディレクトリ302内に要求に対するエントリを再構築する。これは、目標エントリが位置するL2ウェイナンバー429を決定するために、L2キャッシュ106内のルックアップを実行する(ステップ604)ことと、図4に示されるようにアドレス400からL2セットナンバー404を取り出す(ステップ606)ことによって、達成される。これらの値は、リバースディレクトリエントリ130を構築するために結合される。
次に、システムは、このエントリを利用して、どのL1キャッシュがエントリを含むかを決定するために、リバースディレクトリエントリ302を検索する(ステップ608)。留意すべきは、システムは、L2バンクナンバー406によって特定されるL2キャッシュ206のバンクと関連するリバースディレクトリを、検索しなければならないだけであることである。さらに、リバースディレクトリ内のセットナンバーは、アドレスから決定することができ、つまり、検索は、各セットに対する4つの可能な「ウェイ」におけるエントリを考慮しなくてはならないだけである。また留意すべきは、要求が、別のプロセッサによる格納ヒットである場合、システムは、格納ヒットを引き起こしたプロセッサに対するバンクを検索しなくてもよいことである。
エントリを含む各L1キャッシュに対して、システムは、L1キャッシュへ無効メッセージを送信する。この無効メッセージは、L1ウェイナンバーを含み、その結果、L1キャッシュにおけるアソシアティブルックアップは、回避され得る。システムはまた、対応するリバースディレクトリエントリをアップデートして、そのリバースディレクトリエントリが無効化されたことを指示する(ステップ610)。
本発明の実施形態の上述の説明は、図および記載のためにのみ示された。これらは、包括的であり、開示された形式に対して本発明を制限することを、意図されない。従って、多くの改変および変更が、当業者にとって理解される。つまり、上述の開示は、本発明を制限することが意図されない。本発明の範囲は、付属の特許請求の範囲によって定義される。
図1Aは、マルチプロセッサシステムを示す。 図1Bは、本発明の実施形態に従った、リバースディレクトリを有するマルチプロセッサシステムを示す。 図2は、本発明の実施形態に従った、マルチプロセッサシステム内の多重バンクを有するL2キャッシュを示す。 図3は、本発明の実施形態に従った、リバースディレクトリを示す。 図4は、本発明の実施形態に従った、リバースディレクトリエントリを示す。 図5は、本発明の実施形態に従った、リバースディレクトリエントリを生成し、アップデートするプロセスを示すフローチャートである。 図6は、本発明の実施形態に従った、無効化を実行するために、リベースディレクトリエントリを利用するプロセスを示すフローチャートである。

Claims (17)

  1. マルチプロセッサシステムであって、
    複数のプロセッサと、
    複数のバンクを備えている下位レベルキャッシュと、
    該複数のプロセッサに接続された複数の上位レベルキャッシュと、
    複数のリバースディレクトリと
    を備え、
    該複数の上位レベルキャッシュの各々は、該下位レベルキャッシュを介してメモリアクセスを実行するように構成され、
    該複数のリバースディレクトリの各々は、該複数のバンクのうちの対応する1つのバンクに接続され、
    該複数のリバースディレクトリの各々は、複数のブロックを備え、
    該複数の上位レベルキャッシュの各々は、該複数のリバースディレクトリの各々における該複数のブロックのうちの対応する1つのブロックに対応し、
    該複数のブロックのうちの該対応する1つのブロックは、該複数の上位レベルキャッシュのうちの対応する1つの上位レベルキャッシュにおけるラインに対するエントリを含み、
    各エントリは、該複数のバンクのうちの対応する1つのバンクにおける関連するエントリを識別し、
    該下位レベルキャッシュは、
    該下位レベルキャッシュからラインを取り出すための上位レベルキャッシュからの要求を受信するように構成され、
    該ラインが該下位レベルキャッシュ内に存在する場合に、該下位レベルキャッシュは、
    該ラインが該上位レベルキャッシュ内に格納され得るように、該上位レベルキャッシュへ該ラインを送信し、
    該ラインが該上位レベルキャッシュ内に格納されていることを指示するために、該複数のブロックのうちの対応する1つのブロックに情報を格納する
    ように構成され、
    該上位レベルキャッシュは、Nウェイセットアソシアティブキャッシュであり、
    該ラインが該下位レベルキャッシュ内に存在する場合に、該下位レベルキャッシュは、該複数のブロックのうちの対応する1つのブロック内の所定の位置に該情報を格納するようにさらに構成され、該所定の位置は、該ラインが格納されるべき上位レベルキャッシュにおけるウェイ位置を識別するウェイ情報に対応し、
    該マルチプロセッサシステムは、該上位レベルキャッシュにおける該ラインの該ウェイ位置を決定するために、該上位レベルキャッシュ内のルックアップを実行する必要なく、該上位レベルキャッシュにおける該ラインを無効化する、続く無効化オペレーションの間に、該ウェイ情報を利用するようにさらに構成される、マルチプロセッサシステム。
  2. 前記下位レベルキャッシュは、前記ラインが該下位レベルキャッシュ内に存在しない場合に、該下位レベルキャッシュへ該ラインを引き出すために、ミスを生成するようにさらに構成される、請求項1に記載のマルチプロセッサシステム。
  3. 前記下位レベルキャッシュは、
    該下位レベルキャッシュ内の目標エントリをアップデートさせるアップデート要求を受信し、
    前記複数のリバースディレクトリのうちの1つにおいてルックアップを実行することにより、該目標エントリが1つ以上の上位レベルキャッシュ内に含まれるかどうかを決定し、
    該目標エントリを含む各上位レベルキャッシュに対して、
    該目標エントリを無効化するために、該上位レベルキャッシュに無効要求を送信し、
    該目標エントリが該上位レベルキャッシュ内で無効化されたことを指示するために、該複数のブロックのうちの対応する1つのブロック内の対応するエントリをアップデートする
    ようにさらに構成される、請求項1に記載のマルチプロセッサシステム。
  4. 前記アップデート要求は、
    ロードミスと、
    格納ミスと、
    前記目標エントリ上の格納ヒットと
    のうちの1つを含む、請求項3に記載のマルチプロセッサシステム。
  5. 前記アップデート要求が格納ヒットである場合に、前記下位レベルキャッシュは、前記複数のリバースディレクトリのうちの1つにおいて、前記複数の上位レベルキャッシュのうちの該格納ヒットを発生させた上位レベルキャッシュを除いた上位レベルキャッシュ内の前記目標エントリをルックアップするようにさらに構成される、請求項4に記載のマルチプロセッサシステム。
  6. 前記複数のブロックの各々は、前記複数の上位レベルキャッシュの各々における各エントリに対応する固定されたエントリを含む、請求項1に記載のマルチプロセッサシステム。
  7. 各エントリは、前記下位レベルキャッシュ内の対応するエントリの位置を特定する情報を含む、請求項6に記載のマルチプロセッサシステム。
  8. 前記下位レベルキャッシュは、Mウェイセットアソシアティブキャッシュとして組織化され、
    前記複数のブロックのうちの1つのブロック内の各エントリは、
    該下位レベルキャッシュ内の対応するエントリのウェイ位置を識別するウェイ識別子と、
    該下位レベルキャッシュ内の該対応するエントリのセット位置を識別するセット識別子であって、該複数のブロックのうちの該1つのブロック内の該エントリの位置から推察され得るセット情報を含まないセット識別子と、
    該複数のブロックのうちの該1つのブロック内の該エントリが有効であるかどうかを指示する有効フラグと
    を含む、請求項6に記載のマルチプロセッサシステム。
  9. 前記マルチプロセッサシステムは、単一の半導体チップ上に配置される、請求項1に記載のマルチプロセッサシステム。
  10. 前記下位レベルキャッシュは、L2キャッシュであり、
    前記複数の上位レベルキャッシュの各々は、L1キャッシュである、請求項1に記載のマルチプロセッサシステム。
  11. 前記複数の上位レベルキャッシュは、ライトスルーキャッシュとして組織化されることにより、該複数の上位レベルキャッシュに対するアップデートが、前記下位レベルキャッシュに直ちにライトスルーされる、請求項1に記載のマルチプロセッサシステム。
  12. 前記下位レベルキャッシュの複数のバンクは、並行にアクセスされ得る、請求項1に記載のマルチプロセッサシステム。
  13. 単一チップマルチプロセッサシステムであって、
    半導体チップと、
    該半導体チップ内の複数のプロセッサと、
    複数のバンクを備えている該半導体チップ内のL2キャッシュと、
    該半導体チップ内にあり、該複数のプロセッサに接続された複数のL1キャッシュと、
    複数のリバースディレクトリと
    を備え、
    該複数のL1キャッシュの各々は、該L2キャッシュを介してメモリアクセスを実行するように構成され、
    該複数のL1キャッシュは、ライトスルーキャッシュとして組織化されることにより、該複数のL1キャッシュに対するアップデートが、直ちに該L2キャッシュにライトスルーされ、
    該複数のリバースディレクトリの各々は、該複数のバンクのうちの対応する1つのバンクに接続され、
    該複数のリバースディレクトリの各々は、複数のブロックを備え、
    該複数のL1キャッシュの各々は、該複数のリバースディレクトリの各々における該複数のブロックのうちの対応する1つのブロックに対応し、
    該複数のブロックのうちの該対応する1つのブロックは、該複数のL1キャッシュの各々における各エントリに対応する固定されたエントリを含み、
    固定されたエントリの各々は、該複数のバンクのうちの対応する1つのバンク内の関連するエントリを識別し、
    該L2キャッシュは、
    該L2キャッシュからラインを取り出すためのL1キャッシュからの要求を受信するように構成され、
    該ラインが該L2キャッシュ内に存在する場合に、該L2キャッシュは、
    該ラインが該L1キャッシュ内に格納され得るように、該L1キャッシュへ該ラインを送信し、
    該ラインが該L1キャッシュ内に格納されていることを指示するために、該複数のブロックのうちの対応する1つのブロックに情報を格納する
    ように構成され、
    該L1キャッシュは、Nウェイセットアソシアティブキャッシュであり、
    該ラインが該L2キャッシュ内に存在する場合に、該L2キャッシュは、該複数のブロックのうちの対応する1つのブロック内の所定の位置に該情報を格納するようにさらに構成され、該所定の位置は、該ラインが格納されるべきL1キャッシュにおけるウェイ位置を識別するウェイ情報に対応し、
    該マルチプロセッサシステムは、該L1キャッシュにおける該ラインの該ウェイ位置を決定するために、該L1キャッシュ内のルックアップを実行する必要なく、該L1キャッシュにおける該ラインを無効化する、続く無効化オペレーションの間に、該ウェイ情報を利用するようにさらに構成される、単一チップマルチプロセッサシステム。
  14. コンピュータシステム内で動作する方法であって、該コンピュータシステムは、下位レベルキャッシュを介してデータにアクセスする複数の上位レベルキャッシュを含み、該方法は、
    該下位レベルキャッシュからラインを取り出すための上位レベルキャッシュからの要求を受信することと、
    該ラインが該下位レベルキャッシュ内に存在する場合に、
    該ラインが該上位レベルキャッシュ内に格納され得るように、該上位レベルキャッシュへ該ラインを送信することと、
    該ラインが該上位レベルキャッシュ内に格納されていることを指示するために、該下位レベルキャッシュに配置されるリバースディレクトリに情報を格納することと
    を含み、
    該リバースディレクトリは、該複数の上位レベルキャッシュ内のラインに対するエントリを含み、各エントリは、該下位レベルキャッシュ内の関連するエントリを識別し、該リバースディレクトリは、該リバースディレクトリ内の該エントリが有効であるかどうかを指示する有効フラグを含み、
    該上位レベルキャッシュは、Nウェイセットアソシアティブキャッシュであり、
    該リバースディレクトリに情報を格納することは、該リバースディレクトリの所定の位置に該情報を格納することを含み、該所定の位置は、該ラインが格納されるべき上位レベルキャッシュにおけるウェイ位置を識別するウェイ情報に対応し、
    該方法は、該上位レベルキャッシュにおける該ラインの該ウェイ位置を決定するために、該上位レベルキャッシュ内のルックアップを実行する必要なく、該上位レベルキャッシュにおける該ラインを無効化する、続く無効化オペレーションの間に、該ウェイ情報を利用することをさらに含む、方法。
  15. コンピュータシステム内で動作する方法であって、該コンピュータシステムは、下位レベルキャッシュを介してデータにアクセスする複数の上位レベルキャッシュを含み、該方法は、
    該下位レベルキャッシュからラインを取り出すための上位レベルキャッシュからの要求を受信することと、
    該ラインが該下位レベルキャッシュ内に存在する場合に、
    該ラインが該上位レベルキャッシュ内に格納され得るように、該上位レベルキャッシュへ該ラインを送信することと、
    該ラインが該上位レベルキャッシュ内に格納されていることを指示するために、該下位レベルキャッシュに配置されるリバースディレクトリに情報を格納することと
    を含み、
    該リバースディレクトリは、該複数の上位レベルキャッシュ内のラインに対するエントリを含み、各エントリは、該下位レベルキャッシュ内の関連するエントリを識別し、該リバースディレクトリは、該リバースディレクトリ内の該エントリが有効であるかどうかを指示する有効フラグを含み、
    該方法は、
    該下位レベルキャッシュ内の目標エントリをアップデートさせるアップデート要求を受信することと、
    該リバースディレクトリ内でルックアップを実行することにより、該目標エントリが1つ以上の上位レベルキャッシュ内に含まれるかどうかを決定することと、
    該目標エントリを含む各上位レベルキャッシュに対して、
    該目標エントリを無効化するために、該上位レベルキャッシュに無効要求を送信することであって、該無効要求は、該上位レベルキャッシュにおけるアソシアティブルックアップを避けることができるように、該上位レベルキャッシュにおけるウェイ位置を含む、ことと、
    該目標エントリが該上位レベルキャッシュ内で無効化されたことを指示するために、該リバースディレクトリ内の対応するエントリをアップデートすることと
    をさらに含む、方法。
  16. 前記アップデート要求は、
    ロードミスと、
    格納ミスと、
    前記目標エントリ上の格納ヒットと
    のうちの1つを含む、請求項15に記載の方法。
  17. 前記アップデート要求が格納ヒットである場合に、前記リバースディレクトリ内の前記ルックアップは、前記複数の上位レベルキャッシュのうちの該格納ヒットを発生させた上位レベルキャッシュを除いた上位レベルキャッシュ内の前記目標エントリをルックアップすることを含む、請求項16に記載の方法。
JP2002582365A 2001-04-11 2002-04-11 下位レベルのキャッシュを含むアクセスを促進するためのリバースディレクトリ Expired - Lifetime JP4162493B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US28325401P 2001-04-11 2001-04-11
US10/061,502 US6684297B2 (en) 2001-04-11 2002-01-31 Reverse directory for facilitating accesses involving a lower-level cache
PCT/US2002/011560 WO2002084492A2 (en) 2001-04-11 2002-04-11 Reverse directory for facilitating accesses involving a lower-level cache

Publications (2)

Publication Number Publication Date
JP2005509204A JP2005509204A (ja) 2005-04-07
JP4162493B2 true JP4162493B2 (ja) 2008-10-08

Family

ID=26741138

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002582365A Expired - Lifetime JP4162493B2 (ja) 2001-04-11 2002-04-11 下位レベルのキャッシュを含むアクセスを促進するためのリバースディレクトリ

Country Status (8)

Country Link
US (1) US6684297B2 (ja)
EP (1) EP1537485B1 (ja)
JP (1) JP4162493B2 (ja)
KR (1) KR100851738B1 (ja)
AU (1) AU2002250576A1 (ja)
DE (1) DE60232552D1 (ja)
TW (1) TW567415B (ja)
WO (1) WO2002084492A2 (ja)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8185602B2 (en) 2002-11-05 2012-05-22 Newisys, Inc. Transaction processing using multiple protocol engines in systems having multiple multi-processor clusters
US7139881B2 (en) * 2003-09-25 2006-11-21 International Business Machines Corporation Semiconductor device comprising a plurality of memory structures
US7716377B2 (en) * 2005-05-25 2010-05-11 Harris Steven T Clustering server providing virtual machine data sharing
JP4920378B2 (ja) * 2006-11-17 2012-04-18 株式会社東芝 情報処理装置およびデータ検索方法
US8151059B2 (en) * 2006-11-29 2012-04-03 Intel Corporation Conflict detection and resolution in a multi core-cache domain for a chip multi-processor employing scalability agent architecture
US8028131B2 (en) * 2006-11-29 2011-09-27 Intel Corporation System and method for aggregating core-cache clusters in order to produce multi-core processors
US20090210629A1 (en) * 2008-02-15 2009-08-20 International Business Machines Corporation Method, system and computer program product for selectively purging cache entries
US8095736B2 (en) * 2008-02-25 2012-01-10 Telefonaktiebolaget Lm Ericsson (Publ) Methods and systems for dynamic cache partitioning for distributed applications operating on multiprocessor architectures
JP4821887B2 (ja) 2009-06-08 2011-11-24 日本電気株式会社 コヒーレンシ制御システム、コヒーレンシ制御装置及びコヒーレンシ制御方法
US8639885B2 (en) * 2009-12-21 2014-01-28 Oracle America, Inc. Reducing implementation costs of communicating cache invalidation information in a multicore processor
US8521960B2 (en) 2010-06-23 2013-08-27 International Business Machines Corporation Mitigating busy time in a high performance cache
CN102117262B (zh) * 2010-12-21 2012-09-05 清华大学 用于多核处理器的Cache的主动复制方法及系统
KR102366808B1 (ko) 2014-10-22 2022-02-23 삼성전자주식회사 캐시 메모리 시스템 및 그 동작방법
US9720834B2 (en) * 2015-12-11 2017-08-01 Oracle International Corporation Power saving for reverse directory
US10956339B2 (en) 2016-07-14 2021-03-23 Advanced Micro Devices, Inc. System and method for storing cache location information for cache entry transfer

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0512117A (ja) * 1991-07-04 1993-01-22 Toshiba Corp キヤツシユ一致化方式
US5553263A (en) * 1993-07-16 1996-09-03 Unisys Corporation Cache memory system with fault tolerance having concurrently operational cache controllers processing disjoint groups of memory
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
JP3872118B2 (ja) * 1995-03-20 2007-01-24 富士通株式会社 キャッシュコヒーレンス装置
KR0159699B1 (ko) * 1996-06-12 1999-01-15 김광호 냉장고
US6122709A (en) * 1997-12-19 2000-09-19 Sun Microsystems, Inc. Cache with reduced tag information storage
US6151655A (en) * 1998-04-30 2000-11-21 International Business Machines Corporation Computer system deadlock request resolution using timed pulses
US6349363B2 (en) * 1998-12-08 2002-02-19 Intel Corporation Multi-section cache with different attributes for each section
US6338119B1 (en) * 1999-03-31 2002-01-08 International Business Machines Corporation Method and apparatus with page buffer and I/O page kill definition for improved DMA and L1/L2 cache performance
US6725334B2 (en) * 2000-06-09 2004-04-20 Hewlett-Packard Development Company, L.P. Method and system for exclusive two-level caching in a chip-multiprocessor

Also Published As

Publication number Publication date
EP1537485A2 (en) 2005-06-08
DE60232552D1 (de) 2009-07-16
AU2002250576A1 (en) 2002-10-28
EP1537485B1 (en) 2009-06-03
JP2005509204A (ja) 2005-04-07
WO2002084492A2 (en) 2002-10-24
TW567415B (en) 2003-12-21
US6684297B2 (en) 2004-01-27
KR100851738B1 (ko) 2008-08-11
US20020178329A1 (en) 2002-11-28
KR20040063793A (ko) 2004-07-14
WO2002084492A3 (en) 2005-04-14

Similar Documents

Publication Publication Date Title
US7536513B2 (en) Data processing system, cache system and method for issuing a request on an interconnect fabric without reference to a lower level cache based upon a tagged cache state
US4774654A (en) Apparatus and method for prefetching subblocks from a low speed memory to a high speed memory of a memory hierarchy depending upon state of replacing bit in the low speed memory
US9176876B2 (en) Selective cache-to-cache lateral castouts
US7669010B2 (en) Prefetch miss indicator for cache coherence directory misses on external caches
US8489819B2 (en) Victim cache lateral castout targeting
US8117397B2 (en) Victim cache line selection
US8499124B2 (en) Handling castout cache lines in a victim cache
US6826651B2 (en) State-based allocation and replacement for improved hit ratio in directory caches
KR100704089B1 (ko) L2 디렉토리를 이용한 멀티프로세서 시스템의 가-로드촉진 방법 및 장치
JP4162493B2 (ja) 下位レベルのキャッシュを含むアクセスを促進するためのリバースディレクトリ
KR20040012812A (ko) L2 디렉토리를 이용한 멀티프로세서 시스템의 가-저장촉진 방법 및 장치
US6763433B1 (en) High performance cache intervention mechanism for symmetric multiprocessor systems
US20020078304A1 (en) System and method for allocating a directory entry for use in multiprocessor-node data processing systems
EP2122470B1 (en) System and method for implementing an enhanced hover state with active prefetches
JP3245125B2 (ja) 垂直キャッシュのための擬似精細i−キャッシュ包含性
JP2004528647A (ja) サイクルあたりの多重キャッシュライン無効化をサポートするための方法および装置
US20090198910A1 (en) Data processing system, processor and method that support a touch of a partial cache line of data
JP2001249846A (ja) キャッシュメモリ装置及びデータ処理システム
US20020002659A1 (en) System and method for improving directory lookup speed
US7383390B1 (en) Resource-limited directories with fine-grained eviction
JPH10232831A (ja) キャッシュ・タグ維持装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20050328

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20070724

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070803

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20071102

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20071115

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080213

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080311

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

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20080321

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080408

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080612

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

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

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

Free format text: PAYMENT UNTIL: 20110801

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4162493

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20110801

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20120801

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

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

Free format text: PAYMENT UNTIL: 20130801

Year of fee payment: 5

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term