TW201636845A - 記憶體裝置與其操作方法 - Google Patents
記憶體裝置與其操作方法 Download PDFInfo
- Publication number
- TW201636845A TW201636845A TW104119484A TW104119484A TW201636845A TW 201636845 A TW201636845 A TW 201636845A TW 104119484 A TW104119484 A TW 104119484A TW 104119484 A TW104119484 A TW 104119484A TW 201636845 A TW201636845 A TW 201636845A
- Authority
- TW
- Taiwan
- Prior art keywords
- cache
- mapping
- memory controller
- data
- memory
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operations
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operations
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1441—Resetting or repowering
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; 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
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operations
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1405—Saving, restoring, recovering or retrying at machine instruction level
- G06F11/141—Saving, restoring, recovering or retrying at machine instruction level for bus or memory accesses
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/62—Details of cache specific to multiprocessor cache arrangements
- G06F2212/621—Coherency control relating to peripheral accessing, e.g. from DMA or I/O device
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Quality & Reliability (AREA)
- Computer Security & Cryptography (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Memory System (AREA)
Abstract
一種記憶體裝置,包括一記憶體控制器與一非揮發性記憶體。非揮發性記憶體耦接到記憶體控制器並儲存一映射表與一日誌表。該記憶體控制器用以將一資料及該資料之一邏輯位址寫到該非揮發性記憶體,並從非揮發性記憶體的映射表載入相關於該資料的邏輯位址的映射資訊到記憶體控制器的一映射快取。並且,記憶體控制器更用以使用該資料的邏輯位址與該資料的物理位址之間的一更新映射關係更新該映射快取,並執行一日誌操作以將該更新映射關係寫到日誌表。
Description
本揭露是有關於一種記憶體裝置與其操作方法,特別於,一記憶體裝置包括一非揮發性記憶體。
非揮發性記憶體裝置是一種即使在移除電源供應時仍可連續儲存資料的半導體裝置。快閃記憶體為非揮發性裝置中已被發展的一種類型。快閃記憶體的操作通常包含將更新資料寫入到一未使用的物理位置。為了要有效追蹤快閃記憶體中資料的物理位址,提供一映射表到快閃記憶體以儲存外部系統可使用的資料的邏輯位址與快閃記憶體可使用的資料的物理位址之間的映射資訊。
根據本揭露的一實施例,記憶體裝置包含一記憶體控制器與一非揮發性記憶體。非揮發性記憶體耦接到記憶體控制器並儲存一映射表與一日誌表。記憶體控制器用以將一資料及該資料的一邏輯位址寫到非揮發性記憶體,並從非揮發性記憶體的映射表載入相關於該資料的邏輯位址的映射資訊到記憶體控制器的映射快取。並且,記憶體控制器更用以使用該資料的邏輯位址與該資料的物理位址之間的一更新映射關係更新該映射快取,並執行一日誌操作以將該更新映射關係寫到日誌表。
根據本揭露的另一實施例,提供一種由記憶體控制器控制記憶體裝置的方法。記憶體裝置包括一非揮發性記憶體,用以儲存映射表與日誌表。此方法包括:將資料與該資料的邏輯位址寫到非揮發性記憶體,並從非揮發性記憶體的映射表載入相關於資料的邏輯位址的映射資訊到記憶體控制器的映射快取。此方法更包括以該資料的邏輯位址與該資料的物理位址之間的更新映射關係更新映射快取,並且執行一日誌操作以將該更新映射關係寫到日誌表。
根據本揭露的又一個實施例,提供一種控制非揮發性記憶體的記憶體控制器。非揮發性記憶體儲存一映射表與一日誌表。記憶體控制器包括一處理電路用以將資料及該資料的邏輯位址入到非揮發性記憶體,並從非揮發性記憶體的映射表載入相關於該資料的邏輯位址的一映射資訊到記憶體控制器的映射快取。此處理電路更用以使用該資料的邏輯位址與該資料的物理位址之間的一更新映射關係更新該映射快取,並且執行一日誌操作以將更新映射關係寫到日誌表。
所附的圖示包含在說明書中,並與說明書構成本說明書的一部份,圖式示出了本揭露的幾個實施例,並且可參照說明書用以解釋本揭露的實施例。
100‧‧‧電腦系統
110‧‧‧系統端
115‧‧‧記憶體裝置
120‧‧‧記憶體控制器
122‧‧‧處理電路
124‧‧‧SRAM
128‧‧‧映射快取
130‧‧‧寫回快取
140‧‧‧快閃記憶體
142‧‧‧記憶區域
142a、142b、142i、320、420、520、620‧‧‧資料區塊
144‧‧‧映射表
146‧‧‧日誌表
210‧‧‧應用層
220‧‧‧檔案系統
230‧‧‧快閃轉換層
804‧‧‧初始化映射快取和寫回快取
806‧‧‧指定快閃記憶體的一空閒資料區塊用於寫入資料
808‧‧‧接收寫入要求寫入資料及邏輯位址
810‧‧‧寫入資料和該資料的邏輯位址到資料區塊的一頁
812‧‧‧判斷映射快取是否包含邏輯位址的映射資訊
814‧‧‧判斷映射快取是否已裝滿
816‧‧‧將在映射快取中較少使用的快取的映射資訊寫回到快閃記憶體的映射表
818‧‧‧紀錄寫回快取的寫回資訊
820‧‧‧從快閃記憶體載入相關於對應邏輯位址的一邏輯區塊的映射資訊到映射快取中
822‧‧‧以資料的邏輯位址與資料的一物理位址之間的一更新映射關係更新映射快取
824‧‧‧判斷目前資料區塊是否已裝滿?
826‧‧‧執行一日誌操作
906‧‧‧讀取日誌表中最後一頁的映射資訊包含的快取號碼
908‧‧‧設定N=1
910‧‧‧讀取日誌表中第N頁的寫回資訊包含的快取號碼
912‧‧‧判斷映射快取中是否也存在任何快取號碼
914‧‧‧從映射快取中移除相關於快取號碼的映射資訊
916‧‧‧讀取日誌表中第N頁的映射資訊包含的快取號碼
918‧‧‧判斷日誌表中最後一頁的映射資訊中是否也存在任何快取號碼
920‧‧‧從快閃記憶體的映射表載入相關於快取號碼地映射資訊到映射快取中
922‧‧‧以日誌表第N頁的映射資訊更新映射快取
924‧‧‧判斷第N頁是否為最後一頁
926‧‧‧設定N=N+1
928‧‧‧以現在資料區塊的映射資訊更新映射快取
圖1繪示依據一實施例的一電腦系統的方塊圖。
圖2繪示依據一實施例的如圖1的電腦系統的軟體層的方塊圖。
圖3~6繪示依據一實施例的一寫入程序的一例。
圖7繪示依據一實施例的一恢復程序的一例。
圖8繪示依據一實施例的一記憶體控制器執行的寫入程序的流程圖。
圖9繪示依據一實施例的一記憶體控制器執行的恢復程序的流程圖。
參照圖式描述本揭露的實施例。盡可能地,圖式中相同的參考符號用來表示相同或相似的元件。
圖1繪示依據一實施例的一電腦系統的方塊圖(在此文中稱為系統100)。該系統100包含有一系統端110與一記憶體裝置115,記憶體裝置115包含一記憶體控制器120與耦接到記憶體控制器120的一非揮發性記憶體140。非揮發性記憶體140能夠藉由一快閃記憶體執行。在下文中,非揮發性記憶體140被稱為快閃記憶體140。然而對於本領域具有通常知識者而言,非揮發性記憶體140可藉由任何其他種非揮發性記憶體執行,如一唯讀記憶體(ROM)、一鐵電隨機存取記憶體(F-RAM)、一磁性的電腦儲存裝置或一光碟。
系統端110傳送一讀取或一寫入要求到記憶體裝置115的記憶體控制器120。記憶體控制器120能回應系統端110接收的該讀取或該寫入要求而控制快閃記憶體140的操作。
記憶體控制器120包含一處理電路122與一揮發性記憶體124。該處理電路122控制記憶體控制器120的全部操作。揮發性記憶體124可藉由一快速隨機存取記憶體,例如動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM)或相變化隨機存取記憶體(PRAM)執行。在下文中,揮發性記憶體124被稱為SRAM 124。然而,對於本領域具有通常知識者而言,揮發性記憶體124可藉由任何其他種揮發性記憶體能執行,例如DRAM或PRAM。SRAM 124作為記憶體控制器120的工作記憶體。SRAM 124儲存映射快取128及寫回快取130。映射快取128暫時儲存記憶體控制器120使用的映射資訊。寫回快取130用來紀錄兩個連續的日誌操作之間執行在映射快取128上的多個操作,將完整描述如下。
快閃記憶體140包含複數個資料區塊,資料區塊用來儲存記憶區域142的資料、映射表144的映射資訊、以及日誌表146的日誌資訊。記憶區域142儲存系統端110經由記憶體控制器120接收的使用者資料。資料區塊142由複數個資料區塊142a,142b,…,142i組成,每一個資料區塊包含複數個頁面。每一個資料區塊142a,142b,…,142i包含一資料區域用來儲存使用者資料,以及一保留區域(spare area)用來儲存相關於儲存在資料區塊的使用者資料的額外資訊,例如使用者資料的物理位址及/或邏輯位址。映射表144儲存記憶區域142中的儲存的資料的邏輯位址與物理位址之間的映射資訊。日誌表146儲存日誌資訊,此日誌資訊為因為記憶體控制器120執行的一操作(例如一寫入操作)而改變的映射資訊。更具體地說,日誌表146包含一映射資訊區域以儲存映射快取128的更新映射資訊、一最後快取區域以儲存映射快取128的映射資訊,以及一寫回區域以儲存寫回快取130的寫回資訊。
圖2繪示依據一實施例的如圖1的電腦系統的軟體層的方塊圖。請參照圖2,系統100的軟體層包含一應用層210、一檔案系統220、一快閃轉換層(FTL) 230以及一快閃記憶體140。應用層210包含執行在系統100上的多種應用程式。檔案系統220組織欲儲存到快閃記憶體140的資料或檔案。檔案系統220被系統端110驅動。快閃轉換層230提供在系統端110與快閃記憶體140之間的一介面。在一些實施例,快閃轉換層230接收由檔案系統220所產生的邏輯位址(LA),並將邏輯位址轉換成快閃記憶體能使用的物理位址(PA)。
如先前所述,記憶體控制器120的工作記憶體可由SRAM 124形成,其為一揮發性記憶體。也就是說,當提供到SRAM 124電源供給中斷時,儲存於SRAM 124的資料會消失,而導致儲存在SRAM 124與儲存在快閃記憶體140的資料之間會不一致。現在已提出一種解決此問題的方法,即以週期性的將SRAM 124的全部資料複製到快閃記憶體140,以使在電源中斷時,快閃記憶體140的資料能被恢復或者能與SRAM的資料一致。然而,週期性複製SRAM 124的全部資料到快閃記憶體140將導致資料處理的大量負擔,而降低系統效能。相反地,根據本揭露實施例的有效率的日誌方法將幾乎負擔而實現可靠的管理儲存在SRAM 124的資料。
圖3~6繪示依據一實施例的用於管理儲存在SRAM124的資料的一寫入程序的一例。在圖3~6的例子中,一邏輯位址“N_M”(N與M代表任一大於或等於0的整數)代表一邏輯區塊號碼“N”與一邏輯頁面號碼“M”。相似地,一物理位址“A_B”(A與B代表任一大於或等於的整數,且 )代表一物理區塊號碼“A”與一物理頁面號碼“B”。
在圖3~6的例子中,一映射表包含複數個單元,其中該些單元由行與列所排列。每一個單元表示一邏輯位址與一物理位址的映射關係。在映射表中,一單元的位址(一列號碼“N”與一行號碼“M” )表示一邏輯位址“N_M”。包含在映射表的一個單元的資訊“A_B”表示一物理位址“A_B”。
在圖3~6的例子中,假設快閃記憶體140的每一個資料區塊有4頁。然而,本領域具有通常知識者可理解的是快閃記憶體140的每一個資料區塊可以有超過4頁。
在圖3~6的例子中,假設映射快取128包含以4行和2列排列的複數個單元,並可儲存兩個邏輯區塊的映射資訊。映射快取128中的每一列有一快取號碼[#N],其表示一邏輯區塊號碼“N”。一行號碼“M”表示一邏輯頁號碼“M”。也就是說,快取[#N]的第M列的一單元代表一邏輯位址“N_M”。除此之外,包含在映射快取128的一單元的資訊“A_B”代表一物理位址“A_B”。因此,映射快取128可儲存超過兩個邏輯區塊的映射資訊。
在圖3~6的例子中,圖示左半邊的表格被儲存在SRAM 124,以及圖示右半邊的表格被儲存在快閃記憶體140。
請參照圖3,首先,在步驟311啟動系統100。在這個階段時,SRAM的映射快取128與寫回快取130皆為空的,而快閃記憶體140的映射表144儲存該完整的映射表。如圖3所示的映射表144所指示的 (當系統100啟動時),邏輯位址LA “0_0”映射到物理位址PA “0_0”,以及邏輯位址LA“0_1”映射到物理位址PA“0_1”,等等。
在步驟312中,當記憶體控制器120接收一寫入要求以寫入資料1及LA “0_0”到快閃記憶體140時,記憶體控制器120指定具有一物理區塊號碼“101”的一空閒資料區塊320以寫入資料。之後記憶體控制器120寫入資料1到資料區塊320的第一頁(例如頁“0”)的資料區域,資料區塊320的第1頁有物理位址PA “101_0”。記憶體控制器120也寫入資料1的邏輯位址LA “0_0”到資料區塊320的第一頁的一保留區域。
現在邏輯位址LA “0_0”映射到物理位址PA “101_0”,而非物理位址PA “0_0”,所以記憶體控制器120將邏輯位址LA “0_0”與物理位址PA “101_0”之間的更新映射關係,亦即“0_0→101_0”,儲存到SRAM 124的映射快取128。為了要儲存該更新映射關係,記憶體控制器120從映射表144載入相關於邏輯區塊號碼“0”(其對應到更新映射關係的邏輯位址LA “0_0” )的映射資訊載入到如快取[#0]的映射快取128。之後記憶體控制器120將會藉由將在快取“0”的行0的單元包含的資訊從“0_0”改變為“101_0”以更新映射關係(“0_0→101_0”)更新映射快取128的快取[#0](如圖3灰色部分)。在此階段中,因為記憶體控制器120並未將任何映射快取128的映射資訊寫回快閃記憶體140,所以寫回快取130為空的。
在步驟313中,當記憶體控制器120接收一寫入要求以寫入資料2及LA “1_0”到快閃記憶體140時,記憶體控制器120寫入資料2到資料區塊320的第2頁(亦即頁“1”)的資料區域,資料區塊320的第2頁有物理位址PA “101_1”。記憶體控制器120也寫入資料2的邏輯位址LA “1_0”到資料區塊320的第2頁(亦即頁“1”)的保留區域。並且,為了要儲存映射快取128的更新映射關係(“1_0 →101_1”),記憶體控制器120從映射表144載入相關於邏輯區塊號碼1(其對應到更新映射關係的邏輯位址LA “1_0”)的映射資訊到如快取[#1] 的映射快取128。之後記憶體控制器120以更新映射關係(“1_0→101_1”)更新映射快取128的快取[#1](如圖3灰色部分)。
在步驟314中,當記憶體控制器120接收一寫入要求時寫入資料3及LA “1_1”到快閃記憶體140時,記憶體控制器120寫入資料3到資料區塊320中第3頁(亦即頁“2”)的資料區域,資料區塊320的第2頁有物理位址PA “101_1”。記憶體控制器120也寫入資料3的邏輯位址LA “1_1”到資料區塊320的第3頁的保留區域。對儲存更新映射關係(“1_1→101_2”)到映射快取128的下一步驟而言,因為映射快取128已經包含相關於邏輯區塊號碼1(其對應到更新映射關係的邏輯位址LA “1_1”)的映射資訊,所以記憶體控制器120無需載入相關於邏輯區塊號碼1的映射資訊到映射快取128。取而代之,記憶體控制器120直接地以更新映射關係(“1_1→101_2”)更新映射快取128中的快取[#1](如圖3灰色部分)。
在步驟315中,當記憶體控制器120接收一寫入要求寫入資料4及LA “1_2”到快閃記憶體140時,記憶體控制器120寫入資料4到該資料區塊320中第4頁(亦即頁“3”)的資料區域,資料區塊320的第4頁面有物理位址PA “101_3”。記憶體控制器120也寫入資料4的邏輯位址LA “1_3”到資料區塊320中第4頁的保留區域。之後記憶體控制器120以更新映射關係(“1_2→101_3”)更新映射快取128中的快取[#1](如圖3灰色部分)。
在資料區塊320的第4頁被寫入資料後,記憶體控制器120判斷資料區塊320是否被裝滿,因此,記憶體控制器120在步驟316中執行一日誌操作以記錄更新映射資訊。在此日誌操作中,記憶體控制器120將全部的更新資訊、相關於映射快取128的映射快取、以及相關於寫回快取130的寫回資訊寫到快閃記憶體140的日誌表146的第1頁(亦即頁“1”)。首先,記憶體控制器120將目前儲存在映射快取128的更新映射資訊寫到日誌表146的頁“1”的區域。也就是說,記憶體控制器120將全部的映射關係“0_0→101_0”、“1_0→101_1”、“1_1→101_2”、“1_2→101_3”寫到日誌表146的頁“1”的映射資訊區域。記憶體控制器120也將目前儲存在映射快取128的快取號碼寫到日誌表146的頁“1”的一最後快取區域。也就是說,記憶體控制器120會將快取號碼[#0]與[#1]寫到日誌表146的頁“1”的最後快取區域。因為目前寫回快取130為空的,記憶體控制器120並未將任何寫回資訊寫到日誌表146。因此,日誌表146的頁“1”的寫回區域包含“FF,FF”,代表當記憶體控制器120寫入映射資訊到日誌表146的頁“1”時,沒有映射資訊寫回到快閃記憶體140。
請參照第4圖,在步驟411中,當記憶體控制器120接收一寫入要求以寫入資料5及LA “0_0”到快閃記憶體140時,記憶體控制器120指定一個具有一物理區塊號碼“102”的資料區塊420以寫入資料。之後記憶體控制器120寫入資料5到資料區塊420的第1頁(亦即頁“0”)的資料區域,資料區塊420的第1頁具有物理位址PA “102_0”。記憶體控制器120也寫入資料5的邏輯位址LA “0_0”到資料區塊420的第1頁的保留區域。之後記憶體控制器120以更新映射關係“0_0→102_0”更新映射快取128的快取[#0](如圖4灰色部分)。在此階段,記憶體控制器120載入記錄在日誌表146的前一頁(即頁面“1” )的最後快取區域的快取號碼到寫回快取130。也就是說,記憶體控制器120載入快取號碼[#0]與[#1]到寫回快取130。然而,由於記憶體控制器120並未將任何映射快取128的映射資訊寫回到快閃記憶體140,因此,在寫回快取130中沒有對應於快取號碼[#0]與[#1]的資料輸入。
在步驟412中,當記憶體控制器120接收一寫入要求以寫入資料6及LA “2_0”到快閃記憶體140時,記憶體控制器120寫入資料6到資料區塊420的第2頁(亦即頁“1”)的資料區域,資料區塊420的第2頁具有物理位址PA “102_1””。記憶體控制器120也寫入資料6的邏輯位址LA “2_0”到資料區塊420的第2頁的保留區域。之後,記憶體控制器120準備以儲存SRAM 124的映射快取128的一更新映射關係“2_0→102_1”。因為映射快取128目前有快取[#0]與快取[#1],該些快取分別儲存邏輯區塊“0”與邏輯區塊“1”的映射資訊,因此映射快取128達到儲存兩個邏輯區塊的映射資訊的最大容量(即映射快取128裝滿)。因此,記憶體控制器120判斷以藉由將映射快取127的較少使用的快取的映射資訊寫回到快閃記憶體140的映射表144而移除映射快取128中較少使用的列(即快取號碼)。在圖4的例子中,記憶體控制器120判斷快取[#1]的使用頻率低於快取[#0]。因此,記憶體控制器120將快取[#1]的映射資訊寫回到快閃記憶體140的映射表144的行[#1]。據此,快閃記憶體140的映射表144的列[#1]以儲存在映射快取128中的最新映射資訊而被更新(如圖4的灰色部分)。在一實施例中,更新映射資訊的步驟例如是將最新映射資訊寫入到另一個位置的映射表144。之後記憶體控制器120從映射表144載入對應於邏輯區塊號碼”2”的映射資訊(其對應於更新映射資訊的邏輯位址LA “2_0”)到如快取[#2]的映射快取128。記憶體控制器120以更新映射關係“2_0→102_1”更新映射快取128的快取[#2](如圖4的灰色部分)。記憶體控制器120更藉由以“v”標示快取[#1]以代表快取[#1]已被寫回到快閃記憶體140的映射表144而紀錄寫回快取130的中的寫回資訊。
在步驟413中,當記憶體控制器120接收一寫入要求以寫入資料7及LA “3_1”到快閃記憶體140時,記憶體控制器120寫入資料7到資料區塊420的第3頁(亦即頁“2”)的資料區域,資料區塊420的第3頁具有物理位址PA “102_2”。記憶體控制器120也寫入資料7的邏輯位址LA “3_1”到資料區塊420的第3頁的保留區域。之後,記憶體控制器120準備以儲存SRAM 124的映射快取128的一更新映射關係“3_1→102_2”。因為映射快取128目前是被裝滿的,所以記憶體控制器120將較少使用的快取[#0]的映射資訊寫回快閃記憶體140的映射表144的列[#0],並從映射表144載入相關於邏輯區塊號碼“3” (其對應於更新映射關係的邏輯位址LA “3_1”)的映射資訊到如快取[#3] 的映射快取128。記憶體控制器120之後以更新映射關係“3_1→102_2”更新映射快取128的快取[#3](如圖4的灰色部分)。記憶體控制器120更藉由以“v”標示快取[#0]以代表快取[#0]已被寫回到快閃記憶體140的映射表144而更新寫回快取130。
在步驟414中,當記憶體控制器120接收一寫入要求以將寫入資料8及LA “0_3”到快閃記憶體140時,記憶體控制器120寫入資料8到資料區塊420的第4頁面(亦即頁“3”)的資料區域,資料區塊420的第4頁具有物理位址PA “102_3”。記憶體控制器120也寫入資料8的邏輯位址LA “0_3”到資料區塊420的第4頁的保留區域。之後,記憶體控制器120準備以儲存SRAM 124的映射快取128的一更新映射關係“0_3→102_3”。因為映射快取128目前是被裝滿的,所以記憶體控制器120將較少使用的快取[#2]的映射資訊寫回快閃記憶體140的映射表144的列[#2],並從映射表144載入相關於邏輯區塊號碼“0” (其對應於更新映射關係的邏輯位址LA “0_3”)的映射資訊到如同快取[#0]的映射快取128。記憶體控制器120之後以更新映射關係“0_3→102_3”更新映射快取128的快取[#0](如圖4的灰色部分)。因為寫回快取130中的快取[#0]與快取[#1]已經被標示為“v”,所以記憶體控制器120將不會進一步更新寫回快取130。
在資料區塊420中第4頁被寫入資料後,記憶體控制器120判斷資料區塊420是否被裝滿,並據以在步驟415中執行一日誌操作。在此日誌操作中,記憶體控制器120將全部的更新資訊、全部的映射快取資訊以及全部的寫回資訊寫到日誌表的第2頁(亦即頁“2”)。首先,記憶體控制器120將目前儲存在映射快取128的更新映射資訊寫到日誌表146的頁“2”的一映射資訊區域。也就是說,記憶體控制器120將全部的映射資訊“0_3→102_3”及“3_1→102_2”寫到日誌表146的頁“2”的映射資訊區域。因為映射關係“0_0→102_0”已經被記錄在快閃記憶體140的映射表144中,所以並不一定要將映射關係“0_0→102_0”寫到日誌表146。記憶體控制器120也將目前儲存在映射快取128的快取號碼寫到日誌表的頁“2”的最後快取區域。也就是說,記憶體控制器120將快取[#0]與[#3]寫到日誌表的頁“2”的最後快取區域。記憶體控制器120更將被寫回到映射表144的如寫回快取130中所指示的快取號碼寫到日誌表146的頁“2”的一寫回區域。也就是說,記憶體控制器120將快取[#0]與快取[#1]寫到日誌表146的頁“2”的最後快取區域。
請參照圖5,在步驟511中,當記憶體控制器120接收一寫入要求以寫入資料9及LA “0_2”到快閃記憶體140時,記憶體控制器120指定一個有一物理區塊號碼“103”的資料區塊520以寫入資料。之後記憶體控制器120寫入資料9到資料區塊520中第1頁(亦即頁“0”)的資料區域,資料區塊520的第1頁具有物理位址PA “103_0”。記憶體控制器120也寫入資料9的邏輯位址LA “0_2”到資料區塊520中第1頁的保留區域。之後記憶體控制器120以更新映射關係“0_2→103_0”更新映射快取128的快取[#0](如圖5灰色部分)。在此階段,記憶體控制器120載入記錄在日誌表146的前一頁(即頁“3”)的最後快取區域的快取號碼到寫回快取130。也就是說,記憶體控制器120載入快取號碼[#0]與[#3]到寫回快取130。然而,由於記憶體控制器120並未將任何映射快取128的映射資訊寫回到快閃記憶體140。因此,在寫回快取130中沒有對應於快取號碼[#0]與[#1]的資料輸入。
在步驟512中,當記憶體控制器120接收一寫入要求以寫入資料10及LA“4_0”到快閃記憶體140時,記憶體控制器120寫入資料10到資料區塊520的第2頁(亦即頁“1”)的資料區域,資料區塊520的第2頁具有物理位址PA “103_1”。記憶體控制器120也寫入資料10的邏輯位址LA “4_0”到資料區塊520的第2頁的保留區域。之後記憶體控制器120需要儲存SRAM 124的映射快取128的更新映射關係“4_0→103_1”。因為映射快取128目前是被裝滿的,所以記憶體控制器120將較少使用的快取號碼的快取[#3]的映射資訊寫回快閃記憶體140的映射表144的列[#3],並從映射表144載入相關於邏輯區塊號碼“4”(其對應於更新映射關係中的邏輯位址LA “4_0”)的映射資訊到如快取[#4]的映射快取128。之後記憶體控制器120以更新映射關係“4_0→103_1”更新映射快取128中的快取[#4](如圖5灰色部分)。記憶體控制器120更藉由以“v”標示快取[#3]以代表快取[#3]已被寫回到快閃記憶體140的映射表144而更新寫回快取130。
在步驟513中,當記憶體控制器120接收一寫入要求以寫入資料11及LA “4_1”到快閃記憶體140時,記憶體控制器120寫入資料11到資料區塊520的第3頁(亦即頁“2”)的資料區域,資料區塊520的第3頁具有物理位址PA “103_2”。記憶體控制器120也寫入資料11的邏輯位址LA “4_1”到資料區塊520的第3頁的保留區域。之後記憶體控制器120以更新映射關係“4_1→103_2”更新映射快取128中的快取[#4](如圖5灰色部分)。因為記憶體控制器120並未將任何映射資訊寫回映射表144,所以寫回快取130保持不變。
在步驟514中,當記憶體控制器120接收一寫入要求以寫入資料12及LA “0_3”到快閃記憶體140時,記憶體控制器120寫入資料12到資料區塊520的第4頁(亦即頁“3”)的資料區域,資料區塊520的第4頁面具有PA 物理位址“103_3”。記憶體控制器120也寫入資料12的邏輯位址LA “0_3”到資料區塊520的第4頁的保留區域。之後記憶體控制器120以更新映射關係“0_3→103_3”更新映射快取128中的快取[#0](如圖5灰色部分)。因為記憶體控制器120並未將任何映射資訊寫回映射表144,所以寫回快取130保持不變。
在資料區塊520中第4頁被寫入資料後,記憶體控制器120判斷資料區塊520是否被裝滿,並據以在步驟515中執行一日誌操作。在此日誌操作中,記憶體控制器120將全部的更新資訊、全部的映射快取資訊以及全部的寫回資訊寫到日誌表146的第3頁(亦即頁“3”)。首先,記憶體控制器120將目前儲存在映射快取128的更新映射資訊寫到日誌表146的頁“3”的一映射資訊區域。也就是說,記憶體控制器120將全部的映射資訊“0_2→103_0”、“0_3→103_3”、“4_0→103_1”及“4_1→103_2”寫到日誌表146的頁“3”的映射資訊區域。記憶體控制器120也將目前儲存在映射快取128的快取號碼寫到日誌表146的頁“3”的一最後快取區域。也就是說,記憶體控制器120寫入快取號碼[#0]與[#4]到日誌表146的最後快取區域。記憶體控制器120更將被寫回到映射表144的如寫回快取130中所指示的快取號碼寫到日誌表146的頁“3”的寫回區域,其中該快取號碼已被寫回到映射表144(如同寫回快取130)。也就是說,記憶體控制器120將快取號碼[#3]寫到日誌表146的頁“3”的寫回區域。
請參照圖6,在步驟611中,當記憶體控制器120接收一寫入要求時以寫入資料13及LA “0_1”到快閃記憶體140時,記憶體控制器120指定一個具有物理區塊號碼“200”的資料區塊620以寫入資料。之後記憶體控制器120寫入資料13到資料區塊620的第1頁(亦即頁“0”)的資料區域,資料區塊620的第1頁面具有物理位址“200_0”。記憶體控制器120也寫入資料13的邏輯位址LA “0_1”到資料區塊620中第1頁的保留區域。之後記憶體控制器120以更新映射關係“0_1→200_0”更新映射快取128的快取[#0](如圖6灰色部分)。在此階段,記憶體控制器120載入記錄在日誌表146的前一頁面(即頁面“3”)的最後快取區域的快取號碼到寫回快取130。也就是說,記憶體控制器120載入快取號碼[#0]與[#4]到寫回快取130。然而,由於記憶體控制器120並未將任何映射快取128的映射資訊寫回到快閃記憶體140。因此,在寫回快取130中沒有對應於快取號碼[#0]與[#4]的資料輸入。
在步驟612中,當記憶體控制器120接收一寫入要求以寫入資料14及LA “4_2”到快閃記憶體140時,記憶體控制器120寫入資料14到資料區塊620的第2頁(亦即頁“1”)即第1頁面)的資料區域,資料區塊620的第2頁具有物理位址PA “200_1”。記憶體控制器120也寫入資料14的邏輯位址LA “4_2”到資料區塊620的第2頁的保留區域。之後記憶體控制器120以更新映射關係“4_2→200_1”更新映射快取128中的快取[#4](如圖6灰色部分)。因為記憶體控制器120並未將任何映射資訊寫回映射表144,所以寫回快取130保持不變。
在步驟613中,當記憶體控制器120接收一寫入要求以寫入資料15及LA “4_3”到快閃記憶體140時,記憶體控制器120寫入資料15到資料區塊620的第3頁面(亦即頁“2”)的資料區域,資料區塊620的第3頁具有物理位址PA “200_2”。記憶體控制器120也寫入資料15的邏輯位址LA “4_3”到資料區塊620的第3頁的保留區域。之後記憶體控制器120以更新映射關係“4_3→200_2”更新映射快取128中的快取[#4](如圖6灰色部分)。因為記憶體控制器120並未將任何映射資訊寫回映射表144,所以寫回快取130保持不變。
快閃記憶體140寫入程序可持續執行如同先前描述的步驟。然而,當供應到系統100的電源中斷時,SRAM 124的資料將會消失。在此情況下,當系統100的電源重新恢復時,記憶體控制器120藉由掃描儲存在資料區塊620的資料、儲存在映射表144的資料以及儲存在快閃記憶體140的日誌表146的資料而恢復映射資訊。
圖7繪示依據一實施例的一恢復程序的一例。此恢復程序可在系統100的斷電而恢復電源之後被執行。在圖7的例子中,斷電發生在如圖6所示的步驟613之後,其中記憶體控制器120才剛完成寫入資料15及LA “4_3到資料區塊620,並以更新映射關係“4_3→200_2”更新映射快取128。由於系統100的電源中斷,SRAM 124的資料消失,而儲存在資料區塊620的資料及儲存在快閃記憶體140的日誌表146的資料保持不變。
請參照圖7,在步驟711a中,記憶體控制器120讀取儲存在快閃記憶體140的日誌表146的最後一頁(亦即頁“3”)的最後快取區域的映射資訊,並得到快取號碼[#0]與[#4],這代表只有在映射表144中對應於邏輯區塊號碼“0”與“4”的映射資訊被改變且並未被寫回到快閃記憶體140的映射表144。也就是說,映射表144中對應於邏輯區塊號碼“0”與“4的映射資訊不是最新的,而映射表144中對應於邏輯區塊號碼“1”、“2”及“3”的映射資訊是最新的。在這階段,記憶體控制器120並未從映射表144中載入任何映射資訊到SRAM 124的映射快取128,因此映射快取128為空的。
在步驟711b中,記憶體控制器120讀取儲存在日誌表146的頁“1”的最後快取區域的映射資訊,,並得到快取號碼[#0]與[#1]。之後記憶體控制器120判斷快取[#0]是否存在於日誌表146的最後一頁(亦即頁“3”)的映射快取資訊中。也就是說,映射快取128中對應於邏輯區塊號碼“0”的映射資訊不是最新的,而映射快取128中中對應於邏輯區塊號碼“1”的映射資訊是最新的。因此,記憶體控制器120無需將相關於邏輯區塊號碼“1”的映射資訊載入到映射快取128。記憶體控制器120僅從映射表144載入相關於邏輯區塊號碼“0”的映射資訊到如快取[#0]的映射快取128。
在步驟711c中,記憶體控制器120讀取儲存在日誌表146的頁“1”的映射資訊區域的映射資訊,並根據此讀取映射資訊更新映射快取128。也就是說,記憶體控制器120讀取儲存在日誌表146的頁“1” 的映射資訊區域的映射關係“0_0→101_0”、“1_0→101_1”、“1_1→101_2”及“1_2→101_3”。因為映射關係“1_0→101_1”、“1_1→101_2”、及“1_2→101_3”對應邏輯區塊號碼的“1”的映射資訊而是映射快取128中最新的,所以記憶體控制器120無需依據映射關係“1_0→101_1”、“1_1→101_2”、及“1_2→101_3”更新映射快取128。記憶體控制器120僅以讀取映射關係“0_0→101_0”更新映射快取128中的快取[#0](如圖7灰色部分)。
在步驟712a中,記憶體控制器120讀取儲存在日誌表146的頁“2”的寫回區域的資料,並得到快取號碼[#0]與[#1],這代表映射快取128中對應於邏輯區塊號碼“0”與“1”的映射資訊在電源中斷發生前已被寫回映射表144。因為快取[#0]已經存在於映射快取128中,所以記憶體控制器120判斷而從映射快取128移除包含在快取[#0]的映射資訊。
在步驟712b中,記憶體控制器120讀取儲存在日誌表146的頁“2”的最後快取區域的資料,並得到快取號碼[#0]與[#3]。因為映射快取128中對應於邏輯區塊號碼“3”的映射資訊是最新的,所以記憶體控制器120無需將相關於邏輯區塊號碼“3”的映射資訊載入到映射快取128。記憶體控制器120僅從映射表144載入相關於邏輯區塊號碼“0”的映射資訊到如快取[#0]的映射快取128。
在步驟712c中,記憶體控制器120讀取儲存在日誌表146的頁“2”的映射資訊區域的映射資訊,並根據此讀取映射資訊更新映射快取128。也就是說,記憶體控制器120讀取儲存在日誌表146的頁 “2”的映射資訊區域的映射關係“0_3→102_3”與“3_1→102_2”。因為映射關係“3_1→102_2”對應邏輯區塊號碼“3”的映射資訊而是為映射表144中最新的,所以記憶體控制器120無需依據該映射關係“3_1→102_2”更新映射快取128。記憶體控制器120僅以讀取映射關係“0_3→102_3”更新映射快取128中的快取[#0](如圖7灰色部分)。
在步驟713a中,記憶體控制器120讀取儲存在日誌表146的頁“3”的寫回區域的資料,並且得到快取號碼[#3],這代表映射快取128中對應於邏輯區塊號碼“3”的映射資訊在電源中斷前已被寫回映射表144。因為映射快取128並未包含快取[#3],所以記憶體控制器120判斷對於映射快取128不執行任何動作。
在步驟713b中,記憶體控制器120讀取儲存在日誌表146的頁“3”的映射資訊區域的映射資訊,並且得到快取號碼[#0]與[#4]。因為映射快取128已經包含快取號碼[#0],所以記憶體控制器120僅從映射表144載入相關於邏輯區塊號碼“4”的映射資訊載入到如快取[#4]的映射快取128。
在步驟713c,記憶體控制器120讀取儲存在日誌表146的頁“3”的映射資訊區域的映射資訊,並根據此讀取映射資訊更新映射快取128。也就是說,記憶體控制器120讀取儲存在日誌表146的頁面“3”的映射資訊區域的映射關係“0_2→103_0”、“0_3→103_3”、“4_0→103_1”、及“4_1→103_2”。之後記憶體控制器120以讀取映射關係“0_2→103_0”、“0_3→103_3”、“4_0→103_1”、及“4_1→103_2”更新映射快取128中的快取[#0]與[#3](如圖7灰色部分)。
在步驟714中,記憶體控制器120掃描目前的資料區塊620並得到映射關係“0_1→200_0”、“4_2→200_1”、及“4_3→200_2”,此資料區塊620是斷電之前記憶體控制器120使用的最後資料區塊。之後記憶體控制器120以獲得的映射關係“0_1→200_0”、“4_2→200_1”、及“4_3→200_2”更新映射快取128(如圖7灰色部分)。
之後,記憶體控制器120結束此恢復程序。當在電源中斷發生時,在恢復程序結束時的步驟714的映射快取128與在步驟613的映射快取128是相同的。也就是說,藉由掃描儲存在資料區塊620的資料、儲存在映射表144的資料及儲存在快閃記憶體140的日誌表146的資料,記憶體控制器120能將映射資訊恢復為電源中斷前的狀態。
圖8繪示依據一實施例的一記憶體控制器執行的寫入程序的流程圖。請參照圖8,當系統100被啟動時,在步驟804,記憶體控制器120初始化映射快取128與SRAM 124的寫回快取130。舉例來說,記憶體控制器120藉由清除映射快取128與寫回快取130來初始化該映射快取128與SRAM 124的寫回快取130。因此,映射快取128與寫回快取130為空的。
在步驟806,記憶體控制器120指定快閃記憶體140中的一空閒資料區塊以寫入資料。舉例來說,如圖3步驟312所示,記憶體控制器120指定具有物理區塊號碼“101”的資料區塊320以寫入資料。
在步驟808,記憶體控制器120從系統端110接收一寫入要求以寫入資料及一邏輯位址到快閃記憶體140。舉例來說,如圖3步驟312所示,記憶體控制器120接收一寫入要求以寫入資料1及LA “0_0”到快閃記憶體140。
在步驟810,記憶體控制器120回應於接收寫入要而寫入資料和該資料的邏輯位址到指定的資料區塊的一頁。舉例來說,如圖3步驟313所示,記憶體控制器120寫入資料1到資料區塊320的第一頁的資料區域,並寫入資料1的邏輯位址到資料區塊320的第一頁的保留區域。
之後記憶體控制器120將資料的邏輯位址與資料的物理位址之間的一更新映射關係儲存到SRAM 124的映射快取128中。舉例來說,如圖3步驟312所示,記憶體控制器120需要將資料區塊320的第一頁的LA “0_0”與PA “101_0”之間的更新映射關係儲存到映射快取128。
具體地,在步驟812,記憶體控制器120先判斷映射快取128是否包含資料的邏輯位址的映射資訊。如果在步驟812中映射快取128沒有包含資料的邏輯位址的映射資訊(否),則在步驟814,記憶體控制器120判斷映射快取128是否已被裝滿。如果在步驟814中映射快取128已被裝滿(是),則在步驟816記憶體控制器120將映射快取128中較少使用的快取的映射資訊寫回到快閃記憶體140的映射表144,並在步驟818紀錄寫回快取130的寫回資訊。寫回資訊代表較少使用的快取中的映射資訊已經被寫回快閃記憶體140的映射表144。之後在步驟820,記憶體控制器120從映射表144載入相關於對應邏輯位址的邏輯區塊的映射資訊到映射快取中128,並在步驟822,以資料的邏輯位址與資料的物理位址之間的一更新映射關係更新映像快取128。
舉例來說,如圖4步驟412所示,為了儲存SRAM 124的映射快取128的一更新映射關係“2_0→102_1,記憶體控制器120先判斷映射快取128沒有包含資料的邏輯位址"2_0"的映射資訊,且映射快取128是裝滿的,亦即映射快取128目前有對應儲存邏輯區塊"0"與邏輯區塊"1"的映射資訊的快取[#0]與快取[#1],並達到儲存兩個邏輯區塊的映射資訊的最大容量。因此,記憶體控制器120將較少使用的快取,亦即快取[#1]中的映射資訊寫回快閃記憶體140的映射表,並記錄寫回快取130中代表快取[#1]中的映射資訊已經被寫回快閃記憶體140的寫回資訊。記憶體控制器120之後從映射表144載入相關於邏輯區塊號碼“2”(其對應於更新映射關係中的LA “2_0”)的映射資訊到映射快取128,並以更新映射關係“2_0→102_1”更新映射快取128中的快取[#2]。
請再參照圖8,如果在步驟812,記憶體控制器120判斷映射快取128包含有資料的邏輯位址的映射資訊(是),則在步驟822,記憶體控制器以資料的邏輯位址與資料的物理位址之間的更新映射關係直接更新映射快取。舉例來說,如圖3步驟314所示,為了儲存映射快取128中的更新映射關係(“1_1→101_2”),記憶體控制器120判斷映射快取128包含邏輯位址LA “1_1”的映射資訊的快取[#1],並以更新映射關係“1_1→101_2”直接更新映射快取128中的快取[#1]。
請再參照圖8,如果在步驟812,記憶體控制器120判斷映射快取128沒有包含資料的邏輯位址的映射資訊(否),但是在步驟814,映射快取沒有被裝滿(否),則在步驟820記憶體控制器120從映射表144直接載入相關於對應邏輯位址的邏輯區塊的映射資訊到映射快取中128,並在步驟822以資料的邏輯位址與資料的物理位址之間的更新映射關係更新映像快取128。舉例來說,如圖3步驟313所示,為了儲存映射快取128中的更新映射關係“1_0→101_1”,記憶體控制器120判斷映射快取128未包含相關於邏輯位址LA “1_0”的映射資訊,但映射快取128未被裝滿。據此,記憶體控制器120從映射表144載入對應LA “1_0”的相關於邏輯區塊號碼“1”的映射資訊到如快取[#1]的映射快取128,並以更新映射關係“1_0→101_1”更新映射快取128中的快取[#1]。
請再參照圖8,在記憶體控制器120在步驟822以更新映射關係更新映像快取128之後,在步驟824,記憶體控制器120判斷目前資料區塊是否被裝滿。如果在步驟824中目前資料區塊被裝滿(是),則在步驟826記憶體控制器120執行一日誌操作以將在映射快取128中的更新映射資訊、映射快取128中的映射快取資訊、及寫回快取130中的寫回資訊寫到快閃記憶體140的日誌表146。之後記憶體控制器120回到步驟806以指定快閃記憶體140的一空閒資料區塊以寫入未來資料。如果在步驟824目前資料區塊沒有被裝滿(否),則記憶體控制器120回到步驟808以接收寫入要求以寫入資料。舉例來說,如圖4的步驟415所示,當記憶體控制器120判斷資料區塊320被裝滿時,記憶體控制器120將全部的映射關係“0_3→102_3”與“3_1→102_2”寫到日誌表146的映射資訊區域。記憶體控制器120也將目前儲存在映射快取128中的快取號碼[#0]與[#3]寫到日誌表146的最後快取區域。記憶體控制器120更將目前儲存在寫回快取130中的快取號碼[#0]與快取號碼[#1]寫到日誌表146的寫回區域。之後記憶體控制器120如第4圖所示的指定資料區塊420以寫入未來資料。
圖9繪示依據一實施例的一記憶體控制器執行的恢復程序的流程圖。請參照圖9,在步驟906,當記憶體控制器120判斷系統100在一斷電而恢復電源之後,記憶體控制器120讀取儲存在日誌表146的最後一頁的映射快取資訊包含的快取號碼。舉例來說,如圖7的步驟711a所示,記憶體控制器120讀取儲存在日誌表146的最後一頁(即頁面“3”)的最後快取區域映射快取資訊,並得到快取號碼[#0]與[#4]。在此時,因為電源中斷導致的SRAM的資料消失,所以映像快取128為空的。
之後,記憶體控制器120藉由從第一頁依序讀取儲存在日誌表146的不同頁的資訊而恢復映射快取128中的映射資訊。首先,在步驟908,記憶體控制器120設定一頁面指標N=1。之後,在步驟910,記憶體控制器120讀取日誌表146的第N頁中的寫回資訊包含的快取號碼。舉例來說,如圖7的步驟711a所示,當N=1時,記憶體控制器120讀取日誌表146的頁“1”的寫回資訊包含的"FF,FF","FF,FF"代表當記憶體控制器120寫入資訊到日誌表146中的頁“1”時,沒有映射資訊被寫回快閃記憶體140。在另一個例子中,如圖7的步驟712a所示,當N=2時,記憶體控制器120讀取日誌表146的頁“2”的寫回資訊包含的快取[#0]與快取[#1],這代表當記憶體控制器120寫入映射資訊到日誌表146的頁“2”時,映射快取128的快取[#0]與快取[#1]的映射資訊已被寫回快閃記憶體140。
請再參照圖9,在步驟912,記憶體控制器120判斷映射快取128中的步驟910讀取的寫回資訊是否也存在任何的快取號碼。在步驟912中,如果在映射快取128中也存在多個步驟910讀取的一個或多個快取號碼(是),記憶體控制器120從映射快取128中移除相關於該一個或多個快取號碼的映射資訊。舉例來說,如圖7的步驟712a所示,當N=2時,記憶體控制器120讀取日誌表146的頁“2”的寫回資訊包含的快取[#0]與快取[#1],並判斷映射快取128目前存在快取[#0]。因此,記憶體控制器120從映射快取128中移除快取[#0]包含的映射資訊。
記憶體控制120器讀取日誌表146中第N頁的映射資訊包含的快取號碼(步驟916)。或者,假如記憶體控制器120判斷在映射快取128中沒有快取號碼(步驟912:否),記憶體控制器120將直接讀取日誌表146中第N頁的映射資訊包含的快取號碼(步驟916)。接著記憶體控制器120會判斷日誌表146中最後一頁的映射快取資訊是否也存在任何快取號碼(步驟918)。如果一個或多個快取號碼已存日誌表146中最後一頁的映射快取資訊中(步驟918:是),記憶體控制器120會從快閃記憶體140的映射表中144將相關快取號碼的映射資訊載入到映射快取128中(步驟920)。然後記憶體控制器120更以日誌表146中第N頁的映射資訊更新映射快取(步驟922)。
舉例來說,如圖7的步驟711b所示,當N=1時,記憶體控制器120讀取儲存在日誌表146的頁“1”的最後快取區域的映射快取資訊包含的快取號碼[#0]與快取[#1]。之後記憶體控制器120判斷快取[#0]存在於儲存在日誌表146的最後的一頁的映射資訊。因此,記憶體控制器120從快閃記憶體140的映射表144中載入相關於邏輯區塊號碼"0"的映射資訊到映射快取128。之後記憶體控制器120讀取儲存在日誌表146的頁“1”的映射資訊區域的映射關係“0_0→101_0”、“1_0→101_1”、“1_1→101_2”、及“1_2→101_3”,並如圖7的步驟711所示,以映射關係“0_0→101_0”更新映射快取128。
接在步驟922之後,在步驟924中,記憶體控制器120判斷第N頁是否為日誌表146的最後一頁。或者,如果在步驟918中記憶體控制器120判斷在日誌表146的最後一頁沒的映射快取資訊沒有存在快取號碼(否),則記憶體控制器120直接跳到步驟924以判斷第N頁是否為日誌表146的最後一頁。如果在步驟924,第N頁不是日誌表146的最後一頁(否),則在步驟926記憶體控制器120設定N=N+1,並回到步驟910以讀取日誌表146的第N頁中的寫回資訊包含的快取號碼。
否則,如果在步驟924,第N頁是日誌表146的最後一頁(是),則在步驟928記憶體控制器120以目前資料區塊包含的映射資訊更新映射快取。舉例來說,如圖7的步驟714所示,當記憶體控制器120判斷頁“3”為日誌表146的最後一頁時,記憶體控制器120以包含在資料區塊620的映射關係“0_1→200_0”、“4_2→200_1”、及“4_3→200_2”更新映射快取128。之後記憶體控制器120便完成此恢復程序。
以上揭露的實施例是在資料區塊被填滿時執行一日誌操作。然而,在一些實施例中,當資料區塊沒有裝滿時也可執行日誌操作。舉例來說,日誌操作可在經過一段預定周期的時間之後執行。
本領域具有通常知識者依據本說明書和本發明揭露的實施方式容易想到其他實例。應當理解的是本說明書和這些例子僅是示範性的而非用以限定本發明。本發明真正的保護範圍和精神如以下申請專利範圍所示。
804‧‧‧初始化映射快取和寫回快取
806‧‧‧指定快閃記憶體的一空閒資料區塊用於寫入資料
808‧‧‧接收寫入要求寫入資料及邏輯位址
810‧‧‧寫入資料和該資料的邏輯位址到資料區塊的一頁
812‧‧‧判斷映射快取是否包含邏輯位址的映射資訊
814‧‧‧判斷映射快取是否已裝滿
816‧‧‧將在映射快取中較少使用的快取的映射資訊寫回到快閃記憶體的映射表
818‧‧‧紀錄寫回快取的寫回資訊
820‧‧‧從快閃記憶體載入相關於對應邏輯位址的一邏輯區塊的映射資訊到映射快取中
822‧‧‧以資料的邏輯位址與資料的一物理位址之間的一更新映射關係更新映射快取
824‧‧‧判斷目前資料區塊是否已裝滿?
826‧‧‧執行一日誌操作
Claims (12)
- 【第1項】一種記憶體裝置,包括: 一記憶體控制器;及 一非揮發性記憶體,用以耦接到該記憶體控制器並儲存一映射表與一日誌表, 其中該記憶體控制器用以: 將一資料及該資料的一邏輯位址寫到該非揮發性記憶體; 從該非揮發性記憶體的該映射表載入相關於該資料的該邏輯位址的一映射資訊到該記憶體控制器的一映射快取; 以該資料的該邏輯位址與該資料的一物理位址之間的一更新映射關係更新該映射快取;以及 執行一日誌操作以將該更新映射關係寫到該日誌表。
- 【第2項】如申請專利範圍第1項所述的記憶體裝置,其中該非揮發性記憶體更包括複數個資料區塊,該記憶體控制器更用以: 將該資料與該邏輯位址寫到該複數個資料區塊的其中一個,以及 當該複數個資料區塊的該其中一個被裝滿時,執行該日誌操作,並指定一空閒資料區塊以寫入一未來資料。
- 【第3項】如申請專利範圍第1項所述的記憶體裝置,其中該記憶體控制器更用以在一寫回快取紀錄兩個連續的日誌操作之間執行在該映射快取上的多個操作,並將儲存在該寫回快取的資訊寫到該日誌表以執行該日誌操作。
- 【第4項】如申請專利範圍第1項所述的記憶體裝置,其中該記憶體控制器更用以在一斷電而恢復電源之後基於儲存在該日誌表的該資訊恢復該映射快取的該映射資訊。
- 【第5項】一種由一記憶體控制器控制一記憶體裝置的方法,該記憶體裝置包括一非揮發性記憶體,用以儲存一映射表與一日誌表,該方法包括: 將一資料與該資料的一邏輯位址寫到該非揮發性記憶體; 從該非揮發性記憶體的該映射表載入相關於該資料的該邏輯位址的一映射資訊到該記憶體控制器的一映射快取; 以該資料的該邏輯位址與該資料的一物理位址之間的一更新映射關係更新該映射快取;以及 執行一日誌操作以將該更新映射關係寫到該日誌表。
- 【第6項】如申請專利範圍第5項所述的方法,其中,該非揮發性記憶體更包括複數個資料區塊, 將該資料寫到該非揮發性記憶體的步驟包含將該資料與該邏輯位址寫到該複數個資料區塊的其中一個,以及 當該複數個資料區塊的該其中一個被裝滿時,執行該日誌操作,並指定一空閒資料區塊以寫入一未來資料。
- 【第7項】如申請專利範圍第5項所述的方法,其中該方法更包含在一寫回快取中紀錄兩個連續的日誌操作之間執行在該映射快取上的多個操作,其中該日誌操作包括將儲存在該寫回快取的資訊寫到該日誌表。
- 【第8項】如申請專利範圍第5項所述的方法,更包括: 在一斷電而恢復電源之後基於儲存在該日誌表中的該資訊恢復該映射快取中的該映射資訊。
- 【第9項】一種用以控制一非揮發性記憶體的記憶體控制器,該非揮發性記憶體儲存一映射表與一日誌表, 該記憶體控制器包括一處理電路用以: 將一資料及該資料的一邏輯位址寫到該非揮發性記憶體; 從該非揮發性記憶體的該映射表載入相關於該資料的該邏輯位址的一映射資訊到該記憶體控制器的一映射快取中; 以該資料的該邏輯位址與該資料的一物理位址之間的一更新映射關係更新該映射快取;以及 執行一日誌操作以將該更新映射關係寫到該日誌表。
- 【第10項】如申請專利範圍第9項所述的記憶體控制器,其中,該非揮發性記憶體更包括複數個資料區塊,該記憶控制器的該處理電路用以: 將該資料與該邏輯位置址寫到該複數個資料區塊的其中一個,以及 當該複數個資料區塊的該其中一個被裝滿時,執行該日誌操作,並指定一空閒資料區塊以寫入一未來資料。
- 【第11項】如申請專利範圍第9項所述的記憶體控制器,其中該記憶體控制器的該處理電路用以在一寫回快取中紀錄兩個連續的日誌操作之間執行在該映射快取上的多個操作,並將儲存在該寫回快取的資訊寫到該日誌表以執行該日誌操作。
- 【第12項】如申請專利範圍第9項所述的記憶體控制器,其中該記憶體控制器的該處理電路更用以在一斷電而恢復電源之後基於儲存在該日誌表中的該資訊恢復該映射快取中的該映射資訊。
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US14/683,630 US9817588B2 (en) | 2015-04-10 | 2015-04-10 | Memory device and operating method of same |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| TW201636845A true TW201636845A (zh) | 2016-10-16 |
| TWI590049B TWI590049B (zh) | 2017-07-01 |
Family
ID=57112239
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| TW104119484A TWI590049B (zh) | 2015-04-10 | 2015-06-16 | 記憶體裝置與其操作方法 |
Country Status (3)
| Country | Link |
|---|---|
| US (1) | US9817588B2 (zh) |
| CN (1) | CN106055489B (zh) |
| TW (1) | TWI590049B (zh) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| TWI695322B (zh) * | 2019-01-18 | 2020-06-01 | 旺宏電子股份有限公司 | 記憶體及記憶體操作方法 |
Families Citing this family (24)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US9904607B2 (en) * | 2015-11-13 | 2018-02-27 | International Business Machines Corporation | Logical to physical table restoration from stored journal entries |
| KR102570367B1 (ko) * | 2016-04-21 | 2023-08-28 | 삼성전자주식회사 | 불휘발성 메모리 장치 및 컨트롤러를 포함하는 스토리지 장치를 액세스하는 액세스 방법 |
| CN108614665B (zh) * | 2016-12-09 | 2021-04-02 | 北京兆易创新科技股份有限公司 | 基于NAND flash的映射表数据更新方法和装置 |
| US10359955B2 (en) * | 2017-02-23 | 2019-07-23 | Western Digital Technologies, Inc. | Data storage device configured to perform a non-blocking control update operation |
| US20180239532A1 (en) | 2017-02-23 | 2018-08-23 | Western Digital Technologies, Inc. | Techniques for performing a non-blocking control sync operation |
| KR102259256B1 (ko) * | 2017-05-16 | 2021-06-02 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그것의 동작 방법 |
| KR102458312B1 (ko) * | 2017-06-09 | 2022-10-24 | 삼성전자주식회사 | 스토리지 장치 및 이의 동작 방법 |
| US10521343B2 (en) * | 2017-06-12 | 2019-12-31 | Western Digital Technologies, Inc. | Storage system with a controller having a persistent memory interface to local memory |
| US10635654B2 (en) * | 2017-06-12 | 2020-04-28 | Samsung Electronics Co., Ltd. | Data journaling for large solid state storage devices with low DRAM/SRAM |
| US10732896B2 (en) * | 2017-06-12 | 2020-08-04 | Western Digital Technologies, Inc. | Method and system for reading data during control sync operations |
| DE102018110722B4 (de) | 2017-06-12 | 2025-03-27 | Sandisk Technologies, Inc. (n.d.Ges.d. Staates Delaware) | Verfahren, System und Vorrichtung zum Lesen von Daten während Steuerungssynchronisationsoperationen |
| CN109388332A (zh) * | 2017-08-04 | 2019-02-26 | 群联电子股份有限公司 | 数据存储方法、存储器控制电路单元及存储器存储装置 |
| CN109710173B (zh) * | 2017-10-26 | 2021-12-03 | 旺宏电子股份有限公司 | 存储器装置及应用于其上的数据管理方法 |
| KR102456173B1 (ko) * | 2017-10-27 | 2022-10-18 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그것의 동작 방법 |
| KR102799075B1 (ko) | 2019-02-27 | 2025-04-23 | 에스케이하이닉스 주식회사 | 컨트롤러, 메모리 시스템 및 그것의 동작 방법 |
| US12118241B2 (en) | 2017-10-27 | 2024-10-15 | SK Hynix Inc. | Memory controller, memory system, and operating method thereof |
| KR102521746B1 (ko) * | 2017-12-18 | 2023-04-13 | 에스케이하이닉스 주식회사 | 메모리 장치의 주소 맵핑을 관리하는 반도체 장치 및 이를 포함하는 데이터 저장 장치 |
| US10983918B2 (en) | 2018-12-31 | 2021-04-20 | Micron Technology, Inc. | Hybrid logical to physical caching scheme |
| CN110674056B (zh) * | 2019-09-02 | 2021-11-23 | 新华三大数据技术有限公司 | 一种垃圾回收方法及装置 |
| CN112486403B (zh) * | 2019-09-12 | 2024-12-24 | 伊姆西Ip控股有限责任公司 | 管理存储对象的元数据的方法、装置和计算机程序产品 |
| US11087858B1 (en) * | 2020-07-24 | 2021-08-10 | Macronix International Co., Ltd. | In-place refresh operation in flash memory |
| US20220374360A1 (en) * | 2021-05-18 | 2022-11-24 | Macronix International Co., Ltd. | Memory device and method for accessing memory device |
| CN115793954B (zh) * | 2021-09-09 | 2025-08-01 | 上海江波龙数字技术有限公司 | 数据管理方法、智能终端及计算机可读存储介质 |
| US11816349B2 (en) | 2021-11-03 | 2023-11-14 | Western Digital Technologies, Inc. | Reduce command latency using block pre-erase |
Family Cites Families (10)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| KR100449708B1 (ko) * | 2001-11-16 | 2004-09-22 | 삼성전자주식회사 | 플래시 메모리 관리방법 |
| US7979626B2 (en) * | 2008-05-13 | 2011-07-12 | Microsoft Corporation | Flash recovery employing transaction log |
| US20100017650A1 (en) * | 2008-07-19 | 2010-01-21 | Nanostar Corporation, U.S.A | Non-volatile memory data storage system with reliability management |
| US8972651B2 (en) * | 2011-10-05 | 2015-03-03 | Hitachi, Ltd. | Storage system and storage method |
| US9047214B1 (en) * | 2012-05-22 | 2015-06-02 | Pmc-Sierra, Inc. | System and method for tolerating a failed page in a flash device |
| CN103530062B (zh) * | 2012-07-03 | 2016-12-21 | 群联电子股份有限公司 | 数据存储方法、存储器控制器与存储器存储装置 |
| US20140059279A1 (en) * | 2012-08-27 | 2014-02-27 | Virginia Commonwealth University | SSD Lifetime Via Exploiting Content Locality |
| US20150378642A1 (en) * | 2013-03-15 | 2015-12-31 | Seagate Technology Llc | File system back-up for multiple storage medium device |
| CN103236116B (zh) * | 2013-03-21 | 2015-10-21 | 胡飞虎 | 电子储物柜箱格存取系统及投递方法 |
| US9423978B2 (en) * | 2013-05-08 | 2016-08-23 | Nexgen Storage, Inc. | Journal management |
-
2015
- 2015-04-10 US US14/683,630 patent/US9817588B2/en active Active
- 2015-06-16 TW TW104119484A patent/TWI590049B/zh active
- 2015-07-17 CN CN201510422191.5A patent/CN106055489B/zh active Active
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| TWI695322B (zh) * | 2019-01-18 | 2020-06-01 | 旺宏電子股份有限公司 | 記憶體及記憶體操作方法 |
Also Published As
| Publication number | Publication date |
|---|---|
| US9817588B2 (en) | 2017-11-14 |
| CN106055489A (zh) | 2016-10-26 |
| US20160299710A1 (en) | 2016-10-13 |
| CN106055489B (zh) | 2019-05-10 |
| TWI590049B (zh) | 2017-07-01 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| TWI590049B (zh) | 記憶體裝置與其操作方法 | |
| KR101437123B1 (ko) | 메모리 시스템 및 그것의 마모도 관리 방법 | |
| CN101901189B (zh) | 更新用户数据的方法以及恢复用户数据的方法 | |
| US9830257B1 (en) | Fast saving of data during power interruption in data storage systems | |
| US20080028132A1 (en) | Non-volatile storage device, data storage system, and data storage method | |
| JP6759459B2 (ja) | 物理メディアアウェア空間的結合ジャーナル処理及びリプレイ | |
| US20110145486A1 (en) | Memory management device and method | |
| US9785384B2 (en) | Semiconductor storage device and method for controlling nonvolatile semiconductor memory | |
| TWI596541B (zh) | 資料存取系統、資料存取裝置及資料存取方法 | |
| KR20100132244A (ko) | 메모리 시스템 및 메모리 시스템 관리 방법 | |
| US20150006823A1 (en) | Virtual nand capacity extension in a hybrid drive | |
| US8332575B2 (en) | Data management systems, methods and computer program products using a phase-change random access memory for selective data maintenance | |
| JP2010152703A (ja) | 不揮発性記憶装置、情報記録システム、及び情報記録方法 | |
| JP2014517412A (ja) | ストレージシステム及びストレージ方法 | |
| CN105786722B (zh) | 基于异构混合内存的nvm内存擦写控制方法和系统 | |
| US8527733B2 (en) | Memory system | |
| CN110147332B (zh) | 目录数据的管理方法与存储器装置 | |
| US6532513B1 (en) | Information recording and reproduction apparatus | |
| EP2381354A2 (en) | Data recording device | |
| CN106326135B (zh) | 一种平移非易失性存储器nvm的数据的方法及装置 | |
| US20200012454A1 (en) | Semiconductor device for managing addresses of nonvolatile memory device | |
| CN111949212B (zh) | 基于自定义开放通道ssd的文件系统及文件管理方法 | |
| KR101618999B1 (ko) | 네트워크 부트 시스템 | |
| JP6157158B2 (ja) | 情報処理装置、その制御方法及びプログラム | |
| JP2002222120A (ja) | メモリ・アクセス管理装置並びに管理方法 |