(57)【要約】【課題】プログラムを各演算部で並列処理することにより処理効率を向上するマルチコアプロセッサの利点を損なうことなく、各演算部間で複数のデータのやり取りを実行する際に、複数のデータの同時性を維持することができる車両制御装置を提供する。【解決手段】車両制御値を算出する複数の演算処理を実行する車両制御装置であって、外部から所定のタイミングで入力される入力値に基づき、一組の制御変数を算出する変数演算処理を繰返し実行する一の演算部３と、一の演算部３で演算された一組の制御変数を取り込んで、車両制御値を算出する制御値演算処理を繰返し実行する他の演算部４と、一の演算部３で演算された一組の制御変数が他の演算部４で一括して取り込まれるように、制御値演算処理の実行タイミングを調整する調整部とを備えている。【選択図】図２
2009245009.tif 000002
【特許請求の範囲】
【請求項１】
車両制御値を算出する複数の演算処理を実行する車両制御装置であって、
外部から所定のタイミングで入力される入力値に基づき、一組の制御変数を算出する変数演算処理を繰返し実行する一の演算部と、
前記一の演算部で演算された一組の制御変数を取り込んで、車両制御値を算出する制御値演算処理を繰返し実行する他の演算部と、
前記一の演算部で演算された一組の制御変数が前記他の演算部で一括して取り込まれるように、前記制御値演算処理の実行タイミングを調整する調整部と、
を備えている車両制御装置。
【請求項２】
前記調整部が割込み制御部で構成され、
前記変数演算処理は少なくとも一組の制御変数の生成後に対応する制御変数更新ステータスをセットして、前記割込み制御部による前記他の演算部に対する割込みを起動し、
前記制御値演算処理は前記割込み制御部により起動され、少なくとも一組の制御変数を取り込み、その後、前記制御変数更新ステータスをリセットする請求項１記載の車両制御装置。
【請求項３】
前記調整部が割込み制御部で構成され、
前記変数演算処理は前記割込み制御部により所定周期で起動され、少なくとも一組の制御変数の生成前に対応する制御変数更新ステータスをリセットするとともに当該制御変数の生成後に前記制御変数更新ステータスをセットし、
前記制御値演算処理は前記割込み制御部により前記所定周期または前記所定周期より短い周期で起動され、前記制御変数更新ステータスがセットされているときに少なくとも一組の制御変数を取り込む請求項１記載の車両制御装置。
【請求項４】
前記制御値演算処理は演算処理の実行中に前記割込み制御部による当該他の演算部に対する割込みを禁止する請求項２または３記載の車両制御装置。
【請求項５】
前記一組の制御変数は、制御対象に設けられたセンサから入力されるデータ及び当該データが信頼できるか否かを示す状態データであり、または、他の車両制御装置から通信ラインを介して受信される一組の制御データである請求項１から４の何れかに記載の車両制御装置。
【請求項６】
外部から所定のタイミングで入力される入力値に基づき、一組の制御変数を算出する変数演算処理を繰返し実行する一の演算部と、
前記一の演算部で演算された一組の制御変数を取り込んで、車両制御値を算出する制御値演算処理を繰返し実行する他の演算部と、
前記一の演算部で演算された一組の制御変数が前記他の演算部で一括して取り込まれるように、前記制御値演算処理の実行タイミングを調整する調整部と、
を含み、互いに独立して複数の演算処理を実行する複数の演算部を備えたマルチコアプロセッサ。
【請求項７】
前記調整部が割込み制御部で構成され、
前記変数演算処理は少なくとも一組の制御変数の生成後に対応する制御変数更新ステータスをセットして、前記割込み制御部による前記他の演算部に対する割込みを起動し、
前記制御値演算処理は前記割込み制御部により起動され、少なくとも一組の制御変数を取り込み、その後、前記制御変数更新ステータスをリセットする請求項６記載のマルチコアプロセッサ。
【請求項８】
前記調整部が割込み制御部で構成され、
前記変数演算処理は前記割込み制御部により所定周期で起動され、少なくとも一組の制御変数の生成前に対応する制御変数更新ステータスをリセットするとともに当該制御変数の生成後に前記制御変数更新ステータスをセットし、
前記制御値演算処理は前記割込み制御部により前記所定周期または前記所定周期より短い周期で起動され、前記制御変数更新ステータスがセットされているときに少なくとも一組の制御変数を取り込む請求項６記載のマルチコアプロセッサ。
【請求項９】
前記制御値演算処理は演算処理の実行中に前記割込み制御部による当該他の演算部に対する割込みを禁止する請求項７または８記載のマルチコアプロセッサ。
【請求項１０】
各演算部にローカルバスを介してローカルメモリが接続されるとともに、一の演算部に接続されたローカルメモリに調停部を介して他の演算部がアクセス可能に構成され、
前記変数演算処理は少なくとも一組の制御変数を生成して当該一の演算部のローカルメモリに格納し、前記制御値演算処理は前記一の演算部に接続されたローカルメモリから少なくとも一組の制御変数を読み出して当該他の演算部のローカルメモリに格納する請求項６から９の何れかに記載のマルチコアプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、互いに独立して複数のタスクを実行する複数のＣＰＵコアを備えている車両制御装置、及びマルチコアプロセッサに関する。
【背景技術】
【０００２】
例えば、車両のエンジンを制御するＥＦＩ−ＥＣＵ等の電子制御装置では、エンジンに設けられた各種のセンサ等から入力された信号値に基づいて、車両の状態を推定し、最適な車両状態に維持するように各種のアクチュエータを駆動制御するプロセッサが組み込まれている。
【０００３】
このような電子制御装置に搭載されるプロセッサに要求される演算処理速度等の性能は、車両の電子化が進み、様々な機能が組み込まれるに連れて高くなり、近年では、実行ユニット、デコーダ、スケジューラ、キャッシュ等で構成される演算部としてのＣＰＵコアを複数備え、各ＣＰＵコアで共有される周辺リソースとともにパッケージ化したマルチコアプロセッサが開発されている。
【０００４】
マルチコアプロセッサを用いれば、シングルコアプロセッサより処理速度が向上し、車両の高機能化に対応してより高性能な車両制御が可能になるとともに、膨大で複雑な制御プログラムをＣＰＵコア単位に分割してより短期間で開発できるようになると見込まれている。
【０００５】
例えば、特許文献１には、メモリ素子のデータバスを複数のデータビット群（例えばデータバスが１６ビットである場合に上位８ビットと下位８ビット）に区分することによって複数のメモリ領域に区画し、複数のプロセッサによって、それぞれの前記データビット群を介し前記各メモリ領域にアクセスすることで、各プロセッサが同一のアドレスを指定する場合にも各プロセッサが同時にアクセスすることを可能とし、電源投入時やリセット時等の立ち上がりを速くすることができるプロセッサ装置が記載されている。
【０００６】
また、特許文献２には、マルチプロセッサシステムのメモリ記憶装置であって、各々独立しているが対応している複数のメモリセルを各々が含んだ第一及び第二のランダムアクセスメモリ（ＲＡＭ）手段と、転送制御信号に応答して一つの前記ＲＡＭ手段のメモリセルにおけるデジタルデータを他の前記ＲＡＭ手段の対応するメモリセルへ同時にコピーするための制御手段とを備えることで、マルチプロセッサシステム内の各プロセッサに夫々関連したメモリ間でデータを迅速に転送することができるデジタルメモリ記憶装置が記載されている。
【特許文献１】特開平１１−９６１２５号公報
【特許文献２】特開平２−２５９８６６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
ところで、ＥＦＩ−ＥＣＵ等の電子制御装置では、複数のデータの各々に同時性を要求されるデータ群が制御処理に用いられることが多い。このようなデータ群としては、例えば、ある時刻におけるエンジンの水温データと、当該時刻における水温データが通常取り得ない値であるか否かを示す状態データとの組合せがある。
【０００８】
シングルコアプロセッサでは、前記データ群をメモリへ記憶する際、記憶処理中に他の処理が実行されないようにする割込み禁止機能を使用することで、前記データ群の各データの記憶に時間差が生じないようにして、前記データ群の各データの同時性を維持していた。
【０００９】
しかし、マルチコアプロセッサでは、プログラムが各ＣＰＵコアで並列処理されており、マルチコアプロセッサを構成する一のＣＰＵコアは、自身に対して割込み禁止機能を使用することができるが、他のＣＰＵコアに対して割込み禁止機能を使用することができない。
【００１０】
その結果、以下に例示するような問題が発生する虞があった。一のＣＰＵコアに接続されたローカルメモリ（以下、ローカルメモリＡと記す。）に記憶された同時性を要するデータ群を他のＣＰＵコアで処理に使用する場合、ローカルメモリＡから他のＣＰＵコアに接続されたローカルメモリ（以下、ローカルメモリＢと記す。）へ前記データ群を転送する必要がある。
【００１１】
他のＣＰＵコアは、データ群をローカルメモリＡからローカルメモリＢへ転送する処理中に、他の処理が実行されないように、自身に対して割込み禁止機能を使用する。しかし、上述したように、他のＣＰＵコアは、一のＣＰＵコアに対して割込み禁止機能を使用することができない。よって、データ群の転送処理中に、一のＣＰＵコアにおいて外部からデータ群の更新データが入力される処理が実行され、ローカルメモリＡに記憶されているデータ群の内容に変更が生じてしまう虞がある。その場合、他のＣＰＵコアによってローカルメモリＢに取り込まれたデータ群は、一部がローカルメモリＡにおける内容変更前のデータであり、その他がローカルメモリＡにおける内容変更後のデータである虞がある。つまり、前記データ群の同時性が維持されていない虞があったのである。
【００１２】
上述の例において、前記データ群の転送処理中に、他のＣＰＵコアが自身（他のＣＰＵコア）に対して割込み禁止機能を使用するとともに、一のＣＰＵコアが自身（一のＣＰＵコア）に対して割込み禁止機能を使用することで、前記データ群の同時性を維持することが考えられるが、マルチコアプロセッサの全てのＣＰＵに対して割込み禁止機能が使用されると、データ転送の度にマルチコアプロセッサの処理を停止することとなり、プログラムを各ＣＰＵコアで並列処理することにより処理効率を向上するというマルチコアプロセッサの利点が損なわれてしまう。
【００１３】
本発明の目的は、上述した従来の問題点に鑑み、プログラムを各演算部で並列処理することにより処理効率を向上するマルチコアプロセッサの利点を損なうことなく、各演算部間で複数のデータのやり取りを実行する際に、複数のデータの同時性を維持することができる車両制御装置及びマルチコアプロセッサを提供する点にある。
【課題を解決するための手段】
【００１４】
上述の目的を達成するため、本発明による車両制御装置の特徴構成は、車両制御値を算出する複数の演算処理を実行する車両制御装置であって、外部から所定のタイミングで入力される入力値に基づき、一組の制御変数を算出する変数演算処理を繰返し実行する一の演算部と、前記一の演算部で演算された一組の制御変数を取り込んで、車両制御値を算出する制御値演算処理を繰返し実行する他の演算部と、前記一の演算部で演算された一組の制御変数が前記他の演算部で一括して取り込まれるように、前記制御値演算処理の実行タイミングを調整する調整部と、を備えている点にある。
【００１５】
上述の構成によれば、調整部は、一の演算部において制御変数の一部のみが変更された状態で、制御変数が他の演算部に取り込まれて記憶されることのないように、他の演算部によって制御値演算処理が実行されるタイミングを調整する。換言すると、調整部は、一の演算部において制御変数の全てが変更完了した後の状態で、他の演算部に取り込まれて記憶されるように、他の演算部によって制御値演算処理が実行されるタイミングを調整する。
【発明の効果】
【００１６】
以上説明した通り、本発明によれば、プログラムを各演算部で並列処理することにより処理効率を向上するマルチコアプロセッサの利点を損なうことなく、各演算部間で複数のデータのやり取りを実行する際に、複数のデータの同時性を維持することができる車両制御装置を提供することができるようになった。
【発明を実施するための最良の形態】
【００１７】
以下、二個の演算部としてのＣＰＵコアを備えた本発明によるマルチコアプロセッサが、車両制御装置として車両のエンジンを制御する電子制御装置（以下、ＥＦＩ−ＥＣＵと記す。）に組み込まれた実施形態について説明する。
【００１８】
図１に示すように、ＥＦＩ−ＥＣＵ１は、マルチコアプロセッサ２と、各種センサ等からのアナログ信号やデジタル信号を入力する入力インタフェース回路としての外付けＩＣ１１と、周辺回路等とを備えて構成されている。
【００１９】
マルチコアプロセッサ２には、スロットルポジションセンサ等からのデジタル信号が外付けＩＣ１１を介して入力され、バッテリ、バキュームセンサ、吸気温センサ、水温センサ、及び酸素センサ等からのアナログ信号が外付けＩＣ１１に備えられたＡ／Ｄコンバータ１２でデジタル信号に変換されて入力され、エンジン回転数信号や車速パルス信号等のパルス信号並びにスタータ信号等が入力される。また、マルチコアプロセッサ２からは、点火プラグへ出力される点火信号やインジェクタへ出力される燃料の噴射信号等のデジタル信号等が出力される。
【００２０】
図２に示すように、マルチコアプロセッサ２は、二個の演算部としてのＣＰＵコア３、４と、夫々がローカルバスを介して各ＣＰＵコア３、４に接続され各ＣＰＵコア３、４に帰属しているローカルメモリとしての二つのＲＡＭ３１、４１と、各ＣＰＵコア３、４で実行される制御プログラムが格納された共用のＲＯＭ５と、外付けＩＣ１１等を介して信号を入力すると共に、入力された信号に基づいてＣＰＵコア３、４で演算された結果としての信号を各種アクチュエータ等へ出力する入出力インタフェース回路６と、後述するタイマ割込みの発生のための時間をカウントするタイマ回路７等を備え、これらが一つのパッケージに組み込まれている。
【００２１】
また、マルチコアプロセッサ２は、調停部８１、８２、８３を備えている。調停部８１は、各ＣＰＵコア３、４によるＲＯＭ５へのアクセスが重複したときに双方のアクセスを調停する回路であり、調停部８２は、各ＣＰＵコア３、４による入出力インタフェース回路６へのアクセスが重複したときに双方のアクセスを調停する回路である。
【００２２】
例えば、調停部８１、８２は、より早くＲＯＭ５または入出力インタフェース回路６へアクセスしたＣＰＵコアによるアクセスを優先し、早くアクセスしたＣＰＵコアのアクセス終了を待って、遅くアクセスしたＣＰＵコアによるアクセスを開始させるように構成されている。
【００２３】
調停部８３は、各ＣＰＵコア３、４によるＲＡＭ３１へのアクセスが重複したとき、または、各ＣＰＵコア３、４によるＲＡＭ４１へのアクセスが重複したときに、双方のアクセスを調停する回路である。例えば、調停部８３は、ＲＡＭ３１へのアクセス重複時には、ＣＰＵコア３によるアクセスをＣＰＵコア４によるアクセスより優先し、ＲＡＭ４１へのアクセス重複時には、ＣＰＵコア４によるアクセスをＣＰＵコア３によるアクセスより優先するように構成されている。
【００２４】
ＣＰＵコア３、４は、ＲＯＭ５に格納された制御プログラムに従って、入出力インタフェース６に入力されたデジタル信号、パルス信号、及び各種のセンサ出力等を取り込み、それらの値に基づいてエンジンを所定状態に駆動制御するための制御信号、つまり車両制御値を生成して、入出力インタフェース回路６を介して、インジェクタや点火プラグ等に制御信号を出力する。例えば、ＣＰＵコア３、４は、スロットルポジションセンサの入力値に対応した回転数にエンジンを制御するために、必要な燃料噴射量を演算導出してインジェクタを制御する。
【００２５】
つまり、各ＣＰＵコア３、４は、ＲＯＭ５に記憶されている制御プログラム、各種の入出力信号、及び演算データ等を、自身に備えられたキャッシュメモリ３２、４２や自身に帰属するＲＡＭ３１、４１に展開すると共に、調停部８３を介して他方のＣＰＵコアに帰属するＲＡＭ３１、４１のデータを参照して、必要な演算処理や入出力処理（以下、タスクとも記す。）を互いに独立して、或は、互いに協働して実行することによりエンジンを制御する。即ち、各ＣＰＵコア３、４は、互いに独立して複数のタスクを実行するように構成されている。
【００２６】
上述の制御プログラムは、燃料噴射量の演算、燃料噴射タイミングの演算等、エンジンを所定状態に駆動制御するための各種の制御処理を実行するプログラムと、各種のセンサの検出信号に基づいてエンジンまたはセンサに異常が生じているか否かを検出する異常検出処理を実行するプログラム等とで構成されている。
【００２７】
以上の説明より、ＥＦＩ−ＥＣＵ１は、車両制御値を算出する複数の演算処理を実行している。
【００２８】
ＥＦＩ−ＥＣＵ１は、機能ブロックとして、以下に説明する割込み制御部と、ＣＰＵコア３、４が制御プログラムを実行することによって燃料噴射量の演算、インジェクタの駆動制御、各種の異常検出処理等の夫々一纏りの処理、つまりタスクを割込み制御部の制御下でシーケンシャルに実行するイベント実行型の制御部とを備えて構成されている。
【００２９】
入出力インタフェース回路６には、図３に示すような、タスクを割込み制御部の制御下でシーケンシャルに実行するために、各種状態を格納しておく複数のレジスタが設けられている。
【００３０】
つまり、入出力インタフェース回路６には、割込みレジスタＩＲ、優先順位設定レジスタＰＲ、及び割込みマスクレジスタＭＫ等が所定個数（図３ではｎ個とする。）の割込み要因毎に設けられており、各ＣＰＵコア３、４について割込み禁止レジスタＩＤＲが設けられており、制御変数の数に基づく個数（図３ではｍ個とする。）の制御変数設定レジスタＣＲが設けられている。そして、割込み制御部は、これらレジスタにフラグをセットまたはリセットすることによってマルチコアプロセッサ２に対する割込み処理を制御する。
【００３１】
割込みレジスタＩＲには、割込み要因として、エンジン回転数信号や車速パルス信号の入力エッジで起動される外部パルス割込み、Ａ／Ｄコンバータ１２によるＡＤ変換時に起動されるＡ／Ｄ変換割込み、所定の時間間隔で起動されるタイマ割込み等が発生すると、夫々に対応するタスク（例えば、後述する変数生成タスクや変数取込タスク）を起動するための割込み要求フラグがセットされる。尚、割込み要求フラグは、割込みが受け付けられた場合にリセットされ、その後、対応するタスクが起動される。
【００３２】
優先順位設定レジスタＰＲには、複数の割込みレジスタＩＲに同時に割込み要求フラグがセットされたときに優先的に処理すべきタスクを起動するように優先順位が設定される。
【００３３】
割込みマスクレジスタＭＫは、マスクフラグがセットされたときには、対応する割込みレジスタＩＲに要求フラグがセットされても、その割込みを禁止するレジスタであり、ＣＰＵコア３への割込みを禁止する割込みマスクレジスタＭＫＣＰＵ３と、ＣＰＵコア４への割込みを禁止する割込みマスクレジスタＭＫＣＰＵ４とで構成されている。
【００３４】
例えば、任意の割込み処理に対応したタスクが実行されているときに、ある割込み処理に対応した割込みマスクレジスタＭＫＣＰＵ３にマスクフラグがセットされているとする。すると、当該タスクの実行中に当該ある割込み処理に対応した割込みレジスタＩＲに割込み要求フラグがセットされても、ＣＰＵコア３では、当該ある割込み処理は実行されないように制御される。尚、本例では、割込みマスクレジスタＭＫＣＰＵ４にはマスクフラグがセットされていないので、ＣＰＵコア４では、当該ある割込み処理が実行される。
【００３５】
割込み禁止レジスタＩＤＲは、ＣＰＵコア３についての割込み禁止レジスタＩＤＲＣＰＵ３と、ＣＰＵコア４についての割込み禁止レジスタＩＤＲＣＰＵ４とで構成されている。
【００３６】
割込み禁止レジスタＩＤＲＣＰＵ３に禁止フラグがセットされると、ＣＰＵコア３に対する全ての割込みが禁止され、割込み禁止レジスタＩＤＲＣＰＵ４に禁止フラグがセットされると、ＣＰＵコア４に対する全ての割込みが禁止される。
【００３７】
制御変数設定レジスタＣＲには、後述する制御変数更新ステータスがセットされる。
【００３８】
ＣＰＵコア３とＣＰＵコア４はエンジンの制御を分担して実行する。例えば、ＣＰＵコア３は、ＲＯＭ５に格納された制御プログラムに基づいて入出力制御を担当して実行するように構成され、ＣＰＵコア４は、ＲＯＭ５に格納された制御プログラムに基づいて演算制御を担当して実行するように構成されている。
【００３９】
以下に詳述する。ＣＰＵコア３は、入出力インタフェース回路６に入力されたデジタル信号、パルス信号、及び各種のセンサ出力等を取り込んでＲＡＭ３１に記憶する処理、つまりデータを生成する処理（以下、処理ＰＡと記す。）を所定時間毎にまたは不定期に実行する。
【００４０】
ここで、ＣＰＵコア３によって取り込まれたデジタル信号、パルス信号、及び各種のセンサ出力等のデータには、時々刻々変化する変数データであってＣＰＵコア３によって所定時間毎にまたは不定期に取り込まれて制御に使用される制御変数がある。また、制御変数は、互いに関連する少なくとも二個の制御変数、つまり少なくとも一組の制御変数であってもよい。また、ＣＰＵコア３が、個別に入力された複数の制御変数を、一組の制御変数とする演算を行なう構成であってもよい。尚、一組の制御変数については後述する。
【００４１】
以上より、ＣＰＵコア３は、処理ＰＡを実行するときには、少なくとも一組の制御変数を生成する変数演算処理としての変数生成タスクを繰返し実行する一のＣＰＵコアとして構成されている。
【００４２】
換言すると、ＣＰＵコア３は、外部から所定のタイミングで入力される入力値に基づき、一組の制御変数を算出する変数演算処理を繰返し実行する一のＣＰＵコアとして構成されている。ここで、外部から所定のタイミングで入力される入力値は、入出力インタフェース回路６に入力されたデジタル信号、パルス信号、及び各種のセンサ出力等である。
【００４３】
ＣＰＵコア４は、演算制御を実行するために、ＣＰＵコア３によって入出力インタフェース回路６から取り込まれＲＡＭ３１に記憶されているデジタル信号、パルス信号、及び各種のセンサ出力等のデータをＲＡＭ３１より取り込んでＲＡＭ４１に記憶する処理、つまりデータを取り込む処理（以下、処理ＰＢと記す。）を所定時間毎にまたは不定期に実行する。
【００４４】
つまり、ＣＰＵコア４は、処理ＰＢを実行するときには、一のＣＰＵコアとしてのＣＰＵコア３で演算された少なくとも一組の制御変数を取り込む制御値演算処理としての変数取込タスクを繰返し実行する他のＣＰＵコアとして構成されている。
【００４５】
ＣＰＵコア３は、処理ＰＡの他に、ＣＰＵコア４の演算によって生成されＲＡＭ４１に記憶されているデータをＲＡＭ４１より取り込んでＲＡＭ３１に記憶する処理、つまりデータを取り込む処理、及び、入出力インタフェース回路６を介してインジェクタや点火プラグ等に出力する処理（以下、処理ＰＣと記す。）を所定時間毎にまたは不定期に実行する。
【００４６】
つまり、ＣＰＵコア３は、処理ＰＣを実行するときには、一のＣＰＵコアとしてのＣＰＵコア４で生成された少なくとも一組の制御変数を取り込む変数取込タスクを繰返し実行する他のＣＰＵコアとして構成されている。
【００４７】
ＣＰＵコア４は、処理ＰＢの他に、処理ＰＢにおいて記憶したデータに基づいてエンジンを所定状態に駆動制御するためのデータ、つまり車両制御値を生成して、ＲＡＭ４１に記憶する処理（以下、処理ＰＤと記す。）を所定時間毎にまたは不定期に実行する。
【００４８】
つまり、ＣＰＵコア４は、処理ＰＤを実行するときには、ＣＰＵコア３で演算された一組の制御変数を取り込んで、車両制御値を算出する制御値演算処理を繰返し実行する他のＣＰＵコアとして構成されている。
【００４９】
また、車両制御値が一組の制御変数としても認識される場合、ＣＰＵコア４は、処理ＰＤを実行するときには、少なくとも一組の制御変数を生成する変数生成タスクを繰返し実行する一のＣＰＵコアとして構成されているといえる。
【００５０】
以上の説明より、マルチコアプロセッサ２は、各ＣＰＵコア３、４にローカルバスを介してローカルメモリとしてのＲＡＭ３１、４１が接続されるとともに、一のＣＰＵコア３（ＣＰＵコア４）に接続されたローカルメモリに調停部８３を介して他のＣＰＵコア４（またはＣＰＵコア３）がアクセス可能に構成され、変数生成タスクは少なくとも一組の制御変数を生成して当該一のＣＰＵコア３（ＣＰＵコア４）のＲＡＭ３１（ＲＡＭ４１）に格納し、変数取込タスクは一のＣＰＵコア３（ＣＰＵコア４）に接続されたＲＡＭ３１（ＲＡＭ４１）から少なくとも一組の制御変数を読み出して当該他のＣＰＵコア４（ＣＰＵコア３）のＲＡＭ４１（ＲＡＭ３１）に格納するように構成されている。
【００５１】
本実施形態において一組の制御変数は、制御対象としてのエンジンに設けられたセンサから入力されるデータ及び当該データが信頼できるか否かを示す状態データであり、または、他の車両制御装置から通信ラインを介して受信される一組の制御データである。
【００５２】
センサから入力されるデータとしては、例えば、エンジンの冷却水の温度を検出する水温センサの検出値（電圧値）のアナログ信号を、Ａ／Ｄコンバータ１２を介してデジタル信号に変換し、マルチコアプロセッサ２において図４に示すようなセンサ特性を示すマップデータ（例えばＲＯＭ５等に記憶されている。）により電圧値から温度値に変換された水温データがある。
【００５３】
状態データとしては、例えば、デジタル信号が通常とり得ない値であるか否かを示したフェールデータがある。当該フェールデータは、図４に示すように、デジタル信号が網掛け部の範囲の値であるときには、デジタル信号が通常とり得ない値であるとしてフェールデータは「１」にセットされ、デジタル信号が網掛け部以外の範囲の値であるときは、デジタル信号が通常とり得る値であるとしてフェールデータは「０」にセットされる。
【００５４】
一組の制御データとしては、例えば、信号処理を行なう他の車両制御装置がアンテナ等から受信して、ＥＦＩ−ＥＣＵに転送されてきた通信入力信号がある。詳述すると、他の車両制御装置において、所定ビット（例えば３２ビット）の送信フレームが所定フレーム数（例えば２５６フレーム）よりなる転送ブロックの各送信フレームに、通信入力信号が割り付けられた場合、一つの送信フレームに割り付けられた通信入力信号が制御データであり、転送ブロックにおける各送信フレームに割り付けられた通信入力信号の各々で一組の制御データが構成される。
【００５５】
センサから入力されるデータ及び状態データ、並びに一組の制御データは、データの同時性が必要である。例えば、ある時刻の水温データに対応するフェールデータは、当該ある時刻と異なる時刻の水温データと一組の制御データを構成すると同時性を失っていることとなる。そして、同時性の必要な一組の制御データを一組の制御変数として、ＣＰＵコア３、４によって実行される変数生成タスク及び変数取込タスクにおいて用いることは、本発明の目的と合致しており、好適な適用例である。
【００５６】
ＥＦＩ−ＥＣＵ１は、機能ブロックとして、一のＣＰＵコア、つまりＣＰＵコア３（またはＣＰＵコア４）で演算された少なくとも一組の制御変数が他のＣＰＵコア、つまりＣＰＵコア４（またはＣＰＵコア３）で一括して取り込まれるように、変数取込タスクの実行タイミングを調整する調整部（以下の説明ではタイミング調整部と記す。）を備えて構成されており、本実施形態において、タイミング調整部は割込み制御部で構成されている。
【００５７】
以下、タイミング調整部が割込み制御部で構成されている場合の、二つの実施例について説明する。
【００５８】
以下、第一の実施例について説明する。第一の実施例の場合、変数生成タスクは少なくとも一組の制御変数の生成後に対応する制御変数更新ステータスをセットして、割込み制御部による他のＣＰＵコア、つまりＣＰＵコア４に対する割込みを起動し、変数取込タスクは割込み制御部により起動され、少なくとも一組の制御変数を取り込み、その後、制御変数更新ステータスをリセットするように構成されている。
【００５９】
尚、第一の実施例では、一のＣＰＵコアはＣＰＵコア３であり、他のＣＰＵコアはＣＰＵコア４であるとして説明しているが、このような構成に限らず、例えば、一のＣＰＵコアがＣＰＵコア４であり、他のＣＰＵコアがＣＰＵコア３である構成でもよい。
【００６０】
また、他のＣＰＵコアによって変数取込タスクが実行されているとき、当該変数取込タスクはタスクの実行中に割込み制御部による当該他のＣＰＵコアに対する割込みを禁止するように構成されている。
【００６１】
以下に、第一の実施例の場合の変数生成タスク及び変数取込タスクの処理について、図５及び図６に示すフローチャートに基づいて説明する。
【００６２】
尚、以下の説明では、変数生成タスクがＣＰＵコア３によって実行され、変数取込タスクがＣＰＵコア４によって実行される場合について説明する。この場合、変数取込タスクが実行されないように割込みマスクレジスタＭＫ１ＣＰＵ３にはマスクフラグがセットされており、変数取込タスクが実行されるように割込みマスクレジスタＭＫ１ＣＰＵ４にはマスクフラグがセットされていない。
【００６３】
また、以下の説明では、変数生成タスクによって起動される割込みに対応する割込みレジスタＩＲは、ｎ個の割込みレジスタＩＲ１〜ＩＲｎのうち、割込みレジスタＩＲ１であるとする。
【００６４】
更に、以下の説明では、変数生成タスクは、データａ、ｂの二個のデータよりなる一組の制御変数を生成する処理、データｃ〜ｆの四個のデータよりなる一組の制御変数を生成する処理、及びデータｇ〜ｉの三個のデータよりなる一組の制御変数を生成する処理で構成されており、各処理に対応して制御変数設定レジスタＣＲ１、ＣＲ２、ＣＲ３が設けられている。
【００６５】
ＣＰＵコア３によって変数生成タスクの実行が開始されると、変数生成タスクは、割込み禁止レジスタＩＤＲＣＰＵ３に禁止フラグをセットして、変数生成タスクの実行中にＣＰＵコア３への他の割込み処理を禁止する（ＳＡ１）。
【００６６】
ここで、変数生成タスクの実行開始タイミングとしては、例えば、マルチコアプロセッサ２の入出力インタフェース回路６に入力されたデータａ、ｂの値がＲＡＭ３１に記憶されているデータａ，ｂと比較して所定値以上変化したときや、所定の時間間隔で起動されるタイマ割込みが発生したとき等がある。
【００６７】
次に、変数生成タスクは、入出力インタフェース回路６に入力されたデータａ，ｂを取り込んでＲＡＭ３１に記憶するデータａ，ｂの更新処理を行ない（ＳＡ２）、制御変数設定レジスタＣＲ１に制御変数（データａ，ｂ）が更新されたことを示す制御変数更新ステータスをセットする（ＳＡ３）。
【００６８】
その後、変数生成タスクは、割込み制御部による割込みレジスタＩＲ１に変数取込タスクを起動するための割込み要求フラグをセットして（ＳＡ４）、ＣＰＵコア３への他の割込み処理を許可するために、割込み禁止レジスタＩＤＲＣＰＵ３にセットされている禁止フラグをリセットする（ＳＡ５）。
【００６９】
尚、変数生成タスクは、データｃ〜ｆまたはデータｇ〜ｉについても、上述したのと同様のまたは異なる実行開始タイミングで、ステップＳＡ１〜ＳＡ５と同様の処理を実行する（ＳＢ１〜ＳＢ５、ＳＣ１〜ＳＣ５）。
【００７０】
割込みレジスタＩＲ１に割込み要求フラグがセットされると（ＳＡ４）、ＣＰＵコア４によって変数取込タスクの実行が開始され、変数取込タスクは、割込み禁止レジスタＩＤＲＣＰＵ４に禁止フラグをセットして、変数取込タスクの実行中にＣＰＵコア４への他の割込み処理を禁止する（ＳＤ１）。
【００７１】
次に、変数取込タスクは、制御変数設定レジスタＣＲ１に制御変数更新ステータスがセットされている場合（ＳＤ２）、ステップＳＡ２においてＣＰＵコア３によって入出力インタフェース回路６から取り込まれＲＡＭ３１に記憶されている更新されたデータａ，ｂをＲＡＭ３１より取り込んでＲＡＭ４１に記憶する処理、つまりデータａ，ｂの取込処理を行ない（ＳＤ３）、制御変数設定レジスタＣＲ１にセットされている制御変数更新ステータスをリセットする（ＳＤ４）。
【００７２】
尚、変数取込タスクは、データｃ〜ｆまたはデータｇ〜ｉについても、ステップＳＤ２〜ＳＤ４と同様の処理を実行する（ＳＤ５〜ＳＤ１０）。
【００７３】
そして、変数取込タスクは、ＣＰＵコア４への他の割込み処理を許可するために、割込み禁止レジスタＩＤＲＣＰＵ４にセットされている禁止フラグをリセットする（ＳＤ１１）。
【００７４】
上述の構成によれば、変数取込タスクは、制御変数更新ステータスのセットを確認してから、つまり変数生成タスクによる制御変数生成処理の終了を確認してから、制御変数取込処理の実行を開始するので、少なくとも一組の制御変数中の一部の制御変数のみ更新された状態で変数取込タスクが実行開始されることを防止することができる。
【００７５】
尚、一のＣＰＵにおける変数生成タスクの終了後の他のＣＰＵにおける変数取込タスクの実行中に、一のＣＰＵにおいて別の変数生成タスクが実行されても、当該別の変数生成タスクの終了後には、再び制御変数更新ステータスがセットされることによって、変数取込処理が実行されるので、一部の制御変数のみ更新された状態での変数取込を防止することができる。
【００７６】
以下、第二の実施例について説明する。第二の実施例の場合、変数生成タスクは割込み制御部により所定周期で起動され、少なくとも一組の制御変数の生成前に対応する制御変数更新ステータスをリセットするとともに当該制御変数の生成後に制御変数更新ステータスをセットし、変数取込タスクは割込み制御部により所定周期または所定周期より短い周期で起動され、制御変数更新ステータスがセットされているときに少なくとも一組の制御変数を取り込むように構成されている。
【００７７】
また、第一の実施例と同様に、他のＣＰＵコアによって変数取込タスクが実行されているとき、当該変数取込タスクはタスクの実行中に割込み制御部による当該他のＣＰＵコアに対する割込みを禁止するように構成されている。
【００７８】
以下に、第二の実施例の場合の変数生成タスク及び変数取込タスクの処理について、図７及び図８に示すフローチャートに基づいて説明する。
【００７９】
以下の説明でも、第一の実施例の場合と同様、変数生成タスクがＣＰＵコア３によって実行され、変数取込タスクがＣＰＵコア４によって実行される場合について説明する。
【００８０】
また、以下の説明では、タイマ割込みに対応する割込みレジスタＩＲは、ｎ個の割込みレジスタＩＲ１〜ＩＲｎのうち、割込みレジスタＩＲ２であるとする。
【００８１】
更に、以下の説明では、変数生成タスクは、データａ、ｂの二個のデータよりなる一組の制御変数を生成する処理、データｃ〜ｆの四個のデータよりなる一組の制御変数を生成する処理、及びデータｇ〜ｉの三個のデータよりなる一組の制御変数を生成する処理で構成されており、各処理に対応して制御変数設定レジスタＣＲ４、ＣＲ５、ＣＲ６が設けられている。そして、変数取込タスクは、データａ，ｂを４ｍｓｅｃ毎に更新し、データｃ〜ｆを８ｍｓｅｃ毎に更新し、データｇ〜ｉを１６ｍｓｅｃ毎に更新する処理であるとする。
【００８２】
ＣＰＵコア３によって変数生成タスクの実行が開始されると、変数生成タスクは、割込み禁止レジスタＩＤＲＣＰＵ３に禁止フラグをセットして、変数生成タスクの実行中にＣＰＵコア３への他の割込み処理を禁止する（ＳＥ１）。
【００８３】
ここで、変数生成タスクの実行開始タイミングとしては、第一の実施例の場合と同様、例えば、マルチコアプロセッサ２の入出力インタフェース回路６に入力されたデータａ、ｂの値がＲＡＭ３１に記憶されているデータａ，ｂと比較して所定値以上変化したときや、所定の時間間隔で起動されるタイマ割込みが発生したとき等がある。
【００８４】
尚、変数生成タスクがタイマ割込みによって実行開始される場合、変数生成タスクで生成されてＲＡＭ３１に記憶される制御変数を、変数取込タスクで漏れなくＲＡＭ４１に取り込む必要性から、変数取込タスクの起動周期は変数生成タスクの起動周期と同一またはより短い周期に設定されており、第二の実施例では、変数取込タスクの起動周期は、１６ｍｓｅｃ以上に設定されている。
【００８５】
次に、変数生成タスクは、制御変数設定レジスタＣＲ４に制御変数（データａ，ｂ）の更新されたことを示す、つまり制御変数が更新中でないことを示す制御変数更新ステータスをリセットすることで、制御変数が更新中であることを示してから（ＳＥ２）、入出力インタフェース回路６に入力されたデータａ，ｂを取り込んでＲＡＭ３１に記憶するデータａ，ｂの更新処理を行なう（ＳＥ３）。
【００８６】
変数生成タスクは、ステップＳＥ３の更新処理が完了すると、ステップＳＥ２でリセットされた制御変数更新ステータスをセットすることで、制御変数の更新が完了したことを示し（ＳＥ４）、ＣＰＵコア３への他の割込み処理を許可するために、割込み禁止レジスタＩＤＲＣＰＵ３にセットされている禁止フラグをリセットする（ＳＥ５）。
【００８７】
尚、変数生成タスクは、データｃ〜ｆ及びデータｇ〜ｉについても、上述したのと同様のまたは異なる実行開始タイミングで、ステップＳＥ１〜ＳＥ５と同様の処理を実行する（ＳＦ１〜ＳＦ５、ＳＧ１〜ＳＧ５）。
【００８８】
タイマ回路７は所定時間毎（本実施例では１ｍｓｅｃ毎）にカウントアップするタイマカウンタＴＣで構成されている（ＳＨ１）。
【００８９】
そして、タイマカウンタＴＣのカウント値が、変数取込タスクで予め設定された所定値の倍数となると、割込み制御部によるタイマ割込みが発生して変数取込タスクが起動する。ここで、本実施例において、変数取込タスクで予め設定された所定値は、４ｍｓｅｃ、８ｍｓｅｃ、及び１６ｍｓｅｃである（ＳＨ２、ＳＨ７、ＳＨ１２）。尚、本実施例では、ステップＳＨ２、ＳＨ７、ＳＨ１２に示すように、左辺であるカウント値と右辺との間で論理和を取る論理演算の右辺を「０」、「１」、「２」と異なる値にすることで、データａ，ｂとデータｃ〜ｆとデータｇ〜ｉの各取込処理が同タイミングとならないようにしている。
【００９０】
ステップＳＨ２の論理演算が成立することでタイマ割込みが発生して変数生成タスクの実行が開始されると、変数取込タスクは、割込み禁止レジスタＩＤＲＣＰＵ４に禁止フラグをセットして、変数生成タスクの実行中にＣＰＵコア４への他の割込み処理を禁止する（ＳＨ３）。
【００９１】
次に、変数取込タスクは、制御変数設定レジスタＣＲ１に制御変数更新ステータスがセットされているか否かを確認する（ＳＤ２）。つまり、ステップＳＥ３のデータａ，ｂの更新処理が完了しているか否かを確認する。
【００９２】
そして、変数取込タスクは、制御変数更新ステータスがセットされていれば、ステップＳＥ３においてＣＰＵコア３によって入出力インタフェース回路６から取り込まれＲＡＭ３１に記憶されている更新されたデータａ，ｂをＲＡＭ３１より取り込んでＲＡＭ４１に記憶する処理、つまりデータａ，ｂの取込処理を行なう（ＳＨ５）。
【００９３】
その後、変数取込タスクは、ＣＰＵコア４への他の割込み処理を許可するために、割込み禁止レジスタＩＤＲＣＰＵ４にセットされている禁止フラグをリセットする（ＳＨ６）。
【００９４】
尚、変数取込タスクは、データｃ〜ｆ及びデータｇ〜ｉについても、ステップＳＨ２〜ＳＨ６と同様の処理を実行する（ＳＨ７〜ＳＨ１６）。
【００９５】
上述の構成によれば、変数取込タスクは、変数生成タスクによる制御変数更新処理の終了を待ってから制御変数取込処理を実行するので、変数取込タスクは、所定周期で確実に制御変数を取り込むことができる。
【００９６】
以下、別実施形態について説明する。上述の実施形態では、割込みマスクレジスタＭＫ及び割込み禁止レジスタＩＤＲが各ＣＰＵコアについて設けられている構成について説明したが、他のレジスタも各ＣＰＵコアについて設けられている構成であってもよい。
【００９７】
例えば、優先順位設定レジスタＰＲを各ＣＰＵコアについて設けることで、当該優先順位設定レジスタＰＲに対応する割込み処理が一のＣＰＵで実行される場合には優先度を高くし、他のＣＰＵで実行される場合には優先度を低くするような設定が可能となる。
【００９８】
上述の実施形態では、ＣＰＵコア３が、ＲＯＭ５に格納された制御プログラムに基づいて入出力制御を担当して実行し、ＣＰＵコア４が、ＲＯＭ５に格納された制御プログラムに基づいて演算制御を担当して実行する構成について説明したが、各ＣＰＵコア３、４の担当はこれに限らない。例えば、ＣＰＵコア４が入出力制御を担当しＣＰＵコア３が演算制御を担当する構成や、ＣＰＵコア３が入力制御及び一部の演算制御を担当しＣＰＵコア４が出力制御及びＣＰＵコア３の担当以外の演算制御を担当する構成等であってもよい。
【００９９】
上述の実施形態では、マルチコアプロセッサが二個のＣＰＵコアを備えている構成について説明したが、ＣＰＵコアは二個に限らず、三個以上であってもよい。ＣＰＵコアが三個で構成されたマルチコアプロセッサの機能ブロック構成は、例えば、図２に示す構成にＣＰＵコア１００及びＲＡＭ１０１を加えた図９に示すような構成となる。
【０１００】
上述の実施形態では、複数のＣＰＵコアを備えたマルチコアプロセッサが、ＥＦＩ−ＥＣＵ１に組み込まれた構成について説明したが、単一のＣＰＵコアを備えた複数のシングルコアプロセッサが、ＥＦＩ−ＥＣＵ１に組み込まれた構成であってもよい。
【０１０１】
このような構成のＥＦＩ−ＥＣＵ１の機能ブロック構成は、例えば、図１０に示すように、夫々がＣＰＵコア２０１、３０１と、ＲＯＭ２０２、３０２と、ＲＡＭ２０３、３０３と、調停部２０４、３０４と、入出力インタフェース回路２０５、３０５とを備えたシングルコアプロセッサ２００、３００が、外付けＩＣ１１やインジェクタ等と接続されている構成となる。
【０１０２】
そして、各ＣＰＵコア２０１、３０１によるＲＡＭ２０３へのアクセスが重複したとき、または、各ＣＰＵコア２０１、３０１によるＲＡＭ３０３へのアクセスが重複したときには、各シングルコアプロセッサ２００、３００の調停部２０４、３０４相互間でやり取りを行なうことで、双方のアクセスを調停する。尚、何れか一つのＣＰＵコアにのみ調停部が設けられ、他のＣＰＵコアが当該調停部にアクセスすることで、各ＣＰＵコアによるＲＡＭへのアクセスを調停する構成であってもよい。
【０１０３】
上述の実施形態では、本発明によるマルチコアプロセッサが、車両制御装置としてＥＦＩ−ＥＣＵに組み込まれた構成について説明したが、マルチコアプロセッサが組み込まれるのはＥＦＩ−ＥＣＵに限らない。例えば、マルチコアプロセッサが、ブレーキを制御するブレーキＥＣＵやバッテリを制御するバッテリＥＣＵ等の他のＥＣＵに組み込まれる構成であってもよく、また、複数のＣＰＵコアを備えた制御装置を搭載した機器であれば、ＯＡ機器のような電子制御機器に組み込まれる構成であってもよい。
【０１０４】
上述した実施形態は、本発明の一例に過ぎず、本発明の作用効果を奏する範囲において各ブロックの具体的構成等を適宜変更設計できることは言うまでもない。
【図面の簡単な説明】
【０１０５】
【図１】ＥＦＩ−ＥＣＵの機能ブロック構成図
【図２】マルチコアプロセッサの機能ブロック構成図
【図３】各種レジスタの説明図
【図４】センサ特性を示すマップデータの説明図
【図５】（ａ）は第一の実施例でデータａ，ｂを更新する処理について説明するためのフローチャート、（ｂ）は第一の実施例でデータｃ〜ｆを更新する処理について説明するためのフローチャート、（ｃ）は第一の実施例でデータｇ〜ｉを更新する処理について説明するためのフローチャート
【図６】第一の実施例の場合の変数取込タスクの処理について説明するためのフローチャート
【図７】（ａ）は第二の実施例でデータａ，ｂを更新する処理について説明するためのフローチャート、（ｂ）は第二の実施例でデータｃ〜ｆを更新する処理について説明するためのフローチャート、（ｃ）は第二の実施例でデータｇ〜ｉを更新する処理について説明するためのフローチャート
【図８】第二の実施例の場合の変数取込タスクの処理について説明するためのフローチャート
【図９】ＣＰＵコアが三個で構成されたマルチコアプロセッサの機能ブロック構成図
【図１０】単一のＣＰＵコアを備えた複数のシングルコアプロセッサが組み込まれた場合のＥＦＩ−ＥＣＵの機能ブロック構成図
【符号の説明】
【０１０６】
１：車両制御装置（ＥＦＩ−ＥＣＵ）
２：マルチコアプロセッサ
３、４：ＣＰＵコア（演算部）
３１、４１：ローカルメモリ（ＲＡＭ）
８３：調停部
【図１】
2009245009.tif 000003
【図２】
2009245009.tif 000004
【図３】
2009245009.tif 000005
【図４】
2009245009.tif 000006
【図５】
2009245009.tif 000007
【図６】
2009245009.tif 000008
【図７】
2009245009.tif 000009
【図８】
2009245009.tif 000010
【図９】
2009245009.tif 000011
【図１０】
2009245009.tif 000012