(57)【特許請求の範囲】
【請求項１】
データの書き込みが複数回可能な複数のブロックを有する第１の記憶領域と、データの書き込みが１回だけ可能な第２の記憶領域とを有する記憶装置を制御する制御装置において、
前記第１の記憶領域には、前記ブロック毎に前記ブロックの使用が許可されているか否かを示すフラグが記憶されており、
前記フラグに基づいて、前記記憶装置のブロック毎にデータが記憶可能か否かを管理するフラグ管理情報を作成するフラグ管理情報作成部と、
前記フラグ管理情報作成部により作成された前記フラグ管理情報を前記第２の記憶領域に記憶させる管理情報制御部と、を備え、
前記管理情報制御部は、電源が投入された際に、前記第２の記憶領域に何らかのデータが書き込まれているか否かを確認し、前記第２の記憶領域にデータが書き込まれていないことを確認した場合には初回パワーオンと判定し、前記第２の記憶領域にデータが書き込まれていることを確認した場合には２回目以降のパワーオンと判定し、
前記フラグ管理情報作成部は、前記初回パワーオンと判定された場合に前記フラグ管理情報を作成する
ことを特徴とする制御装置。
【請求項２】
前記管理情報制御部は、２回目以降のパワーオンと判定された場合には、前記第２の記憶領域から前記フラグ管理情報を読み出す処理を実行する
ことを特徴とする請求項１記載の制御装置。
【請求項３】
前記管理情報制御部は、前記フラグ管理情報作成部により作成された前記フラグ管理情報を前記第１の記憶領域に記憶させ、
前記管理情報制御部は、２回目以降のパワーオンと判定された場合に、前記第１の記憶領域に記憶されている前記フラグ管理情報を読み出し、
前記制御装置は、前記第２の記憶領域から読み出された前記フラグ管理情報と前記第１の記憶領域から読み出された前記フラグ管理情報とに基づいて、前記第１の記憶領域にデータを書き込みまたは前記第１の記憶領域からデータを読み出す
ことを特徴とする請求項２記載の制御装置。
【請求項４】
データの書き込みが複数回可能な複数のブロックを有する第１の記憶領域と、データの書き込みが１回だけ可能な第２の記憶領域とを有する記憶装置を制御する制御装置とＣＰＵとを備える制御モジュールにおいて、
前記第１の記憶領域には、前記ブロック毎に前記ブロックの使用が許可されているか否かを示すフラグが記憶されており、
前記制御装置は、
前記フラグに基づいて、前記記憶装置のブロック毎にデータが記憶可能か否かを管理するフラグ管理情報を作成するフラグ管理情報作成部と、
前記フラグ管理情報作成部により作成された前記フラグ管理情報を前記第２の記憶領域に記憶させる管理情報制御部と、
前記フラグ管理情報を前記第２の記憶領域に記憶させるときにセットされるレジスタと、を備え、
前記管理情報制御部は、電源が投入された際に、前記第２の記憶領域に何らかのデータが書き込まれているか否かを確認し、前記第２の記憶領域にデータが書き込まれていないことを確認した場合には初回パワーオンと判定し、前記第２の記憶領域にデータが書き込まれていることを確認した場合には２回目以降のパワーオンと判定し、
前記フラグ管理情報作成部は、前記初回パワーオンと判定された場合に前記フラグ管理情報を作成し、
前記ＣＰＵは、
前記レジスタがセットされている場合に、前記フラグ管理情報を前記第１の記憶領域に記憶させる処理を前記制御装置に実行させる
ことを特徴とする制御モジュール。
【請求項５】
前記ＣＰＵは、前記レジスタがセットされているか否かを確認し、セットされている場合には前記第１の記憶領域に前記フラグ管理情報を記憶させる記憶場所の情報を保持し、前記フラグ管理情報を前記第１の記憶領域の当該記憶場所に記憶させる処理を前記制御装置に実行させ、セットされていない場合には、保持している前記記憶場所の情報を参照して前記第１の記憶領域から前記フラグ管理情報を読み出す処理を前記制御装置に実行させる
ことを特徴とする請求項４記載の制御モジュール。
【請求項６】
データの書き込みが複数回可能な複数のブロックを有する第１の記憶領域と、データの書き込みが１回だけ可能な第２の記憶領域とを有する記憶装置を制御する制御装置の制御方法において、
前記第１の記憶領域には、前記ブロック毎に前記ブロックの使用が許可されているか否かを示すフラグが記憶されており、
前記フラグに基づいて、前記記憶装置のブロック毎にデータが記憶可能か否かを管理するフラグ管理情報を作成し、
作成された前記フラグ管理情報を前記第２の記憶領域に記憶させ、
電源が投入された際に、前記第２の記憶領域に何らかのデータが書き込まれているか否かを確認し、前記第２の記憶領域にデータが書き込まれていないことを確認した場合には初回パワーオンと判定し、前記第２の記憶領域にデータが書き込まれていることを確認した場合には２回目以降のパワーオンと判定する処理の結果、前記初回パワーオンと判定された場合に前記フラグ管理情報の作成が実行される
ことを特徴とする制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は制御装置、制御モジュールおよび制御方法に関する。
【背景技術】
【０００２】
データのバックアップ等の用途に使用するフラッシュメモリ（Flash Memory）が知られている。
フラッシュメモリは、データが一度書き込まれると、ページ単位でのデータの上書きが不可能であり、データ書換えの際にはブロックと呼ばれる単位で一括消去した上で、変更したデータを再度書き込みしなければならないという特徴がある。また、ブロックの消去保証回数の制限（一例として１００万回程度）が存在し、これを上回ると、不良ブロックと呼ばれる、書き込まれているデータの値が保証されないブロックに変化してしまう場合があることが知られている。
【０００３】
また、フラッシュメモリは製造工程等により、フラッシュメモリの製造完成時に、すでに不良ブロックが存在する場合がある。
不良ブロックを管理する方法として、フラッシュメモリの不良ブロックを管理するブロック状態管理手段をフラッシュメモリ内に記憶しておき、電源投入後のシステム初期化時にそれらを揮発性メモリで構成される記憶手段上に生成する方法が知られている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００２−３２２５６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ここで、フラッシュメモリに記憶しているブロック状態管理手段が何らかの理由により消去された場合や、フラッシュメモリに記憶しているブロック状態管理手段の保存箇所が分からなくなった場合等には、ブロック状態管理手段を再度作成する処理が行われる。
【０００６】
しかしながら、ブロック状態管理手段を再度作成する際に、例えば、不良ブロックを識別するために、フラッシュメモリの全てのブロックに記憶されている情報を一端消去し、不良ブロックを再リードする手順等を行うと、不良ブロックを識別する情報がフラッシュメモリから消えてしまう場合がある。この場合、本来は不良ブロックである箇所が見かけ上有効なブロックに見えてしまい、その後にフラッシュメモリに記憶するデータの信頼性が低減するという問題があった。
【０００７】
なお、フラッシュメモリについて説明したが、データの再書き込みと電気的消去を行うことができる他の半導体メモリにも同様の問題がある。
本発明はこのような点に鑑みてなされたものであり、半導体メモリに記憶するデータの信頼性を高める制御装置、制御モジュールおよび制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記目的を達成するために、開示の情報管理装置が提供される。この制御装置は、データの書き込みが複数回可能な複数のブロックを有する第１の記憶領域と、データの書き込みが１回だけ可能な第２の記憶領域とを有する記憶装置を制御する装置である。
【０００９】
第１の記憶領域には、ブロック毎にブロックの使用が許可されているか否かを示すフラグが記憶されている。そして、制御装置が有するフラグ管理情報作成部は、フラグに基づいて、記憶装置のブロック毎にデータが記憶可能か否かを管理するフラグ管理情報を作成する。また、制御装置が有する管理情報制御部は、フラグ管理情報作成部により作成されたフラグ管理情報を第２の記憶領域に記憶させる。
【発明の効果】
【００１０】
開示の情報処理装置によれば、記憶装置に記憶するデータの信頼性を高めることができる。
【図面の簡単な説明】
【００１１】
【図１】第１の実施の形態の制御装置の概要を示す図である。
【図２】第２の実施の形態のストレージシステムを示すブロック図である。
【図３】ドライブエンクロージャの一例を示す図である。
【図４】制御モジュールの機能を示すブロック図である。
【図５】初回パワーオン時の制御モジュールの動作を示す図である。
【図６】２回目以降のパワーオン時の制御モジュールの動作を示す図である。
【図７】不良ブロック管理テーブルを説明する図である。
【図８】マージ用不良ブロック管理テーブルのバックアップ処理を説明する図である。
【図９】ＮＡＮＤ型フラッシュメモリの交換時の制御モジュールの動作を示す図である。
【図１０】ＭＲＡＭに記憶しておいた保存場所識別情報が消失した時の制御モジュールの動作を示す図である。
【図１１】ＯＴＰ制御部の処理を示すフローチャートである。
【図１２】マージ用不良ブロック管理テーブルのバックアップ処理を示すフローチャートである。
【発明を実施するための形態】
【００１２】
以下、実施の形態を、図面を参照して詳細に説明する。
まず、実施の形態の制御装置について説明し、その後、実施の形態をより具体的に説明する。
【００１３】
＜第１の実施の形態＞
図１は、第１の実施の形態の制御装置の概要を示す図である。
第１の実施の形態の制御装置１は、記憶装置２を制御する。
【００１４】
記憶装置２は、データの再書き込みと電気的消去が行える装置であり、例えば、フラッシュメモリや、ＥＥＰＲＯＭ（Electrically Erasable and Programmable ROM）等が挙げられる。
【００１５】
記憶装置２は、データの書き込みが複数回可能な複数のブロックを有する第１の記憶領域２ａと、データの書き込みが１回だけ可能な（データの書き換えや消去が行えない）第２の記憶領域２ｂとを有する。
【００１６】
例えば、第１の記憶領域２ａがフラッシュメモリである場合、第１の記憶領域２ａへのデータの書き込みは、ページと呼ばれる単位で行われる。図１では、ページｐ１、ｐ２、ｐ３、・・・、ｐ１５を図示している。また、第１の記憶領域２ａがフラッシュメモリである場合、メモリセルに書き込まれたデータの消去は、複数のページで構成されるブロック単位で行われる。図１では、ページｐ１、ｐ２、ｐ３、・・・、ｐ１５が１つのブロックＢ１を構成している。ページｐ１６、ｐ１７、ｐ１８、・・・、ｐ３１が１つのブロックＢ２を構成している。
【００１７】
第１の記憶領域２ａには、ブロック毎にブロックの使用が許可されているか否かを示すフラグが記憶されている。図１では、ブロックＢ１のフラグは、ページｐ１に記憶されている。ブロックＢ２のフラグは、ページｐ１６に記憶されている。
【００１８】
図１に示す第２の記憶領域２ｂは、初期状態の第２の記憶領域２ｂを示している。初期状態の第２の記憶領域２ｂは、全てのビットが“１”の状態であるデータ消去状態に設定されている。
【００１９】
なお、第２の記憶領域２ｂは、全てのブロックの使用が許可されていることが検証試験等により予め保証された領域であるのが好ましい。これにより、記憶装置２に記憶されるデータの信頼性を向上することができる。
【００２０】
制御装置１は、アクセス制御部１ａと、フラグ管理情報作成部１ｂと、管理情報制御部１ｃとを有している。
アクセス制御部１ａは、記憶装置２へのデータの書き込みまたは記憶装置２からのデータの読み出しを制御する。
【００２１】
フラグ管理情報作成部１ｂは、第１の記憶領域２ａに記憶されているフラグに基づいて、記憶装置２のブロック毎にデータが記憶可能か否かを示す管理テーブル（フラグ管理情報）１ｂ１を作成する。図１に示す管理テーブル１ｂ１には、ページｐ１に記憶されているフラグに基づいて、ブロックＢ１にデータが記憶可能であることを示すビット“１”が記憶されている。また、ページｐ１６に記憶されているフラグに基づいて、ブロックＢ２にデータが記憶不可であることを示すビット“０”が記憶されている。
【００２２】
管理情報制御部１ｃは、フラグ管理情報作成部１ｂにより作成された管理テーブル１ｂ１を第２の記憶領域２ｂに記憶させる。また、作成された管理テーブル１ｂ１を第２の記憶領域２ａに記憶させるようにしてもよい。
【００２３】
この制御装置１によれば、管理情報制御部１ｃによって管理テーブル１ｂ１を第２の記憶領域２ｂに記憶させることにより、工場出荷時のフラグを、第２の記憶領域２ｂに記憶することができる。工場出荷時のフラグを、第２の記憶領域２ｂに保持することにより、第１の記憶領域２ａに記憶されている管理テーブル１ｂ１が消えてしまった場合や、第１の記憶領域２ａに記憶されている管理テーブル１ｂ１の記憶箇所が分からなくなった場合等にも、第２の記憶領域２ｂに記憶されている管理テーブル１ｂ１を読み出すことにより、第１の記憶領域２ａのフラグの状態を把握することができる。従って、使用が許可されていない第１の記憶領域２ａのブロックにデータを書き込むことを抑制することができ、情報管理の信頼性を高めることができる。
【００２４】
なお、本実施の形態では、管理テーブル１ｂ１がデータが記憶可能か否かをブロック単位で管理したが、管理テーブルがデータが記憶可能か否かを管理する単位は、これに限定されない。
【００２５】
以下、実施の形態をより具体的に説明する。
＜第２の実施の形態＞
図２は、第２の実施の形態のストレージシステムを示すブロック図である。
【００２６】
ストレージシステム１００は、ホストコンピュータ（以下、単に「ホスト」と言う）３０と、ディスクの動作制御を行う制御モジュール（ＣＭ：Controller Module）１０ａ、１０ｂ、１０ｃと、ドライブエンクロージャ群２０を構成するドライブエンクロージャ（ＤＥ：Drive Enclosure）２０ａ、２０ｂ、２０ｃ、２０ｄとを有する。
【００２７】
ストレージシステム１００は、ドライブエンクロージャ２０ａ、２０ｂ、２０ｃ、２０ｄと、ホスト３０とが、制御モジュール１０ａ、１０ｂ、１０ｃを介して接続されている。
【００２８】
ストレージシステム１００は、運用に使用する制御モジュールを２以上有することで、冗長性が確保されている。
制御モジュール１０ａ、１０ｂ、１０ｃは、コントローラエンクロージャ（ＣＥ：Controller Enclosure）１８内に実装されている。各制御モジュール１０ａ、１０ｂ、１０ｃは、それぞれストレージ制御装置として機能する。
【００２９】
なお、図２では、１つのホスト３０を図示しているが、複数のホストが、コントローラエンクロージャ１８に接続されていてもよい。
制御モジュール１０ａ、１０ｂ、１０ｃは、それぞれ、アクセス指示情報としてＩ／Ｏコマンドをドライブエンクロージャ２０ａ、２０ｂ、２０ｃ、２０ｄに送信し、ストレージ装置の記憶領域に対するデータの入出力指令を行う。また、入出力指令からアクセス監視時間が経過しても応答が得られないときは、このＩ／Ｏ処理を中断するアボート指示コマンドをドライブエンクロージャ２０ａ、２０ｂ、２０ｃ、２０ｄに送信する。
【００３０】
ドライブエンクロージャ２０ａ、２０ｂ、２０ｃ、２０ｄを構成するドライブエンクロージャ群２０は、冗長性を考慮したＲＡＩＤ（Redundant Arrays of Inexpensive Disks）構成をなしている。
【００３１】
制御モジュール１０ａは、ＣＰＵ（Central Processing Unit）１１によって装置全体が制御されている。
ＣＰＵ１１には、内部バスを介してキャッシュメモリ（Cache Memory）１２、ＦＰＧＡ（Field Programmable Gate Way）１３、ＮＡＮＤ型フラッシュメモリ（図２では単に「フラッシュメモリ」と表記）１４、ＭＲＡＭ（Magneto Resistive RAM）１５、チャネルアダプタ（ＣＡ：Channel Adapter）１６およびデバイスアダプタ（ＤＡ：Device Adapter）１７が接続されている。
【００３２】
キャッシュメモリ１２には、ＣＰＵ１１に実行させるプログラムの少なくとも一部が一時的に格納される。また、キャッシュメモリ１２は、ＣＰＵ１１による処理に必要な各種データが格納される。
【００３３】
ＦＰＧＡ１３は、ＮＡＮＤ型フラッシュメモリ１４を制御する。ＦＰＧＡ１３は、第１の実施の形態の制御装置１に対応する。なお、ＦＰＧＡ１３の制御内容については、後に詳述する。
【００３４】
ＮＡＮＤ型フラッシュメモリ１４は、不揮発性メモリであり、停電時等にキャッシュメモリ１２に記憶されているデータの退避先となる記憶領域を有している。
またＮＡＮＤ型フラッシュメモリ１４は、後述する不良ブロック管理テーブルを記憶する記憶領域を有している。
【００３５】
ＮＡＮＤ型フラッシュメモリ１４は、制御モジュール１０ａに対し着脱可能な構造になっている。
ＭＲＡＭ１５は、不揮発性メモリであり、ＮＡＮＤ型フラッシュメモリ１４が記憶している不良ブロック管理テーブルの記憶箇所を記憶する記憶領域を有している。
【００３６】
チャネルアダプタ１６は、ファイバチャネル（ＦＣ：Fibre Channel）スイッチ３１に接続され、ファイバチャネルスイッチ３１を介してホスト３０のチャネルＣＨ１、ＣＨ２、ＣＨ３、ＣＨ４に接続される。この経路を介して、ホスト３０と、ＣＰＵ１１との間でデータの送受信が行われる。
【００３７】
デバイスアダプタ１７は、ドライブエンクロージャ群２０を構成する外部のドライブエンクロージャ２０ａ、２０ｂ、２０ｃおよび２０ｄに接続される。ＣＰＵ１１は、デバイスアダプタ１７を介して外部のドライブエンクロージャ２０ａ、２０ｂ、２０ｃおよび２０ｄとの間でデータの送受信を行う。
【００３８】
制御電源供給部４１は、制御モジュール１０ａ、１０ｂおよび１０ｃに接続されている。制御電源供給部４１は、制御モジュール１０ａ、１０ｂおよび１０ｃを駆動する駆動電源を制御モジュール１０ａ、１０ｂおよび１０ｃに供給する。
【００３９】
停電時給電部４２は、制御モジュール１０ａ、１０ｂおよび１０ｃに接続されている。
停電時給電部４２は、内部にコンデンサ（図示せず）を有している。停電時給電部４２は、制御電源供給部４１の稼働時、すなわち、制御電源供給部４１の制御モジュール１０ａ、１０ｂおよび１０ｃへの電源供給時は、制御電源供給部４１から電力の供給を受けて、内部に有するコンデンサに電力を蓄える。
【００４０】
そして、停電時等、制御電源供給部４１の稼働停止時には、内部に有するコンデンサに蓄えた電力を制御モジュール１０ａ、１０ｂおよび１０ｃに供給する。
制御モジュール１０ａ、１０ｂおよび１０ｃは、供給された電力によって、キャッシュメモリ１２に記憶されている情報を、ＮＡＮＤ型フラッシュメモリ１４に退避させる。
【００４１】
なお、制御モジュール１０ｂ、１０ｃのハードウェア構成も、制御モジュール１０ａと同様である。このようなハードウェア構成によって、制御モジュール１０ａ、１０ｂおよび１０ｃの処理機能を実現することができる。
【００４２】
図３は、ドライブエンクロージャの一例を示す図である。
ドライブエンクロージャ２０ａは、複数のストレージ装置２１１ａ、２１１ｂ、２１１ｃ、２１１ｄ、２１１ｅ、２１１ｆ、２１１ｇおよび２１１ｈと、各ストレージ装置２１１ａ〜２１１ｈにそれぞれ電源経路２２１ａ、２２１ｂを介して電源を供給する複数の電源供給部（ＰＳＵ：Power Supply Unit）２３１ａ、２３１ｂとを有する。さらに、ドライブエンクロージャ２０ａは、各ストレージ装置２１１ａ〜２１１ｈとそれぞれ入出力経路２２２ａ、２２２ｂを介して接続された複数のデバイス監視部（ＰＢＣ：Port Bypass Circuit）２３０ａ、２３０ｂを有する。
【００４３】
各ストレージ装置２１１ａ〜２１１ｈには、電源供給部２３１ａ、２３１ｂの両方から電力が供給される。
電源供給部２３１ａ、２３１ｂは、それぞれが、ドライブエンクロージャ２０ａが備える全てのストレージ装置２１１ａ〜２１１ｈを同時に稼動し、また、全てのストレージ装置２１１ａ〜２１１ｈのうち所定の数のストレージ装置を同時に起動するのに充分な電力を供給する能力を備えている。
【００４４】
このように、電源供給部２３１ａ、２３１ｂが冗長化された構成であるため、一方の電源供給部が故障したとしても、ストレージ装置２１１ａ〜２１１ｈへの電力の供給の停止を抑制することができる。
【００４５】
デバイス監視部２３０ａ、２３０ｂは、各制御モジュール１０ａ〜１０ｃの指示に基づいて、各ストレージ装置２１１ａ〜２１１ｈに記憶される情報を読み出したり、書き込んだりする。
【００４６】
さらに、デバイス監視部２３０ａ、２３０ｂは、各ストレージ装置２１１ａ〜２１１ｈを監視し、各ストレージ装置２１１ａ〜２１１ｈの動作状態（稼動、起動、停止）を検出する。ここで、稼動とは、起動後の安定した状態を指し、この稼動状態においてデータの書き込み、または、読み出し処理が行われる。
【００４７】
さらに、デバイス監視部２３０ａ、２３０ｂは、各電源供給部２３１ａ、２３１ｂを監視し、各電源供給部２３１ａ、２３１ｂの動作モードの検出及び故障検出を行う。さらに、デバイス監視部２３０ａ、２３０ｂは、電源供給部２３１ａ、２３１ｂが供給可能な最大電力量と、電源供給部２３１ａ、２３１ｂの現在の電力使用量とを検出する。
【００４８】
なお、他のドライブエンクロージャ２０ｂ〜２０ｄも、ドライブエンクロージャ２０ａと同様の構造を備えている。
このようなドライブエンクロージャ２０ａ〜２０ｄで構成されるドライブエンクロージャ群２０は、各ドライブエンクロージャ２０ａ〜２０ｄが備えるストレージ装置のうちの複数のストレージ装置に、例えばユーザ情報等の情報を分割して記憶し、またはそれぞれ同じ情報を記憶するＲＡＩＤ構造を備える。
【００４９】
そして、ドライブエンクロージャ群２０は、各ドライブエンクロージャ２０ａ〜２０ｄが備えるストレージのうち、１つ、または複数のストレージによりそれぞれ構成された複数のＲＡＩＤグループを有する。ここで、ドライブエンクロージャ群２０では、各ＲＡＩＤグループに論理ボリュームが設定されている。なお、ここでは、ＲＡＩＤグループと論理ボリュームとは一致するが、これに限らず、１つの論理ボリュームが複数のＲＡＩＤグループに対して設けられていてもよく、１つのＲＡＩＤグループに対して複数の論理ボリュームが設けられていてもよい。また、図２、図３ではドライブエンクロージャ２０ａ〜２０ｄは、８つのストレージ装置２１１ａ〜２１１ｈを有するが、これに限らず、任意の個数のストレージ装置を有してもよい。
【００５０】
次に、制御モジュール１０ａが備える機能を、より詳しく説明する。
図４は、制御モジュールの機能を示すブロック図である。
前述したように、制御モジュール１０ａは、ＣＰＵ１１によって装置全体が制御されている。
【００５１】
ＣＰＵ１１には、内部バスを介してキャッシュメモリ１２、ＦＰＧＡ１３、ＮＡＮＤ型フラッシュメモリ１４、ＭＲＡＭ１５、チャネルアダプタ１６およびデバイスアダプタ１７が接続されている。
【００５２】
ＮＡＮＤ型フラッシュメモリ１４は、メモリセルアレイ１４ａとＯＴＰ領域１４ｂとを有している。
メモリセルアレイ１４ａには、データを読み書き可能なメモリセルが行列状に配置されている。メモリセルへのデータの書き込みは、ページ単位で行われる。メモリセルに書き込まれたデータの消去は、複数のページで構成されるブロック単位で行われる。各ブロックの先頭ページには、当該ブロックが不良ブロック（書き込まれているデータの値の信頼性が保証できないブロック）であるか否かを示す不良ブロック情報（フラグ）が記憶されている。
【００５３】
また、メモリセルアレイ１４ａには、メモリセルアレイ１４ａの各ブロックの不良ブロック情報がそれぞれ格納された不良ブロック管理テーブルが記憶される。
ＯＴＰ領域１４ｂは、不良ブロックが存在しないことが工場出荷時の検証試験等により保証されたデータ記憶領域である。
【００５４】
ＯＴＰ領域１４ｂは、初期状態（例えば、出荷状態）では全ての記憶領域のビットが“１”の状態である消去状態に設定されている。
ＯＴＰ領域１４ｂは、ページと呼ばれる単位で管理される。各ページは、１回だけデータを書き込み可能であり、データの消去はできないよう設定されている。ＯＴＰ領域１４ｂには、１ページ毎にメモリセルアレイ１４ａの各ブロックの不良ブロック情報がそれぞれ格納された不良ブロック管理テーブルが記憶される。
【００５５】
本実施の形態では、ＯＴＰ領域１４ｂの１ページ目には、工場出荷時に作成された不良ブロック情報が格納された不良ブロック管理テーブルが記憶されている。ＯＴＰ領域１４ｂの２ページ目以降には、不良ブロックが一定量発生したときに新たに作成される不良ブロック管理テーブルが記憶される。２ページ目以降に記憶する不良ブロック管理テーブルの作成方法については、後述する。
【００５６】
なお、図４では、１つのＮＡＮＤ型フラッシュメモリ１４を図示しているが、制御モジュール１０ａは、ＮＡＮＤ型フラッシュメモリ１４を複数有していてもよい。
ＦＰＧＡ１３は、メモリ制御部（図中、「ＣＴＬ」と表記）１３ａと、ファーストパワーオンレジスタ１３ｂと、不良ブロック管理テーブル格納部１３ｃと、ＯＴＰ用不良ブロック管理テーブル格納部１３ｄと、不良ブロック検出部１３ｅと、マージ用不良ブロック管理テーブル格納部１３ｆと、ＤＭＡ１３ｇとを有している。
【００５７】
メモリ制御部１３ａは、ＮＡＮＤ型フラッシュメモリ１４のブロックの状態（ブロック内の空きセクタ数や各物理セクタが有効なデータを保持しているかどうか等）を管理する。
【００５８】
また、メモリ制御部１３ａは、ＮＡＮＤ型フラッシュメモリ１４に記憶されているデータの読み出しおよびＮＡＮＤ型フラッシュメモリ１４へのデータの書き込みを制御する。このメモリ制御部１３ａは、ＯＴＰ領域１４ｂに記憶されているデータの読み出しおよびＯＴＰ領域１４ｂへのデータの書き込みを制御するＯＴＰ制御部１３１ａを有している。
【００５９】
ＯＴＰ制御部１３１ａは、不良ブロック管理テーブルのＯＴＰ領域１４ｂへ書き込みや、ＯＴＰ領域１４ｂに記憶されている不良ブロック管理テーブルを読み出す。
また、ＯＴＰ制御部１３１ａは、ＮＡＮＤ型フラッシュメモリ１４のＯＴＰ領域１４ｂが消去状態か否か、すなわち、ＯＴＰ領域１４ｂの全てのビットが“１”の状態であるかを確認する。そして、ＯＴＰ制御部１３１ａは、消去状態であることを確認すると、ファーストパワーオンレジスタ１３ｂに“１”を設定する。
【００６０】
また、ＯＴＰ制御部１３１ａは、メモリセルアレイ１４ａの不良ブロック情報に基づいて不良ブロック管理テーブル１３１ｃを作成する機能、作成した不良ブロック管理テーブル１３１ｃをメモリセルアレイ１４ａに記憶する機能およびメモリセルアレイ１４ａに記憶されている不良ブロック管理テーブル１３１ｃを読み出して、不良ブロック管理テーブル格納部１３ｃに格納する機能を有している。
【００６１】
また、ＯＴＰ制御部１３１ａは、後述する不良ブロック検出部１３ｅが検出した不良ブロックの数が、予め定めた閾値を超えた場合には、マージ用不良ブロック管理テーブル１３１ｆをＯＴＰ領域１４ｂに記憶する。閾値の決定方法は、後述する。
【００６２】
ファーストパワーオンレジスタ１３ｂは、ＯＴＰ領域１４ｂのデータに誤りがないか等を検査（Verify）したことを示す値を格納するレジスタである。レジスタの値の初期値は“０”である。ＯＴＰ領域１４ｂのデータに誤りがないか等の検査は、ＮＡＮＤ型フラッシュメモリ１４を制御モジュール１０ａに設置した後の初回の電源投入時（以下、「初回パワーオン時」という）に実行される。検査の実行後に、レジスタの値が“１”（セット）に設定される。
【００６３】
なお、レジスタの値は、パワーオフ時に“０”（リセット）に設定される。
不良ブロック管理テーブル格納部１３ｃには、メモリセルアレイ１４ａから読み出した不良ブロック管理テーブル１３１ｃが格納される。
【００６４】
制御モジュール１０ａの運用中にメモリセルアレイ１４ａに不良ブロックが発生すると、発生した不良ブロックの不良ブロック情報が、この不良ブロック管理テーブル１３１ｃに反映される。メモリセルアレイ１４ａにこの不良ブロック管理テーブル１３１ｃを記憶する。
【００６５】
ＯＴＰ用不良ブロック管理テーブル格納部１３ｄには、最新のメモリセルアレイ１４ａの不良ブロック情報を反映したＯＴＰ用不良ブロック管理テーブル１３１ｄが格納される。具体的には、工場出荷時には、ＮＡＮＤ型フラッシュメモリ１４のＯＴＰ領域１４ｂの１ページ目に記憶された不良ブロック管理テーブルが読み出されてＯＴＰ用不良ブロック管理テーブル格納部１３ｄに格納される。
【００６６】
また、ＯＴＰ領域１４ｂの２ページ目以降に、更新された不良ブロック管理テーブルが記憶されている場合、２ページ目以降のページに記憶されている最新の不良ブロック管理テーブルが読み出されてＯＴＰ用不良ブロック管理テーブル格納部１３ｄに格納される。
【００６７】
以下、最新の不良ブロック管理テーブルが記憶されているページを「最新のページ」と言う。
不良ブロック検出部１３ｅは、ストレージシステム１００の運用時にメモリセルアレイ１４ａに新たに発生した不良ブロックを検出する。
【００６８】
マージ用不良ブロック管理テーブル格納部１３ｆには、マージ用不良ブロック管理テーブル１３１ｆが格納される。
マージ用不良ブロック管理テーブル１３１ｆは、ＯＴＰ用不良ブロック管理テーブル１３１ｄに格納されている不良ブロック情報と、不良ブロック管理テーブル１３１ｃに格納されている不良ブロック情報との論理積（ＯＲ）をとった不良ブロック情報を有するテーブルである。
【００６９】
メモリ制御部１３ａは、このマージ用不良ブロック管理テーブル１３１ｆに格納されている不良ブロック情報に基づいて、メモリセルアレイ１４ａの不良ブロックを特定し、特定した不良ブロックをデータの書き込み先として特定しないように制御する。
【００７０】
ＤＭＡ１３ｇは、ＣＰＵ１１からバス管理の主導権を受け取ると、外部デバイスからデータの転送要求を受け取ったときに、バスコントローラを介してバス上のデータをＮＡＮＤ型フラッシュメモリ１４に書き込む。
【００７１】
なお、メモリ制御部１３ａ、不良ブロック管理テーブル１３１ｃ、ＯＴＰ用不良ブロック管理テーブル１３１ｄ、マージ用不良ブロック管理テーブル１３１ｆおよびＤＭＡ１３ｇは、ＮＡＮＤ型フラッシュメモリ１４の数に対応してＦＰＧＡ１３に設けられる。例えば、制御モジュール１０ａが、２つのＮＡＮＤ型フラッシュメモリ１４を有していれば、各ＮＡＮＤ型フラッシュメモリ１４に対し、それぞれメモリ制御部１３ａ、不良ブロック管理テーブル１３１ｃ、ＯＴＰ用不良ブロック管理テーブル１３１ｄ、マージ用不良ブロック管理テーブル１３１ｆおよびＤＭＡ１３ｇが設けられる。
【００７２】
次に、制御モジュール１０ａの動作を説明する。
制御モジュール１０ａに電源が投入されると、制御モジュール１０ａは、初期化設定を行う。
【００７３】
初期化設定時に、ＯＴＰ制御部１３１ａは、ＮＡＮＤ型フラッシュメモリ１４の不良ブロック情報の有無を確認する。具体的には、以下の動作を行う。
ＯＴＰ制御部１３１ａは、ＮＡＮＤ型フラッシュメモリ１４のＯＴＰ領域１４ｂを読み出し、ＯＴＰ領域１４ｂが消去状態か否か確認する。消去状態なら初回パワーオンと判断する。消去状態でなければ、２回目以降のパワーオンであると判断する。
【００７４】
以下、制御モジュール１０ａの初回パワーオン時の制御モジュール１０ａの動作、制御モジュール１０ａの２回目以降のパワーオン時の制御モジュール１０ａの動作の順に制御モジュール１０ａの動作を説明する。
【００７５】
＜初回パワーオン時の制御モジュール１０ａの動作＞
図５は、初回パワーオン時の制御モジュールの動作を示す図である。
［シーケンスＳｅｑ１］  前述したように、ＯＴＰ制御部１３１ａは、ＮＡＮＤ型フラッシュメモリ１４のＯＴＰ領域１４ｂを読み出し、ＯＴＰ領域１４ｂが消去状態か否か確認する。消去状態なら初回パワーオンと判断する。
【００７６】
［シーケンスＳｅｑ２］  ＯＴＰ制御部１３１ａは、初回パワーオンであると判断した場合、ＮＡＮＤ型フラッシュメモリ１４の全ての不良ブロックの記憶箇所、すなわち、メモリセルアレイ１４ａの各ブロックの先頭ページに記憶されている不良ブロック情報を読み出す。そしてＯＴＰ制御部１３１ａは、読み出した不良ブロック情報に基づいて、不良ブロックの有無を確認する。そして、ＯＴＰ制御部１３１ａは、不良ブロックが存在する箇所を格納した不良ブロック管理テーブル１３１ｃを作成する。ＯＴＰ制御部１３１ａは、作成した不良ブロック管理テーブル１３１ｃを不良ブロック管理テーブル格納部１３ｃに格納する。
【００７７】
［シーケンスＳｅｑ３］  次に、ＯＴＰ制御部１３１ａは、作成した不良ブロック管理テーブル１３１ｃをＮＡＮＤ型フラッシュメモリ１４のＯＴＰ領域１４ｂの、既に不良ブロック管理テーブルが書き込まれているページの次のページに書き込む。書き込んだページが、現時点での最新のページになる。そして、ＯＴＰ制御部１３１ａは、作成した不良ブロック管理テーブル１３１ｃをＮＡＮＤ型フラッシュメモリ１４のＯＴＰ領域１４ｂに書き込んだ後に、ファーストパワーオンレジスタ１３ｂのレジスタ値を“１”に設定する。
【００７８】
その後、ＯＴＰ制御部１３１ａは、ＣＰＵ１１に初期化設定の完了を通知する。
ここまでが、初回パワーオン時の初期化設定動作である。初期化設定動作が終了すると、制御モジュール１０ａは、シーケンスＳｅｑ４およびシーケンスＳｅｑ５の動作を行う。
【００７９】
［シーケンスＳｅｑ４］  ＣＰＵ１１は、ＯＴＰ制御部１３１ａから初期化設定の完了が通知されると、ファーストパワーオンレジスタ１３ｂのレジスタ値が“１”であることを確認する。ファーストパワーオンレジスタ１３ｂのレジスタ値が“１”であることが確認できれば、ＣＰＵ１１は、不良ブロック管理テーブル１３１ｃの保存場所として、ＮＡＮＤ型フラッシュメモリ１４のメモリセルアレイ１４ａを指定する。そして、ＣＰＵ１１は、ＦＰＧＡのＤＭＡ１３ｇを起動する。また、ＣＰＵ１１は、メモリセルアレイ１４ａ内における不良ブロック管理テーブル１３１ｃの保存場所をＭＲＡＭ１５に通知する。これにより、ＭＲＡＭ１５は、メモリセルアレイ１４ａ内における不良ブロック管理テーブル１３１ｃの保存場所を識別する情報（以下、「保存場所識別情報」と言う）を記憶する。
【００８０】
［シーケンスＳｅｑ５］  ＣＰＵ１１によるＤＭＡ１３ｇの起動により、ＯＴＰ制御部１３１ａは、シーケンスＳｅｑ４にてＭＲＡＭ１５に通知したメモリセルアレイ１４ａ内における不良ブロック管理テーブル１３１ｃの保存場所に、不良ブロック管理テーブル１３１ｃを書き込む。
【００８１】
以上で初回のパワーオン時の動作の説明を終了する。
シーケンスＳｅｑ３にて不良ブロック管理テーブル１３１ｃをＯＴＰ領域１４ｂに書き込むことにより、工場出荷時の不良ブロック情報を、ＯＴＰ領域１４ｂに記憶することができる。工場出荷時の不良ブロック情報を、ＯＴＰ領域１４ｂに保持することにより、メモリセルアレイ１４ａに記憶されている不良ブロック管理テーブルが消えてしまった場合や、メモリセルアレイ１４ａに記憶されている不良ブロック管理テーブルの記憶箇所が分からなくなった場合等にも、ＯＴＰ領域１４ｂに記憶されている不良ブロック管理テーブルを読み出すことにより、メモリセルアレイ１４ａの不良ブロックの位置を把握することができる。従って、メモリセルアレイ１４ａの不良ブロックにデータを書き込むことを抑制することができ、情報管理の信頼性を高めることができる。
【００８２】
また、ＦＰＧＡ１３が、自らＮＡＮＤ型フラッシュメモリ１４の初回パワーオンを確認することができる。これにより、ＣＰＵ１１を介さずにメモリセルアレイ１４ａの不良ブロック情報を収集することができる。
【００８３】
次に、制御モジュール１０ａの２回目以降のパワーオン時の制御モジュール１０ａの動作を説明する。
＜２回目以降のパワーオン時の制御モジュール１０ａの動作＞
図６は、２回目以降のパワーオン時の制御モジュールの動作を示す図である。
【００８４】
［シーケンスＳｅｑ１１］  ＯＴＰ制御部１３１ａは、ＮＡＮＤ型フラッシュメモリ１４のＯＴＰ領域１４ｂを読み出し、ＯＴＰ領域１４ｂが消去状態か否かを確認する。
ここで、初回パワーオン時にシーケンスＳｅｑ３の動作により、ＯＴＰ領域１４ｂには不良ブロック管理テーブルが記憶されている。従って、２回目以降のパワーオンであれば、消去状態ではない。消去状態でなければ、ＯＴＰ制御部１３１ａは、２回目以降のパワーオンであると判断する。このとき、ファーストパワーオンレジスタ１３ｂのレジスタ値は“０”のままである。
【００８５】
［シーケンスＳｅｑ１２］  ＯＴＰ制御部１３１ａは、２回目以降のパワーオンであると判断した場合、ＮＡＮＤ型フラッシュメモリ１４のＯＴＰ領域１４ｂから、最新のページに記憶されている不良ブロック管理テーブルを読み出す。最新のページに記憶されている不良ブロック管理テーブルは、例えば、ＯＴＰ制御部１３１ａが不良ブロック管理テーブルに付属するＣＲＣコードを参照することにより、識別することができる。
【００８６】
そして、ＯＴＰ制御部１３１ａは、読み出した不良ブロック管理テーブルを、ＦＰＧＡ１３内のＯＴＰ用不良ブロック管理テーブル格納部１３ｄに格納する。
その後、ＯＴＰ制御部１３１ａは、ＣＰＵ１１に初期化設定の完了を通知する。
【００８７】
ここまでが、２回目以降のパワーオン時の初期化設定動作である。初期化設定動作が終了すると、制御モジュール１０ａは、シーケンスＳｅｑ１３〜Ｓｅｑ１６の動作を行う。
［シーケンスＳｅｑ１３］  ＣＰＵ１１は、ＯＴＰ制御部１３１ａから初期化設定の完了が通知されると、ファーストパワーオンレジスタ１３ｂのレジスタ値を確認する。ファーストパワーオンレジスタ１３ｂのレジスタ値が“０”であることが確認できれば、ＣＰＵ１１は、２回目以降のパワーオンであると判断してＭＲＡＭ１５にアクセスし、保存場所識別情報に基づいて、メモリセルアレイ１４ａ内における不良ブロック管理テーブルの保存場所を確認する。
【００８８】
［シーケンスＳｅｑ１４］  ＣＰＵ１１は、メモリセルアレイ１４ａ内における不良ブロック管理テーブルの保存場所を設定（特定）し、ＦＰＧＡ１３のＤＭＡ１３ｇを起動する。
【００８９】
［シーケンスＳｅｑ１５］  ＣＰＵ１１によるＤＭＡ１３ｇの起動により、ＯＴＰ制御部１３１ａは、メモリセルアレイ１４ａ内における不良ブロック管理テーブルを読み出す。そして、読み出した不良ブロック管理テーブルを、ＦＰＧＡ１３内の不良ブロック管理テーブル格納部１３ｃに格納する。
【００９０】
［シーケンスＳｅｑ１６］  ＯＴＰ制御部１３１ａは、不良ブロック管理テーブル格納部１３ｃに格納されている不良ブロック管理テーブル１３１ｃの各不良ブロック情報とＯＴＰ用不良ブロック管理テーブル格納部１３ｄに格納されているＯＴＰ用不良ブロック管理テーブル１３１ｄの各不良ブロック情報との論理和を取った値をマージ用不良ブロック管理テーブル１３１ｆに格納する。
【００９１】
前述したように、制御モジュール１０ａの運用中にメモリセルアレイ１４ａに不良ブロックが発生すると、発生した不良ブロックの不良ブロック情報が、この不良ブロック管理テーブル１３１ｃに反映される。従って、シーケンスＳｅｑ１６の処理を行うことにより、マージ用不良ブロック管理テーブル１３１ｆには、現状の（ＯＴＰ用不良ブロック管理テーブル１３１ｄをＯＴＰ領域１４ｂから読み出した時点より後の）メモリセルアレイ１４ａの不良ブロックの状態を反映した不良ブロック情報が、格納される。
【００９２】
図７は、不良ブロック管理テーブルを説明する図である。
前述したように、不良ブロック管理テーブル１３１ｃには、各ブロックの不良ブロック情報が格納されている。
【００９３】
ここで、“０”がマークされているブロックは、不良ブロックではないことを示している。“１”がマークされているブロックは不良ブロックであることを示している。
不良ブロック管理テーブル１３１ｃに格納されている不良ブロック情報ｄ１、ｄ２、ｄ３、ｄ４、ｄ５、・・・、ｄｍは、メモリセルアレイ１４ａのブロックの順番に並んでいる。また、ＯＴＰ用不良ブロック管理テーブル１３１ｄに格納されている不良ブロック情報ｄ１１、ｄ１２、ｄ１３、ｄ１４、ｄ１５、・・・、ｄｎは、メモリセルアレイ１４ａのブロックの順番に並んでいる。
【００９４】
ＯＴＰ制御部１３１ａは、不良ブロック管理テーブル１３１ｃに格納されている不良ブロック情報ｄ１の値“０”とＯＴＰ用不良ブロック管理テーブル１３１ｄに格納されている不良ブロック情報ｄ１１の値“０”との論理和を取った値“０”をマージ用不良ブロック管理テーブル１３１ｆの不良ブロック情報ｄ２１に格納する。不良ブロック管理テーブル格納部１３ｃに格納されている不良ブロック情報ｄ２の値“１”とＯＴＰ用不良ブロック管理テーブル格納部１３ｄに格納されている不良ブロック情報ｄ１２の値“０”との論理和を取った値“１”をマージ用不良ブロック管理テーブル１３１ｆの不良ブロック情報ｄ２２に格納する。
【００９５】
他の不良ブロック情報についても同様の格納処理を繰り返し、不良ブロック管理テーブル格納部１３ｃに格納されている不良ブロック情報ｄｍの値“０”とＯＴＰ用不良ブロック管理テーブル格納部１３ｄに格納されている不良ブロック情報ｄｎの値“０”との論理和を取った値“０”をマージ用不良ブロック管理テーブル１３１ｆの不良ブロック情報ｄｐに格納する。
【００９６】
再び図６に戻って説明する。
メモリ制御部１３ａは、マージ用不良ブロック管理テーブル１３１ｆに格納されている不良ブロック情報を参照することによりメモリセルアレイ１４ａの不良ブロックを特定する。そして、メモリ制御部１３ａは、不良ブロック情報が“１”のブロックは、データの書き込み対象から除外する。前述したように、マージ用不良ブロック管理テーブル１３１ｆには、現状のメモリセルアレイ１４ａの不良ブロックの状態を反映した不良ブロック情報が格納されているため、メモリセルアレイ１４ａに記憶するデータの信頼性を高めることができる。
【００９７】
シーケンスＳｅｑ１６の処理の終了後、ＯＴＰ制御部１３１ａは、マージ用不良ブロック管理テーブル１３１ｆのＯＴＰ領域１４ｂへのバックアップを定期的に実施する。
以下、マージ用不良ブロック管理テーブル１３１ｆのバックアップ処理を説明する。
【００９８】
＜マージ用不良ブロック管理テーブル１３１ｆのバックアップ処理＞
図８は、マージ用不良ブロック管理テーブルのバックアップ処理を説明する図である。
［シーケンスＳｅｑ２１］  ＯＴＰ制御部１３１ａは、マージ用不良ブロック管理テーブル１３１ｆをＯＴＰ領域１４ｂにバックアップする時期の基準となる不良ブロック数の閾値を決定（算出）する。閾値は、マージ用不良ブロック管理テーブル１３１ｆの不良ブロック数の総数でもよいし、ＯＴＰ用不良ブロック管理テーブル１３１ｄの不良ブロック数と、マージ用不良ブロック管理テーブル１３１ｆの不良ブロック数との差分でもよい。本実施の形態では、ＯＴＰ用不良ブロック管理テーブル１３１ｄの不良ブロック数と、マージ用不良ブロック管理テーブル１３１ｆの不良ブロック数との差分を不良ブロック数の閾値として設定する。
【００９９】
閾値の決定に当たっては、メモリセルアレイ１４ａのブロック数と、ＯＴＰ領域１４ｂの容量（ページ数）を考慮する。例えば、ブロック数が「５１２」、ＯＴＰ領域１４ｂのページ数が「３０ページ」である場合、不良ブロック数の閾値を５１２／３０＋１＝「１８」に設定する。ここで１を加えたのは、最初のページには、既に初期化設定時に作成された不良ブロック管理テーブルが記憶されていることを考慮したものである。
【０１００】
［シーケンスＳｅｑ２２］  ＯＴＰ制御部１３１ａは、不良ブロック検出部１３ｅが検出した、マージ用不良ブロック管理テーブル１３１ｆの不良ブロック数を随時、または、一定周期で監視する。
【０１０１】
［シーケンスＳｅｑ２３］  ＯＴＰ制御部１３１ａは、不良ブロック検出部１３ｅが検出した不良ブロック数が、シーケンスＳｅｑ２１で設定した閾値以上となる毎に、マージ用不良ブロック管理テーブル１３１ｆをＯＴＰ領域１４ｂの既に不良ブロック管理テーブルが書き込まれているページの次のページに書き込む。書き込んだページが、現時点での最新のページになる。
【０１０２】
不良ブロック数の閾値を「１８」に設定した例では、ＯＴＰ用不良ブロック管理テーブル１３１ｄの不良ブロック数と、マージ用不良ブロック管理テーブル１３１ｆの不良ブロック数との差分が１８個になると、未だマージ用不良ブロック管理テーブル１３１ｆが書き込まれていないＯＴＰ領域１４ｂの既に不良ブロック管理テーブルが書き込まれているページの次のページに、マージ用不良ブロック管理テーブル１３１ｆを書き込む。
【０１０３】
［シーケンスＳｅｑ２４］  ＯＴＰ制御部１３１ａは、次回のパワーオン時はシーケンスＳｅｑ２３で書き込んだ不良ブロック管理テーブルをＯＴＰ領域１４ｂから読み出す。そして、ＯＴＰ制御部１３１ａは、読み出した不良ブロック管理テーブルを、ＯＴＰ用不良ブロック管理テーブル格納部１３ｄに格納する。
【０１０４】
上記シーケンスＳｅｑ２４の処理により、次回のパワーオン時にＯＴＰ制御部１３１ａが作成するマージ用不良ブロック管理テーブル１３１ｆに、工場出荷時の不良ブロック情報に加え、運用中に発生した不良ブロック情報も盛り込むことができる。従って、ＮＡＮＤ型フラッシュメモリ１４に記憶するデータの信頼性を高めることができる。
【０１０５】
次に、今までＯＴＰ領域１４ｂにマージ用不良ブロック管理テーブル１３１ｆが書き込まれていたＮＡＮＤ型フラッシュメモリ１４から、ＯＴＰ領域１４ｂにマージ用不良ブロック管理テーブル１３１ｆが書き込まれていないＮＡＮＤ型フラッシュメモリ１４に、ＮＡＮＤ型フラッシュメモリ１４が交換されたときの動作を説明する。
【０１０６】
＜ＮＡＮＤ型フラッシュメモリ１４の交換時の制御モジュール１０ａの動作＞
図９は、ＮＡＮＤ型フラッシュメモリの交換時の制御モジュールの動作を示す図である。
【０１０７】
以下に示すシーケンスＳｅｑ３１〜Ｓｅｑ３３は、シーケンスＳｅｑ１〜Ｓｅｑ３の動作と同じである。
［シーケンスＳｅｑ３１］  ＯＴＰ制御部１３１ａは、ＮＡＮＤ型フラッシュメモリ１４のＯＴＰ領域１４ｂを読み出し、ＯＴＰ領域１４ｂが消去状態であることを確認する。
【０１０８】
ＮＡＮＤ型フラッシュメモリ１４が交換され、ＯＴＰ領域１４ｂが消去状態であれば、初回パワーオンと判断できる。
［シーケンスＳｅｑ３２］  ＯＴＰ制御部１３１ａは、初回パワーオンであると判断した場合、ＮＡＮＤ型フラッシュメモリ１４の全ての不良ブロックの記憶箇所、すなわち、メモリセルアレイ１４ａの各ブロックの先頭ページに記憶されている不良ブロック情報を読み出す。そしてＯＴＰ制御部１３１ａは、読み出した不良ブロック情報に基づいて、不良ブロックの有無を確認する。そして、ＯＴＰ制御部１３１ａは、不良ブロックが存在する箇所を格納した不良ブロック管理テーブル１３１ｃを作成する。ＯＴＰ制御部１３１ａは、作成した不良ブロック管理テーブル１３１ｃを不良ブロック管理テーブル格納部１３ｃに格納する。
【０１０９】
［シーケンスＳｅｑ３３］  ＯＴＰ制御部１３１ａは、作成した不良ブロック管理テーブル１３１ｃをＮＡＮＤ型フラッシュメモリ１４のＯＴＰ領域１４ｂの既に不良ブロック管理テーブルが書き込まれているページの次のページに書き込む。書き込んだページが、現時点での最新のページになる。また、ファーストパワーオンレジスタ１３ｂのレジスタ値を“１”に設定する。
【０１１０】
ここまでが、初回パワーオン時の初期化設定動作である。初期化設定動作が終了すると、制御モジュール１０ａは、シーケンスＳｅｑ３４およびシーケンスＳｅｑ３５の動作を行う。
【０１１１】
［シーケンスＳｅｑ３４］  ＣＰＵ１１は、ＯＴＰ制御部１３１ａから初期化設定の完了が通知されると、ファーストパワーオンレジスタ１３ｂのレジスタ値が“１”であることを確認する。そして、ファーストパワーオンレジスタ１３ｂのレジスタ値が“１”であることを確認すると、ＣＰＵ１１は、不良ブロック管理テーブル１３１ｃの保存場所としてＮＡＮＤ型フラッシュメモリ１４のメモリセルアレイ１４ａを指定する。そして、ＣＰＵ１１は、ＦＰＧＡ１３のＤＭＡ１３ｇを起動する。また、ＣＰＵ１１は、メモリセルアレイ１４ａ内における不良ブロック管理テーブル１３１ｃの保存場所をＭＲＡＭ１５に通知する。このとき、ＭＲＡＭ１５には、ＮＡＮＤ型フラッシュメモリ１４交換前のメモリセルアレイ１４ａ内における不良ブロック管理テーブル１３１ｃの保存場所識別情報が記憶されているが、ＭＲＡＭ１５は、ＣＰＵ１１から通知された不良ブロック管理テーブル１３１ｃの保存場所に基づいて作成した保存場所識別情報を、既に記憶されている保存場所識別情報に上書きして記憶する。
【０１１２】
［シーケンスＳｅｑ３５］  ＯＴＰ制御部１３１ａは、不良ブロック管理テーブル１３１ｃをメモリセルアレイ１４ａに書き込む。
シーケンスＳｅｑ３１の処理により、初回パワーオンを確認するようにしたので、ＯＴＰ制御部１３１ａは、ＮＡＮＤ型フラッシュメモリ１４のメモリセルアレイ１４ａには不良ブロック管理テーブルが存在しないことを把握することができる。従って、メモリ制御部１３ａは、ＮＡＮＤ型フラッシュメモリ１４のデータ書き込み状態が分からないことに伴うメモリセルアレイ１４ａの全面消去を行わないので、不良ブロック情報の消失を抑制することができる。
【０１１３】
次に、ＭＲＡＭ１５に記憶しておいた保存場所識別情報が消失した時の制御モジュール１０ａの動作を説明する。
＜ＭＲＡＭ１５に記憶しておいた保存場所識別情報が消失した時の制御モジュール１０ａの動作＞
図１０は、ＭＲＡＭに記憶しておいた保存場所識別情報が消失した時の制御モジュールの動作を示す図である。
【０１１４】
［シーケンスＳｅｑ４１］  ＯＴＰ制御部１３１ａは、ＮＡＮＤ型フラッシュメモリ１４のＯＴＰ領域１４ｂを読み出し、ＯＴＰ領域１４ｂが消去状態か否か確認する。
ここで、初回パワーオン時にシーケンスＳｅｑ３の動作により、ＯＴＰ領域１４ｂには不良ブロック管理テーブルが記憶されている。従って、２回目以降のパワーオンであれば、消去状態ではない。消去状態でなければ、ＯＴＰ制御部１３１ａは、２回目以降のパワーオンであると判断する。このとき、ファーストパワーオンレジスタ１３ｂのレジスタ値は“０”のままである。
【０１１５】
［シーケンスＳｅｑ４２］  ＯＴＰ制御部１３１ａは、２回目以降のパワーオンであると判断した場合、ＮＡＮＤ型フラッシュメモリ１４のＯＴＰ領域１４ｂから、最新のページに記憶されている不良ブロック管理テーブルを読み出す。
【０１１６】
そして、ＯＴＰ制御部１３１ａは、ＯＴＰ領域１４ｂから読み出した不良ブロック管理テーブルをＯＴＰ用不良ブロック管理テーブル格納部１３ｄに格納する。ＯＴＰ制御部１３１ａは、ＯＴＰ領域１４ｂから読み出した不良ブロック管理テーブルをＯＴＰ用不良ブロック管理テーブル格納部１３ｄに格納後、ＣＰＵ１１に初期化設定の完了を通知する。
【０１１７】
ここまでが、２回目以降のパワーオン時の初期化設定動作である。初期化設定動作が終了すると、制御モジュール１０ａは、シーケンスＳｅｑ４３以降の動作を行う。
［シーケンスＳｅｑ４３］  ＣＰＵ１１は、ＯＴＰ制御部１３１ａから初期化設定の完了が通知されると、ファーストパワーオンレジスタ１３ｂのレジスタ値を確認する。ファーストパワーオンレジスタ１３ｂのレジスタ値が“０”であることが確認できれば、ＣＰＵ１１は、２回目以降のパワーオンであると判断してＭＲＡＭ１５にアクセスし、保存場所識別情報に基づいて、メモリセルアレイ１４ａ内における不良ブロック管理テーブルの保存場所を確認する。ＭＲＡＭ１５内のデータが消失したため、ＣＰＵ１１は、メモリセルアレイ１４ａ内における不良ブロック管理テーブルの保存場所が特定できない。メモリセルアレイ１４ａ内における不良ブロック管理テーブルの保存場所が特定できない場合、ＣＰＵ１１は、ＯＴＰ制御部１３１ａに、メモリセルアレイ１４ａ内に不良ブロック管理テーブルを再度書き込ませる処理を行う。
【０１１８】
具体的には、メモリセルアレイ１４ａ内に現在存在する不良ブロック管理テーブルを消去するため、ＣＰＵ１１は、ＦＰＧＡ１３のＤＭＡ１３ｇを起動する（消去コマンド起動）。
【０１１９】
［シーケンスＳｅｑ４４］  ＯＴＰ制御部１３１ａは、ＮＡＮＤ型フラッシュメモリ１４のメモリセルアレイ１４ａに記憶されているデータをブロック単位で消去する。すなわち、メモリセルアレイ１４ａの各ブロックに“１”を書き込んでいく。メモリセルアレイ１４ａの各ブロックに“１”を書き込んでいく際、ＯＴＰ制御部１３１ａは、ＯＴＰ用不良ブロック管理テーブル１３１ｄを参照する。そして、ＯＴＰ用不良ブロック管理テーブル１３１ｄに“０”が書き込まれている不良ブロック情報のブロックは“１”を書き込まない（消去しない）。これにより、メモリセルアレイ１４ａを、工場出荷時にメモリセルアレイ１４ａに既に発生する不良ブロックの箇所および運用中に新たに発生した不良ブロックの箇所を反映させた状態とすることができる。
【０１２０】
ＯＴＰ制御部１３１ａは、さらに、データを消去したメモリセルアレイ１４ａのブロックへ“０”を書き込む。
［シーケンスＳｅｑ４５］  ＯＴＰ制御部１３１ａは、メモリセルアレイ１４ａのデータを消去する際にデータが消去できずにデータ消去エラーが発生したブロックおよびメモリセルアレイ１４ａのデータを消去したブロックへ“０”を書き込んだ結果、“０”が書き込めずに書き込みエラーが発生したブロックについては、不良ブロック管理テーブル１３１ｃの対応する不良ブロック情報を“１”に設定する。
【０１２１】
［シーケンスＳｅｑ４６］  ＣＰＵ１１は、シーケンスＳｅｑ４５で作成した不良ブロック管理テーブル１３１ｃの、メモリセルアレイ１４ａ内における保存場所を指定し、ＤＭＡ１３ｇを起動する。また、ＣＰＵ１１は、メモリセルアレイ１４ａ内における不良ブロック管理テーブル１３１ｃの保存場所をＭＲＡＭ１５に通知する。これにより、ＭＲＡＭ１５は、メモリセルアレイ１４ａ内における不良ブロック管理テーブル１３１ｃの保存場所識別情報を記憶する。
【０１２２】
［シーケンスＳｅｑ４７］  ＣＰＵ１１によるＤＭＡ１３ｇの起動により、ＯＴＰ制御部１３１ａは、シーケンスＳｅｑ４６にてＭＲＡＭ１５に通知したメモリセルアレイ１４ａ内における不良ブロック管理テーブル１３１ｃの保存場所に、不良ブロック管理テーブル１３１ｃを書き込む。
【０１２３】
［シーケンスＳｅｑ４８］  ＯＴＰ制御部１３１ａは、不良ブロック管理テーブル格納部１３ｃに格納されている不良ブロック管理テーブル１３１ｃの各不良ブロック情報とＯＴＰ用不良ブロック管理テーブル格納部１３ｄに格納されているＯＴＰ用不良ブロック管理テーブル１３１ｄの各不良ブロック情報との論理和を取った値をマージ用不良ブロック管理テーブル１３１ｆに格納する。
【０１２４】
メモリ制御部１３ａは、マージ用不良ブロック管理テーブル１３１ｆに格納されている不良ブロック情報を参照することによりメモリセルアレイ１４ａの不良ブロックを特定する。そして、メモリ制御部１３ａは、不良ブロック情報が“１”のブロックは、データの書き込み対象から除外する。
【０１２５】
シーケンスＳｅｑ４３〜Ｓｅｑ４８の処理を行うことにより、メモリセルアレイ１４ａ内の不良ブロック管理テーブルの保存場所が分からなくなり、テーブルを再構築する際、工場出荷時の不良ブロック情報を、メモリセルアレイ１４ａに記憶する不良ブロック管理テーブルに反映させることができる。
【０１２６】
以下、前述したＯＴＰ制御部１３１ａの処理を、フローチャートを用いて説明する。
図１１は、ＯＴＰ制御部の処理を示すフローチャートである。
［ステップＳ１］  ＯＴＰ制御部１３１ａは、ＯＴＰ領域１４ｂを読み込む。
【０１２７】
［ステップＳ２］  ＯＴＰ制御部１３１ａは、ファーストパワーオンレジスタ１３ｂが消去状態であるか否かを判断する。ファーストパワーオンレジスタ１３ｂが消去状態である場合、すなわち、初回のパワーオンである場合（ステップＳ２のＹｅｓ）、ステップＳ３に遷移する。ファーストパワーオンレジスタ１３ｂが消去状態ではない場合、すなわち、２回目以降のパワーオンである場合（ステップＳ２のＮｏ）、ステップＳ８に遷移する。
【０１２８】
［ステップＳ３］  ＯＴＰ制御部１３１ａは、ＮＡＮＤ型フラッシュメモリ１４の全ての不良ブロックの記憶箇所、すなわち、メモリセルアレイ１４ａの各ブロックの先頭ページに記憶されている不良ブロック情報を読み出す。そしてＯＴＰ制御部１３１ａは、読み出した不良ブロック情報に基づいて、不良ブロックの有無を確認する。その後、ステップＳ４に遷移する。
【０１２９】
［ステップＳ４］  ＯＴＰ制御部１３１ａは、不良ブロックが存在する箇所を格納した不良ブロック管理テーブル１３１ｃを作成する。ＯＴＰ制御部１３１ａは、作成した不良ブロック管理テーブル１３１ｃを不良ブロック管理テーブル格納部１３ｃに格納する。その後、ステップＳ５に遷移する。
【０１３０】
［ステップＳ５］  ＯＴＰ制御部１３１ａは、ステップＳ４にて作成した不良ブロック管理テーブル１３１ｃをＯＴＰ領域１４ｂに書き込む。その後、ステップＳ６に遷移する。
【０１３１】
［ステップＳ６］  ＯＴＰ制御部１３１ａは、ファーストパワーオンレジスタ１３ｂのレジスタ値を“１”に設定する。その後、ステップＳ７に遷移する。
［ステップＳ７］  ＣＰＵ１１によるＤＭＡ１３ｇの起動により、ＯＴＰ制御部１３１ａは、不良ブロック管理テーブル１３１ｃをメモリセルアレイ１４ａに書き込む。その後、図１１の処理を終了する。
【０１３２】
［ステップＳ８］  ＯＴＰ制御部１３１ａは、ＯＴＰ領域１４ｂから不良ブロック管理テーブルを読み出す。その後、ステップＳ９に遷移する。
［ステップＳ９］  ＯＴＰ制御部１３１ａは、ステップＳ８にて読み出した不良ブロック管理テーブルをＯＴＰ用不良ブロック管理テーブル格納部１３ｄに格納する。その後、ステップＳ１０に遷移する。
【０１３３】
［ステップＳ１０］  ＯＴＰ制御部１３１ａは、ＭＲＡＭ１５にアクセスし、保存場所識別情報に基づいて、メモリセルアレイ１４ａ内における不良ブロック管理テーブルの保存場所を確認する。保存場所が特定できた場合（ステップＳ１０のＹｅｓ）、ステップＳ１１に遷移する。保存場所が特定できなかった場合（ステップＳ１０のＮｏ）、ステップＳ１３に遷移する。
【０１３４】
［ステップＳ１１］  ＯＴＰ制御部１３１ａは、不良ブロック管理テーブルをメモリセルアレイ１４ａから読み出す。その後、ステップＳ１２に遷移する。
［ステップＳ１２］  ＯＴＰ制御部１３１ａは、ステップＳ１１にてメモリセルアレイ１４ａから読み出した不良ブロック管理テーブルを不良ブロック管理テーブル格納部１３ｃに格納する。その後、ステップＳ１７に遷移する。
【０１３５】
［ステップＳ１３］  ＯＴＰ制御部１３１ａは、ＯＴＰ用不良ブロック管理テーブル１３１ｄを参照しながらメモリセルアレイ１４ａに記憶されているデータをブロック単位で消去する。その後、ステップＳ１４に遷移する。
【０１３６】
［ステップＳ１４］  ＯＴＰ制御部１３１ａは、メモリセルアレイ１４ａのデータを消去したブロックへ“０”を書き込む。その後、ステップＳ１５に遷移する。
［ステップＳ１５］  ＯＴＰ制御部１３１ａは、データ消去エラーが発生したブロックおよび書き込みエラーが発生したブロックを確認し、不良ブロックの箇所を反映した不良ブロック管理テーブル１３１ｃを作成する（不良ブロック管理テーブル１３１ｃの再構築）。その後、ステップＳ１６に遷移する。
【０１３７】
［ステップＳ１６］  ＯＴＰ制御部１３１ａは、ＣＰＵ１１がＭＲＡＭ１５に通知したメモリセルアレイ１４ａ内における不良ブロック管理テーブル１３１ｃの保存場所に、ステップＳ１５にて作成した不良ブロック管理テーブル１３１ｃを書き込む。その後、ステップＳ１７に遷移する。
【０１３８】
［ステップＳ１７］  ＯＴＰ制御部１３１ａは、ＯＴＰ制御部１３１ａは、不良ブロック管理テーブル格納部１３ｃに格納されている不良ブロック管理テーブル１３１ｃの各不良ブロック情報とＯＴＰ用不良ブロック管理テーブル格納部１３ｄに格納されているＯＴＰ用不良ブロック管理テーブル１３１ｄの各不良ブロック情報との論理和を取った値をマージ用不良ブロック管理テーブル１３１ｆに格納する。その後、図１１の処理を終了する。
【０１３９】
以上で、ＯＴＰ制御部の処理の説明を終了する。
次に、マージ用不良ブロック管理テーブル１３１ｆのバックアップ処理を、フローチャートを用いて説明する。
【０１４０】
図１２は、マージ用不良ブロック管理テーブルのバックアップ処理を示すフローチャートである。
［ステップＳ２１］  ＯＴＰ制御部１３１ａは、マージ用不良ブロック管理テーブル１３１ｆをＯＴＰ領域１４ｂにバックアップする時期の基準となる不良ブロック数の閾値を決定する。その後、ステップＳ２２に遷移する。
【０１４１】
［ステップＳ２２］  ＯＴＰ制御部１３１ａは、ＯＴＰ制御部１３１ａは、不良ブロック検出部１３ｅが検出した、マージ用不良ブロック管理テーブル１３１ｆの不良ブロック数を確認する。その後、ステップＳ２３に遷移する。
【０１４２】
［ステップＳ２３］  ＯＴＰ制御部１３１ａは、ステップＳ２２にて確認した不良ブロック数が、ステップＳ２１にて決定した閾値以上か否かを判断する。ステップＳ２２にて確認した不良ブロック数が、ステップＳ２１にて決定した閾値以上である場合（ステップＳ２３のＹｅｓ）、ステップＳ２４に遷移する。ステップＳ２２にて確認した不良ブロック数が、ステップＳ２１にて決定した閾値より小さい場合は、ステップＳ２２に遷移する。
【０１４３】
［ステップＳ２４］  ＯＴＰ制御部１３１ａは、マージ用不良ブロック管理テーブル１３１ｆをＯＴＰ領域１４ｂの新たなページに書き込む。その後、図１２に示す処理を終了する。
【０１４４】
以上で、マージ用不良ブロック管理テーブルのバックアップ処理の説明を終了する。
以上、本発明の制御装置、制御モジュールおよび制御方法を、図示の実施の形態に基づいて説明したが、本発明はこれに限定されるものではなく、各部の構成は、同様の機能を有する任意の構成のものに置換することができる。また、本発明に、他の任意の構成物や工程が付加されていてもよい。
【０１４５】
また、本発明は、前述した実施の形態のうちの、任意の２以上の構成（特徴）を組み合わせたものであってもよい。
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、ＦＰＧＡ１３または制御モジュール１０ａ、１０ｂ、１０ｃが有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記憶装置には、ハードディスク装置（ＨＤＤ）、フレキシブルディスク（ＦＤ）、磁気テープなどがある。光ディスクには、ＤＶＤ、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ／ＲＷなどがある。光磁気記録媒体には、ＭＯ（Magneto-Optical disk）などがある。
【０１４６】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【０１４７】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、ネットワークを介して接続されたサーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
【０１４８】
また、上記の処理機能の少なくとも一部を、ＤＳＰ（Digital Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）、ＰＬＤ（Programmable Logic Device）などの電子回路で実現することもできる。
【０１４９】
以上の第１〜第２の実施の形態に関し、さらに以下の付記を開示する。
（付記１）  データの書き込みが複数回可能な複数のブロックを有する第１の記憶領域と、データの書き込みが１回だけ可能な第２の記憶領域とを有する記憶装置を制御する制御装置において、
前記第１の記憶領域には、前記ブロック毎に前記ブロックの使用が許可されているか否かを示すフラグが記憶されており、
前記フラグに基づいて、前記記憶装置のブロック毎にデータが記憶可能か否かを管理するフラグ管理情報を作成するフラグ管理情報作成部と、
前記フラグ管理情報作成部により作成された前記フラグ管理情報を前記第２の記憶領域に記憶させる管理情報制御部と、
を有することを特徴とする制御装置。
【０１５０】
（付記２）  前記フラグ管理情報作成部は、前記第２の記憶領域に何らかのデータが書き込まれているか否かを確認し、前記第２の記憶領域にデータが書き込まれていないことを確認した場合には、前記フラグ管理情報を作成することを特徴とする付記１記載の制御装置。
【０１５１】
（付記３）  前記管理情報制御部は、前記第２の記憶領域に何らかのデータが書き込まれているか否かを確認し、前記第２の記憶領域にデータが書き込まれていることを確認した場合には、前記第２の記憶領域から前記フラグ管理情報を読み出す処理を実行することを特徴とする付記１記載の制御装置。
【０１５２】
（付記４）  前記管理情報制御部は、前記フラグ管理情報作成部により作成された前記フラグ管理情報を前記第１の記憶領域に記憶させ、
前記管理情報制御部は、前記第２の記憶領域に何らかのデータが書き込まれているか否かを確認した後に、前記第１の記憶領域に記憶されている前記フラグ管理情報を読み出し、
当該制御装置は、前記第２の記憶領域から読み出された前記フラグ管理情報と前記第１の記憶領域から読み出された前記フラグ管理情報とに基づいて、前記第１の記憶領域にデータを書き込みまたは前記第１の記憶領域からデータを読み出すことを特徴とする付記３記載の制御装置。
【０１５３】
（付記５）  使用が許可されていない前記ブロックを検出する検出部をさらに有し、
前記管理情報制御部は、前記検出部の検出結果に基づいて使用が許可されていない前記ブロックの増加数を判断し、前記増加数が所定値以上になった場合、前記検出部の検出結果を反映させた前記フラグ管理情報を前記第２の記憶領域に記憶させることを特徴とする付記３または４記載の制御装置。
【０１５４】
（付記６）  前記管理情報制御部は、前記フラグ管理情報作成部により作成された前記フラグ管理情報を前記第１の記憶領域に記憶させ、
前記第１の記憶領域に記憶させた前記フラグ管理情報の記憶場所が特定できない場合、前記フラグ管理情報作成部は、前記第２の記憶領域から前記フラグ管理情報を読み出す処理を実行することにより読み出された前記フラグ管理情報に基づいて作成した前記フラグ管理情報を前記第１の記憶領域に記憶させることを特徴とする付記３ないし５のいずれかに記載の制御装置。
【０１５５】
（付記７）  前記管理情報制御部が、前記フラグ管理情報を前記第２の記憶領域に記憶させるときにセットされるレジスタをさらに有し、
前記フラグ管理情報作成部は、前記レジスタがセットされているか否かに基づいて、前記第２の記憶領域に何らかのデータが書き込まれているか否かを確認することを特徴とする付記２ないし６のいずれかに記載の制御装置。
【０１５６】
（付記８）  データの書き込みが複数回可能な複数のブロックを有する第１の記憶領域と、データの書き込みが１回だけ可能な第２の記憶領域とを有する記憶装置を制御する制御装置とＣＰＵとを備える制御モジュールにおいて、
前記第１の記憶領域には、前記ブロック毎に前記ブロックの使用が許可されているか否かを示すフラグが記憶されており、
前記制御装置は、
前記フラグに基づいて、前記記憶装置のブロック毎にデータが記憶可能か否かを管理するフラグ管理情報を作成するフラグ管理情報作成部と、
前記フラグ管理情報作成部により作成された前記フラグ管理情報を前記第２の記憶領域に記憶させる管理情報制御部と、
前記管理情報制御部が、前記フラグ管理情報を前記第２の記憶領域に記憶させるときにセットされるレジスタと、を有し、
前記ＣＰＵは、
前記レジスタがセットされているか否かに基づいて、異なる処理を実行し、前記フラグ管理情報を前記第１の記憶領域に記憶させる処理を前記制御装置に実行させる、
ことを特徴とする制御モジュール。
【０１５７】
（付記９）  データの書き込みが複数回可能な複数のブロックを有する第１の記憶領域と、データの書き込みが１回だけ可能な第２の記憶領域とを有する記憶装置を制御する制御装置の制御方法において、
前記第１の記憶領域には、前記ブロック毎に前記ブロックの使用が許可されているか否かを示すフラグが記憶されており、
前記フラグに基づいて、前記記憶装置のブロック毎にデータが記憶可能か否かを管理するフラグ管理情報を作成し、
作成された前記フラグ管理情報を前記第２の記憶領域に記憶させる、
ことを特徴とする制御方法。
【符号の説明】
【０１５８】
１  制御装置
１ａ  アクセス制御部
１ｂ  フラグ管理情報作成部
１ｂ１  管理テーブル
１ｃ  管理情報制御部
２  記憶装置
２ａ  第１の記憶領域
２ｂ  第２の記憶領域
１０ａ、１０ｂ、１０ｃ  制御モジュール
１１  ＣＰＵ
１２  キャッシュメモリ
１３  ＦＰＧＡ
１３ａ  メモリ制御部
１３１ａ  ＯＴＰ制御部
１３ｂ  ファーストパワーオンレジスタ
１３ｃ  不良ブロック管理テーブル格納部
１３１ｃ  不良ブロック管理テーブル
１３ｄ  ＯＴＰ用不良ブロック管理テーブル格納部
１３１ｄ  ＯＴＰ用不良ブロック管理テーブル
１３ｅ  不良ブロック検出部
１３ｆ  マージ用不良ブロック管理テーブル格納部
１３１ｆ  マージ用不良ブロック管理テーブル
１３ｇ  ＤＭＡ
１４  ＮＡＮＤ型フラッシュメモリ
１４ａ  メモリセルアレイ
１４ｂ  ＯＴＰ領域
１５  ＭＲＡＭ
１６  チャネルアダプタ
１７  デバイスアダプタ
１８  コントローラエンクロージャ
２０  ドライブエンクロージャ群
２０ａ、２０ｂ、２０ｃ、２０ｄ  ドライブエンクロージャ
３０  ホスト
３１  ファイバチャネルスイッチ
４１  制御電源供給部
４２  停電時給電部
１００  ストレージシステム
【図１】
0005601053.tif 000002
【図２】
0005601053.tif 000003
【図３】
0005601053.tif 000004
【図４】
0005601053.tif 000005
【図５】
0005601053.tif 000006
【図６】
0005601053.tif 000007
【図７】
0005601053.tif 000008
【図８】
0005601053.tif 000009
【図９】
0005601053.tif 000010
【図１０】
0005601053.tif 000011
【図１１】
0005601053.tif 000012
【図１２】
0005601053.tif 000013