以下、本発明の実施の形態について、図面を用いて詳細に説明する。なお、異なる図面において同一の符号を付した要素は、同一又は相応する要素を示すものとする。
<実施の形態1>
図1は、本発明の実施の形態1に係る半導体記憶装置1の構成を簡略化して示す図である。半導体記憶装置1は、メモリコントローラ2(制御部)と、メモリコントローラ2によって制御される制御対象メモリ3(記憶部)とを備えている。制御対象メモリ3は、不揮発性のメモリであり、例えばNAND型フラッシュメモリによって構成されている。
図2は、制御対象メモリ3のメモリ空間の一部を抜き出して示す図である。メモリ空間は、複数のブロックB1〜BNに分割されている。ブロックは、データの消去の単位である。制御対象メモリ3が有する全ブロックB1〜BNは、第1ブロック群R1と第2ブロック群R2とに分類されている。
第1ブロック群R1は、後述する第1管理情報を格納するためのブロックの集合であり、全ブロックB1〜BNの中から限定された特定の複数個のブロックが、第1ブロック群R1として割り当てられている。本実施の形態の例では、ブロックB1〜B10の合計10個のブロックが、第1ブロック群R1として割り当てられている。
第2ブロック群R2は、第1ブロック群R1以外のブロックの集合である。第2ブロック群R2には、ユーザが使用する任意のデータが格納される。また、第2ブロック群R2には、後述する第2管理情報が格納される。
本実施の形態に係る半導体記憶装置1では、第1ブロック群R1に属する10個のブロックB1〜B10の中から選択された3個のブロックに、同一内容の第1管理情報が格納される。但し、「10個」及び「3個」の値は一例であり、この値には限定されない。また、第2ブロック群R2に属する全てのブロックの中から任意に選択された3個のブロックに、同一内容の第2管理情報が格納される。但し、「3個」の値は一例であり、この値には限定されない。
管理情報は、メモリコントローラ2が制御対象メモリ3を管理するために必要な情報であり、本実施の形態の例において、管理情報は第1管理情報と第2管理情報とに分割されている。
第1管理情報には、第2管理情報を格納している3個のブロックの所在を示す位置情報が含まれる。位置情報としては、例えばブロックアドレスが用いられる。
また、第1管理情報には、誤り検出符号が含まれる。誤り検出符号は、その第1管理情報にデータの誤りが生じているか否かの判定に使用される。また、誤り検出符号は、妥当な第1管理情報を特定するための多数決(詳細は後述する)に使用される。誤り検出符号としては、チェックサム、CRC(Cyclic Redundancy Check)、又はメッセージダイジェスト等を使用することができる。本実施の形態の例では、誤り検出符号としてCRCが使用される。
また、第1管理情報には、固有のID情報(本明細書において「第1管理情報ID」と称す)が含まれる。第1管理情報IDは、第1管理情報のバージョンを示すものであり、第1管理情報が更新される度に第1管理情報IDの値も更新される。本実施の形態の例では、第1管理情報が更新される度に「1」ずつインクリメントされる整数値が、第1管理情報IDとして使用される。第1管理情報IDは、妥当な第1管理情報を特定するための多数決(詳細は後述する)に使用される。
また、第1管理情報には、第1ブロック群R1の中に不良ブロックが存在している場合に、その不良ブロックの所在を示す位置情報が含まれる。不良ブロックには、制御対象メモリ3の製造時に発生する先天性不良ブロックと、出荷後の通常使用によって発生する後天性不良ブロックとが含まれる。
第1管理情報を更新する場合には、第1ブロック群R1のうち、更新前の第1管理情報を格納しているブロックとは異なるブロックに、更新後の第1管理情報が書き込まれる。書き込み中に該当ブロックが後天性不良ブロックとなった場合には、第1ブロック群R1内の別のブロックに、更新後の第1管理情報が書き込まれる。
第2管理情報には、第2ブロック群R2の中に不良ブロックが存在している場合に、その不良ブロックの所在を示す位置情報が含まれる。また、第2管理情報には、汎用領域の場所や制御対象メモリ3へのアクセス速度等の、メモリコントローラ2が制御対象メモリ3を管理するために必要な様々な情報が含まれる。
また、第2管理情報には、固有のID情報(本明細書において「第2管理情報ID」と称す)が含まれる。第2管理情報IDは、第2管理情報のバージョンを示すものであり、第2管理情報が更新される度に第2管理情報IDの値も更新される。本実施の形態の例では、第2管理情報が更新される度に「1」ずつインクリメントされる整数値が、第2管理情報IDとして使用される。第2管理情報IDは、妥当な第2管理情報を特定するための多数決(詳細は後述する)に使用される。
第2管理情報ID値のビット数は、実用上オーバーフローしないように十分に大きなサイズが確保されており、これにより、第2管理情報ID値が最も大きな第2管理情報を最新の第2管理情報と判定することができる。また、第2管理情報を更新する際に、その更新時刻を表す絶対時間そのもの、若しくは絶対時間から算出した値を、第2管理情報ID値として用いることにより、複数の第2管理情報の中から最新の第2管理情報を容易に特定することができる。
また、第2管理情報には、自身と同一内容の第2管理情報が格納された他の2個のブロックを示す位置情報(本明細書において「グループアドレス」と称す)が含まれる。
また、第2管理情報には、誤り検出符号が含まれる。本実施の形態の例では、グループアドレスを含めた全域のCRC値と、グループアドレスを除いた部分のCRC値とが、第2管理情報内に含められる。グループアドレスを含めた全域のCRC値は、その第2管理情報にデータの誤りが生じているか否かの判定に使用される。また、グループアドレスを除いた部分のCRC値は、妥当な第2管理情報を特定するための多数決に使用される。
また、第2管理情報には、第1ブロック群R1内において妥当な第1管理情報を特定できない場合に、当該妥当な第1管理情報を第1ブロック群R1内に復元するための復元情報が含まれる。対応する第1管理情報に含まれている様々な情報のうち、第1管理情報IDと、第1ブロック群R1内における不良ブロックの位置情報とが、復元情報内に含まれる。これらの情報は、平文をコピーして復元情報内に含めても良いし、圧縮したものを復元情報内に含めても良い。
第2管理情報を更新する場合には、第2ブロック群R2のうち、更新前の第2管理情報を格納しているブロックと同一のブロックに、更新後の第2管理情報が上書きされる。書き込み中に該当ブロックが後天性不良ブロックとなった場合には、第2ブロック群R2内の別の任意のブロック(但し不良ブロックは除く)に、更新後の第2管理情報が書き込まれる。第1管理情報には第2管理情報を格納しているブロックの位置情報が含まれているため、第2管理情報を格納するブロックが変更された場合には、第1管理情報を更新する必要がある。
各管理情報内に含めている情報の性質上、第2管理情報は第1管理情報よりも更新頻度(書き換え頻度)が高いといえる。例えば、第2ブロック群R2の中のユーザデータ領域内で後天性不良ブロックが発生した場合には、第2管理情報は更新する必要があるが、第1管理情報の更新は不要である。第2ブロック群R2のブロック数は第1ブロック群R1のブロック数よりもはるかに大きいため、第2ブロック群R2内で後天性不良ブロックが発生する確率は、第1ブロック群R1内で後天性不良ブロックが発生する確率よりも十分に高い。従って、第1管理情報は更新せずに第2管理情報を更新するという状況は、逆の状況よりも多く発生する。
図3は、使用が想定されている制御対象メモリ3の種類を示す図である。本実施の形態では、ページサイズ、ブロックサイズ、総ブロック数、読み出しサイクル、及び先天性不良フラグの位置が異なる、複数種類(この例では4種類)のメモリの使用が想定されている。なお、各メモリには、メモリの種類を識別するための固有のID情報(本明細書において「メモリID」と称す)が付与されている。メモリIDには、ページサイズ及びブロックサイズの情報が含まれている。
以下、本実施の形態に係る半導体記憶装置1に関して、(1)管理情報の格納例、(2)管理情報の取得処理、(3)管理情報の更新処理を、順に説明する。
(1)管理情報の格納例
図4は、第1ブロック群R1を示す図である。この例において、ブロックB1,B5は先天性不良ブロックであり、ブロックB2,B4は無効ブロック(詳細は後述する)である。
ブロックB3,B6〜B9には第1管理情報が格納されている。第1管理情報に付した丸括弧内の数字は、第1管理情報ID値(左側)及びCRC値(右側)を示している。説明の便宜上、第1管理情報を書き込む際のCRC値は、第1管理情報ID値と同一の値をとるものとする。データの誤りが生じていない正常ブロックに関しては、CRC値と第1管理情報ID値とは一致し、一方、後天性不良ブロックになったこと等に起因してデータの誤りが生じている異常ブロックに関しては、CRC値と第1管理情報ID値とは一致しない。この例において、ブロックB6に格納されている第1管理情報(2,1)に関しては、CRC値と第1管理情報ID値とが一致していない。従って、ブロックB6は後天性不良ブロックである。
また、図4に示した例では、最新の第1管理情報は第1管理情報(4,4)である。ここで、第1管理情報(4,4)はブロックB8,B9の2個のブロックにしか格納されていないが、その理由は、ブロックB10のデータを消去した後、第1管理情報(4,4)を書き込む前に、ユーザによって電源が強制的に遮断された状況を想定しているためである。従って、ブロックB10は消去済みブロックとなっている。
また、ブロックB3内に表記している「BAD」は、第1管理情報をブロックB3に書き込む際に、ブロックB3が後天性不良ブロックとなったことを表している。但し、ブロックB3に格納されている第1管理情報(1,1)に関しては、第1管理情報ID値とCRC値とが一致している。そのため、第1管理情報ID値とCRC値との比較によっては、ブロックB3が後天性不良ブロックであるとは判定できない。
なお、第1管理情報をブロックに書き込む際にそのブロックが後天性不良ブロックとなった場合には、その第1管理情報に付した第1管理情報ID値をメモリコントローラ2が保持しておき、それ以降に第1管理情報を更新する際には、その第1管理情報ID値を使用しないようにしても良い。これにより、サイクリックカウンタを用いて第1管理情報ID値を生成する場合に、後天性不良ブロックに格納されている古い第1管理情報と、それ以降に更新された新たな第1管理情報とで、第1管理情報ID値が偶然に一致するという事態が回避される。
図5は、第2ブロック群R2を示す図である。この例では、第2管理情報はブロックB100,B150,B200,B250,B300,B350に格納されている。ブロックB100,B200,B300から成る第1ブロックセットに同一内容の第2管理情報が格納され、ブロックB150,B250,B350から成る第2ブロックセットに他の同一内容の第2管理情報が格納される使用態様を想定している。第2管理情報に付した丸括弧内の数字は、第2管理情報ID値(左側)及び全域のCRC値(右側)を示している。第2管理情報に付した山括弧内の数字は、グループアドレスを示している。例えば、ブロックB150に第2管理情報(3,3)を書き込む際に、ブロックB250,B350にも同一内容の第2管理情報(3,3)が書き込まれたことを意味している。上記と同様に、第2管理情報を書き込む際の全域のCRC値は、第2管理情報ID値と同一の値をとるものとする。
また、図5に示した例では、最新の第2管理情報は第2管理情報(4,4)であり、二番目に新しい第2管理情報は第2管理情報(3,3)である。第2管理情報(3,3)は、3個のブロックB150,B250,B350に格納されている。なお、最新の第2管理情報(4,4)はブロックB100の1個のブロックにしか格納されていないが、その理由は、ブロックB100に第2管理情報(4,4)を書き込んだ後、ブロックB200,300に第2管理情報(4,4)を書き込むべくブロックB200,300のデータを消去する前に、ユーザによって電源が強制的に遮断された状況を想定しているためである。
なお、上記と同様に、第2管理情報をブロックに書き込む際にそのブロックが後天性不良ブロックとなった場合には、その第2管理情報に付した第2管理情報ID値をメモリコントローラ2が保持しておき、それ以降に第2管理情報を更新する際には、その第2管理情報ID値を使用しないようにしても良い。これにより、サイクリックカウンタを用いて第2管理情報ID値を生成する場合に、後天性不良ブロックに格納されている古い第2管理情報と、それ以降に更新された新たな第2管理情報とで、第2管理情報ID値が偶然に一致するという事態が回避される。
図6は、ブロックB1〜B10の各ブロックに関して、ブロック内のページの割り当てを示す図である。1ブロックは複数のページに分割されている。ページは、データの書き込み及び読み出しの単位である。この例では、ページP0は先天性不良フラグが付加されるページであり、ページPNは無効フラグが付加されるページであり、ページPMは第1管理情報が書き込まれるページである。なお、第1管理情報はブロック内の複数のページに格納されていても良い。
あるブロックが先天性不良ブロックである場合には、そのブロックのページP0に先天性不良フラグが付加される。先天性不良フラグが付加されるページは、図3に示したように制御対象メモリ3の種類によって異なる。
あるブロックのデータが無効である場合には、そのブロックのページPNに無効フラグが付加される。無効フラグが付加されるページは、制御対象メモリ3の種類によらず共通である。
図7は、第2管理情報が格納されているブロックに関して、ブロック内のページの割り当てを示す図である。本実施の形態の例では、ブロックの先頭3ページ(ページP0〜P2)に、第2管理情報が格納される。
各ページP0〜P2の先頭には、同一内容の第2管理情報IDがそれぞれ格納されている。これにより、メモリコントローラ2は、第2ブロック群R2に属する全てのブロックの中から、第2管理情報が格納されているブロックを探索することができる。
ページP0には、第2管理情報に含まれる様々な情報のうち、復元情報が格納されている。
ページP2には、第2管理情報に含まれる様々な情報のうち、グループアドレスを除いた部分のCRC値と、2個のグループアドレスと、グループアドレスを含めた全域のCRC値とが格納されている。
ページP1には、第2管理情報に含まれる様々な情報のうち、ページP0,P2には格納されていないその他の管理情報が格納されている。
(2)管理情報の取得処理
図8〜13は、半導体記憶装置1の起動時にメモリコントローラ2が実行する管理情報の取得処理を順に示す図である。第1ブロック群R1は、図4に示した状態になっているものとする。
まず、メモリコントローラ2は、メモリIDを要求するリードコマンドを制御対象メモリ3に発行することにより、制御対象メモリ3からメモリIDを取得する。メモリIDにはページサイズ及びブロックサイズの情報が含まれているため、メモリIDを取得することにより、制御対象メモリ3内の任意のページへのアクセスが可能となる。
<先天性不良ブロックの探索ステップ>
次に図8を参照して、メモリコントローラ2は、第1ブロック群R1に属する全てのブロックB1〜B10を対象として、先天性不良ブロックを探索する。具体的には、ブロックB1〜B10の各ブロックに関して、先天性不良フラグの格納ページ(図6に示したページP0)にアクセスすることにより、各ブロックが先天性不良ブロックであるか否かを判定する。
この時点では制御対象メモリ3の種類が判明していないため、先天性不良フラグの格納ページを一意には特定できない。従って、メモリコントローラ2は、使用が想定されている全種類のメモリに関する先天性不良フラグの格納ページに順にアクセスする。図3に示した例では、メモリコントローラ2は、第0ページの第0バイト、第0ページの第2048バイト、第128ページの第0バイト、及び第256ページの第8192バイトに順にアクセスすることにより、いずれかの格納ページに先天性不良フラグが付加されているか否かを判定する。また、その際の制御対象メモリ3へのアクセス速度は、使用が想定されている全種類のメモリを正常に動作させることが可能な最も遅い速度とする。図3に示した例では、4種類のメモリのうち最も遅い50nsの読み出しサイクルでアクセスを行う。
なお、メモリIDとメモリ種類とを関連付けるテーブル情報を予め作成してメモリコントローラ2内に保持しておき、メモリコントローラ2が制御対象メモリ3からメモリIDを取得した後に当該テーブル情報を参照することにより、メモリ種類を特定するように構成してもよい。この場合には、特定したメモリ種類に対応したアクセス速度で、特定したメモリ種類に対応した格納ページにアクセスすることにより、先天性不良フラグが付加されているか否かを判定することができる。
探索の結果、ブロックB1〜B10内に先天性不良ブロックが存在している場合には、メモリコントローラ2は、そのブロックを取得対象ブロックの候補から除外する。図8に示した例では、先天性不良ブロックであるブロックB1,B5が候補から除外される。このステップで除外されずに残ったブロックB2〜B4,B6〜B10を、本明細書において「良ブロック」と称す。
<無効ブロックの探索ステップ>
次に図9を参照して、メモリコントローラ2は、良ブロックB2〜B4,B6〜B10を対象として、無効ブロックを探索する。具体的には、各良ブロックに関して、無効フラグの格納ページ(図6に示したページPN)にアクセスすることにより、各良ブロックが無効ブロックであるか否かを判定する。
上記と同様に、制御対象メモリ3へのアクセス速度は、使用が想定されている全種類のメモリを正常に動作させることが可能な最も遅い速度とする。但し、メモリIDに基づいてメモリ種類を特定できる場合には、特定したメモリ種類に対応した適切なアクセス速度でアクセスすればよい。
探索の結果、良ブロック内に無効ブロックが存在している場合には、メモリコントローラ2は、そのブロックを取得対象ブロックの候補から除外する。図9に示した例では、無効ブロックであるブロックB2,B4が候補から除外される。このステップで除外されずに残ったブロックB3,B6〜B10を、本明細書において「有効ブロック」と称す。
<異常ブロックの探索ステップ>
次に図10を参照して、メモリコントローラ2は、有効ブロックB3,B6〜B10を対象として、データの誤りが生じているブロックを探索する。具体的には、各有効ブロックに関して、第1管理情報の格納ページ(図6に示したページPM)にアクセスして第1管理情報を読み出し、読み出した第1管理情報に対してCRC演算を行う。そして、演算により求めたCRC値と、読み出した第1管理情報内に含まれているCRC値とを比較する。メモリコントローラ2は、両CRC値が一致する場合には、そのブロックはデータの誤りが生じていないブロック(本明細書において「正常ブロック」と称す)であると判定し、一方、両CRC値が一致しない場合には、そのブロックはデータの誤りが生じているブロック(本明細書において「異常ブロック」と称す)であると判定する。
・書き込み又は消去時に後天性不良ブロックとなった
・書き込み又は消去時に電源が強制遮断されたことにより正常に終了されなかった
・消去状態でデータが何も書き込まれていない
等の理由で両CRC値が一致しない場合には、そのブロックは異常ブロックと判定されることとなる。
上記と同様に、制御対象メモリ3へのアクセス速度は、使用が想定されている全種類のメモリを正常に動作させることが可能な最も遅い速度とする。但し、メモリIDに基づいてメモリ種類を特定できる場合には、特定したメモリ種類に対応した適切なアクセス速度でアクセスすればよい。
探索の結果、有効ブロック内に異常ブロックが存在している場合には、メモリコントローラ2は、そのブロックを取得対象ブロックの候補から除外する。図10に示した例では、異常ブロックであるブロックB6,B10が候補から除外される。
<妥当な第1管理情報の特定ステップ>
次に、メモリコントローラ2は、残った正常ブロックの中から4個の正常ブロックを任意に選択する。例えば、ブロックアドレスの小さい順に4個の正常ブロックを選択する。この例では残った正常ブロックがブロックB3,B7〜B9の4個であるため、全ての正常ブロックが選択される。なお、この時点で残った正常ブロックが2個以下である場合は、後述する多数決を行えないため、その制御対象メモリ3は故障であると判定する。また、この時点で残った正常ブロックが3個である場合は、後述する多数決を1回だけ行う。
次に図11を参照して、メモリコントローラ2は、選択した4個の正常ブロックB3,B7〜B9の中から、3個の正常ブロックを任意に選択する。この例では、ブロックアドレスの小さい順に3個の正常ブロックB3,B7,B8を選択する。そして、各正常ブロックB3,B7,B8に格納されている第1管理情報に含まれている第1管理情報ID値及びCRC値を相互に比較することにより、1回目の多数決を行う。メモリコントローラ2は、3個の第1管理情報のうちの2個以上で第1管理情報ID値及びCRC値が一致した場合には、その第1管理情報は妥当であると判定する。この例では、3個の第1管理情報の第1管理情報ID値及びCRC値はそれぞれ(1,1)(3,3)(4,4)であり、相互に一致しないため、妥当な第1管理情報はないと判定される。
次に図12を参照して、メモリコントローラ2は、選択した4個の正常ブロックB3,B7〜B9の中から、他の3個の正常ブロックを任意に選択する。この例では、ブロックアドレスの大きい順に3個の正常ブロックB7〜B9を選択する。そして、各正常ブロックB7〜B9に格納されている第1管理情報に含まれている第1管理情報ID値及びCRC値を相互に比較することにより、2回目の多数決を行う。この例では、3個の第1管理情報の第1管理情報ID値及びCRC値はそれぞれ(3,3)(4,4)(4,4)であり、(4,4)が2個以上で一致する。従って、ブロックB8,B9に格納されている第1管理情報が、妥当な第1管理情報であると判定される。
なお、1回目の多数決によって妥当な第1管理情報を特定できた場合には、2回目の多数決は省略される。また、2回目の多数決によっても妥当な第1管理情報を特定できない場合には、メモリコントローラ2は、その制御対象メモリ3を暫定的に故障であると判定する。暫定的に故障と判定された制御対象メモリ3に関しては、妥当な第1管理情報の復元処理(詳細は後述する)が実行される。復元処理を実行しても妥当な第1管理情報を復元できない場合には、その制御対象メモリ3は確定的に故障と判定される。また、正常ブロックが5個以上残っている場合には、4個の正常ブロックの選択をやり直して、再び多数決を行っても良い。
<第2管理情報の取得ステップ>
次に図13を参照して、メモリコントローラ2は、特定した2個以上の妥当な第1管理情報の中から、任意の1個の第1管理情報を確定する。例えば、ブロックB8,B9の中でブロックアドレスの最も小さいブロックB8を選択し、ブロックB8に格納されている第1管理情報(4,4)を、妥当な第1管理情報として確定する。
次に、メモリコントローラ2は、確定した妥当な第1管理情報に含まれている位置情報(第2管理情報を格納しているブロックの所在を示す位置情報)に基づいて、第2ブロック群R2の中から第2管理情報を読み出すことにより、第2管理情報を取得する。
(3)管理情報の更新処理
第2管理情報の格納ブロックが後天性不良ブロックとなった場合等には、第2管理情報の格納ブロックを、第2ブロック群R2内の他のブロックに変更する必要がある。ここで、第1管理情報には第2管理情報の格納ブロックの位置情報が含まれているため、第2管理情報の格納ブロックを変更する場合には、第1管理情報の内容も更新する必要がある。また、第1管理情報には第1ブロック群R1の不良ブロックの位置情報が含まれているため、第1ブロック群R1内で後天性不良ブロックが発生した場合等には、第1管理情報の内容を更新する必要がある。以下、第1管理情報を更新する手順について説明する。
図14〜18は、メモリコントローラ2が実行する第1管理情報の更新処理を順に示す図である。
図14を参照して、現在有効な第1管理情報(つまり更新前の第1管理情報)は、ブロックB8,B9に格納されている第1管理情報(4,4)である。また、起動時に妥当な第1管理情報を特定するための多数決の候補となった第1管理情報は、ブロックB7〜B9に格納されている第1管理情報である。以下、ブロックB7〜B9を「多数決対象ブロック」と称す。
次に図15を参照して、メモリコントローラ2は、第1ブロック群R1の中から、更新後の第1管理情報を格納すべき空きブロックを確保する。具体的には、ブロックB1〜B10の中から、先天性不良ブロック、後天性不良ブロック、及び多数決対象ブロックを除外して、3個の空きブロックを確保する。第1管理情報には第1ブロック群R1内の不良ブロックの位置情報が含まれているため、現在有効な第1管理情報(4,4)を参照することにより、第1ブロック群R1内の先天性不良ブロック及び後天性不良ブロックを特定することができる。この例では、無効ブロックであるブロックB2,B4と、消去済みブロックであるブロックB10とが、空きブロックとして確保される。なお、確保できる空きブロックが2個以下である場合は、その制御対象メモリ3は故障であると判定される。
次に図16を参照して、メモリコントローラ2は、3個の空きブロックの中の任意の1個の空きブロックのデータを消去した後、更新後の第1管理情報(5,5)をそのブロックに書き込む。この例では、ブロックB10のデータが消去された後に、第1管理情報(5,5)がブロックB10に書き込まれる。なお、空きブロックのデータを消去する際、又は第1管理情報(5,5)を書き込む際に、該当ブロックが後天性不良ブロックとなった場合には、メモリコントローラ2は、第1管理情報及び第2管理情報に含まれている不良ブロックの位置情報を更新するとともに、空きブロックの確保処理からやり直す。
次に図17を参照して、メモリコントローラ2は、3個の多数決対象ブロックの中の任意の1個のブロックに対して、無効フラグを付加する。この例では、ブロックB7に無効フラグが付加される。なお、無効フラグを付加する際に該当ブロックが後天性不良ブロックとなった場合には、メモリコントローラ2は、第1管理情報及び第2管理情報に含まれている不良ブロックの位置情報を更新するとともに、空きブロックの確保処理からやり直す。
次に図18を参照して、メモリコントローラ2は、3個の空きブロックの中の次の空きブロックB2のデータを消去した後、第1管理情報(5,5)をそのブロックB2に書き込む。その後、3個の多数決対象ブロックの中の次のブロックB8に対して、無効フラグを付加する。次に、メモリコントローラ2は、3個の空きブロックの中の最後の空きブロックB4のデータを消去した後、第1管理情報(5,5)をそのブロックB4に書き込む。その後、3個の多数決対象ブロックの中の最後のブロックB9に対して、無効フラグを付加する。これにより、3個の空きブロックB2,B4,B10に同一内容の第1管理情報(5,5)が格納される。
なお、多数決対象ブロックB7〜B9に無効フラグを付加する代わりに、データの消去を行っても良い。この場合、1個の空きブロックへの第1管理情報の書き込みと、1個の多数決対象ブロックに対するデータの消去とが、交互に3回繰り返されることとなる。
<実施の形態1の具体例1>
図19は、第1ブロック群R1の他の例を示す図である。この例において、ブロックB5,B9は先天性不良ブロックであり、ブロックB1,B2,B10は無効ブロックである。また、ブロックB4,B8は後天性不良ブロックである。但し、ブロックB4,B8に関しては管理情報ID値とCRC値とが一致している。また、ブロックB3,B6,B7には、第1管理情報(6,6)が格納されている。
図19に示した第1ブロック群R1を対象とした管理情報の取得処理について、簡単に説明する。まず、先天性不良ブロックであるブロックB5,B9が除外される。次に、無効ブロックであるブロックB1,B2,B10が除外される。次に、異常ブロックの探索が行われるが、この例では異常ブロックが存在しないため、異常ブロックとしてはどのブロックも除外されない。次に、4個の正常ブロックとしてブロックB3,B4,B6,B7が選択される。
次に、先頭3個の正常ブロックB3,B4,B6を対象とする1回目の多数決が行われ、その結果、ブロックB3,B6に格納されている第1管理情報(6,6)が妥当な第1管理情報として特定される。
次に、ブロックB3,B6のいずれかに格納されている第1管理情報(6,6)に基づいて、第2ブロック群R2の中から第2管理情報が読み出される。
<実施の形態1の具体例2>
図20は、第1ブロック群R1の他の例を示す図である。この例において、ブロックB5,B9は先天性不良ブロックであり、ブロックB1,B2,B10は無効ブロックである。また、ブロックB4,B6は後天性不良ブロックである。但し、ブロックB4,B6に関しては管理情報ID値とCRC値とが一致している。また、ブロックB3,B7,B8には、第1管理情報(7,7)が格納されている。
図20に示した第1ブロック群R1を対象とした管理情報の取得処理について、簡単に説明する。まず、先天性不良ブロックであるブロックB5,B9が除外される。次に、無効ブロックであるブロックB1,B2,B10が除外される。次に、異常ブロックの探索が行われるが、この例では異常ブロックが存在しないため、異常ブロックとしてはどのブロックも除外されない。次に、4個の正常ブロックとしてブロックB3,B4,B6,B7が選択される。
次に、先頭3個の正常ブロックB3,B4,B6を対象とする1回目の多数決が行われるが、多数決が成立しないため、妥当な第1管理情報はないと判定される。
次に、末尾3個の正常ブロックB4,B6,B7を対象とする2回目の多数決が行われるが、多数決が成立しないため、妥当な第1管理情報はないと判定される。その結果、その制御対象メモリ3は暫定的に故障であると判定される。
<妥当な第1管理情報の復元処理>
以下、暫定的に故障と判定された制御対象メモリ3に関して実行される、妥当な第1管理情報の復元処理について説明する。
図5を参照して、メモリコントローラ2は、ページP0〜P2に関して第2管理情報IDを用いた探索を行うことにより、第2ブロック群R2の中から、第2管理情報を格納している全てのブロックを特定する。この例では、ブロックB100,B150,B200,B250,B300,B350が特定される。
上記と同様に、制御対象メモリ3へのアクセス速度は、使用が想定されている全種類のメモリを正常に動作させることが可能な最も遅い速度とする。但し、メモリIDに基づいてメモリ種類を特定できる場合には、特定したメモリ種類に対応した適切なアクセス速度でアクセスすればよい。また、復元処理をメモリコントローラ2ではなく外部のホストコンピュータ等を用いて行う場合には、メモリの種類が明らかであるため、そのメモリ種類に対応した適切なアクセス速度でアクセスすればよい。
次に、メモリコントローラ2は、特定したブロックB100,B150,B200,B250,B300,B350を対象として、データの誤りが生じているブロックを探索する。具体的には、各ブロックに関して、第2管理情報の全域を読み出し、読み出した第2管理情報の全域に対してCRC演算を行う。そして、演算により求めたCRC値と、読み出した第2管理情報内に含まれている全域のCRC値とを比較する。メモリコントローラ2は、両CRC値が一致する場合には、そのブロックは正常ブロックであると判定し、一方、両CRC値が一致しない場合には、そのブロックは異常ブロックであると判定する。
上記と同様に、制御対象メモリ3へのアクセス速度は、使用が想定されている全種類のメモリを正常に動作させることが可能な最も遅い速度とする。但し、メモリIDに基づいてメモリ種類を特定できる場合や、ホストコンピュータ等を用いて復元処理を行う場合には、メモリ種類に対応した適切なアクセス速度でアクセスすればよい。
探索の結果、異常ブロックが存在している場合には、メモリコントローラ2は、そのブロックを取得対象ブロックの候補から除外する。図5に示した例では、異常ブロックであるブロックB200が候補から除外される。
次に、メモリコントローラ2は、残った正常ブロックB100,B150,B250,B300,B350の中から、最新の第2管理情報が格納されている1個の正常ブロックを選択する。具体的には、各正常ブロックB100,B150,B250,B300,B350に格納されている第2管理情報に含まれている第2管理情報ID値を比較することにより、第2管理情報ID値が最も大きな第2管理情報を、最新の第2管理情報として特定する。図5に示した例では、第2管理情報(4,4)が最新の第2管理情報であるため、第2管理情報(4,4)を格納しているブロックB100が選択されることとなる。なお、最新の第2管理情報が格納されている正常ブロックが複数存在する場合には、その中の任意の正常ブロック(例えばブロックアドレスが最も小さい正常ブロック)が選択される。また、第2管理情報の更新時刻等を第2管理情報ID値として用いている場合には、更新時刻等が最も新しい第2管理情報(つまり第2管理情報ID値が最も大きい第2管理情報)を、最新の第2管理情報として特定することができる。
次に、メモリコントローラ2は、正常ブロックB100に格納されている第2管理情報に含まれているグループアドレス<200,300>を参照することにより、ブロックB100,B200,B300を対象とする多数決を行う。具体的には、各ブロックB100,B200,B300に格納されている第2管理情報に含まれている第2管理情報ID値及びCRC値(グループアドレスを除いた部分のCRC値)を相互に比較することにより、1回目の多数決を行う。この例では、ブロックB200は正常ブロックではないために多数決の候補から除外され、また、ブロックB100,B300に格納されている2個の第2管理情報の第2管理情報ID値及びCRC値はそれぞれ(4,4)(1,1)で一致しないため、1回目の多数決は成立しない。
次に、メモリコントローラ2は、正常ブロックB100を除く正常ブロックB150,B250,B300,B350の中から、二番目に新しい第2管理情報が格納されている1個の正常ブロックを選択する。具体的には、各正常ブロックB150,B250,B300,B350に格納されている第2管理情報に含まれている第2管理情報ID値を比較することにより、第2管理情報ID値が最も大きな第2管理情報を、二番目に新しい第2管理情報として特定する。図5に示した例では、第2管理情報(3,3)が二番目に新しい第2管理情報であるため、ブロックB150,B250,B350の中の任意の1個の正常ブロック(この例ではブロックアドレスが最も小さい正常ブロックB150)が選択される。
次にメモリコントローラ2は、正常ブロックB150に格納されている第2管理情報に含まれているグループアドレス<250,350>を参照することにより、ブロックB150,B250,B350を対象とする多数決を行う。具体的には、各ブロックB150,B250,B350に格納されている第2管理情報に含まれている第2管理情報ID値及びCRC値(グループアドレスを除いた部分のCRC値)を相互に比較することにより、2回目の多数決を行う。この例では、ブロックB150,B250,B350に格納されている3個の第2管理情報の第2管理情報ID値及びCRC値はいずれも(3,3)であり、2個以上で一致する。従って、ブロックB150,B250,B350に格納されている第2管理情報が、妥当な第2管理情報であると判定される。
なお、全ての正常ブロックB100,B150,B250,B300,B350を選択しても妥当な第2管理情報を特定できない場合には、その制御対象メモリ3は故障と判定される。
次に、メモリコントローラ2は、特定した2個以上の妥当な第2管理情報の中から、任意の1個の第2管理情報を確定する。例えば、ブロックB150,B250,B350の中でブロックアドレスの最も小さいブロックB150を選択し、ブロックB150に格納されている第2管理情報(3,3)を、妥当な第2管理情報として確定する。
次に、メモリコントローラ2は、確定した妥当な第2管理情報に含まれている復元情報に基づいて、妥当な第1管理情報を第1ブロック群R1内に復元する。
図21は、図20に示した例を前提として、第1管理情報の復元処理を示す図である。この例では、妥当な第1管理情報として、最新の第1管理情報(7,7)が復元される。具体的に、メモリコントローラ2は、第1ブロック群R1のうち先頭から3個の正常ブロック又は無効ブロック(この例ではブロックB1〜B3)のデータを消去し、その後、これらのブロックB1〜B3に第1管理情報(7,7)を書き込む。
なお、この例ではブロックB3には既に第1管理情報(7,7)が格納されているため、ブロックB3に対する処理は省略しても良い。また、先頭から3個の正常ブロックに限らず、全ての正常ブロックに対して第1管理情報(7,7)を書き込んでも良い。あるいは、先頭から3個の正常ブロックに対しては第1管理情報(7,7)を書き込み、残りの正常ブロックに対してはデータの消去のみを行っても良い。
図21に示した第1ブロック群R1を対象とした管理情報の取得処理について、簡単に説明する。まず、先天性不良ブロックであるブロックB5,B9が除外される。次に、無効ブロックであるブロックB10が除外される。次に、異常ブロックの探索が行われるが、この例では異常ブロックが存在しないため、異常ブロックとしてはどのブロックも除外されない。次に、4個の正常ブロックとしてブロックB1〜B4が選択される。
次に、先頭3個の正常ブロックB1〜B3を対象とする多数決が行われ、その結果、ブロックB1〜B3に格納されている第1管理情報(7,7)が妥当な第1管理情報として特定される。
次に、ブロックB1〜B3のいずれかに格納されている第1管理情報(7,7)に基づいて、第2ブロック群R2の中から第2管理情報が読み出される。
なお、以上の説明では、第2管理情報にグループアドレスを含めることにより、多数決を行う3個の第2管理情報をグループアドレスに基づいて特定した。この例に限らず、ブロックアドレスの小さい順、大きい順、又はランダムに3個の正常ブロックを選択することによって、多数決を行う3個の第2管理情報を特定しても良い。
<第2管理情報の更新例>
図22,23は、第2管理情報の更新例を示す図である。更新前の第2ブロック群R2の構成は、図5に示した状態であったものとする。図5に示した例では、最新の第2管理情報は、ブロックB100に格納されている第2管理情報(4,4)である。
第2ブロック群R2内で新たな後天性不良ブロックが発生した等の理由により、第2管理情報を更新する必要が生じた場合には、メモリコントローラ2は、ブロックB100,B200,B300から成る第1ブロックセット、又は、ブロックB150,B250,B350から成る第2ブロックセットに、更新後の第2管理情報(5,5)を上書きする。図22に示した例では、第1ブロックセットに更新後の第2管理情報(5,5)が上書きされている。但し、ブロックB200が後天性不良ブロックであることが判明しているため、ブロックB200に代えて、第2ブロック群R2内の別の任意のブロック(この例ではブロックB210)に、第2管理情報(5,5)が書き込まれている。
また、例えばブロックB300へ第2管理情報(5,5)を書き込んでいる最中にブロックB300が後天性不良ブロックとなった場合には、メモリコントローラ2は、図23に示すように、第2ブロック群R2内の別の任意のブロック(この例ではブロックB310)を選択し、ブロックB100,B210,B310に、更新後の第2管理情報(6,6)を書き込む。この更新には、グループアドレス及び不良ブロックアドレスの更新が含まれる。また、この場合には第2管理情報の格納ブロックが変更されるため、第1管理情報の更新も必要となる。
<実施の形態2>
以下、本発明の実施の形態2に係る半導体記憶装置1について、上記実施の形態1との相違点を中心に説明する。
上記実施の形態1と同様に、第1管理情報には、第2管理情報の格納ブロックを示す位置情報が含まれる。また、第1管理情報には、第1管理情報IDが含まれる。また、第1管理情報には、第1ブロック群R1内の不良ブロックを示す位置情報が含まれる。
また、本実施の形態では、上記に加えて、第1管理情報には、自身と同一内容の第1管理情報が格納された他の2個のブロックを示す位置情報(グループアドレス)が含まれる。
さらに、第1管理情報には、誤り検出符号が含まれる。本実施の形態の例では、グループアドレスを含めた全域のCRC値と、グループアドレスを除いた部分のCRC値とが、第1管理情報内に含められる。グループアドレスを含めた全域のCRC値は、その第1管理情報にデータの誤りが生じているか否かの判定に使用される。また、グループアドレスを除いた部分のCRC値は、妥当な第1管理情報を特定するための多数決に使用される。
以下、本実施の形態に係る半導体記憶装置1に関して、(1)管理情報の格納例、(2)管理情報の取得処理、(3)管理情報の更新処理を、順に説明する。
(1)管理情報の格納例
図24は、第1ブロック群R1を示す図である。この例において、ブロックB1,B5は先天性不良ブロックであり、ブロックB2,B4は無効ブロックであり、ブロックB10は消去済みブロックである。
ブロックB3,B6〜B9には第1管理情報が格納されている。第1管理情報に付した丸括弧内の数字は、第1管理情報ID値及び全域のCRC値を示している。第1管理情報に付した山括弧内の数字は、グループアドレスを示している。例えば、ブロックB7に第1管理情報(3,3)を書き込む際に、ブロックB2,B4にも同一内容の第1管理情報(3,3)が書き込まれたことを意味している。
(2)管理情報の取得処理
図25〜30は、半導体記憶装置1の起動時にメモリコントローラ2が実行する管理情報の取得処理を順に示す図である。第1ブロック群R1は、図24に示した状態になっているものとする。
まず、メモリコントローラ2は、メモリIDを要求するリードコマンドを制御対象メモリ3に発行することにより、制御対象メモリ3からメモリIDを取得する。
<先天性不良ブロックの探索ステップ>
次に図25を参照して、メモリコントローラ2は、第1ブロック群R1に属する全てのブロックB1〜B10を対象として、先天性不良ブロックを探索する。
探索の結果、ブロックB1〜B10内に先天性不良ブロックが存在している場合には、メモリコントローラ2は、そのブロックを取得対象ブロックの候補から除外する。図25に示した例では、先天性不良ブロックであるブロックB1,B5が候補から除外される。
<無効ブロックの探索ステップ>
次に図26を参照して、メモリコントローラ2は、良ブロックB2〜B4,B6〜B10を対象として、無効ブロックを探索する。
探索の結果、良ブロック内に無効ブロックが存在している場合には、メモリコントローラ2は、そのブロックを取得対象ブロックの候補から除外する。図26に示した例では、無効ブロックであるブロックB2,B4が候補から除外される。
<異常ブロックの探索ステップ>
次に図27を参照して、メモリコントローラ2は、有効ブロックB3,B6〜B10を対象として、データの誤りが生じているブロックを探索する。具体的には、各有効ブロックに関して、第1管理情報の格納ページにアクセスして第1管理情報を読み出し、グループアドレスを含めた第1管理情報の全域に対してCRC演算を行う。そして、演算により求めた全域のCRC値と、読み出した第1管理情報内に含まれている全域のCRC値とを比較する。メモリコントローラ2は、両CRC値が一致する場合には、そのブロックは正常ブロックであると判定し、一方、両CRC値が一致しない場合には、そのブロックは異常ブロックであると判定する。
探索の結果、有効ブロック内に異常ブロックが存在している場合には、メモリコントローラ2は、そのブロックを取得対象ブロックの候補から除外する。図27に示した例では、異常ブロックであるブロックB6,B10が候補から除外される。
<妥当な第1管理情報の特定ステップ>
次に図28を参照して、メモリコントローラ2は、残った正常ブロックB3,B7〜B9の中から1個の正常ブロックを任意に選択する。例えば、ブロックアドレスが最も小さい正常ブロックB3を選択する。そして、正常ブロックB3に格納されている第1管理情報に含まれているグループアドレス<4,6>を参照することにより、ブロックB3,B4,B6を対象とする多数決を行う。具体的には、各ブロックB3,B4,B6に格納されている第1管理情報に含まれている第1管理情報ID値及びCRC値(グループアドレスを除いた部分のCRC値)を相互に比較することにより、1回目の多数決を行う。この例では、ブロックB4,B6は正常ブロックではなく、多数決の候補から除外されるため、1回目の多数決は成立しない。
次に図29を参照して、メモリコントローラ2は、正常ブロックB3,B7〜B9の中から次の正常ブロックを任意に選択する。例えば、ブロックアドレスが次に小さい正常ブロックB7を選択する。そして、正常ブロックB7に格納されている第1管理情報に含まれているグループアドレス<2,4>を参照することにより、ブロックB2,B4,B7を対象とする多数決を行う。具体的には、各ブロックB2,B4,B7に格納されている第1管理情報に含まれている第1管理情報ID値及びCRC値(グループアドレスを除いた部分のCRC値)を相互に比較することにより、2回目の多数決を行う。この例では、ブロックB2,B4は正常ブロックではなく、多数決の候補から除外されるため、2回目の多数決は成立しない。
次に図30を参照して、メモリコントローラ2は、正常ブロックB3,B7〜B9の中から次の正常ブロックを任意に選択する。例えば、ブロックアドレスが次に小さい正常ブロックB8を選択する。そして、正常ブロックB8に格納されている第1管理情報に含まれているグループアドレス<9,10>を参照することにより、ブロックB8〜B10を対象とする多数決を行う。具体的には、各ブロックB8〜B10に格納されている第1管理情報に含まれている第1管理情報ID値及びCRC値(グループアドレスを除いた部分のCRC値)を相互に比較することにより、3回目の多数決を行う。この例では、ブロックB10は正常ブロックではないため多数決の候補から除外されるが、ブロックB8,B9に格納されている2個の第1管理情報の第1管理情報ID値及びCRC値はいずれも(4,4)であり、2個以上で一致する。従って、ブロックB8,B9に格納されている第1管理情報が、妥当な第1管理情報であると判定される。
なお、全ての正常ブロックB3,B7〜B9を選択しても妥当な第1管理情報を特定できない場合には、メモリコントローラ2は、上記実施の形態1と同様に、その制御対象メモリ3を暫定的に故障であると判定する。暫定的に故障と判定された制御対象メモリ3に関しては、妥当な第1管理情報の復元処理が実行される。復元処理は、外部のホストコンピュータ等を用いて実行しても良い。復元処理を実行しても妥当な第1管理情報を復元できない場合には、その制御対象メモリ3は確定的に故障と判定される。
<第2管理情報の取得ステップ>
次に、メモリコントローラ2は、特定した2個以上の妥当な第1管理情報の中から、任意の1個の第1管理情報を確定する。例えば、ブロックB8,B9の中でブロックアドレスの最も小さいブロックB8を選択し、ブロックB8に格納されている第1管理情報(4,4)を、妥当な第1管理情報として確定する。
次に、メモリコントローラ2は、確定した妥当な第1管理情報に含まれている位置情報に基づいて、第2ブロック群R2の中から第2管理情報を読み出すことにより、第2管理情報を取得する。
(3)管理情報の更新処理
図31〜35は、メモリコントローラ2が実行する第1管理情報の更新処理を順に示す図である。
図31を参照して、現在有効な第1管理情報は、ブロックB8,B9に格納されている第1管理情報(4,4)である。また、起動時に妥当な第1管理情報を特定するための多数決の候補となった第1管理情報は、多数決対象ブロックB8〜B10に格納されている第1管理情報である。
次に図32を参照して、メモリコントローラ2は、第1ブロック群R1の中から空きブロックを確保する。具体的には、ブロックB1〜B10の中から、先天性不良ブロック、後天性不良ブロック、及び多数決対象ブロックを除外して、3個の空きブロックを確保する。この例では、ブロックB2,B4,B7が、空きブロックとして確保される。
次に図33を参照して、メモリコントローラ2は、3個の空きブロックの中の任意の1個の空きブロックのデータを消去した後、グループアドレスを含む更新後の第1管理情報をそのブロックに書き込む。この例では、ブロックB2のデータが消去された後に、ブロックB4,B7を示すグループアドレス<4,7>を含む第1管理情報(5,5)<4,7>が、ブロックB2に書き込まれる。
次に図34を参照して、メモリコントローラ2は、3個の多数決対象ブロックの中の任意の1個のブロックに対して、無効フラグを付加する。この例では、ブロックB8に無効フラグが付加される。
次に図35を参照して、メモリコントローラ2は、3個の空きブロックの中の次の空きブロックB4のデータを消去した後、グループアドレス<2,7>を含む第1管理情報(5,5)<2,7>を、そのブロックB4に書き込む。その後、3個の多数決対象ブロックの中の次のブロックB9に対して、無効フラグを付加する。次に、メモリコントローラ2は、3個の空きブロックの中の最後の空きブロックB7のデータを消去した後、グループアドレス<2,4>を含む第1管理情報(5,5)<2,4>を、そのブロックB7に書き込む。その後、3個の多数決対象ブロックの中の最後のブロックB10に対して、無効フラグを付加する。これにより、3個の空きブロックB2,B4,B7に同一内容の第1管理情報(5,5)が格納される。
<実施の形態2の具体例1>
図36は、第1ブロック群R1の他の例を示す図である。この例において、ブロックB5,B9は先天性不良ブロックであり、ブロックB1,B2,B10は無効ブロックである。また、ブロックB4,B8は後天性不良ブロックである。但し、ブロックB4,B8に関しては第1管理情報ID値とCRC値とが一致している。また、ブロックB3には第1管理情報(6,6)<6,7>が格納されており、ブロックB6には第1管理情報(6,6)<3,7>が格納されており、ブロックB7には第1管理情報(6,6)<3,6>が格納されている。
図36に示した第1ブロック群R1を対象とした管理情報の取得処理について、簡単に説明する。まず、先天性不良ブロックであるブロックB5,B9が除外される。次に、無効ブロックであるブロックB1,B2,B10が除外される。次に、異常ブロックの探索が行われるが、この例では異常ブロックが存在しないため、異常ブロックとしてはどのブロックも除外されない。
次に、先頭の正常ブロックB3が選択され、その正常ブロックB3と、グループアドレス<6,7>で示された正常ブロックB6,B7とを対象とする多数決が行われる。その結果、ブロックB3,B6,B7に格納されている第1管理情報(6,6)が妥当な第1管理情報として特定される。
次に、ブロックB3,B6,B7のいずれかに格納されている第1管理情報(6,6)に基づいて、第2ブロック群R2の中から第2管理情報が読み出される。
<実施の形態2の具体例2>
図37は、第1ブロック群R1の他の例を示す図である。この例において、ブロックB5,B9は先天性不良ブロックであり、ブロックB1,B2,B10は無効ブロックである。また、ブロックB4,B6は後天性不良ブロックである。但し、ブロックB4,B6に関しては第1管理情報ID値とCRC値とが一致している。また、ブロックB3には第1管理情報(7,7)<7,8>が格納されており、ブロックB7には第1管理情報(7,7)<3,8>が格納されており、ブロックB8には第1管理情報(7,7)<3,7>が格納されている。
図37に示した第1ブロック群R1を対象とした管理情報の取得処理について、簡単に説明する。まず、先天性不良ブロックであるブロックB5,B9が除外される。次に、無効ブロックであるブロックB1,B2,B10が除外される。次に、異常ブロックの探索が行われるが、この例では異常ブロックが存在しないため、異常ブロックとしてはどのブロックも除外されない。
次に、先頭の正常ブロックB3が選択され、その正常ブロックB3と、グループアドレス<7,8>で示された正常ブロックB7,B8とを対象とする多数決が行われる。その結果、ブロックB3,B7,B8に格納されている第1管理情報(7,7)が妥当な第1管理情報として特定される。
次に、ブロックB3,B7,B8のいずれかに格納されている第1管理情報(7,7)に基づいて、第2ブロック群R2の中から第2管理情報が読み出される。
同様のケースである上記実施の形態1の具体例2(図20)では、妥当な第1管理情報を特定できなかった。これに対して図37の例では、グループアドレスに基づく多数決を行うことによって、妥当な第1管理情報の特定に成功している。
<変形例1>
図38は、変形例1に係る半導体記憶装置1の構成を簡略化して示す図である。半導体記憶装置1は、メモリコントローラ2と、メモリコントローラ2によって制御される複数個の制御対象メモリ(図38の例では4個の制御対象メモリ3A〜3D)とを備えている。
このようなシステム構成においては、データサイズが大きい第2管理情報を複数に分割し、各分割片を複数の制御対象メモリに分散して格納しても良い。図38に示した例では、各第2管理情報は、3個の第2管理情報片121〜123に分割されている。第1管理情報11は制御対象メモリ3Aに格納され、第2管理情報片121は制御対象メモリ3Bに格納され、第2管理情報片122は制御対象メモリ3Cに格納され、第2管理情報片123は制御対象メモリ3Dに格納される。第1管理情報11には、個々の第2管理情報毎に、各第2管理情報片121〜123の所在を示す位置情報が含まれている。また、第1管理情報11には、第2管理情報の分割数(つまり1個の第2管理情報に対応する第2管理情報片の個数)に関する情報が含まれている。第2管理情報を読み出す場合には、第2管理情報片121〜123が制御対象メモリ3B〜3Dから並列に読み出される。なお、第1管理情報11が格納されている制御対象メモリ3Aには、第1管理情報11に加えて第2管理情報片が格納されても良い。また、第1管理情報11は、制御対象メモリ3Aに限らず、他の制御対象メモリ3B〜3Dに格納されても良い。
図39は、制御対象メモリ3B〜3Dに格納されている第2管理情報片の第1の例を示す図である。第2管理情報X1を構成する3個の第2管理情報片X11,X12,X13が、制御対象メモリ3B,3C,3Dのブロックb,h,k(ブロックアドレスb,h,k)にそれぞれ格納されている。また、第2管理情報X2を構成する3個の第2管理情報片X21,X22,X23が、制御対象メモリ3B,3C,3Dのブロックd,g,o(ブロックアドレスd,g,o)にそれぞれ格納されている。また、第2管理情報X3を構成する3個の第2管理情報片X31,X32,X33が、制御対象メモリ3B,3C,3Dのブロックe,i,m(ブロックアドレスe,i,m)にそれぞれ格納されている。また、第2管理情報Y1を構成する3個の第2管理情報片Y11,Y12,Y13が、制御対象メモリ3B,3C,3Dのブロックa,f,n(ブロックアドレスa,f,n)にそれぞれ格納されている。また、第2管理情報Z1を構成する3個の第2管理情報片Z11,Z12,Z13が、制御対象メモリ3B,3C,3Dのブロックc,j,l(ブロックアドレスc,j,l)にそれぞれ格納されている。
第2管理情報X1,X2,X3は、互いに対応する同一内容の第2管理情報である。また、図中の鉤括弧内のアルファベットは、分割された他の2個の第2管理情報片が格納されているブロックアドレス(以下「メモリ間グループアドレス」と称す)を示している。例えば、第2管理情報X1は3個の第2管理情報片X11,X12,X13に分割され、第2管理情報片X11,X12,X13はブロックb,h,kにそれぞれ格納されているため、第2管理情報片X11は「h,k」なるメモリ間グループアドレスを含み、第2管理情報片X12は「b,k」なるメモリ間グループアドレスを含み、第2管理情報片X13は「b,h」なるメモリ間グループアドレスを含んでいる。
以下、妥当な第1管理情報の復元処理について説明する。以下の例では、復元処理をメモリコントローラ2によって行う場合について説明するが、上記と同様に、外部のホストコンピュータ等を用いて復元処理を行うこともできる。
まず、メモリコントローラ2は、制御対象メモリ3Bの中から、第2管理情報片を格納しているブロックa,b,c,d,eを特定する。
次に、メモリコントローラ2は、ブロックa,b,c,d,eの中から異常ブロックを除外する処理を行う。但しこの例では、ブロックa,b,c,d,eの中に異常ブロックは存在しないものとする。
次に、メモリコントローラ2は、ブロックa,b,c,d,eの中から1個のブロックを任意に選択する。例えば、ブロックアドレスが最も小さいブロックaを選択する。次に、ブロックaから第2管理情報片Y11を読み出した後、第2管理情報片Y11に含まれているメモリ間グループアドレス「f,n」を参照することにより、ブロックf,nから第2管理情報片Y12,Y13をそれぞれ読み出す。次に、第2管理情報Y11,Y12,Y13を結合することによって第2管理情報Y1を復元する。なお、メモリコントローラ2は、ブロックf,nについても異常ブロックか否かの判定を行い、ブロックf,nの少なくとも一方が異常ブロックである場合には、第2管理情報Y1の復元を行わない。但しこの例では、ブロックf,nは異常ブロックではないものとする。他のブロックg〜m,oについても同様である。
次に、メモリコントローラ2は、第2管理情報Y1に含まれているグループアドレス<b,c>を参照することにより、ブロックb,cから第2管理情報片X11,Z11をそれぞれ読み出す。次に、第2管理情報片X11に含まれているメモリ間グループアドレス「h,k」を参照することにより、ブロックh,kから第2管理情報片X12,X13をそれぞれ読み出す。次に、第2管理情報片X11,X12,X13を結合することによって第2管理情報X1を復元する。また、第2管理情報片Z11に含まれているメモリ間グループアドレス「j,l」を参照することにより、ブロックj,lから第2管理情報片Z12,Z13をそれぞれ読み出す。次に、第2管理情報片Z11,Z12,Z13を結合することによって第2管理情報Z1を復元する。
次に、メモリコントローラ2は、復元した第2管理情報Y1,X1,Z1を対象とする多数決を行うが、図39の例ではこの多数決は成立しない。
次に、メモリコントローラ2は、ブロックa,b,c,d,eの中から次のブロックを任意に選択する。例えば、ブロックアドレスが次に小さいブロックbを選択する。次に、ブロックbから第2管理情報片X11を読み出した後、第2管理情報片X11に含まれているメモリ間グループアドレス「h,k」を参照することにより、ブロックh,kから第2管理情報片X12,X13をそれぞれ読み出す。次に、第2管理情報X11,X12,X13を結合することによって第2管理情報X1を復元する。なお、上述のステップで第2管理情報X1はすでに復元されているので、このステップでの第2管理情報X1の復元処理は省略しても良い。
次に、メモリコントローラ2は、第2管理情報X1に含まれているグループアドレス<d,e>を参照することにより、ブロックd,eから第2管理情報片X21,X31をそれぞれ読み出す。次に、第2管理情報片X21に含まれているメモリ間グループアドレス「g,o」を参照することにより、ブロックg,oから第2管理情報片X22,X23をそれぞれ読み出す。次に、第2管理情報片X21,X22,X23を結合することによって第2管理情報X2を復元する。また、第2管理情報片X31に含まれているメモリ間グループアドレス「i,m」を参照することにより、ブロックi,mから第2管理情報片X32,X33をそれぞれ読み出す。次に、第2管理情報片X31,X32,X33を結合することによって第2管理情報X3を復元する。
次に、メモリコントローラ2は、復元した第2管理情報X1,X2,X3を対象とする多数決を行う。図39の例ではこの多数決は成立するため、メモリコントローラ2は、第2管理情報X1,X2,X3を妥当な第2管理情報と判定する。
次に、メモリコントローラ2は、妥当な第2管理情報X1,X2,X3の中から任意の1個の第2管理情報を確定し、確定した妥当な第2管理情報に含まれている復元情報に基づいて、妥当な第1管理情報を制御対象メモリ3A内に復元する。
なお、図39には、制御対象メモリ3Bに格納されている第2管理情報片にグループアドレスが含まれている例を示したが、この例に限らず、グループアドレスは、制御対象メモリ3B〜3Dの少なくとも一つに格納されている第2管理情報片に含まれていればよい。例えば、グループアドレス<b,c>は、第2管理情報片Y11ではなく第2管理情報片Y12又は第2管理情報片Y13に含まれていても良い。
図40は、制御対象メモリ3B〜3Dに格納されている第2管理情報片の第2の例を示す図である。図40の例では、第2管理情報片にはメモリ間グループアドレスが含まれておらず、その代わりに、各々の第2管理情報片にグループアドレスが含まれている。例えば、第2管理情報片X11,X21,X31には<d,e><b,e><b,d>なるグループアドレスが含まれており、これにより、同一内容の第2管理情報片が格納された制御対象メモリ3B内のブロックを特定可能である。また、各第2管理情報片には、分割前の第2管理情報を特定可能なID値が含まれている。例えば、第2管理情報片X11,X12,X13には「X11」「X12」「X13」なるID値がそれぞれ含まれており、これにより、分割前の第2管理情報が第2管理情報X1であることを特定可能である。
以下、妥当な第1管理情報の復元処理について説明する。以下の例では、復元処理をメモリコントローラ2によって行う場合について説明するが、上記と同様に、外部のホストコンピュータ等を用いて復元処理を行うこともできる。
まず、メモリコントローラ2は、制御対象メモリ3Bの中から、第2管理情報片を格納しているブロックa,b,c,d,eを特定する。
次に、メモリコントローラ2は、ブロックa,b,c,d,eの中から異常ブロックを除外する処理を行う。但しこの例では、ブロックa,b,c,d,eの中に異常ブロックは存在しないものとする。
次に、メモリコントローラ2は、ブロックa,b,c,d,eの中から1個のブロックを任意に選択する。例えば、ブロックアドレスが最も小さいブロックaを選択する。次に、ブロックaから第2管理情報片Y11を読み出した後、第2管理情報片Y11に含まれているグループアドレス<b,c>を参照することにより、ブロックb,cから第2管理情報片X11,Z11をそれぞれ読み出す。
次に、メモリコントローラ2は、第2管理情報片Y11,X11,Z11を対象とする多数決を行うが、図40の例ではこの多数決は成立しない。
次に、メモリコントローラ2は、ブロックa,b,c,d,eの中から次のブロックを任意に選択する。例えば、ブロックアドレスが次に小さいブロックbを選択する。次に、ブロックbから第2管理情報片X11を読み出した後、第2管理情報片X11に含まれているグループアドレス<d,e>を参照することにより、ブロックd,eから第2管理情報片X21,X31をそれぞれ読み出す。
次に、メモリコントローラ2は、第2管理情報片X11,X21,X31を対象とする多数決を行う。図40の例ではこの多数決は成立するため、メモリコントローラ2は、第2管理情報片X11,X21,X31を妥当な第2管理情報片と判定する。
メモリコントローラ2は、制御対象メモリ3C,3Dについても、制御対象メモリ3Bと同様の処理を行う。その結果、制御対象メモリ3Cに関しては、第2管理情報片X12,X22,X32が妥当な第2管理情報片と判定され、制御対象メモリ3Dに関しては、第2管理情報片X13,X23,X33が妥当な第2管理情報片と判定される。
次に、メモリコントローラ2は、各第2管理情報片X11〜X13,X21〜X23,X31〜X33に含まれているID値に基づいて、対応する第2管理情報片同士を結合することにより、妥当な第2管理情報X1,X2,X3を復元する。
次に、メモリコントローラ2は、妥当な第2管理情報X1,X2,X3の中から任意の1個の第2管理情報を確定し、確定した妥当な第2管理情報に含まれている復元情報に基づいて、妥当な第1管理情報を制御対象メモリ3A内に復元する。
<変形例2>
上記実施の形態1,2では、管理情報を第1管理情報と第2管理情報との2つに分割する例について述べたが、3つ以上に分割しても良い。例えば3つに分割する場合には、書き換え頻度が低い情報を第1管理情報内に含め、書き換え頻度が中程度の情報を第2管理情報内に含め、書き換え頻度が高い情報を第3管理情報内に含める。第1管理情報は、割り当てられるブロック数が少ない第1ブロック群内に格納し、第2管理情報は、割り当てられるブロック数が多い第2ブロック群内に格納し、第3管理情報は、全ブロックのうち第1ブロック群及び第2ブロック群以外の第3ブロック群内(ブロック数は最も多い)に格納する。
<変形例3>
上記実施の形態1,2では、第1ブロック群R1として割り当てられるブロックは、ブロックB1〜B10に限定されている。従って、ブロックB1〜B10内に先天性不良ブロックが存在している場合には、第1ブロック群R1内で実際に使用できるブロック数は、先天性不良ブロックの数に応じて減少する。そこで、第1ブロック群を割り当てる際に先天性不良ブロックを除外してもよい。例えばブロックB5,B9が先天性不良ブロックである場合には、ブロックB1〜B4,B6〜B8,B10〜B12を第1ブロック群として割り当てる。
<まとめ>
上記実施の形態1,2に係る半導体記憶装置1によれば、管理情報は、第1ブロック群R1内に格納される第1管理情報と、第2ブロック群R2内に格納される第2管理情報とを含む。そして、第2管理情報には、第1ブロック群R1内において妥当な第1管理情報を特定できない場合に、当該妥当な第1管理情報を第1ブロック群R1内に復元するための復元情報が含まれる。従って、第1ブロック群R1内において妥当な第1管理情報を特定できない場合であっても、メモリコントローラ2は、第2管理情報に含まれている復元情報に基づいて、妥当な第1管理情報を第1ブロック群R1内に復元することができる。その結果、不良ブロックの存在や強制的な電源遮断等に起因して正常動作が阻害されるという事態を回避しつつ、管理情報を制御対象メモリ3に格納することが可能となる。
また、上記実施の形態1,2に係る半導体記憶装置1によれば、第2管理情報は、第1管理情報よりも書き換え頻度の高い情報である。書き換え頻度に応じて管理情報を第1管理情報と第2管理情報とに分割し、限定的に割り当てられた第1ブロック群R1内には、書き換え頻度の低い第1管理情報を格納することにより、第1ブロック群R1内ではデータの書き換えが頻繁には発生しない。その結果、第1ブロック群R1内における後天性不良ブロックの発生が抑制されるため、装置の信頼性を向上することが可能となる。
また、上記実施の形態1,2に係る半導体記憶装置1によれば、第1管理情報には、第2管理情報を格納しているブロックを示す位置情報が含まれ、第2管理情報には、不良ブロックを示す位置情報が含まれる。従って、メモリコントローラ2は、第1管理情報を制御対象メモリ3から読み出すことによって、第2管理情報を格納しているブロックを示す位置情報を取得でき、また、当該位置情報に基づいて第2管理情報を制御対象メモリ3から読み出すことによって、不良ブロックを示す位置情報を取得することが可能となる。
また、上記実施の形態1,2に係る半導体記憶装置1によれば、第1管理情報には、第1ブロック群R1内の不良ブロックを示す位置情報が含まれ、第2管理情報には、第2ブロック群R2内の不良ブロックを示す位置情報が含まれる。従って、第2ブロック群R2内で後天性不良ブロックが発生した場合には、第2管理情報のみを更新すればよく、第1管理情報の更新を省略することができる。
また、上記実施の形態1,2に係る半導体記憶装置1によれば、第2ブロック群R2内には、複数の第2所定数個のブロックの各々に、同一内容の第2管理情報が格納されている。従って、第2所定数個のブロックに格納されている第2所定数個の第2管理情報のうちの一つが破壊又は喪失された場合であっても、メモリコントローラ2は、破壊又は喪失されていない残りの第2管理情報を、制御対象メモリ3から取得することができる。その結果、不良ブロックの存在や強制的な電源遮断等に起因して正常動作が阻害されるという事態を回避しつつ、管理情報を制御対象メモリ3に格納することが可能となる。
また、上記実施の形態1,2に係る半導体記憶装置1によれば、メモリコントローラ2は、第3所定数個の正常ブロックを、第2ブロック群R2の中から特定する。そして、特定した第3所定数個の正常ブロックに格納されている第3所定数個の第2管理情報の中から、多数決によって1個の妥当な第2管理情報を特定する。従って、更新が繰り返されることで第2ブロック群R2内に複数バージョンの第2管理情報が格納されている場合であっても、妥当な第2管理情報を適切に特定することが可能となる。
また、上記実施の形態1,2に係る半導体記憶装置1によれば、メモリコントローラ2は、第2管理情報を格納している全てのブロックの中から異常ブロックを除外することにより、正常ブロックを特定する。従って、異常ブロックが正常ブロックとして特定されるという事態を回避できるため、妥当な第2管理情報を適切に特定することが可能となる。
また、上記実施の形態1,2に係る半導体記憶装置1によれば、メモリコントローラ2は、第3所定数個の正常ブロックの中から3個の正常ブロックを特定し、当該3個の正常ブロックに格納されている3個の第2管理情報の中から、多数決によって1個の妥当な第2管理情報を特定する。このように、多数決を行う対象を3個の第2管理情報に限定することによって、簡易に多数決を行うことができるため、処理の所要時間を短縮することが可能となる。
また、上記実施の形態1,2に係る半導体記憶装置1によれば、メモリコントローラ2は、ある1個の正常ブロックに格納されている第2管理情報と、当該第2管理情報に位置情報が記述されている特定の2個のブロックに格納されている2個の第2管理情報とを用いて、多数決を行う。従って、多数決を行う対象を、更新時に併せて書き込まれた同一内容の第2管理情報に限定できるため、多数決によって妥当な第2管理情報を特定できる可能性を高めることが可能となる。
また、上記実施の形態1,2に係る半導体記憶装置1によれば、メモリコントローラ2は、特定した3個の正常ブロックを対象とする多数決によっては妥当な第2管理情報を特定できない場合には、他の3個の正常ブロックを特定し直して多数決を行う。これにより、妥当な第2管理情報を特定できる可能性を高めることが可能となる。
また、上記実施の形態1,2に係る半導体記憶装置1によれば、メモリコントローラ2は、第2管理情報を更新する必要が生じた場合には、更新前の第2管理情報が格納されている第2所定数個のブロックの各々に、更新後の第2管理情報をそれぞれ書き込む。これにより、更新後においても、同一内容の第2所定個数の第2管理情報を、第2ブロック群R2に格納することが可能となる。
また、上記実施の形態1,2に係る半導体記憶装置1によれば、メモリコントローラ2は、更新毎に値が異なるバージョン情報を、第2管理情報に含めて書き込む。従って、バージョン情報を用いて多数決を行うことができ、その結果、妥当な第2管理情報を適切に特定する精度を向上することが可能となる。
また、上記実施の形態1,2に係る半導体記憶装置1によれば、メモリコントローラ2は、あるブロックに第2管理情報を書き込む際に当該ブロックが後天性不良ブロックとなった場合には、当該第2管理情報に含めたバージョン情報の値を、以降の更新時には使用しない。従って、バージョン情報の値を生成するためのカウンタ値が一周した場合であっても、後天性不良ブロックに格納されている第2管理情報が、多数決によって妥当な第2管理情報として誤って特定されるという事態を回避することが可能となる。
また、上記実施の形態1,2に係る半導体記憶装置1によれば、メモリコントローラ2は、第2管理情報の更新時刻に関する時間情報を、第2管理情報に含めて書き込む。従って、時間情報に基づいて最新の第2管理情報を特定でき、その結果、妥当な第2管理情報を適切に特定する精度を向上することが可能となる。
また、上記実施の形態1,2に係る半導体記憶装置1によれば、メモリコントローラ2は、第2管理情報の誤り検出符号を、第2管理情報に含めて書き込む。従って、誤り検出符号を用いて多数決を行うことができ、その結果、妥当な第2管理情報を適切に特定する精度を向上することが可能となる。また、誤り検出符号を用いてデータの誤りが生じているか否かを判定することができ、その結果、第2ブロック群の中から正常ブロックを特定する際に、データの誤りが生じている異常ブロックを除外することが可能となる。
また、上記実施の形態1,2に係る半導体記憶装置1によれば、メモリコントローラ2は、第2所定数個のブロックの中の一のブロックに書き込む第2管理情報に、第2所定数個のブロックの中の他のブロックを示す位置情報を含めて書き込む。従って、多数決を行う対象を、更新時に併せて書き込まれた同一内容の第2管理情報に限定できるため、多数決によって妥当な第2管理情報を特定できる可能性を高めることが可能となる。