JP2008310414A - Computer system - Google Patents
Computer system Download PDFInfo
- Publication number
- JP2008310414A JP2008310414A JP2007155108A JP2007155108A JP2008310414A JP 2008310414 A JP2008310414 A JP 2008310414A JP 2007155108 A JP2007155108 A JP 2007155108A JP 2007155108 A JP2007155108 A JP 2007155108A JP 2008310414 A JP2008310414 A JP 2008310414A
- Authority
- JP
- Japan
- Prior art keywords
- snoop
- snoop filter
- grained
- cache
- address
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0837—Cache consistency protocols with software control, e.g. non-cacheable data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0817—Cache consistency protocols using directory methods
- G06F12/082—Associative directories
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
Description
本発明は、コンピュータシステムに係り、特に、マルチプロセッサシステムにおけるスヌープフィルタを用いたスヌープの発行制御に関するものである。 The present invention relates to a computer system, and more particularly, to a snoop issue control using a snoop filter in a multiprocessor system.
メインメモリと、キャッシュメモリを有する1つ以上のプロセッサを有する複数のノードが、ネットワークを介して接続された、共有メモリアーキテクチャを有するマルチプロセッサシステムが知られている。 A multiprocessor system having a shared memory architecture in which a plurality of nodes each having a main memory and one or more processors having a cache memory are connected via a network is known.
複数のプロセッサを有するマルチプロセッサシステムでは、1のプロセッサがある計算タスクを実行している間に、他のプロセッサは別の計算タスクを実行することができる。また、特定の計算タスクを複数のプロセッサに分散して実行させることによって、システム全体の実行時間を減少することができる。 In a multiprocessor system having multiple processors, one processor can perform another computational task while one processor performs another computational task. In addition, the execution time of the entire system can be reduced by distributing a specific calculation task to a plurality of processors.
処理速度を高速化するために、キャッシュと呼ばれる小規模で高速メモリを含む、複数階層構造からなるメモリシステムが採用されている。このキャッシュは通常、プロセッサ集積回路に物理的に組み込まれるか、又は物理的にプロセッサの近くに実装される。また、命令キャッシュとデータ・キャッシュが別々に存在する場合や、複数レベルのキャッシュが存在する場合もある。 In order to increase the processing speed, a memory system having a multi-tier structure including a small-scale high-speed memory called a cache is employed. This cache is typically either physically embedded in the processor integrated circuit or physically implemented near the processor. In some cases, the instruction cache and the data cache exist separately, or there may be a multi-level cache.
一部のキャッシュを複数のプロセッサが共用してもよく、全てのプロセッサとキャッシュは、同一のメインメモリを共用することができる。特定のラインは、メモリと複数のプロセッサのキャッシュ階層に同時に存在できる。ただしキャッシュしたメモリコピーは、共有しているプロセッサ間で同一かつ最新でなければならない。この特性はコヒーレンシと呼ばれる。 Some caches may be shared by a plurality of processors, and all processors and caches can share the same main memory. A particular line can exist simultaneously in the cache hierarchy of memory and multiple processors. However, the cached memory copy must be the same and up-to-date between shared processors. This characteristic is called coherency.
ラインには唯一の保持者「オーナー」が存在し得る。キャッシュがラインを「保持」するとは、キャッシュが更なるコヒーレンシ・トランザクションを発行することなくラインを変更することを許可されている場合である。いかなるキャッシュ・コヒーレンシ・プロトコルも、キャッシュラインの最新のコピーをオーナー(存在する場合)から取得し、このデータのコピーをリクエスタに提供する必要がある。ラインを更新・取得する場合は、リクエスタが所有権を取得する必要があり、共用のコピーをすべて無効にする必要がある。 There may be only one holder “owner” in the line. A cache "holds" a line when the cache is allowed to change the line without issuing further coherency transactions. Any cache coherency protocol needs to obtain an up-to-date copy of the cache line from the owner (if present) and provide a copy of this data to the requester. When updating or acquiring a line, the requester must acquire ownership and all shared copies must be disabled.
ラインのオーナーが存在する場所を確認するには、スヌープベースのキャッシュ・コヒーレンシ・プロトコルまたはディレクトリベースのキャッシュ・コヒーレンシ・プロトコルのいずれかを用いる。
スヌープベースのプロトコルでは、メモリのデータコピーの保持者(オーナー)が不明であり、すべてのキャッシュに問い合わせ(スヌープ)を行って要求されたラインの最新コピーの位置を決定する必要がある。システム内のあらゆる装置によるキャッシュラインへのすべてのアクセス要求は、システム内のすべてのキャッシュに転送される。最終的に、ラインの最新コピーが存在する場所が特定され、リクエスタにコピーが提供される。
To determine where a line owner exists, use either a snoop-based cache coherency protocol or a directory-based cache coherency protocol.
In the snoop-based protocol, the owner (owner) of the data copy of the memory is unknown, and it is necessary to query (snoop) all the caches to determine the position of the latest copy of the requested line. All access requests to the cache line by any device in the system are forwarded to all caches in the system. Eventually, the location where the latest copy of the line exists is identified and a copy is provided to the requester.
ディレクトリベースのプロトコルでは、メモリ内の各ラインの状態に関する情報を保持するためにメモリが提供される。例えば、メモリ内の各ラインについて、キャッシュ階層ごとにそのキャッシュ階層がラインのコピーを保持するかどうかを示すビットと、そのキャッシュ階層が所有権を有するかどうかを示すビットをディレクトリに含めることができる。キャッシュラインへのアクセス要求ごとに、ディレクトリに問い合わせてオーナーを決定する必要がある。それから、ラインの最新コピーを取得してリクエスタにそれを提供する。一般に、ディレクトリのタグとステータスビットはメインメモリに保存されるので、状態情報の要求はメインメモリのサイクルを起動し、メインメモリの呼び出し時間が発生する。 In directory-based protocols, memory is provided to hold information about the state of each line in memory. For example, for each line in memory, the directory may include a bit for each cache hierarchy that indicates whether the cache hierarchy holds a copy of the line and whether the cache hierarchy has ownership. . For each cache line access request, it is necessary to query the directory to determine the owner. Then get the latest copy of the line and serve it to the requester. In general, directory tags and status bits are stored in the main memory, so a request for state information triggers a main memory cycle, and main memory call time occurs.
スヌープを発行した場合、レスポンスを全て受け取ってからリクエストに対する完了処理が行われるので、スヌープの発行数が多いとリクエスト処理にかかる時間がかかってしまう。そこで、スヌープのブロードキャストを防ぐために、スヌープフィルタを用いる方法が知られている。例えば、特許文献1(特開平10−222423号公報)には、キャッシュメモリに存在する全てのデータのキャッシュ状態を示すコピータグを持ち、データが最新の値のときのみキャッシュメモリへのスヌープを行うスヌープフィルタが開示されている。
このように、スヌープフィルタを使用することでスヌープの発行数を削減することができ、マルチプロセッサシステムにおいてプロセッサがメモリアクセスに要する時間を短縮することが出来る。
When a snoop is issued, the completion processing for the request is performed after all responses are received. Therefore, if the number of issued snoops is large, it takes time to process the request. Therefore, a method using a snoop filter is known in order to prevent a snoop broadcast. For example, Patent Document 1 (Japanese Patent Laid-Open No. 10-222423) has a copy tag indicating the cache state of all data existing in the cache memory, and snoops to the cache memory only when the data has the latest value. A snoop filter is disclosed.
In this manner, the number of snoops issued can be reduced by using the snoop filter, and the time required for the processor to access the memory in the multiprocessor system can be reduced.
通常、スヌープフィルタにおいて、ラインアドレスとそのアドレスをキャッシュしているプロセッサを示す状態情報を比較して、アドレスがヒットしてラインを保持していることが判明した場合にスヌープを限定することができる。またアドレスがヒットしてもラインの所有者がいない場合にはスヌープの発行を阻止できる。 Usually, in the snoop filter, the line address and the state information indicating the processor that caches the address are compared, and if it is found that the address is hit and the line is held, the snoop can be limited. . In addition, if there is no line owner even if the address hits, it is possible to prevent the snoop from being issued.
しかし、エントリに登録されていないアドレスのリクエストを受信したときは、スヌープはブロードキャストされてしまう。通常、物理的なサイズ、実装のコストの問題から、全メモリ空間に関する情報を格納するだけのエントリをスヌープフィルタに用意することは困難である。プロセッサが実際にアクセスするメモリ空間のサイズが、スヌープフィルタが対応できるメモリ空間のサイズを越える場合、スヌープフィルタの上書きが発生する。このスヌープフィルタエントリの上書きによってスヌープフィルタミスが生じ、スヌープのブロードキャストが生じることがある。 However, when a request for an address not registered in the entry is received, the snoop is broadcast. Normally, it is difficult to prepare an entry for storing information about the entire memory space in the snoop filter because of physical size and mounting cost. When the size of the memory space that the processor actually accesses exceeds the size of the memory space that can be handled by the snoop filter, the snoop filter is overwritten. This overwriting of the snoop filter entry may cause a snoop filter error and may cause a snoop broadcast.
また、通常のスヌープフィルタでは、リクエストの受信に起因してエントリへの登録、更新が行われる。エントリに登録情報が無い起動時又は初期化後などにヒットせず、スヌープをブロードキャストしてしまう。 Further, in a normal snoop filter, registration and update to an entry are performed due to reception of a request. A snoop is broadcast without being hit at the time of start-up or after initialization without registration information in the entry.
本発明の目的は、キャッシュのコヒーレンシを保持するためのスヌープ発行数を削減して、リクエスト処理時間を短縮し、マルチプロセッサシステムを効率よく機能させることにある。 An object of the present invention is to reduce the number of issued snoops for maintaining cache coherency, to reduce request processing time, and to make a multiprocessor system function efficiently.
本発明に係るコンピュータシステムは、好ましくは、複数のノードが接続されたコンピュータシステムであって、各ノードはメインメモリと、キャッシュメモリを有する少なくとも1つのプロセッサと、ノード間の制御を行うノードコントローラと、キャッシュコヒーレンスを保つためのスヌープ発行を管理するスヌープフィルタを有し、あるノードのプロセッサは他のノードのメインメモリをアクセスすることができるコンピュータシステムにおいて、
該スヌープフィルタとして、該プロセッサがメモリアクセスして取得したキャッシュの所定単位のアドレスと、該アドレスのメモリデータコピーを何れのプロセッサが持っているかを表す状態情報を管理する細粒度スヌープフィルタと、
メモリ領域をキャッシュの所定単位のサイズより大きい複数メモリ空間に分割して、各メモリ空間に含まれるメモリ空間のデータコピーが、プロセッサのキャッシュエントリ内に存在することを表す状態情報を管理するエントリを全メモリ領域分有する粗粒度スヌープフィルタと、
アクセス要求に伴うキャッシュの所定単位のアドレスと該状態情報を、該細粒度スヌープフィルタ及び該粗粒度スヌープフィルタに登録する登録制御部と、
アクセス要求に伴うデータコピーのキャッシュアドレスと、該アドレスをキャッシュしているプロセッサを示す状態情報について、該細粒度スヌープフィルタ及び粗粒度スヌープフィルタに登録された情報と照合する照合部と、
該照合部による照合の結果に従って、関係するプロセッサに対してスヌープの発行を制御するスヌープ発行制御部と、を有するコンピュータシステムとして構成される。
The computer system according to the present invention is preferably a computer system in which a plurality of nodes are connected, each node having a main memory, at least one processor having a cache memory, and a node controller for controlling between the nodes. In a computer system having a snoop filter that manages snoop issuance to maintain cache coherence, and a processor at one node can access main memory at another node,
As the snoop filter, a fine-grained snoop filter that manages a predetermined unit address of the cache acquired by accessing the memory by the processor, and state information indicating which processor has a memory data copy at the address;
The memory area is divided into a plurality of memory spaces larger than a predetermined unit size of the cache, and an entry for managing state information indicating that a data copy of the memory space included in each memory space exists in the cache entry of the processor A coarse-grained snoop filter having the entire memory area;
A registration control unit that registers a predetermined unit address of the cache accompanying the access request and the state information in the fine-grained snoop filter and the coarse-grained snoop filter;
A collation unit that collates with the information registered in the fine-grained snoop filter and the coarse-grained snoop filter for the cache address of the data copy accompanying the access request and the status information indicating the processor that caches the address;
The computer system includes a snoop issuance control unit that controls the issuing of snoops to related processors according to the result of collation by the collation unit.
また、本発明は、複数のノードが接続されたコンピュータシステムにおける、リモートノードからのアクセス要求に対するグローバルなヌープフィルタにも適用できる。
好ましい例では、前記キャッシュの所定単位はキャッシュのラインとして説明されるが、キャッシュのブロック又はページ単位にも適用できる。
キャッシュラインの場合、粗粒度スヌープフィルタは、全メモリ空間をキャッシュラインサイズより大きい複数メモリ空間に分割し、複数の各プロセッサがその空間内のラインを一つ以上保持している可能性があることを示す状態情報を登録し、
細粒度スヌープフィルタは、キャッシュタグを格納するラインアドレス格納部と、複数の各プロセッサがキャッシュラインを保持しているかを示す状態情報部と、アドレスが有効であることを示すバリッドビットを登録する。
また、好ましい例では、システムの起動時又は初期化時に、粗粒度スヌープフィルタ及び細粒度スヌープフィルタに登録されたエントリの情報を実質的に無効にするリセット制御部を有する。
The present invention can also be applied to a global Knoop filter for access requests from remote nodes in a computer system in which a plurality of nodes are connected.
In a preferred example, the predetermined unit of the cache is described as a line of the cache, but it can also be applied to a block or page unit of the cache.
In the case of a cache line, the coarse-grained snoop filter may divide the entire memory space into multiple memory spaces larger than the cache line size, and each of the multiple processors may hold one or more lines in that space. Register status information indicating
The fine-grained snoop filter registers a line address storage unit that stores a cache tag, a status information unit that indicates whether each of a plurality of processors holds a cache line, and a valid bit that indicates that an address is valid.
In addition, in a preferred example, the system includes a reset control unit that substantially invalidates information of entries registered in the coarse-grained snoop filter and the fine-grained snoop filter when the system is started or initialized.
本発明によれば、全アドレスを複数メモリ空間に分割した粗粒度スヌープフィルタと、細粒度スヌープフィルタを用いて、アクセスされたアドレスのメモリコピーの保持情報を管理しそれに基づいてスヌープの発行制御することにより、メモリコピーを保持しているプロセッサ以外のプロセッサに対するスヌープ発行数を減らすことができる。これにより、システム内のトランザクション数を削減して、システム全体の効率を上げることが出来る。また、起動時にスヌープフィルタのエントリ登録をクリアすることにより、起動時からスヌープ発行数を削減することができる。 According to the present invention, using a coarse-grained snoop filter in which all addresses are divided into a plurality of memory spaces and a fine-grained snoop filter, the information held in the memory copy of the accessed address is managed, and the snoop issuance is controlled based on the information. As a result, the number of snoops issued to processors other than the processor holding the memory copy can be reduced. Thereby, the number of transactions in the system can be reduced and the efficiency of the entire system can be increased. Also, by clearing the entry registration of the snoop filter at the time of activation, the number of snoop issues can be reduced from the time of activation.
以下、図面を参照して、本発明の一実施例について説明する。
図1に示すコンピュータシステムを参照する。
このコンピュータシステムは、4つのノード100a〜100dがそれぞれ接続線160によって接続され、お互いに他のノードのメインメモリをアクセスすることができるSMP(共有メモリ)形式のシステムを構成する。各ノードは同じ構成を持ち、それぞれ、キャッシュメモリ120を有する3つのプロセッサCPUA110a、CPUB110b、CPUC110cと、メインメモリ130と、スヌープフィルタ150を持つノードコントローラ140とを有する。ノードコントローラ140は各ノード間の制御を行う。
An embodiment of the present invention will be described below with reference to the drawings.
Reference is made to the computer system shown in FIG.
This computer system constitutes an SMP (shared memory) type system in which four
CPU110は、それぞれ自ノード内のメインメモリ130に接続線180a〜180cにより接続され、直接メモリアクセスすることが出来る。CPU110がリモートのノード100b〜dに在るメインメモリ130へアクセスする場合には、接続線170a〜170cよりノードコントローラ140を経由して行う。
The
図2はスヌープフィルタ150の構成を示す。
スヌープフィルタ150はその内部に、粗粒度スヌープフィルタ(Coarse grain)32と、細粒度スヌープフィルタ(Fine grain)34の2つのスヌープフィルタを持っている。アクセス要求されているアドレスは、入力30よりスヌープフィルタ150に入力され、さらに粗粒度スヌープフィルタ32と細粒度スヌープフィルタ34にそれぞれ入力して処理が行われる。粗粒度スヌープフィルタ32及び細粒度スヌープフィルタ34で処理された結果は統合してスヌープの発行先を出力31より出力する。
FIG. 2 shows the configuration of the
The snoop
図3は、粗粒度スヌープフィルタと細粒度スヌープフィルタの構成を示し、それぞれのフィルタが登録する情報を表している。
粗粒度スヌープフィルタ32aは、全メモリ空間をキャッシュラインサイズより大きい複数メモリ空間に分割し、プロセッサがその空間内のラインを一つ以上保持している可能性があることを表す状態情報部33が存在する。
FIG. 3 shows configurations of a coarse-grained snoop filter and a fine-grained snoop filter, and represents information registered by each filter.
The coarse-grained snoop
図示の例では、システム内の全ノードの全アドレス空間を512単位で分割していることを示し、状態情報部33はプロセッサの毎に1ビット設けていることを示している。本実施例では、ノード内に3個のプロセッサがあるので3ビットとなる。「1」にセットされている場合は、その領域内においてセットされているプロセッサがラインを1つ以上持っている可能性があることを示している。
細粒度スヌープフィルタ34aは、キャッシュタグを格納するラインアドレス格納部35と、何れのプロセッサがそのラインを保持しているのかを表す状態情報部36と、アドレスが有効であることを示すバリッドビット37からなる。エントリ数は実装に依存する。ラインアドレス格納部35はラインアドレスのビット幅分用意する。状態情報部36も状態情報部33と同様にプロセッサの個数分のビット幅がある。
In the example shown in the figure, all address spaces of all nodes in the system are divided by 512 units, and the
The fine-grained snoop
図4はスヌープフィルタの具体的な制御ブロックの構成を示す。
粗粒度スヌープフィルタ32は、アクセス要求50から要求されているアドレスが含まれる領域の状態情報33を出力する。比較器51は、入力されるアクセス要求50のアドレスと細粒度スヌープフィルタ34のアドレス格納部35を1ラインずつ比較していき、ヒット又はミスを出力する。細粒度スヌープフィルタ34はラインの状態情報36を出力する。
FIG. 4 shows a specific control block configuration of the snoop filter.
The coarse grain snoop
セレクタ52は、比較器51から出力されたヒットチェック結果によって粗粒度スヌープフィルタ32又は細粒度スヌープフィルタ34のどちらのキャッシュ情報を出力させるかを選択する。ヒットした場合に、セレクタ52は細粒度スヌープフィルタ34のキャッシュ情報を出力するように選択する。この時、細粒度スヌープフィルタ34はアクセス要求のアドレスと一致したキャッシュ情報を出力する。一方、ミスした場合にはセレクタ52は粗粒度スヌープフィルタ32のキャッシュ情報を選択する。この場合は、粗粒度スヌープフィルタ32のアクセス要求のアドレスを含む領域のキャッシュ情報が出力される。
The selector 52 selects whether to output the cache information of the coarse-grained snoop
アクセス要求50はスヌープ発行制御部54にも入力され、スヌープ発行の要否が判断される。ここでは、READ要求の場合はスヌープ発行が必要と判断され、WRITE要求の場合にはそれが不要と判断される。スヌープ発行制御部54における判断結果はスヌープジェネレータ53に入力され、スヌープ生成、発行を制御する。スヌープ発行が必要と判断された場合、生成したスヌープを出力55から出力する。不要と判断された場合にはスヌープの生成、発行は行わない。
レスポンスの集計論理56はアクセス要求のレスポンスを集計し、何れのプロセッサがキャッシュラインを所有しているかを出力する。粗粒度スヌープフィルタ32はレスポンスの集計論理56からの結果から、アクセス要求のアドレスが含まれる領域の所有者情報を更新する。
The
The
情報登録制御部57は、細粒度スヌープフィルタ34に情報を登録するための制御を行い、アドレス格納部35、状態情報部36、バリッドビット37から成るエントリを構成して登録する。より具体的に言えば、アクセス要求50が入力した時に、アクセス要求50のアドレスをアドレス格納部35に登録する。レスポンス集計論理56から出力されたラインの所有者情報は、情報登録制御部57の状態情報部36に登録される。エントリ情報はバリッドビット37を「1」にセットされスヌープフィルタの空きエントリに追加される。空きが無い場合にはFIFOもしくはLRU方式でエントリを追い出してから追加する。
The information
リセット制御部58は、起動時や初期化時にリセット命令を受信し、粗粒度スヌープフィルタと細粒度スヌープフィルタ34のエントリをリセット制御する。リセット指示を受けた粗粒度スヌープフィルタ32は全エントリ状態情報をクリアする。また、リセット指示を受けた細粒度スヌープフィルタ34は全エントリのバリッドビット37を「0」にリセットする。
The
図5は、細粒度スヌープフィルタのキャッシュミス・ヒットを判断する、セットアソシアティブ方式の例を示す。
40はメモリアドレスの上位ビットであるタグ、41はメモリアドレスの最下位ラインサイズのビットを除いたメモリアドレス中間のインデックス、42はオフセットアドレスを示す。細粒度スヌープフィルタは、セットアソシアティブ方式やダイレクトマップ方式、フルアソシアビリティ方式を採用することができる。
FIG. 5 shows an example of a set associative method for determining a cache miss hit of the fine-grained snoop filter.
ローカルプロセッサが、リモートノードに属するメモリのコピーを、キャッシュしようとするとき、粗粒度スヌープフィルタと細粒度スヌープフィルタに登録を行う。図3の粗粒度スヌープフィルタ32aにおいては、当該アドレスに対応するエントリのキャッシュ状態情報33のうち、当該ラインのコピーを保持するプロセッサに対応するビットを「1」にセットして情報登録を行う。
When the local processor attempts to cache a copy of the memory belonging to the remote node, it registers with the coarse-grained snoop filter and the fine-grained snoop filter. In the coarse-grained snoop
図3の細粒度スヌープフィルタ34aにおいては、エントリに登録があるかを探す。エントリ登録が無かった場合には空きエントリを探し、エントリが有ればバリッドビット37を「1」にセットする。そして該当アドレスに対応するエントリのアドレス部35を登録し、キャッシュ状態情報のうち、該当ラインのコピーを保持するプロセッサに対応するビットを「1」にセットして情報登録を行う。空きエントリが無かった場合には、有効エントリをクリアして、登録を行う。細粒度スヌープフィルタ34aにエントリ登録があった場合には、要求されているプロセッサに対応するビットを「1」にセットし、それ以外は「0」にセットする。
In the fine-grained snoop
例えば図1において、CPU110cがリモートノードの「000011000000」のメモリアドレスに読み出し要求を発行した場合には、図6のように、粗粒度スヌープフィルタ32bには「000000000000」から「000100000000」の複数メモリ空間においてプロセッサCのビットをセットし、細粒度スヌープフィルタ34bにはアドレス「000011000000」のCのビットをセットする。
初期化時とリセット時には、粗粒度スヌープフィルタ32aの状態情報33と、細粒度スヌープフィルタ34aのエントリ有効ビットが全てクリアされる。
For example, in FIG. 1, when the
At the time of initialization and reset, all the
図2の入力30が示すように、メモリに要求のあったアドレスが入力され、粗粒度スヌープフィルタ32で要求されているアドレスが、図3の状態情報33に登録があるかを判断する。同時に、細粒度スヌープフィルタ34のアドレス格納部35との一致確認と状態情報36にも登録があるかを判断する。粗粒度スヌープフィルタ32と細粒度スヌープフィルタ34の出力結果から判断してスヌープの発行するプロセッサを決める。
As indicated by the
図6の例では、粗粒度スヌープフィルタ32bのアドレス「000000000000」から「000100000000」の領域のキャッシュラインはCPU110cが持っている可能性があることを示している。細粒度スヌープフィルタ34bから、「000011000000」のラインはCPU100cが所持し、「001101000000」のラインはCPU110aが所持していると、要求されているアドレスに対する所持者(プロセッサ)を判断する。
The example of FIG. 6 shows that the
プロセッサがリモートノードのメインメモリに対してREAD要求を発行した場合には、粗粒度スヌープフィルタ32と細粒度スヌープフィルタ34によってラインの所有者がノード内にいるかをチェックする。アクセス要求が来た時、粗粒度スヌープフィルタと細粒度スヌープフィルタのエントリ登録情報からスヌープの発行先が決まる。
When the processor issues a READ request to the main memory of the remote node, the coarse grain snoop
要求されたアドレスが粗粒度スヌープフィルタ32aの状態情報33に登録されていない場合、要求されているアドレスに対応する粗粒度スヌープフィルタ32aの状態情報33が全て「0」になっていると、何れのプロセッサもそのラインは保持していないと判断することができる。よって、この場合にはスヌープの発行を行わない。
また、要求されたアドレスが粗粒度スヌープフィルタ32aの状態情報33にヒットし、細粒度スヌープフィルタ34aのアドレス格納部35にも登録されているが、状態情報部36にセットされているプロセッサが無かった場合にも、状態情報に登録が無いことからラインの保持者がいないと判断できるので、スヌープの発行は一切行わない。
If the requested address is not registered in the
The requested address hits the
スヌープを発行する場合とは、要求されたアドレスが粗粒度スヌープフィルタ32aの状態情報33にヒットしたが、細粒度スヌープフィルタ34aのアドレス格納部35にヒットしなかった場合である。この場合には、粗粒度スヌープフィルタ32aに登録されているプロセッサに対してのみスヌープをマルチキャストする。
The case where the snoop is issued is a case where the requested address hits the
また、要求されたアドレスが粗粒度スヌープフィルタ32aの状態情報33に登録されていて、細粒度スヌープフィルタ34aのアドレス格納部35にもヒットして状態情報部36にも登録されている場合には、ラインアドレスに対して保持者の情報まで登録されているので、そのアドレスラインの保持者に対してのみスヌープを発行する。
Further, when the requested address is registered in the
図7はローカルノードからリモートノードへメモリアクセス要求の動作例を示す。
図示の例は、ノード100aからリモートノード100bのメモリへreadトランザクション170cを発行する場合を示す。ノード100aのCPU110cからノード100bにメモリアクセスのアクセス要求160bが発行される。まず、ノードコントローラ150にアクセスする。ここで、ノード100bのメモリ「000011000000」にアクセスすると、アドレスと状態情報は図8の粗粒度スヌープフィルタ32cと細粒度スヌープフィルタ34cのように登録される。
FIG. 7 shows an operation example of a memory access request from the local node to the remote node.
The illustrated example shows a case where a
図9の例は、粗粒度スヌープフィルタ32dではプロセッサ100a、b共にコピーを持っていることを示しているが、細粒度スヌープフィルタ34dにもヒットすると、当該ラインをプロセッサ100c以外の誰も持っていないことを示している。この場合、粗粒度スヌープフィルタ32dの保持情報は、粗粒度スヌープフィルタが管理する同一メモリ領域内の別のキャッシュラインに関する情報であると判断でき、細粒度スヌープフィルタ34dの情報を用いてスヌープを抑止することができる。
The example in FIG. 9 shows that both the
図10の例は、粗粒度スヌープフィルタ32eの状態情報には登録されているが、細粒度スヌープフィルタ34eにはアドレス登録と保有者の登録が無いことを示している。細粒度スヌープフィルタ34eには登録できるエントリ数に限りがあり、インデックスで競合があったアドレスは、細粒度スヌープフィルタ34eのエントリから上書きされることがある。この場合、粗粒度スヌープフィルタ32eが当該ラインを所有している可能性があることを示しているので、図11のように、スヌープは170a及び170bによりプロセッサ110aと110bへブロードキャストされる。
The example of FIG. 10 shows that the coarse-grained snoop
図12は、細粒度スヌープフィルタ34fにヒットして、精度が向上を示する場合を示す。細粒度スヌープフィルタ34fの登録状況から、アドレス「000011000000」のラインをCPU100aが所有していることが判るので、図13のように、CPU 110aにスヌープ170aを発行する。
FIG. 12 shows a case where the accuracy is improved by hitting the fine-grained snoop
図14の例は、ラインが複数のCPUに共有されている場合を示す。粗粒度スヌープフィルタ32gと細粒度スヌープフィルタ34gの状態情報には登録されており、細粒度スヌープフィルタ34gは「000011000000」のラインがCPU110aとCPU110bによって共有されている。この場合には、ラインを共有しているそれぞれのCPU110aとCPU110bに対してスヌープが発行される。
The example of FIG. 14 shows a case where a line is shared by a plurality of CPUs. The state information of the coarse-grained snoop
起動時又は初期化時にリセット命令を受けるとリセット制御部58の制御により、両者のスヌープフィルタのエントリ登録情報は、図15のようにリセットされる。粗粒度スヌープフィルタ32hをリセットする時には、細粒度スヌープフィルタ34hのリセットとキャッシュを全てパージする必要がある。
また、粗粒度スヌープフィルタの性能を向上させるために、プロセッサやパーティションのリセット時、又は粗粒度スヌープフィルタの効果が低下した場合にリセットを行うのが好ましい。その時、複数のラインで粗粒度スヌープフィルタの1エントリを共有しているため、ハードウェアでのリセットは困難であり、ソフトウェアでキャッシュ・パージを行った上で、粗粒度スヌープフィルタのリセット命令を発行することによりリセットを行う。
When a reset command is received at startup or initialization, the entry control information of both snoop filters is reset as shown in FIG. When resetting the coarse-grained snoop
In order to improve the performance of the coarse-grained snoop filter, it is preferable to perform the reset when the processor or partition is reset or when the effect of the coarse-grained snoop filter is reduced. At that time, one line of coarse-grained snoop filter is shared by multiple lines, so it is difficult to reset by hardware. After a cache purge is performed by software, a coarse-grained snoop filter reset command is issued. To reset.
図16は、リモートのノード100bからノード100aにREADトランザクションが発行されてきたことを示している。ノードコントローラ240からアクセス要求がCPU110aに発行され、グローバルな性質を持ったスヌープフィルタ250を介してスヌープを発行する。
FIG. 16 shows that a READ transaction has been issued from the
このグローバルスヌープフィルタの構成を図17に示す。グローバルな性質を持った粗粒度スヌープフィルタ70の領域は、ローカルのメインメモリのアドレスを分割した複数メモリ空間であり、その所有者71はノードになる。図中のR1、R2、R3はそれぞれリモードノード1(100b)、リモードノード2(100c)、リモードノード3(100d)を示し、Lはローカルノードを示す。
The configuration of this global snoop filter is shown in FIG. The area of the coarse-grained snoop
グローバルな性質を持った細粒度スヌープフィルタ75のアドレス格納部72に対する保有者73も同様に、ノードを示している。74はラインが有効かどうかを示すバリッドビットである。フィルタの登録は先の説明と同様に、リモートのプロセッサからリクエストを発行されて来たことに起因して粗粒度スヌープフィルタ70と細粒度スヌープフィルタ75に登録を行う。リモートノードのリクエストを受けたときに、要求されたアドレスが含まれる領域に要求があったノードを粗粒度スヌープフィルタ70に登録し、参照されたアドレスと要求してきたノードを細粒度スヌープフィルタ75に記録する。
Similarly, the holder 73 for the
図16の例において、ノード1からのアクセス要求が「000011000000」のラインを要求しているとすると、図17のエントリ情報からノード2とノード3が所有していることが判る。粗粒度スヌープフィルタ70の「000000000000」から「000100000000」の領域のエントリに、ノード1が所有したことを登録し、細粒度スヌープフィルタ75のエントリに「000011000000」のラインをノード1が所有したことを登録する。そして図16のようにノード2とノード3に対してスヌープを発行する。
In the example of FIG. 16, if the access request from the
なお、本発明は上記した実施例に限定されないで、種々変形して実施することができる。例えば、上記実施例では、キャッシュがラインと呼ばれるメモリ量を中心にして構成される場合を前提にしてスヌープの発行制御を行う。しかし、キャッシュがブロック又はページと呼ばれるメモリ量を中心にして構成されることがある。この場合には、上記実施例におけるラインは、ブロック又はページ等の所定のメモリ単位となり、この所定のメモリ単位でスヌープの制御が行われる。これについては格別に説明せずとも容易に理解できよう。 In addition, this invention is not limited to an above-described Example, Various modifications can be implemented. For example, in the above embodiment, the snoop issuance control is performed on the assumption that the cache is configured around a memory amount called a line. However, a cache may be configured around a memory amount called a block or page. In this case, the line in the above embodiment is a predetermined memory unit such as a block or a page, and snoop control is performed in this predetermined memory unit. This can be easily understood without any special explanation.
100a、100b、100c、100d:ノード、
110a、110b、110c:プロセッサ、
120a、120b、120c:キャッシュメモリ、
130:メインメモリ、 140:ノードコントローラ、 150:スヌープフィルタ、
160:ノード間の接続、 170:ノードコントローラ−プロセッサ間の接続線、
180:プロセッサ−メモリ間の接続線、
30:スヌープフィルタの入力、
31:スヌープフィルタの出力、
32、32a〜32h:粗粒度スヌープフィルタ、 33:状態情報、
34、34a〜34h:細粒度スヌープフィルタ、 35:アドレス格納部、
36:状態情報、 37:バリッドビット、 40:キャッシュタグ、 41:インデックス、 42:データフィールド、 50:アクセス要求、
51:比較器、 52:セレクタ、
53:スヌープジェネレータ、 54:スヌープ発行制御部、
55:スヌープ、 56:レスポンス集計論理部、
57:情報登録制御部、 58:リセット制御部、
70:グローバルな性質を持った粗粒度スヌープフィルタ、
71:状態情報、
75:グローバルな性質を持った細粒度スヌープフィルタ、
72:アドレス格納部、 73:状態情報、 74:バリッドビット。
100a, 100b, 100c, 100d: nodes,
110a, 110b, 110c: processors,
120a, 120b, 120c: cache memory,
130: main memory, 140: node controller, 150: snoop filter,
160: Connection between nodes, 170: Connection line between node controller and processor,
180: connection line between processor and memory,
30: Input of snoop filter,
31: Output of the snoop filter,
32, 32a to 32h: coarse grain snoop filter, 33: state information,
34, 34a to 34h: fine grain snoop filter, 35: address storage unit,
36: Status information, 37: Valid bit, 40: Cache tag, 41: Index, 42: Data field, 50: Access request,
51: Comparator, 52: Selector,
53: Snoop generator 54: Snoop issue control unit,
55: Snoop, 56: Response aggregation logic part,
57: Information registration control unit, 58: Reset control unit,
70: Coarse grain snoop filter with global properties,
71: Status information,
75: A fine-grained snoop filter with global properties,
72: Address storage unit 73: Status information 74: Valid bit
Claims (10)
該スヌープフィルタとして、該プロセッサがメモリアクセスして取得したキャッシュの所定単位のアドレスと、該アドレスのメモリデータコピーを何れのプロセッサが持っているかを表す状態情報を管理する細粒度スヌープフィルタと、
メモリ領域をキャッシュの所定単位のサイズより大きい複数メモリ空間に分割して、各メモリ空間に含まれるメモリ空間のデータコピーが、プロセッサのキャッシュエントリ内に存在することを表す状態情報を管理するエントリを全メモリ領域分有する粗粒度スヌープフィルタと、
アクセス要求に伴うキャッシュの所定単位のアドレスと該状態情報を、該細粒度スヌープフィルタ及び該粗粒度スヌープフィルタに登録する登録制御部と、
アクセス要求に伴うデータコピーのキャッシュアドレスと、該アドレスをキャッシュしているプロセッサを示す状態情報について、該細粒度スヌープフィルタ及び粗粒度スヌープフィルタに登録された情報と照合する照合部と、
該照合部による照合の結果に従って、関係するプロセッサに対してスヌープの発行を制御するスヌープ発行制御部と、を有するコンピュータシステム。 A computer system in which a plurality of nodes are connected, each node managing a main memory, at least one processor having a cache memory, a node controller for controlling the nodes, and issuing a snoop for maintaining cache coherence In a computer system having a snoop filter that allows a processor of one node to access main memory of another node,
As the snoop filter, a fine-grained snoop filter that manages a predetermined unit address of the cache acquired by accessing the memory by the processor, and state information indicating which processor has a memory data copy at the address;
The memory area is divided into a plurality of memory spaces larger than a predetermined unit size of the cache, and an entry for managing state information indicating that a data copy of the memory space included in each memory space exists in the cache entry of the processor A coarse-grained snoop filter having the entire memory area;
A registration control unit that registers a predetermined unit address of the cache accompanying the access request and the state information in the fine-grained snoop filter and the coarse-grained snoop filter;
A collation unit that collates with the information registered in the fine-grained snoop filter and the coarse-grained snoop filter for the cache address of the data copy accompanying the access request and the status information indicating the processor that caches the address;
And a snoop issuance control unit that controls the issuing of snoops to related processors according to a result of collation by the collation unit.
該スヌープフィルタとして、該ノードのプロセッサがメモリアクセスして取得したキャッシュの所定単位のアドレスと、該アドレスのメモリデータコピーを何れのノードが持っているかを表す状態情報を管理する細粒度スヌープフィルタと、
メモリ領域をキャッシュの所定単位のサイズより大きい複数メモリ空間に分割して、各メモリ空間に含まれるメモリ空間のデータコピーが、ノードのキャッシュエントリ内に存在することを表す状態情報を管理するエントリを全メモリ領域分有する粗粒度スヌープフィルタと、
アクセス要求に伴うキャッシュの所定単位のアドレスと該状態情報を、該細粒度スヌープフィルタ及び該粗粒度スヌープフィルタに登録制御部と、
アクセス要求に伴うデータコピーのキャッシュアドレスと、該アドレスをキャッシュしているプロセッサを示す状態情報について、該細粒度スヌープフィルタ及び粗粒度スヌープフィルタに登録された情報と照合する照合部と、
該照合部による照合の結果に従って、関係するノードに対してスヌープの発行を制御するスヌープ発行制御部と、を有するコンピュータシステム。 A computer system in which a plurality of nodes are connected, each node managing a main memory, at least one processor having a cache memory, a node controller for controlling the nodes, and issuing a snoop for maintaining cache coherence In a computer system having a snoop filter that allows a processor of one node to access main memory of another node,
As the snoop filter, a fine-grained snoop filter that manages a predetermined unit address of the cache acquired by accessing the memory by the processor of the node and status information indicating which node has a memory data copy of the address; ,
The memory area is divided into a plurality of memory spaces larger than a predetermined unit size of the cache, and an entry for managing state information indicating that a data copy of the memory space included in each memory space exists in the cache entry of the node A coarse-grained snoop filter having the entire memory area;
A control unit that registers a predetermined unit address of the cache accompanying the access request and the state information in the fine-grained snoop filter and the coarse-grained snoop filter,
A collation unit that collates with the information registered in the fine-grained snoop filter and the coarse-grained snoop filter for the cache address of the data copy accompanying the access request and the status information indicating the processor that caches the address;
And a snoop issuance control unit that controls the issuing of snoops to related nodes in accordance with a result of collation by the collation unit.
前記細粒度スヌープフィルタは、キャッシュタグを格納するラインアドレス格納部と、複数の各プロセッサがキャッシュラインを保持しているかを示す状態情報部と、アドレスが有効であることを示すバリッドビットを登録する、ことを特徴とする請求項1のコンピュータシステム。 The coarse-grained snoop filter divides the entire memory space into a plurality of memory spaces larger than the cache line size, and status information indicating that each of the plurality of processors may hold one or more lines in the space And register
The fine-grained snoop filter registers a line address storage unit that stores a cache tag, a status information unit that indicates whether each of a plurality of processors holds a cache line, and a valid bit that indicates that the address is valid. The computer system according to claim 1.
ヒットした時に、該セレクタは、該細粒度スヌープフィルタからアクセス要求のアドレスと一致したキャッシュ情報を出力させ、
ミスした時に、該セレクタは、該粗粒度スヌープフィルタからアクセス要求のアドレスを含む領域のキャッシュ情報を出力させることを特徴とする請求項1乃至4のいずれかのコンピュータシステム。 A selector that outputs cache information of either the coarse-grained snoop filter or the fine-grained snoop filter depending on the result of the hit or miss by the matching unit;
When a hit occurs, the selector causes the fine-grain snoop filter to output cache information that matches the address of the access request,
5. The computer system according to claim 1, wherein when a miss occurs, the selector outputs cache information of an area including an access request address from the coarse-grained snoop filter.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007155108A JP2008310414A (en) | 2007-06-12 | 2007-06-12 | Computer system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007155108A JP2008310414A (en) | 2007-06-12 | 2007-06-12 | Computer system |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2008310414A true JP2008310414A (en) | 2008-12-25 |
Family
ID=40237986
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007155108A Pending JP2008310414A (en) | 2007-06-12 | 2007-06-12 | Computer system |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2008310414A (en) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2018530828A (en) * | 2015-09-24 | 2018-10-18 | クアルコム,インコーポレイテッド | Maintaining cache coherency using conditional intervention between multiple master devices |
US10346307B2 (en) | 2016-09-28 | 2019-07-09 | Samsung Electronics Co., Ltd. | Power efficient snoop filter design for mobile platform |
CN113553274A (en) * | 2020-04-24 | 2021-10-26 | 江苏华创微系统有限公司 | Method for realizing consistency between pieces by using self-adaptive granularity directory table |
JP2021533464A (en) * | 2018-08-02 | 2021-12-02 | ザイリンクス インコーポレイテッドXilinx Incorporated | Hybrid precision and non-precision cache snoop filtering |
-
2007
- 2007-06-12 JP JP2007155108A patent/JP2008310414A/en active Pending
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2018530828A (en) * | 2015-09-24 | 2018-10-18 | クアルコム,インコーポレイテッド | Maintaining cache coherency using conditional intervention between multiple master devices |
US10346307B2 (en) | 2016-09-28 | 2019-07-09 | Samsung Electronics Co., Ltd. | Power efficient snoop filter design for mobile platform |
JP2021533464A (en) * | 2018-08-02 | 2021-12-02 | ザイリンクス インコーポレイテッドXilinx Incorporated | Hybrid precision and non-precision cache snoop filtering |
JP7383007B2 (en) | 2018-08-02 | 2023-11-17 | ザイリンクス インコーポレイテッド | Hybrid precision and non-precision cache snoop filtering |
CN113553274A (en) * | 2020-04-24 | 2021-10-26 | 江苏华创微系统有限公司 | Method for realizing consistency between pieces by using self-adaptive granularity directory table |
CN113553274B (en) * | 2020-04-24 | 2023-09-12 | 江苏华创微系统有限公司 | Method for realizing inter-chip consistency by self-adaptive granularity directory table |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7698508B2 (en) | System and method for reducing unnecessary cache operations | |
US6647466B2 (en) | Method and apparatus for adaptively bypassing one or more levels of a cache hierarchy | |
US7032074B2 (en) | Method and mechanism to use a cache to translate from a virtual bus to a physical bus | |
EP0936557B1 (en) | Cache coherency protocol for a data processing system including a multilevel memory hierarchy | |
US7434008B2 (en) | System and method for coherency filtering | |
US7747826B2 (en) | Data processing system and method for efficient communication utilizing an in coherency state | |
US8909871B2 (en) | Data processing system and method for reducing cache pollution by write stream memory access patterns | |
US7310708B2 (en) | Cache system with groups of lines and with coherency for both single lines and groups of lines | |
US6868481B1 (en) | Cache coherence protocol for a multiple bus multiprocessor system | |
US6272602B1 (en) | Multiprocessing system employing pending tags to maintain cache coherence | |
JP4447580B2 (en) | Partitioned sparse directory for distributed shared memory multiprocessor systems | |
US8037252B2 (en) | Method for reducing coherence enforcement by selective directory update on replacement of unmodified cache blocks in a directory-based coherent multiprocessor | |
US7409500B2 (en) | Systems and methods for employing speculative fills | |
US20070156972A1 (en) | Cache coherency control method, chipset, and multi-processor system | |
JP5445581B2 (en) | Computer system, control method, recording medium, and control program | |
US20060265553A1 (en) | Processor, data processing system, and method for initializing a memory block | |
US20020169935A1 (en) | System of and method for memory arbitration using multiple queues | |
US6915396B2 (en) | Fast priority determination circuit with rotating priority | |
US7117312B1 (en) | Mechanism and method employing a plurality of hash functions for cache snoop filtering | |
KR100322225B1 (en) | Cache coherency protocol having hovering(h) and recent(r) states | |
US7325102B1 (en) | Mechanism and method for cache snoop filtering | |
US8473686B2 (en) | Computer cache system with stratified replacement | |
JP2007156821A (en) | Cache system and shared secondary cache | |
JP2004199677A (en) | System for and method of operating cache | |
EP0936556B1 (en) | Cache coherency protocol including a hovering state (HR) |