JP5456457B2 - プログラム開発支援装置及びプログラム開発支援方法 - Google Patents

プログラム開発支援装置及びプログラム開発支援方法 Download PDF

Info

Publication number
JP5456457B2
JP5456457B2 JP2009292193A JP2009292193A JP5456457B2 JP 5456457 B2 JP5456457 B2 JP 5456457B2 JP 2009292193 A JP2009292193 A JP 2009292193A JP 2009292193 A JP2009292193 A JP 2009292193A JP 5456457 B2 JP5456457 B2 JP 5456457B2
Authority
JP
Japan
Prior art keywords
function
core
program
development support
information
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.)
Active
Application number
JP2009292193A
Other languages
English (en)
Other versions
JP2011134055A (ja
Inventor
学 渡辺
Original Assignee
スパンション エルエルシー
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 スパンション エルエルシー filed Critical スパンション エルエルシー
Priority to JP2009292193A priority Critical patent/JP5456457B2/ja
Publication of JP2011134055A publication Critical patent/JP2011134055A/ja
Application granted granted Critical
Publication of JP5456457B2 publication Critical patent/JP5456457B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Stored Programmes (AREA)

Description

本発明は、マルチコアプロセッサで実行されるプログラムの開発を支援するプログラム開発支援装置及びプログラム開発支援方法に関する。
ソフトウェア開発では、ソースプログラムやプログラム中の関数の依存関係等をプロジェクト管理する方法が知られており、AMP(Asymmetric Multiple Processor)等のマルチコアプロセッサ向けのソフトウェア開発においてもプロジェクト管理が行われている。
例えばコア毎に役割の決まっているマルチコアプロセッサ向けのソフトウェアは、コア毎に処理を割り当てる際に、特定の処理を他のコアで処理させるようにするオフロードと呼ばれる処理を意識して開発される。
特開2006−277457号公報
オフロードを行う場合には、対象となるターゲットプログラムをソースプログラムから切り出し、他のコアで実行されるプロジェクトとして登録し直す作業が必要となる。従来では、この作業は、プログラム開発者が経験に基づき手動で行っていた。すなわち従来では、ターゲットプログラムをソースプログラムから切り出してターゲットプログラムを他のコアで実行させるための記述をプログラム開発者が手入力することによって、オフロードさせるようにしており、その作業は煩雑なものであった。
本発明は、マルチコアプロセッサ用のプログラムの開発において、煩雑さを軽減することが可能なプログラム開発支援装置及びプログラム開発支援方法を提供することを目的とする。
上記課題を解決するため、マルチコアプロセッサで実行されるプログラムの開発を支援するプログラム開発支援装置であって、前記プログラムを解析して前記プログラムに含まれる関数の関数情報と、オフロード先のコアを特定する情報との対応付けを設定するユーザインターフェイスとなる一覧表と、前記オフロード対象の関数が実行されるコアの有効/無効を示す情報を含む関数定義体と、を作成する作成手段と、定された前記コアからオフロード対象の関数を特定し、前記オフロード対象の関数に関数情報に基づきオフロードするための記述を挿入する挿入手段と、を有する。
マルチコアプロセッサ用のプログラムの開発において、煩雑さを軽減することができる。
本発明の一実施例に係るプログラム開発支援装置のハードウェア構成を示す図である。 本発明の一実施例に係るプログラム開発支援装置の機能構成を示す図である。 関数定義体の一例を示す図である。 本発明の一実施例に係るプログラム開発支援装置の動作を説明するフローチャートである。 本発明の一実施例に係るプログラム開発支援装置の関数参照部作成部を説明する図である。 図4のステップS407の処理の詳細を説明するフローチャートである。 本発明の一実施例に係るプログラム開発支援装置の関数定義部作成部を説明する図である。 図4のステップS408の処理の詳細を説明するフローチャートである。 本発明の一実施例に係るプログラム開発支援装置のプロジェクト登録部を説明する図である。 図4のステップS409の処理の詳細を説明するフローチャートである。 関数定義体の別の例を示す図である。
以下、本発明の実施の形態を図面に基づいて説明する。
本発明に係る方法を実現するプログラム開発支援装置100は、マルチコアプロセッサ用に開発されたプログラムをコア毎に対応付けることによって、プロジェクトとして管理する装置であって、図1に示すようなハードウェア構成を有する。図1は、本発明の一実施例に係るプログラム開発支援装置のハードウェア構成を示す図である。
図1において、プログラム開発支援装置100は、コンピュータによって制御される装置であって、CPU(Central Processing Unit)11と、メモリユニット12と、表示ユニット13と、入力ユニット15と、記憶装置17と、ドライバ18とで構成され、システムバスBに接続される。
CPU11は、メモリユニット12に格納されたプログラムに従ってプログラム開発支援装置100を制御する。メモリユニット12は、RAM(Random Access Memory)及びROM(Read-Only Memory)等にて構成され、CPU11にて実行されるプログラム、CPU11での処理に必要なデータ、CPU11での処理にて得られたデータ等を格納する。また、メモリユニット12の一部の領域が、CPU11での処理に利用されるワークエリアとして割り付けられている。
表示ユニット13は、CPU11の制御のもとに必要な各種情報を表示する。入力ユニット15は、マウス、キーボード等を有し、利用者がプログラム開発支援装置100が処理を行なうための必要な各種情報を入力するために用いられる。
記憶装置17は、例えば、ハードディスクユニットにて構成され、各種処理を実行するプログラム等のデータを格納する。
プログラム開発支援装置100によって行われるプログラム開発支援方法での処理を実現するプログラムは、例えば、CD−ROM(Compact Disk Read-Only Memory)等の記憶媒体19によってプログラム開発支援装置100に提供される。即ち、プログラムが保存された記憶媒体19がドライバ18にセットされると、ドライバ18が記憶媒体19からプログラムを読み出し、その読み出されたプログラムがシステムバスBを介して記憶装置17にインストールされる。そして、プログラムが起動されると、記憶装置17にインストールされたプログラムに従ってCPU11がその処理を開始する。
尚、プログラムを格納する媒体としてCD−ROMに限定するものではなく、コンピュータが読み取り可能な媒体であればよい。プログラム開発支援装置100が外部とのネットワーク通信を行う通信ユニットを有する場合には、本発明に係る処理を実現するプログラムを通信ユニットによってネットワークを介してダウンロードし、記憶装置17にインストールするようにしても良い。また、プログラム開発支援装置100が外部記憶装置との接続を行うUSB(Universal Serial Bus)等のインタフェースを有する場合には、USB接続によって外部記憶媒体からプログラムを読み込んでもよい。
図2は、本発明の一実施例に係るプログラム開発支援装置の機能構成を示す図である。本実施例のプログラム開発支援装置100は、プロジェクト作成部110、ソース登録部120、一覧作成部130、プロジェクト制御部140、ビルド部180、デバッグ部190、チューニング部200を有する。
プロジェクト作成部110は、マルチコアを構成するコアとプログラムファイル名とを登録することによって、プロジェクトを作成する。図2においてプロジェクト作成部110により作成されたプロジェクトをプロジェクトP1とする。プロジェクトP1は、後述する関数を実行するコアを指定する前のプロジェクトである。
ソース登録部120は、登録されたプログラムファイル名のソースプログラムを登録する。登録されたソースプログラムは、例えばプログラム開発支援装置100の記憶装置17内に格納される。
一覧作成部130は、静的解析部131、関数情報作成部132、コア属性作成部133を有し、ソースプログラムの静的解析により関数や処理の定義、参照情報を解析してコア属性を付加し、オフロードに備える。尚オフロードとは、特定の処理(関数)を他のコアで実行させて処理を並列化するための処理である。一覧作成部130の詳細は後述する。
プロジェクト制御部140は、関数参照部作成部150、関数定義部作成部160、プロジェクト登録部170を有し、一覧作成部130によりコア属性が付加された関数に対してコアの指定を行い、指定後のソースプログラムをプロジェクトに登録する。プロジェクト制御部140により登録されたプロジェクトを図2ではプロジェクトP2とした。プロジェクト制御140の詳細は後述する。
ビルド部180は、プロジェクト制御部140により登録されたソースプログラムをビルドする。デバッガ部190は、ターゲットとなるファイルをデバッガに取り込んでデバッグを行う。チューニング部200は、性能情報の測定を行う。
以下に、一覧作成部130の詳細を説明する。
本実施例の一覧作成部130は、静的解析部131、関数情報作成部132、コア属性作成部133を有し、登録されたソースプログラムからソースプログラムに含まれる関数の情報や、関数が実行されるコアの属性等を解析し、関数一覧表300を作成する。
一覧作成部130において、静的解析部131は、登録されたソースプログラムを静的に解析する。関数情報作成部132は、解析結果からソースプログラムに含まれる関数の情報(以下、関数情報)を作成する。コア属性作成部133は、解析結果から関数を実行するコアの属性(以下、コア属性)を作成する。一覧作成部130は、ソースプログラムに含まれる関数名と、関数情報作成部132により作成された関数情報と、コア属性作成部133により作成されたコア属性とを対応付けて関数一覧表300とする。
本実施例の関数情報は、定義情報と参照情報とを含む。定義情報とは関数の定義が記述された位置を示す情報であり、参照情報とは関数の呼出命令が記述された位置を示している。例えば関数一覧表300において、関数func1()の定義はファイルa.cの12行目に記述されており、関数func1()の呼出命令はファイルb.cの34行目に記述されていることがわかる。同様に関数func2()の定義は、ファイルc.cの5行目に記述されており、関数func2()の呼出命令はファイルd.cの6行目に記述されていることがわかる。
また本実施例のコア属性とは、関数を実行するコアを特定する情報であり、本実施例ではコア番号とする。関数一覧表300では、コア属性が0の場合は対応する関数はコア0で実行され、コア属性が1の場合は対応する関数のコア1で実行されるものとする。
関数一覧表300において、関数func1()のコア属性は0であるから、関数func1()はコア0で実行される。関数func2()のコア属性は1であるから、関数func2()はコア2で実行される。すなわち関数func2()は、プロジェクトP1においてコア0からコア1へオフロードされる関数である。以下の説明では、オフロードされる関数をオフロード対象関数と呼ぶ。
また本実施例の一覧作成部130は、関数一覧表300と対応した関数定義体310を作成し、プログラム開発支援装置100のメモリユニット12内に記憶する。
本実施例の関数一覧表300は、例えばプログラム開発支援装置100の表示ユニット13等に表示されるユーザインターフェイスである。プログラム開発支援装置100のユーザであるプログラム開発者は、関数一覧表300を閲覧して関数情報やコア属性を把握しながら関数毎にオフロードさせるための設定を行うことができる。
これに対し関数定義体310は、関数一覧表300と対応しており、CPU11が以下に説明する処理を実行する際に参照するものである。図3は、関数定義体の一例を示す図である。
本実施例の関数定義体310は、コア属性と、オフロード対象関数のオフロード前の状態を示すオフロード前情報と、オフロード後の状態を示すオフロード後情報とが対応付けられている。オフロード前情報とは、ソース登録部110により登録されたソースプログラムの関数名及びファイル名である。オフロード後情報とは、以下に説明する処理によりオフロードを実行させる記述が挿入されたソースプログラムに対して自動生成された関数名及びファイル名である。関数定義体310におけるコア属性は、オフロード対象関数のオフロード先のコアの属性であり、コア番号と、コア番号のコアへのオフロードを有効(オン)とするか無効(オフ)とするかを示す情報が含まれる。
図3の関数定義体310のコア属性には、コア番号1(以下、コアC1)と、コアC1へのオフロードを有効とする情報とが含まれる。コアC1のコア属性に対応付けられたオフロード前情報は、オフロード対象関数である関数func2()があるファイルと、ファイルにおける関数func2()が定義されている位置が含まれる。ここでは関数func2()の定義は、ファイルc.cの5行目に記述されていることがわかる。コアC1のコア属性に対応付けられたオフロード後情報は、コアC0からコアC1へとオフロードさせる関数func2()を関数func2_offload()とし、ファイルc_func2.cに含ませることを示している。
したがって関数定義体310によれば、オフロードが有効の場合には、関数func2()ではなく、ファイルc_func2.cの関数func2_offload()がコアC1で実行されることになる。
尚関数定義体310のコア属性においてコアC1へのオフロードが無効となっていた場合には、関数func2()はコアC1にオフロードされず、オフロード前情報に示されるファイルc.cの関数func2()がコアC0で実行される。
また本実施例では、関数一覧表300において、プログラム開発支援装置100のユーザによるコア番号の設定操作に応じて、関数定義体310のオフロードの有効(オン)又は無効(オフ)が連動して設定される。したがって、関数一覧表300と関数定義体310とは同義のものとし、以下の説明では関数一覧表300を用いて各部の処理を説明する。
次に、図4を参照して本実施例のプログラム開発支援装置100の動作について説明する。図4は、本発明の一実施例に係るプログラム開発支援装置の動作を説明するフローチャートである。
本実施例のプログラム開発支援装置100は、プロジェクト作成部110によりプロジェクトを作成する(ステップS401)。次にプログラム開発支援装置100は、ソース登録部120によりソースプログラムを登録する(ステップS402)。登録されたソースプログラムは、例えばプロジェクト開発管理装置100の記憶装置17内に格納される。
次に一覧作成部130は、関数一覧表300を読み込み済みか否かを判断する(ステップS403)。ここで読み込まれる関数一覧表300は、後述する処理で作成されたものであっても良いし、ユーザによって設定操作が成された後のものであっても良い。さらには予め与えられたものであっても良い。
ステップS403において関数一覧表300を読み込み済みでない場合、一覧作成部130は、静的解析部131によりソースプログラムの静的解析を行う(ステップS404)。次に一覧作成部130は、関数情報作成部132により関数情報を作成する(ステップS405)。続いて一覧作成部130は、コア属性作成部133によりコア属性を作成し(ステップS406)、関数一覧表300を作成する。尚このとき関数定義体310も作成される。
ステップS403において、関数一覧表300を読み込み済みであった場合、後述するステップS414へ進む。
次にプロジェクト制御部140は、関数参照部作成部150により、オフロード対象関数の参照箇所を書き換える(ステップS407)。続いてプロジェクト制御部140は、関数定義部作成部160により、オフロード対象関数の定義箇所を書き換える(ステップS408)。続いてプロジェクト制御部140は、プロジェクト登録部170により、オフロードにより更新されたソースプログラムをコア属性に基づきプロジェクトに登録し直す(ステップS409)。尚ステップS407からステップS409の処理の詳細は後述する。
次にプログラム開発支援装置100は、ビルド部180により、ステップS409で吐登録されたソースプロジェクトのコンパイル、アセンブル、リンク等の処理を行う(ステップS410)。次にプログラム開発支援装置100は、ステップS410でビルドされたターゲットプログラムをロードし(ステップS411)、ターゲットプログラムを実行する(ステップS412)。
次にプログラム開発支援装置100は、チューニング部200により、性能情報を測定し、ターゲットプログラムの実行によりマルチコアとして十分な性能が得られたか否かをユーザに判断させる(ステップS413)。尚本実施例の性能情報とは、例えばサイクル数や並列度、キャッシュヒット情報等である。
ステップS413において、ユーザにより十分な性能が得られていないと判断された場合、プログラム開発支援装置100は、ユーザからオフロードを無効とする指示を受けたか否かを判断する(ステップS414)。ステップS414においてオフロードを無効とする指示を受けていた場合、プログラム開発支援装置100は、関数定義体310において有効であったコアを無効とする(ステップS415)。
ステップS414においてオフロードを無効とする指示を受けていない場合、プログラム開発支援装置100は、ステップS403へ戻る。このときステップS403では、一覧作成部130は関数一覧表300を読み込み済みと判断し、ステップS414へ進む。そして一覧作成部130は、関数一覧表300のコア属性をユーザに設定させ(ステップS416)、ステップS407以降の処理を繰り返す。
尚ステップS416におけるコア属性の設定は、ユーザにどの関数をどのコアで実行するか設定させても良いし、予め備えられたコア属性の設定テーブル等に基づき設定しても良い。また本実施例では、予めコア属性の設定テーブルと性能情報とを対応させた対応表を設けておき、ステップS413で得られた性能情報と対応する設定テーブルを用いてコア属性を設定しても良い。
ステップS413で十分な性能が得られるとユーザが判断した場合、プログラム開発支援装置100は処理を終了する。
次に、図5、図6を参照して図4のステップS407の処理の詳細を説明する。図5は、本発明の一実施例に係るプログラム開発支援装置の関数参照部作成部を説明する図であり、図6は、図4のステップS407の処理の詳細を説明するフローチャートである。
本実施例の関数参照部作成部150は、静的解析情報認識部151、参照箇所特定部152、テンプレート適用部153を有する。
以下に図6を参照して関数参照部作成部150の処理について説明する。
本実施例の関数参照部作成部150は、静的解析情報認識部151により、関数一覧表300を認識し(ステップS601)、オフロード対象関数が存在するか否かを判断する(ステップS602)。ステップS602においてオフロード対象関数が存在する場合、参照箇所特定部152は、関数一覧表300に基づきソースプログラムにおける参照箇所を特定する(ステップS603)。
例えば図5に示す関数一覧表300では、コア属性が1である関数func2()がオフロード対象関数である。そこで参照箇所特定部152は、関数一覧表300の関数func2()の参照情報に示される箇所を参照箇所と特定する。したがって参照箇所特定部152は、ファイルd.cの6行目を参照箇所と特定する。
次にテンプレート適用部153は、特定された参照箇所においてテンプレートT1が適用されているか否かを判断する(ステップS604)。
ここで関数参照部作成部150が用いるテンプレートT1について説明する。図5に示すテンプレートT1は、関数参照部作成部150により用いられるテンプレートである。このテンプレートT1には、オフロード先のコア(コアC1)が有効である場合にオフロード対象関数をオフロードすることが記述されている。
本実施例のテンプレートT1では、MUL=1である場合はオフロード先のコアが有効を示し、オフロード対象関数がオフロードされる。尚MULは、マクロ変数である。マクロ変数MUL=0の場合、オフロード先のコアが無効となるため、オフロード対象関数はオフロードされない。尚本実施例のテンプレートT1は、例えばプログラム開発支援装置100のメモリユニット12又は記憶装置17の所定領域に予め格納されている。
ステップS604において、参照箇所で既にテンプレートT1が適用されていた場合、関数参照部作成部150は処理を終了する。
ステップS604においてテンプレートT1が適用されていない場合、テンプレート適用部153は、テンプレートT1のオフロード対象関数を関数func2()とし、オフロード先のコアをコアC1として、ソースプログラムの参照箇所に適用(挿入)する(ステップS605)。そしてテンプレート適用部153は、テンプレートT1が適用された結果をファイルd′.cとして出力し(ステップS606)、処理を終了する。
ステップS602においてオフロード対象関数が存在しないと判断された場合、関数参照部作成部150は、テンプレートT1内のマクロ変数MULの値をMUL=0としてオフロード先のコアを無効とし(ステップS607)、処理を終了する。
次に、図7、図8を参照して図4のステップS408の処理の詳細を説明する。図7は、本発明の一実施例に係るプログラム開発支援装置の関数定義部作成部を説明する図であり、図8は、図4のステップS408の処理の詳細を説明するフローチャートである。
本実施例の関数定義部作成部160は、静的解析情報認識部161、定義箇所特定部162、テンプレート適用部163を有する。
以下に図8を参照して関数定義部作成部160の処理について説明する。
本実施例の関数定義部作成部160は、静的解析情報認識部161により、関数一覧表300を認識し(ステップS801)、オフロード対象関数が存在するか否かを判断する(ステップS802)。ステップS802においてオフロード対象関数が存在しない場合、関数定義部作成部160は処理を終了する。
ステップS802においてオフロード対象関数が存在する場合、定義箇所特定部162は、関数一覧表300に基づきソースプログラムにおけるオフロード対象関数の定義箇所を特定する(ステップS803)。
例えば図7に示す関数一覧表300では、コア属性が1である関数func2()がオフロード対象関数である。そこで定義箇所特定部162は、関数一覧表300の関数func2()の定義情報に示される箇所を定義箇所と特定する。したがって定義箇所特定部162は、ファイルc.cの5行目を定義箇所と特定する。
次にテンプレート適用部163は、特定された定義箇所においてテンプレートT2、T3が適用されているか否かを判断する(ステップS804)。
ここで関数定義部作成部160が用いるテンプレートT2、T3について説明する。図7に示すテンプレートT2、T3は、関数定義部作成部160により用いられるテンプレートである。
テンプレートT2には、オフロード先のコアの有効/無効を示す情報が記述される。テンプレートT2では、マクロ変数MUL=1である場合はオフロード先のコアが有効となりコアC0に関数func2()はロードされず、マクロ変数MUL=0である場合はオフロード先のコアが無効となりコアC0に関数func2()がロードされることを示す。
テンプレートT3には、オフロード先のコアが有効/無効を示す情報と、オフロード先のコアで実行される関数とが記述される。テンプレートT3では、マクロ変数MUL=1の場合に、オフロード先のコアで関数%xxx_ofload()が実行されることを示す。尚本実施例のテンプレートT2、T3は、プログラム開発支援装置100のメモリユニット12に予め格納されている。尚「%xxx_」は変数を示し、オフロード対象関数の関数名が代入される。
ステップS804において、ソースプログラムの定義箇所にテンプレートT2、T3が適用されていない場合、テンプレート適用部163はソースプログラムにテンプレートT2、T3を適用する(ステップS805)。
始めにテンプレート適用部163は、テンプレートT2をソースプログラムの定義箇所に適用する。またテンプレート適用部163は、ソースプログラムの定義箇所にテンプレートT3を適用したプログラムを新規ソースとして生成する(ステップS806)。そしてテンプレート適用部163は、テンプレートT2の適用結果と、テンプレートT3の適用結果とを出力し(ステップS807)、処理を終了する。
例えば図7の例では、オフロード対象関数である関数func2()の定義箇所は、ファイルc.cの5行目である。よってテンプレート適用部163は、テンプレートT2をこの定義箇所に適用(挿入)し、その結果のファイルc′.cとして出力する。
またテンプレート適用部163は、オフロード先のコアで実行される関数を関数func2_ofload()としたテンプレートT3を関数func2()の定義箇所に適用(挿入)したソースプログラムを新規に生成し、ファイルc_func2.cとして出力する。
次に、図9、図10を参照して図4のステップS409の処理の詳細を説明する。図9は、本発明の一実施例に係るプログラム開発支援装置のプロジェクト登録部を説明する図であり、図10は、図4のステップS409の処理の詳細を説明するフローチャートである。
本実施例のプロジェクト登録部170は、更新ソース認識部171、コア属性認識部172、登録部173を有する。
以下に図10を参照してプロジェクト登録部170の処理について説明する。
本実施例のプロジェクト登録部170は、更新ソース認識部171により、更新されたソースプログラムを認識する(ステップS1001)。更新されたソースプログラムとは、図8のステップS807で出力されたソースプログラムである。
次にプロジェクト登録部170は、コア属性認識部172により関数一覧表300から関数のコア属性を認識する(ステップS1002)。コア属性を認識すると、登録部173は、コア属性に基づきオフロード対象関数のソースプログラムをオフロード先のプロジェクトに登録する(ステップS1003)。そして登録部173は、更新後のプロジェクトファイルを出力して(ステップS1004)、処理を終了する。
例えばコア属性認識部172は、コア属性を認識して関数func2()がコアC1へオフロードされることを認識すると、登録部173が関数定義体310を参照する。そしてオフロード先としてコアC1が有効である場合に、プロジェクトP1のコアC0のファイルd.cとファイルc.cをファイルd′.cとファイルc′.cとに書き換えて登録し、ファイルc_func2.cをコアC1のプロジェクトとして登録する。このようにしてファイルが登録し直されたプロジェクトがプロジェクトP2となる。
以上に説明したように、本実施例では、オフロード対象関数をソースプログラムから切り出し、他のコアで実行されるプロジェクトとして登録し直す作業を自動で行うことができる。したがって本実施例によれば、マルチコアプロセッサ用のプログラムの開発において、煩雑さを軽減することができる。
尚本実施例の関数一覧表300においてコア属性の設定が変更された場合には、関数定義体310のコア属性も対応して変更される。本実施例では、一度コア属性の設定が変更された場合は、その変更の履歴として関数定義体310へ保存しておく。
また本実施例では、コアが2つ(コアC0、C1)の場合について説明したが、コアは3つ以上であっても良い。
以下に図11を参照して、さらにコアC2を加えたマルチコアプロセッサにおける例を説明する。図11は、関数定義体の別の例を示す図である。図11では、オフロード先として有効であったコアC1を無効とし、関数func3()をコアC2へのオフロード対象関数とするようにコア属性が設定された場合の関数定義体310を示している。
図11の関数定義体310では、関数func2()がオフロード対象関数ではないため、ラインL1の関数func2()にオフロード前情報とオフロード後情報は保持したまま、コアC1のコア属性を無効(オフ)とされる。
そして新たにオフロード対象関数とされた関数func3()について、オフロード前情報とオフロード後情報がラインL2に追加される。そして関数func3()のコア属性において、オフロード先であるコアC2は有効(オン)とされる。尚コアC2を無効とする場合には、関数func3()のコア属性をオフすれば良い。例えばコアC1及びコアC2に対応させて、それぞれマクロ変数MUL1及びMUL2とすることによってコア毎のオフロードを制御することができる。
この場合関数一覧表300のコア属性には、関数定義体310と同様にコア番号とコアの有効/無効を示す情報とが含まれることが好ましい。また例えばコアが3つある場合にソースプログラムをシングルコアの資産として管理するときは、3つのコアのうち2つのコアを無効とするようにコア属性を設定すれば良い。
このように本実施例では、一度オフロード対象関数となった関数は、コア属性と、オフロード前情報と、オフロード後情報とが対応付けられたまま関数定義体310に保持される。よって本実施例では、コア属性の有効/無効を切り替えるだけで、コア属性と対応する関数をオフロードするか否かを制御できる。また本実施例では、例えば関数定義体310のコア属性を全て無効とすれば、ソースプログラムをシングルコアの資産として管理できる。
したがって本実施例では、ユーザインターフェイスとなる関数一覧表300において、関数毎のコア属性の設定を変更すれば、各関数が実行されるコアを切り替えることができる、関数が実行されるコアを容易に管理することができる。
本発明は、以下に記載する付記のような構成が考えられる。
(付記1)
マルチコアプロセッサで実行されるプログラムの開発を支援するプログラム開発支援装置であって、
前記プログラムを解析して前記プログラムに含まれる関数の関数情報と、ユーザによってオフロード先のコアを設定可能とするコア属性とを対応付けた一覧表を作成する作成手段と、
ユーザによって設定された前記コア属性からオフロード対象の関数を特定し、前記オフロード対象の関数に関数情報に基づきオフロードするための記述を挿入する挿入手段と、を有するプログラム開発支援装置。
(付記2)
前記関数情報は、前記関数の定義が記述された定義箇所を示す定義情報と、前記関数が呼び出される参照箇所を示す参照情報とを含み、
前記挿入手段は、
前記定義箇所と、前記参照箇所とへ前記関数をオフロードするための記述をそれぞれ挿入する付記1記載のプログラム開発支援装置。
(付記3)
前記定義箇所と前記参照箇所とは、前記関数をオフロードするための記述を挿入された記述にそれぞれ置き換えられる付記2記載のプログラム開発支援装置。
(付記4)
前記定義箇所に前記関数をオフロードするための記述が挿入された関数のファイルを生成し、生成された前記ファイルを前記関数が実行されるコアのプロジェクトとして登録する登録手段を有する付記3記載のプログラム開発支援装置。
(付記5)
前記定義箇所へ挿入される前記関数をオフロードするための記述と、前記参照箇所へ挿入される前記関数をオフロードするための記述とをそれぞれテンプレートとして保持する付記1乃至4の何れか一項に記載のプログラム開発支援装置。
(付記6)
前記一覧表の前記コア属性の設定を変更して前記オフロード対象の関数を設定する手段を有する付記1乃至5記載のプログラム開発支援装置。
(付記7)
前記作成手段は、
前記一覧表に基づき、前記オフロード対象の関数が実行されるコアの有効/無効を示す情報と、前記記述が挿入される前の前記オフロード対象の関数の前記定義情報と、前記記述が挿入された後の前記オフロード対象の関数の前記定義情報とを対応付けた関数定義体を作成する付記2乃至6記載のプログラム開発支援装置。
(付記8)
前記関数定義体におけるコアの有効/無効を示す情報は、前記一覧表の前記コア属性に基づき設定される付記7記載のプログラム開発支援装置。
(付記9)
マルチコアプロセッサで実行されるプログラムの開発を支援するプログラム開発支援装置におけるプログラム開発支援方法であって、
前記プログラムを解析して前記プログラムに含まれる関数の関数情報と、ユーザによってオフロード先のコアを設定可能とするコア属性とを対応付けた一覧表を作成する作成手順と、
ユーザによって設定された前記コア属性からオフロード対象の関数を特定し、前記オフロード対象の関数に関数情報に基づきオフロードするための記述を挿入する記述挿入手順と、を実行するプログラム開発支援方法。
(付記10)
マルチコアプロセッサで実行されるプログラムの開発を支援するプログラム開発支援装置において実行されるプログラム開発支援プログラムであって、
前記プログラム開発支援装置に。
前記プログラムを解析して前記プログラムに含まれる関数の関数情報と、ユーザによってオフロード先のコアを設定可能とするコア属性とを対応付けた一覧表を作成する作成ステップと、
ユーザによって設定された前記コア属性からオフロード対象の関数を特定し、前記オフロード対象の関数に関数情報に基づきオフロードするための記述を挿入する記述挿入ステップと、を実行させるプログラム開発支援プログラム。
本発明は、具体的に開示された実施例に限定されるものではなく、特許請求の範囲から逸脱することなく、種々の変形や変更が可能である。
100 プログラム開発支援装置
110 プロジェクト作成部
120 ソース登録部
130 一覧作成部
131 静的解析部
132 関数情報作成部
133 コア属性作成部
140 プロジェクト制御部
150 関数参照部作成部
160 関数定義部作成部
170 プロジェクト登録部
300 関数一覧表
310 関数定義体

Claims (9)

  1. マルチコアプロセッサで実行されるプログラムの開発を支援するプログラム開発支援装置であって、
    前記プログラムを解析して前記プログラムに含まれる関数の関数情報と、オフロード先のコアを特定する情報との対応付けを設定するユーザインターフェイスとなる一覧表と、前記オフロード対象の関数が実行されるコアの有効/無効を示す情報を含む関数定義体と、を作成する作成手段と、
    設定された前記コアからオフロード対象の関数を特定し、前記オフロード対象の関数に関数情報に基づきオフロードするための記述を挿入する挿入手段と、
    を有するプログラム開発支援装置。
  2. 前記関数情報は、前記関数の定義が記述された定義箇所を示す定義情報と、前記関数が呼び出される参照箇所を示す参照情報とを含み、
    前記挿入手段は、
    前記定義箇所と、前記参照箇所とへ前記関数をオフロードするための記述をそれぞれ挿入する請求項1記載のプログラム開発支援装置。
  3. 前記定義箇所と前記参照箇所とは、前記関数をオフロードするための記述を挿入された記述にそれぞれ置き換えられる請求項2記載のプログラム開発支援装置。
  4. 前記定義箇所に前記関数をオフロードするための記述が挿入された関数のファイルを生成し、生成された前記ファイルを前記関数が実行されるコアのプロジェクトとして登録する登録手段を有する請求項3記載のプログラム開発支援装置。
  5. 前記定義箇所へ挿入される前記関数をオフロードするための記述と、前記参照箇所へ挿入される前記関数をオフロードするための記述とをそれぞれテンプレートとして保持する請求項2乃至4の何れか一項に記載のプログラム開発支援装置。
  6. 前記作成手段は、
    前記一覧表に基づき、前記オフロード対象の関数が実行されるコアの有効/無効を示す情報と、前記記述が挿入される前の前記オフロード対象の関数の前記定義情報と、前記記述が挿入された後の前記オフロード対象の関数の前記定義情報とを対応付けた関数定義体を作成する請求項2乃至5の何れか一項に記載のプログラム開発支援装置。
  7. 前記オフロード対象の関数が実行されるコアの有効/無効を示す情報の設定を変更して前記オフロード対象の関数を設定する手段を有する請求項1乃至6の何れか一項に記載のプログラム開発支援装置。
  8. 前記オフロード対象の関数が実行されるコアの有効/無効を示す情報は、前記一覧表のコア属性に基づき設定され、前記コア属性は、関数を実行するコアを特定する情報である、請求項6又は7に記載のプログラム開発支援装置。
  9. マルチコアプロセッサで実行されるプログラムの開発を支援するプログラム開発支援装置におけるプログラム開発支援方法であって、
    前記プログラムを解析して前記プログラムに含まれる関数の関数情報と、オフロード先のコアを特定する情報との対応付けを設定するユーザインターフェイスとなる一覧表と、前記オフロード対象の関数が実行されるコアの有効/無効を示す情報を含む関数定義体と、を作成する作成手順と、
    設定された前記コアからオフロード対象の関数を特定し、前記オフロード対象の関数に関数情報に基づきオフロードするための記述を挿入する挿入手順と、を実行するプログラム開発支援方法。
JP2009292193A 2009-12-24 2009-12-24 プログラム開発支援装置及びプログラム開発支援方法 Active JP5456457B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009292193A JP5456457B2 (ja) 2009-12-24 2009-12-24 プログラム開発支援装置及びプログラム開発支援方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009292193A JP5456457B2 (ja) 2009-12-24 2009-12-24 プログラム開発支援装置及びプログラム開発支援方法

Publications (2)

Publication Number Publication Date
JP2011134055A JP2011134055A (ja) 2011-07-07
JP5456457B2 true JP5456457B2 (ja) 2014-03-26

Family

ID=44346725

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009292193A Active JP5456457B2 (ja) 2009-12-24 2009-12-24 プログラム開発支援装置及びプログラム開発支援方法

Country Status (1)

Country Link
JP (1) JP5456457B2 (ja)

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5119590B2 (ja) * 2005-11-10 2013-01-16 富士通セミコンダクター株式会社 マルチプロセッサを有するプロセッサ装置用のタスク分配プログラム及びタスク分配装置
JP5076381B2 (ja) * 2006-07-07 2012-11-21 富士通セミコンダクター株式会社 ソフトウェア開発装置及びソフトウェア開発方法

Also Published As

Publication number Publication date
JP2011134055A (ja) 2011-07-07

Similar Documents

Publication Publication Date Title
KR101150003B1 (ko) 소프트웨어 개발 툴 생성 방법
JP3579823B2 (ja) キャラクタ・ストリングを表示する方法
RU2422890C2 (ru) Создание ресурса с использованием онтологий
US10331824B2 (en) Dynamically loaded system-level simulation
EP3338179B1 (en) Graphical representation of data in a program code editor
RU2412474C2 (ru) Способ и система для создания, хранения, управления и потребления специфичных культуре данных
US20080320282A1 (en) Method And Systems For Providing Transaction Support For Executable Program Components
US9672084B2 (en) Method of generating automatic code for remote procedure call
JP2003050715A (ja) コンパイラおよびデバッグ装置
US8214810B2 (en) Method of compiling source code, compiler, computer system, and computer program product
Fox Improved tool support for machine-code decompilation in HOL4
US20180052667A1 (en) Emulation device, emulation method, and recording medium storing emulation program
US7987457B2 (en) Targeted patching for native generation images
JPH10254689A (ja) クライアント・サーバシステムのアプリケーション構成設計支援方式
CN114138376B (zh) 一种在应用中加载插件的方法、计算设备及存储介质
JP2000040005A (ja) プログラム変換装置
US8276132B1 (en) System and method for representing and managing a multi-architecture co-processor application program
JP5456457B2 (ja) プログラム開発支援装置及びプログラム開発支援方法
Lyu et al. A procedure-based dynamic software update
JP4678770B2 (ja) シーケンス図作成方法及びその装置
KR101527578B1 (ko) 소프트웨어 개발 장치 및 그 방법
US8347310B1 (en) System and method for representing and managing a multi-architecure co-processor application program
US8281294B1 (en) System and method for representing and managing a multi-architecture co-processor application program
JP2010003171A (ja) デバッグ支援装置
JP2014206948A (ja) エントリーポイント抽出装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120911

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130426

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130507

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130702

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130813

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20130822

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131007

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20131210

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140108

R150 Certificate of patent or registration of utility model

Ref document number: 5456457

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250