JP3714617B2 - キャッシュ階層で首尾一貫性を維持する方法、コンピュータ・システム、及び処理ユニット - Google Patents

キャッシュ階層で首尾一貫性を維持する方法、コンピュータ・システム、及び処理ユニット Download PDF

Info

Publication number
JP3714617B2
JP3714617B2 JP2002031401A JP2002031401A JP3714617B2 JP 3714617 B2 JP3714617 B2 JP 3714617B2 JP 2002031401 A JP2002031401 A JP 2002031401A JP 2002031401 A JP2002031401 A JP 2002031401A JP 3714617 B2 JP3714617 B2 JP 3714617B2
Authority
JP
Japan
Prior art keywords
cache
processing unit
value
lower level
invalidation
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 - Fee Related
Application number
JP2002031401A
Other languages
English (en)
Other versions
JP2002259211A (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 JP2002259211A publication Critical patent/JP2002259211A/ja
Application granted granted Critical
Publication of JP3714617B2 publication Critical patent/JP3714617B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • 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/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0846Cache with multiple tag or data arrays being simultaneously accessible
    • G06F12/0848Partitioned cache, e.g. separate instruction and operand caches

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)

Description

【0001】
【発明の属する技術分野】
本発明は一般的にはコンピュータ・システムに関し、具体的には、メモリ値(プログラム命令及びオペランド・データ)を共有するキャッシュを有するマルチプロセッサ・コンピュータ・システムに関し、更に具体的には、分岐した命令キャッシュ及びデータ・キャッシュを有するキャッシュ・アーキテクチャでキャッシュの首尾一貫性を維持する改善された方法に関する。
【0002】
【従来の技術】
通常のマルチプロセッサ・コンピュータ・システム10の基本構造が図1に示される。コンピュータ・システム10は幾つかの処理ユニットを有する(2つの処理ユニット12a及び12bが示される)。処理ユニットは、入力/出力(I/O)装置14(例えば、ディスプレイ装置、キーボード、グラフィカル・ポインタ(マウス)、及びパーマネント記憶装置又はハード・ディスク)を含む様々な周辺装置、プログラム命令を実行するため処理ユニットによって使用されるメモリ装置16(例えば、ランダム・アクセス・メモリ(RAM))、及びコンピュータが最初にオンにされたとき周辺装置の1つ(通常はパーマネント・メモリ装置)からオペレーティング・システムを見つけ出してロードすることを主な目的とするファームウェア18へ接続される。処理ユニット12a及び12bは、汎用相互接続(generalized interconnect)又はバス20を含む様々な手段、又はダイレクト・メモリ・アクセス・チャネル(図示されていない)によって周辺装置と通信する。コンピュータ・システム10は、図示されない追加のコンポーネント、例えばモデム、プリンタ、又はスキャナへ接続するための直列、並列、及びユニバーサル・システム・バス(USB)ポートを有してよい。図1のブロック図に示されたコンポーネントと組み合わせて使用されてよい他のコンポーネントがある。例えば、ディスプレイ・アダプタは、ビデオ・ディスプレイ・モニタを制御するために使用されてよく、メモリ・コントローラは、メモリ16をアクセスするために使用することができる。更に、コンピュータは3つ以上の処理ユニットを有することができる。
【0003】
対称型マルチプロセッサ(SMP)コンピュータ・システムでは、全ての処理ユニットは、一般的に同じである。即ち、処理ユニットの全ては命令及びプロトコルの共通のセット及びサブセットを使用して作動し、一般的に同じアーキテクチャを有する。典型的なアーキテクチャは図1に示される。処理ユニットは、複数のレジスタ及び実行ユニットを有するプロセッサ・コア22を含む。これらのレジスタ及び実行ユニットは、コンピュータを操作するためプログラム命令を実行する。例示の処理ユニットは、IBM社(International Business Machines Corporation of Armonk, New York)によって市販されているPowerPC(商標)を含む。更に、処理ユニットは、1つ又は複数のキャッシュ、例えば命令キャッシュ24及びデータ・キャッシュ26を有することができる。これらのキャッシュは、高速メモリ装置を使用して実現される。キャッシュは、プロセッサによって反復的にアクセスされる値を一時的に記憶するため普通に使用される。それは、メモリ16から値をロードする追加の待ち時間を避けることによって、処理をスピードアップするためである。これらのキャッシュは、単一の集積チップ28の上でプロセッサ・コアと統合的にパッケージされるとき、「オンチップ」と呼ばれる。各々のキャッシュは、プロセッサ・コアとキャッシュ・メモリとの間のデータ及び命令の転送を管理するキャッシュ・コントローラ(図示されていない)に関連づけられている。
【0004】
処理ユニットは、追加のキャッシュ、例えばキャッシュ30を含むことができる。キャッシュ30は、レベル1キャッシュ24及び26をサポートするので、レベル2(L2)キャッシュと呼ばれる。言い換えれば、キャッシュ30は、メモリ16とオンボード・キャッシュとの間の仲介者として働き、オンボード・キャッシュよりも非常に大量の情報(命令及びデータ)を記憶することができるが、欠点としてアクセスが長くなる。例えば、キャッシュ30は512キロバイトの記憶容量を有するチップであってよく、その一方で、プロセッサは、総記憶容量が64キロバイトのオンボード・キャッシュを有するIBM PowerPC(商標)604シリーズ・プロセッサであってよい。キャッシュ30はバス20へ接続され、メモリ16からプロセッサ・コア22への情報の全てのロードは、キャッシュ30を通過しなければならない。図1は2レベルだけのキャッシュ階層を示すが、直列に接続されたキャッシュの多くのレベル(L3、L4など)が存在するマルチレベル・キャッシュ階層を設けることができる。
【0005】
マルチレベル・キャッシュにおいて、もし値のコピーがキャッシュの全てのレベルにあれば、キャッシュ階層は「包含的」であると呼ばれる。しかし、各々の値のコピーを低レベル・キャッシュに保持することは必要ではない。キャッシュが包含的であるかどうかを示すため、包含ビット・フィールドがキャッシュへ付け加えられてよい。例えば、3レベル・キャッシュ構造は包含的ではないL3キャッシュを備えてよく、L2キャッシュ内に存在する値はL3キャッシュ内に存在しないかも知れない。この例では、もしL2キャッシュが、処理ユニット・キャッシュのいずれにも存在しない値について読み出しコマンドを発行すれば、その値はL3キャッシュへ(必ずしも)ロードされることなくL2キャッシュへ渡されることができる。
【0006】
SMPコンピュータにおいて、首尾一貫的なメモリ・システムを提供すること、即ち、各々のメモリ・ロケーションへの書き込み操作が、全てのプロセッサのために或る順序で直列化されることが重要である。例として、メモリ内の或るロケーションが、一連の書き込み操作によって、連続した値1、2、3、4を取るように修正されると仮定する。キャッシュ首尾一貫性システムでは、全てのプロセッサは、所与のロケーションへの書き込みが、示された順序で起こることを観察するであろう。しかし、処理エレメントがメモリ・ロケーションへの書き込みを省略することは可能である。メモリ・ロケーションを読み出している所与の処理エレメントは、値2への更新を省略して、シーケンス1、3、4を認識することができる。これらの特性を実現するシステムは、「首尾一貫的」であると言われる。殆ど全ての首尾一貫性プロトコルは、キャッシュ・ブロックの粒状度サイズのみで作動する。即ち、首尾一貫性プロトコルは、キャッシュ・ブロックをベースとして、オペランド・データ又は命令の移動及び書き込み許可を制御し、各々のメモリ・ロケーションのために別々には制御しない。
【0007】
キャッシュの首尾一貫性を達成する多くのプロトコル及びテクニックが、当業者に知られている。首尾一貫性を維持するこれらメカニズムの全ては、所与の時点で所与のメモリ・ロケーション(キャッシュ・ブロック)への書き込み操作を許す「許可」を、ただ1つのプロセッサが有するようにプロトコルへ要求する。この要件の結果として、処理エレメントがメモリ・ロケーションへの書き込みを試みるとき、その処理エレメントは、ロケーションへの書き込みの希望を、全ての他の処理エレメントへ通知し、書き込みの実行許可を、全ての他の処理エレメントから受け取らなければならない。
【0008】
キャッシュの首尾一貫性を実現するために、データ処理システム内のプロセッサは、共通の汎用相互接続(即ち、バス20)を介して通信する。プロセッサは、相互接続を介して、メモリ・ロケーションからの読み出し希望、又は書き込み希望を示すメッセージを渡す。操作が相互接続の上に置かれたとき、他のプロセッサの全ては、この操作を「スヌープ」(監視)し、それらのキャッシュの状態が、要求された操作の進行を許すかどうかを決定し、もし許すならば、どのような条件で許すかを決定する。バス・トランザクションを履行してメモリの首尾一貫性を維持するため、スヌープ及びフォローアップ・アクションを必要とする幾つかのバス・トランザクションが存在する。スヌープ操作は、或るバス信号のアサーションによって生成される適格スヌープ要求の受け取りによってトリガされる。命令の処理は、スヌープ・ヒットが起こるときにのみ中断され、スヌープ状態マシンは、違反セクタの首尾一貫性を解決するため追加のキャッシュ・スヌープが必要であることを決定する。
【0009】
この通信が必要である理由は、キャッシュを有するシステムで、メモリの所与のブロックの最も近時の有効コピーが、システム・メモリ16からシステム内の1つ又は複数のキャッシュへ移動したかも知れないからである(前述したような)。もし1つのプロセッサ(例えば12a)が、そのキャッシュ階層の中に存在していないメモリ・ロケーションにアクセスしようとすれば、メモリ・ロケーションの実際の(現在の)値を含むブロックの正しいバージョンは、システム・メモリ16の中にあるか、他の処理ユニット、例えば処理ユニット12bの1つ又は複数のキャッシュの中にあるかも知れない。もし正しいバージョンが、システム内の1つ又は複数の他のキャッシュの中にあれば、システム・メモリの代わりにシステム内のキャッシュから正しい値を得ることが必要である。
【0010】
例えば、1つのプロセッサ12aがメモリ内のロケーションを読み出そうとしている場合を考える。それは、先ず、それ自身のL1キャッシュ(24又は26)をポーリングする。もしブロックがL1キャッシュに存在しなければ、要求はL2キャッシュ(30)へ転送される。もしブロックがL2キャッシュに存在しなければ、要求は、より低いキャッシュ・レベル、例えばL3キャッシュへ転送される。もしブロックが、より低いレベルのキャッシュに存在しなければ、要求は、サービスされる汎用相互接続(20)へ与えられる。一度、操作が汎用相互接続の上に置かれると、全ての他の処理ユニットは操作をスヌープし、ブロックが、それら処理ユニットのキャッシュに存在するかどうかを決定する。もし所与の処理ユニットが、処理ユニットによって要求されたブロックを、そのL1キャッシュの中に有し、そのブロック内の値が修正されており、より低いレベルのキャッシュもブロックのコピーを有するならば、それらのコピーは新鮮でない。なぜなら、プロセッサ・キャッシュ内のコピーは修正されているからである。従って、処理ユニットの最低レベルのキャッシュ(例えば、L3)が、読み出し操作をスヌープすれば、それは、要求されたブロックが、より高いレベルのキャッシュに存在して修正されたことを決定するであろう。これが、インライン・キャッシュ構造で起こるとき、L3キャッシュは、処理ユニットが後の時点で再びその操作を「再試行」しなければならないことを処理ユニットに通知するメッセージを、汎用相互接続の上に置く。なぜなら、メモリ・ロケーションの実際の値は、メモリ階層の最上部にあるL1キャッシュに存在し、イニシエートしている処理ユニットの読み出し要求のサービスに使用するため検索されなければならないからである。
【0011】
一度、イニシエートしている処理ユニットからの要求が再試行されると、L3キャッシュは、実施形態の詳細に依存して、修正された値をL1キャッシュから検索してL3キャッシュ、メイン・メモリ、又はこれらの双方で利用可能にするプロセスを開始する。より高いレベルのキャッシュからブロックを検索するためには、L3キャッシュは、キャッシュ間接続を介して、より高いレベルのキャッシュへ、ブロックが検索されるべきことを要求するメッセージを送る。これらのメッセージは、L1キャッシュへ達するまで処理ユニットの階層を上方へ伝搬し、ブロックが最低レベル(L3又はメイン・メモリ)まで階層を下方へ移動して、イニシエートしている処理ユニットからの要求にサービスできるようにする。
【0012】
イニシエートしている処理ユニットは、最終的に読み出し要求を汎用相互接続の上に再提示する。しかし、この時点で、修正された値は処理ユニットのL1キャッシュから検索されてシステム・メモリに置かれており、イニシエートしているプロセッサからの読み出し要求は満足させられるであろう。上述したシナリオは、通常、「スヌープ・プッシュ」と呼ばれている。読み出し要求は汎用相互接続の上でスヌープされる。これは、イニシエートしている処理ユニットから出された読み出し要求を満足させるため、処理ユニットによってブロックが階層の底へ「プッシュ」されるようにする。
【0013】
従って、プロセッサがブロックを読み出すか書き込みたいとき、プロセッサは、キャッシュの首尾一貫性を維持するため、システム内の他の処理ユニットへ、その希望を通信しなければならない。これを達成するため、キャッシュ首尾一貫性プロトコルは、キャッシュ階層の各々のレベルの各々のブロックに、ブロックの現在の「状態」を示す状態インディケータを関連づける。状態情報は、首尾一貫性プロトコルの中で汎用相互接続及びキャッシュ間接続におけるメッセージ・トラフィックを減少させる或る最適化を可能にするために使用される。このメカニズムの1つの例として、処理ユニットが読み出しを実行するとき、処理ユニットは、読み出しが再試行されなければならない(即ち、後で再発行されなければならない)かどうかを示すメッセージを受け取る。もし読み出し操作が再試行されなければ、メッセージは、通常、更に他の処理ユニットもブロックの依然としてアクティブなコピーを有するかどうかを処理ユニットに決定させる情報を含む(これは、再試行しない読み出しについて、他の最低レベル・キャッシュに「共有」又は「非共有」表示を与えさせることによって達成される)。従って、処理ユニットは、システム内の他のプロセッサがブロックのコピーを有しているかどうかを決定することができる。もし他の処理ユニットがブロックのアクティブ・コピーを有していなければ、読み出している処理ユニットは、ブロックの状態を「排他的」とマークする。もしブロックが排他的とマークされれば、システム内の他の処理ユニットと最初に通信することなく、処理ユニットに後でブロックへ書き込ませることが許される。なぜなら、他の処理ユニットは、ブロックのコピーを有しないからである。従って、プロセッサは、この意図を相互接続の上へ最初に通信することなく、ロケーションから読み出すか書き込むことが可能である。しかし、これは、他のプロセッサがブロックに興味を有しないことを、首尾一貫性プロトコルが確認した場合に限る。
【0014】
上記のキャッシュ首尾一貫性テクニックは、「MESI」と呼ばれる特別のプロトコルで実行される。このプロトコルでは、キャッシュ・ブロックは、4つの状態、即ち「M」(修正)、「E」(排他的)、「S」(共有)、又は「I」(無効)の1つであることができる。MESIプロトコルのもとでは、各々のキャッシュ・ブロック(例えば、32バイト・ブロック)は、4つの可能な状態から、エントリの状態を示す2つの追加ビットを有する。ブロックの最初の状態、及び要求しているプロセッサによって求められているアクセスのタイプに依存して、状態が変更されてよく、要求しているプロセッサのキャッシュの中のブロックについて、特定の状態が設定される。例えば、ブロックが修正状態にあるとき、アドレスされたブロックは、修正されたブロックを有するキャッシュの中でのみ有効であり、修正された値は、システム・メモリへ書き戻されていない。ブロックが排他的であるとき、それは指摘されたブロックの中にのみ存在し、システム・メモリと首尾一貫している。もしブロックが共有されていれば、それは、そのキャッシュの中、また可能性として少なくとも1つの他のキャッシュの中で有効であり、共有されたブロックの全てはシステム・メモリと首尾一貫している。最後に、ブロックが無効であるとき、それは、アドレスされたブロックがキャッシュの中に存在していないことを示す。
【0015】
キャッシュ命令は、プロセッサによって実行されるソフトウェアがキャッシュを管理することを可能にする。幾つかの命令はスーパーバイザ・レベルであり(コンピュータのオペレーティング・システムによってのみ実行され)、幾つかの命令はユーザ・レベルである(アプリケーション・プログラムによって実行される)。フラッシュ命令(データ・キャッシュ・ブロック・フラッシュ「dcbf」)は、もしキャッシュ・ブロックがメモリ・ブロックの修正されていない(「共有」又は「排他的」)コピーを含むならば、キャッシュ・ブロックを無効にすることによってキャッシュ・ブロックを利用可能にするか、又は、もしキャッシュ・ブロックがメモリ・ブロックの修正されたコピーを含むならば、先ず修正された値をメモリ階層の下方へ書き込み(「プッシュ」)、その後でブロックを無効にすることによってキャッシュ・ブロックを利用可能にする。キル(kill)命令(データ・キャッシュ・ブロック無効化「dcbi」、命令キャッシュ・ブロック無効化「icbi」、又はデータ・キャッシュ・ブロック・ゼロ設定「dcbz」)はフラッシュ命令と類似しているが、キル命令はキャッシュ・ブロックを無効状態へ直ちに強制し、従って、修正されたブロックは、キャッシュからプッシュされることなくキルされる点が異なっている。修正されたブロックのみに作用するクリーン(clean)命令(データ・キャッシュ・ブロック記憶「dcbst」)は、修正されたブロックがメイン・メモリへ書き込まれるようにする。タッチ(touch)命令(データ・キャッシュ・ブロック・タッチ「dcbt」)は、ソフトウェア・イニシエート・プリフェッチ・ヒントの使用を介してパフォーマンスを改善する方法を提供する。
【0016】
上記のキャッシュ命令の全ては、プロセッサ首尾一貫性グラニュールと呼ばれるサイズを有するブロックの上で作動する。多くのコンピュータでは、プロセッサ首尾一貫性グラニュールは32バイトである。即ち、プロセッサは、L1キャッシュのキャッシュ・ブロックにおける32バイト・セクタの上で作動することができる。しかし、システム・バス・グラニュールは、それよりも大きく、例えば64バイト又は128バイトであってよい。即ち、L2キャッシュからシステム・バスへ転送されるキャッシュ・ラインのフルサイズは、64バイト又は128バイトである。言い換えれば、システム・バスに沿って送られる命令は、32バイトではなく、64バイト・ワード又は128バイト・ワードを参照する。首尾一貫性サイズは更に変動することができ、例えば2レベル・キャッシュで3つの首尾一貫性サイズを有する(32バイトのプロセッサ首尾一貫性グラニュール、64バイトのL1首尾一貫性グラニュール、及び128バイトのL2/システム・バス首尾一貫性グラニュール)。
【0017】
【発明が解決しようとする課題】
メモリ階層に沿った首尾一貫性サイズのこの変動は、或る非効率性を生じる。例えば、もしプロセッサが「icbi」命令を特定の32バイト・セクタへ発行すると、icbi操作はシステム・バス上を転送され、64バイト操作として取り扱われる。従って、もしプロセッサが、前の操作と同じ64バイト・ワードの一部分であった他の32バイト・セクタのために他の「icbi」操作を即時に発行するならば、従来のシステムは、2つの隣接した32バイト・セクタをキルするには単一のシステム・バス操作で十分であったにも拘わらず、第2の64バイト「icbi」操作を同じ64バイト・ワードへ送るであろう。他の問題は、2つの異なったプロセス又はスレッドが、同じバス操作の冗長な実行を生じるキャッシュの首尾一貫性命令を発行したときに生じる。例えば、キャッシュ操作キューは、同じオペランドを有する(即ち、正確に同じ32バイト・キャッシュ・セクタの上に働く)2つの「icbi」命令を含むかも知れない。これらの命令は、冗長なバス操作を生じる。
【0018】
icbi命令に伴う他の問題は、icbiバス操作がデータ処理システム内の全ての処理ユニットへグローバルにブロードキャストされなければならないことである。例えば、非常に大きなシステム、例えば256個のプロセッサを有する非均一メモリ・アクセス(non-uniform memory access(NUMA))システムでは、icbi操作は、256個の処理ユニットの各々へブロードキャストされなければならない。これは、命令キャッシュの首尾一貫性がソフトウェアによって維持されるアーキテクチャでは、命令を含むキャッシュ・ブロックが修正されるときにicbiが発行されなければならないからである。各々のスヌープされたicbi操作は、各々の処理ユニットでキャッシュ階層を上方へ伝搬しなければならない。これは、大きなマルチプロセッサ・システムで非常に深いicbiスヌープ・キューを必要とする。更に、これらの問題は、マルチプロセッサ・システムのスケーラビリティに悪影響を及ぼす。更に、競合するicbi命令は、ハードウェア・ロックを使用して解決されなければならない。従って、システム・バス・トラフィックの量を減少させる改善されたキャッシュ・トランザクション処理方法を案出することが望ましい。もし方法が、キャッシュの使用を更に効率的にするならば、更に利点があろう。
【0019】
【課題を解決するための手段】
本発明に従えば、キャッシュの首尾一貫性は、上位レベル(L1)キャッシュが、分岐した命令キャッシュ及びデータ・キャッシュ、即ちプログラム命令を記憶するL1命令キャッシュ及びオペランド・データを記憶するL1データ・キャッシュを有するコンピュータ・システムのキャッシュ階層で維持される。本発明の第1の実施形態において、L1データ・キャッシュはストアスルー型であり、各々の処理ユニットは更に低レベル(例えば、L2)キャッシュを有する。低レベル・キャッシュが、L1命令キャッシュ内のプログラム命令の無効化を要求するキャッシュ操作(即ち、記憶操作又はスヌープされたキル)を受け取るとき、L2キャッシュは、無効化トランザクション(例えば、icbi)を命令キャッシュへ送る。L2キャッシュは、命令及びデータの双方に対して完全に包含的である。本発明の第2の実施形態において、L1データ・キャッシュはライトバック型であり、プロセッサ・コア内の記憶アドレス・キューが使用されて、パイプラインされたアドレス・シーケンスが、メモリ階層の低レベル、即ちL2キャッシュへ連続的に伝搬されるか、又は、L2キャッシュが存在しなければ、システム・バスへ連続的に伝搬される。もしL2キャッシュが存在しなければ、キャッシュ操作は、L1命令キャッシュに対して直接スヌープされてよい。
【0020】
本発明の上記及び追加の目的、特徴、及び利点は、以下の詳細な説明で明らかになるであろう。
【0021】
【発明の実施の形態】
ここで図面、特に図2を参照すると、本発明に従って構成されたマルチプロセッサ・コンピュータ・システムの多数の処理ユニット40の1つの例示的実施形態が示される。本発明は、マルチプロセッサ・システム、例えば図2のシステムで命令キャッシュの首尾一貫性を取り扱う方法に向けられているが、本発明は、図2に示されない追加のハードウェア・コンポーネント又は異なった相互接続アーキテクチャ(又はこれらの双方)を有するコンピュータ・システムで実施されることができる。従って、本発明は図2に示されるデータ処理システムに限定されないことを、当業者は理解するであろう。
【0022】
処理ユニット40は、主としてプロセッサ・コア42及びL2キャッシュ44を含む。図示されるように、コア42は、分岐したL1命令キャッシュ及びデータ・キャッシュ、即ちプログラム命令及びオペランド・データを一時的に記憶する別々のL1命令キャッシュ46及びデータ・キャッシュ48を含む。L1データ・キャッシュ48は、コア42内のロード/記憶ユニット(LSU)50と通信する。LSU50は、コア42の命令ストリームの中にあるロード及び記憶プログラム命令に応答して、ロード(読み出し)及び記憶(書き込み)要求をL1データ・キャッシュ48へ発行する。この実施形態において、L1データ・キャッシュ48は、52で示されるようにストアスルー型キャッシュである。
【0023】
L2キャッシュ44は、命令及びデータの双方に対して完全に包含的である。即ち、L1命令キャッシュ46又はL1データ・キャッシュ48内の各々のキャッシュ・ラインは、L2キャッシュ44の中に、対応するキャッシュ・ラインを有する。(可能性として、)L1及びL2キャッシュの異なった粒度のために、L2キャッシュ44内の単一のキャッシュ・ラインは、命令値及びデータ値の双方を実際に含むことができ、従ってL2キャッシュ44内の各々のキャッシュ・ラインは、L2ディレクトリ56内に2つの包含ビットを設けられる。これらのビットの各々は、命令キャッシュ46及びデータ・キャッシュ48の各々に対応する。
【0024】
L2キャッシュ44は、L2キャッシュ・エントリ・アレイ54及びL2ディレクトリ56を含む。L2キャッシュ・エントリ・アレイ54は、実際のプログラム命令又はオペランド・データを含み、L2ディレクトリ56は、L2キャッシュ・エントリ・アレイ54の中に記憶された様々な値のアドレス、及び各々のラインの首尾一貫性状態並びに包含情報を含む。更に、L2キャッシュ44は、1つ又は複数の読み出し/クレイム(RC)マシン60及び1つ又は複数のスヌーパ(snooper)マシン62を含むキャッシュ・コントローラ58を含む。RCマシン60は、キャッシュ階層内の高いレベル、即ちL1データ・キャッシュ48から受け取られた要求にサービスする。スヌーパ・マシン62は、システム・バス64を介して他の処理ユニットから受け取られた要求にサービスする。L2キャッシュ44は、他の通常のエレメント、例えばシステム・バス64との通信を容易にする追加のインタフェース・ユニット(図示されていない)を含んでよい。
【0025】
もし第1の処理ユニット40のL2キャッシュ44が、命令キャッシュ46に関連づけられてオンにされた包含ビットを有するL2キャッシュ・ディレクトリ56の中のキャッシュ・ラインにヒットする記憶要求を、関連づけられたコア42から受け取るならば、L2キャッシュ44のRCマシン60は、関連づけられたL1命令キャッシュ46へicbiを発行して、修正されたキャッシュ・ラインの今や新鮮でなくなったコピーを無効にする。更に、もしL2ディレクトリ56が、キャッシュ・ラインが排他的にローカルで保持されている(例えば、「修正」又は「排他的」状態にある)ことを示さないならば、RCマシン60は、システム・バス64の上にキル操作を発行して、キャッシュ・ラインの他の処理ユニットのコピー(もしあれば)を無効にすることを、他の処理ユニット40内のキャッシュへ通知する。
【0026】
キル操作が、他の処理ユニット40のスヌーパ・マシン62によってシステム・バス64の上でスヌープされるとき、類似のプロセスが取られる。即ち、システム・バス64上でキル操作をスヌープすると、第2の処理ユニット40のスヌーパ・マシン62は、キル操作に含まれるターゲット・アドレスを利用して、そのL2ディレクトリ56にアクセスする。もしL2ディレクトリ56が、無効以外の首尾一貫性状態を示すならば、スヌーパ・マシン62は、L2ディレクトリ56を更新することによってキャッシュ・ラインを無効にする。更に、スヌーパ・マシン62は、ターゲット・キャッシュ・ラインに関連づけられた包含ビットをチェックし、命令キャッシュ46及びデータ・キャッシュ48の適切なものへ「(back invalidate)」(又はicbi)を送信し、ターゲット・キャッシュ・ラインの他のキャッシュされたコピーを無効にする。このように、本発明に従えば、キャッシュ・コントローラ58は、システム・バス64上のキル(又は他の)操作に応答して命令及びデータの双方の首尾一貫性を管理し、ソフトウェアによって生成される別個のicbi操作がシステム・バス64の上に存在する必要性を排除する。更なる注意として、例えば、システム・バス64の上に同期化操作を発行することによって、キル操作及び関連の無効化を同期化することが望ましいかも知れない。
【0027】
従って、本発明は、不必要なicbiトランザクションを排除することによって、バス・トラフィックを減少させる。実際に、本発明では、全てのicbiバス操作が排除されてよく、それによって全体的なシステム・パフォーマンス及びスケーラビリティが改善される。当業者は、このアプローチが、コードを修正するために使用されるパイプラインされたページ・コピー手順に対して特に有利であることを理解するであろう。典型的には多数の(例えば、32の)連続したicbiバス操作を生じる。
【0028】
本発明に従って構成されたマルチプロセッサ・データ処理システムの処理ユニット70の代替の実施形態が、図3に示される。処理ユニット70は、再び主としてプロセッサ・コア72及び包含的L2キャッシュ74を含む。プロセッサ・コア72は、分岐したL1命令キャッシュ76及びデータ・キャッシュ78を含む。これらL1キャッシュの各々は、コア72のロード/記憶ユニット(LSU)80と通信する。この実施形態において、L1データ・キャッシュ78は、ストアイン型のキャッシュである(即ち、ストアスルー型ではない)。パイプラインされたアドレス・シーケンスを、プロセッサ・コア内のロード/記憶ユニット80からL2キャッシュ74へ連続的に伝搬するため、記憶アドレス・キュー82が使用される。
【0029】
キャッシュ・ラインのコピーも命令キャッシュ76の中に保持されていることを示すように設定された包含ビットを有するキャッシュ・ラインにヒットするプロセッサ・コアからの記憶アドレスを受け取ったことに応答して、L2キャッシュ74内のRCマシンは、icbi信号を命令キャッシュ76へ送り、キャッシュ・ラインを無効にする。更に、前述したように、L2キャッシュ・ディレクトリ内で、命令キャッシュ76内に包含されているとしてマークされたキャッシュ・ラインにヒットするキル・トランザクションのスヌーピング(snooping)に応答して、L2キャッシュ74は、icbi信号を生成する。
【0030】
本発明に従ったデータ処理システムの他の代替実施形態が、図4に示される。図4は、図3の処理ユニットに類似した処理ユニット90を示す。処理ユニット90は、L1命令キャッシュ92、L1データ・キャッシュ94、ロード/記憶ユニット96、及び記憶アドレス・キュー98を含むが、L2キャッシュを含まない。L1データ・キャッシュ94は、ストアイン型(ライトバック型)キャッシュ又はストアスルー型キャッシュのいずれでもよい。
【0031】
この実施形態において、命令キャッシュ92は、記憶アドレス・キュー98及びシステム・バス100の双方をスヌープし、記憶操作又はキル操作を検出したことに応答して、そのディレクトリ内のスヌープ・ヒットに応答するターゲット・キャッシュ・ラインを無効にする。従って、この実施形態でも、icbi操作は、命令を含むキャッシュ・ラインの修正に応答して処理ユニット90の間でシステム・バス100の上を転送されることはない。なぜなら、命令キャッシュ・ラインの首尾一貫性は、ソフトウェアではなくキャッシュ・ハードウェアによって維持されるからである。もしソフトウェアがicbi命令を明示的に発行するならば、本発明の1つの実施形態におけるハードウェアが、icbiをノーオプ(noop)(無視)してよい。
【0032】
本発明は、特定の実施形態を参照して説明されたが、この説明は限定的な意味に解釈されてはならない。開示された実施形態の様々な修正、及び本発明の代替の実施形態は、本発明の説明を参照すれば当業者に明らかになるであろう。従って、添付のクレイムに定義された本発明の趣旨及び範囲から逸脱することなく、そのような修正を行うことができると思われる。
【0033】
まとめとして、本発明の構成に関して以下の事項を開示する。
(1)コンピュータ・システムの処理ユニットのキャッシュ階層で首尾一貫性を維持する方法であって、
少なくとも1つのプログラム命令に対応する値を、前記処理ユニットの上位レベル命令キャッシュ及び下位レベル・キャッシュに同時に保持し、
前記下位レベル・キャッシュで、前記値の無効化を要求する操作を受け取り、前記受け取りステップに応答して、前記値を識別する無効化トランザクションを、前記下位レベル・キャッシュから前記上位レベル命令キャッシュへ送る
ことを含む方法。
(2)前記受け取りステップは前記処理ユニットの前記コアから前記操作を受け取る、上記(1)に記載の方法。
(3)前記処理ユニットが第1の処理ユニットであり、前記受け取りステップは、前記コンピュータ・システムのシステム相互接続を介して、第2の処理ユニットから前記操作を受け取る、上記(1)に記載の方法。
(4)更に、前記下位レベル・キャッシュにおいて、前記値が前記上位レベル命令キャッシュの中に保持されているかどうかを示す包含ビットを維持することを含む、上記(1)に記載の方法。
(5)前記包含ビットが設定されていることを決定する前記更なるステップに応答して、前記送るステップが実行される、上記(4)に記載の方法。
(6)更に、前記無効化トランザクションを前記下位レベル・キャッシュと同期化させるステップを含む、上記(1)に記載の方法。
(7)前記送るステップがicbiトランザクションを送る、上記(1)に記載の方法。
(8)システム・メモリ装置と、
少なくとも第1及び第2の処理ユニットと、
前記システム・メモリ装置と前記第1及び第2の処理ユニットとを結合する相互接続と、
前記第1の処理ユニットは、上位レベル命令キャッシュ、上位レベル・データ・キャッシュ、及び下位レベル結合キャッシュを有し、
前記第1処理ユニットの前記下位レベル・キャッシュはコントローラを含み、前記コントローラは、前記上位レベル命令キャッシュにロードされた少なくとも1つのプログラム命令に対応する値の無効化を要求するキャッシュ操作の受け取りに応答して、前記値を識別する無効化要求を、前記第1の処理ユニットの前記上位レベル命令キャッシュへ送る、
コンピュータ・システム。
(9)更に、前記第1の処理ユニットは処理コアを含み、ここで前記コントローラは前記第1の処理ユニットの前記処理コアから前記キャッシュ操作を受け取る、上記(8)に記載のコンピュータ・システム。
(10)前記コントローラは、前記相互接続を介して前記第2の処理ユニットから前記操作を受け取る、上記(8)に記載のコンピュータ・システム。
(11)前記下位レベル・キャッシュは、前記値が前記上位レベル命令キャッシュの中に保持されているかどうかを示す包含ビットを含む、上記(8)に記載のコンピュータ・システム。
(12)前記コントローラは、前記包含ビットが設定されていることの決定に応答して前記無効化要求を送る、上記(11)に記載のコンピュータ・システム。
(13)前記コントローラは前記無効化を同期化する、上記(8)に記載のコンピュータ・システム。
(14)前記無効化要求がicbi要求である、上記(8)に記載のコンピュータ・システム。
(15)プログラム命令を実行する少なくとも1つの実行ユニットと、
下位レベル結合キャッシュ及び前記少なくとも1つの実行ユニットへ結合された上位レベル命令キャッシュ及び上位レベル・データ・キャッシュとを有し、
前記下位レベル・キャッシュはコントローラを含み、
前記コントローラは、前記上位レベル命令キャッシュにロードされた少なくとも1つのプログラム命令に対応する値の無効化を要求するキャッシュ操作の受け取りに応答して、前記値を識別する無効化要求を、前記上位レベル命令キャッシュへ送る、
処理ユニット。
(16)前記コントローラは、前記少なくとも1つの実行ユニットから前記キャッシュ操作を受け取る、上記(15)に記載の処理ユニット。
(17)前記コントローラは、前記相互接続を介して第2の処理ユニットから前記操作を受け取る、上記(15)に記載の処理ユニット。
(18)前記下位レベル・キャッシュは、前記値が前記上位レベル命令キャッシュの中に保持されているかどうか示す包含ビットを含む、上記(15)に記載の処理ユニット。
(19)前記コントローラは、前記包含ビットが設定されていることの決定に応答して前記無効化要求を送る、上記(18)に記載の処理ユニット。
(20)前記コントローラは前記無効化を同期化する、上記(15)に記載の処理ユニット。
(21)前記無効化要求がicbi要求である、上記(15)に記載の処理ユニット。
【図面の簡単な説明】
【図1】 従来技術のマルチプロセッサ・コンピュータ・システムを示すブロック図である。
【図2】 本発明に従って構成されたマルチプロセッサ・コンピュータ・システムの処理ユニットの1つの実施形態を示すブロック図であって、ストアスルー型L1データ・キャッシュを示し、L2キャッシュがキル(「icbi」)操作をL1命令キャッシュへ発行することを示す図である。
【図3】 本発明に従って構成されたマルチプロセッサ・コンピュータ・システムの処理ユニットの代替実施形態を示すブロック図であって、ストアイン(ライトバック)型L1データ・キャッシュを示し、L2キャッシュがキル(「icbi」)操作をL1命令キャッシュへ発行することを示す図である。
【図4】 本発明に従って構成されたマルチプロセッサ・コンピュータ・システムの処理ユニットの他の実施形態を示すブロック図であって、図3と類似のストアイン(ライトバック)型L1データ・キャッシュを示す図である。
【符号の説明】
10 マルチプロセッサ・コンピュータ・システム
12a、12b 処理ユニット(プロセッサ)
14 入力/出力(I/O)装置
16 システム・メモリ装置
18 ファームウェア
20 バス(汎用相互接続)
22 プロセッサ・コア
24 レベル1(L1)命令キャッシュ
26 レベル1(L1)データ・キャッシュ
28 集積チップ
30 レベル2(L2)キャッシュ
40 処理ユニット
42 プロセッサ・コア
44 L2キャッシュ
46 L1命令キャッシュ
48 L1データ・キャッシュ
50 ロード/記憶ユニット(LSU)
54 L2キャッシュ・エントリ・アレイ
56 L2ディレクトリ
58 キャッシュ・コントローラ
60 読み出し/クレイム(RC)マシン
62 スヌーパ・マシン
64 システム・バス
70 処理ユニット
72 プロセッサ・コア
74 L2キャッシュ
76 L1命令キャッシュ
78 L1データ・キャッシュ
80 ロード/記憶ユニット(LSU)
82 記憶アドレス・キュー
90 処理ユニット
92 L1命令キャッシュ
94 L1データ・キャッシュ
96 ロード/記憶ユニット
98 記憶アドレス・キュー
100 システム・バス

Claims (12)

  1. 上位レベル命令キャッシュを有するプロセッサ・コアと、下位レベル・キャッシュと、を備えた第1及び第2の処理ユニットと、これらの処理ユニットを結合するシステム・バスと、を有するコンピュータ・システムにおいて処理ユニット間のキャッシュ階層で同期化を行う方法であって、
    前記システム・バスを介して入力された少なくとも1つのプログラム命令に対応する値を、第1の処理ユニットの上位レベル命令キャッシュ及び下位レベル・キャッシュに保持するステップと、
    前記下位レベル・キャッシュで、前記プロセッサ・コアから記憶アドレス・キューを介して前記値の無効化を要求する操作を受け取るステップと、
    前記受け取るステップに応答して、前記値を識別する無効化トランザクションを、前記下位レベル・キャッシュから前記上位レベル命令キャッシュへ送るステップと、
    前記受け取るステップに応答して、同期化操作を行うための前記値を識別する無効化トランザクションを、前記下位レベル・キャッシュから前記システム・バスに発行し、この前記値を識別する無効化トランザクションを第2の処理ユニットが受け取るステップと、を含む方法。
  2. 前記下位レベル・キャッシュにおいて、前記値が前記上位レベル命令キャッシュの中に保持されているかどうかを示す包含ビットを維持するステップと、を含む請求項1に記載の方法。
  3. 前記包含ビットが設定されていることを決定する前記包含ビットを維持するステップに応答して、前記送るステップが実行される、請求項2に記載の方法。
  4. 前記送るステップがicbiトランザクションを送る、請求項1に記載の方法。
  5. システム・メモリ装置と、少なくとも第1及び第2の処理ユニットと、前記システム・メモリ装置と前記第1及び第2の処理ユニットとを結合するシステム・バスと、を有する処理ユニット間のキャッシュ階層で同期化を行うコンピュータ・システムであって、
    前記第1の処理ユニットは、上位レベル命令キャッシュを有するプロセッサ・コアと、コントローラを有する下位レベル・キャッシュと、前記システム・バスを介して入力された少なくとも1つのプログラム命令に対応する値を、第1の処理ユニットの上位レベル命令キャッシュ及び下位レベル・キャッシュに保持する手段と、を含み、
    前記コントローラが、前記プロセッサ・コアから記憶アドレス・キューを介して前記値の無効化を要求する操作を受け取る手段と、
    前記受け取る手段に応答して、前記値を識別する無効化トランザクションを、前記下位レベル・キャッシュから前記第1の処理ユニットの前記上位レベル命令キャッシュへ送る手段と、
    前記受け取る手段に応答して、同期化操作を行うための前期値を識別する無効化トランザクションを、前記下位レベル・キャッシュから前記システム・バスに発行し、この前記値を識別する無効化トランザクションを第2の処理ユニットが受け取る手段と、を含むコンピュータ・システム。
  6. 前記下位レベル・キャッシュは、前記値が前記上位レベル命令キャッシュの中に保持されているかどうかを示す包含ビットを有する請求項5に記載のコンピュータ・システム。
  7. 前記コントローラは、前記包含ビットが設定されていることの決定に応答して、前記送る手段を実行する、請求項6に記載のコンピュータ・システム。
  8. 前記送る手段が、icbiトランザクションを送る、請求項5に記載のコンピュータ・システム。
  9. プログラム命令を実行する少なくとも1つの実行ユニットと、コントローラを有する下位レベル・キャッシュと、前記少なくとも1つの実行ユニットへ結合された上位レベル命令キャッシュと、を有する処理ユニットであって、
    第1及び第2の処理ユニットはシステム・バスにより結合されるものであり、
    前記上位レベル命令キャッシュ及び下位レベル・キャッシュは、前記システム・バスを介して入力された少なくとも1つのプログラム命令に対応する値を保持するものであり、
    前記コントローラは、前記少なくとも1つの実行ユニットから記憶アドレス・キューを介して前記値の無効化を要求する操作を受け取るものであり、
    前記コントローラは、前記値の無効化を要求する操作を受け取った後、前記値を識別する無効化トランザクションを、前記上位レベル命令キャッシュへ送るとともに、前記システム・バスに同期化操作の発行を行い、他の処理ユニットのコントローラが、前記システム・バスを介して、前記コントローラから発行された前記値を識別する無効化トランザクションを受け取るものである、処理ユニット間のキャッシュ階層で同期化を行う処理ユニット。
  10. 前記下位レベル・キャッシュは、前記値が前記上位レベル命令キャッシュの中に保持されているかどうかを示す包含ビットを有する請求項9に記載の処理ユニット。
  11. 前記コントローラは、前記包含ビットが設定されていることの決定に応答して、前記無効化トランザクションを前記上位レベル命令キャッシュに送るものである、請求項10に記載の処理ユニット。
  12. 前記コントローラは、前記無効化トランザクションを前記上位レベル命令キャッシュに送る際に、icbiトランザクションを送るものである、請求項9に記載の処理ユニット。
JP2002031401A 2001-02-12 2002-02-07 キャッシュ階層で首尾一貫性を維持する方法、コンピュータ・システム、及び処理ユニット Expired - Fee Related JP3714617B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/782,578 US6662275B2 (en) 2001-02-12 2001-02-12 Efficient instruction cache coherency maintenance mechanism for scalable multiprocessor computer system with store-through data cache
US09/782578 2001-02-21

Publications (2)

Publication Number Publication Date
JP2002259211A JP2002259211A (ja) 2002-09-13
JP3714617B2 true JP3714617B2 (ja) 2005-11-09

Family

ID=25126487

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002031401A Expired - Fee Related JP3714617B2 (ja) 2001-02-12 2002-02-07 キャッシュ階層で首尾一貫性を維持する方法、コンピュータ・システム、及び処理ユニット

Country Status (2)

Country Link
US (1) US6662275B2 (ja)
JP (1) JP3714617B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010032435A1 (ja) * 2008-09-17 2010-03-25 パナソニック株式会社 キャッシュメモリ、メモリシステム、データコピー方法及びデータ書き換え方法

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7055003B2 (en) * 2003-04-25 2006-05-30 International Business Machines Corporation Data cache scrub mechanism for large L2/L3 data cache structures
US7594081B2 (en) 2004-09-10 2009-09-22 Cavium Networks, Inc. Direct access to low-latency memory
US7941585B2 (en) * 2004-09-10 2011-05-10 Cavium Networks, Inc. Local scratchpad and data caching system
DK1794979T3 (en) 2004-09-10 2017-07-24 Cavium Inc Selective copying of data structure
US20060080511A1 (en) * 2004-10-08 2006-04-13 International Business Machines Corporation Enhanced bus transactions for efficient support of a remote cache directory copy
US7475190B2 (en) * 2004-10-08 2009-01-06 International Business Machines Corporation Direct access of cache lock set data without backing memory
US20060195662A1 (en) * 2005-02-28 2006-08-31 Honeywell International, Inc. Method for deterministic cache partitioning
US7536513B2 (en) * 2005-03-31 2009-05-19 International Business Machines Corporation 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
US20070124543A1 (en) * 2005-11-28 2007-05-31 Sudhir Dhawan Apparatus, system, and method for externally invalidating an uncertain cache line
US20070150663A1 (en) 2005-12-27 2007-06-28 Abraham Mendelson Device, system and method of multi-state cache coherence scheme
US7577795B2 (en) * 2006-01-25 2009-08-18 International Business Machines Corporation Disowning cache entries on aging out of the entry
US20070233961A1 (en) * 2006-03-31 2007-10-04 Banning John P Multi-portioned instruction memory
WO2008047180A1 (en) * 2006-10-20 2008-04-24 Freescale Semiconductor, Inc. System and method for fetching an information unit
JP5019222B2 (ja) * 2007-11-13 2012-09-05 エヌイーシーコンピュータテクノ株式会社 マルチプロセッサシステム
US8200903B2 (en) 2008-02-14 2012-06-12 Hewlett-Packard Development Company, L.P. Computer cache system with stratified replacement
CN102508719B (zh) * 2011-11-22 2013-10-09 恒生电子股份有限公司 一种边缘触发模式的多连接数据接收方法及装置
US9383995B2 (en) * 2013-01-25 2016-07-05 Apple Inc. Load ordering in a weakly-ordered processor
US9378148B2 (en) 2013-03-15 2016-06-28 Intel Corporation Adaptive hierarchical cache policy in a microprocessor
US9405690B2 (en) * 2013-08-07 2016-08-02 Oracle International Corporation Method for storing modified instruction data in a shared cache
US10223026B2 (en) * 2013-09-30 2019-03-05 Vmware, Inc. Consistent and efficient mirroring of nonvolatile memory state in virtualized environments where dirty bit of page table entries in non-volatile memory are not cleared until pages in non-volatile memory are remotely mirrored
US10140212B2 (en) 2013-09-30 2018-11-27 Vmware, Inc. Consistent and efficient mirroring of nonvolatile memory state in virtualized environments by remote mirroring memory addresses of nonvolatile memory to which cached lines of the nonvolatile memory have been flushed
US9418009B2 (en) * 2013-12-27 2016-08-16 Intel Corporation Inclusive and non-inclusive tracking of local cache lines to avoid near memory reads on cache line memory writes into a two level system memory
US10977043B2 (en) * 2017-09-14 2021-04-13 International Business Machines Corporation Transactional memory performance and footprint
US10877888B2 (en) 2018-09-07 2020-12-29 Apple Inc. Systems and methods for providing distributed global ordering

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5926830A (en) * 1996-10-07 1999-07-20 International Business Machines Corporation Data processing system and method for maintaining coherency between high and low level caches using inclusive states
US6360301B1 (en) * 1999-04-13 2002-03-19 Hewlett-Packard Company Coherency protocol for computer cache
US6412043B1 (en) * 1999-10-01 2002-06-25 Hitachi, Ltd. Microprocessor having improved memory management unit and cache memory

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010032435A1 (ja) * 2008-09-17 2010-03-25 パナソニック株式会社 キャッシュメモリ、メモリシステム、データコピー方法及びデータ書き換え方法

Also Published As

Publication number Publication date
JP2002259211A (ja) 2002-09-13
US20020112129A1 (en) 2002-08-15
US6662275B2 (en) 2003-12-09

Similar Documents

Publication Publication Date Title
JP3714617B2 (ja) キャッシュ階層で首尾一貫性を維持する方法、コンピュータ・システム、及び処理ユニット
JP3888769B2 (ja) データ供給方法及びコンピュータ・システム
US6571322B2 (en) Multiprocessor computer system with sectored cache line mechanism for cache intervention
US6721848B2 (en) Method and mechanism to use a cache to translate from a virtual bus to a physical bus
JP3627037B2 (ja) キャッシュ・コヒーレンシを維持する方法及びコンピュータ・システム
US6345342B1 (en) Cache coherency protocol employing a read operation including a programmable flag to indicate deallocation of an intervened cache line
US5940856A (en) Cache intervention from only one of many cache lines sharing an unmodified value
US5946709A (en) Shared intervention protocol for SMP bus using caches, snooping, tags and prioritizing
US5963974A (en) Cache intervention from a cache line exclusively holding an unmodified value
US6330643B1 (en) Cache coherency protocols with global and local posted operations
US6574714B2 (en) Efficient instruction cache coherency maintenance mechanism for scalable multiprocessor computer system with write-back data cache
US5940864A (en) Shared memory-access priorization method for multiprocessors using caches and snoop responses
US6321306B1 (en) High performance multiprocessor system with modified-unsolicited cache state
US5943685A (en) Method of shared intervention via a single data provider among shared caches for SMP bus
US6615321B2 (en) Mechanism for collapsing store misses in an SMP computer system
US6418514B1 (en) Removal of posted operations from cache operations queue
US5996049A (en) Cache-coherency protocol with recently read state for data and instructions
US6336169B1 (en) Background kill system bus transaction to optimize coherency transactions on a multiprocessor system bus
US6345344B1 (en) Cache allocation mechanism for modified-unsolicited cache state that modifies victimization priority bits
US7464227B2 (en) Method and apparatus for supporting opportunistic sharing in coherent multiprocessors
US6345340B1 (en) Cache coherency protocol with ambiguous state for posted operations
US6615320B2 (en) Store collapsing mechanism for SMP computer system
US6658536B1 (en) Cache-coherency protocol with recently read state for extending cache horizontally
US6374333B1 (en) Cache coherency protocol in which a load instruction hint bit is employed to indicate deallocation of a modified cache line supplied by intervention
EP0976047A1 (en) Read operations in multiprocessor computer system

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20040909

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040921

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20041220

RD12 Notification of acceptance of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7432

Effective date: 20041220

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20041220

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20050301

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050415

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

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20050526

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050705

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050721

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

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20050809

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20050819

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