(57)【特許請求の範囲】
【請求項１】
それぞれデータを用いて演算を行う複数のデータ参照手段、
このデータ参照手段による上記演算に用いるデータを保管するとともに、上記データ参照手段による上記データの参照有無を記録するデータ参照有無記録領域を有する保管バッファ、
及びこの保管バッファへのデータの保管と、この保管されたデータに対する上記データ参照手段による参照とを管理するバッファ管理手段を備え、
上記バッファ管理手段は、
上記保管バッファの上記データ参照有無記録領域で、すべての上記データ参照手段が未参照の場合、新たなデータを上記保管バッファへ格納するとともに、いずれかの上記データ参照手段が参照済みで、かついずれかの上記データ参照手段が未参照の場合には上記新たなデータを上記保管バッファへ格納せず、廃棄し、
上記データ参照手段が上記保管バッファに保管されたデータを参照要求した場合、上記データ参照有無記録領域で当該データ参照手段が未参照であれば、当該データ参照手段に対し、上記保管バッファのデータの参照を指示するとともに、上記データ参照有無記録領域に当該データ参照手段による参照を記録し、
上記保管バッファのデータ参照有無記録領域が、すべての上記データ参照手段によって参照済みとなった場合、上記保管バッファのデータ参照有無記録領域をすべての上記データ参照手段が未参照にすることを特徴とするデータ整合性保証システム。
【請求項２】
それぞれデータを用いて演算を行う複数のデータ参照手段、
このデータ参照手段による上記演算に用いるデータを保管するとともに、それぞれ上記データ参照手段による上記データの参照有無を記録するデータ参照有無記録領域及び上記データの格納順番を記録する格納順番記録領域を有する複数の保管バッファ、
及びこの複数の保管バッファへのデータの保管と、この保管されたデータに対する上記データ参照手段による参照を管理するバッファ管理手段を備え、
上記バッファ管理手段は、
上記保管バッファへ新たなデータを格納する場合、上記格納順番記録領域と上記データ参照有無記録領域とに基づき、上記新たなデータを取得したタイミングに応じて上記保管バッファを選定して上記新たなデータを格納した後、上記新たなデータを格納した保管バッファの上記格納順番記録領域に記録された格納順番を更新し、
上記データ参照手段が上記保管バッファに保管されたデータを参照要求した場合、上記格納順番記録領域と上記データ参照有無記録領域に基づいて、当該データ参照手段に対し、参照先の上記保管バッファを指示するとともに、当該保管バッファの上記データ参照有無記録領域に当該データ参照手段による参照を記録し、
いずれかの保管バッファの上記データ参照有無記録領域が、すべての上記データ参照手段によって参照済みとなった場合、当該保管バッファのデータ参照有無記録領域をすべての上記データ参照手段が未参照にすることを特徴とするデータ整合性保証システム。
【請求項３】
上記バッファ管理手段は、上記データ参照手段がデータを参照要求したタイミングで、最新データ以外のデータが保管されたすべての上記保管バッファを当該データ参照手段が参照済みであった場合、当該データ参照手段に対して上記保管バッファのいずれも参照しないよう指示することを特徴とする請求項２記載のデータ整合性保証システム。
【請求項４】
上記各データ参照手段の上記データの参照のための起動時間を計測する時間計測手段を備え、
上記バッファ管理手段は、上記時間計測手段により計測された上記データ参照手段の起動時間の差分である起動間隔が、他のデータ参照手段の起動間隔より短い場合に、当該データ参照手段の起動時間を調整することを特徴とする請求項２記載のデータ整合性保証システム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、複数のデータ参照Ｓ／Ｗ（ソフトウェア）に対するデータの整合性保証を与えるデータ整合性保障システムに関するものである。
【背景技術】
【０００２】
近年の自動車は、様々なセンサより得られた情報を用いることで高度な制御を実現している。例えば、車輌統合制御では、車速／加速度／ヨーレート／操舵角／アクセル開度などの情報を基にして車輌の挙動を推定し、車輌の挙動を安定化する方向にアンチロックブレーキシステム（以降、ＡＢＳ）やトラクションコントロールシステム（以降、ＴＣＳ）、電動パワーステアリング（以降、ＥＰＳ）を制御する。
車両統合制御において、ＡＢＳ、ＴＣＳ、ＥＰＳの制御ソフトウェア（Ｓ／Ｗ）は、車両の挙動を統合的に制御するシステムの構成要素の一つと考え、個々の制御Ｓ／Ｗがそれぞれ独立に制御するのではなく、統合的に制御する。
また、ＡＢＳ、ＴＣＳ、ＥＰＳの各制御Ｓ／Ｗが、それぞれ共通で用いるデータとして車速がある。もし、各制御Ｓ／Ｗが同一タイミングで更新されていない車速データを用いた場合、車両全体の挙動は不安定になる。したがって、各制御Ｓ／Ｗは同一タイミングに更新されたデータ、つまり、整合性の保証されたデータを基に演算することが重要となる。
また、車速データのような時系列的に取得できるデータにおいて、整合性を保証できるデータの数が多いほど、それを用いて演算する制御Ｓ／Ｗの制御周期を短くすることができ、より滑らかに車両の挙動を制御できる。
【０００３】
特許文献１は、データを参照して何らかの演算を行うＳ／Ｗ（データ参照Ｓ／Ｗ）とデータを公開するＳ／Ｗ（データ公開Ｓ／Ｗ）のそれぞれにおいて、処理の実行優先度が設定されている。
データ公開Ｓ／Ｗは、データ参照Ｓ／Ｗに対して提供するデータとして、公開データと保管データの２種類を持つ。公開データには最新データが、保管データには整合性を保証するデータが格納されている。
データ公開Ｓ／Ｗは、データ参照Ｓ／Ｗが参照要求をしてきた際、自身の実行優先度とデータ参照Ｓ／Ｗの実行優先度を比較することで、データ参照Ｓ／Ｗの参照先を公開データか保管データのどちらかに切り替える。
整合性の保証されたデータを基に演算処理を行うデータ参照Ｓ／Ｗに対しては、データ公開Ｓ／Ｗよりも低い実行優先度を設定することで、データの整合性を確保している。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１１−１７０６２６号公報（第５〜９頁、図１）
【発明の概要】
【発明が解決しようとする課題】
【０００５】
データ公開Ｓ／Ｗによるデータ更新処理と複数あるデータ参照Ｓ／Ｗの演算処理の理想的な起動順番は、全部のデータ参照Ｓ／Ｗの処理が完了してから、データ公開Ｓ／Ｗによる保管データの更新処理を行う起動順番（後述する図２参照）である。このような条件の場合、特許文献１に記載されたデータ整合性保証方法を用いることで、データの整合性を十分に保証できる。
【０００６】
しかし、必ずしも理想的な順番でデータの更新処理と複数あるデータ参照Ｓ／Ｗの演算
処理が行われるとは限らない。
その一例として、その他のＳ／Ｗの割り込み処理などにより、データの更新処理が遅れた結果、Ｒ＋１サイクル目のデータ参照Ｓ／Ｗ１とデータ参照Ｓ／Ｗ２の演算処理の間にデータの更新処理が入った場合（後述する図３参照）、更新処理が間に入ったことにより、データ参照Ｓ／Ｗ１は保管データＮを、データ参照Ｓ／Ｗ２とデータ参照Ｓ／Ｗ３は保管データＮ＋１を用いて演算することになり、Ｒ＋１サイクル目の演算に用いるデータの整合性が保証できない。
【０００７】
また、マルチタスク／マルチスレッド／マルチコアなどで構成されたシステムにおいて、複数あるデータ参照Ｓ／Ｗの起動順番が毎回同じになるような処理を施していない場合、その他のＳ／Ｗの割り込み処理などによりデータ参照Ｓ／Ｗの起動順番が入れ替わり、１サイクルの処理が完了するまでの間に同じデータ参照Ｓ／Ｗが複数回起動することもある（後述する図７参照）。
例えば、Ｒサイクル目のデータ参照Ｓ／Ｗ３とＲ＋１サイクル目のデータ参照Ｓ／Ｗ１の起動順番が入れ替わり、Ｒサイクル目のデータ参照Ｓ／Ｗの処理が完了するまでにデータ参照Ｓ／Ｗ１が２回起動した場合に、整合性を保証できるデータの数は一つのみとすると、Ｒサイクル目のデータ参照Ｓ／Ｗ３はデータＮ＋１を参照するしかないので、Ｒサイクル目のデータ参照Ｓ／Ｗが演算に用いたデータの整合性は崩れる。
したがって、整合性を保証できるデータの数が一つのみの場合、データ参照Ｓ／Ｗの起動順番が入れ替わった時などに、入れ替わったどちらかのデータ参照Ｓ／Ｗが演算に用いたデータの整合性を保証することができない。
車両統合制御において同様な現象が起こった場合、整合性の保証されていないデータを基に演算した各制御Ｓ／Ｗの結果は、制御に用いることができないので、車両統合制御から与える制御値のタイミングが不規則になり、車両の挙動は不安定になるという問題があった。
【０００８】
この発明は、上記のような課題を解決するためになされたものであり、複数のデータ参照Ｓ／Ｗの演算に用いるデータの整合性保証が得られるデータ整合性保障システムを得ることを目的としている。
【課題を解決するための手段】
【０００９】
この発明に係わるデータ整合性保証システムにおいては、それぞれデータを用いて演算を行う複数のデータ参照手段、このデータ参照手段による演算に用いるデータを保管するとともに、データ参照手段によるデータの参照有無を記録するデータ参照有無記録領域を有する保管バッファ、及びこの保管バッファへのデータの保管と、この保管されたデータに対するデータ参照手段による参照とを管理するバッファ管理手段を備え、バッファ管理手段は、保管バッファのデータ参照有無記録領域で、すべてのデータ参照手段が未参照の場合、新たなデータを保管バッファへ格納するとともに、いずれかのデータ参照手段が参照済みで、かついずれかのデータ参照手段が未参照の場合には新たなデータを保管バッファへ格納せず、廃棄し、データ参照手段が保管バッファに保管されたデータを参照要求した場合、データ参照有無記録領域で当該データ参照手段が未参照であれば、当該データ参照手段に対し、保管バッファのデータの参照を指示するとともに、データ参照有無記録領域に当該データ参照手段による参照を記録し、保管バッファのデータ参照有無記録領域が、すべてのデータ参照手段によって参照済みとなった場合、保管バッファのデータ参照有無記録領域をすべてのデータ参照手段が未参照にするものである。
【発明の効果】
【００１０】
この発明によれば、それぞれデータを用いて演算を行う複数のデータ参照手段、このデータ参照手段による演算に用いるデータを保管するとともに、データ参照手段によるデータの参照有無を記録するデータ参照有無記録領域を有する保管バッファ、及びこの保管バッファへのデータの保管と、この保管されたデータに対するデータ参照手段による参照とを管理するバッファ管理手段を備え、バッファ管理手段は、保管バッファのデータ参照有無記録領域で、すべてのデータ参照手段が未参照の場合、新たなデータを保管バッファへ格納するとともに、いずれかのデータ参照手段が参照済みで、かついずれかのデータ参照手段が未参照の場合には新たなデータを保管バッファへ格納せず、廃棄し、データ参照手段が保管バッファに保管されたデータを参照要求した場合、データ参照有無記録領域で当該データ参照手段が未参照であれば、当該データ参照手段に対し、保管バッファのデータの参照を指示するとともに、データ参照有無記録領域に当該データ参照手段による参照を記録し、保管バッファのデータ参照有無記録領域が、すべてのデータ参照手段によって参照済みとなった場合、保管バッファのデータ参照有無記録領域をすべてのデータ参照手段が未参照にするので、データの整合性が崩れないタイミングで新たなデータを保管バッファへ格納させ、複数のデータ参照手段が演算に用いるデータの整合性を保証することができる。
【図面の簡単な説明】
【００１１】
【図１】この発明の実施の形態１による車輌統合制御システムのシステム構成を示す概略図である。
【図２】車輌統合制御システムにおける理想的なデータ更新処理と複数のデータ参照Ｓ／Ｗの演算処理順番を示す図である。
【図３】この発明の実施の形態１による車輌統合制御システムの動作例１におけるデータ参照Ｓ／Ｗの演算処理順番を示す図である。
【図４】この発明の実施の形態１による車輌統合制御システムのバッファ管理Ｓ／Ｗの処理の流れを示すフローチャートである。
【図５】この発明の実施の形態１による車輌統合制御システムの各Ｓ／Ｗの処理の流れを示すフローチャートである。
【図６】この発明の実施の形態２による車輌統合制御システムのシステム構成を示す概略図である。
【図７】この発明の実施の形態２による車輌統合制御システムの動作例２におけるデータ参照Ｓ／Ｗの演算処理順番を示す図である。
【図８】この発明の実施の形態２による車輌統合制御システムのバッファ管理Ｓ／Ｗの処理の流れを示すフローチャートである。
【図９】この発明の実施の形態２による車輌統合制御システムの各Ｓ／Ｗの処理の流れを示すフローチャートである。
【図１０】この発明の実施の形態２による車輌統合制御システムの動作例３におけるデータ参照Ｓ／Ｗの演算処理順番を示す図である。
【図１１】この発明の実施の形態２による車輌統合制御システムの動作例３におけるデータの整合性が保証できない場合の各Ｓ／Ｗの処理の流れを示すフローチャートである。
【図１２】この発明の実施の形態２による車輌統合制御システムの動作例４におけるデータ参照Ｓ／Ｗの起動タイミングのずれを説明する図である。
【図１３】この発明の実施の形態２による車輌統合制御システムの動作例４におけるデータ参照Ｓ／Ｗの起動タイミングの調整を説明する図である。
【発明を実施するための形態】
【００１２】
実施の形態１．
＜構成＞
以下、実施の形態１による、車輌の挙動を安定化する方向に制御するための車輌統合制御システム（データ整合性保障システム）について説明する。
図１は、この発明の実施の形態１による車輌統合制御システムのシステム構成を示す概略図である。
図１において、車輌統合制御システムは、それぞれデータを用いて演算するデータ参照Ｓ／Ｗ１〜３（データ参照手段）と、データ参照Ｓ／Ｗ１〜３が演算に用いるデータを保管する演算用データ保管バッファ４１（保管バッファ）と、この演算用データ保管バッファ４１を管理するバッファ管理Ｓ／Ｗ４（バッファ管理手段）から構成され、これらのデータ参照Ｓ／Ｗ１〜３とバッファ管理Ｓ／Ｗ４は、コンピュータにより実行される。
演算用データ保管バッファ４１は、データ参照Ｓ／Ｗ１〜３の参照有無情報を記録する領域であるデータ参照有無記録領域４１１を有する。
データ参照Ｓ／Ｗ１は、ＡＢＳ制御Ｓ／Ｗである。データ参照Ｓ／Ｗ２は、ＴＣＳ制御Ｓ／Ｗである。データ参照Ｓ／Ｗ３は、ＥＰＳ制御Ｓ／Ｗである。
バッファ管理Ｓ／Ｗ４は、データ参照Ｓ／Ｗのデータ参照要求によって、データ参照有無記録領域４１１に記録された情報に基づいて、データ参照Ｓ／Ｗに対して、演算用データ保管バッファ４１を参照するように指示し、データ参照有無記録領域４１１に記録された参照有無情報を更新する。
ここで、説明の簡略化のため、扱うデータは車速データのみとする。この理由は、ＡＢＳ制御Ｓ／Ｗ、ＴＣＳ制御Ｓ／Ｗ、ＥＰＳ制御Ｓ／Ｗのすべてにおいて、車速データのみ共通で使用するからである。各データ参照Ｓ／Ｗの動作例については後述にて説明する。
【００１３】
図２は、車輌統合制御システムにおける理想的なデータ更新処理と複数のデータ参照Ｓ／Ｗの演算処理順番を示す図である。
図２において、Ｒサイクル目として、ステップＳ２０１、Ｓ３０１、Ｓ４０１で、データ参照Ｓ／Ｗ１、データ参照Ｓ／Ｗ２、データ参照Ｓ／Ｗ３がそれぞれ起動され、データ参照した後に、ステップＳ５０１で、バッファ管理Ｓ／Ｗ４が、最新データＮ＋１を取得し、次いで、Ｒ＋１サイクル目として、ステップＳ２０２、Ｓ３０２、Ｓ４０２で、データ参照Ｓ／Ｗ１、データ参照Ｓ／Ｗ２、データ参照Ｓ／Ｗ３がそれぞれ起動され、データ参照した後に、ステップＳ５０２で、バッファ管理Ｓ／Ｗ４が、最新データＮ＋２を取得し、次いで、ステップＳ２０３、Ｓ３０３、Ｓ４０３で、データ参照Ｓ／Ｗ１、データ参照Ｓ／Ｗ２、データ参照Ｓ／Ｗ３がそれぞれ起動され、データ参照する。
【００１４】
図３は、この発明の実施の形態１による車輌統合制御システムの動作例１におけるデータ参照Ｓ／Ｗの演算処理順番を示す図である。
図３において、ステップＳ５１１の最新データＮ＋１取得が、データ参照Ｓ／Ｗ１の起動より後になっている。詳細については後述する。
【００１５】
次に、動作について説明する。
バッファ管理Ｓ／Ｗ４は、演算用データ保管バッファ４１のデータ参照有無記録領域４１１にどのデータ参照Ｓ／Ｗも参照済みでなかった場合、取得した最新データを演算用データ保管バッファ４１に格納する。演算用データ保管バッファ４１のデータ参照有無記録領域に一つでも参照済みのデータ参照Ｓ／Ｗが存在した場合は、最新データを演算用データ保管バッファ４１に格納しない。
なお、最新のデータを取得する周期が遅い場合には、一旦最新のデータを別の保管バッファに格納し、データの整合性を崩さないタイミングにて、別の保管バッファに格納された最新データを演算用データ保管バッファ４１にコピーするものとしても良い。
【００１６】
また、バッファ管理Ｓ／Ｗ４は、演算用データ保管バッファ４１のデータ参照有無記録領域４１１の情報に基づいて、参照要求を出してきたデータ参照Ｓ／Ｗに対して演算用データ保管バッファ４１に格納されたデータの参照許可／不許可を出す。
そして、データ参照有無記録領域４１１に参照済みとなったデータ参照Ｓ／Ｗを記録する。
また、バッファ管理Ｓ／Ｗ４は、すべてのデータ参照Ｓ／Ｗが演算用データ保管バッファ４１に保管されたデータを参照した場合、演算用データ保管バッファ４１のデータ参照有無記録領域４１１をすべて未参照にする。
【００１７】
＜処理フロー＞
次に、バッファ管理Ｓ／Ｗ４の処理の流れを、図４のフローチャートを用いて説明する
。
バッファ管理Ｓ／Ｗ４は、最新データの取得やデータ参照Ｓ／Ｗ１〜３の参照要求によって、もしくは周期起動によって起動するものとする。実施の形態１では、最新データの取得やデータ参照Ｓ／Ｗの参照要求によって起動する場合で説明を行う。
始めに、バッファ管理Ｓ／Ｗ４は、最新データの取得とデータ参照Ｓ／Ｗの参照要求のどちらによって起動したかを確認する（Ｓ１０１１）。最新データの取得による場合は、ステップＳ１０１２へ、データ参照Ｓ／Ｗの参照要求による場合は、ステップＳ１０１４へ進む。
【００１８】
ステップＳ１０１２では、演算用データ保管バッファ４１のデータ参照有無記録領域４１１がすべて未参照であるかどうかを判定する。データ参照有無記録領域４１１がすべて未参照であった場合、それは、依然として演算用データ保管バッファ４１に保管されているデータを参照したデータ参照Ｓ／Ｗが存在しない状態、もしくは、演算用データ保管バッファ４１に保管されているデータはすべてのデータ参照Ｓ／Ｗが参照したため、データ参照有無記録領域４１１がリセットされた状態であることを意味する。
よって、現時点で演算用データ保管バッファ４１に保管されているデータを必要とするデータ参照Ｓ／Ｗは存在しないので、最新データを演算用データ保管バッファ４１に格納する（Ｓ１０１３）。格納後、もしくは、いずれかのデータ参照Ｓ／Ｗが参照済みであった場合は、バッファ管理Ｓ／Ｗ４の処理を終了する。
【００１９】
ステップＳ１０１４では、参照を要求してきたデータ参照Ｓ／Ｗが演算用データ保管バッファ４１を参照済みであるかどうかを判定する。参照済みでない場合は、参照を要求してきたデータ参照Ｓ／Ｗに対して、演算用データ保管バッファ４１を参照するよう指示し、参照を要求してきたデータ参照Ｓ／Ｗのデータ参照有無記録領域４１１を参照済みに変更する（Ｓ１０１５）。変更後、もしくは、参照済みであった場合は、ステップＳ１０１６へ進む。
【００２０】
ステップＳ１０１６では、演算用データ保管バッファ４１のデータ参照有無記録領域４１１がすべて参照済みであるかどうかを判定する。すべて参照済みであった場合は、演算用データ保管バッファ４１に保管されているデータは、すべてのデータ参照Ｓ／Ｗ１〜３が参照したことになるので、データを保管しておく必要はなくなる。
よって、データ参照有無記録領域４１１をリセットするため、演算用データ保管バッファ４１のデータ参照有無記録領域４１１をすべて未参照に変更する（Ｓ１０１７）。すべて参照済みでない場合は、未参照であるデータ参照Ｓ／Ｗの参照が完了するまで、演算用データ保管バッファ４１のデータを保管しておく必要があるので、何もせずにバッファ管理Ｓ／Ｗ４の処理を終了する。
【００２１】
＜動作例１＞
図１、図３、図５を用いて、具体的な動作例として動作例１を説明する。
図１のバッファ管理Ｓ／Ｗ４は、演算用データ保管バッファ４１のデータ参照有無記録領域４１１に記録されたデータ参照Ｓ／Ｗ１、データ参照Ｓ／Ｗ２、データ参照Ｓ／Ｗ３の各参照有無情報を基に、演算用データ保管バッファ４１に保管されたデータの整合性を崩さないタイミングで、取得した最新データを演算用データ保管バッファ４１に格納する。
データ参照Ｓ／Ｗ１、データ参照Ｓ／Ｗ２、データ参照Ｓ／Ｗ３は、バッファ管理Ｓ／Ｗ４の管理する演算用データ保管バッファ４１に保管された車速データを参照することで演算処理を行う。
【００２２】
まず、この動作例１における初期条件を説明する。
データ参照Ｓ／Ｗ１、データ参照Ｓ／Ｗ２、データ参照Ｓ／Ｗ３は、演算処理を行う際
に必要となる車速データを、バッファ管理Ｓ／Ｗ４の管理する演算用データ保管バッファ４１にアクセスすることにより取得する。データ参照Ｓ／Ｗ１、データ参照Ｓ／Ｗ２、データ参照Ｓ／Ｗ３は、それぞれ独立したＳ／Ｗであり、互いに起動順番や起動周期に直接干渉しないものとする。
【００２３】
次に、データ参照Ｓ／Ｗ１、データ参照Ｓ／Ｗ２、データ参照Ｓ／Ｗ３の起動順番について説明する。本実施の形態１において、データ参照Ｓ／Ｗ１、データ参照Ｓ／Ｗ２、データ参照Ｓ／Ｗ３の順番で起動する場合を理想的な起動順番とする。本実施の形態１でも、各データ参照Ｓ／Ｗは、図３に示す順番で起動するものとする。また、図３に示すように、同一の車速データを用いて、すべてのデータ参照Ｓ／Ｗの演算処理が完了した状況を１サイクルとする。
図３は、図２と同じ起動順番で、データ参照Ｓ／Ｗが順次起動されるが、最新データ取得タイミングが図２とは異なっている。
【００２４】
図３のＲ＋１サイクル目のデータ参照Ｓ／Ｗ１が起動するステップＳ２１２から動作例１の説明を始める。この時の演算用データ保管バッファ４１の状況は、図５のＢ１０１とする。
まず、データ参照Ｓ／Ｗ１が起動し、バッファ管理Ｓ／Ｗ４に対してデータ参照を要求する（図３ステップＳ２１２）。データ参照Ｓ／Ｗ１の参照要求により起動したバッファ管理Ｓ／Ｗ４は、データ参照Ｓ／Ｗ１の演算用データ保管バッファ４１に対する参照有無をデータ参照有無記録領域４１１に基づいて判定する（図４ステップＳ１０１４）。
図５のＢ１０１のデータ参照有無記録領域４１１を見ると、未参照となっているので、バッファ管理Ｓ／Ｗ４は、データ参照Ｓ／Ｗ１に対して演算用データ保管バッファ４１を参照するよう指示し、演算用データ保管バッファ４１のデータ参照有無記録領域４１１にデータ参照Ｓ／Ｗ１が参照したことを記録した後（図４ステップＳ１０１５）、データ参照Ｓ／Ｗ１は、取得したデータＮを用いて演算処理を行う。
図３ステップＳ２１２後の保管バッファの状況は、図５のＢ１０２となるので、図３ステップＳ１０１６に進んだ場合、データ参照Ｓ／Ｗ２とデータ参照Ｓ／Ｗ３によるデータの参照が完了していないため、バッファ管理Ｓ／Ｗ４は、処理を終了する。
【００２５】
ここで、最新の車速データ（データＮ＋１）が提供されたとする（図３ステップＳ５１１）。最新データの取得により起動したバッファ管理Ｓ／Ｗ４は、取得した最新データを演算用データ保管バッファ４１に格納するかどうかを判定する（図４ステップＳ１０１２）。
図５のＢ１０２のデータ参照有無記録領域４１１を見ると、データ参照Ｓ／Ｗ２とデータ参照Ｓ／Ｗ３は、データＮの参照を完了していないことがわかる。よって、この時点でデータＮ＋１を演算用データ保管バッファ４１に格納してしまうと、Ｒ＋１サイクル目のデータ参照Ｓ／Ｗが演算に用いるデータの整合性が崩れてしまうため、最新のデータＮ＋１は演算用データ保管バッファ４１に格納せずに破棄され、バッファ管理Ｓ／Ｗ４は、処理を終了する。
図３ステップＳ２１２後の演算用データ保管バッファの状況は、図５のＢ１０３とする。
【００２６】
次に、データ参照Ｓ／Ｗ２が起動し、バッファ管理Ｓ／Ｗ４に対してデータの参照を要求する（図３ステップＳ３１２）。データ参照Ｓ／Ｗ２の参照要求により起動したバッファ管理Ｓ／Ｗ４は、データ参照Ｓ／Ｗ２の演算用データ保管バッファ４１に対する参照有無をデータ参照有無記録領域４１１に基づいて判定する（図４ステップＳ１０１４）。
図５のＢ１０３のデータ参照有無記録領域４１１を見ると、データ参照Ｓ／Ｗ２は、演算用データ保管バッファ４１を参照していないことがわかる。よって、バッファ管理Ｓ／Ｗ４は、データ参照Ｓ／Ｗ２に対して演算用データ保管バッファ４１を参照するよう指示
し、演算用データ保管バッファ４１のデータ参照有無記録領域４１１にデータ参照Ｓ／Ｗ２が参照したことを記録した後（図４ステップＳ１０１５）、データ参照Ｓ／Ｗ２は、取得したデータＮを用いて演算処理を行う。
図３ステップＳ３１２後の保管バッファの状況は、図５のＢ１０４となるので、図３ステップＳ１０１６に進んだ場合、データ参照Ｓ／Ｗ３によるデータの参照が完了していないため、バッファ管理Ｓ／Ｗ４は処理を終了する。
【００２７】
続いて、データ参照Ｓ／Ｗ３が起動し、バッファ管理Ｓ／Ｗ４に対してデータの参照を要求する（図３ステップＳ４１２）。データ参照Ｓ／Ｗ３の参照要求により起動したバッファ管理Ｓ／Ｗ４は、データ参照Ｓ／Ｗ３の演算用データ保管バッファ４１に対する参照有無をデータ参照有無記録領域４１１に基づいて判定する（図４ステップＳ１０１４）。
図５のＢ１０４のデータ参照有無記録領域４１１を見ると、データ参照Ｓ／Ｗ３は、演算用データ保管バッファ４１を参照していないことがわかる。よって、バッファ管理Ｓ／Ｗ４は、データ参照Ｓ／Ｗ３に対して演算用データ保管バッファ４１を参照するよう指示し、演算用データ保管バッファ４１のデータ参照有無記録領域４１１にデータ参照Ｓ／Ｗ３が参照したことを記録した後（図４ステップＳ１０１５）、データ参照Ｓ／Ｗ３は、取得したデータＮを用いて演算処理を行う。
図３ステップＳ４１２後の演算用データ保管バッファ４１の状況は、図５のＢ１０５となる。
【００２８】
このとき、図５のＢ１０５のデータ参照有無記録領域４１１を見ると、演算用データ保管バッファ４１に保管されたデータＮは、すべてのデータ参照Ｓ／Ｗが参照したことがわかる。よって、演算用データ保管バッファ４１のデータＮを保管しておく必要はなくなるので、図３ステップＳ１０１６に進んだ場合、演算用データ保管バッファ４１のデータ参照有無記録領域４１１をすべて未参照にし（図４ステップＳ１０１７）、バッファ管理Ｓ／Ｗ４は、処理を終了する。
図３ステップＳ４１２後の演算用データ保管バッファ４１の状況は、図５のＢ１０６となる。
【００２９】
その後、最新データＮ＋２を取得したとする（図３ステップＳ５１２）。最新データの取得により起動したバッファ管理Ｓ／Ｗ４は、取得した最新データを演算用データ保管バッファ４１に格納するかどうかを判定する（図４ステップＳ１０１２）。演算用データ保管バッファ４１のデータ参照有無記録領域４１１がすべて未参照であるため、最新データＮ＋２を演算用データ保管バッファ４１に格納し（図４ステップＳ１０１３）、バッファ管理Ｓ／Ｗ４は、処理を終了する。
図３ステップＳ５１２後の保管バッファの状況は、図５のＢ１０７となる。
【００３０】
＜実施の形態１の動作例１における効果＞
実施の形態１の動作例１によれば、データ参照Ｓ／Ｗの演算用データ保管バッファ４１に対する参照有無を記録し、データの整合性が崩れるタイミングでの新たなデータの演算用データ保管バッファ４１への格納を防止することで、複数のデータ参照Ｓ／Ｗが演算に用いるデータの整合性を保証することができる。
【００３１】
また、車速データを取得できる周期がデータ参照Ｓ／Ｗの起動周期に比べて長い場合、データ参照Ｓ／Ｗは、更新されていないデータを用いて再度演算することがある。一度用いたデータで再び演算しても同じ演算結果が得られるだけで、無駄な演算処理となる。
この場合、本実施の形態１のシステム構成にもう一つ別のバッファを追加することで無駄な演算処理を抑えることができる。
もう一つ別のバッファを追加したシステムでは、取得した最新データを、演算用データ保管バッファ４１に直接格納するのではなく、新しく追加したバッファに一旦格納する。
そして、バッファ管理Ｓ／Ｗ４は、演算用データ保管バッファ４１に格納されているデータの整合性を崩さないタイミングで、別のバッファに保管したデータを演算用データ保管バッファ４１に格納することで、データの整合性を保証しつつ無駄な演算処理を抑えることができる。
【００３２】
実施の形態２．
＜構成＞
図６は、この発明の実施の形態２による車輌統合制御システムのシステム構成を示す概略図である。
図６において、１〜４は図１におけるものと同一のものである。図６では、演算に用いられるデータを格納する保管バッファ６、保管バッファ７、保管バッファ８を備え、各保管バッファ６、７、８は、各データ参照Ｓ／Ｗによるデータ参照の有無情報を記録するデータ参照有無記録領域６１、７１、８１と、保管バッファごとのデータの格納順番を記録するデータ格納順番記録領域６２、７２、８２（格納順番記録領域）とを有する。
バッファ管理Ｓ／Ｗ４は、最新データの取得や各データ参照Ｓ／Ｗのデータ参照要求によって、各保管バッファ６、７、８のデータ格納順番記録領域６２、７２、８２とデータ参照有無記録領域６１、７１、８１に記録された情報を更新する。
また、バッファ管理Ｓ／Ｗ４は、各保管バッファの情報を基に、各データ参照Ｓ／Ｗが参照する保管バッファを指示する。
【００３３】
図７は、この発明の実施の形態２による車輌統合制御システムの動作例２におけるデータ参照Ｓ／Ｗの演算処理順番を示す図である。
図７において、ステップＳ２２２とＳ４２１のように、Ｒサイクル目のデータ参照Ｓ／Ｗ３の起動に先立って、Ｒ＋１サイクル目のデータ参照Ｓ／Ｗ１が起動している。詳細については後述する。
【００３４】
図１０は、この発明の実施の形態２による車輌統合制御システムの動作例３におけるデータ参照Ｓ／Ｗの演算処理順番を示す図である。
図１０において、データ参照Ｓ／Ｗ１、データ参照Ｓ／Ｗ２、データ参照Ｓ／Ｗ３の順番どおりデータ参照Ｓ／Ｗが起動されていない。詳細については後述する。
【００３５】
図１２は、この発明の実施の形態２による車輌統合制御システムの動作例４におけるデータ参照Ｓ／Ｗの起動タイミングのずれを説明する図である。
図１２において、縦軸をデータ参照Ｓ／Ｗ、横軸を時間としたグラフで、データ参照Ｓ／Ｗ１、データ参照Ｓ／Ｗ２、データ参照Ｓ／Ｗ３でそれぞれ起動間隔が異なっている。
【００３６】
図１３は、この発明の実施の形態２による車輌統合制御システムの動作例４におけるデータ参照Ｓ／Ｗの起動タイミングの調整を説明する図である。
図１３において、縦軸をデータ参照Ｓ／Ｗ、横軸を時間としたグラフで、起動間隔の短いデータ参照Ｓ／Ｗ２、データ参照Ｓ／Ｗ３にそれぞれ応分の調整時間を挿入して、すべてのデータ参照Ｓ／Ｗが同じ起動間隔としている。
【００３７】
次に、動作について説明する。
バッファ管理Ｓ／Ｗ４は、保管バッファへ最新データを格納するタイミングにて、データ参照有無記録領域６１、７１、８１とバッファ格納順番記録領域６２、７２、８２の情報を基に、最新データを所定の保管バッファへ格納する。
ここで、所定の保管バッファとは、最も古いデータを保管している、もしくは、どのデータ参照Ｓ／Ｗも参照していない等のいずれか１つの条件を満たす保管バッファのことを指す。保管バッファへデータを格納後、データを格納した保管バッファのバッファ格納順番記録領域に記録された格納順番を更新する。
【００３８】
各データ参照Ｓ／Ｗは、各保管バッファのデータ参照有無記録領域とバッファ格納順番記録領域の情報を基に、バッファ管理Ｓ／Ｗ４が選択した保管バッファを参照する。そして、バッファ管理Ｓ／Ｗ４は、選択した保管バッファのデータ参照有無記録領域に参照済みとなったデータ参照Ｓ／Ｗを記録する。
バッファ管理Ｓ／Ｗ４は、全てのデータ参照Ｓ／Ｗが参照済みである保管バッファが存在する場合、その保管バッファのデータ参照有無記録領域をすべて未参照にする。
【００３９】
これによれば、例えば、１サイクルに、あるデータ参照Ｓ／Ｗが２回起動してしまった場合、１回目に起動したそのデータ参照Ｓ／Ｗが参照した保管バッファをデータ参照有無記録領域に記録された情報から判断し、２回目に起動したデータ参照Ｓ／Ｗは、１回目に起動したデータ参照Ｓ／Ｗが参照したデータと異なるデータが格納された保管バッファを参照することができる。
つまり、起動回数によってデータ参照Ｓ／Ｗの演算に用いるデータを変更しなければならない状況において、バッファ管理Ｓ／Ｗ４は、それらのデータ参照Ｓ／Ｗに対してそれぞれ異なるデータを提供することができる。
【００４０】
このように、１サイクルで複数回起動したデータ参照Ｓ／Ｗに対してデータを提供する際に、各保管バッファのデータ参照Ｓ／Ｗの参照有無と保管されているデータの格納順番の情報を用いることで、それぞれ異なるタイミングで得られたデータの整合性を保証しつつ、データ参照Ｓ／Ｗの起動回数に応じたデータを提供することができる。
【００４１】
また、別の状況として、ある一つのデータ参照Ｓ／Ｗが最新データの格納された保管バッファ以外の全ての保管バッファを参照済みである状況で、バッファ管理Ｓ／Ｗ４がそのデータ参照Ｓ／Ｗに対して最新データの格納された保管バッファを参照するよう指示した場合、すべての保管バッファは、そのデータ参照Ｓ／Ｗによって参照済みとなる。
つまり、すべての保管バッファにおいて、保管されているデータの整合性を保証しなければならない状態となる。この状態で、さらに新しいデータを取得した場合、いずれかの保管バッファに最新データを格納するので、その保管バッファに元々保管されていたデータは最新データによって上書きされる。
よって、バッファ管理Ｓ／Ｗ４は、元々保管されていたデータをまだ参照していなかったデータ参照Ｓ／Ｗに対してそのデータを提供できなくなるので、データの整合性が崩れることになる。
このような場合には、ある一つのデータ参照Ｓ／Ｗによって最新データ以外が保管されたすべての保管バッファを参照済みである状況において、そのデータ参照Ｓ／Ｗがデータの参照を要求してきた場合、そのデータ参照Ｓ／Ｗに対してデータの参照を許可しないようにする。
【００４２】
このように、すべてのデータ参照Ｓ／Ｗによってデータの参照が完了していない保管バッファを最新データで上書きする状況が発生しないように、データ参照Ｓ／Ｗの各保管バッファへの参照有無を記録し、保管バッファの状況に応じてデータ参照Ｓ／Ｗに対して参照許可／不許可を出すことで、保管バッファに格納されているデータの整合性を保証することができる。
【００４３】
＜処理フロー＞
次に、図６のバッファ管理Ｓ／Ｗ４が行う処理の流れを、図８のフローチャートを参照して説明する。
実施の形態２におけるバッファ管理Ｓ／Ｗ４は、データ参照Ｓ／Ｗの参照要求によって起動する、もしくは周期的に起動するものとする。
【００４４】
まず、データ参照Ｓ／Ｗからのデータ参照要求がないかどうかを確認する（Ｓ１０２０１）。データ参照の要求がなかった場合は、処理を終了し、参照の要求があった場合は保管バッファ６〜８の参照有無記録情報を確認する（Ｓ１０２０２）。参照有無記録領域の情報を基に、最新データの格納された保管バッファを参照したデータ参照Ｓ／Ｗが存在するかどうかを判定する（Ｓ１０２０３）。存在した場合はステップＳ１０２０４へ、存在しなかった場合はステップＳ１０２０７へ進む。
【００４５】
ステップＳ１０２０４では、最新データの格納された保管バッファを参照したデータ参照Ｓ／Ｗが、データの参照を要求してきたデータ参照Ｓ／Ｗであるかどうかを判定する。
最新データの格納された保管バッファを参照したデータ参照Ｓ／Ｗが、データの参照を要求してきたデータ参照Ｓ／Ｗであった場合、当該データ参照Ｓ／Ｗは、データが更新されていないにも関わらず起動したことになるので、何もせずに処理を終了する。
逆に、最新データの格納された保管バッファを参照したデータ参照Ｓ／Ｗが、データの参照を要求してきたデータ参照Ｓ／Ｗでなかった場合、データの参照を要求してきたデータ参照Ｓ／Ｗよりも早く起動したデータ参照Ｓ／Ｗが存在することを意味するので、参照する保管バッファを選択するためにステップＳ１０２０５に進む。
【００４６】
ステップＳ１０２０５では、データの参照を要求してきたデータ参照Ｓ／Ｗが参照する保管バッファを選択する。いずれかのデータ参照Ｓ／Ｗが参照済み、かつデータの参照を要求してきたデータ参照Ｓ／Ｗは未参照という条件を満たすバッファのうち、最も古いバッファを選択する。そして、選択した保管バッファのデータ参照有無記録領域を参照済みに変更する（Ｓ１０２０６）。変更後、ステップＳ１０２１０へ進む。
【００４７】
ステップＳ１０２０７では、他のデータ参照Ｓ／Ｗが参照済み、かつデータの参照を要求してきたデータ参照Ｓ／Ｗは未参照である保管バッファが存在するかどうかを判断する。
ステップＳ１０２０７の条件を満たす保管バッファが一つでも存在した場合は、ステップＳ１０２０５に進み、条件を満たすバッファが存在しない場合は、ステップＳ１０２０８に進む。
【００４８】
ステップＳ１０２０８では、データの参照を要求してきたデータ参照Ｓ／Ｗは、最新データの格納された保管バッファ以外のすべての保管バッファを参照済みであるかどうかを判定する。最新データの格納された保管バッファ以外のすべての保管バッファを参照済みであった場合は、ステップＳ１０２１０へ進み、そうでない場合は、ステップＳ１０２０９へ進む。
【００４９】
ステップＳ１０２０９では、参照を要求してきたデータ参照Ｓ／Ｗに対して、最新データを格納した保管バッファを参照するよう指示し、最新データを格納した保管バッファのデータ参照有無記録領域にそのデータ参照Ｓ／Ｗが参照したことを記録する。その後、ステップＳ１０２１０へ進む。
【００５０】
ステップＳ１０２１０では、全てのデータ参照Ｓ／Ｗが参照済みである保管バッファが存在するかどうかを判定する。存在した場合は、該当する保管バッファに保管されているデータは、全てのデータ参照Ｓ／Ｗが参照したことになるため、保管しておく必要がなくなる。
よって、該当する保管バッファのデータ参照有無記録領域をリセットするため、そのデータ参照有無記録領域を全て未参照にする（Ｓ１０２１１）。
【００５１】
＜動作例２＞
図７、図８、図９を用いて、実施の形態２における具体的な動作例として動作例２を説
明する。
なお、動作例２の初期条件は、動作例１の初期条件と同じとする。
ただし、データ参照Ｓ／Ｗ１、データ参照Ｓ／Ｗ２、データ参照Ｓ／Ｗ３は、演算処理を行う際に必要となる車速データを、バッファ管理Ｓ／Ｗ４がデータ参照有無記録領域６１、７１、８１とデータ格納順番記録領域６２、７２、８２の情報に基づいて選択した保管バッファにアクセスすることにより取得する点が異なる。
また、バッファ管理Ｓ／Ｗ４は、最新データを取得した場合、その時点でどのデータ参照Ｓ／Ｗも参照していない保管バッファのうち、最も古い保管バッファに格納するものとする。どのデータ参照Ｓ／Ｗも参照していない保管バッファが存在しなかった場合は、最も古い保管バッファへ格納するものとする。
【００５２】
次に、各データ参照Ｓ／Ｗの起動順番について説明する。
動作例２の起動順番では、各データ参照Ｓ／Ｗの処理時間、割り込み処理時間、その他のＳ／Ｗの処理時間などによりデータ参照Ｓ／Ｗの起動順番が入れ替わり、必ずしも図２のような理想的な順番で順次起動するとは限らない場合を考え、図７のような起動順番を考える。
【００５３】
さらに、図７のＲサイクル目のデータ参照Ｓ／Ｗ２が起動した後に、バッファ管理Ｓ／Ｗ４が最新の車速データを取得したものとする。
【００５４】
図７のＲサイクル目のデータ参照Ｓ／Ｗ１が起動するステップＳ２２１から動作例２の説明を始める。
この時の各保管バッファの状況は、図９のＢ２０１とする。図９のデータ格納順番記録領域に格納された数値が大きいほど新しい車速データとする。
【００５５】
まず、データ参照Ｓ／Ｗ１が起動し、バッファ管理Ｓ／Ｗ４に対してデータの参照を要求する（図７ステップＳ２２１）。データ参照Ｓ／Ｗ１の参照要求により起動したバッファ管理Ｓ／Ｗ４は、データ格納順番記録領域６２、７２、８２とデータ参照有無記録領域６１、７１、８１の情報を確認する（図８ステップＳ１０２０２）。
図９のＢ２０１のデータ参照有無記録領域を見ると、どの保管バッファにおいても参照したデータ参照Ｓ／Ｗはない。また、図９のＢ２０１のデータ格納順番記録領域を見ると、保管バッファ６に最新の車速データが格納されていることがわかる。
よって、バッファ管理Ｓ／Ｗ４は、データ参照Ｓ／Ｗ１に対して保管バッファ６を参照するよう指示し、保管バッファ６のデータ参照有無記録領域６１にデータ参照Ｓ／Ｗ１が参照したことを記録する（図８ステップ１０２０９）。データ参照Ｓ／Ｗ１は、取得したデータＮを用いて演算処理を行う。
図７ステップＳ２２１後の各保管バッファの状況は、図９のＢ２０２となる。
【００５６】
次に、データ参照Ｓ／Ｗ２が起動し、バッファ管理Ｓ／Ｗ４に対してデータの参照を要求する（図７ステップＳ３２１）。データ参照Ｓ／Ｗ２の参照要求により起動したバッファ管理Ｓ／Ｗ４は、データ格納順番記録領域６２、７２、８２とデータ参照有無記録領域６１、７１、８１の情報を確認する（図８ステップＳ１０２０２）。
図９のＢ２０２のデータ参照有無記録領域を見ると、保管バッファ６はデータ参照Ｓ／Ｗ１のみが参照済みで、保管バッファ７と保管バッファ８を参照したデータ参照Ｓ／Ｗはないことがわかる。
よって、バッファ管理Ｓ／Ｗ４は、先に起動したデータ参照Ｓ／Ｗ１が参照した保管バッファ６を参照するように指示し（図８ステップ１０２０５）、保管バッファ６のデータ参照有無記録領域６１にデータ参照Ｓ／Ｗ２が参照したことを記録する（図８ステップ１０２０６）。その後、データ参照Ｓ／Ｗ２は、取得したデータＮを用いて演算処理を行う。
図７ステップＳ３２１後の各保管バッファの状況は、図９のＢ２０３となる。
【００５７】
ここで、最新の車速データ（データＮ＋１）を取得したとする（図７ステップＳ５２１）。
本実施の形態２において、最新データを取得した場合、その時点でどのデータ参照Ｓ／Ｗも参照していない保管バッファのうち、最も古い保管バッファに格納するものとした。
図９のＢ２０３のデータ参照有無記録領域を見ると、保管バッファ６には、整合性を保証しなければならないデータが保管されているので、最新データで更新できない。保管バッファ７および保管バッファ８に関しては、どのデータ参照Ｓ／Ｗも参照していないので、整合性を保証しなければならないデータではない。
また、図９のＢ２０３のデータ格納順番記録領域を見ると、保管バッファ７に最も古い車速データが格納されていることがわかる。
よって、提供された最新の車速データを格納する保管バッファは、保管バッファ７となり、保管バッファ７のデータ格納順番記録領域７２を更新する（図９のＢ２０４）。
【００５８】
次に、Ｒ＋１サイクル目のデータ参照Ｓ／Ｗ１が起動して、データの参照を要求する（図７ステップＳ２２２）。データ参照Ｓ／Ｗ１の参照要求により起動したバッファ管理Ｓ／Ｗ４は、データ格納順番記録領域６２、７２、８２とデータ参照有無記録領域６１、７１、８１の情報を確認する（図８ステップＳ１０２０２）。
図９のＢ２０４のデータ参照有無記録領域を見ると、保管バッファ６はすでにデータ参照Ｓ／Ｗ１が参照済みであることがわかる。図９のＢ２０４のデータ格納順番記録領域を見ると、保管バッファ７に最新の車速データが格納されているとわかる。
よって、バッファ管理Ｓ／Ｗ４は、データ参照Ｓ／Ｗ１に対して、保管バッファ７を参照するよう指示し、保管バッファ７のデータ参照有無記録領域７１にデータ参照Ｓ／Ｗ１が参照したことを記録する（図８ステップ１０２０９）。データ参照Ｓ／Ｗ１は、取得したデータＮ＋１を用いて演算処理を行う。
図７ステップＳ２２２後の各保管バッファの状況は図９のＢ２０５となる。
【００５９】
次に、データ参照Ｓ／Ｗ３が起動して、データの参照を要求する（図７ステップＳ４２１）。データ参照Ｓ／Ｗ３の参照要求により起動したバッファ管理Ｓ／Ｗ４は、データ格納順番記録領域６２、７２、８２とデータ参照有無記録領域６１、７１、８１の情報を確認する（図８ステップＳ１０２０２）。
図９のＢ２０５のデータ参照有無記録領域を見ると、保管バッファ６と保管バッファ７は、いずれかのデータ参照Ｓ／Ｗが参照済みであり、データ参照Ｓ／Ｗ３はまだどの保管バッファも参照していないことがわかる。
また、図９のＢ２０５のデータ格納順番記録領域を見ると、いずれかのデータ参照Ｓ／Ｗが参照済みである保管バッファ６と保管バッファ７では、保管バッファ６の方が古いデータを格納していることがわかる。
よって、バッファ管理Ｓ／Ｗ４は、データ参照Ｓ／Ｗ３に対して、先に起動したデータ参照Ｓ／Ｗ１とデータ参照Ｓ／Ｗ２が参照した保管バッファ６を参照するように指示し（図８ステップ１０２０５）、保管バッファ６のデータ参照有無記録領域６１にデータ参照Ｓ／Ｗ３が参照したことを記録する（図８ステップ１０２０６）。その後、データ参照Ｓ／Ｗ３は、取得したデータＮを用いて演算処理を行う。
図７ステップＳ３２１後の各保管バッファの状況は図９のＢ２０６となる。
【００６０】
このとき、図９のＢ２０６のデータ参照有無記録領域を見ると、保管バッファ６に保管された車速データは、すべてのデータ参照Ｓ／Ｗが参照したとわかる。よって、保管バッファ６の車速データを保管しておく必要はなくなるので、保管バッファ６のデータ参照有無記録領域６１をすべて未参照にする（図８ステップ１０２１１）。
図７ステップＳ４２１後の各保管バッファの状況は、図９のＢ２０７となる。
【００６１】
次に、Ｒ＋１サイクル目のデータ参照Ｓ／Ｗ２が起動して、データの参照を要求する（図７ステップＳ３２２）。データ参照Ｓ／Ｗ２の参照要求により起動したバッファ管理Ｓ／Ｗ４は、データ格納順番記録領域６２、７２、８２とデータ参照有無記録領域６１、７１、８１の情報を確認する（図８ステップＳ１０２０２）。
図９のＢ２０７のデータ参照有無記録領域を見ると、保管バッファ７はデータ参照Ｓ／Ｗ１のみが参照済みで、保管バッファ６と保管バッファ８を参照したデータ参照Ｓ／Ｗはないことがわかる。
よって、バッファ管理Ｓ／Ｗ４は、データ参照Ｓ／Ｗ２に対して、先に起動したデータ参照Ｓ／Ｗ１の参照した保管バッファ７を参照するように指示し（図８ステップ１０２０５）、保管バッファ７のデータ参照有無記録領域７１にデータ参照Ｓ／Ｗ２が参照したことを記録する（図８ステップ１０２０６）。その後、データ参照Ｓ／Ｗ２は、取得したデータＮ＋１を用いて演算処理を行う。
図７ステップＳ３２２後の各保管バッファの状況は、図９のＢ２０８となる。
【００６２】
次に、Ｒ＋１サイクル目のデータ参照Ｓ／Ｗ３が起動して、データの参照を要求する（図７ステップＳ４２２）。データ参照Ｓ／Ｗ３の参照要求により起動したバッファ管理Ｓ／Ｗ４は、データ格納順番記録領域６２、７２、８２とデータ参照有無記録領域６１、７１、８１の情報を確認する（図８ステップＳ１０２０２）。
図９のＢ２０８のデータ参照有無記録領域を見ると、保管バッファ７はデータ参照Ｓ／Ｗ１とデータ参照Ｓ／Ｗ２が参照済みで、保管バッファ６と保管バッファ８を参照したデータ参照Ｓ／Ｗはないとわかる。よって、バッファ管理Ｓ／Ｗ４は、データ参照Ｓ／Ｗ３に対して、先に起動したデータ参照Ｓ／Ｗ１とデータ参照Ｓ／Ｗ２の参照した保管バッファ７を参照するよう指示し（図８ステップ１０２０５）、保管バッファ７のデータ参照有無記録領域７１にデータ参照Ｓ／Ｗ３が参照したことを記録する（図８ステップ１０２０６）。その後、データ参照Ｓ／Ｗ３は、取得したデータＮを用いて演算処理を行う。
図７ステップＳ４２２後の各保管バッファの状況は、図９のＢ２０９となる。
【００６３】
このとき、図９のＢ２０９のデータ参照有無記録領域を見ると、保管バッファ７に保管された車速データは、すべてのデータ参照Ｓ／Ｗが参照したとわかる。
よって、保管バッファ７の車速データを保管しておく必要はなくなるので、保管バッファ７のデータ参照有無記録領域７１をすべて未参照にする（図８ステップ１０２１１）。
図７ステップＳ４２１後の各保管バッファの状況は図９のＢ２１０となる。
【００６４】
＜実施の形態２の動作例２における効果＞
本実施の形態２における動作例２によれば、データを格納する複数の保管バッファと保管バッファ毎にデータ参照Ｓ／Ｗの参照有無を記録する領域及びデータを格納する順番を記録する領域を備えることで、異なるサイクルのデータ参照Ｓ／Ｗの実行順番が入れ替わったとしても、各データ参照Ｓ／Ｗで演算する際に必要なデータの整合性を保証できる。  
【００６５】
＜動作例３＞
動作例２では、最新の車速データを保管バッファへ格納したことにより、バッファ管理Ｓ／Ｗ４の提供するデータの整合性が崩れることはなかった。しかし、最新の車速データを保管バッファへ格納したことで、データの整合性が崩れてしまう場合もある。動作例３では、そのような場合におけるデータの整合性を保証する方法を説明する。動作例３は、図８、図１０、図１１を用いて説明する。
【００６６】
動作例２では、Ｒサイクル目のデータ参照Ｓ／Ｗ３（図７ステップＳ４２１）とＲ＋１サイクル目のデータ参照Ｓ／Ｗ１（図７ステップＳ２２２）の起動順番のみ入れ替わった
条件であった。
動作例３では、Ｒサイクル目のデータ参照Ｓ／Ｗ３（図１０ステップＳ４３１）が起動するよりも早く、さらに新しい車速データ（データＮ＋２）を取得し（図１０ステップＳ５３２）、Ｒ＋２サイクル目のデータ参照Ｓ／Ｗ１が起動（図１０ステップＳ２３３）した場合のデータ参照Ｓ／Ｗの起動順番を考える。
このときの、動作例３における初期条件は、動作例２の初期条件と同じとする。また、図１１に示すように、動作例３における、データ参照Ｓ／Ｗ１が起動してデータＮ＋１を用いて演算するまでの処理の流れも、動作例２の処理の流れと同じとする。
【００６７】
動作例３では、ステップＳ５３２からの処理の流れについて説明する。
データ参照Ｓ／Ｗ１が起動してデータＮ＋１を用いて演算した後、バッファ管理Ｓ／Ｗ４は、最新の車速データ（データＮ＋２）を取得した（図１０ステップＳ５３２）。本実施の形態２において、最新データを取得した場合、その時点でどのデータ参照Ｓ／Ｗも参照していない保管バッファのうち、最も古い保管バッファに格納するものとする。
図１１のＢ３０５のデータ参照有無記録領域を見ると、保管バッファ６および保管バッファ７には、整合性を保証しなければならないデータが保管されているので、最新データで更新できない。保管バッファ８に関しては、どのデータ参照Ｓ／Ｗも参照していないので、整合性を保証しなければならないデータではない。
また、図１１のＢ３０５のデータ格納順番記録領域を見ると、保管バッファ８に最も古い車速データが保管されていることがわかる。
よって、提供された最新の車速データを格納するバッファは、保管バッファ８となり、保管バッファ８のデータ格納順番記録領域８２を更新する（図１１のＢ３０６）。
【００６８】
次に、Ｒ＋２サイクル目のデータ参照Ｓ／Ｗ１が起動し、データの参照を要求する（図１０ステップＳ２３３）。データ参照Ｓ／Ｗ１の参照要求により起動したバッファ管理Ｓ／Ｗ４は、データ格納順番記録領域６２、７２、８２とデータ参照有無記録領域６１、７１、８１の情報を確認する（図８ステップＳ１０２０２）。
図１１のＢ３０６のデータ参照有無記録領域を見ると、保管バッファ６および保管バッファ７はすでにデータ参照Ｓ／Ｗ１が参照済みであることがわかる。図１１のＢ３０６のデータ格納順番記録領域を見ると、保管バッファ８に最新の車速データが格納されていることがわかる。
よって、バッファ管理Ｓ／Ｗ４は、データ参照Ｓ／Ｗ１に対して、保管バッファ８を参照するよう指示するが、データ参照Ｓ／Ｗ１が保管バッファ８を参照してしまった場合、全ての保管バッファにおいてデータ参照Ｓ／Ｗ１が参照済みとなる（図１１のＢ３０７）。つまり、図１１のＢ３０７の状態は、全ての保管バッファには整合性を保証しなければならないデータが保管されていることを意味する。
【００６９】
ここで、さらに新しいデータ（データＮ＋３）を取得したとする（図１０ステップＳ５３３）。どのデータ参照Ｓ／Ｗも参照していない保管バッファが存在しない場合は、最も古い保管バッファへ最新データを格納することとしたので、バッファ管理Ｓ／Ｗ４は、保管バッファ６にデータＮ＋３を格納することになる（図１１のＢ３０８）。
すると、保管バッファ６に元々保管されていたデータＮを参照していないデータ参照Ｓ／Ｗ３は、データＮを参照することができなくなるため、バッファ管理Ｓ／Ｗ４は、整合性の保証したデータをデータ参照Ｓ／Ｗ３に対して提供することができない。
【００７０】
そこで、上記のような図１１のＢ３０６の状態で、データの参照を要求してきたデータ参照Ｓ／Ｗ１が、最新データ以外のデータが保管されているすべての保管バッファを参照済みの状況であるかどうかを判定する（図８ステップＳ１０２０８）。判定した結果、最新データ以外のデータが保管されている保管バッファで未参照である保管バッファが存在した場合、最新データの保管された保管バッファを参照するよう指示し（図８ステップＳ１
０２０９）、そうでない場合は何も指示しない（保管バッファを参照しないよう指示する）。
これにより、図１１のＢ３０７の状態になることはなくなる。
【００７１】
＜実施の形態２の動作例３における効果＞
本実施の形態２における動作例３によれば、保管バッファ毎に各データ参照Ｓ／Ｗの参照有無を記録することで、データの整合性が崩れてしまう状況を検知することができる。
そして、データの整合性が崩れてしまう状況を検知した場合、データ参照Ｓ／Ｗに対して、保管バッファを参照しないように指示することで、保管バッファに保管されているデータの整合性を保証することができる。
【００７２】
＜動作例４＞
動作例３によれば、データ参照Ｓ／Ｗの参照要求があった時点で、データの整合性が崩れてしまう状況であるかどうかを判断するとした。しかし、データの参照を要求されるよりも前の時点でデータの整合性が崩れてしまう状況であるかどうかを判断できれば、データ参照Ｓ／Ｗの余分な参照要求を削減できる。
【００７３】
そこで、各データ参照Ｓ／Ｗの起動時間を時間計測手段で計測し、バッファ管理Ｓ／Ｗ４によりデータ参照Ｓ／Ｗの起動間隔を算出する。
バッファ管理Ｓ／Ｗ４は、算出した各データ参照Ｓ／Ｗの起動間隔を比較することで、起動間隔が極端に短いデータ参照Ｓ／Ｗを判定する。
起動間隔が極端に短いデータ参照Ｓ／Ｗが存在した場合、その他のデータ参照Ｓ／Ｗと起動間隔が同程度になるように、そのデータ参照Ｓ／Ｗの起動タイミングを調整する。
【００７４】
図１２のようなデータ参照Ｓ／Ｗ１とデータ参照Ｓ／Ｗ２の起動間隔が、データ参照Ｓ／Ｗ３よりも短い場合を考える。
図１２の時刻Ｔ１を見ると、データ参照Ｓ／Ｗ３は５回目の起動が始まるタイミングだが、データ参照Ｓ／Ｗ２は６回目、データ参照Ｓ／Ｗ１は８回目の起動が始まるタイミングであり、データの整合性が崩れる状況になりつつある。
【００７５】
そこで、図１３に示すように、バッファ管理Ｓ／Ｗ４が、起動間隔の短いデータ参照Ｓ／Ｗ１とデータ参照Ｓ／Ｗ２の実行間隔に調整時間を組み込むことで（図１３の調整時刻ＡＴ１、ＡＴ２）、最も起動間隔の長いデータ参照Ｓ／Ｗ３の起動タイミングに合わせる。
この場合、データ参照要求してきたデータ参照Ｓ／Ｗに対し、調整時間後にもう一度参照要求させるか、あるいは、データ参照Ｓ／Ｗに対し、次回データ参照要求するタイミングを指示することにより行う。
この処理により、データ参照Ｓ／Ｗの起動順番の入れ替わり頻度の低減や、データ参照Ｓ／Ｗの余分な参照要求の削減を行える。
【００７６】
＜実施の形態２の動作例４における効果＞
本実施の形態２における動作例４によれば、データを格納する複数の保管バッファと保管バッファ毎にデータ参照Ｓ／Ｗの参照有無を記録する領域及びデータを格納する順番を記録する領域、さらにデータ参照Ｓ／Ｗの起動時間を計測する手段を備えることで、データ参照Ｓ／Ｗの起動タイミングを調整し、データ参照Ｓ／Ｗをより理想的な起動順番（図２参照）に近づけることができる。
そして、データ参照Ｓ／Ｗをより理想的な起動順番に近づけることで、データの整合性が崩れる状況を回避することができる。
【００７７】
なお、本発明は、その発明の範囲内において、各実施の形態を自由に組み合わせたり、
各実施の形態を適宜、変形、省略することが可能である。
【符号の説明】
【００７８】
１〜３  データ参照Ｓ／Ｗ
４  バッファ管理Ｓ／Ｗ
４１  演算用データ保管バッファ
４１１  データ参照有無記録領域
６〜８  保管バッファ
６１  保管バッファ６用データ参照有無記録領域
６２  保管バッファ６用データ格納順番記録領域
７１  保管バッファ７用データ参照有無記録領域
７２  保管バッファ７用データ格納順番記録領域
８１  保管バッファ８用データ参照有無記録領域
８２  保管バッファ８用データ格納順番記録領域
【図１】
0005438800.tif 000002
【図２】
0005438800.tif 000003
【図３】
0005438800.tif 000004
【図４】
0005438800.tif 000005
【図５】
0005438800.tif 000006
【図６】
0005438800.tif 000007
【図７】
0005438800.tif 000008
【図８】
0005438800.tif 000009
【図９】
0005438800.tif 000010
【図１０】
0005438800.tif 000011
【図１１】
0005438800.tif 000012
【図１２】
0005438800.tif 000013
【図１３】
0005438800.tif 000014