(57)【要約】【課題】タスクプログラムの優先度とともに実行タイミングを考慮した上でタスクプログラムを配分することができる、電子制御装置を提供する。【解決手段】本発明に係る電子制御装置は、空いている演算部に対して実行優先度の高い方から順にタスクを割り当て、空いている演算部がない場合は実行所要時間の合計が最も小さい演算部に対してタスクを割り当てる。【選択図】図４
2017111662.tif 000002
【特許請求の範囲】
【請求項１】
演算処理を実装した複数のタスクのうちいずれかを実行する複数の演算部、
前記演算部において異常が発生したことを検知する異常検知部、
前記異常検知部が前記異常を検知したとき前記演算部に対して前記タスクを改めて割り当てる再割当を実施する設定部、
を備え、
前記設定部は、各前記タスクを実行優先度の高い方から順に、いずれの前記タスクも割り当てられていない前記演算部に対して割り当て、
前記設定部は、全ての前記演算部が少なくともいずれかの前記タスクを既に割り当てられている場合においてさらに前記タスクを割り当てようとするときは、これから割り当てようとする前記タスクである割当対象タスクの実行所要時間と前記演算部に対して既に割り当てられている前記タスクの実行所要時間の合計との和が最も小さい前記演算部に対して、前記割当対象タスクを割り当てる
ことを特徴とする電子制御装置。
【請求項２】
前記電子制御装置はさらに、前記演算部が前記タスクを実行する際に用いるデータを格納するメモリを備え、
前記演算部は、前記メモリ上のアドレスのうち初期設定によって割り当てられた前記タスクを実行する際に用いるデータを格納しているアドレス範囲のみに対してアクセスできるように、あらかじめアクセス可能範囲を設定されており、
前記設定部は、前記再割当によって前記演算部に対して改めて割り当てられる前記タスクを実行する際に用いるデータに対して前記演算部がアクセスすることができるように、前記アクセス可能範囲を変更する
ことを特徴とする請求項１記載の電子制御装置。
【請求項３】
前記電子制御装置は、いずれかの前記演算部において異常が発生した場合において各前記演算部に対して割り当てるべき前記タスクをあらかじめ定義する定義テーブルを備え、
前記設定部は、前記定義テーブルの定義にしたがって前記タスクを割り当てる
ことを特徴とする請求項１記載の電子制御装置。
【請求項４】
前記電子制御装置は、前記演算部が前記タスクを実行するのに要した実行所要時間を計測する計測部を備え、
前記設定部は、前記計測部が計測した実行所要時間に基づき前記和を求め、その求めた前記和にしたがって前記タスクを割り当てる
ことを特徴とする請求項１記載の電子制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子制御装置に関する。
【背景技術】
【０００２】
近年はＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）のマルチコア化やマルチＣＰＵ化が進んでおり、マイコンが複数のコアやＣＰＵを有することを利用してマイコンの信頼性を向上させる技術が考案されている。コアやＣＰＵ（以下記載の便宜のためコアについてのみ述べる）を複数備えるシステムにおいては、いずれかのコアが故障したとしても、他の正常なコアがタスクを代替実行することにより、システム全体の信頼性を確保することを図っている。
【０００３】
下記特許文献１には、コアが故障した場合において、プロセッサユニット内に代替実行可能なプロセッサコアが存在しなければ、最も優先度の低いプロセッサユニット内のプロセッサコアにアプリケーションを代替実行させるマルチプロセッサシステムが開示されている。
【０００４】
下記特許文献２には、あらかじめ定義した優先度テーブルに基づき、優先度の高いプログラムほど優先的に実行し、これにともなってコアと作業メモリの組み合わせを変更するマルチコアシステムが開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１２−１３３４５８号公報
【特許文献２】特開２００９−０６９９６３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上記特許文献１〜２記載のように、複数のコアを有するマイコンにおいていずれかのコアが故障した場合、あらかじめ定義した優先度が高いタスクプログラムを優先的に実行するのが一般的である。しかし例えば車両制御装置のようにリアルタイム性の高いシステムにおいては、タスクプログラムの優先度だけではなく、実行タイミング（例えば、最悪応答時間）を考慮する必要がある。しかし特許文献１〜２記載の技術においては、これらを考慮していない。したがって、正常コアが故障コアを代替したとしても、別のシステム故障が発生する可能性がある。
【０００７】
例えば、コア１は周期が１ｍｓ、実行所要時間が０．４ｍｓ、優先度が２のタスクプログラムＡを実行しており、コア２は周期が２ｍｓ、実行所要時間が１．７ｍｓ、優先度が３のタスクプログラムＢを実行しており、コア３は周期が０．５ｍｓ、実行所要時間が０．４ｍｓ、優先度が１のタスクプログラムＣを実行していると仮定する。コア３が故障した場合、最も優先度が低いタスクプログラムＢを実行するコア２に対してタスクプログラムＣを配分したと仮定する。この場合、タスクプログラムＢの最悪応答時間が２．１ｍｓとなり、タスクプログラムＢを完了するために予定されている周期２ｍｓよりも長い時間が必要となって、システム故障につながる可能性がある。
【０００８】
本発明は、上記のような課題に鑑みてなされたものであり、タスクプログラムの優先度とともに実行タイミングを考慮した上でタスクプログラムを配分することができる、電子制御装置を提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明に係る電子制御装置は、空いている演算部に対して実行優先度の高い方から順にタスクを割り当て、空いている演算部がない場合は実行所要時間の合計が最も小さくなる演算部に対してタスクを割り当てる。
【発明の効果】
【００１０】
本発明に係る電子制御装置によれば、タスクプログラムの優先度のみではなく、実行タイミングを考慮した上で、タスクプログラムを各演算部へ配分し、信頼性を向上することができる。
【図面の簡単な説明】
【００１１】
【図１】実施形態１に係る電子制御装置１０の構成を説明するブロック図である。
【図２】各コアに対してタスクプログラムを割り当てた１例である。
【図３】各タスクプログラムの優先度と実行所要時間を示す図である。
【図４】異常検知部２０がコア異常を検出したとき設定部１４がタスクプログラムを再割当する手順を説明する図である。
【図５】タイミング最適化部２１が保持している再割当手順とコアの異常パターンとの間の対応関係を示すデータテーブルの例である。
【図６】実施形態２における設定部１４の動作を説明するフローチャートである。
【発明を実施するための形態】
【００１２】
＜実施の形態１＞
図１は、本発明の実施形態１に係る電子制御装置１０の構成を説明するブロック図である。電子制御装置１０は、機器を制御するためのタスクを実装したタスクプログラムを実行することにより当該機器を電子的に制御する装置である。電子制御装置１０は、第１コア１１、第２コア１２、第３コア１３の３つのコアを有するマルチコアマイコンを備える。電子制御装置１０はその他機能部として、設定部１４、メモリ制御部１８、メモリ１９、異常検知部２０、タイミング最適化部２１、Ｉ／Ｏ部２２を備える。
【００１３】
第１コア１１〜第３コア１３は、プログラムカウンタ、命令バッファ、ＩＦＵ（Ｉｎｓｔｒｕｃｔｉｏｎ  Ｆｅｔｃｈ  Ｕｎｉｔ）、Ｄｅｃｏｄｅｒ、Ｒｅｇｉｓｔｅｒ  Ｆｅｔｃｈ、Ｒｅｇｉｓｔｅｒ、Ｓｈｉｆｔｅｒ、ＡＬＵ（Ａｒｉｔｈｍｅｔｉｃ  Ｌｏｇｉｃ  Ｕｎｉｔ）、ＭＵＬ、ＦＰＵ（Ｆｌｏａｔｉｎｇ  Ｐｏｉｎｔ  Ｕｎｉｔ）などの演算回路を有する。これらが１クロック毎に命令実行段階の各ステージを実行することにより、いわゆるパイプライン制御が実現されている。
【００１４】
メモリ１９は、第１コア１１〜第３コア１３が実行するプログラムを保存するＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）と、各コアがプログラムを実行するとき一時的に使用するデータを保存するＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）とによって構成されている。
【００１５】
メモリ制御部１８は、第１コア１１〜第３コア１３がメモリ１９に対してアクセスすることができるアドレス範囲を制御することにより、各コアからメモリ１９に対するアクセス競合を抑制する。例えばメモリ制御部１８は、第１コア１１をアドレス範囲Ａにアクセスさせ、第２コア１２をアドレス範囲Ｂにアクセスさせることができる。あるいは第１コア１１をメモリ１９にアクセスさせず、第２コア１２をアドレス範囲Ａとアドレス範囲Ｂにアクセスさせることができる。
【００１６】
Ｉ／Ｏ部２２は、電子制御装置１０と外部機器を接続するインタフェースである。例えば各種センサ、アクチュエータ、通信コントローラなどが電子制御装置１０に対して接続される。
【００１７】
異常検知部２０は、第１コア１１〜第３コア１３のいずれかに処理能力を低下させるなどの異常が発生したことを検出する。異常検知部２０は、例えば第１コア１１〜第３コア１３から異常発生を示す信号を受け取ると、そのコアに異常が発生したと判断する。異常検知部２０は、例えば温度などのその他手段によって異常を検出してもよい。温度によって異常判断する場合、異常検知部２０は、第１コア１１〜第３コア１３の近傍に設けられた温度センサからの温度信号に基づいて、第１コア１１〜第３コア１３いずれかが異常温度に達していると判断できる場合、そのコアについて異常が発生したと判断する。
【００１８】
タイミング最適化部２１は、第１コア１１〜第３コア１３のいずれかに異常が発生した場合、タスクプログラムを異常が発生していないコアに対して再割当するための基準を提供する。これにより、タスクプログラムの実行タイミングを改めて最適化することを図る。再割当の基準の具体的内容については後述する。
【００１９】
設定部１４は、タイミング最適化部２１が提供する基準にしたがって、各コアに対してタスクプログラムを再割当するとともに、その再割当の結果に応じてメモリ制御部１８を介して各コアがアクセスすることができるメモリ１９のアドレス範囲を再設定する。設定部１４は、各コアのタスク実行スケジュールとメモリ１９に対するアクセス範囲を設定するスケジューラ（第１コアスケジューラ１５、第２コアスケジューラ１６、第３コアスケジューラ１７）を備える。
【００２０】
図２は、各コアに対してタスクプログラムを割り当てた１例である。第１コア１１はタスクプログラムＡを実行し、第２コア１２はタスクプログラムＢを実行し、第３コア１３はタスクプログラムＣを実行する。第１コア１１はメモリ１９上のメモリアドレス範囲Ａに対してのみアクセスでき、第２コア１２はメモリアドレス範囲Ｂに対してのみアクセスでき、第３コア１３はメモリアドレス範囲Ｃに対してのみアクセスできる。
【００２１】
図２に示すようなタスクプログラムの割り当ては、例えばタイミング最適化部２１が電子制御装置１０起動時の初期設定として提供してもよいし、固定的に定めてもよい。各コアがアクセス可能なアドレス範囲は、例えば当該コアが割り当てられたタスクプログラムを実行するために必要なデータを格納する記憶領域に対してアクセスできるように定めればよい。
【００２２】
図３は、各タスクプログラムの優先度と実行所要時間を示す図である。タスクプログラムＡ、タスクプログラムＢ、タスクプログラムＣは、それぞれの優先度が高、中、低であり、それぞれの実行所要時間がΔＴＡ、ΔＴＢ、ΔＴＣである。ΔＴＡはΔＴＢよりも長い。
【００２３】
図４は、異常検知部２０がコア異常を検出したとき設定部１４がタスクプログラムを再割当する手順を説明する図である。ここでは具体例として、第３コア１３において異常が発生したことを想定し、図３に示すタスクプログラムＡ〜Ｃを第１コア１１と第２コア１２に対して再割当する手順を説明する。
【００２４】
図４（１）において、設定部１４は各コアに対するタスクプログラムの割り当てをいったん初期化する。これによりいずれのコアに対してもタスクプログラムが割り当てられていない状態になる。
【００２５】
図４（２）において、設定部１４は優先度が高いタスクプログラムから順に、空いている（未だタスクプログラムが割り当てられていない）コアに対して割り当てる。ここではタスクプログラムＡが最も高い優先度を有しているので、まずタスクプログラムＡをいずれかのコアに対して割り当てる。ここではコアの並び順にしたがって第１コア１１に対して割り当てているが、例えばコア間の割り当て優先度がある場合はまず最も割り当て優先度が高いコアに対して割り当ててもよい。
【００２６】
図４（３）において、設定部１４は次に優先度が高いタスクプログラムＢを、空いているコアに対して割り当てる。第３コア１３は異常発生中なので、ここでは第２コア１２に対してタスクプログラムＢを割り当てる。
【００２７】
図４（４）において、設定部１４は次に優先度が高いタスクプログラムＣを、空いているコアに対して割り当てることを試みる。しかしこの時点においては空いているコアがないので、代わりに最悪応答時間を最小化できるようにタスクプログラムＣを割り当てる。図３の例によれば、第１コア１１に対してタスクプログラムＣを割り当てたと仮定した場合の最悪応答時間（ΔＴＡ＋ΔＴＣ）は、第２コア１２に対してタスクプログラムＣを割り当てたと仮定した場合の最悪応答時間（ΔＴＢ＋ΔＴＣ）よりも長い。したがって設定部１４は、第２コア１２に対してタスクプログラムＣを割り当てる。
【００２８】
設定部１４は、タスクプログラムの再割当を決定した後、各コアが割り当てられたタスクプログラムを実行するために用いるデータをメモリ１９に対して読み書きすることができるように、アクセス可能なアドレス範囲を再設定する。例えば第２コア１２はアドレス範囲Ｂとアドレス範囲Ｃに対してアクセスできるようにする。
【００２９】
設定部１４は、コアが４個以上ある場合やタスクプログラムが４以上ある場合であっても、図４と同様の手順により、優先度が高い順にタスクプログラムを再割当しつつ、実行スケジュールを最適化することができる。２以上のコアが故障した場合も同様の手順によって再割当することができる。
【００３０】
＜実施の形態１：まとめ＞
本実施形態１に係る電子制御装置１０は、コア異常が発生すると、優先度が高いタスクから順に空いているコアへ割り当てるとともに、空いているコアがない場合は最悪応答時間を最小化できるように割当先コアを決定する。これにより、優先度を考慮してタスクを割り当てつつ、実行スケジュールを改めて最適化することができる。
【００３１】
＜実施の形態２＞
実施形態１では、タスクの優先度を考慮しつつ最悪応答時間を最小化できるようにタスクを再割当する手順を説明した。再割当の基準はタイミング最適化部２１から提供することができる。タイミング最適化部２１は、コア異常が発生するごとにその基準を図４で説明した手順にしたがって作成することもできるが、あるコアに異常が発生したとき設定部１４が実施すべき再割当手順は異常発生機会毎に変化するわけではなく、毎回同様であると想定される。そこで本発明の実施形態２では、コア異常のパターンごとにあらかじめ再割当手順をあらかじめ作成してタイミング最適化部２１がこれを保持しておき、いずれかのコア異常が発生した際に設定部１４が対応する再割当手順をタイミング最適化部２１から取得して実施する例を説明する。
【００３２】
図５は、タイミング最適化部２１が保持している再割当手順とコアの異常パターンとの間の対応関係を示すデータテーブルの例である。タイミング最適化部２１は、（ａ）第１コア１１に異常が発生したとき設定部１４が実施すべき再割当手順として手順１を保持しており、（ｂ）第２コア１２に異常が発生したとき設定部１４が実施すべき再割当手順として手順２を保持しており、（ｃ）第３コア１３に異常が発生したとき設定部１４が実施すべき再割当手順として手順３を保持している。各手順は図４で説明した手順を、異常が発生したコア毎に定義したものであり、実質的な内容は図４と同等である。
【００３３】
一般にタスクプログラムの優先度は、そのタスクの内容に応じて固定されている。またタスクプログラムの実行所要時間は演算リソースの性能によって定まり、極端に変動するものではない。そうすると、あるコアが故障したとき、図４の手順にしたがって他のコアに対して割り当てられるタスクは、いずれのコアが故障したのかによって一意に定まる場合も多いと考えられる。そこでタイミング最適化部２１は、図５に示す手順１〜手順３として、各タスクプログラムの割当先コアを固定的に定義してもよい。
【００３４】
例えば、（ａ）手順１はタスクプログラムＢとタスクプログラムＣを第２コア１２に割り当てるとともにタスクプログラムＡを第３コア１３に割り当て、（ｂ）手順２はタスクプログラムＢとタスクプログラムＣを第３コア１３に割り当てるとともにタスクプログラムＡを第１コア１１に割り当て、（ｃ）手順３はタスクプログラムＢとタスクプログラムＣを第２コア１２に割り当てるとともにタスクプログラムＡを第１コア１１に割り当てる。これら手順は例えばデータテーブルとして定義することができる。
【００３５】
図６は、本実施形態２における設定部１４の動作を説明するフローチャートである。ここでは図５で説明したテーブルにしたがって再割当手順が定義されていることを前提とする。以下図６の各ステップについて説明する。
【００３６】
（図６：ステップＳ６０１）
設定部１４は、第１コア１１〜第３コア１３のいずれかにおいて異常が発生したか否かを異常検知部２０に対して問い合わせる。異常検知部２０は、異常が発生したコアがある場合はそのコアの番号などの識別子を設定部１４に対して回答する。異常が発生していない場合は本ステップを例えば所定周期で繰り返す。異常が発生している場合はステップＳ６０２へ進む。
【００３７】
（図６：ステップＳ６０２〜Ｓ６０５）
設定部１４は、異常が発生したコアに応じて、ステップＳ６０３〜Ｓ６０５のいずれかを実施する（Ｓ６０２）。具体的には、（ａ）第１コア１１に異常が発生した場合はタイミング最適化部２１より手順１を取得し（Ｓ６０３）、（ｂ）第２コア１２に異常が発生した場合はタイミング最適化部２１より手順２を取得し（Ｓ６０４）、（ｃ）第３コア１３に異常が発生した場合はタイミング最適化部２１より手順３を取得する（Ｓ６０５）。
【００３８】
（図６：ステップＳ６０６）
設定部１４は、ステップＳ６０３〜Ｓ６０５で取得した手順にしたがって、第１コアスケジューラ１５〜第３コアスケジューラ１７を更新することにより、各タスクプログラムを再割当する。例えば手順１は第１コア１１に異常が発生した場合に相当するので、第１コアスケジューラ１５については初期化し、第２コアスケジューラ１６と第３コアスケジューラ１７については再割当の結果を反映するように変更する。図５において説明したように各タスクプログラムの割当先コアが固定的に定められている場合は、これにしたがって各スケジューラを変更する。例えば第２コアスケジューラ１６についてはタスクプログラムＢとタスクプログラムＣを実行するように変更し、第３コアスケジューラ１７についてはタスクプログラムＡを実行するように変更する。
【００３９】
（図６：ステップＳ６０７）
設定部１４は、ステップＳ６０６における再割当結果にしたがって、各コアがメモリ１９に対してアクセスすることができるアドレス範囲を変更する。例えば第１コア１１において異常が発生した場合は、（ａ）第１コア１１がアクセスできるアドレス範囲をなしに設定し、（ｂ）第２コア１２がアクセスできるアドレス範囲をアドレス範囲Ｂとアドレス範囲Ｃに設定し、（ｃ）第３コア１３がアクセスできるアドレス範囲をアドレス範囲Ａに設定する。
【００４０】
＜実施の形態３＞
実施形態２において、タスクプログラムの実行所要時間が固定的である場合、各タスクプログラムの割当先コアも固定的に定義できることを説明した。これに対し、タスクプログラムの実行所要時間が実行環境に応じて変化する場合もあり得る。かかる場合は適当な機能部が各タスクプログラムの実行所要時間を計測してその平均値を求め、タイミング最適化部２１はその平均値にしたがって図４と同様の手順により最悪応答時間が最も短くなるように各タスクプログラムを割り当てる手順を、動的に作成することもできる。
【００４１】
＜本発明の変形例について＞
本発明は上記実施形態に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施形態は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施形態の構成の一部を他の実施形態の構成に置き換える事が可能であり、また、ある実施形態の構成に他の実施形態の構成を加えることも可能である。また、各実施形態の構成の一部について他の構成の追加・削除・置換をすることができる。
【００４２】
実施形態２において、１つのコアに異常が発生したパターンを例示したが、コアが４個以上ある場合において２以上のコアに異常が発生したパターンであっても、同様に再割当手順を定義することができる。
【００４３】
実施形態１〜３においては、最悪応答時間が最も短くなるように割当先コアを決定することを繰り返す手順を説明したが、必ずしもすべてのタスクプログラムについて同様の手順を実施する必要はない。例えば、優先度が高い（例えば優先度が所定値以上）タスクプログラムについてのみ最悪応答時間を最小にするようにしてもよい。あるいは最悪応答時間に代えてコアの演算負荷を表す指標を用いてもよい。
【００４４】
実施形態１〜３において、コア間でタスクプログラムを再割当する例を説明したが、同様の手法はプロセッサなどの演算部間でタスクを再割当する場合においても適用することができる。
【符号の説明】
【００４５】
１０：電子制御装置、１１：第１コア、１２：第２コア、１３：第３コア、１４：設定部、１５：第１コアスケジューラ、１６：第２コアスケジューラ、１７：第３コアスケジューラ、１８：メモリ制御部、１９：メモリ、２０：異常検知部、２１：タイミング最適化部、２２：Ｉ／Ｏ部。
【図１】
2017111662.tif 000003
【図２】
2017111662.tif 000004
【図３】
2017111662.tif 000005
【図４】
2017111662.tif 000006
【図５】
2017111662.tif 000007
【図６】
2017111662.tif 000008