JP6365387B2 - 電子制御装置 - Google Patents

電子制御装置 Download PDF

Info

Publication number
JP6365387B2
JP6365387B2 JP2015085637A JP2015085637A JP6365387B2 JP 6365387 B2 JP6365387 B2 JP 6365387B2 JP 2015085637 A JP2015085637 A JP 2015085637A JP 2015085637 A JP2015085637 A JP 2015085637A JP 6365387 B2 JP6365387 B2 JP 6365387B2
Authority
JP
Japan
Prior art keywords
task
priority
core
tasks
executed
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2015085637A
Other languages
English (en)
Other versions
JP2016206817A (ja
Inventor
敬之 増田
敬之 増田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Denso Corp
Original Assignee
Denso Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Denso Corp filed Critical Denso Corp
Priority to JP2015085637A priority Critical patent/JP6365387B2/ja
Priority to DE102016206490.8A priority patent/DE102016206490A1/de
Publication of JP2016206817A publication Critical patent/JP2016206817A/ja
Application granted granted Critical
Publication of JP6365387B2 publication Critical patent/JP6365387B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/484Precedence

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Description

本発明は、電子制御装置に関する。
従来、複数のコアが搭載されるマルチコアマイコンが知られている(例えば特許文献1)。マルチコアマイコンにおいては、複数のコアで同時並行してタスクが実行される。これにより、マルチコアマイコンは、全てのタスクを順次実行するシングルコアマイコンと比較して処理速度の向上が期待できる。
特開2013−54625号公報
ところで、このようなマルチコアマイコンを車両のエンジン制御用電子制御装置に適用するニーズがある。マルチコアマイコンをエンジン制御に用いる場合、他の適用分野と比べて演算のリアルタイム性に対する要求が高い。このため、エンジン制御用のマルチコアマイコンにおいては、演算のリアルタイム性を保証するために、各タスクをどのコアにおいて実行するかを固定している場合がある。この場合、例えば、複数のコア間でタスクの実行順序に制約があることなどを要因として、一部のコアがタスクを実行しない待機状態となり、マイコン全体での処理速度を下げる要因となり得る。
本発明はこのような課題に鑑みてなされたものであり、その目的は、マルチコアマイコンの処理速度を向上できる電子制御装置を提供することである。
上記課題を解決するために、本発明に係る電子制御装置(101)は、複数のコア(103)で所定の複数のタスク(108,208)を並行して実行するマルチコアマイコン(102)を備え、前記所定の複数のタスクのそれぞれは、前記複数のコアのうち特定の1つのコアで実行するよう個別に設定されると共に、前記マルチコアマイコン内における実行の順序を設定されており、同一の前記コアで実行するよう設定される複数のタスクのそれぞれは、前記同一のコア内における前記実行の順序を規定するための優先順位を設定され、前記同一のコアで実行するように設定される前記複数のタスク(108c,108d,208c〜208e)のうちの第一のタスク(108c,208c)が、前記同一のコア(103b)以外の他の前記コア(103a)で実行される第二のタスク(108b,208b)の完了まで実行を待機する必要があるとき、前記同一のコアで実行するように設定される前記複数のタスクのうち前記第一のタスクを除く第三のタスク(108d,208e)の前記優先順位に対して、前記第一のタスクの前記優先順位を相対的に低くすることを特徴とする。
このような電子制御装置によれば、第二のタスクが実行中であり、かつ、第一のタスクが待機中である期間では、第三のタスクの優先順位が第一のタスクより高い状態となるため、第一のタスクの待機中に第一のタスクより先に第三のタスクが実行される。つまり、複数のコアの1つにおいて第三のタスクが、他コアの第二のタスクと並列に実行されるので、他コアの第二のタスクの実行完了まで当該コアが待機状態になるのを回避できる。このように、複数のコア間でタスクの実行順序に制約がある場合でも、一部のコアが完全に待機状態となる期間を回避または減少できるので、全タスクの実行完了時間を早めることができる。
本発明によれば、マルチコアマイコンの処理速度を向上できる電子制御装置を提供することができる。
図1は、本発明の一実施形態に係る電子制御装置の概略構成を示すブロック図である。 図2は、図1中の複数のコアにおける複数のタスクの実行順序の一例を示す模式図である。 図3は、図2に示す複数のタスクの従来の実行順序を示す図である。 図4は、本実施形態に係る電子制御装置により、図2に示す複数のタスクの実行順序が変更されることを説明するための図である。 図5は、本実施形態に係る電子制御装置により実施される優先順位変更処理を示すフローチャートである。 図6は、他のコアで実行されるタスク(第二のタスク)の完了を待機する必要があるタスク(第一のタスク)と同じ優先順位をもつタスクが同一コアに含まれる構成において、複数のタスクの実行順序の一例を示す模式図である。 図7は、図6に示す複数のタスクの従来の実行順序を示す図である。 図8は、本実施形態に係る電子制御装置により、図6に示す複数のタスクの実行順序が変更されることを説明するための図である。 図9は、図6に示すタスクの構成において、本実施形態に係る電子制御装置により実施される優先順位変更処理を示すフローチャートである。
以下、添付図面を参照しながら本発明の実施形態について説明する。説明の理解を容易にするため、各図面において同一の構成要素に対しては可能な限り同一の符号を付して、重複する説明は省略する。
まず図1を参照して、本発明の一実施形態に係る電子制御装置101の構成について説明する。本実施形態に係る電子制御装置101は、例えば、車両に搭載され、当該車両のエンジン制御用ECU(Electronic Control Unit)の一部として実装される。本実施形態では、この構成の電子制御装置101を例示して説明する。
電子制御装置101は、図1に示すように、マルチコアマイコン102を備える。マルチコアマイコン102は、図1に示すように、複数のコア103と、共有RAM104と、タスク監視部105(監視部、優先順位変更部)と、RAM106(記憶部)と、I/Oポート107と、を有する。
複数のコア103のそれぞれは、プログラムに記述された各種演算や機器制御(本実施形態ではこれらを纏めて「タスク108」と表記する)を行う中央処理装置である。本実施形態では、図1に示すようにマルチコアマイコン102が2つのコア103a,103bを有する構成を例示しており、以降の説明では2つのコア103a,103bを「コア1」及び「コア2」とも表記する場合があり、また、2つのコア103a,103bを纏めて「コア103」とも表記する場合がある。コア103a及びコア103bは、相互に通信可能に接続されると共に、それぞれが共有RAM104、タスク監視部105、及びI/Oポート107と通信可能に接続されている。
共有RAM104は、コア103a及びコア103bで実行される各種のタスク108の演算領域として利用される記憶装置である。
タスク監視部105は、複数のコア103のそれぞれで実行される各種のタスク108の実行状態を監視し、各コア103におけるタスクの実行を制御する。本実施形態では、タスク監視部105は、タスク108を実行するコア103a及びコア103bとは別要素として配置され、コア103a及びコア103bと同様の中央処理装置により実装されている。タスク監視部105は、コア103a、コア103b、及び、RAM106と通信可能に接続されている。なお、タスク監視部105によるタスク108の実行順序の制御については図2〜4を参照して後述する。
RAM106は、タスク監視部105により各コア103のタスク108の優先順位を記憶するために利用される記憶装置である。タスク108の優先順位やタスク監視部105によるRAM106への記憶処理については後述する。
I/Oポート107は、コア103a及びコア103bと外部機器との間で情報の入出力に利用されるインタフェースである。
マルチコアマイコン102は、2つのコア103a,103bにより所定の複数のタスク108を並行して実行することができる。特に本実施形態のようなエンジン制御用ECUなど、特定の期間内(例えばエンジンが1回転する間や、次回の燃料噴射までの間など)にタスク108の演算を確実に終わらせる必要があるなどの制約がある環境に電子制御装置101が適用される場合には、各タスク108のリアルタイム性の要求が極めて高くなる。従来のマルチコアマイコン102では各コア103に実行させるタスク108を動的に振り分ける構成が一般的であるが、上記のような環境下ではタスク108のリアルタイム性を保障するために、マルチコアマイコン102は、各タスク108をどのコア103において実行するかを固定されている。言い換えると、マルチコアマイコン102は、所定の複数のタスク108のそれぞれを複数のコア103のうち特定の1つのコア(コア103aまたはコア103b)で実行するよう個別に設定されている。本実施形態では、図1に示すように、2つのコア103のうち一方のコア103aにおいて所定の2つのタスクA及びタスクBが実行されるよう固定され、また、他方のコア103bにおいて所定の2つのタスクC及びタスクDが実行されるよう固定される構成が例示されている。以下の説明では、説明の便宜上、タスクAを「タスク108a」、タスクBを「タスク108b」、タスクCを「タスク108c」、タスクDを「タスク108d」と主に表記する。
ここで図2〜4を参照して、本実施形態の電子制御装置101における複数のタスク108a〜108dの実行順序を決めるためのルールについて説明する。
第一のルールとして、複数のタスク108a〜108dのそれぞれは、マルチコアマイコン102内における実行の順序が予め設定されている。本実施形態では、図2,3に示すように、コア103aのタスク108aの実行が完了した後にタスク108bを実行し、タスク108bの実行が完了した後に、コア103bのタスク108cを実行するように設定されている。また、コア103aのタスク108aの実行が完了した後にコア103bのタスク108dを実行するように設定されている。
第二のルールとして、同一のコア103で実行するよう設定される複数のタスク108のそれぞれは、同一のコア103内における実行の順序を規定するための優先順位を設定されている。本実施形態では、図3,4に示すように、各コア103においてそれぞれHigh,Middle,Lowの三段階の優先順位が設定されている。これらの優先順位のうち、Highが最も高い優先順位であり、Middleが2番目の優先順位であり、Lowが最も低い優先順位である。図3に示すように、コア103a(コア1)においてタスク108a(タスクA)にはHigh、タスク108b(タスクB)にはMiddleの優先順位が予め設定されている。つまり、コア103aでは、タスク108aの優先順位がタスク108bより高く、基本的にはタスク108aがタスク108bより先に実行される。コア103b(コア2)においてタスク108c(タスクC)にはHigh、タスク108d(タスクD)にはMiddleの優先順位が予め設定されている。つまり、コア103bでは、タスク108cの優先順位がタスク108dより高く、基本的にはタスク108cがタスク108dより先に実行される。
上記の第一及び第二のルールは、従来のマルチコアマイコン102でも一般的に設定されているものである。これらのルールに従えば、図2に示す本実施形態における複数のタスク108a〜108dの実行順序は図3のようになる。図3に示すように、まずコア103aのタスク108aが実行され、次にコア103aのタスク108bが実行される。コア103bのタスク108cは、タスク108bが完了するまで待機し、タスク108bの完了後に実行される。タスク108cより優先順位が低いタスク108dは、タスク108cが完了した後に実行される。
コア103bにおいて、タスク108cは、第一のルールに従ってコア103aのタスク108bが完了するまでその実行を待機する必要がある。また、タスク108dは、第一のルールに従えば、タスク108aが完了した後にタスク108bと同時に実行可能であるが、第二のルールにおけるコア103b内での優先順位による制約を受けるため、コア103bでタスク108cが完了するまではその実行を待機しなければならない。このため、図3に示すように、コア103aにてタスク108bが実行されている期間には、コア103bのタスク108c,108dが共に実行されず、コア103bがタスクを全く実行していない待機状態となる。つまり、従来の第一、第二のルールを適用して複数のタスク108の実行順序を設定すると、複数のコア103があるにも関わらず複数のタスク108を並列処理できず、複数のタスク108を1つずつ逐次処理する状況が起こり得る。この場合、全てのタスク108が完了するまでに各タスク108の所要時間の累積時間を要することとなり、マルチコアマイコン102全体での処理速度を下げる要因となる。
そこで本実施形態では、上記の既存の第一、第二のルールに加えて、第三のルールとして、複数のタスク108のうちの任意のタスク(以降では説明の便宜上「第一のタスク」とも表記する)が、この第一のタスクが実行されるコアとは異なる他のコアで実行されるタスク(「第二のタスク」とも表記する)の完了まで実行を待機する必要があるとき、第一のタスクと同一のコア内の複数のタスクのうち第一のタスクを除く他のタスク(「第三のタスク」とも表記する)の優先順位に対して、第一のタスクの優先順位を低くするよう構成されている。この第三のルールを図2,3の例に適用すると、コア103bのタスク108cが第一のタスクに相当し、コア103aのタスク108bが第二のタスクに相当し、コア103bのタスク108dが第三のタスクに相当する。この場合、図2に示すように、タスク108cが、このタスク108cが実行されるコア103bとは異なる他のコア103aで実行されるタスク108bの完了まで実行を待機する必要があるため、図4に示すように、タスク108cの優先順位をHighからLowに変更して、コア103b内の他のタスク108dの優先順位(Middle)に対して、タスク108cの優先順位を低くする。
これにより、コア103aにおいてタスク108bが実行中であり、かつ、コア103bにおいてタスク108cが待機中である期間では、コア103bにおいて、タスク108dの優先順位がタスク108cより高い状態となるため、図4に示すように、タスク108cの待機中にタスク108cより先にタスク108dが実行される。つまり、コア103bのタスク108dが、コア103aのタスク108bと並列に実行されるので、コア103aのタスク108bの実行完了までコア103bが待機状態になるのを回避できる。そして、タスク108bが完了した後にタスク108cの実行が完了した時点で、全てのタスク108の実行が完了する。このように、既存の第一、第二のルールに加えて第三のルールを適用することで、複数のコア103間でタスク108の実行順序に制約がある場合でも、一部のコアが完全に待機状態となる期間を回避または減少できるので、全タスクの実行完了時間が早まり、この結果、マルチコアマイコン102全体での処理速度を向上できる。
さらに、本実施形態では、上記の第一〜第三のルールに加えて、第四のルールとして、第二のタスクの実行が完了したとき、第三のタスクに対して低くした第一のタスクの優先順位を元に戻すよう構成されている。この第四のルールを図2〜4の例に適用すると、上記の第三のルールに従ってコア103aのタスク108bの実行中に優先順位をLowに下げられたコア103bのタスク108cについて、タスク108bの実行が完了したとき、タスク108cの優先順位をLowからHighに再び変更して、タスク108dに対して低くしたタスク108cの優先順位が元に戻される。
これにより、図4に示すようにタスク108cの待機中にタスク108cより先にタスク108dが実行されている状況において、タスク108cが待機している要因であるコア103aのタスク108bが完了した場合には、タスク108cの優先順位がLowから所与のHighに戻される。つまり、コア103bにおいて現在実行中であるタスク108dの優先順位(Middle)よりも、タスク108cの優先順位(High)が高くなる。このとき、コア103bは、まずは優先順位が低いタスク108dの実行を中断して、優先順位が高いタスク108cを先に実行し、次いでタスク108cが完了した後にタスク108dを再開する。このように、第四のルールを適用することで、第三のルールが適用される複数のコア103間でのタスク108の実行順序の制約が解消したときには、タスク108の優先順位を所与のものに直ちに戻すことができ、複数のタスク108を電子制御装置101の制御対象(本実施形態ではエンジン)の制御に適した本来の順序で実行させることが可能となる。
上記の第一、第二のルールに関する情報は、マルチコアマイコン102内のコア103a,103bと、タスク監視部105とが保持している。また、上記の第三、第四のルールに従ってタスク108の優先順位を変更する優先順位変更処理は、主にタスク監視部105により実行される。
次に、図5を参照して優先順位変更処理の詳細な手順について説明する。図5のフローチャートに示す一連の処理は、例えばマルチコアマイコン102内の複数のコア103のいずれかにおいてタスク108のコールが実施されることを契機として、電子制御装置101のマルチコアマイコン102(主にタスク監視部105)により実行される。ここでは、図2〜4を参照して説明した例においてコア103bのタスク108cがコールされる状況を挙げて説明する。
ステップS101では、各コア103により、次に実行するよう設定されているタスク108のコールが実施される。コールを実施すると、各コア103はコールしたタスク108の情報をタスク監視部105に出力する。ステップS101の処理が完了するとステップS102に移行する。なお、本ステップでコールされるタスク(以降では「該当タスク」とも表記する)が、上述の「第一のタスク」に相当し、図2〜4に示す例ではコア103bのタスク108cに相当する。
ステップS102では、タスク監視部105により、ステップS101にてコールされたタスク108(該当タスク)が、他コア103で実行中のタスク108の完了を待つ必要があるか否かが判定される。タスク監視部105は、例えば、該当タスク108の一つ前に実行順序が設定されているタスク108が他コア103のものであること、この他コア103のタスク108がまだ完了していないこと、などの条件を満たすときに、該当タスク108が他コア103で実行中のタスク108の完了を待つ必要があると判定することができる。ステップS102の判定の結果、該当タスク108が、他コア103で実行中のタスク108の完了を待つ必要がある場合(ステップS102のYes)にはステップS103に移行する。一方、該当タスク108が、他コア103で実行中のタスク108の完了を待つ必要が無い場合(ステップS102のNo)には本制御フローを終了する。この場合には、当初の設定(例えば上記の第一、第二のルール)に従って、引き続き複数のタスク108の実行が所与の実行順序に従って進められる。
なお、ステップS102において「他コア103で実行中のタスク108」が上述の「第二のタスク」に相当し、図2〜4に示す例ではコア103aのタスク108bに相当する。図2〜4に示す例の場合、ステップS102の処理では、コールされたタスク108cが、このタスク108cが実行されるコア103bとは他のコア103aで実行中のタスク108bの完了を待つ必要があるため、ステップS103に移行する。
ステップS103では、タスク監視部105により、ステップS101にてコールされたタスク108(該当タスク)が、他コア103で実行中のタスク108の完了を待つ必要がある状態のため、該当タスク108の予め設定されている優先順位の情報がRAM106に記憶される。図2〜4に示す例の場合、コールされたタスク108cの予め設定されている優先順位の情報(High)がRAM106に記憶される。ステップS103の処理が完了するとステップS104に移行する。
ステップS104では、タスク監視部105により、ステップS101にてコールされたタスク108(該当タスク)の優先順位が下げられる。タスク監視部105は、例えば、該当タスク108が実行されるコア103において、該当タスク108以外の他の全てのタスク108の優先順位よりも下位になるように、該当タスク108の優先順位を変更する。タスク監視部105は、該当タスク108の変更後の優先順位の情報を、該当タスク108を実行するコア103に出力する。この情報を受け取ったコア103は、該当タスク108の優先順位をタスク監視部105からの命令に従って変更する。ステップS104の処理が完了するとステップS105に移行する。
図2〜4に示す例の場合、ステップS104の処理では、コールされたタスク108cの優先順位がHighからLowへ2段階下げられ、このタスク108cが実行されるコア103b内の他のタスク108dの優先順位(Middle)より下位になるように変更されている。この状態において、図4に示すように、コア103bではタスク108cが待機状態の期間内に、タスク108cより優先順位が高くなったタスク108dが先に実行されている。
ステップS105では、タスク監視部105により、コールされたタスク108(該当タスク)が完了を待機している他コア103のタスク108(第二のタスク)が完了したか否かが判定される。タスク監視部105は、例えば第二のタスク108を実行しているコア103から第二のタスク108の実行が完了した旨の情報が入力されるとき、他コア103のタスク108が完了したことを判定することができる。ステップS105の判定の結果、他コア103のタスク108が完了した場合(ステップS105のYes)にはステップS106に移行する。他コア103のタスク108が完了していない場合(ステップS105のNo)にはこのタスク108の完了まで待機する。
ステップS106では、タスク監視部105により、コールされたタスク108(該当タスク)が完了を待機していた他コア103のタスク108が完了したため、ステップS103でRAM106に記憶されていた該当タスクの所与の優先順位の情報がRAM106から読み込まれる。ステップS106の処理が完了するとステップS107に移行する。
ステップS107では、タスク監視部105により、ステップS104で変更された該当タスクの優先順位が元に戻される。タスク監視部105は、ステップS106で取得した該当タスクの元の優先順位の情報を、該当タスクを実行するコアに出力する。この情報を受け取ったコアは、該当タスクの優先順位をタスク監視部105からの命令に従って元の順位に変更する。ステップS107の処理が完了すると本制御フローを終了する。
図2〜4に示す例の場合、ステップS106,S107では、コア103aにおいてタスク108bの実行が完了したときに、タスク監視部105がRAM106に記憶されているタスク108cの元の優先順位(High)の情報を取得して、タスク108cを実行するコア103bに出力する。コア103bは、タスク監視部105からの命令に応じてタスク108cの優先順位を、現在設定されている「Low」から元の「High」に変更する。これにより、コア103b内では再び、タスク108cがタスク108dよりも優先的に実行されるようになる。
このように、本実施形態の電子制御装置101では、タスク監視部105が、上記の第三のルールにしたがって第一のタスク(図2〜4の例におけるタスク108c)の優先順位を変更する「優先順位変更部」として機能する。また、RAM106が、タスク監視部105により第一のタスクの優先順位が変更されたとき、第一のタスクの元の優先順位を記憶する「記憶部」として機能する。この構成により、タスク108を実行する2つのコア103とは別の構成要素であるタスク監視部105及びRAM106を利用して、図5を参照して説明した優先順位変更処理が実施される。このため、2つのコア103において複数のタスク108の実行させることに支障を与えることなく、優先順位変更部及び記憶部の機能を実施できるので、マルチコアマイコン102における複数のタスク108の実行をより一層スムーズに行うことが可能となる。
また、本実施形態の電子制御装置101では、タスク監視部105が、複数のコア103で実行されるタスク108の実行完了を監視する「監視部」としても機能する。タスク監視部105は、監視部の機能によって、上記の第四のルールに従って第二のタスク(図2〜4の例におけるタスク108b)の実行が完了したことが検知されたとき、第一のタスク(タスク108c)の優先順位をRAM106に記憶されている元の優先順位に戻す。この構成により、タスク108を実行する2つのコア103とは別の構成要素であるタスク監視部105を利用して、第二のタスクの実行完了の監視と、第一のタスクの優先順位を元に戻す処理が実施される。このため、2つのコア103において複数のタスク108の実行させることに支障を与えることなく、監視部及び優先順位変更部の機能を実施できるので、マルチコアマイコン102における複数のタスク108の実行をより一層スムーズに行うことが可能となると共に、第二のタスクの実行完了時にタスク108の優先順位を所与のものに直ちに戻すことが可能となる。
次に、図6〜9を参照して、他のコアで実行されるタスク(第二のタスク)の完了を待機する必要があるタスク(第一のタスク)と同じ優先順位をもつタスクが同一コアに含まれる構成を例示して、この構成における優先順位変更処理について説明する。この構成例では、図6に示すように、2つのコア103のうちコア103aにおいて所定の2つのタスクA及びタスクBが実行されるよう固定され、また、コア103bにおいて所定の3つのタスクC,タスクD,及びタスクEが実行されるよう固定される構成が例示されている。以下の説明では、説明の便宜上、タスクAを「タスク208a」、タスクBを「タスク208b」、タスクCを「タスク208c」、タスクDを「タスク208d」、タスクEを「タスク208e」と主に表記する。
この構成例では、図6に示すように、コア103aのタスク208aの実行が完了した後にタスク208bを実行し、タスク208bの実行が完了した後にコア103bのタスク208cを実行し、タスク208cの実行が完了した後にタスク208dを実行するように設定されている。また、コア103aのタスク208aの実行が完了した後にコア103bのタスク208eを実行するように設定されている。
また、この構成例では、図7に示すように、コア103aにおいてタスク208aにはHigh、タスク208bにはMiddleの優先順位が予め設定されている。つまり、コア103aでは、タスク208aの優先順位がタスク208bより高く、基本的にはタスク208aがタスク208bより先に実行される。コア103bにおいてタスク208c,208dにはHigh、タスク208eにはMiddleの優先順位が予め設定されている。つまり、コア103bでは、タスク208c,208dの優先順位がタスク208eより高く、基本的にはタスク208c,208dがタスク208eより先に実行される。
ここで、上記の第三のルールにおける第一のタスクと同じ優先順位をもつ他のタスク(以降の説明では「第四のタスク」とも表記する)が同一コア内に存在する場合、言い換えると第一のタスクと同じ優先順位をもつタスクのグループがある場合には、本実施形態の電子制御装置101では、このグループに含まれるすべてのタスクの優先順位を纏めて下げるよう構成される。つまり、本実施形態の電子制御装置101は、第三のタスクの優先順位に対して、第一のタスクの優先順位を低く変更するとき、第一のタスクと同一のコア内の複数のタスクのうち第一のタスクと同一の優先順位が設定される第四のタスクの優先順位を第一のタスクと同様に変更することができる。
これを図6,7に示す例に適用すると、コア103bのタスク208cが、このタスク208cが実行されるコア103bとは異なる他のコア103aで実行されるタスク208bの完了まで実行を待機する必要があるため、図8に示すように、タスク208cの優先順位をHighからLowに変更して、コア103b内の他のタスク208eの優先順位(Middle)に対して、タスク208cの優先順位を低くする。さらに、タスク208cと同じ優先順位のタスク208dも、タスク208cと同様に優先順位をHighからLowに変更して、タスク208eの優先順位(Middle)に対して優先順位を低くする。
これにより、コア103aにおいてタスク208bが実行中であり、かつ、コア103bにおいてタスク208cが待機中である期間では、コア103bにおいて、タスク208eの優先順位がタスク208c,208dより高い状態となるため、図8に示すように、タスク208c,208dの待機中にタスク208c,208dより先にタスク208eが実行される。つまり、コア103bのタスク208eが、コア103aのタスク208bと並列に実行されるので、コア103aのタスク208bの実行完了までコア103bが待機状態になるのを回避できる。タスク208bが完了した後には、タスク208c及びタスク208dが順次実行されて全てのタスク208の実行が完了する。
また、本実施形態の電子制御装置101は、第二のタスクの実行が完了したとき、第三のタスクに対して低くした第一のタスク及び第四のタスクを含むグループの優先順位を元に戻すことができる。これを図6〜8の例に適用すると、上記の第三のルールに従ってコア103aのタスク208bの実行中に優先順位をLowに下げられたコア103bのタスク208c及びタスク208dのグループについて、タスク208bの実行が完了したとき、タスク208c,208dの優先順位をLowからHighに再び変更して、タスク208eに対して低くしたタスク208c,208dの優先順位が元に戻される。
したがって、本実施形態の電子制御装置101は、図6〜8に示す構成でも、図2〜4に示す構成で説明したのと同様の効果を発揮できる。
ところで、複数のタスクの優先順位が同一に設定されている場合、これらのタスク208は所定の順番どおりに連続して実行することや、できるだけ同じタイミングで実行することが想定されていると考えられる。図6〜8の例では、タスク208cが実行された後に、タスク208dが実行されるのが好ましい。本実施形態では、このような同一の優先順位のタスクのグループについて、当該グループの優先順位の変更を纏めて行うので、各タスクの優先順位が変更されても、グループ内のタスクの実行順序を所定のもので維持することができる。したがって、複数のタスク208の優先順位を変更する処理を行っても、電子制御装置101の制御対象(本実施形態ではエンジン)の制御に適した本来の順序で実行できる機会を増やすことができる。
次に、図9のフローチャートを参照して、図6〜8に示す構成における優先順位変更処理の詳細な手順について説明する。なお、図9のフローチャート中のステップS201,S202,S205,S206の各処理は、図5のフローチャートを参照して説明したステップS101,S102,S105,S106の処理と同様であるので説明を省略する。
ステップS203では、タスク監視部105により、ステップS201にてコールされたタスク208(該当タスク)が、他コア103で実行中のタスク208の完了を待つ必要がある状態のため、同一コア103内で該当タスク208と同じ優先順位をもつタスクのグループについて、このグループ内の各タスク208に予め設定されている優先順位の情報がRAM106に記憶される。図6〜8に示す例の場合、コールされたタスク208cと、このタスク208cと同じ優先順位のタスク208dに予め設定されている優先順位の情報(High)がRAM106に記憶される。ステップS203の処理が完了するとステップS204に移行する。
ステップS204では、タスク監視部105により、ステップS201にてコールされたタスク208(該当タスク)を含むグループの優先順位が下げられる。タスク監視部105は、例えば、該当タスク208が実行されるコア103において、該当タスク以外の他の全てのタスク208の優先順位よりも下位になるように、該当タスク208と、この該当タスクと同じ優先順位をもつ他のタスク208の優先順位を変更する。ステップS204の処理が完了するとステップS205に移行する。
図6〜8に示す例の場合、ステップS204の処理では、コールされたタスク208cと、このタスク208cと同じ優先順位をもつタスク208dからなるグループの優先順位が、HighからLowへ2段階下げられ、タスク208c,208dが実行されるコア103b内の他のタスク208eの優先順位(Middle)より下位になるように変更されている。この状態において、図8に示すように、コア103bではタスク208cが待機状態の期間内に、タスク208c,208dより優先順位が高くなったタスク208eが先に実行されている。
ステップS207では、タスク監視部105により、ステップS204で変更された該当タスク208を含むグループの優先順位が元に戻される。タスク監視部105は、ステップS206でRAM106から取得した該当タスクのグループの元の優先順位の情報を、該当タスクを実行するコアに出力する。この情報を受け取ったコアは、該当タスクのグループの優先順位をタスク監視部105からの命令に従って元の順位に変更する。ステップS207の処理が完了すると本制御フローを終了する。
図6〜8に示す例の場合、ステップS206,S207では、コア103aにおいてタスク208bの実行が完了したときに、タスク監視部105がRAM106に記憶されているタスク208c,208dの元の優先順位(High)の情報を取得して、タスク208c,208dを実行するコア103bに出力する。コア103bは、タスク監視部105からの命令に応じてタスク208c,208dの優先順位を、現在設定されている「Low」から元の「High」に変更する。これにより、コア103b内では再び、タスク208c,208dがタスク208eよりも優先的に実行されるようになる。
以上、具体例を参照しつつ本発明の実施の形態について説明した。しかし、本発明はこれらの具体例に限定されるものではない。すなわち、これら具体例に、当業者が適宜設計変更を加えたものも、本発明の特徴を備えている限り、本発明の範囲に包含される。例えば、前述した各具体例が備える各要素及びその数、配置、材料、条件、形状、サイズなどは、例示したものに限定されるわけではなく適宜変更することができる。また、前述した各実施の形態が備える各要素は、技術的に可能な限りにおいて組み合わせることができ、これらを組み合わせたものも本発明の特徴を含む限り本発明の範囲に包含される。
上記実施形態では、マルチコアマイコン102が2つのコア103a,103bを有する構成を例示したが、マルチコアマイコン102が有する複数のコア103の数はこれに限られず、3つ以上のコアを有する構成としてもよい。また、上記実施形態では、同一のコア103で実行される複数のタスク108に三段階の優先順位を設定する構成を例示したが、優先順位の段階数は三段階以外としてもよい。
上記実施形態では、マルチコアマイコン102において複数のコア103とは別要素として、優先順位変更部及び監視部として機能するタスク監視部105、及び、記憶部として機能するRAM106を備える構成を例示したが、優先順位変更部、監視部、記憶部の各機能をコア103内のタスク108,208として設定してもよい。また、電子制御装置101の内部の要素であれば、マルチコアマイコン102の外部の要素を優先順位変更部、監視部、記憶部の各機能を実現するよう適用し、マルチコアマイコン102内の各コア103と通信する構成としてもよい。
また、上記実施形態では、優先順位を記憶する記憶部としてマルチコアマイコン102内のRAM106を適用する構成を例示したが、この代わりに共有RAM104の一部の領域を割り当ててもよい。また、記憶部として機能するRAM106または共有RAM104をマルチコアマイコン102の外部に配置して、マイコン102内のコア103と通信する形にしてもよい。
上記実施形態では、電子制御装置101が車両のエンジン制御用ECUとして実装される構成を例示したが、マルチコアマイコン102を有する電子制御装置101であればよく、エンジン制御用ECU以外にも適用することができる。電子制御装置101は、例えば、車両のEPS(Electric Power Steering)やECB(Electronic Control Braking System)などの制御用ECU、ハイブリッド車両制御用ECU、ゲートウェイECUなどにも適用可能であり、また、複数のECUの機能が統合された統合ECUにも適用可能である。また、電子制御装置101は、車両に搭載されるECU以外の電子制御装置にも適用可能である。
上記実施形態では、該当タスク(第一のタスク。上記実施形態ではタスク108c,208c)の優先順位を他のタスク(第三のタスク。上記実施形態ではタスク108d,208e)より下げる構成を例示したが、該当タスクの優先順位が他のタスクの優先順位より相対的に下がることによって、他のタスクが該当タスクより先に実行できればよい。つまり、他のタスクの優先順位を、該当タスクより上げる構成としてもよい。
101:電子制御装置
102:マルチコアマイコン
103:複数のコア
103a:コア1(他のコア)
103b:コア2(同一のコア)
105:タスク監視部(優先順位変更部、監視部)
106:RAM(記憶部)
108,208:複数のタスク
108b,208b:タスクB(第二のタスク)
108c,208c:タスクC(第一のタスク)
108d:タスクD(第三のタスク)
208d:タスクD(第四のタスク)
208e:タスクE(第三のタスク)

Claims (6)

  1. 複数のコア(103)で所定の複数のタスク(108,208)を並行して実行するマルチコアマイコン(102)を備え、
    前記所定の複数のタスクのそれぞれは、前記複数のコアのうち特定の1つのコアで実行するよう個別に設定されると共に、前記マルチコアマイコン内における実行の順序を設定されており、
    同一の前記コアで実行するよう設定される複数のタスクのそれぞれは、前記同一のコア内における前記実行の順序を規定するための優先順位を設定され、
    前記同一のコアで実行するように設定される前記複数のタスク(108c,108d,208c〜208e)のうちの第一のタスク(108c,208c)が、前記同一のコア(103b)以外の他の前記コア(103a)で実行される第二のタスク(108b,208b)の完了まで実行を待機する必要があるとき、前記同一のコアで実行するように設定される前記複数のタスクのうち前記第一のタスクを除く第三のタスク(108d,208e)の前記優先順位に対して、前記第一のタスクの前記優先順位を相対的に低くすることを特徴とする電子制御装置(101)。
  2. 前記第二のタスクの実行が完了したとき、前記第三のタスクに対して相対的に低くした前記第一のタスクの前記優先順位を元に戻す
    ことを特徴とする、請求項1に記載の電子制御装置。
  3. 前記第一のタスクが、前記第二のタスクが完了するまで実行を待機する必要があるとき、前記第三のタスクの前記優先順位に対して、前記第一のタスクの前記優先順位を相対的に低く変更する優先順位変更部(105)と、
    前記優先順位変更部により前記第一のタスクの前記優先順位が変更されたとき、前記第一のタスクの元の優先順位を記憶する記憶部(106)と、
    を備え、
    前記優先順位変更部は、前記第二のタスクの実行が完了したとき、前記第一のタスクの前記優先順位を前記記憶部に記憶されている前記元の優先順位に戻す
    ことを特徴とする、請求項2に記載の電子制御装置。
  4. 前記複数のコアで実行されるタスクの実行完了を監視する監視部(105)を備え、
    前記優先順位変更部は、前記監視部により前記第二のタスクの実行が完了したことが検知されたとき、前記第一のタスクの前記優先順位を前記記憶部に記憶されている前記元の優先順位に戻す
    ことを特徴とする、請求項3に記載の電子制御装置。
  5. 前記第三のタスク(208e)の前記優先順位に対して、前記第一のタスク(208c)の前記優先順位を相対的に低く変更するとき、前記同一のコアで実行するように設定される前記複数のタスク(208c〜208e)のうち前記第一のタスクと同一の優先順位が設定される第四のタスク(208d)の優先順位を前記第一のタスクと同様に変更する
    ことを特徴とする、請求項1に記載の電子制御装置。
  6. 前記第二のタスクの実行が完了したとき、前記第三のタスクに対して相対的に低くした前記第一のタスク及び前記第四のタスクの前記優先順位を元に戻す
    ことを特徴とする、請求項5に記載の電子制御装置。
JP2015085637A 2015-04-20 2015-04-20 電子制御装置 Active JP6365387B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2015085637A JP6365387B2 (ja) 2015-04-20 2015-04-20 電子制御装置
DE102016206490.8A DE102016206490A1 (de) 2015-04-20 2016-04-18 Elektronische steuereinheit

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015085637A JP6365387B2 (ja) 2015-04-20 2015-04-20 電子制御装置

Publications (2)

Publication Number Publication Date
JP2016206817A JP2016206817A (ja) 2016-12-08
JP6365387B2 true JP6365387B2 (ja) 2018-08-01

Family

ID=57043751

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015085637A Active JP6365387B2 (ja) 2015-04-20 2015-04-20 電子制御装置

Country Status (2)

Country Link
JP (1) JP6365387B2 (ja)
DE (1) DE102016206490A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7263746B2 (ja) * 2018-12-03 2023-04-25 株式会社デンソー 情報処理装置
KR102540724B1 (ko) * 2020-12-14 2023-06-05 현대오토에버 주식회사 멀티 코어 시스템에서의 태스크 실행 관리 방법, 그리고 이를 구현하기 위한 장치

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3573546B2 (ja) * 1995-10-27 2004-10-06 富士通株式会社 並列計算機における並列プロセススケジューリング方法および並列計算機用処理装置
JP2002073374A (ja) * 2000-08-30 2002-03-12 Canon Inc 割り込みシミュレーション方法及び装置
JP2003067201A (ja) * 2001-08-30 2003-03-07 Hitachi Ltd コントローラとオペレーティングシステム
JP2008276666A (ja) * 2007-05-07 2008-11-13 Sony Corp 情報処理装置および方法、並びにプログラム
JP2013054625A (ja) 2011-09-06 2013-03-21 Toyota Motor Corp 情報処理装置、情報処理方法
JP6156379B2 (ja) * 2012-08-13 2017-07-05 日本電気株式会社 スケジューリング装置、及び、スケジューリング方法
JP2015022504A (ja) * 2013-07-18 2015-02-02 富士通株式会社 情報処理装置、方法、及びプログラム

Also Published As

Publication number Publication date
DE102016206490A1 (de) 2016-10-20
JP2016206817A (ja) 2016-12-08

Similar Documents

Publication Publication Date Title
CN106569891B (zh) 一种存储系统中任务调度执行的方法和装置
CN103714397B (zh) 多阶段任务多状态系统的最优选择性维修优化方法及装置
JP5316718B1 (ja) マルチコア・プロセッサ
US8417918B2 (en) Reconfigurable processor with designated processing elements and reserved portion of register file for interrupt processing
WO2017090364A1 (ja) 車両制御装置
US9043806B2 (en) Information processing device and task switching method
US20140101670A1 (en) Computing system including multi-core processor and load balancing method thereof
JP2007257257A (ja) マルチタスクシステムにおけるタスク実行環境切替え方法
JP6895719B2 (ja) 車両制御装置
JP6365387B2 (ja) 電子制御装置
JP5971214B2 (ja) データ処理装置及びデータ処理プログラム
JP6243266B2 (ja) 電子制御装置及びメモリ診断方法
JP6519515B2 (ja) マイクロコンピュータ
JP2008090455A (ja) マルチプロセッサ信号処理装置
JP6413922B2 (ja) ソフトウェア分割方法、ソフトウェア分割装置および車載装置
JP6654230B2 (ja) 車両制御装置
JP2011008702A (ja) 故障処理装置
CN111480144A (zh) 多核机动车计算机管理多个任务的方法
JP6183251B2 (ja) 電子制御装置
JP6094387B2 (ja) 制御装置
JP2012226409A (ja) マルチコア・プロセッサ
JP5561241B2 (ja) マイクロコンピュータ
WO2017002939A1 (ja) 電子制御装置及びスタック使用方法
JP6394442B2 (ja) 電子制御装置
JP6252259B2 (ja) 電子制御装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170725

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180307

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180417

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180529

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20180605

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180618

R151 Written notification of patent or utility model registration

Ref document number: 6365387

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250