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