JP4050225B2 - マルチプロセッサシステムにおける推測的な格納を容易にする方法および装置 - Google Patents

マルチプロセッサシステムにおける推測的な格納を容易にする方法および装置 Download PDF

Info

Publication number
JP4050225B2
JP4050225B2 JP2003507694A JP2003507694A JP4050225B2 JP 4050225 B2 JP4050225 B2 JP 4050225B2 JP 2003507694 A JP2003507694 A JP 2003507694A JP 2003507694 A JP2003507694 A JP 2003507694A JP 4050225 B2 JP4050225 B2 JP 4050225B2
Authority
JP
Japan
Prior art keywords
cache
speculative
load
store
storage
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
JP2003507694A
Other languages
English (en)
Other versions
JP2004533079A (ja
JP2004533079A5 (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
Application filed by Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of JP2004533079A publication Critical patent/JP2004533079A/ja
Publication of JP2004533079A5 publication Critical patent/JP2004533079A5/ja
Application granted granted Critical
Publication of JP4050225B2 publication Critical patent/JP4050225B2/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
    • 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/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3824Operand accessing
    • G06F9/3834Maintaining memory consistency
    • 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/0855Overlapped cache accessing, e.g. pipeline
    • 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/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching
    • 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/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • 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/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/50Control mechanisms for virtual memory, cache or TLB
    • G06F2212/507Control mechanisms for virtual memory, cache or TLB using speculative control

Description

(発明の分野)
本発明は、マルチプロセッサの設計に関する。より詳細には、本発明は、マルチプロセッサシステムにおける推測的なロード動作および/または推測的な格納動作を容易にする方法および装置に関する。
(関連技術)
高速のコンピュータ性能を実現するために、コンピュータシステム設計者は、シングル計算タスクを実行するために並列に動作する多重プロセッサシステムを利用し始めた。1つの通常のマルチプロセッサ設計は、単一のレベル2(L2)キャッシュ180およびメモリ183を共用するレベル1(L1)キャッシュ161〜164に接続される複数のプロセッサ151〜154を含む(図1を参照されたい)。動作中、プロセッサ151がローカルL1キャッシュ161に存在しないデータアイテムにアクセスすると、システムは、L2キャッシュ180からのデータアイテムの取り出しを試みる。データアイテムがL2キャッシュ180に存在しない場合は、システムは、まず、メモリ183からL2キャッシュ180へ、続いて、L2キャッシュ180からL1キャッシュ161へデータアイテムを取り出す。
尚、同一のデータアイテムのコピーが1つより多いL1キャッシュに存在する場合、コヒーレンスの問題が生じ得る。この場合、L1キャッシュ161のデータアイテムの第1のバージョンに対する修正は、第1のバージョンを、L1キャッシュ162のデータアイテムの第2のバージョンと異なるようにし得る。
このようなコヒーレンスの問題を避けるために、コンピュータシステムは、多くの場合、バス170を介して動作するコヒーレンシプロトコルを提供する。コヒーレンシプロトコルは、通常、L1キャッシュ161においてデータアイテムの1つのコピーが修正される場合に、L1キャッシュ162〜164、L2キャッシュ180およびメモリ183の同一のデータアイテムの他のコピーが、修正を反映するように更新されるか、または、無効化されることを保証する。
コヒーレンスプロトコルは、通常、バス170を介して無効化メッセージをブロードキャストすることによって無効化を実行する。しかしながら、マルチプロセッサシステムが性能において増大するにつれて、そのような無効化はより頻繁に発生する。従って、このような無効化メッセージは、バス170を潜在的に妨害し得、それにより、システム全体の性能を低下させ得る。
この問題を改善するために、L2キャッシュ180内にディレクトリ情報を維持する可能性を探索し始めた設計者もいる。このディレクトリ情報は、どのL1キャッシュが特定のデータアイテムのコピーを含むのかを指定する。これにより、システムは、全L1キャッシュに対してブロードキャストメッセージを送信するのではなく、無効化情報を、そのデータアイテムを含むL1キャッシュのみに送信できるようになる。(このタイプのシステムは、L1キャッシュ161〜164との通信のために単一共用バス170を利用するL1に示される例とは異なり、L1キャッシュ161〜164の各々に対する無効化メッセージ用の別個の通信経路が存在することを仮定している。)
マルチプロセッサシステムが性能において増大し続けるにつれて、ロードおよび格納動作の順序を著しく制限するメモリモデルをサポートすることは、ますます困難になっている。1つの通常用いられるメモリモデルは、「トータルストアオーダ」(TSO)メモリモデルである。TSOメモリモデルの下では、所与のプロセッサからのロードおよび格納は、通常、ロードが前の格納を追い越し得ることを除いて、プログラム順序で実行する。より詳細には、TSOメモリモデルの下では、ロードは前のロードを追い越し得ない。格納は、前の格納を追い越し得ない。および、格納は前のロードを追い越し得ない。これにより、システムが次のロードを実行する間に、前の格納が遅い態様で発生する。
不運なことに、ロードおよび格納の順序にこれらの制限を置くことは、マルチプロセッサシステムの性能を深刻に低下させる。なぜなら、マルチプロセッサシステムは、多くの場合、次のメモリ動作を実行する前に、前のメモリ動作が完了するのを待たなくてはならないからである。
より制限のないメモリモデルは、「リリースコンシステンシ」であり、この唯一の制限は、プロセッサが、臨界領域を終了するときはいつでも共用データの一貫した一覧を参照することである。このメモリモデルは、TSOよりも制限が少なく、より良好なマルチプロセッサ性能をもたらし得る。不運なことに、多くの既存の継承される適用は、TSO等の限定的なメモリモデルを利用する。
従って、これらの従来のアプリケーションを実行させるために必要とされるのは、TSOメモリモデルなどの限定的なメモリモデルの下における、プログラムの効果的な並列実行を容易にする方法および装置である。
(要旨)
本発明の一実施形態は、マルチプロセッサシステムにおける推測的ロード動作を容易にするシステムを提供する。システムは、マルチプロセッサシステムにおいて、プロセッサにおいて完了した推測的ロード動作のレコードを維持することによって、動作する。ここで、推測的ロード動作とは、前のロード動作が完了する前に推測的に開始するロード動作である。次に、システムは、プロセッサに接続されるL1キャッシュにおいて無効化信号を受信する。ここで、無効化信号は、L1キャッシュの特定のラインが無効化されるべきことを示す。この無効化信号に応答して、システムは、完了し、かつ、無効化信号が関するのと同一のL1キャッシュの位置に関する整合する推測的ロード動作が存在するかを判定するために、推測的ロード動作のレコードを検査する。もし整合する推測的ロード動作が存在する場合は、システムは、整合する推測的ロード動作を再生することにより、無効化信号を発生させたイベントが完了した後に整合する推測的ロード動作が発生する。
本発明の一実施形態では、推測的ロード動作のレコードは、複数のバンクを含み、ここで、各バンクは、L2キャッシュの特定のバンクを示す推測的ロード動作を含む。
本発明の一実施形態では、推測的ロード動作のレコードは、推測的ロード動作の結果を含むL1キャッシュに、エントリのセットおよびウェイ情報を維持する。
本発明の一実施形態では、無効化信号は、キャッシュコヒーレンシプロトコル動作の結果として受信される。
本発明の一実施形態では、無効化信号は、L1キャッシュの特定のラインと関連する格納動作の結果として受信される。
本発明の一実施形態では、無効化信号は、L2キャッシュの対応するラインの無効化の結果として受信される。
本発明の一実施形態では、推測的ロード動作のレコードは、各推測的ロード動作のインディケータを含む。このインディケータは、推測的ロード動作が完了したかどうかを特定する。
本発明の一実施形態では、推測的ロード動作のレコードの維持するステップは、新しい推測的ロード動作が完了するときはいつでもレコードを更新するステップを含む。
本発明の一実施形態では、システムは、L2キャッシュからプロセッサにおいて再生信号を受信し、ここで、再生信号は、特定のセットおよびウェイ位置を識別する。この再生信号に応答して、システムは、完了し、かつ、特定のセットおよびウェイ位置を示す任意の推測的ロード動作を再生する。尚、システムは、対応する無効化を実行することなく、この再生を実行する。
本発明の一実施形態では、マルチプロセッサシステムは、トータルストアオーダリング(TSO)メモリモデルを実装する。このモデルでは、ロードは前の格納を追い越すことができるが、前のロードを追い越すことができず、格納は、前のロードを追い越すことができず、前の格納を追い越すことができない。
本発明の別の実施形態では、マルチプロセッサシステムにおける推測的ロード動作を容易にするシステムを提供する。このシステムは、関連するL1キャッシュにL2キャッシュを介してデータ値をリターンさせて完了した推測的ロード動作のレコードをL2キャッシュに維持することによって動作する。ここで、推測的ロード動作は、前のロード動作が完了する前に推測的に開始するロード動作である。無効化イベントの受信に応答して、システムは、L2キャッシュにおけるターゲットラインを無効化する。システムはまた、レコードにおいて検索を実行して、L2キャッシュにおけるターゲットラインの無効化により影響を受け得る推測的ロード動作と関連する影響を受けたL1キャッシュを識別する。次に、システムは、影響を受けた推測的ロード動作を再生するために、影響を受けたL1キャッシュに再生コマンドを送信することにより、影響を受けた推測的ロード動作が、L2キャッシュにおけるターゲットラインの無効化の後に発生する。
本発明の一実施形態において、レコードを維持するステップは、L2キャッシュにおいてL1キャッシュからロードミス動作を受信するステップを含む。ここで、ロードミス動作は、ロードミス動作と関連するL1キャッシュ位置に対して、完了した推測的ロード動作が存在するかどうかを特定する情報を含む。そのような推測的ロード動作が存在する場合、システムは、L1キャッシュが推測的ロード動作と関連することを示すように、レコードを更新する。
この実施形態におけるバリエーションとしては、ロードミス動作は、ロードミス動作と関連するL1キャッシュ位置を識別し、レコードを更新するステップは、レコードにL1キャッシュ位置を記録し、それにより、次の再生コマンドがL1キャッシュ位置を含むステップを含む。ロードミス動作が推測的でない場合は、システムは、完了した推測的ロード動作と関連しないL1キャッシュの関連するエントリを示すために、レコードを更新する。
本発明の一実施形態では、再生コマンドは、あるL2キャッシュラインに対応する複数のL1キャッシュへ送信される。システムは、L2キャッシュが完了した推測的ロード動作ともはや関連しないことを示すように、レコードを更新する。
本発明の一実施形態では、L2キャッシュは、L1キャッシュにおけるラインに対するエントリを含むリバースディレクトリを含む。ここで、各エントリは、L2キャッシュにおける関連するエントリを識別する。この実施形態のバリエーションとしては、リバースディレクトリは、L1キャッシュの各々の各エントリと対応する固定エントリを含む。この実施形態のバリエーションとして、リバースディレクトリの各エントリは、L2キャッシュにおける対応するエントリの位置を特定する情報を含む。
本発明の一実施形態は、マルチプロセッサシステムにおいて推測的格納動作を容易にするシステムを提供する。このシステムは、マルチプロセッサシステムにおけるL2キャッシュに、処理中の推測的格納動作のレコードを維持することによって動作する。ここで、推測的格納動作は、前の格納動作が完了する前に推測的に実行される格納動作である。L1キャッシュからL2キャッシュにおいてロード動作を受信すると、システムは、ロード動作が関するのと同一の位置に関する整合する推測的格納動作が存在するかどうかを判定する推測的格納動作のレコードを検査する。もし存在すれば、システムは、整合する推測的格納動作が完了した後にロード動作が発生することを保証する。
本発明の一実施形態では、整合する推測的格納動作が完了した後にロード動作が発生することを保証するステップは、リトライ動作をプロセッサに送信して、プロセッサに後でロード動作をリトライさせるステップを含む。
本発明の一実施形態では、整合する推測的格納動作が終了した後にロード動作が発生することを保証するステップは、L2キャッシュにおけるロード動作を完了させる前に整合する推測的格納動作の完了を待つステップを含む。
本発明の一実施形態では、L2キャッシュにおいて整合する格納動作が完了すると、L2キャッシュは、ロード動作が発生し得るようにし、整合する推測的格納動作により無効化されるラインを含む他のL1キャッシュに、無効化信号を送信する。
本発明の一実施形態において、L2キャッシュにおいてプロセッサから推測的格納動作を受信すると、システムは、レコードに推測的格納動作を格納する。
本発明の一実施形態において、L2キャッシュにおける格納動作が完了すると、システムは、格納動作を開始させたソースプロセッサに確認を送信する。確認に応答して、ソースプロセッサから移動信号を受信すると、システムは、所与の格納動作がもはや推測的ではないことを示すように、レコードを更新する。
この実施形態のバリエーションとして、ソースプロセッサにおいて確認を受信すると、ソースプロセッサは、L2キャッシュに移動信号を送信する前に、全ての前の格納動作が完了するまで待つ。
この実施形態のバリエーションとして、L2キャッシュにおいて格納動作が完了すると、システムは、格納動作によって上書きされるキャッシュラインを含むL1キャッシュに、無効化信号を送信する。
本発明の一実施形態では、L2キャッシュに接続される各プロセッサに対して、推測的格納動作のレコードは、推測的格納動作を含む格納キューを含む。
本発明の一実施形態において、L2キャッシュは、複数のバンクを含み、各L2バンクに対して、推測的格納動作のレコードは、L2キャッシュに接続される各プロセッサに対する格納キューを含む。
本発明の一実施形態において、システムは、ターゲットキャッシュラインに対する所与の格納動作を実行するために、ターゲットキャッシュラインに対する所有するための読み出し(read−to−own)リクエストを受信する。所有するための読み出しリクエストを受信すると、システムは、ターゲットキャッシュラインに関する整合する推測的格納動作が存在するかどうかを判定するために、推測的格納動作のレコードを検査する。もし存在すれば、システムは、ターゲットキャッシュラインをリクエストするプロセッサにライトオンリー状態で送ることにより、リクエストするプロセッサは、書き込み動作(読み込み動作ではない)をターゲットキャッシュラインに対して実行することができ、それにより、デッドロック条件を回避する。
本発明の一実施形態において、システムは、マルチプロセッサシステムにおけるプロセッサと接続されるL1キャッシュからL2キャシュにおいて格納動作を受信する。システムは、格納動作に関するのと同一の位置に関する整合する推測的格納動作が存在するかどうかを判定するために、推測的格納動作のレコードを検査する。もし存在すれば、システムは、格納動作をドロップする。
(詳細な説明)
以下の説明は、任意の当業者が本発明を実施および利用できるように示されており、特定の用途および要件の意味で提供される。開示される実施形態に対する様々な改変は、当業者には容易に理解し得、本明細書中で定義される一般原理は、本発明の意図および範囲を逸脱することなく他の実施形態および用途に適用し得る。従って、本発明は、示される実施形態に制限されることが意図されるのではなく、本明細書中に開示される原理および特徴と一貫する最大範囲に一致するべきである。
(マルチプロセッサシステム)
図1Bは、本発明の実施形態に従った、リバースディレクトリを有するマルチプロセッサシステム100を示す。尚、マルチプロセッサシステム100のほとんどは、単一の半導体チップ101内に配置される。より詳細には、半導体チップ101は、複数のプロセッサ110、120、130および140を含み、複数のプロセッサ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は、以下の図3〜6を参照してより詳細に記載される、リバースディレクトリ302を含む。L2キャッシュ106は、メモリコントローラ104によってオフチップメモリ102に接続される。
本発明の1つの実施形態では、L1キャッシュ112、122、132および142は、ライトスルーキャッシュであり、つまり、L1キャッシュ112、122、132および142に対する全ての更新は、自動的にL2キャッシュ106に伝達される。これは、コヒーレンスプロトコルを単純化する。なぜなら、プロセッサ110がL1キャッシュ112に存在するデータアイテムをリクエストする場合に、プロセッサ110は、L1キャッシュ112がデータをソースするのを待つ必要なく、L2キャッシュ106からデータを受信し得るからである。
(多重バンクを有するL2キャッシュ)
図2は、本発明の実施形態に従った、多重バンクを有するL2キャッシュ106を示す。この実施形態では、L2キャッシュ106は、4つのバンク202〜205によって実装される。4つのバンク202〜205は、スイッチ220を介してプロセッサ110、120、130および140に並列にアクセスされ得る。尚、アドレスの2ビットのみが、4つのバンク202〜205のどれがメモリリクエストに関するかを判定するために必要とされる。さらにスイッチ220は、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内の1つのセットを判定するために利用される。キャッシュ304は、キャッシュ304の行で表現される。所与のセット内で、8つの異なるエントリが、8つの異なる「ウェイ位置」の各々に格納され得、8つの異なる「ウェイ位置」の各々は、キャッシュ304の8つの列で表現される。
リバースディレクトリ302は、各L1キャッシュに対して別個のブロックを含む。より詳細には、ブロック312は、L1キャッシュ112に関連し、ブロック322は、L1キャッシュ122に関連し、ブロック322は、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キャッシュに格納され、各セットに対する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の一部を含み、L1セットナンバー414と重複しない。L2ウェイナンバー429は、キャッシュ304において、8つの可能なウェイ位置からラインの列位置を特定する3ビットインデックスを含む。最終的には、有効ビット427は、エントリ430が有効かどうかを示す。
尚、L2キャッシュ106内の各ラインに対するL1キャッシュ位置を格納するのではなく、示される実施形態は、各L1キャッシュ位置に対するエントリを含み、これらのエントリの各々は、L1位置と関連するL2キャッシュ位置を特定する。
従って、「リバースディレクトリ」としてディレクトリ302を捉えることができる。なぜなら、各L2エントリからL1エントリへのポインタを維持するのではなく、各L1エントリから対応するL2エントリへのリバース方向に、ポインタを維持するからである。これは、通常、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を更新させるリクエストを受信することによって開始する。このリクエストは、別のプロセッサによるターゲットエントリ上の格納ヒット、ロードミス、または、格納ミスを含み得る。
次に、システムは、リバースディレクトリ302においてリクエストに対するエントリを復元する。これは、ターゲットエントリが置かれるL2ウェイナンバー429を決定するためにL2キャッシュ106における検索を実行し(ステップ604)、図4に示されるようにアドレス400からL2セットナンバー404を取り出す(ステップ606)ことによって達成される。これらの値は、リバースディレクトリエントリ430を構築するように結合される。
次に、システムはこのエントリを用いて、どのL1キャッシュがエントリを含むかを判断するためにリバースディレクトリ302を検索する(ステップ608)。尚、システムは、L2バンクナンバー406により特定されるL2キャッシュ106のバンクと関連するリバースディレクトリを検索するだけでよい。また、尚、リクエストが別のプロセッサによる格納ヒットである場合は、システムは、格納ヒットを発生させるプロセッサのためのバンクを検索する必要はない。
エントリを含む各L1キャッシュに対して、システムは、無効化メッセージをL1キャッシュに送信する。この無効化メッセージは、L1ウェイナンバーを含み、それにより、L1キャッシュのアソシアティブ検索が回避され得る。システムはまた、エントリが無効化されたことを示すように、対応するリバースディレクトリエントリを更新する(ステップ610)。
(無効化に応答した推測的ロードの再生)
図7は、本発明の実施形態に従った、無効化信号に応答する推測的ロード動作の再生を示す。図7は、左から右へ進行するタイムラインを含む。命令の発行は、タイムラインの上に示す矢印により表わされ、対応する命令の完了は、タイムラインの下に示す矢印により表わされる。
図7の左手側からはじめると、格納A動作および格納B動作は、第2のプロセッサから発行される。次に、第1のプロセッサは、ロードA動作を発行し、続いて、ロードA動作が完了する前に、推測的にロードB動作を発行する。
ロードB動作は、続いて、ロードA動作が完了する前に完了する。これは、TSOメモリモデルに対して問題となり得る。なぜなら、ロードB動作が、ロードA動作を追い越して、TSOメモリモデルを妨害するからである。しかし、ロードB動作が完了する時とロードA動作が完了する時との間に、メモリ動作が生じない場合に、ロードB動作が終了したという事実は、明らかではない。
しかし、図7に示されるように、第2のプロセッサからの格納A動作および格納B動作は、両方とも、ロードB動作が完了する時とロードA動作が完了する時との間隔に完了する。従って、ロードB動作は、Bの古い値をリターンさせ、ロードA動作は、Aの新しい値をリターンさせる。結果的に、前のロードA動作が第2のプロセッサに対して明らかになる前に、ロードB動作が終了したという事実は、メモリモデルの妨害を意味する。
この問題を改善するために、本発明の1つの実施形態は、第1のプロセッサにロードB動作を再生させ、それにより、ロードB動作は、図7に示されるように格納B動作が完了した後に発生する。
図8は、本発明の実施形態に従った、推測的ロード動作を再生する際に関係する様々な構造を示す。図8に示されるように、プロセッサ151は、命令窓口802に関連し、命令窓口802は、まだ完了していない「実行中(in−flight)」命令のリストを含む。尚、命令窓口802は、多くのロードおよび格納動作をプログラム順序で含む。
プロセッサ151は、L2キャッシュ106と通信するローカルL1キャッシュ161とも関連する。尚、単一のL2バンク202のみが図8に示されるが、L1キャッシュ161も、図8に示されない他のL2バンク203〜205と通信する。
L1キャッシュ161は、スプリットロードバッファ804と関連する。スプリットロードバッファ804は、プロセッサ151が完了した推測的ロードの追跡を続ける。これにより、システムは、任意の完了した推測的ロード動作が、同一の位置に対する格納動作のために再生される必要があるかどうかを、判断できる。
尚、スプリットロードバッファ804は、4つのキュー(すなわち、マルチプロセッサシステム100の各L2バンクに対して1つ)に分割される。また、尚、キューの1つにおける所与のエントリ808は、L1セット809およびL1ウェイ810のみを含む。これは、L1キャッシュ161の特定のセットおよびウェイに対する無効化が、完了した推測的ロード動作の再生を必要とするかどうかを判定するために要求される唯一の情報である。
エントリは、推測的ロード動作がプロセッサ151により開始させられる毎に、スプリットロードバッファ804に付加される。エントリは、エントリがもはや推測でなくなった後、つまり、全ての前のロードが完了した後はいつでも、スプリットロードバッファ108から回収され得る。本発明の一実施形態では、エントリは、関連する命令が命令窓口802から回収されると同時に、スプリットロードバッファ804から回収される。
本発明の一実施形態では、完了していない推測的ロード動作を含む全ての推測的ロードは、スプリットロードバッファ804に格納される。この実施形態では、関連する推測的動作が完了したかしていないかを示す付加的なビットが、各エントリに含まれる。
尚、本発明は、図8に示される厳密なスプリットロードバッファ実装に制限されることは意図されない。一般に、完了した推測的ロード動作の追跡を続ける任意の構造が利用され得る。
多くの構造がまた、L2バンク202の側に配置される。図3を参照して上述したリバースディレクトリに付加して、L2バンク202も、推測的ロードディレクトリ812に関連する。推測的ロードディレクトリ812は、L1キャッシュの撤退によりリバースディレクトリ302が関連するL2キャッシュ位置をポイントしなくても、再生が必要とされ得る完了した推測的ロード動作を含むL1キャッシュ位置の追跡を続けることを除き、リバースディレクトリ302と同様に構築される。尚、L2キャッシュ106のラインに対する格納動作の間、リバースディレクトリ302は、どのL1キャッシュに無効化信号を送信すべきかを判定するために利用される。言い換えると、推測的ロードディレクトリ812は、完了した推測的ロード動作と関連する撤退したL1キャッシュエントリのためのL2キャッシュラインの追跡を続ける。
尚、エントリがL1キャッシュから撤退した場合に、リバースディレクトリ302における対応するエントリが、取り除かれる。しかし、システムはまだ、関連するL2キャッシュラインが無効される場合に、完了した推測的ロード動作を再生するためには、完了した推測的ロード動作と関連するL1キャッシュエントリの追跡を続ける必要がある。
このため、測的ロードディレクトリ812は、再生メッセージが、完了した測的ロード動作を含む特定のプロセッサに送信される必要があるかどうかを判定するために、システムに利用される。測的ロードディレクトリ812の構造は、本質的には、リバースディレクトリ302の構造を写す。従って、測的ロードディレクトリ812のエントリ817は、切り捨てられるL2セットナンバー818ならびにL2ウェイナンバー820および有効ビット822を含む。しかし、エントリ817は、リバースディレクトリ302のエントリと異なる。なぜなら、L2セットナンバー818およびL2ウェイナンバー820は、0および1の値に加えて、「don’t care」の値を含むからである。don’t care値(しばしば、「X」で示される)が示すのは、ビットが0値または1値のどちらかを含み得ることである。これらのdon’t care値は、推測的ロードディレクトリにより、推測的ロードディレクトリは、特定のL1キャッシュ位置に対する完了した推測的ロード動作と関連する全ての可能なL2エントリの追跡を続けることができる。
リバースディレクトリ302および推測的ロードディレクトリ812におけるエントリは、同一の状態で開始する。しかし、L1無効化により、推測的L1キャッシュ位置が異なるL2キャッシュラインを指すので、推測的ロードディレクトリ218の対応するL1キャッシュエントリは、don’t care値を満たし始める。尚、新しいdon’t
care値は、L2セットナンバー818およびL2ウェイナンバー820が、どのビット位置が変化したかを判定するために、既存のビットと新しいビットとを排他的ORをとることによって、徐々に計算され得る。また、尚、少なくとも1つのビットは、L2セットナンバー818およびL2ウェイナンバー820の各ビットに対して、3つの可能な値(0,1,X)を表わすことが要求される。
ロード動作中に、推測的ロードディレクトリ812は、アドレス811およびL1ウェイナンバー816を含む、L1キャッシュ161からの多くの信号を受信する。信号はまた、推測的ビット814を含み、ロード動作が、完了した推測的ロード動作とも関連するL1キャッシュ位置に向けられているかどうかを示す。
L1キャッシュからの格納動作の間、対応するL2キャッシュラインは更新され、無効化信号は、L2キャッシュラインを含む全ての他のL1キャッシュに送信される。これは、L2キャッシュラインを含む全てのL1キャッシュ位置を検索するために、リバースディレクトリ302において検索を実行することによって実現される。同様の検索が、撤退したL1キャッシュラインを識別するために、推測的ロードディレクトリ812において実行されるが、それにもかかわらず、L2キャッシュラインへの格納の影響を受ける完了した推測的ロード動作と関連する。このような撤退したL1キャッシュラインが識別される際に、再生信号がL1キャッシュに送信される。これは、L1セットおよびウェイ情報824に付加して、L1キャッシュに付加的な「再生オンリー」ビット826を送信することによって達成される。この再生オンリービット826は、L1キャッシュラインが再生動作に付加して無効化される必要があるのか、または、L1キャッシュラインが既に撤退しているので、再生動作のみが要求されのかを特定する。
尚、本発明は、図8に示される厳密な推測的ロードディレクトリ実装に制限されない。一般に、L2キャッシュラインの無効化の影響を受ける完了した推測的ロード動作と関連するL1キャッシュ位置の追跡を続ける任意の構造が、本発明とともに利用され得る。
図9Aは、本発明の実施形態に従った、無効化イベントに応答した推測的ロード動作の再生を示すフローチャートである。推測的ロード動作のレコードが完了したプロセッサにおいて維持される(ステップ902)ことによって、システムは動作する。図8に示される実施形態では、このレコードは、スプリットロードバッファ804の形式である。次に、システムは、L2バンク202からL1キャッシュ161で無効化信号823を受信する(ステップ904)。システムは、L1キャッシュ161における特定のエントリを無効化するために、無効化信号823からセットおよびウェイ情報824を利用する(ステップ905)。システムはまた、同一のL1キャッシュエントリに対して、完了した整合する推測的ロード動作が存在するかどうかを判定するために、レコードを検査する(ステップ906)。もし存在すれば、システムは、整合する推測的ロード動作を再生する(ステップ908)。
(再生コマンドに応答する推測的ロードの再生)
図9Bは、本発明の実施形態に従った、明示的な再生コマンドに応答する推測的ロード動作の再生を示すフローチャートである。L1キャッシュ161において再生オンリー信号826を受信する(ステップ910)と、システムは、同一のL1キャッシュエントリに対して、完了した整合する推測的ロード動作が存在するかどうかを判定するために、レコードを検査する(ステップ911)。もし存在すれば、システムは、整合する推測的ロード動作を再生する(ステップ912)。
(L2キャッシュにおける推測的ロードディレクトリ)
図10Aは、本発明の実施形態に従った、L2バンク202における推測的ロードディレクトリの動作を示すフローチャートである。システムは、L2バンク202に、特定のL2キャッシュラインと関連する完了した推測的ロード動作のレコードを、維持することによって動作する(ステップ1002)。図8に示される本発明の実施形態では、レコードは、推測的ロードディレクトリ812の形式である。
次に、ターゲットL2キャッシュラインに対する更新等の、ターゲットL2キャッシュラインに対する無効化イベントに応答して、システムは、多くの動作を実行する。(1)システムは、ターゲットL2キャッシュラインを無効化する。(2)システムは、L2キャッシュラインの無効化の影響を受ける完了した推測的ロード動作と関連するL1キャッシュラインを識別するために、推測的ロードディレクトリ812に検索を実行する。尚、don’t care値により、実際に存在するよりも多くの整合が示される。(3)次に、システムは、再生コマンド(または無効化信号)を潜在的に影響されるL1キャッシュに送信して、影響される推測的ロード動作が再生される(ステップ1004)。
図10Bは、本発明の実施形態に従った、L2バンク202における推測的ロードディレクトリ812の更新を示すフローチャートである。L1キャッシュからL2バンク202でロードミスを受信する(ステップ1006)ことにより、システムは動作する。次に、システムは、ロードミスが推測的であるかどうかを判定するために、推測的ビット814を検査する。つまり、ロードミスは、推測的ロード動作が完了したL1キャッシュエントリと関連する(ステップ1008)。もし推測的であれば、システムは、推測的ロードディレクトリを更新して、付加的な推測的ロード動作を埋め合わせる(ステップ1010)。ロードミスが、リバースディレクトリ302におけるL1キャッシュエントリに新しいL2キャッシュラインをポイントさせる場合、推測的ロードディレクトリ812における対応するエントリが、don’t careビットで更新され、その結果、古いL2キャッシュラインおよび新しいL2キャッシュラインの両方をカバーする。
ロードミスが推測的でない場合、システムは、関連するL1キャッシュエントリが完了した推測的ロード動作と関連しないことを示すために、レコードを更新する(ステップ1012)。これは、推測的ロードディレクトリ812におけるエントリをリバースディレクトリ302内の対応するエントリと同一にするために、don’t careビットの全てをクリアすることによって達成される。ロードミスが推測的であるとマークされていないという事実は、全ての前のロード動作がL1キャッシュ位置に対して完了したことを示す。つまり、L1キャッシュ位置と関連する推測的ロード動作は、もはや推測的ではない。
(推測的格納に対応する推測的ロードの再生)
図11は、本発明による完了した推測的格納動作によって発生する推測的ロード動作の再生を示す。図11は、左から右に進むタイムラインを示す。命令の発行は、タイムラインの上に示す矢印により表わされ、対応する命令の完了は、タイムラインの下に示す矢印により表わされる。
図11に示される例では、第1のプロセッサは、ロードA動作を発行し、続いて、前のロードA動作が完了する前に推測的にロードB動作を発行する。次に、第2のプロセッサは、格納A動作を発行し、続いて、前の格納A動作が完了する前に推測的に格納B動作を発行する。格納B動作は、格納A動作が完了する前に、連続して完了する。
これは、TSOメモリモデルに対して問題となり得る。なぜなら、格納B動作は、格納A動作を追い越し、TSOメモリモデルを妨害するからである。しかし、格納B動作が完了する時と格納A動作が完了する時との間にメモリ動作が発生しない場合、格納Bが第1に終了したという事実は、違いがない。
しかし、図11に示されるように、第1のプロセッサからのロードA動作は、第1のプロセッサに対して格納Bが完了する時と格納Aが完了する時との間の間隔に完了する。従って、ロードA動作は、Aの古い値をリターンさせ、ロードB動作は、Bの新しい値をリターンさせる。結果的に、前の格納ロードA動作の前に格納B動作が終了したという事実は明白であり、つまり、TSOメモリモデルが妨害される。
この問題を改善するために、本発明の1つの実施形態では、ロードA動作の完了が、格納A動作が完了する後まで遅らされる。これは、キャッシュミスが発生したかのようにロードA動作を扱い、かつ、ラインがキャシュミスを満たす時として格納A動作の完了を取り扱うことによって、達成され得る。このように、格納A動作の完了は、ロードA動作を完了させる。
本発明の別の実施形態では、L2キャシュは、ロードA動作を開始させたL1キャッシュにリトライ信号を送信する。このことは、格納A動作が完了した後、L1キャッシュに後でロードA動作をリトライさせる。
尚、格納動作は、再生され得ない。なぜなら、格納動作がメモリに格納されるデータ値を破壊するからである。従って、本発明が、介在するロード命令を遅らせるまたは再生させることによって、この問題を回避することにより、格納命令の順序に従わない(out
of order)完了は明白ではない。
(推測的格納動作)
図12は、本発明の実施形態に従った、推測的格納動作に関連する様々な構造を示す。図12に示されるように、プロセッサ151は、L1キャッシュ161を含み、格納バッファ1202に関連する。
格納バッファ1202は、保留の格納動作の追跡を続ける。このため、格納バッファ1202は、各エントリに対して付加的な「完全」ビットを含み、このビットは、格納動作が完全であることを示すメモリ階層の下位レベルから確認が受信されたかどうかを示す。
L2キャッシュ106において、各L2バンクは、プロセッサ110、120、130および140の各々に対する各々のプロセッサ格納キューを含む。図12は、L2バンク202およびL2バンク203のそれぞれに対して、各々のプロセッサ格納キュー1206および1208を示す。各々のプロセッサ格納キューはまた、L2バンク204〜205に対して存在するが、図12に示されない。
各々のプロセッサ格納キュー1206および1208は、各プロセッサからの完了していない推測的格納動作を含む。これにより、システムは、所与の推測的格納動作が完了するまで次のロード動作を遅らせる必要があるかどうかを判定することができる。
図13Aは、本プロセスを示し、または、本発明の実施形態に従った、関連する推測的格納動作に応答した推測的ロード動作を遅らせるフローチャートである。システムは、推測的格納動作のレコードを維持することによって開始する(ステップ1302)。図12に示される本発明の実施形態では、このレコードは、各々のプロセッサ格納キュー1206および1208の形式をとる。
次に、システムは、L2バンク202においてロード動作を受信する(ステップ1304)。次にシステムは、ロードが未解決の推測的格納動作と整合するかどうかを判定するために、各々のプロセッサ格納キューを検査する(ステップ1306)。もし整合すれば、システムは、整合する推測的格納動作が完了するまで、ロード動作を遅らせる(ステップ1308)。上述されたように、これは、格納が完了するまでロード動作の完了を遅らせるか、または、ロード動作をリトライさせるかのどちらかを意味する。
図13Bは、本発明の実施形態に従った、L2バンク202における推測的格納情報の更新を示すフローチャートである。L2バンク202においてプロセッサ151から推測的格納動作を受信すると(ステップ1310)、システムは、推測的格納動作をプロセッサ151と関連する格納キューに入れる(ステップ1312)。システムは、格納動作をL2バンク202において完了させることができる(ステップ1314)。L2バンク202は、確認をプロセッサ151に送信し、推測的格納動作が終了したことを示す(ステップ1316)。次に、プロセッサ151は、前の格納動作が完了するまで待ち、「移動」コマンドをL2バンク202に送信して戻す(ステップ1318)。尚、プロセッサ151は、プロセッサ151における格納バッファ1202を検査することにより、全ての前の格納動作が完了する時が分かる。最終的に、プロセッサ151からの移動信号を受信すると、L2キャッシュは、各々のプロセッサ格納キュー1206を更新して、格納動作がもはや推測的ではないことを示す(ステップ1320)。尚、これは、各々のプロセッサ格納キュー1206から格納動作を取り除くことによって達成され得る。
(デッドロック回避のためのライトオンリー状態の利用)
図14は、本発明の実施形態に従った再生動作により発生する潜在的なデッドロック条件を示す。図14は、左から右へ進むタイムラインを示す。命令の発行は、タイムラインの上に示す矢印により表わされ、対応する命令の完了は、タイムラインの下に示す矢印により表わされる。
図14に示される例では、第1のプロセッサは、格納A動作を発行し、第2のプロセッサは格納B動作を発行する。次に、第1のプロセッサは、格納A動作が完了する前に格納B動作を推測的に発行する。同様に、第2のプロセッサは、格納A動作が完了する前に、格納B動作を推測的に発行する。
次に、第1のプロセッサによる推測的格納B動作は、第1のプロセッサによる前の格納A動作が完了する前に完了する。同様に第2のプロセッサによる推測的格納A動作が、第1のプロセッサによる前の格納B動作が完了する前に完了する。
続いて、第1のプロセッサに対する格納A動作は、所有するためのリクエスト(request−to−own(RTO))動作を、キャッシュコヒーレンシプロトコルの一部として、メモリエレメントA上で発生させる。尚、第1のプロセッサは、メモリエレメントAの所有権を取得するために、RTO A動作を実行する必要があり、その結果、第1のプロセッサは、格納A動作を完了させるためにメモリエレメントAを修正し得る。同様に、第2のプロセッサは、メモリエレメントBの所有権を獲得するために、メモリエレメントB上でRTO B動作を発生させ、その結果、第2のプロセッサは、格納B動作を完了させるために、メモリエレメントBを修正させ得る。
しかし、メモリエレメントAは、第2のプロセッサによる推測的格納動作の対象であるので、第1のプロセッサによるRTO A動作は、RTO A動作を、第2のプロセッサによる前の格納B動作が完了するまで遅らせる。同様に、メモリエレメントBは、第1のプロセッサによる推測的格納動作の対象であるので、第2のプロセッサによるRTO B動作は、RTO B動作を、第1のプロセッサによる前の格納A動作が完了するまで遅らせる。この結果が、第1のプロセッサと第2のプロセッサとの間のデッドロック条件となる。
本発明の1つの実施形態では、文字「W」によって示される「ライトオンリー」キャッシュライン状態を、キャッシュコヒーレンシプロトコルに導入することによって、このデッドロック条件を回避する(図15を参照されたい)。15を参照すると、このキャッシュコヒーレンシプロトコルは、以下のMOESI状態の間の通常の状態遷移の全てを含む。修正(M)、所有(O)、排他的(E)、共有(S)および無効(I)状態である。これらの標準のMOESI遷移は、明快さのために示されない。さらに、プロトコルは、ライトオンリー「W」状態を含む。
システムの動作中に、プロセッサは、推測的格納動作が存在するキャッシュラインにおいてRTO動作を実行し、プロセッサは、ライトオンリー状態のキャシュラインを受信する。キャッシュラインは、もはや推測的ではなく、このライトオンリー状態は、修正された状態にアップグレードされる。
より詳細には、図16は、本発明の実施形態に従った、デッドロック条件を回避するために、ライトオンリー状態を利用するプロセスを示したフローチャートである。ターゲットキャッシュラインに対してプロセッサからRTOリクエストを受信すると(ステップ1602)、システムは、推測的格納動作のレコードを検査する(ステップ1604)。整合する推測的格納動作が存在する場合、ターゲットキャッシュラインを現在保つソースプロセッサは、ターゲットキャッシュラインを、リクエストするプロセッサにライトオンリー状態で送る(ステップ1606)。ソースプロセッサはまた、ターゲットキャッシュラインにおいてその局所的L2キャッシュを無効化する。尚、キャッシュラインは、続いて、別のリクエストするプロセッサに沿ってライトオンリー状態で送られ得る。最終的に、移動メッセージを受信すると、システムは、アップグレードメッセージを全てのプロセッサにブロードキャストし、その結果、ターゲットキャッシュラインを現在保つプロセッサは、修正すべきターゲットキャッシュラインの状態をアップグレードし得る(ステップ1608)。
(格納動作のドロップ)
推測的格納動作が、別のプロセッサの保留中の格納動作と同一のアドレスに関する場合に、別の問題となる条件が生じる。図17Aを参照すると、アドレスAおよびアドレスBが、L2キャッシュ106の異なるバンクに位置づけられることを前提とする。また、プロセッサP1上で実行するプログラムが、格納A動作および格納B動作を特定することを前提とする。同様に、プロセッサP2上で実行するプログラムは、格納B動作および格納A動作を特定することを前提とする。
図17Aにおいて、P1からの格納B動作は、P1からの格納A動作が発生する前に、順序に従わずに発生する。しかし、これは、プログラムの実行に影響を与えない。なぜなら、これらの2つの格納動作の間で生じる任意のロード動作は、前述のメカニズムによって扱われる。さらに、P2からの格納動作は、P1からの2つの格納動作の間で発生しない。
図17Bにおいて、P1からの格納B動作は、同様に、P1からの格納A動作が発生する前に、順序に従わずに発生する。しかし、この例では、P2からの格納B動作および格納A動作は、P1からのこれらの2つの格納動作の間で発生する。これが問題になり得るのは、全ての格納が完了した後に、アドレスAは、P1により書き込まれた値を含み、アドレスBは、P2により書き込まれた値を含む。尚、このような結果は、格納動作がプログラム順序で進行する場合に生じ得ない。この問題を回避するために、システムは、P2によるアドレスBに対する格納動作をドロップさせ、P1からの保留中の格納動作を同一のアドレスと衝突させる。このプロセスは、図18を参照して以下に詳細に示される。
図17Cでは、P1からの格納B動作は、同様に、P1からの格納A動作が発生する前に、順序に従わずに発生する。しかし、この例では、P2からの格納A動作は、P1からの2つの格納動作の間で発生する。これが問題となり得るのは、全ての格納が完了した後に、アドレスAが、P1により書き込まれる値を含み、アドレスBは、P2により書き込まれる値を含む。尚、このような結果は、格納動作がプログラム順序で進行する場合には発生し得ない。この問題を回避するために、システムは、P1によるアドレスAに対する格納動作をドロップさせ、P2からの保留中の格納動作を同一のアドレスと衝突させる。このプロセスは、図18を参照して以下により詳細に説明される。
図18は、本発明の実施形態に従った、関連する推測的格納動作を検知すると格納動作をドロップするプロセスを示すフローチャートである。システムは、推測的格納動作のレコードを維持することによって開始する(ステップ1802)。図12に示される本発明の実施形態では、このレコードは、各々のプロセッサ格納キュー1206および1208の形式を取る。
続いて、システムは、L2バンク202において格納動作を受信する(ステップ1804)。システムは、格納が、他のプロセッサからの任意の未解決の推測的格納動作と整合するかどうかを判定するために、各々のプロセッサ格納キューを検査する(ステップ1806)。もし整合すれば、システムは、各々のプロセッサ格納キューからそれを除去することによって、格納動作をドロップする(ステップ1808)。
上述の本発明の実施形態は、例および説明としてのみ示された。それらは、排他的であること、開示される形式に本発明を制限することを意図していない。従って、多くの改変および変更が、当業者には理解される。従って、上述の開示は、本発明を制限することを意図しない。本発明の範囲は、添付の特許請求の範囲により規定される。
図1Aは、マルチプロセッサシステムを示す。 図1Bは、本発明の実施形態に従った、リバースディレクトリを有するマルチプロセッサシステムを示す。 図2は、本発明の実施形態に従った、マルチプロセッサシステム内の多重バンクを有するL2キャッシュを示す。 図3は、本発明の実施形態に従った、リバースディレクトリを示す。 図4は、本発明の実施形態に従った、リバースディレクトリを示す。 図5は、本発明の実施形態に従った、リバースディレクトリエントリを生成する、または、更新するプロセスを示すフローチャートである。 図6は、本発明の実施形態に従った、無効化を実行するリバースディレクトリエントリを利用するプロセスを示すフローチャートである。 図7は、本発明の実施形態に従った、関連する格納動作に応答した推測的なロード動作の再生を示す。 図8は、本発明の実施形態に従った、推測的なロード動作に関係する様々な構造を示す。 図9Aは、本発明の実施形態に従った、無効化イベントに応答した推測的なロード動作の再生を示すフローチャートである。 図9Bは、本発明の実施形態に従った、明示的な再生コマンドに応答した推測的なロード動作の再生を示すフローチャートである。 図10Aは、本発明の実施形態に従った、L2キャッシュの推測的なロードディレクトリの更新を示すフローチャートである。 図10Bは、本発明の実施形態に従った、L2キャッシュの推測的なロードディレクトリの更新を示すフローチャートである。 図11は、本発明の実施形態に従った、完了した推測的な格納動作により実行される推測的なロード動作の再生を示す。 図12は、本発明の実施形態に従った、推測的な格納動作に関係する様々な構造を示す。 図13Aは、本発明の実施形態に従った、関連する推測的な格納動作に応答した推測的なロード動作の遅延を示すフローチャートである。 図13Bは、本発明の実施形態に従った、L2キャッシュの推測的格情報の更新を示すフローチャートである。 図14は、本発明の実施形態に従った、再生動作により引き起こされる潜在的なデッドロック条件を示す。 図15は、本発明の実施形態に従った、キャッシュコヒーレンシプロトコルの状態遷移図の一部を示す。 図16は、本発明の実施形態に従った、デッドロック条件を避けるために、ライトオンリー状態を利用するプロセスを示すフローチャートである。 図17Aは、本発明の実施形態に従った、格納動作のドロップの様子を説明するための例となるタイムチャートである。 図17Bは、本発明の実施形態に従った、格納動作のドロップの様子を説明するための例となるタイムチャートである。 図17Cは、本発明の実施形態に従った、格納動作のドロップの様子を説明するための例となるタイムチャートである。 図18は、本発明の実施形態に従った、関連する推測的格納動作を検知すると格納動作をドロップするプロセスを示すフローチャートである。

Claims (19)

  1. マルチプロセッサシステムにおける推測的格納動作を容易にする方法であって、
    該マルチプロセッサシステムにおけるL2キャッシュにおいて、処理中の推測的格納動作のレコードを維持することであって、
    推測的格納動作は、前の格納動作が完了する前に推測的に実行される格納動作である、ことと、
    該マルチプロセッサシステムにおけるプロセッサに接続されるL1キャッシュからL2キャシュにおいてロード動作を受信することと、
    該ロード動作に関するのと同一の位置に関する整合する推測的格納動作が存在するかどうかを判定するために、推測的格納動作の該レコードを検査することと、
    整合する推測的格納動作が存在する場合、該整合する推測的格納動作が完了した後に該ロード動作が起こることを保証することと
    を包含する、方法。
  2. 前記整合する推測的格納動作が完了した後に前記ロード動作が起こることを保証することは、リトライ動作を前記プロセッサに送信して、後で該プロセッサに該ロード動作をリトライさせることか、または、L2キャッシュにおいて該ロード動作が完了する前に該整合する推測的格納動作の完了を待つことを包含する、請求項1に記載の方法。
  3. 前記L2キャッシュにおいて前記整合する推測的格納動作が完了すると、該L2キャッシュは、前記ロード動作が起こることを可能にし、かつ、該整合する推測的格納動作により無効化されるラインを含む他のL1キャッシュに無効化信号を送信する、請求項2に記載の方法。
  4. 前記L2キャッシュにおいて所与の格納動作が完了すると、
    該所与の格納動作を開始させたソースプロセッサにアクノリッジを送信することと、
    該アクノリッジに応答して該ソースプロセッサから移動信号を受信すると、該所与の格納動作がもはや推測的ではないことを示すようにレコードを更新することと
    をさらに包含する、請求項1に記載の方法。
  5. 前記ソースプロセッサにおいて前記アクノリッジを受信すると、該ソースプロセッサは、前記L2キャッシュに前記移動信号を送信する前に、全ての前の格納動作が完了するまで待ち、前記方法は、該L2キャッシュにおいて前記所与の格納動作が完了すると、該所与の格納動作により上書きされるキャッシュラインを含むL1キャッシュに無効化信号を送信することをさらに包含する、請求項4に記載の方法。
  6. 前記L2キャッシュは複数のバンクを含み、かつ、各L2バンクに対して、推測的格納動作の前記レコードは、該L2キャッシュに接続される各プロセッサに対する格納キューを含み、所与の格納キューは、推測的格納動作を含む、請求項1に記載の方法。
  7. 前記マルチプロセッサシステムにおけるプロセッサに接続されるL1キャッシュからL2キャシュにおいて格納動作を受信することと、
    該格納動作に関するのと同一の位置に関する整合する推測的格納動作が存在するかどうかを判定するために、推測的格納動作の前記レコードを検査することと、
    整合する推測的格納動作が存在する場合、該格納動作をドロップすることと
    をさらに包含する、請求項1に記載の方法。
  8. ターゲットキャッシュラインに対する所有するための読み出し(read−to−own)要求を受信することと、
    該ターゲットキャッシュラインに関する整合する推測的格納動作が存在するかどうかを判定するために、推測的格納動作の前記レコードを検査することと、
    整合する推測的格納動作が存在する場合、該ターゲットキャッシュラインを要求するプロセッサにライトオンリー状態で送ることにより、該要求するプロセッサは、該ターゲットキャッシュラインに対して書き込み動作を実行することができ、それにより、デッドロック条件を回避することと
    をさらに包含する、請求項1に記載の方法。
  9. ルチプロセッサシステムにおいて推測的格納動作を容易にする装置であって、
    L2キャッシュと、
    該L2キャッシュにおいて処理中の推測的格納動作を識別する情報を含む、L2キャッシュにおけるレコードであって、
    推測的格納動作は、前の格納動作が完了する前に推測的に実行される格納動作であるレコードと、
    L2キャッシュにおけるロード処理メカニズム
    を備え、プロセッサと接続されるL1キャッシュからロード動作を受信すると、該ロード処理メカニズムは、
    該ロード動作に関するのと同一の位置に関する整合する推測的格納動作が存在するかどうかを判断するために、推測的格納動作の該レコードを検査し、
    整合する推測的格納動作が存在するとき、該整合する推測的格納動作が完了した後に該ロード動作が起こることを保証するように構成される、装置。
  10. 前記ロード処理メカニズムは、前記プロセッサにリトライ動作を送信して、後でプロセッサに該ロード動作をリトライさせることにより、または、前記L2キャシュにおいて該ロード動作を完了させる前に前記整合する推測的格納動作の完了を待つことにより、該整合する推測的格納動作が完了した後に、該ロード動作が起こることを保証するように構成される、請求項9に記載の装置。
  11. 前記L2キャッシュにおける前記整合する推測的格納動作が完了すると、該L2キャッシュは、前記ロード動作が起こることを可能にし、かつ、該整合する推測的格納動作により無効化されるラインを含む他のL1キャッシュに無効化信号を送信するように構成される、請求項10に記載の装置。
  12. 前記L2キャッシュにおいて所与のプロセッサから所与の推測的格納動作であって、該所与の推測的格納動作は、それが推測的であることを示すようにマークされる、所与の推測的格納動作を受信し、かつ、
    前記レコードに該所与の推測的格納動作を格納する
    ように構成される格納処理メカニズムをさらに備える、請求項9に記載の装置。
  13. 前記L2キャッシュにおいて所与の格納動作が完了すると、該所与の格納動作を開始させたソースプロセッサにアクノリッジを送信するように構成され、
    該アクノリッジに応答して該ソースプロセッサから移動信号を受信すると、該所与の格納動作がもはや推測的ではないことを示すようにレコードを更新するように構成される、
    格納処理メカニズムをさらに備える、請求項9に記載の装置。
  14. 前記ソースプロセッサにおいて前記アクノリッジを受信すると、該ソースプロセッサは、前記L2キャッシュに前記移動信号を送信する前に、全ての前の格納動作が完了するまで待つように構成され、かつ、該L2キャッシュにおいて前記所与の格納動作が完了すると、前記格納処理メカニズムは、該所与の格納動作により上書きされるL1キャッシュラインを含むL1キャッシュに無効化信号を送信するように構成される、請求項13に記載の装置。
  15. 前記L2キャシュは、複数のバンクを含み、
    各L2バンクに対して、推測的格納動作の前記レコードは、該L2キャッシュに接続される各プロセッサに対する格納キューを含み、所与の格納キューは、推測的格納動作を含む、請求項9に記載の装置。
  16. 前記ロード処理メカニズムは、
    ターゲットキャッシュラインに対する所有するための読み出し(read−to−own)要求を受信し、かつ、
    該ターゲットキャッシュラインに関する整合する推測的格納動作が存在するかどうかを判定するために、推測的格納動作の前記レコードを検査するように構成され、
    整合する推測的格納動作が存在する場合、該ロード処理メカニズムは、該ターゲットキャッシュラインを要求するプロセッサにライトオンリー状態で送ることにより、該要求するプロセッサは、該ターゲットキャッシュラインに対して書き込み動作を実行することができ、それにより、デッドロック条件を回避するように構成される、請求項9に記載の装置。
  17. 前記L2キャッシュにおける格納処理メカニズムをさらに含み、プロセッサに接続されるL1キャッシュから格納動作を受信すると、該格納処理メカニズムは、
    前記格納動作に関するのと同一の位置に関する整合する推測的格納動作が存在するかどうかを判定するために、推測的格納動作の前記レコードを検査し、
    整合する推測的格納動作が存在する場合、該格納動作をドロップするように構成される、請求項9に記載の装置。
  18. 推測的格納動作を容易にするマルチプロセッサシステムであって、
    L2キャッシュと、
    該L2キャッシュに接続される複数のL1キャッシュと、
    該複数のL1キャッシュに接続される複数のプロセッサと、
    該L2キャッシュにおいて処理中の推測的格納動作を識別する情報を含む該L2キャッシュにおけるレコードであって、推測的格納動作は、前の格納動作が完了する前に推測的に実行される格納動作であるレコードと、
    該L2キャッシュにおけるロード処理メカニズムと
    を備え、
    L2キャッシュにおいてL1キャッシュからロード動作を受信すると、該ロード処理メカニズムは、
    該ロード動作に関するのと同一の位置に関する整合する推測的格納動作が存在するかどうかを判定するために、推測的格納動作の該レコードを検査し、
    整合する推測的格納動作が存在する場合、該整合する推測的格納動作が完了した後に、該ロード動作が起こることを保証するように構成される、マルチプロセッサシステム。
  19. 前記ロード処理メカニズムは、前記L1キャッシュにリトライ動作を送信し、後で該L1キャッシュに前記ロード動作をリトライさせることにより、または、前記L2キャッシュにおける該ロード動作を完了させる前に前記整合する推測的格納動作の完了を待つことにより、該整合する推測的格納動作が完了した後に該ロード動作が起こることを保証するように構成される、請求項18に記載のマルチプロセッサシステム。
JP2003507694A 2001-06-26 2002-06-26 マルチプロセッサシステムにおける推測的な格納を容易にする方法および装置 Expired - Lifetime JP4050225B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US30119601P 2001-06-26 2001-06-26
PCT/US2002/022157 WO2003001369A2 (en) 2001-06-26 2002-06-26 Method and apparatus for facilitating speculative stores in a multiprocessor system

Publications (3)

Publication Number Publication Date
JP2004533079A JP2004533079A (ja) 2004-10-28
JP2004533079A5 JP2004533079A5 (ja) 2006-01-05
JP4050225B2 true JP4050225B2 (ja) 2008-02-20

Family

ID=23162357

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003507694A Expired - Lifetime JP4050225B2 (ja) 2001-06-26 2002-06-26 マルチプロセッサシステムにおける推測的な格納を容易にする方法および装置

Country Status (5)

Country Link
US (1) US6704841B2 (ja)
EP (1) EP1402349A2 (ja)
JP (1) JP4050225B2 (ja)
KR (1) KR100567099B1 (ja)
WO (1) WO2003001369A2 (ja)

Families Citing this family (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040128448A1 (en) * 2002-12-31 2004-07-01 Intel Corporation Apparatus for memory communication during runahead execution
US7266673B2 (en) * 2003-05-02 2007-09-04 Advanced Micro Devices, Inc. Speculation pointers to identify data-speculative operations in microprocessor
US7363470B2 (en) * 2003-05-02 2008-04-22 Advanced Micro Devices, Inc. System and method to prevent in-flight instances of operations from disrupting operation replay within a data-speculative microprocessor
US7284097B2 (en) * 2003-09-30 2007-10-16 International Business Machines Corporation Modified-invalid cache state to reduce cache-to-cache data transfer operations for speculatively-issued full cache line writes
US7769950B2 (en) * 2004-03-24 2010-08-03 Qualcomm Incorporated Cached memory system and cache controller for embedded digital signal processor
US7484045B2 (en) 2004-03-30 2009-01-27 Intel Corporation Store performance in strongly-ordered microprocessor architecture
JP2006155080A (ja) * 2004-11-26 2006-06-15 Fujitsu Ltd メモリ制御装置およびメモリ制御方法
US7984248B2 (en) 2004-12-29 2011-07-19 Intel Corporation Transaction based shared data operations in a multiprocessor environment
US20060179174A1 (en) * 2005-02-02 2006-08-10 Bockhaus John W Method and system for preventing cache lines from being flushed until data stored therein is used
US7644221B1 (en) * 2005-04-11 2010-01-05 Sun Microsystems, Inc. System interface unit
US7376793B2 (en) * 2005-07-21 2008-05-20 Sun Microsystems, Inc. Cache coherence protocol with speculative writestream
US20070186056A1 (en) * 2006-02-07 2007-08-09 Bratin Saha Hardware acceleration for a software transactional memory system
US7404041B2 (en) * 2006-02-10 2008-07-22 International Business Machines Corporation Low complexity speculative multithreading system based on unmodified microprocessor core
EP1986101B1 (en) 2006-02-14 2012-06-20 Fujitsu Ltd. Coherency maintaining device and coherency maintaining method
KR100673497B1 (ko) * 2006-04-14 2007-01-24 (주)핸스건설 유압전달장치
US20080005504A1 (en) * 2006-06-30 2008-01-03 Jesse Barnes Global overflow method for virtualized transactional memory
US9798590B2 (en) * 2006-09-07 2017-10-24 Intel Corporation Post-retire scheme for tracking tentative accesses during transactional execution
US8060482B2 (en) * 2006-12-28 2011-11-15 Intel Corporation Efficient and consistent software transactional memory
US8370705B1 (en) * 2009-09-23 2013-02-05 Nvidia Corporation System and method for calculating a checksum address while maintaining error correction information
US9052967B2 (en) * 2010-07-30 2015-06-09 Vmware, Inc. Detecting resource deadlocks in multi-threaded programs by controlling scheduling in replay
WO2013188306A1 (en) 2012-06-15 2013-12-19 Soft Machines, Inc. Reordered speculative instruction sequences with a disambiguation-free out of order load store queue
KR102248470B1 (ko) * 2012-06-15 2021-05-06 인텔 코포레이션 메모리로부터 순차적으로 판독하는 load들을 구성하는 메모리 일관성 모델에서 비순차 load들을 갖는 세마포어 방법 및 시스템
TWI599879B (zh) 2012-06-15 2017-09-21 英特爾股份有限公司 在處理器中之免消歧義失序載入儲存佇列方法和微處理器
KR101996351B1 (ko) 2012-06-15 2019-07-05 인텔 코포레이션 통합된 구조를 갖는 동적 디스패치 윈도우를 가지는 가상 load store 큐
WO2013188696A2 (en) 2012-06-15 2013-12-19 Soft Machines, Inc. An instruction definition to implement load store reordering and optimization
EP2862060A4 (en) * 2012-06-15 2016-11-30 Soft Machines Inc METHOD AND SYSTEM FOR FILTERING SAVES FOR PREVENTING THE REQUIREMENT OF CHECKING ALL THE WORDS OF A CACHE MEMORY
EP2862063B1 (en) * 2012-06-15 2022-09-14 Intel Corporation A lock-based and synch-based method for out of order loads in a memory consistency model using shared memory resources
WO2013188460A2 (en) 2012-06-15 2013-12-19 Soft Machines, Inc. A virtual load store queue having a dynamic dispatch window with a distributed structure
EP2862072B1 (en) * 2012-06-15 2022-09-07 Intel Corporation A load store buffer agnostic to threads implementing forwarding from different threads based on store seniority
WO2013188701A1 (en) 2012-06-15 2013-12-19 Soft Machines, Inc. A method and system for implementing recovery from speculative forwarding miss-predictions/errors resulting from load store reordering and optimization
US10574727B2 (en) * 2015-10-21 2020-02-25 Honeywell International Inc. MIB data broadcast using inexpensive method incorporating microcontroller and FPGA
JP6318440B2 (ja) * 2016-10-07 2018-05-09 インテル・コーポレーション 無制限トランザクショナルメモリ(utm)システムの最適化
US10303603B2 (en) 2017-06-13 2019-05-28 Microsoft Technology Licensing, Llc Low power multi-core coherency
US10282298B2 (en) 2017-06-13 2019-05-07 Microsoft Technology Licensing, Llc Store buffer supporting direct stores to a coherence point
US10691593B1 (en) * 2018-12-19 2020-06-23 Micron Technology, Inc. Predictive data storage hierarchical memory systems and methods
US11061824B2 (en) * 2019-09-03 2021-07-13 Microsoft Technology Licensing, Llc Deferring cache state updates in a non-speculative cache memory in a processor-based system in response to a speculative data request until the speculative data request becomes non-speculative
US10983801B2 (en) * 2019-09-06 2021-04-20 Apple Inc. Load/store ordering violation management
US11960400B2 (en) * 2022-04-26 2024-04-16 Cadence Design Systems, Inc. Managing multiple cache memory circuit operations

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5623628A (en) * 1994-03-02 1997-04-22 Intel Corporation Computer system and method for maintaining memory consistency in a pipelined, non-blocking caching bus request queue
US5765208A (en) * 1995-09-29 1998-06-09 Motorola, Inc. Method of speculatively executing store instructions prior to performing snoop operations
US5838943A (en) * 1996-03-26 1998-11-17 Advanced Micro Devices, Inc. Apparatus for speculatively storing and restoring data to a cache memory
US6065103A (en) * 1997-12-16 2000-05-16 Advanced Micro Devices, Inc. Speculative store buffer
US6463507B1 (en) * 1999-06-25 2002-10-08 International Business Machines Corporation Layered local cache with lower level cache updating upper and lower level cache directories
US6473833B1 (en) * 1999-07-30 2002-10-29 International Business Machines Corporation Integrated cache and directory structure for multi-level caches
US6523109B1 (en) * 1999-10-25 2003-02-18 Advanced Micro Devices, Inc. Store queue multimatch detection
US6535962B1 (en) * 1999-11-08 2003-03-18 International Business Machines Corporation System and method for prefetching data using a hardware prefetch mechanism

Also Published As

Publication number Publication date
JP2004533079A (ja) 2004-10-28
US20020199063A1 (en) 2002-12-26
EP1402349A2 (en) 2004-03-31
KR20040012812A (ko) 2004-02-11
WO2003001369A2 (en) 2003-01-03
KR100567099B1 (ko) 2006-03-31
US6704841B2 (en) 2004-03-09
WO2003001369A3 (en) 2003-07-03

Similar Documents

Publication Publication Date Title
JP4050225B2 (ja) マルチプロセッサシステムにおける推測的な格納を容易にする方法および装置
JP4050226B2 (ja) マルチプロセッサシステムにおける推測的な格納を容易にするl2ディレクトリの利用
US11803486B2 (en) Write merging on stores with different privilege levels
US6718839B2 (en) Method and apparatus for facilitating speculative loads in a multiprocessor system
US6438659B1 (en) Directory based cache coherency system supporting multiple instruction processor and input/output caches
JP4417715B2 (ja) キャッシュメモリにおける、タグおよびデータアクセスを分断する方法および装置
US6374332B1 (en) Cache control system for performing multiple outstanding ownership requests
US8423736B2 (en) Maintaining cache coherence in a multi-node, symmetric multiprocessing computer
JPH0743670B2 (ja) ストアスルーキャッシュ管理システム
JP2010507160A (ja) データ処理装置の共有メモリへの書込みアクセス要求の処理
JP2001507845A (ja) キャッシュメモリにおけるプリフェッチ管理
JPH02166539A (ja) フェッチ方法
JP4577729B2 (ja) ライトバックキャッシュにおいてスヌーププッシュ処理やスヌープキル処理が同時発生しているときのライトバック処理をキャンセルするためのシステムおよび方法
JPH0567976B2 (ja)
JP2023527735A (ja) コア間キャッシュスタッシング及びターゲット発見
JPH07101412B2 (ja) データ事前取出し方法およびマルチプロセッサ・システム

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050627

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20050627

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

A524 Written submission of copy of amendment under article 19 pct

Free format text: JAPANESE INTERMEDIATE CODE: A524

Effective date: 20071106

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20071128

R150 Certificate of patent or registration of utility model

Ref document number: 4050225

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

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20101207

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20111207

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

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20121207

Year of fee payment: 5

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

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20131207

Year of fee payment: 6

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