TWI490694B - 判定資料可得性之方法及系統,以及記憶體介面 - Google Patents

判定資料可得性之方法及系統,以及記憶體介面 Download PDF

Info

Publication number
TWI490694B
TWI490694B TW101147045A TW101147045A TWI490694B TW I490694 B TWI490694 B TW I490694B TW 101147045 A TW101147045 A TW 101147045A TW 101147045 A TW101147045 A TW 101147045A TW I490694 B TWI490694 B TW I490694B
Authority
TW
Taiwan
Prior art keywords
nvm
file system
data
lba
mapping
Prior art date
Application number
TW101147045A
Other languages
English (en)
Other versions
TW201337561A (zh
Inventor
Daniel J Post
Nir Jacob Wakrat
Vadim Khmelnitsky
Original Assignee
Apple Inc
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 Apple Inc filed Critical Apple Inc
Publication of TW201337561A publication Critical patent/TW201337561A/zh
Application granted granted Critical
Publication of TWI490694B publication Critical patent/TWI490694B/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
    • 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
    • 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
    • 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)
  • Human Computer Interaction (AREA)
  • Library & Information Science (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驅動程式映射可經重疊,且彼此進行比較以便曝露任何差異。
本發明之以上及其他態樣及優點在結合隨附圖式考慮以 下【實施方式】之後將變得更加顯而易見,在該等圖式中類似參考字元始終指代類似部分。
提供用於資料可得性之掛接時間重新調整的系統及方法。在系統開機期間,可列舉一非揮發性記憶體(「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僅為說明性的。在不脫離本發明之範疇的情況下,可移除、修改或組合該等步驟中之任一者,且可添加任何額外步驟。
為了說明且非限制而呈現了本發明之所描述實施例。
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為根據本發明之各種實施例的用於處置不可校正資料之說明性程序的流程圖。
300‧‧‧用於在系統開機期間進行資料可得性重新調整的程序

Claims (20)

  1. 一種判定資料可得性之方法,該方法包含:在系統開機期間掃描一非揮發性記憶體(「NVM」)以列舉一NVM驅動程式;基於該所列舉之NVM驅動程式獲得一NVM驅動程式映射;掛接一檔案系統;自該檔案系統接收與至少一邏輯區塊位址(「LBA」)範圍之資料可得性相關的一請求;基於該NVM驅動程式映射判定該至少一LBA範圍之至少一部分是否為不可得的;回應於判定該至少一LBA範圍之該至少一部分為不可得的,將指示該至少一LBA範圍之該至少一部分為不可得的資訊傳輸至該檔案系統;在該系統開機期間起始一恢復程序以復原與該至少一LBA範圍之該至少一部分相關聯的資料;及藉由呼叫一回呼函式來將該資訊傳輸至該檔案系統。
  2. 如請求項1之方法,其中該NVM驅動程式映射係一位元映射、一映射表及一範圍清單中的至少一者。
  3. 如請求項1之方法,其中該掃描進一步包含:讀取儲存於該NVM中之內容脈絡資訊,其中該內容脈絡資訊包含邏輯至實體映射;及將該等邏輯至實體映射載入至揮發性記憶體中。
  4. 如請求項3之方法,其進一步包含: 識別具有尚未藉由該內容脈絡資訊擷取之一邏輯至實體映射之至少一區塊;及掃描該至少一區塊之一區塊目錄(「TOC」)以更新該揮發性記憶體中的該等邏輯至實體映射。
  5. 如請求項4之方法,其進一步包含基於該等經更新之邏輯至實體映射來獲得該NVM驅動程式映射。
  6. 如請求項1之方法,其中該NVM包含複數個區塊。
  7. 如請求項6之方法,其進一步包含:對於該複數個區塊中之每一區塊,掃描該區塊之一區塊TOC以判定旗標之狀態,其中該等旗標之該等狀態指示儲存於該區塊中之對應資料是否為可校正的;及基於該等旗標之該等狀態來更新該NVM驅動程式映射。
  8. 如請求項1之方法,其進一步包含:將該至少一LBA範圍附加至一清單;及將該清單傳輸至該檔案系統。
  9. 一種系統,其包含:一非揮發性記憶體(「NVM」);一記憶體介面,其可操作以維持一NVM驅動程式映射;及一檔案系統,其可操作以:在系統開機期間判定一檔案系統分配狀態;對於該檔案系統分配狀態中之每一可得邏輯區塊位址(「LBA」)範圍,將一應用程式設計介面(「API」) 命令傳輸至該記憶體介面以判定該NVM驅動程式映射是否具有一一致狀態;自該記憶體介面接收指示至少一LBA範圍具有一不一致狀態的資訊;及在該系統開機期間調用一原則以復原與該至少一LBA範圍相關聯的資料,其中用於復原該資料之該原則係基於與該至少一LBA範圍相關聯的一檔案路徑。
  10. 如請求項9之系統,其中該檔案系統可操作以儲存該檔案系統分配狀態作為一位元映射、一映射表及一範圍清單中的至少一者。
  11. 如請求項9之系統,其中該檔案系統可操作以:判定與該至少一LBA範圍相關聯的該資料為臨時資料;及停止復原該資料。
  12. 如請求項9之系統,其中該檔案系統可操作以:判定與該至少一LBA範圍相關聯的該資料為與該檔案系統相關聯之內部資料;使用該內部資料來恢復該資料;及重新掛接該所恢復資料。
  13. 如請求項9之系統,其中該檔案系統可操作以:判定與該至少一LBA範圍相關聯的該資料為應用程式產生之資料;調用與一特定應用程式相關聯之一原則以恢復該資料;及 重新掛接該所恢復資料。
  14. 一種可操作以在器件開機期間執行資料可得性重新調整之記憶體介面,該記憶體介面包含控制電路,該控制電路可操作以:自儲存於揮發性記憶體中之一資料結構獲得邏輯區塊位址(「LBA」)之可得性狀態;在一電子器件之開機期間,重新調整一檔案系統對該等LBA之資料可得性之觀點與自該資料結構獲得之該等LBA的該等可得性狀態;及將該檔案系統之觀點與該等LBA之該等可得性狀態之間的不一致性傳達至該檔案系統,藉此使得該檔案系統能夠在該電子器件之該開機期間處置該等不一致性,其中該不一致性係使用一回呼函式而傳達。
  15. 如請求項14之記憶體介面,其中該資料結構為儲存於該揮發性記憶體中之一樹。
  16. 如請求項14之記憶體介面,其中該控制電路可操作以偵測該樹結構是否包含至該NVM之取消映射指標。
  17. 如請求項14之記憶體介面,其中該控制電路可操作以偵測該樹結構是否包含至該NVM之不可校正指標。
  18. 如請求項14之記憶體介面,其中該控制電路可操作以:自該檔案系統接收與一邏輯區塊位址(「LBA」)範圍之資料可得性相關的一請求;及基於該等LBA之該等可得性狀態判定該LBA範圍之至少一部分是否為不可得的。
  19. 如請求項18之記憶體介面,其中該控制電路可操作以:判定該LBA範圍之該至少一部分為不可得的;及將指示該LBA範圍之該至少一部分為不可得的資訊傳輸至該檔案系統。
  20. 如請求項18之記憶體介面,其中該控制電路可操作以判定該LBA範圍之該至少一部分係取消映射及不可校正中的至少一種情況。
TW101147045A 2011-12-12 2012-12-12 判定資料可得性之方法及系統,以及記憶體介面 TWI490694B (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
TW201337561A TW201337561A (zh) 2013-09-16
TWI490694B true TWI490694B (zh) 2015-07-01

Family

ID=47469762

Family Applications (2)

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

Family Applications After (1)

Application Number Title Priority Date Filing Date
TW102103572A TWI545434B (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) TWI490694B (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
US10824342B2 (en) 2014-02-28 2020-11-03 Hewlett Packard Enterprise Development Lp Mapping mode shift between mapping modes that provides continuous application access to storage, wherein address range is remapped between said modes during data migration and said address range is also utilized bypass through instructions for direct access
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
US10684954B2 (en) 2015-04-02 2020-06-16 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 苏州浪潮智能科技有限公司 一种固态硬盘写数据的方法、装置、设备及存储介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080307192A1 (en) * 2007-06-08 2008-12-11 Sinclair Alan W Method And System For Storage Address Re-Mapping For A Memory Device
US20090222688A1 (en) * 2008-02-29 2009-09-03 Kabushiki Kaisha Toshiba Information Processing Apparatus and Nonvolatile Semiconductor Memory Drive
US7818610B2 (en) * 2007-09-27 2010-10-19 Microsoft Corporation Rapid crash recovery for flash storage
TW201040760A (en) * 2009-03-05 2010-11-16 Sandisk Il Ltd System for optimizing the transfer of stored content in response to a triggering event
US20110055454A1 (en) * 2009-09-01 2011-03-03 Apple Inc. Systems and methods for determining the status of memory locations in a non-volatile memory
US20110106804A1 (en) * 2009-11-04 2011-05-05 Seagate Technology Llc File management system for devices containing solid-state media
US7975171B2 (en) * 2007-09-12 2011-07-05 International Business Machines Corporation Automated file recovery based on subsystem error detection results

Family Cites Families (40)

* 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
WO2006095335A2 (en) 2005-03-07 2006-09-14 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 중앙대학교 산학협력단 플래시 메모리 파일 장치 및 그 마운트 방법
US7694191B1 (en) * 2007-06-30 2010-04-06 Emc Corporation Self healing file system
JP2009043030A (ja) 2007-08-09 2009-02-26 Hitachi Ltd ストレージシステム
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 ソニー株式会社 不揮発性記憶装置、情報記録システム、及び情報記録方法
KR101695364B1 (ko) 2009-03-27 2017-01-11 엘에스아이 코포레이션 저장 시스템 로컬 블록 어드레스 할당해제 관리 및 데이터 강화
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 快閃記憶體儲存系統及其控制器與資料處理方法
US20110231713A1 (en) * 2009-11-04 2011-09-22 Hitachi, Ltd. Flash memory module
TWI423024B (zh) 2009-11-23 2014-01-11 Phison Electronics Corp 用於快閃記憶體的資料儲存方法及其控制器與儲存系統
US8812816B2 (en) 2010-03-23 2014-08-19 Apple Inc. Garbage collection schemes for index block
US8726126B2 (en) 2010-03-23 2014-05-13 Apple Inc. Non-regular parity distribution detection via metadata tag
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

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080307192A1 (en) * 2007-06-08 2008-12-11 Sinclair Alan W Method And System For Storage Address Re-Mapping For A Memory Device
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
US20090222688A1 (en) * 2008-02-29 2009-09-03 Kabushiki Kaisha Toshiba Information Processing Apparatus and Nonvolatile Semiconductor Memory Drive
TW201040760A (en) * 2009-03-05 2010-11-16 Sandisk Il Ltd System for optimizing the transfer of stored content in response to a triggering event
US20110055454A1 (en) * 2009-09-01 2011-03-03 Apple Inc. Systems and methods for determining the status of memory locations in a non-volatile memory
US20110106804A1 (en) * 2009-11-04 2011-05-05 Seagate Technology Llc File management system for devices containing solid-state media

Also Published As

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

Similar Documents

Publication Publication Date Title
TWI490694B (zh) 判定資料可得性之方法及系統,以及記憶體介面
TWI566097B (zh) 邏輯區塊位址位元映射之使用
US8949512B2 (en) Trim token journaling
TWI511151B (zh) 用於獲得及使用非揮發性記憶體健康資訊之系統及方法
TWI448890B (zh) 記憶體系統、用於判定電子器件中之動態資料的方法及用於在非揮發性記憶體中執行記憶體垃圾收集之方法
JP3906825B2 (ja) 計算機システム、計算機システム起動方法およびプログラム
EP2570927B1 (en) Handling unclean shutdowns for a system having non-volatile memory
US9239785B2 (en) Stochastic block allocation for improved wear leveling
US20110213945A1 (en) Data partitioning scheme for non-volatile memories
US20200183677A1 (en) Boot rom update method and boot-up method of embedded system
CN109074308B (zh) 适应性的块转换表(btt)
TW201403323A (zh) 記憶體儲存裝置及其修復方法
KR20150058092A (ko) 네트워크 부트 시스템
US10817215B2 (en) Data storage system and control method for non-volatile memory

Legal Events

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