JP2009245323A - System and method for reducing latency - Google Patents
System and method for reducing latency Download PDFInfo
- Publication number
- JP2009245323A JP2009245323A JP2008093106A JP2008093106A JP2009245323A JP 2009245323 A JP2009245323 A JP 2009245323A JP 2008093106 A JP2008093106 A JP 2008093106A JP 2008093106 A JP2008093106 A JP 2008093106A JP 2009245323 A JP2009245323 A JP 2009245323A
- Authority
- JP
- Japan
- Prior art keywords
- request
- directory
- control unit
- snoop
- node
- 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.)
- Withdrawn
Links
Images
Abstract
Description
本発明は、レイテンシ短縮方式及び方法に関する。 The present invention relates to a latency shortening method and method.
ある関連技術においては、コヒーレンシを保障する制御を簡単化するために、メモリアドレスに関するキャッシュの管理を1個のディレクトリで行い、受信順にリクエストを処理する。しかしながら、この関連技術のように、1個のディレクトリでキャッシュの管理を行うようにすると次のような問題がある。すなわち、ディレクトリをメモリコントローラのところに置くと、他ノードからの距離が遠くなり、グローバルスイッチのところに置くと、自ノード内のプロセッサからの距離が遠くなる。よって、ディレクトリの位置により、自ノード又は他ノードからのリクエスト処理のレイテンシが悪化するという問題である。 In a related technique, in order to simplify control for ensuring coherency, cache management related to memory addresses is performed in one directory, and requests are processed in the order received. However, if the cache is managed by one directory as in this related technique, there is the following problem. That is, when the directory is placed at the memory controller, the distance from other nodes is increased, and when the directory is placed at the global switch, the distance from the processor in the own node is increased. Therefore, there is a problem that the latency of request processing from the own node or other nodes deteriorates depending on the directory position.
関連技術1の説明図である図1A及び図1Bと、関連技術2の説明図である図2A及び図2Bとを用いて、リクエスト処理の経路を説明する。関連技術1は、ディレクトリがメモリコントローラの所にのみ接続されている構成である。関連技術2は、ディレクトリがグローバルスイッチの所にのみ接続されている構成である。 The request processing path will be described with reference to FIGS. 1A and 1B which are explanatory diagrams of the related technology 1 and FIGS. 2A and 2B which are explanatory diagrams of the related technology 2. FIG. Related Art 1 is a configuration in which a directory is connected only to a memory controller. Related technology 2 is a configuration in which a directory is connected only to a global switch.
図1A,図2Aは、プロセッサ202からメモリ140へ向けてリクエストが発行された場合において、プロセッサ302のキャッシュに有効なデータがあるケースの説明図である。図1Aは、関連技術1におけるリクエスト発行からデータ受信までの経路を示し、図2Aは、関連技術2におけるリクエスト発行からデータ受信までの経路を示している。
FIG. 1A and FIG. 2A are explanatory diagrams of a case where there is valid data in the cache of the
図1Aの関連技術1における経路を説明する。プロセッサ202からリクエストが発行されると、このリクエストは、ノード200a内のローカルスイッチ210からグローバルスイッチ270を通り、メモリ140が存在するノード100aのグローバルスイッチ170を経由して、ローカルスイッチ110を通りメモリ・ディレクトリ制御部120に入る。メモリ・ディレクトリ制御部120は、メモリ140にリクエストを出すのと同時にディレクトリ130を索引し、キャッシュに有効なデータを持っているプロセッサ302に対してスヌープ(SNOOP:キャッシュ制御用のリクエスト)を発行する。このスヌープは、ローカルスイッチ110、グローバルスイッチ170を通り、プロセッサ302が存在するノード300aのグローバルスイッチ370、ローカルスイッチ310を通りプロセッサ302に入る。
A route in the related technique 1 of FIG. 1A will be described. When a request is issued from the
スヌープを受信するプロセッサ302が実際に有効なキャッシュデータを保持している場合には、キャッシュデータを発行元のプロセッサ202へ転送し、さらにスヌープに対するレスポンスをメモリ・ディレクトリ制御部120へ返却する。キャッシュデータは、ローカルスイッチ310、グローバルスイッチ370、リクエスト元のグローバルスイッチ270、ローカルスイッチ210を通りプロセッサ202へ転送される。レイテンシはリクエスト発行からデータ受信までであり、メモリ140に対するリクエストおよびプロセッサ302からのレスポンスに関してはレイテンシに見えてこないため経路には表示していない。
If the
図2Aの関連技術2における経路の説明をする。プロセッサ202からリクエストが発行されると、このリクエストは、ノード200b内のローカルスイッチ210からグローバルスイッチ・ディレクトリ制御部290を通り、メモリ140が存在するノード100aのグローバルスイッチ・ディレクトリ制御部190に入る。グローバルスイッチ・ディレクトリ制御部190は、メモリ140にリクエストを発行するのと同時にディレクトリ160を索引し、キャッシュに有効なデータを保持しているプロセッサ302に対してスヌープを発行する。このスヌープは、プロセッサ302が所属するノード300bのグローバルスイッチ・ディレクトリ制御部390、ローカルスイッチ310を通りプロセッサ302に入る。
The route in the related technique 2 of FIG. 2A will be described. When a request is issued from the
スヌープを受信するプロセッサ302が実際に有効なキャッシュデータを保持している場合には、キャッシュデータを発行元のプロセッサ202へ転送し、さらにスヌープに対するレスポンスをグローバルスイッチ・ディレクトリ制御部190へ返却する。キャッシュデータは、ローカルスイッチ310、グローバルスイッチ・ディレクトリ制御部390、リクエスト元のグローバルスイッチ・ディレクトリ制御部290、ローカルスイッチ210を通りプロセッサ202へ転送される。レイテンシは、リクエスト発行からデータ受信までであり、メモリ140に対するリクエストおよびプロセッサ302からのレスポンスに関してはレイテンシに見えてこないため経路には表示していない。
When the
図1B,図2Bは、プロセッサ102からメモリ140へ向けてリクエストが発行された場合において、プロセッサ101のキャッシュに有効なデータがあるケースの説明図である。図1Bは、関連技術1におけるリクエスト発行からデータ受信までの経路を示し、図2Bは、関連技術2におけるリクエスト発行からデータ受信までの経路を示している。
FIGS. 1B and 2B are explanatory diagrams of a case where there is valid data in the cache of the
図1Bの関連技術1における経路の説明をする。プロセッサ102からリクエストが発行されると、このリクエストは、ノード100a内のローカルスイッチ110からメモリ・ディレクトリ制御部120へ入る。メモリ・ディレクトリ制御部120は、メモリ140にリクエストを発行するのと同時にディレクトリ130を索引し、キャッシュに有効なデータを保持しているプロセッサ101に対してスヌープを発行する。このスヌープは、ローカルスイッチ110を通りプロセッサ101に入る。スヌープを受信するプロセッサ101が実際に有効なキャッシュデータを保持していた場合には、キャッシュデータを発行元のプロセッサ102へ転送し、さらにスフープに対するレスポンスをメモリ・ディレクトリ制御部120に対して返却する。キャッシュデータは、ローカルスイッチ110を通りプロセッサ102へ転送される。レイテンシはリクエスト発行からデータの受信までであり、メモリ140対するリクエストおよびプロセッサ101からのレスポンスに関してはレイテンシに見えてこないため経路には表示していない。
The route in the related technique 1 of FIG. 1B will be described. When a request is issued from the
図2Bの関連技術2における経路の説明をする。プロセッサ102からリクエストが発行されると、このリクエストは、ノード100a内のローカルスイッチ110からメモリ制御部180に入る。メモリ制御部180は、メモリ140にリクエストを発行するのと同時に、ディレクトリ160を制御しているグローバルスイッチ・ディレクトリ制御部190にスヌープを発行する。スヌープは、ローカルスイッチ110を通り、グローバルスイッチ・ディレクトリ制御部190に入る。スヌープを受信すると、グローバルスイッチ・ディレクトリ制御部190は、ディレクトリ160を索引し、キャッシュに有効なデータを保持しているプロセッサ101に対してスヌープを発行する。このスヌープは、ローカルスイッチ110を通りプロセッサ101に入る。スヌープを受信するプロセッサ101が実際に有効なキャッシュデータを保持していた場合には、キャッシュデータを発行元のプロセッサ102へ転送し、さらにスヌープに対するレスポンスをグローバルスイッチ・ディレクトリ制御部190に返却する。キャッシュデータは、ローカルスイッチ110を通りプロセッサ102へ転送される。レイテンシはリクエスト発行からデータ受信までであり、メモリ140に対するリクエストおよびプロセッサ101からのレスポンスに関してはレイテンシに見えてこないため経路には表示していない。
The route in the related technique 2 in FIG. 2B will be described. When a request is issued from the
図1Aと図2Aとを対比すると明らかなように、他ノードからのリクエストに関しては、関連技術2の方がディレクトリまでの距離が近い分、関連技術1に比べてレイテンシが短縮される。反面、図1Bと図2Bとを対比すると明らかなように、自ノード内のリクエストに関しては、関連技術2は、関連技術1に比べてディレクトリまでの距離が遠くなるため、レイテンシが悪化する。 As is clear from the comparison between FIG. 1A and FIG. 2A, with regard to requests from other nodes, the latency of the related technology 2 is shorter than that of the related technology 1 because the distance to the directory is shorter. On the other hand, as is clear from the comparison between FIG. 1B and FIG. 2B, regarding the request in the own node, the related technology 2 has a longer distance to the directory than the related technology 1, and thus the latency deteriorates.
そこで、ディレクトリを2箇所に設けて、自ノード内におけるリクエスト処理又は他ノードからのリクエスト処理のいずれか一方に生じ得るレイテンシの悪化を防ぐことが考え得る。 Thus, it is conceivable to provide directories at two locations to prevent deterioration in latency that may occur in either request processing within the own node or request processing from another node.
図3に、ディレクトリを2箇所に置いた関連技術3におけるリクエスト処理とスヌープ処理との説明図を示す。図3では、一つのノード100cのみを示しているが、このノード100cは、グローバルスイッチ・ディレクトリ制御部190を介して、同様の構成を有する他のノードと接続されている。図3において、ノード100cは、複数のプロセッサ101,102と、自ノード内のキャッシュ状態を管理するディレクトリ130と、メモリ140と、ディレクトリ130及びメモリ140の制御を行うメモリ・ディレクトリ制御部120と、他ノードのキャッシュ状態を管理するディレクトリ160と、ノード間のルーティングとディレクトリ160の制御を行うグローバルスイッチ・ディレクトリ制御部190と、これらをノード内で繋ぐローカルスイッチ110とを有している。
FIG. 3 is an explanatory diagram of request processing and snoop processing in the related technique 3 in which two directories are placed. Although only one
プロセッサ102からメモリ140へ向けてリクエストが発行された場合において、他ノードに存在するプロセッサのキャッシュに有効なデータがあるケースを考える。自ノード内のプロセッサ102から発行されるリクエスト(実線矢印)は、ローカルスイッチ110を介して、メモリ・ディレクトリ制御部120へ到達する。メモリ・ディレクトリ制御部120は、メモリ140へリクエストを発行するのと同時に、ディレクトリ130を索引し、キャッシュ状態が有効な他ノードのプロセッサに対してスヌープを発行する(実線丸印)。
When a request is issued from the
一方、他ノードに所属するプロセッサからメモリ140へ向けてリクエストが発行された場合において、別のノードに所属するプロセッサのキャッシュに有効なデータがあるケースを考える。他ノードからのリクエスト(点線矢印)は、自ノード以外のキャッシュを制御するグローバルスイッチ・ディレクトリ制御部190によって受信される。グローバルスイッチ・ディレクトリ制御部190は、メモリ140へリクエストを発行するのと同時に、ディレクトリ160を索引し、キャッシュ状態が有効な別のノードに所属するプロセッサに対してスヌープを発行する(点線丸印)。
On the other hand, when a request is issued from a processor belonging to another node to the
図3を用いて、関連技術3の問題点を説明する。別のノードに存在するプロセッサのキャッシュに有効なデータがある場合を考える。このデータに対して、自ノード100c内のプロセッサ102からのリクエスト発行(実線矢印)と、他ノードからのリクエスト受信(点線矢印)とが同じようなタイミングで起こるとする。
The problem of the related technique 3 is demonstrated using FIG. Consider the case where there is valid data in the cache of a processor residing on another node. Assume that for this data, a request issuance (solid arrow) from the
このとき、メモリ・ディレクトリ制御部120は、プロセッサ102のリクエスト(実線矢印)、他ノードからのリクエスト(点線矢印)の順でリクエストを受信し、処理する。メモリ・ディレクトリ制御部120は、まず、プロセッサ102からのリクエスト(実線矢印)の処理を開始し、プロセッサ102からのリクエストに対するスヌープ(実線丸印)の返答を待つ。この間、他ノードからのリクエスト(点線矢印)の処理は待たされる。
At this time, the memory /
一方、グローバルスイッチ・ディレクトリ制御部190は、他ノードからのリクエストに対するスヌープ(点線丸印)、自ノード内のリクエストに対するスヌープ(実線丸印)の順でスヌープを受信し、処理する。グローバルスイッチ・ディレクトリ制御部190は、まず、他ノードからのリクエストに対するスヌープ(点線丸印)の処理を開始し、別のノードへスヌープ(点線丸印)を発行する。その後、別のノードからスヌープ(点線丸印)に対するレスポンスを受信することになるが、メモリ140へ発行したリクエスト(点線矢印)の返答を待って、スヌープ(点線丸印)の処理を終了する。この間、自ノード内のリクエストに対するスヌープ(実線丸印)の処理は待たされる。
On the other hand, the global switch /
以上説明したように、メモリ・ディレクトリ制御部120は、グローバルスイッチ・ディレクトリ制御部190のところで待ち状態になるスヌープ(実線丸印)の返答を受け取ることができず、また、グローバルスイッチ・ディレクトリ制御部190は、メモリ・ディレクトリ制御部120のところで待ち状態になるリクエスト(点線矢印)の返答を受け取ることができない。
As described above, the memory /
階層メモリのコヒーレンシに関連する技術が特許文献に記載されている。特開平8−16474号公報(特許文献1参照)には、マルチプロセッサシステムの発明が記載されている。マルチプロセッサシステムは、それぞれキャッシュメモリを有する複数のプロセッサと、複数のプロセッサのそれぞれに接続されたローカルメモリと、複数のプロセッサ及びローカルメモリに接続された通信制御装置とを含むクラスタを複数具備する。複数のクラスタは、互いに通信制御装置を介して接続される。通信制御装置は、記憶手段と、キャッシュメモリ内容一致化範囲判定手段とを有する。記憶手段は、自クラスタのローカルメモリのデータのうち、他クラスタのキャッシュメモリに登録されたデータに関する情報を記憶する。キャッシュメモリ内容一致化範囲判定手段は、記憶手段に基づきキャッシュメモリ内容を一致化すべき範囲を判定する。 Technologies related to hierarchical memory coherency are described in the patent literature. Japanese Patent Laying-Open No. 8-16474 (see Patent Document 1) describes an invention of a multiprocessor system. The multiprocessor system includes a plurality of clusters each including a plurality of processors each having a cache memory, a local memory connected to each of the plurality of processors, and a plurality of processors and a communication control device connected to the local memory. The plurality of clusters are connected to each other via a communication control device. The communication control apparatus includes a storage unit and a cache memory content matching range determination unit. The storage means stores information related to data registered in the cache memory of the other cluster among the data of the local memory of the own cluster. The cache memory content matching range determination means determines a range in which the cache memory contents should be matched based on the storage means.
特開平11−134312号公報(特許文献2参照)には、分散共有メモリ多重プロセッサシステムの発明が記載されている。分散共有メモリ多重プロセッサシステムは、複数のプロセッサノードと、リングバスとを具備する。複数のプロセッサノードは、リング形態に配列され、複数のプロセッサノードのうちの何れか一つが1つのデータブロックに対する要求信号を発生し、残余プロセッサノードが自分の内部要素をスヌーピングし、残余プロセッサノードのうちの何れか一つがデータブロックを発生する。リングバスは、複数のプロセッサノードをリング形態に結び、要求信号を他のプロセッサノードの各々に同報通信し、要求信号を発生したプロセッサノードへデータブロックを単一通信する経路を提供する。 Japanese Patent Laid-Open No. 11-13412 (see Patent Document 2) describes an invention of a distributed shared memory multiprocessor system. The distributed shared memory multiprocessor system includes a plurality of processor nodes and a ring bus. The plurality of processor nodes are arranged in a ring form, and any one of the plurality of processor nodes generates a request signal for one data block, the remaining processor nodes snoop their own internal elements, and the remaining processor nodes Any one of them generates a data block. The ring bus connects a plurality of processor nodes into a ring form, broadcasts a request signal to each of the other processor nodes, and provides a path for a single communication of data blocks to the processor node that generated the request signal.
特開2006−277762号公報(特許文献3参照)には、データ処理システムの発明が記載されている。データ処理システムは、複数のプロセッサと、複数のキャッシュと、ディレクトリと、制御装置とを備える。複数のキャッシュは、複数のプロセッサのそれぞれに対応して設けられ、各々複数のキャッシュ・ライン・エントリを保存するように構築される。ディレクトリは、複数のキャッシュ中のキャッシュ・ライン・エントリ状態を把握するための状態情報を保持する。制御装置は、ディレクトリに含まれる状態情報の読み出し及び書き込みを行う。ディレクトリの第1の部分は、複数のキャッシュ・ライン・エントリの第1サブセットに関する一時的状態情報を保持する。ディレクトリの第2部分が。複数のキャッシュ・ライン・エントリの第2サブセットに関する非一次的状態を保持する。 Japanese Patent Laying-Open No. 2006-277762 (see Patent Document 3) describes an invention of a data processing system. The data processing system includes a plurality of processors, a plurality of caches, a directory, and a control device. A plurality of caches are provided corresponding to each of the plurality of processors, and are constructed to store a plurality of cache line entries. The directory holds state information for grasping cache line entry states in a plurality of caches. The control device reads and writes status information included in the directory. The first portion of the directory holds temporary state information regarding a first subset of the plurality of cache line entries. The second part of the directory. Maintain non-primary state for the second subset of the plurality of cache line entries.
本発明の課題は、一つのノード内にキャッシュ状態を管理するディレクトリを複数設けると共に、リクエストの処理順とスヌープの処理順とが異なる場合でも、コヒーレンシを保障できるレイテンシ短縮方式、及び、レイテンシ短縮方法を提供することである。 An object of the present invention is to provide a plurality of directories for managing the cache state in one node, and a latency shortening method and a latency shortening method capable of ensuring coherency even when the request processing order and the snoop processing order are different Is to provide.
本発明の一つ目のアスペクトによるレイテンシ短縮方式は、第一のプロセッサと、メモリと、第一のディレクトリと、第二のディレクトリと、第一のディレクトリ制御部と、第二のディレクトリ制御部とを具備する。第一のプロセッサは、自ノードに所属する。メモリは、第一のプロセッサと、他ノードに所属する第二のプロセッサとに共有される。第一のディレクトリは、自ノードのキャッシュ状態を管理する。第二のディレクトリは、他ノードのキャッシュ状態を管理する。第一のディレクトリ制御部は、自ノード内で発行されるリクエストを処理し、メモリのアドレスを指定する第一のリクエストを受信した場合には、第一のディレクトリを索引する。第二のディレクトリ制御部は、他ノードから発行されるリクエストを処理し、メモリのアドレスを指定する第二のリクエストを受信した場合には、第二のディレクトリを索引すると共に、第二のリクエストを処理する場合に、他のリクエスト又はスヌープを受信したときには、アドレスが競合するか否かを調べることによって、コヒーレンシを保障するための所定の制御を行う。 The latency reduction method according to the first aspect of the present invention includes a first processor, a memory, a first directory, a second directory, a first directory control unit, and a second directory control unit. It comprises. The first processor belongs to its own node. The memory is shared by the first processor and the second processor belonging to another node. The first directory manages the cache state of the own node. The second directory manages the cache state of other nodes. The first directory control unit processes a request issued in its own node, and when receiving a first request designating a memory address, the first directory control unit indexes the first directory. When the second directory control unit processes a request issued from another node and receives a second request for specifying a memory address, the second directory control unit indexes the second directory and sends the second request. In the case of processing, when another request or snoop is received, predetermined control for ensuring coherency is performed by checking whether or not the address conflicts.
本発明の二つ目のアスペクトによるレイテンシ短縮方法は、第一のディレクトリを設けることと、第二のディレクトリを設けることと、第一のディレクトリ制御部を設けることと、第二のディレクトリ制御部を設けることと、第一のリクエストを処理することと、第三のリクエストを処理することとを具備する。第一のディレクトリを設けることにおいては、自ノードのキャッシュ状態を管理する第一のディレクトリを設ける。第二のディレクトリを設けることにおいては、他ノードのキャッシュ状態を管理する第二のディレクトリを設ける。第一のディレクトリ制御部を設けることにおいては、第一のディレクトリを索引する第一のディレクトリ制御部を設ける。第二のディレクトリ制御部を設けることにおいては、第二のディレクトリを索引する第二のディレクトリ制御部を設ける。第一のリクエストを処理することにおいては、自ノードに所属する第一のプロセッサと、他ノードに所属する第二のプロセッサとに共有されるメモリのアドレスを指定する第一のリクエストが自ノード内で発行されたときに、第一のディレクトリ制御部により、メモリへ第二のリクエストを発行し、第一のディレクトリを索引し、第一のリクエストを処理する。第三のリクエストを処理することにおいては、メモリのアドレスを指定する第三のリクエストが他ノードから発行されたときに、第二のディレクトリ制御部により、メモリへ第四のリクエストを発行し、第二のディレクトリを索引すると共に、他のリクエスト又はスヌープを受信した場合には、アドレスが競合するか否かを調べることによって、コヒーレンシを保障するための所定の制御を行い、第三のリクエストを処理する。 The latency reduction method according to the second aspect of the present invention includes providing a first directory, providing a second directory, providing a first directory control unit, and providing a second directory control unit. Providing, processing the first request, and processing the third request. In providing the first directory, a first directory for managing the cache state of the own node is provided. In providing the second directory, a second directory for managing the cache state of another node is provided. In providing the first directory control unit, a first directory control unit for indexing the first directory is provided. In providing the second directory control unit, a second directory control unit for indexing the second directory is provided. In processing the first request, the first request specifying the address of the memory shared by the first processor belonging to the own node and the second processor belonging to the other node is in the own node. The first directory control unit issues a second request to the memory, indexes the first directory, and processes the first request. In processing the third request, when the third request specifying the memory address is issued from another node, the second directory control unit issues the fourth request to the memory, When the second directory is indexed and another request or snoop is received, the third request is processed by performing predetermined control to ensure coherency by checking whether the address conflicts or not. To do.
本発明によれば、一つのノード内にキャッシュ状態を管理するディレクトリを複数設けると共に、リクエストの処理順とスヌープの処理順とが異なる場合でも、コヒーレンシを保障できるレイテンシ短縮方式、及び、レイテンシ短縮方法を提供することができる。 According to the present invention, there are provided a plurality of directories for managing the cache state in one node, and a latency reduction method and a latency reduction method capable of ensuring coherency even when the request processing order and the snoop processing order are different. Can be provided.
本発明を実施するための最良の形態の一つについて、図面を参照して詳細に説明する。図4の構成図を参照すると、本発明による一つの実施の形態では、共有メモリを含む多数のマルチプロセッサノード100,200,300が、グローバルスイッチ150,250,350を介して接続されている。各ノード100,200,300は、プロセッサ101,102,201,202,301,302と、ローカルスイッチ110,210,310と、メモリ・ディレクトリ制御部120,220,320と、メモリ140,240,340と、ディレクトリ130,160,230,260,330,360と、グローバルスイッチ・ディレクトリ制御部150,250,350とをそれぞれ含んでいる。
One of the best modes for carrying out the present invention will be described in detail with reference to the drawings. Referring to the configuration diagram of FIG. 4, in one embodiment according to the present invention, a multiplicity of
図4において、3つのノード100,200,300内の構成は同様であるため、1つのノード100に関して各ブロックの機能説明を行うことにする。ノード100において、ローカルスイッチ110は、プロセッサ101,102と、メモリ・ディレクトリ制御部120と、グローバルスイッチ・ディレクトリ制御部150とに接続されている。ローカルスイッチ110は、リクエスト、スヌープ、スヌープに対する応答(本願において、レスポンスという。)、リクエストに対する応答(本願において、リプライという。)を、これらに含まれる宛て先データに従ってルーティングする。
In FIG. 4, since the configurations in the three
メモリ・ディレクトリ制御部120は、メモリ140に対する全てのリクエストを受信する。リクエストを受信すると、メモリ・ディレクトリ制御部120は、メモリ140へリクエストを発行すると共に、ディレクトリ130を索引して、有効なキャッシュがある場合には、対象となる自ノード内のプロセッサ101,102又は自ノード内のグローバルスイッチ・ディレクトリ制御部150へスヌープを発行する。その後、メモリ・ディレクトリ制御部120は、スヌープに対するレスポンスと、メモリ140に発行したリクエストに対するリプライとが揃ったところで、リクエストを発行したプロセッサに対して、そのリクエストに対するリプライを返却する。リプライの返却によって、リクエストの処理を終了する。
The memory /
また、メモリ・ディレクトリ制御部120は、コヒーレンシを保障する為の制御として、グローバルスイッチ・ディレクトリ制御部150からキャンセル通知を受信する。キャンセル通知を受信すると、メモリ・ディレクトリ制御部120は、一緒に送られてくるキャンセル対象リクエストの識別子IDで、バッファ内に格納されているリクエストと一致比較を行う。一致した場合、そのリクエストをキャンセルする。
In addition, the memory /
ディレクトリ130,160は、キャッシュ状態を管理している。メモリ・ディレクトリ制御部120に接続されているディレクトリ130は、ノード100内のキャッシュ状態を管理している。グローバルスイッチ・ディレクトリ制御部150に接続されているディレクトリ160は、他ノード200,300のキャッシュ状態を、すなわち、他ノード200,300に所属するプロセッサ201,202,301,302のキャッシュ状態を管理している。ノード100内のキャッシュ状態には、ノード100内のプロセッサ101,102のキャッシュ状態と、ノード100内のグローバルスイッチ・ディレクトリ制御部150のキャッシュ状態、すなわち、他ノード200,300のプロセッサ201,202,301,302のキャッシュ状態とがある。
The
グローバルスイッチ・ディレクトリ制御部150は、他ノード200,300のグローバルスイッチ・ディレクトリ制御部250,350と接続され、リクエスト、スヌープ、レスポンス、リプライを、これらに含まれる宛て先データに従ってルーティングする。グローバルスイッチ・ディレクトリ制御部150は、メモリ・ディレクトリ制御部120からスヌープを受信したら、ディレクトリ160を索引する。ディレクトリ160の索引により、有効なキャッシュがある場合には、対象となるプロセッサに対してスヌープを発行する。その後、キャッシュデータが対象となるプロセッサに転送されると、メモリ・ディレクトリ制御部120へスヌープに対するレスポンスを返却する。
The global switch /
同様に、グローバルスイッチ・ディレクトリ制御部150は、他ノード200,300のグローバルスイッチ・ディレクトリ制御部250,350からリクエストを受信したら、ディレクトリ160を索引する。ディレクトリ160の索引により、有効なキャッシュがある場合には、対象となるプロセッサに対してスヌープを発行する。その後、スヌープに対するレスポンスと、メモリ140に発行したリクエストに対するリプライが揃ったところで、リクエストを発行した他ノードのプロセッサに対して、リクエストに対するリプライを返却する。更に、グローバルスイッチ・ディレクトリ制御部150は、発明の背景の欄で挙げたリクエストの処理順とスヌープの処理順が異なるケースのコヒーレンシ保障を実現している。
Similarly, when the global switch /
次に、グローバルスイッチ・ディレクトリ制御部150のコヒーレンシを保障する為の制御を行っている部分に関する詳細な構成について説明する。図5は、本実施の形態におけるグローバルスイッチ・ディレクトリ制御部150の構成説明図である。図5において、グローバルスイッチ・ディレクトリ制御部150は、調停回路151,158と、アドレス一致回路152と、キャンセル判定回路153と、制御レジスタ154と、メッセージ格納バッファ155と、再送バッファ156と、メッセージ発行・生成回路157とを有している。
Next, a detailed configuration of a part that performs control for ensuring coherency of the global switch /
調停回路151は、ローカルスイッチ110からのメッセージと他ノード200,300からのメッセージとを調停し、1つに絞っている。ここで、メッセージは、リクエスト、リプライ、スヌープ、及び、レスポンスを総称した用語である。なお、リクエストに対するリプライは、対応するリクエストと同一のエントリに格納され、スヌープに対するレスポンスは、対応するスヌープと同一のエントリに格納される。
The
アドレス一致回路152は、調停回路151で1つに絞られたメッセージに対して、メッセージ格納バッファ155に格納されている先行処理中のリクエスト又はスヌープとアドレス一致比較を行う。アドレス一致回路152は、一致比較の結果をキャンセル判定回路153に通知する。アドレスは、共有されるメモリ140のアドレスであり、アドレスが一致するリクエスト又はスヌープが発見された場合には、コヒーレンシーを保障するための制御を行う。
The
キャンセル判定回路153は、アドレス一致回路152からアドレスの比較結果を受信する。一致無しの場合、制御レジスタ154の更新及びメッセージ格納バッファ155への格納を行う。一致有りの場合であって、メッセージがレスポンスやリプライの場合には、同様に、制御レジスタ154の更新及びメッセージ格納バッファ155への格納を行う。
The cancel determination circuit 153 receives the address comparison result from the
一致有りの場合であって、メッセージがリクエストの場合には、そのリクエストを再送バッファ156へ格納する。これは、アドレスが一致した後続のリクエストをメッセージ格納バッファ155に登録しても、コヒーレンシを維持するために、先行するリクエストと並列に処理を始めることができないためである。それならば、アドレス一致のリクエストをメッセージ格納バッファ155に登録せずに、アドレス一致のリクエストの後に続くアドレス不一致のリクエストを優先的にメッセージ格納バッファ155に登録するようにし、先行するリクエストの処理が完了するまで待つことなく、アドレス不一致のリクエストの処理を開始したほうが性能上良くなるためである。再送バッファ156は、アドレス一致のリクエストを格納すると、リクエスト発行元へ、リクエストを出し直すように通知する。
If there is a match and the message is a request, the request is stored in the
一致有りの場合であって、メッセージがスヌープの場合には、制御レジスタ154を更新し、そのスヌープをメッセージ格納バッファ155へ格納する。スヌープとアドレスが一致する先行リクエストのエントリについて、制御レジスタ154の競合フラグをオンにし、かつ、アドレス一致エントリに、後続スヌープのエントリ番号を登録する。このケースは、発明の背景の欄で説明したように、メモリ・ディレクトリ制御部120におけるリクエストの処理順と、グローバルスイッチ・ディレクトリ制御部190におけるスヌープの処理順とが異なるケースである。メモリ・ディレクトリ制御部120は、現在処理中のリクエストに対するスヌープを発行した後、そのスヌープに対するレスポンスを返却されないと、レスポンス返却待ちとなり、デットロックしてしまう。そのため、本実施の形態におけるグローバルスイッチ・ディレクトリ制御部150では、後続スヌープが先行リクエストとアドレス一致になった場合であっても、その後続スヌープをメッセージ格納バッファ155へ登録する。そして、先行リクエストのスヌープに対するレスポンスが届いた後に、後続スヌープの処理を開始するようにする。
If there is a match and the message is a snoop, the
制御レジスタ154は、メッセージ格納バッファ155に格納された各リクエスト又はスヌープを処理する際に必要となるフラグ情報等がエントリ分用意されている。フラグ情報等には、エントリ有効フラグ、発行要求フラグ、メッセージ発行済フラグ、レスポンス受信フラグ、リプライ受信フラグ、データ転送フラグ、競合フラグ、アドレス一致エントリが含まれる。
In the
メッセージ格納バッファ155は、多数のエントリに区分されたバッファである。各エントリに、リクエスト及びスヌープを格納すると共に、スヌープを格納したエントリにそのスヌープに対するレスポンスを格納し、リクエストを格納したエントリにそのリクエストに対するリプライを格納する。
The
再送バッファ156は、アドレス一致有りの場合であって、メッセージがリクエストの場合に、そのリクエストが格納される。再送バッファ156は、リクエスト発行元に対して、リクエストの再送指示を行う機能も有している。
The
メッセージ発行・生成回路157は、制御レジスタ154の発行要求フラグを参照し、発行要求フラグがオンになっているエントリを検索する。そして、発行要求フラグがオンになっているエントリについて、制御レジスタ154のフラグ情報等、及び、メッセージ格納バッファ155のエントリデータを読み出す。また、ディレクトリ160を索引し、及び更新すると共に、制御レジスタ154のフラグ情報等に基づいて、次に発行するメッセージがリクエスト、スヌープ、レスポンス、リプライのどれかを特定し、そのメッセージを生成する。
The message issue /
調停回路158は、メッセージ発行・生成回路157から送出される他ノード200,300行きの通常のメッセージと、再送バッファ156から送出される再送指示のメッセージとを調停し、1つに絞っている。
The
次に、図5のグローバルスイッチ・ディレクトリ制御部の動作について、図6、図7のフローチャートを参照して説明する。図6は、他ノード200,300からリクエストを受信した時の動作説明図である。図6において、グローバルスイッチ・ディレクトリ制御部150が、他ノード200,300からリクエストを受信すると、アドレス一致回路152は、アドレス比較を行う(図6のS1)。アドレス一致無しの場合は、メッセージ格納バッファ155へリクエストを登録し、制御レジスタ154のエントリ有効フラグと発行要求フラグとをオンにする(図6のS2)。
Next, the operation of the global switch / directory control unit of FIG. 5 will be described with reference to the flowcharts of FIGS. FIG. 6 is an operation explanatory diagram when a request is received from the
メッセージ発行・生成回路157は、制御レジスタ154を参照し、発行要求フラグがオンになっているエントリを検索する。発行要求フラグがオンになっているエントリについて、制御レジスタ154から各フラグ情報等を読み出し、また、メッセージ格納バッファ155からエントリデータを読み出し、リクエストの生成と発行、更にはディレクトリ160の索引を行う(図6のS3)。ここで、メモリ140へのリクエスト生成時に、リクエスト発行元をグローバルスイッチ・ディレクトリ制御部150とする。メッセージ発行・生成回路157は、メモリ・ディレクトリ制御部120に対して、他ノード200,300から発行されたリクエストを、全てグローバルスイッチ・ディレクトリ制御部150から発行されたリクエストと見せる。このようにして、他ノード200,300から発行されたリクエストに対するスヌープが、グローバルスイッチ・ディレクトリ制御部150に戻ってこないようにする。
The message issuing /
メッセージ発行・生成回路157は、ディレクトリ160の索引結果を参照し(図6のS4)、有効なキャッシュがあった場合には、そのキャッシュデータを保持する他ノードのプロセッサに対してスヌープを発行する(図6のS5)。スヌープを発行すると、制御レジスタ154の発行要求フラグをオフ、メッセージ発行済フラグをオンにする。メモリ140へ発行したリクエストに対するリプライと、他ノード200,300へ発行したスヌープに対するレスポンスとは非同期で返却される。グローバルスイッチ・ディレクトリ制御部150は、メモリ140へ発行したリクエストに対するリプライを受信したら、ディレクトリ160の更新を指示し、制御レジスタ154のリプライ受信フラグをオンにする。同様に、他ノードへ発行したスヌープに対するレスポンスを受信したら、ディレクトリ160の更新を指示し、制御レジスタ154のレスポンス受信フラグをオンにする。
The message issuing /
スヌープ発行後、メッセージ発行・生成回路157は、制御レジスタ154のレスポンス受信フラグを参照し、オフの間はオンになるまで待つ(図6のS6)。暫く待つと、他ノード200,300のプロセッサからグローバルスイッチ・ディレクトリ制御部150へ、スヌープに対するレスポンスが送出され、レスポンス受信フラグがオンになる。レスポンス受信フラグがオンになったら、制御レジスタ154の競合フラグを参照し(図6のS7)、かつ、リプライ受信フラグを参照する(図6のS8)。図6で説明しているリクエストの処理と並行して、図3の実線丸印に示すように、自ノード100内のメモリ・ディレクトリ制御部120からグローバルスイッチ・ディレクトリ制御部150へスヌープが届いていた場合には、競合フラグがオンになっている。
After issuing the snoop, the message issuing /
競合フラグがオフであって(図6のS7:ノー)、リプライ受信フラグがオンの時は、発行要求フラグをオンにする。メッセージ発行・生成回路157は、発行要求フラグがオンになっているエントリについて、制御レジスタ154のフラグ情報等と、メッセージ格納バッファ155のエントリデータとを読み出し、リクエストに対するリプライの生成と発行、さらにはディレクトリ160の更新を行う。一連のリクエスト処理が完了したら、制御レジスタ154のエントリ有効フラグをオフにする(図6のS9)。
When the contention flag is off (S7 in FIG. 6: no) and the reply reception flag is on, the issue request flag is turned on. The message issuance /
競合有りの場合は(図6のS7:イエス)、制御レジスタ154にあるデータ転送フラグを参照する(図6のS10)。レスポンスを受信した場合(図6のS6:イエス)、このレスポンスには、有効なキャッシュデータが実際に有ったか(データ転送有り)無かったか(データ転送無し)の情報が含まれている。データ転送有りの場合は(図6のS10:イエス)、競合しているスヌープの処理よりも先に、図6の流れ図に示すリクエストの処理を完了させる必要があるため、グローバルスイッチ・ディレクトリ制御部150がメモリ140へ発行したリクエストをキャンセルし、レスポンスとリプライとが揃うことを待つことなく、図6の流れ図に示すリクエストの処理を終了させる。このキャンセルによって、メモリ・ディレクトリ制御部120に登録されている処理待ちのリクエストがキャンセルされる。
If there is a conflict (S7 in FIG. 6: yes), the data transfer flag in the
そのため、グローバルスイッチ・ディレクトリ制御部150は、制御レジスタ154の発行要求フラグをオンにする。メッセージ発行・生成回路157は、発行要求フラグがオンになっているエントリについて、制御レジスタ154のフラグ情報等とメッセージ格納バッファ155のエントリデータとを読み出し、リクエストのキャンセル通知をメモリ・ディレクトリ制御部120へ発行し、ディレクトリ160も更新する(図6のS11)。キャンセル通知を送ったら、競合していたスヌープが格納されている他のエントリに対して開始指示を行う。競合スヌープの処理については、図7の流れ図を用いて説明する。一連のリクエスト処理が完了したら、制御レジスタ154のエントリ有効フラグをオフにする(図6のS12)。
Therefore, the global switch /
データ転送無しの場合は(図6のS10:ノー)、競合していたスヌープが格納されている別のエントリに対して開始指示を行う(図6のS13)。グローバルスイッチ・ディレクトリ制御部150は、図3の実線丸印に示すようなスヌープの処理を優先して実行し、終了させて、メモリ・ディレクトリ制御部120へレスポンスを返し、競合を解消する。この間、グローバルスイッチ・ディレクトリ制御部150が発行したメモリ140へのリクエストは、メモリ・ディレクトリ制御部120で待ち状態になる。
If there is no data transfer (S10 in FIG. 6: No), a start instruction is given to another entry storing the competing snoop (S13 in FIG. 6). The global switch /
ディレクトリ160を索引した結果、有効なキャッシュが無かった場合(図6のS4:ノー)、制御レジスタ154の競合フラグを参照し(図6のS14)、かつ、リプライ受信フラグ(図6のS15)を参照する。競合フラグがオフでリプライ受信フラグがオンの時は、発行要求フラグをオンにする。メッセージ発行・生成回路157は、発行要求フラグがオンになっているエントリについて、制御レジスタ154のフラグ情報等と、メッセージ格納バッファ155のエントリデータとを読み出し、リプライの返却とディレクトリ160の更新とを行う。一連のリクエスト処理が完了したら、制御レジスタ154のエントリ有効フラグをオフにする(図6のS16)。
When there is no valid cache as a result of indexing the directory 160 (S4 in FIG. 6: No), the contention flag of the
競合フラグがオンの場合は(図6のS14:イエス)、競合していたスヌープが格納されている別のエントリに対して開始指示を行う(図6のS17)。グローバルスイッチ・ディレクトリ制御部150は、図3の実線丸印に示すようなスヌープの処理を優先して実行し、終了させて、メモリ・ディレクトリ制御部120へレスポンスを返し、競合を解消する。この間、グローバルスイッチ・ディレクトリ制御部150が発行したメモリ140へのリクエストは、メモリ・ディレクトリ制御部120で待ち状態になる。
If the conflict flag is on (S14 in FIG. 6: yes), a start instruction is given to another entry storing the conflicting snoop (S17 in FIG. 6). The global switch /
アドレス一致有りの場合は(図6のS1:イエス)、リクエストを再送バッファ156へ登録し(図6のS18)、リクエストの発行元に対して、再送指示を行う(図6のS19)。 If there is an address match (S1: Yes in FIG. 6), the request is registered in the retransmission buffer 156 (S18 in FIG. 6), and a retransmission instruction is issued to the request issuer (S19 in FIG. 6).
図7は、自ノード100のメモリ・ディレクトリ制御部120からスヌープを受信した時の動作説明図である。グローバルスイッチ・ディレクトリ制御部150が、自ノード100のメモリ・ディレクトリ制御部120からスヌープを受信すると、アドレス一致回路152はアドレス比較を行う(図7のS31)。
FIG. 7 is an explanatory diagram of an operation when a snoop is received from the memory /
アドレス一致無しの場合は(図7のS31:ノー)、メッセージ格納バッファ155へ登録し、制御レジスタ154のエントリ有効フラグ及び発行要求フラグをオンにする(図7のS32)。メッセージ発行・生成回路157は、発行要求フラグがオンになっているエントリについて、制御レジスタ154のフラグ情報等と、メッセージ格納バッファ155のエントリデータとを読み出し、また、ディレクトリ160を索引する(図7のS33)。
If there is no address match (S31 in FIG. 7: No), it is registered in the
ディレクトリ160を索引した結果、有効なキャッシュデータがあった場合(図7のS34:イエス)、そのキャッシュデータを保持する他ノード200,300のプロセッサに対して、スヌープを発行する(図7のS35)。その時に、制御レジスタ154の発行要求フラグをオフにし、メッセージ発行済フラグをオンにする。他ノード200,300のプロセッサからレスポンスを受信したら、制御レジスタ154の発行要求フラグ及びレスポンス受信フラグをオンにする(図7のS36)。メッセージ発行・生成回路157は、発行要求フラグがオンになっているエントリについて、制御レジスタ154のフラグ情報等と、メッセージ格納バッファ155のエントリデータとを読み出し、自ノード100のメモリ・ディレクトリ制御部120に対するレスポンスを生成し、発行し、更にはディレクトリ160の更新を行う(図7のS37)。一連のスヌープ処理が完了したら、制御レジスタ154のエントリ有効フラグをオフにする。
If there is valid cache data as a result of indexing the directory 160 (S34 in FIG. 7: Yes), a snoop is issued to the processors of the
有効なキャッシュが無い場合には(図7のS34:ノー)、自ノード100のメモリ・ディレクトリ制御部120に対するレスポンスの生成と発行を行う(図7のS38)。一連のスヌープ処理が完了したら、制御レジスタ154のエントリ有効フラグをオフにする。
If there is no valid cache (S34 in FIG. 7: No), a response is generated and issued to the memory /
アドレス一致有りの場合でも(図7のS31:イエス)、グローバルスイッチ・ディレクトリ制御部150は、メモリ・ディレクトリ制御部120から受信したスヌープを、メッセージ格納バッファ155へ登録する。そして、グローバルスイッチ・ディレクトリ制御部150は、制御レジスタ154のエントリ有効フラグをオンにし、アドレス一致のリクエストが格納されている別のエントリについて、制御レジスタ154の競合フラグをオンにし、かつ、アドレス一致エントリに、アドレス一致有りのスヌープを格納したエントリ番号を登録する(図7のS39)。
Even when there is an address match (S31 in FIG. 7: Yes), the global switch /
グローバルスイッチ・ディレクトリ制御部150は、図6の流れ図で説明したように、先行のリクエストを処理している。図6に示したように、先行のリクエストから発行指示がきたら(図6のS12,S13,S17)、アドレス一致有りのスヌープの発行要求フラグをオンにする(図7のS40)。以降の動作(図7のS33〜S38)は、アドレス一致無しの場合(図7のS31:ノー)と同様の動作になる。
The global switch /
本実施の形態では、共有メモリを含む多数のマルチプロセッサノードがグローバルスイッチを経て互いに接続されるような大規模システム(SMP)において、メモリコントローラ付近に置く自ノード内のキャッシュ状態を管理するディレクトリと、グローバルスイッチ付近に置く他ノードのキャッシュ状態を管理するディレクトリとにより、キャッシュのコヒーレンシを保障し、レイテンシを短縮している。 In the present embodiment, in a large-scale system (SMP) in which a large number of multiprocessor nodes including a shared memory are connected to each other via a global switch, a directory for managing a cache state in the own node located near the memory controller, The directory that manages the cache state of other nodes in the vicinity of the global switch guarantees cache coherency and shortens the latency.
本実施の形態では、グローバルスイッチ・ディレクトリ制御部150に、同一アドレスの先行リクエスト又はスヌープが存在するかどうかを確認するためのアドレス一致回路152と、アドレスが一致した場合にキャンセルするかどうかを判定するキャンセル判定回路153と、メッセージの発行要求や競合したスヌープの開始指示などを行うためのフラグ情報等を記憶する制御レジスタ154と、制御レジスタ154やメッセージ格納バッファ155からデータを読み出して、メッセージを発行し、生成するメッセージ発行・生成回路157とを設けている。これらにより、2箇所のディレクトリのコヒーレンシを維持している。
In the present embodiment, the global switch /
以上説明したように、本実施の形態においては、以下に記載するような効果を奏する。第1の効果は、ディレクトリをメモリ・ディレクトリ制御部付近の1箇所のみで管理する時に比べ、リクエストを発行するプロセッサ及び有効なキャッシュデータを保持するプロセッサが、それぞれ別々のノードにある場合のレイテンシを短縮できることである。これは、ディレクトリをグローバルスイッチの所にも設けることにより、他ノードからのリクエストに対するスヌープを、グローバルスイッチ・ディレクトリ制御部から発行できるようにしているためである。 As described above, the present embodiment has the following effects. The first effect is that the latency in the case where the processor that issues the request and the processor that holds the valid cache data are in different nodes is compared with the case where the directory is managed only at one location near the memory / directory control unit. It can be shortened. This is because a directory is also provided at the global switch so that a snoop for a request from another node can be issued from the global switch / directory control unit.
第1の効果の一例として、図8Aに、プロセッサ202からメモリ140に対するリクエストが発行され、プロセッサ302のキャッシュに有効なデータがあるケースにおいて、リクエスト発行からデータを受信するまでの経路を示す。本実施の形態においては、プロセッサ202からリクエストが発行されると、このリクエストは、ノード200内のローカルスイッチ210からグローバルスイッチ・ディレクトリ制御部250を通り、メモリ140が存在するノード100のグローバル・ディレクトリ制御部150に入る。グローバルスイッチ・ディレクトリ制御部150は、メモリ140にリクエストを出すのと同時に(このリクエストは、一定条件下、キャンセルされる(図6のS11))ディレクトリ160を索引し、キャッシュに有効なデータを保持しているプロセッサ302に対してスヌープを発行する。スヌープは、プロセッサ302が所属するノード300のグローバルスイッチ・ディレクトリ制御部350、ローカルスイッチ310を通り、プロセッサ302に入る。
As an example of the first effect, FIG. 8A shows a path from issuing a request to receiving data in a case where a request for the
スヌープを受信するプロセッサ302が、実際に有効なキャッシュデータを保持していた場合には、キャッシュデータが発行元のプロセッサ202へ転送され、更にレスポンスがグローバルスイッチ・ディレクトリ制御部150に返却される。キャッシュデータは、ローカルスイッチ310、グローバルスイッチ・ディレクトリ制御部350、リクエスト元のグローバルスイッチ・ディレクトリ制御部250、ローカルスイッチ210を通りプロセッサ202へ返却される。レイテンシはリクエスト発行からデータの受信までであり、メモリ140に対するリクエストおよびプロセッサ302からのレスポンスに関してはレイテンシに見えてこないため経路には表示していない。
If the
図1Aに示した関連技術1における経路と比較すると、本実施の形態では、グローバルスイッチ・ディレクトリ制御部150からメモリ・ディレクトリ制御部120までの往復分のレイテンシが短縮される。
Compared with the path in the related technique 1 shown in FIG. 1A, in this embodiment, the round trip latency from the global switch /
第2の効果は、ディレクトリをグローバルスイッチ・ディレクトリ制御部の1箇所のみで管理する時に比べ、リクエストを発行するプロセッサが自ノード内にあって、かつ、有効なキャッシュデータを保持するプロセッサがいずれのノードにも無い場合、若しくは自ノード内にある場合のレイテンシを短縮できることである。これは、ディレクトリをメモリの所にも設けることにより、自ノード内のプロセッサから発行されたリクエストに対するスヌープ処理を、グローバルスイッチ・ディレクトリ制御部を介さずに行えるようにしたためである。 The second effect is that, compared with the case where the directory is managed by only one place of the global switch / directory control unit, the processor that issues the request is in its own node and the processor that holds the valid cache data is It is possible to shorten the latency when the node is not present or within the own node. This is because the directory is also provided in the memory so that the snoop process for the request issued from the processor in the own node can be performed without using the global switch / directory control unit.
第2の効果の一例として、図8Bに、プロセッサ102からメモリ140に対するリクエストが発行され、プロセッサ101のキャッシュに有効なデータがあるケースにおいて、リクエスト発行からデータを受信するまでの経路を示す。プロセッサ102からリクエストが発行されると、このリクエストは、ノード100内のローカルスイッチ110からメモリ・ディレクトリ制御部120に入る。メモリ・ディレクトリ制御部120は、メモリ140にリクエストを発行するのと同時にディレクトリ130を索引し、キャッシュに有効なデータを保持しているプロセッサ101に対してスヌープを発行する。スヌープは、ローカルスイッチ110を通りプロセッサ101に入る。
As an example of the second effect, FIG. 8B shows a path from issuing a request to receiving data in a case where a request for the
スヌープを受信するプロセッサ101が、実際に有効なキャッシュデータを保持していた場合には、キャッシュデータが、リクエスト発行元のプロセッサ102へ転送され、更にレスポンスがメモリ・ディレクトリ制御部120へ返却される。キャッシュデータは、ローカルスイッチ110を通りプロセッサ102へ転送される。レイテンシは、リクエスト発行からデータの受信までであり、メモリ140に対するリクエスト及びプロセッサ101からのレスポンスに関してはレイテンシに見えてこないため経路には表示していない。
If the
図2Bに示した関連技術2における経路と比較すると、本実施の形態では、ローカルスイッチ110から、グローバルスイッチ・ディレクトリ制御部150までの往復分のレイテンシが短縮される。
Compared with the path in the related technology 2 shown in FIG. 2B, in this embodiment, the round trip latency from the
100,100a,100b,100c,200,200a,200b,300,300a,300b ノード
101,102,201,202,301,302 プロセッサ
110,210,310 ローカルスイッチ
120,220,320 メモリ・ディレクトリ制御部
130,160,230,260,330,360 ディレクトリ
140,240,340 メモリ
150,190,250,290,350,390 グローバルスイッチ・ディレクトリ制御部
151,158 調停回路
152 アドレス一致回路
153 キャンセル判定回路
154 制御レジスタ
155 メッセージ格納バッファ
156 再送バッファ
157 メッセージ発行・生成回路
170,270,370 グローバルスイッチ
180,280,380 メモリ制御部
100, 100a, 100b, 100c, 200, 200a, 200b, 300, 300a,
Claims (15)
前記第一のプロセッサと、他ノードに所属する第二のプロセッサとに共有されるメモリと、
前記自ノードのキャッシュ状態を管理する第一のディレクトリと、
前記他ノードのキャッシュ状態を管理する第二のディレクトリと、
前記自ノード内で発行されるリクエストを処理し、前記メモリのアドレスを指定する第一のリクエストを受信した場合には、前記第一のディレクトリを索引する第一のディレクトリ制御部と、
前記他ノードから発行されるリクエストを処理し、前記メモリのアドレスを指定する第二のリクエストを受信した場合には、前記第二のディレクトリを索引すると共に、前記第二のリクエストを処理する場合に、他のリクエスト又はスヌープを受信したときには、アドレスが競合するか否かを調べることによって、コヒーレンシを保障するための所定の制御を行う第二のディレクトリ制御部とを具備する
レイテンシ短縮方式。 A first processor belonging to its own node;
A memory shared by the first processor and a second processor belonging to another node;
A first directory for managing the cache state of the node;
A second directory for managing the cache state of the other node;
A first directory control unit that processes the request issued in the own node and receives the first request designating the address of the memory, and indexes the first directory;
When processing a request issued from the other node and receiving a second request specifying the address of the memory, when indexing the second directory and processing the second request A latency shortening method comprising: a second directory control unit that performs predetermined control to ensure coherency by checking whether or not there is an address conflict when another request or snoop is received.
前記自ノードに所属し、
前記第一のディレクトリは、
前記自ノードのキャッシュ状態の一つとして、前記第二のディレクトリ制御部のキャッシュ状態を管理する
請求項1記載のレイテンシ短縮方式。 The second directory control unit
Belongs to the own node,
The first directory is
The latency shortening method according to claim 1, wherein the cache state of the second directory control unit is managed as one of the cache states of the own node.
前記第一のリクエストを処理する場合において、前記第一のディレクトリを索引し、前記第二のディレクトリ制御部のキャッシュが有効な場合には、前記第二のディレクトリ制御部へ第一のスヌープを発行し、
前記第二のディレクトリ制御部は、
前記第二のリクエストを処理するときに、前記第一のディレクトリ制御部へ第三のリクエストを発行し、かつ、前記第三のリクエストを発行した後に、前記第一のスヌープを受信した場合において、前記第三のリクエストのアドレスと、前記第一のスヌープのアドレスとが競合しているときには、前記第三のリクエストに対するリプライを受信する前に、前記第一のスヌープの処理を開始し、終了させる
請求項2記載のレイテンシ短縮方式。 The first directory control unit
When processing the first request, the first directory is indexed, and if the cache of the second directory control unit is valid, a first snoop is issued to the second directory control unit And
The second directory control unit
When processing the second request, when issuing the third request to the first directory control unit, and after issuing the third request, the first snoop is received. When the address of the third request and the address of the first snoop are in conflict, the first snoop process is started and terminated before receiving a reply to the third request. The latency shortening method according to claim 2.
前記第一のスヌープの処理を開始する場合において、前記第二のディレクトリを索引し、キャッシュが有効であり、前記他ノードへ第二のスヌープを発行していた場合には、前記第三のリクエストをキャンセルするキャンセル通知を前記第一のディレクトリ制御部へ発行する
請求項3記載のレイテンシ短縮方式。 The second directory control unit
When starting the processing of the first snoop, when the second directory is indexed, the cache is valid, and the second snoop is issued to the other node, the third request is issued. The latency shortening method according to claim 3, wherein a cancellation notification for canceling is issued to the first directory control unit.
前記第一のスヌープの処理を開始する場合において、前記第二のスヌープを発行していた場合には、前記第二のスヌープに対するレスポンスを受信するのを待ってから、前記第一のスヌープの処理を開始すると共に、前記第二のスヌープに対するレスポンスが、キャッシュデータが実際に転送されたことを示していた場合に限り、前記キャンセル通知を発行する
請求項4記載のレイテンシ短縮方式。 The second directory control unit
When starting the first snoop process, if the second snoop has been issued, it waits to receive a response to the second snoop, and then the first snoop process The latency shortening method according to claim 4, wherein the cancel notification is issued only when a response to the second snoop indicates that the cache data has actually been transferred.
発行元を自分として、前記第三のリクエストを発行する
請求項5記載のレイテンシ短縮方式。 The second directory control unit
The latency shortening method according to claim 5, wherein the third request is issued with the issuer as oneself.
前記第二のリクエストを処理しているときに、アドレスが競合する他のリクエストを受信した場合には、前記他のリクエストを処理することなく、前記他のリクエストの発行元へ、リクエストの再送指示を行う
請求項6記載のレイテンシ短縮方式。 The second directory control unit
When processing the second request, if another request with an address conflict is received, the request is resent to the issuer of the other request without processing the other request. The latency shortening method according to claim 6.
前記メモリに対するアクセスを制御するメモリ制御部を含み、
前記第二のディレクトリ制御部は、
前記他ノードとの間で、リクエスト、リプライ、スヌープ、及び、レスポンスを含むメッセージを送受信するグローバルスイッチを含む
請求項7記載のレイテンシ短縮方式。 The first directory control unit
A memory control unit for controlling access to the memory;
The second directory control unit
The latency shortening method according to claim 7, further comprising a global switch that transmits and receives a message including a request, a reply, a snoop, and a response to and from the other node.
他ノードのキャッシュ状態を管理する第二のディレクトリを設けることと、
前記第一のディレクトリを索引する第一のディレクトリ制御部を設けることと、
前記第二のディレクトリを索引する第二のディレクトリ制御部を設けることと、
前記自ノードに所属する第一のプロセッサと、前記他ノードに所属する第二のプロセッサとに共有されるメモリのアドレスを指定する第一のリクエストが前記自ノード内で発行されたときに、前記第一のディレクトリ制御部により、前記メモリへ第二のリクエストを発行し、前記第一のディレクトリを索引し、前記第一のリクエストを処理することと、
前記メモリのアドレスを指定する第三のリクエストが前記他ノードから発行されたときに、前記第二のディレクトリ制御部により、前記メモリへ第四のリクエストを発行し、前記第二のディレクトリを索引すると共に、他のリクエスト又はスヌープを受信した場合には、アドレスが競合するか否かを調べることによって、コヒーレンシを保障するための所定の制御を行い、前記第三のリクエストを処理することとを具備する
レイテンシ短縮方法。 Providing a first directory for managing the cache state of the own node;
Providing a second directory for managing the cache state of other nodes;
Providing a first directory control for indexing the first directory;
Providing a second directory control for indexing the second directory;
When a first request specifying an address of a memory shared by a first processor belonging to the own node and a second processor belonging to the other node is issued in the own node, the Issuing a second request to the memory by the first directory control unit, indexing the first directory, and processing the first request;
When a third request specifying the address of the memory is issued from the other node, the second directory control unit issues a fourth request to the memory and indexes the second directory. In addition, when another request or snoop is received, the third request is processed by performing predetermined control for ensuring coherency by checking whether or not the address conflicts. Yes Latency reduction method.
前記自ノードのキャッシュ状態の一つとして、前記第二のディレクトリ制御部のキャッシュ状態を管理する第一のディレクトリを設けることを含む
請求項9記載のレイテンシ短縮方法。 Setting up the first directory
The latency shortening method according to claim 9, further comprising providing a first directory for managing a cache state of the second directory control unit as one of the cache states of the own node.
前記第一のディレクトリを索引し、前記第二のディレクトリ制御部のキャッシュが有効な場合には、前記第二のディレクトリ制御部へ第一のスヌープを発行することを含み、
前記第三のリクエストを処理することは、
前記第四のリクエストを発行した後に、前記第二のディレクトリ制御部により、前記第一のスヌープを受信した場合において、前記第四のリクエストのアドレスと、前記第一のスヌープのアドレスとが競合しているときには、前記第四のリクエストに対するリプライを受信する前に、前記第一のスヌープの処理を開始し、終了させることを含む
請求項10記載のレイテンシ短縮方法。 Processing the first request includes
Indexing the first directory and, if the cache of the second directory control is valid, issuing a first snoop to the second directory control;
Processing the third request includes
After issuing the fourth request, when the first snoop is received by the second directory control unit, the address of the fourth request conflicts with the address of the first snoop. The latency shortening method according to claim 10, further comprising: starting and ending the first snoop process before receiving a reply to the fourth request.
前記第一のスヌープの処理を開始する場合において、前記第三のリクエストについて、前記第二のディレクトリを索引し、キャッシュが有効で、前記他ノードへ第二のスヌープを発行していた場合には、前記第四のリクエストをキャンセルするキャンセル通知を発行することを含む
請求項11記載のレイテンシ短縮方法。 Processing the third request includes
When starting the processing of the first snoop, when the second directory is indexed for the third request, the cache is valid, and the second snoop is issued to the other node The latency shortening method according to claim 11, further comprising: issuing a cancel notification for canceling the fourth request.
前記第一のスヌープの処理を開始する場合において、前記第二のスヌープを発行していた場合には、前記第二のスヌープに対するレスポンスを受信するのを待ってから、前記第一のスヌープの処理を開始すると共に、前記第二のスヌープに対するレスポンスが、キャッシュデータが実際に転送されたことを示していた場合に限り、前記キャンセル通知を発行することを含む
請求項12記載のレイテンシ短縮方法。 Processing the third request includes
When starting the first snoop process, if the second snoop has been issued, it waits to receive a response to the second snoop, and then the first snoop process The latency shortening method according to claim 12, further comprising issuing the cancellation notification only when a response to the second snoop indicates that the cache data has actually been transferred.
発行元を他ノードから自ノードへ書き換えて、前記第四のリクエストを発行することを含む
請求項13記載のレイテンシ短縮方法。 Processing the third request includes
The latency shortening method according to claim 13, comprising rewriting the issuer from another node to the own node and issuing the fourth request.
アドレスが競合する他のリクエストを受信した場合には、前記他のリクエストを処理することなく、前記他のリクエストの発行元へ、リクエストの再送指示を行うことを含む
請求項14記載のレイテンシ短縮方法。 Processing the third request includes
The latency shortening method according to claim 14, further comprising: instructing a re-transmission of the request to an issuer of the other request without processing the other request when receiving another request having an address conflict. .
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008093106A JP2009245323A (en) | 2008-03-31 | 2008-03-31 | System and method for reducing latency |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008093106A JP2009245323A (en) | 2008-03-31 | 2008-03-31 | System and method for reducing latency |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2009245323A true JP2009245323A (en) | 2009-10-22 |
Family
ID=41307107
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008093106A Withdrawn JP2009245323A (en) | 2008-03-31 | 2008-03-31 | System and method for reducing latency |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2009245323A (en) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009301552A (en) * | 2008-06-13 | 2009-12-24 | Intel Corp | Optimizing concurrent accesses in directory-based coherency protocol |
WO2012008008A1 (en) * | 2010-07-12 | 2012-01-19 | 富士通株式会社 | Information processing system |
WO2012077169A1 (en) | 2010-12-06 | 2012-06-14 | 富士通株式会社 | Information processing system and information transmission method |
JP2014048830A (en) * | 2012-08-30 | 2014-03-17 | Fujitsu Ltd | Arithmetic processing unit, information processor, and method for controlling arithmetic processing unit |
-
2008
- 2008-03-31 JP JP2008093106A patent/JP2009245323A/en not_active Withdrawn
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009301552A (en) * | 2008-06-13 | 2009-12-24 | Intel Corp | Optimizing concurrent accesses in directory-based coherency protocol |
WO2012008008A1 (en) * | 2010-07-12 | 2012-01-19 | 富士通株式会社 | Information processing system |
JP5435132B2 (en) * | 2010-07-12 | 2014-03-05 | 富士通株式会社 | Information processing system |
WO2012077169A1 (en) | 2010-12-06 | 2012-06-14 | 富士通株式会社 | Information processing system and information transmission method |
JP2014048830A (en) * | 2012-08-30 | 2014-03-17 | Fujitsu Ltd | Arithmetic processing unit, information processor, and method for controlling arithmetic processing unit |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7085898B2 (en) | Coherency management for a “switchless” distributed shared memory computer system | |
US7962696B2 (en) | System and method for updating owner predictors | |
US8095733B2 (en) | Virtual barrier synchronization cache castout election | |
CN100377114C (en) | An efficient two-hop cache coherency protocol | |
US8176259B2 (en) | System and method for resolving transactions in a cache coherency protocol | |
US7340565B2 (en) | Source request arbitration | |
CN104106061B (en) | Multi-processor data process system and method therein, cache memory and processing unit | |
US7240165B2 (en) | System and method for providing parallel data requests | |
US20100257317A1 (en) | Virtual Barrier Synchronization Cache | |
JPH10133943A (en) | Link list forming method | |
US20120137080A1 (en) | System and method for creating ordering points | |
CN112955876B (en) | Method and device for transmitting data in a data processing network | |
JP5505516B2 (en) | Information processing system and information transmission method | |
JP2010044599A (en) | Information processing apparatus and order guaranteeing method | |
CN108874687A (en) | For the non-unibus of tiled last level cache(NUB)Interconnection agreement | |
JPH0950400A (en) | Multiprocessor system | |
JP2009245323A (en) | System and method for reducing latency | |
US7159079B2 (en) | Multiprocessor system | |
US10437725B2 (en) | Master requesting missing segments of a cache line for which the master has coherence ownership | |
US20090292881A1 (en) | Distributed home-node hub | |
JP2011076159A (en) | Cache memory control system and method of controlling cache memory | |
JP2018195183A (en) | Arithmetic processing unit and method of controlling arithmetic processing unit | |
JP5168800B2 (en) | Multiprocessor system | |
JP5571327B2 (en) | Latency reduction system, latency reduction method, and latency reduction program | |
JP5549694B2 (en) | Massively parallel computer, synchronization method, synchronization program |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Withdrawal of application because of no request for examination |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20110607 |