(57)【要約】【課題】ディスクコントローラとディスクアレイを接続するスイッチにおけるデータ書き込み時のスループットを向上させる。【解決手段】フレーム出力先ポートのバッファメモリの空き容量が所定の値より多い場合は、クロスバスイッチによりフレームの経路変更を実行する。出力先ポートのバッファメモリの空き容量が所定の値以下である場合は、転送フレームを共有メモリに書き込み、その後該フレームを共有メモリから読み出して出力ポートへ転送する。クロスバスイッチによるフレーム転送と共有メモリ経由のフレーム転送を選択的に実行することにより、ポートバッファが溢れる影響を軽減でき、書き込みスループットを向上できる。【選択図】図１
2005267502.tif 000002
【特許請求の範囲】
【請求項１】
ディスクコントローラとディスクアレイを接続してデータを転送するスイッチにおいて、
該ディスクコントローラとディスクアレイ間で転送されるデータを一次的に格納するために、スイッチの複数のポートに対応して設けられたバッファメモリと、
いずれかのポートに接続して、データを転送するための経路を設定するクロスバスイッチと、
該クロスバスイッチに接続され、転送データを格納する共有メモリと、
転送されるフレームに対する出力ポートのバッファメモリの空き容量を監視する制御部と、を有し、
該制御部は、
該監視に従い、該バッファメモリの空き容量が所定の値より多い場合には、該フレーム内の送信先情報に従い、該クロスバスイッチを経路設定して、該フレームを該入力ポートから該バッファメモリを介して出力ポートへ転送し、
該バッファメモリの空き容量が所定の値以下の場合には、該入力ポートから該クロスバスイッチを経由して該共有メモリへフレームを書き込み、
かつ、該フレーム内の送信先情報に従って該クロスバスイッチを経路設定して、該共有メモリからフレームを読み出し、該クロスバスイッチを経由して出力ポートへ転送するように制御することを特徴とするスイッチ。
【請求項２】
前記制御部は、フレームの入力ポートが予め定められたポートであるかを判別し、該入力ポート判別及び前記バッファメモリの空き容量の監視に従い、
該バッファメモリの空き容量が所定の値より多いか、又は該フレームの入力ポートが予め定められたポートではない場合は、該フレーム内の送信先情報に従い前記クロスバスイッチを経路設定して、該入力ポートからバッファメモリを介して該出力ポートへ該フレームを転送し、
該バッファメモリの空き容量が所定の値以下であり、且つ該入力ポートが予め定められたポートである場合は、該入力ポートから該クロスバスイッチを経由して該共有メモリへフレームを書き込むことを特徴とする請求項１記載のスイッチ。
【請求項３】
前記制御部は、予め定められたポートとして、該ディスクコントローラと接続されたスイッチのポートであるかを判別することを特徴とする請求項２記載のスイッチ。
【請求項４】
前記制御部は、更に該フレームに含まれる送信元情報の識別を行い、
該送信元情報の識別及び前記監視に従って、
該バッファメモリの空き容量が所定の値より多いか、或いは該送信元情報が予め定められた送信元情報ではない場合は、該フレーム内の送信先情報に従い前記クロスバスイッチを経路設定して、該フレームを該入力ポートから該バッファメモリを介して該出力ポートへ転送し、
該バッファメモリの空き容量が所定の値以下であり、且つ該送信元情報が予め定められた送信元情報である場合には、該入力ポートから前記クロスバスイッチを経由して該共有メモリへフレームを書き込むことを特徴とする請求項１記載のスイッチ。
【請求項５】
前記制御部は、前記予め定められた送信元情報として、該ディスクコントローラのポート識別情報であるかを識別することを特徴とする請求項４記載スイッチ。
【請求項６】
前記制御部は、更に、該フレームを含むエスチェンジに含まれるコマンドが予め定められたコマンドであるかの判別を行い、
該コマンドの判別及びバッファメモリの前記監視に従い、
該バッファメモリの空き容量が所定の値より多いか、或いは該エクスチェンジに含まれるコマンドが予め定められたコマンドではない場合は、該フレーム内の送信先情報に従い前記クロスバスイッチを経路設定して、該フレームを該入力ポートから該出力ポートへ転送し、
該バッファメモリの空き容量が所定の値以下であり、且つ該エクスチェンジに含まれるコマンドが予め定められたコマンドである場合は、該入力ポートから前記クロスバスイッチを経由して前記共有メモリへ該フレームを書き込むことを特徴とする請求項１記載のスイッチ。
【請求項７】
前記制御部は、該予め定められたコマンドの判別として、書き込みコマンドであるかを判別することを特徴とする請求項６記載のスイッチ。
【請求項８】
バッファメモリを有するスイッチを用いて、ディスクコントローラとディスクアレイの間でデータの転送を行うデータ転送制御方法において、
該ディスクコントローラと該ディスクアレイ間で転送されるフレームの出力ポートのバッファメモリの空き容量を監視するステップと、
該監視により該バッファメモリの空き容量が所定の値より多い場合には、該フレーム内の送信先情報に従い、クロスバスイッチを経路設定して、該フレームを入力ポートから該バッファメモリを介して出力ポートへ転送するステップと、
該バッファメモリの空き容量が所定の値以下の場合には、入力ポートから該クロスバスイッチを経由して共有メモリへ該フレームを書き込むステップと、
該フレーム内の送信先情報に従って該クロスバスイッチを経路設定するステップと、
該共有メモリから該フレームを読み出すステップと、
該共有メモリから読み出された該フレームを、該クロスバスイッチを経由して出力ポートへ転送するステップと、
を有することを特徴とするデータ転送制御方法。
【請求項９】
更に、転送される該フレームの入力ポートが予め定められたポートであるか判別するステップを含み、
該バッファメモリの空き容量が所定の値より多いか、又は該入力ポートが予め定められたポートでない場合には、該フレーム内の送信先情報に従い該クロスバスイッチを経路設定して、該フレームを該入力ポートから出力ポートへ転送し、
該バッファメモリの空き容量が所定の値以下であり、かつ該入力ポートが予め定められたポートである場合には、該入力ポートから該クロスバスイッチを経由して該共有メモリへフレームを書き込むことを特徴とする請求項８記載のデータ転送制御方法。
【請求項１０】
更に、該フレームに含まれる送信元情報の識別を行うステップと含み、
該バッファメモリの空き容量が所定の値より多いか、或いは該送信元情報が予め定められた送信元情報ではない場合は、該フレーム内の送信先情報に従い前記クロスバスイッチを経路設定して、該フレームを該入力ポートから該出力ポートへ転送し、
該バッファメモリの空き容量が所定の値以下であり、且つ該送信元情報が予め定められた送信元情報である場合には、該入力ポートから前記クロスバスイッチを経由して該共有メモリへフレームを書き込むことを特徴とする請求項８記載のデータ転送制御方法。
【請求項１１】
更に、該フレームを含むエスチェンジに含まれるコマンドが予め定められたコマンドであるかの判別を行うステップを含み、
該バッファメモリの空き容量が所定の値より多いか、或いは該エクスチェンジに含まれるコマンドが予め定められたコマンドではない場合は、該フレーム内の送信先情報に従い前記クロスバスイッチを経路設定して、該フレームを該入力ポートから該出力ポートへ転送し、
該バッファメモリの空き容量が所定の値以下であり、且つ該エクスチェンジに含まれるコマンドが予め定められたコマンドである場合は、該入力ポートから前記クロスバスイッチを経由して前記共有メモリへ該フレームを書き込むことを特徴とする請求項８記載のデータ転送制御方法。
【請求項１２】
前記判別ステップは、該エスチェンジに含まれるコマンドが書き込みコマンドであるかを判別することを特徴とする請求項１１記載のデータ転送制御方法。
【請求項１３】
前記フレームは、データ転送シーケンスに含まれるフレームであることを特徴とする請求項８乃至１２のいずれか記載のデータ転送制御方法。
【請求項１４】
データを記憶するディスクアレイと、該ディスクアレイへデータの読み書きを制御するディスクコントローラと、該ディスクコントローラとディスクアレイを接続するスイッチと、を有するディスク装置において、該スイッチは；
該ディスクコントローラとディスクアレイ間で転送されるデータを一次的に格納するために、スイッチの複数のポートに対応して設けられたバッファメモリと、
いずれかのポートに接続して、データを転送するための経路を設定するクロスバスイッチと、
該クロスバスイッチに接続され、転送データを格納する共有メモリと、
転送されるフレームに対する出力ポートのバッファメモリの空き容量を監視する制御部と、を有し、
該制御部は、
該監視に従い、該バッファメモリの空き容量が所定の値より多い場合には、該フレーム内の送信先情報に従い、該クロスバスイッチを経路設定して、該フレームを該入力ポートから該バッファメモリを介して出力ポートへ転送し、
該バッファメモリの空き容量が所定の値以下の場合には、該入力ポートから該クロスバスイッチを経由して該共有メモリへフレームを書き込み、
かつ、該フレーム内の送信先情報に従って該クロスバスイッチを経路設定して、該共有メモリからフレームを読み出し、該クロスバスイッチを経由して出力ポートへ転送するように制御することを特徴とするディスク装置。
【請求項１５】
前記制御部は、フレームの入力ポートが予め定められたポートであるかを判別し、該入力ポート判別及び前記バッファメモリの空き容量の監視に従い、
該バッファメモリの空き容量が所定の値より多いか、又は該フレームの入力ポートが予め定められたポートではない場合は、該フレーム内の送信先情報に従い前記クロスバスイッチを経路設定して、該入力ポートからバッファメモリを介して該出力ポートへ該フレームを転送し、
該バッファメモリの空き容量が所定の値以下であり、且つ該入力ポートが予め定められたポートである場合は、該入力ポートから該クロスバスイッチを経由して該共有メモリへフレームを書き込むことを特徴とする請求項１４記載のディスク装置。
【請求項１６】
複数のポートに対応してバッファメモリを有するスイッチを用いて、第１の装置と第２の装置との間でデータの転送を行うデータ転送制御方法において、
クロスバスイッチにより経路設定して、入力ポートから該バッファメモリを介してある出力ポートへデータを転送する第1のモードと、
該入力ポートから該クロスバスイッチを経由して共有メモリへデータを書き込むようにデータを転送する第２のモードと、
該第１のモード又は該第２のモードを選択するように、該クロスバスイッチにより経路変更するステップと、
該第２のモードが選択された場合、該共有メモリに書き込まれたデータを読み出して、該クロスバスイッチを経由して該データを出力ポートへ転送するステップと、
を有することを特徴とするデータ転送制御方法。
【請求項１７】
前記第１の装置はディスクコントローラであり、前記第２の装置はディスクアレイであり、該ディスクコントローラから該ディスクアレイへデータを書き込むときに、前記第２のモードの選択を有効とすることを特徴とする請求項１６記載のデータ転送制御方法。
【請求項１８】
前記経路変更ステップは、該バッファメモリの空き容量に従って、該第２のモードを選択するように、経路変更することを特徴とする請求項１６記載のデータ転送制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ転送用スイッチに係り、より詳しくはコンピュータシステムの二次記憶装置に使用されるスイッチ、特にディスクコントローラとディスクアレイを接続するスイッチ及びそのデータ転送制御方法に関する。
【背景技術】
【０００２】
コンピュータシステムは大容量の二次記憶装置を備え、ＣＰＵ（中央処理装置）等の上位装置が必要とするデ−タをこの二次記憶装置に格納しておき、上位装置から随時にデータの書き込み及び読み出しを行っている。二次記憶装置としては一般に不揮発な記憶媒体、とりわけ磁気ディスク装置や光ディスク装置等のディスク装置が使用される。
【０００３】
近年、高度情報化に伴い、この二次記憶装置の高性能化が要求されている。ディスク装置の高性能化のためには、特にディスクドライブの接続台数を増加させ、かつスループットを向上させることが望ましい。そのためにディスク装置内のディスクコントローラとディスクアレイとをスイッチを用いて接続することが提案されている。高性能なディスク装置では、ディスクコントローラとディスクアレイ間の入出力インターフェイスとしてファイバチャネルが使用されることが多い。
【０００４】
例えば、特開平１１−８６３６公報（特許文献１）には、ディスク装置内のディスクコントローラとディスクアレイの接続に適用可能なファイバチャネルのスイッチが開示されている。この文献に示されたスイッチは、スイッチの全ポートから入出力されるフレームが中央メモリを共有する共有メモリ型のスイッチである。
【０００５】
また、特開２００３−３０３０５５公報（特許文献２）には、バッファメモリを有するスイッチを用いて、ディスク装置内のディスクコントローラとディスクアレイを接続するディスク装置が開示されている。より具体的には、ディスクアダプタＤＫＡと、複数のディスクグループＲ１〜Ｒ４からなるディスクアレイＤＡを、複数のスイッチＳＷ１〜ＳＷ４を介してそれぞれ接続し、スイッチは、ディスクアダプタの接続されたポートとディスクドライブの接続されたポートとの切り替えを、入力されたフレーム毎に、フレーム内の送信先情報に従って行うものである。
【０００６】
【特許文献１】特開平１１−８６３６公報
【０００７】
【特許文献２】特開２００３−３０３０５５公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
ネットワーク技術の進歩に伴い、１チャネル当たりの媒体速度は年々増加している。例えばディスク装置に使用されるファイバチャネルにおける媒体速度は、現状では１Ｇｂ／ｓ乃至２Ｇｂ／ｓであるが、近い将来４Ｇｂ／ｓから１０Ｇｂ／ｓ程度に高速化されるものと予想されている。一方、ディスクドライブに対する読み出しまたは書き込み時の実効的なデータ転送速度は、現状では最大１００ＭＢ／ｓ程度である。ディスクドライブは機械部品を含むため、媒体速度の増加率ほどには高速化されないと考えられる。
【０００９】
上記特開２００３−３０３０５５公報に開示された、ディスクアダプタとディスクアレイの接続形態では、スイッチを介してディスクアダプタとディスクアレイ内のディスクドライブが、１対多の接続形態となっている。この接続形態では、複数のディスクドライブに対する読み出しと書き込みが、ディスクアダプタとスイッチを接続する１本のチャネルに集約されることになる。つまり、スイッチのディスクアダプタ側チャネルとディスクアレイ側チャネルとでは要求されるスループットに差が生ずるので、スイッチにはその差を吸収するバッファメモリが必要となる。
【００１０】
図２１及び図２２に、ファイバチャネルのＦＣＰ-ＳＣＳＩ(Fibre Channel Protocol for SCSI)におけるエクスチェンジの例を示す。
一般的に、エクスチェンジはシーケンス群からなり、またシーケンスは一連の動作を行うフレーム又は複数のフレームからなる。読み出しの例を示す図２１において、イニシエータ（ディスクコントローラ）からターゲット（ディスクドライブ）へ読み出し(Read)コマンドが送られ(FCP_CMND)、それに対してターゲットからイニシエータへ読み出しデータが送られ(FCP_DATA)、最後にターゲットからイニシエータへステータス情報が送信されて(FCP_RSP)、エクスチェンジが終了する。
【００１１】
一方、図２２の書き込みの場合には、イニシエータからターゲットへ書き込み(Write)コマンドが送られ(FCP_CMND)、必要に応じてターゲットからイニシエータへバッファ制御情報が送られる(FCP_XFER_RDY)。これに対してイニシエータからターゲットへ書き込みデータが送られ(FCP_DATA)、最後にターゲットからイニシエータへステータス情報が送信されて(FCP_RSP)、エクスチェンジが終了する。
【００１２】
ディスクコントローラ（イニシエータ）とディスクドライブ（ターゲット）間では、一般的に連続したフレームからなるデータ転送シーケンスが送受信される。複数のディスクドライブからのデータ読み出しの場合は、ディスクドライブの実効的なデータ転送速度が媒体速度より低くても、ディスクコントローラとスイッチ間の媒体速度を十分に高速化し、且つ複数の読み出しをスイッチにおけるラウンドロビン等の負荷分散処理によりバッファメモリが溢れないように制御することにより、容易にディスクアダプタとスイッチ間のデータ転送速度を高速化することができる。
しかし、複数のディスクドライブへの書き込みの場合に、ディスクアダプタとディスクアレイ間を高スループット化するためには、スイッチ内のバッファメモリが溢れないように、ディスクコントローラ側においてフレーム送信先を、周期的且つ少数フレーム単位で切り換える必要があり、制御が複雑となる。
【００１３】
この点に関し、特許文献１に開示されたスイッチにおける共有メモリは、ディスクアダプタ側チャネルとディスクアレイ側チャネルの速度差を吸収するバッファメモリとして機能する。しかし、読み出しデータと書き込みデータが共に共有メモリを利用することになるので、スイッチ内に大容量の共有メモリが必要となる。さらに全ポートのスループットが共有メモリに集約されるので、高速スループットを持った共有メモリが必要となる。また、共有メモリ型ではないクロスバ型のスイッチに比べて、フレームがスイッチを通過するレイテンシが大きいという問題点がある。
【００１４】
上記特許文献２に開示されているディスク装置においては、スイッチポート内のバッファメモリが溢れないようにフレーム送信先を周期的に切り換え制御することにより、ディスクアダプタとディスクアレイ間を高スループット化している。しかし、同一スイッチポートへ接続されているドライブへの連続書き込みが発生するなどしてスイッチが長い時間切り換わらない状態が続く場合には、バッファメモリのオーバーフローが発生し、書き込みスループットが低下する恐れがある。オーバーフローを防ぐためには、ポート毎に大容量のバッファメモリが必要となる。
【００１５】
本発明の目的は、ディスクコントローラとディスクアレイを接続するスイッチにおいて、ディスクアレイへのデータの書き込み時のスループットを向上させたデータ転送用スイッチ、その制御方法、及びディスク装置を提供することにある。
【課題を解決するための手段】
【００１６】
本発明は、複数のポートに対応してバッファメモリを有するスイッチを用いて、第１の装置と第２の装置との間でデータの転送を行うデータ転送制御方法において、クロスバスイッチにより経路設定して、入力ポートから該バッファメモリを介してある出力ポートへデータを転送する第1のモードと、入力ポートから該クロスバスイッチを経由して共有メモリへデータを書き込むようにデータを転送する第２のモードとを有し、好ましくはバッファメモリの空き容量に従って、第２のモードを選択するように、クロスバスイッチにより経路変更すると共に、共有メモリに書き込まれたデータを読み出し、クロスバスイッチを経由してそのデータを出力ポートへ転送するように制御する。
好ましくは、上記第１の装置はディスクコントローラであり、第２の装置はディスクアレイであり、ディスクコントローラからディスクアレイへデータを書き込むときに、上記第２のモードの選択を有効とするように制御する。
【００１７】
本発明は、ディスクコントローラとディスクアレイを接続してデータを転送するスイッチとして把握される。このスイッチは、好ましくは、ディスクコントローラとディスクアレイ間で転送されるデータを一次的に格納するために、スイッチの複数のポートに対応して設けられたバッファメモリと、いずれかのポートに接続して、データを転送するための経路を設定するクロスバスイッチと、クロスバスイッチに接続され、転送データを格納する共有メモリと、転送されるフレームに対する出力ポートのバッファメモリの空き容量を監視する制御部とを有し、この制御部は、上記監視に従い、バッファメモリの空き容量が所定の値より多い場合には、フレーム内の送信先情報に従い、クロスバスイッチを経路設定して、フレームを入力ポートからバッファメモリを介して出力ポートへ転送し、一方、バッファメモリの空き容量が所定の値以下の場合には、入力ポートからクロスバスイッチを経由して共有メモリへフレームを書き込み、かつ、フレーム内の送信先情報に従ってクロスバスイッチを経路設定して、共有メモリからフレームを読み出し、クロスバスイッチを経由して出力ポートへ転送するように制御する。
好ましい例では、上記制御部は、フレームの入力ポートが予め定められたポートであるかを判別し、入力ポート判別及びバッファメモリの空き容量の監視に従い、バッファメモリの空き容量が所定の値より多いか、又はフレームの入力ポートが予め定められたポートではない場合は、フレーム内の送信先情報に従い、クロスバスイッチを経路設定して、入力ポートからバッファメモリを介して出力ポートへフレームを転送し、一方、バッファメモリの空き容量が所定の値以下であり、且つ入力ポートが予め定められたポートである場合は、入力ポートからクロスバスイッチを経由して共有メモリへフレームを書き込むように制御する。
制御部は、予め定められたポートとして、例えばディスクコントローラと接続されたスイッチのポートであるかを判別する。
他の例によれば、上記制御部は、更にフレームに含まれる送信元情報の識別を行い、送信元情報の識別及び上記バッファメモリの監視に従って、バッファメモリの空き容量が所定の値より多いか、或いは送信元情報が予め定められた送信元情報ではない場合は、フレーム内の送信先情報に従いクロスバスイッチを経路設定して、フレームを入力ポートからバッファメモリを介して出力ポートへ転送し、一方、バッファメモリの空き容量が所定の値以下であり、且つ送信元情報が予め定められた送信元情報である場合には、入力ポートからクロスバスイッチを経由して共有メモリへフレームを書き込むように制御する。
上記制御部は、この予め定められた送信元情報として、例えばディスクコントローラのポート識別情報であるかを識別する。
また、他の例によれば、上記制御部は、更に、フレームを含むエスチェンジに含まれるコマンドが予め定められたコマンドであるかの判別を行い、このコマンドの判別及びバッファメモリの監視に従い、バッファメモリの空き容量が所定の値より多いか、或いはエクスチェンジに含まれるコマンドが予め定められたコマンドではない場合は、フレーム内の送信先情報に従いクロスバスイッチを経路設定して、フレームを入力ポートから該出力ポートへ転送し、一方、バッファメモリの空き容量が所定の値以下であり、且つエクスチェンジに含まれるコマンドが予め定められたコマンドである場合は、入力ポートからクロスバスイッチを経由して共有メモリへフレームを書き込むように制御する。
制御部は、好ましくは、予め定められたコマンドの判別として、書き込みコマンドであるかを判別する。
本発明はまた、上記スイッチを有するディスク装置としても把握される。
【発明の効果】
【００１８】
本発明によれば、データ転送用スイッチにおける転送データ格納用のバッファメモリの空き容量に応じて共有メモリを利用するように構成したので、ディスク装置のデータの書き込みスループットを向上させることができる。
【発明を実施するための最良の形態】
【００１９】
以下、図面を参照して本発明に係る実施の形態を詳細に説明する。
図１に、本発明の一実施形態におけるスイッチを示す。
スイッチＳＷは、この例では、Ｐ０、Ｐ１、Ｐ２、Ｐ３、Ｐ４の５個のポートを持つ。スイッチＳＷは、クロスバスイッチＸＳＷとスイッチコントローラＳＣと共有メモリＳＭからなる。スイッチＳＷのポートＰ０〜Ｐ４は、クロスバスイッチのポートＰ_０〜Ｐ_４とそれぞれ信号線Ｄ０〜Ｄ４により接続される。共有メモリＳＭは、クロスバスイッチＸＳＷのポートＰ_５と信号線Ｄ５で接続される。また、スイッチＳＷのポートＰ０〜Ｐ４は、スイッチコントローラＳＣとそれぞれ信号線Ｃ０〜Ｃ４で接続される。共有メモリＳＭは、スイッチコントローラＳＣと信号線Ｃ５で接続される。さらに、スイッチコントローラＳＣとクロスバスイッチＸＳＷのポートＳＥＬＥＣＴは信号線ＳＥＬで接続される。また、スイッチコントローラＳＣは信号線Ｃ６を介して、スイッチＳＷのポートＮＰと接続される。
【００２０】
信号線Ｄ０〜Ｄ５は、ポートＰ０〜Ｐ４および共有メモリ間で送受されるフレームと制御信号を送受する信号線である。信号線Ｃ０〜Ｃ５は、ポートＰ０〜Ｐ４および共有メモリＳＭと、スイッチコントローラＳＣとの間でフレームのヘッダ情報を送受するための信号線である。信号線ＳＥＬは、スイッチコントローラＳＣからクロスバスイッチＸＳＷへ、切り換え制御信号を送受するための信号線である。信号線Ｃ６は、スイッチ外部から設定情報を送受するため信号線である。また、ポートＰ０〜Ｐ４および共有メモリＳＭへの設定情報は、スイッチコントローラＳＣから信号線Ｃ０〜Ｃ６を通して分配される。
【００２１】
スイッチＳＷのポートＰ０〜Ｐ４の構成について、ポートＰ１を例にして説明する。ポートＰ１は、受信器Ｒｘ、送信器Ｔｘ、シリアルパラレル変換器ＳＰ、パラレルシリアル変換器ＰＳ、バッファメモリＢＭを有するプロトコルＩＣ(集積回路)  Ｐ_ＩＣから構成される。ここで、プロトコルＩＣ  Ｐ_ＩＣは、ファイバチャネルのＦＣ-１層、ＦＣ-２層を実現する集積回路である。受信器Ｒｘにて受信した信号は、シリアルパラレル変換器ＳＰでパラレル信号に変換され、プロトコルＩＣ  Ｐ_ＩＣに入力される。また、プロトコルＩＣ  Ｐ_ＩＣから出力される信号は、パラレルシリアル変換器ＰＳでシリアル信号に変換されて送信器ＴｘからスイッチＳＷ外へ送信される。
【００２２】
図２は、クロスバスイッチＸＳＷの構成を示す図である。
クロスバスイッチＸＳＷは、セレクタＳ０、Ｓ１、Ｓ２、Ｓ３、Ｓ４、Ｓ５からなる。ポートＳＥＬＥＣＴとセレクタＳ０〜Ｓ５は、信号線ＳＥＬ０〜ＳＥＬ５で接続される。ここで信号線ＳＥＬ０〜ＳＥＬ５は、図１における信号線ＳＥＬと接続している。クロスバスイッチＸＳＷのポートＰ_０〜Ｐ_５は送受信可能なポートであり、受信信号は信号線Ｄ０_ｉｎ〜Ｄ５_ｉｎを介して全セレクタＳ０〜Ｓ５へ分配される。セレクタＳ０〜Ｓ５の出力は、信号線Ｄ０_ｏｕｔ〜Ｄ５_ｏｕｔを介して、クロスバスイッチＸＳＷのポートＰ_０〜Ｐ_５へ各々接続する。セレクタＳ０〜Ｓ５を信号線ＳＥＬ０〜ＳＥＬ５上の信号で制御することにより、クロスバスイッチＸＳＷによる任意のポート間の接続が実現できる。
【００２３】
図３は、プロトコルＩＣ  Ｐ_ＩＣの構成を示す図である。
プロトコルＩＣＰ_ＩＣは、プロトコル処理部３０１と、受信用バッファメモリ３０２と、送信用バッファメモリ３０３と、転送制御部３０４から構成される。バッファメモリ３０２及び３０３は、ＦＩＦＯ(Ｆｉｒｓｔ−Ｉｎ  Ｆｉｒｓｔ−ｏｕｔ)メモリである。転送制御部３０４は、スイッチポート間で転送するフレームのヘッダを解析するための、ヘッダ解析部３０５を有する。信号線３１０、３１１、３１２、３１３、３１４、３１５はクロスバスイッチＸＳＷと接続する信号線であり、図１における信号線Ｄ０〜Ｄ４に相当する。信号線３１６、３１７はスイッチコントローラＳＣと接続する信号線であり，図１における信号線Ｃ０〜Ｃ４に相当する。
【００２４】
信号線３１０、３１１、３１２は、他ポートからのフレームを受信するための信号線である。信号線３１２はフレーム受信用、信号線３１１は書き込み制御信号を受信するための信号線である。信号線３１０はバッファ空き容量通知用の信号線であり、バッファ空き容量が所定の値より大きい場合は”０”レベルであり、バッファの空き容量が所定の空き容量以下になると”１”レベルとなる。
【００２５】
信号線３２０、３２１、３２２は、プロトコル処理部３０１がバッファメモリ３０２からフレームを読み出すための信号線である。信号線３２０はフレーム受信検出用の信号線であり、バッファに未読み出しのフレームが無い場合は”０”レベルであり、バッファに未読み出しのフレームがある場合は”１”レベルとなる。信号線３２２は受信フレームを転送するための、信号線３２１は読み出し制御信号受信用の信号線である。
信号線３２３、３２４、３２５は、プロトコル処理部３０１からの他ポートへの送信データをバッファメモリ３０３へ書き込むための信号線である。信号線３２３はフレーム転送用、信号線３２４は書き込み制御信号用の信号線である。信号線３２５はバッファ空き容量通知用の信号線であり、バッファ空き容量が所定の値より大きい場合は”０”レベルであり、バッファの空き容量が所定の空き容量以下になると”１”レベルとなる。
【００２６】
転送制御部３０４は、プロトコル処理部３０１から信号線３２６を介して送信フレームのヘッダ情報を受信し、ヘッダ解析部３０５へ入力する。ヘッダ解析部３０５は、送信フレームのヘッダから送信先アドレス情報を抽出し、信号線３１７を介してスイッチコントローラＳＣへ送信する。送信先アドレス情報を受信したスイッチコントローラＳＣは、クロスバスイッチＸＳＷのスイッチ経路を設定した後、スイッチ切り換え完了を、信号線３１６を介して転送制御部３０４へ通知する。また、信号線３１６はポート毎の各種設定情報を、スイッチコントローラＳＣから受信するためにも使用する。
【００２７】
信号線３１３、３１４、３１５、３３０、３３１は、バッファメモリ３０３から他ポートへフレームを送信するための信号線である。信号線３３１は未送信フレーム検出用の信号線であり、バッファに未送信のフレームが無い場合は”０”レベルであり、バッファに未送信のフレームがある場合は”１”レベルとなる。信号線３１３はフレームを他ポートへ送信するための、信号線３３０は読み出し制御信号用の信号線である。信号線３１６を介してスイッチコントローラＳＣからスイッチ切り換え完了通知を受信した転送制御部３０４は、信号線３１５を介してフレーム送信先ポート内受信バッファメモリの空き容量を検査する。その後、信号線３３０上の読み出し制御信号と同期した書き込み制御信号を、信号線３１４を介してフレーム送信先ポート内受信用バッファメモリへ送信する。送信用バッファメモリ３０３からは、信号線３３０上の読み出し制御信号に同期したフレームが、信号線３１３を介して送信されている。従って、信号線３１３上の送信フレームと信号線３１４上の書き込み制御信号は、同期して送信先ポートへ届くことになる。
【００２８】
信号線３１０は他のプロトコルＩＣ  Ｐ_ＩＣの信号線３１５と、信号線３１１は他のプロトコルＩＣ  Ｐ_ＩＣの信号線３１４と、信号線３１２は他のプロトコルＩＣ  Ｐ_ＩＣの信号線３１３と、クロスバスイッチＸＳＷを介して、それぞれ接続する。
【００２９】
図４は、共有メモリＳＭの構成を示す図である。
共有メモリＳＭは、メモリ部４０１と転送制御部４０２からなる。メモリ部４０１はＦＩＦＯメモリである。また、転送制御部４０２はフレーム分析部４０３を有する。フレーム分析部４０３は、送信するフレームのヘッダを分析して送信先アドレス情報を抽出し、信号線４１７を介してスイッチコントローラＳＣへ送信する機能と、メモリ部４０１に蓄えられた各フレームが納められているメモリ・アドレス範囲を管理する機能を有する。信号線４１７を介してスイッチコントローラＳＣへ送信先アドレス情報を送信した後、その送信先アドレス情報を受信したスイッチコントローラＳＣは、クロスバスイッチＸＳＷのスイッチ経路を設定し、その後スイッチ切り換え完了を、信号線４１６を介して転送制御部４０２へ通知する。また、信号線４１６は共有メモリＳＭの各種設定情報を、スイッチコントローラＳＣから受信するためにも使用する。
【００３０】
信号線４１０、４１１、４１２、４１３、４１４、４１５は、クロスバスイッチＸＳＷと接続する信号線であり、図１における信号線Ｄ５に相当する。信号線４１６、４１７はスイッチコントローラＳＣと接続する信号線であり，図１における信号線Ｃ５に相当する。
【００３１】
信号線４１０、４１１、４１２は、他ポートからのフレームを受信するための信号線である。信号線４１２はフレーム受信用、信号線４１１は書き込み制御信号を受信するための信号線である。信号線４１０はバッファ空き容量通知用の信号線であり、バッファ空き容量が所定の値より大きい場合は”０”レベルであり、バッファの空き容量が所定の空き容量以下になると”１”レベルとなる。
【００３２】
メモリ部４０１には２組の読み出し信号線がある。１組目は信号線４１３、４２０、４２１の組み合わせであり、２組目は信号線４２２、４２３、４２４の組み合わせである。
【００３３】
１組目の信号線４１３、４２０、４２１は、転送制御部４０２がメモリ部４０１からフレームを読み出すための信号線である。信号線４２１は送信フレーム検出用の信号線であり、メモリ部４０１に未送信のフレームが無い場合は”０”レベルであり、メモリ部４０１に未送信のフレームがある場合は”１”レベルとなる。信号線４１３はフレームを他ポートへ送信するための、信号線４２０は読み出し制御信号用の信号線である。転送制御部４０２は、信号線４１５を介してフレーム送信先ポート内受信バッファメモリの空き容量を検査する。その後、信号線４２０上の読み出し制御信号に同期した書き込み制御信号を、信号線４１４を介して、フレーム送信先のポートへ送信する。
【００３４】
２組目の信号線４２２、４２３、４２４は、フレーム分析部４０３がメモリ部４０１からフレームを読み出すための信号線である。信号線４２４は送信フレーム検出用の信号線であり、メモリ部４０１に未送信のフレームが無い場合は”０”レベルであり、メモリ部４０１に未送信のフレームがある場合は”１”レベルとなる。信号線４２２はフレームをフレーム分析部４０３へ転送するための、信号線４２３は読み出し制御信号用の信号線である。フレーム分析部４０３は、転送制御部４０２によるフレーム送信に先立ち、送信フレームのヘッダ分析、メモリ部４０１上メモリ・アドレス範囲の検出等を実行する。
【００３５】
次に、図５を参照して、本実施形態によるスイッチＳＷを適用したディスク装置の構成について説明する。
ディスク装置は、主にディスクコントローラＤＫＣと、ディスクアレイＤＡ１と、スイッチＳＷから構成される。ディスクコントローラＤＫＣは、チャネルアダプタＣＨＡと、キャッシュメモリＣＭと、ディスクアダプタＤＫＡを有する。チャネルアダプタＣＨＡとキャッシュメモリＣＭとディスクアダプタＤＫＡは、相互接続網ＮＷで接続されている。チャネルアダプタＣＨＡは、チャネルＣ００、Ｃ０１、Ｃ０２、Ｃ０３を介してホストコンピュータのような上位装置（図示せず）と接続される。ディスクアダプタＤＫＡはチャネルＤ００とスイッチＳＷを介して、ディスクアレイＤＡ１と接続される。チャネルＤ０１、Ｄ０２、Ｄ０３においてもチャネルＤ００と同様にスイッチを介してディスクアレイを接続可能であるが、ここでは簡単のために省略する。ディスクコントローラＤＫＣとスイッチＳＷは、保守端末ＳＶＰから設定情報を入力することができる。
【００３６】
図６を参照して、チャネルアダプタＣＨＡの構成について説明する。
チャネルアダプタＣＨＡは、チャネルＣ００〜Ｃ０３に接続されたホストチャネル・インターフェイス６１と、相互結合網ＮＷに接続されたキャッシュメモリ・インターフェイス６２と、保守端末ＳＶＰに接続するためのネットワーク・インターフェイス６３と、上位装置との間でのデータ転送を制御するためのプロセッサ６４と、プロセッサ６４が参照する各種のテーブルや実行すべきソフトウェアを格納したローカルメモリ６５と、これらの要素間の相互接続するプロセッサ周辺制御部６６から構成される。
【００３７】
保守端末ＳＶＰは、プロセッサ６４、７４（後述する）が参照する上記各種テーブルの設定、変更、あるいはディスク装置の稼働状況のモニタ等に使用する。
ホストチャネル・インターフェイス６１は、チャネルＣ００〜Ｃ０３上のデータ転送プロトコルと、ディスクコントローラ内部のデータ転送プロトコルとの間の変換機能を有し、ホストチャネル・インターフェイス６１とキャッシュメモリ・インターフェイス６２との間は信号線６７によって接続される。
【００３８】
図７を参照して、ディスクアダプタＤＫＡの構成について説明すると、ディスクアダプタＤＫＡは、相互結合網ＮＷに接続されたキャッシュメモリ・インターフェイス７１と、ディスクチャネルＤ００〜Ｄ０３に接続されたディスクチャネル・インターフェイス７２と、保守端末ＳＶＰに接続するためのネットワーク・インターフェイス７３と、プロセッサ７４と、該プロセッサが参照する各種のテーブルや実行すべきソフトウェアを格納したローカルメモリ７５と、これらの要素間の相互接続するプロセッサ周辺制御部７６とから構成される。
【００３９】
キャッシュメモリ・インターフェイス７１とディスクチャネル・インターフェイス７２との間は信号線７７によって接続される。ディスクチャネル・インターフェイス７２は、ディスクコントローラ内部のデータ転送プロトコルと、チャネルＤ００〜Ｄ０３上のデータ転送プロトコル、例えば、ＦＣＰ-ＳＣＳＩとの間の変換機能を備えている。
【００４０】
次に、本実施形態におけるディスクアレイＤＡ１の構成について述べる。
図５に示したディスクアレイＤＡ１は、チャネルＤ１０上に接続した４個のディスクドライブからなるディスクアレイと、チャネルＤ１１上に接続した４個のディスクドライブからなるディスクアレイと、チャネルＤ１２上に接続した４個のディスクドライブからなるディスクアレイと、チャネルＤ１３上に接続した４個のディスクドライブからなるディスクアレイ、からなる。
チャネルＤ１０を例にとると、ディスクドライブＤＫ０、ＤＫ４、ＤＫ８、ＤＫ１２が、チャネルＤ１０上に接続されている。このように、多数のドライブを一つのチャネル上に接続してディスクドライブにアクセスする方法としては、ファイバチャネル・アービトレイテッド・ループ（ＦＣ−ＡＬ）がある。また、Ｒ０、Ｒ１、Ｒ２、Ｒ３はディスクドライブの論理グループを示す。
【００４１】
ディスクコントローラＤＫＣは、チャネルＤ００を介してスイッチＳＷのポートＰ０と接続する。また、ディスクアレイＤＡ１のチャネルＤ１０はスイッチＳＷのポートＰ１と、チャネルＤ１１はスイッチＳＷのポートＰ２と、チャネルＤ１２はスイッチＳＷのポートＰ３と、チャネルＤ１３はスイッチＳＷのポートＰ４とそれぞれ接続する。さらに保守端末ＳＶＰはスイッチＳＷのポートＮＰと接続する。ディスクコントローラ側チャネルＤ００上の媒体速度は、ディスクアレイ側チャネルＤ１０、Ｄ１１、Ｄ１２、Ｄ１３上のデータ転送がチャネルＤ００に集約された場合にも余裕がある速度に設定するのがよい。
【００４２】
次に、図８及び図９を参照して本実施形態におけるスイッチの動作の特徴について説明する。
スイッチＳＷは、設定により、内部のクロスバスイッチＸＳＷのみにより切り換える動作モード(以下、モードＡとする)と、クロスバスイッチＸＳＷと共有メモリＳＭを併用した切り換えの動作モード(以下、モードＢとする)を、フレームの入力ポート毎に選択できる。図８及び図９は、共にディスクコントローラＤＫＣと接続したポートＰ０と、ディスクアレイＤＡ１と接続したポートＰ２間のフレーム転送を示している。
図８は、ディスクアレイＤＡ１からディスクコントローラＤＫＣへのフレーム転送であり、主にコントローラＤＫＣの読み出し動作時に相当する。一方、図９は、ディスクコントローラＤＫＣからディスクアレイＤＡ１へのフレーム転送であり、主にディスクコントローラＤＫＣの書き込み動作時に相当する。
【００４３】
ここで、ポートＰ０には、Ｐ０に入力するフレームに関してクロスバスイッチＸＳＷと共有メモリＳＭを併用した切り換えの動作モード(モードＢ)を設定し、ポートＰ１、Ｐ２、Ｐ３、Ｐ４には入力フレームに関して、クロスバスイッチＸＳＷのみにより切り換える動作モード(モードＡ)を設定している。なお、この動作モード設定は、保守端末ＳＶＰから設定、変更が可能である。
その結果、図８の矢印８０１に示すように、ディスクアレイＤＡ１からディスクコントローラＤＫＣへのフレーム転送はクロスバスイッチＸＳＷのみを経由する。それに対してディスクコントローラＤＫＣからディスクアレイＤＡ１へのフレーム転送では、スイッチＳＷは図９の矢印９０１に示すように、クロスバスイッチＸＳＷのみを経由するフレーム転送と、矢印９０２、９０３に示すような共有メモリＳＭとクロスバスイッチＸＳＷを経由するフレーム転送を行う。
【００４４】
詳細については後述するが、ディスクコントローラＤＫＣからディスクアレイＤＡ１への転送において、ポートＰ０は、先ず、クロスバスイッチＸＳＷのみを経由するフレーム転送(矢印９０１)を実行する。ディスクコントローラＤＫＣとスイッチＳＷのポートＰ０間の実行スループットは、ポートＰ１、Ｐ２、Ｐ３、Ｐ４とディスクアレイＤＡ１間の実行スループットより高いので、データ転送長が長い場合にはポートＰ２内のバッファメモリはオーバーフローすることになる。
【００４５】
ポートＰ２内バッファメモリの空き容量が所定の値以下になると、ポートＰ０はフレーム転送先を共有メモリＳＭに変更する(矢印９０２)。共有メモリＳＭにフレームが書き込まれると、矢印９０２のフレーム転送とは独立して、共有メモリＳＭからポートＰ２へのフレーム転送(矢印９０３)を開始する。矢印９０２のフレーム転送が終了後、図２０の矢印２３０１に示すように、次にポートＰ０からＰ３へのフレーム転送が開始されたとする。このとき、共有メモリＳＭからポートＰ２へのフレーム転送(矢印２３０２)と、ポートＰ０からポートＰ３へのフレーム転送は、出力ポートが競合しないので並行して実行できる。
【００４６】
つまり、本実施形態のスイッチでは、スイッチ出力ポートのバッファメモリがオーバーフローしそうになった場合に、転送すべきフレームを一旦共有メモリＳＭに書き込み、出力ポートバッファに空き容量ができた時点で、フレームを共有メモリＳＭから出力ポートへ転送し直す。この動作により、スイッチの出力ポート先が競合しないフレーム転送に関しては並行実行できるので、出力ポートバッファが溢れる影響を軽減でき、ディスクコントローラＤＫＣからディスクアレイＤＡ１への転送スループットが向上することになる。
これにより本実施形態のスイッチを適用したディスク装置では、書き込み時のスループットが向上する効果がある。
【００４７】
図１０は、動作モードＡに設定されたポートにおけるフレーム転送フローを示す。
まず、入力ポートのヘッダ解析部３０４は、これから転送するフレームのヘッダを解析して、送信先アドレス情報(ファイバチャネルの場合は送信先ポートＩＤ)をスイッチコントローラＳＣへ送信する（１００１）。スイッチコントローラＳＣは、受信した送信先アドレス情報に従い、クロスバスイッチＸＳＷを切り換える（１００２）。出力先スイッチポートに競合が発生した場合は調停を行う。そして、スイッチコントローラＳＣは、クロスバスイッチＸＳＷの切り換え完了を入力ポートへ送信する。次に入力ポートは出力ポートへフレームを転送する（１００３）。そして入力ポートは、転送完了をスイッチコントローラＳＣへ送信する（１００４）。
【００４８】
図１１は、動作モードＢに設定されたポートにおけるフレーム転送フローを示す。
まず、入力ポートのヘッダ解析部３０４は、これから転送するフレームのヘッダを解析して、送信先アドレス情報(ファイバチャネルの場合は送信先ポートＩＤ)をスイッチコントローラＳＣへ送信する（１１０１）。スイッチコントローラＳＣは、受信した送信先アドレス情報に従い、クロスバスイッチＸＳＷを切り換える。出力先スイッチポートに競合が発生した場合は調停を行う。そして、スイッチコントローラＳＣはクロスバスイッチＸＳＷの切り換え完了を入力ポートへ送信する（１１０２）。次に、入力ポートはフレームの転送先である出力ポートのバッファメモリＢＭの空き容量を調べる（１１０３）。空き容量が所定の値より大き場合はステップ１１０４へ移行し、所定の値以下の場合はステップ１１０６へ進む。
【００４９】
バッファメモリＢＭの空き容量が所定の値より大き場合には、入力ポートはフレームを出力ポートへ転送する（１１０４）。そして、入力ポートは転送完了をスイッチコントローラＳＣへ送信する（１１０５）。
一方、その空き容量が所定の値以下の場合には、入力ポートはフレーム転送先を共有メモリＳＭに変更し（１１０６）、入力ポートと共有メモリとを接続するための接続要求をスイッチコントローラＳＣへ送信する。そして、スイッチコントローラＳＣは、クロスバスイッチＸＳＷを切り換えて、入力ポートと共有メモリＳＭを接続する。その後、スイッチコントローラＳＣは切り換え完了を入力ポートへ送信する（１１０７）。その後、入力ポートは、フレームを共有メモリＳＭへ転送し（１１０８）、その転送が終わると、転送完了をスイッチコントローラＳＣへ送信する（１１０９）。
【００５０】
図１１に示す動作モードＢの処理動作により、共有メモリＳＭに書き込まれたフレームは、図１２のフローにより、出力ポートへ転送される。
すなわち、共有メモリＳＭの転送制御部４０２は、これから転送するフレームのヘッダを解析して、送信先アドレス情報(ファイバチャネルの場合は送信先ポートＩＤ)をスイッチコントローラＳＣへ送信する（１２０１）。スイッチコントローラＳＣは、受信した送信先アドレス情報に従い、クロスバスイッチＸＳＷを切り換える。出力先スイッチポートに競合が発生した場合は調停を行う。そして、スイッチコントローラＳＣはクロスバスイッチＸＳＷの切り換え完了を共有メモリＳＭへ通知する（１２０２）。次に、共有メモリＳＭは出力ポートへフレームを転送する（１２０３）。フレームの転送が終わると、最後に共有メモリＳＭは転送完了をスイッチコントローラＳＣへ送信する（１２０４）。なお、図１１と図１２のフローは出力ポートの競合が無い限り、並行して実行することが可能である。
【００５１】
図１１のフローでは、エクスチェンジに含まれる全てのフレームが動作モードＢの対象になっている。図２２に示すように、コマンドやレスポンスのシーケンスは短いので、ポートのバッファメモリをオーバーフローさせる主たる原因にはならないと考えられる。
そこで他の例として、図１３のフローに、動作モードＢの対象をデータ転送シーケンスに含まれるフレームに絞り、共有メモリを効率的に使用する例を示す。
【００５２】
図１３のステップ１３０１において、入力ポートのヘッダ解析部３０４は、転送するフレームがデータ転送シーケンスに含まれるか、及び出力ポートのバッファメモリとの関係を検査する。
図１８に、データ転送シーケンスに含まれるフレームの構造を示す。転送するフレームがデータ転送シーケンスに含まれるかどうかは、フィールド１８０１を検査することにより容易に知ることができる。図１３の他のステップは、図１１と同じである。
【００５３】
上記の図１１および図１３のフローは、動作モードＢをフレームの入力ポート毎に設定する場合の例である。図１４に、更に他の例による動作フローを示す。
図１４には、ポート毎にフレームの送信元アドレス情報を検査することにより、動作モード決定するフローを示す。この例では、予めスイッチの各ポートに比較すべき送信元アドレス情報を登録しておく。即ち、ディスクコントローラ内ディスクアダプタのポートＩＤを、保守端末ＳＶＰからスイッチに入力し、各ポートに登録しておく。
ステップ１４０１において、これから転送するフレームの送信元情報と、登録してあるディスクアダプタのポートＩＤを比較する。両者が一致し且つ出力先ポートバッファの空き容量が所定の値以下である場合は、共有メモリＳＭへフレームを転送する。なお、図１４の他のステップは、図１１と同じである。
このようにフレーム毎の送信元情報で動作モードＢを制御することにより、スイッチのどのポートをディスクコントローラＤＫＣと接続しなければならないかを知っておく必要がなくなり、スイッチ接続トポロジの自由度が増す。さらに多段にスイッチを接続した場合に、全スイッチにディスクコントローラのポートＩＤを通知するだけでよいので、スイッチ間の接続関係を調べなければならない図１１、図１３の例に比べて、管理が容易である。
図１７に、コマンド転送フレームの構造を示す。転送するフレームの送信元情報は、例えばフィールド１７０１を検査することにより容易に知ることができる。
【００５４】
図１５に更に他の例について示す。この例は、図１４と同様にディスクコントローラのポートＩＤ入力を必要としない動作モードＢの制御フローチャートの例である。
ステップ１５０１において、転送フレームのヘッダを調べることにより、該フレームが書き込みエクスチェンジに含まれるか、さらにはデータ転送シーケンスに含まれるかをチェックする。転送するフレームが書き込みエクスチェンジのデータ転送シーケンスに含まれるフレームであり、且つ出力先ポートのバッファ空き容量が所定の値以下の場合に、転送フレームは共有メモリＳＭへ転送される。図１５のその他のステップは、図１１と同じである。
【００５５】
ステップ１５０１の判定をするためには、各ポート毎に、図１９に示すようなエクスチェンジＩＤ１９０１を登録したテーブルが必要となる。
図１６に、図１９のテーブルの作成フローを示す。
まず、転送するフレームがコマンドフレームＦＣＰ＿ＣＭＮＤかどうかを判定する（１６０１）。これは、図１７のフィード１７０２を検査することで容易に判断できる。検査の結果、コマンドフレームである場合は、書き込みコマンドであるかを検査する（１６０２）。これは、図１７のフィード１７０４を検査することで容易に判断できる。判断の結果、書き込みコマンドである場合は、ステップ１６０３へ進む。図１７におけるフィールド１７０３からエクスチェンジＩＤ(ＯＸ＿ＩＤ)を抽出し、図１９のテーブルに登録する（１６０３）。
【００５６】
一方、ステップ１６０１において転送フレームがコマンドフレームではなかった場合は、エクスチェンジ終了条件を検査する（１６０４）。エクスチェンジが終了するかどうかは、フレーム内のＦ＿ＣＴＬフィールド例えば図１８のフィールド１８０２を検査することで、容易に知ることができる。最後に、エクスチェンジが終了した場合には、図１９のテーブルから終了したエクスチェンジに関連するエントリを削除する（１６０５）。
【００５７】
以上説明したように、本実施形態のスイッチによれば共有メモリを書き込みフレームのバッファメモリとして利用するため、読み出しフレームと書き込みフレーム両対応の共有メモリの場合に比べて、少ない容量の共有メモリでも効果的にバッファ効果を持たせることができる。また、ポート毎に大容量のバッファメモリを持たせる場合に比べても、低コスト化できる。
【００５８】
以上述べた例では、ディスク装置のディスクコントローラとディスクアレイを接続するスイッチについて、データ転送方式としてファイバチャネルを例に説明した。本発明によるスイッチはこれに限定されることなく、ファイバチャネル以外のディスク装置向けデータ転送方式、例えばＳＡＳ（Ｓｅｒｉａｌ  Ａｔｔａｃｈｅｄ  ＳＣＳＩ）のエキスパンダにも適用できる。
【００５９】
また、上記実施形態によれば、バッファメモリの空き容量に従って、第１のモード又は第２のモードを選択するように、クロスバスイッチにより経路変更を行っているが、本発明はこれに限定されない。即ち、ディスクコントローラとディスクアレイ間のスループットの向上に寄与するものであれば、バッファメモリの空き容量以外の要因に従って、上記第１のモードと第２のモードを切り替えて経路を変更し、変更された経路でデータ転送を行うことができる。この場合、例えば、要因を監視又は解析する制御部からのコマンドに従って第１のモード又は第２のモードを選択する。
【図面の簡単な説明】
【００６０】
【図１】本発明の一実施形態におけるスイッチを示す図である。
【図２】クロスバスイッチＸＳＷの構成を示す図である。
【図３】プロトコルＩＣの構成を示す図である。
【図４】共有メモリＳＭの構成を示す図である。
【図５】一実施形態によるスイッチを適用したディスク装置を示す図である。
【図６】チャネルアダプタＣＨＡの構成を示す図である。
【図７】ディスクアダプタＤＫＡの構成を示す図である。
【図８】一実施形態におけるスイッチの動作を示す図である。
【図９】一実施形態のスイッチの動作を示す図である。
【図１０】一実施形態のスイッチの制御フローチャートを示す図である。
【図１１】一実施形態のスイッチの制御フローチャートを示す図である。
【図１２】一実施形態のスイッチの制御フローチャートを示す図である。
【図１３】他の例によるスイッチの制御フローチャートを示す図である。
【図１４】更に他の例によるスイッチの制御フローチャートを示す図である。
【図１５】更に他の例によるスイッチの制御フローチャートを示す図である。
【図１６】一実施形態のスイッチの制御フローチャートを示す図である。
【図１７】ファイバチャネルにおける転送フレームの構造を示す図である。
【図１８】ファイバチャネルにおける転送フレームの構造を示す図である。
【図１９】エクスチェンジ管理テーブルを示す図である。
【図２０】一実施形態におけるスイッチの動作を示す図である。
【図２１】ファイバチャネルのエクスチェンジ（読み出し）を示す図である。
【図２２】ファイバチャネルのエクスチェンジ（書き込み）を示す図である。
【符号の説明】
【００６１】
ＳＷ：スイッチ                        ＤＫＣ：ディスクコントローラ
ＣＨＡ：チャネルアダプタ              ＣＭ：キャッシュメモリ
ＤＫＡ：ディスクアダプタ              ＤＡ、ＤＡ１：ディスクアレイ
ＤＫ０〜ＤＫ１６：ディスクドライブ    Ｓ０〜Ｓ５：セレクタ
Ｃ００〜Ｃ０３、Ｄ００〜Ｄ０３、Ｄ１０〜Ｄ１３：チャネル
Ｐ_ＩＣ：プロトコルＩＣ                ＮＰ：ネットワークポート
Ｐ０〜Ｐ４：スイッチポート
Ｐ_０〜Ｐ_５、ＳＥＬＥＣＴ：クロスバスイッチポート
ＸＳＷ：クロスバスイッチ              ＳＣ：スイッチコントローラ
ＳＭ：共有メモリ                      ＳＰ：シリアルパラレル変換装置
ＰＳ：パラレルシリアル変換装置      ＢＭ、３０２、３０３：バッファメモリ
Ｔｘ：送信器        Ｒｘ：受信器        ＮＷ：相互結合網
Ｒ０〜Ｒ３：論理グループ              ＳＶＰ：保守端末
６１：ホストチャネル・インターフェイス
７２：ディスクチャネル・インターフェイス
６２、７１：キャッシュメモリ・インターフェイス
６３、７３：ネットワーク・インターフェイス
６４、７４：プロセッサ                  ６６、７６：プロセッサ周辺制御部
６５、７５：ローカルメモリ              ３０１：プロトコル処理部
３０４、４０２：転送制御部              ３０５：ヘッダ解析部
４０１：メモリ部                        ４０３：フレーム分析部
【図１】
2005267502.tif 000003
【図２】
2005267502.tif 000004
【図３】
2005267502.tif 000005
【図４】
2005267502.tif 000006
【図５】
2005267502.tif 000007
【図６】
2005267502.tif 000008
【図７】
2005267502.tif 000009
【図８】
2005267502.tif 000010
【図９】
2005267502.tif 000011
【図１０】
2005267502.tif 000012
【図１１】
2005267502.tif 000013
【図１２】
2005267502.tif 000014
【図１３】
2005267502.tif 000015
【図１４】
2005267502.tif 000016
【図１５】
2005267502.tif 000017
【図１６】
2005267502.tif 000018
【図１７】
2005267502.tif 000019
【図１８】
2005267502.tif 000020
【図１９】
2005267502.tif 000021
【図２０】
2005267502.tif 000022
【図２１】
2005267502.tif 000023
【図２２】
2005267502.tif 000024