JP2013530455A - システムおよび方法をセーブして修復するメモリアクセステーブル - Google Patents

システムおよび方法をセーブして修復するメモリアクセステーブル Download PDF

Info

Publication number
JP2013530455A
JP2013530455A JP2013512090A JP2013512090A JP2013530455A JP 2013530455 A JP2013530455 A JP 2013530455A JP 2013512090 A JP2013512090 A JP 2013512090A JP 2013512090 A JP2013512090 A JP 2013512090A JP 2013530455 A JP2013530455 A JP 2013530455A
Authority
JP
Japan
Prior art keywords
metadata
lut
memory
control module
event log
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.)
Granted
Application number
JP2013512090A
Other languages
English (en)
Other versions
JP5850048B2 (ja
Inventor
アドラー、ジェイソン
ネオス、ペリー
トン−ツァ、ルアン
ウー、グォイウー
Original Assignee
マーベル ワールド トレード リミテッド
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by マーベル ワールド トレード リミテッド filed Critical マーベル ワールド トレード リミテッド
Publication of JP2013530455A publication Critical patent/JP2013530455A/ja
Application granted granted Critical
Publication of JP5850048B2 publication Critical patent/JP5850048B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1435Saving, restoring, recovering or retrying at system level using file system or storage system metadata
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore
    • G06F11/1451Management of the data involved in backup or backup restore by selection of backup contents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/16Protection against loss of memory contents
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C14/00Digital stores characterised by arrangements of cells having volatile and non-volatile storage properties for back-up when the power is down
    • G11C14/0009Digital stores characterised by arrangements of cells having volatile and non-volatile storage properties for back-up when the power is down in which the volatile element is a DRAM cell
    • G11C14/0018Digital stores characterised by arrangements of cells having volatile and non-volatile storage properties for back-up when the power is down in which the volatile element is a DRAM cell whereby the nonvolatile element is an EEPROM element, e.g. a floating gate or metal-nitride-oxide-silicon [MNOS] transistor
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C14/00Digital stores characterised by arrangements of cells having volatile and non-volatile storage properties for back-up when the power is down
    • G11C14/0054Digital stores characterised by arrangements of cells having volatile and non-volatile storage properties for back-up when the power is down in which the volatile element is a SRAM cell
    • G11C14/0063Digital stores characterised by arrangements of cells having volatile and non-volatile storage properties for back-up when the power is down in which the volatile element is a SRAM cell and the nonvolatile element is an EEPROM element, e.g. a floating gate or MNOS transistor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/84Using snapshots, i.e. a logical point-in-time copy of the data

Abstract

システムは、論理アドレスと物理アドレスとの間の第1のマッピングを含む第1のメタデータを有する第1のルックアップテーブル(LUT)を格納する第1のメモリと、論理アドレスと部分物理アドレスとの間の第2のマッピングを含む第2のメタデータを有する第2のLUTを格納する第2のメモリと、第1のメタデータを更新し、部分第1のメタデータに基づいて、其々所定の時点に部分第2のメタデータの部分を更新する制御モジュールとを備え、該部分は、部分第2のLUTの所定数の入力のことである。
【選択図】図1

Description

本開示は、ソリッドステートドライブのメタデータの格納および受信に関する。
[優先権情報] 本願は、2011年5月18日出願の米国出願13/110,517号の優先権を主張しており、米国仮出願61/347,919号の恩恵の享受を主張するものであり、前記各出願の内容は、参照により本明細書に組み込まれる。
本発明の理解するための背景を、一般的に説明することを目的として、背景技術を説明する。以下、背景技術の章において説明される範囲及び出願時に従来技術として認められていない側面の範囲において、本願発明者の仕事は、本開示に対して明示的に又は非明示的にも、従来技術であるとは認めていない。
データ格納システムは、様々な取り外し可能または取り外し不可能な格納デバイスが含むことがある。格納デバイスには、ハードディスクドライブ(HDD)、光格納ドライブ、および、フラッシュメモリを含む取り外し可能ソリッドステートドライブ(SSD)といった不揮発性メモリ素子および揮発性メモリ素子の両方が含まれうる。
格納デバイスのフラッシュメモリは、メタデータを格納することができる。メタデータは、論理から物理へのアドレス入力が含むことができ、これらを利用して、ホストからの論理アドレスをフラッシュメモリの物理アドレスに変換する。SSDの制御モジュールは、このメタデータに従って割り出した物理アドレスに基づいてフラッシュメモリ内の位置へのアクセスを行うことができる。
データ格納システムの動作中、フラッシュメモリに対してデータの書き込みおよび/または読み出しが行われるたびに、SSDの揮発性メモリへのメタデータの更新および格納が行われる。メタデータは、データ格納システムの電源投入時に揮発性メモリからフラッシュメモリに転送される。フラッシュメモリに転送されたメタデータは、データ格納システムへの電源が戻ったときに揮発性メモリに再ロードされる。こうすることで、SSDは、自身の論理アドレスおよび物理アドレス間のマッピングを常に更新されたものとし続けることができる。
システムは、論理アドレスと物理アドレスとの間の第1のマッピングを含む第1のメタデータを有する第1のルックアップテーブル(LUT)を格納する第1のメモリと、論理アドレスと部分物理アドレスとの間の第2のマッピングを含む第2のメタデータを有する第2のLUTを格納する第2のメモリと、第1のメタデータを更新し、部分第1のメタデータに基づいて、其々所定の時点に部分第2のメタデータの部分を更新する制御モジュールとを備え、該部分は、部分第2のLUTの所定数の入力のことである。
他の特徴として、第1のメモリは揮発性メモリを含む。第2のメモリは不揮発性メモリを含む。他の特徴として、第2のメモリは、第3のメタデータを格納する。第3のメタデータは、第1のメタデータまたは第2のメタデータのうち少なくとも一方に依存している。制御モジュールは、其々所定の時点において、第3のメタデータを更新する。
他の特徴として、第2のメモリは、第3のメタデータを格納する。第3のメタデータは、第1のメタデータまたは第2のメタデータのうち少なくとも一方に依存している。制御モジュールは、其々所定の時点とは異なる時点において、第3のメタデータを更新する。
他の特徴として、制御モジュールは、所定の間隔で第3のメタデータを更新し、第3のメタデータは、前記第1のメタデータまたは前記第2のメタデータの少なくとも一方に依存しており、第3のメタデータは、ユーザデータのポインタ、システムデータのポインタ、メモリのブロックに格納されているデータ量、または不良情報のうち、少なくとも1つを含む他の特徴として、第3のメタデータは、第2のLUTのタイムコヒーレントなバージョンに依存している。
他の特徴として、制御モジュールは、第1のメモリ内の第1のメタデータの部分を、第2のメモリ内の第1のメタデータの他の部分をバックアップしている間に更新する。制御モジュールは、第2のメモリ内の第1のLUTの第2の部分をバックアップしている間に、第2のメモリにユーザデータを書き込んで、第1のメモリ内の第1のLUTの第1の部分を更新する。
他の特徴として、電力ONイベント中に、制御モジュールは、イベントログの入力に基づいて第1のメモリの部分を更新して、第1のメモリに第2のメモリの部分をアップロードして、イベントログの入力には、システムのドライブの電力が失われる前に実行された物理アドレスおよび論理アドレスのうち選択されたものの間のメタデータの変更が含まれる。
他の特徴として、制御モジュールは、第1のメタデータの部分のフラッシュ時間を決定して、フラッシュイベント間であるフラッシュ期間分待ち、フラッシュ時間のうちの対応する時間において、第1のメモリから第2のメモリに第1のメタデータをコピーすることで、第1のメタデータの部分をフラッシュする。
他の特徴として、論理アドレスと物理アドレスとの間の第1のマッピングを含む第1のメタデータを有する第1のルックアップテーブル(LUT)を格納する第1のメモリと、論理アドレスと物理アドレスとの間の第2のマッピングを含む第2のメタデータを有する第2のLUTを格納する第2のメモリと、電力ONイベント中に、第2のメモリの部分を第1のメモリにアップロードして、イベントログの入力に基づいて第1のメモリの部分を更新する制御モジュールとを備え、イベントログの入力には、電力ONイベントの前に実行された物理アドレスおよび前記論理アドレスのうち選択されたものの間のメタデータの更新が含まれる、システムが提供される。
他の特徴として、電力ONイベント中であって、LUT依存メタデータが第2のメモリに格納されていないときに、制御モジュールは、第2のメモリから第1のメモリに、少なくとも部分の完全なサイクル1つ分をアップロードする。
電力ONイベント中であって、LUT依存メタデータが第2のメモリに格納されているときに、制御モジュールは、LUT依存メタデータを第2のメモリから第1のメモリにアップロードする前に、第2のメモリから第1のメモリに、少なくとも部分の完全なサイクル1つ分をアップロードする。
他の特徴として、電力ONイベント中に、制御モジュールは、システムの正常な電力停止が行われたかを判断して、正常な電力停止とは、第1のLUTが、システムの最後の電力停止イベントの前に第2のメモリにフラッシュされることであり、システムの正常な電力停止が行われたときには、第2のメタデータを第2のメモリから第1のメモリに転送して、イベントログにウォーク処理を行わず、システムの正常な電力停止が行われなかったときには、第2のメタデータを第2のメモリから第1のメモリに転送して、イベントログにウォーク処理を行う。
他の特徴として、制御モジュールは、ソリッドステートドライブの電力が失われる前に更新された部分の少なくとも完全なフラッシュサイクル1つをアップロードして、部分の少なくとも完全なフラッシュサイクル1つは、第2のメモリから第1のメモリにアップロードされ、第1のメタデータは、部分の少なくとも完全なフラッシュサイクル1つを含み、制御モジュールは、部分の少なくとも完全なフラッシュサイクル1つの第1の部分がフラッシュされたときから、ソリッドステートドライブの電力が失われたときのイベントログのタイムスロットへと、第1のメタデータを更新するべく、イベントログにウォーク処理を行い、電力ONイベントは、ソリッドステートドライブの電力が失われた後に行われる。
他の特徴として、制御モジュールは、部分を第2のメモリから第1のメモリにアップロードして、第1のメタデータは、アップロードされた部分を含み、アップロードされた部分は、LUT依存メタデータのフラッシュイベントの前の、および、ソリッドステートドライブの電力が失われたときのイベントログのタイムスロットの前の、部分の少なくとも完全なフラッシュサイクル1つを含み、制御モジュールは、部分の完全なフラッシュサイクル1つの第1の部分のタイムスロットから、ソリッドステートドライブの電力が失われたときのイベントログのタイムスロットへと、第1のメタデータを更新するべく、イベントログにウォーク処理を行い、電力ONイベントは、ソリッドステートドライブの電力が失われた後に行われる。
他の特徴として、電力ONイベント中に、制御モジュールは、部分の完全なフラッシュサイクル1つの第1の部分を第2のメモリから第1のメモリにアップロードして、イベントログの入力に基づいて、第1のメモリの部分の完全なサイクル1つのロードおよび更新を含む、ソリッドステートドライブの電力停止サイクルに関連付けられたタイムスロットまで第1のタイムスロットから、イベントログにウォーク処理を行い、第1のタイムスロットから部分の完全なサイクル1つのタイムスロットまでイベントログにウォーク処理を行っている間、制御モジュールは、イベントログ入力を省いて、省いたイベントログ入力に関連付けられている第1のメモリの入力を更新しない。
本開示の更なる用途分野も、以下の詳細な記載、請求項、および図面を読むことで明らかとなる。詳細な記載および具体例は、あくまで例示を目的としたものであって、本開示の範囲に限定を加えようという意図はない。
本開示は、以下の詳細な記載を、添付図面とともに読むことでよりよく理解される。
本開示におけるデータ格納システムの機能ブロック図である。
本開示の、割り当て時間スロット実装における全サイクルフラッシュを示すルックアップテーブル(LUT)状態ダイアグラムである。
本開示の分割されたフラッシュサイクル実装に基づく一連のLUT状態を示すLUT状態ダイアグラムである。
本開示の分割されたフラッシュサイクル実装のタイム・コヒーレントなLUT時間を示すLUT状態ダイアグラムである。
本開示の分割されたフラッシュサイクル実装について、非LUT依存のメタデータおよびLUT依存のメタデータのフラッシュタイミングを同期させたLUT状態ダイアグラムである。
本開示の分割されたフラッシュサイクル実装について、専用のLUT依存のメタデータのフラッシュタイミングを示すLUT状態ダイアグラムである。
本開示のLUTを更新、バックアップする方法を示す。
本開示のLUTを復元する方法を示す。
以下の記載は、本質的に例示にすぎず、本開示、用途、または利用を制限する意図はない。明瞭を期す目的から、図面における同じ参照番号は同様の部材を示すこととする。ここで「A、B、およびC」という言い回しは、非排他的論理和を利用した、論理的(AまたはBまたはC)という意味に捉えられたい。ある方法における各段階は、本開示の原理において順序を入れ替えて実行してもよいことと理解されたい。
ここでは、「モジュール」を、コードを実行する特定用途向け集積回路(ASIC)、電子回路、統合論理回路、フィールドプログラマブルゲートアレイ(FPGA)、プロセッサ(共有、専用、グループを含む)、記載する機能を提供するのに適したその他のコンポーネント、または、システムオンチップ等におけるような上述した部材の一部または全ての組み合わせであってよい、とする。「モジュール」という用語は、プロセッサが実行するコードを格納するメモリ(共有、専用、グループを含む)も含んでよい。
上でも利用した「コード」という用語は、ソフトウェア、ファームウェア、および・または、マイクロコードを含んでよく、プログラム、ルーチン、機能、クラス、および/またはオブジェクトのことであってよい。上でも利用した「共有」という用語は、複数のモジュールの一部または全てのコードが、単一の(共有)プロセッサによる実行が可能であることを意味する。加えて、複数のモジュールの一部または全てのコードは、単一の(共有)メモリに格納されてもよい。上でも利用した「グループ」という用語は、単一のモジュールの一部または全てのコードが、一群のプロセッサを利用して実行可能であることを示す。加えて、単一のモジュールの一部または全てのコードが、一群のメモリに格納されてもよい。
ここで記載する装置および方法は、1以上のプロセッサが実行する1以上のコンピュータプログラムにより実装することができる。コンピュータプログラムには、一時的でない有形のコンピュータ可読媒体に格納されるプロセッサ実行可能命令が含まれてよい。コンピュータプログラムには、格納されているデータが含まれてよい。一時的でない有形のコンピュータ可読媒体の非制限的な例には、不揮発性メモリ、磁気ストレージ、および光ストレージがある。
ソリッドステートドライブ(SSD)は、各論理ユニットおよびデータブロックのメモリにおける物理格納位置をトラックするためにルックアップテーブル(LUT)を利用することができる。LUTは、論理アドレスによりインデックス化される物理位置を有する、アレイまたはその他の適切なデータ群のことを指してよい。LUTは、メモリに対して読み出しおよび/または書き込みを行うときに、論理アドレスを物理アドレスに変換するために利用することができる。メモリの物理位置で陳腐になった(古くなった)データは、その物理位置に更新した(新しい)データを書き込む前に、無効化することができる。LUTは、古くなったデータは無効になると修正され、更新されたデータが同じ位置に、古いデータの置き換えとして書き込まれる、または新たな物理位置に書き込まれる。
メモリの各書き込み処理中に、論理アドレスは物理アドレスに動的マッピングされる。動的マッピングとは、書き込み処理中に物理アドレスを論理アドレスに割り当てる処理のことである。各時間データがメモリに書き込まれ、データの論理アドレスおよび対応する物理アドレスがLUTに記録される。動的マッピングによって、データの物理位置を計算する決定論的な方法がなくなる。この結果、格納済みのデータにアクセスするためには更新済みの正確なLUTが必要となる。
SSDのLUTは、SSDの電源投入時(電力ON時)に、揮発性メモリに格納され、揮発性メモリからアクセスすることができるようになる。LUTは、パフォーマンス面の観点から(つまり、アクセス時間を短くするために)揮発性メモリに格納される。LUTは、SSDの電源停止時(電源OFF)に、揮発性メモリから不揮発性メモリに転送されてよい。LUTは、SSDがOFF状態になる前に不揮発性メモリに格納される。
SSDの動作中に、電力が失われると、揮発性メモリに格納されているLUTの更新済みメタデータが失われることがある。電源喪失前にLUTを更新してバックアップをとるためのデータ格納システムを以下に提供する。さらにこのデータ格納システムは、電源喪失時に、電源が失われた時点前の状態にLUTを復元する。
図1に示すデータ格納システム10は、ホスト12とSSD14とを含む。ホスト12は、コンピュータ、メディアプレーヤ、形態電話、携帯情報端末、その他のSSDインタフェース15を含むデバイスであってよい。SSD14は、ホスト12に着脱可能であってよい。SSD14の一例は、フラッシュドライブである。ホストはSSD14のメモリに、SSDインタフェースを介してアクセスする。
SSD14は、制御モジュール17、読み出し専用メモリ(ROM)18、揮発性メモリ20、およびフラッシュ(不揮発性)メモリ22を含む固体システム16を含む。制御モジュール17は、SSD14のソフトウェアおよびファームウェアの命令を実行する。例えば、制御モジュール17は、ROM18に格納されているファームウェアの命令を実行する。制御モジュール17は、揮発性メモリ20に格納されている命令の読み出しおよび実行も行う。揮発性メモリ20の一例は、ランダムアクセスメモリ(RAM)である。
データ格納システム10は、入力デバイス24、出力デバイス26、および、ハードディスクドライブ(HDD)28もさらに含んでよい。入力デバイス24は、キーボードまたはキーパッド、マウス、タッチスクリーン、タッチパッド、マイクロフォン、および・または、その他の入力デバイスを含んでよい。出力デバイス26は、ディスプレイ、スピーカ、および/または、その他の出力デバイスを含んでよい。
データ格納システム10は、SSD14にデータを格納する。SSD14は、HDD(HDD28)をエミュレートする。例えばHDD28に格納されるデータを、SSD14(フラッシュメモリ22)にも格納する、としてよい。データは、物理割り当てアドレス(PAA)に対応する論理割り当てアドレス(LAA)に従ってフラッシュメモリ22に格納される。LAAとは、ホスト12が、フラッシュメモリ22のメモリ位置を参照する際に利用する際に利用するアドレスである。PAAは、フラッシュメモリ22の物理位置のアドレスであり、制御モジュール17が物理位置にアクセスする際に利用する。
制御モジュール17は、ROM18に格納されているファームウェアに従いコマンドを処理することで、フラッシュメモリ22に対してデータを読み書きする。例えば、ホスト12がユーザデータをフラッシュメモリ22のLAAに書き込む場合、制御モジュール17は、ROM18のファームウェアを介して、対応するPAAを選択する。制御モジュール17は、PAAにより特定されたフラッシュメモリ22の位置にユーザデータを格納して、対応するメタデータを、揮発性メモリ20および/またはフラッシュメモリ22に格納する。メタデータは、LAAと対応するPAAとの関係またはマッピングを示すものである。
メタデータは、非LUT依存メタデータと、LUT依存メタデータとを含む。非LUT依存メタデータは、1以上のLUTを、LAAとPAAとの関連付けとともに含む。LAAをPAAに関連付ける一次LUT50は、揮発性メモリ20に格納されている。一次LUT50のバックアップ版は(バックアップまたは二次LUT52と称される)、フラッシュメモリ22に格納される。一次LUT50は、フラッシュメモリ22の各LAAを、割り当てられたPAAと関連付けている。あるLAAにPAAが割り当てられていない場合、このLAAは、明らかに無効なPAA値に関連付けられる。一次LUT50は、SSD14への電源停止前に揮発性メモリ20からフラッシュメモリ22にフラッシュされる。「フラッシュ」「フラッシュされた」「フラッシュする」等の用語は、LUTの少なくとも一部を揮発性メモリ20からフラッシュメモリ22にダウンロードまたはセーブすることを言う。
LAAとPAAとの間のマッピングを提供するメタデータが、非LUT依存メタデータと称される。LUT依存メタデータは、非LUT依存メタデータに依拠(dependent upon)しているメタデータのことである。LUT依存メタデータは、さらに、それぞれ参照番号56、58で特定される揮発性メモリ20およびフラッシュメモリ22の両方に格納することができる。LUT依存メタデータ56、58は、ユーザデータおよび/またはシステムデータ、データ記述、不良情報、メモリブロック内のデータ量(例えばフラッシュメモリ22のブロックのデータ量)等へのポインタを含む。ユーザデータとは、ホスト12から提供されるデータのことであってよく、フラッシュメモリ22に格納されてよい。システムデータとは、ROM18に格納されているファームウェアを実行する際に生成されるデータのことであってよい。データ記述とは、例えば、あるデータがユーザデータからシステムデータかを示す情報であってよい。不良情報とは、フラッシュメモリ22のブロック内の不良位置等であってよい。
アクセスイベント(読み出しイベントまたは書き込みイベント)において、ホスト12は、フラッシュメモリ22内の位置にアクセスするべく、LAAを制御モジュール17に提供する。制御モジュール17は、一次LUT50にアクセスして、LAAをPAAに変換する。例えば、読み出しコマンドが、あるLAAに関するデータを要求している場合、実際にはこのデータは、対応するPAAから取得される。次に、制御モジュール17は、フラッシュメモリ22のPAAにアクセスする。制御モジュール17は、フラッシュメモリ22にデータを書き込む際には、未使用PAAをLAAに割り当てることができる。一次LUT50が、LAAとPAAとの関連を反映するよう更新される。
揮発性メモリ20に格納されている非LUT依存メタデータ(一次LUT50)は、データ(例えばユーザデータ)がフラッシュメモリ22に書き込まれると、更新される。データ格納システム10の電源が停止される前に、揮発性メモリ20に格納されているメタデータをフラッシュメモリ22に転送(フラッシュ)する。フラッシュされるメタデータには、LUT依存メタデータと非LUT依存メタデータとが含まれてよい。メタデータのフラッシュは、定期的、および/または、所定の時に実行されてもよいし、データ格納システム10および/またはSSD14に対する電源を停止する前に実行されてもよい。
バックアップLUT52およびイベントログ54は、電源喪失の後に、一次LUT50をアップロードして復元するために利用される。フラッシュメモリ22には、イベントログ54が格納されていてよい。イベントログとは、LUTに対して行われたアドレスマッピングの変更の経時的な記録のことである。例えば一次LUT50は、フラッシュメモリ22の物理アドレスへの論理アドレスのマッピングを含む。フラッシュメモリ22のセルおよび/またはブロックにアクセスが行われると、論理−物理アドレス関連付けが変更される場合がある。イベントログ54を利用して、経時的なアドレスマッピングの変更をトラックすることができ、これを利用して、電源喪失時(例えば停電時)に一次LUT50の最新状態の復元を試みることができる。イベントログ54の各入力は、特定の時間(またはタイムスロット)について論理−物理アドレスマッピングの変更に関連付けられてよい。一例として、イベントログ54の入力には、論理アドレスと、この論理アドレスに割り当てられた物理アドレスとが含まれてよい。イベントログ入力の例を図3および図4に示す。
メタデータをフラッシュする頻度は、所定のバックアップ時間、イベントログサイズ、ロードアップ(load-up)時間、および/または、復元(または再構築)時間要件に基づいて調節することができる。バックアップ時間は、メタデータ(非LUT依存メタデータおよび/またはLUT依存メタデータ)を、揮発性メモリ20からフラッシュメモリ22にフラッシュするのにかかる時間である。メタデータを揮発性メモリ20からフラッシュメモリ22にフラッシュされる頻度が低いほど、イベントログが非LUT依存メタデータを修復するのにかかる時間は長くなる。一次LUT50を修復するために必要なイベントログ入力量が多いほど、一次LUT50を復元するのにかかる時間も長くなる。
一例では、イベントログ54のサイズを、フラッシュメモリ22に格納されるLAA−PAAマッピングの変更の入力数としてもよいし、および/または、LAA−PAAマッピングの変更の格納専用に利用される1以上のアレイの長さであってもよい。フラッシュメモリ22の一部を、イベントログ54に割り当ててよい。この部分のサイズは、イベントログ54のサイズまたは所定の数のイベントログ入力の数と等しくなるようにすると、確実に一次LUT50を復元することができる。
ロードアップ時間とは、SSD14への電源投入時の、フラッシュメモリ22から揮発性メモリ20へのメタデータ(非LUT依存メタデータおよびLUT依存メタデータ)の転送時間のことであってよい。復元時間には、ロードアップ時間と、「イベントログをウォークする」時間とが含まれてよい。「イベントログにウォーク処理を行う(walking the event log)」等の言い回しは、イベントログ54の入力に従って揮発性メモリ20のバックアップLUT52を更新することを指す。これに関しては後で詳述する。
SSD14の電源投入処理中に、非依存および依存LUTメタデータを、フラッシュメモリ22から揮発性メモリ20に転送(アップロード)して、LAAとPAAとの間の正常に更新された関連付けを構築する。SSD14の動作中に、揮発性メモリ20に格納されているメタデータに対する変更を、イベントログ54でトラックする。フラッシュメモリ22に格納されているメタデータは、揮発性メモリ20に格納されているメタデータに対する同じ変更を反映するように更新される。フラッシュメモリ22のメタデータは、所定の時、および、SSD14の電源OFF前に、分割されて更新される。例えば、フラッシュメモリ22のメタデータを、メタデータセーブコマンドに応じて更新することができる。メタデータセーブコマンドは、ROM18のファームウェアに従って、定期的、および/または、所定の時に生成することができる。
SSD14の電源停止中には、制御モジュール17が、一次LUT50を含む揮発性メモリ20全体をフラッシュメモリ22にフラッシュすることができる。SSD14の電源投入時に、制御モジュール17は、バックアップLUT52を揮発性メモリ20にアップロードして、バックアップLUT52のフラッシュイベント時から、イベントログ54の最後の入力までイベントログ54にウォーク処理を行うことで、バックアップLUTを確実に最新の変更で更新するようにしてよい。
SSD14の動作中に予期せず電源が喪失すると、揮発性メモリ20に格納されているメタデータに対する変更が失われる場合がある。フラッシュメモリ22に格納されているメタデータは、SSD14の電源OFF前には更新されないので、フラッシュメモリ22のメタデータには、一次LUT50に対する最新の変更が含まれないことになる。この理由から、フラッシュメモリ22のメタデータは少なくとも一部が古かったり、陳腐であったりすることがある。電源喪失の後の電源投入期間に、古いメタデータがフラッシュメモリ22から揮発性メモリ20に転送されてしまうことがある。この場合、フラッシュメモリ22のユーザデータの割り当ておよび取得が不正確となりうる。揮発性メモリ20内のメタデータを修正するために、制御モジュール14がイベントログ54のウォーク処理を行う。イベントログ54のウォーク処理において、制御モジュールは、揮発性メモリ20に格納されているメタデータを更新する。
SSD14は、さらにアップロードタイマ60を含んでよい。アップロードタイマ60は、イベントログ54のウォーク処理で利用されてよい。アップロードタイマ60は、イベントログ54のウォーク処理中のイベントログ54の現在の入力のこと、またはこれを指すものであってよい。このことはさらに図8の方法を参照しながら説明する。
図1および図2を参照すると、ルックアップテーブル(LUT)状態ダイアグラム100が、割り当てられたタイムスロット実装ごとの全サイクルフラッシュを示している。「全サイクルフラッシュ」とは、少なくとも一度LUTの各入力をフラッシュすることを称する。LUT状態ダイアグラム100は、タイムスロット1から14を含む様々な時点における、一次LUT50およびイベントログ54'の状態例を示している。時間は、タイムスロット1からタイムスロット14へと進む。一次LUT50の状態例が、各タイムスロット1から14について示されている。タイムスロット11−14の入力は、タイムスロット10中に電力が失われないことを条件とした入力例として示されている。もしもタイムスロット10中に電力が失われる場合には、タイムスロット11から14が存在しなくなる。
図示されている一次LUT50は、6個の入力104を含むが、一次LUT50は任意の数の入力を含むことができる。6個の入力それぞれ104には、LAAおよびPAAが関連付けられている。LAAは、番号1から6で表され、テーブルの一列106に示されている。PAAは、タイムスロット1から14におけるそれぞれの一次LUT50の入力として示されている。例えばPAAは、タイムスロット1では1、2、7、4、5、6として示されている。同様に、タイムスロット10では、PAAは、10、14、15、16、5、13となっている。PAAがLAAについて更新されると、一次LUT50の対応する入力も、この更新を反映するよう変更される。例えばタイムスロット2では、第2LAAについてのPAAが2から8へと更新されている。
一次LUT50の入力は、フラッシュメモリ22に、定期的、および/または、所定の時にフラッシュされてよい。一次LUT50は、フラッシュイベントごとに、揮発性メモリ20からフラッシュメモリ22にその全体がフラッシュされてよい。図2には3つのフラッシュイベントA−Cが示されている。
一例として電力投入時に、PAA1−6で一次LUT50を始動する。タイムスロット1で、LAA3についてPAA3をPAA7で置き換える。次に、タイムスロット2で、LAA2についてPAA8でPAA2を置き換える。タイムスロット1から14各々について1以上の入力を更新することができる。第1のフラッシュFLUSH Aでは、一次LUTがPAA入力1、2、3、4、5、6を有している。第2のフラッシュFLUSH Bでは、一次LUTがPAA入力10、8、12、9、5、および11を有している。第3のフラッシュFLUSH Cでは、一次LUTが、PAA入力18、14、15、17、5、および13を有している。
タイムスロット10中に電力が喪失すると(破線110で示されている)、一次LUT50は、SSD14の次の電力ON時に復元されてよい。最後にセーブした一次LUTのバージョン(10、8、12、9、5、および11)を、フラッシュメモリ22から揮発性メモリ20にアップロードすることができる。制御モジュール17は、イベントログ54'を、一次LUT50が最後にセーブされた時点からタイムスロット10までウォークして、一次LUT50を再構築する。一次LUT50は、イベントログ54'における各入力に従って更新される。イベントログ54'のウォーク処理の最終結果が、電力が喪失したときに存在している入力を有する一次LUTになる(たとえば10、14、15、16、5、13)。
1つのフラッシュイベント中に一次LUT全体をバックアップすることで、ホスト12の処理は中断される。ホスト12からフラッシュメモリ22への書き込みは、バックアップLUT52の更新中に中断される。ホスト12を中断することで、一次LUT50をフラッシュしてバックアップLUT52全体を更新する間に、一次LUT50が修正されないようにしている。制御モジュール17は、分割フラッシュを実行することで、フラッシュイベント中のホスト12の中断時間を最小限に抑えることができる。分割フラッシュの例は、図3から図8を参照して後で詳述する。
図1および図3のLUT状態ダイアグラム120は、分割されたフラッシュサイクル実装に基づくLUT状態シーケンスを示している。分割されたフラッシュとは、フラッシュイベント中に、一次LUT50の一部からバックアップLUT52へとフラッシュすることを称する。分割される部分には、一次LUT50の1以上の入力が含まれていて良い。一次LUT50を任意の数の分割部分に分割することができ、各部分の頻度および更新順序は調節可能である。
LUT状態ダイアグラム120は、タイムスロット1から14を含む様々な時間における一次LUT50の状態を示す。一次LUT50は、6個の入力104を含むものとして示されている。6入力それぞれには、LAAとPAAとが関連付けられている。LAAは、番号1から6で表され、テーブルの一列106に示されている。PAAは、タイムスロット1−14それぞれにおける一次LUT50として示されている。
図3のLUT状態ダイアグラム120は、図2の状態ダイアグラム100に類似しているが、LUT状態ダイアグラム120は、分割されたフラッシュイベントを含んでいる。図示されている各分割フラッシュイベントは、一次LUT50の1/3をフラッシュメモリ22へとフラッシュすることを含んでいる。4つのフラッシュイベント完了後の図3の一次LUT50は、2つのフラッシュイベント完了後の図2の一次LUT50と同じである(つまり、図2のFLUSH Bと、図3のFLUSH Dとが、10、8、12、9、5、11という一次LUT入力を有している)。
分割されたフラッシュイベントFLUSH A−Gは、それぞれタイムスロットの間に示されている。図示の実装例では、フラッシュイベントが、各2つのタイムスロットの組について行われている(または2つのタイムスロットごとに1回フラッシュイベントを行っている)。各フラッシュイベントにおいて6つの一次LUT入力のうち2つがフラッシュされている。例えば、フラッシュイベントFLUSH Aでは、LAA1、2およびPAA1、2を有する部分をフラッシュしている。これにより、フラッシュメモリにはフラッシュされた部分の更新されたバックアップが提供される。
一次LUT50を分割フラッシュすることによって、フラッシュイベント中のホストのパフォーマンスが瞬間的に落ちることを防止することができる。全サイクルフラッシュを、複数の小さいサイズの、または分割されたフラッシュイベントに分解することで、各フラッシュイベントにおいてホストが中断する時間を低減させたり、なくしたりすることができる。さらに、より少ないフラッシュ部分でホストの平均スループットを維持することができるようになり、同時に、ホストのパフォーマンス低下を最小限に抑えることができるようになる。図3の実装例において各部分をフラッシュする頻度は、図2の実装例において全サイクルまたは全LUTをフラッシュする頻度よりも多い。
フラッシュされる部分に関連付けられていない論理および物理アドレスへのホスト書き込み要求は、フラッシュイベント中に行うことができる。例えば、バックアップLUT52の各部分は、バックアップLUTの他の部分のLAAおよび/またはPAAにメタデータを書き込み、ユーザデータをフラッシュメモリ22に書き込んでいる間に更新することができる。言い換えると、対応するバックアップLUT入力が、フラッシュイベントによる更新を受けていないフラッシュメモリ22のLAAおよび/または対応するPAAにはデータを書き込むことができる。例えば、フラッシュメモリ22のLAAおよびPAA3−6には、フラッシュイベントFLUSH A中にも書き込みができる。
フラッシュされる部分に関連する論理および物理アドレスへのホスト書き込み要求は、その部分がフラッシュされている間中断される。ホスト12は、フラッシュイベントの間にバックアップ中であるフラッシュメモリ22のLAAおよび/またはPAAには書き込みができない。こうすることで、LAAおよびPAAのマッピング関連付けをバックアップLUT52でバックアップしている間は、一定のLAAおよびPAAをフラッシュメモリ22に書き込めなくなる。
例えばタイムスロット10で電力が喪失すると(破線110で示す)、一次LUT50を再構築する。一次LUT50は、次の電力ONイベント中に、バックアップLUT52とイベントログ54'とに基づいて再構築される。制御モジュール17が、イベントログ54'をウォークすることなくフラッシュメモリ22から揮発性メモリ20に、セーブされている部分をアップロードした場合には、結果生じるLUTは、それぞれ異なる時点の入力の組み合わせとなる(例えば、FLUSH C、D、Eの入力10、8、12、9、5、6)。このLUTは、どのタイムスロットも正確に表していない(つまり、LUTはタイムコヒーレントではない)。
タイムコヒーレントではないLUTは、LUT依存メタデータの再構築プロセスで利用できない。この問題を解決するために、一次LUT50の更新された入力の履歴および/またはフラッシュされた部分の履歴を、イベントログ54'経由で維持しておく。制御モジュールは、復元アルゴリズムに基づいてイベントログ54'を利用して、タイムコヒーレントに一次LUT50を再構築する。一次LUT50は、一次LUT50を利用する前にLUT依存メタデータを再構築するためにタイムコヒーレント状態に更新される。復元アルゴリズムは、フラッシュメモリ22に格納されていて、電力ONイベント中に揮発性メモリ20にアップロードされてもよいし、および/または、ROM18に格納されてもよい。復元アルゴリズムは、復元モジュール17により実行される。
一次LUT50の再構築においては、バックアップLUT52が揮発性メモリ20にアップロードされ、一次LUT50が提供される。バックアップLUT52の各部分は、それぞれ異なるタイムスロットでフラッシュされるので、これら部分は、それぞれ異なる時点のLUTのそれぞれ異なる部分の状態を表している。この結果、一次LUT50は、最初にアップロードされた時点ではタイムコヒーレントではない。一次LUT50の状態をタイムコヒーレント状態に変更するために、制御モジュール17は、イベントログ54'にウォーク処理を行い、一次LUT50の入力を更新する。イベントログ54'は、フラッシュメモリ22に格納されていてよく、前の変更の順序で、LAA−PAA関連付けの変更を含んでいる。一次LUT50の入力は、イベントログ54'に従って変更されるので、電力が喪失する前に入力が更新された順序で変更される。イベントログ54'の各入力は、特定のLAAに対して新たなPAAを含む。新たなPAAは、対応するタイムスロットにおいて一次LUT50の対応する更新された状態で示される。
図2および図3は、一次LUT入力(または非LUT依存メタデータ)のフラッシュを示している。非LUT依存メタデータに加えて、LUT依存メタデータ(または時変メタデータ)もまた、SSD14の動作中にフラッシュされる。LUT依存メタデータのフラッシュイベントの例を図5および図6に示す。LUT依存メタデータは、電力喪失後に復元することができ、イベントログ54'をウォークすることを含んでよい。
イベントログ54'はウォーク処理を受けることで揮発性メモリ20のタイムコヒーレントなLUTを構築した後で、LUT依存メタデータを復元することができる。タイムコヒーレントなLUTは、イベントログ54'のウォーク処理の開始時間を決定して少なくとも分割部分サイクル全体をアップロードすることで、構築される。制御モジュール17は、開始時間からイベントログをウォーク処理することで、LUT依存メタデータをアップロードする前に、揮発性メモリ20にタイムコヒーレントなLUTを提供する。タイムコヒーレントなLUTは、イベントログ54'の少なくとも分割部分サイクル全体にウォーキング処理をしたとき提供される。一例としては、この開示時間がFLUSH Cに関連付けられていてよい。イベントログのウォーク処理をFLUSH Eに関連付けられている時間まで行うと、一次LUT50をタイムコヒーレントな状態とすることができる。
イベントログ54'のウォーク処理中に、制御モジュール17は、イベントログ54'の入力に基づいて、および/または、バックアップLUT52の分割部分に基づいて、一次LUT50の入力を更新する。一次LUT50の入力は、これら入力がイベントログ54'で前に更新された順序で更新される。ひとたびタイムコヒーレントなLUTが構築されると、タイムコヒーレントなLUTが構築された後のイベントログの各入力に基づいてLUT依存メタデータを更新することができる。例えば、タイムコヒーレントなLUTがFLUSH Eという時点に構築されたとすると、制御モジュール17は、FLUSH Eの後からイベントログ54'に対するウォーク処理を続けて、一次LUT入力およびLUT依存メタデータを修正する。
図1および図4のLUT状態ダイアグラム150は、分割されたフラッシュサイクル実装のためのタイムコヒーレントなLUT時間を示している。LUT状態ダイアグラム150は、タイムスロット1から14を含む様々な時点における一次LUT50の状態を示している。図示されている一次LUT50は、6個の入力104を含むが、一次LUT50は任意の数の入力を含むことができる。6個の入力それぞれ104には、LAAおよびPAAが関連付けられている。LAAは、番号1から6で表され、テーブルの一列106に示されている。
非LUT依存メタデータを、分割されたLUTのフラッシュの助けを得てフラッシュする方法は幾つかある。方法はいずれも、それぞれに一次LUT50の再構築プロセスに影響を及ぼす可能性がある。図4は、6つの入力を有する一次LUTのLUT依存メタデータを復元するためにタイムコヒーレントなLUTを提供するために格納されるLUT分割部分およびイベントログ入力の最大数を示す。
LUT依存メタデータがフラッシュイベントの完全なサイクル1つおきに(または、5個のフラッシュ分割部分ごとに)復元される、と仮定すると、イベントログ入力のうち、少なくとも5つの分割されたフラッシュイベント(または全サイクルの分割部分を二倍したものから1を引いた数)がセーブされることになる。言い換えると、FLUSH A−Eという部分は、FLUSH AからFLUSH Eの間のタイムスロットにおいて、一次LUT変更を含むフラッシュメモリ22にセーブされる。FLUSH A−Eの後であって、電力が喪失したときのタイムスロット(タイムスロット10)の前の一次LUTの変更もフラッシュメモリ22にセーブする。5つの分割された入力の格納は、3個の部分を有するLUTテーブルの「最悪のケース」の例として考えることができよう。分割された入力の数は、LUT依存メタデータが最後にフラッシュされたときに基づいて、5未満であってよい。
制御モジュール17は、再構築アルゴリズムおよび/または再構築ファームウェアを利用して、イベントログ54'のウォーク処理を開始する開始点としてFLUSH Aに戻ることができる。制御モジュール17は、FLUSH Aの部分をフラッシュメモリ22から揮発性メモリ20にアップロードしてから、タイムスロット1からイベントログ54'にウォーク処理を行い、一次LUT50の入力を修正することができる。FLUSH Aは、イベントログの最後または電力が喪失したときから、2つの完全フラッシュサイクル後から1つの分割部分を引いた時となる。フラッシュアルゴリズムは、SSD14の処理中に、フラッシュメモリ22の2つの全サイクルから少なくとも1つの部分を差し引いた分を格納するものであってよい。フラッシュアルゴリズムは、フラッシュメモリ22に格納されていて、電力ONイベント中に揮発性メモリ20にアップロードされてもよいし、および/または、ROM18に格納されてもよい。
FLUSH Aの部分のアップロードに続いて、制御モジュール17が、イベントログ54'のウォーク処理を行って、次の変更(タイムスロット1、2におけるLAA2、3からPAA8、7へのアドレス変更の関連付け)をロードアップ(load up)する。次に、イベントログ54'内にウォーク処理を行ってタイムスロット4、3におけるLAA1、4からPAA10、9へのアドレス変更の関連付けを見つけて、FLUSH Bの部分をアップロードする。各部分がアップロードされ、一次LUT50への変更がイベントログ54'に基づいて実行されると、一次LUT50(またはRAM)の入力が上書きされる。全サイクルを完了するために、一次LUT50のFLUSH Cに対する部分を上書きする。この時点では(破線152で示されている)、一次LUT50がタイムコヒーレントとなっており、10、8、7、9、5、6という入力値を有する。
タイムコヒーレントなLUTに基づいてLUT依存メタデータを復元することができる。LUT依存メタデータはさらに、FLUSH Cの時点またはFLUSH Cに隣接する、またはその後のタイムスロットから始まるイベントログ入力に基づいて更新されてもよい。LUT依存メタデータは、例えばタイムスロット5からタイムスロット10のイベントログ54'にウォーク処理を行うことで更新することができる。
FLUSH DおよびEの各部分は、イベントログ54'の残りにウォーク処理を行って一次LUT50を更新している間は、アップロードされない。例えば、FLUSH DおよびEの各部分は、FLUSH DおよびEの前のタイムスロットに関するイベントログ54'から得られたFLUSH DおよびEに関するアドレスとしてはアップロードされない(例えばタイムスロット2、3、4、および6が、FLUSH DおよびEに反映させる変更を提供している)。この理由から、FLUSH DおよびEをアップロードするという処理は、イベントログ54'のウォーク処理と重複する場合がある。
LUT依存メタデータが存在しない場合には、電力ONイベント中に、分割部分の完全なフラッシュサイクルを1つだけセーブ、アップロードする。例えばFLUSH C、D、およびEは、タイムスロット10で電力が失われたときには、既に電力ONイベント中に格納、アップロードされていてよい。これにより、一次LUTを再構築するフラッシュ部分の完全なサイクル1つが提供される。FLUSH部分Cより前のフラッシュ部分(FLUSH A、B)は、LUT依存メタデータが存在していない場合には不要である。
図1および図5のLUT状態ダイアグラム160は、分割されたフラッシュサイクル実装について、非LUT依存のメタデータおよびLUT依存のメタデータのフラッシュタイミングを同期させたLUT状態ダイアグラムである。LUT状態ダイアグラム160は、タイムスロット1−14を含む様々な時点における一次LUT50の状態を示す。一次LUT50は、6つの入力104を含むものとして示されている。6つの入力104それぞれに、LAAとPAAとが関連付けられている。LAAは、番号1から6で表され、テーブルの一列106に示されている。
LUT依存メタデータ(ボックス162で示す)は、各分割されたフラッシュイベント中にフラッシュされる。LUT依存メタデータをフラッシュイベントごとにフラッシュすることで、制御モジュール17は、一次LUT50の復元中の部分の完全なフラッシュサイクル1つだけ戻って参照することで、タイムコヒーレントなLUTを提供することができる。LUT依存メタデータは、例えばFLUSH Eの部分の時点で利用可能となるので、タイムコヒーレントなLUTを構築することができる。タイムコヒーレントなLUTは、FLUSH CからFLUSH Eという部分をロードして、FLUSH Cからイベントログ54'の最後まで(または電源喪失に関連付けられたイベントログ入力まで)イベント54'にウォーク処理を行うことで、構築することが可能である。
図1および図6のLUT状態ダイアグラム170は、分割されたフラッシュサイクル実装について、専用の依存メタデータのフラッシュタイミングを示すLUT状態ダイアグラムである。LUT状態ダイアグラム170は、タイムスロット1−14を含む様々な時点における一次LUT50の状態を示す。一次LUT50は、6つの入力104を含むものとして示されている。6つの入力104それぞれに、LAAとPAAとが関連付けられている。LAAは、番号1から6で表され、テーブルの一列106に示されている。
図6の実装例は、排他的時間にLUT依存メタデータをフラッシュすることを含んでいる(ボックス172参照)。LUT依存メタデータは、一次LUT50(または非LUT依存メタデータ)の特定のLAAとPAAとのアドレス関連付け(または、タイムスロット6の行3から6における関連付け)がフラッシュされず、一次LUT50の他のLAAとPAAとのアドレス関連付け(例えば、タイムスロット6の行1および2における関連付け)がフラッシュされたようなとき、フラッシュされてよい。または、非LUT依存メタデータおよびLUT依存メタデータにそれぞれのフラッシュ時間を与えても良い。一例では、非LUT依存メタデータを、LUT依存メタデータのフラッシュ前または後にフラッシュしてもよい。非LUT依存メタデータまたはLUT依存メタデータに専用のフラッシュ時間を与えることにより、各フラッシュを行う時間が低減される。
示した実装例では、制御モジュール17が、再構築アルゴリズムを利用してFLUSH Aの部分から一次LUT50の再構築を始めることで、FLUSH DによりタイムコヒーレントなLUTが構築される。これにより、FLUSH Dの時点から始まるLUT依存メタデータを再構築するためのタイムコヒーレントなLUTが提供される。FLUSH Dは、電力(または電力サイクル)が喪失してから一番最近に行ったLUT依存メタデータのフラッシュのことである。
別の実装例では、LUT依存メタデータがフラッシュメモリ22に存在しているとき、LFUSH A−Cの各部分が、同じ期間および/または同時にアップロードされてよい。イベントログ54'は、FLUSH Aの時点であって、FLUSH A−Cの部分のアップロードの後に、ウォーク処理を行われて良い。一次LUTは、部分FLUSH A−Cをアップロードした当初は不正確であるかもしれないが、イベントログ54'のウォーク処理によって、FLUSH Cの時点からタイムコヒーレントなLUTが提供され、一次LUT50の入力が補正されて、タイムスロット10で復元されたLUTが提供される。イベントログ54'は、上述したように、特定の時間の論理−物理アドレスマッピングに対する変更を含んでいる。イベントログのウォーク処理には、イベントログ54'の入力で、一次LUT50の入力を更新する(または置き換える)ことが含まれる。LUT依存メタデータの値は、一次LUT50における更新された入力に基づいて更新されてよい。更新された値には、ユーザデータおよび/またはシステムデータ、データ記述子、不良情報、メモリブロック内のデータ量等へのポインタを含む。
時間およびリソースを節約するための別の実装例として、一次LUT50を再構築するときにイベントログの入力を省く、というものがある。例えば図6では、FLUSH Aの部分のアップロードの後に、タイムスロット1の変更を省いてもよい。FLUSH Bの部分のアップロードによってLAA3が上書きされ、PAAが3から7に変更されるので、タイムスロット1に関する変更は省くことができる。別の例として、枠で囲った領域180も省くことができるが、これは、この部分がFLUSH BおよびFLUSH Cにより説明がつくからである。
電力損失前であってLUT依存メタデータを最後にフラッシュしたとき以降に更新されたイベントログ入力は、省くことができない。例えばタイムスロット7−10中に更新されたイベントログ入力を省くことができないが、これは、LUT依存メタデータが、タイムスロット7−10それぞれにおける一次LUT50の変更に基づいて更新されることがあるからである。これらイベントログ入力のいずれかを省いた場合、結果生じるLUT依存メタデータが全ての変更を反映せず、不正確になる場合がある。
図1のデータ格納システム10は、幾つもの方法で実行することが可能であり、例示的な方法として図7および図8の方法が挙げられる。図7は、LUTを更新、バックアップする方法を示している。以下の処理は、主に図1、および図5−図6を参照して説明されるが、処理を変更して、本開示の他の実装例に応用することも容易である。処理は繰り返し実行することができる。方法は200から始まる。
204で、制御モジュール17は、LUTフラッシュ時間を決定する。LUTフラッシュ時間とは、バックアップLUT52に一次LUT50の一部分を次にフラッシュする時間のことであってよい。制御モジュール17は、定期的なフラッシュ間隔またはフラッシュ期間に基づいてフラッシュ時間を決定することができる。フラッシュ期間とは、分割されたフラッシュイベントの間の時間のことを指す。フラッシュ時間および/またはフラッシュ期間は、完全なフラッシュサイクル1つにおけるLUTの分割部分の数、起動復元時間、最大ホスト待ち時間等に基づいて決定されてよい。
起動復元時間とは、電源が喪失した後であって、電力ONイベント中に、一次LUT50を復元する時間のことである。フラッシュ期間が長くなると、一次LUT50を復元するためにイベントログ54にセーブする入力数も多くなる。一次LUT50を復元するために処理が必要なイベントログ54の入力数が増えると、起動復元時間も長くなる。さらに、フラッシュ期間が長くなると、フラッシュを行う機会が減る。フラッシュを行う頻度が少なくなると、一回のフラッシュイベントにフラッシュする一次LUT50の入力数が増えたり、および/または、一次LUT50を復元するために処理するイベントログ54の入力数が増えたりする。1つのフラッシュイベント中にフラッシュする一次LUT50の入力数が多くなると、あるフラッシュイベント中に生じうるホスト待ち時間(または、ホストが停止する時間)も長くなる。
204では、LUT依存メタデータのフラッシュ時間および/またはフラッシュ期間も決定されてよい。LUT依存メタデータのフラッシュ時間および/またはフラッシュ期間は、非LUT依存メタデータのフラッシュ時間および/またはフラッシュ期間に基づいて決定されてよい。例えば、LUT依存メタデータのフラッシュ時間は、非LUT依存メタデータのフラッシュ時間と同じに設定されても、異なるように設定されてもよい。
206で、制御モジュール17は、処理208の前に、非LUT依存メタデータのフラッシュ期間および/またはLUT依存メタデータのフラッシュ期間を待ってよい。208で、制御モジュール17は、フラッシュする1以上のLUT部分、および/または、LUT依存メタデータをフラッシュするか否か、を判断してよい。制御モジュール17は、一定の順序で一次LUT50の各部分を循環してよく、前にフラッシュした部分に基づいて次にフラッシュする部分を決定してよい。
210で、制御モジュール17は、選択した部分および/またはLUT依存メタデータをフラッシュする。LUT依存メタデータは、図5に示すように、非LUT依存メタデータがフラッシュされたときにフラッシュされてよい。212で、図6の実装例に基づいて、制御モジュール17は、一次LUT50の全ての部分がフラッシュされたかを判断する。処理214は、全ての部分のフラッシュが終了したところで実行され、さもなくば処理220が実行される。
処理214で、制御モジュール17は、フラッシュすべきLUT依存メタデータがあるかを判断する。処理216は、フラッシュすべきLUT依存メタデータがあるときに行われ、ないときには処理220が実行される。216で、制御モジュール17は、処理218の前にLUT依存メタデータのフラッシュ期間を待つ。処理218では、LUT依存メタデータをフラッシュする。
220で、制御モジュール17は、電力停止要求があるかを判断する。処理222は、電力停止要求を受けたときに実行され、受けていない場合には制御モジュール17は処理204に戻る。222で、電力停止イベント前に、LUT部分全てを揮発性メモリ20からフラッシュメモリ22にフラッシュして、バックアップLUT52を更新する。224で、SSD14の電力をOFFにする。方法は226で終了してよい。
図8は、LUTを復元する方法を示す。以下の処理は、図1、図5から図6の実装に関するものであるが、これら処理は本開示の他の実装例に利用可能なように変更することも容易である。処理は繰り返し実行することができる。方法は300から始まる。
302で、SDD14の電源をONにする。304で、制御モジュール17は、SSD14の電力が正常に停止されたかを判断する。SSD14は、SSD14の電源停止前に一次LUT50全体のフラッシュメモリ52へのフラッシュ(ダウンロード)が完了して、ダウンロードの後に一次LUTになんら変更がなかったときに、正常に停止されたと判断する。制御モジュール17は、イベントログ54の入力の、バックアップLUT52の入力との比較に基づいて、正常な電力停止が行われたかを判断する。例えば、イベントログ54の最後の所定数の入力(例えばフラッシュされた部分の完全な1サイクルに関連付けられている入力数)が、バックアップLUT52に反映されているとき、SSD14の正常な電源停止が行われたということでよい。処理306は、SSD14が正常電力停止したときに行われ、さもなくば処理310が実行される。
306で、制御モジュール17は、非LUT依存メタデータおよびLUT依存メタデータを、フラッシュメモリ22から揮発性メモリ20にアップロードする。方法は308で終了してよい。
310で、制御モジュール17は、LUT依存メタエータが存在しているかを判断する。処理312は、LUT依存メタデータがないときに実行され、あるときには処理320を実行する。
312で、制御モジュール17は、バックアップLUT52の第1の部分をアップロードして、第1(アップロード)部分が最後にフラッシュされた時点からイベントログ54のウォーク処理を開始する。第1の部分とは、イベントログ54の最後から、少なくとも完全な1つのフラッシュサイクル分前の部分のこととする。313で、アップロードタイマ60は、イベントログ54の現在の入力を指し示すために設定、または利用されてよい。アップロードタイマ60の最初のアップロード時間は、第1の部分の時間および/または、第1の部分に隣接する、またはその後のタイムスロットに対応していてよい。
314で、一次LUT50の論理−物理アドレス関連付けを、アップロード時間について、イベントログ54に基づいて更新する、および/または、次のLUT部分を、フラッシュメモリ22から揮発性メモリ20にアップロードする。316で、制御モジュール17は、イベントログ54の最後に到達したかを判断する。イベントログ54の最後に到達していない場合には、処理317を実行し、到達した場合には、処理318を実行する。317で、アップロード時間を増分して、次のタイムスロットまたはフラッシュ部分の時間を参照させるようにする。
処理320で、制御モジュール17は、電力が喪失する前に最後にLUT依存メタデータがフラッシュされた時間(またはタイムスロット)を判断する。この時点は、最後の依存メタデータタイムスロットとして称される場合がある。322で、制御モジュール17は、最後の依存メタデータタイムスロットの前の、少なくとも完全なフラッシュサイクル1つ分であるタイムスロットを決定する。このタイムスロットは、完全なフラッシュサイクルタイムスロットと称される場合がある。
324で、制御モジュール17は、完全なフラッシュサイクルタイムスロットの前の最初の部分をアップロードして、完全なフラッシュサイクルタイムスロットでイベントログ54のウォーク処理を始めてよい。325で、アップロードタイマ60を利用、セットすることで、イベントログ54の現在の入力を指し示す。アップロードタイマ60の最初のアップロード時間は、第1の部分の時間および/または第1の部分に隣接する、またはその後のタイムスロットに対応していてよい。326で、一次LUT50の論理−物理アドレス関連付けを、アップロード時間について、イベントログ54に基づいて更新する、および/または、次のLUT部分を、フラッシュメモリ22から揮発性メモリ20にアップロードする。
328で、制御モジュール17は、複数の部分からなる完全なサイクル1つをアップロードしたかを判断する。処理327は、部分の完全なサイクル1つがアップロードされていない場合に行われ、アップロードされている場合には処理320が実行される。タイムコヒーレントなLUTは、部分の完全なサイクル1つがアップロードされ、制御モジュール17が第1の部分から、部分の完全なサイクル1つまで、イベントログ54にウォーク処理を行ったところで、揮発性メモリ20に存在することになる。例えば図6では、第1の部分がFLUSH Aに関連付けられていてよく、最後の部分がFLUSH Cに関連付けられていてよい。FLUSH Aの時点からFLUSH Cの時点までイベントログ54にウォーク処理を行った結果得られる一次LUT50がタイムコヒーレントなLUTとなる。
330で、LUT依存メタデータを、タイムコヒーレントなLUTに基づいてアップロードする。332で、制御モジュール17は、イベントログ54の最後に到達したかを判断する。処理334は、イベントログ54の最後に到達していないときに実行され、到達した場合には方法は336で終了してよい。334で、制御モジュール17は、一次LUT50内の論理−物理アドレス関連付けを、イベントログ54に基づいて更新して、および/または、イベントログ54に基づいてLUT依存メタデータを更新する。335で、アップロードタイマ60を増分する。
図7および図8における上述した処理は、例示を意図しており、処理は、連続して実行してもよいし、同期させてもよいし、同時に行っても良いし、重複する期間に継続実行も可能であり、用途に応じては別の順序で行うこともできる。
上述した実装例により、RAMにLUTが格納される。LUTのデータは、電力が失われると消去され、および/または、失われる。LUTのデータを復元するために、上述した実装例は、不揮発性メモリにバックアップLUTおよびイベントログを維持する。バックアップLUTは、電力が失われる前に定期的に更新されてよい。LUTは、バックアップLUTおよびイベントログに基づいてRAMに復元される。LUTは、イベントログにウォーク処理を行うことで電力喪失前にLUTの最新の状態でRAMに復元される。これにより、LUTのバックアップを取る間に不揮発性メモリにデータを書き込むことに関するホスト待ち時間を最小限にすることができる。LUTに対するバックアップおよび復元に加えて、他のメタデータ(LUT依存メタデータ)をバックアップして復元することもできる。
本開示について広義の教義を様々な形態で実装することができる。従って、本開示では特定の例が含まれているとしても、本開示の真の範囲は、これに限定はされず、他の変形例も図面、明細書、および以下の請求項を読むことで明らかとなる。

Claims (17)

  1. 論理アドレスと物理アドレスとの間の第1のマッピングを含む第1のメタデータを有する第1のルックアップテーブル(LUT)を格納する第1のメモリと、
    前記論理アドレスと前記物理アドレスとの間の第2のマッピングを含む第2のメタデータを有する第2のLUTを格納する第2のメモリと、
    前記第1のメタデータを更新し、前記第1のメタデータに基づいて、其々所定の時点に前記第2のメタデータの部分を更新する制御モジュールと
    を備え、
    前記部分は、前記第2のLUTの所定数の入力のことである、システム。
  2. 前記第1のメモリは揮発性メモリであり、
    前記第2のメモリは不揮発性メモリである、請求項1に記載のシステム。
  3. 前記制御モジュールは、所定の間隔で第3のメタデータを更新し、
    前記第3のメタデータは、前記第1のメタデータまたは前記第2のメタデータの少なくとも一方に依存しており、
    前記第3のメタデータは、ユーザデータのポインタ、システムデータのポインタ、メモリのブロックに格納されているデータ量、または不良情報のうち、少なくとも1つを含む、請求項1に記載のシステム。
  4. 前記第3のメタデータは、前記第2のLUTのタイムコヒーレントなバージョンに依存している、請求項3に記載のシステム。
  5. 前記制御モジュールは、前記第2のメタデータを更新したときに基づいて前記第3のメタデータを更新する、請求項3に記載のシステム。
  6. 前記制御モジュールは、前記第1のメモリ内の前記第1のメタデータの部分を、前記第2のメモリ内の前記第1のメタデータの他の部分をバックアップしている間に更新する、請求項1に記載のシステム。
  7. 前記制御モジュールは、前記第2のメモリ内の前記第1のLUTの第2の部分をバックアップしている間に、前記第2のメモリにユーザデータを書き込んで、前記第1のメモリ内の前記第1のLUTの第1の部分を更新する、請求項1に記載のシステム。
  8. 電力ONイベント中に、前記制御モジュールは、イベントログの入力に基づいて前記第1のメモリの部分を更新して、前記第1のメモリに前記第2のメモリの部分をアップロードして、
    前記イベントログの前記入力には、前記システムのドライブの電力が失われる前に実行された前記物理アドレスおよび前記論理アドレスのうち選択されたものの間のメタデータの変更が含まれる、請求項1に記載のシステム。
  9. 前記制御モジュールは、前記第1のメタデータの部分のフラッシュ時間を決定して、フラッシュイベント間であるフラッシュ期間分待ち、前記フラッシュ時間のうちの対応する時間において、前記第1のメモリから前記第2のメモリに前記第1のメタデータをコピーすることで、前記第1のメタデータの前記部分をフラッシュする、請求項1に記載のシステム。
  10. 論理アドレスと物理アドレスとの間の第1のマッピングを含む第1のメタデータを有する第1のルックアップテーブル(LUT)を格納する第1のメモリと、
    前記論理アドレスと前記物理アドレスとの間の第2のマッピングを含む第2のメタデータを有する第2のLUTを格納する第2のメモリと、
    電力ONイベント中に、前記第2のメモリの部分を前記第1のメモリにアップロードして、イベントログの入力に基づいて前記第1のメモリの部分を更新する制御モジュールと
    を備え、
    前記イベントログの前記入力には、前記電力ONイベントの前に実行された前記物理アドレスおよび前記論理アドレスのうち選択されたものの間のメタデータの更新が含まれる、システム。
  11. 前記電力ONイベント中であって、LUT依存メタデータが前記第2のメモリに格納されていないときに、前記制御モジュールは、前記第2のメモリから前記第1のメモリに、少なくとも前記部分の完全なサイクル1つ分をアップロードする、請求項10に記載のシステム。
  12. 前記電力ONイベント中に、前記制御モジュールは、
    前記システムの正常な電力停止が行われたかを判断して、正常な電力停止とは、前記第1のLUTが、前記システムの最後の電力停止イベントの前に前記第2のメモリにフラッシュされることであり、
    前記システムの正常な電力停止が行われたときには、前記第2のメタデータを前記第2のメモリから前記第1のメモリに転送して、前記イベントログにウォーク処理を行わず、
    前記システムの正常な電力停止が行われなかったときには、前記第2のメタデータを前記第2のメモリから前記第1のメモリに転送して、前記イベントログにウォーク処理を行う、請求項10に記載のシステム。
  13. 前記制御モジュールは、ソリッドステートドライブの電力が失われる前に更新された前記部分の少なくとも完全なフラッシュサイクル1つをアップロードして、
    前記部分の前記少なくとも完全なフラッシュサイクル1つは、前記第2のメモリから前記第1のメモリにアップロードされ、前記第1のメタデータは、前記部分の前記少なくとも完全なフラッシュサイクル1つを含み、
    前記制御モジュールは、前記部分の前記少なくとも完全なフラッシュサイクル1つの第1の部分がフラッシュされたときから、前記ソリッドステートドライブの前記電力が失われたときの前記イベントログのタイムスロットへと、前記第1のメタデータを更新するべく、前記イベントログにウォーク処理を行い、
    前記電力ONイベントは、前記ソリッドステートドライブの前記電力が失われた後に行われる、請求項10に記載のシステム。
  14. 前記制御モジュールは、前記部分を前記第2のメモリから前記第1のメモリにアップロードして、前記第1のメタデータは、前記アップロードされた部分を含み、前記アップロードされた部分は、LUT依存メタデータのフラッシュイベントの前の、および、ソリッドステートドライブの電力が失われたときの前記イベントログのタイムスロットの前の、前記部分の少なくとも完全なフラッシュサイクル1つを含み、
    前記制御モジュールは、前記部分の前記完全なフラッシュサイクル1つの第1の部分のタイムスロットから、前記ソリッドステートドライブの前記電力が失われたときの前記イベントログの前記タイムスロットへと、前記第1のメタデータを更新するべく、前記イベントログにウォーク処理を行い、
    前記電力ONイベントは、前記ソリッドステートドライブの前記電力が失われた後に行われる、請求項10に記載のシステム。
  15. 前記電力ONイベント中に、前記制御モジュールは、
    前記部分の完全なフラッシュサイクル1つの第1の部分を前記第2のメモリから前記第1のメモリにアップロードして、
    前記イベントログの入力に基づいて、前記第1のメモリの前記部分の前記完全なサイクル1つのロードおよび更新を含む、ソリッドステートドライブの電力停止サイクルに関連付けられたタイムスロットまで第1のタイムスロットから、前記イベントログにウォーク処理を行い、
    前記第1のタイムスロットから前記部分の前記完全なサイクル1つのタイムスロットまで前記イベントログにウォーク処理を行っている間、前記制御モジュールは、イベントログ入力を省いて、前記省いたイベントログ入力に関連付けられている前記第1のメモリの入力を更新しない、請求項10に記載のシステム。
  16. 論理アドレスと物理アドレスとの間の第1のマッピングを含む第1のメタデータを有する第1のルックアップテーブル(LUT)を第1のメモリに格納する段階と、
    前記論理アドレスと前記物理アドレスとの間の第2のマッピングを含む第2のメタデータを有する第2のLUTを第2のメモリに格納する段階と、
    制御モジュールを通じて前記第1のメタデータを更新し、前記第1のメタデータに基づいて、其々所定の時点に前記第2のメタデータの部分を更新する段階と
    を備え、
    前記部分は、前記第2のLUTの所定数の入力のことである、方法。
  17. 前記第2のメモリに、第3のメタデータを格納する段階をさらに備え、
    前記第3のメタデータは、前記第1のメタデータまたは前記第2のメタデータのうち少なくとも一方に依存しており、
    前記其々所定の時点において、前記第3のメタデータを更新する段階をさらに備える、請求項16に記載の方法。
JP2013512090A 2010-05-25 2011-05-19 システムおよび方法をセーブして修復するメモリアクセステーブル Expired - Fee Related JP5850048B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US34791910P 2010-05-25 2010-05-25
US61/347,919 2010-05-25
US13/110,517 2011-05-18
US13/110,517 US8886870B2 (en) 2010-05-25 2011-05-18 Memory access table saving and restoring system and methods
PCT/US2011/037164 WO2011149760A1 (en) 2010-05-25 2011-05-19 Memory access table saving and restoring system and methods

Publications (2)

Publication Number Publication Date
JP2013530455A true JP2013530455A (ja) 2013-07-25
JP5850048B2 JP5850048B2 (ja) 2016-02-03

Family

ID=44529868

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013512090A Expired - Fee Related JP5850048B2 (ja) 2010-05-25 2011-05-19 システムおよび方法をセーブして修復するメモリアクセステーブル

Country Status (6)

Country Link
US (2) US8886870B2 (ja)
EP (1) EP2577471A1 (ja)
JP (1) JP5850048B2 (ja)
KR (1) KR101759690B1 (ja)
CN (1) CN102971717B (ja)
WO (1) WO2011149760A1 (ja)

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9128949B2 (en) * 2012-01-18 2015-09-08 Cloudera, Inc. Memory allocation buffer for reduction of heap fragmentation
US9977612B1 (en) * 2012-05-11 2018-05-22 Western Digital Technologies, Inc. System data management using garbage collection and logs
US9037820B2 (en) * 2012-06-29 2015-05-19 Intel Corporation Optimized context drop for a solid state drive (SSD)
US9524800B2 (en) 2012-09-26 2016-12-20 International Business Machines Corporation Performance evaluation of solid state memory device
US20140244897A1 (en) * 2013-02-26 2014-08-28 Seagate Technology Llc Metadata Update Management In a Multi-Tiered Memory
US9454474B2 (en) 2013-03-05 2016-09-27 Western Digital Technologies, Inc. Methods, devices and systems for two stage power-on map rebuild with free space accounting in a solid state drive
CN104111872B (zh) * 2013-04-19 2016-02-17 腾讯科技(深圳)有限公司 系统事件的过滤方法、装置及终端
CN103399826B (zh) * 2013-08-15 2016-01-06 南京新联电子股份有限公司 一种基于nor flash的数据存储方法
JP2015219839A (ja) * 2014-05-20 2015-12-07 株式会社東芝 半導体メモリ装置、メモリコントローラの制御方法、及びメモリコントローラ
WO2016020927A1 (en) * 2014-08-04 2016-02-11 Hewlett-Packard Development Company, L.P. Event stream processing
KR20170073792A (ko) * 2015-12-18 2017-06-29 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
US10162561B2 (en) 2016-03-21 2018-12-25 Apple Inc. Managing backup of logical-to-physical translation information to control boot-time and write amplification
KR102641107B1 (ko) 2016-07-29 2024-02-27 삼성전자주식회사 스토리지 장치, 이를 포함하는 시스템 및 그 동작 방법
US20180095788A1 (en) 2016-10-04 2018-04-05 Pure Storage, Inc. Scheduling operations for a storage device
KR20180041898A (ko) * 2016-10-17 2018-04-25 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
US10853233B2 (en) 2016-10-18 2020-12-01 Toshiba Memory Corporation Reconstruction of address mapping in a host of a storage system
TWI591533B (zh) * 2016-11-25 2017-07-11 慧榮科技股份有限公司 可用於資料儲存裝置之資料儲存方法與資料回復程序、以及採用這些方法的資料儲存裝置
US10198354B2 (en) * 2017-03-21 2019-02-05 Intel Corporation Apparatus, system, and method to flush modified data from a volatile memory to a persistent second memory
KR20180128588A (ko) * 2017-05-24 2018-12-04 에스케이하이닉스 주식회사 메모리 시스템 및 그의 동작 방법
KR102234725B1 (ko) * 2017-05-30 2021-04-02 에스케이하이닉스 주식회사 컨트롤러 및 메모리 시스템 및 메모리 시스템의 동작 방법
CN107329909B (zh) * 2017-06-27 2020-07-07 郑州云海信息技术有限公司 一种数据管理方法及装置
CN108182154A (zh) * 2017-12-22 2018-06-19 深圳大普微电子科技有限公司 一种基于固态硬盘的日志文件的读写方法及固态硬盘
US10628051B2 (en) * 2018-07-13 2020-04-21 Seagate Technology Llc Reducing a data storage device boot time
CN109213690A (zh) * 2018-09-21 2019-01-15 浪潮电子信息产业股份有限公司 一种l2p表的重建方法及相关装置
KR102605566B1 (ko) * 2018-11-22 2023-11-24 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
US11086737B2 (en) * 2019-01-16 2021-08-10 Western Digital Technologies, Inc. Non-volatile storage system with rapid recovery from ungraceful shutdown
KR20210000414A (ko) * 2019-06-25 2021-01-05 에스케이하이닉스 주식회사 메모리 시스템
US11474865B2 (en) * 2019-08-23 2022-10-18 Micron Technology, Inc. Allocation schema for a scalable memory area
US11093317B1 (en) * 2020-01-27 2021-08-17 EMC IP Holding Company LLC Managing uncorrectable user data
US11409608B2 (en) * 2020-12-29 2022-08-09 Advanced Micro Devices, Inc. Providing host-based error detection capabilities in a remote execution device
KR20220124905A (ko) 2021-03-04 2022-09-14 삼성전자주식회사 메모리 저장 장치, 메모리 저장 장치의 구동 방법 및 호스트 장치의 구동 방법
US11720490B2 (en) * 2021-08-31 2023-08-08 Micron Technology, Inc. Managing host input/output in a memory system executing a table flush

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060253645A1 (en) * 2005-05-09 2006-11-09 M-Systems Flash Disk Pioneers Ltd. Method and system for facilitating fast wake-up of a flash memory system
JP2008181204A (ja) * 2007-01-23 2008-08-07 Sony Corp 記憶装置およびコンピュータシステム、並びに記憶装置の管理方法
JP2008191930A (ja) * 2007-02-05 2008-08-21 Sony Corp 不揮発性半導体記憶装置およびその管理方法

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5325531A (en) * 1989-06-30 1994-06-28 Digital Equipment Corporation Compiler using clean lines table with entries indicating unchanged text lines for incrementally compiling only changed source text lines
US5802572A (en) * 1996-03-15 1998-09-01 International Business Machines Corporation Write-back cache having sub-line size coherency granularity and method for maintaining coherency within a write-back cache
US6691203B1 (en) * 2000-08-30 2004-02-10 Mosel Vitelic Corporation Integrated controller to process both optical reads and optical writes of multiple optical media
US7533214B2 (en) * 2002-02-27 2009-05-12 Microsoft Corporation Open architecture flash driver
US7631162B2 (en) 2005-10-27 2009-12-08 Sandisck Corporation Non-volatile memory with adaptive handling of data writes
US7516267B2 (en) 2005-11-03 2009-04-07 Intel Corporation Recovering from a non-volatile memory failure
JP2008009527A (ja) 2006-06-27 2008-01-17 Toshiba Corp メモリシステム
CN101192195B (zh) * 2006-11-22 2011-08-03 北京华旗资讯数码科技有限公司 电子硬盘的存储空间的分组管理方法
CN101558392A (zh) * 2006-12-11 2009-10-14 马维尔国际贸易有限公司 混合非易失性固态存储器系统
WO2008106686A1 (en) 2007-03-01 2008-09-04 Douglas Dumitru Fast block device and methodology
US8843691B2 (en) * 2008-06-25 2014-09-23 Stec, Inc. Prioritized erasure of data blocks in a flash storage device
US8572309B2 (en) * 2009-03-12 2013-10-29 Marvell World Trade Ltd. Apparatus and method to protect metadata against unexpected power down
US11051711B2 (en) 2016-04-22 2021-07-06 New York University Noninvasive determination of electrical properties of tissues and materials using magnetic resonance measurements

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060253645A1 (en) * 2005-05-09 2006-11-09 M-Systems Flash Disk Pioneers Ltd. Method and system for facilitating fast wake-up of a flash memory system
JP2008544343A (ja) * 2005-05-09 2008-12-04 サンディスク アイエル リミテッド フラッシュメモリシステムの迅速なスリープ解除を促進するための方法およびシステム
JP2008181204A (ja) * 2007-01-23 2008-08-07 Sony Corp 記憶装置およびコンピュータシステム、並びに記憶装置の管理方法
JP2008191930A (ja) * 2007-02-05 2008-08-21 Sony Corp 不揮発性半導体記憶装置およびその管理方法

Also Published As

Publication number Publication date
JP5850048B2 (ja) 2016-02-03
WO2011149760A4 (en) 2012-01-19
CN102971717A (zh) 2013-03-13
US9639423B2 (en) 2017-05-02
CN102971717B (zh) 2015-12-16
KR20130111228A (ko) 2013-10-10
US8886870B2 (en) 2014-11-11
EP2577471A1 (en) 2013-04-10
KR101759690B1 (ko) 2017-07-19
US20110296123A1 (en) 2011-12-01
WO2011149760A1 (en) 2011-12-01
US20150143174A1 (en) 2015-05-21

Similar Documents

Publication Publication Date Title
JP5850048B2 (ja) システムおよび方法をセーブして修復するメモリアクセステーブル
JP6820248B2 (ja) 持続性記憶装置を管理する方法およびシステム、ならびに非一時的コンピュータ読み取り可能媒体
KR101288408B1 (ko) 플래시 메모리 시스템의 고속 웨이크-업을 용이하게 하는 방법과 시스템
US8255614B2 (en) Information processing device that accesses memory, processor and memory management method
JP6026538B2 (ja) 検証されたデータセットの不揮発性媒体ジャーナリング
TWI590049B (zh) 記憶體裝置與其操作方法
US7818610B2 (en) Rapid crash recovery for flash storage
US8341386B2 (en) Method for updating basic input/output system and method for repairing thereof
US8356148B2 (en) Snapshot metadata management in a storage system
US8078908B2 (en) Data storage device and method
JP2013065309A (ja) 不揮発性メモリシステムのためのウィーブシーケンスカウンタ
JP2009521045A (ja) ブロック消去可能なメモリ場所を有する不揮発性メモリ
JP2006120082A (ja) メモリカード、半導体装置、及びメモリカードの制御方法
US20170269870A1 (en) Memory controller, nonvolatile storage device, nonvolatile storage system, and memory control method
US20210081284A1 (en) Incrementally updating recovery map data for a memory system
CN107544912B (zh) 一种日志记录方法、加载方法及其装置
CN115705152A (zh) 使用存储器内日志在非易失性存储器装置中的元数据管理
WO2018090249A1 (en) Log-structured storage method and server
JP2022114726A (ja) メモリシステムおよび制御方法
KR20150094292A (ko) 비휘발성 메모리 기반의 전자 장치의 메타 데이터 복원 방법 및 장치
CN115705153A (zh) 有条件更新和延迟的查找
CN111597066B (zh) Ssd修复方法、装置、计算机设备及存储介质
CN107544913B (zh) 一种ftl表快速重建方法与装置
JP6221702B2 (ja) 情報処理装置、情報処理方法、及び情報処理プログラム
TWI454907B (zh) 記憶裝置及其運作方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140430

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150122

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150224

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150525

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150707

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20151007

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20151104

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20151117

R150 Certificate of patent or registration of utility model

Ref document number: 5850048

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees
S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R371 Transfer withdrawn

Free format text: JAPANESE INTERMEDIATE CODE: R371