(57)【要約】  【課題】  ＨＩＬＳに適合する、オーバーヘッドの少ないＤＭＡ転送技法を提供すること。  【解決手段】  ＤＭＡによって、コンピュータのメモリからデータを周辺機器に転送するためのデータ転送装置を有するコンピュータ・システムにおいて、連続ＤＭＡ機構がイネーブル処理に応答して、データ転送要求を継続的に繰り返し出す。ＨＩＬＳ用のシミュレーション・システムは、シミュレーションの結果のデータを、メモリの所定の領域に配置する。そして、連続ＤＭＡ機構からの前記データ読出し転送要求に応答して、世代ＩＤのデータとともに連続ＤＭＡ機構へ前記メモリからデータを転送する。連続ＤＭＡ機構は、転送された世代ＩＤを受信ＩＤとして保存し、転送された前記世代ＩＤが、保存されている受信ＩＤと異なる（更新されている）ことに応答して、前記転送されたデータを受信する。連続ＤＭＡ機構は、ディスエーブルされるまで、データ転送要求を継続的に繰り返す。【選択図】  図３
2011054129.tif 000002
【特許請求の範囲】
【請求項１】
ＤＭＡによって、コンピュータのメモリからデータを周辺機器に転送するためのデータ転送装置を有するコンピュータ・システムにおいて、
イネーブル処理に応答して、データ転送要求を継続的に繰り返し出す連続ＤＭＡ機構と、
前記メモリに、世代ＩＤのデータとともに、前記連続ＤＭＡ機構に転送すべきデータを配置する手段であって、該世代ＩＤのデータは、前記メモリにデータが配置される毎に更新される、手段と、
前記連続ＤＭＡ機構からのデータ読出し転送要求に応答して、世代ＩＤのデータとともに前記連続ＤＭＡ機構へ前記メモリからデータを転送する手段と、
前記連続ＤＭＡ機構をディスエーブルする手段を有し、
前記連続ＤＭＡ機構は、前記転送された前記世代ＩＤを受信ＩＤとして保存する手段と、
前記転送された前記世代ＩＤが、保存されている受信ＩＤと異なることに応答して、前記転送されたデータを受信する手段とを有する、
コンピュータ・システム。
【請求項２】
前記連続ＤＭＡ機構は、コンピュータ・システムからクロックを取り込んでカウントアップし、一定時間単位でリセットする時間管理機構と前記の一定時間を周期に動作する手段を有し、
前記一定時間周期の開始時刻から、前記更新されたデータが転送するまでの期間を記憶するタイミング記憶手段と、
前記一定時間周期の開始時刻から、前記タイミング記憶手段に記憶されている期間だけ、データ転送要求を出し、前記データを転送する手段の転送動作を遅延させる手段をさらに有する、
請求項１に記載のコンピュータ・システム。
【請求項３】
前記連続ＤＭＡ機構から、前記コンピュータに接続された周辺機器にデータを転送する手段をさらに有する、請求項１に記載のコンピュータ・システム。
【請求項４】
前記周辺機器はＥＣＵであり、前記メモリから連続ＤＭＡ機構に転送されるデータは、シミュレーション・ソフトウェアにより生成される、請求項３に記載のコンピュータ・システム。
【請求項５】
前記ＥＣＵから送られたデータを保存するための送信バッファと、
送信用世代ＩＤを保持する手段と、
前記連続ＤＭＡ機構から前記メモリへの書込みデータ転送要求が受け付けられたことに応答して、前記送信バッファの内容を、前記送信用世代ＩＤとともにメモリに転送する手段と、
該メモリへの転送の完了に応答して、前記送信用世代ＩＤの値を更新する手段とをさらに有する、
請求項４に記載のコンピュータ・システム。
【請求項６】
コンピュータのメモリからデータを周辺機器に転送するためのデータ転送装置を有するコンピュータ・システムにおけるデータ転送方法であって、
イネーブル処理に応答して、連続ＤＭＡ機構により、データ転送要求を継続的に繰り返し出すステップと、
前記メモリに、世代ＩＤのデータとともに、前記連続ＤＭＡ機構に転送すべきデータを配置するステップであって、該世代ＩＤのデータは、前記メモリにデータが配置される毎に更新される、ステップと、
前記連続ＤＭＡ機構からのデータ読出し転送要求に応答して、世代ＩＤのデータとともに前記連続ＤＭＡ機構へ前記メモリからデータを転送するステップと、
前記連続ＤＭＡ機構が、前記転送された前記世代ＩＤを受信ＩＤとして保存するステップと、
前記転送された前記世代ＩＤが、保存されている受信ＩＤと異なることに応答して、前記転送されたデータを受信するステップと、
前記連続ＤＭＡ機構をディスエーブルするステップを有する、
コンピュータ・システムにおけるデータ転送方法。
【請求項７】
前記連続ＤＭＡ機構は、コンピュータ・システムからクロックを取り込んでカウントアップし、一定時間単位でリセットする時間管理機構と前記の一定時間を周期に動作する手段を有し、
前記一定時間周期の開始時刻から、前記更新されたデータが転送するまでの期間を記憶するタイミング記憶ステップと、
前記一定時間周期の開始時刻から、前記タイミング記憶手段に記憶されている期間だけ、データ転送要求を出し、前記データを転送する手段の転送動作を遅延させるステップをさらに有する、
請求項６に記載のコンピュータ・システムにおけるデータ転送方法。
【請求項８】
前記連続ＤＭＡ機構から、前記コンピュータに接続された周辺機器にデータを転送するステップをさらに有する、請求項６に記載のコンピュータ・システムにおけるデータ転送方法。
【請求項９】
前記周辺機器はＥＣＵであり、前記メモリから連続ＤＭＡ機構に転送されるデータは、シミュレーション・ソフトウェアにより生成される、請求項８に記載のコンピュータ・システムにおけるデータ転送方法。
【請求項１０】
前記ＥＣＵから送られたデータを保存するステップと、
送信用世代ＩＤを保持するステップと、
前記連続ＤＭＡ機構から前記メモリへの書込みデータ転送要求が受け付けられたことに応答して、送信バッファの内容を、前記送信用世代ＩＤとともにメモリに転送するステップと、
該メモリへの転送の完了に応答して、前記送信用世代ＩＤの値を更新するステップとをさらに有する、
請求項９に記載のコンピュータ・システムにおけるデータ転送方法。
【請求項１１】
前記シミュレーション・ソフトウェアが、前記連続ＤＭＡ機構から転送された前記送信用世代ＩＤの値を保存するステップと、
前記シミュレーション・ソフトウェアが、前記連続ＤＭＡ機構から転送されたデータかが最新であることを確認するために、保存されている世代ＩＤと、前記連続ＤＭＡ機構から転送された前記送信用世代ＩＤの値を比較するステップをさらに有する、
請求項１０に記載のコンピュータ・システムにおけるデータ転送方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、コンピュータのメモリと周辺機器間で、直接メモリアクセス（ＤＭＡ）の仕組みを使用してデータを転送するシステム及び方法に関し、より詳しくは、ＨＩＬＳ(Hardware In the Loop Simulation)などのシミュレーション・システムにおいて、コンピュータのメモリとＥＣＵなどのテストされる装置間で、データを交換するシステムおよび方法に関するものである。
【背景技術】
【０００２】
近年、携帯電話、デジタル・カメラ、エレベータ、自動車のＥＣＵ、エンジン・シミュレータ、産業用ロボットなど、マイクロコンピュータによってハードウェアを直接制御する組込みシステムが日常的に使用される頻度が高まってきた。
【０００３】
一般的なコンピュータ・プログラムもそうであるが、特に組込みシステムでは、作成したプログラムが、正しく動作するかどうかを、さまさざまな状況毎にテストする必要がある。
【０００４】
このようなテストのために従来行われている技法として、ＨＩＬＳ(Hardware In the Loop Simulation)がある。特に、自動車全体の電子制御システムをテストする環境は、フルビークルＨＩＬＳと呼ばれる。フルビークルＨＩＬＳにおいては、実験室内で、本物のＥＣＵが、エンジン、トランスミッション機構などの動きをソフトウェアシミュレーションするパーソナル・コンピュータまたは専用のハードウェア装置に接続され、所定のシナリオにしたがって、テストが行われる。ＥＣＵからの出力は、監視用のコンピュータに入力され、さらにはエンジン、トラスミッション機構などの動きと一緒にディスプレイに表示されて、テスト担当者がディスプレイを眺めながら、異常動作がないかどうか、チェックする。
【０００５】
ＨＩＬＳにおいては、コンピュータまたは専用のハードウェア装置と本物のＥＣＵの間が物理的に配線される。その際、パーソナル・コンピュータまたは専用のハードウェア装置とＥＣＵの間のデータ転送は、一般的には、ＤＭＡ(direct memory access)という仕組みを用いて行われる。
【０００６】
一般的にＤＭＡによるデータ転送はＤＭＡコントローラなどＤＭＡ機構の管理下で行われる。ＤＭＡ機構にはアドレス・レジスタ、データサイズ・レジスタおよびコントロールレジスタがある。ＤＭＡによるデータ転送を始めるには、転送元であるメモリの先頭アドレスをアドレス・レジスタにセットし、転送するデータのデータサイズをデータサイズ・レジスタにセットし、最後にコントロールレジスタにコマンドが書き込むことによって、データ転送が開始する。
【０００７】
図１に、従来のＨＩＬＳで、ＥＣＵにデータを転送する処理のタイミング・チャートを示す。図示されているように、先ず、コンピュータまたは専用のハードウェア装置側で走っているシミュレーション・ソフトウェアが、ＤＭＡ機構をもつインターフェース・ボードに対して、ＤＭＡ転送コマンドを発行する。ある典型的な従来の構成では、このＤＭＡ転送コマンドの発行（ＤＭＡ要求）に、6μs時間がかかる。転送されるデータは、例えば7ワードで、ここは600nsで完了する。その後、インターフェース・ボードは、シミュレーション・ソフトウェアに対して割込みをかけることで、転送の終了を通知する。この割込みには、典型的に、4μsの時間がかかる。
【０００８】
ＨＩＬＳでＥＣＵの動作テストを行うシミュレーション動作の特徴は、図１に示すように、比較的小さいデータがシミュレーション・ソフトウェアからインターフェース・ボードに転送され、またインターフェース・ボードからシミュレーションソフトウェアに転送されることである。それが周期的に行われる。
【０００９】
従来の構成では、このような個々の小さいデータの転送毎に、必ず、開始時のＤＭＡ要求と、終了時の割込みというオーバーヘッドが付随するため、転送速度を向上することが難しい。
【００１０】
特開２０００−２０４５５、特開２０００−１４８６６３、及び特開２００２−１３２７０６は、メインメモリの異なるエリアを転送先（元）にして順次にＤＭＡ転送を行う際に、ＤＭＡコントローラがＤＭＡ転送ごとに転送先（元）のメモリアドレスを計算し、アドレスレジスタにセットすることによって連続してＤＭＡ転送を行うことによって、設定オーバーヘッドを低減させることを開示する。
【００１１】
特開２００７−７９７１５には、１回ＤＭＡ転送を行うと、２回目以降のＤＭＡ転送では１回目転送の設定を参照し、連続的にＤＭＡを行うことが開示されている。
【００１２】
これらの従来技術は、ＤＭＡ転送に係るオーバーヘッドを減らして、連続してＤＭＡ転送を行う仕組みを教示する。しかし、ここに開示されている方法では、シミュレーション・ソフトウェアがメモリ上のデータを更新することと、更新されたデータを適切にＤＭＡ転送することの同期を図ることが難しい。
【先行技術文献】
【特許文献】
【００１３】
【特許文献１】特開２０００−２０４５５
【特許文献２】特開２０００−１４８６６３
【特許文献３】特開２００２−１３２７０６
【特許文献４】特開２００７−７９７１５
【発明の概要】
【発明が解決しようとする課題】
【００１４】
従って、この発明の目的は、ＨＩＬＳに適合する、オーバーヘッドの少ないＤＭＡ転送技法を提供することにある。
【課題を解決するための手段】
【００１５】
本発明は、基本的に、連続ＤＭＡの概念を使用する。すなわち、本発明においては、一旦ＤＭＡ転送がイネーブルされると、インターフェース・ボードは、次にディスエーブルされるまで、繰り返し、データ転送を要求し続ける。これによって、ＤＭＡ要求のためのオーバーヘッドを削減することができる。
【００１６】
ＨＩＬＳでは、エンジン、トランスミッション機構などの動きをソフトウェアでシミュレーションされた結果がＥＣＵの入力に与えられ、さらにＥＣＵの出力がソフトウェアシミュレーションに入力される。ソフトウェア・シミュレーションとＥＣＵ間で連続ＤＭＡを使用してデータ転送を行うと、ソフトウェア・シミュレーションが実行し終わる前に、メモリにあるシミュレーション出力が更新されないまま、ＤＭＡ転送によってＥＣＵに与えられる可能性がある。またＥＣＵが動作し、出力を更新する前に、その出力がソフトウェア・シミュレーションに入力される可能性もある。この問題を解決するため、本発明では、ソフトウェア・シミュレーションにおいて、出力データに世代ＩＤを付与し、出力データが更新されるたびに世代ＩＤをも更新する。インターフェース・ボードは更新された世代ＩＤを持つデータのみをＥＣＵへ転送するようにした。
【００１７】
このような世代ＩＤを用いる仕組みは、ＥＣＵから受け取ったデータを、インターフェース・ボードからシミュレーション・システムに送信する際にも使用される。
【００１８】
また、連続ＤＭＡの仕組みを使用すると、データ転送が繰り返し行われるため、システムバスを介したメインメモリへのアクセスが増え、ＨＩＬＳシステムに大きく負担がかかるため、ＨＩＬＳシステムの応答を遅くなる。この問題を解決するため、本発明では、インターフェース・ボードにおいて、データ更新のタイミングを学習し、その学習されたタイミングでデータ転送をするようにした。これによって無駄なデータアクセスを回避することが可能となる。
【発明の効果】
【００１９】
この発明によれば、連続ＤＭＡによってＤＭＡ要求のためのオーバーヘッドを削減しつつ、世代ＩＤの使用によって、更新されたデータのみ送受信するようにすることによって、全体の処理速度を向上させることができる。
【図面の簡単な説明】
【００２０】
【図１】ＨＩＬＳにおける、コンピュータとＥＣＵ間の従来のＤＭＡ転送処理のタイミング・チャートを示す。
【図２】本発明を実施するためのハードウェアのブロック図を示す図である。
【図３】インターフェース・ボードの構成を示すブロック図である。
【図４】実際のＥＣＵの接続を示す構成図である。
【図５】ＥＣＵをグループ化して接続する構成図である。
【図６】連続ＤＭＡの動作の処理のフローチャートを示す図である。
【図７】シミュレーション・ソフトウェアが、主記憶上で確保する受信バッファ、送信バッファ及び受信済み世代ＩＤの格納領域を示す図である。
【図８】シミュレーション・ソフトウェアの動作を示すフローチャートである。
【図９】メモリからデータを読み出す、ＤＭＡコントローラの処理を示すフローチャートである。
【図１０】メモリにデータを書き込む、ＤＭＡコントローラの処理を示すフローチャートである。
【図１１】アクセス・タイミングの学習された遅延付きで、メモリからデータを読み出す、ＤＭＡコントローラの処理を示すフローチャートである。
【図１２】アクセス・タイミングの学習された遅延による効果を説明するタイミング図である。
【発明を実施するための形態】
【００２１】
以下、図面に基づき、この発明の実施例を説明する。特に断わらない限り、同一の参照番号は、図面を通して、同一の対象を指すものとする。尚、以下で説明するのは、本発明の一実施形態であり、この発明を、この実施例で説明する内容に限定する意図はないことを理解されたい。
【００２２】
図２を参照すると、本発明の一実施例に係るシステム構成及び処理を実現するためのコンピュータ２００のブロック図が示されている。図２において、好適にはシステム・バス２０２には、ＣＰＵ２０４と、主記憶（ＲＡＭ）２０６と、ハードディスク・ドライブ（ＨＤＤ）２０８と、キーボード２１０とマウス２０６と、ディスプレイ２１４が接続されている。ＣＰＵ２０４は、好適には、３２ビットまたは６４ビットのアーキテクチャに基づくものであり、例えば、インテル社のＰｅｎｔｉｕｍ（商標）  ４、Ｃｏｒｅ（商標）２  Ｄｕｏ、Ｘｅｏｎ（商標）、ＡＭＤ社のＡｔｈｌｏｎ（商標）などを使用することができる。主記憶２０６は、好適には、２ＧＢ以上の容量をもつものである。
【００２３】
バス２０２にはさらに、インターフェース・ボード２１６が接続されている。後で詳細に説明するが、インターフェース・ボード２１６には、本発明に係るＤＭＡ機構を実行する論理回路が搭載されている。
【００２４】
インターフェース・ボード２１６にはさらに、所定のインターフェース・ロジックを介して、複数の電子制御ユニット（ＥＣＵ）２１８ａ、２１８ｂ、・・・、２１８ｚが接続されている。この実施例では、テストされるＥＣＵは、自動車用のものである。
【００２５】
ＥＣＵ２１８ａ、２１８ｂ、・・・、２１８ｚは、それ自体が小さなコンピュータであり、実機においては、センサ入力などからの割り込みに応じて動作する。一方、エンジンなどは連続的に機械的動作を行っている。すなわち、コンピュータ系のディジタル・システムと、機械系の物理システムが、自動車という単一システムにおいて、並列に協調動作を行っている。この実施例では、ＥＣＵ２１８ａ、２１８ｂ、・・・、２１８ｚは各々、エンジンのインジェクタ、トランスミッションのシフト・コントロール、ブレーキのバルブ制御、ドアロックなどの駆動用の信号を発生するためのものである。なお、以下の記載では、便宜上、ＥＣＵ２１８ａ、２１８ｂ、・・・、２１８ｚを、総称的にＥＣＵ２１８と呼ぶことがある。
【００２６】
ハードディスク・ドライブ２０８には、個々に図示しないが、オペレーティング・システムが、予め格納されている。オペレーティング・システムは、Ｌｉｎｕｘ（商標）、マイクロソフト社のＷｉｎｄｏｗｓ  ＸＰ（商標）、Ｗｉｎｄｏｗｓ（商標）２０００、アップルコンピュータのＭａｃ  ＯＳ（商標）などの、ＣＰＵ２０４に適合する任意のものでよい。
【００２７】
ハードディスク・ドライブ２０８にはさらに、本発明に係るシミュレーション・ソフトウェアが保存されている。シミュレーション・ソフトウェアは、オペレーティング・システムの働きで主記憶２０６にロードされ、自動車実機の動きに沿ったシナリオで、インターフェース・ボード２１６を介して各ＥＣＵ２１８ａ、２１８ｂ、．．．、２１８ｚを駆動するようにデータを生成する。
【００２８】
キーボード２１０及びマウス２１２は、オペレーティング・システムまたは、ハードディスク・ドライブ２０８から主記憶２０６にロードされ、ディスプレイ２１４に表示されたプログラム（図示しない）を起動したり、文字を打ち込んだりするために使用される。
【００２９】
ディスプレイ２１４は、好適には、液晶ディスプレイであり、例えば、ＸＧＡ（１０２４×７６８の解像度）、またはＵＸＧＡ（１６００×１２００の解像度）などの任意の解像度のものを使用することができる。
【００３０】
図３は、主としてインターフェース・ボード２１６のより詳細な構成を示すブロック図である。
【００３１】
図３において、シミュレーション・ソフトウェア３０２は、上述したように、コンピュータ２００のハードディスク・ドライブ２０８に保存され、コンピュータ２００の起動時に、オペレーティング・システムの働きで主記憶２０６にロードされて実行される。シミュレーション・ソフトウェア３０２は、インターフェース・ボード２１６に対してＤＭＡによるデータ転送機能をイネーブルまたはディスエーブルする機能を持つ。また、シミュレーション・ソフトウェア３０２は、ΔＴ時間単位（ΔＴはシミュレーション時間間隔であり、テスト担当者によって設定可能である）で自動車プラントの動きをシミュレーションする。  後で詳細に説明するが、シミュレーション・ソフトウェア３０２が、主記憶２０６の所定領域から、そこへ転送されたＥＣＵ２１８の出力を取得し、それを自らの入力としてΔＴ時間分のプラントシミュレーションを行う。さらにシミュレーション・ソフトウェア３０２はΔＴ時間分のシミュレーション出力を主記憶２０６の所定領域にロードし、ＥＣＵ２１８への入力とする。この動作は、ＨＩＬＳの実行終了まで繰り返される。
【００３２】
シミュレーション・ソフトウェア３０２はさらに、ＥＣＵ２１８に送信すべきデータに世代ＩＤを付与して主記憶２０６の所定領域に更新する機能を持つ。世代ＩＤは、送信すべきデータをすべて更新し終わったことに応答して、シミュレーション・ソフトウエア２０３によって更新される。
【００３３】
インターフェース・ボード２１６において、受信データ用バッファ３０４は、バス２０２を介してシミュレーション・ソフトウェア３０２から転送されたデータを一旦受け取って保持する機能をもつ。
【００３４】
連続ＤＭＡによるデータ受信制御部３０６は、受信ＩＤレジスタを持つＩＤ更新検出部３０６ａを有し、シミュレーション・ソフトウェア３０２がＥＣＵ２１８に送信するため主記憶２０６の所定領域に更新するデータおよびその世代ＩＤを受信する機能を有する。図示しないが、連続ＤＭＡによるデータ受信制御部３０６は、主記憶からの読み出し先頭アドレスをセットするためのアドレス・レジスタ、および転送するデータのサイズをセットするためのデータサイズ・レジスタを持つ。そして、受信データ用バッファ３０４が、主記憶２０６の所定領域から世代ＩＤをもつデータを受信する際に、データの世代ＩＤを、それまでに受信したデータの世代ＩＤと比較し、それまでに受信したデータの世代ＩＤより更新されている場合にのみ、受信データ用バッファ３０４がデータを受信するように制御する。
【００３５】
アクセスタイミング学習部３０８は、データ取得タイミング・レジスタをもち、実際のデータアクセス履歴に基づき、更新されたデータにアクセスできるタイミングを学習し、それをデータ取得タイミング・レジスタに保持しておくことによって、バスへのアクセス回数を低減させるためのものである。アクセスタイミング学習部３０８の働きについて、後で図１１を参照して詳細に説明する。
【００３６】
受信データ用バッファ３０４が受信したデータは、ＥＣＵ入力回路インターフェース部３１０に送られ、そこからＥＣＵ２１８に送出される。
【００３７】
逆に、ＥＣＵ２１８からデータを受け取る流れもある。ＥＣＵ出力回路インターフェース部３１２は、ＩＤ付加部３１２ａをもち、ＥＣＵ２１８からデータを受け取ると、送信ＩＤレジスタをもつＩＤ付加部３１２ａによってＩＤを更新する。送信データ用バッファ３１４は、ＥＣＵ出力回路インターフェース部３１２から、転送すべきデータと更新されたＩＤを受け取り、主記憶２０６の所定領域に転送する。ＥＣＵ出力回路インターフェース部３１２はまた、前回データを送信データ用バッファ３１４に送信した際のＩＤを、送信ＩＤレジスタに保持する。
【００３８】
連続ＤＭＡによるデータ送信制御部３１６は、図示しないが、メインメモリへの書込み先頭アドレスをセットするためのアドレス・レジスタ、及び転送するデータのサイズをセットするためのデータサイズ・レジスタをもつ。
【００３９】
送信データ用バッファ３１４は、連続ＤＭＡによるデータ送信制御部３１６の制御により、シミュレーション・ソフトウェア３０２の入力に与えるデータおよびそのＩＤを主記憶２０６の所定領域に転送するように動作する。シミュレーション・ソフトウェア３０２は、前回のシミュレーションでＥＣＵ２１８から受信しシミュレーションの入力に使用したデータのＩＤを保持しており、それを主記憶２０６の所定領域にあるデータのＩＤと比較し、主記憶２０６の所定領域にあるデータのＩＤが更新されていない場合、プラントシミュレーションを開始しないようにする。逆に主記憶２０６の所定領域にあるデータのＩＤが更新されている場合、シミュレーション・ソフトウェア３０２は、保持するデータＩＤを更新し、主記憶２０６の所定領域にあるＥＣＵ２１８の出力をシミュレーションの入力とし、ΔＴ時間だけ自動車プラントの動きをシミュレーションする。
【００４０】
ΔＴカウンタ３１８は、コンピュータ２００からクロックを取り込んで、ΔＴ周期の信号を作り、ＥＣＵ入力回路インターフェース部３１０と、ＥＣＵ出力回路インターフェース部３１２に供給する。ＥＣＵ入力回路インターフェース部３１０と、ＥＣＵ出力回路インターフェース部３１２は、このΔＴ周期の信号に基づき、それぞれ、ＥＣＵ２１８にデータを送出するタイミングと、ＥＣＵ２１８からデータを取り込むタイミングを制御する。すなわち、バス・クロックをベースに時間をカウントし、シミュレーション時間間隔ΔＴ毎にＥＣＵ２１８に入力を与えて、出力をサンプリングすることで、シミュレーションを実行する。
【００４１】
図４は、実際のＥＣＵの接続を示す構成図である。図４に示されているように、インターフェース・ボード２１６は、ＦＰＧＡ（ユーザによって内部論理回路を定義・変更できる集積回路）４０２で実現することもできる。
【００４２】
図４において、インターフェース・ロジック４０４は、例えば、図３で、ＥＣＵ入力回路インターフェース部３１０及びＥＣＵ出力回路インターフェース部３１２として示したものの機能を併せ持つ。
【００４３】
インターフェース・ロジック４０４とインターフェース・ボード２１６の間は、好適にはＳＭＡなどのシリアル・ケーブル４０６で接続される。
【００４４】
一方、インターフェース・ロジック４０４とＥＣＵ２１８の間は、好適には、フラット・ケーブルなどのパラレル・ケーブル４０８で接続される。
【００４５】
図４は、単一のインターフェース・ボード２１６を使う構成を示すが、図５は、複数のインターフェース・ボード２１６ａ、２１６ｂを使用する構成を示す。このように複数のインターフェース・ボード２１６ａ、２１６ｂを使用するのは、シミュレーションソフトウェア３０２から複数の物理量（エンジンのインジェクタ、トランスミッションのシフト・コントロールなど）がシミュレートされるが、それぞれの物理量の計算にかかる計算時間が異なり、シミュレーションソフトウェア３０２がそれらの出力値を更新するタイミングが異なるからである。更新タイミングが比較的に近いものをグルーピングし、同一グループの物理量を同一のインターフェース・ボードを介して同一タイミングでＥＣＵ２１８に転送したほうが有利である。
【００４６】
なお、図５において、ＦＰＧＡ４０２ａ、ＦＰＧＡ４０２ｂ、インターフェース・ロジック４０４、シリアル・ケーブル４０６、及びフラット・ケーブル４０８は、図４と同様であるので、説明を省略する。
【００４７】
次に、図６のフローチャートを参照して、インターフェース・ボード２１６のＤＭＡＣ（ＤＭＡコントローラ）を使ったデータ転送処理を説明する。処理は、ＤＭＡＣを制御するソフトウェアの処理とＤＭＡコントローラハードウェアの処理に分けられる。ここで、ＤＭＡコントローラとは、インターフェース・ボード２１６上での、転送制御機構全体のことである。
【００４８】
図６において、ステップ６０２、ステップ６０４とステップ６０６からなるフローチャートは、ＣＰＵ２０４上で実行し、ＤＭＡコントローラを制御するソフトウェアの処理フローを示している。この処理フローを、シミュレーションソフトウェアの処理フローとする。ステップ６０２では、メインメモリ、すなわち主記憶２０６への書き込み先頭アドレス、及び読み出し先頭アドレスがそれぞれＤＭＡコントローラのアドレス・レジスタにセットされる。また、転送するデータのサイズが、データサイズ・レジスタにセットされる。そして、ＤＭＡ機能がイネーブルされる。
【００４９】
ステップ６０４では、ＤＭＡ転送と並行して、シミュレーション・ソフトェア３０２が、プラント・シミュレーションなどのオペレーションを実行する。
【００５０】
ステップ６０６では、ＤＭＡ機能をディスエーブルされる。これがＤＭＡコントローラを制御するソフトウェアの動作であり、ステップ６０２とステップ６０６において、ＤＭＡコントローラに対する操作を行う。ＤＭＡコントローラのハードウェアは、ステップ６０２でイネーブルされ、ステップ６０６でディスエーブルされるまで動作し続ける。ＤＭＡコントローラのハードウェアが、ステップ６０２においてイネーブルされてからの処理を、詳細に説明すると、以下の通りである。
【００５１】
先ず、ステップ６１０では、メインメモリからデータを読み出す転送シーケンスが実行される。
【００５２】
ステップ６１２では、ＤＭＡ機能がディスエーブルされているかどうかが判断され、ディスエーブルされていないのであれば、ステップ６１４へ進み、ディスエーブルされていればＤＭＡ動作を終了する。
【００５３】
ステップ６１４では、メインメモリへデータを書き込む転送シーケンスが実行される。
【００５４】
さらにステップ６１０とステップ６１４を詳細に示すと、以下の通りである。まず、ステップ６２０では、ステップ６１０の場合、転送元であるメインメモリのコントローラに転送要求を出す。ステップ６１４の場合は、転送先であるメインメモリのコントローラに転送要求を出す。
【００５５】
ステップ６２２では、転送要求が受け付けられたかどうかが判断される。そうでなければここで待機する。
【００５６】
転送要求が受け付けられると、ステップ６２４では、ステップ６１０の場合、アドレスレジスタにセットされた転送元の先頭アドレスを送り出す処理が行われる。ステップ６１６の場合は、アドレスレジスタにセットされた転送先の先頭アドレスを送り出す処理が行われる。
【００５７】
ステップ６２６では、ステップ６１０の場合、データが受信される。ステップ６１４の場合は、データが送信される。
【００５８】
ステップ６２８では、データ・サイズ・レジスタにセットされたデータサイズ分のデータが転送されたかどうかが判断され、そうでなければ、ステップ６２６に戻る。
【００５９】
データ・サイズ・レジスタにセットされたデータサイズ分のデータが転送されたなら、データ転送シーケンスは終了し、ステップ６１２へ進む。
【００６０】
図７は、シミュレーション・ソフトウェア３０２が、主記憶２０６上で確保する受信バッファ７０２、送信バッファ７０４及び受信済み世代ＩＤの格納領域７０６を示す図である。
【００６１】
図示されているように、受信バッファ７０２と送信バッファ７０４はそれぞれ、主記憶２０６の連続番地に配置される。
【００６２】
送信バッファ７０４の場合、先頭番地に送信データの世代ＩＤが配置され、送信データがそれに続く。
【００６３】
受信バッファ７０２の場合、最後の番地に受信データの世代ＩＤが入り、受信データは、世代ＩＤより小さいアドレスに配置する。
【００６４】
図７に図示しないが、シミュレーション・ソフトウェア３０２は、送信データの世代ＩＤを保持し、更新する機能ももつ。ここで、世代ＩＤの更新は、単に値を１だけインクリメントするとか、適当な値を加えるなどの任意の方法を用いることができる。この世代ＩＤの更新方法は、他の世代ＩＤにも適用される。
【００６５】
受信済み世代ＩＤの格納領域７０６は、主記憶２０６上で、受信バッファ７０２や送信バッファ７０４とは全く異なる位置に確保される。
【００６６】
インターフェース・ボード２１６では、受信データ用バッファ３０４は、送信バッファ７０４からデータを受け取り、送信データ用バッファ３１４は受信バッファ７０２にデータを転送する。受信済み世代ＩＤの格納領域７０６は、受信バッファ７０２の最後の番地にある世代ＩＤの更新を受けて更新する。
【００６７】
図８は、図６をさらに詳細に説明したもので、シミュレーション・ソフトウェア３０２のシミュレーション動作を説明するためのフローチャートである。ステップ８０２では、シミュレーション・ソフトウェア３０２は、送信バッファ７０４、受信バッファ７０２、及び受信済み世代ＩＤの格納領域７０６を初期化する。
【００６８】
ステップ８０４では、シミュレーション・ソフトウェア３０２は、送信バッファ７０４と受信バッファ７０２の先頭アドレスを、インターフェース・ボード２１６にセットし、インターフェース・ボード２１６をイネーブルする。
【００６９】
ステップ８０６では、シミュレーション・ソフトウェア３０２は、受信データの世代ＩＤを、受信済み世代ＩＤと比較して、それが更新されているかどうか判断する。もしそうなら、シミュレーション・ソフトウェア３０２は、ステップ８０８で、受信済み世代ＩＤを更新する。そうでないなら、ステップ８０６で待機する。
【００７０】
ステップ８０８に続いて、ステップ８１０では、シミュレーション・ソフトウェア３０２は、受信バッファ７０２上の受信データを使って、ΔＴ時間分のシミュレーションを行い、送信バッファ７０４上の出力データを更新する。インターフェース・ボード２１６は、後述する処理によって、コンピュータ２００のメモリ・コントローラ（図示しない）に読取りの転送要求を出し、それが受け入れられたことに応答して、送信バッファ７０４の内容を、連続ＤＭＡによるデータ受信制御部３０６による制御の下、受信データ用バッファ３０４に取り込む。
【００７１】
受信データ用バッファ３０４に取りまれたデータは、ΔＴカウンタ３１８によって制御される適当なタイミングで、ＥＣＵ入力回路インターフェース部３１０を介してＥＣＵ２１８に転送される。
【００７２】
その転送されたデータに基づきＥＣＵ２１８は動作し、その動作の処理結果を、ΔＴカウンタ３１８によって制御される適当なタイミングで、ＥＣＵ出力回路インターフェース部３１２に転送する。転送されたデータは、ＩＤ付与部３１２ａで更新された世代ＩＤとともに、送信データ用バッファ３１４に格納される。
【００７３】
次に、インターフェース・ボード２１６は、コンピュータ２００のメモリ・コントローラ（図示しない）に書込みの転送要求を出し、それが受け入れられたことに応答して、送信データ用バッファ３１４の内容を、連続ＤＭＡによるデータ送信制御部３１６による制御の下、受信バッファ７０２に書き込む。この際、シミュレーション・ソフトウェア３０２側では、インターフェース・ボード２１６から受領した受信バッファ７０２上の世代ＩＤの値と、受信済み世代ＩＤ７０６の値を比較して、受信バッファ７０２上の世代ＩＤの値が更新されていない場合は、処理済みの受信データとみなして、シミュレーション処理の入力として使わないようにすることができる。
【００７４】
ステップ８１２では、シミュレーション・ソフトウェア３０２は、送信データの世代ＩＤをインクリメントする。
【００７５】
ステップ８１４では、シミュレーション・ソフトウェア３０２は、シミュレーションを終了するかどうか判断する。この判断は、当該のシミュレーションのスケジュール、もしくはシミュレーションを実行するテスト担当者の操作に基づき行われる。
【００７６】
シミュレーションを続けるのであれば、処理はステップ８０６に戻る。シミュレーションを終るのであれば、ステップ８１６に進んで、シミュレーション・ソフトウェア３０２は、インターフェース・ボード２１６をディスエーブルする。
【００７７】
次に、図９及び図１０のフローチャートを参照して、ＤＭＡＣハードウェアの制御の処理を説明する。図６のフローチャートでも、ＤＭＡＣハードウェアの制御を説明したが、以下では、世代ＩＤを使用した、より詳細な処理を説明する。
【００７８】
図９において、先ず、ステップ９０２では、メインメモリからデータを読み出す転送シーケンスが実行される。
【００７９】
ステップ９０４では、ＤＭＡ機能がディスエーブルされているかどうかが判断され、ディスエーブルされていないのであれば、ステップ９０６へ進み、そうでなければＤＭＡ動作を終了する。
【００８０】
ステップ９０６では、メインメモリへデータを書き込む転送シーケンスが実行される。
【００８１】
更にステップ９０２を詳細に示すと、以下のとおりである。先ず、ステップ９１０では、転送元であるメインメモリのコントローラに転送要求を出す。
【００８２】
ステップ９１２では、転送要求が受け付けられたかどうかが判断される。そうでなければここで待機する。
【００８３】
転送要求が受け付けられると、ステップ９１４では、アドレスレジスタにセットされた転送元の先頭アドレスを送り出す処理が行われる。
【００８４】
次のステップ９１６では、主記憶にある送信バッファ７０４の先頭から順にデータを受信する。最初に受信するのは、シミュレーション・ソフトウェア３０２からのＩＤである。
【００８５】
ステップ９１８では、受信ＩＤが、受信ＩＤレジスタの値と較べて新しいかどうかが判断される。受信ＩＤレジスタは、連続ＤＭＡによるデータ受信制御部３０６内にあり、受信したＩＤを保存しておくためのレジスタである。
【００８６】
受信ＩＤが、受信ＩＤレジスタの値と較べて新しくない場合は、処理は、ステップ９１０に戻る。
【００８７】
受信ＩＤが、受信ＩＤレジスタの値と較べて新しいと判断された場合は、ステップ９２０でデータが受信される。
【００８８】
ステップ９２２では、データ・サイズ・レジスタにセットされたデータサイズ分のデータが転送されたかどうかが判断され、そうでなければ、ステップ９２０に戻る。
【００８９】
データ・サイズ・レジスタにセットされたデータサイズ分のデータが転送されたなら、ステップ９２４で受信ＩＤレジスタの値を受信ＩＤの値で更新する。
【００９０】
図１０は、図９のステップ９０６をより詳細に説明するフローチャートである。ステップ９０２からステップ９０８までは、図９のフローチャートと同一であるので、説明を省略する。
【００９１】
先ず、ステップ１００２では、転送先であるメインメモリのコントローラに転送要求を出す。
【００９２】
ステップ１００４では、転送要求が受け付けられたかどうかが判断される。そうでなければここで待機する。
【００９３】
転送要求が受け付けられると、ステップ１００６では、アドレスレジスタにセットされた転送先の先頭アドレスを送り出す処理が行われる。
【００９４】
次のステップ１００８では、データが送信される。
【００９５】
ステップ１０１０では、データ・サイズ・レジスタにセットされたデータサイズ分のデータが転送されたかどうかが判断され、そうでなければ、ステップ１００８に戻る。
【００９６】
データ・サイズ・レジスタにセットされたデータサイズ分のデータが転送されたなら、ステップ１０１２で受信ＩＤレジスタの値を受信ＩＤの値で更新し、ステップ９０２に戻る。
【００９７】
次に、図１１のフローチャートを参照して、ＤＭＡＣハードウェアの制御の処理を説明する。図９のフローチャートでも、ＤＭＡＣハードウェアの制御を説明したが、以下では、世代ＩＤを使用するだけではなく、アクセスタイミングの学習機能も使用する、より有利な実施例の処理を説明する。
【００９８】
図１１において、先ず、ステップ１１０２では、メインメモリからデータを読み出す転送シーケンスが実行される。
【００９９】
ステップ１１０４では、ＤＭＡ機能がディスエーブルされているかどうか判断され、そうでなければステップ１１０６へ進み、そうであればＤＭＡ動作は終了する。
【０１００】
ステップ１１０６では、メインメモリへデータを書き込む転送シーケンスが実行される。
【０１０１】
ステップ１１０６の後は、ステップ１１０２に戻る。
【０１０２】
さらにステップ１１０２を詳細に示すと、以下の通りである。インターフェース・ボード２１６にあるΔＴカウンタ３１８は、コンピュータ２００からクロックを取り込んでカウント・アップし、ΔＴ時間毎にリセットされるものである。ステップ１１１０では、ΔＴカウンタ３１８の値が、データ取得タイミング・レジスタにある値から１を引いた値に比べて、大きいかまたは等しいかどうか判断される。もしそうでなければ、ステップ１１０２で、ΔＴカウンタ３１８のカウント・アップを待つ。なお、データ取得タイミング・レジスタの初期値は、好適には１または適当な小さい値にセットされる。
【０１０３】
こうして、ΔＴカウンタ３１８の値が、データ取得タイミング・レジスタにある値から１を引いた値に較べて、大きいかまたは等しくなると、ステップ１１１２に進み、転送元であるメインメモリのコントローラに転送要求を出す。
【０１０４】
ステップ１１１４では、転送要求が受け付けられたかどうかが判断される。そうでなければここで待機する。
【０１０５】
転送要求が受け付けられると、ステップ１１１６では、アドレスレジスタにセットされた転送元の先頭アドレスを送り出す処理が行われる。
【０１０６】
次のステップ１１１８では、次のステップ１１１８では、送信バッファ７０４から、ＩＤを受信する。このＩＤとは、図７に示した送信データの世代ＩＤである。以下、この受信したＩＤを受信ＩＤと呼ぶ。
【０１０７】
ステップ１１２０では、受信ＩＤが、受信ＩＤレジスタの値と較べて新しいかどうかが判断される。受信ＩＤレジスタは、連続ＤＭＡによるデータ受信制御部３０６内にあり、受信したＩＤを保存しておくためのレジスタである。
【０１０８】
受信ＩＤが、受信ＩＤレジスタの値と較べて新しくない場合は、処理は、ステップ１１１２に戻る。
【０１０９】
受信ＩＤが、受信ＩＤレジスタの値と較べて新しいと判断された場合は、ステップ１１２２で、ΔＴカウンタ３１８にある値を使って、データ取得タイミング・レジスタの値が更新される。
【０１１０】
次に、ステップ１１２４でデータが受信される。
【０１１１】
ステップ１１２６では、データ・サイズ・レジスタにセットされたデータサイズ分のデータが転送されたかどうかが判断され、そうでなければ、ステップ１１２４に戻る。
【０１１２】
データ・サイズ・レジスタにセットされたデータサイズ分のデータが転送されたなら、ステップ１１２８で受信ＩＤレジスタの値を受信ＩＤの値で更新する。
【０１１３】
なお、ここでは、ステップ１１０６で、メインメモリへデータを書き込む転送シーケンスについては詳説しないが、例えば、図１０のステップ１００２〜１０１２と同様でよい。あるいは、ステップ１１０６でも、ステップ１１１０〜１１２８のデータ取得タイミング・レジスタを使うのと同様の仕組みで、アクセス・タイミングの学習された遅延を図ることもできる。
【０１１４】
図１２は、図１１のアクセス・タイミングの学習された遅延による効果を説明するタイミング図である。図１２において、Ｉ０，Ｉ１などは、インターフェース・ボード２１６側において、受信したデータとそのＩＤであり、Ｏ１，Ｏ２などは、インターフェース・ボード２１６から送信したデータとそのＩＤである。Ｉ０，Ｉ１はそれぞれ、ＩＤ０とＩＤ１を世代ＩＤとして持つ受信データをあらわし、Ｏ１，Ｏ２はそれぞれＩＤ１とＩＤ２を世代ＩＤとして持つ送信データをあらわしている。
【０１１５】
図１２(a)は、図９及び図１０に示す、アクセスタイミングの学習機能を使用しない場合のタイミング図である。この場合、アクセス・タイミングの学習された遅延のスキームを用いないので、図９のステップ９１６、ステップ９１８及びステップ９１０のループで示される無駄な試行が発生する。このような無駄な試行は、I0、I1などのＩＤをもつ更新されていないデータの受信で示される。
【０１１６】
一方、図１２(b)は、図１１に示す、アクセスタイミングの学習機能を使用した場合のタイミング図である。図１１の処理では、予め学習した遅延の後ステップ１１１８でＩＤを受信するので、ステップ１１２０の判断で、更新されたＩＤである可能性が高く、すると、ステップ１１２０からステップ１１１２に戻る可能性が減っている。このことによって、無駄な転送要求を減らすことができるので、全体のデータ転送速度を向上させることができる。
【０１１７】
以上、この発明を特定の実施例に基づき説明してきたが、この発明は、この特定の実施例に限定されず、当業者が自明に思いつく様々な変形、置換などの構成、技法適用可能であることを理解されたい。例えば、特定のプロセッサのアーキテクチャ、オペレーティング・システムなどに限定されない。
【０１１８】
また、上記実施例は、主として、自動車のＥＣＵのＨＩＬＳに関連するものであったが、このような例には限定されず、航空機、ロボットその他のプラント・シミュレーションのＨＩＬＳに広く適用可能であることを理解されたい。
【０１１９】
また、シミュレーション以外にも、小刻みに頻繁にデータ転送を要するような任意のアプリケーションに、本発明を利用することが可能であることは、当業者に明らかであろう。
【符号の説明】
【０１２０】
２００  コンピュータ
２０２  システム・バス
２０４  ＣＰＵ
２１０  キーボード
２１２  マウス
２１４  ディスプレイ
２０６  主記憶
２０２  バス
２１６  インターフェース・ボード
２１８  ＥＣＵ
２０８  ハードディスク・ドライブ
３０２  シミュレーション・ソフトウェア
３０４  受信データ用バッファ
３０６  データ受信制御部
３０８  アクセスタイミング学習部
３１０  入力回路インターフェース部
３１２  出力回路インターフェース部
３１４  送信データ用バッファ
３１６  データ送信制御部
３１８  ΔＴカウンタ
４０４  インターフェース・ロジック
４０６  シリアル・ケーブル
４０８  フラット・ケーブル
３０２  シミュレーション・ソフトェア
７０２  受信バッファ
７０４  送信バッファ
７０６  受信済み世代ＩＤ格納領域
【図１】
2011054129.tif 000003
【図２】
2011054129.tif 000004
【図３】
2011054129.tif 000005
【図４】
2011054129.tif 000006
【図５】
2011054129.tif 000007
【図６】
2011054129.tif 000008
【図７】
2011054129.tif 000009
【図８】
2011054129.tif 000010
【図９】
2011054129.tif 000011
【図１０】
2011054129.tif 000012
【図１１】
2011054129.tif 000013
【図１２】
2011054129.tif 000014