JP2014197402A - Information processor, control method and control program - Google Patents

Information processor, control method and control program Download PDF

Info

Publication number
JP2014197402A
JP2014197402A JP2014108573A JP2014108573A JP2014197402A JP 2014197402 A JP2014197402 A JP 2014197402A JP 2014108573 A JP2014108573 A JP 2014108573A JP 2014108573 A JP2014108573 A JP 2014108573A JP 2014197402 A JP2014197402 A JP 2014197402A
Authority
JP
Japan
Prior art keywords
node
abnormality
shared memory
cpu
data transfer
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.)
Granted
Application number
JP2014108573A
Other languages
Japanese (ja)
Other versions
JP5800058B2 (en
Inventor
秀之 鯉沼
Hideyuki Koinuma
秀之 鯉沼
剛 杉崎
Takeshi Sugizaki
剛 杉崎
俊和 植木
Toshikazu Ueki
俊和 植木
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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2014108573A priority Critical patent/JP5800058B2/en
Publication of JP2014197402A publication Critical patent/JP2014197402A/en
Application granted granted Critical
Publication of JP5800058B2 publication Critical patent/JP5800058B2/en
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Memory System Of A Hierarchy Structure (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Debugging And Monitoring (AREA)
  • Multi Processors (AREA)

Abstract

PROBLEM TO BE SOLVED: To suppress the influence range of an error when an abnormality related to data transfer between nodes occurs.SOLUTION: An abnormality detection part 37c disposed in at least one node is configured to detect an abnormality on a data transfer path of data transfer using a shared memory region included in a storage device disposed in one node or the other node. An error information generation part is configured to generate error information on the basis of the abnormality detected by the abnormality detection part, and to generate interruption to a processor in an own node. The processor is configured to execute recovery processing on the basis of the error information. The error information generation part is configured to, when the node whose abnormality has been detected by the abnormality detection part is a remote node, and cache data of the remote node are not written back to the shared memory region of a home node due to the abnormality of the remote node, write data indicating the abnormality in a directory. The processor is configured to, when executing recovery processing, delete the data indicating the abnormality from the directory.

Description

本発明は、情報処理装置、制御方法および制御プログラムに関する。   The present invention relates to an information processing apparatus, a control method, and a control program.

従来、複数の演算処理装置が主記憶装置を共有するSMP(Symmetric MultiProcessor)の技術が知られている。このようなSMPの技術が適用された情報処理システムの一例として、演算処理装置と主記憶装置とを有する複数のノードを同一のバスで接続し、バスを介して、各演算処理装置が各主記憶装置を共有する情報処理システムがある。   Conventionally, an SMP (Symmetric MultiProcessor) technique in which a plurality of arithmetic processing devices share a main storage device is known. As an example of an information processing system to which such SMP technology is applied, a plurality of nodes each having an arithmetic processing unit and a main storage device are connected by the same bus, and each arithmetic processing unit is connected to each main processing unit via the bus. There is an information processing system that shares a storage device.

このような情報処理システムでは、例えばスヌープ方式を用いて、各ノードの演算処理装置がキャッシュしたデータのコヒーレンシを保持する。   In such an information processing system, for example, a snoop method is used to hold the coherency of data cached by the arithmetic processing unit of each node.

また、ノード間のデータの通信手段として共有メモリを使用するシステムにおいて、ノードの異常を検出した場合に、送信するデータを、異常を示すデータに変換し、変換したデータを送信する技術がある。この技術では、異常を示すデータを受信したノードは、受信したデータを破棄する。   Further, in a system that uses a shared memory as a means for communicating data between nodes, there is a technique for converting data to be transmitted into data indicating abnormality and transmitting the converted data when a node abnormality is detected. In this technique, a node that has received data indicating abnormality discards the received data.

また、複数のノードをクロスバスイッチにより接続したシステムにおいて、パケットの通信の滞留が発生した場合に、通信経路を変更して処理を継続する技術がある。この技術では、ノードが送信したリクエストがクロスバスイッチから自身のノードおよび他のノードへ送信される。そして、この技術では、リクエストを送信したノードが、リクエストを送信してから受信するまでの時間を計測し、タイムアウトを検出することで、パケットの通信の滞留が発生したと判定する。   Further, there is a technique for changing a communication path and continuing processing in a system in which a plurality of nodes are connected by a crossbar switch when packet communication stays. In this technique, a request transmitted by a node is transmitted from the crossbar switch to its own node and other nodes. In this technique, the node that transmitted the request measures the time from when the request is transmitted until it is received, and detects a timeout, thereby determining that packet communication has been retained.

また、複数のノードをクロスバスイッチにより接続したシステムにおいて、ノードから送信されたデータが途絶えた場合に、途絶えた時間が所定時間以上となるときには、異常を示すデータを含むダミーデータを受信側のノードに送信する技術がある。   Also, in a system in which a plurality of nodes are connected by a crossbar switch, when the data transmitted from the node is interrupted, if the interrupted time is a predetermined time or more, dummy data including data indicating abnormality is received on the receiving node There is technology to send to.

特開2004−013723号公報JP 2004-013723 A 特開2002−366451号公報JP 2002-366451 A 特開平11−168502号公報JP-A-11-168502

しかしながら、上記の技術では、ノード間のデータ転送に関わる異常が発生した場合に、エラーの影響範囲を抑えることができないという問題がある。   However, the above-described technique has a problem that the influence range of errors cannot be suppressed when an abnormality relating to data transfer between nodes occurs.

例えば、スヌープ方式を用いて、キャッシュしたデータのコヒーレンシを保持する上記の情報処理システムでは、次のようなことが考えられる。すなわち、あるノードに障害が発生(ノードがダウン)して、ノード間で通信異常が発生した場合には、キャッシュしたデータのコヒーレンシを保持するために、全ノードをダウンさせることが考えられる。この場合、エラーの影響範囲が全ノードに及ぶこととなる。   For example, in the above information processing system that uses the snoop method to maintain coherency of cached data, the following can be considered. That is, when a failure occurs in a certain node (node goes down) and communication abnormality occurs between the nodes, it is conceivable to bring down all the nodes in order to maintain the coherency of the cached data. In this case, the error influence range extends to all nodes.

本発明は、1つの側面では、ノード間のデータ転送に関わる異常が発生した場合に、エラーの影響範囲を抑えることを目的とする。   An object of one aspect of the present invention is to suppress an error influence range when an abnormality relating to data transfer between nodes occurs.

1つの側面では、一部を共有メモリ領域として設定可能な記憶装置を各々が備える複数のノードと、複数のノード間を接続するインターコネクトとを有する情報処理装置であって、ノードの各々は、異常検出部と、エラー情報生成部と、プロセッサとを有する。異常検出部は、複数のノード間のデータ転送の異常または他のノードの異常を検出する。エラー情報生成部は、異常検出部により検出された異常に基づいてエラー情報を生成すると共に、データ転送の要求発行元のノード内のプロセッサに対して割込みを発生する。プロセッサは、割込みを受信すると、エラー情報生成部が生成したエラー情報に基づいて、リカバリ処理を行う。エラー情報生成部は、異常検出部により異常が検出されたノードがリモートノードであり、かつ、リモートノードの異常によって、ホームノードの共有メモリ領域にリモートノードのキャッシュデータがライトバックされない場合、異常を示すデータをディレクトリに書き込む。プロセッサは、リカバリ処理を実行する際に、異常を示すデータをディレクトリから削除する。   In one aspect, there is provided an information processing apparatus having a plurality of nodes each including a storage device that can be partially set as a shared memory area, and an interconnect that connects the plurality of nodes. A detector, an error information generator, and a processor; The abnormality detection unit detects an abnormality in data transfer between a plurality of nodes or an abnormality in another node. The error information generation unit generates error information based on the abnormality detected by the abnormality detection unit, and generates an interrupt to the processor in the node that issued the data transfer request. When receiving the interrupt, the processor performs recovery processing based on the error information generated by the error information generation unit. The error information generation unit detects an abnormality when the node where the abnormality is detected by the abnormality detection unit is a remote node, and the cache data of the remote node is not written back to the shared memory area of the home node due to the abnormality of the remote node. Write the indicated data to the directory. The processor deletes data indicating an abnormality from the directory when executing the recovery process.

1実施形態によれば、ノード間のデータ転送に関わる異常が発生した場合に、エラーの影響範囲を抑えることができる。   According to one embodiment, when an abnormality relating to data transfer between nodes occurs, the influence range of an error can be suppressed.

図1は、実施例1に係る情報処理システムの一例を説明するための図である。FIG. 1 is a schematic diagram illustrating an example of an information processing system according to the first embodiment. 図2は、実施例1に係るビルディングブロックの機能構成を説明するための図である。FIG. 2 is a diagram for explaining the functional configuration of the building block according to the first embodiment. 図3は、共有メモリが割り当てられたノードに、他のノードがアタッチする場合のメモリマップの一例を示す図である。FIG. 3 is a diagram illustrating an example of a memory map when another node attaches to a node to which a shared memory is allocated. 図4は、実施例1に係るCPUの機能構成を説明するための図である。FIG. 4 is a diagram for explaining a functional configuration of the CPU according to the first embodiment. 図5は、実施例1に係るノードマップのデータ構成の一例を説明するための図である。FIG. 5 is a diagram for explaining an example of the data configuration of the node map according to the first embodiment. 図6は、ディレクトリのデータ構成の一例を説明するための図である。FIG. 6 is a diagram for explaining an example of the data structure of a directory. 図7は、実施例1に係るCPUが送信するパケットを説明するための図である。FIG. 7 is a diagram for explaining a packet transmitted by the CPU according to the first embodiment. 図8は、送信パケットの一例を示す図である。FIG. 8 is a diagram illustrating an example of a transmission packet. 図9は、異常検出部の他の構成の一例を示す図である。FIG. 9 is a diagram illustrating an example of another configuration of the abnormality detection unit. 図10は、「TLP header」のデータ構成の一例を示す図である。FIG. 10 is a diagram illustrating an example of a data configuration of “TLP header”. 図11は、「poisoned TLP」パケットを受信したPCIe制御部の動作の具体例を説明するための図である。FIG. 11 is a diagram for explaining a specific example of the operation of the PCIe control unit that has received the “poisoned TLP” packet. 図12は、実施例1に係るCPUがリクエストを送信する処理の一例を説明するための図である。FIG. 12 is a schematic diagram illustrating an example of a process in which the CPU according to the first embodiment transmits a request. 図13は、実施例1に係るCPUがパケットを受信した際に実行する処理の一例を説明するための図である。FIG. 13 is a diagram for explaining an example of processing executed when the CPU according to the first embodiment receives a packet. 図14は、実施例1に係るI/O装置がリクエストを送信する処理の一例を説明するための図である。FIG. 14 is a diagram for explaining an example of processing in which the I / O device according to the first embodiment transmits a request. 図15は、実施例1に係るI/O装置がレスポンスを受信する処理の一例を説明するための図である。FIG. 15 is a diagram for explaining an example of processing in which the I / O device according to the first embodiment receives a response. 図16は、ノードと、当該ノードのアクセス対象のメモリを有するノードとの間でデータ転送の異常が発生した際に実行される処理の一例を説明するための図である。FIG. 16 is a diagram for explaining an example of processing executed when a data transfer abnormality occurs between a node and a node having a memory to be accessed by the node. 図17は、ノードと、当該ノードのアクセス対象のメモリを有するノードとの間でデータ転送の異常が発生した際に実行される処理の一例を説明するための図である。FIG. 17 is a diagram for explaining an example of processing executed when a data transfer abnormality occurs between a node and a node having a memory to be accessed by the node. 図18は、共有領域を制御する処理の流れを説明するためのフローチャートである。FIG. 18 is a flowchart for explaining the flow of processing for controlling a shared area. 図19は、共有メモリの割当処理を説明するためのフローチャートである。FIG. 19 is a flowchart for explaining shared memory allocation processing. 図20は、共有メモリアタッチ処理を説明するためのフローチャートである。FIG. 20 is a flowchart for explaining the shared memory attach process. 図21は、アプリケーションが共有メモリを使用する処理を説明するためのフローチャートである。FIG. 21 is a flowchart for explaining processing in which an application uses a shared memory. 図22は、ノード間の共有メモリデタッチ処理を説明するためのフローチャートである。FIG. 22 is a flowchart for explaining a shared memory detach process between nodes. 図23は、ノード間共有メモリの解放処理を説明するためのフローチャートである。FIG. 23 is a flowchart for explaining the inter-node shared memory release process. 図24は、リクエストを発行する処理の流れを説明するためのフローチャートである。FIG. 24 is a flowchart for explaining the flow of processing for issuing a request. 図25は、リクエストを受信した際に実行する処理の流れを説明するためのフローチャートである。FIG. 25 is a flowchart for explaining the flow of processing executed when a request is received. 図26は、CPUが応答を受信した際に実行する処理の流れを説明するためのフローチャートである。FIG. 26 is a flowchart for explaining the flow of processing executed when the CPU receives a response. 図27は、CPUがリクエストを送信する際に実行する処理の流れを説明するためのフローチャートである。FIG. 27 is a flowchart for explaining the flow of processing executed when the CPU transmits a request. 図28は、PCIe制御部がリードのリクエストを送信する際に実行する処理の流れを説明するためのフローチャートである。FIG. 28 is a flowchart for explaining a flow of processing executed when the PCIe control unit transmits a read request. 図29は、PCIe制御部がライトのリクエストを送信する際に実行する処理の流れを説明するためのフローチャートである。FIG. 29 is a flowchart for explaining the flow of processing executed when the PCIe control unit transmits a write request. 図30は、トラップが発生することによってOSが実行するトラップ処理の流れを説明するためのフローチャートである。FIG. 30 is a flowchart for explaining the flow of trap processing executed by the OS when a trap occurs. 図31は、ハンドラテーブルのデータ構造の一例を示す図である。FIG. 31 is a diagram illustrating an example of the data structure of the handler table. 図32は、シグナルが通知されたシグナルハンドラが実行する処理の流れを説明するためのフローチャートである。FIG. 32 is a flowchart for explaining the flow of processing executed by the signal handler notified of the signal. 図33は、シグナルが通知されたシグナルハンドラが実行する他の処理の流れを説明するためのフローチャートである。FIG. 33 is a flowchart for explaining another processing flow executed by the signal handler notified of the signal. 図34は、ノードの異常を検出する方法の一例を説明するための情報処理システムの模式的な図である。FIG. 34 is a schematic diagram of an information processing system for explaining an example of a method for detecting an abnormality of a node. 図35は、実施例1の異常検出方法とは異なる方法を用いた場合の処理の流れを説明するためのフローチャートである。FIG. 35 is a flowchart for explaining the flow of processing when a method different from the abnormality detection method of the first embodiment is used. 図36は、クラスタ管理マネージャが異常を検出した場合の処理の流れを説明するためのフローチャートである。FIG. 36 is a flowchart for explaining the flow of processing when the cluster management manager detects an abnormality. 図37は、情報処理システムの一例を説明するための図である。FIG. 37 is a diagram for explaining an example of the information processing system. 図38は、パーティションの一例を説明するための図である。FIG. 38 is a diagram for explaining an example of a partition. 図39Aは、パーティション#AのCPUが記憶するノードマップの一例を説明するための図である。FIG. 39A is a diagram for describing an example of a node map stored by the CPU of partition #A. 図39Bは、パーティション#Aを示すノードマップの一例を説明するための図である。FIG. 39B is a diagram for describing an example of a node map indicating the partition #A. 図39Cは、パーティション#Bを示すノードマップの一例を説明するための図である。FIG. 39C is a diagram for describing an example of a node map indicating the partition #B.

以下に添付図面を参照して本願に係る情報処理装置、制御方法および制御プログラムについて説明する。   The information processing apparatus, control method, and control program according to the present application will be described below with reference to the accompanying drawings.

以下の実施例1では、図1を用いて、複数のノードを有する情報処理システムの一例について説明する。図1は、実施例1に係る情報処理システムの一例を説明するための図である。図1に示す例では、情報処理システム1は、XB(クロスバスイッチ)2と複数のビルディングブロック10〜10eとを有する。XB2は、各ビルディングブロック10〜10eを相互に接続するクロスバスイッチである。また、XB2は、後述する各ビルディングブロック10〜10eが有する各サービスプロセッサのマスターとなる不図示のサービスプロセッサを有する。なお、少数のノードが接続される小規模構成の場合、XB2を介さずに、ビルディングブロック同士を直接接続しても良い。   In the following first embodiment, an example of an information processing system having a plurality of nodes will be described with reference to FIG. FIG. 1 is a schematic diagram illustrating an example of an information processing system according to the first embodiment. In the example illustrated in FIG. 1, the information processing system 1 includes an XB (crossbar switch) 2 and a plurality of building blocks 10 to 10 e. XB2 is a crossbar switch that connects the building blocks 10 to 10e to each other. Moreover, XB2 has a service processor (not shown) which becomes a master of each service processor included in each of the building blocks 10 to 10e described later. In the case of a small-scale configuration in which a small number of nodes are connected, building blocks may be directly connected without using XB2.

また、ビルディングブロック10は、複数のCPU(Central Processing Unit)21〜21cと複数のメモリ22〜22cとを有する。また、他のビルディングブロック10a〜10eも、ビルディングブロック10と同様の構成を有するものとし、以下の説明を省略する。なお、図1に示す例では、CPU21b、21cおよびメモリ22b、22cについては、記載を省略した。また、各ビルディングブロック内には、不図示のI/O(Input Output)装置が設けられている。ここで、本実施例では、CPU間のキャッシュコヒーレンス制御をディレクトリ方式で実現し、データをメモリ上に持つ後述のホームCPUが該当ディレクトリを管理している。   The building block 10 includes a plurality of CPUs (Central Processing Units) 21 to 21c and a plurality of memories 22 to 22c. Further, the other building blocks 10a to 10e are assumed to have the same configuration as the building block 10, and the following description is omitted. In the example shown in FIG. 1, the description of the CPUs 21b and 21c and the memories 22b and 22c is omitted. In each building block, an I / O (Input Output) device (not shown) is provided. In this embodiment, cache coherence control between CPUs is realized by a directory system, and a home CPU (to be described later) having data on a memory manages the corresponding directory.

各ビルディングブロック10〜10eは、それぞれ独立してOSを動作させる。すなわち、各CPU21〜21cは、それぞれ独立してOSを実行する。各ビルディングブロック10〜10eが実行するOSは、ビルディングブロック毎に異なるパーティションで動作する。ここで、パーティションとは、同一のOSが動作し、動作しているOSから見て1つのシステムとして動作するビルディングブロックの群を示す。   Each of the building blocks 10 to 10e operates the OS independently. That is, each of the CPUs 21 to 21c executes the OS independently. The OS executed by each building block 10 to 10e operates in a different partition for each building block. Here, the partition indicates a group of building blocks in which the same OS operates and operates as one system as viewed from the operating OS.

例えば、ビルディングブロック10〜10aがパーティション#Aとして動作し、ビルディングブロック10b〜10dがパーティション#Bとして動作する。このような場合には、ビルディングブロック10が動作させるOSは、ビルディングブロック10、10aが1つのシステムとして動作していると識別し、ビルディングブロック10bが動作させるOSは、ビルディングブロック10b〜10dが1つのシステムとして動作していると識別する。   For example, the building blocks 10 to 10a operate as the partition #A, and the building blocks 10b to 10d operate as the partition #B. In such a case, the OS that the building block 10 operates identifies that the building blocks 10 and 10a are operating as one system, and the OS that the building block 10b operates is that the building blocks 10b to 10d are one. Identified as operating as one system.

次に、図2を用いて、ビルディングブロックの構成例について説明する。図2は、実施例1に係るビルディングブロックの機能構成を説明するための図である。図2に示す例では、ビルディングブロック10は、ノード20、サービスプロセッサ24、XB接続部27、27a、PCIe(Peripheral Component Interconnect Express)接続部28を有する。   Next, a configuration example of the building block will be described with reference to FIG. FIG. 2 is a diagram for explaining the functional configuration of the building block according to the first embodiment. In the example illustrated in FIG. 2, the building block 10 includes a node 20, a service processor 24, XB connection units 27 and 27 a, and a PCIe (Peripheral Component Interconnect Express) connection unit 28.

ノード20は、複数のCPU21〜21cと、複数のメモリ22〜22cと、通信部23とを有する。   The node 20 includes a plurality of CPUs 21 to 21 c, a plurality of memories 22 to 22 c, and a communication unit 23.

サービスプロセッサ24は、制御部25と、通信部26とを有する。また、図2に示す例では、各CPU21〜21cは、相互に接続されるとともに、通信部23と接続されている。また、各メモリ22〜22cは、各CPU21〜21cと接続されている。サービスプロセッサ24は、不図示のLAN(Local Area Network)などのネットワーク回線を介してサーバの管理者端末に接続され、管理者端末からの指示を受けてノードまたはビルディングブロック10内の各種設定変更などの制御を行う。   The service processor 24 includes a control unit 25 and a communication unit 26. In the example shown in FIG. 2, the CPUs 21 to 21 c are connected to each other and to the communication unit 23. The memories 22 to 22c are connected to the CPUs 21 to 21c. The service processor 24 is connected to an administrator terminal of a server via a network line such as a LAN (Local Area Network) not shown, and receives various instructions from the administrator terminal to change various settings in the node or the building block 10. Control.

また、各CPU21〜21cは、XB接続部27またはXB接続部27aと接続されている。なお、XB接続部27、27aは、同一のXB接続部であってもよい。また、各CPU21〜21cは、PCIe接続部28と接続されている。また、通信部23は、サービスプロセッサ24が有する通信部26と接続されている。なお、制御部25、通信部26、通信部23、各CPU21〜21cは、例えば、IC(Inter-Integrated Circuit)で接続されている。 Further, each of the CPUs 21 to 21c is connected to the XB connection unit 27 or the XB connection unit 27a. The XB connection units 27 and 27a may be the same XB connection unit. Further, each of the CPUs 21 to 21 c is connected to the PCIe connection unit 28. The communication unit 23 is connected to a communication unit 26 included in the service processor 24. The control unit 25, a communication unit 26, a communication unit 23, each CPU21~21c, for example, are connected by I 2 C (Inter-Integrated Circuit ).

CPU21〜21cは、アプリケーションを実行する演算処理装置である。また、各CPU21〜21cには、それぞれメモリ22〜22cが接続されている。また、各CPU21〜21cは、実行中のアプリケーションが共有メモリの割当てを要求した場合には、相互に通信を行い、アプリケーションが使用する共有メモリの割当てを行う。また、各CPU21〜21cは、各メモリ22〜22cや、他のビルディングブロック10a〜10eが有するメモリの一部を共有メモリとして利用する。   The CPUs 21 to 21c are arithmetic processing devices that execute applications. The CPUs 21 to 21c are connected to memories 22 to 22c, respectively. Further, when the running application requests allocation of the shared memory, the CPUs 21 to 21 c communicate with each other and allocate the shared memory used by the application. In addition, each of the CPUs 21 to 21c uses a part of the memory included in each of the memories 22 to 22c and the other building blocks 10a to 10e as a shared memory.

図3は、共有メモリ実体が割り当てられたノードに、他のノードがアタッチする場合のメモリマップの一例を示す図である。図3の例では、メモリ実体を所有するノード(これをホームノードと称する)に、共有メモリが割り当てられると、ホームノードはこれを一定の領域サイズに分割する。この分割単位をセグメント(segment)と称するが、セグメントに分割する事は必須ではない。他のノードが当該ホームノードが所有する共有メモリの割り当てを要求する場合、すなわちアタッチする事で、当該ホームノードの共有メモリを使用することができる。このリモートノードが使用するメモリ領域を共有メモリイメージ領域と称する。この共有メモリイメージ領域は、単独のリモートノードがアタッチしても良いし、複数のリモートノードがアタッチしても良い。   FIG. 3 is a diagram illustrating an example of a memory map when another node attaches to a node to which a shared memory entity is assigned. In the example of FIG. 3, when a shared memory is allocated to a node that owns a memory entity (referred to as a home node), the home node divides it into a certain area size. This division unit is referred to as a segment, but it is not essential to divide it into segments. When another node requests allocation of the shared memory owned by the home node, that is, by attaching, the shared memory of the home node can be used. A memory area used by the remote node is referred to as a shared memory image area. This shared memory image area may be attached by a single remote node or a plurality of remote nodes.

図2に戻り、各CPU21〜21cは、物理アドレスと、物理アドレスが割り振られたメモリと接続されたCPUの識別子であるCPUID(identification)とを対応付けたノードマップを有する。なお、このCPUIDはシステム1で一意に決定され、重複しない。   Returning to FIG. 2, each of the CPUs 21 to 21 c has a node map in which a physical address is associated with a CPU ID (identification) that is an identifier of a CPU connected to a memory to which the physical address is allocated. This CPUID is uniquely determined by the system 1 and does not overlap.

各CPU21〜21cは、ノードマップを用いて、他のCPUと通信を行う。例えば、CPU21は、アクセス対象となる物理アドレスと対応付けられたCPUIDが、CPU21〜21cとは異なるCPUを示す場合には、XB接続部27、またはXB接続部27a、およびXB2を介して他のノードにメモリアクセスのリクエストを送信する。また、CPU21は、自身と接続されたメモリに対するリクエストを他のノードから受信した場合には、リクエストの対象となるデータを自身と接続されたメモリ22から読出し、リクエスト元へ送信する。他のCPU21a〜21cも同様の処理を行う。   Each CPU 21-21c communicates with other CPUs using a node map. For example, when the CPU ID associated with the physical address to be accessed indicates a CPU different from the CPUs 21 to 21c, the CPU 21 receives another CPU via the XB connection unit 27 or the XB connection unit 27a and XB2. Send a memory access request to the node. Further, when the CPU 21 receives a request for the memory connected to itself from another node, the CPU 21 reads the data to be requested from the memory 22 connected to itself and transmits it to the request source. The other CPUs 21a to 21c perform the same processing.

また、各CPU21〜21cは、TLB(Translation Lookaside Buffer)を用いたアドレス変換を行うとともに、TLBミスが発生した際に、トラップ処理を実行するなど、従来のCPUと同様の処理を実行する機能も有する。   In addition, each of the CPUs 21 to 21c performs a function of executing processing similar to that of a conventional CPU, such as performing address conversion using a TLB (Translation Lookaside Buffer) and executing trap processing when a TLB miss occurs. Have.

また、各CPU21〜21cは、ノード間のデータ転送の異常(エラー)を検出する。ノード間のデータ転送の異常を検出する方法の一例について説明する。例えば、各CPU21〜21cは、リクエストを送信してからの時間を計測する。続いて、リクエスト(要求)を送信してからレスポンス(応答)を受信する前に、リクエストを送信してからの時間が、所定時間を超えた場合には、タイムアウトになったため、各CPU21〜21cは、ノード間のデータ転送の異常を検出する。また、各CPU21〜21cは、リクエストに対して他のノードから否定応答が返って来た場合も異常を検出する。   In addition, each of the CPUs 21 to 21c detects an abnormality (error) in data transfer between nodes. An example of a method for detecting an abnormality in data transfer between nodes will be described. For example, each of the CPUs 21 to 21c measures the time after transmitting the request. Subsequently, before sending a request (request) and before receiving a response (response), if the time after sending the request exceeds a predetermined time, a time-out has occurred, so each of the CPUs 21 to 21c. Detects an abnormality in data transfer between nodes. Each of the CPUs 21 to 21c also detects an abnormality when a negative response is returned from another node in response to the request.

そして、異常を検出した場合には、各CPU21〜21cは、様々な処理を行う。例えば、異常の発生の原因となったノード(例えば、ダウンしたノード)によって、各メモリ22〜22cの共有メモリにライトバックされるダーティのキャッシュデータが、ライトバックされない場合には、各CPU21〜21cは、次のような処理を行う。すなわち、各CPU21〜21cは、キャッシュの状態を示すディレクトリに、ダウンしたノードによって、各メモリ22〜22cの共有メモリにライトバックされるダーティのキャッシュデータが、ライトバックされなかった異常を示す値を書き込む。また、異常を検出し、異常の発生の原因となったノードによって、各メモリ22〜22cの共有メモリにライトバックされるダーティのキャッシュデータが、ライトバックされない場合には、各CPU21〜21cは、次のような処理を行うこともできる。すなわち、各CPU21〜21cは、ダウンしたノードによってキャッシュデータがライトバックされる各メモリ22〜22cの共有メモリの領域に、エラー状態を示すデータを書き込むこともできる。これらの処理により、ライトバックされなかった共有メモリのデータが正常でないことを示すことができる。   And when abnormality is detected, each CPU21-21c performs various processes. For example, when dirty cache data written back to the shared memory of each of the memories 22 to 22c is not written back by the node that caused the abnormality (for example, a down node), each of the CPUs 21 to 21c Performs the following process. That is, each of the CPUs 21 to 21c has a value indicating an abnormality in which the dirty cache data written back to the shared memory of each of the memories 22 to 22c is not written back by the down node in the directory indicating the cache state. Write. In addition, when dirty cache data that is written back to the shared memory of each of the memories 22 to 22 c is not written back by the node that has detected the abnormality and caused the occurrence of the abnormality, each of the CPUs 21 to 21 c The following processing can also be performed. That is, each of the CPUs 21 to 21c can write data indicating an error state in the shared memory area of each of the memories 22 to 22c where the cache data is written back by the down node. These processes can indicate that the data in the shared memory that has not been written back is not normal.

また、後述のホームCPUにライトバックの要求が届かないケースでは、後述のローカルCPUがホームCPUからの後述のタイムアウトを検出することで、トランザクション失敗を認識する。この場合、ローカルCPUは、該当データを破棄する。ホームCPUが管理するディレクトリ上はローカルCPUがデータをキャッシュに持ち出した状態のままであるので、ホームCPUから「MoveOut」要求が発生する。この「MoveOut」要求は、ローカルCPUでキャッシュミスが発生するが、この「MoveOut」要求に対してエラー応答を返し、ホームCPUにあるディレクトリの状態を異常に更新、すなわち、上述したエラー状態を示すデータを書き込む。   In a case where a write back request does not reach the home CPU described later, the local CPU described later recognizes a transaction failure by detecting a timeout described later from the home CPU. In this case, the local CPU discards the corresponding data. Since the local CPU keeps the data taken out to the cache on the directory managed by the home CPU, a “MoveOut” request is generated from the home CPU. This “MoveOut” request causes a cache miss in the local CPU, but returns an error response to this “MoveOut” request, abnormally updates the state of the directory in the home CPU, that is, indicates the error state described above. Write data.

また、エラー発生アドレスレジスタに、ダウンしたノードの共有メモリの物理アドレス(Physical Address;PA)が書き込まれた場合には、トラップ(割込み)が発生する。すなわち、エラー発生アドレスレジスタに、物理アドレスが書き込まれた場合には、各CPU21〜21cは、トラップ処理を行う。このトラップ処理では、例えば、シグナルハンドラにシグナルが送信される。   Further, when the physical address (PA) of the shared memory of the down node is written in the error occurrence address register, a trap (interrupt) is generated. That is, when a physical address is written in the error occurrence address register, each of the CPUs 21 to 21c performs a trap process. In this trap processing, for example, a signal is transmitted to the signal handler.

ここで、シグナルハンドラは、シグナルを受信すると起動される。シグナルハンドラによる処理では、様々な処理が行われる。例えば、シグナルハンドラによる処理では、ダウンしたノードに「共有メモリ実体」が存在する場合に、「共有メモリイメージ」をデタッチ、すなわち、ダウンしたノードが有する共有メモリの割当ての解除が行われる。また、シグナルハンドラによる処理では、他のノードがダウンしたことを検出したノードのメモリの共有メモリに対するリカバリ処理を行う。リカバリ処理の一例としては、共有メモリにライトバックされるキャッシュデータがライトバックされなかった異常を示す値を、ディレクトリからクリアする処理が挙げられる。また、リカバリ処理の他の一例としては、エラー状態を示すデータを、共有メモリからクリアする処理が挙げられる。   Here, the signal handler is activated when a signal is received. Various processes are performed in the process by the signal handler. For example, in the processing by the signal handler, when the “shared memory entity” exists in the down node, the “shared memory image” is detached, that is, the shared memory of the down node is deallocated. Further, in the processing by the signal handler, recovery processing is performed on the shared memory of the memory of the node that has detected that another node is down. As an example of the recovery process, there is a process of clearing a value indicating an abnormality in which the cache data written back to the shared memory is not written back from the directory. Another example of the recovery process is a process of clearing data indicating an error state from the shared memory.

メモリ22〜22cは、情報処理システム1が有する全てのCPUが共用するメモリである。また、情報処理システム1においては、全てのビルディングブロック10〜10eが有するメモリに対して、各ビルディングブロック10〜10eのサービスプロセッサが、同一の物理アドレス空間にマッピングされる物理アドレスを振分ける。すなわち、情報処理システム1が有するすべてのメモリのうち、少なくとも共有メモリとして使用されるメモリには、重複しない値の物理アドレスが割当てられている。   The memories 22 to 22c are memories shared by all the CPUs included in the information processing system 1. In the information processing system 1, the service processors of the building blocks 10 to 10e allocate physical addresses mapped to the same physical address space to the memories of all the building blocks 10 to 10e. That is, a physical address having a non-overlapping value is assigned to at least a memory used as a shared memory among all the memories included in the information processing system 1.

また、メモリ22〜22cは、記憶領域の一部を、情報処理システム1が有する全てのCPUが共用する共有領域とし、他の部分を、自身にアクセスするCPU21〜21cがカーネルデータやユーザデータを格納するローカル領域、他ノードとの共有メモリを介したやり取りとは無関係なI/O装置が利用するI/O領域とする。   In addition, in the memories 22 to 22c, a part of the storage area is a shared area shared by all the CPUs of the information processing system 1, and the other parts of the CPUs 21 to 21c that access the CPU 21 to 21c receive kernel data and user data. A local area to be stored and an I / O area used by an I / O device unrelated to exchanges with other nodes via a shared memory are used.

制御部25は、ビルディングブロック10の制御を行う。例えば、制御部25は、ビルディングブロック10の電源管理や、ビルディングブロック10内の異常の監視や制御等を実行する。また、制御部25は、他のビルディングブロック10a〜10eが有するサービスプロセッサと、不図示のネットワークによって接続されており、各ビルディングブロック10a〜10e間で連係した制御を実行する。また、制御部25は、各CPU21〜21cが実行するOSと通信を行うことができる。   The control unit 25 controls the building block 10. For example, the control unit 25 executes power management of the building block 10, monitoring and control of abnormality in the building block 10, and the like. Moreover, the control part 25 is connected with the service processor which the other building blocks 10a-10e have by the network not shown, and performs the control linked between each building block 10a-10e. Further, the control unit 25 can communicate with the OS executed by each of the CPUs 21 to 21c.

また、制御部25は、通信部26と通信部23を介して、各CPU21〜21cにアクセスする。そして、制御部25は、各ビルディングブロック10〜10eが有するノードマップの更新や制御等を実行する。   The control unit 25 accesses the CPUs 21 to 21 c via the communication unit 26 and the communication unit 23. And the control part 25 performs update, control, etc. of the node map which each building block 10-10e has.

なお、通信部23は、サービスプロセッサ24が有する通信部26を介して、制御部25による制御信号を各CPU21〜21cに伝達する。また、通信部26は、制御部25による制御信号をノード20が有する通信部23に伝達する。また、XB接続部27、27aは、各CPU21〜21cをXB2と接続し、各ビルディングブロック10〜10eが有するCPU間の通信を中継する。また、PCIe接続部28は、各CPU21〜21cによるI/O装置へのアクセスを中継する。   The communication unit 23 transmits a control signal from the control unit 25 to the CPUs 21 to 21c via the communication unit 26 included in the service processor 24. In addition, the communication unit 26 transmits a control signal from the control unit 25 to the communication unit 23 included in the node 20. The XB connection units 27 and 27a connect the CPUs 21 to 21c to the XB 2 and relay communication between the CPUs of the building blocks 10 to 10e. The PCIe connection unit 28 relays access to the I / O device by the CPUs 21 to 21c.

次に、図4を用いて、各CPU21〜21cが有する機能構成について説明する。図4は、実施例1に係るCPUの機能構成を説明するための図である。なお、CPU21a〜21cは、CPU21と同様の機能を有するため、説明を省略する。また、図4に示す例では、サービスプロセッサ24とCPU21とを接続する接続部23、26については、記載を省略した。   Next, the functional configuration of each of the CPUs 21 to 21c will be described with reference to FIG. FIG. 4 is a diagram for explaining a functional configuration of the CPU according to the first embodiment. Note that the CPUs 21a to 21c have the same functions as the CPU 21, and a description thereof will be omitted. In the example illustrated in FIG. 4, the description of the connection units 23 and 26 that connect the service processor 24 and the CPU 21 is omitted.

図4に示す例では、CPU21は、演算処理部30、ルータ40、メモリアクセス部41、PCIe制御部42を有する。また、演算処理部30は、演算部31、L1(Level 1)キャッシュ32、L2(Level 2)キャッシュ33、ノードマップ34、アドレス変換部35、キャッシュディレクトリ管理部36、パケット制御部37、エラー発生アドレスレジスタ96、トラップ発生部97を有する。なお、ルータ40、メモリアクセス部41、PCIe制御部42などの各部を同一のCPU21の内部に含めなくても良い。   In the example illustrated in FIG. 4, the CPU 21 includes an arithmetic processing unit 30, a router 40, a memory access unit 41, and a PCIe control unit 42. The arithmetic processing unit 30 includes an arithmetic unit 31, an L1 (Level 1) cache 32, an L2 (Level 2) cache 33, a node map 34, an address conversion unit 35, a cache directory management unit 36, a packet control unit 37, and an error occurrence. An address register 96 and a trap generator 97 are provided. Note that the router 40, the memory access unit 41, the PCIe control unit 42, and the like may not be included in the same CPU 21.

また、パケット制御部37は、パケット生成部37a、パケット受信部37b、異常検出部37cを有する。また、PCIe制御部42は、リクエスト生成部42a、PCIeバス制御部42b、異常検出部42cを有する。   The packet control unit 37 includes a packet generation unit 37a, a packet reception unit 37b, and an abnormality detection unit 37c. The PCIe control unit 42 includes a request generation unit 42a, a PCIe bus control unit 42b, and an abnormality detection unit 42c.

まず、演算処理部30が有するノードマップ34について説明する。ノードマップ34は、物理アドレスと、物理アドレスが示す記憶領域を有するメモリと接続されたCPUのCPUIDとが対応付けて登録されるテーブルである。以下、ノードマップ34に登録される情報の例を、図面を用いて説明する。   First, the node map 34 included in the arithmetic processing unit 30 will be described. The node map 34 is a table in which a physical address and a CPU ID of a CPU connected to a memory having a storage area indicated by the physical address are registered in association with each other. Hereinafter, examples of information registered in the node map 34 will be described with reference to the drawings.

図5は、実施例1に係るノードマップのデータ構成の一例を説明するための図である。図5に示す例では、ノードマップ34は、「アドレス」、「バリッド」、「ノードID」、「CPUID」の各項目の登録内容を対応付けたエントリを有する。ここで、各エントリの「アドレス」の項目には、連続する複数の物理アドレスを含むアドレス域を示す情報が格納される。   FIG. 5 is a diagram for explaining an example of the data configuration of the node map according to the first embodiment. In the example illustrated in FIG. 5, the node map 34 has an entry that associates the registered contents of the items “address”, “valid”, “node ID”, and “CPUID”. Here, information indicating an address area including a plurality of consecutive physical addresses is stored in the “address” item of each entry.

例えば、情報処理システム1は、全てのメモリに対して振り分けた物理アドレス空間を均等な大きさのアドレス域に分割し、各アドレス域に#0、#1、#2等の識別子を付与する。そして、情報処理システム1は、各アドレス域を示す識別子を、ノードマップ34が有する各エントリの「アドレス」に登録する。図5の例は、1番目のエントリの「アドレス」の項目に、#0の識別子が登録された場合を示す。また、図5の例は、2番目のエントリの「アドレス」の項目に、#1の識別子が登録された場合を示す。また、図5の例は、3番目のエントリの「アドレス」の項目に、#2の識別子が登録された場合を示す。   For example, the information processing system 1 divides a physical address space allocated to all memories into equal-sized address areas, and assigns identifiers such as # 0, # 1, and # 2 to each address area. Then, the information processing system 1 registers an identifier indicating each address area in the “address” of each entry included in the node map 34. The example of FIG. 5 shows a case where the identifier of # 0 is registered in the “address” item of the first entry. The example of FIG. 5 shows a case where the identifier of # 1 is registered in the “address” item of the second entry. The example of FIG. 5 shows a case where the identifier of # 2 is registered in the “address” item of the third entry.

また、各エントリの「バリッド」の項目には、物理アドレスが示す記憶領域にアクセスすることができるか否かを示すバリッドビットが登録される。例えば、物理アドレスが示す記憶領域が、各CPUで共有される共有領域である場合には、アクセスを行う事ができる旨のバリッドビット(例えば「1」)が登録される。図5の例は、1番目のエントリの「バリッド」の項目に、バリッドビット「1」が登録された場合を示す。また、図5の例は、2番目のエントリの「バリッド」の項目に、バリッドビット「1」が登録された場合を示す。また、図5の例は、3番目のエントリの「バリッド」の項目に、物理アドレスが示す記憶領域にアクセスすることができないことを示すバリッドビット「0」が登録された場合を示す。   In the “valid” item of each entry, a valid bit indicating whether or not the storage area indicated by the physical address can be accessed is registered. For example, when the storage area indicated by the physical address is a shared area shared by the CPUs, a valid bit (for example, “1”) indicating that access can be performed is registered. The example of FIG. 5 shows a case where the valid bit “1” is registered in the “valid” item of the first entry. The example of FIG. 5 shows a case where the valid bit “1” is registered in the “valid” item of the second entry. The example of FIG. 5 shows a case where a valid bit “0” indicating that the storage area indicated by the physical address cannot be accessed is registered in the “valid” item of the third entry.

また、各エントリの「ノードID」の項目には、物理アドレスが振り分けられたメモリが存在するノードを示す識別子が登録される。図5の例は、1番目のエントリの「ノードID」の項目に、ノードを示す識別子「1」が登録された場合を示す。また、図5の例は、2番目のエントリの「ノードID」の項目に、ノードを示す識別子「1」が登録された場合を示す。   In addition, an identifier indicating a node in which a memory to which a physical address is allocated exists is registered in the “node ID” item of each entry. The example of FIG. 5 shows a case where the identifier “1” indicating the node is registered in the “node ID” item of the first entry. The example of FIG. 5 shows a case where the identifier “1” indicating the node is registered in the “node ID” item of the second entry.

また、各エントリの「CPUID」の項目には、物理アドレスが振り分けられたメモリと接続されたCPUを示す識別子が登録される。すなわち、ノードマップ34は、アクセス対象となる物理アドレスが、どのCPUと接続されたメモリの物理アドレスであるかを示す。図5の例は、1番目のエントリの「CPUID」の項目に、CPUを示す識別子「4」が登録された場合を示す。また、図5の例は、2番目のエントリの「CPUID」の項目に、CPUを示す識別子「5」が登録された場合を示す。   In addition, an identifier indicating the CPU connected to the memory to which the physical address is allocated is registered in the “CPUID” item of each entry. That is, the node map 34 indicates which CPU is connected to which physical address to be accessed is a physical address of a memory. The example of FIG. 5 illustrates a case where the identifier “4” indicating the CPU is registered in the item “CPUID” of the first entry. The example of FIG. 5 shows a case where the identifier “5” indicating the CPU is registered in the “CPUID” item of the second entry.

なお、ノードマップ34には、アクセス対象となる物理アドレスがどのCPUと接続された物理アドレスであるかを示すことができれば、本実施例以外の任意の形式で情報を登録することとしてよい。   The node map 34 may register information in any format other than the present embodiment as long as it can indicate which CPU the physical address to be accessed is connected to.

図4に戻って、演算部31は、演算処理を実行し、OS(Operating System)やアプリケーションを実行する演算装置のコアである。また、演算部31は、データのリード(読み込み)や、ライト(書き込み)を行う場合には、リード対象またはライト対象となるデータが格納された記憶領域の論理アドレス(Virtual Address;VA)をアドレス変換部35に出力する。   Returning to FIG. 4, the calculation unit 31 is a core of a calculation device that executes calculation processing and executes an OS (Operating System) and applications. In addition, when performing data reading (reading) or writing (writing), the arithmetic unit 31 addresses a logical address (Virtual Address; VA) of a storage area in which data to be read or written is stored. The data is output to the conversion unit 35.

L1キャッシュ32は、演算部31で頻繁に利用されるデータを一時的に記憶するキャッシュメモリである。L2キャッシュ33は、L1キャッシュ32と同様に、頻繁に利用されるデータを一時的に記憶するが、L1キャッシュ32よりも記憶容量が大きく、データを読み書きする速度が低速なキャッシュメモリである。ここで、ディレクトリ情報は、キャッシュディレクトリ管理部36に記憶されており、メモリ22の各記憶領域に記憶されたデータをキャッシュしたCPUや、キャッシュされたデータの更新状況を示す情報である。なお、以下の説明では、「ディレクトリ情報」を単に「ディレクトリ」と表記する場合がある。このディレクトリによるキャッシュメモリ管理方法は、ccNUMA(Cache Coherent Non-Uniform Memory)システムでよく利用される技術であるが、ccNUMA技術、ディレクトリ技術の両方とも公知の技術であるので、ここでは詳しく説明しない。また、図4ではディレクトリ36aはキャッシュディレクトリ管理部36に内蔵されているが、メモリ22の記憶領域の一部にディレクトリ情報を記録する事も可能である。   The L1 cache 32 is a cache memory that temporarily stores data frequently used in the calculation unit 31. Similar to the L1 cache 32, the L2 cache 33 temporarily stores frequently used data. However, the L2 cache 33 is a cache memory having a larger storage capacity than the L1 cache 32 and a low speed for reading and writing data. Here, the directory information is stored in the cache directory management unit 36 and is information indicating the CPU that caches the data stored in each storage area of the memory 22 and the update status of the cached data. In the following description, “directory information” may be simply referred to as “directory”. This directory-based cache memory management method is a technique often used in a ccNUMA (Cache Coherent Non-Uniform Memory) system, but both the ccNUMA technique and the directory technique are well-known techniques and will not be described in detail here. In FIG. 4, the directory 36 a is built in the cache directory management unit 36, but directory information can also be recorded in a part of the storage area of the memory 22.

アドレス変換部35は、TLB35aを有する。TLB35aには、論理アドレスと物理アドレスとを対応付けたエントリが登録される。アドレス変換部35は、TLB35aを用いて、演算部31が出力した論理アドレスを物理アドレスに変換する。例えば、アドレス変換部35は、演算部31から取得した論理アドレスに対応する物理アドレスをTLB35aから検索し、検索した結果、物理アドレスが得られた場合には、得られた物理アドレスをキャッシュディレクトリ管理部36に出力する。なお、アドレス変換部35は、TLBミスが発生した場合は、トラップ処理を実行する。ここで、OSなどのシステムソフトウェアは、TLBミスした物理アドレスと論理アドレスの組をTLB35aに登録する。ただし、かかる組の登録が禁止された物理アドレスについては、TLBミスが発生した場合であっても、OSなどのシステムソフトウェアにより、物理アドレスと論理アドレスとの組がTLB35aに登録されない。   The address conversion unit 35 has a TLB 35a. An entry that associates a logical address with a physical address is registered in the TLB 35a. The address conversion unit 35 converts the logical address output from the calculation unit 31 into a physical address using the TLB 35a. For example, the address conversion unit 35 searches the physical address corresponding to the logical address acquired from the calculation unit 31 from the TLB 35a, and when the physical address is obtained as a result of the search, the obtained physical address is managed by the cache directory management. To the unit 36. Note that the address conversion unit 35 executes trap processing when a TLB miss occurs. Here, the system software such as the OS registers the TLB missed physical address and logical address pair in the TLB 35a. However, for a physical address for which registration of such a set is prohibited, even if a TLB miss occurs, a set of a physical address and a logical address is not registered in the TLB 35a by system software such as the OS.

ここで、OSやアドレス変換部35などは、演算部31が実行するアプリケーションから共有メモリへの割当てを要求された場合には、次のような処理を実行する。すなわち、TLBミスが発生した場合、OSなどのシステムソフトウェアなどは、エントリをTLB35aに登録する。また、TLBミスが発生しない場合には、既にエントリがTLB35aに登録済みであるので、アドレス変換部35は、論理アドレスから物理アドレスへの変換を行う。   Here, the OS, the address conversion unit 35, and the like execute the following processing when an allocation to the shared memory is requested from an application executed by the calculation unit 31. That is, when a TLB miss occurs, system software such as the OS registers an entry in the TLB 35a. If no TLB miss occurs, the entry has already been registered in the TLB 35a, so the address conversion unit 35 performs conversion from a logical address to a physical address.

また、アドレス変換部35やOSは、アプリケーションやOSからローカル領域の割当を要求された場合は、次のような処理を実行する。すなわち、TLBミスが発生した場合、OSなどのシステムソフトウェアは、CPU21専用のローカル領域にアクセスするための論理アドレスと、ローカル領域に割当てられる範囲の物理アドレスとを対応付けたエントリをTLB35aに登録する。   Further, the address conversion unit 35 and the OS execute the following process when an application or OS requests local area allocation. That is, when a TLB miss occurs, system software such as the OS registers an entry in the TLB 35a that associates a logical address for accessing the local area dedicated to the CPU 21 with a physical address in a range allocated to the local area. .

また、OSなどは、異常が発生したノードの共有メモリの物理アドレスを含むエントリをTLB35aから削除する。   Further, the OS or the like deletes the entry including the physical address of the shared memory of the node where the abnormality has occurred from the TLB 35a.

キャッシュディレクトリ管理部36は、ディレクトリ36aを有する。キャッシュディレクトリ管理部36は、キャッシュデータおよびディレクトリの管理を行う。キャッシュディレクトリ管理部36は、アドレス変換部35から、演算部31が出力した論理アドレスを変換した物理アドレスを取得する。   The cache directory management unit 36 has a directory 36a. The cache directory management unit 36 manages cache data and directories. The cache directory management unit 36 acquires a physical address obtained by converting the logical address output from the calculation unit 31 from the address conversion unit 35.

そして、キャッシュディレクトリ管理部36は、アドレス変換部35から物理アドレスを取得した場合には、次のような処理を実行する。すなわち、キャッシュディレクトリ管理部36は、ディレクトリ36aを用いて、取得した物理アドレスに格納されたデータがL1キャッシュ32およびL2キャッシュ33にキャッシュされているか否かを判定する。   When the cache directory management unit 36 acquires a physical address from the address conversion unit 35, the cache directory management unit 36 performs the following processing. That is, the cache directory management unit 36 uses the directory 36 a to determine whether or not the data stored at the acquired physical address is cached in the L1 cache 32 and the L2 cache 33.

そして、キャッシュディレクトリ管理部36は、取得した物理アドレスに格納されたデータがキャッシュされていると判定した場合には、キャッシュされているデータを演算部31に出力する。また、キャッシュディレクトリ管理部36は、取得した物理アドレスに格納されたデータがL1キャッシュ32およびL2キャッシュ33にキャッシュされていない場合は、次のような処理を実行する。まず、キャッシュディレクトリ管理部36は、ノードマップ34を参照し、取得した物理アドレスを含む範囲のエントリを識別する。そして、キャッシュディレクトリ管理部36は、識別したエントリのCPUIDがCPU21のCPUIDであるか否かを判定する。その後、キャッシュディレクトリ管理部36は、識別したエントリのCPUIDがCPU21のCPUIDである場合は、メモリアクセス部41に、物理アドレスを出力する。   When the cache directory management unit 36 determines that the data stored at the acquired physical address is cached, the cache directory management unit 36 outputs the cached data to the calculation unit 31. Further, when the data stored at the acquired physical address is not cached in the L1 cache 32 and the L2 cache 33, the cache directory management unit 36 executes the following processing. First, the cache directory management unit 36 refers to the node map 34 and identifies an entry in a range including the acquired physical address. Then, the cache directory management unit 36 determines whether or not the CPUID of the identified entry is the CPUID of the CPU 21. Thereafter, when the CPUID of the identified entry is the CPUID of the CPU 21, the cache directory management unit 36 outputs a physical address to the memory access unit 41.

また、キャッシュディレクトリ管理部36は、識別したエントリのCPUIDがCPU21のCPUIDではない場合には、次のような処理を実行する。すなわち、キャッシュディレクトリ管理部36は、識別したエントリのCPUIDとノードIDとを取得する。そして、キャッシュディレクトリ管理部36は、パケット制御部37に対して、取得したCPUIDと物理アドレスとを出力する。   Further, when the CPUID of the identified entry is not the CPUID of the CPU 21, the cache directory management unit 36 executes the following process. That is, the cache directory management unit 36 acquires the CPU ID and node ID of the identified entry. Then, the cache directory management unit 36 outputs the acquired CPU ID and physical address to the packet control unit 37.

また、キャッシュディレクトリ管理部36は、出力した物理アドレスが示す記憶領域に格納されているデータをメモリアクセス部41やパケット制御部37から取得した場合には、取得したデータをL1キャッシュ32およびL2キャッシュ33に格納する。そして、キャッシュディレクトリ管理部36は、L1キャッシュ32にキャッシュさせたデータを演算部31に出力する。   In addition, when the cache directory management unit 36 acquires the data stored in the storage area indicated by the output physical address from the memory access unit 41 or the packet control unit 37, the acquired data is stored in the L1 cache 32 and the L2 cache. 33. Then, the cache directory management unit 36 outputs the data cached in the L1 cache 32 to the calculation unit 31.

また、キャッシュディレクトリ管理部36は、パケット制御部37から物理アドレスを取得した場合、すなわち、他のCPUやI/O装置からのメモリアクセスのリクエストの対象となる物理アドレスを取得した場合には、次のような処理を実行する。すなわち、キャッシュディレクトリ管理部36は、ノードマップ34を参照して、取得した物理アドレスがローカル領域に振り分けられた物理アドレスであるか否かを判定する。   In addition, when the cache directory management unit 36 acquires a physical address from the packet control unit 37, that is, when a physical address that is a target of a memory access request from another CPU or I / O device is acquired, The following processing is executed. That is, the cache directory management unit 36 refers to the node map 34 to determine whether or not the acquired physical address is a physical address assigned to the local area.

取得した物理アドレスがローカル領域に振り分けられた物理アドレスである場合には、キャッシュディレクトリ管理部36は、パケット制御部37に対して、リクエスト元に否定応答(アクセスエラー)を送信するように指示する。   If the acquired physical address is a physical address assigned to the local area, the cache directory management unit 36 instructs the packet control unit 37 to transmit a negative response (access error) to the request source. .

また、取得した物理アドレスが共有領域に振り分けられた物理アドレスである場合には、キャッシュディレクトリ管理部36は、取得した物理アドレスが示す記憶領域に記憶されたデータを取得し、取得したデータをパケット制御部37に出力し、リクエスト元へ送信するよう指示する。   If the acquired physical address is a physical address allocated to the shared area, the cache directory management unit 36 acquires data stored in the storage area indicated by the acquired physical address, and packetizes the acquired data. It outputs to the control part 37 and instruct | indicates to transmit to a request origin.

また、キャッシュディレクトリ管理部36は、ディレクトリ方式を用いて、キャッシュしたデータのコヒーレンシを保持する処理を合わせて実行する。例えば、キャッシュディレクトリ管理部36は、メモリ22に格納されたデータをリクエスト送信元のCPUに送信させる場合には、当該データがリクエスト送信元のCPU以外の他のCPUがキャッシュしているか否かを判定する。   In addition, the cache directory management unit 36 executes a process for holding the coherency of the cached data using the directory method. For example, when the data stored in the memory 22 is transmitted to the request transmission source CPU, the cache directory management unit 36 determines whether or not the data is cached by a CPU other than the request transmission source CPU. judge.

そして、キャッシュディレクトリ管理部36は、リクエストの対象となるデータを他のCPUがキャッシュしていない場合は、L1キャッシュ32、L2キャッシュ33、メモリ22からリクエストの対象となるデータを取得する。その後、キャッシュディレクトリ管理部36は、取得したデータをパケット制御部37に出力する。   The cache directory management unit 36 acquires the data to be requested from the L1 cache 32, the L2 cache 33, and the memory 22 when other CPUs do not cache the data to be requested. Thereafter, the cache directory management unit 36 outputs the acquired data to the packet control unit 37.

一方、キャッシュディレクトリ管理部36は、リクエストの対象となるデータを他のCPUがキャッシュしている場合は、イリノイプロトコル等の手法を用いて、キャッシュコヒーレンスを保持するための処理を実行する。例えば、キャッシュディレクトリ管理部36は、キャッシュされたデータの状態がMESI(Modified/Exclusive/Shared/Invalid)のいずれであるかを判定する。   On the other hand, when another CPU caches the data to be requested, the cache directory management unit 36 executes a process for maintaining cache coherence using a technique such as an Illinois protocol. For example, the cache directory management unit 36 determines whether the state of the cached data is MESI (Modified / Exclusive / Shared / Invalid).

そして、キャッシュディレクトリ管理部36は、判定結果に応じて、他のCPUが有するキャッシュディレクトリ管理部とコヒーレンシを保持するためのリクエストやオーダー(命令)の送受信を行い、キャッシュされたデータの状態に応じた処理を実行する。ここで、「Modified」とは、いずれか1つのCPUがデータをキャッシュしており、かつ、キャッシュされたデータが更新されている状態を示す。なお、キャッシュされたデータの状態が「Modified」である場合には、ライトバックを実行する必要がある。   Then, according to the determination result, the cache directory management unit 36 transmits and receives requests and orders (commands) for maintaining coherency with the cache directory management unit of other CPUs, and according to the state of the cached data. Execute the process. Here, “Modified” indicates a state in which any one CPU caches data and the cached data is updated. Note that when the state of the cached data is “Modified”, it is necessary to execute write back.

また、「Exclusive」とは、いずれか1つのCPUがデータをキャッシュしており、かつ、キャッシュされたデータが更新されていない状態を示す。また、「Shared」とは、複数のCPUがデータをキャッシュしており、かつ、キャッシュされたデータが更新されていないことを示す。また、「Invalid」とは、キャッシュのステータスが登録されていないことを示す。   “Exclusive” indicates a state in which any one CPU caches data and the cached data is not updated. “Shared” indicates that a plurality of CPUs cache data and the cached data is not updated. “Invalid” indicates that the cache status is not registered.

詳細な例を挙げると、キャッシュディレクトリ管理部36は、ステータスがM(Modified)であるデータをキャッシュしたCPUに対してライトバックを指示するオーダーを送信するようパケット生成部37aに指示する。そして、キャッシュディレクトリ管理部36は、データのステータスを更新し、更新後のステータスに応じた処理を実行する。なお、キャッシュディレクトリ管理部36が送受信するリクエストやオーダーの種別については、後述する。   As a detailed example, the cache directory management unit 36 instructs the packet generation unit 37a to transmit an order for instructing write-back to a CPU that caches data whose status is M (Modified). Then, the cache directory management unit 36 updates the status of the data, and executes processing according to the updated status. The types of requests and orders sent and received by the cache directory management unit 36 will be described later.

また、キャッシュディレクトリ管理部36は、ノード間のデータ転送の異常が検出された場合に、異常の発生の原因となったノードによって、メモリ22の共有メモリにライトバックされるキャッシュデータが、ライトバックされないときには、次の処理を行う。すなわち、キャッシュディレクトリ管理部36は、ダウンしたノードによって、メモリ22の共有メモリにライトバックされるキャッシュデータが、ライトバックされなかった異常を示す値をディレクトリ36aの所定の領域に書き込む。   In addition, when an abnormality in data transfer between nodes is detected, the cache directory management unit 36 stores the cache data written back to the shared memory of the memory 22 by the node that caused the abnormality. If not, the following processing is performed. That is, the cache directory management unit 36 writes a value indicating an abnormality in which the cache data written back to the shared memory of the memory 22 is not written back to a predetermined area of the directory 36a by the down node.

図6は、ディレクトリのデータ構成の一例を説明するための図である。図6に示すように、ディレクトリ36aは、0ビット目から3ビット目までの4ビットの「UE」の項目を有する。また、ディレクトリ36aは、4ビット目から66ビット目までの63ビットの「PRC」の項目を有する。また、ディレクトリ36aは、67ビット目から68ビット目までの2ビットの「CKBIT」の項目を有する。「CKBIT」の項目には、キャッシュの状態をコード化したデータが登録される。「PRC」の項目には、キャッシュを保持しているCPUの位置をビットマップで表したデータが登録される。「UE」の項目には、ディレクトリの異常と異常の原因を表したデータが登録される。   FIG. 6 is a diagram for explaining an example of the data structure of a directory. As illustrated in FIG. 6, the directory 36 a includes a 4-bit “UE” item from the 0th bit to the 3rd bit. Further, the directory 36a has a 63-bit “PRC” item from the 4th bit to the 66th bit. Further, the directory 36a has a 2-bit “CKBIT” item from the 67th bit to the 68th bit. In the item “CKBIT”, data obtained by coding the cache state is registered. In the item “PRC”, data representing the position of the CPU holding the cache as a bitmap is registered. In the item “UE”, data representing a directory abnormality and the cause of the abnormality is registered.

ここで、図6の例に示すディレクトリ36aをキャッシュディレクトリ管理部36が有する場合について説明する。この場合に、異常が検出され、異常の発生の原因となったノードによって、メモリ22の共有メモリにライトバックされるキャッシュデータが、ライトバックされないときには、キャッシュディレクトリ管理部36は、次の処理を行う。すなわち、キャッシュディレクトリ管理部36は、ダウンしたノードによって、メモリ22の共有メモリにライトバックされるキャッシュデータが、ライトバックされなかった異常と、原因とを示す4ビット以下の値をディレクトリ36aの「UE」の項目に書き込む。これにより、ライトバックされなかった共有メモリのデータが正常でないことを示すことができる。   Here, a case where the cache directory management unit 36 includes the directory 36a illustrated in the example of FIG. 6 will be described. In this case, when the cache data written back to the shared memory of the memory 22 is not written back by the node that has detected the abnormality and caused the occurrence of the abnormality, the cache directory management unit 36 performs the following processing. Do. That is, the cache directory management unit 36 assigns a value of 4 bits or less indicating the abnormality and cause of the cache data written back to the shared memory of the memory 22 by the node that has gone down to “ Write in the item “UE”. This can indicate that the data in the shared memory that has not been written back is not normal.

また、キャッシュディレクトリ管理部36は、ノード間のデータ転送の異常が検出され、異常の発生の原因となったノードによって、メモリ22の共有メモリにライトバックされるキャッシュデータが、ライトバックされない場合には、次の処理を行うこともできる。すなわち、キャッシュディレクトリ管理部36は、ダウンしたノードによってキャッシュデータがライトバックされるメモリ22の共有メモリの領域に、エラー状態を示すデータを書き込むこともできる。ここで、共有メモリの領域に書き込まれるエラー状態を示すデータの一例について説明する。例えば、メモリ22に記憶されるデータに、所定のビット数ごとに、ECC(Error Check and Correct)データが含まれている場合に、ECCの生成多項式によっては、2ビット以上の誤り訂正をおこなうことができる。この場合に、他のエラーと比較して発生の可能性の低いn(n≧2)ビット以上のエラーを示す特定の値のシンドロームを、共有メモリの領域に書き込まれるエラー状態を示すデータとすることができる。また、データ本体に書き込んだ場合に、シンドロームが特定の値となるような値を、共有メモリの領域に書き込まれるエラー状態を示すデータとすることができる。これにより、ライトバックされなかった共有メモリのデータが正常でないことを示すことができる。   In addition, the cache directory management unit 36 detects an abnormality in data transfer between nodes, and cache data written back to the shared memory of the memory 22 by the node that caused the abnormality is not written back. The following processing can also be performed. That is, the cache directory management unit 36 can also write data indicating an error state in the shared memory area of the memory 22 where the cache data is written back by the down node. Here, an example of data indicating an error state written in the shared memory area will be described. For example, when the data stored in the memory 22 includes ECC (Error Check and Correct) data for each predetermined number of bits, error correction of 2 bits or more is performed depending on an ECC generation polynomial. Can do. In this case, a syndrome having a specific value indicating an error of n (n ≧ 2) bits or more that is unlikely to occur compared to other errors is used as data indicating an error state written in the shared memory area. be able to. Further, when the data is written in the data body, a value such that the syndrome becomes a specific value can be used as data indicating an error state written in the shared memory area. This can indicate that the data in the shared memory that has not been written back is not normal.

また、キャッシュディレクトリ管理部36は、メモリ22の共有メモリに対するリカバリ処理を行う。リカバリ処理の一例としては、共有メモリにライトバックされるキャッシュデータがライトバックされなかった異常を示す値を、ディレクトリ36aからクリアする処理が挙げられる。また、リカバリ処理の他の一例としては、エラー状態を示すデータを、共有メモリからクリアする処理が挙げられる。このリカバリ処理は、後述する通り、OSやアプリケーションソフトウェアの指示により行われる。   In addition, the cache directory management unit 36 performs recovery processing for the shared memory in the memory 22. As an example of the recovery process, there is a process of clearing a value indicating an abnormality in which the cache data written back to the shared memory is not written back from the directory 36a. Another example of the recovery process is a process of clearing data indicating an error state from the shared memory. As will be described later, this recovery processing is performed according to an instruction from the OS or application software.

パケット生成部37aは、キャッシュディレクトリ管理部36から物理アドレスと、CPUIDとを取得した場合には、取得した物理アドレスと、CPUIDとを格納したパケット、すなわち、メモリアクセスのリクエストとなるパケットを生成する。そして、パケット生成部37aは、生成したパケットをルータ40に送信する。   When the packet generation unit 37a acquires the physical address and CPUID from the cache directory management unit 36, the packet generation unit 37a generates a packet storing the acquired physical address and CPUID, that is, a packet serving as a memory access request. . Then, the packet generator 37a transmits the generated packet to the router 40.

図7は、実施例1に係るCPUが送信するパケットを説明するための図である。図7に示す例では、パケット生成部37aは、CPUIDと、物理アドレスと、リクエストの内容を示すデータとを含むリクエストを生成し、生成したリクエストをルータ40に出力する。このような場合には、ルータ40は、パケット生成部37aが生成したリクエストを、XB接続部27を介してXB2に出力する。すると、XB2は、リクエストに含まれるCPUIDが示すCPUへとリクエストを転送する。   FIG. 7 is a diagram for explaining a packet transmitted by the CPU according to the first embodiment. In the example illustrated in FIG. 7, the packet generation unit 37 a generates a request including a CPU ID, a physical address, and data indicating the content of the request, and outputs the generated request to the router 40. In such a case, the router 40 outputs the request generated by the packet generation unit 37a to the XB2 via the XB connection unit 27. Then, XB2 transfers the request to the CPU indicated by the CPUID included in the request.

なお、パケット生成部37aは、キャッシュディレクトリ管理部36からコヒーレンシを保持するためのリクエストやオーダーの発行の指示を受付けた場合には、指示されたリクエストやオーダーを生成する。そして、パケット生成部37aは、生成したリクエストやオーダーをルータ40、XB接続部27、XB2を介して、指示されたCPUに送信する。また、パケット生成部37aは、I/O装置からデータを取得する場合は、I/Oに対するアクセス要求をルータ40に出力する。   When the packet generation unit 37a receives an instruction to issue a request or order for maintaining coherency from the cache directory management unit 36, the packet generation unit 37a generates the instructed request or order. Then, the packet generation unit 37a transmits the generated request or order to the instructed CPU via the router 40, the XB connection unit 27, and XB2. Further, when acquiring data from the I / O device, the packet generation unit 37 a outputs an access request for the I / O to the router 40.

また、パケット生成部37aは、リクエストを送信すると、リクエストを送信したことを示すデータを異常検出部37cに出力する。このデータには、送信したリクエストの種類、アクセス対象のメモリの物理アドレスなどリクエストに関する情報が含まれている。   In addition, when the packet generation unit 37a transmits a request, the packet generation unit 37a outputs data indicating that the request has been transmitted to the abnormality detection unit 37c. This data includes information about the request, such as the type of request sent and the physical address of the memory to be accessed.

パケット受信部37bは、XB2、XB接続部27、ルータ40を介して、他のCPUや自ノード以外の他のI/O装置が出力したパケットを受信すると、受信したパケットに含まれる物理アドレスを取得する。そして、パケット受信部37bは、取得した物理アドレスをキャッシュディレクトリ管理部36に出力する。また、パケット受信部37bは、他のCPUが送信したデータを受信した場合には、受信したデータをキャッシュディレクトリ管理部36に出力する。   When the packet receiving unit 37b receives a packet output from another CPU or another I / O device other than its own node via the XB2, the XB connecting unit 27, and the router 40, the packet receiving unit 37b sets the physical address included in the received packet. get. Then, the packet receiving unit 37b outputs the acquired physical address to the cache directory management unit 36. Further, when receiving data transmitted by another CPU, the packet receiving unit 37b outputs the received data to the cache directory management unit 36.

また、パケット受信部37bは、コヒーレンシを保持するためのリクエストやオーダーを受信した場合には、受信したリクエストやオーダーをキャッシュディレクトリ管理部36に出力する。また、パケット受信部37bは、I/O装置に対するアクセス要求の応答やデータをルータ40から受信した場合は、受信した応答やデータをキャッシュディレクトリ管理部36に出力する。このような場合には、キャッシュディレクトリ管理部36は、例えば、取得したデータをメモリアクセス部41に出力し、メモリ22に格納される処理を行う。   Further, when receiving a request or order for maintaining coherency, the packet receiving unit 37b outputs the received request or order to the cache directory management unit 36. Further, when receiving a response or data of an access request to the I / O device from the router 40, the packet receiving unit 37b outputs the received response or data to the cache directory management unit 36. In such a case, for example, the cache directory management unit 36 outputs the acquired data to the memory access unit 41 and performs processing stored in the memory 22.

また、パケット受信部37bは、パケット生成部37aにより送信されたリクエストに対応するレスポンスを受信すると、レスポンスを受信したことを示すデータを異常検出部37cに出力する。このデータには、受信したレスポンスの種類などレスポンスに関する情報が含まれている。   Further, when receiving a response corresponding to the request transmitted by the packet generation unit 37a, the packet reception unit 37b outputs data indicating that the response has been received to the abnormality detection unit 37c. This data includes information about the response such as the type of response received.

異常検出部37cは、ポインタ80、タイマ81、送信パケット82、PA83、リクエスト84、検出部85を有する。   The abnormality detection unit 37c includes a pointer 80, a timer 81, a transmission packet 82, a PA 83, a request 84, and a detection unit 85.

異常検出部37cは、パケット生成部37aからリクエストを送信したことを示すデータを受信するたびに、時間を計測するためのタイマ81を起動させる。また、異常検出部37cは、パケット受信部37bからレスポンスを受信したことを示すデータを受信するたびに、タイマ81を起動させる。また、異常検出部37cは、パケット生成部37aからリクエストを送信したことを示すデータを受信すると、受信したデータから、送信されたリクエストに含まれるアクセス対象のメモリの物理アドレスをPA83に記憶させる。また、異常検出部37cは、パケット生成部37aからリクエストを送信したことを示すデータを受信すると、受信したデータから、送信されたリクエストをリクエスト84に記憶させる。   Each time the abnormality detection unit 37c receives data indicating that a request has been transmitted from the packet generation unit 37a, the abnormality detection unit 37c activates a timer 81 for measuring time. The abnormality detection unit 37c activates the timer 81 each time data indicating that a response has been received from the packet reception unit 37b. In addition, when receiving data indicating that the request has been transmitted from the packet generation unit 37a, the abnormality detection unit 37c stores, in the PA 83, the physical address of the access target memory included in the transmitted request from the received data. In addition, when the abnormality detection unit 37c receives data indicating that the request has been transmitted from the packet generation unit 37a, the abnormality detection unit 37c stores the transmitted request in the request 84 from the received data.

また、異常検出部37cは、パケット生成部37aからリクエストを送信したことを示すデータを受信すると、受信したデータから、送信されたリクエストの識別子を送信パケット82に登録する。   Further, when receiving data indicating that the request has been transmitted from the packet generation unit 37a, the abnormality detection unit 37c registers the identifier of the transmitted request in the transmission packet 82 from the received data.

また、異常検出部37cは、パケット受信部37bからレスポンスを受信したことを示すデータを受信すると、受信したデータから、受信したレスポンスに対応するリクエストに含まれるアクセス対象のメモリの物理アドレスをPA83から削除する。また、異常検出部37cは、パケット受信部37bからレスポンスを受信したことを示すデータを受信すると、受信したデータから、受信したレスポンスに対応するリクエストをリクエスト84から削除する。また、異常検出部37cは、パケット受信部37bからレスポンスを受信したことを示すデータを受信すると、受信したデータから、受信したレスポンスに対応するリクエストの識別子を送信パケット82から削除する。図8は、送信パケットの一例を示す図である。例えば、レスポンスが返ってきていないリクエストの数がN個である場合には、図8の例に示す送信パケット82には、パケット1管理用エントリからパケットN管理用エントリまでの各エントリに、N個のリクエストの識別子のそれぞれが登録される。   In addition, when the abnormality detection unit 37c receives data indicating that a response has been received from the packet reception unit 37b, the physical address of the memory to be accessed included in the request corresponding to the received response is received from the PA 83. delete. In addition, when the abnormality detection unit 37c receives data indicating that a response has been received from the packet reception unit 37b, the abnormality detection unit 37c deletes the request corresponding to the received response from the request 84 from the received data. In addition, when receiving data indicating that a response has been received from the packet receiving unit 37b, the abnormality detection unit 37c deletes the identifier of the request corresponding to the received response from the transmission packet 82 from the received data. FIG. 8 is a diagram illustrating an example of a transmission packet. For example, when the number of requests for which no response is returned is N, the transmission packet 82 shown in the example of FIG. 8 includes N in each entry from the packet 1 management entry to the packet N management entry. Each of the request identifiers is registered.

また、ポインタ80は、送信パケット82に登録された各識別子が示す各リクエストのうち、送信時刻が最も古いリクエストを指す。例えば、図8の例では、ポインタ80は、パケット1管理用エントリに登録された識別子が示すリクエストを指す。   The pointer 80 indicates the request with the oldest transmission time among the requests indicated by the identifiers registered in the transmission packet 82. For example, in the example of FIG. 8, the pointer 80 points to the request indicated by the identifier registered in the packet 1 management entry.

検出部85は、タイマ81の時間が、所定時間を経過したか否かを判定する。所定時間を経過した場合には、検出部85は、ポインタ80が指すリクエストに対応するレスポンスを所定時間以内に受信していないため、ノード20と、アクセス対象のメモリを有するノードとの間でデータ転送の異常が発生したことを検出する。そして、検出部85は、ポインタ80が指すリクエストに含まれるアクセス対象のメモリの物理アドレスをPA83から取得し、取得した物理アドレスを、エラー発生アドレスレジスタ96に書き込む。   The detection unit 85 determines whether or not the time of the timer 81 has passed a predetermined time. When the predetermined time has elapsed, the detection unit 85 has not received a response corresponding to the request pointed to by the pointer 80 within the predetermined time, so data is transmitted between the node 20 and the node having the memory to be accessed. Detects that a transfer error has occurred. Then, the detection unit 85 acquires the physical address of the memory to be accessed included in the request indicated by the pointer 80 from the PA 83 and writes the acquired physical address in the error occurrence address register 96.

トラップ発生部97は、エラー発生アドレスレジスタ96に物理アドレスが書き込まれると、トラップを発生する。なお、リクエスト/オーダが「データのメモリへのストア(格納)」、または「キャッシュのリプレイスによるライトバック」の場合はトラップを発生させず、上述した異常を示すデータの書き込みのみ行い、データのCPUへのロード時に異常を検出することとしても良い。ここで、上述した「異常を示すデータの書き込み」とは、異常と、原因とを示す4ビット以下の値をディレクトリ36aの「UE」の項目に書き込むことや、メモリ22の共有メモリの領域に、エラー状態を示すデータを書き込むことを指す。   The trap generation unit 97 generates a trap when a physical address is written in the error occurrence address register 96. If the request / order is “store data in memory” or “write back by cache replacement”, a trap is not generated, and only the data indicating the above-described abnormality is written, and the data CPU It is good also as detecting an abnormality at the time of loading. Here, the above-mentioned “writing of data indicating abnormality” means that a value of 4 bits or less indicating the abnormality and the cause is written in the item “UE” of the directory 36a, or in the shared memory area of the memory 22. Refers to writing data indicating an error condition.

このように、異常検出部37cでは、1つのタイマで時間を計測するので、リクエストごとにタイマを設ける場合と比較して、レスポンスが返ってきていないリクエストの数が複数の場合には、少ない数のタイマで時間を計測することができる。   As described above, since the time is measured by one timer in the abnormality detection unit 37c, compared to the case where a timer is provided for each request, a smaller number is obtained when there are a plurality of requests for which no response is returned. The time can be measured with the timer.

なお、異常検出部37cの構成は、上述した構成に限られない。例えば、異常検出部37cの送信パケット82には、リクエストの識別子に加えて、リクエストの送信時刻の差(インターバル)を登録し、タイマ81がインターバルを加味して再起動を行うようにしてもよい。   The configuration of the abnormality detection unit 37c is not limited to the configuration described above. For example, in the transmission packet 82 of the abnormality detection unit 37c, in addition to the request identifier, a difference (interval) in the transmission time of the request may be registered, and the timer 81 may be restarted taking the interval into account. .

図9は、異常検出部の他の構成の一例を示す図である。図9の例では、送信パケット82に、上述したパケットK(Kは自然数)管理用エントリに加え、あるリクエストが送信されてから、他のリクエストが送信されるまでの時間が登録される。ここで、リクエスト1が送信されてから100ns後に、リクエスト2が送信され、リクエスト1が送信されてから300ns後に、リクエスト3が送信された場合について説明する。この場合、リクエスト1〜3のそれぞれの識別子が、パケット1管理用エントリ〜パケット3管理用エントリに登録される。このとき、リクエスト1を基準とすると、インターバル1には0ns、インターバル2には、100ns、インターバル3には、300nsが登録される。ここで、リクエスト1に対応するレスポンスをパケット受信部37bが受信したため、ポインタ80が指すリクエストがリクエスト1からリクエスト2に切り替わったとする。このとき、タイマ81は、再起動するが、時間の初期値が0nsではなく、リクエスト2に対応するインターバル100nsから時間の計測を開始する。また、ポインタ80が指すリクエストがリクエスト2からリクエスト3に切り替わった場合には、同様に、タイマ81は、リクエスト3に対応するインターバル300nsから時間の計測を開始する。なお、すべての送出済みリクエストに対してレスポンスを受信した場合は、次に送出するリクエストのインターバルは再び0nsとなる。   FIG. 9 is a diagram illustrating an example of another configuration of the abnormality detection unit. In the example of FIG. 9, in addition to the packet K (K is a natural number) management entry described above, the time from when a request is transmitted to when another request is transmitted is registered in the transmission packet 82. Here, a case will be described in which request 2 is transmitted 100 ns after request 1 is transmitted, and request 3 is transmitted 300 ns after request 1 is transmitted. In this case, the identifiers of the requests 1 to 3 are registered in the packet 1 management entry to the packet 3 management entry. At this time, with reference to request 1, 0 ns is registered in interval 1, 100 ns is registered in interval 2, and 300 ns is registered in interval 3. Here, it is assumed that the request indicated by the pointer 80 is switched from the request 1 to the request 2 because the packet receiving unit 37b has received a response corresponding to the request 1. At this time, the timer 81 restarts, but the initial value of the time is not 0 ns, and time measurement starts from the interval 100 ns corresponding to the request 2. When the request indicated by the pointer 80 is switched from the request 2 to the request 3, similarly, the timer 81 starts measuring time from the interval 300ns corresponding to the request 3. When responses are received for all transmitted requests, the interval between requests to be transmitted next becomes 0 ns again.

このように、他の例の異常検出部37cでは、1つのタイマ81で時間を計測するので、より少ない数のタイマで精度良く時間を計測することができる。また、他の例の異常検出部37cでは、タイマ81が、リクエストごとにインターバルを考慮して時間を計測するので、より精度の高い時間を計測することができる。   As described above, in the abnormality detection unit 37c of another example, the time is measured by one timer 81, and therefore the time can be accurately measured by a smaller number of timers. Moreover, in the abnormality detection part 37c of another example, since the timer 81 measures time in consideration of an interval for each request, it is possible to measure time with higher accuracy.

なお、異常検出部37cでは、ポインタ80を設けず、リクエストごとにタイマを設けて、各タイマが、リクエストの送信されてからの時間を計測することもできる。   Note that the abnormality detection unit 37c can also provide a timer for each request without providing the pointer 80, and each timer can measure the time since the request was transmitted.

ルータ40は、パケット制御部37が有するパケット生成部37aが出力したパケットを受信した場合には、受信したリクエストをXB接続部27に出力する。また、ルータ40は、XB接続部27を介して、他のCPUが送信したパケットやデータをパケット受信部37bに出力する。また、ルータ40は、パケット制御部37がI/O装置等に対して出力したパケットをPCIe制御部42に出力する。また、ルータ40は、I/O装置からのリクエスト等をPCIe制御部42から受信した場合には、受信したリクエスト等をパケット制御部37に出力する。また、ルータ40は、I/O装置からのリクエストをPCIe制御部42から受信した場合には、受信したリクエストをXB接続部27に出力する。また、ルータ40は、XB接続部27を介して、I/O装置へのレスポンスを受信した場合には、受信したレスポンスをPCIe制御部42bに出力する。   When the router 40 receives the packet output from the packet generation unit 37 a included in the packet control unit 37, the router 40 outputs the received request to the XB connection unit 27. Further, the router 40 outputs packets and data transmitted by other CPUs to the packet receiving unit 37b via the XB connecting unit 27. Further, the router 40 outputs the packet output from the packet control unit 37 to the I / O device or the like to the PCIe control unit 42. When the router 40 receives a request or the like from the I / O device from the PCIe control unit 42, the router 40 outputs the received request or the like to the packet control unit 37. Further, when receiving a request from the I / O device from the PCIe control unit 42, the router 40 outputs the received request to the XB connection unit 27. In addition, when receiving a response to the I / O device via the XB connection unit 27, the router 40 outputs the received response to the PCIe control unit 42b.

メモリアクセス部41は、いわゆるMAC(Memory Access Controller)であり、メモリ22に対するアクセスの制御を行う。例えば、メモリアクセス部41は、キャッシュディレクトリ管理部36から物理アドレスを受信した場合には、受信した物理アドレスが示すメモリ22の領域に格納されたデータを取得し、取得したデータをキャッシュディレクトリ管理部36に出力する。なお、メモリアクセス部41は、メモリーミラー機能を用いて、共有領域を冗長化してもよい。   The memory access unit 41 is a so-called MAC (Memory Access Controller) and controls access to the memory 22. For example, when the memory access unit 41 receives a physical address from the cache directory management unit 36, the memory access unit 41 acquires data stored in the area of the memory 22 indicated by the received physical address, and the acquired data is stored in the cache directory management unit. To 36. Note that the memory access unit 41 may make the shared area redundant by using a memory mirror function.

リクエスト生成部42aは、ルータ40を介してI/O装置に対するアクセス要求を取得した場合には、アクセス要求の対象となるI/O装置に送信するリクエストを生成し、生成したリクエストをPCIeバス制御部42bに出力する。また、リクエスト生成部42aは、I/O装置から物理アドレスと、CPUIDとを取得した場合には、取得した物理アドレスと、CPUIDとを格納したパケット、すなわち、メモリアクセスのリクエストとなるパケットを生成する。かかるリクエストの種類としては、I/O装置が他のCPUに接続されたメモリをリードするためのリクエストが挙げられる。また、リクエスト生成部42aは、I/O装置から物理アドレスと、CPUIDと、書き込みデータとを取得した場合には、取得した物理アドレスと、CPUIDと、書き込みデータとを格納したパケット、すなわち、メモリアクセスのリクエストとなるパケットを生成する。かかるリクエストの種類としては、I/O装置が他のCPUに接続されたメモリにデータをライトするためのリクエストが挙げられる。そして、リクエスト生成部42aは、生成したパケットをルータ40に送信する。   When the request generation unit 42a acquires an access request to the I / O device via the router 40, the request generation unit 42a generates a request to be transmitted to the I / O device that is the target of the access request, and the generated request is controlled by PCIe bus To the unit 42b. In addition, when the request generation unit 42a acquires the physical address and CPUID from the I / O device, the request generation unit 42a generates a packet storing the acquired physical address and CPUID, that is, a packet serving as a memory access request. To do. An example of the type of request is a request for an I / O device to read a memory connected to another CPU. Further, when the request generation unit 42a acquires a physical address, CPUID, and write data from the I / O device, the request generation unit 42a stores a packet that stores the acquired physical address, CPUID, and write data, that is, a memory Generate a packet that is an access request. An example of the type of request is a request for the I / O device to write data to a memory connected to another CPU. Then, the request generation unit 42 a transmits the generated packet to the router 40.

また、リクエスト生成部42aは、エラー発生アドレスレジスタ98、トラップ発生部99を有する。   The request generation unit 42 a includes an error occurrence address register 98 and a trap generation unit 99.

PCIeバス制御部42bは、リクエスト生成部42aが生成したリクエストを取得した場合には、PCIe接続部28を介して、I/O装置にリクエストを送信する。また、PCIeバス制御部42bは、PCIe接続部28を介して、I/O装置から物理アドレスと、CPUIDとを取得した場合には、リクエスト生成部42aに、取得した物理アドレスと、CPUIDとを送信する。また、PCIeバス制御部42bは、PCIe接続部28を介して、I/O装置から物理アドレスと、CPUIDと、書き込みデータとを取得した場合には、リクエスト生成部42aに、取得した物理アドレスと、CPUIDと、書き込みデータとを送信する。   When the PCIe bus control unit 42b acquires the request generated by the request generation unit 42a, the PCIe bus control unit 42b transmits the request to the I / O device via the PCIe connection unit 28. When the PCIe bus control unit 42b acquires the physical address and CPUID from the I / O device via the PCIe connection unit 28, the PCIe bus control unit 42b sends the acquired physical address and CPUID to the request generation unit 42a. Send. When the PCIe bus control unit 42b acquires the physical address, CPUID, and write data from the I / O device via the PCIe connection unit 28, the PCIe bus control unit 42b sends the acquired physical address to the request generation unit 42a. , CPUID and write data are transmitted.

また、PCIeバス制御部42bは、I/O装置が他のCPUに接続されたメモリをリードするためのリクエストに対応するレスポンスが、リクエストが送信されてから所定時間以内に受信しないため、異常が検出された場合には、次のような処理を行う。すなわち、PCIeバス制御部42bは、「poisoned TLP」パケットをPCIe接続部28に送信する。この場合、PCIe接続部28は、「poisoned TLP」パケットを受信すると、受信した「poisoned TLP」パケットをI/O装置へ送信する。これにより、I/O装置では、異常が発生していることを検出することができる。また、PCIe接続部28は、異常が発生していることを検出すると、デバイスドライバソフトに異常が発生したことを通知するので、リカバリ処理が行われる。リカバリ処理の一例としては、LANに異常が発生した場合には、処理中の送受信データを一旦破棄し、LANチップの状態を初期化し、初期化後は、通常通りにデータの送受信を行う処理が挙げられる。   In addition, the PCIe bus control unit 42b does not receive a response corresponding to a request for the I / O device to read a memory connected to another CPU within a predetermined time after the request is transmitted. If detected, the following processing is performed. That is, the PCIe bus control unit 42 b transmits a “poisoned TLP” packet to the PCIe connection unit 28. In this case, when receiving the “poisoned TLP” packet, the PCIe connection unit 28 transmits the received “poisoned TLP” packet to the I / O device. As a result, the I / O device can detect that an abnormality has occurred. Further, when the PCIe connection unit 28 detects that an abnormality has occurred, the PCIe connection unit 28 notifies the device driver software that an abnormality has occurred, so that a recovery process is performed. As an example of the recovery process, when an abnormality occurs in the LAN, the processing of transmitting / receiving data as usual is performed after the transmission / reception data being processed is temporarily discarded and the state of the LAN chip is initialized. Can be mentioned.

図10を参照して、「poisoned TLP」について説明する。図10は、「TLP header」のデータ構成の一例を示す図である。「poisoned TLP」とは、「PCI express」の仕様によって規定されているパケットである。図10の例に示す「TLP header」のEPビットがオンである場合に、「poisoned TLP」であると認識される。   The “poisoned TLP” will be described with reference to FIG. FIG. 10 is a diagram illustrating an example of a data configuration of “TLP header”. “Poisoned TLP” is a packet defined by the specification of “PCI express”. When the EP bit of “TLP header” shown in the example of FIG. 10 is on, it is recognized as “poisoned TLP”.

図11は、「poisoned TLP」パケットを受信したPCIe制御部の動作の具体例を説明するための図である。図11の例は、PCIe制御部42が「Root Complex」に対応し、PCIe接続部28が「PCI express」カードに対応する場合のデバイスドライバの階層構造を示す。この一例では、「PCI express」カードとしてSASの「PCI express」カードが搭載されている場合を示している。「PCI express」のバス上の「poisoned TLP」の発生などのイベントの検出やバス上での対処は、「PCI express」カードの種別に関わらず共通である。そのため、かかるイベントの検出やバス上での対処は、SASデバイスドライバなどの個別のデバイスドライバでは行われず、「Root Complex」ドライバで行われる。   FIG. 11 is a diagram for explaining a specific example of the operation of the PCIe control unit that has received the “poisoned TLP” packet. The example of FIG. 11 shows a hierarchical structure of device drivers when the PCIe control unit 42 corresponds to “Root Complex” and the PCIe connection unit 28 corresponds to a “PCI express” card. In this example, a SAS “PCI express” card is mounted as a “PCI express” card. The detection of events such as the occurrence of “poisoned TLP” on the “PCI express” bus and the countermeasure on the bus are common regardless of the type of the “PCI express” card. Therefore, the detection of such an event and the countermeasure on the bus are not performed by an individual device driver such as a SAS device driver, but by a “Root Complex” driver.

一方、バスで何らかのイベント、例えば、エラー系のイベントが発生した場合、エラーが発生したバス上で動作していたSASデバイスドライバ側で、SASデバイスドライバ固有の回復処理が行われる場合が多い。ここで、SASデバイスドライバ固有の回復処理の一例としては、処理中の送信処理の終了処理またはリトライなどが挙げられる。「poisoned TLP」が発生した場合、「Root Complex」ドライバは、エラー事象の刈り取り(詳細情報のリード、ステータスビットのクリアなど)を行った後に、バス上のSASデバイスドライバにエラーの発生を通知する。この通知により、SASデバイスドライバは、SASデバイスドライバ固有のリカバリ処理を開始する。なお、SASデバイスドライバにエラーの発生を通知せず、I/O装置を使用しているアプリケーションプロセスにエラーの発生を通知し、アプリケーションプロセスからI/O装置の再起動処理を行うようにしてもよい。   On the other hand, when an event such as an error-related event occurs on the bus, a SAS device driver-specific recovery process is often performed on the SAS device driver operating on the bus where the error occurred. Here, as an example of the recovery process unique to the SAS device driver, an end process or a retry process of the transmission process being processed can be cited. When “poisoned TLP” occurs, the “Root Complex” driver cuts error events (reads detailed information, clears status bits, etc.) and then notifies the SAS device driver on the bus of the occurrence of the error. . With this notification, the SAS device driver starts recovery processing specific to the SAS device driver. In addition, the occurrence of an error is not notified to the SAS device driver, the occurrence of the error is notified to the application process using the I / O device, and the I / O device is restarted from the application process. Good.

また、PCIeバス制御部42bは、I/O装置が他のCPUに接続されたメモリにデータをライトするためのリクエストに対応するレスポンスが、リクエストが送信されてから所定時間以内に受信しないため、異常が検出された場合には、次のような処理を行う。すなわち、PCIeバス制御部42bは異常検出後、異常にかかわるPCIe接続部28から受信する「メモリにデータをライトするためのリクエスト」を廃棄する。そして、後述するように、エラー発生アドレスレジスタ98にエラー発生アドレスを設定し、トラップ発生部97を使用してトラップを発生させる。このトラップによりデバイスドライバソフトに異常が発生したことが通知されるので、リカバリ処理が行われる。リカバリ処理の一例としては、LANに異常が発生した場合には、処理中の送受信データを一旦破棄し、LANチップの状態を初期化し、初期化後は、通常通りにデータの送受信を行う処理が挙げられる。   In addition, the PCIe bus control unit 42b does not receive a response corresponding to a request for the I / O device to write data to a memory connected to another CPU within a predetermined time after the request is transmitted. When an abnormality is detected, the following processing is performed. That is, after detecting the abnormality, the PCIe bus control unit 42b discards the “request for writing data to the memory” received from the PCIe connection unit 28 related to the abnormality. Then, as described later, an error occurrence address is set in the error occurrence address register 98 and a trap is generated using the trap generation unit 97. Since this trap notifies the device driver software that an abnormality has occurred, recovery processing is performed. As an example of the recovery process, when an abnormality occurs in the LAN, the processing of transmitting / receiving data as usual is performed after the transmission / reception data being processed is temporarily discarded and the state of the LAN chip is initialized. Can be mentioned.

異常検出部42cは、ポインタ90と、タイマ91と、送信パケット92と、PA93と、リクエスト94と、検出部95とを有する。ポインタ90、タイマ91、送信パケット92、PA93、リクエスト94、検出部95のそれぞれは、上記で説明したポインタ80、タイマ81、送信パケット82、PA83、リクエスト84、検出部85と同様である。また、エラー発生アドレスレジスタ98、トラップ発生部99は、上記で説明したエラー発生アドレスレジスタ96、トラップ発生部97と同様である。すなわち、異常検出部37cは、パケット制御部37によってリクエストが送信されてからレスポンスを受信する前に所定時間が経過した場合に、ノード間のデータ転送の異常を検出する。異常検出部42cは、上記の異常検出部37cと同様に、リクエスト生成部42aからルータ40を介して、他のCPUへ送信されるリードのリクエスト、ライトのリクエストについて、ノード間のデータ転送の異常を検出する。そして、異常を検出した場合には、上記の異常検出部37cの検出部85と同様に、検出部95は、ポインタ90が指すリクエストに含まれるアクセス対象のメモリの物理アドレスをPA93から取得し、取得した物理アドレスを、エラー発生アドレスレジスタ98に書き込む。   The abnormality detection unit 42c includes a pointer 90, a timer 91, a transmission packet 92, a PA 93, a request 94, and a detection unit 95. Each of the pointer 90, timer 91, transmission packet 92, PA93, request 94, and detection unit 95 is the same as the pointer 80, timer 81, transmission packet 82, PA83, request 84, and detection unit 85 described above. The error occurrence address register 98 and the trap generation unit 99 are the same as the error occurrence address register 96 and the trap generation unit 97 described above. That is, the abnormality detection unit 37c detects an abnormality in data transfer between nodes when a predetermined time elapses after a request is transmitted by the packet control unit 37 and before a response is received. Similar to the above-described abnormality detection unit 37c, the abnormality detection unit 42c performs an abnormality in data transfer between nodes for a read request and a write request transmitted from the request generation unit 42a to another CPU via the router 40. Is detected. If an abnormality is detected, like the detection unit 85 of the abnormality detection unit 37c, the detection unit 95 acquires the physical address of the access target memory included in the request indicated by the pointer 90 from the PA 93, The acquired physical address is written in the error occurrence address register 98.

トラップ発生部99は、エラー発生アドレスレジスタ98に物理アドレスが書き込まれると、トラップを発生する。   The trap generation unit 99 generates a trap when a physical address is written in the error generation address register 98.

次に、図12を用いて、CPU21が他のCPUに対してリクエストを送信する処理の一例について説明する。図12は、実施例1に係るCPUがリクエストを送信する処理の一例を説明するための図である。例えば、図12中(A)に示すように、サービスプロセッサ24からノードマップ34に対して、物理アドレスが振り分けられるメモリにアクセスするCPUのCPUIDと物理アドレスとを対応付けたエントリの設定が行われる。   Next, an example of processing in which the CPU 21 transmits a request to another CPU will be described with reference to FIG. FIG. 12 is a schematic diagram illustrating an example of a process in which the CPU according to the first embodiment transmits a request. For example, as shown in FIG. 12A, the service processor 24 sets an entry in which the CPU ID of the CPU accessing the memory to which the physical address is allocated and the physical address are associated with each other in the node map 34. .

また、演算部31は、演算処理を実行し、図12中(B)に示すように、アクセス対象となる論理アドレスをアドレス変換部35に出力する。すると、アドレス変換部35は、論理アドレスを物理アドレスに変換し、変換した物理アドレスを図12中(C)に示すように、キャッシュディレクトリ管理部36に出力する。   In addition, the calculation unit 31 executes calculation processing and outputs a logical address to be accessed to the address conversion unit 35 as shown in FIG. Then, the address conversion unit 35 converts the logical address into a physical address, and outputs the converted physical address to the cache directory management unit 36 as shown in FIG.

ここで、キャッシュディレクトリ管理部36は、アドレス変換部35から物理アドレスを取得すると、図12中(D)に示すように、ノードマップ34を参照し、取得した物理アドレスと対応付けられたCPUIDを取得する。そして、キャッシュディレクトリ管理部36は、取得したCPUIDがCPU21のCPUIDではない場合には、図12中(E)に示すように、取得したCPUIDと物理アドレスとをパケット制御部37に出力する。   Here, when the cache directory management unit 36 acquires the physical address from the address conversion unit 35, the cache directory management unit 36 refers to the node map 34 as shown in FIG. 12D, and determines the CPU ID associated with the acquired physical address. get. Then, when the acquired CPUID is not the CPUID of the CPU 21, the cache directory management unit 36 outputs the acquired CPUID and physical address to the packet control unit 37 as shown in FIG.

このような場合には、パケット生成部37aは、キャッシュディレクトリ管理部36から取得した物理アドレスとCPUIDとを格納したパケットを生成し、図12中(F)に示すように、生成したパケットをルータ40に出力する。また、パケット生成部37aは、図12中(G)に示すように、リクエストであるパケットを送信したことを示すデータを異常検出部37cに出力する。続いて、図12中(H)に示すように、ルータ40は、パケット生成部37aから取得したパケットをXB接続部27に出力する。その後、図12中(I)に示すように、XB接続部27は、取得したパケットをXB2に出力する。すると、XB2は、パケットに格納されたCPUIDが示すCPUへパケットを伝達することとなる。   In such a case, the packet generation unit 37a generates a packet storing the physical address and CPUID acquired from the cache directory management unit 36, and the generated packet is transmitted to the router as shown in FIG. Output to 40. Further, as shown in FIG. 12G, the packet generation unit 37a outputs data indicating that the packet that is a request has been transmitted to the abnormality detection unit 37c. Subsequently, as illustrated in FIG. 12H, the router 40 outputs the packet acquired from the packet generation unit 37 a to the XB connection unit 27. Thereafter, as shown in (I) of FIG. 12, the XB connection unit 27 outputs the acquired packet to XB2. Then, the XB 2 transmits the packet to the CPU indicated by the CPU ID stored in the packet.

次に、図13を用いて、CPU21が他のCPUからパケットを受信した際に実行する処理の一例について説明する。図13は、実施例1に係るCPUがパケットを受信した際に実行する処理の一例を説明するための図である。例えば、図13中(J)に示すようにパケット受信部37bは、他のCPUからCPU21のCPUIDとメモリ22に振り分けられた物理アドレスとが格納されたパケットや、レスポンスのパケットを受信する。   Next, an example of processing executed when the CPU 21 receives a packet from another CPU will be described with reference to FIG. FIG. 13 is a diagram for explaining an example of processing executed when the CPU according to the first embodiment receives a packet. For example, as shown in FIG. 13J, the packet receiving unit 37b receives a packet in which the CPU ID of the CPU 21 and the physical address assigned to the memory 22 are stored and a response packet from another CPU.

このような場合には、パケット受信部37bは、受信したパケットが、レスポンスのパケットである場合には、図13中(K)に示すように、レスポンスであるパケットを受信したことを示すデータを異常検出部37cに出力する。そして、パケット受信部37bは、受信したパケットから物理アドレスを取得し、図13中(L)に示すように、取得した物理アドレスをキャッシュディレクトリ管理部36に出力する。すると、キャッシュディレクトリ管理部36は、物理アドレスが示す記憶領域が、共有領域であるかローカル領域であるかを判別する。   In such a case, when the received packet is a response packet, the packet receiving unit 37b receives data indicating that the response packet has been received, as shown in FIG. It outputs to the abnormality detection part 37c. Then, the packet receiving unit 37b acquires a physical address from the received packet, and outputs the acquired physical address to the cache directory management unit 36 as shown in (L) of FIG. Then, the cache directory management unit 36 determines whether the storage area indicated by the physical address is a shared area or a local area.

そして、共有領域に対するアクセスである場合には、キャッシュディレクトリ管理部36は、図13中(M)に示すように、物理アドレスが示す記憶領域のデータがL1キャッシュ32およびL2キャッシュ33にキャッシュされているか判別する。   When the access is to the shared area, the cache directory management unit 36 caches the data in the storage area indicated by the physical address in the L1 cache 32 and the L2 cache 33 as shown in (M) in FIG. Determine if it is.

また、キャッシュディレクトリ管理部36は、データがキャッシュされていないと判別した場合には、図13中(N)に示すように、物理アドレスをメモリアクセス部41に出力する。すると、図13中(O)に示すように、メモリアクセス部41は、メモリ22から物理アドレスが示す記憶領域のデータを取得し、キャッシュディレクトリ管理部36に出力する。   If the cache directory management unit 36 determines that the data is not cached, the cache directory management unit 36 outputs the physical address to the memory access unit 41 as indicated by (N) in FIG. Then, as indicated by (O) in FIG. 13, the memory access unit 41 acquires the data in the storage area indicated by the physical address from the memory 22 and outputs the data to the cache directory management unit 36.

そして、キャッシュディレクトリ管理部36は、L1キャッシュ32、L2キャッシュ33、またはメモリアクセス部41からデータを取得した場合には、取得したデータをパケット制御部37に出力し、リクエスト元のCPUに送信するよう指示する。   When the cache directory management unit 36 acquires data from the L1 cache 32, the L2 cache 33, or the memory access unit 41, the cache directory management unit 36 outputs the acquired data to the packet control unit 37 and transmits it to the requesting CPU. Instruct.

次に、図14を用いて、I/O装置がCPU21以外のCPUに対してリードやライトのリクエストを送信する処理の一例について説明する。図14は、実施例1に係るI/O装置がリクエストを送信する処理の一例を説明するための図である。例えば、PCIe接続部28は、I/O装置から物理アドレスと、CPUIDとを取得すると、図14中(P)に示すように、取得した物理アドレスと、CPUIDとをPCIeバス制御部42bに出力する。また、PCIe接続部28は、I/O装置から物理アドレスと、CPUIDと、書き込みデータとを取得すると、図14中(P)に示すように、取得した物理アドレスと、CPUIDと、書き込みデータとをPCIeバス制御部42bに出力する。   Next, an example of processing in which the I / O device transmits a read or write request to a CPU other than the CPU 21 will be described with reference to FIG. FIG. 14 is a diagram for explaining an example of processing in which the I / O device according to the first embodiment transmits a request. For example, when the PCIe connection unit 28 acquires the physical address and CPUID from the I / O device, the acquired physical address and CPUID are output to the PCIe bus control unit 42b as shown in (P) of FIG. To do. When the PCIe connection unit 28 acquires the physical address, CPUID, and write data from the I / O device, the acquired physical address, CPUID, write data, and the like, as shown in FIG. Is output to the PCIe bus control unit 42b.

そして、PCIeバス制御部42bは、PCIe接続部28から物理アドレスと、CPUIDとを取得すると、図14中(Q)に示すように、取得した物理アドレスと、CPUIDとをリクエスト生成部42aに出力する。また、PCIeバス制御部42bは、PCIe接続部28から物理アドレスと、CPUIDと、書き込みデータとを取得すると、図14中(Q)に示すように、取得した物理アドレスと、CPUIDと、書き込みデータとをリクエスト生成部42aに送信する。   When the PCIe bus control unit 42b acquires the physical address and the CPUID from the PCIe connection unit 28, the PCIe bus control unit 42b outputs the acquired physical address and the CPUID to the request generation unit 42a as shown in (Q) of FIG. To do. Further, when the PCIe bus control unit 42b acquires the physical address, CPUID, and write data from the PCIe connection unit 28, as shown in (Q) of FIG. 14, the acquired physical address, CPUID, and write data are acquired. Is transmitted to the request generation unit 42a.

リクエスト生成部42aは、PCIeバス制御部42bから物理アドレスと、CPUIDとを取得すると、取得した物理アドレスと、CPUIDとを含むリードのリクエストとなるパケットを生成する。また、リクエスト生成部42aは、PCIeバス制御部42bから物理アドレスと、CPUIDと、書き込みデータとを取得すると、取得した物理アドレスと、CPUIDと、書き込みデータとを含むライトのリクエストとなるパケットを生成する。そして、リクエスト生成部42aは、図14中(R)に示すように、生成したパケットをルータ40に出力する。   When the request generation unit 42a acquires the physical address and CPUID from the PCIe bus control unit 42b, the request generation unit 42a generates a packet serving as a read request including the acquired physical address and CPUID. Further, when the request generation unit 42a acquires the physical address, CPUID, and write data from the PCIe bus control unit 42b, the request generation unit 42a generates a packet that becomes a write request including the acquired physical address, CPUID, and write data. To do. Then, the request generation unit 42a outputs the generated packet to the router 40 as shown in (R) in FIG.

また、リクエスト生成部42aは、図14中(S)に示すように、リードのリクエスト、ライトのリクエストを送信したことを示すデータを異常検出部42cに出力する。続いて、図14中(T)に示すように、ルータ40は、リクエスト生成部42aから取得したリクエストをXB接続部27に出力する。その後、図14中(U)に示すように、XB接続部27は、取得したリクエストをXB2に出力する。すると、XB2は、リクエストに格納されたCPUIDが示すCPUへパケットを伝達することとなる。   Further, as shown in FIG. 14S, the request generation unit 42a outputs data indicating that the read request and the write request are transmitted to the abnormality detection unit 42c. Subsequently, as illustrated in (T) in FIG. 14, the router 40 outputs the request acquired from the request generation unit 42 a to the XB connection unit 27. After that, as shown in FIG. 14 (U), the XB connection unit 27 outputs the acquired request to XB2. Then, XB2 transmits the packet to the CPU indicated by the CPUID stored in the request.

次に、図15を用いて、I/O装置がCPU21以外のCPUからレスポンスを受信する処理の一例について説明する。図15は、実施例1に係るI/O装置がレスポンスを受信する処理の一例を説明するための図である。例えば、図15中(V)に示すようにXB接続部27は、CPU21以外のCPUからI/O装置へのレスポンスを受信する。   Next, an example of processing in which the I / O device receives a response from a CPU other than the CPU 21 will be described with reference to FIG. FIG. 15 is a diagram for explaining an example of processing in which the I / O device according to the first embodiment receives a response. For example, as shown in FIG. 15 (V), the XB connection unit 27 receives a response from the CPU other than the CPU 21 to the I / O device.

XB接続部27は、レスポンスを受信すると、図15中(W)に示すように、受信したレスポンスをルータ40に出力する。ルータ40は、レスポンスを受信すると、図15中(X)に示すように、受信したレスポンスをリクエスト生成部42aに出力する。リクエスト生成部42aは、レスポンスを受信すると、レスポンスを受信したことを示すデータを異常検出部42cに出力する。また、リクエスト生成部42aは、図15中(Z)に示すように、レスポンスをPCIeバス制御部42bに出力する。PCIeバス制御部42bは、レスポンスを受信すると、図15中(AA)に示すように、受信したレスポンスをPCIe接続部28に出力する。これにより、PCIe接続部28からI/O装置へレスポンスが送信される。   When receiving the response, the XB connection unit 27 outputs the received response to the router 40 as shown in FIG. When receiving the response, the router 40 outputs the received response to the request generation unit 42a, as indicated by (X) in FIG. Upon receiving the response, the request generation unit 42a outputs data indicating that the response has been received to the abnormality detection unit 42c. Further, the request generation unit 42a outputs a response to the PCIe bus control unit 42b as shown in (Z) in FIG. When receiving the response, the PCIe bus control unit 42b outputs the received response to the PCIe connection unit 28 as shown in (AA) in FIG. As a result, a response is transmitted from the PCIe connection unit 28 to the I / O device.

次に、図16、図17を用いて、ノード20と、ノード20のアクセス対象のメモリを有するノードとの間でデータ転送の異常が発生した際に実行される処理の一例について説明する。図16は、ノードと、当該ノードのアクセス対象のメモリを有するノードとの間でデータ転送の異常が発生した際に実行される処理の一例を説明するための図である。例えば、異常検出部37cは、タイマ81の時間が、所定時間を経過したか否かを判定する。所定時間を経過した場合には、異常検出部37cは、ポインタ80が指すリクエストに対応するレスポンスを所定時間以内に受信していないため、ノード20と、アクセス対象のメモリを有するノードとの間でデータ転送の異常が発生したことを検出する。そして、異常検出部37cは、ポインタ80が指すリクエストに含まれるアクセス対象のメモリの物理アドレスをPA83から取得し、図16中(AB)に示すように、取得した物理アドレスを、エラー発生アドレスレジスタ96に書き込む。エラー発生アドレスレジスタ96に物理アドレスが書き込まれると、図16中(AC)に示すように、トラップ発生部96は、トラップを発生する。   Next, an example of processing executed when a data transfer abnormality occurs between the node 20 and a node having a memory to be accessed by the node 20 will be described with reference to FIGS. 16 and 17. FIG. 16 is a diagram for explaining an example of processing executed when a data transfer abnormality occurs between a node and a node having a memory to be accessed by the node. For example, the abnormality detection unit 37c determines whether or not the time of the timer 81 has passed a predetermined time. When the predetermined time has elapsed, the abnormality detection unit 37c has not received a response corresponding to the request indicated by the pointer 80 within the predetermined time, and therefore, between the node 20 and the node having the memory to be accessed. Detects that a data transfer error has occurred. Then, the abnormality detection unit 37c acquires the physical address of the memory to be accessed included in the request indicated by the pointer 80 from the PA 83, and the acquired physical address is stored in the error occurrence address register as shown in (AB) in FIG. Write to 96. When the physical address is written in the error occurrence address register 96, the trap generation unit 96 generates a trap as shown in (AC) in FIG.

図17は、ノードと、当該ノードのアクセス対象のメモリを有するノードとの間でデータ転送の異常が発生した際に実行される処理の一例を説明するための図である。例えば、異常検出部42cは、タイマ91の時間が、所定時間を経過したか否かを判定する。所定時間を経過した場合には、異常検出部42cは、ポインタ90が指すリクエストに対応するレスポンスを所定時間以内に受信していないため、ノード20と、アクセス対象のメモリを有するノードとの間でデータ転送の異常が発生したことを検出する。そして、異常検出部42cは、ポインタ90が指すリクエストに含まれるアクセス対象のメモリの物理アドレスをPA93から取得し、図17中(AD)に示すように、取得した物理アドレスを、エラー発生アドレスレジスタ98に書き込む。エラー発生アドレスレジスタ98に物理アドレスが書き込まれると、図17中(AE)に示すように、トラップ発生部98は、トラップを発生する。   FIG. 17 is a diagram for explaining an example of processing executed when a data transfer abnormality occurs between a node and a node having a memory to be accessed by the node. For example, the abnormality detection unit 42c determines whether or not the time of the timer 91 has passed a predetermined time. When the predetermined time has elapsed, the abnormality detection unit 42c has not received a response corresponding to the request pointed to by the pointer 90 within the predetermined time, and therefore, between the node 20 and the node having the memory to be accessed. Detects that a data transfer error has occurred. Then, the abnormality detection unit 42c acquires the physical address of the memory to be accessed included in the request indicated by the pointer 90 from the PA 93, and the acquired physical address is stored in the error occurrence address register as shown in (AD) in FIG. Write to 98. When the physical address is written in the error occurrence address register 98, the trap generation unit 98 generates a trap as shown in (AE) in FIG.

通信部23、サービスプロセッサ24、XB接続部27、XB接続部27a、PCIe接続部28は、電子回路である。ここで、電子回路の例として、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などの集積回路、またはCPUやMPU(Micro Processing Unit)などを適用することができる。また、CPU21〜21cに代えて、ASICやFPGAなどの集積回路、またはMPUなどを適用することができる。   The communication unit 23, the service processor 24, the XB connection unit 27, the XB connection unit 27a, and the PCIe connection unit 28 are electronic circuits. Here, as an example of the electronic circuit, an integrated circuit such as an application specific integrated circuit (ASIC) or a field programmable gate array (FPGA), a CPU or a micro processing unit (MPU), or the like can be applied. Further, an integrated circuit such as an ASIC or FPGA, an MPU, or the like can be applied instead of the CPUs 21 to 21c.

また、メモリ22〜22aは、RAM(Random Access Memory)、ROM(Read Only Memory)、フラッシュメモリ (flash memory)などの半導体メモリ素子である。また、L1キャッシュ32、L2キャッシュ33は、SRAM(Static Random Access Memory)等の高速な半導体メモリ素子である。   The memories 22 to 22a are semiconductor memory elements such as a random access memory (RAM), a read only memory (ROM), and a flash memory. The L1 cache 32 and the L2 cache 33 are high-speed semiconductor memory elements such as SRAM (Static Random Access Memory).

次に、各CPU21〜21cがキャッシュコヒーレンスを保持する処理について説明する。なお、以下の説明においては、情報処理システム1の各CPUはイリノイプロトコルを用いて、キャシュコヒーレンスを保持するものとする。   Next, a process in which each of the CPUs 21 to 21c holds cache coherence will be described. In the following description, it is assumed that each CPU of the information processing system 1 holds cache coherence using the Illinois protocol.

また、以下の説明においては、情報処理システム1が有する各メモリは、全てのCPUからキャッシュ可能な空間を有するメモリとして識別されるものとする。また、以下の説明においては、キャッシュ対象となるデータを記憶するメモリに、そのCPU内のMACを介して物理的に直接接続されているCPUをホームCPUとし、キャッシュを要求したCPUをローカルCPUと記載する。   In the following description, each memory included in the information processing system 1 is identified as a memory having a space that can be cached by all CPUs. In the following description, a CPU that is physically directly connected to a memory that stores data to be cached via a MAC in the CPU is a home CPU, and a CPU that requests a cache is a local CPU. Describe.

また、ホームCPUに対して既にリクエストを送信し、データをキャッシュ済みであるCPUをリモートCPUと記載する。なお、ローカルCPUとホームCPUとが同一のCPUとなる場合や、ローカルCPUとリモートCPUとが同一のCPUとなる場合もある。   A CPU that has already transmitted a request to the home CPU and has already cached data is referred to as a remote CPU. Note that the local CPU and the home CPU may be the same CPU, or the local CPU and the remote CPU may be the same CPU.

ローカルCPUは、自身のノードマップを参照し、アクセス対象となる物理アドレスがホームCPUがアクセスするメモリに振り分けられていると判定する。そして、ローカルCPUは、物理アドレスを格納したリクエストをホームCPUに対して発行する。なお、ローカルCPUが発行するリクエストには、複数の種別のリクエストが存在する。このため、ホームCPUが有するキャッシュディレクトリ管理部は、取得したリクエストの種別に応じたキャッシュコヒーレンス制御を実行することとなる。   The local CPU refers to its own node map and determines that the physical address to be accessed is allocated to the memory accessed by the home CPU. Then, the local CPU issues a request storing the physical address to the home CPU. There are multiple types of requests issued by the local CPU. For this reason, the cache directory management unit included in the home CPU executes cache coherence control according to the type of the acquired request.

例えば、ローカルCPUが発行するリクエストの種別としては、共有型フェッチアクセス、排他型フェッチアクセス、キャッシュ無効化要求、キャッシュリプレース要求等がある。共有型フェッチアクセスとは、例えば、「MoveIn to Share」の実行要求であり、ホームCPUがアクセスするメモリからデータの読出しを行う際に発行されるリクエストである。   For example, the types of requests issued by the local CPU include shared fetch access, exclusive fetch access, cache invalidation request, and cache replacement request. The shared fetch access is, for example, a “MoveIn to Share” execution request, which is a request issued when data is read from the memory accessed by the home CPU.

また、排他型フェッチアクセスとは、例えば、「MoveIn Exclusively」の実行要求であり、ホームCPUがアクセスするメモリへデータストアを行う際の、キャッシュへのデータロードを行う際に発行される。また、キャッシュ無効化要求とは、例えば、「MoveOut」の実行要求であり、キャッシュラインの無効化をホームCPUに対して要求する際に発行される。なお、ホームCPUは、キャッシュ無効化要求を受信すると、リモートCPUに対してキャッシュ無効化要求を発行する場合や、キャッシュを「Invalidation」とさせるオーダーを発行する場合がある。   The exclusive fetch access is, for example, an execution request for “MoveIn Exclusive”, which is issued when data is loaded into the cache when data is stored in the memory accessed by the home CPU. The cache invalidation request is, for example, an execution request for “MoveOut” and is issued when a cache line invalidation request is issued to the home CPU. When the home CPU receives the cache invalidation request, the home CPU may issue a cache invalidation request to the remote CPU or may issue an order for setting the cache to “Invalidation”.

キャッシュリプレース要求とは、例えば、「WriteBack」の実行要求であり、更新されたキャッシュデータ、すなわち「Modified」状態のキャッシュデータをホームCPUがアクセスするメモリに書き戻す際に発行される。なお、キャッシュリプレース要求には、例えば、「FlushBack」の実行要求であり、更新されていないキャッシュデータ、すなわち、「Shared」又は「Exclusive」状態のキャッシュの破棄を行う際に発行される。   The cache replacement request is, for example, a request to execute “WriteBack”, and is issued when the updated cache data, that is, cache data in the “Modified” state is written back to the memory accessed by the home CPU. The cache replacement request is, for example, an execution request for “FlushBack”, and is issued when discarding cache data that has not been updated, that is, a cache in the “Shared” or “Exclusive” state.

ホームCPUは、上述したリクエストをローカルCPUや、リモートCPUから受信した場合には、リクエストを処理するために、ローカルCPUやリモートCPUに対して、オーダーを発行する。ここで、ホームCPUは、取得したリクエストの種別に応じたキャッシュコヒーレンス制御を実行するため、複数の種別のオーダーを発行することとなる。例えば、ホームCPUは、リモートCPUがキャッシュしているデータをローカルCPUにロードさせる「MoveOut and Bypass to Share」を発行する。   When the home CPU receives the above-described request from the local CPU or the remote CPU, the home CPU issues an order to the local CPU or the remote CPU in order to process the request. Here, the home CPU issues a plurality of types of orders in order to execute cache coherence control according to the type of the acquired request. For example, the home CPU issues “MoveOut and Bypass to Share” which causes the local CPU to load data cached by the remote CPU.

また、例えば、ホームCPUは、ローカルCPU以外のすべてのリモートCPUのキャッシュを無効化し、その後、ホームCPUがローカルCPUにデータを送信するための「MoveOut and Bypass Exclusively」を発行する。また、ホームCPUは、リモートCPUにキャッシュの無効化を要求する「MoveOut WITH Invalidation」を発行する。なお、ホームCPUが「MoveOut WITH Invalidation」を発行した場合には、全てのCPUのキャッシュが、対象となるアドレスについて「Invalidate」状態となる。なお、トランザクション完了時にはローカルCPUがデータをキャッシュする。   For example, the home CPU invalidates the caches of all remote CPUs other than the local CPU, and then issues “MoveOut and Bypass Exclusive” for the home CPU to transmit data to the local CPU. Further, the home CPU issues “MoveOut WITH Invalidation” requesting the remote CPU to invalidate the cache. When the home CPU issues “MoveOut WITH Invalidation”, the caches of all CPUs are in the “Invalidate” state for the target address. When the transaction is completed, the local CPU caches data.

また、ホームCPUは、リモートCPUにキャッシュラインの無効化を要求する「MoveOut for Flush」を発行する。なお、ホームCPUが「MoveOut for Flush」を発行した場合には、対象となるデータは、ホームCPUのメモリにのみ記憶される。また、ホームCPUは、対象となるデータの状態が「Shared」であるときに、リモートCPUにキャッシュの破棄を要求する「Buffer Invalidation」を発行する。   The home CPU issues a “MoveOut for Flush” requesting the remote CPU to invalidate the cache line. When the home CPU issues “MoveOut for Flush”, the target data is stored only in the memory of the home CPU. Further, the home CPU issues “Buffer Invalidation” requesting the remote CPU to discard the cache when the state of the target data is “Shared”.

ホームCPUは、リクエストの種別に応じて、上述したオーダーを発行し、各CPUがキャッシュしたデータのステートを遷移させる。また、ローカルCPUやリモートCPUは、オーダーを受信した場合には、オーダーが示す処理を実行し、自身がキャッシュしたデータのステートを遷移させる。   The home CPU issues the above-described order according to the type of request, and changes the state of the data cached by each CPU. When the local CPU or the remote CPU receives an order, the local CPU or the remote CPU executes the process indicated by the order and changes the state of the data cached by itself.

その後、ローカルCPUやリモートCPUは、オーダーに対する完了応答やデータ付の完了応答をホームCPUに送信する。また、ホームCPUやリモートCPUは、オーダー処理を実行した後に、ローカルCPUに対して、データ付のリクエスト応答を送信することとなる。   Thereafter, the local CPU and the remote CPU transmit a completion response to the order and a completion response with data to the home CPU. The home CPU or remote CPU transmits a request response with data to the local CPU after executing the order process.

[処理の流れ]
次に、図18を用いて、情報処理システム1が共有領域を制御する処理の流れについて説明する。図18は、共有領域を制御する処理の流れを説明するためのフローチャートである。まず、情報処理システム1は、アプリケーションの要求に応じて、ノード間の共有メモリの割当処理を実行する(ステップS101)。次に、情報処理システム1は、ノード間で共有する共有メモリのアタッチ処理を実行する(ステップS102)。
[Process flow]
Next, the flow of processing in which the information processing system 1 controls the shared area will be described with reference to FIG. FIG. 18 is a flowchart for explaining the flow of processing for controlling a shared area. First, the information processing system 1 executes a shared memory allocation process between nodes in response to an application request (step S101). Next, the information processing system 1 executes a process for attaching a shared memory shared between nodes (step S102).

その後、情報処理システム1が有する各CPUによって実行されるアプリケーションが各メモリを使用する(ステップS103)。次に、情報処理システム1は、共有メモリのデタッチ処理を実行する(ステップS104)。その後、情報処理システム1は、共有メモリの解放処理を実行し(ステップS105)、処理を終了する。なお、ステップS101、およびステップS105は、その共有メモリのホームノード上のアプリケーションのみが実施するものとしても良いし、実際の処理はnopとなるものの、その共有メモリのホームノード以外のノード上のアプリケーションも実施するものとしても良い。   Thereafter, an application executed by each CPU included in the information processing system 1 uses each memory (step S103). Next, the information processing system 1 executes a shared memory detach process (step S104). Thereafter, the information processing system 1 executes a shared memory release process (step S105), and ends the process. Note that steps S101 and S105 may be executed only by the application on the home node of the shared memory, and the actual processing is nop, but the application on the node other than the home node of the shared memory. Can also be implemented.

次に、図19を用いて、図18中ステップS101で示した共有メモリの割当処理を実行する処理の流れについて説明する。図19は、共有メモリの割当処理を説明するためのフローチャートである。図19に示す例では、例えば、CPU21が実行するアプリケーションがOSに対して、ノード間の共有メモリ割当処理の実行を要求する(ステップS201)。   Next, the flow of processing for executing the shared memory allocation processing shown in step S101 in FIG. 18 will be described with reference to FIG. FIG. 19 is a flowchart for explaining shared memory allocation processing. In the example shown in FIG. 19, for example, an application executed by the CPU 21 requests the OS to execute a shared memory allocation process between nodes (step S201).

すると、CPU21が実行するOSが共有領域用の物理アドレスの領域から要求されたサイズのメモリ割当を行う(ステップS202)。次に、OSが割り当てた共有メモリの管理用IDをアプリケーションに引渡し(ステップS203)、共有メモリの割当処理を終了する。   Then, the OS executed by the CPU 21 performs memory allocation of the requested size from the area of the physical address for the shared area (step S202). Next, the shared memory management ID assigned by the OS is delivered to the application (step S203), and the shared memory assignment process is terminated.

次に、図20を用いて、図18中ステップS102で示したノード間の共有メモリアタッチ処理の流れについて説明する。図20は、共有メモリアタッチ処理を説明するためのフローチャートである。まず、アプリケーションは、OSに対して管理用IDを引渡し、ノード間の共有メモリのアタッチ処理を要求する(ステップS301)。このような場合には、OSは、他のノードで実行されているOSと通信を行い、管理用IDに対応する物理アドレスを獲得する(ステップS302)。   Next, the flow of the shared memory attach process between nodes shown in step S102 in FIG. 18 will be described with reference to FIG. FIG. 20 is a flowchart for explaining the shared memory attach process. First, the application delivers a management ID to the OS and requests a shared memory attach process between nodes (step S301). In such a case, the OS communicates with the OS executed in another node, and acquires a physical address corresponding to the management ID (step S302).

ここで、OSが他のノードで実行されているOSと通信を行う場合には、LANなどによる通信、サービスプロセッサ24を介した各ノード間の通信等を用いる。また、各ノードで実行されるOSは、特定の共有領域を、ノード間通信に用いる領域として設定し、設定した領域に対する情報の格納や読み取りを行う事で、通信を行うこととしても良い。   Here, when the OS communicates with an OS running on another node, communication using a LAN or the like, communication between nodes via the service processor 24, or the like is used. In addition, the OS executed in each node may perform communication by setting a specific shared area as an area used for inter-node communication and storing or reading information in the set area.

次に、OSは、物理アドレスに対応する論理アドレスを決定し、割当を行う(ステップS303)。例えば、CPU21で実行されるOSは、物理アドレスと論理アドレスとのTLB35aをアドレス変換部35に設定する。   Next, the OS determines a logical address corresponding to the physical address and assigns it (step S303). For example, the OS executed by the CPU 21 sets the TLB 35 a of the physical address and the logical address in the address conversion unit 35.

なお、各CPU21〜21cが用いる論理アドレスは、重複する範囲であっても良く、また、CPUごとに異なる範囲でもよい。また、各CPU21〜21cが用いる論理アドレスは、アプリケーションがOSに指定できるようにしてもよい。その後、OSは、論理アドレスの値をアプリケーションに引渡し(ステップS304)、処理を終了する。   The logical addresses used by the CPUs 21 to 21c may be in an overlapping range or may be a different range for each CPU. The logical addresses used by the CPUs 21 to 21c may be specified by the application to the OS. Thereafter, the OS hands over the value of the logical address to the application (step S304) and ends the process.

次に、図21を用いて、図18中ステップS103で示したアプリケーションがノード間の共有メモリを使用する処理の流れについて説明する。図21は、アプリケーションが共有メモリを使用する処理を説明するためのフローチャートである。例えば、CPU21が実行するアプリケーションは、論理アドレスを発行し、論理アドレスが示す記憶領域へのアクセスを行う(ステップS401)。   Next, the flow of processing in which the application shown in step S103 in FIG. 18 uses the shared memory between nodes will be described with reference to FIG. FIG. 21 is a flowchart for explaining processing in which an application uses a shared memory. For example, the application executed by the CPU 21 issues a logical address and accesses a storage area indicated by the logical address (step S401).

すると、CPU21は、TLBミスが発生したか否かを判別する(ステップS402)。そして、CPU21は、TLBミスが発生した場合は(ステップS402肯定)、トラップ処理を実行し、TLBに論理アドレスと物理アドレスとの組のエントリを設定する(ステップS403)。   Then, the CPU 21 determines whether or not a TLB miss has occurred (step S402). When a TLB miss occurs (Yes at Step S402), the CPU 21 executes trap processing and sets a pair of logical address and physical address in the TLB (Step S403).

次に、アプリケーションは、再度論理アドレスを発行し、TLBによる物理アドレスへの変換を経て、正常に共有メモリに対するアクセスを実行し(ステップS404)、処理を終了する。一方、TLBミスが発生しなかった場合は(ステップS402否定)、正常に共有メモリに対するアクセスが実行され(ステップS405)、処理を終了する。   Next, the application issues a logical address again, and after performing conversion to a physical address by TLB, normally executes access to the shared memory (step S404), and ends the process. On the other hand, if no TLB miss has occurred (No at step S402), the shared memory is normally accessed (step S405), and the process ends.

次に、図22を用いて、図18中ステップS104で示したノード間の共有メモリデタッチ処理の流れについて説明する。図22は、ノード間の共有メモリデタッチ処理を説明するためのフローチャートである。例えば、CPU21が実行するアプリケーションは、OSに対して、ノード間共有メモリの論理アドレス、または管理用IDを指定して、デタッチ処理を要求する(ステップS501)。   Next, the flow of the shared memory detach process between nodes shown in step S104 in FIG. 18 will be described with reference to FIG. FIG. 22 is a flowchart for explaining a shared memory detach process between nodes. For example, the application executed by the CPU 21 requests the detach process by designating the logical address of the inter-node shared memory or the management ID to the OS (step S501).

すると、CPU21が実行するOSは、キャッシュのフラッシュを行う(ステップS502)。すなわち、OSは、共有メモリの割り当て解除後、再度共有メモリとして割当てを行った場合に、共有メモリとして割当てが行われていない際に共有メモリの実メモリにアクセスするCPUがリブートすると、キャッシュと実メモリの状態が食い違う恐れがある。このため、OSは、キャッシュのフラッシュを行い、キャッシュと実メモリの状態とが食い違う状態を防止する。   Then, the OS executed by the CPU 21 flushes the cache (step S502). That is, when the OS that releases the shared memory and then allocates it again as shared memory, when the CPU that accesses the real memory of the shared memory reboots when the shared memory is not allocated, the OS and cache There is a risk that the state of the memory may conflict. For this reason, the OS flushes the cache to prevent a state where the state of the cache and the real memory are inconsistent.

そして、OSは、ノード間共有メモリ、すなわち、アプリケーションが利用していた範囲の論理アドレスの割当を解除し、解除した論理アドレスに関連するTLB35aのエントリを削除する(ステップS503)。なお、これ以降、本ノード上で、デタッチが完了しているメモリアドレスについてTLBミスが発生しても(ステップS402肯定)、OSはデタッチが完了している論理アドレスに対応する物理アドレスをTLB35aに設定しない。よって、ステップS404は正常に終了せず、アクセスエラーとなる。デタッチ完了後、ステップS302と反対に、OSがノード間で通信し、本アプリケーションがこの共有メモリのPAに対してアクセスを完了したことを通知する(ステップS504)。もし、この共有メモリがホームノード上で解放済みで、かつこのアプリケーションがこの共有メモリの最後の利用者であった場合、ホームノードに解放処理を依頼し(ステップS505)、処理を終了する。   Then, the OS releases the allocation of the logical address in the range used by the application, that is, the inter-node shared memory, and deletes the entry of the TLB 35a related to the released logical address (step S503). Thereafter, even if a TLB miss occurs on the memory address on which the detachment is completed on this node (Yes in step S402), the OS assigns the physical address corresponding to the logical address on which the detachment is completed to the TLB 35a. Not set. Therefore, step S404 does not end normally and an access error occurs. After the completion of the detachment, the OS communicates between the nodes, contrary to step S302, and notifies that this application has completed access to the PA of the shared memory (step S504). If this shared memory has been released on the home node and this application is the last user of this shared memory, the home node is requested to perform the release process (step S505), and the process ends.

次に、図23を用いて、図18中ステップS105で示したノード間共有メモリの解放処理の流れについて説明する。図23は、ノード間共有メモリの解放処理を説明するためのフローチャートである。例えば、CPU21が実行するアプリケーションは、OSに対してノード間共有メモリの解放処理を要求する(ステップS601)。すると、OSは、指定された共有領域の使用者がすべてデタッチしていた場合は、割当てを解放し(ステップS602)、処理を終了する。もしデタッチが完了していなければ、割り当ての解放処理は行わず、処理を完了する(実際の割り当ての完了処理はS505で行われる)。   Next, the flow of the inter-node shared memory release process shown at step S105 in FIG. 18 will be described using FIG. FIG. 23 is a flowchart for explaining the inter-node shared memory release process. For example, the application executed by the CPU 21 requests the OS to release the shared memory between nodes (step S601). Then, when all users of the designated shared area have detached, the OS releases the allocation (step S602) and ends the process. If the detach has not been completed, the allocation release process is not performed, and the process is completed (the actual allocation completion process is performed in S505).

次に、図24を用いて、CPU21が他のCPUに対して、メモリアクセスのリクエストを送信する処理の流れについて説明する。図24は、リクエストを発行する処理の流れを説明するためのフローチャートである。例えば、CPU21の演算部31は、論理アドレスを発行する(ステップS701)。   Next, the flow of processing in which the CPU 21 transmits a memory access request to another CPU will be described with reference to FIG. FIG. 24 is a flowchart for explaining the flow of processing for issuing a request. For example, the calculation unit 31 of the CPU 21 issues a logical address (step S701).

すると、アドレス変換部35において、論理アドレスから物理アドレスへの変換が行われる(ステップS702)。次に、キャッシュディレクトリ管理部36が、物理アドレスを取得し、キャッシュディレクトリ管理を実行する(ステップS703)。すなわち、キャッシュディレクトリ管理部36は、取得した物理アドレスが示す記憶領域についてのキャッシュステートを遷移させる。   Then, the address conversion unit 35 performs conversion from a logical address to a physical address (step S702). Next, the cache directory management unit 36 acquires a physical address and executes cache directory management (step S703). That is, the cache directory management unit 36 changes the cache state for the storage area indicated by the acquired physical address.

次に、キャッシュディレクトリ管理部36は、ノードマップ34を参照し、取得した物理アドレスが他ノードのメモリに振り分けられた物理アドレスであるか否かを判定する(ステップS704)。そして、キャッシュディレクトリ管理部36は、取得した物理アドレスが他ノードのメモリに振り分けられた物理アドレスではないと判定した場合には(ステップS704否定)、取得した物理アドレスを用いてメモリアクセスを実行する(ステップS705)。そして、処理を終了する。   Next, the cache directory management unit 36 refers to the node map 34 and determines whether or not the acquired physical address is a physical address allocated to the memory of another node (step S704). If the cache directory management unit 36 determines that the acquired physical address is not a physical address allocated to the memory of another node (No in step S704), the cache directory management unit 36 executes memory access using the acquired physical address. (Step S705). Then, the process ends.

一方、キャッシュディレクトリ管理部36は、取得した物理アドレスが他ノードのメモリに振り分けられた物理アドレスである場合には(ステップS704肯定)、ノードマップ34から物理アドレスと対応付けられたCPUIDを取得する(ステップS706)。そして、パケット送信部が、CPUIDと物理アドレスとを格納したパケット、すなわち、メモリアクセスのリクエストを生成し、XB2に送出し(ステップS707)、処理を終了する。   On the other hand, when the acquired physical address is a physical address assigned to the memory of another node (Yes at step S704), the cache directory management unit 36 acquires the CPU ID associated with the physical address from the node map 34. (Step S706). Then, the packet transmission unit generates a packet storing the CPU ID and the physical address, that is, a memory access request, sends the packet to XB 2 (step S707), and ends the process.

次に、図25を用いて、CPU21が他のCPUからメモリアクセスのリクエストを受信した際に実行する処理の流れについて説明する。図25は、リクエストを受信した際に実行する処理の流れを説明するためのフローチャートである。なお、図25に示す例では、CPU21が、他のCPUから「MoveIn to Share」や「MoveIn Exclusively」を受信した際に実行する処理の流れについて説明する。例えば、CPU21は、他のCPUからXB2を介してリクエストを受信する(ステップS801)。   Next, a flow of processing executed when the CPU 21 receives a memory access request from another CPU will be described with reference to FIG. FIG. 25 is a flowchart for explaining the flow of processing executed when a request is received. In the example illustrated in FIG. 25, the flow of processing executed when the CPU 21 receives “MoveIn to Share” or “MoveIn Exclusive” from another CPU will be described. For example, the CPU 21 receives a request from another CPU via XB2 (step S801).

このような場合には、CPU21は、ノードマップ34を用いて、リクエストの対象となる物理アドレスがローカル領域であるか否かを判定する(ステップS802)。そして、CPU21は、リクエストの対象となる物理アドレスがローカル領域である場合には(ステップS802肯定)、リクエスト元のCPUに否定応答を返信し(ステップS803)、処理を終了する。   In such a case, the CPU 21 uses the node map 34 to determine whether or not the physical address to be requested is a local area (step S802). If the physical address to be requested is a local area (Yes at step S802), the CPU 21 returns a negative response to the requesting CPU (step S803) and ends the process.

また、CPU21は、リクエストの対象となる物理アドレスがローカル領域でない場合には(ステップS802否定)、コヒーレンスを保持するキャッシュディレクトリ管理を実行する(ステップS804)。また、CPU21は、物理アドレスが示す記憶領域のステータスを判定する(ステップS805)。   On the other hand, when the physical address to be requested is not a local area (No at Step S802), the CPU 21 executes cache directory management that holds coherence (Step S804). Further, the CPU 21 determines the status of the storage area indicated by the physical address (step S805).

そして、CPU21は、判定したステータスに応じたオーダーを他のCPUに対して発行し(ステップS806)、ステータスを遷移させる(ステップS807)。その後、CPU21は、物理アドレスが示す記憶領域のデータをリクエスト元のCPUに送信する応答を行い(ステップS808)、処理を終了する。   Then, the CPU 21 issues an order corresponding to the determined status to another CPU (step S806), and changes the status (step S807). Thereafter, the CPU 21 makes a response to transmit the data in the storage area indicated by the physical address to the requesting CPU (step S808), and ends the process.

次に、図26を用いて、CPU21が応答を受信した際に実行する処理の流れについて説明する。図26は、CPUが応答を受信した際に実行する処理の流れを説明するためのフローチャートである。例えば、CPU21は、応答を受信する(ステップS901)。このような場合には、CPU21は、応答の内容が正常な応答であるか否かを判定する(ステップS902)。   Next, a flow of processing executed when the CPU 21 receives a response will be described with reference to FIG. FIG. 26 is a flowchart for explaining the flow of processing executed when the CPU receives a response. For example, the CPU 21 receives a response (step S901). In such a case, the CPU 21 determines whether or not the response content is a normal response (step S902).

そして、CPU21は、応答の内容が正常である場合、すなわち、リクエスト対象となるデータを受信した場合には(ステップS902肯定)、データを用いた正常な処理を実行し(ステップS903)、処理を終了する。一方、CPU21は、否定応答を受信した場合は(ステップS902否定)、否定応答の理由がアクセスエラーであるか否かを判定する(ステップS904)。   When the content of the response is normal, that is, when the data to be requested is received (Yes at Step S902), the CPU 21 executes normal processing using the data (Step S903) and performs the processing. finish. On the other hand, when receiving a negative response (No at Step S902), the CPU 21 determines whether the reason for the negative response is an access error (Step S904).

そして、CPU21は、否定応答の理由がアクセスエラーではない場合には(ステップS904否定)、通常のエラー処理を実行し(ステップS905)、処理を終了する。一方、CPU21は、否定応答の理由がアクセスエラーではない場合には(ステップS904肯定)、エラーが発生した物理アドレスをエラーレジスタに設定して、トラップ処理を実行し(ステップS906)、処理を終了する。   If the reason for the negative response is not an access error (No at Step S904), the CPU 21 executes normal error processing (Step S905) and ends the process. On the other hand, if the reason for the negative response is not an access error (Yes at Step S904), the CPU 21 sets the physical address where the error has occurred in the error register, executes the trap process (Step S906), and ends the process. To do.

次に、図27を用いて、CPU21がリクエストを送信する際に実行する処理の流れについて説明する。図27は、CPUがリクエストを送信する際に実行する処理の流れを説明するためのフローチャートである。例えば、CPU21は、リクエストに含まれるアクセス先の物理アドレスをPA83に格納し、リクエストの種類をリクエスト84に格納する(ステップS1001)。そして、CPU21は、リクエストを他のノードのCPUに送信する(ステップS1002)。続いて、CPU21は、タイマ81を起動させる(ステップS1003)。   Next, the flow of processing executed when the CPU 21 transmits a request will be described with reference to FIG. FIG. 27 is a flowchart for explaining the flow of processing executed when the CPU transmits a request. For example, the CPU 21 stores the physical address of the access destination included in the request in the PA 83 and stores the request type in the request 84 (step S1001). And CPU21 transmits a request to CPU of another node (step S1002). Subsequently, the CPU 21 starts up the timer 81 (step S1003).

その後、CPU21は、リクエストを送信してから所定時間経過する前、すなわち、タイムアウト前に、リクエストに対する応答を受信したか否かを判定する(ステップS1004)。タイムアウト前に、応答を受信した場合(ステップS1004肯定)には、CPU21は、タイマ81を停止する(ステップS1005)。そして、CPU21は、応答を処理し(ステップS1006)、処理を終了する。   Thereafter, the CPU 21 determines whether or not a response to the request has been received before a predetermined time has elapsed since the request was transmitted, that is, before timeout (step S1004). If a response is received before the timeout (Yes at Step S1004), the CPU 21 stops the timer 81 (Step S1005). And CPU21 processes a response (step S1006) and complete | finishes a process.

一方、タイムアウト前に、リクエストに対する応答を受信していない場合(ステップS1004否定)には、CPU21は、次のような処理を行う。すなわち、CPU21は、当該リクエストに対応するPA83に格納された物理アドレスを特定し、特定した物理アドレスをエラー発生アドレスレジスタ96に設定し、トラップを発生させる(ステップS1007)。次に、CPU21は、特定した物理アドレスが示す記憶領域を有するメモリに接続されたCPUにとって、CPU21がホームCPUであり、かつ、リクエストに、メモリ21へダーティのキャッシュデータをライトバックする指示が含まれているか否かを判定する(ステップS1008)。   On the other hand, if a response to the request has not been received before the timeout (No at step S1004), the CPU 21 performs the following process. That is, the CPU 21 specifies the physical address stored in the PA 83 corresponding to the request, sets the specified physical address in the error occurrence address register 96, and generates a trap (step S1007). Next, for the CPU connected to the memory having the storage area indicated by the identified physical address, the CPU 21 is the home CPU, and the request includes an instruction to write back dirty cache data to the memory 21. It is determined whether or not it is (step S1008).

CPU21がホームCPUであり、かつ、リクエストに、メモリ21へダーティのキャッシュデータをライトバックする指示が含まれている場合(ステップS1008肯定)には、CPU21は、次のような処理を行う。すなわち、CPU21は、メモリ22の共有メモリにライトバックされるキャッシュデータが、ライトバックされなかった異常を示す値を生成し、生成した値をディレクトリ36aの所定の領域に書き込む。または、CPU21は、ダウンしたノードによってキャッシュデータがライトバックされるメモリ22の共有メモリの領域に、エラー状態を示すデータを生成し、生成したデータを書き込む(ステップS1009)。そして、処理を終了する。また、CPU21がホームCPUでないか、または、リクエストに、メモリ21へダーティのキャッシュデータをライトバックする指示が含まれていない場合(ステップS1008否定)にも、処理を終了する。   When the CPU 21 is the home CPU and the request includes an instruction to write back dirty cache data to the memory 21 (Yes in step S1008), the CPU 21 performs the following process. That is, the CPU 21 generates a value indicating an abnormality in which the cache data written back to the shared memory of the memory 22 has not been written back, and writes the generated value in a predetermined area of the directory 36a. Alternatively, the CPU 21 generates data indicating an error state in the shared memory area of the memory 22 where the cache data is written back by the down node, and writes the generated data (step S1009). Then, the process ends. In addition, when the CPU 21 is not the home CPU or the request does not include an instruction to write back dirty cache data to the memory 21 (No in step S1008), the process is also terminated.

次に、図28を用いて、PCIe制御部42がリードのリクエストを送信する際に実行する処理の流れについて説明する。図28は、PCIe制御部がリードのリクエストを送信する際に実行する処理の流れを説明するためのフローチャートである。例えば、PCIe制御部42は、リクエストに含まれるアクセス先の物理アドレスをPA83に格納し、リクエストの種類をリクエスト84に格納する(ステップS1101)。そして、PCIe制御部42は、リクエストを他のノードのCPUに送信する(ステップS1102)。続いて、PCIe制御部42は、タイマ91を起動させる(ステップS1103)。   Next, a flow of processing executed when the PCIe control unit 42 transmits a read request will be described with reference to FIG. FIG. 28 is a flowchart for explaining a flow of processing executed when the PCIe control unit transmits a read request. For example, the PCIe control unit 42 stores the physical address of the access destination included in the request in the PA 83 and stores the request type in the request 84 (step S1101). Then, the PCIe control unit 42 transmits the request to the CPU of another node (step S1102). Subsequently, the PCIe control unit 42 starts the timer 91 (step S1103).

その後、PCIe制御部42は、タイムアウト前に、リクエストに対する応答を受信したか否かを判定する(ステップS1104)。タイムアウト前に、応答を受信した場合(ステップS1104肯定)には、PCIe制御部42は、タイマ91を停止する(ステップS1105)。そして、PCIe制御部42は、応答を処理し(ステップS1106)、処理を終了する。   Thereafter, the PCIe control unit 42 determines whether or not a response to the request has been received before the timeout (step S1104). If a response is received before the timeout (Yes at Step S1104), the PCIe control unit 42 stops the timer 91 (Step S1105). Then, the PCIe control unit 42 processes the response (step S1106) and ends the process.

一方、タイムアウト前に、リクエストに対する応答を受信していない場合(ステップS1104否定)には、PCIe制御部42は、次のような処理を行う。すなわち、PCIe制御部42は、当該リクエストに対応するPA83に格納された物理アドレスを特定し、特定した物理アドレスをエラー発生アドレスレジスタ98に設定し、トラップを発生させる(ステップS1107)。次に、PCIe制御部42は、「poisoned TLP」パケットを生成し、生成した「poisoned TLP」パケットをPCIe接続部28に送信し(ステップS1108)、処理を終了する。   On the other hand, if the response to the request has not been received before the timeout (No at Step S1104), the PCIe control unit 42 performs the following process. That is, the PCIe control unit 42 identifies the physical address stored in the PA 83 corresponding to the request, sets the identified physical address in the error occurrence address register 98, and generates a trap (step S1107). Next, the PCIe control unit 42 generates a “poisoned TLP” packet, transmits the generated “poisoned TLP” packet to the PCIe connection unit 28 (step S1108), and ends the process.

次に、図29を用いて、PCIe制御部42がライトのリクエストを送信する際に実行する処理の流れについて説明する。図29は、PCIe制御部がライトのリクエストを送信する際に実行する処理の流れを説明するためのフローチャートである。例えば、PCIe制御部42は、リクエストに含まれるアクセス先の物理アドレスをPA83に格納し、リクエストの種類をリクエスト84に格納する(ステップS1201)。そして、PCIe制御部42は、リクエストを他のノードのCPUに送信する(ステップS1202)。続いて、PCIe制御部42は、タイマ91を起動させる(ステップS1203)。   Next, a flow of processing executed when the PCIe control unit 42 transmits a write request will be described with reference to FIG. FIG. 29 is a flowchart for explaining the flow of processing executed when the PCIe control unit transmits a write request. For example, the PCIe control unit 42 stores the physical address of the access destination included in the request in the PA 83 and stores the request type in the request 84 (step S1201). Then, the PCIe control unit 42 transmits the request to the CPU of another node (step S1202). Subsequently, the PCIe control unit 42 starts the timer 91 (step S1203).

その後、PCIe制御部42は、タイムアウト前に、リクエストに対する応答を受信したか否かを判定する(ステップS1204)。タイムアウト前に、応答を受信した場合(ステップS1204肯定)には、PCIe制御部42は、タイマ91を停止する(ステップS1205)。そして、PCIe制御部42は、応答を処理し(ステップS1206)、処理を終了する。   Thereafter, the PCIe control unit 42 determines whether a response to the request has been received before the timeout (step S1204). If a response is received before the timeout (Yes at Step S1204), the PCIe control unit 42 stops the timer 91 (Step S1205). Then, the PCIe control unit 42 processes the response (step S1206) and ends the process.

一方、タイムアウト前に、リクエストに対する応答を受信していない場合(ステップS1204否定)には、PCIe制御部42は、次のような処理を行う。すなわち、PCIe制御部42は、当該リクエストに対応するPA83に格納された物理アドレスを特定し、特定した物理アドレスをエラー発生アドレスレジスタ98に設定し、トラップを発生させ(ステップS1207)、処理を終了する。   On the other hand, if the response to the request has not been received before the timeout (No at Step S1204), the PCIe control unit 42 performs the following process. That is, the PCIe control unit 42 identifies the physical address stored in the PA 83 corresponding to the request, sets the identified physical address in the error occurrence address register 98, generates a trap (step S1207), and ends the process. To do.

次に、図30を用いて、トラップが発生することによってOSが実行するトラップ処理の流れについて説明する。図30は、トラップが発生することによってOSが実行するトラップ処理の流れを説明するためのフローチャートである。例えば、トラップが発生することによって、CPU21が実行するOSは、割込みハンドラを起動させる(ステップS1301)。割込みハンドラは、トラップの種別を特定する(ステップS1302)。割込みハンドラは、トラップの種別が、CPU21が検出した他ノードのCPUとの通信エラーで、リード処理中であることを示すか否かを判定する。トラップの種別が、CPU21が検出した他ノードのCPUとの通信エラーで、リード処理中であることを示す場合(S1303肯定)には、割込みハンドラは、次のような処理を行う。すなわち、割込みハンドラは、割込みが発生したときのプログラムカウンタが示すプロセスのシグナルハンドラをシグナルの送信先とする(ステップS1304)。続いて、割込みハンドラは、シグナルの送信先にシグナルを送信し(ステップS1305)、処理を終了する。   Next, the flow of trap processing executed by the OS when a trap occurs will be described with reference to FIG. FIG. 30 is a flowchart for explaining the flow of trap processing executed by the OS when a trap occurs. For example, when a trap occurs, the OS executed by the CPU 21 activates an interrupt handler (step S1301). The interrupt handler specifies the type of trap (step S1302). The interrupt handler determines whether or not the trap type indicates that a read process is being performed due to a communication error with the CPU of another node detected by the CPU 21. When the trap type indicates that the read process is being performed due to a communication error with the CPU of another node detected by the CPU 21 (Yes in S1303), the interrupt handler performs the following process. That is, the interrupt handler sets the signal handler of the process indicated by the program counter when the interrupt occurs as the signal transmission destination (step S1304). Subsequently, the interrupt handler transmits a signal to the signal transmission destination (step S1305), and ends the process.

また、トラップの種別が、CPU21が検出した他ノードのCPUとの通信エラーで、リード処理中であることを示さない場合(ステップS1303否定)には、割込みハンドラは、次のような処理を行う。すなわち、割込みハンドラは、トラップの種別が、CPU21が検出した他ノードのCPUとの通信エラーで、ライト処理中であることを示すか否かを判定する(ステップS1306)。トラップの種別が、CPU21が検出した他ノードのCPUとの通信エラーで、ライト処理中であることを示す場合(ステップS1306肯定)には、割込みハンドラは、エラー発生アドレスレジスタ96を読み、物理アドレスを取得する(ステップS1307)。そして、割込みハンドラは、取得した物理アドレスに対応するシグナルハンドラをハンドラテーブルから検索する(ステップS1308)。   If the trap type does not indicate that read processing is in progress due to a communication error with the CPU of another node detected by the CPU 21 (No in step S1303), the interrupt handler performs the following processing. . That is, the interrupt handler determines whether or not the trap type indicates that the write process is being performed due to a communication error with the CPU of another node detected by the CPU 21 (step S1306). If the trap type indicates that a write process is being performed due to a communication error with the CPU of another node detected by the CPU 21 (Yes in step S1306), the interrupt handler reads the error occurrence address register 96 and reads the physical address. Is acquired (step S1307). Then, the interrupt handler searches the handler table for a signal handler corresponding to the acquired physical address (step S1308).

なお、ハンドラテーブルは、次のようにして作成される。まず、CPU21が実行するアプリケーションの要求によって、共有領域用の物理アドレスの領域から要求されたサイズのメモリ割当が行われた際に、シグナルハンドラを取得し、取得したシグナルハンドラの関数のエントリアドレスをハンドラテーブルに登録する。そして、ハンドラテーブルへのシグナルハンドラの関数のエントリアドレスの登録時に、OSは、次のような処理を行う。すなわち、CPU21が実行するOSは、シグナルハンドラの関数のエントリアドレスに、共有メモリのアドレスと、プロセスの識別子とを対応付けて、ハンドラテーブルに登録する。このようにして、ハンドラテーブルは作成される。   The handler table is created as follows. First, when a memory allocation of the requested size is performed from the physical address area for the shared area in response to an application request executed by the CPU 21, a signal handler is acquired, and the entry address of the acquired signal handler function is set. Register in the handler table. Then, when registering the entry address of the function of the signal handler in the handler table, the OS performs the following processing. That is, the OS executed by the CPU 21 registers the shared memory address and the process identifier in the handler table in association with the entry address of the signal handler function. In this way, the handler table is created.

図31は、ハンドラテーブルのデータ構造の一例を示す図である。図31に示すハンドラテーブルは、「共有メモリアドレス」の項目と、「pid」の項目と、「シグナルハンドラの関数のエントリアドレス」の項目とを有する。「共有メモリアドレス」の項目には、「シグナルハンドラの関数のエントリアドレス」の項目にエントリアドレスが登録されたシグナルハンドラに対応する共有メモリのアドレスが登録される。また、「pid」の項目には、「シグナルハンドラの関数のエントリアドレス」の項目にエントリアドレスが登録されたシグナルハンドラに対応するプロセスの識別子が登録される。「シグナルハンドラの関数のエントリアドレス」の項目には、シグナルハンドラの関数のエントリアドレスが登録される。   FIG. 31 is a diagram illustrating an example of the data structure of the handler table. The handler table shown in FIG. 31 includes an item “shared memory address”, an item “pid”, and an item “entry address of a function of a signal handler”. In the item “shared memory address”, the address of the shared memory corresponding to the signal handler in which the entry address is registered in the item “entry address of function of signal handler” is registered. In the “pid” item, an identifier of a process corresponding to the signal handler in which the entry address is registered in the “signal handler function entry address” item is registered. The entry address of the function of the signal handler is registered in the item “entry address of the function of the signal handler”.

図30に戻り、検索の結果、割込みハンドラは、シグナルハンドラを得ることができたか否かを判定する(ステップS1309)。シグナルハンドラを得ることができた場合(ステップS1309肯定)には、割込みハンドラは、得たシグナルハンドラをシグナル送信先とし(ステップS1310)、ステップS1305へ進む。一方、シグナルハンドラを得ることができなかった場合(ステップS1309否定)には、割込みハンドラは、ステップS1307で取得した物理アドレスが示す共有領域の共有メモリを使用している全プロセスを中断させ(ステップS1311)、処理を終了する。   Returning to FIG. 30, as a result of the search, the interrupt handler determines whether or not a signal handler has been obtained (step S1309). If the signal handler can be obtained (Yes at step S1309), the interrupt handler sets the obtained signal handler as the signal transmission destination (step S1310), and proceeds to step S1305. On the other hand, if the signal handler cannot be obtained (No in step S1309), the interrupt handler interrupts all processes using the shared memory in the shared area indicated by the physical address acquired in step S1307 (step S1307). S1311), the process is terminated.

また、トラップの種別が、CPU21が検出した他ノードのCPUとの通信エラーで、ライト処理中であることを示す場合(ステップS1306否定)には、割込みハンドラは、次のような判定を行うことができる。すなわち、割込みハンドラは、トラップの種別が、PCIe制御部42が検出した他ノードのCPUとの通信エラーであると判定することができる。そこで、割込みハンドラは、PCIe制御部42の割込み処理ルーチンを起動する(ステップS1312)。そして、CPU21が実行する割込み処理では、PCIe制御部42のエラー発生アドレスレジスタ98が読まれ、物理アドレスが取得される(ステップS1313)。   Further, when the trap type indicates that a write process is in progress due to a communication error with the CPU of another node detected by the CPU 21 (No in step S1306), the interrupt handler makes the following determination. Can do. That is, the interrupt handler can determine that the trap type is a communication error with the CPU of another node detected by the PCIe control unit 42. Therefore, the interrupt handler starts an interrupt processing routine of the PCIe control unit 42 (step S1312). In the interrupt process executed by the CPU 21, the error occurrence address register 98 of the PCIe control unit 42 is read and a physical address is acquired (step S1313).

次に、割込みハンドラは、取得した物理アドレスが示す記憶領域が、共有メモリの共有領域であるか否かを判定する(ステップS1314)。取得した物理アドレスが示す記憶領域が、共有メモリの共有領域である場合(ステップS1314肯定)には、ステップS1308に戻る。一方、取得した物理アドレスが示す記憶領域が、共有メモリの共有領域でない場合(ステップS1314否定)には、所定の対応する処理を行って(ステップS1315)、処理を終了する。   Next, the interrupt handler determines whether or not the storage area indicated by the acquired physical address is a shared area of the shared memory (step S1314). If the storage area indicated by the acquired physical address is a shared area of the shared memory (Yes at step S1314), the process returns to step S1308. On the other hand, if the storage area indicated by the acquired physical address is not a shared area of the shared memory (No at step S1314), a predetermined corresponding process is performed (step S1315), and the process is terminated.

次に、図32を用いて、シグナルが通知されたシグナルハンドラが実行する処理の流れについて説明する。図32は、シグナルが通知されたシグナルハンドラが実行する処理の流れを説明するためのフローチャートである。例えば、割込みハンドラは、シグナルをシグナルハンドラに通知して、シグナルハンドラを起動させる(ステップS1401)。起動されたシグナルハンドラは、シグナルハンドラに通知された物理アドレスから、異常が発生した共有メモリを特定する(ステップS1402)。シグナルハンドラは、シグナルハンドラに通知された異常が発生したノードの情報から、異常が発生したノードに存在する共有メモリをすべてデタッチする(ステップS1403)。   Next, the flow of processing executed by the signal handler notified of the signal will be described with reference to FIG. FIG. 32 is a flowchart for explaining the flow of processing executed by the signal handler notified of the signal. For example, the interrupt handler notifies the signal handler of the signal and activates the signal handler (step S1401). The activated signal handler identifies the shared memory in which an abnormality has occurred from the physical address notified to the signal handler (step S1402). The signal handler detaches all the shared memories existing in the node where the abnormality has occurred from the information on the node where the abnormality notified to the signal handler has occurred (step S1403).

続いて、シグナルハンドラは、異常が発生したノードと共有しているノード20の共有メモリすべてに対してリカバリ処理を行う(ステップS1404)。そして、シグナルハンドラは、アプリケーション固有のリカバリ処理を行う(ステップS1405)。   Subsequently, the signal handler performs recovery processing for all the shared memories of the node 20 shared with the node where the abnormality has occurred (step S1404). Then, the signal handler performs application-specific recovery processing (step S1405).

アプリケーション固有のリカバリ処理の一例について説明する。例えば、一定間隔でディスクなどの外部記憶装置上に「checkpoint」を作成するアプリケーションをCPU21が実行する場合には、「checkpoint」が示すデータを読み出して、処理を再開するようなリカバリ処理が挙げられる。また、「checkpoint」を作成しないアプリケーションをCPU21が実行する場合には、再初期化、あるいは、再起動処理を行うようなリカバリ処理が挙げられる。   An example of application-specific recovery processing will be described. For example, when the CPU 21 executes an application that creates “checkpoint” on an external storage device such as a disk at regular intervals, a recovery process of reading the data indicated by “checkpoint” and restarting the process is included. . Further, when the CPU 21 executes an application that does not create “checkpoint”, a recovery process such as a reinitialization or a restart process is given.

また、シグナルが通知されたシグナルハンドラが実行する処理については、上述した処理に限られない。そこで、図33を用いて、シグナルが通知されたシグナルハンドラが実行する他の処理の流れについて説明する。図33は、シグナルが通知されたシグナルハンドラが実行する他の処理の流れを説明するためのフローチャートである。例えば、割込みハンドラは、シグナルをシグナルハンドラに通知して、シグナルハンドラを起動させる(ステップS1501)。起動されたシグナルハンドラは、シグナルハンドラに通知された物理アドレスから、異常が発生した共有メモリを特定する(ステップS1502)。シグナルハンドラは、シグナルハンドラを実行するCPU21を有するノード20(自ノード)が、異常が発生したノードのメモリを共有メモリとしてアタッチしていたか否かを判定する(ステップS1503)。自ノードが、異常が発生したノードのメモリを共有メモリとしてアタッチしていない場合(ステップS1503否定)には、ステップS1508へ進む。   Further, the processing executed by the signal handler notified of the signal is not limited to the processing described above. Therefore, the flow of other processing executed by the signal handler notified of the signal will be described with reference to FIG. FIG. 33 is a flowchart for explaining another processing flow executed by the signal handler notified of the signal. For example, the interrupt handler notifies the signal handler of the signal and activates the signal handler (step S1501). The activated signal handler identifies the shared memory in which an abnormality has occurred from the physical address notified to the signal handler (step S1502). The signal handler determines whether or not the node 20 (self node) having the CPU 21 that executes the signal handler has attached the memory of the node where the abnormality has occurred as a shared memory (step S1503). If the own node has not attached the memory of the node in which the abnormality has occurred as a shared memory (No at step S1503), the process proceeds to step S1508.

一方、自ノードが、異常が発生したノードのメモリを共有メモリとしてアタッチしていた場合(ステップS1503肯定)には、シグナルハンドラは、次のような処理を行う。すなわち、シグナルハンドラは、シグナルハンドラに通知された異常が発生したノードの情報から、異常が発生したノードに存在する共有メモリをすべてデタッチする(ステップS1504)。   On the other hand, when the own node has attached the memory of the node where the abnormality has occurred as a shared memory (Yes in step S1503), the signal handler performs the following processing. That is, the signal handler detaches all the shared memories existing in the node where the abnormality has occurred from the information of the node where the abnormality notified to the signal handler has occurred (step S1504).

続いて、シグナルハンドラは、異常が発生したノードに存在する共有メモリのアドレスをL1キャッシュ、L2キャッシュから削除する(ステップS1505)。そして、シグナルハンドラは、異常が発生したノードに存在する共有メモリのアドレスを含むエントリをTLB35aから削除する(ステップS1506)。そして、シグナルハンドラは、シグナルハンドラに通知された物理アドレスを、TLBミスが発生した場合であっても、TLB35aに登録を禁止する物理アドレスとする(ステップS1507)。   Subsequently, the signal handler deletes the address of the shared memory existing in the node where the abnormality has occurred from the L1 cache and the L2 cache (step S1505). Then, the signal handler deletes the entry including the address of the shared memory existing in the node where the abnormality has occurred from the TLB 35a (step S1506). Then, the signal handler sets the physical address notified to the signal handler as a physical address that prohibits registration in the TLB 35a even if a TLB miss occurs (step S1507).

続いて、シグナルハンドラは、自ノードのメモリを、異常が発生したノードが共有メモリとしてアタッチしていたか否かを判定する(ステップS1508)。自ノードのメモリを、異常が発生したノードが共有メモリとしてアタッチしていた場合(ステップS1508肯定)には、シグナルハンドラは、異常が発生したノードと共有しているノード20の共有メモリすべてに対してリカバリ処理を行う(ステップS1509)。そして、シグナルハンドラは、アプリケーション固有のリカバリ処理を行い(ステップS1510)、処理を終了する。また、自ノードのメモリを、異常が発生したノードが共有メモリとしてアタッチしていない場合(ステップS1508否定)にも、処理を終了する。   Subsequently, the signal handler determines whether or not the node where the abnormality has occurred is attached as a shared memory to the memory of its own node (step S1508). If the node where the abnormality occurred is attached as the shared memory to the memory of the own node (Yes in step S1508), the signal handler applies to all the shared memories of the node 20 shared with the node where the abnormality occurred. Recovery processing is performed (step S1509). Then, the signal handler performs an application-specific recovery process (step S1510) and ends the process. In addition, when the node in which an abnormality has occurred is not attached as a shared memory to the memory of the own node (No in step S1508), the process is also terminated.

[実施例1の効果]
上述したように、情報処理システム1は、一部を共有メモリ領域として設定可能なメモリ22〜22cを各々が備える複数のノードと、複数のノード間を接続するXB2とを有する。複数のノードの各々は、複数のノード間のデータ転送の異常または他のノードの異常を検出する異常検出部37c、42cを有する。また、複数のノードの各々は、異常検出部37c、42cにより検出された異常に基づいて「poisoned TLP」パケットや、ディレクトリ36aの「UE」の項目に登録する異常を示す値を生成する。また、複数のノードの各々は、データ転送の要求発行元のノード内のプロセッサに対して割込みを発生する。また、複数のノードの各々のCPUが実行するOSは、割込みを受信すると、リカバリ処理を行う。
[Effect of Example 1]
As described above, the information processing system 1 includes a plurality of nodes each including the memories 22 to 22c that can be partially set as a shared memory area, and the XB 2 that connects the plurality of nodes. Each of the plurality of nodes includes abnormality detection units 37c and 42c that detect an abnormality in data transfer between the plurality of nodes or an abnormality in another node. Further, each of the plurality of nodes generates a value indicating an abnormality to be registered in the “poisoned TLP” packet or the item “UE” of the directory 36a based on the abnormality detected by the abnormality detection units 37c and 42c. Each of the plurality of nodes generates an interrupt to the processor in the node that issued the data transfer request. Further, the OS executed by each CPU of the plurality of nodes performs a recovery process when receiving an interrupt.

すなわち、複数のノードのうち少なくとも1つのノードは、異常検出部を有する。この異常検出部は、当該1つのノード又は他のノードが備える記憶装置に含まれる、当該1つのノード及び当該他のノードで共有可能な共有メモリ領域を利用したデータ転送のデータ転送経路における異常を検出する。また、異常検出部は、当該1つのノード又は当該他のノードが備える記憶装置に含まれる、当該1つのノード及び当該他のノードで共有可能な共有メモリ領域を利用したデータ転送のデータ転送経路に含まれ得るいずれかのノードにおける異常を検出する。また、複数のノードのうち少なくとも1つのノードは、異常検出部により検出された異常に基づいてエラー情報を生成するとともに、自ノード内のプロセッサに対する割り込みを発生するエラー情報生成部を有する。また、複数のノードのうち少なくとも1つのノードは、割り込みに応じてエラー情報に基づいて、リカバリ処理を実行する。   That is, at least one of the plurality of nodes has an abnormality detection unit. The abnormality detection unit detects an abnormality in the data transfer path of data transfer using a shared memory area that can be shared by the one node and the other node, included in the storage device included in the one node or the other node. To detect. In addition, the abnormality detection unit is included in a data transfer path of data transfer using a shared memory area that can be shared by the one node and the other node included in the storage device included in the one node or the other node. Detect anomalies in any of the nodes that can be included. In addition, at least one of the plurality of nodes has an error information generation unit that generates error information based on the abnormality detected by the abnormality detection unit and generates an interrupt to the processor in the own node. In addition, at least one of the plurality of nodes executes recovery processing based on the error information in response to the interrupt.

このように、情報処理システム1では、データ転送中に通信相手のノードがダウンした場合であっても、割込みが通知されたCPU21で実行されるOSによって、ダウンしたノードによって共有されていた自ノードの共有メモリに対してリカバリ処理が行われる。そのため、通信相手のノードがダウンして相手ノードが共有メモリのデータをキャッシュしていた場合でも、自ノードはダウンしなくてすむ。よって、情報処理システム1によれば、データ転送中にノード間で通信異常が発生した場合であっても、従来技術のように、全ノードがダウンしなくてすむ。したがって、情報処理システム1によれば、ノード間のデータ転送に関わる異常が発生した場合に、エラーの影響範囲を抑えることができる。   In this way, in the information processing system 1, even when the communication partner node is down during data transfer, the own node shared by the down node by the OS executed by the CPU 21 notified of the interrupt Recovery processing is performed on the shared memory. Therefore, even when the communication partner node goes down and the counterpart node caches the data in the shared memory, the own node does not have to go down. Therefore, according to the information processing system 1, even if a communication abnormality occurs between nodes during data transfer, it is not necessary for all the nodes to be down as in the prior art. Therefore, according to the information processing system 1, when an abnormality related to data transfer between nodes occurs, it is possible to suppress the error influence range.

また、情報処理システム1は、ポインタ80、90によって、時間を計測する対象のリクエストを切り替えることで、1つのタイマ81、91だけで、リクエストが送信されてからのタイムアウトを検出することができる。   In addition, the information processing system 1 can detect a timeout after a request is transmitted by using only one timer 81 or 91 by switching the request whose time is to be measured using the pointers 80 and 90.

また、情報処理システム1は、受信した物理アドレスに基づいて、アクセス対象が共有領域であるかローカル領域であるかを判別するので、ローカル領域に格納するカーネルデータやユーザデータのセキュリティレベルを高く保つことができる。また、情報処理システム1は、全てのメモリをキャッシュ可能とするので、メモリアクセスにおけるレイテンシを容易に隠蔽することができる。   Further, since the information processing system 1 determines whether the access target is a shared area or a local area based on the received physical address, the security level of kernel data and user data stored in the local area is kept high. be able to. In addition, since the information processing system 1 can cache all the memories, the latency in memory access can be easily hidden.

また、CPU21は、他のCPUがアクセスするメモリの共有領域に対して、メモリ22にアクセスする場合と同様の方法でアクセスする。すなわち、CPU21が有する演算部31は、アクセス対象となる記憶領域がメモリ22上に存在する場合にも、他のメモリ上に存在する場合にも、論理アドレスを出力するだけでよい。   In addition, the CPU 21 accesses the shared area of the memory accessed by other CPUs in the same manner as when accessing the memory 22. That is, the arithmetic unit 31 included in the CPU 21 only needs to output a logical address regardless of whether the storage area to be accessed exists on the memory 22 or on another memory.

このため、CPU21は、I/Oの排他制御等の処理やプログラミング等を実行せずとも、容易に共有領域にアクセスできるため、メモリアクセス性能を向上させることができる。また、CPU21は、実行するプログラムやOSに改変を行わずとも、共有メモリを適切に利用することができる結果、プリフェッチ処理の実行を従来と同様に行う事ができるため、メモリアクセスの性能を向上させることができる。   For this reason, the CPU 21 can easily access the shared area without executing processing such as exclusive control of I / O, programming, and the like, so that the memory access performance can be improved. In addition, the CPU 21 can appropriately use the shared memory without modifying the program to be executed or the OS. As a result, the prefetch process can be executed in the same manner as before, thereby improving the memory access performance. Can be made.

また、CPU21は、他のCPUからのメモリアクセスの対象がローカル領域へのアクセスであると判定した場合には、否定応答を返信する。このため、情報処理システム1は、共有領域以外へのアクセスを防止する結果、エラーを防ぐことができる。   If the CPU 21 determines that the target of memory access from another CPU is access to the local area, it returns a negative response. For this reason, the information processing system 1 can prevent errors as a result of preventing access to areas other than the shared area.

また、キャッシュディレクトリ管理部36は、ノードマップ34を用いて、物理アドレスをノードマップ34に対応付けて記憶されたCPUIDに変換する。このため、CPU21は、アクセス対象となる物理アドレスが振り分けられたメモリにアクセスするCPUを識別することができる。   Further, the cache directory management unit 36 uses the node map 34 to convert the physical address into a CPU ID stored in association with the node map 34. Therefore, the CPU 21 can identify the CPU that accesses the memory to which the physical address to be accessed is allocated.

また、CPU21は、メモリ22に記憶されたデータをキャッシュしたCPUを管理するディレクトリを用いて、キャッシュコヒーレンスの制御を行う。このため、情報処理システム1は、情報処理システム1が有するCPUの数が増加した場合にも、XB2のトラフィックを増加させることなく、効率的にキャッシュコヒーレンスを保持することができる。   The CPU 21 controls cache coherence using a directory that manages a CPU that caches data stored in the memory 22. For this reason, the information processing system 1 can efficiently maintain cache coherence without increasing the traffic of the XB 2 even when the number of CPUs included in the information processing system 1 increases.

具体的には、情報処理システム1においては、各CPU間の通信が、リモートCPUとホームCPU間、または、リモートCPUとホームCPUと更新したデータをキャッシュするローカルCPU間に限定される。このため、情報処理システム1は、効率的にキャッシュコヒーレンスを保持することができる。   Specifically, in the information processing system 1, the communication between the CPUs is limited between the remote CPU and the home CPU, or between the remote CPU and the home CPU and the local CPU that caches updated data. For this reason, the information processing system 1 can hold cache coherence efficiently.

これまで本発明の実施例について説明したが実施例は、上述した実施例以外にも様々な異なる形態にて実施されてよいものである。そこで、以下では実施例2として本発明に含まれる他の実施例を説明する。   Although the embodiments of the present invention have been described so far, the embodiments may be implemented in various different forms other than the embodiments described above. Therefore, another embodiment included in the present invention will be described below as a second embodiment.

(1)ノードの異常を検出する方法について、
上述した実施例1では、情報処理システム1が、リクエストのタイムアウトを検出することで、ノードの異常を検出する場合について例示したが、開示のシステムは、これに限定されない。例えば、開示のシステムは、所定の時間間隔で、互いに接続されたサービスプロセッサ間でサービスプロセッサの状況を確認することにより、ノードの異常を検出することもできる。また、開示のシステムは、LAN経由でのノード間での「alive check」を、所定の時間間隔で行うことにより、ノードの異常を検出することができる。これにより、リクエストが送信されるタイミングとは、非同期で、ノードの異常を検出することができる。
(1) About the method of detecting node abnormalities,
In the first embodiment described above, the information processing system 1 has exemplified the case of detecting a node abnormality by detecting a request timeout, but the disclosed system is not limited thereto. For example, the disclosed system can also detect a node abnormality by checking the status of service processors between service processors connected to each other at predetermined time intervals. Further, the disclosed system can detect an abnormality of a node by performing “alive check” between nodes via a LAN at a predetermined time interval. Thereby, the node abnormality can be detected asynchronously with the timing at which the request is transmitted.

図34は、ノードの異常を検出する方法の一例を説明するための情報処理システムの模式的な図である。図34の例は、ビルディングボックスを「BB」と表記した場合を示す。図34の例では、各BBのCPUは、異常検出回路72、自ノード番号情報73、ノードダウン通知部61、割込発生回路75、ノードダウン受信部62、ノードダウン情報レジスタ74を有する。   FIG. 34 is a schematic diagram of an information processing system for explaining an example of a method for detecting an abnormality of a node. The example of FIG. 34 shows a case where the building box is expressed as “BB”. In the example of FIG. 34, each BB CPU has an abnormality detection circuit 72, own node number information 73, a node down notification unit 61, an interrupt generation circuit 75, a node down reception unit 62, and a node down information register 74.

異常検出回路72は、自ノードの異常を検出する。自ノード番号情報73は、自ノードの識別番号を示す情報である。ノードダウン通知部61は、異常検出回路72で自ノードの異常が検出された場合には、異常の種類、および、自ノード番号情報73が示す自ノードの識別番号をノードダウン通知パケットに含めてXBに送信する。なお、異常の種類の一例としては、ノードダウン、ハング、どのCPUで異常が発生したかを示す情報が挙げられる。また、自ノード番号情報73が示す情報は、ノードを識別可能な情報であれば何でもよい。例えば、ノードと、ノードに搭載されているCPUとの関係が予め定義されている場合には、CPUIDからノード番号が分かるので、自ノード番号情報73が示す情報は、CPUIDでもよい。   The abnormality detection circuit 72 detects an abnormality of the own node. The own node number information 73 is information indicating the identification number of the own node. When the abnormality detection circuit 72 detects an abnormality of the own node, the node down notification unit 61 includes the type of abnormality and the identification number of the own node indicated by the own node number information 73 in the node down notification packet. Send to XB. An example of the type of abnormality includes node down, hang, and information indicating which CPU has an abnormality. Further, the information indicated by the own node number information 73 may be anything as long as the information can identify the node. For example, when the relationship between the node and the CPU mounted on the node is defined in advance, the node number is known from the CPU ID, so the information indicated by the own node number information 73 may be the CPU ID.

ノードダウン受信部62は、XBから送信されたノードダウン通知パケットを受信すると、ノードダウン通知パケットに含まれる異常の種類、および、自ノードの識別番号をノードダウン情報レジスタ74に設定する。ノードダウン情報レジスタ74に異常の種類、および、自ノードの識別番号が設定されると、この設定された情報を用いて、ソフトウェアが異常の対処を行うことができる。また、ノードダウン受信部62は、ノードダウン通知パケットを受信すると、割込発生回路75に割込みを発生させるための制御信号を出力する。割込発生回路75は、ノードダウン受信部62から制御信号を受信すると、実施例1と同様に、割込みを発生させる。そのため、この割込みにより、割込みが発生してからの処理については、実施例1と同様の処理が行われる。   Upon receiving the node down notification packet transmitted from XB, the node down receiving unit 62 sets the type of abnormality included in the node down notification packet and the identification number of the own node in the node down information register 74. When the type of abnormality and the identification number of the own node are set in the node down information register 74, the software can deal with the abnormality using the set information. Further, when receiving the node down notification packet, the node down reception unit 62 outputs a control signal for causing the interrupt generation circuit 75 to generate an interrupt. When receiving the control signal from the node down reception unit 62, the interrupt generation circuit 75 generates an interrupt as in the first embodiment. Therefore, the processing after the interrupt is generated by this interrupt is the same as that of the first embodiment.

図34の例では、各BBのASICは、異常検出回路70、自ノード番号情報71、ノードダウン通知部60を有する。   In the example of FIG. 34, the ASIC of each BB includes an abnormality detection circuit 70, own node number information 71, and a node down notification unit 60.

異常検出回路70は、自ノードの異常を検出する。自ノード番号情報71は、自ノードの識別番号を示す情報である。ノードダウン通知部60は、異常検出回路70で自ノードの異常が検出された場合には、異常の種類、および、自ノード番号情報71が示す自ノードの識別番号をノードダウン通知パケットに含めてXBに送信する。   The abnormality detection circuit 70 detects an abnormality of the own node. The own node number information 71 is information indicating the identification number of the own node. When the abnormality detection circuit 70 detects an abnormality of the own node, the node down notification unit 60 includes the type of abnormality and the identification number of the own node indicated by the own node number information 71 in the node down notification packet. Send to XB.

ノードダウン通知部60、61は、複数のノードダウン通知パケットをXBに送信して、複数のCPUにノードダウン通知パケットを送信することができる。また、ノードダウン通知部60、61は、1つのノードダウン通知パケットをXBに送信して、XBが複数のCPUにノードダウン通知パケットを送信することもできる。また、ノードダウン通知部60、61は、ノードごとに1つのCPUに、ノードダウン通知パケットを送信することもできる。   The node down notification units 60 and 61 can transmit a plurality of node down notification packets to the XB and transmit the node down notification packets to a plurality of CPUs. Further, the node down notification units 60 and 61 can transmit one node down notification packet to XB, and XB can transmit the node down notification packet to a plurality of CPUs. The node down notification units 60 and 61 can also transmit a node down notification packet to one CPU for each node.

図35を用いて、実施例1の異常検出方法とは異なる方法を用いた場合の処理の流れについて説明する。図35は、実施例1の異常検出方法とは異なる方法を用いた場合の処理の流れを説明するためのフローチャートである。例えば、CPU21は、実施例2において上述した異常検出方法のいずれかを用いて、ノードの異常が検出されたか否かを判定する(ステップS1601)。ノードの異常が検出されない場合(ステップS1601否定)には、CPU21は、再び、ステップS1601での判定を行う。一方、ノードの異常が検出された場合(ステップS1601肯定)には、CPU21は、異常が検出されたノードが、リモートノードであるか否かを判定する(ステップS1602)。   The flow of processing when a method different from the abnormality detection method according to the first embodiment is used will be described with reference to FIG. FIG. 35 is a flowchart for explaining the flow of processing when a method different from the abnormality detection method of the first embodiment is used. For example, the CPU 21 determines whether or not a node abnormality has been detected using any of the abnormality detection methods described in the second embodiment (step S1601). When the node abnormality is not detected (No at Step S1601), the CPU 21 performs the determination at Step S1601 again. On the other hand, when a node abnormality is detected (Yes at step S1601), the CPU 21 determines whether or not the node where the abnormality is detected is a remote node (step S1602).

異常が検出されたノードが、リモートノードである場合(ステップS1602肯定)には、CPU21が実行するOSが、次のような処理を行う。すなわち、OSが、自ノード20のディレクトリ36aについて、異常が発生したノードの情報が残っている場合には、ディレクトリ36aの整合性をとり(ステップS1603)、処理を終了する。ここで、ディレクトリの整合性のとりかたの一例を説明する。例えば、CPU21は、ダウンしたノードがデータをキャッシュしているが、キャッシュの状態は、「clean」である場合には、次のような処理を行う。すなわち、CPU21は、その「clean」であるキャッシュのディレクトリ36aの情報を「ダウンしたノードがキャッシュを持っていない」状態に変更するリカバリ処理を行う。また、CPU21は、ダウンしたノードがデータをキャッシュしており、キャッシュの状態は、「dirty」である場合には、次のような処理を行う。すなわち、CPU21は、「dirty」であるキャッシュラインをエラー状態に変更するリカバリ処理を行う。   When the node where the abnormality is detected is a remote node (Yes at Step S1602), the OS executed by the CPU 21 performs the following process. That is, the OS takes the consistency of the directory 36a (step S1603) when the information of the node where the abnormality has occurred remains in the directory 36a of the own node 20, and ends the processing. Here, an example of how to maintain directory consistency will be described. For example, the CPU 21 performs the following processing when the down node caches data but the cache state is “clean”. That is, the CPU 21 performs a recovery process for changing the information of the cache directory 36a, which is the “clean”, to a state where the “down node does not have a cache”. Further, the CPU 21 performs the following process when the down node caches data and the cache state is “dirty”. That is, the CPU 21 performs a recovery process for changing the cache line that is “dirty” to an error state.

一方、異常が検出されたノードが、リモートノードでない場合、すなわち、ホームノードである場合(ステップS1602否定)には、CPU21が実行するOSが、次のような処理を行う。すなわち、OSが、自ノードのキャッシュについて、異常が発生したノードの情報が残っている場合には、キャッシュのノードの情報を削除する(ステップS1604)。そして、OSが、異常が発生したノードの物理アドレスが、自ノードのTLB35aに登録されている場合には、異常が発生したノードの物理アドレスを含むエントリをすべて削除し(ステップS1605)、処理を終了する。   On the other hand, when the node where the abnormality is detected is not a remote node, that is, when it is a home node (No in step S1602), the OS executed by the CPU 21 performs the following process. That is, the OS deletes the node information of the cache when there is information on the node where the abnormality has occurred in the cache of the own node (step S1604). If the physical address of the node where the abnormality has occurred is registered in the TLB 35a of the own node, the OS deletes all entries including the physical address of the node where the abnormality has occurred (step S1605), finish.

次に、情報処理システム1が、クラスタ動作を行うアプリケーションである場合には、クラスタソフトウェアにおいて、クラスタ管理マネージャがノードダウンを検出できる。そこで、クラスタ管理マネージャが異常を検出した場合の処理の流れについて、図36を用いて説明する。図36は、クラスタ管理マネージャが異常を検出した場合の処理の流れを説明するためのフローチャートである。例えば、クラスタ管理マネージャが、ノードの異常を検出したか否かを判定する(ステップS1701)。ノードの異常を検出しない場合(ステップS1701否定)には、クラスタ管理マネージャは、再び、ステップS1701の処理を行う。   Next, when the information processing system 1 is an application that performs a cluster operation, the cluster management manager can detect a node down in the cluster software. Thus, the flow of processing when the cluster management manager detects an abnormality will be described with reference to FIG. FIG. 36 is a flowchart for explaining the flow of processing when the cluster management manager detects an abnormality. For example, the cluster management manager determines whether or not a node abnormality is detected (step S1701). If no node abnormality is detected (No at Step S1701), the cluster management manager performs the process at Step S1701 again.

一方、ノードの異常を検出した場合(ステップS1701肯定)には、クラスタ管理マネージャが、自ノードで動作中のアプリケーションに、ノードダウンによる再構成処理の開始を依頼する(ステップS1702)。続いて、アプリケーションは、異常が発生したノードに存在する共有メモリの解放をOSに依頼する(ステップS1703)。その後、OSは、解放した共有メモリのデータを削除し、TLBのエントリを削除する(ステップS1704)。アプリケーションは、固有のリカバリ処理を行い(ステップS1705)、処理を終了する。   On the other hand, if a node abnormality is detected (Yes at step S1701), the cluster management manager requests the application running on the own node to start a reconfiguration process due to node down (step S1702). Subsequently, the application requests the OS to release the shared memory existing in the node where the abnormality has occurred (step S1703). Thereafter, the OS deletes the released shared memory data, and deletes the TLB entry (step S1704). The application performs a unique recovery process (step S1705) and ends the process.

(2)ビルディングブロックについて
上述した情報処理システム1は、4つのCPUを有するビルディングブロック10〜10eを有していた。しかし、実施例はこれに限定されるものではなく、ビルディングブロック10〜10eは、任意の数のCPU及び各CPUがアクセスするメモリを有することができる。また、CPUとメモリは、1対1で対応している必要はなく、メモリに直接アクセスするCPUは全体の一部であってもよい。
(2) Building Block The information processing system 1 described above has building blocks 10 to 10e having four CPUs. However, the embodiment is not limited to this, and the building blocks 10 to 10e may include an arbitrary number of CPUs and a memory accessed by each CPU. The CPU and the memory do not have to correspond one-to-one, and the CPU that directly accesses the memory may be a part of the whole.

(3)CPUが送信するパケットについて
上述したCPU21は、CPUIDとPAとを有するパケットをメモリアクセスのリクエストとして送信した。しかし、実施例は、これに限定されるものではない。すなわち、CPU21は、アクセス対象となるメモリにアクセスするCPUを一意に識別できるのであれば、任意の情報を格納したパケットを出力してよい。
(3) Packets transmitted by the CPU The CPU 21 described above transmits a packet having a CPU ID and PA as a memory access request. However, the embodiment is not limited to this. That is, the CPU 21 may output a packet storing arbitrary information as long as it can uniquely identify the CPU that accesses the memory to be accessed.

また例えば、CPU21は、CPUIDからVC(Virtual Connection)IDに変換し、VCIDを格納することとしてもよい。また、CPU21は、パケットに、データ長を示すレングス等の情報を格納することとしてもよい。   Further, for example, the CPU 21 may convert the CPU ID into a VC (Virtual Connection) ID and store the VCID. The CPU 21 may store information such as a length indicating the data length in the packet.

(4)CPUが発行するオーダー(命令)について
上述したように、各CPU21〜21cは、リクエストやオーダーを発行して、キャッシュのコヒーレンスを保持した。しかし、上述したリクエストやオーダーは、あくまで一例であり、例えばCPU21〜21cは、CAS(Compare AndSwap)命令を発行してもよい。
(4) Regarding Orders (Instructions) Issued by the CPU As described above, each of the CPUs 21 to 21c issues a request or an order to maintain cache coherence. However, the requests and orders described above are merely examples, and for example, the CPUs 21 to 21c may issue a CAS (Compare And Swap) instruction.

このように、CPU21〜21cがCAS命令を発行した場合には、排他制御のコンテンションが複数のCPU間で頻発しても、各CPUのキャッシュ上で処理が行われる。この結果、CPU21〜21cは、メモリアクセスの発生による遅延を防止するとともに、各CPU間のドランザクションが混雑するのを防ぐことができる。   As described above, when the CPUs 21 to 21c issue a CAS command, even if exclusive control contention frequently occurs among a plurality of CPUs, processing is performed on the cache of each CPU. As a result, the CPUs 21 to 21c can prevent a delay due to the occurrence of memory access and also prevent the transactions between the CPUs from becoming congested.

(5)ハイパーバイザを経由した制御について
上述した情報処理システム1では、OSによってハードウェアであるアドレス変換部35にアクセスを行う例について説明した。しかし、実施例はこれに限定されるものではなく、たとえは、仮想マシンを動作させるハイパーバイザ(HPV:Hypervisor)がアドレス変換部35にアクセスを行っても良い。
(5) Control via Hypervisor In the information processing system 1 described above, the example in which the OS accesses the address conversion unit 35 that is hardware has been described. However, the embodiment is not limited to this. For example, a hypervisor (HPV) that operates a virtual machine may access the address conversion unit 35.

すなわち、ハイパーバイザが動作するノードにおいては、OSは、キャッシュやMMUなどのCPU21〜21cのハードウェア資源に対して直接の操作を行わず、操作をハイパーバイザに依頼することとなる。このように、各CPU21〜21cは、ハイパーバイザを介した制御を受付ける場合には、仮想アドレスを実アドレス(RA:Real Address)に変換し、その後、実アドレスを物理アドレスに変換することとなる。   That is, in the node on which the hypervisor operates, the OS does not directly operate the hardware resources of the CPUs 21 to 21c such as the cache and the MMU, but requests the hypervisor to perform the operation. As described above, when receiving control via the hypervisor, each of the CPUs 21 to 21c converts a virtual address into a real address (RA) and then converts the real address into a physical address. .

また、ハイパーバイザが動作するノードにおいては、割り込み処理は、OSには直接割り込まず、HPVに対して割り込みを行う。このような場合には、ハイパーバイザが、OSの割り込み処理ハンドラを読出すことで割り込みを行う。なお、上述したハイパーバイザが実行する処理は、仮想マシンを動作させるために実行される公知な処理である。   In the node where the hypervisor operates, the interrupt processing does not directly interrupt the OS, but interrupts the HPV. In such a case, the hypervisor performs an interrupt by reading the OS interrupt handler. Note that the processing executed by the hypervisor described above is a known processing executed to operate a virtual machine.

(6)パーティションを用いた処理について
上述した情報処理システム1では、各CPU21〜21cは、1つのノードマップを用いてメモリアクセスを送信していた。しかし、実施例はこれに限定されるものではない。例えば、各ビルディングブロック10〜10eは、複数のノード群として動作し、各ノード群毎に、同一のファームウェア(ハイパーバイザ)を動作させる1つの論理パーティションを構成しても良い。
(6) Processing Using Partition In the information processing system 1 described above, each of the CPUs 21 to 21c transmits a memory access using one node map. However, the embodiment is not limited to this. For example, each of the building blocks 10 to 10e may operate as a plurality of node groups, and each node group may constitute one logical partition that operates the same firmware (hypervisor).

このような場合には、各CPU21〜21cは、アクセス先のCPUを示すノードマップと、同一論理パーティション内のCPUを示すノードマップとを有する。このように、各CPU21〜21cは、同一論理パーティション内に含まれるCPUを示すノードマップを有することで、エラー発生通知、ダウン要求、リセット要求パケット等の、論理パーティションを超えて転送すべきではない特殊パケットの転送範囲を識別することができる。   In such a case, each of the CPUs 21 to 21c has a node map indicating the access destination CPU and a node map indicating the CPUs in the same logical partition. As described above, each of the CPUs 21 to 21c has the node map indicating the CPUs included in the same logical partition, and therefore should not transfer the error occurrence notification, the down request, the reset request packet, etc. beyond the logical partition. The transfer range of the special packet can be identified.

以下、同一論理パーティション内に含まれるCPUを示すノードマップを有するCPUについて説明する。図37は、情報処理システムの一例を説明するための図である。図37に示すように、ビルディングブロック10、10aは、論理パーティション#Aを動作させ、ビルディングブロック10b〜10dは、論理パーティション#Bを動作させる。   Hereinafter, a CPU having a node map showing CPUs included in the same logical partition will be described. FIG. 37 is a diagram for explaining an example of the information processing system. As shown in FIG. 37, the building blocks 10 and 10a operate the logical partition #A, and the building blocks 10b to 10d operate the logical partition #B.

ここで、論理パーティション#Aでは、複数のドメイン#A〜#Cと、ファームウェア#Aが動作する。また、論理パーティション#Bでは、複数のドメイン#D〜#Gとファームウェア#Bが動作する。なお、ファームウェア#Aおよびファームウェア#Bとは、例えばハイパーバイザである。また、ドメイン#Aでは、アプリケーションとOSとが動作しており、他のドメイン#B〜#Gもドメイン#Aと同様に、アプリケーションとOSとが動作する。   Here, in the logical partition #A, a plurality of domains #A to #C and firmware #A operate. In the logical partition #B, a plurality of domains #D to #G and firmware #B operate. Firmware #A and firmware #B are, for example, hypervisors. In the domain #A, the application and the OS operate, and in the other domains #B to #G, the application and the OS operate as in the domain #A.

つまり、各ドメイン#A〜#Gは、それぞれ独立してアプリケーションとOSが動作する仮想マシンである。ここで、ビルディングブロック10が有する各CPU21〜21cは、パーティション#Aに含まれる各CPUに対して上述した特殊パケットを送信してもよいが、パーティション#Bに含まれる各CPUに対しては特殊パケットを送信すべきではない。   That is, each of the domains #A to #G is a virtual machine on which an application and an OS operate independently. Here, each of the CPUs 21 to 21c included in the building block 10 may transmit the above-described special packet to each CPU included in the partition #A. However, a special packet may be transmitted to each CPU included in the partition #B. Should not send packets.

このため、各ビルディングブロック10〜10dのCPUは、同一の論理パーティションに含まれるCPUのCPUIDを示すノードマップを有する。例えば、CPU21は、物理アドレスと、物理アドレスが示す記憶領域を有するメモリと接続されたCPUのCPUIDとを対応付けて記憶するノードマップ34を有する。また、CPU21は、CPU21と同一のパーティション、すなわち、パーティション#Aに含まれるCPUのCPUIDを記憶するノードマップ34aを有する。なお、ノードマップ34aは、ノードマップ34と同様に、サービスプロセッサ24によって設定されるものとする。   For this reason, the CPU of each building block 10 to 10d has a node map indicating the CPU ID of the CPU included in the same logical partition. For example, the CPU 21 includes a node map 34 that stores a physical address and a CPU ID of a CPU connected to a memory having a storage area indicated by the physical address in association with each other. Further, the CPU 21 has a node map 34a that stores the CPU ID of the CPU included in the same partition as the CPU 21, that is, the partition #A. Note that the node map 34 a is set by the service processor 24 in the same manner as the node map 34.

以下、図面を用いて、同一の論理パーティションに含まれるCPUのCPUIDを示すノードマップの一例について説明する。図38は、パーティションの一例を説明するための図である。例えば、図38に示す例では、パーティション#Aは、ビルディングブロック#0を有する。また、ビルディングブロック#0は、CPU#0とアドレス域「#0」が割当てられたメモリとを有する。   Hereinafter, an example of a node map indicating CPU IDs of CPUs included in the same logical partition will be described with reference to the drawings. FIG. 38 is a diagram for explaining an example of a partition. For example, in the example shown in FIG. 38, the partition #A has a building block # 0. The building block # 0 includes a CPU # 0 and a memory to which an address area “# 0” is assigned.

また、パーティション#Bは、ビルディングブロック#1とビルディングブロック#2とを有する。また、ビルディングブロック#1は、CPU#4、CPU#5、アドレス域「#1」が割当てられたメモリ、アドレス域「#2」が割当てられたメモリを有する。なお、アドレス域「#1」が割当てられたメモリには、CPU#4がアクセスし、アドレス域「#2」が割当てられたメモリには、CPU#5がアクセスする。また、ビルディングブロック#2は、CPU#8とアドレス域「#3」が割当てられたメモリを有する。   Further, the partition #B has a building block # 1 and a building block # 2. The building block # 1 includes a CPU # 4, a CPU # 5, a memory to which the address area “# 1” is assigned, and a memory to which the address area “# 2” is assigned. The CPU # 4 accesses the memory to which the address area “# 1” is assigned, and the CPU # 5 accesses the memory to which the address area “# 2” is assigned. The building block # 2 includes a memory to which the CPU # 8 and the address area “# 3” are assigned.

次に、図39A〜39Cを用いて、図38に示すCPU#0が有するノードマップと、CPU#4が有するノードマップとについて説明する。まず、図39Aおよび図39Bを用いて、パーティション#AのCPUが記憶するノードマップについて説明する。なお、図39Aは、パーティション#AのCPUが記憶するノードマップの一例を説明するための図である。また、図39Bは、パーティション#Aを示すノードマップの一例を説明するための図である。   Next, a node map of CPU # 0 and a node map of CPU # 4 shown in FIG. 38 will be described with reference to FIGS. 39A to 39C. First, a node map stored in the CPU of partition #A will be described with reference to FIGS. 39A and 39B. FIG. 39A is a diagram for describing an example of a node map stored by the CPU of partition #A. FIG. 39B is a diagram for describing an example of a node map indicating the partition #A.

なお、以下の説明では、ノードID「0」は、ビルディングブロック#0を示し、ノードID「1」は、ビルディングブロック#1を示す、ノードID「2」は、ビルディングブロック#2を示す。また、CPUID「0」は、CPU#0のCPUIDであり、CPUID「4」は、CPU#4のCPUIDであり、CPUID「5」は、CPU#5のCPUIDであり、CPUID「8」は、CPU#8のCPUIDであるものとする。   In the following description, the node ID “0” indicates the building block # 0, the node ID “1” indicates the building block # 1, and the node ID “2” indicates the building block # 2. The CPU ID “0” is the CPU ID of the CPU # 0, the CPU ID “4” is the CPU ID of the CPU # 4, the CPU ID “5” is the CPU ID of the CPU # 5, and the CPU ID “8” is It is assumed that the CPU ID is CPU # 8.

例えば、図39Aに示す例では、ノードマップ34は、アドレス域「#0」が、ビルディングブロック#0に存在し、CPU#0がアクセスを行う旨を示す。また、ノードマップ34は、アドレス域「#1」が、ビルディングブロック#1に存在し、CPU#4がアクセスを行う旨を示す。また、ノードマップ34は、アドレス域「#2」が、ビルディングブロック#1に存在し、CPU#5がアクセスを行う旨を示す。また、ノードマップ34は、アドレス域「#3」がビルディングブロック#2に存在し、CPU#8がアクセスを行う旨を示す。   For example, in the example shown in FIG. 39A, the node map 34 indicates that the address area “# 0” exists in the building block # 0 and the CPU # 0 performs access. Further, the node map 34 indicates that the address area “# 1” exists in the building block # 1 and the CPU # 4 performs access. Further, the node map 34 indicates that the address area “# 2” exists in the building block # 1, and the CPU # 5 performs access. Further, the node map 34 indicates that the address area “# 3” exists in the building block # 2, and the CPU # 8 performs access.

また、図39Bには、パーティション#Aを示すノードマップを示した。図39Bに示すように、パーティション#Aを示すノードマップは、各エントリに、バリッドと、ノードIDとCPUIDとを有する。例えば、図39Bに示す例では、ノードマップは、パーティション#Aにビルディングブロック#0のCPU#0が含まれる旨を示す。   FIG. 39B shows a node map indicating the partition #A. As illustrated in FIG. 39B, the node map indicating the partition #A includes a valid, a node ID, and a CPU ID in each entry. For example, in the example shown in FIG. 39B, the node map indicates that partition #A includes CPU # 0 of building block # 0.

例えば、図38に示す例では、CPU#0は、図39Aおよび図39Bに示すノードマップを有する。そして、CPU#0は、メモリアクセスを行う場合には、図39Aに示すノードマップを用いて、アクセス先のCPUを識別する。一方、CPU#0は、同一パーティション内のCPUのみに特殊パケットを送信する場合には、図39Bに示すノードマップを用いて、送信先のCPUを識別する。すなわち、CPU#0は、図39Bに例示するノードマップが示すパーティション#A内のCPUに対して、特殊パケットを送信する。   For example, in the example shown in FIG. 38, the CPU # 0 has the node maps shown in FIGS. 39A and 39B. Then, when performing memory access, the CPU # 0 identifies the access destination CPU using the node map shown in FIG. 39A. On the other hand, when transmitting a special packet only to CPUs in the same partition, CPU # 0 identifies the destination CPU using the node map shown in FIG. 39B. That is, the CPU # 0 transmits the special packet to the CPU in the partition #A indicated by the node map illustrated in FIG. 39B.

一方、CPU#4は、メモリアクセスを行うために、図39Aに示すノードマップと、図39Cに示すノードマップとを有する。ここで、図39Cは、パーティション#Bを示すノードマップの一例を説明するための図である。図39Cに示す例では、パーティション#Bを示すノードマップは、パーティション#Bに、ビルディングブロック#1のCPU#4およびCPU#5、ビルディングブロック#2のCPU38が存在することを示す。CPU#4は、図39Cに例示するノードマップが示すパーティション#B内のCPUに対して、特殊パケットを送信する。   On the other hand, CPU # 4 has a node map shown in FIG. 39A and a node map shown in FIG. 39C in order to perform memory access. Here, FIG. 39C is a diagram for describing an example of a node map indicating the partition #B. In the example shown in FIG. 39C, the node map indicating the partition #B indicates that the CPU # 4 and CPU # 5 of the building block # 1 and the CPU 38 of the building block # 2 exist in the partition #B. CPU # 4 transmits a special packet to the CPU in partition #B indicated by the node map illustrated in FIG. 39C.

このように、CPU#1およびCPU#4は、アドレス域とCPUIDとを対応付けたノードマップと、パーティションを示すノードマップとを記憶する。そして、CPU#1およびCPU#4は、アドレス域とCPUIDとを対応付けたノードマップを用いて、他のノードが有するメモリに対して直接メモリアクセスを行う。また、CPU#1は、パーティション#Aを示すノードマップを用いて、特殊パケットの送信を行う。また、CPU#4は、パーティション#Bを示すノードマップを用いて、特殊パケットの送信を行う。   As described above, the CPU # 1 and the CPU # 4 store the node map in which the address area and the CPU ID are associated with each other and the node map indicating the partition. Then, CPU # 1 and CPU # 4 perform direct memory access to the memory of other nodes using a node map in which address areas and CPUIDs are associated with each other. Further, the CPU # 1 transmits a special packet by using the node map indicating the partition #A. CPU # 4 transmits a special packet using a node map indicating partition #B.

このように、各CPUは、自身を含むパーティションごとに、異なる値を有するノードマップを有してもよい。また、各CPUは、自身を含むパーティションごとに異なる値を有するノードマップを有する場合は、特殊パケットをパーティションを超えた送信を行うことを防ぐことができる。   Thus, each CPU may have a node map having a different value for each partition including itself. Further, when each CPU has a node map having a different value for each partition including itself, it is possible to prevent the special packet from being transmitted beyond the partition.

なお、各CPUは、上記の実施例と同様、スタートアドレスとアドレスマスク、又は、スタートアドレスとレングスでアクセス対象となるアドレス域を示しても良い。すなわち、CPU#1とCPU#4とは、スタートアドレスとアドレスマスク、又は、スタートアドレスとレングスとを用いて、アクセス対象となるアドレス域を示すノードマップを用いて、アクセス対象となるノードを識別する。また、CPU#1とCPU#4とは、それぞれ異なるパーティションを示すノードマップを用いて、特殊パケットの送信を行う。   Each CPU may indicate an address area to be accessed by a start address and an address mask, or a start address and a length, as in the above embodiment. That is, the CPU # 1 and the CPU # 4 identify the node to be accessed using the start address and the address mask, or the node map indicating the address area to be accessed by using the start address and the length. To do. In addition, CPU # 1 and CPU # 4 transmit special packets using node maps indicating different partitions.

(7)サービスプロセッサを経由した制御について
上述した情報処理システム1では、サービスプロセッサ24によってハードウェアであるノードマップ34にアクセスを行う例について説明した。しかし、実施例はこれに限定されるものではなく、サービスプロセッサ24以外がノードマップ34にアクセスするよう構成しても良い。たとえば、CPU21〜21c上の一つあるいはすべてのCPUで動作している基本ファームウェアBIOS(Basic Input/Output System)あるいはHPVなどがノードマップ34にアクセスを行えるよう構成しても良い。
(7) Control via service processor In the information processing system 1 described above, the example in which the service processor 24 accesses the node map 34 as hardware has been described. However, the embodiment is not limited to this, and a configuration other than the service processor 24 may access the node map 34. For example, a basic firmware BIOS (Basic Input / Output System) or HPV operating on one or all of the CPUs 21 to 21c may be configured to access the node map 34.

1 情報処理システム
2 XB
10〜10e ビルディングブロック
20 ノード
21〜21c CPU
22〜22c メモリ
23、26 通信部
24 サービスプロセッサ
25 制御部
27、27a XB接続部
28 PCIe接続部
30 演算処理部
31 演算部
32 L1キャッシュ
33 L2キャッシュ
34 ノードマップ
35 アドレス変換部
36 キャッシュディレクトリ管理部
37 パケット制御部
37a パケット生成部
37b パケット受信部
37c 異常検出部
40 ルータ
41 メモリアクセス部
42 PCIe制御部
42a リクエスト生成部
42b PCIeバス制御部
42c 異常検出部
1 Information processing system 2 XB
10-10e building block 20 nodes 21-21c CPU
22 to 22c Memory 23, 26 Communication unit 24 Service processor 25 Control unit 27, 27a XB connection unit 28 PCIe connection unit 30 Calculation processing unit 31 Calculation unit 32 L1 cache 33 L2 cache 34 Node map 35 Address conversion unit 36 Cache directory management unit 37 packet control unit 37a packet generation unit 37b packet reception unit 37c abnormality detection unit 40 router 41 memory access unit 42 PCIe control unit 42a request generation unit 42b PCIe bus control unit 42c abnormality detection unit

Claims (10)

記憶装置を各々が備える複数のノードと、前記複数のノード間を接続するインターコネクトとを有する情報処理装置であって、
前記複数のノードのうち少なくとも1つのノードは、
該1つのノード又は他のノードが備える記憶装置に含まれる、該1つのノード及び該他のノードで共有可能な共有メモリ領域を利用したデータ転送のデータ転送経路における異常、又は、該1つのノード又は他のノードが備える記憶装置に含まれる、該1つのノード及び該他のノードで共有可能な共有メモリ領域を利用したデータ転送のデータ転送経路に含まれ得るいずれかのノードにおける異常を検出する異常検出部と、
前記異常検出部により検出された異常に基づいて、前記共有メモリ領域に含まれる領域のうち、異常が検出されたデータ転送においてアクセスする領域についてのエラー情報を生成するとともに、自ノード内のプロセッサに対する割り込みを発生するエラー情報生成部と、
前記割り込みに応じて前記エラー情報に基づいて、前記異常が検出されたデータ転送においてアクセスする領域を含む共有メモリに対するリカバリ処理を実行するプロセッサと、
を有し、
前記エラー情報生成部は、前記異常検出部により異常が検出されたノードがリモートノードであり、かつ、該リモートノードの異常によって、ホームノードの前記共有メモリ領域に前記リモートノードのキャッシュデータがライトバックされない場合、異常を示すデータをディレクトリに書き込み、
前記プロセッサは、前記リカバリ処理を実行する際に、前記異常を示すデータを前記ディレクトリから削除する
ことを特徴とする情報処理装置。
An information processing apparatus having a plurality of nodes each provided with a storage device and an interconnect connecting the plurality of nodes,
At least one of the plurality of nodes is
An abnormality in a data transfer path of data transfer using a shared memory area that can be shared by the one node and the other node included in a storage device included in the one node or another node, or the one node Or detecting an abnormality in any node that can be included in a data transfer path of data transfer using a shared memory area that can be shared by the one node and the other node, included in a storage device included in another node An anomaly detector;
Based on the anomaly detected by the anomaly detection unit, it generates error information about the area to be accessed in the data transfer in which the anomaly is detected among the areas included in the shared memory area, and for the processor in its own node An error information generator that generates an interrupt;
A processor that executes a recovery process for a shared memory including an area to be accessed in the data transfer in which the abnormality is detected based on the error information in response to the interrupt;
Have
The error information generation unit writes back the cache data of the remote node to the shared memory area of the home node due to an abnormality of the remote node when the abnormality is detected by the abnormality detection unit. If not, write data indicating abnormality to the directory,
The processor deletes the data indicating the abnormality from the directory when executing the recovery process.
記憶装置を各々が備える複数のノードと、前記複数のノード間を接続するインターコネクトとを有する情報処理装置であって、
前記複数のノードのうち少なくとも1つのノードは、
該1つのノード又は他のノードが備える記憶装置に含まれる、該1つのノード及び該他のノードで共有可能な共有メモリ領域を利用したデータ転送のデータ転送経路における異常、又は、該1つのノード又は他のノードが備える記憶装置に含まれる、該1つのノード及び該他のノードで共有可能な共有メモリ領域を利用したデータ転送のデータ転送経路に含まれ得るいずれかのノードにおける異常を検出する異常検出部と、
前記異常検出部により検出された異常に基づいて、前記共有メモリ領域に含まれる領域のうち、異常が検出されたデータ転送においてアクセスする領域についてのエラー情報を生成するとともに、自ノード内のプロセッサに対する割り込みを発生するエラー情報生成部と、
前記割り込みに応じて前記エラー情報に基づいて、前記異常が検出されたデータ転送においてアクセスする領域を含む共有メモリに対するリカバリ処理を実行するプロセッサと、
を有し、
前記エラー情報生成部は、前記異常検出部により異常が検出されたノードがリモートノードであり、かつ、該リモートノードの異常によって、ホームノードの前記共有メモリ領域に前記リモートノードのキャッシュデータがライトバックされない場合、該共有メモリ領域に、エラー状態を示すデータを書き込み、
前記プロセッサは、前記リカバリ処理を実行する際に、前記エラー状態を示すデータを前記共有メモリ領域からクリアする
ことを特徴とする情報処理装置。
An information processing apparatus having a plurality of nodes each provided with a storage device and an interconnect connecting the plurality of nodes,
At least one of the plurality of nodes is
An abnormality in a data transfer path of data transfer using a shared memory area that can be shared by the one node and the other node included in a storage device included in the one node or another node, or the one node Or detecting an abnormality in any node that can be included in a data transfer path of data transfer using a shared memory area that can be shared by the one node and the other node, included in a storage device included in another node An anomaly detector;
Based on the anomaly detected by the anomaly detection unit, it generates error information about the area to be accessed in the data transfer in which the anomaly is detected among the areas included in the shared memory area, and for the processor in its own node An error information generator that generates an interrupt;
A processor that executes a recovery process for a shared memory including an area to be accessed in the data transfer in which the abnormality is detected based on the error information in response to the interrupt;
Have
The error information generation unit writes back the cache data of the remote node to the shared memory area of the home node due to an abnormality of the remote node when the abnormality is detected by the abnormality detection unit. If not, write data indicating an error state in the shared memory area,
The processor clears data indicating the error state from the shared memory area when executing the recovery process.
前記プロセッサは、前記異常検出部により異常が検出されたノードの共有メモリに対応するシグナルハンドラに、シグナルを通知し、
前記シグナルハンドラは、前記シグナルが通知されると、前記異常検出部により異常が検出されたノードの共有メモリのアドレスをキャッシュメモリから削除し、論理アドレスと物理アドレスとが対応付けられて登録されたテーブルにおける、前記異常検出部により検出された異常に対応するノードが有する記憶装置の物理アドレスと、該物理アドレスに対応する論理アドレスとの対応付けを解消し、該物理アドレスを、前記テーブルへの登録を禁止する物理アドレスとして扱う
ことを特徴とする請求項1または請求項2に記載の情報処理装置。
The processor notifies the signal handler corresponding to the shared memory of the node where the abnormality is detected by the abnormality detection unit,
When the signal is notified, the signal handler deletes the address of the shared memory of the node where the abnormality is detected by the abnormality detection unit from the cache memory, and the logical address and the physical address are registered in association with each other. In the table, the correspondence between the physical address of the storage device included in the node corresponding to the abnormality detected by the abnormality detection unit and the logical address corresponding to the physical address is canceled, and the physical address is transferred to the table. The information processing apparatus according to claim 1, wherein the information processing apparatus is treated as a physical address that prohibits registration.
前記シグナルハンドラは、さらに、前記異常検出部により異常が検出されたノードによって前記1つのノードの共有メモリ領域が利用されていた場合には、該共有メモリ領域に対してリカバリ処理を実行する
ことを特徴とする請求項3に記載の情報処理装置。
The signal handler further executes a recovery process on the shared memory area when the shared memory area of the one node is used by a node in which an abnormality is detected by the abnormality detection unit. The information processing apparatus according to claim 3.
前記複数のノードのそれぞれがサービスプロセッサを有し、
前記異常検出部は、各ノードのサービスプロセッサ間で所定の時間間隔で状態確認することにより異常を検出する
ことを特徴とする請求項1〜4のいずれか1つに記載の情報処理装置。
Each of the plurality of nodes has a service processor;
The information processing apparatus according to claim 1, wherein the abnormality detection unit detects an abnormality by checking a state at a predetermined time interval between service processors of each node.
前記複数のノードのそれぞれがノードダウン通知部とノードダウン受信部とを有し、
異常が検出されたノードのノードダウン通知部は、自ノードの異常を検出すると、検出された異常に関する情報を含むパケットをインターコネクトを介して送信し、
異常が検出されたノードと異なる他のノードのノードダウン受信部は、受信したパケットに含まれる情報に基づいて、割り込みを発生させる
ことを特徴とする請求項1〜4のいずれか1つに記載の情報処理装置。
Each of the plurality of nodes has a node down notification unit and a node down reception unit,
When the node down notification unit of the node in which the abnormality is detected detects the abnormality of the own node, the node down notification unit transmits a packet including information on the detected abnormality through the interconnect.
The node down reception unit of another node different from the node in which the abnormality is detected generates an interrupt based on information included in the received packet. Information processing device.
記憶装置を各々が備える複数のノードと、前記複数のノード間を接続するインターコネクトとを有する情報処理装置における前記複数のノードのうち少なくとも1つのノードに、
該1つのノード又は他のノードが備える記憶装置に含まれる、該1つのノード及び該他のノードで共有可能な共有メモリ領域を利用したデータ転送のデータ転送経路における異常、又は、該1つのノード又は他のノードが備える記憶装置に含まれる、該1つのノード及び該他のノードで共有可能な共有メモリ領域を利用したデータ転送のデータ転送経路に含まれ得るいずれかのノードにおける異常を検出し、
検出された異常に基づいて、前記共有メモリ領域に含まれる領域のうち、異常が検出されたデータ転送においてアクセスする領域についてのエラー情報を生成するとともに、自ノード内のプロセッサに対する割り込みを発生し、
前記割り込みに応じて前記エラー情報に基づいて、前記異常が検出されたデータ転送においてアクセスする領域を含む共有メモリに対するリカバリ処理を実行する
処理を実行させ、
前記割り込みを発生する処理は、前記異常を検出する処理により異常が検出されたノードがリモートノードであり、かつ、該リモートノードの異常によって、ホームノードの前記共有メモリ領域に前記リモートノードのキャッシュデータがライトバックされない場合、異常を示すデータをディレクトリに書き込み、
前記リカバリ処理を実行する処理は、前記リカバリ処理を実行する際に、前記異常を示すデータを前記ディレクトリから削除する
ことを特徴とする制御プログラム。
At least one node among the plurality of nodes in the information processing apparatus having a plurality of nodes each having a storage device and an interconnect connecting the plurality of nodes,
An abnormality in a data transfer path of data transfer using a shared memory area that can be shared by the one node and the other node included in a storage device included in the one node or another node, or the one node Or detecting an abnormality in any node that may be included in a data transfer path of data transfer using a shared memory area that can be shared by the one node and the other node, included in a storage device included in another node ,
Based on the detected abnormality, among the areas included in the shared memory area, generates error information about the area to be accessed in the data transfer in which the abnormality is detected, and generates an interrupt to the processor in the own node,
Based on the error information in response to the interrupt, a process for executing a recovery process for a shared memory including an area to be accessed in the data transfer in which the abnormality is detected is executed.
In the processing that generates the interrupt, the node in which the abnormality is detected by the processing for detecting the abnormality is a remote node, and the cache data of the remote node is stored in the shared memory area of the home node due to the abnormality of the remote node. If is not written back, write data indicating abnormality to the directory,
The process for executing the recovery process deletes the data indicating the abnormality from the directory when the recovery process is executed.
記憶装置を各々が備える複数のノードと、前記複数のノード間を接続するインターコネクトとを有する情報処理装置における前記複数のノードのうち少なくとも1つのノードに、
該1つのノード又は他のノードが備える記憶装置に含まれる、該1つのノード及び該他のノードで共有可能な共有メモリ領域を利用したデータ転送のデータ転送経路における異常、又は、該1つのノード又は他のノードが備える記憶装置に含まれる、該1つのノード及び該他のノードで共有可能な共有メモリ領域を利用したデータ転送のデータ転送経路に含まれ得るいずれかのノードにおける異常を検出し、
検出された異常に基づいて、前記共有メモリ領域に含まれる領域のうち、異常が検出されたデータ転送においてアクセスする領域についてのエラー情報を生成するとともに、自ノード内のプロセッサに対する割り込みを発生し、
前記割り込みに応じて前記エラー情報に基づいて、前記異常が検出されたデータ転送においてアクセスする領域を含む共有メモリに対するリカバリ処理を実行する
処理を実行させ、
前記割り込みを発生する処理は、前記異常を検出する処理により異常が検出されたノードがリモートノードであり、かつ、該リモートノードの異常によって、ホームノードの前記共有メモリ領域に前記リモートノードのキャッシュデータがライトバックされない場合、該共有メモリ領域に、エラー状態を示すデータを書き込み、
前記リカバリ処理を実行する処理は、前記リカバリ処理を実行する際に、前記エラー状態を示すデータを前記共有メモリ領域からクリアする
ことを特徴とする制御プログラム。
At least one node among the plurality of nodes in the information processing apparatus having a plurality of nodes each having a storage device and an interconnect connecting the plurality of nodes,
An abnormality in a data transfer path of data transfer using a shared memory area that can be shared by the one node and the other node included in a storage device included in the one node or another node, or the one node Or detecting an abnormality in any node that may be included in a data transfer path of data transfer using a shared memory area that can be shared by the one node and the other node, included in a storage device included in another node ,
Based on the detected abnormality, among the areas included in the shared memory area, generates error information about the area to be accessed in the data transfer in which the abnormality is detected, and generates an interrupt to the processor in the own node,
Based on the error information in response to the interrupt, a process for executing a recovery process for a shared memory including an area to be accessed in the data transfer in which the abnormality is detected is executed.
In the processing that generates the interrupt, the node in which the abnormality is detected by the processing for detecting the abnormality is a remote node, and the cache data of the remote node is stored in the shared memory area of the home node due to the abnormality of the remote node. Is written back, the data indicating the error state is written to the shared memory area,
The control program characterized in that the process of executing the recovery process clears data indicating the error state from the shared memory area when executing the recovery process.
記憶装置を各々が備える複数のノードと、前記複数のノード間を接続するインターコネクトとを有する情報処理装置における前記複数のノードのうち少なくとも1つのノードが、
該1つのノード又は他のノードが備える記憶装置に含まれる、該1つのノード及び該他のノードで共有可能な共有メモリ領域を利用したデータ転送のデータ転送経路における異常、又は、該1つのノード又は他のノードが備える記憶装置に含まれる、該1つのノード及び該他のノードで共有可能な共有メモリ領域を利用したデータ転送のデータ転送経路に含まれ得るいずれかのノードにおける異常を検出し、
検出された異常に基づいて、前記共有メモリ領域に含まれる領域のうち、異常が検出されたデータ転送においてアクセスする領域についてのエラー情報を生成するとともに、自ノード内のプロセッサに対する割り込みを発生し、
前記割り込みに応じて前記エラー情報に基づいて、前記異常が検出されたデータ転送においてアクセスする領域を含む共有メモリに対するリカバリ処理を実行する
処理を実行し、
前記割り込みを発生する処理は、前記異常を検出する処理により異常が検出されたノードがリモートノードであり、かつ、該リモートノードの異常によって、ホームノードの前記共有メモリ領域に前記リモートノードのキャッシュデータがライトバックされない場合、異常を示すデータをディレクトリに書き込み、
前記リカバリ処理を実行する処理は、前記リカバリ処理を実行する際に、前記異常を示すデータを前記ディレクトリから削除する
ことを特徴とする制御方法。
At least one node among the plurality of nodes in the information processing apparatus having a plurality of nodes each provided with a storage device and an interconnect connecting the plurality of nodes,
An abnormality in a data transfer path of data transfer using a shared memory area that can be shared by the one node and the other node included in a storage device included in the one node or another node, or the one node Or detecting an abnormality in any node that may be included in a data transfer path of data transfer using a shared memory area that can be shared by the one node and the other node, included in a storage device included in another node ,
Based on the detected abnormality, among the areas included in the shared memory area, generates error information about the area to be accessed in the data transfer in which the abnormality is detected, and generates an interrupt to the processor in the own node,
In response to the interrupt, based on the error information, a process for executing a recovery process for a shared memory including an area to be accessed in the data transfer in which the abnormality is detected is executed.
In the processing that generates the interrupt, the node in which the abnormality is detected by the processing for detecting the abnormality is a remote node, and the cache data of the remote node is stored in the shared memory area of the home node due to the abnormality of the remote node. If is not written back, write data indicating abnormality to the directory,
The control method, wherein the process of executing the recovery process deletes the data indicating the abnormality from the directory when the recovery process is executed.
記憶装置を各々が備える複数のノードと、前記複数のノード間を接続するインターコネクトとを有する情報処理装置における前記複数のノードのうち少なくとも1つのノードが、
該1つのノード又は他のノードが備える記憶装置に含まれる、該1つのノード及び該他のノードで共有可能な共有メモリ領域を利用したデータ転送のデータ転送経路における異常、又は、該1つのノード又は他のノードが備える記憶装置に含まれる、該1つのノード及び該他のノードで共有可能な共有メモリ領域を利用したデータ転送のデータ転送経路に含まれ得るいずれかのノードにおける異常を検出し、
検出された異常に基づいて、前記共有メモリ領域に含まれる領域のうち、異常が検出されたデータ転送においてアクセスする領域についてのエラー情報を生成するとともに、自ノード内のプロセッサに対する割り込みを発生し、
前記割り込みに応じて前記エラー情報に基づいて、前記異常が検出されたデータ転送においてアクセスする領域を含む共有メモリに対するリカバリ処理を実行する
処理を実行し、
前記割り込みを発生する処理は、前記異常を検出する処理により異常が検出されたノードがリモートノードであり、かつ、該リモートノードの異常によって、ホームノードの前記共有メモリ領域に前記リモートノードのキャッシュデータがライトバックされない場合、該共有メモリ領域に、エラー状態を示すデータを書き込み、
前記リカバリ処理を実行する処理は、前記リカバリ処理を実行する際に、前記エラー状態を示すデータを前記共有メモリ領域からクリアする
ことを特徴とする制御方法。
At least one node among the plurality of nodes in the information processing apparatus having a plurality of nodes each provided with a storage device and an interconnect connecting the plurality of nodes,
An abnormality in a data transfer path of data transfer using a shared memory area that can be shared by the one node and the other node included in a storage device included in the one node or another node, or the one node Or detecting an abnormality in any node that may be included in a data transfer path of data transfer using a shared memory area that can be shared by the one node and the other node, included in a storage device included in another node ,
Based on the detected abnormality, among the areas included in the shared memory area, generates error information about the area to be accessed in the data transfer in which the abnormality is detected, and generates an interrupt to the processor in the own node,
In response to the interrupt, based on the error information, a process for executing a recovery process for a shared memory including an area to be accessed in the data transfer in which the abnormality is detected is executed.
In the processing that generates the interrupt, the node in which the abnormality is detected by the processing for detecting the abnormality is a remote node, and the cache data of the remote node is stored in the shared memory area of the home node due to the abnormality of the remote node. Is written back, the data indicating the error state is written to the shared memory area,
The control method characterized in that the process of executing the recovery process clears data indicating the error state from the shared memory area when the recovery process is executed.
JP2014108573A 2014-05-26 2014-05-26 Information processing apparatus, control method, and control program Expired - Fee Related JP5800058B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2014108573A JP5800058B2 (en) 2014-05-26 2014-05-26 Information processing apparatus, control method, and control program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014108573A JP5800058B2 (en) 2014-05-26 2014-05-26 Information processing apparatus, control method, and control program

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2011290024A Division JP5590022B2 (en) 2011-12-28 2011-12-28 Information processing apparatus, control method, and control program

Publications (2)

Publication Number Publication Date
JP2014197402A true JP2014197402A (en) 2014-10-16
JP5800058B2 JP5800058B2 (en) 2015-10-28

Family

ID=52358090

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014108573A Expired - Fee Related JP5800058B2 (en) 2014-05-26 2014-05-26 Information processing apparatus, control method, and control program

Country Status (1)

Country Link
JP (1) JP5800058B2 (en)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017146789A (en) * 2016-02-17 2017-08-24 富士通株式会社 Control device, information processing device, and information processing device control method
US10210094B2 (en) 2015-08-04 2019-02-19 Fujitsu Limited Information processing system, information processing method and information processing apparatus
CN114564334A (en) * 2022-04-27 2022-05-31 苏州浪潮智能科技有限公司 MRPC data processing method, system and related components
US11625331B2 (en) 2020-07-08 2023-04-11 Fujitsu Limited Cache control apparatus and cache system control method

Citations (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04123242A (en) * 1990-09-14 1992-04-23 Fujitsu Ltd Write error identification system
JPH05298190A (en) * 1991-09-23 1993-11-12 Kendall Square Res Corp Defect confining system for multiprocessor with shared memory
US5295259A (en) * 1991-02-05 1994-03-15 Advanced Micro Devices, Inc. Data cache and method for handling memory errors during copy-back
JPH08320827A (en) * 1995-03-20 1996-12-03 Fujitsu Ltd Cache coherence device
JPH1055313A (en) * 1996-08-08 1998-02-24 Fujitsu Ltd Multiprocessor device and its memory access method, transmission device and reception device of data transfer system, and data transfer system and its bus control method
JPH10116225A (en) * 1996-10-14 1998-05-06 Hitachi Ltd Address converting circuit and multiprocessor system
JPH10133917A (en) * 1996-07-01 1998-05-22 Sun Microsyst Inc Multiprocess system with coherency-relative error logging capability
JPH10240707A (en) * 1997-02-27 1998-09-11 Hitachi Ltd Main storage sharing type multiprocessor
JP2001005683A (en) * 1999-06-21 2001-01-12 Nec Commun Syst Ltd System and method for detecting fault of doubled system
JP2001249911A (en) * 2000-02-03 2001-09-14 Internatl Business Mach Corp <Ibm> Data transfer method and data processing system
JP2001331470A (en) * 2000-05-19 2001-11-30 Mitsubishi Electric Corp Multiplex transmitter
JP2002503846A (en) * 1998-02-13 2002-02-05 オラクル コーポレーション Method and apparatus for transferring data from a cache of one node to a cache of another node
JP2002149622A (en) * 2000-11-16 2002-05-24 Nec Eng Ltd Information processing system
JP2003330905A (en) * 2002-05-14 2003-11-21 Nec Corp Computer system
JP2004013723A (en) * 2002-06-10 2004-01-15 Nec Computertechno Ltd Device and method for fault recovery of information processing system adopted cluster configuration using shared memory
JP2004341595A (en) * 2003-05-13 2004-12-02 Oki Electric Ind Co Ltd Signal transfer method and signal processing system
US20050005200A1 (en) * 2003-03-12 2005-01-06 Vladimir Matena Method and apparatus for executing applications on a distributed computer system
JP2005010995A (en) * 2003-06-18 2005-01-13 Nec Corp Multiprocessor system and process for dealing with trouble of write-back thereof
US20060248283A1 (en) * 2005-04-29 2006-11-02 Galin Galchev System and method for monitoring threads in a clustered server architecture
JP2007004834A (en) * 2006-10-10 2007-01-11 Fujitsu Ltd Multiprocessor device and memory access method therefor
JP2010050742A (en) * 2008-08-21 2010-03-04 Fujitsu Ltd Transmitting system, apparatus, and method
JP2013130976A (en) * 2011-12-20 2013-07-04 Fujitsu Ltd Information processing apparatus and memory access method
JP2014160502A (en) * 2014-04-28 2014-09-04 Fujitsu Ltd Information processor and memory access method

Patent Citations (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04123242A (en) * 1990-09-14 1992-04-23 Fujitsu Ltd Write error identification system
US5295259A (en) * 1991-02-05 1994-03-15 Advanced Micro Devices, Inc. Data cache and method for handling memory errors during copy-back
JPH05298190A (en) * 1991-09-23 1993-11-12 Kendall Square Res Corp Defect confining system for multiprocessor with shared memory
JPH08320827A (en) * 1995-03-20 1996-12-03 Fujitsu Ltd Cache coherence device
JPH10133917A (en) * 1996-07-01 1998-05-22 Sun Microsyst Inc Multiprocess system with coherency-relative error logging capability
JPH1055313A (en) * 1996-08-08 1998-02-24 Fujitsu Ltd Multiprocessor device and its memory access method, transmission device and reception device of data transfer system, and data transfer system and its bus control method
JPH10116225A (en) * 1996-10-14 1998-05-06 Hitachi Ltd Address converting circuit and multiprocessor system
JPH10240707A (en) * 1997-02-27 1998-09-11 Hitachi Ltd Main storage sharing type multiprocessor
JP2002503846A (en) * 1998-02-13 2002-02-05 オラクル コーポレーション Method and apparatus for transferring data from a cache of one node to a cache of another node
JP2001005683A (en) * 1999-06-21 2001-01-12 Nec Commun Syst Ltd System and method for detecting fault of doubled system
JP2001249911A (en) * 2000-02-03 2001-09-14 Internatl Business Mach Corp <Ibm> Data transfer method and data processing system
JP2001331470A (en) * 2000-05-19 2001-11-30 Mitsubishi Electric Corp Multiplex transmitter
JP2002149622A (en) * 2000-11-16 2002-05-24 Nec Eng Ltd Information processing system
JP2003330905A (en) * 2002-05-14 2003-11-21 Nec Corp Computer system
JP2004013723A (en) * 2002-06-10 2004-01-15 Nec Computertechno Ltd Device and method for fault recovery of information processing system adopted cluster configuration using shared memory
US20050005200A1 (en) * 2003-03-12 2005-01-06 Vladimir Matena Method and apparatus for executing applications on a distributed computer system
JP2004341595A (en) * 2003-05-13 2004-12-02 Oki Electric Ind Co Ltd Signal transfer method and signal processing system
JP2005010995A (en) * 2003-06-18 2005-01-13 Nec Corp Multiprocessor system and process for dealing with trouble of write-back thereof
US20060248283A1 (en) * 2005-04-29 2006-11-02 Galin Galchev System and method for monitoring threads in a clustered server architecture
JP2007004834A (en) * 2006-10-10 2007-01-11 Fujitsu Ltd Multiprocessor device and memory access method therefor
JP2010050742A (en) * 2008-08-21 2010-03-04 Fujitsu Ltd Transmitting system, apparatus, and method
JP2013130976A (en) * 2011-12-20 2013-07-04 Fujitsu Ltd Information processing apparatus and memory access method
JP2014160502A (en) * 2014-04-28 2014-09-04 Fujitsu Ltd Information processor and memory access method

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
JPN6013061112; Dan Teodosiu , Joel Baxter , Kinshuk Govil , John Chapin , Mendel Rosenblum , Mark Horowitz: 'Hardware Fault Containment in Scalable Shared-Memory Multiprocessors' Proceedings of the 24th annual international symposium on Computer architecture (ISCA'97) , 1997, P& *

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10210094B2 (en) 2015-08-04 2019-02-19 Fujitsu Limited Information processing system, information processing method and information processing apparatus
JP2017146789A (en) * 2016-02-17 2017-08-24 富士通株式会社 Control device, information processing device, and information processing device control method
US11625331B2 (en) 2020-07-08 2023-04-11 Fujitsu Limited Cache control apparatus and cache system control method
CN114564334A (en) * 2022-04-27 2022-05-31 苏州浪潮智能科技有限公司 MRPC data processing method, system and related components
CN114564334B (en) * 2022-04-27 2022-07-22 苏州浪潮智能科技有限公司 MRPC data processing method, system and related components
WO2023206963A1 (en) * 2022-04-27 2023-11-02 苏州元脑智能科技有限公司 Data processing method and system, and related components

Also Published As

Publication number Publication date
JP5800058B2 (en) 2015-10-28

Similar Documents

Publication Publication Date Title
JP5590022B2 (en) Information processing apparatus, control method, and control program
JP5614419B2 (en) Information processing apparatus, control method, and control program
JP5573829B2 (en) Information processing apparatus and memory access method
JP6944983B2 (en) Hybrid memory management
US7523260B2 (en) Propagating data using mirrored lock caches
JP2011065650A (en) Providing hardware support for shared virtual memory between local and remote physical memory
JP6337902B2 (en) Storage system, node device, cache control method and program
JP5800058B2 (en) Information processing apparatus, control method, and control program
JP2000250883A (en) Method and system for avoiding loss of data caused by cancel of transaction in unequal memory access system
JP2015146115A (en) Arithmetic processing apparatus, information processing apparatus, and arithmetic processing apparatus control method
JP2014160502A (en) Information processor and memory access method
WO2016132416A1 (en) Information processing device, information processing method, main processor core, program, information processing method, and sub-processor core
JP2015022380A (en) Information processor, shift method for virtual machine and shift program for virtual machine
US10394636B2 (en) Techniques for managing a hang condition in a data processing system with shared memory
EP1684168B1 (en) Synchronizing registers

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150217

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150303

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150430

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150519

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150715

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20150728

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150810

R150 Certificate of patent or registration of utility model

Ref document number: 5800058

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees