JP2004070570A - データ転送制御システム、電子機器、プログラム及びデータ転送制御方法 - Google Patents

データ転送制御システム、電子機器、プログラム及びデータ転送制御方法 Download PDF

Info

Publication number
JP2004070570A
JP2004070570A JP2002227303A JP2002227303A JP2004070570A JP 2004070570 A JP2004070570 A JP 2004070570A JP 2002227303 A JP2002227303 A JP 2002227303A JP 2002227303 A JP2002227303 A JP 2002227303A JP 2004070570 A JP2004070570 A JP 2004070570A
Authority
JP
Japan
Prior art keywords
command
bus
data
packet
transfer
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.)
Withdrawn
Application number
JP2002227303A
Other languages
English (en)
Inventor
Shinichiro Fujita
藤田 信一郎
Akemi Ito
伊藤 朱美
Hiroyuki Kanai
金井 裕之
Koji Nakao
中尾 浩二
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.)
Seiko Epson Corp
Original Assignee
Seiko Epson 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 Seiko Epson Corp filed Critical Seiko Epson Corp
Priority to JP2002227303A priority Critical patent/JP2004070570A/ja
Priority to US10/625,748 priority patent/US7165124B2/en
Priority to EP03017731A priority patent/EP1389761B1/en
Priority to DE60303162T priority patent/DE60303162T2/de
Priority to AT03017731T priority patent/ATE315807T1/de
Priority to CN03149795.0A priority patent/CN1275164C/zh
Publication of JP2004070570A publication Critical patent/JP2004070570A/ja
Withdrawn legal-status Critical Current

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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Systems (AREA)
  • Bus Control (AREA)
  • Communication Control (AREA)

Abstract

【課題】デバイスに対して発行したコマンドを適正にアボートできるデータ転送制御システム、電子機器、プログラム及びデータ転送制御方法の提供。
【解決手段】BUS1(IEEE1394)を介して転送されてきたコマンドパケットORBを受け、ORBにより指示されるコマンドを、BUS2(ATA(IDE)/ATAPI)に接続されるデバイスに発行し、DMA転送の開始を指示する。ORBに基づき発行したコマンドCMD1をDMA転送の完了後にアボートする。バスリセット前のORB1とバスリセット後のORB2の内容を比較し、内容が異なる場合にはORB1に基づきデバイスに発行したコマンドCMD1をDMA転送の完了後にアボートする。DMA転送が完了するまで、BUS2のデバイスとの間でダミーデータを転送する。ポインタをダミー更新することでダミーデータの転送制御を行う。
【選択図】    図13

Description

【0001】
【発明の属する技術分野】
本発明は、データ転送制御システム、電子機器、プログラム及びデータ転送制御方法に関する。
【0002】
【背景技術及び発明が解決しようとする課題】
近年、IEEE1394と呼ばれるインターフェース規格が脚光を浴びている。このIEEE1394のバスには、ハードディスクドライブ、光ディスクドライブ、プリンタ、スキャナなどのコンピュータの周辺機器のみならず、ビデオカメラ、VTR、TVなどの家庭用電化製品も接続できる。このため、電子機器のデジタル化を飛躍的に促進できるものとして期待されている。
【0003】
さて、このIEEE1394においては、バスに電子機器が新たに接続されたり、バスから電子機器が取り外されたりして、バスに接続されるノードが増減すると、いわゆるバスリセットが発生する。そしてバスリセットが発生するとノードのトポロジ情報がクリアされ、その後、トポロジ情報が自動的に再設定される。
【0004】
このようにIEEE1394では、バスリセット後にトポロジ情報が自動的に再設定されるため、いわゆるホット状態でのケーブルの抜き差し(ホットプラグ)が可能となる。このため、一般ユーザは、VTRなどの通常の家庭用電化製品と同じように、電子機器へのケーブルの抜き差を自由にできるようになり、いわゆるホームネットワークシステムの普及に役立つことができる。
【0005】
しかしながら、このバスリセットの発生が要因となって種々の問題が生じる場合がある。例えばハードディスクドライブ(広義にはストレージデバイス。更に広義にはデバイス)に対してコマンドを発行してDMA(Direct Memory Access)転送を開始した後、このDMA転送中にバスリセットが発生すると、ハードディスクドライブがハングアップするなどの問題が生じることが判明した。
【0006】
なお、バスリセット発生時の種々の問題を解決する従来技術として例えば特開平2001−177537号に開示される技術が知られている。
【0007】
本発明は、以上のような技術的課題に鑑みてなされたものであり、その目的とするところは、デバイスに対して発行したコマンドを適正にアボートできるデータ転送制御システム、電子機器、プログラム及びデータ転送制御方法を提供することにある。
【0008】
【課題を解決するための手段】
本発明は、バスを介してデータ転送を行うためのデータ転送制御システムであって、第1のバスを介して転送されてきたコマンドパケットを受け、コマンドパケットにより指示されるコマンドを、第2のバスに接続されるデバイスに対して発行し、第2のバスを介したDMA転送の開始を指示するコマンド処理部と、コマンドパケットに基づき第2のバスに接続されるデバイスに対して発行したコマンドを、コマンドパケットに基づき開始したDMA転送の完了後にアボートするコマンドアボート部とを含むデータ転送制御システムに関係する。
【0009】
本発明では、第1のバスから転送されてきたコマンドパケットにより指示されるコマンドが、第2のバスに接続されるデバイスに対して発行され、DMA転送の開始が指示される。そして、第2のバスに接続されるデバイスに発行したコマンドが、DMA転送の完了後にアボート(中止、キャンセル)される。これにより、DMA転送が不正に終了することで第2のバスに接続されるデバイスがハングアップする事態等を防止でき、デバイスに発行したコマンドを適正にアボートできるようになる。なお、例えば、第1のバスは、第1のインターフェース規格に準拠したデータ転送を行うためのバスであり、第2のバスは、第2のインターフェース規格に準拠したデータ転送を行うためのバスである。
【0010】
また本発明では、第1のコマンドパケットの処理中にノードのトポロジ情報をクリアするバスリセットが発生した場合に、バスリセット発生前に第1のバスを介して転送されてきた第1のコマンドパケットの内容と、バスリセット発生後に第1のバスを介して転送されてきた第2のコマンドパケットの内容とを比較するコマンド比較部を含み、前記コマンドアボート部が、第1のコマンドパケットの内容と第2のコマンドパケットの内容が異なると判断された場合に、第1のコマンドパケットに基づき第2のバスに接続されるデバイスに対して発行したコマンドを、第1のコマンドパケットに基づき開始したDMA転送の完了後にアボートしてもよい。
【0011】
なお、第1のコマンドパケットの内容と第2のコマンドパケットの内容が同じであると判断された場合には、バスリセットの発生時点のデータ転送の続きからデータ転送を再開できる。
【0012】
また本発明では、第1のコマンドパケットの処理中にノードのトポロジ情報をクリアするバスリセットが発生した場合に、第1のコマンドパケットのコマンドを第2のバスに接続されるデバイスに発行している場合には、第1のコマンドパケットのコマンドのアボート処理を行い、第1のコマンドパケットのコマンドを第2のバスに接続されるデバイスに発行していない場合には、第1のコマンドパケットのコマンドのアボート処理を行うことなく、第2のコマンドパケットの処理に移行するようにしてもよい。
【0013】
また本発明では、前記コマンドアボート部が、DMA転送が完了するまで、第2のバスに接続されるデバイスとの間でダミーデータを転送する制御を行ってもよい。
【0014】
この場合のダミーデータの転送制御は、転送データを一時的に記憶するパケットバッファのポインタをダミー更新することで実現してもよいし、ダミーデータ転送用のハードウェアを設けて実現してもよい。また、ダミーデータは、例えば、第2のバスを介して転送される一方で、第1のバスを介して転送されないデータである。
【0015】
また本発明では、前記コマンドアボート部が、コマンドをアボートするか否かの判断時においてDMA転送が動作中でなかった場合には、ダミーデータの転送制御を行うことなくコマンドをアボートしてもよい。
【0016】
このようにすることで、ダミーデータの転送制御の処理を省略でき、処理の効率化を図れる。
【0017】
また本発明では、転送データを一時的に記憶するパケットバッファのポインタをリングバッファ方式で管理し、第2のバスからの転送データがパケットバッファに書き込まれる毎に第1のポインタを更新し、第1のバスへの転送データがパケットバッファから読み出される毎に第2のポインタを更新するポインタ管理部を含み、前記コマンドアボート部が、第2のバスからの転送データがパケットバッファに書き込まれる毎に更新される第1のポインタにより、第2のポインタが追い越されないように第2のポインタをダミー更新することで、ダミーデータの転送制御を行ってもよい。
【0018】
また本発明では、転送データを一時的に記憶するパケットバッファのポインタをリングバッファ方式で管理し、第2のバスへの転送データがパケットバッファから読み出される毎に第3のポインタを更新し、第1のバスからの転送データがパケットバッファに書き込まれる毎に第4のポインタを更新するポインタ管理部を含み、前記コマンドアボート部が、第2のバスへの転送データがパケットバッファから読み出される毎に更新される第3のポインタにより、第4のポインタが追い越されないように第4のポインタをダミー更新することで、ダミーデータの転送制御を行ってもよい。
【0019】
また本発明では、第1のバスが、IEEE1394規格によりデータ転送が行われるバスであり、第2のバスが、ATA/ATAPI規格によりデータ転送が行われるバスであってもよい。
【0020】
また本発明は、上記のいずれかのデータ転送制御システムと、第2のバスに接続されるデバイスとを含む電子機器に関係する。
【0021】
また本発明は、第1のバスを介して転送されてきたコマンドパケットを受け、コマンドパケットにより指示されるコマンドを、第2のバスに接続されるデバイスに対して発行し、第2のバスを介したDMA転送の開始を指示するコマンド処理部と、コマンドパケットに基づき第2のバスに接続されるデバイスに対して発行したコマンドを、コマンドパケットに基づき開始したDMA転送の完了後にアボートするコマンドアボート部としてデータ転送制御システムを機能させるプログラムに関係する。
【0022】
また本発明は、バスを介してデータ転送を行うためのデータ転送制御方法であって、コマンドパケットにより指示されるコマンドを、第2のバスに接続されるデバイスに対して発行し、第2のバスを介したDMA転送の開始を指示し、コマンドパケットに基づき第2のバスに接続されるデバイスに対して発行したコマンドを、コマンドパケットに基づき開始したDMA転送の完了後にアボートするデータ転送制御方法に関係する。
【0023】
【発明の実施の形態】
以下、本発明の実施形態について詳細に説明する。
【0024】
なお、以下に説明する本実施形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また本実施形態で説明される構成の全てが本発明の解決手段として必須であるとは限らない。
【0025】
1.IEEE1394、SBP−2
1.1 層構造
IEEE1394のトランザクション層の一部の機能を含む上位のプロトコルとして、SBP−2(Serial Bus Protocol−2)と呼ばれるプロトコルが提案されている。このSBP−2(広義にはSBP)は、SCSI(MMC−2)のコマンドセットをIEEE1394のプロトコル上で利用可能にするために提案されたものである。このSBP−2を用いれば、既存のSCSI規格対応の電子機器で使用されていたコマンドセットに最小限の変更を加えて、IEEE1394規格の電子機器に使用できるようになる。従って、電子機器の設計や開発を容易化できる。
【0026】
図1に、IEEE1394、SBP−2の層構造(プロトコル・スタック)を簡略化して示す。
【0027】
IEEE1394(IEEE1394−1995、P1394a、P1394b等)のプロトコルは、トランザクション層、リンク層、物理層により構成される。
【0028】
トランザクション層は、上位層にトランザクション単位のインターフェース(サービス)を提供し、下層のリンク層が提供するインターフェースを通して、リードトランザクション、ライトトランザクション、ロックトランザクション等のトランザクションを実施する。
【0029】
ここで、リードトランザクションでは、応答ノードから要求ノードにデータが転送される。一方、ライトトランザクションでは、要求ノードから応答ノードにデータが転送される。またロックトランザクションでは、要求ノードから応答ノードにデータが転送され、応答ノードがそのデータに処理を施して要求ノードに返信する。
【0030】
リンク層は、アドレッシング、データチェック、パケット送受信のためのデータフレーミング、アイソクロナス転送のためのサイクル制御などを提供する。
【0031】
物理層は、リンク層により使用されるロジカルシンボルの電気信号への変換や、バスの調停や、バスの物理的インターフェースを提供する。
【0032】
SBP−2層は、図1に示すように、IEEE1394(広義には第1のインターフェース規格)のトランザクション層の一部の機能を含む上位のプロトコルを提供する。
【0033】
1.2 SBP−2の処理
図2に、SBP−2(広義には第1のインターフェース規格の上位の第1のプロトコル)の処理の全体についてのフローチャートを示す。
【0034】
図2に示すように、SBP−2では、まず、接続機器の確認を行うためのコンフィギュレーションROMのリード処理が行われる(ステップT1)。
【0035】
次に、イニシエータ(例えばパーソナルコンピュータ)が、ターゲット(例えばストレージデバイス)に対するアクセス権(リクエスト開始の許可。バスの使用権)を獲得するためのログイン処理が行われる(ステップT2)。具体的には、イニシエータにより作成されたログインORB(Operation Request Block)を用いてログイン処理が行われる。
【0036】
次に、フェッチエージェントの初期化が行われる(ステップT3)。そして、コマンドブロックORB(ノーマルコマンドORB)を用いてコマンド処理が行われ(ステップT4)、最後に、ログアウトORBを用いてログアウト処理が行われる(ステップT5)。
【0037】
ここで、ステップT4のコマンド処理においては、図3のA1に示すように、イニシエータがライト要求パケットを転送して(ライト要求トランザクションを発行して)、ターゲットのドアベルレジスタをリングする。すると、A2に示すように、ターゲットがリード要求パケットを転送し、イニシエータが対応するリード応答パケットを返す。これにより、イニシエータが作成したORB(コマンドブロックORB)が、ターゲットのデータバッファ(パケットバッファ)にフェッチされる。そして、ターゲットは、フェッチされたORBに含まれるコマンドを解析する。
【0038】
そして、ORBに含まれるコマンドがSCSIのライトコマンドであった場合には、A3に示すように、ターゲットがリード要求パケットをイニシエータに転送し、イニシエータが対応するリード応答パケットを返す。これにより、イニシエータのデータバッファに格納されているデータがターゲットに転送される。そして、例えばターゲットがストレージデバイスであった場合には、転送されたデータがストレージデバイスに書き込まれる。
【0039】
一方、ORBに含まれるコマンドがSCSIのリードコマンドであった場合には、図4のB1に示すように、ターゲットは、一連のライト要求パケットをイニシエータに転送する。これにより、例えばターゲットがストレージデバイスであった場合には、ストレージデバイスから読み出されたデータが、イニシエータのデータバッファに転送されることになる。
【0040】
このSBP−2によれば、ターゲットは、自身が都合の良いときに要求パケットを転送して(トランザクションを発行して)、データを送受信できる。従って、イニシエータとターゲットが同期して動く必要がなくなるため、データ転送効率を高めることができる。
【0041】
なお、IEEE1394の上位プロトコルとしては、ストレージデバイスやプリンタのデータの転送に最適なSBP−2以外にも、映像や音声のデータの転送に最適なAV/Cコマンドが提案されている。また、IEEE1394バス上で、インターネットプロトコル(IP)のパケットを転送するものとしてIPover1394と呼ばれるプロトコルも提案されている。
【0042】
なお、ターゲット、イニシエータ間でデータ転送を行う場合、図5(A)のようにイニシエータ(パーソナルコンピュータ、相手ノード)のデータバッファにページテーブルが存在する場合と、存在しない場合がある。
【0043】
そして、ページテーブルが存在する場合には、図5(B)に示すように、イニシエータが作成したORBの中には、そのページテーブルのアドレスやエレメント数が含まれる。そして、転送データのアドレス(読み出しアドレス、書き込みアドレス)は、このページテーブルを用いて間接アドレス指定される。
【0044】
一方、ページテーブルが存在しない場合には、図5(C)に示すように、ORBの中にアドレスとデータ長が含まれ、転送データのアドレスが直接アドレス指定される。
【0045】
1.3 バスリセット
IEEE1394では、電源が投入されたり、途中でデバイスの抜き差しが発生すると、バスリセットが発生(発行)する。即ち、各ノードは、ポートの電圧変化を監視している。そして、バスに新たなノードが接続されるなどしてポートの電圧に変化が生じると、この変化を検知したノードは、バス上の他のノードに対して、バスリセットが発生したことを知らせる。また、各ノードの物理層は、バスリセットが発生したことをリンク層に伝える。
【0046】
そして、このようにバスリセットが発生すると、図6に示すようなトポロジの情報(ノードID等)がクリアされる。そして、その後、トポロジー情報が自動的に再設定される。即ち、バスリセット後、ツリー識別、自己識別が行われる。その後、アイソクロナスリソースマネージャ、サイクルマスタ、バスマネージャ等の管理ノードが決定される。そして、通常のパケット転送が再開される。
【0047】
このようにIEEE1394では、バスリセット後にトポロジ情報が自動的に再設定されるため、電子機器のケーブルを自由に抜き差しできるようになり、いわゆるホットプラグを実現できる。
【0048】
なお、トランザクションの途中でバスリセットが発生した場合には、そのトランザクションはキャンセルされる。そして、キャンセルされたトランザクションを発行した要求ノードは、トポロジー情報が再設定された後に、要求パケットを再度転送する。また、応答ノードは、バスリセットによりキャンセルされたトランザクションの応答パケットを要求ノードに返送してはならない。
【0049】
1.4 バスリセットによるハングアップ
さて、上述したバスリセットがデータ転送中に発生すると、以下のような問題が生じることが判明した。
【0050】
例えば図7(A)に示すように、C1に示す位置(アドレス)までデータを転送したところで、バスリセットが発生したとする。この場合には、バスリセット発生時点で処理中であったトランザクションは全てキャンセルされる。従って、バスリセット発生前のORB(以下、適宜、ORB1と呼ぶ)によりデータの転送を要求していたパーソナルコンピュータ等のイニシエータは、図7(B)に示すように、バスリセット発生後のORB(以下、適宜、ORB2と呼ぶ)を再度作成して、データの転送を最初からやり直すようにストレージデバイス等のターゲットに指示する。このため、図7(B)のC2に示す位置からデータ転送が再開されてしまい、データが二重に転送される問題が生じる。
【0051】
このような問題を解決するために特開平2001−177537号の従来技術では、バスリセット前のORB1とバスリセット後のORB2の内容を比較し、ORB1とORB2が同一内容ならば図7(B)のC3に示す位置からデータ転送を再開する手法を採用している。
【0052】
しかしながら、パーソナルコンピュータのOS(オペレーティングシステム)の作りによっては、バスリセット前のORB1とは内容が異なるORB2が、バスリセット後にパーソナルコンピュータから転送されてくる場合がある。
【0053】
例えば、ORB1が図3に示すようなSCSI(MMC−2)のライトコマンドを含んでおり、このライトコマンドに基づくデータ転送中にバスリセットが発生したとする。この場合に、バスリセット後に、パーソナルコンピュータのOSが、FAT(ファイルアロケーションテーブル)の内容を調べるために、FATのリードコマンドを含むORB2を送ってくる場合がある。
【0054】
この場合には、バスリセット前のORB1ではデータのライトコマンドが指示され、バスリセット後のORB2ではFATのリードコマンドが指示されており、ORB1とORB2の内容が異なる。従って、後段のストレージデバイスに対して既に発行したORB1のライトコマンドを、アボートする必要がある。
【0055】
ところが、バスリセット前のORB1のライトコマンドに基づいて既にDMA転送が開始されている場合に、このライトコマンドをアボートすると、後段のストレージデバイスがハングアップしてしまう問題が生じることが判明した。
【0056】
2.全体構成
以上のような問題を解決できるデータ転送制御システム及びこれを含む電子機器の全体構成例を図8に示す。なお、以下では、イニシエータとの間でデータ転送を行うターゲットがストレージデバイス(ハードディスクドライブ、CDドライブ、DVDドライブ等)である場合について例にとり説明するが、本発明はこれに限定されない。
【0057】
データバッファ4を有するパーソナルコンピュータ(ホストコンピュータ)2と電子機器8は、IEEE1394に準拠したBUS1(第1のバス)により接続される。そして、電子機器8は、データ転送制御システム10とストレージデバイス100(広義にはデバイス)を有する。
【0058】
なお、電子機器8には、図示しないシステムCPU、システムメモリ(ROM、RAM)、操作部、或いは信号処理デバイス等を含めることができる。
【0059】
データ転送制御システム10は、物理層(PHY)回路14、リンク層回路20、SBP−2回路22、インターフェース回路30、パケット管理回路38、バケットバッファ40(データバッファ)を含む。また、CPU42、フラッシュメモリ44(EEPROM)を含む。また、フラッシュメモリ44にその処理モジュール(プログラム)が記憶され、CPU42(広義にはプロセッサ)により実行されるファームウェア50を含む。なお、本実施形態のデータ転送制御システム10は、図8に示す全ての回路ブロック、機能ブロックを含む必要はなく、その一部を省略してもよい。
【0060】
物理層回路14は、図1の物理層のプロトコルをハードウェアにより実現するための回路であり、リンク層回路20により使用されるロジカルシンボルを電気信号に変換する機能を有する。
【0061】
リンク(&トランザクション)層回路20は、図1のリンク層のプロトコルやトランザクション層のプロトコルの一部をハードウェアにより実現するための回路であり、ノード間でのパケット転送のための各種サービスを提供する。
【0062】
これらの物理層回路14、リンク層回路20の機能により、IEEE1394に準拠したデータ転送を、BUS1(第1のバス)を介してパーソナルコンピュータ2(広義には電子機器)との間で行うことが可能になる。
【0063】
SBP−2回路22(転送実行回路)は、SBP−2のプロトコルの一部やトランザクション層の一部をハードウェアにより実現する回路である。このSBP−2回路22の機能により、転送データを一連のパケットに分割し、分割された一連のパケットを連続転送する処理が可能になる。
【0064】
インターフェース回路30は、ストレージデバイス100とのインターフェース処理を行う回路である。このインターフェース回路30の機能により、ATA(AT Attachment)、ATAPI(ATA Packet Interface)に準拠したデータ転送を、BUS2(第2のバス)を介してストレージデバイス100との間で行うことが可能になる。
【0065】
そして、図8のように物理層回路14、リンク層回路20、インターフェース回路30を設けることで、IEEE1394(広義には第1のインターフェース規格)とATA(IDE)/ATAPI(広義には第2のインターフェース規格)の変換ブリッジ機能をデータ転送制御システム10に持たせることが可能になる。
【0066】
インターフェース回路30が含むDMAコントローラ32は、BUS2を介してストレージデバイス100との間でDMA(Direct Memory Access)転送を行うための回路である。
【0067】
なお、BUS2に接続されるストレージデバイス100は、ATA(IDE)/ATAPIに準拠したデータ転送を行うためのインターフェース回路102と、ストレージ106へのアクセス制御(書き込み又は読み出し制御)を行うアクセス制御回路104と、ハードディスクや光ディスクなどのストレージ106を含む。
【0068】
バッファ管理回路38は、パケットバッファ40とのインターフェースを管理する回路である。バッファ管理回路38は、バッファ管理回路38の制御のためのレジスタ、パケットバッファ40へのバス接続を調停する調停回路、各種の制御信号を生成するシーケンサなどを含む。
【0069】
また、バッファ管理回路38はポインタ管理部39を含む。このポインタ管理部39は、パケットバッファ40のポインタをリングバッファ方式で管理し、書き込み用、読み込み用の複数のポインタを更新する処理を行う。
【0070】
パケットバッファ40(パケットメモリ、データバッファ)は、パケット(転送データ)を一時的に格納するためのバッファであり、SRAM、SDRAM、或いはDRAMなどのハードウェアにより構成される。なお、本実施形態では、パケットバッファ40は、ランダムアクセス可能なパケット記憶部として機能する。また、パケットバッファ40を、データ転送制御システム10に内蔵せずに、外付けにしてもよい。
【0071】
CPU42(広義にはプロセッサ)は、装置全体の制御やデータ転送の制御を行うものである。
【0072】
フラッシュメモリ44(EEPROM)は、電気的にデータの書き換えが可能な不揮発性メモリである。このフラッシュメモリ44には、ファームウェア50の処理モジュール(プログラム)が記憶される。
【0073】
ファームウェア50は、CPU42上で動作する種々の処理モジュール(処理ルーチン)を含むプログラムであり、トランザクション層等のプロトコルは、このファームウェア50と、ハードウェアであるCPU42等により実現される。
【0074】
ファームウェア50(F/W)は、コミュニケーション部52、マネージメント部60、フェッチ部70、ストレージタスク部80、ダウンローダ部90を含む。なお、ファームウェア50は、これらの全ての機能ブロックを含む必要はなく、その一部を省略してもよい。
【0075】
ここで、コミュニケーション部52は、物理層回路14、リンク層回路20などのハードウェアとの間のインターフェースとして機能する処理モジュールである。
【0076】
マネージメント部60(マネージメントエージェント)は、ログイン、リコネクト、ログアウト、リセット等の管理を行う処理モジュールである。例えばイニシエータがターゲットにログインを要求した場合には、まず、このマネージメント部60が、このログイン要求を受け付けることになる。
【0077】
フェッチ部70(フェッチエージェント)は、ORB(Operation Request Block)受信と、ステータスの発行と、ストレージタスク部80へのコマンド処理依頼を行う処理モジュールである。フェッチ部70は、単一の要求しか扱うことができないマネージメント部60とは異なり、イニシエータからの要求により自身がフェッチしたORBのリンクリストも扱うことができる。
【0078】
ストレージタスク部80は、ORBが含むコマンドの処理とDMA転送処理を実行するための処理モジュールである。
【0079】
ダウンローダ部90は、フラッシュメモリ44に記憶されるファームウェア50の処理モジュール等の更新を行うための処理モジュールである。
【0080】
ストレージタスク部80は、コマンド処理部82、コマンド比較部84、コマンドアボート部86、転送再開部88を含む。
【0081】
ここでコマンド処理部82は、BUS1(IEEE1394等の第1のインターフェース規格の第1のバス)を介して転送されてきたORB(広義にはコマンドパケット、データ転送オペレーション要求のためのコマンドパケット)についての種々の処理を行う。具体的には、BUS1からのORBを受け、ORBが含むコマンド(SCSI、MMC−2のコマンド)を、BUS2(ATA/ATAPI等の第2のインターフェース規格の第2のバス)に接続されるストレージデバイス100(広義にはデバイス)に対して発行し、BUS2を介したDMA転送(CPUを介在させないデータ転送)の開始を指示する。
【0082】
コマンド比較部84は、ORBの処理中(ORBによるデータ転送中)にバスリセット(ノードのトポロジ情報をクリアするリセット)が発生した場合に、バスリセット発生前にBUS1を介して転送されてきたORB1の内容と、バスリセット発生後にBUS1を介して転送されてきたORB2の内容を比較する。
【0083】
コマンドアボート部86は、ORBに基づきストレージデバイス100に対して発行したコマンド(SCSIのリードコマンド、ライトコマンド等)を、そのORB(コマンド)に基づき開始したDMA転送(連続したデータ転送)の完了後にアボートする。
【0084】
より具体的にはコマンドアボート部86は、バスリセット前のORB1とバスリセット後のORB2の内容が異なると判断された場合に、ORB1に基づきストレージデバイス100に対して発行したコマンドを、そのORB1(コマンド)に基づき開始したDMA転送の完了後にアボート(中止、キャンセル)する。
【0085】
この場合、コマンドアボート部86は、ORBに基づき開始したDMA転送が完了するまで、ストレージデバイス100との間でダミーデータが転送されるように制御を行う。
【0086】
即ち、バスの変換ブリッジ機能を有する本実施形態のデータ転送制御システム10では、通常は、ストレージデバイス100からBUS2を介して転送されてきたデータは、BUS1を介してパーソナルコンピュータ2に転送される。また、パーソナルコンピュータ2からBUS1を介して転送されてきたデータは、BUS2を介してストレージデバイス100に転送される。
【0087】
これに対して、ダミーデータの転送時においては、ストレージデバイス100からBUS2を介してダミーデータがデータ転送制御システム10に転送される一方で、このダミーデータはパーソナルコンピュータ2に転送されない。また、パーソナルコンピュータ2からBUS1を介してデータがデータ転送制御システム10に転送されなくても、BUS2を介してストレージデバイス100にダミーデータを転送する。
【0088】
なお、コマンドアボート部86でのアボート処理は、バスリセット後に行われるリコネクト処理が終了した後に行われる。
【0089】
転送再開部88は、バスリセット前のORB1とバスリセット後のORB2の内容が同じであると判断された場合に、バスリセット発生時点のデータ転送の続き(バスリセット発生時点で転送したデータの次のデータ)からデータ転送を再開する処理を行う。
【0090】
3.処理の詳細
次に、本実施形態の処理の詳細について図9、図10のフローチャート等を用いて説明する。
【0091】
図9は、本実施形態の全体的な処理を示すフローチャートである。
【0092】
SBP−2の処理中に、コマンドCMD1を含むORB1を受信すると(ステップS1)、バスリセットが発生したか否かを判断する(ステップS2)。そして、バスリセットが発生していない場合には、図11のD1に示すように、ストレージデバイス100(ハードディスクドライブ)に対して、ORB1に含まれるコマンドCMD1を発行する(ステップS3)。
【0093】
即ち、SBP−2では、SCSI(MMC−2)に類似したコマンド(リード、ライト、モードセンス、モードセレクト等)が使用されており、ストレージデバイス100は、これらのコマンドを用いて、リード、ライトなどの動作を行う。本実施形態のデータ転送制御システム10は、ORB1に含まれるコマンドCMD1を取り出し、このCMD1を、インターフェース回路30、BUS2(ATA/ATAPI)を介してストレージデバイス100に発行する。
【0094】
CMD1を発行した後、バスリセットが発生したか否かを判断する(ステップS4)。そして、バスリセットが発生していない場合には、BUS2を介してストレージデバイスからDMARQが来たか否かを判断する(ステップS5)。
【0095】
即ち、ATA/ATAPIに準拠するBUS2では、後述するように、DMA転送要求であるDMARQやDMARQに対するアクノリッジであるDMACKなどの信号が定義されている。そして、ストレージデバイス100のインターフェース回路102がDMARQをアクティブにした後、データ転送制御システムのインターフェース回路30がDMACKをアクティブにすると、DMA転送が開始することになる。
【0096】
DMARQが来ていない場合には、バスリセットが発生したか否かを判断する(ステップS6)。そして、バスリセットが発生していない場合には、DMARQが来たか否かを判断し、DMARQが来るまでステップS5、S6の判断を繰り返す。
【0097】
DMARQが来ると、DMACKをアクティブにする処理等を行って、DMA転送の開始を指示する(ステップS7)。そして、図11のD2、D3に示すように、BUS1(IEEE1394)、BUS2(ATA/ATAPI)を介したデータ転送が行われるようになる。
【0098】
ここで、BUS1を介したデータ転送は、物理層回路14、リンク層回路20、SBP−2回路22などにより実現される。このデータ転送により、パーソナルコンピュータ2のデータバッファ4のデータがパケットバッファ40に書き込まれたり、パケットバッファ40のデータがデータバッファ4に読み込まれる。
【0099】
一方、BUS2を介したデータ転送は、インターフェース回路30などにより実現される。このデータ転送により、パケットバッファ40のデータが、ストレージデバイス100のストレージ106に書き込まれたり、ストレージ106のデータがパケットバッファ40に読み込まれる。
【0100】
次に、バスリセットが発生したか否かを判断し(ステップS8)、DMA転送が完了すると(ステップS9)、ORB1についてのコマンド処理を終了し(ステップS10)、ORB1のステータスをパーソナルコンピュータ2に対して伝える(ステップS11)。このようにして、ORB1についての一連のコマンド処理が終了する。
【0101】
ステップS2、S4、S6、S8でバスリセットが発生したと判断されると、図11のD4に示すように、イニシエータからのリコネクトを待つリコネクト処理が行われる(ステップS12)。
【0102】
即ち、SBP−2においては、バスリセット前にログインしていたイニシエータは、バスリセット後、一定期間の間は、優先的にそのターゲットに対してリコネクトできる。バスリセット後に、このリコネクト処理を行うことで、イニシエータは、そのターゲットに対するアクセス権(バス使用権)を専有できるようになる。
【0103】
リコネクト処理の後、コマンドCMD2を含むORB2を受信すると(ステップS13)、図11のD5に示すように、バスリセット前のORB1(CMD1)とバスリセット後のORB2の内容を比較するコマンド比較処理を行う(ステップS14)。
【0104】
具体的には、図12に示すように、本実施形態では、ORBが含むページテーブル存在フラグPや、データサイズや、コマンドブロック(コマンドセット)フィールドの中のオペレーションコード(ライトコマンド、リードコマンドなどを区別するコード)やデータ長を比較している。またORBが、ORBの識別情報(例えば順序番号)を含む場合には、この識別情報を比較してもよい。なお、ページテーブルを使用していない場合はデータディスクリプタの値を比較し、ページテーブルを使用している場合は、セグメント数を比較する。
【0105】
以上のような情報を比較することで、バスリセット前のORB1とバスリセット後のORB2が同一か否かを簡素な処理で確実に判断できる。
【0106】
そして、ORB1とORB2の内容が同一であると判断された場合には、ORB1についてのデータ転送の再開処理を行う(ステップS15)。これにより、図11のD6に示すように、バスリセット発生時点の続きからデータ転送を再開できるようになる。なお、データ転送の再開処理の詳細については、特開平2001−177537に開示されている。
【0107】
一方、図13のE4に示すようにORB1とORB2の内容が同一でないと判断された場合には、ORB1が含むCMD1をストレージデバイス100に対して既に発行しているか否かを判断する(ステップS16)。そして、CMD1を発行していない場合には、コマンドのアボート処理を行うことなく、新たに送られてきたORB2についての処理に移行する(ステップS17)。このように本実施形態では、CMD1の処理中にバスリセットが発生した場合において、CMD1が発行済みと判断(ステップS16)された時にはアボート処理(ステップS21)を行うが、CMD1が未発行と判断(ステップS16)された場合にはアボート処理を行うことなくCMD2の処理(ステップS17)に移行する。
【0108】
一方、ストレージデバイス100にCMD1を既に発行している場合には、DMA転送を既に開始しているか否かを判断する(ステップS18)。そして、開始している場合には、図13のE5に示すように、コマンドCMD1のアボート処理に移行する(ステップS21)。一方、CMD1未発行の場合には、DMA転送要求DMARQが来ているか否かを判断し(ステップS19)、DMARQが来ていない場合にはCMD1のアボート処理に移行する。一方、DMARQが来ている場合には、DMA転送の開始を指示した後(ステップS20)、CMD1のアボート処理に移行する。そして、CMD1のアボート処理が終了すると、ORB2(CMD2)の処理に移行する(ステップS17)。
【0109】
図10は、CMD1のアボート処理に関するフローチャートである。
【0110】
まず、DMA転送が動作中か否かを判断する(ステップS31)。例えば、図9のステップS18でDMA転送が開始していないと判断され、ステップS19でDMARQが未だ来ていないと判断された場合には、図10のステップS31でDMA転送が動作中ではないと判断される可能性がある。この場合には、ステップS32〜S38のダミーデータの転送制御処理を行うことなく、コマンドCMD1をアボートする。このようにすることで、ステップS32〜S38の処理を省くことができ、処理の効率化を図れる。
【0111】
DMA転送が動作中であると判断された場合には、コマンドCMD1がリードコマンドかライトコマンドかを判断する(ステップS32)。
【0112】
CMD1がリードコマンドである場合には、図13のE6に示すように、CMD1についてのDMA転送が完了しているか否かを判断する(ステップS33)。そして、DMA転送が完了するまで、ストレージデバイス100との間で、ステップS33〜S35のダミーデータの転送(リード)処理を行う。そして、DMA転送が完了したと判断されると、図13のE7に示すようにコマンドCMD1のアボート処理を行う(ステップS39)。
【0113】
一方、CMD1がライトコマンドである場合には、CMD1についてのDMA転送が完了しているか否かを判断する(ステップS36)。そして、DMA転送が完了するまで、ストレージデバイス100との間で、ステップS36〜S38のダミーデータの転送(ライト)処理を行う。そして、DMA転送が完了したと判断されると、コマンドCMD1のアボート処理を行う(ステップS39)。
【0114】
なお、コマンドのアボート処理は、例えば、ATA/ATAPIで定義されるソフトウェアリセットにより実現できる。具体的には、ストレージデバイス100のインターフェース回路102が有するデバイス制御用レジスタのSRSTビットに「1」をセットすることで、このソフトウェアリセットが実行される。このレジスタへの値のセットは、後述するBUS2の信号CS[1:0]、DA[2:0]、DIOW、DIOR等を用いたPIO転送により、インターフェース回路30がインターフェース回路102のレジスタにアクセスすることで実現できる。
【0115】
以上のように本実施形態では、バスリセット前にストレージデバイスに発行したコマンドCMD1(図9のステップS3、図13のE1参照)を、ORB1(CMD1)に基づき開始したDMA転送(図9のステップS7、S20、図13のE3参照)が完了した後にアボートしている(図10のステップS39、図13のE7参照)。
【0116】
このようにすることで、ストレージデバイス100とのBUS2を介したDMA転送が正常に完了した後に、コマンドCMD1がアボートされるようになる。従って、ストレージデバイス100は、DMA転送を正常に完了できるため、ストレージデバイス100がハングアップする事態を防止できる。また、コマンドCMD1をアボートするまでのBUS2を介したDMA転送は、ダミーデータ転送により行われるため、パーソナルコンピュータ2の処理に悪影響が及ぶこともない。
【0117】
特に、ATA(IDE)/ATAPIのインターフェースを備えたストレージデバイス100は、元々、パーソナルコンピュータ2の内蔵ストレージデバイスとして設計されており、DMA転送中のIEEE1394のバスリセットの発生を想定した設計は行われていない。従って、ストレージデバイス100を、IEEE1394とATA/ATAPIのブリッジ機能を備えた本実施形態のデータ転送制御システム10に接続すると、予期しないバスリセットの発生により、ストレージデバイス100がハングアップする可能性が高い。本実施形態によれば、DMA転送の完了後にコマンドをアボートするため、このようなハングアップの発生を未然に防止できる。
【0118】
4.ダミーデータの転送
次に、図10のステップS33〜S35、S36〜S38のダミーデータの転送処理について、図14(A)〜(E)、図15(A)〜(E)を用いて説明する。
【0119】
図14(A)〜(E)は、ストレージデバイス100のデータをパーソナルコンピュータ2がリードする場合(データ転送制御システム10のデータ送信時)における、パケットバッファ40のポインタ制御について説明するための図である。
【0120】
図14(A)〜(E)において、ポインタATXP1(第1のポインタ)は、BUS2(ストレージデバイス100、ATA/ATAPI)からの転送データをパケットバッファ40に書き込むためのポインタであり、BUS2からの転送データが書き込まれる毎に更新される。また、ポインタLTXP2(第2のポインタ)は、BUS1(パーソナルコンピュータ2、IEEE1394)への転送データをパケットバッファ40から読み出すためのポインタであり、BUS1への転送データが読み出される毎に更新される。これらのポインタの更新は、ポインタ管理部39により行われる。
【0121】
図14(A)に示すように、BUS2からの転送データがインターフェース回路30によりパケットバッファ40に書き込まれる毎に、ポインタATXP1が更新され、その指示位置が下側方向(データの蓄積方向)に移動する。そして、ポインタATXP1はリングバッファ方式で管理されている。従って、図14(B)に示すように、ポインタATXP1が記憶領域の下側の境界BD2に達すると、ATXP1は記憶領域の上側の境界BD1に戻る(リングする)。
【0122】
そして、ATXP1=LTXP2と判断された場合(図10のステップS34)には、図14(C)に示すように、パケットバッファ40の記憶領域の全てにデータが蓄積されたことになる。なお、図14(A)〜(E)において、斜線で示す部分が蓄積データを表している。
【0123】
すると本実施形態では、図14(D)に示すように、LTXP2のポインタレジスタに、LTXP2と同じ値が再度書き込まれる(図10のステップS35)。これにより、ポインタLTXP2がダミー更新され、記憶領域の全ての蓄積データが読み出されたのと同様の結果になる。そして、その後、図14(E)に示すようにポインタATXP1が更新され、擬似的な読み出しが行われた記憶領域にBUS2からの転送データが書き込まれる。そして、DMA転送が完了するまで(図10のステップS33)、図14(A)〜(E)のポインタ制御が繰り返され、BUS2との間でのダミーデータの転送処理が行われるようになる。
【0124】
以上のように本実施形態では、BUS2からの転送データが書き込まれる毎に更新されるATXP1(第1のポインタ)により、LTXP2(第2のポインタ)が追い越されないように、LTXP2をダミー更新することで、ダミーデータの転送制御の実現に成功している。
【0125】
図15(A)〜(E)は、パーソナルコンピュータ2がストレージデバイス100にデータをライトする場合(データ転送制御システム10のデータ受信時)における、パケットバッファ40のポインタ制御について説明するための図である。
【0126】
図15(A)〜(E)において、ポインタARXP3(第3のポインタ)は、BUS2への転送データをパケットバッファ40から読み出すためのポインタであり、BUS2への転送データが読み出される毎に更新される。また、ポインタLRXP4(第4のポインタ)は、BUS1からの転送データをパケットバッファ40に書き込むためのポインタであり、BUS1からの転送データが書き込まれる毎に更新される。これらのポインタの更新は、ポインタ管理部39により行われる。
【0127】
図15(A)に示すように、BUS2への転送データがパケットバッファ40から読み出される毎に、ポインタARXP3が更新され、その指示位置が下側方向に移動する。そして、ポインタARXP3はリングバッファ方式で管理されている。従って、図15(B)に示すように、ポインタARXP3が下側の境界BD2に達すると上側の境界BD1に戻る。
【0128】
そして、ARXP3=LRXP4と判断された場合(図10のステップS37)には、図15(C)に示すように、パケットバッファ40の記憶領域の全てのデータが読み出されたことになる。
【0129】
すると本実施形態では、図15(D)に示すように、LRXP4のポインタレジスタに、LRXP4と同じ値が再度書き込まれる(図10のステップS38)。これにより、ポインタLRXP4がダミー更新され、記憶領域の全てにデータが書き込まれたのと同様の結果になる。そして、図15(E)に示すようにポインタARXP3が更新され、擬似的な書き込みが行われた記憶領域からBUS2への転送データが読み出される。そして、DMA転送が完了するまで(図10のステップS36)、図15(A)〜(E)のポインタ制御が繰り返され、BUS2との間でのダミーデータの転送処理が行われるようになる。
【0130】
このように本実施形態では、BUS2への転送データが読み出される毎に更新されるARXP3(第3のポインタ)により、LRXP4(第4のポインタ)が追い越されないように、LRXP4をダミー更新することで、ダミーデータの転送制御の実現に成功している。
【0131】
以上のように本実施形態では、DMA転送が完了するまで、BUS2を介してダミーデータをストレージデバイス100との間で擬似的に転送し、DMA転送が完了した後に、コマンドCMD1をアボートしている。そして、パーソナルコンピュータ2側の転送データの読み出しや書き込みは、図14(D)、図15(D)に示すように、ポインタLTXP2、LRXP4のダミー更新より擬似的に行われる。従って、コマンドCMD1をアボートするまでDMA転送を継続することによる悪影響が、パーソナルコンピュータ2の処理に及ぶのを防止できる。そして、バスリセット後にパーソナルコンピュータ2が新たに送ってきたORB2(CMD2)の処理を、CMD1がアボートされた後に適正に実行することが可能になる。
【0132】
なお、ポインタLTXP2、LRXP4のダミー更新の手法は、図14(A)〜図15(D)に示す手法に限定されず、少なくともポインタATXP1、ARXP3に追い越されないように、LTXP2、LRXP4を制御すればよい。また、ダミーデータの転送処理を、図14(A)〜図15(D)に示すようなポインタ制御ではなく、ダミーデータ転送用の専用のハードウェア回路を設けて実現してもよい。
【0133】
5.ATA/ATAPIのインターフェース回路
図16に、ATA/ATAPIのインターフェース回路30の構成例を示す。なお、インターフェース回路30は図16の全ての回路ブロックを備える必要はなく、その一部を省略してもよい。
【0134】
FIFO31は、データ転送の転送レートの差を調整(緩衝)するためのバッファである。DMAコントローラ32は、FIFO31やインターフェースコア回路34の制御(REQ/ACK制御)等を行う回路である。
【0135】
インターフェースコア回路34は、DMAの制御等を行う回路である。インターフェースコア回路34が含むカウンタ35は、ATA(IDE)/ATAPI用のリセットカウンタである。インターフェースコア回路34が含むUDMA回路36は、ATA/ATAPIのUltraDMA転送を制御するための回路であり、UltraDMA用のFIFO37、UltraDMA用のCRC演算回路38を含む。
【0136】
レジスタ33は、DMA転送の開始等を制御するためのレジスタであり、このレジスタ33は、ファームウェア50(CPU42)によりアクセス可能になっている。
【0137】
CS[1:0]は、ATAの各レジスタにアクセスするために使用するチップセレクト信号である。DA[2:0]は、データ又はデータポートにアクセスするためのアドレス信号である。
【0138】
DMARQ、DMACKは、DMA転送に使用される信号である。データ転送の準備が整った時にストレージデバイス100(デイバイス)側がDMARQをアクティブ(アサート)にし、これに応答して、データ転送制御システム10(ホスト)側がDMA転送開始時にDMACKをアクティブにする。
【0139】
DIOW(STOP)は、レジスタ又はデータポートの書き込み時に使用するライト信号である。なお、UrtraDMA転送中はSTOP信号として機能する。DIOR(HDMARDY、HSTROBE)は、レジスタ又はデータポートの読み出し時に使用するリード信号である。なお、UrtraDMA転送中はHDMARDY、HSTROBE信号として機能する。
【0140】
IORDY(DDMARDY、DSTROBE)は、ストレージデバイス100のデータ転送の準備が整っていない時のウェイト信号等に使用される。なお、UrtraDMA転送中はDDMARDY、DSTROBE信号として機能する。
【0141】
図17(A)〜図19(B)に、以上のATA用の信号の波形例を示す。なお、これらの図において「#」は負論理(Lレベルがアクティブ)の信号であることを表す。
【0142】
図17(A)、(B)は、PIO(Parallel I/O)リード、PIOライト時の信号波形例である。ATAのステータスレジスタのリードは図17(A)のPIOリードにより行い、制御レジスタへのライトは図17(B)のPIOライトにより行う。例えば、ストレージデバイス100に発行したコマンドをアボートするためのソフトウェアリセットは、図17(B)のPIOライトにより、インターフェース回路102のレジスタのSRSTビットに「1」をセットすればよい。
【0143】
図18(A)、(B)は、DMAリード、DMAライト時の信号波形例である。データ転送の準備ができると、ストレージデバイス100(インターフェース回路102)が、DMARQをアクティブ(Hレベル)にする。そして、それを受けて、データ転送制御システム10(インターフェース回路30)が、DMACKをアクティブ(Lレベル)にして、DMA転送を開始する。その後、DIOR(リード時)又はDIOW(ライト時)を使用して、データDD[15:0]のDMA転送を行う。
【0144】
図19(A)、(B)は、UltraDMAリード、UltraDMAライト時の信号波形例である。データ転送の準備ができると、ストレージデバイス100が、DMARQをアクティブにする。そして、それを受けて、データ転送制御システム10が、DMACKをアクティブにして、DMA転送を開始する。その後、DIOW、DIOR、IORDYを使用して、データDD[15:0]のUltraDMA転送を行う。
【0145】
なお、本発明は本実施形態に限定されず、本発明の要旨の範囲内で種々の変形実施が可能である。
【0146】
例えば、明細書中の記載において広義な用語(第1のインターフェース規格、第2のインターフェース規格、第1のインターフェース規格の上位の第1のプロトコル、第1のインターフェース規格の上位の第2のプロトコル、コマンドパケット、電子機器、ストレージデバイス、デバイス、プロセッサ等)として引用された用語(IEEE1394、ATA/ATAPI、SBP−2、IPover1394、ORB、パーソナルコンピュータ・ストレージデバイス、ハードディスクドライブ・光ディスクドライブ、ストレージデバイス、CPU等)は、明細書中の他の記載においても広義な用語に置き換えることができる。
【0147】
また、本発明のうち従属請求項に係る発明においては、従属先の請求項の構成要件の一部を省略する構成とすることもできる。また、本発明の1の独立請求項に係る発明の要部を、他の独立請求項に従属させることもできる。
【0148】
また、本発明のデータ転送制御システム、電子機器の構成は、図8に示す構成に限定されず、種々の変形実施が可能である。例えば、これらの各図の各回路ブロック、機能ブロックの一部を省略したり、その接続関係を変更してもよい。また、第2のバス(BUS2)は、ストレージデバイスとは異なるデバイスに接続されていてもよい。また、物理層回路とリンク層回路とパケットバッファの接続構成も図8に示す接続構成に限定されない。
【0149】
また本実施形態では、コマンド処理部、コマンドアボート部、コマンド比較部、転送再開部等の機能をファームウェア(プログラム)により実現する場合について説明したが、これらを機能の一部又は全部をハードウェア回路により実現してもよい。
【0150】
また、本発明はIEEE1394におけるバスリセットに特に有用だが、これ以外にも、少なくともノードのトポロジー情報をクリアするようなリセットであれば適用できる。また本発明は、バスリセット発生時以外におけるコマンドアボート処理にも適用可能である。
【0151】
また本発明は種々の電子機器(ハードディスクドライブ、光ディスクドライブ、光磁気ディスクドライブ、PDA、拡張機器、オーディオ機器、デジタルビデオカメラ、携帯電話、プリンタ、スキャナ、TV、VTR、電話機、表示デバイス、プロジェクタ、パーソナルコンピュータ或いは電子手帳等)に適用できる。
【0152】
また、本実施形態では、IEEE1394、SBP−2、ATA/ATAPI規格でのデータ転送に本発明を適用した場合について説明した。しかしながら本発明は、例えばIEEE1394(P1394a)、SBP−2(SBP)、ATA/ATAPIと同様の思想に基づく規格や、IEEE1394、SBP−2、ATA/ATAPIを発展させた規格におけるデータ転送にも適用できる。
【図面の簡単な説明】
【図1】IEEE1394、SBP−2の層構造について説明するための図である。
【図2】SBP−2の処理の概略について説明するための図である。
【図3】SBP−2においてデータをイニシエータからターゲットに転送する場合のコマンド処理について説明するための図である。
【図4】SBP−2においてデータをターゲットからイニシエータに転送する場合のコマンド処理について説明するための図である。
【図5】図5(A)、(B)、(C)は、ページテーブルについて説明するための図である。
【図6】バスリセットによりクリアされるノードのトポロジ情報について説明するための図である。
【図7】図7(A)、(B)は、データ転送中にバスリセットが発生した場合に生じる問題について説明するための図である。
【図8】本実施形態のデータ転送制御システム、電子機器の構成例を示す図である。
【図9】本実施形態の詳細な処理例について示すフローチャートである。
【図10】本実施形態の詳細な処理例について示すフローチャートである。
【図11】データ転送の再開処理について説明するための図である。
【図12】ORBの内容比較について説明するための図である。
【図13】コマンドのアボート処理について説明するための図である。
【図14】図14(A)、(B)、(C)、(D)、(E)は、ダミーデータの転送処理を実現するポインタ制御手法(リード時)について説明するための図である。
【図15】図15(A)、(B)、(C)、(D)、(E)は、ダミーデータの転送処理を実現するポインタ制御手法(ライト時)について説明するための図である。
【図16】ATA/ATAPIのインターフェース回路の構成例を示す図である。
【図17】図17(A)、(B)は、PIOリード、PIOライト時における信号波形例である。
【図18】図18(A)、(B)は、DMAリード、DMAライト時における信号波形例である。
【図19】図19(A)、(B)は、UltraDMAリード、UltraDMAライト時における信号波形例である。
【符号の説明】
BUS1 第1のバス(IEEE1394)
BUS2 第2のバス(ATA/ATAPI)
2   パーソナルコンピュータ(ホストコンピュータ、イニシエータ)
8   電子機器(ターゲット)
10  データ転送制御システム
14  物理層回路
20  リンク層回路
22  SBP−2回路
30  インターフェース回路
32  DMAコントローラ
38  バッファ管理回路
40  パケットバッファ
42  CPU(プロセッサ)
44  フラッシュメモリ(EEPROM)
50  ファームウェア
52  コミュニケーション部
60  マネージメント部
70  フェッチ部
80  ストレージタスク部
82  コマンド処理部
84  コマンド比較部
86  コマンドアボート部
88  転送再開部
90  ダウンローダ部
100 ストレージデバイス
102 インターフェース回路
104 アクセス制御回路
106 ストレージ

Claims (15)

  1. バスを介してデータ転送を行うためのデータ転送制御システムであって、
    第1のバスを介して転送されてきたコマンドパケットを受け、コマンドパケットにより指示されるコマンドを、第2のバスに接続されるデバイスに対して発行し、第2のバスを介したDMA転送の開始を指示するコマンド処理部と、
    コマンドパケットに基づき第2のバスに接続されるデバイスに対して発行したコマンドを、コマンドパケットに基づき開始したDMA転送の完了後にアボートするコマンドアボート部と、
    を含むことを特徴とするデータ転送制御システム。
  2. 請求項1において、
    第1のコマンドパケットの処理中にノードのトポロジ情報をクリアするバスリセットが発生した場合に、バスリセット発生前に第1のバスを介して転送されてきた第1のコマンドパケットの内容と、バスリセット発生後に第1のバスを介して転送されてきた第2のコマンドパケットの内容とを比較するコマンド比較部を含み、
    前記コマンドアボート部が、
    第1のコマンドパケットの内容と第2のコマンドパケットの内容が異なると判断された場合に、第1のコマンドパケットに基づき第2のバスに接続されるデバイスに対して発行したコマンドを、第1のコマンドパケットに基づき開始したDMA転送の完了後にアボートすることを特徴とするデータ転送制御システム。
  3. 請求項1又は2において、
    第1のコマンドパケットの処理中にノードのトポロジ情報をクリアするバスリセットが発生した場合に、
    第1のコマンドパケットのコマンドを第2のバスに接続されるデバイスに発行している場合には、第1のコマンドパケットのコマンドのアボート処理を行い、
    第1のコマンドパケットのコマンドを第2のバスに接続されるデバイスに発行していない場合には、第1のコマンドパケットのコマンドのアボート処理を行うことなく、第2のコマンドパケットの処理に移行することを特徴とするデータ転送制御システム。
  4. 請求項1乃至3のいずれかにおいて、
    前記コマンドアボート部が、
    DMA転送が完了するまで、第2のバスに接続されるデバイスとの間でダミーデータを転送する制御を行うことを特徴とするデータ転送制御システム。
  5. 請求項4において、
    前記コマンドアボート部が、
    コマンドをアボートするか否かの判断時においてDMA転送が動作中でなかった場合には、ダミーデータの転送制御を行うことなくコマンドをアボートすることを特徴とするデータ転送制御システム。
  6. 請求項4又は5において、
    転送データを一時的に記憶するパケットバッファのポインタをリングバッファ方式で管理し、第2のバスからの転送データがパケットバッファに書き込まれる毎に第1のポインタを更新し、第1のバスへの転送データがパケットバッファから読み出される毎に第2のポインタを更新するポインタ管理部を含み、
    前記コマンドアボート部が、
    第2のバスからの転送データがパケットバッファに書き込まれる毎に更新される第1のポインタにより、第2のポインタが追い越されないように第2のポインタをダミー更新することで、ダミーデータの転送制御を行うことを特徴とするデータ転送制御システム。
  7. 請求項4乃至6のいずれかにおいて、
    転送データを一時的に記憶するパケットバッファのポインタをリングバッファ方式で管理し、第2のバスへの転送データがパケットバッファから読み出される毎に第3のポインタを更新し、第1のバスからの転送データがパケットバッファに書き込まれる毎に第4のポインタを更新するポインタ管理部を含み、
    前記コマンドアボート部が、
    第2のバスへの転送データがパケットバッファから読み出される毎に更新される第3のポインタにより、第4のポインタが追い越されないように第4のポインタをダミー更新することで、ダミーデータの転送制御を行うことを特徴とするデータ転送制御システム。
  8. 請求項1乃至7のいずれかにおいて、
    第1のバスが、IEEE1394規格によりデータ転送が行われるバスであり、第2のバスが、ATA/ATAPI規格によりデータ転送が行われるバスであることを特徴とするデータ転送制御システム。
  9. 請求項1乃至8のいずれかのデータ転送制御システムと、
    第2のバスに接続されるデバイスと、
    を含むことを特徴とする電子機器。
  10. 第1のバスを介して転送されてきたコマンドパケットを受け、コマンドパケットにより指示されるコマンドを、第2のバスに接続されるデバイスに対して発行し、第2のバスを介したDMA転送の開始を指示するコマンド処理部と、
    コマンドパケットに基づき第2のバスに接続されるデバイスに対して発行したコマンドを、コマンドパケットに基づき開始したDMA転送の完了後にアボートするコマンドアボート部として
    データ転送制御システムを機能させることを特徴とするプログラム。
  11. 請求項10において、
    第1のコマンドパケットの処理中にノードのトポロジ情報をクリアするバスリセットが発生した場合に、バスリセット発生前に第1のバスを介して転送されてきた第1のコマンドパケットの内容と、バスリセット発生後に第1のバスを介して転送されてきた第2のコマンドパケットの内容とを比較するコマンド比較部としてデータ転送制御システムを機能させると共に、
    前記コマンドアボート部が、
    第1のコマンドパケットの内容と第2のコマンドパケットの内容が異なると判断された場合に、第1のコマンドパケットに基づき第2のバスに接続されるデバイスに対して発行したコマンドを、第1のコマンドパケットに基づき開始したDMA転送の完了後にアボートすることを特徴とするプログラム。
  12. 請求項10又は11において、
    前記コマンドアボート部が、
    DMA転送が完了するまで、第2のバスに接続されるデバイスとの間でダミーデータを転送する制御を行うことを特徴とするプログラム。
  13. バスを介してデータ転送を行うためのデータ転送制御方法であって、
    コマンドパケットにより指示されるコマンドを、第2のバスに接続されるデバイスに対して発行し、第2のバスを介したDMA転送の開始を指示し、
    コマンドパケットに基づき第2のバスに接続されるデバイスに対して発行したコマンドを、コマンドパケットに基づき開始したDMA転送の完了後にアボートすることを特徴とするデータ転送制御方法。
  14. 請求項13において、
    第1のコマンドパケットの処理中にノードのトポロジ情報をクリアするバスリセットが発生した場合に、バスリセット発生前に第1のバスを介して転送されてきた第1のコマンドパケットの内容と、バスリセット発生後に第1のバスを介して転送されてきた第2のコマンドパケットの内容とを比較し、
    第1のコマンドパケットの内容と第2のコマンドパケットの内容が異なると判断された場合に、第1のコマンドパケットに基づき第2のバスに接続されるデバイスに対して発行したコマンドを、第1のコマンドパケットに基づき開始したDMA転送の完了後にアボートすることを特徴とするデータ転送制御方法。
  15. 請求項13又は14において、
    DMA転送が完了するまで、第2のバスに接続されるデバイスとの間でダミーデータを転送する制御を行うことを特徴とするデータ転送制御方法。
JP2002227303A 2002-08-05 2002-08-05 データ転送制御システム、電子機器、プログラム及びデータ転送制御方法 Withdrawn JP2004070570A (ja)

Priority Applications (6)

Application Number Priority Date Filing Date Title
JP2002227303A JP2004070570A (ja) 2002-08-05 2002-08-05 データ転送制御システム、電子機器、プログラム及びデータ転送制御方法
US10/625,748 US7165124B2 (en) 2002-08-05 2003-07-24 Data transfer control system, electronic instrument, program, and data transfer control method
EP03017731A EP1389761B1 (en) 2002-08-05 2003-08-04 Data transfer control system, program and data transfer control method
DE60303162T DE60303162T2 (de) 2002-08-05 2003-08-04 Datenübertragungssteuerungssystem, Programm und Datenübertragungssteuerungsverfahren
AT03017731T ATE315807T1 (de) 2002-08-05 2003-08-04 Datenübertragungssteuerungssystem, programm und datenübertragungssteuerungsverfahren
CN03149795.0A CN1275164C (zh) 2002-08-05 2003-08-05 数据传输控制***、电子设备、及数据传输控制方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2002227303A JP2004070570A (ja) 2002-08-05 2002-08-05 データ転送制御システム、電子機器、プログラム及びデータ転送制御方法

Publications (1)

Publication Number Publication Date
JP2004070570A true JP2004070570A (ja) 2004-03-04

Family

ID=30768018

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002227303A Withdrawn JP2004070570A (ja) 2002-08-05 2002-08-05 データ転送制御システム、電子機器、プログラム及びデータ転送制御方法

Country Status (6)

Country Link
US (1) US7165124B2 (ja)
EP (1) EP1389761B1 (ja)
JP (1) JP2004070570A (ja)
CN (1) CN1275164C (ja)
AT (1) ATE315807T1 (ja)
DE (1) DE60303162T2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7586638B2 (en) 2005-04-26 2009-09-08 Seiko Epson Corporation Print control apparatus and printing system

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004070571A (ja) 2002-08-05 2004-03-04 Seiko Epson Corp データ転送制御システム、電子機器、プログラム及びデータ転送制御方法
JP3714420B2 (ja) * 2002-08-13 2005-11-09 セイコーエプソン株式会社 データ転送制御装置、電子機器、プログラム及び電子機器の製造方法
US7376943B2 (en) * 2003-12-18 2008-05-20 Lsi Corporation Safe method for upgrading firmware of optical disk product
JP4451837B2 (ja) * 2004-12-10 2010-04-14 富士通株式会社 データ転送装置およびデータ転送方法
US20060129714A1 (en) * 2004-12-10 2006-06-15 Fujitsu Limited Method and apparatus for transferring data
JP4207912B2 (ja) * 2005-03-24 2009-01-14 セイコーエプソン株式会社 データ転送制御装置及び電子機器
US7827320B1 (en) 2008-03-28 2010-11-02 Western Digital Technologies, Inc. Serial ATA device implementing intra-command processing by detecting XRDY primitive while in the XRDY state
US8856390B1 (en) 2008-03-28 2014-10-07 Western Digital Technologies, Inc. Using device control field to implement non-disruptive notification of an ATA device
JP4706720B2 (ja) * 2008-05-15 2011-06-22 富士ゼロックス株式会社 Dma制御システム、印刷装置、および転送指示プログラム
CN101419536B (zh) * 2008-12-02 2011-01-12 山东省计算中心 一种计算机内存数据获取方法与***
DE102010062567A1 (de) * 2010-12-07 2012-06-14 Robert Bosch Gmbh Verfahren, Sensormodul und System zur Datenübertragung
US9645752B1 (en) 2014-04-07 2017-05-09 Western Digital Technologies, Inc. Identification of data committed to non-volatile memory by use of notification commands
US9632711B1 (en) 2014-04-07 2017-04-25 Western Digital Technologies, Inc. Processing flush requests by utilizing storage system write notifications
JP2023139529A (ja) * 2022-03-22 2023-10-04 株式会社東芝 ディスク装置

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US42141A (en) * 1864-03-29 Feancis ho yet
GB2061577B (en) 1977-08-04 1982-10-20 Honeywell Inf Systems Data transfer control in a peripheral controller
JPH01106254A (ja) 1987-10-20 1989-04-24 Yokogawa Electric Corp Scsiホスト・アダプタ回路
US5687316A (en) * 1994-07-29 1997-11-11 International Business Machines Corporation Communication apparatus and methods having P-MAC, I-MAC engines and buffer bypass for simultaneously transmitting multimedia and packet data
JPH10143329A (ja) 1996-11-06 1998-05-29 Nec Ibaraki Ltd 磁気ディスク制御装置
US5974483A (en) 1997-05-21 1999-10-26 Microsoft Corporation Multiple transparent access to in put peripherals
US6636922B1 (en) * 1999-03-17 2003-10-21 Adaptec, Inc. Methods and apparatus for implementing a host side advanced serial protocol
JP3598923B2 (ja) 1999-12-20 2004-12-08 セイコーエプソン株式会社 データ転送制御装置、情報記憶媒体及び電子機器
JP2002207713A (ja) 2001-01-11 2002-07-26 Matsushita Electric Ind Co Ltd Cpu間データ通信方法および装置
JP4098987B2 (ja) * 2002-01-31 2008-06-11 富士通株式会社 インターフェース変換システム及びデータ転送方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7586638B2 (en) 2005-04-26 2009-09-08 Seiko Epson Corporation Print control apparatus and printing system

Also Published As

Publication number Publication date
US20040167995A1 (en) 2004-08-26
US7165124B2 (en) 2007-01-16
EP1389761B1 (en) 2006-01-11
DE60303162T2 (de) 2006-08-10
CN1485750A (zh) 2004-03-31
CN1275164C (zh) 2006-09-13
EP1389761A3 (en) 2004-06-09
DE60303162D1 (de) 2006-04-06
EP1389761A2 (en) 2004-02-18
ATE315807T1 (de) 2006-02-15

Similar Documents

Publication Publication Date Title
JP3649226B2 (ja) データ転送制御装置、電子機器及びデータ転送制御方法
JP2004070571A (ja) データ転送制御システム、電子機器、プログラム及びデータ転送制御方法
JP3636157B2 (ja) データ転送制御装置、電子機器及びデータ転送制御方法
JP2004070570A (ja) データ転送制御システム、電子機器、プログラム及びデータ転送制御方法
JP2004334417A (ja) データ転送制御装置、電子機器及びデータ転送制御方法
JP5242100B2 (ja) 通信システム内のポートのアクティブ状態からスタンバイ状態への遷移
US7359996B2 (en) Data transfer control device, electronic equipment, and data transfer control method
JP3599048B2 (ja) データ転送制御システム、電子機器、プログラム及びデータ転送制御方法
JP3636158B2 (ja) データ転送制御装置及び電子機器
JP3599053B2 (ja) データ転送制御システム、電子機器、及びデータ転送制御方法
JP3636160B2 (ja) データ転送制御装置、電子機器及びデータ転送制御方法
JP3614161B2 (ja) データ転送制御装置、電子機器及びデータ転送制御方法
JP2006059088A (ja) データ転送制御システム、電子機器及びプログラム
JP3714420B2 (ja) データ転送制御装置、電子機器、プログラム及び電子機器の製造方法
JP3606133B2 (ja) データ転送制御装置及び電子機器
US7366805B2 (en) Data transfer control system, electronic instrument, program, and data transfer control method
TWI239508B (en) Storage device controller apparatus, storage system and storage method
JP2000341306A (ja) データ処理装置およびそのバス制御方法
JP3598922B2 (ja) データ転送制御装置、情報記憶媒体及び電子機器
JP4127071B2 (ja) データ転送制御装置、電子機器及びデータ転送制御方法
JP2001256168A (ja) Usbデバイス
JP2000032010A (ja) デ―タ通信システム、デ―タ通信方法、デ―タ通信装置、デジタルインタフェ―ス及び記憶媒体
JP2001186146A (ja) データ転送制御装置及び電子機器
JP2004295594A (ja) データ転送制御装置、電子機器及びデータ転送制御方法

Legal Events

Date Code Title Description
A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20040331

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040511

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20040517

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040712

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20041207

A761 Written withdrawal of application

Free format text: JAPANESE INTERMEDIATE CODE: A761

Effective date: 20050204