TWI567553B - 用於具有非揮發性記憶體之系統之較快樹狀結構平坦化 - Google Patents

用於具有非揮發性記憶體之系統之較快樹狀結構平坦化 Download PDF

Info

Publication number
TWI567553B
TWI567553B TW101133890A TW101133890A TWI567553B TW I567553 B TWI567553 B TW I567553B TW 101133890 A TW101133890 A TW 101133890A TW 101133890 A TW101133890 A TW 101133890A TW I567553 B TWI567553 B TW I567553B
Authority
TW
Taiwan
Prior art keywords
tree structure
nvm
sliding window
entries
memory
Prior art date
Application number
TW101133890A
Other languages
English (en)
Other versions
TW201324149A (zh
Inventor
丹尼爾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 TW201324149A publication Critical patent/TW201324149A/zh
Application granted granted Critical
Publication of TWI567553B publication Critical patent/TWI567553B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into 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
    • 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
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0643Management of files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • 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/7201Logical 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)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System (AREA)

Description

用於具有非揮發性記憶體之系統之較快樹狀結構平坦化
NAND快閃記憶體以及其他類型之非揮發性記憶體(「NVM」)通常用於大容量儲存器。舉例而言,諸如攜帶型媒體播放器之消費型電子件常常包括快閃記憶體以儲存音樂、視訊及其他媒體。
具有NVM之系統可包括將由檔案系統使用之邏輯位址映射至NVM之實體位址(例如,提供邏輯至實體映射)的資料結構。該結構有時可駐留於揮發性記憶體中。隨著更新現有檔案或添加額外檔案,儲存該映射所需要之記憶體量可相應地增加。因此,在一些狀況下,經配置用於該結構之記憶體量可能不足以俘獲所有邏輯至實體映射。
本發明揭示用於對具有非揮發性記憶體(「NVM」)之一系統進行較快樹狀結構平坦化之系統及方法。一樹狀結構可儲存於該系統之揮發性記憶體中,其中該樹狀結構可包括一邏輯空間與該NVM之實體位址之間的一邏輯至實體映射。當可用於該樹狀結構之記憶體量低於一預定臨限值時,該系統可試圖縮減該NVM中之資料片段之數目,且因此可平坦化該樹狀結構之一部分。可將被釋放之該樹狀結構記憶體量加回至樹狀結構記憶體集區。NVM介面可基於諸如以下各者之任何合適途徑來選擇該樹狀結構之一最佳輸入項集合以進行組合:橫越該樹狀結構而移動一或多個滑動窗(sliding window)、當已滿足一條件時擴展一滑動 窗、在掃描該樹狀結構的同時使用一優先級佇列,及/或在更新該樹狀結構的同時維持一優先級佇列。
在考慮結合隨附圖式而理解之以下詳細描述後,本發明之以上及其他態樣與優點將隨即變得更顯而易見,在該等圖式中,類似參考字元始終指代類似部分。
本發明提供用於對具有非揮發性記憶體(「NVM」)之一系統進行較快樹狀結構平坦化之系統及方法。一樹狀結構可儲存於該系統之揮發性記憶體中,其中該樹狀結構可包括一邏輯空間與該NVM之實體位址之間的一邏輯至實體映射。當可用於該樹狀結構之記憶體量低於一預定臨限值時,該系統之一NVM介面可試圖縮減該NVM中之資料片段之數目,且因此可平坦化該樹狀結構之一部分。接著可將被釋放之該樹狀結構記憶體量加回至樹狀結構記憶體集區。
該NVM介面可藉由(例如)將該樹狀結構之一最佳輸入項集合組合成一單一輸入項或節點來平坦化該樹狀結構之一部分。該最佳輸入項集合可在該邏輯空間中相連,但可在實體空間中非相連。因此,在選擇該最佳輸入項集合之後,該NVM介面可重新程式化對應於該等輸入項之資料片段,使得該等片段可在該實體空間中相連。詳言之,該NVM介面可藉由自該NVM讀取對應於該多個輸入項之資料且接著將該資料儲存於揮發性記憶體中而重新程式化該等片段。在儲存該資料之後,該NVM介面可將該資料依序 地程式化至該NVM之一新超級區塊(super block)。
該NVM介面可使用任何合適途徑來選擇該最佳輸入項集合。在一些實施例中,該NVM介面可使用一或多個滑動窗以獲得該最佳輸入項集合。在一些狀況下,可針對該一或多個滑動窗中每一者維持一最小跨度(span)。接著,基於不同最小跨度之間的一比較,該NVM介面可選擇該最佳輸入項集合。
在其他實施例中,該NVM介面可使用一貪婪途徑(greedy approach),以便找到一最佳輸入項集合以進行平坦化。亦即,在找到一最佳輸入項集合後,該NVM介面可隨即繼續搜尋該樹狀結構中可被添加至該最佳輸入項集合之額外連續輸入項。
在另外實施例中,該NVM介面可藉由在揮發性記憶體中維持一優先級佇列(priority queue)來找到一最佳輸入項集合。舉例而言,該NVM介面可試圖將與配合至一滑動窗中之多個輸入項相關聯之參數插入於一優先級佇列中。該NVM介面可繼續此程序直至該滑動窗已通過該樹狀結構之末端。該NVM介面接著可使用該優先級佇列來定位該最佳輸入項集合。
在又另外實施例中,該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可包括多個積體電路,其中每一積體電路可具有多個區塊。來自對應積體電路之記憶體位置(例如,區塊或區塊之頁面)可形成「超級區塊」。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之功能性的硬體、軟體及韌體之任何組合,及可操作以驅動電子裝置100之功能性的任何組件、電路或邏輯。舉例而言,SoC控制電路112可包括在儲存於NVM 120或記憶體114中之軟體/韌體之控制下操作的一或多個處理器。
記憶體114可包括任何合適類型之揮發性記憶體,諸如,隨機存取記憶體(「RAM」)(例如,靜態RAM(「SRAM」)、動態隨機存取記憶體(「DRAM」)、同步動態隨機存取記憶體(「SDRAM」)、雙資料速率(「DDR」)RAM)、快取記憶體,或其任何組合。記憶體114可包括可暫時儲存用於程式化至非揮發性記憶體120中或自非揮發性記憶體120讀取之使用者資料之資料源。在一些實施例中,記憶體114可充當經實施為SoC控制電路112之部分之任何處理器的主記憶體。
在一些實施例中,記憶體114可儲存可由NVM介面118用以執行其關聯操作之一或多個資料結構。舉例而言,記憶體114可包括一樹狀結構,該樹狀結構可提供由檔案系統使用之邏輯位址與NVM 120之實體位址之間的邏輯至實體映射。作為另一實例,記憶體114可包括一或多個優先級佇列,該一或多個優先級佇列可包括可由NVM介面118用 於管理樹狀結構之資訊。樹狀結構及優先級佇列將結合圖4至圖14予以更詳細地描述。
NVM介面118可包括經組態以充當SoC控制電路112與NVM 120之間的介面或驅動程式的硬體、軟體及/或韌體之任何合適組合。對於包括於NVM介面118中之任何軟體模組,可將對應程式碼儲存於NVM 120或記憶體114中。
NVM介面118可執行允許SoC控制電路112存取NVM 120且管理NVM 120之記憶體位置(例如,頁面、區塊、超級區塊、積體電路)及儲存於NVM 120中之資料(例如,使用者資料)的多種功能。舉例而言,NVM介面118可解譯來自SoC控制電路112之讀取或寫入請求、執行損耗均衡(wear leveling),且產生與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」)檔案系統或擴充型階層式檔案系統(「HFS+」);且檔案系統210可為電子裝置200之作業系統之部分(例如,圖1之SoC控制電路112之部分)。在一些實施例中,檔案系統210可包括快閃檔案系統,快閃檔案系統可提供頁面之邏輯至實體映射。在此等實施例中,檔案系統210可執行下文所論述之NVM驅動程式212之一些或所有功能性,且因此,檔案系統210及NVM驅動程式212可能為或可能不為分離模組。
檔案系統210可管理用於應用程式及作業系統之檔案及資料夾結構。檔案系統210可在執行於電子裝置200上之應 用程式或作業系統之控制下操作,且可在該應用程式或作業系統請求自NVM 220讀取資訊或將資訊儲存於NVM 220中時將寫入及讀取請求提供至NVM驅動程式212。連同每一讀取或寫入請求,檔案系統210可提供用以指示應自何處讀取使用者資料或將使用者資料寫入至何處之邏輯位址,諸如,邏輯頁面位址或具有頁面偏移之邏輯區塊位址。
檔案系統210可將不與NVM 220直接相容之讀取及寫入請求提供至NVM驅動程式212。舉例而言,邏輯位址可使用代表以硬碟機為基礎之系統的慣例或協定。不同於快閃記憶體,以硬碟機為基礎之系統可在不首先執行區塊抹除的情況下覆寫記憶體位置。此外,硬碟機可無需損耗均衡來增加裝置之壽命。因此,NVM介面218可執行具記憶體特定性、廠商特定性或其兩者之任何功能以處置檔案系統請求且以適於NVM 220之方式執行其他管理功能。
NVM驅動程式212可包括轉譯層214。在一些實施例中,轉譯層214可為或包括快閃轉譯層(「FTL」)。在寫入請求時,轉譯層214可將所提供之邏輯位址映射至NVM 220上之空閒的經抹除之實體位置。在讀取請求時,轉譯層214可使用所提供之邏輯位址以判定經請求之資料被儲存的實體位址。因為每一NVM可取決於NVM之大小或廠商而具有不同佈局,所以此映射操作可具記憶體特定性及/或廠商特定性。
除了邏輯至實體位址映射以外,轉譯層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亦可將關於使用者資料的其他類型之後設資料儲存於同一記憶體 位置中。
NVM介面218可儲存邏輯位址,使得在NVM 220之供電時或在NVM 220之操作期間,電子裝置200可判定何種資料駐留於彼位置處。詳言之,因為檔案系統210可根據使用者資料之邏輯位址而非使用者資料之實體位址來參考使用者資料,所以NVM介面218可將使用者資料與邏輯位址儲存在一起以維持其關聯性。如此,即使在NVM 220中維持實體至邏輯映射之分離表變得過期,NVM介面218仍可(例如)在電子裝置200之供電或重新開機時判定適當映射。
如上文所論述,NVM(例如,圖1之NVM 120或圖2之NVM 220)可被組織成晶粒、區塊、頁面、超級區塊及其類似者。舉例而言,圖3展示NVM 300之功能圖。NVM 300可相同於或相似於NVM 120(圖1)或NVM 220(圖2)。圖3僅僅有意要說明NVM 300之組織佈局且不指示非揮發性記憶體之實際實體佈局。舉例而言,雖然圖3中將晶粒0說明為緊接於晶粒1,但此情形僅僅用於說明此等晶粒之功能關係,且在NVM 300之實際實體佈局中,此等晶粒可能位於或可能不位於彼此附近。
此外,雖然圖3中展示某一數目個晶粒、區塊及頁面,但此情形僅僅出於說明之目的,且熟習此項技術者可瞭解,NVM 300可包括任何合適數目個晶粒、區塊及頁面。
如圖3所說明,NVM 300可包括一或多個晶粒(亦即,積體電路),諸如,晶粒0、晶粒1、晶粒2及晶粒3。可將NVM 300之每一晶粒組織成一或多個「區塊」。舉例而 言,將晶粒0至3說明為各自被組織成區塊0至3。
可將該等晶粒之每一區塊進一步組織成一或多個頁面。舉例而言,將晶粒0至3中每一者之區塊0說明為被組織成頁面0至3。NVM 300之每一頁面可包括任何合適資訊。舉例而言,該等頁面可包括使用者資料、後設資料或其兩者。在一些實施例中,諸如ECC資料之後設資料可包括於該等頁面中以提供儲存於NVM 300中之資訊之錯誤偵測及/或校正。
NVM 300亦可包括一或多個超級區塊,該一或多個超級區塊包括來自每一晶粒之一個區塊,該區塊在該晶粒中具有同一位置或「區塊編號」。舉例而言,NVM 300之超級區塊0可包括晶粒0至3中每一者之區塊0。相似地,NVM 300之超級區塊1可包括晶粒0至3中每一者之區塊1,NVM 300之超級區塊2可包括晶粒0至3中每一者之區塊2,等等。
可藉由將一或多個區塊虛擬地連結或「條紋化」在一起而形成超級區塊。區塊無需在每一晶粒之同一列中虛擬地連結為一超級區塊。事實上,可自兩個或兩個以上晶粒隨機地選擇區塊以形成一超級區塊。在一些實施例中,一超級區塊可包括僅一個區塊。超級區塊提供操作並行性,藉此使能夠針對位於不同晶粒中之區塊並行地執行程式化、讀取及抹除操作。
另外,來自兩個或兩個以上晶粒之頁面可虛擬地連結在一起以形成超級頁面或「條紋」。舉例而言,條紋302可包 括來自晶粒0至3中每一者之區塊0之頁面0。相似地,條紋304可包括來自晶粒0至3中每一者之區塊0之頁面3。實施於NVM介面中之轉譯層(例如,圖2之轉譯層214)可追蹤超級區塊或條紋。
NVM 300之區塊可為包括上部頁面及下部頁面兩者之多位階單元(「MLC」)區塊。對於MLC區塊,存取時間(例如,讀取及程式化時間)可針對包括於特定條紋(例如,條紋302或304)中之頁面保持相同。亦即,當程式化整個條紋時,可首先程式化該條紋之下部頁面,接著程式化上部頁面。與此對比,若經程式化之資料不與條紋邊界對準,則可以交替次序程式化下部頁面及上部頁面。換言之,存在對程式化次序之雙形態論。
因此,因為上部頁面程式化相比於下部頁面程式化通常花費較長時段,所以有利的是使一裝置沿著一或多個條紋邊界來程式化頁面。此情形避免存在於非條紋對準程式化中之雙形態論。
現在參看圖4,展示說明邏輯區塊位址402至實體頁面404之映射400的方塊圖。邏輯區塊位址402可對應於一邏輯空間。
一檔案系統(例如,圖2之檔案系統210)可將任何合適數目個LBA配置給一檔案。舉例而言,如圖4所示,LBA 402可對應於檔案A至N,其中檔案A至N中每一者被配置一或多個LBA。舉例而言,檔案A被配置LBA 0至38,檔案B被配置LBA 39,檔案C被配置LBA 40,等等。
另外,LBA可由檔案系統用以參考儲存於NVM(例如,圖1之NVM 120、圖2之NVM 220或圖3之NVM 300)之一或多個實體位址中之資料。舉例而言,如圖4所示,NVM可包括超級區塊410至414,該等超級區塊可包括頁面404。LBA 402中每一者可映射至頁面404中之一頁面。因此,每一LBA可映射至一對應頁面之實體位址。如圖4所示,舉例而言,檔案A之起始LBA映射至實體位址P3,檔案B之起始LBA映射至實體位址P0,等等。
圖5展示樹狀結構500之部分之方塊圖,該樹狀結構可用以提供邏輯至實體映射。詳言之,樹狀結構500可提供LBA(例如,圖4之LBA 402)與NVM(例如,圖1之NVM 120、圖2之NVM 220或圖3之NVM 300)之對應實體位址(例如,圖4之頁面404之實體位址)之間的映射。如先前所論述,樹狀結構500可儲存及維持於揮發性記憶體(例如,圖1之記憶體114)中。
樹狀結構500可包括多個節點,其中每一節點可經一致地設定大小以用於記憶體配置目的(例如,每一節點可具有64位元組之固定大小)。另外,樹狀結構500之每一節點可包括一或多個輸入項。舉例而言,如圖5所示,節點502可包括三個輸入項(例如,輸入項503至505)。出於簡單起見,圖5僅展示樹狀結構500之部分。因此,虛線方框508及509可表示圖5中未說明之額外節點及輸入項。
一節點之每一輸入項可對應於一跨度(例如,該輸入項之邏輯大小或邏輯位址之數目),且可包括至另一節點之 指標(「節點指標」)或NVM之實體位址(「NAND指標」)。在一些狀況下,該跨度可對應於運行長度編碼壓縮(run-length encoding compressed)(「rle壓縮」)範圍。舉例而言,如圖5所示,輸入項503至505經展示為分別對應於跨度2、2及38。
此外,如圖5所示,輸入項503至505中每一者可具有指向樹狀結構中之額外節點之節點指標。詳言之,輸入項503經展示為指向節點510,節點510又包括兩個輸入項(例如,輸入項512及514)。同樣地,輸入項504經展示為指向節點520,節點520包括兩個輸入項(例如,輸入項522及524)。最後,輸入項505經展示為指向節點530,節點530包括兩個輸入項(例如,輸入項532及534)。
因為跨度儲存於樹狀結構500中而非LBA儲存於樹狀結構500中,所以NVM介面(例如,圖1之NVM介面118或圖2之NVM介面218)可自頂部節點至底部節點橫穿樹狀結構500,以便獲得特定檔案之邏輯至實體映射。舉例而言,基於被指派給一檔案之LBA,NVM介面可隨著其自樹狀結構500之頂部節點擴展而遞增位址記數(address tally)直至所得位址記數匹配於該檔案之LBA。熟習此項技術者應瞭解,樹狀結構500可具有任何合適樹結構。在一些狀況下,樹狀結構500可具有改良針對特定輸入項之擷取時間之樹結構,諸如,b樹狀結構或b*樹狀結構。熟習此項技術者應瞭解,一系統(例如,圖1之電子裝置100或圖2之電子裝置200)之任何其他合適組件可代替地維持樹狀結構500。舉例而言,樹狀結構500可由實施於NVM介面及/或控制電路(例如,圖1之控制電路112)之頂部 上之軟體層維持。
此外,藉由儲存跨度而非LBA,可將更多輸入項及指標(例如,節點及NAND指標)包括於樹狀結構500之每一節點中。舉例而言,若樹狀結構500之每一節點被配置64個位元組且每一輸入項接著被配置介於4個至6個之間的位元組,則樹狀結構500之每一節點可能能夠儲存介於10個與16個之間的輸入項(例如,指標)。
輸入項512、514、522、524及532可分別包括NAND指標540至544及跨度545至549。另外,輸入項512、514、522、524及532可分別包括頁面位址551至555。頁面位址551至555中每一者可提供對應輸入項之起始頁面位址。舉例而言,如圖5所示,輸入項512可對應於檔案G(圖4),且因此可具有為1之跨度545及為P8之頁面位址551。相似地,輸入項514、522、524及532中每一者可分別對應於檔案H至K。
當將相對大檔案(例如,媒體檔案、應用程式或系統檔案)依序地程式化至NVM時,對應於特定檔案之資料可儲存至同一超級區塊或同一超級區塊集合(例如,圖3之超級區塊0至3)中。因此,該檔案既可邏輯相連又可實體相連(例如,該檔案可與一相連邏輯位址集合及一對應相連實體位址集合相關聯)。因此,該檔案可由一樹狀結構中之單一輸入項(例如,單一NAND指標)表示。
在一些狀況下,檔案系統亦可發佈小隨機寫入(例如,與多個小檔案相關聯之資料)。可邏輯相連之此等寫入可 橫越多個超級區塊而散佈。因此,NVM中之多個資料片段中每一者可能需要由樹狀結構中之一分離個別輸入項表示。舉例而言,檔案H至K中每一者係由樹狀結構500中之一分離輸入項(例如,輸入項512、514、522、524及532中之一者)表示。
歸因於揮發性記憶體之空間限制,固定量之記憶體空間(例如,1 MB或100 MB之樹狀結構記憶體集區)可經配置用於樹狀結構500。最終,樹狀結構記憶體集區可被耗盡至不再針對額外資料片段而儲存邏輯至實體映射的程度。
因此,為了針對樹狀結構記憶體集區而釋放額外記憶體,NVM介面可試圖縮減NVM中之資料片段之數目,藉此平坦化樹狀結構之部分。可將被釋放之記憶體量加回至樹狀結構記憶體集區。舉例而言,回應於自檔案系統接收到寫入請求,NVM介面可選擇平坦化樹狀結構之至少一部分。在一實施例中,NVM介面可呼叫樹狀結構平坦化程式功能(tree flattener function)。
NVM介面可藉由(例如)將樹狀結構之多個輸入項組合成單一輸入項或節點來平坦化樹狀結構之部分。此等多個輸入項可在邏輯空間中相連,但可在實體空間中被非相連地程式化。亦即,該等輸入項可對應於隨機地分佈於NVM之各種超級區塊中之資料片段。因此,藉由將對應於輸入項之資料相連地重新程式化至新超級區塊,NVM介面可確保資料片段既實體相連又邏輯相連。
一般而言,因為平坦化樹狀結構之部分會需要由使用者 請求或由檔案系統請求之程式化操作,所以平坦化操作可增加該系統之總寫入放大率(write amplification)。如本文所使用,「寫入放大率」可指代檔案系統請求與NVM之實體存取之間的比率。寫入放大率之增加可引起不良系統效能,從而導致對NVM之損耗增加且導致系統功率要求增加。
因此,應僅在有必要時才調用樹狀結構平坦化操作。舉例而言,可僅在可用於樹狀結構之記憶體量低於預定臨限值時才調用樹狀結構平坦化功能。預定臨限值可為對應於樹狀結構記憶體集區之近耗竭點(例如,經配置用於樹狀結構之總記憶體量)之任何合適數,諸如,樹狀結構記憶體集區之2%。亦即,若可用之記憶體量為樹狀結構記憶體集區之1%(其小於樹狀結構記憶體集區之2%之預定臨限值),則滿足該條件。
在使用此途徑的情況下,NVM介面可避免不必要地對裝置造成負擔。詳言之,若樹狀結構之記憶體使用率未耗竭樹狀結構記憶體集區,則平坦化操作係不必要的。此外,藉由等待以平坦化樹狀結構,可被平坦化之候選樹狀結構輸入項之數目可增加。因此,NVM介面具有定位用於平坦化之最佳輸入項集合(例如,在寫入放大率與記憶體使用率之間產生最佳取捨之輸入項)之較高機率。
NVM介面可使用任何合適途徑以定位樹狀結構之輸入項以進行組合。舉例而言,NVM介面可橫越樹狀結構而移動滑動窗。在一些實施例中,滑動窗可為具有對應於樹狀結 構之輸入項之元素的清單。因此,隨著NVM介面橫越樹狀結構而移動滑動窗,可將新輸入項添加至該清單。
在NVM介面橫越樹狀結構而移動滑動窗的同時,NVM介面亦可維持指示當前由滑動窗涵蓋之輸入項之跨度的執行中計數器(running counter)。舉例而言,返回參看圖4,NVM介面可橫越與LBA 402相關聯之樹狀結構而移動滑動窗406。最初,執行中計數器可具有為0之值,且滑動窗46可涵蓋檔案A至E。熟習此項技術者應瞭解,滑動窗406可經組態以涵蓋任何合適數目個輸入項(例如,32個輸入項)。然而,僅僅出於簡單起見,圖4中將滑動窗406展示為涵蓋五個輸入項(例如,檔案)。
NVM介面可將對應於所涵蓋輸入項之邏輯空間之大小加至執行中計數器。亦即,NVM介面可將對應於檔案A至E之輸入項之總跨度(例如,為82之總跨度)加至執行中計數器。NVM介面接著可比較執行中計數器之當前值與儲存於記憶體中之最小跨度。舉例而言,最小跨度最初可被設定至可配合於32位元計數器中之最大值。
若執行中計數器之當前值小於最小跨度,則NVM介面可將執行中計數器之當前值替換為最小跨度。另外,NVM介面可將滑動窗之起始LBA儲存於記憶體中。對於檔案A至E(圖4),舉例而言,NVM介面可將82儲存為最小跨度且將0儲存為起始LBA。與此對比,若當前值大於最小跨度,則NVM介面可保持儲存於記憶體中之最小跨度及起始LBA之值。
NVM介面接著可將滑動窗406移動達單一輸入項(例如,一個檔案),使得滑動窗406現在涵蓋檔案B至F。NVM介面接著可將由滑動窗406涵蓋之新輸入項(檔案F)之大小加至執行中計數器,且自執行中計數器減去不再由滑動窗406涵蓋之輸入項(檔案A)之大小。如圖4所示,對應於檔案F之輸入項之跨度為38,且對應於檔案A之輸入項之跨度為39。因此,執行中計數器之所得值為81(82+38-39=81)。
NVM介面接著可偵測執行中計數器之當前值是否小於最小跨度。因為執行中計數器之當前值(例如,81)小於儲存於記憶體中之最小跨度(例如,82),所以NVM介面可將執行中計數器替換為最小跨度。另外,NVM介面可用當前起始LBA(例如,39)來更新儲存於記憶體中之起始LBA(例如,0)。
NVM介面接著可繼續使滑動窗移動通過樹狀結構之連續輸入項,且可相應地繼續更新執行中計數器(例如,藉由加上新近由滑動窗406涵蓋之輸入項之跨度,且減去不再由滑動窗406涵蓋之輸入項之跨度)。接著,基於執行中計數器之當前值與最小跨度之間的比較,NVM介面可替換或保持儲存於記憶體中之最小跨度及起始LBA。一旦滑動窗已完成橫越樹狀結構而移動,NVM介面就可組合樹狀結構之對應於最小跨度之最佳輸入項集合。
理想地,最佳輸入項集合可具有等於該集合中之輸入項之數目的跨度。換言之,最佳輸入項集合將對應於具有連續LBA之檔案集合,其中每一輸入項具有一最小LBA大小 (例如,為1之LBA)。舉例而言,對於圖4之LBA 402,對應於檔案G至K之輸入項集合(例如,圖5之輸入項512、514、522、524及532)針對滑動窗406將最佳。作為另一實例,若一滑動窗涵蓋32個輸入項,則針對該滑動窗之最佳輸入項集合可為各自為單一區段(sector)之32個邏輯連續輸入項(例如,每一輸入項1個LBA)。
在獲得最佳輸入項集合之後,NVM介面可選擇重新程式化對應於該等輸入項之資料片段,使得該等片段可實體相連。舉例而言,NVM介面可自NVM讀取對應於輸入項集合之資料,且接著將該資料儲存於揮發性記憶體中(例如,儲存於記憶體緩衝器中)。在儲存資料之後,NVM介面可將資料依序地程式化至NVM之新超級區塊,且平坦化樹狀結構中之輸入項(例如,將輸入項集合組合成單一節點或輸入項)。舉例而言,若存在大小各自為單一LBA之32個輸入項且若每一LBA為4 K,則NVM介面可能需要重新程式化NVM中大小為128 K之資料。
現在轉至圖6,展示邏輯區塊位址至實體頁面之映射600的方塊圖。如圖6所示,對應於檔案G至K之資料已被依序地重新程式化至超級區塊414。該等檔案之先前實體位址已被標記為無效(由圖6中之劃叉方框展示)。
另外,可更新提供邏輯至實體映射之樹狀結構。舉例而言,參看圖7,展示經更新樹狀結構700之部分的方塊圖。詳言之,NVM介面可將一輸入項集合(例如,圖5之輸入項512、514、522、524及532)組合成單一節點702。熟習此 項技術者應瞭解,可將該輸入項集合組合成一節點或一輸入項。舉例而言,可基於該輸入項集合之總跨度之大小及/或被配置給一節點或輸入項之大小而將該輸入項集合組合成一節點或輸入項。
如圖7所示,經組合輸入項集合之頁面位址704處於P14,且總跨度706為5。為了存取LBA 120至124(圖6)中之一者,NVM介面可使用跨度706來計算LBA偏移。舉例而言,藉由橫穿經更新樹狀結構700,NVM介面可判定跨度之LBA底數為120。基於LBA底數,NVM介面可判定對應於待存取LBA之LBA偏移(例如,藉由自待存取LBA減去LBA底數)。NVM介面接著可將LBA偏移加至起始頁面位址,以便存取NVM中之對應實體位址。
舉例而言,為了存取LBA 122,NVM介面可判定存在為2(例如,122-120=2)之LBA偏移。NVM介面接著可將為2之LBA偏移加至為P14之起始頁面位址704以獲得為P16之對應實體位址。此實體位址為LBA 122之實體頁面位址。
在其他實施例中,在判定已在掃描樹狀結構的同時定位最佳輸入項集合後,NVM介面可隨即停止橫越樹狀結構而移動滑動窗。舉例而言,返回參看圖4,在移動滑動窗406以涵蓋檔案G至K後,NVM介面可隨即判定對應於檔案G至K之輸入項針對滑動窗406最佳(例如,該等輸入項中每一者具有為1之LBA)。NVM介面接著可選擇平坦化樹狀結構之輸入項,而不必等待滑動窗完成橫越樹狀結構而移動。
在另外實施例中,NVM介面可使用多個滑動窗以獲得最 佳輸入項集合。現在轉至圖8及圖9,展示根據本發明之各種實施例之說明性程序的流程圖。
首先轉至圖8,展示用於較快樹狀結構平坦化之程序800。程序800可在步驟802處開始,且在步驟804處,NVM介面可偵測到當前可用於樹狀結構(例如,圖5之樹狀結構500)之記憶體量低於預定臨限值,其中樹狀結構可儲存邏輯空間與NVM(例如,圖1之NVM 120、圖2之NVM 220或圖3之NVM 300)之實體位址之間的邏輯至實體映射。
在步驟806處,NVM介面可橫越樹狀結構而移動至少兩個滑動窗(例如,圖4之滑動窗406及408)。至少兩個滑動窗可具有不同大小。亦即,每一滑動窗可涵蓋樹狀結構之不同數目個輸入項。舉例而言,第一滑動窗可經組態以涵蓋樹狀結構之32個輸入項,且第二滑動窗可經組態以涵蓋樹狀結構之128個輸入項。
相比於使用僅一個滑動窗,藉由使用具有不同大小之滑動窗,可在樹狀結構中定位更為最佳之輸入項集合。詳言之,歸因於檔案系統配置策略,具相似大小之檔案可在邏輯空間中鄰近。因此,若存在具有為1之跨度之若干輸入項,則鄰近於此等輸入項之新輸入項很可能亦具有為1之跨度。在此等狀況下,相比於較小滑動窗,較大滑動窗可俘獲更為最佳之輸入項。另一方面,若一滑動窗太大,則亦存在配合於該滑動窗內之輸入項中之一些可能不為具有最小跨度之輸入項的較高機率。
熟習此項技術者應瞭解,可使用任何合適數目個滑動窗 (例如,2個、3個、4個,等等)。熟習此項技術者亦應瞭解,至少兩個滑動窗可經組態以涵蓋任何合適數目個輸入項。然而,出於簡單起見,圖4中將滑動窗406及408展示為分別涵蓋五個及十個輸入項(例如,檔案)。
在一些實施例中,至少兩個滑動窗可連續地橫越樹狀結構而移動。在其他實施例中,為了改良搜尋之速度,至少兩個滑動窗可並行地橫越樹狀結構而移動。
繼續至步驟808,NVM介面可在至少兩個滑動窗橫越樹狀結構而移動時維持對應於至少兩個滑動窗之至少兩個最小跨度。舉例而言,對於至少兩個滑動窗中每一者,NVM介面可將新近由該滑動窗涵蓋之輸入項之跨度加至執行中計數器。執行中計數器可對應於樹狀結構之由滑動窗涵蓋之輸入項的總跨度。另外,NVM介面可自執行中計數器減去不再由滑動窗涵蓋之輸入項之跨度。接著,可比較執行中計數器之當前值與儲存於揮發性記憶體中之最小跨度。基於該比較,NVM介面可替換或保持儲存於記憶體中之最小跨度。另外,NVM介面亦可替換或保持儲存於記憶體中之起始LBA。程序800接著可移動至步驟810。
在步驟810處,NVM介面可判定至少兩個滑動窗已完成橫越樹狀結構而移動。接著,在步驟812處,NVM介面可至少部分地基於至少兩個最小跨度之間的比較來選擇平坦化樹狀結構之輸入項集合。舉例而言,NVM介面可判定至少兩個最小跨度中之哪一者具有較小值。
在比較至少兩個最小跨度之後,NVM介面可選擇平坦化 對應於具有較小值之滑動窗之輸入項集合。該輸入項集合可包括邏輯相連輸入項。舉例而言,返回參看圖4及圖5,NVM介面可選擇輸入項512、514、522、523及532(圖5),該等輸入項對應於滑動窗406(圖4)。程序800接著可在步驟814處結束。
現在轉至圖9,展示用於程式化實體相連資料片段之說明性程序的流程圖。在一些實施例中,程序900可表示程序800(圖8)之選擇平坦化步驟812的更詳細視圖。
程序900可在步驟902處開始,且在步驟904處,NVM介面可自NVM讀取對應於輸入項集合(例如,圖5之輸入項512、514、522、523及532)之資料(例如,使用者資料)。舉例而言,返回參看圖4,NVM介面可讀取儲存於實體頁面位址P8、P5、P12、P6及P11處之資料。
繼續至步驟906,NVM介面可將資料儲存於揮發性記憶體(例如,圖1之記憶體114)中。程序900接著可移動至步驟908。在步驟908處,NVM介面可將資料依序地(例如,以寫入串流)程式化至NVM之新超級區塊(例如,圖4之超級區塊414)。程序900接著可在步驟910處結束。
在另外實施例中,NVM介面可應用貪婪途徑以找到最佳輸入項集合以進行平坦化。亦即,在找到初始最佳輸入項集合後,NVM介面可隨即繼續搜尋樹狀結構之可被添加至初始最佳輸入項集合之額外連續輸入項。有時可在不招致額外程式化成本的情況下重新程式化此等額外輸入項。
現在參看圖10A及圖10B,展示用於用以找到最佳輸入 項集合以進行平坦化之貪婪途徑的程序1000。程序1000可在步驟1002處開始,且在步驟1004處,NVM介面(例如,圖1之NVM介面118或圖2之NVM介面218)可偵測到當前可用於儲存於揮發性記憶體(例如,圖1之記憶體114)中之樹狀結構(例如,圖5之樹狀結構500)之記憶體量低於預定臨限值。
接著,在步驟1006處,NVM介面可橫越樹狀結構之多個輸入項而移動一滑動窗(例如,圖4之滑動窗406),其中該滑動窗可涵蓋樹狀結構之預定數目個輸入項。舉例而言,該滑動窗可涵蓋32個輸入項(例如,等於NVM中之條紋之大小)。
繼續至步驟1008,NVM介面可判定由滑動窗涵蓋之輸入項集合是否具有等於該輸入項集合中之輸入項之數目的跨度。在步驟1008處,若NVM介面判定由滑動窗涵蓋之輸入項集合不具有等於該輸入項集合中之輸入項之數目的跨度,則程序1000可移動至步驟1010。
在步驟1010處,NVM介面可判定滑動窗是否已完成橫越樹狀結構而移動。在步驟1010處,若NVM介面判定滑動窗已完成橫越樹狀結構而移動,則程序1000可移動至步驟1012。
在步驟1012處,NVM介面可選擇由滑動窗產生之樹狀結構之輸入項集合以進行樹狀結構平坦化。舉例而言,NVM介面可選擇對應於儲存於記憶體中之一或多個值(例如,最小跨度及起始LBA)之輸入項集合。亦即,該輸入項集 合相比於樹狀結構中之其他輸入項集合可具有最小跨度。程序1000接著可在步驟1014處結束。
在步驟1010處,若NVM介面代替地判定滑動窗尚未完成橫越樹狀結構而移動,則程序1000可返回至步驟1006。在步驟1006處,NVM介面可繼續橫越樹狀結構之輸入項而移動滑動窗。
返回參看步驟1008,若NVM介面代替地判定由滑動窗涵蓋之輸入項集合具有等於該輸入項集合中之輸入項之數目的跨度,則程序1000可移動至步驟1016。換言之,該輸入項集合針對當前滑動窗可為最佳輸入項集合。
在步驟1016處,NVM介面可擴展由滑動窗涵蓋之輸入項之預定數目以產生經擴展滑動窗(例如,圖4之滑動窗408)。在一些狀況下,若滑動窗先前涵蓋32個輸入項,則NVM介面可擴展滑動窗以涵蓋64個輸入項。
在一些實施例中,NVM介面可試圖使由經擴展滑動窗涵蓋之輸入項集合之跨度與條紋邊界對準。舉例而言,返回參看圖3,每一條紋(例如,條紋302或304)可能能夠儲存32個LBA。若由滑動窗涵蓋之最佳輸入項集合之跨度為32,則NVM介面可將滑動窗之輸入項之預定數目擴展達一條紋之大小的倍數。因此,由經擴展滑動窗涵蓋之最佳輸入項集合可具有64 LBA、96 LBA等等之跨度。
作為另一實例,若由滑動窗涵蓋之最佳輸入項集合之跨度小於一條紋之大小(例如,48 LBA之跨度),則滑動窗可經擴展以與條紋邊界對準。亦即,NVM介面可將滑動窗之 輸入項之預定數目擴展至64個輸入項。如上文所論述,因為存取時間針對包括於特定條紋中之頁面保持相同,所以用於程式化填充整個條紋之使用者資料的時間可相同於用於程式化填充不到一條紋之使用者資料的時間。
作為又一實例,NVM介面可基於NVM之區塊或超級區塊(例如,圖4之超級區塊414)中之當前位置來判定如何擴展滑動窗。舉例而言,若超級區塊之條紋當前用資料被填充到一半的長度,則NVM介面可將輸入項之預定數目擴展達一條紋之大小的一半(例如,16個輸入項)。
接著,在步驟1018處,NVM介面可將經擴展滑動窗應用於樹狀結構之多個輸入項之至少一部分。詳言之,NVM介面可搜尋樹狀結構之具有小跨度(例如,1個、2個、3個或4個LBA)之額外連續輸入項,該等額外連續輸入項可被加至經擴展滑動窗。程序1000接著可移動至步驟1020。
在步驟1020處,NVM介面可判定由經擴展滑動窗產生之執行中計數器之值是否等於預定值。舉例而言,NVM介面可判定執行中計數器之值(例如,由經擴展滑動窗涵蓋之輸入項集合之總跨度)是否等於一條紋大小之倍數。
在步驟1020處,若NVM介面判定執行中計數器之值不等於預定值,則程序1000可移動至步驟1012。詳言之,NVM介面可能已判定由經擴展滑動窗涵蓋之輸入項集合之總跨度小於或大於一或多個條紋之大小。基於此判定,原始輸入項集合相比於由經擴展滑動窗涵蓋之輸入項集合可被認為更佳。在步驟1012處,NVM介面可選擇由滑動窗產生之 樹狀結構之輸入項集合以進行樹狀結構平坦化。
返回參看步驟1020,若NVM介面代替地判定執行中計數器之值等於預定值,則程序1000可移動至步驟1022。在步驟1022處,NVM介面可選擇由經擴展滑動窗產生之樹狀結構之輸入項集合以進行樹狀結構平坦化。程序1000接著可在步驟1014處結束。
在另外實施例中,代替定位可組合於樹狀結構中之單一最佳輸入項集合,NVM介面可在通過樹狀結構之單一遍次時找到多個候選輸入項集合。詳言之,NVM介面可在揮發性記憶體中維持優先級佇列,而非維持單一執行中計數器連同最小跨度及起始LBA。
NVM介面可試圖將與由滑動窗涵蓋之多個輸入項相關聯之參數插入於優先級佇列中。NVM介面接著可將滑動窗在樹狀結構中向前移動達數個輸入項,其中輸入項之數目係至少部分地基於優先級佇列之當前狀態。一旦滑動窗已完成橫越樹狀結構而移動,NVM介面就可使用優先級佇列來定位最佳輸入項集合。
如本文所使用,「優先級佇列」可為包括一或多個資料項目之任何合適資料結構(例如,有序清單),其中每一資料項目可與一優先級編號相關聯。舉例而言,最小優先級佇列可為一清單,在該清單中,具有較低優先級編號之元素可移動至該清單之前方,且具有較高優先級編號之元素可移動至該清單之末端。作為另一實例,最大優先級佇列可為一清單,在該清單中,具有較高優先級編號之元素可 移動朝向該清單之前方,且具有較低優先級編號之元素可移動至該清單之末端。
現在參看圖11,展示用於使用優先級佇列來平坦化樹狀結構之程序1100的流程圖。程序1100可在步驟1102處開始,且在步驟1104處,NVM介面(例如,圖1之NVM介面118或圖2之NVM介面218)可偵測到當前可用於儲存於揮發性記憶體(例如,圖1之記憶體114)中之樹狀結構(例如,圖5之樹狀結構500)之記憶體量低於預定臨限值。
在步驟1106處,NVM介面可偵測樹狀結構之配合至滑動窗(例如,圖4之滑動窗406)中之複數個輸入項(例如,對應於圖4之檔案A至E之輸入項)。在偵測複數個輸入項之後,程序1100可移動至步驟1108。
在步驟1108處,NVM介面可判定優先級佇列是否完整。舉例而言,優先級佇列可具有固定大小(例如,20個元素),且可經初始化至空值集合。若優先級佇列不完整(例如,在優先級佇列中存在不到20個元素),則程序1100可移動至步驟1110。
在步驟1110處,NVM介面可將與複數個輸入項相關聯之參數插入於優先級佇列中。可被加至優先級佇列之參數可包括與複數個輸入項相關聯之總跨度及起始LBA。
舉例而言,對於檔案A至E(圖4),NVM介面可將關聯參數作為第一元素而插入於優先級佇列中。詳言之,NVM介面可將為0之起始LBA插入為資料項目,且將為82(82-0=82)之總跨度插入為關聯優先級編號。
熟習此項技術者應瞭解,其他合適參數可代替地或另外包括於優先級佇列中。舉例而言,若滑動窗在其橫越樹狀結構而移動時涵蓋恆定數目個輸入項,則可將跨度儲存於優先級佇列中。然而,若滑動窗在其橫越樹狀結構而移動時涵蓋可變數目個輸入項,則可代替地將比率(例如,複數個輸入項之總跨度與複數個輸入項中之輸入項之數目之間的比率)儲存於優先級佇列中。
接著,在步驟1112處,NVM介面可將滑動窗在樹狀結構中向前移動達單一輸入項。舉例而言,參看圖4,NVM介面可移動滑動窗406以涵蓋對應於檔案B至F之輸入項。
繼續至步驟1114,NVM介面可判定滑動窗是否已通過樹狀結構之末端。在步驟1114處,若NVM介面判定滑動窗尚未通過樹狀結構之末端,則程序1100可返回至步驟1108,其中NVM介面可試圖將與經更新輸入項(例如,對應於檔案B至F之輸入項)相關聯之參數插入於優先級佇列中。
在步驟1114處,若NVM介面代替地判定滑動窗已通過樹狀結構之末端,則程序1100可在步驟1116處結束。
返回參看步驟1108,若NVM介面代替地判定優先級佇列完整(例如,在優先級佇列中已經存在20個元素),則程序1100可移動至步驟1118。
舉例而言,參看圖12,展示優先級佇列1202之方塊圖1200。優先級佇列1202可包括四個元素1204至1210,其中每一元素可分別對應於檔案C至G、D至H、E至I及F至J(圖4)。熟習此項技術者應瞭解,優先級佇列1202可包括任何 合適數目個元素。然而,出於簡單起見,將優先級佇列1202展示為包括四個元素。因而,優先級佇列1202完整。
元素1204至1210中每一者可與一總跨度及一起始LBA相關聯。總跨度可用作優先級編號。如圖所示,優先級佇列1202可為最小優先級佇列,使得元素基於總跨度而以升序予以分類。因此,具有最低優先級編號(例如,最低總跨度)之元素可移動至佇列之前方。新元素可基於其關聯總跨度而插入至優先級佇列1202中。
返回參看圖11,在步驟1118處,NVM介面可判定與複數個輸入項相關聯之參數是否可插入的。舉例而言,若滑動窗406(圖4)當前涵蓋對應於檔案G至K之複數個輸入項,則NVM介面可判定與輸入項512、514、522、524及532相關聯之參數是否可插入於優先級佇列1202(圖12)中。
詳言之,可比較複數個輸入項之總跨度與已經儲存於優先級佇列中之總跨度。若總跨度小於優先級佇列1202中之最高總跨度,則可將該等參數插入於佇列1202中之適當位置中。舉例而言,因為對應於檔案G至K之總跨度(例如,5)小於優先級佇列1202中之最高總跨度(例如,81),所以NVM介面可判定與輸入項512、514、522、524及532相關聯之參數是可插入的。或者,若總跨度大於優先級佇列1202中之最高總跨度,則NVM介面可捨棄該等參數。
若NVM介面判定該等參數是可插入的,則程序1100可移動至步驟1120。在步驟1120處,NVM介面可將該等參數插入至優先級佇列中。舉例而言,可將檔案G至K(圖4)的為5 之總跨度及為120之起始LBA作為元素1212而插入於優先級佇列1202(圖12)中。另外,因為優先級佇列1202具有四個元素之固定大小,所以元素1212之插入使一元素(例如,元素1204)移位於佇列1202之末端處。
在插入該等參數之後,程序1100可移動至步驟1122。在步驟1122處,NVM介面可將滑動窗在樹狀結構中向前移動達數目等於複數個輸入項中之輸入項之數目的輸入項。舉例而言,返回參看圖4,NVM介面可將滑動窗406向前移動達五個輸入項。亦即,新近移動之滑動窗406之第一輸入項可對應於檔案L。程序1100接著可移動至步驟1114,其中NVM介面可判定滑動窗是否已通過樹狀結構之末端。
返回參看步驟1118,若NVM介面代替地判定該等參數不是可插入的,則程序1100可移動至步驟1112。在步驟1112處,NVM介面可將滑動窗在樹狀結構中向前移動達單一輸入項。
在使用此途徑的情況下,NVM介面可定位在邏輯空間中斷續之多個候選輸入項集合,其中每一輸入項集合可經組合為樹狀結構中之單一輸入項或節點。結果,NVM介面可攤銷橫越許多樹狀結構平坦化操作而掃描樹狀結構。此情形可因為樹狀結構掃描在處理效率方面成本高(例如,需要高數目個記憶體操作及快取輾轉)而特別有用。因此,若NVM介面可在通過樹狀結構之單一遍次時產生多個候選者,則可改良系統效率。此外,藉由將滑動窗在樹狀結構中向前移動達數目等於由滑動窗涵蓋之輸入項之數目的輸 入項,NVM介面可避免在已將關聯參數插入於優先級佇列中之後必須重新考慮相同輸入項。
在一些實施例中,NVM介面可將多個滑動窗或一貪婪演算法組合至程序1100(圖11)。舉例而言,在使用相似於程序800(圖8)之程序的情況下,NVM介面可偵測配合至兩個或兩個以上滑動窗中之輸入項。NVM介面接著可試圖將與兩個或兩個以上滑動窗之輸入項相關聯之參數插入至兩個或兩個以上優先級佇列,其中每一優先級佇列可與兩個或兩個以上滑動窗中之一者相關聯。
作為另一實例,在使用相似於程序1000(圖10A及圖10B)之程序的情況下,NVM介面可基於優先級佇列來判定是否已偵測最佳輸入項集合。詳言之,由滑動窗涵蓋之最佳輸入項集合之總跨度可具有等於該最佳輸入項集合中之輸入項之數目的值。亦即,對於涵蓋32個輸入項之滑動窗,一最佳輸入項集合之總跨度亦可為32。
回應於判定已偵測最佳輸入項集合,NVM介面可擴展由滑動窗涵蓋之輸入項之預定數目以產生經擴展滑動窗。NVM介面接著可將經擴展滑動窗應用於樹狀結構。
在又另外實施例中,代替僅在當前可用於樹狀結構之記憶體量低於預定臨限值時才搜尋樹狀結構,NVM介面可在執行樹狀結構更新的同時維持候選輸入項集合之優先級佇列。詳言之,在NVM介面更新樹狀結構之節點(例如,藉由加上一或多個輸入項、移除一或多個輸入項,及/或改變一或多個輸入項之大小)的同時,NVM介面可能需要將 一節點之內容解壓縮及讀出至記憶體(例如,圖1之記憶體114)中。在此程序期間,因為該節點已經被解壓縮,所以NVM介面可容易用僅少數額外操作來獲得與該節點相關聯之參數。接著,可將此等參數儲存至一優先級佇列。
相似於優先級佇列1202(圖12),在樹狀結構更新期間所維持之優先級佇列可包括任何合適數目個元素。每一元素可與諸如節點之優值、總跨度及/或起始LBA的一或多個參數相關聯。
現在參看圖13,展示用於使用在樹狀結構更新期間所維持之優先級佇列來進行樹狀結構平坦化之程序1300的流程圖。程序1300可在步驟1302處開始,且在步驟1304處,NVM介面(例如,圖1之NVM介面118或圖2之NVM介面218)可對儲存於揮發性記憶體(例如,圖1之揮發性記憶體114)中之樹狀結構之節點執行更新,其中該節點包括複數個輸入項。
接著,在步驟1306處,NVM介面可偵測複數個輸入項之數目是否高於預定臨限值。因此,為了改良效率,若一節點相對完整或具有高使用率,則NVM介面可僅考慮是否應將該節點插入至優先級佇列中。在一些狀況下,舉例而言,NVM介面可應用一篩選程式以判定該節點是否相對完整。或者,NVM介面可判定與一節點相關聯之使用量。
若NVM介面偵測到複數個輸入項之數目高於預定值,則程序1300可移動至步驟1308。在步驟1308處,NVM介面可試圖將與節點相關聯之參數插入於優先級佇列中。舉例而 言,NVM介面可獲得節點之輸入項的總跨度及起始LBA。因為一節點可儲存可變數目個輸入項(例如,10個至16個輸入項),所以NVM介面可能需要計算該節點之優值,其中該優值可用作優先級佇列中之優先級編號。在一些實施例中,所計算之優值可基於輸入項之總跨度與輸入項之數目之間的比率。舉例而言,所計算之優值可等於輸入項之總跨度與輸入項之數目之間的比率。作為另一實例,可使所得比率乘以一權數,以便產生優值之整數值。在兩個此等實施例中,優先級佇列可為最小優先級佇列,使得優先級佇列中之元素係基於優值而以升序予以儲存。
作為一另外實例,該優值可為所計算之優值的倒數。因而,優先級佇列可為最大優先級佇列,使得元素係基於優值而以降序予以儲存。在又另外實施例中,代替使用輸入項之數目以計算優值,NVM介面可使用位元組使用率以計算優值。
現在參看圖14,展示優先級佇列1402之方塊圖1400。優先級佇列1402可包括四個元素,其中每一元素可與一優值、一總跨度及一起始LBA相關聯。如圖所示,優先級佇列1402可為最小優先級佇列,使得元素係基於優值而以升序予以分類。因此,具有最低優先級編號(例如,最低優值)之元素可移動至佇列之前方。熟習此項技術者應瞭解,優先級佇列1402可包括任何合適數目個元素。然而,出於簡單起見,將優先級佇列1402展示為包括四個元素。
如所論述,優值可等於輸入項之總跨度與輸入項之數目 之間的比率。因此,假定對應於元素1404之節點具有10個輸入項,則該節點之優值可具有為42之值,該值等於該節點之輸入項之總跨度與輸入項之數目之間的比率(420/10=42)。可針對元素1406至1410之優值而執行相似計算。
若待插入節點之優值小於當前儲存於優先級佇列1402中之最高優值,則NVM介面可將關聯參數插入於佇列1402中之適當位置處。然而,若節點之優值大於當前儲存於優先級佇列1402中之最高優值,則NVM介面可捨棄關聯參數。
返回參看圖13之步驟1306,若NVM介面代替地偵測到複數個輸入項之數目低於預定值,則程序1300可移動至步驟1310。詳言之,NVM介面可判定節點不完整。
在步驟1310處,NVM介面可在試圖將節點插入於優先級佇列中之前進行等待。亦即,NVM介面可略過該節點,且等待直至額外輸入項已被加至該節點(例如,使用量已增加)。
熟習此項技術者應瞭解,可針對樹狀結構之多個節點而執行子程序1340(由圖13中之點線方框指示)。詳言之,NVM介面可橫越正被更新之樹狀結構之每一節點而反覆,且試圖將該節點加至一優先級佇列。
自步驟1310及1308中每一者,程序1300可移動至步驟1312。詳言之,在步驟1312處,NVM介面可偵測到當前可用於樹狀結構之記憶體量低於預定臨限值。接著,在步驟1314處,NVM介面可至少部分地基於優先級佇列來組合樹狀結構之至少一部分。
舉例而言,基於優先級佇列,NVM介面可判定具有可被組合之輸入項之最佳節點。因此,對於最小優先級佇列,NVM介面可將該優先級佇列中之第一元素視作最佳節點。若樹狀結構之每一節點能夠儲存10個至16個輸入項,則一最佳節點可包括16個輸入項,其中每一輸入項具有一個LBA之跨度。
在一些實施例中,一旦NVM介面已判定最佳節點,NVM介面就可偵測樹狀結構所需要之額外記憶體量是否超過可藉由組合最佳節點之輸入項而釋放之記憶體量。若NVM介面偵測到所需要之額外記憶體量小於或等於可藉由組合輸入項而釋放之記憶體量,則NVM介面可在不必進行樹狀結構之額外搜尋的情況下組合彼等輸入項。
然而,若NVM介面偵測到所需要之額外記憶體量大於可藉由組合輸入項而釋放之記憶體量,則NVM介面可使用任何其他合適程序以找到另一輸入項集合以進行平坦化。舉例而言,NVM介面可橫越樹狀結構而移動至少一滑動窗,且可使用至少一滑動窗來組合樹狀結構之至少一部分。舉例而言,NVM介面可使用分別相似於圖8、圖10A及圖10B以及圖11之程序800、1000及1100中之一或多者的程序。程序1300接著可在步驟1316處結束。
相比於樹狀結構之詳盡搜尋,上述途徑可在相對短時間量內產生優良平坦化候選者。此外,可在樹狀結構平坦化之後立即釋放記憶體(例如,可在父代節點中定址總跨度)而無需昂貴之樹狀結構重新平衡操作。
應理解,圖8、圖9、圖10A至圖10B、圖11及圖13之程序800、900、1000、1100及1300可由一系統(例如,圖1之電子裝置100或圖2之電子裝置200)中之一或多個組件執行。舉例而言,該等程序中之步驟中至少一些可由一NVM介面(例如,圖1之NVM介面118或圖2之NVM介面218)執行。熟習此項技術者應瞭解,該等步驟中之一或多者可由一控制電路(例如,圖1之SoC控制電路112)執行。
此外,應理解,圖8、圖9、圖10A至圖10B、圖11及圖13之程序800、900、1000、1100及1300僅僅係說明性的。在不脫離本發明之範疇的情況下,可移除、修改或組合該等步驟中任一者,且可添加任何額外步驟。
本發明之所描述實施例係出於說明而非限制之目的予以呈現。
100‧‧‧電子裝置
110‧‧‧系統單晶片(SoC)
112‧‧‧系統單晶片(SoC)控制電路
114‧‧‧記憶體
118‧‧‧非揮發性記憶體(NVM)介面
120‧‧‧非揮發性記憶體(NVM)
200‧‧‧電子裝置
210‧‧‧檔案系統
212‧‧‧非揮發性記憶體(NVM)驅動程式
216‧‧‧非揮發性記憶體(NVM)匯流排控制器
220‧‧‧非揮發性記憶體(NVM)
300‧‧‧非揮發性記憶體(NVM)
302‧‧‧條紋
304‧‧‧條紋
400‧‧‧邏輯區塊位址至實體頁面之映射
402‧‧‧邏輯區塊位址(LBA)
404‧‧‧實體頁面
406‧‧‧滑動窗
408‧‧‧滑動窗
410‧‧‧超級區塊
411‧‧‧超級區塊
412‧‧‧超級區塊
413‧‧‧超級區塊
414‧‧‧超級區塊
500‧‧‧樹狀結構
502‧‧‧節點
503‧‧‧輸入項
504‧‧‧輸入項
505‧‧‧輸入項
508‧‧‧額外節點及輸入項
509‧‧‧額外節點及輸入項
510‧‧‧節點
512‧‧‧輸入項
514‧‧‧輸入項
520‧‧‧節點
522‧‧‧輸入項
524‧‧‧輸入項
530‧‧‧節點
532‧‧‧輸入項
534‧‧‧輸入項
540‧‧‧NAND指標
541‧‧‧NAND指標
542‧‧‧NAND指標
543‧‧‧NAND指標
544‧‧‧NAND指標
545‧‧‧跨度
546‧‧‧跨度
547‧‧‧跨度
548‧‧‧跨度
549‧‧‧跨度
551‧‧‧頁面位址
552‧‧‧頁面位址
553‧‧‧頁面位址
554‧‧‧頁面位址
555‧‧‧頁面位址
600‧‧‧邏輯區塊位址至實體頁面之映射
700‧‧‧經更新樹狀結構
702‧‧‧節點
704‧‧‧頁面位址
706‧‧‧總跨度
1200‧‧‧優先級佇列之方塊圖
1202‧‧‧優先級佇列
1204‧‧‧元素
1206‧‧‧元素
1208‧‧‧元素
1210‧‧‧元素
1212‧‧‧元素
1400‧‧‧優先級佇列之方塊圖
1402‧‧‧優先級佇列
1404‧‧‧元素
1406‧‧‧元素
1408‧‧‧元素
1410‧‧‧元素
圖1及圖2為根據本發明之各種實施例而組態之電子裝置的方塊圖;圖3為根據本發明之各種實施例之非揮發性記憶體的功能圖;圖4為根據本發明之各種實施例的邏輯區塊位址至實體頁面之說明性映射的方塊圖;圖5為根據本發明之各種實施例的用於提供邏輯至實體映射之說明性樹狀結構之部分的方塊圖;圖6為根據本發明之各種實施例的邏輯區塊位址至實體頁面之另一說明性映射的方塊圖; 圖7為根據本發明之各種實施例的用於提供邏輯至實體映射之另一說明性樹狀結構之部分的方塊圖;圖8為根據本發明之各種實施例的用於較快樹狀結構平坦化之說明性程序的流程圖;圖9為根據本發明之各種實施例的用於在非揮發性記憶體中產生實體相連片段之說明性程序的流程圖;圖10A及圖10B為根據本發明之各種實施例的用於較快樹狀結構平坦化之另一說明性程序的流程圖;圖11為根據本發明之各種實施例的用於較快樹狀結構平坦化之又一說明性程序的流程圖;圖12為根據本發明之各種實施例之優先級佇列的方塊圖;圖13為根據本發明之各種實施例的用於較快樹狀結構平坦化之另外說明性程序的流程圖;及圖14為根據本發明之各種實施例之另一優先級佇列的方塊圖。
100‧‧‧電子裝置
110‧‧‧系統單晶片(SoC)
112‧‧‧系統單晶片(SoC)控制電路
114‧‧‧記憶體
118‧‧‧非揮發性記憶體(NVM)介面
120‧‧‧非揮發性記憶體(NVM)

Claims (23)

  1. 一種用於較快樹狀結構平坦化之方法,該方法包含:偵測到當前可用於一樹狀結構之一記憶體量低於一預定臨限值,其中該樹狀結構儲存一邏輯空間與一非揮發性記憶體(「NVM」)之實體位址之間的一邏輯至實體映射;橫越該樹狀結構而移動至少兩個滑動窗;在該至少兩個滑動窗橫越該樹狀結構而移動時維持對應於該至少兩個滑動窗之至少兩個最小跨度;判定該至少兩個滑動窗已完成橫越該樹狀結構而移動;及至少部分地基於該至少兩個最小跨度之間的一比較來選擇平坦化該樹狀結構之一輸入項集合。
  2. 如請求項1之方法,其中該至少兩個滑動窗各自涵蓋該樹狀結構之不同數目個輸入項。
  3. 如請求項1或2之方法,其中該輸入項集合包含邏輯相連輸入項。
  4. 如請求項1或2之方法,其中該維持該至少兩個最小跨度包含:對於該至少兩個滑動窗中每一者,將新近由該滑動窗涵蓋之一輸入項之一跨度加至一執行中計數器;及自該執行中計數器減去不再由該滑動窗涵蓋之一輸入項之一跨度。
  5. 如請求項4之方法,其進一步包含: 比較該執行中計數器與儲存於揮發性記憶體中之一最小跨度;及判定該執行中計數器是否小於該最小跨度;回應於判定該執行中計數器小於該最小空間,將該執行中計數器替換為該最小跨度。
  6. 如請求項5之方法,其進一步包含:回應於判定該執行中計數器大於該最小跨度,保持該最小跨度。
  7. 如請求項1或2之方法,其中該選擇包含:判定該至少兩個最小跨度中之哪一者具有較小值。
  8. 如請求項1或2之方法,其中該至少兩個滑動窗為並行地橫越該樹狀結構而移動及連續地橫越該樹狀結構而移動中至少一者。
  9. 一種系統,其包含:非揮發性記憶體(「NVM」);揮發性記憶體,其用於儲存包含複數個輸入項之一樹狀結構,其中該樹狀結構提供一邏輯空間與該NVM之實體位址之間的一邏輯至實體映射;及記憶體介面,其包含控制電路,該控制電路可操作以:偵測到當前可用於該樹狀結構之一記憶體量低於一預定臨限值;橫越該樹狀結構之該複數個輸入項而移動一滑動窗,其中該滑動窗涵蓋該樹狀結構之預定數目個輸入項; 判定由該滑動窗涵蓋之一輸入項集合具有等於該輸入項集合中之輸入項之該數目的一跨度;擴展由該滑動窗涵蓋之輸入項之該預定數目以產生一經擴展滑動窗;及將該經擴展滑動窗應用於該樹狀結構之該複數個輸入項之至少一部分。
  10. 如請求項9之系統,其中該控制電路可操作以將該滑動窗之輸入項之該預定數目擴展達該NVM之一條紋之大小的一倍數。
  11. 如請求項9或10之系統,其中該控制電路可操作以擴展該滑動窗以與一條紋邊界對準。
  12. 如請求項9或10之系統,其中該控制電路可操作以:判定由該經擴展滑動窗產生之一執行中計數器之值是否等於一預定值;及回應於判定由該經擴展滑動窗產生之該執行中計數器之該值等於該預定值,選擇由該經擴展滑動窗產生之該樹狀結構之一輸入項集合以進行樹狀結構平坦化。
  13. 如請求項12之系統,其中回應於判定由該經擴展窗產生之該執行中計數器之該值不等於該預定值,該控制電路可操作以選擇由該滑動窗產生之該樹狀結構之該輸入項集合以進行樹狀結構平坦化。
  14. 如請求項13之系統,其進一步包含用於與該NVM通信之一匯流排控制器,且其中該控制電路可操作以:指導該匯流排控制器自該NVM讀取對應於該輸入項集 合之資料;將該資料儲存於該揮發性記憶體中;及指導該匯流排控制器將該資料依序地程式化至該NVM之一超級區塊。
  15. 一種用於存取一非揮發性記憶體(「NVM」)之記憶體介面,該記憶體介面包含控制電路,該控制電路可操作以:偵測到當前可用於儲存於揮發性記憶體中之一樹狀結構之一記憶體量低於一預定臨限值,其中該樹狀結構儲存一邏輯空間與該NVM之實體位址之間的一邏輯至實體映射;偵測一樹狀結構之配合至一滑動窗中之第一複數個輸入項;試圖將與該第一複數個輸入項相關聯之參數插入於一優先級佇列中;及將該滑動窗在該樹狀結構中向前移動達數個輸入項,其中輸入項之該數目係至少部分地基於該優先級佇列之一當前狀態。
  16. 如請求項15之記憶體介面,其中該控制電路可操作以:偵測到該滑動窗已完成橫越該樹狀結構而移動;及使用該優先級佇列來定位一最佳輸入項集合。
  17. 如請求項15或16之記憶體介面,其中該控制電路進一步可操作以:判定該優先級佇列是否完整; 回應於判定該優先級佇列不完整,將與該第一複數個輸入項相關聯之該等參數插入於該優先級佇列中;及將該滑動窗在該樹狀結構中向前移動達一單一輸入項。
  18. 如請求項17之記憶體介面,其中回應於判定該優先級佇列完整,該控制電路進一步可操作以:判定與該第一複數個輸入項相關聯之該等參數是否可插入的;及回應於判定該等參數是可插入的,將該等參數插入於該優先級佇列中;及將該滑動窗在該樹狀結構中向前移動達一數目等於該第一複數個輸入項中之輸入項之一數目的輸入項。
  19. 如請求項18之記憶體介面,其中該控制電路進一步可操作以將一元素移位於該優先級佇列之末端處。
  20. 如請求項18之記憶體介面,其中回應於判定該等參數不是可插入的,該控制電路可操作以將該滑動窗在該樹狀結構中向前移動達一單一輸入項。
  21. 如請求項15或16之記憶體介面,其中該優先級佇列為一有序清單,其中具有較低優先級編號之元素移動至該清單之前方,且具有較高優先級編號之元素移動至該清單之末端。
  22. 如請求項15或16之記憶體介面,其中該控制電路可操作以:偵測該樹狀結構之配合至一額外滑動窗中之第二複數 個輸入項;及試圖將與該第一複數個輸入項相關聯之該等參數及與該第二複數個輸入項相關聯之參數插入至至少兩個優先級佇列,其中該至少兩個優先級佇列中每一者係與該滑動窗及該額外滑動窗中之一者相關聯。
  23. 如請求項15或16之記憶體介面,其中該控制電路可操作以:基於該優先級佇列來判定是否已偵測一最佳輸入項集合;回應於判定已偵測一最佳輸入項集合,擴展由該滑動窗涵蓋之輸入項之一預定數目以產生一經擴展滑動窗;及將該經擴展滑動窗應用於該樹狀結構。
TW101133890A 2011-09-16 2012-09-14 用於具有非揮發性記憶體之系統之較快樹狀結構平坦化 TWI567553B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US13/234,954 US8924632B2 (en) 2011-09-16 2011-09-16 Faster tree flattening for a system having non-volatile memory

Publications (2)

Publication Number Publication Date
TW201324149A TW201324149A (zh) 2013-06-16
TWI567553B true TWI567553B (zh) 2017-01-21

Family

ID=47002646

Family Applications (2)

Application Number Title Priority Date Filing Date
TW102107951A TWI608351B (zh) 2011-09-16 2012-09-14 用於具有非揮發性記憶體之系統之較快樹狀結構平坦化
TW101133890A TWI567553B (zh) 2011-09-16 2012-09-14 用於具有非揮發性記憶體之系統之較快樹狀結構平坦化

Family Applications Before (1)

Application Number Title Priority Date Filing Date
TW102107951A TWI608351B (zh) 2011-09-16 2012-09-14 用於具有非揮發性記憶體之系統之較快樹狀結構平坦化

Country Status (7)

Country Link
US (1) US8924632B2 (zh)
EP (1) EP2570914A3 (zh)
JP (1) JP5709814B2 (zh)
KR (2) KR101428189B1 (zh)
CN (1) CN102999429B (zh)
TW (2) TWI608351B (zh)
WO (1) WO2013040538A1 (zh)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8838882B1 (en) * 2012-03-19 2014-09-16 Google Inc. Multi-level promotion caching
CN103117922B (zh) * 2013-02-20 2014-06-11 浪潮电子信息产业股份有限公司 一种双重滑动窗口实现报文查找的方法
CN104065906B (zh) * 2014-07-09 2017-02-15 珠海全志科技股份有限公司 数字录像设备的录像方法及装置
JP6796589B2 (ja) * 2015-02-10 2020-12-09 ピュア ストレージ, インコーポレイテッド ストレージシステムアーキテクチャー
CN106294189B (zh) * 2015-05-25 2020-09-25 中兴通讯股份有限公司 内存碎片整理方法及装置
US20190012259A1 (en) * 2017-07-06 2019-01-10 Futurewei Technologies, Inc. Lba eviction in pcm media
KR102619954B1 (ko) * 2018-03-29 2024-01-02 삼성전자주식회사 데이터를 처리하기 위한 방법 및 이를 지원하는 전자 장치
US10592427B2 (en) * 2018-08-02 2020-03-17 Micron Technology, Inc. Logical to physical table fragments
US10977181B2 (en) 2019-07-10 2021-04-13 International Business Machines Corporation Data placement in write cache architecture supporting read heat data separation
CN110442531B (zh) * 2019-08-08 2021-10-26 深圳忆联信息系统有限公司 基于固态硬盘的读性能提升方法、装置和计算机设备
JP7048650B2 (ja) * 2020-02-04 2022-04-05 キオクシア株式会社 メモリ装置及び方法
US20220075830A1 (en) * 2020-09-10 2022-03-10 EMC IP Holding Company LLC Resumable ordered recursive traversal of an unordered directory tree
CN112115126A (zh) * 2020-09-29 2020-12-22 北京人大金仓信息技术股份有限公司 集合数据类型的处理方法、装置和数据库管理系统
WO2022086559A1 (en) * 2020-10-23 2022-04-28 Hewlett-Packard Development Company, L.P. Access to volatile memories
CN114281248B (zh) * 2021-11-29 2022-12-09 深圳三地一芯电子有限责任公司 一种提升ram读写性能的方法、电子设备及介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW200737743A (en) * 2006-01-27 2007-10-01 Qualcomm Inc MAP decoder with bidirectional sliding window architecture
US20070268754A1 (en) * 2000-01-06 2007-11-22 Super Talent Electronics Inc. Recycling Partially-Stale Flash Blocks Using a Sliding Window for Multi-Level-Cell (MLC) Flash Memory
TW201022937A (en) * 2008-12-08 2010-06-16 Apacer Technology Inc Memory booster method for storage device

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5247634A (en) 1990-03-20 1993-09-21 Hewlett-Packard Company Method of managing memory allocation by association of memory blocks with a tree structure
US5604902A (en) 1995-02-16 1997-02-18 Hewlett-Packard Company Hole plugging garbage collection for a data storage system
US7035989B1 (en) 2000-02-16 2006-04-25 Sun Microsystems, Inc. Adaptive memory allocation
JP3694501B2 (ja) * 2002-10-30 2005-09-14 松下電器産業株式会社 記憶装置
US7272698B2 (en) 2003-03-19 2007-09-18 Autodesk, Inc. Heap memory management
US8203972B2 (en) 2004-06-30 2012-06-19 Sap Ag Method and system for compressing a tree
US7461209B2 (en) * 2005-12-06 2008-12-02 International Business Machines Corporation Transient cache storage with discard function for disposable data
US7822941B2 (en) 2006-06-05 2010-10-26 Oracle America, Inc. Function-based virtual-to-physical address translation
US8484651B2 (en) 2007-05-04 2013-07-09 Avaya Inc. Distributed priority queue that maintains item locality
KR100922389B1 (ko) 2007-07-04 2009-10-19 삼성전자주식회사 플래시 메모리를 위한 색인 스킴
KR101447188B1 (ko) * 2007-07-31 2014-10-08 삼성전자주식회사 플래시 메모리에 최적화된 입출력 제어 방법 및 장치
US8095724B2 (en) 2008-02-05 2012-01-10 Skymedi Corporation Method of wear leveling for non-volatile memory and apparatus using via shifting windows
KR20100091544A (ko) * 2009-02-10 2010-08-19 삼성전자주식회사 메모리 시스템 및 그 마모도 관리 방법
US8516219B2 (en) 2009-07-24 2013-08-20 Apple Inc. Index cache tree
US8468293B2 (en) 2009-07-24 2013-06-18 Apple Inc. Restore index page
US8688894B2 (en) 2009-09-03 2014-04-01 Pioneer Chip Technology Ltd. Page based management of flash storage

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070268754A1 (en) * 2000-01-06 2007-11-22 Super Talent Electronics Inc. Recycling Partially-Stale Flash Blocks Using a Sliding Window for Multi-Level-Cell (MLC) Flash Memory
TW200737743A (en) * 2006-01-27 2007-10-01 Qualcomm Inc MAP decoder with bidirectional sliding window architecture
TW201022937A (en) * 2008-12-08 2010-06-16 Apacer Technology Inc Memory booster method for storage device

Also Published As

Publication number Publication date
US8924632B2 (en) 2014-12-30
EP2570914A2 (en) 2013-03-20
WO2013040538A1 (en) 2013-03-21
KR101428189B1 (ko) 2014-08-07
CN102999429B (zh) 2016-07-06
TW201329715A (zh) 2013-07-16
KR101865959B1 (ko) 2018-06-08
EP2570914A3 (en) 2014-07-16
KR20130030238A (ko) 2013-03-26
TW201324149A (zh) 2013-06-16
US20130073787A1 (en) 2013-03-21
KR20130030243A (ko) 2013-03-26
JP2013065310A (ja) 2013-04-11
TWI608351B (zh) 2017-12-11
JP5709814B2 (ja) 2015-04-30
CN102999429A (zh) 2013-03-27

Similar Documents

Publication Publication Date Title
TWI567553B (zh) 用於具有非揮發性記憶體之系統之較快樹狀結構平坦化
KR101390134B1 (ko) 비휘발성 메모리를 갖는 시스템을 위한 동적 및 정적 데이터의 처리
US9841917B2 (en) Systems and methods for configuring non-volatile memory
US11249664B2 (en) File system metadata decoding for optimizing flash translation layer operations
US8910017B2 (en) Flash memory with random partition
KR101966693B1 (ko) Lba 비트맵 사용
US9239785B2 (en) Stochastic block allocation for improved wear leveling
US20110238629A1 (en) Uncorrectable error handling schemes for non-volatile memories
US9262339B2 (en) Managing write operations in a computerized memory
CN106662985A (zh) 主机管理的非易失性存储器
KR20200016075A (ko) 메모리 시스템에서의 유효 데이터 탐색 방법 및 장치
US11269771B2 (en) Storage device for improving journal replay, operating method thereof, and electronic device including the storage device
TW202038098A (zh) 記憶體控制方法、記憶體儲存裝置及記憶體控制電路單元
CN112470132B (zh) 控制nand操作延时

Legal Events

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