JP2015125503A - Multi-processor program generation method, multi-processor device and multi-processor firmware - Google Patents

Multi-processor program generation method, multi-processor device and multi-processor firmware Download PDF

Info

Publication number
JP2015125503A
JP2015125503A JP2013268026A JP2013268026A JP2015125503A JP 2015125503 A JP2015125503 A JP 2015125503A JP 2013268026 A JP2013268026 A JP 2013268026A JP 2013268026 A JP2013268026 A JP 2013268026A JP 2015125503 A JP2015125503 A JP 2015125503A
Authority
JP
Japan
Prior art keywords
core
memory
data
information
task
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2013268026A
Other languages
Japanese (ja)
Other versions
JP6217386B2 (en
Inventor
賢一 荒木
Kenichi Araki
賢一 荒木
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2013268026A priority Critical patent/JP6217386B2/en
Publication of JP2015125503A publication Critical patent/JP2015125503A/en
Application granted granted Critical
Publication of JP6217386B2 publication Critical patent/JP6217386B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

PROBLEM TO BE SOLVED: To provide a multi-processor program and the like that can reduce a time required for calling up processing.SOLUTION: A computer is configured to: read communication route information including position information on a processor and core executing a process, position information on a processor having a memory mounted, and position information on an interface usable upon access to the memory from the core executing the process; then, specify a parameter to be set in an API (Application Programming Interface) executing transmission/reception of data via the memory between the processes on the basis of the read information; generate a code of the API operated by the specified parameter; and, in a main processing program, execute processing of embedding the code of the generated API at an execution portion of transmission/reception of the data between the processes.

Description

本発明は、マルチプロセッサ用プログラム生成方法、マルチプロセッサ装置およびマルチプロセッサ用ファームウェアに関する。   The present invention relates to a multiprocessor program generation method, a multiprocessor device, and multiprocessor firmware.

マルチプロセッサやマルチコアの組込み機器の開発において、あるコアで実行させていたプロセスを別なコアで実行させるように変更する場合がある。かかる場合、プロセスを実行するコアと、プロセスによってアクセスされるメモリとの物理的な位置関係が変わることで、プロセスを実行するコアとプロセスによってアクセスされるメモリとの間の通信手段を変更することになる場合がある。   In the development of multi-processor and multi-core embedded devices, there is a case in which a process executed on one core is changed to be executed on another core. In such a case, the communication means between the core executing the process and the memory accessed by the process is changed by changing the physical positional relationship between the core executing the process and the memory accessed by the process. It may become.

物理的な位置の変更に伴う通信手段の変更負担を軽減する方法として、通信部分を仮想化する方法がある。仮想通信では、メイン処理プログラムにおいて、通信が行われる箇所では、通信処理を実行するAPI(Application Programming Interface)を呼び出すように記述される。通信元および通信先の定義は初期起動時に初期化され、定義された通信元と通信先とに基づいて、実際に通信を行う通信処理APIがライブラリから動的に呼び出されて実行される。   There is a method of virtualizing the communication part as a method of reducing the load of changing the communication means accompanying the change of the physical position. In virtual communication, it is described that an API (Application Programming Interface) that executes communication processing is called at a location where communication is performed in the main processing program. The definitions of the communication source and the communication destination are initialized at the time of initial startup, and based on the defined communication source and communication destination, a communication processing API that performs actual communication is dynamically called from the library and executed.

特開2009−104422号公報JP 2009-104422 A 特開2000−181881号公報JP 2000-181881 A

しかし、上記の仮想通信では、通信の実行時にAPIを呼び出して通信処理を実行するため、通信処理を呼び出すための前処理や、呼び出した通信処理が終了した後の後処理が行われる。このような前処理や後処理のオーバーヘッドは、メモリへのリード/ライトのように、実行時間が短く頻繁に発生する通信処理では、全体の処理時間のうち、大きな割合を占めることになる。   However, in the above virtual communication, an API is called and communication processing is executed at the time of communication execution, so pre-processing for calling the communication processing and post-processing after the called communication processing ends. Such overhead of pre-processing and post-processing occupies a large proportion of the total processing time in communication processing that occurs frequently with a short execution time, such as read / write to the memory.

1つの側面では、本発明は、処理の呼び出しにかかっていた時間の削減を図ることができるマルチプロセッサ用プログラム生成方法、マルチプロセッサ装置およびマルチプロセッサ用ファームウェアを提供することを目的とする。   In one aspect, an object of the present invention is to provide a multiprocessor program generation method, a multiprocessor device, and a multiprocessor firmware that can reduce the time taken to call a process.

一つの案では、コンピュータが、プロセスを実行するプロセッサおよびコアの位置情報と、メモリが搭載されたプロセッサの位置情報と、前記プロセスを実行するコアから前記メモリにアクセスする際に使用可能なインターフェイスの情報とを含む通信経路情報に基づいて、プロセス間で前記メモリを介してデータの送受信を実行するAPIに設定するパラメータを特定する処理を実行する。そして、前記コンピュータが、特定したパラメータで動作するAPIのコードを生成する処理を実行する。そして、前記コンピュータが、メイン処理プログラムにおいて、前記プロセス間でのデータの送受信の実行箇所に、生成したAPIのコードを埋め込む処理を実行する。   In one proposal, the computer includes location information of a processor and a core executing a process, location information of a processor in which a memory is mounted, and an interface usable when accessing the memory from the core executing the process. Based on the communication path information including the information, a process for specifying a parameter to be set in the API for executing data transmission / reception between the processes via the memory is executed. Then, the computer executes a process of generating an API code that operates with the specified parameters. In the main processing program, the computer executes a process of embedding the generated API code in an execution location of data transmission / reception between the processes.

1つの側面では、本発明は、処理の呼び出しにかかっていた時間の削減を図ることができる。   In one aspect, the present invention can reduce the time spent invoking a process.

図1は、実施例1におけるプログラム生成装置の一例を示す説明図である。FIG. 1 is an explanatory diagram illustrating an example of a program generation device according to the first embodiment. 図2は、通信経路情報の一例を示す説明図である。FIG. 2 is an explanatory diagram illustrating an example of communication path information. 図3は、仮想通信情報の一例を示す説明図である。FIG. 3 is an explanatory diagram illustrating an example of virtual communication information. 図4は、タスクに関する物理位置情報の一例を示す説明図である。FIG. 4 is an explanatory diagram showing an example of physical position information related to a task. 図5は、メモリに関する物理位置情報の一例を示す説明図である。FIG. 5 is an explanatory diagram illustrating an example of physical position information related to the memory. 図6は、マルチプロセッサ装置の一例を示す説明図である。FIG. 6 is an explanatory diagram illustrating an example of a multiprocessor device. 図7Aは、ポインタによるデータ転送の一例を説明するための図である。FIG. 7A is a diagram for explaining an example of data transfer by a pointer. 図7Bは、ポインタによるデータ転送の一例を説明するための図である。FIG. 7B is a diagram for explaining an example of data transfer by a pointer. 図7Cは、ポインタによるデータ転送の一例を説明するための図である。FIG. 7C is a diagram for explaining an example of data transfer by a pointer. 図8は、タスク間のデータ転送の詳細な一例を示す説明図である。FIG. 8 is an explanatory diagram showing a detailed example of data transfer between tasks. 図9Aは、コアアクセスによるデータ転送(Read Local)の一例を説明するための図である。FIG. 9A is a diagram for explaining an example of data transfer (Read Local) by core access. 図9Bは、コアアクセスによるデータ転送(Read Local)の一例を説明するための図である。FIG. 9B is a diagram for explaining an example of data transfer (Read Local) by core access. 図9Cは、コアアクセスによるデータ転送(Read Local)の一例を説明するための図である。FIG. 9C is a diagram for explaining an example of data transfer (Read Local) by core access. 図10Aは、コアアクセスによるデータ転送(Write Local)の一例を説明するための図である。FIG. 10A is a diagram for explaining an example of data transfer (Write Local) by core access. 図10Bは、コアアクセスによるデータ転送(Write Local)の一例を説明するための図である。FIG. 10B is a diagram for explaining an example of data transfer (Write Local) by core access. 図10Cは、コアアクセスによるデータ転送(Write Local)の一例を説明するための図である。FIG. 10C is a diagram for explaining an example of data transfer (Write Local) by core access. 図11Aは、シェアードメモリによるデータ転送の一例を説明するための図である。FIG. 11A is a diagram for explaining an example of data transfer by the shared memory. 図11Bは、シェアードメモリによるデータ転送の一例を説明するための図である。FIG. 11B is a diagram for explaining an example of data transfer by the shared memory. 図11Cは、シェアードメモリによるデータ転送の一例を説明するための図である。FIG. 11C is a diagram for explaining an example of data transfer by the shared memory. 図12Aは、DMAによるデータ転送の一例を説明するための図である。FIG. 12A is a diagram for explaining an example of data transfer by DMA. 図12Bは、DMAによるデータ転送の一例を説明するための図である。FIG. 12B is a diagram for explaining an example of data transfer by DMA. 図12Cは、DMAによるデータ転送の一例を説明するための図である。FIG. 12C is a diagram for describing an example of data transfer by DMA. 図13Aは、SRIOによるデータ転送の一例を説明するための図である。FIG. 13A is a diagram for explaining an example of data transfer by SRIO. 図13Bは、SRIOによるデータ転送の一例を説明するための図である。FIG. 13B is a diagram for describing an example of data transfer by SRIO. 図13Cは、SRIOによるデータ転送の一例を説明するための図である。FIG. 13C is a diagram for describing an example of data transfer by SRIO. 図14は、実施例1におけるプログラム生成装置の動作の一例を示すフローチャートである。FIG. 14 is a flowchart illustrating an example of the operation of the program generation device according to the first embodiment. 図15は、実施例2におけるプログラム生成装置の一例を示す説明図である。FIG. 15 is an explanatory diagram illustrating an example of a program generation device according to the second embodiment. 図16は、実施例2におけるプログラム生成装置の動作の一例を示すフローチャートである。FIG. 16 is a flowchart illustrating an example of the operation of the program generation device according to the second embodiment. 図17は、プログラム生成装置の機能を実現するコンピュータの一例を示す説明図である。FIG. 17 is an explanatory diagram illustrating an example of a computer that implements the functions of the program generation device.

以下に、本願の開示するマルチプロセッサ用プログラム生成方法、マルチプロセッサ装置およびマルチプロセッサ用ファームウェアの実施例を詳細に説明する。なお、本実施例により、開示技術が限定されるものではない。また、以下に示す各実施例は、矛盾を起こさない範囲で適宜組み合わせてもよい。   Embodiments of a multiprocessor program generation method, a multiprocessor device, and multiprocessor firmware disclosed in the present application will be described in detail below. The disclosed technology is not limited by the present embodiment. Moreover, you may combine suitably each Example shown below in the range which does not cause contradiction.

図1は、実施例1におけるプログラム生成装置10の一例を示す説明図である。プログラム生成装置10は、例えば図1に示すように、通信経路情報格納部11と、特定部12と、生成部13と、埋め込み部14とを有する。本実施例において、プログラム生成装置10は、例えば、1つ以上のコアを有するプロセッサを複数有するマルチプロセッサ装置用のプログラムを生成する。また、本実施例において、マルチプロセッサ装置は、例えば無線基地局や無線端末として機能する。   FIG. 1 is an explanatory diagram illustrating an example of a program generation device 10 according to the first embodiment. For example, as illustrated in FIG. 1, the program generation device 10 includes a communication path information storage unit 11, a specification unit 12, a generation unit 13, and an embedding unit 14. In the present embodiment, the program generation device 10 generates a program for a multiprocessor device having a plurality of processors having one or more cores, for example. In the present embodiment, the multiprocessor device functions as, for example, a radio base station or a radio terminal.

通信経路情報格納部11には、例えば図2に示すような通信経路情報110が格納される。図2は、通信経路情報110の一例を示す説明図である。通信経路情報110には、API名称111、アクセス種別112、アクセス元情報113、アクセス先情報114、最小アクセスサイズ115、領域サイズ116、およびIF(InterFace)種別117が含まれる。API名称111は、タスクからメモリへのデータの転送や、メモリからタスクへのデータの転送を実行するAPIを識別する名称である。タスクは、プロセスの一例である。アクセス種別112は、データの転送がタスクからメモリへの書き込みなのか、メモリからの読み出しなのかを示す情報である。図2に例示したアクセス種別112において、「W」はデータの転送がタスクからメモリへの書き込みであることを示し、「R」はデータの転送がメモリからの読み出しであることを示す。   For example, communication path information 110 as shown in FIG. 2 is stored in the communication path information storage unit 11. FIG. 2 is an explanatory diagram illustrating an example of the communication path information 110. The communication path information 110 includes an API name 111, an access type 112, access source information 113, access destination information 114, a minimum access size 115, an area size 116, and an IF (InterFace) type 117. The API name 111 is a name for identifying an API that executes data transfer from the task to the memory and data transfer from the memory to the task. A task is an example of a process. The access type 112 is information indicating whether the data transfer is writing from the task to the memory or reading from the memory. In the access type 112 illustrated in FIG. 2, “W” indicates that the data transfer is a write from the task to the memory, and “R” indicates that the data transfer is a read from the memory.

アクセス元情報113には、メモリにアクセスするアクセス元のタスクの名称と、タスクが実行されるコアの名称と、コアを有するプロセッサの名称とが含まれる。アクセス元情報113に含まれたプロセッサおよびコアの名称を参照することにより、タスクが実行されているコアの位置と、コアを含むプロセッサの位置とを特定することができる。   The access source information 113 includes the name of the access source task that accesses the memory, the name of the core on which the task is executed, and the name of the processor having the core. By referring to the names of the processor and the core included in the access source information 113, the position of the core where the task is executed and the position of the processor including the core can be specified.

アクセス先情報114には、タスクがアクセスするアクセス先のメモリの名称と、プロセッサの名称と、コアの名称と、メモリの種別とが含まれる。メモリの種別とは、ローカルメモリやシェアードメモリ等のメモリの種別を示す。図2に例示したアクセス先情報114の種別において、「ローカル」はメモリの種別がローカルメモリであることを示す。コアの名称とは、メモリがローカルメモリである場合、メモリに主としてアクセスするコアの名称である。プロセッサの名称とは、メモリが実装されているプロセッサの名称である。アクセス先情報114に含まれたプロセッサおよびコアの名称を参照することにより、メモリが実装されているプロセッサの位置と、メモリが主としてアクセスされるコアの位置とを特定することができる。   The access destination information 114 includes the name of the memory to be accessed by the task, the name of the processor, the name of the core, and the type of memory. The type of memory indicates the type of memory such as local memory or shared memory. In the type of the access destination information 114 illustrated in FIG. 2, “local” indicates that the memory type is a local memory. The name of the core is the name of the core that mainly accesses the memory when the memory is a local memory. The name of the processor is the name of the processor in which the memory is mounted. By referring to the names of the processor and the core included in the access destination information 114, the position of the processor in which the memory is mounted and the position of the core to which the memory is mainly accessed can be specified.

最小アクセスサイズ115は、転送されるデータの最小サイズを示す。領域サイズ116は、転送されるデータを保持するための領域のサイズを示す。IF種別117は、タスクからメモリへのアクセスにおいて使用されるインターフェイスの種別を示す。図2に例示したIF種別117において、「Bus」は、タスクからメモリへのアクセスにおいて使用されるインターフェイスの種別がバスであることを示す。   The minimum access size 115 indicates the minimum size of data to be transferred. The area size 116 indicates the size of an area for holding transferred data. The IF type 117 indicates the type of interface used in accessing the memory from the task. In the IF type 117 illustrated in FIG. 2, “Bus” indicates that the type of interface used in accessing the memory from the task is a bus.

ここで、図2に例示した通信経路情報110は、例えば、図3に例示する仮想通信情報200と、図4に例示するタスクの物理位置情報210と、図5に例示するメモリの物理位置情報214とに基づいて作成される。仮想通信情報200およびタスクの物理位置情報210は、例えばプログラマ等によって作成される。また、メモリの物理位置情報214は、例えばマルチプロセッサ装置の設計者等によって作成される。   Here, the communication path information 110 illustrated in FIG. 2 includes, for example, the virtual communication information 200 illustrated in FIG. 3, the physical position information 210 of the task illustrated in FIG. 4, and the physical position information of the memory illustrated in FIG. 214. The virtual communication information 200 and the physical position information 210 of the task are created by, for example, a programmer. The physical location information 214 of the memory is created by, for example, a designer of a multiprocessor device.

図3は、仮想通信情報200の一例を示す説明図である。仮想通信情報200には、例えば図3に示すように、番号201に対応付けて、アクセス元タスク名称202、アクセス先メモリ名称203、最小アクセスサイズ204、領域サイズ205、アクセス種別206、およびAPI名称207が含まれる。アクセス元タスク名称202は、メモリにアクセスするアクセス元のタスクの名称である。アクセス先メモリ名称203は、タスクがアクセスするアクセス先のメモリの名称である。最小アクセスサイズ204は、転送されるデータの最小サイズを示す。領域サイズ205は、転送されるデータを保持するための領域のサイズを示す。API名称207は、タスクからメモリへのデータの転送や、メモリからタスクへのデータの転送を実行するAPIを識別する名称である。   FIG. 3 is an explanatory diagram illustrating an example of the virtual communication information 200. In the virtual communication information 200, for example, as shown in FIG. 3, the access source task name 202, the access destination memory name 203, the minimum access size 204, the area size 205, the access type 206, and the API name are associated with the number 201. 207 is included. The access source task name 202 is the name of the access source task that accesses the memory. The access destination memory name 203 is the name of the access destination memory accessed by the task. The minimum access size 204 indicates the minimum size of data to be transferred. An area size 205 indicates the size of an area for holding transferred data. The API name 207 is a name for identifying an API that executes data transfer from the task to the memory and data transfer from the memory to the task.

図4は、タスクに関する物理位置情報210の一例を示す説明図である。タスクの物理位置情報210には、タスク名称211、プロセッサ名称212、およびコア名称213が含まれる。タスク名称211は、それぞれのタスクを識別する名称である。プロセッサ名称212は、タスクが実行されるコアを有するプロセッサの名称である。コア名称213は、タスクを実行するコアの名称である。   FIG. 4 is an explanatory diagram illustrating an example of the physical position information 210 related to a task. The task physical position information 210 includes a task name 211, a processor name 212, and a core name 213. The task name 211 is a name for identifying each task. The processor name 212 is a name of a processor having a core on which a task is executed. The core name 213 is the name of the core that executes the task.

図5は、メモリに関する物理位置情報214の一例を示す説明図である。メモリの物理位置情報214には、メモリ名称215、プロセッサ名称216、コア名称217、種別218、および使用IF219が含まれる。メモリ名称215は、それぞれのメモリを識別する名称である。プロセッサ名称216は、メモリが実装されているプロセッサの名称である。コア名称217は、メモリがローカルメモリである場合に、メモリに主としてアクセスするコアの名称である。種別218は、ローカルメモリやシェアードメモリ等のメモリの種別を示す。使用IF219は、メモリにアクセスする場合に使用可能なインターフェイスを示す。   FIG. 5 is an explanatory diagram showing an example of the physical position information 214 regarding the memory. The memory physical location information 214 includes a memory name 215, a processor name 216, a core name 217, a type 218, and a use IF 219. The memory name 215 is a name for identifying each memory. The processor name 216 is the name of the processor in which the memory is mounted. The core name 217 is a name of a core that mainly accesses the memory when the memory is a local memory. The type 218 indicates the type of memory such as local memory or shared memory. The use IF 219 indicates an interface that can be used when accessing the memory.

図1に戻って説明を続ける。特定部12は、通信経路情報110を参照し、タスクからアクセスされるメモリの種別や、タスクが実行されるコアの位置等に応じて、タスク間のデータ通信に使用されるインターフェイスのIF種別を修正する。例えば、特定部12は、通信経路情報110内のアクセス先情報を参照し、アクセス先が同一のメモリであるタスクのペアを特定する。そして、特定部12は、特定したタスクのペアによってアクセスされるメモリの種別がローカルか否かを判定する。   Returning to FIG. 1, the description will be continued. The specifying unit 12 refers to the communication path information 110 and determines the IF type of the interface used for data communication between tasks according to the type of memory accessed from the task, the position of the core on which the task is executed, and the like. Correct it. For example, the specifying unit 12 refers to the access destination information in the communication path information 110 and specifies a pair of tasks whose access destination is the same memory. Then, the specifying unit 12 determines whether the type of memory accessed by the specified task pair is local.

アクセス先のメモリの種別がローカルである場合、特定部12は、特定したタスクのペアが同一のプロセッサ内の同一のコアで実行されていれば、通信経路情報110内のIF種別をポインタによるデータ転送に変更する。このように、同一のプロセッサ内の同一のコアで実行されているタスクのデータ転送を、ポインタによるデータ転送に変更することにより、特定部12は、タスク間のデータ転送を高速化することができる。   When the type of memory to be accessed is local, the specifying unit 12 sets the IF type in the communication path information 110 as data by a pointer if the specified pair of tasks is executed by the same core in the same processor. Change to forwarding. In this way, the specification unit 12 can speed up data transfer between tasks by changing the data transfer of a task executed by the same core in the same processor to a data transfer by a pointer. .

一方、特定したタスクのペアが同一のプロセッサ内の異なるコアで実行されている場合、特定部12は、通信経路情報110内の最小アクセスサイズが所定サイズ以上か否かを判定する。所定サイズとは、例えばデータ転送専用のハードウェアを使用するインターフェイスを用いたデータ転送の方が高速なデータ転送となるデータのサイズである。データ転送専用のハードウェアを用いたインターフェイスとは、例えばDMA(Direct Memory Access)である。通信経路情報110内の最小アクセスサイズが所定サイズ以上である場合、特定部12は、通信経路情報110内のIF種別を、DMAによるデータ転送に変更する。このように、タスク間で転送されるデータ量が所定サイズ以上の場合に、IF種別をDMAによるデータ転送に変更することにより、特定部12は、より高速なデータ転送を設定することができる。   On the other hand, when the identified task pair is executed by different cores in the same processor, the identifying unit 12 determines whether or not the minimum access size in the communication path information 110 is equal to or larger than a predetermined size. The predetermined size is, for example, the size of data for which data transfer using an interface using hardware dedicated to data transfer is faster data transfer. An interface using hardware dedicated to data transfer is, for example, DMA (Direct Memory Access). When the minimum access size in the communication path information 110 is equal to or larger than the predetermined size, the specifying unit 12 changes the IF type in the communication path information 110 to data transfer by DMA. As described above, when the amount of data transferred between tasks is equal to or larger than a predetermined size, the specifying unit 12 can set higher-speed data transfer by changing the IF type to data transfer by DMA.

一方、通信経路情報110内の最小アクセスサイズが所定サイズ未満である場合、特定部12は、通信経路情報110内のIF種別をコアアクセスに変更する。コアアクセスとは、異なるコアで実行されているタスクが、いずれかのタスクが実行されているコアのローカルメモリを介してデータを転送するデータ転送方法である。このように、異なるコアでタスクが実行される場合であっても、いずれかのローカルメモリを介してデータ転送を行う場合に、IF種別をコアアクセスに変更することにより、特定部12は、より高速なデータ転送を設定することができる。   On the other hand, when the minimum access size in the communication path information 110 is less than the predetermined size, the specifying unit 12 changes the IF type in the communication path information 110 to core access. Core access is a data transfer method in which a task executed in a different core transfers data via the local memory of the core in which any task is executed. In this way, even when the task is executed in a different core, when data transfer is performed via any of the local memories, the specifying unit 12 can be changed by changing the IF type to core access. High-speed data transfer can be set.

次に、特定部12は、通信経路情報110に基づいて、タスク間でメモリを介してデータの送受信を実行するAPIに設定するパラメータを特定する。特定部12は、例えば、通信経路情報110内のIF種別を参照し、IF種別で示されるインターフェイスを用いた通信を実現するAPIのソースコードを、既存のソースライブラリ内で特定する。そして、特定部12は、特定したAPIの起動に用いられるパラメータを特定する。   Next, the specifying unit 12 specifies a parameter to be set in an API that performs data transmission / reception between tasks via a memory based on the communication path information 110. For example, the specifying unit 12 refers to the IF type in the communication path information 110 and specifies the API source code for realizing communication using the interface indicated by the IF type in the existing source library. Then, the specifying unit 12 specifies a parameter used for starting the specified API.

生成部13は、特定部12によって特定されたパラメータで動作するAPIのソースコードを生成する。生成部13は、例えば、通信経路情報110内のIF種別を参照し、IF種別で示されるインターフェイスを用いた通信を実現するAPIのソースコードを、既存のソースライブラリから取得する。そして、生成部13は、取得したAPIのソースコードの設定値を、特定部12によって特定されたパラメータに書き換えて、APIのソースコードを生成する。ここで生成されたAPIのソースコードは、本実施例のマルチプロセッサ装置に特化した仮想通信用APIのソースコードである。   The generation unit 13 generates API source code that operates with the parameters specified by the specification unit 12. For example, the generation unit 13 refers to the IF type in the communication path information 110, and acquires the API source code for realizing communication using the interface indicated by the IF type from the existing source library. Then, the generation unit 13 rewrites the acquired setting value of the API source code with the parameter specified by the specifying unit 12 to generate the API source code. The API source code generated here is the virtual communication API source code specialized for the multiprocessor device of this embodiment.

埋め込み部14は、メイン処理プログラムのソースコード内で、タスク間のデータ送受信の実行箇所に、生成したAPIのソースコードを埋め込む。ここで、本実施例におけるメイン処理プログラムとは、例えば、個別の処理を行う複数のタスクを実行して所定の処理を実行するプログラムである。また、プログラム生成装置10によって生成されるマルチプロセッサ用プログラムに基づいて動作するマルチプロセッサ装置が、例えば無線基地局として機能する場合、メイン処理プログラムによって実行される所定の処理は、例えば送信処理である。また、メイン処理プログラムによって実行されるタスクは、例えばエンコードの処理等の個別の処理を実行する。   The embedding unit 14 embeds the generated API source code in the execution point of data transmission / reception between tasks in the source code of the main processing program. Here, the main processing program in this embodiment is, for example, a program that executes a plurality of tasks for performing individual processing and executes predetermined processing. Further, when the multiprocessor device that operates based on the multiprocessor program generated by the program generation device 10 functions as, for example, a radio base station, the predetermined process executed by the main processing program is, for example, a transmission process . The task executed by the main processing program executes individual processing such as encoding processing.

埋め込み部14は、例えば、メイン処理プログラムのソースコード内で、タスク間のデータ通信を実行するAPIが呼び出される箇所を特定する。そして、埋め込み部14は、特定した箇所に、生成部13によって生成されたAPIのソースコードを埋め込んで、マルチプロセッサ用プログラムのソースコードを生成する。   For example, the embedding unit 14 specifies a location where an API for executing data communication between tasks is called in the source code of the main processing program. Then, the embedding unit 14 embeds the API source code generated by the generating unit 13 in the specified location, and generates the source code of the multiprocessor program.

なお、埋め込み部14は、生成したマルチプロセッサ用プログラムのソースコードをプログラム生成装置10内の記憶部に記憶させてもよく、プログラム生成装置10の外部の機器へ出力してもよい。また、埋め込み部14は、生成したマルチプロセッサ用プログラムのソースコードと、他のAPIのソースコードとを、コンパイルおよびリンクし、マルチプロセッサ用の実行コードとして、プログラム生成装置10内の記憶部に記憶させてもよい。また、埋め込み部14は、生成したマルチプロセッサ用の実行コードを、プログラム生成装置10の外部の機器(例えば、マルチプロセッサ装置)へ出力してもよい。   The embedding unit 14 may store the generated source code of the multiprocessor program in a storage unit in the program generation device 10 or may output it to a device external to the program generation device 10. The embedding unit 14 compiles and links the source code of the generated multiprocessor program and the source code of another API, and stores it in the storage unit in the program generation device 10 as an execution code for the multiprocessor. You may let them. The embedding unit 14 may output the generated execution code for the multiprocessor to a device (for example, a multiprocessor device) external to the program generation device 10.

ここで、プログラム生成装置10によって生成されたマルチプロセッサ用プログラムに基づいて動作するマルチプロセッサ装置について説明する。図6は、マルチプロセッサ装置30の一例を示す説明図である。本実施例におけるマルチプロセッサ装置30は、複数のプロセッサであるDSP1およびDSP2と、マルチプロセッサ用ファームウェア31および各種データを格納するROMとを有する。マルチプロセッサ用ファームウェア31は、プログラム生成装置10によって生成されたマルチプロセッサ用プログラムの実行コードであり、マルチプロセッサ装置30の起動前にマルチプロセッサ装置30内のROMに予め格納される。   Here, a multiprocessor device that operates based on the multiprocessor program generated by the program generation device 10 will be described. FIG. 6 is an explanatory diagram illustrating an example of the multiprocessor device 30. The multiprocessor device 30 in this embodiment includes a plurality of processors DSP1 and DSP2, a multiprocessor firmware 31 and a ROM that stores various data. The multiprocessor firmware 31 is an execution code of a multiprocessor program generated by the program generation device 10 and is stored in advance in a ROM in the multiprocessor device 30 before the multiprocessor device 30 is activated.

DSP1には、複数のコアであるCore11およびCore12と、複数のメモリであるMEM11、MEM12およびMEM13とが含まれる。また、DSP1には、DSP1内のコア間でメモリの転送を行うインターフェイスであるDMAと、DSP1の外部の機器と間でシリアル通信を行うインターフェイスの一例であるSRIO(Serial Rapid IO)とが含まれる。DSP1の外部の機器と間でシリアル通信を行うインターフェイスとしては、SRIOの他に、イーサネット(登録商標)、RS232C、PCI等がDSP1に含まれていてもよい。   The DSP 1 includes Core 11 and Core 12, which are a plurality of cores, and MEM 11, MEM 12 and MEM 13, which are a plurality of memories. The DSP 1 also includes a DMA that is an interface for transferring memory between cores in the DSP 1 and an SRIO (Serial Rapid IO) that is an example of an interface that performs serial communication with an external device of the DSP 1. . In addition to SRIO, Ethernet (registered trademark), RS232C, PCI, or the like may be included in DSP 1 as an interface for performing serial communication with an external device of DSP 1.

MEM11は、Core11のローカルメモリであり、主としてCore11からアクセスされる。MEM11は、Core11以外のコア(例えばCore12)からアクセスされることも可能であるが、Core11との間のデータ転送速度の方が、Core11以外のコアとの間のデータ転送速度よりも高速である。   The MEM 11 is a local memory of the Core 11 and is mainly accessed from the Core 11. The MEM 11 can be accessed from a core other than the Core 11 (for example, Core 12), but the data transfer rate with the Core 11 is faster than the data transfer rate with the core other than the Core 11. .

MEM12は、Core12のローカルメモリであり、主としてCore12からアクセスされる。MEM12も、Core12以外のコア(例えばCore11)からアクセスされることが可能であるが、Core12との間のデータ転送速度の方が、Core12以外のコアとの間のデータ転送速度よりも高速である。   The MEM 12 is a local memory of the Core 12, and is mainly accessed from the Core 12. The MEM 12 can also be accessed from a core other than the Core 12 (for example, the Core 11), but the data transfer rate with the Core 12 is faster than the data transfer rate with the core other than the Core 12. .

MEM13は、Core11およびCore12のシェアードメモリであり、Core11およびCore12の双方からアクセスされ、Core11との間のデータ転送速度と、Core12との間のデータ転送速度とは、同程度である。   The MEM 13 is a shared memory of the Core 11 and the Core 12, and is accessed from both the Core 11 and the Core 12, and the data transfer rate with the Core 11 and the data transfer rate with the Core 12 are approximately the same.

DSP2には、複数のコアであるCore21およびCore22と、複数のメモリであるMEM21、MEM22およびMEM23とが含まれる。また、DSP2には、DMAとSRIOとが含まれる。   The DSP 2 includes Core21 and Core22 that are a plurality of cores, and MEM21, MEM22, and MEM23 that are a plurality of memories. The DSP 2 includes DMA and SRIO.

ROM内のマルチプロセッサ用ファームウェア31には、タスク毎の実行コードが含まれている。DSP1またはDSP2は、マルチプロセッサ用ファームウェア31をROMから読み出し、それぞれのタスクの実行コードを、タスクを実行するコアのローカルメモリに展開する。なお、全てのタスクの実行コードが、いずれかのローカルメモリに必ずしも常時展開されている必要はなく、処理に用いられるタスクの実行コードのみがローカルメモリに展開されてもよい。   The multiprocessor firmware 31 in the ROM includes an execution code for each task. The DSP 1 or DSP 2 reads the multiprocessor firmware 31 from the ROM, and expands the execution code of each task in the local memory of the core that executes the task. Note that the execution codes of all tasks need not always be expanded in any local memory, and only the execution codes of tasks used for processing may be expanded in the local memory.

それぞれのタスクは、データの送信において、タスクの実行コードに埋め込まれている命令に従って、命令で指定されたインターフェイスを用いて、命令で指定されたメモリにデータを書き込む。また、それぞれのタスクは、データの受信において、タスクの実行コードに埋め込まれている命令に従って、命令で指定されたインターフェイスを用いて、命令で指定されたメモリからデータを読み出す。   In transmitting data, each task writes data in the memory specified by the instruction using the interface specified by the instruction in accordance with the instruction embedded in the execution code of the task. In addition, each task reads data from the memory specified by the instruction using the interface specified by the instruction in accordance with the instruction embedded in the execution code of the task.

各コアは、ローカルメモリ内の実行コードをタスクとして機能させる。そして、それぞれのタスクは、ローカルメモリから読み出した各種データを適宜ローカルメモリやシェアードメモリ上の自身に割り当てられた領域に展開し、この展開した各種データに基づいて各種処理を実行する。   Each core causes the execution code in the local memory to function as a task. Each task expands various data read from the local memory in an area allocated to itself on the local memory or the shared memory, and executes various processes based on the expanded data.

次に、通信経路情報110に基づいてプログラム生成装置10が生成したマルチプロセッサ用プログラムと、マルチプロセッサ用プログラムに基づいて動作するマルチプロセッサ装置30との関係について、図7〜図13を参照して説明する。図7〜図13では、図6において例示したマルチプロセッサ装置30の動作を示している。   Next, the relationship between the multiprocessor program generated by the program generation device 10 based on the communication path information 110 and the multiprocessor device 30 operating based on the multiprocessor program will be described with reference to FIGS. explain. 7 to 13 show the operation of the multiprocessor device 30 illustrated in FIG.

図7A〜Cは、ポインタによるデータ転送の一例を示す説明図である。図7Aに例示した仮想通信情報200では、TaskAからTaskBへのデータ転送をMEM12を介して行う仮想通信が定義されている。   7A to 7C are explanatory diagrams illustrating an example of data transfer using a pointer. In the virtual communication information 200 illustrated in FIG. 7A, virtual communication in which data transfer from Task A to Task B is performed via the MEM 12 is defined.

図7Bの通信経路情報110に例示されているように、TaskAおよびTaskBは、同一のDSP1内の同一のCore12で実行されている。また、図7Cに例示されているように、MEM12はCore12のローカルメモリであるため、特定部12は、MEM12を介したTaskAからTaskBへのデータ転送におけるIF種別を、例えばポインタによるデータ転送に変更する。図7Bでは、特定部12によってIF種別が変更された後の通信経路情報110が例示されている。   As illustrated in the communication path information 110 of FIG. 7B, Task A and Task B are executed by the same Core 12 in the same DSP 1. Further, as illustrated in FIG. 7C, since the MEM 12 is the local memory of the Core 12, the specifying unit 12 changes the IF type in the data transfer from Task A to Task B via the MEM 12, for example, data transfer by a pointer. To do. FIG. 7B illustrates communication path information 110 after the IF type is changed by the specifying unit 12.

図8は、タスク間のデータ転送の詳細な一例を示す説明図である。データの転送元のTaskAから、データの転送先のTaskBへのデータ転送では、TaskA内のデータ送信部32が転送対象のデータをMEM12に書き込み、TaskB内のデータ受信部33が転送対象のデータをMEM12から読み出す。ただし、IF種別がポインタによるデータの転送に変更となったため、図7A〜Cの例では、データ自体の転送は行われず、データが格納されたMEM12内の場所を示すポインタの情報が、データ送信部32からデータ受信部33へ送られる。   FIG. 8 is an explanatory diagram showing a detailed example of data transfer between tasks. In data transfer from Task A as the data transfer source to Task B as the data transfer destination, the data transmission unit 32 in Task A writes the data to be transferred to the MEM 12, and the data reception unit 33 in Task B stores the data to be transferred. Read from MEM12. However, since the IF type has been changed to data transfer using a pointer, the data itself is not transferred in the example of FIGS. 7A to 7C, and pointer information indicating the location in the MEM 12 where the data is stored is the data transmission. The data is sent from the unit 32 to the data receiving unit 33.

図9A〜Cは、コアアクセスによるデータ転送(Read Local)の一例を示す説明図である。図9Aに例示した仮想通信情報200では、TaskAからTaskBへのデータ転送をMEM12を介して行う仮想通信が定義されている。   9A to 9C are explanatory diagrams illustrating an example of data transfer (Read Local) by core access. In the virtual communication information 200 illustrated in FIG. 9A, virtual communication in which data transfer from Task A to Task B is performed via the MEM 12 is defined.

図9Bの通信経路情報110に例示されているように、TaskAおよびTaskBは、同一のDSP1内で実行されているが、TaskAはCore11で実行され、TaskBはCore12で実行されている。また、図9Cに例示されているように、MEM12はCore12のローカルメモリであるため、特定部12は、通信経路情報110内の最小アクセスサイズが所定サイズ(例えば512byte)以上か否かを判定する。   As illustrated in the communication path information 110 of FIG. 9B, TaskA and TaskB are executed in the same DSP1, but TaskA is executed in Core11, and TaskB is executed in Core12. Further, as illustrated in FIG. 9C, since the MEM 12 is the local memory of the Core 12, the specifying unit 12 determines whether or not the minimum access size in the communication path information 110 is a predetermined size (for example, 512 bytes) or more. .

通信経路情報110内の最小アクセスサイズ(図9Bの例では256byte)が所定サイズ未満であるため、特定部12は、MEM12を介したTaskAからTaskBへのデータ転送におけるIF種別を、例えばコアアクセスに変更する。図9Bでは、特定部12によってIF種別が変更された後の通信経路情報110が例示されている。データの転送元のTaskAからデータの転送先のTaskBへのデータ転送では、TaskA内のデータ送信部32がコアアクセスにより転送対象のデータをMEM12に書き込み、TaskB内のデータ受信部33が転送対象のデータをMEM12から読み出す。   Since the minimum access size (256 bytes in the example of FIG. 9B) in the communication path information 110 is less than the predetermined size, the specifying unit 12 sets the IF type in data transfer from Task A to Task B via the MEM 12 to, for example, core access. change. FIG. 9B illustrates communication path information 110 after the IF type is changed by the specifying unit 12. In data transfer from Task A as the data transfer source to Task B as the data transfer destination, the data transmission unit 32 in Task A writes the data to be transferred to the MEM 12 by core access, and the data reception unit 33 in Task B receives the transfer target data. Read data from MEM12.

図10A〜Cは、コアアクセスによるデータ転送(Write Local)の一例を示す説明図である。図10Aに例示した仮想通信情報200では、TaskBからTaskAへのデータ転送をMEM12を介して行う仮想通信が定義されている。   10A to 10C are explanatory diagrams illustrating an example of data transfer (Write Local) by core access. In the virtual communication information 200 illustrated in FIG. 10A, virtual communication in which data transfer from Task B to Task A is performed via the MEM 12 is defined.

図10Bの通信経路情報110に例示されているように、TaskAおよびTaskBは、同一のDSP1内で実行されているが、TaskAはCore11で実行され、TaskBはCore12で実行されている。また、図10Cに例示されているように、MEM12はCore12のローカルメモリであるため、特定部12は、通信経路情報110内の最小アクセスサイズが所定サイズ(例えば512byte)以上か否かを判定する。   As illustrated in the communication path information 110 of FIG. 10B, TaskA and TaskB are executed in the same DSP1, but TaskA is executed in Core11, and TaskB is executed in Core12. Further, as illustrated in FIG. 10C, since the MEM 12 is a local memory of the Core 12, the specifying unit 12 determines whether or not the minimum access size in the communication path information 110 is a predetermined size (for example, 512 bytes) or more. .

通信経路情報110内の最小アクセスサイズ(図10Bの例では256byte)が所定サイズ未満であるため、特定部12は、MEM12を介したTaskBからTaskAへのデータ転送におけるIF種別を、例えばコアアクセスに変更する。図10Bでは、特定部12によってIF種別が変更された後の通信経路情報110が例示されている。データの転送元のTaskBから、データの転送先のTaskAへのデータ転送では、TaskB内のデータ送信部32が転送対象のデータをMEM12に書き込み、TaskA内のデータ受信部33がコアアクセスにより転送対象のデータをMEM12から読み出す。   Since the minimum access size (256 bytes in the example of FIG. 10B) in the communication path information 110 is less than the predetermined size, the specifying unit 12 sets the IF type in data transfer from Task B to Task A via the MEM 12 to, for example, core access. change. FIG. 10B illustrates communication path information 110 after the IF type is changed by the specifying unit 12. In data transfer from Task B as the data transfer source to Task A as the data transfer destination, the data transmission unit 32 in Task B writes the data to be transferred to the MEM 12, and the data reception unit 33 in Task A transfers the data by core access. Is read from the MEM 12.

図11A〜Cは、シェアードメモリによるデータ転送の一例を示す説明図である。図11Aに例示した仮想通信情報200では、TaskAからTaskBへのデータ転送をMEM13を介して行う仮想通信が定義されている。   11A to 11C are explanatory diagrams illustrating an example of data transfer by the shared memory. In the virtual communication information 200 illustrated in FIG. 11A, virtual communication in which data transfer from Task A to Task B is performed via the MEM 13 is defined.

図11Bの通信経路情報110に例示されているように、TaskAおよびTaskBは、同一のDSP1内で実行されているが、TaskAはCore11で実行され、TaskBはCore12で実行されている。また、図11Cに例示されているように、MEM13はCore11またはCore12のローカルメモリではないため、特定部12は、MEM13を介したTaskAからTaskBへのデータ転送におけるIF種別の変更を行わない。図11Bに例示した通信経路情報110では、IF種別が変更前のBusのままとなっている。データの転送元のTaskAから、データの転送先のTaskBへのデータ転送では、TaskA内のデータ送信部32が転送対象のデータをMEM13に書き込み、TaskB内のデータ受信部33が転送対象のデータをMEM13から読み出す。   As illustrated in the communication path information 110 of FIG. 11B, TaskA and TaskB are executed in the same DSP1, but TaskA is executed in Core11, and TaskB is executed in Core12. As illustrated in FIG. 11C, since the MEM 13 is not the local memory of the Core 11 or the Core 12, the specifying unit 12 does not change the IF type in the data transfer from the Task A to the Task B via the MEM 13. In the communication path information 110 illustrated in FIG. 11B, the IF type remains Bus before change. In data transfer from Task A as the data transfer source to Task B as the data transfer destination, the data transmission unit 32 in Task A writes the data to be transferred to the MEM 13, and the data reception unit 33 in Task B stores the data to be transferred. Read from MEM13.

図12A〜Cは、DMAによるデータ転送の一例を示す説明図である。図12Aに例示した仮想通信情報200では、TaskAからTaskBへのデータ転送をMEM12を介して行う仮想通信が定義されている。ただし、最小アクセスサイズの定義は512byteとなっている。   12A to 12C are explanatory diagrams illustrating an example of data transfer by DMA. In the virtual communication information 200 illustrated in FIG. 12A, virtual communication in which data transfer from Task A to Task B is performed via the MEM 12 is defined. However, the definition of the minimum access size is 512 bytes.

図12Bの通信経路情報110に例示されているように、TaskAおよびTaskBは、同一のDSP1内で実行されているが、TaskAはCore11で実行され、TaskBはCore12で実行されている。また、図12Cに例示されているように、MEM12はCore12のローカルメモリであるため、特定部12は、通信経路情報110内の最小アクセスサイズが所定サイズ(例えば512byte)以上か否かを判定する。   As illustrated in the communication path information 110 of FIG. 12B, TaskA and TaskB are executed in the same DSP1, but TaskA is executed in Core11, and TaskB is executed in Core12. Further, as illustrated in FIG. 12C, since the MEM 12 is the local memory of the Core 12, the specifying unit 12 determines whether or not the minimum access size in the communication path information 110 is equal to or larger than a predetermined size (for example, 512 bytes). .

通信経路情報110内の最小アクセスサイズ(図12Bの例では512byte)が所定サイズ以上であるため、特定部12は、MEM12を介したTaskAからTaskBへのデータ転送におけるIF種別を、例えばDMAによるデータ転送に変更する。図12Bでは、特定部12によってIF種別が変更された後の通信経路情報110が例示されている。データの転送元のTaskAから、データの転送先のTaskBへのデータ転送では、TaskA内のデータ送信部32が転送対象のデータをMEM11を介してDMAへ送り、TaskB内のデータ受信部33が転送対象のデータをMEM12から読み出す。   Since the minimum access size (512 bytes in the example of FIG. 12B) in the communication path information 110 is equal to or larger than the predetermined size, the specifying unit 12 sets the IF type in data transfer from Task A to Task B via the MEM 12, for example, data by DMA Change to forwarding. In FIG. 12B, the communication path information 110 after the IF type is changed by the specifying unit 12 is illustrated. In data transfer from Task A as the data transfer source to Task B as the data transfer destination, the data transmission unit 32 in Task A sends the data to be transferred to the DMA via the MEM 11, and the data reception unit 33 in Task B transfers the data. Read target data from MEM 12.

図13A〜Cは、SRIOによるデータ転送の一例を示す説明図である。図13Aに例示した仮想通信情報200では、TaskAからTaskBへのデータ転送をMEM21を介して行う仮想通信が定義されている。   13A to 13C are explanatory diagrams illustrating an example of data transfer by SRIO. In the virtual communication information 200 illustrated in FIG. 13A, virtual communication in which data transfer from Task A to Task B is performed via the MEM 21 is defined.

図13Bの通信経路情報110に例示されているように、TaskAおよびTaskBは、異なるプロセッサ内のコアで実行されている。すなわち、TaskAはDSP1内のCore11で実行され、TaskBはDPS2内のCore21で実行されている。図13Cに例示されているように、TaskAおよびTaskBは異なるプロセッサ内で実行されているため、特定部12は、MEM13を介したTaskAからTaskBへのデータ転送におけるIF種別の変更を行わない。図13Bに例示した通信経路情報110では、IF種別が変更前のSRIOのままとなっている。データの転送元のTaskAから、データの転送先のTaskBへのデータ転送では、TaskA内のデータ送信部32が転送対象のデータをMEM11を介してSRIOへ送り、TaskB内のデータ受信部33が転送対象のデータをMEM21から読み出す。なお、プロセッサ間のデータ転送において使用可能なインターフェイス(例えば、SRIO、イーサネット、PCI等)が複数存在する場合には、例えばデータの転送速度が最も高いインターフェイスが採用される。   As illustrated in the communication path information 110 of FIG. 13B, Task A and Task B are executed in cores in different processors. That is, TaskA is executed by Core11 in DSP1, and TaskB is executed by Core21 in DPS2. As illustrated in FIG. 13C, since Task A and Task B are executed in different processors, the specifying unit 12 does not change the IF type in data transfer from Task A to Task B via the MEM 13. In the communication path information 110 illustrated in FIG. 13B, the IF type remains the SRIO before the change. In data transfer from Task A as the data transfer source to Task B as the data transfer destination, the data transmission unit 32 in Task A sends the data to be transferred to SRIO via MEM 11, and the data reception unit 33 in Task B transfers the data. Read target data from MEM21. When there are a plurality of interfaces (for example, SRIO, Ethernet, PCI, etc.) that can be used for data transfer between processors, the interface with the highest data transfer rate is employed, for example.

図14は、プログラム生成装置10の動作の一例を示すフローチャートである。プログラム生成装置10は、例えば、図示しない入力装置を介してユーザからの指示を受け付けた場合等の所定のタイミングで、本フローチャートに示す動作を開始する。   FIG. 14 is a flowchart illustrating an example of the operation of the program generation device 10. The program generation device 10 starts the operation shown in this flowchart at a predetermined timing, for example, when an instruction from a user is received via an input device (not shown).

まず、特定部12は、通信経路情報110を参照して、アクセス先のメモリの中で、未選択のメモリを1つ選択する(S100)。そして、特定部12は、通信経路情報110を参照して、選択したメモリにデータを書き込むタスクと読み出すタスクのペアを特定する(S101)。そして、特定部12は、通信経路情報110を参照して、タスクのペアによってアクセスされるメモリの種別がローカルか否かを判定する(S102)。   First, the specifying unit 12 refers to the communication path information 110 and selects one unselected memory from among the access destination memories (S100). Then, the identifying unit 12 refers to the communication path information 110 and identifies a pair of a task that writes data and a task that reads data in the selected memory (S101). Then, the specifying unit 12 refers to the communication path information 110 and determines whether or not the type of memory accessed by the task pair is local (S102).

アクセス先のメモリの種別がローカルである場合(S102:Yes)、特定部12は、通信経路情報110を参照して、タスクのペアが同一のプロセッサ内で実行されているか否かを判定する(S103)。タスクのペアによってアクセスされるメモリの種別がローカルではない場合(S102:No)、または、タスクのペアが異なるプロセッサ内で実行されている場合(S103:No)、特定部12は、ステップS109に示す処理を実行する。   When the memory type of the access destination is local (S102: Yes), the identifying unit 12 refers to the communication path information 110 and determines whether or not the task pair is executed in the same processor ( S103). When the type of memory accessed by the task pair is not local (S102: No), or when the task pair is executed in a different processor (S103: No), the specifying unit 12 proceeds to step S109. The process shown is executed.

タスクのペアが同一のプロセッサ内で実行されている場合(S103:Yes)、特定部12は、通信経路情報110を参照して、タスクのペアが同一のコアで実行されているか否かを判定する(S104)。タスクのペアが同一のコアで実行されている場合(S104:Yes)、特定部12は、通信経路情報110内のIF種別をポインタによるデータ転送に変更し(S105)、ステップS109に示す処理を実行する。   When the task pair is executed in the same processor (S103: Yes), the specifying unit 12 refers to the communication path information 110 and determines whether the task pair is executed in the same core. (S104). When the task pair is executed by the same core (S104: Yes), the specifying unit 12 changes the IF type in the communication path information 110 to data transfer by a pointer (S105), and performs the process shown in step S109. Run.

一方、タスクのペアが異なるコアで実行されている場合(S104:No)、特定部12は、通信経路情報110内の最小アクセスサイズを参照して、最小アクセスサイズが所定サイズ以上か否かを判定する(S106)。最小アクセスサイズが所定サイズ未満である場合(S106:No)、特定部12は、通信経路情報110内のIF種別を、コアアクセスによるデータ転送に変更し(S107)、ステップS109に示す処理を実行する。   On the other hand, when the task pair is executed by a different core (S104: No), the specifying unit 12 refers to the minimum access size in the communication path information 110 and determines whether the minimum access size is equal to or larger than a predetermined size. Determine (S106). When the minimum access size is less than the predetermined size (S106: No), the specifying unit 12 changes the IF type in the communication path information 110 to data transfer by core access (S107), and executes the process shown in step S109. To do.

一方、最小アクセスサイズが所定サイズ以上である場合(S106:Yes)、特定部12は、通信経路情報110内のIF種別を、DMAによるデータ転送に変更する(S108)。そして、特定部12は、通信経路情報110内のIF種別を参照し、IF種別で示されるインターフェイスを用いた通信を実現するAPIのソースコードを、例えば既存のソースライブラリから取得する(S109)。そして、特定部12は、取得したAPIの起動に用いられるパラメータを特定する(S110)。   On the other hand, when the minimum access size is equal to or larger than the predetermined size (S106: Yes), the specifying unit 12 changes the IF type in the communication path information 110 to data transfer by DMA (S108). Then, the specifying unit 12 refers to the IF type in the communication path information 110, and acquires the API source code that realizes communication using the interface indicated by the IF type from, for example, an existing source library (S109). Then, the specifying unit 12 specifies a parameter used for starting the acquired API (S110).

次に、生成部13は、ステップS110において特定されたパラメータで起動するように、ステップS109において取得されたソースコードを書き換えることにより、仮想通信APIを生成する(S111)。そして、生成部13は、生成した仮想通信APIをプログラム生成装置10内の記憶部に保持する。そして、特定部12は、通信経路情報110を参照して、アクセス先のメモリを全て選択したか否かを判定する(S112)。未選択のメモリがある場合(S112:No)、特定部12は、再びステップS100に示した処理を実行する。   Next, the generation unit 13 generates a virtual communication API by rewriting the source code acquired in step S109 so as to start with the parameters specified in step S110 (S111). Then, the generation unit 13 holds the generated virtual communication API in the storage unit in the program generation device 10. Then, the specifying unit 12 refers to the communication path information 110 and determines whether all the access destination memories have been selected (S112). When there is an unselected memory (S112: No), the specifying unit 12 executes the process shown in step S100 again.

一方、アクセス先のメモリを全て選択した場合(S112:Yes)、埋め込み部14は、メイン処理プログラムにおいて、タスク間でのデータの送受信の実行箇所に、生成したAPIのソースコードを埋め込むAPIコード埋め込み処理を実行する(S113)。そして、プログラム生成装置10は、本フローチャートに示した動作を終了する。   On the other hand, when all the access destination memories are selected (S112: Yes), the embedding unit 14 embeds an API code that embeds the generated API source code at the execution point of data transmission / reception between tasks in the main processing program. The process is executed (S113). Then, the program generation device 10 ends the operation shown in this flowchart.

ステップS113において、埋め込み部14は、例えば、メイン処理プログラムのソースコード内で、タスク間のデータ通信を実行するAPIが呼び出される箇所を特定する。そして、埋め込み部14は、特定した箇所に、生成部13によって生成されたAPIのソースコードを埋め込んで、マルチプロセッサ用プログラムを生成する。   In step S113, the embedding unit 14 specifies, for example, a location where an API for executing data communication between tasks is called in the source code of the main processing program. Then, the embedding unit 14 embeds the API source code generated by the generating unit 13 in the specified location, and generates a multiprocessor program.

以上、実施例1について説明した。本実施例におけるプログラム生成装置10によれば、マルチプロセッサ装置において、処理の呼び出しにかかっていた時間を削減し、全体的な処理時間の削減を図ることができる。   In the above, Example 1 was demonstrated. According to the program generation device 10 in the present embodiment, in the multiprocessor device, it is possible to reduce the time required for the process call and to reduce the overall processing time.

図15は、実施例2におけるプログラム生成装置の一例を示す説明図である。本実施例におけるプログラム生成装置10’は、例えば図15に示すように、通信経路情報格納部11と、特定部12と、生成部13と、埋め込み部14とを有する。また、プログラム生成装置10’は、仮想通信情報格納部20と、物理位置情報格納部21と、受付部22と、通信経路情報生成部23と、APIソースライブラリ格納部24と、メイン処理プログラム格納部25と、実行コード生成部26とを有する。なお、以下に説明する点を除き、図15において、図1と同じ符号を付した構成は、図1における構成と同一または同様の機能を有するため説明を省略する。   FIG. 15 is an explanatory diagram illustrating an example of a program generation device according to the second embodiment. For example, as illustrated in FIG. 15, the program generation device 10 ′ in the present embodiment includes a communication path information storage unit 11, a specification unit 12, a generation unit 13, and an embedding unit 14. In addition, the program generation device 10 ′ includes a virtual communication information storage unit 20, a physical location information storage unit 21, a reception unit 22, a communication path information generation unit 23, an API source library storage unit 24, and a main processing program storage. Unit 25 and an execution code generation unit 26. Except for the points described below, in FIG. 15, the components denoted by the same reference numerals as those in FIG. 1 have the same or similar functions as those in FIG.

受付部22は、ユーザのコンピュータ等の外部機器から、図3に例示した仮想通信情報200、図4に例示したタスクの物理位置情報210、および図5に例示したメモリの物理位置情報214をそれぞれ受け付ける。そして、受付部22は、受け付けた仮想通信情報200を仮想通信情報格納部20内に格納する。また、受付部22は、受け付けたタスクの物理位置情報210およびメモリの物理位置情報214を物理位置情報格納部21内に格納する。   The receiving unit 22 receives the virtual communication information 200 illustrated in FIG. 3, the physical position information 210 of the task illustrated in FIG. 4, and the physical position information 214 of the memory illustrated in FIG. 5 from an external device such as a user computer. Accept. Then, the reception unit 22 stores the received virtual communication information 200 in the virtual communication information storage unit 20. In addition, the reception unit 22 stores the physical position information 210 of the received task and the physical position information 214 of the memory in the physical position information storage unit 21.

通信経路情報生成部23は、仮想通信情報格納部20内の仮想通信情報200と、物理位置情報格納部21内のタスクの物理位置情報210およびメモリの物理位置情報214とに基づいて、図2に例示した通信経路情報110を生成する。そして、通信経路情報生成部23は、生成した通信経路情報110を通信経路情報格納部11に格納する。   Based on the virtual communication information 200 in the virtual communication information storage unit 20, the physical position information 210 of the task in the physical position information storage unit 21, and the physical position information 214 of the memory, the communication path information generation unit 23 performs the processing shown in FIG. The communication path information 110 illustrated in FIG. Then, the communication path information generation unit 23 stores the generated communication path information 110 in the communication path information storage unit 11.

APIソースライブラリ格納部24は、インターフェイス毎に、インターフェイスを用いた通信を実現するAPIのソースライブラリを格納する。本実施例において、生成部13は、通信経路情報110内のIF種別を参照し、IF種別で示されるインターフェイスを用いた通信を実現するAPIのソースコードを、APIソースライブラリ格納部24から取得する。   The API source library storage unit 24 stores an API source library that realizes communication using an interface for each interface. In the present embodiment, the generation unit 13 refers to the IF type in the communication path information 110 and acquires the API source code that realizes communication using the interface indicated by the IF type from the API source library storage unit 24. .

メイン処理プログラム格納部25は、メイン処理プログラムのソースコードを格納する。埋め込み部14は、メイン処理プログラム格納部25からメイン処理プログラムのソースコードを取得する。実行コード生成部26は、埋め込み部14によって生成されたマルチプロセッサ用プログラムのソースコードを、他のAPIのソースコードと共にコンパイルおよびリンクし、マルチプロセッサ用の実行コードを生成する。そして、実行コード生成部26は、生成した実行コードを外部機器(例えばマルチプロセッサ装置30等)へ出力する。   The main processing program storage unit 25 stores the source code of the main processing program. The embedding unit 14 acquires the source code of the main processing program from the main processing program storage unit 25. The execution code generation unit 26 compiles and links the source code of the multiprocessor program generated by the embedding unit 14 together with the source code of another API, and generates an execution code for the multiprocessor. Then, the execution code generation unit 26 outputs the generated execution code to an external device (for example, the multiprocessor device 30).

図16は、実施例2におけるプログラム生成装置10’の動作の一例を示すフローチャートである。プログラム生成装置10’は、例えば、図示しない入力装置を介してユーザからの指示を受け付けた場合等の所定のタイミングで、本フローチャートに示す動作を開始する。   FIG. 16 is a flowchart illustrating an example of the operation of the program generation device 10 ′ according to the second embodiment. The program generation device 10 ′ starts the operation shown in this flowchart at a predetermined timing, for example, when an instruction from a user is received via an input device (not shown).

まず、受付部22は、ユーザのコンピュータ等の外部機器から、仮想通信情報200、タスクの物理位置情報210、およびメモリの物理位置情報214をそれぞれ受け付ける(S200)。そして、受付部22は、受け付けた仮想通信情報200を仮想通信情報格納部20内に格納し、受け付けたタスクの物理位置情報210およびメモリの物理位置情報214を物理位置情報格納部21内に格納する(S201)。   First, the receiving unit 22 receives virtual communication information 200, task physical position information 210, and memory physical position information 214 from an external device such as a user's computer (S200). Then, the reception unit 22 stores the received virtual communication information 200 in the virtual communication information storage unit 20, and stores the received physical position information 210 and physical position information 214 of the memory in the physical position information storage unit 21. (S201).

次に、通信経路情報生成部23は、仮想通信情報200、タスクの物理位置情報210、メモリの物理位置情報214に基づいて、タスク名称およびメモリ名称をキーとして、図2に例示した通信経路情報110を生成する(S202)。そして、プログラム生成装置10’は、図14に例示したステップS100〜S113の処理を実行する。   Next, the communication path information generation unit 23 uses the task name and the memory name as keys based on the virtual communication information 200, the physical position information 210 of the task, and the physical position information 214 of the memory, and the communication path information illustrated in FIG. 110 is generated (S202). Then, the program generation device 10 'executes the processes of steps S100 to S113 illustrated in FIG.

本実施例のプログラム生成装置10’によれば、タスクを実行させるコア等の位置を変更した場合であっても、仮想通信情報、タスクの物理位置情報、およびメモリの物理位置情報を変更することで、変更に対応した実行コードを生成することができる。これにより、タスクを実行するコアやアクセス先のメモリの位置変更に伴うメイン処理プログラムの変更負担を軽減できる。そのため、マルチプロセッサ装置およびマルチプロセッサ装置に適用するファームウェアの開発において、プログラマ等の作業負担を軽減することができる。   According to the program generation device 10 ′ of the present embodiment, even when the position of a core or the like that executes a task is changed, the virtual communication information, the physical position information of the task, and the physical position information of the memory are changed. Thus, an execution code corresponding to the change can be generated. As a result, it is possible to reduce the burden of changing the main processing program that accompanies the change of the position of the core executing the task and the memory to be accessed. Therefore, it is possible to reduce the workload of programmers and the like in developing a multiprocessor device and firmware applied to the multiprocessor device.

なお、上記の実施例1または2において説明したプログラム生成装置における各種の処理は、予め用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータで実行することによって実現することができる。   Various processes in the program generation apparatus described in the first or second embodiment can be realized by executing a prepared program on a computer such as a personal computer or a workstation.

図17は、プログラム生成装置の機能を実現するコンピュータの一例を示す説明図である。図17に示すように、コンピュータ100は、操作部110aと、スピーカ110bと、カメラ110cと、ディスプレイ120と、通信部130とを有する。さらに、このコンピュータ100は、CPU150と、ROM160と、HDD170と、RAM180とを有する。これら110〜180の各部はバス140を介して接続される。   FIG. 17 is an explanatory diagram illustrating an example of a computer that implements the functions of the program generation device. As illustrated in FIG. 17, the computer 100 includes an operation unit 110a, a speaker 110b, a camera 110c, a display 120, and a communication unit 130. Further, the computer 100 includes a CPU 150, a ROM 160, an HDD 170, and a RAM 180. These units 110 to 180 are connected via a bus 140.

HDD170には、例えば図17に示すように、生成プログラム170aが予め記憶される。上記実施例1では、生成プログラム170aがコンピュータ100に読み込まれることにより、コンピュータ100は、特定部12、生成部13、および埋め込み部14と同様の機能を発揮する。また、上記実施例1において、RAM180またはHDD170には、通信経路情報格納部11内のデータが格納される。   For example, as shown in FIG. 17, a generation program 170 a is stored in the HDD 170 in advance. In the first embodiment, when the generation program 170 a is read into the computer 100, the computer 100 exhibits the same functions as the specifying unit 12, the generation unit 13, and the embedding unit 14. In the first embodiment, the RAM 180 or the HDD 170 stores data in the communication path information storage unit 11.

また、上記実施例2では、生成プログラム170aがコンピュータ100に読み込まれることにより、コンピュータ100は、特定部12、生成部13、埋め込み部14、受付部22、通信経路情報生成部23、および実行コード生成部26と同様の機能を発揮する。また、上記実施例2において、RAM180またはHDD170には、通信経路情報格納部11、仮想通信情報格納部20、物理位置情報格納部21、APIソースライブラリ格納部24、およびメイン処理プログラム格納部25内のデータが格納される。   In the second embodiment, when the generation program 170a is read into the computer 100, the computer 100 causes the specification unit 12, the generation unit 13, the embedding unit 14, the reception unit 22, the communication path information generation unit 23, and the execution code. The same function as that of the generation unit 26 is exhibited. In the second embodiment, the RAM 180 or the HDD 170 includes the communication path information storage unit 11, the virtual communication information storage unit 20, the physical location information storage unit 21, the API source library storage unit 24, and the main processing program storage unit 25. Is stored.

生成プログラム170aについては、図14または図16に示した各々の構成要素と同様、適宜統合または分離してもよい。また、HDD170に格納される各データは、常に全てのデータがHDD170に格納される必要はなく、処理に用いられるデータのみがHDD170に格納されればよい。   The generation program 170a may be appropriately integrated or separated as in the case of each component shown in FIG. 14 or FIG. In addition, it is not always necessary that all data stored in the HDD 170 is stored in the HDD 170, and only data used for processing may be stored in the HDD 170.

そして、CPU150が、生成プログラム170aをHDD170から読み出してRAM180に展開する。これによって、図17に示すように、生成プログラム170aは、生成プロセス180aとして機能する。この生成プロセス180aは、HDD170から読み出した各種データを適宜RAM180上の自身に割り当てられた領域に展開し、この展開した各種データに基づいて各種処理を実行する。   Then, the CPU 150 reads the generation program 170 a from the HDD 170 and expands it in the RAM 180. Accordingly, as illustrated in FIG. 17, the generation program 170a functions as a generation process 180a. The generation process 180a expands various data read from the HDD 170 in an area allocated to itself on the RAM 180, and executes various processes based on the expanded data.

なお、上記した各実施例における生成プロセス180aは、図1および図15に示した特定部12、生成部13、および埋め込み部14において実行される処理、例えば図14または図16に示した処理を含む。CPU150上で仮想的に実現される各処理部は、常に全ての処理部がCPU150上で動作する必要はなく、処理に用いられる処理部のみが仮想的に実現されればよい。   Note that the generation process 180a in each of the above-described embodiments includes the processing executed in the specifying unit 12, the generation unit 13, and the embedding unit 14 shown in FIGS. 1 and 15, for example, the processing shown in FIG. 14 or FIG. Including. Each processing unit virtually realized on the CPU 150 does not always require that all processing units operate on the CPU 150, and only the processing unit used for processing needs to be virtually realized.

なお、上記の生成プログラム170aについては、必ずしも最初からHDD170やROM160に記憶させておく必要はない。例えば、コンピュータ100に挿入されるフレキシブルディスク、いわゆるFD、CD−ROM、DVDディスク、光磁気ディスク、ICカードなどの「可搬用の物理媒体」に各プログラムを記憶させる。そして、コンピュータ100がこれらの可搬用の物理媒体から各プログラムを取得して実行するようにしてもよい。また、公衆回線、インターネット、LAN、WANなどを介してコンピュータ100に接続される他のコンピュータまたはサーバ装置などに各プログラムを記憶させておき、コンピュータ100がこれらから各プログラムを取得して実行するようにしてもよい。   Note that the generation program 170a is not necessarily stored in the HDD 170 or the ROM 160 from the beginning. For example, each program is stored in a “portable physical medium” such as a flexible disk inserted into the computer 100, so-called FD, CD-ROM, DVD disk, magneto-optical disk, or IC card. Then, the computer 100 may acquire and execute each program from these portable physical media. In addition, each program is stored in another computer or server device connected to the computer 100 via a public line, the Internet, a LAN, a WAN, etc., and the computer 100 acquires and executes each program from these. It may be.

10 プログラム生成装置
11 通信経路情報格納部
12 特定部
13 生成部
14 埋め込み部
DESCRIPTION OF SYMBOLS 10 Program production | generation apparatus 11 Communication path information storage part 12 Identification part 13 Generation part 14 Embedding part

Claims (6)

コンピュータが、
プロセスを実行するプロセッサおよびコアの位置情報と、メモリが搭載されたプロセッサの位置情報と、前記プロセスを実行するコアから前記メモリにアクセスする際に使用可能なインターフェイスの情報とを含む通信経路情報に基づいて、プロセス間で前記メモリを介してデータの送受信を実行するAPI(Application Programming Interface)に設定するパラメータを特定し、
特定したパラメータで動作するAPIのコードを生成し、
メイン処理プログラムにおいて、前記プロセス間でのデータの送受信の実行箇所に、生成したAPIのコードを埋め込む
処理を実行することを特徴とするマルチプロセッサ用プログラム生成方法。
Computer
Communication path information including position information of a processor and a core executing a process, position information of a processor on which a memory is mounted, and information on an interface usable when accessing the memory from the core executing the process On the basis of parameters to be set in an API (Application Programming Interface) that transmits and receives data between processes via the memory,
Generate API code that operates with the specified parameters,
A multiprocessor program generation method, characterized in that, in a main processing program, a process of embedding a generated API code in an execution position of data transmission / reception between the processes is executed.
前記コンピュータが、
前記プロセス間でのデータの送受信において前記プロセスがアクセスする前記メモリの情報を含む仮想通信情報と、
前記プロセスを実行するプロセッサおよびコアの位置情報を含むタスクの物理位置情報と、
前記メモリが搭載されたプロセッサの位置情報および前記メモリにアクセスする際に使用可能なインターフェイスの情報を含むメモリの物理位置情報と、
を外部から受け付け、
受け付けた前記仮想通信情報、前記タスクの物理位置情報、および前記メモリの物理位置情報に基づいて、前記通信経路情報を生成する
処理をさらに実行することを特徴とする請求項1に記載のマルチプロセッサ用プログラム生成方法。
The computer is
Virtual communication information including information of the memory accessed by the process in transmission / reception of data between the processes;
Physical location information of the task including location information of the processor and core executing the process;
Physical location information of the memory including location information of a processor in which the memory is mounted and interface information that can be used when accessing the memory;
Is accepted from the outside,
The multiprocessor according to claim 1, further comprising a process of generating the communication path information based on the received virtual communication information, the physical position information of the task, and the physical position information of the memory. Program generation method.
前記通信経路情報には、
前記プロセスが前記メモリにアクセスする際の最小のデータサイズの情報が含まれ、
前記コンピュータは、前記特定する処理において、
前記最小のデータサイズが、予め定められた値以上の場合に、前記プロセスを実行するコアから前記メモリにアクセスする際に使用可能なインターフェイスの情報を、データ転送専用のハードウェアを用いたインターフェイスに変更することを特徴とする請求項1または2に記載のマルチプロセッサ用プログラム生成方法。
The communication path information includes
Contains information on the minimum data size when the process accesses the memory;
In the process of specifying the computer,
When the minimum data size is equal to or greater than a predetermined value, interface information that can be used when accessing the memory from the core executing the process is transferred to an interface using hardware dedicated to data transfer. The multiprocessor program generation method according to claim 1, wherein the multiprocessor program generation method is changed.
前記データ転送専用のハードウェアを用いたインターフェイスは、DMA(Direct Memory Access)であることを特徴とする請求項3に記載のマルチプロセッサ用プログラム生成方法。   4. The multiprocessor program generation method according to claim 3, wherein the interface using hardware dedicated to data transfer is DMA (Direct Memory Access). 第1のコアと第2のコアとを有する第1のプロセッサと、
第3のコアを有する第2のプロセッサと、
第1のプロセスから第2のプロセスへデータを送信するデータ送信部と、
前記第1のプロセスから前記第2のプロセスへ送信されたデータを受信するデータ受信部と
を有し、
前記第1のプロセスは、前記第1のコアで実行され、
前記第2のプロセスは、前記第1のコア、前記第2のコア、または前記第3のコアの中で、予め定められたコアで実行され、
前記データ送信部は、
前記第1のプロセスから前記第2のプロセスへのデータ送信において予め定められたインターフェイスを用いてデータを送信し、
前記データ受信部は、
前記第1のプロセスから前記第2のプロセスへ送信されたデータの受信において予め定められたインターフェイスを用いてデータを受信することを特徴とするマルチプロセッサ装置。
A first processor having a first core and a second core;
A second processor having a third core;
A data transmission unit for transmitting data from the first process to the second process;
A data receiving unit for receiving data transmitted from the first process to the second process;
The first process is executed in the first core;
The second process is executed on a predetermined core among the first core, the second core, or the third core;
The data transmitter is
Transmitting data using a predetermined interface in data transmission from the first process to the second process;
The data receiver is
A multiprocessor apparatus for receiving data using a predetermined interface in receiving data transmitted from the first process to the second process.
第1のコアと第2のコアとを有する第1のプロセッサと、
第3のコアを有する第2のプロセッサと
を有するコンピュータに、
第1のプロセスを、前記第1のコアで実行し、
第2のプロセスを、前記第1のコア、前記第2のコア、または前記第3のコアの中で、予め定められたコアで実行し、
前記第1のプロセスから前記第2のプロセスへのデータを、前記第1のプロセスから前記第2のプロセスへのデータ送信において予め定められたインターフェイスを用いて送信し、
前記第1のプロセスから前記第2のプロセスへ送信されたデータを、前記第1のプロセスから前記第2のプロセスへ送信されたデータの受信において予め定められたインターフェイスを用いてデータを受信する
処理を実行させることを特徴とするマルチプロセッサ用ファームウェア。
A first processor having a first core and a second core;
A computer having a second processor having a third core;
Executing a first process on the first core;
Executing a second process on a predetermined core of the first core, the second core, or the third core;
Transmitting data from the first process to the second process using a predetermined interface in transmitting data from the first process to the second process;
Processing for receiving data transmitted from the first process to the second process by using a predetermined interface in receiving data transmitted from the first process to the second process Firmware for multiprocessors, characterized in that
JP2013268026A 2013-12-25 2013-12-25 Program generation method for multiprocessor Active JP6217386B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2013268026A JP6217386B2 (en) 2013-12-25 2013-12-25 Program generation method for multiprocessor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013268026A JP6217386B2 (en) 2013-12-25 2013-12-25 Program generation method for multiprocessor

Publications (2)

Publication Number Publication Date
JP2015125503A true JP2015125503A (en) 2015-07-06
JP6217386B2 JP6217386B2 (en) 2017-10-25

Family

ID=53536188

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013268026A Active JP6217386B2 (en) 2013-12-25 2013-12-25 Program generation method for multiprocessor

Country Status (1)

Country Link
JP (1) JP6217386B2 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111566616A (en) * 2017-11-03 2020-08-21 相干逻辑公司 Programming flow of multiprocessor system

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011014137A (en) * 2009-06-30 2011-01-20 Intel Corp Automatic conversion of mpi source code program into mpi thread-based program
WO2011045919A1 (en) * 2009-10-15 2011-04-21 日本電気株式会社 Distributed system, communication means selecting method and communication means selecting program
JP2012520518A (en) * 2009-03-12 2012-09-06 ポリコア・ソフトウェア・インコーポレイテッド Apparatus and related method for generating a multi-core communication topology

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012520518A (en) * 2009-03-12 2012-09-06 ポリコア・ソフトウェア・インコーポレイテッド Apparatus and related method for generating a multi-core communication topology
JP2011014137A (en) * 2009-06-30 2011-01-20 Intel Corp Automatic conversion of mpi source code program into mpi thread-based program
WO2011045919A1 (en) * 2009-10-15 2011-04-21 日本電気株式会社 Distributed system, communication means selecting method and communication means selecting program

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111566616A (en) * 2017-11-03 2020-08-21 相干逻辑公司 Programming flow of multiprocessor system
JP2021501949A (en) * 2017-11-03 2021-01-21 コーヒレント・ロジックス・インコーポレーテッド Programming flow for multiprocessor systems
US11755382B2 (en) 2017-11-03 2023-09-12 Coherent Logix, Incorporated Programming flow for multi-processor system
CN111566616B (en) * 2017-11-03 2023-12-12 相干逻辑公司 Programming flow for multiprocessor systems

Also Published As

Publication number Publication date
JP6217386B2 (en) 2017-10-25

Similar Documents

Publication Publication Date Title
TWI522792B (en) Apparatus for generating a request, method for memory requesting, and computing system
JP5939305B2 (en) Information processing apparatus, parallel computer system, and information processing apparatus control method
KR102300451B1 (en) A generic verification approach for protobuf based projects
US11748535B2 (en) System and method to generate a network-on-chip (NoC) description using incremental topology synthesis
KR20190058483A (en) GPU remote communication using triggered action
KR102519580B1 (en) Technologies for fast synchronization barriers for many-core processing
WO2017084313A1 (en) File downloading method and apparatus, and electronic device
US10102159B2 (en) Method of achieving low write latency in a data storage system
CN111158756B (en) Method and apparatus for processing information
US20160117154A1 (en) Automated software include graph and build environment analysis and optimization in compiled language
US9286125B2 (en) Processing engine implementing job arbitration with ordering status
CN112905472A (en) Kernel debugging system and method
CN103455371A (en) Mechanism for optimized intra-die inter-nodelet messaging communication
US9606923B2 (en) Information processing device with shared memory, memory order guarantee method using counters fence instructions in relation to cache-oriented requests, and recording medium storing program
CN107003944B (en) Pointer tracking across distributed memory
CN110825435A (en) Method and apparatus for processing data
US20200371827A1 (en) Method, Apparatus, Device and Medium for Processing Data
JP6217386B2 (en) Program generation method for multiprocessor
KR101332839B1 (en) Host node and memory management method for cluster system based on parallel computing framework
TWI650703B (en) Asynchronous copying of data within memory
JP2007257560A (en) Tracing method of program executed on system with a plurality of processors, and system with a plurality of processors
US10958597B2 (en) General purpose ring buffer handling in a network controller
US20120017070A1 (en) Compile system, compile method, and storage medium storing compile program
JP2007048019A (en) Emulation method, emulator, computer embedded device, and program for emulator
JP6222079B2 (en) Computer system, processing method thereof, and program

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160905

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170531

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170613

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170720

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: 20170829

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170911

R150 Certificate of patent or registration of utility model

Ref document number: 6217386

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150