(57)【要約】【課題】他のＣＭのメモリへの書き込み転送を実施する際、ＣＭ内の全体性能が向上する。【解決手段】ＣＭ１は、ストレージに書き込まれるデータを一時的に記憶するメモリ１１と、他のＣＭ２と接続するスイッチ１２と、スイッチ１２を介してメモリ１１上のデータを他のＣＭ２へ転送するＤＭＡコントローラ１３とを有する。ＤＭＡコントローラ１３は、転送されたデータの転送状況をスイッチ１２から読み出し、読み出した転送状況をメモリ１１に書き込む。【選択図】図１
2015018314.tif 000002
【特許請求の範囲】
【請求項１】
ストレージに書き込まれるデータを一時的に記憶するメモリと、
他のストレージ制御装置と接続するスイッチと、
前記スイッチを介して前記メモリ上のデータを前記他のストレージ制御装置へ転送するデータ転送部と、
前記データ転送部によって転送されたデータの転送状況を前記スイッチから読み出し、読み出した転送状況を前記メモリに書き込む転送状況検出部と、
を有することを特徴とするストレージ制御装置。
【請求項２】
前記転送状況検出部によって書き込まれた転送状況を、前記メモリから読み出す制御部
を有することを特徴とする請求項１に記載のストレージ制御装置。
【請求項３】
前記データ転送部によるデータの転送に対応する応答を前記スイッチから受け取ると、前記データの転送に対応する進捗状況を前記メモリに書き込み、さらに、前記スイッチ内のデバイスに正常に書き込まれた際に発行される割り込みを前記制御部に対して通知させる進捗状況検出部
を有することを特徴とする請求項２に記載のストレージ制御装置。
【請求項４】
前記制御部は、前記割り込みを受け取ったタイミングで、前記メモリに書き込まれた進捗状況を読み出す
ことを特徴とする請求項３に記載のストレージ制御装置。
【請求項５】
コンピュータに、
他のストレージ制御装置と接続するスイッチを介してストレージに書き込まれるデータを一時的に記憶するメモリ上のデータを前記他のストレージ制御装置へ転送し、
前記転送する処理によって転送されたデータの転送状況を前記スイッチから読み出し、読み出した転送状況を前記メモリに書き込む
処理を実行させることを特徴とする制御プログラム。
【請求項６】
ストレージ制御装置が、
他のストレージ制御装置と接続するスイッチを介してストレージに書き込まれるデータを一時的に記憶するメモリ上のデータを前記他のストレージ制御装置へ転送し、
前記転送する処理によって転送されたデータの転送状況を前記スイッチから読み出し、読み出した転送状況を前記メモリに書き込む
処理を実行することを特徴とする制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージ制御装置などに関する。
【背景技術】
【０００２】
ストレージ装置は、複数のＣＭ（Controller  Module）をＰＣＩ  Ｅｘｐｒｅｓｓバスで接続する。複数のＣＭ間では、データの２重化や制御情報の受け渡しのため、ＣＭ間通信が行われる。ＣＭ間通信は、通信経路の状態によって失敗することがある。その際、通信起動側のＣＭは、適切なリカバリ処理を行うために、通信が正常に実施できたか否かをコマンド単位で正しく把握する必要がある。通信が正常に実施できたことは、自ＣＭのＤＭＡコントローラによって正常に終了されていること、自ＣＭのスイッチから外に対して正しく転送されたことで把握される。
【０００３】
ここで、ＣＭ間の通信経路の異常検出を、図８を参照して説明する。図８は、ＣＭ間の通信経路の異常検出を説明する図である。なお、図８の例では、ＣＭ０が通信起動側のＣＭであるとする。ＣＭ０は、メモリと、ＤＭＡ（Direct  Memory  Access）コントローラと、ＣＰＵ（Central  Processing  Unit）と、スイッチとを有する。スイッチは、例えば、ＰＣＩ  Ｅｘｐｒｅｓｓスイッチである。
【０００４】
まず、ＤＭＡコントローラは、メモリに記憶されるデータに関し、他のＣＭのメモリへの書き込み転送をスイッチに指示する（ステップＳ１０１）。メモリへの書き込み転送の指示を受けたスイッチは、メモリへの書き込み転送に対して正常応答する（ステップＳ１０２）。この正常応答は、他のＣＭに対する要求の受信を保証するものに過ぎず、他のＣＭがメモリの書き込み処理を完了したことを保障するものではない。この正常応答を受けたＤＭＡコントローラは、正常終了の割り込みをＣＰＵに通知する（ステップＳ１０３）。
【０００５】
メモリへの書き込み転送の指示を受けたスイッチでは、他のＣＭのメモリへ書き込み転送を実施する（ステップＳ１０４）。ここで、スイッチは、書き込み転送が失敗したとする。すると、スイッチは、書き込み転送が異常であることを応答する（ステップＳ１０５）。しかし、ＤＭＡコントローラは、書き込み転送が異常であることを認識できない。
【０００６】
正常終了の割り込みが通知されたＣＰＵは、スイッチ上の経路の各デバイスに対して、ＣＭ間経路の異常の有無を読み出す（ステップＳ１０６）。なお、仮に、ＣＰＵからの読み出し処理のタイミングが、他のＣＭのメモリへの書き込み転送が完了していない時点であっても、ＣＰＵは、メモリへの書き込み転送が完了した結果を示すＣＭ間経路の異常の有無を読み出すことができる。ＰＣＩ  Ｅｘｐｒｅｓｓスイッチでは、メモリへの書き込み処理が実施された後に、読み出し処理を実施するからである。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１２−１３３４０５号公報
【特許文献２】特開２０１２−４８７１２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、他のＣＭのメモリへの書き込み転送を実施する際、ＣＭ内の全体性能が劣化するという問題がある。例えば、ＣＰＵが、スイッチ上の経路の異常の有無を読み出すので、読み出す間使用状態となり、他のプロセスを処理できない。したがって、ＣＭ内の全体性能が劣化してしまう。
【０００９】
１つの側面では、本発明は、他のＣＭのメモリへの書き込み転送を実施する際、ＣＭ内の全体性能が向上することを目的とする。
【課題を解決するための手段】
【００１０】
本願の開示するストレージ制御装置は、１つの態様において、ストレージに書き込まれるデータを一時的に記憶するメモリと、他のストレージ制御装置と接続するスイッチと、
前記スイッチを介して前記メモリ上のデータを前記他のストレージ制御装置へ転送するデータ転送部と、前記データ転送部によって転送されたデータの転送状況を前記スイッチから読み出し、読み出した転送状況を前記メモリに書き込む転送状況検出部と、を有する。
【発明の効果】
【００１１】
本願の開示するシステムの１つの態様によれば、他のＣＭのメモリへの書き込み転送を実施する際、ＣＭ内の全体性能を向上できる。
【図面の簡単な説明】
【００１２】
【図１】図１は、実施例１に係るＲＡＩＤ装置のハードウェア構成を示す図である。
【図２】図２は、実施例１に係るＣＭのシーケンスを示す図である。
【図３】図３は、ＤＭＡの完了状態の読み出しにおける問題を説明する図である。
【図４】図４は、実施例２に係るＲＡＩＤ装置のハードウェア構成を示す図である。
【図５】図５は、実施例２に係るＣＭのシーケンスを示す図である。
【図６】図６は、未完了のＤＭＡコマンドの完了処理を誤って行ってしまう場合を説明する図である。
【図７】図７は、実施例３に係るＣＭのシーケンスを示す図である。
【図８】図８は、ＣＭ間の通信経路の異常検出を説明する図である。
【発明を実施するための形態】
【００１３】
以下に、本願の開示するストレージ制御装置、制御プログラムおよび制御方法の実施例を図面に基づいて詳細に説明する。なお、実施例によりこの発明が限定されるものではない。以下では、ＲＡＩＤ（Redundant  Arrays  of  Inexpensive  Disks）装置に本発明を適用した場合について説明する。
【実施例１】
【００１４】
［ＲＡＩＤ装置の構成］
図１は、実施例１に係るＲＡＩＤ装置のハードウェア構成を示す図である。図１に示すように、ＲＡＩＤ装置９は、複数のコントローラモジュール（ＣＭ）１，２と、ＰＣＩバス３と、ディスク４とを有する。ＣＭ１，２は、冗長化されている。ここでは０系のＣＭ１と１系のＣＭ２とが、ＰＣＩバス３を介してＣＭ間通信を行う。ＰＣＩバス３には、例えば、ＰＣＩ  Ｅｘｐｒｅｓｓバスである。
【００１５】
ＣＭ１，２は、ディスク４などのストレージと接続し、データを記憶するディスク４を制御する。なお、ＣＭ１が、通信起動側のＣＭであり、「ストレージ制御装置」の一例である。ＣＭ２が、「他のストレージ制御装置」の一例である。
【００１６】
ＣＭ１は、メモリ１１と、スイッチ１２と、ＤＭＡコントローラ１３と、ＣＰＵ１４とを有する。ＣＭ２は、メモリ２１と、スイッチ２２と、ＤＭＡコントローラ２３と、ＣＰＵ２４とを有する。なお、ＣＭ２は、ＣＭ１と同じデバイスを備えているので、ＣＭ２の説明を省略する。
【００１７】
メモリ１１は、ディスク４に書き込まれるデータを一時的に記憶する。
【００１８】
スイッチ１２は、例えば、ＰＣＩ  Ｅｘｐｒｅｓｓスイッチであり、他のＣＭ２のスイッチ２２との間のデータ転送と、ＣＭ１内の各デバイス間でのデータ転送を行う。スイッチ１２には、ＤＭＡコントローラ１３側のデバイス（以降、「ＵＰ」という）１２１と、他のＣＭ２側のデバイス（以降、「ＤＷ」という）１２２とが含まれる。ＵＰ１２１には、例えば、書き込み転送指示を正常に受け付けたか否かの状態が格納される。ＤＷ１２２には、例えば、他のＣＭ２への書き込み転送が正常に完了したか否かの状態が格納される。
【００１９】
例えば、スイッチ１２は、後述するＤＭＡコントローラ１３からの、他のＣＭ２のメモリ２１への書き込み転送指示により、ＤＭＡコントローラ１３に対して正常に受け付けた旨の応答をする。加えて、スイッチ１２は、ＰＣＩバス３を介して、他のＣＭ２に対してメモリ２１への書き込み転送を指示する。ここで、スイッチ１２は、書き込み転送が失敗した場合、書き込み転送が異常であることをＵＰ１２１に対して応答する。一例として、ＵＰ１２１およびＤＷ１２２間での転送異常、ＤＷ１２２からの転送異常の場合が挙げられる。ここでいう書き込み転送の異常は、アンコレクタブルエラー（以降、「ＵＥ」）という。一方、スイッチ１２は、書き込み転送が成功した場合、書き込み転送が正常であることをＵＰ１２１に対して応答する。但し、スイッチ１２は、ＤＭＡコントローラ１３に対して、書き込み転送の正常／異常を通知しない。
【００２０】
また、スイッチ１２は、ＤＭＡコントローラ１３からの、データの転送状況の読み出し指示により、ＵＰ１２１およびＤＷ１２２から転送状況を読み出し、読み出した転送状況についてＤＭＡコントローラ１３に応答する。
【００２１】
ＤＭＡコントローラ１３は、ＣＰＵ１４を介さないでメモリ１１と各デバイスとの間で直接データの転送を行う方式（ＤＭＡ：Direct  Memory  Access）のコントローラである。なお、ＤＭＡコントローラ１３は、データ転送部、転送状況検出部の一例である。
【００２２】
例えば、ＤＭＡコントローラ１３は、メモリ１１に記憶されたデータに関し、他のＣＭ２のメモリ２１への書き込み転送をスイッチ１２に指示する。ＤＭＡコントローラ１３は、メモリ２１への書き込み転送指示に対する正常応答をスイッチ２１から受け取ると、正常終了の割り込みをＣＰＵ１４に通知する。但し、この正常応答は、他のＣＭ２に対する要求の受け取りを保証するものに過ぎず、他のＣＭ２への書き込み転送が完了したことを保障するものではない。
【００２３】
また、ＤＭＡコントローラ１３は、データの転送状況の読み出しをスイッチ１２のＵＰ１２１に指示する。ＤＭＡコントローラ１３は、データの転送状況をスイッチ１２のＵＰ１２１から受け取ると、受け取った転送状況をメモリ１１に書き込む。また、ＤＭＡコントローラ１３は、データの転送状況の読み出しをスイッチ１２のＤＷ１２２に指示する。ＤＭＡコントローラ１３は、データの転送状況をスイッチ１２のＤＷ１２２から受け取ると、受け取った転送状況をメモリ１１に書き込む。これにより、ＤＭＡコントローラ１３は、ＣＰＵ１４を介さないで、直接スイッチ１２からデータの転送状況を読み出すので、ＣＰＵ１４による処理がそのまま不要となり、ＣＭ１内の全体性能を向上できる。
【００２４】
ＣＰＵ１４は、メモリ１１に書き込まれた転送状況を読み出す。例えば、ＣＰＵ１４は、ＤＭＡコントローラ１３：によってメモリ１１に書き込まれた転送状況に対応する応答を受け取ったタイミングで、当該転送状況を読み出す。これにより、ＣＰＵ１４は、スイッチ１２からではなくメモリ１１から読み出すので、高速にＣＭ間の経路上の異常を検出できる。なお、ＣＰＵ１４は、制御部の一例である。
【００２５】
［ＣＭのシーケンス］
次に、実施例１に係るＣＭのシーケンスを、図２を参照して説明する。図２は、ＣＭのシーケンスを示す図である。なお、ＣＭ１が、通信起動側のＣＭであるとする。
【００２６】
図２に示すように、ＤＭＡコントローラ１３は、メモリ１１に記憶されたデータに関し、他のＣＭ２のメモリ２１への書き込み転送（Ｍｅｍｏｒｙ  ｗｒｉｔｅ）をスイッチ１２のＵＰ１２１に指示する（ステップＳ１１）。
【００２７】
スイッチ１２では、Ｍｅｍｏｒｙ  ｗｒｉｔｅの指示を受け付けたスイッチ１２のＵＰ１２１は、ＤＭＡコントローラ１３に対して正常に受信した旨の応答を送信する（ステップＳ１２）。このとき、ＵＰ１２１は、正常の転送状況を保持する。加えて、ＵＰ１２１は、ＤＷ１２２に対して、他のＣＭ２のメモリ２１へのＭｅｍｏｒｙ  ｗｒｉｔｅを指示する（ステップＳ１３）。すると、ＤＷ１２２は、ＵＰ１２１からの指示に対する書き込み転送の正常／異常をＵＰ１２１に応答する（ステップＳ１４）。このとき、ＤＷ１２２は、正常／異常の転送状況を保持する。例えば、ＤＷ１２２は、他のＣＭ２に対する書き込み転送が成功した場合、ＵＰ１２１に対して、正常である旨の応答を送信する。一方、ＤＷ１２２は、他のＣＭ２に対する書き込み転送が失敗した場合、ＵＰ１２１に対して、異常である旨の応答を送信する。但し、ＵＰ１２１は、ＤＭＡコントローラ１３に対して、書き込み転送の正常／異常を通知しない。
【００２８】
ＤＭＡコントローラ１３では、Ｍｅｍｏｒｙ  ｗｒｉｔｅの指示に対する正常に受信した旨の応答を受信すると、データの転送状況の読み出し（Ｄｅｖｉｃｅ  Ｒｅａｄ）を、スイッチ１２のＵＰ１２１に指示する（ステップＳ１５）。
【００２９】
スイッチ１２では、Ｄｅｖｉｃｅ  Ｒｅａｄの指示を受け付けたスイッチ１２のＵＰ１２１は、転送状況を読み出し、読み出した転送状況についてＤＭＡコントローラ１３に応答する（ステップＳ１６）。
【００３０】
すると、ＤＭＡコントローラ１３は、ＵＰ１２１から受信した転送状況をメモリ１１に書き込む（ステップＳ１７）。そして、ＤＭＡコントローラ１３は、メモリ１１から転送完了の応答を受信すると、データの転送状況の読み出し（Ｄｅｖｉｃｅ  Ｒｅａｄ）を、スイッチ１２のＤＷ１２２に指示する（ステップＳ１９）。
【００３１】
スイッチ１２では、Ｄｅｖｉｃｅ  Ｒｅａｄの指示を受け付けたスイッチ１２のＤＷ１２２は、転送状況を読み出し、読み出した転送状況についてＤＭＡコントローラ１３に応答する（ステップＳ２０）。
【００３２】
すると、ＤＭＡコントローラ１３は、ＤＷ１２２から受信した転送状況をメモリ１１に書き込む（ステップＳ２１）。そして、ＤＭＡコントローラ１３は、メモリ１１から転送完了の応答を受信すると（ステップＳ２２）、ＣＰＵ１４に対して、正常終了した旨の応答を通知する（ステップＳ２３）。正常終了した旨の応答を受信したＣＰＵ１４は、ＵＥの有無を確認する（ステップＳ２４）。すなわち、ＣＰＵ１４は、メモリ１１に書き込まれた転送状況を読み出す。
【００３３】
［実施例１の効果］
上記実施例１によれば、ＤＭＡコントローラ１３は、メモリ１１上のデータを、スイッチ１２を介して他のＣＭ２へ転送する。そして、ＤＭＡコントローラ１３は、転送状況をスイッチ１２から読み出し、読み出した転送状況をメモリ１１に書き込む。かかる構成によれば、ＤＭＡコントローラ１３が、ＣＰＵ１４に代わってスイッチ１２から転送状況を読み出すので、ＣＰＵ１４による読み出し処理が不要となり、ＣＭ１内の全体性能を向上できる。すなわち、ＣＰＵ１４は、読み出し処理の間、他の処理を並行して行うことができ、ＣＭ１内の全体性能を向上できる。
【００３４】
また、上記実施例１によれば、ＣＰＵ１４は、ＤＭＡコントローラ１３によって書き込まれた転送状況をメモリ１１から読み出す。かかる構成によれば、ＣＰＵ１４は、メモリ１１から転送状況を読み出すので、高速にＣＭ間の経路上の異常を検出できる。
【実施例２】
【００３５】
ところで、実施例１では、ＤＭＡコントローラ１３は、メモリ１１上のデータを、スイッチ１２を介して他のＣＭ２へ転送し、転送状況をスイッチ１２から読み出すことにより、ＣＭ１内の全体性能を向上する場合を説明した。しかしながら、ＤＭＡコントローラ１３は、これに限定されず、さらに、転送状況が正常である場合のＤＭＡの進捗状況の読み出しについて、ＣＭ１内の性能を向上するようにしても良い。
【００３６】
ここで、ＤＭＡの進捗状況を含む完了状態の読み出しにおける問題を、図３を参照して説明する。図３は、ＤＭＡの完了状態の読み出しにおける問題を説明する図である。図３に示すように、ＤＭＡコントローラ１３は、メモリ１１に記憶されるデータに関し、他のＣＭ２のメモリ２１への書き込み転送をスイッチ１２に指示する（ステップＳ２０１）。メモリ２１への書き込み転送の指示を受けたスイッチ１２は、メモリ２１への書き込み転送に対して正常応答する（ステップＳ２０２）。この正常応答は、他のＣＭ２に対する要求の受信を保証するものに過ぎず、他のＣＭ２がメモリ２１の書き込み処理を完了したことを保障するものではない。この正常応答を受けたＤＭＡコントローラ１３は、正常終了の割り込みをＣＰＵ１４に通知する（ステップＳ２０３）。
【００３７】
メモリ２１への書き込み転送の指示を受けたスイッチ１２では、他のＣＭ２のメモリ２１へ書き込み転送を実施する（ステップＳ２０４）。ここで、スイッチ１２は、書き込み転送が成功したとする。すると、スイッチ１２は、書き込み転送が正常であることを応答する（ステップＳ２０５）。ここでは、ＤＭＡコントローラ１３は、書き込み転送が正常であることを認識できない。
【００３８】
正常終了の割り込みが通知されたＣＰＵ１４は、ＤＭＡコントローラ１３内の進捗レジスタおよびステータスレジスタからＤＭＡの完了状態を読み出す（ステップＳ２０６）。ここで、進捗レジスタには、ＤＭＡが正常終了した場合に、ＤＭＡが正常終了したことに加えて、どこまでＤＭＡが完了したかを示す進捗状況が保持されている。ステータスレジスタには、ＤＭＡが異常終了した場合に、ＤＭＡが異常終了したことに加えて、どのような異常であるかが保持されている。
【００３９】
このように、ＣＰＵ１４が、ＤＭＡコントローラ１３内の進捗レジスタおよびステータスレジスタからＤＭＡの進捗状況を含む完了状態を読み出すので、読み出しに時間を要し、ＣＭ１内の性能を劣化するという問題がある。
【００４０】
そこで、実施例２では、ＤＭＡコントローラ１３が、ＤＭＡにおいて、他のＣＭ２への転送状況をスイッチ１２から読み出すとともに、転送状況が正常である場合に、ＤＭＡの進捗状況の読み出し性能を向上する場合について説明する。
【００４１】
［実施例２に係るＲＡＩＤ装置の構成］
図４は、実施例２に係るＲＡＩＤ装置のハードウェア構成を示す図である。なお、図１に示すＲＡＩＤ装置９と同一の構成については同一符号を示すことで、その重複する構成および動作の説明については省略する。実施例１と実施例２とが異なるところは、ＤＭＡコントローラ１３をＤＭＡコントローラ１３Ａに変更し、スイッチ１２をスイッチ１２Ａに変更し、ＣＰＵ１４をＣＰＵ１４Ａに変更した点にある。
【００４２】
スイッチ１２Ａは、例えば、ＰＣＩ  Ｅｘｐｒｅｓｓスイッチであり、他のＣＭ２のスイッチ２２との間のデータ転送と、ＣＭ１内の各デバイス間でのデータ転送を行う。スイッチ１２Ａは、自スイッチのデバイスに正常に書き込まれた場合に、ＣＰＵ１４Ａに対して割り込みを通知するドアベル（Ｄｏｏｒｂｅｌｌ）機能を搭載する。例えば、スイッチ１２Ａは、後述するＤＭＡコントローラ１３Ａからの、Ｄｏｏｒｂｅｌｌ書き込み転送指示により、ＵＰ１２１およびＤＷ１２２に対してデータが書き込まれる。そして、スイッチ１２Ａは、正常に書き込まれた場合に、ＣＰＵ１４Ａに対してＤｏｏｒｂｅｌｌ割り込みを通知する。つまり、Ｄｏｏｒｂｅｌｌ割り込みが通知されれば、他のＣＭ２への書き込み転送が完了したことが保障される。
【００４３】
ＤＭＡコントローラ１３Ａは、ＣＰＵ１４を介さないでメモリ１１と各デバイスとの間で直接データの転送を行う方式のコントローラである。なお、ＤＭＡコントローラ１３Ａは、メモリ１１に記憶されたデータに関し、他のＣＭ２のメモリ２１への書き込み転送をスイッチ１２Ａに指示する。そして、ＤＭＡコントローラ１３Ａは、データの転送状況の読み出しをスイッチ１２Ａに指示し、メモリ１１に書き込む。これらの処理は、実施例１と同様であるので、動作の説明を省略する。また、ＤＭＡコントローラ１３は、データ転送部、転送状況検出部および進捗状況検出部の一例である。
【００４４】
例えば、ＤＭＡコントローラ１３Ａは、他のＣＭ２のメモリ２１への書き込み転送指示に対する正常応答をスイッチ２１から受け取ると、進捗レジスタ相当の進捗状況をメモリ１１に書き込む。そして、ＤＭＡコントローラ１３Ａは、Ｄｏｏｒｂｅｌｌ書き込み転送をスイッチ１２Ａに指示する。
【００４５】
ＣＰＵ１４Ａは、メモリ１１に書き込まれた進捗状況を読み出す。なお、ＣＰＵ１４Ａは、メモリ１１に書き込まれた転送状況を読み出すが、この処理は、実施例１と同様であるので、動作の説明を省略する。
【００４６】
例えば、ＣＰＵ１４Ａは、スイッチ１２ＡからＤｏｏｒｂｅｌｌ割り込みを受け取ると、メモリ１１に書き込まれた進捗状況を読み出す。これにより、ＣＰＵ１４Ａは、ＤＭＡコントローラ１３Ａのレジスタからではなくメモリ１１から読み出すので、高速にＤＭＡの進捗状況を検出できる。
【００４７】
［ＣＭのシーケンス］
次に、実施例２に係るＣＭのシーケンスを、図５を参照して説明する。図５は、実施例２に係るＣＭのシーケンスを示す図である。なお、ＣＭ１が、通信起動側のＣＭであるとする。また、ＤＭＡの転送状況が正常であるとする。
【００４８】
図５に示すように、ＤＭＡコントローラ１３Ａは、メモリ１１に記憶されたデータに関し、他のＣＭ２のメモリ２１への書き込み転送（Ｍｅｍｏｒｙ  ｗｒｉｔｅ）をスイッチ１２ＡのＵＰ１２１に指示する（ステップＳ３１）。
【００４９】
スイッチ１２Ａでは、Ｍｅｍｏｒｙ  ｗｒｉｔｅの指示を受け付けたスイッチ１２ＡのＵＰ１２１は、ＤＭＡコントローラ１３Ａに対して正常に受信した旨の応答を送信する（ステップＳ３２）。加えて、ＵＰ１２１は、ＤＷ１２２に対して、他のＣＭ２のメモリ２１へのＭｅｍｏｒｙ  ｗｒｉｔｅを指示する（ステップＳ３４）。すると、ＤＷ１２２は、ＤＭＡの転送状況が正常である場合であるので、ＵＰ１２１からの指示に対する書き込み転送の正常をＵＰ１２１に応答する（ステップＳ３５）。
【００５０】
ＤＭＡコントローラ１３Ａでは、Ｍｅｍｏｒｙ  ｗｒｉｔｅの指示に対する正常に受信した旨の応答を受信すると、ＣＰＵ１４に対して、正常終了した旨の応答を通知する（ステップＳ３３）。なお、ＣＰＵ１４は、この通知に対して何も処理しない。そして、ＤＭＡコントローラ１３は、進捗レジスタ相当の進捗状況をメモリ１１に書き込む（ステップＳ３６）。続いて、ＤＭＡコントローラ１３Ａは、Ｄｏｏｒｂｅｌｌ書き込み転送（Ｄｏｏｒｂｅｌｌ  ｗｒｉｔｅ）をスイッチ１２ＡのＵＰ１２１に指示する（ステップＳ３７）。
【００５１】
スイッチ１２Ａでは、Ｄｏｏｒｂｅｌｌ  ｗｒｉｔｅの指示を受け付けたスイッチ１２ＡのＵＰ１２１は、ＤＭＡコントローラ１３Ａに対して正常に受信した旨の応答を送信する（ステップＳ３８）。加えて、ＵＰ１２１は、ＤＷ１２２に対して、Ｄｏｏｒｂｅｌｌ  ｗｒｉｔｅを指示する（ステップＳ３９）。すると、ＤＷ１２２は、ＤＭＡの転送状況が正常である場合であるので、ＵＰ１２１からの指示に対する書き込み転送の正常をＵＰ１２１に応答する（ステップＳ４０）。そして、ＤＷ１２２は、書き込み転送が正常であったので、ＣＰＵ１４に対して、Ｄｏｏｒｂｅｌｌ割り込みを通知する（ステップＳ４１）。
【００５２】
Ｄｏｏｒｂｅｌｌ割り込みを受け付けたＣＰＵ１４は、メモリ１１から、進捗レジスタ相当を読み出す（ステップＳ４２）。すなわち、ＣＰＵ１４は、メモリ１１に書き込まれたＤＭＡの進捗状況を読み出す。
【００５３】
［実施例２の効果］
上記実施例２によれば、ＤＭＡコントローラ１３Ａは、データの転送に対応する応答をスイッチ１２Ａから受け取ると、データの転送に対応する進捗状況をメモリ１１に書き込む。さらに、ＤＭＡコントローラ１３Ａは、スイッチ１２Ａ内のデバイスに正常に書き込まれた際に発行される割り込みをＣＰＵ１４Ａに対して通知させる。かかる構成によれば、ＤＭＡコントローラ１３Ａは、スイッチ１２Ａに、スイッチ１２Ａ内のデバイスに正常に書き込まれた際に発行される割り込みをＣＰＵ１４Ａに通知させることで、当該デバイスまでの書き込みが成功したことを知らせることができる。
【００５４】
また、上記実施例２によれば、ＣＰＵ１４Ａは、スイッチ１２Ａからの割り込みを受け取ったタイミングで、メモリ１１に書き込まれた進捗状況を読み出す。かかる構成によれば、ＣＰＵ１４Ａは、進捗状況をＤＭＡコントローラ１３Ａのレジスタからでなく、メモリ１１から読み出すので、高速に進捗状況を検出できる。
【実施例３】
【００５５】
ところで、実施例１では、ＤＭＡコントローラ１３が、ＤＭＡにおいて、他のＣＭ２への転送状況をスイッチ１２から読み出すとともに、転送状況が正常である場合に、ＤＭＡの進捗状況の読み出し性能を向上する場合について説明した。すなわち、ＤＭＡコントローラ１３は、転送状況が正常である場合のＤＭＡの進捗レジスタ相当の進捗状況を、スイッチ１２ＡのＤｏｏｒｂｅｌｌ機能を利用して、ＣＰＵ１４Ａに読み出させる。しかしながら、複数のＤＭＡコマンドが動作する場合に、未完了のＤＭＡコマンドの完了処理を誤って行ってしまうおそれがあるという問題がある。
【００５６】
ここで、かかる問題について、図６を参照して説明する。図６は、未完了のＤＭＡコマンドの完了処理を誤って行ってしまう場合を説明する図である。なお、ＤＭＡコマンドは、例えば、他のＣＭ２のメモリ２１への書き込み転送（Ｍｅｍｏｒｙ  Ｗｒｉｔｅ）コマンドであり、コマンド１とコマンド２とが動作中であるとする。メモリ１１には、進捗Ａ相当の進捗状況が書き込まれる進捗Ａ領域が予め割り当てられているとする。また、図６では、図５のシーケンス内の処理を参照し、［  ］内の数字は、コマンド１の場合「１」とし、コマンド２の場合「２」とする。
【００５７】
このような状況の下、スイッチ１２Ａからコマンド１の指示に対する正常に受信した旨の応答を受信したＤＭＡコントローラ１３Ａは、進捗Ａ相当の進捗状況をメモリ１１の進捗Ａ領域に書き込む（ステップＳ３６［１］）。一例として、「コマンド１完了」が進捗Ａ領域に書き込まれる。
【００５８】
続いて、スイッチ１２Ａからコマンド２の指示に対する正常に受信した旨の応答を受信したＤＭＡコントローラ１３Ａは、進捗Ａ相当の進捗状況をメモリ１１の進捗Ａ領域に書き込む（ステップＳ３６［２］）。一例として、「コマンド２完了」が進捗Ａ領域に書き込まれる。
【００５９】
その後、ＣＰＵ１４Ａは、コマンド１に対するＤｏｏｒｂｅｌｌ割り込みを受け付けると（ステップＳ４１［１］）、コマンド１は完了となる。そして、ＣＰＵ１４Ａは、メモリ１１から、進捗Ａ相当を進捗Ａ領域から読み出す（ステップＳ４２［１］）。ここでは、ＣＰＵ１４Ａは、「コマンド２完了」を読み出してしまう。つまり、コマンド２は未完了であるにもかかわらず、未完了のコマンド２の完了処理が誤って行われてしまう。
【００６０】
そこで、実施例３では、複数のＤＭＡコマンドが動作する場合であっても、未完了のＤＭＡコマンドの完了処理を誤って行わないＣＭ１について説明する。
【００６１】
［実施例３に係るＲＡＩＤ装置の構成］
実施例３に係るＲＡＩＤ装置のハードウェア構成は、実施例２に係るＲＡＩＤ装置のハードウェア構成（図４参照）と同様であるので、その重複する構成および動作の説明については省略する。
【００６２】
ＤＭＡコントローラ１３Ａは、進捗レジスタ相当の進捗領域を２つ分メモリ１１に割り当て、２つの進捗領域にそれぞれ進捗状況を書き込む。例えば、ＤＭＡコントローラ１３Ａは、他のＣＭ２のメモリ２１への書き込み転送指示に対する正常応答をスイッチ１１ＡのＵＰ１２１から受け取ると、進捗レジスタ相当の進捗状況として、一例として現に動作中のＤＭＡコマンドの識別子をメモリ１１の１つ目の進捗領域に書き込む。そして、ＤＭＡコントローラ１３Ａは、Ｄｏｏｒｂｅｌｌ書き込み転送をスイッチ１２Ａに指示する。また、ＤＭＡコントローラ１３Ａは、データの転送状況をスイッチ１２ＡのＤＷ１２２から受け取ると、進捗レジスタ相当の進捗状況として、一例として現に動作中のＤＭＡコマンドの識別子をメモリ１１の２つ目の進捗領域に書き込む。これにより、ＤＭＡコントローラ１３Ａは、ＤＭＡの進捗として、ＵＰ１２１までの進捗とＤＷ１２２までの進捗とをメモリ１１に保持することができる。この結果、後述するＣＰＵ１４Ａは、複数の進捗状況を把握することができる。
【００６３】
ＣＰＵ１４Ａは、メモリ１１に書き込まれた進捗状況を読み出す。例えば、ＣＰＵ１４Ａは、スイッチ１２ＡからＤｏｏｒｂｅｌｌ割り込みを受け取ると、メモリ１１の２つの進捗領域に書き込まれたそれぞれの進捗状況を読み出す。そして、ＣＰＵ１４Ａは、読み出した２つの進捗状況が一致しているか否かを判定する。ＣＰＵ１４Ａは、一致していると判定する場合、２つの進捗領域に対応するデバイスまで完了処理が実施されたと判断する。一方、ＣＰＵ１４Ａは、一致していないと判定する場合、どちらか一方の進捗領域に対応するデバイスまで完了処理が実施されたと判断する。そして、ＣＰＵ１４Ａは、一致していないと判定する場合、一例として、所定期間後に２つの進捗領域が一致することを確認すべく、判定処理を実行する。
【００６４】
なお、ＤＭＡコントローラ１３Ａは、Ｄｏｏｒｂｅｌｌ書き込み転送をスイッチ１２Ａに指示した後に、スイッチ１２ＡのＵＰ１２１およびＤＷ１２２にそれぞれデータの転送状況の読み出しを指示するようにする。この結果、複数のＤＭＡコマンドが動作する場合に、未完了の（次の）ＤＭＡコマンドの完了処理を誤って行ってしまうという問題は解決できる。スイッチ１２Ａは、現在のＤＭＡコマンドの転送状況の読み出しが完了するまで、次のＤＭＡコマンドを実行しない。したがって、ＤＭＡコントローラ１３Ａは、現在のＤＭＡコマンドの転送状況の読み出しが完了した後にしか、次のＤＭＡコマンドを処理できないことになる。さらに、スイッチ１２Ａは、現在のＤＭＡコマンドの読み出し前に指示されたＤｏｏｒｂｅｌｌ書き込み転送を必ず先に実施し、Ｄｏｏｒｂｅｌｌ割り込みを先にＣＰＵ１４Ａに通知する。そうすると、ＣＰＵ１４Ａは、次のＤＭＡコマンドが処理される前に、Ｄｏｏｒｂｅｌｌ割り込みを受け付けるので、この段階で次のＤＭＡコマンドの進捗状況を読み出すことはない。すなわち、複数のＤＭＡコマンドが動作する場合であっても、未完了の（次の）ＤＭＡコマンドの完了処理を誤って行うことを防止できる。
【００６５】
［ＣＭのシーケンス］
次に、実施例３に係るＣＭのシーケンスを、図７を参照して説明する。図７は、ＣＭのシーケンスを示す図である。なお、コマンド１とコマンド２とが動作中であるとする。また、メモリ１１には、進捗Ａ相当の進捗状況が書き込まれる進捗Ａ領域と、進捗Ｂ相当の進捗状況が書き込まれる進捗Ｂ領域とが予め割り当てられているとする。
【００６６】
図７に示すように、スイッチ１２Ａからコマンド１の指示に対する正常に受信した旨の応答を受信したＤＭＡコントローラ１３Ａは、進捗Ａ相当の進捗状況をメモリ１１の進捗Ａ領域に書き込む（ステップＳ５１）。一例として、「コマンド１完了」が進捗Ａ領域に書き込まれる。続いて、ＤＭＡコントローラ１３Ａは、Ｄｏｏｒｂｅｌｌ書き込み転送（Ｄｏｏｒｂｅｌｌ  ｗｒｉｔｅ）をスイッチ１２ＡのＵＰ１２１に指示する（ステップＳ５２）。
【００６７】
続いて、スイッチ１２ＡのＤＷ１２２から転送状況を受信したＤＭＡコントローラ１３Ａは、進捗Ｂ相当の進捗状況をメモリ１１の進捗Ｂ領域に書き込む（ステップＳ５３）。一例として、「コマンド１完了」が進捗Ｂ領域に書き込まれる。
【００６８】
その後、ＣＰＵ１４Ａは、コマンド１に対するＤｏｏｒｂｅｌｌ割り込みをスイッチ１２Ａから受け付けると（ステップＳ５４）、コマンド１は完了となる。そして、ＣＰＵ１４Ａは、メモリ１１から、進捗Ａ相当を進捗Ａ領域から読み出す（ステップＳ５５）。そして、ＣＰＵ１４Ａは、メモリ１１から、進捗Ｂ相当を進捗Ｂ領域から読み出す（ステップＳ５６）。ここでは、ＣＰＵ１４Ａは、進捗Ａ領域と進捗Ｂ領域がコマンド１であり一致しているので、コマンド１は、２つの進捗領域に対応するデバイスまで完了処理が実施されたと判断できる。
【００６９】
続いて、スイッチ１２Ａからコマンド２の指示に対する正常に受信した旨の応答を受信したＤＭＡコントローラ１３Ａは、進捗Ａ相当の進捗状況をメモリ１１の進捗Ａ領域に書き込む（ステップＳ５７）。一例として、「コマンド２完了」が進捗Ａ領域に書き込まれる。続いて、ＤＭＡコントローラ１３Ａは、Ｄｏｏｒｂｅｌｌ書き込み転送（Ｄｏｏｒｂｅｌｌ  ｗｒｉｔｅ）をスイッチ１２ＡのＵＰ１２１に指示する（ステップＳ５８）。
【００７０】
続いて、スイッチ１２ＡのＤＷ１２２から転送状況を受信したＤＭＡコントローラ１３Ａは、進捗Ｂ相当の進捗状況をメモリ１１の進捗Ｂ領域に書き込む（ステップＳ５９）。一例として、「コマンド２完了」が進捗Ｂ領域に書き込まれる。
【００７１】
その後、ＣＰＵ１４Ａは、コマンド２に対するＤｏｏｒｂｅｌｌ割り込みをスイッチ１２Ａから受け付けると（ステップＳ６０）、コマンド２は完了となる。そして、ＣＰＵ１４Ａは、メモリ１１から、進捗Ａ相当を進捗Ａ領域から読み出す（ステップＳ６１）。そして、ＣＰＵ１４Ａは、メモリ１１から、進捗Ｂ相当を進捗Ｂ領域から読み出す（ステップＳ６２）。ここでは、ＣＰＵ１４Ａは、進捗Ａ領域と進捗Ｂ領域がコマンド２であり一致しているので、コマンド２は、２つの進捗領域に対応するデバイスまで完了処理が実施されたと判断できる。
【００７２】
［実施例３の効果］
上記実施例３によれば、ＤＭＡコントローラ１３Ａは、データの転送に対応する応答をスイッチ１２Ａから受け取ると、データの転送に対応する進捗状況をメモリ１１の第１の領域に書き込む。そして、ＤＭＡコントローラ１３Ａは、転送状況をスイッチ１２ＡのＤＷ１２２から読み出すと、データの転送に対応する進捗状況をメモリ１１の第２の領域に書き込む。さらに、ＤＭＡコントローラ１３Ａは、スイッチ１２Ａ内のデバイスに正常に書き込まれた際に発行される割り込みをＣＰＵ１４Ａに対して通知させる。そして、ＣＰＵ１４Ａは、割り込みを受け取ったタイミングで、第１の領域および第２の領域に書き込まれた進捗状況を読み出す。かかる構成によれば、ＤＭＡコントローラ１３Ａは、メモリ１１の第１の領域および第２の領域に、データの転送に対応する進捗状況を書き込むので、データの転送に関わる進捗状況を保持できる。この結果、ＣＰＵ１４Ａは、データの転送に関わる複数の進捗を把握することができる。
【００７３】
［その他］
なお、実施例３では、ＤＭＡコントローラ１３Ａは、進捗レジスタ相当の進捗領域を２つ分メモリ１１に割り当て、２つの進捗領域にそれぞれ進捗状況を書き込む。しかしながら、ＤＭＡコントローラ１３Ａは、これに限定されず、進捗レジスタ相当の進捗領域を２つ以上メモリ１１に割り当て、割り当てた複数の進捗領域にそれぞれ進捗状況を書き込むようにしても良い。これにより、ＤＭＡコントローラ１３Ａは、ＤＭＡの進捗として、さらに複数の進捗状況をメモリ１１に保持することができる。
【００７４】
以上説明した実施形態及びその変形例に関し、更に以下の付記を開示する。
【００７５】
（付記１）ストレージに書き込まれるデータを一時的に記憶するメモリと、
他のストレージ制御装置と接続するスイッチと、
前記スイッチを介して前記メモリ上のデータを前記他のストレージ制御装置へ転送するデータ転送部と、
前記データ転送部によって転送されたデータの転送状況を前記スイッチから読み出し、読み出した転送状況を前記メモリに書き込む転送状況検出部と、
を有することを特徴とするストレージ制御装置。
【００７６】
（付記２）前記転送状況検出部によって書き込まれた転送状況を、前記メモリから読み出す制御部
を有することを特徴とする付記１に記載のストレージ制御装置。
【００７７】
（付記３）前記データ転送部によるデータの転送に対応する応答を前記スイッチから受け取ると、前記データの転送に対応する進捗状況を前記メモリに書き込み、さらに、前記スイッチ内のデバイスに正常に書き込まれた際に発行される割り込みを前記制御部に対して通知させる進捗状況検出部
を有することを特徴とする付記２に記載のストレージ制御装置。
【００７８】
（付記４）前記制御部は、前記割り込みを受け取ったタイミングで、前記メモリに書き込まれた進捗状況を読み出す
ことを特徴とする付記３に記載のストレージ制御装置。
【００７９】
（付記５）前記進捗状況検出部は、前記データ転送部によるデータの転送に対応する応答を前記スイッチから受け取ると、前記データの転送に対応する進捗状況を前記メモリの第１の領域に書き込み、前記転送状況検出部によって前記転送状況を前記スイッチから読み出すと、前記データの転送に対応する進捗状況を前記メモリの第２の領域に書き込み、さらに、前記スイッチ内のデバイスに正常に書き込まれた際に発行される割り込みを前記制御部に対して通知させ
前記制御部は、前記割り込みを受け取ったタイミングで、前記第１の領域および前記第２の領域に書き込まれた進捗状況を読み出す
ことを特徴とする付記４に記載のストレージ制御装置。
【００８０】
（付記６）コンピュータに、
他のストレージ制御装置と接続するスイッチを介してストレージに書き込まれるデータを一時的に記憶するメモリ上のデータを前記他のストレージ制御装置へ転送し、
前記転送する処理によって転送されたデータの転送状況を前記スイッチから読み出し、読み出した転送状況を前記メモリに書き込む
処理を実行させることを特徴とする制御プログラム。
【００８１】
（付記７）ストレージ制御装置が、
他のストレージ制御装置と接続するスイッチを介してストレージに書き込まれるデータを一時的に記憶するメモリ上のデータを前記他のストレージ制御装置へ転送し、
前記転送する処理によって転送されたデータの転送状況を前記スイッチから読み出し、読み出した転送状況を前記メモリに書き込む
処理を実行することを特徴とする制御方法。
【符号の説明】
【００８２】
１，２  ＣＭ
３  ＰＣＩバス
４  ディスク
１１，２１  メモリ
１２，１２Ａ，２２  スイッチ
１３，１３Ａ，２３  ＤＭＡコントローラ
１４，１４Ａ，２４  ＣＰＵ
１２１  ＵＰ
１２２  ＤＷ
【図１】
2015018314.tif 000003
【図２】
2015018314.tif 000004
【図３】
2015018314.tif 000005
【図４】
2015018314.tif 000006
【図５】
2015018314.tif 000007
【図６】
2015018314.tif 000008
【図７】
2015018314.tif 000009
【図８】
2015018314.tif 000010