JP4802266B2 - コンピュータ・システム及びコンピュータ・システムにおけるデータ転送方法 - Google Patents

コンピュータ・システム及びコンピュータ・システムにおけるデータ転送方法 Download PDF

Info

Publication number
JP4802266B2
JP4802266B2 JP2009205077A JP2009205077A JP4802266B2 JP 4802266 B2 JP4802266 B2 JP 4802266B2 JP 2009205077 A JP2009205077 A JP 2009205077A JP 2009205077 A JP2009205077 A JP 2009205077A JP 4802266 B2 JP4802266 B2 JP 4802266B2
Authority
JP
Japan
Prior art keywords
data
generation
memory
transferred
computer system
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2009205077A
Other languages
English (en)
Other versions
JP2011054129A (ja
Inventor
綱 張
伸彰 ▲高▼橋
秀昭 小松
史朋 大澤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Priority to JP2009205077A priority Critical patent/JP4802266B2/ja
Priority to US12/874,283 priority patent/US20110060852A1/en
Publication of JP2011054129A publication Critical patent/JP2011054129A/ja
Application granted granted Critical
Publication of JP4802266B2 publication Critical patent/JP4802266B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal

Description

この発明は、コンピュータのメモリと周辺機器間で、直接メモリアクセス(DMA)の仕組みを使用してデータを転送するシステム及び方法に関し、より詳しくは、HILS(Hardware In the Loop Simulation)などのシミュレーション・システムにおいて、コンピュータのメモリとECUなどのテストされる装置間で、データを交換するシステムおよび方法に関するものである。
近年、携帯電話、デジタル・カメラ、エレベータ、自動車のECU、エンジン・シミュレータ、産業用ロボットなど、マイクロコンピュータによってハードウェアを直接制御する組込みシステムが日常的に使用される頻度が高まってきた。
一般的なコンピュータ・プログラムもそうであるが、特に組込みシステムでは、作成したプログラムが、正しく動作するかどうかを、さまさざまな状況毎にテストする必要がある。
このようなテストのために従来行われている技法として、HILS(Hardware In the Loop Simulation)がある。特に、自動車全体の電子制御システムをテストする環境は、フルビークルHILSと呼ばれる。フルビークルHILSにおいては、実験室内で、本物のECUが、エンジン、トランスミッション機構などの動きをソフトウェアシミュレーションするパーソナル・コンピュータまたは専用のハードウェア装置に接続され、所定のシナリオにしたがって、テストが行われる。ECUからの出力は、監視用のコンピュータに入力され、さらにはエンジン、トラスミッション機構などの動きと一緒にディスプレイに表示されて、テスト担当者がディスプレイを眺めながら、異常動作がないかどうか、チェックする。
HILSにおいては、コンピュータまたは専用のハードウェア装置と本物のECUの間が物理的に配線される。その際、パーソナル・コンピュータまたは専用のハードウェア装置とECUの間のデータ転送は、一般的には、DMA(direct memory access)という仕組みを用いて行われる。
一般的にDMAによるデータ転送はDMAコントローラなどDMA機構の管理下で行われる。DMA機構にはアドレス・レジスタ、データサイズ・レジスタおよびコントロールレジスタがある。DMAによるデータ転送を始めるには、転送元であるメモリの先頭アドレスをアドレス・レジスタにセットし、転送するデータのデータサイズをデータサイズ・レジスタにセットし、最後にコントロールレジスタにコマンドが書き込むことによって、データ転送が開始する。
図1に、従来のHILSで、ECUにデータを転送する処理のタイミング・チャートを示す。図示されているように、先ず、コンピュータまたは専用のハードウェア装置側で走っているシミュレーション・ソフトウェアが、DMA機構をもつインターフェース・ボードに対して、DMA転送コマンドを発行する。ある典型的な従来の構成では、このDMA転送コマンドの発行(DMA要求)に、6μs時間がかかる。転送されるデータは、例えば7ワードで、ここは600nsで完了する。その後、インターフェース・ボードは、シミュレーション・ソフトウェアに対して割込みをかけることで、転送の終了を通知する。この割込みには、典型的に、4μsの時間がかかる。
HILSでECUの動作テストを行うシミュレーション動作の特徴は、図1に示すように、比較的小さいデータがシミュレーション・ソフトウェアからインターフェース・ボードに転送され、またインターフェース・ボードからシミュレーションソフトウェアに転送されることである。それが周期的に行われる。
従来の構成では、このような個々の小さいデータの転送毎に、必ず、開始時のDMA要求と、終了時の割込みというオーバーヘッドが付随するため、転送速度を向上することが難しい。
特開2000−20455、特開2000−148663、及び特開2002−132706は、メインメモリの異なるエリアを転送先(元)にして順次にDMA転送を行う際に、DMAコントローラがDMA転送ごとに転送先(元)のメモリアドレスを計算し、アドレスレジスタにセットすることによって連続してDMA転送を行うことによって、設定オーバーヘッドを低減させることを開示する。
特開2007−79715には、1回DMA転送を行うと、2回目以降のDMA転送では1回目転送の設定を参照し、連続的にDMAを行うことが開示されている。
これらの従来技術は、DMA転送に係るオーバーヘッドを減らして、連続してDMA転送を行う仕組みを教示する。しかし、ここに開示されている方法では、シミュレーション・ソフトウェアがメモリ上のデータを更新することと、更新されたデータを適切にDMA転送することの同期を図ることが難しい。
特開2000−20455 特開2000−148663 特開2002−132706 特開2007−79715
従って、この発明の目的は、HILSに適合する、オーバーヘッドの少ないDMA転送技法を提供することにある。
本発明は、基本的に、連続DMAの概念を使用する。すなわち、本発明においては、一旦DMA転送がイネーブルされると、インターフェース・ボードは、次にディスエーブルされるまで、繰り返し、データ転送を要求し続ける。これによって、DMA要求のためのオーバーヘッドを削減することができる。
HILSでは、エンジン、トランスミッション機構などの動きをソフトウェアでシミュレーションされた結果がECUの入力に与えられ、さらにECUの出力がソフトウェアシミュレーションに入力される。ソフトウェア・シミュレーションとECU間で連続DMAを使用してデータ転送を行うと、ソフトウェア・シミュレーションが実行し終わる前に、メモリにあるシミュレーション出力が更新されないまま、DMA転送によってECUに与えられる可能性がある。またECUが動作し、出力を更新する前に、その出力がソフトウェア・シミュレーションに入力される可能性もある。この問題を解決するため、本発明では、ソフトウェア・シミュレーションにおいて、出力データに世代IDを付与し、出力データが更新されるたびに世代IDをも更新する。インターフェース・ボードは更新された世代IDを持つデータのみをECUへ転送するようにした。
このような世代IDを用いる仕組みは、ECUから受け取ったデータを、インターフェース・ボードからシミュレーション・システムに送信する際にも使用される。
また、連続DMAの仕組みを使用すると、データ転送が繰り返し行われるため、システムバスを介したメインメモリへのアクセスが増え、HILSシステムに大きく負担がかかるため、HILSシステムの応答を遅くなる。この問題を解決するため、本発明では、インターフェース・ボードにおいて、データ更新のタイミングを学習し、その学習されたタイミングでデータ転送をするようにした。これによって無駄なデータアクセスを回避することが可能となる。
この発明によれば、連続DMAによってDMA要求のためのオーバーヘッドを削減しつつ、世代IDの使用によって、更新されたデータのみ送受信するようにすることによって、全体の処理速度を向上させることができる。
HILSにおける、コンピュータとECU間の従来のDMA転送処理のタイミング・チャートを示す。 本発明を実施するためのハードウェアのブロック図を示す図である。 インターフェース・ボードの構成を示すブロック図である。 実際のECUの接続を示す構成図である。 ECUをグループ化して接続する構成図である。 連続DMAの動作の処理のフローチャートを示す図である。 シミュレーション・ソフトウェアが、主記憶上で確保する受信バッファ、送信バッファ及び受信済み世代IDの格納領域を示す図である。 シミュレーション・ソフトウェアの動作を示すフローチャートである。 メモリからデータを読み出す、DMAコントローラの処理を示すフローチャートである。 メモリにデータを書き込む、DMAコントローラの処理を示すフローチャートである。 アクセス・タイミングの学習された遅延付きで、メモリからデータを読み出す、DMAコントローラの処理を示すフローチャートである。 アクセス・タイミングの学習された遅延による効果を説明するタイミング図である。
以下、図面に基づき、この発明の実施例を説明する。特に断わらない限り、同一の参照番号は、図面を通して、同一の対象を指すものとする。尚、以下で説明するのは、本発明の一実施形態であり、この発明を、この実施例で説明する内容に限定する意図はないことを理解されたい。
図2を参照すると、本発明の一実施例に係るシステム構成及び処理を実現するためのコンピュータ200のブロック図が示されている。図2において、好適にはシステム・バス202には、CPU204と、主記憶(RAM)206と、ハードディスク・ドライブ(HDD)208と、キーボード210とマウス206と、ディスプレイ214が接続されている。CPU204は、好適には、32ビットまたは64ビットのアーキテクチャに基づくものであり、例えば、インテル社のPentium(商標) 4、Core(商標)2 Duo、Xeon(商標)、AMD社のAthlon(商標)などを使用することができる。主記憶206は、好適には、2GB以上の容量をもつものである。
バス202にはさらに、インターフェース・ボード216が接続されている。後で詳細に説明するが、インターフェース・ボード216には、本発明に係るDMA機構を実行する論理回路が搭載されている。
インターフェース・ボード216にはさらに、所定のインターフェース・ロジックを介して、複数の電子制御ユニット(ECU)218a、218b、・・・、218zが接続されている。この実施例では、テストされるECUは、自動車用のものである。
ECU218a、218b、・・・、218zは、それ自体が小さなコンピュータであり、実機においては、センサ入力などからの割り込みに応じて動作する。一方、エンジンなどは連続的に機械的動作を行っている。すなわち、コンピュータ系のディジタル・システムと、機械系の物理システムが、自動車という単一システムにおいて、並列に協調動作を行っている。この実施例では、ECU218a、218b、・・・、218zは各々、エンジンのインジェクタ、トランスミッションのシフト・コントロール、ブレーキのバルブ制御、ドアロックなどの駆動用の信号を発生するためのものである。なお、以下の記載では、便宜上、ECU218a、218b、・・・、218zを、総称的にECU218と呼ぶことがある。
ハードディスク・ドライブ208には、個々に図示しないが、オペレーティング・システムが、予め格納されている。オペレーティング・システムは、Linux(商標)、マイクロソフト社のWindows XP(商標)、Windows(商標)2000、アップルコンピュータのMac OS(商標)などの、CPU204に適合する任意のものでよい。
ハードディスク・ドライブ208にはさらに、本発明に係るシミュレーション・ソフトウェアが保存されている。シミュレーション・ソフトウェアは、オペレーティング・システムの働きで主記憶206にロードされ、自動車実機の動きに沿ったシナリオで、インターフェース・ボード216を介して各ECU218a、218b、...、218zを駆動するようにデータを生成する。
キーボード210及びマウス212は、オペレーティング・システムまたは、ハードディスク・ドライブ208から主記憶206にロードされ、ディスプレイ214に表示されたプログラム(図示しない)を起動したり、文字を打ち込んだりするために使用される。
ディスプレイ214は、好適には、液晶ディスプレイであり、例えば、XGA(1024×768の解像度)、またはUXGA(1600×1200の解像度)などの任意の解像度のものを使用することができる。
図3は、主としてインターフェース・ボード216のより詳細な構成を示すブロック図である。
図3において、シミュレーション・ソフトウェア302は、上述したように、コンピュータ200のハードディスク・ドライブ208に保存され、コンピュータ200の起動時に、オペレーティング・システムの働きで主記憶206にロードされて実行される。シミュレーション・ソフトウェア302は、インターフェース・ボード216に対してDMAによるデータ転送機能をイネーブルまたはディスエーブルする機能を持つ。また、シミュレーション・ソフトウェア302は、ΔT時間単位(ΔTはシミュレーション時間間隔であり、テスト担当者によって設定可能である)で自動車プラントの動きをシミュレーションする。 後で詳細に説明するが、シミュレーション・ソフトウェア302が、主記憶206の所定領域から、そこへ転送されたECU218の出力を取得し、それを自らの入力としてΔT時間分のプラントシミュレーションを行う。さらにシミュレーション・ソフトウェア302はΔT時間分のシミュレーション出力を主記憶206の所定領域にロードし、ECU218への入力とする。この動作は、HILSの実行終了まで繰り返される。
シミュレーション・ソフトウェア302はさらに、ECU218に送信すべきデータに世代IDを付与して主記憶206の所定領域に更新する機能を持つ。世代IDは、送信すべきデータをすべて更新し終わったことに応答して、シミュレーション・ソフトウエア203によって更新される。
インターフェース・ボード216において、受信データ用バッファ304は、バス202を介してシミュレーション・ソフトウェア302から転送されたデータを一旦受け取って保持する機能をもつ。
連続DMAによるデータ受信制御部306は、受信IDレジスタを持つID更新検出部306aを有し、シミュレーション・ソフトウェア302がECU218に送信するため主記憶206の所定領域に更新するデータおよびその世代IDを受信する機能を有する。図示しないが、連続DMAによるデータ受信制御部306は、主記憶からの読み出し先頭アドレスをセットするためのアドレス・レジスタ、および転送するデータのサイズをセットするためのデータサイズ・レジスタを持つ。そして、受信データ用バッファ304が、主記憶206の所定領域から世代IDをもつデータを受信する際に、データの世代IDを、それまでに受信したデータの世代IDと比較し、それまでに受信したデータの世代IDより更新されている場合にのみ、受信データ用バッファ304がデータを受信するように制御する。
アクセスタイミング学習部308は、データ取得タイミング・レジスタをもち、実際のデータアクセス履歴に基づき、更新されたデータにアクセスできるタイミングを学習し、それをデータ取得タイミング・レジスタに保持しておくことによって、バスへのアクセス回数を低減させるためのものである。アクセスタイミング学習部308の働きについて、後で図11を参照して詳細に説明する。
受信データ用バッファ304が受信したデータは、ECU入力回路インターフェース部310に送られ、そこからECU218に送出される。
逆に、ECU218からデータを受け取る流れもある。ECU出力回路インターフェース部312は、ID付加部312aをもち、ECU218からデータを受け取ると、送信IDレジスタをもつID付加部312aによってIDを更新する。送信データ用バッファ314は、ECU出力回路インターフェース部312から、転送すべきデータと更新されたIDを受け取り、主記憶206の所定領域に転送する。ECU出力回路インターフェース部312はまた、前回データを送信データ用バッファ314に送信した際のIDを、送信IDレジスタに保持する。
連続DMAによるデータ送信制御部316は、図示しないが、メインメモリへの書込み先頭アドレスをセットするためのアドレス・レジスタ、及び転送するデータのサイズをセットするためのデータサイズ・レジスタをもつ。
送信データ用バッファ314は、連続DMAによるデータ送信制御部316の制御により、シミュレーション・ソフトウェア302の入力に与えるデータおよびそのIDを主記憶206の所定領域に転送するように動作する。シミュレーション・ソフトウェア302は、前回のシミュレーションでECU218から受信しシミュレーションの入力に使用したデータのIDを保持しており、それを主記憶206の所定領域にあるデータのIDと比較し、主記憶206の所定領域にあるデータのIDが更新されていない場合、プラントシミュレーションを開始しないようにする。逆に主記憶206の所定領域にあるデータのIDが更新されている場合、シミュレーション・ソフトウェア302は、保持するデータIDを更新し、主記憶206の所定領域にあるECU218の出力をシミュレーションの入力とし、ΔT時間だけ自動車プラントの動きをシミュレーションする。
ΔTカウンタ318は、コンピュータ200からクロックを取り込んで、ΔT周期の信号を作り、ECU入力回路インターフェース部310と、ECU出力回路インターフェース部312に供給する。ECU入力回路インターフェース部310と、ECU出力回路インターフェース部312は、このΔT周期の信号に基づき、それぞれ、ECU218にデータを送出するタイミングと、ECU218からデータを取り込むタイミングを制御する。すなわち、バス・クロックをベースに時間をカウントし、シミュレーション時間間隔ΔT毎にECU218に入力を与えて、出力をサンプリングすることで、シミュレーションを実行する。
図4は、実際のECUの接続を示す構成図である。図4に示されているように、インターフェース・ボード216は、FPGA(ユーザによって内部論理回路を定義・変更できる集積回路)402で実現することもできる。
図4において、インターフェース・ロジック404は、例えば、図3で、ECU入力回路インターフェース部310及びECU出力回路インターフェース部312として示したものの機能を併せ持つ。
インターフェース・ロジック404とインターフェース・ボード216の間は、好適にはSMAなどのシリアル・ケーブル406で接続される。
一方、インターフェース・ロジック404とECU218の間は、好適には、フラット・ケーブルなどのパラレル・ケーブル408で接続される。
図4は、単一のインターフェース・ボード216を使う構成を示すが、図5は、複数のインターフェース・ボード216a、216bを使用する構成を示す。このように複数のインターフェース・ボード216a、216bを使用するのは、シミュレーションソフトウェア302から複数の物理量(エンジンのインジェクタ、トランスミッションのシフト・コントロールなど)がシミュレートされるが、それぞれの物理量の計算にかかる計算時間が異なり、シミュレーションソフトウェア302がそれらの出力値を更新するタイミングが異なるからである。更新タイミングが比較的に近いものをグルーピングし、同一グループの物理量を同一のインターフェース・ボードを介して同一タイミングでECU218に転送したほうが有利である。
なお、図5において、FPGA402a、FPGA402b、インターフェース・ロジック404、シリアル・ケーブル406、及びフラット・ケーブル408は、図4と同様であるので、説明を省略する。
次に、図6のフローチャートを参照して、インターフェース・ボード216のDMAC(DMAコントローラ)を使ったデータ転送処理を説明する。処理は、DMACを制御するソフトウェアの処理とDMAコントローラハードウェアの処理に分けられる。ここで、DMAコントローラとは、インターフェース・ボード216上での、転送制御機構全体のことである。
図6において、ステップ602、ステップ604とステップ606からなるフローチャートは、CPU204上で実行し、DMAコントローラを制御するソフトウェアの処理フローを示している。この処理フローを、シミュレーションソフトウェアの処理フローとする。ステップ602では、メインメモリ、すなわち主記憶206への書き込み先頭アドレス、及び読み出し先頭アドレスがそれぞれDMAコントローラのアドレス・レジスタにセットされる。また、転送するデータのサイズが、データサイズ・レジスタにセットされる。そして、DMA機能がイネーブルされる。
ステップ604では、DMA転送と並行して、シミュレーション・ソフトェア302が、プラント・シミュレーションなどのオペレーションを実行する。
ステップ606では、DMA機能をディスエーブルされる。これがDMAコントローラを制御するソフトウェアの動作であり、ステップ602とステップ606において、DMAコントローラに対する操作を行う。DMAコントローラのハードウェアは、ステップ602でイネーブルされ、ステップ606でディスエーブルされるまで動作し続ける。DMAコントローラのハードウェアが、ステップ602においてイネーブルされてからの処理を、詳細に説明すると、以下の通りである。
先ず、ステップ610では、メインメモリからデータを読み出す転送シーケンスが実行される。
ステップ612では、DMA機能がディスエーブルされているかどうかが判断され、ディスエーブルされていないのであれば、ステップ614へ進み、ディスエーブルされていればDMA動作を終了する。
ステップ614では、メインメモリへデータを書き込む転送シーケンスが実行される。
さらにステップ610とステップ614を詳細に示すと、以下の通りである。まず、ステップ620では、ステップ610の場合、転送元であるメインメモリのコントローラに転送要求を出す。ステップ614の場合は、転送先であるメインメモリのコントローラに転送要求を出す。
ステップ622では、転送要求が受け付けられたかどうかが判断される。そうでなければここで待機する。
転送要求が受け付けられると、ステップ624では、ステップ610の場合、アドレスレジスタにセットされた転送元の先頭アドレスを送り出す処理が行われる。ステップ616の場合は、アドレスレジスタにセットされた転送先の先頭アドレスを送り出す処理が行われる。
ステップ626では、ステップ610の場合、データが受信される。ステップ614の場合は、データが送信される。
ステップ628では、データ・サイズ・レジスタにセットされたデータサイズ分のデータが転送されたかどうかが判断され、そうでなければ、ステップ626に戻る。
データ・サイズ・レジスタにセットされたデータサイズ分のデータが転送されたなら、データ転送シーケンスは終了し、ステップ612へ進む。
図7は、シミュレーション・ソフトウェア302が、主記憶206上で確保する受信バッファ702、送信バッファ704及び受信済み世代IDの格納領域706を示す図である。
図示されているように、受信バッファ702と送信バッファ704はそれぞれ、主記憶206の連続番地に配置される。
送信バッファ704の場合、先頭番地に送信データの世代IDが配置され、送信データがそれに続く。
受信バッファ702の場合、最後の番地に受信データの世代IDが入り、受信データは、世代IDより小さいアドレスに配置する。
図7に図示しないが、シミュレーション・ソフトウェア302は、送信データの世代IDを保持し、更新する機能ももつ。ここで、世代IDの更新は、単に値を1だけインクリメントするとか、適当な値を加えるなどの任意の方法を用いることができる。この世代IDの更新方法は、他の世代IDにも適用される。
受信済み世代IDの格納領域706は、主記憶206上で、受信バッファ702や送信バッファ704とは全く異なる位置に確保される。
インターフェース・ボード216では、受信データ用バッファ304は、送信バッファ704からデータを受け取り、送信データ用バッファ314は受信バッファ702にデータを転送する。受信済み世代IDの格納領域706は、受信バッファ702の最後の番地にある世代IDの更新を受けて更新する。
図8は、図6をさらに詳細に説明したもので、シミュレーション・ソフトウェア302のシミュレーション動作を説明するためのフローチャートである。ステップ802では、シミュレーション・ソフトウェア302は、送信バッファ704、受信バッファ702、及び受信済み世代IDの格納領域706を初期化する。
ステップ804では、シミュレーション・ソフトウェア302は、送信バッファ704と受信バッファ702の先頭アドレスを、インターフェース・ボード216にセットし、インターフェース・ボード216をイネーブルする。
ステップ806では、シミュレーション・ソフトウェア302は、受信データの世代IDを、受信済み世代IDと比較して、それが更新されているかどうか判断する。もしそうなら、シミュレーション・ソフトウェア302は、ステップ808で、受信済み世代IDを更新する。そうでないなら、ステップ806で待機する。
ステップ808に続いて、ステップ810では、シミュレーション・ソフトウェア302は、受信バッファ702上の受信データを使って、ΔT時間分のシミュレーションを行い、送信バッファ704上の出力データを更新する。インターフェース・ボード216は、後述する処理によって、コンピュータ200のメモリ・コントローラ(図示しない)に読取りの転送要求を出し、それが受け入れられたことに応答して、送信バッファ704の内容を、連続DMAによるデータ受信制御部306による制御の下、受信データ用バッファ304に取り込む。
受信データ用バッファ304に取りまれたデータは、ΔTカウンタ318によって制御される適当なタイミングで、ECU入力回路インターフェース部310を介してECU218に転送される。
その転送されたデータに基づきECU218は動作し、その動作の処理結果を、ΔTカウンタ318によって制御される適当なタイミングで、ECU出力回路インターフェース部312に転送する。転送されたデータは、ID付与部312aで更新された世代IDとともに、送信データ用バッファ314に格納される。
次に、インターフェース・ボード216は、コンピュータ200のメモリ・コントローラ(図示しない)に書込みの転送要求を出し、それが受け入れられたことに応答して、送信データ用バッファ314の内容を、連続DMAによるデータ送信制御部316による制御の下、受信バッファ702に書き込む。この際、シミュレーション・ソフトウェア302側では、インターフェース・ボード216から受領した受信バッファ702上の世代IDの値と、受信済み世代ID706の値を比較して、受信バッファ702上の世代IDの値が更新されていない場合は、処理済みの受信データとみなして、シミュレーション処理の入力として使わないようにすることができる。
ステップ812では、シミュレーション・ソフトウェア302は、送信データの世代IDをインクリメントする。
ステップ814では、シミュレーション・ソフトウェア302は、シミュレーションを終了するかどうか判断する。この判断は、当該のシミュレーションのスケジュール、もしくはシミュレーションを実行するテスト担当者の操作に基づき行われる。
シミュレーションを続けるのであれば、処理はステップ806に戻る。シミュレーションを終るのであれば、ステップ816に進んで、シミュレーション・ソフトウェア302は、インターフェース・ボード216をディスエーブルする。
次に、図9及び図10のフローチャートを参照して、DMACハードウェアの制御の処理を説明する。図6のフローチャートでも、DMACハードウェアの制御を説明したが、以下では、世代IDを使用した、より詳細な処理を説明する。
図9において、先ず、ステップ902では、メインメモリからデータを読み出す転送シーケンスが実行される。
ステップ904では、DMA機能がディスエーブルされているかどうかが判断され、ディスエーブルされていないのであれば、ステップ906へ進み、そうでなければDMA動作を終了する。
ステップ906では、メインメモリへデータを書き込む転送シーケンスが実行される。
更にステップ902を詳細に示すと、以下のとおりである。先ず、ステップ910では、転送元であるメインメモリのコントローラに転送要求を出す。
ステップ912では、転送要求が受け付けられたかどうかが判断される。そうでなければここで待機する。
転送要求が受け付けられると、ステップ914では、アドレスレジスタにセットされた転送元の先頭アドレスを送り出す処理が行われる。
次のステップ916では、主記憶にある送信バッファ704の先頭から順にデータを受信する。最初に受信するのは、シミュレーション・ソフトウェア302からのIDである。
ステップ918では、受信IDが、受信IDレジスタの値と較べて新しいかどうかが判断される。受信IDレジスタは、連続DMAによるデータ受信制御部306内にあり、受信したIDを保存しておくためのレジスタである。
受信IDが、受信IDレジスタの値と較べて新しくない場合は、処理は、ステップ910に戻る。
受信IDが、受信IDレジスタの値と較べて新しいと判断された場合は、ステップ920でデータが受信される。
ステップ922では、データ・サイズ・レジスタにセットされたデータサイズ分のデータが転送されたかどうかが判断され、そうでなければ、ステップ920に戻る。
データ・サイズ・レジスタにセットされたデータサイズ分のデータが転送されたなら、ステップ924で受信IDレジスタの値を受信IDの値で更新する。
図10は、図9のステップ906をより詳細に説明するフローチャートである。ステップ902からステップ908までは、図9のフローチャートと同一であるので、説明を省略する。
先ず、ステップ1002では、転送先であるメインメモリのコントローラに転送要求を出す。
ステップ1004では、転送要求が受け付けられたかどうかが判断される。そうでなければここで待機する。
転送要求が受け付けられると、ステップ1006では、アドレスレジスタにセットされた転送先の先頭アドレスを送り出す処理が行われる。
次のステップ1008では、データが送信される。
ステップ1010では、データ・サイズ・レジスタにセットされたデータサイズ分のデータが転送されたかどうかが判断され、そうでなければ、ステップ1008に戻る。
データ・サイズ・レジスタにセットされたデータサイズ分のデータが転送されたなら、ステップ1012で受信IDレジスタの値を受信IDの値で更新し、ステップ902に戻る。
次に、図11のフローチャートを参照して、DMACハードウェアの制御の処理を説明する。図9のフローチャートでも、DMACハードウェアの制御を説明したが、以下では、世代IDを使用するだけではなく、アクセスタイミングの学習機能も使用する、より有利な実施例の処理を説明する。
図11において、先ず、ステップ1102では、メインメモリからデータを読み出す転送シーケンスが実行される。
ステップ1104では、DMA機能がディスエーブルされているかどうか判断され、そうでなければステップ1106へ進み、そうであればDMA動作は終了する。
ステップ1106では、メインメモリへデータを書き込む転送シーケンスが実行される。
ステップ1106の後は、ステップ1102に戻る。
さらにステップ1102を詳細に示すと、以下の通りである。インターフェース・ボード216にあるΔTカウンタ318は、コンピュータ200からクロックを取り込んでカウント・アップし、ΔT時間毎にリセットされるものである。ステップ1110では、ΔTカウンタ318の値が、データ取得タイミング・レジスタにある値から1を引いた値に比べて、大きいかまたは等しいかどうか判断される。もしそうでなければ、ステップ1102で、ΔTカウンタ318のカウント・アップを待つ。なお、データ取得タイミング・レジスタの初期値は、好適には1または適当な小さい値にセットされる。
こうして、ΔTカウンタ318の値が、データ取得タイミング・レジスタにある値から1を引いた値に較べて、大きいかまたは等しくなると、ステップ1112に進み、転送元であるメインメモリのコントローラに転送要求を出す。
ステップ1114では、転送要求が受け付けられたかどうかが判断される。そうでなければここで待機する。
転送要求が受け付けられると、ステップ1116では、アドレスレジスタにセットされた転送元の先頭アドレスを送り出す処理が行われる。
次のステップ1118では、次のステップ1118では、送信バッファ704から、IDを受信する。このIDとは、図7に示した送信データの世代IDである。以下、この受信したIDを受信IDと呼ぶ。
ステップ1120では、受信IDが、受信IDレジスタの値と較べて新しいかどうかが判断される。受信IDレジスタは、連続DMAによるデータ受信制御部306内にあり、受信したIDを保存しておくためのレジスタである。
受信IDが、受信IDレジスタの値と較べて新しくない場合は、処理は、ステップ1112に戻る。
受信IDが、受信IDレジスタの値と較べて新しいと判断された場合は、ステップ1122で、ΔTカウンタ318にある値を使って、データ取得タイミング・レジスタの値が更新される。
次に、ステップ1124でデータが受信される。
ステップ1126では、データ・サイズ・レジスタにセットされたデータサイズ分のデータが転送されたかどうかが判断され、そうでなければ、ステップ1124に戻る。
データ・サイズ・レジスタにセットされたデータサイズ分のデータが転送されたなら、ステップ1128で受信IDレジスタの値を受信IDの値で更新する。
なお、ここでは、ステップ1106で、メインメモリへデータを書き込む転送シーケンスについては詳説しないが、例えば、図10のステップ1002〜1012と同様でよい。あるいは、ステップ1106でも、ステップ1110〜1128のデータ取得タイミング・レジスタを使うのと同様の仕組みで、アクセス・タイミングの学習された遅延を図ることもできる。
図12は、図11のアクセス・タイミングの学習された遅延による効果を説明するタイミング図である。図12において、I,Iなどは、インターフェース・ボード216側において、受信したデータとそのIDであり、O,Oなどは、インターフェース・ボード216から送信したデータとそのIDである。I,Iはそれぞれ、IDとIDを世代IDとして持つ受信データをあらわし、O,OはそれぞれIDとIDを世代IDとして持つ送信データをあらわしている。
図12(a)は、図9及び図10に示す、アクセスタイミングの学習機能を使用しない場合のタイミング図である。この場合、アクセス・タイミングの学習された遅延のスキームを用いないので、図9のステップ916、ステップ918及びステップ910のループで示される無駄な試行が発生する。このような無駄な試行は、I0、I1などのIDをもつ更新されていないデータの受信で示される。
一方、図12(b)は、図11に示す、アクセスタイミングの学習機能を使用した場合のタイミング図である。図11の処理では、予め学習した遅延の後ステップ1118でIDを受信するので、ステップ1120の判断で、更新されたIDである可能性が高く、すると、ステップ1120からステップ1112に戻る可能性が減っている。このことによって、無駄な転送要求を減らすことができるので、全体のデータ転送速度を向上させることができる。
以上、この発明を特定の実施例に基づき説明してきたが、この発明は、この特定の実施例に限定されず、当業者が自明に思いつく様々な変形、置換などの構成、技法適用可能であることを理解されたい。例えば、特定のプロセッサのアーキテクチャ、オペレーティング・システムなどに限定されない。
また、上記実施例は、主として、自動車のECUのHILSに関連するものであったが、このような例には限定されず、航空機、ロボットその他のプラント・シミュレーションのHILSに広く適用可能であることを理解されたい。
また、シミュレーション以外にも、小刻みに頻繁にデータ転送を要するような任意のアプリケーションに、本発明を利用することが可能であることは、当業者に明らかであろう。
200 コンピュータ
202 システム・バス
204 CPU
210 キーボード
212 マウス
214 ディスプレイ
206 主記憶
202 バス
216 インターフェース・ボード
218 ECU
208 ハードディスク・ドライブ
302 シミュレーション・ソフトウェア
304 受信データ用バッファ
306 データ受信制御部
308 アクセスタイミング学習部
310 入力回路インターフェース部
312 出力回路インターフェース部
314 送信データ用バッファ
316 データ送信制御部
318 ΔTカウンタ
404 インターフェース・ロジック
406 シリアル・ケーブル
408 フラット・ケーブル
302 シミュレーション・ソフトェア
702 受信バッファ
704 送信バッファ
706 受信済み世代ID格納領域

Claims (11)

  1. DMAによって、コンピュータのメモリからデータを周辺機器に転送するためのデータ転送装置を有するコンピュータ・システムにおいて、
    イネーブル処理に応答して、データ転送要求を継続的に繰り返し出す連続DMA機構と、
    前記メモリに、世代IDのデータとともに、前記連続DMA機構に転送すべきデータを配置する手段であって、該世代IDのデータは、前記メモリにデータが配置される毎に更新される、手段と、
    前記連続DMA機構からのデータ読出し転送要求に応答して、世代IDのデータとともに前記連続DMA機構へ前記メモリからデータを転送する手段と、
    前記連続DMA機構をディスエーブルする手段を有し、
    前記連続DMA機構は、前記転送された前記世代IDを受信IDとして保存する手段と、
    前記転送された前記世代IDが、保存されている受信IDと異なることに応答して、前記転送されたデータを受信する手段とを有する、
    コンピュータ・システム。
  2. 前記連続DMA機構は、コンピュータ・システムからクロックを取り込んでカウントアップし、一定時間単位でリセットする時間管理機構と前記の一定時間を周期に動作する手段を有し、
    前記一定時間周期の開始時刻から、前記更新されたデータが転送するまでの期間を記憶するタイミング記憶手段と、
    前記一定時間周期の開始時刻から、前記タイミング記憶手段に記憶されている期間だけ、データ転送要求を出し、前記データを転送する手段の転送動作を遅延させる手段をさらに有する、
    請求項1に記載のコンピュータ・システム。
  3. 前記連続DMA機構から、前記コンピュータに接続された周辺機器にデータを転送する手段をさらに有する、請求項1に記載のコンピュータ・システム。
  4. 前記周辺機器はECUであり、前記メモリから連続DMA機構に転送されるデータは、シミュレーション・ソフトウェアにより生成される、請求項3に記載のコンピュータ・システム。
  5. 前記ECUから送られたデータを保存するための送信バッファと、
    送信用世代IDを保持する手段と、
    前記連続DMA機構から前記メモリへの書込みデータ転送要求が受け付けられたことに応答して、前記送信バッファの内容を、前記送信用世代IDとともにメモリに転送する手段と、
    該メモリへの転送の完了に応答して、前記送信用世代IDの値を更新する手段とをさらに有する、
    請求項4に記載のコンピュータ・システム。
  6. コンピュータのメモリからデータを周辺機器に転送するためのデータ転送装置を有するコンピュータ・システムにおけるデータ転送方法であって、
    イネーブル処理に応答して、連続DMA機構により、データ転送要求を継続的に繰り返し出すステップと、
    前記メモリに、世代IDのデータとともに、前記連続DMA機構に転送すべきデータを配置するステップであって、該世代IDのデータは、前記メモリにデータが配置される毎に更新される、ステップと、
    前記連続DMA機構からのデータ読出し転送要求に応答して、世代IDのデータとともに前記連続DMA機構へ前記メモリからデータを転送するステップと、
    前記連続DMA機構が、前記転送された前記世代IDを受信IDとして保存するステップと、
    前記転送された前記世代IDが、保存されている受信IDと異なることに応答して、前記転送されたデータを受信するステップと、
    前記連続DMA機構をディスエーブルするステップを有する、
    コンピュータ・システムにおけるデータ転送方法。
  7. 前記連続DMA機構は、コンピュータ・システムからクロックを取り込んでカウントアップし、一定時間単位でリセットする時間管理機構と前記の一定時間を周期に動作する手段を有し、
    前記一定時間周期の開始時刻から、前記更新されたデータが転送するまでの期間を記憶するタイミング記憶ステップと、
    前記一定時間周期の開始時刻から、前記タイミング記憶手段に記憶されている期間だけ、データ転送要求を出し、前記データを転送する手段の転送動作を遅延させるステップをさらに有する、
    請求項6に記載のコンピュータ・システムにおけるデータ転送方法。
  8. 前記連続DMA機構から、前記コンピュータに接続された周辺機器にデータを転送するステップをさらに有する、請求項6に記載のコンピュータ・システムにおけるデータ転送方法。
  9. 前記周辺機器はECUであり、前記メモリから連続DMA機構に転送されるデータは、シミュレーション・ソフトウェアにより生成される、請求項8に記載のコンピュータ・システムにおけるデータ転送方法。
  10. 前記ECUから送られたデータを保存するステップと、
    送信用世代IDを保持するステップと、
    前記連続DMA機構から前記メモリへの書込みデータ転送要求が受け付けられたことに応答して、送信バッファの内容を、前記送信用世代IDとともにメモリに転送するステップと、
    該メモリへの転送の完了に応答して、前記送信用世代IDの値を更新するステップとをさらに有する、
    請求項9に記載のコンピュータ・システムにおけるデータ転送方法。
  11. 前記シミュレーション・ソフトウェアが、前記連続DMA機構から転送された前記送信用世代IDの値を保存するステップと、
    前記シミュレーション・ソフトウェアが、前記連続DMA機構から転送されたデータかが最新であることを確認するために、保存されている世代IDと、前記連続DMA機構から転送された前記送信用世代IDの値を比較するステップをさらに有する、
    請求項10に記載のコンピュータ・システムにおけるデータ転送方法。
JP2009205077A 2009-09-04 2009-09-04 コンピュータ・システム及びコンピュータ・システムにおけるデータ転送方法 Expired - Fee Related JP4802266B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2009205077A JP4802266B2 (ja) 2009-09-04 2009-09-04 コンピュータ・システム及びコンピュータ・システムにおけるデータ転送方法
US12/874,283 US20110060852A1 (en) 2009-09-04 2010-09-02 Computer system and data transfer method therein

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009205077A JP4802266B2 (ja) 2009-09-04 2009-09-04 コンピュータ・システム及びコンピュータ・システムにおけるデータ転送方法

Publications (2)

Publication Number Publication Date
JP2011054129A JP2011054129A (ja) 2011-03-17
JP4802266B2 true JP4802266B2 (ja) 2011-10-26

Family

ID=43648531

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009205077A Expired - Fee Related JP4802266B2 (ja) 2009-09-04 2009-09-04 コンピュータ・システム及びコンピュータ・システムにおけるデータ転送方法

Country Status (2)

Country Link
US (1) US20110060852A1 (ja)
JP (1) JP4802266B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5528294B2 (ja) * 2010-10-20 2014-06-25 インターナショナル・ビジネス・マシーンズ・コーポレーション シミュレーション制御方法、システム及びプログラム
US11281584B1 (en) 2021-07-12 2022-03-22 Concurrent Real-Time, Inc. Method and apparatus for cloning data among peripheral components and a main system

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0690713B2 (ja) * 1988-01-18 1994-11-14 日本電気株式会社 メモリicシミュレータ
JP3055917B2 (ja) * 1990-05-22 2000-06-26 日本電気株式会社 データ転送制御装置
JPH10154125A (ja) * 1996-11-26 1998-06-09 Toshiba Corp Dmaデータ転送装置および同装置を使用した動画像復号化装置並びにdmaデータ転送制御方法
US6260082B1 (en) * 1998-12-23 2001-07-10 Bops, Inc. Methods and apparatus for providing data transfer control
US6734867B1 (en) * 2000-06-28 2004-05-11 Micron Technology, Inc. Cache invalidation method and apparatus for a graphics processing system
JP3702790B2 (ja) * 2001-01-10 2005-10-05 株式会社デンソー マイクロコンピュータ
US20050235072A1 (en) * 2004-04-17 2005-10-20 Smith Wilfred A Data storage controller
JP2007148736A (ja) * 2005-11-28 2007-06-14 Brother Ind Ltd リムーバブルメディア装置およびリムーバブルメディア装置制御プログラム
JP2008210108A (ja) * 2007-02-26 2008-09-11 Fujitsu Ltd ダイレクトメモリアクセス制御装置および記録媒体
JP2009192505A (ja) * 2008-02-18 2009-08-27 Toyota Motor Corp 電子制御ユニットの検査装置
WO2010070780A1 (en) * 2008-12-17 2010-06-24 Thomson Licensing Data management apparatus, data management method, and data management program
JP5578698B2 (ja) * 2009-04-23 2014-08-27 ルネサスエレクトロニクス株式会社 半導体データ処理装置及びデータ処理システム
US8200857B2 (en) * 2009-11-30 2012-06-12 Lsi Corporation Coalescing multiple contexts into a single data transfer in a media controller architecture

Also Published As

Publication number Publication date
US20110060852A1 (en) 2011-03-10
JP2011054129A (ja) 2011-03-17

Similar Documents

Publication Publication Date Title
Hamann et al. Communication centric design in complex automotive embedded systems
US6985977B2 (en) System and method for transferring data over a communication medium using double-buffering
US9323699B2 (en) Methods for data acquisition systems in real time applications
US20110182300A1 (en) Network Traffic Shaping for Reducing Bus Jitter on a Real Time Controller
US20140195217A1 (en) Simulated input/output devices
KR20150004284A (ko) 제어 장치의 작동 방법 및 모델 연산 유닛을 포함하는 제어 장치
JP4802266B2 (ja) コンピュータ・システム及びコンピュータ・システムにおけるデータ転送方法
US10705993B2 (en) Programming and controlling compute units in an integrated circuit
US8150670B2 (en) Simulator and simulation method
US7769511B2 (en) Vehicle control apparatus having event management unit
US11106478B2 (en) Simulation device, simulation method, and computer readable medium
CN114780460A (zh) 一种dma控制器和方法
JPH08249267A (ja) Dmaコントローラ
JP5132612B2 (ja) データ転送方法および装置
JP2585852B2 (ja) バッファ制御方式
JP2009223762A (ja) 協調検証装置
JP4363431B2 (ja) データ転送方式
JPH0934918A (ja) デジタル回路をシミュレートする方法および装置
JP2007018440A (ja) アーキテクチャ検証装置
JP2001243170A (ja) データ転送装置
CN114626541A (zh) 命令下发方法、装置、处理设备、计算机设备及存储介质
Salimi-Khaligh et al. A latency, preemption and data transfer accurate adaptive transaction level model for efficient simulation of pipelined buses
Lee et al. Optimistic Channel Usage between Simulator and Simulation Accelerator
Chumachenko Real-time programs communication in the POTOK software package
WO2015029185A1 (ja) 情報処理システムおよび情報処理方法

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110708

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110719

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110808

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140812

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees