(57)【要約】  復電後のキャッシュデータの復元処理の時間を短縮する。  停電から復帰したことが検出されたときは、制御手段（１ｃ）は、読出手段（１ａ）に対し、プリフェッチ量の大きいバーストモードでのデータ転送を指示する。そして、エラーが検出されたときは、その領域をコレクトモードで再度データ転送させる。また、読出手段（１ａ）と消去手段（１ｂ）に異なるアクセスポートを指示し、それぞれを並行して動作させる。読出手段（１ａ）は、フラッシュメモリ（３ａ），（３ｂ）に格納されるキャッシュデータを読み出し、キャッシュメモリ（２）に格納する。消去手段（１ｂ）は、読出手段（１ａ）と異なるアクセスポートを用いて、フラッシュメモリ（３ａ），（３ｂ）に格納される読出手段（１ａ）によるデータ転送が終了したデータを消去する。
2010016115.tif 000002
【特許請求の範囲】
【請求項１】
停電発生時に不揮発性メモリに格納されたデータを復電時にキャッシュメモリに復元するディスクアレイ装置の制御ユニットにおいて、
ディスク装置の所定の領域のデータのコピーを一時格納する前記キャッシュメモリと、
複数のアクセスポートを有し、停電発生時に前記キャッシュメモリに格納されていたキャッシュデータが書き込まれる前記不揮発性メモリと、
前記不揮発性メモリに格納される前記キャッシュデータを所定のデータ転送サイズで読み出し、前記キャッシュメモリに書き戻す読出手段と、前記不揮発性メモリに格納されるデータを消去する消去手段と、停電から復帰したことが検出されたときは、前記読出手段と前記消去手段とに異なる前記アクセスポートを指定し、前記読出手段と前記消去手段とを並行して動作させるとともに、前記読出手段によるデータ転送のエラー発生状況に応じて前記データ転送サイズを適宜設定して前記キャッシュデータを前記キャッシュメモリに復元する復電処理を行う制御手段と、を備えたデータ転送部と、
を有することを特徴とするディスクアレイ装置の制御ユニット。
【請求項２】
前記制御手段は、前記消去手段に対し、前記読出手段に設定したアクセスポートとは異なるアクセスポートであって、前記読出手段による前記不揮発性メモリからの読出処理が終了した前記不揮発性メモリの領域に対応するアクセスポートを指定し、前記読出処理が終了した前記不揮発性メモリの領域の消去処理を指示する、
ことを特徴とする請求の範囲第１項記載のディスクアレイ装置の制御ユニット。
【請求項３】
前記不揮発性メモリは、少なくとも、それぞれ前記アクセスポートが異なり、アクセス可能な領域に対して共通のアドレスが設定される一対のメモリ領域で構成され、
前記制御手段は、前記読出手段と前記消去手段に対し、異なる前記アクセスポートと、共通の処理開始アドレスとを指定して動作を開始させる、
ことを特徴とする請求の範囲第２項記載のディスクアレイ装置の制御ユニット。
【請求項４】
前記制御手段は、前記一対のメモリ領域に対応する前記アクセスポートのうちの一方を、前記読出手段または前記消去手段のいずれかに割り当てると、前記アクセスポートが割り当てられなかった前記消去手段または前記読出手段に、他方の前記アクセスポートを自動選択する選択手段を有する、ことを特徴とする請求の範囲第３項記載のディスクアレイ装置の制御ユニット。
【請求項５】
前記制御手段は、前記共通のアドレスが設定される前記一対のメモリ領域の前記所定のデータ転送サイズに応じた処理ブロックごとに、前記読出処理と前記消去処理とを続けて行い、前記処理ブロックに対応する前記メモリ領域のキャッシュデータが復元され、前記メモリ領域が消去された後、次の処理ブロックの処理を行う、ことを特徴とする請求の範囲第３項記載のディスクアレイ装置の制御ユニット。
【請求項６】
前記制御手段は、前記不揮発性メモリの領域の先頭アドレスから順に前記読出処理と前記消去処理とを実行させ、前記読出処理と前記消去処理とがともに完了したとき、完了通知とともに処理完了アドレスを通知し、再度停電が発生したときに前記処理完了アドレスまでのデータ退避処理を可能にする、ことを特徴とする請求の範囲第３項記載のディスクアレイ装置の制御ユニット。
【請求項７】
前記読出手段は、データ転送時にエラーが発生したときにエラーの発生箇所の特定を可能にするための冗長化コードが付加されるデータ長に応じたデータ転送サイズが設定され、前記キャッシュデータのデータ転送をエラー発生時のエラー箇所の特定とともに行う第１のデータ転送モードと、前記第１のデータ転送モードの前記データ転送サイズよりも大きな転送サイズが設定され、前記キャッシュデータのデータ転送をエラーの有無のみを検出して行う第２のデータ転送モードと、を有し、
前記制御手段は、前記読出手段を前記第２のデータ転送モードで動作させ、データ転送時にエラーが発生したときは、前記第２のデータ転送モードを前記第１のデータ転送モードに切り替え、前記第２のデータ転送モードによるデータ転送時にエラーが発生した領域のデータ転送を行わせる、
ことを特徴とする請求の範囲第１項記載のディスクアレイ装置の制御ユニット。
【請求項８】
前記制御手段は、前記第１のデータ転送モードに切り替えて、エラーが発生した前記第２のデータ転送モードによるデータ転送を行った領域のデータ転送が正常に終了したときは、前記第１のデータ転送モードを前記第２のデータ転送モードに切り替え、次の領域のデータ転送を行わせる、
ことを特徴とする請求の範囲第７項記載のディスクアレイ装置の制御ユニット。
【請求項９】
停電発生時に不揮発性メモリに格納されたデータを復電時にキャッシュメモリに復元するデータ転送装置において、
複数のアクセスポートを有し、停電発生時に前記キャッシュメモリに格納されていたキャッシュデータが格納される前記不揮発性メモリから、前記キャッシュデータを所定のデータ転送サイズで読み出し、前記キャッシュメモリに書き戻す読出手段と、
前記不揮発性メモリに格納されるデータを消去する消去手段と、
停電から復帰したことが検出されたときは、前記読出手段と前記消去手段とに異なる前記アクセスポートを指定し、前記読出手段と前記消去手段とを並行して動作させて復電処理を行う制御手段と、
を有することを特徴とするデータ転送装置。
【請求項１０】
前記制御手段は、前記復電処理時には、前記データ転送サイズを適宜設定して前記キャッシュデータを前記キャッシュメモリに復元することを特徴とする請求の範囲第９項記載のデータ転送装置。
【請求項１１】
前記制御手段は、前記復電処理時には、前記読出手段によるデータ転送のエラー発生状況に応じて前記データ転送サイズを適宜設定し、前記キャッシュデータを前記キャッシュメモリに復元することを特徴とする請求の範囲第９項記載のデータ転送装置。
【請求項１２】
停電発生時に不揮発性メモリに格納されたデータを復電時にキャッシュメモリに復元する復電処理方法において、
制御手段が、停電から復帰したことが検出されたときは、複数のアクセスポートを有し、停電発生時にキャッシュデータが格納された前記不揮発性メモリから、前記アクセスポートを指定して所定のデータ転送サイズで前記キャッシュデータを読み出すリード指示と、前記不揮発性メモリの消去を指示するイレース指示とを出力するステップと、
読出手段が、前記リード指示に基づき、指定された前記アクセスポートを用いて前記不揮発性メモリに格納される前記キャッシュデータを所定のデータ転送サイズで読み出し、前記キャッシュメモリに書き戻すステップと、
消去手段が、前記イレース指示に基づき、前記読出手段と並行して、指定された前記アクセスポートを用いて前記不揮発性メモリの領域の消去を行うステップと、
前記制御手段が、前記読出手段によるデータ転送のエラー発生状況に応じて前記データ転送サイズを適宜設定する制御を行うステップと、
を有することを特徴とする復電処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はディスクアレイ装置の制御ユニット、データ転送装置及び復電処理方法に関し、特に停電発生時に不揮発性メモリに格納されたデータを復電時にキャッシュメモリに復元するディスクアレイ装置の制御ユニット、そのデータ転送装置及び復電処理方法に関する。
【背景技術】
【０００２】
従来から、耐故障性の記憶装置として、ＲＡＩＤ（Redundant Arrays if IndependentまたはInexpensive Disks）構成をとるディスクアレイ装置が知られている。ディスクアレイ装置は、ホストと接続されてＲＡＩＤシステムを構成する。一般にＲＡＩＤシステムでは、ホストからのＩ／Ｏ要求によってディスク装置にデータの書き込みを行う際、ライトバック方式が用いられる。ライトバック方式では、Ｉ／Ｏ要求時には書き込み先のディスク装置には書き込みを行わず、一旦揮発メモリなどのキャッシュメモリにデータを記憶し、ホストに対して完了応答を行う。その後で、キャッシュメモリ上に記憶されているデータを書き込み先のディスク装置に反映させる。このため、電源障害が生じた場合は、キャッシュメモリ内のキャッシュデータはデータ喪失を避けるために不揮発性メモリに退避される。そして、電力が復旧すると、不揮発性メモリに退避されたキャッシュデータは、再びキャッシュメモリ上に復元される（例えば、特許文献１）。【０００３】
図１２は、従来の復電時の処理の流れを示した図である。
ディスクアレイ装置では、装置全体を制御する制御部９００からの指示に従って、データ転送部９２０が、キャッシュメモリ９１０と、不揮発性メモリ９３０との間のデータ転送処理を行っている。データ転送部９２０は、図示しないライト回路、リード回路９２１及びイレース回路９２２を有する。ライト回路は、停電発生時にキャッシュメモリ９１０のキャッシュデータを不揮発性メモリ９３０に退避する処理を行う。退避処理はバックアップ用の電力供給により処理を行わなければならない。そこで、複数のライト回路を設けて並行処理を行う。不揮発性メモリ９３０は、ライト回路に対応してアクセスポートの異なる複数のメモリ領域が用意される。図の例では、第1のアクセスポートに対応するメモリ＃０（９３１）と、第２のアクセスポートに対応するメモリ＃１（９３２）がある。リード回路９２１は、不揮発性メモリ９３０のキャッシュデータをキャッシュメモリ９１０に転送する処理を行う。イレース回路９２２は、不揮発性メモリ９３０の消去（イレース）を行う。不揮発性メモリ９３０は、一旦イレースしないと書き込みができない。このため、キャッシュデータの復元処理では、不揮発性メモリ９３０に退避されたキャッシュデータをキャッシュメモリに転送するリード処理とともに、不揮発性メモリ９３０を消去するイレース処理が行われる。なお、データ転送部９２０の各処理回路には、転送処理を高速に行う必要があるため、処理には、ＤＭＡ（Direct Memory Access）が採用される。【０００４】
次に、キャッシュデータの復元処理の手順について説明する。
ディスクアレイ装置が停電から復帰したとき、制御部９００は、フラグを確認し、停電からの復帰であるかどうかを確認する（ステップＳ９１）。停電からの復帰であれば、メモリ＃０（９３１）のキャッシュ復元処理をリード回路９２１に指示する（ステップＳ９２）。リード回路９２１は、メモリ＃０（９３１）に退避されたキャッシュデータを読み出し、キャッシュメモリ９１０に転送する。このデータ転送処理は、予め決められたデータ転送サイズを単位として、メモリ＃０（９３１）の先頭アドレスからシーケンシャルに行われる。このとき、単位ごとのデータ転送が終了する度に、読み出しアドレスが設定される。そして最終アドレスまで終了すると、完了通知（＃０）を制御部９００に出力する。制御部９００は、完了通知（＃０）を受け取ると、メモリ＃１（９３２）のキャッシュ復元処理をリード回路９２１に指示する（ステップＳ９３）。同様の処理が行われ、メモリ＃１（９３２）のキャッシュデータがキャッシュメモリ９１０に転送され、終了時に完了通知（＃１）が制御部９００に出力される。制御部９００は、完了通知（＃１）を受け、ライトスルーで、ホストＩ／Ｏ要求処理を開始させる（ステップＳ９４）。その後、キャッシュデータをディスク装置９４０に書き込むリストア処理を行う（ステップＳ９５）。ここまでの処理でキャッシュメモリ９１０に、停電前のキャッシュデータが復元される。【０００５】
続いて、イレース処理が行われる。制御部９００は、メモリ＃０（９３１）のイレース処理を指示する（Ｓ９６）。これにより、イレース回路９２２が、メモリ＃０（９３１）のイレース処理を開始する。その後、メモリ＃１（９３２）のイレース処理を指示する（Ｓ９７）。イレース処理も単位ごとにアドレスを更新する必要がある。イレース回路９２２は、全領域のイレース終了後、完了通知を出力する。【０００６】
制御部９００は、イレース処理の完了通知を受けた後、ホストＩ／Ｏの要求処理をライトバックで開始させる（Ｓ９８）。その後、装置を起動する（Ｓ９９）。
【特許文献１】特開２００４−１１８８３７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかし、ＲＡＩＤシステムでは、従来のキャッシュメモリの復元処理に要する時間のため、復電後の装置の立ち上がりが遅くなるという問題がある。
図１２に示したように、復電時の処理では、キャッシュメモリ９１０にキャッシュデータが復元された後も、不揮発性メモリ９３０のイレースが完了しなければ、装置を起動させることはできない。このため、イレース処理に要する時間が余分にかかってしまい、復元処理に要する時間が多大となっている。例えば、データ転送部９２０のＤＭＡエンジンの数を増やせば、復元処理の高速化が可能となる。しかしながら、ハードウェアリソースには限界があるため、現実的ではない。また、制御部９００は、リード回路９２１とイレース回路９２２とにそれぞれ指示を行わなければならず、処理の負荷がかかる。これも、復元処理の短縮を妨げる要因である。【０００８】
また、図示はしていないが、データ転送部９２０では、データ転送時に発生するエラーの検出とデータの復元を可能にするため、所定のデータ長ごとに冗長化コードが付加される。リード回路９２１では、冗長化コードを用いてエラーの検出と、エラー訂正とを行う。このため、データ転送サイズは、冗長化コードが付加されるデータ長のサイズに制限されていた。プリフェッチ量を増やせば、転送処理の高速化が図れるが、エラー訂正ができないという問題点がある。このため、プリフェッチ量を増やして、キャッシュデータの復元処理の時間短縮を図ることは難しかった。【０００９】
このように、停電からの復電時に行われるキャッシュデータの復元処理に要する時間を短縮することは難しかった。そして、この問題が、復電後の装置の立ち上がり時間を遅くする大きな要因となっていた。【００１０】
本発明はこのような点に鑑みてなされたものであり、復電後のキャッシュデータの復元処理の時間を短縮し、復電後の装置の立ち上がりを高速化することが可能なディスクアレイ装置の制御ユニット、データ転送装置及び復電処理方法を提供することを目的とする。
【課題を解決するための手段】
【００１１】
上記課題を解決するために、キャッシュメモリと、不揮発性メモリと、データ転送部とを有し、停電発生時に不揮発性メモリに格納されたデータを復電時にキャッシュメモリに復元するディスクアレイ装置の制御ユニットが提供される。キャッシュメモリには、ディスク装置の所定の領域のデータのコピーが一時格納される。不揮発性メモリは、複数のアクセスポートを有し、停電発生時にキャッシュメモリに格納されていたキャッシュデータが書き込まれる。データ転送部は、読出手段、消去手段及び制御手段を有する。読出手段は、不揮発性メモリに格納されるキャッシュデータを所定のデータ転送サイズで読み出し、キャッシュメモリに書き戻す。消去手段は、不揮発性メモリに格納されるデータを消去する。制御手段は、停電から復帰したことが検出されたときは、読出手段と消去手段とに異なるアクセスポートを指定して、読出手段と消去手段とを並行して動作させる。そして、読出手段によるデータ転送のエラー発生状況に応じて、データ転送サイズを適宜設定してキャッシュデータをキャッシュメモリに復元する復電処理を行う。【００１２】
このようなディスクアレイ装置の制御ユニットによれば、停電から復帰したことが検出されたときは、制御手段の指示によって、読出手段と消去手段とが、異なるアクセスポートを選択して並行に動作する。また、読出手段のデータ転送サイズは、データ転送時のエラー発生状況に応じて制御手段が適宜設定する。読出手段は、不揮発性メモリに格納されるキャッシュデータを、指定されたアクセスポートを用いて、設定された所定のデータ転送サイズで読み出し、キャッシュメモリに書き戻す。一方、並行して消去手段も、読出手段とは異なるアクセスポートを用いて、不揮発性メモリに格納されるデータを消去する。【００１３】
また、上記課題を解決するために、上記データ転送部と同様に機能するデータ転送装置と、上記ディスクアレイ装置の制御ユニットと同様の処理を実現する復電処理方法と、が提供される。
【発明の効果】
【００１４】
開示のディスクアレイ装置の制御ユニット、そのデータ転送装置及び復電処理方法によれば、停電からの復帰時の復電処理において、不揮発性メモリからのキャッシュデータ読み出しと、不揮発性メモリの消去とが並行して行われる。また、このときのデータ転送サイズは適宜設定される。これにより、復電処理に要する時間を短縮し、立ち上がり時間を高速化することができる。【００１５】
本発明の上記および他の目的、特徴および利点は本発明の例として好ましい実施の形態を表す添付の図面と関連した以下の説明により明らかになるであろう。
【図面の簡単な説明】
【００１６】
【図１】発明の概要を示す図である。
【図２】ＲＡＩＤシステムの構成例を示した図である。
【図３】データ転送ＤＭＡの構成を示したブロック図である。
【図４】リード・イレースＤＭＡの構成例を示したブロック図である。
【図５】ファーストモードとコレクトモードの特徴を示した表である。
【図６】セレクタ選択と制御部との関係を示した図である。
【図７】装置全体の復電処理方法の手順を示したフローチャートである。
【図８】ファーストモードで動作を開始してからコレクトモードに切り替わるまでの処理の流れを示した図である。
【図９】コレクトモードでのエラー訂正処理の流れを示した図である。
【図１０】コレクトモードからファーストモードに切り替わるまでの処理の流れを示した図である。
【図１１】リードとイレースの並列実行処理の手順を示した図である。
【図１２】従来の復電時の処理の流れを示した図である。
【発明を実施するための最良の形態】
【００１７】
以下、本発明の実施の形態を図面を参照して説明する。まず、発明の概要について説明し、その後、実施の形態の具体的な内容を説明する。
図１は、発明の概要を示す図である。【００１８】
ディスクアレイ装置の制御ユニットは、データ転送部１、キャッシュメモリ２及びフラッシュメモリ３ａ，３ｂを有する。さらに、図示しない複数台のディスク装置と、装置全体を制御するＣＰＵ（Central Processing Unit）とを有し、ディスク装置に分散配置されるデータを管理する。【００１９】
キャッシュメモリ２は、ディスク装置のデータが一時的に格納される記憶手段であり、電源断では格納されたデータが消去される。
フラッシュメモリ３ａ，３ｂは、不揮発性のメモリである。停電発生前に、データ転送部１を介して、キャッシュメモリ２のキャッシュデータがコピーされて格納される。フラッシュメモリ３ａ，３ｂへのアクセスは、アクセスポートと、アドレスとを指定して行う。このフラッシュメモリ３ａ，３ｂは、複数のアクセスポート、図の例では２つのアクセスポート、アクセスポート＃０，＃１を有している。これは、それぞれ書込手段１ｄ，１ｅに対応している。便宜的にアクセスポート＃０を介してアクセスする側をフラッシュメモリ３ａ、アクセスポート＃１を介してアクセスする側をフラッシュメモリ３ｂとする。また、フラッシュメモリ＃０，＃１にデータを書き込みする前には、メモリを一旦消去しておく必要がある。【００２０】
データ転送部１は、読出手段１ａ、消去手段１ｂ、制御手段１ｃ及び書込手段１ｄを有し、停電発生時のキャッシュデータ退避処理及び停電から復帰したときのキャッシュデータ復元処理を行う。【００２１】
読出手段１ａは、制御手段１ｃのリード指示に従って、指定されたアクセスポートを介してフラッシュメモリ３ａ，３ｂにアクセスし、フラッシュメモリ３ａ，３ｂに格納されるキャッシュデータを指定されたデータ転送サイズで読み出す。そして、読み出したキャッシュデータを、キャッシュメモリ２に書き込む。このように指定されるデータ転送サイズをプリフェッチ量とする。データの読み出しは、プリフェッチ量の小さい第１のデータ転送モードと、プリフェッチ量の大きい第２のデータ転送モードとを設け、選択されたモードに合わせて行われる。第１のデータ転送モードは、キャッシュデータに付加される冗長化コードの範囲に合わせたプリフェッチ量で、エラー箇所の特定と、エラー訂正が可能なモードである。第１のデータ転送モードは、コレクトモードまたはシングルリードと称す。第２のデータ転送モードは、プロフェッチ量をシングルモードよりも大きくし、高速なデータ転送を可能にするモードである。しかし、エラーの検出はできるが、エラー箇所の特定と、エラー訂正はできない。第２のデータ転送モードは、ファーストモードまたはバーストリードと称す。どちらのモードを選択するかは、制御手段１ｃが決定し、指示を出す。【００２２】
消去手段１ｂは、制御手段１ｃのイレース指示に従って、指定されたアクセスポートを介してフラッシュメモリ３ａ，３ｂにアクセスし、データを消去する。
制御手段１ｃは、停電から復帰したことが検出されたときは、読出手段１ａと消去手段１ｂとに異なるアクセスポートを指定し、読出手段１ａと消去手段１ｂとを並行して動作させる。このとき、消去手段１ｂには、読出手段１ａによる読み出しが終了した領域を割り当てるようにする。こうしてリード処理の時間とイレース処理の時間とを重複させることにより、キャッシュデータの復元処理に要する時間と短縮することができる。また、処理開始時のデータ転送モードは、プリフェッチ量の大きいファーストモードを選択し、データ転送を高速化する。そして、データ転送時にエラーが検出されたときは、コレクトモードに切り替え、エラーが検出された領域のデータ転送を再度行わせる。これにより、データ転送が正常な間は、ファーストモードで高速なデータ転送を行い、エラーが発生したときはコレクトモードでエラーを訂正しながらデータ転送を行うことができる。【００２３】
書込手段１ｄ，１ｅは、停電が検出されたとき、キャッシュメモリ２に格納されるデータをコピーし、フラッシュメモリ３ａ，３ｂに書き込む退避処理を行う。書込手段１ｄは、フラッシュメモリ３ａにデータを転送し、書込手段１ｅはフラッシュメモリ３ｂにデータを転送する。このとき、所定のデータ領域ごとに冗長化コードを算出し、キャッシュデータとともに退避しておく。２つの書込手段１ｄ，１ｅにより並行して処理を行うことにより、退避処理を高速化している。【００２４】
このような構成のディスクアレイ装置の制御ユニットの動作について説明する。
ディスク装置に格納されるデータのうち、参照頻度の高いデータは、キャッシュメモリ２にコピーされ、ホストからのＩ／Ｏ要求時には、ディスク装置上のデータの代わりに、キャッシュメモリ２上のデータが読み書きされる。停電が発生すると、書込手段１ｄ，１ｅは、キャッシュメモリ２に保持されているキャッシュデータをフラッシュメモリ３ａ，３ｃに転送する。このとき、冗長化コードが算出され、キャッシュデータとともに格納される。これにより、停電発生時のキャッシュデータがフラッシュメモリ３ａ，３ｂに退避される。【００２５】
停電から復帰すると、制御手段１ｃには、キャッシュデータの復元要求が入力される。制御手段１ｃは、読出手段１ａに、ファーストモードを指示し、アクセスポートを選択しリード開始を指示する。例えば、アクセスポート＃０フラッシュメモリ３ａに格納されるキャッシュデータを、ファーストモードで規定されるデータ転送サイズを単位としてキャッシュメモリ２に転送させる。以下、ファーストモードでのデータ転送単位をファーストモードブロックと呼ぶ。データ転送途中でエラーが検出されたときは、コレクトモードに切り替え、エラーが検出されたファーストモードブロックの先頭からデータ転送を再度行わせる。エラーが検出された領域全体のデータ転送が正常に終了するなど、所定の条件を満たしたときは、データ転送モードを再びファーストモードに切り替える。こうして、１つのファーストモードブロックの転送が終了したとき、あるいは、フラッシュメモリ３ａのデータ転送が終了したとき、アクセスポートを切り替え、フラッシュメモリ３ｂのデータ転送を行う。このとき、既にデータ転送が終了したもう一方のアクセスポートを指定し、消去手段１ｂにイレース指示を出す。これにより、読出手段１ａと消去手段１ｂとが並行して処理を行う。例えば、読出手段１ａがアクセスポート＃１を介してフラッシュメモリ３ｂのキャッシュデータをキャッシュメモリ２に転送しているとき、消去手段１ｂは、アクセスポート＃０を介してフラッシュメモリ３ａを消去する。なお、リード処理側でデータ転送エラーが発生したときは、上記と同様にデータ転送モードを切り替え、キャッシュデータを再送する処理を行わせる。こうして、アクセスポート＃１のフラッシュメモリ３ｂの所定の領域のキャッシュデータがキャッシュメモリ２に復元されたとき、アクセスポート＃０のフラッシュメモリ３ａの同じ領域のイレースが終了している。その後、制御手段１ｃは、消去手段１ｂに指示し、イレースが終了していないフラッシュメモリ３ｂの同じ領域のイレース処理を行わせる。【００２６】
ファーストモードブロック単位でアクセスポートを切り替え、順次処理を行っている場合には、上記手順を繰り返し行う。具体的には、読出手段１ａをアクセスポート＃０に設定し、次のファーストモードブロックのリード処理を行わせる。リード処理終了後、読出手段１ａにアクセスポート＃１、消去手段１ｂのアクセポート＃０を設定し、並列に動作させる。そして、この処理が終了後、消去手段１ｂにアクセスポート＃１を設定し、イレース処理を行わせる。このような手順をファーストモードブロック単位で繰り返す。なお、読出手段１ａと消去手段１ｂとが別々のアドレスを指定して動作が可能なときは、読出手段１ａと消去手段１ｂとが異なるファーストモードブロックの処理を行うとしてもよい。具体的には、消去手段１ｂにアクセスポート＃１を設定し、イレース処理を実行させている間に、読出手段１ａにアクセスポート＃０を設定し、次のファーストモードブロック単位のリード処理を実行させる。【００２７】
以上の処理手順を行い、フラッシュメモリ３ａ，３ｂに格納されたキャッシュデータをキャッシュメモリ２に復元した後、ディスクアレイ装置を起動させる。
このように、読出手段１ａと消去手段１ｂとを並行して動作させることにより、キャッシュメモリ２の復元に要する時間を短縮することができる。また、読み出し時のプリフェッチ量を大きくとることにより、スループットを高速化することによっても、時間短縮が可能となる。この結果、ディスクアレイ装置の立ち上がりの時間を高速化することが可能となる。【００２８】
なお、上記の構成例では、読出手段１ａと消去手段１ｂの並行動作と、読み出し時のプリフェッチ量の制御と、をともに行うとしている。これにより、多大な効果が得られるが、いずれか一方の処理を行うことによって、キャッシュメモリ２の復元に要する時間を短縮し、ディスクアレイ装置の立ち上がりの時間を高速化することもできる。【００２９】
以下、実施の形態を、ＲＡＩＤシステムに適用した場合を例に図面を参照して詳細に説明する。
図２は、ＲＡＩＤシステムの構成例を示した図である。【００３０】
実施の形態のＲＡＩＤシステムは、ホスト３０と、ディスクアレイ装置１０とを有し、ホスト３０からのＩ／Ｏ要求に応じて、ディスクアレイ装置１０内にデータが読み書きされる。このディスクアレイ装置１０は、複数のディスク装置にデータを分散配置して管理するＣＥ（Controller Enclosure）１１、ＣＥ１２とがネットワークを介して接続する。必要に応じて、ＣＥをさらに接続する拡張構成とすることもできる。【００３１】
ＣＥ１１は、キャッシュ管理やディスク制御などを行うＣＭ（Controller Module）１００ａ，１００ｂと、ディスク装置群１００ｃとを有する。なお、ＣＭ１００ａと、ＣＭ１００ｂとは、それぞれがディスク装置群１００ｃに接続する冗長構成をとっている。また、ＣＥ１２もＣＥ１１と同様に、ＣＭ２００ａ，ＣＭ２００ｂと、図示しないハードディスク装置群を有する。さらに、ＣＥ１１と、ＣＥ１２とは、それぞれが互いのディスク装置群に接続する冗長構成をとっている。また、ＣＭ１００ａとＣＭ２００ａとは、エクスパンダ１６０とエクスパンダ２６０とを介して接続する。ＣＭ１００ｂとＣＭ２００ｂも同様である。【００３２】
ここで、ＣＭについて、ＣＭ１００ａを例にとって説明する。ＣＭ１００ａは、データ転送ＤＭＡ１１０、キャッシュメモリ１２０、フラッシュメモリ１３０、ＲｏＣ（RAID on Chip）１４０、スーパーキャパシタＳＣＵ１５０、及びエクスパンダ１６０を有する。【００３３】
データ転送ＤＭＡ１１０は、ＲｏＣ１４０の指示に従って、キャッシュメモリ１２０とフラッシュメモリ１３０との間のデータ転送を制御するデータ転送回路である。キャッシュメモリ１２０は、ＲｏＣ１４０の指示に従って、ディスク装置群１００ｃに格納されるデータの一部を一時的に格納する。フラッシュメモリ１３０は、不揮発性のメモリである。ＲｏＣ１４０は、キャッシュ管理とホストインタフェース制御を行うプロセッサである。ホスト３０からのＩ／Ｏ要求を処理するとともに、停電発生時のデータ退避処理及び停電から復帰したときのキャッシュデータ復元処理を制御する。ＳＣＵ１５０は、大容量コンデンサであり、停電発生時にＲｏｃ１４０に電力を供給する。エクスパンダ１６０は、ディスク制御を行うプロセッサである。【００３４】
なお、他のＣＭ１００ｂ，２００ａ，２００ｂも同様の構成である。
このような構成のＲＡＩＤシステムでは、ホスト３０からのＩ／Ｏ要求がＣＭ１００ａに入力されると、ＲｏＣ１４０は、要求されたデータがキャッシュメモリ１２０に格納されていれる場合には、要求データをキャッシュメモリ１２０から読み出してホスト３０に応答する。ライト要求であった場合も、キャッシュメモリ１２０の該当領域に書き込み、ホスト３０に応答を返す。また、キャッシュデータのライトバック処理は、所定の周期で行われる。要求データがキャッシュメモリ１２０にない場合は、ディスク装置群１００ｃから該当のデータを読み込み、応答を返す。また、このとき、読み出したデータは、キャッシュメモリ１２０に格納される。このように、キャッシュメモリ１２０には、ライトバック処理が終了するまで、対応するディスク装置群１００ｃのデータが更新されていないキャッシュデータも存在する。【００３５】
この状態で停電が発生すると、キャッシュメモリ１２０に格納されるデータは、すべて消えてしまう。そこで、停電発生が検出されると、ＲｏＣ１４０は、データ転送ＤＭＡ１１０を起動し、キャッシュメモリ１２０に格納されるキャッシュデータをフラッシュメモリ１３０に格納するデータ退避処理を行う。そして、停電から復電したときは、ＲｏＣ１４０は、データ転送ＤＭＡ１１０を起動し、フラッシュメモリ１３０に退避されたキャッシュデータをキャッシュメモリ１２０上に復元するキャッシュデータ復元処理を行う。【００３６】
次に、データ転送ＤＭＡ１１０の構成の詳細を、キャッシュメモリ１２０及びフラッシュメモリ１３０とともに説明する。図３は、データ転送ＤＭＡの構成を示したブロック図である。【００３７】
データ転送ＤＭＡ１１０は、読出処理と消去処理を行うリード・イレースＤＭＡ１１１、ＰＣＩ（Peripheral Components Interconnect bus）バスインタフェース（以下、Ｉ／Ｆとする）１１２、メモリＩ／Ｆ１１３ａ，１１３ｂ、ディスクリプタ保持レジスタ１１４、不良ブロック管理テーブル１１５ａ，１１５ｂ及びライトＤＭＡ１１６ａ，１１６ｂを有する。キャッシュメモリ１２０とは、ＰＣＩバスＩ／Ｆ１１２を介して接続する。また、フラッシュメモリ１３０ａにはメモリＩ／Ｆ１１３ａ、フラッシュメモリ１３０ｂにはメモリＩ／Ｆ１１３ｂを介して接続する。【００３８】
ここで、キャッシュメモリ１２０には、ホスト３０からのデータアクセスに要する時間を短縮するため、ディスク装置群１００ｃに格納されるデータのうち、アクセス頻度の高いものが一時的に格納される。通常、プロセッサの処理速度と等価のアクセススピードが出せるメモリ、例えば、ＤＲＡＭ（Dynamic Random Access Memory）、ＳＲＡＭ（Static RAM）のような揮発性メモリが利用される。【００３９】
フラッシュメモリ１３０ａ，１３０ｂは、電源供給がなくなればデータが消去されるキャッシュメモリ１２０上のデータを停電中に保持するためのメモリである。例えば、ＮＡＮＤ（Not AND）型フラッシュメモリ、ＮＯＲ型フラッシュメモリなどがある。ＮＡＮＤ型はブロック単位でのアクセス、ＮＯＲ型はビット単位でのアクセスが可能な構造になっている。以下の説明では、フラッシュメモリ１３０ａ，１３０ｂは、データ転送をブロック単位で行うＮＡＮＤ型フラッシュメモリであるとし、フラッシュメモリ１３０ａをＮＡＮＤ＃０、フラッシュメモリ１３０ｂをＮＡＮＤ＃１とも表記する。また、ＮＡＮＤ型フラッシュメモリは、劣化による書き込み失敗、消去失敗、書き込み後に劣化し読み出しができなくなるなどの現象が発生することがある。データ保護が重要なＲＡＩＤシステムにおいては、読み出しできなくなったデータの復旧手段が必須である。そこで、所定のデータ長ごとに冗長ビットを付加し、読み出し時の検査とデータ補正を行うことができるようにしている。例えば、ＸＯＲパリティ、ＣＲＣ（Cyclical Redundancy Check）、ＡＩＤ（Area ID）などが用いられる。さらに、近年では、ＳＲＡＭ＋制御ロジックとＮＡＮＤを１チップ化したハイブリット方式のＮＡＮＤデバイスも製品化されている。例えば、サムソン社製のＯｎｅＮＡＮＤなどがある。なお、フラッシュメモリ１３０ａ，１３０ｂに書き込む（ライト）とは、セルから電荷を抜くこと（１→０）であり、消去（イレース）とは、セルに電荷を注入すること（０／１→１）である。したがって、書き込む前に消去を行っておく必要がある。また、実施の形態では、フラッシュメモリ（ＮＡＮＤ＃０）１３０ａと、フラッシュメモリ（ＮＡＮＤ＃１）１３０ｂとは、共通のアドレスが設定されているとする。具体的には、フラッシュメモリ（ＮＡＮＤ＃０）１３０ａのメモリ領域を指定するアドレスと、フラッシュメモリ（ＮＡＮＤ＃１）１３０ｂのメモリ領域を指定するアドレスは同じになる。【００４０】
データ転送ＤＭＡ１１０の各構成部について説明する。
リード・イレースＤＭＡ１１１は、図示しないＲｏＣ１４０からの指示に従って、停電からの復帰時に、メモリＩ／Ｆ１１３ａ，１１３ｂにリードコマンド及びイレースコマンドを発行する。フラッシュメモリ１３０ａ，１３０ｂのキャッシュデータをキャッシュメモリ１２０に戻すリード処理では、エラーが発生したときに、データの復元（リジェネレーション）を行うため、ハードウェアリソースを大きくする必要がある。このようなハードウェア上の制約から、通常は１系統のみで処理を行う。すなわち、フラッシュメモリ１３０ａ及びフラッシュメモリ１３０ｂを順に選択し、１つずつリード処理を行う。イレースコマンドは、発行先のメモリＩ／Ｆ１１３ａ，１１３ｂを介してフラッシュメモリ１３０ａ，１３０ｂの領域をブロック単位で消去することができる。このとき、イレースコマンドと、リードコマンドとを、それぞれがメモリＩ／Ｆ１１３ａ，１１３ｂに対応している別のアクセスポートに発行することができる。これにより、フラッシュメモリ１３０ａ，１３０ｂは、一方に対してはリード処理、他方に対してはイレース処理が並行して実行される。また、リード処理には、プリフェッチ量を多くしたファーストモードと、プリフェッチ量を小さくしたコレクトモードがあり、いずれかを選択して実行させることができる。【００４１】
ＰＣＩバスＩ／Ｆ１１２は、リード・イレースＤＭＡ１１１と、ライトＤＭＡ１１６ａ，１１６ｂと、キャッシュメモリ１２０との間のデータ転送を制御するインタフェースである。リード・イレースＤＭＡ１１１と、ライトＤＭＡ１１６ａ，１１６ｂ間の調停や、割り込み制御などを行う。【００４２】
メモリＩ／Ｆ１１３ａ，１１３ｂは、リード・イレースＤＭＡ１１１と、ライトＤＭＡ１１６ａ，１１６ｂと、フラッシュメモリ１３０ａ，１３０ｂとの間のデータ転送を制御するインタフェースである。メモリＩ／Ｆ１１３ａは、各ＤＭＡと、フラッシュメモリ１３０ａとの間のデータ転送を制御する。また、メモリＩ／Ｆ１１３ｂは、各ＤＭＡと、フラッシュメモリ１３０ｂとの間のデータ転送を制御する。【００４３】
ディスクリプタ保持レジスタ１１４は、各ＤＭＡが使用するディスクリプタ情報を保持するレジスタである。
不良ブロック管理テーブル１１５ａは、フラッシュメモリ１３０ａ、不良ブロック管理テーブル１１５ｂはフラッシュメモリ１３０ｂにおいてエラーが検出された不良ブロックを管理するための管理テーブルである。【００４４】
ライトＤＭＡ１１６ａ，１１６ｂは、ＲｏＣ１４０からの指示を受けて、停電発生時にキャッシュメモリ１２０に格納されるキャッシュデータをフラッシュメモリ１３０ａ，１３０ｂに退避する。停電処理では、キャッシュメモリ１２０のデータを、ＳＣＵ１５０の電力供給可能時間内にフラッシュメモリ１３０ａ，１３０ｂに書き込まなければならない。そこで、書き込み処理を高速化するため、ライトＤＭＡ１１６ａ及びライトＤＭＡ１１６ｂの２系統を持つ。ライトＤＭＡ１１６ａは、メモリＩ／Ｆ１１３ａを介してフラッシュメモリ１３０ａに接続する。また、ライトＤＭＡ１１６ｂは、メモリＩ／Ｆ１１３ｂを介してフラッシュメモリ１３０ｂに接続する。そして、データの退避処理の際には、ライトＤＭＡ１１６ａ，１１６ｂが同時に処理を行い、それぞれ対応するフラッシュメモリ１３０ａ，１３０ｂにキャッシュデータと、キャッシュデータに付加される冗長化コードとを書き込む。【００４５】
次に、リード・イレースＤＭＡ１１１を詳細に説明する。図４は、リード・イレースＤＭＡの構成例を示したブロック図である。
リード・イレースＤＭＡ１１１は、コントローラ１１１１、ＮＡＮＤアドレス（レジスタ）１１１２、セレクタ１１１３、バッファ１１１４、リード制御１１１５、イレース制御１１１６、キャッシュアドレス（レジスタ）１１１７を有する。【００４６】
コントローラ１１１１は、リード・イレースＤＭＡ１１１全体の動作を制御し、ＮＡＮＤ＃０（フラッシュメモリ１３０ａ）からの終了通知＃０と、ＮＡＮＤ＃１（フラッシュメモリ１３０ｂ）からの終了通知＃１を受け、次の動作をリード制御１１１５及びイレース制御１１１６に指示する。また、次の処理対象のＮＡＮＤの領域を示すアドレスをＮＡＮＤアドレス１１１２に設定して指示する。リード処理であれば、最初にファーストモードを選択し、リード制御１１１５にファーストモードでの動作を指示する。その途中でエラーが発生されたときは、モードをファーストモードからコレクトモードに切り替え、エラーが検出されたファーストモードのファーストモードブロックの先頭から、再度データ転送を行う。そして、途中でエラーが検出されたときは、エラーを訂正し、データを復元する。エラーが検出されたファーストモードブロックのデータ転送が正常に終了したときは、転送モードをファーストモードに戻す。ファーストモード／コレクトモードの切り替えの詳細については後述する。【００４７】
ＮＡＮＤアドレス１１１２は、次の処理対象の領域を示すＮＡＮＤ＃０用のアドレス＃０とＮＡＮＤ＃１用のアドレス＃１とを保持する。ＮＡＮＤ＃０，ＮＡＮＤ＃１は、設定されているアドレスからデータ転送などの処理を開始する。実施の形態では、ＮＡＮＤ＃０とＮＡＮＤ＃１とのアドレスは、共通としている。アドレス＃０とアドレス＃１とを共通化することにより、チップサイズを小さくすることができる。また、ＮＡＮＤアドレス１１１２の設定値は、リード・イレース完了アドレスとして、ライトＤＭＡ１１６ａ，１１６ｂに通知される。なお、リード処理では、ＮＡＮＤの先頭アドレスから最終アドレスまでをシーケンシャルにリードし、キャッシュメモリ１２０に書き戻すとする。【００４８】
セレクタ１１１３は、ＮＡＮＤから入力するデータとキャッシュアドレスとの接続、及びコマンド出力先を切り替える。例えば、リード処理でＮＡＮＤ＃０からデータを読み出すときは、ＮＡＮＤ＃０からの読み出し信号データ＃０を選択し、キャッシュメモリ側は、キャッシュアドレス＃０を選択する。同時に、リード処理を制御するリード制御１１１５は、ＮＡＮＤ＃０にコマンドを出力するように、コマンド＃０に接続される。ＮＡＮＤ＃１からデータを読み出すときは、ＮＡＮＤ＃１からの読み出し信号データ＃１を選択し、キャッシュメモリ側は、キャッシュアドレス＃１を選択する。リード制御１１１５は、コマンド＃１に接続される。また、イレースを制御するイレース制御１１１６は、リード制御１１１５とは逆に接続される。すなわち、リード制御１１１５がアドレスポート＃０（コマンド＃０側）に接続されると、イレース制御１１１６はアドレスポート＃１（コマンド＃１側）に接続される。【００４９】
バッファ１１１４は、ＮＡＮＤ＃０から読み出したデータ＃０、ＮＡＮＤ＃１から読み出したデータ＃１を一時的に格納するバッファである。所定のサイズまでデータが蓄積されると、キャッシュメモリ１２０へデータが転送される。【００５０】
リード制御１１１５は、コントローラ１１１１に従って、指定された領域のデータの読み出しを制御する。このとき、指示されたモード（ファーストモードまたはコレクトモード）でリード処理を行う。ファーストモードであれば、プリフェッチ量を大きくした高速のデータ転送を行う。データ転送時のエラーは検出のみを行う。コレクトモードであれば、プリフェッチ量を小さくしたデータ転送を行うとともに、エラー検出時は、エラー箇所の特定とエラー訂正を行う。【００５１】
イレース制御１１１６は、コントローラ１１１１に従って、イレース処理を制御する。コントローラ１１１１によって指定されたＮＡＮＤ＃０またはＮＡＮＤ＃１に対し、イレース処理を実行させるコマンドを出力する。【００５２】
キャッシュアドレス１１１７には、バッファ１１１４から出力されるキャッシュデータの転送先となるキャッシュメモリ１２０のアドレスが設定されている。
このような構成のリード・イレースＤＭＡ１１１により、実施の形態の処理機能が実現される。【００５３】
ここで、ファーストモードとコレクトモードについて説明する。ＮＡＮＤデバイスでは、劣化によるライト失敗、消去失敗、書き込み後に劣化しリードができなくなるなどの現象が発生する恐れがある。そこで、データ転送時には、所定のデータ長ごとに冗長化コードを付加し、データとともに転送される。コレクトモードは、冗長化コードが付加される所定のデータ長を最大とする転送サイズで転送を行う。そして、付加された冗長化コードを用いてデータ復元を行う。これに対し、ファーストモードは、プリフェッチ量をのデータ長よりも大きくとるため、冗長化コードを利用できない。このため、エラーが検出されても、データを復元することはできない。【００５４】
図５は、ファーストモードとコレクトモードの特徴を示した表である。図の例では、ＮＡＮＤへのアクセス最小単位を「２キロバイト（以下、ＫＢとする）」とし、２ＫＢごとに冗長化コードが演算され、データ転送時、転送用のデータ書込み領域とともに予め用意されたスペア領域に格納されとする。【００５５】
ファーストモード（バーストリード）４０１は、プリフェッチ量を冗長化コードが算出される単位より大きくし、データの高速転送を行うためのモードである。ここでは、処理単位は「２メガバイト（以下、２ＭＢとする）」とし、対ＮＡＮＤのプリフェッチ量も「２ＭＢ」とする。これにより、転送完了通知は、２ＭＢごとに発生する。途中で、タイムアウトなどのエラーが検出されたとき、これらのエラーはステータス情報などとして残される。しかし、２ＫＢごとに生成される冗長化コードは残らない。このため、転送完了通知時、エラー検出はできるが、エラー訂正は「不可」になる。また、対ＮＡＮＤの受信リードデータ単位は、対キャッシュ送信ライトデータ単位は「３２ＫＢ」に合わせ、「３１２ＫＢ」とする。したがって、スループットは、「高速」になる。【００５６】
コレクトモード（シングルリード）４０２は、プリフェッチ量は小さいがエラー訂正が可能なモードである。具体的には、冗長化コードの生成単位を最大のプリフェッチ量とする。ここでは、対ＮＡＮＤのプリフェッチ量は「２ＫＢ」、対ＮＡＮＤの受信リードデータ単位も「２ＫＢ」にする。これにより、転送完了通知は２ＫＢごとに発生し、エラー発生時には冗長化コードを用いてデータを復元することができる。しかし、１回のデータ転送量は少ない。また、対キャッシュ送信ライトデータ単位は「３２ＫＢ」である。したがって、スループットは、「低速」になる。【００５７】
次に、セレクタ１１１３の選択と、リード制御１１１５及びイレース制御１１１６との関係について説明する。
図６は、セレクタ選択と制御部との関係を示した図である。【００５８】
なお、実施の形態では、ファーストモードの処理単位であるファーストモードブロックごとにフラッシュメモリ（ＮＡＮＤ＃０）１３０ａとフラッシュメモリ（ＮＡＮＤ＃１）１３０ｂのリード処理とイレース処理を行うとする。【００５９】
時間５０１は、経過時間で、１，２，３，４，５，６と時間が経過していく。この数値は、経過時間そのものを表すものではなく、単に時間的な前後関係を示すものである。
アドレス（ブロック）５０２は、選択されるファーストモードブロック単位のＮＡＮＤアドレスを示している。ＮＡＮＤ＃０，ＮＡＮＤ＃１のリード処理を先頭アドレスからシーケンシャルに行うとして、アドレスｂ０は、ＮＡＮＤ＃０及びＮＡＮＤ＃１の先頭のファーストモードブロックを指示する。同様に、アドレスｂ１は、次のファーストモードブロックのアドレスを指示する。【００６０】
セレクタ選択５０３は、リード制御１１１５側のセレクタ選択を示している。セレクタ選択＃０はリード制御１１１５に対してＮＡＮＤ＃０、セレクタ選択＃１はＮＡＮＤ＃１を選択していることを示している。なお、リード制御１１１５にセレクタ選択＃０が選択されているとき、イレース制御１１１６にはセレクタ選択＃１が選択される。このように、リード制御１１１５とイレース制御１１１６は、セレクタ１１１３によって、互いに異なるポートが常に選択される。【００６１】
制御部は、リード制御１１１５とイレース制御１１１６が出力するコマンドを示している。リード５０４がリード制御１１１５の出力コマンド、イレース５０５がイレース制御１１１６の出力コマンドである。【００６２】
以下、図６に示された動作について説明する。
時間「１」では、コントローラ１１１１によって、ＮＡＮＤ＃０の先頭のファーストモードブロックのキャッシュデータを転送するための設定がなされる。セレクタ１１１３は、ＮＡＮＤ＃０のデータ＃０をバッファ１１１４に接続し、キャッシュアドレス＃０を選択する。ＮＡＮＤアドレス１１１２には、アドレスｂ０が設定される。また、リード制御１１１５は、コマンド＃０に接続される。このとき、イレース制御１１１６には、コマンド＃１が選択されている。この状態で、リード制御１１１５が起動され、ＮＡＮＤ＃０に対し、ファーストモードのリードコマンドが出力される。ＮＡＮＤ＃０は３２ＫＢ単位でアドレスｂ０からデータを読み出し、バッファ１１１４へ転送する。エラーが検出されなければ、バッファ１１１４のデータは、キャッシュに転送される。こうして、ＮＡＮＤ＃０の先頭のファーストモードブロックのキャッシュデータが、キャッシュに転送される。【００６３】
時間「２」では、ＮＡＮＤ＃１の先頭のファーストモードブロックのキャッシュデータを転送するための設定がなされる。セレクタ１１１３は、ＮＡＮＤ＃１のデータ＃１をバッファ１１１４に接続し、キャッシュアドレス＃１を選択する。ＮＡＮＤアドレス１１１２には、アドレスｂ０がそのまま残っている。また、リード制御１１１５は、コマンド＃１に接続される。このとき、イレース制御１１１６には、コマンド＃０が選択されている。この状態で、リード制御１１１５が起動され、ＮＡＮＤ＃１に対し、ファーストモードのリードコマンドが出力される。ＮＡＮＤ＃１は３２ＫＢ単位でアドレスｂ０からデータを読み出し、バッファ１１１４へ転送する。エラーが検出されなければ、バッファ１１１４のデータは、キャッシュに転送される。また、この間、イレース制御１１１６も起動される。イレース制御１１１６は、ＮＡＮＤ＃０のアドレスｂ０（先頭のファーストモードブロック）のイレース処理を行う。こうして、ＮＡＮＤ＃１の先頭のファーストモードブロックのキャッシュデータがキャッシュに転送されるとともに、ＮＡＮＤ＃０のファーストモードブロックがイレースされる。【００６４】
時間「３」では、ＮＡＮＤ＃１の先頭のファーストモードブロックをイレースするための設定がなされる。セレクタ１１１３は、リード制御１１１５に＃０を選択する。これにより、イレース制御１１１６は、コマンド＃１に接続する。ＮＡＮＤアドレス１１１２には、アドレスｂ０がそのまま残っている。イレース制御１１１６が起動されると、イレース制御１１１６は、ＮＡＮＤ＃１のアドレスｂ０（先頭のファーストモードブロック）のイレース処理を行う。【００６５】
以上の処理手順が実行され、ＮＡＮＤ＃０及びＮＡＮＤ＃１のファーストモードブロックのキャッシュデータがキャッシュに転送されるとともに、ＮＡＮＤ＃０及びＮＡＮＤ＃１のこの領域のイレース処理が完了する。ここまで、ＮＡＮＤアドレス１１１２に設定されるアドレスを変えることなく、セレクタ１１１３によってアクセスポートを切り替えるのみで処理が行われる。このように、ＮＡＮＤ＃０とＮＡＮＤ＃１のアドレスを共通化することにより、リード処理用とイレース処理用の２つのアドレス保持回路を設ける必要がないため、回路を増大させることがない。【００６６】
こうして先頭のファーストモードブロックの処理が終了したところで、ＮＡＮＤアドレス１１１２に次のファーストモードブロックを指示するアドレスｂ１を設定する。そして、時間「４」「５」「６」では、上記の時間「１」「２」「３」と同様の処理を行う。これにより、ＮＡＮＤ＃０及びＮＡＮＤ＃１の次のファーストモードブロックのキャッシュデータがキャッシュに転送されるとともに、ＮＡＮＤ＃０及びＮＡＮＤ＃１のこの領域のイレース処理が完了する。【００６７】
なお、上記の説明では特に言及しなかったが、リード制御１１１５は、データ転送時にエラーが検出された場合には、ファーストモードをコレクトモードに切り替えて再度データ転送を行う。そして、コレクトモードによって、このファーストモードブロック領域のデータ転送が終了した後、ファーストモードに切り替え、次のファーストモードブロックの処理を行う。【００６８】
次に、上記のディスクアレイ装置における復電処理方法について説明する。
図７は、装置全体の復電処理方法の手順を示したフローチャートである。図のフローチャートは、制御部（ＲｏＣ１４０）側の動作を示している。【００６９】
停電から復帰し、処理が開始される。
［ステップＳ０１］  制御部（ＲｏＣ１４０）は、停電フラグを確認し、停電からの復電なるかどうかを判断する。停電であれば、停電発生時に停電フラグが「停電」に設定されている。停電フラグは、図示しない不揮発メモリに設定される。そのため、制御部（ＲｏＣ１４０）は、電源投入時に停電フラグを参照することで、停電からの復帰処理であることを判断できる。停電からの復帰であれば、処理をステップＳ０２に進める。停電からの復帰であれば、通常の電源投入処理へ移る。図では、通常の電源投入処理は省略しているが、キャッシュデータの復元処理を行わず、すぐに装置が起動される。【００７０】
［ステップＳ０２］  停電からの復帰であれば、復電処理のための準備を行う。具体的には、ディスクリプタを構築し、データ転送ＤＭＡ１１０に通知する。
［ステップＳ０３］  ディスクリプタ構築後、キャッシュデータの復元処理をデータ転送ＤＭＡ１１０のリード・イレースＤＭＡ１１１に指示する。そして、リード・イレースＤＭＡ１１１からの完了通知を待つ。【００７１】
［ステップＳ０４］  リード・イレースＤＭＡ１１１から完了通知を受け取ると、ホストＩ／Ｏ要求処理をライトバックで動作するために、Ｉ／Ｏ要求処理をライトバックモードと設定する。リード・イレースＤＭＡ１１１では、キャッシュデータの復元処理と、ＮＡＮＤのイレース処理とを同時に実行する。したがって、完了通知を受け取ったときには、再度停電が発生した場合、すぐに停電処理に入れる状態にある。このため、ホストＩ／Ｏからの要求処理をライトバックで実行させることができる。【００７２】
［ステップＳ０５］  ディスクアレイ装置の起動処理が完了したので、ディスクアレイ装置をＲｅａｄｙ状態とする。これにより、通常動作が可能となる。
［ステップＳ０６］  キャッシュデータをディスク装置に書き込むリストア処理を行う。上述のように、リード・イレースＤＭＡ１１１から完了通知を受け取った時点では、すぐに停電処理が可能な状態にある。したがって、リストア処理は、装置を起動させてから行えばよい。【００７３】
以上のような処理手順により、復電処理が実行される。データ転送ＤＭＡ１１０のリード・イレースＤＭＡ１１１がリード処理とイレース処理とを並列して順次実行するので、制御部側でリード処理やイレース処理の開始を毎回指示する必要がない。これにより、コンピュータがプログラムを実行して処理を行う制御部の介入を減らすことができる。一般に、ソフトウェアが介入する処理は、ハードウェア処理に比べて時間がかかる。したがって、制御部の処理を減らすことにより、キャッシュデータの復元処理時間の高速化がさらに図ることができる。【００７４】
データ転送ＤＭＡ１１０（リード・イレースＤＭＡ１１１）側の動作について説明する。リード・イレースＤＭＡ１１１では、制御部からディスクリプタ情報を受け取ると、これをディスクリプタ保持レジスタ１１４に書き込む（ステップＳ１０）。そして、キャッシュデータ復元指示を受け取ると、後述するリード・イレース処理を開始する（ステップＳ１１）。リード・イレース処理では、ファーストモードを用いてデータ転送処理の高速化を図るとともに、リード処理とイレース処理とを並列して行う。【００７５】
リード・イレース処理について説明する。説明を簡単にするため、まず、ファーストモードとコレクトモードを切り替えながら行う複合モードのデータ転送について説明する。その後、リード処理とイレース処理の並列実行について説明する。実施の形態では、これらの処理は組み合わせて実行される。なお、以下の説明では、リード・イレースＤＭＡ１１１を、ｒ／ｅＤＭＡ１１１とする。【００７６】
（１）複合モードのデータ転送処理
複合モードのデータ転送処理を、図８から図１０を用いて順に説明する。モードの切り替え処理では、ＮＡＮＤ＃０とＮＡＮＤ＃１とを区別する必要はないので、図ではまとめて表記する。また、説明では、ＮＡＮＤ１３１とする。【００７７】
図８は、ファーストモードで動作を開始してからコレクトモードに切り替わるまでの処理の流れを示した図である。
ファーストモードまたはコレクトモードのどちらを選択しているかは、例えば、メモリに転送モードとして記憶しておく。また、転送モードの代わりにプリフェッチ量を記憶しておいてもよい。転送モードの初期値はファーストモードに設定しておく。【００７８】
制御部からｒ／ｅＤＭＡ１１１に対し、キャッシュデータの復元処理の起動が指示される。ｒ／ｅＤＭＡ１１１は、転送モードがファーストモードであるので、ファーストモードのプリフェッチ量（２ＭＢ）指定するプリフェッチコマンドをＮＡＮＤ１３１に出力する。その後、ファーストモードの読み出しを開始する。ファーストモードでは、ＮＡＮＤ１３１からの受信リードデータ単位は３２ＫＢであるので、読み出されたデータ（３２ＫＢ）がバッファ１１１４に転送される。対キャッシュの送信ライトデータ単位も３２ＫＢであるので、バッファ１１１４のデータはそのままキャッシュメモリ１２０に書き込まれる。続いて、次の受信リードデータ単位のデータがＮＡＮＤ１３１から転送され、バッファ１１１４経由でキャッシュメモリ１２０に転送される。データ転送エラーが発生しなければ、転送データの量がプリフェッチ量の２ＭＢとなるまで処理が順次繰り返され、２ＭＢ分終了後、転送完了通知（２ＭＢ）がＮＡＮＤ１３１から送られてくる。ｒ／ｅＤＭＡ１１１は、処理完了ポインタを２ＭＢ進め（６０１）、ＮＡＮＤアドレス１１１２に設定する。処理完了を指示する処理完了ポインタは、次の処理ブロックの先頭も指示する。【００７９】
その後、次のファーストモードブロックのデータ転送処理を開始させる。ここで、データ転送途中でエラーが検出されたとする。ファーストモードのデータ転送では、エラーが発生したことは検出できるが、エラー発生箇所の特定とエラー訂正はできない。ｒ／ｅＤＭＡ１１１は、エラー通知を受けてエラーフラグをセットする（６０２）。このとき、エラーが発生しているので、処理完了ポインタは進めず、そのままの値を維持する。そして、コレクトモードに切り替える（６０３）。ファーストモードが設定されている転送モードをコレクトモードに書き換える。【００８０】
図９は、コレクトモードでのエラー訂正処理の流れを示した図である。
エラー発生により、上記の手順で転送モードがコレクトモードに切り替えられる。処理完了ポインタは、そのままであるので、ポインタは、エラーが発生したファーストモードブロックの先頭を指示している。これにより、データ転送エラーが発生したファーストモードブロックの先頭からコレクトモードでのデータ転送が開始される。【００８１】
ｒ／ｅＤＭＡ１１１は、転送モードがコレクトモードであるので、コレクトモードのプリフェッチコマンド（プリフェッチ量２ＫＢ）をＮＡＮＤ１３１に指示する。その後、コレクトモードの読み出しを開始する。コレクトモードでは、ＮＡＮＤ１３１からの受信リードデータ単位は２ＫＢであるので、読み出されたデータ（２ＫＢ）がバッファ１１１４に転送され、バッファ１１１４に格納される。終了後、ＮＡＮＤ１３１からは、転送完了通知（２ＫＢ）が出力される。ｒ／ｅＤＭＡ１１１は、プリフェッチコマンド（２ＫＢ）を設定し、次の２ＫＢのデータの読み出しを行う。この処理を順次繰り返し、バッファ１１１４のデータ量が３２ＫＢとなった時点で、バッファ１１１４のキャッシュデータをキャッシュメモリ１２０に書き込む。そして、処理完了ポインタを３２ＫＢ進める（６０４）。ここまでの処理で、コレクトモードの単位データ量３２ＫＢのキャッシュデータがキャッシュメモリ１２０に転送される。【００８２】
次に、３２ＫＢ進められた処理完了ポインタを先頭として、同様に対ＮＡＮＤの受信リードデータ単位が２ＫＢのデータ転送が繰り返される。途中でエラーが発生した場合には、ｒ／ｅＤＭＡ１１１は、付加される冗長化コードを用いてエラー訂正を行う（６０５）。訂正されたデータを含むＮＡＮＤ１３１からの受信データは、バッファ１１１４に転送される。そして、バッファ１１１４のデータ量が３２ＫＢとなった時点で、バッファ１１１４のキャッシュデータをキャッシュメモリ１２０に書き込む。その後、処理完了ポインタを３２ＫＢ進める（６０６）。ここまでの処理で、エラーが訂正されたデータを含むコレクトモードの単位データ量３２ＫＢのキャッシュデータがキャッシュメモリ１２０に転送される。【００８３】
図１０は、コレクトモードからファーストモードに切り替わるまでの処理の流れを示した図である。
続いて、さらに３２ＫＢ進められた処理完了ポインタを先頭として、同様に対ＮＡＮＤの受信リードデータ単位が２ＫＢのデータ転送が繰り返される。そして、バッファ１１１４のデータ量が３２ＫＢになるごとに、バッファ１１１４のキャッシュデータがキャッシュメモリ１２０に書き込まれ、処理完了ポインタが３２ＫＢ進められる。【００８４】
こうして、ファーストモードのプリフェッチ量である２ＭＢのデータ転送が終了したら、エラーフラグをクリアし（６０７）、リード処理の転送モードの設定をファーストモードへ書き換える（６０８）。【００８５】
以降は、図８の処理手順に戻って、再びエラーが検出されるまで、ファーストモードでのデータ転送が行われる。
以上の処理手順が実行されることにより、リード処理は、プリフェッチ量が大きく、高速なデータ転送が可能なファーストモードで動作する。そして、エラーが検出されたときのみ、その領域をエラー訂正が可能なコレクトモードで実行し、検出されたエラーを訂正する。この結果、リード処理を高速化するとともに、キャッシュデータを確実に復元することが可能となる。【００８６】
（２）リードとイレースの並列実行処理
リードとイレースの並列実行処理について説明する。図１１は、リードとイレースの並列実行処理の手順を示した図である。【００８７】
制御部からｒ／ｅＤＭＡ１１１に対し、キャッシュデータの復元処理の起動が指示される。ｒ／ｅＤＭＡ１１１は、ＮＡＮＤ＃０（１３１ａ）を選択し、ファーストモードを設定してリード処理を開始する。セレクタ１１１３は、バッファ１１１４、リード制御１１１５などをＮＡＮＤ＃０（１３１ａ）側に接続し、リード制御１１１５を起動する。プリフェッチ量のデータ転送が終了すると、リード完了（＃０）の通知がＮＡＮＤ＃０（１３１ａ）より出力される。【００８８】
リード完了（＃０）を受け取ると、セレクタ１１１３を切り替え、バッファ１１１４及びリード制御１１１５をＮＡＮＤ＃１（１３１ｂ）に接続する。セレクタ１１１３は、イレース制御１１１６はＮＡＮＤ＃０（１３１ａ）に接続する。この状態で、リード制御１１１５と、イレース制御１１１６が起動される。リード制御１１１５は、ＮＡＮＤ＃１（１３１ｂ）からキャッシュデータを読み出し、キャッシュメモリ１２０に書き込む制御を行う。一方、イレース制御１１１６は、ＮＡＮＤ＃０（１３１ａ）の既にキャッシュデータが読み出された領域に対し、イレース処理を行う。リード制御１１１５と、イレース制御１１１６とは、並列して動作する。そして、ｒ／ｅＤＭＡ１１１は、リード完了（＃１）及びイレース完了（＃０）を受け取るまで待つ。リード完了（＃１）及びイレース完了（＃０）を受け取ったら、セレクタ１１１３を切り替え、イレース制御１１１６をＮＡＮＤ＃１（１３１ｂ）と接続する。そして、イレース制御１１１６を起動し、ＮＡＮＤ＃１（１３１ｂ）の既にキャッシュデータが読み出された領域に対し、イレース処理を行わせる。【００８９】
そして、最後のイレース処理が完了したイレース完了（＃１）を受け取ると、制御部に対し完了通知を行う。
以上の処理手順が実行されることにより、ファーストモードブロック単位のＮＡＮＤ＃０（１３１ａ）及びＮＡＮＤ＃１（１３１ｂ）のキャッシュデータがキャッシュメモリ１２０に書き戻され、ＮＡＮＤ＃０（１３１ａ）及びＮＡＮＤ＃１（１３１ｂ）の該当領域はイレースされる。また、エラーが発生し、コレクトモードに切り替わったときは、コレクトモードの処理単位で同様の処理が行われる。【００９０】
なお、ｒ／ｅＤＭＡ１１１から完了通知を受け取った時点では、リード処理及びイレース処理が両方とも完了している。また、イレース完了アドレスは、ライトＤＭＡ１１６ａ，１１６ｂに通知されている。したがって、リード中に再度停電が発生した場合は、ライドＤＭＡ１１６ａ，１１６ｂは、イレース完了アドレスまで、キャッシュデータの退避処理を行うことができる。【００９１】
以上の処理手順が実行されることにより、リード処理とイレース処理とを並列に実行させることができる。これにより、それぞれの処理を順番に行っていた従来のキャッシュデータ復元処理と比較し、処理に要する時間を短縮することができる。【００９２】
上記については単に本発明の原理を示すものである。さらに、多数の変形、変更が当業者にとって可能であり、本発明は上記に示し、説明した正確な構成および応用例に限定されるものではなく、対応するすべての変形例および均等物は、添付の請求項およびその均等物による本発明の範囲とみなされる。
【符号の説明】
【００９３】
１  データ転送部
１ａ  読出手段
１ｂ  消去手段
１ｃ  制御手段
１ｄ，１ｅ  書込手段
２  キャッシュメモリ
３ａ，３ｂフラッシュメモリ
【図１】
2010016115.tif 000003
【図２】
2010016115.tif 000004
【図３】
2010016115.tif 000005
【図４】
2010016115.tif 000006
【図５】
2010016115.tif 000007
【図６】
2010016115.tif 000008
【図７】
2010016115.tif 000009
【図８】
2010016115.tif 000010
【図９】
2010016115.tif 000011
【図１０】
2010016115.tif 000012
【図１１】
2010016115.tif 000013
【図１２】
2010016115.tif 000014
【手続補正書】
【提出日】平成23年1月18日(2011.1.18)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
停電発生時に不揮発性メモリに格納されたデータを復電時にキャッシュメモリに復元するディスクアレイ装置の制御ユニットにおいて、
ディスク装置の所定の領域のデータのコピーを一時格納する前記キャッシュメモリと、
複数のアクセスポートを有し、停電発生時に前記キャッシュメモリに格納されていたキャッシュデータが書き込まれる前記不揮発性メモリと、
前記不揮発性メモリに格納される前記キャッシュデータを所定のデータ転送サイズで読み出し、前記キャッシュメモリに書き戻す読出手段と、前記不揮発性メモリに格納されるデータを消去する消去手段と、停電から復帰したことが検出されたときは、前記読出手段と前記消去手段とに異なる前記アクセスポートを指定し、前記読出手段と前記消去手段とを並行して動作させるとともに、前記読出手段によるデータ転送のエラー発生状況に応じて前記データ転送サイズを適宜設定して前記キャッシュデータを前記キャッシュメモリに復元する復電処理を行う制御手段と、を備えたデータ転送部と、
を有することを特徴とするディスクアレイ装置の制御ユニット。
【請求項２】
前記制御手段は、前記消去手段に対し、前記読出手段に設定したアクセスポートとは異なるアクセスポートであって、前記読出手段による前記不揮発性メモリからの読出処理が終了した前記不揮発性メモリの領域に対応するアクセスポートを指定し、前記読出処理が終了した前記不揮発性メモリの領域の消去処理を指示する、
ことを特徴とする請求項１記載のディスクアレイ装置の制御ユニット。
【請求項３】
前記不揮発性メモリは、少なくとも、それぞれ前記アクセスポートが異なり、アクセス可能な領域に対して共通のアドレスが設定される一対のメモリ領域で構成され、
前記制御手段は、前記読出手段と前記消去手段に対し、異なる前記アクセスポートと、共通の処理開始アドレスとを指定して動作を開始させる、
ことを特徴とする請求項２記載のディスクアレイ装置の制御ユニット。
【請求項４】
前記制御手段は、前記一対のメモリ領域に対応する前記アクセスポートのうちの一方を、前記読出手段または前記消去手段のいずれかに割り当てると、前記アクセスポートが割り当てられなかった前記消去手段または前記読出手段に、他方の前記アクセスポートを自動選択する選択手段を有する、ことを特徴とする請求項３記載のディスクアレイ装置の制御ユニット。
【請求項５】
前記制御手段は、前記共通のアドレスが設定される前記一対のメモリ領域の前記所定のデータ転送サイズに応じた処理ブロックごとに、前記読出処理と前記消去処理とを続けて行い、前記処理ブロックに対応する前記メモリ領域のキャッシュデータが復元され、前記メモリ領域が消去された後、次の処理ブロックの処理を行う、ことを特徴とする請求項３記載のディスクアレイ装置の制御ユニット。
【請求項６】
前記制御手段は、前記不揮発性メモリの領域の先頭アドレスから順に前記読出処理と前記消去処理とを実行させ、前記読出処理と前記消去処理とがともに完了したとき、完了通知とともに処理完了アドレスを通知し、再度停電が発生したときに前記処理完了アドレスまでのデータ退避処理を可能にする、ことを特徴とする請求項３記載のディスクアレイ装置の制御ユニット。
【請求項７】
前記読出手段は、データ転送時にエラーが発生したときにエラーの発生箇所の特定を可能にするための冗長化コードが付加されるデータ長に応じたデータ転送サイズが設定され、前記キャッシュデータのデータ転送をエラー発生時のエラー箇所の特定とともに行う第１のデータ転送モードと、前記第１のデータ転送モードの前記データ転送サイズよりも大きな転送サイズが設定され、前記キャッシュデータのデータ転送をエラーの有無のみを検出して行う第２のデータ転送モードと、を有し、
前記制御手段は、前記読出手段を前記第２のデータ転送モードで動作させ、データ転送時にエラーが発生したときは、前記第２のデータ転送モードを前記第１のデータ転送モードに切り替え、前記第２のデータ転送モードによるデータ転送時にエラーが発生した領域のデータ転送を行わせる、
ことを特徴とする請求項１記載のディスクアレイ装置の制御ユニット。
【請求項８】
前記制御手段は、前記第１のデータ転送モードに切り替えて、エラーが発生した前記第２のデータ転送モードによるデータ転送を行った領域のデータ転送が正常に終了したときは、前記第１のデータ転送モードを前記第２のデータ転送モードに切り替え、次の領域のデータ転送を行わせる、
ことを特徴とする請求項７記載のディスクアレイ装置の制御ユニット。
【請求項９】
停電発生時に不揮発性メモリに格納されたデータを復電時にキャッシュメモリに復元するデータ転送装置において、
複数のアクセスポートを有し、停電発生時に前記キャッシュメモリに格納されていたキャッシュデータが格納される前記不揮発性メモリから、前記キャッシュデータを所定のデータ転送サイズで読み出し、前記キャッシュメモリに書き戻す読出手段と、
前記不揮発性メモリに格納されるデータを消去する消去手段と、
停電から復帰したことが検出されたときは、前記読出手段と前記消去手段とに異なる前記アクセスポートを指定し、前記読出手段と前記消去手段とを並行して動作させて復電処理を行う制御手段と、
を有することを特徴とするデータ転送装置。
【請求項１０】
停電発生時に不揮発性メモリに格納されたデータを復電時にキャッシュメモリに復元する復電処理方法において、
制御手段が、停電から復帰したことが検出されたときは、複数のアクセスポートを有し、停電発生時にキャッシュデータが格納された前記不揮発性メモリから、前記アクセスポートを指定して所定のデータ転送サイズで前記キャッシュデータを読み出すリード指示と、前記不揮発性メモリの消去を指示するイレース指示とを出力するステップと、
読出手段が、前記リード指示に基づき、指定された前記アクセスポートを用いて前記不揮発性メモリに格納される前記キャッシュデータを所定のデータ転送サイズで読み出し、前記キャッシュメモリに書き戻すステップと、
消去手段が、前記イレース指示に基づき、前記読出手段と並行して、指定された前記アクセスポートを用いて前記不揮発性メモリの領域の消去を行うステップと、
前記制御手段が、前記読出手段によるデータ転送のエラー発生状況に応じて前記データ転送サイズを適宜設定する制御を行うステップと、
を有することを特徴とする復電処理方法。
【国際調査報告】
2010016115.tif 000015
2010016115.tif 000016
2010016115.tif 000017
2010016115.tif 000018