特開2019-200629(P2019-200629A)IP Force 特許公報掲載プロジェクト 2015.5.11 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ アズビル株式会社の特許一覧
特開2019-200629演算処理装置およびスケジューリング方法
<>
  • 特開2019200629-演算処理装置およびスケジューリング方法 図000003
  • 特開2019200629-演算処理装置およびスケジューリング方法 図000004
  • 特開2019200629-演算処理装置およびスケジューリング方法 図000005
  • 特開2019200629-演算処理装置およびスケジューリング方法 図000006
  • 特開2019200629-演算処理装置およびスケジューリング方法 図000007
  • 特開2019200629-演算処理装置およびスケジューリング方法 図000008
  • 特開2019200629-演算処理装置およびスケジューリング方法 図000009
  • 特開2019200629-演算処理装置およびスケジューリング方法 図000010
  • 特開2019200629-演算処理装置およびスケジューリング方法 図000011
  • 特開2019200629-演算処理装置およびスケジューリング方法 図000012
  • 特開2019200629-演算処理装置およびスケジューリング方法 図000013
  • 特開2019200629-演算処理装置およびスケジューリング方法 図000014
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】特開2019-200629(P2019-200629A)
(43)【公開日】2019年11月21日
(54)【発明の名称】演算処理装置およびスケジューリング方法
(51)【国際特許分類】
   G06F 9/48 20060101AFI20191025BHJP
【FI】
   G06F9/48 300G
   G06F9/48 300F
【審査請求】未請求
【請求項の数】9
【出願形態】OL
【全頁数】19
(21)【出願番号】特願2018-95171(P2018-95171)
(22)【出願日】2018年5月17日
(71)【出願人】
【識別番号】000006666
【氏名又は名称】アズビル株式会社
(74)【代理人】
【識別番号】100098394
【弁理士】
【氏名又は名称】山川 茂樹
(74)【代理人】
【識別番号】100064621
【弁理士】
【氏名又は名称】山川 政樹
(72)【発明者】
【氏名】松村 照子
(57)【要約】
【課題】実行負荷が大きいプログラムが含まれている場合でも、実行負荷の集中をリアルタイムで回避する。
【解決手段】負荷検出部16が、各プログラムPに関するマイクロプロセッサMPの実行負荷LD(t)をリアルタイムで検出し、リアルタイムスケジューリング処理部17Bが、検出した実行負荷LD(t)が基準しきい値Lthを上回った時点で、各プログラムPのうちからプログラム設定情報14Bにより調整可に設定されている調整対象プログラムを選択し、実行負荷LD(t)が基準しきい値Lth以下となるよう、調整対象プログラムの実行タイミングをシフトする。
【選択図】 図1
【特許請求の範囲】
【請求項1】
それぞれ個別の実行周期を有する複数のプログラムを、予めスケジューリングして得られた実行スケジュールにしたがって、単独または並列的にマイクロプロセッサで繰り返し実行する演算処理装置であって、
前記複数のプログラムのそれぞれに関する実行タイミングの調整可否を含むプログラム設定情報を記憶する記憶部と、
前記複数のプログラムに関する前記マイクロプロセッサの実行負荷をリアルタイムで検出する負荷検出部と、
前記実行負荷が基準しきい値を上回った時点で、前記複数のプログラムのうちから前記プログラム設定情報により調整可に設定されている調整対象プログラムを選択し、前記実行負荷が前記基準しきい値以下となるよう、前記調整対象プログラムの実行タイミングをシフトするリアルタイムスケジューリング処理部と
を備えることを特徴とする演算処理装置。
【請求項2】
請求項1に記載の演算処理装置において、
前記リアルタイムスケジューリング処理部は、過去に得られた前記実行負荷に基づいて、前記調整対象プログラムを各時刻にシフトした場合における推定負荷を計算し、得られた推定負荷が前記基準しきい値以下となるシフト先時刻に前記調整対象プログラムをシフトすることを特徴とする演算処理装置。
【請求項3】
請求項2に記載の演算処理装置において、
前記プログラム設定情報は、前記調整対象プログラムに関する実行周期の最小値を示す最小周期を含み、
前記リアルタイムスケジューリング処理部は、前記調整対象プログラムをシフトする際、前記調整対象プログラムの最小周期以降の対象期間から、前記シフト先時刻を選択することを特徴とする演算処理装置。
【請求項4】
請求項2に記載の演算処理装置において、
前記プログラム設定情報は、前記調整対象プログラムに関する実行周期の最大値を示す最大周期を含み、
前記リアルタイムスケジューリング処理部は、前記調整対象プログラムをシフトする際、前記調整対象プログラムの最大周期までの対象期間から、前記シフト先時刻を選択することを特徴とする演算処理装置。
【請求項5】
請求項2に記載の演算処理装置において、
前記プログラム設定情報は、前記調整対象プログラムに関する実行周期の最小値を示す最小周期と、前記調整対象プログラムに関する実行周期の最大値を示す最大周期とを含み、
前記リアルタイムスケジューリング処理部は、前記調整対象プログラムをシフトする際、前記調整対象プログラムの最小周期から最大周期までの対象期間から、前記シフト先時刻を選択することを特徴とする演算処理装置。
【請求項6】
請求項1に記載の演算処理装置において、
前記リアルタイムスケジューリング処理部は、過去に得られた前記マイクロプロセッサの実行負荷に基づいて、前記調整対象プログラムの実行タイミングを任意のシフト量だけ一括してシフトした場合における推定負荷を計算し、得られた推定負荷が前記基準しきい値以下となるシフト量に基づいて前記調整対象プログラムの各実行タイミングを一括してシフトすることを特徴とする演算処理装置。
【請求項7】
請求項1に記載の演算処理装置において、
前記リアルタイムスケジューリング処理部は、前記複数のプログラムのうち実行タイミングが時刻指定されたプログラムの実行により、特定の対象時刻でのみ前記実行負荷が前記基準しきい値を上回る場合、前記調整対象プログラムの実行タイミングのうち、前記対象時刻と対応する実行タイミングのみを予めシフトすることを特徴とする演算処理装置。
【請求項8】
請求項1〜請求項7のいずれかに記載の演算処理装置において、
前記実行スケジュールに基づく前記実行タイミングと、前記リアルタイムスケジューリング処理部により変更した実行タイミングとを、同一時間軸上に配置して画面表示するスケジューリング表示部をさらに備えることを特徴とする演算処理装置。
【請求項9】
それぞれ個別の実行周期を有する複数のプログラムを、予めスケジューリングして得られた実行スケジュールにしたがって、単独または並列的にマイクロプロセッサで繰り返し実行する演算処理装置で用いられるスケジューリング方法であって、
記憶部が、前記複数のプログラムのそれぞれに関する実行タイミングの調整可否を含むプログラム設定情報を記憶する記憶ステップと、
負荷検出部が、前記複数のプログラムに関する前記マイクロプロセッサの実行負荷をリアルタイムで検出する負荷検出ステップと、
リアルタイムスケジューリング処理部が、前記実行負荷が基準しきい値を上回った時点で、前記複数のプログラムのうちから前記プログラム設定情報により調整可に設定されている調整対象プログラムを選択し、前記実行負荷が前記基準しきい値以下となるよう、前記調整対象プログラムの実行タイミングをシフトするリアルタイムスケジューリング処理ステップと
を備えることを特徴とするスケジューリング方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、それぞれ個別の実行周期を有する複数のプログラムをスケジューリングするためのスケジューリング技術に関する。
【背景技術】
【0002】
産業用コントローラなどの演算処理装置では、それぞれ個別の実行周期を有する複数のプログラムを、予めスケジューリングした順序にしたがって、単独または並列的にマイクロプロセッサで繰り返し実行している。
各プログラムは、それぞれ個別の実行周期を有しているため、プログラムの組み合わせによっては処理集中により大きな実行負荷が生じ、マイクロプロセッサの処理能力が不足して、トラブルが発生する原因となる。
【0003】
従来、このような、実行負荷を平準化させて効率的にスケジューリングするための技術として、まず実行周期の長いプログラムを、その実行周期に応じた目盛間隔で時間軸上に実行開始点を割り当て、次に実行周期の長いプログラムを割り当てる際には、割当済プログラムの実行時間と重ならない目盛位置に実行開始点を割り当てる技術が提案されている(例えば、特許文献1など参照)。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2011−059858号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、このような従来技術では、各プログラムの実行周期に基づいて各プログラムをスケジューリングしているため、実行負荷が大きいプログラムが含まれている場合には、そのプログラムが実行されるタイミングごとに、マイクロプロセッサの処理能力が不足して、処理遅延などのトラブルが発生する原因となる。
【0006】
本発明はこのような課題を解決するためのものであり、実行負荷が大きいプログラムが含まれている場合でも、実行負荷の集中をリアルタイムで回避できるスケジューリング技術を提供することを目的としている。
【課題を解決するための手段】
【0007】
このような目的を達成するために、本発明にかかる演算処理装置は、それぞれ個別の実行周期を有する複数のプログラムを、予めスケジューリングして得られた実行スケジュールにしたがって、単独または並列的にマイクロプロセッサで繰り返し実行する演算処理装置であって、前記複数のプログラムのそれぞれに関する実行タイミングの調整可否を含むプログラム設定情報を記憶する記憶部と、前記複数のプログラムに関する前記マイクロプロセッサの実行負荷をリアルタイムで検出する負荷検出部と、前記実行負荷が基準しきい値を上回った時点で、前記複数のプログラムのうちから前記プログラム設定情報により調整可に設定されている調整対象プログラムを選択し、前記実行負荷が前記基準しきい値以下となるよう、前記調整対象プログラムの実行タイミングをシフトするリアルタイムスケジューリング処理部とを備えている。
【0008】
また、本発明にかかる上記演算処理装置の一構成例は、前記リアルタイムスケジューリング処理部が、過去に得られた前記実行負荷に基づいて、前記調整対象プログラムを各時刻にシフトした場合における推定負荷を計算し、得られた推定負荷が前記基準しきい値以下となるシフト先時刻に前記調整対象プログラムをシフトするようにしたものである。
【0009】
また、本発明にかかる上記演算処理装置の一構成例は、前記プログラム設定情報が、前記調整対象プログラムに関する実行周期の最小値を示す最小周期を含み、前記リアルタイムスケジューリング処理部は、前記調整対象プログラムをシフトする際、前記調整対象プログラムの最小周期以降の対象期間から、前記シフト先時刻を選択するようにしたものである。
【0010】
また、本発明にかかる上記演算処理装置の一構成例は、前記プログラム設定情報が、前記調整対象プログラムに関する実行周期の最大値を示す最大周期を含み、前記リアルタイムスケジューリング処理部は、前記調整対象プログラムをシフトする際、前記調整対象プログラムの最大周期までの対象期間から、前記シフト先時刻を選択するようにしたものである。
【0011】
また、本発明にかかる上記演算処理装置の一構成例は、前記プログラム設定情報が、前記調整対象プログラムに関する実行周期の最小値を示す最小周期と、前記調整対象プログラムに関する実行周期の最大値を示す最大周期とを含み、前記リアルタイムスケジューリング処理部は、前記調整対象プログラムをシフトする際、前記調整対象プログラムの最小周期から最大周期までの対象期間から、前記シフト先時刻を選択するようにしたものである。
【0012】
また、本発明にかかる上記演算処理装置の一構成例は、前記リアルタイムスケジューリング処理部が、過去に得られた前記マイクロプロセッサの実行負荷に基づいて、前記調整対象プログラムの実行タイミングを任意のシフト量だけ一括してシフトした場合における推定負荷を計算し、得られた推定負荷が前記基準しきい値以下となるシフト量に基づいて前記調整対象プログラムの各実行タイミングを一括してシフトするようにしたものである。
【0013】
また、本発明にかかる上記演算処理装置の一構成例は、前記リアルタイムスケジューリング処理部が、前記複数のプログラムのうち実行タイミングが時刻指定されたプログラムの実行により、特定の対象時刻でのみ前記実行負荷が前記基準しきい値を上回る場合、前記調整対象プログラムの実行タイミングのうち、前記対象時刻と対応する実行タイミングのみを予めシフトするようにしたものである。
【0014】
また、本発明にかかる上記演算処理装置の一構成例は、前記実行スケジュールに基づく前記実行タイミングと、前記リアルタイムスケジューリング処理部により変更した実行タイミングとを、同一時間軸上に配置して画面表示するスケジューリング表示部をさらに備えるものである。
【0015】
また、本発明にかかるスケジューリング方法は、それぞれ個別の実行周期を有する複数のプログラムを、予めスケジューリングして得られた実行スケジュールにしたがって、単独または並列的にマイクロプロセッサで繰り返し実行する演算処理装置で用いられるスケジューリング方法であって、記憶部が、前記複数のプログラムのそれぞれに関する実行タイミングの調整可否を含むプログラム設定情報を記憶する記憶ステップと、負荷検出部が、前記複数のプログラムに関する前記マイクロプロセッサの実行負荷をリアルタイムで検出する負荷検出ステップと、リアルタイムスケジューリング処理部が、前記実行負荷が基準しきい値を上回った時点で、前記複数のプログラムのうちから前記プログラム設定情報により調整可に設定されている調整対象プログラムを選択し、前記実行負荷が前記基準しきい値以下となるよう、前記調整対象プログラムの実行タイミングをシフトするリアルタイムスケジューリング処理ステップとを備えている。
【発明の効果】
【0016】
本発明によれば、検出した実行負荷が基準しきい値を上回った時点で、調整対象プログラムの実行タイミングが調整されるため、マイクロプロセッサの実行負荷の集中をリアルタイムで回避することが可能となる。
【図面の簡単な説明】
【0017】
図1】演算処理装置の構成を示すブロック図である。
図2】プログラム設定情報を示す構成例である。
図3】部分負荷調整処理例(最小周期)を示す説明図である。
図4】部分負荷調整処理例(最大周期)を示す説明図である。
図5】部分負荷調整処理例(最小・最大周期)を示す説明図である。
図6】全体負荷調整処理例(一括)を示す説明図である。
図7】プログラム設定情報を示す構成例(図6)である。
図8】全体負荷調整処理例(特定時刻)を示す説明図である。
図9】プログラム設定情報を示す構成例(図8)である。
図10】実行スケジュールの画面表示例である。
図11】リアルタイムスケジューリング処理を示すフローチャートである。
図12】警告画面の表示例である。
【発明を実施するための形態】
【0018】
次に、本発明の実施の形態について図面を参照して説明する。
[第1の実施の形態]
まず、図1を参照して、本発明の第1の実施の形態にかかる演算処理装置10について説明する。図1は、演算処理装置の構成を示すブロック図である。
この演算処理装置10は、産業用コントローラ、サーバ装置、PCなどの処理装置からなり、それぞれ個別の実行周期を有する複数のプログラムPを、予めスケジューリングした順序にしたがって、単独または並列的にマイクロプロセッサMPで繰り返し実行する装置である。
【0019】
図1に示すように、演算処理装置10は、主な機能部として、通信I/F部11、操作入力部12、表示部13、記憶部14、プログラム実行処理部15、負荷検出部16、およびスケジューラ17を備えており、内部バスBを介してデータやり取り可能に接続されている。
【0020】
これら機能部のうち、プログラム実行処理部15、負荷検出部16、およびスケジューラ17は、マイクロプロセッサMP、さらにはその周辺回路から構成されている。マイクロプロセッサMPは、記憶部14の処理用プログラム14Qを実行して、ハードウェアとソフトウェアとを協働させることにより、プログラム実行処理部15、負荷検出部16、およびスケジューラ17などの各種処理部を実現する機能を有している。
【0021】
通信I/F部11は、上位装置や各種機器(いずれも図示せず)との間でデータ通信を行う機能を有している。
操作入力部12は、キーボード、マウス、スイッチ、ボタンなどの操作入力装置からなり、オペレータの各種操作を検出する機能を有している。
表示部13は、LCDやLEDなどの表示装置からなり、設定内容やスケジューリング結果などの各種データを表示する機能を有している。
【0022】
記憶部14は、ハードディスクや半導体メモリなどの記憶装置からなり、マイクロプロセッサで実行する制御用プログラム14Pや処理用プログラム14Qのほか、スケジューリングに用いる各種処理データを記憶する機能を有している。
記憶部14で記憶する主な処理データとして、前述した実行スケジュール14Aに加えて、プログラム設定情報14B、実行負荷履歴情報14C、およびスケジュール調整情報14Dがある。
【0023】
プログラム設定情報14Bは、プログラム実行処理部15で実行する制御用プログラム14Pのスケジューリングに用いる各種設定データである。図2は、プログラム設定情報を示す構成例である。ここでは、プログラムPごとに、調整可否Q、実行時間(実行所要時間)R、実行開始(実行開始時刻)S、実行周期T、最小周期Tmin、および最大周期Tmaxが組として設定されている。
【0024】
このうち、調整可否Qは、リアルタイムスケジューリング時に実行スケジュール14Aの実行タイミングからプログラムPを前後に調整可能か否かを示すフラグである。図2の例では、5つのプログラムPA,PB,PC,PD,PEのうち、プログラムPEのみが調整可に設定されている。
【0025】
また、調整対象プログラムを複数用いる場合には、調整可否Qとして優先度を用い、優先度の高い調整対象プログラムから順に選択するようにしてもよい。これにより、1つの調整対象プログラムで実行負荷を軽減できない場合には、次に優先度の高い調整対象プログラムを選択して実行タイミングを調整することにより、実行負荷を軽減でき、より柔軟に対応することが可能となる。この際、優先度が同一の場合には周期が長い方を選択し、周期も同一の場合には後から追加されたプログラムを選択すればよい。
【0026】
実行負荷履歴情報14Cは、プログラム実行処理部15で過去に各プログラムPを実行した際に要した実行負荷LH(t)の履歴を示すデータである。実行負荷履歴情報14Cについては、プログラムPごとに実行負荷LH(t)を履歴として記録されているものとする。この場合、LH(t)は、直近に得られた実行負荷でもよく、複数個の実行負荷の移動平均値であってもよい。
【0027】
実行時間Rは、プログラムPの実行に要する時間である。実行周期Tは、プログラムPを繰り返し実行する基準周期(実行間隔)である。最小周期Tminは、調整可に設定されているプログラムの最小周期(最小実行間隔)である。最大周期Tmaxは、調整可に設定されているプログラムの最大周期(最大実行間隔)である。これらR,T,Tmin,Tmaxは、予め設定した一定時間長(例えば1時間)を有する単位時間の数で表されている。
【0028】
スケジュール調整情報14Dは、リアルタイムスケジューリング処理部17Bにより調整対象プログラムの実行タイミングを調整した結果を示す処理データである。
【0029】
プログラム実行処理部15は、スケジューラ17により予めスケジューリングして得られた記憶部14の実行スケジュール14Aに基づいて、単独または並列的に記憶部14に保存されている制御用プログラム14P(以下では、単にプログラムという場合もある)を、単独または並列的に繰り返し実行する機能を有している。
【0030】
負荷検出部16は、プログラム実行処理部15でプログラムPを実行した際に発生する、マイクロプロセッサMPの実行負荷をリアルタイムで検出する機能を有している。
【0031】
スケジューラ17は、記憶部14のプログラム設定情報14Bに基づいて、プログラム実行処理部15で実行するプログラムPのスケジューリングを行う機能を有している。
スケジューラ17は、主な処理部として、スケジューリング処理部17A、リアルタイムスケジューリング処理部17B、およびスケジューリング表示部17Cを備えている。
【0032】
スケジューリング処理部17Aは、各プログラムPの実行周期Tに基づいて各プログラムPをスケジューリングし、得られた実行スケジュール14Aを記憶部14に保存する機能を有している。スケジューリング処理部17Aにおけるスケジューリング処理は、例えば前述した特許文献1などの公知の技術に基づくものである。
【0033】
リアルタイムスケジューリング処理部17Bは、負荷検出部16で検出したマイクロプロセッサMPの実行負荷LD(t)と基準しきい値Lthとを比較することにより、マイクロプロセッサMPの高負荷状態を検出する機能と、実行負荷LD(t)が基準しきい値Lthを上回って高負荷状態となった時点で、プログラムPのうちからプログラム設定情報14Bにより調整可に設定されている調整対象プログラムを選択する機能と、実行負荷LD(t)が基準しきい値Lth以下となるよう、調整対象プログラムの実行タイミングを時間的にシフトする機能とを有している。
【0034】
この際、リアルタイムスケジューリング処理部17Bは、過去に得られた実行負荷LH(t)に基づいて、調整対象プログラムを各時刻にシフトした場合における推定負荷LE(t)を計算し、得られた推定負荷LE(t)が基準しきい値Lth以下となるシフト先時刻に調整対象プログラムをシフトする機能を有している。
【0035】
スケジューリング表示部17Cは、操作入力部12で検出されたオペレータ操作に応じて、記憶部14に保存されている実行スケジュール14Aを表示部13で画面表示する機能を有している。
【0036】
[第1の実施の形態の動作]
次に、本実施の形態にかかる演算処理装置10の動作について説明する。
リアルタイムスケジューリング処理部17Bは、マイクロプロセッサMPの実行負荷LD(t)が基準しきい値Lthを超えた場合、発生した高負荷状態をリアルタイムで回避するための部分負荷調整処理を実行する。部分負荷調整処理には、調整対象プログラムのシフト先時刻を選択する対象期間の違いに応じて、3つの処理方法がある。
【0037】
[部分負荷調整処理例(最小周期)]
まず、図3を参照して、調整対象プログラムの最小周期以降を対象期間とする場合について説明する。図3は、部分負荷調整処理例(最小周期)を示す説明図である。
図3には、図2のプログラム設定情報14Bにしたがって、5つのプログラムPA,PB,PC,PD,PEを、実行スケジュール14Aにしたがって、マイクロプロセッサMPで繰り返し実行する場合が示されている。
【0038】
時刻t0において、プログラムPA,PB,PC,PD,PEの実行が並列的に開始され、負荷検出部16で検出したマイクロプロセッサMPの実行負荷LD(t)が基準しきい値Lthを超えたものとする。
リアルタイムスケジューリング処理部17Bは、時刻t0において、LD(t)>Lthであることから、記憶部14のプログラム設定情報14Bに基づき調整対象プログラムPEを選択する。
【0039】
次に、リアルタイムスケジューリング処理部17Bは、記憶部14のプログラム設定情報14Bを参照し、PEの最小周期Tmin(PE)が「6」であることから、時刻t6以降を対象期間TXとして特定する。
この後、リアルタイムスケジューリング処理部17Bは、記憶部14の実行負荷履歴情報14Cに基づいて、TXに含まれる時刻tx(t6,t7,t8,…)ごとに、PEをtxで実行した場合における推定負荷LE(t)を計算する。
【0040】
この際、例えば、LE(t6)は、t6で実行されるプログラムPA,PB,PC,PDの実行負荷とPEの実行負荷との総和から計算され、LE(t7)は、t7で実行されるプログラムPCの実行負荷とPEの実行負荷との総和から計算される。
図3の例では、LE(t6)>Lthとなるものの、LE(t7)以降ではLE(tx)≦Lthとなるため、TXのうちから最先のt7がPEのシフト先時刻として選択される。
【0041】
これにより、リアルタイムスケジューリング処理部17Bは、PEの実行タイミングをシフト先時刻t7へ変更し、t7からPEの実行を開始するよう実行スケジュール14Aを部分的に調整する。
したがって、t1以降におけるマイクロプロセッサMPの実行負荷LD’(t)は、基準しきい値Lth以下となり、PEの最小周期Tmin(PE)を満足しつつ、マイクロプロセッサMPの実行負荷の集中がリアルタイムで回避されることになる。
【0042】
なお、t0におけるPEの実行については、直ちに停止してもよいが、今回は高負荷状態のままPEの実行を継続し、次回の同一実行タイミングで高負荷状態とならないよう、調整後の実行タイミングに基づいてPEを実行するようにしてもよい。この際、高負荷状態の検出タイミングがPEの実行終了間際であれば、PEを停止せずに高負荷状態のままPEの実行を継続してもよい。また、基準しきい値Lthを高低2種類を用意しておき、高いLthを超えるような高負荷状態が検出された場合に初めてPEの実行を直ちに停止するようにしてもよい。
【0043】
[部分負荷調整処理例(最大周期)]
次に、図4を参照して、調整対象プログラムの最大周期までを対象期間とする場合について説明する。図4は、部分負荷調整処理例(最大周期)を示す説明図である。
図4には、図2のプログラム設定情報14Bにしたがって、5つのプログラムPA,PB,PC,PD,PEを、実行スケジュール14Aにしたがって、マイクロプロセッサで繰り返し実行する場合が示されている。
【0044】
時刻t0において、プログラムPA,PB,PC,PD,PEの実行が並列的に開始され、負荷検出部16で検出したマイクロプロセッサMPの実行負荷LD(t)が基準しきい値Lthを超えたものとする。
リアルタイムスケジューリング処理部17Bは、時刻t0において、LD(t)>Lthであることから、記憶部14のプログラム設定情報14Bに基づき調整対象プログラムPEを選択する。
【0045】
次に、リアルタイムスケジューリング処理部17Bは、記憶部14のプログラム設定情報14Bを参照し、PEの最大周期Tmax(PE)が「12」であることから、PEの実行時間R(PE)=4を考慮して、時刻t0に続く時刻t1から時刻t15までを対象期間TXとして特定する。
この後、リアルタイムスケジューリング処理部17Bは、記憶部14の実行負荷履歴情報14Cに基づいて、TXに含まれる時刻tx(t1,t2,t3,…,t15)ごとに、PEをtxで実行した場合における推定負荷LE(t)を計算する。
【0046】
この際、例えば、LE(t1)は、t1で実行されるプログラムPB,PC,PDの実行負荷とPEの実行負荷との総和から計算される。
図4の例では、t6でLE(tx)>Lthとなるものの、PEの実行時間T(PE)に相当するtx(t1〜t4)ではLE(tx)≦Lthとなるため、TXのうちから最先のt1がPEのシフト先時刻として選択される。
【0047】
これにより、リアルタイムスケジューリング処理部17Bは、PEの実行タイミングをシフト先時刻t1へ変更し、t1からPEの実行を開始するよう実行スケジュール14Aを部分的に調整する。
したがって、t1以降におけるマイクロプロセッサMPの実行負荷LD’(t)は、基準しきい値Lth以下となり、PEの最大周期Tmax(PE)を満足しつつ、マイクロプロセッサMPの実行負荷の集中がリアルタイムで回避されることになる。
【0048】
[部分負荷調整処理例(最小・最大周期)]
次に、図5を参照して、調整対象プログラムの最小期以降から最大周期までを対象期間とする場合について説明する。図5は、部分負荷調整処理例(最小・最大周期)を示す説明図である。
図5には、図2のプログラム設定情報14Bにしたがって、5つのプログラムPA,PB,PC,PD,PEを、実行スケジュール14Aにしたがって、マイクロプロセッサで繰り返し実行する場合が示されている。
【0049】
時刻t0において、プログラムPA,PB,PC,PD,PEの実行が並列的に開始され、負荷検出部16で検出したマイクロプロセッサMPの実行負荷LD(t)が基準しきい値Lthを超えたものとする。
リアルタイムスケジューリング処理部17Bは、時刻t0において、LD(t)>Lthであることから、記憶部14のプログラム設定情報14Bに基づき調整対象プログラムPEを選択する。
【0050】
次に、リアルタイムスケジューリング処理部17Bは、記憶部14のプログラム設定情報14Bを参照し、PEの最小周期Tmin(PE)が「6」であり、PEの最大周期Tmax(PE)が「12」であることから、PEの実行時間R(PE)=4を考慮して、時刻t6から時刻t15までを対象期間TXとして特定する。
この後、リアルタイムスケジューリング処理部17Bは、記憶部14の実行負荷履歴情報14Cに基づいて、TXに含まれる時刻tx(t6,t7,…,t15)ごとに、PEをtxで実行した場合における推定負荷LE(t)を計算する。
【0051】
この際、例えば、LE(t6)は、t6で実行されるプログラムPA,PB,PC,PDの実行負荷とPEの実行負荷との総和から計算され、LE(t7)は、t7で実行されるプログラムPCの実行負荷とPEの実行負荷との総和から計算される。
図5の例では、LE(t6)>Lthとなるものの、LE(t7)以降ではLE(tx)≦Lthとなるため、TXのうちから最先のt7がPEのシフト先時刻として選択される。
【0052】
これにより、リアルタイムスケジューリング処理部17Bは、PEの実行タイミングをシフト先時刻t7へ変更し、t7からPEの実行を開始するよう実行スケジュール14Aを部分的に調整する。
したがって、t1以降におけるマイクロプロセッサMPの実行負荷LD’(t)は、基準しきい値Lth以下となり、PEの最小周期Tmin(PE)と最大周期Tmax(PE)の両方を満足しつつ、マイクロプロセッサMPの実行負荷の集中がリアルタイムで回避されることになる。
【0053】
[第1の実施の形態の効果]
このように、本実施の形態は、負荷検出部16が、各プログラムPに関するマイクロプロセッサMPの実行負荷LD(t)をリアルタイムで検出し、リアルタイムスケジューリング処理部17Bが、検出した実行負荷LD(t)が基準しきい値Lthを上回った時点で、各プログラムPのうちからプログラム設定情報14Bにより調整可に設定されている調整対象プログラムを選択し、実行負荷LD(t)が基準しきい値Lth以下となるよう、調整対象プログラムの実行タイミングをシフトするようにしたものである。
【0054】
一般的には、プログラムPの実行負荷を考慮せずにスケジューリングした実行スケジュール14Aにしたがって、プログラムPを単独または並列的にマイクロプロセッサMPで繰り返し実行する場合、実行負荷が大きいプログラムが含まれている場合には、マイクロプロセッサMPで実行負荷が集中することも考えられる。
本実施の形態によれば、検出した実行負荷LD(t)が基準しきい値Lthを上回った時点で、調整対象プログラムの実行タイミングが調整されるため、マイクロプロセッサMPの実行負荷の集中をリアルタイムで回避することが可能となる。
【0055】
また、本実施の形態において、リアルタイムスケジューリング処理部17Bが、過去に得られた実行負荷に基づいて、調整対象プログラムを各時刻にシフトした場合における推定負荷LE(t)を計算し、得られた推定負荷LE(t)が基準しきい値Lth以下となるシフト先時刻に調整対象プログラムをシフトするようにしてもよい。
これにより、履歴として得られた各プログラムPの実行負荷が推定負荷LE(t)の計算に用いられるため、各プログラムPの実行負荷を予め設定する必要がなくなる。このため、リアルタイムスケジューリングを導入するための準備作業を省くことができ、極めて容易にリアルタイムスケジューリングを実施することが可能となる。
【0056】
また、本実施の形態において、リアルタイムスケジューリング処理部17Bが、調整対象プログラムをシフトする際、調整対象プログラムの最小周期Tmin以降の対象期間TXから、シフト先時刻を選択するようにしてもよい。
これにより、調整対象プログラムの最小周期Tminを満足しつつ、マイクロプロセッサMPの実行負荷の集中をリアルタイムで回避することが可能となる。
【0057】
また、本実施の形態において、リアルタイムスケジューリング処理部17Bが、調整対象プログラムをシフトする際、調整対象プログラムの最大周期Tmaxまでの対象期間TXから、シフト先時刻を選択するようにしてもよい。
これにより、調整対象プログラムの最大周期Tmaxを満足しつつ、マイクロプロセッサMPの実行負荷の集中をリアルタイムで回避することが可能となる。
【0058】
また、本実施の形態において、リアルタイムスケジューリング処理部17Bが、調整対象プログラムをシフトする際、調整対象プログラムの最小周期Tminから最大周期Tmaxまでの対象期間TXから、シフト先時刻を選択するようにしてもよい。
これにより、調整対象プログラムの最小周期Tminおよび最大周期Tmaxの両方を満足しつつ、マイクロプロセッサMPの実行負荷の集中をリアルタイムで回避することが可能となる。
【0059】
[第2の実施の形態]
次に、本発明の第2の実施の形態にかかる演算処理装置10について説明する。
実行タイミングが時刻指定されたプログラムが新たに追加された場合や、任意のプログラムの実行タイミングが時刻指定で変更された場合、いずれかの時刻でマイクロプロセッサMPの実行負荷の集中が発生する可能性がある。本実施の形態では、プログラムの追加や実行タイミングの変更により、今後発生しうる高負荷状態を回避するための全体負荷調整処理について説明する。
【0060】
本実施の形態において、リアルタイムスケジューリング処理部17Bは、過去に得られた実行負荷LH(t)に基づいて、調整対象プログラムの実行タイミングをシフト量Δtだけ一括してシフトした場合における推定負荷LE(t)を計算し、得られた推定負荷LE(t)が基準しきい値Lth以下となるシフト量Δtに基づいて調整対象プログラムの各実行タイミングを一括してシフトする機能を有している。
なお、本実施の形態にかかる演算処理装置10のその他の構成については、第1の実施の形態と同様であり、ここでの説明は省略する。
【0061】
[第2の実施の形態の動作]
次に、図6および図7を参照して、本実施形態にかかる演算処理装置10の動作について説明する。図6は、全体負荷調整処理例(一括)を示す説明図である。図7は、プログラム設定情報を示す構成例(図6)である。
図6および図7には、4つのプログラムPA,PB,PC,PDのスケジューリングが完了している状況で、実行タイミングが時刻指定された新たなプログラムPEが追加された場合が示されている。このうちPCが調整対象プログラムであるものとする。
【0062】
まず、リアルタイムスケジューリング処理部17Bは、記憶部14の実行負荷履歴情報14Cに基づいて、PE追加後における各時刻tの推定負荷LE(t)を計算する。これにより、時刻t0,t6でLE(t)>Lthとなるため、調整対象プログラムPCの実行タイミングを一括してシフトさせる。
図6および図7の例では、PCの実行タイミングが時刻t0,t6,t12,t18,…であることから、シフト量Δtを単位時間ずつ順に増やして、Δtだけ一括してシフトした場合における推定負荷LE(t)を再計算する。
【0063】
この場合、Δt=1とした場合における推定負荷LE(t)が、すべての時刻tにおいてLE(t)≦Lthとなるため、リアルタイムスケジューリング処理部17Bは、PCの実行タイミングを、Δt=1ずつシフトした時刻t1,t7,t13,t19,…に一括変更する。この際、PCの実行タイミングを一括変更するため、PCの最小周期Tmin(PC)と最大周期Tmax(PC)は変化しない。
したがって、PE追加後における各時刻tのマイクロプロセッサMPの実行負荷LD’(t)は、基準しきい値Lth以下となり、時刻指定されたPEの実行タイミングに加えて、PCの最小周期Tmin(PC)と最大周期Tmax(PC)の両方を満足しつつ、マイクロプロセッサMPの実行負荷の集中が予め回避されることになる。
【0064】
[第2の実施の形態の効果]
このように、本実施の形態は、リアルタイムスケジューリング処理部17Bが、過去に得られた実行負荷LH(t)に基づいて、調整対象プログラムの実行タイミングをシフト量Δtだけ一括してシフトした場合における推定負荷LE(t)を計算し、得られた推定負荷LE(t)が基準しきい値Lth以下となるシフト量Δtに基づいて調整対象プログラムの各実行タイミングを一括してシフトするようにしたものである。
【0065】
これにより、実行タイミングが時刻指定されたプログラムが新たに追加された場合や、任意のプログラムの実行タイミングが時刻指定で変更された場合でも、これにより発生しうる、マイクロプロセッサMPの実行負荷の集中を、予め回避することが可能となる。
また、調整対象プログラムの実行タイミングは一括変更されるため、調整対象プログラムの最小周期Tminと最大周期Tmaxは変化しない。
このため、調整対象プログラムの最小周期Tminと最大周期Tmaxの両方を満足しつつ、マイクロプロセッサMPの実行負荷の集中を回避することが可能となる。
【0066】
なお、本実施の形態では、実行タイミングが時刻指定されたプログラムが新たに追加された場合や、任意のプログラムの実行タイミングが時刻指定で変更された場合を例として説明したが、これに限定されるものではなく、例えばリアルタイムで高負荷状態が検出した場合などのタイミングで、本実施の形態にかかる実行タイミングの調整を適用してもよい。
【0067】
[第3の実施の形態]
次に、実行タイミングが時刻指定されたプログラムが新たに追加された場合や、任意のプログラムの実行タイミングが時刻指定で変更された場合、いずれかの時刻でマイクロプロセッサMPの実行負荷の集中が発生する可能性がある。本実施の形態では、プログラムの追加や実行タイミングの変更により、今後発生しうる高負荷状態を回避するための全体負荷調整処理について説明する。
【0068】
本実施の形態において、リアルタイムスケジューリング処理部17Bは、過去に得られた実行負荷LH(t)に基づいて、調整対象プログラムのうち特定時刻の実行タイミングのみをシフトした場合における推定負荷LE(t)を計算し、得られた推定負荷LE(t)が基準しきい値Lth以下となるシフト先時刻に特定時刻の実行タイミングのみをシフトする機能を有している。
なお、本実施の形態にかかる演算処理装置10のその他の構成については、第1の実施の形態と同様であり、ここでの説明は省略する。
【0069】
[第3の実施の形態の動作]
次に、図8および図9を参照して、本実施形態にかかる演算処理装置10の動作について説明する。図8は、全体負荷調整処理例(特定時刻)を示す説明図である。図9は、プログラム設定情報を示す構成例(図8)である。
図8および図9には、4つのプログラムPA,PB,PC,PDのスケジューリングが完了している状況で、実行タイミングが時刻指定された新たなプログラムPEが追加された場合が示されている。このうちPCが調整対象プログラムであるものとする。
【0070】
まず、リアルタイムスケジューリング処理部17Bは、記憶部14の実行負荷履歴情報14Cに基づいて、PE追加後における各時刻tの推定負荷LE(t)を計算する。これにより、時刻t15でのみLE(t)>Lthとなるため、特定時刻t15から開始される調整対象プログラムPC(1)の実行タイミングだけシフトさせる。
図8および図9の例では、PCの最小周期Tmin(PC)が「4」で最大周期Tmax(PC)が「12」であり、PEの実行時間R(PE)=4であることから、図5の例を適用した場合、特定時刻t6から開始されるPC(0)を基準として時刻t12を除く時刻t10から時刻t21までが対象期間TXとなる。
【0071】
この後、リアルタイムスケジューリング処理部17Bは、記憶部14の実行負荷履歴情報14Cに基づいて、TXに含まれる時刻tx(t10,t11,t12,…,t21)ごとに、PEをtxで実行した場合における推定負荷LE(t)を再計算する。
この場合、時刻t10から時刻t14および時刻t16から時刻t21において、LE(t)≦Lthとなるため、TXのうちから時刻t12に最も近い時刻t11がPC(1)のシフト先時刻として選択される。
【0072】
これにより、リアルタイムスケジューリング処理部17Bは、PC(1)の実行タイミングをシフト先時刻t11へ変更し、t11からPC(1)の実行を開始するよう実行スケジュール14Aを調整する。
したがって、PE追加後における各時刻tのマイクロプロセッサMPの実行負荷LD’(t)は、基準しきい値Lth以下となり、時刻指定されたPEの実行タイミングに加えて、PCの最小周期Tmin(PC)と最大周期Tmax(PC)の両方を満足しつつ、マイクロプロセッサMPの実行負荷の集中が予め回避されることになる。
【0073】
[第3の実施の形態の効果]
このように、本実施の形態は、リアルタイムスケジューリング処理部17Bが、過去に得られた実行負荷LH(t)に基づいて、調整対象プログラムのうち特定時刻の実行タイミングのみをシフトした場合における推定負荷LE(t)を計算し、得られた推定負荷LE(t)が基準しきい値Lth以下となるシフト先時刻に特定時刻の実行タイミングのみをシフトするようにしたものである。
【0074】
これにより、実行タイミングが時刻指定されたプログラムが新たに追加された場合や、任意のプログラムの実行タイミングが時刻指定で変更された場合でも、これにより発生しうる、マイクロプロセッサMPの実行負荷の集中を、予め回避することが可能となる。
また、調整対象プログラムは特定時刻の実行タイミングのみをシフトされるため、実行タイミングの変更による影響を最低限に抑えることができる。
【0075】
この際、シフト先時刻を選択する対象範囲については、第1の実施の形態と同様、調整対象プログラムの最小周期Tmin以降、最大周期Tmaxまで、あるいは、最小周期Tminから最大周期Tmaxまでの間とすることにより、調整対象プログラムの最小周期Tminと最大周期Tmaxのいずれか一方、または両方を満足しつつ、マイクロプロセッサMPの実行負荷の集中を回避することが可能となる。
【0076】
なお、本実施の形態では、実行タイミングが時刻指定されたプログラムが新たに追加された場合や、任意のプログラムの実行タイミングが時刻指定で変更された場合を例として説明したが、これに限定されるものではなく、例えばリアルタイムで高負荷状態が検出した場合などのタイミングで、本実施の形態にかかる実行タイミングの調整を適用してもよい。
【0077】
[第4の実施の形態]
次に、本実施の形態にかかる演算処理装置10について説明する。
リアルタイムスケジューリング処理部17Bで調整対象プログラムの実行タイミングが調整された場合、オペレータが調整後の実行スケジュール14Aを画面で確認したい場合がある。本実施の形態は、操作入力部12で検出されたオペレータ操作に応じて、調整後の実行スケジュール14Aを画面表示する場合について説明する。
【0078】
本実施の形態において、リアルタイムスケジューリング処理部17Bは、調整対象プログラムの実行タイミングを時間的にシフトした結果、すなわちリアルタイムスケジューリング処理の結果を、記憶部14のスケジュール調整情報14Dに記録する機能と、新たに調整対象プログラムの実行タイミングを調整する場合、実行スケジュール14Aとスケジュール調整情報14Dとに基づいて実行タイミングを調整する機能を有している。
【0079】
また、スケジューリング表示部17Cは、実行スケジュール14Aを画面表示する際、実行スケジュール14Aに基づく実行タイミングと、リアルタイムスケジューリング処理部17Bにより変更したスケジュール調整情報14Dに基づく実行タイミングとを、同一時間軸上に配置して画面表示する機能と、リアルタイムスケジューリング処理部17Bで計算された、実行タイミングの変更後の各時刻におけるマイクロプロセッサMPの推定負荷LE(t)を表示部13で画面表示する機能とを有している。
【0080】
図10は、実行スケジュールの画面表示例である。ここでは、前述した図3のリアルタイムスケジューリング処理を実行した後における、調整後の実行スケジュールが示されている。
図10の例では、調整対象プログラムPEの実行タイミングとして、当初の実行スケジュール14Aに基づく時刻t0の実行タイミングと、リアルタイムスケジューリング処理部17Bでの調整に基づく時刻t7の実行タイミングとが、同一時間軸上に表示されている。
これにより、オペレータは、調整対象プログラムPEの実行タイミングが時刻t0から時刻t7に変更されたことを、極めて容易に把握することができる。
【0081】
スケジュール調整情報14Dについては、リアルタイムスケジューリング処理の実行ごとに追記し、例えば調整から一定時間経過した時点やオペレータ指示に応じて、実行スケジュール14Aに反映してもよい。
また、リアルタイムスケジューリング処理部17Bは、調整対象プログラムの実行タイミングを新たに調整する場合、実行スケジュール14Aとスケジュール調整情報14Dとに基づいて実行タイミングを調整するようにしてもよい。これにより、最新の実行スケジュールに基づき新たなリアルタイムスケジューリングを実行することができる。
【0082】
[第5の実施の形態]
次に、図11を参照して、本発明の第5の実施の形態にかかる演算処理装置10について説明する。図11は、リアルタイムスケジューリング処理を示すフローチャートである。
第1〜第3の実施の形態では、リアルタイムスケジューリング処理部17Bでの各種リアルタイムスケジューリングについてそれぞれ説明した。本実施の形態では、これら各種リアルタイムスケジューリングを使い分ける場合について説明する。
【0083】
リアルタイムスケジューリング処理部17Bは、プログラム実行処理部15による実行スケジュール14AにしたがったプログラムPの実行開始に応じて、図11のリアルタイムスケジューリング処理を実行する。
【0084】
まず、リアルタイムスケジューリング処理部17Bは、負荷検出部16で検出したマイクロプロセッサMPの実行負荷LD(t)と基準しきい値Lthとを比較することにより、マイクロプロセッサMPが高負荷状態か否か確認する(ステップS100)。
ここで、LD(t)がLthを上回っており、マイクロプロセッサMPが高負荷状態であることが検出された場合(ステップS100:YES)、リアルタイムスケジューリング処理部17Bは、後述するステップS102〜S104によりリアルタイムスケジューリングを実行する。
【0085】
一方、LD(t)がLth以下であり、マイクロプロセッサMPが高負荷状態でないことが検出された場合(ステップS100:NO)、リアルタイムスケジューリング処理部17Bは、プログラムの追加・変更により高負荷状態の発生が予測されるかどうか確認する(ステップS101)。
ここで、高負荷状態の発生が予測されない場合(ステップS101:NO)、ステップS100に戻る。一方、高負荷状態の発生が予測される場合(ステップS101:YES)、リアルタイムスケジューリング処理部17Bは、後述するステップS102〜S104によりリアルタイムスケジューリングを実行する。
【0086】
ステップS102において、リアルタイムスケジューリング処理部17Bは、マイクロプロセッサMPが高負荷状態が限定的か否か確認する(ステップS102)。
ここで、一定長の判定期間における高負荷状態の発生数(発生予測数)が予め設定されている規定回数以下であり、高負荷状態が限定的である場合(ステップS102:YES)、リアルタイムスケジューリング処理部17Bは、図3図5のいずれかで説明した部分負荷調整を実行する(ステップS103)。
【0087】
一方、一定長の判定期間における高負荷状態の発生数(発生予測数)が予め設定されている規定回数を上回り、高負荷状態が全体的である場合(ステップS102:NO)、リアルタイムスケジューリング処理部17Bは、図6または図8で説明した全体負荷調整を実行する(ステップS104)。
この後、リアルタイムスケジューリング処理部17Bは、部分負荷調整または全体負荷調整により、調整対象プログラムの実行タイミングを時間的にシフトした結果、すなわちスケジューリング結果を記憶部14に記録する(ステップS105)。
【0088】
次に、リアルタイムスケジューリング処理部17Bは、負荷検出部16で検出したマイクロプロセッサMPの実行負荷LD(t)と基準しきい値Lthとを比較することにより、マイクロプロセッサMPが高負荷状態か否か確認する(ステップS106)。
【0089】
ここで、高負荷状態が連続して検出されなかった場合(ステップS106:NO)、ステップS100に戻る。
一方、高負荷状態が連続して検出された場合(ステップS106:YES)、リアルタイムスケジューリング処理部17Bは、実行遅延の発生を回避できないと判定し、実行遅延に関係するプログラムPの実行状況を含む警告画面を表示部13で画面表示し(ステップS107)、ステップS100に戻る。
【0090】
図12は、警告画面の表示例である。ここでは、4つの警告が表形式されており、警告ごとに、アラームレベル、発生時刻、並列実行プログラム数、マイクロプロセッサMPの実行負荷、持続時間、遅延発生の有無が組として表示されている。
これにより、オペレータは、マイクロプロセッサMPにおける実行負荷の集中に関する発生状況を、極めて容易に確認することができる。
【0091】
[実施の形態の拡張]
以上、実施形態を参照して本発明を説明したが、本発明は上記実施形態に限定されるものではない。本発明の構成や詳細には、本発明のスコープ内で当業者が理解しうる様々な変更をすることができる。また、各実施形態については、矛盾しない範囲で任意に組み合わせて実施することができる。
【符号の説明】
【0092】
10…演算処理装置、11…通信I/F部、12…操作入力部、13…表示部、14…記憶部、14A…実行スケジュール、14B…プログラム設定情報、14C…実行負荷履歴情報、14D…スケジュール調整情報、14P…制御用プログラム、14Q…処理用プログラム、15…プログラム実行処理部、16…負荷検出部、17…スケジューラ、17A…スケジューリング処理部、17B…リアルタイムスケジューリング処理部、17C…スケジューリング表示部。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12