TWI659304B - 存取快閃記憶體模組的方法及相關的快閃記憶體控制器與電子裝置 - Google Patents
存取快閃記憶體模組的方法及相關的快閃記憶體控制器與電子裝置 Download PDFInfo
- Publication number
- TWI659304B TWI659304B TW106136049A TW106136049A TWI659304B TW I659304 B TWI659304 B TW I659304B TW 106136049 A TW106136049 A TW 106136049A TW 106136049 A TW106136049 A TW 106136049A TW I659304 B TWI659304 B TW I659304B
- Authority
- TW
- Taiwan
- Prior art keywords
- physical
- flash memory
- block
- data page
- physical address
- 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/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
- 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 operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
-
- 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/0253—Garbage collection, i.e. reclamation of unreferenced memory
-
- 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
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- 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/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- 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
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- 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
-
- 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/7205—Cleaning, compaction, garbage collection, erase control
-
- 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/7209—Validity control, e.g. using flags, time stamps or sequence numbers
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)
- Memory System (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本發明揭露一種存取一快閃記憶體模組的方法,其包含有以下步驟:建立對應於一邏輯位址至實體位址對照表之一實體區塊記錄表,其中該實體區塊記錄表記錄了該邏輯位址至實體位址對照表具有該快閃記憶體模組中哪些區塊的實體位址;以及當該快閃記憶體模組中一特定區塊需要進行一垃圾收集操作時,針對該特定區塊中具有位於該邏輯位址至實體位址對照表中一邏輯位址的一資料頁,參考該實體區塊記錄表以決定是否自該快閃記憶體模組讀取該邏輯位址至實體位址對照表,以供判斷該資料頁是有效資料頁或是無效資料頁。
Description
本發明有關於快閃記憶體,尤指一種存取快閃記憶體模組的方法及相關的快閃記憶體控制器。
當快閃記憶體模組中的空間不足時,快閃記憶體控制器會進行垃圾收集(garbage collection)操作以將多個區塊中的有效資料頁中的資料搬移到新的區塊中,並將原本的區塊內容抹除以釋放更多的儲存空間。然而,在上述的操作中,由於需要正確地判斷出每一個區塊中的有效資料頁及無效資料頁,因此會需要預先儲存相關的位址資訊以供進行比對判斷。然而,隨著區塊的大小增加及所包含的資料頁也跟著變多的情形下,上述位址資訊的資料量也大幅增加,且常常會進行許多無效的讀取/判斷操作,進而影響到快閃記憶體模組中的儲存空間以及快閃記憶體控制器的處理效率。
因此,本發明的目的之一在於提供一種存取快閃記憶體模組的方法,其可以大幅度地減少無效的讀取/判斷操作,並有效率地判斷出每一個區塊中的有效資料頁及無效資料頁,以解決先前技術中的問題。
在本發明的一個實施例中,揭露了一種存取一快閃記憶體模組的方法,其包含有以下步驟:建立對應於一邏輯位址至實體位址對照表之一實體區塊記錄表,其中該實體區塊記錄表記錄了該邏輯位址至實體位址對照表具有該快閃記憶體模組中哪些區塊的實體位址;以及當該快閃記憶體模組中一特定區塊需要進行一垃圾收集操作時,針對該特定區塊中具有位於該邏輯位址至實體位址對照表中一邏輯位址的一資料頁,參考該實體區塊記錄表以決定是否自該快閃記憶體模組讀取該邏輯位址至實體位址對照表,以供判斷該資料頁是有效資料頁或是無效資料頁。
在本發明的另一個實施例中,揭露了一種快閃記憶體控制器,其中該快閃記憶體控制器係用來存取一快閃記憶體模組,且該快閃記憶體控制器包含有一唯讀記憶體、一微處理器以及一記憶體。該唯讀記憶體係用來儲存一程式碼;該微處理器係用來執行該程式碼以控制對該快閃記憶體模組之存取;以及該記憶體係用以儲存對應於一邏輯位址至實體位址對照表之一實體區塊記錄表,其中該實體區塊記錄表記錄了該邏輯位址至實體位址對照表具有該快閃記憶體模組中哪些區塊的實體位址。當該快閃記憶體模組中一特定區塊需要進行一垃圾收集操作時,針對該特定區塊中具有位於該邏輯位址至實體位址對照表中一邏輯位址的一資料頁,該微處理器參考該實體區塊記錄表以決定是否自該快閃記憶體模組讀取該邏輯位址至實體位址對照表,以供判斷該資料頁是有效資料頁或是無效資料頁。
在本發明的另一個實施例中,揭露了一種電子裝置,其包含有一快閃記憶體模組以及一快閃記憶體控制器。該快閃記憶體控制器建立對應於一邏輯位址至實體位址對照表之一實體區塊記錄表,其中該實體區塊記錄表記錄了該邏輯位址至實體位址對照表具有該快閃記憶體模組中哪些區塊的實體位址;以及當該快閃記憶體模組中一特定區塊需要進行一垃圾收集(操作時,針對該特定區塊中具有位於該邏輯位址至實體位址對照表中一邏輯位址的一資料頁,該快閃記憶體控制器參考該實體區塊記錄表以決定是否自該快閃記憶體模組讀取該邏輯位址至實體位址對照表,以供判斷該資料頁是有效資料頁或是無效資料頁。
參考第1圖,第1圖為依據本發明一實施例之一種記憶裝置100的示意圖。記憶裝置100包含有一快閃記憶體(Flash Memory)模組120以及一快閃記憶體控制器110,且快閃記憶體控制器110用來存取快閃記憶體模組120。依據本實施例,快閃記憶體控制器110包含一微處理器112、一唯讀記憶體(Read Only Memory, ROM)112M、一控制邏輯114、一緩衝記憶體116、與一介面邏輯118。唯讀記憶體112M係用來儲存一程式碼112C,而微處理器112則用來執行程式碼112C以控制對快閃記憶體模組120之存取(Access)。控制邏輯114包含了一編碼器132以及一解碼器134,其中編碼器132用來對寫入到快閃記憶體模組120中的資料進行編碼以產生對應的校驗碼(或稱,錯誤更正碼(Error Correction Code),ECC),而解碼器134用來將從快閃記憶體模組120所讀出的資料進行解碼。
於典型狀況下,快閃記憶體模組120包含了多個快閃記憶體晶片,而每一個快閃記憶體晶片包含複數個區塊(Block),而該控制器(例如:透過微處理器112執行程式碼112C之快閃記憶體控制器110)對快閃記憶體模組120進行抹除資料運作係以區塊為單位來進行。另外,一區塊可記錄特定數量的資料頁(Page),其中該控制器(例如:透過微處理器112執行程式碼112C之記憶體控制器110)對快閃記憶體模組120進行寫入資料之運作係以資料頁為單位來進行寫入。在本實施例中,快閃記憶體模組120為一立體NAND型快閃記憶體(3D NAND-type flash)。
實作上,透過微處理器112執行程式碼112C之快閃記憶體控制器110可利用其本身內部之元件來進行諸多控制運作,例如:利用控制邏輯114來控制快閃記憶體模組120之存取運作(尤其是對至少一區塊或至少一資料頁之存取運作)、利用緩衝記憶體116進行所需之緩衝處理、以及利用介面邏輯118來與一主裝置(Host Device)130溝通。緩衝記憶體116係以隨機存取記憶體(Random Access Memory, RAM)來實施。例如,緩衝記憶體116可以是靜態隨機存取記憶體(Static RAM, SRAM),但本發明不限於此。
在一實施例中,記憶裝置100可以是可攜式記憶裝置(例如:符合SD/MMC、CF、MS、XD標準之記憶卡),且主裝置130為一可與記憶裝置連接的電子裝置,例如手機、筆記型電腦、桌上型電腦…等等。而在另一實施例中,記憶裝置100可以是固態硬碟或符合通用快閃記憶體儲存(Universal Flash Storage,UFS)或嵌入式多媒體記憶卡(Embedded Multi Media Card,EMMC)規格之嵌入式儲存裝置,以設置在一電子裝置中,例如設置在手機、筆記型電腦、桌上型電腦之中,而此時主裝置130可以是該電子裝置的一處理器。
參考第2圖,其為根據本發明一實施例之存取快閃記憶體模組120的流程圖。在步驟200中,流程開始。在步驟202中,微處理器112針對每一個邏輯位址至實體位址對照表(以下稱L2P對照表),建立其對應的一實體區塊記錄表,其中該實體區塊記錄表記錄了該L2P對照表具有快閃記憶體模組120中哪些區塊的實體位址。舉例來說,請參考第3圖,其繪示了兩個L2P對照表310_1、310_2及對應之實體區塊記錄表320_1、320_2的示意圖。在第3圖中,L2P對照表310_1具有連續的邏輯位址LBA_0~LBA_255及對應的實體位址,而L2P對照表310_2具有連續的邏輯位址LBA_256~LBA_511及對應的實體位址,假設目前快閃記憶體模組120中並未具有邏輯位址LBA_0~LBA_511的資料寫入,故L2P對照表310_1、310_2中並未記錄任何的實體位址資訊。需注意的是,在本實施例中,邏輯位址的序號代表著其順序,而連續的序號代表著連續的邏輯位址。此外,假設快閃記憶體模組120包含了多個區塊B_0~B_M,則實體區塊記錄表320_1係記錄了快閃記憶體模組120中每一個區塊B_0~B_M的狀態,其用來表示L2P對照表310_1是否有記錄該區塊的實體位址,而在本實施例中,每一個區塊的狀態係以一位元的兩個數位值來表示,其中數位值“0”表示L2P對照表310_1並未記錄該區塊的實體位址,而數位值“1”表示L2P對照表310_1有記錄該區塊的實體位址。類似地,實體區塊記錄表320_2也記錄了快閃記憶體模組120中每一個區塊B_0~B_M的狀態,其用來表示L2P對照表310_2是否有記錄該區塊的實體位址。在第3圖中,由於目前係假設L2P對照表310_1、310_2中並未記錄任何的實體位址資訊,故實體區塊記錄表320_1、320_2中所記錄之每一個區塊的B_0~B_M的狀態均為“0”。
在步驟204中,快閃記憶體控制器110接收來自主裝置130的至少一寫入命令,以將第一筆資料寫入至快閃記憶體模組120的一區塊中。在本實施例中,參考第4圖,快閃記憶體模組120包含了多個快閃記憶體晶片410、420,每一個快閃記憶體晶片包含了多個區塊B_0~B_M,而每一個區塊包含了N個資料頁P0~PN。在以下的說明中,快閃記憶體控制器110係將資料循序寫入到快閃記憶體晶片410的區塊B_0,然而,需注意的是,上述的“區塊”在實作上也可以是包含了多個晶片之位於不同平面(plane)的多個區塊(一般稱為“超級區塊”),舉例來說,假設快閃記憶體晶片410、420均包含了兩個平面(plane),而區塊B_0及B_M是位於不同的平面,則快閃記憶體晶片410的區塊B_0、B_M以及快閃記憶體晶片420的區塊B_0、B_M可以構成一個超級區塊。
在資料寫入至區塊B_0之前,微處理器112會建立一實體位址至邏輯位址對照表(以下稱P2L對照表)400,並儲存在緩衝記憶體116之中,其中P2L對照表400包含區塊B_0中的連續之資料頁的實體位址P0~PN,以及所對應之邏輯位址。詳細來說,快閃記憶體控制器110首先將來自主裝置130且具有邏輯位址LBA_5的資料寫入至資料頁P0中,接著,依序將來自主裝置130且具有邏輯位址LBA_500、LBA_350、LBA_6、LBA_7、LBA_100的資料分別寫入至資料頁P1~P5。需注意的是,在本實施例中,實體位址的序號代表著其順序,而連續的序號代表著連續的實體位址。
接著,在步驟206中,微處理器112判斷區塊B_0中的最後一個資料頁PN是否已完成資料寫入(亦即,區塊B_0已經寫滿),若否,則流程進入步驟204以繼續將下一筆資料寫入到區塊B_0;若是,則流程進入步驟208。在步驟208中,微處理器112參考P2L對照表400內容以自快閃記憶體模組120中讀取一部分的L2P對照表,並使用P2L對照表400來更新所讀取之L2P對照表的內容。具體來說,以第3、4圖的實施例來做說明,由於P2L對照表400所記錄的邏輯位址LBA_5、LBA_500、LBA_350、LBA_6、LBA_7、LBA_100係位於邏輯位址範圍LBA_0~LBA_255以及邏輯位址範圍LBA_256~LBA_511中,故微處理器112自快閃記憶體模組120中讀取如第5圖所示的兩個L2P對照表310_1、310_2。接著,由於P2L對照表400中有4筆對應至邏輯位址範圍LBA_0~LBA_255中的資訊,故微處理器112將L2P對照表310_1中的邏輯位址LBA_5更新為對應到區塊B_0的資料頁P0、邏輯位址LBA_6更新為對應到區塊B_0的資料頁P3、邏輯位址LBA_7更新為對應到區塊B_0的資料頁P4、且邏輯位址LBA_100更新為對應到區塊B_0的資料頁P5;此外,由於P2L對照表400中有2筆對應至邏輯位址範圍LBA_256~LBA_511中的資訊,故微處理器112將L2P對照表310_2中的邏輯位址LBA_350更新為對應到區塊B_0的資料頁P2、以及且邏輯位址LBA_500更新為對應到區塊B_0的資料頁P1。
在步驟210中,微處理器112使用更新後的L2P對照表310_1、310_2來更新實體區塊記錄表320_1、320_2。參考第6圖,由於更新後的L2P對照表310_1、310_2均有記錄區塊B_0的實體位址,故微處理器112更新實體區塊記錄表320_1、320_2以將區塊B_0的狀態變更為“1”。
在步驟212中,微處理器112將P2L對照表400以及更新後的L2P對照表310_1、310_2儲存至快閃記憶體模組120中,並將其自緩衝記憶體116中刪除。
在步驟214中,快閃記憶體控制器110選擇下一個區塊(例如,區塊B_1)以供後續的資料寫入,且流程回到步驟204。在一實施例中,假設流程回到步驟204,且快閃記憶體控制器110接收到主裝置130的寫入命令以要求將具有邏輯位址LBA_350及LBA_500的資料更新,則參考第7圖,微處理器112會另外針對區塊B_1建立P2L對照表700,並將L2P對照表310_2自快閃記憶體模組120中讀取並進行更新,以將邏輯位址LBA_350、LBA_500更新為分別對應到區塊B_1的資料頁P0、P1,之後再回存到快閃記憶體模組120中。此外,因為更新後的L2P對照表310_2包含了區塊B_1的實體位址,故實體區塊記錄表320_2中有關於區塊B_1的狀態被更新為“1”;且由於更新後的L2P對照表310_2已經不包含了區塊B_0的實體位址,故實體區塊記錄表320_2中有關於區塊B_1的狀態被更新為“0”。
在以上的實施例中,實體區塊記錄表320_1、320_2係常駐在緩衝記憶體116中,亦即當快閃記憶體控制器110上電之後,實體區塊記錄表320_1、320_2便會一直儲存在緩衝記憶體116中,並即時地隨著L2P對照表310_1、310_2內容地變化來進行更新。
第8圖所示為根據本發明一實施例之進行垃圾收集操作的流程圖,其中在本實施例中係以對第4圖所示的區塊B_0來進行垃圾收集操作,且相關的內容係以第2~6的實施例來做為範例說明,以方便理解。在步驟800,流程開始,且快閃記憶體控制器110準備對區塊B_0進行垃圾收集操作。在步驟802中,微處理器112自快閃記憶體模組120中讀取區塊B_0的P2L對照表400。接著,在步驟804中,微處理器112準備依序判斷區塊B_0中的每一個資料頁P0~PN為有效資料頁或是無效資料頁,而針對每一個資料頁P0~PN,微處理器112係根據P2L對照表400來決定對應的邏輯位址及實體區塊記錄表。舉例來說,針對資料頁P0,微處理器112決定出對應的邏輯位址LBA_5及實體區塊記錄表320_1;針對資料頁P1及其對應的邏輯位址LBA_500,微處理器112決定出對應的邏輯位址LBA_500及實體區塊記錄表320_2,…,以此類推。
在步驟806中,微處理器112判斷實體區塊記錄表中該區塊的狀態是否為“1”,若是,流程進入步驟808以自快閃記憶體模組120中讀取L2P對照表以判斷該資料頁為有效資料頁或是無效資料頁;若否,流程進入步驟810,並在不自快閃記憶體模組120中讀取L2P對照表的情形下直接判定該資料頁為無效資料頁。舉例來說,針對資料頁P0及在步驟804中所決定出的實體區塊記錄表320_1,由於第6圖所示之實體區塊記錄表320_1的區塊B_0的狀態為“1”,故微處理器112自快閃記憶體模組120中讀取對應的L2P對照表310_1,並根據L2P對照表310_1以及區塊B_0的內容(或是區塊B_0之P2L對照表400的內容)以判定資料頁P0是否為有效資料頁;在本實施例中,由於L2P對照表310_1中也記錄了邏輯位址LBA_5對應到區塊B_0的資料頁P0,故微處理器112判定資料頁P0為有效資料頁。接著,針對資料頁P1及在步驟804中所決定出的實體區塊記錄表320_2,由於第6圖所示之實體區塊記錄表320_2的區塊B_0的狀態為“0”,故微處理器112不需要自快閃記憶體模組120中讀取對應的L2P對照表310_2,便可以直接判定資料頁P1為無效資料頁。接著,微處理器112重複以上操作直到區塊B_0中的每一個資料頁P0~PN都完成有效/無效資料頁的判斷。
最後,當區塊B_0中的每一個資料頁P0~PN都完成有效/無效資料頁的判斷,微處理器112會將區塊B_0中所有的有效資料頁都搬移到另外一個區塊中,並將區塊B_0抹除以釋放出可用的儲存空間。需注意的是,上述對區塊B_0進行抹除操作並非立即地進行,而是可以先將區塊B_0標記為無效,並等待快閃記憶體控制器110較為空閒的時候再進行區塊B_0的抹除操作。
如以上第8圖的流程所述,由於微處理器112在對每一個資料頁P0~PN進行有效/無效資料頁判斷的時候會先參考常駐在緩衝記憶體116中的實體區塊記錄表,並根據實體區塊記錄表中的記錄以決定是否自快閃記憶體模組120中讀取對應的L2P對照表。因此,本實施例可以避免許多無效讀取L2P對照表的操作,以增進快閃記憶體控制器110的效能。
需注意的是,在以上的實施例中,實體區塊記錄表310_1、310_2係紀錄了每一個區塊B0~B_M的狀態,然而,在本發明的另一個實施例中,為了降低實體區塊記錄表的資料量以節省緩衝記憶體116的空間,如第9圖所示,實體區塊記錄表900可以包含了多個區塊群組的狀態,其中每一個區塊群組可以包含多個區塊,例如B_0~B_9構成第1個區塊群組、B_10~B_19構成第2個區塊群組、B_20~B_29構成第3個區塊群組、…B_(M-10)~B_M構成第最後一個區塊群組。類似於先前的實施例所述,實體位址記錄表900係記錄了快閃記憶體模組120中每一個區塊群組的狀態,其用來表示對應之區塊群組的多個L2P對照表是否有記錄該區塊群組的實體位址,且每一個區塊群組的狀態係以一位元的兩個數位值來表示,其中數位值“0”表示該些L2P對照表並未記錄該區塊群組中一區塊之任一資料頁的實體位址,而數位值“1”表示該些L2P對照表有記錄該區塊群組中一區塊之任一資料頁的實體位址。由於本領域具有通常知識者在閱讀過以上的實施例之後應能了解到如何將實體位址記錄表900應用在第2、8圖的流程中,故相關細節在此不予贅述。
簡要歸納本發明,在本發明之存取快閃記憶體模組的方法中,透過建立對應於每一個L2P對照表的實體區塊紀錄表,可以在使用很少資料量的情形下標示出每一個L2P對照表具有那些區塊的實體位址,以供在進行垃圾資料收集的過程中大幅度地減少無效地自快閃記憶體模組120中讀取L2P對照表的操作,以有效率地判斷出每一個區塊中的有效資料頁及無效資料頁,並提升快閃記憶體控制器110的效率。 以上所述僅為本發明之較佳實施例,凡依本發明申請專利範圍所做之均等變化與修飾,皆應屬本發明之涵蓋範圍。
100 | 記憶裝置 |
110 | 快閃記憶體控制器 |
112 | 微處理器 |
112C | 程式碼 |
112M | 唯讀記憶體 |
114 | 控制邏輯 |
116 | 緩衝記憶體 |
118 | 介面邏輯 |
120 | 快閃記憶體模組 |
130 | 主裝置 |
132 | 編碼器 |
134 | 解碼器 |
200~214、800~810 | 步驟 |
310_1、310_2 | 邏輯位址至實體位址對照表 |
320_1、320_2、900 | 實體區塊記錄表 |
400、700 | 實體位址至邏輯位址對照表 |
410、420 | 快閃記憶體晶片 |
B_0~B_M | 區塊 |
P0~PN | 資料頁 |
LBA_0~LBA_511 | 邏輯位址 |
第1圖為依據本發明一實施例之一種記憶裝置的示意圖。 第2圖為根據本發明一實施例之存取快閃記憶體模組的流程圖。 第3圖為根據本發明一實施例之兩個邏輯位址至實體位址對照表及對應之實體區塊記錄表的示意圖。 第4圖為實體位址至邏輯位址對照表的示意圖。 第5圖為本發明一實施例之使用實體位址至邏輯位址對照表來更新邏輯位址至實體位址對照表的示意圖。 第6圖為本發明一實施例之使用更新後的邏輯位址至實體位址對照表來更新實體區塊記錄表的示意圖。 第7圖為本發明一實施例之使用實體位址至邏輯位址對照表來再次更新邏輯位址至實體位址對照表的示意圖。 第8圖所示為根據本發明一實施例之進行垃圾收集操作的流程圖。 第9圖為根據本發明一實施例之一實體區塊記錄表的示意圖。
Claims (20)
- 一種存取一快閃記憶體模組的方法,包含有: 建立對應於一邏輯位址至實體位址對照表之一實體區塊記錄表,其中該實體區塊記錄表記錄了該邏輯位址至實體位址對照表具有該快閃記憶體模組中哪些區塊的實體位址;以及 當該快閃記憶體模組中一特定區塊需要進行一垃圾收集(garbage collection)操作時,針對該特定區塊中具有位於該邏輯位址至實體位址對照表中一邏輯位址的一資料頁,參考該實體區塊記錄表以決定是否自該快閃記憶體模組讀取該邏輯位址至實體位址對照表,以供判斷該資料頁是有效資料頁或是無效資料頁。
- 如申請專利範圍第1項所述之方法,其中參考該實體區塊記錄表以決定是否自該快閃記憶體模組讀取該邏輯位址至實體位址對照表,以供判斷該資料頁是有效資料頁或是無效資料頁的步驟包含有: 當該實體區塊記錄表記錄了該邏輯位址至實體位址對照表具有該特定區塊的實體位址時,自該快閃記憶體模組讀取該邏輯位址至實體位址對照表,並根據該邏輯位址至實體位址對照表以決定出該資料頁是有效資料頁或是無效資料頁;以及 當該實體區塊記錄表記錄了該邏輯位址至實體位址對照表不具有該特定區塊的實體位址時,決定該資料頁是無效資料頁。
- 如申請專利範圍第2項所述之方法,其中當該實體區塊記錄表記錄了該邏輯位址至實體位址對照表不具有該特定區塊的實體位址時,決定該資料頁是無效資料頁的步驟包含有: 當該實體區塊記錄表記錄了該邏輯位址至實體位址對照表不具有該特定區塊的實體位址時,在不自該快閃記憶體模組讀取該邏輯位址至實體位址對照表的情形下,直接決定該資料頁是無效資料頁。
- 如申請專利範圍第1項所述之方法,其中該實體區塊記錄表係儲存在一快閃記憶體控制器的一記憶體中,且當該快閃記憶體控制器更新該邏輯位址至實體位址對照表時,會根據該邏輯位址至實體位址對照表的更新內容一併更新該實體區塊記錄表。
- 如申請專利範圍第4項所述之方法,其中該實體區塊記錄表係常駐在該記憶體中。
- 如申請專利範圍第1項所述之方法,其中該實體區塊記錄表記錄了該快閃記憶體模組中多個區塊的狀態,且每一個區塊的狀態記錄了該邏輯位址至實體位址對照表是否具有該特定區塊中任一資料頁的實體位址。
- 如申請專利範圍第6項所述之方法,其中每一個區塊的狀態係以一位元來表示,且該位元的兩個數位值係分別用來表示該邏輯位址至實體位址對照表是否具有該特定區塊中任一資料頁的實體位址。
- 如申請專利範圍第1項所述之方法,其中該實體區塊記錄表記錄了該快閃記憶體模組中多個區塊群組的狀態,每一區塊群組包含了多個區塊,且每一個區塊群組的狀態記錄了該邏輯位址至實體位址對照表是否具有該區塊群組中一區塊之任一資料頁的實體位址。
- 如申請專利範圍第8項所述之方法,其中每一個區塊群組的狀態係以一位元來表示,且該位元的兩個數位值係分別用來表示該邏輯位址至實體位址對照表是否具有該區塊群組中一區塊之任一資料頁的實體位址。
- 一種快閃記憶體控制器,其中該快閃記憶體控制器係用來存取一快閃記憶體模組,且該快閃記憶體控制器包含有: 一唯讀記憶體,用來儲存一程式碼; 一微處理器,用來執行該程式碼以控制對該快閃記憶體模組之存取;以及 一記憶體,用以儲存對應於一邏輯位址至實體位址對照表之一實體區塊記錄表,其中該實體區塊記錄表記錄了該邏輯位址至實體位址對照表具有該快閃記憶體模組中哪些區塊的實體位址; 其中當該快閃記憶體模組中一特定區塊需要進行一垃圾收集(garbage collection)操作時,針對該特定區塊中具有位於該邏輯位址至實體位址對照表中一邏輯位址的一資料頁,該微處理器參考該實體區塊記錄表以決定是否自該快閃記憶體模組讀取該邏輯位址至實體位址對照表,以供判斷該資料頁是有效資料頁或是無效資料頁。
- 如申請專利範圍第10項所述之快閃記憶體控制器,其中當該實體區塊記錄表記錄了該邏輯位址至實體位址對照表具有該特定區塊的實體位址時,該微處理器自該快閃記憶體模組讀取該邏輯位址至實體位址對照表,並根據該邏輯位址至實體位址對照表以決定出該資料頁是有效資料頁或是無效資料頁;以及當該實體區塊記錄表記錄了該邏輯位址至實體位址對照表不具有該特定區塊的實體位址時,該微處理器決定該資料頁是無效資料頁。
- 如申請專利範圍第11項所述之快閃記憶體控制器,其中當該實體區塊記錄表記錄了該邏輯位址至實體位址對照表不具有該特定區塊的實體位址時,該微處理器在不自該快閃記憶體模組讀取該邏輯位址至實體位址對照表的情形下,直接決定該資料頁是無效資料頁。
- 如申請專利範圍第10項所述之快閃記憶體控制器,其中當該微處理器更新該邏輯位址至實體位址對照表時,會根據該邏輯位址至實體位址對照表的更新內容一併更新該實體區塊記錄表。
- 如申請專利範圍第13項所述之快閃記憶體控制器,其中該實體區塊記錄表係常駐在該記憶體中。
- 如申請專利範圍第10項所述之快閃記憶體控制器,其中該實體區塊記錄表記錄了該快閃記憶體模組中多個區塊的狀態,且每一個區塊的狀態記錄了該邏輯位址至實體位址對照表是否具有該特定區塊中任一資料頁的實體位址。
- 如申請專利範圍第15項所述之快閃記憶體控制器,其中每一個區塊的狀態係以一位元來表示,且該位元的兩個數位值係分別用來表示該邏輯位址至實體位址對照表是否具有該特定區塊中任一資料頁的實體位址。
- 如申請專利範圍第10項所述之快閃記憶體控制器,其中該實體區塊記錄表記錄了該快閃記憶體模組中多個區塊群組的狀態,每一區塊群組包含了多個區塊,且每一個區塊群組的狀態記錄了該邏輯位址至實體位址對照表是否具有該區塊群組中一區塊之任一資料頁的實體位址。
- 如申請專利範圍第17項所述之快閃記憶體控制器,其中每一個區塊群組的狀態係以一位元來表示,且該位元的兩個數位值係分別用來表示該邏輯位址至實體位址對照表是否具有該區塊群組中一區塊之任一資料頁的實體位址。
- 一種電子裝置,包含有: 一快閃記憶體模組;以及 一快閃記憶體控制器,用來存取該快閃記憶體模組; 其中該快閃記憶體控制器建立對應於一邏輯位址至實體位址對照表之一實體區塊記錄表,其中該實體區塊記錄表記錄了該邏輯位址至實體位址對照表具有該快閃記憶體模組中哪些區塊的實體位址;以及當該快閃記憶體模組中一特定區塊需要進行一垃圾收集(garbage collection)操作時,針對該特定區塊中具有位於該邏輯位址至實體位址對照表中一邏輯位址的一資料頁,該快閃記憶體控制器參考該實體區塊記錄表以決定是否自該快閃記憶體模組讀取該邏輯位址至實體位址對照表,以供判斷該資料頁是有效資料頁或是無效資料頁。
- 如申請專利範圍第19項所述之電子裝置,其中當該實體區塊記錄表記錄了該邏輯位址至實體位址對照表具有該特定區塊的實體位址時,該快閃記憶體控制器自該快閃記憶體模組讀取該邏輯位址至實體位址對照表,並根據該邏輯位址至實體位址對照表以決定出該資料頁是有效資料頁或是無效資料頁;以及當該實體區塊記錄表記錄了該邏輯位址至實體位址對照表不具有該特定區塊的實體位址時,該快閃記憶體控制器在不自該快閃記憶體模組讀取該邏輯位址至實體位址對照表的情形下,直接決定該資料頁是無效資料頁。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW106136049A TWI659304B (zh) | 2017-10-20 | 2017-10-20 | 存取快閃記憶體模組的方法及相關的快閃記憶體控制器與電子裝置 |
US15/859,738 US10606744B2 (en) | 2017-10-20 | 2018-01-02 | Method for accessing flash memory module and associated flash memory controller and electronic device |
CN201810443706.3A CN109697170B (zh) | 2017-10-20 | 2018-05-10 | 存取闪存模块的方法及相关的闪存控制器与电子装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW106136049A TWI659304B (zh) | 2017-10-20 | 2017-10-20 | 存取快閃記憶體模組的方法及相關的快閃記憶體控制器與電子裝置 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201917578A TW201917578A (zh) | 2019-05-01 |
TWI659304B true TWI659304B (zh) | 2019-05-11 |
Family
ID=66169972
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW106136049A TWI659304B (zh) | 2017-10-20 | 2017-10-20 | 存取快閃記憶體模組的方法及相關的快閃記憶體控制器與電子裝置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10606744B2 (zh) |
CN (1) | CN109697170B (zh) |
TW (1) | TWI659304B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20200019513A (ko) * | 2018-08-14 | 2020-02-24 | 에스케이하이닉스 주식회사 | 컨트롤러, 메모리 시스템 및 그 동작 방법 |
US11907114B2 (en) * | 2019-08-18 | 2024-02-20 | Smart IOPS, Inc. | Devices, systems, and methods for dynamically remapping memory addresses |
CN110688325B (zh) * | 2019-09-05 | 2021-12-03 | 苏州浪潮智能科技有限公司 | 一种固态硬盘的垃圾回收方法、装置、设备及存储介质 |
TWI724550B (zh) * | 2019-09-19 | 2021-04-11 | 慧榮科技股份有限公司 | 資料儲存裝置以及非揮發式記憶體控制方法 |
TWI722938B (zh) * | 2020-07-06 | 2021-03-21 | 慧榮科技股份有限公司 | 記憶裝置、快閃記憶體控制器及其存取方法 |
US20240069771A1 (en) * | 2022-08-29 | 2024-02-29 | Micron Technology, Inc. | Read operations for mixed data |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110238629A1 (en) * | 2010-03-23 | 2011-09-29 | Apple Inc. | Uncorrectable error handling schemes for non-volatile memories |
US20120311298A1 (en) * | 2011-06-03 | 2012-12-06 | Apple Inc. | Mount-time unmapping of unused logical addresses in non-volatile memory systems |
US20150178190A1 (en) * | 2013-12-24 | 2015-06-25 | International Business Machines Corporation | Detecting hot spots through flash memory management table snapshots |
TWI592800B (zh) * | 2016-10-04 | 2017-07-21 | 大心電子(英屬維京群島)股份有限公司 | 記憶體管理方法及使用所述方法的儲存控制器 |
CN107038131A (zh) * | 2016-02-04 | 2017-08-11 | 广明光电股份有限公司 | 固态硬盘断电保护装置及方法 |
TW201732832A (zh) * | 2016-03-07 | 2017-09-16 | 愛思開海力士有限公司 | 數據儲存裝置及其操作方法 |
CN107240420A (zh) * | 2016-03-28 | 2017-10-10 | 爱思开海力士有限公司 | 数据存储装置及其操作方法 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8285970B2 (en) * | 2008-11-06 | 2012-10-09 | Silicon Motion Inc. | Method for managing a memory apparatus, and associated memory apparatus thereof |
US8402242B2 (en) * | 2009-07-29 | 2013-03-19 | International Business Machines Corporation | Write-erase endurance lifetime of memory storage devices |
CN102033812B (zh) * | 2009-09-24 | 2013-04-10 | 慧荣科技股份有限公司 | 用于管理闪存多个区块的方法和相关记忆装置及其控制器 |
US8812816B2 (en) * | 2010-03-23 | 2014-08-19 | Apple Inc. | Garbage collection schemes for index block |
US8930614B2 (en) * | 2011-07-29 | 2015-01-06 | Kabushiki Kaisha Toshiba | Data storage apparatus and method for compaction processing |
JP2013196646A (ja) * | 2012-03-22 | 2013-09-30 | Toshiba Corp | メモリ制御装置、データ記憶装置及びメモリ制御方法 |
US20130080687A1 (en) * | 2011-09-23 | 2013-03-28 | Avalanche Technology, Inc. | Solid state disk employing flash and magnetic random access memory (mram) |
US9323667B2 (en) * | 2012-04-12 | 2016-04-26 | Violin Memory Inc. | System and method for managing trim operations in a flash memory system using mapping tables and block status tables |
CN104268094B (zh) * | 2014-09-23 | 2017-05-03 | 浪潮电子信息产业股份有限公司 | 一种优化的闪存地址映射方法 |
-
2017
- 2017-10-20 TW TW106136049A patent/TWI659304B/zh active
-
2018
- 2018-01-02 US US15/859,738 patent/US10606744B2/en active Active
- 2018-05-10 CN CN201810443706.3A patent/CN109697170B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110238629A1 (en) * | 2010-03-23 | 2011-09-29 | Apple Inc. | Uncorrectable error handling schemes for non-volatile memories |
US20120311298A1 (en) * | 2011-06-03 | 2012-12-06 | Apple Inc. | Mount-time unmapping of unused logical addresses in non-volatile memory systems |
US20150178190A1 (en) * | 2013-12-24 | 2015-06-25 | International Business Machines Corporation | Detecting hot spots through flash memory management table snapshots |
CN107038131A (zh) * | 2016-02-04 | 2017-08-11 | 广明光电股份有限公司 | 固态硬盘断电保护装置及方法 |
TW201732832A (zh) * | 2016-03-07 | 2017-09-16 | 愛思開海力士有限公司 | 數據儲存裝置及其操作方法 |
CN107240420A (zh) * | 2016-03-28 | 2017-10-10 | 爱思开海力士有限公司 | 数据存储装置及其操作方法 |
TWI592800B (zh) * | 2016-10-04 | 2017-07-21 | 大心電子(英屬維京群島)股份有限公司 | 記憶體管理方法及使用所述方法的儲存控制器 |
Also Published As
Publication number | Publication date |
---|---|
CN109697170A (zh) | 2019-04-30 |
TW201917578A (zh) | 2019-05-01 |
US20190121726A1 (en) | 2019-04-25 |
US10606744B2 (en) | 2020-03-31 |
CN109697170B (zh) | 2022-09-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI692690B (zh) | 存取快閃記憶體模組的方法及相關的快閃記憶體控制器與電子裝置 | |
TWI650644B (zh) | 管理快閃記憶體模組的方法及相關的快閃記憶體控制器及電子裝置 | |
TWI629591B (zh) | 存取快閃記憶體模組的方法及相關的快閃記憶體控制器與電子裝置 | |
TWI659304B (zh) | 存取快閃記憶體模組的方法及相關的快閃記憶體控制器與電子裝置 | |
TWI661303B (zh) | 存取快閃記憶體模組的方法及相關的快閃記憶體控制器與電子裝置 | |
CN110908925B (zh) | 高效能垃圾收集方法以及数据存储装置及其控制器 | |
CN109117383B (zh) | 管理闪存模块的方法和闪存控制器 | |
CN107590080B (zh) | 映射表更新方法、存储器控制电路单元及存储器存储装置 | |
TWI749279B (zh) | 資料儲存裝置與資料處理方法 | |
US10990292B2 (en) | Flash memory controller, control method of flash memory controller and associated electronic device | |
TW202001565A (zh) | 管理快閃記憶體模組的方法及相關的快閃記憶體控制器及電子裝置 | |
US9037781B2 (en) | Method for managing buffer memory, memory controllor, and memory storage device | |
CN113900582A (zh) | 数据处理方法及对应的数据储存装置 | |
TWI707234B (zh) | 資料儲存裝置與資料處理方法 | |
TWI657339B (zh) | 管理快閃記憶體模組的方法及相關的快閃記憶體控制器 | |
TWI697778B (zh) | 資料儲存裝置與資料處理方法 | |
TWI670598B (zh) | 管理快閃記憶體模組的方法及相關的快閃記憶體控制器及電子裝置 | |
TWI653630B (zh) | 存取快閃記憶體模組的方法及相關的快閃記憶體控制器及電子裝置 | |
TWI852599B (zh) | 記憶裝置、快閃記憶體控制器及其控制方法 | |
TWI695264B (zh) | 資料儲存裝置與資料處理方法 |