JP2005115545A - データ転送制御システム、電子機器、プログラム及びデータ転送制御方法 - Google Patents
データ転送制御システム、電子機器、プログラム及びデータ転送制御方法 Download PDFInfo
- Publication number
- JP2005115545A JP2005115545A JP2003347149A JP2003347149A JP2005115545A JP 2005115545 A JP2005115545 A JP 2005115545A JP 2003347149 A JP2003347149 A JP 2003347149A JP 2003347149 A JP2003347149 A JP 2003347149A JP 2005115545 A JP2005115545 A JP 2005115545A
- Authority
- JP
- Japan
- Prior art keywords
- bus
- command
- logical unit
- data transfer
- command packet
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/382—Information transfer, e.g. on bus using universal interface adapter
- G06F13/385—Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
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)
Abstract
【課題】 第1のバスに接続されるデバイスと第2のバスに接続される複数のロジカルユニットとの間での適正なデータ転送制御を実現できるデータ転送制御システム等の提供。
【解決手段】 データ転送制御システム10は、データバッファ40へのアクセスを制御するバッファコントローラ38と、BUS1に接続されるPCとBUS2に接続されるロジカルユニットLUN1、LUN2との間でのデータ転送を制御する転送コントローラ12を含む。転送コントローラ12は、LUN1用ORBの受信時にはORBにより指示されるコマンドに基づきLUN1との間でのデータ転送を開始し、LUN2用ORBの受信時にはORBにより指示されるコマンドに基づきLUN2との間でのデータ転送を開始するコマンド処理部80と、LUN1用ORBの処理中にバスリセットが発生し、バスリセット発生後にLUN2用のORBを受信した場合には、LUN2用のORBの処理をウェイトするウェイト処理部72を含む。
【選択図】 図5
【解決手段】 データ転送制御システム10は、データバッファ40へのアクセスを制御するバッファコントローラ38と、BUS1に接続されるPCとBUS2に接続されるロジカルユニットLUN1、LUN2との間でのデータ転送を制御する転送コントローラ12を含む。転送コントローラ12は、LUN1用ORBの受信時にはORBにより指示されるコマンドに基づきLUN1との間でのデータ転送を開始し、LUN2用ORBの受信時にはORBにより指示されるコマンドに基づきLUN2との間でのデータ転送を開始するコマンド処理部80と、LUN1用ORBの処理中にバスリセットが発生し、バスリセット発生後にLUN2用のORBを受信した場合には、LUN2用のORBの処理をウェイトするウェイト処理部72を含む。
【選択図】 図5
Description
本発明は、データ転送制御システム、電子機器、プログラム及びデータ転送制御方法に関する。
近年、IEEE1394と呼ばれるインターフェース規格が脚光を浴びている。このIEEE1394においては、バスに電子機器が新たに接続されたり、バスから電子機器が取り外されたりして、バスに接続されるノードが増減すると、いわゆるバスリセットが発生する。バスリセットが発生するとノードのトポロジ情報がクリアされ、その後、トポロジ情報が自動的に再設定される。このようにIEEE1394では、バスリセット後にトポロジ情報が自動的に再設定されるため、いわゆるホット状態でのケーブルの抜き差し(ホットプラグ)が可能となる。
このバスリセットの発生が要因となって生じる種々の問題を解決する従来技術としては例えば特開2001−177537号公報などに開示される技術がある。しかしながら、この従来技術では、ターゲットが複数のロジカルユニットを有する場合については考慮されていなかった。
特開2001−177537号公報
本発明は、以上のような技術的課題に鑑みてなされたものであり、その目的とするところは、第1のバスに接続されるデバイスと第2のバスに接続される複数のロジカルユニットとの間での適正なデータ転送制御を実現できるデータ転送制御システム、電子機器、プログラム及びデータ転送制御方法を提供することにある。
本発明は、バスを介したデータ転送のためのデータ転送制御システムであって、転送データを一時的に格納するデータバッファへのアクセスを制御するバッファコントローラと、
第1のバスに接続されるデバイスと、第2のバスに接続される複数のロジカルユニットとの間でのデータ転送を制御する転送コントローラとを含み、前記転送コントローラが、第1のバスに接続されるデバイスから第1のロジカルユニット用のコマンドパケットを受信した場合には、コマンドパケットにより指示されるコマンドに基づいて、第2のバスに接続される第1のロジカルユニットとの間でのデータ転送を開始し、第1のバスに接続されるデバイスから第2のロジカルユニット用のコマンドパケットを受信した場合には、コマンドパケットにより指示されるコマンドに基づいて、第2のバスに接続される第2のロジカルユニットとの間でのデータ転送を開始するコマンド処理部と、第1のロジカルユニット用のコマンドパケットの処理中にバスリセットが発生し、バスリセット発生後に受信したコマンドパケットが第2のロジカルユニット用のコマンドパケットであった場合には、受信した第2のロジカルユニット用のコマンドパケットの処理をウェイトするウェイト処理部とを含むデータ転送制御システムに関係する。
第1のバスに接続されるデバイスと、第2のバスに接続される複数のロジカルユニットとの間でのデータ転送を制御する転送コントローラとを含み、前記転送コントローラが、第1のバスに接続されるデバイスから第1のロジカルユニット用のコマンドパケットを受信した場合には、コマンドパケットにより指示されるコマンドに基づいて、第2のバスに接続される第1のロジカルユニットとの間でのデータ転送を開始し、第1のバスに接続されるデバイスから第2のロジカルユニット用のコマンドパケットを受信した場合には、コマンドパケットにより指示されるコマンドに基づいて、第2のバスに接続される第2のロジカルユニットとの間でのデータ転送を開始するコマンド処理部と、第1のロジカルユニット用のコマンドパケットの処理中にバスリセットが発生し、バスリセット発生後に受信したコマンドパケットが第2のロジカルユニット用のコマンドパケットであった場合には、受信した第2のロジカルユニット用のコマンドパケットの処理をウェイトするウェイト処理部とを含むデータ転送制御システムに関係する。
本発明では、第1のバスに接続されるデバイスから第1のロジカルユニット用のコマンドパケットを受信した場合には、第2のバスに接続される第1のロジカルユニットとの間でのデータ転送が開始される。一方、第1のバスに接続されるデバイスから第2のロジカルユニット用のコマンドパケットを受信した場合には、第2のバスに接続される第2のロジカルユニットとの間でのデータ転送が開始される。そして本発明では、第1のロジカルユニット用のコマンドパケットの処理中にバスリセットが発生し、バスリセット発生後に、第1のロジカルユニット用のコマンドパケットではなく、第2のロジカルユニット用のコマンドパケットを受信した場合には、第2のロジカルユニット用のコマンドパケットの処理がウェイトされる。このようにすれば、バスリセット発生前に処理していた方である第1のロジカルユニット用のコマンドパケットについてのデータ転送の継続性が維持できなくなる事態を防止できる。従って、第2のバスに複数のロジカルユニットが接続されている場合にも、第1のバスに接続されるデバイスと複数のロジカルユニットとの間での適正なデータ転送制御を実現できる。
また本発明では、前記ウェイト処理部が、第1のロジカルユニット用のコマンドパケットの処理中にバスリセットが発生し、バスリセット発生後に受信したコマンドパケットが第1のロジカルユニット用のコマンドパケットであった場合には、第1のロジカルユニットとの間でのデータ転送を再開するための処理を行うようにしてもよい。このようにすれば、バスリセット発生前に処理していた方である第1のロジカルユニット用のコマンドパケットについてのデータ転送の継続性を維持することが可能になる。
また本発明では、前記ウェイト処理部が、第1のロジカルユニット用のコマンドパケットの処理中にバスリセットが発生し、バスリセット発生後に受信したコマンドパケットが第2のロジカルユニット用のコマンドパケットであった場合には、第2のロジカルユニット用のコマンドパケットの処理を所定時間だけウェイトし、所定時間だけ処理をウェイトしてもウェイト状態が解除されなかった場合には、第1のバスに接続されるデバイスに対してエラーステータスを発行するようにしてもよい。このようにすれば、第2のロジカルユニット用のコマンドパケットの処理が長時間に亘ってウェイト状態になり第1のバスに接続されるデバイスの処理に悪影響が及ぶ事態を防止できる。
また本発明では、前記ウェイト処理部が、第1のロジカルユニット用のコマンドパケットの処理中にバスリセットが発生し、第1のバスに接続されるデバイスがバスリセット発生後に第1のロジカルユニットに対して行ったリコネクト要求が成功しなかった場合に、第2のロジカルユニット用のコマンドパケットの処理のウェイト状態を解除するようにしてもよい。このようにすれば、リコネクト要求が不成功になった後、無駄な時間を待つことなくウェイト状態を解除できるようになるため、処理を効率化できる。
また本発明は、バスを介したデータ転送のためのデータ転送制御システムであって、転送データを一時的に格納するデータバッファへのアクセスを制御するバッファコントローラと、第1のバスに接続されるデバイスと、第2のバスに接続される複数のロジカルユニットとの間でのデータ転送を制御する転送コントローラとを含み、前記転送コントローラが、第1のバスに接続されるデバイスから第1のロジカルユニット用のコマンドパケットを受信した場合には、コマンドパケットにより指示されるコマンドに基づいて、第2のバスに接続される第1のロジカルユニットとの間でのデータ転送を開始し、第1のバスに接続されるデバイスから第2のロジカルユニット用のコマンドパケットを受信した場合には、コマンドパケットにより指示されるコマンドに基づいて、第2のバスに接続される第2のロジカルユニットとの間でのデータ転送を開始するコマンド処理部と、第1のロジカルユニットにより第2のバスが使用されている時に、第2のロジカルユニット用のコマンドパケットを受信した場合には、受信した第2のロジカルユニット用のコマンドパケットの処理をウェイトするウェイト処理部とを含むデータ転送制御システムに関係する。
本発明によれば、第1のロジカルユニットにより第2のバスが使用されている時に、第2のロジカルユニット用のコマンドパケットを受信した場合には、その第2のロジカルユニット用のコマンドパケットの処理がウェイトされる。従って、第2のバスに複数のロジカルユニットが接続されている場合にも、第1のバスに接続されるデバイスと複数のロジカルユニットとの間での適正なデータ転送制御を実現できるようになる。
また本発明では、前記転送コントローラが、ロジカルユニットに発行したコマンドをアボートするコマンドアボート部を含み、前記コマンド処理部が、第1のバスに接続されるデバイスからコマンドパケットを受信した場合には、コマンドパケットにより指示されるコマンドを第2のバスに接続されるロジカルユニットに対して発行して、ロジカルユニットとの間でのDMA転送を開始し、前記コマンドアボート部が、コマンドパケットに基づき第2のバスに接続されるロジカルユニットに対して発行したコマンドを、コマンドパケットに基づき開始したDMA転送の完了後にアボートするようにしてもよい。
本発明によれば、第2のバスに接続されるロジカルユニット(第1、第2のロジカルユニット)に発行したコマンドが、DMA転送の完了後にアボート(中止、キャンセル)される。これにより、DMA転送が不正に終了することで第2のバスに接続されるロジカルユニットがハングアップする事態等を防止でき、ロジカルユニットに発行したコマンドを適正にアボートできるようになる。
また本発明では、前記転送コントローラが、第1のコマンドパケットの処理中にバスリセットが発生した場合に、バスリセット発生前に第1のバスを介して転送されてきた第1のコマンドパケットの内容と、バスリセット発生後に同じロジカルユニットに対し第1のバスを介して転送されてきた第2のコマンドパケットの内容とを比較するコマンド比較部を含み、前記コマンドアボート部が、同じロジカルユニットに対する第1のコマンドパケットの内容と第2のコマンドパケットの内容が異なると判断された場合に、第2のバスに接続されるロジカルユニットに対して第1のコマンドパケットに基づき発行したコマンドを、第1のコマンドパケットに基づき開始したDMA転送の完了後にアボートするようにしてもよい。なお、同じロジカルユニットに対する第1のコマンドパケットの内容と第2のコマンドパケットの内容が同じであると判断された場合には、バスリセットの発生時点のデータ転送の続きからデータ転送を再開できる。
また本発明では、前記コマンドアボート部が、DMA転送が完了するまで、第2のバスに接続されるロジカルユニットとの間でダミーデータを転送する制御を行うようにしてもよい。この場合のダミーデータの転送制御は、転送データを一時的に記憶するデータバッファのポインタをダミー更新することで実現してもよいし、ダミーデータ転送用のハードウェアを設けて実現してもよい。また、ダミーデータは、例えば、第2のバスを介して転送される一方で、第1のバスを介して転送されないデータである。
また本発明では、第1のバスが、IEEE1394規格によりデータ転送が行われるバスであり、第2のバスが、ATA/ATAPI規格によりデータ転送が行われるバスであってもよい。
また本発明は、上記のいずれかのデータ転送制御システムと、第2のバスに接続される複数のロジカルユニットとを含む電子機器に関係する。
また本発明は、第1のバスに接続されるデバイスから第1のロジカルユニット用のコマンドパケットを受信した場合には、コマンドパケットにより指示されるコマンドに基づいて、第2のバスに接続される第1のロジカルユニットとの間でのデータ転送を開始し、第1のバスに接続されるデバイスから第2のロジカルユニット用のコマンドパケットを受信した場合には、コマンドパケットにより指示されるコマンドに基づいて、第2のバスに接続される第2のロジカルユニットとの間でのデータ転送を開始するコマンド処理部と、第1のロジカルユニット用のコマンドパケットの処理中にバスリセットが発生し、バスリセット発生後に受信したコマンドパケットが第2のロジカルユニット用のコマンドパケットであった場合には、受信した第2のロジカルユニット用のコマンドパケットの処理をウェイトするウェイト処理部として、データ転送制御システムを機能させるプログラムに関係する。
また本発明は、第1のバスに接続されるデバイスから第1のロジカルユニット用のコマンドパケットを受信した場合には、コマンドパケットにより指示されるコマンドに基づいて、第2のバスに接続される第1のロジカルユニットとの間でのデータ転送を開始し、第1のバスに接続されるデバイスから第2のロジカルユニット用のコマンドパケットを受信した場合には、コマンドパケットにより指示されるコマンドに基づいて、第2のバスに接続される第2のロジカルユニットとの間でのデータ転送を開始するコマンド処理部と、第1のロジカルユニットにより第2のバスが使用されている時に、第2のロジカルユニット用のコマンドパケットを受信した場合には、受信した第2のロジカルユニット用のコマンドパケットの処理をウェイトするウェイト処理部として、データ転送制御システムを機能させるプログラムに関係する。
また本発明は、バスを介してデータ転送を行うためのデータ転送制御方法であって、第1のバスに接続されるデバイスから第1のロジカルユニット用のコマンドパケットを受信した場合には、コマンドパケットにより指示されるコマンドに基づいて、第2のバスに接続される第1のロジカルユニットとの間でのデータ転送を開始し、第1のバスに接続されるデバイスから第2のロジカルユニット用のコマンドパケットを受信した場合には、コマンドパケットにより指示されるコマンドに基づいて、第2のバスに接続される第2のロジカルユニットとの間でのデータ転送を開始し、第1のロジカルユニット用のコマンドパケットの処理中にバスリセットが発生し、バスリセット発生後に受信したコマンドパケットが第2のロジカルユニット用のコマンドパケットであった場合には、受信した第2のロジカルユニット用のコマンドパケットの処理をウェイトするデータ転送制御方法に関係する。
また本発明は、バスを介してデータ転送を行うためのデータ転送制御方法であって、第1のバスに接続されるデバイスから第1のロジカルユニット用のコマンドパケットを受信した場合には、コマンドパケットにより指示されるコマンドに基づいて、第2のバスに接続される第1のロジカルユニットとの間でのデータ転送を開始し、第1のバスに接続されるデバイスから第2のロジカルユニット用のコマンドパケットを受信した場合には、コマンドパケットにより指示されるコマンドに基づいて、第2のバスに接続される第2のロジカルユニットとの間でのデータ転送を開始し、第1のロジカルユニットにより第2のバスが使用されている時に、第2のロジカルユニット用のコマンドパケットを受信した場合には、受信した第2のロジカルユニット用のコマンドパケットの処理をウェイトするデータ転送制御方法に関係する。
以下、本発明の実施形態について詳細に説明する。
なお、以下に説明する本実施形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また本実施形態で説明される構成の全てが本発明の解決手段として必須であるとは限らない。
1.IEEE1394、SBP-2
1.1 SBP-2
IEEE1394(IEEE1394−1995、P1394a、P1394b等)のプロトコルは、トランザクション層、リンク層、物理層により構成される。そしてIEEE1394(広義には第1のインターフェース規格)のトランザクション層の一部の機能を含む上位のプロトコルとして、SBP-2(Serial Bus Protocol-2)と呼ばれるプロトコルが提案されている。このSBP-2(SBP)は、SCSIのコマンドセットをIEEE1394のプロトコル上で利用可能にするために提案されたものである。このSBP-2を用いれば、既存のSCSI規格対応の電子機器で使用されていたコマンドセットに最小限の変更を加えて、IEEE1394規格の電子機器に使用できるようになる。従って、電子機器の設計や開発を容易化できる。
1.1 SBP-2
IEEE1394(IEEE1394−1995、P1394a、P1394b等)のプロトコルは、トランザクション層、リンク層、物理層により構成される。そしてIEEE1394(広義には第1のインターフェース規格)のトランザクション層の一部の機能を含む上位のプロトコルとして、SBP-2(Serial Bus Protocol-2)と呼ばれるプロトコルが提案されている。このSBP-2(SBP)は、SCSIのコマンドセットをIEEE1394のプロトコル上で利用可能にするために提案されたものである。このSBP-2を用いれば、既存のSCSI規格対応の電子機器で使用されていたコマンドセットに最小限の変更を加えて、IEEE1394規格の電子機器に使用できるようになる。従って、電子機器の設計や開発を容易化できる。
図1は、SBP-2(広義には第1のインターフェース規格の上位の第1のプロトコル)の処理の概要を示すフローチャートである。SBP-2では、まず、接続機器の確認を行うためのコンフィギュレーションROMのリード処理が行われる(ステップT1)。次にイニシエータ(例えばパーソナルコンピュータ)がターゲット(ロジカルユニット)に対するアクセス権(バスの使用権)を獲得するためのログイン処理が行われる(ステップT2)。具体的には、イニシエータにより作成されたログインORB(Operation Request Block)を用いてログイン処理が行われる。次に、フェッチエージェントの初期化が行われる(ステップT3)。そしてコマンドブロックORB(コマンドパケット)を用いてコマンド処理が行われ(ステップT4)、最後に、ログアウトORBを用いてログアウト処理が行われる(ステップT5)。
図1のステップT4のコマンド処理においては、図2のA1に示すように、イニシエータがライト要求パケットを送信して(ライト要求トランザクションを発行して)、ターゲットのドアベルレジスタをリングする。するとA2に示すように、ターゲットがリード要求パケットを送信し、イニシエータが対応するリード応答パケットを返す。これにより、イニシエータが作成したORB(コマンドブロックORB)が、ターゲットのデータバッファにフェッチされ、ターゲットはフェッチされたORBに含まれるコマンドを解析する。
そしてORBに含まれるコマンドがSCSIのライトコマンドであった場合には、A3に示すように、ターゲットがリード要求パケットをイニシエータに送信し、イニシエータが対応するリード応答パケットを返す。これにより、イニシエータのデータバッファに格納されているデータがターゲットに送信される。そしてターゲットのロジカルユニットがストレージデバイスである場合には、送信されたデータがストレージデバイスに書き込まれる。
一方、ORBに含まれるコマンドがSCSIのリードコマンドであった場合には、図3のB1に示すように、ターゲットは、一連のライト要求パケットをイニシエータに送信する。これによりターゲットのロジカルユニットがストレージデバイスである場合には、ストレージデバイスから読み出されたデータが、イニシエータのデータバッファに転送される。
SBP-2によればターゲットは、自身が都合の良いときに要求パケットを作成して(トランザクションを発行して)、データを送受信できる。従って、イニシエータとターゲットが同期して動く必要がなくなるため、データ転送効率を高めることができる。
なお図1のステップT2のログイン処理は、ターゲットが、図4(A)のログインORBをイニシエータから受信し、図4(B)のログイン応答のパケットをイニシエータに返すことで実現される。例えばターゲットが複数のロジカルユニット(ハードディスクドライブとCD−Rドライブ)を有する場合がある。この場合には図4(A)に示すようにイニシエータは、ログインを希望するロジカルユニット番号LUNを書き込んだログインORBを作成する。するとターゲットは図4(B)に示すように、そのロジカルユニットについてのログイン識別番号LOGIN_IDやフェッチエージェント(コマンドブロックエージェント)のアドレス(エージェントCSRのベースアドレス)をログイン応答のパケットに書き込んでイニシエータに返す。例えばイニシエータが、バスリセット発生後に所望のロジカルユニットにリコネクト要求する場合には図4(C)に示すように、ログイン識別番号LOGIN_IDを書き込んだリコネクトORBを作成する。またイニシエータが、コマンドブロックORBを用いてロジカルユニットとの間でデータ転送を行う場合には、そのロジカルユニットに対応するフェッチエージェント(コマンドブロックエージェント)のアドレス(図4(B)参照)にアクセスする。これによりターゲットは、イニシエータからのコマンドブロックORBが、複数のロジカルユニットのうちのどのロジカルユニット用のORBなのかを認識できる。
1.2 バスリセット
IEEE1394では、電源が投入されたり、途中でデバイスの抜き差しが発生すると、バスリセットが発生(発行)する。即ち各ノードはポートの電圧変化を監視している。そしてバスに新たなノードが接続されるなどしてポートの電圧に変化が生じると、この変化を検知したノードは、バス上の他のノードに対して、バスリセットが発生したことを知らせる。また各ノードの物理層は、バスリセットが発生したことをリンク層に伝える。
IEEE1394では、電源が投入されたり、途中でデバイスの抜き差しが発生すると、バスリセットが発生(発行)する。即ち各ノードはポートの電圧変化を監視している。そしてバスに新たなノードが接続されるなどしてポートの電圧に変化が生じると、この変化を検知したノードは、バス上の他のノードに対して、バスリセットが発生したことを知らせる。また各ノードの物理層は、バスリセットが発生したことをリンク層に伝える。
そしてバスリセットが発生すると、トポロジの情報(ノードID等)がクリアされ、その後、トポロジー情報が自動的に再設定される。即ちバスリセット後、ツリー識別、自己識別が行われる。その後、アイソクロナスリソースマネージャ、サイクルマスタ、バスマネージャ等の管理ノードが決定され、通常のパケット転送が再開される。このようにIEEE1394では、バスリセット後にトポロジ情報が自動的に再設定されるため、電子機器のケーブルを自由に抜き差しできるようになり、いわゆるホットプラグを実現できる。
ところでSBP-2のデータ転送では、ハードディスクドライブとCD−Rドライブというように複数のロジカルユニットをターゲットが有する場合がある。この場合には図1のステップT2のログイン処理も各ロジカルユニット毎に行われるため、複数のログインが併存することになる。
またデバイスの抜き差しなどが行われてバスリセットが発生すると、イニシエータは、前のログイン状態を継続するために図4(C)のリコネクトORBを作成して、リコネクト要求を行う。そして複数のロジカルユニットに対応した複数のログインが併存する場合には、イニシエータからターゲットに対して複数のリコネクト要求が来ることになる。
例えばターゲットがロジカルユニットLUN1、LUN2を有しており、イニシエータとロジカルユニットLUN1との間でのデータ転送の途中で、バスリセットが発生したとする。この場合に、ロジカルユニットLUN1との間でデータ転送を行うイニシエータ(パーソナルコンピュータ)のアプリケーションプログラムと、ロジカルユニットLUN2との間でデータ転送を行うイニシエータのアプリケーションプログラムとは異なる場合が多い。従って、バスリセット前にデータ転送を行っていた方であるロジカルユニットLUN1に対するリコネクト要求が、バスリセット後に最初に来るとは限らない。
そしてバスリセット後に、ロジカルユニットLUN1ではなくロジカルユニットLUN2との間のデータ転送を優先して行ってしまうと、LUN1との間でのデータ転送が途中で中断されてしまい、不具合が生じる可能性がある。例えばロジカルユニットLUN1がCD−Rドライブの場合には、コマンド中断のためにCD−Rドライブに対してリセットが発行され、CD−Rの書き込みエラーが生じるなどの問題が判明した。
2.全体構成
以上のような問題を解決できるデータ転送制御システム及びこれを含む電子機器の全体構成例を図5に示す。なお、以下では、ターゲットのロジカルユニットがストレージデバイス(ハードディスクドライブや、CD−R・CD−RW・DVD・DVD−R・DVD−RAMなどの光ディスクドライブ)である場合について例にとり説明するが、本発明はこれに限定されない。
以上のような問題を解決できるデータ転送制御システム及びこれを含む電子機器の全体構成例を図5に示す。なお、以下では、ターゲットのロジカルユニットがストレージデバイス(ハードディスクドライブや、CD−R・CD−RW・DVD・DVD−R・DVD−RAMなどの光ディスクドライブ)である場合について例にとり説明するが、本発明はこれに限定されない。
データバッファ4を有するパーソナルコンピュータ2(以下、適宜、PCと呼ぶ)と電子機器8とは、IEEE1394に準拠したBUS1(第1のバス。シリアルバス)により接続される。そして電子機器8は、データ転送制御システム10とロジカルユニット100-1、100-2(以下、適宜、LUN1、LUN2と呼ぶ)を有する。なお図5ではロジカルユニットが2個の場合(マスターとスレーブ)を示しているが、ロジカルユニットは3個以上であってもよい。また電子機器8には、図示しないシステムCPU、システムメモリ(ROM、RAM)、操作部、或いは信号処理デバイス等を含めることができる。
データ転送制御システム10は、転送コントローラ12、バッファコントローラ38、データバッファ40を含む。なおこれらの一部を省略する構成としてもよい。
転送コントローラ12は、BUS1(第1のバス)に接続されるPC(広義にはデバイス)と、BUS2(第2のバス)に接続される複数のロジカルユニットLUN1、LUN2との間でのデータ転送を制御するコントローラである。
バッファコントローラ38は、転送データを一時的に格納するデータバッファ40へのアクセス(書き込みアクセス、読み込みアクセス)を制御するコントローラである。バッファコントローラ38はポインタ管理部39を含む。このポインタ管理部39は、データバッファ40のポインタをリングバッファ方式で管理し、書き込み用、読み込み用の複数のポインタを更新する処理を行う。またバッファコントローラ38には、バッファコントローラ38の制御のためのレジスタや、データバッファ40へのバス接続を調停する調停回路や、各種の制御信号を生成するシーケンサなどを含めることができる。
データバッファ40(パケットバッファ)は、転送データ(パケット)を一時的に格納するためのバッファ(メモリ)であり、SRAM、SDRAM、或いはDRAMなどのハードウェアにより構成される。なお本実施形態では、データバッファ40は、ランダムアクセスが可能になっている。またデータバッファ40を、データ転送制御システム10に内蔵せずに、外付けにしてもよい。
転送コントローラ12は、物理層(PHY)回路14、リンク層(&トランザクション)回路20、SBP-2回路22、インターフェース回路30、CPU50(広義にはプロセッサ)を含む。なお転送コントローラ12は、図5に示す全ての回路ブロックを含む必要はなく、その一部を省略してもよい。
物理層回路14は、物理層のプロトコルをハードウェアにより実現するための回路であり、リンク層回路20により使用されるロジカルシンボルを電気信号に変換する機能を有する。リンク層回路20は、リンク層のプロトコルやトランザクション層のプロトコルの一部をハードウェアにより実現するための回路であり、ノード間でのパケット転送のための各種サービスを提供する。これらの物理層回路14、リンク層回路20の機能により、IEEE1394に準拠したデータ転送を、BUS1(第1のバス)を介してPC(パーソナルコンピュータ2)との間で行うことが可能になる。
SBP-2回路22(広義には転送実行回路)は、SBP-2のプロトコルの一部やトランザクション層の一部をハードウェアにより実現する回路である。このSBP-2回路22の機能により、転送データを一連のパケットに分割し、分割された一連のパケットを連続転送する処理が可能になる。
インターフェース回路30は、ロジカルユニットLUN1、LUN2とのインターフェース処理を行う回路である。このインターフェース回路30の機能により、ATA(AT Attachment)、ATAPI(ATA Packet Interface)に準拠したデータ転送を、BUS2(第2のバス)を介してロジカルユニットLUN1、LUN2との間で行うことが可能になる。
そして物理層回路14、リンク層回路20、インターフェース回路30などを設けることで、IEEE1394(広義には第1のインターフェース規格)とATA(IDE)/ATAPI(広義には第2のインターフェース規格)の変換ブリッジ機能をデータ転送制御システム10に持たせることが可能になる。
インターフェース回路30が含むDMAコントローラ32は、BUS2を介してロジカルユニットLUN1、LUN2との間でDMA(Direct Memory Access)転送を行うための回路である。なお、BUS2に接続されるロジカルユニットLUN1、LUN2は、各々、ATA(IDE)/ATAPIに準拠したデータ転送を行うためのインターフェース回路102-1、102-2と、ストレージ106-1、106-2へのアクセス制御(書き込み又は読み出し制御)を行うアクセス制御回路104-1、104-2と、ハードディスクや光ディスクなどのストレージ106-1、106-2を含む。
CPU50(広義にはプロセッサ)は、データ転送の制御や装置全体の制御を行う。CPU50はコミュニケーション部52、マネージメント部60、フェッチ部70、タスク部80を含む。なおこれらの一部を省略する構成としてもよい。CPU50が含むこれらの各部は、CPUのハードウェア回路とCPU上で動作するプログラム(ファームウェア)により実現でき、このプログラム(処理モジュール)は、電気的にデータの書き換えが可能な不揮発性メモリ(EEPROM)などのメモリに格納される。但しCPU50が含むこれらの各部の一部又は全部を、専用のハードウェア回路(ASIC)により実現してもよい。
コミュニケーション部52は、物理層回路14やリンク層回路20などのハードウェア回路との間のインターフェース処理を行う。マネージメント部60(マネージメントエージェント)は、ログイン、リコネクト、ログアウト、リセット等の管理処理を行う。例えばイニシエータがターゲットにログインを要求した場合には、まず、このマネージメント部60がこのログイン要求を受け付ける。
フェッチ部70(フェッチエージェント)は、ORB(Operation Request Block)受信や、ステータス発行や、タスク部80へのコマンド依頼などの処理を行う。フェッチ部70は、単一の要求しか扱うことができないマネージメント部60とは異なり、イニシエータからの要求により自身がフェッチしたORBのリンクリストも扱うことができる。なおマネージメント部60、フェッチ部70は、例えば第1、第2のマネージメント部(第1、第2のマネージメントエージェント)、第1、第2のフェッチ部(第1、第2のフェッチエージェント)というように、各ロジカルユニットLUN1、LUN2毎に設けることができる。
フェッチ部70はウェイト処理部72、コマンド比較部74、転送再開部76を含む。なおこれらの一部を省略する構成としてもよい。ここでウェイト処理部72は、ORB(広義には、コマンドパケット、データ転送オペレーション要求のためのコマンドパケット。他の説明でも同様)についての各種処理(ORBにより指示されるコマンドの発行処理、そのコマンドに基づくデータ転送の開始処理、或いはそのデータ転送についてのステータスの発行処理等)のウェイト処理を行う。
具体的には、第1のロジカルユニット(LUN1、LUN2の一方)用のORB(コマンドブロックORB)の処理中(コマンド発行中、データ転送中)にバスリセットが発生し、バスリセット発生後に受信したORBが第2のロジカルユニット(LUN1、LUN2の他方)用のORBであった場合には、受信した第2のロジカルユニット用のコマンドパケットの処理をウェイトする。このウェイト処理では、例えば、第2のロジカルユニット用のコマンドパケットの処理を所定時間(N秒)だけウェイトし(タイマーをスタートし)、所定時間だけ処理をウェイトしてもウェイト状態が解除されなかった場合(タイマーがキャンセルされなかった場合)に、BUS1に接続されるPC(広義にはデバイス)に対してエラーステータスを発行する。
一方、ウェイト処理部72は、バスリセット発生後に受信したコマンドパケットが第1のロジカルユニット用のコマンドパケットであった場合には、第1のロジカルユニットとの間でのデータ転送を再開するための処理(データ転送の再開を指示したり、コマンドのアボートを指示する処理等)を行う。
コマンド比較部74は、ORBの処理中にバスリセット(ノードのトポロジ情報をクリアするリセット)が発生した場合に、バスリセット発生前にBUS1を介して転送されてきたORB1の内容と、バスリセット発生後に同じロジカルユニットに対してBUS1を介して転送されてきたORB2の内容を比較する。
転送再開部76は、バスリセット前のORB1とバスリセット後のORB2の内容が同じであると判断された場合に、バスリセット発生時点のデータ転送の続き(バスリセット発生時点で転送したデータの次のデータ)からデータ転送を再開する処理を行う。
タスク部80(ストレージタスク部)は、ORBが含むコマンドの処理とDMA転送処理を実行する。このタスク部80は、コマンド処理部82、コマンドアボート部84を含む。
コマンド処理部82は、BUS1(IEEE1394等の第1のインターフェース規格の第1のバス)を介して転送されてきたORBについての各種処理を行う。具体的には、BUS1に接続されるPC(デバイス)から第1のロジカルユニット(LUN1、LUN2の一方)用のORB(コマンドパケット)を受信した場合には、ORBにより指示されるコマンド(SCSI、SPC−2のコマンド)に基づいて、BUS2(ATA/ATAPI等の第2のインターフェース規格の第2のバス)に接続される第1のロジカルユニットとの間でのデータ転送を開始する。またPCから第2のロジカルユニット(LUN1、LUN2の他方)用のORBを受信した場合には、ORBにより指示されるコマンドに基づいて、BUS2に接続される第2のロジカルユニットとの間でのデータ転送を開始する。更に具体的にはコマンド処理部82は、PCからORBを受信した場合に、ORBが含むコマンドをロジカルユニット(LUN1、LUN2)に対して発行して、BUS2を介したDMA転送(CPUを介在させないデータ転送)を開始する。
コマンドアボート部84は、ORBに基づきロジカルユニット(LUN1、LUN2)に対して発行したコマンド(SCSIのリードコマンド、ライトコマンド等)を、そのORB(コマンド)に基づき開始したDMA転送(連続したデータ転送)の完了後にアボートする。より具体的にはコマンドアボート部84は、バスリセット前のORB1とバスリセット後の同じロジカルユニットに対するORB2の内容が異なると判断された場合に、ORB1に基づきロジカルユニットに対して発行したコマンドを、そのORB1(コマンド)に基づき開始したDMA転送の完了後にアボート(中止、キャンセル)する。この場合、コマンドアボート部84は、ORBに基づき開始したDMA転送が完了するまで、ロジカルユニットとの間でダミーデータが転送されるように制御を行う。
バスの変換ブリッジ機能を有する本実施形態のデータ転送制御システム10では、通常は、ロジカルユニットからBUS2を介して転送されてきたデータは、BUS1を介してPCに転送される。またPCからBUS1を介して転送されてきたデータは、BUS2を介してロジカルユニットに転送される。これに対して、ダミーデータの転送時においては、ロジカルユニットからBUS2を介してダミーデータがデータ転送制御システム10に転送される一方で、このダミーデータはPCに転送されない。またPCからBUS1を介してデータがデータ転送制御システム10に転送されなくても、BUS2を介してロジカルユニットにダミーデータを転送する。
3.処理
次に、本実施形態のデータ転送制御システムの処理例について図6〜図8のフローチャートを用いて説明する。図6はバスリセットが発生していない通常時での処理のフローチャートである。
次に、本実施形態のデータ転送制御システムの処理例について図6〜図8のフローチャートを用いて説明する。図6はバスリセットが発生していない通常時での処理のフローチャートである。
PCからORBを受信すると(ステップS1)、他方のロジカルユニットがBUS2(ATA/ATAPI)を使用中か否かを判断する(ステップS2)。そして他方のロジカルユニットによりBUS2が使用中である場合には、タイマをスタートして、受信したORBの処理をウェイトする(ステップS3)。例えばロジカルユニットLUN1がBUS1を使用中(BUS2を介してLUN1との間でデータ転送中)に、ロジカルユニットLUN2用のORBを受信すると、LUN2用のORBの処理がウェイトされる。例えばフェッチ部70としてLUN1、LUN2用の第1、第2のフェッチ部(第1、第2のフェッチエージェント)がある場合には、第1のフェッチ部によるLUN1用のORBの処理中に、LUN2用のORBが受信されると、第2のフェッチ部によるLUN2用のORBの処理がウェイトされる。
次に、ORBにより指示されるコマンド(ライトコマンド、リードコマンド等)を、そのORBに対応するロジカルユニットに対して発行して、BUS2を介したデータ転送(DMA転送)を開始する(ステップS4)。そしてデータ転送が完了するとPCに対してステータス(正常ステータス)を発行する(ステップS5)。
次に、他方のロジカルユニットがウェイト状態か否かを判断し(ステップS6)、ウェイト状態である場合には、タイマをキャンセルして、その他方のロジカルユニットのウェイト状態を解除する(ステップS7)。例えばステップS2、S3で、BUS1をLUN1が使用中にLUN2用のORBが受信され、LUN2用のORBの処理がウェイトされていたとする。するとステップS6、S7では、このLUN2用のORBの処理のウェイト状態が解除される。このウェイト状態の解除は、例えばLUN1用の第1のフェッチ部が行い、これによりLUN2用の第2のフェッチ部はLUN2用のORBの処理を開始できる。
図7はバスリセット発生時の処理のフローチャートである(但しバスリセット前に処理を実行していた場合に限定される。バスリセット前に処理を実行していない場合は、図6の処理を行う)。バスリセット発生後にORBを受信すると(ステップS11)、受信したORBが他方のロジカルユニット用のORBか否かを判断する(ステップS12)。そして他方のロジカルユニット用のORBである場合には、タイマをスタートして、受信したORBの処理をウェイトする(ステップS13)。例えばLUN1用のORBの処理中にバスリセットが発生し、バスリセット発生後にLUN2用のORBを受信した場合には、LUN2用のORBの処理がウェイトされる。
受信したORBが他方のロジカルユニット用のORBではない場合には、ORBについてのデータ転送を再開するための処理(コマンド比較処理、データ転送再開処理、コマンドアボート処理等)を行う(ステップS14)。そしてデータ転送が完了するとPCに対してステータス(正常ステータス)を発行する(ステップS15)。
次に、他方のロジカルユニットがウェイト状態か否かを判断し(ステップS16)、ウェイト状態である場合には、タイマをキャンセルして、その他方のロジカルユニットのウェイト状態を解除する(ステップS17)。例えばステップS12、S13で、バスリセット発生後にLUN2用のORBが受信され、LUN2用のORBの処理がウェイトされていたとする。するとステップS16、S17では、このLUN2用のORBの処理のウェイト状態が解除される。このウェイト状態の解除は、例えばLUN1用の第1のフェッチ部が行い、これによりLUN2用の第2のフェッチ部はLUN2用のORBの処理を開始できる。
図8は図6のステップS3、図7のステップS13のウェイト処理のフローチャートである。まず、タイマをスタートし(ステップS21)、タイマから定期的な割り込みが来るのを待つ(ステップS22)。例えばCPU50が内蔵するタイマは、タイマ処理がスタートされると、所定時間(例えば50msec)毎に定期的に割り込みを発生する。データ転送制御システム10(ウェイト処理部72)は、この定期的な割り込みをカウントすることで経過時間を計時する。そしてタイマからの割り込みに基づき所定時間であるN秒(例えば10秒)が経過したと判断された場合には、そのORBについての処理は時間切れになったと判断し、PCに対してエラーステータスを発行する(ステップS24)。一方、N秒が経過していない場合には、ウェイト状態が解除されたか否か(図6のステップS7、図7のステップS17)を判断し(ステップS25)、解除されていない場合にはステップS22の割り込み待ち状態に戻る。
例えば図7のステップS12、S13で、LUN1用のORBの処理中にバスリセットが発生し、バスリセット発生後にLUN2用のORBを受信したとする。すると、図8のステップS22、S23で、LUN2用のORBの処理が所定時間(N秒)だけウェイトされる。そして所定時間だけ処理をウェイトしてもウェイト状態が解除されなかった場合には(ステップS25)、PCに対してエラーステータスが発行される(ステップS24)。
図9(A)〜図13(C)は本実施形態の処理を模式的に説明する図である。図9(A)〜図11はバスリセットが発生していない通常時の処理の説明図である。
図9(A)に示すように、イニシエータであるPCは、データ転送に先立って、ターゲットのロジカルユニットLUN1、LUN2に対してログインする。これによりLUN1、LUN2用のログインというように複数のログインが同時に併存することになる。これらのLUN1、LUN2のログインは、図4(A)のログインORBのロジカルユニット番号LUNにより区別される。
図9(B)に示すようにデータ転送制御システムは、LUN1用のORB(コマンドブロックORB)を受信すると、LUN1との間でのデータ転送を開始する。例えばLUN1のストレージにデータを書き込む場合には、イニシエータであるPCはライトコマンドを含むORBを作成し、データ転送制御システム(第1のフェッチ部)はこのORBをPCから受信(フェッチ)する(図2のA2参照)。そしてデータ転送制御システムは、PCのデータバッファからBUS1を介してライトデータを受信する(図2のA3参照)。またデータ転送制御システムは、ORBに含まれるライトコマンドをLUN1に発行して、PCから受信したライトデータをBUS2を介してLUN1に送信(DMA転送)する。そしてLUN1は、受信したライトデータをストレージに書き込む。
一方、LUN1のストレージからデータを読み出す場合には、PCはリードコマンドを含むORBを作成し、データ転送制御システムはこのORBをPCから受信する。そしてデータ転送制御システムは、ORBに含まれるリードコマンドをLUN1に発行して、LUN1のストレージから読み出されたリードデータをBUS2を介して受信する。またデータ転送制御システムは、LUN1から受信したリードデータをBUS1を介してPCに送信する(図3のB1参照)。
図9(A)に示すように本実施形態では複数のログインが併存する。従って図9(C)に示すように、LUN1がBUS1を使用中(データ転送中)に、PCからLUN2用のORB(コマンドブロックORB)を受信する場合がある。このような場合に本実施形態では図9(C)のF1や図11のG1に示すように、LUN2用のORBについての処理をウェイトする。これによりBUS2をLUN1とLUN2で共用できるようになる。
図10(A)や図11のG2に示すようにデータ転送制御システムは、データ転送が完了すると、PCに対してステータス(正常ステータス)を発行する。するとLUN2の処理のウェイト状態が解除され、図10(B)や図11のG3に示すようにデータ転送制御システムは、LUN2との間でのデータ転送を開始する。そして図10(C)や図11のG4に示すように、データ転送が完了すると、PCに対してステータスを発行する。以上のようにすることで本実施形態では、ターゲットが複数のロジカルユニットを有する場合にも、PCと複数のロジカルユニットとの間での適正なデータ転送制御を実現している。
図12(A)〜図13(C)はバスリセット発生時の処理の説明図である。図12(A)に示すようにデータ転送制御システムがLUN1用のORBをPCから受信し、LUN1用のORBの処理中(データ転送中)にバスリセットが発生したとする。この時、本実施形態では図9(A)に示すように複数のログインが併存するため、バスリセット発生後に最初にLUN1用のORBをPCから受信するとは限らず、LUN2用のORBを最初に受信する場合がある。そしてLUN2用のORBを受信した時に、このLUN2用のORBの処理を開始してしまうと、LUN1用のORBのデータ転送の継続性が維持されなくなり、LUN1のストレージ(CD−R等)へのデータ書き込みエラーなどが生じる可能性がある。
そこで本実施形態では図12(B)のH1に示すように、データ転送制御システムは、バスリセット発生後にLUN1用のORBではなくLUN2用のORBを受信した場合には、LUN2用のORBの処理をウェイトする。そして図12(C)に示すように、LUN1用のORBをPCから受信すると、LUN1用のORBについてのデータ転送を再開する。即ちバスリセット発生時点のデータ転送の続きからデータ転送を再開する。これにより、LUN1のストレージへのデータ書き込みエラーを防止できる。
図13(A)に示すようにデータ転送制御システムは、データ転送が完了すると、PCに対してステータスを発行する。するとLUN2の処理のウェイト状態が解除され、図13(B)に示すようにデータ転送制御システムは、LUN2との間でのデータ転送を開始する。そして図13(C)に示すように、データ転送が完了すると、PCに対してステータスを発行する。以上のようにすることで本実施形態では、ターゲットが複数のロジカルユニットを有する場合にも、PCと複数のロジカルユニットとの間での適正なデータ転送制御を実現している。
なおSBP-2では、バスリセット前にターゲットのロジカルユニットにログインしていたPCは、バスリセット後、リコネクト時間TRが経過するまでの間は、優先的にそのロジカルユニットに対してリコネクト要求できる。そしてPCがリコネクト要求を行うことなくリコネクト時間TRが経過してしまうと、リコネクトが時間切れとなり、リコネクトが不成功であったと判断される。このようにリコネクトが不成功になった場合に本実施形態では、図14(B)に示すように、バスリセット発生後に他方のロジカルユニット(LUN2)に対するORB4がウェイト状態であり、かつバスリセット発生前に処理中であったロジカルユニット(LUN1)に対するリコネクトが不成功であったときに、ウェイト時間TWの経過を待つことなく、タイマをキャンセルしてORB4の処理のウェイト状態を解除している。これにより、無駄な時間を待つことなくウェイト状態を解除できるため、処理を効率化できる。
例えば図14(A)に示すようにLUN1用のORB1の処理中にバスリセットが発生し、バスリセット発生後にLUN2用のORB4を受信すると、本実施形態ではLUN2用のORB4の処理は(最大で)ウェイト時間TWだけウェイトされる。そしてPCがLUN1に対してリコネクト時間TR内にリコネクトし、LUN1用のORB3の処理が完了するのを待つことになる。
ところが図14(B)に示すようにLUN1に対するPCのリコネクトが不成功であった場合、すなわちバスリセット発生後にPCによりLUN1に対してリコネクト時間TRを経過してもリコネクトがなされなかった場合には、LUN2用のORB4の処理をウェイト時間TWだけウェイトする必要性がなくなる。またウェイト時間TW(例えば10秒)はリコネクト時間TR(例えば1秒)に比べて長いのが一般的である。従ってLUN1に対するリコネクトが不成功となった時点で(正確にはORB1(コマンド)のアボート後に)、LUN2用のORB4の処理のウェイト状態を解除すれば、ウェイト時間TWの経過をウェイトする場合に比べて、LUN2の処理を早く開始でき、処理の効率化を図れる。
また所定時間(ウェイト時間TW)だけ処理をウェイトしてもウェイト状態が解除されず時間切れとなった場合(ウェイト時間TWを経過しても、LUN1用のORB3の処理が完了しなかった場合)には、図14(C)に示すようにPCに対してORB4のエラーステータスを発行する。
4.詳細な処理
次に、本実施形態のデータ転送制御システムの詳細な処理例について図15〜図17のフローチャートや図18〜図20の説明図を用いて説明する。
次に、本実施形態のデータ転送制御システムの詳細な処理例について図15〜図17のフローチャートや図18〜図20の説明図を用いて説明する。
コマンドCMD1を含むORB1(バスリセット発生前のコマンドブロックORB。他の説明でも同様)を受信すると(ステップS31)、他方のロジカルユニットがBUS2を使用中か否かを判断する(ステップS32)。使用中である場合には、図8のウェイト処理により、受信したORB1の処理をウェイトする(ステップS33)。
次に、バスリセットが発生したか否かを判断する(ステップS34)。バスリセットが発生していない場合には、図18のD1に示すように、ロジカルユニット(ストレージデバイス)に対して、受信したORB1に含まれるコマンドCMD1を発行する(ステップS35)。即ちSBP-2では、SCSIに類似したコマンド(リード、ライト、モードセンス、モードセレクト等)が使用されており、ロジカルユニットは、これらのコマンドを用いて、リード、ライトなどの動作を行う。本実施形態のデータ転送制御システム10は、ORB1に含まれるコマンドCMD1を取り出し、このCMD1(変換後のCMD1)を、インターフェース回路、BUS2(ATA/ATAPI)を介してロジカルユニットに発行する。
CMD1を発行した後、バスリセットが発生したか否かを判断する(ステップS36)。バスリセットが発生していない場合には、BUS2を介してロジカルユニットからDMARQが来たか否かを判断する(ステップS37)。即ちATA/ATAPIに準拠するBUS2では、DMA転送要求であるDMARQや、DMARQに対するアクノリッジであるDMACKなどの信号が定義されている。そしてロジカルユニットのインターフェース回路がDMARQをアクティブにした後、データ転送制御システムのインターフェース回路がDMACKをアクティブにすると、DMA転送が開始する。
DMARQが来ていない場合には、バスリセットが発生したか否かを判断する(ステップS38)。バスリセットが発生していない場合には、DMARQが来たか否かを判断し、DMARQが来るまでステップS37、S38の判断を繰り返す。
DMARQが来ると、DMACKをアクティブにする処理等を行って、DMA転送の開始を指示する(ステップS39)。そして図18のD2、D3に示すように、BUS1(IEEE1394)、BUS2(ATA/ATAPI)を介したデータ転送が行われる。
次に、バスリセットが発生したか否かを判断し(ステップS40)、DMA転送が完了すると(ステップS41)、ORB1についてのコマンド処理を終了し(ステップS42)、ORB1のステータスをPC(パーソナルコンピュータ2)に発行する(ステップS43)。このようにして、ORB1についての一連のコマンド処理が終了する。
次に、他方のロジカルユニットがウェイト状態か否かを判断する(ステップS44)。そして他方のロジカルユニットがウェイト状態である場合には、タイマをキャンセルしてウェイト状態を解除する(ステップS45)。
図15のステップS34、S36、S38、S40でバスリセットが発生したと判断されると、バスリセット時処理が行われる(ステップS46)。図16、図17はバスリセット時処理のフローチャートである。
まず図18のD4に示すように、イニシエータであるPCからのリコネクト要求を待つリコネクト処理が行われる(ステップS51)。PCがリコネクトに成功しなかった場合にはステップS58の処理に移行する。リコネクトが成功し、コマンドCMD2を含むORB2(バスリセット後のコマンドブロックORB。他の説明でも同様)を受信すると(ステップS53)、受信したORB2が他方のロジカルユニット用のORBか否かを判断する(ステップS54)。そして他方のロジカルユニット用のORBであった場合には、受信したORB2についての処理をウェイトする(ステップS55、図8)。
他方のロジカルユニット用のORBではなかった場合には、図18のD5に示すように、バスリセット前のORB1(CMD1)とバスリセット後のORB2(CMD2)の内容を比較するコマンド比較処理を行う(ステップS56)。具体的には図19に示すように、ORBが含むページテーブル存在フラグPや、データサイズや、コマンドブロック(コマンドセット)フィールドの中のオペレーションコード(ライトコマンド、リードコマンドなどを区別するコード)やデータ長を比較する。またORBが、ORBの識別情報(例えば順序番号)を含む場合には、この識別情報を比較してもよい。なお、ページテーブルを使用していない場合はデータディスクリプタの値を比較し、ページテーブルを使用している場合は、セグメント数を比較する。以上のような情報を比較することで、バスリセット前のORB1とバスリセット後のORB2が同一か否かを簡素な処理で確実に判断できる。
ORB1とORB2の内容が同一であると判断された場合には、ORB1についてのデータ転送の再開処理を行う(ステップS57)。これにより、図18のD6に示すように、バスリセット発生時点の続きからデータ転送を再開できるようになる。なおこのデータ転送再開処理では、DMA転送の残りデータの転送処理と、図15のステップS41〜S43に相当する処理が行われる。
一方、図20のE4に示すようにORB1とORB2の内容が同一でないと判断された場合には、ORB1が含むCMD1をロジカルユニットに対して既に発行しているか否かを判断する(ステップS58)。CMD1を発行していない場合には、コマンドのアボート処理を行うことなく、新たに送られてきたORB2についての処理に移行する(ステップS59)。このように本実施形態では、CMD1の処理中にバスリセットが発生した場合において、CMD1が発行済みと判断された場合にはアボート処理(ステップS63)を行うが、CMD1が未発行と判断された場合にはアボート処理を行わない。その後、ORB2の処理(ステップS59)に移行する。
一方、ロジカルユニットにCMD1を既に発行している場合には、DMA転送を既に開始しているか否かを判断する(ステップS60)。そして開始している場合には、図20のE5に示すように、コマンドCMD1のアボート処理に移行する(ステップS63)。一方、CMD1未発行の場合には、DMA転送要求DMARQが来ているか否かを判断し(ステップS61)、DMARQが来ていない場合にはCMD1のアボート処理に移行する。一方、DMARQが来ている場合には、DMA転送の開始を指示した後(ステップ62)、CMD1のアボート処理に移行する。CMD1のアボート処理が終了すると、ORB2(CMD2)の処理に移行する(ステップS59)。このORB2の処理では、図15のステップS35〜S43に相当する処理が行われる。
次に、他方のロジカルユニットがウェイト状態か否かを判断する(ステップS64)。そして他方のロジカルユニットがウェイト状態である場合には、タイマをキャンセルしてウェイト状態を解除する(ステップS65)。
図17は、CMD1のアボート処理に関するフローチャートである。まず、DMA転送が動作中か否かを判断する(ステップS71)。例えば、図16のステップS60でDMA転送が開始していないと判断され、ステップS61でDMARQが未だ来ていないと判断された場合には、図17のステップS71でDMA転送が動作中ではないと判断される可能性がある。この場合には、ステップS72〜S78のダミーデータの転送制御処理を行うことなく、コマンドCMD1をアボートする。このようにすることで、ステップS72〜S78の処理を省くことができ、処理の効率化を図れる。
DMA転送が動作中であると判断された場合には、コマンドCMD1がリードコマンドかライトコマンドかを判断する(ステップS72)。CMD1がリードコマンドである場合には、図20のE6に示すように、CMD1についてのDMA転送が完了しているか否かを判断する(ステップS73)。そして、DMA転送が完了するまで、ロジカルユニットとの間で、ステップS73〜S75のダミーデータの転送(リード)処理を行う。そしてDMA転送が完了したと判断されると、図20のE7に示すようにコマンドCMD1のアボート処理を行う(ステップS79)。
一方、CMD1がライトコマンドである場合には、CMD1についてのDMA転送が完了しているか否かを判断する(ステップS76)。そして、DMA転送が完了するまで、ロジカルユニットとの間で、ステップS76〜S78のダミーデータの転送(ライト)処理を行う。そしてDMA転送が完了したと判断されると、コマンドCMD1のアボート処理を行う(ステップS79)。
なお、コマンドのアボート処理は、例えば、ATA/ATAPIで定義されるソフトウェアリセットにより実現できる。具体的には、ロジカルユニットLのインターフェース回路が有するデバイス制御用レジスタのSRSTビットに「1」をセットすることで、このソフトウェアリセットが実行される。このレジスタへの値のセットは、BUS2の信号CS[1:0]、DA[2:0]、DIOW、DIOR等を用いたPIO転送により、データ転送制御システムのインターフェース回路が、ロジカルユニットのインターフェース回路のレジスタにアクセスすることで実現できる。
以上のように本実施形態では、バスリセット前にロジカルユニットに発行したコマンドCMD1(図15のステップS35、図20のE1参照)を、ORB1(CMD1)に基づき開始したDMA転送(図15のステップS39、図16のステップS62、図20のE3参照)が完了した後にアボートしている(図17のステップS79、図20のE7参照)。このようにすることで、ロジカルユニットとのBUS2を介したDMA転送が正常に完了した後に、コマンドCMD1がアボートされるようになる。従って、ロジカルユニットは、DMA転送を正常に完了できるため、ロジカルユニットがハングアップする事態を防止できる。またコマンドCMD1をアボートするまでのBUS2を介したDMA転送は、ダミーデータ転送により行われるため、PCの処理に悪影響が及ぶこともない。
特にATA(IDE)/ATAPIのインターフェースを備えたロジカルユニット(ストレージデバイス)は、元々、PCの内蔵のものとして設計されており、DMA転送中のIEEE1394のバスリセットの発生を想定した設計は行われていない。従って、ロジカルユニットを、IEEE1394とATA/ATAPIのブリッジ機能を備えた本実施形態のデータ転送制御システムに接続すると、予期しないバスリセットの発生により、ロジカルユニットがハングアップする可能性が高い。本実施形態によれば、DMA転送の完了後にコマンドをアボートするため、このようなハングアップの発生を未然に防止できる。
5.ダミーデータの転送
次に、図17のステップS73〜S75、S76〜S78のダミーデータの転送処理について、図21(A)〜(E)、図22(A)〜(E)を用いて説明する。
次に、図17のステップS73〜S75、S76〜S78のダミーデータの転送処理について、図21(A)〜(E)、図22(A)〜(E)を用いて説明する。
図21(A)〜(E)は、ロジカルユニットのデータをPCがリードする場合(データ転送制御システムのデータ送信時)における、データ転送制御システムのデータバッファ40のポインタ制御についての説明図である。図21(A)〜(E)において、ポインタATXP1(第1のポインタ)は、BUS2(ロジカルユニット)からの転送データをデータバッファ40に書き込むためのポインタであり、BUS2からの転送データが書き込まれる毎に更新される。また、ポインタLTXP2(第2のポインタ)は、BUS1(PC、IEEE1394)への転送データをデータバッファ40から読み出すためのポインタであり、BUS1への転送データが読み出される毎に更新される。これらのポインタの更新は、ポインタ管理部39により行われる。
図21(A)に示すように、BUS2からの転送データがインターフェース回路30によりデータバッファ40に書き込まれる毎に、ポインタATXP1が更新され、その指示位置が下側方向(データの蓄積方向)に移動する。そして、ポインタATXP1はリングバッファ方式で管理されている。従って、図21(B)に示すように、ポインタATXP1が記憶領域の下側の境界BD2に達すると、ATXP1は記憶領域の上側の境界BD1に戻る(リングする)。
そしてATXP1=LTXP2と判断された場合(図17のステップS74)には、図21(C)に示すように、データバッファ40の記憶領域の全てにデータが蓄積されたことになる。なお図21(A)〜(E)において、斜線で示す部分が蓄積データを表している。
すると本実施形態では図21(D)に示すように、LTXP2のポインタレジスタに、LTXP2と同じ値が再度書き込まれる(図17のステップS77)。これにより、ポインタLTXP2がダミー更新され、記憶領域の全ての蓄積データが読み出されたのと同様の結果になる。そして、その後、図21(E)に示すようにポインタATXP1が更新され、擬似的な読み出しが行われた記憶領域にBUS2からの転送データが書き込まれる。そしてDMA転送が完了するまで(図17のステップS73)、図21(A)〜(E)のポインタ制御が繰り返され、BUS2との間でのダミーデータの転送処理が行われる。
以上のように本実施形態では、BUS2からの転送データが書き込まれる毎に更新されるATXP1(第1のポインタ)により、LTXP2(第2のポインタ)が追い越されないように、LTXP2をダミー更新することで、ダミーデータの転送制御をしている。
図22(A)〜(E)は、PCがロジカルユニットにデータをライトする場合(データ転送制御システムのデータ受信時)における、データバッファ40のポインタ制御について説明するための図である。図22(A)〜(E)において、ポインタARXP3(第3のポインタ)は、BUS2への転送データをデータバッファ40から読み出すためのポインタであり、BUS2への転送データが読み出される毎に更新される。またポインタLRXP4(第4のポインタ)は、BUS1からの転送データをデータバッファ40に書き込むためのポインタであり、BUS1からの転送データが書き込まれる毎に更新される。これらのポインタの更新は、ポインタ管理部39により行われる。
図22(A)に示すように、BUS2への転送データがデータバッファ40から読み出される毎に、ポインタARXP3が更新され、その指示位置が下側方向に移動する。そして、ポインタARXP3はリングバッファ方式で管理されている。従って、図22(B)に示すように、ポインタARXP3が下側の境界BD2に達すると上側の境界BD1に戻る。そしてARXP3=LRXP4と判断された場合(図17のステップS77)には、図22(C)に示すように、データバッファ40の記憶領域の全てのデータが読み出されたことになる。
すると本実施形態では、図22(D)に示すように、LRXP4のポインタレジスタに、LRXP4と同じ値が再度書き込まれる(図17のステップS78)。これにより、ポインタLRXP4がダミー更新され、記憶領域の全てにデータが書き込まれたのと同様の結果になる。そして、図22(E)に示すようにポインタARXP3が更新され、擬似的な書き込みが行われた記憶領域からBUS2への転送データが読み出される。そして、DMA転送が完了するまで(図17のステップS76)、図22(A)〜(E)のポインタ制御が繰り返され、BUS2との間でのダミーデータの転送処理が行われるようになる。
このように本実施形態では、BUS2への転送データが読み出される毎に更新されるARXP3(第3のポインタ)により、LRXP4(第4のポインタ)が追い越されないように、LRXP4をダミー更新することで、ダミーデータの転送制御を実現している。
以上のように本実施形態では、DMA転送が完了するまで、BUS2を介してダミーデータをロジカルユニット(LUN1、LUN2)との間で擬似的に転送し、DMA転送が完了した後に、コマンドCMD1をアボートしている。そしてPC側の転送データの読み出しや書き込みは、図21(D)、図22(D)に示すように、ポインタLTXP2、LRXP4のダミー更新より擬似的に行われる。従って、コマンドCMD1をアボートするまでDMA転送を継続することによる悪影響が、PCの処理に及ぶのを防止できる。そしてバスリセット後にPCが新たに送ってきたORB2(CMD2)の処理を、CMD1がアボートされた後に適正に実行することが可能になる。
なお、ポインタLTXP2、LRXP4のダミー更新の手法は、図21(A)〜図22(D)に示す手法に限定されず、少なくともポインタATXP1、ARXP3に追い越されないように、LTXP2、LRXP4を制御すればよい。また、ダミーデータの転送処理を、図21(A)〜図22(D)に示すようなポインタ制御ではなく、ダミーデータ転送用の専用のハードウェア回路を設けて実現してもよい。
なお、本発明は本実施形態に限定されず、本発明の要旨の範囲内で種々の変形実施が可能である。例えば、明細書又は図面中の記載において広義や同義な用語(第1のインターフェース規格、第2のインターフェース規格、第1のインターフェース規格の上位の第1のプロトコル、コマンドパケット、デバイス、プロセッサ等)として引用された用語(IEEE1394、ATA/ATAPI、SBP-2、ORB、PC、CPU等)は、明細書又は図面中の他の記載においても広義や同義な用語に置き換えることができる。
また本発明のデータ転送制御システム、電子機器の構成は、図5に示した構成に限定されず、種々の変形実施が可能である。例えば図5の各回路ブロック、機能ブロックの一部を省略したり、その接続関係を変更してもよい。また、第2のバス(BUS2)に接続されるロジカルユニットはストレージデバイスに限定されない。また物理層回路とリンク層回路とデータバッファの接続構成も図5に示す接続構成に限定されない。
また本実施形態では、ウェイト処理部、コマンド処理部、コマンドアボート部、コマンド比較部、転送再開部等の機能をファームウェア(プログラム)により実現する場合について説明したが、これらを機能の一部又は全部をハードウェア回路により実現してもよい。また本発明はIEEE1394におけるバスリセットに特に有用だが、これ以外にも、少なくともノードのトポロジー情報をクリアするようなリセットであれば適用できる。
また本発明は種々の電子機器(ハードディスクドライブ、光ディスクドライブ、光磁気ディスクドライブ、PDA、拡張機器、オーディオ機器、デジタルビデオカメラ、携帯電話、プリンタ、スキャナ、TV、VTR、電話機、表示デバイス、プロジェクタ、パーソナルコンピュータ或いは電子手帳等)に適用できる。
また、本実施形態では、IEEE1394、SBP-2、ATA/ATAPI規格でのデータ転送に本発明を適用した場合について説明した。しかしながら本発明は、例えばIEEE1394(P1394a)、SBP-2(SBP)、ATA/ATAPIと同様の思想に基づく規格や、IEEE1394、SBP-2、ATA/ATAPIを発展させた規格におけるデータ転送にも適用できる。
BUS1 第1のバス、 BUS2 第2のバス、 2 パーソナルコンピュータ(PC)、 8 電子機器(ターゲット)、 10 データ転送制御システム、 12 転送コントローラ、 14 物理層回路、 20 リンク層回路、 22 SBP-2回路、
30 インターフェース回路、 32 DMAコントローラ、 38 バッファコントローラ、 40 データバッファ、 50 CPU(プロセッサ)、 52 コミュニケーション部、 60 マネージメント部、 70 フェッチ部、 72 ウェイト処理部、 74 コマンド比較部、 76 転送再開部、 80 タスク部、82 コマンド処理部、 84 コマンドアボート部、 100-1、100-2 ロジカルユニット、
102-1、102-2 インターフェース回路、 104-1、104-2 アクセス制御回路、 106-1、106-2 ストレージ
30 インターフェース回路、 32 DMAコントローラ、 38 バッファコントローラ、 40 データバッファ、 50 CPU(プロセッサ)、 52 コミュニケーション部、 60 マネージメント部、 70 フェッチ部、 72 ウェイト処理部、 74 コマンド比較部、 76 転送再開部、 80 タスク部、82 コマンド処理部、 84 コマンドアボート部、 100-1、100-2 ロジカルユニット、
102-1、102-2 インターフェース回路、 104-1、104-2 アクセス制御回路、 106-1、106-2 ストレージ
Claims (14)
- バスを介したデータ転送のためのデータ転送制御システムであって、
転送データを一時的に格納するデータバッファへのアクセスを制御するバッファコントローラと、
第1のバスに接続されるデバイスと、第2のバスに接続される複数のロジカルユニットとの間でのデータ転送を制御する転送コントローラとを含み、
前記転送コントローラが、
第1のバスに接続されるデバイスから第1のロジカルユニット用のコマンドパケットを受信した場合には、コマンドパケットにより指示されるコマンドに基づいて、第2のバスに接続される第1のロジカルユニットとの間でのデータ転送を開始し、第1のバスに接続されるデバイスから第2のロジカルユニット用のコマンドパケットを受信した場合には、コマンドパケットにより指示されるコマンドに基づいて、第2のバスに接続される第2のロジカルユニットとの間でのデータ転送を開始するコマンド処理部と、
第1のロジカルユニット用のコマンドパケットの処理中にバスリセットが発生し、バスリセット発生後に受信したコマンドパケットが第2のロジカルユニット用のコマンドパケットであった場合には、受信した第2のロジカルユニット用のコマンドパケットの処理をウェイトするウェイト処理部と、
を含むことを特徴とするデータ転送制御システム。 - 請求項1において、
前記ウェイト処理部が、
第1のロジカルユニット用のコマンドパケットの処理中にバスリセットが発生し、バスリセット発生後に受信したコマンドパケットが第1のロジカルユニット用のコマンドパケットであった場合には、第1のロジカルユニットとの間でのデータ転送を再開するための処理を行うことを特徴とするデータ転送制御システム。 - 請求項1又は2において、
前記ウェイト処理部が、
第1のロジカルユニット用のコマンドパケットの処理中にバスリセットが発生し、バスリセット発生後に受信したコマンドパケットが第2のロジカルユニット用のコマンドパケットであった場合には、第2のロジカルユニット用のコマンドパケットの処理を所定時間だけウェイトし、所定時間だけ処理をウェイトしてもウェイト状態が解除されなかった場合には、第1のバスに接続されるデバイスに対してエラーステータスを発行することを特徴とするデータ転送制御システム。 - 請求項1乃至3のいずれかにおいて、
前記ウェイト処理部が、
第1のロジカルユニット用のコマンドパケットの処理中にバスリセットが発生し、第1のバスに接続されるデバイスがバスリセット発生後に第1のロジカルユニットに対して行ったリコネクト要求が成功しなかった場合に、第2のロジカルユニット用のコマンドパケットの処理のウェイト状態を解除することを特徴とするデータ転送制御システム。 - バスを介したデータ転送のためのデータ転送制御システムであって、
転送データを一時的に格納するデータバッファへのアクセスを制御するバッファコントローラと、
第1のバスに接続されるデバイスと、第2のバスに接続される複数のロジカルユニットとの間でのデータ転送を制御する転送コントローラとを含み、
前記転送コントローラが、
第1のバスに接続されるデバイスから第1のロジカルユニット用のコマンドパケットを受信した場合には、コマンドパケットにより指示されるコマンドに基づいて、第2のバスに接続される第1のロジカルユニットとの間でのデータ転送を開始し、第1のバスに接続されるデバイスから第2のロジカルユニット用のコマンドパケットを受信した場合には、コマンドパケットにより指示されるコマンドに基づいて、第2のバスに接続される第2のロジカルユニットとの間でのデータ転送を開始するコマンド処理部と、
第1のロジカルユニットにより第2のバスが使用されている時に、第2のロジカルユニット用のコマンドパケットを受信した場合には、受信した第2のロジカルユニット用のコマンドパケットの処理をウェイトするウェイト処理部と、
を含むことを特徴とするデータ転送制御システム。 - 請求項1乃至5のいずれかにおいて、
前記転送コントローラが、
ロジカルユニットに発行したコマンドをアボートするコマンドアボート部を含み、
前記コマンド処理部が、
第1のバスに接続されるデバイスからコマンドパケットを受信した場合には、コマンドパケットにより指示されるコマンドを第2のバスに接続されるロジカルユニットに対して発行して、ロジカルユニットとの間でのDMA転送を開始し、
前記コマンドアボート部が、
コマンドパケットに基づき第2のバスに接続されるロジカルユニットに対して発行したコマンドを、コマンドパケットに基づき開始したDMA転送の完了後にアボートすることを特徴とするデータ転送制御システム。 - 請求項6において、
前記転送コントローラが、
第1のコマンドパケットの処理中にバスリセットが発生した場合に、バスリセット発生前に第1のバスを介して転送されてきた第1のコマンドパケットの内容と、バスリセット発生後に同じロジカルユニットに対し第1のバスを介して転送されてきた第2のコマンドパケットの内容とを比較するコマンド比較部を含み、
前記コマンドアボート部が、
同じロジカルユニットに対する第1のコマンドパケットの内容と第2のコマンドパケットの内容が異なると判断された場合に、第2のバスに接続されるロジカルユニットに対して第1のコマンドパケットに基づき発行したコマンドを、第1のコマンドパケットに基づき開始したDMA転送の完了後にアボートすることを特徴とするデータ転送制御システム。 - 請求項6又は7において、
前記コマンドアボート部が、
DMA転送が完了するまで、第2のバスに接続されるロジカルユニットとの間でダミーデータを転送する制御を行うことを特徴とするデータ転送制御システム。 - 請求項1乃至8のいずれかにおいて、
第1のバスが、IEEE1394規格によりデータ転送が行われるバスであり、第2のバスが、ATA/ATAPI規格によりデータ転送が行われるバスであることを特徴とするデータ転送制御システム。 - 請求項1乃至9のいずれかのデータ転送制御システムと、
第2のバスに接続される複数のロジカルユニットと、
を含むことを特徴とする電子機器。 - 第1のバスに接続されるデバイスから第1のロジカルユニット用のコマンドパケットを受信した場合には、コマンドパケットにより指示されるコマンドに基づいて、第2のバスに接続される第1のロジカルユニットとの間でのデータ転送を開始し、第1のバスに接続されるデバイスから第2のロジカルユニット用のコマンドパケットを受信した場合には、コマンドパケットにより指示されるコマンドに基づいて、第2のバスに接続される第2のロジカルユニットとの間でのデータ転送を開始するコマンド処理部と、
第1のロジカルユニット用のコマンドパケットの処理中にバスリセットが発生し、バスリセット発生後に受信したコマンドパケットが第2のロジカルユニット用のコマンドパケットであった場合には、受信した第2のロジカルユニット用のコマンドパケットの処理をウェイトするウェイト処理部として、
データ転送制御システムを機能させることを特徴とするプログラム。 - 第1のバスに接続されるデバイスから第1のロジカルユニット用のコマンドパケットを受信した場合には、コマンドパケットにより指示されるコマンドに基づいて、第2のバスに接続される第1のロジカルユニットとの間でのデータ転送を開始し、第1のバスに接続されるデバイスから第2のロジカルユニット用のコマンドパケットを受信した場合には、コマンドパケットにより指示されるコマンドに基づいて、第2のバスに接続される第2のロジカルユニットとの間でのデータ転送を開始するコマンド処理部と、
第1のロジカルユニットにより第2のバスが使用されている時に、第2のロジカルユニット用のコマンドパケットを受信した場合には、受信した第2のロジカルユニット用のコマンドパケットの処理をウェイトするウェイト処理部として、
データ転送制御システムを機能させることを特徴とするプログラム。 - バスを介してデータ転送を行うためのデータ転送制御方法であって、
第1のバスに接続されるデバイスから第1のロジカルユニット用のコマンドパケットを受信した場合には、コマンドパケットにより指示されるコマンドに基づいて、第2のバスに接続される第1のロジカルユニットとの間でのデータ転送を開始し、
第1のバスに接続されるデバイスから第2のロジカルユニット用のコマンドパケットを受信した場合には、コマンドパケットにより指示されるコマンドに基づいて、第2のバスに接続される第2のロジカルユニットとの間でのデータ転送を開始し、
第1のロジカルユニット用のコマンドパケットの処理中にバスリセットが発生し、バスリセット発生後に受信したコマンドパケットが第2のロジカルユニット用のコマンドパケットであった場合には、受信した第2のロジカルユニット用のコマンドパケットの処理をウェイトすることを特徴とするデータ転送制御方法。 - バスを介してデータ転送を行うためのデータ転送制御方法であって、
第1のバスに接続されるデバイスから第1のロジカルユニット用のコマンドパケットを受信した場合には、コマンドパケットにより指示されるコマンドに基づいて、第2のバスに接続される第1のロジカルユニットとの間でのデータ転送を開始し、
第1のバスに接続されるデバイスから第2のロジカルユニット用のコマンドパケットを受信した場合には、コマンドパケットにより指示されるコマンドに基づいて、第2のバスに接続される第2のロジカルユニットとの間でのデータ転送を開始し、
第1のロジカルユニットにより第2のバスが使用されている時に、第2のロジカルユニット用のコマンドパケットを受信した場合には、受信した第2のロジカルユニット用のコマンドパケットの処理をウェイトすることを特徴とするデータ転送制御方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003347149A JP2005115545A (ja) | 2003-10-06 | 2003-10-06 | データ転送制御システム、電子機器、プログラム及びデータ転送制御方法 |
US10/885,139 US7366805B2 (en) | 2003-10-06 | 2004-07-07 | Data transfer control system, electronic instrument, program, and data transfer control method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003347149A JP2005115545A (ja) | 2003-10-06 | 2003-10-06 | データ転送制御システム、電子機器、プログラム及びデータ転送制御方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2005115545A true JP2005115545A (ja) | 2005-04-28 |
Family
ID=34386394
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003347149A Withdrawn JP2005115545A (ja) | 2003-10-06 | 2003-10-06 | データ転送制御システム、電子機器、プログラム及びデータ転送制御方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US7366805B2 (ja) |
JP (1) | JP2005115545A (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006338169A (ja) * | 2005-05-31 | 2006-12-14 | Victor Co Of Japan Ltd | 被制御装置及び制御装置 |
JP2007272376A (ja) * | 2006-03-30 | 2007-10-18 | Alpine Electronics Inc | 電源供給制御装置および電源供給制御方法 |
JP2015099605A (ja) * | 2015-01-28 | 2015-05-28 | 株式会社東芝 | ブリッジ装置およびその方法、ストレージ装置、ならびにプログラム |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7890646B2 (en) * | 2006-04-27 | 2011-02-15 | Microsoft Corporation | Synchronization orchestration |
US9244741B2 (en) * | 2011-04-02 | 2016-01-26 | Open Invention Network, Llc | System and method for service mobility |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6636922B1 (en) * | 1999-03-17 | 2003-10-21 | Adaptec, Inc. | Methods and apparatus for implementing a host side advanced serial protocol |
JP3387466B2 (ja) * | 1999-03-19 | 2003-03-17 | セイコーエプソン株式会社 | データ通信装置 |
JP4536981B2 (ja) * | 1999-08-31 | 2010-09-01 | キヤノン株式会社 | 情報信号処理装置及び情報信号処理方法 |
JP2001076423A (ja) | 1999-09-06 | 2001-03-23 | Victor Co Of Japan Ltd | データ再生装置 |
JP3598923B2 (ja) | 1999-12-20 | 2004-12-08 | セイコーエプソン株式会社 | データ転送制御装置、情報記憶媒体及び電子機器 |
JP2001257703A (ja) | 2000-03-14 | 2001-09-21 | Seiko Epson Corp | データ通信装置 |
JP4098987B2 (ja) * | 2002-01-31 | 2008-06-11 | 富士通株式会社 | インターフェース変換システム及びデータ転送方法 |
-
2003
- 2003-10-06 JP JP2003347149A patent/JP2005115545A/ja not_active Withdrawn
-
2004
- 2004-07-07 US US10/885,139 patent/US7366805B2/en not_active Expired - Fee Related
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006338169A (ja) * | 2005-05-31 | 2006-12-14 | Victor Co Of Japan Ltd | 被制御装置及び制御装置 |
JP4577093B2 (ja) * | 2005-05-31 | 2010-11-10 | 日本ビクター株式会社 | 被制御装置及び制御装置 |
JP2007272376A (ja) * | 2006-03-30 | 2007-10-18 | Alpine Electronics Inc | 電源供給制御装置および電源供給制御方法 |
JP4716910B2 (ja) * | 2006-03-30 | 2011-07-06 | アルパイン株式会社 | 電源供給制御装置および電源供給制御方法 |
JP2015099605A (ja) * | 2015-01-28 | 2015-05-28 | 株式会社東芝 | ブリッジ装置およびその方法、ストレージ装置、ならびにプログラム |
Also Published As
Publication number | Publication date |
---|---|
US7366805B2 (en) | 2008-04-29 |
US20050076165A1 (en) | 2005-04-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3843667B2 (ja) | データ転送制御装置及び電子機器 | |
US7069350B2 (en) | Data transfer control system, electronic instrument, and data transfer control method | |
EP1389761B1 (en) | Data transfer control system, program and data transfer control method | |
JP2000184000A (ja) | ステ―トマシン駆動型トランスポ―トプロトコルインタ―フェ―ス | |
JP3599048B2 (ja) | データ転送制御システム、電子機器、プログラム及びデータ転送制御方法 | |
JP2002344538A (ja) | データ転送制御装置及び電子機器 | |
JP3598923B2 (ja) | データ転送制御装置、情報記憶媒体及び電子機器 | |
JP3599053B2 (ja) | データ転送制御システム、電子機器、及びデータ転送制御方法 | |
JP4239930B2 (ja) | データ転送制御システム、電子機器及びプログラム | |
JP2005115545A (ja) | データ転送制御システム、電子機器、プログラム及びデータ転送制御方法 | |
EP1394682B1 (en) | Data transfer control device, program and method of fabricating an electronic instrument | |
KR100381645B1 (ko) | 데이터 전송 제어 장치 및 전자기기 | |
JP4040654B2 (ja) | 通信制御回路および通信制御方法 | |
JP4218034B2 (ja) | データ通信システムおよびデータ通信方法、データ通信プログラム | |
US6438633B1 (en) | System for providing deterministic performance from a non-deterministic device | |
JP4026979B2 (ja) | データ通信システム | |
JP3598922B2 (ja) | データ転送制御装置、情報記憶媒体及び電子機器 | |
JP2003046511A (ja) | 情報処理装置と情報処理方法、及び情報処理システム、並びに記憶媒体 | |
JP2003309618A (ja) | 通信装置及び通信方法 | |
JP5339944B2 (ja) | 情報処理装置、情報処理装置の制御方法、及びプログラム | |
JP2001177544A (ja) | データ転送制御装置、情報記憶媒体及び電子機器 | |
JP2004229301A (ja) | インターフェースノードのネットワークの動作方法、およびインターフェース装置 | |
JP2001175546A (ja) | データ転送制御装置、情報記憶媒体及び電子機器 | |
JP2005216101A (ja) | 情報システムの制御方法、情報処理装置、記憶媒体、プログラム | |
JPH0481963A (ja) | システムバス拡張装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20060511 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060523 |
|
A761 | Written withdrawal of application |
Free format text: JAPANESE INTERMEDIATE CODE: A761 Effective date: 20060721 |