(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024039302
(43)【公開日】2024-03-22
(54)【発明の名称】メモリシステムおよびブロック管理方法
(51)【国際特許分類】
G06F 12/02 20060101AFI20240314BHJP
G06F 12/00 20060101ALI20240314BHJP
【FI】
G06F12/02 510A
G06F12/00 597U
【審査請求】未請求
【請求項の数】17
【出願形態】OL
(21)【出願番号】P 2022143752
(22)【出願日】2022-09-09
(71)【出願人】
【識別番号】318010018
【氏名又は名称】キオクシア株式会社
(74)【代理人】
【識別番号】110001737
【氏名又は名称】弁理士法人スズエ国際特許事務所
(72)【発明者】
【氏名】中西 悠
(72)【発明者】
【氏名】檜田 和浩
【テーマコード(参考)】
5B160
【Fターム(参考)】
5B160AA10
5B160AA14
5B160NA03
(57)【要約】
【課題】NANDメモリのブロックの管理情報を管理する負荷を低減することができるメモリシステムを提供する。
【解決手段】実施形態によれば、メモリシステムは、不揮発性メモリと、コントローラと、を具備する。不揮発性メモリは、各々が複数のページを含む複数のブロックを備える。コントローラは、複数のページにデータを書き込む際に複数のページの第1ページから順に書き込むように構成される。コントローラは、複数のブロックに関する管理情報を、複数のブロックのそれぞれの第1ページに記録する。
【選択図】
図3
【特許請求の範囲】
【請求項1】
各々が複数のページを含む複数のブロックを備える不揮発性メモリと、
前記複数のページにデータを書き込む際に前記複数のページの第1ページから順に書き込むように構成されるコントローラと、
を具備し、
前記コントローラは、前記複数のブロックに関する管理情報を、前記複数のブロックのそれぞれの前記第1ページに記録する、
メモリシステム。
【請求項2】
前記コントローラは、前記管理情報をユーザデータと共に前記第1ページに格納する請求項1に記載のメモリシステム。
【請求項3】
前記コントローラは、
データを書き込み済みの状態からデータが未書き込みの状態へ各ページの状態を移行させるために各ブロックにおいて実行されたデータ消去の回数を、前記管理情報として各ブロックの第1ページに記録する、
請求項1または2に記載のメモリシステム。
【請求項4】
前記コントローラは、
ユーザデータの書き込み先として第1ブロックが適用されている状況下において第2ブロックを次のユーザデータの書き込み先として選択した場合、
前記第1ブロックの第1ページに記録されているデータ消去回数を、前記第2ブロックの第2ページに記録し、
前記第2ブロックの第2ページへのデータ消去回数の記録が完了した後、前記第1ブロックのデータ消去を実行する、
請求項3に記載のメモリシステム。
【請求項5】
前記コントローラは、
電力供給の異常な遮断の発生後、電力供給が復帰した場合、
前記複数のブロックのすべてについて前記第1ページの読み出しを実行し、
前記第1ページが読み出せない第3ブロックが存在した場合、前記第3ブロックを除く前記複数のブロックのすべてについて前記第2ページの読み出しを実行して、前記第3ブロックのデータ消去回数を検索し、
前記検索されたデータ消去回数に1を加えた値を、前記第3ブロックのデータ消去回数として、前記第3ブロックの第1ページへ記録する、
請求項4に記載のメモリシステム。
【請求項6】
前記コントローラは、前記第3ブロックを除く前記複数のブロックの中の2以上のブロックの第2ページから前記第3ブロックのデータ消去回数が検索された場合、それらの中から最も大きい値のデータ消去回数を採用する請求項5に記載のメモリシステム。
【請求項7】
前記コントローラは、
前記複数のブロックの中の1つのブロックを、各ブロックにおいて実行されたデータ消去の回数を記録しておくためのシステムブロックとして確保し、
各ブロックについて、前記第1ページに記録されているデータ消去回数が、前記システムブロックに記録されているデータ消去回数と等しいか、または、前記システムブロックに記録されているデータ消去回数に1を加えた値か、のいずれであるのかを管理し、
第4ブロックを次のユーザデータの書き込み先として選択した場合、
前記第4ブロックの第1ページに記録されているデータ消去回数が、前記システムブロックに記録されているデータ消去回数と等しいか、または、前記システムブロックに記録されているデータ消去回数に1を加えた値か、のいずれであるのかを判定し、
前記システムブロックに記録されているデータ消去回数と等しい場合、前記システムブロックへのデータ消去回数の記録を行うことなく、前記第4ブロックのデータ消去を実行した後、前記第4ブロックの第1ページに記録されていたデータ消去回数に1を加えた値をデータ消去回数として前記第4ブロックの第1ページに記録し、
前記システムブロックに記録されているデータ消去回数に1を加えた値である場合、前記第4ブロックの第1ページに記録されていたデータ消去回数に1を加えた値をデータ消去回数として前記システムブロックに記録すると共に、前記第4ブロックのデータ消去を実行した後、前記第4ブロックの第1ページに記録されていたデータ消去回数に1を加えた値をデータ消去回数として前記第4ブロックの第1ページに記録する、
請求項3に記載のメモリシステム。
【請求項8】
前記コントローラは、前記第4ブロックのデータ消去回数を前記システムブロックに記録する際、第1ページに記録されているデータ消去回数が前記システムブロックに記録されているデータ消去回数に1を加えた値である第5ブロックが存在する場合、併せて、前記第5ブロックの第1ページに記録されているデータ消去回数を前記システムブロックに記録する請求項7に記載のメモリシステム。
【請求項9】
前記コントローラは、
電力供給の異常な遮断の発生後、電力供給が復帰した場合、
前記システムブロックを除く前記複数のブロックのすべてについて前記第1ページの読み出しを実行し、
前記第1ページが読み出せない第6ブロックが存在した場合、前記第6ブロックのデータ消去回数を前記システムブロックから読み出し、
前記システムブロックから読み出したデータ消去回数に1を加えた値を、前記第6ブロックのデータ消去回数として、前記第6ブロックの第1ページへ記録する、
請求項7に記載のメモリシステム。
【請求項10】
前記コントローラは、
各ブロックのデータ消去回数を、ベージ番号の小さいページからベージ番号の大きいページへと前記システムブロックに追記的に記録していき、
同一ブロックについて複数のデータ消去回数が前記システムブロックに記録されている場合、それらの中からページ番号の最も大きいページに記録されているデータ消去回数を採用する、
請求項9に記載のメモリシステム。
【請求項11】
前記コントローラは、前記システムブロックへのデータ消去回数の記録を、前回のシステムブロックへのデータ消去回数の書き込み時からの差分を追記していくことによって実行する請求項7に記載のメモリシステム。
【請求項12】
前記コントローラは、ユーザデータの書き込み先として適用された順番を示すシーケンス番号を、前記管理情報として各ブロックの第1ページに記録する請求項1または2に記載のメモリシステム。
【請求項13】
前記コントローラは、電力供給が開始された場合、前記複数のブロックのすべてについて前記第1ページの読み出しを実行し、最も大きい値のシーケンス番号が記録されている第7ブロックを、前回の電力供給遮断時においてユーザデータの書き込み先として適用されていたブロックとして検索する請求項12に記載のメモリシステム。
【請求項14】
前記複数のブロックは、各々がユーザデータの書き込み先として適用するブロックを含む複数のグループの中のいずれかに割り当てられ、
前記コントローラは、ユーザデータの書き込み先として第1グループに対して第8ブロックが割り当てられて適用された場合、前記第1グループ以外のグループにおいてユーザデータの書き込み先として適用されているブロックの識別子を、前記シーケンス番号と共に前記管理情報として前記第8ブロックの第1ページに記録する請求項12に記載のメモリシステム。
【請求項15】
前記コントローラは、電力供給が開始された場合、前記複数のブロックのすべてについて前記第1ページの読み出しを実行し、最も大きい値のシーケンス番号が記録されている第9ブロックを、前回の電力供給遮断時においてユーザデータの書き込み先として適用されていたブロックとして検索し、かつ、前記第9ブロックの第1ページにシーケンス番号と共に記録されている識別子で示される1以上の第10ブロックを、前回の電力供給遮断時においてユーザデータの書き込み先として適用されていたブロックと判定する請求項14に記載のメモリシステム。
【請求項16】
前記不揮発性メモリは、データを書き込み済みのページへのデータの上書きを行うことができないメモリである請求項1に記載のメモリシステム。
【請求項17】
各々が複数のページを含む複数のブロックを備える不揮発性メモリの前記複数のページにデータを書き込む際に前記複数のページの第1ページから順に書き込むように構成されるコントローラによるブロック管理方法であって、
前記複数のブロックに関する管理情報を、前記複数のブロックのそれぞれの前記第1ページに記録する、
ブロック管理方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、メモリシステムおよびブロック管理方法に関する。
【背景技術】
【0002】
NAND型フラッシュメモリ(NANDメモリ)は、データが書込み済みの領域へのデータの上書きを行うことができない不揮発性メモリである。NANDメモリを制御するコントローラは、あるブロックの、あるページに格納されているデータを更新する場合、そのページに格納されている更新前データを無効化し、別のブロックのページまたは当該ブロックの別のページに更新後データを書き込む。
【0003】
そのため、コントローラは、データが無効化されたページを再利用するための、ガベージコレクションなどと称される処理を定期的または適応的に実行する。ガベージコレクションは、N個のブロックに残存する有効データをM(M<N)個のブロックに移動させることにより、(N-M)個のフリーブロックを生成する処理である。コントローラは、回収したN個の移動元ブロックのデータを、たとえば、各ブロックが次の書き込み対象として選択されたタイミングで消去する。
【0004】
また、NANDメモリのブロックは、データを消去可能な回数に制限がある。そこで、コントローラは、データの消去回数がNAND内の全ブロック間でなるべく均一となるようにするための、ウェアレベリングなどと称される処理を実行している。
【0005】
コントローラは、ガベージコレクションやウェアレベリングを適切に実行するために、ブロックの管理情報を使用してブロックの消去回数等を管理する。コントローラは、ブロックの管理情報を、特定のブロックに記録することでブロックの管理情報が消滅することを防止する。この場合、その特定のブロックへのデータの書き込みは、ホストから要求されるデータの書き込みや読み出しとは関係のない、システムライトなどと称される処理となる。システムライトは、いわゆるオーバーヘッドであり、ホストに対する応答性能を低下させる要因となる可能性がある。従って、ブロックの管理情報の管理については、少しでも負荷の低減を図ることが好ましい。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開2011-186553号公報
【特許文献2】特表2016-510928号公報
【特許文献3】米国特許出願公開第2014/0157083号明細書
【発明の概要】
【発明が解決しようとする課題】
【0007】
本発明の1つの実施形態は、NANDメモリのブロックの管理情報を管理する負荷を低減することができるメモリシステムおよびブロック管理方法を提供する。
【課題を解決するための手段】
【0008】
実施形態によれば、メモリシステムは、不揮発性メモリと、コントローラと、を具備する。不揮発性メモリは、各々が複数のページを含む複数のブロックを備える。コントローラは、複数のページにデータを書き込む際に複数のページの第1ページから順に書き込むように構成される。コントローラは、複数のブロックに関する管理情報を、複数のブロックのそれぞれの第1ページに記録する。
【図面の簡単な説明】
【0009】
【
図1】第1実施形態のメモリシステムの一適用例を示す図。
【
図2】第1実施形態のメモリシステムの一構成例を示す図。
【
図3】第1実施形態のメモリシステムが実行するイレース回数の管理方法およびイレース回数の復元方法を説明するための図。
【
図4】第1実施形態のメモリシステムのイレース回数付与時の動作の流れを示すフローチャート。
【
図5】第1実施形態のメモリシステムのイレース回数復元時の動作の流れを示すフローチャート。
【
図6】第2実施形態のメモリシステムの一構成例を示す図。
【
図7】第2実施形態のメモリシステムが実行するイレース回数の管理方法およびイレース回数の復元方法を説明するための図。
【
図8】第2実施形態のメモリシステムのイレース回数付与時の動作の流れを示すフローチャート。
【
図9】第2実施形態のメモリシステムのイレース時の動作の流れを示すフローチャート。
【
図10】第2実施形態のメモリシステムのイレース回数復元時の動作の流れを示すフローチャート。
【
図11】第3実施形態のメモリシステムの一構成例を示す図。
【
図12】第3実施形態のメモリシステムが実行するイレース回数の管理方法およびイレース回数の復元方法を説明するための図。
【
図13】第3実施形態のメモリシステムのイレース時の動作の流れを示すフローチャート。
【
図14】第3実施形態のメモリシステムのイレース回数復元時の動作の流れの一部を示すフローチャート。
【
図15】第4実施形態のメモリシステムの一構成例を示す図。
【
図16】第4実施形態のメモリシステムが実行するシーケンス番号の管理方法および途中止めブロックの判定方法を説明するための図。
【
図17】第4実施形態のメモリシステムのシーケンス番号付与時の動作の流れを示すフローチャート。
【
図18】第4実施形態のメモリシステムの途中止めブロック検出時の動作の流れを示すフローチャート。
【
図19】第5実施形態のメモリシステムが実行するシーケンス番号の管理方法および途中止めブロックの判定方法を説明するための図。
【
図20】第5実施形態のメモリシステムのシーケンス番号付与時の動作の流れを示すフローチャート。
【
図21】第5実施形態のメモリシステムの途中止めブロック検出時の動作の流れを示すフローチャート。
【発明を実施するための形態】
【0010】
以下、実施の形態について、図面を参照して説明する。
【0011】
(第1実施形態)
まず、第1実施形態について説明する。
【0012】
図1は、第1実施形態のメモリシステム2の一適用例を示す図である。ここでは、メモリシステム2が電子機器100のメインメモリとして適用されていることを想定する。電子機器100は、タブレットPC(Personal Computer)やスマートフォン等、様々な機器であってよい。ここでは、電子機器100がタブレットPCとして実現されていることを想定する。
【0013】
また、電子機器100のメインメモリとしては、通常、DRAM(Dynamic Ram(Random Access Memory))といった揮発性の記憶装置が使用されるが、ここでは、低コスト化のため、メモリシステム2が、NANDメモリを搭載する不揮発性の記憶装置として実現されていることを想定する。つまり、メモリモジュール2は、不揮発性の記憶装置でありながら、電子機器100内においては揮発性の記憶装置として使用される状況を想定する。
【0014】
電子機器100は、CPU1と、メインメモリ(メモリシステム)2と、外部記憶装置3と、タッチスクリーンディスプレイ4と、を有する。
【0015】
CPU1は、外部記憶装置3にインストールされている各種プログラムをメインメモリ2へロードして実行する。各種プログラムは、タッチスクリーンディスプレイ4に操作画面を表示し、この操作画面上でのタッチ操作に応じて各種処理を実行し、その結果をタッチスクリーンディスプレイ4に表示する。
【0016】
メインメモリ(メモリシステム)2は、各種プログラムや各種プログラムの入出力データを一時的に記憶する。一方、外部記憶装置3は、各種プログラムや各種プログラムの入出力データを恒久的に記憶する。外部記憶装置3は、HDD(Hard Disk Drive)やSSD(Solid State Drive)などである。
【0017】
タッチスクリーンディスプレイ4は、たとえば、液晶パネルとタッチパネルとが重ね合わせられた、電子機器100がGUI(Graphical User Interface)を提供するためのデバイスである。
【0018】
以上のような構成の電子機器100において、第1実施形態のメモリシステム2は、前述したように、NANDメモリを搭載する不揮発性の記憶装置でありながら、揮発性の記憶装置として使用される。電源オン時に前回の電源オフ時のユーザデータの格納状態を再現する必要のない揮発性の記憶装置として使用される場合、NANDメモリを搭載する不揮発性の記憶装置であるメモリシステム2のシステムライトは、各ブロックのデータの消去回数を記録するための書き込みが支配的となる。そこで、第1実施形態のメモリシステム2は、NANDメモリのブロックの管理情報の1つである各ブロックのデータの消去回数を管理する負荷を低減することができる仕組みを備えたものであり、以下、この点について詳述する。なお、以下に説明する、NANDメモリの各ブロックのデータの消去回数を管理する負荷を低減するための仕組みは、メモリシステム2が揮発性の記憶装置として使用される場合に限定されず、不揮発性の記憶装置として使用される場合においても有効である。
【0019】
図2は、第1実施形態のメモリシステム2の一構成例を示す図である。
図2に示すように、メモリシステム2は、コントローラ21と、NANDメモリ22と、を有する。
【0020】
コントローラ21は、NANDメモリ22を制御する。コントローラ21は、CPU1からの要求に応じて、NANDメモリ22へデータを書き込み、または、NANDメモリからデータを読み出す。
図2においては、NANDメモリ22の各ブロックのデータの消去回数を含む、システムライトでNANDメモリ22へ書き込まれるデータ(システムデータ)と区別するために、コントローラ21がCPU1から受け取るNANDメモリ22への書き込みデータを、ユーザデータと表記している。システムデータは、メタデータと称される場合がある。
【0021】
NANDメモリ22は、複数のNANDブロック221を有する。各NANDブロック221は、複数のページを有する。複数のページのそれぞれには、ページ番号が昇順に付されている。具体的には、最も小さいページ番号が先頭ページに付され、当該最も小さいページ番号から1つずつインクリメントされたページ番号が最終ページへ向かって順番に付されている。NANDブロック221へは、先頭ページから最終ページへとデータが順次書き込まれていく(追記されていく)。また、複数のNANDブロック221のそれぞれには、ブロック番号が付されている。
【0022】
コントローラ21は、書き込み先決定部211と、初期化部212と、イレース回数付与判断部213と、を有する。コントローラ21は、たとえばSoC(System on a Chip)として構成されており、コントローラ21内の各部は、コントローラ21内の図示されないプロセッサがファームウェアなどと称されるプログラムを実行することによって実現される。あるいは、コントローラ21内の各部は、電気回路などのハードウェアとして実現されるものであってもよい。なお、以下、NANDブロック221のデータの消去回数を、イレース回数とも称することがある。つまり、NANDブロック221のデータの消去を、イレースとも称することがある。
【0023】
書き込み先決定部211は、NANDメモリ22の複数のNANDブロック221の中から、ユーザデータの書き込み先とするNANDブロック221を決定する。書き込み先決定部211は、決定したNANDブロック221内で書き込み先となるページの管理も行う。書き込み先決定部211は、イレース回数管理部2111と、追記先管理部2112と、フリーブロック管理部2113と、を有する。
【0024】
イレース回数管理部2111は、各NANDブロック221のイレース回数を記録するためのブロック(システムブロック)として特定のNANDブロック221を消費することなく、各NANDブロック221のイレース回数を管理する。具体的には、イレース回数管理部2111は、NANDブロック221の先頭ページおよび最終ページの一部(たとえば冗長領域)を使って、各NANDブロック221のイレース回数を管理する。イレース回数管理部2111によるイレース回数の管理方法の詳細については後述する。
【0025】
追記先管理部2112は、ユーザデータの現在の書き込み先(追記先)となっているNANDブロック221の残りページ数などを監視するとともに、たとえば残りページ数が閾値以下となったとき、次の追記先とすべきNANDブロック221を選択する。
【0026】
フリーブロック管理部2113は、未使用状態のNANDブロック221をフリーブロックとして管理する。追記先管理部2112は、フリーブロック管理部2113によってフリーブロックとして管理されているNANDブロック221の中から、次の追記先とすべきNANDブロック221を選択する。コントローラ21は、次の追記先とすべきNANDブロック221が選択されたとき、そのNANDブロック221についてデータの消去(イレース)を実行する。このイレースにより、そのNANDブロック221内のすべてのページは、データを書き込み済みの状態からデータが未書き込みの状態、つまり、データを書き込み可能な状態へと移行する。なお、追記先管理部2112は、フリーブロック管理部2113によってフリーブロックとして管理されているNANDブロック221の中から、次の追記先とすべきNANDブロック221を選択するとき、イレース回数が最も小さいNANDブロック221を選択することが好ましい。
【0027】
初期化部212は、メモリモジュール2に対する電力供給が開始された際、直前の電力供給の遮断が正規の手順を経ず不意に遮断される電力供給の異常な遮断であった場合においては不整合を生じさせている可能性のある、NANDメモリ22に格納されているシステムデータを本来の状態に復帰させる処理を実行する。初期化部212は、イレース回数復元部2121を有する。イレース回数復元部2121は、書き込み先決定部211のイレース回数管理部2111と協働して、各NANDブロック221のイレース回数を復元する。イレース回数の復元方法については後述する。
【0028】
イレース回数付与判断部213は、各NANDブロック221のイレース回数をNANDメモリ22へ書き込むべきタイミングか否かを判断する。前述したように、第1実施形態のメモリシステム2においては、NANDブロック221の先頭ページおよび最終ページの一部(たとえば冗長領域)を使って、各NANDブロック221のイレース回数を管理する。イレース回数の管理方法については後述するが、イレース回数付与判断部213は、具体的には、NANDブロック221内の書き込み対象となっているページが先頭ページまたは最終ページであるか否かを判断する。
【0029】
次に、
図3を参照して、以上のような構成の第1実施形態のメモリシステム2において実行されるイレース回数の管理方法および電力供給の遮断の発生後のイレース回数の復元方法について説明する。
【0030】
ここでは、まず、ブロックBが、ユーザデータの現在の書き込み先(追記先)となっていることを想定する。また、ブロックBに対するユーザデータの書き込みが進み、ブロックBの残りページが最終ページのみとなったため、追記先管理部2112によって、次の追記先としてブロックAが選択されたものと想定する。ブロックAは、フリーブロック管理部2113によってフリーブロックとして管理されているブロックから選ばれる。
【0031】
ブロックB内におけるユーザデータの書き込み対象が最終ページとなると、その旨がイレース回数付与判断部213によって検知される。そうすると、イレース回数管理部2111は、次の追記先であるブロックAのブロック番号と、その時点でのブロックAのイレース回数とを、ユーザデータとともに、ブロックBの最終ページにメタデータとして書き込む(1)。なお、ブロックAのイレース回数は、ブロックAの先頭ページにメタデータとして格納されている。つまり、イレース回数管理部2111は、ブロックAの先頭ページにメタデータとして格納されているブロックAのイレース回数を読み出し、ブロックBの最終ページへメタデータとして書き込む。ここでは、その時点でのブロックAのイレース回数は、10であったことを想定する。
【0032】
このブロックBの最終ページへのメタデータの書き込みが完了すると、ブロックAのイレースが実行される。ブロックAのイレースが完了した後、このブロックAの先頭ページへのユーザデータの書き込み時、ユーザデータの書き込み対象が先頭ページであることがイレース回数付与判断部213によって検知される。そうすると、イレース回数管理部2111は、ブロックAが次の追記先として選択された際に当該ブロックAの先頭ページから読み出したイレース回数を1回分インクリメントし、当該インクリメント後のブロックAのイレース回数を、ユーザデータとともに、ブロックAの先頭ページにメタデータとして書き込む(2)。この時、ブロックAの先頭ページには、ブロックAのイレース回数として11が書き込まれる。つまり、ブロックBの最終ページにメタデータとして書き込まれるイレース回数は、前回、ブロックAが次の追記先として選ばれてイレースが実行された際に先頭ページにメタデータとして書き込まれたものである。
【0033】
たとえば、各NANDブロック221のイレース回数を、特定のブロックをシステムブロックとして用いて記録する場合と比較して、以上のようなイレース回数の管理方法を実行する第1実施形態のメモリシステム2においては、ユーザデータとともに、NANDブロック221の先頭ページおよび最終ページに記録するので、オーバーヘッドであるシステムライトを大幅に削減することができる。したがって、第1実施形態のメモリシステム2は、ホストに対する応答性能を向上させることができる。また、第1実施形態のメモリシステム2は、各NANDブロック221のイレース回数を格納しておくためのシステムブロックの確保を不要とすることができる。
【0034】
次に、メモリモジュール2に対する電力供給の遮断が正規の手順を経ず不意に遮断される電力供給の異常な遮断が発生し、その後、電力供給が復帰した場合を想定して、第1実施形態のメモリシステム2が実行するイレース回数の復元方法について説明する。
【0035】
NANDブロック221の先頭ページおよび最終ページに記録されるNANDブロック221のイレース回数が不整合を生じさせるケースとしては、あるNANDブロック221のイレースを実行してから、このNANDブロック221の先頭ページに最新のイレース回数を書き込むまでの間に電力供給の異常な遮断が発生したケースが考えられる。
【0036】
イレース回数復元部2121は、NANDメモリ22のすべてのNANDブロック221について、先頭ページの読み出しを実行する。イレース回数復元部2121は、先頭ページが呼び出せたNANDブロック221については、その先頭ページにメタデータとして格納されているイレース回数をそのまま採用する。一方、先頭ページが呼び出せないNANDブロック221については、イレース後、先頭ページに最新のイレース回数が書き込まれる前に、電力供給の異常な遮断が発生したため、当該最新のイレース回数が失われたブロックであると判断する。この場合、イレース回数復元部2121は、以下の手順で当該失われた最新のイレース回数を復元する。ここでは、ブロックAが、先頭ページが読み出せなかった場合を想定する。
【0037】
前述したように、ブロックAが次の追記先と選択されてイレースされる場合、現在の追記先のブロックの最終ページに、ブロックAのその時点でのイレース回数がメタデータとして書き込まれる。ブロックAのイレース回数を最終ページに記録するブロックは、NANDメモリ22内に1以上存在し得る。たとえば、ブロックCが追記先である時に次の追記先としてブロックAが選択され、その後、ブロックCがイレースされることなく、ブロックBが追記先である時に次の追記先としてブロックAが再度選択された場合、ブロックAのイレース回数が、ブロックCの最終ページと、ブロックBの最終ページとの2箇所に記録されていることになる。なお、この場合、ブロックBの最終ページに記録されているイレース回数は、ブロックCの最終ページに記録されているイレース回数から1回分インクリメントされている。
図3では、ブロックBの最終ページには、ブロックAのイレース回数として10が記録され、ブロックCの最終ページには、ブロックAのイレース回数として9が記録されている。
【0038】
イレース回数復元部2121は、ブロックAの先頭ページが読めない場合、NANDメモリ22内のブロックA以外のすべてのブロックの最終ページを読み出し、ブロックAのイレース回数を検索する。1つのみ検索された場合、イレース回数復元部2121は、そのイレース回数を1回分インクリメントし、ブロックAの先頭ページに書き込む。2以上検索された場合、イレース回数復元部2121は、それらの中から最も値の大きいイレース回数を採用する。そして、イレース回数復元部2121は、採用した最大値のイレース回数を1回分インクリメントし、ブロックAの先頭ページに書き込む(3)。つまり、ブロックAの先頭ページには、ブロックAのイレース回数である11が書き込まれる。
【0039】
これにより、第1実施形態のメモリシステム2は、各NANDブロック221のイレース回数をシステムブロックへ書き込むシステムライトを無くしても、メモリモジュール2に対する電力供給の異常な遮断に対処することができる。
【0040】
図4は、第1実施形態のメモリシステム2のイレース回数付与時の動作の流れを示すフローチャートである。
【0041】
イレース回数付与判断部213は、現在の追記先のNANDブロック221内のいずれのページが書き込み先となっているかを判定する(S101)。先頭ページと判定された場合(S102:YES)、イレース回数管理部2111は、該当ブロックのイレース回数を書き込みデータに付与する(S103)。そして、書き込み先決定部211は、当該先頭ページへの書き込み処理を実行する(S107)。
【0042】
また、最終ページと判定された場合(S102:NO,S104:YES)、追記先管理部2112は、次の追記先、つまり、次のイレース先を決定する(S105)。イレース回数管理部2111は、当該決定された次のブロックの番号とイレース回数を書き込みデータに付与する(S106)。そして、書き込み先決定部211は、当該最終ページへの書き込み処理を実行する(S107)。
【0043】
また、先頭ページおよび最終ページのいずれでもないと判定された場合(S104:NO)、書き込み先決定部211は、ブロック番号やイレース回数が付与されていない書き込みデータの先頭ページおよび最終ページ以外のページへの書き込み処理を実行する(S107)。
【0044】
図5は、第1実施形態のメモリシステム2のイレース回数復元時の動作の流れを示すフローチャートである。
【0045】
イレース回数復元部2121は、全対象ブロックの先頭ページの読み出しを行う(S201)。先頭ページが読み出せたブロックの場合(S202:NO)、イレース回数復元部2121は、その先頭ページに書かれたイレース回数を該当ブロックのイレース回数とする(S203)。
【0046】
一方、先頭ページがイレースページだった場合(S202:YES)、イレース回数復元部2121は、全対象ブロックの最終ページの読み出しを行い、該当ページのイレース直前の情報を探す。そして、イレース回数復元部2121は、最もイレース回数が大きいものを該当ブロックのイレース回数とする(S204)。
【0047】
以上のように、第1実施形態のメモリシステム2は、NANDメモリのブロックの管理情報の1つである各ブロックのデータの消去回数を管理する負荷を低減することができる。
【0048】
(第2実施形態)
次に、第2実施形態について説明する。
【0049】
第1実施形態のメモリシステム2においては、各ブロックのイレース回数をシステムブロックへ書き込むシステムライトを不要とできる反面、先頭ページが読み出せなかったブロックのイレース回数の復元には、全ブロックの最終ページの読み出しが必要となる。
【0050】
第2実施形態のメモリシステム2は、各ブロックのイレース回数をシステムブロックへ書き込むシステムライトを、各ブロックの先頭ページへのイレース回数の書き込みと並行して実行するが、その頻度を低下させる。これにより、第2実施形態のメモリシステム2は、先頭ページが読み出せなかったブロックのイレース回数をシステムブロックのシステムデータから速やかに復元できるようにしつつ、オーバーヘッドであるシステムライトの負荷を軽減して、応答性能を向上させる。
【0051】
図6は、第2実施形態のメモリシステム2の一構成例を示す図である。第1実施形態のメモリシステム2(
図2参照)と比較して、第2実施形態のメモリシステム2は、コントローラ21が、システムブロック管理部214をさらに有している。
【0052】
システムブロック管理部214は、NANDメモリ22内の特定のNANDブロック221Aを、システムデータを格納するシステムブロックとして管理する。なお、システムブロック用のNANDブロック221Aは、NANDメモリ22内の複数のNANDブロック221の中から任意に選ばれるものであり、ユーザデータを格納するNANDブロック221とは用途が異なるだけである。たとえば、ある時点ではユーザデータの格納用となっていたNANDブロック221が、その後のある時点では、システムデータの格納用となり得るし、逆に、ある時点ではシステムデータの格納用となっていたNANDブロック221Aが、その後のある時点では、ユーザデータの格納用となり得る。つまり、
図6のNANDブロック221Aも、イレース回数の管理対象である。
【0053】
システムブロック管理部214は、システムデータ(イレース回数テーブル)書き込み判断部2141を有する。システムデータ書き込み判断部2141は、あるブロックについてイレースが実行されたとき、都度、そのブロックのイレース回数を1回分インクリメントすべくシステムブロックへの書き込みを行うのではなく、システムライトの回数を削減するために、システムライトを行うべきか否かの判断を実行する。以下、
図7を参照して、第2実施形態のメモリシステム2における、各ブロックのイレース回数に関するシステムライトの回数を削減する仕組みについて説明する。
【0054】
ここでは、ブロックAが次の追記先として選択された場合を例に示す。第2実施形態のメモリシステム2においては、イレース回数付与判断部213は、NANDブロック221内の書き込み対象ページが先頭ページか否かのみを判断する。先頭ページと判断された場合、イレース回数管理部2111は、そのブロックのイレース前に先頭ページに格納されていたイレース回数を1回分インクリメントしたイレース回数をイレース後の先頭ページに格納する(1)。この時、システムデータ書き込み判断部2141は、イレース前に先頭ページに格納されているイレース回数が、システムブロックに格納されている当該ブロックのイレース回数と一致しているか否かを判断する。なお、システムデータ書き込み判断部2141は、システムブロックからの読み出しを不要とするために、イレース回数管理部2111と協働して、イレース回数の一致不一致を判断するための情報を、コントローラ21内のたとえば図示されないRAMなどに格納する。具体的には、たとえばRAMなどに、各ブロックについて、先頭ページに格納されているイレース回数が、システムブロックに格納されているイレース回数と等しい状態か、1回分インクリメントされている状態かを示す情報が格納されている。
【0055】
一致している場合、システムデータ書き込み判断部2141は、そのイレースに伴うシステムブロックへのシステムデータ(イレース回数)の書き込みを行わないと判断する。この判断結果を受けて、イレース回数関する111は、イレース後の先頭ページへのイレース回数の格納のみを実行する(2B)。この場合、イレース後の先頭ページのイレース回数は、システムブロックのイレース回数よりも1回分多い値となる。
【0056】
一方、一致していない場合、システムデータ書き込み判断部2141は、そのイレースに伴うシステムブロックへのシステムデータ(イレース回数)の書き込みを行うものと判断する。一致していない場合とは、イレース前に先頭ページに格納されているイレース回数が、システムブロックのイレース回数よりも1回分多い値となっている場合である。この判断結果を受けて、イレース回数管理部2111は、イレース後の先頭ページへのイレース回数の格納を実行するとともに、システムブロック管理部214に対して、システムブロックへのイレース回数の書き込みを指示する(2A)。この場合、イレース後の先頭ページのイレース回数と、システムブロックのイレース回数とは一致することとなる。
【0057】
つまり、第2実施形態のメモリシステム2においては、イレース後の先頭ページのイレース回数がシステムブロックのイレース回数よりも2回分多い値となる時、両者の値を整合させるためのシステムブロックへのイレース回数の書き込み(システムライト)を実行する。
【0058】
このシステムライトの実行時、イレース回数管理部2111は、システムブロックに格納されているイレース回数よりも1回分多い値が先頭ページに格納されているNANDブロック221が存在するならば、システムブロック管理部214に対して、システムブロックに格納されている当該NANDブロック221のイレース回数を併せて更新することを指示する。その存在有無は、前述の、コントローラ21内のたとえば図示されないRAMなどに格納されている、イレース回数の一致不一致を判断するための情報を参照することによって判断することができる。
【0059】
たとえば、NANDメモリ22内のすべてのNANDブロック221の先頭ページに格納されているイレース回数が、システムブロックに格納されているイレース回数よりも1回分インクリメントされている状態のとき、いずれかのNANDブロック221についてイレースが行われると、1回のシステムライトで、すべてのNANDブロック221についてシステムブロックのイレース回数が更新されることになる。
【0060】
これにより、仮に、ウェアレベリングが適切に実行されていたとするならば、オーバーヘッドである各ブロックのイレース回数に関するシステムライトを、最大、1/(NANDブロック221の数)に減らすことが実現される、
続いて、以上のように各ブロックのイレース回数を管理する、第2実施形態のメモリシステム2におけるイレース回数の復元について説明する。
【0061】
なお、システムブロック内に、同一のブロックのイレース回数が複数のページに格納されている場合もあり得る。システムブロックも、先頭ページから最終ページへと書き込みデータが順次追記されるので、ページ番号が大きい方のページに格納されているものが最新のイレース回数であるものとする。
【0062】
イレース回数復元部2121は、システムブロックに格納されている、各ブロックのイレース回数を読み出す(3-1)。また、イレース回数復元部2121は、すべてのNANDブロック221の先頭ページを読み出す(3-2)。先頭ページが読み出せたブロックについては、イレース回数復元部2121は、その先頭ページに格納されているイレース回数をそのまま採用する。一方、先頭ページが読み出せないブロックについては、システムブロックから読み出したイレース回数を1回分インクリメントした値を当該ブロックのイレース回数とし、そのブロックの先頭ページに書き込む。
【0063】
このような復元を行う第2実施形態のメモリシステム2においては、1回分の誤差が生じる可能性があるが、第1実施形態のメモリシステム2と比較して、すべてのNANDブロック221の最終ページを読み出すことが不要であり、復元の所要時間を大幅に短縮することができる。また、第2実施形態のメモリシステム2においては、各ブロックのイレース回数に関するシステムライトが必要であるものの、その回数を最大で1/(NANDブロック221の数)に削減することができる。
【0064】
図8は、第2実施形態のメモリシステム2のイレース回数付与時の動作の流れを示すフローチャートである。
【0065】
イレース回数付与判断部213は、現在の追記先のNANDブロック221内のいずれのページが書き込み先となっているかを判定する(S301)。先頭ページと判定された場合(S302:YES)、イレース回数管理部2111は、該当ブロックのイレース回数を書き込みデータに付与する(S303)。そして、書き込み先決定部211は、当該先頭ページへの書き込み処理を実行する(S304)。
【0066】
一方、先頭ページではないと判定された場合(S302:NO)、書き込み先決定部211は、イレース回数が付与されていない書き込みデータの先頭ページ以外のページへの書き込み処理を実行する(S304)。
【0067】
図9は、第2実施形態のメモリシステム2のイレース時の動作の流れを示すフローチャートである。
【0068】
追記先管理部2112は、次の追記先、つまり、イレースするブロックを決定する(S401)、システムデータ書き込み判断部2141は、決定されたブロックについて、システムブロックのイレース回数と決定されたブロックの先頭ページに格納されたイレース回数とが1離れているか否かを判断する(S402)。双方のイレース回数が1離れている場合(S402:YES)、イレース回数管理部2111は、システムブロック管理部214を介してシステムライトを実行し(S403)、書き込み先決定部211は、該当ブロックのイレースを実行する(S404)。
【0069】
一方、双方のイレース回数が一致している場合(S402:NO)、S403はスキップされて、書き込み先決定部211による、該当ブロックのイレースが実行される(S404)。
【0070】
図10は、第2実施形態のメモリシステム2のイレース回数復元時の動作の流れを示すフローチャートである。
【0071】
イレース回数復元部2121は、各ブロックのイレース回数を含む、システムブロックのシステムデータ、つまり、システムログを読み出す(S501)。また、イレース回数復元部2121は、全対象ブロックの先頭ページを読み出す(S502)。先頭ページが読み出せたブロックの場合(S503:NO)、イレース回数復元部2121は、その先頭ページに書かれたイレース回数を該当ブロックのイレース回数とする(S503)。
【0072】
一方、先頭ページがイレースページだった場合(S503:YES)、イレース回数復元部2121は、システムログのイレース回数を1回分インクリメントした値を該当ブロックのイレース回数とする(S505)。
【0073】
以上のように、第2実施形態のメモリシステム2においても、NANDメモリのブロックの管理情報の1つである各ブロックのデータの消去回数を管理する負荷を低減することができる。
【0074】
(第3実施形態)
次に、第3実施形態について説明する。
【0075】
第2実施形態のメモリシステム2においては、先頭ページが読み出せなかったブロックのイレース回数を速やかに復元できるようにするために、各ブロックのイレース回数をシステムブロックへ書き込むシステムライトを、頻度を低下させつつも、各ブロックの先頭ページへのイレース回数の書き込みと並行して実行する。第3実施形態のメモリシステム2は、さらに、各ブロックのイレース回数をシステムブロックへ書き込むシステムライトのデータ量を削減する。より詳しくは、第3実施形態のメモリシステム2は、システムブロックに記録するイレース回数を差分情報化する。
【0076】
図11は、第3実施形態のメモリシステム2の一構成例を示す図である。第2実施形態のメモリシステム2(
図6参照)と比較して、第3実施形態のメモリシステム2は、システムブロック管理部214が、差分生成部2142をさらに有している。以下、
図12を参照して、第3実施形態のメモリシステム2における、各ブロックのイレース回数に関するシステムライトのデータ量を削減する仕組みについて説明する。
【0077】
第3実施形態のメモリシステム2におけるシステムブロック管理部214は、各NANDブロック221のイレース回数を、メインログと、差分ログと、を使って記録する。ここでは、ブロックAのイレース回数は10、ブロックBのイレース回数は15であるものと想定する。つまり、ブロックAの先頭ページにはイレース回数として10が格納されており、ブロックBの先頭ページにはイレース回数として15が格納されている。また、メインログには、ブロックAおよびブロックBの双方について、各ブロックの先頭ページに格納されているイレース回数と同じ値のイレース回数が格納されているものと想定する。
【0078】
第2実施形態で説明したように、システムブロックへイレース回数を書き込むためのシステムライトは、各ブロックの先頭ページのイレース回数がステムブロックのイレース回数よりも2回分多い値となる時に実行される。そのため、ブロックAについて11回目のイレースが実行されたとき、イレース後のブロックAの先頭ページにイレース回数として11が書き込まれるが(1)、システムデータ書き込み判断部2141は、このタイミングでは、システムブロックへの書き込みは行わないと判断する。
【0079】
その後、いずれのNANDブロック221においても、先頭ページのイレース回数がステムブロックのイレース回数よりも2回分多い値となることがないまま、ブロックAについて12回目のイレースが実行されることとなったとする。この場合、システムデータ書き込み判断部2141は、システムブロックへの書き込みを行うと判断する。
【0080】
この時、第3実施形態のメモリシステム2では、差分生成部2142が、システムブロックに格納されているイレース回数よりも1回分多い値が先頭ページに格納されているNANDブロック221を示す差分データを生成する。この差分データは、各ビットがイレースの実行有無を示す、NANDメモリ22内のNANDブロック221がマッピングされたビットマップであってもよいし、イレースが実行されたNANDブロック221のブロック番号であってもよい。システムブロック管理部214は、差分生成部2142によって生成された差分データを差分ログに書き込む。
【0081】
図12中、符号a1の矢印は、前回のシステムライト後、ブロックAのみイレースが実行された場合を示している。この場合、差分ログに格納される、差分生成部2142によって生成される差分データは、「10」(ビットマップ)または「A」(ブロック番号)となる。このビットマップは、1ビット目がブロックA、2ビット目がブロックBにそれぞれ対応し、また、「1」がイレースの実行有り、「0」がイレースの実行無し、を示している。従って、ビットマップ「10」は、ブロックAはイレースが実行されて、ブロックBはイレースが実行されていないことを示している。その結果、システムブロックのメインログと差分ログとで、ブロックAのイレース回数として11が格納され、ブロックBのイレース回数として15が格納されていることとなる。
【0082】
一方、符号a2の矢印は、前回のシステムライト後、ブロックA、ブロックBの両方でイレースが実行された場合を示している。この場合、差分ログに格納される、差分生成部2142によって生成される差分データは、「11」(ビットマップ)または「A,B」(ブロック番号)となる。その結果、システムブロックのメインログと差分ログとで、ブロックAのイレース回数として11が格納され、ブロックBのイレース回数として16が格納されていることとなる。なお、ここでは、ブロックAのイレースを契機として、ブロックBのイレースが併せて差分ログに反映されたことを想定しているので、このタイミングで、ブロックBの先頭ページに格納されているイレース回数と、システムブロックに格納されているイレース回数とは、16で一致することとなる。イレース後のブロックAの先頭ページに格納されるイレース回数は、システムブロック(メインログ+差分ログ)に格納されているイレース回数よりも1回分多い17である。
【0083】
以後、いずれかのNANDブロック221において、イレース後の先頭ページのイレース回数がシステムブロックのイレース回数よりも2回分多い値となる都度、差分ログが追記されていく。システムブロック管理部214は、所定のタイミングで、蓄積された差分ログをメインログに反映させる処理を実行してもよい。
【0084】
このように、システムブロックに記録するイレース回数を差分情報化することで、第3実施形態のメモリシステム2は、システムブロックへ書き込むシステムライトのデータ量を削減することができる。
【0085】
第3実施形態のメモリシステム2における、イレース回数付与時の作の流れは、第2実施形態のメモリシステム2の場合と同様である(
図8参照)。
【0086】
図13は、第3実施形態のメモリシステム2のイレース時の動作の流れを示すフローチャートである。
【0087】
追記先管理部2112は、次の追記先、つまり、イレースするブロックを決定する(S601)、システムデータ書き込み判断部2141は、決定されたブロックについて、システムブロックのイレース回数と現在のイレース回数とが1離れているか否かを判断する(S602)。双方のイレース回数が1離れている場合(S602:YES)、イレース回数管理部2111は、システムブロック管理部214を介してシステムライトを実行する。この時、システムデータ書き込み判断部2141が差分ログを作成すると判断しなかった場合(S603:NO)、システムブロック管理部214は、第2実施形態と同様、メインログに対するシステムライトを実行する(S604)。一方、システムデータ書き込み判断部2141が差分ログを作成すると判断した場合(S603:YES)、システムブロック管理部214は、差分生成部2142によって差分データを作成して、差分ログに対するシステムライトを実行する(S605)。システムブロック管理部214によるシステムライトの完了後、書き込み先決定部211は、該当ブロックのイレースを実行する(S606)。
【0088】
システムデータ書き込み判断部2141が差分ログを作成するか否かを判断する基準としては、たとえば以下のようなものが考えられる。
(1)常に差分を書く設定(常に差分ログを作成すると判断)。
(2)システムブロックの先頭ページはメインログ、以降は差分ログ。
(3)システムブロックの先頭ページはメインログ、その次はn回連続で差分ログ、以降はメインログ、n回連続の差分ログ、の繰り返し。
【0089】
一方、双方のイレース回数が一致している場合(S602:NO)、S603からS605はスキップされて、書き込み先決定部211による、該当ブロックのイレースが実行される(S606)。
【0090】
図14は、第3実施形態のメモリシステム2のイレース回数復元時の動作の流れの一部を示すフローチャートであって、第2実施形態のメモリシステム2のS501(
図10参照)に対応する動作の流れの一部を示すフローチャートである。なお、
図14のS705以降は、第2実施形態のメモリシステム2のS502以降と同様の流れとなる。
【0091】
イレース回数復元部2121は、最新のメインログを読む(S701)。最新のメインログを探す方法としては、(1)システムログを古い順に読んでいって最後に読んだメインログを最新のメインログとする、(2)システムログを新しい順に読んでいって最初に読んだメインログを最新のメインログとする、が考えられる。イレース回数復元部2121は、読み出された値をイレース回数のベースとする(S702)。イレース回数復元部2121は、読み出したメインログが最終データか否かを判定し(S703)、最終データであったならば(S703:YES)、
図10のS502へ移行する。読み出したメインログが最終データではなかった場合(S703:NO)、イレース回数復元部2121は、次の差分ログを読み出し(S704)、読み出された値をベース(イレース回数)に反映する(S705)。
【0092】
イレース回数復元部2121は、読み出した差分ログが最終データか否かを判定し(S703)、最終データでなければ(S703:NO)、次の差分ログを読み出し(S704)、読み出された値をベース(イレース回数)に反映する(S705)。イレース回数復元部2121は、最終データの差分ログまで、S704、S705の処理を繰り返す。読み出した差分ログが最終データであったならば(S703:YES)、イレース回数復元部2121は、
図10のS502へ移行する。
【0093】
以上のように、第3実施形態のメモリシステム2においては、さらに、各ブロックのイレース回数をシステムブロックへ書き込むシステムライトのデータ量を削減することができる。
【0094】
(第4実施形態)
次に、第4実施形態について説明する。
【0095】
第1実施形態から第3実施形態においては、メモリシステム2は、各ブロックのイレース回数を、ユーザデータと共に各ブロックの先頭ページにメタデータとして格納する例について説明した。
【0096】
ところで、NANDブロック221は、データの書き込みが途中のページまで行われた状態、つまり、一部のページがデータを未書き込みの状態でイレースされると、再利用時の信頼性が悪化するという特性を有する。そのため、たとえばメモリシステム2が揮発性の記憶装置として使用される場合、メモリシステム2の電源オン時、前回の電源オフ時にデータの書き込み先として適用されていたブロックから書き込みを開始するか、未書き込み状態のページにダミーデータを書き込む等、全ページへのデータの書き込みが未完の状態でイレースが行われることを防ぐ対策を講じることが好ましい。なお、以下、データが途中のページまで書き込まれているブロックを、「途中止めブロック」とも称する。
【0097】
このような対策を講じるためには、メモリシステム2の電源オン時、前回の電源オフ時にデータの書き込み先として適用されていたブロック(途中止めブロック)を、NANDメモリ22内の多数のブロックの中から特定する必要がある。しかし、たとえば、各ブロックのデータの書き込み状況をシステムブロックへのシステムライトで記録しておくとすると、第1実施形態から第3実施形態で取り上げたイレース回数の場合と同様、メモリシステム2の応答性能を低下させる。
【0098】
そこで、第4実施形態のメモリシステム2においては、第1実施形態から第3実施形態でのイレース回数のように、ブロックの管理情報の1つである途中止めブロックを特定するための情報を、ユーザデータと共に各ブロックの先頭ページにメタデータとして格納する。
【0099】
図15は、第4実施形態のメモリシステム2の一構成例を示す図である。第1実施形態のメモリシステム2(
図2参照)と比較して、第4実施形態のメモリシステム2は、イレース回数管理部2111、イレース回数復元部2121およびイレース回数付与判断部213が、シーケンス番号管理部2114、途中止めブロック判定部2122およびシーケンス番号付与判断部215に置き換わっている。
【0100】
シーケンス番号管理部2114は、NANDブロック221の先頭ページを使って、各NANDブロック221について、データの書き込み先として適用された順番を示すシーケンス番号を管理する。シーケンス番号管理部2114によるシーケンス番号の管理方法の詳細については後述する。
【0101】
途中止めブロック判定部2122は、シーケンス番号管理部2114がNANDブロック221の先頭ページを使って管理するシーケンス番号に基づき、NANDメモリ22内の複数のNANDブロック221の中から途中止めブロックを判定する。途中止めブロック判定部2122による途中止めブロックの判定方法については後述する。
【0102】
シーケンス番号付与判断部215は、シーケンス番号をNANDメモリ22へ書き込むべきタイミングか否かを判断する。前述したように、第1実施形態のメモリシステム2においては、シーケンス番号管理部2114が、NANDブロック221の先頭ページを使って、各NANDブロック221についてシーケンス番号を管理する。シーケンス番号の管理方法については後述するが、シーケンス番号付与判断部215は、具体的には、NANDブロック221内の書き込み対象となっているページが先頭ページであるか否かを判断する。
【0103】
ここで、
図16を参照して、以上のような構成の第4実施形態のメモリシステム2において実行されるシーケンス番号の管理方法および電源オン時の途中止めブロックの判定方法について説明する。
【0104】
ここでは、ブロックB、ブロックC、ブロックAという順番で、ユーザデータの書き込み先のブロックとして適用されたことを想定する。たとえば、ブロックCが書き込み先のブロックとして適用されていたが、書き込みが最終ページまで達し、追記先管理部2112によって、次の書き込み先としてブロックAが選択された状況下にメモリシステム2がある場合について考える。ブロックAへの書き込みが開始されると、書き込み対象ページが先頭ページであることがシーケンス番号付与判断部215によって検知される。そうすると、シーケンス番号管理部2114は、たとえばメモリシステム2が使用を開始されてからの通し番号として管理するシーケンス番号を、ユーザデータとともに、ブロックAの先頭ページにメタデータとして書き込む(1)。その後、シーケンス番号管理部2114は、前述の通し番号などであるシーケンス番号を1つインクリメントする。以下、シーケンス番号管理部2114が管理する、前述の通し番号などであるシーケンス番号をグローバルシーケンス番号と称することがある。
【0105】
つまり、前述の、ブロックB、ブロックC、ブロックAという順番で、ユーザデータの書き込み先のブロックとして適用された場合には、ブロックBの先頭ページにメタデータとして格納されているシーケンス番号に1加えた値のシーケンス番号がブロックCの先頭ページにユーザデータと共にメタデータとして格納される。さらに、ブロックCの先頭ページにメタデータとして格納されているシーケンス番号に1加えた値のシーケンス番号がブロックAの先頭ページにユーザデータと共にメタデータとして格納される。なお、
図16のブロックA内の「次の追記先」と記されている部分は、次にデータを書き込むべきページを示している。
【0106】
このように、第4実施形態のメモリシステム2は、あるNANDブロック221がデータの書き込み先として適用される都度、グローバルシーケンス番号として管理するシーケンス番号をNANDブロック221の先頭ページにユーザデータと共にメタデータとして格納し、かつ、グローバルシーケンス番号をインクリメントすることで、たとえばシステムブロックへのシステムライトを行うことなく、シーケンス番号を管理する。なお、グローバルシーケンス番号をインクリメントするタイミングは、NANDブロック221の先頭ページへの格納前としてもよい。
【0107】
次に、ブロックAの途中までデータが書き込まれた状況下において、メモリシステム2が電源オフされ、その後、メモリシステム2が電源オンされた場合を想定して、電源復帰時の途中止めブロック(ブロックA)の判定方法について説明する。
【0108】
メモリシステム2が電源復帰すると、途中止めブロック判定部2122は、NANDメモリ22の全NANDブロック221について先頭ページの読み出しを実行する。途中止めブロック判定部2122は、先頭ページにメタデータとして格納されているシーケンス番号が全NANDブロック221の中で最大のNANDブロック221を途中止めブロックと判定する。また、シーケンス番号管理部2114は、この途中止めブロックの先頭ページに格納されているシーケンス番号に1を加えた値をグローバルシーケンス番号として管理する。
【0109】
このように、第4実施形態のメモリシステム2は、たとえばシステムブロックへのシステムライトを行うことなく、途中止めブロックを判定することができる。途中止めブロックを判定することで、メモリシステム2は、途中止めブロック内の「次の追記先」のページからユーザデータの書き込みを開始したり、「次の追記先」のページから最終ページまでダミーデータを書き込んだり等、当該途中止めブロックが未書き込み状態のページを含んだままイレースされることを防止することができる。
【0110】
図17は、第4実施形態のメモリシステム2のシーケンス番号付与時の動作の流れを示すフローチャートである。
【0111】
シーケンス番号付与判断部215は、追記先のNANDブロック221内のいずれのページが書き込み先となっているかを判定する(S801)。先頭ページと判定された場合(S802:YES)、シーケンス番号付与判断部215は、その時点でグローバルシーケンス番号として管理されているシーケンス番号を書き込みデータに付与する(S803)。次に、シーケンス番号付与判断部215は、グローバルシーケンス番号を1つインクリメントする(S804)。そして、書き込み先決定部211は、当該先頭ページへの書き込み処理を実行する(S805)。
【0112】
一方、先頭ページ以外と判定された場合(S802:NO)、書き込み先決定部211は、シーケンス番号が付与されていないユーザデータの先頭ページ以外のページへの書き込み処理を実行する(S805)。
【0113】
図18は、第4実施形態のメモリシステム2の途中止めブロック検出時の動作の流れを示すフローチャートである。
【0114】
途中止めブロック判定部2122は、まず、全対象ブロックの先頭ページの読み出しを行う(S901)。途中止めブロック判定部2122は、先頭ページに書かれたシーケンス番号が一番大きいブロックを全対象ブロックの中から検索する(S902)。途中止めブロック判定部2122は、シーケンス番号が一番大きいブロックを見つけたら(S902:YES)、そのブロックを途中止めブロックと判定する。シーケンス番号管理部2114は、途中止めブロックの先頭ページに書かれているシーケンス番号に1を加えた値をグローバルシーケンス番号として復元する(S903)。また、途中止めブロック判定部2122は、二分探査等により、途中止めブロックと判定したブロック内で最後に書き込みが行われたページを検出する(S904)。前述したように、書き込み済みの末端ページを検出できたら、そのページに後続するページから書き込みを開始してもよいし、そのページ以降の全ページにダミーデータを書き込んでもよい。
【0115】
以上のように、第4実施形態のメモリシステム2は、ブロックの管理情報の1つである途中止めブロックを判定するために必要な情報(たとえばシーケンス番号)を管理する負荷を低減することができる。
【0116】
(第5実施形態)
次に、第5実施形態について説明する。
【0117】
第4実施形態のメモリシステム2においては、ユーザデータの書き込み先として適用されているNAND221が、NANDメモリ22内で1つのみ存在することを前提としている。つまり、メモリシステム2の電源復帰時、検出すべき途中止めブロックは1つであることを前提としている。
【0118】
一方で、NANDメモリ22内のNANDブロック221を、たとえばユーザやプログラム毎に割り当てて、複数のユーザや複数のプログラムからのアクセス要求を並列的に受け付けられるようにすることがある。この場合、ユーザデータの書き込み先として適用されているNANDブロック221が、ユーザやプログラム毎に存在し得るので、メモリシステム2の電源復帰時、検出すべき途中止めブロックは1つとは限らない。そこで、第5実施形態のメモリシステム2は、さらに、複数の途中止めブロックを効率的に検出できるようにした。
【0119】
図19を参照して、第5実施形態のメモリシステム2において実行されるシーケンス番号の管理方法および電源オン時の途中止めブロックの判定方法について説明する。
【0120】
図19中、「リージョン」は、たとえばユーザやプログラム毎に割り当てられたNANDブロック221の集合体(グループ)である。ここでは、まず、あるユーザまたはプログラムが書き込みを要求するデータの書き込み先のブロックとしてブロックBが適用されており(リージョン0)、別のあるユーザまたはプログラムが書き込みを要求するデータの書き込み先のブロックとしてブロックDが適用されていた(リージョン1)ことを想定する。また、ブロックBが書き込み先のブロックとして適用されたのは、ブロックDが書き込み先のブロックとして適用された時よりも後であったものと想定する。つまり、この時点において、最も大きいシーケンス番号は、ブロックBに付与されている(シーケンス番号:8)。従って、グローバルシーケンス番号は、ブロックBに付与されているシーケンス番号に1を加えた値である(グローバルシーケンス番号:9)。
【0121】
次に、ブロックDが最終ページまでデータが書き込まれ、リージョン1における次の書き込み先のブロックとして、ブロックCが選択、適用されたものと想定する。第4実施形態で説明したように、この場合、シーケンス番号管理部2114は、その時点でのグローバルシーケンス番号をブロックCの先頭ページにメタデータとしてユーザデータと共に格納する(シーケンス番号=9)。これに加えて、第5実施形態においては、シーケンス番号管理部2114は、当該ブロックC以外で書き込み先のブロックとして適用されているブロック(ここでは、ブロックB)の識別子を、メタデータとしてさらに格納する(リージョン0=B)。識別子は、たとえば各ブロックに一意に割り当てられたブロック番号である。
【0122】
さらに次に、ブロックBが最終ページまでデータが書き込まれ、リージョン0における次の書き込み先のブロックとして、ブロックAが選択、適用されたものと想定する。そうすると、シーケンス番号管理部2114は、今度は、その時点でのグローバルシーケンス番号をブロックAの先頭ページにメタデータとしてユーザデータと共に格納し(シーケンス番号=10)、かつ、当該ブロックA以外で書き込み先のブロックとして適用されているブロック(ここでは、ブロックC)の識別子をメタデータとして格納する(リージョン1=C)。
【0123】
つまり、第5実施形態においては、各ブロックの先頭ページに、シーケンス番号と当該ブロック以外の途中止めブロックの識別子とを、メタデータとしてユーザデータと共に書き込む(1)。なお、あるブロックが書き込み先ブロックとして選択、適用された際、他に途中止めブロックが存在しない場合には、先頭ページへのメタデータとしての識別子の書き込みは行われない。一方、2以上の他の途中止めブロックが存在する場合には、それらすべての識別子の書き込みが行われる。
【0124】
次に、ブロックAとブロックCとが途中止めブロックとなっている状態で電源復帰した場合における途中止めブロック(ブロックA、C)の判定方法について説明する。
【0125】
途中止めブロック判定部2122は、第4実施形態と同様、NANDメモリ22の全NANDブロック221について、先頭ページの読み出しを実行する。途中止めブロック判定部2122は、まずは、先頭ページにメタデータとして格納されているシーケンス番号が全NANDブロック221の中で最大のNANDブロック221を途中止めブロックと判定する。ここでは、まず、ブロックAが途中止めブロックとして検出される。
【0126】
続いて、途中止めブロック判定部2122は、ブロックAの先頭ページにメタデータとして格納されている識別子(リージョン1=C)を使って、さらに途中止めブロックを検出する。つまり、ブロックAに続いて、ブロックCが芋づる式に途中止めブロックとして検出される。
【0127】
このように、第5実施形態においては、電源復帰時、各ブロック221の先頭ページに格納されているシーケンス番号と当該ブロック以外の識別子とに基づき、複数の途中止めブロックを検出する(2)。
【0128】
図20は、第5実施形態のメモリシステム2のシーケンス番号付与時の動作の流れを示すフローチャートである。
【0129】
シーケンス番号付与判断部215は、追記先のNANDブロック221内のいずれのページが書き込み先となっているかを判定する(S1001)。先頭ページと判定された場合(S1002:YES)、シーケンス番号付与判断部215は、その時点でグローバルシーケンス番号として管理されているシーケンス番号を書き込みデータに付与する(S1003)。次に、シーケンス番号付与判断部215は、グローバルシーケンス番号を1つインクリメントする(S1004)。
【0130】
また、シーケンス番号付与判断部215は、途中止めブロックとなっている他のNANDブロック221が存在するか否かを判定する(S1005)。存在する場合(S1005:YES)、シーケンス番号付与判断部215は、そのブロックの識別子(ブロック番号)をさらに書き込みデータに付与する(S1006)。そして、書き込み先決定部211は、当該先頭ページへの書き込み処理を実行する(S1007)。
【0131】
途中止めブロックとなっている他のNANDブロック221が存在しない場合(S1005:NO)、書き込み先決定部211は、S1006の処理をスキップし、シーケンス番号のみが付与されたユーザデータの先頭ページへの書き込み処理を実行する(S1007)。また、先頭ページ以外と判定された場合には(S1002:NO)、書き込み先決定部211は、シーケンス番号や途中止めブロックの識別子が付与されていないユーザデータの先頭ページ以外のページへの書き込み処理を実行する(S1007)。
【0132】
図21は、第5実施形態のメモリシステム2の途中止めブロック検出時の動作の流れを示すフローチャートである。
【0133】
途中止めブロック判定部2122は、まず、全対象ブロックの先頭ページの読み出しを行う(S1101)。途中止めブロック判定部2122は、先頭ページに書かれたシーケンス番号が一番大きいブロックを全対象ブロックの中から検索する(S1102)。途中止めブロック判定部2122は、シーケンス番号が一番大きいブロックを見つけたら(S1102:YES)、そのブロックを途中止めブロックと判定し、かつ、二分探査等により、そのブロック内で最後に書き込みが行われたページを検出する(S1103)。
【0134】
続いて、途中止めブロック判定部2122は、途中止めブロックと判定したブロックの先頭ページに他の途中止めブロックを示す識別子が格納されているか否かにより、他の途中止めブロックが存在するか否かを判定する(S1104)。存在する場合(S1104:YES)、途中止めブロック判定部2122は、当該ブロックを途中止めブロックと判定し、かつ、二分探査等により、他の途中止めブロックのすべてについて、最後に書き込みが行われたページを検出する(S1105)。
【0135】
以上のように、第5実施形態のメモリシステム2は、ブロックの管理情報の1つである途中止めブロックを判定するために必要な情報(たとえばシーケンス番号)を管理する負荷を低減することに加えて、複数の途中止めブロックを効率的に検出することができる。
【0136】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0137】
1…CPU、2…メインメモリ(メモリシステム)、3…外部記憶装置、4…タッチスクリーンディスプレイ、21…コントローラ、22…NANDメモリ、100…電子機器、
211…書込み先決定部、212…初期化部、213…イレース回数付与判断部、
214…システムブロック管理部、221…NANDブロック、2111…イレース回数管理部、2112…追記先管理部、2113…フリーブロック管理部、2121…イレース回数復元部、2141…システムデータ書き込み判断部、2142…差分生成部。