(57)【要約】      （修正有）【課題】複数の演算装置を採用した車両制御装置において、共有記憶領域を診断する際における演算効率の低下を抑制する。【解決手段】車両制御装置１は、共有領域５１に対してメモリ診断を実施している間は診断対象領域内のデータを補助記憶領域５２へ退避し、演算装置は退避されたデータを用いて制御演算を実施する。また、補助記憶領域に対してデータが退避されている間は補助記憶領域に対して制御演算の結果を書き込み、メモリ診断が終わるとその書き込まれた演算結果を共有領域へ書き戻す。【選択図】図１
2019036322.tif 000002
【特許請求の範囲】
【請求項１】
車両の動作を制御する車両制御装置であって、
前記車両の動作を制御する制御演算を実行する第１および第２演算装置、
前記第１および第２演算装置が共有する共有記憶領域を診断するメモリ診断部、
前記メモリ診断部が診断する診断対象領域が格納しているデータの複製を記憶する補助記憶部、
前記メモリ診断部が前記診断対象領域を診断する間は前記第１および第２演算装置が前記診断対象領域内に格納されているデータに代えて前記補助記憶部内に格納されている前記複製を用いて前記制御演算を実行するようにアクセス先アドレスを設定するアクセス先設定部、
を備え、
前記車両制御装置はさらに、前記共有記憶領域を有する共有記憶装置を備え、
前記補助記憶部は、前記複製を記憶する補助記憶領域として構成されており、
前記車両制御装置はさらに、前記共有記憶装置とは異なる記憶装置であって前記補助記憶領域を有する補助記憶装置を備え、
前記補助記憶装置は、いずれかの演算装置がデータを書き込む間は他の演算装置からのアクセスを排除する排他的記憶装置として構成されることにより、前記共有記憶装置よりも高い信頼性を有する記憶装置として構成されている
ことを特徴とする車両制御装置。
【請求項２】
前記メモリ診断部は、前記共有記憶領域を診断する処理を実装したメモリ診断プログラムとして構成されており、
前記第１演算装置は、前記メモリ診断部を実行することにより前記共有記憶領域を診断し、
前記車両制御装置はさらに、前記第１演算装置が前記メモリ診断部を実行開始すると前記共有記憶領域が診断中である旨を前記アクセス先設定部に対して通知する通知部を備えており、
前記アクセス先設定部は、前記通知部から前記共有記憶領域が診断中である旨の通知を受け取ると、前記第２演算装置が前記診断対象領域に代えて前記補助記憶部に対してアクセスするようにアクセス先アドレスを設定する
ことを特徴とする請求項１記載の車両制御装置。
【請求項３】
前記車両制御装置は、前記第１および第２演算装置がアクセスするメモリ装置を備え、  前記共有記憶領域と前記補助記憶部はともに、前記メモリ装置が有する記憶領域として構成されている
ことを特徴とする請求項１記載の車両制御装置。
【請求項４】
前記通知部は、前記第１演算装置が前記メモリ診断部を実行完了すると前記共有記憶領域の診断が完了した旨を前記アクセス先設定部に対して通知し、
前記アクセス先設定部は、前記通知部から前記共有記憶領域の診断が完了した旨の通知を受け取ると、前記第２演算装置が前記補助記憶部に代えて前記診断対象領域に対してアクセスするようにアクセス先アドレスを設定する
ことを特徴とする請求項２記載の車両制御装置。
【請求項５】
前記共有記憶領域は、前記メモリ診断部が一括して診断する前記診断対象領域の個数を指定する診断個数データを格納しており、
前記補助記憶部は、前記診断個数データが指定する前記個数以上の前記診断対象領域の複製を記憶することができる記憶容量を備え、
前記メモリ診断部は、前記診断個数データが指定する前記個数の前記診断対象領域を一括して診断し、
前記アクセス先設定部は、前記メモリ診断部が前記共有記憶領域の診断を開始してから前記診断個数データが指定する前記個数の前記診断対象領域を診断し終えるまでの間は、前記第１および第２演算装置が前記診断対象領域内に格納されているデータに代えて前記補助記憶部内に格納されている前記複製を用いて前記制御演算を実行するようにアクセス先アドレスを設定する
ことを特徴とする請求項１記載の車両制御装置。
【請求項６】
前記共有記憶領域は、前記複製を記憶している前記補助記憶部上のアドレスを記述する退避先アドレスデータを格納し、
前記第１および第２演算装置は、前記退避先アドレスデータが記述している前記補助記憶部上のアドレスから前記複製を取得する
ことを特徴とする請求項１記載の車両制御装置。
【請求項７】
前記補助記憶部は、前記診断対象領域を格納している前記共有記憶領域上のアドレスを記述する退避元アドレスデータを格納し、
前記第１演算装置は、前記共有記憶領域の診断が完了した後、前記退避先アドレスデータが記述している前記補助記憶部上のアドレスが格納しているデータを取得し、前記退避元アドレスデータが記述しているアドレスに対してその取得したデータを書き戻す
ことを特徴とする請求項６記載の車両制御装置。
【請求項８】
前記メモリ診断部は、前記共有記憶領域を診断する処理を実装したメモリ診断プログラムとして構成されており、
前記第１および第２演算装置は、前記共有記憶領域のうち自身がデータを書き込む領域に対して、前記メモリ診断部を実行することにより前記診断を実施する
ことを特徴とする請求項１記載の車両制御装置。
【請求項９】
前記メモリ診断部は、前記共有記憶領域を診断する処理を実装したメモリ診断プログラムとして構成されており、
前記第１および第２演算装置は、前記共有記憶領域のうち自身がデータを書き込む割合が他の演算装置よりも高い領域に対して、前記メモリ診断部を実行することにより前記診断を実施する
ことを特徴とする請求項１記載の車両制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、車両制御装置に関するものである。
【背景技術】
【０００２】
近年、自動車制御システムなどのような組み込みシステムは、多機能化により演算量が年々増加し、求められるＣＰＵ（Ｃｅｎｔｒａｌ Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）の演算性能は増加する一方である。パーソナルコンピュータにおいては、このような処理量の増加に対して、ＣＰＵのコア数を増やすこと（マルチコア化）によって対応してきた。組み込みシステムも例外ではなく、例えばカーナビや携帯電話などのように演算量が多くリアルタイム性の制約が比較的緩いコンシューマ系システムにおいては、マルチコア化が進んでいる。組み込みシステムが高度化・複雑化するのにともない、これらの演算量がシングルコアの限界を超えることが予想されるため、マルチコアの採用が検討されている。
【０００３】
一方で、自動車業界におけるソフトウェア品質レベルの統一化と安全性証明の容易化を目的として、機能安全規格ＩＳＯ２６２６２（以下、機能安全規格）が２０１１年に策定された。本規格は、ハード・ソフトを含めたシステム全体に亘り、故障率算出方法やソフト設計手法などを規定している。本規格に準拠するためには、安全が確保されていることの根拠を示す必要がある。一般的には、従来設計における知見や実績をエビデンスとしてまとめることにより、同規格に準拠する。
【０００４】
ＩＳＯ２６２６２においては、安全要求が異なるソフトウェア間の干渉を防止することが求められている。一般的な車両制御システムはさまざまな制御アプリケーションによって構成されているので、時間保護機能やメモリ保護機能といったシステムを構成するソフトウェア間の相互作用を防止するための仕組みが近年着目されてきている。具体的には、あるソフトウェアが暴走した場合、他のソフトウェアが使用するデータが格納されているメモリ領域へその暴走したソフトウェアがアクセスしてそのデータを破壊しようすることを防ぐ機能である。一般的な車両制御装置においてＡＵＴＯＳＡＲアーキテクチャを適用すると、車両制御システムはさまざまなＡＳＩＬのソフトウェアが混在することがわかっている。したがって、既存のソフトウェアがＩＳＯ２６２６６に準拠するためには、ソフトウェア間の干渉を防止する仕組みや、それに関連する処理の高速化、軽量化、信頼性向上などが必要となる。
【０００５】
下記特許文献１は、マルチコアプロセッサ（ＭＰＵ）を有する自動車用電子制御装置において、診断処理などの重要演算処理の信頼性を向上させ、自動車制御の安全性を向上させるための技術を開示している。同文献においては、メモリ領域を制御プログラム用の通常制御領域（通常演算領域）と診断プログラム用のハイセーフティー領域（重要演算領域）とに切り分ける。ハイセーフティー領域には、ハイセーフティー領域のメモリ診断を行うハイセーフティー領域用診断プログラムおよび全領域のメモリ診断を行う通常診断用プログラムを実装する。ハイセーフティー領域については２重にメモリ診断を実施する。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１５−０２２６２２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
マルチコアシステムにおいては、各コアが独立に動作することにより並列に演算処理を実施して演算効率を高めることができる。しかし各コアが記憶装置（例えばメモリ）を共有している場合、これらコア間において当該共有記憶装置に対するアクセス競合が発生する。マルチコアシステムは一般に、アクセス競合が発生すると一方のコアが他方のコアの処理完了を待機するように設計される。したがって、スループットに影響が及ぶ可能性がある。
【０００８】
本発明は、上記のような課題に鑑みてなされたものであり、複数の演算装置を採用した車両制御装置において、共有記憶領域を診断する際における演算効率の低下を抑制することを目的とする。
【課題を解決するための手段】
【０００９】
本発明に係る車両制御装置は、記憶装置が有する共有記憶領域を診断する間は当該記憶装置に対するアクセス先を変更することにより、演算効率の低下を抑制する。
【発明の効果】
【００１０】
本発明に係る車両制御装置によれば、共有記憶領域を診断する際における演算装置間のアクセス競合に起因する演算効率の低下を抑制しつつ、効率的にメモリ領域を診断することができる。
【図面の簡単な説明】
【００１１】
【図１】実施形態１に係る車両制御装置（ＥＣＵ）１の構成図である。
【図２】記憶装置５のアドレス空間５００００を示す図である。
【図３】共有領域５１が格納するフラグ管理テーブル５１１００の構成とデータ例を示す図である。
【図４】共有領域５１が格納する診断パラメータテーブル５１２００の構成とデータ例を示す図である。
【図５】共有領域５１が格納する診断進捗管理テーブル５１３００の構成とデータ例を示す図である。
【図６】共有領域５１が格納する共有領域管理テーブル５１４００の構成とデータ例を示す図である。
【図７】補助記憶領域５２が格納する補助記憶領域管理テーブル５２１００の構成とデータ例を示す図である。
【図８】第１演算装置制御部４０１の動作を説明するフローチャートである。
【図９】診断判定部４０２の動作を説明するフローチャートである。
【図１０】診断管理部４０３の動作を説明するフローチャートである。
【図１１】コンテキスト管理部４０４の動作を説明するフローチャートである。
【図１２】通知部４０５の動作を説明するフローチャートである。
【図１３】診断実行部４０６の動作を説明するフローチャートである。
【図１４】第２演算装置制御部４０７の動作を説明するフローチャートである。
【図１５】割り込み実行部４０８の動作を説明するフローチャートである。
【図１６】アクセス先設定部４０９の動作を説明するフローチャートである。
【図１７】制御実行部４１０の動作を説明するフローチャートである。
【発明を実施するための形態】
【００１２】
＜実施の形態１＞
図１は、本発明の実施形態１に係る車両制御装置（ＥＣＵ）１の構成図である。ＥＣＵ１は、例えばエンジン制御装置などのような車両の動作を制御する装置であり、第１演算装置２、第２演算装置３、プログラム領域４、記憶装置５、入出力回路６を備える。ここではＥＣＵ１が接続されている機器としてスロットルセンサ７とアクチュエータ８を例示するがこれに限られるものではない。
【００１３】
第１演算装置２と第２演算装置３は、プログラム領域４が格納しているプログラムを実行する演算装置である。第１演算装置２と第２演算装置３は、プログラム領域４が格納しているプログラムを並列実行することができ、さらにプログラム領域４と記憶装置５に対して並列にアクセスすることができる。
【００１４】
プログラム領域４は、例えばＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）などの不揮発性記憶装置上に構成された記憶領域である。プログラム領域４は、第１演算装置制御部４０１、診断判定部４０２、診断管理部４０３、コンテキスト管理部４０４、通知部４０５、診断実行部４０６、第２演算装置制御部４０７、割り込み実行部４０８、アクセス先設定部４０９、制御実行部４１０を格納する。
【００１５】
記憶装置５は、例えばＲＡＭ（Ｒａｍｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）などの記憶装置である。記憶装置５は、同じアドレス空間内に配置された記憶領域として、共有領域５１と補助記憶領域５２を有する。共有領域５１は、制御実行部４１０が制御演算を実行するために用いるデータを格納するとともに、後述の図３〜図６で説明するデータテーブルを格納する。補助記憶領域５２は、後述の図７で説明するデータテーブルを格納する。これら記憶領域が格納するデータの具体例については後述する。
【００１６】
図２は、記憶装置５のアドレス空間５００００を示す図である。アドレス空間５００００は、補助記憶領域アドレス５０２００と共有領域アドレス５０１００を有する。共有領域アドレス５０１００は、共有領域５１が記録するデータが格納される領域である。補助記憶領域アドレス５０２００は、補助記憶領域５２が記録するデータが格納される領域である。
【００１７】
図３は、共有領域５１が格納するフラグ管理テーブル５１１００の構成とデータ例を示す図である。フラグ管理テーブル５１１００は、後述する各プログラムの動作状態を表すフラグを格納するデータテーブルである。フラグ管理テーブル５１１００は、名称フィールド５１１０１、現在値フィールド５１１０２を有する。
【００１８】
名称フィールド５１１０１は、フラグ管理テーブル５１１００が管理するフラグの名称を保持する。現在値フィールド５１１０２は、フラグの現在値を保持する。図３に示す各フラグおよびその値については、後述する各プログラムの動作と併せて説明する。
【００１９】
図４は、共有領域５１が格納する診断パラメータテーブル５１２００の構成とデータ例を示す図である。診断パラメータテーブル５１２００は、共有領域５１に対するメモリ診断に関するパラメータを格納するデータテーブルである。診断パラメータテーブル５１２００は、名称フィールド５１２０１と値フィールド５１２０２を有する。
【００２０】
名称フィールド５１２０１は、診断パラメータテーブル５１２００が管理するパラメータの名称を保持する。値フィールド５１２０２は、パラメータの値を保持する。図４に示すパラメータおよびその値については、後述する各プログラムの動作と併せて説明する。
【００２１】
図５は、共有領域５１が格納する診断進捗管理テーブル５１３００の構成とデータ例を示す図である。診断進捗管理テーブル５１３００は、共有領域５１に対するメモリ診断の進捗を管理するためのデータテーブルである。診断進捗管理テーブル５１３００は、名称フィールド５１３０１と現在値フィールド５１３０２を有する。
【００２２】
名称フィールド５１３０１は、診断進捗管理テーブル５１３００が管理する進捗パラメータの名称を保持する。現在値フィールド５１３０２は、進捗パラメータの値を保持する。図５に示すパラメータおよびその値については、後述する各プログラムの動作と併せて説明する。
【００２３】
図６は、共有領域５１が格納する共有領域管理テーブル５１４００の構成とデータ例を示す図である。共有領域管理テーブル５１４００は、共有領域５１が格納するデータと補助記憶領域５２が格納するデータとの間の対応関係を共有領域５１の側において管理するデータテーブルである。共有領域管理テーブル５１４００は、名称フィールド５１４０１、アドレスフィールド５１４０２、退避先アドレスフィールド５１４０３、データフィールド５１４０４、診断結果フィールド５１４０５を有する。
【００２４】
名称フィールド５１４０１は、共有領域管理テーブル５１４００が管理するデータ（共有領域５１が格納するデータ）の名称を保持する。アドレスフィールド５１４０２は、共有領域管理テーブル５１４００が管理するデータが格納される共有領域５１上のアドレスである。退避先アドレスフィールド５１４０３は、後述する処理手順により共有領域５１上のデータを補助記憶領域５２へ退避する際における補助記憶領域５２上の格納先アドレスを保持する。データフィールド５１４０４は、共有領域管理テーブル５１４００が管理するデータの値を保持する。診断結果フィールド５１４０５は、アドレスフィールド５１４０２が指定する記憶領域に対するメモリ診断の結果を保持する。
【００２５】
共有領域５１は、図６の各レコードに対応するデータを格納する。図６の各レコードは共有領域５１内の１つの記憶領域に対応し、１つの記憶領域が１つのデータ値を格納することを想定する。
【００２６】
図７は、補助記憶領域５２が格納する補助記憶領域管理テーブル５２１００の構成とデータ例を示す図である。補助記憶領域管理テーブル５２１００は、共有領域５１が格納するデータと補助記憶領域５２が格納するデータとの間の対応関係を補助記憶領域５２の側においてデータテーブルである。補助記憶領域管理テーブル５２１００は、名称フィールド５２１０１、アドレスフィールド５２１０２、退避元アドレスフィールド５２１０３、退避元データ５２１０４を有する。
【００２７】
名称フィールド５２１０１は、補助記憶領域管理テーブル５２１００が管理するデータ（補助記憶領域５２が格納するデータ）の名称を保持する。必ずしも名称フィールド５１４０１が記述している名称と一致しなくともよい。アドレスフィールド５２１０２は、補助記憶領域管理テーブル５２１００が管理するデータが格納される補助記憶領域５２上のアドレスを保持する。退避元アドレスフィールド５２１０３は、後述する処理手順により共有領域５１上のデータを補助記憶領域５２へ退避する際における共有領域５１上の格納元アドレスを保持する。退避元データ５２１０４は、補助記憶領域管理テーブル５２１００が管理するデータの値を保持する。
【００２８】
以上、ＥＣＵ１の構成について説明した。以下では第１演算装置２が共有領域５１に対するメモリ診断を実施し、第２演算装置３が制御演算を実施すると仮定して、各プログラムの動作について説明する。
【００２９】
図８は、第１演算装置制御部４０１の動作を説明するフローチャートである。第１演算装置２は、例えば周期的に本フローチャートを実行することにより、共有領域５１に対するメモリ診断を実施する。以下、図８の各ステップについて説明する。
【００３０】
（図８：ステップＳ４０１０００）
第１演算装置制御部４０１は、記憶装置５が管理する各テーブル（フラグ管理テーブル５１１００、診断進捗管理テーブル５１３００、共有領域管理テーブル５１４００、補助記憶領域管理テーブル５２１００）を初期化する。
【００３１】
（図８：ステップＳ４０１００１）
第１演算装置制御部４０１は、診断判定部４０２を呼び出す。診断判定部４０２の動作については後述の図９で説明する。診断判定部４０２は、メモリ診断を実施すべきタイミングであるか否かを判定する役割を有する。
【００３２】
（図８：ステップＳ４０１００２）
第１演算装置制御部４０１は、診断管理部４０３を呼び出す。診断管理部４０３の動作については後述の図１０で説明する。診断管理部４０３は、メモリ診断の全体動作を制御する役割を有する。
【００３３】
（図８：ステップＳ４０１００３）
第１演算装置制御部４０１は、終了条件が満たされているか否かを判定する。満たされていれば本フローチャートを終了し、満たされていなければステップＳ４０１００１へ戻る。終了条件は、例えばＥＣＵ１の電源をＯＦＦする命令が入力されていることなどである。
【００３４】
図９は、診断判定部４０２の動作を説明するフローチャートである。以下、図９の各ステップについて説明する。
【００３５】
（図９：ステップＳ４０２０００）
診断判定部４０２は、診断進捗管理テーブル５１３００からタイマカウンタの現在値フィールド５１３０２を取得する。診断判定部４０２は、タイマカウンタの値をインクリメントし、診断進捗管理テーブル５１３００の対応するフィールドにインクリメントした値を格納する。
【００３６】
（図９：ステップＳ４０２００１）
診断判定部４０２は、診断パラメータテーブル５１２００から診断実行周期の値フィールド５１２０２（図示する例においては２００）を取得する。診断判定部４０２は、取得したタイマカウンタを取得した診断実行周期により除算した余りを算出する。算出した余りが０であればステップＳ４０２００１に進み、その他の場合は本フローチャートを終了する。
【００３７】
（図９：ステップＳ４０２００２）
診断判定部４０２は、フラグ管理テーブル５１１００が格納している診断開始フラグの現在値フィールド５１１０２に１（メモリ診断を開始することを示す値）を格納する。診断管理部４０３は、後述するステップＳ４０３０００においてこの診断開始フラグの値を確認することにより、メモリ診断を開始すべきタイミングに到達しているか否かを判定することができる。
【００３８】
図１０は、診断管理部４０３の動作を説明するフローチャートである。以下、図１０の各ステップについて説明する。
【００３９】
（図１０：ステップＳ４０３０００）
診断管理部４０３は、フラグ管理テーブル５１１００から診断開始フラグの現在値フィールド５１１０２を取得する。診断開始フラグが１であればステップＳ４０３００１に進み、その他の場合は本フローチャートを終了する。
【００４０】
（図１０：ステップＳ４０３００１）
診断管理部４０３は、コンテキスト管理部４０４を呼び出す。コンテキスト管理部４０４の動作については後述の図１１で説明する。コンテキスト管理部４０４は、共有領域５１が格納しているデータを補助記憶領域５２へ退避し、または退避したデータを補助記憶領域５２から共有領域５１へ戻す役割を有する。本ステップにおいてはデータを補助記憶領域５２へ退避することになる。
【００４１】
（図１０：ステップＳ４０３００２）
診断管理部４０３は、通知部４０５を呼び出す。通知部４０５の動作については後述の図１２で説明する。通知部４０５は、いずれかの演算装置が共有領域５１に対するメモリ診断を実施するとき他の演算装置に対してその旨を割り込み処理により通知し、または診断完了後にその旨を通知する役割を有する。本ステップにおいては診断開始を通知することになる。
【００４２】
（図１０：ステップＳ４０３００３）
診断管理部４０３は、診断実行部４０６を呼び出す。診断実行部４０６の動作については後述の図１３で説明する。診断実行部４０６は、共有領域５１に対するメモリ診断を実際に実施する役割を有する。
【００４３】
（図１０：ステップＳ４０３００４）
診断管理部４０３は、改めてコンテキスト管理部４０４を呼び出す。本ステップにおいては補助記憶領域５２へ退避したデータを共有領域５１へ書き戻すことになる。
【００４４】
（図１０：ステップＳ４０３００５）
診断管理部４０３は、通知部４０５を呼び出す。本ステップにおいては診断完了を通知することになる。
【００４５】
図１１は、コンテキスト管理部４０４の動作を説明するフローチャートである。以下、図１１の各ステップについて説明する。
【００４６】
（図１１：ステップＳ４０４０００）
コンテキスト管理部４０４は、診断進捗管理テーブル５１３００から診断領域アドレスの現在値フィールド５１３０２を取得する。診断領域アドレスは、現在メモリ診断を実施する対象となっている診断対象領域のアドレスを示す値である。診断領域アドレスがセットされていない場合は、診断パラメータテーブル５１２００から開始アドレスの値フィールド５１２０２を取得し、これを診断領域アドレスの現在値フィールド５１３０２として格納する。開始アドレスは、診断すべき記憶領域の先頭アドレスを指定する値であり、例えば共有領域５１の先頭アドレスが指定される。
【００４７】
（図１１：ステップＳ４０４００１）
コンテキスト管理部４０４は、フラグ管理テーブル５１１００から診断完了フラグの現在値フィールド５１１０２を取得する。診断完了フラグが０であればステップＳ４０４００２へ進み、０でない場合はステップＳ４０４００６に進む。診断完了フラグは、共有領域５１全体に対するメモリ診断を完了したか否かを示すフラグである。
【００４８】
（図１１：ステップＳ４０４００２）
コンテキスト管理部４０４は、診断パラメータテーブル５１２００から終了アドレスの値フィールド５１２０２を取得する。終了アドレスは、診断すべき記憶領域の終端アドレスを指定する値であり、例えば共有領域５１の終端アドレスが指定される。コンテキスト管理部４０４は、現在の診断領域アドレスと終了アドレスを比較する。一致した場合はステップＳ４０４００３に進み、一致しない場合はステップＳ４０４００４に進む。
【００４９】
（図１１：ステップＳ４０４００３）
コンテキスト管理部４０４は、診断パラメータテーブル５１２００から開始アドレスの値フィールド５１２０２を取得し、診断進捗管理テーブル５１３００の診断領域アドレスの現在値フィールド５１３０２として格納する。本ステップは、メモリ診断を完了した後に開始アドレスを先頭まで戻すためのものである。
【００５０】
（図１１：ステップＳ４０４００４）
コンテキスト管理部４０４は、診断領域アドレスの現在値フィールド５１３０２を次の診断対象領域のアドレスへ更新する。例えば、後述する診断実行部４０６が一度に診断することができる記憶領域の個数に対して各記憶領域のサイズを乗算した数値を用いて、診断領域アドレスをインクリメントする。診断実行部４０６が一度に診断することができる記憶領域の個数は、診断パラメータテーブル５１２００の診断可能アドレス数の値フィールド５１２０２によって指定することができる。補助記憶領域５２に対してデータを退避することを考慮すると、診断実行部４０６が一度に診断することができる記憶領域の個数は、退避先のデータサイズが補助記憶領域５２の最大サイズ以下となるようにすることが望ましい。
【００５１】
（図１１：ステップＳ４０４００５）
コンテキスト管理部４０４は、診断領域アドレスが格納しているデータを、補助記憶領域５２に対して退避する。具体的には、診断領域アドレスの現在値から開始して、診断可能アドレス数に対して各記憶領域のサイズを乗算した数値のアドレスに至るまでの間の記憶領域に格納されているデータを、補助記憶領域５２へコピーする。コンテキスト管理部４０４は、データを退避する補助記憶領域５２上のアドレスを退避先アドレスフィールド５１４０３に格納するとともに、退避前における共有領域５１上のアドレスと退避したデータをそれぞれ退避元アドレスフィールド５２１０３と退避元データ５２１０４に格納する。
【００５２】
（図１１：ステップＳ４０４００６）
コンテキスト管理部４０４は、退避先アドレスフィールド５１４０３と退避元アドレスフィールド５２１０３をそれぞれコピー元アドレスとコピー先アドレスとして用いることにより、補助記憶領域５２に退避したデータを共有領域５１に対してコピーする。これにより、退避したデータを復帰することができる。ただし後述するように制御実行部４１０が補助記憶領域５２上のデータを上書きする場合もあるので、コピー前後に係るデータ値が同一であるとは限らない。
【００５３】
（図１１：ステップＳ４０４０７）
コンテキスト管理部４０４は、フラグ管理テーブル５１１００の診断完了フラグの現在値フィールド５１１０２に対して０を格納する。
【００５４】
図１２は、通知部４０５の動作を説明するフローチャートである。以下、図１２の各ステップについて説明する。
【００５５】
（図１２：ステップＳ４０５０００）
通知部４０５は、第２演算装置３に対して、共有領域５１の診断を開始した旨を知らせる割り込み処理を発生させる。通知が遅延しないようにするためには割り込み処理を用いることが望ましいが、遅延が許容範囲内に収まると見込まれるのであれば、その他手法を用いて通知してもよい。
【００５６】
図１３は、診断実行部４０６の動作を説明するフローチャートである。以下、図１３の各ステップについて説明する。
【００５７】
（図１３：ステップＳ４０６０００）
診断実行部４０６は、診断パラメータテーブル５１２００から診断用テストデータの値フィールド５１２０２を取得する。診断実行部４０６は、取得した診断用テストデータを診断領域アドレスに対して書き込む。
【００５８】
（図１３：ステップＳ４０６００１）
診断実行部４０６は、診断領域アドレスからデータを読み出す。
【００５９】
（図１３：ステップＳ４０６００２〜Ｓ４０６００３）
診断実行部４０６は、ステップＳ４０６００１において読み出したデータと、ステップＳ４０６０００において書き込んだ診断用テストデータとを比較する（Ｓ４０６００２）。両者が一致する場合はステップＳ４０６００５に進み、不一致だった場合ステップＳ４０６００４に進む。
【００６０】
（図１３：ステップＳ４０６００４）
診断実行部４０６は、共有領域管理テーブル５１４００の診断結果フィールド５１４０５に対して、当該領域が異常である旨を示す値（例えば０は正常、１は異常など）を記録する。
【００６１】
（図１３：ステップＳ４０６０００〜Ｓ４０６００４：補足）
診断実行部４０６は、診断可能アドレス数が指定する個数だけ、これらステップを並列して実施することができる。例えば診断開始アドレスから開始して、３２個の記憶領域に対して並列的にこれらステップを実施することができる。これにより診断可能アドレス数の個数分だけ一括してメモリ診断を実施することができる。並列的に実施することに代えて、対象アドレスを内部的にインクリメントしながらこれらステップを繰り返し実施することにより、同様に一括診断することもできる。
【００６２】
（図１３：ステップＳ４０６００５）
診断実行部４０６は、フラグ管理テーブル５１１００の診断完了フラグの現在値フィールド５１１０２に対して１を格納する。
【００６３】
図１４は、第２演算装置制御部４０７の動作を説明するフローチャートである。第２演算装置３は、例えば周期的に本フローチャートを実行することにより、制御演算を実施する。以下、図１４の各ステップについて説明する。
【００６４】
（図１４：ステップＳ４０７０００）
第２演算装置制御部４０７は、制御実行部４１０を呼び出す。制御実行部４１０の動作については後述の図１７で説明する。制御実行部４１０は、制御演算を実施する役割を有する。
【００６５】
（図１４：ステップＳ４０７００１）
第２演算装置制御部４０７は、終了条件が満たされているか否かを判定する。満たされていれば本フローチャートを終了し、満たされていなければステップＳ４０７０００へ戻る。終了条件は、例えばＥＣＵ１の電源をＯＦＦする命令が入力されていることなどである。
【００６６】
図１５は、割り込み実行部４０８の動作を説明するフローチャートである。第２演算装置３は、ステップＳ４０５０００で説明した割り込み処理が発生すると、本フローチャートを開始して割り込み実行部４０８を実行する。以下、図１５の各ステップについて説明する。
【００６７】
（図１５：ステップＳ４０８０００）
割り込み実行部４０８は、アクセス先設定部４０９を呼び出す。アクセス先設定部４０９の動作については後述の図１６で説明する。アクセス先設定部４０９は、共有領域５１が格納しているデータを用いて制御演算を実施するのか、それとも補助記憶領域５２が格納しているデータを用いて制御演算を実施するのかを切り替える役割を有する。
【００６８】
図１６は、アクセス先設定部４０９の動作を説明するフローチャートである。以下、図１６の各ステップについて説明する。
【００６９】
（図１６：ステップＳ４０９０００）
アクセス先設定部４０９は、フラグ管理テーブル５１１００からアクセス先変更フラグの現在値フィールド５１１０２を取得する。アクセス先変更フラグの値が０であればステップＳ４０９００１へ進み、１であればステップＳ４０９００３へ進む。
【００７０】
（図１６：ステップＳ４０９００１）
アクセス先設定部４０９は、診断進捗管理テーブル５１３００から診断領域アドレスの現在値フィールド５１３０２を取得するとともに、診断パラメータテーブル５１２００から診断可能アドレス数の値フィールド５１２０２を取得する。アクセス先設定部４０９は、共有領域管理テーブル５１４００が管理している記憶領域のうち、取得した診断領域アドレスと診断可能アドレス数に対応する分については、制御実行部４１０が補助記憶領域５２の対応する記憶領域に対してデータを読み書きするようにアクセス先を変更する。本フローチャートを実行するのは第２演算装置３なので、第２演算装置３自身がアクセス先を変更してもよいし、いずれの記憶領域に対してアクセスすべきかを示すフラグなどのデータを適当な記憶領域上に保持してもよい。
【００７１】
（図１６：ステップＳ４０９００２）
アクセス先設定部４０９は、フラグ管理テーブル５１１００のアクセス先変更フラグの現在値フィールド５１１０２を１に更新する。
【００７２】
（図１６：ステップＳ４０９００３）
アクセス先設定部４０９は、診断進捗管理テーブル５１３００から診断領域アドレスの現在値フィールド５１３０２を取得するとともに、診断パラメータテーブル５１２００から診断可能アドレス数の値フィールド５１２０２を取得する。アクセス先設定部４０９は、共有領域管理テーブル５１４００が管理している記憶領域のうち、取得した診断領域アドレスと診断可能アドレス数に対応する分については、制御実行部４１０が共有領域５１の対応する記憶領域に対してデータを読み書きするようにアクセス先を変更する。具体的手段はステップＳ４０９００１と同様である。
【００７３】
（図１６：ステップＳ４０９００４）
アクセス先設定部４０９は、フラグ管理テーブル５１１００のアクセス先変更フラグの現在値フィールド５１１０２を０に更新する。
【００７４】
図１７は、制御実行部４１０の動作を説明するフローチャートである。以下、図１７の各ステップについて説明する。
【００７５】
（図１７：ステップＳ４１００００）
制御実行部４１０は、制御演算において必要になるデータを、共有領域５１または補助記憶領域５２から取得する。いずれの記憶領域から取得するかについては、ステップＳ４０９００１またはＳ４０９００３において指定される。補助記憶領域５２へデータを退避している間のアクセス先アドレスは、退避先アドレスフィールド５１４０３から取得することができる。
【００７６】
（図１７：ステップＳ４１０００１）
制御実行部４１０は、ステップＳ４１００００において取得したデータを用いて、制御演算を実施する。
【００７７】
（図１７：ステップＳ４１０００２）
制御実行部４１０は、制御演算の結果を、ステップＳ４１００００においてデータを取得した記憶領域に対して書き込む。補助記憶領域５２に対して演算結果を書き込んだ場合であっても、ステップＳ４０４００６により共有領域５１に対してその書き込まれたデータが反映されるので、制御演算の整合性を保つことができる。
【００７８】
＜実施の形態１：まとめ＞
本実施形態１に係るＥＣＵ１は、共有領域５１に対してメモリ診断を実施している間は診断対象領域内のデータを補助記憶領域５２へ退避し、演算装置は退避されたデータを用いて制御演算を実施する。これにより、メモリ診断中においても演算装置の利用効率を高めることができる。
【００７９】
本実施形態１に係るＥＣＵ１は、補助記憶領域５２に対してデータが退避されている間は補助記憶領域５２に対して制御演算の結果を書き込み、メモリ診断が終わるとその書き込まれた演算結果を共有領域５１へ書き戻す。これにより、演算装置の利用効率を維持しつつメモリ診断を実施するとともに、メモリ診断の前後において制御演算の整合性を保つことができる。
【００８０】
＜実施の形態２＞
実施形態１において、共有領域５１と補助記憶領域５２は記憶装置５の一部として構成されているが、これら記憶領域を互いに異なる記憶装置上に構成することもできる。例えば共有領域５１をＲＡＭ上に構築するとともに、補助記憶領域５２はＲＡＭよりも信頼性の高いメモリ装置上に構築することができる。この別メモリ装置はＥＣＵ１内に配置してもよいしＥＣＵ１の外部に設けてＥＣＵ１からアクセスするようにしてもよい。
【００８１】
ＲＡＭよりも信頼性の高いメモリ装置としては、例えば排他制御機能を備えたレジスタメモリなどが考えられる。この場合、当該レジスタメモリに対していずれかの演算装置がデータを書き込んでいる間は、レジスタメモリ自身が他の演算装置からのデータ書き込み（あるいは読み取りと書き込みの双方）を拒否する。これにより、データ書き込みが競合することによる記憶領域の破壊を防ぐことができるので、一般的なＲＡＭと比較して記憶領域の信頼性が高まる。
【００８２】
共有領域５１と補助記憶領域５２を互いに異なる記憶装置上に構成する場合において、アドレス空間５００００は共通のものを用いることができる。これにより、アクセス先アドレスのみによっていずれの記憶装置に対してアクセスするかを制御することができるので、実施形態１と同様の処理により同様の効果を発揮することができる。
【００８３】
＜実施の形態３＞
実施形態１〜２においては、第１演算装置２が共有領域５１に対するメモリ診断を実施し、第２演算装置３が制御演算を実施することを説明したが、双方の演算装置がいずれもメモリ診断と制御演算を実施してもよいし、いずれかの演算装置はメモリ診断のみを実施するとともに他の演算装置はメモリ診断と制御演算をともに実施してもよい。
【００８４】
例えば、共有領域５１内の記憶領域に対してデータを書き込む演算装置は、その記憶領域に対するメモリ診断を自ら実施することが考えられる。各記憶領域に対してデータを書き込む演算装置があらかじめ固定されている場合は、この手法が有用である。あるいは共有領域５１内の記憶領域に対してデータを書き込む頻度が最も高い演算装置が、その記憶領域に対するメモリ診断を自ら実施することが考えられる。
【００８５】
＜本発明の変形例について＞
本発明は上記実施形態に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施形態は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施形態の構成の一部を他の実施形態の構成に置き換える事が可能であり、また、ある実施形態の構成に他の実施形態の構成を加えることも可能である。また、各実施形態の構成の一部について他の構成の追加・削除・置換をすることができる。
【００８６】
以上の実施形態において、ＥＣＵ１は演算装置を２つ備えているが、演算装置の個数は２つに限らない。１つのパッケージ内に３つ以上のプロセッサあるいはプロセッサコアを備えるシステムや、プロセッサコアを有する複数のパッケージによって構成されたシステムも、本発明の対象である。
【００８７】
以上の実施形態において、ＥＣＵ１の構成として図１を例示したが、その他構成を備えることもできる。例えば、データを保存するための不揮発性メモリ（バックアップＲＡＭ）、各演算装置が高速にアクセスすることができるローカルメモリ、図１に例示した以外のセンサ、などを備えることもできる。
【００８８】
図２において、アドレス空間５００００が管理する記憶領域として共有領域５１と補助記憶領域５２を例示したが、その他記憶領域をアドレス空間５００００上で管理することもできる。例えば各演算装置のローカルメモリ、外部記憶装置、レジスタなどのアドレスをアドレス空間５００００上で管理することもできる。
【００８９】
共有領域５１が格納する各テーブルが保持するデータのうち、少なくとも一部のフィールドについて、別の記憶装置上に格納することもできる。例えば、各演算装置が有するローカル記憶領域にそれらフィールドを格納することもできる。
【００９０】
以上の実施形態において、補助記憶領域５２に対してデータを退避する際における退避先アドレスを格納するフィールドとして退避先アドレスフィールド５１４０３を設けているが、退避先アドレスを管理する方法はこれに限らない。例えば、データが通常格納されるアドレスからの相対アドレスなどを用いて退避先アドレスを管理することができる。
【００９１】
以上の実施形態において、メモリ診断結果を例えば０（正常）と１（異常）の２値で表しているが、診断結果として格納する値はこれに限らない。例えば、異常が検出された頻度や積算回数に応じて、それぞれ異なる診断結果を表す値を格納してもよい。
【００９２】
ステップＳ４０５０００において、演算装置に対する割り込み処理を発生させることにより診断開始または終了を通知することとしたが、通知方法はこれに限らない。例えばアドレス空間５００００内のいずれかの記憶領域に対して、診断開始／終了を知らせるフラグを格納することにより、これを通知することができる。図３の４行目のフラグはその例示である。
【００９３】
以上の実施形態において、テスト用データを書き込んで同じ値を読み出すことができるか否かによりメモリ診断を実施することを説明したが、メモリ診断手法はこれに限らずその他適当な手法を用いることができる。
【符号の説明】
【００９４】
１：車両制御装置（ＥＣＵ）、２：第１演算装置、３：第２演算装置、４：プログラム領域、４０１：第１演算装置制御部、４０２：診断判定部、４０３：診断管理部、４０４：コンテキスト管理部、４０５：通知部、４０６：診断実行部、４０７：第２演算装置制御部、４０８：割り込み実行部、４０９：アクセス先設定部、４１０：制御実行部、５：記憶装置、６：入出力回路、７：スロットルセンサ、８：アクチュエータ。
【図１】
2019036322.tif 000003
【図２】
2019036322.tif 000004
【図３】
2019036322.tif 000005
【図４】
2019036322.tif 000006
【図５】
2019036322.tif 000007
【図６】
2019036322.tif 000008
【図７】
2019036322.tif 000009
【図８】
2019036322.tif 000010
【図９】
2019036322.tif 000011
【図１０】
2019036322.tif 000012
【図１１】
2019036322.tif 000013
【図１２】
2019036322.tif 000014
【図１３】
2019036322.tif 000015
【図１４】
2019036322.tif 000016
【図１５】
2019036322.tif 000017
【図１６】
2019036322.tif 000018
【図１７】
2019036322.tif 000019
【手続補正書】
【提出日】平成30年9月27日(2018.9.27)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
車両の動作を制御する車両制御装置であって、
前記車両の動作を制御する制御演算を実行する第１および第２演算装置、
前記第１および第２演算装置が共有する共有記憶領域を診断するメモリ診断部、
前記メモリ診断部が診断する診断対象領域が格納しているデータの複製を記憶する補助記憶部、
前記メモリ診断部が前記診断対象領域を診断する間は前記第１および第２演算装置が前記診断対象領域内に格納されているデータに代えて前記補助記憶部内に格納されている前記複製を用いて前記制御演算を実行するようにアクセス先アドレスを設定するアクセス先設定部、
を備え、
前記車両制御装置はさらに、前記共有記憶領域を有する共有記憶装置を備え、
前記補助記憶部は、前記複製を記憶する補助記憶領域として構成されており、
前記車両制御装置はさらに、前記共有記憶装置とは異なる記憶装置であって前記補助記憶領域を有する補助記憶装置を備え、
前記補助記憶装置は、いずれかの演算装置がデータを書き込む間は他の演算装置からのアクセスを排除する排他的記憶装置として構成されることにより、前記共有記憶装置よりも高い信頼性を有する記憶装置として構成されている
ことを特徴とする車両制御装置。
【請求項２】
前記メモリ診断部は、前記共有記憶領域を診断する処理を実装したメモリ診断プログラムとして構成されており、
前記第１演算装置は、前記メモリ診断部を実行することにより前記共有記憶領域を診断し、
前記車両制御装置はさらに、前記第１演算装置が前記メモリ診断部を実行開始すると前記共有記憶領域が診断中である旨を前記アクセス先設定部に対して通知する通知部を備えており、
前記アクセス先設定部は、前記通知部から前記共有記憶領域が診断中である旨の通知を受け取ると、前記第２演算装置が前記診断対象領域に代えて前記補助記憶部に対してアクセスするようにアクセス先アドレスを設定する
ことを特徴とする請求項１記載の車両制御装置。
【請求項３】
前記車両制御装置は、前記第１および第２演算装置がアクセスするメモリ装置を備え、  前記共有記憶領域と前記補助記憶部はともに、前記メモリ装置が有する記憶領域として構成されている
ことを特徴とする請求項１記載の車両制御装置。
【請求項４】
前記通知部は、前記第１演算装置が前記メモリ診断部を実行完了すると前記共有記憶領域の診断が完了した旨を前記アクセス先設定部に対して通知し、
前記アクセス先設定部は、前記通知部から前記共有記憶領域の診断が完了した旨の通知を受け取ると、前記第２演算装置が前記補助記憶部に代えて前記診断対象領域に対してアクセスするようにアクセス先アドレスを設定する
ことを特徴とする請求項２記載の車両制御装置。
【請求項５】
前記共有記憶領域は、前記メモリ診断部が一括して診断する前記診断対象領域の個数を指定する診断個数データを格納しており、
前記補助記憶部は、前記診断個数データが指定する前記個数以上の前記診断対象領域の複製を記憶することができる記憶容量を備え、
前記メモリ診断部は、前記診断個数データが指定する前記個数の前記診断対象領域を一括して診断し、
前記アクセス先設定部は、前記メモリ診断部が前記共有記憶領域の診断を開始してから前記診断個数データが指定する前記個数の前記診断対象領域を診断し終えるまでの間は、前記第１および第２演算装置が前記診断対象領域内に格納されているデータに代えて前記補助記憶部内に格納されている前記複製を用いて前記制御演算を実行するようにアクセス先アドレスを設定する
ことを特徴とする請求項１記載の車両制御装置。
【請求項６】
前記共有記憶領域は、前記複製を記憶している前記補助記憶部上のアドレスを記述する退避先アドレスデータを格納し、
前記第１および第２演算装置は、前記退避先アドレスデータが記述している前記補助記憶部上のアドレスから前記複製を取得する
ことを特徴とする請求項１記載の車両制御装置。
【請求項７】
前記補助記憶部は、前記診断対象領域を格納している前記共有記憶領域上のアドレスを記述する退避元アドレスデータを格納し、
前記第１演算装置は、前記共有記憶領域の診断が完了した後、前記退避先アドレスデータが記述している前記補助記憶部上のアドレスが格納しているデータを取得し、前記退避元アドレスデータが記述しているアドレスに対してその取得したデータを書き戻す
ことを特徴とする請求項６記載の車両制御装置。
【請求項８】
前記メモリ診断部は、前記共有記憶領域を診断する処理を実装したメモリ診断プログラムとして構成されており、
前記第１および第２演算装置は、前記共有記憶領域のうち自身がデータを書き込む領域に対して、前記メモリ診断部を実行することにより前記診断を実施する
ことを特徴とする請求項１記載の車両制御装置。
【請求項９】
前記メモリ診断部は、前記共有記憶領域を診断する処理を実装したメモリ診断プログラムとして構成されており、
前記第１および第２演算装置は、前記共有記憶領域のうち自身がデータを書き込む割合が他の演算装置よりも高い領域に対して、前記メモリ診断部を実行することにより前記診断を実施する
ことを特徴とする請求項１記載の車両制御装置。
【請求項１０】
請求項１から９のいずれか１項記載の車両制御装置において、
前記アクセスを排除することは、前記他の演算装置からの読み取り、及び書き込みを拒否することを含む、車両制御装置。