TWI863495B - 控制快閃記憶體模組的方法及相關的快閃記憶體控制器與記憶裝置 - Google Patents
控制快閃記憶體模組的方法及相關的快閃記憶體控制器與記憶裝置 Download PDFInfo
- Publication number
- TWI863495B TWI863495B TW112129891A TW112129891A TWI863495B TW I863495 B TWI863495 B TW I863495B TW 112129891 A TW112129891 A TW 112129891A TW 112129891 A TW112129891 A TW 112129891A TW I863495 B TWI863495 B TW I863495B
- Authority
- TW
- Taiwan
- Prior art keywords
- block
- data page
- data
- last
- flash memory
- Prior art date
Links
Images
Classifications
-
- 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
- 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 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
-
- 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/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- 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/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0647—Migration mechanisms
-
- 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
- G06F3/0658—Controller construction arrangements
-
- 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
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- 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]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Read Only Memory (AREA)
Abstract
本發明揭露了一種控制一快閃記憶體模組的方法,其中該快閃記憶體模組包含多個晶粒,以及該方法包含有:若是該快閃記憶體模組上電前遭遇到不正常斷電,決定該快閃記憶體模組在上電前最後一個寫入的一超級區塊,其中該超級區塊包含了分別位於該多個晶粒的多個區塊;針對該超級區塊中的每一個區塊,決定出該超級區塊中每一個區塊之最後一個可以成功讀取資料頁;根據該超級區塊中每一個區塊之最後一個可以成功讀取資料頁以決定出該超級區塊的一資料弱區;以及將該資料弱區中的資料搬移至該超級區塊的其他區域或是另一超級區塊中。
Description
本發明係有關於快閃記憶體。
在快閃記憶體控制器將資料寫入至快閃記憶體模組的一超級區塊的過程中,若是發生不正常斷電,例如,斷電後回復(power off recovery,POR)或是突發斷電後回復(sudden power off recovery,SPOR),則在快閃記憶體控制器重新上電之後,快閃記憶體控制器會判斷是否遭遇到不正常斷電,並在判斷有遭遇到不正常斷電的情形下,判斷該超級區塊中有哪些資料仍然是有效的,並對該超級區塊進行垃圾收集(garbage collection)操作以將其中的有效資料搬移到另一個區塊中。然而,由於該超級區塊包含了多個區塊,且每一個區塊的資料寫入進度都不相同,故如何有效率地判斷該超級區塊中的有效資料是一個重要的課題。
因此,本發明的目的之一在於提出一種記憶裝置的控制方法,其可以在記憶裝置發生不正常斷電並重新上電後,有效率且準確地判斷出超級區塊
中有哪些資料可以繼續使用,並對超級區塊進行處理以供繼續寫入資料,以解決先前技術中所述的問題。
在本發明的一個實施例中,揭露了一種控制一快閃記憶體模組的方法,其中該快閃記憶體模組包含多個晶粒,每一個晶粒包含多個區塊,每一個區塊包含多個資料頁,以及該方法包含有:於該快閃記憶體模組上電後,判斷該快閃記憶體模組上電前是否遭遇到不正常斷電;若是該快閃記憶體模組上電前遭遇到不正常斷電,決定該快閃記憶體模組在上電前最後一個寫入的一超級區塊,其中該超級區塊包含了分別位於該多個晶粒的多個第一區塊;針對該超級區塊中的每一個第一區塊,決定出該超級區塊中每一個第一區塊之最後一個可以成功讀取資料頁;根據該超級區塊中每一個第一區塊之最後一個可以成功讀取資料頁以決定出該超級區塊的一資料弱區;以及將該資料弱區中的資料搬移至該超級區塊的其他區域或是另一超級區塊中。
在本發明的一個實施例中,揭露了一種快閃記憶體控制器,其中該快閃記憶體控制器係用來存取一快閃記憶體模組,該快閃記憶體模組包含多個晶粒,每一個晶粒包含多個區塊,每一個區塊包含多個資料頁,且該快閃記憶體控制器包含有一唯讀記憶體及一微處理器,且該微處理器用以執行以下操作:於該快閃記憶體模組上電後,判斷該快閃記憶體模組上電前是否遭遇到不正常斷電;若是該快閃記憶體模組上電前遭遇到不正常斷電,決定該快閃記憶體模組在上電前最後一個寫入的一超級區塊,其中該超級區塊包含了分別位於該多個晶粒的多個第一區塊;針對該超級區塊中的每一個第一區塊,決定出該超級區塊中每一個第一區塊之最後一個可以成功讀取資料頁;根據該超級區塊中每一個第一區塊之最後一個可以成功讀取資料頁以決定出該超級區塊的一資
料弱區;以及將該資料弱區中的資料搬移至該超級區塊的其他區域或是另一超級區塊中。
在本發明的一個實施例中,揭露了一種記憶裝置,其包含有一快閃記憶體模組及一快閃記憶體控制器。該快閃記憶體模組其包含多個晶粒,每一個晶粒包含多個區塊,每一個區塊包含多個資料頁。該快閃記憶體控制器用以存取該快閃記憶體模組,且該快閃記憶體控制器執行以下操作:於該快閃記憶體模組上電後,判斷該快閃記憶體模組上電前是否遭遇到不正常斷電;若是該快閃記憶體模組上電前遭遇到不正常斷電,決定該快閃記憶體模組在上電前最後一個寫入的一超級區塊,其中該超級區塊包含了分別位於該多個晶粒的多個第一區塊;針對該超級區塊中的每一個第一區塊,決定出該超級區塊中每一個第一區塊之最後一個可以成功讀取資料頁;根據該超級區塊中每一個第一區塊之最後一個可以成功讀取資料頁以決定出該超級區塊的一資料弱區;以及將該資料弱區中的資料搬移至該超級區塊的其他區域或是另一超級區塊中。
100:記憶裝置
110:快閃記憶體控制器
112:微處理器
112M:唯讀記憶體
112C:程式碼
114:控制邏輯
116:緩衝記憶體
118:介面邏輯
120:快閃記憶體模組
130:主裝置
132:編碼器
134:解碼器
136:隨機化器
138:解隨機化器
140:DRAM
202,204:超級區塊
300:區塊
500~516:步驟
600~620:步驟
B1~BK:區塊
P1~P448:資料頁
第1圖為依據本發明一實施例之一種記憶裝置的示意圖。
第2圖為根據本發明一實施例之超級區塊的示意圖。
第3圖區塊所包含之多個資料頁的示意圖。
第4圖為超級區塊中每一個區塊之寫入速度不相同的示意圖。
第5圖為根據本發明一實施例之記憶裝置的控制方法的流程圖。
第6圖為使用二分搜尋法搜尋每一個區塊之最後一個有資料寫入的資料頁的流程圖。
第7圖為決定出超級區塊中每一個區塊之最後一個可以成功讀取的資料頁的示意圖。
第8圖為決定出超級區塊之資料弱區與無效區的示意圖。
第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、一隨機化器(Randomizer)136及一解隨機化器(De-randomizer)138,其中編碼器132用來對寫入到快閃記憶體模組120中的資料進行編碼以產生對應的校驗碼(或稱,錯誤更正碼(Error Correction Code),ECC),解碼器134用來將從快閃記憶體模組120所讀出的資料進行解碼,隨機化器136係用來將寫入至快閃記憶體模組120的資料進行隨機化操作,且解隨機化器138係用來對從快閃記憶體模組120中所讀取的資料進行解隨機化操作。
於典型狀況下,快閃記憶體模組120包含了多個快閃記憶體晶片,而每一個快閃記憶體晶片包含複數個區塊(Block),而快閃記憶體控制器110對快閃記憶體模組120進行複製、抹除、合併資料等運作係以區塊為單位來進行複製、抹除、合併資料。另外,一區塊可記錄特定數量的資料頁(Page),其中快閃記憶體控制器110對快閃記憶體模組120進行寫入資料之運作係以資料頁為單位來進
行寫入。換句話說,區塊是快閃記憶體模組120中一個最小的抹除單位,而資料頁是快閃記憶體模組120中一個最小的寫入單位。
實作上,透過微處理器112執行程式碼112C之快閃記憶體控制器110可利用其本身內部之元件來進行諸多控制運作,例如:利用控制邏輯114來控制快閃記憶體模組120之存取運作(尤其是對至少一區塊或至少一資料頁之存取運作)、利用緩衝記憶體116及/或一動態隨機存取記憶體(Dynamic Random Access Memory,DRAM)140進行所需之緩衝處理、以及利用介面邏輯118來與一主裝置(Host Device)130溝通。
在一實施例中,記憶裝置100可以是可攜式記憶裝置(例如:符合SD/MMC、CF、MS、XD標準之記憶卡),且主裝置130為一可與記憶裝置連接的電子裝置,例如手機、筆記型電腦、桌上型電腦...等等。而在另一實施例中,記憶裝置100可以是固態硬碟或符合通用快閃記憶體儲存(Universal Flash Storage,UFS)或嵌入式多媒體記憶卡(Embedded Multi Media Card,EMMC)規格之嵌入式儲存裝置,以設置在一電子裝置中,例如設置在手機、手錶、攜帶型醫療檢測裝置(例如,醫療手環)、筆記型電腦、桌上型電腦之中,而此時主裝置130可以是該電子裝置的一處理器。
在本實施例中,快閃記憶體模組120係具一立體NAND型快閃記憶體(3D NAND-type flash)模組,其中每一個區塊係由多個字元線(word line)、多個位元線(bit line)以及多個記憶單元(memory cell)所構成。由於立體NAND型快閃記憶體架構係為本領域具有通常知識者所熟知,故在說明書中不多做說明。
第2圖為根據本發明一實施例之超級區塊的示意圖。如第2圖所示,假設快閃記憶體模組120包含了四個晶粒(晶粒1~晶粒4),且每一個晶粒包含了多個區塊B1~BK,而此時微處理器112可以將快閃記憶體模組120內部之屬於不同資料面(plane)或是不同晶粒的區塊配置為一個超級區塊,以方便在資料存取上的管理。在本實施例中,係以一個晶粒內僅具有一個資料面來做為說明,但本發明並不以此為限。如第2圖所示,晶粒1~晶粒4分別包含了區塊B1~BK,而微處理器112可以將每一個晶粒的區塊B1配置為一超級區塊202、將每一個晶粒的區塊B2配置為一超級區塊204、...以此類推,而快閃記憶體控制器110在存取超級區塊202、204時則類似於一般區塊。舉例來說,超級區塊202本身即是一個抹除單位,亦即超級區塊202所包含的四個區塊B1雖然可以分開進行抹除操作,但是快閃記憶體控制器110卻一定會將四個區塊B1一起進行抹除。
此外,參考第3圖所示之區塊300的示意圖,其中區塊300可以是第2圖所示之區塊B1~BK中的任一,且區塊300包含了多個資料頁,例如圖示的448個資料頁。超級區塊202在進行資料寫入時可依序由晶粒1之區塊B1的第一個資料頁P1、晶粒2之區塊B1的第一個資料頁P1、晶粒3之區塊B1的第一個資料頁P1及晶粒4之區塊B1的第一個資料頁P1進行資料寫入,之後再將資料依序寫入至晶粒1之區塊B1的第二個資料頁P2、晶粒2之區塊B1的第二個資料頁P2、...、以此類推。換言之,快閃記憶體控制器110會安排將資料寫入至超級區塊202中每個區塊B1的第一個資料頁P1後,才接著安排將資料寫入至超級區塊202中每個區塊B1的第二個資料頁P2。超級區塊係快閃記憶體控制器110為了方便管理快閃記憶體模組120而在邏輯上設定之一集合區塊,並非物理上之集合區塊。此外,在進行垃圾收集、計算區塊有效頁、計算區塊寫入時間長短時,也都可以超級區塊為單位來進行計算。
在一實施例中,快閃記憶體控制器110可以具有多個緩衝器以供分別暫存準備要寫入至多個晶粒(例如,第2圖的晶粒1至晶粒4)的資料,且這些緩衝器不需要依照順序使用,且快閃記憶體模組120中的每一個晶粒都有自己的後端硬體以使得快閃記憶體模組120可以平行地處理寫入至多個晶粒中的資料。然而,在此實施例中,每一個晶粒在寫入速度上的微小差異會不斷地累積,因而導致每一個晶粒在資料寫入上可能會出現較大的差異。舉例來說,參考第4圖,快閃記憶體控制器110依序將資料寫入至晶粒1至晶粒4的第一個資料頁P1、晶粒1至晶粒4的第二個資料頁P2、...晶粒1至晶粒4的第三個資料頁P1、...以此類推,而由於每一個晶粒在製程上有差異,故晶粒3在資料寫入的速度上會比其他的晶粒慢,例如當晶粒1、晶粒2都已經寫入到資料頁P18的時候,晶粒3只寫入到資料頁P11。需注意的是,此時微處理器112已經產生要寫入至晶粒3之資料頁P12~P18的資料,而這些資料暫存於控制邏輯114或是快閃記憶體模組120的一緩衝器中。
然而,若是在第4圖所示之資料寫入至超級區塊202的時候發生不正常斷電,例如突發斷電後回復(SPOR)的情形,則在記憶裝置100重新上電後,快閃記憶體控制器110會重新讀取超級區塊202的內容以判斷出超級區塊202的狀況,以供決定出適合的處理方式。本實施例提出了一種在記憶裝置100重新上電後的控制方法,其可以有效率且準確地判斷出超級區塊202中有哪些資料可以繼續使用,並對超級區塊202進行處理以供繼續寫入資料,以最佳化超級區塊202的使用。
第5圖為根據本發明一實施例之記憶裝置100的控制方法的流程圖。
於步驟500,流程開始,記憶裝置100剛剛上電並進行初始化操作。於步驟502,快閃記憶體控制器110判斷記憶裝置100在上電前是否發生不正常斷電,若是,流程進入步驟506;若否,流程進入步驟504。在一實施例中,當記憶裝置100在正常關機/斷電的情形下,快閃記憶體控制器110會將儲存在緩衝記憶體116中的多個暫存表格及資料儲存到快閃記憶體模組120中,且其中包含了一個用來標示記憶裝置100是否正常關機的標籤(flag),因此,快閃記憶體控制器110在上電後可以透過讀取儲存在快閃記憶體模組120中一特定位址的上述標籤來判斷記憶裝置100之前是否有遭遇到不正常斷電的情形,例如,當上述標籤並未被正確設定時便判斷先前有遭遇到不正常斷電。
於步驟504,由於記憶裝置100在上電前並未遭遇到不正常斷電,故快閃記憶體控制器110開始正常地進行操作,例如將來自主裝置130的資料寫入至快閃記憶體模組120,或是對快閃記憶體模組120進行垃圾收集操作...等等,亦即快閃記憶體控制器110不會執行第4圖的步驟506~516。
於步驟506,快閃記憶體控制器110決定出快閃記憶體模組120在上電前最後一個寫入的超級區塊,舉例來說,快閃記憶體控制器110可以搜尋快閃記憶體模組120中所記錄之處於活性(active)狀態的超級區塊來做為上電前最後一個寫入的超級區塊。在以下的實施例中,係以第4圖所示的超級區塊202來做為說明。
於步驟508,針對超級區塊中的每一個區塊,例如超級區塊202中晶粒1至晶粒4之區塊B1,快閃記憶體控制器110使用二分搜尋法或是其他任意適合的搜尋法,以搜尋每一個區塊之最後一個有資料寫入的資料頁。以第4圖為例,
快閃記憶體控制器110搜尋出晶粒1之區塊B1的資料頁P18、晶粒2之區塊B1的資料頁P18、晶粒3之區塊B1的資料頁P11及晶粒4之區塊B1的資料頁P17。
舉例來說,參考第6圖所示之使用二分搜尋法搜尋每一個區塊B1之最後一個有資料寫入的資料頁的流程圖,流程如下所述。
步驟600:流程開始。
步驟602:根據區塊B1的資料頁總數(N)來決定出搜尋範圍(R)以及第一次要查找的資料頁序號(P=(N/2)),且此時搜尋方向為向前(D=2,即資料頁序號遞增之方向)。
步驟604:讀取資料頁(P)的備用區域(spare region)。
步驟606:根據備用區域中的內容來判斷資料頁(P)是否是空白資料頁,舉例來說,可以根據備用區域是否記載相關的元資料(metadata)來判斷資料頁(P)是否是空白資料頁。若判斷資料頁(P)是空白資料頁,則流程進入步驟608;若判斷資料頁(P)是並非空白資料頁,則流程進入步驟610。
步驟608:設定下一次要查找的資料頁序號為(P=P-(R/2)),且此時搜尋方向為向後(D=1,即資料頁序號遞減之方向)。
步驟610:設定下一次要查找的資料頁序號為(P=P+(R/2)),且此時搜尋方向為向前(D=2)。
步驟612:判斷搜尋範圍(R)是否為1,若否,流程進入步驟614;若是,則流程進入步驟616。
步驟614:將搜尋範圍減半(R=(R/2)),且流程回到步驟604。
步驟616:判斷搜尋方向是否為向後(D=1?),若否,流程進入步驟618;若是,則流程進入步驟620。
步驟618:判斷資料頁(P)為區塊B1之最後一個有資料寫入的資料頁。
步驟620:判斷資料頁(P-1)為區塊B1之最後一個有資料寫入的資料頁。
需注意的是,第6圖所示之詳細步驟只是作為範例說明,而非是本發明的限制。
在一實施例中,由於超級區塊202中的每一個區塊可以平行地進行操作,因此,快閃記憶體控制器110可以使用透過交錯(interleave)或是多通道(multi-channel)操作,以同時地自多個區塊讀取資料,以加速上述二分搜尋法或是其他搜尋法的執行速度。
於步驟510,針對每一個區塊,快閃記憶體控制器110由最後一個有資料寫入的資料頁依序往前讀取,直到所讀取到的資料可以成功地被解碼器134完成解碼操作為止,亦即解碼器134可以成功地使用所讀取資料的錯誤更正碼來完成解碼操作,以決定出超級區塊202中每一個區塊之最後一個可以成功讀取(亦即,成功完成解碼)的資料頁。以第7圖為例,解碼器134無法成功地對晶粒1之區塊B1的資料頁P18的資料進行解碼,但可以成功地對晶粒1之區塊B1的資料頁P17的資料進行解碼,故快閃記憶體控制器110決定晶粒1之區塊B1中最後一個可以成功讀取的資料頁為P17。類似地,快閃記憶體控制器110決定晶粒2之區塊B1中最後一個可以成功讀取的資料頁為P17、晶粒3之區塊B1中最後一個可以成功讀取的資料頁為P10、且晶粒4之區塊B1中最後一個可以成功讀取的資料頁為P16。
於步驟512,根據超級區塊202中每一個之最後一個可以成功讀取的
資料頁,快閃記憶體控制器110決定出具有最小資料頁編號的資料頁及對應的一特定區塊或一特定晶粒。以第7圖為例,該特定區塊為晶粒3的區塊B1,該特定晶粒為晶粒3,且具有最小資料頁編號的資料頁為P10。
於步驟514,快閃記憶體控制器110根據步驟512所決定的該特定區塊及具有最小資料頁編號的資料頁,以決定出超級區塊202中最後一個有效寫入的區塊與資料頁。在一實施例中,若是該特定區塊的編號、或是該特定區塊所屬之晶粒的編號為N,其中N大於1,具有最小資料頁編號的資料頁的編號為M,則最後一個有效寫入的區塊所屬之晶粒的編號為“N-1”,且最後一個有效寫入之區塊的資料頁為“M+1”。以第7圖為例,步驟512所決定之該特定晶粒為晶粒3,且具有最小資料頁編號的資料頁為P10,則超級區塊202中最後一個有效寫入的資料頁是晶粒2之區塊B1的資料頁P11。此外,若是該特定區塊屬於晶粒1,則最後一個有效寫入的區塊所屬之晶粒為具有最大編號的晶粒(例如第7圖的晶粒4),且最後一個有效寫入之區塊的資料頁為“M”。
於步驟516,快閃記憶體控制器110根據步驟514所決定出之超級區塊202中最後一個有效寫入的區塊與資料頁,決定出超級區塊202的一資料弱區(weak region)以及一無效區域,並將該資料弱區內的資料搬移至超級區塊202內的其他區域、或是搬移至其他超級區塊。參考第8圖,快閃記憶體控制器110可以將超級區塊202中最後一個有效寫入的區塊與資料頁往前回推數個資料頁(例如,對應至一或二個字元線的資料頁數量),以決定出該資料弱區。舉例來說,該資料弱區可以包含晶粒1至晶粒4之區塊B1的資料頁P5~P10、以及晶粒1至晶粒2之區塊的資料頁P11。此外,快閃記憶體控制器110可以根據步驟508所決定出之超級區塊202中每一個區塊之最後一個有資料寫入的資料頁,往後數個資料頁
(例如,對應至一或二個字元線的資料頁數量),以決定出該無效區。舉例來說,該無效區可以包含晶粒3至晶粒4之區塊B1的資料頁P11、以及晶粒1至晶粒4之區塊B1的資料頁P5~P10、以及晶粒1至晶粒2之區塊的資料頁P12~P20。
在一實施例中,由於超級區塊202的該資料弱區可以視為資料不穩定的區域,故若是超級區塊202中位於無效區之後的空間足夠,則快閃記憶體控制器110將該資料弱區的資料複製至超級區塊202中位於無效區之後的空間,例如晶粒3至晶粒4之區塊B1的資料頁P21及之後的資料頁;而若是超級區塊202中位於無效區之後的空間不足夠,則快閃記憶體控制器110將該資料弱區的資料複製至其他超級區塊。
在一實施例中,快閃記憶體控制器110可以對超級區塊202的該無效區進行重複寫入(double programming),亦即將無效資料或是冗餘資料寫入至該無效區中,以穩定超級區塊。
如以上實施例所述,本實施例可以有效率且準確地判斷出超級區塊202中有哪些資料可以繼續使用,並對超級區塊202的資料弱區進行資料搬移以確保資料的可靠性。
以上所述僅為本發明之較佳實施例,凡依本發明申請專利範圍所做之均等變化與修飾,皆應屬本發明之涵蓋範圍。
500~516:步驟
Claims (15)
- 一種控制一快閃記憶體模組的方法,其中該快閃記憶體模組包含多個晶粒,每一個晶粒包含多個區塊,每一個區塊包含多個資料頁,以及該方法包含有:於該快閃記憶體模組上電後,判斷該快閃記憶體模組上電前是否遭遇到不正常斷電;若是該快閃記憶體模組上電前遭遇到不正常斷電,決定該快閃記憶體模組在上電前最後一個寫入的一超級區塊,其中該超級區塊包含了分別位於該多個晶粒的多個第一區塊;針對該超級區塊中的每一個第一區塊,決定出該超級區塊中每一個第一區塊之最後一個可以成功讀取資料頁;根據該超級區塊中每一個第一區塊之最後一個可以成功讀取資料頁以決定出該超級區塊的一資料弱區;以及將該資料弱區中的資料搬移至該超級區塊的其他區域或是另一超級區塊中。
- 如申請專利範圍第1項所述之方法,其中根據該超級區塊中每一個第一區塊之最後一個可以成功讀取資料頁以決定出該超級區塊的該資料弱區的步驟包含有:根據該超級區塊中每一個第一區塊之最後一個可以成功讀取的資料頁,以決定出具有最小資料頁編號的一資料頁及對應的一特定第一區塊;根據該具有最小資料頁編號的該資料頁及對應的該特定第一區塊,以決定出該超級區塊中最後一個有效寫入的第一區塊與資料頁;以及根據該超級區塊中最後一個有效寫入的第一區塊與資料頁,以決定出該資 料弱區。
- 如申請專利範圍第2項所述之方法,其中根據該具有最小資料頁編號的該資料頁及對應的該特定第一區塊,以決定出該超級區塊中最後一個有效寫入的第一區塊與資料頁的步驟包含有:若是該特定第一區塊的編號、或是該特定第一區塊所屬之晶粒的編號為N,其中N大於1,具有最小資料頁編號的該資料頁的編號為M,則決定最後一個有效寫入的第一區塊所屬之晶粒的編號為“N-1”,且最後一個有效寫入之第一區塊的資料頁為“M+1”;以及是該特定第一區塊屬於第一個晶粒,且具有最小資料頁編號的該資料頁的編號為M,則最後一個有效寫入的第一區塊所屬之晶粒為具有最大編號的晶粒,且最後一個有效寫入之第一區塊的資料頁為“M”。
- 如申請專利範圍第1項所述之方法,另包含有:針對該超級區塊中的每一個第一區塊,決定出每一個第一區塊之最後一個有資料寫入的資料頁;以及針對該超級區塊中的每一個第一區塊,決定出該超級區塊中每一個第一區塊之最後一個可以成功讀取資料頁的步驟包含有:由每一個第一區塊之最後一個有資料寫入的資料頁往前讀取,以決定出該超級區塊中每一個第一區塊之最後一個可以成功讀取資料頁。
- 如申請專利範圍第4項所述之方法,其中針對該超級區塊中的每一個第一區塊,決定出每一個第一區塊之最後一個有資料寫入的資料頁的步驟包含有: 使用一二分搜尋法,並透過交錯(interleave)或是多通道(multi-channel)操作以同時地自該超級區塊的多個第一區塊讀取資料,以決定出每一個第一區塊之最後一個有資料寫入的資料頁。
- 一種快閃記憶體控制器,其中該快閃記憶體控制器係用來存取一快閃記憶體模組,該快閃記憶體模組包含多個晶粒,每一個晶粒包含多個區塊,每一個區塊包含多個資料頁,且該快閃記憶體控制器包含有:一唯讀記憶體,用來儲存一程式碼;一微處理器,用來執行該程式碼以控制對該快閃記憶體模組之存取;其中該微處理器用以執行以下操作:於該快閃記憶體模組上電後,判斷該快閃記憶體模組上電前是否遭遇到不正常斷電;若是該快閃記憶體模組上電前遭遇到不正常斷電,決定該快閃記憶體模組在上電前最後一個寫入的一超級區塊,其中該超級區塊包含了分別位於該多個晶粒的多個第一區塊;針對該超級區塊中的每一個第一區塊,決定出該超級區塊中每一個第一區塊之最後一個可以成功讀取資料頁;根據該超級區塊中每一個第一區塊之最後一個可以成功讀取資料頁以決定出該超級區塊的一資料弱區;以及將該資料弱區中的資料搬移至該超級區塊的其他區域或是另一超級區塊中。
- 如申請專利範圍第6項所述之快閃記憶體控制器,其中根據該超級區塊中每一個第一區塊之最後一個可以成功讀取資料頁以決定出該超級 區塊的該資料弱區的步驟包含有:根據該超級區塊中每一個第一區塊之最後一個可以成功讀取的資料頁,以決定出具有最小資料頁編號的一資料頁及對應的一特定第一區塊;根據該具有最小資料頁編號的該資料頁及對應的該特定第一區塊,以決定出該超級區塊中最後一個有效寫入的第一區塊與資料頁;以及根據該超級區塊中最後一個有效寫入的第一區塊與資料頁,以決定出該資料弱區。
- 如申請專利範圍第7項所述之快閃記憶體控制器,其中根據該具有最小資料頁編號的該資料頁及對應的該特定第一區塊,以決定出該超級區塊中最後一個有效寫入的第一區塊與資料頁的步驟包含有:若是該特定第一區塊的編號、或是該特定第一區塊所屬之晶粒的編號為N,其中N大於1,具有最小資料頁編號的該資料頁的編號為M,則決定最後一個有效寫入的第一區塊所屬之晶粒的編號為“N-1”,且最後一個有效寫入之第一區塊的資料頁為“M+1”;以及是該特定第一區塊屬於第一個晶粒,且具有最小資料頁編號的該資料頁的編號為M,則最後一個有效寫入的第一區塊所屬之晶粒為具有最大編號的晶粒,且最後一個有效寫入之第一區塊的資料頁為“M”。
- 如申請專利範圍第6項所述之快閃記憶體控制器,另包含有:針對該超級區塊中的每一個第一區塊,決定出每一個第一區塊之最後一個有資料寫入的資料頁;以及針對該超級區塊中的每一個第一區塊,決定出該超級區塊中每一個第一區塊之最後一個可以成功讀取資料頁的步驟包含有: 由每一個第一區塊之最後一個有資料寫入的資料頁往前讀取,以決定出該超級區塊中每一個第一區塊之最後一個可以成功讀取資料頁。
- 如申請專利範圍第9項所述之快閃記憶體控制器,其中針對該超級區塊中的每一個第一區塊,決定出每一個第一區塊之最後一個有資料寫入的資料頁的步驟包含有:使用一二分搜尋法,並透過交錯(interleave)或是多通道(multi-channel)操作以同時地自該超級區塊的多個第一區塊讀取資料,以決定出每一個第一區塊之最後一個有資料寫入的資料頁。
- 一種記憶裝置,包含有:一快閃記憶體模組,其包含多個晶粒,每一個晶粒包含多個區塊,每一個區塊包含多個資料頁;以及一快閃記憶體控制器,用以存取該快閃記憶體模組;其中該快閃記憶體控制器執行以下操作:於該快閃記憶體模組上電後,判斷該快閃記憶體模組上電前是否遭遇到不正常斷電;若是該快閃記憶體模組上電前遭遇到不正常斷電,決定該快閃記憶體模組在上電前最後一個寫入的一超級區塊,其中該超級區塊包含了分別位於該多個晶粒的多個第一區塊;針對該超級區塊中的每一個第一區塊,決定出該超級區塊中每一個第一區塊之最後一個可以成功讀取資料頁;根據該超級區塊中每一個第一區塊之最後一個可以成功讀取資料頁以決定出該超級區塊的一資料弱區;以及 將該資料弱區中的資料搬移至該超級區塊的其他區域或是另一超級區塊中。
- 如申請專利範圍第11項所述之記憶裝置,其中根據該超級區塊中每一個第一區塊之最後一個可以成功讀取資料頁以決定出該超級區塊的該資料弱區的步驟包含有:根據該超級區塊中每一個第一區塊之最後一個可以成功讀取的資料頁,以決定出具有最小資料頁編號的一資料頁及對應的一特定第一區塊;根據該具有最小資料頁編號的該資料頁及對應的該特定第一區塊,以決定出該超級區塊中最後一個有效寫入的第一區塊與資料頁;以及根據該超級區塊中最後一個有效寫入的第一區塊與資料頁,以決定出該資料弱區。
- 如申請專利範圍第12項所述之記憶裝置,其中根據該具有最小資料頁編號的該資料頁及對應的該特定第一區塊,以決定出該超級區塊中最後一個有效寫入的第一區塊與資料頁的步驟包含有:若是該特定第一區塊的編號、或是該特定第一區塊所屬之晶粒的編號為N,其中N大於1,具有最小資料頁編號的該資料頁的編號為M,則決定最後一個有效寫入的第一區塊所屬之晶粒的編號為“N-1”,且最後一個有效寫入之第一區塊的資料頁為“M+1”;以及是該特定第一區塊屬於第一個晶粒,且具有最小資料頁編號的該資料頁的編號為M,則最後一個有效寫入的第一區塊所屬之晶粒為具有最大編號的晶粒,且最後一個有效寫入之第一區塊的資料頁為“M”。
- 如申請專利範圍第11項所述之記憶裝置,另包含有:針對該超級區塊中的每一個第一區塊,決定出每一個第一區塊之最後一個有資料寫入的資料頁;以及針對該超級區塊中的每一個第一區塊,決定出該超級區塊中每一個第一區塊之最後一個可以成功讀取資料頁的步驟包含有:由每一個第一區塊之最後一個有資料寫入的資料頁往前讀取,以決定出該超級區塊中每一個第一區塊之最後一個可以成功讀取資料頁。
- 如申請專利範圍第14項所述之記憶裝置,其中針對該超級區塊中的每一個第一區塊,決定出每一個第一區塊之最後一個有資料寫入的資料頁的步驟包含有:使用一二分搜尋法,並透過交錯(interleave)或是多通道(multi-channel)操作以同時地自該超級區塊的多個第一區塊讀取資料,以決定出每一個第一區塊之最後一個有資料寫入的資料頁。
Priority Applications (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| TW112129891A TWI863495B (zh) | 2023-08-09 | 2023-08-09 | 控制快閃記憶體模組的方法及相關的快閃記憶體控制器與記憶裝置 |
| CN202410114871.XA CN119473123A (zh) | 2023-08-09 | 2024-01-26 | 控制快闪存储器模块的方法及相关的快闪存储器控制器与记忆装置 |
| US18/676,488 US20250053314A1 (en) | 2023-08-09 | 2024-05-28 | Method for controller flash memory module and associated flash memory controller and memory device |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| TW112129891A TWI863495B (zh) | 2023-08-09 | 2023-08-09 | 控制快閃記憶體模組的方法及相關的快閃記憶體控制器與記憶裝置 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| TWI863495B true TWI863495B (zh) | 2024-11-21 |
| TW202507727A TW202507727A (zh) | 2025-02-16 |
Family
ID=94379827
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| TW112129891A TWI863495B (zh) | 2023-08-09 | 2023-08-09 | 控制快閃記憶體模組的方法及相關的快閃記憶體控制器與記憶裝置 |
Country Status (3)
| Country | Link |
|---|---|
| US (1) | US20250053314A1 (zh) |
| CN (1) | CN119473123A (zh) |
| TW (1) | TWI863495B (zh) |
Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US9478271B2 (en) * | 2013-03-14 | 2016-10-25 | Seagate Technology Llc | Nonvolatile memory data recovery after power failure |
| TWI596480B (zh) * | 2011-12-05 | 2017-08-21 | 財團法人工業技術研究院 | 記憶體儲存系統及其中控裝置、管理方法與斷電復原方法 |
| TWI606388B (zh) * | 2016-12-14 | 2017-11-21 | 慧榮科技股份有限公司 | 資料儲存裝置及其資料維護方法 |
| TWI640868B (zh) * | 2016-10-07 | 2018-11-11 | 慧榮科技股份有限公司 | 資料儲存裝置及其資料寫入方法 |
| TWI734063B (zh) * | 2019-01-02 | 2021-07-21 | 慧榮科技股份有限公司 | 快閃記憶體控制器、管理快閃記憶體模組的方法及相關的電子裝置 |
-
2023
- 2023-08-09 TW TW112129891A patent/TWI863495B/zh active
-
2024
- 2024-01-26 CN CN202410114871.XA patent/CN119473123A/zh active Pending
- 2024-05-28 US US18/676,488 patent/US20250053314A1/en active Pending
Patent Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| TWI596480B (zh) * | 2011-12-05 | 2017-08-21 | 財團法人工業技術研究院 | 記憶體儲存系統及其中控裝置、管理方法與斷電復原方法 |
| US9478271B2 (en) * | 2013-03-14 | 2016-10-25 | Seagate Technology Llc | Nonvolatile memory data recovery after power failure |
| TWI640868B (zh) * | 2016-10-07 | 2018-11-11 | 慧榮科技股份有限公司 | 資料儲存裝置及其資料寫入方法 |
| TWI606388B (zh) * | 2016-12-14 | 2017-11-21 | 慧榮科技股份有限公司 | 資料儲存裝置及其資料維護方法 |
| TWI734063B (zh) * | 2019-01-02 | 2021-07-21 | 慧榮科技股份有限公司 | 快閃記憶體控制器、管理快閃記憶體模組的方法及相關的電子裝置 |
Also Published As
| Publication number | Publication date |
|---|---|
| US20250053314A1 (en) | 2025-02-13 |
| TW202507727A (zh) | 2025-02-16 |
| CN119473123A (zh) | 2025-02-18 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US9874918B2 (en) | Power interrupt management | |
| CN110874187B (zh) | 数据储存装置与数据处理方法 | |
| CN110837340B (zh) | 闪存控制器、管理闪存模块的方法及相关的电子装置 | |
| TWI421870B (zh) | 用於快閃記憶體的資料寫入方法及其控制器與儲存系統 | |
| TWI814501B (zh) | 映射表重建方法、記憶體儲存裝置及記憶體控制電路單元 | |
| CN102800357B (zh) | 程序码载入与存取方法、存储器控制器与存储器储存装置 | |
| CN110069362B (zh) | 数据储存装置与数据处理方法 | |
| TWI863495B (zh) | 控制快閃記憶體模組的方法及相關的快閃記憶體控制器與記憶裝置 | |
| TWI877755B (zh) | 控制快閃記憶體模組的方法及相關的快閃記憶體控制器與記憶裝置 | |
| TWI877093B (zh) | 控制快閃記憶體模組的方法及相關的快閃記憶體控制器與記憶裝置 | |
| TWI670598B (zh) | 管理快閃記憶體模組的方法及相關的快閃記憶體控制器及電子裝置 | |
| US12436882B1 (en) | Control method of flash memory controller | |
| TWI864944B (zh) | 控制快閃記憶體模組的方法及相關的快閃記憶體控制器與記憶裝置 | |
| US12039171B2 (en) | Method for accessing flash memory module, flash memory controller, and memory device | |
| TWI836610B (zh) | 存取快閃記憶體模組的方法與相關的快閃記憶體控制器及記憶裝置 | |
| US12511229B2 (en) | Method for accessing flash memory module and associated flash memory controller and memory device | |
| TW202601387A (zh) | 快閃記憶體控制器的控制方法、快閃記憶體控制器以及記憶體裝置 | |
| TWI691967B (zh) | 解碼方法及相關的快閃記憶體控制器與電子裝置 |