JP2015219839A - 半導体メモリ装置、メモリコントローラの制御方法、及びメモリコントローラ - Google Patents
半導体メモリ装置、メモリコントローラの制御方法、及びメモリコントローラ Download PDFInfo
- Publication number
- JP2015219839A JP2015219839A JP2014104695A JP2014104695A JP2015219839A JP 2015219839 A JP2015219839 A JP 2015219839A JP 2014104695 A JP2014104695 A JP 2014104695A JP 2014104695 A JP2014104695 A JP 2014104695A JP 2015219839 A JP2015219839 A JP 2015219839A
- Authority
- JP
- Japan
- Prior art keywords
- data
- semiconductor memory
- update
- nonvolatile semiconductor
- difference
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1471—Saving, restoring, recovering or retrying involving logging of persistent data for recovery
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1448—Management of the data involved in backup or backup restore
- G06F11/1451—Management of the data involved in backup or backup restore by selection of backup contents
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/065—Replication mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1441—Resetting or repowering
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Quality & Reliability (AREA)
- Computer Security & Cryptography (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
【課題】不揮発性半導体メモリの管理データを効率的に復元可能とする。【解決手段】実施形態によれば、半導体メモリ装置は、不揮発性半導体メモリ、バックアップ部、第1の生成部、第2の生成部、書き込み部、復元部を備える。バックアップ部は、不揮発性半導体メモリに書き込まれたデータの識別データと書き込み位置とを関連付けた管理データに対応するバックアップデータを、不揮発性半導体メモリに書き込む。第1の生成部は、バックアップデータが不揮発性半導体メモリに書き込まれた後に管理データが更新された場合に、更新状態を示す更新データを生成する。第2の生成部は、不揮発性半導体メモリに書き込み済みであり更新データより前に生成された過去の更新データと更新データとを含む更新累積データを生成する。書き込み部は、更新累積データを不揮発性半導体メモリに書き込む。復元部は、不揮発性半導体メモリから読み出されたバックアップデータと更新累積データとに基づいて、管理データを復元する。【選択図】図1
Description
実施形態は、半導体メモリを備える半導体メモリ装置、メモリコントローラの制御方法、及びメモリコントローラに関する。
半導体メモリの一例に、NAND型フラッシュメモリがある。NAND型フラッシュメモリに対するデータ書き込みは、ページ単位で実行される。NAND型フラッシュメモリでは、ブロック単位でデータが消去される。ブロックは、複数のページを含む。NAND型フラッシュメモリでは、データが書き込まれた領域に再書き込みが行われる場合に、再書き込みの前に、再書き込み先の領域に対して消去が実行される必要がある。
NAND型フラッシュメモリはこのような特性を持つため、データ書き込みは、空きページに対して順次行われる。空きページが減少すると、ガーベージコレクションが実行され、空きページが確保される。
本実施形態は、半導体メモリの管理データを効率的に復元可能な半導体メモリ装置、メモリコントローラの制御方法、及びメモリコントローラを提供する。
実施形態によれば、半導体メモリ装置は、不揮発性半導体メモリ、バックアップ部、第1の生成部、第2の生成部、書き込み部、復元部を備える。バックアップ部は、不揮発性半導体メモリに書き込まれたデータの識別データと書き込み位置とを関連付けた管理データに対応するバックアップデータを、不揮発性半導体メモリに書き込む。第1の生成部は、バックアップデータが不揮発性半導体メモリに書き込まれた後に管理データが更新された場合に、更新状態を示す更新データを生成する。第2の生成部は、不揮発性半導体メモリに書き込み済みであり更新データより前に生成された過去の更新データと更新データとを含む更新累積データ、を生成する。書き込み部は、更新累積データを不揮発性半導体メモリに書き込む。復元部は、不揮発性半導体メモリから読み出されたバックアップデータと更新累積データとに基づいて、管理データを復元する。
以下、図面を参照して、発明の実施形態について説明する。なお、以下の説明において、略又は実質的に同一の構成要素及び機能については、同一符号を付し、必要に応じて説明を行う。
本実施形態は、不揮発性半導体メモリの管理データが更新される場合に、この更新状態を示す更新データ(以下、差分ログとする)を管理する。差分ログは、管理データの更新前と更新後とに基づいて得られる差分データに対応する。本実施形態では、管理データに対応するバックアップデータが不揮発性半導体メモリに書き込まれる。バックアップデータと差分ログとに基づいて、管理データが復元される。
本実施形態において、管理データはテーブル形式であるとするが、例えばリスト形式など他のデータ形式としてもよい。
図1は、本実施形態に係る半導体メモリ装置を例示するブロック図である。
半導体メモリ装置1は、不揮発性半導体メモリ2、揮発性メモリ3、及びメモリコントローラ4を備える。メモリコントローラ4において、通常のメモリコントローラと同じ構成要素及び機能については図示及び説明を省略する。
不揮発性半導体メモリ2は、例えば、NAND型フラッシュメモリとするが、NOR型フラッシュメモリ、MRAM(Magnetoresistive Random access memory:磁気抵抗メモリ)、PRAM(Phase change Random access memory:相変化メモリ)、ReRAM(Resistive Random access memory:抵抗変化型メモリ)、又は、FeRAM(Ferroelectric Random Access Memory)などのメモリでもよい。
不揮発性半導体メモリ2は、制御データ5、書き込み単位であるページデータ(以下、単にページと称する)P1〜Pk、管理テーブル(Look Up Table)6に対応するバックアップテーブル7を記憶する。ページPkは、差分ページであるとする。
制御データ5は、例えば、各ページP1〜Pkの書き込み時間、各ページP1〜Pkの書き込み順序を示すシーケンシャルな番号、各ブロックに対して有効状態(データ書き込み済み)又は無効状態(データ消去済み)を示す有効/無効データ、有効ブロックに対する書き込みの発生時間、バックアップテーブル7の書き込み時間、最新のバックアップテーブル7が不揮発性半導体メモリ2に書き込まれた後に不揮発性半導体メモリ2に書き込まれたページP1〜Pkを特定するためのデータ、を含むとする。
制御データ5のうちのページP1〜Pkに関する情報は、各ページP1〜Pkのヘッダ又はフッタで管理されてもよい。また、制御データ5のうちのブロックに関する情報は、各ブロックのヘッダ又はフッタで管理されてもよい。
バックアップテーブル7は、管理テーブル6のバックアップデータであり、不揮発性半導体メモリ2に書き込まれた各ページP1〜Pkの識別データと書き込み位置(例えばアドレス)とを関連付けたデータである。
揮発性メモリ3は、例えば、不揮発性半導体メモリ2に対する書き込み前のデータ8、読み出し後のデータ9、少なくとも1つの差分ログA,Bを含む所定サイズの差分ページPk、及び最新の管理テーブル6を記憶する。
メモリコントローラ4は、電源が異常にOFFされ、電源が再度ONされた場合に、不揮発性半導体メモリ2に書き込まれたページP1〜Pkの書き込み位置を認識可能とするために、管理テーブル6に対するバックアップテーブル7を不揮発性半導体メモリ2に書き込む。
不揮発性半導体メモリ2に対するバックアップテーブル7の書き込みが高頻度で繰り返されることによって不揮発性半導体メモリが疲弊することを軽減するために、メモリコントローラ4は、バックアップテーブル7の書き込みイベントが発生することを条件として、不揮発性半導体メモリ2にバックアップテーブル7を書き込む。バックアップテーブル7の書き込みイベントは、例えば、半導体メモリ装置1の電源OFFを正常に行う場合、不揮発性半導体メモリ2に書き込まれたページが所定の数に達した場合(差分ログの数が所定数に達した場合)、所定の期間が経過した場合、などである。そして、メモリコントローラ4は、例えば、異常に電源がOFFされた後の起動処理において、不揮発性半導体メモリ2のバックアップテーブル7と、バックアップテーブル7の書き込み後に書き込まれたページP1〜Pkと書き込み位置との関係を示す差分ログA,Bとに基づいて、管理テーブル6を復元する。
メモリコントローラ4は、制御データ管理部10、ページ書き込み部11、管理テーブル管理部12、バックアップ部13、差分ログ生成部14、差分ページ生成部15、差分ページ書き込み部16、復元部17、読み出し部18、を備える。メモリコントローラ4は、不揮発性半導体メモリ2の各種データ及び揮発性メモリ3の各種データに対する読み出し及び書き込みを行う。
制御データ管理部10は、制御データ5を生成し、不揮発性半導体メモリ2に制御データ5を書き込む。また、制御データ管理部10は、不揮発性半導体メモリ2から制御データ5を読み出す。
ページ書き込み部11は、揮発性メモリ3からデータ8を読み出し、書き込み単位となるページP1〜Pk-1を生成し、生成されたページP1〜Pk-1を不揮発性半導体メモリ2に書き込む。
管理テーブル管理部12は、不揮発性半導体メモリ2に書き込まれているページP1〜Pkに関するページ識別データと書き込み位置とを一意に関連付けた管理テーブル6を生成及び更新し、この管理テーブル6を揮発性メモリ3で管理する。
バックアップ部13は、上記のようなバックアップテーブル7の書き込みイベントが発生することを条件として、揮発性メモリ3から管理テーブル6を読み出し、この管理テーブル6に対応するバックアップテーブル7を不揮発性半導体メモリ2に書き込む。
差分ログ生成部14は、不揮発性半導体メモリ2にバックアップテーブル7が書き込まれた後に揮発性メモリ3の管理テーブル6が更新された場合に、更新前後に対応する差分ログA,Bを生成する。例えば、差分ログA,Bは、新たに不揮発性半導体メモリ2に書き込まれたページP1〜Pk-1のページ識別データと書き込み位置とを含む。
差分ページ生成部15は、差分ページPkを生成し、差分ページPkを揮発性メモリ3に書き込む。差分ページPkは、差分ログBと、この差分ログBより前に生成され不揮発性半導体メモリ2に書き込み済みの過去の差分ログAとを含む。差分ページPkは、更新累積データに対応する。すなわち、差分ページPk内には、バックアップテーブル7に反映されていない差分ログA,Bが累積されていく。換言すれば、差分ページPk内の差分ログA,Bは、多重化される。差分ログA,Bの合計のデータサイズが、ページサイズを越える場合には、差分ページPkから最も古い差分ログが排除され、最新の差分ログが加えられる。以下で、より具体的に差分ページ生成部15を説明する。
差分ページ生成部15は、差分ログBのサイズがページサイズよりも小さいしきい値を越えた場合、例えば、差分ログBのサイズがページサイズの2分の1以下のしきい値に達した場合に、バックアップテーブル7が更新された後の一連の差分ログA,Bを含む差分ページPkを生成する。換言すれば、差分ページ生成部15は、差分ページPkの空き領域がなくなるまで、最新の差分ログBに、既に不揮発性半導体メモリ2に書き込まれている過去の差分ログAをマージし、差分ページPkを生成する。
過去の差分ログAは、揮発性メモリ3に常駐されていてもよく、差分ページ生成部15によって差分ページPkの生成のたびに不揮発性半導体メモリ2から読み出されて利用されてもよい。過去の差分ログAが揮発性メモリ3に常駐される場合には、最新の差分ログBとマージされることでページサイズとなるサイズ分の過去の差分ログAが揮発性メモリ3に保存される。最新の差分ログBと過去の差分ログAとがマージされたサイズが、ページサイズを越える場合には、最も古い過去の差分ログが取り除かれる。
差分ページ書き込み部16は、差分ページPkの書き込みイベントが発生することを条件として、揮発性メモリ3から差分ページPkを読み出し、この差分ページPkを不揮発性半導体メモリ2に書き込む。
差分ページPkの書き込みイベントは、例えば、所定の数のページP1〜Pk-1が不揮発性半導体メモリ2に書き込まれた場合、不揮発性半導体メモリ2の所定エリアへ所定ページ数の書き込みが行われた場合、などである。
復元部17は、半導体メモリ装置1の電源がONされた後、不揮発性半導体メモリ2の制御データ5、不揮発性半導体メモリ2に最後に書き込まれた最新のバックアップテーブル7、最新のバックアップテーブル7の書き込み後に不揮発性半導体メモリ2に書き込まれた少なくとも1つの差分ページPkを読み出す。そして、復元部17は、制御データ5、バックアップテーブル7、差分ページPkに基づいて、電源がOFFされる前の管理テーブル6を生成し、生成された管理テーブル6を揮発性メモリ3に書き込む。本実施形態において、復元部17は、読み出される差分ログが重複せず、かつ、読み出される差分ページが少なくなるように、読み出す差分ページPkを決定する。さらに、復元部17は、読み出された差分ページPkに含まれている差分ログに読み出し異常がある場合に、この異常な差分ログを含む差分ページPkの前又は後に不揮発性半導体メモリ2に書き込まれた差分ページを読み出し、正常な差分ログを取得する。
読み出し部18は、揮発性メモリ3の管理テーブル6に基づいて、不揮発性半導体メモリ2からページP1〜Pk-1を読み出し、読み出し後のデータ9を揮発性メモリ3に書き込む。
図2は、本実施形態に係るメモリコントローラ4の書き込み処理を例示するフローチャートである。
ブロックS1において、ページ書き込み部11は、不揮発性半導体メモリ2へのページ書き込みが発生したか否かを判断する。
ページ書き込みが発生していない場合(S1のNo)、処理は、ブロックS1に移動する。
ページ書き込みが発生した場合(S1のYes)、ブロックS2において、ページ書き込み部11は、揮発性メモリ3のデータ8に基づいて、書き込み対象のページP1〜Pk-1を生成し、生成されたページP1〜Pk-1を不揮発性半導体メモリ2に書き込む。
ブロックS3において、管理テーブル管理部12は、不揮発性半導体メモリ2に書き込まれたページP1〜Pk-1のページ識別データと格納位置とに基づいて、揮発性メモリ3の管理テーブル6を更新する。
ブロックS4において、バックアップ部13は、不揮発性半導体メモリ2にバックアップテーブル7を書き込む条件が満たされているか否かを判断する。
バックアップテーブル7を書き込む条件が満たされている場合(S4のYes)、ブロックS5において、バックアップ部13は、揮発性メモリ3の管理テーブル6を読み出し、管理テーブル6に対応するバックアップテーブル7を不揮発性半導体メモリ2に書き込む。
ブロックS6において、差分ログ生成部14と差分ページ生成部15は、揮発性メモリ3の差分ログと差分ページとを初期化する。その後、処理は、ブロックS1に移動する。
バックアップテーブル7を書き込む条件が満たされていない場合(S4のNo)、ブロックS7において、差分ログ生成部14は、揮発性メモリ3の管理テーブル6の更新状態に基づいて、差分ログBを生成する。
ブロックS8において、差分ページ生成部15は、最新の差分ログBと、この最新の差分ログBの前に生成され不揮発性半導体メモリ2に書き込み済みの過去の差分ログAとに基づいて、差分ページPkを生成する。
ブロックS9において、差分ページ書き込み部16は、差分ページPkを不揮発性半導体メモリ2に書き込む条件を満たすか否かを判断する。
差分ページPkを不揮発性半導体メモリ2に書き込む条件が満たされていない場合(S9のNo)、処理は、ブロックS1に移動する。
差分ページPkを不揮発性半導体メモリ2に書き込む条件が満たされている場合(S9のYes)、ブロックS10において、差分ページ書き込み部16は、差分ページPkを不揮発性半導体メモリ2に書き込む。
ブロックS11において、メモリコントローラ4は、処理を終了するか否かを判断する。
処理を終了しない場合(S11のNo)に、処理はブロックS1に移動する。処理終了が判断された場合(S11のYes)、書き込み処理は完了する。
図3は、本実施形態に係るメモリコントローラ4の復元処理を例示するフローチャートである。
ブロックT1において、復元部17は、揮発性メモリ3の管理テーブル6を復元する条件が満たされているか否かを判断する。
揮発性メモリ3の管理テーブル6を復元する条件が満たされていない場合(T1のNo)、処理は、ブロックT1に移動する。
揮発性メモリ3の管理テーブル6を復元する条件が満たされた場合(T1のYes)、ブロックT2において、復元部17は、不揮発性半導体メモリ2の制御データ5及び最新のバックアップテーブル7を読み出す。
ブロックT3において、復元部17は、不揮発性半導体メモリ2から、読み出されていない差分ログのうちの最新の差分ログBと、当該差分ログBより前に不揮発性半導体メモリ2に書き込み済みの差分ログAをより多く含む差分ページPkを決定し、決定された差分ページPkを読み出す。
ブロックT4において、復元部17は、読み出された制御データ5と差分ページPkとに基づいて、バックアップテーブル7を更新する。
ブロックT5において、復元部17は、不揮発性半導体メモリ2にバックアップテーブル7が書き込まれた後に生成された全ての差分ログA,Bが読み出されたか否かを判断する。
全ての差分ページが読み出されていない場合(T5のNo)、処理は、ブロックT3に移動する。
全ての差分ページが読み出された場合(T5のYes)、ブロックT6において、復元部17は、上記のブロックT4で更新されたバックアップテーブル7を、復元された管理テーブル6として揮発性メモリ3に書き込む。
図4は、本実施形態に係るページ及び差分ページの書き込み状態を例示するブロック図である。以下、この図4を用いて、本実施形態に係る書き込み処理の具体例を説明する。
この図4は、ブロックBn-3、ブロックBn-2、ブロックBn-1、ブロックBnの順で、書き込みが実行される場合を例示している。
また、図4は、ブロックBn-3、ブロックBn-2、ブロックBn-1、ブロックBn内では、上から下への順で、ページ及び差分ページが書き込まれる場合を例示している。具体的には、ブロックBn-3内では、ページPn-3,1から差分ページPn-3,2kの順で、書き込みが実行される。他のブロックBn-2、ブロックBn-1、ブロックBnについても同様である。
図4では、最新のバックアップテーブル7が不揮発性半導体メモリ2に書き込まれた後に、ブロックBn-3のページPn-3,1以降のページが順次書き込まれた場合を示す。
まず、バックアップテーブル7が不揮発性半導体メモリ2に書き込まれた後、ページ書き込み部11は、ページPn-3,1〜ページPn-3,k-1を、エリアEAに書き込む。この書き込みの際に、差分ログ生成部14は、エリアEAに対応する差分ログAを生成し、揮発性メモリ3に書き込む。
差分ページ生成部15は、差分ログAを含む差分ページPn-3,kを生成する。
差分ページ書き込み部16は、差分ページPn-3,kを不揮発性半導体メモリ2に書き込む。
次に、ページ書き込み部11は、ページPn-3,K+1〜ページPn-3,2k-1を、エリアEBに書き込む。この書き込みの際に、差分ログ生成部14は、エリアEBに対応する差分ログBを生成し、揮発性メモリ3に書き込む。
差分ページ生成部15は、差分ログBと過去の差分ログAとを含む差分ページPn-3,2kを生成する。
差分ページ書き込み部16は、差分ページPn-3,2kを不揮発性半導体メモリ2に書き込む。
ブロックBn-2に対しても、上記ブロックBn-3と同様の書き込み処理が実行される。
次に、ページ書き込み部11は、ページPn-1,1〜ページPn-1,k-1を、エリアEEに書き込む。この書き込みの際に、差分ログ生成部14は、エリアEEに対応する差分ログEを生成し、揮発性メモリ3に書き込む。
差分ページ生成部15は、差分ログEと過去の差分ログA〜Dとをマージしたサイズが、ページサイズを超えるため、最も古い過去の差分ログAを削除し、差分ログEと過去の差分ログB〜Dとを含む差分ページPn-1,kを生成する。
差分ページ書き込み部16は、差分ページPn-1,kを不揮発性半導体メモリ2に書き込む。
次に、ページ書き込み部11は、ページPn-1,k+1〜ページPn-1,2k-1を、エリアEFに書き込む。この書き込みの際に、差分ログ生成部14は、エリアEFに対応する差分ログFを生成し、揮発性メモリ3に書き込む。
差分ページ生成部15は、差分ログFと過去の差分ログB〜Eとをマージしたサイズが、ページサイズを超えるため、最も古い過去の差分ログBを削除し、差分ログFと過去の差分ログC〜Eとを含む差分ページPn-1,2kを生成する。
差分ページ書き込み部16は、差分ページPn-1,2kを不揮発性半導体メモリ2に書き込む。
ブロックBnに対しても、上記ブロックBn-1と同様の書き込み処理が実行される。
そして、ブロックBnに対する書き込みが終了した後、バックアップ部13がバックアップテーブル7を不揮発性半導体メモリ2に書き込む。その後は、上記と同様の処理が他のブロックに対して繰り返される。
図5は、本実施形態に係る復元処理を概念的に例示するためのブロック図である。以下、この図5を用いて、本実施形態に係る復元処理の具体例を説明する。
まず、復元部17は、最新のバックアップテーブル7と制御データ5とを不揮発性半導体メモリ2から読み出し、さらに、不揮発性半導体メモリ2に最後に書き込まれた最新の差分ページPn,2kを読み出す。最新の差分ページPn,2kは、最新の差分ログHと、この最新の差分ログHよりも過去に生成された複数(数エリア分)の差分ログE〜Gを含む。
復元部17は、最新の差分ページPn,2kに基づいて、読み出された最新のバックアップテーブル7を更新する。
次に、復元部17は、最新の差分ページPn,2kに含まれていない差分ログ(読み出されていない差分ログ)A〜Dのうちの最新の差分ログDを含む差分ページPn-2,2kを読み出す。この差分ページPn-2,2kは、読み出されていない差分ログA〜Dのうちの最新の差分ログDと、この差分ログDよりも過去に生成された複数の差分ログA〜Cを含む。例えば、この2回目以降の差分ページの読み出しでは、読み出されていない差分ログA〜Dのうちで最新の差分ログDを含み、かつ、他の読み出されていない差分ログA〜Cをより多く含む差分ページPn-2,2kが、決定され、読み出される。
次に、復元部17は、読み出された差分ページPn-2,2kに基づいて、バックアップテーブル7を更新する。
その後、同様の処理を必要に応じて繰り返すことにより、管理テーブル6が復元される。
復元処理において、ある差分ログの読み出しが失敗した場合、復元部17は、読み出しの失敗した差分ログを含む差分ページの前に書き込まれた差分ページ又は後に書き込まれた差分ページを読み出す。
復元部17は、読み出された差分ページに、読み出しが失敗した差分ログに対応する差分ログがあり、この差分ログの読み出しに成功した場合に、この差分ログを用いてバックアップテーブル7を更新する。
復元部17は、読み出された差分ページに読み出しを失敗した差分ログが含まれていない場合に、さらに、他の差分ページを確認する。復元部17は、読み出しが失敗した差分ログに対応する差分ログが見つかるまで同様の処理を繰り返す。
上記のような復元部17による復元処理は、バックアップテーブル7が不揮発性半導体メモリ2に書き込まれた後の全ての差分ログによって更新されるまで、実行される。
復元部17は、不揮発性半導体メモリ2から読み出すことができない差分ログが存在する場合、及び/又は、差分ログを書き込む直前に不正な電源遮断が発生した場合、読み出すことができない差分ログに対応するエリアのログ(例えば、当該エリアに配置されているページに付されているヘッダ又はフッタに含まれるログ、当該エリアに対応するブロックのヘッダ又はフッタに含まれるログ、など)を読み出す。復元部17は、読み出されたログに基づいてバックアップテーブル7を更新し、管理テーブル6を復元する。このようなページ又はブロックに付されているログに基づく復元は、差分ログに基づく復元の前に実行されてもよい。
以下で、比較例と比較しつつ、本実施形態の作用及び効果を説明する。
管理テーブル6は、不揮発性半導体メモリ2の広いエリアを管理対象とするため、大容量となる。このため、管理テーブル6に対応するバックアップテーブル7を高頻度で不揮発性半導体メモリ2に書き込むと、不揮発性半導体メモリ2の劣化が早まる場合がある。そこで、比較例では、以下の2種類の差分ログを併用して、管理テーブル6の復元を実現すると仮定する。
(1)ページのヘッダ又はフッタに含まれている識別データ(例えば、LBA:Local Block Addressing)
(2)単純に不揮発性半導体メモリ2に書き込まれる、連続する複数のページに対する時系列順のリスト形式のログ
比較例では、管理テーブル6を復元する場合に、まず、上記(2)のリスト形式のログによってまとめて差分ログが取得される。電源OFFのタイミングによっては、リスト形式のログが存在しない場合、又は、読み出されたリスト形式のログが破壊されている場合がある。このように、正常にリスト形式のログが読み出されない場合に、比較例では、ページに個別に付されている上記(1)のログが取得される。
(2)単純に不揮発性半導体メモリ2に書き込まれる、連続する複数のページに対する時系列順のリスト形式のログ
比較例では、管理テーブル6を復元する場合に、まず、上記(2)のリスト形式のログによってまとめて差分ログが取得される。電源OFFのタイミングによっては、リスト形式のログが存在しない場合、又は、読み出されたリスト形式のログが破壊されている場合がある。このように、正常にリスト形式のログが読み出されない場合に、比較例では、ページに個別に付されている上記(1)のログが取得される。
この比較例では、(2)のリストを十分長くすると、1回の不揮発性半導体メモリ2に対する読み出しで、多くのログを取得できるが、(2)のログを取得できなかった範囲については、(1)のログを取得するための読み出し回数が多くなり、管理テーブル6の復元処理に時間がかかる場合があり、(1)のログの読み出しに失敗する可能性も高くなる。この場合、どのページのページ識別データが壊れたかを判別することが困難であり、半導体メモリ装置を故障とみなし、動作が停止される場合がある。
比較例において、(2)の差分ログのリストを短くすると、(2)のログがなかった場合のペナルティは軽減される。しかしながら、不揮発性半導体メモリ2に対する1回の読み出しで取得されるログの量が少なくなるため、(2)のログに対する読み出し回数が多くなり、リストのサイズの長さによっては、不揮発性半導体メモリ2に無駄なパディングデータを書き込むことになる。
これに対して、本実施形態においては、不揮発性半導体メモリ2に最新の差分ログBを書き込む場合に、最新の差分ログBと過去の差分ログAとをマージした差分ページPkが生成され、この差分ページPkが不揮発性半導体メモリ2に書き込まれる。
これにより、半導体メモリ装置1に対する差分ログの多重化に伴う書き込み回数の増加を抑制するとともに、半導体メモリ装置1が起動された場合の差分ログの読み出し回数を低減することができ、また、管理テーブル6の復元処理時間を短縮することができ、復元に必要な差分ログが取得できないことを防止することができる。
本実施形態においては、差分ログのサイズがページサイズより小さいしきい値に達した場合に、不揮発性半導体メモリに書き込まれる。これにより、半導体メモリ装置が異常に電源OFFされた場合に失われる差分ログの量を抑制することができる。
本実施形態においては、最新の差分ログBを含む差分ページPkの空き領域に、不揮発性半導体メモリ2に書き込み済みの過去の差分ログAが組み込まれ、複数の差分ログA,Bが多重化される。これにより、復元処理において読み出しが必要な差分ページの数を削減することができ、復元処理の時間を短縮化することができる。半導体メモリ装置1が異常に電源OFFされた場合に、多重化された差分ログA,Bが不揮発性半導体メモリ2から読み出され、管理データ6の復元に用いられるため、差分ページの読み出し回数を抑制することができる。
本実施形態においては、ある差分ページPkに含まれているある差分ログAに対して不揮発性半導体メモリ2からの読み出しが失敗した場合に、同じ差分ログAを含む他の差分ページが読み出され、差分ログAの読み出しの失敗をリカバリすることができる。したがって、管理テーブル6の少なくとも1部が消失される可能性を軽減することができる。
本実施形態においては、例えばバックアップテーブル7の更新に必要な差分ページ又は差分ログが不揮発性半導体メモリ2から読み出されない場合に、例えば、ページに個別に付されているログが不揮発性半導体メモリ2から取得され、バックアップテーブル7の復元処理に利用することができる。
上記の本実施形態においては、データに基づくページP1〜Pk-1と、差分ページPkとが区別されることなく、連続で書き込まれている。しかしながら、データに基づくページP1〜Pk-1と差分ページPkとは、それぞれ区分けされた状態で不揮発性半導体メモリ2に書き込まれてもよい。例えば、データに基づくページP1〜Pk-1と差分ページPkとは、別のブロック又は別のエリアに書き込まれてもよい。
本実施形態に係るメモリコントローラ4の少なくとも1部の機能は、例えばファームウェアなどのプログラムによって実現されてもよい。
本実施形態に係るメモリコントローラ4の少なくとも1部の機能は、例えばSystem-On-a-Chip(SoC)によって実現されてもよい。
本実施形態に係る不揮発性半導体メモリ2は、例えば、Solid State Drive(SSD)の少なくとも1部として用いられてもよく、ハードディスクのキャッシュメモリとして用いられてもよい。
本実施形態に係る不揮発性半導体メモリ2は、複数の不揮発性半導体メモリに分割されていてもよい。
本実施形態で説明された各種の処理の順序は、適宜変更されてもよい。例えば、復元部17の処理順序は、まず制御データ5と、バックアップテーブル7と、更新用の全ての差分ページPn-2,2k,Pn,2kを読み出し、更新用の差分ページPn-2,2k,Pn,2kに基づいて、バックアップテーブル7を一括更新し、管理テーブル6を復元してもよい。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1…半導体メモリ装置、2…不揮発性半導体メモリ、3…揮発性メモリ、4…メモリコントローラ、5…制御データ、6…管理テーブル、7…バックアップテーブル、10…制御データ管理部、11…ページ書き込み部、12…管理テーブル管理部、13…バックアップ部、14…差分ログ生成部、15…差分ページ生成部、16…差分ページ書き込み部、17…復元部、18…読み出し部、P1〜Pk-1…ページ、Pk…差分ページ
Claims (8)
- 不揮発性半導体メモリと、
前記不揮発性半導体メモリに書き込まれたデータの識別データと書き込み位置とを関連付けた管理データに対応するバックアップデータを、前記不揮発性半導体メモリに書き込むバックアップ部と、
前記バックアップデータが前記不揮発性半導体メモリに書き込まれた後に前記管理データが更新された場合に、更新状態を示す更新データを生成する第1の生成部と、
前記不揮発性半導体メモリに書き込み済みであり前記更新データより前に生成された過去の更新データと前記更新データとを含む更新累積データ、を生成する第2の生成部と、
前記更新累積データを前記不揮発性半導体メモリに書き込む書き込み部と、
前記不揮発性半導体メモリから読み出された前記バックアップデータと前記更新累積データとに基づいて、前記管理データを復元する復元部と、
を具備する半導体メモリ装置。 - 前記更新累積データのサイズは、前記不揮発性半導体メモリの書き込み単位サイズであり、
前記更新データのサイズは、前記書き込み単位サイズより小さく、
前記第2の生成部は、前記更新データのサイズが前記書き込み単位サイズよりも小さいしきい値を越えた場合に、前記更新データを含む前記更新累積データの空き領域に、前記過去の更新データを加える、
請求項1の半導体メモリ装置。 - 前記書き込み部は、前記不揮発性半導体メモリに対する所定数のデータ書き込みが発生するたびに、最新の更新データを含む前記更新累積データを前記不揮発性半導体メモリに書き込む、
請求項1又は請求項2の半導体メモリ装置。 - 前記第2の生成部は、前記更新データと前記過去の更新データとの組み合わせのサイズが前記更新累積データの所定のサイズを越える場合に、前記過去の更新データのうちの最古の更新データを削除する、
請求項1乃至請求項3のいずれか1項の半導体メモリ装置。 - 前記復元部は、前記不揮発性半導体メモリから読み出される第1の更新累積データに含まれる更新データと、第2の更新累積データに含まれる更新データとが重複しないように、前記不揮発性半導体メモリから読み出される前記第1及び第2の更新累積データを決定する、
請求項1乃至請求項4のいずれか1項の半導体メモリ装置。 - 前記復元部は、前記第1の更新累積データが読み出しに失敗した更新データを含む場合に、前記第1の更新累積データの前又は後に前記不揮発性半導体メモリに書き込まれた第3の更新累積データを読み出す、
請求項5の半導体メモリ装置。 - 不揮発性半導体メモリを制御するメモリコントローラの制御方法であって、
前記不揮発性半導体メモリに書き込まれたデータの識別データと書き込み位置とを関連付けた管理データに対応するバックアップデータを、前記不揮発性半導体メモリに書き込むことと、
前記バックアップデータが前記不揮発性半導体メモリに書き込まれた後に前記管理データが更新された場合に、更新状態を示す更新データを生成することと、
前記不揮発性半導体メモリに書き込み済みであり前記更新データより前に生成された過去の更新データと前記更新データとを含む更新累積データ、を生成することと、
前記更新累積データを前記不揮発性半導体メモリに書き込むことと、
前記不揮発性半導体メモリから読み出された前記バックアップデータと前記更新累積データとに基づいて、前記管理データを復元することと、
を具備する制御方法。 - 不揮発性半導体メモリに書き込まれたデータの識別データと書き込み位置とを関連付けた管理データに対応するバックアップデータを、前記不揮発性半導体メモリに書き込むバックアップ部と、
前記バックアップデータが前記不揮発性半導体メモリに書き込まれた後に前記管理データが更新された場合に、更新状態を示す更新データを生成する第1の生成部と、
前記不揮発性半導体メモリに書き込み済みであり前記更新データより前に生成された過去の更新データと前記更新データとを含む更新累積データ、を生成する第2の生成部と、
前記更新累積データを前記不揮発性半導体メモリに書き込む書き込み部と、
前記不揮発性半導体メモリから読み出された前記バックアップデータと前記更新累積データとに基づいて、前記管理データを復元する復元部と、
を具備するメモリコントローラ。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014104695A JP2015219839A (ja) | 2014-05-20 | 2014-05-20 | 半導体メモリ装置、メモリコントローラの制御方法、及びメモリコントローラ |
US14/476,998 US20150339198A1 (en) | 2014-05-20 | 2014-09-04 | Semiconductor memory device including nonvolatile semiconductor memory, control method of memory controller, and memory controller |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014104695A JP2015219839A (ja) | 2014-05-20 | 2014-05-20 | 半導体メモリ装置、メモリコントローラの制御方法、及びメモリコントローラ |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2015219839A true JP2015219839A (ja) | 2015-12-07 |
Family
ID=54556153
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2014104695A Pending JP2015219839A (ja) | 2014-05-20 | 2014-05-20 | 半導体メモリ装置、メモリコントローラの制御方法、及びメモリコントローラ |
Country Status (2)
Country | Link |
---|---|
US (1) | US20150339198A1 (ja) |
JP (1) | JP2015219839A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2017162288A (ja) * | 2016-03-10 | 2017-09-14 | 株式会社東芝 | 情報処理装置、情報処理システム、及びプログラム |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170262378A1 (en) * | 2016-03-11 | 2017-09-14 | Qualcomm Incorporated | System and method for ram capacity optimization using rom-based paging |
US10528488B1 (en) * | 2017-03-30 | 2020-01-07 | Pure Storage, Inc. | Efficient name coding |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010152514A (ja) * | 2008-12-24 | 2010-07-08 | Toshiba Corp | メモリシステム |
US8886870B2 (en) * | 2010-05-25 | 2014-11-11 | Marvell World Trade Ltd. | Memory access table saving and restoring system and methods |
JP2012128643A (ja) * | 2010-12-15 | 2012-07-05 | Toshiba Corp | メモリシステム |
CN103548022B (zh) * | 2011-03-28 | 2017-05-31 | 思杰系统有限公司 | Utf‑8模式匹配系统和方法 |
US20130299000A1 (en) * | 2012-05-08 | 2013-11-14 | Logimesh IP, LLC | System and method of efficient by-product disposal based on by-product quality |
-
2014
- 2014-05-20 JP JP2014104695A patent/JP2015219839A/ja active Pending
- 2014-09-04 US US14/476,998 patent/US20150339198A1/en not_active Abandoned
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2017162288A (ja) * | 2016-03-10 | 2017-09-14 | 株式会社東芝 | 情報処理装置、情報処理システム、及びプログラム |
Also Published As
Publication number | Publication date |
---|---|
US20150339198A1 (en) | 2015-11-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9996462B1 (en) | Data storage device and data maintenance method thereof | |
EP2413329B1 (en) | Electronic apparatuses | |
JP5950286B2 (ja) | アドレス変換テーブルを書き込む装置及び方法 | |
US9442841B2 (en) | Semiconductor memory device and method for logging monitored events into a buffer | |
JP2011154547A (ja) | メモリ管理装置及びメモリ管理方法 | |
US20150074336A1 (en) | Memory system, controller and method of controlling memory system | |
US9442666B2 (en) | Optimized management of operation data in a solid-state memory | |
JP2016118815A (ja) | 不揮発性メモリ装置 | |
US20140344641A1 (en) | Memory system and cache management method of the same | |
KR101548452B1 (ko) | 비휘발성 메모리 기반의 전자 장치의 메타 데이터 복원 방법 및 장치 | |
US20160011937A1 (en) | Semiconductor memory device, memory controller, and control method of memory controller | |
JP2015219839A (ja) | 半導体メモリ装置、メモリコントローラの制御方法、及びメモリコントローラ | |
US10248526B2 (en) | Data storage device and data maintenance method thereof | |
CN111221750A (zh) | 固态储存装置的数据处理方法 | |
AU2013380500B2 (en) | Database device, program, and data processing method | |
TWI550627B (zh) | 儲存裝置及其操作方法 | |
TWI544492B (zh) | 電子裝置及其資料維護方法 | |
JP5533141B2 (ja) | 書き込み装置、書き込み方法、及び書き込みプログラム | |
KR101545077B1 (ko) | 비휘발성 메모리 기반의 전자 장치의 메타 데이터 복원 방법 및 장치 | |
US20170010827A1 (en) | File system of controller | |
JP6329185B2 (ja) | メモリ制御回路、メモリ制御システム、メモリ制御方法、及び、メモリ制御プログラム | |
JP4866114B2 (ja) | メモリコントローラ、不揮発性記憶装置、不揮発性記憶システム及びメモリ制御方法 | |
JP5707695B2 (ja) | フラッシュディスク装置 | |
JP6152999B2 (ja) | 半導体記憶装置 | |
JP6237177B2 (ja) | 磁気ディスク装置およびストレージ装置 |