(57)【要約】【課題】ＩＥＥＥ１３９４バス等のシリアル伝送バスに対応し、送信元からのデータの再転送が可能で、確実にデータを転送できるデータ転送システムを提供する。【解決手段】シリアル転送バスに接続されてデータを格納する複数の受信ノード３〜５と、バス以外の経路から入力されたデータをそのバスを介して目標の受信ノードに転送するデータ転送制御手段２とからなり、データ転送制御手段２は、データを格納するデータ記憶部１２および目標とする受信ノードに対するコマンドを格納するコマンド記憶部１４を有して、受信ノード３〜５にコマンド記憶部１４のアドレスおよび新たなコマンドの発生を通知し、受信ノード３〜５からの読み出し要求によりコマンドを当該受信ノードに転送すると共に、データ要求によりデータを当該受信ノードに転送する。【選択図】        図１
2004228835.tif 000002
【特許請求の範囲】
【請求項１】
任意のデータを転送できる少なくとも１系統のシリアル転送バスに接続され、該バスを介するデータの転送を制御すると共に該データを格納する複数の受信ノードと、
前記バスに接続され、前記データを格納するデータ記憶部および前記目標とする受信ノードに対するコマンドを格納するコマンド記憶部を備え、前記バス以外の経路から入力されたデータを前記バスを介して目標とする受信ノードに転送するデータ転送制御手段とを備えるシステムのデータ転送方法であって、
前記データ転送制御手段が、前記受信ノードに前記コマンド記憶部のアドレスおよび新たなコマンドの発生を通知するステップと、
前記受信ノードが、前記通知を受信することにより、前記データ転送制御手段に前記コマンド記憶部から前記コマンドを読み出す要求を送出するステップと、前記データ転送制御手段が、前記受信ノードからの読み出し要求により前記コマンドを当該受信ノードに転送するステップと、
前記受信ノードが、前記コマンドを受信して解析することにより、前記データ転送制御手段に前記データ記憶部からの前記データの転送を要求するステップを有することを特徴とするデータ転送方法。
【請求項２】
前記受信ノードが、前記データ転送制御手段に前記データの転送を要求するステップの後に、
前記データ転送制御手段が、前記データ記憶部内のデータを転送し、その後、前記受信ノードからのデータ転送が正常に完了したことを示す通知を受信しない場合、前記データ記憶部内のデータを再度転送するステップを有することを特徴とする請求項１に記載のデータ転送方法。
【請求項３】
前記受信ノードが、前記データ転送制御手段に前記データの転送を要求するステップの後に、
前記データ転送制御手段が、前記データ記憶部内のデータを転送し、その後、前記受信ノードからのデータ転送が正常に完了したことを示す通知を受信した場合、前記データ記憶部内のデータを削除するステップを有することを特徴とする請求項１または２に記載のデータ転送方法。
【請求項４】
前記データ転送制御手段が、前記受信ノードに前記アドレスおよび新たなコマンドの発生を通知するステップでは、
前記データ転送制御手段は、前記コマンド記憶部に、前記データ記憶部に格納されたデータを読み出して転送させるためのリードトランザクション要求を前記受信ノードから送信させるコマンド、および、前記データ記憶部に格納されたデータを前記受信ノードに書き込ませるために転送する書き込み要求を前記データ転送制御手段に発生させるためのライトトランザクション要求を前記受信ノードから送信させるコマンドの双方から何れか一方のコマンドを選択して格納し、何れのコマンドであるかを示す転送モード指示フラグを通知することを特徴とする請求項１〜３の何れかに記載のデータ転送方法。
【請求項５】
前記受信ノードが、前記データ転送制御手段に前記データの転送を要求するステップでは、
前記受信ノードは、そのデータ転送時の対応する転送モードがリードトランザクションあるいはライトトランザクションであるかを示す対応転送モードフラグを通知することを特徴とする請求項４に記載のデータ転送方法。
【請求項６】
前記シリアル転送バスは複数系統であり、前記各バスに対して各々前記複数の受信ノードが接続され、前記データ転送制御手段が、前記各バスに接続される場合、
前記データ転送制御手段が、前記受信ノードに前記アドレスおよび新たなコマンドの発生を通知するステップでは、
前記データ転送制御手段は、前記データを前記各バスを介して目標とする各受信ノードに並列に転送することを特徴とする請求項１〜５の何れかに記載のデータ転送方法。
【請求項７】
任意のデータを転送できる少なくとも１系統のシリアル転送バスに接続され、該バスを介するデータの転送を制御すると共に該データを格納する複数の受信ノードと、
前記バスに接続され、前記バス以外の経路から入力されたデータを前記バスを介して目標とする受信ノードに転送するデータ転送制御手段とを備えるデータ転送システムであって、
前記データ転送制御手段は、前記データを格納するデータ記憶部および前記目標とする受信ノードに対するコマンドを格納するコマンド記憶部を有し、前記受信ノードに前記コマンド記憶部のアドレスおよび新たなコマンドの発生を通知することにより、前記受信ノードからの読み出し要求により前記コマンドを当該受信ノードに転送し、前記受信ノードからのデータ要求により前記データを当該受信ノードに転送し、
前記受信ノードは、前記データ転送制御手段から前記コマンド記憶部のアドレスおよび新たなコマンドの発生を受信することにより、前記データ転送制御手段に前記コマンド記憶部からの前記コマンドの読み出し、および、前記データ記憶部からの前記データの転送を要求することを特徴とするデータ転送システム。
【請求項８】
前記シリアル転送バスは複数系統であり、前記各バスに対して各々前記複数の受信ノードが接続され、
前記データ転送制御手段は、前記各バスに接続され、前記データを前記各バスを介して目標とする各受信ノードに並列に転送することを特徴とする請求項７に記載のデータ転送システム。
【請求項９】
前記データ転送制御手段は、前記データ記憶部内のデータを転送後、前記受信ノードからのデータ転送が正常に完了したことを示す通知を受信しない場合、前記データ記憶部内のデータを再度転送することを特徴とする請求項７または８に記載のデータ転送システム。
【請求項１０】
前記データ転送制御手段は、前記データ記憶部内のデータを転送後、前記受信ノードからのデータ転送が正常に完了したことを示す通知を受信した場合、前記データ記憶部内のデータを削除することを特徴とする請求項７または８に記載のデータ転送システム。
【請求項１１】
前記データ転送制御手段の前記コマンド記憶部は、前記データ記憶部に格納されたデータを読み出して転送させるためのリードトランザクション要求を前記受信ノードから送信させるコマンドを格納することを特徴とする請求項７〜１０の何れかに記載のデータ転送システム。
【請求項１２】
前記データ転送制御手段の前記コマンド記憶部は、前記データ記憶部に格納されたデータを前記受信ノードに書き込ませるために転送する書き込み要求を前記データ転送制御手段に発生させるためのライトトランザクション要求を前記受信ノードから送信させるコマンドを格納することを特徴とする請求項７〜１０の何れかに記載のデータ転送システム。
【請求項１３】
前記データ転送制御手段の前記コマンド記憶部は、前記データ記憶部に格納されたデータを読み出して転送させるためのリードトランザクション要求を前記受信ノードから送信させるコマンド、および、前記データ記憶部に格納されたデータを前記受信ノードに書き込ませるために転送する書き込み要求を前記データ転送制御手段に発生させるためのライトトランザクション要求を前記受信ノードから送信させるコマンドの双方が格納可能であり、且つ、何れか一方を選択して格納し、
前記新たなコマンドの発生を通知する際には、前記した何れのコマンドであるかを示す転送モード指示フラグを通知することを特徴とする請求項７〜１０の何れかに記載のデータ転送システム。
【請求項１４】
前記受信ノードは、前記データ転送制御手段にデータ記憶部からの前記データの転送を要求する際に、その対応する転送モードがリードトランザクションあるいはライトトランザクションであるかを示す対応転送モードフラグを通知することを特徴とする請求項１３に記載のデータ転送システム。
【請求項１５】
前記各コマンドおよび各トランザクションは、ＩＥＥＥ１３９４規格の上位レイヤであるＳｅｒｉａｌ  Ｂｕｓ  Ｐｒｏｔｃｏｌ  ２（ＳＢＰ２）に規定されたものであることを特徴とする請求項７〜１４の何れかに記載のデータ転送システム。
【請求項１６】
前記転送モード指示フラグは、前記ＳＢＰ２に規定されたコマンドブロックであるＯｐｅｒａｔｉｏｎ  ｒｅｑｕｅｓｔ  ｂｌｏｃｋｓ（ＯＲＢ）のｒｑ＿ｆｍｔフィールドであり、
前記受信ノードは、ｒｑ＿ｆｍｔフィールドが所定の値である場合にライトトランザクションによりデータ転送を行うことを特徴とする請求項１５に記載のデータ転送システム。
【請求項１７】
前記対応転送モードフラグは、前記ＳＢＰ２に規定されたログイン応答パケットの予約フィールドに格納されることを特徴とする請求項１５または１６に記載のデータ転送システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ＩＥＥＥ１３９４バス等の高速で大容量のシリアル転送バスを介してデータ転送制御手段から複数の目標とする受信ノードにデータを転送するデータ転送システムに関し、特に、ＩＥＥＥ１３９４規格のデータパケットをアシンクロナス通信のマルチキャストを利用して複数の受信ノードにデータを転送するシステムに関する。
【０００２】
【従来の技術】
例えば、ＩＥＥＥ１３９４バスに接続されたハードディスク等の蓄積メディア２台に対し、カメラなどのリアルタイムのデータを同時に記録するミラーリングを行う場合、アイソクロナス通信や、アシンクロナス通信によるブロードキャスト伝送を利用したマルチキャストを行う方法が考えられる。
【０００３】
ＩＥＥＥ１３９４規格のアシンクロナス通信のブロードキャスト伝送を利用したマルチキャストにより特定の受信ノードにデータ転送する方法として、マルチキャストアドレスコントロールレジスタを設け、受信ノードにおいて、データパケットの宛先のノードが接続されるバスのＩＤフィールドの値、そのノードに対する物理ＩＤフィールドの値を変換したマルチキャストアドレスのアドレスが指す記憶領域の値、および、オフセットアドレスフィールドの値を用いてデータパケットを判定して受信する方法が知られている（例えば、特許文献１参照）。
【０００４】
また、他の方法として、送信ノードでは、通常の受信ノードでは無視される送り元と送り先のアドレスが同一のデータパケットを生成して送信し、特定の受信ノードのみでそのデータパケットを受信する方法が知られている（例えば、特許文献２参照）。
【０００５】
【特許文献１】
特開平１０−２００５５８号公報
【特許文献２】
特開２００１−１３６１８４号公報
【０００６】
【発明が解決しようとする課題】
しかしながら、上記した従来の方法では、アイソクロナス通信あるいはアシンクロナス通信のブロードキャスト伝送によるマルチキャストを利用しているため、受信ノードから送信元のノードにアクノリッジが返送されないという問題があった。この場合、送信元のノードでは、例えば、エラー等でデータが正常に転送できなかった場合であっても、パケットを再送することができなくなる。つまり、従来の方法では、受信側から送信元へのアクノリッジが返送されないため、例えば、監視カメラで取得したデータを完全な形で保存しなければならない場合等の確実にデータを伝送しなければならない場合には使用できない。
【０００７】
また、一般に普及しているＩＥＥＥ１３９４に対応するハードディスク等のストレージメディアでは、上位レイヤとしてＩＥＥＥ１３９４規格の上位レイヤであるＳｅｒｉａｌ  Ｂｕｓ  Ｐｒｏｔｃｏｌ  ２（ＳＢＰ２）に規定されたものを使用しており、ＩＥＥＥ１３９４バスを利用するデータ転送システムではＳＢＰ２に対応する必要があるが、上記した従来の方法は対応していないという問題があった。
【０００８】
本発明は、上述した課題を解決するためになされたものであって、ＩＥＥＥ１３９４バス等のシリアル伝送バスに対応し、受信ノードから送信元にデータ転送のアクノリッジを返送することにより送信元からのデータの再転送が可能になり、確実にデータを転送できる方法およびシステムを提供することを目的とする。
【０００９】
【課題を解決するための手段】
上記した目的を達成するため、本発明に係るデータ転送方法は、
任意のデータを転送できる少なくとも１系統のシリアル転送バスに接続され、バスを介するデータの転送を制御すると共に該データを格納する複数の受信ノードと、バスに接続され、データを格納するデータ記憶部および目標とする受信ノードに対するコマンドを格納するコマンド記憶部を備え、バス以外の経路から入力されたデータをバスを介して目標とする受信ノードに転送するデータ転送制御手段とを備えるシステムのデータ転送方法であって、
データ転送制御手段が、受信ノードにコマンド記憶部のアドレスおよび新たなコマンドの発生を通知するステップと、
受信ノードが、通知を受信することにより、データ転送制御手段にコマンド記憶部からコマンドを読み出す要求を送出するステップと、
データ転送制御手段が、受信ノードからの読み出し要求によりコマンドを当該受信ノードに転送するステップと、
受信ノードが、コマンドを受信して解析することにより、データ転送制御手段にデータ記憶部からのデータの転送を要求するステップを有する。
【００１０】
また、本発明に係るデータ転送システムは、
任意のデータを転送できる少なくとも１系統のシリアル転送バスに接続され、該バスを介するデータの転送を制御すると共に該データを格納する複数の受信ノードと、バスに接続され、バス以外の経路から入力されたデータをバスを介して目標とする受信ノードに転送するデータ転送制御手段とを備えるデータ転送システムであって、
データ転送制御手段は、データを格納するデータ記憶部および目標とする受信ノードに対するコマンドを格納するコマンド記憶部を有し、受信ノードにコマンド記憶部のアドレスおよび新たなコマンドの発生を通知することにより、受信ノードからの読み出し要求によりコマンドを当該受信ノードに転送し、受信ノードからのデータ要求によりデータを当該受信ノードに転送し、
受信ノードは、データ転送制御手段からコマンド記憶部のアドレスおよび新たなコマンドの発生を受信することにより、データ転送制御手段にコマンド記憶部からのコマンドの読み出し、および、データ記憶部からのデータの転送を要求する。
【００１１】
【発明の実施の形態】
以下、本発明をその実施の形態を示す図面に基づいて具体的に説明する。
【００１２】
実施の形態１．
図１は、本発明の実施の形態１となるデータ転送システムを示すブロック図である。
【００１３】
本実施の形態１のデータ転送システムは、図１に示したデータ転送制御手段２、複数の受信ノードから構成される。複数の受信ノードは、第１ハードディスク３、第２ハードディスク４、および、第３ハードディスク５であり、データ転送制御手段２と第１ハードディスク３との間、第１ハードディスク３と第２ハードディスク４との間、第２ハードディスク４と第３ハードディスク５との間が、任意のデータをシリアル形式で高速に転送可能なバスであるＩＥＥＥ１３９４バスにより接続されている。本実施の形態では、ＩＥＥＥ１３９４バスは１系統である。また、データ転送制御手段２には、撮像装置であるカメラ１が接続されて転送されるデータが入力される。
【００１４】
データ転送制御手段２内には、記録データ入力インターフェース１１、データメモリ１２、ＩＥＥＥ１３９４インターフェース１３、ＯＲＢ格納メモリ１４、および、ＣＰＵ１５を有している。記録データ入力インターフェース１１は、カメラ１からのデータ入力を後段の回路で処理可能な形式に変換して出力する。データメモリ１２は、データ入力を一時的に格納する。ＩＥＥＥ１３９４インターフェース１３は、ＩＥＥＥ１３９４バスに接続され、データ転送手段２から受信ノード３〜５（第１〜３ハードディスク）へのコマンドやデータを転送すると共に、逆方向である受信ノード３〜５（第１〜３ハードディスク）からデータ転送手段２へのコマンドやデータをデータ転送手段２に入力させる。
【００１５】
ＯＲＢ格納メモリ１４は、ＩＥＥＥ１３９４規格の上位レイヤであるＳｅｒｉａｌ  Ｂｕｓ  Ｐｒｏｔｃｏｌ  ２（ＳＢＰ２）に規定されたコマンドブロックであるＯｐｅｒａｔｉｏｎ  ｒｅｑｕｅｓｔ  ｂｌｏｃｋｓ（ＯＲＢ）のｒｑ＿ｆｍｔフィールドの値である転送モード指示フラグ、データ記憶部１２に格納されたデータを読み出して転送させるためのリードトランザクション要求を各受信ノード３〜５から送信させるコマンド、データ記憶部１２に格納されたデータを各受信ノード３〜５に書き込ませるために転送する書き込み要求をデータ転送制御手段２に発生させるためのライトトランザクション要求を受信ノード３〜５から送信させるコマンド、その何れのコマンドであるかを示す転送モード指示フラグ、および、受信ノード３〜５からの対応する転送モードがリードトランザクションあるいはライトトランザクションであるかを示す対応転送モードフラグ等を格納する。ＣＰＵ１５は、マイクロプロセッサ等の中央演算処理であり、データ転送制御手段２全体の動作を制御すると共に、ＯＲＢ格納メモリに格納するコマンド（コマンドブロックＯＲＢ）を作成し、データ転送のための制御を行う。
【００１６】
従って、データ転送制御手段２は、１系統のＩＥＥＥ１３９４バスに接続され、データを格納するデータメモリ１２および目標とする受信ノード３〜５に対するコマンドを格納するＯＲＢメモリ１４を備え、ＩＥＥＥ１３９４バス以外の経路から入力されたデータをそのバスを介して目標とする受信ノード３〜５（第１〜３ハードディスク）の何れかにに転送することができる。また、データ転送制御手段２は、受信ノード３〜５の何れかにコマンド記憶部１４のアドレスおよび新たなコマンドの発生を通知することにより、その受信ノードからの読み出し要求によりコマンドを当該受信ノードに転送し、その受信ノードからのデータ要求によりデータをその受信ノードに転送する。データ転送制御手段２は、データメモリ１２内のデータを転送後、転送先の受信ノード３〜５からのデータ転送が正常に完了したことを示す通知を受信しない場合、データメモリ１２内のデータを再度転送し、データメモリ１２内のデータを転送後、転送先の受信ノード３〜５からのデータ転送が正常に完了したことを示す通知を受信した場合、データメモリ１２内のデータを削除（破棄）する。また、データ転送制御手段２内のＯＲＢ格納メモリ１４は、データ記憶部１２に格納されたデータを読み出して転送させるためのリードトランザクション要求を受信ノードから送信させるコマンドを格納することができる。
【００１７】
複数の受信ノード３〜５は、任意のデータを転送できる１系統のシリアル転送バスにシリアル接続され、そのバスを介するデータの転送を制御すると共にそのデータを格納することができる。受信ノード３〜５は、データ転送制御手段２からＯＲＢ格納メモリ１４のアドレスおよび新たなコマンドの発生を受信することにより、データ転送制御手段２にＯＲＢ格納メモリ１４からのコマンドの読み出し、および、データメモリ１２からのデータの転送を要求する。
【００１８】
ここで、本実施の形態の動作を説明する前に、ＩＥＥＥ１３９４のアシンクロナストランザクションとＩＥＥＥ１３９４上位プロトコルであるＳＢＰ２について説明する。
【００１９】
ＩＥＥＥ１３９４は、現在のところ４００Ｍｂｐｓの伝送速度を持つ高速シリアルインターフェースであり、また、通信方式として１対多の通信を行うアイソクロナス通信と１対１の通信を行うアシンクロナス転送の２種類のモードを備えている。アイソクロナス通信は、リアルタイムのデータ転送に向いており、バス上にブロードキャスト送信され、データ受信したい機器はチェンネル設定により所望のデータを受信する。一方アシンクロナス伝送は、基本的に１対１の通信であるが、ブロードキャスト伝送を行うことも可能である。１対１の通信の場合には、１パケット送信する毎にアクノリッジが返され確実な伝送ができる。
【００２０】
ＳＢＰ２は、ＩＥＥＥ１３９４における上位プロトコルであり、ＩＥＥＥ１３９４バス上にＳＣＳＩコマンドを送受信するためのプロトコルとして作成された。現在パーソナルコンピュータのＩＥＥＥ１３９４周辺機器にはハードディスク、ＤＶＤ、ＣＤ、スキャナー等があるが、上位プロトコルとしてＳＢＰ２が使用されている。ＳＢＰ２は伝送モードとしてアシンクロナス転送のみを使用している。
【００２１】
アシンクロナストランザクションは、アシンクロナス通信で実施される。アシンクロナス通信では、相手のノードに確実にパケットを送信することを保証する必要があるため、受信ノードは受信パケットに対してアクノリッジのパケットを返信する。アクノリッジの種類としては、受信に成功したことを示すコンプリート、受信に成功したがその後に応答データなどを乗せたパケットが返信されることを示したペンディング、受信失敗を示すビジー、ＣＲＣエラーなどが検出されたことを示すデータエラーなどがある。
【００２２】
アシンクロナストランザクションの種類としては、統合トランザクション、分割トランザクション、連結トランザクション、ブロードキャストトランザクションの４つのトランザクションがある。
【００２３】
図２は、統合トランザクションの書き込み要求（ライトリクエスト）によりデータを転送する場合の一般的な通信手順を示す図である。
【００２４】
図２に示すように、統合トランザクションの場合、ライトトランザクションにのみ使用され、送信側ノードから受信側ノードへのリクエストパケットＳＳ１に対してコンプリートのアクノリッジＲＳ１が返されることで、トランザクションが完了する。この後に応答は返らない。
【００２５】
図３は、分割トランザクションの書き込み要求（ライトリクエスト）によりデータを転送する場合の一般的な通信手順を示す図であり、図４は、分割トランザクションの読み出し要求（リードリクエスト）によりデータを転送する場合の一般的な通信手順を示す図である。
【００２６】
図３及び図４に示すように分割トランザクションの場合、リード、ライトトランザクション処理の双方で使用される。図３のライトトランザクションでは、送信側ノードから受信側ノードへのライトリクエストのパケットＳＳ２に対してペンディングのアクノリッジＲＳ２が返り、その後さらに受信側ノードから送信側ノードへ応答パケットＲＳ３が返されるため、それに対するアクノリッジＳＳ３が送信側ノードから受信側ノードへ返される。また、アクノリッジＲＳ２と応答パケットＲＳ３との間にはバスが一旦解放される。図４のリードトランザクションでは、送信側ノードから受信側ノードへのリードリクエストのパケットＳＳ４に対してペンディングのアクノリッジＲＳ４が返り、その後さらに受信側ノードから送信側ノードへ応答パケットＲＳ５が返されるため、それに対するアクノリッジＳＳ５が送信側ノードから受信側ノードへ返される。また、アクノリッジＲＳ４と応答パケットＲＳ５との間にはバスが一旦解放される。
【００２７】
連結トランザクションは、分割トランザクションにおけるリクエストパケットに対するアクノリッジと応答パケットの間に、バスが解放されず他のノードのパケットが送信されないトランザクションである。ブロードキャストトランザクションは、ライトトランザクションにのみ使用され、全ノードに対して同時にデータを書き込み（ライト）するトランザクションである。ブロードキャストリクエストのパケットに対しては、アクノリッジは返されない。
【００２８】
上記から、アクノリッジが返らないブロードキャストトランザクションを除いて比較すると、リードトランザクションの場合には、分割トランザクションあるいは連結トランザクションで通信が実施されるのに対し、ライトトランザクションの場合には、統合トランザクションで処理できる場合もあることがわかる。図２〜図４を比較してわかるように、統合トランザクションでライトトランザクションの場合は、リードトランザクションよりもパケットの往復回数が少なく高速に処理できる利点がある。
【００２９】
次にＳＢＰ２について説明する。ＳＢＰ２は、制御の主体となる機器であるイニシエータが、制御される機器であるターゲットに対してコマンドを発行する仕組みと、そのコマンドに付随するデータやステータス転送の仕組みが規定されている。
【００３０】
図５は、ＳＢＰ２ですべての通信に用いられるアシンクロナスパケットの構造を示す図である。図５において、最初の２０バイトがアシンクロナスパケットヘッダであり、このうち送信先ＩＤフィールドが相手先ノードアドレスを、送信元ＩＤフィールドが送信元のノードのアドレスを示す。また、ｔ−ｌａｂｅｌはトランザクションラベル、ｒｔはリトライコード、ｔ−ｃｏｄｅはトランザクションコード、ｐｒｉはプライオリティ、ｄｅｓｔｉｎａｔｉｏｎ＿ｏｆｆｓｅｔは送信先ノードのメモリアドレス、データ長はデータブロックのバイト数、ｅｘｔｅｎｄｅｄ＿ｔｃｏｄｅは、ロックというトランザクションの種類、ｈｅａｄｅｒ＿ＣＲＣはヘッダ部の誤り検出符号を表している。図５のデータブロックは、データ本体とデータの誤り検出符号で構成されている。図５におけるアシンクロナスパケットのデータブロックには、ＳＢＰ２で使用されるコマンドブロックＯＲＢと呼ばれるコマンドを格納したデータ構造や、データ本体が格納される。
【００３１】
図６は、コマンドブロックＯＲＢの構造を示す図である。図６において、データバッファアドレスフィールドは、コマンドブロックＯＲＢに格納されたコマンドに付随するデータ本体を格納したイニシエータ内のアドレスであり、データサイズは、データ本体のバイト数をそれぞれ示す。また、ｒｑ＿ｆｍｔフィールドは、‘０’ならＳＢＰ２で規定されたＯＲＢフォーマット、‘２’ならベンダー依存のＯＲＢフォーマットであることを示す。コマンドブロックは、ＳＣＳＩコマンドを格納する。コマンドブロックＯＲＢ、データバッファは、イニシエータ内のメモリに配置され、ターゲットがこれを取得する。
【００３２】
図７は、イニシエータとターゲットの間で行われる通信手順を示す図である。図７において、アクノリッジのやりとりは簡単にするため示していない。
【００３３】
イニシエータは、ターゲットに対してリクエストを発行する前に、最初にログイン要求（ＩＳ１）を実行する必要がある。ターゲットはログイン要求（ＩＳ１）に対し内部リソースを確保し、ログイン応答（ＴＳ１）を返す。
【００３４】
次にイニシエータがターゲットに送信するデータの準備ができるとイニシエータは、システムメモリ内にコマンドブロックＯＲＢを作成する。イニシエータはターゲット内のＯＲＢ  ｐｏｉｎｔｅｒレジスタにコマンドブロックＯＲＢの格納アドレスをライトする（ＩＳ２）。次にイニシエータはターゲット内のＤｏｏｒＢｅｌｌというレジスタにライト動作を行う（ＩＳ３）ことで、新たな要求が生成されたことをターゲットに通知する。
【００３５】
ターゲットはこれをきっかけにして、コマンドブロックＯＲＢを取得する動作を行う。ターゲットがＯＲＢ  ｐｏｉｎｔｅｒレジスタに格納されたアドレスのリードを行うことでコマンドブロックＯＲＢが取得できる。コマンドブロックＯＲＢのリード要求をリードリクエストパケットで要求し（ＴＳ２）、イニシエータはコマンドブロックＯＲＢを応答パケットで応答（ＩＳ４）する。
【００３６】
これを受けてターゲットは、コマンドブロックＯＲＢを取得する。ターゲットはこれを解析しイニシエータのコマンド要求を理解する。以上がコマンド転送フェーズである。
【００３７】
次にデータ本体の転送フェーズに入る。以下にコマンドがハードディスクへのリード要求コマンドである場合について説明する。ターゲットは、データ本体が格納されているデータバッファのリード要求をイニシエータにリードリクエストパケットにて送信する（ＴＳ３）。イニシエータは、データバッファ内のデータ本体を１パケット分、リード応答パケットにて送信する（ＩＳ５）。１パケットで送信できるデータ長はＩＥＥＥ１３９４バス上の転送レートによって規定されており、例えば４００Ｍｂｐｓでデータ転送する場合、最大パケット長は２ｋｂｙｔｅである。このためデータバッファ内の全データを転送するには複数回のリード要求がターゲットから発行されることもある（ＴＳ４〜ＴＳ５、ＩＳ６〜ＩＳ７）。
【００３８】
以上のようにＳＢＰ２では、ハードディスクへのデータライト動作は、ターゲットからのリードトランザクションにより行われる。また、このリードトランザクションは分割トランザクションか連結トランザクションで行われる。
【００３９】
コマンドブロックＯＲＢで指定されたデータ転送の実行が完了したとき、ターゲットは、イニシエータにステータスをライトトランザクションで通知する（ＴＳ６）。イニシエータはこれにより正常にコマンドブロックＯＲＢが処理されたかを検出することができる。
【００４０】
上記した内容に基づき、本実施の形態のデータ転送システムで、カメラ１からのデータを、データ転送制御手段２により第１ハードディスク３、および、第２ハードディスク４へミラーリング記録する場合のデータ転送動作について説明する。なお、ＩＥＥＥ１３９４バス上ではＳＢＰ２による転送が行われ、データ転送制御手段２はイニシエータ、第１ハードディスク３、第２ハードディスク４、第３ハードディスク５はそれぞれターゲットとして動作する。
【００４１】
図８は、図１のデータ転送システムで上記したミラーリング記録する場合の概略のデータ転送動作を示すフローチャートである。
【００４２】
図１の構成に準じたデータの流れとしては、まず、カメラ１からのアナログデータが記録データ入力インターフェース１１にてディジタル変換され、データメモリ１２に蓄積される。そして、所定のデータ量がデータメモリ１２に蓄積されると、ＩＥＥＥ１３９４インターフェース１３を経由してＩＥＥＥ１３９４バス上の第１ハードディスク３、第２ハードディスク４にそれぞれ転送されデータが記録される。このときＩＥＥＥ１３９４バス上ではＳＢＰ２にて転送処理がなされる。また、前提としてＩＥＥＥ１３９４バス上の第１ハードディスク３、第２ハードディスク４、第３ハードディスク５には既にログインしているものとする。
【００４３】
また、図７に示した通信手順に従い、（１）データ転送制御手段２が、受信ノードである第１ハードディスク３〜第３ハードディスク５にコマンド記憶部であるＯＲＢ格納メモリ１４のアドレスおよび新たなコマンドの発生を通知し、（２）各受信ノード（第１ハードディスク３〜第３ハードディスク５）が、その通知を受信することにより、データ転送制御手段２にコマンド記憶部（ＯＲＢ格納メモリ）からコマンドを読み出す要求を送出し、（３）データ転送制御手段２が、受信ノード（第１ハードディスク３〜第３ハードディスク５）からの読み出し要求によりコマンドを当該受信ノードに転送し、（４）受信ノード（第１ハードディスク３〜第３ハードディスク５）が、そのコマンドを受信して解析することにより、データ転送制御手段２にデータ記憶部（データメモリ１２）からのデータの転送を要求する。
【００４４】
図示しないユーザーインターフェースからのユーザの記録開始指示がきっかけとなり、データの転送および記録を開始するか否かを判断する（Ｓ１）。記録を開始しない場合（Ｓ１：ＮＯ）には、再びステップＳ１を実施して記録開始指示を待ち受け、記録を開始する場合（Ｓ１：ＹＥＳ）には、ハードディスクに所定の量のデータＮ（Ｎ＝１，２，３，・・・・）をまとめて転送するために、カメラからのデータＮをデータメモリ１２に蓄積する。所定のデータ量が蓄積されたか否かを判断し（Ｓ２）、所定のデータ量が蓄積されない場合（Ｓ２：ＮＯ）には、再びステップＳ２を実施してデータ量が所定の値に達するのを待ち、所定のデータ量が蓄積された場合（Ｓ２：ＹＥＳ）には、蓄積されたデータＮを第１ハードディスク３に転送する（Ｓ３）。
【００４５】
また、データＮの転送は、図８に示すように第１ハードディスク３への転送が終わると、順次、第２ハードディスク４への転送（Ｓ４）というようにシーケンシャルに転送される。データＮは、第１ハードディスク３、及び、第２ハードディスク４への転送が完了するまではデータメモリ１２に保存される。そして、第１ハードディスク３、第２ハードディスク４へのデータＮの転送がそれぞれ完了したことが確認されると、その後で、データメモリ１２内のデータＮが削除（破棄）される（Ｓ５）。
【００４６】
次いで、ユーザから記録停止指示が入力されたか否かが判断される（Ｓ６）。
入力指示が有った場合（Ｓ６：ＹＥＳ）には、処理を終了し、入力指示が無い場合（Ｓ６：ＮＯ）には、ステップＳ２に戻って、データメモリ１２へのデータＮの蓄積と、第１ハードディスク３及び第２ハードディスク４へのデータの転送を、ユーザから記録停止指示があるまで繰り返す。
【００４７】
なお、データメモリ１２の構造は、データＮが保存されていても新しい入力データの蓄積が可能な構造となっている。例えば、入力レート、出力レートよりも十分にバンド幅の大きいＩ／ＦをもつＳＤＲＡＭであり、疑似的なデュアルポートＲＡＭとして動作するものである。
【００４８】
図９は、データ転送制御手段２における第１ハードディスク３へのデータＮの転送を示すフローチャートであり、図１０は、第１ハードディスク３における第２ハードディスク４へのデータＮの転送を示すフローチャートである。
【００４９】
図９では、まず、データ転送制御手段２は、第１ハードディスク３にライトコマンドを通知する（Ｓ１１）。この通知はＳＢＰ２に従い、ＣＰＵ１５で図６に示したコマンドブロックＯＲＢを作成する。コマンドブロックＯＲＢ内のデータバッファアドレスは、データメモリ１２内に格納したデータＮの先頭アドレス、データサイズは所定の転送単位を示す。コマンドブロックにはＳＣＳＩライトコマンドを格納する。コマンドブロックＯＲＢ作成後、図７のＩＳ２に示したように第１ハードディスク３の図示しないＯＲＢ  ｐｏｉｎｔｅｒレジスタにコマンドブロックＯＲＢのアドレスをライトし、次に図７のＩＳ３に示したようにＤｏｏｒＢｅｌｌレジスタにコマンドブロックＯＲＢ作成完を示すためにライトを行う。これがきっかけとなり第１ハードディスク３は、図７のＴＳ２に示したようにコマンドブロックＯＲＢリード要求をリードリクエストパケットで発行し、その応答となるリード応答パケット（ＩＳ４）でコマンドブロックＯＲＢを取得する。これを解析し第１ハードディスク３はライトコマンドであることを認識する。以上がコマンド転送フェーズである。
【００５０】
その後、データ本体を転送するデータ転送フェーズに入る。ＳＢＰ２でのデータ本体の転送は、リードトランザクションにより行われる。即ち、イニシエータであるデータ転送制御手段２は、第１ハードディスク３からデータＮのリード要求をリードリクエストパケット（ＴＳ３）により受信する。この応答として、データＮのうち１パケットをデータリード応答パケット（ＩＳ５）にて第１ハードディスク３に転送し、次のデータリード要求が来るまで待機する。次のデータリード要求であるリードリクエストパケット（ＴＳ４〜ＴＳ５）を受信するとデータＮ内の次のパケットをデータリード応答（ＩＳ６〜ＩＳ７）で第１ハードディスク３に転送する。以上を繰り返しデータＮ全てを転送する。以上がデータ転送フェーズである。
【００５１】
その後、第１ハードディスク３は、ステータス通知をライトリクエストパケットでデータ転送制御手段２に送信するので、データ転送制御手段２では、これを受信しデータＮが転送できたか確認する（Ｓ１２）。ステータス通知が受信できた場合（Ｓ１２：ＹＥＳ）には、データＮの書き込みが正常に終了したか否かが判断され（Ｓ１３）、書き込みが終了していない場合（Ｓ１３：ＮＯ）には、ステップＳ１１に戻って今回のデータＮを再度読み出すようにライトコマンドが送信され、書き込みが終了した場合（Ｓ１３：ＹＥＳ）には、処理を終了する。データＮの書き込みが正常に終了ない場合とは、例えば、データＣＲＣエラーやデータ長がデータサイズと不一致だったことを示す場合や、第１ハードディスク３へのアクセス競合が発生したことを示すエラーの場合である。
【００５２】
また、ステップＳ１２で、ステータス通知が受信できなかった場合（Ｓ１２：ＮＯ）には、データ転送制御手段２は、第１ハードディスク３からデータリード要求を受信したか否かを判断し（Ｓ１４）、データリード要求を受信しない場合（Ｓ１４：ＮＯ）には、何もしないでステップＳ１２に戻ってステータス通知を待ち受け、データリード要求を受信した場合（Ｓ１４：ＹＥＳ）には、第１ハードディスク３へデータリード応答および１パケットのデータを転送してから（Ｓ１５）、ステップＳ１２に戻ってステータス通知を待ち受ける。以上が、データ転送制御手段２と第１ハードディスク３におけるステータス通知フェーズである。
【００５３】
一方、図１０では、図９と同様にまず、第１ハードディスク３は、第２ハードディスク４にライトコマンドを通知する（Ｓ２１）。イニシエータである第１ハードディスク３は、第２ハードディスク４からデータＮのリード要求をリードリクエストパケット（ＴＳ３）により受信する。この応答として、データＮのうち１パケットをデータリード応答パケット（ＩＳ５）にて第２ハードディスク４に転送し、次のデータリード要求が来るまで待機する。次のデータリード要求であるリードリクエストパケット（ＴＳ４〜ＴＳ５）を受信するとデータＮ内の次のパケットをデータリード応答（ＩＳ６〜ＩＳ７）で第２ハードディスク４に転送する。以上を繰り返しデータＮ全てを転送する。以上がデータ転送フェーズである。
【００５４】
その後、第２ハードディスク４は、ステータス通知をライトリクエストパケットで第１ハードディスク３に送信するので、第１ハードディスク３では、これを受信しデータＮが転送できたか確認する（Ｓ２２）。ステータス通知が受信できた場合（Ｓ２２：ＹＥＳ）には、データＮの書き込みが正常に終了したか否かが判断され（Ｓ２３）、書き込みが終了していない場合（Ｓ２３：ＮＯ）には、ステップＳ２１に戻って今回のデータＮを再度読み出すようにライトコマンドが送信され、書き込みが終了した場合（Ｓ２３：ＹＥＳ）には、処理を終了する。データＮの書き込みが正常に終了ない場合とは、例えば、データＣＲＣエラーやデータ長がデータサイズと不一致だったことを示す場合や、第２ハードディスク４へのアクセス競合が発生したことを示すエラーの場合である。
【００５５】
また、ステップＳ２２で、ステータス通知が受信できなかった場合（Ｓ２２：ＮＯ）には、第１ハードディスク３は、第２ハードディスク４からデータリード要求を受信したか否かを判断し（Ｓ２４）、データリード要求を受信しない場合（Ｓ２４：ＮＯ）には、何もしないでステップＳ２２に戻ってステータス通知を待ち受け、データリード要求を受信した場合（Ｓ２４：ＹＥＳ）には、第２ハードディスク４へデータリード応答および１パケットのデータを転送してから（Ｓ２５）、ステップＳ２２に戻ってステータス通知を待ち受ける。以上が、第１ハードディスク３と第２ハードディスク４におけるステータス通知フェーズである。
【００５６】
従って、受信ノード（第１ハードディスク３〜第３ハードディスク５）が、データ転送制御手段２にデータの転送を要求した後に、データ転送制御手段２では、データ記憶部（データメモリ１２）内のデータを転送し、その後、受信ノードからのデータ転送が正常に完了したことを示す通知を受信しない場合、データ記憶部内のデータを再度転送し、受信ノードからのデータ転送が正常に完了したことを示す通知を受信した場合、データ記憶部内のデータを削除する。
【００５７】
また、データ転送制御手段２が、受信ノードにアドレスおよび新たなコマンドの発生を通知する際に、データ転送制御手段２は、コマンド記憶部（ＯＲＢ格納メモリ１４）に、データ記憶部に格納されたデータを読み出して転送させるためのリードトランザクション要求を受信ノードから送信させるコマンドを格納し、通知する。
【００５８】
ここで上記データ転送フェーズについて、さらに図９の場合の動作を詳細に説明する。データ転送制御手段２から第１ハードディスク３へのデータライトの動作は、上記のようにＳＢＰ２ではリードトランザクションにより行われる。第１ハードディスク３は、データのリードリクエストパケットをイニシエータであるデータ転送制御手段２に送信し、データ転送制御手段２はこれを受信すると、分割リードトランザクションまたは連結リードトランザクションに従ってペンディングのアクノリッジパケットを返送する。その後、データ転送制御手段２は、データがＩＥＥＥ１３９４バスに出力可能な状態になると引き続きリード応答パケットを送信してデータ本体を第１ハードディスク３に転送する。第１ハードディスク３は、これに対して図４に示したようにコンプリートのアクノリッジを返す。このようにＳＢＰ２では、イニシエータからターゲットにデータを転送する場合、１パケットのデータの転送を行うために往復４つのパケットのやりとりが必要となっている。
【００５９】
図１１は、バスを介して図９におけるデータ転送制御手段２から第１ハードディスク３へのパケットの転送されるタイミング、および、図１０における第１ハードディスク３から第２ハードディスク４へのパケットの転送されるタイミングを示すタイミングチャートである。
【００６０】
図１１では、データメモリ１２に蓄積されたデータ１、および、データ２が、第１ハードディスク３および第２ハードディスク４にミラーリング転送される様子を示している。
【００６１】
まず、バスを介してデータ転送制御手段２から第１ハードディスク３に、ＰＫＴ＿１、ＰＫＴ＿２、・・・、ＰＫＴ＿ＭのＭ個のパケットでデータ１が転送されている。その後、同様にバスを介して第１ハードディスク３から第２ハードディスク４に同一のデータ１の転送が行われている。次に、データ２がデータ転送制御手段２から第１ハードディスク３に、ＰＫＴ＿１、ＰＫＴ＿２、・・・、ＰＫＴ＿ＭのＭ個のパケットで転送されている。その後、同様に第１ハードディスク３から第２ハードディスク４に同一のデータ２の転送が行われている。
【００６２】
以上のように、本実施の形態では、データメモリ１２に蓄積したデータＮを第１ハードディスク３、第２ハードディスク４の順にシーケンシャルに記録することでミラーリングを実現することが可能である。
【００６３】
また、本実施の形態では、データメモリ１２に蓄積したデータＮを第１ハードディスク３及び第２ハードディスク４にそれぞれ記録するまでデータメモリ１２に保存しておくことで、第１ハードディスク３、あるいは、第２ハードディスク４へのデータ転送が正常にできなかった場合、データメモリ１２に格納したデータを再送するようにしたので、エラー時の再送処理にも対応可能であり、確実にデータをミラーリングすることができる。
【００６４】
また、本実施の形態では、データメモリ１２に格納されたデータが第１ハードディスク３、第２ハードディスク４にそれぞれ完全に転送された後で削除（破棄）されるため、無駄なデータを残すことなくメモリ領域を効率的に使用することができる。
【００６５】
また、本実施の形態では、ＳＢＰ２に従って記録を行っているため、一般的に普及しているＩＥＥＥ１３９４ハードディスクをそのままミラーリングデバイスとして使用することが可能である。
【００６６】
また、本実施の形態では、第１ハードディスク３、第２ハードディスク４のようにミラーリング用ハードディスクを同一のＩＥＥＥ１３９４バス上に配置し、データメモリ１２、ＩＥＥＥ１３９４インターフェースをそれぞれ共通に使用するシンプルな構成であることから低コストで実現することができる。
【００６７】
実施の形態２．
上記した実施の形態１では、ハードディスクにライトコマンドを発行する際には、ＳＢＰ２に従い、ハードディスクからデータリードリクエストを受信し、これに対してデータリード応答により１パケットデータを転送していた（リードトランザクション）。また、このリードトランザクションによるデータ転送動作は分割リードトランザクション又は連結リードトランザクションで行われていた。しかし、図２の通信手順と図４の通信手順とを比較してわかるように、統合トランザクションのライトトランザクションを用いることができる場合には、通信時間を短縮して高速なデータ転送が可能となる。そこで、以下に示す実施の形態２では、データ転送フェーズにおけるイニシエータからターゲットへのデータ転送動作をリードトランザクションではなく、ライトトランザクションにより行うようにし、統合トランザクションを使用できる場合には高速なデータ転送ができるようにした場合について説明する。
【００６８】
なお、本実施の形態のデータ転送システムの構成、概略の動作フロー、および、動作のタイミングについては、図１、図８および図１１を用いて示した実施の形態１と同様であるため、重複する説明を省略する。本実施の形態と実施の形態１との相違点は、データ転送フェーズにおけるデータＮ本体の第１ハードディスク３及び第２ハードディスク４への転送動作に有り、本実施の形態のデータ転送システムでは、データ転送制御手段２から第１ハードディスク３へのデータＮの転送、及び、第１ハードディスク３から第２ハードディスク４へのデータＮの転送をライトトランザクションにより実施している点である。
【００６９】
図１２は、実施の形態２のデータ転送制御手段２における第１ハードディスク３へのデータＮの転送を示すフローチャートであり、図１３は、実施の形態２の第１ハードディスク３における第２ハードディスク４へのデータＮの転送を示すフローチャートである。
【００７０】
図１２では、ハードディスクにライトコマンドを通知するコマンド転送フェーズの動作及びハードディスクからステータス通知を受信した以降のステータス通知フェーズの動作は実施の形態１と同じであり、ステップＳ６１〜Ｓ６３は、図９のステップＳ１１〜Ｓ１３と同様である。
【００７１】
上記した実施の形態１では、データ本体を転送するデータ転送フェーズで、データバッファリード要求をリードリクエストパケットでデータ転送制御手段２に送信し、その応答でデータをハードディスクに転送していたが、本実施の形態では、データ転送フェーズで、ＳＢＰ２によるデータ本体の転送は、ライトトランザクションにより行われる。例えば、第１ハードディスク３は、イニシエータであるデータ転送制御手段２からのハードディスクライトコマンド受信後、データを受信する準備ができたとき、データリクエストをライトリクエストパケットにて送信するようにした。
【００７２】
データ転送制御手段２は、統合トランザクションを使用できる場合には、第１ハードディスク３からデータリクエストを受信したか否かを判断し（Ｓ６４）、データリクエストを受信した場合（Ｓ６４：ＹＥＳ）には、このデータリクエストに対してコンプリートのアクノリッジをまず返し、続いて、図２に示したように第１ハードディスク３にデータライト要求をライトリクエストパケットにて要求する（Ｓ６５）。このパケットにはデータ本体が含まれており、第１ハードディスク３は、データ受信に成功したときは、コンプリートのアクノリッジを返し、パケットに付加されたデータをハードディスクに記録する。また、データリクエストを受信しない場合（Ｓ６４：ＮＯ）には、再度ステップＳ６２に戻る。
【００７３】
また、データ転送制御手段２は、分割トランザクションあるいは連結トランザクションを用いる場合、例えば、第１ハードディスク３への書き込みの準備ができていないときには、ビジーやペンディングのアクノリッジを第１ハードディスク３へ一旦返し、データリクエストを受信しない場合（Ｓ６４：ＮＯ）と同様に、再度ステップＳ６２に戻る。ビジーの場合には、データ転送制御手段２（イニシエータ）は再度リトライを行う。またペンディングのアクノリッジが返された場合には、データ転送制御手段２は、第１ハードディスク３からライト応答が返されるのを待ち、この受信後、コンプリートのアクノリッジを返す。
【００７４】
また、図１３でも、ハードディスクにライトコマンドを通知するコマンド転送フェーズの動作及びハードディスクからステータス通知を受信した以降のステータス通知フェーズの動作は実施の形態１と同じであり、ステップＳ７１〜Ｓ７３は、図１０のステップＳ２１〜Ｓ２３と同様である。
【００７５】
図１２と同様に、データ転送フェーズで、ＳＢＰ２によるデータ本体の転送が、ライトトランザクションにより行われる。例えば、第２ハードディスク４は、イニシエータである第１ハードディスク３からのハードディスクライトコマンド受信後、データを受信する準備ができたとき、データリクエストをライトリクエストパケットにて送信するようにした。
【００７６】
第１ハードディスク３は、統合トランザクションを使用できる場合には、第２ハードディスク４からデータリクエストを受信したか否かを判断し（Ｓ７４）、データリクエストを受信した場合（Ｓ７４：ＹＥＳ）には、このデータリクエストに対してコンプリートのアクノリッジをまず返し、続いて、図２に示したように第２ハードディスク４にデータライト要求をライトリクエストパケットにて要求する（Ｓ７５）。このパケットにはデータ本体が含まれており、第２ハードディスク４は、データ受信に成功したときは、コンプリートのアクノリッジを返し、パケットに付加されたデータをハードディスクに記録する。また、データリクエストを受信しない場合（Ｓ７４：ＮＯ）には、再度ステップＳ７２に戻る。
【００７７】
また、第１ハードディスク３は、分割トランザクションあるいは連結トランザクションを用いる場合、例えば、第２ハードディスク４への書き込みの準備ができていないときには、ビジーやペンディングのアクノリッジを第２ハードディスク４へ一旦返し、データリクエストを受信しない場合（Ｓ７４：ＮＯ）と同様に、再度ステップＳ７２に戻る。ビジーの場合には、第１ハードディスク３（イニシエータ）は再度リトライを行う。またペンディングのアクノリッジが返された場合には、第１ハードディスク３は、第２ハードディスク４からライト応答が返されるのを待ち、この受信後、コンプリートのアクノリッジを返す。
【００７８】
データ転送制御手段２は、受信ノードにアドレスおよび新たなコマンドの発生を通知する際に、データ転送制御手段２は、コマンド記憶部（ＯＲＢ格納メモリ１４）に、データ記憶部に格納されたデータを読み出して転送させるためのライトトランザクション要求を格納し、通知する。
【００７９】
このように本実施の形態では、データ転送フェーズにおいて、統合トランザクションを使用でき、ライトトランザクションによりイニシエータからハードディスクにデータの転送ができる場合には、１パケットのデータ転送を行うために往復２つのパケットのやりとりだけでよく、リードトランザクションを用いたＳＢＰ２に比べ高速なデータ転送が可能になる。
【００８０】
また、本実施の形態は、ＳＢＰ２をベースとしているため、従来のハードディスクのファームウエアを小変更するのみで、より高速な転送が可能なシステムが実現できる。
【００８１】
実施の形態３．
以下に示す本発明の実施の形態３のデータ転送システムでは、イニシエータからターゲットへのデータ転送フェーズにおいて、実施の形態１におけるリードトランザクションによるハードディスクへのデータ転送と、実施の形態２におけるライトトランザクションによるハードディスクへのデータ転送を選択的に切り替えできるようにする場合について説明する。
【００８２】
例えば、実施の形態１の図６のコマンドブロックＯＲＢ構造において、ｒｑ＿ｆｍｔフィールドが‘２’（ベンダー依存であることを示している）の場合には、ライトトランザクションによるデータ本体の転送を実施し、ｒｑ＿ｆｍｔフィールドが‘０’（ＳＢＰ２で規定されるフォーマットであることを示している）の場合には、リードトランザクションによるデータ本体の転送を実施するようにする。リードトランザクションあるいはライトトランザクション各々のモードにおける動作は、上記した実施の形態１及び実施の形態２の転送動作と同様となる。
【００８３】
このように本実施の形態では、データ転送フェーズにおけるデータ本体のハードディスクへの転送を、リードトランザクション及びライトトランザクションから選択的に切り替えて転送できるようにし、何れのトランザクションで行うかの指示をコマンドブロックＯＲＢのｒｑ＿ｆｍｔフィールドで指定できるようにしたので、受信ノードが従来のハードディスクである場合にはリードトランザクションで互換性を維持し、受信ノードがライトトランザクションに対応するファームウエアを有している場合には、ライトトランザクションで高速に転送することが選択でき、適用範囲を拡張することができる。
【００８４】
実施の形態４．
本発明の実施の形態４のデータ転送システムは、実施の形態３で説明したデータ転送システムにおいて、データ転送フェーズでターゲットが対応可能なデータ本体の転送モードを、イニシエータに次のように予め通知するようにしたものである。
【００８５】
本発明の実施の形態４であるデータ転送システムを説明する前に、イニシエータからのログイン要求に対してターゲットが応答するログイン応答パケットのフォーマットについて説明する。
【００８６】
図１４は、ログイン応答パケットのフォーマットを示す図である。図１４において、ｌｅｎｇｔｈフィールドは、ログイン応答のバイト長を示すフィールドであり、Ｌｏｇｉｎ＿ＩＤフィールドは、このログインのＩＤ番号を示すフィールドであり、ｃｏｍｍａｎｄ＿ｂｌｏｃｋ＿ａｇｅｎｔは、ターゲットにおけるコマンドブロックエージェントのベースアドレスを示すフィールドであり、ｒｅｃｏｎｎｅｃｔ＿ｈｏｌｄフィールドは、ターゲットがバスリセット前のログインに対して確保していたリソースをバスリセット後に削除するまでの時間を示すフィールドである。また、予約フィールドには、‘０’が格納されている。
【００８７】
図１に示されたＩＥＥＥ１３９４バスに接続された各ハードディスク３〜５は、イニシエータであるデータ転送制御手段２からのログイン要求に対しログイン応答を返すが、本実施の形態では、このログイン応答パケットの中に、ハードディスクがデータ転送フェーズで対応可能なデータ本体のデータ転送モードを示すフィールドを用意した。
【００８８】
具体的には、ログイン応答における予約フィールドが‘０’の場合、ターゲットは従来のリードトランザクションにのみ対応していることを示し、‘１’の場合、ターゲットはライトトランザクションにのみ対応していることを示し、‘２’の場合、ターゲットはリードトランザクションだけでなくライトトランザクションにも対応していることを示すようにした（いずれもイニシエータからターゲットへの転送に対して対応している転送モードを示している）。本フィールドが‘０’ならイニシエータは実施の形態１におけるリードトランザクションによるデータ転送手順を、‘１’または‘２’なら実施の形態２におけるライトトランザクションによるデータ転送手順を行う。
【００８９】
本実施の形態では、データ転送制御手段２のコマンド記憶部（ＯＲＢ格納メモリ１４）は、データ記憶部（データメモリ１２）に格納されたデータを読み出して転送させるためのリードトランザクション要求を受信ノード（第１〜第３ハードディスク３〜５）から送信させるコマンド、および、データ記憶部に格納されたデータを受信ノードに書き込ませるために転送する書き込み要求をデータ転送制御手段２に発生させるためのライトトランザクション要求を受信ノードから送信させるコマンドの双方が格納可能であり、且つ、何れか一方を選択して格納する。そして、データ転送制御手段２は、新たなコマンドの発生を通知する際には、上記した何れのコマンドであるかを示す転送モード指示フラグを通知する。受信ノードは、データ転送制御手段２にデータ記憶部からのデータの転送を要求する際に、その対応する転送モードがリードトランザクションあるいはライトトランザクションであるかを示す対応転送モードフラグを通知する。
【００９０】
転送モード指示フラグは、ＳＢＰ２に規定されたコマンドブロックであるＯｐｅｒａｔｉｏｎ  ｒｅｑｕｅｓｔ  ｂｌｏｃｋｓ（ＯＲＢ）のｒｑ＿ｆｍｔフィールドであり、受信ノードは、ｒｑ＿ｆｍｔフィールドが所定の値である場合にライトトランザクションによりデータ転送を行う。また、対応転送モードフラグは、ＳＢＰ２に規定されたログイン応答パケットの予約フィールドに格納される。
【００９１】
データ転送制御手段２が、受信ノード３〜５にアドレスおよび新たなコマンドの発生を通知する際には、データ転送制御手段２は、コマンド記憶部に、データ記憶部に格納されたデータを読み出して転送させるためのリードトランザクション要求を受信ノードから送信させるコマンド、および、データ記憶部に格納されたデータを受信ノードに書き込ませるために転送する書き込み要求をデータ転送制御手段２に発生させるためのライトトランザクション要求を受信ノードから送信させるコマンドの双方から何れか一方のコマンドを選択して格納し、何れのコマンドであるかを示す転送モード指示フラグを通知する。
【００９２】
また、受信ノードが、データ転送制御手段にデータの転送を要求する際には、受信ノードは、そのデータ転送時の対応する転送モードがリードトランザクションあるいはライトトランザクションであるかを示す対応転送モードフラグを通知する。
【００９３】
このように本実施の形態では、ログイン応答パケットの予約フィールドでターゲットがどのデータ転送モードに対応しているかをイニシエータが知ることができるようにしたので、それぞれに対応した最も効率の良い転送モードで動作させることが可能である。
【００９４】
実施の形態５．
図１５は、本発明の実施の形態５となるデータ転送システムを示すブロック図である。
【００９５】
本実施の形態５のデータ転送システムは、図１５に示したデータ転送制御手段２ａ、複数の受信ノードから構成される。複数の受信ノードは、第１ハードディスク３ａ、第２ハードディスク４ａ、第３ハードディスク５ａ、および、第４ハードディスク６であり、データ転送制御手段２ａと第１ハードディスク３ａとの間、第１ハードディスク３ａと第３ハードディスク５ａとの間が、１系統のＩＥＥＥ１３９４バスにより接続され、データ転送制御手段２ａと第２ハードディスク４ａとの間、第２ハードディスク４ａと第４ハードディスク６との間が、前記とは別の１系統のＩＥＥＥ１３９４バスにより接続されている。従って本実施の形態では、ＩＥＥＥ１３９４バスは２系統である。また、データ転送制御手段２ａには、撮像装置であるカメラ１が接続されて転送されるデータが入力される点は実施の形態１と同様である。
【００９６】
データ転送制御手段２ａ内には、記録データ入力インターフェース１１、データメモリ１２、ＩＥＥＥ１３９４インターフェース１３ａ、ＩＥＥＥ１３９４インターフェース１６、ＯＲＢ格納メモリ１４、および、ＣＰＵ１５を有している。記録データ入力インターフェース１１、データメモリ１２、ＯＲＢ格納メモリ１４、および、ＣＰＵ１５は実施の形態１と同様である。ＩＥＥＥ１３９４インターフェース１３ａ、１６は、実施の形態１のＩＥＥＥ１３９４インターフェース１３と同様の機能を有するが、各々異なる系統のＩＥＥＥ１３９４バスに接続されている。
【００９７】
ＩＥＥＥ１３９４インターフェース１３ａのバス系統には、第１ハードディスク３ａおよび第３ハードディスク５ａがシリアル接続され、ＩＥＥＥ１３９４インターフェース１６のバス系統には、第２ハードディスク４ａおよび第４ハードディスク６がシリアル接続される。
【００９８】
図１６は、図１５のデータ転送システムで上記したミラーリング記録する場合の概略のデータ転送動作を示すフローチャートである。
【００９９】
図１５の構成に準じたデータの流れとしては、まず、カメラ１からのアナログデータが、記録データ入力インターフェース１１にてディジタル変換され、データメモリ１２に蓄積される。そして、所定のデータ量が蓄積されると、ＩＥＥＥ１３９４インターフェース１３ａ及び１６を経由して各々対応するＩＥＥＥ１３９４バス上の第１ハードディスク３ａ及び第３ハードディスク５ａにそれぞれ転送されデータが記録される。このとき各ＩＥＥＥ１３９４バス上ではそれぞれＳＢＰ２にて転送処理がなされる。また、前提としてＩＥＥＥ１３９４バス上の第１ハードディスク３ａ、第２ハードディスク４ａ、第３ハードディスク５ａ、および、第４ハードディスク６は既にログインしているものとする。
【０１００】
また、本実施の形態のファームウエアは、メインタスク、第１ハードディスク３ａデータ転送タスク、第２ハードディスク４ａデータ転送タスクの３つのタスクから構成される。図１６ではメインタスク動作を示し、後述する図１７では第１ハードディスク３ａデータ転送タスク動作を示し、図１８では第２ハードディスク４ａデータ転送タスク動作を示す。
【０１０１】
図１６のステップＳ３１〜Ｓ３２までの動作は、実施の形態１のステップＳ１〜Ｓ２までの動作と同様であるので説明を省略する。
【０１０２】
カメラからのデータＮをデータメモリ１２にカメラからのデータＮが所定のデータ量だけ２を実施してデータ量が所定の値に達するのを待ち、所定のデータ量が蓄積された場合（Ｓ３２：ＹＥＳ）には、第１ハードディスクデータ転送タスクを起動する（Ｓ３３）と共に、並列処理で第２ハードディスクデータ転送タスクを起動する（Ｓ３４）。
【０１０３】
また、データＮの転送は、第１ハードディスク３ａへの転送が終わると、順次、第３ハードディスク５ａへの転送が実施され、第２ハードディスク４ａへの転送が終わると、順次、第４ハードディスク６への転送が実施されるというようにシーケンシャルに転送される。データＮは、第１ハードディスク３ａ、第２ハードディスク４ａ、第３ハードディスク５ａ、および、第４ハードディスク６への転送が完了するまではデータメモリ１２に保存される。そして、データ転送制御手段２ａは、第１〜第２の各ハードディスク３ａ〜４ａへのデータＮの転送がそれぞれ完了したことを示す完了通知を待ち（Ｓ３５）、第１〜第２の各ハードディスク３ａ〜４ａへのデータＮの転送完了が確認する（Ｓ３６）。転送完了が確認されない場合（Ｓ３６：ＮＯ）には、再度ステップＳ３５に戻り完了通知を待ち、転送完了が確認された場合（Ｓ３６：ＹＥＳ）には、その後で、データメモリ１２内のデータＮが削除（破棄）される（Ｓ３７）。
【０１０４】
次いで、ユーザから記録停止指示が入力されたか否かが判断される（Ｓ３８）。入力指示が有った場合（Ｓ３８：ＹＥＳ）には、処理を終了し、入力指示が無い場合（Ｓ３８：ＮＯ）には、ステップＳ３２に戻って、データメモリ１２へのデータＮの蓄積と、第１ハードディスク３ａ及び第２ハードディスク４ａへのデータの転送を、ユーザから記録停止指示があるまで繰り返す。
【０１０５】
なお、本実施の形態でも、データメモリ１２の構造は、データＮが保存されていても新しい入力データの蓄積が可能な構造となっている。例えば、入力レート、出力レートよりも十分にバンド幅の大きいＩ／ＦをもつＳＤＲＡＭであり、疑似的なデュアルポートＲＡＭとして動作するものである。
【０１０６】
図１７は、データ転送制御手段２ａにおける第１ハードディスク３ａへのデータＮの転送を示すフローチャートであり、図１８は、データ転送制御手段２ａにおける第２ハードディスク４ａへのデータＮの転送を示すフローチャートである。
【０１０７】
図１７では、まず、データ転送制御手段２ａは、メインタスクがデータメモリ１２にデータＮが所定量蓄積されたのを検出し、第１ハードディスク３ａのデータ転送タスクの起動通知を待ち（Ｓ４１）、第１ハードディスク３ａにライトコマンドを通知する（Ｓ４２）。この通知はＳＢＰ２に従い、実施の形態１と同様になコマンド転送フェーズを実施する。
【０１０８】
その後、データ転送制御手段２ａは、第１ハードディスク３ａからデータＮのリード要求を待ち（Ｓ４３）、リード要求であるリードリクエストパケットを受信するか否かを判断する（Ｓ４４）。リードリクエストパケットを受信した場合（Ｓ４４：ＹＥＳ）には、データＮのうち１パケットをデータリード応答パケットにて第１ハードディスク３ａに転送し、次のデータリード要求を受信するまで待機するためステップＳ４３に戻る（Ｓ４５）。そして、次のデータリード要求であるリードリクエストパケットを受信する（Ｓ４４：ＹＥＳ）とデータＮ内で先ほど転送したパケットの次のパケットをデータリード応答で第１ハードディスク３ａに転送する（Ｓ４５）。以上を繰り返しデータＮ全てを転送する。以上がデータ転送フェーズである。このフェーズで第１ハードディスク３ａへのデータ転送で使用されるトランザクションは、リードトランザクションによるもので実施の形態１で使用されるトランザクションと同一である。従って１パケットのデータの転送を行うために往復４つのパケットのやりとりが必要となっている。
【０１０９】
その後、リードリクエストパケットを受信しない場合（Ｓ４４：ＮＯ）には、第１ハードディスク３ａはステータス通知をライトリクエストパケットでデータ転送制御手段２ａに送信し、データ転送制御手段２ａは、これを受信したか否かを判断する（Ｓ４６）。ステータス通知を受信しない場合（Ｓ４６：ＮＯ）には、ステップＳ４３に戻ってデータＮのリード要求を待ち、ステータス通知を受信した場合（Ｓ４６：ＹＥＳ）には、データ転送制御手段２ａは、データＮを第１ハードディスク３ａに正常に転送できたか確認する（Ｓ４７）。データ転送制御手段２ａは、ステータス通知がデータＣＲＣエラーやデータ長がデータサイズと不一致だったことを示す場合や、第１ハードディスク３ａへのアクセス競合が発生したことを示すエラーの場合（Ｓ４７：ＮＯ）には、ステップＳ４２に戻り、再度対応する第１ハードディスク３ａへのライトコマンド通知による再送処理を行う。正常に転送できた場合（Ｓ４７：ＹＥＳ）には、第１ハードディスク３ａに転送完了を通知する（Ｓ４８）。以上がステータス通知フェーズである。
【０１１０】
一方、図１８では、図１７と同様にまず、データ転送制御手段２ａは、メインタスクがデータメモリ１２にデータＮが所定量蓄積されたのを検出し、第２ハードディスク４ａのデータ転送タスクの起動通知を待ち（Ｓ５１）、第２ハードディスク４ａにライトコマンドを通知する（Ｓ５２）。この通知はＳＢＰ２に従い、実施の形態１と同様になコマンド転送フェーズを実施する。
【０１１１】
その後、データ転送制御手段２ａは、第２ハードディスク４ａからデータＮのリード要求を待ち（Ｓ５３）、リード要求であるリードリクエストパケットを受信するか否かを判断する（Ｓ５４）。リードリクエストパケットを受信した場合（Ｓ５４：ＹＥＳ）には、データＮのうち１パケットをデータリード応答パケットにて第２ハードディスク４ａに転送し、次のデータリード要求を受信するまで待機するためステップＳ５３に戻る（Ｓ５５）。そして、次のデータリード要求であるリードリクエストパケットを受信する（Ｓ５４：ＹＥＳ）とデータＮ内で先ほど転送したパケットの次のパケットをデータリード応答で第２ハードディスク４ａに転送する（Ｓ５５）。以上を繰り返しデータＮ全てを転送する。以上がデータ転送フェーズである。このフェーズで第２ハードディスク４ａへのデータ転送で使用されるトランザクションは、リードトランザクションによるもので実施の形態１で使用されるトランザクションと同一である。従って１パケットのデータの転送を行うために往復４つのパケットのやりとりが必要となっている。
【０１１２】
その後、リードリクエストパケットを受信しない場合（Ｓ５４：ＮＯ）には、第２ハードディスク４ａはステータス通知をライトリクエストパケットでデータ転送制御手段２ａに送信し、データ転送制御手段２ａは、これを受信したか否かを判断する（Ｓ５６）。ステータス通知を受信しない場合（Ｓ５６：ＮＯ）には、ステップＳ５３に戻ってデータＮのリード要求を待ち、ステータス通知を受信した場合（Ｓ５６：ＹＥＳ）には、データ転送制御手段２ａは、データＮを第２ハードディスク４ａに正常に転送できたか確認する（Ｓ５７）。データ転送制御手段２ａは、ステータス通知がデータＣＲＣエラーやデータ長がデータサイズと不一致だったことを示す場合や、第２ハードディスク４ａへのアクセス競合が発生したことを示すエラーの場合（Ｓ５７：ＮＯ）には、ステップＳ５２に戻り、再度対応する第２ハードディスク４ａへのライトコマンド通知による再送処理を行う。正常に転送できた場合（Ｓ５７：ＹＥＳ）には、第２ハードディスク４ａに転送完了を通知する（Ｓ５８）。以上がステータス通知フェーズである。
【０１１３】
また、第１ハードディスク３ａから第３ハードディスク５ａへのデータ転送、および、第２ハードディスク４ａから第４ハードディスク６へのデータ転送も、上記と同様の方法により実施される。
【０１１４】
従って、受信ノード（第１ハードディスク３ａ〜第４ハードディスク６）が、データ転送制御手段２ａにデータの転送を要求した後に、データ転送制御手段２ａでは、データ記憶部（データメモリ１２）内のデータを転送し、その後、受信ノードからのデータ転送が正常に完了したことを示す通知を受信しない場合、データ記憶部内のデータを再度転送し、受信ノードからのデータ転送が正常に完了したことを示す通知を受信した場合、データ記憶部内のデータを削除する。
【０１１５】
また、データ転送制御手段２ａが、受信ノードにアドレスおよび新たなコマンドの発生を通知する際に、データ転送制御手段２ａは、コマンド記憶部（ＯＲＢ格納メモリ１４）に、データ記憶部に格納されたデータを読み出して転送させるためのリードトランザクション要求を受信ノードから送信させるコマンドを格納し、通知する。
【０１１６】
また、上記データ転送フェーズでは、ＳＢＰ２を用いているため、実施の形態１で説明したようにイニシエータからターゲットにデータを転送する場合、１パケットのデータの転送を行うために往復４つのパケットのやりとりが必要となっている。
【０１１７】
図１９は、バスを介して図１７におけるデータ転送制御手段２ａから第１ハードディスク３ａへのパケットの転送されるタイミング、および、図１８におけるデータ転送制御手段２ａから第２ハードディスク４ａへのパケットの転送されるタイミングを示すタイミングチャートである。
【０１１８】
図１９では、データメモリ１２に蓄積されたデータ１、および、データ２が、第１ハードディスク３ａおよび第２ハードディスク４ａにミラーリング転送される様子を示している。
【０１１９】
まず、バスを介してデータ転送制御手段２ａから第１ハードディスク３ａおよび第２ハードディイスク４ａの各々に対して、ＰＫＴ＿１、ＰＫＴ＿２、・・・、ＰＫＴ＿ＭのＭ個のパケットでデータ１が並列に転送される。その後、同様にバスを介してデータ転送制御手段２ａから第１ハードディスク３ａおよび第２ハードディイスク４ａの各々に対して、ＰＫＴ＿１、ＰＫＴ＿２、・・・、ＰＫＴ＿ＭのＭ個のパケットでデータ２が並列に転送される。さらにその後、同様にデータ３、データ４についても、第１ハードディスク３ａおよび第２ハードディスク４ａの各々に対して転送される。
【０１２０】
このように本実施の形態では、第１ハードディスク３ａと第２ハードディスク４ａを別のＩＥＥＥ１３９４バスにそれぞれ接続する構成とし、それぞれ並列に記録することでミラーリングを実現することが可能である。
【０１２１】
また、本実施の形態では、第１ハードディスク３ａまたは第２ハードディスク４ａへのデータ転送が正常にできなかった場合、データメモリ１２に格納したデータを再送するようにしたので、確実にデータをミラーリングすることができる。
【０１２２】
また、本実施の形態では、データメモリ１２に格納されたデータが第１ハードディスク３ａ、第２ハードディスク４ａにそれぞれ完全に転送された後された後で削除するため、無駄なデータを残すことなくメモリ領域を効率的に使用できる。
【０１２３】
また、本実施の形態では、ＳＢＰ２での記録を行っているため、一般的に普及しているＩＥＥＥ１３９４ハードディスクをそのままミラーリングデバイスとして使用することが可能である。
【０１２４】
さらに、本実施の形態では、第１ハードディスク３ａと第２ハードディスク４ａを別のＩＥＥＥ１３９４バス上に接続した構成としたので、それぞれ並列に同一データを記録することができ、入力データがより高レートの場合であってもミラーリングが可能である。
【０１２５】
実施の形態６．
上記した実施の形態５では、ハードディスクにライトコマンドを発行する際には、ＳＢＰ２に従い、ハードディスクからデータリードリクエストを受信し、これに対してデータリード応答により１パケットデータを転送していた（リードトランザクション）。また、このリードトランザクションによるデータ転送動作は分割リードトランザクション又は連結リードトランザクションで行われていた。
しかし、実施の形態１と実施の形態２との関係で図２と図４を用いて説明したように、統合トランザクションのライトトランザクションを用いることができる場合には、通信時間を短縮して高速なデータ転送が可能となる。そこで、以下に示す実施の形態６では、データ転送フェーズにおけるイニシエータからターゲットへのデータ転送動作をリードトランザクションではなく、ライトトランザクションにより行うようにし、統合トランザクションを使用できる場合には高速なデータ転送ができるようにした場合について説明する。
【０１２６】
なお、本実施の形態のデータ転送システムの構成、概略の動作フロー、および、動作のタイミングについては、図１５、図１６および図１７を用いて示した実施の形態５と同様であるため、重複する説明を省略する。本実施の形態と実施の形態５との相違点は、データ転送フェーズにおけるデータＮ本体の第１ハードディスク３ａ及び第２ハードディスク４ａへの転送動作に有り、本実施の形態のデータ転送システムでは、データ転送制御手段２ａから第１ハードディスク３ａへのデータＮの転送、及び、データ転送制御手段２ａから第２ハードディスク４ａへのデータＮの転送をライトトランザクションにより実施している点である。
【０１２７】
図２０は、イニシエータとターゲットの間で行われる通信手順を示す図である。図２０において、アクノリッジのやりとりは簡単にするため示していない。
【０１２８】
イニシエータの最初のログイン要求（ＩＳ１）からコマンドブロックＯＲＢを応答パケットで応答（ＩＳ４）し、ターゲットが取得したコマンドブロックＯＲＢを解析しイニシエータのコマンド要求を理解するまでのコマンド転送フェーズ、および、正常にコマンドブロックＯＲＢが処理されたかを検出するステータス通知フェーズについては、実施の形態１で用いた図７と同様であるので重複する説明を省略する。
【０１２９】
データ本体の転送フェーズは、コマンドがハードディスクへのライトコマンドである場合となる。ターゲットは、データ本体が格納されているデータバッファをイニシエータにデータリクエストパケットにて送信する（ＴＳ１３）。イニシエータは、データバッファ内のデータ本体を１パケット分、データライト要求パケットにて送信する（ＩＳ１５）。１パケットで送信できるデータ長はＩＥＥＥ１３９４バス上の転送レートによって規定されており、例えば４００Ｍｂｐｓでデータ転送する場合、最大パケット長は２ｋｂｙｔｅである。このためデータバッファ内の全データを転送するには複数回のリード要求がターゲットから発行されることもある（ＴＳ１４〜ＴＳ１５、ＩＳ１６〜ＩＳ１７）。
【０１３０】
以上のように本実施の形態では、ハードディスクへのデータライト動作は、ターゲットからのライトトランザクションにより行われる。また、このライトトランザクションは統合トランザクションで行われる。
【０１３１】
上記した内容に基づき、本実施の形態のデータ転送システムで、カメラ１からのデータを、データ転送制御手段２ａにより第１ハードディスク３ａ、および、第２ハードディスク４ａへミラーリング記録する場合のデータ転送動作について説明する。なお、ＩＥＥＥ１３９４バス上ではＳＢＰ２による転送が行われ、データ転送制御手段２ａはイニシエータ、第１ハードディスク３ａ、第２ハードディスク４ａはそれぞれターゲットとして動作する。
【０１３２】
図２１は、データ転送制御手段２ａにおける第１ハードディスク３ａへのデータＮの転送を示すフローチャートであり、図２２は、データ転送制御手段２ａにおける第２ハードディスク４ａへのデータＮの転送を示すフローチャートである。
【０１３３】
図２１のステップＳ８１〜Ｓ８２、および、ステップＳ８６〜Ｓ８８は、実施の形態５の図１７のステップＳ４１〜Ｓ４２、および、ステップＳ４６〜Ｓ４８と同様であるので重複する説明を省略する。
【０１３４】
図２１のステップＳ８２の後、データ転送制御手段２ａは、第１ハードディスク３ａからデータＮのデータリクエストを待ち（Ｓ８３）、データリクエストパケットを受信するか否かを判断する（Ｓ８４）。データリクエストパケットを受信した場合（Ｓ８４：ＹＥＳ）には、データＮのうち１パケットをデータライト要求パケットにて第１ハードディスク３ａに転送し、次のデータリクエストを受信するまで待機するためステップＳ８３に戻る（Ｓ８５）。そして、次のデータリクエストパケットを受信する（Ｓ８４：ＹＥＳ）とデータＮ内で先ほど転送したパケットの次のパケットをデータライト要求で第１ハードディスク３ａに転送する（Ｓ８５）。以上を繰り返しデータＮ全てを転送する。以上がデータ転送フェーズである。このフェーズで第１ハードディスク３ａへのデータ転送で使用されるトランザクションは、ライトトランザクションによるもので実施の形態２で使用されるトランザクションと同一である。従って１パケットのデータの転送を行うために往復２つのパケットのやりとりのみですむ。
【０１３５】
その後、データリクエストパケットを受信しない場合（Ｓ８４：ＮＯ）には、第１ハードディスク３ａはステータス通知をライトリクエストパケットでデータ転送制御手段２ａに送信し、データ転送制御手段２ａは、これを受信したか否かを判断する（Ｓ８６）。以下、実施の形態５と同様である。以上がステータス通知フェーズである。
【０１３６】
図２２のステップＳ９１〜Ｓ９２、および、ステップＳ９６〜Ｓ９８は、実施の形態５の図１８のステップＳ５１〜Ｓ５２、および、ステップＳ５６〜Ｓ５８と同様であるので重複する説明を省略する。
【０１３７】
図２２のステップＳ９２の後、データ転送制御手段２ａは、第２ハードディスク４ａからデータＮのデータリクエストを待ち（Ｓ９３）、データリクエストパケットを受信するか否かを判断する（Ｓ９４）。データリクエストパケットを受信した場合（Ｓ９４：ＹＥＳ）には、データＮのうち１パケットをデータライト要求パケットにて第２ハードディスク４ａに転送し、次のデータリクエストを受信するまで待機するためステップＳ９３に戻る（Ｓ９５）。そして、次のデータリクエストパケットを受信する（Ｓ９４：ＹＥＳ）とデータＮ内で先ほど転送したパケットの次のパケットをデータライト要求で第２ハードディスク４ａに転送する（Ｓ９５）。以上を繰り返しデータＮ全てを転送する。以上がデータ転送フェーズである。このフェーズで第２ハードディスク４ａへのデータ転送で使用されるトランザクションは、ライトトランザクションによるもので実施の形態２で使用されるトランザクションと同一である。従って１パケットのデータの転送を行うために往復２つのパケットのやりとりのみですむ。
【０１３８】
その後、データリクエストパケットを受信しない場合（Ｓ９４：ＮＯ）には、第２ハードディスク４ａはステータス通知をライトリクエストパケットでデータ転送制御手段２ａに送信し、データ転送制御手段２ａは、これを受信したか否かを判断する（Ｓ９６）。以下、実施の形態５と同様である。以上がステータス通知フェーズである。
【０１３９】
図２１、図２２の何れの場合でも、ハードディスクにライトコマンドを通知するコマンド転送フェーズの動作及びハードディスクからステータス通知を受信した以降のステータス通知フェーズの動作は実施の形態５と同じである。実施の形態５ではハードディスクにライトコマンドを発行した際には、ＳＢＰ２に従いハードディスクからデータリードリクエストを受信し、これに対してデータリード応答により１パケットデータを転送していた（リードトランザクション）。また、実施の形態５のリードトランザクションによるデータ転送動作は、分割リードトランザクション又は連結リードトランザクションで行われていた。
【０１４０】
本実施の形態では、データ転送フェーズにおけるイニシエータからターゲットへのデータ転送動作をリードトランザクションではなく、ライトトランザクションにより行うようにした。ハードディスクはイニシエータであるデータ転送制御手段２ａからのハードディスクライトコマンド受信後、データを受信する準備ができたとき、データリクエストをライトリクエストパケットにて送信するようにした（実施の形態５ではデータバッファリード要求をリードリクエストパケットでデータ転送制御手段２ａに送信し、その応答でデータをハードディスクに転送していた）。データ転送制御手段２ａはこのライトリクエストに対してコンプリートのアクノリッジをまず返し、続いてハードディスクにデータライト要求をライトリクエストパケットにて要求する。そして、図２の統合トランザクションを用いることができる場合には、このパケットにはデータ本体を含ますことができ、ハードディスクはデータ受信に成功したときは、コンプリートのアクノリッジを返しパケットに付加されたデータをハードディスクに記録する。また、分割トランザクションあるいは連結トランザクションを用いる場合で、もし、ハードディスクへの書き込みの準備ができていないときは、ビジーやペンディングのアクノリッジを一旦返し、ビジーの場合にはイニシエータは再度リトライを行う。ペンディングのアクノリッジが返された場合には、ハードディスクからライト応答が返されるのを待ち、この受信後コンプリートのアクノリッジを返す。
【０１４１】
このように本実施の形態では、データ転送フェーズにおいて、統合トランザクションを使用でき、ライトトランザクションによりイニシエータからハードディスクにデータの転送ができる場合には、１パケットのデータ転送を行うために往復２つのパケットのやりとりだけでよく、リードトランザクションを用いたＳＢＰ２に比べ高速なデータ転送が可能になる。
【０１４２】
また、本実施の形態は、ＳＢＰ２をベースとしているため、従来のハードディスクのファームウエアを小変更するのみで、より高速な転送が可能なシステムが実現できる。
【０１４３】
実施の形態７．
以下に示す本発明の実施の形態７のデータ転送システムでは、イニシエータからターゲットへのデータ転送フェーズにおいて、実施の形態５におけるリードトランザクションによるハードディスクへのデータ転送と、実施の形態６におけるライトトランザクションによるハードディスクへのデータ転送を選択的に切り替えできるようにする場合について説明する。
【０１４４】
例えば、実施の形態１の図６のコマンドブロックＯＲＢ構造において、ｒｑ＿ｆｍｔフィールドが‘２’（ベンダー依存であることを示している）の場合には、ライトトランザクションによるデータ本体の転送を実施し、ｒｑ＿ｆｍｔフィールドが‘０’（ＳＢＰ２で規定されるフォーマットであることを示している）の場合には、リードトランザクションによるデータ本体の転送を実施するようにする。リードトランザクションあるいはライトトランザクション各々のモードにおける動作は、上記した実施の形態５及び実施の形態５の転送動作と同様となる。
【０１４５】
このように本実施の形態では、データ転送フェーズにおけるデータ本体のハードディスクへの転送を、リードトランザクション及びライトトランザクションから選択的に切り替えて転送できるようにし、何れのトランザクションで行うかの指示をコマンドブロックＯＲＢのｒｑ＿ｆｍｔフィールドで指定できるようにしたので、受信ノードが従来のハードディスクである場合にはリードトランザクションで互換性を維持し、受信ノードがライトトランザクションに対応するファームウエアを有している場合には、ライトトランザクションで高速に転送することが選択でき、適用範囲を拡張することができる。
【０１４６】
実施の形態８．
本発明の実施の形態８のデータ転送システムは、実施の形態７で説明したデータ転送システムにおいて、データ転送フェーズでターゲットが対応可能なデータ本体の転送モードを、イニシエータに次のように予め通知するようにしたものである。また、ログイン応答パケットのフォーマットについては、実施の形態４で説明したとおりである。
【０１４７】
図１５に示されたＩＥＥＥ１３９４バスに接続された各ハードディスク３ａ〜６は、イニシエータであるデータ転送制御手段２ａからのログイン要求に対しログイン応答を返すが、本実施の形態では、このログイン応答パケットの中に、実施の形態４と同様に、ハードディスクがデータ転送フェーズで対応可能なデータ本体のデータ転送モードを示すフィールドを用意した。
【０１４８】
具体的には、ログイン応答における予約フィールドが‘０’の場合、ターゲットは従来のリードトランザクションにのみ対応していることを示し、‘１’の場合、ターゲットはライトトランザクションにのみ対応していることを示し、‘２’の場合、ターゲットはリードトランザクションだけでなくライトトランザクションにも対応していることを示すようにした（いずれもイニシエータからターゲットへの転送に対して対応している転送モードを示している）。本フィールドが‘０’ならイニシエータは実施の形態５におけるリードトランザクションによるデータ転送手順を、‘１’または‘２’なら実施の形態６におけるライトトランザクションによるデータ転送手順を行う。
【０１４９】
本実施の形態では、データ転送制御手段２ａのコマンド記憶部（ＯＲＢ格納メモリ１４）は、データ記憶部（データメモリ１２）に格納されたデータを読み出して転送させるためのリードトランザクション要求を受信ノード（第１〜第４ハードディスク３ａ〜６）から送信させるコマンド、および、データ記憶部に格納されたデータを受信ノードに書き込ませるために転送する書き込み要求をデータ転送制御手段２に発生させるためのライトトランザクション要求を受信ノードから送信させるコマンドの双方が格納可能であり、且つ、何れか一方を選択して格納する。そして、データ転送制御手段２ａは、新たなコマンドの発生を通知する際には、上記した何れのコマンドであるかを示す転送モード指示フラグを通知する。受信ノードは、データ転送制御手段２ａにデータ記憶部からのデータの転送を要求する際に、その対応する転送モードがリードトランザクションあるいはライトトランザクションであるかを示す対応転送モードフラグを通知する。
【０１５０】
転送モード指示フラグは、ＳＢＰ２に規定されたコマンドブロックであるＯｐｅｒａｔｉｏｎ  ｒｅｑｕｅｓｔ  ｂｌｏｃｋｓ（ＯＲＢ）のｒｑ＿ｆｍｔフィールドであり、受信ノードは、ｒｑ＿ｆｍｔフィールドが所定の値である場合にライトトランザクションによりデータ転送を行う。また、対応転送モードフラグは、ＳＢＰ２に規定されたログイン応答パケットの予約フィールドに格納される。
【０１５１】
データ転送制御手段２ａが、受信ノード３ａ〜６にアドレスおよび新たなコマンドの発生を通知する際には、データ転送制御手段２ａは、コマンド記憶部に、データ記憶部に格納されたデータを読み出して転送させるためのリードトランザクション要求を受信ノードから送信させるコマンド、および、データ記憶部に格納されたデータを受信ノードに書き込ませるために転送する書き込み要求をデータ転送制御手段２ａに発生させるためのライトトランザクション要求を受信ノードから送信させるコマンドの双方から何れか一方のコマンドを選択して格納し、何れのコマンドであるかを示す転送モード指示フラグを通知する。
【０１５２】
また、受信ノードが、データ転送制御手段にデータの転送を要求する際には、受信ノードは、そのデータ転送時の対応する転送モードがリードトランザクションあるいはライトトランザクションであるかを示す対応転送モードフラグを通知する。
【０１５３】
このように本実施の形態では、ログイン応答パケットの予約フィールドでターゲットがどのデータ転送モードに対応しているかをイニシエータが知ることができるようにしたので、それぞれに対応した最も効率の良い転送モードで動作させることが可能である。
【０１５４】
【発明の効果】
本発明は、以上説明したように構成されているので、以下に示すような効果を奏する。
【０１５５】
本発明は、ＩＥＥＥ１３９４バス等のシリアル伝送バスに対応し、データメモリに蓄積したデータを複数の各ハードディスクにシーケンシャルに記録することでミラーリングを実現し、データメモリに蓄積したデータを各ハードディスクにそれぞれ記録するまで保存しておき、受信ノードから送信元にデータ転送のアクノリッジを返送することにより、送信元から各ハードディスクへのデータ転送が正常にできなかった場合には、データメモリに格納したデータを再転送できるようにしたので、エラー時の再送処理にも対応可能であり、確実にデータをミラーリングすることができる。また、データメモリに格納されたデータを各ハードディスクにそれぞれ完全に転送された後で削除（破棄）するため、無駄なデータを残すことなくメモリ領域を効率的に使用することができ、ＳＢＰ２に従って記録を行っているため、一般的に普及しているＩＥＥＥ１３９４ハードディスクをそのままミラーリングデバイスとして使用することができる。
【図面の簡単な説明】
【図１】本発明の実施の形態１となるデータ転送システムを示すブロック図である。
【図２】統合トランザクションの書き込み要求（ライトリクエスト）によりデータを転送する場合の一般的な通信手順を示す図である。
【図３】分割トランザクションの書き込み要求（ライトリクエスト）によりデータを転送する場合の一般的な通信手順を示す図である。
【図４】分割トランザクションの読み出し要求（リードリクエスト）によりデータを転送する場合の一般的な通信手順を示す図である。
【図５】ＳＢＰ２ですべての通信に用いられるアシンクロナスパケットの構造を示す図である。
【図６】コマンドブロックＯＲＢの構造を示す図である。
【図７】イニシエータとターゲットの間で行われる通信手順を示す図である。
【図８】図１のデータ転送システムで上記したミラーリング記録する場合の概略のデータ転送動作を示すフローチャートである。
【図９】データ転送制御手段における第１ハードディスクへのデータＮの転送を示すフローチャートである。
【図１０】第１ハードディスクにおける第２ハードディスクへのデータＮの転送を示すフローチャートである。
【図１１】バスを介して図９におけるデータ転送制御手段から第１ハードディスクへのパケットの転送されるタイミング、および、図１０における第１ハードディスクから第２ハードディスクへのパケットの転送されるタイミングを示すタイミングチャートである。
【図１２】実施の形態２のデータ転送制御手段における第１ハードディスクへのデータＮの転送を示すフローチャートである。
【図１３】実施の形態２の第１ハードディスクにおける第２ハードディスクへのデータＮの転送を示すフローチャートである。
【図１４】ログイン応答パケットのフォーマットを示す図である。
【図１５】本発明の実施の形態５となるデータ転送システムを示すブロック図である。
【図１６】図１５のデータ転送システムで上記したミラーリング記録する場合の概略のデータ転送動作を示すフローチャートである。
【図１７】データ転送制御手段における第１ハードディスクへのデータＮの転送を示すフローチャートである。
【図１８】データ転送制御手段における第２ハードディスクへのデータＮの転送を示すフローチャートである。
【図１９】バスを介して図１７におけるデータ転送制御手段から第１ハードディスクへのパケットの転送されるタイミング、および、図１８におけるデータ転送制御手段から第２ハードディスクへのパケットの転送されるタイミングを示すタイミングチャートである。
【図２０】イニシエータとターゲットの間で行われる通信手順を示す図である。
【図２１】データ転送制御手段における第１ハードディスクへのデータＮの転送を示すフローチャートである。
【図２２】データ転送制御手段における第２ハードディスクへのデータＮの転送を示すフローチャートである。
【符号の説明】
１  カメラ、  ２、２ａ  データ転送制御手段、  ３、３ａ  （ＩＥＥＥ１３９４対応）第１ハードディスク（受信ノード）、  ４、４ａ  （ＩＥＥＥ１３９４対応）第２ハードディスク（受信ノード）、  ５、５ａ  （ＩＥＥＥ１３９４対応）第３ハードディスク（受信ノード）、  ６  （ＩＥＥＥ１３９４対応）第４ハードディスク（受信ノード）、  １１  記録データ入力インターフェース、１２  データメモリ（データ記憶部）、  １３、１３ａ、１６  ＩＥＥＥ１３９４インターフェース、  １４  ＯＲＢ格納メモリ（コマンド記憶部）、  １５
ＣＰＵ。
【図１】
2004228835.tif 000003
【図２】
2004228835.tif 000004
【図３】
2004228835.tif 000005
【図４】
2004228835.tif 000006
【図５】
2004228835.tif 000007
【図６】
2004228835.tif 000008
【図７】
2004228835.tif 000009
【図８】
2004228835.tif 000010
【図９】
2004228835.tif 000011
【図１０】
2004228835.tif 000012
【図１１】
2004228835.tif 000013
【図１２】
2004228835.tif 000014
【図１３】
2004228835.tif 000015
【図１４】
2004228835.tif 000016
【図１５】
2004228835.tif 000017
【図１６】
2004228835.tif 000018
【図１７】
2004228835.tif 000019
【図１８】
2004228835.tif 000020
【図１９】
2004228835.tif 000021
【図２０】
2004228835.tif 000022
【図２１】
2004228835.tif 000023
【図２２】
2004228835.tif 000024