JP2008310414A - Computer system - Google Patents

Computer system Download PDF

Info

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
Application number
JP2007155108A
Other languages
Japanese (ja)
Inventor
Shotaro Kimura
昌太郎 木村
Masahiro Tokoro
雅尋 處
Akira Takase
亮 高瀬
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.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2007155108A priority Critical patent/JP2008310414A/en
Publication of JP2008310414A publication Critical patent/JP2008310414A/en
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0837Cache consistency protocols with software control, e.g. non-cacheable data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods
    • G06F12/082Associative 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

<P>PROBLEM TO BE SOLVED: To reduce access request processing time by reducing the number of snoop issue for holding cache coherency. <P>SOLUTION: A computer system connected to a plurality of nodes comprises: an address in prescribed units of a cache; a fine grain snoop filter for managing state information indicating which processor has a memory data copy of the address; and a fine grain snoop filter that divides a memory area into a plurality of memory spaces, and has an entry for managing state information indicating that a data copy included in each memory space is present in the cache entry of the processor. For the cache address of the data copy accompanied by an access request and the state information indicating the processor caching the address, the fine grain snoop filter and a rough grain snoop filter are compared, and a snoop is issued to a related processor according to the result of comparison. <P>COPYRIGHT: (C)2009,JPO&INPIT

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.

特開平10−222423号公報Japanese Patent Laid-Open No. 10-222423

通常、スヌープフィルタにおいて、ラインアドレスとそのアドレスをキャッシュしているプロセッサを示す状態情報を比較して、アドレスがヒットしてラインを保持していることが判明した場合にスヌープを限定することができる。またアドレスがヒットしてもラインの所有者がいない場合にはスヌープの発行を阻止できる。   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 nodes 100a to 100d are respectively connected by a connection line 160 and can access main memories of other nodes. Each node has the same configuration, and includes three processors CPUA 110a, CPUB 110b, and CPUC 110c each having a cache memory 120, a main memory 130, and a node controller 140 having a snoop filter 150. The node controller 140 performs control between the nodes.

CPU110は、それぞれ自ノード内のメインメモリ130に接続線180a〜180cにより接続され、直接メモリアクセスすることが出来る。CPU110がリモートのノード100b〜dに在るメインメモリ130へアクセスする場合には、接続線170a〜170cよりノードコントローラ140を経由して行う。   The CPU 110 is connected to the main memory 130 in its own node via connection lines 180a to 180c, and can directly access the memory. When the CPU 110 accesses the main memory 130 in the remote nodes 100b to 100d, it is performed via the node controller 140 from the connection lines 170a to 170c.

図2はスヌープフィルタ150の構成を示す。
スヌープフィルタ150はその内部に、粗粒度スヌープフィルタ(Coarse grain)32と、細粒度スヌープフィルタ(Fine grain)34の2つのスヌープフィルタを持っている。アクセス要求されているアドレスは、入力30よりスヌープフィルタ150に入力され、さらに粗粒度スヌープフィルタ32と細粒度スヌープフィルタ34にそれぞれ入力して処理が行われる。粗粒度スヌープフィルタ32及び細粒度スヌープフィルタ34で処理された結果は統合してスヌープの発行先を出力31より出力する。
FIG. 2 shows the configuration of the snoop filter 150.
The snoop filter 150 has two snoop filters, a coarse grain snoop filter (Coarse grain) 32 and a fine grain snoop filter (Fine grain) 34 therein. The address requested to be accessed is input from the input 30 to the snoop filter 150 and further input to the coarse-grained snoop filter 32 and the fine-grained snoop filter 34 for processing. The results processed by the coarse-grained snoop filter 32 and the fine-grained snoop filter 34 are integrated and the snoop issue destination is output from the output 31.

図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 filter 32a divides the entire memory space into a plurality of memory spaces larger than the cache line size, and a state information unit 33 indicating that the processor may hold one or more lines in the space. Exists.

図示の例では、システム内の全ノードの全アドレス空間を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 status information unit 33 indicates that one bit is provided for each processor. In this embodiment, there are 3 processors in the node, so 3 bits. When it is set to “1”, it indicates that there is a possibility that the processor set in the area has one or more lines.
The fine-grained snoop filter 34a includes a line address storage unit 35 that stores a cache tag, a status information unit 36 that indicates which processor holds the line, and a valid bit 37 that indicates that the address is valid. Consists of. The number of entries depends on the implementation. The line address storage unit 35 prepares for the bit width of the line address. Similarly to the state information unit 33, the state information unit 36 has a bit width corresponding to the number of processors.

図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 filter 32 outputs the state information 33 of the area including the address requested from the access request 50. The comparator 51 compares the address of the input access request 50 with the address storage unit 35 of the fine-grained snoop filter 34 line by line, and outputs a hit or miss. The fine-grain snoop filter 34 outputs line status information 36.

セレクタ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 filter 32 or the fine-grained snoop filter 34 based on the hit check result output from the comparator 51. In the case of a hit, the selector 52 selects to output the cache information of the fine-grained snoop filter 34. At this time, the fine-grained snoop filter 34 outputs cache information that matches the address of the access request. On the other hand, in the case of a miss, the selector 52 selects the cache information of the coarse grain snoop filter 32. In this case, the cache information of the area including the address of the access request of the coarse grain snoop filter 32 is output.

アクセス要求50はスヌープ発行制御部54にも入力され、スヌープ発行の要否が判断される。ここでは、READ要求の場合はスヌープ発行が必要と判断され、WRITE要求の場合にはそれが不要と判断される。スヌープ発行制御部54における判断結果はスヌープジェネレータ53に入力され、スヌープ生成、発行を制御する。スヌープ発行が必要と判断された場合、生成したスヌープを出力55から出力する。不要と判断された場合にはスヌープの生成、発行は行わない。
レスポンスの集計論理56はアクセス要求のレスポンスを集計し、何れのプロセッサがキャッシュラインを所有しているかを出力する。粗粒度スヌープフィルタ32はレスポンスの集計論理56からの結果から、アクセス要求のアドレスが含まれる領域の所有者情報を更新する。
The access request 50 is also input to the snoop issue control unit 54 to determine whether snoop issue is necessary. Here, it is determined that snoop issuance is necessary in the case of a READ request, and it is determined that it is unnecessary in the case of a WRITE request. The determination result in the snoop issue control unit 54 is input to the snoop generator 53 to control snoop generation and issue. When it is determined that snoop issuance is necessary, the generated snoop is output from the output 55. If it is judged unnecessary, snoops are not generated or issued.
The response totaling logic 56 totalizes the response of the access request and outputs which processor owns the cache line. The coarse-grained snoop filter 32 updates the owner information of the area including the address of the access request from the result from the response aggregation logic 56.

情報登録制御部57は、細粒度スヌープフィルタ34に情報を登録するための制御を行い、アドレス格納部35、状態情報部36、バリッドビット37から成るエントリを構成して登録する。より具体的に言えば、アクセス要求50が入力した時に、アクセス要求50のアドレスをアドレス格納部35に登録する。レスポンス集計論理56から出力されたラインの所有者情報は、情報登録制御部57の状態情報部36に登録される。エントリ情報はバリッドビット37を「1」にセットされスヌープフィルタの空きエントリに追加される。空きが無い場合にはFIFOもしくはLRU方式でエントリを追い出してから追加する。   The information registration control unit 57 performs control for registering information in the fine-grained snoop filter 34, and configures and registers an entry including an address storage unit 35, a status information unit 36, and a valid bit 37. More specifically, when the access request 50 is input, the address of the access request 50 is registered in the address storage unit 35. The line owner information output from the response counting logic 56 is registered in the status information unit 36 of the information registration control unit 57. In the entry information, the valid bit 37 is set to “1” and added to the empty entry of the snoop filter. If there is no vacancy, the entry is removed after the entry by FIFO or LRU method.

リセット制御部58は、起動時や初期化時にリセット命令を受信し、粗粒度スヌープフィルタと細粒度スヌープフィルタ34のエントリをリセット制御する。リセット指示を受けた粗粒度スヌープフィルタ32は全エントリ状態情報をクリアする。また、リセット指示を受けた細粒度スヌープフィルタ34は全エントリのバリッドビット37を「0」にリセットする。   The reset control unit 58 receives a reset command at startup or initialization, and resets the entries of the coarse-grained snoop filter and the fine-grained snoop filter 34. The coarse-grained snoop filter 32 that has received the reset instruction clears all entry state information. Further, the fine-grained snoop filter 34 that has received the reset instruction resets the valid bits 37 of all entries to “0”.

図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.
Reference numeral 40 denotes a tag which is an upper bit of the memory address, reference numeral 41 denotes an intermediate index of the memory address excluding the bit of the lowest line size of the memory address, and reference numeral 42 denotes an offset address. The fine-grained snoop filter can adopt a set associative method, a direct map method, or a full associability method.

ローカルプロセッサが、リモートノードに属するメモリのコピーを、キャッシュしようとするとき、粗粒度スヌープフィルタと細粒度スヌープフィルタに登録を行う。図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 filter 32a of FIG. 3, information is registered by setting the bit corresponding to the processor holding the copy of the line to “1” in the cache status information 33 of the entry corresponding to the address.

図3の細粒度スヌープフィルタ34aにおいては、エントリに登録があるかを探す。エントリ登録が無かった場合には空きエントリを探し、エントリが有ればバリッドビット37を「1」にセットする。そして該当アドレスに対応するエントリのアドレス部35を登録し、キャッシュ状態情報のうち、該当ラインのコピーを保持するプロセッサに対応するビットを「1」にセットして情報登録を行う。空きエントリが無かった場合には、有効エントリをクリアして、登録を行う。細粒度スヌープフィルタ34aにエントリ登録があった場合には、要求されているプロセッサに対応するビットを「1」にセットし、それ以外は「0」にセットする。   In the fine-grained snoop filter 34a shown in FIG. 3, the entry is searched for registration. If there is no entry registration, an empty entry is searched. If there is an entry, the valid bit 37 is set to “1”. Then, the address portion 35 of the entry corresponding to the corresponding address is registered, and information registration is performed by setting the bit corresponding to the processor holding the copy of the corresponding line in the cache status information to “1”. If there is no empty entry, the valid entry is cleared and registered. If there is an entry registered in the fine-grained snoop filter 34a, the bit corresponding to the requested processor is set to “1”, otherwise it is set to “0”.

例えば図1において、CPU110cがリモートノードの「000011000000」のメモリアドレスに読み出し要求を発行した場合には、図6のように、粗粒度スヌープフィルタ32bには「000000000000」から「000100000000」の複数メモリ空間においてプロセッサCのビットをセットし、細粒度スヌープフィルタ34bにはアドレス「000011000000」のCのビットをセットする。
初期化時とリセット時には、粗粒度スヌープフィルタ32aの状態情報33と、細粒度スヌープフィルタ34aのエントリ有効ビットが全てクリアされる。
For example, in FIG. 1, when the CPU 110c issues a read request to the memory address of “000011000000” of the remote node, as shown in FIG. The bit of the processor C is set and the C bit of the address “000011000000” is set in the fine-grained snoop filter 34b.
At the time of initialization and reset, all the state information 33 of the coarse-grained snoop filter 32a and the entry valid bits of the fine-grained snoop filter 34a are cleared.

図2の入力30が示すように、メモリに要求のあったアドレスが入力され、粗粒度スヌープフィルタ32で要求されているアドレスが、図3の状態情報33に登録があるかを判断する。同時に、細粒度スヌープフィルタ34のアドレス格納部35との一致確認と状態情報36にも登録があるかを判断する。粗粒度スヌープフィルタ32と細粒度スヌープフィルタ34の出力結果から判断してスヌープの発行するプロセッサを決める。   As indicated by the input 30 in FIG. 2, the requested address is input to the memory, and it is determined whether the address requested by the coarse-grained snoop filter 32 is registered in the state information 33 in FIG. At the same time, it is determined whether or not there is registration in the status information 36 and the matching confirmation with the address storage unit 35 of the fine-grain snoop filter 34. Judgment is made from the output results of the coarse-grained snoop filter 32 and the fine-grained snoop filter 34, and the processor that issues the snoop is determined.

図6の例では、粗粒度スヌープフィルタ32bのアドレス「000000000000」から「000100000000」の領域のキャッシュラインはCPU110cが持っている可能性があることを示している。細粒度スヌープフィルタ34bから、「000011000000」のラインはCPU100cが所持し、「001101000000」のラインはCPU110aが所持していると、要求されているアドレスに対する所持者(プロセッサ)を判断する。   The example of FIG. 6 shows that the CPU 110c may have a cache line in the area from the address “000000000000” to “000100000000” of the coarse-grained snoop filter 32b. From the fine-grained snoop filter 34b, if the "000011000000" line is possessed by the CPU 100c, and the "001110000000" line is possessed by the CPU 110a, the owner (processor) for the requested address is determined.

プロセッサがリモートノードのメインメモリに対してREAD要求を発行した場合には、粗粒度スヌープフィルタ32と細粒度スヌープフィルタ34によってラインの所有者がノード内にいるかをチェックする。アクセス要求が来た時、粗粒度スヌープフィルタと細粒度スヌープフィルタのエントリ登録情報からスヌープの発行先が決まる。   When the processor issues a READ request to the main memory of the remote node, the coarse grain snoop filter 32 and the fine grain snoop filter 34 check whether the owner of the line is in the node. When an access request comes, the snoop issue destination is determined from the entry registration information of the coarse-grained snoop filter and the fine-grained snoop filter.

要求されたアドレスが粗粒度スヌープフィルタ32aの状態情報33に登録されていない場合、要求されているアドレスに対応する粗粒度スヌープフィルタ32aの状態情報33が全て「0」になっていると、何れのプロセッサもそのラインは保持していないと判断することができる。よって、この場合にはスヌープの発行を行わない。
また、要求されたアドレスが粗粒度スヌープフィルタ32aの状態情報33にヒットし、細粒度スヌープフィルタ34aのアドレス格納部35にも登録されているが、状態情報部36にセットされているプロセッサが無かった場合にも、状態情報に登録が無いことからラインの保持者がいないと判断できるので、スヌープの発行は一切行わない。
If the requested address is not registered in the status information 33 of the coarse-grained snoop filter 32a, if the status information 33 of the coarse-grained snoop filter 32a corresponding to the requested address is all “0”, It can be determined that the processor does not hold the line. Therefore, in this case, no snoop is issued.
The requested address hits the state information 33 of the coarse-grained snoop filter 32a and is registered in the address storage unit 35 of the fine-grained snoop filter 34a, but there is no processor set in the state information unit 36. In this case, since there is no registration in the status information, it can be determined that there is no holder of the line, so no snoop is issued.

スヌープを発行する場合とは、要求されたアドレスが粗粒度スヌープフィルタ32aの状態情報33にヒットしたが、細粒度スヌープフィルタ34aのアドレス格納部35にヒットしなかった場合である。この場合には、粗粒度スヌープフィルタ32aに登録されているプロセッサに対してのみスヌープをマルチキャストする。   The case where the snoop is issued is a case where the requested address hits the status information 33 of the coarse-grained snoop filter 32a but does not hit the address storage unit 35 of the fine-grained snoop filter 34a. In this case, the snoop is multicast only to the processors registered in the coarse-grained snoop filter 32a.

また、要求されたアドレスが粗粒度スヌープフィルタ32aの状態情報33に登録されていて、細粒度スヌープフィルタ34aのアドレス格納部35にもヒットして状態情報部36にも登録されている場合には、ラインアドレスに対して保持者の情報まで登録されているので、そのアドレスラインの保持者に対してのみスヌープを発行する。   Further, when the requested address is registered in the state information 33 of the coarse-grained snoop filter 32a, hits the address storage unit 35 of the fine-grained snoop filter 34a, and is registered in the state information unit 36. Since the holder information is registered for the line address, a snoop is issued only to the holder of the address line.

図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 read transaction 170c is issued from the node 100a to the memory of the remote node 100b. A memory access access request 160b is issued from the CPU 110c of the node 100a to the node 100b. First, the node controller 150 is accessed. Here, when accessing the memory “000011000000” of the node 100b, the address and status information are registered as in the coarse-grained snoop filter 32c and the fine-grained snoop filter 34c in FIG.

図9の例は、粗粒度スヌープフィルタ32dではプロセッサ100a、b共にコピーを持っていることを示しているが、細粒度スヌープフィルタ34dにもヒットすると、当該ラインをプロセッサ100c以外の誰も持っていないことを示している。この場合、粗粒度スヌープフィルタ32dの保持情報は、粗粒度スヌープフィルタが管理する同一メモリ領域内の別のキャッシュラインに関する情報であると判断でき、細粒度スヌープフィルタ34dの情報を用いてスヌープを抑止することができる。   The example in FIG. 9 shows that both the processors 100a and 100b have copies in the coarse-grained snoop filter 32d, but when the fine-grained snoop filter 34d is hit, anyone other than the processor 100c has the line. It shows no. In this case, the retained information of the coarse-grained snoop filter 32d can be determined to be information related to another cache line in the same memory area managed by the coarse-grained snoop filter, and the snoop is suppressed using the information of the fine-grained snoop filter 34d. can do.

図10の例は、粗粒度スヌープフィルタ32eの状態情報には登録されているが、細粒度スヌープフィルタ34eにはアドレス登録と保有者の登録が無いことを示している。細粒度スヌープフィルタ34eには登録できるエントリ数に限りがあり、インデックスで競合があったアドレスは、細粒度スヌープフィルタ34eのエントリから上書きされることがある。この場合、粗粒度スヌープフィルタ32eが当該ラインを所有している可能性があることを示しているので、図11のように、スヌープは170a及び170bによりプロセッサ110aと110bへブロードキャストされる。   The example of FIG. 10 shows that the coarse-grained snoop filter 32e is registered in the status information, but the fine-grained snoop filter 34e has no address registration and no owner registration. There is a limit to the number of entries that can be registered in the fine-grained snoop filter 34e, and addresses that have conflicted indexes may be overwritten from entries in the fine-grained snoop filter 34e. In this case, since it indicates that the coarse-grained snoop filter 32e may own the line, the snoop is broadcast to the processors 110a and 110b by 170a and 170b as shown in FIG.

図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 filter 34f. From the registration status of the fine-grained snoop filter 34f, it can be seen that the CPU 100a owns the line with the address “000011000000”, so the snoop 170a is issued to the CPU 110a as shown in FIG.

図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 filter 32g and the fine-grained snoop filter 34g is registered, and the fine-grained snoop filter 34g has a line “000011000000” shared by the CPUs 110a and 110b. In this case, a snoop is issued to each of the CPUs 110a and 110b sharing the line.

起動時又は初期化時にリセット命令を受けるとリセット制御部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 filter 32h, it is necessary to reset the fine-grained snoop filter 34h and purge all the cache.
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 remote node 100b to the node 100a. An access request is issued from the node controller 240 to the CPU 110a, and a snoop is issued via the snoop filter 250 having a global property.

このグローバルスヌープフィルタの構成を図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 filter 70 having a global property is a plurality of memory spaces obtained by dividing the address of the local main memory, and the owner 71 becomes a node. In the figure, R1, R2, and R3 indicate remode node 1 (100b), remode node 2 (100c), and remode node 3 (100d), respectively, and L indicates a local node.

グローバルな性質を持った細粒度スヌープフィルタ75のアドレス格納部72に対する保有者73も同様に、ノードを示している。74はラインが有効かどうかを示すバリッドビットである。フィルタの登録は先の説明と同様に、リモートのプロセッサからリクエストを発行されて来たことに起因して粗粒度スヌープフィルタ70と細粒度スヌープフィルタ75に登録を行う。リモートノードのリクエストを受けたときに、要求されたアドレスが含まれる領域に要求があったノードを粗粒度スヌープフィルタ70に登録し、参照されたアドレスと要求してきたノードを細粒度スヌープフィルタ75に記録する。   Similarly, the holder 73 for the address storage unit 72 of the fine-grained snoop filter 75 having a global property indicates a node. 74 is a valid bit indicating whether or not the line is valid. Similar to the above description, the filter is registered in the coarse-grained snoop filter 70 and the fine-grained snoop filter 75 because a request is issued from a remote processor. When a request from a remote node is received, a node requested in an area including the requested address is registered in the coarse-grained snoop filter 70, and the referenced address and the requested node are registered in the fine-grained snoop filter 75. Record.

図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 node 1 requests the line “000011000000”, it can be seen from the entry information of FIG. 17 that the nodes 2 and 3 are owned. It is registered that the node 1 is owned by the entry in the area from “000000000000” to “000100000000” of the coarse-grained snoop filter 70, and the node “000011000000” is owned by the node 1 of the fine-grained snoop filter 75. sign up. Then, a snoop is issued to the nodes 2 and 3 as shown in FIG.

なお、本発明は上記した実施例に限定されないで、種々変形して実施することができる。例えば、上記実施例では、キャッシュがラインと呼ばれるメモリ量を中心にして構成される場合を前提にしてスヌープの発行制御を行う。しかし、キャッシュがブロック又はページと呼ばれるメモリ量を中心にして構成されることがある。この場合には、上記実施例におけるラインは、ブロック又はページ等の所定のメモリ単位となり、この所定のメモリ単位でスヌープの制御が行われる。これについては格別に説明せずとも容易に理解できよう。   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.

一実施例におけるコンピュータシステムの構成を示す図、The figure which shows the structure of the computer system in one Example. 一実施例における粗粒度スヌープフィルタと細粒度スヌープフィルタを併せ持つスヌープフィルタの構成を示す図、The figure which shows the structure of the snoop filter which has both the coarse grain snoop filter and fine grain snoop filter in one Example, 一実施例における粗粒度スヌープフィルタと細粒度スヌープフィルタの構成を示す図、The figure which shows the structure of the coarse grain snoop filter and fine grain snoop filter in one Example, 一実施例におけるスヌープフィルタの具体的な制御ブロック図、The concrete control block diagram of the snoop filter in one Example, 一実施例におけるセットアソシアティブ方式における動作例を示す図、The figure which shows the operation example in the set associative system in one Example, 一実施例における粗粒度スヌープフィルタと細粒度スヌープフィルタのエントリ登録の動作例を示す図、The figure which shows the operation example of the entry registration of the coarse grain snoop filter and fine grain snoop filter in one Example, 一実施例におけるローカルノードからリモートノードへメモリアクセス要求の動作例を示す図、The figure which shows the operation example of the memory access request | requirement from the local node in one Example to a remote node, 一実施例における初起動時及びリセット時のエントリ登録の動作例を示す図、The figure which shows the operation example of the entry registration at the time of the first starting and reset in one Example. 一実施例における該当するラインがどこにあるか特定できない場合のエントリ例を示す図、The figure which shows the example of an entry when it cannot specify where the applicable line exists in one Example, 一実施例における該当するラインがエントリ内に存在しない場合のエントリ例を示す図、The figure which shows the example of an entry when the applicable line in one Example does not exist in an entry, 一実施例におけるスヌープをブロードキャストする場合の動作例を示す図、The figure which shows the operation example in the case of broadcasting the snoop in one Example. 一実施例における該当ラインのデータをローカルノード内のプロセッサが所持するエントリ例を示す図、The figure which shows the example of an entry which the processor in a local node possesses the data of the applicable line in one Example. 一実施例における細粒度スヌープフィルタの登録情報からラインの保有者のみにスヌープを発行する動作例を示す図、The figure which shows the operation example which issues a snoop only to the owner of a line from the registration information of the fine grain snoop filter in one Example. 一実施例におけるリモートのラインをローカルノード内のプロセッサが共有している場合のエントリ例を示す図、The figure which shows the example of an entry in case the processor in a local node shares the remote line in one Example. 一実施例における初期化時及びリセット時のエントリ例を示す図、The figure which shows the example of an entry at the time of initialization and reset in one Example. 一実施例におけるグローバルスヌープフィルタにおける動作例を示す図、The figure which shows the operation example in the global snoop filter in one Example. 一実施例におけるグローバルスヌープフィルタの構成を示す図。The figure which shows the structure of the global snoop filter in one Example.

符号の説明Explanation of symbols

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)

複数のノードが接続されたコンピュータシステムであって、各ノードはメインメモリと、キャッシュメモリを有する少なくとも1つのプロセッサと、ノード間の制御を行うノードコントローラと、キャッシュコヒーレンスを保つためのスヌープ発行を管理するスヌープフィルタを有し、あるノードのプロセッサは他のノードのメインメモリをアクセスすることができるコンピュータシステムにおいて、
該スヌープフィルタとして、該プロセッサがメモリアクセスして取得したキャッシュの所定単位のアドレスと、該アドレスのメモリデータコピーを何れのプロセッサが持っているかを表す状態情報を管理する細粒度スヌープフィルタと、
メモリ領域をキャッシュの所定単位のサイズより大きい複数メモリ空間に分割して、各メモリ空間に含まれるメモリ空間のデータコピーが、プロセッサのキャッシュエントリ内に存在することを表す状態情報を管理するエントリを全メモリ領域分有する粗粒度スヌープフィルタと、
アクセス要求に伴うキャッシュの所定単位のアドレスと該状態情報を、該細粒度スヌープフィルタ及び該粗粒度スヌープフィルタに登録する登録制御部と、
アクセス要求に伴うデータコピーのキャッシュアドレスと、該アドレスをキャッシュしているプロセッサを示す状態情報について、該細粒度スヌープフィルタ及び粗粒度スヌープフィルタに登録された情報と照合する照合部と、
該照合部による照合の結果に従って、関係するプロセッサに対してスヌープの発行を制御するスヌープ発行制御部と、を有するコンピュータシステム。
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.
複数のノードが接続されたコンピュータシステムであって、各ノードはメインメモリと、キャッシュメモリを有する少なくとも1つのプロセッサと、ノード間の制御を行うノードコントローラと、キャッシュコヒーレンスを保つためのスヌープ発行を管理するスヌープフィルタを有し、あるノードのプロセッサは他のノードのメインメモリをアクセスすることができるコンピュータシステムにおいて、
該スヌープフィルタとして、該ノードのプロセッサがメモリアクセスして取得したキャッシュの所定単位のアドレスと、該アドレスのメモリデータコピーを何れのノードが持っているかを表す状態情報を管理する細粒度スヌープフィルタと、
メモリ領域をキャッシュの所定単位のサイズより大きい複数メモリ空間に分割して、各メモリ空間に含まれるメモリ空間のデータコピーが、ノードのキャッシュエントリ内に存在することを表す状態情報を管理するエントリを全メモリ領域分有する粗粒度スヌープフィルタと、
アクセス要求に伴うキャッシュの所定単位のアドレスと該状態情報を、該細粒度スヌープフィルタ及び該粗粒度スヌープフィルタに登録制御部と、
アクセス要求に伴うデータコピーのキャッシュアドレスと、該アドレスをキャッシュしているプロセッサを示す状態情報について、該細粒度スヌープフィルタ及び粗粒度スヌープフィルタに登録された情報と照合する照合部と、
該照合部による照合の結果に従って、関係するノードに対してスヌープの発行を制御するスヌープ発行制御部と、を有するコンピュータシステム。
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又は2のコンピュータシステム。 3. The computer system according to claim 1, wherein the predetermined unit of the cache is a cache line, block, or page unit. システムの起動時又は初期化時に、前記粗粒度スヌープフィルタ及び前記細粒度スヌープフィルタに登録されたエントリの情報を実質的に無効にするリセット制御部を有することを特徴とする請求項1乃至3のいずれかのコンピュータシステム。 4. The system according to claim 1, further comprising: a reset control unit that substantially invalidates information of the entry registered in the coarse-grained snoop filter and the fine-grained snoop filter when the system is started or initialized. Any computer system. 前記粗粒度スヌープフィルタは、全メモリ空間をキャッシュラインサイズより大きい複数メモリ空間に分割し、複数の各プロセッサがその空間内のラインを一つ以上保持している可能性があることを示す状態情報を登録し、
前記細粒度スヌープフィルタは、キャッシュタグを格納するラインアドレス格納部と、複数の各プロセッサがキャッシュラインを保持しているかを示す状態情報部と、アドレスが有効であることを示すバリッドビットを登録する、ことを特徴とする請求項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.
前記照合部による照合の結果、要求されたアドレスが、前記粗粒度スヌープフィルタの状態情報に登録されていない場合、前記スヌープ発行制御部はスヌープの発行を行わないことを特徴とする請求項5のコンピュータシステム。   6. The snoop issuance control unit does not issue a snoop when the requested address is not registered in the status information of the coarse-grained snoop filter as a result of the collation by the collation unit. Computer system. 前記照合部による照合の結果、要求されたアドレスが、前記粗粒度スヌープフィルタの状態情報にヒットし、前記細粒度スヌープフィルタの該アドレス格納部にも登録されているが、該状態情報部にセットされているプロセッサが無かった場合、前記スヌープ発行制御部はスヌープの発行を行わないことを特徴とする請求項5のコンピュータシステム。   As a result of the collation by the collation unit, the requested address hits the status information of the coarse-grained snoop filter and is registered in the address storage unit of the fine-grain snoop filter, but is set in the status information unit. 6. The computer system according to claim 5, wherein when no processor is used, the snoop issue control unit does not issue a snoop. 前記照合部による照合の結果、要求されたアドレスが、前記粗粒度スヌープフィルタの状態情報にヒットしたが、前記細粒度スヌープフィルタの該アドレス格納部にヒットしなかった場合、前記スヌープ発行制御部は、前記粗粒度スヌープフィルタに登録されているプロセッサに対してのみスヌープをマルチキャストして発行することを特徴とする請求項5のコンピュータシステム。   As a result of the collation by the collation unit, when the requested address hits the status information of the coarse-grained snoop filter but does not hit the address storage unit of the fine-grain snoop filter, the snoop issue control unit 6. The computer system according to claim 5, wherein a snoop is issued by multicast only to processors registered in the coarse-grained snoop filter. 前記照合部による照合の結果、要求されたアドレスが、前記粗粒度スヌープフィルタの状態情報に登録されていて、かつ前記細粒度スヌープフィルタの該アドレス格納部にヒットして該状態情報部にも登録されている場合、前記スヌープ発行制御部は、該アドレスラインの保持者となるプロセッサに対してのみスヌープを発行することを特徴とする請求項5のコンピュータシステム。   As a result of the collation by the collation unit, the requested address is registered in the state information of the coarse-grained snoop filter, and hits the address storage unit of the fine-grain snoop filter and registers in the state information unit. 6. The computer system according to claim 5, wherein the snoop issuance control unit issues a snoop only to a processor serving as a holder of the address line.
JP2007155108A 2007-06-12 2007-06-12 Computer system Pending JP2008310414A (en)

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)

* Cited by examiner, † Cited by third party
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

Cited By (6)

* Cited by examiner, † Cited by third party
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)