(57)【要約】【課題】複数のデータ転送バスを持つシステムにおいて、システム全体のデータ転送効率の向上を図ったデータ転送方式及びデータ転送方法を得る。【解決手段】アプリケーション３０において、コマンド発行手段２は所望の問合せバスの使用状態に関する状態確認情報を状態読み込み手段１を介してドライバ３１から得ることにより、問合せバスが使用中であるか否かを認識する。ドライバ３１において、コマンド受付通知手段４は、コマンド発行手段２から受信したデータ転送用コマンドのパラメータにエラーの有無を戻り値としてコマンド発行手段２に返し、アプリケーション３０をビジーな待ち状態から開放する。データ転送完了通知手段１０はデバイス読み書き手段８より完了割込みを受けると、転送エラーの有無により「コマンドエラー完了」あるいは「コマンド正常完了」状態に設定するフラグ更新処理を状態保持手段１２に対して行う。【選択図】図２
2005258883.tif 000002
【特許請求の範囲】
【請求項１】
複数の外部記憶装置に対応して設けられた複数のバスを用いて、前記複数の外部記憶装置とのデータの授受が可能なデータ転送装置内における、カーネル空間にアクセスするためのプログラムであるドライバとユーザー空間で動作するプログラムであるアプリケーションとの間のデータ転送方式であって、
前記アプリケーションは、
前記複数のバスのうち一のバスである問合せバスの使用状態を問い合わせする問い合わせコマンドを送信する状態読み込み手段と、
前記複数のバスのうち一のバスであるデータ転送用バスを用いたデータ転送を指示するデータ転送コマンドを発行するコマンド発行手段とを含み、
前記ドライバは、
前記複数のバスそれぞれの使用状態を含む状態情報を保持し、前記問い合わせコマンドに応答して前記問合せバスの使用状態を前記状態読み込み手段に通知する状態保持及び通知手段と、
前記データ転送コマンドに応答して、前記転送コマンドの内容の正否を評価し、その評価結果を前記コマンド発行手段に戻り値として戻し、前記転送コマンドの内容が正常な場合に、前記データ転送用バスを用いたデータ転送処理を実行するとともに、前記データ転送用バスが使用中である内容に前記状態情報を更新するコマンド受付及び実行手段と、
前記データ転送用バスに対応する前記外部記憶装置のデータ転送完了を認識すると、前記データ転送用バスが使用可能である内容に前記状態情報を更新するデータ転送完了通知手段とを含む、
データ転送方式。
【請求項２】
複数の外部記憶装置に対応して設けられた複数のバスを用いて、前記複数の外部記憶装置とのデータの授受が可能なデータ転送装置内における、カーネル空間にアクセスするためのプログラムであるドライバとユーザー空間で動作するプログラムであるアプリケーションとの間のデータ転送方式であって、
前記アプリケーションは、
前記複数のバスそれぞれの使用状態を含む状態情報を保持する状態保持手段と、
状態シグナルを受信し、該状態シグナルが指示する内容に前記状態情報を更新するシグナル受信手段と、
前記状態情報の読み出し及び更新が可能であり、前記複数のバスのうち一のバスであるデータ転送用バスを用いたデータ転送を指示するデータ転送コマンドを発行するコマンド発行手段とを含み、
前記ドライバは、
前記データ転送コマンドに応答して、前記転送コマンドの内容の正否を評価し、その評価結果を前記コマンド発行手段に戻り値として戻し、前記転送コマンドの内容が正常な場合に、前記データ転送用バスを用いたデータ転送処理を実行するとともに、前記データ転送用バスが使用中であることを指示する第１の状態更新通知を送信するコマンド受付及び実行手段と、
前記データ転送用バスに対応する前記外部記憶装置のデータ転送完了を認識すると、前記データ転送用バスが使用可能であることを指示する第２の状態更新通知を送信するデータ転送完了通知手段と、
前記第１及び第２の状態更新通知の指示する内容の前記状態シグナルを前記アプリケーションの前記シグナル受信手段に送信するシグナル送信手段とを含む、
データ転送方式。
【請求項３】
請求項１あるいは請求項２記載のデータ転送方式であって、
前記アプリケーション及び前記ドライバで共用されるシステムメモリをさらに備え、
前記システムメモリは、請求項１記載の前記状態保持及び通知手段における状態保持機能あるいは請求項２記載の前記状態保持手段に用いられる、
データ転送方式。
【請求項４】
請求項１あるいは請求項２記載のデータ転送方式であって、
前記アプリケーションあるいは前記ドライバからアクセス可能な不揮発メモリをさらに備え、
前記不揮発メモリは、請求項１記載の前記状態保持及び通知手段における状態保持機能あるいは請求項２記載の前記状態保持手段に用いられる、
データ転送方式。
【請求項５】
請求項１記載のデータ転送方式であって、
前記外部記憶装置は、前記状態保持及び通知手段に用いられる、
データ転送方式。
【請求項６】
請求項１記載のデータ転送方式における前記ドライバ，前記アプリケーション間のデータ転送方法であって、
前記データ転送方法は、前記アプリケーションによるデータ転送開始準備処理を含み
前記データ転送開始準備処理は、
(a) 前記状態読み込み手段により、前記問合せバスの使用状態に関する前記問い合わせコマンドを発行するステップと、
(b) 前記ドライバの前記状態保持及び通知手段より前記状態読み込み手段が受信した前記問合せバスの使用状態に基づき、前記問合せバスが使用中か否かを判定するステップと、
(c) 前記ステップ(b) の判定結果が前記問合せバスが使用中でない場合、前記コマンド発行手段より、前記問合せバスをデータ転送用バスとして用いる前記データ転送コマンドを発行するステップと、
を備えるデータ転送方法。
【請求項７】
請求項１記載のデータ転送方式における前記ドライバ，前記アプリケーション間のデータ転送方法であって、
前記データ転送方法は、前記アプリケーションの前記コマンド発行手段より前記データ転送コマンドを受けた場合に前記ドライバにより実行されるデータ転送制御処理を含み、
前記データ転送制御処理は、
(a) 前記コマンド受付通知手段により、前記データ転送コマンドが正常か否かを判定するステップと、
(b) 前記コマンド受付通知手段により、前記ステップ(a) の判定結果を前記アプリケーションの前記コマンド発行手段に送信することにより、前記アプリケーションの待ち状態を開放するステップと、
(c) 前記ステップ(a) が前記データ転送コマンドが正常と判定した場合、前記コマンド受付及び実行手段により、前記データ転送処理を制御するとともに、前記データ転送用バスが使用中である内容に前記状態情報を更新するステップと、
(d) 前記データ転送用バスに対応する前記外部記憶装置のデータ転送完了を認識すると、前記データ転送完了通知手段により、前記データ転送用バスが使用可能であることを指示する内容に前記状態情報を更新するステップと
を備えるデータ転送方法。
【請求項８】
請求項２記載のデータ転送方式における前記ドライバ，前記アプリケーション間のデータ転送方法であって、
前記データ転送方法は、前記アプリケーションによるデータ転送開始準備処理を含み
前記データ転送開始準備処理は、
(a) 前記状態保持手段より前記状態情報を読み出すステップと、
(b) 前記状態情報に基づき、前記複数のバスにおける問合せバスが使用中か否かを判定するステップと、
(c) 前記ステップ(b) の判定結果が前記問合せバスが使用中でない場合、前記コマンド発行手段より、前記問合せバスをデータ転送用バスとして用いる前記データ転送コマンドを発行するステップと、
(d) 前記シグナル受信手段を動作状態にするステップと、
を備えるデータ転送方法。
【請求項９】
請求項２記載のデータ転送方式における前記ドライバ，前記アプリケーション間のデータ転送方法であって、
前記データ転送方法は、前記アプリケーションの前記コマンド発行手段より前記データ転送コマンドを受けた場合に前記ドライバにより実行されるデータ転送制御処理を含み、
前記データ転送制御処理は、
(a) 前記コマンド受付通知手段により、前記データ転送コマンドが正常か否かを判定するステップと、
(b) 前記コマンド受付通知手段により、前記ステップ(a) の判定結果を前記ドライバの前記コマンド発行手段に送信することにより、前記アプリケーションの待ち状態を開放するステップと、
(c) 前記ステップ(a) が前記データ転送コマンドが正常と判定した場合、前記コマンド実行手段により前記データ転送処理を実行するとともに、前記コマンド実行手段及び前記シグナル送信手段により、前記データ転送用バスが使用中であることを指示する前記第１の状態更新通知内容の状態シグナルを前記アプリケーションの前記シグナル受信手段に送信するステップと、
(d) 前記データ転送用バスに対応する前記外部記憶装置のデータ転送完了を認識すると、前記データ転送完了通知手段及び前記シグナル送信手段より、前記データ転送用バスが使用可能であることを指示する第２の状態更新通知内容の前記状態シグナルを前記アプリケーションの前記シグナル受信手段に送信するステップと、
を備えるデータ転送方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、複数のデータ転送バスを持つシステムにおけるデータ転送方式に関するものである。
【背景技術】
【０００２】
種々のデータ送信側，データ受信側間のデータ効率を上げるための改善策として、特許文献１に開示されたキャッシュ制御方式がある。
【０００３】
この方式は、複数の命令流を実行するマルチスレッドプロセッサ用のキャッシュを制御する方式において、キャッシュの一部分に対し、複数の命令流で共有するか、特定の命令流で占有して用いるかの割り当てを指定できるようにした方式である。
【０００４】
また、二つのシステム間でデータ転送を行う場合の転送処理時間を短縮したデータ転送方式として、特許文献２で開示された方式がある。
【０００５】
この方式は、共有メモリを持ち通信回路により結合された複数のCPUからなる送信系サブシステムとこの送信系サブシステムと同一の構成からなる受信系サブシステムがあり、送信系、受信系サブシステムのそれぞれのCPU間が通信回線により接続されているシステムからなるハードウェア構成を呈している。
【０００６】
そして、この方式は、送信サブシステムの共有メモリ上のデータを受信系サブシステムの共有メモリに送信する場合、送信系サブシステムにおいては、主CPUが各CPUのうけもつ転送対象とするデータの開始位置とデータ長を通知する送信対象データ位置通知手段と当該情報を受信系サブシステムの主CPUに送信する制御情報送信手段からなり、受信系サブシステムでは制御情報送信手段により送信された情報を受信する制御情報受信手段と、この情報を受信系サブシステムの各CPUに通知する受信データ位置通知手段とを含んで構成されている。
【０００７】
【特許文献１】特開２００２−３４２１６３号公報（図１）
【特許文献２】特開平６−６８００５号公報（図１）
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、従来のデータ転送方法では、複数のデータ転送バスを持つシステムにおける効率性を考慮しておらず、複数のデータ転送バスを用いた効率的なデータ転送ができていないという問題があった。この発明は以上の問題点を解決するためになされたものであり、複数のデータ転送バスを持つシステムにおいて、システム全体のデータ転送効率の向上を図ったデータ転送方式及びデータ転送方法を得ることを目的とする。
【課題を解決するための手段】
【０００９】
この発明に係る請求項１記載のデータ転送方式は、複数の外部記憶装置に対応して設けられた複数のバスを用いて、前記複数の外部記憶装置とのデータの授受が可能なデータ転送装置内における、カーネル空間にアクセスするためのプログラムであるドライバとユーザー空間で動作するプログラムであるアプリケーションとの間のデータ転送方式であって、前記アプリケーションは、前記複数のバスのうち一のバスである問合せバスの使用状態を問い合わせする問い合わせコマンドを送信する状態読み込み手段と、前記複数のバスのうち一のバスであるデータ転送用バスを用いたデータ転送を指示するデータ転送コマンドを発行するコマンド発行手段とを含み、前記ドライバは、前記複数のバスそれぞれの使用状態を含む状態情報を保持し、前記問い合わせコマンドに応答して前記問合せバスの使用状態を前記状態読み込み手段に通知する状態保持及び通知手段と、前記データ転送コマンドに応答して、前記転送コマンドの内容の正否を評価し、その評価結果を前記コマンド発行手段に戻り値として戻し、前記転送コマンドの内容が正常な場合に、前記データ転送用バスを用いたデータ転送処理を実行するとともに、前記データ転送用バスが使用中である内容に前記状態情報を更新するコマンド受付及び実行手段と、前記データ転送用バスに対応する前記外部記憶装置のデータ転送完了を認識すると、前記データ転送用バスが使用可能である内容に前記状態情報を更新するデータ転送完了通知手段とを含んでいる。
【００１０】
この発明に係る請求項２記載のデータ転送方式は、複数の外部記憶装置に対応して設けられた複数のバスを用いて、前記複数の外部記憶装置とのデータの授受が可能なデータ転送装置内における、カーネル空間にアクセスするためのプログラムであるドライバとユーザー空間で動作するプログラムであるアプリケーションとの間のデータ転送方式であって、前記アプリケーションは、前記複数のバスそれぞれの使用状態を含む状態情報を保持する状態保持手段と、状態シグナルを受信し、該状態シグナルが指示する内容に前記状態情報を更新するシグナル受信手段と、前記状態情報の読み出し及び更新が可能であり、前記複数のバスのうち一のバスであるデータ転送用バスを用いたデータ転送を指示するデータ転送コマンドを発行するコマンド発行手段とを含み、前記ドライバは、前記データ転送コマンドに応答して、前記転送コマンドの内容の正否を評価し、その評価結果を前記コマンド発行手段に戻り値として戻し、前記転送コマンドの内容が正常な場合に、前記データ転送用バスを用いたデータ転送処理を実行するとともに、前記データ転送用バスが使用中であることを指示する第１の状態更新通知を送信するコマンド受付及び実行手段と、前記データ転送用バスに対応する前記外部記憶装置のデータ転送完了を認識すると、前記データ転送用バスが使用可能であることを指示する第２の状態更新通知を送信するデータ転送完了通知手段と、前記第１及び第２の状態更新通知の指示する内容の前記状態シグナルを前記アプリケーションの前記シグナル受信手段に送信するシグナル送信手段とを含んでいる。
【発明の効果】
【００１１】
この発明における請求項１記載のデータ転送方式のアプリケーションは、問合せバスの使用状態を問い合わせする問い合わせコマンドを送信する状態読み込み手段を有しているため、コマンド発行手段からデータ転送コマンドを発行する前の準備処理としてあるいはデータ転送コマンド発行後のコマンド完了確認処理として、使用予定のバスあるいはデータ転送用バスに該当する問合せバスの使用状態を認識することができ、効率的なデータ転送コマンドの発行及び発行後の確認を行うことができる。
【００１２】
加えて、ドライバのコマンド受付及び実行手段はデータ転送コマンドに応答してその評価結果を戻り値としてアプリケーションのコマンド発行手段に戻すことにより、アプリケーションの待ち状態を速やかに開放することができるため、アプリケーションの有効利用を図ることができる。
【００１３】
この発明における請求項２記載のデータ転送方式のアプリケーションは、状態保持手段及び状態保持手段が保持する状態情報の読み出しが可能なコマンド発行手段を有しているため、コマンド発行手段からデータ転送コマンドを発行する前の準備処理としてあるいはデータ転送コマンド発行後のコマンド完了確認処理として、使用予定のバスあるいはデータ転送用バスに該当する問合せバスの使用状態をリアルタイムで認識することができ、効率的なデータ転送コマンドの発行及び発行後の確認を行うことができる。
【００１４】
加えて、ドライバのコマンド受付及び実行手段はデータ転送コマンドに応答してその評価結果を戻り値としてアプリケーションのコマンド発行手段に戻すことにより、アプリケーションの待ち状態を速やかに開放することができるため、アプリケーションの有効利用を図ることができる。
【発明を実施するための最良の形態】
【００１５】
＜実施の形態１＞
図１はこの発明の実施の形態１のデータ転送方式の対象となるアプリケーション及びドライバが含まれるデータ転送装置４０とハードディスク装置４１ａ〜４１ｄ（外部記憶装置）とが接続されたデータ転送システム構成を示すブロック図である。このデータ転送システムは、ＡＴＡ規格のハードディスクにデータ転送を行うＬｉｎｕｘシステムの構築例である。
【００１６】
図１で示す構成は、ＡＴＡ（AT Attachmentの意、以下「ＡＴＡ」と称す）規格に準拠したハードディスク４１（４１ａ〜４１ｄ）に静止画像データを読み書きする装置である、データ転送装置４０に関する部分を示している。
【００１７】
データ転送装置４０は４本の互いに独立したＡＴＡバス１５ａ〜１５ｄを有し、ＡＴＡバス１５ａ〜１５ｄはハードディスク装置４１ａ〜４１ｄに対応して接続される。データ転送装置４０を制御するソフトウェアとしてアプリケーション３０及びドライバ３１があり、ドライバ３１がハードディスクに転送するデータを一時的に格納するメモリとしてメモリ３２（３２ａ〜３２ｄ）を備えている。
【００１８】
また、アプリケーション３０及びドライバ３１が共にアクセス可能なメモリとしてシステムメモリ３５を有している。なお、メモリ３２ａ〜３２ｄ及びシステムメモリ３５は機能的に分類すべく、それぞれ独立した構成要素として図示しているが、実際は一つのＲＡＭ等のメモリのアドレス空間上の所定エリアとそれぞれメモリ３２ａ〜３２ｄ及びシステムメモリ３５が割り当てられている。また、アプリケーション３０及びドライバ３１は図示しない、フラッシュメモリ等の他のメモリに格納され、図示しないＣＰＵの制御下で動作する。
【００１９】
なお、ドライバ３１は、ユーザ空間からは直接制御できないカーネル空間にアクセスするためのデバイスドライバを意味し、アプリケーション３０は、ユーザー空間で動作するプログラムを意味する。これらアプリケーション３０，ドライバ３１は図示しないＣＰＵの制御下で動作するプログラムである。そして、実施の形態１は、アプリケーション３０，ドライバ３１間のデータ転送方式に関するものである。
【００２０】
アプリケーション３０からカーネル空間にアクセスできないことから、ハードディスク装置４１ａ、４２ａ、４３ａ、４４ａにはデータを直接書き込むことや読み込むことができないため、ドライバ３１が必要である。したがって、ハードディスク装置４１（４１ａ〜４１ｄ）内のハードディスク３３（３３ａ〜３３ｄ）にデータを書き込むためには、アプリケーション３０がデータ転送コマンドを発行することによって、ドライバ３１を介してメモリ３２にコンテンツデータを一時的に格納し、メモリ３２からハードディスク装置４１内のＦＩＦＯ（First In First Outの略、以下、「ＦＩＦＯ」と称す）３４（３４ａ〜３４ｄ）にコンテンツデータを転送することによって、ＦＩＦＯ３４を介してハードディスク３３にデータを書き込むことができる。
【００２１】
一方、ハードディスク３３からのコンテンツデータの読み込みは、アプリケーション３０がデータ転送コマンドを発行することによって、ドライバ３１を介し、ハードディスク３３に格納されたコンテンツデータをＦＩＦＯ３４からメモリ３２に転送することにより行われる。
【００２２】
なお、ハードディスク３３ａ〜３３ｄからデータを読み出したり、書き込んだりする手順は上述のようにいずれも同様に行われ、異なるのは、使用するバスがＡＴＡバス１５ａ〜１５ｄのうち対応するＡＴＡバス１５となる点のみである。すなわち、ハードディスク３３ａ〜３３ｄにアクセスするためのＡＴＡバス１５ａ〜１５ｄはそれぞれ独立しており、複数のハードディスク３３ａ〜３３ｄに同時にアクセスすることが可能である。
【００２３】
従来構成であれば、アプリケーション３０はドライバ３１に対してデータ転送コマンドを発行すると、ドライバはデータ転送を実行し、転送が完了した時点で、データ転送完了をアプリケーション３０に通知し、アプリケーション３０に制御を戻していた。
【００２４】
このようにすると、ドライバ３１が実際にデータ転送が完了するのをアプリケーション３０が待っている間は、システムはビジーな（他の処理ができない）待ち状態になるため、データ転送が完了するまではアプリケーション３０は他に何も操作できなかった。
【００２５】
このように、従来は１つのＡＴＡバス１５を介したデータ転送が終わるまで、アプリケーション３０は次のデータ転送コマンドを発行できる構成ではなかったが、本実施の形態では、４本のＡＴＡバス１５ａ〜１５ｄに同時にデータ転送コマンドを発行可能な構成となっている。
【００２６】
図２はアプリケーション３０及びドライバ３１の内部構成の詳細を示すブロック図である。アプリケーション３０は状態読み込み手段１、コマンド発行手段２、及びコマンド作成手段３から構成され、ドライバ３１はコマンド受付通知手段４、コマンド実行手段５、データ転送完了通知手段１０、状態保持手段１２及び状態通知手段１３から構成される。
【００２７】
なお、データ保持手段６は図１のシステムメモリ３５の一部に相当し、デバイス読み書き手段８は図１のハードディスク装置４１に相当するため、アプリケーション３０及びドライバ３１のいずれにも該当しない。ただし、図２においては、説明の都合上、データ保持手段６はアプリケーション３０，ドライバ３１間の共有構成要素、デバイス読み書き手段８はドライバ３１側の構成要素として示している。
【００２８】
まず、アプリケーション３０の各構成手段１〜３について説明する。状態読み込み手段１はコマンド発行手段２からの状態問い合わせに従い、ドライバ３１の状態通知手段１３に問い合わせコマンドを送り、状態通知手段１３から状態通知を受け、状態通知内容を状態確認情報としてコマンド発行手段２に伝達する。
【００２９】
コマンド作成手段３はアプリケーション３０がデータ転送を行うためのコマンドを準備するためのコマンドパラメータを作成してコマンド発行手段２に送信する。
【００３０】
コマンド発行手段２はＡＴＡバスの使用状態等の状態問い合わせを状態読み込み手段１に送信し、状態読み込み手段１より上述した状態確認情報を得たり、コマンド作成手段３からのコマンドパラメータに基づき、ドライバ３１のコマンド受付通知手段４に対して種々のコマンド（コマンドパラメータを含む）を与え、コマンド受付通知手段４から戻り値を得る。
【００３１】
次に、ドライバ３１の各構成手段４，５，１０，１２，１３について説明する。コマンド受付通知手段４は、アプリケーション３０のコマンド発行手段２から受信したコマンドを解析し、当該コマンドのパラメータにパラメータエラーがある場合は、状態保持手段１２のコマンド完了フラグＦ１（状態情報）を「エラー完了状態」を設定し、戻り値としてエラー情報をコマンド発行手段２に返し、アプリケーション３０に制御を戻す。すなわち、アプリケーション３０は、ビジーな待ち状態から速やかに開放される。
【００３２】
また、上記コマンドにパラメータエラーがない場合、コマンド受付通知手段４は、アプリケーション３０のコマンド発行手段２に戻り値として正常情報をコマンド発行手段２に返すことによりアプリケーション３０に制御を戻す。すなわち、アプリケーション３０は、ビジーな待ち状態から速やかに開放される。そして、コマンド受付通知手段４はコマンドパラメータをコマンド実行手段５に送信する。
【００３３】
コマンド実行手段５はハードディスクとデータ転送に関係するデバイスの設定を行い、データ転送要求（コマンド実行指令）をデータ保持手段６に送信するともに、コマンド完了フラグＦ１を「コマンド実行中状態」に設定するフラグ更新処理を行う。
【００３４】
データ保持手段６はデータ転送要求に基づき書き込みデータをデバイス読み書き手段８に出力したり、デバイス読み書き手段８から読み出しデータを読み出したりする。デバイス読み書き手段８はデータの読み出しあるいは書き込みが終了すると、完了割込みをドライバ３１のデータ転送完了通知手段１０に送信する。
【００３５】
データ転送完了通知手段１０はデバイス読み書き手段８より完了割込みを受けると、転送エラーの有無を確認し、転送エラーがない場合、状態保持手段１２のコマンド完了フラグＦ１を「コマンド正常完了」状態に設定するフラグ更新処理を行う。
【００３６】
一方、転送エラーが確認された場合、データ転送完了通知手段１０は、コマンド完了フラグＦ１を「コマンドエラー完了」に設定するフラグ更新処理を行うとともに、デバイス読み書き手段８内の所定のステータスレジスタの値を参照し、エラー内容を示すエラーコードをシステムメモリ３５内のデータ保持手段６以外の所定のエラーコード格納領域に格納する。
【００３７】
状態保持手段１２は、ＡＴＡバス１５ａ〜１５ｄそれぞれについてコマンド完了フラグＦ１を有しており、ＡＴＡバス１５ａ〜１５ｄそれぞれのコマンド完了フラグＦ１の値は状態通知手段１３によって読み出され、コマンド受付通知手段４、コマンド実行手段５及びデータ転送完了通知手段１０によるフラグ更新処理によって内容が更新される。
【００３８】
状態通知手段１３はアプリケーション３０の状態読み込み手段１からの問い合わせコマンドに基づき、当該問い合わせコマンドが指示するＡＴＡバス（問合せバス）に対応するコマンド完了フラグＦ１の値を検出し、当該コマンド完了フラグＦ１の値に基づく状態通知を状態読み込み手段１に送信する。
【００３９】
図３はアプリケーション３０のコマンド発行手段２による所定のＡＴＡバスを利用したデータ転送コマンドの発行に至るまでのデータ転送開始準備処理の流れを示すフローチャートである。
【００４０】
同図を参照して、ステップＳ２０１において、コマンド発行手段２は状態読み込み手段１に、使用対象とする所定のＡＴＡバスを問合せバスとして、使用中か否かを指示する状態問い合わせを行うことにより、状態読み込み手段１から、問合せバスに対応するコマンド完了フラグＦ１を読み出すべく、コマンド完了フラグ読み出しコマンド（問い合わせコマンド）をドライバ３１の状態通知手段１３に送信させる。
【００４１】
コマンド完了フラグ読み出しコマンドを受けた状態通知手段１３は、状態保持手段１２に格納された使用対象のＡＴＡバス（問合せバス）に対応したコマンド完了フラグＦ１の値を検出し、当該コマンド完了フラグＦ１の値を状態通知として状態読み込み手段１に送信する。状態読み込み手段１は上記状態通知に基づき所定のＡＴＡバスが使用中か否かを認識し、所定のＡＴＡバスの使用中か否かを示す情報を状態確認情報として状態読み込み手段１に伝達する。
【００４２】
ステップＳ２０２において、コマンド発行手段２は、状態読み込み手段１より受信した状態確認情報に基づき所定のＡＴＡバス（問合せバス）が使用中であるか否かを認識し、使用中であれば（ＹＥＳ）ステップＳ２０３に移行し、使用中でなければ（ＮＯ）ステップＳ２０４に移行する。
【００４３】
ステップＳ２０２でＹＥＳと判定された場合に実行されるステップＳ２０３において、所定のＡＴＡバスから他のＡＴＡバスを使用対象として終了する。したがって、終了後は、他のＡＴＡバスに対するデータ転送開始準備処理に移行し、当該他のＡＴＡバスが使用可能であれば、速やかに上記ＡＴＡバスを利用したデータ転送を行うことができる。
【００４４】
使用中のＡＴＡバスに対しては、データ転送が完了するまで次のコマンドは発行できないが、他のＡＴＡバスでデータ転送を行っていないバスが存在すれば、空いているＡＴＡバスに対してデータ転送コマンドを発行することができるため、アプリケーション３０は別の未使用のＡＴＡバスに対してデータ転送コマンドを発行することができる。その後、ドライバ３１がデータ転送を開始する。
【００４５】
ステップＳ２０２でＮＯと判定された場合に実行されるステップＳ２０４において、所定のＡＴＡバスを利用したデータ転送を指示するデータ転送コマンドを発行し、処理を終了する。
【００４６】
このように、アプリケーション３０は、これからデータ転送を行おうとするＡＴＡバス１５が使用中であるかどうかをドライバ３１に問い合わせ、使用中でないことを確認してからデータ転送コマンドを発行することができるため、効率的にデータ転送コマンドを発行することができる。
【００４７】
図４は、コマンド発行手段２でアプリケーション３０がデータ転送コマンドを発行した後に、データ転送が完了したことを調べるデータ転送完了確認処理の処理手順を示したフローチャートである。すなわち、図４は所定のＡＴＡバスを利用したデータ転送コマンド発行後の確認処理を示している。
【００４８】
同図を参照して、ステップＳ２２０において、図３のステップＳ２０１と同様の手順で状態読み込み手段１からコマンド完了フラグ読み出しコマンドを発行させ、コマンド完了フラグＦ１の値を読み出す。
【００４９】
そして、ステップＳ２２１において、コマンド完了フラグＦ１の値に基づき、所定のＡＴＡバス（問合せバス）を利用したデータ転送処理が完了した（コマンド完了フラグＦ１が「コマンド正常完了」あるいは「コマンドエラー完了」のいずれかを示す）かどうかを判断し、完了した場合（ＹＥＳ）はステップＳ２２３に移行し、完了しなかった場合（ＮＯ）はステップＳ２２２で１秒間スリープ状態（アプリケーション３０を実行するＣＰＵのリソースを使用しない状態）した後、ステップＳ２２０に戻る。
【００５０】
ステップＳ２２１でＹＥＳと判定された場合に実行されるステップＳ２２３において、コマンド完了フラグＦ１の値に基づき、データ転送完了原因がエラーである（コマンド完了フラグＦ１が「コマンドエラー完了」を示す場合）か否かを判断し、完了原因がエラーである場合（ＹＥＳ）はステップＳ２２４に移行し、完了原因がエラーでない（正常である）場合（ＮＯ）はステップＳ２２５に移行する。
【００５１】
ステップＳ２２３でＹＥＳと判定された場合に実行されるステップＳ２２４において、コマンド発行手段２はシステムメモリ３５内のエラーコード格納領域の格納内容に基づきエラー内容を解析する。
【００５２】
その後、ステップＳ２２６において、ステップＳ２２３での解析結果に基づき、正常にデータ転送が行えるコマンドを再発行する準備を行った後、データ転送完了確認処理を終了する。したがって、コマンド発行手段２は正しい内容の転送コマンドを改めて発行することができる。
【００５３】
ステップＳ２２３でＮＯと判定された場合に実行されるステップＳ２２５において、正常に転送されたデータを利用する。すなわち、データ転送内容がハードディスク装置４１からの読み出し動作の場合にはアプリケーション３０はデータ保持手段６内に取り込んだ読み出しデータを利用する。一方、データ転送内容がハードディスク装置４１に対する書き込み動作の場合にはアプリケーション３０はそのまま何もしない。そして、ステップＳ２２５の処理を終えるとデータ転送完了確認処理を終了する。
【００５４】
このように、アプリケーション３０は、データ転送完了確認処理を任意のタイミングで行い、データ転送が正常に完了していれば、当該データを利用し、失敗していれば再度データ転送コマンドを発行して、同じプロセスをたどることができる。
【００５５】
上述した図３及び図４に示したように、アプリケーション３０内のコマンド発行手段２が状態読み込み手段１を介してコマンド実行状態をドライバ３１に問い合わせるようにすることによって、アプリケーション３０が実際に転送したデータを利用する場合（図４参照）や、コマンドを発行する準備処理（図３参照）などに、任意のタイミングでコマンド実行状態を認識することができる。
【００５６】
図５は、ドライバ３１のコマンド受信処理全般を示したフローチャートである。以下、同図を参照しつつドライバ３１の処理全般を説明する。ドライバ３１の処理は、アプリケーション３０からコマンドを受信し、コマンド内容を確認することから始まる。
【００５７】
同図を参照して、ステップＳ１００において、状態通知手段１３が、アプリケーション３０の状態読み込み手段１より問い合わせコマンドを受信したか否かを判定し、問い合わせコマンドを受信した場合（ＹＥＳ）にステップＳ１０１に移行し、受信しなかった場合（ＮＯ）にステップＳ１０２に移行する。
【００５８】
ステップＳ１００でＹＥＳと判定された場合に実行されるステップＳ１０１において、状態通知手段１３は問い合わせコマンドが指示する問合せバスに対応するコマンド完了フラグＦ１の値を状態保持手段１２により読み出し、コマンド完了フラグＦ１の値を示す状態通知を状態読み込み手段１に送信する。ステップＳ１０１の実行後、処理を終了する。
【００５９】
ステップＳ１００でＮＯと判定された場合に実行されるステップＳ１０２において、コマンド受付通知手段４が所定のＡＴＡバス（データ転送用バス）を利用するデータ転送コマンドを受信したか否かを判定し、データ転送コマンドを受信した場合（ＹＥＳ）にステップＳ１０３に移行し、受信しなかった場合（ＮＯ）にステップＳ１０４に移行する。
【００６０】
ステップＳ１０２でＮＯと判定された場合に実行されるステップＳ１０４において、その他のコマンド（問い合わせコマンド，データ転送コマンド以外のコマンド）処理を実行した後、処理を終了する。終了後はアプリケーション３０に制御が戻る。なお、その他のコマンド処理の内容については本発明との関連性が希薄なため説明は省略する。
【００６１】
ステップＳ１０２でＹＥＳと判定された場合に実行されるステップＳ１０３において、アプリケーション３０のコマンド発行手段２からデータ転送コマンドに含まれるコマンドパラメータを評価する。すなわち、上記パラメータによって、データ転送コマンドが実行可能かどうかを評価する。例えば、コマンドパラメータとして、転送セクタ数、ハードディスクの転送アドレスなどが指定されおり、ハードディスクにはディスク容量に応じてアクセスできるアドレス（LBAと呼ぶ）に制限があり、また、ドライバで用意している転送データを一時保存するメモリ３２にも容量の制限があるため、これらの制限を超えるパラメータを指定した場合にはパラメータエラーとなる。
【００６２】
ステップＳ１０５において、ステップＳ１０３の評価によってパラメータエラーの存在の有無を判定し、パラメータエラーが存在した場合（ＹＥＳ）にステップＳ１１１に移行し、パラメータエラーが存在しなかった場合（ＮＯ）にステップＳ１０６に移行する。
【００６３】
ステップＳ１０５でＹＥＳと判定された場合に実行されるステップＳ１１２において、コマンド受付通知手段４は状態保持手段１２内のコマンド完了フラグＦ１を「コマンドエラー完了」に設定するフラグ更新処理を行うとともに、コマンドエラー通知を戻り値としてコマンド発行手段２に与えた後、処理を終了する。したがって、ステップＳ１１２の終了後はアプリケーション３０に制御が戻る。
【００６４】
ステップＳ１０５でＮＯと判定された場合に実行されるステップＳ１０６において、コマンド発行手段２より受信したコマンドに含まれるコマンドパラメータをコマンド実行手段５に送信するとともに、正常データ（データ転送コマンド及びパラメータにエラーは無いことを示すデータ）を戻り値としてコマンド発行手段２に送信する。その結果、ステップＳ１０６の戻り値の送信以降のドライバ３１の動作実行中において、アプリケーション３０に制御を戻すことができ、アプリケーション３０はビジーな待ち状態から速やかに開放される。
【００６５】
したがって、制御が戻されたアプリケーション３０は、複数あるＡＴＡバスのうち所定のＡＴＡバス以外のバスを、新たなデータ転送用バスとしたデータ転送コマンドをさらに発行することができる。すなわち、次に使用予定の他のＡＴＡバスが使用中であるかどうかを問い合わせるデータ転送開始準備処理（図３参照）を行った後、当該他のＡＴＡバスをデータ転送用バスとして利用したデータ転送コマンドを発行することができる。
【００６６】
このように、ドライバ３１がステップＳ１０７以降のデータ転送処理を開始する前にアプリケーション３０に制御を戻すことによって、アプリケーション３０はデータ転送が完了するのを待つ必要がなくなるため、ドライバ３１から制御が戻された時点でアプリケーション３０は他の処理を行うことが可能になる。
【００６７】
次に、ステップＳ１０７でコマンド実行手段５はデータ保持手段６に対してデータ転送用バスを用いたデータ転送要求を出し、主としてデータ保持手段６，デバイス読み書き手段８間でデータの授受を行うことにより、データ転送処理を実行させるとともに、状態保持手段１２内のコマンド完了フラグＦ１を「コマンド実行中状態」に設定するフラグ更新処理を行う。
【００６８】
データ転送処理において、ハードディスク３３にデータを書き込む場合、アプリケーション３０はドライバ３１を介してあるいは直接にデータ保持手段６（メモリ３２）上にデータを書き込み、ドライバ３１の指示により、データ保持手段６からデバイス読み書き手段８（ＦＩＦＯ３４）にデータ転送を行うことにより実現される。
【００６９】
一方、ハードディスク３３からデータ読み出す場合は、ドライバ３１によってデバイス読み書き手段８からデータ保持手段６にデータが転送された後、アプリケーション３０がドライバ３１を介してデータ保持手段６上のデータを読み出すことにより行われる。
【００７０】
以下、データ転送処理として、ハードディスク装置４１にＤＭＡ（Direct Memory Access)機構を使って書き込み操作のデータ転送を行う場合を説明する。
【００７１】
まず、データ保持手段６で、アプリケーション３０が管理するユーザプロセスのアドレス空間からドライバ３１が管理するシステムメモリにデータをコピーする。または、ＯＳであるＬｉｎｕｘのｍｍａｐ機能等のメモリマッピング機能をドライバ３１に実装することにより、ｍｍａｐシステムコールを使ってデバイスメモリをユーザプロセスのアドレス空間に直接マッピングできるようになるため、データ保持手段６をドライバ３１からもアプリケーション３０からもアクセスできる一つのメモリ領域として操作することも可能である。この場合は、ユーザプロセス（アプリケーション３０）がデータ転送するデータを直接メモリ（データ保持手段６）に書き込むだけで良い。ハードディスク装置４１に対するデータ書き込みが行える。
【００７２】
次に、メモリ３２（データ保持手段６）とハードディスク装置４１内のＦＩＦＯ３４（デバイス読み書き手段８）との間でＤＭＡ転送が行われる。このＤＭＡ転送によるデータ転送が完了すると、デバイス読み書き手段８から（データ転送）完了割り込みが発生する。
【００７３】
その後、ステップＳ１０８において、データ転送中はドライバ３１はスリープし、データ転送用バスに対応するハードディスク装置４１に相当するデバイス読み書き手段８よりハードウェア割り込みである完了割込みを受けるとスリープを終え、次のステップＳ１０９に移行する。
【００７４】
そして、ステップＳ１０９において、デバイス読み書き手段８内の所定のステータスレジスタの内容に基づき転送エラー発生の有無を判定し、転送エラーが発生した場合（ＹＥＳ）にステップＳ１１１に移行し、転送エラーが発生しなかった場合（ＮＯ）にステップＳ１１０に移行する。
【００７５】
ステップＳ１０９でＮＯと判定された場合に実行されるステップＳ１１０において、データ転送完了通知手段１０は状態保持手段１２内のコマンド完了フラグＦ１を「コマンド正常完了」設定するフラグ更新処理を行った後、処理を終了する。
【００７６】
一方、ステップＳ１０９でＹＥＳと判定された場合に実行されるステップＳ１１１において、データ転送完了通知手段１０は状態保持手段１２内のコマンド完了フラグＦ１を「コマンドエラー完了」に設定するフラグ更新処理を行うとともに、デバイス読み書き手段８内の所定ステータスレジスタの値を参照して得られるエラー内容を示すエラーコードをシステムメモリ３５内のデータ保持手段６以外のエラーコード格納領域に格納した後、処理を終了する。なお、「コマンド正常完了」及び「コマンドエラー完了」はいずれもデータ転送用バスが使用可能であることを示す点において共通する。
【００７７】
＜実施の形態２＞
図６は実施の形態２のデータ転送方式におけるアプリケーション５０及びドライバ５１の内部構成の詳細を示すブロック図である。実施の形態２はアプリケーション５０，ドライバ５１間のデータ転送方式である。
【００７８】
アプリケーション５０はコマンド発行手段２、コマンド作成手段３、シグナル受信手段２１、及び状態保持手段２２から構成され、ドライバ５１はコマンド受付通知手段２４、コマンド実行手段２５、データ転送完了通知手段２６、及びシグナル送信手段２０から構成される。なお、データ転送システムの構成は、図１の構成と同様（ただし、アプリケーション３０がアプリケーション５０に置き換わり、ドライバ３１がドライバ５１に置き換わる。）である。
【００７９】
実施の形態２では、実施の形態１における状態問い合わせをする代わりに、シグナルを使って、コマンドの完了をアプリケーション５０にリアルタイムに通知する方法を採用したデータ転送方式である。
【００８０】
まず、アプリケーション５０の各構成手段３，２１〜２３について説明する。シグナル受信手段２１はシグナル送信手段２０より得た状態シグナルを受信し、状態シグナルの内容に基づき状態保持手段２２内の状態保持フラグＦ２（状態情報）の更新処理等を行う。コマンド発行手段２３あるいはシグナル受信手段２１によって状態保持手段２２の状態保持フラグＦ２の内容が更新され、状態保持手段２２内の状態保持フラグＦ２の値はコマンド発行手段２３による状態読み出し処理によって読み出し可能である。
【００８１】
コマンド発行手段２３はＡＴＡバスの状態保持手段２２から状態読み出しを行い、当該状態読み出しにより得た状態保持フラグＦ２の値に基づきＡＴＡバス（問合せバス）の使用状態等をリアルタイムで認識する。また、コマンド発行手段２３はドライバ５１のコマンド受付通知手段２４から得た戻り値に基づき、状態保持手段２２内の状態保持フラグＦ２を更新する状態更新処理を行う。コマンド発行手段２３のコマンド発行処理、コマンド作成手段３については、図２で示した実施の形態１と同様であるため、説明を省略する。
【００８２】
次に、ドライバ５１の各構成手段２０，２４〜２６について説明する。
【００８３】
コマンド受付通知手段２４は、アプリケーション５０のコマンド発行手段２３から受信したコマンドを解析し、当該コマンドにパラメータエラーがある場合は、戻り値としてエラー情報をコマンド発行手段２３に返し、アプリケーション５０に制御を戻す。
【００８４】
また、上記コマンドにパラメータエラーがない場合、コマンド受付通知手段２４は、アプリケーション５０のコマンド発行手段２３に戻り値として正常情報をコマンド発行手段２３に返すことによりアプリケーション５０に制御を戻す。そして、コマンド受付通知手段２４はコマンドパラメータをコマンド実行手段２５に送信する。
【００８５】
コマンド実行手段２５はハードディスクとデータ転送に関係するデバイスの設定を行い、データ転送要求（コマンド実行指令）をデータ保持手段６に送信するとともに、コマンド実行中通知（第１の状態更新通知）をシグナル送信手段２０に送信する。
【００８６】
データ転送完了通知手段２６はデバイス読み書き手段８より完了割込みを受けると、転送エラーの有無を確認し、転送エラーがない場合はシグナル送信手段２０にコマンド正常完了通知（第２の状態更新通知（その１））を行い、転送エラーが確認された場合はシグナル送信手段２０にコマンドエラー完了通知（第２の状態更新通知（その２））を行うとともに、デバイス読み書き手段８内の所定ステータスレジスタの値を参照して得られるエラー内容を示すエラーコードをシステムメモリ３５内のデータ保持手段６以外のエラーコード格納領域に格納する。
【００８７】
シグナル送信手段２０はコマンド実行手段２５あるいはデータ保持手段６から得られる通知に基づく状態シグナルをアプリケーション５０シグナル受信手段２１に送信する。
【００８８】
図７はアプリケーション５０のコマンド発行手段２３による所定のＡＴＡバスを利用したデータ転送コマンドの発行に至るデータ転送開始準備処理の流れを示すフローチャートである。
【００８９】
同図を参照して、ステップＳ４０１において、コマンド発行手段２３は状態読み出し処理を行い、状態保持手段２２内の状態保持フラグＦ２の値を読み出し、状態保持フラグＦ２の内容に基づき、使用対象の所定のＡＴＡバスが使用中か否かを認識する。
【００９０】
ステップＳ４０２において、コマンド発行手段２３は、状態保持フラグＦ２の内容に基づき所定のＡＴＡバスが使用中であるか否かを認識し、使用中であれば（ＹＥＳ）ステップＳ４０３に移行し、使用中でなければ（ＮＯ）ステップＳ４０４に移行する。
【００９１】
ステップＳ４０２でＹＥＳと判定された場合に実行されるステップＳ４０３において、所定のＡＴＡバス（問合せバス）から他のＡＴＡバスを使用対象として終了する。したがって、終了後は、他のＡＴＡバスを問合せバスとしてデータ転送開始準備処理を行い、当該他のＡＴＡバスが使用可能であれば、速やかに上記他のＡＴＡバスをデータ転送用バスとしてデータ転送を行うことができる。
【００９２】
ステップＳ４０２でＮＯと判定された場合に実行されるステップＳ４０４において、所定のＡＴＡバスを利用したデータ転送を指示するデータ転送コマンドを発行する。
【００９３】
そして、ステップＳ４０５において、シグナル受信手段２１によるシグナル受信プロセスを起動し、ドライバ５１のシグナル送信手段２０からの状態シグナルを受信可能な動作状態にして、処理を終了する。なお、シグナル送信手段２０の受信はソフトウェア割り込み処理的な処理であるため、シグナル送信手段２０を動作状態にするアプリケーション５０の負荷はほとんどない。
【００９４】
このように、アプリケーション５０は、これからデータ転送を行おうとするＡＴＡバス１５が使用中であるかどうかを状態保持手段２２内の状態保持フラグＦ２により認識し、使用中でないことを確認してからデータ転送コマンドを発行することができるため、効率的にデータ転送コマンドを発行することができる。
【００９５】
図８は、ドライバ５１のコマンド受信処理全般を示したフローチャートである。以下、同図を参照しつつドライバ５１の処理全般を説明する。ドライバ５１の処理は、アプリケーション５０からコマンドを受信し、コマンド内容を確認することから始まる。
【００９６】
同図を参照して、ステップＳ３０２において、コマンド受付通知手段２４がデータ転送コマンドを受信したか否かを判定し、データ転送コマンドを受信した場合（ＹＥＳ）にステップＳ３０３に移行し、受信しなかった場合（ＮＯ）にステップＳ３０４に移行する。
【００９７】
ステップＳ３０２でＮＯと判定された場合に実行されるステップＳ３０４において、その他のコマンド（データ転送コマンド以外のコマンド）処理を実行した後、処理を終了する。終了後はアプリケーション５０に制御が戻る。なお、その他のコマンド処理の内容については本発明との関連性が希薄なため説明は省略する。
【００９８】
ステップＳ３０２でＹＥＳと判定された場合に実行されるステップＳ３０３において、アプリケーション５０のコマンド発行手段２３からデータ転送コマンド内に含まれるコマンドパラメータを評価する。
【００９９】
ステップＳ３０５において、ステップＳ３０３の評価によってパラメータエラーの存在の有無を判定し、パラメータエラーが存在した場合（ＹＥＳ）にステップＳ３１２に移行し、パラメータエラーが存在しなかった場合（ＮＯ）にステップＳ３０６に移行する。
【０１００】
ステップＳ３０５でＹＥＳと判定された場合に実行されるステップＳ３１２において、コマンド受付通知手段２４はコマンドエラー通知を戻り値としてコマンド発行手段２３に与える。すると、コマンド発行手段２３は、状態保持手段２２に対して、状態保持フラグＦ２を「コマンドエラー完了」に更新する状態更新処理を行う。その後、アプリケーション５０はビジーな待ち状態から開放されることになる。
【０１０１】
ステップＳ３０５でＮＯと判定された場合に実行されるステップＳ３０６において、コマンド受付通知手段２４はコマンドパラメータをコマンド実行手段２５に送信するとともに、正常データ（データ転送コマンド及びパラメータにエラーは無いことを示すデータ）を戻り値としてコマンド発行手段２３に送信する。したがって、ドライバ５１によるステップＳ３０６以降の動作実行中において、アプリケーション５０に制御を戻すことができる。すなわち、アプリケーション５０はビジーな待ち状態から開放される。
【０１０２】
ドライバ３１によるステップＳ３０６あるいはステップＳ３１２の処理により、アプリケーション３０はビジーな待ち状態から開放される。したがって、制御が戻されたアプリケーション５０は、複数のＡＴＡバスのうち、データ転送用バス以外のバスに対してデータ転送コマンドをさらに発行することができる。すなわち、次に使用予定のＡＴＡバスが使用中であるかどうかを問い合わせるデータ転送開始準備処理（図７参照）を行った後、別のＡＴＡバスを利用したデータ転送コマンドを発行することができる。
【０１０３】
次に、ステップＳ３０７でコマンド実行手段２５はデータ保持手段６に対してデータ転送用バスを用いたデータ転送要求を出し、主としてデータ保持手段６，デバイス読み書き手段８間でデータの授受を行うことにより、データ転送処理を実行させるとともに、シグナル送信手段２０にコマンド実行中通知（データ転送用バスが使用中であることを示す通知）を与え、シグナル送信手段２０よりコマンド実行中を示す状態シグナルをアプリケーション５０内のシグナル受信手段２１に送信させる。すると、シグナル受信手段２１から、コマンド実行中を指示する内容に状態保持手段２２内の状態保持フラグＦ２を更新する。
【０１０４】
その後、ステップＳ３０８において、データ転送中はドライバ５１はスリープし、データ転送用バスに対応するハードディスク装置４１に相当するデバイス読み書き手段８より完了割込みを受けるとスリープを終え、次のステップＳ３０９に移行する。
【０１０５】
そして、ステップＳ３０９において、デバイス読み書き手段８内の所定のステータスレジスタの内容に基づき転送エラー発生の有無を判定し、転送エラーが発生した場合（ＹＥＳ）にステップＳ３１０に移行し、転送エラーが発生しなかった場合（ＮＯ）にステップＳ３１１に移行する。
【０１０６】
ステップＳ３０９でＮＯと判定された場合に実行されるステップＳ３１１において、データ転送完了通知手段２６はコマンド正常完了通知をシグナル送信手段２０に送信し、シグナル送信手段２０よりコマンド完了を示す状態シグナルをアプリケーション５０内のシグナル受信手段２１に送信させる。すると、シグナル受信手段２１から、「コマンド正常完了」を指示する内容に状態保持手段２２内の状態保持フラグＦ２を更新する。ステップＳ３１１の処理を終えるとコマンド受信処理が終了する。
【０１０７】
一方、ステップＳ３０９でＹＥＳと判定された場合に実行されるステップＳ３１０において、データ転送完了通知手段２６はコマンドエラー完了通知をシグナル送信手段２０に送信し、シグナル送信手段２０よりコマンドエラーを示す状態シグナルをアプリケーション５０内のシグナル受信手段２１に送信させる。すると、シグナル受信手段２１から、「コマンドエラー完了」を指示する内容に状態保持手段２２内の状態保持フラグＦ２を更新する。なお、「コマンド正常完了通知」及び「コマンドエラー完了通知」はいずれもデータ転送用バスが使用可能であることを示す通知である点において共通する。
【０１０８】
さらに、データ転送完了通知手段２６は、デバイス読み書き手段８内の所定ステータスレジスタの値を参照して得られるエラー内容を示すエラーコードをシステムメモリ３５内のデータ保持手段６以外のエラーコード格納領域に格納する。ステップＳ３１０の処理を終えるとコマンド受信処理が終了する。
【０１０９】
このように、実施の形態２のデータ転送方式は、シグナル通信を使うことによって、アプリケーション５０側の状態保持手段２２内の状態保持フラグＦ２に、ＡＴＡバスの使用状況等の状態を示す情報を格納している。
【０１１０】
したがって、アプリケーション５０は、データ転送コマンドが完了したと同時に、状態保持手段２２内の状態保持フラグＦ２の内容を読み出すことにより、データ転送に用いたＡＴＡバスが空いたことを知ることができる。
【０１１１】
このため、実施の形態１のデータ転送方式のように、データ転送に時間がかかる場合に、状態読み込み手段１からの問い合わせコマンドにより、問い合わせ処理を繰り返し行う必要がない分、処理の効率化を図ることができる効果を奏する。
【０１１２】
＜実施の形態３＞
実施の形態１の状態保持手段１２あるいは実施の形態３の状態保持手段２２としてシステムメモリ３５を使用したのが実施の形態３である。
【０１１３】
システムメモリ３５はオペレーションシステムが使用しているメモリ領域であるため、ドライバ３１またはアプリケーション３０で変数を宣言することによって、状態保持手段１２（状態保持手段２２）を確保することができる。ドライバ３１またはアプリケーション３０（５０）で状態保持手段１２（２２）にアクセスするということは、変数にアクセスするということと同じであるので、簡単に利用することができるという効果を奏する。
【０１１４】
＜実施の形態４＞
実施の形態１の状態保持手段１２あるいは実施の形態２の状態保持手段２２として、不揮発性メモリを利用したのが実施の形態４である。実施の形態４では、アプリケーション３０（５０）よりデータ転送コマンドを発行した直後に停電した場合を考えると、データ転送が完了した後に停電したのか、データ転送中に停電したのかをアプリケーション３０（５０）は知ることができない。
【０１１５】
状態保持手段１２（状態保持手段２２）に不揮発性メモリを使用した場合、停電時にもその値は保持されるので、停電復帰後に再度電源を投入した場合に当該不揮発性メモリの値を読み出し、データ転送が完了していれば、再度同じデータ転送コマンドを発行しなくてすむという効果を奏する。
【０１１６】
＜実施の形態５＞
実施の形態１の状態保持手段１２としてハードディスク３３を使用したのが実施の形態５である。この場合、コマンド受付通知手段４，コマンド実行手段５及びデータ転送完了通知手段１０からのフラグ更新処理は、データ保持手段６を介した書き込みデータとして状態保持手段１２（ハードディスク３３）に書き込むことにより行われる。
【０１１７】
実施の形態５では、停電時にもその値はハードディスク３３に保持されるため、停電復帰後に再度電源を投入した場合に状態保持手段１２（ハードディスク３３）の値を読み出し、データ転送が完了していれば、再度同じデータ転送コマンドを発行しなくてすむという利点がある。さらに、ハードディスク３３はデータ転送用のデバイスとしてこのシステムで使用しているものなので、新たにハードウェアを追加しなくても停電復帰対策が実現できるという効果を奏する。
【図面の簡単な説明】
【０１１８】
【図１】この発明の実施の形態１のデータ転送方式の対象となるデータ転送システムを示すブロック図である。
【図２】実施の形態１におけるアプリケーション及びドライバの内部構成の詳細を示すブロック図である。
【図３】実施の形態１のアプリケーションによるデータ転送開始準備処理を示したフローチャートである。
【図４】実施の形態１のアプリケーション３０によるデータ転送完了確認処理を示したフローチャートである。
【図５】実施の形態１のドライバによるコマンド受信処理を示したフローチャートである。
【図６】実施の形態２のデータ転送方式におけるアプリケーション及びドライバの内部構成の詳細を示すブロック図である。
【図７】実施の形態２のアプリケーションにおけるデータ転送開始準備処理の流れを示したフローチャートである。
【図８】実施の形態２のドライバによるコマンド受信処理を示したフローチャートである。
【符号の説明】
【０１１９】
１  状態読み込み手段、２，２３  コマンド発行手段、３  コマンド作成手段、４，２４  コマンド受付通知手段、５，２５  コマンド実行手段、６  データ保持手段、８  デバイス読み書き手段、１０，２６  データ転送完了通知手段、１２，２２  状態保持手段、１３  状態通知手段、１５ａ〜１５ｄ  ＡＴＡバス、２１  シグナル受信手段、３０，５０  アプリケーション、３１，５１  ドライバ、３２ａ〜３２ｄ  メモリ、３３ａ〜３３ｄ  ハードディスク、３４ａ〜３４ｄ  ＦＩＦＯ、３５  システムメモリ、４１ａ〜４１ｄ  ハードディスク装置。
【図１】
2005258883.tif 000003
【図２】
2005258883.tif 000004
【図３】
2005258883.tif 000005
【図４】
2005258883.tif 000006
【図５】
2005258883.tif 000007
【図６】
2005258883.tif 000008
【図７】
2005258883.tif 000009
【図８】
2005258883.tif 000010