(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-12-25
(45)【発行日】2024-01-09
(54)【発明の名称】自動車用コンピュータの制御方法、及び車両用電子制御装置
(51)【国際特許分類】
B60R 16/02 20060101AFI20231226BHJP
G06F 9/48 20060101ALI20231226BHJP
【FI】
B60R16/02 660X
G06F9/48 300B
(21)【出願番号】P 2023533039
(86)(22)【出願日】2021-12-09
(86)【国際出願番号】 JP2021045351
(87)【国際公開番号】W WO2023281766
(87)【国際公開日】2023-01-12
【審査請求日】2023-02-20
(31)【優先権主張番号】P 2021114366
(32)【優先日】2021-07-09
(33)【優先権主張国・地域又は機関】JP
(73)【特許権者】
【識別番号】000004260
【氏名又は名称】株式会社デンソー
(74)【代理人】
【識別番号】110000578
【氏名又は名称】名古屋国際弁理士法人
(72)【発明者】
【氏名】今井 宏治
【審査官】佐々木 智洋
(56)【参考文献】
【文献】特開2013-003724(JP,A)
【文献】特開2008-123439(JP,A)
【文献】特開2014-081847(JP,A)
【文献】特開2014-170477(JP,A)
【文献】特開2016-157247(JP,A)
【文献】特開2016-181868(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
B60R 16/02
G06F 9/48
(57)【特許請求の範囲】
【請求項1】
車両の安全に関する値であって前記車両の加減速、操舵に関する値を演算するスレッドを表す少なくとも1つの機能安全スレッド、及び前記機能安全スレッドを除くスレッドを表す少なくとも1つの非機能安全スレッド、を予めスケジューラで定義された優先順位に基づく並列処理で実行可能な車両用コンピュータ(11)にて実行される自動車用コンピュータの制御方法であって、
前記機能安全スレッドの異常を検知し、
前記機能安全スレッドの異常が検知された場合に、前記スケジューラを変更して前記優先順位を変更する
自動車用コンピュータの制御方法。
【請求項2】
請求項1に記載の自動車用コンピュータの制御方法であって
、
前記異常が検知されてから当該車両に危険事象が発生するまでの推定時間をFTTI(Fault Tolelant Time Interval)として、前記異常が検知された場合、前記FTTI内は、前記機能安全スレッドの実行優先順位を前記非機能安全スレッドの実行優先順位よりも相対的に高くするスケジュールの変更を行う
自動車用コンピュータの制御方法。
【請求項3】
請求項1又は請求項2に記載の自動車用コンピュータの制御方法であって、
前記異常が検知された場合、予め設定された異常処置が完了するまで、前記非機能安全スレッドの実行を中断する
自動車用コンピュータの制御方法。
【請求項4】
請求項2に記載の自動車用コンピュータの制御方法であって、
カーネルの割り込み制御を使用し、前記機能安全スレッドの異常の有無を検出して、前記異常が検知された場合に、前記スケジュールを変更する
自動車用コンピュータの制御方法。
【請求項5】
請求項4に記載の自動車用コンピュータの制御方法であって、
前記機能安全スレッドの異常が検出されているか否かを診断する機能安全機構をスレッドとして実装し、前記異常が検出されているか否かに応じて前記スケジューラの変更の要否を判定し、前記スケジューラの切り替えを行う
自動車用コンピュータの制御方法。
【請求項6】
請求項4又は請求項5に記載の自動車用コンピュータの制御方法であって、
少なくとも前記カーネルの割り込み制御にて実施される割込スレッドには、実行すべき指示を受けてから当該スレッドが実行されるまでの時間の上限を表す限界待ち時間が設定されており、
前記割込スレッドの限界待ち時間は、前記FTTI未満になるように設定される
自動車用コンピュータの制御方法。
【請求項7】
請求項6に記載の自動車用コンピュータの制御方法であって、
前記割込スレッド、前記機能安全スレッド、及び前記非機能安全スレッドには、前記限界待ち時間が設定されており、
前記割込スレッドが実行されるまでの時間が、前記割込スレッド以外の他のスレッドの限界待ち時間が超過した場合、当該他のスレッドに対応するシステムを縮退させる
自動車用コンピュータの制御方法。
【請求項8】
請求項6又は請求項7に記載の自動車用コンピュータの制御方法であって、
複数の機能安全スレッドにおいて異常を検知し、
前記異常を検知したスレッド毎に、前記割込スレッドを実行し、この際、限界待ち時間に対する残り時間が小さい順に、前記割込スレッドの実行優先順位を高する様にスケジューラの内容を変更する
自動車用コンピュータの制御方法。
【請求項9】
請求項6から請求項8の何れか1項に記載の自動車用コンピュータの制御方法であって、
前記割込スレッド毎に自動車安全水準レベルが対応付けられており、
複数の機能安全スレッドにおいて異常を検知し、
前記異常を検知したスレッド毎に、前記割込スレッドを実行し、この際、前記自動車安全水準レベルが高い順に、前記割込スレッドの実行優先順位を高する様にスケジューラの内容を変更する
自動車用コンピュータの制御方法。
【請求項10】
車両の安全に関する値であって前記車両の加減速、操舵に関する値を演算するスレッドを表す少なくとも1つの機能安全スレッド、及び前記機能安全スレッドを除くスレッドを表す少なくとも1つの非機能安全スレッド、を予めスケジューラで定義された優先順位に基づく並列処理で実行可能な車両用電子制御装置(10)であって、
前記機能安全スレッドの異常を検知するように構成された異常検知部(S130,S150,S170)と、
前記機能安全スレッドの異常が検知された場合に、前記スケジューラを変更して前記優先順位を変更する順序変更部(S10,S20,S30,S180)と、を備える
車両用電子制御装置。
【請求項11】
請求項10に記載の車両用電子制御装置(10)であって
、
前記順序変更部は、前記異常が検知されてから当該車両に危険事象が発生するまでの推定時間をFTTI(Fault Tolelant Time Interval)として、前記異常が検知された場合、前記FTTI内は、前記機能安全スレッドの実行優先順位を前記非機能安全スレッドの実行優先順位よりも相対的に高くするスケジュールの変更を行うように構成された
車両用電子制御装置。
【発明の詳細な説明】
【関連出願の相互参照】
【0001】
本国際出願は、2021年7月9日に日本国特許庁に出願された日本国特許出願第2021-114366号に基づく優先権を主張するものであり、日本国特許出願第2021-114366号の全内容を本国際出願に参照により援用する。
【技術分野】
【0002】
本開示は、自動車用コンピュータの制御方法、及び車両用電子制御装置に関する。
【背景技術】
【0003】
下記特許文献1には、実行中のプログラムに異常が生じたか否かを判定し、プログラムに異常が生じた場合に、プログラムの処理順序を、通常制御スケジューリングパターンから安全制御スケジューリングパターンに切り替える車両用電子制御装置が開示されている。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【0005】
特許文献1では、安全監視プログラムで通常制御プログラムを含むプログラムの異常が検出されるが、異常を検出した後は、スケジュールが安全制御スケジューリングパターンへ切替られる。しかし、切り替え後のプログラムの実行の元となるタイムパーテションされたプログラムには、通常制御プログラムの監視を実行するスレッドは含まれるが、本来機能を実行するスレッド(例えば非機能安全要件)は、含まれていないと推察される。この結果、安全制御スケジュールパターンへ切替後は、異常が発生していない本来機能も含めて、全て縮退制御していると推察される。
【0006】
発明者の詳細な検討の結果、この構成では、安全制御を優先して実行できるものの、安全制御スケジュールで非優先となるスレッドが長時間完了できないなど、非優先となるスレッド、特に非機能安全要件のスレッドへの悪影響が生じやすいという課題が見出された。
【0007】
より詳細には、上記特許文献1の技術は、安全監視プログラムで、異常が検出されたときに、非機能安全要件のスレッドと機能安全要件のスレッドをパーテショニングする。そして、機能安全対応設計を機能安全スレッドのみに注力することにより、システム設計のコストダウンを狙っている。反面、安全制御スケジューリングパターンに切り替えられた後の非機能安全スレッドのリアルタイム性については、言及されていない。また、上記特許文献1の請求項1には、安全制御スケジューリングパターンへ移行した後のタイムパーテションでは、通常制御プログラムを除くと記載されているので、極論すれば、非機能安全要件のスレッドはすべて縮退処理となるとも解釈できる。
【0008】
本開示の1つの局面は、全てのスレッドが規定時間内に実行されやすいスレッド自動車用コンピュータの制御方法、或いは車両用電子制御装置を提供できるようにすることにある。
【0009】
本開示の一態様は、機能安全スレッド、及び少なくとも1つの非機能安全スレッド、を予めスケジューラで定義された優先順位に基づく並列処理で実行可能な車両用コンピュータにて実行される自動車用コンピュータの制御方法である。機能安全スレッドは、車両の安全に関する値を演算するスレッドを表す。また、非機能安全スレッドは、機能安全スレッドを除くスレッドを表す。
【0010】
自動車用コンピュータの制御方法では、機能安全スレッドの異常を検知し、機能安全スレッドの異常が検知された場合に、スケジューラを変更して優先順位を変更する。
【0011】
このような制御方法によれば、機能安全スレッドに異常が生じた場合だけ、スレッドを実行する際の優先順位を変更できる。機能安全スレッドの安全機構が異常を検出して異常処置を実行するスレッドが他のスレッドが実行中のため実行待ちになっていても、両スレッドの相対的実行優先順位を変更して、機能安全の安全を担保する許容時間内に処理を完了しやすくすることができる。かつ、非機能安全スレッドについても本来機能を縮退させる機会を極力減らすことができる。
【0012】
つまり、スケジューラを変更して異常検出時のスケジュールに切り替える場合、機能安全要件のスレッドの規定の処理を実行後に非機能安全要件の規定の処理の実行を許容するので、非機能安全要件の不要な縮退を避けるスケジューリングが可能となる。よって、全てのスレッドが規定時間内に実行されやすい構成とすることができる。
【図面の簡単な説明】
【0013】
【
図1】車両制御システムの構成を示すブロック図である。
【
図3】スレッド実行制御処理のフローチャートである。
【
図4A】スレッド実行優先順位判定処理の前半部分のフローチャートである。
【
図4B】スレッド実行優先順位判定処理の後半部分のフローチャートである。
【
図6】第1作動例を示すタイミングチャートである。
【
図7】第2作動例を示すタイミングチャートである。
【
図8A】正常時スケジューラ実行処理の前半部分のフローチャートである。
【
図8B】正常時スケジューラ実行処理の後半部分のフローチャートである。
【
図9A】異常時スケジューラ実行処理の前半部分のフローチャートである。
【
図9B】異常時スケジューラ実行処理の後半部分のフローチャートである。
【
図10A】異常時スケジューラAN[1]実行処理の前半部分のフローチャートである。
【
図10B】異常時スケジューラAN[1]実行処理の後半部分のフローチャートである。
【
図11A】異常時スケジューラAN[2]実行処理の前半部分のフローチャートである。
【
図11B】異常時スケジューラAN[2]実行処理の後半部分のフローチャートである。
【発明を実施するための形態】
【0014】
[1.本開示の概要]
[1-1.背景]
CASE(Connected、Autonomous、Shared & Services、Electric)、Maas(Mobility as a Service)社会においては、機能安全、セキュリティ、SOTIF(Safety of the Intended Functionality)等の諸要件が三つ巴になったより複雑なシステムの中で、諸要件の相互作用や排他的制御を考慮する必要がある。その際、システムの機能安全を第1に、性能や利便やコストとのバランスを考え、商品性を向上するアーキテクチャを設計することが、システム・製品の差別化を考えるうえで有意義である。
【0015】
特に、OTA(Over The Air)や5G技術を活用した拡張性のある、つながるシステムが存在する。つながるシステムでは、車両に実装したソフトウェアがSOP(Start Of Production;量産の開始)時点と、SOP後のライフサイクルの間に、システムに搭載されるアプリケーションが逐次変化して行くことが予測される。その変化の都度、例えば当初実装されたソフトウェアに更新プログラムを充てる都度、プログラムの実行検証をベースからやり直すのは、非効率で経済的ではない。また、セキュリティインシデント対策を考慮したソフトウェアライフサイクルにおいては、この傾向がより顕著となることが予測される。
【0016】
さらに、車両においても、今後は、非論理的と言われるAIも多く実装される。一旦、システム異常が発生した時の論理性と論証を重視される機能安全の担保は、システム異常や構成部品故障、セキュリティインシデント又は性能限界、或いは、ミスユースにおいてもロバスト性の高いシステムアーキテクチャを要求される。
【0017】
[1-2.機能安全エレメント実装上の課題]
今後も、車両に実装されるいろいろなアプリケーションでは、ドメイン化(例えば、分散化)と統合化とが車両のセグメント毎に最適化されるようにトライされると思われる。この際、統合化されたアプリケーションをプロセスに分割し、最終的には、CPUコア(以下、単にコアともいう)やメモリ或いは入出力群を共有化するスレッドを疑似並列的にスケジュール制御するニーズは不可欠である。この様子は、PCソフトウェアに実装されるOSのタスクマネージャの制御に類似している。
【0018】
機能安全エレメントの実装の場合は、車両機能(以下、アイテム)に対して、その機能を実現するための構成要素(以下、エレメント)に異常が発生したとき、安全目標(SG:Safety Goal)を設定する。そして、安全機構(SM:Safety Mechanism)を付加し、許容された時間(FTTI:Fault Tolelant Time Interval)以内に安全目標を、機能安全以外のエレメントと無干渉になることを担保して実行させる。この手順は、セキュリティやSOTIFが要求されたシステムでも例外ではなく実施されうる。本開示では、機能安全のSMの実行を担保するため、CPUコアを共有する他のスレッドのコア処理が競合する場合においても、動的スケジューリングの設計手法を活用し、機能安全のSMの実行を担保する設計アーキテクチャを提供する。
【0019】
[1-3.本開示でのアーキテクチャ採用の効果]
一方、従来のソフトスケジューリングにおいては、タイムトリガ制御(例えば周期制御を含む)、或いは各スレッドをパーテションし、カーネル特権による割り込み制御が行われるのが一般的である。いずれの場合も機能安全の安全要求仕様(例えば、FTTI等)と直接的に関連付けられたスケジューリングをディスパッチするわけではない。
【0020】
一般的な自動車用のソフトウェアのプロセスでは、想定されたアプリケーションの内部の動作状態がスレッドレベルまで、カバレッジされて検証し、有害なバグのない状態で、SOP時に実装されてリリースする。また、一般的な機能安全エレメントの組込実装では、ソフトウェアの継続に深刻なランタイムエラーが発生した時のみ冗長な他のデバイスからのリセット制御を期待する(例えば、ウォッチドッグリセット)。そして、その他のアプリケーションプログラムの機能上の診断異常(例えば、センサ、負荷、内部機能構成パーツのダイアグ診断)では、各タスクのワースト実行時間や実行周期の組合せを考慮したタスクスケジュール設計をする。タスクスケジュール設計には、例えば、プライオリティ設定、デッドライン監視等が含まれる。
【0021】
この場合は、前述のように、SOP後に、当初想定していなかったシステムにつながるアプリケーションが当初設計したタイムスケジュールに影響があるかどうかを、仕様変化点の都度チェックする。このため、必要により、アーキテクチャ自体に設計変更をかける必要性が発生する。また、この可能性を極力回避するために、システムの異常時にはより安全側に振った仕様が採用され、この結果、車両として過度に縮退制御が多くなり商品性が低下する懸念もある。
【0022】
そこで、本開示では、SOP後に、想定されていなかった事象が、車両とつながる世界から入ってきた不測の場合においても、システムの異常時には、機能安全の安全機構(SM)の処理を優先するアーキテクチャを提供する。想定されていなかった事象には、当初想定されていなかったアプリケーション追加又は商品の売り手側も想定していないエンドユーザによるアプリケーション接続やインシデント発生が含まれる。また、想定外の外乱(例えば、ネットワーク異常、AIモジュールのデッドロック等)が含まれる。
【0023】
本開示のアーキテクチャによれば、OTAで変更されたソフトウェアプログラムの設計変更や検証を簡単にすることができる。また、システム異常時の機能安全担保のための安全要求仕様として車両の縮退制御を緩めることにより、商品性が向上する効果が期待できる。また、ベース開発で、経験度の高い設計者がアーキテクチャを確立しておけば、以降のソフトウェアの保守は比較的経験度の浅い設計者において容易に信頼度の高いブランチ開発が可能となるメリットがある。この結果、より再利用性が高くロバスト性の高いソフトウェアライフサイクルが省工数で構築できる。
【0024】
[2.実施形態の構成と本開示の構成との対応関係]
実施形態において、制御演算部11が実行する処理は、本開示での自動車用コンピュータの制御方法に相当する。また、実施形態において、制御演算部11が実行する処理のうち、S130,S150,S170の処理は、本開示での異常検知部による機能に相当し、S10,S20,S30,S180の処理は、本開示での順序変更部による機能に相当する。
【0025】
[3.実施形態]
以下、図面を参照しながら、本開示の実施形態を説明する。
【0026】
[3-1.構成]
図1に示す車両制御システム1は、例えば乗用車等の車両に搭載され、ECU10を備える。ECU10は、電子制御装置であり、特に、本実施形態では車両用の電子制御装置である。
【0027】
車両制御システム1は、センサ類21、各種アクチュエータ22を備えてもよい。また、車両制御システム1は、車両外のクラウドサーバ23と通信可能に構成されてもよい。ECU10、センサ類21、各種アクチュエータ22、クラウドサーバ23は、通信バス5或いは図示しない無線ネットワーク等を介して互いに通信可能に構成される。なおECU10には、後述する電源回路及びウォッチドッグタイマ36が含まれる。
【0028】
ECU10は、制御演算部11と、入出力部12と、メモリ13と、を備える。また、ECU10は、制御演算部11が実行する機能の一部として、車両アプリケーション機能16を備える。なお、車両アプリケーション機能16を実現するプログラムの中では、非機能安全機能要件と機能安全機能要件とに従い関連するスレッドがパーテションされる。
【0029】
制御演算部11は、例えば、CPUとして構成される。制御演算部11は、メモリ13に格納されたプログラムを実行することで、車両アプリケーション機能16等の各種機能を実現する。制御演算部11が実行する各種機能には、自動車用コンピュータの制御方法を利用する処理が含まれる。制御演算部11は、疑似並列処理で、複数のスレッドを時分割で実施する。以下、複数のスレッドをスレッド群と表記する。
【0030】
なお、制御演算部11は、異常検知、異常検知に対応して安全を担保するための異常処置、スレッド自体のランタイムエラー検知、ランタイムエラー検知に対応するための異常処置等、各機能を実現するための演算を実施する。
【0031】
入出力部12は、例えば、通信バス5等を用いた通信を行う通信モジュールとして構成され、ECU10に入出力されるデータについての入出力制御を行う。
【0032】
車両アプリケーション機能16は、
図2に示すように、コア間制御スレッド制御部32、コア内制御スレッド制御部(機能安全要件)33(以下、機能要件部33という)、コア内制御スレッド制御部(非機能安全要件)34(以下、非機能要件部34という)とを備える。
【0033】
コア間制御スレッド制御部32は、下記機能を備える。すなわち、
(A1)コア、メモリ13、入出力部12、ランタイムをディスパッチする機能、詳細には、動的スケジューラとしての機能(例えば、MMU/MPUと連携してスレッド制御を行う場合もある)、
(A2)各コアプログラム(例えばアプリケーション)により実行するスレッドを調停する機能、詳細には、コアプログラムの起動、縮退、無視、自己リセット、外部リセット等の処理を含む、
(A3)電源回路及びウォッチドッグタイマ36に対してウォッチドック信号を出力する機能、
(A4)機能要件部33及び非機能要件部34に対してリソース、スケジュールの配分指示を行う機能、
を備える。
【0034】
上記コア間制御スレッド制御部32の各機能は、ECU10がプログラムを実行することによって実現される。
【0035】
次に、機能要件部33は、機能安全要件に関するスレッド(以下、機能安全スレッド)を取り扱う。機能安全スレッドとは、車両の安全に関する値(例えば、車両の加減速、操舵に関する値等)を演算するスレッドを表す。
【0036】
機能要件部33は、下記機能を備える。すなわち、
(B1)メモリ13、入出力部12、ランタイムをディスパッチする機能、詳細には、動的スケジューラとしての機能(例えば、MMU/MPUと連携してスレッド制御を行う場合もある)、
(B2)異常が発生したスレッドの実行優先順位を相対的に上げるようにスケジューラを変更する機能、
(B3)コア間制御スレッド制御部32に対して、コア占有時間率、安全機構要件、 FTTI、自動車安全水準レベル(以下、ASIL:Automotive Safety Integrity Level)、デッドライン情報等の実行優先順位を制御する情報源を送信する機能、
を備える。
【0037】
上記機能要件部33の各機能は、ECU10がプログラムを実行することによって実現される。
【0038】
次に、非機能要件部34は、機能安全スレッド以外のスレッドである非機能安全スレッドを取り扱う。非機能要件部34は、下記機能を備える。すなわち、
(C1)メモリ13、入出力部12、ランタイムをディスパッチする機能、詳細には、動的スケジューラとしての機能(例えば、MMU/MPUと連携してスレッド制御を行う場合もある)、
(C2)実行中のスレッドの中断や実行待ちスレッドの実行優先順位を相対的に下げるようにスケジューラを変更する機能、
(C3)コア間制御スレッド制御部32に対して、コア占有時間率等の実行優先順位を制御する情報源を送信する機能、
を備える。
【0039】
上記非機能要件部34の各機能は、ECU10がプログラムを実行することによって実現される。
【0040】
なお、コア間制御スレッド制御部32、機能要件部33、非機能要件部34は、スレッドの実行継続が機能安全の安全目標(SG)の侵害につながるような異常が生じた際に実行継続不可通知を送信し、実行継続不可通知はそれぞれで共有される。
【0041】
[3-2.処理]
[3-2-1.スレッド実行制御処理]
次に、制御演算部11、特にコア間制御スレッド制御部32が実行するスレッド実行制御処理について、
図3のフローチャートを用いて説明する。スレッド実行制御処理は、機能要件部33及び非機能要件部34のそれぞれで設定されたスレッド実行優先順位テーブルを取得し、これらのテーブルに基づく順序で処理を実行させる処理である。スレッド実行制御処理は、例えば、予め設定された周期で実施される。
【0042】
スレッド実行制御処理では、まず、S10で、制御演算部11は、機能要件部33で判定及び書き替えられたスレッド実行優先順位テーブルの取り込みをする。スレッド実行優先順位テーブルは、
図5にて示す優先順位ルールで設定される。なお、優先順位ルールについては後述する。
【0043】
続いて、S20で、制御演算部11は、非機能要件部34で判定及び書き替えられたスレッド実行優先順位テーブルの取り込みをする。続いて、S30で、制御演算部11は、コア間制御スレッド制御部32の機能を用いて、実行するスレッドのコアと動的スケジューラのディスパッチ内容更新、及び各コアプログラム(例えばアプリケーション)で実行するスレッドの調停をする。
【0044】
ディスパッチ内容更新では、制御演算部11は、各コアのスレッド実行情報に基づき、各コアで選択された動的スケジューラに対して、使用するハードウェア資源(例えば、コア、メモリ13、入出力部12、ランタイム)の割り当ての見直しを行う。なお、コア間制御スレッド制御部32の機能は、一般的なパーソナルコンピュータでいうところのタスクマネージャのような役割を担う。
【0045】
また、スレッドの調停では、制御演算部11は、コア稼働率の低いコアの有効活用等を実施する。また、制御演算部11は、各コアの異なるプログラム間で共有するメモリ13や入出力部12が競合しないように、無干渉を担保する。詳細には、制御演算部11は、各コアの動的スケジューラと連携して、メモリ13、読み書き属性、ランタイム等を調停する。
【0046】
なお、制御演算部11は、コアプログラムの起動、縮退、無視、自己リセット、外部リセット等の処理を実施する。その後、
図3のスレッド実行制御処理を終了する。
【0047】
[3-2-2.スレッド実行制御処理]
次に、制御演算部11が実行するスレッド実行優先順位判定処理について、
図4A及び
図4Bのフローチャートを用いて説明する。スレッド実行優先順位判定処理は、機能要件部33及び非機能要件部34の機能を用いて、機能安全スレッドの異常の有無に応じて適切なスケジュールを選択し、コア間制御スレッド制御部32に、選択したスケジュールを利用するように要求する処理である。スレッド実行制御処理は、例えば予め設定された周期毎に実施される。なお、制御演算部11が備えるコアが複数の場合は、本処理はコアごとに実行される。また、本処理は、
図5にて示す常時周期割り込みとして記載された機能安全(以下、常時SM)にて実行される。
【0048】
スレッド実行制御処理では、まず、S110で、制御演算部11は、スケジューラタイマ割り込みで実行するスレッド群の実行待ちはあるか否かを判定する。スケジューラタイマ割り込みには、機能安全スレッドに異常が検知された場合に実施されることが含まれる。機能安全スレッドの異常とは、機能安全スレッドの機能の異常検出だけでなく、例えば、機能安全スレッドが規定時間(すなわち、デッドライン)以内に正常に終了しない事象、実行エラーを生じる事象等が該当する。
【0049】
制御演算部11は、S110で割り込みのスレッド群の実行待ちがないと判定した場合には、S120へ移行し、割り込みタイマ処理を実行した後、
図4A及び
図4Bのスレッド実行優先順位判定処理を終了する。
【0050】
一方、制御演算部11は、S110でスケジューラタイマ割り込みのスレッド群の実行待ちがあると判定した場合には、S130へ移行し、機能安全スレッドの異常が、スレッド群の実行を継続できない異常か否かを判定する。すなわち、機能安全の安全目標(以下、SG)を侵害するか否かを判定する。スレッド群の実行を継続できない異常か否かは、例えば、異常の種別が予めスレッド群の実行を継続できない異常に対応付けられているか否かによって判定される。
【0051】
制御演算部11は、S130でスレッド群の実行を継続できない異常であると判定した場合には、S140へ移行し、コア間制御スレッド制御部32へスレッド群の実行制御を要求し、システムの縮退制御を実施する。ここでは、例えば、カーネルの割り込み制御にて実施される機能安全スレッドであって、予め準備された割込スレッドを実施してもよい。このように機能安全を担保した後、
図4A及び
図4Bのスレッド実行優先順位判定処理を終了する。
【0052】
一方、制御演算部11は、S130でスレッド群の実行を継続できる異常あると判定した場合には、S150へ移行し、IOポート等へのイベント割り込みのスレッド群の実行待ちがあるか否かを判定する。ここでのイベント割り込みには、ハードウェアでの強制割り込みを除く。
【0053】
制御演算部11は、S150でイベント割り込みのスレッド群の実行待ちがあると判定した場合には、S160へ移行し、ソフトウェアマスカブルな強制割り込み処理した後、S170に移行する。
【0054】
一方、制御演算部11は、S150でイベント割り込みのスレッド群の実行待ちがないと判定した場合には、S160をスキップしてS170へ移行する。続いて、S170で、制御演算部11は、機能安全要件の異常を検知し、異常処置待ちであるか否かを判定する。異常処置待ちとは、異常の検知後に、異常に対する処置が完了されていない状態を表す。
【0055】
制御演算部11は、S170で機能安全要件の異常を検出し、異常処置待ちであると判定した場合には、S180へ移行する。S180では、機能安全の安全機構要件の設定が、FTTIに対する残り時間優先か、安全度レベル優先か、によって、実行待ちのスレッドの実行優先順位のスケジュールを変更する。つまり、後述する実行優先順位テーブルのうちの、異常時に対応するテーブルである、異常時AN、FTTI優先書き替えAN[1]、ASIL優先書き替えAN[2]の何れかが選択される。
【0056】
このスケジュールの変更では、非機能安全要件の一時中断と機能安全要件の異常処置について優先的に実行するよう要求される。この要求は、コア間制御スレッド制御部32へスレッド群の実行制御を要求することで実現される。この要求によって、カーネルの割り込み制御が実施され、早期に機能安全スレッド(すなわち本開示での割込スレッド)が実施される。S180の後、
図4A及び
図4Bのスレッド実行優先順位判定処理は終了する。
【0057】
一方、制御演算部11は、S170で機能安全要件の異常検出でない、或いは機能安全要件の異常処置待ちでないと判定した場合には、S190へ移行する。S190では、機能安全の安全機構について、全て正常判定時のスケジュールを選択し、コア間制御スレッド制御部32へスレッド群の実行制御を要求する。つまり、異常が発生していない場合、或いは、異常発生後の処置が終了した場合には、後述する実行優先順位テーブルのうちの、正常時に対応するテーブルである、正常時Nが選択される。
【0058】
続いて、S200で、制御演算部11は、非機能安全要件の異常を検出し、異常処置待ちであるか否かを判定する。制御演算部11は、S200で非機能安全要件の異常を検出していない、或いは非機能安全要件の異常処置待ちでないと判定した場合には、S210へ移行する。
【0059】
S210では、制御演算部11は、非機能安全要件の処理をコア間制御スレッド制御部32へスレッド群の実行制御を要求し、基本機能(例えば、前述した本来機能に相当)の処理継続を担保する。この際、処理順序は機能安全のスレッドの異常を検知していない場合と同様であるため、商品性の低下がない。S210の後、
図4A及び
図4Bのスレッド実行優先順位判定処理は終了する。
【0060】
一方、制御演算部11は、S200で非機能安全要件の異常を検出し、異常処置待ちであると判定した場合には、S220へ移行し、非機能安全要件の異常処置についてコア間制御スレッド制御部32へスレッド群の実行制御を要求する。その後、
図4A及び
図4Bのスレッド実行優先順位判定処理は終了する。
【0061】
[3-2-3.優先順位ルール]
ここで、優先順位ルールについて
図5を用いて説明する。優先順位ルールは、機能要件部33及び非機能要件部34が
図4A及び
図4Bのスレッド実行優先順位判定処理で選択可能な複数のスケジュールと、スケジュール毎に各スレッドの実行優先順位との対応関係を示す。スケジュールについては、以下、スレッド実行優先順位テーブル、或いは単にテーブルともいう。
【0062】
複数のテーブルとして、例えば、正常時N、異常時AN、FTTI優先書き替えAN[1]、ASIL優先書き替えAN[2]が準備されている。これらのテーブルでは、初期診断スレッド、ソフトウェアマスカブルなハードウェア割り込みスレッド、実行周期割り込みスレッドの順で実行されるように実行優先順位が記載されている点が共通する。しかし、実行周期割り込みスレッド内には複数のスレッドが対応付けられており、実行周期割り込みスレッド内の各スレッドの実行優先順位がテーブル毎に異なるように設定される。
【0063】
例えば、機能安全スレッドに異常がない正常時には、「正常時N」と表記されたテーブルが選択される。このテーブルでは、アプリケーションスレッド層の非機能安全要件が対応付けられた、非機能安全スレッド01,02の優先順位が、機能安全要件が対応付けられた、機能安全スレッドm1,n1,n2の優先順位よりも高く設定される。
【0064】
また、機能安全スレッドに異常がある場合には、例えば、「異常時AN」と表記されたテーブルが選択される。このテーブルでは、機能安全スレッドm1,n1,n2の優先順位が非機能安全スレッド01,02の優先順位よりも高く設定される。
【0065】
その他、機能安全スレッドに異常がある場合には、状況に応じて、FTTI優先書き替えAN[1]、ASIL優先書き替えAN[2]が選択されうる。
【0066】
なお、優先順位ルールは、任意に書き替え可能であってもよい。例えば、形式的な設計仕様書から自動プログラムを用いて、実行形式のコードをフラッシュメモリに実装することによって、機能仕様書に従いライフサイクルの中で設計変更する可能性のある部分を書き替える仕組みを構築することも可能である。特に、実行待ちスレッド毎のFTTIに応じて、動的に各テーブルを書き換えてもよい。
【0067】
[3-2-4.第1作動例]
図6を用いて本実施形態の構成での第1作動例を説明する。本作動例は、機能安全のSMよりも優先度の高いスレッド01の実行周期内で、SMの処理が全て完了しないスレッドm1とスレッドn1に対して同時に異常検知された場合のスレッド実行手順の一例を示す。第1作動例では、機能安全要件であるFTTIに対する実行残時間を比較し、機能安全上より早く処置すべきスレッドの優先度を上げて処理するスケジューリング例である。
【0068】
つまり、制御演算部11は、機能安全スレッドの異常が検知された場合、FTTI内は、機能安全スレッドの実行優先順位を非機能安全スレッドの実行優先順位よりも相対的に高くするようにスケジュールの変更を行う。この際、優先的に実行される機能安全スレッド(すなわち割込スレッド)は、限界待ち時間がFTTI未満になるようなテーブルが選択される。
【0069】
なお、
図6では、3つのスレッドのタイマ割り込みが同期したタイミングを矢印で図示している。このように、3つのスレッドが実行待ち状態である場合は、最も、優先度が高いスレッドから実行される。
【0070】
前述したテーブルとしては、FTTI優先書き替えAN[1]が選択されている。なお、各スレッドのランタイムがそれぞれ対応する待ち時間タイマ(すなわち本開示での限界待ち時間)を超過した場合は縮退処理を実行するように設定される。
【0071】
スレッド01の実行後、スレッドm1及びスレッドn1で異常が検知される。この際、実行優先順位に変更がない場合、
図6の点線にて示すように、スレッド01,m1,n1の順で実行される。何らかの原因で、先に実行するスレッド01が延長したことを想定すると、スレッドm1,n1にて異常処置(すなわち割込スレッド)を実施し、それぞれにFTTIが設定されている場合、このスレッドの順序では、スレッドn1がFTTIの要件を満たさない。
【0072】
そこで、スレッド01は、スレッドm1とスレッドn1が異常を検知した場合は、スレッドm1及びスレッドn1よりも実行優先順位がスケジューラにより下げられる。なお、スレッド01は、機能安全の異常検知機能(SM)の正常時において、スレッドm1及びスレッドn1よりも、実行優先順位が高く設定されている。
【0073】
この結果、
図6の実線にて示すように、スレッド01に対して、スレッドn1、スレッドm1の順に処理が可能となり、スレッド01の実行は、スレッドn1、スレッドm1の規定の異常処置が完了するまで遅延される。つまり、スレッド01の実行は、スケジュールで規定された異常処置のスレッドを完了するまで遅延され、所定のスケジュール内でのスレッドの異常処置が完了後、スレッド01の実行に移る。この際、必ずしも、全ての異常処置が完了するまでスレッド01の実行が遅延されるわけではない。なお、スレッド01は、通常のデッドライン監視タイマを超過しないようにスケジューリングされることが好ましい。
【0074】
[3-2-5.第2作動例]
第1作動例では、機能安全要件も非機能安全要件も同一のスケジューラの管理下で各関連スレッドが制御される前提で記載している。つまり、主としてコア間制御スレッド制御部32が備えるスケジューラの機能を用いて、スレッドの実行順序を管理している。しかし、
図7の第2作動例に示すように、非機能安全要件に関連したスレッドを制御するスケジューラと、機能安全要件に関連したスレッドを制御するスケジューラとを独立させてもよい。つまり、機能要件部33のスケジューラの機能及び非機能要件部34のスケジューラの機能をそれぞれ用いて、コア間制御スレッド制御部32がこれらを調停することで、スレッドの実行順序を管理している。
【0075】
この構成では、個々のスケジューラの管理下で、全ての機能安全要件に関連するスレッドを集約し、機能安全の安全機構の実行をいかなる排他的侵害要因からも保護し安全を担保するように構成することができる。この場合、スケジューラを含むコア間制御スレッド制御部32は、最高ASILの機能安全要件として構成することが望ましい。
【0076】
このような構成にした場合は、非機能安全要件と機能安全要件が無干渉になることが、設計構造的に担保される。このため、機能安全要件内の各スレッドのASILの違いや、FTTIのランタイム上の優先度のみにフォーカスして、マルチスレッドのリソーセスを適切にディスパッチすることがより容易に構造設計可能となる。
【0077】
換言すれば、機能安全要件と非機能安全要件が確実にパーテショニングされ、ソフトウェアの再利用性が高くなる。この結果、ソフトウェアライフサイクルにおける機能安全に適合するためのアーキテクチャ変更及び検証工数の節約と実装したソフトウェアのロバスト性の向上の両立を図ることができる。なお、マルチスレッドのリソーセスには、例えば、メモリ13、スケジュール、入出力部12が該当する。
【0078】
また、第2作動例の構成は、例えば下記のように設計される。
【0079】
各種機能安全要件のFTTIを担保するために、最大割り込み許容間隔(すなわち、最も遅れて処理してもFTTIは担保できる間隔)から、集約した機能安全関連スレッド群の最小割り込み周期をスケジューリングする。例えば、2,4,8,16msの周期的スレッドを集約した場合、2msを一般OSから独立したタイマ割り込みとして設計する。
【0080】
非機能安全要件関連のスレッド内での割り込み禁止時間は、余裕をとって2msより十分小さくし、2ms周期割り込みを担保する設計とする。
【0081】
[3-2-6.正常時スケジューラ実行処理]
制御演算部11が実行する正常時スケジューラ実行処理について、
図8A及び
図8Bのフローチャートを用いて説明する。正常時スケジューラ実行処理は、機能安全スレッドの異常が発生していない状況での正常時Nのテーブルに従って実行される処理である。正常時スケジューラ実行処理は、例えば、予め設定された周期毎に実施される。
【0082】
正常時スケジューラ実行処理では、まず、S310で、制御演算部11は、実行周期割り込み、ここでは、(最小時間間隔)X(2の0乗)の実行待ちであるか否かを判定する。制御演算部11は、S310で実行周期割り込みの実行待ちでないと判定した場合には、S410へ移行する。
【0083】
一方、制御演算部11は、S310で実行周期割り込み(最小時間間隔)X(2の0乗)の実行待ちであると判定した場合には、S320へ移行し、非機能安全スレッド01の実行待ちであるか否かを判定する。
【0084】
例えば、制御演算部11は、S320で非機能安全スレッド01の実行待ちであると判定した場合には、S330へ移行し、非機能安全スレッド01をディスパッチして当スレッドを実行するためのカーネルコールを実行する。この際、当スレッドより優先度の低いスレッドが実行中であっても、そのスレッドを一時中断(すなわちプリエンプション)して当スレッドの実行を優先する。その後、
図8A及び
図8Bの正常時スケジューラ実行処理を終了する。
【0085】
一方、制御演算部11は、S320で非機能安全スレッド01の実行待ちでないと判定した場合には、S340へ移行し、非機能安全スレッド02の実行待ちであるか否かを判定する。
【0086】
制御演算部11は、S340で非機能安全スレッド02の実行待ちであると判定した場合には、S350へ移行し、非機能安全スレッド02をディスパッチして当スレッドを実行するためのカーネルコールを実行する。一方、制御演算部11は、S340で非機能安全スレッド02の実行待ちでないと判定した場合には、S410に移行する。
【0087】
続いてS410で、制御演算部11は、実行周期割り込み(最小時間間隔)X(2のm乗)の実行待ちであるか否かを判定する。制御演算部11は、S410で実行周期割り込みの実行待ちでないと判定した場合には、S510へ移行する。
【0088】
一方、制御演算部11は、S410で実行周期割り込みの実行待ちであると判定した場合には、S420へ移行し、機能安全スレッドm1の実行待ちであるか否かを判定する。
【0089】
制御演算部11は、S420で機能安全スレッドm1の実行待ちであると判定した場合には、S430へ移行し、機能安全スレッドm1をディスパッチして当スレッドを実行するためのカーネルコールを実行する。その後、
図8A及び
図8Bの正常時スケジューラ実行処理を終了する。
【0090】
一方、制御演算部11は、S420で機能安全スレッドm1の実行待ちでないと判定した場合には、S510に移行する。
【0091】
制御演算部11は、S510で実行周期割り込み(最小時間間隔)X(2のn乗)の実行待ちであるか否かを判定する。制御演算部11は、S510で実行周期割り込みの実行待ちでないと判定した場合には、
図8A及び
図8Bの正常時スケジューラ実行処理を終了する。
【0092】
一方、制御演算部11は、S510で実行周期割り込みの実行待ちかであると判定した場合には、S520へ移行し、機能安全スレッドn1の実行待ちであるか否かを判定する。
【0093】
制御演算部11は、S520で機能安全スレッドn1の実行待ちであると判定した場合には、S530へ移行し、機能安全スレッドn1をディスパッチして当スレッドを実行するためのカーネルコールを実行する。この際、当スレッドより優先度の低いスレッドが実行中でも、一時中断して当スレッドの実行を優先する。その後、
図8A及び
図8Bの正常時スケジューラ実行処理を終了する。
【0094】
一方、制御演算部11は、S520で機能安全スレッドn1の実行待ちでないと判定した場合には、S540へ移行し、機能安全スレッドn2の実行待ちであるか否かを判定する。
【0095】
制御演算部11は、S540で機能安全スレッドn2の実行待ちであると判定した場合には、S550へ移行し、機能安全スレッドn2をディスパッチして当スレッドを実行するためのカーネルコールを実行する。その後、
図8A及び
図8Bの正常時スケジューラ実行処理を終了する。
【0096】
一方、制御演算部11は、S540で機能安全スレッドn2の実行待ちでないと判定した場合には、
図8A及び
図8Bの正常時スケジューラ実行処理を終了する。
【0097】
[3-2-7.異常時スケジューラ実行処理]
制御演算部11が実行する異常時スケジューラ実行処理について、
図9A、
図9B、
図10A、
図10B、
図11A、及び
図11B(以下、
図9A~
図11B)のフローチャートを用いて説明する。
図9A~
図11Bに示す異常時スケジューラ実行処理では、優先順位ルールに従って、正常時スケジューラ実行処理とはスレッドの実行順序が異なるように変更されている。なお、
図10A及び
図10Bに示す異常時スケジューラAN[1]の実行処理は、FTTI優先書き替えAN[1]が選択された場合の処理に該当する。また、
図11A及び
図11Bに示す異常時スケジューラAN[2]の実行処理は、ASIL優先書き替えAN[2]が選択された場合の処理に該当する。換言すれば、
図10A及び
図10Bに示す異常時スケジューラAN[1]及び
図11A及び
図11Bに示す異常時スケジューラAN[2]は、
図5で示した「スケジューラ選択テーブル」にそれぞれ該当する。
【0098】
図9A及び
図9Bに示す異常時スケジューラANの実行処理では、S410~S550の処理が、S310~S350の処理よりも前に実行される。
図10A及び
図10Bに示す異常時スケジューラAN[1]の実行処理では、まず、S510の処理が実施され、その後、S540~S550、S520~S530、S410~S430、S310~S350の順に処理が実施される。
【0099】
図11A及び
図11Bに示す異常時スケジューラAN[2]の実行処理では、S510~S550、S410~S430、S310~S350の順に処理が実施される。
【0100】
[3-3.効果]
以上詳述した第1実施形態によれば、以下の効果を奏する。
【0101】
(3a)本開示の一態様は、機能安全スレッド、及び少なくとも1つの非機能安全スレッド、を予めスケジューラで定義された優先順位に基づく並列処理で実行可能な車両用コンピュータ(例えば制御演算部11)にて実行される自動車用コンピュータの制御方法である。並列処理には、マルチコアによる並列処理を含むスケジューリング、あるコアによる時分割による疑似並列処理が含まれうる。機能安全スレッドは、車両の安全に関する値を演算するスレッドを表す。また、非機能安全スレッドは、機能安全スレッドを除くスレッドを表す。
【0102】
自動車用コンピュータの制御方法では、機能安全スレッドの異常を検知し、機能安全スレッドの異常が検知された場合に、スケジューラを変更してスレッドの実行優先順位を変更する。
【0103】
このような制御方法によれば、機能安全スレッドに異常が生じた場合だけ、スレッドを実行する際の優先順位を変更できる。よって、機能安全スレッドが正常判定している間は、車両の本来機能を優先したスケジューリングが可能となる。
【0104】
つまり、優先順位が変更される状況を、機能安全スレッドに異常が生じた場合に限定するので、全てのスレッドが限界待ち時間内に実行されやすくする様なスケジュール設計が容易となる。
【0105】
より詳細には、スレッドの実行優先順位を制御する構成によれば、相対的にスケジューラの優先順位テーブルの書替えを実施する。このため、前述した安全機構が異常を検出して異常処置を実行するスレッドが他のスレッドが実行中のため実行待ちになっていても、両スレッドの相対的実行優先順位を変更して、機能安全の安全を担保する許容時間内に確実に処理を完了できる。かつ、非機能安全スレッドについても本来機能を縮退させる機会を極力減らすことができる。
【0106】
すなわち、本願構成では、機能安全スレッドが異常を検出した場合に、規定の機能安全要件を最優先に処理したうえで、異常原因と直接関係しない本来機能(非機能安全要件)は、極力縮退を回避することができる。また、リアルタイム性を確保したスケジュール設計を実現できる。
【0107】
なお、機能安全スレッドでは、例えば、機能安全要求仕様を実現してもよい。この場合の本来機能と安全機構をソフトウェアモジュールにして半導体メモリ内に実装した際の実行優先順位を定義する最小実行単位であり、スケジューラにより、一般的には、使用するコアやメモリ及び入出力等ハードウェア資源が時分割で紐付けられる。なお、機能安全要求仕様とは、安全目標や安全機構(例えば、フェールセーフ機構やFTTI)が技術安全要求(TSR:Technical Safety Requirement)や技術安全コンセプト(TSC:Technical Safety Concept)により一般的には定義されてもよい。なお、TSRは、システムの異常が発生した時に安全担保のため、どのような安全保護機能が必要かを要求するための技術仕様書である。また、TSCは、その安全保護機能をいかに実現するかを技術仕様書としてまとめたものである。
【0108】
(3b)本開示の一態様では、異常が検知された場合、予め設定された異常処置が完了するまで、非機能安全スレッドの実行を中断するように構成される。非機能安全スレッドの実行は、動的スケジューラで更新された期間のみ実行する関連スレッドの優先順位がカーネルにより制御される、実行すべき機能安全スレッド、或いは異常時に実施される割込スレッドの実行が完了するまで中断される。なお、非機能安全スレッドの実行は、全ての異常処置が完了するまで非機能安全スレッドを中断するのではない。
【0109】
このような方法によれば、異常処置が完了するまで非機能安全スレッドの実行を中断するので、規定の異常処置を最優先で実行し、規定の異常処置が完了後は、中断した非機能安全スレッドの実行に戻ることが可能である。
【0110】
(3c)本開示の一態様では、異常が検知されてから車両に危険事象が発生するまでの推定時間をFTTI(Fault Tolelant Time Interval)とする。異常が検知された場合、FTTI内は、機能安全スレッドの実行優先順位を非機能安全スレッドの実行優先順位よりも相対的に高くするようにスケジュールの変更を実施する。
【0111】
このような方法によれば、FTTIを考慮して非機能安全スレッドを一時的に中断することができる。
【0112】
(3d)本開示の一態様では、カーネルの割り込み制御を使用し、機能安全スレッドの異常の有無を検出して、異常が検知された場合に、スケジュールを変更する。
【0113】
このような方法によれば、カーネル割り込み制御を実施するので、早急に異常に対処することができる。
【0114】
(3e)本開示の一態様では、機能安全スレッドの異常が検出されているか否かを診断する機能安全機構(SM)をスレッドとして実装し、異常が検出されているか否かに応じてスケジューラの変更の要否を判定し、スケジューラの切り替えを行う。
【0115】
このような方法によれば、スケジューラの変更の要否を判定して、スケジューラの変更が必要な場合にスケジューラの切り替えを行うことができる。なお、スケジューラの切り替えの要否判定は、スケジューラの切り替えが間に合う適切なタイミングで実施されるとよい。
【0116】
また、スケジューラ切替の主な制御方法として
図5で示すように、機能安全常時SMを全ての周期的割り込みに配置する方法(例えば、最短周期割り込みに配置)を採用できる。或いは、HW割り込みハンドラで機能安全SMを起床させる構造とする方法を採用できる。
【0117】
(3f)本開示の一態様では、少なくともカーネルの割り込み制御にて実施される割込スレッドには、実行すべき指示を受けてから当該スレッドが実行されるまでの時間の上限を表す限界待ち時間が設定される。割込スレッドの限界待ち時間は、FTTI未満になるように設定される。
【0118】
このような方法によれば、FTTIまでに割込スレッドが実行することができるので、より安全に割込スレッドを実行することができる。
【0119】
(3g)本開示の一態様では、割込スレッド、機能安全スレッド、及び非機能安全スレッドには、実行すべき指示を受けてから当該スレッドが実行されるまでの時間の上限を表す限界待ち時間が設定されている。割込スレッドが実行されるまで(Twait_SRを超過する前)に、割込スレッド以外の他のスレッドの限界待ち時間(Twait_NSR)が超過した場合、当該他のスレッドに対応するシステムを縮退させる。システムの縮退では、例えば、本来機能の一部を制限する制限モード、自動運転のシステム異常時であれば、運転者による手動運転を要求する交替制御モード等が実施されうる。
【0120】
このような方法によれば、非機能安全スレッド等の他のスレッドが限界待ち時間以内に実行できない場合に、他のスレッドに対応するシステムを縮退させるので、より安全と利便を両立して車両を制御することができる。
【0121】
(3h)本開示の一態様では、複数の機能安全スレッドにおいて異常を検知してもよい。異常を検知したスレッド毎に、割込スレッドを実行し、この際、限界待ち時間に対する残り時間が小さい順に、割込スレッドの実行優先順位を高するように(すなわち、割込スレッドの実行優先順位がより高くなるように)スケジューラの内容を変更する。
【0122】
このような方法によれば、複数の機能安全スレッドにおいて異常が検知されたことに伴い、複数の割込スレッドを実行する場合に、限界待ち時間に対する残り時間が小さい順に割込スレッドを実行できる。よって、割込スレッドの何れかが限界待ち時間以内に実行されない事態になることを抑制することができる。
【0123】
(3i)本開示の一態様は、少なくとも1つの機能安全スレッド、及び少なくとも1つの非機能安全スレッド、を予めスケジューラで定義された優先順位に基づく並列処理で実行可能な車両用電子制御装置(本開示での制御演算部11)である。
【0124】
異常検知部は、機能安全スレッドの異常を検知するように構成される。順序変更部は、機能安全スレッドで異常が検知され、異常処置が必要になった場合に、スケジューラを変更して優先順位を変更する。
【0125】
このような構成によれば、機能安全スレッドに異常が生じた場合だけ、スレッドを実行する際の優先順位を変更できる。
【0126】
(3j)特に、車両用電子制御装置は、コアを複数個実装して、スレッドがコアやメモリ等ハードウェア資源をスケジューラにより時分割で共有するシステムを構成できる。このようなシステムにおいては、機能安全スレッドの安全機構が異常を検出した際、他のスレッドの実行を一時中断して、システム許容時間内に異常処置を完了したり、時間的に余裕のあるコアやメモリの資源を優先的に使用したりすることが可能となる。
【0127】
このような構成によれば、システム全体として実行時間がクリティカルになる、つまり、スレッドが許容時間内に終了しない状況が頻発する、という潜在的なケースをより減らすことがき、ロバスト性の高いシステムが構築可能となる。また、システム全体の安全担保に関して、実行時間の余裕のあるシステム設計により、システム機能の縮退設計の必要性を削減し、システム本来の機能を確保することにより、商品性を向上することが容易となる。
【0128】
[4.他の実施形態]
以上、本開示の実施形態について説明したが、本開示は前述の実施形態に限定されることなく、種々変形して実施することができる。
【0129】
(4a)上記実施形態では、機能安全スレッド毎にFTTIが対応付けられたが、これに限定されるものではない。例えば、FTTIに換えて、或いはFTTIに加えて、機能安全スレッド毎に自動車安全水準レベル(ASIL:Automotive Safety Integrity Level)が対応付けられていてもよい。この場合、複数の機能安全スレッドにおいて異常を検知し、異常を検知したスレッド毎に、割込スレッドを実行し、この際、自動車安全水準レベルが高い順に、割込スレッドの実行優先順位を高する様にスケジューラの内容を変更してもよい。例えば、制御演算部11は、自動車安全水準レベルが高い順に各スレッドが実行されるように
図5に示す異常時スケジューラAN[2]を動的に書き換えるとよい。
【0130】
このような方法によれば、自動車安全水準レベルが高い順に、スレッドを実行するので、より優先して実行すべきスレッドを優先して実行することができる。
【0131】
(4b)上記実施形態では、ECU10を構成する各構成要素11,12,13,16の配置について言及していないが、例えば、各構成要素11,12,13,16の実際のデバイスは、1つ又は複数のSOC(System On Chip)で構成することができる。
【0132】
また、例えば、
図2に示す車両アプリケーション機能16の各機能は、破線部31内の機能がOSを実装する1つのSOCによって実現され、破線部31外の機能が前記SOCとは別のSOCによって実現されてもよい。すなわち、コア間制御スレッド制御部32、及び機能要件部33の機能がOSを実装する1つのSOCで実現され、非機能要件部34の機能が前記SOCとは別のSOCで実現されてもよい。
【0133】
このような構成によれば、オーバーヘッドを減少させ、リアルタイム性を向上させることができる。
【0134】
(4c)本開示に記載の制御演算部11及びその手法は、コンピュータプログラムにより具体化された1つ乃至は複数の機能を実行するようにプログラムされたプロセッサ及びメモリを構成することによって提供された専用コンピュータにより、実現されてもよい。あるいは、本開示に記載の制御演算部11及びその手法は、1つ以上の専用ハードウェア論理回路によってプロセッサを構成することによって提供された専用コンピュータにより、実現されてもよい。もしくは、本開示に記載の制御演算部11及びその手法は、1つ乃至は複数の機能を実行するようにプログラムされたプロセッサ及びメモリと1つ以上のハードウェア論理回路によって構成されたプロセッサとの組み合わせにより構成された1つ以上の専用コンピュータにより、実現されてもよい。また、コンピュータプログラムは、コンピュータにより実行されるインストラクションとして、コンピュータ読み取り可能な非遷移有形記録媒体に記憶されてもよい。制御演算部11に含まれる各部の機能を実現する手法には、必ずしもソフトウェアが含まれている必要はなく、その全部の機能が、1つあるいは複数のハードウェアを用いて実現されてもよい。
【0135】
(4d)上記実施形態における1つの構成要素が有する複数の機能を、複数の構成要素によって実現したり、1つの構成要素が有する1つの機能を、複数の構成要素によって実現したりしてもよい。また、複数の構成要素が有する複数の機能を、1つの構成要素によって実現したり、複数の構成要素によって実現される1つの機能を、1つの構成要素によって実現したりしてもよい。また、上記実施形態の構成の一部を省略してもよい。また、上記実施形態の構成の少なくとも一部を、他の上記実施形態の構成に対して付加又は置換してもよい。
【0136】
(4e)前述した車両制御システム1の他、当該車両制御システム1の構成要素となる車両制御装置等の装置、当該装置としてコンピュータを機能させるためのプログラム、このプログラムを記録した半導体メモリ等の非遷移的実体的記録媒体、自動車用コンピュータの制御方法を含む各種方法など、種々の形態で本開示を実現することもできる。