(57)【要約】【課題】回路規模及び起動処理の所要時間を削減できるとともに、管理ブロックに限らず任意のブロックに適用することが可能な半導体記憶装置を得る。【解決手段】制御部１は、電源起動時に、ブロック内の全ページのうちデータ書込が完了した最終ページ（第１ページ）を特定する。また、第１ページに書き込まれているアドレス情報に基づいて、第１ページの次の書込対象ページ（第２ページ）を特定する。また、第２ページを無効化して、第２ページより後の書込対象ページ（第３ページ）に対してデータ書込を行う。【選択図】図３
2015191567.tif 000002
【特許請求の範囲】
【請求項１】
データの書込単位である複数のページを含むブロックを有する記憶部と、
前記記憶部を制御する制御部と、
を備え、
前記制御部は、
データ書込時に、書込対象ページに対して、書込データと、当該書込対象ページの次の書込対象ページを指定するアドレス情報とを書き込み、
電源起動時に、
ブロック内の全ページのうちデータ書込が完了した最終ページである第１ページを特定し、
第１ページに書き込まれているアドレス情報に基づいて、第１ページの次の書込対象ページである第２ページを特定し、
第２ページを無効化して、第２ページより後の書込対象ページである第３ページに対してデータ書込を行う、半導体記憶装置。
【請求項２】
前記制御部は、
データ書込時に、書込対象ページに対して、ページ毎に更新される経時情報をさらに書き込み、
電源起動時に、ブロック内の全ページのうち最新の経時情報が書き込まれているページを、第１ページとして特定する、請求項１に記載の半導体記憶装置。
【請求項３】
前記制御部は、電源起動時に、所定の起点ページからアドレス情報を辿るページ探索を行うことにより、アドレス情報が書き込まれている最終ページを、第１ページとして特定する、請求項１に記載の半導体記憶装置。
【請求項４】
アドレス情報は、ブロックアドレスとページアドレスとを含む、請求項１〜３のいずれか一つに記載の半導体記憶装置。
【請求項５】
前記制御部は、所定のタイミングでガベージコレクションを実行することにより、第２ページとして無効化されているページに対して消去状態のデータを書き込む、請求項１〜４のいずれか一つに記載の半導体記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体記憶装置に関する。
【背景技術】
【０００２】
下記特許文献１には、ＮＡＮＤ型フラッシュメモリ等の不揮発性メモリと、当該不揮発性メモリを制御するコントローラとを備えるメモリシステムが開示されている。不揮発性メモリは、ユーザデータが格納されるユーザデータブロックと、管理情報が格納される管理ブロックとを有している。
【０００３】
コントローラは、管理ブロック内の複数の管理ページに対して、データをシーケンシャルに書き込む。データの書込途中に電源遮断が発生した場合、コントローラは、次の電源起動時に、管理ブロック内の複数の管理ページのうち、前回の通電時に最後にデータ書込を行った管理ページ（以下「最終管理ページ」と称す）を特定する。そして、最終管理ページに連続する次の管理ページ（以下「次ページ」と称す）が消去状態（つまりオール「１」）であるか否かを判定し、消去状態でない場合には、当該次ページより後の管理ページにデータを書き込むとともに、当該次ページを無効化する。また、次ページが消去状態である場合には、当該次ページにデータを書き込み、その後、当該次ページからデータを読み出して、読出データが期待値（つまり更新後の管理情報）に一致するか否かのベリファイを行う。そして、ベリファイの結果、読出データが期待値に一致しない場合には、当該次ページより後の管理ページにデータを書き込むとともに、当該次ページを無効化する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特許第５１４２６８５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上述したように、上記特許文献１に開示されたメモリシステムによると、最終管理ページの次ページが消去状態である場合には、当該次ページにデータを書き込み、その後、当該次ページからデータを読み出して、読出データが期待値に一致するか否かのベリファイを行う。
【０００６】
従って、期待値を保持しておくための保持回路や、読出データと期待値とを比較するための比較回路が必要となって、システム全体として回路規模が増大する。また、次ページが消去状態であるか否かの判定と、読出データが期待値に一致するか否かのベリファイとの二段階の処理が行われ、処理内容が複雑であるため、起動処理の所要時間が増大する。さらに、一般的にベリファイを行うためには期待値を保持しておく必要があるが、管理情報に比べてユーザデータはデータ量が膨大であり、全てのユーザデータに関する期待値を保持しておくことは現実的でない。そのため、上記特許文献１に開示されたメモリシステムの適用対象は管理ブロックに限定されると考えられる。
【０００７】
本発明はかかる問題を解決するために成されたものであり、回路規模及び起動処理の所要時間を削減できるとともに、管理ブロックに限らず任意のブロックに適用することが可能な半導体記憶装置を得ることを目的とするものである。
【課題を解決するための手段】
【０００８】
本発明の第１の態様に係る半導体記憶装置は、データの書込単位である複数のページを含むブロックを有する記憶部と、前記記憶部を制御する制御部と、を備え、前記制御部は、データ書込時に、書込対象ページに対して、書込データと、当該書込対象ページの次の書込対象ページを指定するアドレス情報とを書き込み、電源起動時に、ブロック内の全ページのうちデータ書込が完了した最終ページである第１ページを特定し、第１ページに書き込まれているアドレス情報に基づいて、第１ページの次の書込対象ページである第２ページを特定し、第２ページを無効化して、第２ページより後の書込対象ページである第３ページに対してデータ書込を行うことを特徴とするものである。
【０００９】
第１の態様に係る半導体記憶装置によれば、制御部は、電源起動時に、ブロック内の全ページのうちデータ書込が完了した最終ページである第１ページを特定し、第１ページに書き込まれているアドレス情報に基づいて、第１ページの次の書込対象ページである第２ページを特定し、第２ページを無効化して、第２ページより後の書込対象ページである第３ページに対してデータ書込を行う。このように、データの書込途中の電源遮断に起因して書込未完了ページとなっている可能性がある第２ページを常に無効化し、第２ページより後の書込対象ページである第３ページからデータ書込を再開することにより、第２ページが書込未完了ページであるか完全消去ページであるかの検証が不要となる。その結果、検証のために読出データと期待値とを比較する処理を省略できるため、装置全体として回路規模及び起動処理の所要時間を削減することが可能となる。また、検証のために期待値を保持しておく必要もないため、管理ブロックに限らずユーザデータブロック等の任意のブロックに対して本発明を適用することが可能となる。さらに、制御部は、データ書込時に、書込対象ページに対して、書込データと、当該書込対象ページの次の書込対象ページを指定するアドレス情報とを書き込む。このように、データ書込時にアドレス情報を書込データに付加しておき、電源起動時にアドレス情報を参照することにより、制御部は、書込未完了ページとなっている可能性がある第２ページを簡易に特定することが可能となる。
【００１０】
本発明の第２の態様に係る半導体記憶装置は、第１の態様に係る半導体記憶装置において特に、前記制御部は、データ書込時に、書込対象ページに対して、ページ毎に更新される経時情報をさらに書き込み、電源起動時に、ブロック内の全ページのうち最新の経時情報が書き込まれているページを、第１ページとして特定することを特徴とするものである。
【００１１】
第２の態様に係る半導体記憶装置によれば、制御部は、データ書込時に、書込対象ページに対して、ページ毎に更新される経時情報を書き込み、電源起動時に、ブロック内の全ページのうち最新の経時情報が書き込まれているページを、第１ページとして特定する。このように、データ書込時に経時情報を書込データに付加しておき、電源起動時に経時情報を参照することにより、制御部は、データ書込が完了した最終ページである第１ページを簡易に特定することが可能となる。
【００１２】
本発明の第３の態様に係る半導体記憶装置は、第１の態様に係る半導体記憶装置において特に、前記制御部は、電源起動時に、所定の起点ページからアドレス情報を辿るページ探索を行うことにより、アドレス情報が書き込まれている最終ページを、第１ページとして特定することを特徴とするものである。
【００１３】
第３の態様に係る半導体記憶装置によれば、制御部は、電源起動時に、所定の起点ページからアドレス情報を辿るページ探索を行うことにより、アドレス情報が書き込まれている最終ページを、第１ページとして特定する。このように、データ書込時にアドレス情報を書込データに付加しておき、電源起動時にアドレス情報を辿るページ探索を行うことにより、制御部は、データ書込が完了した最終ページである第１ページを簡易に特定することが可能となる。
【００１４】
本発明の第４の態様に係る半導体記憶装置は、第１〜第３のいずれか一つの態様に係る半導体記憶装置において特に、アドレス情報は、ブロックアドレスとページアドレスとを含むことを特徴とするものである。
【００１５】
第４の態様に係る半導体記憶装置によれば、アドレス情報は、ブロックアドレスとページアドレスとを含む。従って、物理アドレスが連続する複数のページに対してシーケンシャルにデータ書込を行う場合のみならず、ブロックやページの物理アドレスが連続しない複数のページに対してランダムにデータ書込を行う場合であっても、本発明を適用することが可能となる。
【００１６】
本発明の第５の態様に係る半導体記憶装置は、第１〜第４のいずれか一つの態様に係る半導体記憶装置において特に、前記制御部は、所定のタイミングでガベージコレクションを実行することにより、第２ページとして無効化されているページに対して消去状態のデータを書き込むことを特徴とするものである。
【００１７】
第５の態様に係る半導体記憶装置によれば、制御部は、所定のタイミングでガベージコレクションを実行することにより、第２ページとして無効化されているページに対して消去状態のデータを書き込む。その結果、ガベージコレクションの実行後は第２ページを再利用できるため、第２ページの蓄積に起因して利用可能なページ数が削減されることを、回避することが可能となる。
【発明の効果】
【００１８】
本発明によれば、回路規模及び起動処理の所要時間を削減できるとともに、管理ブロックに限らず任意のブロックに適用することが可能な半導体記憶装置を得ることができる。
【図面の簡単な説明】
【００１９】
【図１】本発明の実施の形態１に係る半導体記憶装置の全体構成を簡略化して示す図である。
【図２】メモリコントローラからメモリアレイに書き込まれるデータを示す図である。
【図３】制御部が実行する起動処理の概要を示す図である。
【図４】制御部が実行する起動処理の流れを具体的に示すフローチャートである。
【図５】本発明の実施の形態２に係る半導体記憶装置の全体構成を簡略化して示す図である。
【図６】メモリコントローラからメモリアレイに書き込まれるデータを示す図である。
【図７】制御部が実行する起動処理の流れを具体的に示すフローチャートである。
【発明を実施するための形態】
【００２０】
以下、本発明の実施の形態について、図面を用いて詳細に説明する。なお、異なる図面において同一の符号を付した要素は、同一又は相応する要素を示すものとする。
【００２１】
＜実施の形態１＞
図１は、本発明の実施の形態１に係る半導体記憶装置の全体構成を簡略化して示す図である。図１の接続関係で示すように、半導体記憶装置は、ＮＡＮＤ型フラッシュメモリ等の不揮発性メモリを用いたメモリアレイ２と、メモリアレイ２に対するアクセスを制御する制御部１とを備えて構成されている。
【００２２】
制御部１は、メモリコントローラ１１、判定回路１２、ＥＣＣ回路１３、及び乱数生成器１４を備えて構成されている。メモリコントローラ１１は、その内部に、ＮＡレジスタ２１、ＴＳレジスタ２２、及びカウンタ２３を有している。
【００２３】
メモリアレイ２は、データの消去単位である複数のブロックを有している。ブロックには、管理情報が格納される管理ブロックと、ユーザデータが格納されるユーザデータブロックとが含まれる。各ブロックは、データの書込単位及び読出単位である複数のページによって構成されている。
【００２４】
メモリコントローラ１１には、外部のホスト装置からメモリアレイ２へのアクセス要求が入力される。書込要求が入力された場合、メモリコントローラ１１は、書込要求に含まれる書込データを、指定ブロックの指定ページに書き込む。
【００２５】
図２は、メモリコントローラ１１からメモリアレイ２に書き込まれるデータを示す図である。メモリコントローラ１１は、書込データの末尾に、ネクストアドレスＮＡとタイムスタンプＴＳとを付加したデータを、メモリアレイ２に書き込む。書込データは、所定バイト（例えば１０２４バイト）のユーザデータ（又は管理情報）と、当該ユーザデータ（又は管理情報）に関する所定バイト（例えば４２バイト）のＥＣＣシンドロームとのセットが、複数セット繰り返されたデータ構造を有している。
【００２６】
同一又は別ブロック内の複数のページに跨がるデータを書き込む場合、メモリコントローラ１１は、書込対象である複数ページの物理アドレス、及び当該複数ページへの書込順序を管理している。ある書込対象ページにデータを書き込む場合、メモリコントローラ１１は、その書込対象ページに書き込む書込データの末尾に、当該書込対象ページの次の書込対象ページを指定するアドレス情報を、ネクストアドレスＮＡとして付加する。ネクストアドレスＮＡは、所定バイト（例えば２バイト）の物理ブロックアドレスと、所定バイト（例えば１バイト）の物理ページアドレスとを含む。
【００２７】
また、メモリコントローラ１１は、書込対象ページへのデータ書込が完了する毎に、カウンタ２３のカウンタ値をインクリメントする。カウンタ２３は、経時情報として所定バイト（例えば３バイト）のカウンタ値を出力するサイクリックカウンタである。メモリコントローラ１１は、ある書込対象ページにデータを書き込む場合、その書込対象ページに書き込む書込データの末尾に、その時点でのカウンタ２３のカウンタ値を、タイムスタンプＴＳとして付加する。
【００２８】
以下、半導体記憶装置の電源起動時に制御部１が実行する起動処理について説明する。
【００２９】
ＮＡＮＤ型フラッシュメモリを用いた不揮発性メモリにおいて、メモリアレイにデータを書き込んでいる途中で電源遮断が発生した場合には、再起動後に書込未完了ページのデータを読み出した際に、途中までのデータが書き込まれているにも拘わらず、書込未完了ページがあたかも消去ページ（ＡＬＬ  ＦＦｈ）のように見えることがある。そして、消去状態と判断して再起動後に書込未完了ページにデータを書き込むと、当該ページにデータを正しく書き込めず、書込データが破損又は消失してデータの信頼性が低下する場合がある。
【００３０】
そこで、書込未完了ページとなっている可能性があるページの使用を事前に回避してデータの信頼性を向上すべく、制御部１は、半導体記憶装置の電源起動時に以下のような起動処理を実行する。
【００３１】
図３は、制御部１が実行する起動処理の概要を示す図である。ここでは、ページＰ０→Ｐ１→Ｐ２→Ｐ３→Ｐ４→Ｐ５の順にデータ書込が行われる状況を想定している。メモリコントローラ１１は、書込対象であるページＰ０〜Ｐ５の物理アドレス、及びページＰ０〜Ｐ５への書込順序を管理している。ページＰ０〜Ｐ５は、同一ブロック内のページであっても良いし、別ブロック内のページであっても良い。また、必ずしも物理ページアドレスが連続している必要もない。
【００３２】
この例では、ページＰ３へのデータ書込の途中で電源遮断が発生したことにより、ページＰ３が書込未完了ページとなっている。また、ページＰ０〜Ｐ２へのデータ書込は完了しているため、これらのページＰ０〜Ｐ２にはネクストアドレスＮＡ及びタイムスタンプＴＳが書き込まれている。例えば、ページＰ０には、ページＰ１の物理アドレスを指定するネクストアドレスＮＡと、ページＰ０へのデータ書込時点でのタイムスタンプＴＳとが書き込まれており、ページＰ１には、ページＰ２の物理アドレスを指定するネクストアドレスＮＡと、ページＰ１へのデータ書込時点でのタイムスタンプＴＳとが書き込まれている。一方、データ書込が行われていないページＰ４，Ｐ５は、消去状態であるため、ネクストアドレスＮＡもタイムスタンプＴＳも書き込まれていない。また、書込未完了ページであるページＰ３は、消去状態と同じく、ネクストアドレスＮＡもタイムスタンプＴＳも書き込まれていないように見える。
【００３３】
半導体記憶装置が再起動されると、まず制御部１は、ブロック内の全ページのうちデータ書込が完了した最終ページを特定する。具体的には、タイムスタンプＴＳが書き込まれている全てのページのうち、タイムスタンプＴＳの値が最大値であるページ（つまり最新の経時情報が書き込まれているページ）を、最終書込完了ページとして特定する。この例では、ページＰ２が最終書込完了ページとして特定される。
【００３４】
次に制御部１は、最終書込完了ページに書き込まれているネクストアドレスＮＡに基づいて、最終書込完了ページの次の書込対象ページを特定する。この例では、ページＰ２にはページＰ３の物理アドレスがネクストアドレスＮＡとして書き込まれているため、最終書込完了ページの次の書込対象ページとしてページＰ３が特定される。
【００３５】
次に制御部１は、乱数生成器１４から出力される乱数を用いて無効データを生成し、最終書込完了ページの次の書込対象ページに当該無効データを書き込む。これにより、最終書込完了ページの次の書込対象ページを無効化する。この例では、ページＰ３が無効化される。そして制御部１は、無効化ページの次の書込対象ページからデータ書込を再開する。この例では、ページＰ４からデータ書込が再開される。つまり、本来はページＰ３に書き込まれるはずのデータが、ページＰ４に書き込まれることとなる。
【００３６】
なお、乱数を用いて無効データを生成する代わりに、例えばＡＬＬ  ００ｈの無効データを用いても良い。
【００３７】
また、無効化するページ数は１ページに限らず、最終書込完了ページの次以降の複数ページを無効化しても良い。例えば、ＳＬＣの場合には最終書込完了ページの次の１ページを無効化し、ＭＬＣの場合には最終書込完了ページの次のページと、当該ページに物理的に連続する１ページ（合計２ページ）とを無効化する。また、ＭＬＣの場合には、最終書込完了ページの次の書込対象ページ（つまり書込未完了ページとなっている可能性があるページ）をデコードし、当該ページが下位ページ（lower page）であれば、最終書込完了ページの次の１ページを無効化し、上位ページ（upper page）であれば、最終書込完了ページの次のページと、当該ページに物理的に連続する３又は５ページ（合計４又は６ページ）とを無効化する。
【００３８】
図４は、制御部１が実行する起動処理の流れを具体的に示すフローチャートである。ステップＳ１０１では、現在使用中のブロックのリストが管理ブロックから読み出され、ブロック数や各ブロックの物理ブロックアドレス等のブロック条件が設定される。ステップＳ１０２〜Ｓ１１３では、全てのブロックに関して処理が行われるまで、ブロック番号をインクリメントしながらブロックループが繰り返される。ステップＳ１０３では、１ブロック内のページ数等のページ条件が設定される。ステップＳ１０４では、ＮＡレジスタ２１及びＴＳレジスタ２２の初期値が設定される。ＮＡレジスタ２１の初期値としては例えば「０ｘＦＦＦＦＦＦ」が設定され、ＴＳレジスタ２２の初期値としては例えば「０」が設定される。ステップＳ１０５〜Ｓ１１０では、全てのページに関して処理が行われるまで、ページ番号をデクリメントしながらページループが繰り返される。ステップＳ１０６では、対象ページに書き込まれている全データがメモリアレイ２から読み出される。対象ページの読出データは、メモリコントローラ１１、判定回路１２、及びＥＣＣ回路１３に入力される。ステップＳ１０７では、読出データが完全消去状態（ＡＬＬ  ＦＦｈ）であるか否かが、判定回路１２によって判定される。なお、完全消去状態でなくても、読出データに含まれる「０」のビット数が所定値未満である場合には、消去状態であると判定しても良い。ステップＳ１０７の判定結果が「Ｎｏ」である場合には、ステップＳ１０８で、読出データにＥＣＣフェイルが生じているか否かが、ＥＣＣ回路１３によって判定される。ステップＳ１０８の判定結果が「Ｎｏ」である場合には、ステップＳ１０９で、読出データに含まれているタイムスタンプＴＳ（以下「ｔｍｐ  ＴＳ」）及びネクストアドレスＮＡ（以下「ｔｍｐ  ＮＡ」）が取得される。ステップＳ１１１では、ＴＳレジスタ２２の現在値がｔｍｐ  ＴＳ未満であるか否かが判定される。ステップＳ１１１の判定結果が「Ｙｅｓ」である場合には、ステップＳ１１２で、ＴＳレジスタ２２の現在値がｔｍｐ  ＴＳの値に更新され、ＮＡレジスタ２１の現在値がｔｍｐ  ＮＡの値に更新される。
【００３９】
なお、ステップＳ１０７の判定結果が「Ｙｅｓ」である場合には、ステップＳ１１５で、対象ページが先頭ページであるか否かが判定される。ステップＳ１１５の判定結果が「Ｙｅｓ」である場合には、ステップＳ１１６で、ｔｍｐ  ＴＳの値が例えば「０」に設定され、ｔｍｐ  ＮＡの値が例えば「０ｘＦＦＦＦＦＦ」に設定される。また、ステップＳ１０８の判定結果が「Ｙｅｓ」である場合には、ステップＳ１１７でガベージコレクションが実行される。
【００４０】
以上の処理によって、最終的にＮＡレジスタ２１に設定されているネクストアドレスＮＡとして、最終書込完了ページの次の書込対象ページ（つまり書込未完了ページとなっている可能性があるページ）の物理ページアドレスが取得される。そして、ステップＳ１１４で、最終書込完了ページの次の書込対象ページが無効化される。
【００４１】
このように本実施の形態に係る半導体記憶装置によれば、制御部１は、電源起動時に、ブロック内の全ページのうちデータ書込が完了した最終ページ（以下「第１ページ」）を特定する。また、第１ページに書き込まれているアドレス情報に基づいて、第１ページの次の書込対象ページ（以下「第２ページ」）を特定する。また、第２ページを無効化して、第２ページより後の書込対象ページ（以下「第３ページ」）に対してデータ書込を行う。このように、データの書込途中の電源遮断に起因して書込未完了ページとなっている可能性がある第２ページを常に無効化し、第２ページより後の書込対象ページである第３ページからデータ書込を再開することにより、第２ページが書込未完了ページであるか完全消去ページであるかの検証が不要となる。その結果、検証のために読出データと期待値とを比較する処理を省略できるため、装置全体として回路規模及び起動処理の所要時間を削減することが可能となる。また、検証のために期待値を保持しておく必要もないため、管理ブロックに限らずユーザデータブロック等の任意のブロックに対して本発明を適用することが可能となる。さらに、制御部１は、データ書込時に、書込対象ページに対して、書込データと、当該書込対象ページの次の書込対象ページを指定するアドレス情報とを書き込む。このように、データ書込時にアドレス情報を書込データに付加しておき、電源起動時にアドレス情報を参照することにより、制御部１は、書込未完了ページとなっている可能性がある第２ページを簡易に特定することが可能となる。
【００４２】
また、本実施の形態に係る半導体記憶装置によれば、制御部１は、データ書込時に、書込対象ページに対して、ページ毎に更新される経時情報を書き込み、電源起動時に、ブロック内の全ページのうち最新の経時情報が書き込まれているページを、第１ページとして特定する。このように、データ書込時に経時情報を書込データに付加しておき、電源起動時に経時情報を参照することにより、制御部１は、データ書込が完了した最終ページである第１ページを簡易に特定することが可能となる。
【００４３】
また、本実施の形態に係る半導体記憶装置によれば、アドレス情報は、ブロックアドレスとページアドレスとを含む。従って、物理アドレスが連続する複数のページに対してシーケンシャルにデータ書込を行う場合のみならず、ブロックやページの物理アドレスが連続しない複数のページに対してランダムにデータ書込を行う場合であっても、本発明を適用することが可能となる。
【００４４】
＜実施の形態２＞
以下、上記実施の形態１との相違点を中心に、本発明の実施の形態２に係る半導体記憶装置について説明する。
【００４５】
図５は、本発明の実施の形態２に係る半導体記憶装置の全体構成を簡略化して示す図である。上記実施の形態１と比較して、メモリコントローラ１１からＴＳレジスタ２２及びカウンタ２３が省略されている。
【００４６】
図６は、メモリコントローラ１１からメモリアレイ２に書き込まれるデータを示す図である。上記実施の形態１と比較して、タイムスタンプＴＳの付加が省略されている。
【００４７】
本実施の形態２は、最終書込完了ページを特定する手法が、上記実施の形態１と相違する。
【００４８】
制御部１が実行する起動処理の概要は、図３と同様である。図３の例では、ページＰ３へのデータ書込の途中で電源遮断が発生したことにより、ページＰ３が書込未完了ページとなっている。また、ページＰ０〜Ｐ２へのデータ書込は完了しているため、これらのページＰ０〜Ｐ２にはネクストアドレスＮＡが書き込まれている。例えば、ページＰ０には、ページＰ１の物理アドレスを指定するネクストアドレスＮＡが書き込まれており、ページＰ１には、ページＰ２の物理アドレスを指定するネクストアドレスＮＡが書き込まれている。一方、データ書込が行われていないページＰ４，Ｐ５は、消去状態であるため、ネクストアドレスＮＡは書き込まれていない。また、書込未完了ページであるページＰ３は、消去状態と同じく、ネクストアドレスＮＡが書き込まれていないように見える。
【００４９】
半導体記憶装置が再起動されると、まず制御部１は、ブロック内の全ページのうちデータ書込が完了した最終ページを特定する。具体的には、所定の起点ページからネクストアドレスＮＡを辿るページ探索を行うことにより、ネクストアドレスＮＡが書き込まれている最終ページを、最終書込完了ページとして特定する。起点ページとしては、前回のガベージコレクションの後にデータ書込が最初に行われたページが起点ページとして設定され、起点ページの物理アドレスはメモリアレイ２の管理ブロック内に保存されている。図３の例では、起点ページであるページＰ０に書き込まれているネクストアドレスＮＡによって次のページＰ１が特定され、ページＰ１に書き込まれているネクストアドレスＮＡによって次のページＰ２が特定され、ページＰ２に書き込まれているネクストアドレスＮＡによって次のページＰ３が特定される。そして、ページＰ３にはネクストアドレスＮＡが書き込まれていないため、ネクストアドレスＮＡが書き込まれている最終ページはページＰ２となり、その結果、ページＰ２が最終書込完了ページとして特定される。
【００５０】
以降の処理は上記実施の形態１と同様である。次に制御部１は、最終書込完了ページに書き込まれているネクストアドレスＮＡに基づいて、最終書込完了ページの次の書込対象ページを特定する。
【００５１】
次に制御部１は、乱数生成器１４から出力される乱数を用いて無効データを生成し、最終書込完了ページの次の書込対象ページに当該無効データを書き込む。これにより、最終書込完了ページの次の書込対象ページを無効化する。そして制御部１は、無効化ページの次の書込対象ページからデータ書込を再開する。
【００５２】
図７は、制御部１が実行する起動処理の流れを具体的に示すフローチャートである。ステップＳ２０１では、メモリアレイ２の管理ブロックから管理情報が読み出される。ステップＳ２０２では、管理情報から起点ページの物理アドレス（以下「起点アドレス」）が取得される。ステップＳ２０３では、ＮＡレジスタ２１の初期値が設定される。ＮＡレジスタ２１の初期値としては起点アドレスが設定される。ステップＳ２０４〜Ｓ２１０では、読出データが完全消去状態（ＡＬＬ  ＦＦｈ）であるページが出現するまで、ページ番号を更新しながらページループが繰り返される。ステップＳ２０５では、対象ページに書き込まれている全データがメモリアレイ２から読み出される。ステップＳ２０６では、読出データが完全消去状態（ＡＬＬ  ＦＦｈ）であるか否かが判定される。ステップＳ２０６の判定結果が「Ｎｏ」である場合には、ステップＳ２０７で、読出データにＥＣＣフェイルが生じているか否かが判定される。ステップＳ２０７の判定結果が「Ｎｏ」である場合には、ステップＳ２０８で、読出データに含まれているネクストアドレスＮＡ（ｔｍｐ  ＮＡ）が取得される。ステップＳ２０９では、ＮＡレジスタ２１の現在値がｔｍｐ  ＮＡの値に更新される。なお、ステップＳ２０７の判定結果が「Ｙｅｓ」である場合には、ステップＳ２１２でガベージコレクションが実行される。
【００５３】
以上の処理によって、最終的にＮＡレジスタ２１に設定されているネクストアドレスＮＡとして、最終書込完了ページの次の書込対象ページ（つまり書込未完了ページとなっている可能性があるページ）の物理ページアドレスが取得される。そして、ステップＳ２１１で、最終書込完了ページの次の書込対象ページが無効化される。
【００５４】
このように本実施の形態に係る半導体記憶装置によれば、制御部１は、電源起動時に、所定の起点ページからアドレス情報を辿るページ探索を行うことにより、アドレス情報が書き込まれている最終ページを、第１ページとして特定する。このように、データ書込時にアドレス情報を書込データに付加しておき、電源起動時にアドレス情報を辿るページ探索を行うことにより、制御部１は、データ書込が完了した最終ページである第１ページを簡易に特定することが可能となる。
【００５５】
＜変形例＞
制御部１は、起動処理内で読出データにＥＣＣフェイルが発生している場合のみならず、起動処理以外の所定のタイミング（例えば、データ書込時にカウンタ２３のカウンタ値が最大値になった時点）でガベージコレクションを実行しても良い。ガベージコレクションを実行することにより、それまでに蓄積された無効化ページに対して消去状態のデータが書き込まれる。その結果、ガベージコレクションの実行後は無効化ページを再利用できるため、無効化ページの蓄積に起因して利用可能なページ数が削減されることを、回避することが可能となる。
【符号の説明】
【００５６】
１  制御部
２  メモリアレイ
１１  メモリコントローラ
１２  判定回路
１３  ＥＣＣ回路
【図１】
2015191567.tif 000003
【図２】
2015191567.tif 000004
【図３】
2015191567.tif 000005
【図４】
2015191567.tif 000006
【図５】
2015191567.tif 000007
【図６】
2015191567.tif 000008
【図７】
2015191567.tif 000009