JP5738811B2 - Inter-object communication device in multi-processing system - Google Patents

Inter-object communication device in multi-processing system Download PDF

Info

Publication number
JP5738811B2
JP5738811B2 JP2012188721A JP2012188721A JP5738811B2 JP 5738811 B2 JP5738811 B2 JP 5738811B2 JP 2012188721 A JP2012188721 A JP 2012188721A JP 2012188721 A JP2012188721 A JP 2012188721A JP 5738811 B2 JP5738811 B2 JP 5738811B2
Authority
JP
Japan
Prior art keywords
node
packet
address
name
parent
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.)
Expired - Fee Related
Application number
JP2012188721A
Other languages
Japanese (ja)
Other versions
JP2014048707A (en
Inventor
航 遠藤
航 遠藤
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.)
Kyocera Document Solutions Inc
Original Assignee
Kyocera Document Solutions Inc
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 Kyocera Document Solutions Inc filed Critical Kyocera Document Solutions Inc
Priority to JP2012188721A priority Critical patent/JP5738811B2/en
Priority to US13/964,128 priority patent/US9135088B2/en
Priority to CN201310357252.5A priority patent/CN103678246B/en
Priority to EP20130004172 priority patent/EP2704008A1/en
Publication of JP2014048707A publication Critical patent/JP2014048707A/en
Application granted granted Critical
Publication of JP5738811B2 publication Critical patent/JP5738811B2/en
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Description

本発明は、マルチプロセッシングシステムにおけるオブジェクト間通信装置に係り、特に、非対称型のマルチプロセッシングシステムに用いて好適なオブジェクト間通信装置関する。 The present invention relates to an inter-object communication apparatus in a multiprocessing system, and more particularly to an inter-object communication apparatus suitable for use in an asymmetric multiprocessing system.

リーク電流及び消費電力の増大によるシングルコアプロセッサ単体での性能向上の限界を打破するため、マルチコアプロセッサやマルチプロセッサが用いられている。   Multi-core processors and multi-processors are used in order to overcome the limitations on performance improvement of a single-core processor alone due to an increase in leakage current and power consumption.

組込みシステムでは、コストパフォーマンス向上及び低消費電力化のため、非対称型マルチプロセッシング(AMP)システムが用いられている。AMPシステムでは、システムに応じて、プロセッサコア毎に機能が定められ、それぞれのプロセッサコアで固有のプログラムが実行される。   In an embedded system, an asymmetric multiprocessing (AMP) system is used to improve cost performance and reduce power consumption. In the AMP system, a function is defined for each processor core according to the system, and a unique program is executed in each processor core.

この際、マルチコアプロセッサ内のプロセッサコア間は、マルチコア通信API(MCAPI(登録商標):Multicore Communications Application Program Interface)とOS(オペレーティングシステム)(OSを介さない場合もある)とミドルウェアとを介して通信が行われ、プロセッサ間は、それらを接続するPCIexpress(PCIe)のデバイスドライバとOSとを介して通信が行なわれている。   At this time, the processor cores in the multi-core processor communicate with each other via a multi-core communication API (MCAPI (registered trademark): Multicore Communications Application Program Interface), an OS (operating system) (sometimes not via the OS), and middleware. The processors communicate with each other via a PCIexpress (PCIe) device driver that connects them and the OS.

特開2009−258937号公報JP 2009-258937 A

このため、プロセッサコア間のユーザノード(アプリケーション内のオブジェクト)間通信においては、ハードウェア構成に応じて異なる通信方式を選択しなければならず、プログラミング上煩雑である。   For this reason, in communication between user nodes (objects in an application) between processor cores, a different communication method must be selected according to the hardware configuration, which is complicated in programming.

また、マルチプロセッシングシステムのハードウェア又はソフトウェアの改良において、通信先ノードの配置が異なると、ユーザノード間通信のソフトウェア構成もこれに応じて変更する必要が生ずる。   Further, in the improvement of the hardware or software of the multiprocessing system, if the arrangement of communication destination nodes is different, the software configuration of communication between user nodes needs to be changed accordingly.

本発明の目的は、このような問題点に鑑み、マルチプロセッシングシステムにおいて、通信先ノードの配置が異なっても、ソフトウェア構成を変更することなくオブジェクト間通信を行うことが可能なオブジェクト間通信装置を提供することにある。 In view of such problems, an object of the present invention is to provide an inter-object communication apparatus capable of performing inter-object communication without changing the software configuration even if the communication destination nodes are arranged differently in a multiprocessing system. It is to provide.

本発明による、マルチプロセッシングシステムにおけるオブジェクト間通信装置の第1〜4態様はいずれも、複数のプロセッサコアのそれぞれに結合されたメモリ空間内のアプリケーション層のオブジェクトであるユーザノードを子ノードとする親ノードのオブジェクトを第1ノードとして、同じメモリ空間毎にミドルウェア層に配置され、これら第1ノードを子ノードとする親ノードのオブジェクトを第2ノードとして、いずれかの第1ノードのメモリ空間内のミドルウェア層に配置され、これらユーザノード、第1ノード及び第2ノードを含むツリーの各ノードに、値により親子関係を区別可能なアドレスが設定されるとともに、送信先アドレス及び送信元アドレスをヘッダに含むパケットを該ツリーの親子ノード間でルーティングするパケットルーティング手段が備えられている。 In any of the first to fourth aspects of the inter-object communication device in the multiprocessing system according to the present invention, a parent node having a user node as a child node as an application layer object in a memory space coupled to each of a plurality of processor cores The node object is set as the first node in the middleware layer for each same memory space, and the parent node object whose child node is the first node is set as the second node in the memory space of any of the first nodes. In the middleware layer, each node of the tree including the user node, the first node, and the second node is set with an address that can distinguish the parent-child relationship by value, and the destination address and the source address are used as headers. The packet that contains it is routed between the parent and child nodes of the tree It is packet routing means are provided.

名前解決テーブルの配置の仕方には、以下の(A)〜(C)がある。   There are the following methods (A) to (C) for arranging the name resolution table.

(A)名前解決テーブルを、各ユーザノードのみに持たせる。   (A) Only each user node has a name resolution table.

(B)名前解決テーブルを、ルートノードのみに持たせる。   (B) Only the root node has a name resolution table.

(C)ユーザノード以外の各ノードに、そのノードと子孫ノードとに関する名前解決テーブルを持たせる。   (C) Each node other than the user node is provided with a name resolution table regarding the node and the descendant nodes.

本発明による、マルチプロセッシングシステムにおけるオブジェクト間通信装置の第1〜3態様はそれぞれ、上記(A)〜(C)に対応している。 The first to third aspects of the inter-object communication device in the multiprocessing system according to the present invention correspond to the above (A) to (C), respectively.

第1態様では、該ツリーの各ユーザノードの該パケットルーティング手段は、各ユーザノードの名前とそのアドレスとを対応付けた名前解決テーブルを備え、ルーティング処理前に名前解決処理を行い、該名前解決処理では、
該ヘッダの送信先アドレス又は送信元アドレスの替わりに名前が用いられている場合、該名前が該名前解決テーブル上に存在すれば、該名前をアドレスに変換し該ヘッダの名前を該アドレスで置換し、存在しなければオペレーティングシステムに例外エラーを発生させる。
In the first aspect, the packet routing means of each user node of the tree includes a name resolution table that associates the name of each user node with its address, performs name resolution processing before routing processing, and performs the name resolution In processing,
When a name is used in place of the destination address or source address of the header, if the name exists on the name resolution table, the name is converted into an address and the header name is replaced with the address. If not, an exception error is generated in the operating system.

第2態様では、該ツリーのルートノード以外の該パケットルーティング手段は、名前解決テーブルを備えず、該ヘッダの送信先アドレス又は送信元アドレスの替わりに名前が用いられている場合、該パケットを自ノードの親ノードに転送し、
該ルートノードの該パケットルーティング手段は、各ユーザノードの名前とアドレスとを対応付けた名前解決テーブルを備え、ルーティング処理前に名前解決処理を行い、該名前解決処理では、
該ヘッダの送信先アドレス又は送信元アドレスの替わりに名前が用いられている場合、該名前が該名前解決テーブル上に存在すれば、該名前をアドレスに変換し該ヘッダの名前を該アドレスで置換し、存在しなければオペレーティングシステムに例外エラーを発生させる。
In the second aspect, the packet routing means other than the root node of the tree does not have a name resolution table, and if the name is used instead of the transmission destination address or the transmission source address of the header, the packet routing means Forward to the node's parent node,
The packet routing means of the route node includes a name resolution table that associates the name and address of each user node, and performs name resolution processing before routing processing. In the name resolution processing,
When a name is used in place of the destination address or source address of the header, if the name exists on the name resolution table, the name is converted into an address and the header name is replaced with the address. If not, an exception error is generated in the operating system.

第3態様では、該ツリーのユーザノード以外のノードの該パケットルーティング手段は、自ノードとその全ての子孫ノードの名前とアドレスとを対応付けた名前解決テーブルを備え、
各ユーザノードの該パケットルーティング手段は、該ヘッダの送信先アドレス又は送信元アドレスの替わりに名前が用いられている場合、該パケットを自ノードの親ノードに転送し、
該ツリーのユーザノード以外の該パケットルーティング手段は、ルーティング処理前に名前解決処理を行い、該名前解決処理では、
該ヘッダの送信先アドレス又は送信元アドレスの替わりに名前が用いられている場合、該名前が該名前解決テーブル上に存在すれば、該名前をアドレスに変換し該ヘッダの名前を該アドレスで置換し、該名前が該名前解決テーブル上に存在せず且つ自ノードの親ノードが存在すれば該パケットを該親ノードに転送し、該名前が該名前解決テーブル上に存在せず且つ該親ノードが存在しなければオペレーティングシステムに例外エラーを発生させる。
In a third aspect, the packet routing means of a node other than the user node of the tree includes a name resolution table that associates the names and addresses of the own node and all of its descendant nodes,
The packet routing means of each user node forwards the packet to the parent node of its own node when a name is used instead of the transmission destination address or the transmission source address of the header,
The packet routing means other than the user node of the tree performs name resolution processing before routing processing, and in the name resolution processing,
When a name is used in place of the destination address or source address of the header, if the name exists on the name resolution table, the name is converted into an address and the header name is replaced with the address. If the name does not exist in the name resolution table and the parent node of the own node exists, the packet is forwarded to the parent node, and the name does not exist in the name resolution table and the parent node If does not exist, raise an exception error in the operating system.

本発明の第4態様は、上記(A)〜(C)のいずれであってもよい。   The fourth aspect of the present invention may be any of the above (A) to (C).

この第4態様では、該ツリーの各ノードの該パケットルーティング手段は、ルーティング処理前に名前解決処理を行い、該名前解決処理では、
該ヘッダの送信先アドレス又は送信元アドレスの替わりに名前が用いられている場合、該名前が該名前解決テーブル上に存在すれば、該名前をアドレスに変換し該ヘッダの名前を該アドレスで置換し、該名前が該名前解決テーブル上に存在せず又は自ノードに該名前解決テーブルが存在しないときには、
該自ノードの親ノードが存在すれば該パケットを該親ノードに転送し、該親ノードが存在しなければオペレーティングシステムに例外エラーを発生させる。
In this fourth aspect, the packet routing means of each node of the tree performs name resolution processing before routing processing, and in the name resolution processing,
When a name is used in place of the destination address or source address of the header, if the name exists on the name resolution table, the name is converted into an address and the header name is replaced with the address. When the name does not exist on the name resolution table or the name resolution table does not exist on the own node,
If the parent node of the own node exists, the packet is transferred to the parent node, and if the parent node does not exist, an exception error is generated in the operating system.

上記第1〜4態様のいずれも、名前解決テーブルを参照して、パケットのヘッダ内の送信元及び送信先の名前をアドレスに変換するので、通信先ノードの配置が異なっても、ソフトウェア構成を変更することなくオブジェクト間通信を行うことができるという効果を奏する。   In any of the first to fourth aspects, referring to the name resolution table, the source and destination names in the packet header are converted into addresses, so that the software configuration can be changed even if the arrangement of the communication destination nodes is different. There is an effect that communication between objects can be performed without changing.

上記第1態様の構成によれば、ユーザノードの1つである送信元ノードで名前解決を行うことができるという効果を奏する。   According to the structure of the said 1st aspect, there exists an effect that name resolution can be performed in the transmission source node which is one of the user nodes.

上記第2態様の構成によれば、ルートノードのみに名前解決テーブルを持たせればよく、システム全体に必要なメモリ容量を低減することができるという効果を奏する。   According to the configuration of the second aspect, only the root node needs to have the name resolution table, and the memory capacity required for the entire system can be reduced.

上記第3態様の構成によれば、第1態様の場合よりもシステム全体に必要なメモリ容量を低減することができるとともに、名前解決のために必ずルートノードまでパケットを転送する必要がないので、第2態様の場合よりも高速通信が可能となるという効果を奏する。   According to the configuration of the third aspect, it is possible to reduce the memory capacity required for the entire system than in the case of the first aspect, and it is not necessary to transfer the packet to the root node for name resolution. There is an effect that high-speed communication is possible compared to the case of the second mode.

上記第4態様の構成によれば、名前解決テーブルの配置の仕方が変更になっても、パケットルーティング手段の構成を変更する必要がないという効果を奏する。   According to the configuration of the fourth aspect, there is an effect that it is not necessary to change the configuration of the packet routing means even if the arrangement of the name resolution table is changed.

上記いずれの態様も、該ツリーのユーザノード以外のノードは、OS層以下の通信方式に依存する部分を隠蔽可能なミドルウェア層に配置されており、また、該ツリーの各ノードに、値により親子関係を区別可能なアドレスが設定されるとともに、送信先アドレス及び送信元アドレスをヘッダに含むパケットを該ツリーの親子ノード間でルーティングすることにより、該隠蔽を実現しているので、ハードウェア構成に依存しない通信方式でプログラミングすることができるという効果を奏する。   In any of the above aspects, the nodes other than the user node of the tree are arranged in the middleware layer that can conceal the part depending on the communication method below the OS layer, and each node of the tree has a parent and child by value. An address that can distinguish the relationship is set, and the concealment is realized by routing a packet including the destination address and the source address in the header between the parent and child nodes of the tree. There is an effect that programming can be performed by a communication method that does not depend.

本発明の他の目的、特徴的な構成及び効果は、以下の説明を特許請求の範囲及び図面の記載と関係づけて読むことにより明らかになる。   Other objects, characteristic configurations and effects of the present invention will become apparent from the following description read in connection with the appended claims and the drawings.

本発明の、マルチプロセッシングシステムにおけるオブジェクト間通信装置が適用される実施例1のマルチプロセッシングシステムを示す概略構成図である。BRIEF DESCRIPTION OF THE DRAWINGS It is a schematic block diagram which shows the multiprocessing system of Example 1 with which the communication apparatus between objects in a multiprocessing system of this invention is applied. アプリケーション層からハードウェア層までの概略階層構造図である。It is a schematic hierarchical structure figure from an application layer to a hardware layer. 本発明の、マルチプロセッシングシステムにおけるオブジェクト間通信装置の実施例1に係るユーザノード間通信オブジェクトであるノードのツリー図である。It is a tree diagram of a node which is a communication object between user nodes concerning Example 1 of an inter-object communication device in a multiprocessing system of the present invention. ユーザノード間通信での送信対象パケットのフォーマット概略図である。It is a format schematic diagram of the transmission object packet in communication between user nodes. データのパケット化処理を示す概略フローチャートである。It is a schematic flowchart which shows the packetization process of data. (A)は図3のリーフノード又はルートノードの名前解決テーブルを示す図、(B)〜(D)はそれぞれ、図3のノードN10、N20及びN30のルーティングテーブルを示す図である。(A) is a figure which shows the name resolution table of the leaf node or root node of FIG. 3, (B)-(D) is a figure which shows the routing table of the nodes N10, N20, and N30 of FIG. 3, respectively. リーフノード以外の任意のノードが、その転送バッファ内のパケットを次ノードへ転送するルーティング処理を示す概略フローチャートである。It is a schematic flowchart which shows the routing process which arbitrary nodes other than a leaf node transfer the packet in the forwarding buffer to the next node. (A)及び(B)はそれぞれ、図3のノードN10及びノードN00のルーティングテーブルを示す図である。(A) and (B) are diagrams showing the routing tables of the nodes N10 and N00 of FIG. 3, respectively. 名前解決テーブル作成手順を示す概略フローチャートである。It is a schematic flowchart which shows a name resolution table preparation procedure. 本発明の、マルチプロセッシングシステムにおけるオブジェクト間通信装置の実施例2に係る通信オブジェクトノードツリー図である。It is a communication object node tree figure which concerns on Example 2 of the communication apparatus between objects in a multiprocessing system of this invention. 本発明の、マルチプロセッシングシステムにおけるオブジェクト間通信装置の実施例3が適用されるマルチプロセッシングシステムを示す概略構成図である。It is a schematic block diagram which shows the multiprocessing system with which Example 3 of the communication apparatus between objects in a multiprocessing system of this invention is applied. 図11に対応した通信オブジェクトノードツリー図である。FIG. 12 is a communication object node tree diagram corresponding to FIG. 11. 本発明の実施例4の通信オブジェクトノードツリー図である。It is a communication object node tree figure of Example 4 of this invention. リーフノード以外の任意のノードが、その転送バッファ内のパケットを次ノードへ転送するルーティング処理を示す概略フローチャートである。It is a schematic flowchart which shows the routing process which arbitrary nodes other than a leaf node transfer the packet in the forwarding buffer to the next node. (A)〜(C)はそれぞれ、図13のノードN110、N100及びN000のルーティングテーブル概略構成図である。(A)-(C) is a routing table schematic block diagram of node N110 of FIG. 13, N100, and N000, respectively. 転送パケット記憶部の概略説明図である。It is a schematic explanatory drawing of the transfer packet memory | storage part. 転送パケット記憶部の概略説明図である。It is a schematic explanatory drawing of the transfer packet memory | storage part. 同じメモリ空間内に配置されたノードN10及びN00に関するパケット送受信の機能ブロック図である。It is a functional block diagram of packet transmission / reception regarding nodes N10 and N00 arranged in the same memory space.

図1は、本発明の、マルチプロセッシングシステムにおけるオブジェクト間通信装置が適用される実施例1のマルチプロセッシングシステムを示す概略図である。 FIG. 1 is a schematic diagram illustrating a multiprocessing system according to a first embodiment to which an inter-object communication device in a multiprocessing system according to the present invention is applied.

このシステムでは、マルチコアプロセッサ01とシングルコアプロセッサ02との間が、PCIeで結合されている。マルチコアプロセッサ01は、プロセッサコア10とプロセッサコア20とを備え、それらの間が不図示の内部バスで結合されている。シングルコアプロセッサ02のプロセッサコア30は、マルチコアプロセッサ01の該内部バスと、PCIeで結合されている。   In this system, the multi-core processor 01 and the single-core processor 02 are coupled by PCIe. The multi-core processor 01 includes a processor core 10 and a processor core 20, and they are connected by an internal bus (not shown). The processor core 30 of the single core processor 02 is coupled to the internal bus of the multicore processor 01 by PCIe.

図2は、アプリケーション層からハードウェア層までの概略階層構造を示している。   FIG. 2 shows a schematic hierarchical structure from the application layer to the hardware layer.

OS層以下においては、従来と同様に、プロセッサコア10と20との間の通信は上述のMCAPIで行われ、プロセッサコア10とプロセッサコア30との間及びプロセッサコア20とプロセッサコア30との間の通信は、PCIeで行われる。   In the OS layer and below, communication between the processor cores 10 and 20 is performed by the above-described MCAPI as in the prior art, and between the processor core 10 and the processor core 30 and between the processor core 20 and the processor core 30. The communication is performed by PCIe.

本実施例1では、後述のオブジェクト間通信装置を備えることにより、ユーザノード(ユーザアプリケーション内のオブジェクトであるノード)間通信において、MCAPIとPCIeの通信方式の選択をすることなく、すなわち通信相手のハードウェア上の位置を考慮することなく、統一的な通信を行えるようしている。 In the first embodiment, by providing an inter-object communication device, which will be described later, in communication between user nodes (nodes that are objects in the user application), without selecting the communication method of MCAPI and PCIe, that is, the communication partner Unified communication can be performed without considering the position on the hardware.

図3において、リーフノードであるユーザノードN11及びN12はいずれも、プロセッサコア10に結合された(でアクセス可能な)メモリ空間内に配置されているアプリケーション層内のオブジェクトである。これらオブジェクトは、互いに異なるアプリケーションに属していても、同一アプリケーションに属していてもよい。この点は、以下においても同様である。   In FIG. 3, user nodes N <b> 11 and N <b> 12 that are leaf nodes are both objects in the application layer arranged in a memory space coupled to (accessible by) the processor core 10. These objects may belong to different applications or may belong to the same application. This also applies to the following.

同様に、リーフノードであるユーザノードN21及びN22はそれぞれ、プロセッサコア20に結合されたメモリ空間内に配置されているアプリケーション層内のオブジェクトである。また、リーフノードであるユーザノードN31及びN32はそれぞれ、プロセッサコア30に結合されたメモリ空間内に配置されているアプリケーション層内のオブジェクトである。   Similarly, user nodes N21 and N22, which are leaf nodes, are objects in the application layer arranged in a memory space coupled to the processor core 20, respectively. The user nodes N31 and N32 that are leaf nodes are objects in the application layer arranged in the memory space coupled to the processor core 30.

これら6個のオブジェクト間の通信経路は、6X5/2=15通り有り、通信オブジェクト数が増えるとその通信経路数が増大する。また、メモリ空間が互いに異なるアプリケーション層内のオブジェクト間で直接通信を行おうとすると、その構成の一般化が容易でない。   There are 6 × 5/2 = 15 communication paths between these six objects, and the number of communication paths increases as the number of communication objects increases. In addition, when direct communication is performed between objects in application layers having different memory spaces, it is not easy to generalize the configuration.

そこで、図3に示すようなツリー構造のノード間通信を組み合わせることにより、任意のリーフノード間通信を行う。すなわち、エッジで結合された親子ノード間でバケットを順次転送することにより、アプリケーション層のユーザノード間で通信を行う。エッジで結合されたノード間は、互いに相手の存在を知っていて、これらノード間でデータを送信可能であることを示している。   Therefore, arbitrary inter-leaf communication is performed by combining inter-node communication having a tree structure as shown in FIG. That is, communication is performed between user nodes in the application layer by sequentially transferring buckets between parent and child nodes connected at the edge. The nodes connected at the edge know each other's existence, indicating that data can be transmitted between these nodes.

ノードN10、N20及びN30はそれぞれ、図1のプロセッサコア10、20及び30に結合されたメモリ空間内に配置されているミドルウェア層内の通信オブジェクトである。また、ルートノードN00は、仮想ノードであり、プロセッサコア10、20及び30のいずれか1つ(好ましくはこれらのうち最もプロセッサ間通信量が多いと想定されるプロセッサコア)に結合されたメモリ空間内に配置されているミドルウェア層内の通信オブジェクトである。   Nodes N10, N20, and N30 are communication objects in the middleware layer that are arranged in the memory space coupled to the processor cores 10, 20, and 30 of FIG. The root node N00 is a virtual node, and is a memory space coupled to any one of the processor cores 10, 20, and 30 (preferably a processor core that is assumed to have the largest amount of inter-processor communication among them). It is a communication object in the middleware layer arranged inside.

同一メモリ空間内に配置されたアプリケーション層内オブジェクト間は、容易に直接通信を行うことができるが、将来のシステム変更により異なるメモリ空間内に配置されることも有り得るので、オブジェクトが同一メモリ空間内に配置されているか否かを問わず、統一的に図3のツリー構造を用いた通信を行うようにしてもよい。   Objects in the application layer that are placed in the same memory space can be directly communicated with each other easily. However, objects in the same memory space can be placed in different memory spaces due to future system changes. Regardless of whether or not they are arranged, communication using the tree structure of FIG. 3 may be performed uniformly.

リーフノード(転送元及び転送先ノード)は、その親ノードのみに接続されているので、転送先は必ず親ノードとなる。リーフノード以外のノード(中間ノード)では、ルーティングテーブルを参照して、自ノードアドレスと転送先アドレスとから、次に転送すべき、エッジを介し隣り合うノードの1つを決定する。この際、アドレス値からノードの親子関係やリーフノードであるか否か、ルートノードであるか否かを判定できるという条件を満たすように、ノードアドレスを決定すれば、ルーティングテーブルの情報量を削減することができるとともに、テーブル参照回数が低減するので、処理を高速化することができる。   Since leaf nodes (transfer source and transfer destination nodes) are connected only to their parent nodes, the transfer destination is always the parent node. A node other than the leaf node (intermediate node) refers to the routing table and determines one of the nodes adjacent to each other via an edge to be transferred next from its own node address and transfer destination address. At this time, if the node address is determined so that the parent / child relationship of the node, the leaf node, and the root node can be determined from the address value, the amount of information in the routing table can be reduced. Since the number of table references can be reduced, the processing can be speeded up.

図3中のノードNijのアドレスを[i,j]とすると、前記条件を満たすように、ijを定めている。すなわち、ノードNijは、i≠0、j≠0のとき、深さ2のリーフノードであり、その親ノードはj=0としたものであり、さらなる親ノードはi=0としたルートノードN00である。ルートノードには、親ノードがない。ルートノード以外は、親ノードは1つ(上に登るエッジは1つ)であるので、親ノードを選択することはない。   If the address of the node Nij in FIG. 3 is [i, j], ij is determined so as to satisfy the above condition. That is, the node Nij is a leaf node having a depth of 2 when i ≠ 0 and j ≠ 0, the parent node is j = 0, and the further parent node is the root node N00 where i = 0. It is. The root node has no parent node. Other than the root node, since there is one parent node (one edge climbing up), the parent node is not selected.

ノードアドレス[i,j]は、例えば、i、jをそれぞれ4ビットで表すと、8ビットであり、最大256個のノードを表すことができる。   The node address [i, j] is, for example, 8 bits when i and j are each represented by 4 bits, and can represent a maximum of 256 nodes.

次に、リーフノード間データ送信例を説明する。以下では、自ノードアドレスを[i,j]、転送先アドレスを[i2,j2]とする。   Next, an example of data transmission between leaf nodes will be described. In the following, it is assumed that the own node address is [i, j] and the transfer destination address is [i2, j2].

例えばノードN11からN12へデータを送信する場合、リーフノードN11には子ノードが存在しないので、ノードN11からj=0とした親ノードN10へデータを送信する。ノードN10は、その子ノードである転送先ノードN12と結合されているので、このデータをノードN12へ転送する。   For example, when data is transmitted from the node N11 to the node N12, since there is no child node in the leaf node N11, the data is transmitted from the node N11 to the parent node N10 where j = 0. Since the node N10 is coupled to the transfer destination node N12 that is the child node, the node N10 transfers this data to the node N12.

次に、ノードN11からN32へデータを送信する場合、ノードN11には子ノードが存在しないので、ノードN11からj=0とした親ノードN10へデータを送信する。i≠i2であり、ノードN10の子ノードには転送先ノードN32が存在しないので、i=0とした親ノードであるルートノードN00へデータを転送する。ルートノードN00から、転送先ノードN32のj2を0にしたノードN30へ、データを転送する。次いでj=2とした子ノードN32へデータを転送する。   Next, when transmitting data from the node N11 to N32, since there is no child node in the node N11, data is transmitted from the node N11 to the parent node N10 where j = 0. Since i ≠ i2 and there is no transfer destination node N32 in the child node of the node N10, the data is transferred to the root node N00 which is the parent node where i = 0. Data is transferred from the root node N00 to the node N30 in which j2 of the transfer destination node N32 is set to 0. Next, the data is transferred to the child node N32 where j = 2.

一般に、自ノードNijにおいて、送信先ノードノードNi2j2のパケットを以下の規則でルーティングする。   In general, the packet of the destination node node Ni2j2 is routed by the following rule in the own node Nij.

(1)i=i2、j=j2であれば自ノード宛へのデータとして受信する。   (1) If i = i2 and j = j2, it is received as data addressed to the own node.

(2)自ノードがルートノード(i=0、j=0)のとき、ルーティングテーブル上に子ノードアドレスCA=[i2,0]が存在すれば、この子ノードへデータを転送する。自ノードが深さ1のノード(i≠0、j=0)のとき、ルーティングテーブル上に転送先の子ノードアドレスCA=[i2,j2]が存在すれば、この子ノードへデータを転送する。   (2) When the own node is a root node (i = 0, j = 0), if a child node address CA = [i2, 0] exists in the routing table, data is transferred to this child node. When the own node is a node having a depth of 1 (i ≠ 0, j = 0), if the destination child node address CA = [i2, j2] exists in the routing table, data is transferred to this child node. .

(3)その他の場合には、親ノードが存在すれば、すなわち自ノードがルートノードでなければ、親ノードのアドレスPAへ、すなわち自ノードがリーフノード(i≠0、j≠0)であればPA=[i,0]へ、自ノードが深さ1のノード(i≠0、j=0)であれば、親ノードアドレスPA=[0,0]のルートノードへ、データを転送する。   (3) In other cases, if the parent node exists, that is, if the own node is not the root node, to the address PA of the parent node, that is, if the own node is a leaf node (i ≠ 0, j ≠ 0) For example, if PA = [i, 0], if the node is a node having a depth of 1 (i ≠ 0, j = 0), the data is transferred to the root node of the parent node address PA = [0, 0]. .

1つの転送先へ複数のリーフノードからデータを並列して転送した場合、転送先においてそれらを区別する必要がある。そこで、送信対象データのヘッダには、送信先ノードアドレスのみならず、送信元ノードアドレスを含める。また、ハードウェア上又はソフトウェア上の理由による各ノードでの1回の送信可能最大データサイズのうちの最小値をDSmaxとすると、DSmaxを越えるサイズのデータを送信する場合、ヘッダを含めたデータサイズがDSmaxを超えないようにデータを分割して、それぞれにヘッダを付加するというパケット化処理を行う。この場合、パケット間のつながりを判定できるようにするため、IPプロトコルと同様のパケットシーケンス番号(次のパケットシーケンス番号=現在のパケットシーケンス番号+現在のパケットのペイロードのバイト数)をヘッダに付加する。   When data is transferred in parallel from a plurality of leaf nodes to one transfer destination, it is necessary to distinguish them at the transfer destination. Therefore, the header of the transmission target data includes not only the transmission destination node address but also the transmission source node address. Also, assuming that DSmax is the minimum value of the maximum data size that can be transmitted at each node for each reason due to hardware or software reasons, the data size including the header is required when transmitting data with a size exceeding DSmax. Packetization processing is performed in which data is divided so that DSmax does not exceed DSmax and a header is added to each of the data. In this case, a packet sequence number similar to the IP protocol (next packet sequence number = current packet sequence number + number of bytes of payload of the current packet) is added to the header so that the connection between packets can be determined. .

図4は、このシステムで使用されるパケットのフォーマットを示しており、ペイロードに、ヘッダとして送信先及び送信元のノードアドレスと、パッケトシーケンス番号とを付加したものを、パケットとする。   FIG. 4 shows the format of a packet used in this system. A packet is defined by adding a destination and source node address and a packet sequence number as a header to a payload.

パケット化及びデパケット化は、アプリケーション層のリーフノードのみで行われる。   Packetization and depacketization are performed only at the leaf node of the application layer.

図5は、データのパケット化処理を示す概略フローチャートである。以下、括弧内は図中のステップ識別符号である。   FIG. 5 is a schematic flowchart showing data packetization processing. In the following, the step identification codes in the figure are shown in parentheses.

(S0)DS=(転送対象データのデータサイズ)+(ヘッダのデータサイズ)がDS>DSmaxであれば、ステップS1へ進み、そうでなければステップS2へ進む。   (S0) If DS = (data size of transfer target data) + (header data size) is DS> DSmax, the process proceeds to step S1, and if not, the process proceeds to step S2.

(S1)分割後の各データがDS≦DSmaxとなるように、データを分割する。   (S1) The data is divided so that each divided data satisfies DS ≦ DSmax.

(S2)分割され又はされていないデータのそれぞれに、図4に示すようなヘッダを付加して、パケット化する。   (S2) A header as shown in FIG. 4 is added to each of the data that is not divided or not, and packetized.

(S3)これらのパケットを、転送バッファに格納する。   (S3) These packets are stored in the transfer buffer.

図3において、ソフトウェア又はハードウェアの改良に伴い、ツリー内のリーフノードの位置を変更すると、これに合わせて通信先のアドレスを変更しなければならない。この問題を解決するため、各リーフノードの下方に示すように、そのノードアドレスに対応する名前を、アドレスの替わりに用いる。   In FIG. 3, when the position of the leaf node in the tree is changed with the improvement of software or hardware, the address of the communication destination must be changed accordingly. In order to solve this problem, as shown below each leaf node, a name corresponding to the node address is used instead of the address.

図6(A)は、各リーフノードの名前をアドレスに変換するための名前解決テーブル40Aを示す。名前解決テーブルの配置の仕方には、以下の(A)〜(C)がある。   FIG. 6A shows a name resolution table 40A for converting the name of each leaf node into an address. There are the following methods (A) to (C) for arranging the name resolution table.

(A)この名前解決テーブル40Aを、各リーフノードのみに持たせる(少なくとも同一メモリ空間内に1つ持たせ、リーフノードでこれを参照する。)。   (A) The name resolution table 40A is provided only to each leaf node (at least one is provided in the same memory space, and this is referred to by the leaf node).

転送元ノードにおいて、パケットのヘッダに、アドレスの替わりに名前が用いられていれば、名前解決テーブル40Aを参照して、ヘッダ内の名前をアドレスに変更する(名前解決する)。この方法によれば、パケット送信元ノードで名前解決することができるが、リーフノード数に比例して、システム全体のメモリ使用量が増える。   In the forwarding node, if a name is used instead of an address in the packet header, the name in the header is changed to an address (name resolution) with reference to the name resolution table 40A. According to this method, the name can be resolved at the packet transmission source node, but the memory usage of the entire system increases in proportion to the number of leaf nodes.

(B)ルートノードのみに名前解決テーブル40Aを持たせる。   (B) Only the root node has the name resolution table 40A.

この場合、必ずルートノードまでパケットを転送して、名前解決しなければならない。   In this case, the name must be resolved by transferring the packet to the root node.

(C)リーフノード以外の各ノードに、そのノードと子孫ノードとに関する名前解決テーブルを持たせる。   (C) Each node other than the leaf node is provided with a name resolution table regarding the node and descendant nodes.

具体的には、図3のN00に図6(A)の名前解決テーブル40Aを持たせ、深さ1のノードN10、N20及びN30のノードにそれぞれ図6(B)〜(D)の名前解決テーブル40B〜40Dを持たせる。名前解決テーブルを持つそれぞれのノードで、名前が解決していなければ名前解決を試み、解決可能なら解決し、解決できなければ親ノードへパケットを転送する。   More specifically, N00 in FIG. 3 has the name resolution table 40A in FIG. 6A, and the name resolution in FIG. 6B to FIG. Tables 40B to 40D are provided. At each node having a name resolution table, if the name is not resolved, name resolution is attempted. If it is resolvable, it is resolved. If it is not resolved, the packet is forwarded to the parent node.

図7は、任意のノードが、その転送バッファ内のパケットを次ノードへ転送するルーティング処理を示す概略フローチャートである。図3中の各ノード(オブジェクト)は、この処理のプログラムを備えている。名前解決テーブルの配置については、上記(A)〜(C)のいずれであってもよい。   FIG. 7 is a schematic flowchart showing a routing process in which an arbitrary node transfers a packet in its transfer buffer to the next node. Each node (object) in FIG. 3 has a program for this processing. The arrangement of the name resolution table may be any of the above (A) to (C).

各ノードは、転送キューを備えており、この処理は、転送キューが、空の状態から要素が1個追加された状態になったときに発生するイベントに応答して、開始される。   Each node includes a transfer queue, and this process is started in response to an event that occurs when the transfer queue changes from an empty state to a state where one element is added.

この転送キューから先頭要素を取り出す毎に、ステップS10以下の処理を行う。   Every time a head element is taken out from this transfer queue, the processing from step S10 is performed.

(S10)パケットヘッダから、転送先アドレスDA及び自ノードアドレスSA、又はこれらの名前を取得する。   (S10) The transfer destination address DA and the own node address SA or their names are acquired from the packet header.

(S11)取得したものが転送元及び転送先のアドレスであればステップS14へ進み、名前が含まれていればステップS12へ進む。   (S11) If the acquired address is the address of the transfer source and transfer destination, the process proceeds to step S14, and if the name is included, the process proceeds to step S12.

(S12)自ノードの名前解決テーブル中に、取得したものと一致するものがあれば、それをアドレスに変換してヘッダの内容を書き換える。自ノードが名前解決テーブルを持っていない場合は、一致するものがないとみなす。   (S12) If there is something in the name resolution table of the own node that matches the acquired one, it is converted into an address and the contents of the header are rewritten. If the node does not have a name resolution table, it is considered that there is no match.

(S13)転送先の名前が解決済みとなればステップS15へ進み、そうでなければステップS14へ進む。   (S13) If the transfer destination name has been resolved, the process proceeds to step S15; otherwise, the process proceeds to step S14.

(S14)自ノードがルートノードであればステップS1Cへ進み、そうでなければステップS1Bへ進む。   (S14) If the local node is the root node, the process proceeds to step S1C; otherwise, the process proceeds to step S1B.

(S15)転送先アドレスDAが自ノードアドレスSAに等しければ(i=i2、j=j2であれば)、ステップS16へ進み、そうでなければステップS17へ進む。   (S15) If the transfer destination address DA is equal to the own node address SA (if i = i2, j = j2), the process proceeds to step S16; otherwise, the process proceeds to step S17.

(S16)自ノード宛受信バッファにこのパケットを格納し、ステップS1Dへ進む。   (S16) This packet is stored in the reception buffer addressed to its own node, and the process proceeds to step S1D.

(S17)転送先アドレスDAの値から論理的に、転送先アドレスDAが自ノードアドレスSAの子孫ノードアドレス(i=0、0<i2、又は、i=i2、j=0、0<j2)であるか否かを判定する。肯定判定した場合にはステップS18へ進み、そうでなければステップS1Aへ進む。   (S17) Logically from the value of the transfer destination address DA, the transfer destination address DA is a descendant node address of the own node address SA (i = 0, 0 <i2, or i = i2, j = 0, 0 <j2) It is determined whether or not. If the determination is affirmative, the process proceeds to step S18, and if not, the process proceeds to step S1A.

(S18)ステップS17の子孫ノードを含む、自ノードの子ノードのアドレスCA(CA=[i2,0]又はCA=[i2,j2])が、自ノードのルーティングテーブル上に子ノードアドレスとして存在すれば、ステップS19へ進み、そうでなければステップS1Cへ進む。   (S18) The address CA (CA = [i2,0] or CA = [i2, j2]) of the child node of the own node including the descendant node in step S17 exists as a child node address on the routing table of the own node. If so, the process proceeds to step S19; otherwise, the process proceeds to step S1C.

(S19)ステップS18で存在すると判定した子ノードのアドレスCAへパケットを転送し、ステップS1Dへ進む。   (S19) The packet is transferred to the address CA of the child node determined to exist in step S18, and the process proceeds to step S1D.

(S1A)親ノードが存在すれば、すなわち自ノードアドレスSAがルートノードでなければ、ステップS1Bへ進み、そうでなければステップS1Cへ進む。   (S1A) If a parent node exists, that is, if the own node address SA is not the root node, the process proceeds to step S1B, and if not, the process proceeds to step S1C.

(S1B)親ノードのアドレスPA(i≠0、j≠0であればPA=[i,0]、i≠0、j=0であればPA=[0,0])へパケットを転送し、ステップS1Dへ進む。   (S1B) The packet is transferred to the parent node address PA (PA = [i, 0] if i ≠ 0, j ≠ 0, PA = [0,0] if i ≠ 0, j = 0). The process proceeds to step S1D.

(S1C)OSに例外エラーの発生を通知し、このパケットを破棄する。アプリケーション側でこのエラーに対する処理をしていなければ、アプリケーションは停止し、この処理でエラーを無視していればステップS10へ戻る。   (S1C) The occurrence of an exception error is notified to the OS, and this packet is discarded. If the application does not process this error, the application stops. If the error is ignored in this process, the process returns to step S10.

(S1D)上記転送キューに先頭要素が存在すれば、ステップS10へ戻り、そうでなければ、図7の処理を終了する。   (S1D) If there is a head element in the transfer queue, the process returns to step S10; otherwise, the process of FIG. 7 is terminated.

ステップS19又はステップS1Bにおいては、ルーティングテーブルを参照して、通信インターフェイス方式を選択し、それに応じて転送先アドレスを変換し、転送する。すなわち、この処理をミドルウェア層で行うことにより、アプリケーション層ではアドレス[i,j]のみ使用すればよい。   In step S19 or step S1B, the communication interface method is selected with reference to the routing table, and the transfer destination address is converted and transferred accordingly. That is, by performing this process in the middleware layer, only the address [i, j] needs to be used in the application layer.

図8(A)及び(B)はそれぞれ、図3のノードN10及びN00のルーティングテーブルを示す。各テーブルにおいて、NULLは値が存在しないことを示す。また、子ノードインターフェイス(I/F)方式及び親ノードインターフェイス方式はそれぞれ、自ノードから子ノードへ及び自ノードから親ノードへのインターフェイス方式を示しており、値が0のとき、同一メモリ空間内でのパケット転送(パケット又はその参照の移動)、値が1のとき、同一プロセッサ内のプロセッサコア間のMCAPIによるパケット転送、値が2のとき、異なるプロセッサ間のPCIeによるパケット転送を示している。子ノードが複数ある場合にはそれぞれの子ノードインターフェイス方式を区切り記号/で区切って記述している。子ノード及び親ノードのインターフェイス属性は、上記方式での通信で必要な属性値であり、この値がNULLのときには既定の方法でパケットが転送されることを示している。また、親ノード/子ノードインターフェイス方式の値がNULLのとき、その親ノード/子ノードが存在しないことを示している。   8A and 8B show the routing tables of the nodes N10 and N00 in FIG. 3, respectively. In each table, NULL indicates that no value exists. The child node interface (I / F) method and the parent node interface method indicate interface methods from the own node to the child node and from the own node to the parent node, respectively. Packet transfer (movement of packet or reference thereof), when the value is 1, packet transfer by MCAPI between processor cores in the same processor, and when the value is 2, packet transfer by PCIe between different processors . When there are a plurality of child nodes, each child node interface method is described by separating it with a delimiter /. The interface attribute of the child node and the parent node is an attribute value necessary for communication by the above method. When this value is NULL, it indicates that the packet is transferred by a predetermined method. Further, when the value of the parent node / child node interface method is NULL, it indicates that the parent node / child node does not exist.

図8(B)では、インターフェイス方式が1又は2のときそれぞれ、インターフェイス属性がX1又はY1と記載されている。これらX1及びY1は、参照値であって、それぞれで参照されるデータブロック(構造体)に属性が記述されている。   In FIG. 8B, when the interface method is 1 or 2, the interface attribute is described as X1 or Y1, respectively. These X1 and Y1 are reference values, and attributes are described in the data blocks (structures) referenced by them.

ルーティングテーブルは、例えば、プログラムがプロセッサに対し対話的に設定させて、XMLファイルに変換させることにより、作成される。   The routing table is created, for example, by causing the program to interactively set the processor and converting it into an XML file.

図9は、名前解決テーブルを自動作成して、リーフノード以外へ自動配布する手順を示す概略フローチャートである。この処理は、マルチプロセッシングシステムの初期化処理で実行される。   FIG. 9 is a schematic flowchart showing a procedure for automatically creating a name resolution table and automatically distributing it to other than leaf nodes. This process is executed in the initialization process of the multiprocessing system.

(S20)各ノードのアドレスを決定する。例えば、図3において、各プロセッサコアに対応したノードN10、N20、N30のアドレスを、プロセッサコア検出順に決定し、これらの親ノードであるルートノードのアドレスを[0.0]とする。ルートノードは、最初に検出したプロセッサコアのメモリ空間内に配置し、又は、ユーザにプロセッサコアを選択させ、そのプロセッサコアのメモリ空間内に配置する。各アプリケーションで宣言されたリーフノードを、これと同じメモリ空間内の親ノードN10、N20又はN30の子ノードとして、そのアドレスを、図3と同様の仕方で決定する。   (S20) The address of each node is determined. For example, in FIG. 3, the addresses of the nodes N10, N20, and N30 corresponding to each processor core are determined in the order of processor core detection, and the address of the root node that is the parent node is set to [0.0]. The root node is placed in the memory space of the first detected processor core, or the user selects a processor core and is placed in the memory space of the processor core. The leaf node declared in each application is set as a child node of the parent node N10, N20 or N30 in the same memory space, and its address is determined in the same manner as in FIG.

(S21)各リーフノードは、アプリケーションで宣言されたリーフノードの名前を、ステップS20で決定したアドレスと対応付ける。   (S21) Each leaf node associates the name of the leaf node declared in the application with the address determined in step S20.

(S22)各リーフノードは、送信先アドレスをルートノードアドレス[0、0]とし、送信元アドレスを自ノードアドレスとし、ペイロードに自ノードの名前を含ませたパケットを送信する。   (S22) Each leaf node transmits a packet in which the destination address is the root node address [0, 0], the source address is the local node address, and the payload includes the name of the local node.

(S23)ルートノードは、ステップS22で送信されたパケットを受信して、図6(A)〜(D)に示すような名前解決テーブル40A〜40Dを作成する。   (S23) The root node receives the packet transmitted in step S22, and creates name resolution tables 40A to 40D as shown in FIGS.

(S24)ルートノードは、名前解決テーブル40Aを自ノード用として保存し、名前解決テーブル40B〜40DをそれぞれノードN10、N20、N30宛に配信する。ノードN10、N20、N30はそれぞれ、受信した名前解決テーブルを自ノード用として保存する。   (S24) The root node stores the name resolution table 40A for its own node, and distributes the name resolution tables 40B to 40D to the nodes N10, N20, and N30, respectively. Each of the nodes N10, N20, and N30 stores the received name resolution table for its own node.

本実施例1によれば、マルチプロセッシングシステム全体で通信オブジェクトノードのツリーを構成して、アプリケーション層内のリーフノード以外はミドルウェア層に配置し、ツリー上のノードを辿ってパケット通信を行うので、様々な構成のマルチプロセッシングシステムにおいて、比較的簡単な構成で、通信方式や通信経路やなどのハードウェアを意識することなくユーザノード間通信を行うことができるという効果を奏する。   According to the first embodiment, a tree of communication object nodes is configured in the entire multiprocessing system, and other than leaf nodes in the application layer are arranged in the middleware layer, and packet communication is performed by tracing the nodes on the tree. In multi-processing systems having various configurations, it is possible to perform communication between user nodes with a relatively simple configuration and without being aware of hardware such as a communication method and a communication path.

また、リーフノード間でアドレスの替わりに名前を使用してパケットを送信することができるので、ソフトウェア又はハードウェアの改良に伴いツリー内のリーフノードの位置を変更しても、これに合わせて通信先のアドレスを変更する必要がないという効果を奏する。   Packets can be sent using the name instead of the address between leaf nodes, so even if the position of the leaf node in the tree is changed due to software or hardware improvements, communication is performed accordingly. There is an effect that it is not necessary to change the previous address.

なお、図7のフローチャートにおいて、上記(A)〜(C)の   In the flowchart of FIG. 7, the above (A) to (C)

図10は、本発明の、マルチプロセッシングシステムにおけるオブジェクト間通信装置の実施例2に係る通信オブジェクトノードツリーを示す。 FIG. 10 shows a communication object node tree according to Embodiment 2 of the inter-object communication device in the multiprocessing system of the present invention.

このツリーでは、図3の深さ2と3のノード間に、アプリケーション層のリーフノードとの間の通信手順を簡単化するためのインターフェイスノードを挿入している。一般に、ノードツリーの深さをnとすると、アドレスの桁数([]内の","で区切られた数字の個数)はnとなり、この場合、n=3である。実施例1と同様に、ノードNijkのアドレスは、[i,j,k]である。   In this tree, an interface node for simplifying a communication procedure with a leaf node in the application layer is inserted between nodes of depths 2 and 3 in FIG. In general, when the depth of the node tree is n, the number of digits of the address (the number of numbers delimited by “,” in []) is n, and in this case, n = 3. Similar to the first embodiment, the address of the node Nijk is [i, j, k].

深さ0及び1のノードルートノードN000、N100、N200及びN300はそれぞれ、図3のルートノードN00、N10、N20及びN30と、アドレスのみ異なる。   The node root nodes N000, N100, N200, and N300 having depths 0 and 1 are different from the root nodes N00, N10, N20, and N30 in FIG.

一般に、自ノードNijkにおいて、送信先ノードノードNi2j2k2のパケットを以下の規則に従ってルーティングする。   In general, the own node Nijk routes the packet of the transmission destination node node Ni2j2k2 according to the following rules.

(1a)i=i2、j=j2、k=k2であれば、自ノード宛へのデータとして受信する。   (1a) If i = i2, j = j2, and k = k2, the data is received as data addressed to the own node.

(2a)自ノードがルートノード(i=0、j=0、j=0)のとき、ルーティングテーブル上に子ノードアドレスCA=[i2,0、0]が存在すれば、この子ノードへデータを転送する。自ノードが深さ1のノード(i≠0、j=0、j=0)のとき、ルーティングテーブル上に子ノードアドレスCA=[i2,j2、0]が存在すれば、この子ノードへデータを転送する。自ノードが深さ2のノード(i≠0、j≠0、j=0)のとき、ルーティングテーブル上に子ノードアドレスCA=[i2,j2、k2]が存在すれば、この子ノードへデータを転送する。   (2a) When the local node is a root node (i = 0, j = 0, j = 0), if a child node address CA = [i2, 0, 0] exists in the routing table, data is transmitted to this child node. Forward. When the own node is a node having a depth of 1 (i ≠ 0, j = 0, j = 0), if a child node address CA = [i2, j2, 0] exists in the routing table, data is transmitted to this child node. Forward. When the own node is a node of depth 2 (i ≠ 0, j ≠ 0, j = 0), if a child node address CA = [i2, j2, k2] exists in the routing table, data is transmitted to this child node. Forward.

(3a)その他の場合には、親ノードが存在すれば、すなわち自ノードがルートノードでなければ、親ノードのアドレスPAへ、すなわち自ノードがリーフノード(i≠0、j≠0、k≠0)であれば親ノードアドレスPA=[i,j,0]へ、自ノードが深さ2のノード(i≠0、j≠0、k=0)であれば親ノードアドレスPA=[i,0,0]へ、自ノードが深さ1のノード(i≠0、j=0、k=0)であれば親ノードアドレスPA=[0,0,0]のルートノードへ、データを転送する。   (3a) In other cases, if a parent node exists, that is, if the own node is not a root node, the address PA of the parent node, that is, the own node is a leaf node (i ≠ 0, j ≠ 0, k ≠ 0) to the parent node address PA = [i, j, 0], and if the self node is a node having a depth of 2 (i ≠ 0, j ≠ 0, k = 0), the parent node address PA = [i , 0, 0], if the node is a node having a depth of 1 (i ≠ 0, j = 0, k = 0), the data is sent to the root node of the parent node address PA = [0, 0, 0]. Forward.

図7のルーティング処理は、上記(1a)〜(1c)の規則を考慮すれば容易に理解できるので、その説明を省略する。   The routing process of FIG. 7 can be easily understood in consideration of the rules (1a) to (1c) described above, and the description thereof is omitted.

パケット化及びデパケット化は、上記インターフェイスノードで行われる。このインターフェイスノードも、図7のルーティング処理を行う。   Packetization and depacketization are performed at the interface node. This interface node also performs the routing process of FIG.

他の点は、上記実施例1と同様である。   The other points are the same as in the first embodiment.

図11は、本発明の、マルチプロセッシングシステムにおけるオブジェクト間通信装置の実施例3が適用されるマルチプロセッシングシステムを示す概略図である。 FIG. 11 is a schematic diagram showing a multiprocessing system to which the third embodiment of the inter-object communication device in the multiprocessing system of the present invention is applied.

このシステムでは、4つのマルチコアプロセッサ100、200、300及び400を備えている。マルチコアプロセッサ100は、プロセッサコア110、120、130及び140の間が内部バスで結合され、マルチコアプロセッサ200は、プロセッサコア210、220、230及び240の間が内部バスで結合され、マルチコアプロセッサ300は、プロセッサコア310、320、330及び340の間が内部バスで結合され、マルチコアプロセッサ400は、プロセッサコア410、420、430及び440の間が内部バスで結合されている。マルチコアプロセッサ100、200、300及び400の間はPCIeで結合されている。   This system includes four multi-core processors 100, 200, 300 and 400. The multi-core processor 100 is coupled between the processor cores 110, 120, 130, and 140 via an internal bus, the multi-core processor 200 is coupled between the processor cores 210, 220, 230, and 240 via an internal bus, and the multi-core processor 300 is The processor cores 310, 320, 330, and 340 are coupled by an internal bus, and the multi-core processor 400 is coupled by the internal bus between the processor cores 410, 420, 430, and 440. The multi-core processors 100, 200, 300, and 400 are connected by PCIe.

上記同様に、各プロセッサ内のプロセッサコア間では、MCAPIで通信が行われ、異なるプロセッサ間では、PCIeによる通信が行われる。   Similarly to the above, communication between the processor cores in each processor is performed using MCAPI, and communication between different processors is performed using PCIe.

図12は、図11に対応した通信オブジェクトノードツリーを示す。   FIG. 12 shows a communication object node tree corresponding to FIG.

ノードNijkのアドレスは、[i,j,k]である。全ノードNijkのうち、ijkが図11中の要素の符号と一致するものは、その要素に対応したノードである。また、例えばノードN110とプロセッサコア110のように、ijkが図11中のプロセッサコアの符号と一致するノードは、実施例1と同様に、プロセッサコアijkに結合されたメモリ空間内に配置されているミドルウェア層内の通信オブジェクトである。   The address of the node Nijk is [i, j, k]. Among all the nodes Nijk, those whose ijk matches the code of the element in FIG. 11 are nodes corresponding to that element. Further, for example, nodes such as the node N110 and the processor core 110 whose ijk matches the code of the processor core in FIG. 11 are arranged in the memory space coupled to the processor core ijk as in the first embodiment. Communication object in the middleware layer.

このツリーでは、深さ1のノードをプロセッサに対応した仮想ノードとして配置しており、このノードは、プロセッサ毎のサブツリーのルートノードとなっている。この深さ1のノードは、ルートノードN000でのエッジ数を低減して、ルートノードN000でパケットが混雑するのを避けるとともに、各プロセッサでルーティングを並列処理している。すなわち、この深さ1のノードは、この目的のためのインターフェイスノードである。   In this tree, a node having a depth of 1 is arranged as a virtual node corresponding to a processor, and this node is a root node of a subtree for each processor. The node of depth 1 reduces the number of edges at the root node N000, avoids congestion of packets at the root node N000, and performs parallel processing of routing by each processor. That is, this depth 1 node is an interface node for this purpose.

各仮想ノードは、その子ノードのいずれか1つと同じメモリ空間内に配置されているミドルウェア層内の通信オブジェクトである。例えば、ノードN000及びN100はノードN110と同じメモリ空間内に配置されているミドルウェア層内の通信オブジェクトである。   Each virtual node is a communication object in the middleware layer that is arranged in the same memory space as any one of its child nodes. For example, the nodes N000 and N100 are communication objects in the middleware layer arranged in the same memory space as the node N110.

深さ3のリーフノードは、図3の場合と同様に、ユーザノードである。   A leaf node having a depth of 3 is a user node as in the case of FIG.

他の点は、実施例1と同様である。   Other points are the same as in the first embodiment.

AMPでは、コストパフォーマンスを向上をさせると共に消費電力を低減するために、様々な構成のマルチプロセッシングシステムが用いられ、また、システムの改良の際にその構成も変化していく。しかし、以上の実施例1〜3から容易に理解できるように、本発明のマルチプロセッシングシステムにおけるオブジェクト間通信装置は、システムの構成によらず統一した方式で、ハードウェア構成やOSの種類によらずユーザノード間で通信を行うことができる。 In AMP, in order to improve cost performance and reduce power consumption, a multiprocessing system having various configurations is used, and the configuration changes as the system is improved. However, as can be easily understood from the first to third embodiments, the inter-object communication device in the multiprocessing system of the present invention is a unified method regardless of the system configuration, and depends on the hardware configuration and the type of OS. First, communication can be performed between user nodes.

図13は、本発明の実施例4の通信オブジェクトノードツリーを示す。   FIG. 13 shows a communication object node tree according to the fourth embodiment of the present invention.

ハードウェア構成は、図11と同一である。このツリーでは、深さ2のノードにおいて、同一プロセッサ内の任意の2つのプロセッサコアに対応したノードの間をエッジで結合して、これらの間で直接通信可能にしている点が、図12のツリーと異なっている。   The hardware configuration is the same as in FIG. In this tree, in a node having a depth of 2, nodes corresponding to any two processor cores in the same processor are connected by an edge so that communication can be performed directly between them. It is different from the tree.

図14は、任意のノードが、その転送バッファ内のパケットを次ノードへ転送するルーティング処理を示す概略フローチャートである。図14中の各ノードは、それぞれ独立にこの処理のプログラムを備えている。   FIG. 14 is a schematic flowchart showing a routing process in which an arbitrary node transfers a packet in its transfer buffer to the next node. Each node in FIG. 14 has a program for this processing independently.

各ノードは、転送キューを備えており、この処理は、転送キューが、空の状態から要素が1個追加された状態になったときに発生するイベントに応答して、開始される。   Each node includes a transfer queue, and this process is started in response to an event that occurs when the transfer queue changes from an empty state to a state where one element is added.

この転送キューから先頭要素を取り出す毎に、ステップS10以下の処理を行う。   Every time a head element is taken out from this transfer queue, the processing from step S10 is performed.

図14の処理が図7のそれと異なる点は、兄弟ノードへのパケット転送に対応して、ステップS15とステップS17との間にステップS30を追加し、さらに、これに関係したステップS31及びステップS32を追加している点である。次に、この差分を説明する。   The processing of FIG. 14 differs from that of FIG. 7 in that step S30 is added between step S15 and step S17 corresponding to packet transfer to the sibling node, and further, step S31 and step S32 related thereto. It is a point that is added. Next, this difference will be described.

ステップS15で否定判定されるとステップS30へ進む。   If a negative determination is made in step S15, the process proceeds to step S30.

(S30)転送先アドレスDAの値から論理的に、転送先アドレスDAが自ノードアドレスSAと兄弟ノードの子孫ノード(転送先ノードの祖先ノードが自ノードアドレスSAと兄弟ノード)のアドレスBAと判定すれば、ステップS31へ進み、そうでなければステップS17へ進む。より具体的には、転送先アドレスDAが自ノードアドレスSAと兄弟ノードの子孫ノードであるか否かの判定は、次のようにして行う。すなわち、自ノードが深さ1のノード(i≠0、j=0、j=0)のとき、ルーティングテーブル上に兄弟ノードアドレスBA=[i2,0,0]が存在すれば、この兄弟ノードへデータを転送する。自ノードが深さ2のノード(i≠0、j≠0、j=0)のとき、ルーティングテーブル上に兄弟ノードアドレスBA=[i2,j2、0]が存在すれば、この兄弟ノードへデータを転送する。   (S30) Logically, based on the value of the transfer destination address DA, the transfer destination address DA is determined to be the address BA of the own node address SA and a descendant node of the sibling node (the ancestor node of the transfer destination node is the own node address SA and the sibling node). If so, the process proceeds to step S31; otherwise, the process proceeds to step S17. More specifically, whether or not the transfer destination address DA is a descendant node of the node address SA and a sibling node is determined as follows. That is, when the node is a node having a depth of 1 (i ≠ 0, j = 0, j = 0), if the sibling node address BA = [i2, 0, 0] exists in the routing table, this sibling node Transfer data to When the own node is a node of depth 2 (i ≠ 0, j ≠ 0, j = 0), if a sibling node address BA = [i2, j2, 0] exists in the routing table, data is transmitted to this sibling node. Forward.

(S31)自ノードのルーティングテーブルに兄弟ノードアドレスBAが含まれていればステップS32へ進み、そうでなければステップS17へ進む。   (S31) If sibling node address BA is included in the routing table of the own node, the process proceeds to step S32; otherwise, the process proceeds to step S17.

(S32)自ノードのルーティングテーブルを参照して転送方式を決定し、転送先アドレスをその方式のアドレスに変換して、兄弟ノードアドレスBAへパケットを転送し、ステップS1Cへ進む。   (S32) The transfer method is determined by referring to the routing table of the own node, the transfer destination address is converted to the address of the method, the packet is transferred to the sibling node address BA, and the process proceeds to step S1C.

図15(A)〜(C)はそれぞれ、図13のノードN110、ノードN100及びルートノードN000のルーティングテーブルを示す。このテーブルの構成は、兄弟ノードについて ノードに結合された兄弟ノードのアドレス、そのノードへの通信のインターフェイス方式及びインターフェイス属性を、図8のルーティングテーブルに追加したものとなっている。   FIGS. 15A to 15C respectively show routing tables of the node N110, the node N100, and the route node N000 of FIG. The configuration of this table is obtained by adding the address of the sibling node coupled to the node, the interface method of communication to the node, and the interface attribute for the sibling node to the routing table of FIG.

他の点は、実施例3と同様である。   Other points are the same as in the third embodiment.

実施例5では、図12のツリーにおいて、仮想ノードの複数の子ノードのそれぞれが配置されたメモリ空間内に、該仮想ノードを配置することにより、同じメモリ空間内で任意のノードからルートノードまで登れるようにしている。すなわち、仮想ノードN000を、各プロセッサコアに結合されたメモリ空間のそれぞれに配置し、深さ1のそれぞれの仮想ノードを、該ノードのそれぞれの子ノードが配置されたメモリ空間と同じメモリ空間のそれぞれに配置することにより、任意のノードからルートノードまで登る場合に、同じメモリ空間内にそれらのノードが存在(転送バッファも、このノードと同じメモリ空間内に存在)するようにしている。各仮想ノードは、アドレスが互いに同一であっても、その位置によって転送方式が異なるので、独自のルーティングテーブルを持っている。   In the fifth embodiment, by arranging the virtual node in the memory space in which each of the plurality of child nodes of the virtual node is arranged in the tree of FIG. 12, from any node to the root node in the same memory space. I try to climb. That is, the virtual node N000 is placed in each of the memory spaces coupled to each processor core, and each virtual node having a depth of 1 is placed in the same memory space as the memory space in which each child node of the node is placed. By arranging each of them, when climbing from an arbitrary node to the root node, these nodes exist in the same memory space (the transfer buffer also exists in the same memory space as this node). Each virtual node has its own routing table because the transfer method differs depending on its position even if the addresses are the same.

ルートノードからの下りは、その子ノード(仮想ノード)へパケットを転送するときに、同一アドレスを持つ複数の子ノードのうち、送信先ノードが配置されているメモリ空間内の子ノードへパケットを転送し、その後は、このメモリ空間内のみのノードを辿って、送信先ノードまでパケットを転送しながら下っていく。   Downstream from the root node, when transferring a packet to its child node (virtual node), it transfers the packet to the child node in the memory space where the destination node is located among multiple child nodes with the same address Thereafter, the node traces only the node in the memory space and goes down while transferring the packet to the destination node.

これにより、同じメモリ空間内でのパケット転送処理の割合が大きくなるので、転送処理を高速化することができる。   As a result, the rate of packet transfer processing within the same memory space increases, so that the transfer processing can be speeded up.

他の点は、実施例3と同一である。   The other points are the same as those in the third embodiment.

本実施例5によれば、図13のように同一プロセッサ内のプロセッサコア間を兄弟ノードとして結合することなく、より簡単で統一的な構成により、図13とほぼ同様に、パケットを転送することが可能となる。   According to the fifth embodiment, packets are transferred almost in the same manner as in FIG. 13 with a simpler and unified configuration without connecting the processor cores in the same processor as sibling nodes as shown in FIG. Is possible.

なお、上記実施例1、2及び4においても、本実施例と同様に構成することができる。   The first, second, and fourth embodiments can be configured in the same manner as the present embodiment.

同一メモリ空間内でのパケット転送は、共有メモリ内にパケットを配置することにより、パケットを実際に転送せずに、パケットの参照のみを、ノードの転送キューから次ノードの受信キューへ移動させればよい。   For packet transfer within the same memory space, by placing the packet in the shared memory, only the packet reference can be moved from the node transfer queue to the next node receive queue without actually transferring the packet. That's fine.

例えば図16に示すように、この共有メモリ内にアプリケーション11用の送信バッファ11Sを割り当てる。そして、同一メモリ空間内の各ノード、例えば、図3のノードN11に、図16の転送キューN11−14を備え、図3のルートノードN10に、図16の転送キューN10−14を備える。   For example, as shown in FIG. 16, a transmission buffer 11S for the application 11 is allocated in this shared memory. Further, each node in the same memory space, for example, the node N11 in FIG. 3 includes the transfer queue N11-14 in FIG. 16, and the root node N10 in FIG. 3 includes the transfer queue N10-14 in FIG.

各キュー内の要素は、送信バッファ11S内の1つのパケットの先頭アドレスとバイト数とを、参照として保持している。転送キューN11−14の先頭要素EAを取り出して、これに対応した送信バッファ11S内のパケットAをノードN10へ転送する場合、実際にはパケットを転送せずに、この要素EAを、図7のステップS1Aにおいて、図17に示すように、転送キューN10−14の末尾に加える(移動させる)。これにより、ノードN11からノードN10へパケットが論理的に転送されたことになる。   The element in each queue holds the head address and the number of bytes of one packet in the transmission buffer 11S as a reference. When the leading element EA of the transfer queue N11-14 is taken out and the packet A in the transmission buffer 11S corresponding to this is transferred to the node N10, this element EA is not transferred to the node N10 in practice, but the element EA In step S1A, as shown in FIG. 17, it is added (moved) to the end of the transfer queue N10-14. As a result, the packet is logically transferred from the node N11 to the node N10.

図18は、同じメモリ空間10M内に配置されたノードN11、N10及びN00に関するパケット送受信の機能ブロック図である。メモリ空間10Mは、図1のプロセッサコア10に結合されている。図18では、各ノードの互いに対応するノードを同一符号で示しており、以下、ノードNijの要素pqをNij−pqと表記する。   FIG. 18 is a functional block diagram of packet transmission / reception regarding the nodes N11, N10 and N00 arranged in the same memory space 10M. Memory space 10M is coupled to processor core 10 of FIG. In FIG. 18, the nodes corresponding to each other are denoted by the same reference numerals, and hereinafter, the element pq of the node Nij is expressed as Nij−pq.

ノードN11は、アプリケーション11内のオブジェクトであり、そのパケット化部13は、送信バッファ11Sに格納されたデータを、図5のフローチャートに従ってパケット化し、そのパケットの参照EAを、上記のように転送キューN11−14の末尾に追加する。   The node N11 is an object in the application 11, and the packetizing unit 13 packetizes the data stored in the transmission buffer 11S according to the flowchart of FIG. 5, and the reference EA of the packet is transferred to the transfer queue as described above. Add to the end of N11-14.

転送キューN11−14が空の状態から1つの要素が追加された状態になると、そのイベントの発生に応答して、パケット送受信制御部N11−15は、図7の処理を介しする。上記ステップS1Aにおいて、パケット送受信制御部N11−15は転送キューN11−14の先頭要素を取り出し、これを転送キューN10−14の末尾に追加させる。同様に、転送キューN10−14が空の状態から1つの要素が追加された状態になると、そのイベントの発生に応答して、パケット送受信制御部N10−15は、図7の処理を介しし、転送キューN10−14の先頭要素を取り出し、上記ステップS1Aにおいて、これを転送キューN00−14の末尾に追加させる。   When one element is added from the empty transfer queue N11-14, the packet transmission / reception control unit N11-15 responds to the occurrence of the event through the processing of FIG. In step S1A, the packet transmission / reception control unit N11-15 extracts the head element of the transfer queue N11-14 and adds it to the end of the transfer queue N10-14. Similarly, when the transfer queue N10-14 changes from an empty state to a state where one element is added, in response to the occurrence of the event, the packet transmission / reception control unit N10-15 performs the processing of FIG. The head element of the transfer queue N10-14 is taken out and added to the end of the transfer queue N00-14 in step S1A.

転送キューN00−14が空の状態から1つの要素が追加された状態になると、そのイベントの発生に応答して、パケット送受信制御部N00−15は、図7の処理を介しし、転送キューN00−14の先頭要素を取り出し、ステップS18において、ルーティングテーブル16を参照し、転送インターフェイス方式の値が1又は2であればそれに対応するインターフェイス方式の属性値に基づいてアドレスを変換し、通信部19を介し他のプロセッサコアへパケットを転送させる。この通信部19は、図2のOS層、ドライバ層及びハードウェア層で構成されている。   When the transfer queue N00-14 changes from an empty state to a state where one element is added, in response to the occurrence of the event, the packet transmission / reception control unit N00-15 performs the transfer queue N00 via the process of FIG. The head element of −14 is extracted, and in step S18, the routing table 16 is referred to. If the value of the forwarding interface method is 1 or 2, the address is converted based on the attribute value of the corresponding interface method, and the communication unit 19 The packet is transferred to another processor core via The communication unit 19 includes the OS layer, the driver layer, and the hardware layer shown in FIG.

一方、図3のノードN20又はN30からノードN00宛のパケットを、ドライバを介しOSが受信して受信バッファ11R0に格納し、その旨をパケット送受信制御部N00−15に通知する。パケット送受信制御部N00−15はこれに応答して、図7の処理を介しし、ステップS18において、前記格納したパケットの参照を転送キューN10−14の末尾に追加する。同様に、パケット送受信制御部N10−15は、上記イベントの発生に応答して、図7の処理を介しし、転送キューN10−14の先頭要素を取り出し、ステップS18で、これを転送キューN11−14の末尾に追加させる。パケット送受信制御部N11−15は、上記イベントの発生に応答して、図7の処理を介しし、転送キューN11−14の先頭要素を取り出し、図7のステップS15で、パケット再配列・デパケット化部18を介し、そのパケットを、受信バッファ11Rに格納させる。この際、パケット再配列・デパケット化部18は、パケットの参照で指定された受信バッファ11R0内の複数の受信パケットを読み出し、送信元アドレス毎に分け、さらにパケットをパケットシーケンス番号順に再配列し、各パケットのヘッダを削除してペイロード間を連結させ、その一連のデータを、受信バッファ11Rに格納させる。   On the other hand, the OS receives the packet addressed to the node N00 from the node N20 or N30 in FIG. 3 through the driver, stores it in the reception buffer 11R0, and notifies the packet transmission / reception control unit N00-15 to that effect. In response to this, the packet transmission / reception control unit N00-15 adds the stored packet reference to the end of the transfer queue N10-14 in step S18 via the processing of FIG. Similarly, in response to the occurrence of the event, the packet transmission / reception control unit N10-15 takes out the head element of the transfer queue N10-14 via the process of FIG. 7, and in step S18, transfers it to the transfer queue N11- 14 is added at the end. In response to the occurrence of the above event, the packet transmission / reception control unit N11-15 takes out the head element of the transfer queue N11-14 through the process of FIG. 7, and performs packet rearrangement / depacketization in step S15 of FIG. The packet is stored in the reception buffer 11R via the unit 18. At this time, the packet rearrangement / depacketization unit 18 reads a plurality of received packets in the reception buffer 11R0 designated by the packet reference, divides the packets into transmission source addresses, and further rearranges the packets in the order of the packet sequence numbers. The header of each packet is deleted, the payloads are connected, and the series of data is stored in the reception buffer 11R.

他の点は上記実施例1と同一である。   Other points are the same as those of the first embodiment.

以上において、本発明の好適な実施例を説明したが、本発明には他にも種々の変形例が含まれ、上記実施例で述べた各構成要素の機能を実現する他の構成を用いたもの、当業者であればこれらの構成又は機能から想到するであろう他の構成も、本発明に含まれる。   In the above, preferred embodiments of the present invention have been described. However, the present invention includes various modifications, and other configurations that realize the functions of the respective components described in the above embodiments are used. However, other configurations that would be conceived by those skilled in the art from these configurations or functions are also included in the present invention.

例えば、図16の送信バッファ11Sは、複数のプロセッサコア間での共有メモリであってもよく、この場合、これら複数のプロセッサコアのそれぞれで動作するユーザノードの間の通信についても、パケットの参照のみを転送すればよい。   For example, the transmission buffer 11S of FIG. 16 may be a shared memory between a plurality of processor cores. In this case, the packet reference is also performed for communication between user nodes operating in each of the plurality of processor cores. Only need to be transferred.

パケット化及びデパケット化は、アプリケーション層のリーフノードと直接結合されるミドルウェア層のノードのみで行うようにしてもよい。すなわち、送信側リーフノードで送信先及び送信元のアドレス指定して、高さ1のノードにデータを送信し、受信側リーフノードで、ヘッダが削除されペイロードが結合されたデータを受信するようにしてもよい。この場合、ユーザノードではパケットを意識する必要がない。   Packetization and depacketization may be performed only by nodes in the middleware layer that are directly coupled to leaf nodes in the application layer. In other words, the transmission side leaf node specifies the transmission destination and transmission source addresses, transmits the data to the node of height 1, and the reception side leaf node receives the data with the header removed and the payload combined. May be. In this case, the user node does not need to be aware of the packet.

また、図7において、ステップS14及びS15はリーフノードのみに備え、ステップS19及びS1Aはルートノードに備えない構成であってもよい。この点は、図14についても同様であり、図14ではさらに、ステップS30、S31及びS32を、兄弟ノード間がエッジで接続されている深さのノードのみに備えた構成であってもよい。   In FIG. 7, steps S14 and S15 may be provided only for the leaf node, and steps S19 and S1A may not be provided for the root node. This also applies to FIG. 14. In FIG. 14, the configuration may be such that steps S30, S31, and S32 are provided only for nodes having a depth at which the sibling nodes are connected by edges.

上記各実施例ではマルチコアプロセッサ内のプロセッサコア間通信としてMCAPIを使用する場合を説明したが、複数のプロセッサコアから参照できるキャッシュメモリ上の領域を介してプロセッサコア間通信を行う構成であっても、複数の通信方式の1つを選択的に使用する構成であってもよい。   In each of the above-described embodiments, the case where MCAPI is used as communication between processor cores in a multi-core processor has been described. A configuration in which one of a plurality of communication methods is selectively used may be used.

また、上記実施例5は、上記実施例2〜4にも同様に適用してもよい。   Moreover, you may apply the said Example 5 similarly to the said Examples 2-4.

さらに、本発明は非対称型のみならず対称型マルチプロセッシングシステムに適用してもよい。   Furthermore, the present invention may be applied not only to an asymmetric type but also to a symmetric type multiprocessing system.

01、100、200、300、400 マルチコアプロセッサ
02 シングルコアプロセッサ
10、20、30、110、120、130、140、210、220、230、240、310、320、330、340、410、420、430、440 プロセッサコア
11、12 アプリケーション
11R 受信バッファ
11S 送信バッファ
13 パケット化部
14、17 転送キュー
15 パケット送受信制御部
16 ルーティングテーブル
18 パケット再配列・デパケット化部
19 通信部
40A〜40D 名前解決テーブル
N00、N000 ルートノード
N10〜N12、N20〜N22、N30〜N32、N100、N110〜N112、N200、N210、N211、N220、N221、N300、N310、N311、N312、N400、N410、N411、N420、N421、N430、N431、N440、N441、Nij、Ni1j1、Ni2j2、Nijk、Ni1j1k1、Ni2j2k2 ノード
DA 転送先アドレス
SA 自ノードアドレス
CA 子ノードアドレス
PA 親ノードアドレス
BA 兄弟ノードアドレス
01, 100, 200, 300, 400 Multi-core processor 02 Single-core processor 10, 20, 30, 110, 120, 130, 140, 210, 220, 230, 240, 310, 320, 330, 340, 410, 420, 430 440 processor core 11, 12 application 11R reception buffer 11S transmission buffer 13 packetization unit 14, 17 transfer queue 15 packet transmission / reception control unit 16 routing table 18 packet rearrangement / depacketization unit 19 communication unit 40A to 40D name resolution table N00, N000 root node N10-N12, N20-N22, N30-N32, N100, N110-N112, N200, N210, N211, N220, N221, N300, N310, N311, N 312, N400, N410, N411, N420, N421, N430, N431, N440, N441, Nij, Ni1j1, Ni2j2, Nijk, Ni1j1k1, Ni2j2k2 Node DA Destination address SA Local node address CA Child node address PA Parent node address BA Brother Node address

Claims (10)

複数のプロセッサコアのそれぞれに結合されたメモリ空間内のアプリケーション層のオブジェクトであるユーザノードを子ノードとする親ノードのオブジェクトを第1ノードとして、同じメモリ空間毎にミドルウェア層に配置され、これら第1ノードを子ノードとする親ノードのオブジェクトを第2ノードとして、いずれかの第1ノードのメモリ空間内のミドルウェア層に配置され、これらユーザノード、第1ノード及び第2ノードを含むツリーの各ノードに、値により親子関係を区別可能なアドレスが設定されるとともに、送信先アドレス及び送信元アドレスをヘッダに含むパケットを該ツリーの親子ノード間でルーティングするパケットルーティング手段が備えられた、マルチプロセッシングシステムにおけるオブジェクト間通信装置であって、
該ツリーの各ユーザノードの該パケットルーティング手段は、各ユーザノードの名前とそのアドレスとを対応付けた名前解決テーブルを備え、ルーティング処理前に名前解決処理を行い、該名前解決処理では、
該ヘッダの送信先アドレス又は送信元アドレスの替わりに名前が用いられている場合、該名前が該名前解決テーブル上に存在すれば、該名前をアドレスに変換し該ヘッダの名前を該アドレスで置換し、存在しなければオペレーティングシステムに例外エラーを発生させる、
ことを特徴とする、マルチプロセッシングシステムにおけるオブジェクト間通信装置
An object of a parent node having a user node as a child node as an application layer object in a memory space coupled to each of a plurality of processor cores as a first node is arranged in the middleware layer for each same memory space. An object of a parent node having one node as a child node as a second node is arranged in the middleware layer in the memory space of any of the first nodes, and each of the tree including the user node, the first node, and the second node Multi-processing, in which a node is set with an address capable of distinguishing a parent-child relationship by value, and has a packet routing means for routing a packet including a destination address and a source address in a header between parent-child nodes of the tree in object communication apparatus in a system I,
The packet routing means of each user node of the tree includes a name resolution table that associates the name of each user node with its address, performs name resolution processing before routing processing, and in the name resolution processing,
When a name is used in place of the destination address or source address of the header, if the name exists on the name resolution table, the name is converted into an address and the header name is replaced with the address. And if it does not exist, raise an exception error in the operating system,
An inter-object communication device in a multiprocessing system.
複数のプロセッサコアのそれぞれに結合されたメモリ空間内のアプリケーション層のオブジェクトであるユーザノードを子ノードとする親ノードのオブジェクトを第1ノードとして、同じメモリ空間毎にミドルウェア層に配置され、これら第1ノードを子ノードとする親ノードのオブジェクトを第2ノードとして、いずれかの第1ノードのメモリ空間内のミドルウェア層に配置され、これらユーザノード、第1ノード及び第2ノードを含むツリーの各ノードに、値により親子関係を区別可能なアドレスが設定されるとともに、送信先アドレス及び送信元アドレスをヘッダに含むパケットを該ツリーの親子ノード間でルーティングするパケットルーティング手段が備えられた、マルチプロセッシングシステムにおけるオブジェクト間通信装置であって、
該ツリーのルートノード以外の該パケットルーティング手段は、名前解決テーブルを備えず、該ヘッダの送信先アドレス又は送信元アドレスの替わりに名前が用いられている場合、該パケットを自ノードの親ノードに転送し、
該ルートノードの該パケットルーティング手段は、各ユーザノードの名前とアドレスとを対応付けた名前解決テーブルを備え、ルーティング処理前に名前解決処理を行い、該名前解決処理では、
該ヘッダの送信先アドレス又は送信元アドレスの替わりに名前が用いられている場合、該名前が該名前解決テーブル上に存在すれば、該名前をアドレスに変換し該ヘッダの名前を該アドレスで置換し、存在しなければオペレーティングシステムに例外エラーを発生させる、
ことを特徴とする、マルチプロセッシングシステムにおけるオブジェクト間通信装置
An object of a parent node having a user node as a child node as an application layer object in a memory space coupled to each of a plurality of processor cores as a first node is arranged in the middleware layer for each same memory space. An object of a parent node having one node as a child node as a second node is arranged in the middleware layer in the memory space of any of the first nodes, and each of the tree including the user node, the first node, and the second node Multi-processing, in which a node is set with an address capable of distinguishing a parent-child relationship by value, and has a packet routing means for routing a packet including a destination address and a source address in a header between parent-child nodes of the tree in object communication apparatus in a system I,
The packet routing means other than the root node of the tree does not have a name resolution table, and when a name is used instead of the transmission destination address or the transmission source address of the header, the packet is sent to the parent node of the own node. Forward,
The packet routing means of the route node includes the name resolution table that associates the name and address of each user node, and performs name resolution processing before routing processing. In the name resolution processing,
When a name is used in place of the destination address or source address of the header, if the name exists on the name resolution table, the name is converted into an address and the header name is replaced with the address. And if it does not exist, raise an exception error in the operating system,
An inter-object communication device in a multiprocessing system.
複数のプロセッサコアのそれぞれに結合されたメモリ空間内のアプリケーション層のオブジェクトであるユーザノードを子ノードとする親ノードのオブジェクトを第1ノードとして、同じメモリ空間毎にミドルウェア層に配置され、これら第1ノードを子ノードとする親ノードのオブジェクトを第2ノードとして、いずれかの第1ノードのメモリ空間内のミドルウェア層に配置され、これらユーザノード、第1ノード及び第2ノードを含むツリーの各ノードに、値により親子関係を区別可能なアドレスが設定されるとともに、送信先アドレス及び送信元アドレスをヘッダに含むパケットを該ツリーの親子ノード間でルーティングするパケットルーティング手段が備えられた、マルチプロセッシングシステムにおけるオブジェクト間通信装置であって、
該ツリーのユーザノード以外のノードの該パケットルーティング手段は、自ノードとその全ての子孫ノードの名前とアドレスとを対応付けた名前解決テーブルを備え、
各ユーザノードの該パケットルーティング手段は、該ヘッダの送信先アドレス又は送信元アドレスの替わりに名前が用いられている場合、該パケットを自ノードの親ノードに転送し、
該ツリーのユーザノード以外の該パケットルーティング手段は、ルーティング処理前に名前解決処理を行い、該名前解決処理では、
該ヘッダの送信先アドレス又は送信元アドレスの替わりに名前が用いられている場合、該名前が該名前解決テーブル上に存在すれば、該名前をアドレスに変換し該ヘッダの名前を該アドレスで置換し、該名前が該名前解決テーブル上に存在せず且つ自ノードの親ノードが存在すれば該パケットを該親ノードに転送し、該名前が該名前解決テーブル上に存在せず且つ該親ノードが存在しなければオペレーティングシステムに例外エラーを発生させる、
ことを特徴とする、マルチプロセッシングシステムにおけるオブジェクト間通信装置
An object of a parent node having a user node as a child node as an application layer object in a memory space coupled to each of a plurality of processor cores as a first node is arranged in the middleware layer for each same memory space. An object of a parent node having one node as a child node as a second node is arranged in the middleware layer in the memory space of any of the first nodes, and each of the tree including the user node, the first node, and the second node Multi-processing, in which a node is set with an address capable of distinguishing a parent-child relationship by value, and has a packet routing means for routing a packet including a destination address and a source address in a header between parent-child nodes of the tree in object communication apparatus in a system I,
The packet routing means of a node other than the user node of the tree includes a name resolution table that associates the names and addresses of its own node and all of its descendant nodes,
The packet routing means of each user node forwards the packet to the parent node of its own node when a name is used instead of the transmission destination address or the transmission source address of the header,
The packet routing means other than the user node of the tree performs name resolution processing before routing processing, and in the name resolution processing,
When a name is used in place of the destination address or source address of the header, if the name exists on the name resolution table, the name is converted into an address and the header name is replaced with the address. If the name does not exist in the name resolution table and the parent node of the own node exists, the packet is forwarded to the parent node, and the name does not exist in the name resolution table and the parent node If it doesn't exist, raise an exception error in the operating system,
An inter-object communication device in a multiprocessing system.
複数のプロセッサコアのそれぞれに結合されたメモリ空間内のアプリケーション層のオブジェクトであるユーザノードを子ノードとする親ノードのオブジェクトを第1ノードとして、同じメモリ空間毎にミドルウェア層に配置され、これら第1ノードを子ノードとする親ノードのオブジェクトを第2ノードとして、いずれかの第1ノードのメモリ空間内のミドルウェア層に配置され、これらユーザノード、第1ノード及び第2ノードを含むツリーの各ノードに、値により親子関係を区別可能なアドレスが設定されるとともに、送信先アドレス及び送信元アドレスをヘッダに含むパケットを該ツリーの親子ノード間でルーティングするパケットルーティング手段が備えられた、マルチプロセッシングシステムにおけるオブジェクト間通信装置であって、
該ツリーの各ノードの該パケットルーティング手段は、ルーティング処理前に名前解決処理を行い、該名前解決処理では、
該ヘッダの送信先アドレス又は送信元アドレスの替わりに名前が用いられている場合、該名前が名前解決テーブル上に存在すれば、該名前をアドレスに変換し該ヘッダの名前を該アドレスで置換し、該名前が該名前解決テーブル上に存在せず又は自ノードに該名前解決テーブルが存在しないときには、
該自ノードの親ノードが存在すれば該パケットを該親ノードに転送し、該親ノードが存在しなければオペレーティングシステムに例外エラーを発生させる、
ことを特徴とする、マルチプロセッシングシステムにおけるオブジェクト間通信装置
An object of a parent node having a user node as a child node as an application layer object in a memory space coupled to each of a plurality of processor cores as a first node is arranged in the middleware layer for each same memory space. An object of a parent node having one node as a child node as a second node is arranged in the middleware layer in the memory space of any of the first nodes, and each of the tree including the user node, the first node, and the second node Multi-processing, in which a node is set with an address capable of distinguishing a parent-child relationship by value, and has a packet routing means for routing a packet including a destination address and a source address in a header between parent-child nodes of the tree in object communication apparatus in a system I,
The packet routing means of each node of the tree performs name resolution processing before routing processing, and in the name resolution processing,
If the name is used in place of the destination address or source address of the header, if present on the name name resolution table, converts the name to address replace the name of the header the address When the name does not exist on the name resolution table or the name resolution table does not exist on the own node,
If the parent node of the own node exists, the packet is forwarded to the parent node, and if the parent node does not exist, an exception error is generated in the operating system.
An inter-object communication device in a multiprocessing system.
該ツリーの各ノードの該パケットルーティング手段は、該ルーティング処理において、
該ヘッダの送信先アドレスが自ノードアドレスと一致すれば該パケットを自ノード宛パケットとして保存し、該ヘッダの送信先アドレスが自ノードの子ノード側を示していれば該パケットを子ノードへ転送し、その他の場合には該パケットを該自ノードの親ノードへ転送する、
ことを特徴とする、請求項1乃至4のいずれか1つに記載の、マルチプロセッシングシステムにおけるオブジェクト間通信装置
The packet routing means of each node of the tree includes:
If the destination address of the header matches the own node address, the packet is stored as a packet addressed to the own node. If the destination address of the header indicates the child node side of the own node, the packet is transferred to the child node. In other cases, the packet is forwarded to the parent node of the own node.
The inter-object communication device in the multiprocessing system according to claim 1, wherein the inter-object communication device is a multi-processing system according to claim 1.
該第2ノードは、ルートノードである、
ことを特徴とする請求項5に記載の、マルチプロセッシングシステムにおけるオブジェクト間通信装置
The second node is a root node;
The inter-object communication device in the multiprocessing system according to claim 5.
該第2ノードは、プロセッサ毎に配置され、
該ツリーはさらに、各第2ノードを子ノードとする親ノードのオブジェクトをルートノードとして備え、該ルートノードは、いずれかの第2ノードのメモリ空間内のミドルウェア層に配置されている、
ことを特徴とする請求項5に記載の、マルチプロセッシングシステムにおけるオブジェクト間通信装置
The second node is arranged for each processor,
The tree further includes a parent node object having each second node as a child node as a root node, and the root node is arranged in a middleware layer in the memory space of any second node.
The inter-object communication device in the multiprocessing system according to claim 5.
該ツリーの各ノードはルーティングテーブルを備え、該ルーティングテーブルには、自ノードアドレスと、該自ノードの全ての子ノードのアドレスとが登録され、該自ノードが配置されたメモリ空間とは異なるメモリ空間内のノードである次ノードへのパケット転送についてはさらに、該次ノードへのパケット送信方式と、該パケット送信方式で該次ノードへパケット転送するための属性とが登録され、
各ルーティング手段は、該自ノードのルーティングテーブルを参照して該パケットをルーティングする、
ことを特徴とする請求項5乃至7のいずれか1つに記載の、マルチプロセッシングシステムにおけるオブジェクト間通信装置
Each node of the tree includes a routing table, in which a self-node address and addresses of all child nodes of the self-node are registered, and a memory different from the memory space in which the self-node is arranged For packet transfer to the next node, which is a node in the space, a packet transmission method to the next node and an attribute for transferring the packet to the next node in the packet transmission method are registered.
Each routing means routes the packet by referring to the routing table of the free-node,
The inter-object communication device in the multiprocessing system according to any one of claims 5 to 7.
該ツリーのルートノードは、該複数のプロセッサコアのそれぞれに結合されたメモリ空間内に配置され、
該ツリーのルートノード以外の各ノードのルーティング手段は、該パケットを親ノードへ転送する場合、自ノードと同じメモリ空間内のルートノードへ転送する、
ことを特徴とする請求項5乃至8のいずれか1つに記載の、マルチプロセッシングシステムにおけるオブジェクト間通信装置
A root node of the tree is disposed in a memory space coupled to each of the plurality of processor cores;
When the routing means of each node other than the root node of the tree transfers the packet to the parent node, the packet is transferred to the root node in the same memory space as the own node.
The inter-object communication device in the multiprocessing system according to any one of claims 5 to 8.
該ツリーの各ノードのルーティング手段は、自ノードと同じメモリ空間内のノードへ該パケットを転送する場合、該パケットの参照のみ該ノードへ転送する、
ことを特徴とする請求項5乃至9のいずれか1つに記載の、マルチプロセッシングシステムにおけるオブジェクト間通信装置
When the routing means of each node of the tree transfers the packet to a node in the same memory space as its own node, only the reference of the packet is transferred to the node.
The inter-object communication device in a multiprocessing system according to any one of claims 5 to 9.
JP2012188721A 2012-08-29 2012-08-29 Inter-object communication device in multi-processing system Expired - Fee Related JP5738811B2 (en)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2012188721A JP5738811B2 (en) 2012-08-29 2012-08-29 Inter-object communication device in multi-processing system
US13/964,128 US9135088B2 (en) 2012-08-29 2013-08-12 Multi processing system
CN201310357252.5A CN103678246B (en) 2012-08-29 2013-08-15 Multi processing system
EP20130004172 EP2704008A1 (en) 2012-08-29 2013-08-23 Multi processing system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012188721A JP5738811B2 (en) 2012-08-29 2012-08-29 Inter-object communication device in multi-processing system

Publications (2)

Publication Number Publication Date
JP2014048707A JP2014048707A (en) 2014-03-17
JP5738811B2 true JP5738811B2 (en) 2015-06-24

Family

ID=50608375

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012188721A Expired - Fee Related JP5738811B2 (en) 2012-08-29 2012-08-29 Inter-object communication device in multi-processing system

Country Status (1)

Country Link
JP (1) JP5738811B2 (en)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3089080A1 (en) 2015-04-27 2016-11-02 Universität Zürich Networks and hierarchical routing fabrics with heterogeneous memory structures for scalable event-driven computing systems

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2555451B2 (en) * 1981-04-01 1996-11-20 テラデータ・コーポレーション Method for managing message packet in multiprocessor system
US6279046B1 (en) * 1999-05-19 2001-08-21 International Business Machines Corporation Event-driven communications interface for logically-partitioned computer

Also Published As

Publication number Publication date
JP2014048707A (en) 2014-03-17

Similar Documents

Publication Publication Date Title
JP6087922B2 (en) Communication control method and gateway
US7958183B2 (en) Performing collective operations using software setup and partial software execution at leaf nodes in a multi-tiered full-graph interconnect architecture
US8108545B2 (en) Packet coalescing in virtual channels of a data processing system in a multi-tiered full-graph interconnect architecture
US8014387B2 (en) Providing a fully non-blocking switch in a supernode of a multi-tiered full-graph interconnect architecture
US7958182B2 (en) Providing full hardware support of collective operations in a multi-tiered full-graph interconnect architecture
US7809970B2 (en) System and method for providing a high-speed message passing interface for barrier operations in a multi-tiered full-graph interconnect architecture
US8140731B2 (en) System for data processing using a multi-tiered full-graph interconnect architecture
US7904590B2 (en) Routing information through a data processing system implementing a multi-tiered full-graph interconnect architecture
US7769891B2 (en) System and method for providing multiple redundant direct routes between supernodes of a multi-tiered full-graph interconnect architecture
US7769892B2 (en) System and method for handling indirect routing of information between supernodes of a multi-tiered full-graph interconnect architecture
US20090063728A1 (en) System and Method for Direct/Indirect Transmission of Information Using a Multi-Tiered Full-Graph Interconnect Architecture
US20130100957A1 (en) Information processing system, relay device, and information processing method
US9264312B2 (en) Method and system to calculate multiple shortest path first trees
CN107181691B (en) Method, equipment and system for realizing message routing in network
US11133947B2 (en) Multicast routing
US20140241346A1 (en) Translating network forwarding plane models into target implementation using network primitives
US20140241347A1 (en) Static translation of network forwarding plane models into target implementation in the hardware abstraction layer
JP7448597B2 (en) Message generation method and device and message processing method and device
US9218356B2 (en) Systems and methods for accelerating networking functionality
JP5738811B2 (en) Inter-object communication device in multi-processing system
JP2016116024A (en) Tag converter
US9135088B2 (en) Multi processing system
US10505760B2 (en) Hierarchical encapsulation acceleration
CN107294746B (en) Method and equipment for deploying service
JP5738812B2 (en) Inter-object communication device in multi-processing system

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140722

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20141215

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150106

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150305

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20150324

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150422

R150 Certificate of patent or registration of utility model

Ref document number: 5738811

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees