(57)【要約】【課題】不揮発性の半導体メモリを用いてデータ処理の効率のよいミラーリングを実現することを課題とする。【解決手段】本発明の記憶装置６において、メモリ制御部１は、ホスト装置３からデータの書き込み指示を受けた場合、２つの不揮発性の半導体メモリ２の両方に対して当該データを書き込み、ホスト装置３からデータの読み出し指示を受けた場合、２つの半導体メモリ２の一方から対応するデータを読み出し、その読み出したデータにエラーがあるかチェックを行い、その読み出したデータにエラーがあると判定したとき、２つの半導体メモリ２の他方から対応するデータを読み出す。【選択図】図１
2010079856.tif 000002
【特許請求の範囲】
【請求項１】
記憶領域に対するデータの書き込みを所定の単位で行うと共に、その所定の単位よりデータ量が大きな物理ブロックの単位でデータの消去を行う２つの不揮発性半導体メモリと、
外部のホスト装置からの指示に従い、前記２つの不揮発性半導体メモリに対するデータの書き込みおよび読み出しを制御するメモリ制御部と、
を具備する記憶装置であって、
前記メモリ制御部は、
前記ホスト装置からデータの書き込み指示を受けた場合、前記２つの不揮発性半導体メモリの両方に対して当該データを書き込み、
前記ホスト装置からデータの読み出し指示を受けた場合、前記２つの不揮発性半導体メモリの一方から対応するデータを読み出し、その読み出したデータにエラーがあるかチェックを行い、その読み出したデータにエラーがあると判定したとき、前記２つの不揮発性半導体メモリの他方から対応するデータを読み出す
ことを特徴とする記憶装置。
【請求項２】
前記メモリ制御部は、
前記ホスト装置からデータの書き込み指示を受けて前記２つの不揮発性半導体メモリの両方に対して当該データを書き込む場合、一方の前記不揮発性半導体メモリの所定の前記物理ブロックと、他方の前記不揮発性半導体メモリの所定の前記物理ブロックとに対し、前記所定の単位の同じアドレスに同じデータを書き込むように制御する
ことを特徴とする請求項１に記載の記憶装置。
【請求項３】
前記メモリ制御部は、
前記読み出したデータにエラーがあるかチェックを行うとき、ＣＲＣ（Cyclic Redundancy Check）符号およびリードソロモン符号の少なくともいずれかを用いる
ことを特徴とする請求項１または請求項２に記載の記憶装置。
【請求項４】
記憶領域に対するデータの書き込みを所定の単位で行うと共に、その所定の単位よりデータ量が大きな物理ブロックの単位でデータの消去を行う２つの不揮発性半導体メモリと、
外部のホスト装置からの指示に従い、前記２つの不揮発性半導体メモリに対するデータの書き込みおよび読み出しを制御するメモリ制御部と、
を具備する記憶装置によるメモリ制御方法であって、
前記メモリ制御部は、
前記ホスト装置からデータの書き込み指示を受けた場合、前記２つの不揮発性半導体メモリの両方に対して当該データを書き込み、
前記ホスト装置からデータの読み出し指示を受けた場合、前記２つの不揮発性半導体メモリの一方から対応するデータを読み出し、その読み出したデータにエラーがあるかチェックを行い、その読み出したデータにエラーがあると判定したとき、前記２つの不揮発性半導体メモリの他方から対応するデータを読み出す
ことを特徴とするメモリ制御方法。
【請求項５】
前記メモリ制御部は、
前記ホスト装置からデータの書き込み指示を受けて前記２つの不揮発性半導体メモリの両方に対して当該データを書き込む場合、一方の前記不揮発性半導体メモリの所定の前記物理ブロックと、他方の前記不揮発性半導体メモリの所定の前記物理ブロックとに対し、前記所定の単位の同じアドレスに同じデータを書き込むように制御する
ことを特徴とする請求項４に記載のメモリ制御方法。
【請求項６】
前記メモリ制御部は、
前記読み出したデータにエラーがあるかチェックを行うとき、ＣＲＣ（Cyclic Redundancy Check）符号およびリードソロモン符号の少なくともいずれかを用いる
ことを特徴とする請求項４または請求項５に記載のメモリ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性半導体メモリを用いたミラーリング（同一データを複数の記憶デバイスに保存して利用すること）の技術に関する。
【背景技術】
【０００２】
近年、情報機器の補助記憶装置として、磁気ディスク記憶装置のほかに、耐振性やアクセス速度の面で優れた半導体メモリを記憶媒体とする記憶装置が用いられるようになってきている。その中で、特に、フラッシュメモリなどのＥＥＰＲＯＭ（Electrically Erasable Programmable Read Only Memory）のような、電気的に消去可能で再書き込み可能な不揮発性半導体メモリを用いたものが、情報機器の補助記憶装置の主流となってきている。
【０００３】
一般に、不揮発性半導体メモリに記憶させたデータの信頼性は、その素子の特性上、充分高いとは言えない。つまり、不揮発性半導体メモリを用いた記憶装置では、初期段階において、あるいは書き換え回数の増加にともなって、ビット化け（「０」→「１」、あるいは「１」→「０」）によるデータの破損が生じることがある。
【０００４】
そこで、このような不揮発性半導体メモリの欠点を補うためには、ミラーリングが有効な手段の１つである。ミラーリングによって同じデータを例えば２箇所に保存しておけば、一方のデータが破損しても、他方のデータが破損していなければ、その破損していないデータを用いることで何も問題がないからである。
【０００５】
例えば、特許文献１では、２つのフラッシュメモリを用いてミラーリングを行い、データを読み出すときは、両方のフラッシュメモリから該当するデータを読み出して比較し、それらが一致すれば正常（データ破損なし）、一致しなければ異常(データ破損あり)と判定することでデータの信頼性を高める技術が開示されている。
【特許文献１】特開２００７−２５７５４７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献１の技術では、データを読み出すときは、必ず両方のフラッシュメモリから該当するデータを読み出し、さらに、読み出した２つのデータが一致するか比較しなければならないので、データ処理の効率がよくないという問題があった。
【０００７】
そこで、本発明は、前記問題に鑑みてなされたものであり、不揮発性半導体メモリを用いてデータ処理の効率のよいミラーリングを実現することを課題とする。
【課題を解決するための手段】
【０００８】
前記課題を解決するために、本発明は、記憶領域に対するデータの書き込みを所定の単位で行うと共に、その所定の単位よりデータ量が大きな物理ブロックの単位でデータの消去を行う２つの不揮発性半導体メモリと、外部のホスト装置からの指示に従い、２つの不揮発性半導体メモリに対するデータの書き込みおよび読み出しを制御するメモリ制御部と、を具備する記憶装置である。
メモリ制御部は、ホスト装置からデータの書き込み指示を受けた場合、２つの不揮発性半導体メモリの両方に対して当該データを書き込み、ホスト装置からデータの読み出し指示を受けた場合、２つの不揮発性半導体メモリの一方から対応するデータを読み出し、その読み出したデータにエラーがあるかチェックを行い、その読み出したデータにエラーがあると判定したとき、２つの不揮発性半導体メモリの他方から対応するデータを読み出すことを特徴とする。その他の手段については後記する。
【発明の効果】
【０００９】
本発明によれば、不揮発性半導体メモリを用いてデータ処理の効率のよいミラーリングを実現することができる。
【発明を実施するための最良の形態】
【００１０】
以下、本発明を実施するための最良の形態（以下、実施形態という。）について、図面を参照（言及図以外の図も適宜参照）しながら説明する。図１は、本実施形態の記憶装置のハードウェア構成を含む説明図である。
【００１１】
図１に示すように、記憶装置６は、ホスト装置３からの指示に基づいてデータの記憶を行う装置であり、ホスト装置３とデータバス４を介してアクセス可能に接続される。データバス４としては、例えばＳＣＳＩ（Small Computer System Interface）やＡＴＡ（Advanced Technology Attachment）などが用いられるが、ＵＳＢ（Universal Serial Bus）などの他のデータバスであってもよい。
【００１２】
記憶装置６は、メモリ制御部１と、ミラーリングのためのペアをなす２つの不揮発性の半導体メモリ２（２ａ，２ｂ）とから構成される。なお、以下、２つの半導体メモリ２を区別して表現するときは「半導体メモリ（Ａ系）２ａ」、「半導体メモリ（Ｂ系）２ｂ」と表記し、２つの半導体メモリ２を区別せずに（共通または両方に関して）表現するときは「半導体メモリ２」と表記する。
【００１３】
半導体メモリ２とメモリ制御部１とのデータのやり取りは、データバス５を介して行われる。半導体メモリ２は、例えばフラッシュメモリであり、その場合、データの書き込みと読み出しはページ単位（所定の単位）で行われ、データの消去は複数ページからなるブロック単位で行われる。なお、ブロックには、例えば、すでにデータが格納されているデータブロック、データが未格納で待機中の交替ブロック、データの消去を待っている状態の消去待ちブロックなどがあるが、以下、それらを区別した詳細な説明を省略する場合もある。
【００１４】
メモリ制御部１は、マイクロプロセッサ１１と、メモリＩ／Ｆ（インターフェース）制御部１２と、ホストＩ／Ｆ制御部１３と、メモリ１４とを有している。
【００１５】
マイクロプロセッサ１１は、ホスト装置３からの指示に従い、２つの半導体メモリ２に対するデータの書き込みおよび読み出しを制御する。
【００１６】
メモリＩ／Ｆ制御部１２は、マイクロプロセッサ１１からの指示により半導体メモリ２とのアクセス制御を行う。なお、マイクロプロセッサ１１から半導体メモリ２を直接制御可能であれば、メモリＩ／Ｆ制御部１２は必ずしも必要ではない。
【００１７】
ホストＩ／Ｆ制御部１３は、ホスト装置３からのデータの書き込みおよび読み出し要求（指示）に従って、ホスト装置３とのデータの送受信を制御する。なお、ホスト装置３からのデータの書き込みおよび読み出し要求は、半導体メモリ２に関して構築される論理的記憶領域に対して行われる（詳細は後記）。
【００１８】
メモリ１４は、論理・物理変換テーブル１４１を有している。論理・物理変換テーブル１４１は、ホスト装置３からのアクセス時に示される論理アドレスと２つの半導体メモリ２上の物理アドレスとの対応付けを行うテーブルである（詳細は図３で後記）。
【００１９】
なお、メモリ１４は、このほかに、ブロックごとに次回の書き込みページを管理するためのテーブル、交替ブロックのリストを記憶するテーブル、ブロックごとの消去回数を管理するためのテーブル、消去待ちブロックを管理するためのテーブルなどを有していてもよいが、それらは本発明の特徴と直接関係がないので、図示や詳細な説明を省略する。なお、論理・物理変換テーブル１４１などのテーブルの内容は、記憶装置６自体の初期化時にマイクロプロセッサ１１が設定するものとする。
【００２０】
メモリ１４としては、例えば、フラッシュメモリ以外の、ＳＲＡＭ（Static Random Access Memory）、ＤＲＡＭ（Dynamic RAM）、ＭＲＡＭ（Magneto-resistive RAM）などのメモリ素子を使用することができる。
【００２１】
図２は、本実施形態の半導体メモリの内部構成を示した図である。図２では、半導体メモリ２に関する論理的記憶領域を示している。図１に示したホスト装置３は、記憶装置６に関して、この論理的記憶領域を認識する。
【００２２】
ブロック２１は、データ消去の最小単位である。ページ２１１は、データの読み出しおよび書き込みの単位である。図２において、半導体メモリ２の論理的記憶領域は、複数のブロック２１で構成されており、ブロック２１は複数のページ２１１により構成されている。すなわち、半導体メモリ２の論理的記憶領域は、ブロック１からブロックｍ（整数）までのｍ個の各ブロック２１を有し、それぞれのブロックは、ページ１からページｎ（整数）までのｎ個のページを有している。
【００２３】
図３は、論理・物理変換テーブルの構成例を示した図である。論理・物理変換テーブル１４１は、ホスト装置３からのアクセス時に示される論理アドレスと、半導体メモリ（Ａ系）２ａの物理ブロックと、半導体メモリ（Ｂ系）２ｂの物理ブロックと、この２つの物理ブロックに共通となるページ番号とから構成される。なお、本実施形態において、「ブロック」と「物理ブロック」は同義である。
【００２４】
これらのうち、論理アドレスの値は原則として初期設定状態から不変であるが、半導体メモリ（Ａ系）２ａの物理ブロックと、半導体メモリ（Ｂ系）２ｂの物理ブロックと、ページ番号の値は、メモリ制御部１による半導体メモリ２に対する書き込み動作などに応じて書き換えられる。つまり、論理アドレスと物理アドレス（ブロック番号とページ番号）の対応関係は随時変化し、その対応関係を論理・物理変換テーブル１４１で管理する。
【００２５】
図３の論理・物理変換テーブル１４１からわかるように、ページ番号を、半導体メモリ（Ａ系）２ａの物理ブロックと、半導体メモリ（Ｂ系）２ｂの物理ブロックとで共通とすることで、論理・物理変換テーブル１４１のデータサイズを減らすことができ、それにより、マイクロプロセッサ１１による論理・物理変換テーブル１４１の書き換えや参照の動作を高速化することができる。
【００２６】
次に、図４を参照して、論理・物理変換テーブル１４１において２つの物理ブロックに対しページ番号を共通とするための、マイクロプロセッサ１１による半導体メモリ２に対する動作の概要について説明する。図４は、その動作の概要の説明図である。
【００２７】
ここで、半導体メモリ（Ａ系）２ａのある物理ブロックにおいてページ５が不良であり、半導体メモリ（Ｂ系）２ｂのある物理ブロックにおいて全ページに不良がないものとする。これらの２つの物理ブロックに対してデータ（１）〜（６）を書き込む場合、２つの物理ブロックに対しページ番号を共通とするため、双方の物理ブロックのページ５は使用せず、双方の物理ブロックのページ１〜４にデータ（１）〜（４）を書き込み、ページ６，７にデータ（５），（６）を書き込む。このようにすれば、２つの物理ブロックに対しページ番号を共通とすることができる。
【００２８】
続いて、図５を参照して、半導体メモリ２に対する書き込み処理について説明する。図５は、半導体メモリに対する書き込み処理を示したフローチャートである。なお、メモリＩ／Ｆ制御部１２とホストＩ／Ｆ制御部１３の動作については説明を省略する。
【００２９】
まず、マイクロプロセッサ１１は、ホスト装置３から書き込み指示（論理アドレス、データ、データサイズ）を受信する（ステップＳ５０１）。
次に、マイクロプロセッサ１１は、ステップＳ５０１で受信したデータにＣＲＣ（Cyclic Redundancy Check）符号を付加する（ステップＳ５０２）。ＣＲＣ符号は、エラー(誤り）検出のための符号であり、データを所定の生成多項式で除算した剰余がエラー検出用の数値として用いられる。なお、このＣＲＣ符号を用いれば、データのエラー検出ができるが、エラー検出時にデータを復旧することはできない。
【００３０】
続いて、マイクロプロセッサ１１は、ステップＳ５０２でＣＲＣ符号を付加したデータに、リードソロモン符号を付加する（ステップＳ５０３）。リードソロモン符号は、ガロア体の概念を利用したエラー(誤り）訂正符号の一つである。このリードソロモン符号を用いれば、エラー検出ができ、さらに、エラー検出時には高確率でデータを復旧することができる。
【００３１】
次に、マイクロプロセッサ１１は、書き込み対象となる半導体メモリ２の物理アドレスを特定するために論理・物理変換テーブル１４１を参照し、半導体メモリ（Ａ系）２ａの所定ブロックと半導体メモリ（Ｂ系）２ｂの所定ブロックに対して、ステップＳ５０３でリードソロモン符号を付加したデータをそれぞれのブロックの同じページに書き込む（ステップＳ５０４）。なお、ステップＳ５０４において、マイクロプロセッサ１１は、特定した各ブロック内のページの空き容量が十分であるかの確認や、その空き容量が十分でない場合に書き込み対象を別のブロックとするブロック交替処理や、書き込みエラーにともなうブロック交替処理などを行うが、それらの詳細な説明は省略する。
【００３２】
続いて、マイクロプロセッサ１１は、ステップＳ５０４での処理内容に応じて論理・物理変換テーブル１４１の内容を更新し（ステップＳ５０５）、ホスト装置３に書き込み終了を通知し（ステップＳ５０６）、処理を終了する。
【００３３】
次に、図６Ａ，６Ｂを参照して、半導体メモリ２に対する読み出し処理について説明する。図６Ａ，６Ｂは、半導体メモリに対する読み出し処理を示したフローチャートである。なお、メモリＩ／Ｆ制御部１２とホストＩ／Ｆ制御部１３の動作については説明を省略する。
【００３４】
まず、マイクロプロセッサ１１は、ホスト装置３から読み出し指示（論理アドレス）を受信する（ステップＳ６０１）。
次に、マイクロプロセッサ１１は、論理・物理変換テーブル１４１を参照し、一方の半導体メモリ２、例えば半導体メモリ（Ａ系）２ａから該当するデータを読み出す（ステップＳ６０２）。このステップＳ６０２で読み出す対象の半導体メモリ２は、例えば、半導体メモリ（Ａ系）２ａと半導体メモリ（Ｂ系）２ｂを交互としてもよいし、他の基準により決定してもよい。
【００３５】
続いて、マイクロプロセッサ１１は、ステップＳ６０２で読み出したデータをリードソロモン復号化し（ステップＳ６０３）、エラーがあるか否かを判定する（ステップＳ６０４）。
【００３６】
エラーがないと判定された場合（ステップＳ６０４でＮｏ）、ステップＳ６０７に進む。エラーがあると判定された場合（ステップＳ６０４でＹｅｓ）、マイクロプロセッサ１１は、そのエラーの訂正が可能か否かを判定する（ステップＳ６０５）。
【００３７】
エラー訂正が可能でないと判定された場合（ステップＳ６０５でＮｏ）、ステップＳ６０９に進む（ステップＳ６０９の処理については後記する）。エラー訂正が可能であると判定された場合（ステップＳ６０５でＹｅｓ）、マイクロプロセッサ１１は、リードソロモンによるエラー訂正を行い（ステップＳ６０６）、ステップＳ６０７に進む。なお、ステップＳ６０６では、半導体メモリ２の性能劣化を回避するために、エラー訂正したデータを他のブロックに書き込み、読み出したデータを消去するブロック交替処理を行うのが好ましい。
【００３８】
ステップＳ６０７において、マイクロプロセッサ１１は、ＣＲＣ復号化とそれによるエラーチェックを行う。
次に、マイクロプロセッサ１１は、ＣＲＣチェックによるエラーがあるか否かを判定し（ステップＳ６０８）、当該エラーがないと判定した場合（Ｎｏ）ステップＳ６１８に進み、当該エラーがあると判定した場合（Ｙｅｓ）そのブロックからは有効なデータの読み出しができなかったことになるので論理・物理変換テーブル１４１において当該ブロックを異常（不使用）と登録する（ステップＳ６０９）。
【００３９】
ステップＳ６０９の後、マイクロプロセッサ１１は、論理・物理変換テーブル１４１を参照し、他方の半導体メモリ２、例えば半導体メモリ（Ｂ系）２ｂから該当するデータを読み出す（ステップＳ６１０）。ステップＳ６１１〜Ｓ６１７の処理は、ステップＳ６０３〜Ｓ６０９の処理と同様なので、説明を省略する。
【００４０】
ステップＳ６１８において、マイクロプロセッサ１１は、ホスト装置３にデータを送信し（ステップＳ６１８）、必要に応じてバックグラウンド（空き時間）でミラーリング復旧（エラー発生部分のデータを他の箇所に移動させるなど）を行い（ステップＳ６１９）、処理を終了する。
【００４１】
ステップＳ６１７の後、ここでは両方の半導体メモリ２から必要なデータを読み出せなかったので、マイクロプロセッサ１１は、ホスト装置３に読み出しエラー通知を行い（ステップＳ６２０）、処理を終了する。
【００４２】
このように、本実施形態の記憶装置６によれば、データを読み出す際、２つの半導体メモリ２のうちまず一方のみから読み出し、その読み出したデータにエラーがあるかチェックを行い、その読み出したデータにエラーがあると判定したときに、他方の半導体メモリ２から対応するデータを読み出すことで、データ処理の効率のよいミラーリングを実現することができる。
【００４３】
また、論理・物理変換テーブル１４１において、ページ番号を、２つの半導体メモリ２の所定のブロックに対して共通とすることで、論理・物理変換テーブル１４１のデータサイズを減らすことができ、それにより、マイクロプロセッサ１１による論理・物理変換テーブル１４１の書き換えや参照の動作を高速化することができる。
【００４４】
さらに、読み出したデータのエラーチェックに、ＣＲＣ符号を用いることで、例えばパリティチェック方式のエラーチェックに比べると冗長度に比較して高い誤り検出能力を持つという利点や、バースト誤り（誤りが集中して発生する現象）に強いなど利点を有することができる。また、読み出したデータのエラーチェックに、リードソロモン符号を用いることで、高いエラー訂正機能を実現することができる。
【００４５】
以上、本発明の実施形態について説明したが、本発明はこれに限定されるものではなく、その趣旨を変えない範囲で実施することができる。例えば、ページ番号を２つの半導体メモリ２の所定のブロックに対して共通とする方式を採用しなくても、本発明に係るデータ処理の効率のよいミラーリングを実現することができる。その他、ハードウェア、ソフトウェアの具体的な構成について、本発明の主旨を逸脱しない範囲で適宜変更が可能である。
【図面の簡単な説明】
【００４６】
【図１】本実施形態の記憶装置のハードウェア構成を含む説明図である。
【図２】本実施形態の半導体メモリの内部構成を示した図である。
【図３】論理・物理変換テーブルの構成例を示した図である。
【図４】２つの半導体メモリに対する動作の概要の説明図である。
【図５】半導体メモリに対する書き込み処理を示したフローチャートである。
【図６Ａ】半導体メモリに対する読み出し処理を示したフローチャートである。
【図６Ｂ】半導体メモリに対する読み出し処理を示したフローチャートである。
【符号の説明】
【００４７】
１      メモリ制御部
２      半導体メモリ
２ａ    半導体メモリ（Ａ系）
２ｂ    半導体メモリ（Ｂ系）
３      ホスト装置
４      データバス
５      データバス
６      記憶装置
１１    マイクロプロセッサ
１２    メモリＩ／Ｆ制御部
１３    ホストＩ／Ｆ制御部
１４    メモリ
２１    ブロック
１４１  論理・物理変換テーブル
２１１  ページ
【図１】
2010079856.tif 000003
【図２】
2010079856.tif 000004
【図３】
2010079856.tif 000005
【図４】
2010079856.tif 000006
【図５】
2010079856.tif 000007
【図６Ａ】
2010079856.tif 000008
【図６Ｂ】
2010079856.tif 000009