(57)【要約】【課題】ライトバック方式とライトスルー方式との切り替えを行うことなく、特定のデータについてはデータの一貫性を保つことのできるデータ処理装置を提供する。【解決手段】エンジンＥＣＵ１０が備える第１のマイコン２０は、ライトバック方式のデータ更新を行い、特定のデータについてのデータ書込処理を行った場合には、そのデータと同一のインデックスでタグの異なるダミーデータについてのデータ書込処理（強制ライトバック）を行う。このため、キャッシュメモリ２３に書き込まれた特定のデータは、ダミーデータの書き込みによって直ちにキャッシュメモリ２３から追い出され、主記憶ＲＡＭ２１に書き込まれる。したがって、ライトスルー方式への切り替えを行うことなく、特定のデータについてはキャッシュメモリ２３及び主記憶ＲＡＭ２１の両方に同一のデータが記憶されるようにすることができる。【選択図】図１
2009104300.tif 000002
【特許請求の範囲】
【請求項１】
データを記憶する主記憶装置と、
前記主記憶装置に記憶されているデータを読み出すためのデータ読出処理及び前記主記憶装置にデータを書き込むためのデータ書込処理を行うプロセッサと、
前記主記憶装置に記憶されているデータの一部をそのアドレスとともに記憶可能であって、前記主記憶装置に代えて又は前記主記憶装置とともに前記プロセッサによる前記データ読出処理及び前記データ書込処理が行われるキャッシュメモリと、
を備え、前記キャッシュメモリを用いたライトバック方式のデータ更新を行うデータ処理装置において、
前記プロセッサは、特定のデータについて前記データ書込処理を行った場合には、その特定のデータとアドレスは異なるが前記キャッシュメモリにおける書き込み位置が同一となるダミーデータについて前記データ書込処理を行うこと
を特徴とするデータ処理装置。
【請求項２】
前記主記憶装置及び前記プロセッサを複数組備えるとともに、
前記主記憶装置間でデータを転送する転送手段を備えること
を特徴とする請求項１に記載のデータ処理装置。
【請求項３】
前記プロセッサを複数備えるとともに、
前記主記憶装置は、複数のプロセッサにより共有利用されること
を特徴とする請求項１に記載のデータ処理装置。
【請求項４】
前記主記憶装置は、当該データ処理装置への電力供給が停止されてもバッテリにより作動状態が保持されること
を特徴とする請求項１に記載のデータ処理装置。
【請求項５】
前記ダミーデータのアドレスは、前記主記憶装置における未使用領域であること
を特徴とする請求項１から請求項４までのいずれか１項に記載のデータ処理装置。
【請求項６】
データの書き込みが不能な読出専用記憶装置を備え、
前記ダミーデータのアドレスは、前記読出専用記憶装置のアドレスであること
を特徴とする請求項１から請求項４までのいずれか１項に記載のデータ処理装置。
【請求項７】
前記ダミーデータのアドレスは、記憶装置の実装されていないアドレスであること
を特徴とする請求項１から請求項４までのいずれか１項に記載のデータ処理装置。
【請求項８】
車両を制御するための制御装置である車両制御装置に用いられること
を特徴とする請求項１から請求項７までのいずれか１項に記載のデータ処理装置。
【請求項９】
車両の駆動力発生装置を制御する車両制御装置に用いられること
を特徴とする請求項８に記載のデータ処理装置。
【請求項１０】
データを記憶する主記憶装置と、
前記主記憶装置に記憶されているデータを読み出すためのデータ読出処理及び前記主記憶装置にデータを書き込むためのデータ書込処理を行うプロセッサと、
前記主記憶装置に記憶されているデータの一部をそのアドレスとともに記憶可能であって、前記主記憶装置に代えて又は前記主記憶装置とともに前記プロセッサによる前記データ読出処理及び前記データ書込処理が行われるキャッシュメモリと、
を備え、前記キャッシュメモリを用いたライトバック方式のデータ更新を行うデータ処理装置における前記プロセッサとして用いられるコンピュータに、
特定のデータについて前記データ書込処理を行った場合には、その特定のデータとアドレスは異なるが前記キャッシュメモリにおける書き込み位置が同一となるダミーデータについて前記データ書込処理を行わせること
を特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ライトバック方式のデータ更新を行うデータ処理装置に関するものである。
【背景技術】
【０００２】
従来、主記憶装置に比べて処理性能の高いプロセッサを用いた場合に、主記憶装置の処理性能がボトルネックとなってプロセッサの性能が十分に発揮されないという問題に対応するため、主記憶装置に記憶されているデータの一部を主記憶装置よりも高速なキャッシュメモリにコピーして保持させることにより、プロセッサから主記憶装置へのアクセスを減らして処理の高速化を図る構成が利用されている。
【０００３】
そして、このような構成におけるデータ更新方式としては、ライトスルー方式とライトバック方式とが知られている。
ライトスルー方式は、図１７（ａ）に示すように、ＣＰＵ（プロセッサ）がデータ書込処理を行う際に、キャッシュメモリ内のブロックにデータを書き込むと同時に主記憶装置内の対応するブロックにも同時にデータを書き込む方式である。このため、主記憶装置とキャッシュメモリとの間でデータの一貫性が保たれるという利点があるが、主記憶装置へのアクセス頻度が高くなる分、処理速度が低下するという問題があり、高速の処理には適さない。
【０００４】
一方、ライトバック方式は、図１７（ｂ）に示すように、ＣＰＵ（プロセッサ）がデータ書込処理を行う際に、同一アドレスのデータがキャッシュメモリのブロックに記憶されている場合にはそのデータのみを更新し、主記憶装置のデータは更新しない方式である。そして、キャッシュメモリに記憶されているデータを異なるアドレスのデータで上書きする必要が生じた時点で、その記憶されているデータを主記憶装置内の対応するブロックに書き込む。
【０００５】
ここで、ライトバック方式の一例として、ダイレクトマッピング方式（１ウェイセットアソシアティブ方式）のキャッシュメモリの追い出しメカニズムについて、図１８を用いて説明する。
【０００６】
２５６バイトのデータキャッシュメモリにおいて、１ブロックのサイズを４バイトとすると、２５６／４＝６４個のブロックが存在する。キャッシュメモリには、０〜６３のインデックス（ブロック番号）ごとに、主記憶装置におけるアドレスの上位８ビットを抽出したデータがタグとして記憶される。また、アドレスの下位８ビット中の６ビット（４バイトキャッシュのため、下位２ビットは不要）を抽出したデータをインデックスとする。例えば、アドレスが０ｘＦ００８（０ｘ：１６進数表記のプレフィックス）の場合、タグ「０ｘＦ０」、インデックス「２」となり、アドレスが０ｘＦＣ０８の場合、タグ「０ｘＦＣ」、インデックス「２」となる。
【０００７】
そして、キャッシュヒット判定では、書き込みを行うデータのアドレスから抽出されるインデックス及びタグと同一インデックスかつ同一タグのデータがキャッシュメモリに存在している場合にはヒット、そのようなデータが存在していない場合にはミスヒットとなる。ミスヒットの場合、キャッシュメモリに存在する該当インデックスのデータがキャッシュメモリから追い出され、主記憶装置に書き込まれる。なお、キャッシュメモリに存在するデータの主記憶装置におけるアドレスは、タグ＋インデックスから判明する。
【０００８】
例えば、次の処理（１）〜（５）が順に行われたとする。
（１）変数Ａ（アドレス：０ｘＦＦ００、インデックス：０）に１０を代入。
（２）変数Ｂ（アドレス：０ｘＦＦ０４、インデックス：１）に２０を代入。
【０００９】
（３）変数Ｃ（アドレス：０ｘＦＦ０８、インデックス：２）に３０を代入。
（４）変数Ｄ（アドレス：０ｘＦＣ０４、インデックス：１）に１００を代入。
（５）変数Ｅ（アドレス：０ｘＦＥ０８、インデックス：２）に１１０を代入。
【００１０】
この場合、まず、上記（１）の処理により、キャッシュメモリのインデックス「０」のタグが「０ｘＦＦ」に更新され、データ「１０」が書き込まれる。
続いて、上記（２）の処理により、キャッシュメモリのインデックス「１」のタグが「０ｘＦＦ」に更新され、データ「２０」が書き込まれる。
【００１１】
続いて、上記（３）の処理により、キャッシュメモリのインデックス「２」のタグが「０ｘＦＦ」に更新され、データ「３０」が書き込まれる。
続いて、上記（４）の処理により、キャッシュメモリのインデックス「１」のタグが「０ｘＦＣ」に更新され、データ「１００」が書き込まれる。このとき、上記（２）の処理でキャッシュメモリに書き込まれたデータ「２０」はキャッシュメモリから追い出されて主記憶メモリに書き込まれる（ミスヒットによる追い出し発生）。
【００１２】
続いて、上記（５）の処理により、キャッシュメモリのインデックス「２」のタグが「０ｘＦＥ」に更新され、データ「１１０」が書き込まれる。このとき、上記（３）の処理でキャッシュメモリに書き込まれたデータ「３０」はキャッシュメモリから追い出されて主記憶メモリに書き込まれる（ミスヒットによる追い出し発生）。
【００１３】
つまり、ライトバック方式では、キャッシュメモリに記憶されているデータがキャッシュメモリから追い出されることにより初めてそのデータが主記憶装置に書き込まれることになる。このため、ライトスルー方式に比べ、主記憶装置へのアクセスを大幅に減らすことが可能となり、処理速度が高速になるという利点がある。その反面、ミスヒットによる追い出しが発生するまではキャッシュメモリに記憶されている最新のデータが主記憶装置に書き込まれないこととなり、データの一貫性は保たれない。したがって、キャッシュメモリと主記憶装置との間でデータの一貫性が要求されるデータが一部でも存在する場合には、ライトバック方式を採用できないという問題がある。
【００１４】
そこで、ある特定のメモリアクセス時のみライトスルー方式とする技術（特許文献１）や、動作中に任意に両方式を切り替えられる機構を持つ技術（特許文献２）が提案されている。
【特許文献１】特開平２−２２６４４９号公報
【特許文献２】特開平６−３４８５９２号公報
【発明の開示】
【発明が解決しようとする課題】
【００１５】
しかしながら、前述した特許文献１，２で提案されている技術は、ライトスルー方式とライトバック方式との切り替えを行うものであり、切り替えのための回路（ハードウェア）が余分に必要となるという問題があった。
【００１６】
本発明は、こうした問題にかんがみてなされたものであり、ライトバック方式とライトスルー方式との切り替えを行うことなく、特定のデータについてはデータの一貫性を保つことのできるデータ処理装置を提供することを目的としている。
【課題を解決するための手段】
【００１７】
上記目的を達成するためになされた本発明の請求項１に記載のデータ処理装置は、キャッシュメモリを用いたライトバック方式のデータ更新を行うものである。具体的には、データを記憶する主記憶装置と、主記憶装置に記憶されているデータを読み出すためのデータ読出処理及び主記憶装置にデータを書き込むためのデータ書込処理を行うプロセッサとを備える。また、主記憶装置に記憶されているデータの一部をそのアドレスとともに記憶可能であって、主記憶装置に代えて又は主記憶装置とともにプロセッサによるデータ読出処理及びデータ書込処理が行われるキャッシュメモリを備える。
【００１８】
そして、このデータ処理装置において、プロセッサは、特定のデータについてデータ書込処理を行った場合には、その特定のデータとアドレスは異なるがキャッシュメモリにおける書き込み位置が同一となるダミーデータについてデータ書込処理を行う。
【００１９】
すなわち、ライトバック方式のデータ更新では、プロセッサによりデータ書込処理が行われた場合、書き込みを行うデータと同一アドレスのデータがキャッシュメモリに存在していれば、キャッシュメモリに存在するデータのみが更新され、主記憶装置に記憶されているデータは更新されない。このため、キャッシュメモリに記憶されているデータと主記憶装置に記憶されているデータとが異なる状態が生じ得る。
【００２０】
そこで、本発明のデータ処理装置は、特定のデータについてデータ書込処理を行った場合には、その特定のデータとアドレスは異なるがキャッシュメモリにおける書き込み位置が同一となるダミーデータについてデータ書込処理を行う。これにより、キャッシュメモリに書き込まれた特定のデータは、ダミーデータの書き込みによって直ちにキャッシュメモリから追い出され、主記憶装置に書き込まれる。つまり、特定のデータについては、ライトスルー方式と同様、最新のデータがキャッシュメモリだけでなく主記憶装置にも書き込まれることになる。
【００２１】
したがって、本発明のデータ処理装置によれば、従来のライトバック方式の構成をそのまま利用して、ライトスルー方式への切り替えを行うことなく、特定のデータについてはデータの一貫性を保つことができる。なお、特定のデータ以外については従来のライトバック方式のデータ更新が行われるため、ライトスルー方式に比べ処理を高速にすることができる。
【００２２】
このようなデータ処理装置は、例えば請求項２〜請求項４に記載のような構成において特に優れた効果を発揮する。
すなわち、請求項２に記載のデータ処理装置は、主記憶装置及びプロセッサを複数組備えるとともに、主記憶装置間でデータを転送する転送手段を備える。このような構成のデータ処理装置では、キャッシュメモリに記憶されているデータが最新のものであっても、主記憶装置に記憶されているデータが最新のものでなければ（古ければ）、その古いデータが他の主記憶装置に転送され、他のプロセッサによりそのデータに基づく処理が行われてしまうことになる。したがって、特定のデータについてデータの一貫性を保つことによる効果が高い。
【００２３】
また、請求項３に記載のデータ処理装置は、プロセッサを複数備えるとともに、主記憶装置は、複数のプロセッサにより共有利用される。このような構成のデータ処理装置では、キャッシュメモリに記憶されているデータが最新のものであっても、主記憶装置に記憶されているデータが最新のものでなければ（古ければ）、他のプロセッサによりその古いデータに基づく処理が行われてしまうことになる。したがって、特定のデータについてデータの一貫性を保つことによる効果が高い。
【００２４】
また、請求項４に記載のデータ処理装置では、主記憶装置は、当該データ処理装置への電力供給が停止されてもバッテリにより作動状態が保持される。このような構成のデータ処理装置では、キャッシュメモリに記憶されているデータが最新のものであっても、主記憶装置に記憶されているデータが最新のものでなければ（古ければ）、当該データ処理装置への電力供給が停止された場合に最新のデータが消失して古いデータのみが残ってしまうことになる。したがって、特定のデータについてデータの一貫性を保つことによる効果が高い。
【００２５】
ところで、ダミーデータのアドレスとしては、例えば請求項５〜請求項７に記載のアドレスが挙げられる。
すなわち、例えば請求項５に記載のデータ処理装置では、ダミーデータのアドレスは、主記憶装置における未使用領域である。このようなデータ処理装置によれば、主記憶装置を効率よく利用してダミーデータを記憶させることができる。
【００２６】
また、請求項６に記載のデータ処理装置は、データの書き込みが不能な読出専用記憶装置を備え、ダミーデータのアドレスは、読出専用記憶装置のアドレスである。このようなデータ処理装置によれば、読出専用記憶装置のアドレスを利用することで、ダミーデータを記憶するための領域を主記憶装置に設ける必要がなくなる。
【００２７】
また、請求項７に記載のデータ処理装置では、ダミーデータのアドレスは、記憶装置の実装されていないアドレスである。このようなデータ処理装置によれば、記憶装置の実装されていないアドレスを利用することで、ダミーデータを記憶するための領域を主記憶装置に設ける必要がなくなる。
【００２８】
ところで、本発明のデータ処理装置は、例えば請求項８に記載のように、車両を制御するための制御装置である車両制御装置に用いられることが好ましい。車両制御装置では、高いリアルタイム応答性が要求されるからである。
【００２９】
特に、請求項９に記載のように、車両の駆動力発生装置を制御する車両制御装置は、車両制御装置の中でも非常に高いリアルタイム応答性が要求されるため、非常に効果的である。
【００３０】
次に、請求項１０に記載のプログラムは、データを記憶する主記憶装置と、主記憶装置に記憶されているデータを読み出すためのデータ読出処理及び主記憶装置にデータを書き込むためのデータ書込処理を行うプロセッサと、主記憶装置に記憶されているデータの一部をそのアドレスとともに記憶可能であって、主記憶装置に代えて又は主記憶装置とともにプロセッサによるデータ読出処理及びデータ書込処理が行われるキャッシュメモリとを備え、キャッシュメモリを用いたライトバック方式のデータ更新を行うデータ処理装置におけるプロセッサとして用いられるコンピュータに、特定のデータについてデータ書込処理を行った場合には、その特定のデータとアドレスは異なるがキャッシュメモリにおける書き込み位置が同一となるダミーデータについてデータ書込処理を行わせるものである。
【００３１】
このようなプログラムによれば、請求項１のデータ処理装置としてコンピュータを機能させることができ、これにより前述した効果を得ることができる。
【発明を実施するための最良の形態】
【００３２】
以下、本発明が適用された実施形態について、図面を用いて説明する。
［１．第１実施形態］
まず、第１実施形態のエンジンＥＣＵについて説明する。
【００３３】
［１−１．全体構成］
図１は、第１実施形態のエンジンＥＣＵ１０の概略構成を示すブロック図である。
このエンジンＥＣＵ１０は、車両（自動車）のエンジンを制御するための電子制御装置であり、主としてダイアグ処理（センサ等の故障診断）を行う第１のマイクロコンピュータ（以下「マイコン」と略す。）２０と、主としてエンジン制御のための処理を行う第２のマイコン３０とを備えている。
【００３４】
第１のマイコン２０は、データを記憶する主記憶装置としての主記憶ＲＡＭ２１と、主記憶ＲＡＭ２１に記憶されているデータを読み出すためのデータ読出処理及び主記憶ＲＡＭ２１にデータを書き込むためのデータ書込処理を行うプロセッサとしてのメインＣＰＵ２２とを備えている。
【００３５】
また、第１のマイコン２０は、主記憶ＲＡＭ２１に記憶されているデータの一部をそのアドレスとともに記憶可能であって、主記憶ＲＡＭ２１に代えて又は主記憶ＲＡＭ２１とともにメインＣＰＵ２２によるデータ読出処理及びデータ書込処理が行われるデータキャッシュメモリ（以下、単に「キャッシュメモリ」という。）２３を備えており、キャッシュメモリ２３を用いたライトバック方式のデータ更新を行う。
【００３６】
さらに、第１のマイコン２０は、第２のマイコン３０との間でのデータ通信を行うための通信インタフェース２４と、主記憶ＲＡＭ２１に記憶されているデータを第２のマイコン３０の主記憶ＲＡＭ３１へ転送するためのＤＭＡコントローラ２５とを備えている。
【００３７】
その他、第１のマイコン２０は、データの読み出し専用の（データの書き込みが不能な）フラッシュＲＯＭ２６を備えている。
一方、第２のマイコン３０も、第１のマイコン２０と同様に構成されており、主記憶ＲＡＭ３１、サブＣＰＵ３２、キャッシュメモリ３３、通信インタフェース３４、ＤＭＡコントローラ３５、フラッシュＲＯＭ３６を備えている。
【００３８】
［１−２．エンジンＥＣＵで行われる処理］
次に、エンジンＥＣＵ１０で行われる処理について説明する。
エンジンＥＣＵ１０が備える２つのマイコン２０，３０では、第１のマイコン２０の主記憶ＲＡＭ２１に記憶されているデータが第２のマイコン３０の主記憶ＲＡＭ３１へ転送される。このため、第１のマイコン２０のキャッシュメモリ２３に記憶されているデータが最新のものであっても、その第１のマイコン２０の主記憶ＲＡＭ２１に記憶されているデータが最新のものでなければ（古ければ）、その古いデータが第２のマイコン３０の主記憶ＲＡＭ３１に転送され、第２のマイコン３０においてその古いデータに基づく処理が行われてしまうことになる。
【００３９】
そこで、第１のマイコン２０では、メインＣＰＵ２２が特定のデータについてのデータ書込処理を行った場合には、その直後に、そのデータと同一のインデックスでタグの異なるダミーデータについてのデータ書込処理を行うことで、その特定のデータをキャッシュメモリ２３から強制的に追い出す処理（以下「強制ライトバック」という。）を行う。
【００４０】
以下、強制ライトバックによる効果を分かりやすくするため、強制ライトバックを行う場合の処理（図２（ｂ））を、強制ライトバックを行わない場合の処理（図２（ａ））と比較して説明する。
【００４１】
［１−２−１．強制ライトバックを行わない場合］
まず、強制ライトバックを行わない場合の処理について説明する。
図３は、フラッシュＲＯＭ２６に記憶されているプログラムに従いメインＣＰＵ２２が定期的に実行する水温センサ故障診断処理のフローチャートである。
【００４２】
メインＣＰＵ２２は、水温センサ（エンジン水温を検出するために設けられているセンサ）の検出電圧をＡ／Ｄ変換したデジタル値の電圧データを、あらかじめ記憶されているマップに基づきエンジン水温にリニアライズ変換する。その際、メインＣＰＵ２２は、その電圧データに基づき、水温センサが故障（断線故障又は短絡故障）しているか否かを判定する（Ｓ１０１）。具体的には、電圧値が短絡故障時に最小値（０Ｖ）となり断線故障時に最大値となる回路の場合、例えば、電圧値が０．５Ｖ未満であれば短絡故障、４．５Ｖを超えていれば断線故障と判定する。
【００４３】
そして、メインＣＰＵ２２は、この判定結果を水温センサ異常フラグのデータとして書き込む処理を行う（Ｓ１０２）。
具体的には、ライトバック方式による書込みのため、キャッシュメモリ２３に水温センサ異常フラグのデータが記憶されていない場合、つまりミスヒットの場合には、主記憶ＲＡＭ２１に記憶されている水温センサ異常フラグのデータが更新された後、そのデータがキャッシュメモリ２３にロードされる。つまり、水温センサ異常フラグの最新データがキャッシュメモリ２３及び主記憶ＲＡＭ２１の両方に記憶される。
【００４４】
これに対し、キャッシュメモリ２３に水温センサ異常フラグのデータが記憶されている場合、つまりキャッシュヒットの場合には、キャッシュメモリ２３に記憶されている水温センサ異常フラグのデータのみが更新される。一方、主記憶ＲＡＭ２１に記憶されている水温センサ異常フラグのデータは、キャッシュメモリ２３に記憶されている水温センサ異常フラグのデータが追い出されるまでは更新されない。
【００４５】
その後、メインＣＰＵ２２では、水温センサ異常フラグのデータがＯＦＦ（正常）であるか否かを判定する（Ｓ１０３）。
そして、水温センサ異常フラグのデータがＯＦＦ（正常）であると判定した場合には（Ｓ１０３：ＹＥＳ）、水温センサの検出電圧に基づくエンジン水温が各種処理に使用されるように設定する（Ｓ１０４）。
【００４６】
一方、水温センサ異常フラグのデータがＯＦＦでない、つまりＯＮ（異常）であると判定した場合には（Ｓ１０３：ＮＯ）、フェールセーフ値のエンジン水温（８０℃）が各種処理に使用されるように設定する（Ｓ１０５）。
【００４７】
一方、図４は、フラッシュＲＯＭ３６に記憶されているプログラムに従いサブＣＰＵ３２が実行するエンジン制御処理のフローチャートである。
サブＣＰＵ３２は、第１のマイコン２０のＤＭＡコントローラ２５により転送されるエンジン水温及び水温センサ異常フラグのデータを受信すると（Ｓ２０１）、受信した水温センサ異常フラグのデータがＯＦＦ（正常）であるか否かを判定する（Ｓ２０２）。なお、第１のマイコン２０のＤＭＡコントローラ２５により転送される水温センサ異常フラグのデータは、第１のマイコン２０の主記憶ＲＡＭ２１に記憶されているデータと同一のものである。
【００４８】
そして、水温センサ異常フラグのデータがＯＦＦ（正常）であると判定した場合には（Ｓ２０２：ＹＥＳ）、第１のマイコン２０から受信したエンジン水温が各種処理に使用されるように設定する（Ｓ２０３）。
【００４９】
一方、水温センサ異常フラグのデータがＯＦＦでない、つまりＯＮ（異常）であると判定した場合には（Ｓ２０２：ＮＯ）、フェールセーフ値のエンジン水温（８０℃）が各種処理に使用されるように設定する（Ｓ２０４）。
【００５０】
そして、サブＣＰＵ３２は、設定したエンジン水温に基づく噴射・点火処理を実行する（Ｓ２０５）。
なお、水温センサが故障した場合にフェールセーフ値のエンジン水温を使用する理由は次のとおりである。すなわち、故障した状態の水温センサの検出電圧をそのままエンジン水温に変換したとすると、断線故障の場合には極低温、短絡故障の場合には極高温と検出されてしまう。
【００５１】
ここで、エンジンの噴射処理では、インジェクタから噴射する燃料噴射量を計算するマップ補間処理において、エンジン水温が低い場合、暖気制御を早期に行い適温（８０℃程度）に近づけるために、噴射量を増量し、エンジン水温を上昇させる制御を行う。このため、例えば水温センサが断線故障した場合に、その異常状態が噴射処理を行うサブＣＰＵ３２に伝わらないと、極低温（例えば−４０℃）の水温で正常状態であると判定してしまい、実際のエンジン水温が適温（８０℃）になっていても、噴射増量をし続けるため、燃費の悪化や失火等が生じる。
【００５２】
また、エンジンの点火処理では、エンジン水温が低い場合は燃焼速度が遅いため、安定運転及び燃費向上の目的で進角させる制御を行う（暖気進角補正）。この制御では、水温が低いほど進角させる方向で制御する。このため、例えば水温センサが断線故障した場合に、その異常状態が点火処理を行うサブＣＰＵ３２に伝わらないと、極低温（例えば−４０℃）の水温で正常状態であると判定してしまい、−４０℃での進角制御が継続されることとなり、ノッキングの発生、燃費の悪化が生じる。
【００５３】
そこで、水温８０℃相当として適正水温、適正噴射量、適正点火時期で制御を行うフェールセーフ処理を行うようにしている。
以上のような処理によれば、図２（ａ）に示すように、第１のマイコン２０において例えば水温センサの断線故障が検出された場合、キャッシュメモリ２３に水温センサ異常フラグのデータが存在していれば、キャッシュメモリ２３のデータのみが更新され（ＯＦＦ→ＯＮ）、主記憶ＲＡＭ２１のデータは古いままとなる（ＯＦＦ）。
【００５４】
ここで、第１のマイコン２０の主記憶ＲＡＭ２１のデータは、ＤＭＡコントローラ２５により第２のマイコン３０の主記憶ＲＡＭ３１へ転送されるが、ＤＭＡコントローラ２５が送信用に取得するデータは最新の状態が反映されていない主記憶ＲＡＭ２１のデータ（ＯＦＦ）であり、キャッシュメモリ２３の最新データ（ＯＮ）は送信されない。このため、メインＣＰＵ２２はエンジン水温としてフェールセーフ値である８０℃を使用して各種処理を行うが、サブＣＰＵ３２は断線故障した状態の検出電圧を変換したエンジン水温（例えば−４０℃）を使用して制御を行うことになり、噴射・点火処理などに影響が生じてしまう。
【００５５】
［１−２−２．強制ライトバックを行う場合］
次に、強制ライトバックを行う場合の処理について説明する。
図５は、フラッシュＲＯＭ２６に記憶されているプログラムに従いメインＣＰＵ２２が定期的に実行する水温センサ故障診断処理のフローチャートである。この水温センサ故障診断処理は、図３の水温センサ故障診断処理と対比すると、Ｓ３０１，Ｓ３０２，Ｓ３０４〜Ｓ３０６の各処理内容は、Ｓ１０１〜Ｓ１０５の各処理内容と同一であり、Ｓ３０３の処理が追加されている点が異なる。
【００５６】
すなわち、メインＣＰＵ２２は、水温センサが故障しているか否かの判定結果を水温センサ異常フラグのデータとしてキャッシュメモリ２３に書き込む処理を行った後（Ｓ３０２）、強制ライトバック処理を行う（Ｓ３０３）。
【００５７】
具体的には、メインＣＰＵ２２は、水温センサ異常フラグのデータをキャッシュメモリ２３に書き込む処理を行った直後に、水温センサ異常フラグのデータとインデックスが同一でタグの異なるダミーデータを書き込む処理を行う。これにより、ダミーデータを書き込む直前にキャッシュメモリ２３に書き込んだ水温センサ異常フラグの最新データがキャッシュメモリ２３から追い出されて主記憶ＲＡＭ２１に書き込まれる。この結果、水温センサ異常フラグのデータについては常に最新のデータが主記憶ＲＡＭ２１に記憶されていることとなり、サブＣＰＵ３２においても水温センサの異常状態が直ちに検出され、フェールセーフ値であるエンジン水温８０℃による制御が行われる。
【００５８】
なお、サブＣＰＵ３２が実行するエンジン制御処理は前述したとおり（図４）であるため説明を省略する。
以上のような処理によれば、図２（ｂ）に示すように、第１のマイコン２０において例えば水温センサの断線故障が検出された場合、キャッシュメモリ２３に水温センサ異常フラグのデータが存在していれば、主記憶ＲＡＭ２１は更新されずにキャッシュメモリ２３のデータのみが更新されるが（ＯＦＦ→ＯＮ）、その直後にダミーデータが上書きされることにより、キャッシュメモリ２３に書き込まれたばかりの水温センサ異常フラグの最新データ（ＯＮ）が追い出され、主記憶ＲＡＭ２１に記憶されている水温センサ異常フラグのデータが更新される（ＯＦＦ→ＯＮ）。
【００５９】
この結果、主記憶ＲＡＭ２１に記憶されている水温センサ異常フラグの最新データ（ＯＮ）がＤＭＡコントローラ２５により第２のマイコン３０の主記憶ＲＡＭ３１へ転送されることとなり、メインＣＰＵ２２及びサブＣＰＵ３２のいずれにおいても、エンジン水温としてフェールセーフ値である８０℃が使用されて各種処理が行われる。
【００６０】
なお、特定のデータ（ここでは水温センサ異常フラグを例示）以外のデータについては強制ライトバックを行わないため、従来のライトバック方式と同様に処理される。
［１−３．強制ライトバック処理の実現方法］
次に、前述した強制ライトバック処理の具体的な実現方法について説明する。
【００６１】
第１実施形態のエンジンＥＣＵ１０では、エンジンＥＣＵ１０に組み込むソフトウェア（プログラムコード）をコンパイルする前の段階において、コンパイラに特殊指示を与えることにより強制ライトバック用のコードが挿入される。
【００６２】
すなわち、図６に示すように、ソフトウェア（プログラムコード）上で、強制ライトバックを行いたい変数（この例では変数ｂ）の前後に、コンパイラへの特殊指示命令である「＃ｐｒａｇｍａ（プラグマ）」を挿入する。コンパイラは、ソフトウェアをコンパイルしてアセンブラコードを生成する際、前後に「＃ｐｒａｇｍａ」が挿入された変数ｂについては、その変数ｂとインデックスが同一でかつタグの異なるアドレスへの追い出しコード（ダミーデータの書き込みコード）を自動で挿入する。
【００６３】
例えば、変数ｂのアドレスが０ｘＦＦ０４（インデックス「１」、タグ「０ｘＦＦ」）の場合、追い出しコードの書き込み先アドレスを０ｘ６Ｃ０４（インデックス「１」、タグ「０ｘ６Ｃ」）とする。
【００６４】
図６の例では、まず、変数ａのデータ「１０」が、キャッシュメモリのインデックス「０」に、タグ「ＦＦ」とともに書き込まれる。続いて、変数ｂのデータ「２０」が、キャッシュメモリのインデックス「１」に、タグ「０ｘＦＦ」とともに書き込まれる。その直後に、同一のインデックス「１」に、異なるタグ「０ｘ６Ｃ」のデータが書き込まれ、変数ｂのデータ「２０」はキャッシュメモリから追い出されて主記憶ＲＡＭに書き込まれる。
【００６５】
なお、この例では、追い出しコードでの書き込みに使用するデータとして、変数ｂと同じデータ（同じレジスタ）である「２０」を用いているが、これに限定されるものではなく、変数ｂと異なる任意のデータを用いることができる。ただし、異なるデータを用いる場合には、自動挿入コードが少なくとも１つは増加するため、コード効率の面では変数ｂと同じデータを用いることが好ましい。
【００６６】
ところで、追い出しコードの書き込み先アドレスとしては、例えば図７に示すように、主記憶ＲＡＭにおける未使用領域であるワークＲＡＭを利用することができる。このようにすれば、主記憶ＲＡＭを効率よく利用することができる。ただし、キャッシュメモリと同等の領域が必要となる。
【００６７】
一方、追い出しコードによるダミーデータの書き込み処理は、書き込むデータ自体に関しては意味のないものであるため、フラッシュＲＯＭや、メモリ等が実装されていない未実装空間など、データの書き込みが不能な領域のアドレスとすることも可能である。フラッシュＲＯＭや未実装空間アドレスは、一般にキャッシュメモリのサイズと比較して膨大な領域を有しており、ダミーデータを記憶するための領域を主記憶ＲＡＭに設ける必要がなくなるという点で有効である。ただし、書き込み処理によりＣＰＵが暴走せず、単に無効となる仕様であることが前提となる。
【００６８】
［１−４．効果］
以上説明したように、第１実施形態のエンジンＥＣＵ１０が備える第１のマイコン２０は、ライトバック方式のデータ更新を行い、特定のデータについてのデータ書込処理を行った場合には、その直後に、そのデータと同一のインデックスでタグの異なるダミーデータについてのデータ書込処理（強制ライトバック）を行う。
【００６９】
このため、キャッシュメモリ２３に書き込まれた特定のデータは、ダミーデータの書き込みによって直ちにキャッシュメモリ２３から追い出され、主記憶ＲＡＭ２１に書き込まれる。つまり、特定のデータについては、ライトスルー方式と同様、最新のデータがキャッシュメモリ２３だけでなく主記憶ＲＡＭ２１にも書き込まれることになる。
【００７０】
したがって、第１実施形態のエンジンＥＣＵ１０によれば、従来のライトバック方式の構成をそのまま利用して、ライトスルー方式への切り替えを行うことなく、特定のデータについてはデータの一貫性を保つことができる。
【００７１】
また、特定のデータ以外については従来のライトバック方式のデータ更新が行われるため、ライトスルー方式に比べ処理を高速にすることができ、エンジンＥＣＵ１０に要求される高リアルタイム応答性を満たすことができる。
【００７２】
［２．第２実施形態］
次に、第２実施形態のエンジンＥＣＵについて説明する。
［２−１．全体構成］
図８は、第２実施形態のエンジンＥＣＵ４０の概略構成を示すブロック図である。
【００７３】
このエンジンＥＣＵ４０に搭載されているマイコン５０は、主としてダイアグ処理を実行する第１ＣＰＵ６２と、主としてエンジン制御のための処理を実行する第２ＣＰＵ７２とを備えるマルチコアのものである。
【００７４】
そして、マイコン５０は、第１ＣＰＵ６２及び第２ＣＰＵ７２により共有利用される主記憶装置としての共有ＲＡＭ５１を備えている。
また、マイコン５０は、各ＣＰＵ６２，７２専用のローカルＲＡＭ６１，７１及びキャッシュメモリ６３，７３を備えており、両ＣＰＵ６２，７２で共有しないデータについてはローカルＲＡＭ６１，７１に記憶し、両ＣＰＵ６２，７２で共有するデータ（例えばエンジン水温や水温センサ異常フラグのデータ）については共有ＲＡＭ５１に記憶する。
【００７５】
その他、マイコン５０は、データの読み出し専用のフラッシュＲＯＭ６６，７６を備えている。
［２−２．エンジンＥＣＵで行われる処理］
次に、エンジンＥＣＵ４０で行われる処理について説明する。
【００７６】
エンジンＥＣＵ４０が備えるマイコン５０では、共有ＲＡＭ５１が第１ＣＰＵ６２及び第２ＣＰＵ７２により共有利用される。このため、第１ＣＰＵ６２のキャッシュメモリ６３に記憶されているデータが最新のものであっても、共有ＲＡＭ５１に記憶されているデータが最新のものでなければ（古ければ）、その古いデータが第２ＣＰＵ７２によって参照され、その古いデータに基づく処理が行われてしまうことになる。
【００７７】
そこで、前述した第１実施形態と同様、第１ＣＰＵ６２が特定のデータ（共有ＲＡＭ５１に記憶されるデータ）についてのデータ書込処理を行った場合には、その直後に、そのデータと同一のインデックスでタグの異なるダミーデータについてのデータ書込処理を行うことで、その特定のデータをキャッシュメモリ６３から強制的に追い出す処理（強制ライトバック）を行う。以下、強制ライトバックによる効果を分かりやすくするため、強制ライトバックを行う場合の処理（図９（ｂ））を、強制ライトバックを行わない場合の処理（図９（ａ））と比較して説明する。
【００７８】
［２−２−１．強制ライトバックを行わない場合］
まず、強制ライトバックを行わない場合の処理について説明する。
図１０は、フラッシュＲＯＭ６６に記憶されているプログラムに従い第１ＣＰＵ６２が定期的に実行する水温センサ故障診断処理のフローチャートである。
【００７９】
第１ＣＰＵ６２は、前述したＳ１０１の処理と同様、水温センサの検出電圧をＡ／Ｄ変換したデジタル値の電圧データをエンジン水温に変換する際、その電圧データに基づき、水温センサが故障（断線故障又は短絡故障）しているか否かを判定する（Ｓ４０１）。
【００８０】
そして、第１ＣＰＵ６２は、この判定結果を水温センサ異常フラグのデータとして書き込む処理を行う（Ｓ４０２）。
具体的には、ライトバック方式による書込みのため、キャッシュメモリ６３に水温センサ異常フラグのデータが記憶されていない場合、つまりミスヒットの場合には、共有ＲＡＭ５１に記憶されている水温センサ異常フラグのデータが更新された後、そのデータがキャッシュメモリ６３にロードされる。つまり、水温センサ異常フラグの最新データがキャッシュメモリ６３及び共有ＲＡＭ５１の両方に記憶される。
【００８１】
これに対し、キャッシュメモリ６３に水温センサ異常フラグのデータが記憶されている場合、つまりキャッシュヒットの場合には、キャッシュメモリ６３に記憶されている水温センサ異常フラグのデータのみが更新される。一方、共有ＲＡＭ５１に記憶されている水温センサ異常フラグのデータは、キャッシュメモリ６３に記憶されている水温センサ異常フラグのデータが追い出されるまでは更新されない。
【００８２】
その後、第１ＣＰＵ６２では、前述したＳ１０３〜Ｓ１０５の処理と同様、水温センサ異常フラグのデータがＯＦＦ（正常）であると判定した場合には（Ｓ４０３：ＹＥＳ）、水温センサの検出電圧に基づくエンジン水温が各種処理に使用されるように設定する（Ｓ４０４）。一方、水温センサ異常フラグのデータがＯＦＦでない、つまりＯＮ（異常）であると判定した場合には（Ｓ４０３：ＮＯ）、フェールセーフ値のエンジン水温（８０℃）が各種処理に使用されるように設定する（Ｓ４０５）。
【００８３】
一方、図１１は、フラッシュＲＯＭ７６に記憶されているプログラムに従い第２ＣＰＵ７２が実行するエンジン制御処理のフローチャートである。
第２ＣＰＵ７２は、キャッシュメモリ７３（キャッシュメモリ７３に記憶されていない場合には共有ＲＡＭ５１）に記憶されている水温センサ異常フラグのデータを読み出し（Ｓ５０１）、読み出した水温センサ異常フラグのデータがＯＦＦ（正常）であるか否かを判定する（Ｓ５０２）。
【００８４】
そして、水温センサ異常フラグのデータがＯＦＦ（正常）であると判定した場合には（Ｓ５０２：ＹＥＳ）、キャッシュメモリ７３（キャッシュメモリ７３に記憶されていない場合には共有ＲＡＭ５１）に記憶されているエンジン水温が各種処理に使用されるように設定する（Ｓ５０３）。
【００８５】
一方、水温センサ異常フラグのデータがＯＦＦでない、つまりＯＮ（異常）であると判定した場合には（Ｓ５０２：ＮＯ）、フェールセーフ値のエンジン水温（８０℃）が各種処理に使用されるように設定する（Ｓ５０４）。
【００８６】
そして、第２ＣＰＵ７２は、設定したエンジン水温に基づく噴射・点火処理を実行する（Ｓ５０５）。
以上のような処理によれば、図９（ａ）に示すように、第１ＣＰＵ６２により例えば水温センサの断線故障が検出された場合、キャッシュメモリ６３に水温センサ異常フラグのデータが存在していれば、キャッシュメモリ６３のデータのみが更新され（ＯＦＦ→ＯＮ）、共有ＲＡＭ５１のデータは古いままとなる（ＯＦＦ）。このため、第１ＣＰＵ６２はエンジン水温としてフェールセーフ値である８０℃を使用して各種処理を行うが、第２ＣＰＵ７２は断線故障した状態の検出電圧を変換したエンジン水温（例えば−４０℃）を使用して制御を行うことになり、噴射・点火処理などに影響が生じてしまう。
【００８７】
［２−２−２．強制ライトバックを行う場合］
次に、強制ライトバックを行う場合の処理について説明する。
図１２は、フラッシュＲＯＭ６６に記憶されているプログラムに従い第１ＣＰＵ６２が定期的に実行する水温センサ故障診断処理のフローチャートである。この水温センサ故障診断処理は、図１０の水温センサ故障診断処理と対比すると、Ｓ６０１，Ｓ６０２，Ｓ６０４〜Ｓ６０６の各処理内容は、Ｓ４０１〜Ｓ４０５の各処理内容と同一であり、Ｓ６０３の処理が追加されている点が異なる。
【００８８】
すなわち、第１ＣＰＵ６２は、水温センサが故障しているか否かの判定結果を水温センサ異常フラグのデータとしてキャッシュメモリ６３に書き込む処理を行った後（Ｓ６０２）、強制ライトバック処理を行う（Ｓ６０３）。
【００８９】
具体的には、第１ＣＰＵ６２は、水温センサ異常フラグのデータをキャッシュメモリ６３に書き込む処理を行った直後に、水温センサ異常フラグのデータとインデックスが同一でタグの異なるダミーデータを書き込む処理を行う。これにより、ダミーデータを書き込む直前にキャッシュメモリ６３に書き込んだ水温センサ異常フラグの最新データがキャッシュメモリ６３から追い出されて共有ＲＡＭ５１に書き込まれる。この結果、水温センサ異常フラグのデータについては常に最新のデータが共有ＲＡＭ５１に記憶されていることとなり、第２ＣＰＵ７２においても水温センサの異常状態が直ちに検出され、フェールセーフ値であるエンジン水温８０℃による制御が行われる。
【００９０】
なお、第２ＣＰＵ７２が実行するエンジン制御処理は前述したとおり（図１１）であるため説明を省略する。
以上のような処理によれば、図９（ｂ）に示すように、第１ＣＰＵ６２により例えば水温センサの断線故障が検出された場合、キャッシュメモリ６３に水温センサ異常フラグのデータが存在していれば、共有ＲＡＭ５１は更新されずにキャッシュメモリ６３のデータのみが更新されるが（ＯＦＦ→ＯＮ）、その直後にダミーデータが上書きされることにより、キャッシュメモリ６３に書き込まれたばかりの水温センサ異常フラグの最新データ（ＯＮ）が追い出され、共有ＲＡＭ５１に記憶されている水温センサ異常フラグのデータが更新される（ＯＦＦ→ＯＮ）。
【００９１】
これにより、共有ＲＡＭ５１に記憶されている水温センサ異常フラグと、第２ＣＰＵ７２のキャッシュメモリ７３に記憶されている水温センサ異常フラグとに一貫性がなくなるため（共有ＲＡＭ５１：ＯＮ、キャッシュメモリ７３：ＯＦＦ）、第２ＣＰＵ７２のキャッシュメモリ７３に記憶されている水温センサ異常フラグは破棄される。このため、第２ＣＰＵ７２が水温センサ異常フラグのデータを読み出す処理を行った場合に、キャッシュメモリ７３はミスヒットとなり、共有ＲＡＭ５１から最新のデータが読み出されることとなる。
【００９２】
この結果、第１ＣＰＵ６２及び第２ＣＰＵ７２のいずれにおいても、エンジン水温としてフェールセーフ値である８０℃が使用されて各種処理が行われる。
なお、特定のデータ（ここでは水温センサ異常フラグを例示）以外のデータについては強制ライトバックを行わないため、従来のライトバック方式と同様に処理される。
【００９３】
［２−３．効果］
以上説明した第２実施形態のエンジンＥＣＵ４０によれば、第１実施形態のエンジンＥＣＵ１０について述べた効果と同様の効果を得ることができる。
【００９４】
［３．第３実施形態］
次に、第３実施形態のエンジンＥＣＵについて説明する。
［３−１．全体構成］
図１３は、第３実施形態のエンジンＥＣＵ８０の概略構成を示すブロック図である。
【００９５】
このエンジンＥＣＵ８０が備えるマイコン９０は、エンジンＥＣＵ８０への電力供給が停止されてもバッテリにより作動状態が保持されるバックアップＲＡＭ９１が主記憶装置として用いられたものである。
【００９６】
その他、マイコン９０は、ＣＰＵ９２、キャッシュメモリ９３及びフラッシュＲＯＭ９６を備えている。
［３−２．エンジンＥＣＵで行われる処理］
次に、エンジンＥＣＵ８０で行われる処理について説明する。
【００９７】
エンジンＥＣＵ８０が備えるマイコン９０では、キャッシュメモリ９３に記憶されているデータが最新のものであっても、バックアップＲＡＭ９１に記憶されているデータが最新のものでなければ（古ければ）、エンジンＥＣＵ８０への電力供給が停止された場合に最新のデータが消失して古いデータのみが残ってしまうことになる。
【００９８】
そこで、前述した第１実施形態と同様、ＣＰＵ９２が特定のデータについてのデータ書込処理を行った場合には、その直後に、そのデータと同一のインデックスでタグの異なるダミーデータについてのデータ書込処理を行うことで、その特定のデータをキャッシュメモリ９３から強制的に追い出す処理（強制ライトバック）を行う。以下、強制ライトバックによる効果を分かりやすくするため、強制ライトバックを行う場合の処理（図１４（ｂ））を、強制ライトバックを行わない場合の処理（図１４（ａ））と比較して説明する。
【００９９】
［３−２−１．強制ライトバックを行わない場合］
まず、強制ライトバックを行わない場合の処理について説明する。
図１４（ａ）に示すように、ダイアグ処理でセンサ等の故障診断を行い、異常が検出された場合は、該当するダイアグデータ（例えば水温センサ異常フラグのデータ）を書き換える（ＯＦＦ→ＯＮ）。ここで、キャッシュメモリ９３にダイアグデータが存在している場合には、キャッシュメモリ９３に記憶されているデータのみが更新され、バックアップＲＡＭ９１に記憶されているダイアグデータは、キャッシュメモリ９３に記憶されているダイアグデータが追い出されるまでは更新されない（ＯＦＦのままとなる）。
【０１００】
そして、バックアップＲＡＭ９１のダイアグデータが更新される前に、エンジンＥＣＵ８０のマイコン９０にリセットが掛かったり、車両のイグニッションスイッチ（ＩＧ−ＳＷ）がオフされてエンジンＥＣＵ８０への電源供給が停止されたりすると（１４Ｖ→０Ｖ）、バックアップＲＡＭ９１に記憶されているデータはバッテリ電圧で保持されるものの、キャッシュメモリ９３のデータは消去されてしまい、故障診断で検出した異常データが消えてしまう。このため、その後に電源供給が再開されても（０Ｖ→１４Ｖ）、バックアップＲＡＭ９１のデータはＯＦＦ（正常）のままであり、異常の検出回数が実際の検出回数よりも少なくなってしまう。なお、異常の検出回数は、ＭＩＬ点灯の条件としても利用されるため、法規上も問題となる。
【０１０１】
［３−２−２．強制ライトバックを行う場合］
次に、強制ライトバックを行う場合の処理について説明する。
図１４（ｂ）に示すように、ダイアグ処理でセンサ等の異常が検出された場合、キャッシュメモリ９３にダイアグデータが存在していれば、バックアップＲＡＭ９１は更新されずにキャッシュメモリ９３のデータのみが更新される（ＯＦＦ→ＯＮ）。そして、強制ライトバック処理により、直ちにダミーデータが上書きされることで、キャッシュメモリ９３に書き込まれたばかりのダイアグデータが追い出され、バックアップＲＡＭ９１に記憶されているダイアグが更新される（ＯＦＦ→ＯＮ）。
【０１０２】
このため、その後にエンジンＥＣＵ８０のマイコン９０にリセットが掛かったり、車両のイグニッションスイッチ（ＩＧ−ＳＷ）がオフされてエンジンＥＣＵ８０への電源供給が停止されたりしても（１４Ｖ→０Ｖ）、バックアップＲＡＭ９１に記憶されているデータはバッテリ電圧で保持されるため、故障診断で検出した異常データは記憶が保持され、異常の検出回数も正確にカウントすることができる。
【０１０３】
［３−３．効果］
以上説明した第３実施形態のエンジンＥＣＵ８０によれば、第１実施形態のエンジンＥＣＵ１０について述べた効果と同様の効果を得ることができる。
【０１０４】
［４．他の形態］
以上、本発明の一実施形態について説明したが、本発明は、種々の形態を採り得ることは言うまでもない。
【０１０５】
［４−１．強制ライトバック処理の実現方法の変形例］
上記実施形態では、図６に示したように、ソフトウェア上で、強制ライトバックを行いたい変数の前後にコンパイラへの特殊指示命令である「＃ｐｒａｇｍａ（プラグマ）」を挿入することで、追い出しコードを自動挿入するようにしているが、これに限定されるものではない。例えば、次のような実現方法が挙げられる。
【０１０６】
［４−１−１．あるメモリ領域のデータに追い出しコードを自動挿入する方法］
図１５に示す方法は、追い出しコードを挿入するデータの特定方法が図６に示す方法と異なる。すなわち、あるメモリ領域（０ｘＦＥ００〜）を強制ライトバック処理を必要とする変数の配置場所（ＯｔｈｅｒＭｅｍ）とし、その領域に配置したい変数を「＃ｐｒａｇｍａ  ｓｅｃｔｉｏｎ  ×××」という＃ｐｒａｇｍａによるメモリ指定で配置する。コンパイラは、同領域へ配置する変数については、同一インデックスでかつ異なるタグの０ｘ６Ｃ００番地への書き込み命令（追い出しコード）を自動的に挿入する。
【０１０７】
なお、この方法では、図６の方法と異なり、変数ｂが、強制ライトバック処理が必要な変数領域ＯｔｈｅｒＭｅｍに配置されるため、アセンブラオブジェクトコードでは、ＯｔｈｅｒＭｅｍのアドレスである０ｘＦＥ００に配置される。
【０１０８】
［４−１−２．ソースコードの段階から追い出しコードを埋め込んでおく方法］
図１６に示す方法は、図６、図１５に示す方法と異なり、プログラマがあらかじめソフトウェア上にソースコードの段階から追い出しコードを埋め込んでおく方法である。同図に示す例では、変数ｂに通常データ「２０」を書き込んだ直後に、変数ｂのアドレスにインデックスが同じになる任意のオフセット（この例では＋２５６番地）を加算したアドレスに、同じデータ「２０」を書き込むコードを実装している。
【０１０９】
このため、コンパイラがコンパイルしたオブジェクトコードでは、変数ｂのアドレス０ｘＦＦ０４に＋２５６を加算した０ｘ０００４番地に書き込まれる。
この方法によれば、追い出しコード自動挿入機能を有していないコンパイであっても実現できるというメリットがある。
【０１１０】
［４−２．エンジンＥＣＵ以外への適用］
上記実施形態では、エンジンＥＣＵのマイコンに本発明を適用した構成を例示したが、これに限定されるものではなく、エンジン以外の車両制御装置のマイコンに本発明を適用してもよい。また、本発明は、車両制御装置以外のデータ処理装置に適用することも可能である。
【図面の簡単な説明】
【０１１１】
【図１】第１実施形態のエンジンＥＣＵの概略構成を示すブロック図である。
【図２】第１実施形態のエンジンＥＣＵで行われる処理の説明図である。
【図３】第１実施形態のメインＣＰＵが実行する水温センサ故障診断処理のフローチャート（強制ライトバックを行わない場合の処理）である。
【図４】第１実施形態のサブＣＰＵが実行するエンジン制御処理のフローチャートである。
【図５】第１実施形態のメインＣＰＵが実行する水温センサ故障診断処理のフローチャート（強制ライトバックを行う場合の処理）である。
【図６】追い出しコードの挿入方法の説明図である。
【図７】追い出しコードの書き込み先アドレスの説明図である。
【図８】第２実施形態のエンジンＥＣＵの概略構成を示すブロック図である。
【図９】第２実施形態のエンジンＥＣＵで行われる処理の説明図である。
【図１０】第２実施形態の第１ＣＰＵが実行する水温センサ故障診断処理のフローチャート（強制ライトバックを行わない場合の処理）である。
【図１１】第２実施形態の第２ＣＰＵが実行するエンジン制御処理のフローチャートである。
【図１２】第２実施形態の第１ＣＰＵが実行する水温センサ故障診断処理のフローチャート（強制ライトバックを行う場合の処理）である。
【図１３】第３実施形態のエンジンＥＣＵの概略構成を示すブロック図である。
【図１４】第３実施形態のエンジンＥＣＵで行われる処理の説明図である。
【図１５】追い出しコードの挿入方法の変形例（１）の説明図である。
【図１６】追い出しコードの挿入方法の変形例（２）の説明図である。
【図１７】ライトスルー方式及びライトバック方式のデータ更新の説明図である。
【図１８】ダイレクトマッピング方式のキャッシュメモリの追い出しメカニズムの説明図である。
【符号の説明】
【０１１２】
１０，４０，８０…エンジンＥＣＵ、２０，３０，５０，９０…マイコン、２１，３１，５１，６１，７１，９１…ＲＡＭ、２２，３２，６２，７２，９２…メインＣＰＵ、２３，３３，６３，７３，９３…キャッシュメモリ、２４，３４…通信インタフェース、２５，３５…ＤＭＡコントローラ、２６，３６，６６，７６，９６…フラッシュＲＯＭ
【図１】
2009104300.tif 000003
【図３】
2009104300.tif 000004
【図４】
2009104300.tif 000005
【図５】
2009104300.tif 000006
【図６】
2009104300.tif 000007
【図７】
2009104300.tif 000008
【図８】
2009104300.tif 000009
【図１０】
2009104300.tif 000010
【図１１】
2009104300.tif 000011
【図１２】
2009104300.tif 000012
【図１３】
2009104300.tif 000013
【図１４】
2009104300.tif 000014
【図１５】
2009104300.tif 000015
【図１６】
2009104300.tif 000016
【図１７】
2009104300.tif 000017
【図１８】
2009104300.tif 000018
【図２】
2009104300.tif 000019
【図９】
2009104300.tif 000020