(57)【要約】      （修正有）【課題】それぞれ演算周期が異なる複数のプログラムの効率的な演算を可能にする情報処理装置を提供する。【解決手段】単位時間算出部３０１により算出した複数プログラムのそれぞれの演算周期の最大公約数を単位時間としてプログラムを割り当てるベース期間を設定し、割り当て部３０５が複数プログラムの演算時間を連続するベース期間の中に演算周期が短い順に割り当て、かつ、一つのベース期間の中で演算が完了しないプログラムの残りの演算時間を、後のベース期間の中に演算周期が短い順に割り当てることにより、演算部４００が複数のプログラムを効率よく演算することができる。【選択図】図１
2010160600.tif 000002
【特許請求の範囲】
【請求項１】
複数のプログラムのそれぞれの演算周期の最大公約数を単位時間として算出する単位時間算出部と、
前記複数のプログラムのそれぞれの演算時間を、それぞれ前記単位時間を有する複数の連続するベース期間のそれぞれの中に、前記演算周期が短い順に割り当て、かつ、前記複数のベース期間のうちの一のベース期間の中で演算が完了しないプログラムの残りの演算時間を、前記一のベース期間の後のベース期間の中に、前記演算周期が短い順に割り当てる割り当て部と、
前記複数のベース期間の中にそれぞれ前記演算時間が割り当てられた前記複数のプログラムを演算する演算部と、
を備える情報処理装置。
【請求項２】
複数のプログラムのそれぞれの演算周期の最大公約数を単位時間として算出する単位時間算出部と、
前記複数のプログラムのそれぞれの演算時間を、それぞれ前記単位時間を有する複数の連続するベース期間のそれぞれの中に、前記演算周期が短い順に割り当て、かつ、前記複数のベース期間のうちの一のベース期間の中で演算が完了しないプログラムの残りの演算時間を、前記一のベース期間の後のベース期間の中に、前記演算周期が短い順に割り当てる割り当て部と、
を備えるスケジューラ。
【請求項３】
前記複数のプログラムのそれぞれの演算周期の最小公倍数を、前記複数のプログラムの総ての演算が少なくとも１回完了するために必要な完了時間として算出する、完了時間算出部を更に備える、請求項２に記載のスケジューラ。
【請求項４】
前記複数の連続するベース期間の合計時間が、前記完了時間である、請求項３に記載のスケジューラ。
【請求項５】
前記完了時間を、前記複数のプログラムのそれぞれの演算周期で割ることにより、前記完了時間までに、前記複数のプログラムのそれぞれが演算される合計演算回数を算出する、演算回数算出部を更に備える、請求項３又は４に記載のスケジューラ。
【請求項６】
前記割り当て部が、前記複数のプログラムのそれぞれの演算回数が前記合計演算回数に達するまで、前記複数のプログラムのそれぞれの演算時間を、前記複数のベース期間の中に割り当てる、請求項５に記載のスケジューラ。
【請求項７】
前記割り当て部が、前記複数のプログラムのそれぞれの演算時間を、前記複数のベース期間のそれぞれの中に割り当てる前に、演算するタイミングが指定されたタイミング指定プログラムを、前記複数のベース期間の少なくとも一つの中に割り当てる、優先割り当て部を更に備える、請求項２乃至６のいずれか１項に記載のスケジューラ。
【請求項８】
複数のプログラムのそれぞれの演算周期の最大公約数を単位時間として算出することと、
前記複数のプログラムのそれぞれの演算時間を、それぞれ前記単位時間を有する複数の連続するベース期間のそれぞれの中に、前記演算周期が短い順に割り当て、かつ、前記複数のベース期間のうちの一のベース期間の中で演算が完了しないプログラムの残りの演算時間を、前記一のベース期間の後のベース期間の中に、前記演算周期が短い順に割り当てることと、
を含むスケジューリング方法。
【請求項９】
前記複数のプログラムのそれぞれの演算周期の最小公倍数を、前記複数のプログラムの総ての演算が少なくとも１回完了するために必要な完了時間として算出することを更に含む、請求項８に記載のスケジューリング方法。
【請求項１０】
前記複数の連続するベース期間の合計時間が、前記完了時間である、請求項９に記載のスケジューリング方法。
【請求項１１】
前記完了時間を、前記複数のプログラムのそれぞれの演算周期で割ることにより、前記完了時間までに、前記複数のプログラムのそれぞれが演算される合計演算回数を算出することを更に含む、請求項９又は１０に記載のスケジューリング方法。
【請求項１２】
前記割り当てることにおいて、前記複数のプログラムのそれぞれの演算回数が前記合計演算回数に達するまで、前記複数のプログラムのそれぞれの演算時間を、前記複数のベース期間の中に割り当てる、請求項１１に記載のスケジューリング方法。
【請求項１３】
前記複数のプログラムのそれぞれの演算時間を、前記複数のベース期間のそれぞれの中に割り当てる前に、演算するタイミングが指定されたタイミング指定プログラムを、前記複数のベース期間の少なくとも一つの中に割り当てることを更に含む、請求項８乃至１２のいずれか１項に記載のスケジューリング方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はコンピュータ技術に関し、情報処理装置、スケジューラ、及びスケジューリング方法に関する。
【背景技術】
【０００２】
プロセス制御器及びＰＬＣ（Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ｃｏｎｔｒｏｌｌｅｒ）等のデジタル式コントローラは、離散的に制御処理を行う。そのため、デジタル式コントローラは、所定の演算周期で、制御処理を実現するプログラムの演算を繰り返している（例えば、特許文献1参照。）。近年、マイクロプロセッサの高集積化により、マイクロプロセッサの処理能力の高速化が進み、演算周期の短縮化も進んでいる。しかし、一方において、演算周期を短いものから長いものまで用意し、制御処理の用途に応じて、適切な演算周期を各プログラムに割り当てることも考案されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００２−３５１５０９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
それぞれ演算周期が異なる複数のプログラムは、従来、マルチタスク・オペレーティングシステム（ＯＳ）によって実行されていた。しかし、マルチタスクＯＳによる単純なタイムシェアでは、プログラムの厳密な演算周期を守ることを保証できない。さらに、複数のプログラムのそれぞれに優先順位を付する煩雑な手順が必要であった。また、マイクロプロセッサの処理能力を、予め演算周期が短いプログラムと、演算周期が長いプログラムに割り当てることも考案されていた。しかし、予め設定された処理能力の割り当てに、実際に演算されるプログラムの数が対応していない場合が生じうる。そのため、例えば演算周期が短いプログラムの数が多く、予め演算周期が短いプログラムの処理に割り当てられたマイクロプロセッサの処理能力が足りなくなる一方で、演算周期が長いプログラムの数が少なく、予め演算周期が長いプログラムの処理に割り当てられたマイクロプロセッサの処理能力は空いたままであるという事態が生じうる。その結果、マイクロプロセッサの処理能力に無駄が生じるという問題が生じうる。
【０００５】
そこで本発明は、それぞれ演算周期が異なる複数のプログラムの効率的な演算を可能にする情報処理装置、スケジューラ、及びスケジューリング方法を提供することを目的の一つとする。
【課題を解決するための手段】
【０００６】
本発明の態様は、複数のプログラムのそれぞれの演算周期の最大公約数を単位時間として算出する単位時間算出部と、複数のプログラムのそれぞれの演算時間を、それぞれ単位時間を有する複数の連続するベース期間のそれぞれの中に、演算周期が短い順に割り当て、かつ、複数のベース期間のうちの一のベース期間の中で演算が完了しないプログラムの残りの演算時間を、一のベース期間の後のベース期間の中に、演算周期が短い順に割り当てる割り当て部と、複数のベース期間の中にそれぞれ演算時間が割り当てられた複数のプログラムを演算する演算部と、を備える情報処理装置であることを要旨とする。本発明に係る情報処理装置によれば、複数のベース期間のそれぞれに、それぞれ演算周期の異なる複数のプログラムが、演算周期が短い順に割り当てられるため、複数のプログラムを効率的に演算することが可能となる。
【０００７】
本発明の他の態様は、複数のプログラムのそれぞれの演算周期の最大公約数を単位時間として算出する単位時間算出部と、複数のプログラムのそれぞれの演算時間を、それぞれ単位時間を有する複数の連続するベース期間のそれぞれの中に、演算周期が短い順に割り当て、かつ、複数のベース期間のうちの一のベース期間の中で演算が完了しないプログラムの残りの演算時間を、一のベース期間の後のベース期間の中に、演算周期が短い順に割り当てる割り当て部と、を備えるスケジューラであることを要旨とする。本発明に係るスケジューラによれば、複数のベース期間のそれぞれに、それぞれ演算周期の異なる複数のプログラムが、演算周期が短い順に割り当てられるため、複数のプログラムを効率的にスケジュールすることが可能となる。
【０００８】
本発明の他の態様は、複数のプログラムのそれぞれの演算周期の最大公約数を単位時間として算出することと、複数のプログラムのそれぞれの演算時間を、それぞれ単位時間を有する複数の連続するベース期間のそれぞれの中に、演算周期が短い順に割り当て、かつ、複数のベース期間のうちの一のベース期間の中で演算が完了しないプログラムの残りの演算時間を、一のベース期間の後のベース期間の中に、演算周期が短い順に割り当てることと、を含むスケジューリング方法であることを要旨とする。本発明に係るスケジューリング方法によれば、複数のベース期間のそれぞれに、それぞれ演算周期の異なる複数のプログラムが、演算周期が短い順に割り当てられるため、複数のプログラムを効率的にスケジュールすることが可能となる。
【発明の効果】
【０００９】
本発明によれば、それぞれ演算周期が異なる複数のプログラムの効率的な演算を可能にする情報処理装置、スケジューラ、及びスケジューリング方法を提供可能である。
【図面の簡単な説明】
【００１０】
【図１】本発明の第1の実施の形態に係る情報処理装置の模式図である。
【図２】本発明の第1の実施の形態に係る演算時間の割り当て方法を示す第１の模式図である。
【図３】本発明の第1の実施の形態に係る演算時間の割り当て方法を示す第２の模式図である。
【図４】本発明の第1の実施の形態に係る演算時間の割り当て方法を示す第３の模式図である。
【図５】本発明の第1の実施の形態に係る演算時間の割り当て方法を示す第４の模式図である。
【図６】本発明の第1の実施の形態に係る演算時間の割り当て方法を示す第５の模式図である。
【図７】本発明の第1の実施の形態に係る演算時間の割り当て方法を示す第６の模式図である。
【図８】本発明の第1の実施の形態に係る演算時間の割り当て方法を示す第７の模式図である。
【図９】本発明の第1の実施の形態に係る演算時間の割り当て方法を示す第８の模式図である。
【図１０】本発明の第1の実施の形態に係る演算時間の割り当て方法を示す第９の模式図である。
【図１１】本発明の第1の実施の形態に係る演算時間の割り当て方法を示す第１０の模式図である。
【図１２】本発明の第２の実施の形態に係る情報処理装置の模式図である。
【図１３】本発明の第２の実施の形態に係る演算時間の割り当て方法を示す第１の模式図である。
【図１４】本発明の第２の実施の形態に係る演算時間の割り当て方法を示す第２の模式図である。
【図１５】本発明の第２の実施の形態に係る演算時間の割り当て方法を示す第３の模式図である。
【図１６】本発明の第２の実施の形態に係る演算時間の割り当て方法を示す第４の模式図である。
【図１７】本発明の第２の実施の形態に係る演算時間の割り当て方法を示す第５の模式図である。
【発明を実施するための形態】
【００１１】
以下に本発明の実施の形態を説明する。以下の図面の記載において、同一又は類似の部分には同一又は類似の符号で表している。但し、図面は模式的なものである。したがって、具体的な寸法等は以下の説明を照らし合わせて判断するべきものである。また、図面相互間においても互いの寸法の関係や比率が異なる部分が含まれていることは勿論である。
【００１２】
（第１の実施の形態）
第１の実施の形態に係る情報処理装置は、図１に示すように、スケジューラ３００を備える。スケジューラ３００は、複数のプログラムのそれぞれの演算周期の最大公約数を単位時間として算出する単位時間算出部３０１を備える。また、スケジューラ３００は、複数のプログラムのそれぞれの演算時間を、それぞれ単位時間を有する複数の連続するベース期間のそれぞれの中に、演算周期がより短い順に割り当て、かつ、複数のベース期間のうちの一のベース期間の中で演算が完了しないプログラムの残りの演算時間を、一のベース期間の後のベース期間の中に、演算周期が短い順に割り当てる割り当て部３０５をさらに備える。また、情報処理装置は、複数のベース期間の中にそれぞれ演算時間が割り当てられた複数のプログラムを演算する演算部４００を備える。
【００１３】
スケジューラ３００と演算装置４００は、電気信号を伝送するデータバス５００で接続されている。さらに、データバス５００には、それぞれ演算周期が異なる複数のプログラムを保存するプログラム記憶装置３３０が接続されている。複数のプログラムは、それぞれ、複数の機能ブロックを含む。ここでは、例として、プログラム記憶装置３３０が、第１乃至第４のプログラムを保存している場合を説明する。
【００１４】
第１のプログラムは、例えば、１００ミリ秒の演算周期で演算される機能ブロックを２５個含んでいる。第１の実施の形態において、演算装置４００で１個の機能ブロックを演算するために必要な演算時間が２ミリ秒である場合、第１のプログラムを一回演算するために必要な演算時間は、５０ミリ秒である。第２のプログラムは、例えば、２００ミリ秒の演算周期で演算される機能ブロックを３０個含んでいる。この場合、第２のプログラムを一回演算するために必要な演算時間は、６０ミリ秒である。
【００１５】
第３のプログラムは、例えば、５００ミリ秒の演算周期で演算される機能ブロックを２５個含んでいる。この場合、第３のプログラムを一回演算するために必要な演算時間は、５０ミリ秒である。第４のプログラムは、例えば、１０００ミリ秒の演算周期で演算される機能ブロックを５０個含んでいる。この場合、第４のプログラムを一回演算するために必要な演算時間は、１００ミリ秒である。
【００１６】
単位時間算出部３０１は、データバス５００を介して、プログラム記憶装置３３０から、第１乃至第４のプログラムのそれぞれの演算周期を読み出す。さらに単位時間算出部３０１は、第１乃至第４のプログラムのそれぞれの演算周期の最大公約数を、単位時間として算出する。ここでは、第１のプログラム、第２のプログラム、第３のプログラム、及び第４のプログラムの演算周期が、それぞれ、１００ミリ秒、２００ミリ秒、５００ミリ秒、及び１０００ミリ秒であるため、単位時間として算出される最大公約数は１００ミリ秒である。なお、第１乃至第４のプログラムのそれぞれの演算周期の値が整数でない場合は、演算周期の値を整数で表記できるよう、例えば単位を換算すればよい。例えば、プログラム記憶装置３３０に、第１乃至第４のプログラムのそれぞれの演算周期が、０．１秒、０．２秒、０．５秒、及び１秒と保存されていた場合は、単位を秒からミリ秒に換算することにより、演算周期の値を整数で表記できる。
【００１７】
スケジューラ３００は、完了時間算出部３０２及び演算回数算出部３０３をさらに備える。完了時間算出部３０２及び演算回数算出部３０３は、データバス５００を介して、プログラム記憶装置３３０から、第１乃至第４のプログラムのそれぞれの演算周期を読み出す。さらに完了時間算出部３０２は、第１乃至第４のプログラムのそれぞれの演算周期の最小公倍数を、第１乃至第４のプログラムの総ての演算が少なくとも１回完了するために必要な完了時間として算出する。ここでは、完了時間として算出される、第１乃至第４のプログラムのそれぞれの演算周期の最小公倍数は、１０００ミリ秒である。また、上述したように、第１乃至第４のプログラムのそれぞれの演算周期の値が整数でない場合は、演算周期の値を整数で表記できるよう、例えば単位を換算すればよい。
【００１８】
演算回数算出部３０３は、完了時間算出部３０２から、算出された完了時間を受信する。さらに演算回数算出部３０３は、受信した完了時間をプログラムの演算周期で割ることにより、完了時間までに、演算装置４００がプログラムを演算する合計演算回数を算出する。ここで、完了時間が１０００ミリ秒である場合、演算周期が１００ミリ秒の第１のプログラムの合計演算回数は１０回であり、演算周期が２００ミリ秒の第２のプログラムの合計演算回数は５回である。また、演算周期が５００ミリ秒の第３のプログラムの合計演算回数は２回であり、演算周期が１０００ミリ秒の第４のプログラムの合計演算回数は１回である。
【００１９】
割り当て部３０５は、データバス５００を介して、プログラム記憶装置３３０から、第１乃至第４のプログラムのそれぞれの演算周期及び１回あたりの演算時間を読み出す。また、割り当て部３０５は、単位時間算出部３０１から算出された単位時間を受信し、完了時間算出部３０２から算出された完了時間を受信し、演算回数算出部３０３から算出された合計演算回数を受信する。
【００２０】
さらに、割り当て部３０５は、完了時間を単位時間で割った数を、設定する複数のベース期間の数として算出する。完了時間が１０００ミリ秒で、単位時間が１００ミリ秒である場合、設定する複数のベース期間の数は、１０である。ここで、割り当て部３０５は、第１乃至第４のプログラムのそれぞれの演算回数が、演算回数算出部３０３が算出した合計演算回数に達するまで、第１乃至第４プログラムのそれぞれの演算時間を、設定する一番目乃至十番目のベース期間のそれぞれの中に割り当てる。
【００２１】
まず、割り当て部３０５は、図２に示すように、単位時間算出部３０１が算出した１００ミリ秒の単位時間を有する一番目のベース期間を設け、一番目のベース期間の中に、第１乃至第４のプログラムのそれぞれの演算時間を、演算周期が短い順に割り当てることを試みる。第１のプログラムの演算周期が最も短いので、割り当て部３０５は、一番目のベース期間の先頭に、第１のプログラムの演算時間を割り当てる。また、割り当て部３０５は、演算回数算出部３０３が算出した第1のプログラムの合計演算回数から１を減じて、第１のプログラムの残りの演算回数を９とする。
【００２２】
第１のプログラムを一回演算するために必要な演算時間は５０ミリ秒であるため、第１のプログラムの演算時間を割り当てた後、一番目のベース期間には、空き時間が５０ミリ秒残る。そこで、割り当て部３０５は、一番目のベース期間内の第１のプログラムの演算時間の次に、第１のプログラムの次に演算周期が短い第２のプログラムの演算時間を割り当てることを試みる。しかし、第２のプログラムを一回演算するために必要な演算時間は、６０ミリ秒である。そのため、割り当て部３０５は、一番目のベース期間の中に、第２のプログラムの６０ミリ秒の演算時間のうち、最初の５０ミリ秒の演算時間のみを割り当てる。また、割り当て部３０５は、一番目のベース期間内に割り当てることができなかった第２のプログラムの残りの１０ミリ秒の演算時間を、後のベース期間の中に割り当てるべき演算時間として保持する。
【００２３】
一番目のベース期間への演算時間の割り当てが終了したので、図１に示す割り当て部３０５は、図３に示すように、二番目のベース期間を設け、二番目のベース期間の中に、第１乃至第４のプログラムのそれぞれの演算時間を、演算周期が短い順に割り当てることを試みる。割り当て部３０５は、まず、二番目のベース期間の先頭に、第１のプログラムの演算時間を割り当てる。また、割り当て部３０５は、第1のプログラムの残りの演算回数を、１減少させ、８とする。
【００２４】
また、割り当て部３０５は、二番目のベース期間内の第１のプログラムの演算時間の次に、第２のプログラムの演算時間を割り当てることを試みる。ここで、一番目のベース期間内に割り当てることができなかった第２のプログラムの１０ミリ秒の演算時間が、一番目のベース期間より後のベース期間の中に割り当てるべき演算時間として残されている。そのため、割り当て部３０５は、二番目のベース期間の中に、第２のプログラムの残されていた１０ミリ秒の演算時間を割り当てる。これにより、第2のプログラムの１回目の演算が完了するので、割り当て部３０５は、演算回数算出部３０３が算出した第２のプログラムの合計演算回数から１を減じて、第２のプログラムの残りの演算回数を４とする。
【００２５】
第２のプログラムの演算時間を割り当てた後、二番目のベース期間には、空き時間が４０ミリ秒残る。第２のプログラムの演算周期は２００ミリ秒であるため、二番目のベース期間で演算が終了した場合、第２のプログラムの２回目の演算は、三番目のベース周期から開始しなくてはならない。そこで、割り当て部３０５は、二番目のベース期間内の第２のプログラムの演算時間の次に、第２のプログラムの次に演算周期が短い第３のプログラムの演算時間を割り当てることを試みる。しかし、第３のプログラムを一回演算するために必要な演算時間は、５０ミリ秒である。そのため、割り当て部３０５は、二番目のベース期間の中に、第３のプログラムの５０ミリ秒の演算時間のうち、最初の４０ミリ秒の演算時間のみを割り当てる。また、割り当て部３０５は、二番目のベース期間内に割り当てることができなかった第３のプログラムの残りの１０ミリ秒の演算時間を、後のベース期間の中に割り当てるべき演算時間として保持する。
【００２６】
二番目のベース期間への演算時間の割り当てが終了したので、図１に示す割り当て部３０５は、図４に示すように、三番目のベース期間を設け、三番目のベース期間の中に、第１乃至第４のプログラムのそれぞれの演算時間を、演算周期が短い順に割り当てることを試みる。割り当て部３０５は、まず、三番目のベース期間の先頭に、第１のプログラムの演算時間を割り当てる。また、割り当て部３０５は、第1のプログラムの残りの演算回数を、さらに１減少させ、７とする。
【００２７】
また、割り当て部３０５は、三番目のベース期間内の第１のプログラムの演算時間の次に、第２のプログラムの６０ミリ秒の演算時間のうち、５０ミリ秒の演算時間を割り当てる。また、割り当て部３０５は、三番目のベース期間内に割り当てることができなかった第２のプログラムの残りの１０ミリ秒の演算時間を、後のベース期間の中に割り当てるべき演算時間として保持する。
【００２８】
三番目のベース期間への演算時間の割り当てが終了したので、図１に示す割り当て部３０５は、図５に示すように、四番目のベース期間を設け、四番目のベース期間の中に、第１乃至第４のプログラムのそれぞれの演算時間を、演算周期が短い順に割り当てることを試みる。割り当て部３０５は、まず、四番目のベース期間の先頭に、第１のプログラムの演算時間を割り当てる。また、割り当て部３０５は、第1のプログラムの残りの演算回数を、さらに１減少させ、６とする。
【００２９】
また、割り当て部３０５は、四番目のベース期間内の第１のプログラムの演算時間の次に、三番目のベース期間の中に割り当てることができなかった、第２のプログラムの残されていた１０ミリ秒の演算時間を割り当てる。これにより、第２のプログラムの２回目の演算が完了するので、割り当て部３０５は、第２のプログラムの残りの演算回数を、さらに１減少させ、３とする。その後、四番目のベース期間には、空き時間が４０ミリ秒残る。
【００３０】
そこで、割り当て部３０５は、四番目のベース期間内の第２のプログラムの演算時間の次に、二番目のベース期間の中に割り当てることができなかった、第３のプログラムの残されていた１０ミリ秒の演算時間を割り当てる。これにより、第３のプログラムの１回目の演算が完了するので、割り当て部３０５は、演算回数算出部３０３が算出した第３のプログラムの合計演算回数から１を減じて、第３のプログラムの残りの演算回数を１とする。その後、四番目のベース期間には、空き時間が３０ミリ秒残る。
【００３１】
そこで、割り当て部３０５は、四番目のベース期間内の第３のプログラムの演算時間の次に、第３のプログラムの次に演算周期が短い第４のプログラムの演算時間を割り当てることを試みる。しかし、第４のプログラムを一回演算するために必要な演算時間は、１００ミリ秒である。そのため、割り当て部３０５は、四番目のベース期間の中に、第４のプログラムの１００ミリ秒の演算時間のうち、最初の３０ミリ秒の演算時間のみを割り当てる。また、割り当て部３０５は、四番目のベース期間内に割り当てることができなかった第４のプログラムの残りの７０ミリ秒の演算時間を、後のベース期間の中に割り当てるべき演算時間として保持する。
【００３２】
四番目のベース期間への演算時間の割り当てが終了したので、図１に示す割り当て部３０５は、図６に示すように、五番目のベース期間を設け、五番目のベース期間の中に、第１乃至第４のプログラムのそれぞれの演算時間を、演算周期が短い順に割り当てることを試みる。割り当て部３０５は、まず、五番目のベース期間の先頭に、第１のプログラムの演算時間を割り当てる。また、割り当て部３０５は、第1のプログラムの残りの演算回数を、さらに１減少させ、５とする。
【００３３】
また、割り当て部３０５は、五番目のベース期間内の第１のプログラムの演算時間の次に、第２のプログラムの６０ミリ秒の演算時間のうち、５０ミリ秒の演算時間を割り当てる。また、割り当て部３０５は、五番目のベース期間内に割り当てることができなかった第２のプログラムの残りの１０ミリ秒の演算時間を、後のベース期間の中に割り当てるべき演算時間として保持する。
【００３４】
五番目のベース期間への演算時間の割り当てが終了したので、図１に示す割り当て部３０５は、図７に示すように、六番目のベース期間を設け、六番目のベース期間の中に、第１乃至第４のプログラムのそれぞれの演算時間を、演算周期が短い順に割り当てることを試みる。割り当て部３０５は、まず、六番目のベース期間の先頭に、第１のプログラムの演算時間を割り当てる。また、割り当て部３０５は、第1のプログラムの残りの演算回数を、さらに１減少させ、４とする。
【００３５】
また、割り当て部３０５は、六番目のベース期間内の第１のプログラムの演算時間の次に、五番目のベース期間の中に割り当てることができなかった、第２のプログラムの残されていた１０ミリ秒の演算時間を割り当てる。これにより、第２のプログラムの３回目の演算が完了するので、割り当て部３０５は、第２のプログラムの残りの演算回数を、さらに１減少させ、２とする。また、割り当て部３０５は、六番目のベース期間内の第２のプログラムの演算時間の次に、第３のプログラムの５０ミリ秒の演算時間のうち、４０ミリ秒の演算時間を割り当てる。さらに、割り当て部３０５は、六番目のベース期間内に割り当てることができなかった第３のプログラムの残りの１０ミリ秒の演算時間を、後のベース期間の中に割り当てるべき演算時間として保持する。
【００３６】
六番目のベース期間への演算時間の割り当てが終了したので、図１に示す割り当て部３０５は、図８に示すように、七番目のベース期間を設け、七番目のベース期間の中に、第１乃至第４のプログラムのそれぞれの演算時間を、演算周期が短い順に割り当てることを試みる。割り当て部３０５は、まず、七番目のベース期間の先頭に、第１のプログラムの演算時間を割り当てる。また、割り当て部３０５は、第1のプログラムの残りの演算回数を、さらに１減少させ、３とする。
【００３７】
また、割り当て部３０５は、七番目のベース期間内の第１のプログラムの演算時間の次に、第２のプログラムの６０ミリ秒の演算時間のうち、５０ミリ秒の演算時間を割り当てる。また、割り当て部３０５は、七番目のベース期間内に割り当てることができなかった第２のプログラムの残りの１０ミリ秒の演算時間を、後のベース期間の中に割り当てるべき演算時間として保持する。
【００３８】
七番目のベース期間への演算時間の割り当てが終了したので、図１に示す割り当て部３０５は、図９に示すように、八番目のベース期間を設け、八番目のベース期間の中に、第１乃至第４のプログラムのそれぞれの演算時間を、演算周期が短い順に割り当てることを試みる。割り当て部３０５は、まず、八番目のベース期間の先頭に、第１のプログラムの演算時間を割り当てる。また、割り当て部３０５は、第1のプログラムの残りの演算回数を、さらに１減少させ、２とする。
【００３９】
また、割り当て部３０５は、八番目のベース期間内の第１のプログラムの演算時間の次に、七番目のベース期間の中に割り当てることができなかった、第２のプログラムの残されていた１０ミリ秒の演算時間を割り当てる。これにより、第２のプログラムの４回目の演算が完了するので、割り当て部３０５は、第２のプログラムの残りの演算回数を、さらに１減少させ、１とする。
【００４０】
また、割り当て部３０５は、八番目のベース期間内の第２のプログラムの演算時間の次に、六番目のベース期間の中に割り当てることができなかった、第３のプログラムの残されていた１０ミリ秒の演算時間を割り当てる。これにより、第３のプログラムの２回目の演算が完了するので、割り当て部３０５は、第３のプログラムの残りの演算回数を、さらに１減少させ、０とする。その後、八番目のベース期間には、空き時間が３０ミリ秒残る。
【００４１】
そこで、割り当て部３０５は、八番目のベース期間内の第３のプログラムの演算時間の次に、４番目のベース期間の中に割り当てることのできなかった、第４のプログラムの残されていた７０ミリ秒の演算時間を割り当てることを試みる。しかし、八番目のベース期間には、空き時間が３０ミリ秒しか残っていないので、割り当て部２０２は、第４のプログラムの残されていた７０ミリ秒の演算時間のうち、最初の３０ミリ秒の演算時間のみを割り当てる。また、割り当て部３０５は、八番目のベース期間内に割り当てることができなかった第４のプログラムの残りの４０ミリ秒の演算時間を、後のベース期間の中に割り当てるべき演算時間として、なお保持する。
【００４２】
八番目のベース期間への演算時間の割り当てが終了したので、図１に示す割り当て部３０５は、図１０に示すように、九番目のベース期間を設け、九番目のベース期間の中に、残りの演算回数が０となっていない第１、第２、及び第４のプログラムのそれぞれの演算時間を、演算周期が短い順に割り当てることを試みる。割り当て部３０５は、まず、九番目のベース期間の先頭に、第１のプログラムの演算時間を割り当てる。また、割り当て部３０５は、第1のプログラムの残りの演算回数を、さらに１減少させ、１とする。
【００４３】
また、割り当て部３０５は、九番目のベース期間内の第１のプログラムの演算時間の次に、第２のプログラムの６０ミリ秒の演算時間のうち、５０ミリ秒の演算時間を割り当てる。また、割り当て部３０５は、九番目のベース期間内に割り当てることができなかった第２のプログラムの残りの１０ミリ秒の演算時間を、後のベース期間の中に割り当てるべき演算時間として保持する。
【００４４】
九番目のベース期間への演算時間の割り当てが終了したので、図１に示す割り当て部３０５は、図１１に示すように、十番目のベース期間を設け、十番目のベース期間の中に、残りの演算回数が０となっていない第１、第２、及び第４のプログラムのそれぞれの演算時間を、演算周期が短い順に割り当てることを試みる。割り当て部３０５は、まず、十番目のベース期間の先頭に、第１のプログラムの演算時間を割り当てる。また、割り当て部３０５は、第1のプログラムの残りの演算回数を、さらに１減少させ、０とする。
【００４５】
また、割り当て部３０５は、十番目のベース期間内の第１のプログラムの演算時間の次に、九番目のベース期間の中に割り当てることができなかった、第２のプログラムの残されていた１０ミリ秒の演算時間を割り当てる。これにより、第２のプログラムの５回目の演算が完了するので、割り当て部３０５は、第２のプログラムの残りの演算回数を、さらに１減少させ、０とする。
【００４６】
第２のプログラムの次に演算周期が短い第３のプログラムの残りの演算回数は、既に０となっている。そのため、割り当て部３０５は、十番目のベース期間の中に第３のプログラムの演算時間の割り当てを行わない。そして、割り当て部３０５は、十番目のベース期間内の第２のプログラムの演算時間の次に、八番目のベース期間の中に割り当てることができなかった、第４のプログラムの残されていた４０ミリ秒の演算時間を割り当てる。これにより、第４のプログラムの１回目の演算が完了するので、割り当て部３０５は、演算回数算出部３０３が算出した第４のプログラムの合計演算回数から１を減じて、第４のプログラムの残りの演算回数を０とする。
【００４７】
十番目のベース期間への演算時間の割り当てが終了した時点で、図１に示す完了時間算出部３０２が算出した完了時間に達する。また、演算回数算出部３０３が算出した、完了時間までに、演算装置４００が第１乃至第４のプログラムのそれぞれを演算する合計演算回数が達せされる。そのため、割り当て部３０５は、第１乃至第４のプログラムのそれぞれの演算時間の割り当てスケジュールの作成を終了する。
【００４８】
演算装置４００は、スケジューラ３００から、割り当て部３０５が作成した図１１に示す第１乃至第４のプログラムのそれぞれの演算時間の割り当てスケジュールを受信する。また、図１に示す演算装置４００は、プログラム記憶装置３３０から、第１乃至第４のプログラムを読み出す。さらに演算装置４００は、受信した図１１に示す割り当てスケジュールに従って、第１乃至第４のプログラムを演算する。また、十番目のベース期間における演算が終了した後は、一番目のベース期間に戻り、第１乃至第４のプログラムの演算を繰り返す。なお、図１に示す演算装置４００は、必ずしも、図１１に示す割り当てスケジュールの完成を待って第１乃至第４のプログラムを演算しなくともよい。例えば、演算装置４００は、スケジューラ３００による割り当てスケジュールの作成と並行して、一番目のベース期間の先頭に割り当てられたプログラムから演算を実行してもよい。
【００４９】
図１に示すデータバス５００には、一時記憶装置３３１、入力装置３１２、及び出力装置３１３がさらに接続されている。一時記憶装置３３１には、スケジューラ３００及び演算装置４００により処理結果が逐次保存される。入力装置３１２には、プログラム記憶装置３３０に保存されるプログラム等が入力される。出力装置３１３は、スケジューラ３００が作成したプログラムの割り当てスケジュール、及び演算装置４００が演算したプログラムの演算結果等が出力される。
【００５０】
以上説明した第１の実施の形態に係る情報処理装置によれば、複数のプログラムの演算時間を、それぞれの演算周期に従いつつ、効率的にスケジューリングすることが可能となる。さらに、第１の実施の形態に係る情報処理装置によれば、各ベース期間にプログラムの演算時間を連続的に割り付けるため、演算装置４００の処理能力の無駄を省くことも可能となる。
【００５１】
（第２の実施の形態）
第２の実施の形態に係る、図１２に示す情報処理装置のプログラム記憶装置３３０には、第１の実施の形態と同じ第１乃至第３のプログラムが保存されている。また、第２の実施の形態に係るプログラム記憶装置３３０には、第４のプログラムの代わりに、例えば１０００ミリ秒の演算周期で演算される機能ブロックを３０個含む、第５のプログラムが保存されている。演算装置４００で１個の機能ブロックを演算するために必要な演算時間が２ミリ秒である場合、第５のプログラムを一回演算するために必要な演算時間は、６０ミリ秒である。
【００５２】
さらに、第２の実施の形態に係るプログラム記憶装置３３０には、他のプログラムの演算を開始した後、例えば３００ミリ秒から４００ミリ秒の間のタイミングに演算されるよう、ユーザにより指定された第１のタイミング指定プログラムが保存されている。第１のタイミング指定プログラムは、例えば、機能ブロックを５個含む。この場合、第１のタイミング指定プログラムを一回演算するために必要な演算時間は、１０ミリ秒である。
【００５３】
また、第２の実施の形態に係るプログラム記憶装置３３０には、他のプログラムの演算を開始した後、例えば８００ミリ秒から９００ミリ秒の間のタイミングに演算されるよう、ユーザにより指定された第２のタイミング指定プログラムが保存されている。第２のタイミング指定プログラムは、例えば、機能ブロックを１５個含む。この場合、第２のタイミング指定プログラムを一回演算するために必要な演算時間は、３０ミリ秒である。
【００５４】
単位時間算出部３０１は、第１の実施の形態と同様に、第１乃至第３のプログラム、及び第５のプログラムのそれぞれの演算周期の最大公約数を、単位時間として算出する。ここで、単位時間として算出される最大公約数は、１００ミリ秒である。また、演算回数算出部３０３は、第１乃至第３のプログラム、及び第５のプログラムのそれぞれの演算周期の最小公倍数を、第１乃至第３のプログラム、及び第５のプログラムの総ての演算が少なくとも１回完了するために必要な完了時間として算出する。ここで、完了時間として算出される最小公倍数は、１０００ミリ秒である。
【００５５】
演算回数算出部３０３は、完了時間までに、演算装置４００が第１乃至第３のプログラム、及び第５のプログラムのそれぞれを演算する合計演算回数を算出する。ここで、第１のプログラムの合計演算回数は１０回であり、第２のプログラムの合計演算回数は５回であり、第３のプログラムの合計演算回数は２回であり、第５のプログラムの合計演算回数は１回である。
【００５６】
第２の実施の形態に係るスケジューラ３０４は、優先割り当て部３０４をさらに備える。優先割り当て部３０４は、単位時間算出部３０１及び完了時間算出部３０２から、単位時間及び完了時間をそれぞれ受信する。さらに、優先割り当て部３０４は、完了時間を単位時間で割った数を、複数のベース期間の数として算出する。ここで、完了時間を単位時間で割った数は１０であるので、優先割り当て部３０４は、図１３に示すように、一番目乃至十番目のベース期間を設定する。また、図１２に示す優先割り当て部３０４は、プログラム記憶装置から、第１及び第２のタイミング指定プログラムの指定された演算タイミングと、演算時間を読み出す。
【００５７】
次に、優先割り当て部３０４は、図１３に示す一番目乃至十番目のベース期間の中に、第１乃至第３のプログラム、及び第５のプログラムの演算時間を割り当てる前に、第１及び第２のタイミング指定プログラムの演算時間を割り当てる。ここで、第１のタイミング指定プログラムは、３００ミリ秒から４００ミリ秒の間のタイミングに演算されるよう指定されている。そのため、優先割り当て部３０４は、四番目のベース期間の先頭に、第１のタイミング指定プログラムの１０ミリ秒の演算時間を割り当てる。また、第２のタイミング指定プログラムは、８００ミリ秒から９００ミリ秒の間のタイミングに演算されるよう指定されている。そのため、優先割り当て部３０４は、九番目のベース期間の先頭に、第２のタイミング指定プログラムの３０ミリ秒の演算時間を割り当る。
【００５８】
第２の実施の形態において、図１２に示す割り当て部３０５は、優先割り当て部３０４が、一番目乃至十番目のベース期間の中に、第１及び第２のタイミング指定プログラムのそれぞれの演算時間を割り当てた後、一番目乃至十番目のベース期間の中に、第１乃至第３のプログラム、及び第５のプログラムのそれぞれの演算時間を割り当てる。具体的には、割り当て部３０５は、図１４に示すように、まず一番目乃至三番目のベース期間の中に、第１の実施の形態と同様に、第１乃至第３のプログラムの演算時間を割り当てる。
【００５９】
また、四番目のベース期間の最初の１０ミリ秒には、既に第１のタイミング指定プログラムの演算時間が割り当てられているため、割り当て部３０５は、四番目のベース期間内の第１のタイミング指定プログラムの演算時間の次に、第１乃至第３のプログラム、及び第５のプログラムのそれぞれの演算時間を、演算周期が短い順に割り当てることを試みる。そこで、割り当て部３０５は、第１のタイミング指定プログラムの演算時間の次に、まず、第１のプログラムの演算時間を割り当てる。
【００６０】
また、割り当て部３０５は、四番目のベース期間内の第１のプログラムの演算時間の次に、三番目のベース期間の中に割り当てることができなかった、第２のプログラムの残されていた１０ミリ秒の演算時間を割り当てる。また、割り当て部３０５は、四番目のベース期間内の第２のプログラムの演算時間の次に、二番目のベース期間の中に割り当てることができなかった、第３のプログラムの残されていた１０ミリ秒の演算時間を割り当てる。その後、四番目のベース期間には、空き時間が２０ミリ秒残る。
【００６１】
そこで、割り当て部３０５は、四番目のベース期間内の第３のプログラムの演算時間の次に、第３のプログラムの次に演算周期が短い第５のプログラムの演算時間を割り当てることを試みる。しかし、第５のプログラムを一回演算するために必要な演算時間は、６０ミリ秒である。そのため、割り当て部３０５は、四番目のベース期間の中に、第５のプログラムの６０ミリ秒の演算時間のうち、最初の２０ミリ秒の演算時間のみを割り当てる。また、図１２に示す割り当て部３０５は、四番目のベース期間内に割り当てることができなかった第５のプログラムの残りの４０ミリ秒の演算時間を、後のベース期間の中に割り当てるべき演算時間として保持する。
【００６２】
その後、割り当て部３０５は、図１５に示すように、五番目乃至七番目のベース期間の中に、第１の実施の形態と同様に、第１乃至第３のプログラムの演算時間を割り当てる。次に、割り当て部３０５は、八番目のベース期間の中に、第１の実施の形態と同様に、まず、第１乃至第３のプログラムの演算時間を割り当てる。その後、八番目のベース期間には、空き時間が３０ミリ秒残る。
【００６３】
そこで、割り当て部３０５は、八番目のベース期間内の第３のプログラムの演算時間の次に、４番目のベース期間の中に割り当てることのできなかった、第５のプログラムの残されていた４０ミリ秒の演算時間を割り当てることを試みる。しかし、八番目のベース期間には、空き時間が３０ミリ秒しか残っていないので、割り当て部２０２は、第５のプログラムの残されていた４０ミリ秒の演算時間のうち、最初の３０ミリ秒の演算時間のみを割り当てる。また、図１２に示す割り当て部３０５は、八番目のベース期間内に割り当てることができなかった第５のプログラムの残りの１０ミリ秒の演算時間を、後のベース期間の中に割り当てるべき演算時間として、なお保持する。
【００６４】
次に、図１６に示すように、九番目のベース期間の最初の３０ミリ秒には、既に第２のタイミング指定プログラムの演算時間が割り当てられている。そのため、割り当て部３０５は、九番目のベース期間内の第２のタイミング指定プログラムの演算時間の次に、第１乃至第３のプログラム、及び第５のプログラムのそれぞれの演算時間を、演算周期が短い順に割り当てることを試みる。そこで、割り当て部３０５は、第２のタイミング指定プログラムの演算時間の次に、まず、第１のプログラムの演算時間を割り当てる。
【００６５】
また、割り当て部３０５は、九番目のベース期間内の第１のプログラムの演算時間の次に、第２のプログラムの６０ミリ秒の演算時間のうち、２０ミリ秒の演算時間を割り当てる。そして、図１２に示す割り当て部３０５は、九番目のベース期間内に割り当てることができなかった第２のプログラムの残りの４０ミリ秒の演算時間を、後のベース期間の中に割り当てるべき演算時間として保持する。
【００６６】
次に、割り当て部３０５は、十番目のベース期間の中に、まず、第１のプログラムの演算時間を割り当て、第１のプログラムの演算時間の次に、九番目のベース期間の中に割り当てることができなかった、第２のプログラムの残されていた４０ミリ秒の演算時間を割り当てる。また、割り当て部３０５は、十番目のベース期間内の第２のプログラムの演算時間の次に、八番目のベース期間の中に割り当てることができなかった、第５のプログラムの残されていた１０ミリ秒の演算時間を割り当て、演算時間の割り当てスケジュールの作成を終了する。
【００６７】
第２の実施の形態に係る情報処理装置のその他の構成要素は、第１の実施の形態と同様であるので、説明は省略する。プログラムの演算時間の割り当ては、自動的に行われることが好ましいものの、一部のプログラムについては、演算時間を割り当てるタイミングをユーザが指定したい場合も生じうる。これに対し、第２の実施の形態に係る情報処理装置によれば、タイミング指定プログラムについては、ユーザの指定どおりに演算時間を割り当て、その他のプログラムについては、自動的に、効率的な演算時間の割り当てを実施することが可能となる。
【００６８】
（その他の実施の形態）
上記のように本発明を実施の形態によって記載したが、この開示の一部をなす記述及び図面はこの発明を限定するものであると理解するべきではない。この開示から当業者には様々な代替実施の形態、実施例及び運用技術が明らかになるはずである。例えば、図１に示すプログラム記憶装置３３０に新たなプログラムが追加されたり、保存されていたプログラムの演算周期が変更されたり、保存されていたプログラムが削除されたりした場合、スケジューラ３００が自動的に、プログラムの演算時間の割り当てを再スケジューリングしてもよい。また、実施の形態に示した演算周期及び演算時間等はあくまで例示的なものである。例えば、プログラム記憶装置３３０に、１００ミリ秒の演算周期で演算されるプログラムと、２５０ミリ秒の演算周期で演算されるプログラムが保存されている場合、単位時間は５０ミリ秒であり、完了時間は５００ミリ秒である。この様に、本発明はここでは記載していない様々な実施の形態等を包含するということを理解すべきである。したがって、本発明はこの開示から妥当な特許請求の範囲の発明特定事項によってのみ限定されるものである。
【符号の説明】
【００６９】
３００・・・スケジューラ
３０１・・・単位時間算出部
３０２・・・完了時間算出部
３０３・・・演算回数算出部
３０４・・・優先割り当て部
３０５・・・割り当て部
３１２・・・入力装置
３１３・・・出力装置
３３０・・・プログラム記憶装置
３３１・・・一時記憶装置
４００・・・演算装置
５００・・・データバス
【図１】
2010160600.tif 000003
【図２】
2010160600.tif 000004
【図３】
2010160600.tif 000005
【図４】
2010160600.tif 000006
【図５】
2010160600.tif 000007
【図６】
2010160600.tif 000008
【図７】
2010160600.tif 000009
【図８】
2010160600.tif 000010
【図９】
2010160600.tif 000011
【図１０】
2010160600.tif 000012
【図１１】
2010160600.tif 000013
【図１２】
2010160600.tif 000014
【図１３】
2010160600.tif 000015
【図１４】
2010160600.tif 000016
【図１５】
2010160600.tif 000017
【図１６】
2010160600.tif 000018
【図１７】
2010160600.tif 000019