IP Force 特許公報掲載プロジェクト 2022.1.31 β版

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

▶ 日立オートモティブシステムズ株式会社の特許一覧

<>
  • 特許-演算制御装置 図1
  • 特許-演算制御装置 図2
  • 特許-演算制御装置 図3
  • 特許-演算制御装置 図4
  • 特許-演算制御装置 図5
  • 特許-演算制御装置 図6
  • 特許-演算制御装置 図7
  • 特許-演算制御装置 図8
  • 特許-演算制御装置 図9
  • 特許-演算制御装置 図10
  • 特許-演算制御装置 図11
  • 特許-演算制御装置 図12
  • 特許-演算制御装置 図13
  • 特許-演算制御装置 図14
  • 特許-演算制御装置 図15
  • 特許-演算制御装置 図16
  • 特許-演算制御装置 図17
  • 特許-演算制御装置 図18
  • 特許-演算制御装置 図19
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-11-15
(45)【発行日】2023-11-24
(54)【発明の名称】演算制御装置
(51)【国際特許分類】
   G06F 9/50 20060101AFI20231116BHJP
   G06F 9/48 20060101ALI20231116BHJP
【FI】
G06F9/50 150E
G06F9/48 300B
G06F9/48 300F
【請求項の数】 8
(21)【出願番号】P 2018232407
(22)【出願日】2018-12-12
(65)【公開番号】P2020095441
(43)【公開日】2020-06-18
【審査請求日】2021-10-18
(73)【特許権者】
【識別番号】509186579
【氏名又は名称】日立Astemo株式会社
(74)【代理人】
【識別番号】110002572
【氏名又は名称】弁理士法人平木国際特許事務所
(72)【発明者】
【氏名】堀口 辰也
(72)【発明者】
【氏名】石郷岡 祐
(72)【発明者】
【氏名】小田 裕弘
(72)【発明者】
【氏名】成沢 文雄
【審査官】坂東 博司
(56)【参考文献】
【文献】特開2009-151645(JP,A)
【文献】特開2015-225396(JP,A)
【文献】特開2014-160367(JP,A)
【文献】特開2016-091137(JP,A)
【文献】特開2000-099352(JP,A)
【文献】国際公開第2014/068950(WO,A1)
【文献】特開平1-154237(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/50
G06F 9/48
(57)【特許請求の範囲】
【請求項1】
複数のコアを有するプロセッサと、
前記複数のコアに対し、タスクを割り当てるタスク割当部と
を備える演算制御装置であって、
前記タスク割当部は、
前記タスクを構成する複数のサブタスクを並列化処理の対象とすることが可能であるか否かを判断し、並列化処理が可能である場合には、所定の条件下で前記複数のサブタスクを前記複数のコアに割り当てるよう構成され、
前記タスクにパラメータを付与するパラメータ付与部を更に備え、
前記パラメータ付与部は、タスクが他のタスクに比べ優先的に処理されるべき度合を示す優先度をパラメータとして付与し、
前記並列化処理の対象とされた前記複数のサブタスクに対し前記並列化処理の前の元の前記タスクの優先度より高い優先度を付与する
ことを特徴とする演算制御装置。
【請求項2】
前記タスク割当部は、
前記タスクを、第1のサブタスクと、前記第1のサブタスクの後に実行され、前記並列化処理の対象となる前記複数のサブタスクと、前記複数のサブタスクの後に実行される第2のサブタスクと、に分割し、
前記パラメータ付与部は、
前記第1のサブタスク及び前記第2のサブタスクに対し、前記並列化処理の前の元の前記タスクと同じ優先度を付与し、
前記並列化処理の対象とされた前記複数のサブタスクに対し、前記並列化処理の前の元の前記タスクの優先度より高い優先度を付与する、請求項1に記載の演算制御装置。
【請求項3】
前記パラメータ付与部は、前記タスクが処理される周期を示すタスク制御周期、及び複数のタスクの依存関係を示すタスク依存関係をパラメータとして付与し、
前記タスク割当部は、前記タスク制御周期及び前記タスク依存関係に基づいて、前記複数のコアに対し前記タスクを割り当てる、請求項1に記載の演算制御装置。
【請求項4】
前記タスクは、前記タスクが処理される周期を示すタスク制御周期とは無関係に発生するイベント駆動処理タスクを含み、
前記パラメータ付与部は、前記並列化処理の対象とされた前記複数のサブタスクに対し、前記イベント駆動処理タスクよりも高い優先度を付与する、請求項に記載の演算制御装置。
【請求項5】
前記タスクは、前記タスクが処理される周期を示すタスク制御周期とは無関係に発生するイベント駆動処理タスクを含み、
前記タスク割当部は、前記タスク制御周期を有するタスクを前記複数のコアのうちの第1のコアに割り当て、前記イベント駆動処理タスクを前記第1のコアとは異なる第2のコアに割り当てる、請求項1に記載の演算制御装置。
【請求項6】
前記タスク割当部は、
前記タスクを、第1のサブタスクと、前記第1のサブタスクの後に実行され、前記並列化処理の対象となる前記複数のサブタスクと、前記複数のサブタスクの後に実行される第2のサブタスクと、に分割し、
前記パラメータ付与部は、
前記並列化処理の対象とされた前記複数のサブタスクに対し、前記第1のサブタスク及び前記第2のサブタスクの優先度よりも高い優先度を付与する、請求項1に記載の演算制御装置。
【請求項7】
前記パラメータ付与部は、前記タスクの処理が完了すべき時刻を示すデッドラインをパラメータとして付与し、
前記並列化処理の対象とされた前記複数のサブタスクのデッドラインを変更する、請求項1に記載の演算制御装置。
【請求項8】
前記プロセッサは、複数のコアの性能が互いに異なるヘテロジニアスプロセッサである、請求項1に記載の演算制御装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、演算制御装置に関し、より詳しくはマルチコア又はメニーコアと言われる複数コアを有するプロセッサを制御する演算制御装置に関する。
【背景技術】
【0002】
近年、組込み用プロセッサにおける性能向上が進み、高負荷な演算処理の導入が自動車(特に自動運転)、ビッグデータ処理、創薬、遺伝子解析、産業機器等の分野において進んでいる。その結果、それらの分野における制御装置において求められる処理性能が増大している。このため、マルチコアもしくはメニーコアプロセッサなど複数コアを有するプロセッサを活用した制御装置(ECU: Electronic Control Unit)が採用され、その処理性能向上が求められている。
【0003】
例えば自動車分野においては、高度な自動運転システムの実現に向け、自動運転を制御する上位の制御装置である自動運転ECUを筆頭に、制御装置の処理負荷の増大が課題となっている。このため、自動車分野においても、2コア、4コア、8コアといったマルチコアプロセッサの導入が開始されている。今後も更にコア数は増大し、コア数が例えば10以上のメニーコアプロセッサの利用開始も想定される。
【0004】
一方で、同分野におけるソフトウェア設計においては、例えばモデルベースデザインからの自動ソースコード生成など、シングルコアプロセッサ向けの設計手法が依然用いられる場合がある。シングルコアプロセッサ向けの既存の設計手法のまま単純にマルチコアプロセッサやメニーコアプロセッサに移行するだけでは、今後の負荷増大トレンドにおける、これらプロセッサの性能メリットを活かすことが難しくなる。特許文献1ではこのような背景に対し、マルチコアプロセッサに対して複数のタスクを効率的に割り当てる(準最適なスケジューリングを提供する)例が開示されている。
【0005】
一方で、特許文献1では、通常時は事前に規定されるスケジューリング方式に基づき各プロセッサコアへの処理を割り当てた静的なスケジューリングを用いるが、負荷が高い状況において、タスクを効率的に実行するための動的スケジューリングを行う例が示されている。自動車分野や産業機器分野においては、制御の安定性のため実行時間制約を保証することが強く求められるが、同文献については実行時間制約への言及はなく、仮に通常動作時(静的スケジューリングで動作する場合)には設計者により適切なスケジューリングが行われていたとしても、少なくとも動的にスケジューリングを行った際の実行時間制約の保証は困難である。特にマルチコアプロセッサにおいては、ある処理が別の処理の実行時間へ影響を与える場合がある。この場合、実行時間の制約を保証することが困難になり得る。このため、実行時間制約を満たすためには、複数のコア上で同時に演算を行った際の処理時間の変動に対応するための方法が必要となる。
【先行技術文献】
【特許文献】
【0006】
【文献】特開2008-171153号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
本発明の目的は、上述のような複数のコアを有するプロセッサを用いたシステムにおいて、複数のコア上で同時に異なる処理を行った際の処理時間の変動を低減することを可能にし、これによりシステムの挙動予測性を高め、実行時間制約の保証可能性を高めることを可能にした演算制御装置を提供することである。
【課題を解決するための手段】
【0008】
本発明に係る演算制御装置は、複数のコアを有するプロセッサと、前記複数のコアに対し、タスクを割り当てるタスク割当部とを備える演算制御装置である。前記タスク割当部は、前記タスクを構成する複数のサブタスクを並列化処理の対象とすることが可能であるか否かを判断し、並列化処理が可能である場合には、所定の条件下で前記複数のサブタスクを前記複数のコアに割り当てるよう構成される。
【発明の効果】
【0009】
本発明によれば、マルチコアプロセッサを用いる演算制御装置において、複数のコア上で同時に異なる処理を行った際の処理時間の変動を低減することを可能にし、これによりシステムの挙動予測性を高め、実行時間制約の保証可能性を高めることができる。
【図面の簡単な説明】
【0010】
図1】第1の実施の形態に係るマルチコアプロセッサの演算制御装置のうち、演算処理に関連する構成部分を示した概略ブロック図である。
図2】第1の実施の形態における、演算制御装置1と、ソフトウェアコンポーネント(搭載機能)との関係を示す概略図である。
図3】ソフトウェアコンポーネント(搭載機能)の依存関係の一例を説明する概略図である。
図4】ソフトウェアコンポーネント(搭載機能)と、対応するタスクとの関係を示す表である。
図5】演算制御装置1に割り当てられる搭載機能をモデルベース設計手法により表現した図である。
図6】モデルベース設計時に演算制御装置1に割り当てられる搭載機能に対応するタスクを表す表である。
図7】第1の実施の形態において、タスクの各々について付与される各種のパラメータの一例を説明する表である。
図8】第1の実施の形態における、データ依存関係を示すタスクグラフの一例である。
図9】第1の実施の形態において、タスクの各々に付与される優先度のパラメータの一例を示す表である。
図10】第1の実施の形態において、タスクD内でのサブタスクの並列化を行わない場合のタイムチャートの一例である。
図11】タスクDにおいて、並列化処理可能なサブマスクを並列化処理した場合におけるタスクグラフと、設定される平均実行時間との関係を示す表である。
図12】第1の実施の形態において、タスクD内のサブタスクを並列化した場合におけるタイムチャートの一例である。
図13】第1の実施の形態における、イベント駆動処理タスクHが発生したことに起因して時間制約違反が発生した場合におけるタイムチャートの一例である。
図14】第1の実施の形態の変形例1における、タスクDの並列化と優先度設定方法を示す図である。
図15】第1の実施の形態の変形例1における、タスク優先度パラメータの設定例を示すリストである。
図16】第1の実施の形態の変形例2における動作を示すタイムチャートの一例である。
図17】第2の実施の形態に係るマルチコアプロセッサの演算制御装置のうち、演算処理に関連する構成部分を示した概略ブロック図である。
図18】第2の実施の形態において、タスクの各々について付与される各種のパラメータの一例を説明する表である。
図19】第2の実施の形態における、デッドラインパラメータの設定例を示すリストである。
【発明を実施するための形態】
【0011】
以下、添付図面を参照して本実施形態について説明する。添付図面では、機能的に同じ要素は同じ番号又は対応する番号で表示される場合もある。なお、添付図面は本開示の原理に則った実施形態と実装例を示しているが、これらは本開示の理解のためのものであり、決して本開示を限定的に解釈するために用いられるものではない。本明細書の記述は典型的な例示に過ぎず、本開示の特許請求の範囲又は適用例を如何なる意味においても限定するものではない。
【0012】
本実施形態では、当業者が本開示を実施するのに十分詳細にその説明がなされているが、他の実装・形態も可能で、本開示の技術的思想の範囲と精神を逸脱することなく構成・構造の変更や多様な要素の置き換えが可能であることを理解する必要がある。従って、以降の記述をこれに限定して解釈してはならない。
【0013】
[第1の実施の形態]
図1を参照して、第1の実施の形態に係る演算制御装置を説明する。以下では、コアの数が8個であるマルチコアプロセッサを制御する演算制御装置を例として説明するが、コアの個数は特定のものに限定されるものではない。例えば、コアが10個以上のメニーコアプロセッサを制御する演算制御装置にも、本開示の技術的思想の範囲と精神を逸脱することなく、同様の方式の採用が可能である。
【0014】
図1は、第1の実施の形態に係るマルチコアプロセッサの演算制御装置のうち、演算処理に関連する構成部分を示した概略ブロック図である。演算制御装置1は、パラメータ付与部101と、マルチコアプロセッサ102と、タスク割当部103とを備える。
【0015】
パラメータ付与部101は、車両を制御するために必要となるハードウェア及びソフトウェアに関する情報をパラメータとしてタスクに付与し、記憶部に記憶する機能を有する。ハードウェアに関するパラメータには、マルチコアプロセッサ102のマルチコア構成、バス配線情報、センサ(図示せず)のセンシング情報(センサ値)等が含まれる。
【0016】
パラメータ付与部101に記憶されるパラメータは、タスク割当部103による割当を行う場合の判断指標ともなり得る。一例として、パラメータ付与部101は、タスク制御周期パラメータ記憶部1011と、タスク優先度パラメータ記憶部1012と、タスク依存関係パラメータ1013とを備える。タスク制御周期パラメータ記憶部1011は、マルチコアプロセッサ102により実行される各タスクの制御周期を規定するパラメータを記憶する。また、タスク優先度パラメータ記憶部1012は、各タスクが他のタスクとの関係で優先して処理(実行)されるべき度合を示す優先度を規定するパラメータを記憶する。
【0017】
タスク依存関係パラメータ記憶部1013は、タスク間の依存関係を示す依存関係パラメータを記憶する。依存関係パラメータは、例えばあるタスクAで処理した結果を次のタスクBの入力として処理するため、タスクAの終了がタスクBの開始条件となるような関係を示す。
【0018】
マルチコアプロセッサ102は、複数のコア1~8を有しており、各コア1~8はそれぞれ並列にタスク処理を実行可能に構成されている。一例として、マルチコアプロセッサ102は、性能の異なる2種類のコアを4コアずつ有することができる。ここでは、相対的に性能の高いコア1~4を高速動作コア1021、性能の低いコア5~8を低速動作コア1022と呼称する。性能の段階は2段階には限られず、3段階以上であってもよいし、全てのコアが同一の性能を有していてもよい。
【0019】
タスク割当部103は、パラメータ付与部101から取得されたパラメータ(タスク制御周期、タスク優先度、タスク依存関係など)に基づき、各タスクをマルチコアプロセッサ102の各コアへ割り当てる。
【0020】
このような演算制御装置1に対して要求される搭載機能は、いくつかの形式により与えられる。例えば、図2に示すように、各種機能1、2、3、4・・・が、ソフトウェアコンポーネントとしてC言語などのソースコードにて記載されて演算制御装置1に与えられる場合を考える。
【0021】
この場合、同ソースコードに基づき、図3に示すように、各機能1、2、3、4・・・(ソフトウェアコンポーネント間)の依存関係が解読される。例えば、機能2は、機能1の実行が完了した後において実行が可能であり、機能3は機能2の実行が完了した後において実行が可能であることがソースコードに基づき解読される。
【0022】
さらに、各機能1、2、3、4・・・をマルチコアプロセッサ102に割り当てるためのタスクが定義される。各機能1、2、3、4(ソフトウェアコンポーネント)とタスクとの関係の一例を図4に示す。
【0023】
また異なる入力情報の例として、図5のようなモデルベース設計手法にて記述されたモデルが与えられた場合には、図6のように各機能と対応させる形でタスクが定義される。例えば、機能2、4中のサブ機能2-1、2-2、2-3、4-1、4-2に対しても、それぞれ対応するタスクが定義される。
【0024】
タスクが定義されると、図7のテーブルに示すように、タスクの各々について、各種のパラメータが、例えばソフトウェアコンポーネントのソースコードに基づいて生成される。一例としては、図7に示すように、平均実行時間(高速コアを用いた場合)、各タスクに含まれるサブタスクの並列化の可否、及びタスク制御周期等のパラメータが生成される。このうちタスク制御周期のパラメータは、タスク制御周期パラメータ記憶部1011に記憶される。
なお、図7は、機能1~4とは別の、イベント駆動処理(割り込み処理)に対応するタスクHについても平均実行時間を計算し、パラメータを決定した場合について示している。
【0025】
図8に、図7に示したタスクを実行する場合のタスクグラフの一例を示す。タスクグラフは、演算制御装置1により、タスク制御周期、タスク依存関係、その他のパラメータに従って生成される。各タスクは、同一のタスク制御周期を有するタスク毎に分類されるとともに、タスク依存関係に従って順序付けされる。この例では、30msの制御周期で動作するタスクA~Eについての1のタスクグラフが形成され、50msの制御周期で動作するタスクF、Gについて別のタスクグラフが形成されている。
【0026】
図8に例示されるタスクグラフでは、各タスク間の矢印によりタスク間の依存関係が表現されている。この依存関係は、タスク依存関係パラメータ1013に記述される。このようなタスクグラフが形成されると、直列に並ぶ複数のタスクの組は、マルチプロセッサ102中の1つのコアにおいて実行され、異なる組のタスクは、異なるコアにおいて実行され得る。例えば、タスクA、B、Eは、コア1において実行され、タスクC、Dはコア2において実行され、タスクF、Gはコア3にて実行され得る。
【0027】
また、タスクが定義されると、タスク毎に優先度がパラメータとして定義され、タスク優先度パラメータ記憶部1012に記憶される。図9は、各タスクについて定義された優先度の一例を示している。この図9の数字は、小さい数字であるほど優先度が高いことを意味している。例えば、タスクF、Gは優先度「15」であり、タスクA~Eの方がより高い優先度「10」を有する。タスクHは、これよりも更に高い優先度「5」を有する。この例では、タスク制御周期が短いタスクほど、高い優先度を与える、という制御ポリシーにより、優先度及びタスク制御周期が各タスクに与えられている。
【0028】
上述のようにして決定されたタスク制御周期、依存関係、優先度に従って各タスクを実行した(演算を実行した)場合におけるタイムチャートの一例を図10に示す。この図10では、コア上でのタスク切り替えや、タスク分割に伴う時間オーバヘッドは発生しないものと仮定している。
【0029】
タスク依存関係パラメータに従った依存関係に基づき、30msのタスク制御周期を有するタスクA~Eが実行される。このとき、タスクA、BとタスクC、Dとは、異なるコア1、2により並列に(同時に)実行され得る。しかし、A、C、D、Eはその順に実行されなければならず、このため、その処理がネック(クリティカルパス)となり、個々のタスクの実行時間次第では、30[ms]の周期制約を満たすことは出来ず、時間制約違反が生じてしまう。
【0030】
そこで、本実施の形態では、クリティカルパス上にある複数のタスクA、C、D、Eのうち、更に複数のサブタスクに分割され、しかもそのサブタスクが並列化可能なタスクに関し、所定の条件下で並列化を実行することで、実行時間を短縮する。サブタスクへの分割は、タスク割当部103において、タスク制御周期パラメータ、タスク優先度パラメータ、タスク依存関係等に基づいて判断され、実行され得る。
【0031】
図11に、タスクDを複数のサブタスクDpre、Dp0~Dp3、及びDpostに分割し、その一部のサブタスク(例えばサブタスクDp0~Dp3)を並列化した場合におけるタスクグラフと、決定される平均実行時間(高速コアの使用時)の例を示す。
【0032】
1つのタスクDから生成された複数のサブタスクは、その中の少なくとも2以上が並列化され、異なるコアにおいて同時に実行可能とされることにより、タスクの総実行時間(平均)を短縮することができる。
【0033】
好適には、タスクD中の複数のサブタスクを並列化するにあたり、複数のサブタスクを並列化前サブタスクDpre(21)、並列化対象サブタスクD(22)(Dp0~Dp3)、及び並列化後サブタスクDpost(23)に分割することができる。並列化前サブタスクDpre1は、タスクD中のサブタスク中で最初に実行されるサブタスクである。この並列化前サブタスクDpre1の実行後、複数の並列化対象サブタスクDが並列に、複数のコアにおいて実行され得る。また、並列化後サブタスクDpostは、並列化対象サブタスクDp1~Dp3の実行が全て終了した場合に実行されるタスクである。このように、並列化対象サブタスクDの前後に、並列化の対象外のサブタスクを置くことで、実行時間の予測が容易になるとともに、演算制御装置1での処理負荷も軽減することができる。
【0034】
図11のように、1つのタスクDが複数のサブタスクに分割される場合、サブタスクの各々の平均実行時間(高速コアの使用時)の合計Ttotalは、元のタスクDの平均実行時間Td以下となるように設定する。前述のように、コア上でのタスク切替や、タスク分割に伴う時間オーバヘッドは仮定しないならば、平均実行時間の合計Ttotalは、元のタスクDの平均実行時間Tdと等しい値とすることができる(5×6=30ms)。なお、この新たに生成されたサブタスクDpre、Dp0~Dp3、Dpostの間の依存関係、及び平均実行時間は、パラメータ付与部101に記憶される。
【0035】
図11のようにしてタスクDが複数のサブタスクに分割され且つ並列化処理された場合におけるタイムチャートの一例を、図12に示す。この例では、30msの制御周期を満足するため、並列化処理が可能なサブタスクDp0~Dp3が優先的に処理され、その前に並列化前サブタスクDpreがタスクCの実行終了後に処理を開始される。並列化処理の開始の際、コア1上でタスクBが実行中であれば、それを一度中断することもできる。これにより、4つのコア1~4の全てを実行可能状態とすることができ、それぞれにサブタスクDp0~Dp3を割り当て、4つのコア1~4において同時に処理を開始することができる。サブタスクDp0~Dp3に関しては、並列化前サブタスクDpreの終了後、同期信号を発生させることにより、処理の開始タイミングが揃うようにすることが好適である。サブタスクDp0~タスクDp3の実行が全て終了すると、その後に並列化後サブタスクDpostの実行を開始することができる。また、コア1では、中断していたタスクBの実行を再開することができる。
【0036】
また、50msのタスク制御周期を有しコア3で実行中であるタスクFも、タスクBと同様に、並列化処理が開始可能となった段階で、一度処理を中断する。その後、並列化処理の対象とされたサブタスクDp2の実行をコア3において開始する。サブDp3の終了後、コア3では再び中断されていたタスクFの処理が再開される。
【0037】
なお、タスクFもタスクDと同様に、サブタスクに分解して並列化処理が可能であれば(図7参照)並列化処理の対象としてもよいことは言うまでもない。ただし、タスクFは、タスクDとは異なり、タスク制御周期が長く、このため、優先度がタスクA~Eに比べ低い。このため、並列化処理を実行しなくても、所定のタスク制御周期の中で処理を終了することができる。このため、図12の例では、タスクFに関してはサブタスクの並列化処理は実行していない。このように、並列化処理が可能なタスクにおいても、定められたタスク制御周期の中で処理を完了することが可能であれば並列化処理を実行しないことを選択することが可能である。なお、タスクFをサブタスクFpに分解して並列化処理を実行する場合においては、サブタスクFpの優先度は、分割前のタスクFの優先度に比べ低く設定することができる。
【0038】
<変形例1>
図13図15は、第1の実施の形態の変形例1を示している。この変形例1は、並列化対象サブタスクDp0~Dp3のコア1~4での処理中に割込みタスクHが発生した場合を想定しており、図13はそのタイムチャートの一例を示している。
【0039】
タスクHが発生した場合、タスクHは、例えばコア4において、サブタスクDp3の実行を中断して実行される。イベント駆動処理タスクであるタスクHは、タスク制御周期を有するタスクA~Gとは異なり、タスク制御周期とは無関係にイベントの発生に対応してランダムに生成される。このため、タスクHは、設計者が事前に実施タイミングを設計することは難しい。なお、発生ベースでのタスクHの実行を可能にするため、タスクHの優先度は、一般に他のタスクに比べ高く設定され得る。
【0040】
しかし、並列化後サブタスクDpostは、並列化対象サブタスクDの完了後に実行可能となる。このため、タスクHの動作によりタスクDpostの実行開始時刻が遅れると、結果、タスクA~Eについての処理がタスク制御周期中に完了せず、時間制約違反が発生する虞がある(図13参照)。
【0041】
このように、イベント駆動処理(割込み処理)など、優先度が並列化対象サブタスクに対して高く設定されるタスクが存在する場合、並列化対象サブタスクの一部の処理が中断され、実行時間制約を満たすことができない場合があり得る。
【0042】
そこで、この第1の実施の形態の変形例1では、図14及び図15に示すように、全てのサブタスクに対し同一の優先度Pを与える代わりに、並列化対象サブタスクDの優先度を、並列化処理前サブタスク、及び並列化処理後タブタスクに比較して高い優先度Phighに変更する。この優先度Phighは、イベント駆動処理タスクHの優先度よりも高くされる。例えば、並列化前サブタスクDpre及び並列化後サブタスクDpostに対しては、その前後のタスクC、Eの優先度と同一の優先度(例:P=15)を付与する一方、並列化対象サブタスクDp0~Dp3に対しては、タスクC,E、更にはタスクHよりも高い優先度(例:Phigh=1)を付与する。
【0043】
このように、並列化前サブタスクDpre及び並列化後サブタスクDpostに関しては、並列化前の優先度を引き継ぎ、他タスクA~C、E~H等との関係で優先度の調整を行ことができる。例えば、元のタスクDよりも高い優先度を有する他のタスクがあれば、そちらを優先して実行するよう、優先度を調整することはできる。ただし、並列化対象サブタスクDp0~Dp3については、他のタスクによる動作阻害が発生した際の実行ゆらぎが、直接的に実行時間制約の違反に繋がってしまう。そのため、並列化対象サブタスクDp0~Dp3のみについては可能な限り最大の優先度を与える。これにより、並列化対象サブタスクを含む一連のタスクについて、動作保証を行うことができる。
【0044】
<変形例2>
図16は、第1の実施の形態の変形例2を示している。この変形例2は、変形例1と同様に、タスクA~Gのコア1~4での処理中に割込みタスクHが発生した例を示す。ただし、この変形例2は、割り込みタスクHが発生した場合において、コア5を割り込みタスクHの処理専用として利用するよう、タスク割当部103が構成されている。
【0045】
第1の実施の形態を適用するにあたり、イベント駆動処理であるタスクHの動作を阻害することは不可能である場合は、タスクHについて別途専用にコアを定義することが可能である。この場合、タスク制御周期を有するタスクA~Gの処理のためのコア群(コア1~4)と、イベント駆動処理専用のコア群(コア5)の2種類が存在するマルチコアプロセッサ102を利用することができる。マルチコアプロセッサ102がこのような構成を取る場合、イベント駆動処理専用コア(コア5)を別途設けることにより、全体的なプロセッサ使用効率は低下することがあり得る。しかし、その一方で、マルチコアプロセッサ102上でのタスク挙動の予測性を高め、周期制約の充足を保証することが可能となる。
【0046】
また、この変形例2では、タスク制御周期を有するタスクA~Gの動作が割り込みタスクHにより阻害されないことから、外部メモリやキャッシュ利用のタイミングが固定的となるため、キャッシュ利用効率向上による処理性能向上効果が期待できる。
【0047】
なお、本実施の形態では簡単のため、並列化対象サブタスクが1つのケースで説明しており、その際には並列化対象サブタスクに最高の優先度を与えることが可能となる。しかし、実際には並列化すべきタスクが複数存在する場合が想定される。そのような場合においては、より時間制約の厳しい順に、最高優先度から優先度を順次下げて付与することが可能である。
【0048】
また、上記の実施の形態では、コアの種類が1種類であるマルチコアプロセッサ102を前提として説明した。一つのチップ内に複数種類のコアを持つ、ヘテロジニアスなマルチコアもしくはメニーコアプロセッサにも、本実施の形態の方式は採用可能である。
タスク制御周期を有するタスクA~Gがイベント駆動処理であるタスクHに対して処理負荷が高いケースや、イベント駆動処理であるタスクHの出現頻度が低いケースなどでは、このようなヘテロジニアスなコアにおいて、より性能の高いコアへタスク制御周期を有するタスク割り当て、性能の低いコアへイベント駆動処理であるタスクHを割り当てることにより、更なる演算性能向上を図ることが可能となる。
【0049】
[第2の実施の形態]
次に、第2の実施の形態に係る演算制御装置を、図17図19を参照して説明する。
【0050】
図17は、第2の実施の形態に係るマルチコアプロセッサの演算制御装置のうち、演算処理に関連する構成部分を示した概略ブロック図である。第1の実施の形態(図1)と同一の部分に関しては、図17において図1と同一の参照符号を付しているので、以下では重複する説明は省略する。
【0051】
この第2の実施の形態では、パラメータ付与部101は、タスク優先度パラメータ記憶部1012は有しておらず、代わりに、各タスクが絶対に処理を完了すべき時刻である絶対デッドライン示すデッドラインパラメータを記憶するデッドラインパラメータ記憶部1014を備えている。すなわち、この第2の実施の形態では、あるタスクをサブタスクに分解して並列化処理を実行する場合において、そのサブタスクの優先度を高くするのではなく、その絶対デッドラインを変更し、パラメータとして記憶されるようにされている。並列化対象のサブタスクの絶対デッドラインが変更されることにより、絶対デッドラインが近いタスクが優先的に実行され、結果としてタスク実行の時間制約を遵守することが可能になる。なお、この例では、絶対期限である絶対デッドラインをパラメータとして生成・記憶しているが、絶対デッドラインに代えて、例えばタスク制御周期の開始時刻からの相対時刻をデッドラインとして生成・記憶することも可能である。
【0052】
図18は、第2の実施の形態において、ソフトウェアコンポーネントのソースコードに基づいて生成された、タスクの各々についての各種パラメータを示すテーブルである。30msのタスク制御周期を有するタスクA~Eについて時間制約違反が生じてしまうと判断される場合には、並列化が可能であるタスクDについてサブタスク(Dpre、Dp0~Dp3、Dpost)への分割及び並列化が実行される。
【0053】
図19に示すように、並列化対象サブタスクDp0~Dp3については、絶対デッドラインを元のタスクDの絶対デッドラインに比べ短くすることができる。ここでは、演算限界時間から逆算して絶対デッドラインを20msと定め、元の絶対デッドライン(30ms)よりも短くしている。デッドラインが長いままとされる場合、割込みタスクHが実行により、並列化対象サブタスクDp0~Dp3のデッドライン保証が困難となる。並列化対象サブタスクDp0~Dp3の絶対デッドラインをより短く設定することにより、タスクDp0~Dp3の実行優先度を高めることができる。
【0054】
タスクHについては、第1の実施の形態の変形例2と同様に、タスク制御周期を有するタスクの処理用のコア(コア1~4)と、イベント駆動処理のタスクの処理専用のコア(コア5)の2種類が存在するマルチコアプロセッサを採用することも可能である。このような構成を取る場合、イベント駆動処理専用コアを別途設けることにより全体的なプロセッサ使用効率が低下するデメリットがあるが、マルチコアプロセッサ上でのタスク挙動の予測性を高め、周期制約の充足を保証することが可能となる。また周期処理タスクの動作が阻害されないことから、外部メモリやキャッシュ利用のタイミングが固定的となるため、キャッシュ利用効率向上による処理性能向上効果が期待できると同時に、動的なスケジューリングを行うことにより、第1の実施の形態における静的なスケジューリングよりもタスク設計工数の低減が可能となる。
【0055】
以上、本発明の実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。 上記各構成、機能、処理部、処理手段等は、それらの一部を、例えば集積回路を設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリ、ハードディスク、SSD(Solid State Drive)等の記録装置、ICカード、SDカード、DVD等の記録媒体に格納することができる。
【0056】
また例えば、上記実施形態において、制御周期30msのタスク群と50msのタスク群、及びイベント駆動タスクの組合せを示しているが、本発明はこれに限定されるものではない。複数種類の制御周期の存在、異なるデッドライン時刻、イベント駆動処理の有無等に依らず、本発明は並列化により生成されるタスクの処理優先権を変更することで、処理時間の変動を低減することができ、実行時間制約の保証可能性を高めることができる。
【符号の説明】
【0057】
1…演算制御装置、101…パラメータ付与部、1011…タスク制御周期パラメータ記憶部、1012…タスク優先度パラメータ記憶部、1013…タスク依存関係パラメータ記憶部、1014…デッドラインパラメータ記憶部、102…マルチコアプロセッサ、1021、1022…コア、103…タスク割当部。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19