JP2007133620A - マルチプロセッサを有するプロセッサ装置用のタスク分配プログラム及びタスク分配装置 - Google Patents

マルチプロセッサを有するプロセッサ装置用のタスク分配プログラム及びタスク分配装置 Download PDF

Info

Publication number
JP2007133620A
JP2007133620A JP2005325521A JP2005325521A JP2007133620A JP 2007133620 A JP2007133620 A JP 2007133620A JP 2005325521 A JP2005325521 A JP 2005325521A JP 2005325521 A JP2005325521 A JP 2005325521A JP 2007133620 A JP2007133620 A JP 2007133620A
Authority
JP
Japan
Prior art keywords
task
source program
processor
distributed
program
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2005325521A
Other languages
English (en)
Other versions
JP5119590B2 (ja
Inventor
Masaomi Teranishi
正臣 寺西
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2005325521A priority Critical patent/JP5119590B2/ja
Priority to US11/376,126 priority patent/US7861240B2/en
Publication of JP2007133620A publication Critical patent/JP2007133620A/ja
Application granted granted Critical
Publication of JP5119590B2 publication Critical patent/JP5119590B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • G06F8/456Parallelism detection

Abstract

【課題】シングルプロセッサ用に開発されたソースプログラムをマルチプロセッサを有するプロセッサ装置用に簡単に移植する。
【解決手段】シングルプロセッサ用のソースプログラムSP0を複数のプロセッサを有するマルチプロセッサ装置用のプログラムに変換するタスク分配プログラムにおいて,メモリ内に格納された定義ファイルであって,ソースプログラムSP0のタスクに対してマルチプロセッサ装置のいずれかのプロセッサを対応付けた定義ファイルDFを参照して,ソースプログラムSP0の複数のタスクを複数のプロセッサに分配した分配ソースプログラムSP11,SP12を生成する。そして,分配されたタスクに,当該タスクによる処理対象タスクのプロセッサIDを引数として追加する。
【選択図】図3

Description

本発明は,シングルプロセッサ用に開発されたソースプログラムをマルチプロセッサを有するプロセッサ装置用に移植する時に利用するタスク分配プログラム及びタスク分配装置に関する。
近年のプロセッサ装置は,複数のプロセッサを内蔵するプロセッサチップまたはプロセッサチップセットで構成される。マルチプロセッサにすることでタスクの実行時間を短くすることができる。そのため,近年において,従来のシングルプロセッサ装置をマルチプロセッサを有するプロセッサ装置に置き換えてよりパワフルなプロセッサシステムにすることが行われている。
特許文献1には,複数のプロセッサ(CPU)によって一つのソースプログラムを実行するマルチプロセッサシステムが記載されている。この特許文献1によれば,複数のプロセッサがバスなどのプロセッサ間結合装置によって結合され,バスには共有メモリ及び入出力制御装置が接続される。そして,タスク割付プログラムがインストールされ,そのタスク割付プロセッサがソースプログラムの複数のタスクをいずれかのプロセッサに割り付けて,プログラムの実行効率が向上するか否かを判定し,実行効率が向上するようにタスクの割付を行う。
特開2004−171234号公報
しかしながら,特許文献1のマルチプロセッサシステムは,例えば複数のパーソナルコンピュータにソースプログラムの複数のタスクを割り付けするものであり,プロセッサチップやプロセッサチップセットなどのように各プロセッサの専用のメモリ内に実行すべきプログラムを格納する構成ではない。マルチプロセッサチップやチップセットでは,各プロセッサが専用のメモリ空間を有し,それぞれのメモリ空間内のプログラムコードを実行するので,共通のソースプログラムのタスクを順番に割り付けて実行する方法は適切ではない。
さらに,特許文献1のマルチプロセッサシステムでは,共通のソースプログラムの実行中に,ソースプログラム内のタスクを複数のプロセッサに適切に割付を行うものである。このようにソースプログラムの実行時にタスク割付を並行して行うと,プログラムの実行時間が長くなり,プロセッサチップやプロセッサチップセットに適した方法とは言えない。
そこで,本発明の目的は,シングルプロセッサ用に開発されたソースプログラムをマルチプロセッサを有するプロセッサ装置用に簡単に移植することができるタスク分配プログラム及びタスク分配装置を提供することにある。
上記の目的を達成するために,本発明の第1の側面によれば,シングルプロセッサ用のソースプログラムを複数のプロセッサを有するマルチプロセッサ装置用のプログラムに変換するタスク分配プログラムにおいて,メモリ内に格納された定義ファイルであって,前記ソースプログラムのタスクに対して前記マルチプロセッサ装置のいずれかのプロセッサを対応付けた定義ファイルを参照して,前記ソースプログラムを,当該ソースプログラムの複数のタスクを前記複数のプロセッサに分配した分配ソースプログラムに変換し,当該分配されたタスクに,当該タスクによる処理対象タスクのプロセッサIDを引数として追加するタスク分配手段をコンピュータに構築させることを特徴とする。また,上記タスク分配プログラムがインストールされたタスク分配装置である。
上記の発明のタスク分配プログラムまたはタスク分配装置によれば,シングルプロセッサ用のソースプログラムの複数のタスクを,定義ファイルの対応付けに基づいて,複数のプロセッサに分配した分配ソースプログラムに変換すると共に,分配されたタスクにその引数として,当該タスクが処理する対象タスクの分配先プロセッサIDを追加するので,マルチプロセッサ装置用に簡単に移植することができる。
以下,図面にしたがって本発明の実施の形態について説明する。但し,本発明の技術的範囲はこれらの実施の形態に限定されず,特許請求の範囲に記載された事項とその均等物まで及ぶものである。
図1は,シングルプロセッサ装置からマルチプロセッサ装置にリプレースする場合のプログラムの移植を説明する図である。シングルプロセッサ装置であるシングルプロセッサチップ100をマルチプロセッサ装置であるマルチプロセッサチップまたはチップセット200にリプレースする場合,シングルプロセッサ用に開発されたプログラム102をマルチプロセッサ装置用のプログラム202,212に移植または変換することが必要である。シングルプロセッサ装置100は,1つのプロセッサCPU0と,バス101を介して接続されるメモリMEM0とを有し,メモリMEM0内に,プログラム102とオペレーションシステム104とが格納されている。プログラム102は,ソースコードからコンフィグレータ,コンパイラ,リンカなどにより変換された実行可能なオブジェクトコードの形態で,読み出し専用メモリ(ROM)内に格納される。
一方,マルチプロセッサ装置200は,例えば2つのプロセッサCPU1,CPU2と,それぞれのバス201,211を介して接続される専用のメモリMEM1,MEM2とを有する。そして,メモリMEM1内には,プロセッサCPU1が実行するプログラム202とオペレーションシステム204とが格納され,メモリMEM2内には,プロセッサCPU2が実行するプログラム212とオペレーションシステム214とが格納される。そして,プロセッサ間には割込信号などの通信配線206が設けられる。したがって,各プロセッサCPU1,CPU2は,それぞれ専用の内部メモリMEM1,2に対して専用のメモリ空間を有し,そこに格納されているプログラム202,212をフェッチして実行する。
図1の例では,シングルプロセッサ用のプログラム102が4つのタスクtask1〜task4を有し,それぞれタスクtask1,3がプロセッサCPU1に分配され,タスクtask2,4がプロセッサCPU2に分配されている。マルチプロセッサ装置200によれば,マルチプロセッサCPU1,2が,それぞれ分配されたタスクを実行することで,シングルプロセッサ装置100より高速に処理を行うことができる。
しかしながら,シングルプロセッサ用に開発されたプログラムのリソースを,マルチプロセッサ装置用に移植する作業は単純ではない。通常は,人的パワーを利用して,シングルプロセッサ用のソースプログラムを複数プロセッサに分配し,それぞれ分配されたソースプログラムのソースコードを,コンパイラ,リンカなどにより実行可能なオブジェクトコードに変換する。
図2は,一般的なプログラムの移植処理を説明するための図である。図の左から右に向かって移植処理が行われる。破線で囲まれた工程S10が移植処理に必要なタスク分配処理である。シングルプロセッサ用に開発されたソースプログラムSP0の複数のタスクを,プロセッサCPU1とプロセッサCPU2とに分配してソースプログラムSP1とSP2とを生成する。この分配は人手によって行う。分配作業では,タスクの種類やプロセッサCPU1,CPU2の負荷のバランスなどを考慮して各タスクを最適と思われるプロセッサ側に分配する。そして,分配されたソースプログラムSP1,SP2のソースコードをコンフィグレータ11,12に与えると,コンフィグレータ11,12が,それぞれのタスクに対してタスクの属性(動作条件など)を有する定義ファイルDF1,DF2を参照し,中間ファイルF11,F12を生成する。このように工程S10では,各プロセッサに分配された中間ファイルF11,F12が生成される。
この中間ファイルF11,F12は,ソースプログラムSP1,SP2のソースコードと,それに含まれるタスクの定義ファイルとを有する。この中間ファイルF11,F12がコンパイラ20によりそれぞれオブジェクトコードF21,F22に変換され,さらに,リンカ31,32によりオペレーションシステム内のライブラリコードLIBをオブジェクトコードF21,F22にリンクして,実行可能なオブジェクトコードF31,F32に変換される。上記の一連のビルドにより実行可能なオブジェクトコードが生成され,それがマルチプロセッサ装置200A,200Bの各プロセッサCPU1,CPU2の内部メモリMEM1,MEM2内にロードされる。
しかしながら,ソースプログラムSP0をソースプログラムSP1,SP2に分配する作業は必ずしも単純ではなく,異なるプロセッサで実行されるタスクに対する処理を行うタスクには異なるプロセッサを識別する引数が必要であり,共通の変数を有するタスクの順番が入れ替わると処理結果が不適切になるなど種々の留意すべきことがある。したがって,過去に開発した膨大なシングルプロセッサ用のソースプログラムをマルチプロセッサ用のプログラムに変換するプログラムツールが求められる。
[第1の実施の形態]
図3は,本実施の形態におけるタスク分配装置の構成図である。このタスク分配装置は,プロセッサユニット12にバスBUSを介してキーボードやマウスなどの入力手段14と,モニタ16と,内部メモリ18と,コンフィグレータプログラムファイル11とが接続されている。このプログラムファイルは通常メモリ内にインストールされている。そして,シングルプロセッサ用に開発されているソースプログラムSP0のソースコードと,各タスクに対応してマルチプロセッサ装置のいずれのプロセッサで処理させるかの対応付けを定義した定義ファイルDFとが供給される。プロセッサユニット12は,コンフィグレータプログラム11を実行して,ソースプログラムSP0の複数のタスクを複数のプロセッサに分配した分配ソースプログラムSP11,SP12のソースコードに変換する。コンフィグレータプログラム11を実行することで,プロセッサユニット12は,図2と同様に,分配されたソースコードSP11,SP12にそれぞれのタスクの定義ファイルDF11,DF12を付加した中間ファイルF11,F12を生成する。
図3のタスク分配装置には,コンフィグレータプログラム11に加えて,コンパイラ,リンカのプログラムファイル,オペレーションシステムのファイルが設けられ,プロセッサユニット12がそれらを実行することで,コンパイル,リンク処理を行うようにしても良い。
図4は,本実施の形態におけるビルド処理フローを示す図である。ビルドとは,プログラム開発においてソースプログラム(ソースコード)をコンパイルし,実行プログラム(実行形式のオブジェクトコード)を作成することであり,コンフィグレータ,コンパイラ,リンカによる一連の処理からなる。シングルプロセッサ用のソースプログラムSP0をマルチプロセッサ用の実行プログラムF31,F32に変換するために,最初に,ソースプログラムSP0に含まれるタスクについての定義ファイルDFが作成される。この定義ファイルDFは,図2に示したタスク毎の動作条件などの属性データに加えて,どのタスクをどのプロセッサに実行させるかの対応付けデータを含む。
コンフィグレータ11は,シングルプロセッサ用のソースプログラムSP0のソースコードを,定義ファイルDFに定義されたタスクと実行プロセッサとの対応を参照して,ソースプログラムSP0の複数のタスクをマルチプロセッサ装置の複数のプロセッサに分配する。図4の例では,ソースプログラムSP0の3つのタスクtask1〜3の2つのタスクtask1,3がプロセッサCPU1に,1つのタスクtask2がプロセッサCPU2にそれぞれ分配されている。同時に,コンフィグレータ11は,後述するとおり分配されたタスクに,そのタスクの処理対象タスクが分配されたプロセッサIDを引数として追加する。つまり,ソースプログラムSP0のタスクを単純に分離するだけでなく,分離に伴う必要なプログラムの変更を実行する。さらに,共通の変数を有する複数のタスクが異なるプロセッサに分配された場合に警告を出力する。この点については,後で具体例により説明する。
コンフィグレータ11は,図3で説明したとおり,分配ソースプログラムSP11,SP12にそのソースプログラムのタスクの定義ファイルDF11,DF12を加えた中間ファイルF11,F12を出力する。
その後は,通常のビルドと同様に,中間ファイルF11,F12のソースコードはコンパイラ20によりオブジェクトコードに変換され,オブジェクトコードファイルF21,F22がリンカに与えられる。リンカ31,32は,与えられたオブジェクトコードF21,F22とオペレーションシステムファイルOSに予め用意されたライブラリコードLIBをリンクして,実行可能なオブジェクトコードF31,F32を生成する。これらの実行可能なオブジェクトコードF31,F32が,マルチプロセッサ装置200A,200Bの各プロセッサCPU1,CPU2のメモリMEM1,MEM2にインストールされる。
図5は,本実施の形態におけるコンフィグレータの動作を説明する具体例を示す図である。また,図6は,コンフィグレータによるコンフィグレーション処理の詳細フローチャート図である。図5に示したシングルプロセッサ用のソースプログラムSP0には,2つのタスクtask1,task2が含まれ,タスクtask1はスリープタスク(slp_tsk())で,タスクtask2はスリープしたタスクtask1をウエークアップするウエイクアップタスク(wup_tsk(1))である。なお,これらのソースプログラムの言語は,μITRON仕様準拠のOS下で動作するソースプログラム言語である。ウエイクアップタスクwup_tsk(1)は,どのスリープタスクに対する処理かを示す引数「1」(図中54)を有する。つまり,ウエイクアップタスクwup_tsk(1)はタスクtask1へのシステムコールである。
定義ファイルDFは,ソースプログラムSP0に含まれるタスク50をいずれのプロセッサにより処理させるかを示す対応データ52と,各タスクの属性データ56とを有する。属性データ56には,それぞれのタスク実行の条件など一般的な属性が含まれる。
コンフィグレータ11は,供給されるソースプログラムSP0のソースコードの各タスクを,定義ファイルのタスク50に対応付けられたプロセッサデータ52に基づいて,各プロセッサに分配し,分配ソースプログラムSP11,SP12を生成する。定義ファイルDFによれば,タスクtask1はプロセッサCPU1に,タスクtask2はプロセッサCPU2にそれぞれ対応付けられている。したがって,コンフィグレータ11は,プロセッサCPU11用の分配ソースプログラムSP11にタスクtask1を分配し,プロセッサCPU12用の分配ソースプログラムSP12にタスクtask2を分配する。
ただし,プロセッサCPU11に分配されたタスクtask2のウエイクアップタスクwup_tsk(1)の引数「1」(図中54)はタスクtask1を示すが,タスクtask1は異なるプロセッサCPU11に分配されている。したがって,コンフィグレータ11は,タスクtask2のウエイクアップタスクwup_tsk(1)の引数にプロセッサCPU1のIDデータ「CPU1」(図中58)を追加する。その結果,ウエイクアップタスクwup_tsk(1,CPU1)は,プロセッサCPU1に分配された分配プログラムSP11内のタスクtask1に対応するウエイクアップタスクであることを明示することになる。
コンフィグレータ11は,定義ファイルDFを参照して各タスクを各プロセッサに分配するが,共通の変数を有する複数のタスクが異なるプロセッサに分配されることは,複数のタスクの処理順序が逆になり変数に対する処理結果が異なる可能性があり好ましくない。そこで,コンフィグレータ11は,タスク分配処理において,共通の変数を有する複数のタスクが異なるプロセッサに分配された場合は,警告メッセージを出力する。上記の引数の追加処理とあわせて警告メッセージを出力できるようにするために,例えば,コンフィグレータ11は,分配されたタスクと,各タスクの処理の対象となっているタスクIDと,各タスクの変数との関係を示すテーブルを作成する。そして,コンフィグレータ11は,この関係テーブルを検索して,異なるプロセッサに分配されたタスクに対する処理を行うタスクに対しては,その異なるプロセッサのIDを引数として追加し,また,ある変数を含む複数のタスクが異なるプロセッサに分配されているかをチェックし必要な警告メッセージを出力する。
図6のフローチャートにしたがって本実施の形態におけるビルド内のコンフィグレーション処理S10について説明する。ビルドは,タスクの分配を含むコンフィグレーション処理S10と,コンパイル処理S12と,リンク処理S14とを有し,その結果,マルチプロセッサ装置の各プロセッサ毎に実行形式のオブジェクトコードファイルが出力される(S16)。
コンフィグレーション処理S10では,シングルプロセッサ用のソースプログラムSP0の各タスクに対して次の処理が行われる。まずコンフィグレータ11は,定義ファイルDFを検索して,タスクに対応付けられたプロセッサの対応データ52を参照して,各プロセッサCPU1,CPU2に分配する(S102)。そして,各プロセッサのソースファイルを作成し(S104,S114),各ソースファイルSP11,SP12にそれぞれのプロセッサに割り付けるタスクをソースプログラムSP0から抽出する(S106,S116)。
一例として図5のソースプログラムSP0の場合であれば,タスクtask1のスリープタスクslp_tsk()の場合は,定義ファイルDFでプロセッサCPU1に対応付けられているので,プロセッサCPU1用のソースファイルSP11に割り付けられる(S106)。また,タスクtask2のウエイクアップタスクwup_tsk(1)の場合は,定義ファイルDFでプロセッサCPU2に対応付けられているので,プロセッサCPU2用のソースファイルSP12に割り付けられる(S116)。
シングルプロセッサ用のソースプログラムSP0の全てのタスクが各プロセッサ用のソースファイルに割り付けられたあと,分配ソースプログラムSP11について,異なるプロセッサCPU2のタスクに対するシステムコールが含まれるか否かチェックされる(S108)。同様に分配ソースプログラムSP12についても,異なるプロセッサCPU1のタスクに対するシステムコールが含まれるか否かがチェックされる(S118)。図5の例では,分配ソースプログラムSP12のウエイクアップタスクwup_tsk(1)が,プロセッサCPU1のタスクtask1に対するシステムコールであるので,そのシステムコールにプロセッサCPU1の引数(図5の58)が追加される(S120)。分配ソースプログラムSP11においても,同様にプロセッサCPU2のタスクに対するシステムコールがあれば,それにプロセッサCPU2の引数が追加される。図5の例では,それが存在しないので引数の追加はない。
そして,最後に,各ソースプログラムSP11,SP12において,タスク内の変数が異なるプロセッサのタスクの変数と共通か否かがチェックされ,共通する変数が検出されると警告(ワーニング)メッセージが出力される(S112,S122)。
以上のコンフィグレーション処理S10により,シングルプロセッサ用のソースプログラムSP0の各タスクは,複数のプロセッサCPU1,CPU2用の分配ソースプログラムSP11,SP12に分配され,且つ,必要に応じて異なるプロセッサの引数が追加され,共通の変数を持つ複数のタスクが分離されたことが通知される。
上記の定義ファイルDFでは,所定のルールに基づいてタスクとプロセッサとの対応付けが行われる。または,アトランダムにタスクとプロセッサとの対応付けが行われても良い。そして,複数の定義ファイルが準備され,各定義ファイルに基づいて上記のコンフィグレーション処理によりタスクの分配が行われ,それぞれ分配されたソースプログラムから生成された実行可能なオブジェクトコードF31,F32がマルチプロセッサ装置200にインストールされる。各定義ファイルに対応するマルチプロセッサ装置200が実際にインストールされたオブジェクトコードを実行して,いずれの定義ファイルが最適であるかの評価が行われる。評価項目は,例えば,省電力性,処理の効率,処理速度などであり,一部の項目に基づいてまたは複数の項目に基づいて最適な定義ファイルが決定される。
以上のように,本実施の形態のタスク分配プログラムであるコンフィグレータを利用することにより,シングルプロセッサ用のソースプログラムから,マルチプロセッサの各プロセッサに分配された分配ソースプログラムを自動的に生成することができる。しかも,複数プロセッサに分配したことに伴って必要となるプロセッサのIDの引数が自動的に追加される。また,共通の変数を含む複数のタスクが異なるプロセッサに分離されたことを知らせる警告メッセージが出力されるので,処理結果が不適切になる可能性を検出することができる。
[第2の実施の形態]
第2の実施の形態では,コンフィグレータが定義ファイルを参照して,シングルプロセッサ用のソースプログラムの各タスクに対応付けられるプロセッサに応じて,ソースプログラムの各タスクのシステムコールの前後にif文とend文からなる条件文を追加し,一つの分配ソースプログラムを生成する。つまり,第1の実施の形態では,コンフィグレータがタスクを各プロセッサに対応した分配ソースプログラムに分離し,複数プロセッサに分離された分配ソースプログラムファイルが生成される。それに対して,第2の実施の形態では,複数のプロセッサに共通の一つの分配ソースプログラムファイルが生成される。ただし,その分配ソースプログラムには,いずれのプロセッサで実行されるかを示すif文とend文からなる条件文が追加されている。したがって,コンパイラが変換したオブジェクトコードをif文にしたがって各プロセッサに分離して出力する。
図7は,第2の実施の形態における処理フローを示す図である。図4の第1の実施の形態と異なり,コンフィグレータ11が一つの中間ファイルF14を生成する。この中間ファイルF11の分配ソースプログラムには,シングルプロセッサ用のソースプログラムDP0内の各タスクのシステムコール(task1(),task2(),task3())の前後に,if文「#ifdef」とend文「#endif」とが追加され,if文の条件としていずれのプロセッサに分配されるかが定義ファイルDFを参照して決定される。また,中間ファイルF14は,図3と同様に分配ソースプログラムに定義ファイルが付加されている。
この中間ファイルF11は,図4と同様にコンパイラ20に供給され,プロセッサ毎のオブジェクトコードF21,F22を生成する。コンパイラ20は,分配ソースプログラムに追加されたif文の条件に基づいて,変換したオブジェクトコードを各プロセッサに分離して出力する。そして,リンカ30,32がコンパイルされたオブジェクトコードF12,F22にライブラリコードLIBをリンクして,実行可能なオブジェクトコードF313,F32を出力する。
図8は,第2の実施の形態におけるコンフィグレータの動作を説明する具体例を示す図である。また,図9は,コンフィグレータによるコンフィグレーション処理の詳細フローチャート図である。図8に示したシングルプロセッサ用のソースプログラムSP0も,図5と同様に,2つのタスクtask1,2が含まれ,タスクtask1はスリープタスク(slp_tsk())で,タスクtask2はウエイクアップタスク(wup_tsk(1))である。予め準備される定義ファイルDFは,図5と同じであり,各タスク(図中50)にプロセッサが対応付けられる(図中52)。
コンフィグレータ11は,ソースプログラムSP0の各システムコールの前後に,if文とend文の対60,62を追加して,分配ソースプログラムファイルを含む中間ファイルF14を出力する。このif文内のプロセッサの条件は,定義ファイルDFの対応付けデータ52に基づいて付加される。さらに,コンフィグレータ11は,第1の実施の形態と同様に,異なるプロセッサのタスクに対する処理を行うタスクに,その呼び出し元のプロセッサの引数(図中58)を追加する。さらに,コンフィグレータ11は,共通の変数を含む複数のタスクが,異なるプロセッサに分配されたか否かをチェックし,分配されている場合は警告メッセージを出力する。
図9のフローチャートにしたがって第2の実施の形態でのコンフィグレーション処理S10について説明する。ビルドのフローチャートは図6と同じである。そして,コンフィグレーション処理S10では,シングルプロセッサ用のソースプログラムSP0が与えられ,それに含まれるタスクについてコンフィグレーション処理が行われる。まず,定義ファイルが検索され(S100),タスクに対応付けられたプロセッサをチェックする(S102)。そして,ソースプログラムSP0のシステムコール(図8のtask1(),task2())の前後にif文とend文からなる条件文60,62を追加する。つまり,システムコール「task1()」の前にif文「#ifdef CPU1」を,後にend文「#endif」を追加する。また,システムコール「task2()」の前にif文「#ifdef CPU2」を,後にend文「#endif」を追加する。この条件文には,システムコール対象のタスクがいずれのプロセッサで処理されるかが条件として含まれる。
コンフィグレータ11は,上記の条件文の追加が終わった後に,生成された分配ソースプログラムに対して,異なるプロセッサCPUのタスクへのシステムコールが存在しないか否かを検索する(S132)。そして,かかるシステムコールが存在する場合は,そのシステムコールに読み出し元のプロセッサの引数を追加する(S134)。つまり,図8の例の図中58がタスクtask2のウエイクアップタスクwup_tsk(1)に新たな引数「CPU1」である。タスクtask2はプロセッサCPU2に分配されているが,ウエイクアップタスクの処理対象のスリープ状態のタスクはプロセッサCPU1に分配されているタスクtask1であるので,引数「CPU1」を追加してプロセッサCPU2がプロセッサCPU1のタスクtask1に対してウエイクアップタスクを実行できるようにする。
コンフィグレータ11は,分配ソースプログラムにおいて,タスク内の変数が異なるプロセッサに分配されたタスクの変数と共通するか否かをチェックする。もし共通する場合は,共通の変数を有する複数のタスクが異なるプロセッサで所望の順番とは異なる順番で実行されて,不適切な結果が得られる可能性があるので,警告メッセージが出力される(S136)。これらの工程S132,134,136は,図6の工程S108,S110,S112やS118,S120,S122と同じである。
以上のように,第2の実施の形態では,コンフィグレータ11がソースプログラムSP0のタスクを分配するが,各タスクのシステムコール毎に条件文を追加した単一の分配ソースプログラムを出力する。そして,その分配ソースプログラムを含む中間ファイルF14が,コンパイラによって,分配されたプロセッサに対応する個々のオブジェクトコードファイルに変換される。
以上説明したコンフィグレータは,タスク分配機能を有するプログラムツールであり,タスクを複数のプロセッサに分配する場合に必要な,異なるプロセッサの引数の追加機能や,共通の変数を有するタスクが異なるプロセッサに分配されたことのチェック機能を有する。そして,コンフィグレータは,一般的なコンフィグレータと異なり,ソースプログラムに条件ファイルを付加するだけでなく,分配ソースプログラムに引数を追加したりして,マルチプロセッサ装置の複数のプロセッサに分配するときに必要な処理を自動的の実行する。このプログラムツールにより,シングルプロセッサ用のソースプログラムを,簡単にマルチプロセッサ装置用の実行可能なオブジェクトコードに変換することができ,プロセッサの移植作業の効率を高めることができる。
以上の実施の形態をまとめると,次の付記のとおりである。
(付記1)シングルプロセッサ用のソースプログラムを複数のプロセッサを有するマルチプロセッサ装置用のプログラムに変換するタスク分配プログラムにおいて,
メモリ内に格納された定義ファイルであって,前記ソースプログラムのタスクに対して前記マルチプロセッサ装置のいずれかのプロセッサを対応付けた定義ファイルを参照して,前記ソースプログラムを,当該ソースプログラムの複数のタスクを前記複数のプロセッサに分配した分配ソースプログラムに変換し,当該分配されたタスクに,当該タスクによる処理対象タスクのプロセッサIDを引数として追加するタスク分配手段をコンピュータに構築させるタスク分配プログラム。
(付記2)付記1において,
前記タスク分配手段は,前記ソースプログラム内の共通の変数を有する複数のタスクが異なるプロセッサに分配された場合に,警告を出力することを特徴とするタスク分配プログラム。
(付記3)付記1において,
前記タスク分配手段は,前記分配ソースプログラムへの変換に際して,前記複数のプロセッサに分離された複数の分配ソースプログラムを生成することを特徴とするタスク分配プログラム。
(付記4)付記1において,
前記タスク分配手段は,前記分配ソースプログラムへの変換に際して,前記ソースプログラムの複数のタスクそれぞれに対して,前記分配されたプロセッサを条件とする条件文を追加して前記分配ソースプログラムを出力することを特徴とするタスク分配プログラム。
(付記5)付記4において,
更に,前記タスク分配手段が変換した分配ソースプログラムのソースコードを,前記複数のプロセッサのオブジェクトコードに変換するコンパイラ手段と,
前記複数のプロセッサのオブジェクトコードに,対応するプロセッサのライブラリコードをリンクさせて実行可能なオブジェクトコードに変換するリンカ手段とをコンピュータに構築させると共に,
前記コンパイラ手段は,前記条件文の条件に基づいて,前記分配ソースプログラム内の複数のタスクのソースコードを,複数のプロセッサに分離したオブジェクトコードに変換することを特徴とするタスク分配プログラム。
(付記6)付記1において,
更に,前記タスク分配手段が変換した分配ソースプログラムのソースコードを,前記複数のプロセッサのオブジェクトコードに変換するコンパイラ手段と,
前記複数のプロセッサのオブジェクトコードに,対応するプロセッサのライブラリコードをリンクさせて実行可能なオブジェクトコードに変換するリンカ手段とをコンピュータに構築させるタスク分配プログラム。
(付記7)付記6において,
前記定義ファイルは,タスクに対応して属性データを有し,
前記タスク分配手段は,前記定義ファイルから抽出した前記分配ソースプログラム内のタスクの属性データを当該分配ソースプログラムに加えた中間ファイルを出力することを特徴とするタスク分配プログラム。
(付記8)シングルプロセッサ用のソースプログラムを複数のプロセッサを有するマルチプロセッサ装置用に変換するタスク分配装置において,
前記ソースプログラムのタスクに対して前記マルチプロセッサ装置のいずれかのプロセッサを対応付けた定義ファイルを格納する定義ファイルメモリと,
前記定義ファイルを参照して,前記ソースプログラムを,当該ソースプログラムの複数のタスクを前記複数のプロセッサに分配した分配ソースプログラムに変換し,当該分配されたタスクに,当該タスクによる処理対象タスクのプロセッサIDを引数として追加するタスク分配手段とを有するタスク分配装置。
(付記9)付記8において,
前記タスク分配手段は,前記ソースプログラム内の共通の変数を有する複数のタスクが異なるプロセッサに分配された場合に,警告を出力することを特徴とするタスク分配装置。
(付記10)付記8において,
前記タスク分配手段は,前記分配ソースプログラムへの変換に際して,前記複数のプロセッサに分離された複数の分配ソースプログラムを生成することを特徴とするタスク分配装置。
(付記11)付記8において,
前記タスク分配手段は,前記分配ソースプログラムへの変換に際して,前記ソースプログラムの複数のタスクそれぞれに対して,前記分配されたプロセッサを条件とする条件文を追加して前記分配ソースプログラムを出力することを特徴とするタスク分配装置。
(付記12)付記11において,
更に,前記タスク分配手段が変換した分配ソースプログラムのソースコードを,前記複数のプロセッサのオブジェクトコードに変換するコンパイラ手段と,
前記複数のプロセッサのオブジェクトコードに,対応するプロセッサのライブラリコードをリンクさせて実行可能なオブジェクトコードに変換するリンカ手段とをコンピュータに構築させると共に,
前記コンパイラ手段は,前記条件文の条件に基づいて,前記分配ソースプログラム内の複数のタスクのソースコードを,複数のプロセッサに分離したオブジェクトコードに変換することを特徴とするタスク分配プログラム。
シングルプロセッサ装置からマルチプロセッサ装置にリプレースする場合のプログラムの移植を説明する図である。 一般的なプログラムの移植処理を説明するための図である。 本実施の形態におけるタスク分配装置の構成図である。 本実施の形態におけるビルド処理フローを示す図である。 本実施の形態におけるコンフィグレータの動作を説明する具体例を示す図である。 コンフィグレータによるコンフィグレーション処理の詳細フローチャート図である。 第2の実施の形態における処理フローを示す図である。 第2の実施の形態におけるコンフィグレータの動作を説明する具体例を示す図である。 コンフィグレータによるコンフィグレーション処理の詳細フローチャート図である。
符号の説明
SP0:シングルプロセッサ用のソースプログラム
SP11,SP12:マルチプロセッサ用分配ソースプログラム
DF:定義ファイル
11:コンフィグレータ,タスク分配プログラム
12:プロセッサユニット

Claims (9)

  1. シングルプロセッサ用のソースプログラムを複数のプロセッサを有するマルチプロセッサ装置用のプログラムに変換するタスク分配プログラムにおいて,
    メモリ内に格納された定義ファイルであって,前記ソースプログラムのタスクに対して前記マルチプロセッサ装置のいずれかのプロセッサを対応付けた定義ファイルを参照して,前記ソースプログラムを,当該ソースプログラムの複数のタスクを前記複数のプロセッサに分配した分配ソースプログラムに変換し,当該分配されたタスクに,当該タスクによる処理対象タスクのプロセッサIDを引数として追加するタスク分配手段をコンピュータに構築させるタスク分配プログラム。
  2. 請求項1において,
    前記タスク分配手段は,前記ソースプログラム内の共通の変数を有する複数のタスクが異なるプロセッサに分配された場合に,警告を出力することを特徴とするタスク分配プログラム。
  3. 請求項1において,
    前記タスク分配手段は,前記分配ソースプログラムへの変換に際して,前記複数のプロセッサに分離された複数の分配ソースプログラムを生成することを特徴とするタスク分配プログラム。
  4. 請求項1において,
    前記タスク分配手段は,前記分配ソースプログラムへの変換に際して,前記ソースプログラムの複数のタスクそれぞれに対して,前記分配されたプロセッサを条件とする条件文を追加して前記分配ソースプログラムを出力することを特徴とするタスク分配プログラム。
  5. 請求項4において,
    更に,前記タスク分配手段が変換した分配ソースプログラムのソースコードを,前記複数のプロセッサのオブジェクトコードに変換するコンパイラ手段と,
    前記複数のプロセッサのオブジェクトコードに,対応するプロセッサのライブラリコードをリンクさせて実行可能なオブジェクトコードに変換するリンカ手段とをコンピュータに構築させると共に,
    前記コンパイラ手段は,前記条件文の条件に基づいて,前記分配ソースプログラム内の複数のタスクのソースコードを,複数のプロセッサに分離したオブジェクトコードに変換することを特徴とするタスク分配プログラム。
  6. シングルプロセッサ用のソースプログラムを複数のプロセッサを有するマルチプロセッサ装置用に変換するタスク分配装置において,
    前記ソースプログラムのタスクに対して前記マルチプロセッサ装置のいずれかのプロセッサを対応付けた定義ファイルを格納する定義ファイルメモリと,
    前記定義ファイルを参照して,前記ソースプログラムを,当該ソースプログラムの複数のタスクを前記複数のプロセッサに分配した分配ソースプログラムに変換し,当該分配されたタスクに,当該タスクによる処理対象タスクのプロセッサIDを引数として追加するタスク分配手段とを有するタスク分配装置。
  7. 請求項6において,
    前記タスク分配手段は,前記ソースプログラム内の共通の変数を有する複数のタスクが異なるプロセッサに分配された場合に,警告を出力することを特徴とするタスク分配装置。
  8. 請求項6において,
    前記タスク分配手段は,前記分配ソースプログラムへの変換に際して,前記複数のプロセッサに分離された複数の分配ソースプログラムを生成することを特徴とするタスク分配装置。
  9. 請求項6において,
    前記タスク分配手段は,前記分配ソースプログラムへの変換に際して,前記ソースプログラムの複数のタスクそれぞれに対して,前記分配されたプロセッサを条件とする条件文を追加して前記分配ソースプログラムを出力することを特徴とするタスク分配装置。
JP2005325521A 2005-11-10 2005-11-10 マルチプロセッサを有するプロセッサ装置用のタスク分配プログラム及びタスク分配装置 Active JP5119590B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2005325521A JP5119590B2 (ja) 2005-11-10 2005-11-10 マルチプロセッサを有するプロセッサ装置用のタスク分配プログラム及びタスク分配装置
US11/376,126 US7861240B2 (en) 2005-11-10 2006-03-16 Task distribution program and task distribution device for a processor device having multiprocessors

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005325521A JP5119590B2 (ja) 2005-11-10 2005-11-10 マルチプロセッサを有するプロセッサ装置用のタスク分配プログラム及びタスク分配装置

Publications (2)

Publication Number Publication Date
JP2007133620A true JP2007133620A (ja) 2007-05-31
JP5119590B2 JP5119590B2 (ja) 2013-01-16

Family

ID=38155232

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005325521A Active JP5119590B2 (ja) 2005-11-10 2005-11-10 マルチプロセッサを有するプロセッサ装置用のタスク分配プログラム及びタスク分配装置

Country Status (2)

Country Link
US (1) US7861240B2 (ja)
JP (1) JP5119590B2 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011134055A (ja) * 2009-12-24 2011-07-07 Fujitsu Semiconductor Ltd プログラム開発支援装置及びプログラム開発支援方法
JP2012530995A (ja) * 2009-06-26 2012-12-06 コードプレイ、ソフトウェア、リミテッド 処理方法
JP2016143377A (ja) * 2015-02-05 2016-08-08 株式会社デンソー 並列化コンパイル方法、並列化コンパイラ、及び、電子装置
JP2016143378A (ja) * 2015-02-05 2016-08-08 株式会社デンソー 並列化コンパイル方法、並列化コンパイラ、及び、電子装置

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9110692B2 (en) * 2001-03-22 2015-08-18 Frederick Master Method and apparatus for a compiler and related components for stream-based computations for a general-purpose, multiple-core system
CN101373434B (zh) * 2007-08-22 2012-01-25 国际商业机器公司 在多处理器系统中快速加载和运行程序映像的方法和系统
US8281294B1 (en) * 2007-11-12 2012-10-02 Nvidia Corporation System and method for representing and managing a multi-architecture co-processor application program
US8276132B1 (en) * 2007-11-12 2012-09-25 Nvidia Corporation System and method for representing and managing a multi-architecture co-processor application program
CN102929214A (zh) * 2011-08-11 2013-02-13 西门子公司 一种嵌入式多处理单元并行处理系统及其运行方法
US9047196B2 (en) * 2012-06-19 2015-06-02 Concurix Corporation Usage aware NUMA process scheduling
US9575813B2 (en) 2012-07-17 2017-02-21 Microsoft Technology Licensing, Llc Pattern matching process scheduler with upstream optimization
US11412041B2 (en) 2018-06-25 2022-08-09 International Business Machines Corporation Automatic intervention of global coordinator
RU2738730C1 (ru) * 2019-12-09 2020-12-16 Федеральное государственное казённое военное образовательное учреждение высшего образования "Военная академия воздушно-космической обороны имени Маршала Советского Союза Г.К. Жукова" Министерства обороны Российской Федерации Способ обеспечения отказоустойчивого функционирования перспективного комплекса средств автоматизации командных пунктов военного назначения и устройство, его реализующее
CN114579183B (zh) * 2022-04-29 2022-10-18 之江实验室 一种用于分布式计算的作业分解处理方法
US11907693B2 (en) 2022-04-29 2024-02-20 Zhejiang Lab Job decomposition processing method for distributed computing

Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01194032A (ja) * 1988-01-29 1989-08-04 Hitachi Ltd 並列コンパイル方法
JPH0380337A (ja) * 1989-04-28 1991-04-05 Hitachi Ltd 並列化装置
JPH03119428A (ja) * 1989-10-03 1991-05-21 Nec Corp 並列化手続き実行方式
JPH04364537A (ja) * 1991-06-12 1992-12-16 Hitachi Ltd 並列処理用プログラム最適化方法、装置およびコンパイラ
JPH064497A (ja) * 1992-06-17 1994-01-14 Seiko Epson Corp マルチプロセッサ処理装置
JPH06175857A (ja) * 1992-12-03 1994-06-24 Fujitsu Ltd プログラム生成処理装置
JPH07114516A (ja) * 1993-07-06 1995-05-02 Hitachi Ltd プログラム並列化方法
JPH09204299A (ja) * 1996-01-24 1997-08-05 Hitachi Ltd プログラム開発装置
JP2000048000A (ja) * 1998-07-29 2000-02-18 Nec Corp 並列実行方法及びプログラムを記録した機械読み取り可能な記録媒体
JP2001167060A (ja) * 1999-12-07 2001-06-22 Hitachi Ltd タスク並列化方法
JP2002259134A (ja) * 2001-03-02 2002-09-13 Internatl Business Mach Corp <Ibm> ポストリンク・コードの最適化方法及び装置
JP2004185271A (ja) * 2002-12-03 2004-07-02 Fujitsu Ltd プログラム分割方法とそれを実施するプログラム

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004094301A (ja) 2002-08-29 2004-03-25 Fuji Xerox Co Ltd 処理装置に組み込まれているソフトウェアの更新方法、更新制御装置、および更新装置
JP2004171234A (ja) 2002-11-19 2004-06-17 Toshiba Corp マルチプロセッサシステムにおけるタスク割り付け方法、タスク割り付けプログラム及びマルチプロセッサシステム
JP2004252508A (ja) * 2003-02-18 2004-09-09 Nec Corp 単一プロセッサ用ソフトウェアプログラムをマルチプロセッサ用ソフトウェアプログラムに変換する方法
JP2004334537A (ja) 2003-05-07 2004-11-25 Sony Corp プログラム処理システム及びプログラム処理方法、並びにコンピュータ・プログラム

Patent Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01194032A (ja) * 1988-01-29 1989-08-04 Hitachi Ltd 並列コンパイル方法
JPH0380337A (ja) * 1989-04-28 1991-04-05 Hitachi Ltd 並列化装置
JPH03119428A (ja) * 1989-10-03 1991-05-21 Nec Corp 並列化手続き実行方式
JPH04364537A (ja) * 1991-06-12 1992-12-16 Hitachi Ltd 並列処理用プログラム最適化方法、装置およびコンパイラ
JPH064497A (ja) * 1992-06-17 1994-01-14 Seiko Epson Corp マルチプロセッサ処理装置
JPH06175857A (ja) * 1992-12-03 1994-06-24 Fujitsu Ltd プログラム生成処理装置
JPH07114516A (ja) * 1993-07-06 1995-05-02 Hitachi Ltd プログラム並列化方法
JPH09204299A (ja) * 1996-01-24 1997-08-05 Hitachi Ltd プログラム開発装置
JP2000048000A (ja) * 1998-07-29 2000-02-18 Nec Corp 並列実行方法及びプログラムを記録した機械読み取り可能な記録媒体
JP2001167060A (ja) * 1999-12-07 2001-06-22 Hitachi Ltd タスク並列化方法
JP2002259134A (ja) * 2001-03-02 2002-09-13 Internatl Business Mach Corp <Ibm> ポストリンク・コードの最適化方法及び装置
JP2004185271A (ja) * 2002-12-03 2004-07-02 Fujitsu Ltd プログラム分割方法とそれを実施するプログラム

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012530995A (ja) * 2009-06-26 2012-12-06 コードプレイ、ソフトウェア、リミテッド 処理方法
US9471291B2 (en) 2009-06-26 2016-10-18 Codeplay Software Limited Multi-processor code for modification for storage areas
JP2011134055A (ja) * 2009-12-24 2011-07-07 Fujitsu Semiconductor Ltd プログラム開発支援装置及びプログラム開発支援方法
JP2016143377A (ja) * 2015-02-05 2016-08-08 株式会社デンソー 並列化コンパイル方法、並列化コンパイラ、及び、電子装置
JP2016143378A (ja) * 2015-02-05 2016-08-08 株式会社デンソー 並列化コンパイル方法、並列化コンパイラ、及び、電子装置

Also Published As

Publication number Publication date
US7861240B2 (en) 2010-12-28
JP5119590B2 (ja) 2013-01-16
US20070234313A1 (en) 2007-10-04

Similar Documents

Publication Publication Date Title
JP5119590B2 (ja) マルチプロセッサを有するプロセッサ装置用のタスク分配プログラム及びタスク分配装置
US11023285B2 (en) Acceleration method for FPGA-based distributed stream processing system
US8495603B2 (en) Generating an executable version of an application using a distributed compiler operating on a plurality of compute nodes
EP2143001B1 (en) Master and subordinate operating system kernels for heterogeneous multiprocessor systems
US20090172353A1 (en) System and method for architecture-adaptable automatic parallelization of computing code
US20120066668A1 (en) C/c++ language extensions for general-purpose graphics processing unit
JP2016129059A (ja) グラフに基づく計算の動的ロード
US8302082B2 (en) Methods and apparatus to provide a managed runtime environment in a sequestered partition
US8578389B1 (en) Method and system for merging directed acyclic graphs representing data flow codes
KR100694212B1 (ko) 다중-프로세서 구조에서 데이터 처리 수행성능을증가시키기 위한 분산 운영 시스템 및 그 방법
Lu et al. Demystifying the memory system of modern datacenter FPGAs for software programmers through microbenchmarking
US11301225B2 (en) Reducing application startup time by generating bytecode from metadata at build time
Cong et al. Heterogeneous datacenters: Options and opportunities
US10496433B2 (en) Modification of context saving functions
Costero et al. Energy efficiency optimization of task-parallel codes on asymmetric architectures
US20030126589A1 (en) Providing parallel computing reduction operations
ES2741131T3 (es) Procedimiento y dispositivo de optimización de ejecución de aplicaciones de software en una arquitectura multiprocesador que comprende varios controladores de entrada/salida y unidades de cálculo secundarias
EP2336883B1 (en) Programming system in multi-core environment, and method and program of the same
KR101748210B1 (ko) 분산 처리 시스템 및 분산 처리 시스템에서의 파일 처리 방법
JP4967555B2 (ja) マルチプロセッサシステム
Hironaka et al. Implementing VTA, a tensor accelerator on Flow-in-Cloud
Luecke Software Development for Parallel and Multi-Core Processing
CN115904344A (zh) 一种混合编程的方法和相关产品
Igual et al. Energy efficiency optimization of task-parallel codes on asymmetric architectures
JP2003280921A (ja) 並列性抽出装置

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20080731

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080821

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110513

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110517

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110708

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111213

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120210

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20120529

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120829

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20120905

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20121008

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20151102

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 5119590

Country of ref document: JP

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