JP4563486B2 - Cyclic snoop to identify eviction candidates for higher level cache - Google Patents

Cyclic snoop to identify eviction candidates for higher level cache Download PDF

Info

Publication number
JP4563486B2
JP4563486B2 JP2008550761A JP2008550761A JP4563486B2 JP 4563486 B2 JP4563486 B2 JP 4563486B2 JP 2008550761 A JP2008550761 A JP 2008550761A JP 2008550761 A JP2008550761 A JP 2008550761A JP 4563486 B2 JP4563486 B2 JP 4563486B2
Authority
JP
Japan
Prior art keywords
cache
level cache
directory
line
cache line
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2008550761A
Other languages
Japanese (ja)
Other versions
JP2009524137A (en
JP2009524137A5 (en
Inventor
ボーケンハーゲン、ジョン、マイケル
ヴァンダープール、ブライアン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2009524137A publication Critical patent/JP2009524137A/en
Publication of JP2009524137A5 publication Critical patent/JP2009524137A5/ja
Application granted granted Critical
Publication of JP4563486B2 publication Critical patent/JP4563486B2/en
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/128Replacement control using replacement algorithms adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel
    • 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/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels

Abstract

A computer system having patrol snoop sequencer that sequences through addresses of cache lines held in a higher level cache, making snoop reads using those addresses to a lower level cache. If a particular cache line held in the higher level cache is not held in the lower level cache, the particular cache line is identified as an eviction candidate in the higher level cache when a new cache line must be loaded into the higher level cache.

Description

本発明は、一般に、マルチレベル・キャッシュに関する。より具体的には、本発明は、新しいキャッシュ・ラインが上位レベル・キャッシュにロードされなければならないときに、上位レベル・キャッシュにおけるエビクション候補である上位レベル・キャッシュ内のキャッシュ・ラインを識別することに関する。   The present invention generally relates to multi-level caches. More specifically, the present invention identifies cache lines in the upper level cache that are eviction candidates in the upper level cache when a new cache line must be loaded into the upper level cache. About that.

今日のコンピュータ・システムは、典型的には、マルチレベル・キャッシュを用いる。例えば、極めて高速であるが相対的に小容量の第1レベル・キャッシュが、典型的には、プロセッサと同じ半導体チップ上に実装され、1回又は2回のプロセッサ・サイクルでデータをプロセッサに与える。第1レベル・キャッシュ(L1キャッシュ)は、通常、極めて高速ではあるがより大容量で遅いメモリほどはコンパクトでないスタティック・ランダム・アクセス・メモリ(SRAM)を用いて実装される。第1レベル・キャッシュはまた、制御、アドレス、及び信号の相互接続の長さを制限するために、相対的に小容量でなければならない。今日のコンピュータ・システムでは、プロセッサと同じ半導体チップ上に第2レベル・キャッシュ(L2キャッシュ)が実装されることも多い。第2レベル・キャッシュもまた、SRAMメモリを用いて構築されることが多い。第2レベル・キャッシュは、典型的には、物理的領域と格納されるデータ量とのいずれも第1レベル・キャッシュより大容量である。第2レベル・キャッシュは、典型的には、第1レベル・キャッシュよりアクセス(読み出し又は書き込み)が遅い。今日のコンピュータ・システムは、第2レベル・キャッシュよりさらに多くのデータを保持し、アクセスするのにさらに時間がかかる、第3レベル・キャッシュ(L3キャッシュ)も含む。多くの場合、第3レベル・キャッシュは、ダイナミック・ランダム・アクセス・メモリ(DRAM)を用いて実装されるが、SRAMメモリが第3レベル・キャッシュの設計に用いられることもある。   Today's computer systems typically use a multilevel cache. For example, a very fast but relatively small first level cache is typically implemented on the same semiconductor chip as the processor and provides data to the processor in one or two processor cycles. . The first level cache (L1 cache) is typically implemented using static random access memory (SRAM), which is very fast but not as compact as larger and slower memory. The first level cache must also be relatively small to limit the length of control, address, and signal interconnections. In today's computer systems, a second level cache (L2 cache) is often implemented on the same semiconductor chip as the processor. Second level caches are also often built using SRAM memory. The second level cache typically has a larger capacity for both the physical area and the amount of data stored than the first level cache. The second level cache is typically slower to access (read or write) than the first level cache. Today's computer systems also include a third level cache (L3 cache) that holds more data than the second level cache and takes more time to access. In many cases, the third level cache is implemented using dynamic random access memory (DRAM), but SRAM memory may also be used in the design of the third level cache.

キャッシュは、キャッシュ・ラインと呼ばれるブロックでデータを格納する。例えば、種々のコンピュータ・システムにおいて、キャッシュ・ラインは、64バイト、128バイト、256バイト等とすることができる。キャッシュ・ラインは、キャッシュ・ラインのアドレス及び当該キャッシュに結合された置換論理に基づいて、キャッシュ内のキャッシュ・ライン位置に格納される。キャッシュに結合されたキャッシュ・ディレクトリは、キャッシュに格納されたキャッシュ・ラインごとに状態情報及びタグ情報を維持する。   The cache stores data in blocks called cache lines. For example, in various computer systems, a cache line can be 64 bytes, 128 bytes, 256 bytes, etc. A cache line is stored at a cache line location in the cache based on the address of the cache line and the permutation logic coupled to the cache. A cache directory coupled to the cache maintains state information and tag information for each cache line stored in the cache.

プロセッサが特定のアドレスにおけるデータ片(a piece of data)を要求したときに、コンピュータ・システムは、そのデータが第1レベル・キャッシュに格納されているかどうかをチェックする。特定のアドレスは、データが第1レベル・キャッシュに格納されているかどうかを判断する第1レベル・キャッシュ・ディレクトリに提示される。データ片を含むキャッシュ・ラインが第1レベル・キャッシュに存在する場合には、データは、プロセッサによって用いられるように第1レベル・キャッシュからフェッチされ、これは、第1レベル・キャッシュにおけるキャッシュ・ヒットとして知られている。データ片を含むキャッシュ・ラインが第1レベル・キャッシュに保持されていない場合には、第1レベル・キャッシュによってキャッシュ・ミスが報告される。次に、第2レベル・キャッシュに要求が出される。第2レベル・キャッシュが特定のデータ片を保持する場合には、特定のデータ片を含むキャッシュ・ラインが、第2レベル・キャッシュからフェッチされ、第1レベル・キャッシュに格納される。多くの実装態様においては、特定のデータ片は、特定のデータ片を含むキャッシュ・ラインが第1レベル・キャッシュに書き込まれると同時にプロセッサが使用できるようになる。特定のデータ片が第2レベル・キャッシュに保持されていない場合には、第3レベル・キャッシュに要求が出される。特定のデータ片が第3レベル・キャッシュに保持されている場合には、特定のデータ片を含むキャッシュ・ラインが、第3レベル・キャッシュからフェッチされ、第2レベル・キャッシュ及び第1レベル・キャッシュに格納され、プロセッサが使用できるようになる。第3レベル・キャッシュにおいてキャッシュ・ミスが生じた場合には、さらなる要求が、第4レベル・キャッシュが存在すれば第4レベル・キャッシュに出されるか、又はメイン・メモリに出される。   When the processor requests a piece of data at a particular address, the computer system checks whether the data is stored in the first level cache. The particular address is presented in a first level cache directory that determines whether data is stored in the first level cache. If a cache line containing a piece of data exists in the first level cache, the data is fetched from the first level cache for use by the processor, which is a cache hit in the first level cache. Known as. If the cache line containing the piece of data is not held in the first level cache, the first level cache reports a cache miss. A request is then made to the second level cache. If the second level cache holds a particular piece of data, the cache line containing the particular piece of data is fetched from the second level cache and stored in the first level cache. In many implementations, a particular piece of data is made available to the processor at the same time that the cache line containing the particular piece of data is written to the first level cache. If a particular piece of data is not held in the second level cache, a request is made to the third level cache. If a particular piece of data is held in the third level cache, the cache line containing the particular piece of data is fetched from the third level cache, and the second level cache and the first level cache And is available for use by the processor. If a cache miss occurs in the third level cache, further requests are issued to the fourth level cache if a fourth level cache exists, or to main memory.

下位レベル・キャッシュは、上位レベル・キャッシュより少ないデータを保持するため、上位レベル・キャッシュにおける多数のキャッシュ・ライン位置は、下位レベル・キャッシュのより少ないキャッシュ・ライン位置にマッピングされる。今日のコンピュータ・システムにおいて、キャッシュは、典型的には、連想性(associativity)を備えた設計になっている。連想性は、特定のキャッシュ・ラインがキャッシュ内の特定のセット(行)にマッピングされることを意味するが、キャッシュをサポートする置換論理は、そのセットにおける多数のクラス(キャッシュ・ライン位置)のいずれかに特定のキャッシュ・ラインを配置することができる。特定のセットにおける特定のクラスが、キャッシュ・ライン位置である。例えば、連想度4ウェイの第2レベル・キャッシュの場合には、置換論理が、特定のセットにマッピングされる特定のキャッシュ・ラインを4つのクラスのうちのいずれに格納するかを選択する。   Because the lower level cache holds less data than the upper level cache, many cache line locations in the upper level cache are mapped to fewer cache line locations in the lower level cache. In today's computer systems, caches are typically designed with associtivity. Associability means that a particular cache line is mapped to a particular set (row) in the cache, but the replacement logic that supports the cache is for multiple classes (cache line locations) in that set. A specific cache line can be placed in either. A particular class in a particular set is a cache line location. For example, in the case of a 4-level associative second-level cache, replacement logic selects which of the four classes store a particular cache line that maps to a particular set.

キャッシュ・ラインが、上位レベル・キャッシュからキャッシュに書き込まれるときは、キャッシュ・ラインは、エビクトされなければならない(上位レベル・キャッシュに書き込まれるか、又は、キャッシュ・ライン内のデータが変更されていない場合には、単に上書きされる)。   When a cache line is written from the higher level cache to the cache, the cache line must be evicted (either written to the higher level cache or the data in the cache line has not changed In case it is simply overwritten).

連想性を備えたキャッシュにおいては、置換アルゴリズムが、セット内のどのキャッシュ・ラインが置換されるかを選択する。例えば、キャッシュが、連想度8ウェイである、すなわち1セット当たり8つのクラスを有する場合には、8つのうちの1つのキャッシュ・ラインをエビクトして、そのセットにマッピングされるアドレスを有する新しいキャッシュ・ラインのために場所を空けなければならない。   In an associative cache, a replacement algorithm selects which cache lines in the set are replaced. For example, if the cache is 8-way associative, ie has 8 classes per set, a new cache with an address mapped to that set by evicting one of the 8 cache lines • You must make room for the line.

多数の置換アルゴリズムが、種々のコンピュータ・システムに実装されてきた。より最近用いられたキャッシュ・ラインが最近用いられていないキャッシュ・ラインと比べて再び必要とされる可能性が高いという考え方による最長時間未使用(LRU;Least Recently Used)アルゴリズムが、広く使用されてきた。LRUアルゴリズムの問題は、2つの理由のために、特定のキャッシュ・ラインが相対的に長い時間用いられていないように見える可能性があることである。第1の理由は、プロセッサが、特定のキャッシュ・ライン内のデータを必要としなくなり、別のキャッシュ・ラインをロードしてその特定のキャッシュ・ラインを上書きすることである。第2の理由は、プロセッサが、特定のキャッシュ・ライン内のデータを頻繁に用いて、上位レベル・キャッシュをしばらくの間更新しないことである。上位レベル・キャッシュにとって特定のキャッシュ・ラインがLRUアルゴリズムに基づいてエビクション候補であるように見えるが、第2の理由として説明されたように特定のキャッシュ・ライン内のデータが頻繁に用いられている場合には、エビクションには下位レベル・キャッシュからのエビクションも含まれることになるため、上位レベル・キャッシュが特定のキャッシュ・ラインをエビクトするときに非効率となる。特定のキャッシュ・ライン内のデータが頻繁に用いられているため、プロセッサは、単に再度キャッシュ・ラインを要求し、キャッシュ・ラインが上位レベル・キャッシュより上位のレベルから取得されるまで待つことが必要になる。   A number of replacement algorithms have been implemented in various computer systems. A least recently used (LRU) algorithm based on the idea that a more recently used cache line is more likely to be needed again than a less recently used cache line has been widely used. It was. The problem with the LRU algorithm is that a particular cache line may appear unused for a relatively long time for two reasons. The first reason is that the processor no longer needs the data in a particular cache line and loads another cache line to overwrite that particular cache line. The second reason is that the processor frequently uses data in a particular cache line and does not update the upper level cache for a while. For a higher level cache, a particular cache line appears to be an eviction candidate based on the LRU algorithm, but the data in a particular cache line is frequently used as explained for the second reason If so, the eviction will include eviction from the lower level cache, which is inefficient when the upper level cache evicts a particular cache line. Because data in a particular cache line is frequently used, the processor simply needs to request the cache line again and wait until the cache line is taken from a higher level than the higher level cache become.

上述されたLRUの問題のため、マルチレベル・キャッシュを有する多くのコンピュータ・システムは、事実上、上位レベル・キャッシュが、上位レベル・キャッシュにおけるセットのうちのどのキャッシュ・ラインが好ましいエビクション候補であるかを知らず、エビクションのためのセットからランダムに1つのキャッシュ・ラインを選定するだけであることを許容する、上位レベル・キャッシュの擬似ランダム・エビクション・アルゴリズムを実装してきた。残念なことに、擬似ランダム・エビクション・アルゴリズムは、プロセッサによって頻繁に用いられているキャッシュ・ラインをエビクトして、エビクトされたキャッシュ・ラインが上位レベル・キャッシュより上位のレベルのメモリからフェッチされるまでプロセッサを待機させることも多い。
IBM Technical Disclosure Bulletin, IBM
Corp. New York, US, vol.34, no.6 1 November 1991 pages 59-60, XP600228351 ISSN:
0018-8689 は、マルチレベル・キャッシュのためのMRU更新制御を開示する。この文献においては、MRU更新要求を上位レベル・キャッシュに送るのは、下位レベル・キャッシュに対してスヌープ読み出しを行う上位レベル・キャッシュではなく、下位レベル・キャッシュである。
Because of the LRU problem described above, many computer systems with multi-level caches are effectively eviction candidates where the upper level cache is the preferred eviction candidate for which cache line of the set in the upper level cache. We have implemented a pseudo-random eviction algorithm for the upper level cache that does not know if it exists and allows only one cache line to be randomly selected from the set for eviction. Unfortunately, the pseudo-random eviction algorithm evicts cache lines that are frequently used by the processor, and the evicted cache lines are fetched from a higher level memory than the higher level cache. In many cases, the processor is made to wait until it reaches.
IBM Technical Disclosure Bulletin, IBM
Corp. New York, US, vol.34, no.6 1 November 1991 pages 59-60, XP600228351 ISSN:
0018-8689 discloses MRU update control for multi-level cache. In this document, it is the lower level cache that sends the MRU update request to the upper level cache, not the upper level cache that performs a snoop read to the lower level cache.

したがって、上位レベル・キャッシュにおける改善されたエビクション・スキームを提供する方法及び装置についての必要性が存在する。   Accordingly, a need exists for a method and apparatus that provides an improved eviction scheme in a high level cache.

本発明は、キャッシュ・ライン置換を改善することによって、コンピュータ・システムの性能を高める方法及び装置を提供する。   The present invention provides a method and apparatus for enhancing the performance of a computer system by improving cache line replacement.

1つの実施形態においては、上位レベル・キャッシュ内のキャッシュ・ラインは、下位レベル・キャッシュに存在しないものとして識別される。下位レベル・キャッシュに存在しない上位レベル・キャッシュ内のキャッシュ・ラインは、上位レベル・キャッシュに格納される必要がないため、このようなキャッシュ・ラインは、エビクション候補としてマークされる。上位レベル・キャッシュが、多数のクラスを有するセットにおいてキャッシュ・ラインを置換しなければならないときには、エビクション候補としてマークされなかったキャッシュ・ラインの代わりに、エビクション候補としてマークされたキャッシュ・ラインが、優先的にエビクトされる。   In one embodiment, the cache line in the upper level cache is identified as not existing in the lower level cache. Such cache lines are marked as eviction candidates because cache lines in the higher level cache that do not exist in the lower level cache need not be stored in the higher level cache. When a higher level cache has to replace a cache line in a set with a large number of classes, the cache line marked as an eviction candidate is replaced by the cache line not marked as an eviction candidate. Evicted preferentially.

本発明の1つの実施形態においては、上位レベル・キャッシュを有するメモリ・コントローラの巡回スヌープ・シーケンサは、上位レベル・キャッシュ・ディレクトリが使用されていないときに、上位レベル・キャッシュ・ディレクトリからディレクトリ・エントリを読み出す。巡回スヌープ・シーケンサは、上位レベル・キャッシュ・ディレクトリからの情報を用いて、プロセッサ・メモリ・バス及び下位レベル・キャッシュ・ディレクトリが使用されていないときに、下位レベル・キャッシュ・ディレクトリのスヌープ読み出しを行う。下位レベル・キャッシュ・ディレクトリが、特定のスヌープ読み出しについてキャッシュ・ミスを報告した場合には、巡回スヌープ・シーケンサは、上位レベル・キャッシュ・ディレクトリが使用されていないときに、対応するキャッシュ・ラインをエビクション候補として識別するために上位レベル・キャッシュ・ディレクトリ内の状態情報を更新する。スヌープ読み出しは、上位レベル・キャッシュに関連する巡回スヌープ・シーケンサから、上位レベル・キャッシュ内の特定のキャッシュ・ラインが下位レベル・キャッシュに存在するかどうかを判断することができる下位レベル・キャッシュ・ディレクトリに送信されるいずれかのコマンドであり、このコマンドは、下位レベル・キャッシュにおいてエビクションを起こさせるものではない。   In one embodiment of the present invention, a cyclic snoop sequencer of a memory controller having a higher level cache is configured to perform a directory entry from the higher level cache directory when the higher level cache directory is not in use. Is read. The cyclic snoop sequencer uses information from the upper level cache directory to snoop read the lower level cache directory when the processor memory bus and lower level cache directory are not in use . If the lower level cache directory reports a cache miss for a particular snoop read, the cyclic snoop sequencer will shout the corresponding cache line when the higher level cache directory is not in use. Update the state information in the higher level cache directory to identify it as a candidate. A snoop read is a lower level cache directory that can determine from a cyclic snoop sequencer associated with the upper level cache whether a particular cache line in the upper level cache exists in the lower level cache. Any command that is sent to, which does not cause eviction in the lower level cache.

メモリ・コントローラ内の巡回スヌープ・シーケンサは、上位レベル・キャッシュ・ディレクトリ、プロセッサ・メモリ・バス、及び下位レベル・キャッシュ・ディレクトリが使用されていない時間を利用して、上位レベル・キャッシュ・ディレクトリ内のエントリを循環し続け、キャッシュ・ラインのエビクション候補を探す。メモリ・コントローラ内の置換論理は、エビクション候補情報を用いて、幾つかの環境においては上位レベル・キャッシュにおいて依然として必要とされるキャッシュ・ラインの前に、上位レベル・キャッシュにおいては必要とされなくなったキャッシュ・ラインをエビクトする。   The cyclic snoop sequencer in the memory controller uses the time that the upper level cache directory, the processor memory bus, and the lower level cache directory are not in use, in the upper level cache directory. Cycle through entries looking for cache line eviction candidates. Replacement logic in the memory controller is no longer needed in the higher level cache, before the cache line still needed in the higher level cache in some environments, using eviction candidate information Evict the cache line

好ましい実施形態の以下の詳細な説明においては、本出願の一部を形成し、本発明を実施することができる特定の実施形態が例示の目的で示される、添付図面を参照する。他の実施形態を利用することができ、本発明の範囲から逸脱することなく構造的な変更を加えることができることを理解すべきである。   In the following detailed description of the preferred embodiments, reference is made to the accompanying drawings, which form a part hereof and in which are shown by way of illustration specific embodiments in which the invention may be practiced. It should be understood that other embodiments may be utilized and structural changes may be made without departing from the scope of the present invention.

本発明は、上位レベル・キャッシュにおけるエビクション候補を決定するための方法及び装置を提供する。階層キャッシュ・システム(すなわち、上位レベル・キャッシュと下位レベル・キャッシュとを有するキャッシュ・システム)においては、下位レベル・キャッシュ内のすべてのキャッシュ・ラインは、上位レベル・キャッシュにも存在する。しかしながら、上位レベル・キャッシュ内の特定のキャッシュ・ラインが、下位レベル・キャッシュには存在しない場合がある。例えば、プロセッサが、下位レベル・キャッシュにロードされなければならない第1のキャッシュ・ラインにおける第1のデータを要求することがある。プロセッサは、第1のデータを読み出す。その後、プロセッサは、下位レベル・キャッシュにロードされなければならない第2のキャッシュ・ラインにおける第2のデータを要求することがある。第1のキャッシュ・ラインが変更されなかったので、第2のキャッシュ・ラインは、単に第1のキャッシュ・ラインに上書きされる。従来の方法及び装置は、第1のキャッシュ・ラインが下位レベル・キャッシュに存在しなくなったことを上位レベル・キャッシュに通知するものではない。   The present invention provides a method and apparatus for determining eviction candidates in a higher level cache. In a hierarchical cache system (ie, a cache system having a higher level cache and a lower level cache), all cache lines in the lower level cache are also present in the higher level cache. However, certain cache lines in the upper level cache may not exist in the lower level cache. For example, a processor may request first data in a first cache line that must be loaded into a lower level cache. The processor reads the first data. Thereafter, the processor may request second data in a second cache line that must be loaded into the lower level cache. Since the first cache line was not changed, the second cache line is simply overwritten by the first cache line. Prior methods and apparatus do not notify the upper level cache that the first cache line is no longer in the lower level cache.

本発明の実施形態は、キャッシュ・ディレクトリ及びバスが使用されていない時間中に、上位レベル・キャッシュが、上位レベル・キャッシュのキャッシュ・ディレクトリ・エントリを用いる「スヌープ読み出し」を下位レベル・キャッシュに対して行うことを可能にする。スヌープ読み出しは、上位レベル・キャッシュに関連する巡回スヌープ・シーケンサから、上位レベル・キャッシュの特定のキャッシュ・ラインが下位レベル・キャッシュに存在するかどうかを判断することができる、下位レベル・キャッシュ・ディレクトリに送信されるいずれかのコマンドであり、このコマンドは、下位レベル・キャッシュにおいてキャッシュ・ラインのエビクションを起こさせるものではない。スヌープ読み出しによって下位レベル・キャッシュにおけるキャッシュ・ヒットが生じた場合には、上位レベル・キャッシュからキャッシュ・ディレクトリ・エントリによってアドレス指定されたキャッシュ・ラインは、下位レベル・キャッシュに依然として存在する。スヌープ読み出しによって下位レベル・キャッシュにおけるキャッシュ・ミスが生じた場合には、上位レベル・キャッシュからキャッシュ・ディレクトリ・エントリによってアドレス指定されたキャッシュ・ラインは、下位レベル・キャッシュには存在せず、上位レベル・キャッシュにおいてキャッシュ・ディレクトリ・エントリによってアドレス指定されたキャッシュ・ラインが、エビクション候補としてマークされる。エビクション候補としてマークされた上位レベル・キャッシュ内のセットにおけるキャッシュ・ラインは、エビクション候補としてマークされていない上位レベル・キャッシュ内のセットにおけるキャッシュ・ラインより先にエビクションのために選択される。幾つかのキャッシュは、「無効」状態を含む状態情報を用いる。無効状態を有するキャッシュ・ラインは、典型的には、エビクトされる第1のキャッシュ・ラインである。   Embodiments of the present invention allow the upper level cache to "snoop read" to the lower level cache using the cache directory entry of the upper level cache during times when the cache directory and bus are not in use. Make it possible to do. A snoop read is a lower level cache directory that can determine from a cyclic snoop sequencer associated with the upper level cache whether a particular cache line of the upper level cache exists in the lower level cache. Any command sent to, which does not cause cache line eviction in the lower level cache. If a snoop read causes a cache hit in the lower level cache, the cache line addressed by the cache directory entry from the higher level cache is still present in the lower level cache. If a snoop read causes a cache miss in the lower level cache, the cache line addressed by the cache directory entry from the higher level cache does not exist in the lower level cache and is A cache line addressed by a cache directory entry in the cache is marked as an eviction candidate. Cache lines in sets in higher level caches marked as eviction candidates are selected for eviction prior to cache lines in sets in higher level caches not marked as eviction candidates . Some caches use state information that includes an “invalid” state. A cache line having an invalid state is typically the first cache line to be evicted.

ここで、図1を参照すれば、コンピュータ・システム100が、本発明の実施形態を説明するのに十分な詳細さで示されている。コンピュータ・システムは、ディスク・メモリ、ネットワーク・インタフェース、ユーザ・インタフェース等をさらに含むことが分かるであろう。   Referring now to FIG. 1, a computer system 100 is shown in sufficient detail to describe an embodiment of the present invention. It will be appreciated that the computer system further includes a disk memory, a network interface, a user interface, and the like.

コンピュータ・システム100は、プロセッサ105A及び105Bとして示される1つ又は複数のプロセッサ105を含む。各々のプロセッサ105は、L2キャッシュ110と、関連するL2キャッシュ・ディレクトリと、置換論理109とをさらに含む。置換論理109は、新しいキャッシュ・ラインとの置換が要求されたときに、L2キャッシュ110のどのキャッシュ・ラインを置換する(エビクトする)かを選択する。プロセッサ105Aは、L2キャッシュ110Aと、L2キャッシュ・ディレクトリ111Aと、置換論理109Aとを含むように示されており、プロセッサ105Bは、L2キャッシュ110Bと、L2キャッシュ・ディレクトリ111Bと、置換論理109Bとを含むように示されている。多くのコンピュータ・システムにおいては、L2キャッシュが2つ以上のプロセッサによって共有されることが分かるであろう。プロセッサ105A及び105Bは、プロセッサ・メモリ・バス115A及びプロセッサ・メモリ・バス115Bによってメモリ・コントローラ130に結合されている。幾つかのプロセッサは、図示されるような別個のバス(115A、115B)の代わりに、共通バスを用いてメモリ・コントローラに結合されることが分かるであろう。プロセッサ・メモリ・バスは、まとめてプロセッサ・メモリ・バス115と呼ばれる。   Computer system 100 includes one or more processors 105, shown as processors 105A and 105B. Each processor 105 further includes an L2 cache 110, an associated L2 cache directory, and replacement logic 109. The replacement logic 109 selects which cache line in the L2 cache 110 is to be replaced (evicted) when a replacement with a new cache line is requested. Processor 105A is shown to include L2 cache 110A, L2 cache directory 111A, and replacement logic 109A, and processor 105B includes L2 cache 110B, L2 cache directory 111B, and replacement logic 109B. Shown to include. It will be appreciated that in many computer systems the L2 cache is shared by more than one processor. Processors 105A and 105B are coupled to memory controller 130 by processor memory bus 115A and processor memory bus 115B. It will be appreciated that some processors are coupled to the memory controller using a common bus instead of a separate bus (115A, 115B) as shown. The processor memory bus is collectively referred to as the processor memory bus 115.

メモリ・コントローラ130は、既存のコンピュータ・システムに用いられるものと同様のL3キャッシュ132及びL3キャッシュ・ディレクトリ136を含む。メモリ・コントローラ130は、巡回スヌープ・シーケンサ134をさらに含む。メモリ・コントローラ130内の置換論理133が、巡回スヌープ・シーケンサ134によってL3キャッシュ・ディレクトリ136に格納される情報を用いるキャッシュ・ライン置換方法を実装する。より詳細に後述されるように、巡回スヌープ・シーケンサ134は、リソース(L3キャッシュ・ディレクトリ136、メモリ・プロセッサ・バス115、及びL2キャッシュ・ディレクトリ111)がアイドル状態である(すなわち、アクセスされていない)時間を利用する。巡回スヌープ・シーケンサ134は、それらのリソースのこのようなアイドル時間を利用して、L3キャッシュ・ディレクトリ136内のアドレスを用いるスヌープ読み出しを行う。巡回スヌープ・シーケンサは、(キャッシュ・ラインのアドレスを用いて)キャッシュ・ラインについてのL3キャッシュ・ディレクトリ・エントリを循環して、L3キャッシュ132のどのキャッシュ・ラインがL2キャッシュ110A及び110Bに存在しないかを決定し、このようなキャッシュ・ラインのすべてをL3キャッシュ132におけるエビクション候補として記録する。   The memory controller 130 includes an L3 cache 132 and an L3 cache directory 136 similar to those used in existing computer systems. The memory controller 130 further includes a cyclic snoop sequencer 134. Replacement logic 133 within memory controller 130 implements a cache line replacement method that uses information stored in L3 cache directory 136 by cyclic snoop sequencer 134. As will be described in more detail below, the cyclic snoop sequencer 134 has resources (L3 cache directory 136, memory processor bus 115, and L2 cache directory 111) idle (ie, not accessed). ) Use time. The cyclic snoop sequencer 134 performs snoop reads using addresses in the L3 cache directory 136 using these idle times of those resources. The cyclic snoop sequencer cycles through the L3 cache directory entry for the cache line (using the cache line address) to determine which cache lines in the L3 cache 132 are not in the L2 caches 110A and 110B. And all such cache lines are recorded as eviction candidates in the L3 cache 132.

メモリ・コントローラ130は、バス116を介してメモリ150に結合される。コンピュータ・システム100のメモリ150は、コンピュータ・システム100のメイン・メモリである。コンピュータ・システム100の別の実施形態においては、メモリ150は、レベル4(L4)キャッシュとすることができる。   Memory controller 130 is coupled to memory 150 via bus 116. The memory 150 of the computer system 100 is the main memory of the computer system 100. In another embodiment of computer system 100, memory 150 may be a level 4 (L4) cache.

図2は、プロセッサ・メモリ・バス115を示す。プロセッサ105とメモリ・コントローラ130との間で通信するように実装される多くの構成が存在することが分かるであろう。プロセッサ・メモリ・バス115は、コマンド/ステータス116と、アドレス117と、データ118とを含むように示されている。コマンド/ステータス116は、コマンド(例えば、読み出し、書き込み)及びステータス(キャッシュ・ミス、キャッシュ・ヒット、及び、幾つかの実施形態においてはスヌープ読み出し)を転送するために用いられる。アドレス117は、アドレスを転送するために用いられる。例えば、プロセッサ105が特定のアドレスのデータを必要とし、そのデータがL2キャッシュ110には存在しないときは、特定のアドレスが、アドレス117によってメモリ・コントローラ130に伝送される。データは、データ118によって転送される。例えば、変更されたキャッシュ・ラインは、L2キャッシュ110からL3キャッシュ132に書き込まれる。キャッシュ・ラインは、プロセッサ105からの要求に応答して、L3キャッシュ132からL2キャッシュ110に送られる。多くの実装形態においては、情報は特定のプロセッサ・メモリ・バス115上に多重化されることが分かるであろう。例えば、データ118は8バイト幅であるがキャッシュ・ラインは64バイト幅である場合には、キャッシュ・ラインを転送するために8サイクルが必要である。同様に、幾つかのコンピュータ・システムにおいては、アドレス117は、データ118と同じ物理線を用いるが、多重化されている。   FIG. 2 shows the processor memory bus 115. It will be appreciated that there are many configurations that are implemented to communicate between the processor 105 and the memory controller 130. The processor memory bus 115 is shown to include a command / status 116, an address 117, and data 118. Command / status 116 is used to transfer commands (eg, read, write) and status (cache miss, cache hit, and in some embodiments, snoop read). The address 117 is used for transferring an address. For example, when the processor 105 requires data at a specific address and the data does not exist in the L2 cache 110, the specific address is transmitted to the memory controller 130 by the address 117. Data is transferred by data 118. For example, the modified cache line is written from the L2 cache 110 to the L3 cache 132. The cache line is sent from the L3 cache 132 to the L2 cache 110 in response to a request from the processor 105. It will be appreciated that in many implementations the information is multiplexed onto a particular processor memory bus 115. For example, if data 118 is 8 bytes wide but the cache line is 64 bytes wide, 8 cycles are required to transfer the cache line. Similarly, in some computer systems, address 117 uses the same physical line as data 118, but is multiplexed.

図3Aは、L3キャッシュ132をより詳細に示す。説明のために、L3キャッシュ132は8ウェイ・セット連想である、すなわち、セット(行)の各々が、クラス0から7まで(クラス0、クラス3、及びクラス7が矢印で示されている)の8つのクラスを含む。L3キャッシュ132は、矢印で示されたセット0、セット2、及びセットN−1のN個のセット(セット0からN−1まで)を有するように示されている。特定のキャッシュ・ラインは、キャッシュ・ラインのアドレスの一部を用いて、L3キャッシュ132の特定のセットにマッピングされる。メモリ・コントローラ130の置換論理133は、特定のキャッシュ・ラインがどのクラスに配置されるかを決定する。特定のキャッシュ・ラインは、特定のキャッシュ・ラインがキャッシュ132にロードされるたびに、8つのクラスのいずれかに配置することができる。キャッシュ・ラインについての幾つかのキャッシュ・ライン位置が図3Aに示されており、セット及び列によって参照される。例えば、キャッシュ・ライン位置132−00は、L3キャッシュ132のセット0、クラス0である。同様に、キャッシュ・ライン位置132−03は、L3キャッシュ132のセット0、クラス3である。キャッシュ・ライン132−07及び132−23は、同様の命名規則で示されている。L3キャッシュ132のキャッシュ・ラインは、図3Bに示されるL2キャッシュ110にマッピングされなければならない。L2キャッシュ110は、L3キャッシュ132より小さく、典型的には、L3キャッシュ132より少ない連想(すなわち、少ないクラス)で設計されている。説明のために、(図3Aにおいて矢印及び第1の網掛けパターンによって示される)L3キャッシュ132のサブセット132AはL2キャッシュ110のセット1にマッピングされ、(図3Aにおいて矢印及び第2の網掛けパターンによって示される)サブセット132BはL2キャッシュ110のセット3にマッピングされる。   FIG. 3A shows the L3 cache 132 in more detail. For illustration purposes, the L3 cache 132 is an 8-way set association, ie each set (line) is from class 0 to 7 (class 0, class 3 and class 7 are indicated by arrows). 8 classes are included. The L3 cache 132 is shown to have N sets (set 0 to N-1) of set 0, set 2 and set N-1 indicated by arrows. A particular cache line is mapped to a particular set of L3 caches 132 using a portion of the cache line address. The replacement logic 133 of the memory controller 130 determines to which class a particular cache line is placed. A particular cache line can be placed in one of eight classes each time a particular cache line is loaded into the cache 132. Several cache line locations for cache lines are shown in FIG. 3A and are referenced by sets and columns. For example, cache line location 132-00 is set 0, class 0 of L3 cache 132. Similarly, cache line location 132-03 is set 0, class 3 of L3 cache 132. Cache lines 132-07 and 132-23 are shown with similar naming conventions. The cache line of the L3 cache 132 must be mapped to the L2 cache 110 shown in FIG. 3B. The L2 cache 110 is smaller than the L3 cache 132 and is typically designed with fewer associations (ie fewer classes) than the L3 cache 132. For illustration purposes, subset 132A of L3 cache 132 (indicated by an arrow and a first shading pattern in FIG. 3A) is mapped to set 1 of L2 cache 110 (in FIG. 3A, an arrow and a second shading pattern). Subset 132B (indicated by) is mapped to set 3 of L2 cache 110.

このマッピングは単なる例示であり、上位レベル・キャッシュの特定のキャッシュ・ライン位置を下位レベル・キャッシュにマッピングする多くの方法が存在することが分かるであろう。例えば、図3Cは、マッピングの1つの例を示す。プロセッサ105が用いる32ビットのアドレスのようなアドレスは、キャッシュ・ラインのビットを識別するために用いられる部分を有する。キャッシュ・ラインが128バイトを含む場合には、図3Cにおける「キャッシュ・ライン内のバイト」という名称の部分は、7ビットを有することになる。「L2インデックス」という名称の部分は、キャッシュ・ラインがL2キャッシュ110のどのセットにマッピングされることになるかを決定するのに必要なだけのビットを含む。例えば、L2キャッシュ110が1024のセットを有する場合には、図3CにおけるL2インデックスは、10ビットを必要とする。「L2タグ」という名称の部分は、図5A−5Cを参照して説明されるように、L2キャッシュ・ディレクトリのタグ・フィールドに格納されなければならないアドレスのタグ部分である。L3キャッシュ132は、L2キャッシュ110より大きい、すなわち、より多くのキャッシュ・ラインを保持する。L2キャッシュ110内に保持されたキャッシュ・ラインは、L3キャッシュ132内に保持されたキャッシュ・ラインと同じバイト数であるので、アドレスの「キャッシュ・ライン内のバイト」部分は、L3キャッシュ132内のキャッシュ・ラインについてのアドレスの同じ部分である。図3Cに示される「L3インデックス」という名称のアドレス部分は、「L2インデックス」という名称のアドレス部分より多くのビットを有する。例えば、L3キャッシュ132が4096セットを有する場合には、図3Cに示されるL3インデックスは、12ビットを必要とする。図3に示されるアドレス部分「L3タグ」は、後述されるように、L3キャッシュ・ディレクトリ内のタグ・エントリに格納されなければならない。他のマッピング技術が、アドレスの部分の「ハッシュ値を計算する(hash)」。あらゆるマッピングが考慮される。   It will be appreciated that this mapping is exemplary only, and that there are many ways to map a particular cache line location in the higher level cache to the lower level cache. For example, FIG. 3C shows one example of mapping. An address, such as the 32-bit address used by processor 105, has a portion that is used to identify the cache line bits. If the cache line contains 128 bytes, the part labeled “Bytes in the cache line” in FIG. 3C will have 7 bits. The portion named “L2 index” contains as many bits as necessary to determine which set of L2 cache 110 the cache line will be mapped to. For example, if the L2 cache 110 has 1024 sets, the L2 index in FIG. 3C requires 10 bits. The portion named “L2 tag” is the tag portion of the address that must be stored in the tag field of the L2 cache directory, as described with reference to FIGS. 5A-5C. The L3 cache 132 is larger than the L2 cache 110, i.e. holds more cache lines. Since the cache line held in the L2 cache 110 has the same number of bytes as the cache line held in the L3 cache 132, the “bytes in the cache line” portion of the address is stored in the L3 cache 132. The same part of the address for the cache line. The address part named “L3 index” shown in FIG. 3C has more bits than the address part named “L2 index”. For example, if the L3 cache 132 has 4096 sets, the L3 index shown in FIG. 3C requires 12 bits. The address portion “L3 tag” shown in FIG. 3 must be stored in a tag entry in the L3 cache directory, as described below. Other mapping techniques “hash” the portion of the address. Any mapping is considered.

図3Bにおいて、L2キャッシュ110は、M個のセット(0〜M−1)を有するように示されており、L2キャッシュ110は、4ウェイ・セット連想である、すなわちクラス0からクラス3まで4つのクラスを有するように示されている。サブセット132A及び132Bは、上述のように示されている。キャッシュ・ライン位置110−00(L2キャッシュ110のセット0、クラス0)及びキャッシュ・ライン位置110−23(L2キャッシュ110のセット2、クラス3)は、L3キャッシュ132について上述されたセット/クラス命名規則を表すように示される。   In FIG. 3B, the L2 cache 110 is shown as having M sets (0 to M-1), and the L2 cache 110 is 4-way set associative, ie, class 0 to class 3 4 Shown to have two classes. Subsets 132A and 132B are shown as described above. Cache line location 110-00 (L2 cache 110 set 0, class 0) and cache line location 110-23 (L2 cache 110 set 2, class 3) are set / class naming as described above for L3 cache 132. Shown to represent rules.

図4A及び図4Bは、L3キャッシュ132及びL2キャッシュ110の特定のキャッシュ・ラインを示す。キャッシュ・ラインA、B、C、D、E、F、G、及びHは、図4Aに示されるように、L3キャッシュ132のセット0に格納されている。キャッシュ・ラインAは、(上記の命名規則を用いて)L2キャッシュ110の110−10に格納され、キャッシュ・ラインCは、L2キャッシュ110の110−12に格納され、キャッシュ・ラインFは、110−31に格納されている。図4A、図4Bの例においては、キャッシュ・ラインB、D、E、G、及びHは、L2キャッシュ110に存在しない。キャッシュ・ラインW、X、Q、R、及びSは、L2キャッシュ110内に保持され、セット1(W及びX)又はセット3(Q、R、及びS)にマッピングされているアドレスを有する位置(図示せず)においてL3キャッシュ132にも存在しなければならない。L2キャッシュ110に存在するすべてのキャッシュ・ラインがL3キャッシュ132にも存在することに留意されたい。しかしながら、L3キャッシュ132のすべてのキャッシュ・ラインがL2キャッシュ110に存在する必要はない。前述のように、第1のキャッシュ・ラインが変更されなかった場合には、L2キャッシュ110は、新たにフェッチされたキャッシュ・ラインで第1のキャッシュ・ラインを単純に上書きすることができる。L2キャッシュ110は、第1のキャッシュ・ラインが上書きされたことをL3キャッシュ132に通知しない。   4A and 4B show specific cache lines for L3 cache 132 and L2 cache 110. FIG. Cache lines A, B, C, D, E, F, G, and H are stored in set 0 of L3 cache 132, as shown in FIG. 4A. Cache line A is stored in 110-10 of L2 cache 110 (using the above naming convention), cache line C is stored in 110-12 of L2 cache 110, and cache line F is 110 -31. In the example of FIGS. 4A and 4B, the cache lines B, D, E, G, and H do not exist in the L2 cache 110. Cache lines W, X, Q, R, and S are locations in L2 cache 110 that have addresses mapped to set 1 (W and X) or set 3 (Q, R, and S) (Not shown) must also exist in the L3 cache 132. Note that all cache lines present in the L2 cache 110 also exist in the L3 cache 132. However, not all cache lines of L3 cache 132 need to be in L2 cache 110. As described above, if the first cache line has not changed, the L2 cache 110 can simply overwrite the first cache line with the newly fetched cache line. The L2 cache 110 does not notify the L3 cache 132 that the first cache line has been overwritten.

図3A、図3B、図4A、図4B、及び上記のその説明は、L3キャッシュ132及びL2キャッシュ110のキャッシュ・ラインの物理的位置に焦点を当てたものである。(図1においてキャッシュ・ディレクトリ111A及び111Bとして示される)キャッシュ・ディレクトリ111は、L2キャッシュ110に格納されたキャッシュ・ラインのアドレスと、L2キャッシュ110に格納されたキャッシュ・ラインの状態とを追跡するために用いられる。キャッシュ・ディレクトリ136(図1)は、L3キャッシュ132に格納されたキャッシュ・ラインのアドレスと、L3キャッシュ132に格納されたキャッシュ・ラインの状態とを追跡するために用いられる。   3A, FIG. 3B, FIG. 4A, FIG. 4B and its description above focus on the physical location of the cache lines of L3 cache 132 and L2 cache 110. FIG. The cache directory 111 (shown as cache directories 111A and 111B in FIG. 1) tracks the address of the cache line stored in the L2 cache 110 and the state of the cache line stored in the L2 cache 110. Used for. The cache directory 136 (FIG. 1) is used to track the address of the cache line stored in the L3 cache 132 and the state of the cache line stored in the L3 cache 132.

例示的なL2キャッシュ・ディレクトリ111が、図5Aに示される。L2キャッシュ・ディレクトリ111は、4つのエントリ列を有するキャッシュ・ディレクトリ・アレイ112を含み、エントリ列70の各々は、L2キャッシュ110のクラス(図3B)に対応する。L2キャッシュ・ディレクトリ・アレイ112は、M個の行113を有し、行113の各々は、L2キャッシュ110のM個のセットにおける1つのセット(図3B)に対応する。L2キャッシュ・ディレクトリ・エントリ76(1つのL2キャッシュ・ディレクトリ・エントリが、網掛け、符号「76」、及び矢印によって示される)が、行113とエントリ列70との交点の各々に格納される。L2キャッシュ・ディレクトリ・エントリは、L2キャッシュ110に格納されたキャッシュ・ラインごとにキャッシュ・ディレクトリ・アレイ112に格納される。L3キャッシュ・ディレクトリ136も同様に構成されることが分かるであろう。   An exemplary L2 cache directory 111 is shown in FIG. 5A. The L2 cache directory 111 includes a cache directory array 112 having four entry columns, and each of the entry columns 70 corresponds to a class of the L2 cache 110 (FIG. 3B). The L2 cache directory array 112 has M rows 113, each of which corresponds to one set in the M sets of L2 cache 110 (FIG. 3B). An L2 cache directory entry 76 (one L2 cache directory entry is indicated by shading, symbol “76”, and an arrow) is stored at each intersection of row 113 and entry column 70. An L2 cache directory entry is stored in the cache directory array 112 for each cache line stored in the L2 cache 110. It will be appreciated that the L3 cache directory 136 is similarly configured.

L2キャッシュ・ディレクトリ・エントリ76の各々は、状態フィールド73とタグ・フィールド72とを含む。状態フィールド73は、対応するキャッシュ・ラインに関する状態情報を保持する。多くのコンピュータ・システムにおいて、状態フィールドは、対応するキャッシュ・ラインが、(1)変更済み(modified)、(2)排他的(exclusive)、(3)共有(shared)、又は(4)無効(invalid)であることを意味する4つのビットを含む。このような状態情報は、MESI状態情報と呼ばれる。例示的な状態フィールド73が、図5Bに示される。しかしながら、本発明の実施形態について、図5Cにおいては、MESI状態情報を有するが「X」ビットも有する例示的な状態フィールド74が示される。状態フィールド74内の「X」ビットは、後述されるように、エビクション候補として識別されたキャッシュ・ラインのフラグを立てるのに用いられる。タグ・フィールド72は、キャッシュ・ラインのアドレスのタグ部分を保持する。キャッシュ・コヒーレンシを強化するために、MESI状態の多くの変化形が用いられており、本発明は、MESI又は他のいずれかのコヒーレンシ・プロトコルのいずれかの特定の実装形態に限定されないことを認識されたい。   Each L2 cache directory entry 76 includes a status field 73 and a tag field 72. The status field 73 holds status information regarding the corresponding cache line. In many computer systems, the status field indicates that the corresponding cache line is (1) modified, (2) exclusive, (3) shared, or (4) invalid ( 4 bits that mean invalid). Such state information is called MESI state information. An exemplary status field 73 is shown in FIG. 5B. However, for an embodiment of the present invention, in FIG. 5C, an exemplary status field 74 having MESI status information but also having an “X” bit is shown. The “X” bit in the status field 74 is used to flag a cache line identified as an eviction candidate, as described below. The tag field 72 holds the tag portion of the cache line address. Many variations of MESI state are used to enhance cache coherency, and it is recognized that the present invention is not limited to any particular implementation of MESI or any other coherency protocol. I want to be.

キャッシュ・ディレクトリ111は、そのアドレスを有するキャッシュ・ラインがL2キャッシュ・ディレクトリ111にあるかどうかを確かめるためにアドレス117によってL2キャッシュ・ディレクトリ111に送られるアドレスを保持するアドレス・レジスタ90をさらに含む。アドレス117によってL2キャッシュ・ディレクトリ111に送られるアドレスは、プロセッサ105から発生する場合も、メモリ・コントローラ130から発生する場合もある。最初のアドレス部分92は、L2キャッシュ・ディレクトリ・アレイ112のM個の行のうちの1つを選択するために用いられる。アドレス・レジスタ90のアドレスのタグ部分91は、信号93によって比較部80に送られる。タグ72は、信号81A、81B、81C、及び81DによってL2キャッシュ・ディレクトリ・アレイ112の選択された行から読み出され、アドレスのタグ部分と比較される。信号81A、81B、81C、及び81Dによって送られたタグの1つがアドレスのタグ部分と等しい場合には、キャッシュ・ヒットが信号82によって報告される。信号81A、81B、81C、及び81Dによって送られたタグのいずれもアドレスのタグ部分と等しくない場合には、キャッシュ・ミスが信号82によって報告される。ディレクトリごとの状態情報は、典型的には、タグ72と同時にL2キャッシュ・ディレクトリ・アレイ112から読み出される。   The cache directory 111 further includes an address register 90 that holds an address sent by the address 117 to the L2 cache directory 111 to see if the cache line with that address is in the L2 cache directory 111. The address sent to the L2 cache directory 111 by the address 117 may be generated from the processor 105 or the memory controller 130. The first address portion 92 is used to select one of the M rows of the L2 cache directory array 112. The tag portion 91 of the address of the address register 90 is sent to the comparison unit 80 by a signal 93. Tag 72 is read from the selected row of L2 cache directory array 112 by signals 81A, 81B, 81C, and 81D and compared to the tag portion of the address. A cache hit is reported by signal 82 if one of the tags sent by signals 81A, 81B, 81C, and 81D is equal to the tag portion of the address. A cache miss is reported by signal 82 if none of the tags sent by signals 81A, 81B, 81C, and 81D are equal to the tag portion of the address. State information for each directory is typically read from the L2 cache directory array 112 at the same time as the tag 72.

L3キャッシュ132、L3キャッシュ・ディレクトリ136、L2キャッシュ110、及びL2キャッシュ・ディレクトリ111の作用に関する上述の説明を念頭に置いて、図1に戻り、巡回スヌープ・シーケンサ134の動作を説明する。   With the above description regarding the operation of the L3 cache 132, L3 cache directory 136, L2 cache 110, and L2 cache directory 111 in mind, returning to FIG. 1, the operation of the cyclic snoop sequencer 134 will be described.

巡回スヌープ・シーケンサ134は、L3キャッシュ・ディレクトリ136及びプロセッサ・メモリ・バス115の各々(図1に示されるプロセッサ・メモリ・バス115A及び115B)に結合されている。巡回スヌープ・シーケンサ134は、ディレクトリ・インデックスを初期化して、L3キャッシュ・ディレクトリ136の第1の行をアドレス指定する。L3キャッシュ・ディレクトリ136は、L3キャッシュ・ディレクトリ136が用いられていないときに、そのインデックスで読み出される。L3キャッシュ・ディレクトリ136は、アクセスされたときに、図3AにおいてL3キャッシュ132内に示される8つのクラスに対応する8つのエントリを戻す。巡回スヌープ・シーケンサ134は、必要に応じて、L3キャッシュ132のキャッシュ・ラインのどれがL2キャッシュ110に存在しないかを判断するための処理を実行する。巡回スヌープ・シーケンサ134は、インデックスと共に、L3キャッシュ・ディレクトリのエントリごとに格納されるタグを用いて、巡回スヌープ・アドレスを生成する。巡回スヌープ・アドレスは、プロセッサ・メモリ・バス115がアイドル状態のときに、プロセッサ・メモリ・バス115によってL2キャッシュ・ディレクトリ111に送られる。L2キャッシュ・ディレクトリ111がアイドル状態のときに、L2キャッシュ・ディレクトリ111のスヌープ読み出しが行われる。L2キャッシュ・ディレクトリ111が、信号82によってL2キャッシュ・ミスを報告した場合には、巡回スヌープ・アドレスに対応するキャッシュ・ラインは、L2キャッシュ111に存在しない。信号82は、プロセッサ・メモリ・バス115のコマンド/ステータス116によって巡回スヌープ134に結合されている。巡回スヌープ・シーケンサ134は、状態フィールド74内のビット「X」をアサートすることによってL3キャッシュ・ディレクトリ136の対応するエントリを更新し、それによりそのキャッシュ・ラインをエビクション候補として識別する。L2キャッシュ・ディレクトリ111が、信号82によってL2キャッシュ・ヒットを報告した場合には、対応するキャッシュ・ラインは、L2キャッシュ111に依然として存在しており、巡回スヌープ・シーケンサ134は、そのキャッシュ・ラインをエビクション候補として識別するためにL3キャッシュ・ディレクトリ136の対応するエントリを更新することはない。巡回スヌープ・シーケンサ134は、L3キャッシュ・ディレクトリ136のインデックスが付けられた行のエントリごとにスヌープ読み出しを繰返し、次いで、インデックスの値を増加させて、L3キャッシュ・ディレクトリ136の次の行にアクセスする。L3キャッシュ・ディレクトリ136の最終行が完了したときに、インデックスは、第1の行に再度アクセスするためにリセットされる。本発明の実施形態においては、L3キャッシュ・ディレクトリがアイドル状態のときにのみ巡回スヌープ・シーケンサがL3キャッシュ・ディレクトリ136にアクセスし、プロセッサ・メモリ・バス115がアイドル状態のときにのみプロセッサ・メモリ・バス115によってスヌープ読み出しが送られ、L2キャッシュ・ディレクトリ111がアイドル状態のときにのみL2キャッシュ・ディレクトリ111へのアクセスが行われるため、エビクション候補を識別することについての性能上の不利益はない。   A cyclic snoop sequencer 134 is coupled to each of the L3 cache directory 136 and the processor memory bus 115 (processor memory bus 115A and 115B shown in FIG. 1). The cyclic snoop sequencer 134 initializes the directory index and addresses the first line of the L3 cache directory 136. The L3 cache directory 136 is read with its index when the L3 cache directory 136 is not used. When accessed, the L3 cache directory 136 returns eight entries corresponding to the eight classes shown in the L3 cache 132 in FIG. 3A. The cyclic snoop sequencer 134 executes processing for determining which of the cache lines of the L3 cache 132 does not exist in the L2 cache 110 as necessary. The cyclic snoop sequencer 134 generates a cyclic snoop address using a tag stored for each entry in the L3 cache directory along with the index. The cyclic snoop address is sent by the processor memory bus 115 to the L2 cache directory 111 when the processor memory bus 115 is idle. When the L2 cache directory 111 is idle, a snoop read of the L2 cache directory 111 is performed. If the L2 cache directory 111 reports an L2 cache miss by signal 82, the cache line corresponding to the cyclic snoop address does not exist in the L2 cache 111. Signal 82 is coupled to cyclic snoop 134 by command / status 116 of processor memory bus 115. Cyclic snoop sequencer 134 updates the corresponding entry in L3 cache directory 136 by asserting bit "X" in status field 74, thereby identifying the cache line as an eviction candidate. If L2 cache directory 111 reports an L2 cache hit by signal 82, the corresponding cache line still exists in L2 cache 111, and cyclic snoop sequencer 134 identifies the cache line. The corresponding entry in the L3 cache directory 136 is not updated to identify it as an eviction candidate. The cyclic snoop sequencer 134 repeats the snoop read for each indexed row entry in the L3 cache directory 136 and then increments the index value to access the next row in the L3 cache directory 136. . When the last line of the L3 cache directory 136 is complete, the index is reset to access the first line again. In an embodiment of the present invention, the cyclic snoop sequencer accesses the L3 cache directory 136 only when the L3 cache directory is idle and the processor memory memory only when the processor memory bus 115 is idle. There is no performance penalty for identifying eviction candidates because a snoop read is sent over the bus 115 and the L2 cache directory 111 is accessed only when the L2 cache directory 111 is idle. .

スヌープ読み出しによって、キャッシュ・ラインがL2キャッシュ110からエビクトされてはならない。L2キャッシュ110の多くのキャッシュ・ラインがプロセッサによって用いられているため、スヌープ読み出しによってキャッシュ・ラインがエビクトされた場合には、性能低下が生じる可能性がある。スヌープ読み出しによって望ましくないエビクションが生じないようにするために、プロセッサ105の置換論理109(図1)は、巡回スヌープ・シーケンサ134によってアサートされたスヌープ読み出しとしてコマンド/ステータス116上のコマンドを解釈し、スヌープ読み出しを認識し、スヌープ読み出しコマンドに応答して下位レベル・キャッシュのキャッシュ・ラインをエビクトしようとするあらゆる試みを抑制することによって、簡単にスヌープ読み出しを識別することができる。   The cache line must not be evicted from the L2 cache 110 by a snoop read. Since many cache lines of the L2 cache 110 are used by the processor, performance degradation may occur if the cache line is evicted by a snoop read. To prevent snooping reads from causing unwanted eviction, the replacement logic 109 (FIG. 1) of the processor 105 interprets the commands on the command / status 116 as snoop reads asserted by the cyclic snoop sequencer 134. The snoop read can be easily identified by recognizing the snoop read and suppressing any attempt to evict the cache line of the lower level cache in response to the snoop read command.

1つの実施形態においては、巡回スヌープ・シーケンサ134は、L3キャッシュ・ディレクトリ136の現在考慮されているエントリからの状態74の情報を用いて、現在考慮されているエントリについてスヌープ読み出しが行われるべきかどうかを判断する。現在のエントリに対応するキャッシュ・ラインが(例として、特定のMESI状態の実装形態を用いて)変更されたことを状態74が示す場合には、対応するキャッシュ・ラインがL2キャッシュ110に存在するため、スヌープ読み出しは行われない。現在のエントリに対応するキャッシュ・ラインが共有されていることを状態74が示す場合には、対応するキャッシュ・ラインがL2キャッシュ110に存在することも存在しないこともあるため、スヌープ読み出しが行われる。MESIを用いたキャッシュ・コヒーレンシの種々の実装形態は、異なった「排他的」状態を扱う。例えば、幾つかの実装形態は、1つのプロセッサのみがキャッシュ・ラインを有するが、そのキャッシュ・ラインを変更していない可能性があることを意味するものとして、「排他的」を定義する場合があり、別のプロセッサがキャッシュ・ラインを要求する場合には、「排他的」は「共有」に変更され、「共有」と同様に、このようなキャッシュ・ラインは、このような実装形態においては下位レベル・キャッシュに存在しない場合があり、スヌープ読み出しは、「排他的」状態を有するキャッシュ・エントリを含むものである。MESIの他の実装形態においては、「排他的」は、キャッシュ・ラインが用いられているためエビクション候補とすべきではないことを意味する場合がある。現在のエントリに対応するキャッシュ・ラインが無効であることを状態74が示す場合には、スヌープ読み出しは行われない。典型的には、無効の状態は、コンピュータ・システムの立ち上げの際にのみ生じる。キャッシュ・ラインが無効の場合には、置換論理133が対応するキャッシュ・ラインを置換し、キャッシュ・ラインが無効であることを状態フィールドが示すときは、スヌープ読み出しは不要である。   In one embodiment, the cyclic snoop sequencer 134 should use the state 74 information from the currently considered entry in the L3 cache directory 136 to perform a snoop read for the currently considered entry. Judge whether. If the state 74 indicates that the cache line corresponding to the current entry has changed (eg, using a specific MESI state implementation), the corresponding cache line is present in the L2 cache 110. Therefore, no snoop reading is performed. If state 74 indicates that the cache line corresponding to the current entry is shared, a snoop read is performed because the corresponding cache line may or may not exist in the L2 cache 110. . Various implementations of cache coherency using MESI handle different “exclusive” states. For example, some implementations may define "exclusive" as meaning that only one processor has a cache line but may not have changed that cache line. Yes, if another processor requests a cache line, “exclusive” is changed to “shared”, and like “shared”, such a cache line is It may not exist in the lower level cache, and a snoop read is one that includes a cache entry having an “exclusive” state. In other implementations of MESI, “exclusive” may mean that a cache line is used and should not be an eviction candidate. If state 74 indicates that the cache line corresponding to the current entry is invalid, no snoop read is performed. Typically, the invalid state occurs only at computer system startup. If the cache line is invalid, replacement logic 133 replaces the corresponding cache line, and if the status field indicates that the cache line is invalid, no snoop read is required.

エビクション候補としてマークされたキャッシュ・ラインが、エビクトされる前にプロセッサ105によってアクセスされた場合には、そのキャッシュ・ラインは、それがエビクション候補ではないように再びマークされる(すなわち、図5Cにおける状態74に示されるビット「X」がディアサートされる)ことが分かるであろう。   If a cache line marked as an eviction candidate is accessed by the processor 105 before being evicted, the cache line is marked again so that it is not an eviction candidate (ie, FIG. It will be seen that the bit “X” shown in state 74 at 5C is deasserted).

図1は、L3キャッシュ132が、L2キャッシュ110A、110Bをそれぞれ有する2つのプロセッサ105A、105Bをサポートすることを示す。1つの実施形態においては、メモリ・コントローラ130は、特定のキャッシュ・ラインがどのL2キャッシュ110に送られたかを追跡し、そのキャッシュ・ラインが送られたL2キャッシュ110にその特定のキャッシュ・ラインが存在するかどうかを判断することのみが必要である。第2の実施形態においては、メモリ・コントローラ130は、特定のキャッシュ・ラインがどのL2キャッシュ110に送られたかを追跡せず、特定のキャッシュ・ラインがどのL2キャッシュ110に存在するかを確かめるためにL2キャッシュ110の各々を常にチェックしなければならない。   FIG. 1 shows that the L3 cache 132 supports two processors 105A, 105B having L2 caches 110A, 110B, respectively. In one embodiment, the memory controller 130 keeps track of which L2 cache 110 a particular cache line was sent to and that L2 cache 110 to which that cache line was sent has that particular cache line. It is only necessary to determine whether it exists. In the second embodiment, the memory controller 130 does not keep track of which L2 cache 110 a particular cache line has been sent to, and in which L2 cache 110 a particular cache line exists. Each of the L2 caches 110 must always be checked.

上位レベル・キャッシュ及び下位レベル・キャッシュを示すために、L3及びL2キャッシュ・システムが用いられたが、本発明はL3及びL2レベル・キャッシュに限定されるものではないことが分かるであろう。例えば、L2キャッシュ110及びL2キャッシュ・ディレクトリ111に関連する巡回スヌープ・シーケンサは、プロセッサ105のレベル1キャッシュ(レベル1キャッシュは図示されていない)に対して同じ機能を行うことができる。   It will be appreciated that although L3 and L2 cache systems have been used to illustrate the upper and lower level caches, the present invention is not limited to L3 and L2 level caches. For example, the cyclic snoop sequencer associated with the L2 cache 110 and the L2 cache directory 111 can perform the same function for the level 1 cache of the processor 105 (level 1 cache is not shown).

本発明の実施形態は、方法として表現することもできる。図6は、方法300のフローチャートを示す。方法300は、ステップ302で開始する。ステップ304において、上位レベル・キャッシュ・ディレクトリの行のインデックスが、0に初期化される。ステップ306において、上位レベル・キャッシュ・ディレクトリが使用されているかどうかがチェックされる。上位レベル・キャッシュ・ディレクトリが使用されている場合には、制御は、単にステップ306に戻される。上位レベル・キャッシュ・ディレクトリが使用されていない場合には、制御はステップ308に移る。ステップ308において、上位レベル・キャッシュ・ディレクトリのエントリが読み出され、エントリのインデックス及びタグ情報を用いて巡回スヌープ・アドレスが生成される。典型的には、上位レベル・キャッシュ・ディレクトリの行の全エントリが、並行して読み出される。その場合には、巡回スヌープ・シーケンサは、並行して読み出されたエントリを格納し、次に行の各々のエントリを処理する。例えば、図5Aは、1行に4つのエントリを有するL2キャッシュ・ディレクトリ・アレイ112を示す。L3キャッシュ132は、8つのクラス(図3A)を有するように示されており、したがって、L3キャッシュ・ディレクトリ136は、1行に8つのエントリを有するL3キャッシュ・ディレクトリ・アレイを含む(L3キャッシュ・ディレクトリは示されていないが、L3キャッシュ・ディレクトリ136の設計は、L2キャッシュ・ディレクトリ111と同様に設計されるものとして記載されている)。   Embodiments of the invention can also be expressed as methods. FIG. 6 shows a flowchart of the method 300. Method 300 begins at step 302. In step 304, the index of the upper level cache directory row is initialized to zero. In step 306, it is checked whether the upper level cache directory is being used. If a higher level cache directory is being used, control is simply returned to step 306. If the upper level cache directory is not in use, control passes to step 308. In step 308, the entry in the upper level cache directory is read and a cyclic snoop address is generated using the entry's index and tag information. Typically, all entries in the upper level cache directory row are read in parallel. In that case, the cyclic snoop sequencer stores the entries read in parallel and then processes each entry in the row. For example, FIG. 5A shows an L2 cache directory array 112 having four entries per line. The L3 cache 132 is shown as having eight classes (FIG. 3A), so the L3 cache directory 136 includes an L3 cache directory array with eight entries per line (L3 cache directory). The directory is not shown, but the design of the L3 cache directory 136 is described as being designed similarly to the L2 cache directory 111).

ステップ310において、下位レベル・キャッシュ・ディレクトリが使用されていないときに、ステップ308において生成された巡回スヌープ・アドレスを用いて下位レベル・キャッシュ・ディレクトリのスヌープ読み出しが行われる。ステップ312において、スヌープ読み出しが、下位レベル・キャッシュにおけるキャッシュ・ヒットを報告しない場合には、エビクション候補として対応するキャッシュ・ラインのフラグを立てるようにエントリがマークされる。ステップ316は、最後のスヌープ読み出しに用いられたエントリが上位レベル・キャッシュ・ディレクトリ内の最後のエントリであるかどうかを判断する。最後のエントリでない場合には、ステップ318においてインデックスの値が進められ、制御がステップ306に移る。最後のエントリである場合には、ステップ320においてインデックスの値が0にリセットされ、制御がステップ306に移る。   In step 310, when the lower level cache directory is not in use, the lower level cache directory is snoop read using the cyclic snoop address generated in step 308. In step 312, if the snoop read does not report a cache hit in the lower level cache, the entry is marked to flag the corresponding cache line as an eviction candidate. Step 316 determines whether the entry used for the last snoop read is the last entry in the upper level cache directory. If it is not the last entry, the index value is advanced in step 318 and control passes to step 306. If it is the last entry, the index value is reset to 0 in step 320 and control passes to step 306.

図7に示される方法350は、方法300(図6)と同様であるが、MESI状態規則を用いる例示的なキャッシュ設計についてより多くの細部を含む。   The method 350 shown in FIG. 7 is similar to the method 300 (FIG. 6), but includes more details about an exemplary cache design using MESI state rules.

方法350は、ステップ352で開始する。ステップ354は、上位レベル・キャッシュ・ディレクトリの特定の行に対応するインデックスを初期化する。ステップ356は、上位レベル・キャッシュ・ディレクトリが使用されているかどうかをチェックする。使用されている場合には、ステップ356は、分岐して単にステップ356に戻り、上位レベル・キャッシュ・ディレクトリが使用されていない時間を待つ。   Method 350 begins at step 352. Step 354 initializes an index corresponding to a particular row in the upper level cache directory. Step 356 checks whether the upper level cache directory is being used. If so, step 356 branches and simply returns to step 356 to wait for a time when the upper level cache directory is not in use.

ステップ356が、上位レベル・キャッシュ・ディレクトリが使用されていないと判断すると、制御はステップ381に移る。ステップ381は、上位レベル・キャッシュ・ディレクトリ・アレイの1つ又は複数のエントリに関する状態情報について、上位レベル・キャッシュ・ディレクトリを読み出す。前の場合と同様に、キャッシュ・ディレクトリは、典型的には、インデックスによってアクセスされた特定の行についての全ディレクトリ情報を読み出す。ステップ381は、制御をステップ382に移す。ステップ382は、ステップ381におけるどのエントリ読み出しが無効状態を有するかをチェックする。無効状態は、希であり、一般には、コンピュータ・システムの立ち上げの際に現れるのみである。エントリについての無効状態は、対応するキャッシュ・ラインが、プロセッサ105によって必要とされるものを含まず、上書きされる可能性があり、スヌープ読み出しが行われる必要がないことを意味する。ステップ381において読み出されたキャッシュ・エントリが無効である場合には、ステップ382は、制御をステップ366に移す。ステップ381において読み出されたエントリが無効でない場合には、ステップ382は、制御をステップ384に移す。ステップ384は、いずれかの状態が共有であるかどうかをチェックする。共有でない場合には、対応するキャッシュ・ラインは下位レベル・キャッシュにおいて用いられており、対応する上位レベル・キャッシュ・ラインはエビクション候補としてマークされず、制御はステップ366に移る。エントリが共有状態を有する場合には、ステップ384は、ステップ381において読み出されたディレクトリ・エントリからのインデックス及びタグ情報を用いてアドレスを生成するステップ358に制御を移す。ステップ360は、プロセッサ・メモリ・バス115が未使用であるとき、及び、下位レベル・キャッシュ・ディレクトリが未使用であるときに、下位レベル・キャッシュのスヌープ読み出しを行う。スヌープ応答がヒットである場合には、対応するキャッシュ・ラインは、下位レベル・キャッシュに存在し、エビクション候補ではない。スヌープ応答がヒットではない(すなわち、ミスである)場合には、制御はステップ364に移り、スヌープ読み出しを生成するのに用いられたディレクトリ・エントリに状態情報を設定することによって、エビクション候補としてキャッシュ・ラインにフラグを立てる。前述のように、エントリの状態ビット「X」を用いて、エビクション候補としてキャッシュ・ラインにフラグを立てることができる。次に、ステップ364は制御をステップ386に移し、ステップ381において読み出された共有状態を有するエントリの現在の行にさらにエントリが存在するかどうかをチェックする。存在する場合には制御はステップ358に移り、存在しない場合には制御はステップ366に移る。   If step 356 determines that the upper level cache directory is not in use, control passes to step 381. Step 381 reads the upper level cache directory for status information regarding one or more entries of the upper level cache directory array. As before, the cache directory typically reads all directory information for a particular row accessed by the index. Step 381 transfers control to step 382. Step 382 checks which entry read in step 381 has an invalid state. Invalid states are rare and generally only appear at computer system startup. An invalid state for an entry means that the corresponding cache line does not contain what is needed by the processor 105 and may be overwritten and no snoop read need be performed. If the cache entry read in step 381 is invalid, step 382 transfers control to step 366. If the entry read in step 381 is not invalid, step 382 transfers control to step 384. Step 384 checks whether any state is shared. If not, the corresponding cache line is used in the lower level cache, the corresponding higher level cache line is not marked as an eviction candidate, and control passes to step 366. If the entry has a shared state, step 384 transfers control to step 358 which generates an address using the index and tag information from the directory entry read in step 381. Step 360 performs a snoop read of the lower level cache when the processor memory bus 115 is unused and when the lower level cache directory is unused. If the snoop response is a hit, the corresponding cache line is in the lower level cache and is not an eviction candidate. If the snoop response is not a hit (ie, a miss), control passes to step 364 as an eviction candidate by setting status information in the directory entry used to generate the snoop read. Flag the cache line. As mentioned above, the cache line can be flagged as an eviction candidate using the status bit “X” of the entry. Next, step 364 transfers control to step 386 to check whether there are more entries in the current row of the entry having the shared state read in step 381. If so, control passes to step 358, otherwise control passes to step 366.

ステップ366は、上位レベル・キャッシュ・ディレクトリの全エントリが考慮されたかどうかをチェックする、すなわち、インデックスは、上位レベル・キャッシュ・ディレクトリ・アレイの行数を超えて扱うことになる。全エントリが考慮されていない場合には、ステップ368においてインデックスの値が増加され、全エントリが考慮された場合には、ステップ370においてインデックスが0に再初期化される。ステップ368及び370は、制御をステップ356に戻し、上位レベル・キャッシュ・ディレクトリの未使用時間を利用してエントリを読み出し、共有状態を有するエントリを見つけ出し、リソース(上位レベル・キャッシュ・ディレクトリ、メモリ・プロセッサ・バス、及び下位レベル・キャッシュ・ディレクトリ)がアイドル状態であるときに、スヌープ読み出し要求を下位レベル・キャッシュ・ディレクトリに送り、共有キャッシュ・ラインが下位レベル・キャッシュに存在するかどうかを下位レベル・キャッシュ・ディレクトリからのヒット又はミス応答によって判断する方法が、続けられる。共有キャッシュ・ラインが下位レベル・キャッシュに存在しない場合には、上位レベル・キャッシュのキャッシュ・ラインが、エビクション候補としてマークされる。   Step 366 checks whether all entries in the upper level cache directory have been considered, i.e. the index will handle more than the number of rows in the upper level cache directory array. If all entries are not considered, the value of the index is increased in step 368, and if all entries are considered, the index is reinitialized to 0 in step 370. Steps 368 and 370 return control to step 356 to read the entry using the unused time of the higher level cache directory, find the entry that has the shared state, and to determine the resource (upper level cache directory, memory. When the processor bus and lower level cache directory) are idle, it sends a snoop read request to the lower level cache directory and determines whether a shared cache line exists in the lower level cache. The method of judging by hit or miss responses from the cache directory is continued. If the shared cache line does not exist in the lower level cache, the cache line of the upper level cache is marked as an eviction candidate.

図8に示される方法400は、方法及び装置として前述された本発明のスヌープ読み出しの実施形態によって識別されるエビクション候補によって、例えばLRU置換アルゴリズム及び擬似ランダム置換アルゴリズムであるがこれらに限定されない既知の置換アルゴリズムの置換選択がどのように改善されるかを示す。   The method 400 shown in FIG. 8 is a known, eg, but not limited to, LRU replacement algorithm and pseudo-random replacement algorithm, with eviction candidates identified by the snoop readout embodiment of the present invention described above as a method and apparatus. We show how the replacement selection of the replacement algorithm is improved.

方法400は、ステップ402で開始する。ステップ404において、上位レベル・キャッシュが、上位レベル・キャッシュのキャッシュ・ラインのエビクションを要求する、新しいキャッシュ・ラインのデータについての要求を受け取る。ステップ406において、上位レベル・キャッシュは、新しいキャッシュ・ラインが配置されるクラスについての状態及びタグ情報を含むエントリを含む、キャッシュ・ディレクトリ・アレイの行を決定する。ステップ408において、ステップ406において決定された行が、キャッシュ・ディレクトリ・アレイから読み出される。   Method 400 begins at step 402. In step 404, the upper level cache receives a request for new cache line data requesting eviction of the cache line of the upper level cache. In step 406, the upper level cache determines the cache directory array row that contains an entry containing the status and tag information for the class in which the new cache line is located. In step 408, the line determined in step 406 is read from the cache directory array.

ステップ410において、要求されたキャッシュ・ラインが上位レベル・キャッシュに存在するかどうかがチェックされる。存在する場合には、ステップ412において、要求されたキャッシュ・ラインがエビクション候補としてマークされているかどうかがチェックされる。要求されたキャッシュ・ラインがエビクション候補としてマークされている場合には、制御は、要求されたキャッシュ・ラインをエビクション候補からマーク解除するステップ414に移る。ステップ414は、制御をステップ416に移す。要求されたキャッシュ・ラインがエビクション候補としてマークされていないとステップ412が判断した場合には、制御はステップ416に移る。ステップ416は、要求されたキャッシュ・ラインを下位レベル・キャッシュにコピーする。制御は、ステップ416からステップ426に移り、方法は終了する。要求されたキャッシュ・ラインが上位レベル・キャッシュに存在しないとステップ410が判断した場合には、制御はステップ420に移る。   In step 410, it is checked whether the requested cache line exists in the higher level cache. If so, in step 412, it is checked whether the requested cache line is marked as an eviction candidate. If the requested cache line is marked as an eviction candidate, control passes to step 414 which unmarks the requested cache line from the eviction candidate. Step 414 transfers control to step 416. If step 412 determines that the requested cache line is not marked as an eviction candidate, control passes to step 416. Step 416 copies the requested cache line to the lower level cache. Control transfers from step 416 to step 426 and the method ends. If step 410 determines that the requested cache line does not exist in the higher level cache, control passes to step 420.

ステップ420において、ステップ408において読み出された行のいずれかのエントリが無効状態を有する場合には、制御はステップ421に移り、要求されたキャッシュ・ラインは、ステップ420による無効状態エントリに対応する上位レベル・キャッシュのクラスに書き込まれ、これにより無効キャッシュ・ラインをエビクトする(実際には上書きする)。次に、ステップ421は制御をステップ426に移し、プロセス400は終了する。エントリが無効キャッシュ・ラインを示す状態を有していないことをステップ420が検出した場合には、制御はステップ422に移る。   In step 420, if any entry on the line read in step 408 has an invalid state, control passes to step 421 and the requested cache line corresponds to the invalid state entry from step 420. It is written to the upper level cache class, which evicts (actually overwrites) the invalid cache line. Step 421 then transfers control to step 426 and process 400 ends. If step 420 detects that the entry does not have a state indicating an invalid cache line, control passes to step 422.

ステップ422において、ステップ408において読み出された上位レベル・キャッシュ・ディレクトリ・アレイにおける行のエントリの状態をチェックして、いずれかのエントリがエビクション候補としてマークされているかどうかを確かめる。このステップは、第1のエビクション候補が発見されるまで、各々のエントリを順番に調べるのみである。エビクション候補が発見された場合には、制御はステップ423に移り、要求されたキャッシュ・ラインが、エビクション候補であることが判明したキャッシュ・ラインに書き込まれる。ステップ423は制御をステップ426に移し、プロセスが終了する。ステップ422が、エビクション候補としてマークされたエントリを発見しない場合には、制御はステップ424に移る。ステップ424は、LRUアルゴリズム又は擬似ランダム置換アルゴリズムといった、多くの既知の置換アルゴリズムのいずれかを実行する。   In step 422, the state of the row entry in the upper level cache directory array read in step 408 is checked to see if any entry is marked as an eviction candidate. This step only examines each entry in turn until a first eviction candidate is found. If an eviction candidate is found, control passes to step 423 and the requested cache line is written to a cache line that is found to be an eviction candidate. Step 423 transfers control to step 426 and the process ends. If step 422 does not find an entry marked as an eviction candidate, control passes to step 424. Step 424 performs any of a number of known replacement algorithms, such as an LRU algorithm or a pseudo-random replacement algorithm.

1つ又は複数のプロセッサとメモリ・コントローラとメモリとを含むコンピュータ・システムのブロック図である。1 is a block diagram of a computer system that includes one or more processors, a memory controller, and memory. 図1に示されるプロセッサ・メモリ・バスをさらに詳細に示す。Figure 2 shows the processor memory bus shown in Figure 1 in more detail. (A)上位レベル・キャッシュのブロック図を示す。(B)下位レベル・キャッシュのブロック図を示す。(C)L2及びL3タグ部分と、L2及びL3インデックス部分と、キャッシュ・ライン内のバイトを決定するのに用いられる部分とを有する例示的なアドレスを示す。(A) A block diagram of a higher level cache is shown. (B) A block diagram of the lower level cache is shown. (C) shows exemplary addresses having L2 and L3 tag portions, L2 and L3 index portions, and portions used to determine bytes within a cache line. (A)セットに格納された例示的なキャッシュ・ラインを有する上位レベル・キャッシュを示す。(B)セットに格納された例示的なキャッシュ・ラインを有する下位レベル・キャッシュを示す。(A) A high level cache with exemplary cache lines stored in a set. (B) A lower level cache with exemplary cache lines stored in a set. (A)例示的なキャッシュ・ディレクトリを示す。(B)キャッシュ・ディレクトリのエントリの例示的な状態フィールドを示す。(C)エビクション候補を示すビットを有する、キャッシュ・ディレクトリのエントリの例示的な状態フィールドを示す。(A) shows an exemplary cache directory. (B) shows an exemplary status field of a cache directory entry. (C) An exemplary status field of a cache directory entry having bits indicating eviction candidates. 上位レベル・キャッシュにおけるエビクション候補を決定するための第1の方法のフローチャートである。3 is a flowchart of a first method for determining eviction candidates in a higher level cache. 上位レベル・キャッシュにおけるエビクション候補を決定するための第2の方法のフローチャートである。FIG. 6 is a flowchart of a second method for determining eviction candidates in a higher level cache. エビクション候補情報を用いてキャッシュ置換アルゴリズムを補う方法のフローチャートである。It is a flowchart of the method of supplementing a cache replacement algorithm using eviction candidate information.

Claims (5)

それぞれがディレクトリを有する上位レベル・キャッシュ及び下位レベル・キャッシュを含むコンピュータ・システムにおけるキャッシュ・ライン置換のための方法であって、
下位レベル・キャッシュに存在しない上位レベル・キャッシュのキャッシュ・ラインを識別するために
上位レベル・キャッシュ・ディレクトリがアイドル状態である第1の時間を決定するステップと、
前記第1の時間中に、前記上位レベル・キャッシュ・ディレクトリからキャッシュ・エントリを読み出すステップと、
前記上位レベル・キャッシュ・ディレクトリから読み出したキャッシュ・エントリのタグ・フィールドを用いて、前記上位レベル・キャッシュの対応するキャッシュ・ラインのアドレスを生成するステップと、
下位レベル・キャッシュ・ディレクトリがアイドル状態である第2の時間を決定するステップと、
前記第2の時間中に、前記上位レベル・キャッシュの前記キャッシュ・ラインの前記アドレスを用いて前記下位レベル・キャッシュ・ディレクトリのスヌープ読み出しを行うステップと、
前記スヌープ読み出しの結果がキャッシュ・ヒットでなかった場合に、前記キャッシュ・ラインをエビクション候補として識別するステップと、
前記上位レベル・キャッシュ・ディレクトリの後続のキャッシュ・エントリについて、前記第1の時間を決定するステップ、前記読み出すステップ、前記生成するステップ、前記第2の時間を決定するステップ、前記スヌープ読み出しを行うステップ、及び前記識別するステップを繰り返すステップと、
を含むことを特徴とする方法。
A method for cache line replacement in a computer system that includes an upper level cache and a lower level cache, each having a directory, comprising :
To identify cache lines for higher level caches that do not exist in the lower level cache,
Determining a first time that the upper level cache directory is idle;
Reading a cache entry from the upper level cache directory during the first time; and
Using the tag field of the cache entry read from the upper level cache directory to generate the address of the corresponding cache line of the upper level cache;
Determining a second time that the lower level cache directory is idle;
During the second time, and performing a snoop read of the lower level cache directory using the address of the cache line in the higher level cache,
Identifying the cache line as an eviction candidate if the result of the snoop read was not a cache hit ;
Determining the first time, the reading step, the generating step, the second time determining step, and the snoop reading step for subsequent cache entries in the upper level cache directory. And repeating the identifying step ;
A method comprising the steps of:
前記上位レベル・キャッシュ・ディレクトリからの前記キャッシュ・エントリの状態情報を読み出し、前記状態情報が、対応するキャッシュ・ラインが無効であること又は変更されたことを示す場合には、前記下位レベル・キャッシュ・ディレクトリのスヌープ読み出しを行うことなく、前記上位レベル・キャッシュ・ディレクトリから次のキャッシュ・エントリを読み出す、請求項1に記載の方法。 Read the state information of the cache entry from the upper level cache directory and if the state information indicates that the corresponding cache line is invalid or changed, the lower level cache The method of claim 1 , wherein the next cache entry is read from the upper level cache directory without performing a snoop read of the directory . 前記上位レベル・キャッシュによるデータについての要求を受け取り、
前記データを含む特定のキャッシュ・ラインが前記上位レベル・キャッシュに存在するかどうかをチェックし、
前記特定のキャッシュ・ラインが前記上位レベル・キャッシュに存在する場合に、前記特定のキャッシュ・ラインが前記下位レベル・キャッシュに存在しないものとして識別されていた場合には、前記下位レベル・キャッシュに存在しないものとした前記キャッシュ・ラインの識別を解除することを実行するステップ
をさらに含む、請求項1又は2に記載の方法。
Receiving a request for data from the upper level cache;
Check whether a particular cache line containing the data exists in the higher level cache;
If the specific cache line is present in the upper level cache and the specific cache line is identified as not present in the lower level cache, it is present in the lower level cache. The method according to claim 1 or 2 , further comprising the step of: de-identifying the cache line that was not to be identified .
前記上位レベル・キャッシュによるデータについての要求を受け取り、
前記データを含む特定のキャッシュ・ラインが前記上位レベル・キャッシュに存在するかどうかをチェックし、
前記特定のキャッシュ・ラインが前記上位レベル・キャッシュに存在しない場合に、前記上位レベルキャッシュの無効なキャッシュ・ライン又はエビクション候補として識別されているキャッシュ・ラインをエビクトするステップ
をさらに含む、請求項3に記載の方法。
Receiving a request for data from the upper level cache;
Check whether a particular cache line containing the data exists in the higher level cache;
Evicting a cache line that is identified as an invalid cache line or eviction candidate for the higher level cache if the specific cache line is not present in the higher level cache; 4. The method of claim 3, comprising.
上位レベル・キャッシュと、A high-level cache;
巡回スヌープ・シーケンサと、Patrol snoop sequencer,
を含むメモリ・コントローラを備えたコンピュータ・システムであって、A computer system comprising a memory controller comprising:
前記メモリ・コントローラに結合された下位レベル・キャッシュと、A lower level cache coupled to the memory controller;
前記メモリ・コントローラ内に、前記下位レベル・キャッシュに存在する第2のキャッシュ・ラインの代わりに、前記下位レベル・キャッシュに存在しないものとして識別された第1のキャッシュ・ラインをエビクトするように構成された論理とEvicting a first cache line identified as not present in the lower level cache in the memory controller instead of a second cache line present in the lower level cache Logic and
をさらに備え、Further comprising
前記メモリ・コントローラは、前記巡回スヌープ・シーケンサに結合され、前記上位レベル・キャッシュのキャッシュ・ラインごとのエントリを保持する、上位レベル・キャッシュ・ディレクトリをさらに備え、The memory controller further comprises an upper level cache directory coupled to the cyclic snoop sequencer and holding an entry for each cache line of the upper level cache;
前記エントリの各々は、前記上位レベル・キャッシュのキャッシュ・ラインごとの状態フィールド及びタグ・フィールドを含み、Each of the entries includes a status field and a tag field for each cache line of the upper level cache;
前記上位レベル・キャッシュのキャッシュ・ラインごとの前記エントリは、前記上位レベル・キャッシュの特定のキャッシュ・ラインが前記下位レベル・キャッシュに存在しないかどうかに関する情報を保持する識別フィールドをさらに含み、The entry for each cache line of the upper level cache further includes an identification field that holds information regarding whether a particular cache line of the upper level cache is not present in the lower level cache;
前記巡回スヌープ・シーケンサは、前記下位レベル・キャッシュに存在しない前記上位レベル・キャッシュのキャッシュ・ラインを識別することができるように構成され、The cyclic snoop sequencer is configured to identify cache lines of the higher level cache that are not present in the lower level cache;
前記巡回スヌープ・シーケンサは、The traveling snoop sequencer is
前記上位レベル・キャッシュ・ディレクトリがアイドル状態であるときに、前記上位レベル・キャッシュ・ディレクトリからキャッシュ・エントリを読み出し、Reading the cache entry from the upper level cache directory when the upper level cache directory is idle;
前記キャッシュ・エントリのタグ・フィールドを用いて、前記上位レベル・キャッシュの対応するキャッシュ・ラインのアドレスを生成し、Using the tag field of the cache entry to generate the address of the corresponding cache line of the upper level cache;
下位レベル・キャッシュ・ディレクトリがアイドル状態であるときに、前記下位レベル・キャッシュ・ディレクトリのスヌープ読み出しを行い、When the lower level cache directory is idle, perform a snoop read of the lower level cache directory;
前記スヌープ読み出しの結果がキャッシュ・ヒットでなかった場合に、前記キャッシュ・ラインをエビクション候補として識別する情報を前記識別フィールドに書き込み、If the result of the snoop read is not a cache hit, write information identifying the cache line as an eviction candidate in the identification field;
前記上位レベル・キャッシュ・ディレクトリの後続のキャッシュ・エントリについて、前記のキャッシュ・エントリの読み出し、アドレスの生成、スヌープ読み出し、及び識別フィールドの書き込みを繰り返す、Repeating the cache entry read, address generation, snoop read, and identification field write for subsequent cache entries in the upper level cache directory;
ように構成された、Configured as
コンピュータ・システム。Computer system.
JP2008550761A 2006-01-19 2007-01-18 Cyclic snoop to identify eviction candidates for higher level cache Expired - Fee Related JP4563486B2 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/335,765 US7577793B2 (en) 2006-01-19 2006-01-19 Patrol snooping for higher level cache eviction candidate identification
PCT/EP2007/050503 WO2007082917A2 (en) 2006-01-19 2007-01-18 Patrol snooping for higher level cache eviction candidate identification

Publications (3)

Publication Number Publication Date
JP2009524137A JP2009524137A (en) 2009-06-25
JP2009524137A5 JP2009524137A5 (en) 2010-04-02
JP4563486B2 true JP4563486B2 (en) 2010-10-13

Family

ID=37955186

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008550761A Expired - Fee Related JP4563486B2 (en) 2006-01-19 2007-01-18 Cyclic snoop to identify eviction candidates for higher level cache

Country Status (8)

Country Link
US (1) US7577793B2 (en)
EP (1) EP1977322B1 (en)
JP (1) JP4563486B2 (en)
CN (1) CN101361049B (en)
AT (1) ATE467182T1 (en)
DE (1) DE602007006277D1 (en)
TW (1) TWI417723B (en)
WO (1) WO2007082917A2 (en)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7624234B2 (en) * 2006-08-31 2009-11-24 Hewlett-Packard Development Company, L.P. Directory caches, and methods for operation thereof
JP4920378B2 (en) * 2006-11-17 2012-04-18 株式会社東芝 Information processing apparatus and data search method
US7457920B1 (en) * 2008-01-26 2008-11-25 International Business Machines Corporation Method and system for cache eviction
US8271735B2 (en) * 2009-01-13 2012-09-18 Oracle America, Inc. Cache-coherency protocol with held state
JP2011028736A (en) * 2009-07-02 2011-02-10 Fujitsu Ltd Cache memory device, arithmetic processing unit, and control method for the cache memory device
US8566531B2 (en) * 2009-08-21 2013-10-22 Google Inc. System and method of selectively caching information based on the interarrival time of requests for the same information
AU2010201718B2 (en) * 2010-04-29 2012-08-23 Canon Kabushiki Kaisha Method, system and apparatus for identifying a cache line
US8769209B2 (en) * 2010-12-20 2014-07-01 Intel Corporation Method and apparatus for achieving non-inclusive cache performance with inclusive caches
US9804971B2 (en) * 2012-01-17 2017-10-31 International Business Machines Corporation Cache management of track removal in a cache for storage
WO2016055828A1 (en) * 2014-10-08 2016-04-14 Via Alliance Semiconductor Co., Ltd. Cache system with primary cache and overflow fifo cache
JP6708019B2 (en) 2016-06-29 2020-06-10 富士通株式会社 Arithmetic processing apparatus, information processing apparatus, and method for controlling arithmetic processing apparatus
WO2018161272A1 (en) * 2017-03-08 2018-09-13 华为技术有限公司 Cache replacement method, device, and system
US20190012259A1 (en) * 2017-07-06 2019-01-10 Futurewei Technologies, Inc. Lba eviction in pcm media
US10915461B2 (en) * 2019-03-05 2021-02-09 International Business Machines Corporation Multilevel cache eviction management
US10997074B2 (en) 2019-04-30 2021-05-04 Hewlett Packard Enterprise Development Lp Management of coherency directory cache entry ejection

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5373927A (en) * 1976-11-10 1978-06-30 Fujitsu Ltd Replacing system of intermediate buffer memory
JPH01199251A (en) * 1988-02-04 1989-08-10 Fujitsu Ltd Access control system for cache memory
JPH02188847A (en) * 1989-01-18 1990-07-24 Agency Of Ind Science & Technol Data exchange system for hierarchical cache memory
JPH05216765A (en) * 1992-02-06 1993-08-27 Hitachi Ltd Hierarchical buffer storage device
US5530832A (en) * 1993-10-14 1996-06-25 International Business Machines Corporation System and method for practicing essential inclusion in a multiprocessor and cache hierarchy
US5850534A (en) * 1995-06-05 1998-12-15 Advanced Micro Devices, Inc. Method and apparatus for reducing cache snooping overhead in a multilevel cache system
US5829038A (en) * 1996-06-20 1998-10-27 Intel Corporation Backward inquiry to lower level caches prior to the eviction of a modified line from a higher level cache in a microprocessor hierarchical cache structure
JPH10105463A (en) * 1996-09-27 1998-04-24 Mitsubishi Electric Corp Cache system and replacement judgement method
JPH11102320A (en) * 1997-09-29 1999-04-13 Mitsubishi Electric Corp Cache system
US6023747A (en) * 1997-12-17 2000-02-08 International Business Machines Corporation Method and system for handling conflicts between cache operation requests in a data processing system
US6343344B1 (en) * 1999-08-04 2002-01-29 International Business Machines Corporation System bus directory snooping mechanism for read/castout (RCO) address transaction
US6901450B1 (en) * 2000-09-22 2005-05-31 Hitachi, Ltd. Multiprocessor machine and cache control method for providing higher priority to shared cache that is accessed by multiprocessors
US6725337B1 (en) * 2001-05-16 2004-04-20 Advanced Micro Devices, Inc. Method and system for speculatively invalidating lines in a cache
US7024545B1 (en) * 2001-07-24 2006-04-04 Advanced Micro Devices, Inc. Hybrid branch prediction device with two levels of branch prediction cache
TWI246658B (en) * 2003-04-25 2006-01-01 Ip First Llc Microprocessor, apparatus and method for selectively associating store buffer cache line status with response buffer cache line status
US7143246B2 (en) * 2004-01-16 2006-11-28 International Business Machines Corporation Method for supporting improved burst transfers on a coherent bus
US20070186045A1 (en) * 2004-07-23 2007-08-09 Shannon Christopher J Cache eviction technique for inclusive cache systems
US20060212654A1 (en) * 2005-03-18 2006-09-21 Vinod Balakrishnan Method and apparatus for intelligent instruction caching using application characteristics
US20070073974A1 (en) * 2005-09-29 2007-03-29 International Business Machines Corporation Eviction algorithm for inclusive lower level cache based upon state of higher level cache

Also Published As

Publication number Publication date
WO2007082917A2 (en) 2007-07-26
ATE467182T1 (en) 2010-05-15
JP2009524137A (en) 2009-06-25
EP1977322A2 (en) 2008-10-08
WO2007082917A3 (en) 2007-10-04
EP1977322B1 (en) 2010-05-05
DE602007006277D1 (en) 2010-06-17
TWI417723B (en) 2013-12-01
TW200805061A (en) 2008-01-16
US7577793B2 (en) 2009-08-18
CN101361049A (en) 2009-02-04
US20070168617A1 (en) 2007-07-19
CN101361049B (en) 2011-12-28

Similar Documents

Publication Publication Date Title
JP4563486B2 (en) Cyclic snoop to identify eviction candidates for higher level cache
EP0780769B1 (en) Hybrid numa coma caching system and methods for selecting between the caching modes
US7698508B2 (en) System and method for reducing unnecessary cache operations
JP4486750B2 (en) Shared cache structure for temporary and non-temporary instructions
US6339813B1 (en) Memory system for permitting simultaneous processor access to a cache line and sub-cache line sectors fill and writeback to a system memory
US6826651B2 (en) State-based allocation and replacement for improved hit ratio in directory caches
US7266647B2 (en) List based method and apparatus for selective and rapid cache flushes
JP4447580B2 (en) Partitioned sparse directory for distributed shared memory multiprocessor systems
US5787478A (en) Method and system for implementing a cache coherency mechanism for utilization within a non-inclusive cache memory hierarchy
US6321297B1 (en) Avoiding tag compares during writes in multi-level cache hierarchy
CN109582214B (en) Data access method and computer system
US6782453B2 (en) Storing data in memory
JP6630449B2 (en) Replace cache entries based on entry availability in other caches
US20110320720A1 (en) Cache Line Replacement In A Symmetric Multiprocessing Computer
US20180113815A1 (en) Cache entry replacement based on penalty of memory access
US7117312B1 (en) Mechanism and method employing a plurality of hash functions for cache snoop filtering
US20020078304A1 (en) System and method for allocating a directory entry for use in multiprocessor-node data processing systems
US7325102B1 (en) Mechanism and method for cache snoop filtering
WO1996039665A1 (en) Method and apparatus for reducing cache snooping overhead in a multilevel cache system
JP4068185B2 (en) Effective selection of memory storage mode in computer systems
US6715040B2 (en) Performance improvement of a write instruction of a non-inclusive hierarchical cache memory unit
US20220066940A1 (en) Limited propagation of unnecessary memory updates
US7103721B2 (en) Cache allocation mechanism for biasing subsequent allocations based upon cache directory state
US7143239B2 (en) Cache structure and methodology
CN116431529B (en) Alias processing system, method and related equipment based on L1D-L2 cache

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090313

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20091026

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100208

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20100208

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20100215

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100223

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100524

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100728

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

Free format text: PAYMENT UNTIL: 20130806

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees