ドライバ操作による指示量とエンジンの状態量とに基づいてエンジンの制御量を生成する制御ロジック部と、エンジンを模擬して制御量から状態量を計算するモデル部と、前記モデル部が出力する状態量と実エンジンの状態量とを選択的に前記制御ロジック部に提供する状態量選択部と、前記モデル部が実エンジンの2倍よりも高速で動作するよう前記モデル部の処理速度を管理する処理速度管理部と、実エンジンの運転サイクルごとに、前記モデル部の特定気筒の運転サイクルが終了した瞬間の前記モデル部の内部計算状態を記憶しておき、実エンジンの運転サイクルが終了したとき前記モデル部の内部計算状態を記憶されている内部計算状態に置換し、実エンジンの次の運転サイクル開始と同時に前記モデル部を置換された内部計算状態から運転させる同期管理部とを備えたことを特徴とするモデルベースエンジン制御装置。モデルベースエンジン制御装置31は、リアルタイムでエンジン制御を行う必要がある。しかし、制御ロジック部32がセンサ36またはモデル部33の状態量を入力してから制御量を出力するまでに、処理を実行するための相応の時間が必要になる。制御ロジック部32の制御内容が複雑かつ高度になると、それに応じて処理時間が長くなり、リアルタイムに処理ができなくなる。これに対し、本発明者は、モデル部33をリアルタイムよりも高速で動作させることで、センサ36が実エンジン34の状態量を検出するより前に状態量を予測し、その予測された状態量に基づいて制御ロジック部32が制御量を生成することで、実エンジン34に与える制御量がリアルタイムに間に合うという予測制御を目指している。しかし、予測制御では、モデル部33がリアルタイムよりも高速で動作するため、実エンジン34とモデル部33が同時に0°CAクランク角度から動作を開始したとすると、実エンジン34が今回の運転サイクルを終えるよりも前にモデル部33が今回の運転サイクルを終えて次回の運転サイクルに進んでしまう。このように、モデル部33が実エンジン34より先行動作することで、実エンジン34とモデル部33に運転サイクルのずれが生じる。本発明者は、予測制御を実用化するには、実エンジン34とモデル部33の運転サイクルのずれ同期ずれを解消すること、すなわち、実エンジン34とモデル部33の同期が必要となると思い至った。以下、図4を用いて同期ずれを詳しく説明する。図4に示されるように、実エンジン34では、周期Tごとにクランク角度が720°CA進む。したがって、実エンジン34の1サイクル目は、時間0から時間Tまでにクランク角度が0°CAから720°CAまで進み、終了する。2サイクル目は、時間Tから時間2Tまでにクランク角度が0°CAから720°CAまで進み、終了する。多気筒エンジンでは、各気筒の運転行程に位相差がある。例えば、直列6気筒では120°CAごとの位相差がある。したがって、各気筒において制御量が必要となるタイミングが120°CAずつ異なる。実エンジン34の各気筒にクランク軸上の並び順の番号1~6を付したとき、各番号の気筒の制御量タイミングは、隣接した気筒で燃焼行程が続かないよう、実クランク角度120°CA時間T/6おきに、1、5、3、6、2、4、1、...という順序となる。一方、モデル部33では、気筒ごとの振る舞いを計算しており、気筒1についての計算が時間0から始まるとすると、気筒5以降についての計算はモデル上で120°CAずつ遅れて始まる。ここで、モデル部33の動作速度が実エンジン34リアルタイムの2倍とすると、同じ時間内にモデル上でのクランク角度は実クランク角度の2倍進む。このように、モデル部33が実エンジン34の2倍の速度で運転されると、実エンジン34が1サイクル目を終了する時間Tには、モデル部33では気筒1について2サイクル目まで終了する。気筒1に注目すると、モデル部33の気筒1の1サイクル目が終了して状態量が得られてから、実エンジン34の気筒1の制御量タイミングである時間Tまでに時間的余裕があるので、制御ロジック部32は制御量の出力を制御量タイミングに十分に間に合わせることができる。しかし、モデル部33の気筒1の2サイクル目が終了してから実エンジン34の気筒1の制御量タイミングである時間2Tまでは時間が大きく離れており、しかも、時間2T以前にモデル部33の気筒1は3サイクル目が既に終了している。このように、時間経過に伴いモデル部33と実エンジン34の運転サイクルのずれが大きくなる。この対策とし、仮に、対象とするエンジンが単気筒エンジンであるならば、随時、モデル部33の運転を停止させ、実エンジン34の運転サイクルが進んでからモデル部33の運転を開始させることにより、モデル部33を実エンジン34に同期させるようにしても問題ない。これは、単気筒エンジンではクランク角度と運転行程が1対1で対応しているためである。しかし、複数の気筒を持ち、各気筒で運転状態が異なる多気筒エンジンにおいては先行動作するモデル部33とリアルタイムで動作する実エンジン34との同期をとるのは容易でない。多気筒エンジンでは、各気筒の状態は、位相差を持ちつつ相互に影響し合う。また、各気筒の状態は、過去の状態から現在の状態が決まるという時間的連続性を有する。このため、気筒ごとに独立して状態量計算を停止させることはできず、また、任意時点の状態を切り出してその状態だけを利用することはできない。このように、モデル部33を実エンジン34より高速で動作させると、モデル部33と実エンジン34との同期ずれが生じるが、多気筒エンジンでは、同期ずれを解消するのが困難であるため、予測制御が困難となる。そこで、本発明の目的は、上記課題を解決し、モデルと実エンジンとの同期をずれさせることなく予測制御が実現できるモデルベースエンジン制御装置を提供することにある。上記目的を達成するために本発明のモデルベースエンジン制御装置は、ドライバ操作による指示量とエンジンの状態量とに基づいてエンジンの制御量を生成する制御ロジック部と、エンジンを模擬して制御量から状態量を計算するモデル部と、前記モデル部が出力する状態量と実エンジンの状態量とを選択的に前記制御ロジック部に提供する状態量選択部と、前記モデル部が実エンジンの2倍よりも高速で動作するよう前記モデル部の処理速度を管理する処理速度管理部と、実エンジンの運転サイクルごとに、前記モデル部の特定気筒の運転サイクルが終了した瞬間の前記モデル部の内部計算状態を記憶しておき、実エンジンの運転サイクルが終了したとき前記モデル部の内部計算状態を記憶されている内部計算状態に置換し、実エンジンの次の運転サイクル開始と同時に前記モデル部を置換された内部計算状態から運転させる同期管理部とを備えたものである。本発明は次の如き優れた効果を発揮する。1モデルと実エンジンとの同期をずれさせることなく予測制御が実現できる。以下、本発明の一実施形態を添付図面に基づいて詳述する。図1に示されるように、本発明に係るモデルベースエンジン制御装置ECU1は、ドライバ操作による指示量とエンジンの状態量とに基づいてエンジンの制御量を生成する制御ロジック部2と、エンジンを模擬して制御量から状態量を計算するモデル部3と、モデル部3が出力する状態量と実エンジン4の状態量とを選択的に制御ロジック部2に提供する状態量選択部5と、モデル部3が実エンジン4の2倍よりも高速で動作するようモデル部3の処理速度を管理する処理速度管理部6と、実エンジン4の運転サイクルごとに、モデル部3の特定気筒の運転サイクルが終了した瞬間のモデル部3の内部計算状態を記憶しておき、実エンジン4の運転サイクルが終了したときモデル部3の内部計算状態を記憶されている内部計算状態に置換し、実エンジン4の次の運転サイクル開始と同時にモデル部3を置換された内部計算状態から運転させる同期管理部7とを備える。ここで、モデル部3の内部計算状態とは、計算の進行に伴って変化する全ての数値の瞬時値のことであり、より具体的には、メモリに格納されている変数値、CPUレジスタの内容、CPUステータス、プログラムカウンタ値などが含まれる。図1の実エンジン4は、図3の実エンジン34と同じであり、図1のセンサ8とアクチュエータ9は、図3のセンサ36とアクチュエータ37と同様に、自動車に搭載される公知の全てのセンサとアクチュエータを表している。図1のI/Oポート10は、図3のI/Oポート38と同じである。本発明のモデルベースエンジン制御装置1は、モデルベース制御においてモデル部3を実エンジン4よりも先行動作させ、予測した状態量に基づくエンジン制御、いわゆる予測制御を実施するものである。予測制御に際し、従来のモデルベースエンジン制御装置31では先行するモデル部33の運転サイクルが時間経過に伴い実エンジン34の運転サイクルから乖離していくという問題があったので、これを解決し、かつ、各気筒相互の影響及び時間的連続性を維持するため、本発明では、モデル部3を停止させることなく運転し、実エンジン4の運転サイクルごとにモデル部3の内部計算状態を過去に戻すことで実エンジン4に同期させるようになっている。以下、モデルベースエンジン制御装置1の動作を説明する。図2に示されるように、実エンジン4とモデル部3が同時に0°CAから動作を開始したとする実際には、それ以前から継続して動作している。実エンジン4では、1サイクル目は、時間0から時間Tまでにクランク角度が0°CAから720°CAまで進み、終了する。2サイクル目は、時間Tから時間2Tまでにクランク角度が0°CAから720°CAまで進み、終了する。3サイクル目以降も同様である。これに対し、処理速度管理部6は、モデル部3が実エンジン4の2倍の速度で動作するようモデル部3の処理速度を管理する。モデル部3が実エンジン4の2倍の速度で運転されることにより、モデル部3による気筒1の1サイクル目の状態量計算は、実エンジン4の1サイクル目の終了時間Tより早く終了する。モデル部3が気筒1の1サイクル目の状態量を出力すると、状態量選択部5は、モデル部3が出力する状態量を選択して制御ロジック部2に提供する。これにより、制御ロジック部2は、実エンジン4の2サイクル目に備えて気筒1に対する制御量計算を開始する。同期管理部7は、気筒1の1サイクル目が終了したときのモデル部3の内部計算状態を記憶しておく。その後、同期管理部7は、実エンジン4の1サイクル目が終了したとき時間T、モデル部3の内部計算状態を記憶されている内部計算状態に置換し、実エンジン4の2サイクル目の開始と同時にモデル部3を置換された内部計算状態から運転させる。したがって、モデル部3は、時間Tから気筒1の2サイクル目を運転することになる。モデル部3による気筒1の2サイクル目の状態量計算は、実エンジン4の2サイクル目の終了時間2Tより早く終了する。モデル部3が気筒1の2サイクル目の状態量を出力すると、状態量選択部5は、モデル部3が出力する状態量を選択して制御ロジック部2に提供する。これにより、制御ロジック部2は、実エンジン4の3サイクル目に備えて気筒1に対する制御量計算を開始する。同期管理部7は、気筒1の2サイクル目が終了したときのモデル部3の内部計算状態を記憶しておく。その後、同期管理部7は、実エンジン4の2サイクル目が終了したとき時間2T、モデル部3の内部計算状態を記憶されている内部計算状態に置換し、実エンジン4の3サイクル目の開始と同時にモデル部3を置換された内部計算状態から運転させる。したがって、モデル部3は、時間2Tから気筒1の3サイクル目を運転することになる。各気筒に関する状態量全計算について説明すると、モデル部3では、気筒1についての計算が時間t0から始まるとすると、気筒5以降についての計算はモデル上で120°CAに相当する時間ずつ遅れて始まる。気筒1の1サイクル目が終了した時間t1に、モデル部3の内部計算状態が記憶される。気筒1に関して記憶される内部計算状態は1サイクル目の終了=2サイクル目の開始の状態である。気筒5に関する内部計算状態は、1サイクル目が大半終わった状態、気筒3に関する内部計算状態は、1サイクル目が半分以上終わった状態、気筒6に関する内部計算状態は、1サイクル目が半分終わった状態、気筒2に関する内部計算状態は、1サイクル目が半分未満終わった状態、気筒4に関する内部計算状態は、1サイクル目が始まって間もない状態である。モデル部3は、同期管理部7が内部計算状態を記憶したことに影響を受けることなく、そのまま計算を続行する。したがって、時間t1以降は、気筒1の2サイクル目、気筒2~6の1サイクル目の残りと2サイクル目の一部が計算される。ここで計算された気筒2~6の1サイクル目の状態量は、制御ロジック部2に提供され、各気筒2~6の2サイクル目のための制御量計算に使用される。その後、時間t2において内部計算状態が置換されると、全気筒に関して時間t2までの計算内容は失われ、気筒1に関する内部計算状態は2サイクル目の開始の状態、気筒5に関する内部計算状態は1サイクル目が大半終わった状態、気筒3に関する内部計算状態は1サイクル目が半分以上終わった状態、気筒6に関する内部計算状態は1サイクル目が半分終わった状態、気筒2に関する内部計算状態は1サイクル目が半分未満終わった状態、気筒4に関する内部計算状態は1サイクル目が始まって間もない状態に戻ることになる。モデル部3は、置換された内部計算状態から運転され、気筒1の2サイクル目と気筒2~6の1サイクル目の残りの計算が再開されることになる。気筒1の2サイクル目が終了した時間t3には、モデル部3の内部計算状態が記憶され、モデル部3は、そのまま計算を続行する。計算された状態量は、3サイクル目のための制御量計算に使用される。その後、時間t4において内部計算状態が置換され、以下、同様の繰り返しとなる。以上説明したように、本発明のモデルベースエンジン制御装置1によれば、実エンジン4の運転サイクルごとに、モデル部3の特定気筒の運転サイクルが終了した瞬間のモデル部3の内部計算状態を記憶しておき、実エンジン4の運転サイクルが終了したときモデル部3の内部計算状態を記憶されている内部計算状態に置換し、実エンジン4の次の運転サイクル開始と同時にモデル部3を置換された内部計算状態から運転させるようにしたので、モデル部3を停止させることなく運転し、実エンジン4の運転サイクルごとにモデル部3の内部計算状態を過去に戻すことでモデル部3を実エンジン4に同期させることができる。これにより、モデル上のクランク角度の進行に沿って全気筒の状態量計算が並列で実行されるようになり、各気筒相互の影響が失われることがなくなる。また、各気筒の状態の時間的連続性が失われることがなくなる。この結果、モデル部3の実機模擬精度が向上する。本実施形態では、モデル部3が実エンジン4の2倍の速度で動作するものとしたが、丁度2倍である必要はなく、実エンジン4の2倍より高速であればよい。モデル部3が実エンジン4の2倍より高速で動作すると、図2の時間t1~t4は左へ移動する。この場合も、時間t1に記憶されたモデル部3の内部計算状態が時間Tで置換され、内部計算状態が元に戻ることになる。また、時間Tより後は気筒1の2サイクル目が終了した時間に、モデル部3の内部計算状態が記憶される。