JP4050226B2 - マルチプロセッサシステムにおける推測的な格納を容易にするl2ディレクトリの利用 - Google Patents

マルチプロセッサシステムにおける推測的な格納を容易にするl2ディレクトリの利用 Download PDF

Info

Publication number
JP4050226B2
JP4050226B2 JP2003507705A JP2003507705A JP4050226B2 JP 4050226 B2 JP4050226 B2 JP 4050226B2 JP 2003507705 A JP2003507705 A JP 2003507705A JP 2003507705 A JP2003507705 A JP 2003507705A JP 4050226 B2 JP4050226 B2 JP 4050226B2
Authority
JP
Japan
Prior art keywords
cache
load
speculative
record
load operation
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
JP2003507705A
Other languages
English (en)
Other versions
JP2005520222A (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 JP2005520222A publication Critical patent/JP2005520222A/ja
Application granted granted Critical
Publication of JP4050226B2 publication Critical patent/JP4050226B2/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/38Concurrent instruction execution, e.g. pipeline or 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
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods
    • G06F12/0822Copy directories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods
    • G06F12/0828Cache consistency protocols using directory methods with concurrent directory accessing, i.e. handling multiple concurrent coherency transactions
    • 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 or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3834Maintaining memory consistency
    • 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 or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling

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)
  • Multi Processors (AREA)
  • Hardware Redundancy (AREA)

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)リクエストを受信する。所有するための読み出しリクエストを受信すると、システムは、ターゲットキャッシュラインに関する整合する推測的格納動作が存在するかどうかを判定するために、推測的格納動作のレコードを検査する。もし存在すれば、システムは、ターゲットキャッシュラインをリクエストするプロセッサにライトオンリー状態で送ることにより、リクエストするプロセッサは、書き込み動作(読み込み動作ではない)をターゲットキャッシュラインに対して実行することができ、それにより、デッドロック条件を回避する。
(詳細な説明)
以下の説明は、任意の当業者が本発明を実施および利用できるように示されており、特定の用途および要件の意味で提供される。開示される実施形態に対する様々な改変は、当業者には容易に理解し得、本明細書中で定義される一般原理は、本発明の意図および範囲を逸脱することなく他の実施形態および用途に適用し得る。従って、本発明は、示される実施形態に制限されることが意図されるのではなく、本明細書中に開示される原理および特徴と一貫する最大範囲に一致するべきである。
(マルチプロセッサシステム)
図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 (25)

  1. マルチプロセッサシステムにおいて推測的ロード動作を容易にする方法であって、
    連するL1キャシュにL2キャッシュを介してデータ値をリターンさせて完了した推測的ロード動作のレコードを該L2キャッシュに維持することであって
    推測的ロード動作は、前のロード動作が完了する前に推測的に開始したロード動作であり
    完了した推測的ロード動作に対して、該レコードは、該推測的ロード動作に関連するL1キャッシュを識別する情報を含む、ことと、
    無効化イベントに応答して、
    該L2キャッシュにおけるターゲットラインを無効化することと、
    該レコードへの検索を実行することにより、該L2キャッシュにおけるターゲットラインの該無効化により影響を受け得る推測的ロード動作と関連する、影響を受けたL1キャッシュを識別することと、
    該影響を受けた推測的ロード動作を再生するために該影響を受けたL1キャッシュに再生コマンドを送信することにより、該影響を受けた推測的ロード動作が、該L2キャッシュにおける該ターゲットラインの無効化の後に起こること
    を包含する、方法。
  2. 前記レコードをL2キャッシュに維持することは、
    前記L2キャッシュにおいてL1キャッシュからロードミス動作を受信することであって、該ロードミス動作は、該ロードミス動作と関連するL1キャッシュ位置に対して完了した推測的ロード動作が存在するかどうかを特定する情報を含む、ことと、
    そのような推測的ロード動作が存在する場合、該L1キャッシュが該推測的ロード動作と関連することを示すようにレコードを更新すること
    を包含する、請求項1に記載の方法。
  3. 前記ロードミス動作は、該ロードミス動作と関連する前記L1キャッシュ位置を識別し、
    前記レコードを更新することは、該レコードにおいて該L1キャッシュ位置を記録し、それにより、後の再生コマンドが該L1キャッシュ位置を含むことができることを包含する、請求項2に記載の方法。
  4. ロードミス動作が推測的でない場合、前記L1キャッシュにおける関連するエントリが、完了した推測的ロード動作と関連しないことを示すように前記レコードを更新することをさらに包含する、請求項3に記載の方法。
  5. 再生コマンドがL2キャッシュラインに対する1つ以上のL1キャッシュに送信される場合、該L2キャッシュラインが完了した推測的ロード動作ともはや関連しないことを示すように前記レコードを更新することをさらに包含する、請求項1に記載の方法。
  6. 前記L2キャッシュは、L1キャッシュにおけるラインに対するエントリを含むリバースディレクトリを含み、各エントリは、該L2キャッシュにおいて関連するエントリを識別する、請求項1に記載の方法。
  7. 前記リバースディレクトリは、前記L1キャッシュの各々において各エントリと対応する固定エントリを含む、請求項6に記載の方法。
  8. 前記リバースディレクトリにおける各エントリは、前記L2キャッシュにおける対応するエントリの位置を特定する情報を含む、請求項7に記載の方法。
  9. 前記無効化イベントは、キャッシュコヒーレンシプロトコル動作を含む、請求項1に記載の方法。
  10. 前記無効化イベントは、前記L2キャッシュにおける前記ターゲットラインと関連する格納動作を含む、請求項1に記載の方法。
  11. 前記マルチプロセッサシステムは、ロードは前の格納を追い越すことができ、ロードは前のロードを追い越すことができず、格納は前のロードを追い越すことができず、かつ、格納は前の格納を追い越すことができない、トータルストアオーダリングメモリモデルを実装する、請求項1に記載の方法。
  12. マルチプロセッサシステムにおいて推測的ロード動作を容易にする装置であって、
    L2キャッシュと、
    該L2キャッシュを介して、関連するL1キャッシュにデータ値をリターンさせて完了した推測的ロード動作を識別する情報を含む該L2キャッシュにおけるレコードであって、
    推測的ロード動作は、前のロード動作が完了する前に推測的に開始したロード動作であり
    完了した推測的ロード動作に対して、該レコードは、該推測的ロード動作と関連するL1キャッシュを識別する情報を含む、レコードと、
    無効化イベントに応答して、該L2キャッシュにおいてターゲットラインを無効化するように構成される無効化メカニズムと、
    再生メカニズムであって、該無効化イベントに応答して、
    該レコードへの検索を実行することにより、該L2キャッシュにおける該ターゲットラインの該無効化により影響を受け得る推測的ロード動作と関連する、影響を受けたL1キャッシュを識別
    該影響を受けた推測的ロード動作を再生するために該影響を受けたL1キャッシュに再生コマンドを送信することにより、該影響を受けた推測的ロード動作が、該L2キャッシュにおける該ターゲットラインの無効化の後に起こる
    ように構成される、再生メカニズムと
    を備える、装置。
  13. L1キャッシュからロードミス動作を受信するように構成される前記レコードと関連する更新メカニズムであって、該ロードミス動作は、該ロードミス動作と関連するL1キャッシュ位置に対して完了した推測的ロード動作が存在するかどうかを特定する情報を含む、更新メカニズムをさらに備え、
    そのような推測的ロード動作が存在する場合、該更新メカニズムは、該L1キャッシュが該推測的ロード動作と関連することを示すように該レコードを更新するように構成される、請求項12に記載の装置。
  14. 前記ロードミス動作は、前記ロードミス動作と関連する前記L1キャッシュ位置を識別し、
    前記更新メカニズムは、前記レコードにおいて該L1キャッシュ位置を記録するように構成され、それにより、後の再生コマンドが該L1キャッシュ位置を含むことができる、請求項13に記載の装置。
  15. ロードミス動作が推測的でない場合、前記更新メカニズムは、前記L1キャッシュにおける関連するエントリが、完了した推測的ロード動作と関連しないことを示すように前記レコードを更新するように構成される、請求項14に記載の装置。
  16. 再生コマンドがL2キャッシュラインに対する1つ以上のL1キャッシュに送信される場合、前記更新メカニズムは、該L2キャッシュラインが完了した推測的ロード動作ともはや関連しないことを示すように前記レコードを更新するように構成される、請求項13に記載の装置。
  17. 前記L2キャッシュに接続されるリバースディレクトリをさらに含み、該リバースディレクトリは、L1キャッシュにおけるラインに対するエントリを含み、各エントリは、該L2キャッシュにおける関連するエントリを識別する、請求項12に記載の装置。
  18. 前記リバースディレクトリは、前記L1キャッシュの各々における各エントリに対応する固定エントリを含む、請求項17に記載の装置。
  19. 前記リバースディレクトリにおける各エントリは、前記L2キャッシュにおける対応するエントリの位置を特定する情報を含む、請求項18に記載の装置。
  20. 前記無効化イベントは、キャッシュコヒーレンシプロトコル動作を含む、請求項12に記載の装置。
  21. 前記無効化イベントは、前記L2キャッシュにおける前記ターゲットラインと関連する格納動作を含む、請求項12に記載の装置。
  22. 前記マルチプロセッサシステムは、ロードは前の格納を追い越すことができ、ロードは前のロードを追い越すことができず、格納は前のロードを追い越すことができず、格納が前の格納を追い越すことができない、トータルストアオーダリングメモリモデルを実装する、請求項12に記載の装置。
  23. 推測的ロード動作を容易にするマルチプロセッサシステムであって、
    複数のプロセッサと、
    該複数のプロセッサと接続される複数のL1キャッシュと、
    該複数のL1キャッシュと接続される1つのL2キャッシュと、
    該L2キャッシュを介して関連するL1キャッシュにデータ値をリターンさせて完了した推測的ロード動作を識別する情報を含む該L2キャッシュにおけるレコードであって、
    ここで、推測的ロード動作は、ロード動作が完了する前に推測的に開始したロード動作であり
    完了した推測的ロード動作に対して、該レコードは、該推測的ロード動作と関連するL1キャッシュを識別する情報を含む、レコードと
    無効化イベントに応答して、該L2キャッシュにおけるターゲットラインを無効化するように構成される無効化メカニズムと、
    再生メカニズムであって、該無効化イベントに応答して、
    該レコードへの検索を実行することにより、該L2キャッシュにおける該ターゲットラインの該無効化によって影響を受け得る推測的ロード動作と関連する、影響を受けたL1キャッシュを識別し
    該影響を受けた推測的ロード動作を再生するために該影響を受けたL1キャッシュに再生コマンドを送信することにより、該影響を受けた推測的ロード動作が、該L2キャッシュにおける該ターゲットラインの無効化の後に起こる
    ように構成される、再生メカニズムと
    を備える、マルチプロセッサシステム
  24. L1キャッシュからロードミス動作を受信するように構成される前記レコードと関連する更新メカニズムであって、該ロードミス動作は、該ロードミス動作と関連するL1キャッシュ位置に対して完了した推測的ロード動作が存在するかどうかを特定する情報を含む、更新メカニズムをさらに備え、
    そのような推測的ロード動作が存在する場合、該更新メカニズムは、該L1キャッシュが該推測的ロード動作と関連することを示すように該レコードを更新するように構成される、請求項23に記載のマルチプロセッサシステム。
  25. 前記L2キャッシュと接続されるリバースディレクトリをさらに含み、該リバースディレクトリは、L1キャッシュにおけるラインに対するエントリを含み、各エントリは、該L2キャッシュにおける関連するエントリを識別する、請求項23に記載のマルチプロセッサシステム。
JP2003507705A 2001-06-26 2002-06-26 マルチプロセッサシステムにおける推測的な格納を容易にするl2ディレクトリの利用 Expired - Lifetime JP4050226B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US30119701P 2001-06-26 2001-06-26
PCT/US2002/022159 WO2003001383A2 (en) 2001-06-26 2002-06-26 Using an l2 directory to facilitate speculative loads in a multiprocessor system

Publications (2)

Publication Number Publication Date
JP2005520222A JP2005520222A (ja) 2005-07-07
JP4050226B2 true JP4050226B2 (ja) 2008-02-20

Family

ID=23162362

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003507705A Expired - Lifetime JP4050226B2 (ja) 2001-06-26 2002-06-26 マルチプロセッサシステムにおける推測的な格納を容易にするl2ディレクトリの利用

Country Status (8)

Country Link
US (1) US6721855B2 (ja)
EP (1) EP1399823B1 (ja)
JP (1) JP4050226B2 (ja)
KR (1) KR100704089B1 (ja)
AT (1) ATE498866T1 (ja)
AU (1) AU2002349805A1 (ja)
DE (1) DE60239201D1 (ja)
WO (1) WO2003001383A2 (ja)

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6668308B2 (en) * 2000-06-10 2003-12-23 Hewlett-Packard Development Company, L.P. Scalable architecture based on single-chip multiprocessing
US6990559B2 (en) * 2002-10-03 2006-01-24 Hewlett-Packard Development Company, L.P. Mechanism for resolving ambiguous invalidates in a computer system
JP3988144B2 (ja) 2004-02-23 2007-10-10 日本電気株式会社 ベクトル処理装置、及び、追い越し制御回路
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
US7277989B2 (en) * 2004-06-22 2007-10-02 Sun Microsystems, Inc. Selectively performing fetches for store operations during speculative execution
US7571284B1 (en) * 2004-06-30 2009-08-04 Sun Microsystems, Inc. Out-of-order memory transactions in a fine-grain multithreaded/multi-core processor
US7543132B1 (en) 2004-06-30 2009-06-02 Sun Microsystems, Inc. Optimizing hardware TLB reload performance in a highly-threaded processor with multiple page sizes
US7290116B1 (en) 2004-06-30 2007-10-30 Sun Microsystems, Inc. Level 2 cache index hashing to avoid hot spots
US7366829B1 (en) 2004-06-30 2008-04-29 Sun Microsystems, Inc. TLB tag parity checking without CAM read
US7519796B1 (en) 2004-06-30 2009-04-14 Sun Microsystems, Inc. Efficient utilization of a store buffer using counters
US9727468B2 (en) 2004-09-09 2017-08-08 Intel Corporation Resolving multi-core shared cache access conflicts
US7984248B2 (en) 2004-12-29 2011-07-19 Intel Corporation Transaction based shared data operations in a multiprocessor environment
US7523266B2 (en) * 2006-02-06 2009-04-21 Sun Microsystems, Inc. Method and apparatus for enforcing memory reference ordering requirements at the L1 cache level
US20070186056A1 (en) * 2006-02-07 2007-08-09 Bratin Saha Hardware acceleration for a software transactional memory system
US8832415B2 (en) * 2010-01-08 2014-09-09 International Business Machines Corporation Mapping virtual addresses to different physical addresses for value disambiguation for thread memory access requests
US8751748B2 (en) * 2010-01-15 2014-06-10 International Business Machines Corporation Reader set encoding for directory of shared cache memory in multiprocessor system
JP5471428B2 (ja) * 2009-12-25 2014-04-16 富士通株式会社 情報処理装置およびキャッシュメモリ制御装置
US8825944B2 (en) 2011-05-23 2014-09-02 International Business Machines Corporation Populating strides of tracks to demote from a first cache to a second cache
US8825953B2 (en) 2012-01-17 2014-09-02 International Business Machines Corporation Demoting tracks from a first cache to a second cache by using a stride number ordering of strides in the second cache to consolidate strides in the second cache
US8825957B2 (en) 2012-01-17 2014-09-02 International Business Machines Corporation Demoting tracks from a first cache to a second cache by using an occupancy of valid tracks in strides in the second cache to consolidate strides in the second cache
US9021201B2 (en) 2012-01-17 2015-04-28 International Business Machines Corporation Demoting partial tracks from a first cache to a second cache
US8966178B2 (en) * 2012-01-17 2015-02-24 International Business Machines Corporation Populating a first stride of tracks from a first cache to write to a second stride in a second cache
JP5949330B2 (ja) * 2012-08-29 2016-07-06 株式会社リコー 情報処理装置、情報処理方法
US9405690B2 (en) * 2013-08-07 2016-08-02 Oracle International Corporation Method for storing modified instruction data in a shared cache
CN103744800B (zh) * 2013-12-30 2016-09-14 龙芯中科技术有限公司 面向重放机制的缓存操作方法及装置
US10423418B2 (en) 2015-11-30 2019-09-24 International Business Machines Corporation Method for maintaining a branch prediction history table
US10489296B2 (en) 2016-09-22 2019-11-26 International Business Machines Corporation Quality of cache management in a computer
US10620961B2 (en) * 2018-03-30 2020-04-14 Intel Corporation Apparatus and method for speculative conditional move operation

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5611063A (en) * 1996-02-06 1997-03-11 International Business Machines Corporation Method for executing speculative load instructions in high-performance processors
US6473833B1 (en) * 1999-07-30 2002-10-29 International Business Machines Corporation Integrated cache and directory structure for multi-level caches
US6418516B1 (en) * 1999-07-30 2002-07-09 International Business Machines Corporation Method and system for managing speculative requests in a multi-level memory hierarchy
US6609192B1 (en) * 2000-06-06 2003-08-19 International Business Machines Corporation System and method for asynchronously overlapping storage barrier operations with old and new storage operations
US6606702B1 (en) * 2000-06-06 2003-08-12 International Business Machines Corporation Multiprocessor speculation mechanism with imprecise recycling of storage operations

Also Published As

Publication number Publication date
WO2003001383A3 (en) 2003-08-14
WO2003001383A2 (en) 2003-01-03
EP1399823A2 (en) 2004-03-24
AU2002349805A1 (en) 2003-01-08
US20020199070A1 (en) 2002-12-26
KR100704089B1 (ko) 2007-04-05
ATE498866T1 (de) 2011-03-15
EP1399823B1 (en) 2011-02-16
DE60239201D1 (de) 2011-03-31
JP2005520222A (ja) 2005-07-07
KR20040007546A (ko) 2004-01-24
US6721855B2 (en) 2004-04-13

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
JP2566701B2 (ja) 共有キャッシュ内のデータ・ユニットに対する所有権の変更制御装置
US6625698B2 (en) Method and apparatus for controlling memory storage locks based on cache line ownership
JP4417715B2 (ja) キャッシュメモリにおける、タグおよびデータアクセスを分断する方法および装置
JP4298800B2 (ja) キャッシュメモリにおけるプリフェッチ管理
US6374332B1 (en) Cache control system for performing multiple outstanding ownership requests
JP2010507160A (ja) データ処理装置の共有メモリへの書込みアクセス要求の処理
US8423736B2 (en) Maintaining cache coherence in a multi-node, symmetric multiprocessing computer
JPH0743670B2 (ja) ストアスルーキャッシュ管理システム
US20110320738A1 (en) Maintaining Cache Coherence In A Multi-Node, Symmetric Multiprocessing Computer
JP2005533295A5 (ja)
JP2007533014A (ja) ライトバックキャッシュにおいてスヌーププッシュ処理やスヌープキル処理が同時発生しているときのライトバック処理をキャンセルするためのシステムおよび方法
JPH0567976B2 (ja)
JP2023527735A (ja) コア間キャッシュスタッシング及びターゲット発見
US6934810B1 (en) Delayed leaky write system and method for a cache memory
JP3260566B2 (ja) 情報処理システムにおける記憶制御方法および記憶制御装置
CN115098409A (zh) 进行阶层式高速缓存系统回存且无效的处理器以及方法
JPH07101412B2 (ja) データ事前取出し方法およびマルチプロセッサ・システム
JPH02236749A (ja) キャッシュ制御装置
JP2000066955A (ja) コピーキャッシュ情報掃き出しレベル選択方式

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20050620

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

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