JP5528568B2 - 並列プログラム制御 - Google Patents

並列プログラム制御 Download PDF

Info

Publication number
JP5528568B2
JP5528568B2 JP2012540344A JP2012540344A JP5528568B2 JP 5528568 B2 JP5528568 B2 JP 5528568B2 JP 2012540344 A JP2012540344 A JP 2012540344A JP 2012540344 A JP2012540344 A JP 2012540344A JP 5528568 B2 JP5528568 B2 JP 5528568B2
Authority
JP
Japan
Prior art keywords
program
processing units
time
control method
assigned
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
JP2012540344A
Other languages
English (en)
Other versions
JP2013511784A (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 ベックホフ オートメーション ゲーエムベーハー
Publication of JP2013511784A publication Critical patent/JP2013511784A/ja
Application granted granted Critical
Publication of JP5528568B2 publication Critical patent/JP5528568B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/042Programme control other than numerical control, i.e. in sequence controllers or logic controllers using digital processors
    • G05B19/0421Multiprocessor system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • G06F9/4825Interrupt from clock, e.g. time of day
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • G06F9/4887Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues involving deadlines, e.g. rate based, periodic
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/20Pc systems
    • G05B2219/22Pc multi processor system
    • G05B2219/2205Multicore
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/30Nc systems
    • G05B2219/34Director, elements to supervisory
    • G05B2219/34407Calculate elapsed time, store in counter, start task when time elapsed
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/30Nc systems
    • G05B2219/34Director, elements to supervisory
    • G05B2219/34411Handling time critical and time non critical program sequences

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Automation & Control Theory (AREA)
  • Executing Machine-Instructions (AREA)
  • Programmable Controllers (AREA)
  • Multi Processors (AREA)
  • Advance Control (AREA)
  • Power Sources (AREA)
  • Microcomputers (AREA)
  • Stored Programmes (AREA)

Description

本発明は、並列に動作する複数の処理ユニットにおける複数のプログラムの制御方法および上記プログラムを実行するための方法に関するものである。
機械及び設備は、メモリからプログラム可能な制御システム(SPS)に基づいて、しばしば制御される。この目的において、マイクロコンピュータは、機械又は設備のそれぞれに接続された、いくつかのセンサの状態に関わるプログラムを実行するために、及び、機械又は設備のそれぞれに接続された、いくつかのアクチュエータにアクセスするために、決定された状態に基づいて使用される。複合機械及び設備のそれぞれは、複数のセンサ及びアクチュエータを含み、マイクロコンピュータに高性能を要求する。
機械及び設備のそれぞれを制御するために、マイクロコンピュータはいくつかのプログラムをしばしば並列に実行する。プログラムは互いに作用するか、又は、互いに独立している。異なるプログラムは、例えば、センサの状態変化、又は、センサのサンプリングの頻度、場合によってはアクチュエータの数値の出力に対して最低限保障された応答時間に達したとき、マイクロコンピュータへ異なる要求を行なう。
コントロールシステムに対するさらなる要求は、一定の度合いに至るまで、マイクロコンピュータにおいてより早く刻時するマイクロプロセッサによって満たされる。しかしながら、物理的な状態のせいで、この種のパワー強化は望みどおりには増加しない。なぜなら、それらのパワーを増加させるために、従来のマイクロプロセッサは、大部分が、いくつかの並列に動作する演算コアに依存しているためである。1つの演算コアのみによって、機械制御のためのいくつかのプログラムの定義済みシーケンスを制御するために使用される従来の方法は、複数の演算コアへプログラムを分配することにほとんど適していない。
DE 196 48 422 C2は、機械制御のためのリアルタイム処理能力を有するプログラムに、および、タイムスライス制御によって非リアルタイム処理能力を有するオペレーティングシステムに、演算コアが利用できる演算時間を交互に分配する方法を提案している。提案されているタイムスライス制御は、所定時間量の満了により演算コアに割り込み(INT)を起こすためのプログラマブルタイマによって制御されている。オペレーティングシステムに割り当てられた演算時間は、制御プログラムに割り当てられた演算時間とは独立に定められる。
本発明の基本的な目的は、複数の並列に動作する処理ユニットにて機械制御のためのいくつかのプログラムを実行するための方法及びシステムを提供することにある。
本発明が解決しようとする課題は、請求項1の特徴を備えた制御方法と、請求項12の特徴を備えたシステムによって解決される。本発明の利点を示す実施形態は、従属請求項に示されている。
第1の実施形態において、時刻信号の生成器は、並列に動作する複数の処理ユニットのそれぞれに割り当てられ、プログラムを実行するための制御処理は、時刻信号の生成器が満了するときに、割り当てられた処理ユニットにて実行される。この中で、制御方法は、処理ユニットにて実行可能なプログラムを選択するステップと、所定の持続時間で満了する時刻信号の生成器を設定するステップと、処理ユニットにて選択されたプログラムを開始するステップとを含む。
このように、時刻信号の生成器によって制御された持続時間が満了した際、制御方法は、実行されたプログラムの変更を制御するために、処理ユニット上でそれぞれアクセスされる。このようにして、複数の処理ユニットを含む従来のマイクロプロセッサは、上述の処理ユニット上で実行される制御コマンドによって、マイクロプロセッサの処理ユニットの1つでのみ開始されるという条件で使用される。特に、複数の演算コアを含むx86型のマイクロプロセッサは上述のような方法で構成され、制御方法を実行するために有利に使用される。
従来の方法によると、マイクロプロセッサの2つ目の処理ユニットで実行されるプログラムの制御によって、マイクロプロセッサの1つ目の処理ユニットのプログラムの初期化を制御するために、2つの制御プログラムの間でのみならず、1つ目の処理ユニット上でのさらなるプログラム制御の開始を通常余儀なくさせるような、多くの時間と努力が必要となる。さらに同期化の試みが原因で、両方の処理ユニットは、比較的長い持続時間でマイクロプロセッサの他の実行プログラムを利用できない。結果として、マイクロプロセッサの全能力を使用できない。
実行可能なプログラムは、リアルタイム処理能力を有し、加えて、非リアルタイム処理能力を有するオペレーティングシステムが演算コアで実行されるために供給される。連続して同じ処理ユニットで制御方法が実行されたとき、リアルタイム処理能力を有するプログラムと非リアルタイム処理能力を有するオペレーティングシステムとは交互に選択される。
時刻信号の生成器に設定された所定の持続時間の選択に応じて、持続時間は、処理ユニットがプログラムまたはオペレーティングシステムのそれぞれに利用される間、選択されたプログラムまたはオペレーティングシステムのそれぞれに割り当てられる。従って、プログラムがアクセスされる間隔、プログラムを実行するための最大待機時間、および、以前にアクセスされたプログラムの処理に要する演算時間が影響される。プログラムの実行に並行して、非リアルタイム処理能力を有するオペレーティングシステムは、ハードディスクやディスプレイにプログラムデータをそれぞれ入力したり、出力したりするような標準タスクを実行するために使用される。オペレーティングシステムや、それによって制御されるプログラムは、それぞれ、1つまたはいくつかの演算コアで並行して実行される。
持続時間は制限なく自由に設定される。オペレーティングシステムの所定の持続時間とリアルタイム処理能力を有するプログラムの所定の持続時間とは、処理ユニットに割り当てられたサイクル時間となるように、互いに補完し合う。異なる処理ユニットは、異なる関連したサイクル時間を構成する。サイクル時間がオペレーティングシステムとリアルタイム処理能力を有するプログラムとに分配される比率は、例えば、パラメータに基づいて修正される。このパラメータは、プログラムにより制御された機械の可変な負荷状態を考慮するために、処理ユニットの動作中またはマイクロプロセッサの動作中のそれぞれにて修正可能である。
時刻信号の生成器の満了に所定の持続時間を設定するのに先立って、所定の持続時間は、予定された持続時間の満了が、異なる処理ユニットの時刻信号の生成器の予定された満了から、所定の持続時間未満だけ外れないような方法が適用される。これは、すなわち、制御方法は、同時に複数の制御ユニットにアクセスされないという保護措置となる。このことは、制御プログラムが、複数の処理ユニットで多くのプログラムを連携するために必要なタスクであって、制御プログラムのいくつかのインスタンスの同時実行を排除する、タスクをさらに実行した場合、特に有利である。そのようなタスクは、例えば、プログラムまたはオペレーティングシステムのそれぞれに共有資源を割り当てること、または、プログラム間通信を制御することを含んでもよい。
上述されたように所定の持続時間を調整することによって、処理ユニットの全体出力は、処理ユニットが制御プログラムを実行する前に待機しなければならないということを回避することによって、最大化される。
調整は、予定された持続時間の一時的な修正によってもたらされる。その代わりに、プログラムに割り当てられた持続時間は、調整がプログラムの後続の全てのアクセスにおいて効果を生じるように修正される。対応する演算コアのサイクル時間は、他の処理ユニットのサイクルとの衝突が持続的に起こらないようにするために、結果として変化する。特に、満了が周期的に衝突するサイクル時間は、それぞれ単独の場合にはおそらくない調整が行なわれ、避けられる。
さらなる実施形態において、制御方法は、制御方法のさらなるアクセスを許可にする最後のステップだけでなく、制御方法のさらなるアクセスを避ける先行のステップを含む。上述したように、制御方法が、複数の処理ユニット上で並列に実行されることがなければ、これらのステップは、処理エラーに対して付加的な保護手段として働く。
このように生成された、制御プログラムの同時多重アクセサビリティーによって、制御プログラムは、例えば、制御ユニットで動作するプログラムに活発にアクセスすることによって、例えば、時刻信号の生成器に関して非同期に起こるイベントに基づいてアクセスされる。
リストは、処理ユニット毎に割り当てられる。処理ユニットで実行可能なプログラムはリストに記載される。それから、プログラムの選択は、上述のリスト上に記載されたものから行われる。このように、個別のプログラムは、特定の処理ユニットに割り当てられる。並行して実行されることが好ましいプログラムは異なる処理ユニットに割り当てられる一方、順次に実行されることが好ましいプログラムは同じ処理ユニットに割り当てられる。このように、例えば多くのプログラムによって制御された機械によって引き起こされたプログラム間の依存関係は、考慮される。
プログラムの処理ユニットへの割り当ては、ユーザのシステムに関する知識が使用されるために、ユーザによって実行される。さらなる実施形態において、割り当ては、制御プログラムによって実行される。例えば、制御プログラムは、決定的な割り当て基準として、少なくとも1つの制御ユニットの過去の稼働率を使用する。制御プログラムによる割り当てによって、処理ユニットの一様な稼働率が達成される。処理ユニットが節電モードに設定されている場合に、プログラムまたはオペレーティングシステムのそれぞれの実行から処理ユニットの1つを部分的に、または完全に除外することもさらに可能である。
リストにおけるプログラムのエントリーは、プログラムの優先順位を含み、プログラムの選択は、優先順位に基づいて実行される。これによって、優先順位の高いプログラムが、演算コアから優先順位の低いプログラムを押し出すことを可能にする。優先順位を考慮することにより、制御機械に時間を供給することは、制御システムの自由度および信頼性の潜在的な増加に従う。リストは、演算コアのそれぞれによって局地的にのみ評価されるため、異なる優先順位を有するプログラムは、異なる演算コアで同時に実行される。
制御方法は、コンピュータプログラム製品の形をとってコンピュータシステム上で実行される、または、コンピュータ読み取り可能な記録媒体に格納される。
第2の実施形態によると、多くのプログラムを実行するシステムは、上述した制御方法だけでなく、複数の処理ユニット、および、それぞれの処理ユニットに対応する時刻信号の生成器を含む。処理ユニットは、集積回路によって構成される。特に、処理ユニットは、演算コア(コア)、または、例えばハイパースレッディングに用いられるような、仮想演算コアを含む。結果として、例えば、複雑な技術設備の制御が、互いに接続された複数のプログラムによってより効果的に達成されるために、集積回路上で処理ユニットの緊密な連結を作ることができる。
時刻信号の生成器は、クロック信号で動作するカウンタとして実装され、それぞれのカウンタは、カウンタが所定値に到達すると直ちに、関係する処理ユニット内で割り込み(INT)を起こす。特に、カウンタはカウントダウンされ、所定値はゼロである。そのようなカウンタは、複数の処理ユニットを含む従来のマイクロプロセッサですでに供給されている。
それぞれのカウンタは、すべてのカウンタにおいて共通のシステムクロックを、カウンタに割り当てられたクロック信号に分周するためのプログラム可能な分周器を含んでもよい。これによって、すべての持続時間は同じ時間基準に由来し、互いに既知の比率を有する。全く異なる要求のプログラムを処理するフレキシブルシステムを達成するために、カウンタがセットする値を選択すること、および、それに応じて関連する分周器をプログラミングすることにより、カウンタの持続時間は制限なくセットされる。
以下に、添付の図面を用いて、本発明を詳細に記述する。
制御技術設備の概略図である。 図1のプロセッサの概略図である。 図2のプロセッサにおける動作方法のフローチャートである。 図3の方法における処理テーブルの典型例である。 図2のプロセッサにおける設定持続時間終了の衝突を防ぐための種々のヒューリスティックである。
図1は、制御技術設備100の概略図である。制御技術設備100は、既知の方法で、メインメモリ120、ROM130、ディスプレイ140、および入力デバイス150と接続されたマイクロコンピュータ110を含んでいる。マイクロコンピュータ110は、少なくとも1つのマイクロプロセッサ(プロセッサ、CPU(central processing unit))と、電源、メインメモリ120およびROM130へのインタフェースのような、種々の付加的な部品とを通常含む。ディスプレイ140および入力デバイス150は、マイクロコンピュータをユーザに操作させるために供給される。マイクロコンピュータ110は、ネットワークインタフェース、および、該ネットワークインタフェースにさらに接続されたコンピュータシステムを介したアクセスによって、任意に、または付加的に使用される。ある実施形態においては、ディスプレイ140および出力デバイス150は、適宜省略されてもよい。
生産機160は、センサインタフェース170に接続された複数のセンサ165と、アクチュエータインタフェース180に接続された複数のアクチュエータ175とを含む。インタフェース170と180とは、それぞれ、マイクロコンピュータ110に接続される。リアルタイム処理能力を有するネットワークは、例えば、センサインタフェース170にセンサ165を接続するために、または、アクチュエータインタフェース180にアクチュエータ175を接続するために、および/または、EtherCatのように、マイクロコンピュータ110にインタフェース170および180を接続するために、供給される。
記載されている生産機160は、マイクロコンピュータ110によって制御される望ましい機械および設備を表している。生産機160は、例えば、CNC機械ツール、または、鉄をシート状にする圧延装置である。別の実施形態において、記載されているセンサ165およびアクチュエータ175の少なくともいずれかは含まれなくてもよい。センサ165は、アナログセンサおよびデジタルセンサの少なくともいずれかあり、例えば、パスセンサ、光センサ、温度センサ、速度センサ、音波センサ、またはその他のセンサの形式である。複雑な生産機160の場合、センサ165の数は100以上にもなる。アクチュエータ175は、アナログおよびデジタルアクチュエータ値の少なくともいずれかで実現され、例えば、バルブ、駆動、光および温度の制御、または他のアクチュエータの形式である。複雑な生産機160は、80以上の基軸を制御するためのアクチュエータを含む。
部品110〜150で構成されているコンピュータシステムは、センサ165をサンプリングし、サンプリングされた値に基づいてアクチュエータ175を制御する。生産機160の構成に基づいて、1つ以上のプログラムは、アクチュエータ175の起動を決定するためにコンピュータシステム110〜150で実行される。
図2は、図1のマイクロコンピュータ110のプロセッサ200の概略図である。プロセッサ120は、4つの演算コアC0−C3が配置されている、ハウジング210を含む。別の実施形態において、異なる数の演算コアC0−C3がプロセッサ200によって含まれる。プロセッサ200における演算コアC0−C3の代表的な数は、2,4,8,16,32である。プロセッサ200における演算コアC0−C3の数に上限は無いが、加えて、プロセッサ200中の演算コアの数は、必ずしも2の指数ではない。演算コアC0−C3は、プロセッサ200に物理的に実装されるか、またはハイパースレッディングのような仮想技術によって供給される。各演算コアC0−C3は、各演算コアC0−C3に割り当てられたカウンタT0−T3に接続されており、カウンタもまた、各演算コアC0−C3に割り当てられた分周器D0−D3に接続されている。分周器D0−D3の全ては、共通クロック生成器220に接続されている。クロック生成器220は、例えば、図1のマイクロコンピュータ110内に存在し、または別の実施形態では、プロセッサ200のハウジング210内に存在する。好ましい実施形態では、演算コアC0−C3にパルスを発生させるために使用されるクロック信号、および、クロック生成器220によって供給されたクロック信号は、共通クロック信号に由来する。
各演算コアC0−C3は、各演算コアC0−C3に割り当てられたカウンタT0−T3および分周器D0−D3に、書込み操作、および、望ましくはさらに読み取り操作のためにアクセスする。割り当てられた演算コアC0−C3によって実行される書込み操作によって、分周器D0−D3に除数がプログラムされ、クロック生成器220により供給されたクロック信号が、プログラムされた除数によって周波数に分けられ、その結果として得られるクロック信号がカウンタT0−T3のそれぞれに供給される。
カウンタT0−T3は、カウンタの状態がゼロに到達したときに、関連付けられた演算コアC0−C3に割り込みを起こす、減衰計である。減少の開始点であるカウンタの状態は、関連付けられた演算コアによってカウンタT0−T3に書き込まれる。好ましい実施形態として、カウンタT0−T3はまた、関連付けられた演算コアによって停止、および開始される。
分周器D0−D3およびカウンタT0−T3の、演算コアC0−C3とのつながりは、演算コアC1からC3のうちの1つで実行されるプログラムが、プログラムが実行されている演算コアC0−C3に関連付けられた分周器D0−D3およびカウンタT0−T3にアクセスするだけであると考えるとわかりやすい。関連付けられた分周器D0−D3およびカウンタT0−T3にアクセスするためのプログラムコマンドは、すべての演算コアC0−C3で同一である。プロセッサ200のアーキテクチャのために、異なる演算コアC0−C3の分周器D0−D3またはカウンタT0−T3へのアクセスは不可能である。
例えば、演算コアC1で実行されるプログラムが、演算コアC0に関連付けられたカウンタT0に書き込まれるためのものである場合、演算コアC1で実行されるプログラムは、演算コアC0で実行されるために演算コアの変更を確実に行わなければならない。または、演算コアC1で実行されるプログラムは、後続のプログラムがカウンタT0への所望のアクセスを実行するために、演算コアC0でさらに実行されるプログラムへ通知しなければならない。
割り込みが演算コアC0−C3の1つで起こった場合、制御プログラム(スケジューラー)は、例えば、割り込みベクトル予備設定や、対応する演算コアC0−C3で実行されるスケジューラー選択プログラムによって、演算コアC0−C3のそれぞれでアクセスされる。その後、制御プログラムは、割り当てられたカウンタT0−T3および割り当てられた分周器D0−D3の少なくともいずれかを再設定し、選択されたプログラムを開始する。このように、新しい割り込みが再び制御プログラムにアクセスする前に、選択されたプログラムに制限された演算時間のみを供給するタイムスライス機構が実装され、制御プログラムは、どのプログラムが次に続けられるものかを調べる。
制御プログラムは、すべての演算コアC0−C3で同じである。結果として、制御プログラムは、割り当てられたカウンタT0−T3によって最後に割り込まれた演算コアC0−C3に、演算コアC0−C3で実行可能なプログラムを割り当てる。このようにして、タイムスライス機構は、分配方法において複数の演算コアC0−C3で多くのプログラムを実行するために実装される。制御プログラムが実行される演算コアのそれぞれで局地的に実行されるプログラムを選択することによって、制御プログラムは、すべての演算コアC0−C3で効果的に実行され、従って、既に得ている演算コアC0−C3へのプログラムの負荷の配分と、単体の演算コアで実行される中央制御プログラムによってプロセッサ200で実行される全てのプログラムを制御するための複雑な方法は、もはや必要ではない。
図3は、図1のマイクロコンピュータ110における図2のプロセッサ200で実行される方法300のフローチャートである。方法300は、図2を参照して説明した制御プログラム(スケジューラー)の本質的なステップを表す。
最初のステップ305において、方法300は初期状態にある。ステップ305は、方法300が、例えば、図2のカウンタT0−T3のうち1つの割り込みによってアクセスされた後、方法300によって実行される最初のステップである。続くステップ310において、方法300はまず、方法300のいくつかのインスタンスが複数の演算コアC0−C3で並行して実行されることを防ぐために、方法300のさらなるアクセスをブロックする。ブロックは、例えば、同時に利用できないリソースへの演算コアC0−C3の競合アクセスの調整を提供する、セマフォまたは対応するレジスタなどの、プロセッサ200の既知の同期化機構によってもたらされる。ステップ310は、方法300が、演算コアC0−C3にプログラムの過度な割り当てを行うようなサービス、および、方法300の並行実行を禁止するようなサービスを供給したときのみ必要とされる。そのようなサービスは、例えば、読み出し専用メモリ130などの排他的に使用されるリソースを、演算コアC0−C3で実行されるプログラムへ割り当てることを含んでいる。演算コアC0−C3へのプログラムの単なる割り当てについては、多くの方法300を同時に実行することは異なる演算コアC0−C3で可能であり、ステップ310に記述されたブロックは必要ない。
続くステップ315において、リアルタイム処理能力を有するプログラム、または非リアルタイム処理能力を有するオペレーティングシステムが、演算コアC0−C3のそれぞれで次に実行されるかどうかが調べられる。方法300は、同じ演算コアC0−C3における方法300のアクセスが連続する場合、オペレーティングシステムおよびリアルタイム処理能力を有するプログラムが、交互に実行されるように構成される。リアルタイム処理能力を有するプログラムが実行される場合、方法200は、ステップ320に分岐し、方法300が実行される演算コアC0−C3に割り当てられたテーブルからのエントリーを選択する。当該エントリーは、詳細には図4を参照しながら後述するように、演算コアC0−C3で実行可能な多数の可能性のあるプログラムの1つを表す。
続くステップ325において、演算コアC0−C3にプログラムを新しく割り当てるために、方法300が、時間制御方法で再びアクセスされる前に、選択されたプログラムに持続時間が供給されることが決定される。
しかしながら、ステップ315において、オペレーティングシステムが実行されることが決定された場合、方法300は、ステップ330に分岐し、次に実行されるプログラムとしてオペレーティングシステムを選択する。オペレーティングシステムが他のプログラムを調整し、演算コアC0−C3の1つへのオペレーティングシステムの割り当ては、方法300によってではなく、オペレーティングシステム自身によって制御される。オペレーティングシステムに依存するこのようなプログラムは、方法300の制御プログラムによってオペレーティングシステムに供給される時間フレーム内で実行される。上述したステップ325と同様に、続くステップ335にて、実行するためにオペレーティングシステムに割り当てる持続時間が決定される。
ステップ325および335の少なくともいずれかが実行された後、方法は、定義された持続時間の満了が、タイマT0−T3の1つがプログラムされた異なる持続時間の満了と衝突するかどうかを調べるステップ340を続ける。この目的のために、すべてのカウンタT0−T3の満了時間は、各演算コアC0−C3によってアクセスされるメモリ領域に格納される。
この状況において、持続時間の満了が衝突することは、ステップ325または335の一方で決定される持続時間の満了が、所定の値よりも、タイマT0−T3の1つが満了する時間、および、方法300がアクセスされる時間に近いことを意味する。この所定の範囲は少なくとも、一時的な実行のために方法300によって通常必要とされる時間に対応する。
ステップ240が、所定の持続時間の満了と、別の持続時間の満了とが衝突すると判定する場合、所定の持続時間は、ステップ345において調整される。この目的のために、所定の持続時間は、所定の値だけ増減される。所定の持続時間を調整するためのステップ345で使用されるヒューリスティックもまた、カウンタT0−T3が割り込みを起こす時の周期性を考慮してもよい。ある実施形態において、ステップ340および345は、持続時間の調整により、衝突が起こらないことの保証が得られるまで、繰り返される。ステップ340および345のエンドレスループを防ぐための通常の保護ステップが使用されてもよい。
ステップ350において、方法300が実行される演算コアC0−C3と関連付けられるカウンタT0−T3は、所定の持続時間に対応する値に設定される。
最終的に、ステップ355において、方法300のさらなるアクセスが可能となり、ステップ320または330の一方で選択されたプログラムまたはオペレーティングシステムが開始されるために、ステップ310で設定されたブロックは除去される。選択されたプログラムまたはオペレーティングシステムのそれぞれが演算コアC0−C3で開始される前に、方法300が再開されないので、これらのアクションの両方がそれぞれ、ある単独のステップで実行されることが望ましい。
図4は、図3の方法300を使用するための典型的な処理テーブル400を示している。個々の処理テーブル400は、図2の各演算コアC0−C3が割り当てられる。処理テーブル400にプログラム410−450を入力することによって、それぞれの演算コアC0−C3へのプログラム410−450の割り当てが実行される。
プログラム410−450はテーブル400に記録される。入力されたプログラム410−450は、優先順位、待機時間、状態、および時間ステップ数が割り当てられる。優先順位とは、実行されるプログラム410−450の緊急性を表し、高い優先順位は高い緊急性に対応する。実行可能な多くのプログラムのうち、高い優先順位を有するプログラム410−450は、方法300の制御プログラムによって選択される。プログラム410−450の待機時間とは、プログラム410−450の連続的なアクセスの間にどれくらいの時間が経過するのかを表す。待機時間は、通常、演算コアC0−C3のために調整可能なシステムクロックの単位で表され、システムクロックは合計で10μsから100μs、望ましくは100μsから1msであればよい。ある実施形態において、システムクロックは、テーブル400に記録されたすべてのプログラム410―450の待機時間の最短時間に設定される。その上で、例えば、図1の生産機160に集積された別の処理システムとの通信を単純化するために、システムクロックと他のクロックとを同期させる。すなわち、複数の分配されたクロック生成器またはクロックのそれぞれが、異なる制御処理の時間基準を備える技術設備100のフレームワーク内で供給される。同期は、例えば、待機サイクルの挿入によって起こる。
プログラム410−450の状態とは、プログラム410−450が実行可能か、待機中か、または実行されているかどうかを表す。プログラム410−450の状態が“HIGH READY”である場合、長時間の実行待機中であり、実行の準備ができている。プログラム410−450が演算時間を必要とせず、その次のアクセスを待つ状態である場合、状態は“WAITING”である。プログラム410−450が実行されている場合、その状態は“EXECUTING”である。各プログラム410−450の時間ステップ数は、システムクロック毎に1つずつ減らされる。
プログラム410−450の時間ステップ数がゼロに到達した場合、プログラム410−450の状態は“HIGH READY”に設定される。しかしながら、プログラム410−450が図3の方法300の制御プログラムによって実行を選択されるまで、時間ステップはカウントされ続ける。続いて、プログラム410−450の状態が“EXECUTING”に設定され、プログラム410−450の時間ステップ数がその待機時間に設定される。
“WAITING”から“HIGH READY”へのプログラム410−450の状態の変更は、直ちに図2の演算コアC0−C3のうちの1つでプログラム410−450を実行するという結果になるわけではない。その代わり、プログラム410−450の状態は実行可能性を示しており、方法300の制御プログラムが次にアクセスするまでの間、状態が“HIGH READY”、かつ、その際に最も高い優先順位を有するプログラム410−450が実行される。
実行されたプログラム410−450が、タスクを完了し、次回にアクセスされるまでにさらなる演算時間を必要としない場合、プログラム410−450は、図3の方法300の制御プログラムにアクセスする。処理テーブル400におけるプログラム410−450の状態は“EXECUTING”から“WAITING”に設定される。
ある実施形態において、テーブル400または演算コアC0−C3のそれぞれへのプログラム410−450の割り当ては、方法300の制御プログラムによってもたらされる。制御プログラムは、プログラム410−450が選択されたときのアクセスのそれぞれを記録する。実行可能なプログラムが無いために、プログラム410−450が選択されない場合、演算コアのアイドル時間が記録される。制御プログラムは、記録された動作時間およびアイドル時間から演算コアの稼働率を決定するとともに、必要に応じて、他の演算コアC0−C3より低い稼働率の演算コアC0−C3へプログラム410−450を割り当てる。
最小数の演算コアC0−C3ができるだけ高い稼働率を示し、残りの演算コアC0−C3が全くまたは僅かしか使用されず省電力モードに移行されるように、割り当てが実行されてもよい。
さらなる実施形態において、テーブルまたは演算コアC0−C3のそれぞれへのプログラム410−450の割り当ては、マイクロコンピュータ110のユーザによって手動で実行される。上述したように、それにもかかわらず、方法300の制御プログラムは、ユーザによる割り当ての実行に基づいて、対応する記録エントリーを収集してもよい。支持手段として、記録されたデータは、例えば、リストまたはグラフィックの形式で処理される。別の実施形態において、複数の演算コアC0−C3の稼働率の度合いは時間の進行として、場合によっては、演算コアC0−C3の稼働率の平均と共に、ユーザに示される。テーブル400または演算コアC0−C3のそれぞれへのプログラム410−450の割り当ては、状態変動の調整またはマイクロコンピュータの要求を斟酌して、図1のマイクロコンピュータ110の動作中に変更されてもよい。
両方のアプローチはまた、例えば、テーブルまたは演算コアC0−C3のそれぞれへのいくつかのプログラム410−450の、ユーザによる手動での割り当てによって、および、テーブルまたは演算コアC0−C3それぞれへの他のプログラムの、方法300の制御プログラムによる自動での割り当てによって、並行して実行される。
図5は、図2のプロセッサ200で設定された持続時間の満了の衝突を防ぐための種々のヒューリスティックである。時間の進行は、横方向で表されている。縦方向において、プログラム410−450と、オペレーティングシステム510との実行シーケンスの4つの列が、典型例としての演算コアC0またはC1において示されている。暗領域はオペレーティングシステムの配置を表し、明領域はリアルタイム処理能力を有するプログラム410−450の具体例である。
明領域と暗領域との間での各変更では、図3における方法300の制御プログラムがアクセスされる。演算コアC0−C3のそれぞれにてオペレーティングシステムおよびリアルタイム処理能力を有するプログラム410−450に使用される時間と比較したとき、方法300の実行時間はとても小さく、図5の描写で表せない。
最初の列は、演算コアC0でのオペレーティングシステムと、リアルタイム処理能力を有するプログラム410−450との一連の配置を描いたものである。2番目の列は、演算コアC1でのオペレーティングシステムと、リアルタイム処理能力を有するプログラム410−450との、対応する一連の配置である。2つの列を繋ぐ縦の破線は、演算コアC0およびC1での方法300のアクセスが衝突する位置を示している。
3番目の列では、2番目の列の進行が、一定値だけ時間軸に沿ってシフトされている。このシフトは、プログラム410−450に割り当てられた持続時間が、図5(縦の破線)の描写の右端で衝突を防ぐために、所定の時間Δによって延長されることによって引き起こされる。時間Δの挿入は、1度だけ実行される。
4番目の列は、衝突防止のための別のアプローチを概説したものである。ここで、プログラム410−450に割り当てられた持続時間は、プログラム410−450に割り当てられた持続時間の満了時に、時間Δだけ延長される。
3番目の列に従った衝突防止のためのヒューリスティックは、他の演算コアC0における方法300の次のアクセスだけが考慮されるので、より簡単に見える。
4番目の列に従ったアプローチは、オペレーティングシステムに割り当てられた持続時間と、プログラム410−450に割り当てられた持続時間との合計としてもたらされるサイクル時間が、互いに補完されるという利点を有する。
最初および2番目の列の進行のサイクル時間比が、互いに関連しあうことによって、3番目および4番目の列のアプローチが、演算コアC0およびC1での方法300の一時的な衝突を防ぐために選択される。その上、例えば、最初の調整に直接依存しているサイクル時間をレンダリングすることによって、および、2度目の調整で互いに1度シフトし合うことによって、両方のヒューリスティックの組み合わせが可能である。

Claims (12)

  1. 各々が時刻信号の生成器(220、D0−D3、T0−T3)に対応付けられた、並列に動作する複数の処理ユニット(C0−C3)にてプログラム(410−450)を実行するための制御方法(300)であって、時刻満了時に、対応付けられた処理ユニット(C0−C3)にて実行され、
    上記処理ユニット(C0−C3)にて実行可能なプログラム(410−450)を選択するステップ(320)と、
    満了時刻信号の生成器(220、D0−D3、T0−T3)に所定の持続時間を設定するステップ(350)と、
    上記処理ユニット(C0−C3)にて選択されたプログラム(410−450)を開始するステップ(355)と
    上記所定の持続時間の満了が、異なる処理ユニット(C0−C3)に割り当てられた時刻信号の生成器(220、D0−D3、T0−T3)の予定された満了から、所定の持続時間未満だけ外れているかどうかを比較するステップ(340)と、
    外れていた場合は、上記所定の持続時間を修正するステップ(345)とを含むことを特徴とする制御方法(300)。
  2. 上記プログラム(410−450)が実行される処理ユニット(C0−C3)はリアルタイム処理能力を有し、ペレーティングシステム(510)がさらに実行可能であり、上記オペレーティングシステム(510)が実行される処理ユニット(C0−C3)は非リアルタイム処理能力を有し、同じ処理ユニット(C0−C3)における制御方法(300)を連続して実行するために、上記プログラム(410−450)と上記オペレーティングシステム(510)とを上記処理ユニット(C0−C3)が交互に選択ることを特徴とする請求項1に記載の制御方法(300)。
  3. 上記修正するステップは、固定値(Δ)でシフトすることを含むことを特徴とする請求項1に記載の制御方法(300)。
  4. 処理ユニット(C0−C3)に割り当てられたプログラム(410−450)が記載された、処理ユニット(C0−C3)毎に割り当てられたリスト(400)を含み、上記リスト(400)におけるエントリーに基づいて選択するステップ(320)が実行されることを特徴とする請求項1から3のいずれか1項に記載の制御方法(300)。
  5. それぞれのエントリーは優先順位を有し、優先順位に応じて上記選択するステップ(320)が実行されることを特徴とする請求項4に記載の制御方法(300)。
  6. 処理ユニット(C0−C3)のうちの少なくともいずれかの過去の稼働率に基づいて、上記リスト(400)のうちの1つにプログラム(410−450)を入力するステップをさらに含むことを特徴とする請求項4または5に記載の制御方法(300)。
  7. 請求項1〜6のいずれか1項に記載の制御方法(300)をコンピュータに実行させるためのコンピュータプログラムであって、コンピュータに上記各ステップを実行させるためのコンピュータプログラム。
  8. コンピュータ読み取り可能な記録媒体に格納された請求項7に記載のコンピュータプログラム。
  9. 複数の処理ユニット(C0−C3)におけるいくつかのプログラム(410−450)を実行するシステムであって、
    各々に時刻信号の生成器(220、D0−D3、T0−T3)が割り当てられた、複数の処理ユニット(C0−C3)を含み、
    上記処理ユニット(C0−C3)のうちの1つにて請求項1〜6のいずれか1項に記載の制御方法(300)が実行されることを特徴とするシステム。
  10. 上記処理ユニット(C0−C3)は集積回路(200)によって構成されることを特徴とする請求項9に記載のシステム。
  11. 時刻信号の生成器(220,D0−D3,T0−T3)は、クロック信号によって動作するカウンタ(T0−T3)を含み、それぞれのカウンタ(T0−T3)は、所定値に達すると直ちに時刻信号の生成器に割り当てられた処理ユニット(C0−C3)への割り込みを行うことを特徴とする請求項9または10に記載のシステム。
  12. それぞれのカウンタは、すべての分周器に共有されるクロック信号を、カウンタ(T0−T3)に割り当てられた個々のクロック信号に分ける、プログラム可能な分周器を含む請求項9から11のいずれか1項に記載のシステム。
JP2012540344A 2009-11-23 2010-10-26 並列プログラム制御 Active JP5528568B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
DE102009047024.7 2009-11-23
DE102009047024A DE102009047024A1 (de) 2009-11-23 2009-11-23 Parallelisierte Programmsteuerung
PCT/EP2010/066172 WO2011061046A1 (de) 2009-11-23 2010-10-26 Parallelisierte programmsteuerung

Publications (2)

Publication Number Publication Date
JP2013511784A JP2013511784A (ja) 2013-04-04
JP5528568B2 true JP5528568B2 (ja) 2014-06-25

Family

ID=43430790

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012540344A Active JP5528568B2 (ja) 2009-11-23 2010-10-26 並列プログラム制御

Country Status (6)

Country Link
US (1) US9128475B2 (ja)
EP (1) EP2504738B1 (ja)
JP (1) JP5528568B2 (ja)
CN (1) CN102667648B (ja)
DE (1) DE102009047024A1 (ja)
WO (1) WO2011061046A1 (ja)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101504137B1 (ko) * 2011-06-16 2015-03-24 엠파이어 테크놀로지 디벨롭먼트 엘엘씨 멀티 코어 환경에서의 프로세스 관리
DE102011090177A1 (de) * 2011-06-24 2012-12-27 Sms Siemag Ag Metallbearbeitungsanlage, insbesondere Walzwerk
DE102011107646A1 (de) * 2011-07-12 2013-01-17 Phoenix Contact Gmbh & Co. Kg Verfahren und System zur dynamischen Verteilung von Programmfunktionen in verteilten Steuerungssystemen
CN109634198B (zh) 2011-10-05 2021-06-22 奥普唐公司 用于监视和/或生成动态环境的方法、装置和系统
EP2781977B1 (en) * 2013-03-20 2016-10-12 Siemens Aktiengesellschaft Method and system for managing distributed computing in automation systems
CN105122158B (zh) * 2013-04-16 2017-12-22 西门子公司 具有短延迟时间的可编程控制装置
US9542230B2 (en) * 2013-05-15 2017-01-10 Apple Inc. System and method for selective timer coalescing
US9904575B2 (en) 2013-05-15 2018-02-27 Apple Inc. System and method for selective timer rate limiting
CN104656518A (zh) * 2015-02-02 2015-05-27 南阳理工学院 一种基于物联网的计算机时限控制器
CN105988437A (zh) * 2015-02-10 2016-10-05 张家港市宏鑫源科技有限公司 一种采用分布式控制系统的多级万能轧机
US9958933B2 (en) 2015-06-04 2018-05-01 Apple Inc. Opportunistic waking of an application processor
KR102079499B1 (ko) * 2015-10-20 2020-02-21 엘에스산전 주식회사 Plc 위치 결정 시스템의 축별 제어주기 독립 할당 방법
CN105356821B (zh) * 2015-11-19 2018-04-17 珠海格力电器股份有限公司 空调伺服驱动器的工作方法及伺服驱动器
US9910470B2 (en) * 2015-12-16 2018-03-06 Intel Corporation Controlling telemetry data communication in a processor
DE102016121542A1 (de) 2016-11-10 2018-05-17 Phoenix Contact Gmbh & Co. Kg Ablaufsteuerung von Programmmodulen
LU93299B1 (de) 2016-11-10 2018-06-13 Phoenix Contact Gmbh & Co Kg Intellectual Property Licenses & Standards Ablaufsteuerung von Programmmodulen
DE102017100655A1 (de) 2017-01-13 2018-07-19 Beckhoff Automation Gmbh Steuerung eines technischen Prozesses auf einer Mehr-Rechenkern-Anlage
US10947849B2 (en) * 2017-06-27 2021-03-16 General Electric Company Systems and methods for recontouring engine components

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2944093B2 (ja) * 1989-02-10 1999-08-30 日本電気株式会社 マルチプロセッサ形情報処理装置
JPH0319037A (ja) * 1989-06-16 1991-01-28 Nec Software Ltd タスク実行時間制御方式
JPH03164966A (ja) * 1989-11-24 1991-07-16 Nec Software Ltd 情報処理システム
JPH1074150A (ja) * 1996-06-28 1998-03-17 Fujitsu Ltd プロセススケジューリング方法ならびにそのためのプロセススケジューリング装置およびプログラム記憶媒体
DE19648422C2 (de) * 1996-11-22 2000-03-30 Hans Beckhoff Verfahren und Vorrichtung zum Implementieren eines echtzeitfähigen Steuerprogramms in einem nicht-echtzeitfähigen Betriebsprogramm
JPH11327928A (ja) * 1998-05-19 1999-11-30 Mitsubishi Electric Corp リアルタイムアプリケーション支援プログラムを記録したコンピュータ読み取り可能な記録媒体およびコンピュータシステム
DE50015549D1 (de) 1999-07-08 2009-03-26 Siemens Ag PC-System für Echtzeit- und Nicht-Echtzeitprogramme
US6957432B2 (en) * 2000-03-21 2005-10-18 Microsoft Corporation Real-time scheduler
US7058838B2 (en) * 2002-12-17 2006-06-06 Hewlett-Packard Development Company, L.P. System and method for synchronizing a plurality of processors in a multiprocessor computer platform employing a global clock counter
US20050210472A1 (en) * 2004-03-18 2005-09-22 International Business Machines Corporation Method and data processing system for per-chip thread queuing in a multi-processor system
WO2005099334A2 (en) * 2004-03-31 2005-10-27 Intel Corporation Event handling mechanism
US7461173B2 (en) * 2004-06-30 2008-12-02 Intel Corporation Distributing timers across processors
US20060004933A1 (en) * 2004-06-30 2006-01-05 Sujoy Sen Network interface controller signaling of connection event
US20060208829A1 (en) * 2005-03-15 2006-09-21 Microsoft Corporation System and method for timer windows
US7647486B2 (en) * 2006-05-02 2010-01-12 Atmel Corporation Method and system having instructions with different execution times in different modes, including a selected execution time different from default execution times in a first mode and a random execution time in a second mode
TWI324747B (en) * 2006-06-08 2010-05-11 Wistron Corp Method for preventing process collision of micro controller
US20090249343A1 (en) * 2008-03-25 2009-10-01 Pirasenna Thiyagarajan System, method, and computer program product for receiving timer objects from local lists in a global list for being used to execute events associated therewith
US7941688B2 (en) * 2008-04-09 2011-05-10 Microsoft Corporation Managing timers in a multiprocessor environment
US10521265B2 (en) * 2008-09-19 2019-12-31 Microsoft Technology Licensing, Llc Coalescing periodic timer expiration in guest operating systems in a virtualized environment
KR101580897B1 (ko) * 2008-10-07 2015-12-30 삼성전자주식회사 디스플레이 드라이버, 이의 동작 방법, 및 상기 디스플레이 드라이버를 포함하는 장치

Also Published As

Publication number Publication date
WO2011061046A1 (de) 2011-05-26
EP2504738B1 (de) 2015-11-04
CN102667648B (zh) 2015-07-29
JP2013511784A (ja) 2013-04-04
US9128475B2 (en) 2015-09-08
CN102667648A (zh) 2012-09-12
DE102009047024A1 (de) 2011-05-26
EP2504738A1 (de) 2012-10-03
US20120291035A1 (en) 2012-11-15

Similar Documents

Publication Publication Date Title
JP5528568B2 (ja) 並列プログラム制御
US9465610B2 (en) Thread scheduling in a system with multiple virtual machines
US8621473B2 (en) Constrained rate monotonic analysis and scheduling
JP2004532444A (ja) マルチスレッドプロセッサ上の優先順位及び命令速度の制御
US8539203B2 (en) Multi-thread processor selecting threads on different schedule pattern for interrupt processing and normal operation
JP6406466B1 (ja) 制御装置、制御方法および制御プログラム
WO2018186358A1 (ja) 制御装置、制御方法および制御プログラム
US7168075B1 (en) Automation device and updating method
CN111512291A (zh) 基于服务质量底限调度存储器带宽
JP4836903B2 (ja) マイクロプロセッサ制御装置並びにその方法およびプログラム
US5867383A (en) Programmable logic controller
JP5549455B2 (ja) プログラマブルコントローラシステムおよびそのプログラム更新方法
EP1594048A2 (en) Thread selection unit and method for a multithreaded processor
WO2012052733A1 (en) Exception control in a multiprocessor system
JP2006059052A (ja) 仮想計算機システム
JP2004171167A (ja) マルチプロセッサ計算機及びプログラム
CN110109743B (zh) 一种实时进程调度方法
JPH06259115A (ja) プログラマブルコントローラ
JP3763452B2 (ja) 情報処理システム、オブジェクトの優先度管理方法、オペレーティングシステム、記録媒体
KR100258893B1 (ko) 단일 중앙처리부를 이용한 수치제어장치의 구현방법
CN105550023B (zh) 一种定时器事件的处理方法及装置
JP5536864B2 (ja) マルチスレッドプロセッサ
JP2000155694A (ja) タスクマネージャ
JP2010033475A (ja) 電子制御装置
JPH07175406A (ja) プログラマブルコントローラのスキャン起動制御方式

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131203

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140228

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140415

R150 Certificate of patent or registration of utility model

Ref document number: 5528568

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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