(57)【特許請求の範囲】
【請求項１】
ホストコンピュータに接続され、データを格納する記憶部を有する記憶システムであっ
て、
当該記憶システムのデータ処理の動作モードを判定する動作モード判定部と、
前記動作モードに従って所定のデータ処理を行うデータ処理部と、
前記ホストコンピュータからのログインを受領してログイン処理を行う際に前記ホストコンピュータの識別情報を取得する識別情報取得部と、
前記識別情報と、前記ホストコンピュータと前記記憶システム間の通信で遅延確認応答の影響の有無との対応関係を予め記憶したテーブルと、を有し、
前記動作モード判定部は、
前記ホストコンピュータからデータが要求される前に、前記識別情報取得部が取得した前記識別情報と前記テーブルとを参照して前記遅延応答の影響の有無を判定し、
前記遅延応答の影響有りと判定した場合は、先行パケットモードを選択し、
前記遅延応答の影響が無いと判定した場合は通常モードを選択し、
前記データ処理部は、
前記先行パケットモードが選択された場合、前記ホストコンピュータが当該記憶システムとの通信で用いるプロトコルで認識可能な情報であって、かつ、前記ホストコンピュータが前記情報を受領したことを確認する確認応答を送信する必要のない情報を有する先行パケットを前記ホストコンピュータから要求された前記データを返信する前に前記ホストコンピュータに送信し、その後に前記データを前記ホストコンピュータに送信し、
前記通常モードが選択された場合、前記先行パケットを前記ホストコンピュータに送信せずに、前記データを前記ホストコンピュータに送信する
ことを特徴とする記憶システム。
【請求項２】
請求項１記載の記憶システムであって、
前記先行パケットは、前記データ転送とは異なる階層で転送される記憶システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークに接続可能な複数の入出力ポートを備えた記憶システムと、前記入出力ポートに接続する計算機間の通信において、特にｉＳＣＳＩプロトコルを用いた通信における応答時間を短縮させる制御方法に関する。
【背景技術】
【０００２】
ｉＳＣＳＩ（ｉｎｔｅｒｎｅｔ ＳＣＳＩ）は、ＴＣＰ／ＩＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ／Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）ネットワーク上でＳＣＳＩ（Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｆａｃｅ）通信を行うためのプロトコルである。
【０００３】
ｉＳＣＳＩではｉＳＣＳＩ  ＰＤＵ（Ｐｒｏｔｏｃｏｌ  Ｄａｔａ  Ｕｎｉｔ）という単位でコマンドやデータを送受信する。ＰＤＵは、通信プロトコルで扱うことの出来るデータの単位であって、例えばＴＣＰ／ＩＰではパケット、イーサネット（登録商標）ではフレームに相当する。ｉＳＣＳＩにおいて、例えばリードコマンドはＲｅａｄ  Ｃｏｍｍａｎｄ  ＰＤＵ、リードコマンドに対するデータはＤａｔａ−Ｉｎ  ＰＤＵと呼ばれる。なお、ｉＳＣＳＩ  ＰＤＵは、ネットワーク上ではＴＣＰ／ＩＰパケットに包まれた形で送受信される。即ち、Ｒｅａｄ  Ｃｏｍｍａｎｄ  ＰＤＵやＤａｔａ−Ｉｎ  ＰＤＵ等は、実際はＴＣＰ／ＩＰパケットとして送受信される。
【０００４】
図１３に、ｉＳＣＳＩプロトコルによるリードコマンド処理の流れを示す。以降、リードコマンドを単にコマンド、リードコマンドに対するデータを単にデータと表す。
【０００５】
計算機は、コマンドを記憶システムへ送信（１３００）する。記憶システムは、計算機から送信されたコマンドを解析し、その結果、リードコマンドであることを確認する。
【０００６】
記憶システムは、該コマンドで要求するデータを記憶システム内の所定の場所から読み出し、計算機へ送信する（１３０５）。このとき、データは、ＴＣＰ／ＩＰネットワーク上で通信を行うため複数のパケットに分割されて送信する。
【０００７】
計算機は、記憶システムから送信されたデータを含むＴＣＰ／ＩＰパケットを受信したことを示す受領応答を送信する（１３１０）。
【０００８】
記憶システムは、計算機からの受領応答をもって正常にデータを含むパケットが送信できたことを確認する。そして、記憶システムは、コマンドの処理が完了したことを示す応答を計算機へ送信する（１３１５）。
【０００９】
ところで、ＴＣＰでは、主にネットワーク負荷の軽減を目的として、受信したパケットに対する受領応答を敢えて遅らせることが出来る遅延確認応答（以下、Delayed  ACKと呼ぶ）という応答が規定されている。このDelayed  ACKでは、受領応答は、０．５秒以内、もしくは２パケット受領するまで遅延させる、と規定している（非特許文献１の４．２．５節）。しかし、図１３において、記憶システム内のデータを計算機へ送信する際、記憶システムが送信するパケット数が１つの場合であっても、遅延確認応答に従って、計算機は最大０．５秒後に受領応答を記憶システムへ送信する。そして、その間、計算機、記憶システム間では通信が発生しないため、Delayed  ACKはコマンド応答時間を増大させ、性能劣化を招くという問題があった。
【００１０】
この問題を解決するためには、Delayed  ACKを無効にする方法が考えられるが、現在ではDelayed  ACKは、多くの機器、オペレーティングシステムに実装されているため、不用意にDelayed  ACKを無効にすると他の機器、オペレーティングシステム上のアプリケーションに悪影響を及ぼすという問題がある。
【００１１】
そこで、このDelayed  ACKの影響を回避する方法として、例えば特許文献１に記載の技術が提案されている。
【００１２】
【非特許文献１】ＲＦＣ１１２２
【特許文献１】特開２００５−１７４０９７号公報
【発明の開示】
【発明が解決しようとする課題】
【００１３】
特許文献１では、Delayed  ACKを有する周辺装置へ必要なコマンドを送信した後に、「何らかのコマンド」を周辺装置へ送信することでDelayed  ACKを回避することが示されている。具体的には、周辺装置へ送信したコマンド数を計測し、そのコマンド数が所定数に達したときに「何らかのコマンド」を送信する。
【００１４】
しかしながら、周辺装置間の接続環境次第で、「何らかのコマンド」がDelayed  ACKの影響によって遅延した受領応答の到着後に周辺装置へ到着する場合があり、この場合、Delayed  ACKの影響を完全に受けるという問題が生じる。例えば、ＴＣＰ／ＩＰはベストエフォート型の通信が前提であるため、上述した問題は容易に起こりうる。
【課題を解決するための手段】
【００１５】
上記問題を解決するため、記憶システムの一実施態様として、次のような構成を採用する。
【００１６】
ホストコンピュータとのインタフェースを備えるホストＩＦ制御部と、ディスクとのインタフェースを備えるディスクＩＦ制御部と、ホストコンピュータとの送受信データやディスクに格納されたデータを一時的に格納する領域や記憶システム内の制御情報、ディレクトリ情報などを格納する領域を持つメモリと、ホストＩＦ制御部、ディスクＩＦ制御部、メモリを相互に接続するスイッチ、データを格納するディスクを備え、前記ホストＩＦ制御部は、ホストコンピュータとの通信で用いられるプロトコルを処理するＩＦ処理部と、前記ＩＦ処理部がプロトコル処理のために一時データ格納領域として用いるバッファと、ホストコンピュータと記憶システム内部間でデータ転送を制御するデータ転送制御部と、前記ＩＦ処理部や前記データ転送制御部を制御するプロセッサと、前記プロセッサが実行するためのプログラム等を格納するためのメモリで構成する記憶システムにおいて、前記記憶システムは、前記ホストコンピュータから受信したコマンドから少なくとも要求されたデータ量を取得するコマンド解析手段と、前記プロトコルで1度に送信出来るデータ量から、前記コマンドに対して必要となるデータ送信回数の算出手段と、前記データ送信回数がDelayed  ACKの影響を受けるか否かを判定する第１の判定手段を備え、前記第１の判定手段が、Delayed  ACKの影響を受けると判定した場合に、最初のデータを前記ホストコンピュータへ送信する前に、該コマンドとは直接関係のないＰＤＵを先行的に送信する「先行パケットモード」を有する。
【００１７】
更に、上記を解決するための記憶システムの一実施態様として、前記第１の判定手段が、Delayed  ACKの影響を受けると判定した場合に、前記データ送信回数をDelayed  ACKの影響を受けないように調節する「データ分割モード」を有する。
【００１８】
更に、上記を解決するための記憶システムの一実施態様として、前記第１の判定手段がDelayed  ACKの影響を受けると判定した場合に、該コマンドに対してDelayed  ACKの影響を受けないように、データに制御情報であるヘッダが付加されたパケットを送信する際に、データとヘッダとをそれぞれ別パケットとして送信することでデータ送信回数を調整する「データ分離モード」を備える。
【００１９】
更に、上記を解決するための記憶システムの一実施態様として、記憶システムとDelayed  ACKの影響を受けて通信するホストコンピュータであるか否かを管理するテーブルを備え、前記ホストコンピュータの識別子を元に前記テーブルを参照し、Delayed  ACKの影響を受けて通信するホストコンピュータであるか否かを判定する第２の判定手段を備え、前記第２の判定手段は、Delayed  ACKの影響を受けるホストコンピュータであると判定した場合に、「先行パケットモード」を選択することでDelayed  ACKの影響を回避する。
【００２０】
更に、上記を解決するための記憶システムの一実施態様として、前記第１の判定手段、第２の判定手段によってDelayed  ACKの影響を受けると判定した場合に、「データ分割モード」を選択することでDelayed  ACKの影響を回避する。
【００２１】
更に、上記を解決するための記憶システムの一実施態様として、前記第１の判定手段、第２の判定手段によってDelayed  ACKの影響を受けると判定した場合に、「データ分離モード」を選択することでDelayed  ACKの影響を回避する。
更に、上記を解決するための記憶システムの一実施態様として、前記第１の判定手段、及び第２の判定手段でDelayed  ACKの影響を受けないと判定した場合に、通常通りにデータを送信する「通常モード」を選択する。
【発明の効果】
【００２２】
本発明によれば、ホストコンピュータと記憶システム間の通信において、Delayed  ACKの影響を回避することが出来る。
【発明を実施するための最良の形態】
【００２３】
以下に、本発明の実施例について図面を用いて説明する。
【実施例１】
【００２４】
本発明の第１の実施例について、以下に説明する。
【００２５】
図１は、記憶システムの構成を示す概略図である。
記憶システム１００は、ホストコンピュータ１０５と接続する。一般的にＳＡＮ（Ｓｔｏｒａｇｅ  Ａｒｅａ  Ｎｅｔｏｗｒｋ）では、記憶システム１００とホストコンピュータ１０５間はスイッチ等で構成するネットワーク（図示せず）を介して、ファイバチャネルやイーサネット(イーサネットは登録商標)などで接続する。
【００２６】
記憶システム１００は、ホストＩＦ制御部１１０、スイッチ１３５、メモリ１４０、ディスクＩＦ制御部１４５、ディスク装置１５０で構成する。
【００２７】
ホストＩＦ制御部１１０は、ホストコンピュータとのインタフェースを備え、ホストＩＦ部１１５、データ転送制御部１２０、ＣＰＵ１２５、メモリ１３０で構成する。
【００２８】
ディスクＩＦ制御部１４５は、ディスク装置１５０とのインタフェースを備える。
【００２９】
スイッチ１３５は、ホストＩＦ制御部１１０、ディスクＩＦ制御部１４５、及び後述するメモリ１４０間を接続する機構を備え、各構成要素１１０、１４５、１４０間の通信を中継する。
【００３０】
メモリ１４０は、ホストコンピュータ１０５と送受信するデータの一時格納領域であるキャッシュメモリ（図示せず）と記憶システム１００内の制御情報や構成情報を格納する共有メモリ（図示せず）領域を持つ。
【００３１】
ホストＩＦ制御部１１０の構成要素について説明する。
ホストＩＦ部１１５は、ホストコンピュータとのインタフェースを処理する部分であり、ＩＦ処理部１１９とバッファ１１７で構成する。
【００３２】
ＩＦ処理部１１９は、ホストコンピュータ１０５との通信で用いるプロトコルを処理する。バッファ１１７は、ＩＦ処理部１１９がプロトコル処理を行うために、ホストコンピュータと送受信するパケットの一時格納に用いる。
【００３３】
ホストＩＦ処理部１１５は、ホストコンピュータ１０５から受信したパケットのプロトコル処理を施し、ディスク装置における格納場所やデータの長さ、コマンド、ディスク装置に格納するデータの形にする。また、ディスク装置１５０やメモリ１４０のキャッシュメモリ上のデータをホストコンピュータ１０５に送信する際には、該データをホストコンピュータ１０５との通信に用いるプロトコルに従って、ホストコンピュータ１０５の識別情報や該コマンドに関連する制御情報などが付加されたパケットを生成する。
【００３４】
データ転送制御部１２０は、ホストコンピュータ１０５との送受信データについて、ホストＩＦ部１１５とメモリ１４０のキャッシュメモリ、ディスク装置１５０間のデータ転送を制御する。
【００３５】
ＣＰＵ１２５は、ホストＩＦ部１１５やデータ転送制御部１２０を制御し、主に各部のパラメータ設定や障害監視・処理などを行う。メモリ１３０は、ＣＰＵ１２５が読み出して実行するプログラムやデータを格納するための領域である。なお、メモリ１３０に格納するＣＰＵ１２５が実行するプログラムについては図２で詳細に説明する。
【００３６】
図２は、メモリ１３０に格納するＣＰＵが実行するプログラムの一例を示した図である。
【００３７】
メモリ１３０には、コマンド解析モジュール２０１、データ転送モジュール２０３、動作モード判定モジュール２０５、先行パケット送信モジュール２１５、データ分割モジュール２２０、データ分離モジュール２２２、適用判定モジュール２２５と、適用要否テーブル２３０が格納されている。
【００３８】
コマンド解析モジュール２０１は、ホストコンピュータ１０５から受信したコマンドを解析する機能を持つ。
【００３９】
データ転送モジュール２０３は、ホストコンピュータ１０５が要求するディスク装置内のデータをキャッシュメモリに準備するためにデータ転送制御部１２０へ指示する機能を持つ。
【００４０】
動作モード判定モジュール２０５は、ホストコンピュータが送信したコマンドで要求するデータの大きさから、Delayed  ACKの影響を受けるか否かを判定する機能を持つ。具体的には、要求するデータ全てをホストコンピュータへ送信するのに必要なパケット数が、ホストコンピュータによる受領確認が遅延なく送信するために必要なパケット数の倍数であるかを確認する。ここで、ホストコンピュータによる受領確認が遅延なく送信するために必要なパケット数の倍数ではない場合、Delayed  ACKの影響を受けることになる。
【００４１】
先行パケット送信モジュール２１５は、上述の影響を回避するため、実際にデータを送信する前にパケット（以降、先行パケットと称する）の送信をホストＩＦ部１１５に指示する先行パケット送信モジュール２１５を設ける。一方、ホストコンピュータによる受領確認が遅延なく送信するために必要なパケット数の倍数である場合、Delayed  ACKの影響を受けないため、先行パケット送信モジュール２１５によって先行パケットの送信をホストＩＦ部１１５に指示する必要がない。なお、先行パケットを送信する状態を「先行パケットモード」、そうではない場合を「通常モード」と呼ぶ。
【００４２】
なお、先行パケットは、少なくともホストコンピュータと記憶システムとの通信に用いられるプロトコルで認識可能な情報であればよく、例えばデータ転送に用いられるｉＳＣＳＩにおけるＮＯＰ−Ｉｎ  ＰＤＵを用いる。更に、先行パケットは、ホストコンピュータからの応答を期待しないようなコマンドが望ましい。また、先行パケットは、データ転送とは異なる階層で転送される情報であってもよく、例えば、ＴＣＰ層で認識可能な情報でも構わない。例えば、先行パケットはSCSIレイヤで転送し、DATA−in−PDUはTCP／IPレイヤで転送してもよい。
【００４３】
図３は、第１の実施例におけるデータ送受信処理のフローチャートを示す図である。最初のステップ３１５では、記憶システム１００のＣＰＵ１２５が、ホストコンピュータ１００からのコマンド受領待ちの状態である。そして、ホストコンピュータ１００からコマンドやデータなどを含むパケットを受領し、ホストＩＦ部１１５が適切なプロトコル処理によって、コマンドやデータなどが取り出され、その内容はＣＰＵ１２５のメモリ１３０に書き込まれる。
【００４４】
次に、ＣＰＵ１２５は、先のステップで書き込まれたコマンドをメモリ１３０から読み出し、コマンド解析モジュール２０１が解析する（ステップ３２０）。コマンド解析モジュール２０１によるコマンド解析の結果、ホストコンピュータ１０５が要求する処理の内容、ディスク装置１５０内のデータ格納場所とその長さ（Ａ）などが判明する。
【００４５】
ステップ３２０で判明したデータの長さの情報を用いて、動作モードを判定する（ステップ３２５）。なお、ステップ３２５の詳細については後述する。
【００４６】
ステップ３３０では、ＣＰＵ１２５が、ステップ３２５によって判明したこれらの情報に従って処理し、必要に応じて先行パケットを送信する。なお、ステップ３３０の詳細については後述する。
そして、ステップ３３０の処理が終了すると、コマンドに対する応答をホストコンピュータへ送信し（ステップ３４０）、再びホストコンピュータ１０５からのコマンド受領待ちとなる。そうではない場合はステップ３３０、３３５を繰り返す。
【００４７】
図４は、第１の実施例における動作モード判定処理３２５のフローチャートを示す図である。
【００４８】
ここで、１つのパケットで送信可能なデータの長さ（Ｂ）について説明する。第１の実施例では、ホストコンピュータ１０５と記憶システム１００間はイーサネット（登録商標）で接続されているものとする。
【００４９】
なお、イーサネットで１つのパケットで送信可能な一般的なデータの長さはＭＴＵ（Ｍａｘｉｍｕｍ  Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｕｎｉｔ）として１５００バイトである。しかし、実際にはパケットの制御情報として付加されるヘッダの長さを考慮すると、実際に送信可能なデータの長さは１４６０バイト程度となる。
最初のステップ４１０では、図３のステップ３２０で判明したホストコンピュータ１０５が要求するデータの長さ（Ａ）と１つのパケットで送信可能なデータの長さ（Ｂ）から、必要なパケット数を計算する。具体的には、（Ａ）を（Ｂ）で割って求めた商の小数点以下を切り上げ、これを送信パケット数（Ｃ）とする。
【００５０】
ところで、Delayed  ACKは通信相手から２パケット受領するまで受領応答を遅らせることが出来る。従って、先ほど計算した（Ｃ）が奇数であるか否かを見ることでDelayed  ACKの影響を受けるか否かを判定することができる（ステップ４１５）。本実施例では、２パケットとしているが、それに限定されるものではない。さらに、２パケットとしているため奇数であるか否かを判別しているが、当然ながら、これに限定されるものではない。
【００５１】
例えば、３パケットとすれば、（Ｃ）では、３の倍数か否かを判定し、３の倍数でなければDelayed  ACKの影響を受けるものと判定する。詳細については、後述する。また、この設定（２パケットor３パケット・・・etc）の変更は、ＣＰＵ１２５が、データ通信中ではない、任意のタイミングでホストＩＦ部１１５に指示する。  ステップ４１５において、（Ｃ）が奇数、即ちホストコンピュータ１０５が受領確認を遅延なく送信するために必要なパケット数の倍数ではない場合は、Delayed  ACKの影響を受けるため、先行パケットを送信する先行パケットモードを選択する（ステップ４２０）。
【００５２】
（Ｃ）が偶数、即ち、ホストコンピュータによる受領確認が遅延なく送信するために必要なパケット数の倍数である場合は、Delayed  ACKの影響を受けないため、通常モードを選択する（ステップ４２５）。
例えば、（Ａ）が４０９６バイトとすると、（Ｂ）は１４６０バイトであるので、ステップ４１０において、必要なパケット数（Ｃ）は３パケットと計算される。従って、ステップ４１５では、（Ｃ）を奇数と判定し、Ｄｅｌｙｅｄ  ＡＣＫの影響を受ける、と判定する。そして、最後に図３のステップ３３０へ戻る。
【００５３】
図１４は、コマンド処理３３０のフローチャートを示す図である。
【００５４】
ステップ１４１０では、ホストコンピュータ１０５へ送信するデータを準備する。具体的には、ＣＰＵ１２５が、ホストＩＦ部１１５から得たデータの格納場所やデータの長さの情報、共有メモリ（図示せず）に格納された制御情報、構成情報を用いて、適切なディスク装置１５０内の場所からデータを読み出すようにディスクＩＦ制御部１４５に指示する。
【００５５】
次に、ディスクＩＦ制御部１４５が、ディスク装置１５０の適切な場所からデータを読み出し、キャッシュメモリ（図示せず）に格納する。なお、この処理はデータが既にキャッシュ（図示せず）に存在する場合には省略できる。ＣＰＵ１２５は、ホストコンピュータ１０５へ送信するデータの準備の完了を待ち（ステップ１４１５）、準備が完了すると、現在の動作モードが先行パケットモードかどうかを確認する（ステップ１４２０）。
【００５６】
もし、先行パケットモードではない場合は、ステップ１４２５へ進む。
先行パケットモードの場合、ＣＰＵ１２５は、ホストコンピュータ１０５にデータを送信する前に先行パケットを送信するようにホストＩＦ部１１５に指示する（ステップ１４４０）。これらの処理は、データの長さに応じて繰り返し、全てのデータ送信の指示が完了すると図３のステップ３３５に戻る。
【００５７】
図５は、第１の実施例におけるホストＩＦ部のデータ送信におけるフローチャートを示す図である。
【００５８】
ステップ５１０では、ホストＩＦ部１１５は、ＣＰＵからの指示を待つ。ホストＩＦ部１１５は、ＣＰＵ１２５から指示を受けると、それがどのような指示か確認する。もし、ホストコンピュータへのデータ転送の指示であれば（ステップ５１５）、現在の動作モードを確認する。先行パケットモードの場合（ステップ５２０）、ホストＩＦ部１１５は、ホストコンピュータ１０５へ先行パケットを送信し（ステップ５２５）、これに続けてデータを送信する（ステップ５３０）。具体的には、まず、ホストＩＦ部１１５が、例えば、ｉＳＣＳＩにおけるＮＯＰ−Ｉｎ  ＰＤＵを生成、そしてパケットを生成しホストコンピュータ１０５に送信する。次に、ホストＩＦ部１１５は、データ転送制御部１２０に対して、キャッシュメモリから読み出したデータをホストＩＦ部１１５へ転送するように指示する。そして、ホストＩＦ部１１５は、データ転送制御部１２０から転送されたデータからＤａｔａ−Ｉｎ  ＰＤＵを生成、そしてパケットを生成し、ホストコンピュータ１０５に送信する。
ホストコンピュータ１０５へのデータ送信が完了すると（ステップ５３５）、ホストＩＦ部１１５は、ＣＰＵ１２５へ送信完了を報告する（ステップ５４０）。
【００５９】
なお、データ転送以外の指示の場合は、ホストＩＦ部１１５は、その指示に従って適切に処理し（ステップ５４５）、完了するまで繰り返し（ステップ５５０）、最後にＣＰＵ１２５へ完了を報告する（ステップ５５５）。データ転送以外のその他の指示とは、例えばホストコンピュータ１０５へのデータ送信が完了した後、コマンド応答を送信する処理などがある。
【００６０】
図１５は、本実施形態におけるホストコンピュータ１０５と記憶システム１００間の通信の様子を示した図である。
【００６１】
まず、ホストコンピュータ１０５が記憶システム１００にコマンドを送信し（１３００）、記憶システム１００は受信したコマンドを解析し、このコマンドによる通信がDelayed  ACKの影響を受けるか判定する。記憶システム１００によってDelayed  ACKの影響を受けると判定されると、これを回避するために図３、図４で示したように先行パケットを送信し（１５０５）、続いてホストコンピュータが要求するデータを送信する（１３０５）。ホストコンピュータ１０５は、記憶システム１００からパケットを２つ（１５０５、１３０５）受領したので、これに対する受領応答を遅延なく記憶システム１００に送信する（１３１０）。
【００６２】
記憶システム１００は、ホストコンピュータからの受領応答を受けて、コマンドに対する応答を送信する（１３１５）。
ホストコンピュータ１０５は、１３１５の応答に対する受領応答を送信し（１３２０）、次のコマンドを記憶システム１００に送信する（１３２５）。
【００６３】
第１の実施例によれば、記憶システムは、先行パケットの送信をコントロールするために、ホストコンピュータが要求するデータの長さからDelayed  ACKの影響を受けるか否かを判断する。更に、Delayed  ACKの影響を受ける場合には、記憶システムは、データを送信する前にホストコンピュータから受領確認を必要としない先行パケットを送信することで、単にDelayed ACKの影響を回避できるだけではなく、データ送信に対するホストコンピュータの確認応答時間、更にはコマンド応答時間の更なる短縮をもたらす。これは、ホストコンピュータと記憶システム間の接続距離が長い場合に特に顕著となる。
【実施例２】
【００６４】
本発明の第２の実施例について、以下に説明する。
【００６５】
第１の実施例と異なるのは、動作モード判定モジュール２０５がDelayed  ACKの影響を受けると判定した場合、先行パケットモードの代りにデータ分割モードに従って、Delayed  ACKの影響を回避する点である。データ分割モードとは、記憶システム１００がホストコンピュータ１０５の要求するデータを送信するとき、Delayed  ACKの影響を受けないように送信するパケット数を調整するために、データを分割するモードである。なお、データ分割モードではないモードは通常モードである。
【００６６】
記憶システム１００は、図1に示す構成と同じであるが、第２の実施例におけるデータ分割モードを実現するために図２中にはデータ分割モジュール２２０が格納されている。
【００６７】
データ分割モジュール２２０は、動作モード判定モジュール２０５によって、Delayed  ACKの影響を受けると判定した場合に、要求されたデータの送信に必要なパケット数を、Delayed  ACKの影響を受けないパケット数となるように、１パケットで送信するデータの長さを計算し、それをホストＩＦ部１１５に指示する機能を持つ。
【００６８】
図６は、第２の実施例における動作モード判定処理のフローチャートを示す図である。
【００６９】
ステップ６１０、６１５で動作モード判定モジュール２０５は、ホストコンピュータ１０５にデータを送信するために必要なパケット数を計算し、それが奇数であるか判定する。ここで、奇数か否かを判定するのは、本実施例でも第１の実施例と同様に、Delayed  ACKは通信相手から２パケット受領するまで受領応答を遅らせることが出来るよう設定されているためである。なお、本実施例においても、２パケットに限定されるものではない。例えば、３パケットとすれば、３の倍数か否かを判定することとなる。詳細については、後述する。  パケット数が奇数である場合、データ分割モードが選択される（ステップ６２０）。
【００７０】
例えば、ホストコンピュータ１０５に送信するデータが４０９６バイトで、１パケットで送信可能なデータ長が１４６０バイトの場合、必要となるパケット数は３パケットとなる。この場合、Delayed  ACKの影響をうけるため、例えば、本来1パケットで１４６０バイト送信可能であるところをその半分のデータ長とすることで２パケットに分割する。これによって、必要となるパケット数は６パケットとなり、Delayed  ACKの影響を回避することが出来る。
パケット数が奇数ではない場合、通常モードが選択される（ステップ６２５）。
そして、図３のステップ３３０に戻る。
【００７１】
次に、第２の実施例におけるコマンド処理を、図１４を用いて説明すると、以下の流れとなる。
データ転送モジュール２０３によって、ホストコンピュータ１０５へデータの送信準備が完了すると（ステップ１４１０、１４１５）、ＣＰＵ１２５は、動作モードを確認する。
【００７２】
本実施例ではデータ分割モードであるので、先行パケットモードによる処理（ステップ１４２０：Ｙｅｓ、ステップ１４４０）は考慮せず、ステップ１４２５へ進む。ＣＰＵ１２５は、ホストＩＦ部１１５に送信するデータのデータ長を指示し（ステップ１４５０）、データ送信を指示する（ステップ１４７０）。ＣＰＵ１２５は、全てのデータ送信の指示を完了するまでステップ１４７０を繰り返し、完了すると（ステップ１４７５）、図３のステップ３３５へ戻る。
【００７３】
図７は、第２の実施例におけるホストＩＦ部のデータ送信処理のフローチャートを示す図である。
【００７４】
ステップ７１０は、ＣＰＵ１２５からの指示を待っている。ＣＰＵ１２５から指示を受けると、現在の動作モードを確認する（ステップ７１５）。データ分割モードである場合、ＣＰＵ１２５から予め指定されたデータの長さでホストコンピュータ１０５へ送信し（ステップ７２０）、全てのデータを送信するまでステップ７２０を繰り返す（ステップ７２５）。最後に、ホストＩＦ部１１５は、データ送信が完了すると、ホストコンピュータ１０５へその完了報告を行う（ステップ７５０）。
【００７５】
一方、ステップ７１５で、データ分割モードではない、即ち通常モードの場合、ホストコンピュータ１０５へ、通常のデータ長でデータを送信する（ステップ７４０）。そして、ホストＩＦ部が、ホストコンピュータ１０５へのデータ送信が完了するまでステップ７４０を繰り返す。最後に、ホストＩＦ部１１５は、データ送信が完了すると、ホストコンピュータ１０５へその完了報告を送信する（ステップ７５０）。
【００７６】
なお、データ転送以外のその他の指示を受けた場合は、ホストＩＦ部１１５は、その指示に従って適切に処理し（ステップ７５５）、完了するまで繰り返し（ステップ７６０）、最後にＣＰＵ１２５へ完了を報告する（ステップ７６５）。データ転送以外のその他の指示とは、例えばホストコンピュータ１０５へのデータ送信が完了した後、コマンド応答を送信する処理などがある。
【００７７】
なお、図１５に示すホストコンピュータ１０５と記憶システム１００間の通信の流れは、第１の実施例における“先行パケット送信（１５０５）”が、“データ送信”に変わるが他は同様である。
【００７８】
第２の実施例によれば、記憶システムは、ホストコンピュータが要求するデータの長さからDelayed  ACKの影響を受けるか否かを判断し、更に、Delayed  ACKの影響を受ける場合には、送信するデータを分割することで、図１５に示すような通信が可能となるため、ホストコンピュータと記憶システム間の接続環境などに左右されずに、コマンド応答時間を短縮することが出来る。
【実施例３】
【００７９】
本発明の第３の実施例について、以下に説明する。
【００８０】
第２の実施例と異なるのは、動作モード判定モジュール２０５がDelayed  ACKの影響を受けると判定した場合、データ分割モードの代りにデータ分離モードに従って、Delayed  ACKの影響を回避する点である。データ分離モードとは、記憶システム１００がホストコンピュータ１０５の要求するデータを送信するとき、データに付加されるヘッダとデータをそれぞれ別パケットとして送信するモードである。データ分離モードのどちらでもないモードは通常モードである。記憶システム１００は、図1に示す構成と同じであるが、データ分離モードを実現するために図２にデータ分離モジュール２２２が格納される。
【００８１】
図８は、第３の実施例における動作モード判定処理のフローチャートを示す図である。
【００８２】
ステップ８１０、８１５で動作モード判定モジュール２０５は、ホストコンピュータ１０５にデータを送信するために必要なパケット数を計算し、それが奇数であるか判定する。ここで、奇数か否かを判定するのは、本実施例でも第１の実施例と同様に、Delayed  ACKは通信相手から２パケット受領するまで受領応答を遅らせることが出来るよう設定されているためである。なお、本実施例においても、２パケットに限定されるものではない。例えば、３パケットとすれば、３の倍数か否かを判定することとなる。詳細については、後述する。
【００８３】
パケット数が奇数である場合、データ分離モードが選択される（ステップ８２０）。
【００８４】
例えば、ホストコンピュータ１０５に送信するデータが４０９６バイトで、１パケットで送信可能なデータ長が１４６０バイトの場合、必要となるパケット数は３パケットとなる。この場合、Delayed  ACKの影響をうけるため、送信データに付加されるヘッダをデータとは分離して別パケットで送信する。ヘッダは最初に送信するデータを含むパケットに含まれる。つまり、ホストコンピュータ１０５に送信する最初の１パケットは、ヘッダとデータを含む。従って、このヘッダとデータをそれぞれ別パケットで送信することで合計４パケットとなり、Delayed  ACKの影響を回避することが出来る。
パケット数が奇数ではない場合、通常モードが選択される（ステップ８２５）。
そして、図３のステップ３３０に戻る。
【００８５】
第３の実施例におけるコマンド処理を、図１４を用いて説明すると、以下の流れとなる。
ＣＰＵ１２５は、ホストコンピュータ１０５へデータの送信準備が完了すると（ステップ１４１０、１４１５）、動作モードを確認する。
【００８６】
本実施例ではデータ分離モードであるので、先行パケットモード、及びデータ分割モードによる処理（ステップ１４２０：Ｙｅｓ、ステップ１４４０、ステップ１４２５：Ｙｅｓ、ステップ１４５０）は考慮せずに、ステップ１４３０へ進む。ＣＰＵ１２５は、ホストＩＦ部１１５にホストコンピュータ１０５に送信するパケットについて、ヘッダとデータを含むパケットをそれぞれ別パケットで送信するように指示し（ステップ１４６０）、そして、データ送信を指示する（ステップ１４７０）。ＣＰＵ１２５は、全てのデータ送信の指示を完了するまでステップ１４７０を繰り返し、完了すると（ステップ１４７５）、図３のステップ３３５へ戻る。
【００８７】
図９は、第３の実施例におけるホストＩＦ部のデータ送信処理のフローチャートを示す図である。
【００８８】
ステップ９１０は、ＣＰＵ１２５からの指示を待っている。ＣＰＵ１２５から指示を受けると、現在の動作モードを確認する（ステップ９１５）。データ分離モードである場合、まず、ホストＩＦ部１１５は、ヘッダを含むパケットをホストコンピュータ１０５へ送信する（ステップ９３２）。具体的には、ホストＩＦ部１１５は、Ｄａｔａ−Ｉｎ  ＰＤＵのヘッダを含むパケットを生成しホストコンピュータ１０５へ送信する。続いて、ホストＩＦ部１１５は、ホストコンピュータ１０５へデータ送信を開始し（ステップ９３４）、全てのデータを送信するまでステップ９３４を繰り返す。ホストＩＦ部１１５は、ホストコンピュータ１０５へのデータ送信が完了すると（ステップ９３６）、ＣＰＵ１２５に対して完了報告を行う（ステップ９５０）。
【００８９】
一方、ステップ９１５で、データ分離モードではない、即ち通常モードの場合、ホストコンピュータ１０５へ、ヘッダとデータを分離せずに通常通りデータを送信する（ステップ９４０）。そして、ホストＩＦ部が、ホストコンピュータ１０５へのデータ送信が完了するまでステップ９４０を繰り返す。最後に、ホストＩＦ部１１５は、データ送信が完了すると（ステップ９４５）、ホストコンピュータ１０５へその完了報告を送信する（ステップ９５０）。
【００９０】
なお、データ転送以外のその他の指示を受けた場合は、ホストＩＦ部１１５は、その指示に従って適切に処理し（ステップ９５５）、完了するまで繰り返し（ステップ９６０）、最後にＣＰＵ１２５へ完了を報告する（ステップ９６５）。
【００９１】
なお、図１５に示すホストコンピュータ１０５と記憶システム１００間の通信の流れは、第１の実施例における“先行パケット送信（１５０５）”が、“ヘッダ送信”に変わるだけで他は同様となる。
【００９２】
第３の実施例によれば、記憶システムは、ホストコンピュータが要求するデータの長さからDelayed  ACKの影響を受けるか否かを判断し、更に、Delayed  ACKの影響を受ける場合には、ヘッダとデータを分離しそれぞれ別パケットとして送信することで、図１５に示す通信が可能となるため、ホストコンピュータと記憶システム間の接続環境などに左右されずに、コマンド応答時間を短縮することが出来る。
【実施例４】
【００９３】
本発明の第４の実施例について、以下に説明する。
【００９４】
これまでの実施例と異なるのは、動作モード判定処理のタイミングである。具体的には、これまでの実施例では、動作モード判定処理はホストコンピュータからコマンドを受領した後であったが、第４の実施例では、そのコマンドを受領する前に動作モード判定処理を実施する点である。
【００９５】
ｉＳＣＳＩでは、イニシエータ（本発明ではホストコンピュータに相当する）は、ターゲット（本発明では記憶システムに相当する）と通信するためにログインを行う。このときに、交換される情報は、イニシエータ、ターゲットの識別情報や、通信パラメータなどである。第４の実施例では、ログイン時に交換される情報の中で、イニシエータ、即ちホストコンピュータの識別情報に着目する。つまり、ホストコンピュータの識別情報に応じてDelayed  ACK適用判定を行う。これを実現するため、図２に示したメモリ１３０に、新たに適用判定モジュール２２５、適用要否テーブル２３０をメモリに格納する。
【００９６】
適用判定モジュール２２５は、記憶システムと通信するホストコンピュータの識別情報によって、その通信がDelayed  ACKの影響を受けるか否かを判定する機能を持つ。識別情報とは、例えばｉＳＣＳＩにおけるｉＳＣＳＩネーム、ＴＣＰにおけるポート番号、ＩＰにおけるＩＰアドレスなど、ホストコンピュータ、もしくはホストコンピュータ上のアプリケーションを一意に識別することが出来る情報のことである。
【００９７】
また、予めホストコンピュータとの通信の特性に着目する。例えば、記憶システムの状態監視などを行う管理アプリケーションなどが実行されるホストコンピュータは、比較的要求するデータ長が短いコマンドを実行する。このようなホストコンピュータとの通信において、Delayed  ACKの影響を受ける可能性がある。このようなホストコンピュータの識別情報は、後述する適用要否テーブル２３０に登録され、適用判定モジュール２２５が、このテーブルを参照することによって、Delayed  ACKの影響の有無を調査することが出来る。
【００９８】
図１２に、適用要否テーブル２３０を示す。この適用要否テーブル２３０は、適用判定モジュール２２５によって参照されるテーブルである。適用要否テーブル２３０は、少なくともホストコンピュータ識別情報フィールド１２１０とDelayed  ACKフィールド１２２０で構成される。ホストコンピュータ識別情報フィールド１２１０は、例えば、ｉＳＣＳＩではｉＳＣＳＩネーム、ＴＣＰではポート番号、ＩＰではＩＰアドレスなどの情報を格納するフィールドである。図１２では、一例としてｉＳＣＳＩネーム「iqn.2004-05.com.xyz:host1」「iqn.2004-05.com.xyz:host2」「iqn.2004-05.com.xyz:host3」が格納されている。
【００９９】
Delayed  ACKフィールド１２２０は、ホストコンピュータとの通信でDelayed  ACKの影響を受けるか否かを示すフィールドである。図１２では、識別情報「iqn.2004-05.com.xyz:host1」との通信ではDelayed  ACKの影響「有り」、「iqn.2004-05.com.xyz:host2」との通信ではDelayed  ACKの影響「無し」、「iqn.2004-05.com.xyz:host3」との通信ではDelayed  ACKの影響「無し」となっている。これらのホストコンピュータの識別情報に応じてDelayed  ACK適用判定が行われる。
図１０は、第４の実施例におけるデータ送受信処理のフローチャートを示す図である。
【０１００】
ステップ１０１０で、ホストコンピュータ１０５からのログインを受信するまで待つ。ホストコンピュータ１０５からログインを受信すると、ログイン処理を行う（ステップ１０１５）。ログイン処理とは、ホストＩＦ部１１５によるホストコンピュータ１０５の認証や、ホストコンピュータ１０５と通信するための転送パラメータの決定、ＣＰＵ１２５によるディスク装置１５０内の記憶領域の割り当てなどである。
【０１０１】
次に、ＣＰＵ１２５は、動作モードを判定する（ステップ１０２０）。動作モード判定処理の詳細については後述する。ホストＩＦ部１１５は、ログイン処理、動作モード判定処理の結果を踏まえて、ホストコンピュータ１０５へログイン応答を送信する（ステップ１０２５）。次のステップ１０３０では、ログインしたホストコンピュータからのコマンド受領を待つ。ステップ１０３０は、図３のステップ３１５の処理と同じである。
【０１０２】
ホストコンピュータからコマンドやデータを含むパケットを受領すると、ホストＩＦ部１１５によってコマンドやデータなどがメモリ１３０に書き込まれ、ＣＰＵ１２５はメモリ１３０に書き込まれたコマンドを解析する（ステップ１０３５）。ステップ１０３５は、図３のステップ３２０の処理と同じである。以降、ステップ１０２０によって設定された動作モードに従って、コマンド処理が行われ（ステップ１０４０）、終了するまでステップ１０４０を繰り返す。コマンド処理が終了すると（ステップ１０４５）、ＣＰＵ１２５は、ホストコンピュータへコマンド応答の送信をホストＩＦ部１１５に指示し（ステップ１０５０）、コマンド受領待ちになる。
【０１０３】
図１１は、第４の実施例における動作モード判定処理のフローチャートを示す図である。なお、第４の実施例では、記憶システム１０５は動作モードとして先行パケットモードを備えることとするが、第５の実施例あるいは第６の実施例で後述するようにデータ分割モードあるいはデータ分離モードも適宜選択可能である。
【０１０４】
最初のステップ１１０５は、ＣＰＵ１２５は、ログインを要求したホストコンピュータが、Delayed  ACKの影響を受ける通信相手か否かを判定する。この判定を行うため、ＣＰＵ１２５は、適用要否テーブル２３０を参照する。ＣＰＵ１２５は、先行パケットの送信が必要である、即ちDelayed  ACKの影響を受けると判定した場合、先行パケットモードが選択される（ステップ１１１０）。例えば、ステップ１１０５で、ＣＰＵ１２５は、適用要否テーブル２３０を参照し、ログインを要求したホストコンピュータの識別情報が、“iqn.2004-05.com.xyz:host1“であればDelayed  ACKの影響を受ける通信となるため先行パケットモードが選択される。
【０１０５】
先行パケットの送信が不要、即ちDelayed  ACKの影響を受けないと判定した場合、通常モードが選択される（ステップ１１１５）。例えば、ステップ１１０５で、ＣＰＵ１２５は、適用要否テーブル２３０を参照し、ログインを要求したホストコンピュータの識別情報が、”iqn.2004-05.com.xyz:host2“であれば、Delayed  ACKの影響を受けない通信となるため通常モードが選択される。
【０１０６】
そして、図１０のステップ１０２５へ進む。
【０１０７】
先行パケットモード、及び通常モード時のコマンド処理は、第１の実施例における図１４と同様の処理でよい。
【０１０８】
第４の実施例によれば、記憶システムは、ホストコンピュータの識別情報を元に、Delayed  ACKの影響を受けるか否かを判定し、更に、Delayed  ACKの影響を受ける場合には、データを送信する前に該コマンドとは直接関係のないパケットを先行的に送信することによって、ホストコンピュータと記憶システム間の接続環境などに左右されずに、コマンド応答時間を短縮することが出来る。
【実施例５】
【０１０９】
本発明の第５の実施例について、以下に説明する。
【０１１０】
第４の実施例と異なるのは、動作モードとしてデータ分割モードを備えている点である。
【０１１１】
図１６は、第５の実施例における動作モード判定処理のフローチャートを示す図である。
【０１１２】
最初のステップ１６１０では、ＣＰＵ１２５は、ログインを要求したホストコンピュータが、Delayed  ACKの影響を受ける通信相手か否かを判定する。この判定を行うため、ＣＰＵ１２５は適用要否テーブル２３０を参照する。ＣＰＵ１２５が、データの分割が必要である、即ちDelayed  ACKの影響を受けると判定した場合、データ分割モードが選択される（ステップ１６１５）。データの分割が不要である、即ちDelayed  ACKの影響を受けないと判定した場合、通常モードが選択される（ステップ１６２０）。
【０１１３】
具体的には、ログインを要求したホストコンピュータの識別情報が、“iqn.2004-05.com.xyz:host1“であればDelayed  ACKの影響を受ける通信となるためデータ分割モードが選択される。” iqn.2004-05.com.xyz:host2“であれば、Delayed  ACKの影響を受けない通信となるため通常モードが選択される。データ分割モード、及び通常モード時のコマンド処理は、第１の実施例における図１４と同様の処理でよい。そして、図１０のステップ１０２５へ進む。
【０１１４】
第５の実施例によれば、記憶システムは、ホストコンピュータの識別情報を元にDelayed  ACKの影響を受けるか否かを判断し、更に、Delayed  ACKの影響を受ける場合には、送信するデータを分割することで、図１５に示すような通信が可能となるため、ホストコンピュータと記憶システム間の接続環境などに左右されずに、コマンド応答時間を短縮することが出来る。
【実施例６】
【０１１５】
本発明の第６の実施例について、以下に説明する。
【０１１６】
第４の実施例や第５の実施例と異なるのは、動作モードとしてデータ分離モードを備えている点である。
【０１１７】
図１７は、第６の実施例における動作モード判定処理のフローチャートを示す図である。
【０１１８】
最初のステップ１７１０では、ＣＰＵ１２５は、ログインを要求したホストコンピュータが、Delayed  ACKの影響を受ける通信相手か否かを判定する。この判定を行うため、ＣＰＵ１２５は適用要否テーブル２３０を参照する。ＣＰＵ１２５が、ヘッダとデータの分離が必要である、即ちDelayed  ACKの影響を受けると判定した場合、データ分割モードが選択される（ステップ１７１５）。ヘッダとデータの分離は不要である、即ちDelayed  ACKの影響を受けないと判定した場合、通常モードが選択される（ステップ１７２０）。
具体的には、ログインを要求したホストコンピュータの識別情報が、“iqn.2004-05.com.xyz:host1“であればDelayed  ACKの影響を受ける通信となるためデータ分離モードが選択される。” iqn.2004-05.com.xyz:host2“であれば、Delayed  ACKの影響を受けない通信となるため通常モードが選択される。データ分離モード、及び通常モード時のコマンド処理は、第１の実施例における図１４と同様の処理でよい。そして、図１０のステップ１０２５へ進む。
【０１１９】
第６の実施例によれば、記憶システムは、ホストコンピュータの識別情報を元にDelayed  ACKの影響を受けるか否かを判断し、更に、Delayed  ACKの影響を受ける場合には、ヘッダとデータを分離しそれぞれ別パケットとして送信することで、図１５に示すような通信が可能となるため、ホストコンピュータと記憶システム間の接続環境などに左右されずに、コマンド応答時間を短縮することが出来る。
【０１２０】
なお、本発明は、上記の実施例に限定されるものではなく、例えば以下のような応用も可能である。
【０１２１】
（１）上述した第１の実施例から第３の実施例では、ＣＰＵ１２５がDelayed  ACKの影響を受けるか否かを判定する際に、ホストコンピュータ１０５へ送信するパケット数が奇数であるかで判定したが、別の判定基準を使ってもよい。Delayed  ACKは２パケット受信するまでその受領応答を遅延させることが出来る、とされている。これを、仮に任意のパケット数を受信するまでその受領応答を遅延させることが出来る、となった場合、例えば動作モードが先行パケットモードにおいて、図４のステップ４１５を以下のようにすればよい。ここで、Delayed  ACK適用パケット数を（Ｄ）とする。Delayed  ACK適用パケット数は任意の値を指定可能とする。
【０１２２】
ステップ４１５では、（Ｃ）を（Ｄ）で割った余りを（Ｅ）とすると、余りがない場合は、Delayed  ACKの影響を受けないと判定し通常モードが選択すればよい。余りが発生した場合、Delayed  ACKの影響を受けると判定し先行パケットモードが選択すればよい。Delayed  ACK適用パケット数からステップ４１５で計算した余りを差し引いた（（Ｄ）−（Ｅ））数だけ先行パケットを送信すればDelayed  ACKの影響を回避することが出来る。
【０１２３】
そして、図５に示すホストＩＦ部のデータ送信処理のステップ５２０を先ほど計算した（（Ｄ）−（Ｅ））の回数分だけ繰り返せばよい。なお、他の動作モード（データ分割モード、データ分離モード）であってもよい。
【０１２４】
（２）上述した第４の実施例から第６の実施例では、ホストコンピュータからログインしたタイミングで、Delayed  ACKの適用判定を行っているが、ホストコンピュータを識別情報が取得できる任意のタイミングでも構わない。例えば、ホストコンピュータが記憶システムとＴＣＰコネクションを確立するタイミングでもよい。このとき、少なくともホストコンピュータの識別情報として、ＭＡＣアドレス、ＩＰアドレス、ＴＣＰポート番号が取得出来るため、いずれかの識別情報を使ってDelayed  ACKの適用判定が可能である。
【０１２５】
（３）上述した各実施例において、プロトコル処理は、ホストＩＦ部のＩＦ処理部１１９で実施しているが、これらプロトコル処理の実装形態はこれに限定されるものではない。例えば、ＣＰＵ１２５がｉＳＣＳＩやＴＣＰなどのプロトコル処理を実施してもよい。その場合、ＣＰＵ１２５は、ｉＳＣＳＩ  ＰＤＵなどの生成や、ホストコンピュータ１０５と記憶システム１００間で行われる通信に必要な制御情報の管理、状態監視や障害処理などを行うことになる。また、プロトコル処理の過程で一時的に使用されるバッファ１１７は、メモリ１３０となる。
【０１２６】
更に、図５などに示すホストＩＦ部のデータ送信処理は、ＣＰＵ１２５で実施すればよい。その場合、ＣＰＵ１２５自身でデータ送信処理を行うため、ホストＩＦ部１１５は、ＣＰＵ１２５が生成したパケットを単にホストコンピュータ１０５に送信するだけでよく、例えばステップ５１０は省略可能である。更に、ステップ５２５、５５５については、完了報告ではなく、完了を確認すればよい。
【０１２７】
（４）上述した各実施例において、プログラムによって実現されていた機能の一部をハードウェアで実現してもよく、その逆で、ハードウェアで実現されていた機能の一部をソフトウェアで実現出来るようにしてもよい。なお、記憶システム１００は、ホストコンピュータ１０５から要求されたデータの格納、または提供が出来る構成であれば図１に示した構成に限定されるものではない。
【０１２８】
（５）上述した各実施例において、記憶システム１００の各構成要素１１０、１４５、１４０間をスイッチ１３５で接続する例を示したが、各構成要素間でデータや制御情報等が転送されればよく、例えばバスによる接続であってもよい。
【０１２９】
（６）上述した各実施例において、ホストコンピュータ１０５とディスク装置１５０のインタフェースを備える制御部を、ホストＩＦ制御部１１０、ディスクＩＦ制御部１４５として別々に備える構成を示したが、記憶システム１００内で双方のインタフェースを備えていればよく、例えばホストＩＦ制御部１１０とディスクＩＦ制御部１４５の機能を兼ね備える制御部としてもよい。
【０１３０】
（７）上述した各実施例において、メモリ１４０をキャッシュメモリ（図示せず）、共有メモリ（図示せず）と領域を分けた例を示したが、記憶システム１００内のいずれかの場所で管理されていればよく、例えば、ホストＩＦ制御部１１０のメモリ１３０で管理してもよい。
【図面の簡単な説明】
【０１３１】
【図１】記憶システムの構成を示す概略図である
【図２】メモリ１３０に格納するＣＰＵが実行するプログラムの一例を示した図である。
【図３】第１の実施例におけるデータ送受信処理のフローチャートを示す図である。
【図４】第１の実施例における動作モード判定処理３２５のフローチャートを示す図である。
【図５】第１の実施例におけるホストＩＦ部のデータ送信におけるフローチャートを示す図である。
【図６】第２の実施例における動作モード判定処理のフローチャートを示す図である。
【図７】第２の実施例におけるホストＩＦ部のデータ送信処理のフローチャートを示す図である。
【図８】第３の実施例における動作モード判定処理のフローチャートを示す図である。
【図９】第３の実施例におけるホストＩＦ部のデータ送信処理のフローチャートを示す図である。
【図１０】第４の実施例におけるデータ送受信処理のフローチャートを示す図である。
【図１１】第４の実施例における動作モード判定処理のフローチャートを示す図である。
【図１２】適用要否テーブル２３０の一例を示す図である。
【図１３】ｉＳＣＳＩプロトコルによるリードコマンド処理の流れを示す。
【図１４】本発明におけるコマンド処理３３０のフローチャートを示す図である。
【図１５】本発明におけるホストコンピュータ１０５と記憶システム１００間の通信の様子を示した図である
【図１６】第５の実施例における動作モード判定処理のフローチャートを示す図である。
【図１７】第６の実施例における動作モード判定処理のフローチャートを示す図である。
【符号の説明】
【０１３２】
１００…記憶システム、１０５…ホスト、１１０…ホストＩＦ制御部、１１５…ホストＩＦ部、１１７…ＢＵＦ、１１９…ＩＦ処理部、１２０…データ転送制御部、１２５…ＣＰＵ、１３０…メモリ、１３５…スイッチ、１４０…メモリ、１４５…ディスクＩＦ制御部、１５０…ディスク装置、２０１…コマンド解析モジュール、２０３…データ転送モジュール、２０５…動作モード判定モジュール、２１５…先行パケット送信モジュール、２２０…データ分割モジュール、２２２…データ分離モジュール、２２５…適用判定モジュール、２３０…適用要否テーブル
【図１】
0004786354.tif 000002
【図２】
0004786354.tif 000003
【図３】
0004786354.tif 000004
【図４】
0004786354.tif 000005
【図５】
0004786354.tif 000006
【図６】
0004786354.tif 000007
【図７】
0004786354.tif 000008
【図８】
0004786354.tif 000009
【図９】
0004786354.tif 000010
【図１０】
0004786354.tif 000011
【図１１】
0004786354.tif 000012
【図１２】
0004786354.tif 000013
【図１３】
0004786354.tif 000014
【図１４】
0004786354.tif 000015
【図１５】
0004786354.tif 000016
【図１６】
0004786354.tif 000017
【図１７】
0004786354.tif 000018