TWI519950B - 處理用於一具有非揮發性記憶體之系統的動態及靜態資料 - Google Patents

處理用於一具有非揮發性記憶體之系統的動態及靜態資料 Download PDF

Info

Publication number
TWI519950B
TWI519950B TW101128492A TW101128492A TWI519950B TW I519950 B TWI519950 B TW I519950B TW 101128492 A TW101128492 A TW 101128492A TW 101128492 A TW101128492 A TW 101128492A TW I519950 B TWI519950 B TW I519950B
Authority
TW
Taiwan
Prior art keywords
nvm
data
block
dynamic
tree
Prior art date
Application number
TW101128492A
Other languages
English (en)
Other versions
TW201245959A (en
Inventor
丹尼爾J 波斯特
尼爾J 渥克瑞特
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 TW201245959A publication Critical patent/TW201245959A/zh
Application granted granted Critical
Publication of TWI519950B publication Critical patent/TWI519950B/zh

Links

Classifications

    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7211Wear leveling

Description

處理用於一具有非揮發性記憶體之系統的動態及靜態資料
通常將NAND快閃記憶體以及其他類型之非揮發性記憶體(「NVM」)用於大容量儲存器。舉例而言,消費型電子設備(諸如攜帶型媒體播放器)常常包括用以儲存音樂、視訊及其他媒體之快閃記憶體。
NVM可包括電子器件所需之資料(例如,「有效資料」)與電子器件不再需要之資料(例如,「無效資料」)兩者。可將儲存於NVM中之有效資料進一步分成被頻繁更新或改變的資料(例如,「動態資料」)與很少被更新或改變的資料(例如,「靜態資料」)。習知地,資料在NVM中之置放係相當任意的,使得可存在儲存於NVM之單一區塊中之動態與靜態資料的混合物。
一些NVM經組態使得在可重新程式化經程式化記憶體位置之一區塊中之任一記憶體位置之前需要抹除該區塊。因此,電子器件通常執行被稱為「記憶體垃圾收集」(garbage collection,「GC」)之操作以釋放區塊來進行抹除及重新程式化。為了釋放彼區塊中之所有記憶體位置以進行抹除,電子器件可將該區塊之有效資料複製至另一區塊之記憶體位置中。由於在區塊上存在動態與靜態資料之混合物,所以GC之效率可為低的,因為必須加以複製之有效資料的量可為顯著的。
另外,電子器件可有時使用被稱為「耗損平均」之操作來對區塊執行GC。耗損平均大體用以延長NVM之有效壽 命。時常地,系統可執行NVM之不必要之耗損平均,此可實際上引起NVM之更多磨損。
揭示用於處置用於一具有非揮發性記憶體之系統之動態及靜態資料的系統及方法。藉由判定正被寫入至NVM之資料是否為動態,系統之NVM介面可判定最初將資料置放於NVM上何處。此外,此允許NVM介面改良記憶體垃圾收集與耗損平均兩者的效率。
在考慮結合隨附圖式來理解之以下詳細描述後,本發明之以上及其他態樣與優點便將變得更加顯而易見,其中相似之參考字元始終指代相似之部分。
提供了用於處置用於一具有非揮發性記憶體(「NVM」)之系統之動態及靜態資料的系統及方法。藉由判定正被寫入至NVM之資料是否為動態的,系統之NVM介面可判定最初將資料置放於NVM上何處。此外,此允許NVM介面改良記憶體垃圾收集(「GC」)與耗損平均兩者之效率。
舉例而言,回應於接收對應於一邏輯區塊位址(「LBA」)範圍之寫入請求,NVM介面可判定與該LBA範圍相關聯之資料是否為動態的。在一些實施例中,NVM介面可基於自樹或後設資料獲得之一或多個參數而作出此判定。該一或多個參數可為任何合適之參數,諸如:指示一特定LBA範圍已被寫入之次數的計數器;指示資料何時由應用程式及/或作業系統最後寫入至LBA範圍的使用者交錯 序列(user weave sequence);指示資料何時由任何源(例如,由GC程序或由應用程式或作業系統)最後寫入至LBA範圍的交錯序列;及/或其之任何組合。基於與LBA範圍相關聯之資料係動態還是並非動態的判定,NVM介面可將資料程式化至動態串流區塊抑或靜態串流區塊。
如本文中所使用,「動態串流區塊」可為NVM之已由NVM介面指派作為動態串流之部分的任何合適之區塊。可將被分類為動態之傳入資料選擇性地置放於一或多個動態區塊上。同樣,如本文中所使用,「靜態串流區塊」可為NVM之已由NVM介面指派作為靜態串流之部分的任何合適之區塊。可將被分類為靜態之傳入資料選擇性地置放於一或多個靜態區塊上。
藉由將傳入資料分割為兩個單獨之寫入串流,可減少GC寫入放大且可因此改良GC之效率。另外,對資料是否為動態的判定允許NVM介面避免對NVM之不必要之耗損平均。
圖1說明電子器件100之方塊圖。在一些實施例中,電子器件100可為或可包括攜帶型媒體播放器、蜂巢式電話、袖珍型個人電腦、個人數位助理(「PDA」)、桌上型電腦、膝上型電腦及任何其他合適類型之電子器件。
電子器件100可包括系統單晶片(「SoC」)110及非揮發性記憶體(「NVM」)120。非揮發性記憶體120可包括一基於浮動閘極或電荷捕集技術之NAND快閃記憶體、NOR快閃記憶體、可抹除可程式化唯讀記憶體(「EPROM)」、電 可抹除可程式化唯讀記憶體(「EEPROM」)、鐵電RAM(「FRAM」)、磁阻RAM(「MRAM」)或其任何組合。
NVM 120可被組織為「區塊」(其可為最小可抹除單位),且可進一步被組織為「頁」(其可為可被程式化或讀取之最小單位)。在一些實施例中,NVM 120可包括多個積體電路,其中每一積體電路可具有多個區塊。來自對應之積體電路的記憶體位置(例如,區塊或區塊之頁)可形成「超級區塊」。可使用實體位址(例如,實體頁位址或實體區塊位址)來參考NVM 120之每一記憶體位置(例如,頁或區塊)。
系統單晶片110可包括SoC控制電路112、記憶體114及NVM介面118。SoC控制電路112可控制SoC 110及SoC 110或器件100之其他組件的一般操作及功能。舉例而言,回應於使用者輸入及/或應用程式或作業系統之指令,SoC控制電路112可向NVM介面118發佈讀取或寫入請求以自NVM 120獲得資料或將資料儲存於NVM 120中。出於清晰性,可將SoC控制電路112可請求以供儲存或擷取的資料稱為「使用者資料」,即使該資料可能並非直接與使用者或使用者應用程式相關聯亦然。實情為,使用者資料可為由SoC控制電路112產生或獲得(例如,經由應用程式或作業系統)之任何合適之數位資訊序列。
SoC控制電路112可包括可操作以驅動電子器件100之功能性的硬體、軟體及韌體之任何組合,及任何組件、電路 或邏輯。舉例而言,SoC控制電路112可包括在儲存於NVM 120或記憶體114中之軟體/韌體的控制下操作的一或多個處理器。
記憶體114可包括任何合適類型之揮發性記憶體,諸如隨機存取記憶體(「RAM」)(例如,靜態RAM(「SRAM」)、動態隨機存取記憶體(「DRAM」)、同步動態隨機存取記憶體(「SDRAM」)、雙資料速率(「DDR」)RAM)、快閃記憶體、唯讀記憶體(「ROM」)或其任何組合。記憶體114可包括一資料源,該資料源可臨時儲存使用者資料以用於程式化至非揮發性記憶體120中或自非揮發性記憶體120讀取。在一些實施例中,記憶體114可充當經實施作為SoC控制電路112之部分之任何處理器的主記憶體。
NVM介面118可包括經組態以充當SoC控制電路112與NVM 120之間的介面或驅動器的硬體、軟體及/或韌體之任何合適組合。對於NVM介面118中所包括之任何軟體模組而言,可將對應之程式碼儲存於NVM 120或記憶體114中。
NVM介面118可執行允許SoC控制電路112存取NVM 120且管理NVM 120之記憶體位置(例如,頁、區塊、超級區塊、積體電路)及儲存於其中之資料(例如,使用者資料)的多種功能。舉例而言,NVM介面118可解譯來自SoC控制電路112之讀取或寫入請求、執行耗損平均及產生與NVM 120之匯流排協定相容的讀取及程式化指令。
雖然NVM介面118及SoC控制電路112被展示為單獨之模組,但此僅意欲簡化對本發明之實施例的描述。應理解,此等模組可共用硬體組件、軟體組件或硬體組件與軟體組件兩者。舉例而言,SoC控制電路112可執行一用於NVM介面118之基於軟體之記憶體驅動程式。
在一些實施例中,電子器件100可包括一目標器件(諸如隨身碟或SD卡),該目標器件包括NVM 120及NVM介面118之一些或所有部分。在此等實施例中,SoC 110或SoC控制電路112可充當目標器件之主機控制器。舉例而言,作為主機控制器,SoC 110可向目標器件發佈讀取及寫入請求。
圖2說明根據各種實施例之電子器件200的方塊圖,其可更詳細地說明電子器件100(圖1)之一些韌體、軟體及/或硬體組件。電子器件200可具有上文結合圖1所描述之特徵及功能性中的任一者,且反之亦然。如所示,虛線將該等層劃界。應理解,對哪些組件落在劃界線內的描繪僅為說明性的且一或多個組件可隸屬於一不同層。
電子器件200可包括檔案系統210、NVM驅動器212、NVM匯流排控制器216及NVM 220。在一些實施例中,檔案系統210及NVM驅動器212可為軟體或韌體模組,且NVM匯流排控制器216及NVM 220可為硬體模組。因此,在此等實施例中,NVM驅動器212可表示NVM介面218之軟體或韌體態樣,且NVM匯流排控制器216可表示NVM介面218之硬體態樣。
檔案系統210可包括任何合適類型之檔案系統(諸如檔案配置表(「FAT」)檔案系統或擴展階層式檔案系統(Hierarchical File System Plus;「HFS+」)),且可為電子器件200之作業系統的一部分(例如,圖1之SoC控制電路112的一部分)。在一些實施例中,檔案系統210可包括一快閃檔案系統,其提供頁之邏輯至實體映射。在此等實施例中,檔案系統210可執行下文所論述之NVM驅動器212的一些或所有功能性,且因此檔案系統210及NVM驅動器212可為或可並非單獨之模組。
檔案系統210可管理用於應用程式及作業系統之檔案及資料夾結構。檔案系統210可在執行於電子器件200上之應用程式或作業系統的控制下操作,且當應用程式或作業系統請求自NVM 220讀取資訊或將資訊儲存於NVM 220中時,檔案系統210可將寫入及讀取請求提供至NVM驅動器212。與每一讀取或寫入請求一起,檔案系統210可提供一邏輯位址以指示應自哪裡讀取使用者資料或將使用者資料寫入至哪裡(諸如邏輯頁位址或具有頁偏移之邏輯區塊位址)。
檔案系統210可將並非直接與NVM 220相容之讀取及寫入請求提供至NVM驅動器212。舉例而言,邏輯位址可使用對於基於硬碟機之系統典型的慣例或協定。不同於快閃記憶體,基於硬碟機之系統可在不首先執行區塊抹除的情況下覆寫記憶體位置。此外,硬碟機可無需耗損平均來增加器件之壽命。因此,NVM介面218可執行具有記憶體特 定性、供應商特定性或具有記憶體特定性與供應商特定性兩者的任何功能以處置檔案系統請求且以適合於NVM 220之方式執行其他管理功能。
NVM驅動器212可包括轉譯層214。在一些實施例中,轉譯層214可為或可包括快閃轉譯層(「FTL」)。在寫入請求時,轉譯層214可將所提供之邏輯位址映射至NVM 220上之一可用、經抹除之實體位置。在讀取請求時,轉譯層214可使用所提供之邏輯位址來判定儲存有所請求之資料的實體位址。因為每一NVM可取決於NVM之大小或供應商而具有不同佈局,所以此映射操作可具有記憶體特定性及/或供應商特定性。
除邏輯至實體位址映射外,轉譯層214還可執行對於快閃轉譯層典型之任何其他合適功能。舉例而言,轉譯層214可執行記憶體垃圾收集(「GC」)以釋放NVM 220之程式化區塊而進行抹除。例如,一旦被釋放及抹除,便可使用記憶體位置來儲存自檔案系統210接收之新使用者資料。在一些狀況下,GC程序可涉及將有效資料自程式化區塊複製至具有被抹除之記憶體位置的另一區塊,藉此使程式化區塊中之有效資料無效。一旦已使程式化區塊中之所有記憶體位置無效,轉譯層214便可指導匯流排控制器216來對程式化區塊執行抹除操作。如本文中所使用,「有效資料」可指代已回應於對應於一或多個邏輯位址(例如,LBA)之最近寫入請求而被程式化的使用者資料,且可因此為該一或多個邏輯位址之使用者資料的有效版本。
作為另一實例,轉譯層214可對NVM 220執行耗損平均,其可用以使磨損分佈於NVM 220之各個區塊上。耗損平均係必要的,因為NVM 220之一部分被循環的次數可實質上多於NVM 220之其他部分(例如,超過循環規格),此可潛在地導致系統用完可用空間。另外,NVM 220之一小部分上的過多磨損可引起總體而言較差的資料保持能力。
轉譯層214可藉由首先監視NVM 220之每一區塊已循環經過的循環(例如,抹除循環及/或寫入循環)次數來執行耗損平均。接著,在一合適的時間(例如,在閒置時間期間或在GC程序期間),轉譯層214可選擇NVM 220之一區塊來起始耗損平均。在一些實施例中,可使用耗損平均佇列來選擇該區塊。
在選擇該區塊之後,轉譯層214可在彼區塊上起始耗損平均。舉例而言,轉譯層214可對該區塊執行GC(例如,藉由將儲存於該區塊上之有效資料複製至另一區塊且抹除該區塊)。
在一些實施例中,NVM驅動器212可與NVM匯流排控制器216介接以完成NVM存取請求(例如,程式化、讀取及抹除請求)。匯流排控制器216可充當至NVM 220之硬體介面,且可使用NVM 220之匯流排協定、資料速率及其他規格來與NVM 220通信。
NVM介面218可基於記憶體管理資料(本文中有時稱為「後設資料」)來管理NVM 220。後設資料可由NVM驅動器212產生或可由在NVM驅動器212之控制下操作的模組產 生。舉例而言,後設資料可包括用於管理邏輯位址與實體位址之間的映射、不良區塊管理、耗損平均的任何資訊、用於偵測或校正資料錯誤之ECC資料,或其任何組合。後設資料可包括由檔案系統210提供之資料連同使用者資料(諸如邏輯位址)。因此,一般而言,「後設資料」可指代關於使用者資料或與使用者資料有關或大體上用以管理非揮發性記憶體之操作及記憶體位置的任何資訊。
NVM介面218可經組態以將後設資料儲存於NVM 220中。在一些實施例中,NVM介面218可將與使用者資料相關聯之後設資料儲存於儲存有使用者資料的相同記憶體位置(例如,頁)處。舉例而言,NVM介面218可將使用者資料、相關聯之邏輯位址及用於使用者資料之ECC資料儲存於NVM 220之一或多個記憶體位置處。NVM介面218亦可將關於使用者資料之其他類型的後設資料儲存於相同記憶體位置中。將結合圖5來更詳細地論述後設資料。
NVM介面218可儲存邏輯位址,使得在對NVM 220供電時或在NVM 220之操作期間,電子器件200可判定何資料駐留於彼位置處。詳言之,因為檔案系統210可根據使用者資料之邏輯位址而非其實體位址來參考其,所以NVM介面218可將使用者資料與邏輯位址儲存在一起以維持其關聯性。如此,即使維持NVM 220中之實體至邏輯映射的一單獨表變得過時,NVM介面218仍可(例如)在電子器件200之供電或重新啟動時判定恰當之映射。
現參看圖3,展示了說明邏輯區塊位址302至實體頁304 之實例映射的方塊圖。邏輯區塊位址可對應於邏輯空間中的邏輯區塊。每一邏輯區塊可為邏輯空間之可被讀取及/或寫入的最小粒狀單位,且可具有任何合適之大小(諸如512位元組、4K或8K)。
檔案系統(例如,圖2之檔案系統210)可將任何合適數目個LBA配置給一檔案。舉例而言,如圖3中所示,LBA 302可對應於檔案A-G,其中該等檔案A-G中之每一者被配置有一特定LBA範圍。舉例而言,檔案A被配置有LBA範圍0-39,檔案B被配置有LBA範圍40-99,檔案C被配置有LBA範圍100-339,等等。由位於檔案左邊之已編號跨度來展示每一檔案A-G之大小。
另外,LBA可由檔案系統用以參考儲存於NVM(例如,圖1之NVM 120或圖2之NVM 220)之一或多個記憶體位置中的資料。舉例而言,LBA 302中之每一LBA可映射至頁304中之一頁。因此,每一LBA可映射至一對應頁之實體位址。如圖3中所示,例如,檔案A之LBA範圍映射至以P2開始且以P3-1結束的實體位址,檔案B之LBA範圍映射至以P0開始且以P1-1結束的實體位址,等等。
圖4展示樹400之方塊圖,其可用以提供邏輯至實體映射。詳言之,樹400可提供LBA範圍(例如,圖3之LBA 302的LBA範圍)與NVM(例如,圖1之NVM 120或圖2之NVM 220)之對應實體位址(例如,圖3之頁304之實體位址)之間的映射。在一些實施例中,可將樹400儲存及維持於揮發性記憶體(例如,圖1之記憶體114)中。
樹400可包括多個節點,其中每一節點可被一致地設定大小以用於記憶體配置目的(例如,每一節點可具有64位元組之固定大小)。另外,樹400之每一節點可包括一或多個輸入項。舉例而言,如圖4中所示,節點402可包括四個輸入項(例如,輸入項404-410)。
節點之每一輸入項可對應於一LBA範圍(例如,延行長度(run length)編碼壓縮(「rle壓縮」)範圍),且可包括至另一節點之指標(「節點指標」)抑或NVM之實體位址(「NAND指標」)。舉例而言,如圖4中所示,展示了分別對應於LBA範圍340、200、260及224的輸入項404-410。
此外,如圖4中所示,輸入項404-410中之每一者可具有指向樹中之額外節點的節點指標。詳言之,輸入項404經展示為指向節點420,節點420又具有兩個輸入項(例如,輸入項430及432)。熟習此項技術者將瞭解,輸入項406-410亦可指向樹400中之其他節點(例如,節點422-426)。然而,出於簡單性起見,未詳細展示此等節點,而是將此等節點展示為虛線方框。
輸入項404-410中之每一者可包括計數器412-415,該等計數器412-415可指示一特定LBA範圍已被寫入的次數。舉例而言,如圖4中所示,對應於輸入項404-410中之每一者的LBA範圍具有值分別為10、13、20及10的計數器。下文將更詳細地論述計數器。
節點420之輸入項430具有指向NVM之實體位址(例如,頁位址P2)的一NAND指標433。相比之下,節點420之輸入 項432具有指向樹400中之另一節點(例如,節點440)的一節點指標438。出於簡單性起見,未詳細展示節點440,而是將其展示為虛線方框。
因為LBA範圍(例如,rle壓縮範圍)而非LBA被儲存於樹400中,所以NVM介面(例如,圖1之NVM介面118或圖2之NVM介面218)可能需要自一頂部節點至底部節點地周遊樹400以便獲得一特定檔案之邏輯至實體映射。舉例而言,基於檔案之LBA,NVM介面可在其自樹400之頂部節點擴展時使位址計數(address tally)遞增,直至所得位址計數匹配檔案之LBA。熟習此項技術者將瞭解,樹400可具有任何合適之樹結構。在一些狀況下,樹400可具有改良對一特定輸入項之擷取時間的樹結構(諸如b樹或b*樹)。
與一儲存LBA(例如,開始LBA及結束LBA)之映射系統相比較,樹400之每一輸入項可被配置有較小量之記憶體,此對於具有空間約束之系統而言係有益的。詳言之,樹400之每一輸入項可被配置有對應於儲存於該輸入項中之範圍之大小的位元數。當LBA範圍之大小增加時,被配置給對應之輸入項的位元數亦增加。舉例而言,若節點之輸入項對應於小rle壓縮範圍,則該輸入項可被配置有較小的大小(例如,4位元組)。替代地,若節點之輸入項正儲存大rle壓縮範圍,則該輸入項可被配置有較大的大小(例如,6位元組)。因為被配置給一特定輸入項的大小為動態的,所以樹400之每一節點可配合可變數目個輸入項。
此外,藉由儲存LBA範圍而非LBA,可將更多指標(例 如,節點指標及NAND指標)包括於樹400之每一節點中。舉例而言,若樹400之每一節點被配置有64位元組且每一輸入項接著被配置有在4至6位元組之間的位元組,則樹400之每一節點可能夠儲存10至16個指標。
如圖4中所示,樹400之一或多個輸入項可具有含有與該輸入項相關聯之資訊的欄位。舉例而言,輸入項430可包括範圍434及頁位址435,其可分別提供該輸入項之LBA範圍及頁位址。詳言之,若輸入項430對應於檔案A(圖3),則範圍434及頁位址435可分別具有40及P2之值。
另外,計數器436可指示LBA範圍434已被寫入的次數。舉例而言,當NVM介面偵測到檔案系統(例如,圖2之檔案系統210)已針對一特定LBA範圍(例如,已被指派給該LBA範圍之檔案)而發佈寫入請求時,NVM介面可使對應於彼LBA範圍之計數器遞增(例如,使計數器遞增1)。在圖4中所示之實例中,例如,計數器436指示範圍434迄今為止已被寫入四次。熟習此項技術者將瞭解,輸入項404-410、430及432中之每一者可包括圖4中未展示之額外欄位。
大體而言,對應於樹400之輸入項的計數器可提供一段資料為動態或靜態之程度的指示。舉例而言,當資料被首次寫入至新檔案時,與該檔案相關聯之資料係動態還是靜態可為不清楚的。然而,當持續地更新該檔案時,可基於檔案被寫入的次數而推斷出與該檔案相關聯之資料是否為動態資料。如本文中所使用,「動態資料」可為儲存於NVM中之被頻繁更新或改變的有效資料。相比之下,「靜 態資料」可為儲存於NVM中之很少被更新或改變的有效資料。
可取決於一或多個事件的出現而以各種方式來改變樹400之計數器。舉例而言,對應於樹中之輸入項的計數器可最終飽和於一最大值(例如,針對8位元計數器之0xff)。因此,在一些狀況下,NVM介面可監視樹400之計數器,且偵測樹400中之計數器何時達到最大值。在偵測到計數器已達到最大值後,NVM介面可將樹之所有計數器的值減半。此係可能的,因為對系統中之資料之動態/靜態特性的量測係相對的。
作為另一實例,若一鄰近之LBA範圍分割為兩個或兩個以上之範圍,則NVM介面可將先前與該LBA範圍相關聯之計數器複製至與該兩個或兩個以上之分割範圍中之每一者相關聯的輸入項。NVM介面可接著使與正被寫入至之分割範圍相關聯的計數器遞增。在圖4中所示之實例中,例如,若LBA範圍434分割為兩個範圍(例如,下範圍及上範圍),則NVM介面可將計數器436之值複製至所得輸入項中之每一者中。若接著針對上範圍而發佈寫入請求,則NVM介面可更新上範圍之計數器,但針對下範圍之計數器保持相同值。
作為又一實例,若NVM介面判定一LBA範圍已被刪除,則NVM介面可將對應於該LBA範圍之計數器重設至一預設值(例如,0之預設值)。此係因為針對一特定LBA範圍而寫入之資料之動態特性可常常取決於被指派給該LBA範圍之 檔案的類型。因此,被指派給一LBA範圍之新檔案可具有不同於被指派給該LBA範圍之先前檔案的動態特性,因此亦應重設樹400中之對應計數器。
在一些實施例中,樹400之一或多個輸入項亦可包括使用者交錯序列437,該使用者交錯序列437可對應於在資料由應用程式及/或作業系統最後寫入至一特定LBA範圍(例如,資料由主機最後寫入)時的年齡。在一些狀況下,使用者交錯序列437可為在對LBA範圍作出資料更新時遞增的計數器(例如,48位元計數器)。舉例而言,如圖4中所示,例如,樹400中之使用者交錯序列437指示在資料被最後寫入至範圍434時的年齡為10。
代替將使用者交錯序列儲存於樹400中或除將使用者交錯序列儲存於樹400中之外,熟習此項技術者將瞭解,可將資料之使用者交錯序列儲存於系統中之任何其他合適位置中。舉例而言,可將使用者交錯序列作為後設資料而儲存於NVM(例如,圖1之NVM 120或圖2之NVM 220)之頁中。
現轉至圖5,後設資料500可表示可與儲存於NVM(例如,圖1之NVM 120或圖2之NVM 220)中之使用者資料相關聯之不同類型的後設資料。如圖5中所示,後設資料500可包括使用者交錯序列502,該使用者交錯序列502可對應於在資料由應用程式及/或作業系統最後寫入至一相關聯之LBA範圍(例如,LBA範圍506)時的年齡。結果,使用者交錯序列502可類似於使用者交錯序列437(圖4)。因此,當 需要在稍後的時間作出比較時,NVM介面可能夠自樹(例如,圖4之樹400)抑或後設資料500獲得使用者交錯序列。
在一些實施例中,後設資料500可包括交錯序列504,該交錯序列504可對應於在資料由任何源(例如,由GC程序或由應用程式或作業系統)最後寫入至LBA範圍506時的年齡。熟習此項技術者將瞭解,可將任何合適類型之後設資料儲存於NVM中。舉例而言,如圖5中所示,後設資料500亦可包括頁位址505,該頁位址505可對應於與使用者資料相關聯之一或多個頁位址。作為另一實例,亦可將一或多個計數器(例如,類似於圖5之計數器412-415或計數器436)及/或ECC資料(圖5中未展示)包括於後設資料500中。熟習此項技術中亦將瞭解,可改為將交錯序列儲存於樹(例如,圖4之樹400)中或額外地將交錯序列儲存於樹中。
可使用任何合適之方法來判定與一LBA範圍(例如,檔案)相關聯之資料是否為動態的。在一些實施例中,NVM介面可判定與LBA範圍相關聯之動態值是否大於或等於一預定臨限值。該動態值可對應於LBA範圍之計數器(例如,圖4之計數器412-415或計數器436中之一者)、使用者交錯序列、交錯序列、任何其他合適值及/或其任何組合。
對應地,預定臨限值可對應於儲存於NVM中之資料之平均動態值。在一些狀況下,可使用藉由清除樹400所獲得之直觀推斷來判定預定臨限值。平均動態值可因此取決於由檔案系統作出之寫入發佈之總次數及儲存於NVM上之所 有資料之動態特性隨時間過去而改變。因而,對一特定段資料是否為動態的判定可相對於儲存於NVM上之所有資料之平均動態值。
作為另一實例,NVM介面可藉由首先清除樹400之每一節點來獲得預定臨限值以判定儲存於NVM上之資料之動態特性的分佈。接著,使用動態特性之分佈,NVM介面可計算儲存於NVM上之資料之平均動態值。
在其他實施例中,NVM介面可藉由執行計數器與資料年齡(諸如資料之使用者交錯序列(例如,圖4之使用者交錯序列437或圖5之使用者交錯序列502))之間的相對比較來判定與一LBA範圍相關聯之資料是否為動態的。在一些實施例中,NVM介面可藉由比較使用者交錯序列與系統之當前年齡來判定使用者交錯序列係新的還是舊的。
在判定使用者交錯序列係新的還是舊的之後,NVM介面可比較使用者交錯序列與計數器。舉例而言,若使用者交錯序列為相對新的且計數器具有大的值(例如,LBA範圍已被頻繁地寫入),則NVM介面可判定資料係相對動態的。替代地,若使用者交錯序列為相對舊的且計數器具有小的值(例如,LBA範圍很少被寫入),則NVM介面可判定資料係相對靜態的。此外,若使用者交錯序列係相對舊的且計數器具有大的值,則NVM介面可判定資料過去為動態的但現為靜態的。熟習此項技術者將瞭解,代替比較計數器與使用者交錯序列,NVM介面可比較計數器與交錯序列(例如,圖5之交錯序列504)或在LBA範圍被首次寫入時的 年齡。
在其他實施例中,NVM介面可藉由比較在LBA範圍被最後寫入時的年齡與在LBA範圍被首次寫入時的年齡來判定與LBA範圍相關聯之資料是否為動態的。在LBA範圍被最後寫入時的年齡可對應於交錯序列(例如,圖5之交錯序列504)或使用者交錯序列(例如,圖4之使用者交錯序列437或圖5之使用者交錯序列502)。
基於以上比較,NVM介面可獲得年齡差異,且可判定該年齡差異是否小於一預定臨限值。若年齡差異低於該預定臨限值,則NVM介面可判定與LBA範圍相關聯之資料為動態的。
在進一步實施例中,NVM介面可藉由比較資料之年齡(例如,使用者交錯序列或交錯序列)與最後啟動事件之時間來判定資料是否為動態的。該最後啟動事件之時間可建立一用於與資料之年齡相比較的相對基線。
在又進一步實施例中,NVM介面可基於自作業系統接收之資訊來判定資料是否為動態的。舉例而言,除提供一或多個LBA、一LBA計數及一與待儲存於NVM中之資料相關聯的緩衝器之外,作業系統亦可提供關於資料是否為靜態的資訊。
現參看圖6至圖8,展示了根據本發明之各種實施例之說明性程序的流程圖。可由系統之一或多個組件(例如,圖1之電子器件100)來執行此等程序。舉例而言,可由NVM介面(例如,圖1之NVM介面118或圖2之NVM介面218)來執行 在圖6至圖8之程序中的至少一些步驟。
首先轉至圖6,展示了用於將資料程式化至NVM(例如,圖1之NVM 120或圖2之NVM 220)的程序600。程序600可始於步驟602。在步驟604處,NVM介面可接收對應於一LBA範圍之寫入請求。舉例而言,NVM介面可接收對LBA範圍434(圖4)之寫入請求。
在步驟606處,NVM介面可自樹獲得至少一參數,其中該樹可儲存邏輯至實體位址映射。舉例而言,NVM介面可首先識別樹(例如,圖4之樹400)中之對應於該LBA範圍的輸入項。在識別該輸入項之後,NVM介面可自所識別之輸入項獲得該至少一參數。該至少一參數可包括指示LBA範圍已被寫入之次數的一計數器(例如,圖4之計數器412-415或計數器436中之一者)及/或對應於在資料由應用程式及/或作業系統最後寫入至LBA範圍時之年齡的使用者交錯序列(例如,圖4之使用者交錯序列437)。
繼續至步驟608,NVM介面可至少部分地基於該至少一參數來判定與LBA範圍相關聯之資料是否為動態的。舉例而言,NVM介面可判定與LBA範圍相關聯之計數器是否大於或等於一預定臨限值(例如,儲存於NVM中之資料之平均動態值,其係使用自樹獲得之直觀推斷而判定)。
作為另一實例,NVM介面可執行計數器與資料年齡之間的相對比較。資料年齡可為任何合適之年齡,諸如資料之使用者交錯序列、資料之交錯序列(例如,圖5之交錯序列504)或在LBA範圍被首次寫入時的年齡。作為又一實例, NVM介面可比較在LBA範圍被最後寫入時的年齡(例如,使用者交錯序列或交錯序列)與在LBA範圍被首次寫入時的年齡。
若在步驟608處NVM介面判定與LBA範圍相關聯之資料為動態的,則程序600可移至步驟610。在步驟610處,NVM介面可指導匯流排控制器(例如,圖2之NVM匯流排控制器216)將與寫入請求相關聯之資料程式化至NVM之動態串流區塊。程序600可接著在步驟612處結束。
如本文中所使用,「動態串流區塊」可為NVM之已由NVM介面指派作為動態串流之部分的任何合適區塊。可將被分類為動態之傳入資料選擇性地置放於一或多個動態區塊上。舉例而言,在一實施例中,動態串流區塊可在先前為NVM之低循環區塊,其在稍後被指派為一動態串流區塊。
若在步驟608處NVM介面改為判定與LBA範圍相關聯之資料並非動態的,則程序600可移至步驟614。在步驟614處,NVM介面可指導匯流排控制器將與寫入請求相關聯之資料程式化至NVM之靜態串流區塊。程序600可接著在步驟612處結束。
如本文中所使用,「靜態串流區塊」可為NVM之已由NVM介面指派作為靜態串流之部分的任何合適區塊。可將被分類為靜態之傳入資料選擇性地置放於一或多個靜態區塊上。在一實施例中,靜態串流區塊可在先前為NVM之高循環區塊,其在稍後被指派為靜態串流區塊。
在一些實施例中,NVM介面可使用單獨之寫入指標來寫入至動態串流區塊或靜態串流區塊。舉例而言,NVM介面可使用動態寫入指標來寫入至動態串流區塊,且可使用靜態寫入指標來寫入至靜態串流區塊。
因此,藉由判定一特定段資料係動態還是靜態的,NVM介面可更好地判定資料在NVM上之初始置放。此可改良記憶體垃圾收集(「GC」)之效率,此可因此減少NVM之磨損。舉例而言,藉由將動態及靜態資料分割為NVM上之單獨區塊,NVM介面可選擇對NVM之動態串流區塊而非靜態串流區塊執行GC。因為動態串流區塊可歸因於動態資料被更新的頻率而最終具有很少或不具有有效頁,所以在GC期間必須移動之有效資料的量係最少的。因此,可減少GC寫入放大。
舉例而言,現參看圖7,展示了用於對NVM(例如,圖1之NVM 120或圖2之NVM 220)執行GC之說明性程序的流程圖。程序700可始於步驟702。在步驟704處,NVM介面可判定需要對NVM之區塊執行GC。在步驟706處,NVM介面可選擇該區塊之具有有效資料的頁。
繼續至步驟708,NVM介面可判定儲存於該頁上之資料是否為動態資料。如上文所提及,NVM介面可使用任何合適之方法來判定資料是否為動態的。舉例而言,NVM介面可找到樹(例如,圖4之樹400)之對應於資料之LBA範圍的輸入項(例如,圖4之輸入項430)。NVM介面可接著判定該輸入項之計數器(例如,圖4之計數器412-415或計數器436 中之一者)是否大於或等於一預定臨限值(例如,平均動態值)。作為另一實例,NVM介面可基於自作業系統接收之資訊來判定資料是否為動態的。
若在步驟708處NVM介面判定儲存於頁中之資料為動態資料,則程序700可移至步驟710。舉例而言,NVM介面可判定樹之對應輸入項之計數器大於或等於一預定臨限值。
在步驟710處,NVM介面可指導匯流排控制器(例如,圖2之NVM匯流排控制器216)將資料複製至NVM之動態串流區塊。接著,繼續至步驟712,NVM介面可判定是否存在該區塊之具有有效資料的額外頁。
若在步驟712處NVM介面判定存在具有有效資料之額外頁,則程序700可返回至步驟708,其中NVM介面可判定儲存於區塊之另一頁上的資料是否為動態資料。NVM介面可隨後針對區塊之具有有效資料的每一頁重複此程序。
返回參看步驟712,若NVM介面改為判定不存在該區塊之具有有效資料的額外頁,則程序700可移至步驟714。
在步驟714處,NVM介面可指導匯流排控制器抹除該區塊,且程序700可在步驟716處結束。抹除該區塊因此允許用新資料來重新程式化該區塊。
返回參看步驟708,若NVM介面改為判定儲存於該頁上之資料並非動態資料,則程序700可移至步驟718。舉例而言,NVM介面可判定樹之對應輸入項之計數器小於一預定臨限值。結果,NVM介面可判定資料為靜態的。
在步驟718處,NVM介面可指導匯流排控制器將資料複 製至NVM之靜態串流區塊。程序700可接著移至步驟712,在該步驟處NVM介面可判定是否存在該區塊之具有有效資料的額外頁。
因此,使用此方法,NVM介面可能夠改變對資料係動態還是靜態的初始判定。因此,若一特定段資料已自動態資料改變為靜態資料或自靜態資料改變為動態資料,則NVM介面可在對區塊執行GC時改變彼資料之置放。
現轉至圖8,展示了一用於判定是否對NVM(例如,圖1之NVM 120或圖2之NVM 220)執行耗損平均之說明性程序800的流程圖。程序800可始於步驟802。
在步驟804處,NVM介面可清除樹(例如,圖4之樹400)之多個節點中之每一節點以判定儲存於NVM上之資料之動態特性的分佈。NVM介面可接著至少部分地基於動態特性之分佈來判定是否需要在NVM上進行耗損平均。在一些狀況下,NVM介面可使用動態特性之分佈來計算儲存於NVM上之資料之平均動態值。
舉例而言,在步驟806處,NVM介面可自NVM選擇為NVM之高循環區塊的一區塊。在一些狀況下,該區塊可具有一特定循環(例如,抹除循環及/或寫入循環)次數,其中該循環次數超過NVM之其他區塊之循環一預定間隙。
繼續至步驟808,NVM介面可判定該區塊是否為動態區塊。舉例而言,基於自樹(例如,圖4之樹400)獲得或自後設資料(例如,圖5之後設資料500)獲得之一或多個參數,NVM介面可計算儲存於區塊上之資料的區塊動態值。
NVM介面可接著比較區塊動態值與儲存於NVM上之資料之動態特性。在一些實施例中,NVM介面可判定儲存於區塊上之資料是否具有一大於或等於平均動態值之區塊動態值。在其他實施例中,NVM介面可判定儲存於區塊上之資料是否具有為平均動態值之常數倍數的一區塊動態值。在其他實施例中,NVM介面可判定儲存於區塊上之資料是否具有一在平均動態值之預定數目個標準偏差外部的區塊動態值。
若在步驟808處NVM介面判定該區塊並非動態區塊,則程序800可在步驟810處結束。因此,NVM介面可保持該區塊上之資料。如此,NVM介面可避免對區塊執行耗損平均,因為其被判定為不必要的。
若在步驟808處NVM介面改為判定該區塊為動態區塊,則程序800可移至步驟812。在步驟812處,NVM介面可將該區塊指派作為靜態串流區塊。結果,可將自檔案系統(例如,圖2之檔案系統210)接收之未來靜態資料置放於該區塊上。
接著,繼續至步驟814,NVM介面可判定儲存於該區塊之頁上的資料是否為動態資料。若在步驟814處NVM介面判定儲存於該頁上之資料為動態資料,則程序800可移至步驟816。
在步驟816處,NVM介面可指導匯流排控制器(例如,圖2之NVM匯流排控制器216)將儲存於該頁上之資料複製至動態串流區塊。程序800可接著移至步驟818。
在步驟818處,NVM介面可判定在該區塊上是否存在具有有效資料之額外頁。若在步驟818處NVM介面判定存在具有有效資料之額外頁,則程序800可返回至步驟814。在步驟814處,NVM介面可判定儲存於區塊之另一頁上的資料是否為動態資料。NVM介面可隨後針對該區塊之具有有效資料的每一頁重複此程序。
若在步驟818處NVM介面判定不存在具有有效資料之額外頁,則程序800可在步驟810處結束。因此,可對該區塊執行GC。舉例而言,一旦儲存於該區塊上之所有有效資料已被複製至NVM之其他記憶體位置,便可抹除該區塊。在抹除該區塊之後,NVM介面可開始將靜態資料(例如,來自GC及/或主機寫入)置於該區塊上。
返回參看步驟814,若NVM介面改為判定儲存於頁上之資料並非動態資料,則程序800可移至步驟820。在步驟820處,NVM介面可指導匯流排控制器將儲存於該頁上之資料複製至靜態串流區塊。程序800可接著移至步驟818,在該步驟中NVM介面可判定在該區塊上是否存在具有有效資料之額外頁。
藉由判定資料係動態還是靜態的並將此資訊整合至耗損平均,系統可關於是否需要耗損平均而作出更好的決策。藉由避免不必要之耗損平均,系統可減少對NVM所執行之循環次數及系統之總頻寬。此外,關於資料是否為動態的資訊亦允許系統關於在對區塊執行耗損平均的同時將資料移至何處而作出更好的決策。
此外,此方法允許系統以比在大體對整個區塊執行耗損平均的習知耗損平均系統中原本可能達成之粒度更精細的粒度(例如,區塊之頁)來作出耗損平均決策。此微調之決策形成程序亦傾向於減少NVM上之磨損量及傾向於延長NVM之有效壽命。
應理解,圖6至圖8之程序600、700及800分別僅為說明性的。在不脫離本發明之範疇的情況下,可移除、修改或組合該等步驟中之任一者,且可添加任何額外步驟。
呈現了本發明之所描述之實施例以用於說明而非限制之目的。
100‧‧‧電子器件
110‧‧‧系統單晶片(SoC)
112‧‧‧SoC控制電路
114‧‧‧記憶體
118‧‧‧NVM介面
120‧‧‧非揮發性記憶體(NVM)
200‧‧‧電子器件
210‧‧‧檔案系統
212‧‧‧NVM驅動器
214‧‧‧轉譯層
216‧‧‧NVM匯流排控制器
218‧‧‧NVM介面
220‧‧‧NVM
302‧‧‧邏輯區塊位址
304‧‧‧實體頁
400‧‧‧樹
402‧‧‧節點
404‧‧‧輸入項
406‧‧‧輸入項
408‧‧‧輸入項
410‧‧‧輸入項
412‧‧‧計數器
413‧‧‧計數器
414‧‧‧計數器
415‧‧‧計數器
420‧‧‧節點
422‧‧‧節點
424‧‧‧節點
426‧‧‧節點
430‧‧‧輸入項
432‧‧‧輸入項
433‧‧‧NAND指標
434‧‧‧範圍
435‧‧‧頁位址
436‧‧‧計數器
437‧‧‧使用者交錯序列
438‧‧‧節點指標
440‧‧‧節點
500‧‧‧後設資料
502‧‧‧使用者交錯序列
504‧‧‧交錯序列
506‧‧‧LBA範圍
600‧‧‧用於將資料程式化至NVM的程序
700‧‧‧程序
800‧‧‧用於判定是否對NVM執行耗損平均之說明性程序
圖1及圖2為根據本發明之各種實施例所組態之電子器件的方塊圖;圖3為根據本發明之各種實施例之邏輯區塊位址至實體頁之說明性映射的方塊圖;圖4為根據本發明之各種實施例之用於提供邏輯至實體位址映射之說明性樹的方塊圖;圖5為根據本發明之各種實施例之可與使用者資料相關聯之後設資料的圖形視圖;圖6為根據本發明之各種實施例之用於將資料程式化至非揮發性記憶體之說明性程序的流程圖;圖7為根據本發明之各種實施例之用於對非揮發性記憶體執行記憶體垃圾收集之說明性程序的流程圖;及圖8為根據本發明之各種實施例之用於判定是否對非揮 發性記憶體執行耗損平均之說明性程序的流程圖。
100‧‧‧電子器件
110‧‧‧系統單晶片(SoC)
112‧‧‧SoC控制電路
114‧‧‧記憶體
118‧‧‧NVM介面
120‧‧‧非揮發性記憶體(NVM)

Claims (8)

  1. 一種系統,其包含:非揮發性記憶體(NVM),其包含經操作以儲存資料之複數個區塊;用以儲存樹(tree)之揮發性記憶體,該樹包含複數個節點,其中至少一節點包含延行長度(run length)編碼壓縮邏輯區塊位址(LBA)範圍;及記憶體介面,其包含:一匯流排控制器,其用以與該NVM通信;及控制電路,其經操作以:判定垃圾收集需於該NVM之一區塊上執行;針對具有有效資料之該區塊之每一頁,基於自該樹獲得之一參數之至少部份以判定儲存在該頁上之資料是否為動態的;及為回應判定該資料為動態的,將該資料複製至該NVM之一動態串流區塊。
  2. 如請求項1之系統,其中該控制電路經操作以抹除該區塊。
  3. 如請求項1之系統,其中該控制電路經操作以:維持包含複數個輸入項之該樹,其中該樹提供LBA範圍與該NVM中之相關實體位址之間的映射;及監視該樹中之複數個計數器,其中該複數個計數器之每一個計數器對應於該複數個輸入項之一輸入項,且其中該計數器指示一相對應之LBA範圍已被寫入之次數。
  4. 如請求項3之系統,其中該控制電路經操作以:發現對應於該資料之一LBA範圍之複數個輸入項之一輸入項;判定該輸入項之一計數器是否大於或等於一預定臨限值;及為回應判定該輸入項之該計數器大於或等於該預定臨限值,判定該資料係動態的。
  5. 如請求項4之系統,其中該控制電路經操作以:為回應判定該輸入項之該計數器小於該預定臨限值,判定該資料係靜態的;及將該資料複製至該NVM之一靜態串流區塊。
  6. 如請求項3之系統,其中該控制電路經操作以:偵測該複數個計數器之一計數器已到達一最大值;及將該樹之該複數個計數器之值減半。
  7. 如請求項3之系統,其中該控制電路經操作以:判定一特定LBA範圍已被刪除;及將對應於該特定LBA範圍之複數個計數器之一計數器重設至一預設值。
  8. 如請求項3之系統,其中該控制電路經操作以:偵測一檔案系統已發佈針對一特定LBA範圍之一寫入要求;及增量對應於該特定LBA範圍之複數個計數器之一計數器。
TW101128492A 2011-01-03 2012-01-03 處理用於一具有非揮發性記憶體之系統的動態及靜態資料 TWI519950B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US12/983,715 US8521948B2 (en) 2011-01-03 2011-01-03 Handling dynamic and static data for a system having non-volatile memory

Publications (2)

Publication Number Publication Date
TW201245959A TW201245959A (en) 2012-11-16
TWI519950B true TWI519950B (zh) 2016-02-01

Family

ID=45558496

Family Applications (2)

Application Number Title Priority Date Filing Date
TW101100209A TWI448890B (zh) 2011-01-03 2012-01-03 記憶體系統、用於判定電子器件中之動態資料的方法及用於在非揮發性記憶體中執行記憶體垃圾收集之方法
TW101128492A TWI519950B (zh) 2011-01-03 2012-01-03 處理用於一具有非揮發性記憶體之系統的動態及靜態資料

Family Applications Before (1)

Application Number Title Priority Date Filing Date
TW101100209A TWI448890B (zh) 2011-01-03 2012-01-03 記憶體系統、用於判定電子器件中之動態資料的方法及用於在非揮發性記憶體中執行記憶體垃圾收集之方法

Country Status (6)

Country Link
US (1) US8521948B2 (zh)
EP (1) EP2472405B1 (zh)
KR (2) KR101390134B1 (zh)
CN (1) CN102693184B (zh)
TW (2) TWI448890B (zh)
WO (1) WO2012094237A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11494299B2 (en) 2021-02-18 2022-11-08 Silicon Motion, Inc. Garbage collection operation management with early garbage collection starting point

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8521972B1 (en) 2010-06-30 2013-08-27 Western Digital Technologies, Inc. System and method for optimizing garbage collection in data storage
US9189392B1 (en) * 2011-06-30 2015-11-17 Western Digital Technologies, Inc. Opportunistic defragmentation during garbage collection
US9235502B2 (en) 2011-09-16 2016-01-12 Apple Inc. Systems and methods for configuring non-volatile memory
US8819375B1 (en) 2011-11-30 2014-08-26 Western Digital Technologies, Inc. Method for selective defragmentation in a data storage device
US8788778B1 (en) 2012-06-04 2014-07-22 Western Digital Technologies, Inc. Garbage collection based on the inactivity level of stored data
KR20130139084A (ko) * 2012-06-12 2013-12-20 삼성전자주식회사 메모리 시스템 및 메모리 청크 단위로 메모리를 관리하는 메모리 관리 방법
US8799561B2 (en) * 2012-07-27 2014-08-05 International Business Machines Corporation Valid page threshold based garbage collection for solid state drive
US20150207669A1 (en) * 2012-09-14 2015-07-23 Telefonaktiebolaget L M Ericsson (Publ) Data redundancy in a data layered architecture network
US20140122774A1 (en) * 2012-10-31 2014-05-01 Hong Kong Applied Science and Technology Research Institute Company Limited Method for Managing Data of Solid State Storage with Data Attributes
KR102053953B1 (ko) * 2013-02-04 2019-12-11 삼성전자주식회사 불휘발성 메모리 장치를 포함하는 메모리 시스템 및 그것의 프로그램 방법
US9323766B2 (en) 2013-03-15 2016-04-26 Metrix Instrument Co., Lp Data collection device and method
JP2016184402A (ja) * 2015-03-26 2016-10-20 パナソニックIpマネジメント株式会社 メモリコントローラ、不揮発性記憶装置、不揮発性記憶システム、及びメモリ制御方法
US9760281B2 (en) * 2015-03-27 2017-09-12 Intel Corporation Sequential write stream management
US20170139826A1 (en) * 2015-11-17 2017-05-18 Kabushiki Kaisha Toshiba Memory system, memory control device, and memory control method
US10296264B2 (en) * 2016-02-09 2019-05-21 Samsung Electronics Co., Ltd. Automatic I/O stream selection for storage devices
FR3048293B1 (fr) * 2016-02-29 2018-07-06 Sagemcom Broadband Sas Procede de programmation d'une animation lors de la phase de demarrage d'un dispositif electronique et dispositif electronique associe
TWI592800B (zh) 2016-10-04 2017-07-21 大心電子(英屬維京群島)股份有限公司 記憶體管理方法及使用所述方法的儲存控制器
EP3394758A4 (en) * 2017-01-23 2019-02-20 Micron Technology, Inc. PARTIALLY WRITTEN BLOCK TREATMENT
US10496413B2 (en) * 2017-02-15 2019-12-03 Intel Corporation Efficient hardware-based extraction of program instructions for critical paths
KR102457400B1 (ko) 2017-11-16 2022-10-21 삼성전자주식회사 가비지 컬렉션 방법, 이를 수행하는 저장 장치 및 이를 포함하는 컴퓨팅 시스템
FR3074317B1 (fr) 2017-11-27 2019-11-22 Idemia Identity & Security France Procede d'acces a une zone memoire non volatile de type flash d'un element securise, tel qu'une carte a puce
KR102113212B1 (ko) * 2017-11-28 2020-05-20 성균관대학교산학협력단 플래시 메모리 시스템 및 그 제어 방법
CN110908925B (zh) * 2018-09-17 2022-01-25 慧荣科技股份有限公司 高效能垃圾收集方法以及数据存储装置及其控制器
US10884954B2 (en) 2018-09-17 2021-01-05 Silicon Motion, Inc. Method for performing adaptive locking range management, associated data storage device and controller thereof
KR20200059780A (ko) * 2018-11-21 2020-05-29 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법
US10970228B2 (en) * 2018-12-14 2021-04-06 Micron Technology, Inc. Mapping table compression using a run length encoding algorithm
KR20210055387A (ko) 2019-11-07 2021-05-17 삼성전자주식회사 컨텍스트에 기반하여 애플리케이션을 제공하는 서버 및 그 제어 방법
EP4083775A1 (de) * 2021-04-29 2022-11-02 Michael Offel Vorrichtung und verfahren zur speicherverwaltung
JP2023000085A (ja) * 2021-06-17 2023-01-04 キオクシア株式会社 メモリシステム及び情報処理システム

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6230233B1 (en) * 1991-09-13 2001-05-08 Sandisk Corporation Wear leveling techniques for flash EEPROM systems
US5388083A (en) 1993-03-26 1995-02-07 Cirrus Logic, Inc. Flash memory mass storage architecture
US8266367B2 (en) 2003-12-02 2012-09-11 Super Talent Electronics, Inc. Multi-level striping and truncation channel-equalization for flash-memory system
DE10127198A1 (de) * 2001-06-05 2002-12-19 Infineon Technologies Ag Vorrichtung und Verfahren zum Ermitteln einer physikalischen Adresse aus einer virtuellen Adresse unter Verwendung einer hierarchischen Abbildungsvorschrift mit komprimierten Knoten
US7363420B2 (en) 2003-12-15 2008-04-22 Nortel Networks Limited Method and file structures for managing data on a flash disk
US7315917B2 (en) 2005-01-20 2008-01-01 Sandisk Corporation Scheduling of housekeeping operations in flash memory systems
KR100755702B1 (ko) 2005-12-27 2007-09-05 삼성전자주식회사 비휘발성 메모리가 캐쉬로 사용되는 저장 장치 및 그 동작방법
US8060718B2 (en) 2006-06-20 2011-11-15 International Business Machines Updating a memory to maintain even wear
KR100843543B1 (ko) * 2006-10-25 2008-07-04 삼성전자주식회사 플래시 메모리 장치를 포함하는 시스템 및 그것의 데이터복구 방법
US8935302B2 (en) * 2006-12-06 2015-01-13 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for data block usage information synchronization for a non-volatile storage volume
KR100881669B1 (ko) * 2006-12-18 2009-02-06 삼성전자주식회사 비휘발성 데이터 저장장치의 정적 데이터 영역 검출 방법,마모도 평준화 방법 및 데이터 유닛 병합 방법과 그 장치
US7882301B2 (en) 2007-05-09 2011-02-01 Stmicroelectronics S.R.L. Wear leveling in storage devices based on flash memories and related circuit, system, and method
US8275928B2 (en) * 2008-05-15 2012-09-25 Silicon Motion, Inc. Memory module and method for performing wear-leveling of memory module using remapping, link, and spare area tables
US20090289947A1 (en) * 2008-05-20 2009-11-26 Himax Technologies Limited System and method for processing data sent from a graphic engine
CN101645309B (zh) 2008-08-05 2013-05-22 威刚科技(苏州)有限公司 非挥发性存储装置及其控制方法
TWI375887B (en) * 2008-10-31 2012-11-01 A Data Technology Co Ltd Flash memory device with wear-leveling mechanism and controlling method thereof
US8205063B2 (en) 2008-12-30 2012-06-19 Sandisk Technologies Inc. Dynamic mapping of logical ranges to write blocks
US20100174845A1 (en) * 2009-01-05 2010-07-08 Sergey Anatolievich Gorobets Wear Leveling for Non-Volatile Memories: Maintenance of Experience Count and Passive Techniques
US8250293B2 (en) * 2009-01-19 2012-08-21 Qimonda Ag Data exchange in resistance changing memory for improved endurance
US8090899B1 (en) * 2009-03-04 2012-01-03 Western Digital Technologies, Inc. Solid state drive power safe wear-leveling
KR101571693B1 (ko) 2009-04-15 2015-11-26 삼성전자주식회사 동작 수행 중 다른 요청을 우선 처리할 수 있는 비휘발성 메모리 컨트롤러, 이를 포함하는 시스템 및 그 관리 방법
US8516219B2 (en) * 2009-07-24 2013-08-20 Apple Inc. Index cache tree
US8402242B2 (en) * 2009-07-29 2013-03-19 International Business Machines Corporation Write-erase endurance lifetime of memory storage devices
US8266481B2 (en) * 2009-07-29 2012-09-11 Stec, Inc. System and method of wear-leveling in flash storage

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11494299B2 (en) 2021-02-18 2022-11-08 Silicon Motion, Inc. Garbage collection operation management with early garbage collection starting point
TWI784514B (zh) * 2021-02-18 2022-11-21 慧榮科技股份有限公司 垃圾回收操作的管理機制
US11681615B2 (en) 2021-02-18 2023-06-20 Silicon Motion, Inc. Garbage collection operation management based on overall valid page percentage of source block and candidate source block
US11704241B2 (en) 2021-02-18 2023-07-18 Silicon Motion, Inc. Garbage collection operation management with early garbage collection starting point
US11809312B2 (en) 2021-02-18 2023-11-07 Silicon Motion, Inc. Garbage collection operation management based on overall spare area

Also Published As

Publication number Publication date
US20120173832A1 (en) 2012-07-05
KR20120079023A (ko) 2012-07-11
WO2012094237A1 (en) 2012-07-12
KR20120079026A (ko) 2012-07-11
TW201245959A (en) 2012-11-16
EP2472405A1 (en) 2012-07-04
TWI448890B (zh) 2014-08-11
KR101390134B1 (ko) 2014-04-28
CN102693184B (zh) 2015-06-03
EP2472405B1 (en) 2014-12-17
KR101818578B1 (ko) 2018-01-15
US8521948B2 (en) 2013-08-27
CN102693184A (zh) 2012-09-26
TW201241623A (en) 2012-10-16

Similar Documents

Publication Publication Date Title
TWI519950B (zh) 處理用於一具有非揮發性記憶體之系統的動態及靜態資料
KR101494051B1 (ko) 불휘발성 메모리 시스템들을 위한 위브 시퀀스 카운터
US9841917B2 (en) Systems and methods for configuring non-volatile memory
US9239785B2 (en) Stochastic block allocation for improved wear leveling
US8935459B2 (en) Heuristics for programming data in a non-volatile memory
US8949512B2 (en) Trim token journaling
US20130151754A1 (en) Lba bitmap usage
TWI567553B (zh) 用於具有非揮發性記憶體之系統之較快樹狀結構平坦化
TW201329700A (zh) 處理用於具有非揮發性記憶體之一系統之不正常關機
US8850160B2 (en) Adaptive write behavior for a system having non-volatile memory

Legal Events

Date Code Title Description
MM4A Annulment or lapse of patent due to non-payment of fees