TWI616807B - 資料寫入方法以及儲存控制器 - Google Patents
資料寫入方法以及儲存控制器 Download PDFInfo
- Publication number
- TWI616807B TWI616807B TW105137591A TW105137591A TWI616807B TW I616807 B TWI616807 B TW I616807B TW 105137591 A TW105137591 A TW 105137591A TW 105137591 A TW105137591 A TW 105137591A TW I616807 B TWI616807 B TW I616807B
- Authority
- TW
- Taiwan
- Prior art keywords
- write
- entity
- data
- metadata
- unit
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/1865—Transactional file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/50—Adding; Subtracting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/52—Multiplying; Dividing
- G06F7/535—Dividing only
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/535—Indexing scheme relating to groups G06F7/535 - G06F7/5375
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7207—Details relating to flash memory management management of metadata or control data
Abstract
一種資料寫入方法,其包括根據第一寫入指令寫入第一寫入資料至儲存裝置中的第一實體子單元;在寫入所述第一寫入資料後,記錄且寫入對應所述第一寫入資料的第一元資料至儲存裝置;寫入第二寫入資料至所述儲存裝置中的第二實體子單元;在寫入所述第二寫入資料後,記錄且寫入對應所述第二寫入資料的第二元資料至儲存裝置。若所述第二實體子單元與所述第一實體子單元緊鄰並且第二寫入資料根據第二寫入指令被寫入,設定第二元資料的第二寫入識別碼與第一元資料的第一寫入識別碼不同;以及若特殊事件發生,根據第二元資料來判斷該第二寫入資料是否為有效或無效。
Description
本發明是有關於一種資料寫入方法,且特別是有關於一種適用於配置有可複寫式非揮發性記憶體模組的儲存裝置的資料寫入方法與儲存控制器。
一般來說,原子寫入指令(Atomic write command)可用來達到確保對應原子寫入指令的寫入資料可完整地被程式化至儲存裝置的功效。
然而,目前已知的執行原子寫入指令的方法,針對突然斷電事件的恢復操作,會需藉由主機應用程式的支援、利用獨特的指令識別碼序列或是有電力備援方案的記憶體,才可以達到原子寫入指令的功效。如此一來,會造成大量的資源與時間的耗費,進而使工作效率降低。因此,如何耗費最低資源且有效率地執行原子寫入指令,同時也可在面臨突然斷電事件時,相應地檢查出寫入資料的有效性,進而判斷是否成功執行所述原子寫入指令,是本領域人員研究的課題之一。
本發明提供一種資料寫入方法與儲存控制器,可有效率地執行原子寫入指令且記錄對應原子寫入指令的元資料,以在特殊事件發生後,判斷對應原子寫入指令的寫入資料是否為有效或無效。
本發明的一實施例提供一種資料寫入方法,適用於配置有可複寫式非揮發性記憶體模組的儲存裝置,其中所述可複寫式非揮發性記憶體模組具有多個實體單元,並且所述多個實體單元的每一個實體單元具有多個實體子單元。所述方法包括根據第一寫入指令寫入第一寫入資料至所述可複寫式非揮發性記憶體模組中的第一實體子單元;在寫入所述第一寫入資料後,記錄對應所述第一寫入資料的第一元資料,並且寫入所述第一元資料至所述可複寫式非揮發性記憶體模組,其中所述第一元資料包括第一寫入識別碼、第一寫入大小以及第一單元跨越標記,其中所述寫入識別碼僅為第一數值或第二數值,並且所述第一數值不同於所述第二數值;寫入第二寫入資料至所述可複寫式非揮發性記憶體模組中的第二實體子單元;在寫入所述第二寫入資料後,記錄對應所述第二寫入資料的第二元資料,並且寫入所述第二元資料至所述可複寫式非揮發性記憶體模組,其中所述第二元資料包括第二寫入識別碼、第二寫入大小以及第二單元跨越標記,其中若所述第二實體子單元與所述第一實體子單元緊鄰並且所述第二寫入資料根據不同於所述第一寫入指令的第二寫入指令被寫入,設定所述第二元資料的所述第二寫入識別碼與所述第一元資料的所述第一寫入識別碼不同,其中若所述第二寫入資料根據所述第一寫入指令被寫入,設定所述第二元資料的所述第二寫入識別碼相同於所述第一元資料的所述第一寫入識別碼;以及若特殊事件發生,根據所述第二寫入資料與所述第二元資料來判斷第二寫入資料是否為有效或無效。
本發明的一實施例提供用於控制配置有可複寫式非揮發性記憶體模組的儲存裝置的一種儲存控制器。所述儲存控制器包括連接介面電路、記憶體介面控制電路、處理器以及資料管理電路。連接介面電路用以耦接至主機系統。記憶體介面控制電路用以耦接至所述可複寫式非揮發性記憶體模組,其中所述可複寫式非揮發性記憶體模組具有多個實體單元,並且所述多個實體單元的每一個實體單元具有多個實體子單元。處理器耦接至所述連接介面電路及所述記憶體介面控制電路。資料管理電路耦接至所述處理器、所述連接介面電路及所述記憶體介面控制電路。所述處理器根據第一寫入指令指示該記憶體介面控制電路寫入第一寫入資料至所述可複寫式非揮發性記憶體模組中的第一實體子單元。並且,在寫入所述第一寫入資料後,所述資料管理電路記錄對應所述第一寫入資料的第一元資料,並且所述處理器指示所述記憶體介面控制電路寫入所述第一元資料至所述可複寫式非揮發性記憶體模組,其中所述第一元資料包括第一寫入識別碼、第一寫入大小以及第一單元跨越標記,其中所述寫入識別碼僅為第一數值或第二數值,並且所述第一數值不同於所述第二數值。此外,所述處理器指示所述記憶體介面控制電路寫入第二寫入資料至所述可複寫式非揮發性記憶體模組中的第二實體子單元。並且,在寫入所述第二寫入資料後,所述資料管理電路記錄對應所述第二寫入資料的第二元資料,並且所述處理器指示所述記憶體介面控制電路寫入所述第二元資料至所述可複寫式非揮發性記憶體模組,其中所述第二元資料包括第二寫入識別碼、第二寫入大小以及第二單元跨越標記,其中若所述第二實體子單元與所述第一實體子單元緊鄰並且所述第二寫入資料根據不同於所述第一寫入指令的第二寫入指令被寫入,所述資料管理電路設定所述第二元資料的所述第二寫入識別碼與所述第一元資料的所述第一寫入識別碼不同,其中若所述第二寫入資料根據所述第一寫入指令被寫入,所述資料管理電路設定所述第二元資料的所述第二寫入識別碼相同於所述第一元資料的所述第一寫入識別碼。若特殊事件發生,所述處理器根據所述第二寫入資料與所述第二元資料來判斷第二寫入資料是否為有效或無效。
基於上述,本發明實施例所提供的資料寫入方法以及儲存控制器,可將寫入資料寫入至可複寫式非揮發性記憶體模組後,寫入對應所述寫入資料的具有特定設定方式的元資料,以在特殊事件發生後,根據所述寫入資料與所述元資料來判斷第二寫入資料是否為有效或無效,以對應地執行資料恢復操作。
為讓本發明的上述特徵和優點能更明顯易懂,下文特舉實施例,並配合所附圖式作詳細說明如下。
在本實施例中,儲存裝置包括可複寫式非揮發性記憶體模組(rewritable non-volatile memory module)與儲存裝置控制器(亦稱,儲存控制器或儲存控制電路)。此外,儲存裝置是與主機系統一起使用,以使主機系統可將資料寫入至儲存裝置或從儲存裝置中讀取資料。
圖1是根據本發明的一實施例所繪示的主機系統及儲存裝置的方塊示意圖。
請參照圖1,主機系統(Host System)10包括處理器(Processor)110、主機記憶體(Host Memory)120及資料傳輸介面電路(Data Transfer Interface Circuit)130。在本實施例中,資料傳輸介面電路130耦接(亦稱,電性連接)至處理器110與主機記憶體120。在另一實施例中,處理器110、主機記憶體120與資料傳輸介面電路130之間利用系統匯流排(System Bus)彼此耦接。
儲存裝置20包括儲存控制器(Storage Controller)210、可複寫式非揮發性記憶體模組(Rewritable Non-Volatile Memory Module)220及連接介面電路(Connection Interface Circuit)230。其中,儲存控制器210包括處理器211、資料管理電路(Data Transfer Management Circuit)212與記憶體介面控制電路(Memory Interface Control Circuit)213。
在本實施例中,主機系統10是透過資料傳輸介面電路130與儲存裝置20的連接介面電路230耦接至儲存裝置20來進行資料的存取操作。例如,主機系統10可經由資料傳輸介面電路130將資料儲存至儲存裝置20或從儲存裝置20中讀取資料。
在本實施例中,處理器110、主機記憶體120及資料傳輸介面電路130可設置在主機系統10的主機板上。資料傳輸介面電路130的數目可以是一或多個。透過資料傳輸介面電路130,主機板可以經由有線或無線方式耦接至儲存裝置20。儲存裝置20可例如是隨身碟、記憶卡、固態硬碟(Solid State Drive, SSD)或無線記憶體儲存裝置。無線記憶體儲存裝置可例如是近距離無線通訊(Near Field Communication, NFC)記憶體儲存裝置、無線傳真(WiFi)記憶體儲存裝置、藍牙(Bluetooth)記憶體儲存裝置或低功耗藍牙記憶體儲存裝置(例如,iBeacon)等以各式無線通訊技術為基礎的記憶體儲存裝置。此外,主機板也可以透過系統匯流排耦接至全球定位系統(Global Positioning System, GPS)模組、網路介面卡、無線傳輸裝置、鍵盤、螢幕、喇叭等各式I/O裝置。
在本實施例中,資料傳輸介面電路130與連接介面電路230是相容於高速周邊零件連接介面(Peripheral Component Interconnect Express, PCI Express)標準的介面電路。並且,資料傳輸介面電路130與連接介面電路230之間是利用快速非揮發性記憶體介面標準(Non-Volatile Memory express,NVMe)通訊協定來進行資料的傳輸。
然而,必須瞭解的是,本發明不限於此,資料傳輸介面電路130與連接介面電路230亦可以是符合並列先進附件(Parallel Advanced Technology Attachment, PATA)標準、電氣和電子工程師協會(Institute of Electrical and Electronic Engineers, IEEE)1394標準、序列先進附件(Serial Advanced Technology Attachment, SATA)標準、通用序列匯流排(Universal Serial Bus, USB)標準、SD介面標準、超高速一代(Ultra High Speed-I, UHS-I)介面標準、超高速二代(Ultra High Speed-II, UHS-II)介面標準、記憶棒(Memory Stick, MS)介面標準、多晶片封裝(Multi-Chip Package)介面標準、多媒體儲存卡(Multi Media Card, MMC)介面標準、eMMC介面標準、通用快閃記憶體(Universal Flash Storage, UFS)介面標準、eMCP介面標準、CF介面標準、整合式驅動電子介面(Integrated Device Electronics, IDE)標準或其他適合的標準。此外,在另一實施例中,連接介面電路230可與儲存控制器210封裝在一個晶片中,或者連接介面電路230是佈設於一包含儲存控制器210之晶片外。
在本實施例中,主機記憶體120用以暫存處理器110所執行的指令或資料。例如,在本範例實施例中,主機記憶體120可以是動態隨機存取記憶體(Dynamic Random Access Memory,DRAM)、靜態隨機存取記憶體(Static Random Access Memory,SRAM)等。然而,必須瞭解的是,本發明不限於此,主機記憶體120也可以是其他適合的記憶體。
儲存控制器210用以執行以硬體型式或韌體型式實作的多個邏輯閘或控制指令並且根據主機系統10的指令在可複寫式非揮發性記憶體模組220中進行資料的寫入、讀取與抹除等運作。
更詳細來說,儲存控制器210中的處理器211為具備運算能力的硬體,其用以控制儲存控制器210的整體運作。具體來說,處理器211具有多個控制指令,並且在儲存裝置20運作時,此些控制指令會被執行以進行資料的寫入、讀取與抹除等運作。
值得一提的是,在本實施例中,處理器110與處理器211例如是中央處理單元(Central Processing Unit,CPU)、微處理器(micro-processor)、或是其他可程式化之處理單元(Microprocessor)、數位訊號處理器(Digital Signal Processor,DSP)、可程式化控制器、特殊應用積體電路(Application Specific Integrated Circuits,ASIC)、可程式化邏輯裝置(Programmable Logic Device,PLD)或其他類似電路元件,本發明並不限於此。
在一實施例中,儲存控制器210還具有唯讀記憶體(未繪示)及隨機存取記憶體(未繪示)。特別是,此唯讀記憶體具有開機碼(boot code),並且當儲存控制器210被致能時,處理器211會先執行此開機碼來將儲存於可複寫式非揮發性記憶體模組220中之控制指令載入至儲存控制器210的隨機存取記憶體中。之後,處理器211會運轉此些控制指令以進行資料的寫入、讀取與抹除等運作。在另一實施例中,處理器211的控制指令亦可以程式碼型式儲存於可複寫式非揮發性記憶體模組220的特定區域,例如,可複寫式非揮發性記憶體模組220中專用於存放系統資料的實體儲存單元中。
在本實施例中,如上所述,儲存控制器210還包括資料管理電路212與記憶體介面控制電路213。應注意的是,儲存控制器220各部件所執行的操作亦可視為儲存控制器220所執行的操作。
其中,資料管理電路212耦接至處理器211、記憶體介面控制電路213與連接介面電路230。資料管理電路212用以接受處理器211的指示來進行資料的傳輸。例如,經由連接介面電路230從主機系統10(如,主機記憶體120)讀取資料,並且將所讀取的資料經由記憶體介面控制電路213寫入至可複寫式非揮發性記憶體模組220中(如,根據來自主機系統10的寫入指令來進行寫入操作)。又例如,經由記憶體介面控制電路213從可複寫式非揮發性記憶體模組220讀取資料,並且將所讀取的資料經由連接介面電路230寫入至主機系統10(如,主機記憶體120)中(如,根據來自主機系統10的讀取指令來進行讀取操作)。此外,在本實施例中,寫入操作可區分為對應普通寫入指令(Normal Write Command)的普通寫入操作(Normal Write Operation)與對應原子寫入指令(Atomic Write Command)的原子寫入操作(Atomic Write Operation)。在另一實施例中,資料管理電路212亦可整合至處理器211中。以下會再配合多個圖式與實施例來詳細說明本發明中資料管理電路212的功能。
記憶體介面控制電路213用以接受處理器211的指示,配合資料管理電路212來進行對於可複寫式非揮發性記憶體模組220的寫入(亦稱,程式化,Programming)操作、讀取操作或抹除操作。
舉例來說,處理器211可執行寫入指令序列(如,普通寫入指令序列或原子寫入指令序列),以指示記憶體介面控制電路213將資料寫入至可複寫式非揮發性記憶體模組220中;處理器211可執行讀取指令序列,以指示記憶體介面控制電路213從可複寫式非揮發性記憶體模組220中讀取資料;處理器211可執行抹除指令序列,以指示記憶體介面控制電路213對可複寫式非揮發性記憶體模組220進行抹除操作。寫入指令序列、讀取指令序列及抹除指令序列可各別包括一或多個程式碼或指令碼並且用以指示對可複寫式非揮發性記憶體模組220執行相對應的寫入、讀取及抹除等操作。在一實施例中,處理器211還可以下達其他類型的指令序列給記憶體介面控制電路213,以對可複寫式非揮發性記憶體模組220執行相對應的操作。
此外,欲寫入至可複寫式非揮發性記憶體模組220的資料會經由記憶體介面控制電路213轉換為可複寫式非揮發性記憶體模組220所能接受的格式。具體來說,若處理器211要存取可複寫式非揮發性記憶體模組220,處理器211會傳送對應的指令序列給記憶體介面控制電路213以指示記憶體介面控制電路213執行對應的操作。例如,這些指令序列可包括指示寫入資料的寫入指令序列、指示讀取資料的讀取指令序列、指示抹除資料的抹除指令序列、以及用以指示各種記憶體操作(例如,改變讀取電壓準位或執行垃圾回收程序等等)的相對應的指令序列。這些指令序列可包括一或多個訊號,或是在匯流排上的資料。這些訊號或資料可包括指令碼或程式碼。例如,在讀取指令序列中,會包括讀取的辨識碼、記憶體位址等資訊。
可複寫式非揮發性記憶體模組220是耦接至儲存控制器210(記憶體介面控制電路213)並且用以儲存主機系統10所寫入之資料。可複寫式非揮發性記憶體模組220可以是單階記憶胞(Single Level Cell,SLC)NAND型快閃記憶體模組(即,一個記憶胞中可儲存1個位元的快閃記憶體模組)、多階記憶胞(Multi Level Cell,MLC)NAND型快閃記憶體模組(即,一個記憶胞中可儲存2個位元的快閃記憶體模組)、複數階記憶胞(Triple Level Cell,TLC)NAND型快閃記憶體模組(即,一個記憶胞中可儲存3個位元的快閃記憶體模組)、其他快閃記憶體模組或其他具有相同特性的記憶體模組。可複寫式非揮發性記憶體模組220中的記憶胞是以陣列的方式設置。
在本實施例中,可複寫式非揮發性記憶體模組220的記憶胞會構成多個實體程式化單元(亦稱,實體子單元),並且此些實體程式化單元會構成多個實體區塊(亦稱,實體抹除單元或實體單元)。具體來說,同一條字元線(或同一個字元線層)上的記憶胞會組成一或多個實體程式化單元。若每一個記憶胞被用以儲存2個以上的位元,則同一條字元線(或同一個字元線層)上的實體程式化單元至少可被分類為一個下(lower)實體程式化單元與一個上(upper)實體程式化單元。
在本實施例中,是以實體子單元作為寫入(程式化)資料的最小單位。實體單元為抹除之最小單位,即,每一實體單元含有最小數目之一併被抹除之記憶胞。每一實體單元會具有多個實體子單元。實體子單元可為實體頁面(page)或是實體扇(sector)。在本實施例中,實體子單元包括資料位元區與冗餘(redundancy)位元區。資料位元區用以儲存使用者資料,而冗餘位元區用以儲存系統資料。系統資料例如為錯誤更正碼、錯誤檢查碼或元資料(Meta Data)。以下會再說明關於元資料的細節。然而,本發明不限於此。例如,在另一實施例中,亦可變化本實施例所述的資料傳輸方法,應用至以實體單元作為寫入資料的最小儲存單位的可複寫式非揮發性記憶體模組220。
在以下實施例中,是以一個實體區塊作為一個實體單元的範例。然而,在另一實施例中,一個實體單元亦可以是指任意數目的記憶胞組成,視實務上的需求而定。此外,必須瞭解的是,當儲存控制器211對可複寫式非揮發性記憶體模組220中的記憶胞(或實體單元)進行分組以執行對應的管理操作時,此些記憶胞(或實體單元)是被邏輯地分組,而其實際位置並未更動。
儲存控制器210會配置多個邏輯單元給可複寫式非揮發性記憶體模組220。主機系統10是透過所配置的邏輯單元來存取儲存在多個實體單元中的使用者資料。在此,每一個邏輯單元可以是由一或多個邏輯位址組成。例如,邏輯單元可以是邏輯區塊(logical block)、邏輯頁面(logical page)或是邏輯扇區(logical sector)。一個邏輯單元可以是映射至一或多個實體單元,其中實體單元可以是一或多個實體位址、一或多個實體扇、一或多個實體程式化單元或者一或多個實體抹除單元。在本實施例中,邏輯單元為邏輯區塊,並且邏輯子單元為邏輯頁面。每一邏輯單元具有多個邏輯子單元。
此外,儲存控制器210會建立邏輯轉實體位址映射表(logical to physical address mapping table)與實體轉邏輯位址映射表(physical to logical address mapping table),以記錄配置給可複寫式非揮發性記憶體模組220的邏輯單元(如,邏輯區塊、邏輯頁面或邏輯扇區)與實體單元(如,實體抹除單元、實體程式化單元、實體扇區)之間的映射關係。換言之,儲存控制器210可藉由邏輯轉實體位址映射表來查找一邏輯單元所映射的實體單元,並且儲存控制器210可藉由實體轉邏輯位址映射表來查找一實體單元所映射的邏輯單元。然而,上述有關邏輯單元與實體單元映射的技術概念為本領域技術人員之慣用技術手段,不再贅述於此。
在一實施例中,儲存控制器210還包括緩衝記憶體與電源管理電路。緩衝記憶體是耦接至處理器211並且用以暫存來自於主機系統10的資料與指令、來自於可複寫式非揮發性記憶體模組220的資料或其他用以管理儲存裝置20的系統資料。電源管理電路是耦接至處理器211並且用以控制儲存裝置20的電源。
如上所述,在本實施例中,寫入指令可區分為普通寫入指令與原子寫入指令。普通寫入指令用以指示將資料寫入至1個邏輯子單元。儲存控制器210根據普通寫入指令執行普通寫入操作,將資料程式化至1個實體子單元。接著,在本實施例中,反應於所述資料被程式化至實體子單元,儲存控制器210會儲存對應所述普通寫入指令的元資料,以記錄所述資料是否已被程式化至所述實體子單元。最後,儲存控制器210會更新邏輯轉實體位址映射表與實體轉邏輯位址映射表,或是更新邏輯轉實體位址子映射表與實體轉邏輯位址子映射表,以記錄用以儲存所述資料的邏輯位址與實體位址之間的映射關係。如此一來,普通寫入操作才算是被完成。
圖2是根據本發明的一實施例所繪示的元資料的資料結構的示意圖。請參照圖2,在本實施例中,所述元資料300的資料結構包括三個欄位(Fields)300(1)、300(2)、300(3),其中欄位300(1)記錄寫入識別碼(Write ID,W_ID);欄位300(2)記錄寫入大小(Write Size,W_Size);欄位300(3)記錄單元跨越標記(Unit Crossing Flag,UCF)。若實體單元為實體區塊,所述單元跨越標記亦可稱為區塊跨越標記(Block Crossing Flag,BCF)。
在本實施例中,對應普通寫入指令的元資料所記錄的內容相較於對應原子寫入指令的元資料簡單。具體來說,對應普通寫入指令的元資料400的寫入大小400(2)的數值固定被記錄為“1”。此外,對應普通寫入指令的元資料400的寫入識別碼400(1)或單元跨越標記400(2)的數值是預先記錄的特定數值或特定字元。例如,在本實施例中,對應普通寫入指令的元資料400的寫入識別碼400(1)或單元跨越標記400(2)皆記錄“0”。又例如,在另一實施例中,對應普通寫入指令的元資料的寫入識別碼或單元跨越標記可不記錄任何數值。
然而,在本實施例中,對應原子寫入指令的元資料的每一欄位的數值會依據特定規則來被記錄。以下會配合多個圖式與實施例來詳細說明本發明的對應原子寫入指令的元資料的記錄方式、對應的資料(原子)寫入方法以及對應的資料恢復操作。
圖3是根據本發明的一實施例所繪示的資料寫入方法的流程圖。請參照圖3,在步驟S310中,處理器211根據第一寫入指令指示記憶體介面控制電路213寫入第一寫入資料至所述可複寫式非揮發性記憶體模組中的第一實體子單元。具體來說,主機系統10會對儲存裝置20的儲存控制器210下達多個讀取指令或寫入指令,以存取儲存裝置20中的資料。儲存控制器210在接收(或讀取)到主機系統10所下達的讀取/寫入指令後,會對儲存裝置20中的可複寫式非揮發性記憶體模組220進行資料的讀取/寫入操作。
舉例來說,在一實施例中,假設主機系統10的處理器110會在主機記憶體120中劃分暫存資料區及指令佇列區(Command Queue Area),並且儲存控制器210還包括指令管理單元(Command management unit)。指令管理單元例如是具有指令緩衝器(Command Buffer)、指令狀態登錄器(Command Status Register)與指令獲取電路(Command Fetching Circuit)的電路元件。主機系統10會將所述讀取指令或寫入指令儲存至主機記憶體120中的命令佇列區,指令獲取電路會從命令佇列區讀取多個讀取/寫入指令,將所讀取的指令儲存至指令緩衝器。處理器211可根據韌體或是軟體的預定規則來選擇要處理的指令。接著,處理器211會執行被選擇的指令,並且根據所選擇的指令(如,快速非揮發性記憶體輸入輸出指令)指示記憶體介面控制電路213對可複寫式非揮發性記憶體模組220來進行對應的資料傳輸操作。
在本實施例中,第一寫入指令為一原子寫入指令(亦稱,第一原子寫入指令),並且所述原子寫入指令指示(經由一原子寫入操作)將第一寫入資料寫入至第一邏輯子單元中。當處理器211執行此第一寫入指令時,處理器211會從可複寫式非揮發性記憶體模組220的多個實體單元中選擇一個可被寫入的實體單元作為開放實體單元,並且將第一寫入資料程式化至所述開放實體單元的實體子單元。所述原子寫入操作是表示所述原子寫入指令所指示的欲儲存的所有寫入資料皆完成儲存(寫入/程式化)時,整個原子寫入操作才算是完成。換句話說,若是一原子寫入指令指示寫入2筆寫入資料,但其中1筆寫入資料不能儲存(寫入/程式化)至可複寫式非揮發性記憶體模組(或是其中1筆寫入資料在程式化的過程中失敗),對應此原子寫入指令的原子寫入操作視為失敗,之前已經儲存(寫入/程式化)至可複寫式非揮發性記憶體模組220的另1筆寫入資料亦被判斷為(被標記為)無效。
接著,處理器211會根據原子寫入指令所指示的欲寫入的邏輯子單元之前是否有儲存有效資料來判斷是否要重新執行一次對應此原子寫入指令的原子寫入操作。也就是說,對應一原子寫入操作的所有寫入資料應該要皆成功地被程式化至可複寫式非揮發性記憶體模組220,才算是成功地完成該原子寫入操作。
在步驟S320中,在寫入所述第一寫入資料後,資料管理電路212會記錄對應所述第一寫入資料的第一元資料,並且寫入所述第一元資料至所述可複寫式非揮發性記憶體模組,其中所述第一元資料包括第一寫入識別碼、第一寫入大小以及第一單元跨越標記。首先,如同圖2所繪示,對應第一寫入指令的元資料300具有欄位寫入識別碼300(1)、寫入大小300(2)以及單元跨越標記300(3)。應注意的是,所述3個欄位的前後順序並不限於圖2的例子,順序可以依據廠商設定而改變。
反應於將第一寫入資料寫入至第一實體子單元,資料管理電路會設定(記錄)對應所寫入的第一寫入資料的第一元資料。在完成設定第一元資料後,處理器211會指示記憶體介面控制電路將第一元資料儲存(寫入)至可複寫式非揮發性記憶體模組220。以下會藉由圖4A-4D來說明本發明儲存元資料的方式。
圖4A為根據本發明的一實施例所繪示的儲存元資料的示意圖。圖4B為根據本發明的另一實施例所繪示的儲存元資料的示意圖。圖4C為根據本發明的另一實施例所繪示的儲存元資料的示意圖。圖4D為根據本發明的另一實施例所繪示的儲存元資料的示意圖。
首先,請參考圖4A,於圖4A的例子中,元資料500被儲存在每一個錯誤檢查與校正單元(亦稱為,錯誤檢查與校正碼字,ECC codeword)中。舉例來說,錯誤檢查與校正單元(ECC unit)包括使用者資料600、元資料500與錯誤檢查與校正碼700。其中,錯誤檢查與校正碼700會用來檢查與校正使用者資料600與元資料500。也就是說,除了使用者資料600,元資料500也受到錯誤檢查與校正碼700的保護。所述錯誤檢查與校正碼的產生方式不在本發明的範圍,不贅述於此。應注意的是,使用者資料600亦可視為上述的第一寫入資料,並且元資料500亦可視為對應第一寫入資料的元資料。在此例子中,錯誤檢查與校正單元可視為實體子單元。
請參考圖4B,於圖4B的例子中,元資料504被儲存在一個實體頁面900中的最後一個錯誤檢查與校正單元804。舉例來說,錯誤檢查與校正單元804包括使用者資料604、元資料504與錯誤檢查與校正碼704。在此例子中,實體頁面可視為為實體子單元。
請參考圖4C,於圖4C的例子中,元資料504被儲存在每一個存取單元(Access Unit)中。存取單元亦可稱為偽存取單元(Pseudo Access Unit)。舉例來說,實體子單元901包括存取單元1001與存取單元1002。每一個存取單元具有2個錯誤檢查與校正單元。元資料506儲存在存取單元1001的錯誤檢查與校正單元806中,並且元資料508儲存在存取單元1002的錯誤檢查與校正單元808中。在此例子中,存取單元可視為實體子單元。應注意的是,廠商可自行設定存取單元的大小或是存取單元所具有的錯誤檢查與校正單元的數量。
在上述的例子中,元資料被儲存在用以儲存其所對應的寫入資料的實體子單元、實體單元、存取單元或錯誤檢查與校正單元中。然而,元資料亦可不被儲存在用以儲存所述元資料所對應的寫入資料的實體子單元中。
例如,處理器211亦可選擇一個特定的實體單元(如,實體區塊)來儲存全部的元資料。請參照圖4D,假設實體單元1101專門用以儲存元資料,實體區塊1101具有N個實體頁面1101(1)-1101(N),並且每一實體頁面的每一個存取單元可儲存N個元資料。例如,實體子單元1101(1)的存取單元809儲存了元資料509(1)-509(N)。此外,每一個存取單元具有錯誤檢查與校正碼來保護所儲存的元資料。例如,存取單元809的元資料509(1)-509(N)被錯誤檢查與校正碼709所保護。值得一提的是,在圖4D的例子中,由於元資料並不是隨著對應的寫入資料一同被儲存至實體子單元、實體單元、存取單元或錯誤檢查與校正單元中,因此,圖4D中的元資料還具有額外的欄位來記錄該元資料所對應的寫入資料的實體位址。例如,如圖2所繪示,元資料400D是表示在圖4D的例子的元資料的資料結構。元資料400D除了會記錄寫入識別碼400D(1)、寫入大小400D(2)、單元跨越標記400D(3)之外,元資料400D還會記錄寫入資料實體位址400D(4) (“0001”即表示儲存寫入資料的實體位址的值)。如此一來,才可讓處理器211來辨識目前儲存元資料400D所對應的寫入資料的實體子單元的位址。
請再回到圖3,在步驟S330中,處理器211指示記憶體介面控制電路213寫入第二寫入資料至所述可複寫式非揮發性記憶體模組220中的第二實體子單元;在寫入所述第二寫入資料後,資料管理電路212記錄對應所述第二寫入資料的第二元資料,並且處理器211指示記憶體介面控制電路213寫入所述第二元資料至所述可複寫式非揮發性記憶體模組220,其中若所述第二實體子單元與所述第一實體子單元緊鄰並且所述第二寫入資料根據不同於所述第一寫入指令的第二寫入指令被寫入,資料管理電路212設定所述第二元資料的所述第二寫入識別碼與所述第一元資料的所述第一寫入識別碼不同,其中若所述第二寫入資料根據所述第一寫入指令被寫入,資料管理電路212設定所述第二元資料的所述第二寫入識別碼相同於所述第一元資料的所述第一寫入識別碼。
具體來說,本發明的實施例所提供的對應原子寫入指令的元資料的設定方式,其特徵在於本實施例僅使用1個位元大小的寫入識別碼來區分對應不同原子寫入指令的元資料,以耗費資源最小的方式來判斷對應原子寫入操作的已寫入的寫入資料是否為有效或無效(或判斷原子寫入操作是否成功),進而有效率地判斷是否要執行對應的資料恢復操作。以下會先藉由第一實施例來說明對應原子寫入指令的元資料的記錄方法。
[第一實施例]
圖5A是根據本發明的第一實施例所繪示的原子寫入操作的示意圖。圖5B是根據本發明的第一實施例所繪示的對應圖5A的原子寫入操作所繪示的元資料的示意圖。
請參照圖5A,為了方便說明,假設每一實體區塊具有N個實體頁面,每一實體頁面具有4個存取單元,每一存取單元(亦稱為實體子單元)具有1個錯誤檢查與校正單元,並且寫入資料(使用者資料)與對應該寫入資料的元資料一同被儲存至1個存取單元中(相似於圖4C的例子,但每一存取單元僅具有一個錯誤檢查與校正單元)。
舉例來說,隨著時間的經過,處理器211根據第一原子寫入指令指示記憶體介面控制電路213分別將2筆寫入資料601(1)、601(2)分別寫入至實體區塊(亦稱,實體單元)1102的最後一個實體頁面1102(N)的實體子單元1102(N.1)、1102(N.2)。此外,處理器211根據第二原子寫入指令指示記憶體介面控制電路213分別將2筆寫入資料602(1)、602(2)分別寫入至實體區塊1102的最後一個實體頁面1102(N)的實體子單元1102(N.3)、1102(N.4)以及將1筆寫入資料602(3)寫入至實體區塊1103的第一個實體頁面1102(1)的實體子單元1103(1.1)(如,第二原子寫入指令用以指示寫入3筆寫入資料)。依據實體位址的前後關係可定義出實體子單元之間的連接關係。例如,實體子單元1102(N.1)是緊鄰於實體子單元1102(N.2)之前,並且實體子單元1102(N.3)是緊鄰於實體子單元1102(N.2)之後。此外,實體子單元1102(N.4)是緊鄰於實體子單元1103(1.1)之前。應注意的是,實體區塊1102緊鄰於實體區塊1103之前。實體區塊1102的實體區塊識別碼不同於實體區塊1103的實體區塊識別碼。
請參照圖5B,為了方便說明,會將元資料所對應的寫入資料的邏輯位址(如,儲存所述寫入資料的邏輯子單元)標記在元資料的前方欄位LA。例如,元資料501(1)前方的LA記錄著“200”,其表示元資料501(1)的寫入資料601(1)儲存在邏輯位址(Logical Address,LA)200中。換句話說,在寫入資料601(1)被寫入至實體子單元1102(N.1)後,元資料501(1)被寫入至實體子單元1102(N.1)。即,元資料501(1)對應實體子單元1102(N.1)或寫入資料601(1)。以此類推,元資料501(2)對應實體子單元1102(N.2)或寫入資料601(2);元資料502(1)對應實體子單元1102(N.3)或寫入資料602(1);元資料502(2)對應實體子單元1102(N.4)或寫入資料602(2);元資料502(3)對應實體子單元1103(1.1)或寫入資料602(3)。
此外,每個實體頁面以及其具有的實體子單元中的元資料會如同圖5B所繪示,以按照實體子單元的排序先後來排列。例如,由於實體子單元1102(N.1)是緊鄰於實體子單元1102(N.2)之前,並且實體子單元1102(N.3)是緊鄰於實體子單元1102(N.2)之後。因此,對應實體子單元1102(N.1)或寫入資料601(1)的元資料501(1)會排列在元資料501(2)之前,並且對應實體子單元1102(N.3)或寫入資料602(1)的元資料502(1)會排列在元資料501(2)之後。
關於元資料的寫入識別碼,在本實施例中,對應相同原子寫入指令的元資料的寫入識別碼會相同。例如,由於第一原子寫入指令用以指示將寫入資料601(1)寫入至邏輯子單元200,並且將寫入資料601(2)寫入至邏輯子單元201。因此,對應第一原子寫入指令的元資料501(1)、501(2)的寫入識別碼W_ID會相同(如,元資料501(1)的寫入識別碼W_ID與元資料501(2)的寫入識別碼W_ID都為“0”)。
此外,由於第二原子寫入指令的寫入資料602(1)/實體子單元1102(N.3)緊鄰(最相鄰)於第一原子寫入指令的寫入資料601(2)/實體子單元1102(N.2)。因此,資料管理電路212在設定對應第二原子寫入指令的元資料502(1)、502(2)、502(3)的寫入識別碼時,會將元資料502(1)、502(2)、502(3)的寫入識別碼設定為不同於第一原子寫入指令的元資料501(1)、501(2)的寫入識別碼。如此一來,可藉由依序檢查元資料的寫入識別碼的改變,來得知元資料所對應的原子寫入指令是否改變。
舉例來說,假設從元資料501(1)依序檢查至元資料502(2),由於緊鄰的兩個元資料501(2)與元資料502(1)的寫入識別碼不同,可得知緊鄰的兩個元資料501(2)與元資料502(1)分別屬於不同的原子寫入指令。另一方面,由於緊鄰的兩個元資料501(1)與元資料501(2)的寫入識別碼相同,可得知緊鄰的兩個元資料501(1)與元資料501(2)屬於同一個原子寫入指令。
也就是說,在本實施例中,只需要利用例如是1個位元大小的空間來記錄寫入識別碼,便可清楚地辨別元資料(或對應的寫入資料)的分布狀態(如,在排序於當前被檢查的元資料的前(或後)的元資料所對應的寫入資料,是否與被檢查的元資料所對應的寫入資料屬於同一個寫入指令)。所述寫入識別碼可包括“0”或是 “1”(亦可視為寫入識別碼僅記錄第一數值與第二數值)。如此一來,可在利用最小資源耗費的情況下,達到辨識不同寫入指令的元資料的作用。
在可以辨別屬於同一個原子寫入指令的多個元資料的分佈後,可以藉此來檢查所述原子寫入指令所欲寫入的寫入資料是否皆被寫入至可複寫式非揮發性記憶體模組220,以判斷根據所述原子寫入指令所執行的原子寫入操作是否成功。
更詳細來說,在可以辨別屬於同一個原子寫入指令的多個元資料的分佈後,可以利用對應所述同一原子寫入指令的多個元資料的數量來與所述多個元資料中的寫入大小(W_Size)進行比較,以確定一個原子寫入指令的所有寫入資料是否皆寫入至可複寫式非揮發性記憶體模組220。然而,首先須說明的是寫入大小的設定(記錄/計算)方式。
在本實施例中,資料管理電路212會根據對應的原子寫入指令與一預設存取單元大小來計算元資料的寫入大小(W_Size)。詳細來說,假設第一原子寫入指令用以指示將第一寫入資料與第二寫入資料分別寫入至第一邏輯子單元與第二邏輯子單元。資料管理電路212會加總第一邏輯子單元與第二邏輯子單元的大小,並且將第一邏輯子單元與第二邏輯子單元的大小總和除以預設存取單元大小(如,實體子單元的大小),以獲得一個商值。最後,將此商值進行無條件進位至整數位的數值作為對應第一原子寫入指令的第一元資料的第一寫入大小。換句話說,資料管理電路212會計算寫入資料的大小總和,再計算需要幾個存取單元來儲存全部的寫入資料。計算出的所需要的存取單元的數量就是寫入大小,其中每個儲存寫入資料的存取單元也會儲存一個元資料。
舉例來說,請參照圖5A、5B。假設第一原子寫入指令用以指示將第一寫入資料601(1)與第二寫入資料601(2)分別寫入至第一邏輯子單元200與第二邏輯子單元201。每個存取單元(實體子單元)儲存有一個元資料。每個邏輯子單元的大小為512位元組(bytes),並且預設存取單元大小(即,實體子單元的大小)也為512位元組。
資料管理電路212會加總第一邏輯子單元200與第二邏輯子單元201的大小,即,1024位元組。接著,資料管理電路會計算出第一邏輯子單元與第二邏輯子單元的大小總和除以預設存取單元大小的商值為“2”。最後,如圖5B所示,資料管理電路212會將對應第一原子寫入指令的元資料501(1)、501(2)的寫入大小(W_Size)設定為“2”。以此類推,對應第二原子指令的元資料502(1)、502(2)、502(3)的寫入大小會被設定為“3”(如,(512*3)/512=3)。
在本實施例中,如上述,第二原子寫入指令的寫入資料602(1)、602(2)、602(3)會分別寫入至實體子單元1102(N.3)、1102(N.3)、1103(1.1),其中彼此緊鄰的實體子單元1102(N.3)、1103(1.1)分別屬於具有不同實體區塊識別碼的實體區塊。可以視為第二原子寫入指令的所有寫入資料跨越了不同實體區塊識別碼的實體區塊而被儲存。在此情況下,資料管理電路212會將對應第二原子寫入指令的元資料502(1)、502(2)、502(3)的單元跨越標記UCF(亦稱為,區塊跨越標記BCF)設定為“1”(亦稱,第三數值)。反之,第一原子寫入指令的所有寫入資料沒有跨越了不同實體區塊識別碼的實體區塊而被儲存,因此資料管理電路212會將對應第一原子寫入指令的元資料501(1)、501(2)的單元跨越標記UCF設定為“0”(亦稱,第四數值)。
值得一提的是,從上述例子可以發現,對應相同原子寫入指令的元資料彼此相同。
說明完對應原子寫入指令的元資料的設定方式後,請再回到圖3,在步驟S340中,若特殊事件發生,處理器211根據所述第二寫入資料與所述第二元資料來判斷所述第二寫入資料是否為有效或無效。
具體來說,所述特殊事件例如是不正常斷電事件(abnormal power-off event)或是突然斷電事件(sudden power-off event)。例如,請參照圖5A,假設突然事件發生在時間點T1,即,在寫入資料602(3)與對應的元資料502(3)皆已被寫入至實體子單元1103(1.1)後,於時間點T1,儲存裝置20忽然發生特殊事件(如,突然斷電)。
假設特殊事件為突然斷電事件,在復電後,處理器211會判定之前的斷電為突然斷電事件。接著,處理器211會判斷之前所寫入的最後一筆寫入資料是否為有效或無效,或判斷最後執行的原子寫入指令是否成功,以對應執行突然斷電恢復(sudden power-off recovery,SPOR)操作(亦稱,資料恢復操作)。所述判斷之前所寫入的最後一筆寫入資料是否為有效或無效,或判斷最後執行的原子寫入指令是否成功的運作如下,在本實施例中,處理器211會辨識開放實體區塊(亦稱,開放實體單元)中儲存有資料的多個實體子單元的最後一個實體子單元。接著,處理器211會辨識儲存有資料的最後一個實體子單元的元資料。所述開放實體區塊為儲存有資料並且還可被寫入資料的實體區塊。所述開放實體區塊為最後被寫入資料的實體區塊。接著,處理器211會去判斷開放實體區塊中是否存在其他的至少一實體子單元,其所儲存的寫入資料/元資料與所述最後一個實體子單元所儲存的寫入資料/元資料屬於同一個原子寫入指令。最後,處理器211會比較對應儲存有資料的最後一個實體子單元的原子寫入指令的所有元資料的數量與元資料中的寫入大小的數值,以判斷之前所寫入的最後一筆寫入資料是否為有效或無效(判斷最後執行的原子寫入指令是否成功)。若相等,則處理器211判定已寫入的對應所述原子寫入指令的寫入資料是有效的,或是表示對應所述原子寫入指令的原子寫入操作是成功的。若不相等,則處理器211判定已寫入的對應所述原子寫入指令的寫入資料是無效的,或是表示對應所述原子寫入指令的原子寫入操作是失敗的。處理器211會標記所述寫入資料為無效,或是標記所述原子寫入指令執行失敗。
以下藉由第二~第四實施例來說明本發明的資料恢復操作。
[第二實施例]
圖6A是根據本發明的第二實施例所繪示的原子寫入操作的示意圖。圖6B是根據本發明的第二實施例所繪示的對應圖6A的原子寫入操作所繪示的元資料的示意圖。
請參照圖6A、6B,在第二實施例中,第一原子寫入指令、第二原子寫入指令與硬體元件相同於第一實施例。第二實施例與第一實施例不同的地方在於,第二實施例的特殊事件發生在時間點T2。
詳細來說,在處理器211根據第二原子寫入指令將寫入資料602(1)與元資料502(1)寫入至實體子單元1102(N.3)後,於時間點T2,儲存裝置20發生特殊事件。也就是說,原本要寫入至實體子單元1102(N.4)的寫入資料602(2)與元資料502(2)以及原本要寫入至實體子單元1103(1.1)的寫入資料602(3)與元資料502(3)皆沒有被寫入(以菱形格線表示)。
在復電後,處理器211會判斷對應第二原子寫入指令的寫入資料是否為有效或無效,進而判斷如何對應地執行資料恢復操作。
如上述,處理器211會辨識實體區塊1102為開放實體區塊。接著,處理器211會辨識到實體子單元1102(N.3)是開放實體區塊1102中最後一個儲存有資料的實體子單元。接著,處理器211會辨識對應實體子單元1102(N.3)的元資料502(1),並且獲得元資料502(1)所記錄的資訊(如,寫入識別碼為“1”,寫入大小為“3”,單元跨越標記為“1”)。
接著,處理器211會根據元資料502(1)來判斷是否有屬於第二原子寫入指令的元資料排序在元資料502(1)之前。例如,是否在實體子單元1102(N.3)之前有緊鄰的實體子單元並且其所儲存的元資料的寫入識別碼與元資料502(1)的寫入識別碼(如,“1”)相同。在此例子中,實體子單元1102(N.2)雖然緊鄰於實體子單元1102(N.3)之前,但是其所對應的元資料501(2)的寫入識別碼(如,“0”)不同於元資料502(1)的寫入識別碼。因此,處理器211會判定對應第二原子寫入指令的元資料只有元資料502(1),並且當前對應第二原子寫入指令的元資料個數總合為1。
接著,處理器211會比較對應第二原子寫入指令的元資料個數總和與對應第二原子寫入指令的元資料的寫入大小是否相等,以判斷對應第二原子寫入指令的寫入資料是否為有效或無效。接著,處理器211再根據第二原子寫入指令所指示的欲寫入的邏輯子單元之前是否有儲存有效資料來判斷是否要重新執行第二原子寫入指令。在此例子中,由於對應第二原子寫入指令的元資料個數總和與對應第二原子寫入指令的元資料的寫入大小不相等,處理器211會判定對應第二原子寫入指令的寫入資料602(1)為無效(亦判定第二原子寫入指令失敗)。已寫入的寫入資料602(1)會被標記為無效。主機系統可詢問第二原子指令是否執行成功,或是已寫入的對應第二原子寫入的寫入資料是否有效。處理器211會將第二原子寫入指令是否執行成功或已寫入的對應第二原子寫入的寫入資料是否有效的上述資訊回傳給主機系統。
主機系統在接收到第二原子寫入指令是否執行成功或已寫入的對應第二原子寫入的寫入資料是否有效的上述資訊後,會指示處理器211來對應地執行資料恢復操作。具體來說,在對應地執行資料恢復操作的運作中,處理器211會根據上述被判定無效的寫入資料所對應的邏輯子單元,來恢復所述邏輯子單元所儲存的有效資料。更詳細來說,在本實施例中,若對應第二原子寫入指令的寫入資料602(1)被判定為無效,處理器211會根據資料602(1)所儲存的邏輯位址“300”來判斷在儲存寫入資料602(1)之前,邏輯位址“300”是否已儲存有效的舊資料。若在被儲存寫入資料602(1)之前,邏輯位址“300”已儲存有效的舊資料,處理器211會以邏輯位址“300”之前所儲存的有效的舊資料作為有效資料來更新邏輯轉實體位址映射表或實體轉邏輯位址映射表。舉例來說,處理器211可將原有儲存有效的舊資料的實體子單元映射至邏輯位址“300”。相對地,若在儲存寫入資料602(1)之前,邏輯位址“300”沒有儲存有效的舊資料,處理器211會重新執行第二原子寫入指令。
[第三實施例]
圖7A是根據本發明的第三實施例所繪示的原子寫入操作的示意圖。圖7B是根據本發明的第三實施例所繪示的對應圖7A的原子寫入操作所繪示的元資料的示意圖。請參照圖7A、7B,在第三實施例中,硬體元件相同於第一實施例。第三實施例與第一實施例不同的地方在於:在第三實施例中,第一原子寫入指令用以指示將寫入資料601(1)、601(2)、601(3)、601(4)分別儲存至邏輯位址200、201、202、203。並且,在寫入資料601(3)與對應的元資料501(3)被寫入至實體子單元1102(N.3)後,特殊事件發生在時間點T3。
在上述的例子中,元資料501(1)、501(2)、501(3)的寫入識別碼為“0”、寫入大小為“4”以及單元跨越標記為“0”,並且開放實體區塊為實體區塊1102。接著,處理器211會辨識到實體子單元1102(N.3)是開放實體區塊1102中最後一個儲存有資料的實體子單元。接著,處理器211會辨識對應實體子單元1102(N.3)的元資料501(3),並且獲得元資料501(3)所記錄的資訊。
接著,處理器211會判斷是否有屬於第一原子寫入指令的元資料排序在元資料501(3)之前。例如,是否在實體子單元1102(N.3)之前有緊鄰的實體子單元並且其所儲存的元資料的寫入識別碼與元資料501(3)的寫入識別碼(如,“0”)相同。在此例子中,實體子單元1102(N.1)、1102(N.2)緊鄰於實體子單元1102(N.3)之前,並且其所對應的元資料501(1)、501(2)的寫入識別碼(如,“0”)相同於元資料501(3)的寫入識別碼。因此,處理器211會判定對應第一原子寫入指令的元資料有元資料501(1)、501(2)、501(3),並且當前對應第一原子寫入指令的元資料個數總合為3(共3個對應第一原子寫入指令的元資料)。
在此例子中,由於對應第一原子寫入指令的元資料個數總和與對應第一原子寫入指令的元資料的寫入大小不相等,處理器211會判定寫入資料601(1)、601(2)、601(3)為無效,並且將已寫入的寫入資料601(1)、601(2)、601(3)標記為無效。以下會藉由第四實施例來闡述如何利用單元跨越標記(區塊跨越標記)來判斷寫入資料是否為有效或無效的方法。
[第四實施例]
圖8A是根據本發明的第四實施例所繪示的原子寫入操作的示意圖。圖8B是根據本發明的第四實施例所繪示的對應圖8A的原子寫入操作所繪示的元資料的示意圖。
請參照圖8A、8B,在第四實施例中,硬體元件相同於第一實施例。第四實施例與第一實施例不同的地方在於:在第四實施例中,第一原子寫入指令用以指示將寫入資料602(1)、602(2)分別儲存至邏輯位址200、201,並且第二原子寫入指令用以指示將寫入資料602(1)、602(2)、602(3)、602(4)分別儲存至邏輯位址300、301、302、303。並且,在寫入資料602(3)與對應的元資料502(3)被寫入至實體子單元1103(1.1)後,特殊事件發生在時間點T4。
在上述的例子中,元資料501(1)、501(2)的寫入識別碼為“0”、寫入大小為“2”以及單元跨越標記為“0”,元資料502(1)、502(2)、502(3)的寫入識別碼為“1”、寫入大小為“4”以及單元跨越標記為“1”,並且開放實體區塊為實體區塊1103。接著,處理器211會辨識到實體子單元1103(1.1)是開放實體區塊1103中最後一個儲存有資料的實體子單元。接著,處理器211會辨識對應實體子單元1103(1.1)的元資料502(3),並且獲得元資料502(3)所記錄的資訊。
接著,處理器211會判斷在開放實體區塊1103中是否有屬於第一原子寫入指令的元資料排序在元資料501(3)之前。例如,是否在實體子單元1103(1.1)之前有緊鄰的實體子單元並且其所儲存的元資料的寫入識別碼與元資料502(3)的寫入識別碼(如,“1”)相同。在開放實體區塊中,實體子單元1102(N.3)之前不存在任何實體子單元。然而,在本實施例中,處理器211會根據元資料502(3)的單元跨越標記來判斷是否要檢查緊鄰於開放實體區塊之前的關閉實體區塊。其中,緊鄰於開放實體單元1103之前的所述關閉實體單元1102的實體單元識別碼為所述開放實體單元的實體單元識別碼減一,或是所述關閉實體單元1102的實體單元識別碼會為開放實體單元1103的實體單元識別碼的前一個編碼。
由於元資料502(3)的單元跨越標記(區塊跨越標記)被記錄為 “1”。因此,處理器211會判定,緊鄰於元資料502(3)所對應的實體子單元1103(1.1)所屬的實體區塊1103之前的實體區塊中,可能會具有其他與實體子單元1103(1.1)一樣是屬於第二原子寫入指令的實體子單元。接著,處理器211會在緊鄰實體區塊1103之前的實體區塊1102中檢查是否有任何(實體位址上)緊鄰於實體子單元1103(1.1)的實體子單元,並且此實體子單元所對應的元資料的寫入識別碼與實體子單元1103(1.1)的元資料502(3)的寫入識別碼相同。在圖8A、8B的例子中,處理器211會辨識到實體子單元1102(N.3)、1102(N.4)所對應的元資料502(1)、502(2)的寫入識別碼相同於元資料502(3)的寫入識別碼,並且實體子單元1102(N.3)、1102(N.4)緊鄰於實體子單元1103(1.1)。因此,處理器211會判定對應第二原子寫入指令的元資料共有元資料502(1)、502(2)、502(3),並且當前對應第二原子寫入指令的元資料個數總合為3(共3個對應第一原子寫入指令的元資料)。
在此例子中,由於對應第二原子寫入指令的元資料個數總和(如,“3”)與對應第二原子寫入指令的元資料的寫入大小(如,“4”)不相等,處理器211會判定對應第二原子寫入指令的寫入資料602(1)、602(2)、602(3) 為無效(判定第二原子寫入操作失敗)。此外,已寫入的寫入資料602(1)、602(2)、602(3)會被標記為無效。
值得一提的是,上述的多個實施例都是以單一通道(Channel)具有多個實體區塊來做說明。然而,在其他實施例中,儲存裝置20亦可具有多個通道,每個通道具有相同數量的實體區塊,並且每個通道中的順序相同的實體區塊的實體區塊識別碼(亦稱,實體單元識別碼)會彼此相同。舉例來說,假設可複寫式非揮發性記憶體模組220具有2個通道,分別為第一通道與第二通道。每個通道具有26個實體區塊,其中每個通道的所述26個實體區塊的實體區塊識別碼依序皆為“A”、“B”… “Y”、“Z”。在此例子中,記憶體介面控制電路213會優先程式化資料至第一通道的開放實體區塊(假設此實體區塊的實體區塊識別碼為“A”),接著,若實體區塊“A”被寫滿且還有資料尚須被寫入,記憶體介面控制電路213會選擇第二通道中具有相同的實體區塊識別碼的實體區塊 “A”來程式化剩餘的資料。也就是說,實體區塊識別碼相同的實體區塊,會依照通道的順序來區分出先後順序,以進行資料的寫入,或是判斷實體位址的先後順序。另個角度來說,假設第二通道的實體區塊 “Z”為開放實體區塊,則在辨識實體區塊 “Z”的最後一個具有資料的實體子單元的元資料後,會接著檢查第二通道與第一通道的實體區塊“Z”中是否有其他實體子單/元資料也屬於同個寫入指令。此外,在此例子中,在第一通道與第二通道中,具有實體區塊識別碼“Y”(排序在區塊識別碼“X”之前且相鄰)的實體區塊會被視為緊鄰於實體區塊 “Z”之前。例如,實體位址上的順序會成為:第一通道的實體區塊“Y”、第二通道的實體區塊 “Y”、第一通道的實體區塊 “Z”、 第二通道的實體區塊 “Z”。
綜上所述,本發明實施例所提供的資料寫入方法以及儲存控制器,可將寫入資料寫入至可複寫式非揮發性記憶體模組後,寫入對應所述寫入資料的具有特定設定方式的元資料,以在特殊事件發生後,根據所述寫入資料與所述元資料來判斷第二寫入資料是否為有效或無效,以對應地執行資料恢復操作。
雖然本發明已以實施例揭露如上,然其並非用以限定本發明,任何所屬技術領域中具有通常知識者,在不脫離本發明的精神和範圍內,當可作些許的更動與潤飾,故本發明的保護範圍當視後附的申請專利範圍所界定者為準。
10‧‧‧主機系統
20‧‧‧儲存裝置
110、211‧‧‧處理器
120‧‧‧主機記憶體
130‧‧‧資料傳輸介面電路
210‧‧‧儲存控制器
212‧‧‧資料傳輸管理電路
213‧‧‧記憶體介面控制電路
220‧‧‧可複寫式非揮發性記憶體模組
230‧‧‧連接介面電路
300、400、400D、500、504、506、508、509(1)-509(N)、510(1)-510(N)、511(1)-511(N)、512(1)-512(N)、501(1)-501(4)、502(1)-502(3)‧‧‧元資料
300(1)、400(1)、400D(1)、W_ID‧‧‧寫入識別碼
300(2)、400(2)、400D(2)、W_Size‧‧‧寫入大小
300(3)、400(3)、400D(3)、UCF‧‧‧寫入識別碼
400D(4)‧‧‧寫入資料實體位址
S310、S320、S330、S340‧‧‧資料寫入方法的流程步驟
600、601、602、603、604、605、606、607、608、601(1)、601(2)、601(3)、601(4)、602(1)、602(2)、602(3)、602(4)‧‧‧寫入資料
700、701、702、703、704、705、706、707、708、709、710、711、712‧‧‧錯誤檢查與校正碼
800、801、802、803、804、805、806、807、808、809、810、811、812‧‧‧錯誤檢查與校正單元/錯誤檢查與校正碼字
900、901、1101(1)、1101(N)、1102(N)、1103(1)‧‧‧實體頁面
1101、1102、1103‧‧‧實體單元/實體區塊
1001、1002、1102(N.1)、1102(N.2)、1102(N.3)、1102(N.4)、1103(1.1)‧‧‧存取單元/實體子單元
T1、T2、T3、T4‧‧‧時間點
圖1是根據本發明的一實施例所繪示的主機系統及儲存裝置的方塊示意圖。 圖2是根據本發明的一實施例所繪示的元資料的資料結構的示意圖。 圖3是根據本發明的一實施例所繪示的資料寫入方法的流程圖。 圖4A為根據本發明的一實施例所繪示的儲存元資料的示意圖。 圖4B為根據本發明的另一實施例所繪示的儲存元資料的示意圖。 圖4C為根據本發明的另一實施例所繪示的儲存元資料的示意圖。 圖4D為根據本發明的另一實施例所繪示的儲存元資料的示意圖。 圖5A是根據本發明的第一實施例所繪示的原子寫入操作的示意圖。 圖5B是根據本發明的第一實施例所繪示的對應圖5A的原子寫入操作所繪示的元資料的示意圖。 圖6A是根據本發明的第二實施例所繪示的原子寫入操作的示意圖。 圖6B是根據本發明的第二實施例所繪示的對應圖6A的原子寫入操作所繪示的元資料的示意圖。 圖7A是根據本發明的第三實施例所繪示的原子寫入操作的示意圖。 圖7B是根據本發明的第三實施例所繪示的對應圖7A的原子寫入操作所繪示的元資料的示意圖。 圖8A是根據本發明的第四實施例所繪示的原子寫入操作的示意圖。 圖8B是根據本發明的第四實施例所繪示的對應圖8A的原子寫入操作所繪示的元資料的示意圖。
Claims (10)
- 一種資料寫入方法,適用於配置有一可複寫式非揮發性記憶體模組的一儲存裝置,其中該可複寫式非揮發性記憶體模組具有多個實體單元,並且所述多個實體單元的每一個實體單元具有多個實體子單元,所述方法包括:根據一第一寫入指令寫入一第一寫入資料至該可複寫式非揮發性記憶體模組中的一第一實體子單元;在寫入該第一寫入資料後,記錄對應該第一寫入資料的一第一元資料,並且寫入該第一元資料至該可複寫式非揮發性記憶體模組,其中該第一元資料包括一第一寫入識別碼、一第一寫入大小以及一第一單元跨越標記,其中該寫入識別碼僅為一第一數值或一第二數值,並且該第一數值不同於該第二數值;寫入一第二寫入資料至該可複寫式非揮發性記憶體模組中的一第二實體子單元;在寫入該第二寫入資料後,記錄對應該第二寫入資料的一第二元資料,並且寫入該第二元資料至該可複寫式非揮發性記憶體模組,其中該第二元資料包括一第二寫入識別碼、一第二寫入大小以及一第二單元跨越標記,其中若該第二實體子單元與該第一實體子單元緊鄰並且該第二寫入資料根據不同於該第一寫入指令的一第二寫入指令被寫入,設定該第二元資料的該第二寫入識別碼與該第一元資料的該第一寫入識別碼不同,其中若該第二寫入資料根據該第一寫入指令被寫入,設定該第二元資料的該第二寫 入識別碼相同於該第一元資料的該第一寫入識別碼;以及若一特殊事件發生,根據該第二寫入資料與該第二元資料來判斷該第二寫入資料是否為有效或無效。
- 如申請專利範圍第1項所述的資料寫入方法,其中若該第二寫入資料根據該第一寫入指令被寫入,設定該第二元資料的相同於該第一元資料,所述方法更包括:根據該第一寫入指令與一預設存取單元大小來計算該第一元資料的該第一寫入大小;若該第一實體子單元與該第二實體子單元分別屬於具有不同實體單元識別碼的多個實體單元,設定該第一單元跨越標記為一第三數值;以及若該第一實體子單元與該第二實體子單元屬於具有相同實體單元識別碼的至少一實體單元,設定該第一單元跨越標記為一第四數值,其中該第三數值不同於該第四數值。
- 如申請專利範圍第2項所述的資料寫入方法,其中該第一寫入指令用以指示將該第一寫入資料與該第二寫入資料分別寫入至一第一邏輯子單元與一第二邏輯子單元,其中上述根據該第一寫入指令與該預設存取單元大小來計算該第一元資料的該第一寫入大小的步驟包括:將該第一邏輯子單元與該第二邏輯子單元的大小總和除以該預設存取單元大小以獲得一商值;以及對該商值無條件進位至整數所獲得的一數值作為該第一寫入 大小。
- 如申請專利範圍第1項所述的資料寫入方法,其中該第二實體子單元所屬的實體單元為一開放實體單元,其中上述根據該第二寫入資料與該第二元資料來判斷該第二寫入資料是否為有效或無效的步驟包括:辨識該開放實體單元中儲存有資料的多個實體子單元的最後一個實體子單元;若該第二實體子單元被辨識為該開放實體單元中儲存有資料的多個實體子單元的最後一個實體子單元;辨識對應該第二實體子單元的該第二元資料;判斷該開放實體單元中是否存在至少一第三實體子單元,其中若該開放實體單元中的至少一第三實體子單元緊鄰於該第二實體子單元之前並且對應該至少一第三實體子單元的一第三元資料中的一第三寫入識別碼相同於該第二寫入識別碼,判定該開放實體單元中存在該至少一第三實體子單元;若存在該至少一第三實體子單元,加總該至少一第三元資料的個數與該第二元資料的個數為一元資料個數總和,其中若該元資料個數總和不等於該第二寫入大小,判定該第二寫入資料為無效;以及若不存在該至少一第三實體子單元,將該第二元資料的個數作為該元資料個數總和,其中若該元資料個數總和不等於該第二寫入大小,判定該第二寫入資料為無效。
- 如申請專利範圍第4項所述的資料寫入方法,其中上述根據該第二寫入資料與該第二元資料來判斷該第二寫入資料是否為有效或無效的步驟更包括:根據該第二單元跨越標記判斷是否需檢查緊鄰於該開放實體單元之前的一關閉實體單元;若判定需檢查緊鄰於該開放實體單元之前的該關閉實體單元,判斷該關閉實體單元中是否存在至少一第四實體子單元,其中判定該關閉實體單元中存在該至少一第四實體子單元的條件包括:若至少一第四實體子單元緊鄰於該至少一第三實體子單元之前,並且對應該至少一第四實體子單元的一第四元資料中的一第四寫入識別碼相同於該第二寫入識別碼;或若至少一第四實體子單元緊鄰於該第二實體子單元之前,並且對應該至少一第四實體子單元的該第四元資料中的該第四寫入識別碼相同於該第二寫入識別碼;若該關閉實體單元中存在該至少一第四實體子單元且該開放實體單元中存在該至少一第三實體子單元,加總該至少一第四元資料的個數、該至少一第三元資料的個數與該第二元資料的個數為該元資料個數總和,其中若該元資料個數總和不等於該第二寫入大小,判定該第二寫入資料為無效;以及若該關閉實體單元中存在該至少一第四實體子單元且該開放實體單元中不存在該至少一第三實體子單元,加總該至少一第四 元資料的個數與該第二元資料的個數為該元資料個數總和,其中若該元資料個數總和不等於該第二寫入大小,判定該第二寫入資料為無效。
- 一種儲存控制器,用於控制配置有一可複寫式非揮發性記憶體模組的一儲存裝置,該儲存控制器包括:一連接介面電路,用以耦接至一主機系統;一記憶體介面控制電路,用以耦接至該可複寫式非揮發性記憶體模組,其中該可複寫式非揮發性記憶體模組具有多個實體單元,並且所述多個實體單元的每一個實體單元具有多個實體子單元;一處理器,耦接至該連接介面電路及該記憶體介面控制電路;以及一資料管理電路,耦接至該處理器、該連接介面電路及該記憶體介面控制電路,其中該處理器根據一第一寫入指令寫入一第一寫入資料至該可複寫式非揮發性記憶體模組中的一第一實體子單元,其中在寫入該第一寫入資料後,該資料管理電路記錄對應該第一寫入資料的一第一元資料,並且該處理器指示該記憶體介面控制電路寫入該第一元資料至該可複寫式非揮發性記憶體模組,其中該第一元資料包括一第一寫入識別碼、一第一寫入大小以及一第一單元跨越標記,其中該寫入識別碼僅為一第一數值或一第二數值,並且該第一數值不同於該第二數值, 其中該處理器指示該記憶體介面控制電路寫入一第二寫入資料至該可複寫式非揮發性記憶體模組中的一第二實體子單元,其中在寫入該第二寫入資料後,該資料管理電路記錄對應該第二寫入資料的一第二元資料,並且該處理器指示該記憶體介面控制電路寫入該第二元資料至該可複寫式非揮發性記憶體模組,其中該第二元資料包括一第二寫入識別碼、一第二寫入大小以及一第二單元跨越標記,其中若該第二實體子單元與該第一實體子單元緊鄰並且該第二寫入資料根據不同於該第一寫入指令的一第二寫入指令被寫入,該資料管理電路設定該第二元資料的該第二寫入識別碼與該第一元資料的該第一寫入識別碼不同,其中若該第二寫入資料根據該第一寫入指令被寫入,該資料管理電路設定該第二元資料的該第二寫入識別碼相同於該第一元資料的該第一寫入識別碼,其中若一特殊事件發生,該處理器根據該第二寫入資料與該第二元資料來判斷該第二寫入資料為有效或無效。
- 如申請專利範圍第6項所述的儲存控制器,其中若該第二寫入資料根據該第一寫入指令被寫入,該資料管理電路設定該第二元資料相同於該第一元資料,該資料管理電路根據該第一寫入指令與一預設存取單元大小來計算該第一元資料的該第一寫入大小;若該第一實體子單元與該第二實體子單元分別屬於具有不同實體單元識別碼的多個實體單元,該資料管理電路設定該第一單 元跨越標記為一第三數值;以及若該第一實體子單元與該第二實體子單元屬於具有相同實體單元識別碼的至少一實體單元,該資料管理電路設定該第一單元跨越標記為一第四數值,其中該第三數值不同於該第四數值。
- 如申請專利範圍第7項所述的儲存控制器,其中該第一寫入指令用以指示將該第一寫入資料與該第二寫入資料分別寫入至一第一邏輯子單元與一第二邏輯子單元,其中在上述該資料管理電路根據該第一寫入指令與該預設存取單元大小來計算該第一元資料的該第一寫入大小的運作中,該資料管理電路將該第一邏輯子單元與該第二邏輯子單元的大小總和除以該預設存取單元大小以獲得一商值,其中該資料管理電路對該商值無條件進位至整數所獲得的一數值作為該第一寫入大小。
- 如申請專利範圍第6項所述的儲存控制器,其中該第二實體子單元所屬的實體單元為一開放實體單元,其中在上述該處理器根據該第二寫入資料與該第二元資料來判斷該第二寫入資料是否為有效或無效的運作中,該處理器辨識該開放實體單元中儲存有資料的多個實體子單元的最後一個實體子單元,其中若該第二實體子單元被辨識為該開放實體單元中儲存有資料的多個實體子單元的最後一個實體子單元,該處理器辨識對應該第二實體子單元的該第二元資料, 其中該處理器判斷該開放實體單元中是否存在至少一第三實體子單元,其中若該開放實體單元中的至少一第三實體子單元緊鄰於該第二實體子單元之前並且對應該至少一第三實體子單元的一第三元資料中的一第三寫入識別碼相同於該第二寫入識別碼,該處理器判定該開放實體單元中存在該至少一第三實體子單元,其中若存在該至少一第三實體子單元,該處理器加總該至少一第三元資料的個數與該第二元資料的個數為一元資料個數總和,其中若該元資料個數總和不等於該第二寫入大小,該處理器判定該第二寫入資料為無效,其中若不存在該至少一第三實體子單元,將該第二元資料的個數作為該元資料個數總和,其中若該元資料個數總和不等於該第二寫入大小,該處理器判定該第二寫入資料為無效。
- 如申請專利範圍第9項所述的儲存控制器,其中在上述該處理器根據該第二寫入資料與該第二元資料來判斷該第二寫入資料是否為有效或無效的運作中,該處理器根據該第二單元跨越標記判斷是否需檢查緊鄰於該開放實體單元之前的一關閉實體單元,其中該處理器若判定需檢查緊鄰於該開放實體單元之前的該關閉實體單元,該處理器判斷該關閉實體單元中是否存在至少一第四實體子單元,其中判定該關閉實體單元中存在該至少一第四實體子單元的條件包括: 若至少一第四實體子單元緊鄰於該至少一第三實體子單元之前,並且對應該至少一第四實體子單元的一第四元資料中的一第四寫入識別碼相同於該第二寫入識別碼;或若至少一第四實體子單元緊鄰於該第二實體子單元之前,並且對應該至少一第四實體子單元的該第四元資料中的該第四寫入識別碼相同於該第二寫入識別碼,其中若該關閉實體單元中存在該至少一第四實體子單元且該開放實體單元中存在該至少一第三實體子單元,該處理器加總該至少一第四元資料的個數、該至少一第三元資料的個數與該第二元資料的個數為該元資料個數總和,其中若該元資料個數總和不等於該第二寫入大小,該處理器判定該第二寫入資料為無效,若該關閉實體單元中存在該至少一第四實體子單元且該開放實體單元中不存在該至少一第三實體子單元,該處理器加總該至少一第四元資料的個數與該第二元資料的個數為該元資料個數總和,其中若該元資料個數總和不等於該第二寫入大小,該處理器判定該第二寫入資料為無效。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW105137591A TWI616807B (zh) | 2016-11-17 | 2016-11-17 | 資料寫入方法以及儲存控制器 |
US15/402,239 US9990152B1 (en) | 2016-11-17 | 2017-01-10 | Data writing method and storage controller |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW105137591A TWI616807B (zh) | 2016-11-17 | 2016-11-17 | 資料寫入方法以及儲存控制器 |
Publications (2)
Publication Number | Publication Date |
---|---|
TWI616807B true TWI616807B (zh) | 2018-03-01 |
TW201820114A TW201820114A (zh) | 2018-06-01 |
Family
ID=62107838
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW105137591A TWI616807B (zh) | 2016-11-17 | 2016-11-17 | 資料寫入方法以及儲存控制器 |
Country Status (2)
Country | Link |
---|---|
US (1) | US9990152B1 (zh) |
TW (1) | TWI616807B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI823792B (zh) * | 2023-02-24 | 2023-11-21 | 大陸商合肥兆芯電子有限公司 | 映射表更新方法、記憶體儲存裝置及記憶體控制電路單元 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW202008171A (zh) | 2018-07-20 | 2020-02-16 | 大陸商深圳大心電子科技有限公司 | 資料寫入方法以及儲存控制器 |
KR20200120159A (ko) * | 2019-04-11 | 2020-10-21 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 이의 동작 방법 |
US20230205457A1 (en) * | 2021-12-29 | 2023-06-29 | Micron Technology, Inc. | Techniques for atomic write operations |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110055458A1 (en) * | 2009-09-03 | 2011-03-03 | 248 Solid State, Inc. | Page based management of flash storage |
TW201243593A (en) * | 2011-04-28 | 2012-11-01 | Phison Electronics Corp | Data writing method, memory controller and memory storage apparatus |
TW201633136A (zh) * | 2015-03-10 | 2016-09-16 | 群聯電子股份有限公司 | 回應讀取方法及資料傳輸系統 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7107396B2 (en) * | 2003-10-31 | 2006-09-12 | International Business Machines Corporation | Chaining of blocks for optimal performance with DASD (Direct Access Storage Devices) free nonvolatile updates |
US7299314B2 (en) * | 2003-12-31 | 2007-11-20 | Sandisk Corporation | Flash storage system with write/erase abort detection mechanism |
US9542431B2 (en) * | 2008-10-24 | 2017-01-10 | Microsoft Technology Licensing, Llc | Cyclic commit transaction protocol |
WO2012016089A2 (en) * | 2010-07-28 | 2012-02-02 | Fusion-Io, Inc. | Apparatus, system, and method for conditional and atomic storage operations |
US9274937B2 (en) * | 2011-12-22 | 2016-03-01 | Longitude Enterprise Flash S.A.R.L. | Systems, methods, and interfaces for vector input/output operations |
US20140143476A1 (en) * | 2012-11-16 | 2014-05-22 | Rotem Sela | Usage of cache and write transaction information in a storage device |
US9218279B2 (en) * | 2013-03-15 | 2015-12-22 | Western Digital Technologies, Inc. | Atomic write command support in a solid state drive |
US20150074336A1 (en) * | 2013-09-10 | 2015-03-12 | Kabushiki Kaisha Toshiba | Memory system, controller and method of controlling memory system |
US10185632B2 (en) * | 2014-11-25 | 2019-01-22 | Sap Se | Data synchronization with minimal table lock duration in asynchronous table replication |
CN107797755B (zh) * | 2016-09-05 | 2021-01-08 | 上海宝存信息科技有限公司 | 固态硬盘系统的原子写入方法以及使用该方法的装置 |
-
2016
- 2016-11-17 TW TW105137591A patent/TWI616807B/zh active
-
2017
- 2017-01-10 US US15/402,239 patent/US9990152B1/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110055458A1 (en) * | 2009-09-03 | 2011-03-03 | 248 Solid State, Inc. | Page based management of flash storage |
TW201243593A (en) * | 2011-04-28 | 2012-11-01 | Phison Electronics Corp | Data writing method, memory controller and memory storage apparatus |
TW201633136A (zh) * | 2015-03-10 | 2016-09-16 | 群聯電子股份有限公司 | 回應讀取方法及資料傳輸系統 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI823792B (zh) * | 2023-02-24 | 2023-11-21 | 大陸商合肥兆芯電子有限公司 | 映射表更新方法、記憶體儲存裝置及記憶體控制電路單元 |
Also Published As
Publication number | Publication date |
---|---|
US20180136859A1 (en) | 2018-05-17 |
TW201820114A (zh) | 2018-06-01 |
US9990152B1 (en) | 2018-06-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10713178B2 (en) | Mapping table updating method, memory controlling circuit unit and memory storage device | |
TWI527037B (zh) | 資料儲存方法、記憶體控制電路單元與記憶體儲存裝置 | |
TWI551991B (zh) | 記憶體管理方法與系統及其記憶體儲存裝置 | |
TWI579696B (zh) | 資料重建方法與系統及其記憶體控制電路單元 | |
TWI423026B (zh) | 資料寫入方法、記憶體控制器與記憶體儲存裝置 | |
TWI592799B (zh) | 映射表更新方法、記憶體控制電路單元及記憶體儲存裝置 | |
TWI650757B (zh) | 解碼方法以及儲存控制器 | |
TWI459393B (zh) | 用於非揮發性記憶體的資料寫入方法、控制器與儲存裝置 | |
US10642731B2 (en) | Memory management method and storage controller | |
TWI486766B (zh) | 資料處理方法、記憶體控制器與記憶體儲存裝置 | |
TWI571882B (zh) | 平均磨損方法、記憶體控制電路單元及記憶體儲存裝置 | |
TWI584291B (zh) | 記憶體管理方法、記憶體控制電路單元及記憶體儲存裝置 | |
TWI616807B (zh) | 資料寫入方法以及儲存控制器 | |
TWI591482B (zh) | 資料保護方法、記憶體控制電路單元及記憶體儲存裝置 | |
TWI725416B (zh) | 資料寫入方法、記憶體控制電路單元以及記憶體儲存裝置 | |
US20190317673A1 (en) | Wear leveling method, memory control circuit unit and memory storage apparatus | |
CN107590080B (zh) | 映射表更新方法、存储器控制电路单元及存储器存储装置 | |
TWI651726B (zh) | 解碼方法以及儲存控制器 | |
TWI591640B (zh) | 記憶體管理方法、記憶體控制電路單元與記憶體儲存裝置 | |
CN111078146B (zh) | 存储器管理方法、存储器存储装置及存储器控制电路单元 | |
CN107045890B (zh) | 数据保护方法、存储器控制电路单元及存储器存储装置 | |
TWI651650B (zh) | 記憶體管理方法及使用所述方法的儲存控制器 | |
US9367390B2 (en) | Memory controlling method, memory storage device and memory controlling circuit unit | |
CN108108118B (zh) | 数据写入方法以及存储控制器 | |
CN113138720B (zh) | 数据存储方法、存储器控制电路单元以及存储器存储装置 |