(57)【要約】【課題】デバイスに対して発行したコマンドを適正にアボートできるデータ転送制御システム、電子機器、プログラム及びデータ転送制御方法の提供。【解決手段】ＢＵＳ１（ＩＥＥＥ１３９４）を介して転送されてきたコマンドパケットＯＲＢを受け、ＯＲＢにより指示されるコマンドを、ＢＵＳ２（ＡＴＡ（ＩＤＥ）／ＡＴＡＰＩ）に接続されるデバイスに発行し、ＤＭＡ転送の開始を指示する。ＯＲＢに基づき発行したコマンドＣＭＤ１をＤＭＡ転送の完了後にアボートする。バスリセット前のＯＲＢ１とバスリセット後のＯＲＢ２の内容を比較し、内容が異なる場合にはＯＲＢ１に基づきデバイスに発行したコマンドＣＭＤ１をＤＭＡ転送の完了後にアボートする。ＤＭＡ転送が完了するまで、ＢＵＳ２のデバイスとの間でダミーデータを転送する。ポインタをダミー更新することでダミーデータの転送制御を行う。【選択図】　　　　図１３
2004070570.tif 000002
【特許請求の範囲】
【請求項１】
バスを介してデータ転送を行うためのデータ転送制御システムであって、
第１のバスを介して転送されてきたコマンドパケットを受け、コマンドパケットにより指示されるコマンドを、第２のバスに接続されるデバイスに対して発行し、第２のバスを介したＤＭＡ転送の開始を指示するコマンド処理部と、
コマンドパケットに基づき第２のバスに接続されるデバイスに対して発行したコマンドを、コマンドパケットに基づき開始したＤＭＡ転送の完了後にアボートするコマンドアボート部と、
を含むことを特徴とするデータ転送制御システム。
【請求項２】
請求項１において、
第１のコマンドパケットの処理中にノードのトポロジ情報をクリアするバスリセットが発生した場合に、バスリセット発生前に第１のバスを介して転送されてきた第１のコマンドパケットの内容と、バスリセット発生後に第１のバスを介して転送されてきた第２のコマンドパケットの内容とを比較するコマンド比較部を含み、
前記コマンドアボート部が、
第１のコマンドパケットの内容と第２のコマンドパケットの内容が異なると判断された場合に、第１のコマンドパケットに基づき第２のバスに接続されるデバイスに対して発行したコマンドを、第１のコマンドパケットに基づき開始したＤＭＡ転送の完了後にアボートすることを特徴とするデータ転送制御システム。
【請求項３】
請求項１又は２において、
第１のコマンドパケットの処理中にノードのトポロジ情報をクリアするバスリセットが発生した場合に、
第１のコマンドパケットのコマンドを第２のバスに接続されるデバイスに発行している場合には、第１のコマンドパケットのコマンドのアボート処理を行い、
第１のコマンドパケットのコマンドを第２のバスに接続されるデバイスに発行していない場合には、第１のコマンドパケットのコマンドのアボート処理を行うことなく、第２のコマンドパケットの処理に移行することを特徴とするデータ転送制御システム。
【請求項４】
請求項１乃至３のいずれかにおいて、
前記コマンドアボート部が、
ＤＭＡ転送が完了するまで、第２のバスに接続されるデバイスとの間でダミーデータを転送する制御を行うことを特徴とするデータ転送制御システム。
【請求項５】
請求項４において、
前記コマンドアボート部が、
コマンドをアボートするか否かの判断時においてＤＭＡ転送が動作中でなかった場合には、ダミーデータの転送制御を行うことなくコマンドをアボートすることを特徴とするデータ転送制御システム。
【請求項６】
請求項４又は５において、
転送データを一時的に記憶するパケットバッファのポインタをリングバッファ方式で管理し、第２のバスからの転送データがパケットバッファに書き込まれる毎に第１のポインタを更新し、第１のバスへの転送データがパケットバッファから読み出される毎に第２のポインタを更新するポインタ管理部を含み、
前記コマンドアボート部が、
第２のバスからの転送データがパケットバッファに書き込まれる毎に更新される第１のポインタにより、第２のポインタが追い越されないように第２のポインタをダミー更新することで、ダミーデータの転送制御を行うことを特徴とするデータ転送制御システム。
【請求項７】
請求項４乃至６のいずれかにおいて、
転送データを一時的に記憶するパケットバッファのポインタをリングバッファ方式で管理し、第２のバスへの転送データがパケットバッファから読み出される毎に第３のポインタを更新し、第１のバスからの転送データがパケットバッファに書き込まれる毎に第４のポインタを更新するポインタ管理部を含み、
前記コマンドアボート部が、
第２のバスへの転送データがパケットバッファから読み出される毎に更新される第３のポインタにより、第４のポインタが追い越されないように第４のポインタをダミー更新することで、ダミーデータの転送制御を行うことを特徴とするデータ転送制御システム。
【請求項８】
請求項１乃至７のいずれかにおいて、
第１のバスが、ＩＥＥＥ１３９４規格によりデータ転送が行われるバスであり、第２のバスが、ＡＴＡ／ＡＴＡＰＩ規格によりデータ転送が行われるバスであることを特徴とするデータ転送制御システム。
【請求項９】
請求項１乃至８のいずれかのデータ転送制御システムと、
第２のバスに接続されるデバイスと、
を含むことを特徴とする電子機器。
【請求項１０】
第１のバスを介して転送されてきたコマンドパケットを受け、コマンドパケットにより指示されるコマンドを、第２のバスに接続されるデバイスに対して発行し、第２のバスを介したＤＭＡ転送の開始を指示するコマンド処理部と、
コマンドパケットに基づき第２のバスに接続されるデバイスに対して発行したコマンドを、コマンドパケットに基づき開始したＤＭＡ転送の完了後にアボートするコマンドアボート部として
データ転送制御システムを機能させることを特徴とするプログラム。
【請求項１１】
請求項１０において、
第１のコマンドパケットの処理中にノードのトポロジ情報をクリアするバスリセットが発生した場合に、バスリセット発生前に第１のバスを介して転送されてきた第１のコマンドパケットの内容と、バスリセット発生後に第１のバスを介して転送されてきた第２のコマンドパケットの内容とを比較するコマンド比較部としてデータ転送制御システムを機能させると共に、
前記コマンドアボート部が、
第１のコマンドパケットの内容と第２のコマンドパケットの内容が異なると判断された場合に、第１のコマンドパケットに基づき第２のバスに接続されるデバイスに対して発行したコマンドを、第１のコマンドパケットに基づき開始したＤＭＡ転送の完了後にアボートすることを特徴とするプログラム。
【請求項１２】
請求項１０又は１１において、
前記コマンドアボート部が、
ＤＭＡ転送が完了するまで、第２のバスに接続されるデバイスとの間でダミーデータを転送する制御を行うことを特徴とするプログラム。
【請求項１３】
バスを介してデータ転送を行うためのデータ転送制御方法であって、
コマンドパケットにより指示されるコマンドを、第２のバスに接続されるデバイスに対して発行し、第２のバスを介したＤＭＡ転送の開始を指示し、
コマンドパケットに基づき第２のバスに接続されるデバイスに対して発行したコマンドを、コマンドパケットに基づき開始したＤＭＡ転送の完了後にアボートすることを特徴とするデータ転送制御方法。
【請求項１４】
請求項１３において、
第１のコマンドパケットの処理中にノードのトポロジ情報をクリアするバスリセットが発生した場合に、バスリセット発生前に第１のバスを介して転送されてきた第１のコマンドパケットの内容と、バスリセット発生後に第１のバスを介して転送されてきた第２のコマンドパケットの内容とを比較し、
第１のコマンドパケットの内容と第２のコマンドパケットの内容が異なると判断された場合に、第１のコマンドパケットに基づき第２のバスに接続されるデバイスに対して発行したコマンドを、第１のコマンドパケットに基づき開始したＤＭＡ転送の完了後にアボートすることを特徴とするデータ転送制御方法。
【請求項１５】
請求項１３又は１４において、
ＤＭＡ転送が完了するまで、第２のバスに接続されるデバイスとの間でダミーデータを転送する制御を行うことを特徴とするデータ転送制御方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、データ転送制御システム、電子機器、プログラム及びデータ転送制御方法に関する。
【０００２】
【背景技術及び発明が解決しようとする課題】
近年、ＩＥＥＥ１３９４と呼ばれるインターフェース規格が脚光を浴びている。このＩＥＥＥ１３９４のバスには、ハードディスクドライブ、光ディスクドライブ、プリンタ、スキャナなどのコンピュータの周辺機器のみならず、ビデオカメラ、ＶＴＲ、ＴＶなどの家庭用電化製品も接続できる。このため、電子機器のデジタル化を飛躍的に促進できるものとして期待されている。
【０００３】
さて、このＩＥＥＥ１３９４においては、バスに電子機器が新たに接続されたり、バスから電子機器が取り外されたりして、バスに接続されるノードが増減すると、いわゆるバスリセットが発生する。そしてバスリセットが発生するとノードのトポロジ情報がクリアされ、その後、トポロジ情報が自動的に再設定される。
【０００４】
このようにＩＥＥＥ１３９４では、バスリセット後にトポロジ情報が自動的に再設定されるため、いわゆるホット状態でのケーブルの抜き差し（ホットプラグ）が可能となる。このため、一般ユーザは、ＶＴＲなどの通常の家庭用電化製品と同じように、電子機器へのケーブルの抜き差を自由にできるようになり、いわゆるホームネットワークシステムの普及に役立つことができる。
【０００５】
しかしながら、このバスリセットの発生が要因となって種々の問題が生じる場合がある。例えばハードディスクドライブ（広義にはストレージデバイス。更に広義にはデバイス）に対してコマンドを発行してＤＭＡ（Ｄｉｒｅｃｔ　Ｍｅｍｏｒｙ　Ａｃｃｅｓｓ）転送を開始した後、このＤＭＡ転送中にバスリセットが発生すると、ハードディスクドライブがハングアップするなどの問題が生じることが判明した。
【０００６】
なお、バスリセット発生時の種々の問題を解決する従来技術として例えば特開平２００１−１７７５３７号に開示される技術が知られている。
【０００７】
本発明は、以上のような技術的課題に鑑みてなされたものであり、その目的とするところは、デバイスに対して発行したコマンドを適正にアボートできるデータ転送制御システム、電子機器、プログラム及びデータ転送制御方法を提供することにある。
【０００８】
【課題を解決するための手段】
本発明は、バスを介してデータ転送を行うためのデータ転送制御システムであって、第１のバスを介して転送されてきたコマンドパケットを受け、コマンドパケットにより指示されるコマンドを、第２のバスに接続されるデバイスに対して発行し、第２のバスを介したＤＭＡ転送の開始を指示するコマンド処理部と、コマンドパケットに基づき第２のバスに接続されるデバイスに対して発行したコマンドを、コマンドパケットに基づき開始したＤＭＡ転送の完了後にアボートするコマンドアボート部とを含むデータ転送制御システムに関係する。
【０００９】
本発明では、第１のバスから転送されてきたコマンドパケットにより指示されるコマンドが、第２のバスに接続されるデバイスに対して発行され、ＤＭＡ転送の開始が指示される。そして、第２のバスに接続されるデバイスに発行したコマンドが、ＤＭＡ転送の完了後にアボート（中止、キャンセル）される。これにより、ＤＭＡ転送が不正に終了することで第２のバスに接続されるデバイスがハングアップする事態等を防止でき、デバイスに発行したコマンドを適正にアボートできるようになる。なお、例えば、第１のバスは、第１のインターフェース規格に準拠したデータ転送を行うためのバスであり、第２のバスは、第２のインターフェース規格に準拠したデータ転送を行うためのバスである。
【００１０】
また本発明では、第１のコマンドパケットの処理中にノードのトポロジ情報をクリアするバスリセットが発生した場合に、バスリセット発生前に第１のバスを介して転送されてきた第１のコマンドパケットの内容と、バスリセット発生後に第１のバスを介して転送されてきた第２のコマンドパケットの内容とを比較するコマンド比較部を含み、前記コマンドアボート部が、第１のコマンドパケットの内容と第２のコマンドパケットの内容が異なると判断された場合に、第１のコマンドパケットに基づき第２のバスに接続されるデバイスに対して発行したコマンドを、第１のコマンドパケットに基づき開始したＤＭＡ転送の完了後にアボートしてもよい。
【００１１】
なお、第１のコマンドパケットの内容と第２のコマンドパケットの内容が同じであると判断された場合には、バスリセットの発生時点のデータ転送の続きからデータ転送を再開できる。
【００１２】
また本発明では、第１のコマンドパケットの処理中にノードのトポロジ情報をクリアするバスリセットが発生した場合に、第１のコマンドパケットのコマンドを第２のバスに接続されるデバイスに発行している場合には、第１のコマンドパケットのコマンドのアボート処理を行い、第１のコマンドパケットのコマンドを第２のバスに接続されるデバイスに発行していない場合には、第１のコマンドパケットのコマンドのアボート処理を行うことなく、第２のコマンドパケットの処理に移行するようにしてもよい。
【００１３】
また本発明では、前記コマンドアボート部が、ＤＭＡ転送が完了するまで、第２のバスに接続されるデバイスとの間でダミーデータを転送する制御を行ってもよい。
【００１４】
この場合のダミーデータの転送制御は、転送データを一時的に記憶するパケットバッファのポインタをダミー更新することで実現してもよいし、ダミーデータ転送用のハードウェアを設けて実現してもよい。また、ダミーデータは、例えば、第２のバスを介して転送される一方で、第１のバスを介して転送されないデータである。
【００１５】
また本発明では、前記コマンドアボート部が、コマンドをアボートするか否かの判断時においてＤＭＡ転送が動作中でなかった場合には、ダミーデータの転送制御を行うことなくコマンドをアボートしてもよい。
【００１６】
このようにすることで、ダミーデータの転送制御の処理を省略でき、処理の効率化を図れる。
【００１７】
また本発明では、転送データを一時的に記憶するパケットバッファのポインタをリングバッファ方式で管理し、第２のバスからの転送データがパケットバッファに書き込まれる毎に第１のポインタを更新し、第１のバスへの転送データがパケットバッファから読み出される毎に第２のポインタを更新するポインタ管理部を含み、前記コマンドアボート部が、第２のバスからの転送データがパケットバッファに書き込まれる毎に更新される第１のポインタにより、第２のポインタが追い越されないように第２のポインタをダミー更新することで、ダミーデータの転送制御を行ってもよい。
【００１８】
また本発明では、転送データを一時的に記憶するパケットバッファのポインタをリングバッファ方式で管理し、第２のバスへの転送データがパケットバッファから読み出される毎に第３のポインタを更新し、第１のバスからの転送データがパケットバッファに書き込まれる毎に第４のポインタを更新するポインタ管理部を含み、前記コマンドアボート部が、第２のバスへの転送データがパケットバッファから読み出される毎に更新される第３のポインタにより、第４のポインタが追い越されないように第４のポインタをダミー更新することで、ダミーデータの転送制御を行ってもよい。
【００１９】
また本発明では、第１のバスが、ＩＥＥＥ１３９４規格によりデータ転送が行われるバスであり、第２のバスが、ＡＴＡ／ＡＴＡＰＩ規格によりデータ転送が行われるバスであってもよい。
【００２０】
また本発明は、上記のいずれかのデータ転送制御システムと、第２のバスに接続されるデバイスとを含む電子機器に関係する。
【００２１】
また本発明は、第１のバスを介して転送されてきたコマンドパケットを受け、コマンドパケットにより指示されるコマンドを、第２のバスに接続されるデバイスに対して発行し、第２のバスを介したＤＭＡ転送の開始を指示するコマンド処理部と、コマンドパケットに基づき第２のバスに接続されるデバイスに対して発行したコマンドを、コマンドパケットに基づき開始したＤＭＡ転送の完了後にアボートするコマンドアボート部としてデータ転送制御システムを機能させるプログラムに関係する。
【００２２】
また本発明は、バスを介してデータ転送を行うためのデータ転送制御方法であって、コマンドパケットにより指示されるコマンドを、第２のバスに接続されるデバイスに対して発行し、第２のバスを介したＤＭＡ転送の開始を指示し、コマンドパケットに基づき第２のバスに接続されるデバイスに対して発行したコマンドを、コマンドパケットに基づき開始したＤＭＡ転送の完了後にアボートするデータ転送制御方法に関係する。
【００２３】
【発明の実施の形態】
以下、本発明の実施形態について詳細に説明する。
【００２４】
なお、以下に説明する本実施形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また本実施形態で説明される構成の全てが本発明の解決手段として必須であるとは限らない。
【００２５】
１．ＩＥＥＥ１３９４、ＳＢＰ−２
１．１　層構造
ＩＥＥＥ１３９４のトランザクション層の一部の機能を含む上位のプロトコルとして、ＳＢＰ−２（Ｓｅｒｉａｌ　Ｂｕｓ　Ｐｒｏｔｏｃｏｌ−２）と呼ばれるプロトコルが提案されている。このＳＢＰ−２（広義にはＳＢＰ）は、ＳＣＳＩ（ＭＭＣ−２）のコマンドセットをＩＥＥＥ１３９４のプロトコル上で利用可能にするために提案されたものである。このＳＢＰ−２を用いれば、既存のＳＣＳＩ規格対応の電子機器で使用されていたコマンドセットに最小限の変更を加えて、ＩＥＥＥ１３９４規格の電子機器に使用できるようになる。従って、電子機器の設計や開発を容易化できる。
【００２６】
図１に、ＩＥＥＥ１３９４、ＳＢＰ−２の層構造（プロトコル・スタック）を簡略化して示す。
【００２７】
ＩＥＥＥ１３９４（ＩＥＥＥ１３９４−１９９５、Ｐ１３９４ａ、Ｐ１３９４ｂ等）のプロトコルは、トランザクション層、リンク層、物理層により構成される。
【００２８】
トランザクション層は、上位層にトランザクション単位のインターフェース（サービス）を提供し、下層のリンク層が提供するインターフェースを通して、リードトランザクション、ライトトランザクション、ロックトランザクション等のトランザクションを実施する。
【００２９】
ここで、リードトランザクションでは、応答ノードから要求ノードにデータが転送される。一方、ライトトランザクションでは、要求ノードから応答ノードにデータが転送される。またロックトランザクションでは、要求ノードから応答ノードにデータが転送され、応答ノードがそのデータに処理を施して要求ノードに返信する。
【００３０】
リンク層は、アドレッシング、データチェック、パケット送受信のためのデータフレーミング、アイソクロナス転送のためのサイクル制御などを提供する。
【００３１】
物理層は、リンク層により使用されるロジカルシンボルの電気信号への変換や、バスの調停や、バスの物理的インターフェースを提供する。
【００３２】
ＳＢＰ−２層は、図１に示すように、ＩＥＥＥ１３９４（広義には第１のインターフェース規格）のトランザクション層の一部の機能を含む上位のプロトコルを提供する。
【００３３】
１．２　ＳＢＰ−２の処理
図２に、ＳＢＰ−２（広義には第１のインターフェース規格の上位の第１のプロトコル）の処理の全体についてのフローチャートを示す。
【００３４】
図２に示すように、ＳＢＰ−２では、まず、接続機器の確認を行うためのコンフィギュレーションＲＯＭのリード処理が行われる（ステップＴ１）。
【００３５】
次に、イニシエータ（例えばパーソナルコンピュータ）が、ターゲット（例えばストレージデバイス）に対するアクセス権（リクエスト開始の許可。バスの使用権）を獲得するためのログイン処理が行われる（ステップＴ２）。具体的には、イニシエータにより作成されたログインＯＲＢ（Ｏｐｅｒａｔｉｏｎ　Ｒｅｑｕｅｓｔ　Ｂｌｏｃｋ）を用いてログイン処理が行われる。
【００３６】
次に、フェッチエージェントの初期化が行われる（ステップＴ３）。そして、コマンドブロックＯＲＢ（ノーマルコマンドＯＲＢ）を用いてコマンド処理が行われ（ステップＴ４）、最後に、ログアウトＯＲＢを用いてログアウト処理が行われる（ステップＴ５）。
【００３７】
ここで、ステップＴ４のコマンド処理においては、図３のＡ１に示すように、イニシエータがライト要求パケットを転送して（ライト要求トランザクションを発行して）、ターゲットのドアベルレジスタをリングする。すると、Ａ２に示すように、ターゲットがリード要求パケットを転送し、イニシエータが対応するリード応答パケットを返す。これにより、イニシエータが作成したＯＲＢ（コマンドブロックＯＲＢ）が、ターゲットのデータバッファ（パケットバッファ）にフェッチされる。そして、ターゲットは、フェッチされたＯＲＢに含まれるコマンドを解析する。
【００３８】
そして、ＯＲＢに含まれるコマンドがＳＣＳＩのライトコマンドであった場合には、Ａ３に示すように、ターゲットがリード要求パケットをイニシエータに転送し、イニシエータが対応するリード応答パケットを返す。これにより、イニシエータのデータバッファに格納されているデータがターゲットに転送される。そして、例えばターゲットがストレージデバイスであった場合には、転送されたデータがストレージデバイスに書き込まれる。
【００３９】
一方、ＯＲＢに含まれるコマンドがＳＣＳＩのリードコマンドであった場合には、図４のＢ１に示すように、ターゲットは、一連のライト要求パケットをイニシエータに転送する。これにより、例えばターゲットがストレージデバイスであった場合には、ストレージデバイスから読み出されたデータが、イニシエータのデータバッファに転送されることになる。
【００４０】
このＳＢＰ−２によれば、ターゲットは、自身が都合の良いときに要求パケットを転送して（トランザクションを発行して）、データを送受信できる。従って、イニシエータとターゲットが同期して動く必要がなくなるため、データ転送効率を高めることができる。
【００４１】
なお、ＩＥＥＥ１３９４の上位プロトコルとしては、ストレージデバイスやプリンタのデータの転送に最適なＳＢＰ−２以外にも、映像や音声のデータの転送に最適なＡＶ／Ｃコマンドが提案されている。また、ＩＥＥＥ１３９４バス上で、インターネットプロトコル（ＩＰ）のパケットを転送するものとしてＩＰｏｖｅｒ１３９４と呼ばれるプロトコルも提案されている。
【００４２】
なお、ターゲット、イニシエータ間でデータ転送を行う場合、図５（Ａ）のようにイニシエータ（パーソナルコンピュータ、相手ノード）のデータバッファにページテーブルが存在する場合と、存在しない場合がある。
【００４３】
そして、ページテーブルが存在する場合には、図５（Ｂ）に示すように、イニシエータが作成したＯＲＢの中には、そのページテーブルのアドレスやエレメント数が含まれる。そして、転送データのアドレス（読み出しアドレス、書き込みアドレス）は、このページテーブルを用いて間接アドレス指定される。
【００４４】
一方、ページテーブルが存在しない場合には、図５（Ｃ）に示すように、ＯＲＢの中にアドレスとデータ長が含まれ、転送データのアドレスが直接アドレス指定される。
【００４５】
１．３　バスリセット
ＩＥＥＥ１３９４では、電源が投入されたり、途中でデバイスの抜き差しが発生すると、バスリセットが発生（発行）する。即ち、各ノードは、ポートの電圧変化を監視している。そして、バスに新たなノードが接続されるなどしてポートの電圧に変化が生じると、この変化を検知したノードは、バス上の他のノードに対して、バスリセットが発生したことを知らせる。また、各ノードの物理層は、バスリセットが発生したことをリンク層に伝える。
【００４６】
そして、このようにバスリセットが発生すると、図６に示すようなトポロジの情報（ノードＩＤ等）がクリアされる。そして、その後、トポロジー情報が自動的に再設定される。即ち、バスリセット後、ツリー識別、自己識別が行われる。その後、アイソクロナスリソースマネージャ、サイクルマスタ、バスマネージャ等の管理ノードが決定される。そして、通常のパケット転送が再開される。
【００４７】
このようにＩＥＥＥ１３９４では、バスリセット後にトポロジ情報が自動的に再設定されるため、電子機器のケーブルを自由に抜き差しできるようになり、いわゆるホットプラグを実現できる。
【００４８】
なお、トランザクションの途中でバスリセットが発生した場合には、そのトランザクションはキャンセルされる。そして、キャンセルされたトランザクションを発行した要求ノードは、トポロジー情報が再設定された後に、要求パケットを再度転送する。また、応答ノードは、バスリセットによりキャンセルされたトランザクションの応答パケットを要求ノードに返送してはならない。
【００４９】
１．４　バスリセットによるハングアップ
さて、上述したバスリセットがデータ転送中に発生すると、以下のような問題が生じることが判明した。
【００５０】
例えば図７（Ａ）に示すように、Ｃ１に示す位置（アドレス）までデータを転送したところで、バスリセットが発生したとする。この場合には、バスリセット発生時点で処理中であったトランザクションは全てキャンセルされる。従って、バスリセット発生前のＯＲＢ（以下、適宜、ＯＲＢ１と呼ぶ）によりデータの転送を要求していたパーソナルコンピュータ等のイニシエータは、図７（Ｂ）に示すように、バスリセット発生後のＯＲＢ（以下、適宜、ＯＲＢ２と呼ぶ）を再度作成して、データの転送を最初からやり直すようにストレージデバイス等のターゲットに指示する。このため、図７（Ｂ）のＣ２に示す位置からデータ転送が再開されてしまい、データが二重に転送される問題が生じる。
【００５１】
このような問題を解決するために特開平２００１−１７７５３７号の従来技術では、バスリセット前のＯＲＢ１とバスリセット後のＯＲＢ２の内容を比較し、ＯＲＢ１とＯＲＢ２が同一内容ならば図７（Ｂ）のＣ３に示す位置からデータ転送を再開する手法を採用している。
【００５２】
しかしながら、パーソナルコンピュータのＯＳ（オペレーティングシステム）の作りによっては、バスリセット前のＯＲＢ１とは内容が異なるＯＲＢ２が、バスリセット後にパーソナルコンピュータから転送されてくる場合がある。
【００５３】
例えば、ＯＲＢ１が図３に示すようなＳＣＳＩ（ＭＭＣ−２）のライトコマンドを含んでおり、このライトコマンドに基づくデータ転送中にバスリセットが発生したとする。この場合に、バスリセット後に、パーソナルコンピュータのＯＳが、ＦＡＴ（ファイルアロケーションテーブル）の内容を調べるために、ＦＡＴのリードコマンドを含むＯＲＢ２を送ってくる場合がある。
【００５４】
この場合には、バスリセット前のＯＲＢ１ではデータのライトコマンドが指示され、バスリセット後のＯＲＢ２ではＦＡＴのリードコマンドが指示されており、ＯＲＢ１とＯＲＢ２の内容が異なる。従って、後段のストレージデバイスに対して既に発行したＯＲＢ１のライトコマンドを、アボートする必要がある。
【００５５】
ところが、バスリセット前のＯＲＢ１のライトコマンドに基づいて既にＤＭＡ転送が開始されている場合に、このライトコマンドをアボートすると、後段のストレージデバイスがハングアップしてしまう問題が生じることが判明した。
【００５６】
２．全体構成
以上のような問題を解決できるデータ転送制御システム及びこれを含む電子機器の全体構成例を図８に示す。なお、以下では、イニシエータとの間でデータ転送を行うターゲットがストレージデバイス（ハードディスクドライブ、ＣＤドライブ、ＤＶＤドライブ等）である場合について例にとり説明するが、本発明はこれに限定されない。
【００５７】
データバッファ４を有するパーソナルコンピュータ（ホストコンピュータ）２と電子機器８は、ＩＥＥＥ１３９４に準拠したＢＵＳ１（第１のバス）により接続される。そして、電子機器８は、データ転送制御システム１０とストレージデバイス１００（広義にはデバイス）を有する。
【００５８】
なお、電子機器８には、図示しないシステムＣＰＵ、システムメモリ（ＲＯＭ、ＲＡＭ）、操作部、或いは信号処理デバイス等を含めることができる。
【００５９】
データ転送制御システム１０は、物理層（ＰＨＹ）回路１４、リンク層回路２０、ＳＢＰ−２回路２２、インターフェース回路３０、パケット管理回路３８、バケットバッファ４０（データバッファ）を含む。また、ＣＰＵ４２、フラッシュメモリ４４（ＥＥＰＲＯＭ）を含む。また、フラッシュメモリ４４にその処理モジュール（プログラム）が記憶され、ＣＰＵ４２（広義にはプロセッサ）により実行されるファームウェア５０を含む。なお、本実施形態のデータ転送制御システム１０は、図８に示す全ての回路ブロック、機能ブロックを含む必要はなく、その一部を省略してもよい。
【００６０】
物理層回路１４は、図１の物理層のプロトコルをハードウェアにより実現するための回路であり、リンク層回路２０により使用されるロジカルシンボルを電気信号に変換する機能を有する。
【００６１】
リンク（＆トランザクション）層回路２０は、図１のリンク層のプロトコルやトランザクション層のプロトコルの一部をハードウェアにより実現するための回路であり、ノード間でのパケット転送のための各種サービスを提供する。
【００６２】
これらの物理層回路１４、リンク層回路２０の機能により、ＩＥＥＥ１３９４に準拠したデータ転送を、ＢＵＳ１（第１のバス）を介してパーソナルコンピュータ２（広義には電子機器）との間で行うことが可能になる。
【００６３】
ＳＢＰ−２回路２２（転送実行回路）は、ＳＢＰ−２のプロトコルの一部やトランザクション層の一部をハードウェアにより実現する回路である。このＳＢＰ−２回路２２の機能により、転送データを一連のパケットに分割し、分割された一連のパケットを連続転送する処理が可能になる。
【００６４】
インターフェース回路３０は、ストレージデバイス１００とのインターフェース処理を行う回路である。このインターフェース回路３０の機能により、ＡＴＡ（ＡＴ　Ａｔｔａｃｈｍｅｎｔ）、ＡＴＡＰＩ（ＡＴＡ　Ｐａｃｋｅｔ　Ｉｎｔｅｒｆａｃｅ）に準拠したデータ転送を、ＢＵＳ２（第２のバス）を介してストレージデバイス１００との間で行うことが可能になる。
【００６５】
そして、図８のように物理層回路１４、リンク層回路２０、インターフェース回路３０を設けることで、ＩＥＥＥ１３９４（広義には第１のインターフェース規格）とＡＴＡ（ＩＤＥ）／ＡＴＡＰＩ（広義には第２のインターフェース規格）の変換ブリッジ機能をデータ転送制御システム１０に持たせることが可能になる。
【００６６】
インターフェース回路３０が含むＤＭＡコントローラ３２は、ＢＵＳ２を介してストレージデバイス１００との間でＤＭＡ（Ｄｉｒｅｃｔ　Ｍｅｍｏｒｙ　Ａｃｃｅｓｓ）転送を行うための回路である。
【００６７】
なお、ＢＵＳ２に接続されるストレージデバイス１００は、ＡＴＡ（ＩＤＥ）／ＡＴＡＰＩに準拠したデータ転送を行うためのインターフェース回路１０２と、ストレージ１０６へのアクセス制御（書き込み又は読み出し制御）を行うアクセス制御回路１０４と、ハードディスクや光ディスクなどのストレージ１０６を含む。
【００６８】
バッファ管理回路３８は、パケットバッファ４０とのインターフェースを管理する回路である。バッファ管理回路３８は、バッファ管理回路３８の制御のためのレジスタ、パケットバッファ４０へのバス接続を調停する調停回路、各種の制御信号を生成するシーケンサなどを含む。
【００６９】
また、バッファ管理回路３８はポインタ管理部３９を含む。このポインタ管理部３９は、パケットバッファ４０のポインタをリングバッファ方式で管理し、書き込み用、読み込み用の複数のポインタを更新する処理を行う。
【００７０】
パケットバッファ４０（パケットメモリ、データバッファ）は、パケット（転送データ）を一時的に格納するためのバッファであり、ＳＲＡＭ、ＳＤＲＡＭ、或いはＤＲＡＭなどのハードウェアにより構成される。なお、本実施形態では、パケットバッファ４０は、ランダムアクセス可能なパケット記憶部として機能する。また、パケットバッファ４０を、データ転送制御システム１０に内蔵せずに、外付けにしてもよい。
【００７１】
ＣＰＵ４２（広義にはプロセッサ）は、装置全体の制御やデータ転送の制御を行うものである。
【００７２】
フラッシュメモリ４４（ＥＥＰＲＯＭ）は、電気的にデータの書き換えが可能な不揮発性メモリである。このフラッシュメモリ４４には、ファームウェア５０の処理モジュール（プログラム）が記憶される。
【００７３】
ファームウェア５０は、ＣＰＵ４２上で動作する種々の処理モジュール（処理ルーチン）を含むプログラムであり、トランザクション層等のプロトコルは、このファームウェア５０と、ハードウェアであるＣＰＵ４２等により実現される。
【００７４】
ファームウェア５０（Ｆ／Ｗ）は、コミュニケーション部５２、マネージメント部６０、フェッチ部７０、ストレージタスク部８０、ダウンローダ部９０を含む。なお、ファームウェア５０は、これらの全ての機能ブロックを含む必要はなく、その一部を省略してもよい。
【００７５】
ここで、コミュニケーション部５２は、物理層回路１４、リンク層回路２０などのハードウェアとの間のインターフェースとして機能する処理モジュールである。
【００７６】
マネージメント部６０（マネージメントエージェント）は、ログイン、リコネクト、ログアウト、リセット等の管理を行う処理モジュールである。例えばイニシエータがターゲットにログインを要求した場合には、まず、このマネージメント部６０が、このログイン要求を受け付けることになる。
【００７７】
フェッチ部７０（フェッチエージェント）は、ＯＲＢ（Ｏｐｅｒａｔｉｏｎ　Ｒｅｑｕｅｓｔ　Ｂｌｏｃｋ）受信と、ステータスの発行と、ストレージタスク部８０へのコマンド処理依頼を行う処理モジュールである。フェッチ部７０は、単一の要求しか扱うことができないマネージメント部６０とは異なり、イニシエータからの要求により自身がフェッチしたＯＲＢのリンクリストも扱うことができる。
【００７８】
ストレージタスク部８０は、ＯＲＢが含むコマンドの処理とＤＭＡ転送処理を実行するための処理モジュールである。
【００７９】
ダウンローダ部９０は、フラッシュメモリ４４に記憶されるファームウェア５０の処理モジュール等の更新を行うための処理モジュールである。
【００８０】
ストレージタスク部８０は、コマンド処理部８２、コマンド比較部８４、コマンドアボート部８６、転送再開部８８を含む。
【００８１】
ここでコマンド処理部８２は、ＢＵＳ１（ＩＥＥＥ１３９４等の第１のインターフェース規格の第１のバス）を介して転送されてきたＯＲＢ（広義にはコマンドパケット、データ転送オペレーション要求のためのコマンドパケット）についての種々の処理を行う。具体的には、ＢＵＳ１からのＯＲＢを受け、ＯＲＢが含むコマンド（ＳＣＳＩ、ＭＭＣ−２のコマンド）を、ＢＵＳ２（ＡＴＡ／ＡＴＡＰＩ等の第２のインターフェース規格の第２のバス）に接続されるストレージデバイス１００（広義にはデバイス）に対して発行し、ＢＵＳ２を介したＤＭＡ転送（ＣＰＵを介在させないデータ転送）の開始を指示する。
【００８２】
コマンド比較部８４は、ＯＲＢの処理中（ＯＲＢによるデータ転送中）にバスリセット（ノードのトポロジ情報をクリアするリセット）が発生した場合に、バスリセット発生前にＢＵＳ１を介して転送されてきたＯＲＢ１の内容と、バスリセット発生後にＢＵＳ１を介して転送されてきたＯＲＢ２の内容を比較する。
【００８３】
コマンドアボート部８６は、ＯＲＢに基づきストレージデバイス１００に対して発行したコマンド（ＳＣＳＩのリードコマンド、ライトコマンド等）を、そのＯＲＢ（コマンド）に基づき開始したＤＭＡ転送（連続したデータ転送）の完了後にアボートする。
【００８４】
より具体的にはコマンドアボート部８６は、バスリセット前のＯＲＢ１とバスリセット後のＯＲＢ２の内容が異なると判断された場合に、ＯＲＢ１に基づきストレージデバイス１００に対して発行したコマンドを、そのＯＲＢ１（コマンド）に基づき開始したＤＭＡ転送の完了後にアボート（中止、キャンセル）する。
【００８５】
この場合、コマンドアボート部８６は、ＯＲＢに基づき開始したＤＭＡ転送が完了するまで、ストレージデバイス１００との間でダミーデータが転送されるように制御を行う。
【００８６】
即ち、バスの変換ブリッジ機能を有する本実施形態のデータ転送制御システム１０では、通常は、ストレージデバイス１００からＢＵＳ２を介して転送されてきたデータは、ＢＵＳ１を介してパーソナルコンピュータ２に転送される。また、パーソナルコンピュータ２からＢＵＳ１を介して転送されてきたデータは、ＢＵＳ２を介してストレージデバイス１００に転送される。
【００８７】
これに対して、ダミーデータの転送時においては、ストレージデバイス１００からＢＵＳ２を介してダミーデータがデータ転送制御システム１０に転送される一方で、このダミーデータはパーソナルコンピュータ２に転送されない。また、パーソナルコンピュータ２からＢＵＳ１を介してデータがデータ転送制御システム１０に転送されなくても、ＢＵＳ２を介してストレージデバイス１００にダミーデータを転送する。
【００８８】
なお、コマンドアボート部８６でのアボート処理は、バスリセット後に行われるリコネクト処理が終了した後に行われる。
【００８９】
転送再開部８８は、バスリセット前のＯＲＢ１とバスリセット後のＯＲＢ２の内容が同じであると判断された場合に、バスリセット発生時点のデータ転送の続き（バスリセット発生時点で転送したデータの次のデータ）からデータ転送を再開する処理を行う。
【００９０】
３．処理の詳細
次に、本実施形態の処理の詳細について図９、図１０のフローチャート等を用いて説明する。
【００９１】
図９は、本実施形態の全体的な処理を示すフローチャートである。
【００９２】
ＳＢＰ−２の処理中に、コマンドＣＭＤ１を含むＯＲＢ１を受信すると（ステップＳ１）、バスリセットが発生したか否かを判断する（ステップＳ２）。そして、バスリセットが発生していない場合には、図１１のＤ１に示すように、ストレージデバイス１００（ハードディスクドライブ）に対して、ＯＲＢ１に含まれるコマンドＣＭＤ１を発行する（ステップＳ３）。
【００９３】
即ち、ＳＢＰ−２では、ＳＣＳＩ（ＭＭＣ−２）に類似したコマンド（リード、ライト、モードセンス、モードセレクト等）が使用されており、ストレージデバイス１００は、これらのコマンドを用いて、リード、ライトなどの動作を行う。本実施形態のデータ転送制御システム１０は、ＯＲＢ１に含まれるコマンドＣＭＤ１を取り出し、このＣＭＤ１を、インターフェース回路３０、ＢＵＳ２（ＡＴＡ／ＡＴＡＰＩ）を介してストレージデバイス１００に発行する。
【００９４】
ＣＭＤ１を発行した後、バスリセットが発生したか否かを判断する（ステップＳ４）。そして、バスリセットが発生していない場合には、ＢＵＳ２を介してストレージデバイスからＤＭＡＲＱが来たか否かを判断する（ステップＳ５）。
【００９５】
即ち、ＡＴＡ／ＡＴＡＰＩに準拠するＢＵＳ２では、後述するように、ＤＭＡ転送要求であるＤＭＡＲＱやＤＭＡＲＱに対するアクノリッジであるＤＭＡＣＫなどの信号が定義されている。そして、ストレージデバイス１００のインターフェース回路１０２がＤＭＡＲＱをアクティブにした後、データ転送制御システムのインターフェース回路３０がＤＭＡＣＫをアクティブにすると、ＤＭＡ転送が開始することになる。
【００９６】
ＤＭＡＲＱが来ていない場合には、バスリセットが発生したか否かを判断する（ステップＳ６）。そして、バスリセットが発生していない場合には、ＤＭＡＲＱが来たか否かを判断し、ＤＭＡＲＱが来るまでステップＳ５、Ｓ６の判断を繰り返す。
【００９７】
ＤＭＡＲＱが来ると、ＤＭＡＣＫをアクティブにする処理等を行って、ＤＭＡ転送の開始を指示する（ステップＳ７）。そして、図１１のＤ２、Ｄ３に示すように、ＢＵＳ１（ＩＥＥＥ１３９４）、ＢＵＳ２（ＡＴＡ／ＡＴＡＰＩ）を介したデータ転送が行われるようになる。
【００９８】
ここで、ＢＵＳ１を介したデータ転送は、物理層回路１４、リンク層回路２０、ＳＢＰ−２回路２２などにより実現される。このデータ転送により、パーソナルコンピュータ２のデータバッファ４のデータがパケットバッファ４０に書き込まれたり、パケットバッファ４０のデータがデータバッファ４に読み込まれる。
【００９９】
一方、ＢＵＳ２を介したデータ転送は、インターフェース回路３０などにより実現される。このデータ転送により、パケットバッファ４０のデータが、ストレージデバイス１００のストレージ１０６に書き込まれたり、ストレージ１０６のデータがパケットバッファ４０に読み込まれる。
【０１００】
次に、バスリセットが発生したか否かを判断し（ステップＳ８）、ＤＭＡ転送が完了すると（ステップＳ９）、ＯＲＢ１についてのコマンド処理を終了し（ステップＳ１０）、ＯＲＢ１のステータスをパーソナルコンピュータ２に対して伝える（ステップＳ１１）。このようにして、ＯＲＢ１についての一連のコマンド処理が終了する。
【０１０１】
ステップＳ２、Ｓ４、Ｓ６、Ｓ８でバスリセットが発生したと判断されると、図１１のＤ４に示すように、イニシエータからのリコネクトを待つリコネクト処理が行われる（ステップＳ１２）。
【０１０２】
即ち、ＳＢＰ−２においては、バスリセット前にログインしていたイニシエータは、バスリセット後、一定期間の間は、優先的にそのターゲットに対してリコネクトできる。バスリセット後に、このリコネクト処理を行うことで、イニシエータは、そのターゲットに対するアクセス権（バス使用権）を専有できるようになる。
【０１０３】
リコネクト処理の後、コマンドＣＭＤ２を含むＯＲＢ２を受信すると（ステップＳ１３）、図１１のＤ５に示すように、バスリセット前のＯＲＢ１（ＣＭＤ１）とバスリセット後のＯＲＢ２の内容を比較するコマンド比較処理を行う（ステップＳ１４）。
【０１０４】
具体的には、図１２に示すように、本実施形態では、ＯＲＢが含むページテーブル存在フラグＰや、データサイズや、コマンドブロック（コマンドセット）フィールドの中のオペレーションコード（ライトコマンド、リードコマンドなどを区別するコード）やデータ長を比較している。またＯＲＢが、ＯＲＢの識別情報（例えば順序番号）を含む場合には、この識別情報を比較してもよい。なお、ページテーブルを使用していない場合はデータディスクリプタの値を比較し、ページテーブルを使用している場合は、セグメント数を比較する。
【０１０５】
以上のような情報を比較することで、バスリセット前のＯＲＢ１とバスリセット後のＯＲＢ２が同一か否かを簡素な処理で確実に判断できる。
【０１０６】
そして、ＯＲＢ１とＯＲＢ２の内容が同一であると判断された場合には、ＯＲＢ１についてのデータ転送の再開処理を行う（ステップＳ１５）。これにより、図１１のＤ６に示すように、バスリセット発生時点の続きからデータ転送を再開できるようになる。なお、データ転送の再開処理の詳細については、特開平２００１−１７７５３７に開示されている。
【０１０７】
一方、図１３のＥ４に示すようにＯＲＢ１とＯＲＢ２の内容が同一でないと判断された場合には、ＯＲＢ１が含むＣＭＤ１をストレージデバイス１００に対して既に発行しているか否かを判断する（ステップＳ１６）。そして、ＣＭＤ１を発行していない場合には、コマンドのアボート処理を行うことなく、新たに送られてきたＯＲＢ２についての処理に移行する（ステップＳ１７）。このように本実施形態では、ＣＭＤ１の処理中にバスリセットが発生した場合において、ＣＭＤ１が発行済みと判断（ステップＳ１６）された時にはアボート処理（ステップＳ２１）を行うが、ＣＭＤ１が未発行と判断（ステップＳ１６）された場合にはアボート処理を行うことなくＣＭＤ２の処理（ステップＳ１７）に移行する。
【０１０８】
一方、ストレージデバイス１００にＣＭＤ１を既に発行している場合には、ＤＭＡ転送を既に開始しているか否かを判断する（ステップＳ１８）。そして、開始している場合には、図１３のＥ５に示すように、コマンドＣＭＤ１のアボート処理に移行する（ステップＳ２１）。一方、ＣＭＤ１未発行の場合には、ＤＭＡ転送要求ＤＭＡＲＱが来ているか否かを判断し（ステップＳ１９）、ＤＭＡＲＱが来ていない場合にはＣＭＤ１のアボート処理に移行する。一方、ＤＭＡＲＱが来ている場合には、ＤＭＡ転送の開始を指示した後（ステップＳ２０）、ＣＭＤ１のアボート処理に移行する。そして、ＣＭＤ１のアボート処理が終了すると、ＯＲＢ２（ＣＭＤ２）の処理に移行する（ステップＳ１７）。
【０１０９】
図１０は、ＣＭＤ１のアボート処理に関するフローチャートである。
【０１１０】
まず、ＤＭＡ転送が動作中か否かを判断する（ステップＳ３１）。例えば、図９のステップＳ１８でＤＭＡ転送が開始していないと判断され、ステップＳ１９でＤＭＡＲＱが未だ来ていないと判断された場合には、図１０のステップＳ３１でＤＭＡ転送が動作中ではないと判断される可能性がある。この場合には、ステップＳ３２〜Ｓ３８のダミーデータの転送制御処理を行うことなく、コマンドＣＭＤ１をアボートする。このようにすることで、ステップＳ３２〜Ｓ３８の処理を省くことができ、処理の効率化を図れる。
【０１１１】
ＤＭＡ転送が動作中であると判断された場合には、コマンドＣＭＤ１がリードコマンドかライトコマンドかを判断する（ステップＳ３２）。
【０１１２】
ＣＭＤ１がリードコマンドである場合には、図１３のＥ６に示すように、ＣＭＤ１についてのＤＭＡ転送が完了しているか否かを判断する（ステップＳ３３）。そして、ＤＭＡ転送が完了するまで、ストレージデバイス１００との間で、ステップＳ３３〜Ｓ３５のダミーデータの転送（リード）処理を行う。そして、ＤＭＡ転送が完了したと判断されると、図１３のＥ７に示すようにコマンドＣＭＤ１のアボート処理を行う（ステップＳ３９）。
【０１１３】
一方、ＣＭＤ１がライトコマンドである場合には、ＣＭＤ１についてのＤＭＡ転送が完了しているか否かを判断する（ステップＳ３６）。そして、ＤＭＡ転送が完了するまで、ストレージデバイス１００との間で、ステップＳ３６〜Ｓ３８のダミーデータの転送（ライト）処理を行う。そして、ＤＭＡ転送が完了したと判断されると、コマンドＣＭＤ１のアボート処理を行う（ステップＳ３９）。
【０１１４】
なお、コマンドのアボート処理は、例えば、ＡＴＡ／ＡＴＡＰＩで定義されるソフトウェアリセットにより実現できる。具体的には、ストレージデバイス１００のインターフェース回路１０２が有するデバイス制御用レジスタのＳＲＳＴビットに「１」をセットすることで、このソフトウェアリセットが実行される。このレジスタへの値のセットは、後述するＢＵＳ２の信号ＣＳ［１：０］、ＤＡ［２：０］、ＤＩＯＷ、ＤＩＯＲ等を用いたＰＩＯ転送により、インターフェース回路３０がインターフェース回路１０２のレジスタにアクセスすることで実現できる。
【０１１５】
以上のように本実施形態では、バスリセット前にストレージデバイスに発行したコマンドＣＭＤ１（図９のステップＳ３、図１３のＥ１参照）を、ＯＲＢ１（ＣＭＤ１）に基づき開始したＤＭＡ転送（図９のステップＳ７、Ｓ２０、図１３のＥ３参照）が完了した後にアボートしている（図１０のステップＳ３９、図１３のＥ７参照）。
【０１１６】
このようにすることで、ストレージデバイス１００とのＢＵＳ２を介したＤＭＡ転送が正常に完了した後に、コマンドＣＭＤ１がアボートされるようになる。従って、ストレージデバイス１００は、ＤＭＡ転送を正常に完了できるため、ストレージデバイス１００がハングアップする事態を防止できる。また、コマンドＣＭＤ１をアボートするまでのＢＵＳ２を介したＤＭＡ転送は、ダミーデータ転送により行われるため、パーソナルコンピュータ２の処理に悪影響が及ぶこともない。
【０１１７】
特に、ＡＴＡ（ＩＤＥ）／ＡＴＡＰＩのインターフェースを備えたストレージデバイス１００は、元々、パーソナルコンピュータ２の内蔵ストレージデバイスとして設計されており、ＤＭＡ転送中のＩＥＥＥ１３９４のバスリセットの発生を想定した設計は行われていない。従って、ストレージデバイス１００を、ＩＥＥＥ１３９４とＡＴＡ／ＡＴＡＰＩのブリッジ機能を備えた本実施形態のデータ転送制御システム１０に接続すると、予期しないバスリセットの発生により、ストレージデバイス１００がハングアップする可能性が高い。本実施形態によれば、ＤＭＡ転送の完了後にコマンドをアボートするため、このようなハングアップの発生を未然に防止できる。
【０１１８】
４．ダミーデータの転送
次に、図１０のステップＳ３３〜Ｓ３５、Ｓ３６〜Ｓ３８のダミーデータの転送処理について、図１４（Ａ）〜（Ｅ）、図１５（Ａ）〜（Ｅ）を用いて説明する。
【０１１９】
図１４（Ａ）〜（Ｅ）は、ストレージデバイス１００のデータをパーソナルコンピュータ２がリードする場合（データ転送制御システム１０のデータ送信時）における、パケットバッファ４０のポインタ制御について説明するための図である。
【０１２０】
図１４（Ａ）〜（Ｅ）において、ポインタＡＴＸＰ１（第１のポインタ）は、ＢＵＳ２（ストレージデバイス１００、ＡＴＡ／ＡＴＡＰＩ）からの転送データをパケットバッファ４０に書き込むためのポインタであり、ＢＵＳ２からの転送データが書き込まれる毎に更新される。また、ポインタＬＴＸＰ２（第２のポインタ）は、ＢＵＳ１（パーソナルコンピュータ２、ＩＥＥＥ１３９４）への転送データをパケットバッファ４０から読み出すためのポインタであり、ＢＵＳ１への転送データが読み出される毎に更新される。これらのポインタの更新は、ポインタ管理部３９により行われる。
【０１２１】
図１４（Ａ）に示すように、ＢＵＳ２からの転送データがインターフェース回路３０によりパケットバッファ４０に書き込まれる毎に、ポインタＡＴＸＰ１が更新され、その指示位置が下側方向（データの蓄積方向）に移動する。そして、ポインタＡＴＸＰ１はリングバッファ方式で管理されている。従って、図１４（Ｂ）に示すように、ポインタＡＴＸＰ１が記憶領域の下側の境界ＢＤ２に達すると、ＡＴＸＰ１は記憶領域の上側の境界ＢＤ１に戻る（リングする）。
【０１２２】
そして、ＡＴＸＰ１＝ＬＴＸＰ２と判断された場合（図１０のステップＳ３４）には、図１４（Ｃ）に示すように、パケットバッファ４０の記憶領域の全てにデータが蓄積されたことになる。なお、図１４（Ａ）〜（Ｅ）において、斜線で示す部分が蓄積データを表している。
【０１２３】
すると本実施形態では、図１４（Ｄ）に示すように、ＬＴＸＰ２のポインタレジスタに、ＬＴＸＰ２と同じ値が再度書き込まれる（図１０のステップＳ３５）。これにより、ポインタＬＴＸＰ２がダミー更新され、記憶領域の全ての蓄積データが読み出されたのと同様の結果になる。そして、その後、図１４（Ｅ）に示すようにポインタＡＴＸＰ１が更新され、擬似的な読み出しが行われた記憶領域にＢＵＳ２からの転送データが書き込まれる。そして、ＤＭＡ転送が完了するまで（図１０のステップＳ３３）、図１４（Ａ）〜（Ｅ）のポインタ制御が繰り返され、ＢＵＳ２との間でのダミーデータの転送処理が行われるようになる。
【０１２４】
以上のように本実施形態では、ＢＵＳ２からの転送データが書き込まれる毎に更新されるＡＴＸＰ１（第１のポインタ）により、ＬＴＸＰ２（第２のポインタ）が追い越されないように、ＬＴＸＰ２をダミー更新することで、ダミーデータの転送制御の実現に成功している。
【０１２５】
図１５（Ａ）〜（Ｅ）は、パーソナルコンピュータ２がストレージデバイス１００にデータをライトする場合（データ転送制御システム１０のデータ受信時）における、パケットバッファ４０のポインタ制御について説明するための図である。
【０１２６】
図１５（Ａ）〜（Ｅ）において、ポインタＡＲＸＰ３（第３のポインタ）は、ＢＵＳ２への転送データをパケットバッファ４０から読み出すためのポインタであり、ＢＵＳ２への転送データが読み出される毎に更新される。また、ポインタＬＲＸＰ４（第４のポインタ）は、ＢＵＳ１からの転送データをパケットバッファ４０に書き込むためのポインタであり、ＢＵＳ１からの転送データが書き込まれる毎に更新される。これらのポインタの更新は、ポインタ管理部３９により行われる。
【０１２７】
図１５（Ａ）に示すように、ＢＵＳ２への転送データがパケットバッファ４０から読み出される毎に、ポインタＡＲＸＰ３が更新され、その指示位置が下側方向に移動する。そして、ポインタＡＲＸＰ３はリングバッファ方式で管理されている。従って、図１５（Ｂ）に示すように、ポインタＡＲＸＰ３が下側の境界ＢＤ２に達すると上側の境界ＢＤ１に戻る。
【０１２８】
そして、ＡＲＸＰ３＝ＬＲＸＰ４と判断された場合（図１０のステップＳ３７）には、図１５（Ｃ）に示すように、パケットバッファ４０の記憶領域の全てのデータが読み出されたことになる。
【０１２９】
すると本実施形態では、図１５（Ｄ）に示すように、ＬＲＸＰ４のポインタレジスタに、ＬＲＸＰ４と同じ値が再度書き込まれる（図１０のステップＳ３８）。これにより、ポインタＬＲＸＰ４がダミー更新され、記憶領域の全てにデータが書き込まれたのと同様の結果になる。そして、図１５（Ｅ）に示すようにポインタＡＲＸＰ３が更新され、擬似的な書き込みが行われた記憶領域からＢＵＳ２への転送データが読み出される。そして、ＤＭＡ転送が完了するまで（図１０のステップＳ３６）、図１５（Ａ）〜（Ｅ）のポインタ制御が繰り返され、ＢＵＳ２との間でのダミーデータの転送処理が行われるようになる。
【０１３０】
このように本実施形態では、ＢＵＳ２への転送データが読み出される毎に更新されるＡＲＸＰ３（第３のポインタ）により、ＬＲＸＰ４（第４のポインタ）が追い越されないように、ＬＲＸＰ４をダミー更新することで、ダミーデータの転送制御の実現に成功している。
【０１３１】
以上のように本実施形態では、ＤＭＡ転送が完了するまで、ＢＵＳ２を介してダミーデータをストレージデバイス１００との間で擬似的に転送し、ＤＭＡ転送が完了した後に、コマンドＣＭＤ１をアボートしている。そして、パーソナルコンピュータ２側の転送データの読み出しや書き込みは、図１４（Ｄ）、図１５（Ｄ）に示すように、ポインタＬＴＸＰ２、ＬＲＸＰ４のダミー更新より擬似的に行われる。従って、コマンドＣＭＤ１をアボートするまでＤＭＡ転送を継続することによる悪影響が、パーソナルコンピュータ２の処理に及ぶのを防止できる。そして、バスリセット後にパーソナルコンピュータ２が新たに送ってきたＯＲＢ２（ＣＭＤ２）の処理を、ＣＭＤ１がアボートされた後に適正に実行することが可能になる。
【０１３２】
なお、ポインタＬＴＸＰ２、ＬＲＸＰ４のダミー更新の手法は、図１４（Ａ）〜図１５（Ｄ）に示す手法に限定されず、少なくともポインタＡＴＸＰ１、ＡＲＸＰ３に追い越されないように、ＬＴＸＰ２、ＬＲＸＰ４を制御すればよい。また、ダミーデータの転送処理を、図１４（Ａ）〜図１５（Ｄ）に示すようなポインタ制御ではなく、ダミーデータ転送用の専用のハードウェア回路を設けて実現してもよい。
【０１３３】
５．ＡＴＡ／ＡＴＡＰＩのインターフェース回路
図１６に、ＡＴＡ／ＡＴＡＰＩのインターフェース回路３０の構成例を示す。なお、インターフェース回路３０は図１６の全ての回路ブロックを備える必要はなく、その一部を省略してもよい。
【０１３４】
ＦＩＦＯ３１は、データ転送の転送レートの差を調整（緩衝）するためのバッファである。ＤＭＡコントローラ３２は、ＦＩＦＯ３１やインターフェースコア回路３４の制御（ＲＥＱ／ＡＣＫ制御）等を行う回路である。
【０１３５】
インターフェースコア回路３４は、ＤＭＡの制御等を行う回路である。インターフェースコア回路３４が含むカウンタ３５は、ＡＴＡ（ＩＤＥ）／ＡＴＡＰＩ用のリセットカウンタである。インターフェースコア回路３４が含むＵＤＭＡ回路３６は、ＡＴＡ／ＡＴＡＰＩのＵｌｔｒａＤＭＡ転送を制御するための回路であり、ＵｌｔｒａＤＭＡ用のＦＩＦＯ３７、ＵｌｔｒａＤＭＡ用のＣＲＣ演算回路３８を含む。
【０１３６】
レジスタ３３は、ＤＭＡ転送の開始等を制御するためのレジスタであり、このレジスタ３３は、ファームウェア５０（ＣＰＵ４２）によりアクセス可能になっている。
【０１３７】
ＣＳ［１：０］は、ＡＴＡの各レジスタにアクセスするために使用するチップセレクト信号である。ＤＡ［２：０］は、データ又はデータポートにアクセスするためのアドレス信号である。
【０１３８】
ＤＭＡＲＱ、ＤＭＡＣＫは、ＤＭＡ転送に使用される信号である。データ転送の準備が整った時にストレージデバイス１００（デイバイス）側がＤＭＡＲＱをアクティブ（アサート）にし、これに応答して、データ転送制御システム１０（ホスト）側がＤＭＡ転送開始時にＤＭＡＣＫをアクティブにする。
【０１３９】
ＤＩＯＷ（ＳＴＯＰ）は、レジスタ又はデータポートの書き込み時に使用するライト信号である。なお、ＵｒｔｒａＤＭＡ転送中はＳＴＯＰ信号として機能する。ＤＩＯＲ（ＨＤＭＡＲＤＹ、ＨＳＴＲＯＢＥ）は、レジスタ又はデータポートの読み出し時に使用するリード信号である。なお、ＵｒｔｒａＤＭＡ転送中はＨＤＭＡＲＤＹ、ＨＳＴＲＯＢＥ信号として機能する。
【０１４０】
ＩＯＲＤＹ（ＤＤＭＡＲＤＹ、ＤＳＴＲＯＢＥ）は、ストレージデバイス１００のデータ転送の準備が整っていない時のウェイト信号等に使用される。なお、ＵｒｔｒａＤＭＡ転送中はＤＤＭＡＲＤＹ、ＤＳＴＲＯＢＥ信号として機能する。
【０１４１】
図１７（Ａ）〜図１９（Ｂ）に、以上のＡＴＡ用の信号の波形例を示す。なお、これらの図において「＃」は負論理（Ｌレベルがアクティブ）の信号であることを表す。
【０１４２】
図１７（Ａ）、（Ｂ）は、ＰＩＯ（Ｐａｒａｌｌｅｌ　Ｉ／Ｏ）リード、ＰＩＯライト時の信号波形例である。ＡＴＡのステータスレジスタのリードは図１７（Ａ）のＰＩＯリードにより行い、制御レジスタへのライトは図１７（Ｂ）のＰＩＯライトにより行う。例えば、ストレージデバイス１００に発行したコマンドをアボートするためのソフトウェアリセットは、図１７（Ｂ）のＰＩＯライトにより、インターフェース回路１０２のレジスタのＳＲＳＴビットに「１」をセットすればよい。
【０１４３】
図１８（Ａ）、（Ｂ）は、ＤＭＡリード、ＤＭＡライト時の信号波形例である。データ転送の準備ができると、ストレージデバイス１００（インターフェース回路１０２）が、ＤＭＡＲＱをアクティブ（Ｈレベル）にする。そして、それを受けて、データ転送制御システム１０（インターフェース回路３０）が、ＤＭＡＣＫをアクティブ（Ｌレベル）にして、ＤＭＡ転送を開始する。その後、ＤＩＯＲ（リード時）又はＤＩＯＷ（ライト時）を使用して、データＤＤ［１５：０］のＤＭＡ転送を行う。
【０１４４】
図１９（Ａ）、（Ｂ）は、ＵｌｔｒａＤＭＡリード、ＵｌｔｒａＤＭＡライト時の信号波形例である。データ転送の準備ができると、ストレージデバイス１００が、ＤＭＡＲＱをアクティブにする。そして、それを受けて、データ転送制御システム１０が、ＤＭＡＣＫをアクティブにして、ＤＭＡ転送を開始する。その後、ＤＩＯＷ、ＤＩＯＲ、ＩＯＲＤＹを使用して、データＤＤ［１５：０］のＵｌｔｒａＤＭＡ転送を行う。
【０１４５】
なお、本発明は本実施形態に限定されず、本発明の要旨の範囲内で種々の変形実施が可能である。
【０１４６】
例えば、明細書中の記載において広義な用語（第１のインターフェース規格、第２のインターフェース規格、第１のインターフェース規格の上位の第１のプロトコル、第１のインターフェース規格の上位の第２のプロトコル、コマンドパケット、電子機器、ストレージデバイス、デバイス、プロセッサ等）として引用された用語（ＩＥＥＥ１３９４、ＡＴＡ／ＡＴＡＰＩ、ＳＢＰ−２、ＩＰｏｖｅｒ１３９４、ＯＲＢ、パーソナルコンピュータ・ストレージデバイス、ハードディスクドライブ・光ディスクドライブ、ストレージデバイス、ＣＰＵ等）は、明細書中の他の記載においても広義な用語に置き換えることができる。
【０１４７】
また、本発明のうち従属請求項に係る発明においては、従属先の請求項の構成要件の一部を省略する構成とすることもできる。また、本発明の１の独立請求項に係る発明の要部を、他の独立請求項に従属させることもできる。
【０１４８】
また、本発明のデータ転送制御システム、電子機器の構成は、図８に示す構成に限定されず、種々の変形実施が可能である。例えば、これらの各図の各回路ブロック、機能ブロックの一部を省略したり、その接続関係を変更してもよい。また、第２のバス（ＢＵＳ２）は、ストレージデバイスとは異なるデバイスに接続されていてもよい。また、物理層回路とリンク層回路とパケットバッファの接続構成も図８に示す接続構成に限定されない。
【０１４９】
また本実施形態では、コマンド処理部、コマンドアボート部、コマンド比較部、転送再開部等の機能をファームウェア（プログラム）により実現する場合について説明したが、これらを機能の一部又は全部をハードウェア回路により実現してもよい。
【０１５０】
また、本発明はＩＥＥＥ１３９４におけるバスリセットに特に有用だが、これ以外にも、少なくともノードのトポロジー情報をクリアするようなリセットであれば適用できる。また本発明は、バスリセット発生時以外におけるコマンドアボート処理にも適用可能である。
【０１５１】
また本発明は種々の電子機器（ハードディスクドライブ、光ディスクドライブ、光磁気ディスクドライブ、ＰＤＡ、拡張機器、オーディオ機器、デジタルビデオカメラ、携帯電話、プリンタ、スキャナ、ＴＶ、ＶＴＲ、電話機、表示デバイス、プロジェクタ、パーソナルコンピュータ或いは電子手帳等）に適用できる。
【０１５２】
また、本実施形態では、ＩＥＥＥ１３９４、ＳＢＰ−２、ＡＴＡ／ＡＴＡＰＩ規格でのデータ転送に本発明を適用した場合について説明した。しかしながら本発明は、例えばＩＥＥＥ１３９４（Ｐ１３９４ａ）、ＳＢＰ−２（ＳＢＰ）、ＡＴＡ／ＡＴＡＰＩと同様の思想に基づく規格や、ＩＥＥＥ１３９４、ＳＢＰ−２、ＡＴＡ／ＡＴＡＰＩを発展させた規格におけるデータ転送にも適用できる。
【図面の簡単な説明】
【図１】ＩＥＥＥ１３９４、ＳＢＰ−２の層構造について説明するための図である。
【図２】ＳＢＰ−２の処理の概略について説明するための図である。
【図３】ＳＢＰ−２においてデータをイニシエータからターゲットに転送する場合のコマンド処理について説明するための図である。
【図４】ＳＢＰ−２においてデータをターゲットからイニシエータに転送する場合のコマンド処理について説明するための図である。
【図５】図５（Ａ）、（Ｂ）、（Ｃ）は、ページテーブルについて説明するための図である。
【図６】バスリセットによりクリアされるノードのトポロジ情報について説明するための図である。
【図７】図７（Ａ）、（Ｂ）は、データ転送中にバスリセットが発生した場合に生じる問題について説明するための図である。
【図８】本実施形態のデータ転送制御システム、電子機器の構成例を示す図である。
【図９】本実施形態の詳細な処理例について示すフローチャートである。
【図１０】本実施形態の詳細な処理例について示すフローチャートである。
【図１１】データ転送の再開処理について説明するための図である。
【図１２】ＯＲＢの内容比較について説明するための図である。
【図１３】コマンドのアボート処理について説明するための図である。
【図１４】図１４（Ａ）、（Ｂ）、（Ｃ）、（Ｄ）、（Ｅ）は、ダミーデータの転送処理を実現するポインタ制御手法（リード時）について説明するための図である。
【図１５】図１５（Ａ）、（Ｂ）、（Ｃ）、（Ｄ）、（Ｅ）は、ダミーデータの転送処理を実現するポインタ制御手法（ライト時）について説明するための図である。
【図１６】ＡＴＡ／ＡＴＡＰＩのインターフェース回路の構成例を示す図である。
【図１７】図１７（Ａ）、（Ｂ）は、ＰＩＯリード、ＰＩＯライト時における信号波形例である。
【図１８】図１８（Ａ）、（Ｂ）は、ＤＭＡリード、ＤＭＡライト時における信号波形例である。
【図１９】図１９（Ａ）、（Ｂ）は、ＵｌｔｒａＤＭＡリード、ＵｌｔｒａＤＭＡライト時における信号波形例である。
【符号の説明】
ＢＵＳ１　第１のバス（ＩＥＥＥ１３９４）
ＢＵＳ２　第２のバス（ＡＴＡ／ＡＴＡＰＩ）
２　　　パーソナルコンピュータ（ホストコンピュータ、イニシエータ）
８　　　電子機器（ターゲット）
１０　　データ転送制御システム
１４　　物理層回路
２０　　リンク層回路
２２　　ＳＢＰ−２回路
３０　　インターフェース回路
３２　　ＤＭＡコントローラ
３８　　バッファ管理回路
４０　　パケットバッファ
４２　　ＣＰＵ（プロセッサ）
４４　　フラッシュメモリ（ＥＥＰＲＯＭ）
５０　　ファームウェア
５２　　コミュニケーション部
６０　　マネージメント部
７０　　フェッチ部
８０　　ストレージタスク部
８２　　コマンド処理部
８４　　コマンド比較部
８６　　コマンドアボート部
８８　　転送再開部
９０　　ダウンローダ部
１００　ストレージデバイス
１０２　インターフェース回路
１０４　アクセス制御回路
１０６　ストレージ
【図１】
2004070570.tif 000003
【図２】
2004070570.tif 000004
【図３】
2004070570.tif 000005
【図４】
2004070570.tif 000006
【図５】
2004070570.tif 000007
【図６】
2004070570.tif 000008
【図７】
2004070570.tif 000009
【図８】
2004070570.tif 000010
【図９】
2004070570.tif 000011
【図１０】
2004070570.tif 000012
【図１１】
2004070570.tif 000013
【図１２】
2004070570.tif 000014
【図１３】
2004070570.tif 000015
【図１４】
2004070570.tif 000016
【図１５】
2004070570.tif 000017
【図１６】
2004070570.tif 000018
【図１７】
2004070570.tif 000019
【図１８】
2004070570.tif 000020
【図１９】
2004070570.tif 000021