TWI545434B - 非揮發性記憶體系統及使用非揮發性記憶體系統之方法 - Google Patents

非揮發性記憶體系統及使用非揮發性記憶體系統之方法 Download PDF

Info

Publication number
TWI545434B
TWI545434B TW102103572A TW102103572A TWI545434B TW I545434 B TWI545434 B TW I545434B TW 102103572 A TW102103572 A TW 102103572A TW 102103572 A TW102103572 A TW 102103572A TW I545434 B TWI545434 B TW I545434B
Authority
TW
Taiwan
Prior art keywords
nvm
range
lba
volatile memory
file system
Prior art date
Application number
TW102103572A
Other languages
English (en)
Other versions
TW201337563A (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 TW201337563A publication Critical patent/TW201337563A/zh
Application granted granted Critical
Publication of TWI545434B publication Critical patent/TWI545434B/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/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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1435Saving, restoring, recovering or retrying at system level using file system or storage system metadata
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • 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
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/16Protection against loss of memory contents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1417Boot up procedures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/1847File system types specifically adapted to static storage, e.g. adapted to flash memory or SSD
    • 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)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Library & Information Science (AREA)
  • Human Computer Interaction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Stored Programmes (AREA)

Description

非揮發性記憶體系統及使用非揮發性記憶體系統之方法
NAND快閃記憶體以及其他類型之非揮發性記憶體(「NVM」)常常用於大容量儲存器。舉例而言,諸如攜帶型媒體播放器之消費型電子器件時常包括快閃記憶體以儲存音樂、視訊及其他媒體。
系統可將不同類型之檔案儲存於NVM中。當系統經歷錯誤時,在檔案系統對儲存於NVM中之檔案的觀點與儲存於NVM中之實際檔案之間可發生差異。最終,當檔案系統需要存取特定檔案時,系統可發現該檔案為損毀的或並不存在於NVM中。此情形接著引發檔案系統試圖自外部源恢復檔案。在系統操作期間差異之發現及隨後恢復可破壞使用者體驗。
揭示用於資料可得性之掛接時間重新調整的系統及方法。在系統開機期間,可列舉非揮發性記憶體(「NVM」)驅動程式,且可獲得NVM驅動程式映射。NVM驅動程式映射可包括NVM中LBA之實際可得性。可接著掛接檔案系統,且可產生檔案系統分配狀態。檔案系統分配狀態可指示檔案系統對LBA之可得性的觀點。隨後,可執行資料可得性重新調整。亦即,檔案系統分配狀態及NVM驅動程式映射可經重疊,且彼此進行比較以便曝露任何差異。
100‧‧‧電子器件
110‧‧‧單晶片系統
112‧‧‧SoC控制電路
114‧‧‧記憶體
118‧‧‧非揮發性記憶體(NVM)介面
120‧‧‧非揮發性記憶體(NVM)
200‧‧‧電子器件
210‧‧‧檔案系統
212‧‧‧非揮發性記憶體驅動程式
214‧‧‧轉譯層
216‧‧‧非揮發性記憶體(NVM)匯流排控制器
218‧‧‧非揮發性記憶體(NVM)介面
220‧‧‧非揮發性記憶體
300‧‧‧用於在系統開機期間進行資料可得性重新調整的程序
402‧‧‧非揮發性記憶體(NVM)驅動程式映射
404‧‧‧檔案系統分配狀態
500‧‧‧用於復原資料之說明性程序
600‧‧‧用於判定資料可得性之程序
700‧‧‧樹
702‧‧‧節點
704‧‧‧項目
706‧‧‧項目
708‧‧‧項目
710‧‧‧項目
712‧‧‧LBA範圍
714‧‧‧頁位址
716‧‧‧指標欄位
720‧‧‧節點指標
722‧‧‧非揮發性記憶體(NVM)指標
724‧‧‧非揮發性記憶體(NVM)經取消映射指標
726‧‧‧非揮發性記憶體(NVM)不可校正指標
730‧‧‧節點
800‧‧‧用於處置不可校正資料之程序
圖1及圖2為根據本發明之各種實施例經組態之電子器件的方塊圖;圖3為根據本發明之各種實施例的用於在系統開機期間的資料可得性重新調整之說明性程序的流程圖;圖4為根據本發明之各種實施例的根據檔案系統及非揮發性記憶體驅動程式之視角的可得性狀態之說明性映射的圖形視圖;圖5為根據本發明之各種實施例的用於復原資料之說明性程序的流程圖;圖6為根據本發明之各種實施例的用於判定資料可得性之說明性程序的流程圖;圖7為根據本發明之各種實施例的用於提供邏輯至實體映射之說明性樹的方塊圖;且圖8為根據本發明之各種實施例的用於處置不可校正資料之說明性程序的流程圖。
本發明之以上及其他態樣及優點在結合隨附圖式考慮以下【實施方式】之後將變得更加顯而易見,在該等圖式中類似參考字元始終指代類似部分。
提供用於資料可得性之掛接時間重新調整的系統及方法。在系統開機期間,可列舉一非揮發性記憶體(「NVM」)驅動程式,且可獲得一NVM驅動程式映射。該NVM驅動程式映射可包括在該NVM中LBA之實際可得性。
可接著掛接檔案系統。在掛接程序期間,可產生檔案系統分配狀態,該檔案系統分配狀態可指示該檔案系統對LBA之可得性的觀點。隨後,可執行資料可得性重新調整。亦即,該檔案系統分配狀態及該NVM驅動程式映射可經重疊,且彼此進行比較以便曝露任何差 異。
詳言之,對於檔案系統分配狀態中之每一可得LBA範圍,檔案系統可將命令傳輸至系統之NVM介面。在接收到命令時,NVM介面可判定NVM驅動程式映射是否具有一致狀態。
若NVM介面判定NVM驅動程式映射為不一致的(例如,LBA範圍之至少一部分為不可得的),則NVM介面可將指示此不一致性之資訊傳輸至檔案系統。如本文中所使用,若已知LBA範圍為不可校正或取消映射的,則LBA範圍為「不可得的」。在接收到此資訊時,檔案系統可調用原則以復原與該LBA範圍之至少一部分相關聯的資料。
圖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之一或多個指定區塊可儲存內容脈絡資訊。如本文中所使用,「內容脈絡資訊」可指代在特定時間點處 與整個NVM之狀態相關聯的資訊。舉例而言,內容脈絡資訊可包括在特定時間NVM 120之區塊的邏輯至實體映射。如本文中所使用,「邏輯至實體映射」可係資料頁之一或多個邏輯位址(例如,邏輯區段)與實體頁位址之間的映射。
在一些實施例中,NVM 120之一或多個區塊可包括區塊目錄(「TOC」)。每一區塊TOC可包括將區塊之頁映射至對應邏輯位址的資訊。在一些實施例中,區塊TOC可僅包括區塊中經程式化之每一頁的邏輯位址(例如,邏輯區塊位址(「LBA」)或邏輯頁編號)。在其他實施例中,區塊TOC亦可包括對頁進行之更新的相對使用期(age)(例如,當頁已相對於其他頁受到更新時)。在此等實施例中,區塊TOC可包括經程式化之每一頁的邏輯位址-使用期對。
單晶片系統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之部分的任何處理器之主記憶體。
記憶體114可包括用於儲存邏輯至實體映射之一或多個資料結構。舉例而言,記憶體114可包括樹,該樹可提供NVM 120之LBA範圍與對應實體位址之間的映射。將結合圖6及圖7來更詳細地描述樹。
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+」),且可為電子器件200之作業系統的部分(例如,圖1之SoC控制電路112的部分)。在一些實施例中,檔案系統210可包括提供頁之邏輯至實體映射的快閃檔案系統。在此等實施例中,檔案系統210可執行下文所論述之NVM驅動程式212之功能性中的一些或全部,且因此檔案系統210及NVM驅動程式212可為或可能並非分離模組。
檔案系統210可管理用於應用程式及作業系統之檔案及資料夾結構。檔案系統210可在於電子器件200上執行之應用程式或作業系統控制下操作,且當應用程式或作業系統請求自NVM 220讀取資訊或將資訊儲存於NVM 220中時可將寫入及讀取命令提供至NVM驅動程式212。連同每一讀取或寫入命令,檔案系統210可提供邏輯位址以指示 使用者資料應讀取自或寫入至的地方,諸如邏輯頁位址或具有頁偏移之LBA。
檔案系統210可將並非直接與NVM 220相容之讀取及寫入請求提供至NVM驅動程式212。舉例而言,邏輯位址可使用對於基於硬碟機之系統為典型的規約或協定。不同於快閃記憶體,基於硬碟機之系統可在不首先執行區塊抹除的情況下覆寫記憶體位置。此外,硬碟機可無需磨損調平來增加器件之壽命。因此,NVM介面218可執行係記憶體特定、供應商特定或記憶體特定與供應商特定兩者的任何功能以處置檔案系統請求且以適合於NVM 220之方式執行其他管理功能。
NVM驅動程式212可包括轉譯層214。在一些實施例中,轉譯層214可為或可包括快閃轉譯層(「FTL」)。關於寫入命令,轉譯層214可將所提供之邏輯位址映射至NVM 220上的未使用之經抹除實體位置。關於讀取命令,轉譯層214可使用所提供之邏輯位址來判定儲存所請求資料的實體位址。因為每一NVM可取決於NVM之大小或供應商而具有不同佈局,所以此映射操作可為記憶體特定及/或供應商特定的。除執行邏輯至實體位址映射外,轉譯層214亦可執行任何其他合適功能。舉例而言,轉譯層214可執行對於快閃轉譯層可為典型之其他功能中的任一者,諸如記憶體回收(「GC」)及磨損調平。
舉例而言,轉譯層214可執行記憶體回收以釋放NVM 220的經程式化區塊以供抹除。舉例而言,一旦被釋放及抹除,便可使用記憶體位置來儲存自檔案系統210接收之新使用者資料。在一些狀況下,GC程序可涉及將有效資料自經程式化區塊複製至具有被抹除之記憶體位置的另一區塊,藉此使經程式化區塊中之有效資料無效。一旦已使經程式化區塊中之所有記憶體位置無效,轉譯層214便可指導匯流排控制器216對經程式化區塊執行抹除操作。如本文中所使用,「有效資料」可指代已回應於對應於一或多個邏輯位址(例如,LBA)之最近寫 入請求而被程式化的使用者資料,且可因此為該一或多個邏輯位址之使用者資料的有效版本。
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錯誤、檔案系統錯誤,或一般系統錯誤)時,在檔案系統對儲存於NVM中之檔案的觀點與儲存於NVM中之實際檔案之間可發生差異。舉例而言,在非正常之(unclean)重新開機期間,檔案系統可已向檔案分配了LBA(例如,後設資料已被更新以反映檔案已被下載),但檔案尚未被程式化至NVM。
在此等情形下,檔案系統可假設,一或多個LBA為可得的(例如,一或多個LBA與儲存於NVM中的可校正使用者資料相關聯),但一或多個LBA可實際上為不可得的。如本文中所使用,「不可得LBA」可指代未分配/取消映射之LBA(例如,不與儲存於NVM中之使用者資料相關聯的LBA),或已知不可校正之LBA(例如,與LBA相關聯之使用者資料的錯誤校正碼不起作用)。在稍後時間,當檔案系統需要存取一或多個LBA時,系統可發現相關聯的使用者資料遺失或損毀。檔案系統可接著試圖恢復與一或多個LBA相關聯的使用者資料。然而,此程序可負面地影響使用者體驗。
在一些實施例中,並非等待使用者來察覺差異,系統可在系統操作期間起始完全NVM掃描。藉由比較檔案系統對LBA之可得性的觀點與NVM掃描之結果,系統可偵測差異。此情形可為耗時之程序,且在系統操作時可引起問題,此係因為系統需要對應用程式請求作出充分回應。
因而,為了避免此等效能問題,系統可在較早時間(詳言之,在系統開機期間)起始重新調整程序。此情形可允許在對系統效能具有最小影響的情況下執行重新調整。詳言之,因為檔案系統在開機期間 尚未必須對來自應用程式之讀取及寫入請求作出回應,所以系統具有足夠時間來執行重新調整程序。因此,可在系統變為完全操作之前建立可得LBA之基線,且可推遲系統存取,直至系統達到已知良好狀態。此外,因為重新調整程序僅應付儲存於揮發性記憶體中之小資料結構,所以與進行對NVM之完全讀取遍次的程序相比較,可快得多地執行重新調整程序。
現參看圖3,展示用於在系統開機期間進行資料可得性重新調整的程序300,程序300可於步驟302處開始,且在步驟304處,可列舉NVM驅動程式(例如,圖2之NVM驅動程式212)。詳言之,在列舉期間可獲得可儲存於揮發性記憶體(例如,圖1之記憶體114)中的NVM驅動程式映射。該NVM驅動程式映射可包括在該NVM中LBA之實際可得性。
可藉由掃描NVM(例如,圖1之NVM 120或圖2之NVM 220)來執行NVM驅動程式的列舉。舉例而言,NVM介面(例如,圖1之NVM介面118或圖2之NVM介面218)可讀取儲存於NVM中之內容脈絡資訊,其中內容脈絡資訊包括邏輯至實體映射。NVM介面可接著將邏輯至實體映射載入至揮發性記憶體中。在一些狀況下,NVM介面可識別具有尚未藉由內容脈絡資訊擷取的邏輯至實體映射之一或多個區塊(例如,較近來已進行更新的區塊)。結果,NVM介面可掃描一或多個區塊之區塊TOC以便更新揮發性記憶體中的邏輯至實體映射。
在一些實施例中,經更新之邏輯至實體映射可按合適資料結構(諸如,樹或映射表)來儲存。基於NVM驅動程式列舉之結果(例如,經更新之邏輯至實體映射),NVM介面可獲得NVM驅動程式映射,該映射可指示在NVM中LBA的可得性。將結合圖6及圖7來更詳細地論述樹及NVM驅動程式映射。
在其他實施例中,NVM介面可藉由直接掃描NVM(例如,藉由檢 驗儲存於NVM中之一或多個旗標的狀態)來獲得NVM驅動程式映射。將結合圖8來更詳細地論述此程序。
NVM驅動程式映射可採取任何合適形式。舉例而言,現參看圖4,自檔案系統及NVM驅動程式之視角來展示可得性狀態之說明性映射。詳言之,NVM驅動程式映射402可指示如由NVM介面(例如,圖1之NVM介面118或圖2之NVM介面218)判定之LBA範圍1至5的可得性。如圖所示,可得之LBA(例如,與儲存於NVM中之可校正使用者資料相關聯的LBA)由水平線指示,而不可得之LBA(例如,取消映射或不可校正之LBA)由空白空間來指示。熟習此項技術者將瞭解,NVM驅動程式映射402可提供任何合適數目個LBA(例如,系統之所有LBA)之可得性。為了簡單起見,在圖4中僅展示NVM驅動程式映射的一子集。
NVM驅動程式映射402可作為任何合適資料結構(諸如,位元映射、映射表或範圍清單)儲存於揮發性記憶體(例如,圖1之記憶體114)中。在一些實施例中,NVM驅動程式映射402之每一項目可對應於單一位元。亦即,位元映射之每一項目可儲存二進位值(例如,0或1),其中每一二進位值可對應於相關聯的LBA的可得性狀態(例如,可得或不可得)。或者,位元映射之每一項目可對應於多個位元,且可因此儲存與相關聯的LBA之可得性狀態相關的額外資訊(例如,LBA為可得的、不可得-取消映射,抑或不可得-不可校正的)。因為NVM驅動程式映射402僅需要儲存LBA之可得性且不儲存LBA之實際實體位置,所以NVM驅動程式映射402可佔用揮發性記憶體中相對小之空間。
回看圖3,在步驟306處,可掛接檔案系統(例如,圖2之檔案系統210)。在掛接程序期間,可根據檔案系統日誌產生檔案系統分配狀態。檔案系統分配狀態可指示檔案系統對LBA之可得性的觀點。舉例 而言,再次參看圖4,檔案系統分配狀態404可表示檔案系統對LBA範圍1至5之可得性的觀點。類似於NVM驅動程式映射402,檔案系統分配狀態404可被儲存作為任何合適資料結構(諸如,位元映射、映射表或範圍清單)。此外,檔案系統分配狀態404之每一項目可對應於一或多個位元。
繼續圖3之步驟308,可執行開機時間取消映射(unmap)。詳言之,檔案系統可將當前取消映射LBA的清單提供至NVM驅動程式。程序300可接著移至步驟310。
在步驟310處,可執行資料可得性重新調整。詳言之,在檔案系統與NVM介面之間可建立新通信路徑,且檔案系統分配狀態及NVM驅動程式映射可經重疊並彼此進行比較以便曝露任何差異。因為檔案系統分配狀態及NVM驅動程式映射為儲存於揮發性記憶體中的相對小資料結構,所以比較程序可為相對快速的。
在理想情境下,檔案系統分配狀態及NVM驅動程式映射應為等同的。然而,檔案系統分配狀態與NVM驅動程式映射之間的任何差異可指示如下情形:檔案系統假設一或多個LBA為可得的,但LBA在NVM中實際為不可得的。基於此等差異,檔案系統可起始恢復程序以復原與一或多個不可得LBA相關聯之資料。
現參看圖5,展示用於復原資料之說明性程序500。程序500可於步驟502開始,且在步驟504處,檔案系統(例如,圖2之檔案系統210)可在系統開機期間判定檔案系統分配狀態(例如,圖4之檔案系統分配狀態404)。
接著,在步驟506處,對於檔案系統分配狀態中之每一可得LBA範圍,檔案系統可將命令傳輸至NVM介面(例如,圖1之NVM介面118或圖2之NVM介面218)以判定NVM驅動程式映射(例如,圖4之NVM驅動程式映射402)是否具有一致狀態。在一些狀況下,命令可呈應用程 式設計介面(「API」)命令之形式。API可為允許軟體程式或模組與其他軟體互動的任何合適介面。
因此,對於檔案系統在檔案系統分配狀態中假設進行分配的每一LBA範圍(例如,圖4之LBA範圍1至5),檔案系統可傳輸API命令。在一些實施例中,經傳輸之API命令可具有以下格式:IsAllValid(LBA,LBA_end,callback); (1),其中LBA可對應於LBA範圍之開始LBA,LBA_end可對應於LBA範圍之結束LBA,且回呼可對應於回呼函式。回呼函式可為使NVM介面能夠與檔案系統通信之函式。
在其他實施例中,經傳輸之API命令可具有以下格式:IsAllValid(LBA,LBA_end,list[]); (2),其中LBA可對應於LBA範圍之開始LBA,LBA_end可對應於LBA範圍之結束LBA,且list[]可對應於可在其中添加項目之清單。熟習此項技術者應瞭解,自檔案系統傳輸之命令可具有任何合適格式。熟習此項技術者亦應瞭解,替代在命令中傳遞單一LBA範圍,檔案系統可在單一命令中傳遞LBA範圍之清單。
繼續至步驟508,檔案系統可自NVM介面接收資訊,該資訊指示一或多個LBA範圍具有不一致狀態。亦即,基於與NVM驅動程式映射之比較,NVM介面可已判定,一或多個LBA範圍中的至少一部分為不可得的(例如,取消映射或不可校正的)。
接著,在步驟510處,檔案系統可調用原則以復原與一或多個LBA範圍相關聯的資料(例如,使用者資料)。針對特定LBA範圍調用之原則可係基於與該LBA範圍相關聯的檔案路徑。舉例而言,若與LBA範圍相關聯之資料為臨時資料(例如,資料被刪除且接著每當開機器件時被重新產生),則檔案系統可停止復原資料。另一方面,若與LBA範圍相關聯之資料係與檔案系統相關聯之內部資料,則檔案系 統可使用內部資料來恢復資料。作為又一實例,若與LBA範圍相關聯之資料係應用程式產生之資料,則檔案系統可調用與對應應用程式相關聯之原則而自外部或備份源恢復資料(例如,向外部源發佈復原命令,請求應用程式備份,或請求使用者將器件插入電腦中)。在復原了資料時,檔案系統可重新掛接資料。程序500可接著在步驟512處結束。
現參看圖6,展示用於判定資料可得性之程序600。程序600可在步驟602處開始,且在步驟604處,NVM介面(例如,圖1之NVM介面118或圖2之NVM介面218)可偵測到電子器件正在開機。
繼續至步驟606,NVM介面可自儲存於揮發性記憶體(例如,圖1之記憶體114)中之資料結構(例如,樹)獲得LBA之可得性狀態。
舉例而言,現參看圖7,樹700可由NVM介面使用以獲得LBA之可得性狀態。樹700可包括多個節點,其中每一節點可被一致地設定大小以用於記憶體分配用途(例如,每一節點可具有64位元組之固定大小)。為了簡單起見,樹700被展示為包括少量節點。因此,樹700中之虛線框可指示樹700之未展示任何細節的其他節點。
此外,樹700之每一節點可包括一或多個項目。舉例而言,如圖7中所展示,節點702可包括兩個項目(例如,項目704及706)。節點之每一項目可與數個欄位相關聯。舉例而言,樹700之每一項目可與LBA範圍712(例如,延行長度編碼壓縮(「rle壓縮」)之範圍)及頁位址714相關聯。此外,樹700之每一項目可包括具有特定符記值之指標欄位716。熟習此項技術者將瞭解,樹700之項目704至710中的每一者可包括在圖7中未展示之額外欄位。然而,為了簡單起見,針對樹700中之每一項目僅展示了三個欄位。
在一些實施例中,項目之每一指標欄位可具有對應於節點指標、NVM指標、NVM取消映射指標或NVM不可校正指標的值。舉例 而言,樹700之項目708被展示為包括節點指標720(例如,至另一節點730之指標)。作為另一實例,項目706被展示為包括可對應於NVM之實體位址的NVM指標722。
作為又一實例,項目704可包括NVM取消映射指標724,其可係至NVM之指標。然而,NVM取消映射指標724亦可指示相關聯項目704對應於經取消映射空間。作為又一實例,項目710被展示為包括NVM不可校正指標726,其亦可係至NVM之指標。NVM不可校正指標726可指示相關聯項目710對應於不可校正空間。
在一些實施例中,可在記憶體回收(「GC」)程序期間於樹700中更新指標。舉例而言,在轉譯層(例如,圖2之轉譯層214)對NVM之經程式化區塊執行GC的同時,轉譯層可在讀取區塊中之有效資料時發現資料為不可校正的。轉譯層可隨後捨棄資料,且將樹700中之相關聯指標更新為NVM不可校正指標。
藉由維持樹700中之指標的不同符記值,樹700可保持與LBA之分配狀態(例如,經映射/取消映射)及不可校正狀態相關的資訊。結果,藉由偵測樹700之指標的不同符記值,NVM介面可獲得NVM驅動程式映射(例如,圖4之NVM驅動程式映射402)。詳言之,與NVM指標相關聯之LBA可被視為可得LBA,而與NVM取消映射指標及NVM不可校正指標相關聯的LBA可被視為不可得LBA。
回看圖6,在步驟608處,NVM介面可自檔案系統(例如,圖2檔案系統之210)接收與LBA範圍之資料可得性相關的一請求。如先前結合程序500(圖5)所論述,請求可採用API命令之形式。
接著,在步驟610處,NVM介面可基於LBA之可得性狀態(例如,基於與諸如圖4之NVM驅動程式映射402之NVM驅動程式映射的比較)來判定LBA範圍之至少一部分是否為不可得的(例如,取消映射或不可校正的)。若在步驟610處NVM介面判定LBA範圍之至少一部分 為可得的,則程序600可在步驟612處結束。
若在步驟610處NVM介面改為判定LBA範圍之至少一部分為不可得的,則程序600可移動至步驟614。舉例而言,回應於來自檔案系統之與圖4之LBA範圍4之資料可得性相關的請求,NVM介面可判定,NVM驅動程式映射402中的LBA範圍4的一部分為不可得的(例如,LBA範圍4a與LBA範圍4b之間的部分)。
接著,在步驟614處,NVM介面可將指示LBA範圍之至少一部分為不可得的資訊傳輸至檔案系統。NVM介面可以任何合適方式向檔案系統通知此不可得性。在一些實施例中,NVM介面可呼叫回呼函式(例如,回呼函式可由由檔案系統發佈之原始API命令提供)。在一些狀況下,每當偵測到LBA範圍之不可得部分時,可呼叫回呼函式。或者,可呼叫回呼函式僅一次,而無關於在LBA範圍中偵測到的不可得部分之數目。
在其他實施例中,NVM介面可將至少一LBA範圍附加至與API命令相關聯的清單(例如,清單可與由檔案系統發佈之原始API命令相關聯)。NVM介面可隨後將清單傳輸至檔案系統。在一些狀況下,NVM介面可在所有不可得LBA已被發現且經附加至清單之後傳輸清單。或者,一旦有LBA範圍被添加至清單,NVM介面便可傳輸清單。
NVM介面可將與LBA不可得性相關之一般或特定資訊傳輸至檔案系統。舉例而言,NVM介面可提供與LBA範圍之不可得性相關的一般資訊。或者,NVM介面可提供與LBA範圍之何部分為不可得的相關之特定資訊。在傳輸資訊之後,程序600可於步驟612處結束。
因而,藉由重新調整檔案系統對LBA之資料可得性之觀點與在系統開機期間自資料結構獲得之LBA的可得性狀態,NVM介面能夠在較早時間將任何不一致性傳達至檔案系統。此情形使得檔案系統能夠在系統開機期間處置不一致性,而非一直等到系統變為完全操作時才 處置不一致性。
在一些實施例中,替代使用樹來獲得與LBA之可得性相關的資訊(例如,特定LBA是否為不可校正的),NVM介面可藉由直接掃描NVM(例如,藉由檢驗儲存於NVM中之一或多個旗標的狀態)來獲得NVM驅動程式映射。舉例而言,LBA之不可校正狀態可直接維持於NVM中。
現轉至圖8,展示用於處置不可校正資料之程序800。程序800可在步驟802處開始,且在步驟804處,NVM介面(例如,圖1之NVM介面118或圖2之NVM介面218)可判定,NVM之第一區塊(例如,圖1之NVM 120或圖2之NVM 220)需要進行記憶體回收。
接著,在步驟806處,NVM介面可偵測到儲存於第一區塊中之有效資料的至少一部分為不可校正的。程序800可接著移至步驟808。
在步驟808處,NVM介面可將有效資料符記化(tokenize),或將有效資料移動至NVM之第二區塊。舉例而言,在一些實施例中,NVM介面可將有效資料移動至第二區塊。在其他實施例中,NVM介面可將不可校正資料符記化。亦即,NVM介面可將有效資料之至少一部分的不可校正狀態指派為邏輯至實體映射系統中的符記值。
繼續至步驟810,NVM介面可將符記值儲存於NVM上,或設定一或多個頁中之一或多個旗標及/或第二區塊之區塊TOC,以指示有效資料之至少一部分為不可校正的。程序800可接著在步驟812處結束。
因此,藉由直接將一或多個LBA之不可校正狀態維持於NVM中,NVM介面可不必藉由此資訊來更新揮發性記憶體中的資料結構(例如,樹)。當NVM介面需要獲得NVM驅動程式映射時,NVM介面可掃描NVM之每一區塊的區塊TOC。藉由掃描區塊TOC,NVM介面可判定一或多個旗標之狀態,該等狀態可指示儲存於區塊中之對應資料(例如,使用者資料)是否為可校正的。此資訊可由NVM介面使用以 更新NVM驅動程式映射。
在其他實施例中,替代在系統開機期間執行重新調整程序,可在執行時間期間執行重新調整程序,且重新調整程序可與系統輸入/輸出請求(例如,讀取及寫入命令)相交替。亦即,在檔案系統已經掛接且開機時間消除映射已完成之後,系統可在不執行資料可得性重新調整之情況下繼續至執行時間。在一些狀況下,在執行時間期間,系統可推遲對尚未進行重新調整之某些LBA範圍的讀取命令。接著,在發生特定事件時(例如,當NVM驅動程式第一次變為閒置時,當NVM驅動程式發現不可校正資料時,及/或在記憶體回收期間),可執行資料可得性重新調整。
應理解,圖3、圖5、圖6及圖8之程序300、500、600及800可由系統(例如,圖1之電子器件100或圖2之電子器件200)中的一或多個組件執行。舉例而言,程序中之至少一些步驟可由控制電路(例如,圖1之SoC控制電路112)執行。
亦應理解,圖3、圖5、圖6及圖8之程序300、500、600及800僅為說明性的。在不脫離本發明之範疇的情況下,可移除、修改或組合該等步驟中之任一者,且可添加任何額外步驟。
為了說明且非限制而呈現了本發明之所描述實施例。
300‧‧‧用於在系統開機期間進行資料可得性重新調整的程序

Claims (18)

  1. 一種非揮發性記憶體系統,其包含:一非揮發性記憶體(NVM);及一控制器,其經操作以與該NVM通信,其中在一檔案系統之掛接時間(mount-time)之期間,該控制器經進一步操作以:接收一命令以依據該NVM之一NVM驅動程式映射來驗證邏輯區塊位址(LBAs)之一範圍是否存在於一一致狀態(consistent state)中;回應於已接收之該命令,判定在LBAs之該範圍中之每一LBA是否存在於該一致狀態中;及當判定在該範圍中之該等LBAs中之至少一者不存在於該一致狀態中,傳送該範圍包含一不一致狀態之一指示。
  2. 如請求項1之非揮發性記憶體系統,其中該命令係由該檔案系統所發佈。
  3. 如請求項1之非揮發性記憶體系統,其中LBAs之該範圍係在一檔案系統分配狀態。
  4. 如請求項1之非揮發性記憶體系統,其中若該範圍之該NVM驅動程式映射指示在該範圍中之每一LBA皆為可得(available),則該範圍存在於該一致狀態中。
  5. 如請求項1之非揮發性記憶體系統,其中若該範圍之該NVM驅動程式映射指示在該範圍中之至少一LBA為不可得(unavailable),則該範圍存在於該不一致狀態中。
  6. 如請求項5之非揮發性記憶體系統,其中一不可得之LBA係 未映射的。
  7. 如請求項5之非揮發性記憶體系統,其中一不可得之LBA係不可校正的。
  8. 如請求項1之非揮發性記憶體系統,其中該控制器係經進一步組態以:列舉該NVM驅動程式映射。
  9. 如請求項1之非揮發性記憶體系統,其中該NVM驅動程式映射維持在該NVM中之LBAs的可得性狀態。
  10. 一種使用一非揮發性記憶體系統之方法,該非揮發性記憶體系統包含一非揮發性記憶體(NVM),該方法在一檔案系統之掛接時間之期間內實施,該方法包含:接收一命令以依據該NVM之一NVM驅動程式映射來驗證邏輯區塊位址(LBAs)之一範圍是否存在於一一致狀態中;回應於已接收之該命令,判定在LBAs之該範圍中之每一LBA是否存在於該一致狀態中;及當判定在該範圍中之該等LBAs中之至少一者不存在於該一致狀態中,傳送該範圍包含一不一致狀態之一指示。
  11. 如請求項10之方法,其中該命令係由該檔案系統所發佈。
  12. 如請求項10之方法,其中LBAs之該範圍係在一檔案系統分配狀態。
  13. 如請求項10之方法,其中若該範圍之該NVM驅動程式映射指示在該範圍中之每一LBA皆為可得,則該範圍存在於該一致狀態中。
  14. 如請求項10之方法,其中若該範圍之該NVM驅動程式映射指示在該範圍中之至少一LBA為不可得,則該範圍存在於該 不一致狀態中。
  15. 如請求項14之方法,其中一不可得之LBA係未映射的。
  16. 如請求項14之方法,其中一不可得之LBA係不可校正的。
  17. 如請求項10之方法,其進一步包含:列舉該NVM驅動程式映射。
  18. 如請求項10之方法,其中該NVM驅動程式映射係維持在該NVM中之LBAs的可得性狀態。
TW102103572A 2011-12-12 2012-12-12 非揮發性記憶體系統及使用非揮發性記憶體系統之方法 TWI545434B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US13/323,347 US8756458B2 (en) 2011-12-12 2011-12-12 Mount-time reconciliation of data availability

Publications (2)

Publication Number Publication Date
TW201337563A TW201337563A (zh) 2013-09-16
TWI545434B true TWI545434B (zh) 2016-08-11

Family

ID=47469762

Family Applications (2)

Application Number Title Priority Date Filing Date
TW102103572A TWI545434B (zh) 2011-12-12 2012-12-12 非揮發性記憶體系統及使用非揮發性記憶體系統之方法
TW101147045A TWI490694B (zh) 2011-12-12 2012-12-12 判定資料可得性之方法及系統,以及記憶體介面

Family Applications After (1)

Application Number Title Priority Date Filing Date
TW101147045A TWI490694B (zh) 2011-12-12 2012-12-12 判定資料可得性之方法及系統,以及記憶體介面

Country Status (7)

Country Link
US (2) US8756458B2 (zh)
EP (1) EP2605139A3 (zh)
JP (1) JP5636034B2 (zh)
KR (2) KR101451482B1 (zh)
CN (1) CN103164342B (zh)
TW (2) TWI545434B (zh)
WO (1) WO2013090135A1 (zh)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9727570B2 (en) * 2011-06-03 2017-08-08 Apple Inc. Mount-time unmapping of unused logical addresses in non-volatile memory systems
US8756458B2 (en) 2011-12-12 2014-06-17 Apple Inc. Mount-time reconciliation of data availability
US9547457B1 (en) * 2013-09-27 2017-01-17 Veritas Technologies Llc Detection of file system mounts of storage devices
WO2015130314A1 (en) 2014-02-28 2015-09-03 Hewlett-Packard Development Company, L.P. Mapping mode shift
CN104331446B (zh) * 2014-10-28 2017-07-18 北京临近空间飞行器系统工程研究所 一种基于内存映射的海量数据预处理方法
US10824362B2 (en) 2015-03-27 2020-11-03 Hewlett Packard Enterprise Development Lp File migration to persistent memory
WO2016160027A1 (en) * 2015-04-02 2016-10-06 Hewlett Packard Enterprise Development Lp Page cache on persistent memory
CN104809037B (zh) * 2015-05-13 2018-04-13 深圳芯邦科技股份有限公司 eMMC基于特殊页的快速启动方法及装置
US9639287B1 (en) 2015-06-29 2017-05-02 Western Digital Technologies, Inc. Write command reporting
KR20180045087A (ko) 2016-10-24 2018-05-04 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
CN108932249B (zh) * 2017-05-24 2021-02-12 华为技术有限公司 一种管理文件系统的方法及装置
KR102276912B1 (ko) * 2017-06-07 2021-07-13 삼성전자주식회사 스토리지 시스템 및 이의 동작 방법
JP7042716B2 (ja) * 2018-07-26 2022-03-28 キオクシア株式会社 記憶装置及び記憶制御方法
US10802734B2 (en) * 2018-09-28 2020-10-13 Western Digital Technologies, Inc. Method for fast boot read
KR20200076531A (ko) * 2018-12-19 2020-06-29 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
US11301369B2 (en) * 2019-01-24 2022-04-12 Western Digital Technologies, Inc. Logical to physical mapping management using low-latency non-volatile memory
KR20200099882A (ko) * 2019-02-15 2020-08-25 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
CN110647476B (zh) * 2019-09-29 2021-10-15 苏州浪潮智能科技有限公司 一种固态硬盘写数据的方法、装置、设备及存储介质

Family Cites Families (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0644144A (ja) 1992-07-23 1994-02-18 Mitsubishi Electric Corp 半導体ディスク装置
US5359570A (en) 1992-11-13 1994-10-25 Silicon Storage Technology, Inc. Solid state peripheral storage device
US6931440B1 (en) * 1999-04-21 2005-08-16 Emc Corporation Method and apparatus for dynamically determining whether access to a resource connected to a computer has changed and determining how to access the resource with a new identifier
US6944742B1 (en) 2000-04-28 2005-09-13 Microsoft Corporation Compressed file system for non-volatile RAM
US7093161B1 (en) * 2002-08-16 2006-08-15 Onspec Electronic, Inc. Software recovery method for flash media with defective formatting
JP3812933B2 (ja) * 2001-04-19 2006-08-23 シャープ株式会社 ファイルシステムおよびその制御方法
US6883114B2 (en) 2001-11-08 2005-04-19 M-Systems Flash Disk Pioneers Ltd. Block device driver enabling a ruggedized file system
US20030135729A1 (en) * 2001-12-14 2003-07-17 I/O Integrity, Inc. Apparatus and meta data caching method for optimizing server startup performance
US6895464B2 (en) 2002-06-03 2005-05-17 Honeywell International Inc. Flash memory management system and method utilizing multiple block list windows
US7036040B2 (en) 2002-11-26 2006-04-25 Microsoft Corporation Reliability of diskless network-bootable computers using non-volatile memory cache
US20040255106A1 (en) * 2003-06-10 2004-12-16 Rothman Michael A. Recovery of operating system configuration data by firmware of computer system
US20050097141A1 (en) * 2003-10-30 2005-05-05 International Business Machines Corporation Autonomic filesystem recovery
US7493424B1 (en) 2004-04-30 2009-02-17 Netapp, Inc. Network storage system with shared software stack for LDMA and RDMA
JP4209820B2 (ja) 2004-07-15 2009-01-14 株式会社ハギワラシスコム メモリカードシステム及び該メモリカードシステムで使用されるライトワンス型メモリカード、ホストシステムと半導体記憶デバイスとからなるシステム
US7873782B2 (en) 2004-11-05 2011-01-18 Data Robotics, Inc. Filesystem-aware block storage system, apparatus, and method
KR100876084B1 (ko) 2007-02-13 2008-12-26 삼성전자주식회사 플래시 저장 장치로 삭제 정보를 전달할 수 있는 컴퓨팅시스템
US20080250188A1 (en) * 2004-12-22 2008-10-09 Matsushita Electric Industrial Co., Ltd. Memory Controller, Nonvolatile Storage, Nonvolatile Storage System, and Memory Control Method
US8302178B2 (en) 2005-03-07 2012-10-30 Noam Camiel System and method for a dynamic policies enforced file system for a data storage device
JP2007094900A (ja) 2005-09-29 2007-04-12 Eastman Kodak Co アクセス装置
KR20070096429A (ko) * 2006-03-24 2007-10-02 부산대학교 산학협력단 빠른 마운팅을 지원하는 낸드 플래시 메모리에 적용되는파일시스템
US8301673B2 (en) * 2006-12-29 2012-10-30 Netapp, Inc. System and method for performing distributed consistency verification of a clustered file system
JP2008191701A (ja) 2007-01-31 2008-08-21 Toshiba Corp エラー回復処理方法および情報処理装置
US7730090B2 (en) * 2007-03-09 2010-06-01 Emc Corporation Architecture for performing file system checking on an active file system
KR100895429B1 (ko) 2007-04-27 2009-05-07 중앙대학교 산학협력단 플래시 메모리 파일 장치 및 그 마운트 방법
US9396103B2 (en) 2007-06-08 2016-07-19 Sandisk Technologies Llc Method and system for storage address re-mapping for a memory device
US7694191B1 (en) * 2007-06-30 2010-04-06 Emc Corporation Self healing file system
JP2009043030A (ja) 2007-08-09 2009-02-26 Hitachi Ltd ストレージシステム
US7975171B2 (en) 2007-09-12 2011-07-05 International Business Machines Corporation Automated file recovery based on subsystem error detection results
US7818610B2 (en) * 2007-09-27 2010-10-19 Microsoft Corporation Rapid crash recovery for flash storage
US8099544B2 (en) 2008-02-29 2012-01-17 Kabushiki Kaisha Toshiba Information processing apparatus and nonvolatile semiconductor memory drive
JP4164118B1 (ja) 2008-03-26 2008-10-08 眞澄 鈴木 フラッシュメモリを用いた記憶装置
US8130554B1 (en) 2008-09-29 2012-03-06 Emc Corporation Securely erasing flash-based memory
JP5458568B2 (ja) 2008-12-25 2014-04-02 ソニー株式会社 不揮発性記憶装置、情報記録システム、及び情報記録方法
US9164700B2 (en) * 2009-03-05 2015-10-20 Sandisk Il Ltd System for optimizing the transfer of stored content in response to a triggering event
CN104077174B (zh) 2009-03-27 2018-05-01 希捷科技有限公司 用于提供存储系统逻辑块地址的数据固化的方法及系统
US8281065B2 (en) 2009-09-01 2012-10-02 Apple Inc. Systems and methods for determining the status of memory locations in a non-volatile memory
US9063886B2 (en) 2009-09-18 2015-06-23 Apple Inc. Metadata redundancy schemes for non-volatile memories
TWI426528B (zh) 2009-09-30 2014-02-11 Phison Electronics Corp 用於快閃記憶體的區塊管理方法、控制器與儲存系統
TWI408551B (zh) 2009-10-28 2013-09-11 Phison Electronics Corp 快閃記憶體儲存系統及其控制器與資料處理方法
US9110594B2 (en) * 2009-11-04 2015-08-18 Seagate Technology Llc File management system for devices containing solid-state media
JP5525605B2 (ja) * 2009-11-04 2014-06-18 株式会社日立製作所 フラッシュメモリモジュール
TWI423024B (zh) 2009-11-23 2014-01-11 Phison Electronics Corp 用於快閃記憶體的資料儲存方法及其控制器與儲存系統
US8726126B2 (en) 2010-03-23 2014-05-13 Apple Inc. Non-regular parity distribution detection via metadata tag
US8812816B2 (en) 2010-03-23 2014-08-19 Apple Inc. Garbage collection schemes for index block
US8589730B2 (en) 2010-08-31 2013-11-19 Apple Inc. Handling errors during device bootup from a non-volatile memory
US9727570B2 (en) 2011-06-03 2017-08-08 Apple Inc. Mount-time unmapping of unused logical addresses in non-volatile memory systems
US8756458B2 (en) 2011-12-12 2014-06-17 Apple Inc. Mount-time reconciliation of data availability

Also Published As

Publication number Publication date
US20130151830A1 (en) 2013-06-13
KR101451482B1 (ko) 2014-10-22
KR20130066525A (ko) 2013-06-20
WO2013090135A1 (en) 2013-06-20
EP2605139A3 (en) 2014-11-26
TW201337563A (zh) 2013-09-16
CN103164342A (zh) 2013-06-19
TWI490694B (zh) 2015-07-01
KR20130066639A (ko) 2013-06-20
TW201337561A (zh) 2013-09-16
JP5636034B2 (ja) 2014-12-03
KR101930092B1 (ko) 2018-12-17
US9104329B2 (en) 2015-08-11
US8756458B2 (en) 2014-06-17
EP2605139A2 (en) 2013-06-19
US20140297935A1 (en) 2014-10-02
CN103164342B (zh) 2016-04-06
JP2013137771A (ja) 2013-07-11

Similar Documents

Publication Publication Date Title
TWI545434B (zh) 非揮發性記憶體系統及使用非揮發性記憶體系統之方法
TWI566097B (zh) 邏輯區塊位址位元映射之使用
TWI448890B (zh) 記憶體系統、用於判定電子器件中之動態資料的方法及用於在非揮發性記憶體中執行記憶體垃圾收集之方法
JP5702348B2 (ja) 不揮発性メモリを有するシステムの非正常シャットダウンの取り扱い
TWI604305B (zh) 用於非揮發性記憶體系統之交錯序列計數器
US9239785B2 (en) Stochastic block allocation for improved wear leveling
TW201403323A (zh) 記憶體儲存裝置及其修復方法
TW202001576A (zh) 資料儲存裝置以及非揮發式記憶體控制方法

Legal Events

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