TW201935232A - 記憶體管理方法及使用所述方法的儲存控制器 - Google Patents
記憶體管理方法及使用所述方法的儲存控制器 Download PDFInfo
- Publication number
- TW201935232A TW201935232A TW107103917A TW107103917A TW201935232A TW 201935232 A TW201935232 A TW 201935232A TW 107103917 A TW107103917 A TW 107103917A TW 107103917 A TW107103917 A TW 107103917A TW 201935232 A TW201935232 A TW 201935232A
- Authority
- TW
- Taiwan
- Prior art keywords
- block
- index code
- array
- time point
- physical
- Prior art date
Links
Classifications
-
- 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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
-
- 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
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/654—Look-ahead translation
-
- 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/7201—Logical 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)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本發明提出一種記憶體管理方法及使用所述方法的儲存控制器。記憶體管理方法包括:建立陣列;在起始時間點從閒置區塊中選出第一區塊並將第一區塊的第一索引碼儲存在預讀區塊中;在第一時間點將預讀區塊中的第一索引碼加入陣列中,從閒置區塊中選出第二區塊並以第二區塊的第二索引碼取代儲存在預讀區塊中的第一索引碼,並開始程式化第一區塊;以及在第二時間點將預讀區塊中的第二索引碼加入陣列中,從閒置區塊中選出第三區塊並以第三區塊的第三索引碼取代儲存在預讀區塊中的第二索引碼,並開始程式化第二區塊。
Description
本發明是有關於一種記憶體管理方法及使用所述方法的儲存控制器,且特別是有關於一種能提高無預警斷電時的資料回復能力的記憶體管理方法及使用所述方法的儲存控制器。
一般來說,在記憶體儲存裝置斷電之前,會先儲存邏輯轉實體位址映射表(logical to physical address mapping table)。當記憶體儲存裝置復電之後,控制器會根據記錄來判斷上次的斷電是屬於正常斷電(或安全斷電)或異常斷電(或突發斷電)。若上次斷電屬於正常斷電,則記憶體儲存裝置會從可複寫式非揮發性記憶體儲存模組中讀取最新的邏輯轉實體位址映射表。若上次斷電屬於異常斷電,除了讀取最新的邏輯轉實體位址映射表之外,控制器還要讀取所有在最新的邏輯轉實體位址映射表儲存後用來儲存使用者資料的區塊的邏輯區塊位址(Logical Block Address,LBA)資訊,並且將上述區塊的實體位址更新到邏輯轉實體位址映射表中。然而,控制器必須讀取記憶體儲存裝置所有區塊的區塊編號才能得到上述邏輯區塊位址資訊。這需要花費相當多的時間。因此,如何能在異常斷電後快速恢復邏輯轉實體位址映射表,是本領域技術人員應該致力的目標。
本發明提供一種記憶體管理方法及使用所述方法的儲存控制器,能在記憶體儲存裝置發生異常斷電之後快速恢復使用者資料。
本發明提出一種記憶體管理方法,包括建立一陣列,其中陣列在起始時間點為空值(null);在起始時間點從多個閒置區塊中選出第一區塊並將第一區塊的第一索引碼(index number)儲存在預讀(look-ahead)區塊中;在第一時間點將預讀區塊中的第一索引碼加入陣列中,從閒置區塊中選出第二區塊並以第二區塊的第二索引碼取代儲存在預讀區塊中的第一索引碼,並從第一時間點開始程式化第一區塊;以及在第二時間點將預讀區塊中的第二索引碼加入陣列中,從閒置區塊中選出第三區塊並以第三區塊的第三索引碼取代儲存在預讀區塊中的第二索引碼,並從第二時間點開始程式化第二區塊。
在本發明的一實施例中,若在第二時間點後且在陣列的第一索引碼及第二索引碼寫入對應陣列的實體區塊及第三索引碼寫入對應預讀區塊的實體區塊之前發生異常斷電,則在復電後根據陣列對應的實體區塊中的第一索引碼及預讀區塊對應的實體區塊中的第二索引碼來恢復資料。
在本發明的一實施例中,上述在第一時間點將預讀區塊中的第一索引碼加入陣列中的步驟包括:將第一索引碼儲存在陣列的第一元素(element),並將具有第一索引碼的陣列儲存在對應陣列的實體區塊的第一頁面。上述在第二時間點將預讀區塊中的第二索引碼加入陣列中的步驟包括:將第二索引碼儲存在陣列的第二元素,並將具有第一索引碼及第二索引碼的陣列儲存在對應陣列的實體區塊的第二頁面。
在本發明的一實施例中,上述第一區塊的所有實體頁面在第一時間點到第二時間點之間的時間間隔中被程式化。
在本發明的一實施例中,上述第一時間點在起始時間點後,且第二時間點在第一時間點後。
本發明提出一種儲存控制器,用於存取可複寫式非揮發性記憶體模組並經由連接介面電路耦接至主機系統。儲存控制器包括:記憶體介面控制電路,用以耦接至可複寫式非揮發性記憶體模組,其中可複寫式非揮發性記憶體模組包括多個實體區塊;處理器,耦接至連接介面電路單元及記憶體介面控制電路;以及資料傳輸管理電路,耦接至處理器、連接介面電路單元及記憶體介面控制電路。上述處理器建立一陣列,其中陣列在起始時間點為空值;在起始時間點從多個閒置區塊中選出第一區塊並將第一區塊的第一索引碼儲存在預讀區塊中;在第一時間點將預讀區塊中的第一索引碼加入陣列中,從閒置區塊中選出第二區塊並以第二區塊的第二索引碼取代儲存在預讀區塊中的第一索引碼,並從第一時間點開始程式化第一區塊;以及在第二時間點將預讀區塊中的第二索引碼加入陣列中,從閒置區塊中選出第三區塊並以第三區塊的第三索引碼取代儲存在預讀區塊中的第二索引碼,並從第二時間點開始程式化第二區塊。
在本發明的一實施例中,若在第二時間點後且在陣列的第一索引碼及第二索引碼寫入對應陣列的實體區塊及第三索引碼寫入對應預讀區塊的實體區塊之前發生異常斷電,則在復電後上述處理器根據陣列對應的實體區塊中的第一索引碼及預讀區塊對應的實體區塊中的第二索引碼來恢復資料。
在本發明的一實施例中,上述處理器將第一索引碼儲存在陣列的第一元素,並將具有第一索引碼的陣列儲存在對應陣列的實體區塊的第一頁面,且處理器將第二索引碼儲存在陣列的第二元素,並將具有第一索引碼及第二索引碼的陣列儲存在對應陣列的實體區塊的第二頁面。
在本發明的一實施例中,上述第一區塊的所有實體頁面在第一時間點到第二時間點之間的時間間隔中被程式化。
在本發明的一實施例中,上述第一時間點在起始時間點後,且第二時間點在第一時間點後。
基於上述,本發明的記憶體管理方法及使用所述方法的儲存控制器除了在第一時間點把第一時間點到第二時間點之間的時間間隔要進行程式化的區塊的索引碼加入到一個陣列之外,還會在第一時間點將第二個時間點才要開始進行程式化的區塊的索引碼記錄在一個預讀區塊中。如此一來,即使在第一時間點之後發生異常斷電且第一時間點最新的陣列資料及預讀區塊資料都還沒寫入實體區塊,控制器也可以根據第一時間點的上個時間點的陣列資料及預讀區塊資料來恢復使用者資料,而不需要讀取所有區塊的區塊編號。
為讓本發明的上述特徵和優點能更明顯易懂,下文特舉實施例,並配合所附圖式作詳細說明如下。
一般而言,儲存裝置包括可複寫式非揮發性記憶體模組(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)等以各式無線通訊技術為基礎的記憶體儲存裝置。此外,主機板20也可以透過系統匯流排耦接至全球定位系統(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也可以是其他適合的記憶體。更詳細來說,在本實施例中,主機記憶體120被劃分為多個記憶體頁面(Memory Page),以供指令與資料的儲存管理。每個記憶體頁面具有起始位址(Starting Address of Memory Page,SAMP)與結束位址(Ending Address of Memory Page,EAMP)。在本實施例中,每個記憶體頁面是利用16位元大小的位址來進行定位,例如,排序為第一個的記憶體頁面的起始位址(SAMP)可設定為 “0x0000”,並且結束位址(EAMP)可設定為 “0x0FFF”。 每個記憶體頁面的大小為4096位元組(Bytes)(即,4KB)。主機記憶體用來進行資料傳輸的記憶體頁面的總空間為64KB,即,共16個記憶體頁面。然而,本發明並不限於主機記憶體的位址定位方式。例如,在另一實施例中,主機記憶體可具有更多或是更少的空間,並且可對應地使用適合的定位方式來進行位址定位。
儲存控制器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。
其中,資料傳輸管理電路212耦接至處理器211、記憶體介面控制電路213與連接介面電路230。資料傳輸管理電路212用以接受處理器211的指示來進行資料的傳輸。例如,經由連接介面電路230從主機系統10(如,主機記憶體120)讀取資料,並且將所讀取的資料經由記憶體介面控制電路213寫入至可複寫式非揮發性記憶體模組220中。又例如,經由記憶體介面控制電路213從可複寫式非揮發性記憶體模組220讀取資料,並且將所讀取的資料經由連接介面電路230寫入至主機系統10(如,主機記憶體120)中。以下會再配合多個圖式與實施例來詳細說明本發明中資料傳輸管理電路212的功能。
記憶體介面控制電路213用以接受處理器211的指示,配合資料傳輸管理電路212來進行對於可複寫式非揮發性記憶體模組220的資料的寫入(亦稱,程式化,Programming)、讀取操作。記憶體介面控制電路213亦可對可複寫式非揮發性記憶體模組220進行抹除操作。
舉例來說,處理器211可執行寫入指令序列,以指示記憶體介面控制電路213將資料寫入至可複寫式非揮發性記憶體模組220中;處理器211可執行讀取指令序列,以指示記憶體介面控制電路213從可複寫式非揮發性記憶體模組220中讀取資料;處理器211可執行抹除指令序列,以指示記憶體介面控制電路213對可複寫式非揮發性記憶體模組220進行抹除操作。寫入指令序列、讀取指令序列及抹除指令序列可各別包括一或多個程式碼或指令碼並且用以指示對可複寫式非揮發性記憶體模組220執行相對應的寫入、讀取及抹除等操作。在一實施例中,處理器211還可以下達其他類型的指令序列給記憶體介面控制電路213,以對可複寫式非揮發性記憶體模組220執行相對應的操作。
此外,欲寫入至可複寫式非揮發性記憶體模組220的資料會經由記憶體介面控制電路213轉換為可複寫式非揮發性記憶體模組220所能接受的格式。具體來說,若處理器211要存取可複寫式非揮發性記憶體模組220,處理器211會傳送對應的指令序列給記憶體介面控制電路213以指示記憶體介面控制電路213執行對應的操作。例如,這些指令序列可包括指示寫入資料的寫入指令序列、指示讀取資料的讀取指令序列、指示抹除資料的抹除指令序列、以及用以指示各種記憶體操作(例如,改變讀取電壓準位或執行垃圾回收程序等等)的相對應的指令序列。這些指令序列可包括一或多個訊號,或是在匯流排上的資料。這些訊號或資料可包括指令碼或程式碼。例如,在讀取指令序列中,會包括讀取的辨識碼、記憶體位址等資訊。
在本實施例中,記憶體介面控制電路213還會辨識配置給可複寫式非揮發性記憶體模組220的邏輯區塊的狀態。記憶體介面控制電路213亦可辨識可複寫式非揮發性記憶體模組220的實體區塊的狀態。更詳細來說,當記憶體介面控制電路213根據讀取/寫入指令發出讀取/寫入請求給可複寫式非揮發性記憶體模組220後,記憶體介面控制電路213會辨識對應的可複寫式非揮發性記憶體模組220的儲存單元(如,實體區塊、實體頁面,或是對應的邏輯區塊、邏輯頁面)的狀態是否為就緒狀態(readiness)。舉例來說,當記憶體介面控制電路213辨識到對應讀取/寫入指令的實體區塊以準備好進行資料傳輸時,記憶體介面控制電路213會回報映射至所述實體區塊的邏輯區塊為就緒狀態。換句話說,記憶體介面控制電路213會根據判斷邏輯區塊所映射的實體區塊是否準備好進行資料傳輸來判斷所述邏輯區塊的狀態是否為就緒狀態。記憶體介面控制電路213可主動判斷對應的實體區塊的狀態是否準備好進行資料傳輸,也可被動地接收來自可複寫式非揮發性記憶體模組220的對應的實體區塊的狀態回報,本發明不限於記憶體介面控制電路213如何辨識欲進行資料存取的實體區塊/邏輯區塊是否為就緒狀態的方法。
可複寫式非揮發性記憶體模組220是耦接至記憶體控制電路單元404並且用以儲存主機系統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)實體程式化單元。
在一實施例中,若每一個記憶胞被用以儲存2個位元,則同一條字元線(或同一個字元線層)上的實體程式化單元可被分類為一個下實體程式化單元與一個上實體程式化單元。例如,一記憶胞的最低有效位元(Least Significant Bit,LSB)是屬於下實體程式化單元,並且一記憶胞的最高有效位元(Most Significant Bit,MSB)是屬於上實體程式化單元。一般來說,下實體程式化單元的寫入速度會大於上實體程式化單元的寫入速度,及/或下實體程式化單元的可靠度會高於上實體程式化單元的可靠度。在另一實施例中,若每一個記憶胞被用以儲存3個位元,則同一條字元線(或同一個字元線層)上的實體程式化單元可被分類為一個下實體程式化單元、一個上實體程式化單元及一個額外(extra)實體程式化單元。例如,一記憶胞的最低有效位元是屬於下實體程式化單元,一記憶胞的中間有效位元(Central Significant Bit,CSB)是屬於上實體程式化單元,並且一記憶胞的的最高有效位元是屬於額外實體程式化單元。
在本實施例中,資料是以實體區塊為單位作為寫入資料(程式化)的儲存單元。實體區塊亦可稱為實體抹除單元或實體單元。實體抹除單元為抹除之最小單位。亦即,每一實體抹除單元含有最小數目之一併被抹除之記憶胞。每一實體區塊會具有多個實體程式化單元。實體程式化單元為實體頁面(page)或是實體扇(sector)。若實體程式化單元為實體頁面,則此些實體程式化單元通常包括資料位元區與冗餘(redundancy)位元區。資料位元區包含多個實體扇,用以儲存使用者資料,而冗餘位元區用以儲存系統資料(例如,錯誤更正碼)。
然而,本發明不限於此。例如,在另一實施例中,亦可變化本實施例所述的資料傳輸方法,應用至以實體程式化單元為單位作為寫入資料的儲存單元的可複寫式非揮發性記憶體模組220。
在一實施例中,儲存控制器210是基於實體單元來管理可複寫式非揮發性記憶體模組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的電源。
在一實施例中,儲存控制器210可記錄一個陣列,陣列中的元素儲存了在邏輯轉實體位址映射表儲存到可複寫式非揮發性記憶體模組220之後要被程式化的區塊的索引碼。因此,當發生異常斷電時,儲存控制器210就可讀取上述陣列中所記錄的索引碼,而不需要掃描所有閒置區塊來確認邏輯轉實體位址映射表儲存到可複寫式非揮發性記憶體模組220後要被程式化的區塊。然而,若在一個區塊開始被程式化之後且最新的陣列資訊還沒被寫入可複寫式非揮發性記憶體模組220之前發生異常斷電,要寫入此區塊的資料將會全數遺失。為了解決這個問題,儲存控制器210可在確認陣列資料寫入可複寫式非揮發性記憶體模組220之後才進行此區塊的寫入操作。然而,這會浪費掉許多時間資源,因為陣列中所有區塊的索引碼的大小相當大。
圖2是根據本發明一實施例的記憶體管理方法的流程圖。圖3是根據本發明一實施例的記憶體管理方法的示意圖。圖4是根據本發明一實施例的用來儲存陣列的區塊的示意圖。
請參照圖2,在步驟S201中,建立一陣列,其中上述陣列在起始時間點為空值。
舉例來說,在圖3及圖4中,儲存控制器210會在時間點0建立陣列310,此時的陣列310為空值(NULL),因此用以儲存陣列310的實體區塊400的第零頁面410(即,實體頁面或實體程式化單元)並未儲存任何資料。
在步驟S203中,在起始時間點從多個閒置區塊中選出第一區塊並將第一區塊的第一索引碼儲存在預讀區塊中。
舉例來說,在圖3中,儲存控制器210還會在時間點0從閒置區塊中選出區塊5(即,第一區塊),並將區塊5的索引碼5 儲存在預讀區塊320中。
在步驟S205中,在第一時間點將預讀區塊中的第一索引碼加入陣列中,從閒置區塊中選出第二區塊並以第二區塊的第二索引碼取代儲存在預讀區塊中的第一索引碼,並從第一時間點開始程式化第一區塊。
舉例來說,在圖3及圖4中,儲存控制器210會在時間點t1將預讀區塊320中的索引碼5加入陣列310中,並從閒置區塊中選出區塊30(即,第二區塊),並以區塊30的索引碼30取代儲存在預讀區塊320中的索引碼5。此時,陣列310的第一元素為索引碼5,且索引碼5會儲存在實體區塊400的第一頁面411中。儲存控制器210會從時間點t1開始程式化區塊5。
在步驟S207中,在第二時間點將預讀區塊中的第二索引碼加入陣列中,從閒置區塊中選出第三區塊並以第三區塊的第三索引碼取代儲存在預讀區塊中的第二索引碼,並從第二時間點開始程式化第二區塊。
舉例來說,在圖3及圖4中,儲存控制器210會在時間點t2將預讀區塊320中的索引碼30加入陣列310中,並從閒置區塊中選出區塊16(即,第三區塊),並以區塊16的索引碼16取代儲存在預讀區塊320中的索引碼30。此時,陣列310的第一元素為索引碼5且第二元素為索引碼30,且索引碼5及索引碼30會儲存在實體區塊400的第二頁面412中。儲存控制器210會從時間點t2開始程式化區塊30。
此外,儲存控制器210會在時間點t3將預讀區塊320中的索引碼16加入陣列310中,並從閒置區塊中選出區塊23,並以區塊23的索引碼23取代儲存在預讀區塊320中的索引碼16。此時,陣列310的第一元素為索引碼5且第二元素為索引碼30且第三元素為索引碼16,且索引碼5及索引碼30及索引碼16會儲存在實體區塊400的第三頁面413中。儲存控制器210會從時間點t3開始程式化區塊16。
值得注意的是,區塊5的所有頁面會在時間點t1到時間點t2之間被程式化,且區塊30的所有頁面會在時間點t2到時間點t3之間被程式化。
在步驟S209中,若在第二時間點後且在陣列的第一索引碼及第二索引碼寫入對應陣列的實體區塊及第三索引碼寫入對應預讀區塊的實體區塊之前發生異常斷電,則在復電後根據陣列對應的實體區塊中的第一索引碼及預讀區塊對應的實體區塊中的第二索引碼來恢復資料。
舉例來說,若在時間點t1之後發生異常斷電,而在斷電時預讀區塊320中的索引碼30以及陣列310中的索引碼5還沒完整寫入實體區塊400的第一頁面411,則儲存控制器210會在復電後根據實體區塊400的第零頁面410的預讀區塊320中儲存的索引碼5以來掃描區塊5,以恢復使用者資料。
舉例來說,若在時間點t2之後發生異常斷電,而在斷電時預讀區塊320中的索引碼16以及陣列310中的索引碼5及索引碼30還沒寫入實體區塊400的第二頁面412,則儲存控制器210會在復電後根據實體區塊400的第一頁面411的陣列310中儲存的索引碼5以及預讀區塊320的索引碼30來掃描區塊5及區塊30,以恢復使用者資料。
另一方面,若在時間點t3之後發生異常斷電,而在斷電時預讀區塊320中的索引碼23以及陣列310中的索引碼5、索引碼30及索引碼16還沒寫入實體區塊400的第三頁面413,則儲存控制器210會在復電後根據實體區塊400的第一頁面412的陣列310中儲存的索引碼5、30以及預讀區塊320的索引碼16來掃描區塊5、區塊30及區塊16,以恢復使用者資料。
綜上所述,本發明的記憶體管理方法及使用所述方法的儲存控制器除了在第一時間點把第一時間點到第二時間點之間的時間間隔要進行程式化的區塊的索引碼加入到一個陣列之外,還會在第一時間點將第二個時間點才要開始進行程式化的區塊的索引碼記錄在一個預讀區塊中。如此一來,即使在第一時間點之後發生異常斷電且第一時間點最新的陣列資料及預讀區塊資料都還沒寫入實體區塊,控制器也可以根據第一時間點的上個時間點的陣列資料及預讀區塊資料來恢復使用者資料,而不需要讀取所有區塊的區塊編號。
雖然本發明已以實施例揭露如上,然其並非用以限定本發明,任何所屬技術領域中具有通常知識者,在不脫離本發明的精神和範圍內,當可作些許的更動與潤飾,故本發明的保護範圍當視後附的申請專利範圍所界定者為準。
10‧‧‧主機系統
20‧‧‧儲存裝置
110、211‧‧‧處理器
120‧‧‧主機記憶體
130‧‧‧資料傳輸介面電路
210‧‧‧儲存控制器
212‧‧‧資料傳輸管理電路
213‧‧‧記憶體介面控制電路
220‧‧‧可複寫式非揮發性記憶體模組
230‧‧‧連接介面電路
S201、S203、S205、S207、S209‧‧‧記憶體管理方法的步驟
310‧‧‧陣列
320‧‧‧預讀區塊
400‧‧‧實體區塊
410‧‧‧第零頁面
411‧‧‧第一頁面
412‧‧‧第二頁面
413‧‧‧第三頁面
圖1是根據本發明的一實施例所繪示的主機系統及儲存裝置的方塊示意圖。 圖2是根據本發明一實施例的記憶體管理方法的流程圖。 圖3是根據本發明一實施例的記憶體管理方法的示意圖。 圖4是根據本發明一實施例的用來儲存陣列的區塊的示意圖。
Claims (10)
- 一種記憶體管理方法,包括: 建立一陣列,其中該陣列在一起始時間點為空值(null); 在該起始時間點從多個閒置區塊中選出一第一區塊並將該第一區塊的一第一索引碼(index number)儲存在一預讀(look-ahead)區塊中; 在一第一時間點將該預讀區塊中的該第一索引碼加入該陣列中,從該些閒置區塊中選出一第二區塊並以該第二區塊的一第二索引碼取代儲存在該預讀區塊中的該第一索引碼,並從該第一時間點開始程式化該第一區塊;以及 在一第二時間點將該預讀區塊中的該第二索引碼加入該陣列中,從該些閒置區塊中選出一第三區塊並以該第三區塊的一第三索引碼取代儲存在該預讀區塊中的該第二索引碼,並從該第二時間點開始程式化該第二區塊。
- 如申請專利範圍第1項所述的記憶體管理方法,其中若在該第二時間點後且在該陣列的該第一索引碼及該第二索引碼寫入對應該陣列的實體區塊及該第三索引碼寫入對應該預讀區塊的實體區塊之前發生異常斷電,則在復電後根據該陣列對應的實體區塊中的該第一索引碼及該預讀區塊對應的實體區塊中的該第二索引碼來恢復資料。
- 如申請專利範圍第1項所述的記憶體管理方法,其中在該第一時間點將該預讀區塊中的該第一索引碼加入該陣列中的步驟包括:將該第一索引碼儲存在該陣列的一第一元素(element),並將具有該第一索引碼的該陣列儲存在對應該陣列的實體區塊的一第一頁面;其中在該第二時間點將該預讀區塊中的該第二索引碼加入該陣列中的步驟包括:將該第二索引碼儲存在該陣列的一第二元素,並將具有該第一索引碼及該第二索引碼的該陣列儲存在對應該陣列的實體區塊的一第二頁面。
- 如申請專利範圍第1項所述的記憶體管理方法,其中該第一區塊的所有實體頁面在該第一時間點到該第二時間點之間的時間間隔中被程式化。
- 如申請專利範圍第1項所述的記憶體管理方法,其中該第一時間點在該起始時間點後,且該第二時間點在該第一時間點後。
- 一種儲存控制器,用於存取一可複寫式非揮發性記憶體模組並經由一連接介面電路耦接至一主機系統,該儲存控制器包括: 一記憶體介面控制電路,用以耦接至該可複寫式非揮發性記憶體模組,其中該可複寫式非揮發性記憶體模組包括多個實體區塊; 一處理器,耦接至該連接介面電路單元及該記憶體介面控制電路;以及 一資料傳輸管理電路,耦接至該處理器、該連接介面電路單元及該記憶體介面控制電路,其中該處理器 建立一陣列,其中該陣列在一起始時間點為空值(null); 在該起始時間點從該些實體區塊中的多個閒置區塊中選出一第一區塊並將該第一區塊的一第一索引碼(index number)儲存在一預讀(look-ahead)區塊中; 在一第一時間點將該預讀區塊中的該第一索引碼加入該陣列中,從該些閒置區塊中選出一第二區塊並以該第二區塊的一第二索引碼取代儲存在該預讀區塊中的該第一索引碼,並從該第一時間點開始程式化該第一區塊;以及 在一第二時間點將該預讀區塊中的該第二索引碼加入該陣列中,從該些閒置區塊中選出一第三區塊並以該第三區塊的一第三索引碼取代儲存在該預讀區塊中的該第二索引碼,並從該第二時間點開始程式化該第二區塊。
- 如申請專利範圍第6項所述的儲存控制器,其中若在該第二時間點後且在該陣列的該第一索引碼及該第二索引碼寫入對應該陣列的實體區塊及該第三索引碼寫入對應該預讀區塊的實體區塊之前發生異常斷電,則該處理器在復電後根據該陣列對應的實體區塊中的該第一索引碼及該預讀區塊對應的實體區塊中的該第二索引碼來恢復資料。
- 如申請專利範圍第6項所述的儲存控制器,其中該處理器將該第一索引碼儲存在該陣列的一第一元素(element),並將具有該第一索引碼的該陣列儲存在對應該陣列的實體區塊的一第一頁面,且該處理器將該第二索引碼儲存在該陣列的一第二元素,並將具有該第一索引碼及該第二索引碼的該陣列儲存在對應該陣列的實體區塊的一第二頁面。
- 如申請專利範圍第6項所述的儲存控制器,其中該第一區塊的所有實體頁面在該第一時間點到該第二時間點之間的時間間隔中被程式化。
- 如申請專利範圍第6項所述的儲存控制器,其中該第一時間點在該起始時間點後,且該第二時間點在該第一時間點後。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW107103917A TWI651650B (zh) | 2018-02-05 | 2018-02-05 | 記憶體管理方法及使用所述方法的儲存控制器 |
US15/993,610 US10496549B2 (en) | 2018-02-05 | 2018-05-31 | Memory manage method and storage controller using the same |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW107103917A TWI651650B (zh) | 2018-02-05 | 2018-02-05 | 記憶體管理方法及使用所述方法的儲存控制器 |
Publications (2)
Publication Number | Publication Date |
---|---|
TWI651650B TWI651650B (zh) | 2019-02-21 |
TW201935232A true TW201935232A (zh) | 2019-09-01 |
Family
ID=66213752
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW107103917A TWI651650B (zh) | 2018-02-05 | 2018-02-05 | 記憶體管理方法及使用所述方法的儲存控制器 |
Country Status (2)
Country | Link |
---|---|
US (1) | US10496549B2 (zh) |
TW (1) | TWI651650B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI670599B (zh) * | 2018-08-28 | 2019-09-01 | 大陸商深圳大心電子科技有限公司 | 記憶體管理方法以及儲存控制器 |
US11256423B2 (en) * | 2019-10-14 | 2022-02-22 | Western Digital Technologies, Inc. | Efficiently identifying command readiness based on system state and data spread in multi queue depth environment |
TWI755059B (zh) * | 2020-09-11 | 2022-02-11 | 大陸商合肥沛睿微電子股份有限公司 | 儲存設備及其異常斷電恢復方法 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7139864B2 (en) * | 2003-12-30 | 2006-11-21 | Sandisk Corporation | Non-volatile memory and method with block management system |
KR101246833B1 (ko) * | 2007-12-20 | 2013-03-28 | 삼성전자주식회사 | 저항체를 이용한 비휘발성 메모리 장치, 이를 포함하는메모리 시스템, 및 이의 구동 방법 |
US9569320B2 (en) * | 2010-12-01 | 2017-02-14 | Seagate Technology Llc | Non-volatile memory program failure recovery via redundant arrays |
WO2012099937A2 (en) * | 2011-01-18 | 2012-07-26 | Lsi Corporation | Higher-level redundancy information computation |
EP2764516A4 (en) * | 2011-10-05 | 2015-07-08 | Lsi Corp | SELF-HISTORIZATION AND HIERARCHICAL CONSISTENCY FOR NON-VOLATILE STORES |
US10198321B1 (en) * | 2014-04-01 | 2019-02-05 | Storone Ltd. | System and method for continuous data protection |
KR102314459B1 (ko) * | 2014-08-12 | 2021-10-19 | 삼성전자주식회사 | 이동 통신 시스템에서 간섭 제어 방법 및 장치 |
US10331364B2 (en) * | 2015-10-16 | 2019-06-25 | Cnex Labs, Inc. | Method and apparatus for providing hybrid mode to access SSD drive |
-
2018
- 2018-02-05 TW TW107103917A patent/TWI651650B/zh active
- 2018-05-31 US US15/993,610 patent/US10496549B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US10496549B2 (en) | 2019-12-03 |
US20190243774A1 (en) | 2019-08-08 |
TWI651650B (zh) | 2019-02-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI679537B (zh) | 資料移動方法及儲存控制器 | |
US10120615B2 (en) | Memory management method and storage controller using the same | |
TWI592799B (zh) | 映射表更新方法、記憶體控制電路單元及記憶體儲存裝置 | |
CN107590080B (zh) | 映射表更新方法、存储器控制电路单元及存储器存储装置 | |
TWI479505B (zh) | 資料管理方法、記憶體控制器與記憶體儲存裝置 | |
TW201712549A (zh) | 緩衝記憶體管理方法、記憶體控制電路單元及記憶體儲存裝置 | |
TWI463313B (zh) | 記憶體管理方法、記憶體控制器與記憶體儲存裝置 | |
TWI421870B (zh) | 用於快閃記憶體的資料寫入方法及其控制器與儲存系統 | |
TWI479315B (zh) | 記憶體儲存裝置、其記憶體控制器與資料寫入方法 | |
TW201947402A (zh) | 記憶體管理方法以及儲存控制器 | |
TWI451439B (zh) | 記憶體儲存裝置、其記憶體控制器與資料寫入方法 | |
CN113590503B (zh) | 一种非挥发性记忆体存储器的垃圾回收方法与垃圾回收系统 | |
TWI650639B (zh) | 記憶體管理方法、記憶體控制電路單元與記憶體儲存裝置 | |
TW201945935A (zh) | 整理指令記錄方法、記憶體控制電路單元與記憶體儲存裝置 | |
TWI651650B (zh) | 記憶體管理方法及使用所述方法的儲存控制器 | |
US9778862B2 (en) | Data storing method for preventing data losing during flush operation, memory control circuit unit and memory storage apparatus | |
CN112051971B (zh) | 数据整并方法、存储器存储装置及存储器控制电路单元 | |
CN109273033B (zh) | 存储器管理方法、存储器控制电路单元与存储器存储装置 | |
TWI635495B (zh) | 資料寫入方法、記憶體控制電路單元與記憶體儲存裝置 | |
TW202344970A (zh) | 基於資料優先級的風險評估方法、記憶體儲存裝置及記憶體控制電路單元 | |
TWI747191B (zh) | 資料儲存裝置與資料處理方法 | |
CN110162493B (zh) | 存储器管理方法及使用所述方法的储存控制器 | |
TWI826161B (zh) | 記憶體管理方法、記憶體儲存裝置及記憶體控制電路單元 | |
TWI813362B (zh) | 部分抹除管理方法、記憶體儲存裝置及記憶體控制電路單元 | |
TWI818370B (zh) | 資料儲存分配方法、記憶體儲存裝置及記憶體控制電路單元 |