JP2008250838A - Software generation device, method and program - Google Patents

Software generation device, method and program Download PDF

Info

Publication number
JP2008250838A
JP2008250838A JP2007093797A JP2007093797A JP2008250838A JP 2008250838 A JP2008250838 A JP 2008250838A JP 2007093797 A JP2007093797 A JP 2007093797A JP 2007093797 A JP2007093797 A JP 2007093797A JP 2008250838 A JP2008250838 A JP 2008250838A
Authority
JP
Japan
Prior art keywords
module
information
platform
software
storage unit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2007093797A
Other languages
Japanese (ja)
Inventor
Shingo Watanabe
伸吾 渡辺
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.)
KDDI Corp
Original Assignee
KDDI Corp
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 KDDI Corp filed Critical KDDI Corp
Priority to JP2007093797A priority Critical patent/JP2008250838A/en
Publication of JP2008250838A publication Critical patent/JP2008250838A/en
Pending legal-status Critical Current

Links

Images

Landscapes

  • Stored Programmes (AREA)

Abstract

<P>PROBLEM TO BE SOLVED: To provide a software generation device in which porting of software is easy even on a platform with different architecture. <P>SOLUTION: A software program is composed of three kinds of components: a module which describes a process not depending on the platform by a source code [operation module], information, such as the type of the module, input/output information, process time constraint conditions [module auxiliary information], and the time constraint information of a connection configuration or the whole of the module in the software [whole configuration information]. This software generation device generates the source code suitable to the platform on which the software is executed based on the software program composed of the three kinds of components and profile information (processing time or the number of process cycles in each operation module, the access information on a memory, etc.). <P>COPYRIGHT: (C)2009,JPO&INPIT

Description

本発明は、移植性の高いソフトウェア生成装置の技術に関し、特に、アーキテクチャの異なるプラットフォームへのソフトウェアの移植を容易にするソフトウェア生成装置の技術に関する。   The present invention relates to a highly portable software generation device technology, and more particularly to a software generation device technology that facilitates the porting of software to platforms of different architectures.

従来、ソフトウェアの再利用を目的とし、モジュールとその内部のパラメータとを組み合わせてソフトウェアのソースコードを生成するソフトウェア生成装置が知られている。また、オペレータが入力した情報を元に、モジュールを検索し、検索したモジュールを組み立てることによりソフトウェアを生成するソフトウェア生成装置も知られている。このような、従来技術として、例えば、特許文献1が知られている。   2. Description of the Related Art Conventionally, a software generation device that generates a software source code by combining a module and an internal parameter for the purpose of software reuse is known. There is also known a software generation device that searches for a module based on information input by an operator and generates software by assembling the searched module. As such a prior art, for example, Patent Document 1 is known.

この特許文献1によるソフトウェア生成装置は、プログラム仕様書とソースプログラム(ソースコードと同義)との間の整合性を保つこと、および、再利用が可能なプログラムの蓄積をすることを目的としている。
そして、この特許文献1によるソフトウェア生成装置を用いることで、ソフトウェア資産をモジュールという形で蓄え、蓄えたモジュールを再利用することで、効率的にソフトウェアを生成することが可能である。
特開平8−328841号公報
The software generation device according to Patent Document 1 is intended to maintain consistency between a program specification and a source program (synonymous with source code), and to accumulate a reusable program.
By using the software generation device according to Patent Document 1, software assets can be stored in the form of modules, and software can be generated efficiently by reusing the stored modules.
Japanese Patent Laid-Open No. 8-328841

しかしながら、特許文献1に示すソフトウェア生成装置にあっては、ソフトウェアが動作する環境であるプロセッサ種別やメモリ構成などのアーキテクチャが異なるプラットフォームへの移植に対する考慮がなされていない。そのため、上記モジュールとその内部のパラメータとを組み合わせてソフトウェアを生成したとしても、一部のモジュールはそのまま動作することもあるが、生成したソフトウェアは、アーキテクチャが異なるプラットフォームにおいては、一般的には動作不能であるという問題がある。
このように、特許文献1に示すソフトウェア生成装置にあっては、アーキテクチャの異なるプラットフォームにおいて、ソフトウェアの移植が出来ないという問題がある。
However, in the software generation device shown in Patent Document 1, no consideration is given to porting to platforms with different architectures such as processor type and memory configuration, which are environments in which software operates. Therefore, even if software is generated by combining the above modules and their internal parameters, some modules may operate as they are, but the generated software generally operates on platforms with different architectures. There is a problem that it is impossible.
As described above, the software generation apparatus disclosed in Patent Document 1 has a problem that software cannot be ported on platforms having different architectures.

また、特許文献1に示すソフトウェア生成装置にあっては、処理時間に関する考慮がなされていないため、予め定められた実時間内での処理を必要とするソフトウェアの生成には向かないという問題がある。特に、無線の信号処理や映像の信号処理などの、リアルタイムに処理を実行する必要のあるソフトウェアを生成することが出来ない、という問題がある。   In addition, the software generation apparatus disclosed in Patent Document 1 has a problem that it is not suitable for generating software that requires processing within a predetermined real time because no consideration is given to processing time. . In particular, there is a problem that it is not possible to generate software that needs to execute processing in real time, such as wireless signal processing and video signal processing.

本発明は、このような事情に鑑みてなされたもので、その目的は、アーキテクチャの異なるプラットフォームにおいても、ソフトウェアの移植が容易であるソフトウェア生成装置を提供することにある。
また、本発明の目的は、リアルタイムでの処理を必要とするソフトウェアの生成を可能とするソフトウェア生成装置を提供することにある。
The present invention has been made in view of such circumstances, and an object of the present invention is to provide a software generation apparatus in which software can be easily ported even on platforms having different architectures.
It is another object of the present invention to provide a software generation apparatus that can generate software that requires real-time processing.

この発明は上述した課題を解決するためになされたもので、請求項1に記載の発明は、プラットフォームが備えるメモリの構成を示すメモリ構成情報が記憶されているプラットフォーム構成情報記憶部と、前記プラットフォームに依存しない形式で記述された演算処理のソースコードである演算モジュールが記憶されている演算モジュール記憶部と、前記演算モジュールが用いるメモリの情報が記憶されているモジュール付帯情報記憶部と、前記演算モジュールの接続関係の情報である演算モジュール接続情報が記憶されている全体構成情報記憶部と、前記全体構成情報記憶部から演算モジュール接続情報を読み出し、前記読み出した演算モジュール接続情報に基づいて前記演算モジュールの実行順序を決定する演算モジュール順序決定部と、前記モジュール付帯情報記憶部から読み出した演算モジュールが用いるメモリの情報と、前記プラットフォーム構成情報記憶部から読み出したメモリ構成情報とに基づいて、前記メモリ構成情報で示されるメモリを、前記演算モジュール順序決定部が決定した演算モジュールに割当ててソースコードを生成し出力するソフトウェア生成部と、を有することを特徴とするソフトウェア生成装置である。   The present invention has been made to solve the above-described problems. The invention according to claim 1 is a platform configuration information storage unit storing memory configuration information indicating a configuration of a memory included in the platform, and the platform. An arithmetic module storage unit that stores an arithmetic module that is a source code of arithmetic processing described in a format that does not depend on the module, an auxiliary information storage unit that stores memory information used by the arithmetic module, and the arithmetic unit Computation module connection information, which is module connection information, is stored in the entire configuration information storage unit, and the computation module connection information is read out from the overall configuration information storage unit, and the computation is performed based on the readout computation module connection information. An arithmetic module order determination unit for determining the module execution order; Based on the information on the memory used by the arithmetic module read from the module supplementary information storage unit and the memory configuration information read from the platform configuration information storage unit, the memory indicated by the memory configuration information is determined as the arithmetic module order. And a software generation unit that generates and outputs a source code assigned to the operation module determined by the unit.

また、この発明は、前記メモリ構成情報が、前記プラットフォームが備える異なるアクセス速度を有するメモリの構成情報を含み、前記演算モジュールが用いる変数と、該変数の優先順位とが関連付けて変数優先順位情報として前記モジュール付帯情報記憶部に記憶されており、前記ソフトウェア生成部が、前記モジュール付帯情報記憶部から読み出した変数優先順位情報に基づいて、前記演算モジュール順序決定部が決定した演算モジュールで用いられる変数に、前記異なるアクセス速度を有するメモリを割当てて前記ソースコードを生成し出力する、ことを特徴とするソフトウェア生成装置である。   Further, according to the present invention, the memory configuration information includes configuration information of a memory having different access speeds provided in the platform, and a variable used by the arithmetic module is associated with a priority of the variable as variable priority information. Variables stored in the module supplementary information storage unit and used by the software generation unit in the computation module determined by the computation module order determination unit based on variable priority order information read from the module supplementary information storage unit And generating and outputting the source code by allocating memories having different access speeds.

また、この発明は、前記プラットフォーム構成情報記憶部に記憶されているプラットフォーム構成情報が、前記プラットフォームが実行可能な並列実行数の情報である並列実行数情報を含み、前記ソフトウェア生成装置が、前記並列実行数情報を前記プラットフォーム構成情報記憶部から読み出し、前記演算モジュール順序決定部が決定した演算モジュールの実行順序と、前記読み出した並列実行数情報とに基づいて、前記実行順序を決定した演算モジュールの並列処理を決定する並列処理割当て部、を有し、前記ソフトウェア生成部が、並列実行単位に基づくソースコードを生成し出力する、ことを特徴とするソフトウェア生成装置である。   In the present invention, the platform configuration information stored in the platform configuration information storage unit includes parallel execution number information that is information on the number of parallel executions that can be executed by the platform, and the software generation device includes the parallel execution number information. Execution number information is read from the platform configuration information storage unit, and the execution order of the operation modules determined by the operation module order determination unit is determined based on the execution order of the operation modules determined by the operation module order determination unit and the read parallel execution number information. A software generation apparatus comprising: a parallel processing allocation unit that determines parallel processing, wherein the software generation unit generates and outputs a source code based on a parallel execution unit.

また、この発明は、前記全体構成情報記憶部に記憶されている全体構成情報が、前記演算モジュール接続情報で構成されるモジュールの複数または全体が処理を実行する時間の制約条件であるソフトウェア処理時間制約条件を含み、前記ソフトウェア生成装置が、前記ソフトウェア生成部が生成し出力したモジュールの複数または全体に該当するソースコードの実行時間を測定し、該測定した実行時間をプロファイル情報として生成するプロファイラ部と、前記ソフトウェア処理時間制約条件を前記全体構成情報記憶部から読み出し、前記プロファイラ部が測定した実行時間が、前記読み出したソフトウェア処理時間制約条件を満たすか否かを検出する検出部と、を有することを特徴とするソフトウェア生成装置である。   Further, the present invention provides the software processing time in which the entire configuration information stored in the entire configuration information storage unit is a constraint on the time for which a plurality or all of the modules configured by the arithmetic module connection information execute processing. A profiler unit that includes constraint conditions, the software generation device measures the execution time of source code corresponding to a plurality or all of the modules generated and output by the software generation unit, and generates the measured execution time as profile information And a detection unit that reads out the software processing time constraint condition from the overall configuration information storage unit and detects whether or not the execution time measured by the profiler unit satisfies the read software processing time constraint condition This is a software generation device characterized by the above.

また、この発明は、前記検出部が、前記検出した結果が、前記実行時間が前記ソフトウェア処理時間制約条件を満たさない場合には、前記生成したプロファイル情報に基づいて、前記演算モジュール順序決定部と前記ソフトウェア生成部との処理を繰り返す、ことを特徴とするソフトウェア生成装置である。   Further, according to the present invention, when the detection unit detects that the execution time does not satisfy the software processing time constraint condition, the detection unit and the calculation module order determination unit are configured based on the generated profile information. A software generation device characterized by repeating the process with the software generation unit.

また、この発明は、前記プラットフォーム構成情報記憶部が、前記プラットフォームが有するアクセラレータを特定する情報であるアクセラレータ情報、または、前記プラットフォームが有するライブラリを特定する情報であるライブラリ情報を含み、前記演算モジュール順序決定部が、前記アクセラレータ情報または前記ライブラリ情報を前記プラットフォーム構成情報記憶部から読み出し、前記読み出したアクセラレータ情報で特定されるアクセラレータの処理またはライブラリ情報で特定される処理に該当する1つまたは複数の演算モジュールを、前記読み出した演算モジュール接続情報の中から、置換演算モジュールとして検出し、前記ソフトウェア生成部が、前記演算モジュール順序決定部が検出した置換演算モジュールに該当するソースコードとして、前記アクセラレータ情報で特定されるアクセラレータを用いるソースコード、または、前記ライブラリ情報で特定されるライブラリを用いるソースコード、を生成する、ことを特徴とするソフトウェア生成装置である。   In the invention, the platform configuration information storage unit includes accelerator information that is information for specifying an accelerator included in the platform or library information that is information for specifying a library included in the platform. The determination unit reads the accelerator information or the library information from the platform configuration information storage unit, and one or a plurality of operations corresponding to the accelerator process specified by the read accelerator information or the process specified by the library information The module is detected as a replacement calculation module from the read calculation module connection information, and the software generation unit corresponds to the replacement calculation module detected by the calculation module order determination unit. As source code, the source code used accelerators specified by the accelerator information, or to generate a source code, using the library specified by the library information, it is a software generator apparatus according to claim.

また、この発明は、前記ソフトウェア生成装置が、前記ソフトウェア生成部が生成し出力したソースコードを、コンパイルしリンクするコンパイラ・リンカ部、を有することを特徴とする請求項1から請求項6に記載のソフトウェア生成装置である。
請求項8に記載の発明は、前記ソフトウェア生成部が、前記メモリ構成情報で示されるメモリを、前記演算モジュール順序決定部が決定した演算モジュールに割当ててソースコードを生成し出力する時に、前記モジュールの実行開始から実行終了までに要するサイクル数を取得してプロファイル機能となるソースコードをプロファイル機能ソースコードとしてモジュール毎に生成し、前記生成したプロファイル機能ソースコードを、前記モジュールのソースコードに含めて前記ソースコードを生成し出力する、ことを特徴とするソフトウェア生成装置である。
Further, according to the present invention, the software generation device includes a compiler / linker unit that compiles and links the source code generated and output by the software generation unit. This is a software generation apparatus.
According to an eighth aspect of the present invention, when the software generation unit allocates the memory indicated by the memory configuration information to the operation module determined by the operation module order determination unit and generates and outputs a source code, the module The number of cycles required from the start of execution to the end of execution is obtained and the source code for the profile function is generated for each module as the profile function source code, and the generated profile function source code is included in the source code of the module A software generation device generating and outputting the source code.

また、この発明は、プラットフォームが備えるメモリの構成を示すメモリ構成情報が記憶されているプラットフォーム構成情報記憶部と、前記プラットフォームに依存しない形式で記述された演算処理のソースコードである演算モジュールが記憶されている演算モジュール記憶部と、前記演算モジュールが用いるメモリの情報が記憶されているモジュール付帯情報記憶部と、前記演算モジュールの接続関係の情報である演算モジュール接続情報が記憶されている全体構成情報記憶部と、を有するソフトウェア生成装置で用いられるソフトウェア生成方法であって、前記ソフトウェア生成装置が、前記全体構成情報記憶部から演算モジュール接続情報を読み出し、前記読み出した演算モジュール接続情報に基づいて前記演算モジュールの実行順序を決定し、前記モジュール付帯情報記憶部から読み出した演算モジュールが用いるメモリの情報と、前記プラットフォーム構成情報記憶部から読み出したメモリ構成情報とに基づいて、前記メモリ構成情報で示されるメモリを、前記決定した演算モジュールに割当ててソースコードを生成し出力する、ことを特徴とするソフトウェア生成方法である。   In addition, the present invention stores a platform configuration information storage unit that stores memory configuration information indicating the configuration of a memory included in the platform, and an arithmetic module that is a source code of arithmetic processing described in a format independent of the platform. An arithmetic module storage unit, a module-accompanying information storage unit that stores information of a memory used by the arithmetic module, and an arithmetic module connection information that is information on connection relations of the arithmetic modules A software generation method used in a software generation device having an information storage unit, wherein the software generation device reads calculation module connection information from the overall configuration information storage unit, and based on the read calculation module connection information Execution order of the arithmetic modules And the memory indicated by the memory configuration information based on the memory configuration information used by the arithmetic module read from the module supplementary information storage unit and the memory configuration information read from the platform configuration information storage unit, A software generation method characterized in that a source code is generated and output by being assigned to a determined operation module.

また、この発明は、プラットフォームが備えるメモリの構成を示すメモリ構成情報が記憶されているプラットフォーム構成情報記憶部と、前記プラットフォームに依存しない形式で記述された演算処理のソースコードである演算モジュールが記憶されている演算モジュール記憶部と、前記演算モジュールが用いるメモリの情報が記憶されているモジュール付帯情報記憶部と、前記演算モジュールの接続関係の情報である演算モジュール接続情報が記憶されている全体構成情報記憶部と、を有するソフトウェア生成装置を構成するコンピュータに、前記全体構成情報記憶部から演算モジュール接続情報を読み出し、前記読み出した演算モジュール接続情報に基づいて前記演算モジュールの実行順序を決定する演算モジュール順序決定手順と、前記モジュール付帯情報記憶部から読み出した演算モジュールが用いるメモリの情報と、前記プラットフォーム構成情報記憶部から読み出したメモリ構成情報とに基づいて、前記メモリ構成情報で示されるメモリを、前記演算モジュール順序決定手順が決定した演算モジュールに割当ててソースコードを生成し出力するソフトウェア生成手順と、を実行させるためのソフトウェア生成プログラムである。   In addition, the present invention stores a platform configuration information storage unit that stores memory configuration information indicating the configuration of a memory included in the platform, and an arithmetic module that is a source code of arithmetic processing described in a format independent of the platform. An arithmetic module storage unit, a module-accompanying information storage unit that stores information of a memory used by the arithmetic module, and an arithmetic module connection information that is information on connection relations of the arithmetic modules An operation for reading calculation module connection information from the overall configuration information storage unit and determining an execution order of the calculation modules based on the read calculation module connection information to a computer constituting a software generation device having an information storage unit Module order determination procedure and before Based on the information on the memory used by the arithmetic module read from the module supplementary information storage unit and the memory configuration information read from the platform configuration information storage unit, the memory indicated by the memory configuration information is determined as the arithmetic module order determination procedure. Is a software generation program for executing a software generation procedure for generating and outputting a source code by assigning to the determined operation module.

この発明によれば、アーキテクチャの異なるプラットフォームにおいても、ソフトウェアの移植が容易となる効果を奏する。
また、本発明によれば、リアルタイムでの処理を必要とするソフトウェアの生成が可能となるという効果を奏する。
According to the present invention, there is an effect that software can be easily ported even on platforms having different architectures.
In addition, according to the present invention, it is possible to generate software that requires real-time processing.

<概要>
最初に、本実施形態の概要を説明する。
まず、ソフトウェアプログラムを、(1)プラットフォームに依存しない処理をソースコードで記述したモジュール[演算モジュール]、(2)モジュールの種別や入出力情報、処理時間制約条件などの情報[モジュール付帯情報]、(3)ソフトウェア内のモジュールの接続構成や全体の時間制約情報[全体構成情報]の三種類の構成要素により構成する。
<Overview>
First, an outline of the present embodiment will be described.
First, the software program is: (1) a module [processing module] describing processing independent of the platform in the source code, (2) information such as module type, input / output information, processing time constraint conditions [module auxiliary information], (3) Consists of three types of components: module connection configuration in software and overall time constraint information [overall configuration information].

ソフトウェア生成装置は、この三種の構成要素から構成されるソフトウェアプログラムと、プロファイル情報(各演算モジュールでの処理時間あるいは処理サイクル数やメモリのアクセス情報など)を元に、ソフトウェアを実行するプラットフォームに適したソースコード(以降、プラットフォーム依存ソースコード)を生成する。   The software generation device is suitable for platforms that execute software based on software programs composed of these three types of components and profile information (processing time or number of processing cycles in each arithmetic module, memory access information, etc.) Generated source code (hereinafter platform-dependent source code).

このとき、ソフトウェア生成装置は、プラットフォームに適切なソースコード(プラットフォーム依存ソースコード)を生成するために、プラットフォームの構成情報(コア数やスレッド数やメモリ構成などのハードウェアの構成)を利用する。
また、ソフトウェア生成装置は、後述するプロファイラからプロファイル情報を取得し、取得したプロファイル情報に基づいて、プラットフォーム依存ソースコードを生成する。
At this time, the software generation apparatus uses platform configuration information (hardware configuration such as the number of cores, the number of threads, and the memory configuration) in order to generate source code (platform-dependent source code) appropriate for the platform.
The software generation device acquires profile information from a profiler described later, and generates platform-dependent source code based on the acquired profile information.

コンパイラやリンカ(以降、コンパイラ・リンカという)は、プラットフォームに対応する通常の開発ツールを利用し、プラットフォーム依存ソースコードをコンパイルおよびリンクし、実行ファイルを生成する。このとき、コンパイラ・リンカは、通常のソフトウェア生成時と同様に、ライブラリを利用することも可能である。   A compiler or linker (hereinafter referred to as a compiler / linker) compiles and links platform-dependent source code using an ordinary development tool corresponding to the platform, and generates an executable file. At this time, the compiler / linker can also use the library in the same way as in normal software generation.

プロファイラは、実行ファイルを実行する際に、処理サイクル数(処理時間)やメモリのアクセス状況などのプロファイル情報を取得する。   The profiler acquires profile information such as the number of processing cycles (processing time) and memory access status when executing an executable file.

<第1の実施形態>
以下、図面を参照して、本発明の実施の形態について説明する。図1は、この発明の一実施形態によるソフトウェア生成装置100の構成を示す概略ブロック図である。
ソフトウェア生成装置100は、ソフトウェアプログラム記憶部10と、ソフトウェア生成部1と、プラットフォーム構成情報記憶部2と、プラットフォーム依存ソースコード記憶部3と、ライブラリ記憶部4と、コンパイラ・リンカ部5と、実行ファイル記憶部6と、プロファイラ部7と、を有する。
また、ソフトウェアプログラム記憶部10は、演算モジュール記憶部11と、モジュール付帯情報記憶部12と、全体構成情報記憶部13と、を有する。
<First Embodiment>
Embodiments of the present invention will be described below with reference to the drawings. FIG. 1 is a schematic block diagram showing a configuration of a software generation apparatus 100 according to an embodiment of the present invention.
The software generation device 100 includes a software program storage unit 10, a software generation unit 1, a platform configuration information storage unit 2, a platform-dependent source code storage unit 3, a library storage unit 4, a compiler / linker unit 5, an execution It has a file storage unit 6 and a profiler unit 7.
The software program storage unit 10 includes an arithmetic module storage unit 11, a module incidental information storage unit 12, and an overall configuration information storage unit 13.

ソフトウェア実行プラットフォーム8は、ソフトウェア生成装置100が生成するソフトウェアを実行させる対象となる装置である。ソフトウェア実行プラットフォーム8は、例えば、PC(パーソナルコンピュータ)や携帯電話などの機器である。なお、このソフトウェア実行プラットフォーム8は、ソフトウェア生成装置100であってもよい。   The software execution platform 8 is a device that is a target for executing software generated by the software generation device 100. The software execution platform 8 is, for example, a device such as a PC (personal computer) or a mobile phone. The software execution platform 8 may be the software generation device 100.

演算モジュール記憶部11には、複数の演算モジュールソースコード(以降、モジュールと称して説明する)が記憶されている。
このモジュールは、プラットフォームに依存しない形で記述されている演算処理のコアとなるソースコードである。また、あるまとまった単位の処理で、一つのモジュールが構成されている。
例えば、モジュールの処理は、FFT(Fast Fourier Transform)処理やターボ符号処理などである。
The arithmetic module storage unit 11 stores a plurality of arithmetic module source codes (hereinafter referred to as modules).
This module is source code that is the core of arithmetic processing written in a platform-independent manner. In addition, one module is constituted by a certain unit of processing.
For example, module processing includes FFT (Fast Fourier Transform) processing, turbo code processing, and the like.

モジュール付帯情報記憶部12には、複数のモジュール付帯情報が記憶されている。このモジュール付帯情報は、モジュールに1対1に対応付けられている。つまり、モジュールとモジュール付帯情報とは、予め関連付けられている。このモジュール付帯情報には、関連付けられているモジュールについて、以下のような情報が含まれる。   The module incidental information storage unit 12 stores a plurality of module incidental information. This module-accompanying information is associated with each module on a one-to-one basis. That is, the module and the module supplementary information are associated in advance. The module-accompanying information includes the following information about the associated module.

このモジュール付帯情報には、モジュールの処理の種別や名称や概要の情報であるモジュール処理情報、モジュールの内部の情報であるモジュール内部情報、他のモジュールとの接続に必要な情報であるモジュールインタフェース情報、が含まれる。   This module-accompanying information includes module processing information that is module processing type, name, and summary information, module internal information that is internal information of the module, and module interface information that is information necessary for connection with other modules. , Is included.

また、このモジュール付帯情報には、モジュールが満たさなければいけない制約条件の情報であるモジュール制約条件、モジュール内部で用いられる変数と高速なメモリへの割当て優先順位の情報である変数優先順位情報、などが含まれる。   In addition, this module-accompanying information includes module constraint conditions that are information on constraint conditions that the module must satisfy, variable priority information that is information on variables used in the module and allocation priority to high-speed memory, etc. Is included.

例えば、モジュール内部情報として、モジュールで行なう処理の種別の情報がある。また、例えば、モジュールインタフェース情報として、モジュールの入出力におけるデータの型やデータのサイズの情報がある。
また、例えば、モジュール制約条件として、モジュールの処理時間の制約条件の情報がある。また、例えば、変数優先順位情報として、モジュール内部で用いられる変数とその変数の高速なメモリへの割当て優先順位とが関連付けられた情報がある。
For example, the module internal information includes information on the type of processing performed by the module. Further, for example, module interface information includes data type and data size information in module input / output.
Further, for example, as module constraint conditions, there is information on the constraint conditions of module processing time. Further, for example, as variable priority order information, there is information in which a variable used inside a module is associated with an assignment priority order of the variable to a high-speed memory.

全体構成情報記憶部13には、全体構成情報が記憶されている。
この全体構成情報には、モジュールにより構成するソフトウェアプログラムの全体構造を示す情報であるモジュール接続情報、モジュールにより構成するソフトウェアプログラムの制約条件であるソフトウェア制約条件、などが含まれる。
The overall configuration information storage unit 13 stores overall configuration information.
The entire configuration information includes module connection information that is information indicating the entire structure of the software program configured by the module, software constraint conditions that are constraint conditions of the software program configured by the module, and the like.

例えば、モジュール接続情報として、モジュールの接続関係を示す情報がある。また、例えば、ソフトウェア制約条件として、複数モジュールあるいは全体で満たさなければいけない処理時間の制約条件であるソフトウェア処理時間制約条件がある。   For example, the module connection information includes information indicating module connection relations. For example, as a software constraint condition, there is a software processing time constraint condition that is a constraint condition of processing time that must be satisfied by a plurality of modules or as a whole.

プラットフォーム構成情報記憶部2には、プラットフォーム構成情報が記憶されている。
このプラットフォーム構成情報には、プラットフォームが備えるコア数の情報であるコア数情報、プラットフォームが備えるコア毎の同時に実行可能なスレッド数の情報であるスレッド数情報、プラットフォームが備える異なるアクセス速度を有するメモリの情報であるメモリ構成情報が含まれる。
The platform configuration information storage unit 2 stores platform configuration information.
This platform configuration information includes core number information that is information on the number of cores provided in the platform, thread number information that is information on the number of threads that can be executed simultaneously for each core provided in the platform, and information on the memories having different access speeds provided in the platform. Memory configuration information that is information is included.

また、このプラットフォーム構成情報には、プラットフォームが備えるアクセラレータを示す情報であるアクセラレータ情報、プラットフォームが備えるライブラリを示す情報であるライブラリ情報、プラットフォームが備えるダイレクトメモリアクセスをするためのハードウェア構成およびその設定の情報であるDMA(Direct Memory Access)情報、などが含まれる。   In addition, the platform configuration information includes accelerator information that is information indicating an accelerator included in the platform, library information that is information indicating a library included in the platform, hardware configuration for direct memory access included in the platform, and settings thereof. Information such as DMA (Direct Memory Access) information is included.

また、アクセラレータ情報には、アクセラレータの処理の名称や、そのアクセラレータを用いる場合の、設定情報やソースコードなどの情報も含まれている。
また、ライブラリ情報には、ライブラリの処理の名称や、そのライブラリを用いる場合の、設定情報やソースコードなどの情報も含まれている。
Further, the accelerator information includes information such as the name of the accelerator process and setting information and source code when the accelerator is used.
Further, the library information includes information such as the name of the library processing and setting information and source code when the library is used.

なお、メモリ構成情報には、異なるアクセス速度を有するメモリの速度の情報とメモリの容量とが、関連付けて記憶されている。
なお、このコア数情報とスレッド数情報とをまとめて、コア数スレッド数情報である並列実行数情報と称する。
In the memory configuration information, information on the speeds of memories having different access speeds and the memory capacity are stored in association with each other.
The core number information and thread number information are collectively referred to as parallel execution number information that is core number thread number information.

ソフトウェア生成部1(演算モジュール順序決定部)は、全体構成情報記憶部13から演算モジュール接続情報を読み出し、読み出した演算モジュール接続情報に基づいて演算モジュールの実行順序を決定する。
また、ソフトウェア生成部1は、モジュール付帯情報記憶部12から読み出した変数優先順位情報などによる演算モジュールが用いるメモリの情報と、プラットフォーム構成情報記憶部2から読み出したメモリ構成情報とに基づいて、メモリ構成情報で示されるプラットフォームが備えるメモリを演算モジュールに割当てて、プラットフォーム依存ソースコードを生成する。
また、ソフトウェア生成部1は、生成したプラットフォーム依存ソースコードを、プラットフォーム依存ソースコード記憶部3に出力する。
The software generation unit 1 (arithmetic module order determination unit) reads the arithmetic module connection information from the overall configuration information storage unit 13, and determines the execution order of the arithmetic modules based on the read arithmetic module connection information.
In addition, the software generation unit 1 performs memory based on the memory information used by the arithmetic module based on the variable priority information read from the module-accompanying information storage unit 12 and the memory configuration information read from the platform configuration information storage unit 2. A platform-dependent source code is generated by allocating a memory included in the platform indicated by the configuration information to the operation module.
In addition, the software generation unit 1 outputs the generated platform-dependent source code to the platform-dependent source code storage unit 3.

また、ソフトウェア生成部1は、モジュール付帯情報記憶部12から読み出した変数優先順位情報に基づいて、順序を決定した演算モジュールで用いられる変数に、異なるアクセス速度を有するメモリを割当ててプラットフォーム依存ソースコードを生成する。   In addition, the software generation unit 1 allocates memory having different access speeds to variables used in the operation modules for which the order has been determined based on the variable priority information read from the module supplementary information storage unit 12 to provide platform-dependent source code. Is generated.

また、ソフトウェア生成部1(並列処理割当て部)は、並列実行数情報をプラットフォーム構成情報記憶部2から読み出し、決定した演算モジュールの実行順序と、読み出した並列実行数情報とに基づいて、実行順序を決定した演算モジュールの並列処理を決定する。
また、ソフトウェア生成部1は、並列処理を決定した演算モジュールに基づいて、すなわち、並列実行単位で、プラットフォーム依存ソースコードを生成し出力する。この並列実行単位とは、例えば、後述する図5(a)から図5(d)に示すように、コア毎のスレッドで並行に実行される単位のことである。
Further, the software generation unit 1 (parallel processing allocation unit) reads the parallel execution number information from the platform configuration information storage unit 2, and executes the execution order based on the determined execution order of the arithmetic modules and the read parallel execution number information. The parallel processing of the operation module that has determined the is determined.
Further, the software generation unit 1 generates and outputs platform-dependent source code based on the arithmetic module for which parallel processing has been determined, that is, in parallel execution units. This parallel execution unit is, for example, a unit that is executed in parallel by threads for each core, as shown in FIGS. 5A to 5D described later.

なお、ソフトウェア生成部1(並列処理割当て部(=コアスレッド割当て部))は、コア数またはスレッド数の情報であるコア数スレッド数情報(=並列実行数情報)をプラットフォーム構成情報記憶部2から読み出し、決定した演算モジュールの実行順序と、読み出したコア数スレッド数情報とに基づいて、実行順序を決定した演算モジュールを、プラットフォームが有するコアまたはスレッドに割り当てる。これにより、ソフトウェア生成部1は、実行順序を決定した演算モジュールの並列処理を決定する。   The software generation unit 1 (parallel processing allocation unit (= core thread allocation unit)) obtains the number of cores or thread number information (= parallel execution number information) from the platform configuration information storage unit 2 as information on the number of cores or the number of threads. Based on the read and determined execution order of the operation modules and the read core number thread number information, the operation modules whose execution order has been determined are assigned to the cores or threads of the platform. As a result, the software generation unit 1 determines parallel processing of the arithmetic modules that have determined the execution order.

また、ソフトウェア生成部1は、後述するように、プロファイラ部7が生成したプロファイル情報に基づいて、各コアと各スレッドでの処理量が出来るだけ均一になるように、モジュールの実行順序に従い、各モジュールにコアとスレッドとを割り当てることにより、生成するソフトウェア全体の実行速度を改善したプラットフォーム依存ソースコードを生成する。   Further, as will be described later, the software generation unit 1 performs each module according to the execution order of the modules so that the processing amount in each core and each thread is as uniform as possible based on the profile information generated by the profiler unit 7. By assigning cores and threads to modules, platform-dependent source code that improves the execution speed of the entire software to be generated is generated.

プラットフォーム依存ソースコード記憶部3には、ソフトウェア生成部1が生成し出力したプラットフォーム依存ソースコードが記憶される。
ライブラリ記憶部4には、プラットフォーム用のライブラリが記憶されている。
The platform-dependent source code storage unit 3 stores the platform-dependent source code generated and output by the software generation unit 1.
The library storage unit 4 stores a library for the platform.

コンパイラ・リンカ部5は、プラットフォーム依存ソースコード記憶部3から読み出したプラットフォーム依存ソースコードと、ライブラリ記憶部4から読み出したライブラリとを、リンクし、コンパイルすることにより、プラットフォーム用の実行ファイルを生成する。
また、コンパイラ・リンカ部5は、生成した実行ファイルを実行ファイル記憶部6に記憶させる。
実行ファイル記憶部6には、コンパイラ・リンカ部5が生成した実行ファイルが記憶される。
The compiler / linker unit 5 generates an executable file for the platform by linking and compiling the platform-dependent source code read from the platform-dependent source code storage unit 3 and the library read from the library storage unit 4. .
The compiler / linker unit 5 stores the generated executable file in the executable file storage unit 6.
The executable file generated by the compiler / linker unit 5 is stored in the executable file storage unit 6.

プロファイラ部7は、実行ファイル記憶部6に記憶されている実行ファイルを実行することにより、実行ファイルの全体(モジュール全体)、モジュール毎、または複数のモジュールについての、処理サイクル数(処理時間)やメモリのアクセス状況などの、プロファイル情報を取得する。   The profiler unit 7 executes the execution file stored in the execution file storage unit 6, so that the entire execution file (entire module), each module, or the number of processing cycles (processing time) for a plurality of modules, Get profile information such as memory access status.

一例としての、プロファイラ部7が取得したプロファイル情報を、図6に示す。図6では、モジュールM1からM11の、全体に占める各モジュールの処理量(処理時間)が割合として示されている。   FIG. 6 shows profile information acquired by the profiler unit 7 as an example. In FIG. 6, the processing amount (processing time) of each module occupying the whole of the modules M1 to M11 is shown as a ratio.

また、プロファイラ部7は、取得したプロファイル情報を、ソフトウェア生成部1に出力する。
また、ソフトウェア生成部1(検出部)は、実行ファイルの全体(モジュール全体)、モジュール毎、または複数のモジュールの処理サイクル数(処理時間)やメモリのアクセス状況が、モジュール制約条件、ソフトウェア制約条件、ソフトウェア処理時間制約条件を満たすか否かを検出する。
また、ソフトウェア生成部1(検出部)は、検出した結果が、全ての条件を満たさない場合には、再度、プラットフォーム依存ソースコードを生成する。
In addition, the profiler unit 7 outputs the acquired profile information to the software generation unit 1.
In addition, the software generation unit 1 (detection unit) is configured such that the entire execution file (entire module), the number of processing cycles (processing time) of each module or a plurality of modules, and the memory access status are module constraint conditions, software constraint conditions , It is detected whether or not a software processing time constraint condition is satisfied.
Moreover, the software generation part 1 (detection part) produces | generates a platform dependence source code again, when the detected result does not satisfy | fill all conditions.

以上説明したソフトウェア生成部1は、ソフトウェア実行プラットフォーム8用のソフトウェア、すなわち実行ファイル、を生成するが、ソフトウェアプログラム記憶部10に記憶されている情報は、ソフトウェア実行プラットフォーム8に依存しない。
これは、ソフトウェアプログラム記憶部10、つまり、演算モジュール記憶部11と、モジュール付帯情報記憶部12と、全体構成情報記憶部13とに記憶されている情報が、モジュールについての情報のみだからである。
The software generation unit 1 described above generates software for the software execution platform 8, that is, an execution file, but the information stored in the software program storage unit 10 does not depend on the software execution platform 8.
This is because the information stored in the software program storage unit 10, that is, the arithmetic module storage unit 11, the module supplementary information storage unit 12, and the overall configuration information storage unit 13 is only information about the module.

一方、プラットフォーム構成情報記憶部2とライブラリ記憶部4とには、ソフトウェア実行プラットフォーム8用のプラットフォーム構成情報とライブラリ情報とが、予め記憶されている。そのため、プラットフォーム構成情報記憶部2とライブラリ記憶部4とは、ソフトウェア実行プラットフォーム8に依存する。
また、コンパイラ・リンカ部5も、ソフトウェア実行プラットフォーム8用のコンパイラおよびリンカであり、ソフトウェア実行プラットフォーム8に依存する。
On the other hand, the platform configuration information storage unit 2 and the library storage unit 4 store platform configuration information and library information for the software execution platform 8 in advance. Therefore, the platform configuration information storage unit 2 and the library storage unit 4 depend on the software execution platform 8.
The compiler / linker 5 is also a compiler and linker for the software execution platform 8 and depends on the software execution platform 8.

ソフトウェア生成部1と、プラットフォーム依存ソースコード記憶部3と、実行ファイル記憶部6とは、機能的にはソフトウェア実行プラットフォーム8に依存しないが、それぞれの構成が対象とする情報は、ソフトウェア実行プラットフォーム8に依存する。
プロファイラ部7は、ソフトウェア実行プラットフォーム8用に生成された実行ファイルを実行することによりプロファイル情報を取得するため、ソフトウェア実行プラットフォーム8に依存する。これは、例えば、プロファイラ部7は、ソフトウェア実行プラットフォーム8の動作環境を擬似的に有しており、その擬似的な動作環境で、実行ファイルを実行して、プロファイル情報を取得するからである。
The software generation unit 1, the platform-dependent source code storage unit 3, and the execution file storage unit 6 are not functionally dependent on the software execution platform 8, but the information targeted by each configuration is the software execution platform 8. Depends on.
The profiler unit 7 depends on the software execution platform 8 to acquire profile information by executing the execution file generated for the software execution platform 8. This is because, for example, the profiler unit 7 has a pseudo operating environment of the software execution platform 8 and executes the execution file in the pseudo operating environment to acquire profile information.

以上説明したように、図1(a)で示されるソフトウェアプログラム記憶部10である演算モジュール記憶部11と、モジュール付帯情報記憶部12と、全体構成情報記憶部13とは、プラットフォーム非依存である。
また、図1(b)で示されるソフトウェア生成部1と、プラットフォーム構成情報記憶部2と、プラットフォーム依存ソースコード記憶部3と、ライブラリ記憶部4と、コンパイラ・リンカ部5と、実行ファイル記憶部6と、プロファイラ部7とは、プラットフォーム依存である。
また、図1(c)で示されるソフトウェア実行プラットフォーム8は、プラットフォームそのものである。
As described above, the arithmetic module storage unit 11, the module incidental information storage unit 12, and the overall configuration information storage unit 13 that are the software program storage unit 10 shown in FIG. 1A are platform independent. .
Also, the software generation unit 1, the platform configuration information storage unit 2, the platform-dependent source code storage unit 3, the library storage unit 4, the compiler / linker unit 5, and the execution file storage unit shown in FIG. 6 and the profiler unit 7 are platform-dependent.
The software execution platform 8 shown in FIG. 1C is the platform itself.

以上のように、ソフトウェア生成装置100には、プラットフォームに依存しない形でソフトウェアプログラム記憶部10にソフトウェアが蓄積されており、図1(b)で示されるプラットフォーム構成情報記憶部2に記憶されるプラットフォーム構成情報などのプラットフォーム依存の情報を、対象となるプラットフォームに合わせて変更することのみで、同一のソフトウェアが異なるプラットフォームに合わせた形で、プラットフォーム依存ソースコードとして生成される。
そのため、このソフトウェア生成装置100は、アーキテクチャの異なるプラットフォームにおいても、ソフトウェアの移植を容易とすることが可能となる効果を奏する。
As described above, in the software generation device 100, the software is stored in the software program storage unit 10 in a platform-independent manner, and the platform stored in the platform configuration information storage unit 2 shown in FIG. By only changing platform-dependent information such as configuration information according to the target platform, the same software is generated as platform-dependent source code in a form that matches different platforms.
Therefore, the software generation apparatus 100 has an effect that the software can be easily ported even on platforms having different architectures.

また、従来においては、ユーザは、プラットフォーム依存ソースコード記憶部3に記憶されるプラットフォーム依存ソースコードに相当するソースコードを、プラットフォーム毎に作成していた。   Conventionally, the user has created a source code corresponding to the platform-dependent source code stored in the platform-dependent source code storage unit 3 for each platform.

これに対して、ソフトウェア生成装置100を使用するユーザは、演算モジュール記憶部11と、モジュール付帯情報記憶部12と、全体構成情報記憶部13とに記憶する情報、つまり、モジュールについての情報のみを作成すればよい。   On the other hand, the user who uses the software generation apparatus 100 only stores information stored in the arithmetic module storage unit 11, the module supplementary information storage unit 12, and the overall configuration information storage unit 13, that is, information about the module. Create it.

そのため、このソフトウェア生成装置100を使用するユーザは、プラットフォームに依存しない形で、プラットフォームに対応したソフトウェアを作成することが可能となる。   Therefore, a user who uses the software generation apparatus 100 can create software corresponding to the platform in a form independent of the platform.

次に、図2を用いて、ソフトウェア生成部1の動作について説明する。まず、図2(a)のフローチャートを用いて、ソフトウェア生成部1の全体の動作を説明する。
まず、ソフトウェア生成部1が、プラットフォーム依存ソースコードを生成する(ステップS10)。
次に、コンパイラ・リンカ部5が、生成されたプラットフォーム依存ソースコードを、コンパイルおよびリンクして、実行ファイルを生成する(ステップS11)。
次に、プロファイラ部7が、生成された実行ファイルを実行し、プロファイル情報を取得する(ステップS12)。
Next, the operation of the software generation unit 1 will be described with reference to FIG. First, the overall operation of the software generation unit 1 will be described with reference to the flowchart of FIG.
First, the software generation unit 1 generates platform-dependent source code (step S10).
Next, the compiler / linker unit 5 compiles and links the generated platform-dependent source code to generate an execution file (step S11).
Next, the profiler unit 7 executes the generated execution file and acquires profile information (step S12).

次に、ソフトウェア生成部1(検出部)が、取得したプロファイル情報が処理時間の制約を満たすか否かを検出する(ステップS13)。
次に、ソフトウェア生成部1は、ステップS13の検出結果が、取得したプロファイル情報が処理時間の制約を満たす場合(YES)には、処理を終了し、逆に、取得したプロファイル情報が処理時間の制約を満たさない場合(NO)には、ステップS10からの処理を繰り返す。
Next, the software generation unit 1 (detection unit) detects whether or not the acquired profile information satisfies the processing time constraint (step S13).
Next, the software generation unit 1 terminates the processing when the detected result of step S13 satisfies the processing time constraint (YES), and conversely, the acquired profile information indicates that the processing time is the processing time. If the constraint is not satisfied (NO), the processing from step S10 is repeated.

以上のように、ソフトウェア生成部1(検出部)が、取得したプロファイル情報が処理時間の制約を満たすか否かを検出し(ステップS13)、取得したプロファイル情報が処理時間の制約を満たさない場合(NO)には、取得したプロファイル情報が処理時間の制約を満たすまで、ステップS10からの処理を繰り返し、ソフトウェア生成部1が再度プラットフォーム依存ソースコードを生成する。   As described above, the software generation unit 1 (detection unit) detects whether or not the acquired profile information satisfies the processing time constraint (step S13), and the acquired profile information does not satisfy the processing time constraint. In (NO), the processing from step S10 is repeated until the acquired profile information satisfies the processing time constraint, and the software generation unit 1 generates the platform-dependent source code again.

そのため、このソフトウェア生成装置100は、プロファイル情報が処理時間の制約を満たす実行ファイルを生成する。そのため、ソフトウェア生成装置100は、リアルタイムでの処理を必要とするソフトウェアを生成することが可能である。   Therefore, the software generation device 100 generates an executable file whose profile information satisfies the processing time constraint. Therefore, the software generation device 100 can generate software that requires real-time processing.

次に、図2(b)のフローチャートを用いて、図2(a)のステップS10の動作、つまり、ソフトウェア生成部1の動作の概要に説明する。
ソフトウェア生成部1は、まず、モジュールの実行順序の依存関係を検出する(ステップS21)。次に、モジュールの実行順序を決定する(ステップS22)。
次に、実行順序を決定した各モジュールにコアとスレッドとを割当てる(ステップS23)。次に、モジュールにメモリ割当てを実行する(ステップS24)。
次に、プラットフォーム依存ソースコードを生成し出力し(ステップS25)、処理を終了する。
Next, the operation in step S10 in FIG. 2A, that is, the outline of the operation of the software generation unit 1 will be described with reference to the flowchart in FIG.
First, the software generation unit 1 detects the dependency relationship of the module execution order (step S21). Next, the module execution order is determined (step S22).
Next, a core and a thread are assigned to each module whose execution order has been determined (step S23). Next, memory allocation is executed for the module (step S24).
Next, platform-dependent source code is generated and output (step S25), and the process ends.

次に、具体的なアーキテクチャの異なる2つのプラットフォームを例にして、ソフトウェア生成部1の上記各動作について、詳細に説明する。ここでは、アーキテクチャの異なるプラットフォームの例として、下記の二つのプラットフォームの場合について、説明する。   Next, the above-described operations of the software generation unit 1 will be described in detail by taking two platforms having different specific architectures as an example. Here, the following two platforms will be described as examples of platforms having different architectures.

[プラットフォームA]シングルコア・シングルスレッドのプロセッサを用いたプラットフォーム。   [Platform A] A platform using a single core single thread processor.

[プラットフォームB]マルチコア・マルチスレッドのプロセッサを用いたプラットフォームデバイス(ここでは、一例として、2コアで、1コアあたり2スレッドの並列実行可な場合について説明する。)   [Platform B] Platform device using a multi-core multi-thread processor (Here, as an example, a case where two cores and two threads per core can be executed in parallel will be described.)

また、ここでは、モジュール接続情報には、図3に示すように、モジュールM1の出力とモジュールM2の入力とが接続され、モジュールM1の出力とモジュールM3の入力とが接続され、モジュールM1の出力とモジュールM4の入力とが接続される、という情報が含まれている場合について説明する。   Further, here, as shown in FIG. 3, the module connection information is connected to the output of the module M1 and the input of the module M2, and the output of the module M1 and the input of the module M3 are connected to each other. And the input of the module M4 will be described.

また、このモジュール接続情報には、モジュールM2の出力とモジュールM5の入力とが接続され、モジュールM3の出力とモジュールM5の入力とが接続され、モジュールM4の出力とモジュールM5の入力とが接続される、という情報が含まれている。   In addition, the module connection information includes an output of the module M2 and an input of the module M5, an output of the module M3 and an input of the module M5, and an output of the module M4 and an input of the module M5. Is included.

また、このモジュール接続情報には、モジュールM5の出力とモジュールM6の入力とが接続され、モジュールM6の出力とモジュールM7の入力とが接続され、モジュールM6の出力とモジュールM8の入力とが接続される、という情報が含まれている。   In addition, the module connection information includes an output of the module M5 and an input of the module M6, an output of the module M6 and an input of the module M7, and an output of the module M6 and an input of the module M8. Is included.

また、このモジュール接続情報には、モジュールM7の出力とモジュールM9の入力とが接続され、モジュールM8の出力とモジュールM9の入力とが接続され、モジュールM9の出力とモジュールM10の入力とが接続され、モジュールM10の出力とモジュールM11の入力とが接続される、という情報が含まれている。   In addition, the module connection information includes an output of the module M7 and an input of the module M9, an output of the module M8 and an input of the module M9, and an output of the module M9 and an input of the module M10. The information that the output of the module M10 and the input of the module M11 are connected is included.

まず、ソフトウェア生成部1は、ステップS21にて、全体構成情報のモジュール接続情報を元に、モジュール間の接続構成を検出する(図3参照)。   First, in step S21, the software generation unit 1 detects the connection configuration between modules based on the module connection information of the overall configuration information (see FIG. 3).

次に、ソフトウェア生成部1は、ステップS22にて、ステップS21で検出したモジュールの接続構成から、モジュールの処理を実行する実行順序を決定する。
この実行順序を決定する手法の一例として、図3に示すような接続構成を守りつつモジュールの実行順序を決定し、かつ、処理が複数のモジュールに分かれる箇所(例えば、モジュールM2、モジュールM3とモジュールM4、および、モジュールM7とモジュールM8)については、モジュール付帯情報や全体構成情報での指定が無い限りにおいて、モジュールの実行順序を任意に決定する。
Next, in step S22, the software generation unit 1 determines the execution order for executing module processing from the module connection configuration detected in step S21.
As an example of the method for determining the execution order, the module execution order is determined while maintaining the connection configuration as shown in FIG. 3 and the processing is divided into a plurality of modules (for example, module M2, module M3 and module As for M4, and the modules M7 and M8), the execution order of the modules is arbitrarily determined as long as there is no designation in the module incidental information or the entire configuration information.

例えば、図3に示すような接続構成から、モジュールM5の出力にはモジュールM6の入力のみしか接続されていないため、実行順序として、モジュールM5の次はモジュールM6と一意に決定する。   For example, from the connection configuration shown in FIG. 3, since only the input of the module M6 is connected to the output of the module M5, the module M5 is uniquely determined as the execution order after the module M5.

また、例えば、図3に示すような接続構成から、モジュールM6の出力にはモジュールM7とモジュールM8の入力とが接続されるため、実行順序として、モジュールM6の次はモジュールM7とする場合と、モジュールM6の次はモジュールM8とする場合とがある。このように複数の実行順序がある場合、いずれの順序とするかは任意であるため、乱数やモジュールの番号が小さい順などにより、実行順序を決定する。   Also, for example, from the connection configuration shown in FIG. 3, the output of the module M6 is connected to the input of the module M7 and the module M8. Module M6 may be followed by module M8. As described above, when there are a plurality of execution orders, which order is arbitrary is determined, the execution order is determined based on a random number or a module number in ascending order.

以降では、ステップS22の処理により、図3に示すようなモジュールの接続構成において、モジュールの実行順序は、モジュールM1からモジュールM11までの、モジュールの番号(Mの後の数字)の順として、決定されたものとして説明する。   Thereafter, in the module connection configuration as shown in FIG. 3, the execution order of the modules is determined as the order of the module numbers (numbers after M) from the module M1 to the module M11 by the process of step S22. It will be described as being done.

次に、ソフトウェア生成部1は、ステップS23にて、ステップS22で決定した実行順序に、コアやスレッドの割当てを行う。このコアとスレッドとの割当て方法の一例として、次のような方法がある。   Next, in step S23, the software generation unit 1 assigns cores and threads to the execution order determined in step S22. As an example of a method for allocating cores and threads, there is the following method.

[プラットフォームA]の場合、演算の並列処理は行なえず、ステップS22にて決定した実行順序に基づき、逐次実行することとなる。したがって、この場合は、各モジュールを順に呼び出し処理を行なうことになり、ソフトウェア生成部1は、生成するソフトウェアプログラムのフローチャートを、図4(a)に示すように決定する。   In the case of [Platform A], parallel processing of operations cannot be performed, and the processing is sequentially executed based on the execution order determined in step S22. Therefore, in this case, the modules are sequentially called and the software generation unit 1 determines a flowchart of the software program to be generated as shown in FIG.

[プラットフォームB]の場合、ステップS22にて決定した実行順序に従い、各モジュールに、コアとスレッドとを割り当てる。このとき、プロファイル情報から各モジュールの処理量(図6参照)を取得し、各コアと各スレッドでの処理量が出来るだけ均一になるように、かつ、隣接する処理は出来るだけ同一コアになるようにスレッドを割り当てる(図7参照)。 In the case of [Platform B], a core and a thread are allocated to each module according to the execution order determined in step S22. At this time, the processing amount of each module (see FIG. 6) is acquired from the profile information, the processing amount of each core and each thread is made as uniform as possible, and adjacent processing becomes the same core as much as possible. As shown in FIG.

上記のように、ソフトウェア生成部1は、各コアと各スレッドでの処理量が出来るだけ均一になるようにすることにより、生成するソフトウェア全体でのボトルネックとなる箇所を無くし、また、プラットフォームのコアなどを有効に利用するプラットフォーム依存ソースコードを生成することが出来る。そのため、ソフトウェア生成部1は、生成するソフトウェア全体の実行速度を改善したプラットフォーム依存ソースコードを生成することが可能となる。   As described above, the software generation unit 1 eliminates the bottleneck in the entire generated software by making the processing amount in each core and each thread as uniform as possible. It is possible to generate platform-dependent source code that makes effective use of cores. Therefore, the software generation unit 1 can generate platform-dependent source code that improves the execution speed of the entire software to be generated.

また、ソフトウェア生成部1は、モジュールの実行順序において前後に隣接するモジュールの処理は、出来るだけ同一コアになるようにスレッドを割り当てることにより、モジュールでの処理間の情報の交換の頻度を少なくし、コア間の情報の交換によるオーバーヘッドを少なくするプラットフォーム依存ソースコードを生成することが出来る。そのため、ソフトウェア生成部1は、生成するソフトウェア全体の実行速度を改善したプラットフォーム依存ソースコードを生成することが可能となる。   In addition, the software generation unit 1 allocates threads so that the processing of modules adjacent to each other in the module execution order is the same core as much as possible, thereby reducing the frequency of information exchange between processes in the modules. It is possible to generate platform-dependent source code that reduces overhead due to information exchange between cores. Therefore, the software generation unit 1 can generate platform-dependent source code that improves the execution speed of the entire software to be generated.

ここで、ソフトウェア生成部1は、コアとスレッドとを割当てる初回の時などで、プロファイル情報が無い場合には、モジュールの数やソースコードやオブジェクトコードのサイズなどの情報を利用して、各モジュールに、コアとスレッドとを割当ててもよい。例えば、予め定められた関数に、モジュールの数やソースコードやオブジェクトコードのサイズなどの情報を入力して、プロファイル情報を算出し、算出したプロファイル情報に基づいて、各モジュールに、コアとスレッドとを割当ててもよい。   Here, the software generation unit 1 uses the information such as the number of modules, the size of the source code, and the object code when there is no profile information at the first time of assigning a core and a thread. In addition, a core and a thread may be allocated. For example, information such as the number of modules, the size of the source code and the object code is input to a predetermined function, and profile information is calculated. Based on the calculated profile information, a core and a thread are assigned to each module. May be assigned.

次に、図7を用いて、ソフトウェア生成部1がステップS23にて、各モジュールにコアやスレッドの割当てを行う場合に、各コアと各スレッドでの処理量が出来るだけ均一になるように、モジュールの実行順序に従い、各モジュールにコアとスレッドとを割り当てる一例としての方法について説明する。   Next, referring to FIG. 7, when the software generation unit 1 assigns a core or thread to each module in step S23, the processing amount in each core and each thread is as uniform as possible. An example method for assigning a core and a thread to each module according to the module execution order will be described.

まず、モジュールの実行順序のリストを生成する(ステップS101)。
次に、スレッド平均負荷を算出する(ステップS102)。このスレッド平均負荷は、次の(式1)で算出する。
First, a list of module execution order is generated (step S101).
Next, the thread average load is calculated (step S102). This thread average load is calculated by the following (Equation 1).

スレッド平均負荷=全モジュール負荷/全スレッド数 ・・・(式1) Thread average load = total module load / total number of threads (Equation 1)

次に、以降に説明するステップS104からステップS109の処理を、コア数分繰り返す(ステップS103とステップS110)。
次に、以降に説明するステップS105からステップS108の処理を、コアに含まれるスレッド数分繰り返す(ステップS104とステップS109)。
Next, the processing from step S104 to step S109 described below is repeated for the number of cores (step S103 and step S110).
Next, the processing from step S105 to step S108 described below is repeated for the number of threads included in the core (steps S104 and S109).

次に、スレッド負荷を0に初期化する(ステップS105)。
次に、モジュールの実行順のリストから先頭のモジュールを取り出し、スレッドへ割当てる(ステップS106)。
次に、スレッド負荷に、取り出したモジュールの負荷を加算する(ステップS107)。
次に、モジュールの実行順序リストが空であるか否かを検出し、また、スレッド負荷がスレッド平均負荷より大きいか否かを検出する(ステップS108)。
Next, the thread load is initialized to 0 (step S105).
Next, the first module is extracted from the module execution order list and assigned to a thread (step S106).
Next, the load of the extracted module is added to the thread load (step S107).
Next, it is detected whether or not the module execution order list is empty, and whether or not the thread load is greater than the thread average load is detected (step S108).

ステップS108の検出結果が、モジュールの実行順序リストが空である場合、または、スレッド負荷がスレッド平均負荷より大きい場合(YES)には、次のステップS109に進み、上記に説明した、ステップS105からステップS108の処理を、コアに含まれるスレッド数分繰り返す(ステップS104とステップS109)。
一方、ステップS108の検出結果が、モジュールの実行順序リストが空でなく、かつ、スレッド負荷がスレッド平均負荷より大きくない場合(NO)には、ステップS106からの処理を繰り返す。
If the detection result in step S108 indicates that the module execution order list is empty, or if the thread load is greater than the thread average load (YES), the process proceeds to the next step S109, and from step S105 described above, The process of step S108 is repeated for the number of threads included in the core (steps S104 and S109).
On the other hand, if the detection result in step S108 indicates that the module execution order list is not empty and the thread load is not greater than the thread average load (NO), the processing from step S106 is repeated.

また、ソフトウェア生成部1が、ステップS23にて、各モジュールへのコアとスレッドとを割当てる他の方法として、プロファイル情報のモジュールの処理時間(処理量)、モジュールの処理時間制約条件、モジュールの接続関係、モジュールの実行に必要とするメモリ量、コア数、コア毎のスレッド数などをパラメータとして、予め定められた評価関数により決定するようにしてもよい。   In addition, as another method in which the software generation unit 1 assigns the core and the thread to each module in step S23, the module processing time (processing amount) of the profile information, the module processing time constraint condition, the module connection The relationship, the amount of memory necessary for module execution, the number of cores, the number of threads for each core, and the like may be used as parameters to determine the relationship using a predetermined evaluation function.

以上のようにして、ソフトウェア生成部1は、生成するソフトウェアプログラムのフローチャートを、例えば、図5(a)〜図5(d)に示すように決定する。   As described above, the software generation unit 1 determines the flowchart of the software program to be generated, for example, as shown in FIGS. 5 (a) to 5 (d).

次に、ソフトウェア生成部1は、ステップS24にて、ステップS23でコアとスレッドとを割当てたモジュールに、メモリの割当てを実行する。このメモリの割当ての一例としては、プラットフォーム構成情報のメモリ構成情報と、モジュール付帯情報の変数優先順位情報とに基づいて、モジュール内において、優先度の高い変数から高速なメモリの空き領域を割り当てる。   Next, in step S24, the software generation unit 1 executes memory allocation to the module to which the core and thread are allocated in step S23. As an example of the memory allocation, a high-speed memory free area is allocated from a variable having a high priority in a module based on the memory configuration information of the platform configuration information and the variable priority information of the module supplementary information.

次に、メモリの割当ての一例としての方法を、図8のフローチャートを用いて、説明する。
まず、モジュールが有する変数を割当て優先順位でソートする(ステップS201)。以降では、この変数を割当て優先順位でソートした後の変数を、変数リストvarlistとして説明する。
Next, a method as an example of memory allocation will be described using the flowchart of FIG.
First, the variables included in the modules are sorted according to the allocation priority (step S201). Hereinafter, the variables after sorting these variables by the allocation priority will be described as a variable list varlist.

次に、変数リストvarlistの変数の中から、一番優先順位の高い変数xを選択する(ステップS202)。
次に、メモリ種別を示す変数であるmemtype(以降、メモリ種別変数memtype)を、一番高速なメモリに設定する(ステップS203)。
次に、メモリ種別変数memtypeで示されるメモリの残りサイズは、変数xのサイズよりも大きいか否かを検出する(ステップS204)。
Next, the variable x having the highest priority is selected from the variables in the variable list varlist (step S202).
Next, a memory type variable memtype (hereinafter, memory type variable memtype) is set to the fastest memory (step S203).
Next, it is detected whether the remaining size of the memory indicated by the memory type variable memtype is larger than the size of the variable x (step S204).

ステップS204の検出結果が、メモリ種別変数memtypeで示されるメモリの残りサイズが変数xのサイズよりも大きい(YES)場合には、メモリ種別変数memtypeで示されるメモリに、変数xを割当てる(ステップS205)。
次に、メモリ種別変数memtypeで示されるメモリの残りサイズから、変数xのサイズ分を、減算する(ステップS206)。
次に、変数リストvarlistから変数xを削除する(ステップS207)。
If the detection result in step S204 indicates that the remaining size of the memory indicated by the memory type variable memtype is larger than the size of the variable x (YES), the variable x is assigned to the memory indicated by the memory type variable memtype (step S205). ).
Next, the size of the variable x is subtracted from the remaining size of the memory indicated by the memory type variable memtype (step S206).
Next, the variable x is deleted from the variable list varlist (step S207).

次に、変数リストvarlistは空か否かを検出する(ステップS208)。
ステップS208の検出結果が、変数リストvarlistは空である(YES)場合には、メモリ割当てを終了する。
一方、ステップS208の検出結果が、変数リストvarlistは空でない(NO)場合には、ステップS202からの処理を繰り返す。
Next, it is detected whether or not the variable list varlist is empty (step S208).
If the detection result in step S208 indicates that the variable list varlist is empty (YES), the memory allocation is terminated.
On the other hand, if the detection result in step S208 indicates that the variable list varlist is not empty (NO), the processing from step S202 is repeated.

一方、ステップS204の検出結果が、メモリ種別変数memtypeで示されるメモリの残りサイズが変数xのサイズよりも大きくない(NO)場合には、メモリ種別変数memtypeで示されるメモリよりも、低速なメモリがあるか否かを検出する(ステップS209)。
ステップS209の検出結果が、メモリ種別変数memtypeで示されるメモリよりも、低速なメモリがない(NO)場合には、割当て不可エラーを出力する(ステップS210)。割当て不可エラーを受信したソフトウェア生成装置100は、例えば、ソフトウェアの生成を中断する。
On the other hand, if the detection result in step S204 indicates that the remaining size of the memory indicated by the memory type variable memtype is not larger than the size of the variable x (NO), the memory is slower than the memory indicated by the memory type variable memtype. It is detected whether or not there is (step S209).
If the result of detection in step S209 is that there is no memory slower than the memory indicated by the memory type variable memtype (NO), an allocation impossible error is output (step S210). The software generation apparatus 100 that has received the unallocation error suspends software generation, for example.

一方、ステップS209の検出結果が、メモリ種別変数memtypeで示されるメモリよりも、低速なメモリがある(YES)場合には、メモリ種別変数memtypeで示されるメモリを、次に、高速なメモリに設定し、ステップS204からの処理を繰り返す(ステップS211)。   On the other hand, if the result of detection in step S209 is a memory that is slower than the memory indicated by the memory type variable memtype (YES), the memory indicated by the memory type variable memtype is then set to a high-speed memory. Then, the processing from step S204 is repeated (step S211).

なお、他のメモリの割当ての手法として、メモリ種別ごとの残容量、アクセスに要する時間、割当てが必要な容量などをパラメータとし、予め定められた評価関数により、メモリの割当てを決定するようにしてもよい。   As another memory allocation method, the remaining capacity for each memory type, the time required for access, the capacity required for allocation, etc. are used as parameters, and the memory allocation is determined by a predetermined evaluation function. Also good.

ソフトウェア生成部1は、図2(b)のステップS24のメモリの割当てが決定後、ステップS25にて、プラットフォーム依存のソースコードを出力する。
例えば、ソフトウェア生成部1は、各モジュールの処理を接続するインタフェース部分のソースコードを、モジュール付帯情報(モジュールインタフェース情報)や、全体構成情報(モジュール接続情報)に基づき、プラットフォームに適切な形で生成し、モジュールのソースコードと結合して、プラットフォーム依存ソースコードとして出力する。
After determining the memory allocation in step S24 in FIG. 2B, the software generation unit 1 outputs platform-dependent source code in step S25.
For example, the software generation unit 1 generates the source code of the interface part connecting the processing of each module in a form appropriate for the platform based on the module incidental information (module interface information) and the entire configuration information (module connection information). Then, it is combined with the module source code and output as platform dependent source code.

ここで、あるモジュールをモジュールMxとし、このモジュールMxについて、ソフトウェア生成部1が、インタフェース部分のソースコードを生成し結合して、プラットフォーム依存ソースコードとする場合について説明する。なお、このxは、任意の自然数である。   Here, a case will be described in which a certain module is a module Mx, and the software generation unit 1 generates and combines the source code of the interface portion with respect to the module Mx to form a platform-dependent source code. Note that x is an arbitrary natural number.

[プラットフォームA]の場合、ソフトウェア生成部1は、モジュールMxについて、モジュール呼び出し処理(モジュールMx呼び出し処理)となる、プラットフォーム依存のソースコードを生成する。
このモジュールMx呼び出し処理とは、モジュールMxの前のモジュールから出力情報を受け取る処理と、受け取った出力情報をモジュールMxに渡す処理と、また、受け取った出力情報についてモジュールMxに処理を実行させる処理と、を含む処理である。
In the case of [Platform A], the software generation unit 1 generates a platform-dependent source code that is a module call process (module Mx call process) for the module Mx.
The module Mx calling process includes a process of receiving output information from a module before the module Mx, a process of passing the received output information to the module Mx, and a process of causing the module Mx to execute a process on the received output information. , Including processing.

また、このモジュールMx呼び出し処理は、出力情報を受け取る場合には、プラットフォーム情報に基づいてメモリや変数やDMA転送を設定し、プラットフォームに合わせた適切な方法で受け取る。
ソフトウェア生成部1は、上記のようなモジュールMx呼び出し処理となるプラットフォーム依存のソースコードを生成する。(図4(b)参照)。
In the module Mx calling process, when output information is received, memory, variables, and DMA transfer are set based on the platform information and received by an appropriate method according to the platform.
The software generation unit 1 generates platform-dependent source code for the module Mx call process as described above. (See FIG. 4 (b)).

また、ソフトウェア生成部1は、モジュールの処理が完了後の終了処理(モジュールMx終了処理)となる、プラットフォーム依存のソースコードを生成する(図4(b)参照)。
このモジュールMx終了処理とは、モジュールMxの出力情報を、後続のモジュールに受け渡す処理である。
In addition, the software generation unit 1 generates platform-dependent source code that is an end process (module Mx end process) after the module process is completed (see FIG. 4B).
The module Mx end process is a process for passing output information of the module Mx to the subsequent module.

また、このモジュールMx終了処理は、出力情報を受け渡す場合には、プラットフォーム情報に基づいてメモリや変数やDMA転送を設定し、プラットフォームに適切な方法で受け渡す。
ソフトウェア生成部1は、上記のようなモジュールMx終了処理となるプラットフォーム依存のソースコードを生成する。(図4(b)参照)。
Further, in the module Mx end process, when the output information is transferred, a memory, a variable, and a DMA transfer are set based on the platform information and transferred to the platform by an appropriate method.
The software generation unit 1 generates a platform-dependent source code that is a module Mx termination process as described above. (See FIG. 4 (b)).

次に、ソフトウェア生成部1は、生成したモジュールMx呼び出し処理となるプラットフォーム依存のソースコードを、モジュールMxの先頭に追加し、また、生成したモジュールMx終了処理となるプラットフォーム依存のソースコードを、モジュールMxの最後に追加する(図4(b)参照)。   Next, the software generation unit 1 adds the platform-dependent source code that is the generated module Mx call process to the top of the module Mx, and the generated platform-dependent source code that is the module Mx end process It is added at the end of Mx (see FIG. 4B).

[プラットフォームB]の場合は、図5(a)から図5(d)に示すように、一つ以上のモジュールで一つのスレッドが構成され、各スレッドが並列に動作する。
しかし、同一スレッド内での各モジュール入出力部は、プラットフォームAの場合と同様であるため、ソフトウェア生成部1は、プラットフォームAの場合と同様に、各モジュールについて、モジュールMx呼び出し処理となるプラットフォーム依存のソースコードを生成し、また、モジュールMx終了処理となるプラットフォーム依存のソースコードを生成する(図5(e)参照)。
In the case of [Platform B], as shown in FIGS. 5A to 5D, one or more modules constitute one thread, and the threads operate in parallel.
However, since each module input / output unit in the same thread is the same as in the case of the platform A, the software generation unit 1 is dependent on the platform to be the module Mx call processing for each module, as in the case of the platform A. And a platform-dependent source code for module Mx termination processing is generated (see FIG. 5E).

また、ソフトウェア生成部1は、生成したモジュールMx呼び出し処理となるプラットフォーム依存のソースコードを、モジュールMxの先頭に追加し、また、生成したモジュールMx終了処理となるプラットフォーム依存のソースコードを、モジュールMxの最後に追加する(図5(e)参照)。   In addition, the software generation unit 1 adds the platform-dependent source code that is the generated module Mx calling process to the top of the module Mx, and the platform-dependent source code that is the generated module Mx end process is added to the module Mx. (See FIG. 5E).

なお、ソフトウェア生成部1は、スレッドをまたがるモジュール間のデータの入出力が発生する際には、モジュールを逐次呼び出す形ではなく、スレッド間の同期処理を行ない、前後のモジュールからデータの受渡しを行なうように、モジュールの呼び出し処理や終了処理を生成して、ソースコードを生成する。   Note that the software generation unit 1 does not sequentially call modules when data input / output occurs between modules across threads, but performs synchronization processing between threads and transfers data from the previous and subsequent modules. In this way, module call processing and termination processing are generated to generate source code.

例えば、ソフトウェア生成部1は、並列な処理を行なうモジュールM2とモジュールM3とモジュールM4とについては(図3参照)、それぞれのモジュールは、モジュールM1からの出力結果が得られた後に実行可能となり、また、モジュールM5は、モジュールM2とモジュールM3とモジュールM4からの出力結果がそろった時点で、実行可能となるように、同期処理を行なうように、各モジュールの呼び出し処理や終了処理を生成して、ソースコードを生成する。   For example, the software generation unit 1 can execute the modules M2, M3, and M4 that perform parallel processing (see FIG. 3) after the output result from the module M1 is obtained. Further, the module M5 generates a calling process and a termination process for each module so that the synchronization process is performed so that the module M2, the module M3, and the output result from the module M4 are ready to be executed. , Generate source code.

また、ソフトウェア生成部1は、同様に、並列な処理を行なうモジュールM7とモジュールM8については(図3参照)、それぞれのモジュールは、モジュールM6の出力結果が得られたら実行可能となり、また、モジュールM9は、モジュールM7とモジュールM8とからの出力結果がそろった時点で、実行可能となるように、同期処理を行なうように、各モジュールの呼び出し処理や終了処理を生成して、ソースコードを生成する。   Similarly, the software generation unit 1 can execute each module M7 and module M8 that perform parallel processing (see FIG. 3) when the output result of the module M6 is obtained. M9 generates the source code by generating the calling process and termination process of each module so that it can be executed when the output results from modules M7 and M8 are ready. To do.

なお、上記の説明においては、プラットフォーム構成情報は、ソフトウェア生成装置100の内部のプラットフォーム構成情報記憶部2に、あらかじめ記憶されているものとして説明したが、これに限られるものではなく、このプラットフォーム構成情報は、ソフトウェア生成装置100に外部から入力され、入力されたプラットフォーム構成情報が、プラットフォーム構成情報記憶部2に記憶されるようにしてもよい。例えば、ソフトウェア生成装置100が、プラットフォーム構成情報のファイルを読み込むようにしてもよい。   In the above description, the platform configuration information has been described as being stored in advance in the platform configuration information storage unit 2 inside the software generation apparatus 100. However, the platform configuration information is not limited to this, and the platform configuration information is not limited thereto. Information may be input to the software generation apparatus 100 from the outside, and the input platform configuration information may be stored in the platform configuration information storage unit 2. For example, the software generation apparatus 100 may read a platform configuration information file.

ソフトウェア生成装置100が、プラットフォーム構成情報を、内部のプラットフォーム構成情報記憶部2に、あらかじめ記憶している場合には、このソフトウェア生成装置100を特定のプラットフォーム専用のソフトウェア生成装置として用いるのに好適である。   When the software generation device 100 stores the platform configuration information in the internal platform configuration information storage unit 2 in advance, the software generation device 100 is suitable for use as a software generation device dedicated to a specific platform. is there.

逆に、ソフトウェア生成装置100が、プラットフォーム構成情報を、外部のファイルから読み込むようにする場合には、このソフトウェア生成装置100を複数のプラットフォームに対応するソフトウェア生成装置として用いるのに好適である。   On the other hand, when the software generation device 100 reads the platform configuration information from an external file, the software generation device 100 is suitable for use as a software generation device corresponding to a plurality of platforms.

また、ソフトウェア生成装置100は、コンパイラ・リンカ部5を有する。そのため、ソフトウェア生成装置100は、出力としてプラットフォーム依存ソースコードを出力することなく、プラットフォーム用の直接コンパイルを行なうことが可能となる。
このソフトウェア生成装置100は、プラットフォーム依存ソースコードを介することがないため、ダイレクトにプラットフォームの構成に合わせた実行ファイルを生成することが可能となる。これにより、ソフトウェア生成装置100は、プラットフォームに対して、より柔軟かつきめ細かな制御が可能となり、プラットフォームに最適な実行ファイルを生成可能となる。
The software generation apparatus 100 includes a compiler / linker unit 5. Therefore, the software generation apparatus 100 can perform direct compilation for the platform without outputting the platform-dependent source code as an output.
Since this software generation apparatus 100 does not go through platform-dependent source code, it is possible to directly generate an execution file that matches the platform configuration. As a result, the software generation apparatus 100 can perform more flexible and detailed control over the platform, and can generate an execution file optimal for the platform.

<第2の実施形態>
次に、第2の実施形態について説明する。第2の実施形態として、第1の実施形態に比較して、更に、対象とするプラットフォームが特定処理に利用可能なアクセラレータやライブラリを持つ場合について説明する。
<Second Embodiment>
Next, a second embodiment will be described. As a second embodiment, a case will be described in which the target platform has an accelerator or a library that can be used for specific processing as compared to the first embodiment.

一般的に、プラットフォームが提供するアクセラレータやライブラリは、ソースコードで記述する処理よりも高速に処理でき、かつ、少ないメモリ容量で処理できることが多い。従って、ソフトウェア生成装置100は、アクセラレータやライブラリを積極的に利用することが望ましい。   In general, an accelerator or a library provided by a platform can be processed at a higher speed than a process described by source code, and can be processed with a small memory capacity in many cases. Therefore, it is desirable for the software generation apparatus 100 to actively use accelerators and libraries.

この第2の実施形態では、ソフトウェア生成部1は、モジュール間の接続構成を把握する際に、次の動作を行なう。ソフトウェア生成部1は、付帯情報や全体構成情報を参照し、一つ以上のモジュールにより実施される処理が、プラットフォームの持つアクセラレータやライブラリで置き換え可能と検出した場合に、該当する一つ以上のモジュールの代わりに、アクセラレータあるいはライブラリの使用を決定する。   In the second embodiment, the software generation unit 1 performs the following operation when grasping the connection configuration between modules. The software generation unit 1 refers to incidental information and overall configuration information, and if it detects that processing performed by one or more modules can be replaced by an accelerator or library of the platform, the corresponding one or more modules Instead of, decide to use an accelerator or library.

ここで、アクセラレータやライブラリで置き換え可能か否かの検出は、例えば、ソフトウェア生成部1が、モジュール付帯情報記憶部12から読み出したモジュール処理情報のモジュールの処理の名称と、プラットフォーム構成情報記憶部2から読み出したアクセラレータ情報またはライブラリ情報による処理の名称とが、一致するか否かを検出することにより、実行する。   Here, the detection of whether or not it can be replaced by an accelerator or library is performed by, for example, the module processing information module processing information read from the module incidental information storage unit 12 by the software generation unit 1 and the platform configuration information storage unit 2. The processing is executed by detecting whether or not the accelerator information or the processing name based on the library information read from the file matches.

このとき、ソフトウェア生成部1は、アクセラレータあるいはライブラリに対応するモジュールのソースコードは使用せず、当該モジュールで行なわれる処理は、アクセラレータあるいはライブラリで行なう。   At this time, the software generation unit 1 does not use the source code of the module corresponding to the accelerator or library, and the processing performed by the module is performed by the accelerator or library.

一例としては、モジュールの呼び出し処理では、アクセラレータあるいはライブラリへの入力処理を行なうようにプラットフォーム依存のソースコードを生成する。また、モジュールの終了処理では、アクセラレータあるいはライブラリからの出力を受け取る処理を行なうようにプラットフォーム依存のソースコードを生成する。これにより、ソフトウェアプログラムの処理は変わらずに、より高速な処理や少ないメモリ量での処理が可能となる。   As an example, in the module call processing, platform-dependent source code is generated so as to perform input processing to an accelerator or library. Further, in the module termination process, platform-dependent source code is generated so as to perform a process of receiving output from an accelerator or a library. As a result, the processing of the software program is not changed, and higher-speed processing and processing with a small amount of memory are possible.

一例としては、ソフトウェア生成部1が、以下のように動作することにより、アクセラレータあるいはライブラリを用いたプラットフォーム依存のソースコードを生成する。
まず、ソフトウェア生成部1(演算モジュール順序決定部)が、アクセラレータ情報またはライブラリ情報をプラットフォーム構成情報記憶部2から読み出し、読み出したアクセラレータ情報で特定されるアクセラレータの処理またはライブラリ情報で特定される処理に該当する1つまたは複数の演算モジュールを、読み出した演算モジュール接続情報の中から、置換演算モジュールとして検出する。
As an example, the software generation unit 1 generates platform-dependent source code using an accelerator or library by operating as follows.
First, the software generation unit 1 (arithmetic module order determination unit) reads the accelerator information or library information from the platform configuration information storage unit 2, and performs the accelerator process specified by the read accelerator information or the process specified by the library information. The corresponding one or more arithmetic modules are detected as replacement arithmetic modules from the read arithmetic module connection information.

次に、ソフトウェア生成部1が、検出した置換演算モジュールに該当するソースコードとして、アクセラレータ情報で特定されるアクセラレータを用いるソースコード、または、ライブラリ情報で特定されるライブラリを用いるソースコードを生成し、生成したソースコードをプラットフォーム依存ソースコードに含める。   Next, the software generation unit 1 generates source code using an accelerator specified by accelerator information or source code using a library specified by library information as source code corresponding to the detected replacement operation module, Include the generated source code in the platform-dependent source code.

<第3の実施形態>
次に、第3の実施形態について説明する。第3の実施形態として、第1または第2の実施形態と同様の構成において、ソフトウェア生成部1が、プロファイラ機能となるソースコードを生成する場合について説明する。
<Third Embodiment>
Next, a third embodiment will be described. As a third embodiment, a case will be described in which the software generation unit 1 generates a source code serving as a profiler function in the same configuration as in the first or second embodiment.

一般に、プロファイラとしては、プラットフォームが提供するプロファイラツールと、ソフトウェアの内部にプロファイル機能を担うソースコードを埋め込む手法がある。前者は、シミュレータ上などで実行する際に、シミュレータなどがソフトウェアを実行しながら、処理サイクル数やメモリのアクセス頻度などの各種統計情報を収集するような形で実現されていることが多い。   In general, profilers include a profiler tool provided by a platform and a method of embedding source code responsible for a profile function in software. The former is often realized in such a manner that various statistical information such as the number of processing cycles and memory access frequency is collected while the software is being executed by the simulator or the like when executed on a simulator or the like.

後者は、シミュレータでも利用可能だが、実機などでソフトウェアを実行する際に、フリーランのカウンタ(動作クロック周期やInstruction cycleをカウントするカウンタで、サイクルカウンタなどと呼ばれる)の値を特定のレジスタやAPIを利用して取得できる機能を利用して、ソフトウェア自身が実行時に要するサイクル数や時間を取得する仕組みである。   The latter can be used in simulators, but when running software on an actual machine, the value of the free-run counter (which is a counter that counts the operating clock cycle and instruction cycle, called the cycle counter) is set to a specific register or API. This is a mechanism for acquiring the number of cycles and the time required by the software itself by using the functions that can be acquired using.

この第3の実施形態では、各モジュールのプロファイル情報を取得するために、ソフトウェア生成装置が、プロファイル情報取得のためのソースコードを生成し出力する構成である。例えば、モジュールの処理に要する時間を測定する際には、図4(b)や図5(e)に示される呼び出し処理において、サイクルカウンタの値を取得し保存し、終了処理でも同様にサイクルカウンタの値を取得する。この二つのカウンタ値の差分を取ることで、当該モジュールで要するサイクル数を求め、そこから処理時間を計算することが可能となる。   In the third embodiment, in order to acquire profile information of each module, the software generation device generates and outputs source code for acquiring profile information. For example, when measuring the time required for module processing, the value of the cycle counter is acquired and stored in the call processing shown in FIGS. 4B and 5E, and the cycle counter is similarly used in the end processing. Get the value of. By calculating the difference between the two counter values, the number of cycles required for the module can be obtained, and the processing time can be calculated therefrom.

一例としては、ソフトウェア生成部1が、メモリ構成情報で示されるメモリを、演算モジュールに割当ててソースコードを生成し出力する時に、モジュールの実行開始から実行終了までに要するサイクル数を取得してプロファイル機能となるソースコードをプロファイル機能ソースコードとしてモジュール毎に生成し、生成したプロファイル機能ソースコードを、対応するモジュールのプラットフォーム依存ソースコード部分に含めてプラットフォーム依存ソースコードを生成する。   As an example, when the software generation unit 1 allocates the memory indicated by the memory configuration information to an arithmetic module and generates and outputs a source code, the software generation unit 1 obtains the number of cycles required from the start of execution of the module to the end of execution and creates a profile. A function source code is generated for each module as a profile function source code, and the generated profile function source code is included in the platform dependent source code portion of the corresponding module to generate a platform dependent source code.

以上に説明した第1から第3の実施形態によれば、以下の効果を奏する。
プラットフォームのアーキテクチャ(プロセッサ、メモリ構成、コア数、スレッド数など)が異なる環境へのソフトウェアの移植が容易となる、という効果を奏する。
また、処理に要する時間を考慮したソフトウェアの生成が可能となるため、リアルタイムでの信号処理ソフトウェア(音声・映像信号処理ソフトウェアやソフトウェア無線の信号処理ソフトウェアなど)の移植が容易に行なえる、という効果を奏する。
According to the first to third embodiments described above, the following effects are obtained.
This has the effect of facilitating porting of software to environments with different platform architectures (processor, memory configuration, number of cores, number of threads, etc.).
In addition, since it is possible to generate software that takes into account the time required for processing, it is possible to easily port real-time signal processing software (such as audio / video signal processing software and software radio signal processing software). Play.

また、あるプラットフォーム向けのソフトウェア開発において、最終的なターゲットプラットフォームを利用することなく、PC(パーソナルコンピュータ)上で同一のソフトウェアの開発・実行が可能となるため、ソフトウェアの開発効率が向上する、という効果を奏する。
また、PC上のネイティブ実行ファイルを生成できるため、最終ターゲットのプラットフォームの模擬することなく、高速なシミュレーションが可能となり、ソフトウェアの動作検証が容易となり、ソフトウェアの開発効率が向上する、という効果を奏する。
また、ソフトウェアを変更することなく、その時点で最適な処理能力を持つプラットフォームを選択・利用することが可能となる、という効果を奏する。
Also, in software development for a certain platform, it is possible to develop and execute the same software on a PC (personal computer) without using the final target platform, which improves software development efficiency. There is an effect.
In addition, because native executable files can be generated on a PC, high-speed simulation is possible without simulating the final target platform, software operation verification is facilitated, and software development efficiency is improved. .
In addition, there is an effect that it is possible to select and use the platform having the optimum processing capability at that time without changing the software.

なお、プラットフォーム構成情報記憶部2、プラットフォーム依存ソースコード記憶部3、ライブラリ記憶部4、実行ファイル記憶部6、ソフトウェアプログラム記憶部10、演算モジュール記憶部11、モジュール付帯情報記憶部12、または、全体構成情報記憶部13である記憶部は、ハードディスク装置や光磁気ディスク装置、フラッシュメモリ等の不揮発性のメモリや、CR−ROM等の読み出しのみが可能な記憶媒体、RAM(Random Access Memory)のような揮発性のメモリ、あるいはこれらの組み合わせにより構成されるものとする。   The platform configuration information storage unit 2, the platform-dependent source code storage unit 3, the library storage unit 4, the execution file storage unit 6, the software program storage unit 10, the arithmetic module storage unit 11, the module incidental information storage unit 12, or the whole The storage unit that is the configuration information storage unit 13 is a hard disk device, a magneto-optical disk device, a nonvolatile memory such as a flash memory, a storage medium that can only be read such as a CR-ROM, or a RAM (Random Access Memory). Volatile memory or a combination thereof.

また、図1におけるソフトウェア生成部1、コンパイラ・リンカ部5、または、プロファイラ部7の機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することによりソフトウェア生成部1、コンパイラ・リンカ部5、または、プロファイラ部7の機能を行ってもよい。なお、ここでいう「コンピュータシステム」とは、OSや周辺機器等のハードウェアを含むものとする。   Further, a program for realizing the functions of the software generation unit 1, the compiler / linker unit 5 or the profiler unit 7 in FIG. 1 is recorded on a computer-readable recording medium, and the program recorded on the recording medium is recorded. The functions of the software generation unit 1, the compiler / linker unit 5, or the profiler unit 7 may be performed by being read into a computer system and executed. Here, the “computer system” includes an OS and hardware such as peripheral devices.

また、「コンピュータシステム」は、WWWシステムを利用している場合であれば、ホームページ提供環境(あるいは表示環境)も含むものとする。
また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD−ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間の間、動的にプログラムを保持するもの、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含むものとする。また上記プログラムは、前述した機能の一部を実現するためのものであっても良く、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであっても良い。
Further, the “computer system” includes a homepage providing environment (or display environment) if a WWW system is used.
The “computer-readable recording medium” refers to a storage device such as a flexible medium, a magneto-optical disk, a portable medium such as a ROM and a CD-ROM, and a hard disk incorporated in a computer system. Furthermore, the “computer-readable recording medium” dynamically holds a program for a short time like a communication line when transmitting a program via a network such as the Internet or a communication line such as a telephone line. In this case, a volatile memory in a computer system serving as a server or a client in that case, and a program that holds a program for a certain period of time are also included. The program may be a program for realizing a part of the functions described above, and may be a program capable of realizing the functions described above in combination with a program already recorded in a computer system.

以上、この発明の実施形態を図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。   The embodiment of the present invention has been described in detail with reference to the drawings. However, the specific configuration is not limited to this embodiment, and includes design and the like within a scope not departing from the gist of the present invention.

この発明の一実施形態によるソフトウェア生成装置の構成を示すブロック図である。It is a block diagram which shows the structure of the software production | generation apparatus by one Embodiment of this invention. 図1のソフトウェア生成装置の動作を示すフローチャートである。It is a flowchart which shows operation | movement of the software production | generation apparatus of FIG. 一例としてのモジュールの接続構成を例示する説明図である。It is explanatory drawing which illustrates the connection structure of the module as an example. シングルコアおよびシングルスレッドの場合の一例としてのモジュールの割当てを例示する説明図である。It is explanatory drawing which illustrates allocation of the module as an example in the case of a single core and a single thread. マルチコアおよびマルチスレッドの場合の一例としてのモジュールの割当てを例示する説明図である。It is explanatory drawing which illustrates allocation of the module as an example in the case of multicore and multithread. モジュールの一例としてのプロファイル情報を例示する説明図である。It is explanatory drawing which illustrates the profile information as an example of a module. コアとスレッドとをモジュールに割当てる場合の動作を説明するフローチャートである。It is a flowchart explaining operation | movement in the case of assigning a core and a thread | sled to a module. メモリをモジュールの変数に割当てる場合の動作を説明するフローチャートである。It is a flowchart explaining operation | movement in the case of allocating a memory to the variable of a module.

符号の説明Explanation of symbols

1 ソフトウェア生成部
2 プラットフォーム構成情報記憶部
3 プラットフォーム依存ソースコード記憶部
4 ライブラリ記憶部
5 コンパイラ・リンカ部
6 実行ファイル記憶部
7 プロファイラ部
8 ソフトウェア実行プラットフォーム
10 ソフトウェアプログラム記憶部
11 演算モジュール記憶部
12 モジュール付帯情報記憶部
13 全体構成情報記憶部
100 ソフトウェア生成装置
DESCRIPTION OF SYMBOLS 1 Software generation part 2 Platform structure information storage part 3 Platform dependence source code storage part 4 Library storage part 5 Compiler / linker part 6 Execution file storage part 7 Profiler part 8 Software execution platform 10 Software program storage part 11 Arithmetic module storage part 12 Module Attached information storage unit 13 Overall configuration information storage unit 100 Software generation device

Claims (10)

プラットフォームが備えるメモリの構成を示すメモリ構成情報が記憶されているプラットフォーム構成情報記憶部と、
前記プラットフォームに依存しない形式で記述された演算処理のソースコードである演算モジュールが記憶されている演算モジュール記憶部と、
前記演算モジュールが用いるメモリの情報が記憶されているモジュール付帯情報記憶部と、
前記演算モジュールの接続関係の情報である演算モジュール接続情報が記憶されている全体構成情報記憶部と、
前記全体構成情報記憶部から演算モジュール接続情報を読み出し、前記読み出した演算モジュール接続情報に基づいて前記演算モジュールの実行順序を決定する演算モジュール順序決定部と、
前記モジュール付帯情報記憶部から読み出した演算モジュールが用いるメモリの情報と、前記プラットフォーム構成情報記憶部から読み出したメモリ構成情報とに基づいて、前記メモリ構成情報で示されるメモリを、前記演算モジュール順序決定部が決定した演算モジュールに割当ててソースコードを生成し出力するソフトウェア生成部と、
を有することを特徴とするソフトウェア生成装置。
A platform configuration information storage unit storing memory configuration information indicating the configuration of the memory included in the platform;
An arithmetic module storage unit in which an arithmetic module which is a source code of arithmetic processing described in a format independent of the platform is stored;
A module-accompanying information storage unit storing information of a memory used by the arithmetic module;
An overall configuration information storage unit storing computation module connection information, which is information on connection relations of the computation modules;
An arithmetic module order determining unit that reads arithmetic module connection information from the overall configuration information storage unit, and determines an execution order of the arithmetic modules based on the read arithmetic module connection information;
Based on the information on the memory used by the arithmetic module read from the module supplementary information storage unit and the memory configuration information read from the platform configuration information storage unit, the memory indicated by the memory configuration information is determined as the arithmetic module order. A software generation unit that generates and outputs a source code assigned to the operation module determined by the unit;
A software generation device characterized by comprising:
前記メモリ構成情報が、前記プラットフォームが備える異なるアクセス速度を有するメモリの構成情報を含み、
前記演算モジュールが用いる変数と、該変数の優先順位とが関連付けて変数優先順位情報として前記モジュール付帯情報記憶部に記憶されており、
前記ソフトウェア生成部が、
前記モジュール付帯情報記憶部から読み出した変数優先順位情報に基づいて、前記演算モジュール順序決定部が決定した演算モジュールで用いられる変数に、前記異なるアクセス速度を有するメモリを割当てて前記ソースコードを生成し出力する、
ことを特徴とする請求項1に記載のソフトウェア生成装置。
The memory configuration information includes configuration information of a memory having different access speeds provided in the platform;
The variable used by the arithmetic module and the priority of the variable are associated with each other and stored as variable priority information in the module incidental information storage unit,
The software generator is
Based on the variable priority information read from the module-accompanying information storage unit, the source code is generated by allocating the memory having the different access speed to the variable used in the arithmetic module determined by the arithmetic module order determining unit. Output,
The software generation apparatus according to claim 1.
前記プラットフォーム構成情報記憶部に記憶されているプラットフォーム構成情報が、前記プラットフォームが実行可能な並列実行数の情報である並列実行数情報を含み、
前記ソフトウェア生成装置が、
前記並列実行数情報を前記プラットフォーム構成情報記憶部から読み出し、前記演算モジュール順序決定部が決定した演算モジュールの実行順序と、前記読み出した並列実行数情報とに基づいて、前記実行順序を決定した演算モジュールの並列処理を決定する並列処理割当て部、
を有し、
前記ソフトウェア生成部が、
並列実行単位に基づくソースコードを生成し出力する、
ことを特徴とする請求項1または請求項2に記載のソフトウェア生成装置。
The platform configuration information stored in the platform configuration information storage unit includes parallel execution number information that is information on the number of parallel executions that can be executed by the platform,
The software generation device is
The computation in which the execution order is read out from the platform configuration information storage unit, and the execution order is determined based on the execution order of the computation modules determined by the computation module order determination unit and the read out parallel execution number information A parallel processing allocation unit that determines parallel processing of modules,
Have
The software generator is
Generate and output source code based on parallel execution units,
The software generation apparatus according to claim 1, wherein the software generation apparatus is a software generation apparatus.
前記全体構成情報記憶部に記憶されている全体構成情報が、前記演算モジュール接続情報で構成されるモジュールの複数または全体が処理を実行する時間の制約条件であるソフトウェア処理時間制約条件を含み、
前記ソフトウェア生成装置が、
前記ソフトウェア生成部が生成し出力したモジュールの複数または全体に該当するソースコードの実行時間を測定し、該測定した実行時間をプロファイル情報として生成するプロファイラ部と、
前記ソフトウェア処理時間制約条件を前記全体構成情報記憶部から読み出し、前記プロファイラ部が測定した実行時間が、前記読み出したソフトウェア処理時間制約条件を満たすか否かを検出する検出部と、
を有することを特徴とする請求項1から請求項3に記載のソフトウェア生成装置。
The overall configuration information stored in the overall configuration information storage unit includes a software processing time constraint that is a constraint on the time at which a plurality or all of the modules configured by the arithmetic module connection information execute processing,
The software generation device is
A profiler unit that measures the execution time of source code corresponding to a plurality or all of the modules generated and output by the software generation unit, and generates the measured execution time as profile information;
A detection unit that reads out the software processing time constraint condition from the overall configuration information storage unit and detects whether or not the execution time measured by the profiler unit satisfies the read software processing time constraint condition;
The software generation apparatus according to claim 1, further comprising:
前記検出部が、
前記検出した結果が、前記実行時間が前記ソフトウェア処理時間制約条件を満たさない場合には、前記生成したプロファイル情報に基づいて、前記演算モジュール順序決定部と前記ソフトウェア生成部との処理を繰り返す、
ことを特徴とする請求項4に記載のソフトウェア生成装置。
The detection unit is
When the detected result does not satisfy the software processing time constraint condition for the execution time, based on the generated profile information, the processing of the arithmetic module order determination unit and the software generation unit is repeated.
The software generation apparatus according to claim 4.
前記プラットフォーム構成情報記憶部が、前記プラットフォームが有するアクセラレータを特定する情報であるアクセラレータ情報、または、前記プラットフォームが有するライブラリを特定する情報であるライブラリ情報を含み、
前記演算モジュール順序決定部が、
前記アクセラレータ情報または前記ライブラリ情報を前記プラットフォーム構成情報記憶部から読み出し、前記読み出したアクセラレータ情報で特定されるアクセラレータの処理またはライブラリ情報で特定される処理に該当する1つまたは複数の演算モジュールを、前記読み出した演算モジュール接続情報の中から、置換演算モジュールとして検出し、
前記ソフトウェア生成部が、
前記演算モジュール順序決定部が検出した置換演算モジュールに該当するソースコードとして、前記アクセラレータ情報で特定されるアクセラレータを用いるソースコード、または、前記ライブラリ情報で特定されるライブラリを用いるソースコード、を生成する、
ことを特徴とする請求項1から請求項5に記載のソフトウェア生成装置。
The platform configuration information storage unit includes accelerator information that is information for specifying an accelerator included in the platform, or library information that is information for specifying a library included in the platform,
The arithmetic module order determining unit is
The accelerator information or the library information is read from the platform configuration information storage unit, and one or a plurality of arithmetic modules corresponding to the accelerator process specified by the read accelerator information or the process specified by the library information are Detected as a replacement computation module from the readout computation module connection information,
The software generator is
Source code using an accelerator specified by the accelerator information or source code using a library specified by the library information is generated as source code corresponding to the replacement calculation module detected by the calculation module order determination unit. ,
6. The software generation apparatus according to claim 1, wherein the software generation apparatus is a software generation apparatus.
前記ソフトウェア生成装置が、
前記ソフトウェア生成部が生成し出力したソースコードを、コンパイルしリンクするコンパイラ・リンカ部、
を有することを特徴とする請求項1から請求項6に記載のソフトウェア生成装置。
The software generation device is
A compiler / linker for compiling and linking the source code generated and output by the software generation unit;
The software generation apparatus according to claim 1, further comprising:
前記ソフトウェア生成部が、
前記メモリ構成情報で示されるメモリを、前記演算モジュール順序決定部が決定した演算モジュールに割当ててソースコードを生成し出力する時に、前記モジュールの実行開始から実行終了までに要するサイクル数を取得してプロファイル機能となるソースコードをプロファイル機能ソースコードとしてモジュール毎に生成し、前記生成したプロファイル機能ソースコードを、前記モジュールのソースコードに含めて前記ソースコードを生成し出力する、
ことを特徴とする請求項1から請求項7に記載のソフトウェア生成装置。
The software generator is
When the memory indicated by the memory configuration information is allocated to the arithmetic module determined by the arithmetic module order determination unit and the source code is generated and output, the number of cycles required from the start of execution of the module to the end of execution is obtained. A source code for a profile function is generated for each module as a profile function source code, the generated profile function source code is included in the source code of the module, and the source code is generated and output.
The software generation apparatus according to claim 1, wherein the software generation apparatus is a software generation apparatus.
プラットフォームが備えるメモリの構成を示すメモリ構成情報が記憶されているプラットフォーム構成情報記憶部と、
前記プラットフォームに依存しない形式で記述された演算処理のソースコードである演算モジュールが記憶されている演算モジュール記憶部と、
前記演算モジュールが用いるメモリの情報が記憶されているモジュール付帯情報記憶部と、
前記演算モジュールの接続関係の情報である演算モジュール接続情報が記憶されている全体構成情報記憶部と、
を有するソフトウェア生成装置で用いられるソフトウェア生成方法であって、
前記ソフトウェア生成装置が、
前記全体構成情報記憶部から演算モジュール接続情報を読み出し、前記読み出した演算モジュール接続情報に基づいて前記演算モジュールの実行順序を決定し、
前記モジュール付帯情報記憶部から読み出した演算モジュールが用いるメモリの情報と、前記プラットフォーム構成情報記憶部から読み出したメモリ構成情報とに基づいて、前記メモリ構成情報で示されるメモリを、前記決定した演算モジュールに割当ててソースコードを生成し出力する、
ことを特徴とするソフトウェア生成方法。
A platform configuration information storage unit storing memory configuration information indicating the configuration of the memory included in the platform;
An arithmetic module storage unit in which an arithmetic module which is a source code of arithmetic processing described in a format independent of the platform is stored;
A module-accompanying information storage unit storing information of a memory used by the arithmetic module;
An overall configuration information storage unit storing computation module connection information, which is information on connection relations of the computation modules;
A software generation method used in a software generation apparatus having
The software generation device is
Read calculation module connection information from the overall configuration information storage unit, determine the execution order of the calculation modules based on the read calculation module connection information,
Based on the memory information used by the arithmetic module read from the module-accompanying information storage unit and the memory configuration information read from the platform configuration information storage unit, the memory indicated by the memory configuration information is determined as the arithmetic module. Generate and output source code by assigning to
A software generation method characterized by the above.
プラットフォームが備えるメモリの構成を示すメモリ構成情報が記憶されているプラットフォーム構成情報記憶部と、
前記プラットフォームに依存しない形式で記述された演算処理のソースコードである演算モジュールが記憶されている演算モジュール記憶部と、
前記演算モジュールが用いるメモリの情報が記憶されているモジュール付帯情報記憶部と、
前記演算モジュールの接続関係の情報である演算モジュール接続情報が記憶されている全体構成情報記憶部と、
を有するソフトウェア生成装置を構成するコンピュータに、
前記全体構成情報記憶部から演算モジュール接続情報を読み出し、前記読み出した演算モジュール接続情報に基づいて前記演算モジュールの実行順序を決定する演算モジュール順序決定手順と、
前記モジュール付帯情報記憶部から読み出した演算モジュールが用いるメモリの情報と、前記プラットフォーム構成情報記憶部から読み出したメモリ構成情報とに基づいて、前記メモリ構成情報で示されるメモリを、前記演算モジュール順序決定手順が決定した演算モジュールに割当ててソースコードを生成し出力するソフトウェア生成手順と、
を実行させるためのソフトウェア生成プログラム。
A platform configuration information storage unit storing memory configuration information indicating the configuration of the memory included in the platform;
An arithmetic module storage unit in which an arithmetic module which is a source code of arithmetic processing described in a format independent of the platform is stored;
A module-accompanying information storage unit storing information of a memory used by the arithmetic module;
An overall configuration information storage unit storing computation module connection information, which is information on connection relations of the computation modules;
In a computer constituting the software generation apparatus having
An arithmetic module order determination procedure for reading arithmetic module connection information from the overall configuration information storage unit and determining an execution order of the arithmetic modules based on the read arithmetic module connection information;
Based on the information on the memory used by the arithmetic module read from the module supplementary information storage unit and the memory configuration information read from the platform configuration information storage unit, the memory indicated by the memory configuration information is determined as the arithmetic module order. Software generation procedure to generate and output source code by assigning to the calculation module determined procedure,
Software generation program to execute
JP2007093797A 2007-03-30 2007-03-30 Software generation device, method and program Pending JP2008250838A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007093797A JP2008250838A (en) 2007-03-30 2007-03-30 Software generation device, method and program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007093797A JP2008250838A (en) 2007-03-30 2007-03-30 Software generation device, method and program

Publications (1)

Publication Number Publication Date
JP2008250838A true JP2008250838A (en) 2008-10-16

Family

ID=39975672

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007093797A Pending JP2008250838A (en) 2007-03-30 2007-03-30 Software generation device, method and program

Country Status (1)

Country Link
JP (1) JP2008250838A (en)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012120654A1 (en) * 2011-03-08 2012-09-13 富士通株式会社 Task scheduling method and multi-core system
JP2013529328A (en) * 2010-04-15 2013-07-18 アイティーアール グループ, インコーポレイテッド Cross platform application framework
JP2015099554A (en) * 2013-11-20 2015-05-28 株式会社リコー Information processing device, method of starting information processing device, and program
US9250973B2 (en) 2009-03-12 2016-02-02 Polycore Software, Inc. Apparatus and associated methodology of generating a multi-core communications topology

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10149280A (en) * 1996-09-17 1998-06-02 Toshiba Corp Device and method for program composition
JPH11242614A (en) * 1998-02-25 1999-09-07 Mitsubishi Electric Corp Device and method for real-time verification for parallel programs
JPH11331911A (en) * 1998-05-13 1999-11-30 Kokusai Electric Co Ltd Controller for program downloading to radio terminal equipment
JP2000003268A (en) * 1998-06-11 2000-01-07 Mitsubishi Electric Corp Method for deciding optimization of memory map
JP2000244358A (en) * 1998-12-21 2000-09-08 Toshiba Corp Equipment and method for radio communication, and recording medium
JP2001109628A (en) * 1999-09-15 2001-04-20 Siemens Ag Software system and its developing method
JP2001184204A (en) * 1999-12-27 2001-07-06 Hitachi Ltd Method for deciding module execution sequence and electronic system and medium for the same
JP2006268070A (en) * 2005-03-22 2006-10-05 Hitachi Ltd Parallelizing compilation method and parallel computer for executing parallelized object code
JP2007507019A (en) * 2003-09-30 2007-03-22 株式会社東芝 How to configure

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10149280A (en) * 1996-09-17 1998-06-02 Toshiba Corp Device and method for program composition
JPH11242614A (en) * 1998-02-25 1999-09-07 Mitsubishi Electric Corp Device and method for real-time verification for parallel programs
JPH11331911A (en) * 1998-05-13 1999-11-30 Kokusai Electric Co Ltd Controller for program downloading to radio terminal equipment
JP2000003268A (en) * 1998-06-11 2000-01-07 Mitsubishi Electric Corp Method for deciding optimization of memory map
JP2000244358A (en) * 1998-12-21 2000-09-08 Toshiba Corp Equipment and method for radio communication, and recording medium
JP2001109628A (en) * 1999-09-15 2001-04-20 Siemens Ag Software system and its developing method
JP2001184204A (en) * 1999-12-27 2001-07-06 Hitachi Ltd Method for deciding module execution sequence and electronic system and medium for the same
JP2007507019A (en) * 2003-09-30 2007-03-22 株式会社東芝 How to configure
JP2006268070A (en) * 2005-03-22 2006-10-05 Hitachi Ltd Parallelizing compilation method and parallel computer for executing parallelized object code

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9250973B2 (en) 2009-03-12 2016-02-02 Polycore Software, Inc. Apparatus and associated methodology of generating a multi-core communications topology
JP2013529328A (en) * 2010-04-15 2013-07-18 アイティーアール グループ, インコーポレイテッド Cross platform application framework
WO2012120654A1 (en) * 2011-03-08 2012-09-13 富士通株式会社 Task scheduling method and multi-core system
JPWO2012120654A1 (en) * 2011-03-08 2014-07-07 富士通株式会社 Task scheduling method and multi-core system
JP2015099554A (en) * 2013-11-20 2015-05-28 株式会社リコー Information processing device, method of starting information processing device, and program

Similar Documents

Publication Publication Date Title
US11379943B2 (en) Optimizing compilation of shaders
JP6141365B2 (en) Method and system for parallel processing of sequential computer program code
KR101645035B1 (en) Apparatus and Method for controlling parallel programming
US20090106730A1 (en) Predictive cost based scheduling in a distributed software build
CN106547520B (en) Code path analysis method and device
CN114510339B (en) Computing task scheduling method and device, electronic equipment and readable storage medium
US11733983B2 (en) Method and apparatus for generating metadata by a compiler
KR20210021261A (en) Methods and apparatus to configure heterogenous components in an accelerator
JP2019049843A (en) Execution node selection program and execution node selection method and information processor
JP2017228029A (en) Parallelization method, parallelization tool, on-vehicle device
JP2008250838A (en) Software generation device, method and program
CN113296788B (en) Instruction scheduling method, device, equipment and storage medium
US20160371068A1 (en) Computer that performs compiling, compiler program, and link program
CN107769987B (en) Message forwarding performance evaluation method and device
Boiński et al. Optimization of data assignment for parallel processing in a hybrid heterogeneous environment using integer linear programming
Shen et al. A design tool for efficient mapping of multimedia applications onto heterogeneous platforms
JP4870956B2 (en) Embedded program generation method, embedded program development system, and information table section
US11573777B2 (en) Method and apparatus for enabling autonomous acceleration of dataflow AI applications
JPH01118931A (en) Program conversion system
KR101670916B1 (en) Method for storing function and system device using the same
JP2010140233A (en) Emulation system and emulation method
JP2008071314A (en) Program development apparatus for integration and automatic generation method of program
CN114296930B (en) Distributed compiling method, system, electronic equipment and storage medium
JP2004030514A (en) Method for analyzing performance
Li et al. An efficient code update scheme for DSP applications in mobile embedded systems

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20090710

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090710

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20111116

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111213

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120213

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20120214

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20120605