(57)【特許請求の範囲】
【請求項１】
イニシエータ装置がループを介して接続され、前記イニシエータ装置との間でコマンドやデータの送受信を行なうファイバチェネル環境下のターゲット装置において、
前記イニシエータ装置からＷＲＩＴＥ方向のコマンドのＦＣＰ＿ＣＭＮＤを受信し、前記ＦＣＰ＿ＣＭＮＤを解析する受信手段と、
受信した前記ＦＣＰ＿ＣＭＮＤの内容にもとづいてＦＣＰ＿ＸＦＥＲ＿ＲＤＹを構築して前記イニシエータ装置に送信し、前記イニシエータ装置が前記ＦＣＰ＿ＸＦＥＲ＿ＲＤＹに基づいて作成したＦＣＰ＿ＤＡＴＡを受信するデータ転送制御手段と、
前記受信手段が前記ＦＣＰ＿ＣＭＮＤを解析した結果得られたコマンド内容特定情報から行なうべき処理を特定し、前記データ転送制御手段がＦＣＰ＿ＤＡＴＡを受信した後、これに基づいてコマンド処理を行なうコマンド処理手段とを備え、
前記コマンド処理手段がコマンド内容特定情報から行なうべき処理を特定する処理の完了をまたずに同時並行して、前記データ転送制御手段がＦＣＰ＿ＸＦＥＲ＿ＲＤＹを構築して前記イニシエータ装置に送信することを特徴とするターゲット装置。
【請求項２】
イニシエータ装置とターゲット装置がループを介して接続され、前記イニシエータ装置と前記ターゲット装置との間でコマンドやデータの送受信を行なうファイバチャネル環境下のデータ転送システムにおいて、
前記イニシエータ装置と、前記イニシエータ装置と接続されたループと、
前記イニシエータ装置と前記ループを介して接続された前記ターゲット装置とを備え、
前記ターゲット装置は、
前記イニシエータ装置からＷＲＩＴＥ方向のコマンドのＦＣＰ＿ＣＭＮＤを受信し、前記ＦＣＰ＿ＣＭＮＤを解析する受信手段と、
受信した前記ＦＣＰ＿ＣＭＮＤの内容にもとづいてＦＣＰ＿ＸＦＥＲ＿ＲＤＹを構築して前記イニシエータ装置に送信し、前記イニシエータ装置が前記ＦＣＰ＿ＸＦＥＲ＿ＲＤＹに基づいて作成したＦＣＰ＿ＤＡＴＡを受信するデータ転送制御手段と、
前記受信手段が前記ＦＣＰ＿ＣＭＮＤを解析した結果得られたコマンド内容特定情報から行なうべき処理を特定し、前記データ転送制御手段がＦＣＰ＿ＤＡＴＡを受信した後、これに基づいてコマンド処理を行なうコマンド処理手段とを備え、
前記コマンド処理手段がコマンド内容特定情報から行なうべき処理を特定する処理の完了をまたずに同時並行して、前記データ転送制御手段がＦＣＰ＿ＸＦＥＲ＿ＲＤＹを構築して前記イニシエータ装置に送信することを特徴とするシステム。
【請求項３】
イニシエータ装置とターゲット装置がループを介して接続され、イニシエータ装置とターゲット装置との間でコマンドやデータの送受信を行なうファイバチャネル環境下のデータ転送方法において、
ターゲット装置がＷＲＩＴＥ方向のコマンドを前記イニシエータ装置から受信し、前記コマンドを解析する第１ステップと、
受信した前記コマンドの内容にもとづいてＦＣＰ＿ＸＦＥＲ＿ＲＤＹを構築して前記イニシエータ装置に送信する第２ステップと、
前記ターゲット装置が前記コマンドを解析した結果得られたコマンド内容特定情報から行なうべき処理を特定する第３ステップと、
前記イニシエータ装置が前記ＦＣＰ＿ＸＦＥＲ＿ＲＤＹに基づいて作成したＦＣＰ＿ＤＡＴＡをターゲット装置が受信する第４ステップと、
ＦＣＰ＿ＤＡＴＡを受信した後、これに基づいてコマンド処理を行なう第５ステップとを備え、
第３ステップの処理の完了をまたずに第３ステップと同時並行して第２ステップを処理することを特徴とするデータ転送方法。
【請求項４】
イニシエータ装置とターゲット装置がループを介して接続され、イニシエータ装置とターゲット装置との間でコマンドやデータの送受信を行なうファイバチャネル環境下のデータ転送方法において、
ＷＲＩＴＥ方向のコマンドのＦＣＰ＿ＣＭＮＤをＦＣＰ＿ＣＭＮＤ受信手段が前記イニシエータ装置から受信し、前記ＦＣＰ＿ＣＭＮＤを解析する第１ステップと、
受信した前記ＦＣＰ＿ＣＭＮＤの内容にもとづいてデータ転送制御手段がＦＣＰ＿ＸＦＥＲ＿ＲＤＹを構築して前記イニシエータ装置に送信する第２ステップと、
前記ＦＣＰ＿ＣＭＮＤを解析した結果得られたコマンド内容特定情報から行なうべき処理をコマンド処理手段が特定する第３ステップと、
前記イニシエータ装置が前記ＦＣＰ＿ＸＦＥＲ＿ＲＤＹに基づいて作成したＦＣＰ＿ＤＡＴＡを前記データ転送制御装置が受信する第４ステップと、
ＦＣＰ＿ＤＡＴＡを受信した後、これに基づいてコマンド処理を行なう第５ステップとを備え、
第３ステップの処理の完了をまたずに第３ステップと同時並行して第２ステップを処理することを特徴とするデータ転送方法。
【請求項５】
イニシエータ装置がループを介して接続され、前記イニシエータ装置との間でコマンドやデータの送受信を行なうファイバチェネル環境下のターゲット装置において、
前記イニシエータ装置からＷＲＩＴＥ方向のコマンドのＦＣＰ＿ＣＭＮＤを受信し、前記ＦＣＰ＿ＣＭＮＤを解析する受信手段と、
受信した前記ＦＣＰ＿ＣＭＮＤの内容にもとづいてＦＣＰ＿ＸＦＥＲ＿ＲＤＹを構築して前記イニシエータ装置に送信し、前記イニシエータ装置が前記ＦＣＰ＿ＸＦＥＲ＿ＲＤＹに基づいて作成したＦＣＰ＿ＤＡＴＡを受信するデータ転送制御手段と、
前記受信手段が前記ＦＣＰ＿ＣＭＮＤを解析した結果得られたコマンド内容特定情報から行なうべき処理を特定し、前記データ転送制御手段がＦＣＰ＿ＤＡＴＡを受信した後、これに基いてコマンド処理を行なうコマンド処理手段とを備え、
前記データ転送制御手段がＦＣＰ＿ＸＦＥＲ＿ＲＤＹを構築して前記イニシエータ装置に送信した後であって、前記データ転送制御手段がＦＣＰ＿ＤＡＴＡを受信する前に、前記コマンド処理手段がコマンド内容特定情報から行なうべき処理を特定することを特徴とするターゲット装置。
【請求項６】
イニシエータ装置とターゲット装置がループを介して接続され、前記イニシエータ装置と前記ターゲット装置との間でコマンドやデータの送受信を行なうファイバチャネル環境下のデータ転送システムにおいて、
前記イニシエータ装置と、前記イニシエータ装置と接続されたループと、
前記イニシエータ装置と前記ループを介して接続された前記ターゲット装置とを備え、
前記ターゲット装置は、
前記イニシエータ装置からＷＲＩＴＥ方向のコマンドのＦＣＰ＿ＣＭＮＤを受信し、前記ＦＣＰ＿ＣＭＮＤを解析する受信手段と、
受信した前記ＦＣＰ＿ＣＭＮＤの内容にもとづいてＦＣＰ＿ＸＦＥＲ＿ＲＤＹを構築して前記イニシエータ装置に送信し、前記イニシエータ装置が前記ＦＣＰ＿ＸＦＥＲ＿ＲＤＹに基づいて作成したＦＣＰ＿ＤＡＴＡを受信するデータ転送制御手段と、
前記受信手段が前記ＦＣＰ＿ＣＭＮＤを解析した結果得られたコマンド内容特定情報から行なうべき処理を特定し、前記データ転送制御手段がＦＣＰ＿ＤＡＴＡを受信した後、これに基いてコマンド処理を行なうコマンド処理手段とを備え、
前記データ転送制御手段がＦＣＰ＿ＸＦＥＲ＿ＲＤＹを構築して前記イニシエータ装置に送信した後であって、前記データ転送制御手段がＦＣＰ＿ＤＡＴＡを受信する前に、前記コマンド処理手段がコマンド内容特定情報から行なうべき処理を特定することを特徴とするシステム。
【請求項７】
イニシエータ装置とターゲット装置がループを介して接続され、イニシエータ装置とターゲット装置との間でコマンドやデータの送受信を行なうファイバチャネル環境下のデータ転送方法において、
ターゲット装置がＷＲＩＴＥ方向のコマンドを前記イニシエータ装置から受信し、前記コマンドを解析する第１ステップと、
受信した前記コマンドの内容にもとづいてＦＣＰ＿ＸＦＥＲ＿ＲＤＹを構築して前記イニシエータ装置に送信する第２ステップと、
前記ターゲット装置が前記コマンドを解析した結果得られたコマンド内容特定情報から行なうべき処理を特定する第３ステップと、
前記イニシエータ装置が前記ＦＣＰ＿ＸＦＥＲ＿ＲＤＹに基づいて作成したＦＣＰ＿ＤＡＴＡをターゲット装置が受信する第４ステップと、
ＦＣＰ＿ＤＡＴＡを受信した後、これに基づいてコマンド処理を行なう第５ステップとを備え、
第２ステップの処理の完了後であってＦＣＰ＿ＤＡＴＡを前記ターゲット装置が受信する前に、第３ステップの処理を開始しかつ完了することを特徴とするデータ転送方法。
【請求項８】
イニシエータ装置とターゲット装置がループを介して接続され、イニシエータ装置とターゲット装置との間でコマンドやデータの送受信を行なうファイバチャネル環境下のデータ転送方法において、
前記イニシエータ装置からＷＲＩＴＥ方向のコマンドのＦＣＰ＿ＣＭＮＤを受信手段が受信し、前記ＦＣＰ＿ＣＭＮＤを解析する第１ステップと、
前記受信手段が前記ＦＣＰ＿ＣＭＮＤを解析した結果得られたコマンド内容特定情報から行なうべき処理を特定する第２ステップと、
受信したＦＣＰ＿ＣＭＮＤの内容にもとづいてデータ転送制御手段がＦＣＰ＿ＸＦＥＲ＿ＲＤＹを構築して前記イニシエータ装置に送信する第３ステップと、前記イニシエータ装置が前記ＦＣＰ＿ＸＦＥＲ＿ＲＤＹに基づいて作成したＦＣＰ＿ＤＡＴＡを前記データ転送制御手段が受信する第４ステップと、
ＦＣＰ＿ＤＡＴＡを受信した後、前記コマンド処理手段がこれに基づいてコマンド処理を行なう第５ステップとを備え、
第２ステップの処理の完了後であってＦＣＰ＿ＤＡＴＡを前記データ転送処理手段が受信する前に、第３ステップの処理を開始しかつ完了することを特徴とするデータ転送方法。
【請求項９】
イニシエータ装置がループを介して接続され、前記イニシエータ装置との間でコマンドやデータの送受信を行なうファイバチェネル環境下のターゲット装置において、
前記イニシエータ装置からＷＲＩＴＥ方向のコマンドのＦＣＰ＿ＣＭＮＤを受信し、前記ＦＣＰ＿ＣＭＮＤを解析する受信手段と、
受信した前記ＦＣＰ＿ＣＭＮＤの内容にもとづいてＦＣＰ＿ＸＦＥＲ＿ＲＤＹを構築して前記イニシエータ装置に送信し、前記イニシエータ装置が前記ＦＣＰ＿ＸＦＥＲ＿ＲＤＹに基づいて作成したＦＣＰ＿ＤＡＴＡを受信し、前記データ転送制御手段が受信すべきデータのうち最後のＦＣＰ＿ＤＡＴＡであるか否かを判断し、最後のＦＣＰ＿ＤＡＴＡでないと判断したときは前記ＦＣＰ＿ＣＭＮＤの内容にもとづいてＦＣＰ＿ＸＦＥＲ＿ＲＤＹを構築して前記イニシエータ装置に送信する以降の処理を再度実行し、最後のＦＣＰ＿ＤＡＴＡであると判断したときは全ＦＣＰ＿ＤＡＴＡを受信完了したと判断するデータ転送制御手段と、
前記受信手段が前記ＦＣＰ＿ＣＭＮＤを解析した結果得られたコマンド内容特定情報から行なうべき処理を特定し、前記データ転送制御手段が全ＦＣＰ＿ＤＡＴＡを受信完了した後、これに基づいてコマンド処理を行なうコマンド処理手段とを備え、
前記コマンド処理手段がコマンド内容特定情報から行なうべき処理を特定する処理の完了をまたずに同時並行して、前記データ転送制御手段がＦＣＰ＿ＸＦＥＲ＿ＲＤＹを構築して前記イニシエータ装置に送信することを特徴とするターゲット装置。
【請求項１０】
請求項９記載のターゲット装置であり、
前記データ転送制御手段は、受信した前記ＦＣＰ＿ＣＭＮＤの内容にもとづいてＦＣＰ＿ＸＦＥＲ＿ＲＤＹを構築する際に、ＦＣＰ＿ＸＦＥＲ＿ＲＤＹのデータ長をターゲット装置のメモリ領域の容量以内とし、データオフセットは前記ＦＣＰ＿ＣＭＮＤにより受信すべきデータのうちすでに受信済みとなったデータの大きさとなるよう設定し、
ＦＣＰ＿ＸＦＥＲ＿ＲＤＹのデータオフセットの値とデータ長の値の和が受信したＦＣＰ＿ＣＭＮＤのデータ長と等しいことを確認することにより最後のＦＣＰ＿ＤＡＴＡであると判断することを特徴とするターゲット装置。
【請求項１１】
イニシエータ装置とターゲット装置がループを介して接続され、イニシエータ装置とターゲット装置との間でコマンドやデータの送受信を行なうファイバチャネル環境下のデータ転送方法において、
ＷＲＩＴＥ方向のコマンドのＦＣＰ＿ＣＭＮＤをＦＣＰ＿ＣＭＮＤ受信手段が前記イニシエータ装置から受信し、前記ＦＣＰ＿ＣＭＮＤを解析する第１ステップと、
受信した前記ＦＣＰ＿ＣＭＮＤの内容にもとづいてデータ転送制御手段がＦＣＰ＿ＸＦＥＲ＿ＲＤＹを構築して前記イニシエータ装置に送信する第２ステップと、
前記イニシエータ装置が前記ＦＣＰ＿ＸＦＥＲ＿ＲＤＹに基づいて作成したＦＣＰ＿ＤＡＴＡをデータ転送制御手段が受信する第３ステップと、
前記データ転送制御手段が受信すべきデータのうち最後のＦＣＰ＿ＤＡＴＡであるか否かを判断し、最後のＦＣＰ＿ＤＡＴＡでないと判断したときは第２ステップ以降を再度実行し、最後のＦＣＰ＿ＤＡＴＡであると判断したときは全ＦＣＰ＿ＤＡＴＡを受信完了したと判断する第４ステップと、
前記ＦＣＰ＿ＣＭＮＤを解析した結果得られたコマンド内容特定情報から行なうべき処理をコマンド処理手段が特定する第５ステップと、
全ＦＣＰ＿ＤＡＴＡを受信した後、これに基づいてコマンド処理手段がコマンド処理を行なう第６ステップとを備え、
第３ステップの処理の完了をまたずに第３ステップと同時並行して第５ステップを処理することを特徴とするデータ転送方法。
【請求項１２】
請求項１１記載のデータ転送方法であり、
第２ステップにおいて、ＦＣＰ＿ＸＦＥＲ＿ＲＤＹのデータ長をターゲットのメモリ領域の容量以内とし、データオフセットは前記ＦＣＰ＿ＣＭＮＤにより受信すべきデータのうちすでに受信済みとなったデータの大きさとなるよう設定し、
第４ステップにおいて、ＦＣＰ＿ＸＦＥＲ＿ＲＤＹのデータオフセットの値とデータ長の値の和が受信したＦＣＰ＿ＣＭＮＤのデータ長と等しいことを確認することにより最後のＦＣＰ＿ＤＡＴＡであると判断することを特徴とするデータ転送方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、Fiber Channel Protocol for SCSI（以下、ＦＣＰと略す）をインタフェースとしたファイバチャネル対応機器において、データ転送を伴うコマンド処理の高速化を実現した装置、方法に関する。
【０００２】
【従来の技術】
従来のターゲットにおけるコマンド処理について図９、図１０、図１１を用いて説明する。図９を参照すると、イニシエータ１がＦＣ−ＡＬループ２を介してＦＣＰ＿ＣＭＮＤをターゲット２３に送信する。
【０００３】
ターゲット２３内のＦＣＰ＿ＣＭＮＤを受信手段２４はＦＣＰ＿ＣＭＮＤを受信し（図１１、ステップＣ１）、受信したＦＣＰ＿ＣＭＮＤを解析し、ＬＵＮ（Logical Unit Number  論理ユニット番号）、ＣＤＢ（Command Description Block   コマンド記述ブロック）をコマンド処理手段２６へ通知する。コマンド処理手段２６はＬＵＮとＣＤＢの解析を行う（図１１、ステップＣ２）（図１０、処理Ｄ１）。コマンド処理手段２６はＦＣＰ＿ＣＭＮＤのＬＵＮ、ＣＤＢを解析した後に、データ転送長を構築する（図１１、ステップＣ３）（図１０、処理Ｄ１）。これを受けたデータ転送制御手段２７はＦＣＰ＿ＸＦＥＲ＿ＲＤＹをイニシエータに送信する（図１１、ステップＣ４）。イニシエータ１はＦＣＰ＿ＸＦＥＲ＿ＲＤＹの内容に従い、ＦＣＰ＿ＤＡＴＡをターゲット２３に送信する。
【０００４】
ＦＣＰ＿ＤＡＴＡをターゲット２３が受信すると（図１１、ステップＣ５、イエス）、コマンド処理手段２６データを用いてコマンド処理を行い（図１０、処理Ｄ２）、ＦＣＰ＿ＳＴＡＴＵＳ送信手段２５はＦＣＰ＿ＳＴＡＴＵＳをイニシエータ１に送信し（図１１、ステップＣ６）、一連のシーケンスを終了する。
【０００５】
【発明が解決しようとする課題】
しかし、この従来技術には次のような問題点があった。
【０００６】
ターゲットがＦＣＰ＿ＣＭＮＤを受信後ＦＣＰ＿ＸＦＥＲ＿ＲＤＹを送信してから、ＦＣＰ＿ＤＡＴＡを受信するまでの待ちの時間とＣＤＢ、ＬＵＮの解析、データ転送取得の処理時間が和がコマンド全体の処理時間の構成要素のひとつとして加えられてしまうという点である。
【０００７】
また、特開平１０−３０３９３６号公報によれば、図１２のようにイニシエータ、ターゲットにおいてＦＣＰ＿ＸＦＥＲ＿ＲＤＹの送受信を行わないことを予め決めておき、イニシエータがＦＣＰ＿ＣＭＮＤ、ＦＣＰ＿ＤＡＴＡを送信し、その後ターゲットがＦＣＰ＿ＳＴＡＴＵＳを送信することでＦＣＰ＿ＸＦＥＲ＿ＲＤＹの送信を省略し、コマンド全体の処理時間の短縮を図っている。
【０００８】
しかし、この従来技術にも、イニシエータがＦＣＰ＿ＣＭＮＤと同時にＦＣＰ＿ＤＡＴＡを送信するため、ＦＣＰ＿ＤＡＴＡの受信に充分なデータ格納領域を持たないターゲットに対し、不用意に長大なデータ送信を行った場合、データの欠落、またはターゲットのデータ格納領域破壊を引き起こす可能性があるという問題点がある。
【０００９】
本発明の目的は以上の問題点を解決し、コマンド全体の処理時間を短縮しかつＦＣＰ＿ＣＭＮＤの受信に充分な格納領域を持たない場合でもデータの欠落、データ格納領域破壊を引き起こすことを防止できるＦＣＰ＿ＸＦＥＲ＿ＲＤＹ送信方法および装置を提供することにある。
【００１０】
【課題を解決するための手段】
本発明のターゲット装置は、イニシエータ装置がループを介して接続され、前記イニシエータ装置との間でコマンドやデータの送受信を行なうファイバチェネル環境下のターゲット装置であり、前記イニシエータ装置からＷＲＩＴＥ方向のコマンドのＦＣＰ＿ＣＭＮＤを受信し、前記ＦＣＰ＿ＣＭＮＤを解析する受信手段と、受信した前記ＦＣＰ＿ＣＭＮＤの内容にもとづいてＦＣＰ＿ＸＦＥＲ＿ＲＤＹを構築して前記イニシエータ装置に送信し、前記イニシエータ装置が前記ＦＣＰ＿ＸＦＥＲ＿ＲＤＹに基づいて作成したＦＣＰ＿ＤＡＴＡを受信するデータ転送制御手段と、前記受信手段が前記ＦＣＰ＿ＣＭＮＤを解析した結果得られたコマンド内容特定情報（ＬＵＮ，ＣＤＢ）から行なうべき処理を特定し、前記データ転送制御手段がＦＣＰ＿ＤＡＴＡを受信した後、これに基づいてコマンド処理を行なうコマンド処理手段とを備え、記コマンド処理手段がコマンド内容特定情報から行なうべき処理を特定する処理の完了をまたずに同時並行して、前記データ転送制御手段がＦＣＰ＿ＸＦＥＲ＿ＲＤＹを構築して前記イニシエータ装置に送信することを特徴とする。
【００１１】
本発明のシステムは、イニシエータ装置とターゲット装置がループを介して接続され、前記イニシエータ装置と前記ターゲット装置との間でコマンドやデータの送受信を行なうファイバチャネル環境下のデータ転送システムであり、前記イニシエータ装置と、前記イニシエータ装置と接続されたループと、前記イニシエータ装置と前記ループを介して接続された前記ターゲット装置とを備え、
前記ターゲット装置は、前記イニシエータ装置からＷＲＩＴＥ方向のコマンドのＦＣＰ＿ＣＭＮＤを受信し、前記ＦＣＰ＿ＣＭＮＤを解析する受信手段と、
受信した前記ＦＣＰ＿ＣＭＮＤの内容にもとづいてＦＣＰ＿ＸＦＥＲ＿ＲＤＹを構築して前記イニシエータ装置に送信し、前記イニシエータ装置が前記ＦＣＰ＿ＸＦＥＲ＿ＲＤＹに基づいて作成したＦＣＰ＿ＤＡＴＡを受信するデータ転送制御手段と、前記受信手段が前記ＦＣＰ＿ＣＭＮＤを解析した結果得られたコマンド内容特定情報から行なうべき処理を特定し、前記データ転送制御手段がＦＣＰ＿ＤＡＴＡを受信した後、これに基づいてコマンド処理を行なうコマンド処理手段とを備え、
前記コマンド処理手段がコマンド内容特定情報から行なうべき処理を特定する処理の完了をまたずに同時並行して、前記データ転送制御手段がＦＣＰ＿ＸＦＥＲ＿ＲＤＹを構築して前記イニシエータ装置に送信することを特徴とする。
【００１２】
本発明のデータ転送方法は、イニシエータ装置とターゲット装置がループを介して接続され、イニシエータ装置とターゲット装置との間でコマンドやデータの送受信を行なうファイバチャネル環境下のデータ転送方法であり、
ターゲット装置がＷＲＩＴＥ方向のコマンドを前記イニシエータ装置から受信し、前記コマンドを解析する第１ステップと、受信した前記コマンドの内容にもとづいてＦＣＰ＿ＸＦＥＲ＿ＲＤＹを構築して前記イニシエータ装置に送信する第２ステップと、ターゲット装置が前記コマンドを解析した結果得られたコマンド内容特定情報から行なうべき処理を特定する第３ステップと、前記イニシエータ装置が前記ＦＣＰ＿ＸＦＥＲ＿ＲＤＹに基づいて作成したＦＣＰ＿ＤＡＴＡをターゲット装置が受信する第４ステップと、ＦＣＰ＿ＤＡＴＡを受信した後、これに基づいてコマンド処理を行なう第５ステップとを備え、第３ステップの処理の完了をまたずに第３ステップと同時並行して第２ステップを処理することを特徴とする。
【００１３】
本発明のデータ転送方法イニシエータ装置とターゲット装置がループを介して接続され、イニシエータ装置とターゲット装置との間でコマンドやデータの送受信を行なうファイバチャネル環境下のデータ転送方法であり、
ＷＲＩＴＥ方向のコマンドのＦＣＰ＿ＣＭＮＤをＦＣＰ＿ＣＭＮＤ受信手段が前記イニシエータ装置から受信し、前記ＦＣＰ＿ＣＭＮＤを解析する第１ステップと、受信した前記ＦＣＰ＿ＣＭＮＤの内容にもとづいてデータ転送制御手段がＦＣＰ＿ＸＦＥＲ＿ＲＤＹを構築して前記イニシエータ装置に送信する第２ステップと、前記ＦＣＰ＿ＣＭＮＤを解析した結果得られたコマンド内容特定情報から行なうべき処理をコマンド処理手段が特定する第３ステップと、前記イニシエータ装置が前記ＦＣＰ＿ＸＦＥＲ＿ＲＤＹに基づいて作成したＦＣＰ＿ＤＡＴＡを前記データ転送制御装置が受信する第４ステップと、ＦＣＰ＿ＤＡＴＡを受信した後、これに基づいてコマンド処理を行なう第５ステップとを備え、
第３ステップの処理の完了をまたずに第３ステップと同時並行して第２ステップを処理することを特徴とする。
【００１４】
本発明の他のターゲット装置は、イニシエータ装置がループを介して接続され、前記イニシエータ装置との間でコマンドやデータの送受信を行なうファイバチェネル環境下のターゲット装置であり、
前記イニシエータ装置からＷＲＩＴＥ方向のコマンドのＦＣＰ＿ＣＭＮＤを受信し、前記ＦＣＰ＿ＣＭＮＤを解析する受信手段と、  受信した前記ＦＣＰ＿ＣＭＮＤの内容にもとづいてＦＣＰ＿ＸＦＥＲ＿ＲＤＹを構築して前記イニシエータ装置に送信し、前記イニシエータ装置が前記ＦＣＰ＿ＸＦＥＲ＿ＲＤＹに基づいて作成したＦＣＰ＿ＤＡＴＡを受信するデータ転送制御手段と、  前記受信手段が前記ＦＣＰ＿ＣＭＮＤを解析した結果得られたコマンド内容特定情報から行なうべき処理を特定し、前記データ転送制御手段がＦＣＰ＿ＤＡＴＡを受信した後、これに基いてコマンド処理を行なうコマンド処理手段とを備え、
前記データ転送制御手段がＦＣＰ＿ＸＦＥＲ＿ＲＤＹを構築して前記イニシエータ装置に送信した後であって、前記データ転送制御手段がＦＣＰ＿ＤＡＴＡを受信する前に、前記コマンド処理手段がコマンド内容特定情報から行なうべき処理を特定することを特徴とする。
【００１５】
本発明の他のシステムは、イニシエータ装置とターゲット装置がループを介して接続され、前記イニシエータ装置と前記ターゲット装置との間でコマンドやデータの送受信を行なうファイバチャネル環境下のデータ転送システムであり、
前記イニシエータ装置と、前記イニシエータ装置と接続されたループと、前記イニシエータ装置と前記ループを介して接続された前記ターゲット装置とを備え、
前記ターゲット装置は、前記イニシエータ装置からＷＲＩＴＥ方向のコマンドのＦＣＰ＿ＣＭＮＤを受信し、前記ＦＣＰ＿ＣＭＮＤを解析する受信手段と、受信した前記ＦＣＰ＿ＣＭＮＤの内容にもとづいてＦＣＰ＿ＸＦＥＲ＿ＲＤＹを構築して前記イニシエータ装置に送信し、前記イニシエータ装置が前記ＦＣＰ＿ＸＦＥＲ＿ＲＤＹに基づいて作成したＦＣＰ＿ＤＡＴＡを受信するデータ転送制御手段と、前記受信手段が前記ＦＣＰ＿ＣＭＮＤを解析した結果得られたコマンド内容特定情報から行なうべき処理を特定し、前記データ転送制御手段がＦＣＰ＿ＤＡＴＡを受信した後、これに基いてコマンド処理を行なうコマンド処理手段とを備え、
前記データ転送制御手段がＦＣＰ＿ＸＦＥＲ＿ＲＤＹを構築して前記イニシエータ装置に送信した後であって、前記データ転送制御手段がＦＣＰ＿ＤＡＴＡを受信する前に、前記コマンド処理手段がコマンド内容特定情報から行なうべき処理を特定することを特徴とする。
【００１６】
本発明の他のデータ転送方法は、イニシエータ装置とターゲット装置がループを介して接続され、イニシエータ装置とターゲット装置との間でコマンドやデータの送受信を行なうファイバチャネル環境下のデータ転送方法であり、
ターゲット装置がＷＲＩＴＥ方向のコマンドを前記イニシエータ装置から受信し、前記コマンドを解析する第１ステップと、受信した前記コマンドの内容にもとづいてＦＣＰ＿ＸＦＥＲ＿ＲＤＹを構築して前記イニシエータ装置に送信する第２ステップと前記ターゲット装置が前記コマンドを解析した結果得られたコマンド内容特定情報から行なうべき処理を特定する第３ステップと、前記イニシエータ装置が前記ＦＣＰ＿ＸＦＥＲ＿ＲＤＹに基づいて作成したＦＣＰ＿ＤＡＴＡをターゲット装置が受信する第４ステップと、ＦＣＰ＿ＤＡＴＡを受信した後、これに基づいてコマンド処理を行なう第５ステップとを備え、
第２ステップの処理の完了後であってＦＣＰ＿ＤＡＴＡを前記ターゲット装置が受信する前に、第３ステップの処理を開始しかつ完了することを特徴とする。
【００１７】
本発明の他のデータ転送方法は、イニシエータ装置とターゲット装置がループを介して接続され、イニシエータ装置とターゲット装置との間でコマンドやデータの送受信を行なうファイバチャネル環境下のデータ転送方法であり、
前記イニシエータ装置からＷＲＩＴＥ方向のコマンドのＦＣＰ＿ＣＭＮＤを受信手段が受信し、前記ＦＣＰ＿ＣＭＮＤを解析する第１ステップと、前記受信手段が前記ＦＣＰ＿ＣＭＮＤを解析した結果得られたコマンド内容特定情報から行なうべき処理を特定する第２ステップと、  受信したＦＣＰ＿ＣＭＮＤの内容にもとづいてデータ転送制御手段がＦＣＰ＿ＸＦＥＲ＿ＲＤＹを構築して前記イニシエータ装置に送信する第３ステップと、前記イニシエータ装置が前記ＦＣＰ＿ＸＦＥＲ＿ＲＤＹに基づいて作成したＦＣＰ＿ＤＡＴＡを前記データ転送制御手段が受信する第４ステップと、ＦＣＰ＿ＤＡＴＡを受信した後、前記コマンド処理手段がこれに基づいてコマンド処理を行なう第５ステップとを備え、
第２ステップの処理の完了後であってＦＣＰ＿ＤＡＴＡを前記データ転送処理手段が受信する前に、第３ステップの処理を開始しかつ完了することを特徴とする。
【００１８】
本発明のその他のターゲット装置は、イニシエータ装置がループを介して接続され、前記イニシエータ装置との間でコマンドやデータの送受信を行なうファイバチェネル環境下のターゲット装置であり、
前記イニシエータ装置からＷＲＩＴＥ方向のコマンドのＦＣＰ＿ＣＭＮＤを受信し、前記ＦＣＰ＿ＣＭＮＤを解析する受信手段と、受信した前記ＦＣＰ＿ＣＭＮＤの内容にもとづいてＦＣＰ＿ＸＦＥＲ＿ＲＤＹを構築して前記イニシエータ装置に送信し、前記イニシエータ装置が前記ＦＣＰ＿ＸＦＥＲ＿ＲＤＹに基づいて作成したＦＣＰ＿ＤＡＴＡを受信し、前記データ転送制御手段が受信すべきデータのうち最後のＦＣＰ＿ＤＡＴＡであるか否かを判断し、最後のＦＣＰ＿ＤＡＴＡでないと判断したときは前記ＦＣＰ＿ＣＭＮＤの内容にもとづいてＦＣＰ＿ＸＦＥＲ＿ＲＤＹを構築して前記イニシエータ装置に送信する以降の処理を再度実行し、最後のＦＣＰ＿ＤＡＴＡであると判断したときは全ＦＣＰ＿ＤＡＴＡを受信完了したと判断するデータ転送制御手段と、前記受信手段が前記ＦＣＰ＿ＣＭＮＤを解析した結果得られたコマンド内容特定情報から行なうべき処理を特定し、前記データ転送制御手段が全ＦＣＰ＿ＤＡＴＡを受信完了した後、これに基づいてコマンド処理を行なうコマンド処理手段とを備え、
前記コマンド処理手段がコマンド内容特定情報から行なうべき処理を特定する処理の完了をまたずに同時並行して、前記データ転送制御手段がＦＣＰ＿ＸＦＥＲ＿ＲＤＹを構築して前記イニシエータ装置に送信することを特徴とする。
【００１９】
本発明のターゲット装置は、さらに前記データ転送制御手段は、受信した前記ＦＣＰ＿ＣＭＮＤの内容にもとづいてＦＣＰ＿ＸＦＥＲ＿ＲＤＹを構築する際に、ＦＣＰ＿ＸＦＥＲ＿ＲＤＹのデータ長をターゲット装置のメモリ領域の容量以内とし、データオフセットは前記ＦＣＰ＿ＣＭＮＤにより受信すべきデータのうちすでに受信済みとなったデータの大きさとなるよう設定し、ＦＣＰ＿ＸＦＥＲ＿ＲＤＹのデータオフセットの値とデータ長の値の和が受信したＦＣＰ＿ＣＭＮＤのデータ長と等しいことを確認することにより最後のＦＣＰ＿ＤＡＴＡであると判断することを特徴とする。
【００２０】
本発明のその他のデータ転送方法は、イニシエータ装置とターゲット装置がループを介して接続され、イニシエータ装置とターゲット装置との間でコマンドやデータの送受信を行なうファイバチャネル環境下のデータ転送方法であり、
ＷＲＩＴＥ方向のコマンドのＦＣＰ＿ＣＭＮＤをＦＣＰ＿ＣＭＮＤ受信手段が前記イニシエータ装置から受信し、前記ＦＣＰ＿ＣＭＮＤを解析する第１ステップと、受信した前記ＦＣＰ＿ＣＭＮＤの内容にもとづいてデータ転送制御手段がＦＣＰ＿ＸＦＥＲ＿ＲＤＹを構築して前記イニシエータ装置に送信する第２ステップと、前記イニシエータ装置が前記ＦＣＰ＿ＸＦＥＲ＿ＲＤＹに基づいて作成したＦＣＰ＿ＤＡＴＡをデータ転送制御手段が受信する第３ステップと、前記データ転送制御手段が受信すべきデータのうち最後のＦＣＰ＿ＤＡＴＡであるか否かを判断し、最後のＦＣＰ＿ＤＡＴＡでないと判断したときは第２ステップ以降を再度実行し、最後のＦＣＰ＿ＤＡＴＡであると判断したときは全ＦＣＰ＿ＤＡＴＡを受信完了したと判断する第４ステップと、前記ＦＣＰ＿ＣＭＮＤを解析した結果得られたコマンド内容特定情報から行なうべき処理をコマンド処理手段が特定する第５ステップと、全ＦＣＰ＿ＤＡＴＡを受信した後、これに基づいてコマンド処理手段がコマンド処理を行なう第６ステップとを備え、
第３ステップの処理の完了をまたずに第３ステップと同時並行して第５ステップを処理することを特徴とする。
【００２１】
本発明のその他のデータ転送方法は、さらに第２ステップにおいて、ＦＣＰ＿ＸＦＥＲ＿ＲＤＹのデータ長をターゲットのメモリ領域の容量以内とし、データオフセットは前記ＦＣＰ＿ＣＭＮＤにより受信すべきデータのうちすでに受信済みとなったデータの大きさとなるよう設定し、第４ステップにおいて、ＦＣＰ＿ＸＦＥＲ＿ＲＤＹのデータオフセットの値とデータ長の値の和が受信したＦＣＰ＿ＣＭＮＤのデータ長と等しいことを確認することにより最後のＦＣＰ＿ＤＡＴＡであると判断することを特徴とする。
【００２２】
【発明の実施の形態】
本発明の第１の実施形態について図面を参照して、詳細に説明する。
【００２３】
図１は本発明のデータ通信方法を用いたシステム構成例を示す図である。本システムはコマンドの発行元であるイニシエータ１と、コマンドを実行するターゲット３と、イニシエータ１とターゲット３とを接続するＦＣ−ＡＬループ２とを備える。イニシエータ１とターゲット３とは、ＦＣ−ＡＬループ２を経由して、ＦＣＰ＿ＣＭＮＤ、ＦＣＰ＿ＸＦＥＲ＿ＲＤＹなどのフレームの受け渡しを行う。ターゲット３は、イニシエータ１から受信したＦＣＰ＿ＣＭＮＤの解析を行うＦＣＰ＿ＣＭＮＤ受信手段４、イニシエータ１へＦＣＰ＿ＳＴＡＴＵＳ送信を行うＦＣＰ＿ＳＴＡＴＵＳ送信手段５、ＦＣＰ＿ＸＦＥＲ＿ＲＤＹの送信およびデータ転送制御を行うデータ転送制御手段７、受信したコマンドの処理を行うコマンド処理手段６とを具備する。
【００２４】
図１において、イニシエータ１がループ２を介してＦＣＰ＿ＣＭＮＤをターゲット３に送信したとき、ＦＣＰ＿ＣＭＮＤ受信手段４はＦＣＰ＿ＣＭＮＤがＷｒｉｔｅ方向のデータ転送を含むコマンドであれば、データ転送制御手段７にＦＣＰ＿ＸＦＥＲ＿ＲＤＹをイニシエータ1へ向けて送信させる動作と並行してコマンド処理手段６にＦＣＰ＿ＣＭＮＤの処理を行わせる。
【００２５】
コマンド処理手段６はＦＣＰ＿ＣＭＮＤの処理を終了するとデータ転送制御手段７からのデータを待つ。データ転送制御手段７がイニシエータ１からのＦＣＰ＿ＤＡＴＡをＦＣ−ＡＬループ２を介して受信すると、コマンド処理手段６へ通知を行いデータを渡す。コマンド処理手段６は受信したデータを用いて処理を行い、ＦＣＰ＿ＳＴＡＴＵＳを作成する。ＦＣＰ＿ＳＴＡＴＵＳ送信手段５はコマンド処理手段６からＦＣＰ＿ＳＴＡＴＵＳを受け取り、ループ２を介し、イニシエータ１へ向けてＦＣＰ＿ＳＴＡＴＵＳを送信する。
【００２６】
図９の従来技術によればＦＣＰ＿ＣＭＮＤ受信手段２４とデータ転送制御手段２７との間の通信経路がないのに対し、図１の本願発明ではＦＣＰ＿ＣＭＮＤ受信手段４とデータ転送制御手段７との間の経路７ａにより両者間で通信可能な構成としている。この構成によりデータ転送制御手段７にＦＣＰ＿ＸＦＥＲ＿ＲＤＹをイニシエータ1へ向けて送信させる動作と並行してコマンド処理手段６にＦＣＰ＿ＣＭＮＤの処理を行わせることができる。
【００２７】
すなわち、ＦＣＰ＿ＣＭＮＤを受信した後、データ転送制御手段７はデータ転送制御を、コマンド処理手段６はコマンド処理をそれぞれ同時並行して行うことによりコマンド処理の高速化を図ることが可能となる。
【００２８】
まず、図４、図５、図６、図７、図８を参照してＦＣＰにおけるフレーム、およびフレームのシーケンスについて説明する。
【００２９】
図５はＦＣＰ＿ＣＭＮＤのフォーマットの概略図である。ＦＣＰ＿ＣＭＮＤはヘッダＢ１、ＬＵＮＢ２、ＣＤＢＢ３、データ方向Ｂ４、データ長Ｂ５から構成される。ヘッダＢ１にはフレームの送信元であるイニシエータ１、送信先であるターゲット３に関する情報（イニシエータ１、ターゲット３のアドレス等）が含まれている。ＬＵＮＢ２はコマンドを実行する論理ユニットアドレスを示している。ＣＤＢＢ３は実行コマンドを記述している。データ方向Ｂ４は実行コマンドで送受信されるデータの方向（ライトかリードか）を示しており、データ長Ｂ５はその長さを示している。
【００３０】
図６はＦＣＰ＿ＸＦＥＲ＿ＲＤＹのフォーマットの概略図である。ＦＣＰ＿ＸＦＥＲ＿ＲＤＹはヘッダＢ６、データオフセットＢ７、データ長Ｂ８から構成される。データオフセットＢ７はデータ全体の中でこれから転送するデータまたはそのデータの部分の開始する位置（アドレス）を示す。データ長はイニシエータに対して要求するデータの総転送長を示す。
【００３１】
図７はＦＣＰ＿ＤＡＴＡのフォーマットの概略図である。
ＦＣＰ＿ＤＡＴＡはヘッダｂ１０、データＢ１１から構成される。データＢ１１は転送するデータを示す。
【００３２】
図８はＦＣＰ＿ＳＴＡＴＵＳのフォーマットの概略図である。ＦＣＰ＿ＳＴＡＴＵＳはヘッダＢ１２、ステータスＢ１３から構成される。ステータスはイニシエータに報告するコマンドの最終ステータスを示す。ステータスにはチェックの結果によるデータエラーの有無等を示す。
【００３３】
イニシエータ１はＦＣＰ＿ＣＭＮＤをターゲット３に送信する。ターゲット３はＦＣＰ＿ＣＭＮＤのデータ転送方向Ｂ４、データ長Ｂ５を解析した結果、図４における（ａ）、（ｂ）、（ｃ）、すなわち
図４（ａ）：データ転送方向が、イニシエータ→ターゲット（Ｗｒｉｔｅ方向）
図４（ｂ）：データ転送方向が、ターゲット→イニシエータ（Ｒｅａｄ方向）
図４（ｃ）：データ転送がない
の３つのシーケンスのうちのいずれかに該当するかを判断し、その該当するシークエンスを処理することができる。
【００３４】
図４（ａ）のケース：Ｗｒｉｔｅコマンドの場合でデータ転送方向がＷｒｉｔｅ方向であれば、データオフセット０、ＦＣＰ＿ＣＭＮＤの内容からコピーしたデータ長からなるＦＣＰ＿ＸＦＥＲ＿ＲＤＹをイニシエータ１に送信する。イニシエータ１はＦＣＰ＿ＸＦＥＲ＿ＲＤＹの内容に従い、ＦＣＰ＿ＤＡＴＡをターゲット３に送信する。ＦＣＰ＿ＤＡＴＡを受信したターゲット３はＬＵＮ、ＣＤＢ、データを用いてＷｒｉｔｅ等のコマンドの処理を行い、ＦＣＰ＿ＳＴＡＴＵＳをイニシエータに送信し、一連のシーケンスを終了する。
【００３５】
図４（ｂ）のケース：Ｒｅａｄコマンドの場合でデータ転送方向がＲｅａｄ方向であれば、ターゲット３はＦＣＰ＿ＸＦＥＲ＿ＲＤＹを送信することなく、ＬＵＮ、ＣＤＢに従い、ＦＣＰ＿ＤＡＴＡをイニシエータ１に送信した後、ＦＣＰ＿ＳＴＡＴＵＳを送信する。
【００３６】
図４（ｃ）のケース：データを伴わないコマンドすなわちデータ転送がない場合は、ＦＣＰ＿ＳＴＡＴＵＳをイニシエータ１に送信する。
【００３７】
図４（ｂ）、図４（ｃ）のケースは本発明と関係しないため説明は割愛し、図４（ａ）のケースを考える。
ターゲット３がＦＣＰ＿ＣＭＮＤを受信した時、ターゲット３は
（１）ＬＵＮ（図５、Ｂ２）
（２）ＣＤＢ（図５、Ｂ３）
（３）データ方向（図５、Ｂ４）
（４）データ長（図５、Ｂ５）
の４つの情報を得ることができる。従来技術では、（１）（２）の解析を先に行い、コマンド全体の処理を開始する。次に（３）（４）の情報からＦＣＰ＿ＸＦＥＲ＿ＲＤＹを構築してイニシエータ１に送信する。ところが、ターゲット３がＦＣＰ＿ＸＦＥＲ＿ＲＤＹを構築するために必要な情報は（３）（４）のみであり、（１）（２）は図６にある情報を構築するためには参照する必要はない。またヘッダについては、図６におけるヘッダＢ６はターゲット３が受け取ったフレームを発行元に返すだけであるから送信先はターゲット３になることは明らかであり、またデータオフセットＢ７については後述するようにデータを分割して転送する必要性があるかどうかをターゲット３が判断して決めるものであるので、上記（３）、（４）のみの情報があればＦＣＰ＿ＸＦＥＲ＿ＲＤＹを構築できる。このようにして（１）、（２）の解析処理の完了を待たずに同時並行して（３）（４）を元にＦＣＰ＿ＸＦＥＲ＿ＲＤＹを構築してイニシエータに送信することが本発明のポイントである。
【００３８】
次に本発明の第１の実施の形態の動作を図２、図３のフローチャートを参照して説明する。まず、イニシエータ１がターゲット３にＦＣＰ＿ＣＭＮＤを送信しターゲット３がこれを受信する（図３、ステップＡ１）。ターゲット３のＦＣＰ＿ＣＭＮＤ受信手段４は受信したＦＣＰ＿ＣＭＮＤの中からデータ転送長Ｂ５とデータ転送方向Ｂ４を取得しデータ転送制御手段７に通知する（図２、処理１０１）。データ転送制御手段７はＷｒｉｔｅ方向であれば、ヘッダＢ６の送信先がイニシエータ１となりデータオフセットＢ７が０となりデータ長Ｂ８がデータ長Ｂ５に等しくなるようＦＣＰ＿ＸＦＥＲ＿ＲＤＹを構築する。そしてイニシエータ１にＦＣＰ＿ＸＦＥＲ＿ＲＤＹを送信し（図３、ステップＡ３）、イニシエータ１からのＦＣＰ＿ＤＡＴＡ受信を待つ（図３、ステップＡ４、ノー）。
【００３９】
尚、データ方向がＷＲＩＴＥ方向のコマンドには、ＷＲＩＴＥコマンドとＭＯＤＥ  ＳＥＬＥＣＴコマンド（ターゲット装置内にある、ディスクやテープ等の記憶媒体以外のメモリのみにデータを書き込む動作のコマンドであって、そのデータの内容は例えばターゲットの設定情報である）が該当する。
【００４０】
また、ＦＣＰ＿ＸＦＥＲ＿ＲＤＹの送信の処理（Ａ３）はプログラム上での処理のみではなく実際にデータをターゲット３からイニシエータ１へ転送するというハードウェアの動作を伴うものであるのである程度時間的な幅が必要であり、後述のＬＵＮ、ＣＤＢの解析よりは長い時間がかかるものとなる。
【００４１】
ここでＡ３の処理と同時並行して以下に述べるＡ２の処理が進行することになる。ＦＣＰ＿ＣＭＮＤ受信手段４は受信したＦＣＰ＿ＣＭＮＤを解析し、ＬＵＮ、ＣＤＢをコマンド処理手段６へ通知し、コマンド処理手段６はＬＵＮ、ＣＤＢの解析を行う（図３、ステップＡ２）（図２、処理１０２）。すなわち、コマンドを実行すべき論理ユニットのアドレスと実行すべきコマンドの内容を特定する。その後、コマンド処理手段６はイニシエータ１からデータ転送制御手段７へのＦＣＰ＿ＤＡＴＡのデータ転送終了を待つ（図３、ステップＡ４、ノー）。
【００４２】
ここでいったん分かれた２つの処理（Ａ２とＡ３）がＦＣＰ＿ＤＡＴＡ受信を待つという状態（ステップＡ４のノー）で合流することになる。Ａ２の処理はＡ３の処理開始からＦＣＰ＿ＤＡＴＡの受信完了までの時間よりもはるかに短く、ＦＣＰ＿ＤＡＴＡの受信はＦＣＰ＿ＸＦＥＲ＿ＲＤＹ（Ａ３）の処理の結果として実現するものなので、必ずステップＡ２の終了，ステップＡ３の終了、ステップＡ４のイエスの順に進行することになる。従ってＦＣＰ＿ＤＡＴＡの受信（ステップＡ４，イエス）以後にステップＡ２やＡ３が終了するという事態が生ずることはない。
【００４３】
データ転送制御手段７がＦＣＰ＿ＤＡＴＡを受信したならば（図２、ＦＣＰ＿ＤＡＴＡ）（図３、ステップＡ４、イエス）コマンド処理手段６にデータ転送終了を通知し、コマンド処理手段６はＷＲＩＴＥ動作に必要な処理のうち残りのコマンド処理を行う（図３、ステップＡ５）（図２、処理１０３）。コマンド処理手段６はＦＣＰ＿ＳＴＡＴＵＳを構築し、ＦＣＰ＿ＳＴＡＴＵＳ送信手段５を介しイニシエータ１へＦＣＰ＿ＳＴＡＴＵＳを送信し（図３、ステップＡ６）、コマンドを終了する。
【００４４】
上述のようにターゲット３はＦＣＰ＿ＣＭＮＤ受信後、Ｗｒｉｔｅ方向へのデータ転送を含むコマンドであれば直ちに、ＦＣＰ＿ＸＦＥＲ＿ＲＤＹを構築してイニシエータ１に送信する処理と、ＣＤＢ、ＬＵＮ解析を行う処理を並行して行うことが可能であるため、コマンド処理全体の時間短縮が可能となる効果がある。
【００４５】
尚、第１の実施形態の変形例について以下に述べる。ＦＣＰ＿ＸＦＥＲ＿ＲＤＹ送信の処理（Ａ３）とＬＵＮ、ＣＤＢの解析の処理（Ａ２）を同時並行で進めるのではなくて、図１５に示すようにＡ１３の処理の後にＡ１２の処理を行なって、その後Ａ４のステップに入る点が第１の実施例と異なる点である。すなわち、データ転送制御手段７はＷｒｉｔｅ方向であれば、ヘッダＢ６の送信先がイニシエータ１となりデータオフセットＢ７が０となりデータ長Ｂ８がデータ長Ｂ５に等しくなるようＦＣＰ＿ＸＦＥＲ＿ＲＤＹを構築する。そしてイニシエータ１にＦＣＰ＿ＸＦＥＲ＿ＲＤＹを送信する（図１５、ステップＡ１３）。
【００４６】
その後に、ＦＣＰ＿ＣＭＮＤ受信手段４は受信したＦＣＰ＿ＣＭＮＤを解析し、ＬＵＮ、ＣＤＢをコマンド処理手段６へ通知し、コマンド処理手段６はＬＵＮ、ＣＤＢの解析を行う（図１５、ステップＡ１２）。すなわち、コマンドを実行すべき論理ユニットのアドレスと実行すべきコマンドの内容を特定する。その後、コマンド処理手段６はイニシエータ１からデータ転送制御手段７へのＦＣＰ＿ＤＡＴＡのデータ転送終了を待つ（図１５、ステップＡ４、ノー）。データ転送終了を確認すると（Ａ４、イエス）、その後の動作は、第１の実施形態と同様である。
【００４７】
この変形例においてもＦＣＰ＿ＸＦＥＲ＿ＲＤＹの送信処理（Ａ１３）の完了からイニシエータ１から転送されたＦＣＰ＿ＤＡＴＡを受信するまでのハードウェアが介在することによる比較的長い時間の合間を利用してＬＵＮ、ＣＤＢの解析を行なうために、最初にＬＵＮ、ＣＤＢ解析を行なった後にＦＣＰ＿ＸＦＥＲ＿ＲＤＹの送信を行なう従来技術に比べ全体の処理時間を短くできるという効果がある。
【００４８】
次に本発明の第２の実施形態について図１、図１３，図１４を参照して説明する。本実施形態は、ＦＣＰ＿ＣＭＮＤを受信した際にターゲット３の中にある図示しないメモリ領域がＦＣＰ＿ＣＭＮＤのデータ長より少ないことがある等事情がある場合でもターゲット１がＦＣＰ＿ＸＦＥＲ＿ＲＤＹを複数回送信してデータを分割して転送することによりコマンド処理が適切に行なうことができるようにした点が第１の実施形態と異なる点である。
【００４９】
ＦＣＰでは、ＦＣＰ＿ＣＭＮＤを受信した際にターゲット３の中にある図示しないメモリ領域がＦＣＰ＿ＣＭＮＤのデータ長より少ない等の理由がある場合、ＦＣＰ＿ＸＦＥＲ＿ＲＤＹのデータオフセットＢ７、データ長Ｂ８を適宜設定することによりデータを分割して転送を行うことが可能である。例えば、ＦＣＰ＿ＣＭＮＤにおけるデータ長）が１０００バイトであり、ターゲットのメモリ領域が５００バイトしかない場合、ＦＣＰ＿ＸＦＥＲ＿ＲＤＹのデータオフセット、データ長をそれぞれ、
１回目：データオフセット＝０、データ長＝５００
２回目：データオフセット＝５００、データ長＝５００
などとして２つに分割し、２回に渡ってデータを受信することが可能である。尚、データオフセット、データ長等の単位は全てバイトであり、以後単位表記を省略する。この場合を例にとり第２の実施形態を以下に説明する。
【００５０】
図１３、図１４を参照すると、イニシエータ１がターゲット３にデータ長＝１０００のＦＣＰ＿ＣＭＮＤを送信し、（図１３、ステップＡ１）。ターゲット３のＦＣＰ＿ＣＭＮＤ受信手段４は受信したＦＣＰ＿ＣＭＮＤの中からデータ転送長Ｂ５とデータ転送方向Ｂ４を取得しデータ転送制御手段７に通知する（図１４、処理１０１）。
【００５１】
データ転送制御手段７は、データ転送方向がＷＲＩＴＥ方向であれば、ヘッダＢ６の送信先がイニシエータ１となりデータ転送長がターゲット３のメモリ領域の長さである５００となりデータオフセットＢ７が０となるように、ＦＣＰ＿ＸＦＥＲ＿ＲＤＹを構築し、イニシエータ１に送信し（図１３、ステップＡ３）、ＦＣＰ＿ＤＡＴＡ受信を待つ（図１３、ステップＡ７、ノー）。尚、データ方向がＷＲＩＴＥ方向のコマンドにはＷＲＩＴＥコマンドとＭＯＤＥ  ＳＥＬＥＣＴコマンド（データをターゲット装置内にある、ディスクやテープ以外のメモリのみに書き込む動作のコマンド）が該当する。
【００５２】
一方、上記Ａ３，Ａ７の動作と並行して、ＦＣＰ＿ＣＭＮＤ受信手段４は受信したＦＣＰ＿ＣＭＮＤを解析し、ＬＵＮ、ＣＤＢをコマンド処理手段６へ通知し、コマンド処理手段６はＬＵＮ、ＣＤＢの解析を行う（図１３、ステップＡ２）（図１４、処理２）。解析終了後、コマンド処理手段６はデータ転送制御手段７への全ＦＣＰ＿データの転送終了を待つ（図１３、ステップＡ４、ノー）。
【００５３】
データ転送制御手段７がイニシエータ１から送信されたＦＣＰ＿ＤＡＴＡを受信したならば（ステップＡ７、イエス）、そのＦＣＰ＿ＤＡＴＡが最後のＦＣＰ＿ＤＡＴＡであるかどうか、すなわち分割された場合も含めて全てのＦＣＰ＿ＤＡＴＡの部分を受信したのか未受信の部分が残っているのかを判断する（ステップＡ８）。
【００５４】
最後のＦＣＰ＿ＤＡＴＡであることの判断は以下のようにして行なう。ＦＣＰ＿ＤＡＴＡの受領の直前に送信したＦＣＰ＿ＸＦＥＲ＿ＲＤＹのデータオフセットＢ７の値とデータ長Ｂ８の値の和が受信したＦＣＰ＿ＣＭＮＤのデータ長Ｂ５と等しいことを確認することにより最後のＦＣＰ＿ＤＡＴＡであると判断できる。データオフセットＢ７の値とデータ長Ｂ８の値の和が受信したＦＣＰ＿ＣＭＮＤのデータ長Ｂ５より小さければ最後のＦＣＰ＿ＤＡＴＡではないと判断する。
【００５５】
ここではオフセットＢ７が０でデータ長Ｂ８が５００であり、全データ長１０００であるから、最後のＦＣＰ＿ＤＡＴＡではないと判断する（ステップＡ８ノー）。そして次の送信すべきものとしてそのオフセットが５００、データ転送長が５００となるようにＦＣＰ＿ＸＦＥＲ＿ＲＤＹを構築し（図１４  処理１０４のオフセット更新）、イニシエータ１に送信し（ステップＡ３）、ＦＣＰ＿ＤＡＴＡ受信を待つ（ステップＡ７）。次にＦＣＰ＿ＤＡＴＡを受信したときは、オフセットＢ７が５００でデータ長Ｂ８が５００であり、全データ長１０００であるから、最後のＦＣＰ＿ＤＡＴＡであると判断する（ステップＡ８、イエス）。
【００５６】
この時点ではＡ２の処理は終了している点は第１の実施形態と同様である。そしてデータ転送制御手段７は全ての分割されたＦＣＰ＿ＤＡＴＡを受信したと判断できるので（ステップＡ９、イエス）、コマンド処理手段６にデータ転送終了を通知し、コマンド処理手段６はコマンド処理を行う（ステップ５、図１４、処理１０５）。
【００５７】
コマンド処理手段６はＦＣＰ＿ＳＴＡＴＵＳを構築し、ＦＣＰ＿ＳＴＡＴＵＳ送信手段５を介しイニシエータ１へＦＣＰ＿ＳＴＡＴＵＳを送信し（図３、ステップＡ６）、コマンドを終了する。
【００５８】
第２の実施形態はコマンド全体の処理時間を短縮しかつＦＣＰ＿ＣＭＮＤの受信に充分な格納領域を持たない場合でもデータの欠落、データ格納領域破壊を引き起こすことを防止できるという効果がある。
【００５９】
【発明の効果】
本発明の第１の効果は、ＷＲＩＴＥコマンドのコマンド処理全体の時間短縮が可能となることである。
【００６０】
その理由は、ターゲット３はＦＣＰ＿ＣＭＮＤ受信後、Ｗｒｉｔｅ方向へのデータ転送を含むコマンドであれば直ちに、ＦＣＰ＿ＸＦＥＲ＿ＲＤＹを構築してイニシエータ１に送信し、イニシエータ１からのＦＣＰ＿ＤＡＴＡを受信する処理と、ＣＤＢ、ＬＵＮ解析を行う処理を並行して行うことが可能だからである。
【００６１】
第２の効果は、コマンド全体の処理時間を短縮しかつＦＣＰ＿ＣＭＮＤの受信に充分な格納領域を持たない場合でもデータの欠落、データ格納領域破壊を引き起こすことを防止できることである。
【００６２】
その理由は、ＦＣＰ＿ＸＦＥＲ＿ＲＤＹのデータオフセット、データ長を用いてデータを分割して転送を行なう処理を行なっているからである。
【図面の簡単な説明】
【図１】本発明の実施形態の構成を示すブロック図である。
【図２】本発明の第１の実施形態のターゲット内の内部動作を含めた処理シーケンスを示す図である。
【図３】本発明のターゲット装置からみた第１の実施形態の動作を示すフローチャートである。
【図４】本発明の第１の実施形態のイニシエータとターゲット間の処理シーケンスを示す図である。
【図５】本発明FCP_CMNDフレームのフォーマットを示す図である。
【図６】本発明FCP_XFER_RDYフレームのフォーマットを示す図である。
【図７】本発明FCP_DATAフレームのフォーマットを示す図である。
【図８】本発明FCP_STATUSフレームのフォーマットを示す図である。
【図９】従来技術の構成を示すブロック図である。
【図１０】従来技術のターゲット内の内部動作を含めた処理シーケンスを示す図である。
【図１１】従来技術のターゲット装置の動作を示すフローチャートである。
【図１２】他の従来技術のターゲット内の内部動作を含めた処理シーケンスを示す図である。
【図１３】本発明のターゲット装置の第２の実施形態の動作を示すフローチャートである。
【図１４】本発明の第２の実施形態のターゲット内の内部動作を含めた処理シーケンスを示す図である。
【図１５】本発明のターゲット装置からみた第１の実施形態の変形例の動作を示すフローチャートである。
【符号の説明】
１    イニシエータ
２    ＦＣ−ＡＬループ
３    ターゲット
４    ＦＣＰ＿ＣＭＮＤ受信手段
５    ＦＣＰ＿ＳＴＡＴＵＳ送信手段
６    コマンド処理手段
７    データ転送制御手段
【図１】
0003716811.tif 000002
【図２】
0003716811.tif 000003
【図３】
0003716811.tif 000004
【図４】
0003716811.tif 000005
【図５】
0003716811.tif 000006
【図６】
0003716811.tif 000007
【図７】
0003716811.tif 000008
【図８】
0003716811.tif 000009
【図９】
0003716811.tif 000010
【図１０】
0003716811.tif 000011
【図１１】
0003716811.tif 000012
【図１２】
0003716811.tif 000013
【図１３】
0003716811.tif 000014
【図１４】
0003716811.tif 000015
【図１５】
0003716811.tif 000016