本発明の第1の実施形態について図を参照して詳細に説明する。図1は本実施形態の半導体記憶装置の構成の概要を示したものである。本実施形態の半導体記憶装置は、記憶手段1と、アドレス管理手段2と、代替ブロック形成手段3と、制御手段4とを備える。
記憶手段1は、所定の記憶容量ごとの複数のブロックに分割された記憶領域にデータを保存する。アドレス管理手段2は、ブロックのうち、異常が発生した不良ブロックを複数の領域に分割して正常な領域のアドレスを管理する。代替ブロック形成手段3は、不良ブロックの正常な領域を所定の記憶容量を満たすように組み合わせて、1つのブロックとみなして扱う第2の代替ブロックを形成する。また、制御手段4は、所定の条件を満たしたときに、第2の代替ブロックを形成するブロックの正常な領域にデータを書き込む。
本実施形態の半導体記憶装置は、異常が発生した不良ブロックを複数の領域に分割し、正常な領域を所定の記憶容量となるように組み合わせて、仮想的なブロックである第2の代替ブロックを形成している。第2の代替ブロックを不良ブロックの代わりに用いることにより、代替として用いるブロックに連続した領域からなる通常のブロックを割り当てなくても動作を継続することができる。その結果、本実施形態の半導体記憶装置では、予備の記憶領域の大きさを抑制しつつ、不良ブロックが多く発生した場合でも動作の継続が可能となる。
本発明の第2の実施形態について図を参照して詳細に説明する。図2は本実施形態の半導体記憶装置の構成の概要を示したものである。本実施形態の半導体記憶装置の記憶素子はNAND型フラッシュメモリとして形成されている。NAND型フラッシュメモリを用いた半導体記憶装置の記憶領域は、所定の記憶容量ごとの複数の領域に分割されていて、分割された1つの領域をブロックと呼ぶ。本実施形態の半導体記憶装置は、ブロックの一部に異常が発生した際に、異常が発生したブロックである不良ブロックを分割して、不良ブロックのうち異常が発生してない領域を記憶領域として用いる。また、本実施形態の半導体記憶装置において、不良ブロックを分割して記憶領域として用いる際には、複数の不良ブロックの正常な領域が組み合わされて用いられる。本実施形態の半導体記憶装置は、複数の不良の正常な領域を組み合わせて、正常なブロック1つと同じ記憶容量のブロックを仮想的に作ることによって、不良ブロックを記憶領域に用いる。
本実施形態の半導体記憶装置は、図2に示す通り、メモリ部10と、制御部21と、バッファメモリ部22と、不良ブロック管理部23と、2次代替領域管理部24とを備えている。本実施形態の半導体記憶装置には、制御信号の入出力を行うためのコントロールバスが接続されている。また、本実施形態の半導体記憶装置には、外部とのデータの入出力を行うためのデータバスが接続されている。コントロールバスは、制御部21に接続されている。また、データバスを介して入出力されるデータはバッファメモリ部22に一時保存される。
メモリ部10は、複数のブロックに分割されている。メモリ部10の各ブロックは、通常記憶領域11の通常ブロックと予備記憶領域12の代替ブロックとに分けられている。通常ブロックは、データの書き込みおよび読み出しに使用されるブロックである。代替ブロックは、異常が発生して使用できない通常ブロックが生じた際に、通常ブロックの代わりに使用されるブロックである。本実施形態では、ブロックを構成している素子に異常が発生して使用できないブロックを不良ブロックと呼ぶ。メモリ部10の全ブロックのうち、所定の数または割合のブロックが予備記憶領域12の代替ブロックとして設定されている。
各ブロックは、所定の数のページで構成されている。各ページは制御用の配線を共有している所定の数のメモリセルの組み合わせにより構成されている。メモリセルは、1ビットの情報を蓄積する単位である。NAND型フラッシュメモリにおいて、メモリセルに蓄積されているデータの消去はブロック単位で行われる。また、データの書き込みおよび読み出しは、ページ単位で行われる。
制御部21は、メモリ部10のデータの書き込み、読み出しおよび消去に関する制御全般を行う機能を有する。制御部21は、外部から送られてくる書き込み要求に従って、メモリ部10の書き込み先に指定されたアドレスのブロックにデータの書き込みを行う。書き込みを行うデータはデータバスを介して、バッファメモリ部22に入力されて一時保存される。また、制御部21は読み出し要求に従って、読み出し元に指定されたメモリ部10のブロックからデータの読み出しを行う。制御部21は、読み出したデータをバッファメモリ部22に一時保存し、データバスを介して出力する。
制御部21は、アドレス変換機能を備える構成とすることもできる。アドレス変換機能を備える構成とした場合には、制御部21は、書き込み先として指定されたアドレスを、所定のアルゴリズムに基づいて空いている通常ブロックのアドレスへと変換する。所定のアルゴリズムは、ブロックごとの使用回数に偏りが生じることを防ぐため、ブロックごとの使用回数が平準化するように設定されている。制御部21は、変換前のアドレスと変換後のアドレスを関連付けてアドレス変換テーブルに保存する。アドレスの変換を行った場合は、制御部21は、変換後のアドレスを指定されたアドレスとみなして各処理を行う。変換前のアドレスからの読み出しを指定された場合には、制御部21は、アドレス変換テーブルに基づいて変換後のアドレスからデータを読み出して、読み出したデータの出力を行う。以上に説明したブロックごとの使用回数を平準化する技術は、ウェアレベリングとも呼ばれる。
バッファメモリ部22は、入力されたデータを一時的に保存する機能を有する。バッファメモリ部22に外部からデータバスを介して入力されて保存されたデータは、制御部21からの指示に基づいてメモリ部10へと送られる。また、バッファメモリ部22は、メモリ部10から呼び出されたデータを外部に送る際に、データを一時的に保存するためにも用いられる。バッファメモリ部22は、制御部21からの指示に基づいて一時保存したデータをデータバスを介して外部に出力する。
不良ブロック管理部23は、不良ブロックのアドレスと、不良ブロックの代わりに使用される代替ブロックのアドレスを管理する機能を有する。また、不良ブロック管理部23は、代替ブロックとしての2次代替ブロックの使用の有無を保存する機能を有する。2次代替ブロックは、不良ブロックの正常な領域を組み合わせて形成したものである。不良ブロック管理部23は、不良ブロックのアドレスと不良ブロックの代わりに使用される代替ブロックのアドレスを関連付けて保存するデータテーブルを備えている。本実施形態では、不良ブロックと代替ブロックが関連付けられて保存されたデータデーブルを、不良ブロック管理テーブルと呼ぶ。
2次代替領域管理部24は、不良ブロックを分割した際に、分割したブロックの領域のうち使用できる領域のアドレスを管理する機能を有する。2次代替領域管理部24は、複数の不良ブロックの使用できる領域を組み合わせて管理する。例えば、不良ブロックを2分割する場合には、2次代替領域管理部24は、2つの不良ブロックの各々の使用できる領域を組み合わせて管理する。2次代替領域管理部24は、組み合われた不良ブロックのうち使用する領域の先頭アドレスを関連づけて保存するデータテーブルを備えている。本実施形態では、使用する領域の先頭アドレスを関連づけて保存するデータテーブルを2次代替領域管理テーブルと呼ぶ。また、本実施形態では、複数のブロックの使用できる領域を組み合わせて形成する仮想的なブロックを2次代替ブロックと呼ぶ。また、本実施形態では、2次代替ブロックに用いられている領域を2次代替領域と呼ぶ。
本実施形態における不良ブロック管理テーブルおよび2次代替領域管理テーブルについて説明する。本実施形態のメモリ部10の各ブロックは、図3に示すようにアドレスが割り当てられているとする。図3は、本実施形態の説明のために各ブロックに割り当てられたアドレスを模式的に示したものである。図3におけるアドレスの表記は、説明を簡略化するためにアルファベットと数字で代替して簡易的に示したものである。例えば、図3に示す予備記憶領域12で「S1」および「S2」のアドレスから構成されるブロックは、ブロックの先頭のアドレスが「S1」、ブロックを2分割した場合の後側の領域の先頭のアドレスが「S2」であることを示している。図4は、図3に示したようにアドレスを割り当てた場合において、いくつかのブロックで異常発生した例を示したものである。図4では、アドレス「M3」で始まるブロックの前側の領域と、アドレス「A9」で始まるブロックの後側の領域において書き込み等が出来ないページが発生した例を示している。図4の例では、アドレス「M3」および「A9」で始まるブロックが不良ブロックとなる。また、図4の例では、アドレス「M3」で始まるブロックのうち。後側のアドレス「M4」で始まる領域が使用可能であるとする。図4の例では、アドレス「A9」で始まるブロックのうち、前側のアドレス「A9」で始まる領域が使用可能で、後側のアドレス「A10」で始まる領域が使用不可であるとする。
本実施形態の半導体記憶装置の不良ブロック管理テーブルについて説明する。図5は、本実施形態の不良ブロック管理テーブルの例を示したものである。図5の不良ブロック管理テーブルの「不良ブロックアドレス」の項目は、異常が発生して不良ブロックとして扱われているブロックの先頭アドレスが登録されている。図5の例では、図4で示したアドレス「M3」および「A9」で始まるブロックの他に、アドレス「N5」で始まるブロックも不良ブロックとして扱われている例を示している。図5の「代替ブロックアドレス」は、不良ブロックの代わりにデータの保存先として用いられる代替ブロックの先頭のアドレスを示している。図5では、アドレス「M3」、「A9」のブロックの代替として、予備記憶領域12のアドレス「S1」、「S3」のブロックが割り当てられている例を示している。図5の「2次代替ブロック使用有無」の項目は、代替ブロックとして2次代替ブロックを使用しているかについて登録されている。図5では、代替ブロックとして2次代替ブロックを使用している場合は「1」、使用していない場合は「0」として登録されている。2次代替ブロックを使用している場合は、不良ブロック管理テーブルの「代替ブロックアドレス」に登録されているアドレスが、2次代替ブロックの先頭アドレスとして用いられる。
次に2次代替領域管理テーブルについて説明する。図6は本実施形態の2次代替領域管理テーブルの例を示したものである。図6の「2次代替ブロック先頭アドレス」は、2次代替ブロックとして用いるブロックのうち、前側の領域として用いる記憶領域の先頭アドレスを示したものである。「2次代替ブロック先頭アドレス」は、不良ブロック管理テーブルの「代替ブロックアドレス」としても登録されている。「2次代替ブロック副アドレス」は、2次代替ブロックとして用いるブロックのうち、後側の領域として用いる記憶領域の先頭アドレスを示したものである。図6の例では、アドレス「M3」および「M8」で始まる記憶領域が、仮想的に1つのブロックを形成しているものとして扱われる。図6のアドレス「H2」は、組み合わせて用いる後側の記憶領域が未登録の状態を示している。図6の例では、アドレス「H2」で始まる記憶領域は、組み合わせて用いる記憶領域が未登録のため2次代替ブロックとしては使用できない状態である。
本実施形態の半導体記憶装置において、データの書き込みが行われる際の動作について説明する。図7は本実施形態の半導体記憶装置においてデータの書き込みが行われる際のフローの概要を示したものである。始めに、半導体記憶装置に、外部から書き込みの要求、書き込み先のアドレスおよび書き込むデータが送られてくる(ステップ101)。半導体記憶装置にデータバスを介して送られてきたデータは、バッファメモリ部22に入力される。バッファメモリ部22にデータが入力されると、バッファメモリ部22は、入力されたデータを保存する(ステップ102)。
制御部21は、不良ブロック管理部23の不良ブロック管理テーブルを確認して、データの書き込み先として指定されたアドレスが不良ブロック管理テーブルに含まれていないかを確認する(ステップ103)。データの書き込み先のアドレスが不良ブロック管理テーブルに含まれている場合は、制御部21は2次代替ブロックの使用の有無を確認する。2次代替領域を使用している場合には、制御部21は2次代替領域管理テーブルを確認する。制御部21は、2次代替領域管理テーブルにおいて、不良ブロック管理テーブルに登録されているアドレスと組み合わされて登録されているアドレスの領域と合わせてデータの書き込み先として決定する。書き込み先のアドレスが不良ブロック管理テーブルには登録されているが、2次代替領域を使用していない場合には、制御部21は、代替ブロックのアドレスを書き込み先として決定する。また、データの書き込み先のアドレスが不良ブロック管理テーブルに含まれていない場合は、制御部21は、書き込み先のアドレスとアドレスの一致する通常記憶領域11のブロックを書き込み先として決定する(ステップ104)。
制御部21は、データの書き込み先を決定すると、書き込み先のブロックが正常なブロックか不良ブロックかを確認する。書き込み先のブロックが正常であるかの確認は、例えば、ページごとに共有しているソース線に電圧を印加して、正常に電圧が印加できるかにより行われる。また、書き込み先のブロックに以前のデータが残っている場合には、制御部21は書き込み動作を行う前に書き込み先のブロックに保存されているデータを一括で消去する。書き込み先が2次代替ブロックの場合は、ブロック単位で消去が行われるので異常が発生した領域と判断されて使用していない領域に対しても消去の処理が加えられる。
書き込み先のブロックが正常なブロックの場合には(ステップ105でNo)、制御部21は、バッファメモリ部22に保存されているデータを書き込み先として決定したブロックに保存する(ステップ113)。書き込み先のブロックに異常が発生して不良ブロックである場合には(ステップ105でYes)、制御部21は、異常が発生したブロックである不良ブロックのアドレスを不良ブロック管理テーブルに追加して保存する(ステップ106)。
制御部21は、不良ブロックのアドレスを不良ブロック管理テーブルに追加すると、使用している代替ブロックの数が所定の数以下であるかを判断する。使用している代替ブロックの数が所定の数以下の場合は(ステップ107でYes)、制御部21は、バッファメモリ部22に保存している不良ブロックに書き込む予定だったデータを、予備記憶領域12の代替ブロックに書き込むと判断する。代替ブロックに書き込むと判断すると、制御部21は、空いている代替ブロックから書き込み先の代替ブロックのアドレスを決定する(ステップ111)。書き込み先の代替ブロックのアドレスを決定すると、制御部21は決定した代替ブロックのアドレスを、異常の発生した不良ブロックのアドレスに関連付けて、不良ブロック管理テーブルに保存する(ステップ112)。使用する代替ブロックの情報等を不良ブロック管理テーブルに保存すると、制御部21はバッファメモリ部22に保存されているデータを選択した代替ブロックに書き込む(ステップ113)。
使用している代替ブロックの数が所定の数より多い場合は(ステップ107でNo)、制御部21はデータの書き込み先として2次代替ブロックの使用が可能かを判断する。制御部21は2次代替領域管理テーブルを確認して、使用できる2次代替ブロックがあるかにより2次代替ブロックの使用が可能かを判断する(ステップ108)。使用可能な2次代替ブロックが無い場合は(ステップ109でNo)、制御部21は、空いている代替ブロックから書き込み先の代替ブロックのアドレスを決定する(ステップ111)。書き込み先の代替ブロックのアドレスを決定すると、制御部21は決定した代替ブロックのアドレスを、異常の発生した不良ブロックのアドレスに関連付けて、不良ブロック管理テーブルに保存する(ステップ112)。使用する代替ブロックの情報等を不良ブロック管理テーブルに保存すると、制御部21はバッファメモリ部22に保存されているデータを選択した代替ブロックに書き込む(ステップ113)。
使用可能な2次代替ブロックがある場合は(ステップ109でYes)、制御部21は2次代替領域管理テーブルからデータの書き込みに使用する2次代替ブロックを決定する(ステップ110)。制御部21は、2次代替領域管理テーブルに登録されている2つのアドレスの組み合わせから、2次代替ブロックとして未使用の1つの組を選び、使用する2次代替ブロックとして決定する。制御部21は、使用する2次代替ブロックを決定する際に、不良ブロック管理テーブルを参照して2次代替ブロックとしての使用の有無を判断する。使用する2次代替ブロックを決定すると、制御部21は、不良ブロック管理テーブルに、2次代替ブロックの先頭アドレスを不良ブロックのアドレスに関連関連付けて保存する。また、制御部21は、不良ブロック管理テーブルに2次代替ブロックを使用していることを示す情報を保存する。データの書き込みに使用する2次代替ブロックを決定すると、制御部21は選択した2次代替ブロックに、バッファメモリ部22に保存されているデータの書き込みを行う(ステップ113)。制御部21は、組み合わされた2つのブロックのうち片方のブロックにデータの書き込み行った後に、バッファメモリ部22に保存されている残りのデータのもう一方のブロックへの書き込みように制御を行う。以上で、本実施形態の半導体記憶装置におけるメモリ部10へのデータの書き込み動作は完了する。
次に、本実施形態の半導体記憶装置において、保存されているデータの読み出しを行う際の動作について説明する。図8は、本実施形態の半導体記憶装置に保存されているデータの読み出しを行う際の動作フローの概要を示したものである。
外部から読み出し元のアドレスとともに、保存されているデータの読み出し要求が送られてきて制御部21に入力されたとする(ステップ121)。制御部21は、データの読み出し要求を受け取ると、読み出し元となるアドレスが代替アドレスかを確認するために、不良ブロック管理テーブルを確認する(ステップ122)。
読み出し元となるアドレスが代替ブロックでない場合には(ステップ123でNo)、制御部21は読み出し元として指定されたブロックのデータの読み出しを行う(ステップ124)。制御部21は、アドレスに対応するメモリ部10のブロックから順次バッファメモリ部22にデータを読み出す。メモリ部10から読み出されたデータはバッファメモリ部22に保存される。
制御部21はデータの読み出しを行う際にデータの読み出しエラーが発生したメモリセルの数を計測する(ステップ125)。本実施形態では制御部21は、1つのブロックを2分割して、分割してできた領域1つごとにエラーの発生数を計測する。制御部21は1ブロックのデータの読み出しを終えると、分割してできた領域ごとにエラーの発生したメモリセル数が所定の数未満であるかを判断する。エラーの発生したメモリセルの数が2つの領域とも所定の数未満の場合は(ステップ126でYes)、制御部21はデータの読み出しを行ったブロックが正常であると判断する。制御部21は、データの読み出しを行ったブロックが正常なブロックであると判断すると、バッファメモリ部22に保存されているデータをデータバスを介して出力する。バッファメモリ部22のデータを出力すると、データの読み出しの動作は完了となる。さらに、読み出すデータの要求がある場合には、ステップ121からの動作が繰り返し行われる。
データを読み出した際のエラーが、いずれか一方の領域または両方の領域において所定の数以上である場合(ステップ126でNo)、制御部21はデータを読み出したブロックが不良ブロックであると判断する。制御部21は、データを読み出したブロックが不良ブロックであると判断すると、そのブロックのアドレスを不良ブロックとして保存する(ステップ128)。制御部21は不良ブロックの情報を保存する際に、不良ブロックのうち正常な領域の先頭アドレスも保存する。データを読み出したブロックが不良ブロックであると判断すると、制御部21は不良ブロックと判断したデータを他のブロックに移行する(ステップ129)。制御部21は、データの読み込みや書き込み要求がないときに不良ブロックのデータの移し替えを行う。データの移し替えを行う際は、制御部21は図7のステップ107からの動作を行うように制御することにより、他のブロックへのデータの書き込みを行う。
読み出し元となるアドレスが代替ブロックの場合には(ステップ123でYes)、制御部21は、読み出し元となるアドレスが2次代替ブロックのものであるかを確認する。制御部21は、不良ブロック管理テーブルを確認して読み出し元となるアドレスが2次代替ブロックのものであるかを判断する。読み出し元のアドレスが2次代替ブロックのものでない場合は(ステップ130でNo)、制御部21は読み出し元のアドレスと対応する代替ブロックのアドレスを確認する。制御部21は、代替ブロックのアドレスを確認すると、アドレスに対応するメモリ部10のメモリセルから順次バッファメモリ部22にデータを読み出し、ステップ124からの動作を行う。
読み出し元のアドレスが2次代替ブロックのものでない場合は(ステップ130でYes)、制御部21は2次代替領域管理テーブルを参照して読み出し元となる2次代替ブロックのアドレスを確認する。制御部21は、2次代替ブロックのアドレスを確認すると2次代替ブロックからデータの読み出しを行う(ステップ133)。制御部21は2次代替ブロックとして組み合わせて用いられているブロックのうち先頭ブロック側のアドレスから順次データを読み出してバッファメモリ部22に保存する。制御部21は、次に、もう一方のブロックのデータを読み出して、連続したデータとなるようにバッファメモリ部22に保存する。2次代替ブロックからデータを読み出してバッファメモリ部22に保存する際には、制御部21はエラーの発生数を計測しステップ125からの動作を行う。
次に、異常が発生している不良ブロックのうち正常な領域を組み合わせて、仮想的なブロックを2次代替ブロックとして形成して登録する際の動作について説明する。図9は、本実施形態の半導体記憶装置において、異常が発生しているブロックの正常な部分を2次代替ブロックとして登録する際のフローの概要を示したものである。
書き込みや読み込みの動作を行っていないときに、制御部21が不良ブロックが発生し、分割した場合に正常な領域があることを検知したとする(ステップ201)。制御部21は、異常が発生したブロックを2分割した場合の、異常がない側、すなわち正常な側の領域の先頭アドレスの情報を抽出する。次に、制御部21は、既に登録されているアドレスのうち、他のアドレスと組み合わされてないアドレスが登録されているかを判断するために2次代替領域管理テーブルを確認する(ステップ202)。
他と組み合わされていないアドレスが存在しない場合には(ステップ203でNo)、制御部21は新たなアドレスを他のアドレスと組み合わせずに2次代替ブロック管理テーブルに登録する。他のアドレスと組み合わせない場合は、制御部21は新たに登録するアドレスを2次代替ブロックの先頭アドレスとして登録する(ステップ204)。他のアドレスと組み合わせずに登録されたアドレスは、新たに不良ブロックは生じたときに、新たに生じた不良ブロックの使用可能な側のアドレスと組み合わされる。他と組み合わされていないアドレスが登録されている場合には(ステップ203でYes)、制御部21は新たなアドレスと既に登録されているアドレスを組み合わせて登録する(ステップ205)。制御部21は、2次代替ブロックの先頭アドレスとして既に登録されているアドレスに、新たなアドレスを関連付けて登録する。
本実施形態の半導体記憶装置は、不良ブロックを2つに分割して正常な領域どうしを組み合わせて2次代替ブロックとして2次代替領域管理テーブルで管理している。代替ブロックが所定の数以下となったときに不良ブロックが生じると、制御部は、2次代替ブロックの使用の可否を判断して使用可能な場合は、2次代替ブロックを使用するように制御を行っている。また、2次代替ブロックを使用する際には、制御部は、複数のブロックにまたがった領域を連続した1つの領域とみなしてデータの書き込みおよび読み出しを行っている。このように、不良ブロックのうち、正常な領域を組み合わせた2次代替ブロックを用いることにより、連続した領域からなる通常の代替ブロックを使用する数を少なくすることができる。そのため、代替ブロックを形成するための予備の記憶領域の大きさを抑制することが可能となる。また、代替ブロックの数が減少しても、2次代替ブロック使用することにより動作の継続が可能となり得る。以上より、本実施形態の半導体記憶装置では、予備の記憶領域の大きさを抑制しつつ、不良ブロックが多く発生した場合でも動作の継続が可能となる。
本発明の第3の実施形態について詳細に説明する。第2の実施形態では半導体記憶装置は、データの書き込みや読み込みを行っていないときに2次代替ブロックの形成に関する動作を行った。本実施形態では、データの書き込み動作の中でも、2次代替ブロックを形成して記録領域として用いる。
本実施形態の半導体記憶装置の構成は第2の実施形態と同様である。以下では、本実施形態の半導体記憶装置におけるデータの書き込み動作について説明する。また、本実施形態の半導体記憶装置と構成が同じであるため、第2の実施形態の半導体記憶装置の構成に関する図2も参照して説明する。
図10は本実施形態の半導体記憶装置においてデータの書き込みが行われる際のフローの概要を示したものである。始めに、半導体記憶装置に、外部から書き込みの要求、書き込み先のアドレスおよび書き込むデータが送られてくる(ステップ141)。半導体記憶装置に送られてきたデータは、バッファメモリ部22に入力される。バッファメモリ部22にデータが入力されると、バッファメモリ部22は、入力されたデータを保存する(ステップ142)。
制御部21は、不良ブロック管理部23の不良ブロック管理テーブルを参照して、データの書き込み先として指定されたアドレスが不良ブロック管理テーブルに含まれていないかを確認する(ステップ143)。データの書き込み先のアドレスが不良ブロック管理テーブルに含まれている場合は、制御部21は、2次代替ブロックの使用の有無を確認する。2次代替ブロックを使用している情報が登録されている場合は、制御部21は2次代替領域管理テーブルを確認して該当する2次代替ブロックのアドレスをデータの書き込み先として決定する。書き込み先のアドレスが不良ブロック管理テーブルには登録されているが、2次代替ブロックを使用している情報が登録されていない場合は、制御部21は、代替ブロックのアドレスを書き込み先として決定する。また、データの書き込み先のアドレスが不良ブロック管理テーブルに含まれていない場合は、制御部21は、書き込み先のアドレスとアドレスが一致する通常記憶領域11のブロックを書き込み先として決定する(ステップ144)。
制御部21は、データの書き込み先を決定すると、書き込み先のブロックが正常なブロックか不良ブロックかを確認する。書き込み先のブロックの確認は第2の実施形態のデータの書き込み時と同様に行うことができる。書き込み先のブロックが正常なブロックの場合には(ステップ145でNo)、制御部21は、バッファメモリ部22に保存されているデータを書き込み先として決定したブロックに保存する(ステップ146)。書き込み先のブロックが正常であるかの確認は、例えば、ページごとに共有しているソース線に電圧を印加して、正常に電圧が印加できるかにより行われる。また、書き込み先のブロックに以前のデータが残っている場合には、制御部21は書き込み動作を行う前に書き込み先のブロックに保存されているデータを一括で消去する。
書き込み先のブロックに異常が発生している場合には(ステップ145でYes)、制御部21は、異常が発生したブロックである不良ブロックのアドレスを不良ブロック管理テーブルに追加して保存する(ステップ147)。制御部21は、不良ブロックのアドレスを保存すると、不良ブロックを2つに分割し、正常な領域のアドレスを2次代替領域管理テーブルに登録する(ステップ148)。正常な領域が無い場合は、2次代替領域管理テーブルへ登録する動作は行われない。既に2次代替ブロックを使用している場合は、正常な側のみ再度、登録して異常が発生している側は削除する。
制御部21は、正常な領域を2次代替領域管理テーブルに登録すると、使用している代替ブロックの数が所定の数以下であるかを判断する。使用している代替ブロックの数が所定の数以下の場合は(ステップ149でYes)、制御部21は、バッファメモリ部22に保存しているデータを、予備記憶領域12の代替ブロックに書き込むと判断する。代替ブロックに書き込むと判断すると、制御部21は、空いている代替ブロックから書き込み先の代替ブロックのアドレスを決定する(ステップ150)。書き込み先の代替ブロックのアドレスを決定すると、制御部21は決定した代替ブロックのアドレスを、異常の発生した不良ブロックのアドレスに関連付けて、不良ブロック管理テーブルに保存する(ステップ151)。使用する代替ブロックの情報等を不良ブロック管理テーブルに保存すると、制御部21はバッファメモリ部22に保存されているデータを書き込み先として決定した代替ブロックに書き込む(ステップ146)。
使用している代替ブロックの数が所定の数より多い場合は(ステップ149でNo)、制御部21はデータの書き込み先として2次代替ブロックの使用が可能かを判断するために2次代替領域管理テーブルを確認する(ステップ152)。制御部21は2次代替領域管理テーブルを確認して2次代替ブロックの使用が可能かを判断する。使用可能な2次代替ブロックが無い場合は(ステップ153でNo)、制御部21は、空いている代替ブロックから書き込み先の代替ブロックのアドレスを決定する(ステップ150)。書き込み先の代替ブロックのアドレスを決定すると、制御部21は決定した代替ブロックのアドレスに、異常の発生した不良ブロックのアドレスに関連付けて、不良ブロック管理テーブルに保存する(ステップ151)。使用する代替ブロックの情報等を不良ブロック管理テーブルに保存すると、制御部21はバッファメモリ部22に保存されているデータを書き込み先として決定した代替ブロックに書き込む(ステップ146)。
使用可能な2次代替ブロックがある場合は(ステップ153でYes)、制御部21は2次代替領域管理テーブルからデータの書き込みに使用する2次代替ブロックを決定する。2次代替ブロックを決定すると、制御部21は、2次代替ブロックの先頭側のブロックのアドレスを、データの書き込み要求で指定されていたアドレスと組み合わせて不良ブロック管理テーブルに保存する(ステップ154)。また、制御部21は、不良ブロック管理テーブルに2次代替ブロックを使用していることを示す情報を保存する。データの書き込みに使用する2次代替ブロックを決定して保存すると、制御部21は選択した2次代替ブロックに、バッファメモリ部22のデータの書き込みを行う(ステップ146)。制御部21は、組み合わされた2つのブロックのうち片方のブロックにデータの書き込みを行った後に、バッファメモリ部22に保存されている残りのデータのもう一方のブロックへの書き込むように制御を行う。以上で、本実施形態の半導体記憶装置におけるメモリ部10へのデータの書き込み動作は完了する。
本実施形態の半導体記憶装置において、データの読み出しを行う際の動作フローは第2の実施形態と同様である。また、本実施形態の半導体記憶装置において、データの書き込みおよび読み取りをしていないときに、2次代替ブロックを形成する際の動作フローも第2の実施形態と同様である。
本実施形態の半導体記憶装置では、データの書き込み時にブロックの異常を検知すると、制御部は、書き込みのフローの中で2次代替ブロックを形成し、所定の条件を満たしたときに2次代替ブロックへデータを書き込むように制御している。本実施形態では、書き込みとして使用予定であったブロックの正常領域も2次代替ブロックとして使用することが可能となるため、使用可能な2次代替ブロックが存在する可能性が高くなる。そのため、不良ブロックが発生した際に、通常の代替ブロックを使用する数を抑制することができる機会が第2の実施形態よりも増加し得る。そのため、本実施形態の半導体記憶装置では、代替ブロックの使用の数をより効果的に抑制することができるので、代替ブロックの不足による動作の停止をより避けることが可能になる。
第2の実施形態および第3の実施形態では、未使用の代替ブロックの残りが所定の数以下のときに2次代替ブロックを使用したが、未使用の代替ブロックの残りの数によらずに2次代替ブロックを使用する構成とすることもできる。未使用の代替ブロックの残り数によらずに2次代替ブロックを使用する場合は、書き込み先のブロックに異常が発生した際に、制御部は使用できる2次代替ブロックの有無を確認する。使用できる2次代替ブロックがある場合は、制御部は2次代替ブロックにデータの書き込み等を行う。未使用の代替ブロックの残り数によらずに2次代替ブロックを使用することにより、代替ブロックの数の減少を抑制することができる。その結果、代替ブロックの不足による動作の停止をより避けることができる。
第2の実施形態および第3の実施形態では、不良ブロックを2つの領域に分割したが3つ以上の複数の領域に分割することもできる。3つ以上の領域に分割する場合は、2次代替領域管理テーブルで、ブロックを分割した数に対応する数のアドレスの管理が行われる。また、3つ以上の領域に分割する場合は、1つの不良ブロックから複数の正常な領域が2次代替領域管理テーブルに登録されることもある。NAND型フラッシュメモリでは、データの消去をブロック単位で行うため、1つの不良ブロックの複数の正常な領域を用いる場合は、1つの不良ブロック内の各領域は同じ2次代替ブロックに含まれるようにする必要がある。
第2の実施形態および第3の実施形態では、1つの不良ブロックを複数に分割した際に、分割してできる各々の領域の記憶容量が同じ大きさになるように、不良ブロックの分割が行われている。また、2次代替ブロックを形成する際に、1ブロック分と同じ記憶容量となるように不良ブロックの正常な領域が組み合わされている。このような構成に代えて、不良ブロックを分割せずに、不良ブロックを組み合わせて2次代替ブロックを構成とすることもできる。不良ブロックを分割しないで組み合わせる場合は、各不良ブロックの正常な領域の記憶容量の合計が、1つのブロック分の記憶容量を満たすように不良ブロックが組み合わされて2次代替ブロックが形成される。このような構成とすることにより、異常の発生した領域が大きい不良ブロックと小さい不良ブロックの組み合わせによる2次代替ブロックを形成することができる。また、異常の発生した領域が大きく、正常な領域が小さい不良ブロックを複数、組み合わせて1ブロック分の記憶容量を確保することも可能となる。不良ブロックを分割しない場合は、2次代替ブロックの形成やデータの書き込み等の制御が複雑になり得るが、異常の発生した領域が大きい不良ブロックも有効に活用して2次代替ブロックを形成することができる。その結果、代替ブロックの減少を抑制することができる。
第3の実施形態において、データの書き込み時に異常を検知した際には、書き込み動作の中で組み合わせを行った2次代替ブロックもデータの書き込み先の候補として用いられる。このような構成に代えて、バッファメモリ部に保存されたデータ量を検出し、不良ブロックを分割した際の正常な領域の容量以下であった場合には、不良ブロックの正常な領域を一時的なデータの書き込み先として用いる構成とすることもできる。このような構成とすることにより、不良ブロックの正常な領域を一時的な書き込み先として使用した場合には、書き込みの動作を行っていないときに、2次代替ブロックを形成して不良ブロックへの割り当てが行われる。代替ブロックが設定された後は、一時的に保存されたデータは設定された代替ブロックへ移行される。このように、データの量により不良ブロックの正常な領域を一時的に使用して代替ブロックを設定する処理を保留することにより、書き込み時の処理速度の低下を抑制することができる。