(57)【要約】【課題】周期的な割り込み起因のコア間通信を行っているときに、一部の演算部に負荷が集中しないようにして利用効率を最適化する。【解決手段】プログラムを実行する複数の演算部２，３と、複数の演算部２，３が周期的にアクセスする記憶領域５と、外部情報を検出するセンサ８とを備え、複数の演算部２，３は，センサ８が検出した外部情報を受信し、当該受信した外部情報に基づいて、前記記憶領域に対する処理を調整する。外部情報は、記録領域４に対する書込み頻度である。【選択図】図１
2018163528.tif 000002
【特許請求の範囲】
【請求項１】
プログラムを実行する複数の演算部と、
前記複数の演算部が周期的にアクセスする記憶領域と、
外部情報を検出する検出部とを備え、
前記複数の演算部は，前記検出部が検出した前記外部情報を受信し、当該受信した外部情報に基づいて、前記記憶領域に対する処理を調整する、
車両制御装置。
【請求項２】
前記外部情報は、前記記憶領域に対する書込み頻度である、
請求項１記載の車両制御装置。
【請求項３】
前記複数の演算部は、前記外部情報に基づいて、前記記憶領域に対する処理の周期を調整する、
請求項１記載の車両制御装置。
【請求項４】
前記複数の演算部は、前記外部情報に基づいて、前記記録領域から前記外部情報を読み込む処理の周期を調整する、
請求項３記載の車両制御装置。
【請求項５】
前記複数の演算部は、前記外部情報に基づいて、前記周期の位相を調整する、
請求項４記載の車両制御装置。
【請求項６】
前記複数の演算部は，前記外部情報の時間変化率を算出し、当該算出した外部情報の時間変化率に基づいて、前記記憶領域に対する処理を調整する、
請求項１記載の車両制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、車両制御装置のＯＳ(オペレーティングシステム)において、マルチコアシステムで共有されるメモリ領域を介して実行されるコア間データ通信に関するものである。
【背景技術】
【０００２】
近年、例えば、自動車システム等の組込みシステムは、多機能化により、演算量が年々増加しており、組込みシステムに求められるＣＰＵの性能は、向上する一方である。パソコンの分野では、このような処理量の増加に対して、演算装置であるＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）のコア数を増やすこと(マルチコア化)によって対応してきた。組込みシステムの分野も例外ではなく、カーナビや携帯電話といった演算量が多く、リアルタイム性の制約が比較的緩いコンシューマ系では、マルチコア化が進んでいる。例えば、自動車制御システム等の組み込み制御システムが、高度化および複雑化するのに伴い、これらの演算量が1シングルコアの限界を超えることが予想されるため、マルチコアの採用が検討されている。
【０００３】
一般的に、複数のコアが連携してアプリケーションを処理するシステムでは、コアをまたいで情報を処理するため、データの一貫性を担保する必要がある。しかしながら、マルチコアシステムは、各コアが並列で動作するため、排他制御が必要となり、オーバーヘッドの増加が課題となる。コア間排他制御とは、複数のコアが同時にアクセス（Ｒｅａｄ/Ｗｒｉｔｅ/Ｅｘｅｃｕｔｉｏｎ）できるリソースがある場合、アクセス中のコアにリソース(例、メモリ)を独占させ、他のコアがアクセスできないようにリソースをロックする処理である。
【０００４】
下記特許文献１には、進捗情報算出手段と、非同期処理手段とを有しており、同期処理を行う複数のコアの一方が、同期待ちの時間を抑制して非同期処理を実行可能なマルチプロセッサが開示されている。進捗情報算出手段は、現在ＰＣ(プログラムカウンタ)値と、アドレス位置とに基づいて、他のプロセッサの同期処理開始までの進捗情報を算出する非同期処理手段は、進捗情報に基づき、他のプロセッサが同期処理を開始する前に、自プロセッサが非同期処理を実行可能であると判定した場合に、非同期処理を実行する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１４-１９１６５５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
複数のＣＰＵで構成されるマルチコアアーキテクチャにおいて、コアを跨いでデータを入手するには、該当データまたは更新フラグが格納された領域を周期的に監視する必要がある。ソフトウェアの更新タイミングが、車両状態に依存して変動する場合(ｅｘ.エンジン、インバータ)、周期的に監視する手法では、サンプリング周期は、できるだけ短い周期に設定する必要があるため、高負荷となる。
【０００７】
よって、本発明は、周期的な割り込み起因のコア間通信を行っているときに、一部の演算部に負荷が集中しないようにして利用効率を最適化するためのプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明に係わる車両制御装置は、プログラムを実行する複数の演算部と、前記複数の演算部が周期的にアクセスする記憶領域と、外部情報を検出する検出部とを備え、前記複数の演算部は、前記検出部が検出した前記外部情報を受信し、当該受信した前記外部情報に基づいて、前記記憶領域に対する処理を調整する。
【発明の効果】
【０００９】
本発明に関わる車両制御装置によれば、変動する外部情報に応じて、記憶領域に対する処理を変更することができる。従って、複数の演算部に対して共有資源となる記録領域への競合を抑制し、演算部の利用効率を向上することができる。
【図面の簡単な説明】
【００１０】
【図１】エンジン制御装置ＥＣＵ１の構成図。
【図２】第１演算部データ管理テーブル５１を示す図。
【図３】第１演算部データ記録テーブル５２を示す図。
【図４】第１演算部割り込み記録テーブル５３を示す図。
【図５】第２演算部データ管理テーブル６１を示す図。
【図６】第２演算部データ記録テーブル６２を示す図。
【図７】第２演算部サンプリング記録テーブル６３を示す図。
【図８】第２演算部サンプリング調整テーブル６４を示す図。
【図９】第２演算部サンプリング周期調整テーブル６５を示す図。
【図１０】第２演算部オフセット調整テーブル６６を示す図。
【図１１】第１演算部ソフトウェア制御部４１の動作フローを示す図。
【図１２】第１演算部タイマ部４２の動作フローを示す図。
【図１３】第１演算部割り込み部４３の動作フローを示す図。
【図１４】第２演算部ソフトウェア制御部４４の動作フローを示す図。
【図１５】第２演算部タイマ部４５の動作フローを示す図。
【図１６】第２演算部周期処理部４６の動作フローを示す図。
【図１７】第２演算部サンプリング調整部４７の動作フローを示す図。
【図１８】第２演算部周期調整部４８の動作フローを示す図。
【図１９】第２演算部オフセット調整部４９の動作フローを示す図。
【図２０】第２演算部サンプリング部４０の動作フローを示す図
【発明を実施するための形態】
【００１１】
図１は、本実施例に係る２つの演算部からなるマルチコアシステムで構成されるエンジン制御装置ＥＣＵ１の構成図である。
【００１２】
エンジン制御装置ＥＣＵ１は、車両に搭載され、当該車両のエンジン、変速機等の各種機器を制御する。エンジン制御装置ＥＣＵ１は、演算部および外部情報監視部としての第１演算部２および第２演算部３と、プログラム領域４と、第１演算部記憶領域５と、第２演算部記憶領域６と、入出力回路７とを備える。入出力回路７は、検出部としてのセンサ８と、アクチュエータ９とに、相互に接続されている。センサ８は、車両の各種状態を検出し、検出信号として入出力回路７を介してエンジン制御装置ＥＣＵ１内に入力される。アクチュエータ９は、エンジン制御装置ＥＣＵ１が入出力回路７を介して出力する出力信号に応じて動作する。
【００１３】
第１演算部２と、第２演算部３とは、プログラム領域４が格納しているプログラムを実行するプロセッサコア（ＣＰＵ：Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）である。第１演算部２と、第２演算部３とは、プログラム領域４が格納しているプログラムの実行を並列に行うことができる。さらに、第１演算部２と、第２演算部３とは、センサ８から出力される検出信号に基づいて、外部情報を監視する外部情報監視部としても機能する。ここで、マルチコアシステムの演算装置は、２つとしているが、これに限らない。本実施例で定義するマルチコアシステムとは、複数のプロセッサコアを有するコンピュータシステムのことを指す。したがって、例えば、１つのパッケージ内に２つ以上の複数のプロセッサコアで構成されるシステムや、プロセッサコアを有する複数のパッケージで構成されたシステムでもよい。
【００１４】
プログラム領域４は、第１演算部ソフトウェア制御部４１と、第１演算部タイマ部４２と、第１演算部割り込み部４３と、第２演算部ソフトウェア制御部４４とを格納する。さらに、プログラム領域４は、第２演算部タイマ部４５と、第２演算部周期処理部４６と、第２演算部サンプリング調整部４７と、第２演算部周期調整部４８と、第２演算部オフセット調整部４９と、第２演算部サンプリング部４０とを格納する。
【００１５】
第１演算部記憶領域５は、後述する図２の第１演算部データ管理テーブル５１と、図３の第１演算部データ記録テーブル５２と、図４の第１演算部割り込み記録テーブル５３とを格納する。さらに、第２演算部記憶領域６は、後述する図５の第２演算部データ管理テーブル６１と、図６の第２演算部データ記録テーブル６２と、図７の第２演算部サンプリング記録テーブル６３と、図８の第２演算部サンプリング調整テーブル６４と、図９の第２演算部サンプリング周期調整テーブル６５と、図１０の第２演算部オフセット調整テーブル６６とを格納する。
【００１６】
本処理システムは、マルチコアプロセッサを採用しているため、第１演算部２と、第２演算部３とは、プログラム領域４と、第１演算部データ記憶領域５と、第２演算部データ記憶領域６とに並列にアクセス可能である。さらに、本実例におけるエンジン制御ＥＣＵ１の構成は、これに限らない。エンジン制御ＥＣＵ１は、例えば、データを保存するための不揮発性メモリ（バックアップＲＡＭ）や、各演算部がアクセスするための共有記憶領域や異なるセンサなどを備えてもよい。
【００１７】
第１演算部記憶領域５に格納され、第１演算部２と、第２演算部３とからアクセス（読み込み，書き込み）されるテーブル５１〜５３を、下記より説明する。
【００１８】
図２は、第１演算部データ管理テーブル５１の一例を示す図である。
【００１９】
第１演算部データ管理テーブル５１は、名称フィールド５１０と、設定値フィールド５１１とからなる。名称フィールド５１０は、第１演算部データ管理テーブル５１が管理する対象の名称である。本実施例では、第１演算部タイマ部４２が操作するソフトウェアタイマの最大値である第１演算部タイマカウンタ最大値からなる。設定値フィールド５１１は、第１演算部データ管理テーブル５１が管理する対象の設定値を表す。
【００２０】
図３は、第１演算部データ記録テーブル５２の一例を示す図である。
【００２１】
第１演算部データ記録テーブル５２は、名称フィールド５２０と、値フィールド５２１とからなる。名称フィールド５２０は、第１演算部データ記録テーブル５２が管理する対象の名称である。本実施例では、第１演算部２の動作の基準となるソフトウェアタイマのカウンタ値である第１演算部タイマカウンタ値と、第１演算部２が割り込み時にアクセス(読み込み、書き込み)するテーブルの格納先ＩＤを示す最新値格納先ＩＤとからなる。値フィールド５２１は、第１演算部データ記録テーブル５２で管理する対象の値が格納される。
【００２２】
図４は、第１演算部割り込み記録テーブル５３の一例を示す図である。
【００２３】
第１演算部割り込み記録テーブル５３は、ＩＤフィールド５３０と、タイマカウンタ値フィールド５３１と、サンプリングフラグフィールド５３２と、データ値フィールド５３３とからなる。ＩＤフィールド５３０は、第１演算部割り込み記録テーブル５３が管理する対象を管理するＩＤである。タイマカウンタ値フィールド５３１は、第１演算部割り込み部４３が第１演算部割り込み記録テーブル５３にアクセスしたタイミングのタイマカウンタ値である。サンプリングフラグフィールド５３２は、第２演算部３からのアクセス有無を示すフラグである。本実施例では、サンプリングフラグは「０」，「１」の２値で表現され、「０」は第２演算部がアクセスしたことを示し、「１」は第２演算部が未アクセスであることを示す。ただし、第２演算部３からのアクセスを示すサンプリングフラグの構成は、これに限らない。データ値フィールド５３３は、第１演算部割り込み記録テーブル５３が管理する割り込みのデータ値を管理するフィールドである。
【００２４】
次に、エンジン制御ＥＣＵ１の第２演算部記憶領域６に格納され、第１演算部２と、第２演算部３とからアクセス（読み込み、書き込み）されるテーブル６１〜６６を、下記より説明する。
【００２５】
図５は、第２演算部データ管理テーブル６１の一例を示す図である。
【００２６】
第２演算部データ管理テーブル６１は、名称フィールド６１０と、設定値フィールド６１１とからなる。名称フィールド６１０は、第２演算部データ記録テーブル６１が管理するデータの名称が格納される。本実施例では、第２演算部タイマ部４５が更新するタイマの最大値である第２演算部タイマカウンタ最大値と、第２演算部２が第１演算部記憶領域５にアクセスするサンプリングのタイミングを調整するサンプリング調整周期とからなるが、これに限らない。設定値フィールド６１１は、第２演算部データ記録テーブル６１が管理するデータの設定値が格納される。
【００２７】
図６は、第２演算部データ記録テーブル６２の一例を示す図である。
【００２８】
第２演算部データ記録テーブル６２は、名称フィールド６２０と、値フィールド６２１とからなる。名称フィールド６２０は、第２演算部データ記録テーブル６２が管理するデータの名称が格納される。本実施例では、第２演算部タイマ部４５がアクセスするソフトウェアタイマのカウンタである第２演算部タイマカウンタ値と、第２演算部３が第１演算部記憶領域５にアクセスする周期であるサンプリング周期と、第２演算部３が第１演算部記憶領域５にアクセスする周期のオフセットとからなる。しかし、これに限らない。値フィールド６２１は、第２演算部データ記録テーブル６２が管理するデータの値が格納される。
【００２９】
図７は、第２演算部サンプリング記録テーブル６３の例を示す図である。
【００３０】
第２演算部サンプリング記録テーブル６３は、ＩＤフィールド６３０と、タイマカウンタ値フィールド６３１と、サンプリングタイマカウンタ値フィールド６３２と、データ値フィールド６３３とからなる。ＩＤフィールド６０３００は、第２演算部サンプリング記録テーブル６３が管理するデータが格納される領域のＩＤが格納される。タイマカウンタ値フィールド６３１は、第１演算部割り込み部４３が第１演算部記憶領域５にアクセスしたタイマカウンタ値が格納される。サンプリングタイマカウンタ値フィールド６３２は、第２演算部サンプリング部４０が第１演算部記憶領域５にアクセスした際のタイマカウンタ値が格納される。データ値フィールド６３３は、第２演算部サンプリング記録テーブル６３が管理するサンプリングデータの値が格納される。
【００３１】
図８は、第２演算部サンプリング調整テーブル６４である。
【００３２】
第２演算部サンプリング調整テーブル６４は、ＩＤフィールド６４０と、割り込み周期フィールド６４１と、割り込み傾向フィールド６４２と、オフセット差フィールド６４３と、オフセット差傾向フィールド６４４とからなる。ＩＤフィールド６４０は、第２演算部サンプリング調整テーブル６４が管理するデータが格納される領域のＩＤが格納される。割り込み周期フィールド６４１は、第２演算部３が第１演算部記憶領域５にアクセスする頻度を算出した結果である割り込み周期を格納する。割り込み周期は、例えば、前回アクセスしてから経過した時間や、第１演算部記憶領域５にアクセスする平均時間などである。割り込み傾向フィールド６４２は、前述した割り込み周期の単位時間当たりの変化率である。割り込み周期の単位時間当たりの変化率は、例えば、最新の割り込み周期と、前回の割り込み周期との差分、または最新の割り込み周期から一定期間内の割り込み周期の変化率である。オフセット差フィールド６４３は、第２演算部サンプリング記録テーブル６３が管理するタイマカウンタ値とサンプリングタイマカウンタ値との差を、オフセット差として格納する。オフセット差傾向フィールド６４４は、オフセット差の単位時間あたりの変化率である。オフセット差の単位時間あたりの変化率は、例えば、最新のオフセット差と前回のオフセット差との差分、または一定時間内のオフセット差の変化率である。
【００３３】
図９は、第２演算部サンプリング周期調整テーブル６５である。
【００３４】
第２演算部サンプリング周期調整テーブル６５は、割り込み傾向判定閾値６５０フィールドと、サンプリング周期補正値フィールド６５１とからなる。割り込み傾向判定閾値６５０フィールドは、第２演算部サンプリング調整テーブル６４が管理する割り込み傾向の値を判定する閾値が格納される。サンプリング周期補正値傾向フィールド６５１は、前述した割り込み傾向の値に応じた補正値を格納する。例えば、割り込み傾向が０以上でかつサンプリング傾向の絶対値が一定値（図中、α）以下であれば、補正値が０となり、一定値（図中、β）以上であれば、指定された値を補正値とする。さらに、割り込み傾向が０より小さく、サンプリング傾向の絶対値が一定値（α）以下であれば指定された値を補正値とし、一定値（β）以上であれば、同様に指定された値を補正値とする。ここで、補正の値は、固定値としているが、これに限らない。補正の値は、例えば、割り込み傾向の値に応じた変化する値でもよい。
【００３５】
図１０は、第２演算部オフセット調整テーブル６６である。
【００３６】
第２演算部オフセット調整テーブル６６は、オフセット傾向判定閾値フィールド６６０と、オフセットフィールド６６１とからなる。オフセット傾向判定閾値フィールド６６０は、第２演算部サンプリング調整テーブル６４で管理するオフセット差傾向を判定する閾値が格納される。オフセットフィールド６６１は、前述したオフセット差傾向の値に応じたオフセットを格納する。例えば、オフセット差傾向が０以上でかつ一定値（図中、α）以下であれば、指定した値が０となり、一定値（図中、β）以上であれば、指定された値をオフセットする。さらに、オフセット差傾向が０より小さく、オフセット差傾向の絶対値が一定値（α）以下であれば、指定された値をオフセットとし、一定値（β）以上であれば、同様に指定された値をオフセットとする。ここで、オフセットの値は固定値としているが、これに限らない。オフセットの値は、例えば、オフセット差傾向の値に応じて変化する値でもよい。
【００３７】
以上のテーブル５１〜５３，６１〜６６が、本実施例のエンジン制御ＥＣＵ１の第１演算部データ記憶領域５と、第２演算部記憶領域６とに格納される。ただし、各テーブル５１〜５３，６１〜６６が管理する対象の種類や数および管理方法は、これに限らない。さらに、各テーブル５１〜５３，６１〜６６は、第１演算部記憶領域５と、第２演算部記憶領域６とから、任意のタイミングでアクセス（読み込み，書き込み）可能である。
【００３８】
次に、エンジン制御ＥＣＵ１のプログラム領域４に格納され、第１演算部２で実行されるプログラムの動作フローについて説明する。
【００３９】
図１１は、第１演算部２の第１演算部ソフトウェア制御部４１の動作フローである。以下、図１１の各ステップ４１０〜４１２について説明する。
【００４０】
(図１１：ステップ４１０)
第１演算部ソフトウェア制御部４１は、第１演算部記憶領域５で管理される第１演算部データ記録テーブル５２と、第１演算部割り込み記録テーブル５３とを初期化する。
【００４１】
（図１１：ステップ４１１）
第１演算部ソフトウェア制御４１は、後述の図７で説明する第１演算部タイマ部４２を呼ぶ。これにより、第１演算部２が参照するタイマのカウンタ値を更新する。
【００４２】
（図１１：ステップ４１２）
第１演算部ソフトウェア制御部４１は、終了条件が満たされているか判定し、満たされていれば、処理を終了し、満たされていなければ、ステップ４１１へ戻る。
【００４３】
図１２は、第１演算部タイマ部４２の動作フローである。以下、図１２の各ステップ４２０〜４２２について説明する。
【００４４】
(図１２：ステップ４２０)
第１演算部タイマ部４２は、第１演算部データ記録テーブル５２から第１演算部タイマカウンタ値を取得する。取得した値が、データ管理テーブル５１で管理される第１演算部タイマカウンタ最大値と比較し、最大タイマカウンタ以上でれば、ステップ４２１に進み、その他の場合は、ステップ４２２に進む。
【００４５】
(図１２：ステップ４２１)
第１演算部タイマ部４２は、第１演算部データ記録テーブル５２の第１演算部タイマカウンタ値に０を代入し、処理を終了する。
【００４６】
(図１２：ステップ４２２)
第１演算部タイマ部４２は、データ記録テーブル５２の第１演算部タイマカウンタ値に１を加算した値を書き込み、処理を終了する。
【００４７】
図１３は、第１演算部割り込み部４３の動作フローである。以下、図１３の各ステップ４３０〜４３２について説明する。
【００４８】
(図１３：ステップ４３０)
第１演算部割り込み部４３は、割り込み処理を実行する。
【００４９】
(図１３：ステップ４３１)
第１演算部割り込み部４３は、第１演算部データ記録テーブル５２を参照し、第１演算部タイマカウンタ値と、最新値格納ＩＤとを取得する。第１演算部割り込み部４３は、取得した最新値格納ＩＤと同じＩＤが示す第１演算部割り込み記録テーブル５３のタイマカウンタ値フィールドと、データ値フィールドの値に取得したタイマカウンタ値と、割り込み処理実行結果とを格納する。
(図１３：ステップ４３２)
【００５０】
第１演算部割り込み部４３は、第１演算部データ記録テーブル５２が管理する最新値格納ＩＤと、第１演算部割り込み記録テーブル５３のサンプリングフラグとを更新し、処理を終了する。
【００５１】
次に、エンジン制御ＥＣＵ１のプログラム領域４に格納され、第２演算部３で実行されるプログラムの動作フローについて説明する。
【００５２】
図１４は、第２演算部ソフトウェア制御部４４の動作フローである。以下、図１４の各ステップについて説明する。
【００５３】
(図１４：ステップ４４０)
第２演算部ソフトウェア制御部４０４は、第２演算部記憶領域６で管理された第２演算部データ記録テーブル６２と、第２演算部サンプリング記録テーブル６３とを初期化する。
【００５４】
(図１４：ステップ４４１)
第２演算部ソフトウェア制御部４４は、後述の図１５で説明する第２演算部タイマ部４５を呼ぶ。これにより、第２演算部３が参照するタイマのカウンタ値を更新する。
【００５５】
(図１４：ステップ４４２)
第２演算部ソフトウェア制御部４４は、後述の図１６で説明する第２演算部周期処理部４６を呼ぶ。これにより、第２演算部３は、一定の周期で処理を実行する。
【００５６】
(図１４：ステップ４４３)
第２演算部ソフトウェア制御部４４は、終了条件が満たされているか判定し、満たされていれば、処理を終了し、満たされていなければ、ステップ４４１へ戻る。
【００５７】
図１５は、第２演算部タイマ部４５の動作フローである。以下、図１５の各ステップについて説明する。
【００５８】
(図１５：ステップ４５０)
第２演算部タイマ部４５は、第２演算部データ記録テーブル６２から第２演算部タイマカウンタ値を取得する。取得したタイマカウンタ値をデータ管理テーブル６１で管理される第２演算部タイマカウンタ最大値と比較し、最大タイマカウンタ値以上でれば、ステップ４５１に進み、その他の場合は、ステップ４５２に進む。
【００５９】
(図１５：ステップ４５１)
第２演算部タイマ部４５は、第２演算部データ記録テーブル６２の第２演算部タイマカウンタ値に０を代入し、処理を終了する。
(図１５：ステップ４５２)
【００６０】
第２演算部タイマ部４５は、第２演算部データ記録テーブル６２の第２演算部タイマカウンタ値に１を加算した値を書き込み、処理を終了する。
【００６１】
図１６は、第２演算部周期処理部４６の動作フローである。以下、図１６の各ステップについて説明する。
(図１６：ステップ４６０)
第２演算部周期処理部４６は、後述の図１７で説明する第２演算部サンプリング調整部４７を呼ぶ。これにより、第２演算部周期処理部４６は、サンプリングの周期とオフセットとを判別することができる。
【００６２】
(図１６：ステップ４６１)
第２演算部周期処理部４６は、後述の図２０で説明する第２演算部サンプリング部４０を呼ぶ。これにより、第２演算部周期処理部４６は、第１演算部記憶領域５に格納されたデータの最新値を取得できる。
【００６３】
図１７は、第２演算部サンプリング調整部４７の動作フローである。以下、図１７の各ステップについて説明する。
【００６４】
(図１７：ステップ４７０)
第２演算部サンプリング調整部は、第２演算部データ記録テーブル６２に格納された第２演算部タイマカウンタ値と、第２演算部データ管理テーブル６１で管理するサンプリング調整タイミングとを比較する。第２演算部タイマカウンタ値が、第２演算部サンプリング調整タイミングで割り切れる場合は、ステップ４７１に進み、それ以外は、処理を終了する。
【００６５】
(図１７：ステップ４７１)
第２演算部サンプリング調整部４７は、後述する図１７の第２演算部周期調整部４８を呼ぶ。これにより、第２演算部サンプリング調整部４７は、第１演算部記憶領域５に格納されたデータを取得するサンプリング周期を調整する。
【００６６】
(図１７：ステップ４７２)
第２演算部サンプリング調整部４７は、後述する図１８の第２演算部オフセット調整部４９を呼ぶ。これにより、第２演算部サンプリング調整部４７は、第１演算部記憶領域５に格納されたデータを取得するサンプリング周期のオフセットを調整する。
【００６７】
図１８は、第２演算部周期調整部４８の動作フローである。以下、図１８の各ステップについて説明する。
【００６８】
(図１８：ステップ４８０)
第２演算部周期調整部４８は、第２演算部サンプリング記録テーブル６３が管理するタイマカウンタ値フィールド６３１を参照し、第１演算部２が第１演算部記憶領域５を更新する周期を算出する。第２演算部周期調整部４８は、その算出結果を第２演算部サンプリング調整テーブル６４の割り込み周期フィールド６４１に記録する。このとき、格納先は、第２演算部データ記録テーブル６２の名称フィールド６２０に格納された最新値格納先ＩＤとする。ここで、割り込み周期とは、第１演算部２が単位時間あたりに第１演算部割り込み記録テーブル５３を更新する時間間隔を指す。割り込み周期は、第２演算部サンプリング記録テーブル６３が管理するタイマカウンタ値を積算した値を、第２演算部サンプリング記録テーブル６３が管理するＩＤの総数で割ることによって算出される。ただし、算出方法は、これに限らない。例えば、算出方法は、システムがおかれる外部状態に応じて第１演算部２が更新する頻度が不定となる、または周期が離散的に切り替わる場合は、タイマカウンタ値の最新値から一定期間のタイマカウンタ値の平均値でもよい。
【００６９】
(図１８：ステップ４８１)
第２演算部周期調整部４０８は、第２演算部サンプリング調整テーブル６０４の割り込み周期フィールド６４１から第１演算部２がデータを更新する割り込みの傾向を算出する。このとき、格納先は、第２演算部データ記録テーブル６０２の名称フィールド６０２００に格納された最新値格納先ＩＤに算出結果が記録される。ここで、割り込み傾向とは、前述した割り込み周期の単位時間当たりの変化率である。割り込み傾向は、例えば、最新の割り込み周期と前回の割り込み周期との差分、または最新の割り込み周期から一定期間内の割り込み周期の変化率である。
【００７０】
(図１８：ステップ４８２)
第２演算部周期調整部４８は、前述した割り込み傾向の絶対値と、その符号と第２演算部サンプリング周期調整テーブル６５とを比較し、サンプリング周期補正値を求める。第２演算部周期調整部４８は、更新周期にサンプリング周期補正値を加えた値を、第２演算部データ記録テーブル６２にサンプリング周期として記録し、処理を終了する。
【００７１】
図１９は、第２演算部オフセット調整部４９の動作フローである。以下、図１９の各ステップについて説明する。
【００７２】
(図１９：ステップ４９０)
第２演算部オフセット調整部４９は、第２演算部サンプリング記録テーブル６３のタイマカウンタ値６３１と、サンプリングタイマカウンタ値６３２とに基づいて、オフセット差を算出する。第２演算部オフセット調整部４９は、算出したオフセット差を第２演算部サンプリング調整テーブル６４のオフセット差フィールド６４３に記録する。このとき、第２演算部オフセット調整部４９は、第２演算部データ記録テーブル６２の名称フィールド６２０に格納された最新値格納先ＩＤに結果を記録する。
【００７３】
(図１９：ステップ４９１)
第２演算部オフセット調整部４９は、第２演算部サンプリング調整テーブル６４のオフセット差からオフセット差傾向を算出し、その結果を第２演算部サンプリング調整テーブル６４のオフセット差傾向６４４フィールドに記録する。このとき、第２演算部データ記録テーブル６２の名称フィールド６２０に格納された最新値格納先ＩＤに結果を記録する。ここで、オフセット傾向とは、前述したオフセット差の単位時間当たりの変化率である。オフセット傾向は、例えば、最新のオフセット差と前回のオフセット差の差分、または最新のオフセット差から一定期間内のオフセット差の変化率である。
【００７４】
(図１９：ステップ４９２)
第２演算部オフセット調整部４９は、算出したオフセット差傾向の絶対値と、その符号と第２演算部オフセット調整テーブル６６とに基づいて、オフセットを算出し、第２演算部データ記録テーブル６２にオフセットとして記録し、処理を終了する。
【００７５】
図２０は、第２演算部サンプリング部４０の動作フローである。以下、図２０の各ステップについて説明する。
【００７６】
(図２０：ステップ４００)
第２演算部サンプリング部４０は、第２演算部データ記録テーブル６２に基づいてサンプリング周期と、オフセットとを取得する。
【００７７】
(図２０：ステップ４０１)
第２演算部サンプリング部４０は、第２演算部データ記録テーブル６２から取得した第２演算部タイマカウンタ値とオフセットとに基づいて、サンプリングタイミングかどうかを判定する。第２演算部サンプリング部４０は、サンプリングのタイミングであれば、ステップ４０２へ進み、それ以外は、終了する。ここで、サンプリングタイミングであるかどうかを判定するには、第２演算部タイマカウンタ値にオフセットを加えた値を、第２演算部データ記録テーブル６２に格納されたサンプリング周期で割り切れるかどうかで判定する。
【００７８】
(図２０：ステップ４０２)
第２演算部サンプリング部４０は、第１演算部データ記録テーブル５２の最新値格納先ＩＤが示す第１演算部割り込み記録テーブル５３の最新値を取得する。最新値の取得後、第２演算部サンプリング部４０は、第２演算部データ記録テーブル６２が保持する最新値格納ＩＤが示す第２演算部サンプリング記録テーブル６３の値を更新する。更新後、第２演算部データ記録テーブル６３が格納する最新値格納ＩＤを更新し、処理を終了する。
【００７９】
以上のように、本実施例によれば、プログラムを実行する複数の演算部２，３と、複数の演算部２，３が周期的にアクセスする記録領域５と、外部情報を検出するセンサ８とを備え、複数の演算部２，３は、センサ８が検出した外部情報を受信し、当該受信した外部情報に基づいて、記憶領域５に対する処理を調整する。これにより、変動する外部情報に追従して、記憶領域５に対する処理を変更することができ、複数の演算部２，３のうちの何れかに負荷が集中することを抑制することができる。従って、相互に異なる２つの演算部２，３間で共有する資源となる記録領域５への競合を抑制し、演算部２，３の利用効率を向上することができる。
【００８０】
さらに、外部情報は、記録領域５に対する書込頻度であるので、記録領域５に対する書き込み頻度が高い場合でも、複数の演算部２，３のうちの何れかに集中する負荷を低減することができる。
【００８１】
さらに、複数の演算部２，３は、外部情報に基づいて、記憶領域５に対する処理の周期を調整するので、実行する処理の周期を調整するだけで、変動する外部情報に追従した処理に容易に変更することができる。
【００８２】
さらに、複数の演算部２，３は、外部情報に基づいて、記録領域５から外部情報を読み込む処理の周期を調整するので、記録領域５の更新周期を調整するだけで、変動する外部情報に追従した処理に容易に変更することができる。
【００８３】
さらに、複数の演算部２，３は、外部情報に基づいて、周期の位相を調整するので、実行する処理の調整幅が広がる。
【００８４】
さらに、複数の演算部２，３は、外部情報の時間変化率を算出し、当該算出した外部情報の時間変化率に基づいて、記憶領域５に対する処理を調整するので、将来の外部情報を予測でき、実行する処理の信頼性を高めることできる。
【符号の説明】
【００８５】
１…エンジン制御装置、２…第１演算部、３…第２演算部、５…第１演算部記憶領域、７…入出力回路、８…センサ
【図１】
2018163528.tif 000003
【図２】
2018163528.tif 000004
【図３】
2018163528.tif 000005
【図４】
2018163528.tif 000006
【図５】
2018163528.tif 000007
【図６】
2018163528.tif 000008
【図７】
2018163528.tif 000009
【図８】
2018163528.tif 000010
【図９】
2018163528.tif 000011
【図１０】
2018163528.tif 000012
【図１１】
2018163528.tif 000013
【図１２】
2018163528.tif 000014
【図１３】
2018163528.tif 000015
【図１４】
2018163528.tif 000016
【図１５】
2018163528.tif 000017
【図１６】
2018163528.tif 000018
【図１７】
2018163528.tif 000019
【図１８】
2018163528.tif 000020
【図１９】
2018163528.tif 000021
【図２０】
2018163528.tif 000022