TWI661299B - 記憶體管理方法以及儲存控制器 - Google Patents
記憶體管理方法以及儲存控制器 Download PDFInfo
- Publication number
- TWI661299B TWI661299B TW107114631A TW107114631A TWI661299B TW I661299 B TWI661299 B TW I661299B TW 107114631 A TW107114631 A TW 107114631A TW 107114631 A TW107114631 A TW 107114631A TW I661299 B TWI661299 B TW I661299B
- Authority
- TW
- Taiwan
- Prior art keywords
- block
- physical
- type
- value
- string
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- 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
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0617—Improving the reliability of storage systems in relation to availability
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- 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
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
-
- 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/1041—Resource optimization
- G06F2212/1044—Space efficiency 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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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)
- Computer Security & Cryptography (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Memory System (AREA)
Abstract
本發明提供適用於配置有一可複寫式非揮發性記憶體模組的一儲存裝置一種記憶體管理方法。所述可複寫式非揮發性記憶體模組具有多個實體區塊。所述方法包括:掃描所述多個實體區塊,以辨識所述多個實體區塊中的一或多個壞實體區塊;對所述一或多個壞實體區塊執行壞實體區塊重新映射操作,以更新一虛擬區塊串管理表;以及根據所述虛擬區塊串管理表以一多平面寫入模式來執行寫入操作。
Description
本發明是有關於一種記憶體管理方法,且特別是有關於一種適用於配置有可複寫式非揮發性記憶體模組的儲存裝置的記憶體管理方法與儲存控制器。
一般來說,若可複寫式非揮發性記憶體模組具有一個壞實體區塊,該壞實體區塊所屬的區塊串不能被應用多平面寫入模式來寫入資料或是該壞實體區塊所屬的區塊串會被設定為不可使用。
因此,假設可複寫式非揮發性記憶體模組具有分散的多個壞實體區塊,則會導致可複寫式非揮發性記憶體模組整體的區塊串的寫入效率降低(因為不能被應用多平面寫入模式來寫入資料),或是導致可複寫式非揮發性記憶體模組整體的可用空間降低(因為壞實體區塊所屬的區塊串會被設定為不可使用)。
基此,要如何管理散佈在可複寫式非揮發性記憶體模組中的多個壞實體區塊,並且降低多個壞實體區塊對可複寫式非揮
發性記憶體模組整體的資料存取效率或/與使用空間的負面影響,是本領域人員研究的課題之一。
本發明提供適用於配置有可複寫式非揮發性記憶體模組的儲存裝置的一種記憶體管理方法與儲存控制器,可對所辨識的壞實體區塊執行重新映射,以獲得較多的可被應用多平面寫入模式的虛擬區塊串,進而增加了儲存裝置的資料存取效率。
本發明的一實施例提供一種記憶體管理方法,適用於配置有一可複寫式非揮發性記憶體模組的一儲存裝置,其中所述可複寫式非揮發性記憶體模組具有多個實體區塊,其中所述多個實體區塊被劃分至N個平面,並且所述N個平面的每一個平面具有依據一第一順序排列的對應M個區塊串(Block Stripe)的M個實體區塊,其中N與M為正整數。所述方法包括:掃描所述多個實體區塊,以辨識所述多個實體區塊中的一或多個壞實體區塊;對所述一或多個壞實體區塊執行壞實體區塊重新映射操作,以更新一虛擬區塊串管理表;以及根據所述虛擬區塊串管理表以一多平面寫入模式來執行寫入操作。所述壞實體區塊重新映射操作包括:若在所述N個平面中的第i個平面中的第j個實體區塊被辨識為壞實體區塊,判斷在所述第i個平面中是否存在排序在所述第j個實體區塊後的一或多個閒置實體區塊,其中i為小於或等於N的正整數,並且j為小於或等於M的正整數;其中若判定在所述
第i個平面中存在排序在所述第j個實體區塊後的所述一或多個閒置實體區塊,依據所述第一順序選擇在所述一或多個閒置實體區塊中的最後一個閒置實體區塊作為用以修復所述第j個實體區塊的犧牲實體區塊,並且根據所述犧牲實體區塊的實體位址來更新所述虛擬區塊串管理表所記錄的對應所述第j個實體區塊的映射資訊,以完成對應所述第j個實體區塊的所述壞實體區塊重新映射操作,其中對應所述第j個實體區塊的所述映射資訊用以表示所述第j個實體區塊的實體位址被所述犧牲實體區塊的實體位址所取代。
本發明的一實施例提供用於控制配置有可複寫式非揮發性記憶體模組的儲存裝置的一種儲存控制器。所述儲存控制器包括:連接介面電路、記憶體介面控制電路、區塊串管理電路單元以及處理器。連接介面電路用以耦接至主機系統。記憶體介面控制電路用以耦接至所述可複寫式非揮發性記憶體模組,其中所述可複寫式非揮發性記憶體模組具有多個實體區塊,其中所述多個實體區塊被劃分至N個平面,並且所述N個平面的每一個平面具有依據一第一順序排列的對應M個區塊串(Block Stripe)的M個實體區塊,其中N與M為正整數。所述區塊串管理電路單元用以掃描所述多個實體區塊,以辨識所述多個實體區塊中的一或多個壞實體區塊,其中所述區塊串管理電路單元更用以對所述一或多個壞實體區塊執行壞實體區塊重新映射操作,以更新一虛擬區塊串管理表,其中所述處理器用以根據所述虛擬區塊串管理表以指
示所述記憶體介面控制電路以一多平面寫入模式來執行寫入操作。所述壞實體區塊重新映射操作包括:若在所述N個平面中的第i個平面中的第j個實體區塊被辨識為壞實體區塊,所述區塊串管理電路單元判斷在所述第i個平面中是否存在排序在所述第j個實體區塊後的一或多個閒置實體區塊,其中i為小於或等於N的正整數,並且j為小於或等於M的正整數;其中若判定在所述第i個平面中存在排序在所述第j個實體區塊後的所述一或多個閒置實體區塊,所述區塊串管理電路單元依據所述第一順序選擇在所述一或多個閒置實體區塊中的最後一個閒置實體區塊作為用以修復所述第j個實體區塊的犧牲實體區塊,並且根據所述犧牲實體區塊的實體位址來更新所述虛擬區塊串管理表所記錄的對應所述第j個實體區塊的映射資訊,以完成對應所述第j個實體區塊的所述壞實體區塊重新映射操作,其中對應所述第j個實體區塊的所述映射資訊用以表示所述第j個實體區塊的實體位址被所述犧牲實體區塊的實體位址所取代。
基於上述,本發明實施例所提供的記憶體管理方法與儲存控制器,可掃描且辨識壞實體區塊,對所辨識的壞實體區塊執行壞實體區塊重新映射操作以更新虛擬區塊串管理表,並且根據所述虛擬區塊串管理表來經由多平面寫入模式執行寫入操作,以產生較多的可被應用多平面寫入模式的多個虛擬區塊串,進而增加了儲存裝置的資料存取效率與空間。
為讓本發明的上述特徵和優點能更明顯易懂,下文特舉
實施例,並配合所附圖式作詳細說明如下。
10‧‧‧主機系統
20‧‧‧儲存裝置
110、211‧‧‧處理器
120‧‧‧主機記憶體
130‧‧‧資料傳輸介面電路
210‧‧‧儲存控制器
212‧‧‧資料管理電路
213‧‧‧記憶體介面控制電路
214‧‧‧錯誤檢查與校正電路
215‧‧‧區塊串管理電路單元
2151‧‧‧壞區塊掃描電路
2152‧‧‧映射管理電路
216‧‧‧緩衝記憶體
217‧‧‧電源管理電路
220‧‧‧可複寫式非揮發性記憶體模組
230‧‧‧連接介面電路
S21、S23、S231、S233、S235、S25‧‧‧記憶體管理方法的流程步驟
D1‧‧‧封裝
LUN1‧‧‧邏輯數
P1(1)~P1(6)、P1(M-1)、P1(M-1)、P2(1)~P2(6)、P2(M-1)、P2(M)、P3(1)~P3(6)、P3(M-1)、P3(M)、P4(1)~P4(6)、P4(M-1)、P4(M)‧‧‧實體區塊
P1~P4‧‧‧平面
BS(1)~BS(6)、BS(M-1)、BS(M)‧‧‧區塊串
VBS(1)~VBS(6)、VBS(M-1)、VBS(M)‧‧‧虛擬區塊串
SF‧‧‧狀態欄
IF‧‧‧索引欄
PF1~PF4‧‧‧平面欄位
601、602‧‧‧範圍
BMP1、BMP2‧‧‧虛擬區塊串位圖
RMPT1、RMPT2‧‧‧虛擬區塊串重新映射表
圖1是根據本發明的一實施例所繪示的主機系統及儲存裝置的方塊示意圖。
圖2是根據本發明的一實施例所繪示的記憶體管理方法的流程圖。
圖3為根據本發明的一實施例所繪示可複寫式非揮發性記憶體模組的多個區塊串的示意圖。
圖4A為根據本發明的一實施例所繪示的壞實體區塊的示意圖。
圖4B為根據本發明的一實施例所繪示的具有壞實體區塊的區塊串的示意圖。
圖5為根據本發明的一實施例所繪示的壞實體區塊重新映射操作的示意圖。
圖6A為根據本發明的一實施例所繪示的虛擬區塊串管理表(第一虛擬區塊串位圖與第一虛擬區塊串重新映射表)的示意圖。
圖6B為根據本發明的另一實施例所繪示的虛擬區塊串管理表(第二虛擬區塊串位圖與第二虛擬區塊串重新映射表)的示意圖。
在本實施例中,儲存裝置包括可複寫式非揮發性記憶體模組(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 Management Circuit)212與記憶體介面控制電路(Memory Interface Control Circuit)213。
在本實施例中,主機系統10是透過資料傳輸介面電路130與儲存裝置20的連接介面電路230耦接至儲存裝置20來進行
資料的存取操作。例如,主機系統10可經由資料傳輸介面電路130將資料儲存至儲存裝置20或從儲存裝置20中讀取資料。
在本實施例中,處理器110、主機記憶體120及資料傳輸介面電路130可設置在主機系統10的主機板上。資料傳輸介面電路130的數目可以是一或多個。透過資料傳輸介面電路130,主機板可以經由有線或無線方式耦接至儲存裝置20。儲存裝置20可例如是隨身碟、記憶卡、固態硬碟(Solid State Drive,SSD)或無線記憶體儲存裝置。無線記憶體儲存裝置可例如是近距離無線通訊(Near Field Communication,NFC)記憶體儲存裝置、無線傳真(WiFi)記憶體儲存裝置、藍牙(Bluetooth)記憶體儲存裝置或低功耗藍牙記憶體儲存裝置(例如,iBeacon)等以各式無線通訊技術為基礎的記憶體儲存裝置。此外,主機板也可以透過系統匯流排耦接至全球定位系統(Global Positioning System,GPS)模組、網路介面卡、無線傳輸裝置、鍵盤、螢幕、喇叭等各式I/O裝置。
在本實施例中,資料傳輸介面電路130與連接介面電路230是相容於高速周邊零件連接介面(Peripheral Component Interconnect Express,PCI Express)標準的介面電路。並且,資料傳輸介面電路130與連接介面電路230之間是利用快速非揮發性記憶體介面標準(Non-Volatile Memory express,NVMe)通訊協定來進行資料的傳輸。
然而,必須瞭解的是,本發明不限於此,資料傳輸介面電路130與連接介面電路230亦可以是符合並列先進附件(Parallel
Advanced Technology Attachment,PATA)標準、電氣和電子工程師協會(Institute of Electrical and Electronic Engineers,IEEE)1394標準、序列先進附件(Serial Advanced Technology Attachment,SATA)標準、通用序列匯流排(Universal Serial Bus,USB)標準、SD介面標準、超高速一代(Ultra High Speed-I,UHS-I)介面標準、超高速二代(Ultra High Speed-II,UHS-II)介面標準、記憶棒(Memory Stick,MS)介面標準、多晶片封裝(Multi-Chip Package)介面標準、多媒體儲存卡(Multi Media Card,MMC)介面標準、eMMC介面標準、通用快閃記憶體(Universal Flash Storage,UFS)介面標準、eMCP介面標準、CF介面標準、整合式驅動電子介面(Integrated Device Electronics,IDE)標準或其他適合的標準。此外,在另一實施例中,連接介面電路230可與儲存控制器210封裝在一個晶片中,或者連接介面電路230是佈設於一包含儲存控制器210之晶片外。
在本實施例中,主機記憶體120用以暫存處理器110所執行的指令或資料。例如,在本範例實施例中,主機記憶體120可以是動態隨機存取記憶體(Dynamic Random Access Memory,DRAM)、靜態隨機存取記憶體(Static Random Access Memory,SRAM)等。然而,必須瞭解的是,本發明不限於此,主機記憶體120也可以是其他適合的記憶體。
儲存控制器210用以執行以硬體型式或韌體型式實作的多個邏輯閘或控制指令並且根據主機系統10的指令在可複寫式非揮發性記憶體模組220中進行資料的寫入、讀取與抹除等運作。
更詳細來說,儲存控制器210中的處理器211為具備運算能力的硬體,其用以控制儲存控制器210的整體運作。具體來說,處理器211具有多個控制指令,並且在儲存裝置20運作時,此些控制指令會被執行以進行資料的寫入、讀取與抹除等運作。
值得一提的是,在本實施例中,處理器110與處理器211例如是中央處理單元(Central Processing Unit,CPU)、微處理器(micro-processor)、或是其他可程式化之處理單元(Microprocessor)、數位訊號處理器(Digital Signal Processor,DSP)、可程式化控制器、特殊應用積體電路(Application Specific Integrated Circuits,ASIC)、可程式化邏輯裝置(Programmable Logic Device,PLD)或其他類似電路元件,本發明並不限於此。
在一實施例中,儲存控制器210還具有唯讀記憶體(未繪示)及隨機存取記憶體(未繪示)。特別是,此唯讀記憶體具有開機碼(boot code),並且當儲存控制器210被致能時,處理器211會先執行此開機碼來將儲存於可複寫式非揮發性記憶體模組220中之控制指令載入至儲存控制器210的隨機存取記憶體中。之後,處理器211會運轉此些控制指令以進行資料的寫入、讀取與抹除等運作。在另一實施例中,處理器211的控制指令亦可以程式碼型式儲存於可複寫式非揮發性記憶體模組220的特定區域,例如,可複寫式非揮發性記憶體模組220中專用於存放系統資料的實體儲存單元中。
在本實施例中,如上所述,儲存控制器210還包括資料
管理電路212與記憶體介面控制電路213。應注意的是,儲存控制器220各部件所執行的操作亦可視為儲存控制器220所執行的操作。
其中,資料管理電路212耦接至處理器211、記憶體介面控制電路213與連接介面電路230。資料管理電路212用以接受處理器211的指示來進行資料的傳輸。例如,經由連接介面電路230從主機系統10(如,主機記憶體120)讀取資料,並且將所讀取的資料經由記憶體介面控制電路213寫入至可複寫式非揮發性記憶體模組220中(如,根據來自主機系統10的寫入指令來進行寫入操作)。又例如,經由記憶體介面控制電路213從可複寫式非揮發性記憶體模組220的一或多個實體單元中讀取資料(資料可讀取自一或多個實體單元中的一或多個記憶胞),並且將所讀取的資料經由連接介面電路230寫入至主機系統10(如,主機記憶體120)中(如,根據來自主機系統10的讀取指令來進行讀取操作)。在另一實施例中,資料管理電路212亦可整合至處理器211中。
記憶體介面控制電路213用以接受處理器211的指示,配合資料管理電路212來進行對於可複寫式非揮發性記憶體模組220的寫入(亦稱,程式化,Programming)操作、讀取操作或抹除操作。
舉例來說,處理器211可執行寫入指令序列,以指示記憶體介面控制電路213將資料寫入至可複寫式非揮發性記憶體模組220中;處理器211可執行讀取指令序列,以指示記憶體介面
控制電路213從可複寫式非揮發性記憶體模組220的對應讀取指令的一或多個實體單元中讀取資料;處理器211可執行抹除指令序列,以指示記憶體介面控制電路213對可複寫式非揮發性記憶體模組220進行抹除操作。寫入指令序列、讀取指令序列及抹除指令序列可各別包括一或多個程式碼或指令碼並且用以指示對可複寫式非揮發性記憶體模組220執行相對應的寫入、讀取及抹除等操作。在一實施例中,記憶體介面控制電路213還可根據所接收的其他指令序列,以對可複寫式非揮發性記憶體模組220執行相對應的操作(例如,壞區塊掃描操作、損耗平衡操作或垃圾回收操作等等)。這些指令序列可包括一或多個訊號,或是在匯流排上的資料。這些訊號或資料可包括指令碼或程式碼。例如,在讀取指令序列中,會包括讀取的辨識碼、記憶體位址等資訊;在寫入指令序列中,會包括欲寫入的邏輯位址、寫入資料、欲使用的寫入模式(如,單平面寫入模式或多平面寫入模式)等資訊。
此外,欲寫入至可複寫式非揮發性記憶體模組220的資料會經由記憶體介面控制電路213轉換為可複寫式非揮發性記憶體模組220所能接受的格式。
可複寫式非揮發性記憶體模組220是耦接至儲存控制器210(記憶體介面控制電路213)並且用以儲存主機系統10所寫入之資料。可複寫式非揮發性記憶體模組220可以是單階記憶胞(Single Level Cell,SLC)NAND型快閃記憶體模組(即,一個記憶胞中可儲存1個位元的快閃記憶體模組)、多階記憶胞(Multi Level
Cell,MLC)NAND型快閃記憶體模組(即,一個記憶胞中可儲存2個位元的快閃記憶體模組)、三階記憶胞(Triple Level Cell,TLC)NAND型快閃記憶體模組(即,一個記憶胞中可儲存3個位元的快閃記憶體模組)、四階記憶胞(Quadruple Level Cell,QLC)NAND型快閃記憶體模組(即,一個記憶胞中可儲存4個位元的快閃記憶體模組)、三維NAND型快閃記憶體模組(3D NAND flash memory module)或垂直NAND型快閃記憶體模組(Vertical NAND flash memory module)等其他快閃記憶體模組或其他具有相同特性的記憶體模組。可複寫式非揮發性記憶體模組220中的記憶胞是以陣列的方式設置。
在本實施例中,可複寫式非揮發性記憶體模組220具有多個字元線,其中所述多個字元線的每一個字元線包括多個記憶胞。同一條字元線上的多個記憶胞會組成一或多個實體程式化單元(實體頁面)。此外,多個實體程式化單元可組成一個實體單元(實體區塊或實體抹除單元)。在本實施例中,以三階記憶胞(Triple Level Cell,TLC)NAND型快閃記憶體模組做例子來說明,即,在下述的實施例中,會將一個可儲存3個位元值的記憶胞作為一個實體程式化單元(即,在每次程式化操作中,會對一個實體程式化單元接著一個實體程式化單元來施加程式化電壓以程式化資料),其中每一個記憶胞可區分為各自可儲存一個位元值的下實體頁面(Lower Physical Page)、中實體頁面(Middle Physical Page)與上實體頁面(Upper Physical Page)。
在本實施例中,是以記憶胞作為寫入(程式化)資料的最小單位。實體單元為抹除之最小單位,即,每一實體單元含有最小數目之一併被抹除之記憶胞。每一實體單元會具有多個記憶胞。
在以下實施例中,是以一個實體區塊作為一個實體單元的範例。然而,在另一實施例中,一個實體單元亦可以是指任意數目的記憶胞組成,視實務上的需求而定。此外,必須瞭解的是,當處理器211對可複寫式非揮發性記憶體模組220中的記憶胞(或實體單元/實體區塊)進行分組以執行對應的管理操作時,此些記憶胞(或實體單元)是被邏輯地分組,而其實際位置並未更動。
圖3為根據本發明的一實施例所繪示可複寫式非揮發性記憶體模組的多個區塊串的示意圖。
請參照圖3,更詳細來說,可複寫式非揮發性記憶體模組220可具有多個封裝(Pakage),每個封裝可具有多個實體區塊,所述多個實體區塊可被劃分至N個平面,並且部份或全部的平面可邏輯地劃分為一個邏輯數(Logical unit number,LUN)。為了簡便說明,假設可複寫式非揮發性記憶體模組220具有一個封裝D1,並且封裝D1具有多個實體區塊。所述多個實體區塊被劃分(被分組)為4個平面(Plane)P1~P4中(N等於4),其中所述4個平面被劃分為一個邏輯數LUN 1。此外,每個平面具有依據第一順序排序的M個實體單元,如,平面P1具有M個實體區塊P1(1)~P1(M);平面P2具有M個實體區塊P2(1)~P2(M);平面P2具有M個實體區塊P3(1)~P3(M);平面P4具有M個實體區塊
P4(1)~P4(M)。在本實施例中,每個平面中排序相同的實體區塊會被組成一個區塊串(Block Stripe)。例如,區塊串BS(1)包括實體區塊P1(1)、實體區塊P2(1)、實體區塊P3(1)與實體區塊P4(1)。也就是說,上述4個平面中的所有實體區塊可組成依據第一順序排列的M個區塊串BS(1)~BS(M)。
在本實施例中,儲存控制器210是依據區塊串的順序來循序寫入資料。例如(第一例),假設所有區塊串皆為空白,為了寫入一筆可填滿4個實體區塊的寫入資料,儲存控制器210會依據第一順序從第一個空白的區塊串(在此例子為區塊串BS(1)),來將所述寫入資料儲存至所述第一個空白的區塊串的所有實體區塊中(如,實體區塊P1(1)、實體區塊P2(1)、實體區塊P3(1)與實體區塊P4(1)中)。又例如(第二例),假設區塊串BS(1)的實體區塊P1(1)不可用來儲存所述資料,並且其他實體區塊皆可用來儲存所述寫入資料,則儲存控制器210會將所述寫入資料儲存至區塊串BS(1)的實體區塊P2(1)、實體區塊P3(1)與實體區塊P4(1)以及區塊串BS(2)的實體區塊P1(2)中。
在本實施例中,若欲被寫入的區塊串中分別對應所有平面的所有實體區塊皆可被用來儲存資料(如,空白的),則儲存控制器210會使用多平面寫入(Multiple Plane Write)模式來儲存所述寫入資料至所述區塊串(亦稱,對所述區塊串執行多平面寫入操作)。所述多平面寫入模式亦可稱為全平面寫入(Full Plane Write)模式。如上述第一例,儲存控制器210會使用多平面寫入
模式來儲存所述寫入資料。
反之,若欲被寫入的區塊串中分別對應所有平面的所有實體區塊中的一或多個實體區塊不可被用來儲存資料(如,已損壞的實體區塊、壞實體區塊、或已儲存資料的實體區塊),則儲存控制器210會使用單平面寫入(Single Plane Write)模式來儲存所述寫入資料至所述區塊串(亦稱,對所述區塊串執行單平面寫入操作)。如上述第二例,儲存控制器210會使用單平面寫入模式來儲存所述寫入資料。
更詳細來說,假設儲存控制器210使用多平面寫入模式來儲存寫入資料至區塊串BS(1)的分別對應平面P1~P4的4個實體區塊P1(1)、P2(1)、P3(1)、P4(1)中(如,第一例),則儲存控制器210會將所述寫入資料分為4個子寫入資料,並且分別將所述4個子寫入資料先儲存至對應平面P1~P4的寫入暫存器(Write register),接著儲存控制器可僅下達一筆程式化指令來一次性地將所述4個子寫入資料一同寫入至4個實體區塊P1(1)、P2(1)、P3(1)、P4(1)。
另外,假設儲存控制器210使用單平面寫入模式來儲存寫入資料至區塊串BS(1)的分別對應平面P2~P4的3個實體區塊P2(1)、P3(1)、P4(1)中以及區塊串BS(2)的對應平面P1的1個實體區塊P1(2)中(如,第二例),則儲存控制器210會將所述寫入資料分為4個子寫入資料,並且分別將所述4個子寫入資料先儲存至對應平面P1~P4的寫入暫存器(Write register),接著儲存控
制器210需依序下達4筆程式化指令,以分批地將4筆子寫入資料儲存至實體區塊P2(1)、P3(1)、P4(1)、P1(2)中,上述操作依序包括:儲存控制器210下達1筆程式化指令來將儲存在平面P2的寫入暫存器的子寫入資料寫入至實體區塊P2(1);儲存控制器210下達1筆程式化指令來將儲存在平面P3的寫入暫存器的子寫入資料寫入至實體區塊P3(1);儲存控制器210下達1筆程式化指令來將儲存在平面P4的寫入暫存器的子寫入資料寫入至實體區塊P4(1);以及儲存控制器210下達1筆程式化指令來將儲存在平面P1的寫入暫存器的子寫入資料寫入至實體區塊P1(2)。
換句話說,即使寫入資料的大小相同,但經由單平面寫入模式來儲存所述寫入資料的程式化操作所耗費的時間會大於經由多平面寫入模式來儲存所述寫入資料的程式化操作所耗費的時間。應注意的是,如上述,除了合理的已寫入資料的實體區塊之外,損壞的實體區塊(亦稱,壞實體區塊)會迫使儲存控制器210需使用單平面寫入來儲存寫入資料,進而造成寫入操作的時間增加(即,造成寫入操作的效率降低)。本實施例所提供的記憶體管理方法可降低上述壞實體區塊的負面影響。
其他關於多平面寫入模式、單平面寫入模式的使用條件與區塊串的關聯與細節為本領域人員所熟知且不為本發明的技術重點,不再贅述於此。
儲存控制器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可藉由實體轉邏輯位址映射表來查找一實體單元所映射的邏輯單元。然而,上述有關邏輯單元與實體單元映射的技術概念為本領域技術人員之慣用技術手段,不再贅述於此。
在本實施例中,錯誤檢查與校正電路214是耦接至處理器211並且用以執行錯誤檢查與校正程序以確保資料的正確性。具體來說,當處理器211從主機系統10中接收到寫入指令時,錯誤檢查與校正電路508會為對應此寫入指令的資料產生對應的錯
誤更正碼(error correcting code,ECC)及/或錯誤檢查碼(error detecting code,EDC),並且處理器211會將對應此寫入指令的資料與對應的錯誤更正碼及/或錯誤檢查碼寫入至可複寫式非揮發性記憶體模組220中。之後,當處理器211從可複寫式非揮發性記憶體模組220中讀取資料時會同時讀取此資料對應的錯誤更正碼及/或錯誤檢查碼,並且錯誤檢查與校正電路214會依據此錯誤更正碼及/或錯誤檢查碼對所讀取的資料執行錯誤檢查與校正程序。此外,在錯誤檢查與校正程序後,若成功解碼所讀取之資料,錯誤檢查與校正電路214可回傳錯誤位元值給處理器211。
在一實施例中,儲存控制器210還包括緩衝記憶體216與電源管理電路217。緩衝記憶體是耦接至處理器211並且用以暫存來自於主機系統10的資料與指令、來自於可複寫式非揮發性記憶體模組220的資料或其他用以管理儲存裝置20的系統資料,以讓處理器211可快速地從緩衝記憶體216中存取所述資料、指令或系統資料。電源管理電路217是耦接至處理器211並且用以控制儲存裝置20的電源。
在本實施例中,區塊串管理電路單元215包括壞區塊掃描電路2151與映射表管理電路2152。所述區塊串管理電路單元215用以根據所辨識到的壞實體區塊來建立/更新多個虛擬區塊串及對應的虛擬區塊串管理表(如,以下所描述的壞實體區塊重新映射操作),以讓所辨識到的壞實體區塊可經由對此壞實體區塊所執行的壞實體區塊重新映射操作而被修復,並且可被用來執行資
料存取操作,進而降低壞實體區塊的負面影響。
在本實施例中,處理器211可在下列時機點的其中之一:(1)儲存裝置20閒暇(即,儲存裝置20閒置超過一預定時間門檻值)時;(2)儲存裝置開電時;或(3)從一實體區塊所讀取的資料的錯誤位元數超過一錯誤位元數門檻值時,來指示區塊串管理電路單元215中的壞區塊掃描電路2151執行壞實體區塊掃描操作,此操作會掃描全部或是特定的(如,對應上述條件(3)的實體區塊)實體區塊,以判斷被掃描的實體區塊是否為壞實體區塊。此外,壞區塊掃描電路2151可辨識出被判定為壞實體區塊的實體區塊的實體位址(或識別碼)。在另一實施例中,處理器211可根據所有實體區塊的統計值與錯誤位元數的其中之一或其組合,來挑選物理狀態較差的實體區塊(例如,抹除次數較多或錯誤位元數較多的實體區塊)來做為被掃描的實體區塊。在一實施例中,處理器211亦可隨機挑選目標實體區塊來進行壞實體區塊掃描操作。壞實體區塊掃描操作的細節為本領域人員慣用之技術手段,不贅述於此。
以下會配合多個圖式來詳細說明本實施例所提供的記憶體管理方法、區塊串管理電路單元215如何進行壞實體區塊重新映射操作的細節以及映射表管理電路2152的功能。
圖2是根據本發明的一實施例所繪示的解碼方法的流程圖。應注意的是,圖2所繪示的的記憶體管理方法亦可稱為壞實體區塊重新映射方法。請同時參照圖1與圖2,在步驟S21中,區
塊串管理電路單元215掃描多個實體區塊,以辨識所述多個實體區塊中的一或多個壞實體區塊,其中所述多個實體區塊被劃分至N個平面。具體來說,處理器211會在上述時機點來指示區塊串管理電路單元215中的壞區塊掃描電路2151執行壞實體區塊掃描操作,以辨識存在於可複寫式非揮發性記憶體模組220的所述多個實體區塊中的壞實體區塊。
圖4A為根據本發明的一實施例所繪示的壞實體區塊的示意圖。圖4B為根據本發明的一實施例所繪示的具有壞實體區塊的區塊串的示意圖。
為了方便說明,假設M為6,即,每個平面具有6個依據第一順序排列的實體區塊,並且共有6個區塊串BS(1)~BS(6)。此外,假設經由所執行的壞實體區塊掃描操作,壞區塊掃描電路2151辨識到壞實體區塊P1(1)、P1(3)、P2(3)、P3(3)、P3(4)、P4(3)、P4(5)(如,灰底區塊)。請參照圖4B,如上所述,區塊串BS(1)、BS(3)、BS(4)、BS(5)會因為壞實體區塊的存在而不能被應用“多平面寫入模式”來寫入資料(區塊串BS(1)、BS(3)、BS(4)、BS(5)可被應用“單平面寫入模式”來寫入資料)。反之,皆為正常實體區塊的區塊串BS(2)、BS(6)可被應用“多平面寫入模式”來寫入資料。經由上述的例子,可知道,雖然所辨識到的壞實體區塊的數量比起正常實體區塊的數量還少,但因為壞實體區塊的存在而使得可被應用“多平面寫入模式”來寫入資料的區塊串的數量大幅降低,使得不能被應用“多平面寫入模式”的區塊串的數量(如,4個)還
多於可被應用“多平面寫入模式”的區塊串的數量(如,2個),進而降低了整體資料存取操作的效率。
基此,處理器211會指示區塊串管理電路單元215對所辨識的壞實體區塊執行壞實體區塊重新映射操作(Bad Physical Block)。即,在步驟S23中,區塊串管理電路單元215對所述一或多個壞實體區塊執行壞實體區塊重新映射操作,以更新虛擬區塊串管理表。具體來說,對於每個被辨識的壞實體區塊,區塊串管理電路單元215都會判斷是否要對此壞實體區塊執行重新映射,以達到虛擬地修復此壞實體區塊的效用,進而使具有此壞實體區塊的虛擬區塊串可被應用多平面寫入模式來寫入資料。
更詳細來說,步驟S23包括步驟S231、S233、S235。在步驟S231中,若在所述N個平面中的第i個平面中的第j個實體區塊被辨識為壞實體區塊,區塊串管理電路單元215(如,映射表管理電路)判斷在所述第i個平面中是否存在排序在所述第j個實體區塊後的一或多個閒置實體區塊。所述i小於或等於N,並且j小於或等於M。
若判定在所述第i個平面中存在有排序在所述第j個實體區塊後的一或多個閒置實體區塊,接續至步驟S233,區塊串管理電路單元215(如,映射表管理電路2152)依據第一順序選擇在所述一或多個閒置實體區塊中的最後一個閒置實體區塊作為用以修復所述第j個實體區塊的犧牲實體區塊,並且根據所述多個犧牲實體區塊的實體位址來更新所述多個虛擬區塊串管理表所記錄的
對應所述第j個實體區塊的映射資訊,以完成對應所述第j個實體區塊的所述壞實體區塊重新映射操作,其中對應所述第j個實體區塊的所述多個映射資訊用以表示所述第j個實體區塊的實體位址被所述多個犧牲實體區塊的實體位址所取代。
反之,若判定在所述第i個平面中不存在有排序在所述第j個實體區塊後的一或多個閒置實體區塊,接續至步驟S235,區塊串管理電路單元215(如,映射表管理電路2152)不修復所述第j個實體區塊,在所述多個虛擬區塊串管理表中記錄對應所述第j個實體區塊的映射資訊,並且結束對應所述第j個實體區塊的所述壞實體區塊重新映射操作,其中對應所述第j個實體區塊的所述映射資訊用以表示所述第j個實體區塊為沒有被修復的壞實體區塊。以下藉由圖5來詳細說明壞實體區塊重新映射操作。
圖5為根據本發明的一實施例所繪示的壞實體區塊重新映射操作的示意圖。請參照圖5,舉例來說,假設所有實體區塊皆為空白。此外,假設管理電路單元215對已被辨識為壞實體區塊的實體區塊P1(1)(j等於1)執行壞實體區塊重新映射操作。首先,如同步驟S231所述,區塊串管理電路單元215(如,映射表管理電路2152)會去判斷在平面P1內且排序在實體區塊P1(1)後是否存在有任何一個閒置實體區塊(即,空白且可用的實體區塊)。在此例子中,區塊串管理電路單元215可判定在平面P1中且依據第一順序排序在實體區塊P1(1)後面的閒置實體區塊有實體區塊P1(2)、P1(4)、P1(5)、P1(6)(雖然實體區塊P1(3)也是空白的,但
由於實體區塊P1(3)為壞實體區塊,因此實體區塊P1(3)不為可用的實體區塊,即,不為閒置實體區塊)。
接著,區塊串管理電路單元215執行步驟S233,即,區塊串管理電路單元215從閒置實體區塊P1(2)、P1(4)、P1(5)、P1(6)中依據第一順序選擇最後一個實體區塊作為用以修復所述實體區塊P1(1)的實體區塊(亦稱,犧牲實體區塊)。接著,區塊串管理電路單元215(如,映射表管理電路2152)會利用所選擇的犧牲實體區塊的實體位址取代虛擬區塊串中的實體區塊P1(1)的實體位址(如,圖5所示的P1(1)→P1(6))。在壞實體區塊P1(1)的實體位址於虛擬區塊串中被犧牲實體區塊P1(6)的實體位址取代後,上述操作亦可稱為壞實體區塊P1(1)被修復為已修復實體區塊。區塊串管理電路單元215(如,映射表管理電路2152)會記錄對應已修復實體區塊P1(1)的映射資訊至虛擬區塊串管理表中,並且完成對應壞實體區塊P1(1)的壞實體區塊重新映射操作。
值得一提的是,上述的「修復」僅為虛擬地或是邏輯地,並且是利用正常可用的實體區塊的實體位址來重新映射壞實體區塊的實體位址(映射表管理電路2152會利用虛擬區塊串管理表來記錄此資訊)。即,對於實體區塊P1(1)的資料存取操作,都會被轉換為對於實體區塊P1(6)的資料存取操作。實質上,實體區塊P1(1)在物理上依然是損壞的。應注意的是,由於實體區塊P1(6)已經成為犧牲實體區塊,因此實體區塊P1(6)便不能再被判定為“可用的”(映射表管理電路2152會利用虛擬區塊串管理表來記錄此
資訊)。犧牲實體區塊不會被判定為閒置實體區塊。虛擬區塊串管理表中的犧牲實體區塊會被視為不可用的。也就是說,當使用犧牲實體區塊P1(6)來修復壞實體區塊P1(1)後,平面P1中的閒置實體區塊會減少為實體區塊P1(2)、P1(4)、P1(5)。
相似地,對於壞實體區塊P1(3)所執行的壞實體區塊重新映射操作,區塊串管理電路單元215(如,映射表管理電路2152)會選擇閒置實體區塊P1(5)來做為用以修復壞實體區塊P1(3)的犧牲實體區塊(如,圖5所示的P1(3)→P1(5))。
依此類推,壞實體區塊P2(3)、P3(3)、P3(4)、P4(3)的實體位址皆會分別被對應的閒置實體區塊P2(6)、P3(6)、P3(5)、P4(6)的實體位址所重新映射。
應注意的是,對於壞實體區塊P4(5)所執行的壞實體區塊重新映射操作中,由於排序在壞實體區塊P4(5)後的實體區塊P4(6)為犧牲實體區塊(不是閒置實體區塊),因此區塊串管理電路單元215(如,映射表管理電路2152)會判定在平面P4中不存在有排序在壞實體區塊P4(5)後的閒置實體區塊,並且執行步驟S235。即,區塊串管理電路單元215(如,映射表管理電路2152)不修復所述壞實體區塊P4(5),並且在虛擬區塊串管理表中記錄對應所述壞實體區塊P4(5)的映射資訊,並且結束對應壞實體區塊P4(5)的所述壞實體區塊重新映射操作。換言之,虛擬區塊串VBS(5)中的實體區塊P4(5)會被標記為不可用的(被標記為損壞的)。
在完成對於所有已辨識的壞實體區塊的壞實體區塊重新
映射操作後,對於虛擬區塊串管理表的更新/建立也完成。應注意的是,完成對於所有已辨識的壞實體區塊的壞實體區塊重新映射操作後,所述虛擬區塊串VBS(1)~VBS(6)與原有的區塊串BS(1)~BS(6)的差異在於,虛擬區塊串VBS(1)~VBS(6)中的虛擬區塊串VBS(1)~VBS(4)不具有任何不可用的實體區塊。原本存在於虛擬區塊串VBS(1)~VBS(4)的壞實體區塊也被修復為已修復實體區塊。更具體來說,原本不能被應用“多平面寫入模式”來寫入資料的區塊串BS(1)已被轉換為虛擬區塊串VBS(1),並且虛擬區塊串VBS(1)可被應用“多平面寫入模式”來寫入資料;原本不能被應用“多平面寫入模式”來寫入資料的區塊串BS(3)已被轉換為虛擬區塊串VBS(3),並且虛擬區塊串VBS(3)可被應用“多平面寫入模式”來寫入資料;原本不能被應用“多平面寫入模式”來寫入資料的區塊串BS(4)已被轉換為虛擬區塊串VBS(4),並且虛擬區塊串VBS(4)可被應用“多平面寫入模式”來寫入資料。此外,在虛擬區塊串VBS(1)~VBS(6)中,僅剩下虛擬區塊串VBS(5)~VBS(6)不可被應用“多平面寫入模式”來寫入資料。換句話說,經由完成所有壞實體區塊重新映射操作,可使得不能被應用“多平面寫入模式”的區塊串的數量從4個被降低為2個,且可被應用“多平面寫入模式”的虛擬區塊串也被集中排序較為前面的多個虛擬區塊串,進而增進了整體虛擬資料串VBS(1)~VBS(6)的資料存取效率(因為可被應用多平面寫入模式的區塊串越多,可讓整體資料存取的速度越快)。
在本實施例中,虛擬區塊串管理表可被區分為第一類型與第二類型。
具體來說,若所述虛擬區塊串管理表屬於第一類型,所述虛擬區塊串管理表包括第一虛擬區塊串位圖(bitmap)與一第一虛擬區塊串重新映射表(remapping table)。所述第一虛擬區塊串位圖的狀態欄記錄依據所述第一順序排列的分別對應所述M個虛擬區塊串的M個狀態值。每一所述狀態值包括:第一類狀態值,用以表示對應所述第一類狀態值的虛擬區塊串中的所有實體區塊皆為正常的,其中所述第一類狀態值更用以表示對應所述第一類狀態值的所述虛擬區塊串不具有任何壞實體區塊;第二類狀態值,用以表示對應所述第二類狀態值的所述虛擬區塊串具有經由執行壞區塊重新映射操作而修復的一或多個壞實體區塊;一第三類狀態值,用以表示對應所述第三類狀態值的虛擬區塊串中的一或多個實體區塊為不可用的;或一第四類狀態值,用以表示對應所述第四類狀態值的虛擬區塊串中的所有實體區塊皆為不可用的。
此外,所述第一虛擬區塊串重新映射表包括對應所述N個平面的N個平面欄位,其中所述N個平面欄位的每一個平面欄位依據所述第一順序記錄對應的平面的M個實體區塊的映射資訊。每一所述映射資訊包括:第一類映射值,用以表示對應所述第一類映射值的實體區塊不為所述壞實體區塊,並且對應所述第一類映射值的所述實體區塊的實體位址為原有的實體位址;第二
類映射值,用以表示對應所述第二類映射值的實體區塊為已被執行所述壞實體區塊重新映射操作的壞實體區塊,其中所述第二類映射值更用以表示用以修復對應所述第二類映射值的所述實體區塊的犧牲實體區塊的實體位址;第三類映射值,用以表示對應所述第三類狀態值的實體區塊為犧牲實體區塊並且為不可用的;或第四類映射值,用以表示對應所述第四類狀態值的實體區塊為沒有執行所述壞實體區塊重新映射操作的壞實體區塊。
另一方面,若所述虛擬區塊串管理表屬於第二類型,所述虛擬區塊串管理表包括第二虛擬區塊串位圖(bitmap)與第二虛擬區塊串重新映射表(remapping table)。所述第二虛擬區塊串位圖包括狀態欄與索引欄,其中所述狀態欄記錄依據所述第一順序排列的分別對應所述M個虛擬區塊串的M個狀態值,其中所述索引欄記錄依據所述第一順序排列的分別對應所述M個虛擬區塊串的M個索引值。每一所述狀態值的種類相似於上述第一類型的虛擬區塊串管理表的狀態值的種類,不贅述於此。在所述M個索引值中,對應所述第一類狀態值的索引值為第一類索引值,並且對應所述第二類狀態值、所述第三類狀態值與所述第四類狀態值的索引值為第二類索引值,其中所述第二類索引值包括不大於M的正整數。此外,所述第二虛擬區塊串重新映射表包括索引欄與對應所述N個平面的N個平面欄位,其中所述索引欄記錄所述第二虛擬區塊串位圖的所述M個索引值中屬於所述第二類索引值的P個索引值,其中P小於或等於M。其中,所述N個平面欄位的每
一個平面欄位依據所述P個索引值記錄對應所述P個索引值的P個虛擬區塊串的P個實體區塊的映射資訊。每一所述映射資訊相似於上述第一類型的虛擬區塊串管理表的映射資訊的種類,不贅述於此。所述第二虛擬區塊串重新映射表的所述N個平面欄位共記錄N乘以P個映射資訊。
以下藉由圖6A來舉例說明為第一類型的虛擬區塊串管理表,並且藉由圖6B來舉例說明為第二類型的虛擬區塊串管理表。
圖6A為根據本發明的一實施例所繪示的虛擬區塊串管理表(第一虛擬區塊串位圖與第一虛擬區塊串重新映射表)的示意圖。請參照圖6A,接續了圖5的例子,為第一類型的虛擬區塊串管理表包括第一虛擬區塊串位圖(First virtual block stripe bitmap)BMP1與第一虛擬區塊串重新映射表(First virtual block stripe remapping table)RMPT1。第一虛擬區塊串位圖BMP1具有狀態欄SF,其依據第一順序,記錄了分別對應虛擬區塊串VBS(1)~VBS(6)的6個狀態值(M等於6)“1”、“0”、“1”、“1”、“2”、“3”。如上所述,映射表管理電路2152會使用第一類狀態值(如,位元值“0”)來表示所對應的虛擬區塊串中的所有實體區塊皆為正常的(不具有任何壞實體區塊),如,對應虛擬區塊串VBS(2)的狀態值會被記錄為“0”。映射表管理電路2152會使用第二類狀態值(如,位元值“1”)來表示所對應的虛擬區塊串具有至少一個已修復實體區塊,如,對應虛擬區塊串VBS(1)、VBS(3)、VBS(4)
的狀態值會被記錄為“1”。映射表管理電路2152會使用第三類狀態值(如,位元值“2”)來表示所對應的虛擬區塊串具有至少一個不可用的實體區塊(如,犧牲實體區塊或壞實體區塊),如,對應虛擬區塊串VBS(5)的狀態值會被記錄為“2”(換言之,對應第三類狀態值的虛擬區塊串至少會具有一個非不可用的實體區塊,如,實體區塊P2(5))。映射表管理電路2152會使用第四類狀態值(如,位元值“3”)來表示所對應的虛擬區塊串中所有的實體區塊皆為不可用的實體區塊,如,對應虛擬區塊串VBS(6)的狀態值會被記錄為“3”(因為,虛擬區塊串VBS(6)的所有實體區塊皆為不可用的犧牲實體區塊)。
在本實施例中,處理器211可快速地利用第一虛擬區塊串位圖來判斷每個虛擬區塊串是否可被應用多平面寫入模式來寫入資料。具體來說,對應第一類狀態值與第二類狀態值的虛擬區塊串(如,範圍601所示)會被判定為可被應用多平面寫入模式來寫入資料;對應第三類狀態值與第四類狀態值的虛擬區塊串(如,範圍602所示)會被判定為不可被應用多平面寫入模式來寫入資料。應注意的是,對應第三類狀態值的虛擬區塊串會被應用單平面寫入操作來寫入資料至所述對應第三類狀態值的虛擬區塊串中的可用的實體區塊。
特別是,在一實施例中,對應第四類狀態值的虛擬區塊串會被忽略於任何資料存取操作(因為,對應第四類狀態值的虛擬區塊串的所有實體區塊皆為不可用的)。如此一來,由於第四類
狀態值的資訊會被記錄,可節省一些特定的記憶體管理操作的耗費時間(因為可執行特定的記憶體管理操作的過程中無視對應第四類狀態值的虛擬區塊串)。
應注意的是,上述第一虛擬區塊串位圖BMP1的狀態欄SF所記錄的狀態值的排列順序是依據所對應的虛擬區塊串的排列順序。換言之,依據一個狀態值於狀態欄的排列順序就可以知道此狀態值所對應的虛擬區塊串。例如,排列在第N個的狀態值會對應虛擬區塊串VBS(N)。此外,上述第一虛擬區塊串位圖BMP1亦可整合至第一虛擬區塊串重新映射表RMPT1。
所述第一虛擬區塊串重新映射表RMPT1包括對應所述4個平面的4個平面欄位PF1~PF4(N等於4)。每個平面欄位依據第一順序記錄所對應虛擬區塊串的實體區塊的映射資訊。例如,分別被記錄至平面欄位PF1~PF4中排列在第1個的映射資訊為排列在第1個的虛擬區塊串VBS(1)的屬於平面P1~P4的實體區塊的映射資訊。
在本實施例中,映射表管理電路2152會將被辨識為正常的實體區塊(非不可用的實體區塊、非壞實體區塊)的映射資訊設定為第一類映射值(如,“0”)(例如,在執行完壞實體區塊掃描操作後,映射表管理電路2152會先將非壞實體區塊的實體區塊的映射資訊設定為“0”)。
此外,在執行完壞實體區塊重新映射操作後,映射表管理電路2152會將該壞實體區塊重新映射操作中的已犧牲實體區塊
的映射資訊設定為第三類映射值(如,“-1”),將經由該已犧牲實體區塊所修復正常的實體區塊,即,對應的已修復區塊的映射資訊設定為第二類映射值,並且該第二類映射值是記錄為該已犧牲實體區塊於同一個平面中的排列順序(或真實的實體位址)。
舉例來說,請同時參照圖5與圖6A,平面P1中的對應實體區塊串BS(1)的壞實體區塊P1(1)被實體區塊P1(6)(平面P1中排列在第6個的實體區塊)所修復,基此,於第一虛擬區塊串重新映射表RMPT1的平面欄位PF1中對應虛擬區塊串VBS(1)的實體區塊的映射資訊會被設定為“6”,此“6”用以表示實體區塊P1(1)被實體區塊P1(6)所修復。此外,於第一虛擬區塊串重新映射表RMPT1的平面欄位PF1中對應犧牲實體區塊P1(6)的映射資訊會被記錄為“-1”。換言之,經由上述的映射資訊,處理器211或映射表管理電路2152可知道:當資料存取指令欲對實體區塊P1(1)執行資料存取時,不能直接至實體區塊P1(1)的實體位址去執行資料存取,而要去實體區塊P1(6)的實體位址去執行資料存取;當資料寫入操作欲找尋可用的實體區塊時,實體區塊P1(6)會被視為不可用的。
在本實施例中,映射表管理電路2152會將壞實體區塊(例如,沒有執行壞實體區塊重新映射操作的壞實體區塊)的映射資訊設定為第四類映射值(如,“-2”或其他預定的負值)。也就是說,經由第二類映射值與第四類映射值,處理器211或映射表管理電路2152可根據第二類映射值與第四類映射值所記錄的數值或位置
來辨識到所有壞實體區塊的真實的實體位址(不論有被修復或沒有被修復的壞實體區塊)。
圖6B為根據本發明的另一實施例所繪示的虛擬區塊串管理表(第二虛擬區塊串位圖與第二虛擬區塊串重新映射表)的示意圖。圖6B繪示了第二類型的虛擬區塊串管理表,其與第一類型的虛擬區塊串管理表不同的地方在於索引欄的存在以及第二類型的第二虛擬區塊串重新映射表的大小會因為而小於第一類型的第一虛擬區塊串重新映射表的大小。請參照圖6B,接續了圖5的例子,為第二類型的虛擬區塊串管理表包括第二虛擬區塊串位圖BMP2與第二虛擬區塊串重新映射表RMPT2。第二虛擬區塊串位圖BMP2包括狀態欄SF與索引欄IF。相似於圖6A的例子,狀態欄SF依據第一順序,記錄了分別對應虛擬區塊串VBS(1)~VBS(6)的6個狀態值(M等於6)。
索引欄IF依據第一順序記錄了6個索引值(M等於6),並且,如上述,每個索引值類型會依據狀態值的類型而被決定。例如,虛擬區塊串VBS(2)的索引值對應為“0”的狀態值(即,第一類狀態值),因此,虛擬區塊串VBS(1)的索引值會被決定為第一類索引值(對應第一類狀態值的索引值會被決定為第一類索引值)。在本實施例中,第一類索引值的數值是一個預定的固定位元值,如,“0”或其他適當的位元值。即,只要一個索引值被決定為第一類索引值,不論此索引值的排序,此索引值的數值會被設定為所述預定的固定位元值。在本實施例中,當處理器211或區塊
串管理電路單元215辨識到為第一類索引值(或第一類狀態值)的虛擬區塊串時,處理器211或區塊串管理電路單元215可知道該虛擬區塊串的所有實體區塊皆為正常的實體區塊(即,不為壞實體區塊、已修復實體區塊或犧牲實體區塊)。
應注意的是,在本實施例中,所有第二類索引值的數值會依據第一順序,從前面開始索引。例如,由於虛擬區塊串VBS(1)、VBS(3)、VBS(4)、VBS(5)、VBS(6)的索引值所對應的狀態值屬於第二類狀態值、第三類狀態值或第四類狀態值,因此,虛擬區塊串VBS(1)、VBS(3)、VBS(4)、VBS(5)、VBS(6)的索引值被決定為第二類索引值。接著,依據第一順序,排序在第1個的第二類索引值會被決定為“1”,排列在第P個的第二類索引值會被決定為“P”。如,圖6B的例子,P為5,即,虛擬區塊串VBS(5)的索引值為所有第二類索引值中依據第一順序排序在第5個的索引值,並且被設定為“5”。
所述第二虛擬區塊串重新映射表RMPT2包括索引欄IF與對應所述4個平面的4個平面欄位PF1~PF4,其中所述索引欄IF依據第一順序記錄所述第二虛擬區塊串位圖BMP2的所有第二類索引值。也就是說,處理器211或區塊串管理電路單元215可經由第二虛擬區塊串位圖BMP2的索引欄IF的一特定的第二類索引值來至第二虛擬區塊串重新映射表RMPT2的索引欄IF來辨識相同的索引值,以藉由此相同的索引值來查找於第二虛擬區塊串重新映射表RMPT2中對應的虛擬區塊串的多個映射資訊。舉例來
說,假設處理器211或區塊串管理電路單元215欲查找虛擬區塊串VBS(5)的所有實體區塊的映射資訊。處理器211或區塊串管理電路單元215會經由第二虛擬區塊串位圖BMP2辨識到虛擬區塊串VBS(5)的索引值的數值為“4”,處理器211或區塊串管理電路單元215會至第二虛擬區塊串重新映射表RMPT2的索引欄IF來辨識相同的索引值“4”,並且辨識到於平面欄位PF1~PF4各自所記錄的4個映射資訊“-1”、“0”、“-1”、“-2”。
所述第二虛擬區塊串重新映射表RMPT2的所有映射資訊的種類包括已說明於上的第一虛擬區塊串重新映射表RMPT1的第一類映射值、第二類映射值、第三類映射值、第四類映射值,不再贅述於此。
應注意的是,對應第一類索引值的虛擬區塊串的實體區塊的映射資訊並不會被記錄至第二虛擬區塊串重新映射表RMPT2。由於對應第一類索引值的虛擬區塊串的所有實體區塊皆為正常的實體區塊,因此,這些實體區塊的實體位址皆為原本所指派的真實的實體位址(未被重新映射)。為了節省空間,不會再記錄這些實體區塊的映射資訊,即,第二類型的虛擬區塊串管理表的處理器211或區塊串管理電路單元215可經由對應第一類索引值的虛擬區塊串的排列順序來辨識出對應第一類索引值的該虛擬區塊串的實體區塊在一個平面中的排列順序(即,實體位址)。
在本實施例中,處理器211可快速地利用第一虛擬區塊串位圖來判斷每個虛擬區塊串是否可被應用多平面寫入模式來寫
入資料。具體來說,對應第一類狀態值與第二類狀態值的虛擬區塊串會被判定為可被應用多平面寫入模式來寫入資料(如,範圍601所示);對應第三類狀態值與第四類狀態值的虛擬區塊串會被判定為不可被應用多平面寫入模式來寫入資料(如,範圍602所示)。應注意的是,對應第三類狀態值的虛擬區塊串會被應用單平面寫入操作來寫入資料至所述對應第三類狀態值的虛擬區塊串中的可用的實體區塊。
值得一提的是,經由上述的壞實體區塊重新映射操作後所獲得的多個虛擬區塊串中,可被應用多平面寫入模式的虛擬區塊串會集中在前方,即,不可被應用多平面寫入模式的虛擬區塊串會被排序在所有虛擬區塊串的後方。如此一來,對於循序資料寫入,或大資料的寫入,相較於傳統上因為壞實體區塊而導致可被應用多平面寫入的虛擬區塊串的數量較少且分佈較不均勻,經由本實施例,可被應用多平面寫入的虛擬區塊串的數量會較多,並且會被集中在前方,進而導致了較佳的資料寫入效率與較好的資料完整性。
應注意的是,上述虛擬區塊串管理表會在儲存裝置20開電後,被維護於緩衝記憶體216中。並且在特定時機被備份至可複寫式非揮發性記憶體模組220。被維護於緩衝記憶體216中的虛擬區塊串管理表可因為新辨識的壞實體區塊而即時地在執行完對應的壞實體區塊重新映射操作後而被更新。
在本實施例中,上述虛擬區塊串管理表的更新不會影響
邏輯轉實體位址映射表的更新。具體來說,在本實施例中,在執行寫入操作以寫入一筆資料至一或多個邏輯區塊時,處理器211可根據虛擬區塊串管理表查找用以儲存所述資料的一或多個實體區塊,並且記錄所述一或多個實體區塊的實體位址至邏輯轉實體位址映射表,以使所述一或多個實體區塊的所述實體位址映射至所述一或多個邏輯區塊。換言之,在本實施例中,所述邏輯轉實體位址映射表仍舊是記錄邏輯位址與實體位址之間的映射關係,所述邏輯轉實體位址映射表並不需要記錄對應任何虛擬區塊串的資訊或位址(如,虛擬位址)。
舉例來說,請參照圖6A,假設處理器211執行寫入操作以寫入資料至4個邏輯區塊,並且處理器211根據虛擬區塊串管理表選擇了虛擬區塊串VBS(3)來寫入所述資料。處理器211可藉由虛擬區塊串管理表得知所述資料實際上是被寫入至實體區塊P1(5)、P2(5)、P3(6)、P4(6)。接著,處理器211寫入所述資料至實體區塊P1(5)、P2(5)、P3(6)、P4(6),並且在邏輯轉實體位址映射表中記錄所述實體區塊P1(5)、P2(5)、P3(6)、P4(6)的實體位址是映射至4個邏輯區塊的邏輯位址。也就是說,在本實施例中,存取邏輯轉實體位址映射表的方式並不會因為虛擬區塊串管理表的存在而改變,邏輯轉實體位址映射表也不需要記錄關於虛擬區塊串管理表的資訊。
值得一提的是,處理器211或區塊串管理電路單元215更會記錄每個虛擬區塊串的有效計數值(Valid Count)。例如,每
當新的寫入資料會更新一個虛擬區塊串的實體區塊所儲存資料時,處理器211或區塊串管理電路單元215會將此一個虛擬區塊串的有效計數值減一,以反映此虛擬區塊串所儲存的有效資料的數量降低的事實。舉例來說,假設處理器211欲寫入一筆寫入資料至一邏輯區塊,此邏輯區塊原本已儲存舊資料並且被映射至實體區塊P1(6)(即,平面P1的第6個實體區塊)。處理器211會將寫入資料寫入至另一個閒置的實體區塊,並且將實體區塊P1(6)的資料視為無效資料(即,實體區塊P1(6)的資料被更新了),並且根據虛擬區塊串管理表查找到實體區塊P1(6)對應虛擬區塊串VBS(1)(因為在平面欄位PF1中記錄有“6”的為排列在第1個的映射資訊,其對應虛擬區塊串VBS(1))。據此,處理器211將虛擬區塊串VBS(1)的有效計數值減一。
當一個虛擬區塊串的有效計數值低於一門檻值,處理器211可根據虛擬區塊串管理表中的映射資訊來對此虛擬區塊串的實體單元執行垃圾回收操作(如,對於標記為第二類映射值的實體區塊所執行的垃圾回收操作實際上會到對應的犧牲實體單元的實體位址上來執行)。
應注意的是,上述的狀態值、索引值與映射值皆為示例性的,本領域人員當可經由上述啟示來進行修改,以採用其他數值來記錄不同種類的狀態值、索引值與映射值。
在一實施例中,屬於第三類映射值的映射資訊可被記錄為對應的已修復實體區塊的排列順序的負值。例如,假設對應壞
實體區塊P1(2)被實體區塊P1(5)所修復,實體區塊P1(5)為犧牲實體區塊,並且其映射資訊會被記錄為“-2”,以表示犧牲實體區塊P1(5)所對應的為排列在平面P1中第2個的實體區塊,並且對應虛擬區塊串VBS(2)。應注意的是,在此實施例中,屬於第四類映射值的映射資訊可被記錄為另一特定值。
綜上所述,本發明實施例所提供的記憶體管理方法與儲存控制器,可掃描且辨識壞實體區塊,對所辨識的壞實體區塊執行壞實體區塊重新映射操作以更新虛擬區塊串管理表,並且根據所述虛擬區塊串管理表來經由多平面寫入模式執行寫入操作,以產生較多的可被應用多平面寫入模式的多個虛擬區塊串,進而增加了儲存裝置的資料存取效率與空間。
雖然本發明已以實施例揭露如上,然其並非用以限定本發明,任何所屬技術領域中具有通常知識者,在不脫離本發明的精神和範圍內,當可作些許的更動與潤飾,故本發明的保護範圍當視後附的申請專利範圍所界定者為準。
Claims (16)
- 一種記憶體管理方法,適用於配置有一可複寫式非揮發性記憶體模組的一儲存裝置,其中該可複寫式非揮發性記憶體模組具有多個實體區塊,其中該些實體區塊被劃分至N個平面,並且所述N個平面的每一個平面具有依據一第一順序排列的對應M個區塊串(Block Stripe)的M個實體區塊,其中N與M為正整數,所述方法包括: 掃描該些實體區塊,以辨識該些實體區塊中的一或多個壞實體區塊; 對所述一或多個壞實體區塊執行壞實體區塊重新映射操作,以更新一虛擬區塊串管理表;以及 根據該虛擬區塊串管理表以一多平面寫入模式來執行寫入操作, 其中所述壞實體區塊重新映射操作包括: 若在所述N個平面中的第i個平面中的第j個實體區塊被辨識為壞實體區塊,判斷在所述第i個平面中是否存在排序在所述第j個實體區塊後的一或多個閒置實體區塊,其中i為小於或等於N的正整數,並且j為小於或等於M的正整數; 其中若判定在所述第i個平面中存在排序在所述第j個實體區塊後的所述一或多個閒置實體區塊,依據該第一順序選擇在所述一或多個閒置實體區塊中的最後一個閒置實體區塊作為用以修復所述第j個實體區塊的犧牲實體區塊,並且根據該犧牲實體區塊的實體位址來更新該虛擬區塊串管理表所記錄的對應所述第j個實體區塊的映射資訊,以完成對應所述第j個實體區塊的所述壞實體區塊重新映射操作,其中對應所述第j個實體區塊的該映射資訊用以表示所述第j個實體區塊的實體位址被該犧牲實體區塊的實體位址所取代。
- 如申請專利範圍第1項所述的記憶體管理方法, 其中若該虛擬區塊串管理表屬於第一類型,該虛擬區塊串管理表包括一第一虛擬區塊串位圖(bitmap)與一第一虛擬區塊串重新映射表(remapping table), 其中該第一虛擬區塊串位圖的一狀態欄記錄依據該第一順序排列的分別對應所述M個虛擬區塊串的M個狀態值, 其中每一所述狀態值包括: 一第一類狀態值,用以表示對應該第一類狀態值的虛擬區塊串中的所有實體區塊皆為正常的,其中該第一類狀態值更用以表示對應該第一類狀態值的該虛擬區塊串不具有任何壞實體區塊; 一第二類狀態值,用以表示對應該第二類狀態值的該虛擬區塊串具有經由執行壞區塊重新映射操作而修復的一或多個壞實體區塊; 一第三類狀態值,用以表示對應該第三類狀態值的虛擬區塊串中的一或多個實體區塊為不可用的;或 一第四類狀態值,用以表示對應該第四類狀態值的虛擬區塊串中的所有實體區塊皆為不可用的, 其中該第一虛擬區塊串重新映射表包括對應所述N個平面的N個平面欄位,其中所述N個平面欄位的每一個平面欄位依據該第一順序記錄對應的平面的M個實體區塊的映射資訊, 其中每一所述映射資訊包括: 一第一類映射值,用以表示對應該第一類映射值的實體區塊不為所述壞實體區塊,並且對應該第一類映射值的該實體區塊的實體位址為原有的實體位址; 一第二類映射值,用以表示對應該第二類映射值的實體區塊為已被執行所述壞實體區塊重新映射操作的壞實體區塊,其中該第二類映射值更用以表示用以修復對應該第二類映射值的該實體區塊的犧牲實體區塊的實體位址; 一第三類映射值,用以表示對應該第三類映射值的實體區塊為犧牲實體區塊並且為不可用的;或 一第四類映射值,用以表示對應該第四類映射值的實體區塊為沒有執行所述壞實體區塊重新映射操作的壞實體區塊。
- 如申請專利範圍第1項所述的記憶體管理方法, 其中若該虛擬區塊串管理表屬於第二類型,該虛擬區塊串管理表包括一第二虛擬區塊串位圖(bitmap)與一第二虛擬區塊串重新映射表(remapping table), 其中該第二虛擬區塊串位圖包括一狀態欄與一索引欄,其中該狀態欄記錄依據該第一順序排列的分別對應所述M個虛擬區塊串的M個狀態值,其中該索引欄記錄依據該第一順序排列的分別對應所述M個虛擬區塊串的M個索引值, 其中每一所述狀態值包括: 一第一類狀態值,用以表示對應該第一類狀態值的虛擬區塊串中的所有實體區塊皆為正常的,其中該第一類狀態值更用以表示對應該第一類狀態值的該虛擬區塊串不具有任何壞實體區塊; 一第二類狀態值,用以表示對應該第二類狀態值的該虛擬區塊串具有經由執行壞區塊重新映射操作而修復的一或多個壞實體區塊; 一第三類狀態值,用以表示對應該第三類狀態值的虛擬區塊串中的一或多個實體區塊為不可用的;或 一第四類狀態值,用以表示對應該第四類狀態值的虛擬區塊串中的所有實體區塊皆為不可用的, 其中在所述M個索引值中,對應該第一類狀態值的索引值為第一類索引值,並且對應該第二類狀態值、該第三類狀態值與該第四類狀態值的索引值為第二類索引值,其中該第二類索引值包括不大於M的正整數, 其中該第二虛擬區塊串重新映射表包括一索引欄與對應所述N個平面的N個平面欄位,其中該索引欄記錄該第二虛擬區塊串位圖的所述M個索引值中屬於該第二類索引值的P個索引值,其中P小於或等於M, 其中所述N個平面欄位的每一個平面欄位依據所述P個索引值記錄對應所述P個索引值的P個虛擬區塊串的P個實體區塊的映射資訊, 其中每一所述映射資訊包括: 一第一類映射值,用以表示對應該第一類映射值的實體區塊不為所述壞實體區塊,並且對應該第一類映射值的該實體區塊的實體位址為原有的實體位址; 一第二類映射值,用以表示對應該第二類映射值的實體區塊為已被執行所述壞實體區塊重新映射操作的壞實體區塊,其中該第二類映射值更用以表示用以修復對應該第二類映射值的該實體區塊的犧牲實體區塊的實體位址; 一第三類映射值,用以表示對應該第三類映射值的實體區塊為犧牲實體區塊並且為不可用的;以及 一第四類映射值,用以表示對應該第四類映射值的實體區塊為沒有執行所述壞實體區塊重新映射操作的壞實體區塊,其中該第二虛擬區塊串重新映射表的所述N個平面欄位共記錄N乘以P個映射資訊。
- 如申請專利範圍第1項所述的記憶體管理方法,更包括: 若判定在所述第i個平面中不存在排序在所述第j個實體區塊後的可用的一或多個實體區塊,不修復所述第j個實體區塊,在該虛擬區塊串管理表中記錄對應所述第j個實體區塊的映射資訊,並且結束對應所述第j個實體區塊的所述壞實體區塊重新映射操作,其中對應所述第j個實體區塊的該映射資訊用以表示所述第j個實體區塊為沒有被修復的壞實體區塊。
- 如申請專利範圍第1項所述的記憶體管理方法,更包括: 在辨識到所述一或多個壞實體區塊後,不建立一壞實體區塊表,其中所述一或多個壞實體區塊的實體位址經由該虛擬區塊串管理表來被辨識。
- 如申請專利範圍第1項所述的記憶體管理方法,其中上述根據該虛擬區塊串管理表以該多平面寫入模式來執行該寫入操作的步驟包括: 辨識對應該寫入操作的寫入資料; 根據該虛擬區塊串管理表來辨識一或多個第一虛擬區塊串,其中所述一或多個第一虛擬區塊串皆不具有任何不可用的實體區塊;以及 從所述一或多個第一虛擬區塊串中選擇一空白的目標虛擬區塊串,並且將該寫入資料中的目標寫入資料同時寫入至該目標虛擬區塊串的分別對應所述N個平面的N個目標實體區塊中,其中該目標寫入資料的大小是小於或等於N個實體區塊的總容量。
- 如申請專利範圍第6項所述的記憶體管理方法,其中上述將該寫入資料中的該目標寫入資料同時寫入至該目標虛擬區塊串的分別對應所述N個平面的所述N個目標實體區塊中的步驟包括: 根據該目標虛擬區塊串,從該虛擬區塊串管理表中辨識對應所述N個實體區塊的N個映射資訊;以及 根據所述N個映射資訊辨識分別屬於所述N個平面的N個實體位址,以同時寫入該目標寫入資料於所述N個實體位址中。
- 如申請專利範圍第1項所述的記憶體管理方法,其中該寫入更包括: 若對應該寫入操作的邏輯位址已儲存有舊資料,在執行完該寫入操作後,根據該虛擬區塊串管理表來辨識對應該舊資料的一舊虛擬區塊串;以及 更新該舊虛擬區塊串的一有效資料數。
- 一種儲存控制器,用於控制配置有一可複寫式非揮發性記憶體模組的一儲存裝置,該儲存控制器包括: 一連接介面電路,用以耦接至一主機系統; 一記憶體介面控制電路,用以耦接至該可複寫式非揮發性記憶體模組,其中該可複寫式非揮發性記憶體模組具有多個實體區塊,其中該些實體區塊被劃分至N個平面,並且所述N個平面的每一個平面具有依據一第一順序排列的對應M個區塊串(Block Stripe)的M個實體區塊,其中N與M為正整數; 一區塊串管理電路單元;以及 一處理器,耦接至該連接介面電路、該記憶體介面控制電路及該區塊串管理電路單元, 其中該區塊串管理電路單元用以掃描該些實體區塊,以辨識該些實體區塊中的一或多個壞實體區塊, 其中該區塊串管理電路單元更用以對所述一或多個壞實體區塊執行壞實體區塊重新映射操作,以更新一虛擬區塊串管理表, 其中該處理器用以根據該虛擬區塊串管理表以指示該記憶體介面控制電路以一多平面寫入模式來執行寫入操作, 其中所述壞實體區塊重新映射操作包括: 若在所述N個平面中的第i個平面中的第j個實體區塊被辨識為壞實體區塊,該區塊串管理電路單元判斷在所述第i個平面中是否存在排序在所述第j個實體區塊後的一或多個閒置實體區塊,其中i為小於或等於N的正整數,並且j為小於或等於M的正整數; 其中若判定在所述第i個平面中存在排序在所述第j個實體區塊後的所述一或多個閒置實體區塊,該區塊串管理電路單元依據該第一順序選擇在所述一或多個閒置實體區塊中的最後一個閒置實體區塊作為用以修復所述第j個實體區塊的犧牲實體區塊,並且根據該犧牲實體區塊的實體位址來更新該虛擬區塊串管理表所記錄的對應所述第j個實體區塊的映射資訊,以完成對應所述第j個實體區塊的所述壞實體區塊重新映射操作,其中對應所述第j個實體區塊的該映射資訊用以表示所述第j個實體區塊的實體位址被該犧牲實體區塊的實體位址所取代。
- 如申請專利範圍第9項所述的儲存控制器, 其中若該虛擬區塊串管理表屬於第一類型,該虛擬區塊串管理表包括一第一虛擬區塊串位圖(bitmap)與一第一虛擬區塊串重新映射表(remapping table), 其中該第一虛擬區塊串位圖的一狀態欄記錄依據該第一順序排列的分別對應所述M個虛擬區塊串的M個狀態值, 其中每一所述狀態值包括: 一第一類狀態值,用以表示對應該第一類狀態值的虛擬區塊串中的所有實體區塊皆為正常的,其中該第一類狀態值更用以表示對應該第一類狀態值的該虛擬區塊串不具有任何壞實體區塊; 一第二類狀態值,用以表示對應該第二類狀態值的該虛擬區塊串具有經由執行壞區塊重新映射操作而修復的一或多個壞實體區塊; 一第三類狀態值,用以表示對應該第三類狀態值的虛擬區塊串中的一或多個實體區塊為不可用的;或 一第四類狀態值,用以表示對應該第四類狀態值的虛擬區塊串中的所有實體區塊皆為不可用的, 其中該第一虛擬區塊串重新映射表包括對應所述N個平面的N個平面欄位,其中所述N個平面欄位的每一個平面欄位依據該第一順序記錄對應的平面的M個實體區塊的映射資訊, 其中每一所述映射資訊包括: 一第一類映射值,用以表示對應該第一類映射值的實體區塊不為所述壞實體區塊,並且對應該第一類映射值的該實體區塊的實體位址為原有的實體位址; 一第二類映射值,用以表示對應該第二類映射值的實體區塊為已被執行所述壞實體區塊重新映射操作的壞實體區塊,其中該第二類映射值更用以表示用以修復對應該第二類映射值的該實體區塊的犧牲實體區塊的實體位址; 一第三類映射值,用以表示對應該第三類映射值的實體區塊為犧牲實體區塊並且為不可用的;或 一第四類映射值,用以表示對應該第四類映射值的實體區塊為沒有執行所述壞實體區塊重新映射操作的壞實體區塊。
- 如申請專利範圍第9項所述的儲存控制器, 其中若該虛擬區塊串管理表屬於第二類型,該虛擬區塊串管理表包括一第二虛擬區塊串位圖(bitmap)與一第二虛擬區塊串重新映射表(remapping table), 其中該第二虛擬區塊串位圖包括一狀態欄與一索引欄,其中該狀態欄記錄依據該第一順序排列的分別對應所述M個虛擬區塊串的M個狀態值,其中該索引欄記錄依據該第一順序排列的分別對應所述M個虛擬區塊串的M個索引值, 其中每一所述狀態值包括: 一第一類狀態值,用以表示對應該第一類狀態值的虛擬區塊串中的所有實體區塊皆為正常的,其中該第一類狀態值更用以表示對應該第一類狀態值的該虛擬區塊串不具有任何壞實體區塊; 一第二類狀態值,用以表示對應該第二類狀態值的該虛擬區塊串具有經由執行壞區塊重新映射操作而修復的一或多個壞實體區塊; 一第三類狀態值,用以表示對應該第三類狀態值的虛擬區塊串中的一或多個實體區塊為不可用的;或 一第四類狀態值,用以表示對應該第四類狀態值的虛擬區塊串中的所有實體區塊皆為不可用的, 其中在所述M個索引值中,對應該第一類狀態值的索引值為第一類索引值,並且對應該第二類狀態值、該第三類狀態值與該第四類狀態值的索引值為第二類索引值,其中該第二類索引值包括不大於M的正整數, 其中該第二虛擬區塊串重新映射表包括一索引欄與對應所述N個平面的N個平面欄位,其中該索引欄記錄該第二虛擬區塊串位圖的所述M個索引值中屬於該第二類索引值的P個索引值,其中P小於或等於M, 其中所述N個平面欄位的每一個平面欄位依據所述P個索引值記錄對應所述P個索引值的P個虛擬區塊串的P個實體區塊的映射資訊, 其中每一所述映射資訊包括: 一第一類映射值,用以表示對應該第一類映射值的實體區塊不為所述壞實體區塊,並且對應該第一類映射值的該實體區塊的實體位址為原有的實體位址; 一第二類映射值,用以表示對應該第二類映射值的實體區塊為已被執行所述壞實體區塊重新映射操作的壞實體區塊,其中該第二類映射值更用以表示用以修復對應該第二類映射值的該實體區塊的犧牲實體區塊的實體位址; 一第三類映射值,用以表示對應該第三類映射值的實體區塊為犧牲實體區塊並且為不可用的;以及 一第四類映射值,用以表示對應該第四類映射值的實體區塊為沒有執行所述壞實體區塊重新映射操作的壞實體區塊,其中該第二虛擬區塊串重新映射表的所述N個平面欄位共記錄N乘以P個映射資訊。
- 如申請專利範圍第9項所述的儲存控制器, 其中若判定在所述第i個平面中不存在排序在所述第j個實體區塊後的可用的一或多個實體區塊,該區塊串管理電路單元不修復所述第j個實體區塊,在該虛擬區塊串管理表中記錄對應所述第j個實體區塊的映射資訊,並且結束對應所述第j個實體區塊的所述壞實體區塊重新映射操作,其中對應所述第j個實體區塊的該映射資訊用以表示所述第j個實體區塊為沒有被修復的壞實體區塊。
- 如申請專利範圍第9項所述的儲存控制器, 其中在辨識所述一或多個壞實體區塊後,該處理器不建立一壞實體區塊表,其中該處理器根據該虛擬區塊串管理表來辨識所述一或多個壞實體區塊的實體位址。
- 如申請專利範圍第9項所述的儲存控制器,其中在上述該處理器用以根據該虛擬區塊串管理表以指示該記憶體介面控制電路以該多平面寫入模式來執行該寫入操作的運作中, 該處理器辨識對應該寫入操作的寫入資料, 其中該處理器根據該虛擬區塊串管理表來辨識一或多個第一虛擬區塊串,其中所述一或多個第一虛擬區塊串皆不具有任何不可用的實體區塊, 其中該處理器從所述一或多個第一虛擬區塊串中選擇一空白的目標虛擬區塊串,並且指示該記憶體介面控制電路將該寫入資料中的目標寫入資料同時寫入至該目標虛擬區塊串的分別對應所述N個平面的N個目標實體區塊中,其中該目標寫入資料的大小是小於或等於N個實體區塊的總容量。
- 如申請專利範圍第14項所述的儲存控制器,其中在上述指示該記憶體介面控制電路將該寫入資料中的該目標寫入資料同時寫入至該目標虛擬區塊串的分別對應所述N個平面的所述N個目標實體區塊中的運作中, 該處理器根據該目標虛擬區塊串,從該虛擬區塊串管理表中辨識對應所述N個實體區塊的N個映射資訊, 其中該處理器根據所述N個映射資訊辨識分別屬於所述N個平面的N個實體位址,以指示該記憶體介面控制電路同時寫入該目標寫入資料於所述N個實體位址中。
- 如申請專利範圍第9項所述的儲存控制器, 若對應該寫入操作的邏輯位址已儲存有舊資料,在執行完該寫入操作後,該處理器根據該虛擬區塊串管理表來辨識對應該舊資料的一舊虛擬區塊串, 其中該處理器更新該舊虛擬區塊串的一有效資料數。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW107114631A TWI661299B (zh) | 2018-04-30 | 2018-04-30 | 記憶體管理方法以及儲存控制器 |
US16/059,039 US11288019B2 (en) | 2018-04-30 | 2018-08-09 | Memory management method and storage controller |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW107114631A TWI661299B (zh) | 2018-04-30 | 2018-04-30 | 記憶體管理方法以及儲存控制器 |
Publications (2)
Publication Number | Publication Date |
---|---|
TWI661299B true TWI661299B (zh) | 2019-06-01 |
TW201945936A TW201945936A (zh) | 2019-12-01 |
Family
ID=67764325
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW107114631A TWI661299B (zh) | 2018-04-30 | 2018-04-30 | 記憶體管理方法以及儲存控制器 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11288019B2 (zh) |
TW (1) | TWI661299B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI770945B (zh) * | 2021-04-12 | 2022-07-11 | 大陸商合肥兆芯電子有限公司 | 記憶體管理方法、記憶體控制電路單元與記憶體儲存裝置 |
TWI804236B (zh) * | 2022-03-16 | 2023-06-01 | 群聯電子股份有限公司 | 記憶體管理方法、記憶體儲存裝置及記憶體控制電路單元 |
CN117632040A (zh) * | 2024-01-25 | 2024-03-01 | 合肥兆芯电子有限公司 | 数据写入方法、存储器存储装置以及存储器控制电路单元 |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI670599B (zh) * | 2018-08-28 | 2019-09-01 | 大陸商深圳大心電子科技有限公司 | 記憶體管理方法以及儲存控制器 |
KR20200119164A (ko) * | 2019-04-09 | 2020-10-19 | 한국전자통신연구원 | 정보 처리 장치 및 그것에 포함된 신경망 연산 장치의 동작 방법 |
US11061910B1 (en) * | 2020-01-31 | 2021-07-13 | Ocient Holdings LLC | Servicing concurrent queries via virtual segment recovery |
CN113299333A (zh) | 2020-02-21 | 2021-08-24 | 硅存储技术股份有限公司 | 由闪存单元构成的eeprom仿真器中的损耗均衡 |
US11605439B2 (en) * | 2021-03-31 | 2023-03-14 | Micron Technology, Inc. | Remapping bad blocks in a memory sub-system |
CN114385084B (zh) * | 2022-01-13 | 2023-09-19 | 合肥沛睿微电子股份有限公司 | 坏块表继承方法及其存储装置 |
US11977758B2 (en) * | 2022-08-12 | 2024-05-07 | Micron Technology, Inc. | Assigning blocks of memory systems |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8312245B2 (en) * | 2009-03-04 | 2012-11-13 | Micron Technology, Inc. | Memory block management |
CN102902626A (zh) * | 2011-07-27 | 2013-01-30 | 群联电子股份有限公司 | 区块管理方法、存储器控制器与存储器储存装置 |
US20130275655A1 (en) * | 2012-04-17 | 2013-10-17 | Phison Electronics Corp. | Memory management method and memory controller and memory storage device using the same |
CN103377143A (zh) * | 2012-04-27 | 2013-10-30 | 群联电子股份有限公司 | 存储器管理方法、存储器控制器与存储器存储装置 |
TWI476590B (zh) * | 2012-05-31 | 2015-03-11 | Phison Electronics Corp | 記憶體管理方法、記憶體控制器與記憶體儲存裝置 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100644602B1 (ko) * | 2000-10-11 | 2006-11-10 | 삼성전자주식회사 | 플래시메모리를 위한 재사상 제어방법 및 그에 따른플래시 메모리의 구조 |
TWI225596B (en) * | 2003-12-15 | 2004-12-21 | Promise Technology Inc | RAID and conversion thereof |
TWI373769B (en) * | 2008-08-15 | 2012-10-01 | Phison Electronics Corp | Block management method for flash memory and storage system and controller using the same |
TWI420308B (zh) * | 2010-10-13 | 2013-12-21 | Phison Electronics Corp | 區塊管理方法、記憶體控制器與記憶體儲存裝置 |
US9443616B2 (en) * | 2014-04-02 | 2016-09-13 | Seagate Technology Llc | Bad memory unit detection in a solid state drive |
US9965201B1 (en) * | 2015-03-31 | 2018-05-08 | EMC IP Holding Company LLC | Coalescing file system free space to promote full-stripe writes |
-
2018
- 2018-04-30 TW TW107114631A patent/TWI661299B/zh active
- 2018-08-09 US US16/059,039 patent/US11288019B2/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8312245B2 (en) * | 2009-03-04 | 2012-11-13 | Micron Technology, Inc. | Memory block management |
CN102902626A (zh) * | 2011-07-27 | 2013-01-30 | 群联电子股份有限公司 | 区块管理方法、存储器控制器与存储器储存装置 |
US20130275655A1 (en) * | 2012-04-17 | 2013-10-17 | Phison Electronics Corp. | Memory management method and memory controller and memory storage device using the same |
TWI463313B (zh) * | 2012-04-17 | 2014-12-01 | Phison Electronics Corp | 記憶體管理方法、記憶體控制器與記憶體儲存裝置 |
CN103377143A (zh) * | 2012-04-27 | 2013-10-30 | 群联电子股份有限公司 | 存储器管理方法、存储器控制器与存储器存储装置 |
TWI476590B (zh) * | 2012-05-31 | 2015-03-11 | Phison Electronics Corp | 記憶體管理方法、記憶體控制器與記憶體儲存裝置 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI770945B (zh) * | 2021-04-12 | 2022-07-11 | 大陸商合肥兆芯電子有限公司 | 記憶體管理方法、記憶體控制電路單元與記憶體儲存裝置 |
US11620072B2 (en) | 2021-04-12 | 2023-04-04 | Hefei Core Storage Electronic Limited | Memory management method, memory control circuit unit and memory storage apparatus |
TWI804236B (zh) * | 2022-03-16 | 2023-06-01 | 群聯電子股份有限公司 | 記憶體管理方法、記憶體儲存裝置及記憶體控制電路單元 |
US11954329B2 (en) | 2022-03-16 | 2024-04-09 | Phison Electronics Corp. | Memory management method, memory storage device and memory control circuit unit |
CN117632040A (zh) * | 2024-01-25 | 2024-03-01 | 合肥兆芯电子有限公司 | 数据写入方法、存储器存储装置以及存储器控制电路单元 |
CN117632040B (zh) * | 2024-01-25 | 2024-04-30 | 合肥兆芯电子有限公司 | 数据写入方法、存储器存储装置以及存储器控制电路单元 |
Also Published As
Publication number | Publication date |
---|---|
US11288019B2 (en) | 2022-03-29 |
TW201945936A (zh) | 2019-12-01 |
US20190332331A1 (en) | 2019-10-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI661299B (zh) | 記憶體管理方法以及儲存控制器 | |
US20180260317A1 (en) | Method for managing the copying and storing of data in garbage collection, memory storage device and memory control circuit unit using the same | |
US9043536B2 (en) | Method of recording mapping information, and memory controller and memory storage apparatus using the same | |
US9268687B2 (en) | Data writing method, memory control circuit unit and memory storage apparatus | |
US9880742B2 (en) | Valid data merging method, memory controller and memory storage apparatus | |
US8694748B2 (en) | Data merging method for non-volatile memory module, and memory controller and memory storage device using the same | |
US9141530B2 (en) | Data writing method, memory controller and memory storage device | |
TWI650757B (zh) | 解碼方法以及儲存控制器 | |
US9122583B2 (en) | Memory controller and memory storage device and data writing method | |
TW201947402A (zh) | 記憶體管理方法以及儲存控制器 | |
US20150161042A1 (en) | Memory management method, memory controlling circuit unit, and memory storage device | |
US9383929B2 (en) | Data storing method and memory controller and memory storage device using the same | |
US20200301851A1 (en) | Memory control method, memory storage device and memory control circuit unit | |
US20130132640A1 (en) | Data writing method, and memory controller and memory storage apparatus using the same | |
CN111258505B (zh) | 快闪存储器的数据合并方法、控制电路单元与存储装置 | |
CN110471612B (zh) | 存储器管理方法以及存储控制器 | |
US9990152B1 (en) | Data writing method and storage controller | |
US10509583B1 (en) | Memory management method and storage controller | |
US20140089566A1 (en) | Data storing method, and memory controller and memory storage apparatus using the same | |
US11144245B2 (en) | Memory control method, memory storage device and memory control circuit unit | |
US10824340B2 (en) | Method for managing association relationship of physical units between storage area and temporary area, memory control circuit unit, and memory storage apparatus | |
TWI605457B (zh) | 資料寫入方法、記憶體控制電路單元與記憶體儲存裝置 | |
US9830077B2 (en) | Data writing method, memory control circuit unit and memory storage apparatus | |
US9665480B2 (en) | Memory management method, memory storage device and memory control circuit unit | |
US9652378B2 (en) | Writing method, memory controller and memory storage device |