JP2010165022A - Inter-processor communication device, inter-processor communication method, program, and recording medium - Google Patents

Inter-processor communication device, inter-processor communication method, program, and recording medium Download PDF

Info

Publication number
JP2010165022A
JP2010165022A JP2009004678A JP2009004678A JP2010165022A JP 2010165022 A JP2010165022 A JP 2010165022A JP 2009004678 A JP2009004678 A JP 2009004678A JP 2009004678 A JP2009004678 A JP 2009004678A JP 2010165022 A JP2010165022 A JP 2010165022A
Authority
JP
Japan
Prior art keywords
processor
communication
shared memory
communication data
socket
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2009004678A
Other languages
Japanese (ja)
Inventor
Hiroomi Motohashi
弘臣 本橋
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.)
Ricoh Co Ltd
Original Assignee
Ricoh Co 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 Ricoh Co Ltd filed Critical Ricoh Co Ltd
Priority to JP2009004678A priority Critical patent/JP2010165022A/en
Publication of JP2010165022A publication Critical patent/JP2010165022A/en
Pending legal-status Critical Current

Links

Images

Landscapes

  • Multi Processors (AREA)

Abstract

<P>PROBLEM TO BE SOLVED: To provide an inter-processor communication device, an inter-processor communication method, a program, and a recording medium that reduce communication overhead generated by communication processing using shared memory between processor nodes to enable high-speed communications. <P>SOLUTION: This inter-processor communication device includes the shared memory accessible and shared from first and second processor nodes, a writing means for writing communication data in the shared memory according to a program at the first processor node, a socket for interconnecting the first and second processor nodes, a first reporting means for transmitting write-in reporting information to the second processor node via the socket, a reading means for reading the communication data from the shared memory according to the write-in reporting information, and a second reporting means for transmitting read-out reporting information to the first processor node via the socket. <P>COPYRIGHT: (C)2010,JPO&INPIT

Description

本発明は、複数のプロセッサノードから構成され、各プロセッサノードのそれぞれからアクセスすることが可能に共有して設けられた共有メモリを備えたプロセッサ間通信装置、プロセッサ間通信方法、プログラムおよび記録媒体に関する。   The present invention relates to an inter-processor communication apparatus, an inter-processor communication method, a program, and a recording medium, each including a shared memory that is configured by a plurality of processor nodes and is provided so as to be accessible from each of the processor nodes. .

従来より、複数のプロセッサノードを備えたプロセッサ間通信装置の1例である疎結合型のマルチプロセッサシステムの動作効率は、各プロセッサノード間の通信処理で発生する通信オーバーヘッドからのシステムパフォーマンスへの影響をどのようにして低減させるかに左右される。それは、マルチプロセッサシステムが実行する各処理のジョブのうち、プロセッサノードの負荷が大きいジョブが存在すると、このジョブを複数の各処理毎に細分化して各プロセッサノードにそれぞれ割り当てたとしても、大抵はそれぞれの細分化されたタスクなどの各処理の間で何らかの関連性や依存性があるために、各段階の処理を経ていくに従って各プロセッサノード間で演算結果や計算結果などの情報を相互に受け渡す通信処理を行うからである。   Conventionally, the operation efficiency of a loosely coupled multiprocessor system, which is an example of an interprocessor communication apparatus having a plurality of processor nodes, is affected by the communication overhead generated in the communication processing between the processor nodes. Depends on how to reduce If there is a job with a heavy processor node load among the jobs executed by the multiprocessor system, even if this job is subdivided into a plurality of processes and assigned to each processor node, it is usually Since each process such as each subdivided task has some relation or dependency, each processor node receives information such as calculation results and calculation results from each other as it goes through each stage of processing. This is because the passing communication process is performed.

このような各プロセッサノード間での通信処理では、従来ではEthernet(登録商標)やInifiBand,Myrinetなどのインタフェースが利用されてきた。しかし、Ethernet(登録商標)には、送信元のプロセッサノードが動作している処理でデータを送信してから、受信側のプロセッサノードが動作している処理でデータを受け取るまでの時間、即ち、通信時のレイテンシが長い、また、TCP/IPなどのプロトコル処理が重いという欠点があった。   In such communication processing between processor nodes, interfaces such as Ethernet (registered trademark), InifiBand, Myrinet have been conventionally used. However, in Ethernet (registered trademark), the time from when data is transmitted in the process in which the transmission source processor node is operating until the data is received in the process in which the reception side processor node is operating, that is, There are disadvantages such as long latency during communication and heavy protocol processing such as TCP / IP.

通信時のレイテンシが長いと、プロセッサノード間で頻繁にデータを相互に受け渡す場合には、通信オーバーヘッドが増大してシステム全体のパフォーマンス、動作効率が低下する。また、プロトコル処理が重いと、貴重なCPU性能が本来の演算処理や計算処理などの本来の目的以外の処理で浪費されてしまう。   If the latency during communication is long, when data is frequently exchanged between processor nodes, communication overhead increases and the performance and operation efficiency of the entire system decrease. In addition, if the protocol processing is heavy, valuable CPU performance is wasted in processing other than the original purpose such as original arithmetic processing and calculation processing.

一方、InifiBandやMyrinetは、レイテンシが短く、プロトコル処理がハードウェア化されているためにCPUの負担が軽いという利点があるが、これらのインタフェースカードは、Ethernet(登録商標)と比べると高機能・高性能であるがゆえに非常に高価であり、組み込み機器ではローコストの実現が困難であった。   On the other hand, InifiBand and Myrinet have the advantage that the latency is short and the protocol processing is implemented in hardware, so that the burden on the CPU is light. However, these interface cards have higher functionality than Ethernet (registered trademark). Because of its high performance, it is very expensive, and it has been difficult to achieve low cost with embedded devices.

また、マルチプロセッサシステムで用いられている組み込み機器では、ローコストが要求されていることもありCPUの個数が多くても高々2〜4個程度に留まっていることから、各プロセッサノード間での通信処理は共有メモリを利用して行われる場合が多かった。このような場合の共有メモリには、従来より、デュアルポートメモリとして参照されるメモリ素子が使用されていたが、このデュアルポートメモリの機能では、1個に対して2個のCPUまでに限って接続可能であるという制限があった。   In addition, in embedded devices used in multiprocessor systems, low cost is required and the number of CPUs is at most 2 to 4 at most. Processing was often performed using shared memory. Conventionally, a memory device referred to as a dual port memory has been used as the shared memory in such a case. However, in the function of this dual port memory, only one CPU is limited to one. There was a restriction that it could be connected.

最近ではデュアルポートメモリ以外にも、2個のプロセッサノードのPCIバス同士を接続するPCI−PCIブリッジや、2個以上の複数のプロセッサノードのPCI−Expressバスをクロスバーで接続するPCI−Expressスイッチを用いたLSIが使用されている。   Recently, in addition to the dual port memory, a PCI-PCI bridge for connecting PCI buses of two processor nodes or a PCI-Express switch for connecting PCI-Express buses of two or more processor nodes by a crossbar. LSI using is used.

これらのPCI−PCIブリッジやPCI−Expressスイッチでは、通常1つのプロセッサノードが占有利用するメインメモリに対して、他のプロセッサノードがダイレクトにアクセスすることができるため、ローコストで容易に共有メモリの機能を有することができる。また、これらのPCI−PCIブリッジやPCI−Expressスイッチは、2個以上のCPUを備えたマルチプロセッサシステムで利用されている。   In these PCI-PCI bridges and PCI-Express switches, the main memory normally occupied by one processor node can be directly accessed by other processor nodes, so the function of the shared memory can be easily performed at low cost. Can have. Also, these PCI-PCI bridges and PCI-Express switches are used in multiprocessor systems having two or more CPUs.

特許第3743381号公報(特許文献1)に記載されたコンピュータシステムでは、複数のホストと、これらのホストのいずれからもアクセス可能な共有メモリと、ホスト間をつなぐ通信経路とを備えるコンピュータシステムにおいて、自ホスト内の、ホスト間で連携して動作するプログラムから発行されるホスト間処理同期要求を受理し、その旨を示す情報を共有メモリに記録し、前記旨を前記通信経路を介して他ホストに通知し、自ホストのホスト間処理同期要求の受理や他ホストから通知される、ホスト間処理同期要求の受理通知を契機とし、共有メモリを参照してホスト間処理同期成立の判断・認識を行う各ホスト内のホスト間処理同期手段と、ホスト間の通信が失われた場合にも対処できるように、他ホストからのホスト間処理同期要求の受理通知がなくても、一定時間毎に共有メモリの参照に基づくホスト間処理同期成立判断を前記ホスト間処理同期手段に行わせるべく処理同期確認要求を発行する各ホスト内のタイマ起動手段とを有している。   In a computer system described in Japanese Patent No. 3743381 (Patent Document 1), a computer system including a plurality of hosts, a shared memory accessible from any of these hosts, and a communication path connecting the hosts. It accepts an inter-host processing synchronization request issued from a program that operates in cooperation between hosts within its own host, records information to that effect in a shared memory, and communicates that fact to other hosts via the communication path. Triggering and recognizing the establishment of inter-host processing synchronization with reference to the shared memory, triggered by the acceptance of the inter-host processing synchronization request of the local host and the acceptance notification of the inter-host processing synchronization request notified from other hosts Inter-host processing within each host and inter-host processing from other hosts so that it can cope with the loss of communication between hosts. Starts a timer in each host that issues a process synchronization confirmation request so that the inter-host process synchronization means makes a determination of establishment of inter-host process synchronization based on reference to the shared memory at regular intervals even if there is no acceptance request notification Means.

しかし、共有メモリは、他の一般的な通信処理と、ソフトウェア上での利便性が全く異なっており、共有メモリを利用するためには各プロセッサノードのプログラム間での同期や排他などの仕組みをプログラマが何らかの方法で実現しなければならないといった利便性での問題があった。さらには、密結合型のマルチプロセッサシステム向けに開発されソケット通信を利用しているソフトウェアを、共有メモリを備えた疎結合型のマルチプロセッサシステムに移行しようとする場合には、プログラム内のソースコード中でソケット通信を利用している箇所の記述を、共有メモリを利用する処理に書き換えなければならないため、プログラマにとってソフトウェアの開発負担が非常に増大するという問題があった。   However, the shared memory is completely different from other general communication processes in terms of software convenience. To use the shared memory, a mechanism such as synchronization or exclusion between programs of each processor node is used. There was a problem in convenience that the programmer had to do it in some way. Furthermore, if you intend to migrate software developed for a tightly coupled multiprocessor system and using socket communication to a loosely coupled multiprocessor system with shared memory, the source code in the program In particular, the description of the part using the socket communication must be rewritten to the process using the shared memory, so that there has been a problem that the burden of software development for the programmer is greatly increased.

本発明は、このような課題に鑑みてなされたものであり、各プロセッサノード間での共有メモリを用いた通信処理で発生する通信オーバーヘッドを低減し、高速通信が可能なプロセッサ間通信装置、プロセッサ間通信方法、プログラムおよび記録媒体を提供することを目的とする。   The present invention has been made in view of such a problem, and reduces the communication overhead generated in communication processing using a shared memory between processor nodes, and enables an interprocessor communication apparatus and processor capable of high-speed communication. It is an object to provide an intercommunication method, a program, and a recording medium.

以上の課題を解決するために本発明では、第1および第2のプロセッサノードから構成され、第1および第2のプロセッサノードのそれぞれからアクセスすることが可能に共有して設けられた共有メモリを備えたプロセッサ間通信装置において、第1のプロセッサノードで動作しているプログラムに従って、書込手段が通信データを前記共有メモリに書き込むと、第1および第2のプロセッサノードをプログラム間で通信データの送受信が可能に接続するソケット通信を介して、第1の通知手段が書込通知情報を第2のプロセッサノードに送信する。そして、読出手段が、第1の通知手段により送信された書込通知情報に応じて共有メモリから通信データを読み出し、第2の通知手段が、読出通知情報をソケット通信を介して第1のプロセッサノードに送信する。   In order to solve the above problems, in the present invention, there is provided a shared memory that is configured by first and second processor nodes and is provided so as to be accessible from each of the first and second processor nodes. In the inter-processor communication device provided, when the writing means writes the communication data to the shared memory according to the program operating on the first processor node, the first and second processor nodes are connected with the communication data between the programs. The first notification means transmits the write notification information to the second processor node via the socket communication that allows connection and reception. Then, the reading means reads communication data from the shared memory in accordance with the write notification information transmitted by the first notification means, and the second notification means sends the read notification information to the first processor via socket communication. Send to node.

このため、第1および第2の各プロセッサノード間で、同一の共有メモリを共有利用することによって、この共有メモリが分散共有メモリとして機能する。また、ソケットを介して書込通知情報や読出通知情報を送受信することによって、この共有メモリが複数のプロセッサノード間で利用できるというソケット通信の特徴と、広帯域であるという共有メモリの特徴とをそれぞれ有し、通信オーバーヘッドを低減し、高速通信を可能とすることができる。   Therefore, by sharing the same shared memory between the first and second processor nodes, this shared memory functions as a distributed shared memory. In addition, by transmitting and receiving write notification information and read notification information via a socket, the characteristics of socket communication that this shared memory can be used between a plurality of processor nodes and the characteristics of shared memory that are wideband, respectively The communication overhead can be reduced and high-speed communication can be achieved.

本発明によれば、各プロセッサノード間での共有メモリを用いた通信処理で発生する通信オーバーヘッドを低減し、高速通信が可能なプロセッサ間通信装置、プロセッサ間通信方法、プログラムおよび記録媒体を提供することができる。   According to the present invention, there are provided an inter-processor communication device, an inter-processor communication method, a program, and a recording medium capable of reducing communication overhead generated in communication processing using a shared memory between processor nodes and capable of high-speed communication. be able to.

第1の実施形態におけるマルチプロセッサシステムの全体構成を示す説明図である。It is explanatory drawing which shows the whole structure of the multiprocessor system in 1st Embodiment. 第2の実施形態におけるマルチプロセッサシステムの全体構成を示す説明図である。It is explanatory drawing which shows the whole structure of the multiprocessor system in 2nd Embodiment. 第2の実施形態におけるマルチプロセッサシステムのメインメモリの記憶領域の使用状態を示す説明図である。It is explanatory drawing which shows the use condition of the storage area of the main memory of the multiprocessor system in 2nd Embodiment. 第3の実施形態におけるマルチプロセッサシステムの全体構成を示す説明図である。It is explanatory drawing which shows the whole structure of the multiprocessor system in 3rd Embodiment. 第1の実施形態におけるマルチプロセッサシステムのプロセッサノードから他のプロセッサノード内の共有メモリに対してCPUが書き込みを行った処理を示す説明図である。It is explanatory drawing which shows the process which CPU wrote with respect to the shared memory in another processor node from the processor node of the multiprocessor system in 1st Embodiment. 第1の実施形態におけるマルチプロセッサシステムの複数のプロセッサノード間がソケットで接続されこのソケット600を利用して通信を行っている処理を示す説明図である。FIG. 6 is an explanatory diagram illustrating processing in which a plurality of processor nodes of the multiprocessor system according to the first embodiment are connected by a socket and communication is performed using the socket 600. 第1の実施形態におけるマルチプロセッサシステムの複数のプロセッサノードのうち、2つのプロセッサノードが通信を行っている処理を示す説明図である。It is explanatory drawing which shows the process in which two processor nodes are communicating among several processor nodes of the multiprocessor system in 1st Embodiment. 第1の実施形態におけるマルチプロセッサシステムの複数のプロセッサノードのうち、2つのプロセッサノードが通信を行っている処理を示す説明図である。It is explanatory drawing which shows the process in which two processor nodes are communicating among several processor nodes of the multiprocessor system in 1st Embodiment. 第1の実施形態におけるマルチプロセッサシステムの複数のプロセッサノード間がソケットで接続されている場合の通信データの送受信処理を示すシーケンス図である。It is a sequence diagram which shows the transmission / reception process of communication data in case the some processor nodes of the multiprocessor system in 1st Embodiment are connected by the socket. 第1の実施形態におけるマルチプロセッサシステムの通信データの送受信処理のコネクション確立後の具体的な例を示すシーケンス図である。It is a sequence diagram which shows the specific example after the connection establishment of the transmission / reception process of the communication data of the multiprocessor system in 1st Embodiment. 第1の実施形態におけるマルチプロセッサシステムの通信データの送受信処理のコネクション確立後の他の具体的な例を示すシーケンス図である。It is a sequence diagram which shows the other specific example after the connection establishment of the transmission / reception process of the communication data of the multiprocessor system in 1st Embodiment. 第1の実施形態におけるマルチプロセッサシステムのクライアントで実行されるコネクション確立および切断の処理を示すシーケンス図である。FIG. 5 is a sequence diagram illustrating connection establishment and disconnection processing executed by a client of the multiprocessor system according to the first embodiment. 第1の実施形態におけるマルチプロセッサシステムのソケットの動作を指示するためのソケット指示情報を記憶したテーブルを示す説明図である。It is explanatory drawing which shows the table which memorize | stored the socket instruction information for instruct | indicating the operation | movement of the socket of the multiprocessor system in 1st Embodiment. 第1の実施形態におけるマルチプロセッサシステムのソケット指示情報に従って共有メモリに対して行った処理の例を示す説明図である。It is explanatory drawing which shows the example of the process performed with respect to the shared memory according to the socket instruction information of the multiprocessor system in 1st Embodiment. 第1の実施形態におけるマルチプロセッサシステムのソケット指示情報に従って共有メモリに対して行った処理の他の例を示す説明図である。It is explanatory drawing which shows the other example of the process performed with respect to the shared memory according to the socket instruction information of the multiprocessor system in 1st Embodiment. 第1の実施形態におけるマルチプロセッサシステムの共有メモリ内の記憶領域で割り当てられたメモリウィンドウのデータ構成を示す説明図である。It is explanatory drawing which shows the data structure of the memory window allocated by the storage area in the shared memory of the multiprocessor system in 1st Embodiment. 第1の実施形態におけるマルチプロセッサシステムの共有メモリ内のリングバッファに通信データを用いて行った処理を示す説明図である。It is explanatory drawing which shows the process performed using communication data for the ring buffer in the shared memory of the multiprocessor system in 1st Embodiment. 第1の実施形態におけるマルチプロセッサシステムの複数のプロセッサノードのうち2つのプロセッサノードが共有メモリに通信データを用いて行った処理を示す説明図である。It is explanatory drawing which shows the process which two processor nodes among the several processor nodes of the multiprocessor system in 1st Embodiment performed using communication data for shared memory. 第1の実施形態におけるマルチプロセッサシステムの複数のプロセッサノードのうち2つのプロセッサノードが共有メモリに通信データを用いて行った他の処理を示す説明図である。It is explanatory drawing which shows the other process which two processor nodes among the several processor nodes of the multiprocessor system in 1st Embodiment performed using communication data for shared memory. 第1の実施形態におけるマルチプロセッサシステムのプロセッサノードのハードウェア構成を示す説明図である。FIG. 3 is an explanatory diagram illustrating a hardware configuration of a processor node of the multiprocessor system according to the first embodiment.

〔第1の実施形態〕
以下、本発明に係る第1の実施形態をもって説明するが、本発明は、実施形態に限定されるものではない。図1は、本発明によるプロセッサ間通信装置の1つの例であるマルチプロセッサシステム10の第1の実施形態での全体構成を示す説明図である。このマルチプロセッサシステム10は、例えば共有メモリを備えた疎結合型のマルチプロセッサシステムであり、複数のプロセッサノードから構成され、共有メモリが各プロセッサノードのそれぞれからアクセス可能に共有して設けられている。
[First Embodiment]
Hereinafter, although it demonstrates with 1st Embodiment concerning this invention, this invention is not limited to embodiment. FIG. 1 is an explanatory diagram showing an overall configuration in a first embodiment of a multiprocessor system 10 which is an example of an interprocessor communication apparatus according to the present invention. The multiprocessor system 10 is a loosely coupled multiprocessor system including, for example, a shared memory. The multiprocessor system 10 includes a plurality of processor nodes, and the shared memory is provided so as to be accessible from each of the processor nodes. .

マルチプロセッサシステム10は、図1に示すように、複数のプロセッサノード100、110、120と、これらの各プロセッサノード100、110、120間でデータなどの送受信を行うためのネットワークの1例であるEthernet(登録商標)130と、各プロセッサノード100、110、120のそれぞれからアクセス可能に共有して設けられた共有メモリ140とから構成されている。   As shown in FIG. 1, the multiprocessor system 10 is an example of a network for transmitting and receiving data and the like between a plurality of processor nodes 100, 110, and 120 and the processor nodes 100, 110, and 120. The network includes an Ethernet (registered trademark) 130 and a shared memory 140 that is provided so as to be accessible from each of the processor nodes 100, 110, and 120.

プロセッサノード100は、アプリケーションなどの各種の処理を行うためのプログラムを実行するCPU101と、CPU101の処理に従って後述するようにメインメモリ103にアクセスしデータなどの読み出しを行うメモリコントローラ102と、CPU101の処理によって得られた各種のデータを記憶するメインメモリ103とを備えている。   The processor node 100 includes a CPU 101 that executes a program for performing various processes such as an application, a memory controller 102 that accesses a main memory 103 and reads out data and the like according to the process of the CPU 101, and a process of the CPU 101. And a main memory 103 for storing various data obtained by the above.

CPU101は、予め用意されたプログラムを実行することにより、例えばアプリケーション上での各種の処理を行い、メモリコントローラ102や後述するホスト―PCIブリッジ104、Ethernet(登録商標)カード105を介して外部から入力された通信データを用いて演算処理や判定処理などを行う。   The CPU 101 executes various types of processing on an application, for example, by executing a program prepared in advance, and is input from the outside via the memory controller 102, a host-PCI bridge 104 described later, and an Ethernet (registered trademark) card 105. The calculated communication data is used to perform arithmetic processing and determination processing.

メモリコントローラ102は、メインメモリ103にアクセスして、CPU101での処理によって得られた演算結果や判定結果などのデータをメインメモリ103内に形成された共有メモリに書き込んだり、また、メモリコントローラ102は、この共有メモリから通信データを始めとする各データを読み出し、ホスト―PCIブリッジ104、Ethernet(登録商標)カード105、Ethernet(登録商標)130を介して他のプロセッサノード110、120に送信するための処理を行う。   The memory controller 102 accesses the main memory 103 and writes data such as calculation results and determination results obtained by processing in the CPU 101 to a shared memory formed in the main memory 103, and the memory controller 102 In order to read each data including communication data from the shared memory, and transmit the data to the other processor nodes 110 and 120 via the host-PCI bridge 104, the Ethernet (registered trademark) card 105, and the Ethernet (registered trademark) 130. Perform the process.

また、プロセッサノード100は、プロセッサノード100および外部との間のデータの入出力を行うホスト―PCIブリッジ104と、Ethernet(登録商標)130に接続されEthernet(登録商標)130を介して外部との間でデータの送受信を行うEthernet(登録商標)カード105とを備えている。   The processor node 100 is connected to the host-PCI bridge 104 for inputting / outputting data between the processor node 100 and the outside, and the Ethernet (registered trademark) 130, and is connected to the outside via the Ethernet (registered trademark) 130. And an Ethernet (registered trademark) card 105 that transmits and receives data between them.

ホスト―PCIブリッジ104は、プロセッサノード100の内部側がメモリコントローラ102に接続され、外部側がEthernet(登録商標)カード105、共有メモリ140に接続されている。ホスト―PCIブリッジ104は、外部側の接続対象をEthernet(登録商標)カード105または共有メモリ140に切り替えて、プロセッサノード100およびEthernet(登録商標)130間と、プロセッサノード100および他のプロセッサノード110、120間でのデータの入出力を行う。   The host-PCI bridge 104 has an internal side of the processor node 100 connected to the memory controller 102 and an external side connected to the Ethernet (registered trademark) card 105 and the shared memory 140. The host-PCI bridge 104 switches the external connection target to the Ethernet (registered trademark) card 105 or the shared memory 140, and between the processor node 100 and the Ethernet (registered trademark) 130, the processor node 100, and the other processor nodes 110. , 120 input / output data.

Ethernet(登録商標)カード105は、例えばプロセッサノード100のPCIカードスロットルに装着されてEthernet(登録商標)130と直接接続され、Ethernet(登録商標)130を介して外部との間でデータの送受信を行う。   The Ethernet (registered trademark) card 105 is mounted on, for example, a PCI card throttle of the processor node 100 and directly connected to the Ethernet (registered trademark) 130, and transmits / receives data to / from the outside via the Ethernet (registered trademark) 130. Do.

Ethernet(登録商標)カード105は、他のプロセッサノード110、120のうちのいずれかから要求された通信データを要求するための要求情報を受信する。また、Ethernet(登録商標)カード105は、メモリコントローラ102により通信データが共有メモリ140に書き込まれたことを通知する書込通知情報を、他のプロセッサノード110、120にそれぞれ送信したり、メモリコントローラ102により通信データが読み出されたことを通知する読出通知情報を、他のプロセッサノード110、120にそれぞれ送信したり、また、他のプロセッサノード110、120のEthernet(登録商標)カード105により送信された読出通知情報に従って、メモリコントローラ102により読み出された通信データを、通信データを要求したプロセッサノードに送信する処理を行う。   The Ethernet (registered trademark) card 105 receives request information for requesting communication data requested from one of the other processor nodes 110 and 120. Further, the Ethernet (registered trademark) card 105 transmits write notification information for notifying that the communication data has been written to the shared memory 140 by the memory controller 102 to the other processor nodes 110 and 120, respectively, Read notification information for notifying that the communication data has been read by 102 is transmitted to the other processor nodes 110 and 120, and is transmitted by the Ethernet (registered trademark) card 105 of the other processor nodes 110 and 120. In accordance with the read notification information, the communication data read by the memory controller 102 is transmitted to the processor node that requested the communication data.

プロセッサノード110、120は、プロセッサノード100と同様の構成となっており、CPU101、メモリコントローラ102、メインメモリ103、ホスト―PCIブリッジ104、Ethernet(登録商標)カード105と同様の機能を有するCPU111、121、メモリコントローラ112、122、メインメモリ113、123、ホスト―PCIブリッジ114、124、Ethernet(登録商標)カード115、125を備えている。   The processor nodes 110 and 120 have the same configuration as the processor node 100, and the CPU 101, the memory controller 102, the main memory 103, the host-PCI bridge 104, and the CPU 111 having the same functions as the Ethernet (registered trademark) card 105, 121, memory controllers 112 and 122, main memories 113 and 123, host-PCI bridges 114 and 124, and Ethernet (registered trademark) cards 115 and 125.

図20は、プロセッサノード100のハードウェア構成を示す説明図である。プロセッサノード100は、図20に示すように、CPU101にメモリコントローラ102が接続され、このメモリコントローラ102に対してメインメモリ103がデータの書き込みおよび読み出しが可能に、また、ホスト―PCIブリッジ104が通信データなどの各データの送受信が可能にそれぞれ接続されている。   FIG. 20 is an explanatory diagram showing the hardware configuration of the processor node 100. As shown in FIG. 20, the processor node 100 has a memory controller 102 connected to the CPU 101, the main memory 103 can write and read data to the memory controller 102, and the host-PCI bridge 104 communicates. Each data such as data is connected so as to be able to transmit and receive.

また、ホスト―PCIブリッジ104には、複数種類のPCIデバイス機器が接続可能なPCIバス401が接続され、このPCIバス401にPCIバスを介して共有メモリ140に接続されたPCI―PCIブリッジ402と、複数種類の各PCIデバイス403と、Ethernet(登録商標)130に接続されたEthernet(登録商標)カード105とがそれぞれ接続されている。   A PCI bus 401 to which a plurality of types of PCI device devices can be connected is connected to the host-PCI bridge 104, and a PCI-PCI bridge 402 connected to the shared memory 140 via the PCI bus is connected to the PCI bus 401. A plurality of types of PCI devices 403 and an Ethernet (registered trademark) card 105 connected to the Ethernet (registered trademark) 130 are connected to each other.

メモリコントローラ102は、CPU101のホストバスに接続され、CPU101からメインメモリ103やEthernet(登録商標)カード105、PCI―PCIブリッジ402、各種PCIデバイス403に対するリードまたはライトの要求を受け取ると、対象のデバイスに対してリクエストを振り分ける役目がある。マルチプロセッサシステム100の具体的な例としてパソコンを用いた場合、一般的には例えばIntel製のx86 CPUを搭載しているが、その際にはマザーボードというメイン基板の上にノースブリッジやMCH(Memory Controller Hub)として参照されるチップセットが搭載されており、図20のメモリコントローラ102はこれらのチップセットに相当している。   When the memory controller 102 is connected to the host bus of the CPU 101 and receives a read or write request for the main memory 103, the Ethernet (registered trademark) card 105, the PCI-PCI bridge 402, and various PCI devices 403 from the CPU 101, the memory controller 102 The role of distributing requests to. When a personal computer is used as a specific example of the multiprocessor system 100, for example, an x86 CPU manufactured by Intel, for example, is generally mounted. On this occasion, a north bridge or MCH (Memory) is mounted on a main board called a motherboard. A chip set referred to as “Controller Hub” is mounted, and the memory controller 102 in FIG. 20 corresponds to these chip sets.

一方、ホスト―PCIブリッジ104は、サウスブリッジやICH(I/O Controller Hub)として参照されるチップセットに相当し、CPU101から各種Ethernet(登録商標)カード105、PCI―PCIブリッジ402、各種PCIデバイス403に対するアクセス要求を発行したり、あるいはPCIデバイス403からメインメモリ103に対するDMAリクエストを受け取ってメモリコントローラ102に送信する機能を有する。   On the other hand, the host-PCI bridge 104 corresponds to a chip set referred to as a south bridge or an ICH (I / O Controller Hub), and the CPU 101 to various Ethernet (registered trademark) cards 105, the PCI-PCI bridge 402, and various PCI devices. It has a function of issuing an access request for 403 or receiving a DMA request for the main memory 103 from the PCI device 403 and transmitting it to the memory controller 102.

図5は、例えばプロセッサノード110から他のプロセッサノード100内の共有メモリ140に対してCPU101が書き込みを行った処理を示す説明図である。図5に示すように、プロセッサノード100のメインメモリ103の一部の記憶領域がプロセッサノード110のメインメモリ113内のメモリウィンドウにマッピングされている。この時に、プロセッサノード110で動作しているプロセスがメモリウィンドウの記憶領域に対して書き込みを行うと、この書き込まれたデータと記憶領域を示すアドレスがプロセッサノード100に送信され、リモートメモリとして利用されているプロセッサノード100内のメインメモリ103に対して書き込み処理が行われる。そのメインメモリ103に対してプロセッサノード100で動作しているプロセスが読み出しを行うことにより、プロセッサノード110からプロセッサノード100に対して通信データを伝達することが可能となる。   FIG. 5 is an explanatory diagram illustrating a process in which the CPU 101 writes data from, for example, the processor node 110 to the shared memory 140 in another processor node 100. As shown in FIG. 5, a part of the storage area of the main memory 103 of the processor node 100 is mapped to a memory window in the main memory 113 of the processor node 110. At this time, when a process operating on the processor node 110 writes to the storage area of the memory window, the written data and an address indicating the storage area are transmitted to the processor node 100 and used as a remote memory. Write processing is performed on the main memory 103 in the processor node 100. When the process operating in the processor node 100 reads out the main memory 103, communication data can be transmitted from the processor node 110 to the processor node 100.

図5は、別々のプロセッサノードで動作しているプロセスの間で同一の共有メモリ140を共有利用することでデータの伝達を行うことが可能となっているが、このようなメモリを分散共有メモリとして参照する。分散共有メモリは、複数のプロセッサノード間で利用できるというソケット通信の特徴と、広帯域であるという共有メモリの特徴とをそれぞれ有している。   In FIG. 5, it is possible to transfer data by sharing the same shared memory 140 between processes operating on different processor nodes. Such a memory can be used as a distributed shared memory. Refer to as The distributed shared memory has a socket communication feature that can be used between a plurality of processor nodes, and a shared memory feature that has a wide bandwidth.

マルチプロセッサシステム10が備えているOSのうち、例えばUNIX(登録商標)のような各プロセッサノード100、110、120でのプログラム内のプロセス間でのメモリ保護機能を持っているOSではプロセス間でグローバル変数等を用いてデータの伝達を行うことができない。このようなOSとしては、プロセス間でデータの送受信などのコミュニケーションを行うための機能として、ソケット通信や共有メモリといったIPC(Inter−Process Communication)を実現する手段を備えている。ソケット通信は、ネットワーク透過な機能なので、各プロセッサノード100、110、120内のみならず、各プロセッサノード100、110、120間でデータをやり取りする場合にも使用することができるという長所があるが、その反面、通信オーバーヘッドが多いために大量のデータ送受信の際には処理効率が低下するという欠点もある。共有メモリ140は、通信オーバーヘッドが低く大量のデータ送受信でも効率良く実行できるが(広帯域)、通常はそれぞれのプロセッサノード100、110、120内でしか利用できないため、複数のプロセッサノード100、110、120によって構成されるマルチプロセッサシステムではあまり利用されることがなかった。   Among the OSs provided in the multiprocessor system 10, for example, an OS having a memory protection function between processes in a program in each processor node 100, 110, 120 such as UNIX (registered trademark), between processes. Data cannot be transmitted using global variables. Such an OS includes means for realizing IPC (Inter-Process Communication) such as socket communication and shared memory as a function for performing communication such as data transmission / reception between processes. Since the socket communication is a network-transparent function, it has an advantage that it can be used not only in each processor node 100, 110, 120 but also when data is exchanged between each processor node 100, 110, 120. On the other hand, there is a disadvantage that the processing efficiency is reduced when a large amount of data is transmitted / received due to a large communication overhead. The shared memory 140 has low communication overhead and can be efficiently executed even when a large amount of data is transmitted / received (broadband). However, since the shared memory 140 can usually be used only in each of the processor nodes 100, 110, 120, a plurality of processor nodes 100, 110, 120 In a multiprocessor system composed of the above, it has not been used much.

図6は、複数のプロセッサノード100、110、120間がソケット600で接続され、例えばプロセッサノード100で動作しているプログラムがこのソケット600を利用してソケット通信を行っている処理を示す説明図である。ここで、ソケット600は、複数のプロセッサノード100、110、120のそれぞれの間でIPアドレス、ポート番号が設定されて、このソケット600によって接続された各プロセッサノードが相互にソケット通信を行うことが可能となっている状態を示す。   FIG. 6 is an explanatory diagram showing processing in which a plurality of processor nodes 100, 110, and 120 are connected by a socket 600 and a program operating on the processor node 100 performs socket communication using the socket 600, for example. It is. Here, in the socket 600, an IP address and a port number are set between each of the plurality of processor nodes 100, 110, and 120, and the processor nodes connected by the socket 600 perform socket communication with each other. Indicates the possible state.

各プロセッサノード100、110、120のうち、プロセッサノード100、110間は、図6に示すように、例えばEthernet(登録商標)130などの各種のネットワークを透過するソケット600で接続された二つのプログラム601、602の間で双方向に通信データを送受信することができる。   Among the processor nodes 100, 110, 120, between the processor nodes 100, 110, as shown in FIG. 6, for example, two programs connected by a socket 600 that passes through various networks such as Ethernet (registered trademark) 130. Communication data can be transmitted and received bi-directionally between 601 and 602.

このソケット600で接続されることによって示されるソケット通信では、各プロセッサノード100、110、120のうち、任意の2つのプロセッサノードで動作しているそれぞれのプログラム間で通信データを送受信することができる。また、ソケット600を通して送受信可能なデータは、バイトストリームであり、ここで、バイトストリームとは、図6に示すように、送受信のそれぞれのデータでバイトデータが一列に並んだデータであり、送信元が送出した各バイトデータがその送出された送出順序のままで受信側のプロセッサノードに届くようになっている。   In the socket communication indicated by the connection with the socket 600, communication data can be transmitted and received between the programs operating on any two of the processor nodes 100, 110, and 120. . Further, the data that can be transmitted / received through the socket 600 is a byte stream. Here, as shown in FIG. 6, the byte stream is data in which byte data is arranged in a line for each data to be transmitted / received. Each byte data sent by the client reaches the receiving processor node in the same sending order.

図7、図8は、複数のプロセッサノード100、110、120のうち、例えばプロセッサノード100、110で動作しているプログラムが通信を行っている処理を示す説明図である。プロセッサノード100、110間では、図7に示すように、プロセッサノード100、110でそれぞれ内部のメインメモリ103、113からプログラムを読み出して動作し、各プログラムの処理に従って相互に通信データの書き込みを要求する。   FIGS. 7 and 8 are explanatory diagrams illustrating processing in which, for example, programs operating on the processor nodes 100 and 110 among the plurality of processor nodes 100, 110, and 120 are communicating. As shown in FIG. 7, between the processor nodes 100 and 110, the processor nodes 100 and 110 operate by reading programs from the internal main memories 103 and 113, respectively, and request to write communication data to each other according to the processing of each program. To do.

プロセッサノード100からプロセッサノード110への書き込みの要求では、図8に示すように、プロセッサノード100のメインメモリ103の一部の記憶領域がプロセッサノード110のメインメモリ113内のメモリウィンドウにマッピングされている。この時に、プロセッサノード110のプログラムで動作しているプロセスBがメモリウィンドウの記憶領域に対して書き込みを行うと、この書き込まれたデータと記憶領域を示すアドレスがプロセッサノード100に送信され、リモートメモリとして利用されているプロセッサノード100内のメインメモリ103に対して書き込み処理が行われる。そのメインメモリ103に対してプロセッサノード100で動作しているプロセスが読み出しを行うことにより、プロセッサノード110からプロセッサノード100に対して通信データを伝達することが可能となる。   In a write request from the processor node 100 to the processor node 110, as shown in FIG. 8, a part of the storage area of the main memory 103 of the processor node 100 is mapped to a memory window in the main memory 113 of the processor node 110. Yes. At this time, when the process B operating in the program of the processor node 110 writes to the storage area of the memory window, the written data and the address indicating the storage area are transmitted to the processor node 100, and the remote memory Write processing is performed on the main memory 103 in the processor node 100 used as. When the process operating in the processor node 100 reads out the main memory 103, communication data can be transmitted from the processor node 110 to the processor node 100.

一方、プロセッサノード110からプロセッサノード100への書き込みの要求では、プロセッサノード110のメインメモリ113の一部の記憶領域がプロセッサノード100のメインメモリ103内のメモリウィンドウにマッピングされている。そして、同様にしてプロセッサノード100からプロセッサノード110に対して通信データが伝達される。   On the other hand, in a write request from the processor node 110 to the processor node 100, a part of the storage area of the main memory 113 of the processor node 110 is mapped to a memory window in the main memory 103 of the processor node 100. Similarly, communication data is transmitted from the processor node 100 to the processor node 110.

図9は、図6に示すように、複数のプロセッサノード100、110、120間がソケット600で接続されている場合の通信データの送受信処理を示すシーケンス図である。この場合の送受信処理では、図9に示すように、一方のサーバ90内のプロセッサノード100と、もう一方のクライアント91内のプロセッサノード110とが、それぞれソケット600を介して接続されている。   FIG. 9 is a sequence diagram showing communication data transmission / reception processing when a plurality of processor nodes 100, 110, 120 are connected by a socket 600 as shown in FIG. 6. In the transmission / reception process in this case, as shown in FIG. 9, the processor node 100 in one server 90 and the processor node 110 in the other client 91 are connected via a socket 600.

サーバ90は、ステップS901でクライアント91から送信されたソケット600使用要求(socket)のデータを受け取ると、これに応じて同様のデータと、(bind)、(listen)、(accept)の各データを生成し、サーバ90およびクライアント91間のコネクションを確立するための処理行う。   When the server 90 receives the socket 600 use request (socket) data transmitted from the client 91 in step S901, the server 90 sends the same data and the data (bind), (listen), and (accept) in response to this. A process for generating and establishing a connection between the server 90 and the client 91 is performed.

サーバ90、クライアント91は、ステップS902でソケット600を初期化する処理を行い、各種のデータを送受信可能な状態に設定する。   In step S902, the server 90 and the client 91 perform processing for initializing the socket 600, and set various data to a state where they can be transmitted and received.

クライアント91は、ステップS903でソケット600を介して送信された信号(p_cond_signal)をCPU111で動作するプログラムに一度戻して、この信号に従って通信データを共有メモリ140に送信し、通信データを共有メモリ140に書き込む処理を行う。   The client 91 once returns the signal (p_cond_signal) transmitted through the socket 600 in step S903 to the program operating on the CPU 111, transmits the communication data to the shared memory 140 according to this signal, and transmits the communication data to the shared memory 140. Perform the writing process.

クライアント91は、ステップS904でステップS903において共有メモリ140に通信データを書き込んだことを通知するための書込通知情報を、ソケット600を介してサーバ90に送信する。   In step S904, the client 91 transmits write notification information for notifying that communication data has been written in the shared memory 140 in step S903 to the server 90 via the socket 600.

一方、サーバ90は、ステップS903においてクライアント91と同様に、ソケット600を介して送信された信号(p_cond_signal)をCPU101で動作するプログラムに一度戻す。そして、サーバ90は、ステップS904においてクライアント91から送信された書込通知情報を受信し、ステップS905でこの書込通知情報に従って、通信データを共有メモリ140から読み出す処理を行う。   On the other hand, the server 90 returns the signal (p_cond_signal) transmitted via the socket 600 to the program operating on the CPU 101 once in the same manner as the client 91 in step S903. The server 90 receives the write notification information transmitted from the client 91 in step S904, and performs a process of reading communication data from the shared memory 140 in accordance with the write notification information in step S905.

サーバ90は、ステップS906でステップS905において共有メモリ140から通信データを読み出したことを通知するための読出通知情報を、ソケット600を介してクライアント91に送信する。   In step S906, the server 90 transmits read notification information for notifying that the communication data has been read from the shared memory 140 in step S905 to the client 91 via the socket 600.

クライアント91は、ステップS907でサーバ90およびクライアント91間のコネクションを切断することを通知するための切断通知信号を、ソケット600を介してサーバ90に送信する。一方、サーバ90は、ステップS908で切断通知信号を受信すると、これに応じてコネクションを切断することに応答することを通知するための切断通知信号を、ソケット600を介してクライアント91に送信する。   The client 91 transmits a disconnection notification signal for notifying the disconnection of the connection between the server 90 and the client 91 to the server 90 via the socket 600 in step S907. On the other hand, when the server 90 receives the disconnection notification signal in step S908, the server 90 transmits a disconnection notification signal to the client 91 via the socket 600 in order to notify that it responds to disconnecting the connection accordingly.

サーバ90、クライアント91は、ステップS909でソケット600の動作を終了する処理を行い、各種のデータを送受信不可能な状態に設定する。また、サーバ90は、サーバ90およびクライアント91間のコネクションを切断するための処理を行う。   In step S909, the server 90 and the client 91 perform processing to end the operation of the socket 600, and set various data in a state where transmission and reception are impossible. In addition, the server 90 performs processing for disconnecting the connection between the server 90 and the client 91.

図10は、図9に示すように、通信データの送受信処理のコネクション確立後の具体的な例を示すシーケンス図である。この例の送受信処理では、図10に示すように、クライアント91がステップS1003で送信された信号(p_cond_signal)をCPU101で動作するプログラムに一度戻して、この信号に従って256KBの2つの通信データを共有メモリ140に送信する。クライアント91は、2つのそれぞれの通信データを共有メモリ140の記憶領域上にコピーして書き込む処理を2回行う。   FIG. 10 is a sequence diagram showing a specific example after establishing a connection for communication data transmission / reception processing, as shown in FIG. In the transmission / reception processing of this example, as shown in FIG. 10, the client 91 returns the signal (p_cond_signal) transmitted in step S1003 once to the program operating on the CPU 101, and in accordance with this signal, two pieces of communication data of 256 KB are shared memory. 140. The client 91 performs a process of copying and writing two pieces of communication data on the storage area of the shared memory 140 twice.

クライアント91は、ステップS1004でステップS1003において共有メモリ140に通信データを書き込んだことを通知するための書込通知情報を、サーバ90に送信する。   In step S1004, the client 91 transmits write notification information for notifying that the communication data has been written to the shared memory 140 in step S1003 to the server 90.

一方、サーバ90は、ステップS1003においてクライアント91と同様に、送信された信号(p_cond_signal)をCPU101で動作するプログラムに一度戻し、ステップS1005で通信データの待ち状態となる。そして、サーバ90は、ステップS1004においてクライアント91から送信された書込通知情報を受信し、ステップS1006でこの書込通知情報に従って、512KBの通信データを共有メモリ140の記憶領域上からコピーして読み出す処理を行う。   On the other hand, similarly to the client 91, the server 90 returns the transmitted signal (p_cond_signal) once to the program operating on the CPU 101 in step S1003, and enters a waiting state for communication data in step S1005. The server 90 receives the write notification information transmitted from the client 91 in step S1004, and copies and reads 512 KB communication data from the storage area of the shared memory 140 according to the write notification information in step S1006. Process.

サーバ90は、ステップS1007でステップS1006において共有メモリ140から通信データを読み出したことを通知するための読出通知情報を、クライアント91に送信する。   In step S1007, the server 90 transmits, to the client 91, read notification information for notifying that the communication data has been read from the shared memory 140 in step S1006.

図11は、図9に示すように、通信データの送受信処理のコネクション確立後の他の具体的な例を示すシーケンス図である。この例の送受信処理では、図11に示すように、クライアント91がステップS1103で送信された信号(p_cond_signal)をCPU111で動作するプログラムに一度戻して、この信号に従って1.5MBの通信データを共有メモリ140に送信する。クライアント91は、この通信データを512KBのそれぞれ3つの同一容量の通信データに分割し、これらのうち2つの通信データを共有メモリ140の記憶領域上にコピーして書き込む処理を2回行う。   FIG. 11 is a sequence diagram illustrating another specific example after establishing a connection for communication data transmission / reception processing, as illustrated in FIG. 9. In the transmission / reception processing of this example, as shown in FIG. 11, the signal (p_cond_signal) transmitted by the client 91 in step S1103 is once returned to the program operating on the CPU 111, and 1.5 MB of communication data is transferred to the shared memory according to this signal. 140. The client 91 divides this communication data into three pieces of communication data of 512 KB each having the same capacity, and performs a process of copying and writing two pieces of communication data in the storage area of the shared memory 140 twice.

クライアント91は、ステップS1105でステップS1103において共有メモリ140に通信データを書き込んだことを通知するための書込通知情報を、それぞれ2回の書き込み処理毎にサーバ90に送信する。ここで、例えば共有メモリ140の容量が1MBの場合には、共有メモリ140の記憶領域が満たされ書き込む処理が不可能となるため、ステップS1104で通信データの待ち状態となる。   In step S1105, the client 91 transmits write notification information for notifying that the communication data has been written to the shared memory 140 in step S1103 to the server 90 every two write processes. Here, for example, when the capacity of the shared memory 140 is 1 MB, the storage area of the shared memory 140 is filled and writing processing becomes impossible, and communication data is waited in step S1104.

一方、サーバ90は、上述のステップS1103でクライアント91と同様に、送信された信号(p_cond_signal)をCPU101で動作するプログラムに一度戻す。そして、サーバ90は、ステップS1105においてクライアント91から送信された書込通知情報をそれぞれ受信し、ステップS1106でこの書込通知情報に従って、1つ目の通信データを共有メモリ140の記憶領域上からコピーして読み出す処理を行う。   On the other hand, the server 90 returns the transmitted signal (p_cond_signal) to the program operating on the CPU 101 once in the same manner as the client 91 in step S1103 described above. Then, the server 90 receives the write notification information transmitted from the client 91 in step S1105, and copies the first communication data from the storage area of the shared memory 140 according to the write notification information in step S1106. And read out.

サーバ90は、ステップS1107でステップS1106において共有メモリ140から通信データを読み出したことを通知するための読出通知情報を、クライアント91に送信する。   In step S <b> 1107, the server 90 transmits read notification information for notifying that the communication data has been read from the shared memory 140 in step S <b> 1106 to the client 91.

クライアント91は、ステップS1107においてサーバ90から送信された書込通知情報を受信し、これに応じて通信データの待ち状態を解除する。そして、クライアント91は、ステップS1108で共有メモリ140の記憶領域に書き込まれた通信データを消去した上で、残りの3つ目の通信データを共有メモリ140の記憶領域上にコピーして書き込む処理を行う。   The client 91 receives the write notification information transmitted from the server 90 in step S1107, and releases the communication data wait state accordingly. Then, the client 91 deletes the communication data written in the storage area of the shared memory 140 in step S1108 and then copies and writes the remaining third communication data on the storage area of the shared memory 140. Do.

クライアント91は、ステップS1109でステップS1108において共有メモリ140に通信データを書き込んだことを通知するための書込通知情報をサーバ90に送信する。   In step S1109, the client 91 transmits to the server 90 write notification information for notifying that communication data has been written in the shared memory 140 in step S1108.

図12は、図11に示すように、クライアント91で実行されるコネクション確立および切断の処理を示すシーケンス図である。これらの処理では、図12に示すように、マルチプロセッサシステム10の起動時にまず、クライアント91が、ステップS1201でメモリコントローラ102、ホスト−PCIブリッジ104を介して、共有メモリ140内で通信データを書き込むための記憶領域を確保する。そして、クライアント91は、ステップS1202、S1203でソケット600使用要求(socket)のデータをCPU111からメモリコントローラ102、ホスト−PCIブリッジ104に送信して初期化する。また、コネクションを確立し各種のデータが送受信可能な状態に設定する。   FIG. 12 is a sequence diagram showing connection establishment and disconnection processing executed by the client 91 as shown in FIG. In these processes, as shown in FIG. 12, when starting the multiprocessor system 10, first, the client 91 writes communication data in the shared memory 140 via the memory controller 102 and the host-PCI bridge 104 in step S1201. A storage area is secured. Then, the client 91 transmits the socket 600 use request (socket) data from the CPU 111 to the memory controller 102 and the host-PCI bridge 104 in steps S1202 and S1203, and initializes them. In addition, a connection is established and various data can be transmitted and received.

クライアント91は、ステップS1204で共有メモリ140内で通信データを書き込むための記憶領域を割り当てるための割り当て要求をメモリコントローラ102、ホスト−PCIブリッジ104に送信する。また、クライアント91は、ステップS1205で共有メモリ140を書き込みや読み出しなどのアクセス待ち状態に設定する。   In step S1204, the client 91 transmits an allocation request for allocating a storage area for writing communication data in the shared memory 140 to the memory controller 102 and the host-PCI bridge 104. In step S1205, the client 91 sets the shared memory 140 to an access waiting state such as writing or reading.

クライアント91は、ステップS1206でメモリコントローラ102、ホスト−PCIブリッジ104により共有メモリ140にアクセスし、通信データを書き込むための記憶領域を割り当てるための処理を行う。例えば、クライアント91は、共有メモリ140内の記憶領域のうち、データが書き込まれていない空き領域、またはデータが消去済みの領域を検出して、これらの検出した各領域から通信データを書き込むための領域を確保し、この確保した領域内の各アドレスなどを割り当てる処理を行う。クライアント91は、ステップS1206において記憶領域を割り当てた割り当て結果を、ステップS1207でメモリコントローラ102、ホスト−PCIブリッジ104によりCPU111に送信する。   In step S1206, the client 91 accesses the shared memory 140 via the memory controller 102 and the host-PCI bridge 104, and performs processing for allocating a storage area for writing communication data. For example, the client 91 detects a free area where data has not been written or an area where data has been erased from the storage areas in the shared memory 140 and writes communication data from each of these detected areas. An area is secured and a process for assigning each address in the secured area is performed. The client 91 transmits the allocation result of allocating the storage area in step S1206 to the CPU 111 by the memory controller 102 and the host-PCI bridge 104 in step S1207.

クライアント91は、ステップS1208でステップS1207において送信された割り当て結果や割り当てた各アドレスを通知するための割当通知情報を、サーバ90に送信する。そして、クライアント91は、ステップS1209で、サーバ90から送信された、サーバ90で同様に共有メモリ140内の記憶領域で割り当てられた割り当て結果や割り当てた各アドレスを通知するための割当通知情報を、受信する。   In step S1208, the client 91 transmits to the server 90 allocation notification information for notifying the allocation result transmitted in step S1207 and each allocated address. In step S1209, the client 91 sends the allocation notification information for notifying the allocation result allocated in the storage area in the shared memory 140 and the allocated addresses transmitted from the server 90 in step S1209. Receive.

クライアント91は、ステップS1210、S1211でソケット600を介して送信された信号(p_cond_signal)をCPU111で動作するプログラムに一度戻して、この信号に従って通信データを共有メモリ140に送信し、通信データを共有メモリ140に書き込む処理を行う。ここで、通信データは、共有メモリ140内の記憶領域のうち、ステップS1206において割り当てた領域に書き込まれる。   The client 91 once returns the signal (p_cond_signal) transmitted via the socket 600 in steps S1210 and S1211 to the program operating on the CPU 111, and transmits the communication data to the shared memory 140 according to this signal, and the communication data is transmitted to the shared memory. A process of writing to 140 is performed. Here, the communication data is written in the area allocated in step S1206 among the storage areas in the shared memory 140.

クライアント91は、ステップS1212でステップS1211において共有メモリ140に通信データを書き込んだことを通知するための書込通知情報を、ソケット600を介してサーバ90に送信する。   In step S <b> 1212, the client 91 transmits write notification information for notifying that communication data has been written in the shared memory 140 in step S <b> 1211 to the server 90 via the socket 600.

一方、サーバ90では、ステップS1210においてクライアント91と同様に、ソケット600を介して送信された信号(p_cond_signal)をCPU101で動作するプログラムに一度戻す。そして、サーバ90では、ステップS1211においてクライアント91から送信された書込通知情報を受信し、この書込通知情報に従って、通信データを共有メモリ140から読み出す処理が行われる。   On the other hand, the server 90 once returns the signal (p_cond_signal) transmitted via the socket 600 to the program operating on the CPU 101 in the same manner as the client 91 in step S1210. Then, the server 90 receives the write notification information transmitted from the client 91 in step S1211, and performs processing for reading the communication data from the shared memory 140 according to the write notification information.

サーバ90は、ステップS1213でステップS1211において共有メモリ140から通信データを読み出したことを通知するための読出通知情報を、ソケット600を介してクライアント91に送信する。   In step S1213, the server 90 transmits read notification information for notifying that the communication data has been read from the shared memory 140 in step S1211 to the client 91 via the socket 600.

クライアント91は、ステップS1214でサーバ90およびクライアント91間のコネクションを切断することを通知するための切断通知信号を、ソケット600を介してサーバ90に送信する。一方、サーバ90では、ステップS1215で切断通知信号を受信すると、これに応じてコネクションを切断することに応答することを通知するための応答通知信号を、ソケット600を介してクライアント91に送信する。   The client 91 transmits a disconnection notification signal for notifying the disconnection of the connection between the server 90 and the client 91 to the server 90 via the socket 600 in step S1214. On the other hand, when the server 90 receives the disconnection notification signal in step S1215, the server 90 transmits a response notification signal for notifying that it responds to disconnection to the client 91 via the socket 600.

クライアント91は、ステップS1216で共有メモリ140内の記憶領域を解放するための解放要求をメモリコントローラ102、ホスト−PCIブリッジ104に送信する。また、クライアント91は、ステップS1217で共有メモリ140を書き込みや読み出しなどのアクセス待ち状態に設定する。   In step S1216, the client 91 transmits a release request for releasing the storage area in the shared memory 140 to the memory controller 102 and the host-PCI bridge 104. In step S1217, the client 91 sets the shared memory 140 in an access waiting state such as writing or reading.

クライアント91は、ステップS1218でメモリコントローラ102、ホスト−PCIブリッジ104により共有メモリ140にアクセスし、ステップS1206において割り当てた記憶領域を解除し、解放するための処理を行う。クライアント91は、ステップS1218において記憶領域を解放した解放結果を、ステップS1219でメモリコントローラ102、ホスト−PCIブリッジ104によりCPU111に送信する。   In step S1218, the client 91 accesses the shared memory 140 via the memory controller 102 and the host-PCI bridge 104, and performs processing for releasing and releasing the storage area allocated in step S1206. The client 91 transmits the release result of releasing the storage area in step S1218 to the CPU 111 by the memory controller 102 and the host-PCI bridge 104 in step S1219.

クライアント91は、ステップS1220でソケット600の動作を終了する処理を行い、各種のデータを送受信不可能な状態に設定する。そして、処理を終了するための信号(p_cond_signal)をCPU101で動作するプログラムに戻して、この信号に従ってプログラムの実行を終了する。   In step S1220, the client 91 performs a process of terminating the operation of the socket 600, and sets various data in a state where transmission and reception are not possible. Then, a signal (p_cond_signal) for ending the process is returned to the program operating on the CPU 101, and the execution of the program is ended according to this signal.

図13は、ソケット600の動作を指示するためのソケット指示情報を記憶したテーブル1300を示す説明図である。このテーブル1300では、図13に示すように、複数種類の各ソケット指示情報と、各ソケット指示情報のそれぞれで指示されるソケット600の動作の内容の情報とが関連付けられて記憶されている。例えば、テーブル1300では、図13に示すように、ソケット指示情報である「sockfd」と、ソケット600の動作の内容を示す「ソケットディスクリプタ」とが関連付けらて記憶されている。また、他のソケット指示情報である「state」と、ソケット600の動作の内容を示す「ソケットステート」とが関連付けられて記憶されている。   FIG. 13 is an explanatory diagram showing a table 1300 that stores socket instruction information for instructing the operation of the socket 600. In this table 1300, as shown in FIG. 13, a plurality of types of socket instruction information and information on the operation content of the socket 600 indicated by each socket instruction information are stored in association with each other. For example, in the table 1300, as shown in FIG. 13, “sockfd” that is socket instruction information and “socket descriptor” that indicates the operation content of the socket 600 are stored in association with each other. Further, “state”, which is other socket instruction information, and “socket state” indicating the operation content of the socket 600 are stored in association with each other.

図14は、ソケット指示情報に従って共有メモリ140に対して行った処理の例を示す説明図である。サーバ90は、図14に示すように、共有メモリ140にアクセスし、共有メモリ140内の記憶領域から通信データを書き込むための領域を確保し、この確保した領域内の各アドレスなどを割り当てるための処理を行う。そして、サーバ90は、記憶領域を割り当てたことを示すソケット指示情報「local.buff_adrs」をソケット600を介してホスト−PCIブリッジ104によりCPU101に送信する。   FIG. 14 is an explanatory diagram illustrating an example of processing performed on the shared memory 140 in accordance with the socket instruction information. As shown in FIG. 14, the server 90 accesses the shared memory 140, secures an area for writing communication data from the storage area in the shared memory 140, and allocates each address in the secured area. Process. Then, the server 90 transmits socket instruction information “local.buff_adrs” indicating that the storage area has been allocated to the CPU 101 via the socket 600 by the host-PCI bridge 104.

また、サーバ90は、図14に示すように、共有メモリ140にアクセスし、共有メモリ140内の記憶領域から、クライアント91により書き込まれた通信データを読み出すための領域を確保し、この確保した領域内の各アドレスなどを割り当てるための処理を行う。そして、サーバ90は、記憶領域を割り当てたことを示すソケット指示情報「remote.buff_adrs」をソケット600を介してホスト−PCIブリッジ104によりCPU101に送信する。   Further, as shown in FIG. 14, the server 90 accesses the shared memory 140, secures an area for reading communication data written by the client 91 from the storage area in the shared memory 140, and this secured area. The process for allocating each address in is performed. Then, the server 90 transmits socket instruction information “remote.buff_adrs” indicating that the storage area has been allocated to the CPU 101 via the socket 600 by the host-PCI bridge 104.

一方、クライアント91は、図14に示すように、共有メモリ140にアクセスし、共有メモリ140内の記憶領域から通信データを書き込むための領域を確保し、この確保した領域内の各アドレスなどを割り当てるための処理を行う。そして、クライアント91は、記憶領域を割り当てたことを示すソケット指示情報「local.buff_adrs」をソケット600を介してホスト−PCIブリッジ114によりCPU111に送信する。   On the other hand, as shown in FIG. 14, the client 91 accesses the shared memory 140, secures an area for writing communication data from a storage area in the shared memory 140, and assigns each address in the secured area. Process. Then, the client 91 transmits socket instruction information “local.buff_adrs” indicating that the storage area has been allocated to the CPU 111 via the socket 600 by the host-PCI bridge 114.

また、クライアント91は、図14に示すように、共有メモリ140にアクセスし、共有メモリ140内の記憶領域から、サーバ90により書き込まれた通信データを読み出すための領域を確保し、この確保した領域内の各アドレスなどを割り当てるための処理を行う。そして、クライアント91は、記憶領域を割り当てたことを示すソケット指示情報「remote.buff_adrs」をソケット600を介してホスト−PCIブリッジ114によりCPU111に送信する。   Further, as shown in FIG. 14, the client 91 accesses the shared memory 140, secures an area for reading communication data written by the server 90 from the storage area in the shared memory 140, and this secured area. The process for allocating each address in is performed. Then, the client 91 transmits socket instruction information “remote.buff_adrs” indicating that the storage area has been allocated to the CPU 111 via the socket 600 by the host-PCI bridge 114.

図15は、ソケット指示情報に従って共有メモリ140に対して行った処理の他の例を示す説明図である。図15に示すように、例えばサーバ90やクライアント91などが共有メモリ140にアクセスし、共有メモリ140内の記憶領域から通信データを書き込むための複数の領域を確保し、これらの確保したそれぞれの領域内の各アドレスなどを割り当てるための処理を行う。   FIG. 15 is an explanatory diagram illustrating another example of processing performed on the shared memory 140 in accordance with socket instruction information. As shown in FIG. 15, for example, the server 90 or the client 91 accesses the shared memory 140 and secures a plurality of areas for writing communication data from the storage area in the shared memory 140, and each of these secured areas The process for allocating each address in is performed.

そして、図15に示すように、1つ目(メモリウィンドウ1)の記憶領域を割り当てたことを示すソケット指示情報をソケット600を介してCPU101に送信する。ソケット指示情報には、割り当てた領域の容量(256MB)を示す「local.buff_size」と、割り当てた領域のアドレスを示す「local.buff_adrs」とが含まれている。   Then, as shown in FIG. 15, socket instruction information indicating that the first (memory window 1) storage area has been allocated is transmitted to the CPU 101 via the socket 600. The socket instruction information includes “local.buff_size” indicating the capacity of the allocated area (256 MB) and “local.buff_adrs” indicating the address of the allocated area.

また、2つ目(メモリウィンドウ2)の記憶領域を割り当てたことを示すソケット指示情報をソケット600を介してCPU101に送信する。ソケット指示情報には、割り当てた領域の容量(512MB)を示す「local.buff_size」と、割り当てた領域のアドレスを示す「local.buff_adrs」とが含まれている。   Also, socket instruction information indicating that the second (memory window 2) storage area has been allocated is transmitted to the CPU 101 via the socket 600. The socket instruction information includes “local.buff_size” indicating the capacity of the allocated area (512 MB) and “local.buff_adrs” indicating the address of the allocated area.

また、3つ目(メモリウィンドウ3)の記憶領域を割り当てたことを示すソケット指示情報をソケット600を介してCPU101に送信する。ソケット指示情報には、割り当てた領域の容量(128MB)を示す「local.buff_size」と、割り当てた領域のアドレスを示す「local.buff_adrs」とが含まれている。   Also, socket instruction information indicating that the third (memory window 3) storage area has been allocated is transmitted to the CPU 101 via the socket 600. The socket instruction information includes “local.buff_size” indicating the capacity (128 MB) of the allocated area and “local.buff_adrs” indicating the address of the allocated area.

図16は、共有メモリ140内の記憶領域で割り当てられたメモリウィンドウのデータ構成を示す説明図である。このメモリウィンドウには、図16(a)に示すように、マジックナンバーと、バッファサイズと、ライトポインタと、リードポインタと、リングバッファの各データが含まれている。マジックナンバーは、メモリウィンドウの先頭位置を識別するための識別情報である。   FIG. 16 is an explanatory diagram showing the data structure of the memory window allocated in the storage area in the shared memory 140. As shown in FIG. 16A, the memory window includes magic number, buffer size, write pointer, read pointer, and ring buffer data. The magic number is identification information for identifying the head position of the memory window.

バッファサイズは、メモリウィンドウの共有メモリ140内での全体の容量を示す例えばバイト数などのデータである。ライトポインタは、リングバッファ内での通信データを書き込む際の開始位置を示すポインタであり、リングバッファ内でのオフセットアドレスが含まれている。リードポインタは、リングバッファ内での通信データを読み出す際の開始位置を示すポインタであり、リングバッファ内でのオフセットアドレスが含まれている。   The buffer size is, for example, data such as the number of bytes indicating the total capacity in the shared memory 140 of the memory window. The write pointer is a pointer indicating a start position when writing communication data in the ring buffer, and includes an offset address in the ring buffer. The read pointer is a pointer indicating a starting position when reading communication data in the ring buffer, and includes an offset address in the ring buffer.

メモリウィンドウに含まれるリングバッファは、記憶領域内の開始位置が空きとなっている場合には、通信データの内容をリングバッファの領域内に全て書き込むと、これに応じて、リングバッファ内の先頭位置に戻って書き込み処理を続けて行うことが可能であり、循環的に書き込み処理が可能なバッファである。リングバッファには、図16(b)に示すように、ソケット600を介して送受信する際の複数にそれぞれ分けられたデータ群であるパケットが含まれている。   If the start position in the storage area of the ring buffer included in the memory window is empty, writing the entire contents of the communication data in the ring buffer area will result in the start of the ring buffer. The buffer can return to the position and continue the writing process, and can perform the writing process cyclically. As shown in FIG. 16 (b), the ring buffer includes a packet that is a data group divided into a plurality of groups when transmitting and receiving via the socket 600.

それぞれの各パケットには、図16(c)に示すように、パケットデータサイズと、パケットデータが含まれている。パケットデータサイズは、パケットデータ全体の容量を示す例えばバイト数などのデータであり、4byteから成る。パケットデータには、通信データの内容が複数の各パケット毎に分けて含まれている。   Each packet includes a packet data size and packet data as shown in FIG. The packet data size is data such as the number of bytes indicating the capacity of the entire packet data, and is composed of 4 bytes. The packet data includes the contents of communication data separately for each of a plurality of packets.

図17は、共有メモリ140内のリングバッファに通信データを用いて行った処理を示す説明図である。図17に示すように、まず、(1)で例えばサーバ90やクライアント91などが共有メモリ140にアクセスし、共有メモリ140のリングバッファを初期状態に設定する。即ち、ライトポインタおよびリードポインタの位置をリングバッファ内で先頭位置に設定する処理を行う。   FIG. 17 is an explanatory diagram showing processing performed using communication data in the ring buffer in the shared memory 140. As shown in FIG. 17, first, in (1), for example, the server 90 or the client 91 accesses the shared memory 140 and sets the ring buffer of the shared memory 140 to the initial state. That is, processing for setting the positions of the write pointer and the read pointer to the head position in the ring buffer is performed.

また、(2)で、通信データの内容を含む1つ目のパケットをリングバッファに書き込み、その後、これに伴ってライトポインタの位置をこのパケットの終端位置に移動させる。ここで、通信データの内容を書き込む処理は、4byte単位毎に行う。5byteなどのデータを書き込むときには2つの4byte単位毎に8byte分まで書き込む処理を行う。(3)で、続けて通信データの内容を含む2つ目のパケットを書き込み、その後、これに伴ってライトポインタの位置をこのパケットの終端位置に移動させる。   In (2), the first packet including the contents of the communication data is written to the ring buffer, and then the position of the write pointer is moved to the end position of this packet. Here, the process of writing the contents of the communication data is performed every 4 bytes. When writing data such as 5 bytes, a process of writing up to 8 bytes is performed every two 4-byte units. In (3), the second packet including the contents of the communication data is continuously written, and then the position of the write pointer is moved to the end position of this packet.

次に、(4)で、他のサーバ90やクライアント91などが共有メモリ140にアクセスし、共有メモリ140のリングバッファから、上述の(1)で書き込まれた1つ目のパケットを読み出す処理を行う。このとき、この読み出したパケットを消去し、その後、これに伴ってリードポインタの位置を2つ目のパケットの開始位置に移動させる。   Next, in (4), another server 90 or client 91 accesses the shared memory 140, and reads the first packet written in (1) described above from the ring buffer of the shared memory 140. Do. At this time, the read packet is erased, and then the position of the read pointer is moved to the start position of the second packet.

また、(5)で、サーバ90やクライアント91などが共有メモリ140にアクセスし、通信データの内容を含む3つ目のパケットをリングバッファに書き込む処理を行う。このとき、通信データの内容を書き込んでいき、リングバッファの領域内に全て書き込んだ場合には、リングバッファ内の先頭位置に戻って上述の(4)で消去した領域に続けて書き込む処理を行う。その後、これに伴ってライトポインタの位置も同様に、リングバッファ内の先頭位置に戻ってこのパケットの終端位置に移動させる。   In (5), the server 90, the client 91, and the like access the shared memory 140 and perform processing for writing the third packet including the contents of the communication data to the ring buffer. At this time, the contents of the communication data are written, and when all the data is written in the area of the ring buffer, the process returns to the head position in the ring buffer and the writing process is continued after the area erased in the above (4). . Thereafter, the position of the write pointer is similarly returned to the head position in the ring buffer and moved to the end position of this packet.

(6)で、通信データの内容を含む4つ目のパケットを書き込み、その後、これに伴ってライトポインタの位置をこのパケットの終端位置に移動させる。ここで、通信データの内容を書き込んでいき、リングバッファの領域内に空きが残り4byteとなった場合には、この時点でリングバッファ内がフル状態として、書き込み不可に設定する。   In (6), the fourth packet including the contents of the communication data is written, and then the position of the write pointer is moved to the end position of this packet. Here, the contents of the communication data are written, and when there is a remaining 4 bytes in the ring buffer area, the ring buffer is full at this point, and writing is disabled.

図18は、複数のプロセッサノード100、110、120のうち、例えばプロセッサノード100、110が共有メモリ140に通信データを用いて行った処理を示す説明図である。図18に示すように、まず、プロセッサノード100のCPU101は、ステップS1801で共有メモリ140にアクセスして、リングバッファ内で先頭位置(0xE800 1008)を指定する。そして、CPU101は、1つ目の通信データをリングバッファに書き込み、その後、これに伴ってライトポインタの位置をこの通信データの終端に含まれるパケットの終端位置(0x0000 FFF0)に移動させる。   FIG. 18 is an explanatory diagram showing processing performed by the processor nodes 100, 110, for example, using the communication data for the shared memory 140 among the plurality of processor nodes 100, 110, 120. As shown in FIG. 18, first, the CPU 101 of the processor node 100 accesses the shared memory 140 in step S1801 and designates the head position (0xE800 1008) in the ring buffer. Then, the CPU 101 writes the first communication data in the ring buffer, and then moves the position of the write pointer to the end position (0x0000 FFF0) of the packet included at the end of the communication data.

一方、プロセッサノード110のCPU111は、ステップS1802で共有メモリ140にアクセスし、共有メモリ140のリングバッファから、ステップS1801において書き込まれた通信データをパケット毎に順次読み出す処理を行う。このとき、この読み出したパケットを消去し、その後、これに伴ってリードポインタの位置を、この読み出したパケットの次のパケットの開始位置に移動させる。   On the other hand, the CPU 111 of the processor node 110 accesses the shared memory 140 in step S1802, and sequentially reads out the communication data written in step S1801 from the ring buffer of the shared memory 140 for each packet. At this time, the read packet is erased, and then the position of the read pointer is moved to the start position of the packet next to the read packet.

CPU111は、ステップS1803、S1804で共有メモリ140に続けてアクセスし、共有メモリ140のリングバッファから、ステップS1801において書き込まれた通信データをパケット毎に順次読み出す処理を繰り返し行っていく。このとき、これらの読み出した各パケットをそれぞれ消去し、その後、これに伴ってリードポインタの位置を、これらの読み出したパケットの次のパケットの開始位置に移動させる。   The CPU 111 continuously accesses the shared memory 140 in steps S1803 and S1804, and repeats the process of sequentially reading the communication data written in step S1801 from the ring buffer of the shared memory 140 for each packet. At this time, each of the read packets is erased, and then the position of the read pointer is moved to the start position of the packet next to the read packets.

次に、CPU101は、ステップS1805で共有メモリ140にアクセスして、リングバッファ内で先頭位置(0xE800 1008)を指定する。そして、CPU101は、2つ目の通信データをリングバッファに書き込み、その後、これに伴ってライトポインタの位置をこの通信データの終端に含まれるパケットの終端位置(0x0001 0010)に移動させる。   Next, the CPU 101 accesses the shared memory 140 in step S1805 and designates the head position (0xE800 1008) in the ring buffer. Then, the CPU 101 writes the second communication data in the ring buffer, and then moves the position of the write pointer to the end position (0x0001 0010) of the packet included at the end of the communication data.

CPU111は、ステップS1806、S1807で共有メモリ140に続けてアクセスし、共有メモリ140のリングバッファから、ステップS1806、S1807において書き込まれた通信データをパケット毎に順次読み出す処理を行う。このとき、これらの読み出した各パケットをそれぞれ消去し、その後、これに伴ってリードポインタの位置を、これらの読み出したパケットの次のパケットの開始位置に移動させる。   The CPU 111 sequentially accesses the shared memory 140 in steps S1806 and S1807, and sequentially reads out the communication data written in steps S1806 and S1807 from the ring buffer of the shared memory 140 for each packet. At this time, each of the read packets is erased, and then the position of the read pointer is moved to the start position of the packet next to the read packets.

図19は、複数のプロセッサノード100、110、120のうち、例えばプロセッサノード100、110が共有メモリ140に通信データを用いて行った他の処理を示す説明図である。図19に示すように、まず、プロセッサノード100のCPU101は、ステップS1901、S1902で共有メモリ140にアクセスして、共有メモリ140内の2つのリングバッファ内でそれぞれ先頭位置(0xE800 1008)、(0xE800 100A)を指定する。そして、CPU101は、2つの通信データをこれらの各リングバッファにそれぞれ書き込み、その後、これに伴って各ライトポインタの位置をこれらの各通信データの終端に含まれるパケットの終端位置(0x0000 FFF0)、(0x0000 0000)に移動させる。   FIG. 19 is an explanatory diagram showing another process performed by the processor nodes 100, 110, for example, using the communication data in the shared memory 140 among the plurality of processor nodes 100, 110, 120. As shown in FIG. 19, first, the CPU 101 of the processor node 100 accesses the shared memory 140 in steps S1901 and S1902 and starts the head positions (0xE800 1008) and (0xE800) in the two ring buffers in the shared memory 140, respectively. 100A). Then, the CPU 101 writes two pieces of communication data in each of these ring buffers, and thereafter, the position of each write pointer is changed to the end position (0x0000 FFF0) of the packet included in the end of each piece of communication data. Move to (0x0000 0000).

一方、プロセッサノード110のCPU111は、ステップS1903で共有メモリ140にアクセスし、共有メモリ140のリングバッファから、ステップS1901、S1902において書き込まれた通信データをパケット毎に順次読み出す処理を行う。このとき、これらの読み出した各パケットをそれぞれ消去し、その後、これに伴ってリードポインタの位置を、これらの読み出したパケットの次のパケットの開始位置に移動させる。   On the other hand, the CPU 111 of the processor node 110 accesses the shared memory 140 in step S1903, and sequentially reads out the communication data written in steps S1901 and S1902 from the ring buffer of the shared memory 140 for each packet. At this time, each of the read packets is erased, and then the position of the read pointer is moved to the start position of the packet next to the read packets.

次に、CPU101は、ステップS1904、S1906で共有メモリ140にアクセスして、共有メモリ140内の2つのリングバッファ内でそれぞれ先頭位置(0xE800 1008)、(0xE800 100A)を指定する。そして、CPU101は、2つの通信データをこれらの各リングバッファにそれぞれ書き込み、その後、これに伴って各ライトポインタの位置をこれらの各通信データの終端に含まれるパケットの終端位置(0x0000 0010)、(0x0000 0001)に移動させる。   Next, the CPU 101 accesses the shared memory 140 in steps S1904 and S1906, and designates the top positions (0xE800 1008) and (0xE800 100A) in the two ring buffers in the shared memory 140, respectively. Then, the CPU 101 writes the two pieces of communication data in each of these ring buffers, and thereafter, the position of each write pointer is associated with the end position (0x0000 0010) of the packet included in the end of each piece of communication data. Move to (0x0000 0001).

ここで、上述のステップS1904およびS1906での処理の間、ステップS1905でCPU111は、共有メモリ140にアクセスし、共有メモリ140のリングバッファから、ステップS1904、S1906において書き込まれた通信データをパケット毎に順次読み出す処理を行う。このとき、これらの読み出した各パケットをそれぞれ消去し、その後、これに伴ってリードポインタの位置を、これらの読み出したパケットの次のパケットの開始位置に移動させる。   Here, during the processing in steps S1904 and S1906 described above, the CPU 111 accesses the shared memory 140 in step S1905, and the communication data written in steps S1904 and S1906 from the ring buffer of the shared memory 140 for each packet. The process of reading sequentially is performed. At this time, each of the read packets is erased, and then the position of the read pointer is moved to the start position of the packet next to the read packets.

また、CPU111は、ステップS1907で共有メモリ140に続けてアクセスし、共有メモリ140のリングバッファから、ステップS1904、S1906において書き込まれた通信データをパケット毎に順次読み出す処理を繰り返し行っていく。このとき、これらの読み出した各パケットをそれぞれ消去し、その後、これに伴ってリードポインタの位置を、これらの読み出したパケットの次のパケットの開始位置に移動させる。   Further, the CPU 111 continuously accesses the shared memory 140 in step S1907, and repeats the process of sequentially reading the communication data written in steps S1904 and S1906 from the ring buffer of the shared memory 140 for each packet. At this time, each of the read packets is erased, and then the position of the read pointer is moved to the start position of the packet next to the read packets.

以上のように、第1の実施形態におけるマルチプロセッサシステム10では、各プロセッサノード100、110、120がネットワークを透過するソケット600で互いに接続されて、双方向に通信データが送受信可能となっている。共有メモリ140に対して通信データを用いて書き込みまたは読み出しの各処理を行う際には、クライアント91のCPU111が信号に従って通信データを共有メモリ140に送信し、通信データを共有メモリ140に書き込む処理を行う。そして、CPU111は、ソケット600を介してサーバ90に書込通知情報を送信し、共有メモリ140に通信データを書き込んだことを通知する。   As described above, in the multiprocessor system 10 according to the first embodiment, the processor nodes 100, 110, and 120 are connected to each other through the socket 600 that passes through the network, and communication data can be transmitted and received in both directions. . When performing writing or reading processing on the shared memory 140 using communication data, the CPU 111 of the client 91 transmits the communication data to the shared memory 140 according to a signal, and writes the communication data to the shared memory 140. Do. Then, the CPU 111 transmits write notification information to the server 90 via the socket 600 and notifies that the communication data has been written to the shared memory 140.

一方、サーバ90は、この書込通知情報に従って通信データを共有メモリ140から読み出す処理を行う。また、サーバ90は、ソケット600を介してクライアント91に読出通知情報を送信し、共有メモリ140から通信データを読み出したことを通知する。   On the other hand, the server 90 performs processing for reading communication data from the shared memory 140 in accordance with the write notification information. In addition, the server 90 transmits read notification information to the client 91 via the socket 600 and notifies that the communication data has been read from the shared memory 140.

このため、各プロセッサノード100、110、120の間をソケット600で接続して、各プロセッサノード100、110、120で動作しているプログラム上のプロセスの間で、同一の共有メモリ140を共有利用することによって、この共有メモリ140が分散共有メモリとして機能する。この共有メモリ140は、複数のプロセッサノード間で利用できるというソケットの特徴と、広帯域であるという共有メモリ140の特徴とをそれぞれ有し、通信処理で発生する通信オーバーヘッドを低減し、高速通信を可能とすることができる。   For this reason, the processor nodes 100, 110, and 120 are connected to each other through the socket 600, and the same shared memory 140 is shared and used among the processes on the program running on the processor nodes 100, 110, and 120. As a result, the shared memory 140 functions as a distributed shared memory. The shared memory 140 has a socket feature that can be used between a plurality of processor nodes, and a shared memory 140 feature that has a wide bandwidth, thereby reducing communication overhead caused by communication processing and enabling high-speed communication. It can be.

〔第2の実施形態〕
以下、本発明に係る第2の実施形態をもって説明する。図2は、本発明におけるプロセッサ間通信装置の1つの例であるマルチプロセッサシステム10の第2の実施形態での全体構成を示す説明図である。このマルチプロセッサシステム10は、複数のプロセッサノード200、210、220と、これらの各プロセッサノード200、210、220間でデータなどの送受信を行うためのEthernet(登録商標)230と、各プロセッサノード200、210、220のそれぞれをデータなどの送受信が可能に接続するPCIバス240とから構成されている。
[Second Embodiment]
Hereinafter, a second embodiment according to the present invention will be described. FIG. 2 is an explanatory diagram showing the overall configuration of the multiprocessor system 10 as an example of the inter-processor communication apparatus according to the present invention in the second embodiment. The multiprocessor system 10 includes a plurality of processor nodes 200, 210, and 220, an Ethernet (registered trademark) 230 for transmitting and receiving data between the processor nodes 200, 210, and 220, and the processor nodes 200. , 210, and 220 are connected to a PCI bus 240 that connects and transmits data.

プロセッサノード200は、CPU201と、メモリコントローラ202と、メインメモリ203と、ホスト―PCIブリッジ204と、Ethernet(登録商標)カード205とを備えている。これらの各構成要素は、第1の実施形態におけるプロセッサノード100が備えているCPU101、メモリコントローラ102、メインメモリ103、ホスト―PCIブリッジ104、Ethernet(登録商標)カード105と同様の機能を有しており説明を省略する。   The processor node 200 includes a CPU 201, a memory controller 202, a main memory 203, a host-PCI bridge 204, and an Ethernet (registered trademark) card 205. Each of these components has the same functions as the CPU 101, the memory controller 102, the main memory 103, the host-PCI bridge 104, and the Ethernet (registered trademark) card 105 included in the processor node 100 in the first embodiment. The description is omitted.

また、プロセッサノード200は、上述の各構成要素に加えて、PCIバス240に接続され、このPCIバス240を介して外部との間でデータの送受信を行うPCI−PCIブリッジ206を備えている。PCI−PCIブリッジ206は、例えばプロセッサノード200内で、ホスト―PCIブリッジ204およびPCIバス240間に直接接続され、CPU201に対してPCIバス240を介して外部との間でデータの送受信を行う。   The processor node 200 includes a PCI-PCI bridge 206 that is connected to the PCI bus 240 and transmits / receives data to / from the outside via the PCI bus 240 in addition to the above-described components. The PCI-PCI bridge 206 is directly connected between the host-PCI bridge 204 and the PCI bus 240 in the processor node 200, for example, and transmits / receives data to / from the CPU 201 via the PCI bus 240.

プロセッサノード210、220は、プロセッサノード200と同様の構成となっており、CPU201、メモリコントローラ202、メインメモリ203、ホスト―PCIブリッジ204、Ethernet(登録商標)カード205と同様の機能を有するCPU211、221、メモリコントローラ212、222、メインメモリ213、223、ホスト―PCIブリッジ214、224、Ethernet(登録商標)カード215、225を備えている。   The processor nodes 210 and 220 have the same configuration as the processor node 200, and the CPU 211, the memory controller 202, the main memory 203, the host-PCI bridge 204, and the CPU 211 having the same functions as the Ethernet (registered trademark) 205, 221, memory controllers 212 and 222, main memories 213 and 223, host-PCI bridges 214 and 224, and Ethernet (registered trademark) cards 215 and 225.

そして、図示していないが、第2の実施形態においてもマルチプロセッサシステム10では、各プロセッサノード200、210、220がネットワークを透過するソケット600で互いに接続されて、双方向に通信データが送受信可能となっている。   Although not shown, in the second embodiment as well, in the multiprocessor system 10, the processor nodes 200, 210, and 220 are connected to each other through a socket 600 that passes through the network, and communication data can be transmitted and received in both directions. It has become.

図3は、メインメモリ203の記憶領域の使用状態を示す説明図である。この第2の実施形態では、図3に示すように、メインメモリ203、213、223内の記憶領域の一部を用いて共有メモリとして利用する。このような構成とすることによって、上述の第1の実施形態において単一の共有メモリ140を各プロセッサノード100、110、120と別個に設ける構成と比較して、コストの低減を図ることが可能となる。   FIG. 3 is an explanatory diagram showing the usage state of the storage area of the main memory 203. In the second embodiment, as shown in FIG. 3, a part of the storage area in the main memories 203, 213, and 223 is used as a shared memory. By adopting such a configuration, it is possible to reduce the cost as compared with the configuration in which the single shared memory 140 is provided separately from each processor node 100, 110, 120 in the first embodiment described above. It becomes.

〔第3の実施形態〕
以下、本発明に係る第3の実施形態をもって説明する。図4は、本発明におけるプロセッサ間通信装置の1つの例であるマルチプロセッサシステム10の第3の実施形態での全体構成を示す説明図である。このマルチプロセッサシステム10は、複数のプロセッサノード300、310、320と、これらの各プロセッサノード300、310、320間でデータなどの送受信を行うためのEthernet(登録商標)330と、各プロセッサノード300、310、320のそれぞれをデータなどの送受信が可能に接続するPCI−Expressスイッチ340とから構成されている。
[Third Embodiment]
Hereinafter, a third embodiment according to the present invention will be described. FIG. 4 is an explanatory diagram showing the overall configuration of the multiprocessor system 10 as an example of the inter-processor communication apparatus according to the present invention in the third embodiment. The multiprocessor system 10 includes a plurality of processor nodes 300, 310, and 320, an Ethernet (registered trademark) 330 for transmitting and receiving data between the processor nodes 300, 310, and 320, and each processor node 300. , 310, and 320 are configured by a PCI-Express switch 340 that connects data and the like so that data can be transmitted and received.

プロセッサノード300は、CPU301と、メモリコントローラ302と、メインメモリ303と、ホスト―PCIブリッジ304と、Ethernet(登録商標)カード305とを備えている。これらの各構成要素は、第1の実施形態におけるプロセッサノード100が備えているCPU101、メモリコントローラ102、メインメモリ103、ホスト―PCIブリッジ104、Ethernet(登録商標)カード105と同様の機能を有しており説明を省略する。   The processor node 300 includes a CPU 301, a memory controller 302, a main memory 303, a host-PCI bridge 304, and an Ethernet (registered trademark) card 305. Each of these components has the same functions as the CPU 101, the memory controller 102, the main memory 103, the host-PCI bridge 104, and the Ethernet (registered trademark) card 105 included in the processor node 100 in the first embodiment. The description is omitted.

プロセッサノード310、320は、プロセッサノード300と同様の構成となっており、CPU301、メモリコントローラ302、メインメモリ303、ホスト―PCIブリッジ304、Ethernet(登録商標)カード305と同様の機能を有するCPU311、321、メモリコントローラ312、322、メインメモリ313、323、ホスト―PCIブリッジ314、324、Ethernet(登録商標)カード315、325を備えている。   The processor nodes 310 and 320 have the same configuration as the processor node 300, and the CPU 311 has the same functions as the CPU 301, the memory controller 302, the main memory 303, the host-PCI bridge 304, and the Ethernet (registered trademark) card 305. 321, memory controllers 312 and 322, main memories 313 and 323, host-PCI bridges 314 and 324, and Ethernet (registered trademark) cards 315 and 325.

そして、図示していないが、第3の実施形態においてもマルチプロセッサシステム10では、各プロセッサノード300、310、320がネットワークを透過するソケット600で互いに接続されて、双方向に通信データが送受信可能となっている。   Although not shown, in the multiprocessor system 10 also in the third embodiment, the processor nodes 300, 310, and 320 are connected to each other by a socket 600 that passes through the network, and communication data can be transmitted and received bidirectionally. It has become.

この第3の実施形態では、メインメモリ303、313、323内の記憶領域の一部を用いて共有メモリとして利用する。このような構成とすることによって、上述の第1の実施形態において単一の共有メモリ140を各プロセッサノード100、110、120と別個に設ける構成と比較して、コストの低減を図ることが可能となる。   In the third embodiment, a part of the storage area in the main memories 303, 313, and 323 is used as a shared memory. By adopting such a configuration, it is possible to reduce the cost as compared with the configuration in which the single shared memory 140 is provided separately from each processor node 100, 110, 120 in the first embodiment described above. It becomes.

〔他の実施形態〕
上述の実施形態において、ソケット600を介して書込通知情報を送信することによって、共有メモリ140に通信データを書き込んだことを通知しているが、共有メモリ140に書き込まれた通信データのデータ量が所定量に達した場合に、通知するようにしても良い。
[Other Embodiments]
In the above-described embodiment, the write notification information is transmitted via the socket 600 to notify that the communication data has been written to the shared memory 140. However, the data amount of the communication data written to the shared memory 140 May be notified when the amount reaches a predetermined amount.

この場合には、プロセッサノード100、110、120を始めとする各プロセッサノードが予め共有メモリ140に書き込まれたデータ量を検出する検出部を備え、共有メモリ140への通信データの書き込み処理が開始されると、これに応じて書き込まれたデータ量を検出する。そして、このデータ量が予め設定された所定量に達すると、通信データが書き込まれたこと、および書き込まれたデータ量を通知するデータ量通知情報を生成し、ソケット600を介して送信する。   In this case, each of the processor nodes including the processor nodes 100, 110, and 120 includes a detection unit that detects the amount of data written in the shared memory 140 in advance, and the process of writing communication data to the shared memory 140 is started. When this is done, the amount of data written is detected accordingly. When this data amount reaches a predetermined amount set in advance, data amount notification information for notifying that the communication data has been written and the written data amount is generated and transmitted via the socket 600.

また、上述の実施形態において、プロセッサノード100、110、120を始めとする各プロセッサノードが、共有メモリ140に書き込まれた通信データのデータ量や、メモリウィンドウに含まれるリングバッファの空きの領域が例えば4byteの所定量まで減少した場合など、通知情報で通知する条件をユーザの要望に応じて、任意に設定することが可能であっても良い。   In the above-described embodiment, each processor node including the processor nodes 100, 110, and 120 has the amount of communication data written in the shared memory 140 and the free area of the ring buffer included in the memory window. For example, when it is reduced to a predetermined amount of 4 bytes, it may be possible to arbitrarily set a condition for notification by notification information according to a user's request.

また、本発明の上記機能は、C、C++、Java(登録商標)、Java(登録商標)Applet、Java(登録商標)Script、Perl、Rubyなどのレガシープログラミング言語、オブジェクト指向プログラミング言語などで記述された装置実行可能なプログラムにより実現でき、装置可読な記録媒体に格納して頒布することができる。   The functions of the present invention are described in legacy programming languages such as C, C ++, Java (registered trademark), Java (registered trademark) Applet, JavaScript (registered trademark) Script, Perl, and Ruby, and object-oriented programming languages. It can be realized by a program executable by the apparatus, and can be stored in a device-readable recording medium and distributed.

これまで本発明を図1〜図20に示した第1〜第3の実施形態をもって説明してきたが、本発明はこれに限定されるものではない。他の実施の形態、追加、変更、削除など、本発明の要旨を変更しない範囲内で変更することができ、いずれの態様においても本発明の作用・効果を奏する限り、本発明の範囲に含まれるものである。   The present invention has been described with the first to third embodiments shown in FIGS. 1 to 20, but the present invention is not limited to this. Other embodiments, additions, modifications, deletions, and the like can be changed without departing from the scope of the present invention, and any aspect is included in the scope of the present invention as long as the operations and effects of the present invention are exhibited. It is what

10…マルチプロセッサシステム、100、110、120、200、210、220、300、310、320…プロセッサノード、130、230、330…Ethernet(登録商標)、140…共有メモリ、240…PCIバス、340…PCI−Expressスイッチ DESCRIPTION OF SYMBOLS 10 ... Multiprocessor system, 100, 110, 120, 200, 210, 220, 300, 310, 320 ... Processor node, 130, 230, 330 ... Ethernet (registered trademark), 140 ... Shared memory, 240 ... PCI bus, 340 ... PCI-Express switch

特許第3743381号公報Japanese Patent No. 3743381

Claims (10)

第1および第2のプロセッサノードから構成され、前記第1および第2のプロセッサノードのそれぞれからアクセスすることが可能に共有して設けられた共有メモリを備えたプロセッサ間通信装置において、
前記第1のプロセッサノードで動作しているプログラムに従って、通信データを前記共有メモリに書き込む書込手段と、
前記書込手段により前記通信データが前記共有メモリに書き込まれたことを通知する書込通知情報を、ソケット通信により前記第2のプロセッサノードに送信する第1の通知手段と、
前記第1の通知手段により送信された前記書込通知情報に応じて、前記共有メモリから通信データを読み出す読出手段と、
前記読出手段により前記通信データが読み出されたことを通知する読出通知情報を、前記ソケット通信により前記第1のプロセッサノードに送信する第2の通知手段と
を備える、プロセッサ間通信装置。
In an inter-processor communication device comprising a shared memory that is configured by first and second processor nodes and is provided so as to be accessible from each of the first and second processor nodes.
Writing means for writing communication data to the shared memory in accordance with a program running on the first processor node;
First notification means for transmitting write notification information for notifying that the communication data has been written to the shared memory by the writing means to the second processor node by socket communication;
Reading means for reading communication data from the shared memory in response to the write notification information transmitted by the first notification means;
An inter-processor communication device comprising: second notification means for transmitting read notification information for notifying that the communication data has been read by the reading means to the first processor node by the socket communication.
前記共有メモリは、
前記通信データに対して、循環的に書き込み処理を行うことが可能なリングバッファと、
前記リングバッファ内での通信データを書き込む際の開始位置を示すライトポインタと、
前記リングバッファ内での通信データを読み出す際の開始位置を示すリードポインタとを含む、請求項1に記載のプロセッサ間通信装置。
The shared memory is
A ring buffer capable of cyclically writing to the communication data;
A write pointer indicating a start position when writing communication data in the ring buffer;
The interprocessor communication device according to claim 1, further comprising: a read pointer indicating a start position when reading communication data in the ring buffer.
前記共有メモリは、前記第1および第2のプロセッサノード内にそれぞれ設けられたメインメモリの記憶領域の一部を用いて成る、請求項1または2に記載のプロセッサ間通信装置。   The inter-processor communication device according to claim 1, wherein the shared memory is formed by using a part of a storage area of a main memory provided in each of the first and second processor nodes. 前記書込手段により前記共有メモリに書き込まれた前記通信データのデータ量が、所定量に達した場合に、前記通信データが書き込まれたことを通知するデータ量通知情報を、前記ソケット通信を介して前記第2のプロセッサノードに送信するデータ量通知手段を備える、請求項1〜3に記載のプロセッサ間通信装置。   When the amount of the communication data written to the shared memory by the writing means reaches a predetermined amount, data amount notification information for notifying that the communication data has been written is sent via the socket communication. The inter-processor communication device according to claim 1, further comprising a data amount notification means for transmitting to the second processor node. 前記第1の通知手段が、前記ソケット通信により前記第2のプロセッサノードに前記書込通知情報を送信するための条件を設定する条件設定手段を備える、請求項1〜4に記載のプロセッサ間通信装置。   5. The inter-processor communication according to claim 1, wherein the first notification unit includes a condition setting unit that sets a condition for transmitting the write notification information to the second processor node by the socket communication. apparatus. 前記共有メモリ内のうち空き領域を検出して、これらの検出した各領域から、前記書込手段が通信データを書き込むための領域を確保して割り当てる割当手段を備える、請求項1〜5に記載のプロセッサ間通信装置。   6. The allocating unit according to claim 1, further comprising an allocating unit that detects a free area in the shared memory, and allocates an area for the writing unit to write communication data from each of the detected areas. Interprocessor communication device. 前記割当手段により割り当てられた、前記書込手段が通信データを書き込むための領域のアドレスを通知するための割当通知情報を、前記ソケット通信を介して前記第2のプロセッサノードに送信する送信手段を備える、請求項1〜6に記載のプロセッサ間通信装置。   Transmitting means for transmitting, to the second processor node via the socket communication, assignment notification information assigned by the assigning means for notifying an address of an area in which the writing means writes communication data; The interprocessor communication device according to claim 1, further comprising: プロセッサ間通信装置が実行するプロセッサ間通信方法であって、前記プロセッサ間通信方法は、プロセッサ間通信装置が、
前記プロセッサ間通信装置に構成されている第1および第2のプロセッサノードのうち、前記第1のプロセッサノードで動作しているプログラムに従って、前記第1および第2のプロセッサノードのそれぞれからアクセスすることが可能に共有して設けられた共有メモリに通信データを書き込むステップと、
前記通信データが前記共有メモリに書き込まれたことを通知する書込通知情報を、前記第1および第2のプロセッサノードを、前記プログラム間で通信データの送受信が可能に接続するソケット通信を介して、前記第2のプロセッサノードに送信するステップと、
前記送信された前記書込通知情報に応じて、前記共有メモリから通信データを読み出すステップと、
前記通信データが読み出されたことを通知する読出通知情報を、前記ソケット通信を介して前記第1のプロセッサノードに送信するステップと
を備える、プロセッサ間通信方法。
An interprocessor communication method executed by an interprocessor communication device, wherein the interprocessor communication device includes:
Accessing from each of the first and second processor nodes in accordance with a program operating on the first processor node among the first and second processor nodes configured in the interprocessor communication device. Writing communication data to a shared memory provided to be shared,
Write notification information for notifying that the communication data has been written to the shared memory is transmitted via socket communication that connects the first and second processor nodes so that communication data can be transmitted and received between the programs. Transmitting to the second processor node;
Reading communication data from the shared memory in response to the transmitted write notification information;
And a step of transmitting read notification information for notifying that the communication data has been read to the first processor node via the socket communication.
プロセッサ間通信装置がプロセッサ間通信を行うための装置実行可能なプログラムであって、前記プログラムは、プロセッサ間通信装置を、
前記プロセッサ間通信装置に構成されている第1および第2のプロセッサノードのうち、前記第1のプロセッサノードで動作している動作プログラムに従って、前記第1および第2のプロセッサノードのそれぞれからアクセスすることが可能に共有して設けられた共有メモリに通信データを書き込む書込手段と、
前記書込手段により前記通信データが前記共有メモリに書き込まれたことを通知する書込通知情報を、前記第1および第2のプロセッサノードを前記動作プログラム間で通信データの送受信が可能に接続するソケット通信により、前記第2のプロセッサノードに送信する第1の通知手段と、
前記第1の通知手段により送信された前記書込通知情報に応じて、前記共有メモリから通信データを読み出す読出手段と、
前記読出手段により前記通信データが読み出されたことを通知する読出通知情報を、前記ソケット通信を介して前記第1のプロセッサノードに送信する第2の通知手段と
して機能させる、装置実行可能なプログラム。
An inter-processor communication apparatus is an apparatus-executable program for performing inter-processor communication, and the program includes an inter-processor communication apparatus,
Of the first and second processor nodes configured in the inter-processor communication device, access is made from each of the first and second processor nodes according to an operation program operating on the first processor node. Writing means for writing communication data to a shared memory provided in a shared manner,
The write notification information for notifying that the communication data has been written to the shared memory by the writing means is connected to the first and second processor nodes so that the communication data can be transmitted and received between the operation programs. First notification means for transmitting to the second processor node by socket communication;
Reading means for reading communication data from the shared memory in response to the write notification information transmitted by the first notification means;
An apparatus-executable program for causing read-out notification information for notifying that the communication data has been read out by the read-out means to function as second notification means for transmitting to the first processor node via the socket communication .
請求項9に記載のプログラムを格納した情報処理装置可読な記録媒体。   An information processing apparatus-readable recording medium storing the program according to claim 9.
JP2009004678A 2009-01-13 2009-01-13 Inter-processor communication device, inter-processor communication method, program, and recording medium Pending JP2010165022A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009004678A JP2010165022A (en) 2009-01-13 2009-01-13 Inter-processor communication device, inter-processor communication method, program, and recording medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009004678A JP2010165022A (en) 2009-01-13 2009-01-13 Inter-processor communication device, inter-processor communication method, program, and recording medium

Publications (1)

Publication Number Publication Date
JP2010165022A true JP2010165022A (en) 2010-07-29

Family

ID=42581153

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009004678A Pending JP2010165022A (en) 2009-01-13 2009-01-13 Inter-processor communication device, inter-processor communication method, program, and recording medium

Country Status (1)

Country Link
JP (1) JP2010165022A (en)

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012173884A (en) * 2011-02-18 2012-09-10 Fuji Xerox Co Ltd Data transfer control device and program
WO2012137265A1 (en) 2011-04-08 2012-10-11 Hitachi, Ltd. Computer, computer system, and data communication method
WO2012157103A1 (en) * 2011-05-19 2012-11-22 株式会社日立製作所 Multi-route switch, computer, and inter-computer communication method
KR20140069126A (en) * 2011-09-30 2014-06-09 오라클 인터내셔날 코포레이션 System and method for providing and managing message queues for multinode applications in a middleware machine environment
KR20140070611A (en) * 2011-09-29 2014-06-10 오라클 인터내셔날 코포레이션 System and method for preventing single-point bottleneck in a transactional middleware machine environment
JP2014528612A (en) * 2011-09-29 2014-10-27 オラクル・インターナショナル・コーポレイション System and method for supporting different message queues in a transactional middleware machine environment
JP2016146139A (en) * 2015-02-09 2016-08-12 富士通株式会社 Conversation management system, conversation management method and conversation management program
US9690638B2 (en) 2011-09-29 2017-06-27 Oracle International Corporation System and method for supporting a complex message header in a transactional middleware machine environment
KR20180039011A (en) * 2016-07-21 2018-04-17 바이두 유에스에이 엘엘씨 Efficient communications amongst computing nodes for operating autonomous vehicles
CN112181676A (en) * 2020-08-26 2021-01-05 深圳市优必选科技股份有限公司 Method and device for sharing recording data, terminal equipment and readable storage medium
CN113138839A (en) * 2021-04-23 2021-07-20 深圳市科思科技股份有限公司 Circular queue buffer zone, running method thereof and computer readable storage medium
CN113556242A (en) * 2020-04-24 2021-10-26 中科寒武纪科技股份有限公司 Method and equipment for performing inter-node communication based on multi-processing nodes

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04205544A (en) * 1990-11-30 1992-07-27 Nec Corp Multi-window system
JPH07210520A (en) * 1994-01-25 1995-08-11 Hitachi Ltd Memory access mechanism
JPH08241186A (en) * 1995-03-07 1996-09-17 Fujitsu Ltd Unit and method for buffer memory management
JPH11306154A (en) * 1998-04-27 1999-11-05 Toshiba Corp Communication state display device and computer-readable recording medium where program is recorded
JP2005352839A (en) * 2004-06-11 2005-12-22 Matsushita Electric Ind Co Ltd Data communication device
JP2006091966A (en) * 2004-09-21 2006-04-06 Matsushita Electric Ind Co Ltd Memory controller

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04205544A (en) * 1990-11-30 1992-07-27 Nec Corp Multi-window system
JPH07210520A (en) * 1994-01-25 1995-08-11 Hitachi Ltd Memory access mechanism
JPH08241186A (en) * 1995-03-07 1996-09-17 Fujitsu Ltd Unit and method for buffer memory management
JPH11306154A (en) * 1998-04-27 1999-11-05 Toshiba Corp Communication state display device and computer-readable recording medium where program is recorded
JP2005352839A (en) * 2004-06-11 2005-12-22 Matsushita Electric Ind Co Ltd Data communication device
JP2006091966A (en) * 2004-09-21 2006-04-06 Matsushita Electric Ind Co Ltd Memory controller

Cited By (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012173884A (en) * 2011-02-18 2012-09-10 Fuji Xerox Co Ltd Data transfer control device and program
WO2012137265A1 (en) 2011-04-08 2012-10-11 Hitachi, Ltd. Computer, computer system, and data communication method
US8504780B2 (en) 2011-04-08 2013-08-06 Hitachi, Ltd. Computer, computer system, and data communication method
WO2012157103A1 (en) * 2011-05-19 2012-11-22 株式会社日立製作所 Multi-route switch, computer, and inter-computer communication method
KR101956320B1 (en) 2011-09-29 2019-03-08 오라클 인터내셔날 코포레이션 System and method for preventing single-point bottleneck in a transactional middleware machine environment
US9690638B2 (en) 2011-09-29 2017-06-27 Oracle International Corporation System and method for supporting a complex message header in a transactional middleware machine environment
JP2014528611A (en) * 2011-09-29 2014-10-27 オラクル・インターナショナル・コーポレイション System and method for preventing single point bottlenecks in a transaction middleware machine environment
JP2014528612A (en) * 2011-09-29 2014-10-27 オラクル・インターナショナル・コーポレイション System and method for supporting different message queues in a transactional middleware machine environment
KR20140070611A (en) * 2011-09-29 2014-06-10 오라클 인터내셔날 코포레이션 System and method for preventing single-point bottleneck in a transactional middleware machine environment
KR102011949B1 (en) 2011-09-30 2019-08-19 오라클 인터내셔날 코포레이션 System and method for providing and managing message queues for multinode applications in a middleware machine environment
KR20140069126A (en) * 2011-09-30 2014-06-09 오라클 인터내셔날 코포레이션 System and method for providing and managing message queues for multinode applications in a middleware machine environment
JP2014531687A (en) * 2011-09-30 2014-11-27 オラクル・インターナショナル・コーポレイション System and method for providing and managing message queues for multi-node applications in a middleware machine environment
US9996403B2 (en) 2011-09-30 2018-06-12 Oracle International Corporation System and method for providing message queues for multinode applications in a middleware machine environment
US9558048B2 (en) 2011-09-30 2017-01-31 Oracle International Corporation System and method for managing message queues for multinode applications in a transactional middleware machine environment
JP2016146139A (en) * 2015-02-09 2016-08-12 富士通株式会社 Conversation management system, conversation management method and conversation management program
KR102004060B1 (en) * 2016-07-21 2019-07-25 바이두 유에스에이 엘엘씨 Efficient communications amongst computing nodes for operating autonomous vehicles
JP2018531436A (en) * 2016-07-21 2018-10-25 バイドゥ ドットコム タイムズ テクノロジー(ペキン)カンパニー リミテッドBaidu.com Times Technology (Beijing) Co., Ltd. Method, apparatus and system for managing data flow of processing nodes in autonomous vehicles
KR20180039011A (en) * 2016-07-21 2018-04-17 바이두 유에스에이 엘엘씨 Efficient communications amongst computing nodes for operating autonomous vehicles
CN113556242A (en) * 2020-04-24 2021-10-26 中科寒武纪科技股份有限公司 Method and equipment for performing inter-node communication based on multi-processing nodes
CN113556242B (en) * 2020-04-24 2023-01-17 中科寒武纪科技股份有限公司 Method and equipment for performing inter-node communication based on multi-processing nodes
CN112181676A (en) * 2020-08-26 2021-01-05 深圳市优必选科技股份有限公司 Method and device for sharing recording data, terminal equipment and readable storage medium
CN112181676B (en) * 2020-08-26 2023-07-18 深圳市优必选科技股份有限公司 Method, device, terminal equipment and readable storage medium for sharing recording data
CN113138839A (en) * 2021-04-23 2021-07-20 深圳市科思科技股份有限公司 Circular queue buffer zone, running method thereof and computer readable storage medium

Similar Documents

Publication Publication Date Title
JP2010165022A (en) Inter-processor communication device, inter-processor communication method, program, and recording medium
EP1358562B1 (en) Method and apparatus for controlling flow of data between data processing systems via a memory
TWI239187B (en) System and method for managing and validating remote keys which correspond to outstanding data transactions
JP4469010B2 (en) Bridge, information processing system, and access control method
US7409468B2 (en) Controlling flow of data between data processing systems via a memory
US5768618A (en) Method for performing sequence of actions in device connected to computer in response to specified values being written into snooped sub portions of address space
JP2003178039A (en) Distributed shared virtual memory and its constituting method
JP2000020490A (en) Computer having remote procedure calling mechanism or object request broker mechanism, data transfer method and transfer method storage medium
US20040054822A1 (en) Transferring interrupts from a peripheral device to a host computer system
CN111182008B (en) Establishing socket connections in user space
US6996693B2 (en) High speed memory cloning facility via a source/destination switching mechanism
US6892283B2 (en) High speed memory cloner with extended cache coherency protocols and responses
US20040111575A1 (en) Dynamic data routing mechanism for a high speed memory cloner
CN113821309B (en) Communication method, device, equipment and storage medium between microkernel virtual machines
US6898677B2 (en) Dynamic software accessibility to a microprocessor system with a high speed memory cloner
JP5158576B2 (en) I / O control system, I / O control method, and I / O control program
US7502917B2 (en) High speed memory cloning facility via a lockless multiprocessor mechanism
US6986013B2 (en) Imprecise cache line protection mechanism during a memory clone operation
JP2736237B2 (en) Remote memory access controller
KR20030083572A (en) Microcomputer system having upper bus and lower bus and controlling data access in network
JP2001236335A (en) Decentralized memory type parallel computer and its data transfer end confirming method
Trams et al. Memory Management in a combined VIA/SCI Hardware
JP4856413B2 (en) Arithmetic processing apparatus, information processing apparatus, and control method for arithmetic processing apparatus
US6928524B2 (en) Data processing system with naked cache line write operations
KR100978083B1 (en) Procedure calling method in shared memory multiprocessor and computer-redable recording medium recorded procedure calling program

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20111226

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120615

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130416

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130514

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20130917