(57)【要約】【課題】不揮発性半導体メモリの管理データを効率的に復元可能とする。【解決手段】実施形態によれば、半導体メモリ装置は、不揮発性半導体メモリ、バックアップ部、第１の生成部、第２の生成部、書き込み部、復元部を備える。バックアップ部は、不揮発性半導体メモリに書き込まれたデータの識別データと書き込み位置とを関連付けた管理データに対応するバックアップデータを、不揮発性半導体メモリに書き込む。第１の生成部は、バックアップデータが不揮発性半導体メモリに書き込まれた後に管理データが更新された場合に、更新状態を示す更新データを生成する。第２の生成部は、不揮発性半導体メモリに書き込み済みであり更新データより前に生成された過去の更新データと更新データとを含む更新累積データを生成する。書き込み部は、更新累積データを不揮発性半導体メモリに書き込む。復元部は、不揮発性半導体メモリから読み出されたバックアップデータと更新累積データとに基づいて、管理データを復元する。【選択図】図１
2015219839.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性半導体メモリと、
前記不揮発性半導体メモリに書き込まれたデータの識別データと書き込み位置とを関連付けた管理データに対応するバックアップデータを、前記不揮発性半導体メモリに書き込むバックアップ部と、
前記バックアップデータが前記不揮発性半導体メモリに書き込まれた後に前記管理データが更新された場合に、更新状態を示す更新データを生成する第１の生成部と、
前記不揮発性半導体メモリに書き込み済みであり前記更新データより前に生成された過去の更新データと前記更新データとを含む更新累積データ、を生成する第２の生成部と、
前記更新累積データを前記不揮発性半導体メモリに書き込む書き込み部と、
前記不揮発性半導体メモリから読み出された前記バックアップデータと前記更新累積データとに基づいて、前記管理データを復元する復元部と、
を具備する半導体メモリ装置。
【請求項２】
前記更新累積データのサイズは、前記不揮発性半導体メモリの書き込み単位サイズであり、
前記更新データのサイズは、前記書き込み単位サイズより小さく、
前記第２の生成部は、前記更新データのサイズが前記書き込み単位サイズよりも小さいしきい値を越えた場合に、前記更新データを含む前記更新累積データの空き領域に、前記過去の更新データを加える、
請求項１の半導体メモリ装置。
【請求項３】
前記書き込み部は、前記不揮発性半導体メモリに対する所定数のデータ書き込みが発生するたびに、最新の更新データを含む前記更新累積データを前記不揮発性半導体メモリに書き込む、
請求項１又は請求項２の半導体メモリ装置。
【請求項４】
前記第２の生成部は、前記更新データと前記過去の更新データとの組み合わせのサイズが前記更新累積データの所定のサイズを越える場合に、前記過去の更新データのうちの最古の更新データを削除する、
請求項１乃至請求項３のいずれか１項の半導体メモリ装置。
【請求項５】
前記復元部は、前記不揮発性半導体メモリから読み出される第１の更新累積データに含まれる更新データと、第２の更新累積データに含まれる更新データとが重複しないように、前記不揮発性半導体メモリから読み出される前記第１及び第２の更新累積データを決定する、
請求項１乃至請求項４のいずれか１項の半導体メモリ装置。
【請求項６】
前記復元部は、前記第１の更新累積データが読み出しに失敗した更新データを含む場合に、前記第１の更新累積データの前又は後に前記不揮発性半導体メモリに書き込まれた第３の更新累積データを読み出す、
請求項５の半導体メモリ装置。
【請求項７】
不揮発性半導体メモリを制御するメモリコントローラの制御方法であって、
前記不揮発性半導体メモリに書き込まれたデータの識別データと書き込み位置とを関連付けた管理データに対応するバックアップデータを、前記不揮発性半導体メモリに書き込むことと、
前記バックアップデータが前記不揮発性半導体メモリに書き込まれた後に前記管理データが更新された場合に、更新状態を示す更新データを生成することと、
前記不揮発性半導体メモリに書き込み済みであり前記更新データより前に生成された過去の更新データと前記更新データとを含む更新累積データ、を生成することと、
前記更新累積データを前記不揮発性半導体メモリに書き込むことと、
前記不揮発性半導体メモリから読み出された前記バックアップデータと前記更新累積データとに基づいて、前記管理データを復元することと、
を具備する制御方法。
【請求項８】
不揮発性半導体メモリに書き込まれたデータの識別データと書き込み位置とを関連付けた管理データに対応するバックアップデータを、前記不揮発性半導体メモリに書き込むバックアップ部と、
前記バックアップデータが前記不揮発性半導体メモリに書き込まれた後に前記管理データが更新された場合に、更新状態を示す更新データを生成する第１の生成部と、
前記不揮発性半導体メモリに書き込み済みであり前記更新データより前に生成された過去の更新データと前記更新データとを含む更新累積データ、を生成する第２の生成部と、
前記更新累積データを前記不揮発性半導体メモリに書き込む書き込み部と、
前記不揮発性半導体メモリから読み出された前記バックアップデータと前記更新累積データとに基づいて、前記管理データを復元する復元部と、
を具備するメモリコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
実施形態は、半導体メモリを備える半導体メモリ装置、メモリコントローラの制御方法、及びメモリコントローラに関する。
【背景技術】
【０００２】
半導体メモリの一例に、ＮＡＮＤ型フラッシュメモリがある。ＮＡＮＤ型フラッシュメモリに対するデータ書き込みは、ページ単位で実行される。ＮＡＮＤ型フラッシュメモリでは、ブロック単位でデータが消去される。ブロックは、複数のページを含む。ＮＡＮＤ型フラッシュメモリでは、データが書き込まれた領域に再書き込みが行われる場合に、再書き込みの前に、再書き込み先の領域に対して消去が実行される必要がある。
【０００３】
ＮＡＮＤ型フラッシュメモリはこのような特性を持つため、データ書き込みは、空きページに対して順次行われる。空きページが減少すると、ガーベージコレクションが実行され、空きページが確保される。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１２−１２８６４３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本実施形態は、半導体メモリの管理データを効率的に復元可能な半導体メモリ装置、メモリコントローラの制御方法、及びメモリコントローラを提供する。
【課題を解決するための手段】
【０００６】
実施形態によれば、半導体メモリ装置は、不揮発性半導体メモリ、バックアップ部、第１の生成部、第２の生成部、書き込み部、復元部を備える。バックアップ部は、不揮発性半導体メモリに書き込まれたデータの識別データと書き込み位置とを関連付けた管理データに対応するバックアップデータを、不揮発性半導体メモリに書き込む。第１の生成部は、バックアップデータが不揮発性半導体メモリに書き込まれた後に管理データが更新された場合に、更新状態を示す更新データを生成する。第２の生成部は、不揮発性半導体メモリに書き込み済みであり更新データより前に生成された過去の更新データと更新データとを含む更新累積データ、を生成する。書き込み部は、更新累積データを不揮発性半導体メモリに書き込む。復元部は、不揮発性半導体メモリから読み出されたバックアップデータと更新累積データとに基づいて、管理データを復元する。
【図面の簡単な説明】
【０００７】
【図１】実施形態に係る半導体メモリ装置を例示するブロック図。
【図２】実施形態に係るメモリコントローラの書き込み処理を例示するフローチャート。
【図３】実施形態に係るメモリコントローラの復元処理を例示するフローチャート。
【図４】実施形態に係るページ及び差分ページの書き込み状態を例示するブロック図。
【図５】実施形態に係る復元処理を概念的に例示するためのブロック図。
【発明を実施するための形態】
【０００８】
以下、図面を参照して、発明の実施形態について説明する。なお、以下の説明において、略又は実質的に同一の構成要素及び機能については、同一符号を付し、必要に応じて説明を行う。
【０００９】
本実施形態は、不揮発性半導体メモリの管理データが更新される場合に、この更新状態を示す更新データ（以下、差分ログとする）を管理する。差分ログは、管理データの更新前と更新後とに基づいて得られる差分データに対応する。本実施形態では、管理データに対応するバックアップデータが不揮発性半導体メモリに書き込まれる。バックアップデータと差分ログとに基づいて、管理データが復元される。
【００１０】
本実施形態において、管理データはテーブル形式であるとするが、例えばリスト形式など他のデータ形式としてもよい。
【００１１】
図１は、本実施形態に係る半導体メモリ装置を例示するブロック図である。
【００１２】
半導体メモリ装置１は、不揮発性半導体メモリ２、揮発性メモリ３、及びメモリコントローラ４を備える。メモリコントローラ４において、通常のメモリコントローラと同じ構成要素及び機能については図示及び説明を省略する。
【００１３】
不揮発性半導体メモリ２は、例えば、ＮＡＮＤ型フラッシュメモリとするが、ＮＯＲ型フラッシュメモリ、ＭＲＡＭ（Magnetoresistive Random access memory：磁気抵抗メモリ）、ＰＲＡＭ（Phase change Random access memory：相変化メモリ）、ＲｅＲＡＭ（Resistive Random access memory：抵抗変化型メモリ）、又は、ＦｅＲＡＭ（Ferroelectric Random Access Memory）などのメモリでもよい。
【００１４】
不揮発性半導体メモリ２は、制御データ５、書き込み単位であるページデータ（以下、単にページと称する）Ｐ1〜Ｐk、管理テーブル（Look Up Table）６に対応するバックアップテーブル７を記憶する。ページＰkは、差分ページであるとする。
【００１５】
制御データ５は、例えば、各ページＰ1〜Ｐkの書き込み時間、各ページＰ1〜Ｐkの書き込み順序を示すシーケンシャルな番号、各ブロックに対して有効状態（データ書き込み済み）又は無効状態（データ消去済み）を示す有効／無効データ、有効ブロックに対する書き込みの発生時間、バックアップテーブル７の書き込み時間、最新のバックアップテーブル７が不揮発性半導体メモリ２に書き込まれた後に不揮発性半導体メモリ２に書き込まれたページＰ1〜Ｐkを特定するためのデータ、を含むとする。
【００１６】
制御データ５のうちのページＰ1〜Ｐkに関する情報は、各ページＰ1〜Ｐkのヘッダ又はフッタで管理されてもよい。また、制御データ５のうちのブロックに関する情報は、各ブロックのヘッダ又はフッタで管理されてもよい。
【００１７】
バックアップテーブル７は、管理テーブル６のバックアップデータであり、不揮発性半導体メモリ２に書き込まれた各ページＰ1〜Ｐkの識別データと書き込み位置（例えばアドレス）とを関連付けたデータである。
【００１８】
揮発性メモリ３は、例えば、不揮発性半導体メモリ２に対する書き込み前のデータ８、読み出し後のデータ９、少なくとも１つの差分ログＡ，Ｂを含む所定サイズの差分ページＰk、及び最新の管理テーブル６を記憶する。
【００１９】
メモリコントローラ４は、電源が異常にＯＦＦされ、電源が再度ＯＮされた場合に、不揮発性半導体メモリ２に書き込まれたページＰ1〜Ｐkの書き込み位置を認識可能とするために、管理テーブル６に対するバックアップテーブル７を不揮発性半導体メモリ２に書き込む。
【００２０】
不揮発性半導体メモリ２に対するバックアップテーブル７の書き込みが高頻度で繰り返されることによって不揮発性半導体メモリが疲弊することを軽減するために、メモリコントローラ４は、バックアップテーブル７の書き込みイベントが発生することを条件として、不揮発性半導体メモリ２にバックアップテーブル７を書き込む。バックアップテーブル７の書き込みイベントは、例えば、半導体メモリ装置１の電源ＯＦＦを正常に行う場合、不揮発性半導体メモリ２に書き込まれたページが所定の数に達した場合（差分ログの数が所定数に達した場合）、所定の期間が経過した場合、などである。そして、メモリコントローラ４は、例えば、異常に電源がＯＦＦされた後の起動処理において、不揮発性半導体メモリ２のバックアップテーブル７と、バックアップテーブル７の書き込み後に書き込まれたページＰ1〜Ｐkと書き込み位置との関係を示す差分ログＡ，Ｂとに基づいて、管理テーブル６を復元する。
【００２１】
メモリコントローラ４は、制御データ管理部１０、ページ書き込み部１１、管理テーブル管理部１２、バックアップ部１３、差分ログ生成部１４、差分ページ生成部１５、差分ページ書き込み部１６、復元部１７、読み出し部１８、を備える。メモリコントローラ４は、不揮発性半導体メモリ２の各種データ及び揮発性メモリ３の各種データに対する読み出し及び書き込みを行う。
【００２２】
制御データ管理部１０は、制御データ５を生成し、不揮発性半導体メモリ２に制御データ５を書き込む。また、制御データ管理部１０は、不揮発性半導体メモリ２から制御データ５を読み出す。
【００２３】
ページ書き込み部１１は、揮発性メモリ３からデータ８を読み出し、書き込み単位となるページＰ1〜Ｐk-1を生成し、生成されたページＰ1〜Ｐk-1を不揮発性半導体メモリ２に書き込む。
【００２４】
管理テーブル管理部１２は、不揮発性半導体メモリ２に書き込まれているページＰ1〜Ｐkに関するページ識別データと書き込み位置とを一意に関連付けた管理テーブル６を生成及び更新し、この管理テーブル６を揮発性メモリ３で管理する。
【００２５】
バックアップ部１３は、上記のようなバックアップテーブル７の書き込みイベントが発生することを条件として、揮発性メモリ３から管理テーブル６を読み出し、この管理テーブル６に対応するバックアップテーブル７を不揮発性半導体メモリ２に書き込む。
【００２６】
差分ログ生成部１４は、不揮発性半導体メモリ２にバックアップテーブル７が書き込まれた後に揮発性メモリ３の管理テーブル６が更新された場合に、更新前後に対応する差分ログＡ，Ｂを生成する。例えば、差分ログＡ，Ｂは、新たに不揮発性半導体メモリ２に書き込まれたページＰ1〜Ｐk-1のページ識別データと書き込み位置とを含む。
【００２７】
差分ページ生成部１５は、差分ページＰkを生成し、差分ページＰkを揮発性メモリ３に書き込む。差分ページＰkは、差分ログＢと、この差分ログＢより前に生成され不揮発性半導体メモリ２に書き込み済みの過去の差分ログＡとを含む。差分ページＰkは、更新累積データに対応する。すなわち、差分ページＰk内には、バックアップテーブル７に反映されていない差分ログＡ，Ｂが累積されていく。換言すれば、差分ページＰk内の差分ログＡ，Ｂは、多重化される。差分ログＡ，Ｂの合計のデータサイズが、ページサイズを越える場合には、差分ページＰkから最も古い差分ログが排除され、最新の差分ログが加えられる。以下で、より具体的に差分ページ生成部１５を説明する。
【００２８】
差分ページ生成部１５は、差分ログＢのサイズがページサイズよりも小さいしきい値を越えた場合、例えば、差分ログＢのサイズがページサイズの２分の１以下のしきい値に達した場合に、バックアップテーブル７が更新された後の一連の差分ログＡ，Ｂを含む差分ページＰkを生成する。換言すれば、差分ページ生成部１５は、差分ページＰkの空き領域がなくなるまで、最新の差分ログＢに、既に不揮発性半導体メモリ２に書き込まれている過去の差分ログＡをマージし、差分ページＰkを生成する。
【００２９】
過去の差分ログＡは、揮発性メモリ３に常駐されていてもよく、差分ページ生成部１５によって差分ページＰkの生成のたびに不揮発性半導体メモリ２から読み出されて利用されてもよい。過去の差分ログＡが揮発性メモリ３に常駐される場合には、最新の差分ログＢとマージされることでページサイズとなるサイズ分の過去の差分ログＡが揮発性メモリ３に保存される。最新の差分ログＢと過去の差分ログＡとがマージされたサイズが、ページサイズを越える場合には、最も古い過去の差分ログが取り除かれる。
【００３０】
差分ページ書き込み部１６は、差分ページＰkの書き込みイベントが発生することを条件として、揮発性メモリ３から差分ページＰkを読み出し、この差分ページＰkを不揮発性半導体メモリ２に書き込む。
【００３１】
差分ページＰkの書き込みイベントは、例えば、所定の数のページＰ1〜Ｐk-1が不揮発性半導体メモリ２に書き込まれた場合、不揮発性半導体メモリ２の所定エリアへ所定ページ数の書き込みが行われた場合、などである。
【００３２】
復元部１７は、半導体メモリ装置１の電源がＯＮされた後、不揮発性半導体メモリ２の制御データ５、不揮発性半導体メモリ２に最後に書き込まれた最新のバックアップテーブル７、最新のバックアップテーブル７の書き込み後に不揮発性半導体メモリ２に書き込まれた少なくとも１つの差分ページＰkを読み出す。そして、復元部１７は、制御データ５、バックアップテーブル７、差分ページＰkに基づいて、電源がＯＦＦされる前の管理テーブル６を生成し、生成された管理テーブル６を揮発性メモリ３に書き込む。本実施形態において、復元部１７は、読み出される差分ログが重複せず、かつ、読み出される差分ページが少なくなるように、読み出す差分ページＰkを決定する。さらに、復元部１７は、読み出された差分ページＰkに含まれている差分ログに読み出し異常がある場合に、この異常な差分ログを含む差分ページＰkの前又は後に不揮発性半導体メモリ２に書き込まれた差分ページを読み出し、正常な差分ログを取得する。
【００３３】
読み出し部１８は、揮発性メモリ３の管理テーブル６に基づいて、不揮発性半導体メモリ２からページＰ1〜Ｐk-1を読み出し、読み出し後のデータ９を揮発性メモリ３に書き込む。
【００３４】
図２は、本実施形態に係るメモリコントローラ４の書き込み処理を例示するフローチャートである。
【００３５】
ブロックＳ１において、ページ書き込み部１１は、不揮発性半導体メモリ２へのページ書き込みが発生したか否かを判断する。
【００３６】
ページ書き込みが発生していない場合（Ｓ１のＮｏ）、処理は、ブロックＳ１に移動する。
【００３７】
ページ書き込みが発生した場合（Ｓ１のＹｅｓ）、ブロックＳ２において、ページ書き込み部１１は、揮発性メモリ３のデータ８に基づいて、書き込み対象のページＰ１〜Ｐk-1を生成し、生成されたページＰ１〜Ｐk-1を不揮発性半導体メモリ２に書き込む。
【００３８】
ブロックＳ３において、管理テーブル管理部１２は、不揮発性半導体メモリ２に書き込まれたページＰ１〜Ｐk-1のページ識別データと格納位置とに基づいて、揮発性メモリ３の管理テーブル６を更新する。
【００３９】
ブロックＳ４において、バックアップ部１３は、不揮発性半導体メモリ２にバックアップテーブル７を書き込む条件が満たされているか否かを判断する。
【００４０】
バックアップテーブル７を書き込む条件が満たされている場合（Ｓ４のＹｅｓ）、ブロックＳ５において、バックアップ部１３は、揮発性メモリ３の管理テーブル６を読み出し、管理テーブル６に対応するバックアップテーブル７を不揮発性半導体メモリ２に書き込む。
【００４１】
ブロックＳ６において、差分ログ生成部１４と差分ページ生成部１５は、揮発性メモリ３の差分ログと差分ページとを初期化する。その後、処理は、ブロックＳ１に移動する。
【００４２】
バックアップテーブル７を書き込む条件が満たされていない場合（Ｓ４のＮｏ）、ブロックＳ７において、差分ログ生成部１４は、揮発性メモリ３の管理テーブル６の更新状態に基づいて、差分ログＢを生成する。
【００４３】
ブロックＳ８において、差分ページ生成部１５は、最新の差分ログＢと、この最新の差分ログＢの前に生成され不揮発性半導体メモリ２に書き込み済みの過去の差分ログＡとに基づいて、差分ページＰkを生成する。
【００４４】
ブロックＳ９において、差分ページ書き込み部１６は、差分ページＰkを不揮発性半導体メモリ２に書き込む条件を満たすか否かを判断する。
【００４５】
差分ページＰkを不揮発性半導体メモリ２に書き込む条件が満たされていない場合（Ｓ９のＮｏ）、処理は、ブロックＳ１に移動する。
【００４６】
差分ページＰkを不揮発性半導体メモリ２に書き込む条件が満たされている場合（Ｓ９のＹｅｓ）、ブロックＳ１０において、差分ページ書き込み部１６は、差分ページＰkを不揮発性半導体メモリ２に書き込む。
【００４７】
ブロックＳ１１において、メモリコントローラ４は、処理を終了するか否かを判断する。
【００４８】
処理を終了しない場合（Ｓ１１のＮｏ）に、処理はブロックＳ１に移動する。処理終了が判断された場合（Ｓ１１のＹｅｓ）、書き込み処理は完了する。
【００４９】
図３は、本実施形態に係るメモリコントローラ４の復元処理を例示するフローチャートである。
【００５０】
ブロックＴ１において、復元部１７は、揮発性メモリ３の管理テーブル６を復元する条件が満たされているか否かを判断する。
【００５１】
揮発性メモリ３の管理テーブル６を復元する条件が満たされていない場合（Ｔ１のＮｏ）、処理は、ブロックＴ１に移動する。
【００５２】
揮発性メモリ３の管理テーブル６を復元する条件が満たされた場合（Ｔ１のＹｅｓ）、ブロックＴ２において、復元部１７は、不揮発性半導体メモリ２の制御データ５及び最新のバックアップテーブル７を読み出す。
【００５３】
ブロックＴ３において、復元部１７は、不揮発性半導体メモリ２から、読み出されていない差分ログのうちの最新の差分ログＢと、当該差分ログＢより前に不揮発性半導体メモリ２に書き込み済みの差分ログＡをより多く含む差分ページＰkを決定し、決定された差分ページＰkを読み出す。
【００５４】
ブロックＴ４において、復元部１７は、読み出された制御データ５と差分ページＰkとに基づいて、バックアップテーブル７を更新する。
【００５５】
ブロックＴ５において、復元部１７は、不揮発性半導体メモリ２にバックアップテーブル７が書き込まれた後に生成された全ての差分ログＡ，Ｂが読み出されたか否かを判断する。
【００５６】
全ての差分ページが読み出されていない場合（Ｔ５のＮｏ）、処理は、ブロックＴ３に移動する。
【００５７】
全ての差分ページが読み出された場合（Ｔ５のＹｅｓ）、ブロックＴ６において、復元部１７は、上記のブロックＴ４で更新されたバックアップテーブル７を、復元された管理テーブル６として揮発性メモリ３に書き込む。
【００５８】
図４は、本実施形態に係るページ及び差分ページの書き込み状態を例示するブロック図である。以下、この図４を用いて、本実施形態に係る書き込み処理の具体例を説明する。
【００５９】
この図４は、ブロックＢn-3、ブロックＢn-2、ブロックＢn-1、ブロックＢnの順で、書き込みが実行される場合を例示している。
【００６０】
また、図４は、ブロックＢn-3、ブロックＢn-2、ブロックＢn-1、ブロックＢn内では、上から下への順で、ページ及び差分ページが書き込まれる場合を例示している。具体的には、ブロックＢn-3内では、ページＰn-3,1から差分ページＰn-3,2kの順で、書き込みが実行される。他のブロックＢn-2、ブロックＢn-1、ブロックＢnについても同様である。
【００６１】
図４では、最新のバックアップテーブル７が不揮発性半導体メモリ２に書き込まれた後に、ブロックＢn-3のページＰn-3,1以降のページが順次書き込まれた場合を示す。
【００６２】
まず、バックアップテーブル７が不揮発性半導体メモリ２に書き込まれた後、ページ書き込み部１１は、ページＰn-3,1〜ページＰn-3,k-1を、エリアＥＡに書き込む。この書き込みの際に、差分ログ生成部１４は、エリアＥＡに対応する差分ログＡを生成し、揮発性メモリ３に書き込む。
【００６３】
差分ページ生成部１５は、差分ログＡを含む差分ページＰn-3,kを生成する。
【００６４】
差分ページ書き込み部１６は、差分ページＰn-3,kを不揮発性半導体メモリ２に書き込む。
【００６５】
次に、ページ書き込み部１１は、ページＰn-3,K+1〜ページＰn-3,2k-1を、エリアＥＢに書き込む。この書き込みの際に、差分ログ生成部１４は、エリアＥＢに対応する差分ログＢを生成し、揮発性メモリ３に書き込む。
【００６６】
差分ページ生成部１５は、差分ログＢと過去の差分ログＡとを含む差分ページＰn-3,2kを生成する。
【００６７】
差分ページ書き込み部１６は、差分ページＰn-3,2kを不揮発性半導体メモリ２に書き込む。
【００６８】
ブロックＢn-2に対しても、上記ブロックＢn-3と同様の書き込み処理が実行される。
【００６９】
次に、ページ書き込み部１１は、ページＰn-1,1〜ページＰn-1,k-1を、エリアＥＥに書き込む。この書き込みの際に、差分ログ生成部１４は、エリアＥＥに対応する差分ログＥを生成し、揮発性メモリ３に書き込む。
【００７０】
差分ページ生成部１５は、差分ログＥと過去の差分ログＡ〜Ｄとをマージしたサイズが、ページサイズを超えるため、最も古い過去の差分ログＡを削除し、差分ログＥと過去の差分ログＢ〜Ｄとを含む差分ページＰn-1,kを生成する。
【００７１】
差分ページ書き込み部１６は、差分ページＰn-1,kを不揮発性半導体メモリ２に書き込む。
【００７２】
次に、ページ書き込み部１１は、ページＰn-1,k+1〜ページＰn-1,2k-1を、エリアＥＦに書き込む。この書き込みの際に、差分ログ生成部１４は、エリアＥＦに対応する差分ログＦを生成し、揮発性メモリ３に書き込む。
【００７３】
差分ページ生成部１５は、差分ログＦと過去の差分ログＢ〜Ｅとをマージしたサイズが、ページサイズを超えるため、最も古い過去の差分ログＢを削除し、差分ログＦと過去の差分ログＣ〜Ｅとを含む差分ページＰn-1,2kを生成する。
【００７４】
差分ページ書き込み部１６は、差分ページＰn-1,2kを不揮発性半導体メモリ２に書き込む。
【００７５】
ブロックＢnに対しても、上記ブロックＢn-1と同様の書き込み処理が実行される。
【００７６】
そして、ブロックＢnに対する書き込みが終了した後、バックアップ部１３がバックアップテーブル７を不揮発性半導体メモリ２に書き込む。その後は、上記と同様の処理が他のブロックに対して繰り返される。
【００７７】
図５は、本実施形態に係る復元処理を概念的に例示するためのブロック図である。以下、この図５を用いて、本実施形態に係る復元処理の具体例を説明する。
【００７８】
まず、復元部１７は、最新のバックアップテーブル７と制御データ５とを不揮発性半導体メモリ２から読み出し、さらに、不揮発性半導体メモリ２に最後に書き込まれた最新の差分ページＰn,2kを読み出す。最新の差分ページＰn,2kは、最新の差分ログＨと、この最新の差分ログＨよりも過去に生成された複数（数エリア分）の差分ログＥ〜Ｇを含む。
【００７９】
復元部１７は、最新の差分ページＰn,2kに基づいて、読み出された最新のバックアップテーブル７を更新する。
【００８０】
次に、復元部１７は、最新の差分ページＰn,2kに含まれていない差分ログ（読み出されていない差分ログ）Ａ〜Ｄのうちの最新の差分ログＤを含む差分ページＰn-2,2kを読み出す。この差分ページＰn-2,2kは、読み出されていない差分ログＡ〜Ｄのうちの最新の差分ログＤと、この差分ログＤよりも過去に生成された複数の差分ログＡ〜Ｃを含む。例えば、この２回目以降の差分ページの読み出しでは、読み出されていない差分ログＡ〜Ｄのうちで最新の差分ログＤを含み、かつ、他の読み出されていない差分ログＡ〜Ｃをより多く含む差分ページＰn-2,2kが、決定され、読み出される。
【００８１】
次に、復元部１７は、読み出された差分ページＰn-2,2kに基づいて、バックアップテーブル７を更新する。
【００８２】
その後、同様の処理を必要に応じて繰り返すことにより、管理テーブル６が復元される。
【００８３】
復元処理において、ある差分ログの読み出しが失敗した場合、復元部１７は、読み出しの失敗した差分ログを含む差分ページの前に書き込まれた差分ページ又は後に書き込まれた差分ページを読み出す。
【００８４】
復元部１７は、読み出された差分ページに、読み出しが失敗した差分ログに対応する差分ログがあり、この差分ログの読み出しに成功した場合に、この差分ログを用いてバックアップテーブル７を更新する。
【００８５】
復元部１７は、読み出された差分ページに読み出しを失敗した差分ログが含まれていない場合に、さらに、他の差分ページを確認する。復元部１７は、読み出しが失敗した差分ログに対応する差分ログが見つかるまで同様の処理を繰り返す。
【００８６】
上記のような復元部１７による復元処理は、バックアップテーブル７が不揮発性半導体メモリ２に書き込まれた後の全ての差分ログによって更新されるまで、実行される。
【００８７】
復元部１７は、不揮発性半導体メモリ２から読み出すことができない差分ログが存在する場合、及び／又は、差分ログを書き込む直前に不正な電源遮断が発生した場合、読み出すことができない差分ログに対応するエリアのログ（例えば、当該エリアに配置されているページに付されているヘッダ又はフッタに含まれるログ、当該エリアに対応するブロックのヘッダ又はフッタに含まれるログ、など）を読み出す。復元部１７は、読み出されたログに基づいてバックアップテーブル７を更新し、管理テーブル６を復元する。このようなページ又はブロックに付されているログに基づく復元は、差分ログに基づく復元の前に実行されてもよい。
【００８８】
以下で、比較例と比較しつつ、本実施形態の作用及び効果を説明する。
【００８９】
管理テーブル６は、不揮発性半導体メモリ２の広いエリアを管理対象とするため、大容量となる。このため、管理テーブル６に対応するバックアップテーブル７を高頻度で不揮発性半導体メモリ２に書き込むと、不揮発性半導体メモリ２の劣化が早まる場合がある。そこで、比較例では、以下の２種類の差分ログを併用して、管理テーブル６の復元を実現すると仮定する。
【００９０】
（１）ページのヘッダ又はフッタに含まれている識別データ（例えば、ＬＢＡ：Local Block Addressing）
（２）単純に不揮発性半導体メモリ２に書き込まれる、連続する複数のページに対する時系列順のリスト形式のログ
比較例では、管理テーブル６を復元する場合に、まず、上記（２）のリスト形式のログによってまとめて差分ログが取得される。電源ＯＦＦのタイミングによっては、リスト形式のログが存在しない場合、又は、読み出されたリスト形式のログが破壊されている場合がある。このように、正常にリスト形式のログが読み出されない場合に、比較例では、ページに個別に付されている上記（１）のログが取得される。
【００９１】
この比較例では、（２）のリストを十分長くすると、１回の不揮発性半導体メモリ２に対する読み出しで、多くのログを取得できるが、（２）のログを取得できなかった範囲については、（１）のログを取得するための読み出し回数が多くなり、管理テーブル６の復元処理に時間がかかる場合があり、（１）のログの読み出しに失敗する可能性も高くなる。この場合、どのページのページ識別データが壊れたかを判別することが困難であり、半導体メモリ装置を故障とみなし、動作が停止される場合がある。
【００９２】
比較例において、（２）の差分ログのリストを短くすると、（２）のログがなかった場合のペナルティは軽減される。しかしながら、不揮発性半導体メモリ２に対する１回の読み出しで取得されるログの量が少なくなるため、（２）のログに対する読み出し回数が多くなり、リストのサイズの長さによっては、不揮発性半導体メモリ２に無駄なパディングデータを書き込むことになる。
【００９３】
これに対して、本実施形態においては、不揮発性半導体メモリ２に最新の差分ログＢを書き込む場合に、最新の差分ログＢと過去の差分ログＡとをマージした差分ページＰkが生成され、この差分ページＰkが不揮発性半導体メモリ２に書き込まれる。
【００９４】
これにより、半導体メモリ装置１に対する差分ログの多重化に伴う書き込み回数の増加を抑制するとともに、半導体メモリ装置１が起動された場合の差分ログの読み出し回数を低減することができ、また、管理テーブル６の復元処理時間を短縮することができ、復元に必要な差分ログが取得できないことを防止することができる。
【００９５】
本実施形態においては、差分ログのサイズがページサイズより小さいしきい値に達した場合に、不揮発性半導体メモリに書き込まれる。これにより、半導体メモリ装置が異常に電源ＯＦＦされた場合に失われる差分ログの量を抑制することができる。
【００９６】
本実施形態においては、最新の差分ログＢを含む差分ページＰkの空き領域に、不揮発性半導体メモリ２に書き込み済みの過去の差分ログＡが組み込まれ、複数の差分ログＡ，Ｂが多重化される。これにより、復元処理において読み出しが必要な差分ページの数を削減することができ、復元処理の時間を短縮化することができる。半導体メモリ装置１が異常に電源ＯＦＦされた場合に、多重化された差分ログＡ，Ｂが不揮発性半導体メモリ２から読み出され、管理データ６の復元に用いられるため、差分ページの読み出し回数を抑制することができる。
【００９７】
本実施形態においては、ある差分ページＰkに含まれているある差分ログＡに対して不揮発性半導体メモリ２からの読み出しが失敗した場合に、同じ差分ログＡを含む他の差分ページが読み出され、差分ログＡの読み出しの失敗をリカバリすることができる。したがって、管理テーブル６の少なくとも１部が消失される可能性を軽減することができる。
【００９８】
本実施形態においては、例えばバックアップテーブル７の更新に必要な差分ページ又は差分ログが不揮発性半導体メモリ２から読み出されない場合に、例えば、ページに個別に付されているログが不揮発性半導体メモリ２から取得され、バックアップテーブル７の復元処理に利用することができる。
【００９９】
上記の本実施形態においては、データに基づくページＰ1〜Ｐk-1と、差分ページＰkとが区別されることなく、連続で書き込まれている。しかしながら、データに基づくページＰ1〜Ｐk-1と差分ページＰkとは、それぞれ区分けされた状態で不揮発性半導体メモリ２に書き込まれてもよい。例えば、データに基づくページＰ1〜Ｐk-1と差分ページＰkとは、別のブロック又は別のエリアに書き込まれてもよい。
【０１００】
本実施形態に係るメモリコントローラ４の少なくとも１部の機能は、例えばファームウェアなどのプログラムによって実現されてもよい。
【０１０１】
本実施形態に係るメモリコントローラ４の少なくとも１部の機能は、例えばSystem-On-a-Chip（ＳｏＣ）によって実現されてもよい。
【０１０２】
本実施形態に係る不揮発性半導体メモリ２は、例えば、Solid State Drive（ＳＳＤ）の少なくとも１部として用いられてもよく、ハードディスクのキャッシュメモリとして用いられてもよい。
【０１０３】
本実施形態に係る不揮発性半導体メモリ２は、複数の不揮発性半導体メモリに分割されていてもよい。
【０１０４】
本実施形態で説明された各種の処理の順序は、適宜変更されてもよい。例えば、復元部１７の処理順序は、まず制御データ５と、バックアップテーブル７と、更新用の全ての差分ページＰn-2,2k，Ｐn,2kを読み出し、更新用の差分ページＰn-2,2k，Ｐn,2kに基づいて、バックアップテーブル７を一括更新し、管理テーブル６を復元してもよい。
【０１０５】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１０６】
１…半導体メモリ装置、２…不揮発性半導体メモリ、３…揮発性メモリ、４…メモリコントローラ、５…制御データ、６…管理テーブル、７…バックアップテーブル、１０…制御データ管理部、１１…ページ書き込み部、１２…管理テーブル管理部、１３…バックアップ部、１４…差分ログ生成部、１５…差分ページ生成部、１６…差分ページ書き込み部、１７…復元部、１８…読み出し部、Ｐ1〜Ｐk-1…ページ、Ｐk…差分ページ
【図１】
2015219839.tif 000003
【図２】
2015219839.tif 000004
【図３】
2015219839.tif 000005
【図４】
2015219839.tif 000006
【図５】
2015219839.tif 000007