(57)【要約】【課題】スケジューラと複数のプログラムを実行する演算装置が、それぞれ独立自律的に動作する情報処理装置。【解決手段】複数プログラムの演算周期の最大公約数であるベース時間に、前記演算周期が短い順に順次プログラムを使用可能な時間を指定して呼び出すスケジューラ部と、前記呼び出されたプログラムを実行後、ベース期間の残り時間をスケジューラに戻す演算部と、を備える情報処理装置 【選択図】  図２
2014006788.tif 000002
【特許請求の範囲】
【請求項１】
複数のプログラムのそれぞれの演算周期の最大公約数を単位時間として算出する単位時間算出部を備え、
前記複数のプログラムのそれぞれの演算時間を、それぞれ前記単位時間を有する複数の連続するベース期間のそれぞれの中に、前記演算周期が短い順に割り当て、かつ、
順次プログラムで使用可能な時間を指定して、プログラムを呼び出すスケジューラ部と、
並びに、
前記呼び出されたプログラムにおいて、渡されたベース期間の使用可能な時間を上限として、プログラムを実行した後、ベース期間の残り時間を計算して、残り時間をスケジューラに戻す演算部と、
を備える情報処理装置。
【請求項２】
スケジューラ部が、
複数のプログラムのそれぞれの演算周期の最大公約数を単位時間として算出する単位時間算出ステップと、
前記複数のプログラムのそれぞれの演算時間を、それぞれ前記単位時間を有する複数の連続するベース期間のそれぞれの中に、前記演算周期が短い順に割り当てるステップと、
順次プログラムで使用可能な時間を指定して、プログラムを呼び出すステップとを有し、
演算部が、
前記呼び出されたプログラムにおいて、渡されたベース期間の使用可能な時間を上限として、プログラムを実行するステップと、
ベース期間の残り時間を計算して、残り時間をスケジューラに戻すステップと
を有することを特徴とする情報処理装置におけるプログラム実行方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はコンピュータ技術に関し、情報処理装置、およびそのプログラム実行方法に関するものである。
【背景技術】
【０００２】
プロセス制御器及びＰ
Ｌ Ｃ （ Programmable Logic Controller ） 等のデジタル式コントローラは、離散的に制御処理を行う。そのため、デジタル式コントローラは、所定の演算周期で、制御処理を実現するプログラムの演算を繰り返している。
近年、マイクロプロセッサの高集積化により、マイクロプロセッサの処理能力の高速化が進み、演算周期の短縮化も進んでいる。しかし、一方において、演算周期を短いものから長いものまで用意し、制御処理の用途に応じて、適切な演算周期を各プログラムに割り当てる技術が考案されている。
特に、シングルプロセッサの情報処理装置において、それぞれ演算周期が異なる複数のプログラムの効率的な演算を可能にする情報処理装置の発明が開示されている（特許文献１）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１０−１６０６００号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
従来は、それぞれ演算周期が異なる複数のプログラムは、従来、マルチタスク・オペレーティングシステム（
Ｏ Ｓ ） によって実行されていた。しかし、マルチタスクＯ Ｓ による単純なタイムシェアでは、プログラムの厳密な演算周期を守ることを保証できない。さらに、複数のプログラムのそれぞれに優先順位を付する煩雑な手順が必要であった。
【０００５】
また先行技術文献に挙げた情報処理装置では、スケジューラが主体となって、各プログラムのスケジューリング時間を細密に求めて設定していた。そのため、プログラムの仕様が変わった場合にはあらためてスケジューリングをしなおす必要があった。                                                
【課題を解決するための手段】
【０００６】
本発明は、複数のプログラムのそれぞれの演算周期の最大公約数を単位時間として算出する単位時間算出部を備えて、
前記複数のプログラムのそれぞれの演算時間を、それぞれ前記単位時間を有する複数の連続するベース期間のそれぞれの中に、前記演算周期が短い順に割り当て、かつ、
順次プログラムで使用可能な時間を指定して、プログラムを呼び出すスケジューラ部と、
並びに、
前記呼び出されたプログラムにおいて、渡されたベース期間の使用可能な時間を上限として、プログラムを実行した後、ベース期間の残り時間を計算して、残り時間をスケジューラに戻す演算部と、
を備える情報処理装置である。
【０００７】
また本発明は、スケジューラ部が、
複数のプログラムのそれぞれの演算周期の最大公約数を単位時間として算出する単位時間算出ステップと、
前記複数のプログラムのそれぞれの演算時間を、それぞれ前記単位時間を有する複数の連続するベース期間のそれぞれの中に、前記演算周期が短い順に割り当るステップと、
順次プログラムで使用可能な時間を指定して、プログラムを呼び出すステップとを有し、
演算部が、
前記呼び出されたプログラムにおいて、渡されたベース期間の使用可能な時間を上限として、プログラムを実行するステップと、
ベース期間の残り時間を計算して、残り時間をスケジューラに戻すステップとを有することを特徴とするプログラム実行方法である。
【発明の効果】
【０００８】
このように、プログラムの実行判断はベース期間のランタイムに、残り時間の有無に基づいてベース期間毎に逐次決定されるため、事前のスケジューリングから微妙な変化に柔軟に対応することができ、プログラムを停止させることなく、プログラムの追加、削除、実行周期の変更などを行うことができる。
【図面の簡単な説明】
【０００９】
【図１】本発明にかかる情報処理装置の構成図
【図２】本発明のプログラム実行方法のフロー図
【図３】実施例にかかるプログラム実行タイムチャート
【発明を実施するための形態】
【００１０】
本発明の実施の形態に係る情報処理装置は、図１
に示すように、スケジューラ３００ を備える。スケジューラ３００ は、複数のプログラムのそれぞれの演算周期の最大公約数を単位時間として算出する単位時間算出部３０１
を備える。また、スケジューラ３００ は、複数のプログラムのそれぞれの演算時間を、それぞれ単位時間を有する複数の連続するベース期間のそれぞれの中に、演算周期がより短い順に割り当て、かつ、複数のベース期間のうちの一のベース期間の中で演算が完了しないプログラムの残りの演算時間を、一のベース期間の後のベース期間の中に、演算周期が短い順に割り当てる割り当て部３０５
をさらに備える。また、情報処理装置は、複数のベース期間の中にそれぞれ演算時間が割り当てられた複数のプログラムを演算する演算部４００ を備える。
【００１１】
スケジューラ３００ と演算装置４００
は、電気信号を伝送するデータバス５００ で接続されている。さらに、データバス５００ には、それぞれ演算周期が異なる複数のプログラムを保存するプログラム記憶装置３３０
が接続されている。
【００１２】
単位時間算出部３０１ は、データバス５００
を介して、プログラム記憶装置３３０ から、プログラムのそれぞれの演算周期を読み出す。さらに単位時間算出部３０１ は、プログラムのそれぞれの演算周期の最大公約数を、単位時間として算出する。
【００１３】
スケジューラ３００ は、完了時間算出部３０２
及び演算回数算出部３０３ をさらに備えてもよい。完了時間算出部３０２ 及び演算回数算出部３０３ は、データバス５００ を介して、プログラム記憶装置３３０ から、プログラムのそれぞれの演算周期を読み出す。さらに完了時間算出部３０２
は、プログラムのそれぞれの演算周期の最小公倍数を、プログラムの総ての演算が少なくとも１ 回完了するために必要な完了時間として算出する。さらに演算回数算出部３０３
は、受信した完了時間をプログラムの演算周期で割ることにより、完了時間までに、演算装置４００ がプログラムを演算する合計演算回数を算出する。
【００１４】
割り当て部３０５ は、データバス５００
を介して、プログラム記憶装置３３０ から、プログラムのそれぞれの演算周期及び１ 回あたりの演算時間を読み出す。また、割り当て部３０５ は、単位時間算出部３０１
から算出された単位時間を受信し、完了時間算出部３０２ から算出された完了時間を受信し、演算回数算出部３０３ から算出された合計演算回数を受信する。
【００１５】
以上、設計時(オフライン)にスケジューラ３００の各機能が果たすことを説明したが、本発明では実行時（オンライン）にスケジューラ３００と演算装置４００がそれぞれ動作する処理フローに特徴があるので、以下に詳細に述べる。
【００１６】
図２のフローチャートを参照して説明する。
まずスケジューラは予め定めたところのベース期間の到来を計る（図中ステップＳ１１）。
次に、スケジューラは、新たなベース期間の始まりにより、そのベース期間に登録されたプログラムを演算周期の短い順に指定して、演算可能残り時間（初回はベース期間の時間そのもの）を引数として、演算装置に制御を渡す（Ｓ１２）。その後スケジューラはＳｌｅｅｐ状態となる。
【００１７】
ここで、演算装置は制御を渡されると、当該指定されたプログラムを記憶装置３３０から取り出し、演算可能残り時間を指定して当プログラムを実行に移す（Ｓ２１）。
【００１８】
続いて、演算装置から実行に移されたプログラムは自律的に、演算可能残り時間を上限として実行に移る（Ｓ２２）。当プログラムは演算可能残り時間がなくなるまで実行するが、残り時間がなくなった時点で、プログラムの処理を中断する（Ｓ２３）。なお、演算可能残り時間内にプログラムの実行を完了することができなかった場合、プログラム自身が、次のベース期間での呼び出し時に、前回中断した時点から、残りのプログラムの実行を行うようにその持続ポインタ等を内部にセットする（Ｓ２３）。
ここで、プログラムの実行時間は、製品にＲＴＣ（ＲｅａｌＴｉｍｅＣｌｏｃｋ）等を搭載することによって実際に計測しても良いし、プログラムごとに予め定めた理論的な実行時間値を用いても良い。
【００１９】
ステップＳ２２またはＳ２３のプログラム実行の終了後、演算装置は当初渡された演算可能残り時間から当プログラムの実行した時間分を減算して、その残り時間をもって制御をスケジューラに戻す（Ｓ２４）。
【００２０】
さて、制御を戻されたスケジューラは、ベース期間の残り時間が０以下になったかどうかも確認する（Ｓ１３）。
０以下であった場合は、未完了なプログラムがあったと解して、次のベース期間で実行させるように実行中断または未実行のプログラムを登録に追加しておく（Ｓ１９）。このようにランタイムに調整することでプログラムの変更等に柔軟に対応できるのである。
そしてステップＳ１１へジャンプし新しいベース期間のタイミングを計る。
【００２１】
まだ残り時間がある場合には、各ベース期間における登録全てのプログラムの実行呼び出しが終わったか確認する（Ｓ１４）。
まだプログラムの実行分が残っている場合は、そのベース期間の演算可能残り時間をもって、演算装置へ当プログラムを実行するようにステップＳ１２へループする（Ｓ１４）。全てのプログラムが完了していたら、ステップＳ１１へ戻る。
【００２２】
以上が、スケジューラと演算装置で行なわれる処理である。
【実施例】
【００２３】
次に、具体的な例により本発明の動作を説明する。
表１に、プログラム登録部に登録されるプログラムの一覧を示す。
【００２４】
【表１】
2014006788.tif 000003
【００２５】
表１により、単位時間は全てのプログラムの実行周期の最大公約数である100msとなる。
また、表２に、登録されたプログラムの実行周期から求められる実行ベース期間番号を示す。
【００２６】
【表２】
2014006788.tif 000004
【００２７】
以下、本実施例のプログラム実行のタイムチャートを図３を参照しながら説明する。
ベース期間0では、
スケジューラは、実行周期の短い順に、PG001、PG002を順次呼び出す。PG001、PG002は処理を実行し、それぞれ20ms、30msを消費するため、ベース期間0の残り時間は50msとなる。次に、スケジューラはPG003を呼び出す。PG003は処理に必要な70msのうち、残り時間である50ms分を実行する。
この時点でベース期間0の残り時間は0になるため、スケジューラは以降のプログラム呼び出しを中断する。
【００２８】
ベース期間1では、
スケジューラは、実行周期の短い順に、PG001、PG002を順次呼び出す。PG001、PG002は処理を実行し、それぞれ20ms、30msを消費するため、ベース期間1の残り時間は50msとなる。次に、スケジューラはPG003を呼び出す。PG003はベース期間1での実行は不要であるが、ベース期間0で処理が完了していないため、未完了である残り20ms分の処理を実行し、ベース期間1の残り時間は30msとなる。
次に、スケジューラはPG004を呼び出す。PG004はベース期間1での実行は不要であるが、ベース期間0で処理が完了していないため、未完了である処理のうち、ベース期間1の残り時間である30ms分の処理を実行する。この時点でベース期間１の残り時間は0になるため、スケジューラは以降のプログラム呼び出しを中断する。
【００２９】
ベース期間2では、
スケジューラは、実行周期の短い順に、PG001、PG002を順次呼び出す。PG001、PG002は処理を実行し、それぞれ20ms、30msを消費するため、ベース期間2の残り時間は50msとなる。次に、スケジューラはPG003を呼び出す。PG003は処理にベース期間2での実行が必要であるため、ベース期間0と同様に、必要な70msのうち、残り時間である50ms分を実行する。
この時点でベース期間2の残り時間は0になるため、スケジューラは以降のプログラム呼び出しを中断する。
【００３０】
ベース期間3では、
スケジューラは、実行周期の短い順に、PG001、PG002を順次呼び出す。PG001、PG002は処理を実行し、それぞれ20ms、30msを消費するため、ベース期間3の残り時間は50msとなる。次に、スケジューラはPG003を呼び出す。PG003はベース期間3での実行は不要であるが、ベース期間2で処理が完了していないため、未完了である残り20ms分の処理を実行し、ベース期間3の残り時間は30msとなる。
次に、スケジューラはPG004を呼び出す。PG004はベース期間0における必要な実行が完了していないため、未完了である処理20ms分を実行し、ベース期間3の残り時間は10msとなる。
最後に、スケジューラはPG005を呼び出す。PG005はベース期間0における必要な実行が完了していないため、未完了である処理40msのうち、ベース期間3の残り時間である10ms分の処理を実行する。
こうして、ベース時間3の残り時間は0になるため、スケジューラはプログラム呼び出しを中断する。
【００３１】
ベース期間4〜8では、
このようにして、ベース期間4〜8においてプログラムの実行が行われる。ここでは説明を省略し、実行されるプログラムの状態だけを示す。
【００３２】
ベース期間9では、
スケジューラは実行周期の短い順に、PG001、PG002、PG003、PG004を順に呼び出す。
PG004はベース期間5において必要な処理が完了しており、ベース期間9では実行が不要であるため、PG001、PG002およびPG003の残り処理（20ms分）が実行され、この時点でベース期間9の残り時間は30msとなる。
次に、スケジューラはPG005を呼び出す。PG005は、ベース期間0で必要な実行処理のうち、20msを実行済みの状態であるため、残り20msを実行し、ベース期間9の残り時間は10msとなる。
この時点で、全てのプログラムの呼び出しが完了したため、ベース期間9については余り時間10msを残して、プログラムの実行は終了する。
【００３３】
（その他の応用例）
プログラムの追加：
本例において、例えば、実行周期が200msであるPG006を追加したとする。
このとき、スケジューラは、PG006が追加された以降のベース期間において、実行周期が200msであるPG003と、実行周期が500msであるPG005の呼び出しの間に、PG006の呼び出しを挿入するだけで良い。
【００３４】
プログラムの削除：
本例において、例えば、PG003を削除したとする。
このとき、スケジューラは、PG003が削除された以降のベース期間において、PG003の呼び出しを行わないようにするだけでよい。
【００３５】
プログラムの実行周期の変更：
本例において、例えば、PG003の実行周期を200msから1secに変更したとする。
このとき、スケジューラは、PG003の実行周期が変更された以降のプログラムの呼び出し順序を以下のように変更するだけで良い。
変更前  PG001⇒PG002⇒PG003⇒PG004⇒PG005
変更後  PG001⇒PG002⇒PG004⇒PG005⇒PG003
【００３６】
なお、その他の種種の変形は、本発明の範囲に入ることに変わりはないことは言うまでもない。
【図１】
2014006788.tif 000005
【図２】
2014006788.tif 000006
【図３】
2014006788.tif 000007