【解決手段】制御部1は、電源起動時に、ブロック内の全ページのうちデータ書込が完了した最終ページ(第1ページ)を特定する。また、第1ページに書き込まれているアドレス情報に基づいて、第1ページの次の書込対象ページ(第2ページ)を特定する。また、第2ページを無効化して、第2ページより後の書込対象ページ(第3ページ)に対してデータ書込を行う。
前記制御部は、電源起動時に、所定の起点ページからアドレス情報を辿るページ探索を行うことにより、アドレス情報が書き込まれている最終ページを、第1ページとして特定する、請求項1に記載の半導体記憶装置。
前記制御部は、所定のタイミングでガベージコレクションを実行することにより、第2ページとして無効化されているページに対して消去状態のデータを書き込む、請求項1〜4のいずれか一つに記載の半導体記憶装置。
【発明の概要】
【発明が解決しようとする課題】
【0005】
上述したように、上記特許文献1に開示されたメモリシステムによると、最終管理ページの次ページが消去状態である場合には、当該次ページにデータを書き込み、その後、当該次ページからデータを読み出して、読出データが期待値に一致するか否かのベリファイを行う。
【0006】
従って、期待値を保持しておくための保持回路や、読出データと期待値とを比較するための比較回路が必要となって、システム全体として回路規模が増大する。また、次ページが消去状態であるか否かの判定と、読出データが期待値に一致するか否かのベリファイとの二段階の処理が行われ、処理内容が複雑であるため、起動処理の所要時間が増大する。さらに、一般的にベリファイを行うためには期待値を保持しておく必要があるが、管理情報に比べてユーザデータはデータ量が膨大であり、全てのユーザデータに関する期待値を保持しておくことは現実的でない。そのため、上記特許文献1に開示されたメモリシステムの適用対象は管理ブロックに限定されると考えられる。
【0007】
本発明はかかる問題を解決するために成されたものであり、回路規模及び起動処理の所要時間を削減できるとともに、管理ブロックに限らず任意のブロックに適用することが可能な半導体記憶装置を得ることを目的とするものである。
【課題を解決するための手段】
【0008】
本発明の第1の態様に係る半導体記憶装置は、データの書込単位である複数のページを含むブロックを有する記憶部と、前記記憶部を制御する制御部と、を備え、前記制御部は、データ書込時に、書込対象ページに対して、書込データと、当該書込対象ページの次の書込対象ページを指定するアドレス情報とを書き込み、電源起動時に、ブロック内の全ページのうちデータ書込が完了した最終ページである第1ページを特定し、第1ページに書き込まれているアドレス情報に基づいて、第1ページの次の書込対象ページである第2ページを特定し、第2ページを無効化して、第2ページより後の書込対象ページである第3ページに対してデータ書込を行うことを特徴とするものである。
【0009】
第1の態様に係る半導体記憶装置によれば、制御部は、電源起動時に、ブロック内の全ページのうちデータ書込が完了した最終ページである第1ページを特定し、第1ページに書き込まれているアドレス情報に基づいて、第1ページの次の書込対象ページである第2ページを特定し、第2ページを無効化して、第2ページより後の書込対象ページである第3ページに対してデータ書込を行う。このように、データの書込途中の電源遮断に起因して書込未完了ページとなっている可能性がある第2ページを常に無効化し、第2ページより後の書込対象ページである第3ページからデータ書込を再開することにより、第2ページが書込未完了ページであるか完全消去ページであるかの検証が不要となる。その結果、検証のために読出データと期待値とを比較する処理を省略できるため、装置全体として回路規模及び起動処理の所要時間を削減することが可能となる。また、検証のために期待値を保持しておく必要もないため、管理ブロックに限らずユーザデータブロック等の任意のブロックに対して本発明を適用することが可能となる。さらに、制御部は、データ書込時に、書込対象ページに対して、書込データと、当該書込対象ページの次の書込対象ページを指定するアドレス情報とを書き込む。このように、データ書込時にアドレス情報を書込データに付加しておき、電源起動時にアドレス情報を参照することにより、制御部は、書込未完了ページとなっている可能性がある第2ページを簡易に特定することが可能となる。
【0010】
本発明の第2の態様に係る半導体記憶装置は、第1の態様に係る半導体記憶装置において特に、前記制御部は、データ書込時に、書込対象ページに対して、ページ毎に更新される経時情報をさらに書き込み、電源起動時に、ブロック内の全ページのうち最新の経時情報が書き込まれているページを、第1ページとして特定することを特徴とするものである。
【0011】
第2の態様に係る半導体記憶装置によれば、制御部は、データ書込時に、書込対象ページに対して、ページ毎に更新される経時情報を書き込み、電源起動時に、ブロック内の全ページのうち最新の経時情報が書き込まれているページを、第1ページとして特定する。このように、データ書込時に経時情報を書込データに付加しておき、電源起動時に経時情報を参照することにより、制御部は、データ書込が完了した最終ページである第1ページを簡易に特定することが可能となる。
【0012】
本発明の第3の態様に係る半導体記憶装置は、第1の態様に係る半導体記憶装置において特に、前記制御部は、電源起動時に、所定の起点ページからアドレス情報を辿るページ探索を行うことにより、アドレス情報が書き込まれている最終ページを、第1ページとして特定することを特徴とするものである。
【0013】
第3の態様に係る半導体記憶装置によれば、制御部は、電源起動時に、所定の起点ページからアドレス情報を辿るページ探索を行うことにより、アドレス情報が書き込まれている最終ページを、第1ページとして特定する。このように、データ書込時にアドレス情報を書込データに付加しておき、電源起動時にアドレス情報を辿るページ探索を行うことにより、制御部は、データ書込が完了した最終ページである第1ページを簡易に特定することが可能となる。
【0014】
本発明の第4の態様に係る半導体記憶装置は、第1〜第3のいずれか一つの態様に係る半導体記憶装置において特に、アドレス情報は、ブロックアドレスとページアドレスとを含むことを特徴とするものである。
【0015】
第4の態様に係る半導体記憶装置によれば、アドレス情報は、ブロックアドレスとページアドレスとを含む。従って、物理アドレスが連続する複数のページに対してシーケンシャルにデータ書込を行う場合のみならず、ブロックやページの物理アドレスが連続しない複数のページに対してランダムにデータ書込を行う場合であっても、本発明を適用することが可能となる。
【0016】
本発明の第5の態様に係る半導体記憶装置は、第1〜第4のいずれか一つの態様に係る半導体記憶装置において特に、前記制御部は、所定のタイミングでガベージコレクションを実行することにより、第2ページとして無効化されているページに対して消去状態のデータを書き込むことを特徴とするものである。
【0017】
第5の態様に係る半導体記憶装置によれば、制御部は、所定のタイミングでガベージコレクションを実行することにより、第2ページとして無効化されているページに対して消去状態のデータを書き込む。その結果、ガベージコレクションの実行後は第2ページを再利用できるため、第2ページの蓄積に起因して利用可能なページ数が削減されることを、回避することが可能となる。
【発明の効果】
【0018】
本発明によれば、回路規模及び起動処理の所要時間を削減できるとともに、管理ブロックに限らず任意のブロックに適用することが可能な半導体記憶装置を得ることができる。
【発明を実施するための形態】
【0020】
以下、本発明の実施の形態について、図面を用いて詳細に説明する。なお、異なる図面において同一の符号を付した要素は、同一又は相応する要素を示すものとする。
【0021】
<実施の形態1>
図1は、本発明の実施の形態1に係る半導体記憶装置の全体構成を簡略化して示す図である。
図1の接続関係で示すように、半導体記憶装置は、NAND型フラッシュメモリ等の不揮発性メモリを用いたメモリアレイ2と、メモリアレイ2に対するアクセスを制御する制御部1とを備えて構成されている。
【0022】
制御部1は、メモリコントローラ11、判定回路12、ECC回路13、及び乱数生成器14を備えて構成されている。メモリコントローラ11は、その内部に、NAレジスタ21、TSレジスタ22、及びカウンタ23を有している。
【0023】
メモリアレイ2は、データの消去単位である複数のブロックを有している。ブロックには、管理情報が格納される管理ブロックと、ユーザデータが格納されるユーザデータブロックとが含まれる。各ブロックは、データの書込単位及び読出単位である複数のページによって構成されている。
【0024】
メモリコントローラ11には、外部のホスト装置からメモリアレイ2へのアクセス要求が入力される。書込要求が入力された場合、メモリコントローラ11は、書込要求に含まれる書込データを、指定ブロックの指定ページに書き込む。
【0025】
図2は、メモリコントローラ11からメモリアレイ2に書き込まれるデータを示す図である。メモリコントローラ11は、書込データの末尾に、ネクストアドレスNAとタイムスタンプTSとを付加したデータを、メモリアレイ2に書き込む。書込データは、所定バイト(例えば1024バイト)のユーザデータ(又は管理情報)と、当該ユーザデータ(又は管理情報)に関する所定バイト(例えば42バイト)のECCシンドロームとのセットが、複数セット繰り返されたデータ構造を有している。
【0026】
同一又は別ブロック内の複数のページに跨がるデータを書き込む場合、メモリコントローラ11は、書込対象である複数ページの物理アドレス、及び当該複数ページへの書込順序を管理している。ある書込対象ページにデータを書き込む場合、メモリコントローラ11は、その書込対象ページに書き込む書込データの末尾に、当該書込対象ページの次の書込対象ページを指定するアドレス情報を、ネクストアドレスNAとして付加する。ネクストアドレスNAは、所定バイト(例えば2バイト)の物理ブロックアドレスと、所定バイト(例えば1バイト)の物理ページアドレスとを含む。
【0027】
また、メモリコントローラ11は、書込対象ページへのデータ書込が完了する毎に、カウンタ23のカウンタ値をインクリメントする。カウンタ23は、経時情報として所定バイト(例えば3バイト)のカウンタ値を出力するサイクリックカウンタである。メモリコントローラ11は、ある書込対象ページにデータを書き込む場合、その書込対象ページに書き込む書込データの末尾に、その時点でのカウンタ23のカウンタ値を、タイムスタンプTSとして付加する。
【0028】
以下、半導体記憶装置の電源起動時に制御部1が実行する起動処理について説明する。
【0029】
NAND型フラッシュメモリを用いた不揮発性メモリにおいて、メモリアレイにデータを書き込んでいる途中で電源遮断が発生した場合には、再起動後に書込未完了ページのデータを読み出した際に、途中までのデータが書き込まれているにも拘わらず、書込未完了ページがあたかも消去ページ(ALL FFh)のように見えることがある。そして、消去状態と判断して再起動後に書込未完了ページにデータを書き込むと、当該ページにデータを正しく書き込めず、書込データが破損又は消失してデータの信頼性が低下する場合がある。
【0030】
そこで、書込未完了ページとなっている可能性があるページの使用を事前に回避してデータの信頼性を向上すべく、制御部1は、半導体記憶装置の電源起動時に以下のような起動処理を実行する。
【0031】
図3は、制御部1が実行する起動処理の概要を示す図である。ここでは、ページP0→P1→P2→P3→P4→P5の順にデータ書込が行われる状況を想定している。メモリコントローラ11は、書込対象であるページP0〜P5の物理アドレス、及びページP0〜P5への書込順序を管理している。ページP0〜P5は、同一ブロック内のページであっても良いし、別ブロック内のページであっても良い。また、必ずしも物理ページアドレスが連続している必要もない。
【0032】
この例では、ページP3へのデータ書込の途中で電源遮断が発生したことにより、ページP3が書込未完了ページとなっている。また、ページP0〜P2へのデータ書込は完了しているため、これらのページP0〜P2にはネクストアドレスNA及びタイムスタンプTSが書き込まれている。例えば、ページP0には、ページP1の物理アドレスを指定するネクストアドレスNAと、ページP0へのデータ書込時点でのタイムスタンプTSとが書き込まれており、ページP1には、ページP2の物理アドレスを指定するネクストアドレスNAと、ページP1へのデータ書込時点でのタイムスタンプTSとが書き込まれている。一方、データ書込が行われていないページP4,P5は、消去状態であるため、ネクストアドレスNAもタイムスタンプTSも書き込まれていない。また、書込未完了ページであるページP3は、消去状態と同じく、ネクストアドレスNAもタイムスタンプTSも書き込まれていないように見える。
【0033】
半導体記憶装置が再起動されると、まず制御部1は、ブロック内の全ページのうちデータ書込が完了した最終ページを特定する。具体的には、タイムスタンプTSが書き込まれている全てのページのうち、タイムスタンプTSの値が最大値であるページ(つまり最新の経時情報が書き込まれているページ)を、最終書込完了ページとして特定する。この例では、ページP2が最終書込完了ページとして特定される。
【0034】
次に制御部1は、最終書込完了ページに書き込まれているネクストアドレスNAに基づいて、最終書込完了ページの次の書込対象ページを特定する。この例では、ページP2にはページP3の物理アドレスがネクストアドレスNAとして書き込まれているため、最終書込完了ページの次の書込対象ページとしてページP3が特定される。
【0035】
次に制御部1は、乱数生成器14から出力される乱数を用いて無効データを生成し、最終書込完了ページの次の書込対象ページに当該無効データを書き込む。これにより、最終書込完了ページの次の書込対象ページを無効化する。この例では、ページP3が無効化される。そして制御部1は、無効化ページの次の書込対象ページからデータ書込を再開する。この例では、ページP4からデータ書込が再開される。つまり、本来はページP3に書き込まれるはずのデータが、ページP4に書き込まれることとなる。
【0036】
なお、乱数を用いて無効データを生成する代わりに、例えばALL 00hの無効データを用いても良い。
【0037】
また、無効化するページ数は1ページに限らず、最終書込完了ページの次以降の複数ページを無効化しても良い。例えば、SLCの場合には最終書込完了ページの次の1ページを無効化し、MLCの場合には最終書込完了ページの次のページと、当該ページに物理的に連続する1ページ(合計2ページ)とを無効化する。また、MLCの場合には、最終書込完了ページの次の書込対象ページ(つまり書込未完了ページとなっている可能性があるページ)をデコードし、当該ページが下位ページ(lower page)であれば、最終書込完了ページの次の1ページを無効化し、上位ページ(upper page)であれば、最終書込完了ページの次のページと、当該ページに物理的に連続する3又は5ページ(合計4又は6ページ)とを無効化する。
【0038】
図4は、制御部1が実行する起動処理の流れを具体的に示すフローチャートである。ステップS101では、現在使用中のブロックのリストが管理ブロックから読み出され、ブロック数や各ブロックの物理ブロックアドレス等のブロック条件が設定される。ステップS102〜S113では、全てのブロックに関して処理が行われるまで、ブロック番号をインクリメントしながらブロックループが繰り返される。ステップS103では、1ブロック内のページ数等のページ条件が設定される。ステップS104では、NAレジスタ21及びTSレジスタ22の初期値が設定される。NAレジスタ21の初期値としては例えば「0xFFFFFF」が設定され、TSレジスタ22の初期値としては例えば「0」が設定される。ステップS105〜S110では、全てのページに関して処理が行われるまで、ページ番号をデクリメントしながらページループが繰り返される。ステップS106では、対象ページに書き込まれている全データがメモリアレイ2から読み出される。対象ページの読出データは、メモリコントローラ11、判定回路12、及びECC回路13に入力される。ステップS107では、読出データが完全消去状態(ALL FFh)であるか否かが、判定回路12によって判定される。なお、完全消去状態でなくても、読出データに含まれる「0」のビット数が所定値未満である場合には、消去状態であると判定しても良い。ステップS107の判定結果が「No」である場合には、ステップS108で、読出データにECCフェイルが生じているか否かが、ECC回路13によって判定される。ステップS108の判定結果が「No」である場合には、ステップS109で、読出データに含まれているタイムスタンプTS(以下「tmp TS」)及びネクストアドレスNA(以下「tmp NA」)が取得される。ステップS111では、TSレジスタ22の現在値がtmp TS未満であるか否かが判定される。ステップS111の判定結果が「Yes」である場合には、ステップS112で、TSレジスタ22の現在値がtmp TSの値に更新され、NAレジスタ21の現在値がtmp NAの値に更新される。
【0039】
なお、ステップS107の判定結果が「Yes」である場合には、ステップS115で、対象ページが先頭ページであるか否かが判定される。ステップS115の判定結果が「Yes」である場合には、ステップS116で、tmp TSの値が例えば「0」に設定され、tmp NAの値が例えば「0xFFFFFF」に設定される。また、ステップS108の判定結果が「Yes」である場合には、ステップS117でガベージコレクションが実行される。
【0040】
以上の処理によって、最終的にNAレジスタ21に設定されているネクストアドレスNAとして、最終書込完了ページの次の書込対象ページ(つまり書込未完了ページとなっている可能性があるページ)の物理ページアドレスが取得される。そして、ステップS114で、最終書込完了ページの次の書込対象ページが無効化される。
【0041】
このように本実施の形態に係る半導体記憶装置によれば、制御部1は、電源起動時に、ブロック内の全ページのうちデータ書込が完了した最終ページ(以下「第1ページ」)を特定する。また、第1ページに書き込まれているアドレス情報に基づいて、第1ページの次の書込対象ページ(以下「第2ページ」)を特定する。また、第2ページを無効化して、第2ページより後の書込対象ページ(以下「第3ページ」)に対してデータ書込を行う。このように、データの書込途中の電源遮断に起因して書込未完了ページとなっている可能性がある第2ページを常に無効化し、第2ページより後の書込対象ページである第3ページからデータ書込を再開することにより、第2ページが書込未完了ページであるか完全消去ページであるかの検証が不要となる。その結果、検証のために読出データと期待値とを比較する処理を省略できるため、装置全体として回路規模及び起動処理の所要時間を削減することが可能となる。また、検証のために期待値を保持しておく必要もないため、管理ブロックに限らずユーザデータブロック等の任意のブロックに対して本発明を適用することが可能となる。さらに、制御部1は、データ書込時に、書込対象ページに対して、書込データと、当該書込対象ページの次の書込対象ページを指定するアドレス情報とを書き込む。このように、データ書込時にアドレス情報を書込データに付加しておき、電源起動時にアドレス情報を参照することにより、制御部1は、書込未完了ページとなっている可能性がある第2ページを簡易に特定することが可能となる。
【0042】
また、本実施の形態に係る半導体記憶装置によれば、制御部1は、データ書込時に、書込対象ページに対して、ページ毎に更新される経時情報を書き込み、電源起動時に、ブロック内の全ページのうち最新の経時情報が書き込まれているページを、第1ページとして特定する。このように、データ書込時に経時情報を書込データに付加しておき、電源起動時に経時情報を参照することにより、制御部1は、データ書込が完了した最終ページである第1ページを簡易に特定することが可能となる。
【0043】
また、本実施の形態に係る半導体記憶装置によれば、アドレス情報は、ブロックアドレスとページアドレスとを含む。従って、物理アドレスが連続する複数のページに対してシーケンシャルにデータ書込を行う場合のみならず、ブロックやページの物理アドレスが連続しない複数のページに対してランダムにデータ書込を行う場合であっても、本発明を適用することが可能となる。
【0044】
<実施の形態2>
以下、上記実施の形態1との相違点を中心に、本発明の実施の形態2に係る半導体記憶装置について説明する。
【0045】
図5は、本発明の実施の形態2に係る半導体記憶装置の全体構成を簡略化して示す図である。上記実施の形態1と比較して、メモリコントローラ11からTSレジスタ22及びカウンタ23が省略されている。
【0046】
図6は、メモリコントローラ11からメモリアレイ2に書き込まれるデータを示す図である。上記実施の形態1と比較して、タイムスタンプTSの付加が省略されている。
【0047】
本実施の形態2は、最終書込完了ページを特定する手法が、上記実施の形態1と相違する。
【0048】
制御部1が実行する起動処理の概要は、
図3と同様である。
図3の例では、ページP3へのデータ書込の途中で電源遮断が発生したことにより、ページP3が書込未完了ページとなっている。また、ページP0〜P2へのデータ書込は完了しているため、これらのページP0〜P2にはネクストアドレスNAが書き込まれている。例えば、ページP0には、ページP1の物理アドレスを指定するネクストアドレスNAが書き込まれており、ページP1には、ページP2の物理アドレスを指定するネクストアドレスNAが書き込まれている。一方、データ書込が行われていないページP4,P5は、消去状態であるため、ネクストアドレスNAは書き込まれていない。また、書込未完了ページであるページP3は、消去状態と同じく、ネクストアドレスNAが書き込まれていないように見える。
【0049】
半導体記憶装置が再起動されると、まず制御部1は、ブロック内の全ページのうちデータ書込が完了した最終ページを特定する。具体的には、所定の起点ページからネクストアドレスNAを辿るページ探索を行うことにより、ネクストアドレスNAが書き込まれている最終ページを、最終書込完了ページとして特定する。起点ページとしては、前回のガベージコレクションの後にデータ書込が最初に行われたページが起点ページとして設定され、起点ページの物理アドレスはメモリアレイ2の管理ブロック内に保存されている。
図3の例では、起点ページであるページP0に書き込まれているネクストアドレスNAによって次のページP1が特定され、ページP1に書き込まれているネクストアドレスNAによって次のページP2が特定され、ページP2に書き込まれているネクストアドレスNAによって次のページP3が特定される。そして、ページP3にはネクストアドレスNAが書き込まれていないため、ネクストアドレスNAが書き込まれている最終ページはページP2となり、その結果、ページP2が最終書込完了ページとして特定される。
【0050】
以降の処理は上記実施の形態1と同様である。次に制御部1は、最終書込完了ページに書き込まれているネクストアドレスNAに基づいて、最終書込完了ページの次の書込対象ページを特定する。
【0051】
次に制御部1は、乱数生成器14から出力される乱数を用いて無効データを生成し、最終書込完了ページの次の書込対象ページに当該無効データを書き込む。これにより、最終書込完了ページの次の書込対象ページを無効化する。そして制御部1は、無効化ページの次の書込対象ページからデータ書込を再開する。
【0052】
図7は、制御部1が実行する起動処理の流れを具体的に示すフローチャートである。ステップS201では、メモリアレイ2の管理ブロックから管理情報が読み出される。ステップS202では、管理情報から起点ページの物理アドレス(以下「起点アドレス」)が取得される。ステップS203では、NAレジスタ21の初期値が設定される。NAレジスタ21の初期値としては起点アドレスが設定される。ステップS204〜S210では、読出データが完全消去状態(ALL FFh)であるページが出現するまで、ページ番号を更新しながらページループが繰り返される。ステップS205では、対象ページに書き込まれている全データがメモリアレイ2から読み出される。ステップS206では、読出データが完全消去状態(ALL FFh)であるか否かが判定される。ステップS206の判定結果が「No」である場合には、ステップS207で、読出データにECCフェイルが生じているか否かが判定される。ステップS207の判定結果が「No」である場合には、ステップS208で、読出データに含まれているネクストアドレスNA(tmp NA)が取得される。ステップS209では、NAレジスタ21の現在値がtmp NAの値に更新される。なお、ステップS207の判定結果が「Yes」である場合には、ステップS212でガベージコレクションが実行される。
【0053】
以上の処理によって、最終的にNAレジスタ21に設定されているネクストアドレスNAとして、最終書込完了ページの次の書込対象ページ(つまり書込未完了ページとなっている可能性があるページ)の物理ページアドレスが取得される。そして、ステップS211で、最終書込完了ページの次の書込対象ページが無効化される。
【0054】
このように本実施の形態に係る半導体記憶装置によれば、制御部1は、電源起動時に、所定の起点ページからアドレス情報を辿るページ探索を行うことにより、アドレス情報が書き込まれている最終ページを、第1ページとして特定する。このように、データ書込時にアドレス情報を書込データに付加しておき、電源起動時にアドレス情報を辿るページ探索を行うことにより、制御部1は、データ書込が完了した最終ページである第1ページを簡易に特定することが可能となる。
【0055】
<変形例>
制御部1は、起動処理内で読出データにECCフェイルが発生している場合のみならず、起動処理以外の所定のタイミング(例えば、データ書込時にカウンタ23のカウンタ値が最大値になった時点)でガベージコレクションを実行しても良い。ガベージコレクションを実行することにより、それまでに蓄積された無効化ページに対して消去状態のデータが書き込まれる。その結果、ガベージコレクションの実行後は無効化ページを再利用できるため、無効化ページの蓄積に起因して利用可能なページ数が削減されることを、回避することが可能となる。