(57)【特許請求の範囲】
【請求項１】
ホストサーバからの要求に応じて、記憶デバイスが提供する記憶領域にデータを読み書きするストレージ装置において、
前記記憶デバイスへの前記データの入出力を制御する第１及び第２のコントローラを有し、
前記第１及び第２のコントローラは、
前記ホストサーバとの間で前記データを送受するホスト制御部と、
前記記憶デバイスとの間で前記データを送受するドライブ制御部と、
前記ホスト制御部及び前記ドライブ制御部間で送受される前記データを一時的に保持するキャッシュメモリと、
前記ホスト制御部、前記キャッシュメモリ及び前記ドライブ制御部間において前記データの転送元及び転送先を切り替えるスイッチと、
前記ホスト制御部、前記ドライブ制御部及び前記スイッチを制御する制御部と
を備え、
前記ホスト制御部は、
前記ホストサーバからの前記データ及び当該データのライトコマンドを受信すると、当該データ用の第１のエラーチェックコードを生成し、生成した前記第１のエラーチェックコードを前記データに付加して自系の前記スイッチに送信し、
前記スイッチは、
前記ホスト制御部から送信される前記データ及び前記第１のエラーチェックコードを自系の前記キャッシュメモリに格納すると共に、当該データ及び当該第１のエラーチェックコードを、他系の前記第２又は第１のコントローラに転送することにより、当該他系の第２又は第１のコントローラ内の前記キャッシュメモリに格納させ、
自系の前記キャッシュメモリに格納した前記データ及び前記第１のエラーチェックコードを読み出し、読み出した第１のエラーチェックコードを利用した前記データに対するエラーチェック処理を実行し、
前記エラーチェック処理においてエラーを検出しなかった場合には、当該データ及び当該第１のエラーチェックコードからなるデータ群のパリティを生成すると共に、当該パリティ用の第２のエラーチェックコードを生成し、生成した前記パリティ及び前記第２のエラーチェックコードを自系の前記キャッシュメモリに格納し、
前記制御部は、
自系の前記キャッシュメモリに格納された前記パリティ及び前記第２のエラーチェックコードを読み出して他系の前記第２又は第１のコントローラに転送することにより、当該パリティ及び当該第２のエラーチェックコードを他系の前記第２又は第１のコントローラ内の前記キャッシュメモリに格納させ、
前記スイッチは、
自系の前記キャッシュメモリから前記データ及び前記第１のエラーチェックコードと、前記パリティ及び前記第２のエラーチェックコードとを読み出し、読み出した第１及び第２のエラーチェックコードを利用して前記データ及び前記パリティに対するエラーチェック処理を実行し、
当該エラーチェック処理によりエラーを検出しなかった場合には、自系の前記キャッシュメモリから前記データ及び前記第１のエラーチェックコードと、前記パリティ及び前記第２のエラーチェックコードとを読み出して前記ドライブ制御部に転送し、
前記ドライブ制御部は、
受信した前記データ及び前記第１のエラーチェックコードと、前記パリティ及び前記第２のエラーチェックコードとを前記記憶デバイスに格納する
ことを特徴とするストレージ装置。
【請求項２】
前記ドライブ制御部は、
自系の前記第１又は第２のコントローラが前記ホストサーバからのリードコマンドを受信すると、当該リードコマンドにおいて指定されたデータ及び当該データの第１のエラーチェックコードを前記記憶デバイスから読み出し、読み出した前記データ及び前記第１のエラーチェックコードを自系の前記スイッチに送信し、
前記スイッチは、
前記ドライブ制御部から送信される前記データ及び前記第１のエラーチェックコードを自系の前記キャッシュメモリに格納すると共に、当該データ及び当該第１のエラーチェックコードを、他系の前記第２又は第１のコントローラに転送することにより、他系の前記第２又は第１のコントローラ内の前記キャッシュメモリに格納させ、
前記ホスト制御部は、
自系の前記キャッシュメモリから前記データ及び前記第１のエラーチェックコードを読み出し、読み出した前記第１のエラーチェックコードを用いた前記データに対するエラーチェック処理を実行し、
前記エラーチェック処理においてエラーを検出しなかった場合には、前記データを前記ホストサーバに送信する
ことを特徴とする請求項１に記載のストレージ装置。
【請求項３】
前記スイッチは、ＰＣＩｅ（peripheral component interconnect Express）スイッチである
ことを特徴とする請求項１に記載のストレージ装置。
【請求項４】
ホストサーバからの要求に応じて、記憶デバイスが提供する記憶領域にデータを読み書きするストレージ装置内のデータ転送方法において、
前記ストレージ装置は、
前記記憶デバイスへの前記データの入出力を制御する第１及び第２のコントローラを有し、
前記第１及び第２のコントローラは、
前記ホストサーバとの間で前記データを送受するホスト制御部と、
前記記憶デバイスとの間で前記データを送受するドライブ制御部と、
前記ホスト制御部及び前記ドライブ制御部間で送受される前記データを一時的に保持するキャッシュメモリと、
前記ホスト制御部、前記キャッシュメモリ及び前記ドライブ制御部間において前記データの転送元及び転送先を切り替えるスイッチと、
前記ホスト制御部、前記ドライブ制御部及び前記スイッチを制御する制御部とを有し、
前記ホスト制御部が、前記ホストサーバからの前記データ及び当該データのライトコマンドを受信すると、当該データ用の第１のエラーチェックコードを生成し、生成した前記第１のエラーチェックコードを前記データに付加して自系の前記スイッチに送信する第１のステップと、
前記スイッチが、前記ホスト制御部から送信される前記データ及び前記第１のエラーチェックコードを自系の前記キャッシュメモリに格納すると共に、当該データ及び当該第１のエラーチェックコードを、他系の前記第２又は第１のコントローラに転送することにより、当該他系の第２又は第１のコントローラ内の前記キャッシュメモリに格納させ、自系の前記キャッシュメモリに格納した前記データ及び前記第１のエラーチェックコードを読み出し、読み出した第１のエラーチェックコードを利用した前記データに対するエラーチェック処理を実行し、前記エラーチェック処理においてエラーを検出しなかった場合には、当該データ及び当該第１のエラーチェックコードからなるデータ群のパリティを生成すると共に、当該パリティ用の第２のエラーチェックコードを生成し、生成した前記パリティ及び前記第２のエラーチェックコードを自系の前記キャッシュメモリに格納する第２のステップと、
前記制御部が、自系の前記キャッシュメモリに格納された前記パリティ及び前記第２のエラーチェックコードを読み出して他系の前記第２又は第１のコントローラに転送することにより、当該パリティ及び当該第２のエラーチェックコードを他系の前記第２又は第１のコントローラ内の前記キャッシュメモリに格納させる第３のステップと、
前記スイッチが、自系の前記キャッシュメモリから前記データ及び前記第１のエラーチェックコードと、前記パリティ及び前記第２のエラーチェックコードとを読み出し、読み出した第１及び第２のエラーチェックコードを利用して前記データ及び前記パリティに対するエラーチェック処理を実行し、当該エラーチェック処理によりエラーを検出しなかった場合には、自系の前記キャッシュメモリから前記データ及び前記第１のエラーチェックコードと、前記パリティ及び前記第２のエラーチェックコードとを読み出して前記ドライブ制御部に転送する第４のステップと、
前記ドライブ制御部が、受信した前記データ及び前記第１のエラーチェックコードと、前記パリティ及び前記第２のエラーチェックコードとを前記記憶デバイスに格納する第５のステップと
を備えることを特徴とするデータ転送方法。
【請求項５】
前記ドライブ制御部が、自系の前記第１又は第２のコントローラが前記ホストサーバからのリードコマンドを受信すると、当該リードコマンドにおいて指定されたデータ及び当該データの第１のエラーチェックコードを前記記憶デバイスから読み出し、読み出した前記データ及び前記第１のエラーチェックコードを自系の前記スイッチに送信する第６のステップと、
前記スイッチが、前記ドライブ制御部から送信される前記データ及び前記第１のエラーチェックコードを自系の前記キャッシュメモリに格納すると共に、当該データ及び当該第１のエラーチェックコードを、他系の前記第２又は第１のコントローラに転送することにより、他系の前記第２又は第１のコントローラ内の前記キャッシュメモリに格納させる第７のステップと、
前記ホスト制御部が、自系の前記キャッシュメモリから前記データ及び前記第１のエラーチェックコードを読み出し、読み出した前記第１のエラーチェックコードを用いた前記データに対するエラーチェック処理を実行し、前記エラーチェック処理においてエラーを検出しなかった場合には、前記データを前記ホストサーバに送信する第８のステップと
を備えることを特徴とする請求項４に記載のデータ転送方法。
【請求項６】
前記スイッチは、ＰＣＩｅ（peripheral component interconnect Express）スイッチである
ことを特徴とする請求項４に記載のデータ転送方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はストレージ装置及びデータ転送方法に関し、ホストサーバから与えられたライトデータにエラーチェックコードを付加して装置内におけるデータ転送を行うストレージ装置に適用して好適なものである。
【背景技術】
【０００２】
従来、この種のストレージ装置においては、ホストサーバから与えられたライトデータに対してＬＡ／ＬＲＣなどのエラーチェックコードを付加し、このエラーチェックコードを用いてライトデータの正当性を適宜チェックすることにより、ストレージ装置内におけるデータ転送を信頼性高く行い得るようになされている。
【０００３】
このためこの種のストレージ装置には、かかるエラーチェックコードをライトデータに付加し、このエラーチェックコードを用いたエラーチェックを行う機能が搭載された専用のデータ制御用ＬＳＩ（Large Scale Integration）が実装されており、このデータ制御用ＬＳＩにおいてエラーチェックコードの付加処理や当該エラーチェックコードを用いたエラーチェック処理を行っている。
【０００４】
また近年では、耐障害性の向上という観点から、ストレージ装置のコントローラを二重化することも提案されている（例えば、特開２００８−０９７５２７号公報）。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、近年、ストレージ装置の低価格化が進んでいる。このような状況のもと、かかるデータ制御用ＬＳＩは特注品であるためその製造コストが高いという問題がある。この問題は、上述のようなコントローラを二重化したストレージ装置にとってより深刻となる。そこで、かかるデータ制御用ＬＳＩに代えて汎用のスイッチを用いながら、信頼性高くストレージ装置内でデータ転送を行い得るデータ転送技術が望まれている。
【０００６】
本発明は以上の点を考慮してなされたもので、コストを抑えながら信頼性高くデータ転送を行い得るストレージ装置及びデータ転送方法を提案しようとするものである。
【課題を解決するための手段】
【０００７】
かかる課題を解決するため本発明は、ホストサーバからの要求に応じて、記憶デバイスが提供する記憶領域にデータを読み書きするストレージ装置において、前記記憶デバイスへの前記データの入出力を制御する第１及び第２のコントローラを有し、前記第１及び第２のコントローラは、前記ホストサーバとの間で前記データを送受するホスト制御部と、前記記憶デバイスとの間で前記データを送受するドライブ制御部と、前記ホスト制御部及び前記ドライブ制御部間で送受される前記データを一時的に保持するキャッシュメモリと、前記ホスト制御部、前記キャッシュメモリ及び前記ドライブ制御部間において前記データの転送元及び転送先を切り替えるスイッチと、前記ホスト制御部、前記ドライブ制御部及び前記スイッチを制御する制御部とを備え、前記ホスト制御部は、前記ホストサーバからの前記データ及び当該データのライトコマンドを受信すると、当該データ用の第１のエラーチェックコードを生成すると共に、生成した前記第１のエラーチェックコードを前記データに付加して自系の前記スイッチに送信し、前記スイッチは、前記ホスト制御部から送信される前記データ及び前記第１のエラーチェックコードを自系の前記キャッシュメモリに格納すると共に、当該データ及び当該第１のエラーチェックコードを、他系の前記第２又は第１のコントローラに転送することにより、当該他系の第２又は第１のコントローラ内の前記キャッシュメモリに格納させ、自系の前記キャッシュメモリに格納した前記データ及び前記第１のエラーチェックコードを読み出し、読み出した第１のエラーチェックコードを利用した前記データに対するエラーチェック処理を実行し、前記エラーチェック処理においてエラーを検出しなかった場合には、当該データ及び当該第１のエラーチェックコードからなるデータ群のパリティを生成すると共に、当該パリティ用の第２のエラーチェックコードを生成し、生成した前記パリティ及び前記第２のエラーチェックコードを自系の前記キャッシュメモリに格納し、前記制御部は、自系の前記キャッシュメモリに格納された前記パリティ及び前記第２のエラーチェックコードを読み出して他系の前記第２又は第１のコントローラに転送することにより、当該パリティ及び当該第２のエラーチェックコードを他系の前記第２又は第１のコントローラ内の前記キャッシュメモリに格納させ、前記スイッチは、自系の前記キャッシュメモリから前記データ及び前記第１のエラーチェックコードと、前記パリティ及び前記第２のエラーチェックコードとを読み出し、読み出した第１及び第２のエラーチェックコードを利用して前記データ及び前記パリティに対するエラーチェック処理を実行し、当該エラーチェック処理によりエラーを検出しなかった場合には、自系の前記キャッシュメモリから前記データ及び前記第１のエラーチェックコードと、前記パリティ及び前記第２のエラーチェックコードとを読み出して前記ドライブ制御部に転送し、前記ドライブ制御部は、受信した前記データ及び前記第１のエラーチェックコードと、前記パリティ及び前記第２のエラーチェックコードとを前記記憶デバイスに格納することを特徴とする。
【０００８】
また本発明においては、ホストサーバからの要求に応じて、記憶デバイスが提供する記憶領域にデータを読み書きするストレージ装置内のデータ転送方法において、前記ストレージ装置は、前記記憶デバイスへの前記データの入出力を制御する第１及び第２のコントローラを有し、前記第１及び第２のコントローラは、前記ホストサーバとの間で前記データを送受するホスト制御部と、前記記憶デバイスとの間で前記データを送受するドライブ制御部と、前記ホスト制御部及び前記ドライブ制御部間で送受される前記データを一時的に保持するキャッシュメモリと、前記ホスト制御部、前記キャッシュメモリ及び前記ドライブ制御部間において前記データの転送元及び転送先を切り替えるスイッチと、前記ホスト制御部、前記ドライブ制御部及び前記スイッチを制御する制御部とを有し、前記ホスト制御部が、前記ホストサーバからの前記データ及び当該データのライトコマンドを受信すると、当該データ用の第１のエラーチェックコードを生成し、生成した前記第１のエラーチェックコードを前記データに付加して自系の前記スイッチに送信する第１のステップと、前記スイッチが、前記ホスト制御部から送信される前記データ及び前記第１のエラーチェックコードを自系の前記キャッシュメモリに格納すると共に、当該データ及び当該第１のエラーチェックコードを、他系の前記第２又は第１のコントローラに転送することにより、当該他系の第２又は第１のコントローラ内の前記キャッシュメモリに格納させ、自系の前記キャッシュメモリに格納した前記データ及び前記第１のエラーチェックコードを読み出し、読み出した第１のエラーチェックコードを利用した前記データに対するエラーチェック処理を実行し、前記エラーチェック処理においてエラーを検出しなかった場合には、当該データ及び当該第１のエラーチェックコードからなるデータ群のパリティを生成すると共に、当該パリティ用の第２のエラーチェックコードを生成し、生成した前記パリティ及び前記第２のエラーチェックコードを自系の前記キャッシュメモリに格納する第２のステップと、前記制御部が、自系の前記キャッシュメモリに格納された前記パリティ及び前記第２のエラーチェックコードを読み出して他系の前記第２又は第１のコントローラに転送することにより、当該パリティ及び当該第２のエラーチェックコードを他系の前記第２又は第１のコントローラ内の前記キャッシュメモリに格納させる第３のステップと、前記スイッチが、自系の前記キャッシュメモリから前記データ及び前記第１のエラーチェックコードと、前記パリティ及び前記第２のエラーチェックコードとを読み出し、読み出した第１及び第２のエラーチェックコードを利用して前記データ及び前記パリティに対するエラーチェック処理を実行し、当該エラーチェック処理によりエラーを検出しなかった場合には、自系の前記キャッシュメモリから前記データ及び前記第１のエラーチェックコードと、前記パリティ及び前記第２のエラーチェックコードとを読み出して前記ドライブ制御部に転送する第４のステップと、前記ドライブ制御部が、受信した前記データ及び前記第１のエラーチェックコードと、前記パリティ及び前記第２のエラーチェックコードとを前記記憶デバイスに格納する第５のステップとを備えることを特徴とする。
【発明の効果】
【０００９】
本発明によれば、スイッチとして汎用のものを適用しながら、必要なエラーチェック処理を適宜行うことができ、かくしてコストを抑えながら信頼性高く装置内でデータ転送を行い得るストレージ装置及びデータ転送方法を実現できる。
【図面の簡単な説明】
【００１０】
【図１】図１は、第１の実施の形態による計算機システムの全体構成を示すブロック図である。
【図２】図２は、従来の計算機システムのライト処理時におけるデータの流れを示すブロック図である。
【図３】図３は、従来の計算機システムのリード処理時におけるデータの流れを示すブロック図である。
【図４】図４は、第１の実施の形態による計算機システムのライト処理時におけるデータの流れを示すブロック図である。
【図５】図５は、第１の実施の形態による計算機システムのライト処理時における処理の流れを示すフローチャートである。
【図６】図６（Ａ）は、ＤＩＦの構成を示す図であり、図６（Ｂ）は、ＬＡ／ＬＲＣの構成を示す図である。
【図７】図７は、第１の実施の形態による計算機システムのリード処理時におけるデータの流れを示すブロック図である。
【図８】図８は、第１の実施の形態による計算機システムのリード処理時における処理の流れを示すフローチャートである。
【図９】図９は、第１のエラー処理の処理手順を示すフローチャートである。
【図１０】図１０は、第１のエラー処理の処理手順を示すフローチャートである。
【図１１】図１１は、第２の実施の形態による計算機システムのライト処理時におけるデータの流れを示すブロック図である。
【図１２】図１２は、第２の実施の形態による計算機システムのライト処理時における処理の流れを示すフローチャートである。
【図１３】図１３は、第２の実施の形態による計算機システムのリード処理時におけるデータの流れを示すブロック図である。
【図１４】図１４は、第２の実施の形態による計算機システムのリード処理時における処理の流れを示すフローチャートである。
【図１５】図１５は、第３の実施の形態による計算機システムのライト処理時におけるデータの流れを示すブロック図である。
【図１６】図１６は、第３の実施の形態による計算機システムのライト処理時における処理の流れを示すフローチャートである。
【図１７】図１７は、第３の実施の形態による計算機システムのリード処理時におけるデータの流れを示すブロック図である。
【図１８】図１８は、第３の実施の形態による計算機システムのリード処理時における処理の流れを示すフローチャートである。
【図１９】図１９は、第４の実施の形態による計算機システムのライト処理時におけるデータの流れを示すブロック図である。
【図２０】図２０は、第４の実施の形態による計算機システムのライト処理時における処理の流れを示すフローチャートである。
【図２１】図２１は、第４の実施の形態による計算機システムのリード処理時におけるデータの流れを示すブロック図である。
【図２２】図２２は、第４の実施の形態による計算機システムのリード処理時における処理の流れを示すフローチャートである。
【図２３】図２３は、第５の実施の形態による計算機システムのライト処理時におけるデータの流れを示すブロック図である。
【図２４】図２４は、第５の実施の形態による計算機システムのライト処理時における処理の流れを示すフローチャートである。
【図２５】図２５は、第６の実施の形態による計算機システムのライト処理時におけるデータの流れを示すブロック図である。
【図２６】図２６は、第６の実施の形態による計算機システムのライト処理時における処理の流れを示すフローチャートである。
【図２７】図２７は、第７の実施の形態による計算機システムのライト処理時におけるデータの流れを示すブロック図である。
【図２８】図２８は、第７の実施の形態による計算機システムのライト処理時における処理の流れを示すフローチャートである。
【図２９】図２９は、第８の実施の形態による計算機システムのライト処理時におけるデータの流れを示すブロック図である。
【図３０】図３０は、第８の実施の形態による計算機システムのライト処理時における処理の流れを示すフローチャートである。
【発明を実施するための形態】
【００１１】
以下図面について、本発明の一実施の形態を詳述する。
【００１２】
（１）第１の実施の形態
（１−１）本実施の形態による計算機システムの構成
図１において、１は全体として本実施の形態による計算機システムを示す。この計算機システム１は、ネットワーク２を介して接続された１又は複数のホストサーバ３と、ストレージ装置４とを備えて構成される。
【００１３】
ネットワーク２は、例えばＳＡＮ（Storage Area Network）、ＬＡＮ（Local Area Network）、インターネット、公衆回線又は専用回線などから構成される。このネットワーク２を介したホストサーバ３及びストレージ装置４間の通信は、例えばネットワーク２がＳＡＮである場合にはファイバーチャネルプロトコルに従って行われ、ネットワーク２がＬＡＮである場合にはＴＣＰ／ＩＰ（Transmission Control Protocol/Internet Protocol）プロトコルに従って行われる。
【００１４】
ホストサーバ３は、ＣＰＵ（Central Processing Unit）及びメモリ等の情報処理資源を備えたコンピュータ装置であり、例えばパーソナルコンピュータや、ワークステーション、メインフレームなどから構成される。ホストサーバ３は、キーボード、スイッチやポインティングデバイス、マイクロフォン等の情報入力装置（図示せず）と、モニタディスプレイやスピーカ等の情報出力装置（図示せず）とを備える。
【００１５】
ストレージ装置４は、複数の記憶デバイス５と、これら複数の記憶デバイス５へのデータの入出力を制御する０系及び１系の２つのコントローラ６Ａ，６Ｂとを備えて構成される。
【００１６】
記憶デバイス５は、例えばＳＣＳＩ（Small Computer System Interface）ディスク等の高価なディスクデバイス、又はＳＡＴＡ（Serial AT Attachment）ディスクや光ディスク等の安価なディスクデバイスなどから構成される。
【００１７】
これらの記憶デバイス５は、０系及び１系の各コントローラ６Ａ，６ＢによりＲＡＩＤ（Redundant Arrays of Inexpensive Disks）方式で運用される。なおコントローラは１つであってもよい。１又は複数の記憶デバイス５により提供される物理的な記憶領域上に、１又は複数の論理的なボリューム（以下、これを論理ボリュームと呼ぶ）ＶＯＬが設定される。そしてデータは、この論理ボリュームＶＯＬ内に所定大きさのブロック（以下、これを論理ブロックと呼ぶ）を単位として記憶される。
【００１８】
各論理ボリュームＶＯＬには、それぞれ固有の識別子（以下、これをＬＵＮ（Logical Unit number）と呼ぶ）が付与される。本実施の形態の場合、データの入出力は、このＬＵＮと、各論理ブロックにそれぞれ付与されるその論理ブロックに固有の番号（以下、これをＬＢＡ（Logical Block Address）と呼ぶ）との組み合わせたものをアドレスとして、当該アドレスを指定して行われる。
【００１９】
０系、１系のコントローラ６Ａ，６Ｂは、それぞれホスト制御部７Ａ，７Ｂ、ＭＰＵ（Micro Processing Unit）８Ａ，８Ｂ、スイッチ９Ａ，９Ｂ、キャッシュメモリ１０Ａ，１０Ｂ及びドライブ制御部１１Ａ，１１Ｂを備える。
【００２０】
ホスト制御部７Ａ，７Ｂは、ネットワーク２に対するインタフェースであり、ＣＰＵ（Central Processing Unit）及びメモリなどの情報処理資源を備える。ホスト制御部７Ａ，７Ｂは、かかるネットワーク２を介してライトデータ及びリードデータや各種コマンドなどをホストサーバ３との間で送受する。
【００２１】
ＭＰＵ８Ａ，８Ｂは、ホストサーバ３からのライトコマンドやリードコマンドに応答して記憶デバイス５に対するデータの入出力処理を制御するプロセッサであり、記憶デバイス５から読み出したマイクロプログラムに基づいてホスト制御部７Ａ，７Ｂ、スイッチ９Ａ，９Ｂ及びドライブ制御部１１Ａ，１１Ｂを制御する。
【００２２】
スイッチ９Ａ，９Ｂは、ホスト制御部７Ａ，７Ｂ、キャッシュメモリ１０Ａ，１０Ｂ及びドライブ制御部１１Ａ，１１Ｂ間におけるデータの転送元及び転送先を切り替える。本実施の形態の場合、スイッチ９Ａ，９Ｂは、デュアルキャスト部１２Ａ，１２Ｂが搭載された汎用のＰＣＩｅ（ＰＣＩ（peripheral component interconnect）Ｅｘｐｒｅｓｓ）スイッチにＤＭＡ（Direct Memory Access）部１３Ａ，１３Ｂ及びパリティ生成部１４Ａ，１４Ｂを付加することにより構成されている。
【００２３】
デュアルキャスト部１２Ａ，１２Ｂは、ライトデータやリードデータを自系のＭＰＵ８Ａ，８Ｂを介して自系（０系又は１系）のキャッシュメモリ１０Ａ，１０Ｂに転送するだけでなく、後述するバス１５を介して他系（１系又は０系）のコントローラ６Ｂ，６Ｂに転送するデュアルキャスト機能を有する。またＤＭＡ部１３Ａ，１３Ｂは、キャッシュメモリ１０Ａ，１０Ｂに格納されたデータに対して直接アクセスするＤＭＡ機能を有する。
【００２４】
パリティ生成部１４Ａ，１４Ｂは、ライトデータに対するＲＡＩＤ用のパリティ（以下、これをＲＡＩＤパリティと呼ぶ）を生成してライトデータに付加したり、このＲＡＩＤパリティを用いてリードデータに対するエラーチェックを実行するＲＡＩＤエラーチェック機能を有する。
【００２５】
なお、これらデュアルキャスト部１２Ａ，１２Ｂ、ＤＭＡ部１３Ａ，１３Ｂ及びパリティ生成部１４Ａ，１４Ｂは、その一部又は全部が、ハードウェアにより構成されていても、またソフトウェアにより構成（スイッチ９Ａ，９Ｂ内の図示しないＣＰＵが対応するプログラムを実行する構成）されていてもよい。またデュアルキャスト部１２Ａ，１２Ｂによる後述のようなデュアルキャスト機能は、２つのコントローラを使用する場合にのみ機能し、１つのコントローラで運用を行うときには機能しない。
【００２６】
またスイッチ９Ａ，９Ｂは、他系（０系又は１系）のスイッチ９Ｂ，９Ａとバス１５を介して接続されており、このバス１５を通じて他系のコントローラ９Ｂ，９Ａとの間でコマンドやデータを送受することができるようになされている。
【００２７】
キャッシュメモリ１０Ａ，１０Ｂは、ホスト制御部７Ａ，７Ｂ及びドライブ制御部１１Ａ，１１Ｂ間において転送されるデータを一時的に記憶するために用いられる。このキャッシュメモリ１０Ａ，１０Ｂには、ストレージ装置４の起動時に所定の記憶デバイス５から読み出された上述のマイクロプログラムや、各種のシステム情報も格納される。
【００２８】
ドライブ制御部１１Ａ，１１Ｂは、記憶デバイス５に対するインタフェースであり、ＣＰＵ及びメモリなどの情報処理資源を備える。このドライブ制御部１１Ａ，１１Ｂは、ホスト制御部７Ａ，７Ｂから与えられるホストサーバ３からのライトコマンドやリードコマンドに応じて対応する記憶デバイス５を制御することにより、ライトデータやリードデータをライトコマンドやリードコマンドにおいて指定された論理ボリュームＶＯＬ内の当該ライトコマンド又はリードコマンドにおいて指定されたアドレス位置に読み書きする。
【００２９】
（１−２）ストレージ装置におけるデータ転送方式
次に、ストレージ装置４におけるデータ転送方式について説明する。これに際して、まず、従来のストレージ装置におけるデータ転送の流れについて説明する。
【００３０】
（１−２−１）従来のストレージ装置におけるデータ転送方式
図１との対応部分に同一符号を付した図２は、従来のストレージ装置２１において、０系のコントローラ２２Ａがホストサーバ３からライトコマンド及びライトデータを受信した場合における処理の流れを示す。この図２において、一点鎖線の矢印ＲＡ１〜ＲＡ７は０系のコントローラ２２Ａのキャッシュメモリ１０Ａや対応する記憶デバイス５に読み書きされるライトデータ等の流れを示し、二点鎖線の矢印ＲＢ１〜ＲＢ２は１系のコントローラ２２Ｂのキャッシュメモリ１１Ｂに書き込まれるライトデータの流れを示す。図４、図１１、図１５、図１９、図２３、図２５、図２７及び図２９においても同様である。
【００３１】
また以下においては、０系のコントローラ２２Ａのホスト制御部２３Ａやデータ転送制御部２４Ａなどの構成部位を、適宜、「０系のホスト制御部２３Ａ」や「０系のデータ転送制御部２４Ａ」などと呼び、１系のコントローラ２２Ｂのホスト制御部２３Ｂやデータ転送制御部２４Ｂなどの構成部位を、適宜、「１系のホスト制御部２３Ｂ」や「１系のデータ転送制御部２４Ｂ」などと呼ぶものとする。
【００３２】
かかる従来のストレージ装置２１において、０系のホスト制御部２３Ａは、ホストサーバ３からのライトコマンド及びライトデータを受信すると、ライトデータを０系のデータ転送制御部２４Ａに送信する（矢印ＲＡ１）。
【００３３】
０系のデータ転送制御部２４Ａは、このライトデータを受信すると、ＭＰＵ８Ａ，８Ｂの制御のもとに、このライトデータ用のエラーチェックコード（以下、これをデータ用エラーチェックコードと呼ぶ）を生成し、生成したデータ用エラーチェックコードをライトデータに付加する。そして０系のデータ転送制御部２４Ａは、この後、このライトデータを０系のキャッシュメモリ１０Ａに格納する（矢印ＲＡ２）。なお、この場合のエラーチェックコードとしては、例えばＬＡ／ＬＲＣが用いられる。またデータ転送制御部２４Ａは、かかるライトデータ及びそのデータ用エラーチェックコードを１系のデータ転送制御部２４Ｂに転送し、これらライトデータ及びそのデータ用エラーチェックコードを１系のキャッシュメモリ１０Ｂにも格納させる（矢印ＲＢ１）。
【００３４】
続いて０系のデータ転送制御部２４Ａは、０系のキャッシュメモリ１０Ａからライトデータ及びそのデータ用エラーチェックコードを読み出し（矢印ＲＡ３）、このデータ用エラーチェックコードを用いて当該ライトデータに対するエラーチェック処理を実行する。また０系のデータ転送制御部２４Ａは、このエラーチェック処理においてエラーが検出されなかったときには、かかるライトデータ及びデータ用エラーチェックコードからなるデータ群のＲＡＩＤパリティと、このＲＡＩＤパリティ用のエラーチェックコード（以下、これをパリティ用エラーチェックコードと呼ぶ）とを生成し、生成したＲＡＩＤパリティ及びそのパリティ用エラーチェックコードを０系のキャッシュメモリ１０Ａに格納する（矢印ＲＡ４）。
【００３５】
また０系のデータ転送制御部２４Ａは、かかるＲＡＩＤパリティ及びそのパリティ用エラーチェックコードを１系のデータ転送制御部２４Ｂに転送し、これらＲＡＩＤパリティ及びそのパリティ用エラーチェックコードを１系のキャッシュメモリ１０Ｂにも格納させる（矢印ＲＢ２）。
【００３６】
続いて０系のデータ転送制御部２４Ａは、０系のキャッシュメモリ１０Ａからライトデータ及びそのデータ用エラーチェックコードと、そのＲＡＩＤパリティ及び当該ＲＡＩＤパリティのパリティ用エラーチェックコードとを読み出す（矢印ＲＡ５）。
【００３７】
そして０系のデータ転送制御部２４Ａは、かかるパリティ用エラーチェックコードを用いてＲＡＩＤパリティに対するエラーチェック処理を実行する。また０系のデータ転送制御部２４Ａは、このエラーチェック処理においてエラーを検出しなかったときには、かかるライトデータ及びそのデータ用エラーチェックコードと、そのＲＡＩＤパリティ及び当該ＲＡＩＤパリティのパリティ用エラーチェックコードとを０系のドライブ制御部１１Ａに転送する（矢印ＲＡ６）。
【００３８】
かくして０系のドライブ制御部１１Ａは、これらライトデータ及びそのデータ用エラーチェックコードと、そのＲＡＩＤパリティ及び当該ＲＡＩＤパリティのパリティ用エラーチェックコードとをライトコマンドにおいて指定された論理ボリュームＶＯＬ内の当該ライトコマンドにおいて指定されたアドレス位置に格納する（矢印ＲＡ７）。
【００３９】
なお、以上のライト処理が正常に終了した場合、１系のキャッシュメモリ１０Ｂに格納されたライトデータ及びそのデータ用エラーチェックコードと、そのＲＡＩＤパリティ及び当該ＲＡＩＤパリティのパリティ用エラーチェックコードとは、その後破棄される。
【００４０】
一方、図２との対応部分に同一符号を付した図３は、従来のストレージ装置２１において、０系のコントローラ２２Ａがホストサーバ３からリードコマンドを受信した場合における処理の流れを示す。この図３において、一点鎖線の矢印ＬＡ１〜ＬＡ６は０系のコントローラ２２Ａのキャッシュメモリ１０Ａや対応する記憶デバイス５に読み書きされるリードデータ等の流れを示し、二点鎖線の矢印ＬＢ１は１系のコントローラ２２Ｂのキャッシュメモリ１０Ｂに書き込まれるリードデータの流れを示す。図７、図１３、図１７及び図２１においても同様である。
【００４１】
かかるストレージ装置２１において、０系のコントローラ２２Ａがホストサーバ３からのリードコマンドを受領した場合、まず０系のドライブ制御部１１Ａが、このリードコマンドにおいて指定された論理ボリュームＶＯＬ内の当該リードコマンドにおいて指定されたアドレス位置からデータ及びそのデータ用エラーチェックコードを読み出し（矢印ＬＡ１）、読み出したデータ（リードデータ）及びそのデータ用エラーチェックコードを０系のデータ転送制御部２４Ａに送信する（矢印ＬＡ２）。
【００４２】
０系のデータ転送制御部２４Ａは、このデータ用エラーチェックコードを用いてリードデータに対するエラーチェック処理を実行し、エラーを検出しなかったときには、リードデータ及びそのデータ用エラーチェックコードを０系のキャッシュメモリ１０Ａに格納する（矢印ＬＡ３）。
【００４３】
また０系のデータ転送制御部２４Ａは、かかるリードデータ及びそのデータ用エラーチェックコードを１系のデータ転送制御部２４Ｂに転送し、かかるライトデータ及びそのデータ用エラーチェックコードを１系のキャッシュメモリ１０Ｂにも格納させる（矢印ＬＢ１）。
【００４４】
続いて０系のデータ転送制御部２４Ａは、かかるリードデータ及びそのデータ用エラーチェックコードを０系のキャッシュメモリ１０Ａから読み出し（矢印ＬＡ４）、読み出したデータ用エラーチェックコードを用いてリードデータに対するエラーチェック処理を実行する。
【００４５】
そして０系のデータ転送制御部２４Ａは、このエラーチェック処理においてエラーを検出しなかった場合には、リードデータからデータ用エラーチェックコードを取り除き、このリードデータを０系のホスト制御部２３Ａに送信する（矢印ＬＡ５）。そして０系のホスト制御部２３Ａは、このリードデータをリードコマンドの送信元のホストサーバ３に転送する（矢印ＬＡ６）。
【００４６】
なお、以上のリード処理が正常に終了した場合、１系のキャッシュメモリ１０Ｂに格納されたリードデータ及びそのデータ用エラーチェックコードは、その後破棄される。
【００４７】
以上のように従来のストレージ装置２１においては、ストレージ装置２１内におけるデータ転送の信頼性を担保するためにライトデータやリードデータに対してエラーチェックコードを付加し、このエラーチェックコードを用いたエラーチェック処理を適宜実行しているが、このようなエラーチェック処理に関する一連の処理をすべてデータ転送制御部２４Ａ，２４Ｂが行っている。
【００４８】
このため従来のストレージ装置２１では、上述のようなエラーチェック処理に関する一連の処理を実行できるようなデータ転送制御部２４Ａ，２４Ｂを特注する必要があり、データ転送制御部２４Ａ，２４Ｂとして汎用のスイッチなどを利用することができなかった。この結果、従来のストレージ装置２１では、データ転送制御部２４Ａ，２４Ｂにおける処理負荷が大きく、データ転送制御部２４Ａ，２４Ｂの性能如何によっては装置全体のデータ入出力性能が悪くなる問題があり、またデータ入出力性能の高いデータ転送制御部２４Ａ，２４Ｂを使用するためにはストレージ装置２１全体としての製造コストが高くなるという問題がある。
【００４９】
そこで本実施の形態によるストレージ装置４（図１）においては、上述のようなエラーチェック処理のうち、エラーチェックコードの生成及び生成したエラーチェックコードをライトデータへの付加等の処理をホスト制御部７Ａ，７Ｂ（図１）において実行することにより、スイッチ９Ａ，９Ｂ（図１）としてＰＣＩｅスイッチをカスタマイズしたものを利用できるようにしたものである。以下、このようなストレージ装置４内におけるデータ転送方式（ストレージ装置内でのライトデータやリードデータの転送の方式）について以下に説明する。
【００５０】
（１−２−２）本実施の形態によるデータ転送方式におけるライト処理の流れ
図４は、本実施の形態のストレージ装置４がホストサーバ３からのライトコマンド及びライトデータを受信した場合における、ストレージ装置４内での処理の流れを示している。以下においては、０系のコントローラ６Ａがライトコマンド及びライトデータを受信した場合について説明するが、１系のコントローラ６Ｂがライトデータを受信した場合も同様である。また図５は、かかる処理の流れを概略的に示すフローチャートある。
【００５１】
ストレージ装置４において、０系のホスト制御部７Ａは、ホストサーバ３からのライトコマンド及びライトデータを受信すると（図４の矢印ＲＡ１０）、このライトデータのデータ用エラーチェックコードを生成し、生成したデータ用エラーチェックコードをそのライトデータに付加する（図５のＳＰ１）。また０系のホスト制御部７Ａは、かかるライトデータ及びデータ用エラーチェックコードを０系のスイッチ９Ａのデュアルキャスト部１２Ａに送信する（図４の矢印ＲＡ１１）。なお本実施の形態及び以下の第２〜第８の実施の形態においては、かかるデータ用エラーチェックコードとしてＤＩＦ（Data Integrity Field）を使用する。ＤＩＦの構成例を図６（Ａ）に、またＬＡ／ＬＲＣの構成例を図６（Ｂ）にそれぞれ示す。
【００５２】
かかるデュアルキャスト部１２Ａは、受信したライトデータ及びそのデータ用エラーチェックコードを０系のキャッシュメモリ１０Ａに格納すると共に、これらライトデータ及びそのデータ用エラーチェックコードを１系のスイッチ９Ｂに転送することにより、これらを１系のキャッシュメモリ１０Ｂにも格納させる（図４の矢印ＲＡ１２及び矢印ＲＢ１０、図５のＳＰ２）。
【００５３】
続いて０系のスイッチ９ＡのＤＭＡ部１３Ａが、０系のキャッシュメモリ１０Ａからライトデータ及びそのデータ用エラーチェックコードを読み出し（図４の矢印ＲＡ１３）、このデータ用エラーチェックコードを用いたライトデータに対するエラーチェック処理を実行する（図５のＳＰ３）。
【００５４】
このエラーチェックの結果、エラーを検出したというチェック結果が得られた場合（ＳＰ４：ＹＥＳ）、０系のＭＰＵ８Ａは、０系のキャッシュメモリ１０Ａに格納されたプログラムに基づき、所定の第１のエラー処理が開始する（図５のＳＰ５）。そしてストレージ装置４は、この後、このライト処理を終了する。
【００５５】
これに対して、かかるエラーチェックの結果、エラーを検出しなかったというチェック結果が得られた場合（ＳＰ４：ＮＯ）、０系のスイッチ９Ａのパリティ生成部１４Ａが、０系のキャッシュメモリ１０Ａからライトデータ及びそのデータ用エラーチェックコードを読み出す（図４の矢印ＲＡ１４）。そしてパリティ生成部１４Ａは、かかるライトデータ及びそのデータ用エラーチェックコードからなるデータ群のＲＡＩＤパリティを生成すると共に、このＲＡＩＤパリティのパリティ用エラーチェックコードを生成してこれを当該ＲＡＩＤパリティに付加する（図５のＳＰ６）。
【００５６】
またパリティ生成部１４Ａは、このようにして得られたＲＡＩＤパリティ及びそのパリティ用エラーチェックコードを０系のキャッシュメモリ１０Ａに格納する（図４の矢印ＲＡ１５、図５のＳＰ７）。次にＭＰＵ８Ａは、これらＲＡＩＤパリティ及びそのパリティ用エラーチェックコードを０系のキャッシュメモリ１０Ａから読み出して１系のスイッチ９Ｂに転送することにより、これらを１系のキャッシュメモリ１０Ｂにも格納させる（図４の矢印ＲＢ１１、図５のＳＰ８）。
【００５７】
次いでスイッチ９ＡのＤＭＡ部１３Ａが、ライトデータ及びデータ用エラーチェックコードと、ＲＡＩＤパリティ及びそのパリティ用エラーチェックコードとを０系のキャッシュメモリ１０Ａから読み出し（図４の矢印ＲＡ１６）、このデータ用エラーチェックコードと、パリティ用エラーチェックコードを用いたライトデータと、ＲＡＩＤパリティとに対するエラーチェック処理を実行する（図５のＳＰ９）。
【００５８】
このエラーチェックの結果、エラーを検出したというチェック結果が得られた場合（図５のＳＰ１０：ＹＥＳ）、０系のＭＰＵ８Ａは、０系のキャッシュメモリ１０Ａに格納されたプログラムに基づき、所定の第２のエラー処理を開始する（図５のＳＰ５）。そしてストレージ装置４は、この後、このライト処理を終了する。
【００５９】
これに対して、かかるエラーチェックの結果、エラーを検出しなかったというチェック結果が得られた場合（図５のＳＰ１０：ＮＯ）、スイッチ９Ａは、ライトデータ及びそのデータ用エラーチェックコードと、ＲＡＩＤパリティ及びそのパリティ用エラーチェックコードとを０系のキャッシュメモリ１０Ａから読み出し、これらをドライブ制御部１１Ａに送信する（図４の矢印ＲＡ１７）。
【００６０】
かくしてドライブ制御部１１Ａは、これらライトデータ及びそのデータ用エラーチェックコードと、ＲＡＩＤパリティ及びそのパリティ用エラーチェックコードとを、かかるライトコマンドにおいて指定された論理ボリュームＶＯＬ内の対応するアドレス位置に格納する（図５のＳＰ１１）。そしてストレージ装置４は、この後、このライト処理を終了する。
【００６１】
なお、以上のライト処理が正常に終了した場合、１系のキャッシュメモリ１０Ｂに格納されたライトデータ及びそのデータ用エラーチェックコードと、そのＲＡＩＤパリティ及びそのパリティ用エラーチェックコードとは、その後破棄される。
【００６２】
（１−２−３）本実施の形態によるデータ転送方式におけるリード処理の流れ
一方、図７は、本実施の形態のストレージ装置４がホストサーバ３からのリードコマンドを受信した場合における、ストレージ装置４内での処理の流れを示している。以下においても０系のコントローラ６Ａがリードコマンドを受信した場合について説明するが、１系のコントローラ６Ｂがリードコマンドを受信した場合も同様である。また図８は、かかる処理の流れを概略的に示すフローチャートである。
【００６３】
ストレージ装置４において、０系のコントローラ６Ａがホストサーバ３からのリードコマンドを受信すると、まず０系のドライブ制御部１１Ａが、このリードコマンドにおいて指定された論理ボリュームＶＯＬ内の当該リードコマンドにおいて指定されたアドレス位置からデータ及びそのデータ用エラーチェックコードを読み出し（図７の矢印ＬＡ１０）、読み出したデータ（リードデータ）及びそのデータ用エラーチェックコードを０系のスイッチ９Ａのデュアルキャスト部１２Ａに送信する（図７の矢印ＬＡ１１）。
【００６４】
デュアルキャスト部１２Ａは、受信したリードデータ及びそのデータ用エラーチェックコードを０系のキャッシュメモリ１０Ａに格納すると共に、これらリードデータ及びそのデータ用エラーチェックコードを１系のスイッチ９Ｂに転送することにより、これらを１系のキャッシュメモリ１０Ｂにも格納させる（図７の矢印ＬＡ１２及び矢印ＬＢ１０、図８のＳＰ２０）。
【００６５】
続いて０系のホスト制御部７Ａが、かかるリードデータ及びそのデータ用エラーチェックコードを０系のキャッシュメモリ１０Ａから読み出し（図７の矢印ＬＡ１３、図８のＳＰ２１）、そのデータ用エラーチェックコードを用いたリードデータに対するエラーチェック処理を実行する（図８のＳＰ２２）。
【００６６】
このエラーチェックの結果、エラーを検出したというチェック結果が得られた場合（ＳＰ２３：ＹＥＳ）、０系のＭＰＵ８Ａが、０系のキャッシュメモリ１０Ａに格納されたプログラムに基づき、上述の第１のエラー処理を開始する（図８のＳＰ２４）。そしてストレージ装置４は、この後、このリード処理を終了する。
【００６７】
これに対して、かかるエラーチェックの結果、エラーを検出しなかったというチェック結果が得られた場合（ＳＰ２３：ＮＯ）、０系のホスト制御部７Ａが、かかるリードデータからデータ用エラーチェックコードを削除し（図８のＳＰ２５）、このリードデータをリードコマンドの送信元のホストサーバ３に送信する（図７の矢印ＬＡ１４、図８のＳＰ２６）。そしてストレージ装置４は、この後、このリード処理を終了する。
【００６８】
なお、以上のリード処理が正常に終了した場合、１系のキャッシュメモリ１０Ｂに格納されたデータ用エラーチェックコードが付加されたリードデータは、その後破棄される。
【００６９】
（１−２−３）エラー処理
次に、図５のステップＳＰ５において実行される第１のエラー処理について説明する。図９は、かかる第１のエラー処理の具体的な処理内容を示すフローチャートである。
【００７０】
０系のＤＭＡ部１３Ａは、図５のステップＳＰ３におけるエラーチェックにおいてエラーを検出した場合（図５のＳＰ４：ＹＥＳ）、図９に示す第１のエラー処理を開始し、０系のキャッシュメモリ１０Ａ内の所定領域（以下、これをチェック結果格納領域と呼ぶ）にエラーステータスを書き込むと共に、１系のコントローラ６Ｂにエラー通知を発行する。またＭＰＵ８Ａは、この後、自系のコントローラ６Ａを閉塞する（ＳＰ３０）。
【００７１】
かかるエラー通知を受けた１系のコントローラ６Ｂ側はライト処理を開始し（ＳＰ３１）、まずスイッチ９ＢのＤＭＡ部１３Ｂが、１系のキャッシュメモリ１０Ｂに格納されたライトデータ及びそのデータ用エラーチェックコードを読み出し、当該データ用エラーチェックコードを用いたライトデータに対するエラーチェック処理を実行する（ＳＰ３２）。
【００７２】
このエラーチェックの結果、ＤＭＡ部１３Ｂは、エラーを検出したというチェック結果が得られた場合（ＳＰ３３：ＹＥＳ）、１系のキャッシュメモリ１０Ｂ内のチェック結果格納領域にエラーステータスを書き込み、この後、この１系のコントローラ１０Ｂを閉塞してこの第１のエラー処理を終了する。
【００７３】
これに対して、かかるエラーチェックの結果、エラーを検出しなかったというチェック結果が得られた場合（ＳＰ３３：ＮＯ）、１系のコントローラ６Ｂにおいて図９のステップＳＰ３５〜ステップＳＰ３９を図５のステップＳＰ６〜ステップＳＰ１１と同様に処理することにより、ライトデータ及びそのデータ用エラーチェックコードと、これらのＲＡＩＤパリティ及びそのパリティ用エラーチェックコードとを１系のキャッシュメモリ１０Ｂに格納する。そして１系のコントローラ６Ｂは、この後、このライト処理を終了する。
【００７４】
一方、図１０は、図５のステップＳＰ５において実行される第２のエラー処理の具体的な処理内容を示すフローチャートである。
【００７５】
０系のＤＭＡ部１３Ａは、図５のステップＳＰ９におけるエラーチェックにおいてエラーを検出した場合（図５のＳＰ１０：ＹＥＳ）、図１０に示す第２のエラー処理を開始し、０系のキャッシュメモリ１０Ａ内のチェック結果格納領域にエラーステータスを書き込むと共に、１系のコントローラ６Ｂにエラー通知を発行する。またＤＭＡ部１３Ｂは、この後、自系のコントローラ６Ａを閉塞する（ＳＰ４０）。
【００７６】
かかるエラー通知を受けた１系のコントローラ６Ｂ側はライト処理を開始し（ＳＰ４１）、まずスイッチ９ＢのＤＭＡ部１３Ｂが、１系のキャッシュメモリ１０Ｂに格納されたライトデータ及びそのデータ用エラーチェックコードを読み出し、当該データ用エラーチェックコードを用いたライトデータに対するエラーチェック処理を実行する（ＳＰ４２）。
【００７７】
このエラーチェックの結果、エラーを検出したというチェック結果が得られた場合（ＳＰ４３：ＹＥＳ）、ＤＭＡ部１３Ｂは、１系のキャッシュメモリ１０Ｂ内のチェック結果格納領域にエラーステータスを書き込み、この後、この１系のコントローラ１０Ｂを閉塞してこの第２のエラー処理を終了する。
【００７８】
これに対して、かかるエラーチェックの結果、エラーを検出しなかったというチェック結果が得られた場合（ＳＰ４３：ＮＯ）、ＤＭＡ部１３Ｂは、ライトデータ及びそのデータ用エラーチェックコードと、これらのＲＡＩＤパリティ及びそのパリティ用エラーチェックコードとをドライブ制御部１１Ａを介して、ライトコマンドにおいて指定された論理ボリュームＶＯＬ内の当該ライトコマンドにおいて指定されたアドレス位置に書き込み（ＳＰ４５）、この後、このライト処理を終了する。
【００７９】
（１−３）本実施の形態の効果
以上のように本実施の形態によるストレージ装置４では、データ用エラーチェックコードやパリティ用エラーチェックコードの付加をホスト制御部７Ａ，７Ｂやスイッチ９Ａ，９Ｂのパリティ生成部１４Ａにおいて行い、これらデータ用エラーチェックコード又はパリティ用エラーチェックコードを用いたエラーチェック処理をスイッチ９Ａ，９ＢのＤＭＡ部１３Ａで行う。
【００８０】
従って、本実施の形態によれば、スイッチ９Ａ，９ＢとしてカスタマイズしたＰＣＩｅスイッチを適用しながらも、必要なエラーチェック処理を適宜行うことができ、かくしてコストを抑えながら信頼性高くデータ転送を行うことができる。
【００８１】
また本実施の形態によれば、ホスト制御部７Ａ，７Ｂにおいてエラーチェックコードを付加するようにしているため、例えばホスト制御部７Ａ，７Ｂ及びスイッチ９Ａ，９Ｂ間におけるデータ転送をも保証することができ、従来に比べてより一層とデータ転送の信頼性を向上させることができる。
【００８２】
（２）第２の実施の形態
図１との対応部分に同一符号を付して示す図１１は、第２の実施の形態による計算機システム３０を示す。この計算機システム３０は、ストレージ装置３１の０系及び１系のコントローラ３２Ａ，３２Ｂにおいて、ホスト制御部７Ａ，７Ｂに加えてドライブ制御部３３Ａ，３３Ｂにおいてもエラーチェック処理を実行できる点が第１の実施の形態による計算機システム１と異なる。
【００８３】
また計算機システム３０においては、このような構成の違いに伴い、ストレージ装置３１におけるライト処理の流れも第１の実施の形態によるストレージ装置４（図１）と相違する。
【００８４】
なお図１１においては、ストレージ装置３１内の０系のコントローラ３２Ａがホストサーバ３からのライトコマンド及びライトデータを受信した場合における当該ストレージ装置３１内のデータの流れを示しているが、１系のコントローラ３２Ｂがライトコマンド及びライトデータを受信した場合も同様である。また図１２は、本実施の形態のストレージ装置３１におけるライト処理の流れを概略的に示すフローチャートである。
【００８５】
図１１の矢印ＲＡ２０〜ＲＡ２５、矢印ＲＡ２７、矢印ＲＢ２０及び矢印ＲＢ２１におけるデータの流れは、図４の矢印ＲＡ１０〜ＲＡ１５、矢印ＲＡ１８、矢印ＲＢ１０及び矢印ＲＢ１１におけるデータの流れと同様である。また図１２のステップＳＰ５０〜ステップＳＰ５７、ステップＳＰ５９及びステップＳＰ６０において実行される処理は、図５のステップＳＰ１〜ステップＳＰ８、ステップＳＰ１０及びステップＳＰ１１において実行される処理と全く同じである。
【００８６】
本実施の形態と第１の実施の形態との相違点は、第１の実施の形態では、ストレージ装置４において、ＲＡＩＤパリティに対するエラーチェック処理をスイッチ９ＡのＤＭＡ部１３Ａにおいて実行していたのに対し、本実施の形態では、かかるエラーチェック処理をストレージ装置３１のドライブ制御部３３Ａにおいて実行することである。
【００８７】
すなわち本実施の形態によるストレージ装置３１の場合、ライトデータ及びそのデータ用エラーチェックコードからなるデータ群のＲＡＩＤパリティ及びそのパリティ用エラーチェックコードを１系のキャッシュメモリ１０Ｂに格納し終えると（図１１の矢印ＲＢ２１、図１２のＳＰ５７）、０系のドライブ制御部３３Ａが０系のキャッシュメモリ１０Ａからライトデータ及びそのデータ用エラーチェックコードと、これらのＲＡＩＤパリティ及びそのパリティ用エラーチェックコードとを読み出す。そして０系のドライブ制御部３３Ａは、このとき読み出したライトデータ及びそのデータ用エラーチェックコードと、これらのＲＡＩＤパリティ及びそのパリティ用エラーチェックコードに対するエラーチェック処理を実行する（図１２のＳＰ５８）。
【００８８】
このエラーチェックの結果、エラーを検出したというチェック結果が得られた場合（図１２のＳＰ５９：ＹＥＳ）、０系のＭＰＵ８Ａは、０系のキャッシュメモリ１０Ａに格納されたプログラムに基づき、上述の第１のエラー処理を開始する（図１２のＳＰ５４）。そしてストレージ装置３１は、この後、このライト処理を終了する。
【００８９】
これに対して、かかるエラーチェックの結果、エラーを検出しなかったというチェック結果が得られた場合（図１２のＳＰ５９：ＮＯ）、０系のドライブ制御部３３Ａが、上述のように０系のキャッシュメモリ１０Ａから読み出したライトデータ及びそのデータ用エラーチェックコードと、これらのＲＡＩＤパリティ及びそのパリティ用エラーチェックコードとを、ライトコマンドにおいて指定された論理ボリュームＶＯＬ内の対応するアドレス位置に格納する（図１２のＳＰ６０）。そしてストレージ装置３１は、この後、このライト処理を終了する。
【００９０】
なお、以上のライト処理が正常に終了した場合、１系のキャッシュメモリ１０Ｂに格納されたライトデータ及びそのデータ用エラーチェックコードと、これらのＲＡＩＤパリティ及びそのパリティ用エラーチェックコードとは、その後破棄される。
【００９１】
一方、図１３は、本実施の形態のストレージ装置３１がホストサーバ３からのリードコマンドを受信した場合における、ストレージ装置３１内での処理の流れを示している。また図１４は、かかる処理の流れを概略的に示すフローチャートである。
【００９２】
図１３において矢印ＬＡ２０〜矢印ＬＡ２４及び矢印ＬＢ２０で示すデータの流れは図７において矢印ＬＡ１０〜矢印ＬＡ１４及び矢印ＬＢ１０で示すデータの流れと同様である。また図１４のステップＳＰ７４〜ステップＳＰ７９において実行される処理は、図８のステップＳＰ２０〜ステップＳＰ２６において実行される処理と全く同じである。異なる点は、第１の実施の形態では、リードデータに対するエラーチェック処理をＤＭＡ部１３Ａ，１３Ｂで実行するのに対して、本実施の形態においては、リードデータに対するエラーチェック処理をドライブ制御部１１Ａにおいて実行することである。
【００９３】
すなわち本実施の形態によるストレージ装置３１の場合、ドライブ制御部３３Ａは、ホストサーバ３からのリードコマンドに応じて、当該リードコマンドにおいて指定された論理ボリュームＶＯＬから指定されたリードデータ及びそのデータ用エラーチェックコードを読み出す（図１３のＬＡ２０、図１４のＳＰ７０）。
【００９４】
そしてドライブ制御部３３Ａは、読み出したデータ用エラーチェックコードを用いたリードデータに対するエラーチェック処理を実行する（図１４のＳＰ７１）。
【００９５】
このエラーチェックの結果、エラーを検出したというチェック結果が得られた場合（図１４のＳＰ７２：ＹＥＳ）、０系のＭＰＵ８Ａが、０系のキャッシュメモリ１０Ａに格納されたプログラムに基づき、上述の第１のエラー処理を開始する（図１４のＳＰ７３）。そしてストレージ装置３１は、この後、このリード処理を終了する。
【００９６】
これに対して、かかるエラーチェックの結果、エラーを検出しなかったというチェック結果が得られた場合（図１４のＳＰ７２：ＮＯ）、ストレージ装置３１は、図１４のステップＳＰ７４〜ステップＳＰ７９を図８のステップＳＰ２０〜ステップＳＰ２６と同様に処理する。
【００９７】
なお、以上のリード処理が正常に終了した場合、１系のキャッシュメモリ１０Ｂに格納されたリードデータ及びそのデータ用エラーチェックコードは、その後破棄される。
【００９８】
以上のように本実施の形態による計算機システム３０によれば、第１の実施の形態と同様に、ストレージ装置４のスイッチ９Ａ，９Ｂとして、カスタマイズしたＰＣＩｅスイッチを適用しながら、必要なエラーチェック処理を適宜行うことができ、かくしてコストを抑えながら信頼性高くデータ転送を行うことができる。
【００９９】
また本実施の形態によれば、ドライブ制御部３３Ａ，３３Ｂにおいてエラーチェック処理を実行するため、キャッシュメモリ１０Ａ，１０Ｂ及びドライブ制御部３３Ａ，３３Ｂ間におけるデータ転送をも保証することができ、第１の実施の形態のストレージ装置４に比べてより一層とデータ転送の信頼性を向上させることができる。
【０１００】
さらに本実施の形態によれば、ドライブ制御部３３Ａ，３３Ｂにおいてエラーチェック処理を実行するため、その分、第１の実施の形態によるストレージ装置４に比べてスイッチ９Ａ，９Ｂの処理負荷を軽減することができる。
【０１０１】
（３）第３の実施の形態
（３−１）本実施の形態によるデータ転送方式
図１との対応部分に同一符号を付して示す図１５は、第３の実施の形態による計算機システム４０の構成を示す。この計算機システム４０は、ストレージ装置４１のホスト制御部４３Ａ，４３Ｂにエラーチェックコードを生成するエラーチェックコード生成機能が搭載されておらず、スイッチ４４Ａ，４４ＢのＤＭＡ部４５Ａ，４５Ｂに当該エラーチェックコード生成機能が搭載されている点が第１の実施の形態による計算機システム１と異なる。
【０１０２】
また本実施の形態による計算機システム４０は、このような構成の違いに伴い、ストレージ装置４１におけるライト処理の流れも第１の実施の形態によるストレージ装置４１と相違する。
【０１０３】
なお図１５においては、ストレージ装置４１内の０系のコントローラ４２Ａがホストサーバ３からのライトコマンド及びライトデータを受信した場合における当該ストレージ装置４１内のデータの流れを示しているが、１系のコントローラ４２Ｂがライトコマンド及びライトデータを受信した場合も同様である。また図１６は、本実施の形態のストレージ装置４１におけるライト処理の流れを概略的に示すフローチャートある。
【０１０４】
このストレージ装置４１において、０系のホスト制御部４３Ａは、ホストサーバ３からのライトコマンド及びライトデータを受信すると（図１５の矢印ＲＡ３０）、ライトデータを０系のスイッチ４４Ａのデュアルキャスト部１２Ａに送信する（図１５の矢印ＲＡ３１）。
【０１０５】
デュアルキャスト部１２Ａは、受信したライトデータを０系のキャッシュメモリ１０Ａに格納すると共に、このライトデータを１系のスイッチ４４Ｂに転送することにより、当該ライトデータを１系のキャッシュメモリ１０Ｂにも格納させる（図４の矢印ＲＡ３２及び矢印ＲＢ３０、図１６のＳＰ８０）。
【０１０６】
続いて０系のスイッチ４４ＡのＤＭＡ部４５Ａが、０系のキャッシュメモリ１０Ａからライトデータを読み出し（図１５の矢印ＲＡ３３）、このライトデータのデータ用エラーチェックコードを生成し（図１６のＳＰ８１）、生成したデータ用エラーチェックコードを０系のキャッシュメモリ１０Ａに格納する（図１５の矢印ＲＡ３４、図１６のＳＰ８２）。
【０１０７】
またＤＭＡ部４５Ａは、このデータ用エラーチェックコードをキャッシュメモリ１０Ａから読み出して１系のスイッチ４４Ｂに送信することにより、当該データ用エラーチェックコードを１系のキャッシュメモリ１０Ｂにも格納させる（図１５の矢印ＲＢ３１、図１６のＳＰ８３）。
【０１０８】
この後、このストレージ装置４１では、図４のステップＳＰ３〜ステップＳＰ１１と同様にしてステップＳＰ８４〜ステップＳＰ９１の処理が実行される。従って、図１５の矢印ＲＡ３５〜矢印ＲＡ４０に示すデータの流れは、図４の矢印ＲＡ１３〜矢印ＲＡ１８と同様となる。そしてストレージ装置４１は、この後、このライト処理を終了する。
【０１０９】
なお、以上のライト処理が正常に終了した場合、１系のキャッシュメモリ１０Ｂに格納されたライトデータ及びそのデータ用エラーチェックコードと、これらのＲＡＩＤパリティ及びそのパリティ用エラーチェックコードとは、その後破棄される。
【０１１０】
一方、図１７は、本実施の形態のストレージ装置４１がホストサーバ３からリードコマンドを受信した場合における、ストレージ装置４１内での処理の流れを示している。以下においても０系のコントローラ４２Ａがリードコマンドを受信した場合について説明するが、１系のコントローラ４２Ｂがリードコマンドを受信した場合も同様である。また図１８は、かかる処理の流れを概略的に示すフローチャートである。
【０１１１】
ストレージ装置４１において、ホストサーバ３からのリードコマンドを０系のコントローラ４２Ａが受領した場合、まず０系のドライブ制御部１１Ａが、このリードコマンドにおいて指定された論理ボリュームＶＯＬ内の当該リードコマンドにおいて指定されたアドレス位置からデータ及びそのデータ用エラーチェックコードを読み出し（図１７の矢印ＬＡ３０）、読み出したデータ（リードデータ）及びそのデータ用エラーチェックコードを０系のスイッチ４４Ａのデュアルキャスト部１２Ａに送信する（図１７の矢印ＬＡ３１）。
【０１１２】
デュアルキャスト部１２Ａは、受信したリードデータ及びそのデータ用エラーチェックコードを０系のキャッシュメモリ１０Ａに格納すると共に、これらリードデータ及びそのデータ用エラーチェックコードを１系のスイッチ４４Ｂに転送し、これらリードデータ及びそのデータ用エラーチェックコードを１系のキャッシュメモリ１０Ｂにも格納させる（図１７の矢印ＬＡ３２及び矢印ＬＢ３０、図１８のＳＰ１００）。
【０１１３】
続いて０系のスイッチ４４ＡのＤＭＡ部４５Ａが、かかるリードデータ及びそのデータ用エラーチェックコードを０系のキャッシュメモリ１０Ａから読み出し（図１７の矢印ＬＡ３３、図１８のＳＰ１０１）、そのデータ用エラーチェックコードを用いた当該リードデータに対するエラーチェック処理を実行する（図１８のＳＰ１０２）。
【０１１４】
このエラーチェックの結果、エラーを検出したというチェック結果が得られた場合（図１８のＳＰ１０３：ＹＥＳ）、０系のＭＰＵ８Ａは、０系のキャッシュメモリ１０Ａに格納されたプログラムに基づき、上述の第１のエラー処理を開始する（図１８のＳＰ１０４）。そしてストレージ装置４１は、この後、このリード処理を終了する。
【０１１５】
これに対して、かかるエラーチェックの結果、エラーを検出しなかったというチェック結果が得られた場合（図１８のＳＰ１０３：ＮＯ）、ＤＭＡ部４５Ａが、リードデータに付加されたデータ用エラーチェックコードを削除し、リードデータのみを０系のキャッシュメモリ１０Ａに格納する（図１７の矢印ＡＬ３４、図１８のＳＰ１０５）。
【０１１６】
このリードデータは、この後０系のホスト制御部４３Ａにより読み出され（図１７の矢印ＡＬ３５）、ホストサーバ３に送信される（図１７の矢印ＬＡ３６、図１８のＳＰ１０６）。そしてストレージ装置４１は、この後、このリード処理を終了する。
【０１１７】
なお、以上のリード処理が正常に終了した場合、１系のキャッシュメモリ１０Ｂに格納されたリードデータ及びそのデータ用エラーチェックコードは、その後破棄される。
【０１１８】
（３−２）本実施の形態の効果
以上のように本実施の形態によれば、第１の実施の形態と同様に、ストレージ装置４１のスイッチ４４Ａ，４４Ｂとして、カスタマイズしたＰＣＩｅスイッチを適用しながらも、必要なエラーチェック処理を適宜行うことができ、かくしてコストを抑えながら信頼性高くデータ転送を行うことができる。
【０１１９】
また本実施の形態によれば、ライトデータ等に対するエラーチェックコードの生成や、当該エラーチェックコードを用いたエラーチェックをすべてスイッチ４４Ａ，４４Ｂにおいて実行するため、第１の実施の形態のストレージ装置４に比べてホスト制御部４３Ａ，４３Ｂや、ドライブ制御部１１Ａ，１１Ｂにおける負荷を軽減し、これらホスト制御部４３Ａ，４３Ｂ及びドライブ制御部１１Ａ，１１Ｂの構成を簡易化することができる。
【０１２０】
（４）第４の実施の形態
図１５との対応部分に同一符号を付して示す図１９は、第４の実施の形態による計算機システム５０を示す。この計算機システム５０は、ストレージ装置５１のドライブ制御部５５Ａ，５５Ｂにエラーチェック機能が搭載されている点が第３の実施の形態による計算機システム４０と異なる。
【０１２１】
また計算機システム５０においては、上述のような構成の違いに伴い、ストレージ装置５１におけるライト処理の流れも第３の実施の形態によるストレージ装置４１と相違する。図２０は、このような第４の実施の形態のストレージ装置５１におけるライト処理の流れを概略的に示すフローチャートある。
【０１２２】
なお図１９においては、ストレージ装置５１内の０系のコントローラ５２Ａがホストサーバ３からのライトコマンド及びライトデータを受信した場合における当該ストレージ装置５１内でのライト処理の流れを示しているが、１系のコントローラ５２Ｂがライトコマンド及びライトデータを受信した場合も同様である。
【０１２３】
図１９において矢印ＲＡ４０〜矢印ＲＡ４７及び矢印ＲＢ４０〜矢印ＲＢ４３で示すデータの流れは、図１５において矢印ＲＡ３０〜矢印ＲＡ３７及び矢印ＲＢ３０〜矢印ＲＢ３３で示すデータの流れと同様である。また図２０のステップＳＰ１１０〜ステップＳＰ１１９において実行される処理は、図１６のステップＳＰ８０〜ステップＳＰ８９において実行される処理と全く同じである。異なる点は、第３の実施の形態では、ＲＡＩＤパリティに対するエラーチェック処理をスイッチ４４ＡのＤＭＡ部４５Ａにおいて実行しているのに対して、本実施の形態においては、かかるエラーチェック処理をドライブ制御部１１Ａにおいて実行することである。
【０１２４】
すなわち本実施の形態によるストレージ装置５１の場合、０系のスイッチ５３のパリティ生成部１４Ａにおいて生成されたＲＡＩＤパリティ及びそのパリティ用エラーチェックコードが０系のキャッシュメモリ１０Ａに格納されると（図１９の矢印ＲＡ４７、図２０のＳＰ１１９）、０系のドライブ制御部５５Ａがライトデータ及びそのデータ用エラーチェックコードと、これらのＲＡＩＤパリティ及びそのパリティ用エラーチェックコードとを０系のキャッシュメモリ１０Ａから読み出す（図１９の矢印ＲＡ４８）。
【０１２５】
そして０系のドライブ制御部５５Ａは、そのライトデータ及びパリティ用エラーチェックコードを用いた当該ライトデータ及びＲＡＩＤパリティに対するエラーチェック処理を実行する（図２０のＳＰ１２０）。
【０１２６】
このエラーチェックの結果、エラーを検出したというチェック結果が得られた場合（図２０のＳＰ１２１：ＹＥＳ）、０系のＭＰＵ８Ａが、０系のキャッシュメモリ１０Ａに格納されたプログラムに基づき、上述の第１のエラー処理を開始する（図２０のＳＰ１１６）。そしてストレージ装置５１は、この後、このライト処理を終了する。
【０１２７】
これに対して、かかるエラーチェックの結果、エラーを検出しなかったというチェック結果が得られた場合（図２０のＳＰ１２１：ＮＯ）、０系のドライブ制御部５５Ａが、上述のように０系のキャッシュメモリ１０Ａから読み出したライトデータ及びそのデータ用エラーチェックコードと、これらのＲＡＩＤパリティ及びそのパリティ用エラーチェックコードとをライトコマンドにおいて指定された論理ボリュームＶＯＬ内の当該ライトコマンドにおいて指定されたアドレス位置に格納する（図１９の矢印ＲＡ４９、図２０のＳＰ１２２）。そしてストレージ装置５１は、この後、このライト処理を終了する。
【０１２８】
なお、以上のライト処理が正常に終了した場合、１系のキャッシュメモリ１０Ｂに格納されたライトデータ及びそのデータ用エラーチェックコードと、これらのＲＡＩＤパリティ及びそのパリティ用エラーチェックコードとは、その後破棄される。
【０１２９】
一方、図２１は、本実施の形態のストレージ装置５１がホストサーバ３からリードコマンドを受信した場合における、ストレージ装置５１内での処理の流れを示している。以下においても０系のコントローラ５２Ａがリードコマンドを受信した場合について説明するが、１系のコントローラ５２Ｂがリードコマンドを受信した場合も同様である。また図２２は、かかる処理の流れを概略的に示すフローチャートである。
【０１３０】
ストレージ装置５１において、ホストサーバ３からのリードコマンドを０系のコントローラ５２Ａが受領した場合、まず０系のドライブ制御部５５Ａが、このリードコマンドにおいて指定された論理ボリュームＶＯＬ内の対応するアドレス位置からデータ及びそのデータ用エラーチェックコードを読み出し（図２１の矢印ＬＡ５０、図２２のＳＰ１３０）、このデータ用エラーチェックコードを用いたかかるデータ（リードデータ）に対するエラーチェック処理を実行する（図２２のＳＰ１３１）。
【０１３１】
このエラーチェックの結果、エラーを検出したというチェック結果が得られた場合（図２２のＳＰ１３２：ＹＥＳ）、０系のＭＰＵ８Ａが、０系のキャッシュメモリ１０Ａに格納されたプログラムに基づき、上述の第１のエラー処理を開始する（図２２のＳＰ１３３）。そしてストレージ装置５１は、この後、このライト処理を終了する。
【０１３２】
これに対して、かかるエラーチェックの結果、エラーを検出しなかったというチェック結果が得られた場合（図２２のＳＰ１３２：ＮＯ）、ドライブ制御部５５Ａが、かかるリードデータ及びそのデータ用エラーチェックコードをスイッチ５３Ａのデュアルキャスト部１２Ａに送信する。そしてデュアルキャスト部１２Ａは、与えられたリードデータ及びそのデータ用エラーチェックコードを０系のキャッシュメモリ１０Ａに格納すると共に、これらリードデータ及びそのデータ用エラーチェックコードを１系のスイッチ４４Ｂに転送し、これらリードデータ及びそのデータ用エラーチェックコードを１系のキャッシュメモリ１０Ｂにも格納させる（図２１の矢印ＬＡ５２及び矢印ＬＢ５０、図２２のＳＰ１３４）。
【０１３３】
この後、ストレージ装置５１は、図２２のステップＳＰ１３５〜ステップＳＰ１３９を図１８のステップＳＰ１００〜ステップＳＰ１０６と同様に処理する。従って、図２１の矢印ＬＡ５２〜矢印ＬＡ５６におけるデータの流れは、図１７の矢印ＬＡ３３〜矢印ＬＡ３６におけるデータの流れと同じである。そしてストレージ装置５１は、この後、このリード処理を終了する。
【０１３４】
なお、以上のリード処理が正常に終了した場合、１系のキャッシュメモリ１０Ｂに格納されたリードデータ及びそのデータ用エラーチェックコードは、その後破棄される。
【０１３５】
以上のように本実施の形態によれば、第１の実施の形態と同様に、ストレージ装置５１のスイッチ５３Ａ，５３Ｂとして、カスタマイズしたＰＣＩｅスイッチを適用しながらも、必要なエラーチェック処理を適宜行うことができ、かくしてコストを抑えながら信頼性高くデータ転送を行うことができる。
【０１３６】
また本実施の形態によれば、ドライブ制御部５５Ａ，５５Ｂにおいてエラーチェック処理を実行するため、キャッシュメモリ１０Ａ，１０Ｂ及びドライブ制御部５５Ａ，５５Ｂ間におけるデータ転送をも保証することができ、従来に比べてより一層とデータ転送の信頼性を向上させることができる。
【０１３７】
さらに本実施の形態によれば、このようにドライブ制御部５５Ａ，５５Ｂにおいてエラーチェック処理を実行するため、第３の実施の形態のストレージ装置４１に比べて、スイッチ５３Ａ，５３Ｂの負荷を軽減することができる。
【０１３８】
（５）第５の実施の形態
図４との対応部分に同一符号を付して示す図２３は、第５の実施の形態による計算機システム６０示す。本実施の形態による計算機システム６０は、ストレージ装置６１の０系及び１系のコントローラ６２Ａ，６２Ｂに実装するスイッチ６３Ａ，６３Ｂとして、汎用のＰＣＩｅスイッチを用いている点が第１の実施の形態による計算機システム１と異なる。
【０１３９】
また計算機システム６０においては、このような構成の違いに伴い、ライトデータやリードデータに対するエラーチェック処理を、０系のキャッシュメモリ１０Ａに格納されたプログラム６４に基づき、０系のＭＰＵ８Ａにより実行するようになされた点が第１の実施の形態による計算機システム１と相違する。図２４は、本実施の形態によるストレージ装置６１におけるライト処理の流れを概略的に示すフローチャートある。
【０１４０】
なお図２３においては、ストレージ装置６１内の０系のコントローラ６２Ａがホストサーバ３からのライトコマンド及びライトデータを受信した場合における当該ストレージ装置６１内の処理の流れを示しているが、１系のコントローラ６２Ｂがライトコマンド及びライトデータを受信した場合も同様である。
【０１４１】
ストレージ装置６１において、０系のホスト制御部７Ａは、ホストサーバ３からのライトコマンド及びライトデータを受信すると（図２３の矢印ＲＡ５０）、このライトデータのデータ用エラーチェックコードを生成し、これをライトデータに付加する。また０系のホスト制御部７Ａは、これらライトデータ及びそのデータ用エラーチェックコードをスイッチ６３Ａのデュアルキャスト部１２Ａに送信する（図２３の矢印ＲＡ５１）。
【０１４２】
デュアルキャスト部１２Ａは、０系のホスト制御部７Ａから送信されるライトデータ及びそのデータ用エラーチェックコードを０系のキャッシュメモリ１０Ａに格納すると共に、これらを１系のスイッチ６３Ｂに転送して１系のキャッシュメモリ１０Ｂにも格納させる（図２３の矢印ＲＡ５２及び矢印ＲＢ５０、図２４のＳＰ１４１）。
【０１４３】
続いてＭＰＵ８Ａが、０系のキャッシュメモリ１０Ａに格納されたプログラムに基づいて、当該０系のキャッシュメモリ１０Ａからライトデータ及びそのデータ用エラーチェックコードを読み出し（図２３の矢印ＲＡ５３）、このデータ用エラーチェックコードを用いた当該ライトデータに対するエラーチェック処理を実行する（図２４のＳＰ１４２）。
【０１４４】
このエラーチェックの結果、エラーを検出したというチェック結果が得られた場合（図２４のＳＰ１４３：ＹＥＳ）、０系のＭＰＵ８Ａが、０系のキャッシュメモリ１０Ａに格納されたプログラムに基づき、上述の第１のエラー処理を開始する（図２４のＳＰ１４３）。そしてストレージ装置６１は、この後、このライト処理を終了する。
【０１４５】
これに対して、かかるエラーチェックの結果、エラーを検出しなかったというチェック結果が得られた場合（図２４のＳＰ１４３：ＮＯ）、ＭＰＵ８Ａは、プログラム６４に基づいて、ライトデータ及びそのデータ用エラーチェックコードからなるデータ群に対するＲＡＩＤパリティを生成すると供に、このＲＡＩＤパリティ用のパリティ用エラーチェックコードを生成し、当該パリティ要エラーチェックコードをかかるＲＡＩＤパリティに付加する（図２４のＳＰ１４５）。
【０１４６】
続いてＭＰＵ８Ａは、このＲＡＩＤパリティ及びそのパリティ用エラーチェックコードを０系のキャッシュメモリ１０Ａに書き込む（図２３の矢印ＲＡ５４、図２４のＳＰ１４６）。またＭＰＵ８Ａは、これらＲＡＩＤパリティ及びそのパリティ用エラーチェックコードを０系のキャッシュメモリ１０Ａから読み出して１系のスイッチ６３Ｂに転送することにより、これらを１系のキャッシュメモリ１０Ｂに格納させる（図２３の矢印ＲＢ５１、図２４のＳＰ１４７）。
【０１４７】
次いでＭＰＵ８Ａは、０系のキャッシュメモリ１０Ａからライトデータ及びそのデータ用エラーチェックコードと、これらのＲＡＩＤパリティ及びそのパリティ用エラーチェックコードとを読み出す。またＭＰＵ８Ａは、０系のキャッシュメモリ１０Ａに格納されたプログラム６４に基づいて、かかるライトデータのデータ用エラーチェックコードと、パリティ用エラーチェックコードとを用いたそのライトデータ及びＲＡＩＤパリティに対するエラーチェック処理とを実行する（図２４のＳＰ１４８）。
【０１４８】
このエラーチェックの結果、エラーを検出したというチェック結果が得られた場合（図２４のＳＰ１４９：ＹＥＳ）、０系のＭＰＵ８Ａが、０系のキャッシュメモリ１０Ａに格納されたプログラムに基づき、上述の第２のエラー処理を開始する（図２４のＳＰ１４４）。そしてストレージ装置６１は、この後、このライト処理を終了する。
【０１４９】
これに対して、かかるエラーチェックの結果、エラーを検出しなかったというチェック結果が得られた場合（図２４のＳＰ１４９：ＮＯ）、ＭＰＵ８Ａが、ライトデータ及びそのデータ用エラーチェックコードと、ＲＡＩＤパリティ及びそのパリティ用エラーチェックコードとを０系のキャッシュメモリ１０Ａから読み出し、これらをドライブ制御部１１Ａに送信する（図２３の矢印ＲＡ５６）。
【０１５０】
かくしてドライブ制御部１１Ａは、これらライトデータ及びそのデータ用エラーチェックコードと、ＲＡＩＤパリティ及びそのパリティ用エラーチェックコードとを、かかるライトコマンドにおいて指定された論理ボリュームＶＯＬ内の対応するアドレス位置に格納する（図２４のＳＰ１５０）。そしてストレージ装置６１は、この後、このライト処理を終了する。
【０１５１】
なお、以上のライト処理が正常に終了した場合、１系のキャッシュメモリ１０Ｂに格納されたライトデータ及びそのデータ用エラーチェックコードと、これらのＲＡＩＤパリティ及びそのパリティ用エラーチェックコードとは、その後破棄される。
【０１５２】
以上のように本実施の形態による計算機システム６０によれば、ストレージ装置６１において、エラーチェックコードの生成及び当該エラーチェックコードを用いたエラーチェック処理をＭＰＵ８Ａが行うため、スイッチ６３Ａ，６３Ｂとして汎用のＰＣＩｅスイッチを用いることができ、かくしてコストを抑えながら信頼性高くデータ転送を行うことができる。
【０１５３】
（６）第６の実施の形態
図２３との対応部分に同一符号を付した図２５は、第６の実施の形態による計算機システム７０を示す。この計算機システム７０は、ストレージ装置７１の０系及び１系のコントローラ７２Ａ，７２Ｂにおいて、ホスト制御部７Ａ，７Ｂに加えてドライブ制御部７４Ａ，７４Ｂにもエラーチェック機能が搭載された点が第５の実施の形態によるストレージ装置６０と異なる。
【０１５４】
また計算機システム７０においては、このような構成の違いに伴い、ストレージ装置７０におけるライト処理の流れも第５の実施の形態によるストレージ装置６０と相違する。図２６は、本実施の形態によるストレージ装置７１におけるライト処理の流れを概略的に示すフローチャートである。
【０１５５】
なお図２５においては、ストレージ装置７１内の０系のコントローラ７２Ａがホストサーバ３からのライトコマンド及びライトデータを受信した場合における当該ストレージ装置７１内の処理の流れを示しているが、１系のコントローラ７２Ｂがライトコマンド及びライトデータを受信した場合も同様である。
【０１５６】
図２５の矢印ＲＡ６０〜ＲＡ６４、矢印ＲＢ６０及び矢印ＲＢ６１におけるデータの流れは、図２３の矢印ＲＡ５０〜ＲＡ５４、矢印ＲＢ５０及び矢印ＲＢ５１におけるデータの流れと同様である。また図２６のステップＳＰ１６０〜ステップＳＰ１６７において実行される処理は、図２４のステップＳＰ１４０〜ステップＳＰ１４７において実行される処理と全く同じである。
【０１５７】
本実施の形態と第５の実施の形態との相違点は、第５の実施の形態では、ストレージ装置６１において、ライトデータ及びＲＡＩＤパリティに対するエラーチェック処理をスイッチ９ＡのＤＭＡ部１３Ａにおいて実行していたのに対し、本実施の形態では、かかるエラーチェック処理をストレージ装置７１のドライブ制御部３３Ａにおいて実行することである。
【０１５８】
すなわち本実施の形態によるストレージ装置６１の場合、ライトデータ及びそのデータ用エラーチェックコードからなるデータ群のＲＡＩＤパリティ及びそのパリティ用エラーチェックコードを１系のキャッシュメモリ１０Ｂに格納し終えると（図２５の矢印ＲＢ６０、図２６のＳＰ１６７）、０系のドライブ制御部７４Ａが０系のキャッシュメモリ１０Ａからライトデータ及びそのデータ用エラーチェックコードと、これらのＲＡＩＤパリティ及びそのパリティ用エラーチェックコードとを読み出す。そして０系のドライブ制御部７４Ａは、このとき読み出したライトデータ及びパリティ用エラーチェックコードを用いたライトデータ及びＲＡＩＤパリティに対するエラーチェック処理を実行する（図２６のＳＰ１６８）。
【０１５９】
このエラーチェックの結果、エラーを検出したというチェック結果が得られた場合（図２６のＳＰ１６９：ＹＥＳ）、０系のＭＰＵ８Ａが、０系のキャッシュメモリ１０Ａに格納されたプログラムに基づき、上述の第１のエラー処理を開始する（図２６のＳＰ１６４）。そしてストレージ装置７１は、この後、このライト処理を終了する。
【０１６０】
これに対して、かかるエラーチェックの結果、エラーを検出しなかったというチェック結果が得られた場合（図２６のＳＰ１６９：ＮＯ）、０系のドライブ制御部７４Ａは、上述のように０系のキャッシュメモリ１０Ａから読み出した０系のキャッシュメモリ１０Ａからライトデータ及びそのデータ用エラーチェックコードと、これらのＲＡＩＤパリティ及びそのパリティ用エラーチェックコードとを、ライトコマンドにおいて指定された論理ボリュームＶＯＬ内の対応するアドレス位置に格納する（図１２のＳＰ１７０）。そしてストレージ装置３１は、この後、このライト処理を終了する。
【０１６１】
なお、以上のライト処理が正常に終了した場合、１系のキャッシュメモリ１０Ｂに格納されたライトデータ及びそのデータ用エラーチェックコードと、これらのＲＡＩＤパリティ及びそのパリティ用エラーチェックコードとは、その後破棄される。
【０１６２】
以上のように本実施の形態の計算機システム７０によれば、第５の実施の形態と同様に、ストレージ装置７１内におけるエラーチェックコードの生成及び当該エラーチェックコードを用いたエラーチェック処理をＭＰＵ８Ａが行うため、スイッチ７３Ａ，７３Ｂとして汎用のＰＣＩｅスイッチを用いることがで、かくしてコストを抑えながら信頼性高くデータ転送を行うことができる。
【０１６３】
また本実施の形態によれば、ドライブ制御部７４Ａ，７４Ｂにおいてエラーチェック処理を実行するため、キャッシュメモリ１０Ａ，１０Ｂ及びドライブ制御部７４Ａ，７４Ｂ間におけるデータ転送をも保証することができ、第５の実施の形態のストレージ装置６１に比べてより一層とデータ転送の信頼性を向上させることができる。
【０１６４】
さらに本実施の形態によれば、このようにドライブ制御部７４Ａ，７４Ｂにおいてエラーチェック処理を実行するようにしているため、ＭＰＵ８Ａ，８Ｂの処理負荷を軽減することができる。
【０１６５】
（７）第７の実施の形態
図２３との対応部分に同一符号を付して示す図２７は、第７の実施の形態による計算機システム８０の構成を示す。この計算機システム８０は、ストレージ装置８１のホスト制御部８３Ａ，８３Ｂにエラーチェックコードを生成するエラーチェックコード生成機能が搭載されておらず、かかるエラーチェックコードの生成処理及び当該エラーチェックコードを用いたエラーチェック処理を、キャッシュメモリ１０Ａ，１０Ｂに格納されたプログラムに基づいてＭＰＵ８Ａ，８Ｂにより実行する点が第５の実施の形態による計算機システム６０と異なる。
【０１６６】
また本実施の形態による計算機システム８０は、このような構成の違いに伴い、ストレージ装置８１におけるライト処理の流れも第５の実施の形態によるストレージ装置６０と相違する。
【０１６７】
なお図２７においては、ストレージ装置８１内の０系のコントローラ８２Ａがホストサーバ３からのライトコマンド及びライトデータを受信した場合における当該ストレージ装置８１内のデータの流れを示しているが、１系のコントローラ８２Ｂがライトコマンド及びライトデータを受信した場合も同様である。また図２８は、本実施の形態のストレージ装置８１におけるライト処理の流れを概略的に示すフローチャートある。
【０１６８】
このストレージ装置８１において、０系のホスト制御部８３Ａは、ホストサーバ３からのライトコマンド及びライトデータを受信すると（図２７の矢印ＲＡ７０）、ライトデータをスイッチ６３Ａのデュアルキャスト部１２Ａに送信する（図２７の矢印ＲＡ７１）。
【０１６９】
デュアルキャスト部１２Ａは、受信したライトデータを０系のキャッシュメモリ１０Ａに格納すると共に、これを１系のスイッチ６３Ｂに転送することにより、当該ライトデータを１系のキャッシュメモリ１０Ｂにも格納させる（図２７の矢印ＲＡ７２及び矢印ＲＢ７０、図２８のＳＰ１７０）。
【０１７０】
続いてＭＰＵ８Ａが、０系のキャッシュメモリ１０Ａに格納された所定のプログラム８４に基づいて、当該キャッシュメモリ１０Ａからライトデータを読み出し（図２７の矢印ＲＡ７３）、このライトデータのデータ用エラーチェックコードを生成する（図２８のＳＰ１７１）。
【０１７１】
またＭＰＵ８Ａは、かかるプログラム８４に基づいて、このデータ用エラーチェックコードを０系のキャッシュメモリ１０Ａに格納する（図２７の矢印ＲＡ７４、図２８のＳＰ１７２）と共に、当該データ用エラーチェックコードを０系のキャッシュメモリ１０Ａから読み出して１系のスイッチ６３Ｂに送信することにより、当該データ用エラーチェックコードを１系のキャッシュメモリ１０Ｂにも格納させる（図２７の矢印ＲＢ７１、図２８のＳＰ１７３）。
【０１７２】
次いでＭＰＵ８Ａは、かかるプログラム８４に基づいて、ライトデータ及びそのデータ用エラーチェックコードを０系のキャッシュメモリ１０Ａから読み出し（図２７の矢印ＲＡ７５）、そのデータ用エラーチェックコードを用いた当該ライトデータに対するエラーチェック処理を実行する（図２８のＳＰ１７４）。
【０１７３】
このエラーチェックの結果、エラーを検出したというチェック結果が得られた場合（図２８のＳＰ１７５：ＹＥＳ）、０系のＭＰＵ８Ａが、０系のキャッシュメモリ１０Ａに格納されたプログラムに基づき、上述の第１のエラー処理を開始する（図２８のＳＰ１７６）。そしてストレージ装置８１は、この後、このライト処理を終了する。
【０１７４】
これに対して、かかるエラーチェックの結果、エラーを検出しなかったというチェック結果が得られた場合（図２８のＳＰ１７５：ＮＯ）、ＭＰＵ８Ａは、プログラム８４に基づいて、ライトデータ及びそのデータ用エラーチェックコードからなるデータ群のＲＡＩＤパリティを生成すると共に、このＲＡＩＤパリティのパリティ用エラーチェックコードを生成する（図２８のＳＰ１７７）。
【０１７５】
またＭＰＵ８Ａは、かかるプログラム８４に基づいて、かかるＲＡＩＤパリティ及びそのパリティ用エラーチェックコードを０系のキャッシュメモリ１０Ａに格納すると共に（図２７の矢印ＲＡ７６、図２８のＳＰ１７８）、これらＲＡＩＤパリティ及びそのパリティ用エラーチェックコードを当該キャッシュメモリ１０Ａから読み出して１系のスイッチ６３Ｂに送信することにより、当該ＲＡＩＤパリティ及びそのパリティ用エラーチェックコードを１系のキャッシュメモリ１０Ｂに格納させる（図２７の矢印ＲＢ７２、図２８のＳＰ１７９）。
【０１７６】
この後、ＭＰＵ８Ａは、ライトデータ及びデータ用エラーチェックコードと、ＲＡＩＤパリティ及びそのパリティ用エラーチェックコードとを０系のキャッシュメモリ１０Ａから読み出し（図２７の矢印ＲＡ７７）、データ用エラーチェックコードとパリティ用エラーチェックコードとを用いて、ライトデータと、ＲＡＩＤパリティとに対するエラーチェック処理を実行する（図２８のＳＰ１８０）。
【０１７７】
このエラーチェックの結果、エラーを検出したというチェック結果が得られた場合（図２８のＳＰ１８１：ＹＥＳ）、ＭＰＵ８Ａが、０系のキャッシュメモリ１０Ａに格納されたプログラムに基づき、上述の第１のエラー処理を開始する（図２８のＳＰ１７６）。そしてストレージ装置８１は、この後、このライト処理を終了する。
【０１７８】
これに対して、かかるエラーチェックの結果、エラーを検出しなかったというチェック結果が得られた場合（図２８のＳＰ１８１：ＮＯ）、ＭＰＵ８Ａは、プログラム８４に基づいて、ライトデータ及びそのデータ用エラーチェックコードと、これらのＲＡＩＤパリティ及びそのパリティ用エラーチェックコードとを０系のキャッシュメモリ１０Ａから読み出し、これらをドライブ制御部１１Ａに送信する（図２７の矢印ＲＡ７８）。
【０１７９】
かくしてドライブ制御部１１Ａは、これらライトデータ及びそのデータ用エラーチェックコードと、これらのＲＡＩＤパリティ及びそのパリティ用エラーチェックコードとを、ライトコマンドにおいて指定された論理ボリュームＶＯＬ内の当該ライトコマンドにおいて指定されたアドレス位置に格納する（図２７の矢印ＲＡ７９、図２８のＳＰ１８２）。そしてストレージ装置８１は、この後、このライト処理を終了する。
【０１８０】
なお、以上のライト処理が正常に終了した場合、１系のキャッシュメモリ１０Ｂに格納されたライトデータ及びそのデータ用エラーチェックコードと、これらのＲＡＩＤパリティ及びそのパリティ用エラーチェックコードとは、その後破棄される。
【０１８１】
以上のように本実施の形態によれば、第５の実施の形態と同様に、ストレージ装置８１内におけるエラーチェックコードの生成及び当該エラーチェックコードを用いたエラーチェック処理をＭＰＵ８Ａが行うため、スイッチ６３Ａ，６３Ｂとして汎用のＰＣＩｅスイッチを用いることができ、かくしてコストを抑えながら信頼性高くデータ転送を行うことができる。
【０１８２】
また本実施の形態によれば、ライトデータ等に対するエラーチェックコードの生成や、当該エラーチェックコードを用いたエラーチェックをすべてＭＰＵ８Ａ，８Ｂにおいて実行するため、第５の実施の形態のストレージ装置４に比べてホスト制御部８３Ａ，８３Ｂや、ドライブ制御部１１Ａ，１１Ｂにおける負荷を軽減し、これらホスト制御部８３Ａ，８３Ｂ及びドライブ制御部１１Ａ，１１Ｂの構成を簡易化することができる。
【０１８３】
（８）第８の実施の形態
図２７との対応部分に同一符号を付して示す図２９は、第８の実施の形態による計算機システム９０を示す。この計算機システム９０は、ストレージ装置９１のドライブ制御部９３Ａにエラーチェック機能が搭載されている点が第７の実施の形態による計算機システム８０と異なる。
【０１８４】
また計算機システム９０においては、上述のような構成の違いに伴い、ストレージ装置９１におけるライト処理の流れも第７の実施の形態によるストレージ装置９１と相違する。図３０は、このような第８の実施の形態のストレージ装置９１におけるライト処理の流れを概略的に示すフローチャートある。
【０１８５】
なお図２９においては、ストレージ装置８１内の０系のコントローラ９２Ａがホストサーバ３からのライトコマンド及びライトデータを受信した場合における当該ストレージ装置９１内でのライト処理の流れを示しているが、１系のコントローラ９２Ａがライトコマンド及びライトデータを受信した場合も同様である。
【０１８６】
図２９において矢印ＲＡ８０〜矢印ＲＡ８６で示すデータの流れは、図２７の矢印ＲＡ３０〜矢印ＲＡ３７及び矢印ＲＢ３０〜矢印ＲＢ３３におけるデータの流れと同様である。また図３０のステップＳＰ１８０〜ステップＳＰ１８９において実行される処理は、図２８のステップＳＰ１７０〜ステップＳＰ１７９において実行される処理と全く同じである。異なる点は、第７実施の形態では、ライトデータ及びデータ用エラーチェックコードと、ＲＡＩＤパリティ及びそのパリティ用エラーチェックコードとのエラーチェックをＭＰＵ８Ａが行っていたのに対し、本実施の形態では、かかるエラーチェック処理をドライブ制御部９３Ａにおいて実行することである。
【０１８７】
すなわち本実施の形態によるストレージ装置９１の場合、０系のＭＰＵ８Ａがライトデータ及びそのデータ用エラーチェックコードからなるデータ群のＲＡＩＤパリティ及びそのパリティ用エラーチェックコードが０系のキャッシュメモリ１０Ａに格納されると（図２９の矢印ＲＢ８２、図３０のＳＰ１９９）、０系のドライブ制御部９３Ａがライトデータ及びそのデータ用エラーチェックコードと、これらのＲＡＩＤパリティ及びそのパリティ用エラーチェックコードとを０系のキャッシュメモリ１０Ａから読み出す（図２９の矢印ＲＡ８８）。
【０１８８】
そして０系のドライブ制御部９３Ａは、そのデータ用エラーチェックコードと、パリティ用エラーチェックコードとを用いて、当該ライトデータとＲＡＩＤパリティとに対するエラーチェック処理を実行する（図３０のＳＰ２００）。
【０１８９】
このエラーチェックの結果、エラーを検出したというチェック結果が得られた場合（図３０のＳＰ２０１：ＹＥＳ）、０系のＭＰＵ８Ａが、０系のキャッシュメモリ１０Ａに格納されたプログラムに基づき、上述の第１のエラー処理を開始する（図３０のＳＰ１９６）。そしてストレージ装置９１は、この後、このライト処理を終了する。
【０１９０】
これに対して、かかるエラーチェックの結果、エラーを検出しなかったというチェック結果が得られた場合（図３０のＳＰ２０１：ＮＯ）、ドライブ制御部９３Ａは、上述のように０系のキャッシュメモリ１０Ａから読み出したライトデータ及びそのデータ用エラーチェックコードと、これらのＲＡＩＤパリティ及びそのパリティ用エラーチェックコードとをライトコマンドにおいて指定された論理ボリュームＶＯＬ内の当該ライトコマンドにおいて指定されたアドレス位置に格納する（図２９の矢印ＲＡ８８、図３０のＳＰ２０２）。そしてストレージ装置９１は、この後、このライト処理を終了する。
【０１９１】
なお、以上のライト処理が正常に終了した場合、１系のキャッシュメモリ１０Ｂに格納されたライトデータ及びそのデータ用エラーチェックコードと、これらのＲＡＩＤパリティ及びそのパリティ用エラーチェックコードとは、その後破棄される。
【０１９２】
以上のように本実施の形態によれば、第５の実施の形態と同様に、ストレージ装置９１内におけるエラーチェックコードの生成及び当該エラーチェックコードを用いたエラーチェック処理をＭＰＵ８Ａが行うため、スイッチ６３Ａ，６３Ｂとして汎用のＰＣＩｅスイッチを用いることができ、かくしてコストを抑えながら信頼性高くデータ転送を行うことができる。
【０１９３】
また本実施の形態によれば、ドライブ制御部９３Ａ，９３Ｂにおいてエラーチェック処理を実行するようにしているため、例えばスイッチ６３Ａ，６３Ｂ及びドライブ制御部９３Ａ，９３Ｂ間におけるデータ転送をも保証することができ、従来に比べてより一層とデータ転送の信頼性を向上させることができる。
【０１９４】
さらに本実施の形態によれば、このようにドライブ制御部９３Ａ，９３Ｂにおいてエラーチェック処理を実行するため、第７の実施の形態のストレージ装置８１に比べて、ＭＰＵ８Ａ，８Ｂの負荷を軽減することができる。
【産業上の利用可能性】
【０１９５】
本発明は、ストレージ装置及びデータ転送方法に関し、ホストサーバから与えられたライトデータにエラーチェックコードを付加して装置内におけるデータ転送を行うストレージ装置に広く適用することができる。
【図１】
0005386593.tif 000002
【図２】
0005386593.tif 000003
【図３】
0005386593.tif 000004
【図４】
0005386593.tif 000005
【図５】
0005386593.tif 000006
【図６】
0005386593.tif 000007
【図７】
0005386593.tif 000008
【図８】
0005386593.tif 000009
【図９】
0005386593.tif 000010
【図１０】
0005386593.tif 000011
【図１１】
0005386593.tif 000012
【図１２】
0005386593.tif 000013
【図１３】
0005386593.tif 000014
【図１４】
0005386593.tif 000015
【図１５】
0005386593.tif 000016
【図１６】
0005386593.tif 000017
【図１７】
0005386593.tif 000018
【図１８】
0005386593.tif 000019
【図１９】
0005386593.tif 000020
【図２０】
0005386593.tif 000021
【図２１】
0005386593.tif 000022
【図２２】
0005386593.tif 000023
【図２３】
0005386593.tif 000024
【図２４】
0005386593.tif 000025
【図２５】
0005386593.tif 000026
【図２６】
0005386593.tif 000027
【図２７】
0005386593.tif 000028
【図２８】
0005386593.tif 000029
【図２９】
0005386593.tif 000030
【図３０】
0005386593.tif 000031