(57)【要約】【課題】複数のコアを有するプロセッサを用いたシステムにおいて、複数のコア上で同時に異なる処理を行った際の処理時間の変動を低減することを可能にし、これによりシステムの挙動予測性を高め、実行時間制約の保証可能性を高める。【解決手段】本発明に係る演算制御装置は、複数のコアを有するプロセッサと、前記複数のコアに対し、タスクを割り当てるタスク割当部とを備える演算制御装置である。前記タスク割当部は、前記タスクを構成する複数のサブタスクを並列化処理の対象とすることが可能であるか否かを判断し、並列化処理が可能である場合には、所定の条件下で前記複数のサブタスクを前記複数のコアに割り当てるよう構成される。【選択図】図１
2020095441.tif 000002
【特許請求の範囲】
【請求項１】
複数のコアを有するプロセッサと、
前記複数のコアに対し、タスクを割り当てるタスク割当部と
を備える演算制御装置であって、
前記タスク割当部は、
前記タスクを構成する複数のサブタスクを並列化処理の対象とすることが可能であるか否かを判断し、並列化処理が可能である場合には、所定の条件下で前記複数のサブタスクを前記複数のコアに割り当てるよう構成される
ことを特徴とする演算制御装置。
【請求項２】
前記タスクにパラメータを付与するパラメータ付与部を更に備え、
前記パラメータ付与部は、タスクが他のタスクに比べ優先的に処理されるべき度合を示す優先度をパラメータとして付与し、
前記並列化処理の対象とされた前記サブタスクの優先度を、並列化前の元のタスクの優先度とは異なる優先度に変更する、請求項１に記載の演算制御装置。
【請求項３】
前記パラメータ付与部は、前記タスクが処理される周期を示すタスク制御周期、及び前記複数のタスクの依存関係を示すタスク依存関係をパラメータとして付与し、
前記タスク割当部は、前記タスク制御周期及び前記タスク依存関係に基づいて、前記複数のコアに対し前記タスクを割り当てる、請求項２に記載の演算制御装置。
【請求項４】
前記タスクは、前記タスク制御周期とは無関係に発生するイベント駆動処理タスクを含み、
前記パラメータ付与部は、前記並列化処理の対象とされた前記サブタスクに対し、前記イベント駆動処理タスクよりも高い優先度をパラメータとして付与する、請求項３に記載の演算制御装置。
【請求項５】
前記タスクは、タスク制御周期とは無関係に発生するイベント駆動処理タスクを含み、
前記タスク割当部は、前記タスク制御周期を有するタスクを前記複数のコアのうちの第１のコアに割り当て、前記イベント駆動処理タスクを前記第１のコアとは異なる第２のコアに割り当てる、請求項１に記載の演算制御装置。
【請求項６】
前記タスク割当部は、前記複数のサブタスクを、並列化前サブタスク、前記並列化前サブタスクの実行後に実行される並列化対象サブタスク、及び前記並列化対象サブタスクの実行後に実行される並列化後サブタスクに分割し、前記並列化対象サブタスクが前記並列化処理の対象とされるよう前記複数のコアにタスクを割り当てる、請求項１に記載の演算制御装置。
【請求項７】
前記並列化対象サブタスクは、前記並列化前サブタスク及び前記並列化後サブタスクよりも高い優先度を設定される、請求項６に記載の演算制御装置。
【請求項８】
前記並列化対象サブタスクは、分割前の元のタスクよりも高い優先度を設定される、請求項６又は７に記載の演算制御装置。
【請求項９】
前記タスクにパラメータを付与するパラメータ付与部を更に備え、
前記パラメータ付与部は、タスクの処理が完了すべき時刻を示すデッドラインをパラメータとして付与し、
前記並列化処理の対象とされた前記サブタスクのデッドラインを変更する、請求項１に記載の演算制御装置。
【請求項１０】
前記プロセッサは、複数のコアの性能が互いに異なるヘテロジニアスプロセッサである、請求項１に記載の演算制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算制御装置に関し、より詳しくはマルチコア又はメニーコアと言われる複数コアを有するプロセッサを制御する演算制御装置に関する。
【背景技術】
【０００２】
近年、組込み用プロセッサにおける性能向上が進み、高負荷な演算処理の導入が自動車（特に自動運転）、ビッグデータ処理、創薬、遺伝子解析、産業機器等の分野において進んでいる。その結果、それらの分野における制御装置において求められる処理性能が増大している。このため、マルチコアもしくはメニーコアプロセッサなど複数コアを有するプロセッサを活用した制御装置（ECU: Electronic Control Unit）が採用され、その処理性能向上が求められている。
【０００３】
例えば自動車分野においては、高度な自動運転システムの実現に向け、自動運転を制御する上位の制御装置である自動運転ＥＣＵを筆頭に、制御装置の処理負荷の増大が課題となっている。このため、自動車分野においても、２コア、４コア、８コアといったマルチコアプロセッサの導入が開始されている。今後も更にコア数は増大し、コア数が例えば１０以上のメニーコアプロセッサの利用開始も想定される。
【０００４】
一方で、同分野におけるソフトウェア設計においては、例えばモデルベースデザインからの自動ソースコード生成など、シングルコアプロセッサ向けの設計手法が依然用いられる場合がある。シングルコアプロセッサ向けの既存の設計手法のまま単純にマルチコアプロセッサやメニーコアプロセッサに移行するだけでは、今後の負荷増大トレンドにおける、これらプロセッサの性能メリットを活かすことが難しくなる。特許文献１ではこのような背景に対し、マルチコアプロセッサに対して複数のタスクを効率的に割り当てる（準最適なスケジューリングを提供する）例が開示されている。
【０００５】
一方で、特許文献１では、通常時は事前に規定されるスケジューリング方式に基づき各プロセッサコアへの処理を割り当てた静的なスケジューリングを用いるが、負荷が高い状況において、タスクを効率的に実行するための動的スケジューリングを行う例が示されている。自動車分野や産業機器分野においては、制御の安定性のため実行時間制約を保証することが強く求められるが、同文献については実行時間制約への言及はなく、仮に通常動作時（静的スケジューリングで動作する場合）には設計者により適切なスケジューリングが行われていたとしても、少なくとも動的にスケジューリングを行った際の実行時間制約の保証は困難である。特にマルチコアプロセッサにおいては、ある処理が別の処理の実行時間へ影響を与える場合がある。この場合、実行時間の制約を保証することが困難になり得る。このため、実行時間制約を満たすためには、複数のコア上で同時に演算を行った際の処理時間の変動に対応するための方法が必要となる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００８−１７１１５３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
本発明の目的は、上述のような複数のコアを有するプロセッサを用いたシステムにおいて、複数のコア上で同時に異なる処理を行った際の処理時間の変動を低減することを可能にし、これによりシステムの挙動予測性を高め、実行時間制約の保証可能性を高めることを可能にした演算制御装置を提供することである。
【課題を解決するための手段】
【０００８】
本発明に係る演算制御装置は、複数のコアを有するプロセッサと、前記複数のコアに対し、タスクを割り当てるタスク割当部とを備える演算制御装置である。前記タスク割当部は、前記タスクを構成する複数のサブタスクを並列化処理の対象とすることが可能であるか否かを判断し、並列化処理が可能である場合には、所定の条件下で前記複数のサブタスクを前記複数のコアに割り当てるよう構成される。
【発明の効果】
【０００９】
本発明によれば、マルチコアプロセッサを用いる演算制御装置において、複数のコア上で同時に異なる処理を行った際の処理時間の変動を低減することを可能にし、これによりシステムの挙動予測性を高め、実行時間制約の保証可能性を高めることができる。
【図面の簡単な説明】
【００１０】
【図１】第１の実施の形態に係るマルチコアプロセッサの演算制御装置のうち、演算処理に関連する構成部分を示した概略ブロック図である。
【図２】第１の実施の形態における、演算制御装置１と、ソフトウェアコンポーネント（搭載機能）との関係を示す概略図である。
【図３】ソフトウェアコンポーネント（搭載機能）の依存関係の一例を説明する概略図である。
【図４】ソフトウェアコンポーネント（搭載機能）と、対応するタスクとの関係を示す表である。
【図５】演算制御装置１に割り当てられる搭載機能をモデルベース設計手法により表現した図である。
【図６】モデルベース設計時に演算制御装置１に割り当てられる搭載機能に対応するタスクを表す表である。
【図７】第１の実施の形態において、タスクの各々について付与される各種のパラメータの一例を説明する表である。
【図８】第１の実施の形態における、データ依存関係を示すタスクグラフの一例である。
【図９】第１の実施の形態において、タスクの各々に付与される優先度のパラメータの一例を示す表である。
【図１０】第１の実施の形態において、タスクＤ内でのサブタスクの並列化を行わない場合のタイムチャートの一例である。
【図１１】タスクＤにおいて、並列化処理可能なサブマスクを並列化処理した場合におけるタスクグラフと、設定される平均実行時間との関係を示す表である。
【図１２】第１の実施の形態において、タスクＤ内のサブタスクを並列化した場合におけるタイムチャートの一例である。
【図１３】第１の実施の形態における、イベント駆動処理タスクＨが発生したことに起因して時間制約違反が発生した場合におけるタイムチャートの一例である。
【図１４】第１の実施の形態の変形例１における、タスクＤの並列化と優先度設定方法を示す図である。
【図１５】第１の実施の形態の変形例１における、タスク優先度パラメータの設定例を示すリストである。
【図１６】第１の実施の形態の変形例２における動作を示すタイムチャートの一例である。
【図１７】第２の実施の形態に係るマルチコアプロセッサの演算制御装置のうち、演算処理に関連する構成部分を示した概略ブロック図である。
【図１８】第２の実施の形態において、タスクの各々について付与される各種のパラメータの一例を説明する表である。
【図１９】第２の実施の形態における、デッドラインパラメータの設定例を示すリストである。
【発明を実施するための形態】
【００１１】
以下、添付図面を参照して本実施形態について説明する。添付図面では、機能的に同じ要素は同じ番号又は対応する番号で表示される場合もある。なお、添付図面は本開示の原理に則った実施形態と実装例を示しているが、これらは本開示の理解のためのものであり、決して本開示を限定的に解釈するために用いられるものではない。本明細書の記述は典型的な例示に過ぎず、本開示の特許請求の範囲又は適用例を如何なる意味においても限定するものではない。
【００１２】
本実施形態では、当業者が本開示を実施するのに十分詳細にその説明がなされているが、他の実装・形態も可能で、本開示の技術的思想の範囲と精神を逸脱することなく構成・構造の変更や多様な要素の置き換えが可能であることを理解する必要がある。従って、以降の記述をこれに限定して解釈してはならない。
【００１３】
［第１の実施の形態］
図１を参照して、第１の実施の形態に係る演算制御装置を説明する。以下では、コアの数が８個であるマルチコアプロセッサを制御する演算制御装置を例として説明するが、コアの個数は特定のものに限定されるものではない。例えば、コアが１０個以上のメニーコアプロセッサを制御する演算制御装置にも、本開示の技術的思想の範囲と精神を逸脱することなく、同様の方式の採用が可能である。
【００１４】
図１は、第１の実施の形態に係るマルチコアプロセッサの演算制御装置のうち、演算処理に関連する構成部分を示した概略ブロック図である。演算制御装置１は、パラメータ付与部１０１と、マルチコアプロセッサ１０２と、タスク割当部１０３とを備える。
【００１５】
パラメータ付与部１０１は、車両を制御するために必要となるハードウェア及びソフトウェアに関する情報をパラメータとしてタスクに付与し、記憶部に記憶する機能を有する。ハードウェアに関するパラメータには、マルチコアプロセッサ１０２のマルチコア構成、バス配線情報、センサ（図示せず）のセンシング情報（センサ値）等が含まれる。
【００１６】
パラメータ付与部１０１に記憶されるパラメータは、タスク割当部１０３による割当を行う場合の判断指標ともなり得る。一例として、パラメータ付与部１０１は、タスク制御周期パラメータ記憶部１０１１と、タスク優先度パラメータ記憶部１０１２と、タスク依存関係パラメータ１０１３とを備える。タスク制御周期パラメータ記憶部１０１１は、マルチコアプロセッサ１０２により実行される各タスクの制御周期を規定するパラメータを記憶する。また、タスク優先度パラメータ記憶部１０１２は、各タスクが他のタスクとの関係で優先して処理（実行）されるべき度合を示す優先度を規定するパラメータを記憶する。
【００１７】
タスク依存関係パラメータ記憶部１０１３は、タスク間の依存関係を示す依存関係パラメータを記憶する。依存関係パラメータは、例えばあるタスクＡで処理した結果を次のタスクＢの入力として処理するため、タスクＡの終了がタスクＢの開始条件となるような関係を示す。
【００１８】
マルチコアプロセッサ１０２は、複数のコア１〜８を有しており、各コア１〜８はそれぞれ並列にタスク処理を実行可能に構成されている。一例として、マルチコアプロセッサ１０２は、性能の異なる２種類のコアを４コアずつ有することができる。ここでは、相対的に性能の高いコア１〜４を高速動作コア１０２１、性能の低いコア５〜８を低速動作コア１０２２と呼称する。性能の段階は２段階には限られず、３段階以上であってもよいし、全てのコアが同一の性能を有していてもよい。
【００１９】
タスク割当部１０３は、パラメータ付与部１０１から取得されたパラメータ（タスク制御周期、タスク優先度、タスク依存関係など）に基づき、各タスクをマルチコアプロセッサ１０２の各コアへ割り当てる。
【００２０】
このような演算制御装置１に対して要求される搭載機能は、いくつかの形式により与えられる。例えば、図２に示すように、各種機能１、２、３、４・・・が、ソフトウェアコンポーネントとしてＣ言語などのソースコードにて記載されて演算制御装置１に与えられる場合を考える。
【００２１】
この場合、同ソースコードに基づき、図３に示すように、各機能１、２、３、４・・・（ソフトウェアコンポーネント間）の依存関係が解読される。例えば、機能２は、機能１の実行が完了した後において実行が可能であり、機能３は機能２の実行が完了した後において実行が可能であることがソースコードに基づき解読される。
【００２２】
さらに、各機能１、２、３、４・・・をマルチコアプロセッサ１０２に割り当てるためのタスクが定義される。各機能１、２、３、４（ソフトウェアコンポーネント）とタスクとの関係の一例を図４に示す。
【００２３】
また異なる入力情報の例として、図５のようなモデルベース設計手法にて記述されたモデルが与えられた場合には、図６のように各機能と対応させる形でタスクが定義される。例えば、機能２、４中のサブ機能２−１、２−２、２−３、４−１、４−２に対しても、それぞれ対応するタスクが定義される。
【００２４】
タスクが定義されると、図７のテーブルに示すように、タスクの各々について、各種のパラメータが、例えばソフトウェアコンポーネントのソースコードに基づいて生成される。一例としては、図７に示すように、平均実行時間（高速コアを用いた場合）、各タスクに含まれるサブタスクの並列化の可否、及びタスク制御周期等のパラメータが生成される。このうちタスク制御周期のパラメータは、タスク制御周期パラメータ記憶部１０１１に記憶される。
なお、図７は、機能１〜４とは別の、イベント駆動処理（割り込み処理）に対応するタスクＨについても平均実行時間を計算し、パラメータを決定した場合について示している。
【００２５】
図８に、図７に示したタスクを実行する場合のタスクグラフの一例を示す。タスクグラフは、演算制御装置１により、タスク制御周期、タスク依存関係、その他のパラメータに従って生成される。各タスクは、同一のタスク制御周期を有するタスク毎に分類されるとともに、タスク依存関係に従って順序付けされる。この例では、３０ｍｓの制御周期で動作するタスクＡ〜Ｅについての１のタスクグラフが形成され、５０ｍｓの制御周期で動作するタスクＦ、Ｇについて別のタスクグラフが形成されている。
【００２６】
図８に例示されるタスクグラフでは、各タスク間の矢印によりタスク間の依存関係が表現されている。この依存関係は、タスク依存関係パラメータ１０１３に記述される。このようなタスクグラフが形成されると、直列に並ぶ複数のタスクの組は、マルチプロセッサ１０２中の１つのコアにおいて実行され、異なる組のタスクは、異なるコアにおいて実行され得る。例えば、タスクＡ、Ｂ、Ｅは、コア１において実行され、タスクＣ、Ｄはコア２において実行され、タスクＦ、Ｇはコア３にて実行され得る。
【００２７】
また、タスクが定義されると、タスク毎に優先度がパラメータとして定義され、タスク優先度パラメータ記憶部１０１２に記憶される。図９は、各タスクについて定義された優先度の一例を示している。この図９の数字は、小さい数字であるほど優先度が高いことを意味している。例えば、タスクＦ、Ｇは優先度「１５」であり、タスクＡ〜Ｅの方がより高い優先度「１０」を有する。タスクＨは、これよりも更に高い優先度「５」を有する。この例では、タスク制御周期が短いタスクほど、高い優先度を与える、という制御ポリシーにより、優先度及びタスク制御周期が各タスクに与えられている。
【００２８】
上述のようにして決定されたタスク制御周期、依存関係、優先度に従って各タスクを実行した（演算を実行した）場合におけるタイムチャートの一例を図１０に示す。この図１０では、コア上でのタスク切り替えや、タスク分割に伴う時間オーバヘッドは発生しないものと仮定している。
【００２９】
タスク依存関係パラメータに従った依存関係に基づき、３０ｍｓのタスク制御周期を有するタスクＡ〜Ｅが実行される。このとき、タスクＡ、ＢとタスクＣ、Ｄとは、異なるコア１、２により並列に（同時に）実行され得る。しかし、Ａ、Ｃ、Ｄ、Ｅはその順に実行されなければならず、このため、その処理がネック（クリティカルパス）となり、個々のタスクの実行時間次第では、３０［ｍｓ］の周期制約を満たすことは出来ず、時間制約違反が生じてしまう。
【００３０】
そこで、本実施の形態では、クリティカルパス上にある複数のタスクＡ、Ｃ、Ｄ、Ｅのうち、更に複数のサブタスクに分割され、しかもそのサブタスクが並列化可能なタスクに関し、所定の条件下で並列化を実行することで、実行時間を短縮する。サブタスクへの分割は、タスク割当部１０３において、タスク制御周期パラメータ、タスク優先度パラメータ、タスク依存関係等に基づいて判断され、実行され得る。
【００３１】
図１１に、タスクＤを複数のサブタスクＤｐｒｅ、Ｄｐ０〜Ｄｐ３、及びＤｐｏｓｔに分割し、その一部のサブタスク（例えばサブタスクＤｐ０〜Ｄｐ３）を並列化した場合におけるタスクグラフと、決定される平均実行時間（高速コアの使用時）の例を示す。
【００３２】
１つのタスクＤから生成された複数のサブタスクは、その中の少なくとも２以上が並列化され、異なるコアにおいて同時に実行可能とされることにより、タスクの総実行時間（平均）を短縮することができる。
【００３３】
好適には、タスクＤ中の複数のサブタスクを並列化するにあたり、複数のサブタスクを並列化前サブタスクＤｐｒｅ（２１）、並列化対象サブタスクＤｐ（２２）（Ｄｐ０〜Ｄｐ３）、及び並列化後サブタスクＤｐｏｓｔ（２３）に分割することができる。並列化前サブタスクＤｐｒｅ１は、タスクＤ中のサブタスク中で最初に実行されるサブタスクである。この並列化前サブタスクＤｐｒｅ１の実行後、複数の並列化対象サブタスクＤｐが並列に、複数のコアにおいて実行され得る。また、並列化後サブタスクＤｐｏｓｔは、並列化対象サブタスクＤｐ１〜Ｄｐ３の実行が全て終了した場合に実行されるタスクである。このように、並列化対象サブタスクＤｐの前後に、並列化の対象外のサブタスクを置くことで、実行時間の予測が容易になるとともに、演算制御装置１での処理負荷も軽減することができる。
【００３４】
図１１のように、１つのタスクＤが複数のサブタスクに分割される場合、サブタスクの各々の平均実行時間（高速コアの使用時）の合計Ｔtotalは、元のタスクＤの平均実行時間Ｔｄ以下となるように設定する。前述のように、コア上でのタスク切替や、タスク分割に伴う時間オーバヘッドは仮定しないならば、平均実行時間の合計Ｔtotalは、元のタスクＤの平均実行時間Ｔｄと等しい値とすることができる（５×６＝３０ｍｓ）。なお、この新たに生成されたサブタスクＤｐｒｅ、Ｄｐ０〜Ｄｐ３、Ｄｐｏｓｔの間の依存関係、及び平均実行時間は、パラメータ付与部１０１に記憶される。
【００３５】
図１１のようにしてタスクＤが複数のサブタスクに分割され且つ並列化処理された場合におけるタイムチャートの一例を、図１２に示す。この例では、３０ｍｓの制御周期を満足するため、並列化処理が可能なサブタスクＤｐ０〜Ｄｐ３が優先的に処理され、その前に並列化前サブタスクＤｐｒｅがタスクＣの実行終了後に処理を開始される。並列化処理の開始の際、コア１上でタスクＢが実行中であれば、それを一度中断することもできる。これにより、４つのコア１〜４の全てを実行可能状態とすることができ、それぞれにサブタスクＤｐ０〜Ｄｐ３を割り当て、４つのコア１〜４において同時に処理を開始することができる。サブタスクＤｐ０〜Ｄｐ３に関しては、並列化前サブタスクＤｐｒｅの終了後、同期信号を発生させることにより、処理の開始タイミングが揃うようにすることが好適である。サブタスクＤｐ０〜タスクＤｐ３の実行が全て終了すると、その後に並列化後サブタスクＤｐｏｓｔの実行を開始することができる。また、コア１では、中断していたタスクＢの実行を再開することができる。
【００３６】
また、５０ｍｓのタスク制御周期を有しコア３で実行中であるタスクＦも、タスクＢと同様に、並列化処理が開始可能となった段階で、一度処理を中断する。その後、並列化処理の対象とされたサブタスクＤｐ２の実行をコア３において開始する。サブＤｐ３の終了後、コア３では再び中断されていたタスクＦの処理が再開される。
【００３７】
なお、タスクＦもタスクＤと同様に、サブタスクに分解して並列化処理が可能であれば（図７参照）並列化処理の対象としてもよいことは言うまでもない。ただし、タスクＦは、タスクＤとは異なり、タスク制御周期が長く、このため、優先度がタスクＡ〜Ｅに比べ低い。このため、並列化処理を実行しなくても、所定のタスク制御周期の中で処理を終了することができる。このため、図１２の例では、タスクＦに関してはサブタスクの並列化処理は実行していない。このように、並列化処理が可能なタスクにおいても、定められたタスク制御周期の中で処理を完了することが可能であれば並列化処理を実行しないことを選択することが可能である。なお、タスクＦをサブタスクＦｐに分解して並列化処理を実行する場合においては、サブタスクＦｐの優先度は、分割前のタスクＦの優先度に比べ低く設定することができる。
【００３８】
＜変形例１＞
図１３〜図１５は、第１の実施の形態の変形例１を示している。この変形例１は、並列化対象サブタスクＤｐ０〜Ｄｐ３のコア１〜４での処理中に割込みタスクＨが発生した場合を想定しており、図１３はそのタイムチャートの一例を示している。
【００３９】
タスクＨが発生した場合、タスクＨは、例えばコア４において、サブタスクＤｐ３の実行を中断して実行される。イベント駆動処理タスクであるタスクＨは、タスク制御周期を有するタスクＡ〜Ｇとは異なり、タスク制御周期とは無関係にイベントの発生に対応してランダムに生成される。このため、タスクＨは、設計者が事前に実施タイミングを設計することは難しい。なお、発生ベースでのタスクＨの実行を可能にするため、タスクＨの優先度は、一般に他のタスクに比べ高く設定され得る。
【００４０】
しかし、並列化後サブタスクＤｐｏｓｔは、並列化対象サブタスクＤｐの完了後に実行可能となる。このため、タスクＨの動作によりタスクＤｐｏｓｔの実行開始時刻が遅れると、結果、タスクＡ〜Ｅについての処理がタスク制御周期中に完了せず、時間制約違反が発生する虞がある（図１３参照）。
【００４１】
このように、イベント駆動処理（割込み処理）など、優先度が並列化対象サブタスクに対して高く設定されるタスクが存在する場合、並列化対象サブタスクの一部の処理が中断され、実行時間制約を満たすことができない場合があり得る。
【００４２】
そこで、この第１の実施の形態の変形例１では、図１４及び図１５に示すように、全てのサブタスクに対し同一の優先度Ｐｄを与える代わりに、並列化対象サブタスクＤｐの優先度を、並列化処理前サブタスク、及び並列化処理後タブタスクに比較して高い優先度Ｐｈｉｇｈに変更する。この優先度Ｐｈｉｇｈは、イベント駆動処理タスクＨの優先度よりも高くされる。例えば、並列化前サブタスクＤｐｒｅ及び並列化後サブタスクＤｐｏｓｔに対しては、その前後のタスクＣ、Ｅの優先度と同一の優先度（例：Ｐｄ＝１５）を付与する一方、並列化対象サブタスクＤｐ０〜Ｄｐ３に対しては、タスクＣ，Ｅ、更にはタスクＨよりも高い優先度（例：Ｐｈｉｇｈ＝１）を付与する。
【００４３】
このように、並列化前サブタスクＤｐｒｅ及び並列化後サブタスクＤｐｏｓｔに関しては、並列化前の優先度を引き継ぎ、他タスクＡ〜Ｃ、Ｅ〜Ｈ等との関係で優先度の調整を行ことができる。例えば、元のタスクＤよりも高い優先度を有する他のタスクがあれば、そちらを優先して実行するよう、優先度を調整することはできる。ただし、並列化対象サブタスクＤｐ０〜Ｄｐ３については、他のタスクによる動作阻害が発生した際の実行ゆらぎが、直接的に実行時間制約の違反に繋がってしまう。そのため、並列化対象サブタスクＤｐ０〜Ｄｐ３のみについては可能な限り最大の優先度を与える。これにより、並列化対象サブタスクを含む一連のタスクについて、動作保証を行うことができる。
【００４４】
＜変形例２＞
図１６は、第１の実施の形態の変形例２を示している。この変形例２は、変形例１と同様に、タスクＡ〜Ｇのコア１〜４での処理中に割込みタスクＨが発生した例を示す。ただし、この変形例２は、割り込みタスクＨが発生した場合において、コア５を割り込みタスクＨの処理専用として利用するよう、タスク割当部１０３が構成されている。
【００４５】
第１の実施の形態を適用するにあたり、イベント駆動処理であるタスクＨの動作を阻害することは不可能である場合は、タスクＨについて別途専用にコアを定義することが可能である。この場合、タスク制御周期を有するタスクＡ〜Ｇの処理のためのコア群（コア１〜４）と、イベント駆動処理専用のコア群（コア５）の２種類が存在するマルチコアプロセッサ１０２を利用することができる。マルチコアプロセッサ１０２がこのような構成を取る場合、イベント駆動処理専用コア（コア５）を別途設けることにより、全体的なプロセッサ使用効率は低下することがあり得る。しかし、その一方で、マルチコアプロセッサ１０２上でのタスク挙動の予測性を高め、周期制約の充足を保証することが可能となる。
【００４６】
また、この変形例２では、タスク制御周期を有するタスクＡ〜Ｇの動作が割り込みタスクＨにより阻害されないことから、外部メモリやキャッシュ利用のタイミングが固定的となるため、キャッシュ利用効率向上による処理性能向上効果が期待できる。
【００４７】
なお、本実施の形態では簡単のため、並列化対象サブタスクが１つのケースで説明しており、その際には並列化対象サブタスクに最高の優先度を与えることが可能となる。しかし、実際には並列化すべきタスクが複数存在する場合が想定される。そのような場合においては、より時間制約の厳しい順に、最高優先度から優先度を順次下げて付与することが可能である。
【００４８】
また、上記の実施の形態では、コアの種類が１種類であるマルチコアプロセッサ１０２を前提として説明した。一つのチップ内に複数種類のコアを持つ、ヘテロジニアスなマルチコアもしくはメニーコアプロセッサにも、本実施の形態の方式は採用可能である。
タスク制御周期を有するタスクＡ〜Ｇがイベント駆動処理であるタスクＨに対して処理負荷が高いケースや、イベント駆動処理であるタスクＨの出現頻度が低いケースなどでは、このようなヘテロジニアスなコアにおいて、より性能の高いコアへタスク制御周期を有するタスク割り当て、性能の低いコアへイベント駆動処理であるタスクＨを割り当てることにより、更なる演算性能向上を図ることが可能となる。
【００４９】
[第２の実施の形態]
次に、第２の実施の形態に係る演算制御装置を、図１７〜図１９を参照して説明する。
【００５０】
図１７は、第２の実施の形態に係るマルチコアプロセッサの演算制御装置のうち、演算処理に関連する構成部分を示した概略ブロック図である。第１の実施の形態（図１）と同一の部分に関しては、図１７において図１と同一の参照符号を付しているので、以下では重複する説明は省略する。
【００５１】
この第２の実施の形態では、パラメータ付与部１０１は、タスク優先度パラメータ記憶部１０１２は有しておらず、代わりに、各タスクが絶対に処理を完了すべき時刻である絶対デッドライン示すデッドラインパラメータを記憶するデッドラインパラメータ記憶部１０１４を備えている。すなわち、この第２の実施の形態では、あるタスクをサブタスクに分解して並列化処理を実行する場合において、そのサブタスクの優先度を高くするのではなく、その絶対デッドラインを変更し、パラメータとして記憶されるようにされている。並列化対象のサブタスクの絶対デッドラインが変更されることにより、絶対デッドラインが近いタスクが優先的に実行され、結果としてタスク実行の時間制約を遵守することが可能になる。なお、この例では、絶対期限である絶対デッドラインをパラメータとして生成・記憶しているが、絶対デッドラインに代えて、例えばタスク制御周期の開始時刻からの相対時刻をデッドラインとして生成・記憶することも可能である。
【００５２】
図１８は、第２の実施の形態において、ソフトウェアコンポーネントのソースコードに基づいて生成された、タスクの各々についての各種パラメータを示すテーブルである。３０ｍｓのタスク制御周期を有するタスクＡ〜Ｅについて時間制約違反が生じてしまうと判断される場合には、並列化が可能であるタスクＤについてサブタスク（Ｄｐｒｅ、Ｄｐ０〜Ｄｐ３、Ｄｐｏｓｔ）への分割及び並列化が実行される。
【００５３】
図１９に示すように、並列化対象サブタスクＤｐ０〜Ｄｐ３については、絶対デッドラインを元のタスクＤの絶対デッドラインに比べ短くすることができる。ここでは、演算限界時間から逆算して絶対デッドラインを２０ｍｓと定め、元の絶対デッドライン（３０ｍｓ）よりも短くしている。デッドラインが長いままとされる場合、割込みタスクＨが実行により、並列化対象サブタスクＤｐ０〜Ｄｐ３のデッドライン保証が困難となる。並列化対象サブタスクＤｐ０〜Ｄｐ３の絶対デッドラインをより短く設定することにより、タスクＤｐ０〜Ｄｐ３の実行優先度を高めることができる。
【００５４】
タスクＨについては、第１の実施の形態の変形例２と同様に、タスク制御周期を有するタスクの処理用のコア（コア１〜４）と、イベント駆動処理のタスクの処理専用のコア（コア５）の２種類が存在するマルチコアプロセッサを採用することも可能である。このような構成を取る場合、イベント駆動処理専用コアを別途設けることにより全体的なプロセッサ使用効率が低下するデメリットがあるが、マルチコアプロセッサ上でのタスク挙動の予測性を高め、周期制約の充足を保証することが可能となる。また周期処理タスクの動作が阻害されないことから、外部メモリやキャッシュ利用のタイミングが固定的となるため、キャッシュ利用効率向上による処理性能向上効果が期待できると同時に、動的なスケジューリングを行うことにより、第１の実施の形態における静的なスケジューリングよりもタスク設計工数の低減が可能となる。
【００５５】
以上、本発明の実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。  上記各構成、機能、処理部、処理手段等は、それらの一部を、例えば集積回路を設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリ、ハードディスク、ＳＳＤ（Solid State Drive）等の記録装置、ＩＣカード、ＳＤカード、ＤＶＤ等の記録媒体に格納することができる。
【００５６】
また例えば、上記実施形態において、制御周期３０ｍｓのタスク群と５０ｍｓのタスク群、及びイベント駆動タスクの組合せを示しているが、本発明はこれに限定されるものではない。複数種類の制御周期の存在、異なるデッドライン時刻、イベント駆動処理の有無等に依らず、本発明は並列化により生成されるタスクの処理優先権を変更することで、処理時間の変動を低減することができ、実行時間制約の保証可能性を高めることができる。
【符号の説明】
【００５７】
１…演算制御装置、１０１…パラメータ付与部、１０１１…タスク制御周期パラメータ記憶部、１０１２…タスク優先度パラメータ記憶部、１０１３…タスク依存関係パラメータ記憶部、１０１４…デッドラインパラメータ記憶部、１０２…マルチコアプロセッサ、１０２１、１０２２…コア、１０３…タスク割当部。
【図１】
2020095441.tif 000003
【図２】
2020095441.tif 000004
【図３】
2020095441.tif 000005
【図４】
2020095441.tif 000006
【図５】
2020095441.tif 000007
【図６】
2020095441.tif 000008
【図７】
2020095441.tif 000009
【図８】
2020095441.tif 000010
【図９】
2020095441.tif 000011
【図１０】
2020095441.tif 000012
【図１１】
2020095441.tif 000013
【図１２】
2020095441.tif 000014
【図１３】
2020095441.tif 000015
【図１４】
2020095441.tif 000016
【図１５】
2020095441.tif 000017
【図１６】
2020095441.tif 000018
【図１７】
2020095441.tif 000019
【図１８】
2020095441.tif 000020
【図１９】
2020095441.tif 000021