JP3989457B2 - 局所的なキャッシュ・ブロック・フラッシュ命令 - Google Patents

局所的なキャッシュ・ブロック・フラッシュ命令 Download PDF

Info

Publication number
JP3989457B2
JP3989457B2 JP2004112533A JP2004112533A JP3989457B2 JP 3989457 B2 JP3989457 B2 JP 3989457B2 JP 2004112533 A JP2004112533 A JP 2004112533A JP 2004112533 A JP2004112533 A JP 2004112533A JP 3989457 B2 JP3989457 B2 JP 3989457B2
Authority
JP
Japan
Prior art keywords
cache
cache block
local
microprocessor
address
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
JP2004112533A
Other languages
English (en)
Other versions
JP2004326758A (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 JP2004326758A publication Critical patent/JP2004326758A/ja
Application granted granted Critical
Publication of JP3989457B2 publication Critical patent/JP3989457B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30047Prefetch instructions; cache control instructions
    • 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/0808Multiuser, multiprocessor or multiprocessing cache systems with cache invalidating means
    • 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/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • 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/0837Cache consistency protocols with software control, e.g. non-cacheable data
    • 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/0891Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Devices For Executing Special Programs (AREA)
  • Multi Processors (AREA)

Description

本発明は、一般に、マイクロプロセッサ・アーキテクチャの分野に関し、より詳細には、キャッシュされたメモリ・サブシステムを利用するマルチプロセッサ・アーキテクチャに関する。
マイクロプロセッサ・ベースのデータ処理システムの分野では、キャッシュ・メモリ・サブシステムとデータの局所性の関連する概念がよく知られている。キャッシュ・メモリは、アーキテクチャの点とヒューリスティックの点でシステムのメイン・メモリ(DRAM)よりもプロセッサのコアに近い1つまたは複数の小さいが高速のストレージ・アレイのことである。それらのサイズが制限されているために、キャッシュ・メモリは、システムのメイン・メモリに含まれる情報の一部を保存する容量しか有しない。要求されたデータがキャッシュ・メモリにない場合、システムは、処理オーバーヘッドの点で著しい犠牲を払ってそのデータのためにメイン・メモリにアクセスする必要がある。キャッシュ・メモリを組み込むことによって得られる利点は、キャッシュ・メモリが満たすことのできるデータ・アクセス要求のパーセンテージ(一般にキャッシュ「ヒット」率と呼ばれる)に大きく関係している。
都合のよいことに、比較的小さいキャッシュ・メモリは容認できる程度の高いヒット率をしばしば提供することができる。何故ならば、多くの応用例で分かるように、近い将来アクセスされる可能性の最も高いデータは、比較的最近アクセスされたデータである。したがって、単純に最近アクセスされたデータを記憶することによって、キャッシュ・メモリのサブシステムは、要求される可能性の最も高いデータに対する高速アクセスをマイクロプロセッサ・コアに提供することができる。
しかし最終的に、メイン・メモリよりも大幅に小さいキャッシュ・メモリによって100%のヒット率を有するキャッシュ・メモリを実施することは不可能である。可能な限り最高のヒット率を達成し、使用可能な制限されたキャッシュ・メモリを完全に活用するために、設計者は常にキャッシュでデータを維持する方法を模索することに関心を持っている。一例として、いくつかのマイクロプロセッサの命令セットは、ユーザ・レベルまたは監督レベルあるいはその両方のキャッシュ管理命令に対するサポートを含んでいる。キャッシュ管理命令は、一般に、キャッシュ・メモリ・サブシステムのいくつかの態様全体で直接的なソフトウェア制御を可能にする。
IBM製のプロセッサPowerPC(登録商標)ファミリーは、例えばデータ・キャッシュ・ブロック・フラッシュ(dcbf)命令を含めていくつかのキャッシュ管理命令に対するサポートを含んでいる。このdcbf命令は、ソフトウェアがキャッシュ・メモリ・サブシステムの規定可能なブロックを無効にすることを可能にする。dcbf命令は、例えばキャッシュ・コヒーレンシー・プロトコルに参加していないサブシステムにデータの特定ブロックにアクセスすることを許可する前に(メイン・メモリまでずっと)コヒーレンシーを強化することが望ましい場合などの状況で有利である。
dcbf命令は、関連するメモリ位置が1回または立て続けに数回アクセスされる可能性が高く、その後少なくとも比較的長期にわたってアクセスされない可能性が高いことを合理的に適切な確率で決定することができるという状況でも有益である。この特性を示すデータは、空間的局所性は高く時間的局所性は低いと言われる。空間的局所性とは、メモリ・アドレスAのデータに対するアクセスの後に、例えばAの後に続くメモリ・アドレスに対する1つまたは複数のデータ・アクセスが続く可能性が高いデータの特性のことである。時間的局所性とは、時間Tにアクセスされるデータが時間T+デルタに再度アクセスされる可能性が高いデータの特性のことである。ここで、デルタは比較的短い時間間隔を表す。時間的局所性と空間的局所性の高いデータは、キャッシュ・メモリ・サブシステムのストレージに対する適切な候補であることは明らかである。実際に、時間的局所性の実在は、キャッシュ・メモリを有するための基本的な理由である。
しかしある応用例では、データが高い空間的局所性と低い時間的局所性を示す場合がある。この状況によって、従来から実施されているキャッシュ・サブシステムはジレンマに陥る。一方では、データが要求された際にストール(機能停止)を防止するために高い空間的局所性を有するデータを先取りしてキャッシュすることが望ましい。しかし他方、時間的局所性の高い別のデータが常駐している場合にキャッシュに上記データを放置することは望ましくない。
マイクロプロセッサは、一般に「kill」命令と呼ばれる、キャッシュ指定キャッシュ・ラインを無効にし、それによって新しいデータを受理するためにキャッシュを解放する命令に対するサポートを長い間含んできた。複数の非同期コアによって動作しているマイクロプロセッサ・システムの状況で、kill命令はシステムのプロセッサのすべてにある指定されたキャッシュ・ブロックを無効にする。残念ながら、この方法でキャッシュ・ブロックをキルすることによって、対応するプロセッサがブロックに対するすべての参照を完了する前に特定のブロック・ラインが無効化される場合があり、したがって潜在的な未確定状態が生じることになる。
したがって、マルチプロセッサ環境で発生する潜在的なタイミングおよびコヒーレンシーの問題を招かずに、オペレーティング・システム、プログラマー、またはプロセッサあるいはこれらのすべてが選択されたキャッシュ・ラインを制御し、識別し、かつ無効にすることを可能にしたプロセッサを実装することが望ましい。
上記に示した問題の大部分に、プロセッサの実行ユニット(execution unit)が有効アドレスを決定するローカル・キャッシュ・ブロック・フラッシュ命令をサポートするマイクロプロセッサおよびマイクロプロセッサ実行方法が対処する。プロセッサは、まず指定されたキャッシュ・ブロックへのすべての保留中の参照がキャッシュ・サブシステムにコミットするよう強制する。参照されたキャッシュ・ラインがローカル・キャッシュ(命令実行中のプロセッサに対応するキャッシュ・サブシステム)で修正されている場合、それはメイン・メモリにライトバックされる(writeback)。参照されたブロックがローカル・キャッシュで有効である場合、それは無効化されるが、ただしこれはローカル・キャッシュでのみである。参照されたブロックがローカル・キャッシュで有効でない場合、何のアクションも取られない。ローカル・キャッシュ・ブロック・フラッシュ命令を別のプロセッサからシステムを介して受け取る遠隔プロセッサはこの命令を無視する。
本発明の他の目的および利点は、以下の詳細な説明を読み、かつ添付の図面を参照することによって明らかになろう。
本発明には様々な修正形態および代替形態が可能だが、その具体的な実施形態を例示として図示し、本明細書で詳細に説明することにする。しかし、本明細書に示した図面および詳細な説明は開示された特定の実施形態に本発明を限定するためのものではなく、むしろ首記の特許請求の範囲によって規定された本発明の趣旨および範囲に含まれるすべての修正形態、等価形態、および変更形態をカバーするものであるということを理解されたい。
一般に、本発明は、マルチプロセッサ環境で具体的なプロセッサの具体的なキャッシュ・ラインをフラッシュするためのキャッシュ管理命令をサポートするマイクロプロセッサ・ベースのデータ処理システムを企図する。命令が実行される際に、有効アドレスが決定される。決定された有効アドレスがローカル・プロセッサ(命令実行中のプロセッサ)のキャッシュ・メモリのキャッシュ・ブロックに「ヒット」した場合、ローカル・キャッシュ・ブロック・フラッシュ手順が開始される。キャッシュ・ブロックが修正された状態にある場合、ブロックはメイン・メモリにライトバックされる。次いでそのブロックはローカルに無効化され、それによって、キャッシュにより適している可能性のあるメモリ・セグメントに使用可能なキャッシュ・ブロックの空間が解放される。
次に図面を参照すると、図1は、本発明を実施することができる設計例であるマルチプロセッサ・データ処理システム100の選択された要素を示している。図示した実施形態では、データ処理システム100は、102Aから102Dまでの4台のプロセッサのセット(本明細書では総称的に、すなわち一括して1つ以上のプロセッサ102と称する)を含んでいる。102Aから102Dの各プロセッサは、104Aから104Dの1つの対応するプロセッサ・コア(本明細書では総称的に、すなわち一括して1つ以上のコア104と称する)と、106Aから106Dの1つの対応するローカル・キャッシュ・メモリ・ユニット(本明細書では総称的に、すなわち一括して1つ以上のローカル・キャッシュ106と称する)を含んでいる。一実施形態では、各コア104は、共通のローカル・キャッシュ・メモリを共有する2つの別個の完全に機能的なプロセッサを含んでいる。一実施形態では、各ローカル・キャッシュ106は、それぞれ次のレベルが前のレベルよりも大きい3つのレベル(L1、L2、およびL3)のキャッシュ・メモリを含んでいる。一実施形態の典型的なIBM社製のPOWER4(登録商標)プロセッサでは、例えばL1およびL2キャッシュ・ユニットならびにL3キャッシュに対する複号およびディレクトリ回路はプロセッサ・コア104を有する単一チップ上に組み込まれるが、一方、実際のL3メモリは外部にある。
システム100の様々なプロセッサ102はシステム・バス108を介してやりとりする。プロセッサのどれかによって実行されるメモリ・アクセス(ロードおよび記憶)は、コヒーレンシーを維持するために必要とされるホスト・バス上のトランザクションを生成する。例えばプロセッサ102Aがデータをメモリ・アドレスに書き込む場合、すべての他のローカル・キャッシュ106は、それらが常駐のメモリ・アドレスに対応するキャッシュ・ブロックのコピーを有するか否かを判定することができ、有する場合はそのブロックのそれらのコピーを修正することができるように、書き込みトランザクションはホスト・バス108を介して送信する必要がある。
図1に示すシステム100は、ホスト・バス110とシステム・メモリ112の間にインターフェースを提供するホスト・ブリッジ110も含んでいる。参照番号120で図1に一括して示したシステムの入出力装置は、システム・バス108に接続されている。入出力装置120は、例えばハードディスク・コントローラ、ビデオまたはグラフィック・アダプタ、高速ネットワーク・インターフェース・カードなどを含めてデータ処理システムに関連する従来型装置のどれでも包含する。システム・メモリ112へのアクセスは、プロセッサ108間で共有される。この種のマルチプロセッサ・システムは、各プロセッサがシステム・メモリ112に対して理論的に等価のアクセスを有していることを強調して一般に対称型マルチプロセッサ(SMP)システムと称される。
図2を参照すると、システム100のキャッシュ・メモリ・サブシステムが本発明の利点を説明するために示されている。図2に示すように、キャッシュ・メモリ・サブシステムは、106Aから106Dのローカル・キャッシュのそれぞれを含んでいる。各ローカル・キャッシュ・ユニット106は、ホスト・バス108に結合されている少なくとも1つのポートと、各ローカル・キャッシュ106をその対応するコア104に接続するバス(本明細書では「ローカル」バスと称する)に結合されている少なくとも1つのポートとを含む。複数のローカル・バスは参照番号115Aから115Dで示す(総称的に、すなわち一括して1つ以上のローカル・バス115と称する)。図2は、2文字の呼称「EA」で特定される特定のキャッシュ・ブロックが106Aから106Cのローカル・キャッシュに常駐しており、ローカル・キャッシュ106Dで無効か、そうでなければ欠落している場合のキャッシュ・メモリ・サブシステムのスナップ・ショットを示している。呼称EAは有効アドレス(effective address)の頭文字であり、命令実行中に生成されたすべての有効アドレスが対応するキャッシュ・ブロックにマップされることを強調することを意図している。実際の実行では、EAから対応する「実際の」アドレスへの翻訳は、キャッシュ・メモリがアクセスされた際に発生する。したがって、データは、通常、その実際のアドレスに従ってキャッシュ・メモリに記憶される。しかし整合性のために、この応用例は、メモリ参照の有効アドレスだけを限定的に参照し、キャッシュ・メモリが実際のアドレスに従ってデータを構成することが理解されよう。
簡素な実施態様では、すべてのEAは、その対応する実際のアドレスの上位20ビットによって特定されたブロックにマップする。キャッシュ・ブロックは、キャッシュ・サブシステムのアーキテクチャに応じてキャッシュ内の異なる物理位置に記憶することができる。したがって、図示するように、有効アドレスEAに対応するキャッシュ・ブロックはローカル・キャッシュ106A、106B、および106Cによって異なる物理位置で見つけられる。
図示したキャッシュ・サブシステムの重要な特徴は、ローカル・バス115およびホスト・バス108へのアクセス用の独立ポートの使用法である。性能の利点を提供することに加えて別個のポートまたはインターフェースを使用することにより、キャッシュのローカル・プロセッサから発行されるトランザクションと、非ローカルまたは遠隔プロセッサで始められるトランザクションの識別が容易になる。「ローカル・トランザクション」と他のトランザクションとの区別は、本発明では様々なキャッシュ・メモリ・ユニット106の内容を管理するために使用される。
一般的な概念の説明は、図2と図3の比較によって提供される。この簡単な説明では、図2は、特定の命令シーケンスが実行される前のプロセッサ・サブシステムの状態を表しており、図3は、そのシーケンスの実行後のキャッシュ・メモリ・サブシステムの状態を表している。図2では、前段落で検討したように、ローカル・キャッシュ・ユニット106の3つが、特定の有効アドレスに対応するキャッシュ・ブロックEAの複数の有効なコピーを含んでいる。本発明によれば、命令は、プロセッサのローカル・キャッシュ106からEAキャッシュ・ブロックをフラッシュするが、一方、他のローカル・キャッシュに残っているEAのコピーはそのまま残すプロセッサ・コア104の1つの実行ユニットによって実行される。図示した実施形態では、具体的に、本発明によるローカル・キャッシュ・ブロック・フラッシュ(LCBF)命令はプロセッサ・コア104Aによって実行される。LCBF命令は有効アドレスEAを計算する(実際のアドレスに対応する)。ローカル・キャッシュ・ユニットのそれぞれは、LCBFがローカルに発行された場合には(例えば、ローカル・バス・ポートを介して受信された場合に)有効アドレスEAに対応するブロックをフラッシュし、そうでない場合はその命令を無視することによりLCBFをサポートするキャッシュ・コントローラを含んでいる。したがって、図3に示すように、コア104AによるLCBFの実行に従い、ローカル・キャッシュ・ユニット106Aはキャッシュ・ブロックEAの有効なコピーを最早含まないが、キャッシュ106Bおよび106CのEAブロックは依然として有効なままである。この説明は、LCBFが実行される際にキャッシュ・ブロックEAがローカル・キャッシュ106Aで未修正であると仮定するようなある種の簡約化の仮定を含んでいるが、強固に結合したSMP環境でキャッシュ・メモリ・ユニットをローカルに管理する機能を強調している。従来型のKILL命令とは対照的に、LCBFは、ローカルに動作し、無効が発生する前にキャッシュ・ブロックへのいかなる保留中の参照でも完了させることによって追加の制御を組み込む。
この局所化されたキャッシュ管理機能は、例えば性能を維持するにはコードを先取りすることが望ましい(すなわち、プロセッサによって必要とされる前にキャッシュにコードを記憶する)が、その実行後もそのコードをキャッシュに保存することは望ましくないという場合の状況に対処するために望ましい場合がある。例えばサイズの異なるアレイの要素を追加するための1つまたは複数の埋め込まれたループを含むコードを考えることができる。大部分の期間にわたり内部ループが実行されている場合、外部ループの各反復後にキャッシュから外部ループに限定的に関連したコードをキャストすると有益な場合がある。すなわち、実行前に外部ループ・コードをキャッシュに先取りすることは性能の点では望ましいが、それが必要とされないと分かっている期間中もそれをキャッシュに維持することは望ましくない。
既存のキャッシュ管理技術は、コードをキャッシュせずに先取りする機能と、特定のキャッシュ・ブロックを全体的にキル(kill)する機能とを含んでいる。キャッシュなし先取り(prefetch without cache)の解決方法は、先取りされたコードが1回だけ実行されることが分かっている場合に関してのみ最適化される。しかし、上記の埋め込まれたループの例のような多くの場合、キャッシュ・ブロックをキャッシュからキャストすることが望ましくなる前にそのキャッシュ・ブロックに複数回アクセスすることができる。例えば比較的稀にしか実行されないコード・シーケンスがアレイの3つの連続する要素を修正する場合、アレイに対する2回目と3回目の参照中にストールが発生するのでキャッシュなし先取りの選択肢は性能に悪影響を与える。全体的killキャッシュ管理命令は、単一プロセッサ環境では有益だが、第1のプロセッサまたはマスターから発行されたkillが別のプロセッサの不完了命令(in-flightinstruction)に必要とされるキャッシュ・ブロックを無効にする可能性があるので、複数のプロセッサが非同期的に実行されている環境では問題を生じる場合がある。
本発明は、従来型のキャッシュ管理方法および命令に関連する問題に対処する選択的ローカル・キャッシュ管理技術を提供する。図4を参照すると、本発明の一実施形態によるLCBF命令を実行する概念的方法130を説明する流れ図が示されている。図示した実施形態では、LCBF命令はアドレスを決定する(ブロック131)。一実施形態では、プロセッサは命令実行中に有効アドレスを使用し、次いでキャッシュ・メモリにアクセスする際には有効アドレスを実際のアドレスへ翻訳またはマップする。図2および図3の説明に合わせて、有効アドレスはキャッシュ・アクセス機構の一部として実際のアドレスにマップすることができるという理解の下に、図4の流れ図を有効アドレスについて説明することにする。
特定のLCBF命令の実施態様が2つの汎用レジスタ・オペランドを含む場合、EAはその2つのオペランドの和となる場合がある。他の実施態様では、他の周知のアドレッシング方法を組み込むために、EAが命令で明示的に示されるLCBF即値、命令によって参照される指定されたメモリ位置にアドレスのあるメモリ位置の内容によってEAが決定される間接LCBF(LCBF indirect)などのようなLCBFの置換がある場合がある。
次いで、図示したLCBFの実施形態は、EAキャッシュ・ブロック(EAが特定のキャッシュ・サブシステム・アーキテクチャでマップされたキャッシュ・ブロック)を参照するすべてのローカルに保留中の記憶命令をキャッシュ・メモリ階層にコミットさせる(ブロック132)ことによってコヒーレンシーまたは同期を保証する。このような強制は、発行されたがコミットされていない記憶命令のどれかがEAキャッシュ・ブロックを参照するか否かを判定するために、スコアボードまたはレジスタ名前変更表を参照することによって達成することができる。すべての保留中の参照がキャッシュ階層にコミットされると、ローカル・キャッシュ106にあるEAキャッシュ・ブロックは、LCBFが実行された際に現行となる。
次いでLCBFは、まずEAがローカル・キャッシュ106で有効であるか否かを判定する(ブロック134)ことによって進行することができる。EAがローカル・キャッシュ106で欠落している(または有効でない)場合、(ブロックへの記憶命令の早期コミットメントを強制する以外)これ以上のアクションは取られず、LCBFはローカル・キャッシュの変更を行わない。EAがローカル・キャッシュ106で有効な場合、EAキャッシュ・ブロックが修正されたか否かの判定が行われる(ブロック136)。EAキャッシュ・ブロックが有効であり修正されている場合、修正されたキャッシュ・ブロックがメモリにライトバックされる(ブロック138)。EAキャッシュ・ブロックが修正されているかいないかにかかわらず、そのEAキャッシュ・ブロックはローカルに無効化される(ローカル・キャッシュのみで無効化される)(ブロック140)。無効化は、キャッシュ・ブロックが共用状態にあるか排他的状態にあるかにかかわらず発生する。排他的状態とは遠隔キャッシュにそのブロックのコピーがないことを意味するので、排他的キャッシュ・ブロックのローカルな無効化は許容できる(コヒーレンシー状態を破壊しない)。共用状態は単に別のキャッシュがそのブロックの(無修正の)コピーを有している可能性があることを示すだけなので、共用状態を示すキャッシュ・ブロックのローカルな無効化も許容できる。MESIプロトコルは、例えば、修正されたキャッシュ・ブロックに対して発生するだけのヒットする書き込み以外のいかなるホスト・バス108トランザクションの後でもキャッシュの共用ブロックの状態を変更しない。
ローカル・キャッシュ106は、LCBF命令の発生源を決定することによってローカルな無効化を達成する。その命令がローカル・キャッシュのコア104によって発生した場合、その命令はローカル・バス115を介して受信され実行される。その命令が遠隔コアによって発生した場合、トランザクションはホスト・バス108を介して受信され、ノーオペレーションとして扱われる。このようにして、本発明は、適切なコード・シーケンスの性能を改善するために使用することのできる局所化されたキャッシュ管理技術を提供する。
本発明の一実施形態は、LCBF命令を使用することによって得られるソース・コード・シーケンスを決定し、1つまたは複数のLCBF命令を実行可能(オブジェクト)コードに挿入するよう構成されたコンパイラを企図する。本発明のこの実施形態は、コンピュータ可読媒体に記憶されているコンピュータ実行可能命令のセット(すなわち、ソフトウェア)として実施される。図5の流れ図で概念的に説明されているこの実施形態では、コンパイラ150は、そのシーケンスがLCBF命令を組み込むことが有益か否かを判定するためにソース・コード・シーケンスをまず評価する(ブロック152)。一例として、コンパイラは、コード・シーケンスがメモリ・アドレス空間の特定部分に関して高い空間的局所性を示すか否かを判定する(ブロック153)ことができる。コンパイラが、同一コード・シーケンスが同時に当該システム・メモリ・アドレス空間のその部分に関して低い時間的局所性を示すか否かも判定する場合、コンパイラは、メモリ位置の空間的局所性が既になくなったオブジェクト・コードの位置にLCBF命令を有益に挿入する(ブロック155)。この実施形態では、時間的局所性の閾値はキャッシュ・ミスに関連した待ち時間に関係する場合がある。コンパイラが、当該システム・メモリ・アドレス空間のその部分がキャッシュ・ミス待ち時間より長い期間はアクセスされないと判定した場合、このアドレス空間にアクセスするコード・シーケンスはLCBFの候補になる。他の応用例では、LCBF命令はソース・コードへの直接挿入のためにキャッシュ管理ツールとしてプログラム開発者に使用可能である。
この開示の恩恵を受ける当業者には、本発明が、ローカル・キャッシュ管理制御が性能を改善するための方法およびシステムを企図するということが明らかになろう。詳細な説明および図面に示し記載した本発明の態様は、現時点での好ましい実施例であるとのみ解釈されるべきことを理解されたい。首記の特許請求の範囲は開示された好ましい実施形態のすべての変形形態を包含するものと広範に解釈されることを意図している。
マルチプロセッサ・データ処理システムの選択された要素のブロック図である。 本発明によるローカル・キャッシュ・メモリ管理命令を実行する前の図1のシステムのキャッシュ・メモリ・サブシステムの状態を示す図である。 ローカル・キャッシュ・メモリ管理命令を実行した後の図2のキャッシュ・メモリ・サブシステムの状態を示す図である。 本発明の一実施形態によるキャッシュ・メモリ・サブシステムを管理する方法を示す流れ図である。 図3に示すキャッシュ・メモリ管理命令をサポートするコンパイラを表す流れ図である。
符号の説明
102 プロセッサ
104 コア
106 ローカル・キャッシュ
108 システム・バス
110 ホスト・ブリッジ
112 システム・メモリ
120 入出力装置

Claims (20)

  1. マルチプロセッサ環境でマイクロプロセッサによって命令を実行する方法において、
    マイクロプロセッサによってアドレスを決定するステップと、
    アドレスに対応するキャッシュ・ブロックがマイクロプロセッサに対してローカルなキャッシュ・メモリ・ユニットにあるという判定に応じて、
    ローカル・キャッシュ・メモリ・ユニットのキャッシュ・ブロックを無効化するステップと、
    遠隔キャッシュ・メモリ・ユニットにあるアドレスに対応する任意のキャッシュ・ブロックを有効に維持するステップとを含む方法。
  2. キャッシュ・ブロックを無効化する前に、対応するキャッシュ・ブロックに対するすべての保留中の参照をキャッシュ・メモリ階層にコミットさせるステップをさらに含む請求項1に記載の方法。
  3. キャッシュ・ブロックをキャッシュ・メモリ階層にコミットさせるステップが、キャッシュ・ブロックをプロセッサに対してローカルなL1、L2、およびL3キャッシュ・メモリ・ユニットにコミットさせることによってさらに特徴付けられる請求項2に記載の方法。
  4. アドレスに対応するキャッシュ・ブロックがマイクロプロセッサに対してローカルなキャッシュ・メモリ・ユニット内にあり、修正されているという判定に応じて、キャッシュ・ブロックをシステム・メモリにライトバックするステップをさらに含む請求項1に記載の方法。
  5. 命令が2つのオペランドを含み、アドレスを決定するステップが2つのオペランドを加算するステップによって特徴付けられる請求項1に記載の方法。
  6. 2つのオペランドがレジスタ参照であり、前記2つのオペランドを加算するステップが2つのソース・オペランドの内容を加算するステップを含む請求項5に記載の方法。
  7. 命令が、影響を受けていない汎用レジスタの内容を残す請求項6に記載の方法。
  8. コンピュータ実行可能命令のセットを生成するためのコンパイラにおいて、コンパイラは、マイクロプロセッサによって実行された際に、
    マイクロプロセッサによってアドレスを決定する動作と、
    アドレスに対応するキャッシュ・ブロックがローカル・キャッシュ・メモリ・ユニットにあるという判定に応じて、
    マイクロプロセッサに対してローカルなキャッシュ・メモリ・ユニットのキャッシュ・ブロックを無効化する動作と、
    遠隔マイクロプロセッサに対してローカルなキャッシュ・メモリ・ユニットにあるアドレスに対応する任意のキャッシュ・ブロックを有効に維持する動作と、
    を含む動作を実行するローカル・キャッシュ・ブロック・フラッシュ命令を生成するためのコード手段を含むコンパイラ。
  9. 前記ローカル・キャッシュ・ブロック・フラッシュ命令が前記マイクロプロセッサによって実行される際に実行される動作として、
    キャッシュ・ブロックを無効化する前に、対応するキャッシュ・ブロックへのすべての保留中の参照をキャッシュ・メモリ階層にコミットさせる動作をさらに含む請求項8に記載のコンパイラ。
  10. キャッシュ・ブロックをキャッシュ・メモリ階層にコミットさせる動作が、キャッシュ・ブロックをプロセッサに対してローカルなL1、L2、およびL3キャッシュ・メモリ・ユニットにコミットさせる動作によってさらに特徴付けられる請求項9に記載のコンパイラ。
  11. 前記ローカル・キャッシュ・ブロック・フラッシュ命令が前記マイクロプロセッサによって実行される際に実行される動作として、
    そのアドレスに対応するキャッシュ・ブロックがマイクロプロセッサに対してローカルなキャッシュ・メモリ・ユニット内にあり、修正されているという判定に応じて、キャッシュ・ブロックをシステム・メモリにライトバックする動作をさらに含む請求項8に記載のコンパイラ。
  12. 前記ローカル・キャッシュ・ブロック・フラッシュ命令が2つのオペランドを含み、アドレスを決定する動作が2つのオペランドを加算する動作によって特徴付けられる請求項8に記載のコンパイラ。
  13. 2つのオペランドがレジスタ参照であり、2つのオペランドを加算する動作が2つのソース・オペランドの内容を加算する動作を含む請求項12に記載のコンパイラ。
  14. 前記ローカル・キャッシュ・ブロック・フラッシュ命令が、影響を受けていない汎用レジスタの内容を残す請求項13に記載のコンパイラ。
  15. 前記コンパイラがコンピュータによって実行される際に、ソース・コード・シーケンスが所定の特徴を有するか否かが判定され、前記ソース・コード・シーケンスが所定の特徴を有すると判定される場合には、前記ローカル・キャッシュ・ブロック・フラッシュ命令が実行可能コードに挿入されることを特徴とする請求項8に記載のコンパイラ。
  16. 前記コンパイラがコンピュータによって実行される際に、前記ソース・コード・シーケンスが空間局所性は高いが時間局所性は低いと判定される場合に、前記ソース・コード・シーケンスが前記所定の特徴を有すると判定されることを特徴とする請求項15に記載のコンパイラ。
  17. 第1のマイクロプロセッサおよび少なくとも1つの他のマイクロプロセッサと、
    第1のマイクロプロセッサに対してローカルな第1のキャッシュ・メモリ・ユニットおよび他のマイクロプロセッサに対してローカルな遠隔キャッシュ・メモリ・ユニットと、
    ローカル・キャッシュ・ブロック・フラッシュ命令を複号し、これに応じて、アドレスを決定し、前記アドレスに対応するキャッシュ・ブロックが前記第1のキャッシュ・メモリ・ユニットにあるという判定に応じて、前記第1のキャッシュ・メモリ・ユニットにある前記キャッシュ・ブロックを無効化する前記第1のマイクロプロセッサ内の実行ユニットと、
    前記遠隔キャッシュ・メモリ・ユニットにおいて前記キャッシュ・ブロックをそのまま残すように構成された前記他のマイクロプロセッサ内の実行ユニットと、
    を含むマルチプロセッサ・データ処理システム。
  18. 前記第1のマイクロプロセッサ内の前記実行ユニットが、キャッシュ・ブロックを無効化する前に、対応するキャッシュ・ブロックへのすべての保留中の参照をキャッシュ・メモリ階層にコミットさせるようさらに構成されている請求項17に記載のシステム。
  19. 前記第1のマイクロプロセッサ内の前記実行ユニットが、アドレスに対応するキャッシュ・ブロックが前記第1のマイクロプロセッサに対してローカルな前記第1のキャッシュ・メモリ・ユニット内にあり、修正されていると判定し、前記キャッシュ・ブロックをシステム・メモリにライトバックするようさらに構成されている請求項17に記載のシステム。
  20. 前記ローカル・キャッシュ・ブロック・フラッシュ命令が2つのレジスタ参照オペランドを含み、アドレスを決定することが2つのオペランドを加算することによって特徴付けられる請求項17に記載のシステム。
JP2004112533A 2003-04-24 2004-04-06 局所的なキャッシュ・ブロック・フラッシュ命令 Expired - Lifetime JP3989457B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/422,677 US7194587B2 (en) 2003-04-24 2003-04-24 Localized cache block flush instruction

Publications (2)

Publication Number Publication Date
JP2004326758A JP2004326758A (ja) 2004-11-18
JP3989457B2 true JP3989457B2 (ja) 2007-10-10

Family

ID=33298953

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004112533A Expired - Lifetime JP3989457B2 (ja) 2003-04-24 2004-04-06 局所的なキャッシュ・ブロック・フラッシュ命令

Country Status (5)

Country Link
US (1) US7194587B2 (ja)
JP (1) JP3989457B2 (ja)
KR (1) KR100535146B1 (ja)
CN (1) CN1279456C (ja)
TW (1) TWI298126B (ja)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7000081B2 (en) * 2002-02-12 2006-02-14 Ip-First, Llc Write back and invalidate mechanism for multiple cache lines
US7469267B2 (en) * 2004-06-28 2008-12-23 Qlogic, Corporation Method and system for host device event synchronization
DE602006011292D1 (de) 2005-04-08 2010-02-04 Panasonic Corp Cache-speichersystem und steuerverfahren dafür
US8490065B2 (en) * 2005-10-13 2013-07-16 International Business Machines Corporation Method and apparatus for software-assisted data cache and prefetch control
US7543116B2 (en) * 2006-01-30 2009-06-02 International Business Machines Corporation Data processing system, cache system and method for handling a flush operation in a data processing system having multiple coherency domains
US7685371B1 (en) * 2006-04-19 2010-03-23 Nvidia Corporation Hierarchical flush barrier mechanism with deadlock avoidance
JP4912789B2 (ja) * 2006-08-18 2012-04-11 富士通株式会社 マルチプロセッサシステム,システムボードおよびキャッシュリプレース要求処理方法
US8806138B1 (en) * 2007-02-20 2014-08-12 Pixar Dynamic dependencies and parameterizations for execution and caching
US7877549B1 (en) * 2007-06-12 2011-01-25 Juniper Networks, Inc. Enforcement of cache coherency policies using process synchronization services
US8099557B2 (en) 2008-02-26 2012-01-17 Globalfoundries Inc. Push for sharing instruction
KR101863605B1 (ko) 2011-09-19 2018-07-06 삼성전자주식회사 스트림 데이터를 고속으로 처리하는 프로세서
US8799588B2 (en) * 2012-02-08 2014-08-05 International Business Machines Corporation Forward progress mechanism for stores in the presence of load contention in a system favoring loads by state alteration
US9218289B2 (en) * 2012-08-06 2015-12-22 Qualcomm Incorporated Multi-core compute cache coherency with a release consistency memory ordering model
US20140258635A1 (en) * 2013-03-08 2014-09-11 Oracle International Corporation Invalidating entries in a non-coherent cache
US10509725B2 (en) 2013-03-08 2019-12-17 Oracle International Corporation Flushing by copying entries in a non-coherent cache to main memory
CN105225204B (zh) * 2014-06-26 2018-04-13 优视科技有限公司 代码定位方法及装置
CN105793832B (zh) 2014-09-18 2018-12-18 上海兆芯集成电路有限公司 处理器及其操作方法、以及计算机可读存储介质
FR3048526B1 (fr) * 2016-03-07 2023-01-06 Kalray Instruction atomique de portee limitee a un niveau de cache intermediaire
US10467195B2 (en) 2016-09-06 2019-11-05 Samsung Electronics Co., Ltd. Adaptive caching replacement manager with dynamic updating granulates and partitions for shared flash-based storage system
US10455045B2 (en) 2016-09-06 2019-10-22 Samsung Electronics Co., Ltd. Automatic data replica manager in distributed caching and data processing systems
US10552153B2 (en) * 2017-03-31 2020-02-04 Intel Corporation Efficient range-based memory writeback to improve host to device communication for optimal power and performance
US10970215B1 (en) 2019-12-03 2021-04-06 International Business Machines Corporation Cache snooping mode extending coherence protection for certain requests
US11157408B2 (en) 2019-12-17 2021-10-26 International Business Machines Corporation Cache snooping mode extending coherence protection for certain requests
US11157409B2 (en) 2019-12-17 2021-10-26 International Business Machines Corporation Cache snooping mode extending coherence protection for certain requests

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5893149A (en) * 1996-07-01 1999-04-06 Sun Microsystems, Inc. Flushing of cache memory in a computer system
US6754782B2 (en) * 2001-06-21 2004-06-22 International Business Machines Corporation Decentralized global coherency management in a multi-node computer system
US6721853B2 (en) * 2001-06-29 2004-04-13 International Business Machines Corporation High performance data processing system via cache victimization protocols

Also Published As

Publication number Publication date
KR100535146B1 (ko) 2005-12-07
CN1550994A (zh) 2004-12-01
TWI298126B (en) 2008-06-21
CN1279456C (zh) 2006-10-11
US20040215896A1 (en) 2004-10-28
US7194587B2 (en) 2007-03-20
TW200513849A (en) 2005-04-16
KR20040092394A (ko) 2004-11-03
JP2004326758A (ja) 2004-11-18

Similar Documents

Publication Publication Date Title
JP3989457B2 (ja) 局所的なキャッシュ・ブロック・フラッシュ命令
US5715428A (en) Apparatus for maintaining multilevel cache hierarchy coherency in a multiprocessor computer system
US8180981B2 (en) Cache coherent support for flash in a memory hierarchy
JP3893008B2 (ja) ダイレクト・メモリ・アクセスおよびキャッシュ性能を改善する方法および装置
US6546462B1 (en) CLFLUSH micro-architectural implementation method and system
USRE45078E1 (en) Highly efficient design of storage array utilizing multiple pointers to indicate valid and invalid lines for use in first and second cache spaces and memory subsystems
US7493452B2 (en) Method to efficiently prefetch and batch compiler-assisted software cache accesses
US6725337B1 (en) Method and system for speculatively invalidating lines in a cache
US7698508B2 (en) System and method for reducing unnecessary cache operations
US5557769A (en) Mechanism and protocol for maintaining cache coherency within an integrated processor
US5903911A (en) Cache-based computer system employing memory control circuit and method for write allocation and data prefetch
US5787478A (en) Method and system for implementing a cache coherency mechanism for utilization within a non-inclusive cache memory hierarchy
US6343347B1 (en) Multiprocessor system bus with cache state and LRU snoop responses for read/castout (RCO) address transaction
US20060179174A1 (en) Method and system for preventing cache lines from being flushed until data stored therein is used
KR100266314B1 (ko) 다중프로세서의 코히어런스 오버헤드 감소를 위한 자기-무효화 장치 및 방법
US6711653B1 (en) Flexible mechanism for enforcing coherency among caching structures
US7330940B2 (en) Method and system for cache utilization by limiting prefetch requests
US6178484B1 (en) DCBST with ICBI mechanism to maintain coherency of bifurcated data and instruction caches
US20060179173A1 (en) Method and system for cache utilization by prefetching for multiple DMA reads
JPH06318174A (ja) キャッシュ・メモリ・システム及び主メモリに記憶されているデータのサブセットをキャッシュする方法
US6256710B1 (en) Cache management during cache inhibited transactions for increasing cache efficiency
US6101582A (en) Dcbst with icbi mechanism
US7328310B2 (en) Method and system for cache utilization by limiting number of pending cache line requests
US6766427B1 (en) Method and apparatus for loading data from memory to a cache
Padwal et al. Cache Memory Organization

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20070306

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070320

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070529

RD12 Notification of acceptance of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7432

Effective date: 20070529

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070601

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20070529

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

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20070717

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20070717

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

Free format text: PAYMENT UNTIL: 20100727

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 3989457

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20110727

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20110727

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20120727

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20130727

Year of fee payment: 6

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250