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 PDFInfo
- 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
Links
Images
Landscapes
- Multi Processors (AREA)
Abstract
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の実施形態〕
以下、本発明に係る第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
マルチプロセッサシステム10は、図1に示すように、複数のプロセッサノード100、110、120と、これらの各プロセッサノード100、110、120間でデータなどの送受信を行うためのネットワークの1例であるEthernet(登録商標)130と、各プロセッサノード100、110、120のそれぞれからアクセス可能に共有して設けられた共有メモリ140とから構成されている。
As shown in FIG. 1, the
プロセッサノード100は、アプリケーションなどの各種の処理を行うためのプログラムを実行するCPU101と、CPU101の処理に従って後述するようにメインメモリ103にアクセスしデータなどの読み出しを行うメモリコントローラ102と、CPU101の処理によって得られた各種のデータを記憶するメインメモリ103とを備えている。
The
CPU101は、予め用意されたプログラムを実行することにより、例えばアプリケーション上での各種の処理を行い、メモリコントローラ102や後述するホスト―PCIブリッジ104、Ethernet(登録商標)カード105を介して外部から入力された通信データを用いて演算処理や判定処理などを行う。
The
メモリコントローラ102は、メインメモリ103にアクセスして、CPU101での処理によって得られた演算結果や判定結果などのデータをメインメモリ103内に形成された共有メモリに書き込んだり、また、メモリコントローラ102は、この共有メモリから通信データを始めとする各データを読み出し、ホスト―PCIブリッジ104、Ethernet(登録商標)カード105、Ethernet(登録商標)130を介して他のプロセッサノード110、120に送信するための処理を行う。
The
また、プロセッサノード100は、プロセッサノード100および外部との間のデータの入出力を行うホスト―PCIブリッジ104と、Ethernet(登録商標)130に接続されEthernet(登録商標)130を介して外部との間でデータの送受信を行うEthernet(登録商標)カード105とを備えている。
The
ホスト―PCIブリッジ104は、プロセッサノード100の内部側がメモリコントローラ102に接続され、外部側がEthernet(登録商標)カード105、共有メモリ140に接続されている。ホスト―PCIブリッジ104は、外部側の接続対象をEthernet(登録商標)カード105または共有メモリ140に切り替えて、プロセッサノード100およびEthernet(登録商標)130間と、プロセッサノード100および他のプロセッサノード110、120間でのデータの入出力を行う。
The host-
Ethernet(登録商標)カード105は、例えばプロセッサノード100のPCIカードスロットルに装着されてEthernet(登録商標)130と直接接続され、Ethernet(登録商標)130を介して外部との間でデータの送受信を行う。
The Ethernet (registered trademark)
Ethernet(登録商標)カード105は、他のプロセッサノード110、120のうちのいずれかから要求された通信データを要求するための要求情報を受信する。また、Ethernet(登録商標)カード105は、メモリコントローラ102により通信データが共有メモリ140に書き込まれたことを通知する書込通知情報を、他のプロセッサノード110、120にそれぞれ送信したり、メモリコントローラ102により通信データが読み出されたことを通知する読出通知情報を、他のプロセッサノード110、120にそれぞれ送信したり、また、他のプロセッサノード110、120のEthernet(登録商標)カード105により送信された読出通知情報に従って、メモリコントローラ102により読み出された通信データを、通信データを要求したプロセッサノードに送信する処理を行う。
The Ethernet (registered trademark)
プロセッサノード110、120は、プロセッサノード100と同様の構成となっており、CPU101、メモリコントローラ102、メインメモリ103、ホスト―PCIブリッジ104、Ethernet(登録商標)カード105と同様の機能を有するCPU111、121、メモリコントローラ112、122、メインメモリ113、123、ホスト―PCIブリッジ114、124、Ethernet(登録商標)カード115、125を備えている。
The
図20は、プロセッサノード100のハードウェア構成を示す説明図である。プロセッサノード100は、図20に示すように、CPU101にメモリコントローラ102が接続され、このメモリコントローラ102に対してメインメモリ103がデータの書き込みおよび読み出しが可能に、また、ホスト―PCIブリッジ104が通信データなどの各データの送受信が可能にそれぞれ接続されている。
FIG. 20 is an explanatory diagram showing the hardware configuration of the
また、ホスト―PCIブリッジ104には、複数種類のPCIデバイス機器が接続可能なPCIバス401が接続され、このPCIバス401にPCIバスを介して共有メモリ140に接続されたPCI―PCIブリッジ402と、複数種類の各PCIデバイス403と、Ethernet(登録商標)130に接続されたEthernet(登録商標)カード105とがそれぞれ接続されている。
A
メモリコントローラ102は、CPU101のホストバスに接続され、CPU101からメインメモリ103やEthernet(登録商標)カード105、PCI―PCIブリッジ402、各種PCIデバイス403に対するリードまたはライトの要求を受け取ると、対象のデバイスに対してリクエストを振り分ける役目がある。マルチプロセッサシステム100の具体的な例としてパソコンを用いた場合、一般的には例えばIntel製のx86 CPUを搭載しているが、その際にはマザーボードというメイン基板の上にノースブリッジやMCH(Memory Controller Hub)として参照されるチップセットが搭載されており、図20のメモリコントローラ102はこれらのチップセットに相当している。
When the
一方、ホスト―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-
図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
図5は、別々のプロセッサノードで動作しているプロセスの間で同一の共有メモリ140を共有利用することでデータの伝達を行うことが可能となっているが、このようなメモリを分散共有メモリとして参照する。分散共有メモリは、複数のプロセッサノード間で利用できるというソケット通信の特徴と、広帯域であるという共有メモリの特徴とをそれぞれ有している。
In FIG. 5, it is possible to transfer data by sharing the same shared
マルチプロセッサシステム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
図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
各プロセッサノード100、110、120のうち、プロセッサノード100、110間は、図6に示すように、例えばEthernet(登録商標)130などの各種のネットワークを透過するソケット600で接続された二つのプログラム601、602の間で双方向に通信データを送受信することができる。
Among the
このソケット600で接続されることによって示されるソケット通信では、各プロセッサノード100、110、120のうち、任意の2つのプロセッサノードで動作しているそれぞれのプログラム間で通信データを送受信することができる。また、ソケット600を通して送受信可能なデータは、バイトストリームであり、ここで、バイトストリームとは、図6に示すように、送受信のそれぞれのデータでバイトデータが一列に並んだデータであり、送信元が送出した各バイトデータがその送出された送出順序のままで受信側のプロセッサノードに届くようになっている。
In the socket communication indicated by the connection with the
図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
プロセッサノード100からプロセッサノード110への書き込みの要求では、図8に示すように、プロセッサノード100のメインメモリ103の一部の記憶領域がプロセッサノード110のメインメモリ113内のメモリウィンドウにマッピングされている。この時に、プロセッサノード110のプログラムで動作しているプロセスBがメモリウィンドウの記憶領域に対して書き込みを行うと、この書き込まれたデータと記憶領域を示すアドレスがプロセッサノード100に送信され、リモートメモリとして利用されているプロセッサノード100内のメインメモリ103に対して書き込み処理が行われる。そのメインメモリ103に対してプロセッサノード100で動作しているプロセスが読み出しを行うことにより、プロセッサノード110からプロセッサノード100に対して通信データを伝達することが可能となる。
In a write request from the
一方、プロセッサノード110からプロセッサノード100への書き込みの要求では、プロセッサノード110のメインメモリ113の一部の記憶領域がプロセッサノード100のメインメモリ103内のメモリウィンドウにマッピングされている。そして、同様にしてプロセッサノード100からプロセッサノード110に対して通信データが伝達される。
On the other hand, in a write request from the
図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
サーバ90は、ステップS901でクライアント91から送信されたソケット600使用要求(socket)のデータを受け取ると、これに応じて同様のデータと、(bind)、(listen)、(accept)の各データを生成し、サーバ90およびクライアント91間のコネクションを確立するための処理行う。
When the
サーバ90、クライアント91は、ステップS902でソケット600を初期化する処理を行い、各種のデータを送受信可能な状態に設定する。
In step S902, the
クライアント91は、ステップS903でソケット600を介して送信された信号(p_cond_signal)をCPU111で動作するプログラムに一度戻して、この信号に従って通信データを共有メモリ140に送信し、通信データを共有メモリ140に書き込む処理を行う。
The
クライアント91は、ステップS904でステップS903において共有メモリ140に通信データを書き込んだことを通知するための書込通知情報を、ソケット600を介してサーバ90に送信する。
In step S904, the
一方、サーバ90は、ステップS903においてクライアント91と同様に、ソケット600を介して送信された信号(p_cond_signal)をCPU101で動作するプログラムに一度戻す。そして、サーバ90は、ステップS904においてクライアント91から送信された書込通知情報を受信し、ステップS905でこの書込通知情報に従って、通信データを共有メモリ140から読み出す処理を行う。
On the other hand, the
サーバ90は、ステップS906でステップS905において共有メモリ140から通信データを読み出したことを通知するための読出通知情報を、ソケット600を介してクライアント91に送信する。
In step S906, the
クライアント91は、ステップS907でサーバ90およびクライアント91間のコネクションを切断することを通知するための切断通知信号を、ソケット600を介してサーバ90に送信する。一方、サーバ90は、ステップS908で切断通知信号を受信すると、これに応じてコネクションを切断することに応答することを通知するための切断通知信号を、ソケット600を介してクライアント91に送信する。
The
サーバ90、クライアント91は、ステップS909でソケット600の動作を終了する処理を行い、各種のデータを送受信不可能な状態に設定する。また、サーバ90は、サーバ90およびクライアント91間のコネクションを切断するための処理を行う。
In step S909, the
図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
クライアント91は、ステップS1004でステップS1003において共有メモリ140に通信データを書き込んだことを通知するための書込通知情報を、サーバ90に送信する。
In step S1004, the
一方、サーバ90は、ステップS1003においてクライアント91と同様に、送信された信号(p_cond_signal)をCPU101で動作するプログラムに一度戻し、ステップS1005で通信データの待ち状態となる。そして、サーバ90は、ステップS1004においてクライアント91から送信された書込通知情報を受信し、ステップS1006でこの書込通知情報に従って、512KBの通信データを共有メモリ140の記憶領域上からコピーして読み出す処理を行う。
On the other hand, similarly to the
サーバ90は、ステップS1007でステップS1006において共有メモリ140から通信データを読み出したことを通知するための読出通知情報を、クライアント91に送信する。
In step S1007, the
図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
クライアント91は、ステップS1105でステップS1103において共有メモリ140に通信データを書き込んだことを通知するための書込通知情報を、それぞれ2回の書き込み処理毎にサーバ90に送信する。ここで、例えば共有メモリ140の容量が1MBの場合には、共有メモリ140の記憶領域が満たされ書き込む処理が不可能となるため、ステップS1104で通信データの待ち状態となる。
In step S1105, the
一方、サーバ90は、上述のステップS1103でクライアント91と同様に、送信された信号(p_cond_signal)をCPU101で動作するプログラムに一度戻す。そして、サーバ90は、ステップS1105においてクライアント91から送信された書込通知情報をそれぞれ受信し、ステップS1106でこの書込通知情報に従って、1つ目の通信データを共有メモリ140の記憶領域上からコピーして読み出す処理を行う。
On the other hand, the
サーバ90は、ステップS1107でステップS1106において共有メモリ140から通信データを読み出したことを通知するための読出通知情報を、クライアント91に送信する。
In step S <b> 1107, the
クライアント91は、ステップS1107においてサーバ90から送信された書込通知情報を受信し、これに応じて通信データの待ち状態を解除する。そして、クライアント91は、ステップS1108で共有メモリ140の記憶領域に書き込まれた通信データを消去した上で、残りの3つ目の通信データを共有メモリ140の記憶領域上にコピーして書き込む処理を行う。
The
クライアント91は、ステップS1109でステップS1108において共有メモリ140に通信データを書き込んだことを通知するための書込通知情報をサーバ90に送信する。
In step S1109, the
図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
クライアント91は、ステップS1204で共有メモリ140内で通信データを書き込むための記憶領域を割り当てるための割り当て要求をメモリコントローラ102、ホスト−PCIブリッジ104に送信する。また、クライアント91は、ステップS1205で共有メモリ140を書き込みや読み出しなどのアクセス待ち状態に設定する。
In step S1204, the
クライアント91は、ステップS1206でメモリコントローラ102、ホスト−PCIブリッジ104により共有メモリ140にアクセスし、通信データを書き込むための記憶領域を割り当てるための処理を行う。例えば、クライアント91は、共有メモリ140内の記憶領域のうち、データが書き込まれていない空き領域、またはデータが消去済みの領域を検出して、これらの検出した各領域から通信データを書き込むための領域を確保し、この確保した領域内の各アドレスなどを割り当てる処理を行う。クライアント91は、ステップS1206において記憶領域を割り当てた割り当て結果を、ステップS1207でメモリコントローラ102、ホスト−PCIブリッジ104によりCPU111に送信する。
In step S1206, the
クライアント91は、ステップS1208でステップS1207において送信された割り当て結果や割り当てた各アドレスを通知するための割当通知情報を、サーバ90に送信する。そして、クライアント91は、ステップS1209で、サーバ90から送信された、サーバ90で同様に共有メモリ140内の記憶領域で割り当てられた割り当て結果や割り当てた各アドレスを通知するための割当通知情報を、受信する。
In step S1208, the
クライアント91は、ステップS1210、S1211でソケット600を介して送信された信号(p_cond_signal)をCPU111で動作するプログラムに一度戻して、この信号に従って通信データを共有メモリ140に送信し、通信データを共有メモリ140に書き込む処理を行う。ここで、通信データは、共有メモリ140内の記憶領域のうち、ステップS1206において割り当てた領域に書き込まれる。
The
クライアント91は、ステップS1212でステップS1211において共有メモリ140に通信データを書き込んだことを通知するための書込通知情報を、ソケット600を介してサーバ90に送信する。
In step S <b> 1212, the
一方、サーバ90では、ステップS1210においてクライアント91と同様に、ソケット600を介して送信された信号(p_cond_signal)をCPU101で動作するプログラムに一度戻す。そして、サーバ90では、ステップS1211においてクライアント91から送信された書込通知情報を受信し、この書込通知情報に従って、通信データを共有メモリ140から読み出す処理が行われる。
On the other hand, the
サーバ90は、ステップS1213でステップS1211において共有メモリ140から通信データを読み出したことを通知するための読出通知情報を、ソケット600を介してクライアント91に送信する。
In step S1213, the
クライアント91は、ステップS1214でサーバ90およびクライアント91間のコネクションを切断することを通知するための切断通知信号を、ソケット600を介してサーバ90に送信する。一方、サーバ90では、ステップS1215で切断通知信号を受信すると、これに応じてコネクションを切断することに応答することを通知するための応答通知信号を、ソケット600を介してクライアント91に送信する。
The
クライアント91は、ステップS1216で共有メモリ140内の記憶領域を解放するための解放要求をメモリコントローラ102、ホスト−PCIブリッジ104に送信する。また、クライアント91は、ステップS1217で共有メモリ140を書き込みや読み出しなどのアクセス待ち状態に設定する。
In step S1216, the
クライアント91は、ステップS1218でメモリコントローラ102、ホスト−PCIブリッジ104により共有メモリ140にアクセスし、ステップS1206において割り当てた記憶領域を解除し、解放するための処理を行う。クライアント91は、ステップS1218において記憶領域を解放した解放結果を、ステップS1219でメモリコントローラ102、ホスト−PCIブリッジ104によりCPU111に送信する。
In step S1218, the
クライアント91は、ステップS1220でソケット600の動作を終了する処理を行い、各種のデータを送受信不可能な状態に設定する。そして、処理を終了するための信号(p_cond_signal)をCPU101で動作するプログラムに戻して、この信号に従ってプログラムの実行を終了する。
In step S1220, the
図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
図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
また、サーバ90は、図14に示すように、共有メモリ140にアクセスし、共有メモリ140内の記憶領域から、クライアント91により書き込まれた通信データを読み出すための領域を確保し、この確保した領域内の各アドレスなどを割り当てるための処理を行う。そして、サーバ90は、記憶領域を割り当てたことを示すソケット指示情報「remote.buff_adrs」をソケット600を介してホスト−PCIブリッジ104によりCPU101に送信する。
Further, as shown in FIG. 14, the
一方、クライアント91は、図14に示すように、共有メモリ140にアクセスし、共有メモリ140内の記憶領域から通信データを書き込むための領域を確保し、この確保した領域内の各アドレスなどを割り当てるための処理を行う。そして、クライアント91は、記憶領域を割り当てたことを示すソケット指示情報「local.buff_adrs」をソケット600を介してホスト−PCIブリッジ114によりCPU111に送信する。
On the other hand, as shown in FIG. 14, the
また、クライアント91は、図14に示すように、共有メモリ140にアクセスし、共有メモリ140内の記憶領域から、サーバ90により書き込まれた通信データを読み出すための領域を確保し、この確保した領域内の各アドレスなどを割り当てるための処理を行う。そして、クライアント91は、記憶領域を割り当てたことを示すソケット指示情報「remote.buff_adrs」をソケット600を介してホスト−PCIブリッジ114によりCPU111に送信する。
Further, as shown in FIG. 14, the
図15は、ソケット指示情報に従って共有メモリ140に対して行った処理の他の例を示す説明図である。図15に示すように、例えばサーバ90やクライアント91などが共有メモリ140にアクセスし、共有メモリ140内の記憶領域から通信データを書き込むための複数の領域を確保し、これらの確保したそれぞれの領域内の各アドレスなどを割り当てるための処理を行う。
FIG. 15 is an explanatory diagram illustrating another example of processing performed on the shared
そして、図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
また、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
また、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
図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
バッファサイズは、メモリウィンドウの共有メモリ140内での全体の容量を示す例えばバイト数などのデータである。ライトポインタは、リングバッファ内での通信データを書き込む際の開始位置を示すポインタであり、リングバッファ内でのオフセットアドレスが含まれている。リードポインタは、リングバッファ内での通信データを読み出す際の開始位置を示すポインタであり、リングバッファ内でのオフセットアドレスが含まれている。
The buffer size is, for example, data such as the number of bytes indicating the total capacity in the shared
メモリウィンドウに含まれるリングバッファは、記憶領域内の開始位置が空きとなっている場合には、通信データの内容をリングバッファの領域内に全て書き込むと、これに応じて、リングバッファ内の先頭位置に戻って書き込み処理を続けて行うことが可能であり、循環的に書き込み処理が可能なバッファである。リングバッファには、図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
それぞれの各パケットには、図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
また、(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
また、(5)で、サーバ90やクライアント91などが共有メモリ140にアクセスし、通信データの内容を含む3つ目のパケットをリングバッファに書き込む処理を行う。このとき、通信データの内容を書き込んでいき、リングバッファの領域内に全て書き込んだ場合には、リングバッファ内の先頭位置に戻って上述の(4)で消去した領域に続けて書き込む処理を行う。その後、これに伴ってライトポインタの位置も同様に、リングバッファ内の先頭位置に戻ってこのパケットの終端位置に移動させる。
In (5), the
(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
一方、プロセッサノード110のCPU111は、ステップS1802で共有メモリ140にアクセスし、共有メモリ140のリングバッファから、ステップS1801において書き込まれた通信データをパケット毎に順次読み出す処理を行う。このとき、この読み出したパケットを消去し、その後、これに伴ってリードポインタの位置を、この読み出したパケットの次のパケットの開始位置に移動させる。
On the other hand, the
CPU111は、ステップS1803、S1804で共有メモリ140に続けてアクセスし、共有メモリ140のリングバッファから、ステップS1801において書き込まれた通信データをパケット毎に順次読み出す処理を繰り返し行っていく。このとき、これらの読み出した各パケットをそれぞれ消去し、その後、これに伴ってリードポインタの位置を、これらの読み出したパケットの次のパケットの開始位置に移動させる。
The
次に、CPU101は、ステップS1805で共有メモリ140にアクセスして、リングバッファ内で先頭位置(0xE800 1008)を指定する。そして、CPU101は、2つ目の通信データをリングバッファに書き込み、その後、これに伴ってライトポインタの位置をこの通信データの終端に含まれるパケットの終端位置(0x0001 0010)に移動させる。
Next, the
CPU111は、ステップS1806、S1807で共有メモリ140に続けてアクセスし、共有メモリ140のリングバッファから、ステップS1806、S1807において書き込まれた通信データをパケット毎に順次読み出す処理を行う。このとき、これらの読み出した各パケットをそれぞれ消去し、その後、これに伴ってリードポインタの位置を、これらの読み出したパケットの次のパケットの開始位置に移動させる。
The
図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
一方、プロセッサノード110のCPU111は、ステップS1903で共有メモリ140にアクセスし、共有メモリ140のリングバッファから、ステップS1901、S1902において書き込まれた通信データをパケット毎に順次読み出す処理を行う。このとき、これらの読み出した各パケットをそれぞれ消去し、その後、これに伴ってリードポインタの位置を、これらの読み出したパケットの次のパケットの開始位置に移動させる。
On the other hand, the
次に、CPU101は、ステップS1904、S1906で共有メモリ140にアクセスして、共有メモリ140内の2つのリングバッファ内でそれぞれ先頭位置(0xE800 1008)、(0xE800 100A)を指定する。そして、CPU101は、2つの通信データをこれらの各リングバッファにそれぞれ書き込み、その後、これに伴って各ライトポインタの位置をこれらの各通信データの終端に含まれるパケットの終端位置(0x0000 0010)、(0x0000 0001)に移動させる。
Next, the
ここで、上述のステップS1904およびS1906での処理の間、ステップS1905でCPU111は、共有メモリ140にアクセスし、共有メモリ140のリングバッファから、ステップS1904、S1906において書き込まれた通信データをパケット毎に順次読み出す処理を行う。このとき、これらの読み出した各パケットをそれぞれ消去し、その後、これに伴ってリードポインタの位置を、これらの読み出したパケットの次のパケットの開始位置に移動させる。
Here, during the processing in steps S1904 and S1906 described above, the
また、CPU111は、ステップS1907で共有メモリ140に続けてアクセスし、共有メモリ140のリングバッファから、ステップS1904、S1906において書き込まれた通信データをパケット毎に順次読み出す処理を繰り返し行っていく。このとき、これらの読み出した各パケットをそれぞれ消去し、その後、これに伴ってリードポインタの位置を、これらの読み出したパケットの次のパケットの開始位置に移動させる。
Further, the
以上のように、第1の実施形態におけるマルチプロセッサシステム10では、各プロセッサノード100、110、120がネットワークを透過するソケット600で互いに接続されて、双方向に通信データが送受信可能となっている。共有メモリ140に対して通信データを用いて書き込みまたは読み出しの各処理を行う際には、クライアント91のCPU111が信号に従って通信データを共有メモリ140に送信し、通信データを共有メモリ140に書き込む処理を行う。そして、CPU111は、ソケット600を介してサーバ90に書込通知情報を送信し、共有メモリ140に通信データを書き込んだことを通知する。
As described above, in the
一方、サーバ90は、この書込通知情報に従って通信データを共有メモリ140から読み出す処理を行う。また、サーバ90は、ソケット600を介してクライアント91に読出通知情報を送信し、共有メモリ140から通信データを読み出したことを通知する。
On the other hand, the
このため、各プロセッサノード100、110、120の間をソケット600で接続して、各プロセッサノード100、110、120で動作しているプログラム上のプロセスの間で、同一の共有メモリ140を共有利用することによって、この共有メモリ140が分散共有メモリとして機能する。この共有メモリ140は、複数のプロセッサノード間で利用できるというソケットの特徴と、広帯域であるという共有メモリ140の特徴とをそれぞれ有し、通信処理で発生する通信オーバーヘッドを低減し、高速通信を可能とすることができる。
For this reason, the
〔第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
プロセッサノード200は、CPU201と、メモリコントローラ202と、メインメモリ203と、ホスト―PCIブリッジ204と、Ethernet(登録商標)カード205とを備えている。これらの各構成要素は、第1の実施形態におけるプロセッサノード100が備えているCPU101、メモリコントローラ102、メインメモリ103、ホスト―PCIブリッジ104、Ethernet(登録商標)カード105と同様の機能を有しており説明を省略する。
The
また、プロセッサノード200は、上述の各構成要素に加えて、PCIバス240に接続され、このPCIバス240を介して外部との間でデータの送受信を行うPCI−PCIブリッジ206を備えている。PCI−PCIブリッジ206は、例えばプロセッサノード200内で、ホスト―PCIブリッジ204およびPCIバス240間に直接接続され、CPU201に対してPCIバス240を介して外部との間でデータの送受信を行う。
The
プロセッサノード210、220は、プロセッサノード200と同様の構成となっており、CPU201、メモリコントローラ202、メインメモリ203、ホスト―PCIブリッジ204、Ethernet(登録商標)カード205と同様の機能を有するCPU211、221、メモリコントローラ212、222、メインメモリ213、223、ホスト―PCIブリッジ214、224、Ethernet(登録商標)カード215、225を備えている。
The
そして、図示していないが、第2の実施形態においてもマルチプロセッサシステム10では、各プロセッサノード200、210、220がネットワークを透過するソケット600で互いに接続されて、双方向に通信データが送受信可能となっている。
Although not shown, in the second embodiment as well, in the
図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
〔第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
プロセッサノード300は、CPU301と、メモリコントローラ302と、メインメモリ303と、ホスト―PCIブリッジ304と、Ethernet(登録商標)カード305とを備えている。これらの各構成要素は、第1の実施形態におけるプロセッサノード100が備えているCPU101、メモリコントローラ102、メインメモリ103、ホスト―PCIブリッジ104、Ethernet(登録商標)カード105と同様の機能を有しており説明を省略する。
The
プロセッサノード310、320は、プロセッサノード300と同様の構成となっており、CPU301、メモリコントローラ302、メインメモリ303、ホスト―PCIブリッジ304、Ethernet(登録商標)カード305と同様の機能を有するCPU311、321、メモリコントローラ312、322、メインメモリ313、323、ホスト―PCIブリッジ314、324、Ethernet(登録商標)カード315、325を備えている。
The
そして、図示していないが、第3の実施形態においてもマルチプロセッサシステム10では、各プロセッサノード300、310、320がネットワークを透過するソケット600で互いに接続されて、双方向に通信データが送受信可能となっている。
Although not shown, in the
この第3の実施形態では、メインメモリ303、313、323内の記憶領域の一部を用いて共有メモリとして利用する。このような構成とすることによって、上述の第1の実施形態において単一の共有メモリ140を各プロセッサノード100、110、120と別個に設ける構成と比較して、コストの低減を図ることが可能となる。
In the third embodiment, a part of the storage area in the
〔他の実施形態〕
上述の実施形態において、ソケット600を介して書込通知情報を送信することによって、共有メモリ140に通信データを書き込んだことを通知しているが、共有メモリ140に書き込まれた通信データのデータ量が所定量に達した場合に、通知するようにしても良い。
[Other Embodiments]
In the above-described embodiment, the write notification information is transmitted via the
この場合には、プロセッサノード100、110、120を始めとする各プロセッサノードが予め共有メモリ140に書き込まれたデータ量を検出する検出部を備え、共有メモリ140への通信データの書き込み処理が開始されると、これに応じて書き込まれたデータ量を検出する。そして、このデータ量が予め設定された所定量に達すると、通信データが書き込まれたこと、および書き込まれたデータ量を通知するデータ量通知情報を生成し、ソケット600を介して送信する。
In this case, each of the processor nodes including the
また、上述の実施形態において、プロセッサノード100、110、120を始めとする各プロセッサノードが、共有メモリ140に書き込まれた通信データのデータ量や、メモリウィンドウに含まれるリングバッファの空きの領域が例えば4byteの所定量まで減少した場合など、通知情報で通知する条件をユーザの要望に応じて、任意に設定することが可能であっても良い。
In the above-described embodiment, each processor node including the
また、本発明の上記機能は、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
Claims (10)
前記第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のプロセッサノードで動作しているプログラムに従って、前記第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 .
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)
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)
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 |
-
2009
- 2009-01-13 JP JP2009004678A patent/JP2010165022A/en active Pending
Patent Citations (6)
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)
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 |