JP2016184315A - 電子制御装置 - Google Patents

電子制御装置 Download PDF

Info

Publication number
JP2016184315A
JP2016184315A JP2015064580A JP2015064580A JP2016184315A JP 2016184315 A JP2016184315 A JP 2016184315A JP 2015064580 A JP2015064580 A JP 2015064580A JP 2015064580 A JP2015064580 A JP 2015064580A JP 2016184315 A JP2016184315 A JP 2016184315A
Authority
JP
Japan
Prior art keywords
task
program
core
cores
time
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.)
Pending
Application number
JP2015064580A
Other languages
English (en)
Inventor
喜道 瀧藤
Yoshimichi Takifuji
喜道 瀧藤
健介 水井
Kensuke Mizui
健介 水井
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 JP2015064580A priority Critical patent/JP2016184315A/ja
Publication of JP2016184315A publication Critical patent/JP2016184315A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

【課題】マルチコアでタスクを処理する電子制御装置において、タスク処理の実行にかかるコア間差を低減することのできる電子制御装置を提供する。【解決手段】この電子制御装置は、プログラムを記憶する記憶部と、プログラムを実行する演算部と、外部からタスクが入力され、タスクの優先度に応じて、タスクに対応したプログラムを起床させる制御部と、を備えている。演算部は、複数のコアを有して、各コアがプログラムを並列して演算可能にされ、制御部は、プログラムのうち所定の第1プログラムを起床させる起床タイミングが到来したとき、すべてのコアにおいて前回の第1プログラムの実行が完了していることを条件に、第1プログラムの起床を行う。【選択図】図3

Description

本発明は、車両に搭載され、複数のタスクを実行する電子制御装置に関する。
優先度の高低が設定された複数のタスクを処理する場合、例えば優先度の低いタスクAは、その実行中に他の優先度の高いタスクBが割り込んだりすると一時的に中断されることがある。タスクAの処理が完了していない状態で、次にタスクAが起床するタイミングが到来してしまうと、該タイミングにおいてタスクAは起床されず、処理が1回抜けてしまうという問題があった。
これに対して、特許文献1の電子制御装置は、タスクAの処理が完了するまでは、次のタスクAの起床をさせないようになっている。このため、タスク抜けを防止することができる。しかしながら、特許文献1の電子制御装置では、タスクAが完了するまで次のタスクAの起床を遅延させるので、優先度の低い処理の処理遅れが顕著になる虞がある。
ところで、近年、マイクロコンピュータに搭載される中央演算処理装置(CPU)においてマルチコア化が進んでいる。マルチコアのCPUを採用したマイクロコンピュータでは、一つのタスクを複数のコアに分割して演算を実行したり、複数のタスクを並列して演算を実行したり、といった方法によって、演算にかかる負荷を軽減することができる。
したがって、マルチコアを有する電子制御装置を採用すれば、タスクAの処理を複数のコアで分散して処理することによって、上記処理遅れを低減することができる。
特開2013−161363号公報
しかしながら、車両に搭載される電子制御装置では、タスクの起床周期が、例えばエンジンの回転数などに依存する場合があり、エンジンが高回転になると、マルチコアのCPUを採用した場合であっても、次に該タスクの起床タイミングが到来してもタスクの処理が完了できていないコアが生じてしまう虞がある。
一般的には、コア毎に割り当てられるタスクは各コアに対して均等ではないため、一つのタスクを分散処理すると、処理を完了したコアと、処理を完了できなかったコアとが発生してしまうことになる。処理を完了できなかったコアでは、次に該タスクを起床させるタイミングが到来しても起床処理が実行されないため、タスク抜けが発生し。コア間で実行回数に差が出てしまう虞がある。
また、特許文献1のように、処理を完了できなかったコアに対してタスクを遅延させて確実に実行させる技術を採用すると、タスクの起床周期を重ねるごとに、処理が完了する時間のコア間差が顕著になる虞がある。
本発明は、上記問題点を鑑みてなされたものであり、マルチコアでタスクを処理する電子制御装置において、タスク処理の実行にかかるコア間差を低減することのできる電子制御装置を提供することを目的とする。
ここに開示される発明は、上記目的を達成するために以下の技術的手段を採用する。なお、特許請求の範囲およびこの項に記載した括弧内の符号は、ひとつの態様として後述する実施形態に記載の具体的手段との対応関係を示すものであって、発明の技術的範囲を限定するものではない。
上記目的を達成するために、本発明は、プログラムを記憶する記憶部(40)と、プログラムを実行する演算部(20)と、外部からタスクが入力され、タスクの優先度に応じて、タスクに対応したプログラムを起床させる制御部(10)と、を備える電子制御装置であって、演算部は、複数のコアを有して、各コアがプログラムを並列して演算可能にされ、制御部は、プログラムのうち所定の第1プログラムを起床させる起床タイミングが到来したとき、すべてのコアにおいて前回の第1プログラムの実行が完了していることを条件に、第1プログラムの起床を行うことを特徴としている。
これによれば、複数のコアを有する、いわゆるマルチコアの電子制御装置において、すべてのコアで第1プログラムの実行が完了してから、次回の第1プログラムの起床を行うので、各コアにおいてタスク抜けが発生することがなく、コア間で実行回数に差が出ることを防止することができる。また、タスクの起床周期を重ねても、処理が完了する時刻のコア間差を抑制することができる。
第1実施形態における電子制御装置の概略構成を示すブロック図である。 従来の構成におけるタスクの処理を示すタイミングチャートである。 第1実施形態における電子制御装置の動作を示すフローチャートである。 第1実施形態におけるタスクの処理を示すタイミングチャートである。
以下、本発明の実施の形態を図面に基づいて説明する。なお、以下の各図相互において、互いに同一もしくは均等である部分に、同一符号を付与する。
(第1実施形態)
最初に、図1を参照して、本実施形態に係る電子制御装置の概略構成について説明する。
この電子制御装置は、例えば、車両におけるエンジン系の部位を制御するエンジン制御ECUである。図1に示すように、電子制御装置100には、ユーザーあるいはエンジンを構成する各部位からのタスクの実行要求が入力され、その要求に対する応答が出力されるようになっている。この出力に基づいて各部位が駆動し、エンジンが適切な動作を行う。
図1に示すように、本実施形態における電子制御装置100は、制御部10と、演算部20と、層別部30と、を備え、さらに記憶装置として記憶部40を備えている。
制御部10は、演算部20、層別部30および記憶部40と通信可能に接続されている。制御部10は、入力されるタスクに対応したプログラムを後述する記憶部40から読み出して起床させ、演算部20に実行させる。制御部10は、優先度の高いタスクに対応するプログラムを優先的に起床させるようになっている。
また、制御部10は演算部20の演算状態を監視している。制御部10は、演算部20において所定のプログラムの実行状態に応じて、次のタスクに対応したプログラムの実行を開始するか否かを判断している。制御部10の動作の詳細は追って説明する。
また、制御部10は、演算部20が演算した結果に基づいてエンジンの各部位の制御を決定して各部位を駆動させる。
演算部20は、タスクに対応したプログラムを実行し演算を行う部分である。演算部20は、制御部10により起床されたプログラムを記憶部40から読み出して実行している。
本実施形態における演算部20は、複数のコアを有するCPUを含んでいる。制御部10は、ひとつのタスクの処理に際して、処理を分割して複数のコアに割り当てる。割り当てられたコアは、対応するプログラムを実行する。つまり、ひとつのタスクを並行して分割演算が行われるようになっている。
層別部30は、入力されたタスクを、途中で処理が中断してはならない高優先度タスクと、途中で処理が中断されてもよい低優先度タスクと、に層別する部分である。高優先度タスクには、イベントの発生時に即時対応が必要な優先度の高いタスクが選定される。一方、低優先度タスクには、タスク完了期限が設定されていないなど、高優先度タスクに比べて優先度の低いタスクが選定される。
記憶部40は、入力されるタスクに対応したプログラムが格納されている。記憶部40に格納されたプログラムは、制御部10の要求に応じて起床され、起床されたプログラムに基づいて演算部20が演算を実行することによって、タスクが処理される。
次に、図2〜図4を参照して本実施形態における電子制御装置100ひいては制御部10の動作について説明する。
まず、図2を参照して従来構成における動作を説明する。この例では、2つの高優先度タスクと、1つの低優先度タスクとが電子制御装置100に入力されたとする。層別部30はこれらのタスクを高優先度タスクと低優先度タスクに層別して制御部10に出力する。制御部10は、演算部20の有する複数のコアのうち2つのコア(コア1,コア2)にタスクに対応したプログラムの実行を分散処理させる。この例における低優先度タスクは、時刻t1、時刻t3、時刻t5において、周期的に起床するようにされたタスクである。図2では、その間に高優先度タスクの割り込みがあり、その都度低優先度タスクの処理が中断される様子を図示している。
図2に示すように、コア1では、時刻t1において起床された低優先度タスクAが時刻t3以前の時刻t2において、すでに処理が完了している。したがって、定期的に起床される低優先度タスクの起床時刻t3において、新たな低優先度タスクBの起床が可能である。同様に、時刻t5以前に低優先度タスクの処理が完了しているので、時刻t5において、新たな低優先度タスクCの起床が可能である。すなわち、この例におけるコア1は、低優先度タスクの定期的な起床時刻において、その都度新たな低優先度タスクが処理可能な状態にある。特許請求の範囲における第1プログラムとは、低優先度タスクA〜Cに対応するプログラムを指す。
一方、コア2では、コア1に比べて高優先度タスクの割り込み数が多いため、時刻t3に至っても、時刻t1において起床された低優先度タスクAの処理が完了していない。よって、時刻t3以降も時刻t1において起床された低優先度タスクAの処理を継続してしまい、コア1が時刻t3で起床した低優先度タスクBを起床することができない。図2では、時刻t3と時刻t5の間の時刻t4において低優先度タスクAの処理を完了しているが、時刻t3において新たな低優先度タスクBは起床されていないので、時刻t4と時刻t5の間では低優先度タスクの処理が行われない。すなわち、コア2では、低優先度タスクBのタスク抜けが発生してしまう。
これに対して、本実施形態における制御部10は、図3に示す動作フローに従って動作する。図3および図4を参照して本実施形態における動作を説明する。図4は本実施形態におけるタスクの実行に関するタイミングチャートである。
この例においても、制御部10は、演算部20の有する複数のコアのうち2つのコア(コア1,コア2)にタスクに対応したプログラムの実行を分散処理させる。低優先度タスクは、時刻t1、時刻t3、時刻t5において、周期的に起床するようにされたタスクである。図4に示すように、時刻t1において、コア1およびコア2の双方で低優先度タスクAが起床したものと仮定する。
図4に示すように、コア1では、時刻t1において起床された低優先度タスクAが時刻t3以前の時刻t2において、すでに処理が完了している。一方、コア2では、コア1に比べて高優先度タスクの割り込み数が多いため、時刻t3に至っても、時刻t1において起床された低優先度タスクAの処理が完了していない。このような仮定のもと、本実施形態おける制御部10の動作を説明する。
まず、制御部10は、図3に示すように、ステップS1を実行する。ステップS1は、制御部10が、現在時刻が低優先度タスクの起床タイミングか否かを判定するステップである。図4に示すように、従来構成について図示した図2と同様に、低優先度タスクは、時刻t1、時刻t3、時刻t5において、周期的に起床するようにされたタスクであるから、時刻t1,t3,t5において、ステップS1はYES判定となり、ステップS2に進む。時刻t1,t3,t5を除く時刻では、ステップS1はNO判定となり、ステップS1を繰り返す。
ステップS2は、低優先度タスクの起床タイミングにおいて、制御部10が、全てのコアにおいて以前起床されていた低優先度タスクの処理が完了しているか否かを判定するステップである。
例えば時刻t3は、低優先度タスクAの次に処理されるべき低優先度タスクBの起床タイミングである。コア1においては以前に起床されていた低優先度タスクAが完了しているが、コア2においては低優先度タスクAの処理が完了していない。よって、時刻t3においては、ステップS2はNO判定となり、この制御部10は図3に示す動作フローを終了する。つまり、時刻t3において低優先度タスクBは起床されず、コア1、コア2のいずれでも低優先度タスクBの処理は実行されない。
その後の時刻t5は、低優先度タスクの起床タイミングである。時刻t5では、コア1およびコア2において、以前に起床されていた低優先度タスクAが完了している。よって、ステップS2はYES判定となり、ステップS3に進む。
ステップS3は、制御部10が、低優先度タスクに対応するプログラムを起床するステップである。時刻t5において、ステップS2がYES判定となるので、制御部10は、時刻t5において、低優先度タスクAの次の低優先度タスクである低優先度タスクBを起床させ、演算部20に対して演算を実行させる。
本実施形態にかかる電子制御装置100を採用することにより、すべてのコアである低優先度タスクに対応したプログラムの実行が完了してから、次回の低優先度タスクに対応するプログラムの起床を行うので、図4に示すように各コアにおいてタスク抜けが発生することがなく、コア間で実行回数に差が出ることを防止することができる。また、タスクの起床周期を重ねても、コア間において、処理が完了する時刻がほとんどずれることがない。すなわち、処理が完了する時刻のコア間差を抑制することができる。
(その他の実施形態)
以上、本発明の好ましい実施形態について説明したが、本発明は上記した実施形態になんら制限されることなく、本発明の主旨を逸脱しない範囲において、種々変形して実施することが可能である。
上記した実施形態では、低優先度タスクA〜Cがコア1とコア2の2つのコアに分割処理される例を示したが、低優先度タスクA〜Cが割り当てられるコア数は3以上であってもよい。
なお、低優先度タスクの処理に、電子制御装置100が持つ全てのコアを演算に使用する必要はなく、例えば8コアのCPUにおいて、2つのコアに低優先度タスクA〜Cを割り当てるようにしても良い。この場合、図3に示す動作フローのうち、ステップS2を、「割り当てに採用されている全てのコアにおいて以前起床されていた低優先度タスクの処理が完了しているか否かを判定するステップ」とすることが好ましい。これによれば、制御部10が全てのコアを監視することなく、割り当てに採用されているコアのみを監視すればよいから、制御部10の動作負荷を軽減することができる。
また、上記した実施形態では、低優先度タスクを対象にして、プログラムの起床タイミングを制御する例を説明したが、高優先度タスクを含む全てのタスクを対象にすることもできる。
10…制御部,20…演算部,30…層別部,40…記憶部

Claims (3)

  1. プログラムを記憶する記憶部(40)と、
    前記プログラムを実行する演算部(20)と、
    外部からタスクが入力され、前記タスクの優先度に応じて、前記タスクに対応した前記プログラムを起床させる制御部(10)と、を備える電子制御装置であって、
    前記演算部は、複数のコアを有して、各コアが前記プログラムを並列して演算可能にされ、
    前記制御部は、前記プログラムのうち所定の第1プログラムを起床させる起床タイミングが到来したとき、すべてのコアにおいて前回の前記第1プログラムの実行が完了していることを条件に、前記第1プログラムの起床を行うことを特徴とする電子制御装置。
  2. 前記タスクを、対応する前記プログラムの実行を中断できない高優先度タスクと、前記プログラムを中断可能な低優先度タスクとに層別する層別部(30)を備え、
    前記第1プログラムは前記低優先度タスクに対応する前記プログラムであることを特徴とする請求項1に記載の電子制御装置。
  3. 前記制御部は、前記プログラムのうち所定の第1プログラムを起床させる起床タイミングが到来したとき、
    複数の前記コアのうち、前記第1プログラムの実行に供されるコアにおいて前回の前記第1プログラムの実行が完了していることを条件に、前記第1プログラムの起床を行うことを特徴とする請求項1または請求項2に記載の電子制御装置。
JP2015064580A 2015-03-26 2015-03-26 電子制御装置 Pending JP2016184315A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2015064580A JP2016184315A (ja) 2015-03-26 2015-03-26 電子制御装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015064580A JP2016184315A (ja) 2015-03-26 2015-03-26 電子制御装置

Publications (1)

Publication Number Publication Date
JP2016184315A true JP2016184315A (ja) 2016-10-20

Family

ID=57242893

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015064580A Pending JP2016184315A (ja) 2015-03-26 2015-03-26 電子制御装置

Country Status (1)

Country Link
JP (1) JP2016184315A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019036043A (ja) * 2017-08-10 2019-03-07 オムロン株式会社 制御装置
JP2019194838A (ja) * 2018-05-03 2019-11-07 エルエス産電株式会社Lsis Co., Ltd. Plcのモータ駆動制御方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019036043A (ja) * 2017-08-10 2019-03-07 オムロン株式会社 制御装置
JP2019194838A (ja) * 2018-05-03 2019-11-07 エルエス産電株式会社Lsis Co., Ltd. Plcのモータ駆動制御方法

Similar Documents

Publication Publication Date Title
US9298504B1 (en) Systems, devices, and techniques for preempting and reassigning tasks within a multiprocessor system
JPWO2005106623A1 (ja) Cpuクロック制御装置、cpuクロック制御方法、cpuクロック制御プログラム、記録媒体、及び伝送媒体
WO2017080273A1 (zh) 任务管理方法和系统、计算机存储介质
US10467054B2 (en) Resource management method and system, and computer storage medium
WO2013116751A1 (en) Dynamic power management in real-time systems
JP5347451B2 (ja) マルチプロセッサシステム、競合回避プログラム及び競合回避方法
CN105955809B (zh) 线程调度方法和系统
JP2011191806A (ja) タスク実行制御装置及びプログラム
JP2005165470A (ja) 電子機器およびプロセッサ速度制御方法
CN109491780B (zh) 多任务调度方法及装置
WO2012113232A1 (zh) 调整时钟中断周期的方法和装置
RU2603497C2 (ru) Способ управления исполнением задачи в компьютерной системе
JP2013149221A (ja) プロセッサの制御装置およびその方法
JP2016184315A (ja) 電子制御装置
JP5726006B2 (ja) タスクおよびリソースのスケジューリング装置及びその方法並びに制御装置
JP6669705B2 (ja) 数値制御装置
JP2020135214A (ja) タスク管理装置
JP2013152636A (ja) 情報処理装置、タスクスケジューリング方法
JP2012093832A (ja) 情報処理装置
JP2010224853A (ja) ベクトル計算機およびベクトル計算機におけるマイクロプロセッサのスケジューリング方法
JP2010102567A (ja) 周期駆動タスク実行装置、周期駆動タスク実行方法及びプログラム
JP2007193744A (ja) 情報処理装置、プログラム、およびスケジューリング方法
CN105786598B (zh) 任务调度方法及装置
Moisuc et al. Hardware event handling in the hardware real-time operating systems
KR20130094889A (ko) 실시간 운영체제의 태스크 스케줄링 방법