TWI634426B - 管理邏輯至實體轉譯資訊的備份以控制開機時間以及寫入放大 - Google Patents
管理邏輯至實體轉譯資訊的備份以控制開機時間以及寫入放大 Download PDFInfo
- Publication number
- TWI634426B TWI634426B TW106101723A TW106101723A TWI634426B TW I634426 B TWI634426 B TW I634426B TW 106101723 A TW106101723 A TW 106101723A TW 106101723 A TW106101723 A TW 106101723A TW I634426 B TWI634426 B TW I634426B
- Authority
- TW
- Taiwan
- Prior art keywords
- incremental updates
- translation table
- volatile memory
- processor
- memory
- Prior art date
Links
Classifications
-
- 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
- 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
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- 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/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
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/20—Employing a main memory using a specific memory technology
- G06F2212/202—Non-volatile memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
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)
- Retry When Errors Occur (AREA)
Abstract
一種儀器,其包括一介面以及一處理器。該介面經組態以與一非揮發性記憶體通訊。該處理器經組態以保持一轉譯表,該轉譯表在該非揮發性記憶體中的邏輯位址與各別的實體位址之間映射;將該轉譯表的一基線版本以一或多個大塊(bulk)備份至該非揮發性記憶體;額外地將一或多個增量更新備份至該非揮發性記憶體,該一或多個增量更新指明相對於該轉譯表之該基線版本的改變,該等改變由接續的複數個儲存操作所導致;當與該基線版本一同從該非揮發性記憶體復原且重放於該處理器中時,判定符合該轉譯表的一目標復原時間的該等增量更新的一最大數量;以及將備份的該等增量更新的一數量設定為不超過該最大數量。
Description
相關申請案之交互參考
本申請案主張美國臨時專利申請案第62/310,832號(於2016年3月21日申請)之優先權,其以引用方式併入本文中。
本文中描述的實施例大致上有關於資料儲存,且特別是有關於用於管理邏輯至實體映射資訊的儲存以控制開機時間以及寫入放大的方法及系統。
在各式儲存系統中,根據一邏輯位址空間操作的一記憶體控制器將資料儲存於根據一實體位址空間操作的一或多個非揮發性記憶體裝置中。該記憶體控制器一般在一揮發性記憶體中保持一邏輯至實體映射表,其用於在該等邏輯與實體位址之間轉譯。為了保護該轉譯資訊在例如電源關閉的情況中不丟失,該記憶體控制器一般將該轉譯表備份在該非揮發性記憶體裝置中。
在本領域中已知用於儲存及復原邏輯至實體轉譯資訊的方法。舉例而言,美國專利申請公開案第2009/0327589號(其揭露以引用方式併入本文中)描述將表日誌登載(table journaling)於一快閃儲存裝置中的方法,該快閃儲存裝置包含一揮發性記憶體以及複數個非揮發性資料方塊。所述方法包括以下步驟:在該複數個非揮發性資料方塊的一第一者或第一多者中產生儲存於該揮發性記憶體中的一位址表的一第一複本、將交易日誌(transaction log)資料寫入至該複數個非揮發性資料方塊的一第二者或第二多者、以及在該複數個非揮發性資料方塊的該第二者或第二多者已被交易日誌資料填滿之後,基於儲存於該揮發性記憶體中的該位址表的改變更新該位址表的該第一複本。
美國專利第8,909,851號(其揭露以引用方式併入本文中)描述一種儲存控制系統的操作方法,其包括:提供一記憶體控制器;由該記憶體控制器存取一揮發性記憶體表;寫入一非揮發性半導體記憶體,用於將改變保留於該揮發性記憶體表中;以及在一電力循環之後,藉由復原來自一最近使用清單之具有一邏輯至實體分割(partition)的一隨機存取記憶體來在該揮發性記憶體表中復原一邏輯至實體表。
在本文中描述的一實施例提供包括一介面以及一處理器的一儀器。該介面經組態以與一非揮發性記憶體通訊。該處理器經組態以保持一轉譯表,該轉譯表在該非揮發性記憶體中的邏輯位址與各別的實體位址之間映射;將該轉譯表的一基線版本以一或多個大塊(bulk)備份至該非揮發性記憶體;額外地將一或多個增量更新(incremental update)備份至該非揮發性記憶體,該一或多個增量更新指明(specify)相對於該轉譯表之該基線版本(baseline version)的改變,該等改變由接續的複數個儲存操作所導致;當與該基線版本一同從該非揮發性記憶體復原且重放於該處理器中時,判定符合該轉譯表的一目標復原時間的該等增量更新的一最大數量;以及將備份的該等增量更新的一數量設定為不超過該最大數量。
在一些實施例中,該處理器經組態以將該等增量更新備份於連續的大塊的保存之間。在其他實施例中,假設整個該基線版本已被載入,該處理器經組態以藉由評估用於載入及重放該等增量更新的該目標復原時間的一剩餘時間來判定該最大數量。在又一其他實施例中,該處理器經組態以基於一大塊尺寸選擇在連續的大塊之間允許的該等增量更新的一差異數量,以符合該目標復原時間並維持與該處理器通訊的一主機的一工作量效能。
在一實施例中,該處理器經組態以基於該轉譯表的一片段(fragmentation)程度選擇該差異數量。在另一實施例中,該處理器經組態以藉由計算由一大塊覆蓋的邏輯位址的一範圍與該大塊尺寸之間的一比率來估計該片段程度。在再一其他實施例中,該處理器經組態以從一主機接收用於儲存的資料,該主機的寫入活動設定檔包括隨機活動以及有序活動的一混合,且該處理器經進一步組態以基於該寫入活動設定檔(write activity profile)選擇該等大塊的連續儲存之間的該等增量更新的一允許數量。
在一些實施例中,該處理器經組態以針對具有一主隨機活動的一第一混合選擇一第一允許數量,以及針對具有一主有序活動的一第二混合選擇一第二允許數量,該第一允許數量小於該第二允許數量。在其他實施例中,該處理器經組態以基於在開機期間中重建該轉譯表是否需要該轉譯表的解除片段(de-fragmentation)的一預測來選擇在正常操作期間中保存於大塊之間的該等增量更新的一數量。在又一其他實施例中,該處理器經組態以評估在開機操作期間中或在正常操作期間中該等增量更新的一重放時間,並且若評估的該重放時間短於一預定義時間限制,即藉由在正常操作期間中僅保存複數個增量更新而重用該轉譯表的一近期基線版本。
根據在本文中描述的一實施例額外地提供一方法,其包括在將資料儲存於一非揮發性記憶體中的一記憶體控制器中保持一轉譯表,該轉譯表在該非揮發性記憶體中的邏輯位址與各別的實體位址之間映射。將該轉譯表的一基線版本以一或多個大塊備份至該非揮發性記憶體。額外地將一或多個增量更新備份至該非揮發性記憶體,該一或多個增量更新指明相對於該轉譯表的該基線版本的改變,該等改變由接續的儲存操作所導致。判定該等增量更新的一最大數量,以使得當與該基線版本一同從該非揮發性記憶體復原且重放於該記憶體控制器中時,符合該轉譯表的一目標復原時間。將備份的該等增量更新的一數量設定為不超過該最大數量。
由此等及其他實施例之下列詳細說明、連同圖式將更完整地了解該等實施例,其中:
概要
在各式儲存系統中(諸如固態硬碟(solid state drives,SSD)),一控制器將一主機的資料儲存於一或多個非揮發性記憶體裝置。一般而言,來自該主機的命令指明(specify)在一邏輯位址空間中的邏輯位址,然而該等記憶體裝置係根據在一實體位址空間中的實體位址運行。該控制器使用一轉譯表(translation table)在該等邏輯與實體位址之間轉譯,該控制器一般將該轉譯表保存在一本機揮發性記憶體中。在本揭露的上下文及申請專利範圍中,該非揮發性記憶體裝置統稱為一「非揮發性記憶體(non-volatile memory)」。
由於儲存於該揮發性記憶體中的資訊未能在電源中斷時受到保護,因此該控制器一般將該轉譯資訊保存於該非揮發性記憶體中。原則上,對於表的每次更新,該控制器可將整個轉譯表寫入至該非揮發性記憶體中。然而,該轉譯表尺寸一般約為數百MB,所以此種備份策略將對可用系統頻寬造成無法接受的消耗量,並增加在該非揮發性記憶體中的該寫入放大(write amplification,WA)效應。
在本文中描述的實施例提供用於管理轉譯資訊備份及復原的改善方法及系統。在所揭露的技術中,該控制器將該轉譯表的一基線版本以及可能的一或多個增量更新儲存於該非揮發性記憶體中,該一或多個增量更新指明相對於該基線版本對該轉譯表所導致的改變,其係由於接續的儲存操作。
在所揭露的實施例中,該控制器將該轉譯表以方塊保存至該非揮發性記憶體中,該等方塊在本文中稱為「基線大塊(baseline bulk)」或簡稱為「大塊(bulk)」。一般的大塊尺寸約為1 MB,但亦可使用任何其他合適的大塊尺寸。
在連續大塊的儲存之間,該控制器可應用使該轉譯表相對於該基線版本改變的儲存操作。此等操作包括寫入使用者資料以及將維護操作(maintenance operation)應用至該非揮發性記憶體,諸如垃圾回收(garbage collection)。在一些實施例中,該控制器將對應於與在相鄰大塊的儲存之間發生於該轉譯表的改變的增量更新儲存至該非揮發性記憶體。增量更新的尺寸一般遠小於該大塊尺寸,因此如以下將說明的,控制增量更新之數量的備份方案是有益的。
在一些實施例中,該控制器藉由先從該非揮發性記憶體將該等基線大塊載回至該本機揮發性記憶體以在開機期間中重建該轉譯表。該控制器接著「重放(replay)」該等增量更新並將其應用至該基線版本之上。當該等基線版本及該等增量更新的數量較大時,該開機時間一般將較長,反之亦然。
較為頻繁地儲存基線版本導致較少的增量更新,即較短的重建時間,但也非所欲地導致增加WA及減少用於儲存及維護操作的頻寬。在一些實施例中,在正常操作期間中,該控制器藉由適應性地調整在保存一接續基線大塊之前所允許的該等增量更新的數量來控制該轉譯表在開機期間中的該預期重建時間。在一些實施例中,該最大開機時間被預指明(pre-specified),且該控制器在該開機重建時間的限制條件下最大化該等增量更新的數量。
該儲存系統中的另一重要因素為該轉譯表的整體尺寸,其取決於該主機的該寫入活動設定檔(隨機對有序存取設定檔)。若該活動係相當隨機,該轉譯表傾向為片段(fragmented)且因而較大。若該活動係相當有序,該變換表將為緊密且較小。
在一些實施例中,為了遵守該最大開機時間規定,該控制器(在正常操作期間中)取決於該轉譯表的該目前尺寸(如前所述的,取決於該主機寫入活動設定檔)調適在該等基線大塊的連續儲存之間所允許的該等增量更新的數量。因此,當該主機活動已為相當隨機時,導致一大的表,該基線大塊的載入時間增加,因此用於載入以及重放增量更新的剩餘時間變得更短。結果,該控制器允許將較小數量的增量更新儲存於大塊片之間。在此情況中,該控制器更為頻繁地儲存該等基線大塊,並允許更少的增量更新介於其中。當該主機活動相當有序時,造成一小的表,大量的增量更新可在該指明的開機時間內被載入及重放。在此情況中,該控制器較不頻繁地儲存該等基線大塊,並允許更多的增量更新。
在所揭露的技術中,該等基線大塊與該等增量更新之間的一比率(以及該大塊尺寸)經適應性地調整以符合在復原該轉譯表的同時減少WA及改善該儲存通量的一開機時間限制條件。 系統描述
圖1係根據在本文中描述的實施例示意地繪示多裝置記憶體系統20的方塊圖。系統20從主機24接受用於儲存的資料並將其儲存於記憶體中,以及從記憶體提取資料並將其提供予該主機。在本實例中,系統20包含一固態硬碟(solid-state disk,SSD),其儲存一用於主機電腦的資料。然而在替代性實施例中,系統20可用於任何其他合適的應用中以及與任何其他合適的主機同用,諸如在計算裝置、蜂巢式電話或其他通訊終端、可移除式記憶體模組,保全數位(secure digital,SD)卡、多媒體卡(multi-media cards,MMC)和嵌入式MMC (embdeed MMC,eMMC)、數位相機、音樂和其他媒體播放器及/或其中儲存或提取資料之任何其他系統或裝置。
系統20包含多個記憶體裝置28,各包含多個記憶體單元。在本實例中,該等裝置28包含非揮發性NAND快閃記憶體,而亦可使用即使在無電源時也可保留其儲存資訊的任何其他合適類型的非揮發性記憶體。非揮發性記憶體例如包括鐵電式、電阻式、及磁阻式RAM。
在一些實施例中,裝置28的該等記憶體單元包含類比記憶體單元,其保持一實體參數的一連續類比值,諸如一電性電壓或電荷。可使用任何合適的類比記憶體單元類型,諸如上述的該等類型。在本實例中,各記憶體單元28包含NAND快閃單元的一非揮發性記憶體。儲存於該等單元中的電荷準位及/或寫入至該等單元或自該等單元讀出的該等類比電壓或電流在本文中統稱為類比值或儲存值。
系統20藉由程式化該等單元以假設各別的記憶體狀態來將資料儲存於該等記憶體單元中,該等記憶體狀態亦稱為程式化等級。該等程式化等級選自可能等級的一有限集合,且各等級對應於某一標稱儲存值(nominal storage value)。舉例而言,一個2位元/單元的MLC可經程式化以藉由將四個可能的標稱儲存值的一者寫入至該單元中來假設四個可能的程式化等級之一者。
該等記憶體單元一般配置為列及行。一般而言,給定的記憶體裝置包含多個抹除方塊(亦稱為記憶體方塊),亦即,被一同抹除的記憶體單元的群組。資料一般無法在原地被再次程式化,而記憶體方塊因此在被以其他資料程式化之前被抹除。資料一般被程式化至記憶體單元的群組,並以稱為資料頁面(或簡稱為頁面)的資料單元被從該等記憶體單元的該等群組提取。
各記憶體裝置28可包含一封裝的裝置或一未封裝的半導體晶片或晶粒。一般的SSD可包含數個記憶體裝置,其各具有例如32 GB或128 GB的儲存容量。然而,系統20大致上可包含任何合適數量的、所需類型及尺寸的記憶體裝置。雖然圖1的系統組態包含多個記憶體裝置,但在本文中描述的一些方法及系統亦可使用於僅具有單一記憶體裝置的系統中。
系統20包含記憶體控制器32,其接受來自主機24的資料並將其儲存於記憶體裝置28中,以及從該等記憶體裝置提取資料並將其提供於該主機。記憶體控制器32包含用於與主機24通訊的主機介面36、用於與記憶體裝置28通訊的記憶體介面40、以及處理儲存及提取的資料的處理器44。在一些實施例中,控制器32以一錯誤更正碼(ECC)編碼儲存的資料。在這些實施例中,控制器32包含一ECC單元48,其在資料被儲存於裝置28之前將資料編碼,並對從裝置28提取的資料的ECC解碼。處理器44的功能例如可使用運行於一合適中央處理單元(central processing unit,CPU)的軟體、使用硬體(例如狀態機或其他邏輯)、或使用軟體及硬體元件的組合來實施。
控制器32在匯流排46上與記憶體裝置28通訊。匯流排46包含任何合適的鏈路或匯流排,諸如一平行匯流排或一序列匯流排、或一基於封包的匯流排(諸如PCIe)。匯流排46可根據任何合適的標準或協定並在任何的速率下操作。
為了應用一儲存指令至一給定的記憶體裝置,該控制器在匯流排46上發送該儲存指令至該記憶體裝置。儲存指令的類型例如包括頁面寫入、頁面讀取、以及方塊抹除指令。在一些實施例中,系統20支援應用至多個並聯記憶體裝置的儲存指令。
在一些實施例中,主機24運行一檔案系統(file system,FS)(未展示於圖中),其將一或多個檔案儲存於SSD 20中。該FS使用一邏輯位址方案將該等檔案儲存於該SSD中。在此方案中,該FS將一或多個邏輯位址(亦稱為邏輯方塊位址(logical block address,LBA))的一群組指派予各檔案,並發送該檔案資料至SSD 20用於根據該等LBA儲存。
記憶體控制器32的處理器44一般維護一邏輯至實體位址轉譯(其有關該主機以在快閃裝置28中的個別實體儲存位置(亦稱為實體位址)指明的該等邏輯位址),並將該資料儲存於適當的實體儲存位置。該邏輯至實體位址轉譯(亦稱為虛擬至實體映射(virtual-to-physical mapping,V2P))可儲存於該記憶體控制器的一本機揮發性記憶體(諸如DRAM 50)、快閃裝置28、或於此二者中。
在所揭露的一些實施例中,記憶體控制器32將該邏輯至實體轉譯保持於DRAM 50中的一轉譯表中。該轉譯表的尺寸一般約為數百MB。記憶體控制器32將該轉譯表保存於記憶體裝置28中,使得在系統開機的期間中(例如在電源關閉後)可復原該轉譯表。
記憶體控制器32(特別是處理器44)可實施為硬體。替代地,該記憶體控制器可包含一微處理器,其運行合適的軟體,或硬體及軟體元件的組合。在一些實施例中,處理器44包含一般用途的處理器,其經軟體程式化以實現本文中描述的功能。該軟體例如可在網路上以電子形式下載至該處理器,或者其可替代地或附加地被提供及/或儲存在有形媒體上,諸如磁性、光學、或電子記憶體。
圖1的系統組態為一實例組態,其純粹係為了將概念釋明而示出。亦可使用任何其他合適的記憶體系統組態。為了簡潔起見,對於理解本發明原則的非必要元件(諸如各種介面、定址電路、定時及序列電路、以及除錯電路)已被省略。
在圖1所示的例示性系統組態中,記憶體裝置28以及記憶體控制器32被實施為分離的積體電路(ICs)。然而,在替代性實施例中,該記憶體裝置以及該記憶體控制器可以單一多晶片封裝(multi-chip package, MCP)或系統單晶片(system on chip, SoC)整合在分離的半導體晶粒上,且可由一內部匯流排互連。又或者,該記憶體控制器電路系統的一些或全部可駐留在設置該等記憶體裝置的一或多者之相同的晶粒上。又或者,記憶體控制器32的一些或全部功能可實施為軟體,並由一處理器或該主機系統的其他元件、或任何其他類型的記憶體控制器實施。在一些實施例中,主機24以及記憶體控制器32可製造於相同晶粒上,或在相同裝置封裝中的分離晶粒上。 轉譯表備份及重建
考慮由在DRAM 50中的記憶體控制器32所管理的一邏輯至實體轉譯表。在一般的實施方案中,在該轉譯表中的一項(entry)將邏輯位址的一範圍映射至實體位址的一各別範圍。在支援該轉譯表的重建中(例如在電源關閉後的開機期間中),該記憶體控制器將更新的轉譯資訊保存於非揮發性記憶體裝置28中。
該控制器可實施平穩(graceful)或不平穩(ungraceful)備份。在一平穩備份中,該控制器將與儲存於該DRAM中的轉譯表的相同的版本保存至該非揮發性記憶體中。在此清況中,該控制器藉由自該非揮發性記憶體載回所保存的該表來重建該轉譯表。
在一不平穩備份中,該控制器將該轉譯表的一基線版本隨著一或多個增量更新保存於該非揮發性記憶體中,該一或多個增量更新指明相對於該基線版本對該轉譯表所導致的改變,其係由於接續的儲存操作。為了重建該轉譯表,該控制器自該非揮發性記憶體將該基線版本載入至該DRAM,進一步載入保存的該等增量更新,並在該基線版本之上應用該等增量更新。
在所揭露的實施例中,該控制器藉由將該表分割為多個方塊(在本文中稱為「大塊(bulk)」)來保存該轉譯表的一基線版本。該控制器以一所選的速率發送該等大塊,該等大塊包含用於在該非揮發性記憶體中儲存的該基線版本。接續的儲存操作可導致在該DRAM中的該轉譯表相對於該基線版本的改變。此類儲存操作包括諸如寫入或刪除使用者資料的使用者操作。亦影響該轉譯表的內容的儲存操作包括對記憶體裝置28的維護操作,諸如垃圾回收。
該控制器可以大塊及增量更新的各式組合來保存一給定的轉譯表。舉例而言,以較高速率保存該等大塊減少了該等增量更新的數量,反之亦然。然而,頻繁的大塊寫入增加在記憶體裝置28中的該寫入放大(write amplification, WA)效應,並且由於儲存該等大塊消耗頻寬(否則其將維持可用於使用者儲存操作和維護操作),因而減少SSD通量。
圖2係根據在本文中描述的一實施例示意地繪示實體至邏輯轉譯資訊的週期性備份的圖。在圖2中,一個白色格子代表一基線大塊,而一有色格子代表一增量更新。以「X」標記的白色格子代表可用於使用者儲存操作以及維護操作的週期。
在圖2中,該轉譯表的一備份週期包含儲存該表的一基線版本以及可能的相關增量更新,該等增量更新與該基線版本可一同用於復原該轉譯表。該基線版本儲存於標示為Bi的多個大塊中。在連續的複數個大塊之間,該控制器可能應用使用者儲存操作以及維護操作,並保存由此等操作所導致的對於該轉譯表的增量更新。如上所述的,給定一基線版本,該等基線大塊被保存的速率決定用於復原所需的該等增量更新的數量。
考慮保存包括Nb個基線大塊及Nu個增量更新的轉譯資訊。令Tb標示單一大塊從該揮發性記憶體至該DRAM的載入時間,而Tu標示一增量更新的載入及重放時間。該整體重建時間Trec如下得出: 式1:
在一般的實施方案中,Tb及Tu各別約為數毫秒及數微秒,例如Tb為5毫秒而Tu為3微秒。在一具有512 GB的儲存容量與512 MB的DRAM的SSD實例中,該轉譯表的該基線版本可能需要DRAM中的400 MB,即,400個1 MB的大塊。若在本實例中用於不平穩重建的該時間限制為10秒,該等增量更新的總數Nu則約限制為2.6百萬個。
如式1所示,給定基線大塊的一數量Nb,則該等增量更新的總數Nu決定該總復原時間。因此,減少儲存該等基線大塊的速率增加了該等增量更新的數量Nu,其改善了在記憶體裝置中的WA,並增加在正常SSD操作期間中的該通量。然而,大的Nu可能導致Trec長於一預定最大允許值,其標示為Ttargert。因此,期望在不超過Ttarget的情況下最大化Nu。該等增量更新的最大允許數量Nmax滿足: 式2:
圖3係根據在本文中描述的一實施例示意地繪示從先前備份的轉譯資訊重建一轉譯表的圖。在圖3的實例中,該控制器載入一大塊以及與此大塊相關的該等增量更新。該控制器於該基線大塊之上接著重放該等增量更新,以重建該大塊的該更新版本。
在替代性實施例中,亦可使用其他合適的重建方法。舉例而言,在一實施例中,該控制器先載入所有的該等基線大塊,並接著載入及重放該等增量更新。在另一實施例中,該控制器載入屬於任何已被載入的基線大塊的增量更新,並據以重放這些增量更新。在又其他實施例中,亦可使用任何其他合適的載入及重放順序。 適應性地控制該等增量更新的數量
圖4係根據在本文中描述的一實施例示意地繪示用於適應性控制增量更新的數量的一方法的流程圖。該方法例如可在正常操作期間中由控制器32執行(例如使用處理器44)。
在一備份週期起始步驟100中,該方法起始於控制器32將本機儲存於DRAM 50的該轉譯表的第一大塊寫入至該非揮發性記憶體。在一預測步驟104中,該控制器藉由計算下式評估可用的增量更新的數量: 式3:
在式3中,Ttarget標示可用於不平穩復原的總時間,Nb∙Tb為該Nb個基線大塊的該載入時間,(Ttarget-Nb∙Tb)為用於載入及重放增量更新的剩餘時間,而Tu為單一增量更新的(期望或平均)載入及重放時間。注意,該等基線大塊的數量Nb(其取決於該轉譯表的尺寸)可能在該備份週期的期間改變。
在一更新備份步驟108中,該控制器選擇該等增量更新的一數量M,其中M在0至N可用的範圍中。該控制器可使用任何合適的方法選擇M。在一實例實施例中,該控制器基於該儲存工作量選擇M,使得一較高的工作量等級意指選擇一較小數量的M,反之亦然。在一些實施例中,在不違反指明的該最大開機時間,且亦維持主機工作量效能的同時,該控制器基於該大塊尺寸選擇M。舉例而言,對於一給定的大塊尺寸而言(例如1 MB),由該大塊中含有的該轉譯資訊所覆蓋的邏輯位址(LBA)的範圍測量了此大塊的該片段程度。該片段程度越高,所覆蓋的LBA範圍越低。在一實施例中,該控制器基於由一大塊覆蓋的該LBA範圍與該大塊尺寸之間的一比率來選擇M,該比率作為該片段程度的一測量。
當在步驟108所選的數量M不為0時,該控制器執行使用者儲存操作及/或維護儲存操作,並據以更新在DRAM 50中的該轉譯表。對於相對於該基線版本改變該轉譯表的各操作,該控制器將各別的增量更新寫入至該非揮發性記憶體。該控制器持續此程序直到將M個增量更新發送至該非揮發性記憶體為止。進一步在步驟108中,該控制器藉由減去M的值來更新可用的該等增量更新的數量N可用。
在一迴圈管理步驟116中,該控制器確認該最後的基線大塊是否已被寫入該非揮發性記憶體,若是,則續行至一週期終止步驟120,其中若N可用大於0,則該控制器將一數量N可用的剩餘該等增量更新寫入至該非揮發性記憶體。
若在步驟116中,尚未儲存一或多個基線大塊,則在一大塊寫入步驟120中,該控制器從該基線表選擇接續基線大塊,並將所選的該大塊寫入至該非揮發性記憶體。該控制器接著迴圈返回步驟104以更新可用的該等增量更新的數量。
在圖4的方法中,該控制器已知該邏輯至實體映射表的整體尺寸,或等效地,該等基線大塊的數量Nb。在另一實施例中,代替或除了使用該表尺寸之外,該控制器基於該主機的該寫入活動設定檔(隨機對有序位址存取)調整介於連續的複數個大塊之間的該等增量更新的數量。
當該主機活動係相當隨機時,該轉譯表傾向為片段且因而較大。當該主機活動係相當有序時,該轉譯表傾向為緊密且較小。因此,在一些實施例中,為了遵守該最大開機時間規定,該控制器(在正常操作期間中)取決於主機寫入活動設定檔而調適在該等基線大塊的連續儲存之間所允許的增量更新的數量。
當該活動相當隨機時,該表為大,且只有少數的增量更新可在該指明的開機時間內被載入及重放。在此情況中,該控制器更為頻繁地儲存該等基線大塊,並允許更少的增量更新。
當該活動相當有序時,該表較小,且大量的增量更新可在該指明的開機時間內被載入及重放。在此情況中,該控制器較不頻繁地儲存該等基線大塊,並允許更多的增量更新。 額外的變化及實施例
圖5係根據在本文中描述的一實施例描繪在開機期間中的該等增量更新的該重放時間的圖。如圖中所看到的,該等增量更新的該重放時間隨著在該DRAM中的該轉譯表的重建進展而增加。這可能例如發生在該轉譯表為高度片段時,而為了減少在該DRAM中的該表尺寸,該控制器隨著該重建的進展而執行一或多個解除片段操作。
在一變化實施例中,該控制器預測在開機期間中重建該轉譯表是否需要解除片段,若是的話,則降低在正常操作期間中保存於大塊之間的該等增量更新的數量。該控制器預測在開機期間中、在正常操作期間中、或在前述二者中對於解除片段的需求。在需要密集解除片段的一極端情況中,該控制器在正常操作期間中僅保存複數個基線大塊而不保存增量更新。
在另一變化實施例中,該控制器可決定重用該轉譯表的一近期基線版本,並在正常操作期間中僅保存增量更新。在一實例實施例中,若在一近期開機操作期間中,該等增量更新的該重放時間短於一預定義時間限制(例如,100毫秒),則該控制器維持該基線版本,亦即不保存任何基線大塊而僅將增量更新保存於該非揮發性記憶體中。藉由避免將更新的基線大塊保存至該非揮發性記憶體裝置中,在該非揮發性記憶體裝置中的該WA效應顯著地改善。
以上揭示的實施例僅用以舉例,而亦可使用其他合適的實施例。舉例而言,雖然在以上描述的實施例中,吾人主要假設了一固定的大塊尺寸,在替代性實施例中,該轉譯表的該基線版本可被切割為非固定尺寸的多個大塊。
當理解上述實施例係經由實例方式引用,且以下的申請專利範圍並未受限於上文已具體顯示及敘述者。毋寧說,該範圍包括上述各種特徵的組合及子組合兩者以及所屬技術領域中具有通常知識者一經閱讀前文敘述所發想且未經先前技術揭示的變化與修改。在本發明專利申請案中以引用方式併入本文中的文件應被考慮為本申請案不可或缺的一部分,除了在這些所併入文件中的任何用語被明確地或隱含地以與本說明書所為之方式相左的方式定義的情況下,應僅考慮本說明書中的定義。
20‧‧‧系統
24‧‧‧主機
28‧‧‧記憶體裝置
32‧‧‧記憶體控制器;控制器
36‧‧‧主機介面
40‧‧‧記憶體介面
44‧‧‧處理器
46‧‧‧匯流排
48‧‧‧ECC單元
50‧‧‧DRAM
100‧‧‧步驟
104‧‧‧步驟
108‧‧‧步驟
116‧‧‧步驟
120‧‧‧步驟
124‧‧‧步驟
[圖1]係根據在本文中描述的一實施例示意地繪示記憶體系統的方塊圖; [圖2]係根據在本文中描述的一實施例示意地繪示實體至邏輯轉譯資訊的週期性備份的圖; [圖3]係根據在本文中描述的一實施例示意地繪示從先前備份的轉譯資訊重建一轉譯表的圖; [圖4]係根據在本文中描述的一實施例示意地繪示用於適應性控制增量更新的數量的一方法的流程圖;並且 [圖5]係根據在本文中描述的一實施例描繪在開機期間中的該等增量更新的該重放時間的圖。
Claims (20)
- 一種儀器,包含: 一介面,其經組態以與一非揮發性記憶體通訊;以及 一處理器,其經組態以: 保持一轉譯表,該轉譯表在該非揮發性記憶體中的邏輯位址與各別的實體位址之間映射; 將該轉譯表的一基線版本以一或多個大塊備份至該非揮發性記憶體中; 額外地將一或多個增量更新備份至該非揮發性記憶體,該一或多個增量更新指明相對於該轉譯表之該基線版本的改變,該等改變由接續的儲存操作所導致; 當與該基線版本一同從該非揮發性記憶體復原且重放於該處理器中時,判定符合該轉譯表的一目標復原時間的該等增量更新的一最大數量;以及 將備份的該等增量更新的一數量設定為不超過該最大數量。
- 如請求項1之儀器,其中該處理器經組態以將該等增量更新備份於連續的大塊的保存之間。
- 如請求項1之儀器,其中假設整個的該基線版本已被載入,該處理器經組態以藉由評估用於載入及重放該等增量更新的該目標復原時間的一剩餘時間來判定該最大數量。
- 如請求項1之儀器,其中該處理器經組態以基於一大塊尺寸選擇在連續的大塊之間允許的該等增量更新的一差異數量,以符合該目標復原時間並維持與該處理器通訊的一主機的一工作量效能。
- 如請求項4之儀器,其中該處理器經組態以基於該轉譯表的一片段(fragmentation)程度選擇該差異數量。
- 如請求項5之儀器,其中該處理器經組態以藉由計算由一大塊覆蓋的邏輯位址的一範圍與該大塊尺寸之間的一比率來估計該片段程度。
- 如請求項1之儀器,其中該處理器經組態以從一主機接收用於儲存的資料,該主機的寫入活動設定檔包含隨機活動以及有序活動的一混合,且其中該處理器經進一步組態以基於該寫入活動設定檔選擇該等大塊的連續儲存之間的該等增量更新的一允許數量。
- 如請求項7之儀器,其中該處理器經組態以針對具有一主隨機活動的一第一混合選擇一第一允許數量,以及針對具有一主有序活動的一第二混合選擇一第二允許數量,其中該第一允許數量小於該第二允許數量。
- 如請求項1之儀器,其中該處理器經組態以基於在開機期間中重建該轉譯表是否需要該轉譯表的解除片段(de-fragmentation)的一預測來選擇在正常操作期間中保存於大塊之間的該等增量更新的一數量。
- 如請求項1之儀器,其中該處理器經組態以評估在開機操作期間中或在正常操作期間中該等增量更新的一重放時間,並且若評估的該重放時間短於一預定義時間限制,即藉由在正常操作期間中僅保存增量更新而重用該轉譯表的一近期基線版本。
- 一種方法,其包含: 在將資料儲存於一非揮發性記憶體中的一記憶體控制器中保持一轉譯表,該轉譯表在該非揮發性記憶體中的邏輯位址與各別的實體位址之間映射; 將該轉譯表的一基線版本以一或多個大塊備份至該非揮發性記憶體中; 額外地將一或多個增量更新備份至該非揮發性記憶體,該一或多個增量更新指明相對於該轉譯表之該基線版本的改變,該等改變由接續的儲存操作所導致; 當與該基線版本一同從該非揮發性記憶體復原且重放於該記憶體控制器中時,判定符合該轉譯表的一目標復原時間的該等增量更新的一最大數量;以及 將備份的該等增量更新的一數量設定為不超過該最大數量。
- 如請求項11之方法,其中備份該等增量更新包含將該等增量更新備份於連續的大塊的保存之間。
- 如請求項11之方法,其中判定該最大數量包含假設整個的該基線版本已被載入,評估用於載入及重放該等增量更新的該目標復原時間的一剩餘時間。
- 如請求項11之方法,其中判定該最大數量包含基於一大塊尺寸選擇在連續的大塊之間允許的該等增量更新的一差異數量,以符合該目標復原時間並維持與該記憶體控制器通訊的一主機的一工作量效能。
- 如請求項14之方法,其中選擇該差異數量包含基於該轉譯表的一片段程度判定該差異數量。
- 如請求項15之方法,其中判定該差異數量包含藉由計算由一大塊覆蓋的邏輯位址的一範圍與該大塊尺寸之間的一比率來估計該片段程度。
- 如請求項11之方法,且包含從一主機接收用於儲存的資料,該主機的寫入活動設定檔包含隨機活動以及有序活動的一混合,及基於該寫入活動設定檔選擇該等大塊的連續儲存之間的該等增量更新的一允許數量。
- 如請求項17之方法,其中選擇該允許數量包含針對具有一主隨機活動的一第一混合選擇一第一允許數量,以及針對具有一主有序活動的一第二混合選擇一第二允許數量,其中該第一允許數量小於該第二允許數量。
- 如請求項11之方法,且包含基於在開機期間中重建該轉譯表是否需要該轉譯表的解除片段的一預測來選擇在正常操作期間中保存於大塊之間的該等增量更新的一數量。
- 如請求項11之方法,且包含評估在開機操作期間中或在正常操作期間中該等增量更新的一重放時間,並且若評估的該重放時間短於一預定義時間限制,即藉由在正常操作期間中僅保存增量更新而重用該轉譯表的一近期基線版本。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201662310832P | 2016-03-21 | 2016-03-21 | |
US62/310,832 | 2016-03-21 | ||
US15/190,216 | 2016-06-23 | ||
US15/190,216 US10162561B2 (en) | 2016-03-21 | 2016-06-23 | Managing backup of logical-to-physical translation information to control boot-time and write amplification |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201734808A TW201734808A (zh) | 2017-10-01 |
TWI634426B true TWI634426B (zh) | 2018-09-01 |
Family
ID=58108426
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW106101723A TWI634426B (zh) | 2016-03-21 | 2017-01-18 | 管理邏輯至實體轉譯資訊的備份以控制開機時間以及寫入放大 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10162561B2 (zh) |
EP (1) | EP3223160B1 (zh) |
CN (1) | CN107220143B (zh) |
TW (1) | TWI634426B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2018181202A (ja) * | 2017-04-20 | 2018-11-15 | 富士通株式会社 | ストレージ制御装置、ストレージ制御方法及びストレージ制御プログラム |
TWI704454B (zh) * | 2018-03-15 | 2020-09-11 | 建興儲存科技股份有限公司 | 固態儲存裝置的對應表管理方法 |
US10592427B2 (en) | 2018-08-02 | 2020-03-17 | Micron Technology, Inc. | Logical to physical table fragments |
US11810034B2 (en) * | 2018-11-02 | 2023-11-07 | Kardin Systems Inc. | Variable resource allocation |
CN115221072A (zh) * | 2021-04-21 | 2022-10-21 | 建兴储存科技股份有限公司 | 固态存储装置的快闪转换层对应表处理方法 |
US11720490B2 (en) * | 2021-08-31 | 2023-08-08 | Micron Technology, Inc. | Managing host input/output in a memory system executing a table flush |
CN115933995B (zh) * | 2023-01-09 | 2023-05-09 | 苏州浪潮智能科技有限公司 | 固态硬盘中数据写入方法、装置、电子设备及可读介质 |
CN115794497B (zh) * | 2023-02-08 | 2023-05-05 | 成都佰维存储科技有限公司 | Ssd掉电解决方法、装置、可读存储介质及电子设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI352901B (en) * | 2005-08-03 | 2011-11-21 | Sandisk Corp | Mass data storage system |
US20160048354A1 (en) * | 2013-05-17 | 2016-02-18 | Western Digital Technologies, Inc. | Method and system for atomically writing scattered information in a solid state storage device |
Family Cites Families (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3579389B2 (ja) * | 2001-11-30 | 2004-10-20 | 株式会社東芝 | ディスクアレイ装置及び同装置におけるデータ復旧方法 |
US20050251617A1 (en) | 2004-05-07 | 2005-11-10 | Sinclair Alan W | Hybrid non-volatile memory system |
CN101105774B (zh) * | 2006-10-26 | 2010-08-11 | 福昭科技(深圳)有限公司 | 闪存记忆体在进行数据存取时的逻辑与物理地址转换方法 |
US8082384B2 (en) | 2008-03-26 | 2011-12-20 | Microsoft Corporation | Booting an electronic device using flash memory and a limited function memory controller |
US8843691B2 (en) | 2008-06-25 | 2014-09-23 | Stec, Inc. | Prioritized erasure of data blocks in a flash storage device |
US8285955B2 (en) | 2009-10-16 | 2012-10-09 | Lenovo (Singapore) Pte. Ltd. | Method and apparatus for automatic solid state drive performance recovery |
CN101782875B (zh) * | 2010-01-29 | 2012-01-04 | 成都市华为赛门铁克科技有限公司 | 存储设备和数据存储方法 |
JP5066209B2 (ja) * | 2010-03-18 | 2012-11-07 | 株式会社東芝 | コントローラ、データ記憶装置、及びプログラム |
US9189385B2 (en) | 2010-03-22 | 2015-11-17 | Seagate Technology Llc | Scalable data structures for control and management of non-volatile storage |
US8886870B2 (en) | 2010-05-25 | 2014-11-11 | Marvell World Trade Ltd. | Memory access table saving and restoring system and methods |
US8886990B2 (en) * | 2011-01-27 | 2014-11-11 | Apple Inc. | Block management schemes in hybrid SLC/MLC memory |
US8909851B2 (en) | 2011-02-08 | 2014-12-09 | SMART Storage Systems, Inc. | Storage control system with change logging mechanism and method of operation thereof |
US8913335B2 (en) * | 2011-05-23 | 2014-12-16 | HGST Netherlands B.V. | Storage device with shingled data and unshingled cache regions |
US8612719B2 (en) * | 2011-07-21 | 2013-12-17 | Stec, Inc. | Methods for optimizing data movement in solid state devices |
US8949512B2 (en) | 2012-02-17 | 2015-02-03 | Apple Inc. | Trim token journaling |
US8966205B1 (en) | 2012-05-10 | 2015-02-24 | Western Digital Technologies, Inc. | System data management using garbage collection and hybrid self mapping |
US9268682B2 (en) | 2012-10-05 | 2016-02-23 | Skyera, Llc | Methods, devices and systems for physical-to-logical mapping in solid state drives |
US8954694B2 (en) | 2012-11-15 | 2015-02-10 | Western Digital Technologies, Inc. | Methods, data storage devices and systems for fragmented firmware table rebuild in a solid state drive |
TWI514140B (zh) | 2013-02-05 | 2015-12-21 | Via Tech Inc | 非揮發性記憶裝置及其操作方法 |
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 |
TWI506430B (zh) | 2013-03-20 | 2015-11-01 | Phison Electronics Corp | 映射資訊記錄方法、記憶體控制器與記憶體儲存裝置 |
US9213633B2 (en) | 2013-04-30 | 2015-12-15 | Seagate Technology Llc | Flash translation layer with lower write amplification |
US8838936B1 (en) | 2013-11-27 | 2014-09-16 | NXGN Data, Inc. | System and method for efficient flash translation layer |
-
2016
- 2016-06-23 US US15/190,216 patent/US10162561B2/en active Active
-
2017
- 2017-01-18 TW TW106101723A patent/TWI634426B/zh active
- 2017-02-07 EP EP17155039.5A patent/EP3223160B1/en active Active
- 2017-03-20 CN CN201710163526.5A patent/CN107220143B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI352901B (en) * | 2005-08-03 | 2011-11-21 | Sandisk Corp | Mass data storage system |
US20160048354A1 (en) * | 2013-05-17 | 2016-02-18 | Western Digital Technologies, Inc. | Method and system for atomically writing scattered information in a solid state storage device |
Also Published As
Publication number | Publication date |
---|---|
CN107220143B (zh) | 2020-10-23 |
US20170269844A1 (en) | 2017-09-21 |
EP3223160A1 (en) | 2017-09-27 |
US10162561B2 (en) | 2018-12-25 |
CN107220143A (zh) | 2017-09-29 |
TW201734808A (zh) | 2017-10-01 |
EP3223160B1 (en) | 2020-04-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI634426B (zh) | 管理邏輯至實體轉譯資訊的備份以控制開機時間以及寫入放大 | |
US11216323B2 (en) | Solid state memory system with low power error correction mechanism and method of operation thereof | |
US20220139455A1 (en) | Solid state drive architectures | |
US10768679B2 (en) | Memory system and controller | |
US9720616B2 (en) | Data-retention controller/driver for stand-alone or hosted card reader, solid-state-drive (SSD), or super-enhanced-endurance SSD (SEED) | |
US8737148B2 (en) | Selective retirement of blocks | |
US10061710B2 (en) | Storage device | |
US10061694B2 (en) | Memory system and method for controlling non-volatile memory | |
US8984247B1 (en) | Storing and reconstructing mapping table data in a data storage system | |
US10762967B2 (en) | Recovering from failure in programming a nonvolatile memory | |
US11537512B2 (en) | Asynchronous power loss recovery for memory devices | |
KR20120030137A (ko) | 영구 가비지 컬렉션을 갖는 메모리 시스템 | |
KR20130010449A (ko) | 비휘발성 임시 데이터 핸들링 | |
KR101579711B1 (ko) | 플래시 변환 층(ftl) 데이터베이스 저널링 기법들 | |
US20160034341A1 (en) | Orphan block management in non-volatile memory devices | |
US20110060865A1 (en) | Systems and Methods for Flash Memory Utilization | |
CN112416650A (zh) | 存储器控制器的操作方法、存储器控制器以及存储设备 | |
US20120198126A1 (en) | Methods and systems for performing selective block switching to perform read operations in a non-volatile memory | |
CN117369715A (zh) | 基于存储设备中的引用更新使用回收单元的系统、方法和设备 | |
CN112015339A (zh) | 一种存储器的数据保存系统,保存方法及存储系统 |