(57)【要約】【課題】タスクの優先度を高める場合においても、実行結果の精度低下を抑制可能な情報処理装置を提供する。【解決手段】情報処理装置１は、タスクの実行部１０と、キューイング部１２１と、頻度判断部１２２と、優先度変更部１２３と、順序維持部１２４と、を備える。キューイング部１２１は、各タスクの優先度に基づいて実行部１０におけるタスクの実行予定順を決定する。頻度判断部１２２は、実行頻度の低下した頻度低下タスクを判断する。優先度変更部１２３は、頻度低下タスクの優先度を高める。順序維持部１２４は、頻度低下タスクが実行結果を参照する関連タスクの優先度を、頻度低下タスクに対する実行予定順を維持するように高める。【選択図】図１
2020091540.tif 000002
【特許請求の範囲】
【請求項１】
タスクを順に実行する実行部（１０）と、
前記実行部による実行を待つ複数の前記タスクの実行予定順を、各前記タスクに設定された優先度に基づいて決定する順序決定部（１２１）と、
各前記タスクについて、実行頻度の低下した頻度低下タスクであるか否かを判断する頻度判断部（１２２）と、
前記頻度低下タスクの優先度を高める優先度変更部（１２３）と、
前記頻度低下タスクが、関連づけられた関連タスクの実行結果に基づいて実行される前記タスクである場合に、前記関連タスクの優先度を、前記頻度低下タスクに対する実行予定順を維持するように高める順序維持部（１２４）と、を備える情報処理装置。
【請求項２】
前記頻度判断部は、実行待ち数が変更閾値以上となった前記タスクを、前記頻度低下タスクと判断する請求項１に記載の情報処理装置。
【請求項３】
前記優先度変更部は、前記頻度低下タスクの優先度を高めた場合に、前記頻度低下タスクの実行待ち数を減少させる請求項２に記載の情報処理装置。
【請求項４】
前記優先度変更部は、前記頻度低下タスクの優先度を、各前記タスクに設定されたいずれの優先度のよりも高い優先度に変更する請求項１〜３のいずれか１項に記載の情報処理装置。
【請求項５】
前記順序維持部は、前記関連タスクと前記頻度低下タスクとが連続して実行されるように前記関連タスクの優先度を高める請求項１〜４のいずれか１項に記載の情報処理装置。
【請求項６】
前記順序維持部は、前記頻度低下タスクに対して複数の前記関連タスクが関連付けられている場合、各前記関連タスクの間の実行予定順を維持するように優先度を高める請求項１〜５のいずれか１項に記載の情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、複数のタスクの実行順を優先度に従って管理する情報処理装置に関する。
【背景技術】
【０００２】
特許文献１には、複数のタスクの実行順を制御する情報処理装置が開示されている。特許文献１の情報処理装置では、実行待ちしているタスクは、各タスクに設定された優先度に従う実行順で実行される。情報処理装置は、処理抜け頻度が処理抜け許容率以上となったタスクについて、優先度を高める。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１３−８８９３７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかし、制御されるタスクには、関連タスクの実行結果に基づいて実行されるため、関連タスクの後での実行が望ましいタスクが含まれうる。こうしたタスクは、優先度を高められた場合、実行順の変化に伴い関連タスク以前に実行されうる。故に、優先度を高められたタスクの実行結果において、関連タスクの実行結果が反映されず、精度の低下が生じえた。
【０００５】
本開示は、タスクの優先度を高める場合においても、実行結果の精度低下を抑制可能な情報処理装置の提供を目的とする。
【課題を解決するための手段】
【０００６】
上記目的は独立請求項に記載の特徴の組み合わせにより達成され、また、下位請求項は、本開示の更なる有利な具体例を規定する。特許請求の範囲に記載した括弧内の符号は、一つの態様として後述する実施形態に記載の具体的手段との対応関係を示すものであって、本開示の技術的範囲を限定するものではない。
【０００７】
上記目的を達成するための本開示の情報処理装置は、タスクを順に実行する実行部（１０）と、実行部による実行を待つ複数のタスクの実行予定順を、各タスクに設定された優先度に基づいて決定する順序決定部（１２１）と、各タスクについて、実行頻度の低下した頻度低下タスクであるか否かを判断する頻度判断部（１２２）と、頻度低下タスクの優先度を高める優先度変更部（１２３）と、頻度低下タスクが、関連づけられた関連タスクの実行結果に基づいて実行されるタスクである場合に、関連タスクの優先度を、頻度低下タスクに対する実行予定順を維持するように高める順序維持部（１２４）と、を備える。
【０００８】
以上の構成によれば、順序維持部は、頻度低下タスクの関連タスクを、頻度低下タスクに対する実行予定順を維持するように優先度を高める。この結果、頻度低下タスクは、優先度変更部により優先度を高められる場合においても、関連タスク以前となることなく実行される。故に、優先度の変更に伴い実行予定順が変化する場合においても、関連タスクの実行結果を反映してタスクを実行しうる。従って、タスクの優先度を高める場合においても、実行結果の精度低下が抑制される。
【図面の簡単な説明】
【０００９】
【図１】情報処理装置の構成を示す図である。
【図２】タスク割当管理部における処理を示すフローチャートである。
【図３】レディキューおよびキュー管理部の状態変化の例を示す図である。
【図４】実行部に対するタスクの割り当て順の例を示す図である。
【発明を実施するための形態】
【００１０】
図１に示す本開示の実施形態による情報処理装置１は、例えば車両において、エンジンの燃料噴射や点火時期を制御するエンジンＥＣＵとして用いられる電子制御装置である。情報処理装置１は、ソフトウェアを非一時的に記録した非遷移的かつ実体的な記憶媒体としてのメモリ、ソフトウェアを実行するプロセッサ、および入出力インターフェースなどを備えたマイクロコンピュータである。メモリには、リアルタイムオペレーティングシステム（以下、ＲＴＯＳ：Real-time operating system）のプログラムと、ＲＴＯＳ上で動作し、エンジンＥＣＵとしての機能を提供するアプリケーションプログラムとが格納されている。
【００１１】
情報処理装置１は、アプリケーションプログラムによる機能を実現するための種々の処理を、ＲＴＯＳにより実行される複数のタスクとして動作させる。タスクは、ＲＴＯＳにより規定されたひと纏まりの実行単位である。情報処理装置１は、各タスクの実行状態および実行順を管理し、各タスクを逐次的に実行する。情報処理装置１で実行されるタスクには、エンジンの各気筒に対する点火制御、クランク角の取得、空燃比の取得、アクセル開度の取得、燃料噴射量の算出、スロットルバルブの開度制御などに区分された処理が個別に設定されている。情報処理装置１は、各タスクの実行順を、各タスクに設定された優先度等に基づいて管理する。情報処理装置１は、プロセッサでＲＴＯＳのプログラムを実行することにより、実行部１０、割り込みコントローラ２０、およびタスク割当管理部１００としての機能を発揮する。
【００１２】
実行部１０は、プロセッサのうち各タスクを順に実行するために割り当てられた領域である。実行部１０は、各タスクに係る算術演算や論理演算などを行う演算回路や、各タスクに係るデータなどを一時的に格納するためのレジスタなどを含んでいる。実行部１０は、タスクの割り当て条件が成立すると、タスク割当管理部１００にタスクの割り当てを要求する。タスクの割り当て条件は、例えば実行中のタスクの実行開始から所定時間の経過や、実行中のタスクに係る一サイクルの演算の終了などである。実行部１０は、タスク割当管理部１００により新たなタスクの割り当てを受けると、実行中であったタスクがあればそのタスクに係る演算の進行状況やデータなどを退避させ、割り当てられたタスクの実行を開始する。実行部１０は、割り当てられた順に従って実行中のタスクを切り替えることにより、各タスクを見かけ上で並列して逐次的に実行する。
【００１３】
割り込みコントローラ２０は、各タスクの割り込み発生条件が成立しているか否かに基づいて、各タスクの割り込み要求を出力するモジュールである。各タスクの割り込み条件には、例えば情報処理装置１への入力信号の立ち上がりや所定時間の経過、データの転送完了などが個別に設定されている。割り込みコントローラ２０は、割り込み条件の成立したタスクについての割り込み要求を、タスク割当管理部１００に出力する。
【００１４】
タスク割当管理部１００は、例えばプロセッサのうち、実行部１０に割り当てられるタスクを管理するために割り当てられた領域である。タスク割当管理部１００は、割り込みコントローラ２０から各タスクについての割り込み要求を受け、各タスクに設定された優先度および割り込み要求を受けたタイミングに従って各タスクを実行部１０で実行されるタスクとして割り当てる。タスク割当管理部１００は、状態管理部１１０およびタスク制御部１２０としての機能を有する。
【００１５】
状態管理部１１０は、各タスクの実行状態を管理するための記憶領域である。状態管理部１１０は、レディキュー１１１、キュー管理部１１２、関連タスクテーブル１１３を含んでいる。
【００１６】
レディキュー１１１は、各タスクの割り込み要求を格納する領域である。各タスクの割り込み要求は、タスクに設定された優先度の一致する割り込み要求ごとに、割り込み要求を受けた順に従ってレディキュー１１１に格納される。格納された各タスクの割り込み要求は、実行部１０からタスクの割り当て要求を受けるたびに一つ取り出される。取り出された割り込み要求に対応するタスクが、実行部１０で次に実行されるタスクとして割り当てられる。従って、レディキュー１１１内の各割り込み要求の配列が、その時点における実行順の予定を示した「実行予定順」に相当する。
【００１７】
割り込み要求されたタスクの取り出しは、格納されている割り込み要求の中で、最も優先度の高いタスクの割り込み要求から順に行われる。本実施形態では、優先度として設定された数値が小さいほど、高い優先度であるとして扱う。最も優先度の高い割り込み要求が複数格納されている場合は、先に格納された割り込み要求のタスクから順に割り当てられる。従って実行予定順は、例えば格納された割り込み要求のいずれかよりも優先度の高い割り込み要求を新たに格納された場合など、実際に割り当てられるまでに変動しうる。
【００１８】
キュー管理部１１２は、レディキュー１１１に対する割り込み要求の格納を管理するためのデータを格納する領域である。キュー管理部１１２には、キューイング数、あらかじめ設定された優先度、および変更閾値が、タスク割当管理部１００で管理されるタスクごとに格納されている。キューイング数は、各タスクについてのレディキュー１１１に現在格納されている割り込み要求の数である。キューイング数は、実行を待っている各タスクの割り込み要求の数であり、「実行待ち数」に相当する。
【００１９】
優先度は、レディキュー１１１内で割り込み要求をソートするために、各タスクにあらかじめ設定されたパラメータである。優先度は、割り込み要求発生から割り当てまでの時間が短いことが好ましいタスクほど高く設定される。本実施形態の優先度は、０から４までの５段階が設定されている。各タスクには、通常優先度および一時優先度の二つまで優先度が設定可能となっている。通常優先度は、レディキュー１１１への格納にあたって参照される優先度である。一時優先度は、レディキュー１１１に格納された状態のタスクの実行予定順を変更する場合に、実行予定順を変更するタスクの割り込み要求に一時的に適用される優先度である。一時優先度は、通常優先度よりも高い優先度に設定されている。
【００２０】
変更閾値は、各タスクの割り込み要求に一時優先度を適用することにより、実行予定順を変更する条件としてあらかじめ設定されたパラメータである。実行予定順の変更は、いずれかのタスクが、実行頻度の低下した頻度低下タスクとなった場合に実施される。ただし、実行頻度が低下しているとは、各タスクに設定された許容される実行頻度範囲を下回っている状態を示す。本実施形態の変更閾値は、各タスクのキューイング数の閾値として設定されている。変更閾値は、想定される割り込み要求の発生頻度と、許容される実行頻度の下限とに基づいて設定される。例えば、割り込み要求の発生頻度が高いほど大きく、実行頻度の下限が高いほど小さい値に設定される。
【００２１】
本実施形態では、キュー管理部１１２には、タスクＡ、タスクＢ、およびタスクＣの三つのタスクについてキューイング管理のためのデータが格納されている。タスクＡは、現在のクランク角に基づいて、燃料噴射量を算出するタスクである。タスクＡには、通常優先度として４が設定され、一時優先度として１が設定されている。またタスクＡには、変更閾値として３が設定されている。
【００２２】
タスクＢは、クランク角を取得するタスクである。タスクＢで取得された最新のクランク角に基づいて、タスクＡが実行される。故にタスクＢには、タスクＡの直前に実行されるように、通常優先度としてタスクＡの通常優先度より一段階高い３が設定されている。またタスクＢには、一時優先度として０が設定され、変更閾値として４が設定されている。タスクＡおよびタスクＢの一時優先度の段階の差は、通常優先度の差と一致するように設定されている。すなわち、タスクＡの一時優先度である１に対して、タスクＢの一時優先度である０が一段階高く設定されている。タスクＢの割り込み要求は、ノイズ抑制等のため、タスクＡの割り込み要求よりも高い頻度で発生する。
【００２３】
タスクＣは、各気筒に対する点火処理を行うタスクである。タスクＣには、通常優先度として２が設定されている。タスクＣは、他のいずれのタスクよりも通常優先度が高く設定されており、実行頻度の低下を生じない。従って、タスクＣには、一時優先度および変更閾値が設定されていない。またタスクＡおよびタスクＢの一時優先度は、いずれのタスクに設定された通常優先度よりも高く設定されている。
【００２４】
関連タスクテーブル１１３は、各タスクと、当該タスクにあらかじめ関連付けられた関連タスクとの関係を格納する領域である。関連タスクは、あるタスクに対する一時優先度の適用により実行予定順が変更される場合に、連動して優先度を変更されるタスクである。関連タスクとして設定されるタスクは、例えばそのタスクの実行結果に基づいて他のタスクが実行されるタスクである。具体的には、所定のタスクの実行にあたって他のタスクの実行結果として得られたデータを参照する場合に、データを参照される側のタスクが、データを参照する側のタスクに対する関連タスクとしてあらかじめ設定されている。
【００２５】
例えば本実施形態においては、燃料噴射量を算出するタスクＡに対して、算出に当たって参照するクランク角を取得するタスクＢが関連タスクとして設定されている。タスクＡは、関連タスクであるタスクＢによる最新のクランク角に基づいて燃料噴射量を算出する。なお、本実施形態において関連タスクとして設定されているタスクには、上述した関係以外のタスクも含まれている。例えば本実施形態においては、タスクＢに対して、タスクＡが関連タスクとして設定されている。すなわち、データを参照する側のタスクについても、データを参照される側のタスクに対する関連タスクとして設定されている。関連タスクテーブル１１３は、キュー管理部１１２とは別に、テーブル形式で各タスクと関連タスクとの関係を格納している。
【００２６】
タスク制御部１２０は、状態管理部１１０に格納された各データに基づいて、割り込み要求の受付および実行部１０へのタスクの割り当てを制御する制御回路である。タスク制御部１２０は、キューイング部１２１、頻度判断部１２２、優先度変更部１２３、順序維持部１２４としての機能を発揮する。
【００２７】
キューイング部１２１は、割り込みコントローラ２０から出力された割り込み要求を受信した場合に、受信した割り込み要求をレディキュー１１１に格納する。キューイング部１２１は、割り込み要求を受信したタスクの通常優先度をキュー管理部１１２から読み出す。キューイング部１２１は、レディキュー１１１のうち、通常優先度に対応した範囲の最後尾に割り込み要求を格納する。すなわちキューイング部１２１は、実行予定順を、各タスクに設定された優先度のうち通常優先度に基づいて決定する「順序決定部」に相当する。キューイング部１２１は、割り込み要求を格納したタスクについて、キュー管理部１１２に格納されているキューイング数を格納完了時点の値に更新する。またキューイング部１２１は、レディキュー１１１から割り込み要求が取り出されて実行部１０に割り当てられた場合にも、キューイング数を更新する。
【００２８】
頻度判断部１２２は、各タスクについて、実行頻度の低下した頻度低下タスクであるか否かを判断する。本実施形態の頻度判断部１２２では、各タスクについてキュー管理部１１２に格納されたキューイング数、および変更閾値に基づいて頻度低下タスクであると判断する。頻度判断部１２２は、例えばキューイング部１２１がいずれかのタスクについて割り込み要求の格納およびキューイング数の更新を実施した場合に、タスクの更新後のキューイング数、および変更閾値を読みだす。頻度判断部１２２は、キューイング数が変更閾値以上である場合、割り込み要求を格納したタスクが頻度低下タスクとなっていると判断する。
【００２９】
優先度変更部１２３は、頻度判断部１２２により頻度低下タスクと判断されたタスクの優先度を高める。優先度変更部１２３は、レディキュー１１１に格納された頻度低下タスクの優先度を、通常優先度よりも高い一時優先度に変更させる。優先度変更部１２３は、優先度の変更にあたり、頻度低下タスクのキューイング数を減少させる。例えば優先度変更部１２３は、キューイング数を１まで減少させる。具体的には、優先度変更部１２３は、通常優先度に従って格納されていた頻度低下タスクの割り込み要求をレディキュー１１１から全て削除し、一時優先度に従う割り込み要求を１つのみレディキュー１１１に改めて格納する。優先度変更部１２３は、一時優先度に従う割り込み要求を格納すると、キューイング数を更新して１とする。
【００３０】
順序維持部１２４は、頻度低下タスクに関連付けられた関連タスクについて、頻度低下タスクに対する実行予定順を維持するように優先度を高める。すなわち、頻度低下タスクの優先度を高める前における実行予定順の前後関係が、頻度低下タスクの優先度を高めた後においても維持されるように優先度を変更する。順序維持部１２４は、いずれかのタスクが頻度判断部１２２により頻度低下タスクであると判断されると、そのタスクの関連タスクを関連タスクテーブル１１３から読み出す。また順序維持部１２４は、関連タスクテーブル１１３から読み出した関連タスクについて、一時優先度をキュー管理部１１２から読み出す。順序維持部１２４は、関連タスクの優先度を、通常優先度よりも高い優先度である一時優先度に変更させる。
【００３１】
タスクＡおよびタスクＢに設定された一時優先度の差は、通常優先度の段階の差と一致するように設定されている。従って、タスクＡおよびタスクＢの一方が頻度低下タスクとなった場合、他方である関連タスクの優先度は、頻度低下タスクに対する関連タスクの相対的な実行予定順を維持されるように変更される。また、タスクＡおよびタスクＢの一時優先度は、いずれのタスクの通常優先度よりも高く、かつ優先度の差が一段階となるように設定されている。この結果、タスクＡおよびタスクＢの一方が頻度低下タスクとなった場合、他方である関連タスクは、頻度低下タスクと連続して実行されるように優先度を変更される。順序維持部１２４は、関連タスクの優先度の変更にあたり、関連タスクのキューイング数を減少させる。例えば順序維持部１２４は、関連タスクのキューイング数を１まで減少させる。
【００３２】
［タスク制御部１２０の作動］
タスク制御部１２０の作動例を説明する。タスク制御部１２０は、割り込みコントローラ２０から割り込み要求を受けた場合に、図２のフローチャートに示す処理をＳ１から順に実行する。
【００３３】
Ｓ１では、割り込み要求を受けたタスクについて通常優先度を取得し、取得した通常優先度に従ってタスクの割り込み要求をレディキュー１１１に格納する。Ｓ２では、Ｓ１で割り込み要求を格納したタスクのキューイング数を更新する。
【００３４】
Ｓ３では、Ｓ２でキューイング数を更新したタスクが、頻度低下タスクであるか否かを判断する。すなわち、更新したタスクのキューイング数が変更閾値以上となっているか否かを判断する。変更閾値以上となっている場合には頻度低下タスクであるとしてＳ４に進み、変更閾値未満である場合は頻度低下タスクでないとして図２に示す処理を終了する。
【００３５】
Ｓ４では、Ｓ３で頻度低下タスクであると判断されたタスクについて、関連タスクテーブル１１３に関連タスクが設定されているか否かを判断する。関連タスクが設定されている場合はＳ５に進み、設定されていない場合にはＳ７に進む。
【００３６】
Ｓ５では、通常優先度に従ってキューイングされた関連タスクの割り込み要求を削減し、一つの割り込み要求のみレディキュー１１１に残す。
【００３７】
Ｓ６では、関連タスクとして設定されたタスクの一時優先度を取得し、レディキュー１１１内に残された関連タスクに係る割り込み要求の優先度を、通常優先度から一時優先度に変更させる。優先度の変更に従って、関連タスクに係る割り込み要求の位置が移動し、実行予定順が更新される。
【００３８】
Ｓ７では、通常優先度に従ってキューイングされた頻度低下タスクの割り込み要求を削減し、一つの割り込み要求のみレディキュー１１１に残す。
【００３９】
Ｓ８では、頻度低下タスクの一時優先度を取得し、レディキュー１１１内に残された頻度低下タスクに係る割り込み要求の優先度を、通常優先度から一時優先度に変更する。優先度の変更に従って頻度低下タスクに係る割り込み要求の位置が移動し、実行予定順が更新される。
【００４０】
図２に示したタスク制御部１２０の作動に伴う、レディキュー１１１およびキュー管理部１１２の状態変化の例を説明する。図３には、タスクＡのキューイング数が２となっていたレディキュー１１１に対して、タスクＡの割り込み要求が更に格納される場合の挙動を示している。図２に示したＳ１およびＳ２により、レディキュー１１１内の優先度４の範囲の最後尾に、タスクＡの割り込み要求が更に格納され、キュー管理部１１２に格納されたタスクＡのキューイング数が２から３に更新される。この結果、Ｓ３でタスクＡが頻度低下タスクであると判断され、またＳ４でタスクＢが頻度低下タスクの関連タスクであると判断される。
【００４１】
Ｓ５およびＳ６により、レディキュー１１１内の優先度３の範囲に格納されたタスクＢの割り込み要求のうち、一つのみが優先度０の範囲に移動され、残りは全て削除される。また、タスクＢのキューイング数は１に更新される。Ｓ７およびＳ８により、レディキュー１１１内の優先度４の範囲に格納されたタスクＡの割り込み要求のうち、一つのみが優先度１の範囲に移動され、残りは全て削除される。また、タスクＡのキューイング数は１に更新される。
【００４２】
タスク制御部１２０の作動に伴う実行部１０において実行されるタスクの時間変化の例を図４に沿って説明する。図４は、例えば車両の高速走行などにより、通常優先度の高いタスクＣの割り込み要求頻度が高まった状態において、実行部１０で実行されるタスクの切替わりを示す。通常優先度の高いタスクＣの割り込み要求が増加することにより、通常優先度の最も低いタスクＡは割り込み要求を受けているにも拘らず実行されない状態となっている。
【００４３】
時刻ｔ１に、タスクＡの割り込み要求を受けてタスクＡのキューイング数が３となったとする。この結果、タスクＡが頻度低下タスクと判断され、またタスクＢが頻度低下タスクに対する関連タスクであると判断される。タスクＡおよびタスクＢは一時優先度に従ってレディキュー１１１内の位置を変更される。時刻ｔ２に実行部１０に対するタスクの割り当てが発生し、一時優先度として優先度０となっているタスクＢが割り当てられる。時刻ｔ３にタスクＣの割り込み要求が発生しているが、タスクＣの通常優先度は、タスクＡの一時優先度である優先度１より低い優先度２である。従って、時刻ｔ４に再び実行部１０に対するタスクの割り当てが発生すると、タスクＡは、タスクＢの直後にタスクＣより優先して割り当てられる。
【００４４】
［実施形態のまとめ］
以上、説明した実施形態によれば、順序維持部１２４は、頻度低下タスクの関連タスクを、頻度低下タスクに対する実行予定順を維持するように優先度を高める。この結果、頻度低下タスクは、優先度変更部１２３により優先度を高められる場合においても、関連タスク以前の実行となることなく実行される。故に、優先度の変更に伴い実行予定順が変化する場合においても、関連タスクの実行結果を反映してタスクを実行しうる。従って、頻度低下タスクの優先度を高める場合においても、実行結果の精度低下が抑制される。
【００４５】
加えて本実施形態では、頻度判断部１２２は、キューイング数が変更閾値以上となったタスクを頻度低下タスクと判断する。こうした判断によれば、個々のタスクに対してタイマや抜け率の算出部などを新たに設けることなく、実行頻度の低下を判断可能となる。従って、実行頻度の判断に係るコストを抑制可能となる。
【００４６】
また本実施形態では、優先度変更部１２３は、頻度低下タスクの優先度を高めた場合に頻度低下タスクの実行待ち数を減少させる。実行待ち数の減少により、頻度低下タスクの実行待ち数が再び変更閾値以上となるまでの時間が延長される。故に、頻度低下タスクと判断されることに伴う優先度変更部１２３による優先度の変更の発生が抑制される。従って、頻度低下タスクよりも優先度の高いタスクの実行頻度低下が抑制される。
【００４７】
さらに本実施形態では、優先度変更部１２３は、頻度低下タスクの優先度を、各タスクに設定された通常優先度よりも高い優先度に変更する。故に、頻度判断部１２２により頻度低下タスクが発生していると判断されてから、関係タスク以外のタスクの割り当てを待つことなく実行部１０に割り当てられる。この結果、頻度低下タスクは、頻度低下タスクと判断されてから実行までの期間を短縮される。
【００４８】
また本実施形態では、順序維持部１２４は、頻度低下タスクの実行予定順を関連タスクの直後とするように関連タスクの優先度を高める。故に、頻度低下タスクは、関連タスクの割り当てから、他のタスクの割り当てを待つことなく実行部１０に割り当てられる。この結果、頻度低下タスクは、より新しい関連タスクの実行結果に基づいて実行されうる。従って、頻度低下タスクの実行結果の精度をより向上しうる。
【００４９】
＜他の実施形態＞
以上、本開示の実施形態を説明したが、本開示は上述の実施形態に限定されるものではなく、次の変形例も本開示の技術的範囲に含まれ、さらに、下記以外にも要旨を逸脱しない範囲内で種々変更して実施できる。なお、以下の説明において、それまでに使用した符号と同一番号の符号を有する要素は、特に言及する場合を除き、それ以前の実施形態における同一符号の要素と同一である。また、構成の一部のみを説明している場合、構成の他の部分については先に説明した実施形態を適用できる。
【００５０】
上述の実施形態においては、頻度判断部１２２は、キューイング数に基づいて頻度低下タスクであるか否かを判断していた。しかし、各タスクの処理抜け率や待ち時間などを用いて判断する構成でもよい。またこの場合には、優先度を変更する場合においてキューイング数を削減しなくてもよい。
【００５１】
上述の実施形態においては、頻度低下タスクおよび関連タスクの一時優先度は、どのタスクの通常優先度よりも高く、かつ異なる優先度に設定されていた。しかし、頻度低下タスクの関連タスクに対する実行予定順が維持可能であれば、設定される一時優先度はこれに限られない。例えば、同じ一時優先度を設定し、通常優先度の差による元の実行予定順に従う順序で移動先の優先度に格納する構成でもよい。またこの場合、一時優先度がいずれかのタスクの通常優先度と一致していてもよい。
【００５２】
上述の実施形態においては、タスク割当管理部１００の管理するタスクとして三つのタスクが設定され、あるタスクに対して、関連タスクとして一つのタスクのみが設定されていた。しかし、タスクの数は三つ以上あってもよく、またその場合にはあるタスクに対して複数のタスクが関連タスクとして設定されていてもよい。例えば、タスク割当管理部１００の管理するタスクとして、空燃比を取得するタスクやアクセル開度を取得するタスク、スロットル開度を算出するタスクなどが更に設定されていてもよい。
【００５３】
また燃料噴射量を算出するタスクに対する関連タスクとして、クランク角を取得するタスクに加えて、空燃比を取得するタスクが設定されていてもよい。複数の関連タスクが設定されている場合には、順序維持部１２４は、各関連タスクの間の実行予定順についても関係を維持するように、各関連タスクの優先度を変更すればよい。こうした構成によれば、一つのタスクに対して複数の関連タスクが設定されている構成においても、設計時に想定された実行順を維持して優先度を高めることが可能となる。また、関連タスクには、頻度低下タスクと実行予定順が連続していないタスクが含まれていてもよい。
【００５４】
上述の実施形態においては、所定のタスクに対して、そのタスクの実行結果を参照するタスクも関連タスクとして設定されていた。しかし、こうしたタスクが関連タスクに設定されていなくてもよい。
【００５５】
上述の実施形態においては、順序維持部１２４は、頻度低下タスクに関連タスクが設定されている場合には、必ず関連タスクの優先度も変更していた。しかし、関連タスクの優先度を変更せず、頻度低下タスクの優先度のみを変更する場合があってもよい。例えば、関連タスクのキューイング数が十分小さい場合には、関連タスクは十分な実行頻度で周期的に実行されている可能性が高い。故に、関連タスクの優先度を変更することなく関連タスクの実行結果を参照して頻度低下タスクが実行可能であるとみなせる。従って順序維持部１２４は、関連タスクのキューイング数が所定の維持閾値未満である場合には、関連タスクの優先度を通常優先度のまま維持し、頻度低下タスクのみ優先度を変更する構成とすることもできる。こうした構成によれば、関連タスクよりも優先度の高いタスクの実行頻度低下を抑制して、頻度低下タスクの実行頻度を維持しうる。
【００５６】
上述の実施形態においては、情報処理装置１はエンジンＥＣＵとして用いられる電子制御装置であった。しかし、情報処理装置１の用途はこれに限られず、メモリに格納されるアプリケーションソフトウェアを適宜変更し、他の用途に利用可能である。
【００５７】
上述の実施形態においては、タスク割当管理部１００による実行部１０に対する割り当ては、所定時間の経過またはサイクルの終了時に実行されるとしていた。しかし、優先度に基づいた割り当て方法であれば、割り当ての判断タイミングなどはこれに限られず適宜変更可能である。一例として、所定の周期ごとに実行中のタスクよりも優先度の高いタスクがレディキュー１１１に格納されているか否かを判断し、優先度の高いタスクが格納されていればそのタスクに切り替える方法が採用可能である。こうした切替えが実施された場合には、実行中であったタスクは一連のサイクルの処理の進行状況などを退避させるとともに、レディキュー１１１の先頭に割り込み要求を格納される。
【符号の説明】
【００５８】
１  情報処理装置、  １０  実行部、  １２１  キューイング部（順序決定部）、  １２２  頻度判断部、  １２３  優先度変更部、  １２４  順序維持部
【図１】
2020091540.tif 000003
【図２】
2020091540.tif 000004
【図３】
2020091540.tif 000005
【図４】
2020091540.tif 000006