TWI814590B - 資料處理方法及對應之資料儲存裝置 - Google Patents
資料處理方法及對應之資料儲存裝置 Download PDFInfo
- Publication number
- TWI814590B TWI814590B TW111136342A TW111136342A TWI814590B TW I814590 B TWI814590 B TW I814590B TW 111136342 A TW111136342 A TW 111136342A TW 111136342 A TW111136342 A TW 111136342A TW I814590 B TWI814590 B TW I814590B
- Authority
- TW
- Taiwan
- Prior art keywords
- sub
- write
- area
- memory
- data
- Prior art date
Links
- 238000013500 data storage Methods 0.000 title claims abstract description 49
- 238000003672 processing method Methods 0.000 title claims description 21
- 230000004044 response Effects 0.000 claims abstract description 28
- 238000013507 mapping Methods 0.000 description 38
- 238000007726 management method Methods 0.000 description 32
- 238000000034 method Methods 0.000 description 16
- 230000008569 process Effects 0.000 description 11
- 238000010586 diagram Methods 0.000 description 4
- 239000000463 material Substances 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000012937 correction Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000005192 partition Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000004913 activation Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000011982 device technology Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000004064 recycling Methods 0.000 description 1
- 239000002356 single layer Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0613—Improving I/O performance in relation to throughput
-
- 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/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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- 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/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0653—Monitoring storage devices or 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/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/0656—Data buffering arrangements
-
- 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/21—Employing a record carrier using a specific recording technology
- G06F2212/214—Solid state disk
-
- 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/31—Providing disk cache in a specific location of a storage system
- G06F2212/311—In host system
-
- 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/46—Caching storage objects of specific type in disk cache
- G06F2212/466—Metadata, control data
-
- 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/7203—Temporary buffering, e.g. using volatile buffer or dedicated buffer 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/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
- G06F3/0649—Lifecycle 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)
- Techniques For Improving Reliability Of Storages (AREA)
- Communication Control (AREA)
- Debugging And Monitoring (AREA)
Abstract
一種資料儲存裝置包括一記憶體裝置與一記憶體控制器。記憶體控制器使用第一既定記憶體區塊作為一緩存器自主機裝置接收資料。響應於自主機裝置接收之寫入指令,記憶體控制器決定寫入指令所對應之子區域,根據子區域所對應之寫入計數值判斷子區域是否為一熱寫入子區域,並且對應地決定是否使用一第二既定記憶體區塊作為另一緩存器以接收資料。當寫入指令所對應之子區域被判斷為一熱寫入子區域時,記憶體控制器將資料寫入第二既定記憶體區塊,以及當寫入指令所對應之子區域被判斷並非為一熱寫入子區域時,將資料寫入第一既定記憶體區塊。
Description
本發明係有關於適用於一資料儲存裝置之一種資料處理方法,可有效率地處理記憶體裝置所儲存之資料,以提升記憶體裝置之效能。
隨著資料儲存裝置的科技在近幾年快速地成長,許多資料儲存裝置,如符合SD/MMC規格、CF規格、MS規格與XD規格的記憶卡、固態硬碟、嵌入式多媒體記憶卡(embedded Multi Media Card,縮寫為eMMC)以及通用快閃記憶體儲存(Universal Flash Storage,縮寫為UFS)已經廣泛地被應用在多種用途上。因此,在這些資料儲存裝置上,有效率的存取控制也變成一個重要的議題。
為了提高資料儲存裝置的存取效能,本發明提出一種新的資料處理方法,可有效率地處理記憶體裝置所儲存之資料,以提升記憶體裝置之存取效能。
根據本發明之一實施例,一種資料儲存裝置包括一記憶體裝置與一記憶體控制器。記憶體裝置包括複數記憶體區塊,記憶體區塊對應於複數邏輯單元,各邏輯單元分別對應於複數邏輯位址,各邏輯單元所對應之邏輯位址被劃分為複數區域,並且各區域進一步被劃分為複數子區域。記憶體控制器耦接
至記憶體裝置,用以存取記憶體裝置,其中記憶體控制器使用一第一既定記憶體區塊作為一緩存器用以自一主機裝置接收資料,並且記憶體控制器為各子區域維護一寫入計數值。響應於自主機裝置接收之用以將一或多個邏輯位址所對應的資料寫入記憶體裝置之一寫入指令,記憶體控制器根據一或多個邏輯位址決定寫入指令所對應之一子區域,根據子區域所對應之寫入計數值判斷子區域是否為一熱寫入子區域,並且對應地決定是否使用一第二既定記憶體區塊作為另一緩存器以接收資料。當寫入指令所對應之子區域被判斷為一熱寫入子區域時,記憶體控制器使用第二既定記憶體區塊作為另一緩存器並且將一或多個邏輯位址所對應的資料寫入第二既定記憶體區塊,以及當寫入指令所對應之子區域被判斷並非為一熱寫入子區域時,記憶體控制器將一或多個邏輯位址所對應的資料寫入第一既定記憶體區塊。
根據本發明之另一實施例,一種資料處理方法,適用於一資料儲存裝置,其中資料儲存裝置包括一記憶體裝置與一記憶體控制器,記憶體裝置包括複數記憶體區塊,記憶體區塊對應於複數邏輯單元,各邏輯單元分別對應於複數邏輯位址,各邏輯單元所對應之邏輯位址被劃分為複數區域,並且各區域進一步被劃分為複數子區域,記憶體控制器耦接至記憶體裝置,用以存取記憶體裝置,記憶體控制器使用一第一既定記憶體區塊作為一緩存器用以自一主機裝置接收資料,資料處理方法由記憶體控制器所執行並包括:為各子區域維護一寫入計數值;響應於自主機裝置接收之用以將一或多個邏輯位址所對應的資料寫入記憶體裝置之一寫入指令,根據一或多個邏輯位址決定寫入指令所對應之一子區域;根據子區域所對應之寫入計數值判斷子區域是否為一熱寫入子區域,並且對應地決定是否使用一第二既定記憶體區塊作為另一緩存器以接收資料;以及當寫入指令所對應之子區域被判斷為一熱寫入子區域時,使用第二既定記憶體區塊作為另一緩存器並且將一或多個邏輯位址所對應的資料寫入第二
既定記憶體區塊,以及當寫入指令所對應之子區域被判斷並非為一熱寫入子區域時,將一或多個邏輯位址所對應的資料寫入第一既定記憶體區塊。
100:資料儲存裝置
110:記憶體控制器
112:微處理器
112C:程式碼
112M:唯讀記憶體
114:記憶體介面
116:緩衝記憶體
118:主機介面
120:記憶體裝置
130:主機裝置
132:編碼器
134:解碼器
200:邏輯單元
A-1、A-2、A-3、A-4、A-5、B-1、B-2、B-3、C-1、C-2、C-3、C-4、C-5、C-6、C-7、D-1、D-2、D-3、D-4、D-5、D-6、D-7:操作
DATA IN UPIU:送入資料之通用快閃記憶體儲存通訊協定資訊單元
HPB_Rgn_0、HPB_Rgn_(N-1):HPB區域
HPB_Sub_Rgn_0、HPB_Sub_Rgn_(L-1):HPB子區域
LBA:邏輯區塊位址
第1圖係顯示根據本發明之一實施例所述之資料儲存裝置的方塊圖範例。
第2圖係顯示邏輯單元與其對應之邏輯區塊位址的一個範例。
第3圖係顯示於主機控制模式下可有的操作。
第4圖係顯示於裝置控制模式下可有的操作。
第5圖係顯示根據本發明之第一實施例所述之資料處理方法流程圖。
第6圖係顯示根據本發明之第二實施例所述之資料處理方法流程圖。
在下文中,描述了許多具體細節以提供對本發明實施例的透徹理解。然而,本領域技術人員仍將理解如何在缺少一個或多個具體細節或依賴於其他方法、元件或材料的情況下實施本發明。在其他情況下,未詳細示出或描述公知的結構、材料或操作,以避免模糊本發明的主要概念。
在整個說明書中對「一實施例」或「一範例」的引用意味著結合該實施例或範例所描述的特定特徵、結構或特性係包括於本發明之多個實施例的至少一個實施例中。因此,貫穿本說明書在各個地方出現的短語「於本發明之一實施例中」、「根據本發明之一實施例」、「於一範例中」或「根據本發明之一範例」不一定都指到相同的實施例或範例。此外,特定特徵、結構或特性可以在一個或多個實施例或範例中以任何合適的組合和/或子組合進行結合。
此外,為讓本發明之目的、特徵和優點能更明顯易懂,下文特舉出
本發明之具體實施例,並配合所附圖式,作詳細說明如下。目的在於說明本發明之精神而非用以限定本發明之保護範圍,應理解下列實施例可經由軟體、硬體、韌體、或上述任意組合來實現。
第1圖係顯示根據本發明之一實施例所述之資料儲存裝置的方塊圖範例。資料儲存裝置100可包括一記憶體裝置120與一記憶體控制器110。記憶體控制器110用以存取(Access)記憶體裝置120及控制記憶體裝置120之運作。記憶體裝置120可為一非揮發性(non-volatile,縮寫為NV)記憶體裝置(例如,一快閃記憶體(flash memory)),並且可包括一或多個記憶元件(例如,一或多個快閃記憶體晶粒、一或多個快閃記憶體晶片、或其他類似元件)。
資料儲存裝置100可耦接至一主機裝置130。主機裝置130可至少包括一處理器、一電源電路、以及至少一隨機存取記憶體(Random Access Memory,縮寫為RAM),例如至少一動態隨機存取記憶體(Dynamic RAM,縮寫為DRAM)、至少一靜態隨機存取記憶體(Static RAM,縮寫為SRAM)等(以上未示於第1圖)。處理器與隨機存取記憶體可透過一匯流排彼此相互連接,並且可耦接至電源電路以取得電源。處理器可控制主機裝置130之運作。電源電路可將電源供應至處理器、隨機存取記憶體以及資料儲存裝置100,例如輸出一或多個驅動電壓至資料儲存裝置100。資料儲存裝置100可自主機裝置130取得所述驅動電壓作為資料儲存裝置100的電源,並且為主機裝置130提供儲存空間。
根據本發明之一實施例,記憶體控制器110可包括一微處理器112、一唯讀記憶體(Read Only Memory,縮寫為ROM)112M、一記憶體介面114、一緩衝記憶體116、與一主機介面118。唯讀記憶體112M係用以儲存程式碼112C。而微處理器112則用來執行程式碼112C以控制對記憶體裝置120之存取。程式碼112C可包括一或多個程式模組,例如啟動載入(boot loader)程式碼。當資料儲存裝置100自主機裝置130取得電源時,微處理器112可藉由執行程式碼112C執行資
料儲存裝置100之一初始化程序。於初始化程序中,微處理器112可自記憶體裝置120載入一組系統內編程(In-System Programming,縮寫為ISP)程式碼(未示於第1圖)。微處理器112可執行該組系統內編程程式碼,使得資料儲存裝置100可具備各種功能。根據本發明之一實施例,該組系統內編程程式碼可包括,但不限於:一或多個與記憶體存取(例如,讀取、寫入與抹除)相關的程式模組,例如一讀取操作模組、一查找表格模組、一損耗均衡(wear leveling)模組、一讀取刷新(read refresh)模組、一讀取回收(read reclaim)模組、一垃圾回收模組、一非預期斷電恢復(Sudden Power Off Recovery,縮寫為SPOR)模組、以及一不可更正錯誤更正碼(Uncorrectable Error Correction Code,縮寫為UECC)模組,其分別被提供用以執行對應之讀取、查找表格、損耗均衡、讀取刷新、讀取回收、垃圾回收、非預期斷電恢復以及對偵測到的UECC錯誤進行錯誤處理等操作。
記憶體介面114包含了一編碼器132以及一解碼器134,其中編碼器132用來對需被寫入記憶體裝置120的資料進行編碼,例如執行錯誤更正碼(ECC)編碼,而解碼器134用來對從記憶體裝置120所讀出的資料進行解碼。
於典型狀況下,記憶體裝置120包含了多個記憶元件,例如多個快閃記憶體晶粒或多個快閃記憶體晶片,各記憶元件可包含複數個記憶體區塊(Block)。記憶體控制器110對記憶體裝置120進行抹除資料運作係以區塊為單位來進行。另外,一記憶體區塊可記錄(包含)特定數量的資料頁(Page),例如,實體資料頁,其中記憶體控制器110對記憶體裝置120進行寫入資料之運作係以資料頁為單位來進行寫入。
實作上,記憶體控制器110可利用其本身內部之元件來進行諸多控制運作,例如:利用記憶體介面114來控制記憶體裝置120之存取運作(尤其是對至少一記憶體區塊或至少一資料頁之存取運作)、利用緩衝記憶體116進行所需之緩衝處理、以及利用主機介面118來與主機裝置130溝通。
在一實施例中,記憶體控制器110透過主機介面118並使用一標準通訊協定與主機裝置130溝通。舉例而言,上述之標準通訊協定包含(但不限於):通用序列匯流排(Universal Serial Bus,縮寫為USB)標準、SD介面標準、超高速一代(Ultra High Speed-I,縮寫為UHS-I)介面標準、超高速二代(Ultra High Speed-II,縮寫為UHS-II)介面標準、CF介面標準、MMC介面標準、eMMC介面標準、UFS介面標準、高技術組態(Advanced Technology Attachment,縮寫為ATA)標準、序列高技術組態(Serial ATA,縮寫為SATA)標準、快捷外設互聯標準(Peripheral Component Interconnect Express,縮寫為PCI-E)標準、並列先進附件(Parallel Advanced Technology Attachment,縮寫為PATA)標準等。
在一實施例中,緩衝記憶體116係以隨機存取記憶體來實施。例如,緩衝記憶體116可以是靜態隨機存取記憶體,但本發明亦不限於此。於其他實施例中,緩衝記憶體116可以是動態隨機存取記憶體。
在一實施例中,資料儲存裝置100可以是可攜式記憶體裝置(例如:符合SD/MMC、CF、MS、XD標準之記憶卡),且主機裝置130為一可與資料儲存裝置連接的電子裝置,例如手機、筆記型電腦、桌上型電腦...等等。而在另一實施例中,資料儲存裝置100可以是固態硬碟或符合UFS或eMMC規格之嵌入式儲存裝置,並且可被設置在一電子裝置中,例如設置在手機、筆記型電腦、桌上型電腦之中,而此時主機裝置130可以是該電子裝置的一處理器。
主機裝置130可對資料儲存裝置100發出指令,例如,讀取指令或寫入指令,用以存取記憶體裝置120所儲存之資料,或者主機裝置130可對資料儲存裝置100發出指令以進一步控制、管理資料儲存裝置100。
根據本發明之一實施例,記憶體裝置120所包含之複數個記憶體區塊可被配置為單層式儲存(Single-Level Cell,縮寫為SLC)記憶體區塊、多層式儲存(Multiple-Level Cell,縮寫為MLC)記憶體區塊、三層式儲存(Triple-Level Cell,
縮寫為TLC)記憶體區塊、以及/或是四層式儲存(Quad-Level Cell,縮寫為QLC)記憶體區塊。SLC記憶體區塊的每個記憶體單元中儲存一個位元資料,MLC記憶體區塊的每個記憶體單元中儲存兩個位元資料,TLC記憶體區塊的每個記憶體單元中儲存三個位元資料,QLC記憶體區塊的每個記憶體單元中儲存四個位元資料,並且其中MLC、TLC與QLC記憶體區塊亦可被統稱為多層式儲存記憶體區塊。
一般而言,記憶體裝置120可大體被區分為三個區域,包含系統區域、資料區域以及備用區域。記憶體控制器110可自備用區域選擇一或多個既定記憶體區塊作為快取記憶體,或稱緩存器(buffer),亦可稱為現用區塊(current block)或活用區塊(active block),用以接收並暫存資料。待緩存器被寫滿時,記憶體控制器110再將作為緩存器之既定記憶體區塊更新成資料區域的資料區塊。舉例而言,若用以接收並暫存資料的緩存器為MLC、TLC或QLC記憶體區塊,待緩存器被寫滿時,可直接被更新為資料區域的資料區塊。若用以接收並暫存資料的緩存器為SLC記憶體區塊,待一定數量之緩存器被寫滿時,可透過垃圾回收(Garbage Collection)程序,將多個緩存器記憶體區塊所儲存之資料搬移至多層式儲存記憶體區塊(目標記憶體區塊),並藉此操作將目標記憶體區塊更新為資料區域的資料區塊。
此外,記憶體裝置120可儲存一全域邏輯至實體(Logical to Physical,縮寫為L2P)(或稱主機至快閃記憶體(Host to Flash,縮寫為H2F))映射表格,供記憶體控制器110存取記憶體裝置120之資料時使用。全域L2P映射表格可位於記憶體裝置120之一既定區域,例如一系統區域,但本發明並不限於此。全域L2P映射表格可被分為複數區域L2P映射表格,區域L2P映射表格可被儲存於相同或不同的記憶元件內。例如,一記憶元件可儲存一個區域L2P映射表格。於需要時,記憶體控制器110可將全域L2P映射表格的至少一部分(例如,一部分或全部)載入
緩衝記憶體116或其他記憶體內。例如,記憶體控制器110可載入一區域L2P映射表格作為一暫時的L2P映射表格,用以根據此區域L2P映射表格存取記憶體裝置120的資料,但本發明並不限於此。
儲存於記憶體裝置120之全域或區域L2P映射表格(以下一併稱為L2P映射表格)可包括複數欄位,L2P映射表格之一欄位用以紀錄一邏輯位址之映射資訊。其中一邏輯位址可對應於一邏輯資料頁。L2P映射表格內所紀錄之一邏輯位址或一邏輯資料頁的映射資訊為記憶體裝置之哪個實體位址儲存有此邏輯位址或邏輯資料頁之資料的邏輯至實體映射資訊。
於一實施例中,主機裝置130及資料儲存裝置100可採用主機性能增強器(Host Performance Booster,縮寫為HPB)系列標準,以利用主機裝置端的一個記憶體裝置(例如,主機裝置130之DRAM)暫存於UFS裝置端(例如,依循UFS規格實施的資料儲存裝置100)所維護的映射資訊。所述映射資訊可自前述之全域或區域L2P映射表格中取得。借助此映射資訊,主機裝置130可發出帶有主機裝置130所欲讀取之邏輯位址(例如,邏輯區塊位址(logical block addresses,縮寫為LBAs)所對應的實體位址之相關資訊(例如,實體區塊位址(physical block addresses,縮寫為PBAs)的特定讀取指令(以下稱為HPB讀取(HPB READ)指令)以讀取資料,其中所述實體位址之相關資訊可被承載於一或多個HPB項目(HPB entry)中。如此一來,記憶體控制器110可節省自記憶體裝置120讀取及載入全域或區域L2P映射表格所花費的時間,以及節省於載入之L2P映射表格中搜尋出主機裝置130所欲讀取之邏輯位址所對應的實體位址所花費的時間。藉此,讀取效能可被改善。
於本發明之實施例中,記憶體裝置120可被邏輯性地劃分為多個分區,各分區可被視為一個邏輯單元,因此,記憶體裝置120的複數記憶體區塊可對應於複數邏輯單元,且各邏輯單元可對應於複數邏輯區塊位址。第2圖係顯示
邏輯單元200與其對應之邏輯區塊位址的一個範例。各邏輯單元所對應的邏輯區塊位址(例如,邏輯區塊位址LBA 0~LBA Z,其中Z為正整數)可被劃分為複數個HPB區域(例如,HPB區域HPB_Rgn_0~HPB_Rgn_(N-1),其中N為大於1之一正整數),並且各HPB區域可進一步被劃分為複數HPB子區域(例如,HPB子區域HPB_Sub_Rgn_0~HPB_Sub_Rgn_(L-1),其中L為一正整數)。一個HPB子區域的大小可小於或等於一個HPB區域的大小。為簡化說明,以下將HPB子區域簡稱為子區域,以及將HPB區域簡稱為區域。
於本發明之實施例中,有兩種取得HPB項目的模式,包括主機控制模式與裝置控制模式。
第3圖為一示意圖,用以顯示於主機控制模式下可有的操作。於主機控制模式下,主機系統(例如,主機裝置130)可確認要被活化(activate)的新的子區域(操作A-1),並發出一HPB讀取緩衝(HPB READ BUFFER)指令(操作A-2),以請求要被活化之子區域所對應的HPB項目。響應於HPB讀取緩衝指令之接收,UFS裝置(例如,記憶體控制器110)可自記憶體裝置120讀取L2P映射表格之至少一部分(例如,讀取全域L2P映射表格或區域L2P映射表格),該部分係對應於選定要被活化之子區域,並且根據L2P映射表格所紀錄之映射資訊提供HPB項目(操作A-3)。UFS裝置接著可透過送入資料(DATA IN)之通用快閃記憶體儲存通訊協定資訊單元(UFS Protocol Information Unit,縮寫為UPIU)封包將HPB項目傳送至主機系統(操作A-4)。主機系統可於系統記憶體內配置一HPB區域(亦可稱為HPB快取區),用以儲存HPB項目(操作A-5)。
主機系統亦可確認要被去活化(deactivate)的區域(操作B-1),並發出一HPB寫入緩衝(HPB WRITE BUFFER)指令,以請求將一區域去活化(操作B-2)。UFS裝置可響應於HPB寫入緩衝指令之接收將對應之區域去活化(操作B-3)。
此外,當UFS裝置判斷需要更新任何子區域所對應之HPB項目時,例如,當UFS裝置修改了一已活化之子區域所對應之L2P映射資訊(操作C-1),UFS裝置可傳送一回應UPIU封包至主機系統,以建議主機系統更新子區域所對應之HPB項目(操作C-2)。響應於回應UPIU封包之接收,主機系統可發出一HPB讀取緩衝指令(操作C-3),並將之傳送給UFS裝置以請求已活化之子區域所對應之更新過的HPB項目(操作C-4)。響應於HPB讀取緩衝指令之接收,UFS裝置可讀取L2P映射表格中之對應於已活化之子區域之部分,並且根據L2P映射表格所紀錄之映射資訊提供HPB項目(操作C-5)。同樣地,UFS裝置接著可透過送入資料之通用快閃記憶體儲存通訊協定資訊單元(DATA IN UPIU)封包將HPB項目傳送至主機系統(操作C-6)。主機系統可根據接收到的資訊更新HPB快取區內所儲存之HPB項目(操作C-7)。
第4圖為一示意圖,用以顯示於裝置控制模式下可有的操作。於裝置控制模式下,UFS裝置可確認要被活化的新的子區域及/或要被去活化之區域(操作D-1),並傳送一回應UPIU封包至主機系統,以建議主機系統活化選定之新的子區域或去活化選定之區域(操作D-2)。對於將選定之區域去活化,主機系統可捨棄不再活化之區域所對應的HPB項目(操作D-3)。對於活化的新的子區域,主機系統可發出一HPB讀取緩衝指令,並將之傳送給UFS裝置以請求要被活化之子區域所對應的HPB項目(操作D-4)。類似地,響應於HPB讀取緩衝指令之接收,UFS裝置可自記憶體裝置120讀取L2P映射表格之至少一部分(例如,讀取全域L2P映射表格或區域L2P映射表格),該部分係對應於選定要被活化之子區域,並且根據L2P映射表格所紀錄之映射資訊提供HPB項目(操作D-5)。UFS裝置接著可透過送入資料之通用快閃記憶體儲存通訊協定資訊單元(DATA IN UPIU)封包將HPB項目傳送至主機系統(操作D-6)。主機系統可於系統記憶體內配置一HPB區域(亦可稱為HPB快取區),用以儲存HPB項目(操作D-7)。
借助HPB項目所提供的資訊,主機裝置130可發出前述特定讀取指令,例如,HPB讀取指令,此HPB讀取指令可承載主機裝置130欲讀取的起始邏輯地址、傳輸長度(TRANSFER LENGTH)、以及HPB項目所記載的內容等相關資訊,用以讀取資料,改善記憶體裝置之讀取效能。
另一方面,對於記憶體裝置之寫入操作及無效資料的管理,記憶體控制器110也可藉由將特定HPB子區域所對應的資料集中寫入特定的記憶體區塊,如此亦可改善記憶體裝置之運作效能。
如上所述,記憶體控制器110可自備用區域選擇一或多個既定記憶體區塊作為快取記憶體,或稱緩存器(buffer),用以接收並暫存資料。當記憶體控制器110選擇既定記憶體區塊作為接收資料使用之緩存器時,記憶體控制器110可選擇以SLC模式或非SLC模式(例如,前述之MLC、TLC或QLC模式)抹除所選擇之既定記憶體區塊內的資料。當記憶體控制器110根據SLC模式抹除既定記憶體區塊時,該既定記憶體區塊便會被配置為SLC記憶體區塊。同樣地,當記憶體控制器110根據MLC模式抹除既定記憶體區塊時,該既定記憶體區塊便會被配置為MLC記憶體區塊。類似地,當記憶體控制器110根據TLC或QLC模式抹除既定記憶體區塊時,該既定記憶體區塊便會被配置為TLC或QLC記憶體區塊。
而本發明可被應用於使用單緩存器或多緩存器(例如,雙緩存器或兩個以上緩存器)之資料儲存裝置,其中於單緩存器的架構中,選擇作為快取記憶體的既定記憶體區塊可被配置為任一種記憶體區塊,例如SLC、MLC、TLC或QLC記憶體區塊,而於多緩存器的架構中,選擇作為快取記憶體的既定記憶體區塊可被配置為相同或不同類型的記憶體區塊。例如,選擇作為快取記憶體的其中至少一個既定記憶體區塊可被配置為SLC記憶體區塊,選擇作為快取記憶體的其中至少另一個既定記憶體區塊可被配置為非SLC記憶體區塊,例如MLC、TLC或QLC記憶體區塊。
根據本發明之第一實施例,於主機裝置130將資料寫入記憶體裝置120時,記憶體控制器110可將屬於熱寫入子區域的資料集中暫存於一特定的記憶體區塊,由於熱寫入子區域的資料會頻繁被更新,因此,當收集於特定的記憶體區塊的資料均成為無效資料時,此特定的記憶體區塊無需透過垃圾回收程序便可直接被釋放為備用區域內的空閒記憶體區塊,如此可有效改善記憶體裝置之運作效能。例如,記憶體控制器110可於將資料寫入緩存器之前,執行資料分流的判斷,使得屬於熱寫入子區域的資料可被寫入一既定記憶體區塊,其餘資料可被寫入另一既定記憶體區塊。
根據本發明之第二實施例,於主機裝置130將資料寫入記憶體裝置120時,記憶體控制器110可將屬於系統資料子區域的資料集中暫存於一特定的記憶體區塊,由於系統資料子區域的資料也會頻繁被更新,因此,當收集於特定的記憶體區塊的資料均成為無效資料時,此特定的記憶體區塊無需透過垃圾回收程序便可直接被釋放為備用區域內的空閒記憶體區塊,如此可有效改善記憶體裝置之運作效能。例如,記憶體控制器110可於將資料寫入緩存器之前,執行資料分流的判斷,使得屬於系統資料子區域的資料可被寫入一既定記憶體區塊,其餘資料可被寫入另一既定記憶體區塊。
根據本發明之第三實施例,於主機裝置130將資料寫入記憶體裝置120時,記憶體控制器110可將屬於熱寫入子區域及系統資料子區域的資料集中暫存於一特定的記憶體區塊,由於熱寫入子區域及系統資料子區域的資料皆會頻繁被更新,因此,當收集於特定的記憶體區塊的資料均成為無效資料時,此特定的記憶體區塊無需透過垃圾回收程序便可直接被釋放為備用區域內的空閒記憶體區塊,如此可有效改善記憶體裝置之運作效能。例如,記憶體控制器110可於將資料寫入緩存器之前,執行資料分流的判斷,使得屬於熱寫入子區域及系統資料子區域的資料可被寫入一既定記憶體區塊,其餘資料可被寫入另一既
定記憶體區塊。
第5圖係顯示根據本發明之第一實施例所述之資料處理方法流程圖。本發明之資料處理方法適用於資料儲存裝置,例如,資料儲存裝置100,其中的記憶體控制器110可配置或使用一第一既定記憶體區塊作為一緩存器用以自主機裝置130接收資料,資料處理方法可包括由記憶體控制器110所執行之以下步驟:
步驟S502:為各子區域,例如,前述之HPB子區域HPB_Sub_Rgn_0~HPB_Sub_Rgn_(L-1),維護一寫入計數值W_Cnt。
步驟S504:響應於自主機裝置130接收之用以將一或多個邏輯位址所對應的資料寫入記憶體裝置120之一寫入指令,根據所述一或多個邏輯位址決定寫入指令所對應之一子區域。
步驟S506:根據該子區域所對應之寫入計數值判斷該子區域是否為一熱寫入子區域,並且對應地決定是否使用一第二既定記憶體區塊作為另一緩存器以接收資料。若寫入指令所對應之子區域被判斷為一熱寫入子區域,執行步驟S508。若寫入指令所對應之子區域被判斷並非為一熱寫入子區域,執行步驟S510。
步驟S508:使用第二既定記憶體區塊作為另一緩存器並且將所述一或多個邏輯位址所對應的資料寫入第二既定記憶體區塊。
步驟S510:將所述一或多個邏輯位址所對應的資料寫入第一既定記憶體區塊。
需注意的是,一個寫入指令所對應之子區域也可以是一個以上的子區域,因此,於步驟S504中根據所述一或多個邏輯位址所決定出的子區域實際上可以是一或多個子區域。於本發明之一實施例中,當寫入指令所對應之子區域包括一個以上的子區域時,若任一子區域於步驟S506中被判斷為一熱寫入子
區域,記憶體控制器110執行步驟S508。但本發明亦不限於此。於本發明之另一實施例中,當寫入指令所對應之子區域包括一個以上的子區域時,記憶體控制器110可於所有子區域被判斷為熱寫入子區域時執行步驟S508,或者可針對被判斷為一熱寫入子區域的子區域執行步驟S508,用以將熱寫入子區域所對應的資料寫入第二既定記憶體區塊,並且針對未被判斷為一熱寫入子區域的子區域執行步驟S510,用以將非熱寫入子區域所對應的資料寫入第一既定記憶體區塊。
一般而言,寫入指令會帶有一起始邏輯區塊位址與一欲寫入之資料長度(以下稱為寫入長度),因此,於步驟S504中,記憶體控制器110可根據起始邏輯區塊位址與寫入長度推算出寫入指令所指定的邏輯位址,根據邏輯位址的數值或索引值的內容推算出此邏輯位址屬於哪個子區域,藉此決定出寫入指令所對應之一或多個子區域。因此,寫入指令所對應之子區域所涵蓋的邏輯位址範圍會包含寫入指令中所指定的所述一或多個邏輯位址,或者,寫入指令中所指定的所述一或多個邏輯位址會包含在寫入指令所對應之一或多個子區域所涵蓋的一邏輯位址範圍內。第2圖已顯示出一個邏輯位址(例如,邏輯區塊位址LBA)與HPB區域/HPB子區域之間的關係的範例。此技術領域中具有通常知識者當可理解如何根據一邏輯位址推算出此邏輯位址屬於哪個子區域以及哪個區域,故於此不再贅述。
根據本發明之一實施例,記憶體控制器110可維護一子區域寫入次數表格Sub_Rgn_W_Cnt_Tab,並且響應於由主機裝置130發出之一寫入指令更新子區域寫入次數表格Sub_Rgn_W_Cnt_Tab的內容。子區域寫入次數表格Sub_Rgn_W_Cnt_Tab可包括複數欄位,各欄位用以記錄相關聯之一子區域所對應之寫入計數值W_Cnt,並且記憶體控制器110藉由增加於寫入指令中指定的邏輯位址所屬之一或多個子區域所對應之一或多個寫入計數值W_Cnt更新子區域寫入次數表格Sub_Rgn_W_Cnt_Tab的內容。
更具體的說,響應於帶有一起始邏輯區塊位址與寫入長度的一寫入指令之接收,記憶體控制器110可藉由增加指定的邏輯位址(例如,起始邏輯區塊位址及根據起始邏輯區塊位址與寫入長度推算出來後續的邏輯區塊位址)所屬之一或多個子區域所對應之一或多個寫入計數值W_Cnt更新子區域寫入次數表格Sub_Rgn_W_Cnt_Tab的內容(例如,為每次的寫入加1)。需注意的是,響應於同一個寫入指令,一個子區域所對應的寫入計數值W_Cnt最多被增加1。
根據本發明之另一實施例,記憶體控制器110可維護一邏輯寫入次數表格(logical write count,縮寫LWC)LWC_Tab,並且響應於由主機裝置130發出之一寫入指令更新邏輯寫入次數表格LWC_Tab的內容。邏輯寫入次數表格LWC_Tab包括複數欄位,各欄位用以記錄相關聯之一邏輯位址所對應之一寫入計數值,記憶體控制器110藉由增加於寫入指令中指定的一或多個邏輯位址所對應之寫入計數值更新邏輯寫入次數表格LWC_Tab的內容,並且根據邏輯寫入次數表格LWC_Tab的內容維護各子區域所對應之寫入計數值W_Cnt。
更具體的說,響應於帶有一起始邏輯區塊位址與寫入長度的一寫入指令之接收,記憶體控制器110可根據起始邏輯區塊位址與寫入長度推算出該寫入指令所指定的邏輯位址,並且藉由增加指定的邏輯位址所對應之寫入計數值更新邏輯寫入次數表格LWC_Tab的內容(例如,為每次的寫入加l),再將一子區域所涵蓋的一邏輯位址範圍內所有邏輯位址所對應之寫入計數值加總而得該子區域所對應之寫入計數值W_Cnt。
根據本發明之一實施例,記憶體控制器110可根據子區域所對應之寫入計數值W_Cnt是否大於一臨界值判斷寫入指令所對應之該子區域是否為一熱寫入子區域。例如,記憶體控制器110除了為各子區域維護對應之一寫入計數值W_Cnt外,記憶體控制器110可更計算其平均值,並且將之設定為所述臨界值。須注意的是,因各子區域所對應之寫入計數值W_Cnt並非一固定值,而是會隨著
資料儲存裝置100的使用而增加的一變動值,因此,寫入計數值的平均值也並非一固定值,記憶體控制器110可持續計算當前最新的平均值並將之設定為所述臨界值。
此外,資料儲存裝置100也可根據總寫入資料量(Total Write Bytes,縮寫為TWB)來計算子區域所對應之寫入計數值W_Cnt的平均值。舉例而言,總寫入資料量TWB可以是自一特定時間點(例如,自資料儲存裝置100被載入ISP程式碼並初始化後)開始累計資料儲存裝置100每次被寫入的資料量而得的一加總結果。假設記憶體裝置120的容量是128GB(位元組),但是總共寫入的資料量為256GB,即可得知每個邏輯位址平均寫入的次數為2。再假設一個邏輯位址所對應的資料大小為4KB,一個HPB子區域所對應的容量為24MB,則可換算出一個HPB子區域所涵蓋的邏輯位址範圍內包含了24*1024/4=6144個邏輯位址。因此,可推得平均一個HPB子區域的寫入次數為2*6144=12288次。此時,記憶體控制器110可將12288設定為用以判斷子區域是否為一熱寫入子區域的臨界值。
根據本發明之另一實施例,記憶體控制器110可將所有子區域所對應之寫入計數值W_Cnt排序,並且根據排序過的寫入計數值W_Cnt判斷寫入指令所對應之子區域是否為一熱寫入子區域。舉例而言,若一子區域所對應的寫入計數值W_Cnt於由多到少排序後的排名小於一既定值,則記憶體控制器110可判斷該子區域為一熱寫入子區域。
於本發明之一實施例中,假設一個實體記憶體區塊(即,實體區塊)的容量為96MB,一個HPB子區域所對應的容量為24MB,則代表一個實體記憶體區塊可對應4個HPB子區域,記憶體控制器110可將排序後的排名屬於前4*N名的子區域判斷為一熱寫入子區域,其中的4為實體記憶體區塊的容量相對於HPB子區域容量的倍數,N為一正整數。因此,於本發明之實施例中,記憶體控制器110可根據實體記憶體區塊的容量相對於HPB子區域容量的倍數值設定根據排序
過的寫入計數值判斷一子區域是否為一熱寫入子區域的門檻(即,前述之既定值)。
根據本發明一實施例,配置用以暫存熱寫入子區域所對應的資料的第二既定記憶體區塊(即,前述之特定的記憶體區塊)可為單層式儲存(例如,SLC)記憶體區塊。根據本發明另一實施例,配置用以暫存熱寫入子區域所對應的資料的第二既定記憶體區塊可為多層式儲存(例如,MLC、TLC或QLC)記憶體區塊。此外,於本發明之實施例中,第一既定記憶體區塊與第二既定記憶體區塊可被配置為相同類型的記憶體區塊,例如,第一既定記憶體區塊與第二既定記憶體區塊可均為單層式儲存記憶體區塊或者均為多層式儲存記憶體區塊,也可被配置為不同類型的記憶體區塊,例如,第一既定記憶體區塊可被配置為多層式儲存記憶體區塊,第二既定記憶體區塊可被配置為單層式儲存記憶體區塊。本發明並不限於任一種特定的組合。
舉例而言,記憶體控制器110可將用以接收熱寫入子區域所對應的資料的記憶體區塊配置為SLC記憶體區塊,並且可將用以接收其他資料的記憶體區塊配置為多層式儲存記憶體區塊。由於將資料寫入SLC記憶體區塊之速度會比將資料寫入多層式儲存記憶體區塊之速度來的快,使用SLC記憶體區塊作為緩存器亦可有效加速記憶體裝置120的寫入操作。此外,由於熱寫入子區域所對應的資料會頻繁被更新,因此,當收集於SLC記憶體區塊的資料均成為無效資料時,此SLC記憶體區塊無需透過垃圾回收程序便可直接被釋放為備用區域內的空閒記憶體區塊,如此可有效改善記憶體裝置之運作效能。
需注意的是,本發明實際上並不限於此。如上所述,記憶體控制器110亦可將用以接收熱寫入子區域所對應的資料的記憶體區塊配置為多層式儲存記憶體區塊,或者將用以接收非熱寫入子區域的其他子區域所對應的資料的記憶體區塊配置為SLC記憶體區塊。
除熱寫入子區域之外,記憶體控制器110也可將屬於系統資料子區域的資料寫入一既定記憶體區塊,將其餘資料寫入另一既定記憶體區塊。
根據本發明之一實施例,記憶體控制器110可將主機裝置130寫入記憶體裝置120之資料大致區分為檔案系統之管理資料以及使用者資料,其中,檔案系統之管理資料為運作於主機裝置130之操作系統(Operating system)所使用之檔案系統之管理資料。此管理資料可為一檔案系統管理表格,檔案系統管理表格可包括複數欄位,用於記錄使用者資料的管理資訊。舉例而言,檔案系統管理表格之一欄位可用以紀錄各筆使用者資料的檔案大小以及各筆使用者資料所對應的邏輯位址範圍,其中一個檔案可有對應之一筆紀錄。舉另一例而言,檔案系統管理表格之另一欄位可用以紀錄主機系統的哪些邏輯位址已經被寫入資料,哪些邏輯位址尚未被寫入資料。根據本發明之一實施例,所述之主機系統可以是包含主機裝置130與資料儲存裝置100之一系統,亦可為進一步包含耦接至主機裝置130之一或多個周邊裝置之一系統。
一般而言,每當使用者資料有所更新時,主機裝置130也必須對應地更新檔案系統之管理資料,使得檔案系統管理表格所紀錄之資訊為最新的管理資訊。當檔案系統管理表格之任何一個欄位的內容須被更新,記憶體控制器110會將最新的檔案系統管理表格內容寫入記憶體裝置120。如此一來,響應於使用者資料的更新,檔案系統管理表格也會頻繁的被更新。
因此,於本發明之第二實施例中,於主機裝置130將資料寫入記憶體裝置120時,記憶體控制器110可於將資料寫入緩存器之前,執行資料分流的判斷,使得屬於系統資料子區域的資料可被寫入一既定記憶體區塊,其餘資料可被寫入另一既定記憶體區塊。
第6圖係顯示根據本發明之第二實施例所述之資料處理方法流程圖。本發明之資料處理方法適用於資料儲存裝置,例如,資料儲存裝置100,其
中的記憶體控制器110可配置或使用一第一既定記憶體區塊作為一緩存器用以自主機裝置130接收資料,資料處理方法可包括由記憶體控制器110所執行之以下步驟:
步驟S602:響應於自主機裝置130接收之用以將一或多個邏輯位址所對應的資料寫入記憶體裝置120之一寫入指令,根據所述一或多個邏輯位址決定寫入指令所對應之一子區域。
步驟S604:判斷寫入指令所對應之子區域是否為一系統資料子區域,以及對應地決定是否使用一第二既定記憶體區塊作為另一緩存器以接收資料。若寫入指令所對應之子區域被判斷為一系統資料子區域,執行步驟S606。若寫入指令所對應之子區域被判斷並非為一系統資料子區域,執行步驟S608。
步驟S606:使用第二既定記憶體區塊作為另一緩存器並且將所述一或多個邏輯位址所對應的資料寫入第二既定記憶體區塊。
步驟S608:將所述一或多個邏輯位址所對應的資料寫入第一既定記憶體區塊。
如上所述,一個寫入指令所對應之子區域也可以是一個以上的子區域,因此,於步驟S602中根據所述一或多個邏輯位址所決定出的子區域實際上可以是一或多個子區域。於本發明之一實施例中,當寫入指令所對應之子區域包括一個以上的子區域時,若任一子區域於步驟S604中被判斷為一系統資料子區域,記憶體控制器110執行步驟S606。但本發明亦不限於此。於本發明之另一實施例中,當寫入指令所對應之子區域包括一個以上的子區域時,記憶體控制器110可於所有子區域被判斷為系統資料子區域時執行步驟S606,或者可針對被判斷為一系統資料子區域的子區域執行步驟S606,用以將系統資料子區域所對應的資料寫入第二既定記憶體區塊,並且針對未被判斷為一系統資料子區域的子區域執行步驟S608,用以將非系統資料子區域所對應的資料寫入第一既定記
憶體區塊。
此外,於步驟S602中,記憶體控制器110可根據起始邏輯區塊位址與寫入長度推算出寫入指令所指定的邏輯位址,根據邏輯位址的數值或索引值的內容推算出此邏輯位址屬於哪個子區域,藉此決定出寫入指令所對應之一或多個子區域。因此,寫入指令所對應之子區域所涵蓋的邏輯位址範圍會包含寫入指令中所指定的所述一或多個邏輯位址,或者,寫入指令中所指定的所述一或多個邏輯位址會包含在寫入指令所對應之一或多個子區域所涵蓋的一邏輯位址範圍內。第2圖已顯示出一個邏輯位址(例如,邏輯區塊位址LBA)與HPB區域/HPB子區域之間的關係的範例。此技術領域中具有通常知識者當可理解如何根據一邏輯位址推算出此邏輯位址屬於哪個子區域以及哪個區域,故於此不再贅述。
於一實施例中,主機裝置130可將數值較小的邏輯位址(例如,自邏輯位址之起始端開始)分配給檔案系統之管理資料使用。因此,記憶體控制器110可自邏輯位址之起始端(例如,第2圖之LBA 0)開始為對應的子區域分配索引值(例如,第2圖之HPB子區域索引值0~(L-1)),並且當寫入指令所對應之子區域所對應之一索引值小於一既定數值(例如,第一既定數值)時,記憶體控制器110可判斷寫入指令所對應之子區域為一系統資料子區域。
假設記憶體120為TLC快閃記憶體,且其一個實體區塊的容量為72MB、一個HPB子區域所對應的容量為24MB,則所述既定數值可被設定為3、6、9等數值(即,一個實體區塊所包含的HPB子區域數量的整數倍)。舉例而言,若記憶體控制器110將索引值0~2的HPB子區域設定為用以儲存主機裝置130之檔案系統之管理資料的系統資料子區域,則其餘的HPB子區域可被視為用以儲存使用者資料的子區域,並且既定數值可被設定為3。
同理,假設記憶體120為QLC快閃記憶體,且其一個實體區塊的容量為96MB、一個HPB子區域所對應的容量為24MB,則所述既定數值可被設定為
4、8、12等數值(即,一個實體區塊所包含的HPB子區域數量的整數倍)。舉例而言,若記憶體控制器110將索引值0~3的HPB子區域設定為用以儲存主機裝置130之檔案系統之管理資料的系統資料子區域,則其餘的HPB子區域可被視為用以儲存使用者資料的子區域,並且既定數值可被設定為4。
根據本發明之另一實施例,於主機裝置130將數值較小的邏輯位址(例如,自邏輯位址之起始端開始)分配給檔案系統之管理資料使用的情境下,當寫入指令所指定的一或多個邏輯位址所對應之一或多個數值或索引值小於另一既定數值(例如,第二既定數值)時,記憶體控制器110也可判斷寫入指令所對應之子區域為一系統資料子區域。
值得注意的是,於本發明之實施例中,主機裝置130並不限於將數值較小的邏輯位址分配給檔案系統之管理資料使用。舉例而言,主機裝置130亦可將數值較大的邏輯位址(例如,自邏輯位址最末端開始)分配給檔案系統之管理資料使用。因此,本發明並不限於上述的判斷方法,並且於本發明之實施例中,一子區域是否為系統資料子區域的判斷方法可根據配置用以儲存檔案系統之邏輯位址而動態調整。
例如,主機裝置130可設定一特定邏輯位址範圍,將此特定邏輯位址範圍內的邏輯位址分配給檔案系統之管理資料使用。因此,根據本發明之另一實施例,當寫入指令所對應之子區域所涵蓋的一邏輯位址範圍與一主機裝置所配置用以儲存檔案系統之管理資料之一邏輯位址範圍重疊(其可以是完全重疊或部分重疊)時,寫入指令所對應之子區域可被判斷為一系統資料子區域。或者,當寫入指令中指定的一或多個邏輯位址在主機裝置130所配置用以儲存檔案系統之管理資料之一邏輯位址範圍內時,寫入指令所對應之子區域可被判斷為一系統資料子區域。
又例如,當寫入指令所指定的一或多個邏輯位址指示出主機裝置130
所欲寫入之資料為主機裝置130之檔案系統之管理資料時,寫入指令所對應之子區域可被判斷為一系統資料子區域。
根據本發明之一實施例,主機裝置130可藉由多種方式通知記憶體控制器110其所配置給檔案系統之管理資料的邏輯位址,或邏輯位址範圍。如上所述,記憶體控制器110可透過介面邏輯118與主機裝置130溝通。
此外,根據本發明之一實施例,所述檔案系統之管理資料可以是一檔案系統管理表格。
根據本發明一實施例,配置用以暫存系統資料子區域所對應的資料的第二既定記憶體區塊(即,前述之特定的記憶體區塊)可為單層式儲存(例如,SLC)記憶體區塊。根據本發明另一實施例,配置用以暫存系統資料子區域所對應的資料的第二既定記憶體區塊可為多層式儲存(例如,MLC、TLC或QLC)記憶體區塊。此外,於本發明之實施例中,第一既定記憶體區塊與第二既定記憶體區塊可被配置為相同類型的記憶體區塊,例如,第一既定記憶體區塊與第二既定記憶體區塊可均為單層式儲存記憶體區塊或者均為多層式儲存記憶體區塊,也可被配置為不同類型的記憶體區塊,例如,第一既定記憶體區塊可被配置為多層式儲存記憶體區塊,第二既定記憶體區塊可被配置為單層式儲存記憶體區塊。本發明並不限於任一種特定的組合。
舉例而言,由於檔案系統之管理資訊為重要的資訊,因此,記憶體控制器110可將用以接收檔案系統之管理資料的記憶體區塊配置為SLC記憶體區塊,以確保資料的正確性,並且可將用以接收其他資料的記憶體區塊配置為多層式儲存記憶體區塊。由於將資料寫入SLC記憶體區塊之速度會比將資料寫入多層式儲存記憶體區塊之速度來的快,使用SLC記憶體區塊作為緩存器亦可有效加速記憶體裝置120的寫入操作。此外,由於系統資料子區域的資料也會頻繁被更新,因此,當收集於SLC記憶體區塊的資料均成為無效資料時,此SLC記憶體區
塊無需透過垃圾回收程序便可直接被釋放為備用區域內的空閒記憶體區塊,如此可有效改善記憶體裝置之運作效能。
需注意的是,本發明實際上並不限於此。如上所述,記憶體控制器110亦可將用以接收系統資料子區域所對應的資料的記憶體區塊配置為多層式儲存記憶體區塊,或者將用以接收其他資料(例如,使用者資料)的記憶體區塊配置為SLC記憶體區塊。
於本發明之第三實施例中,響應於自主機裝置130接收之用以將一或多個邏輯位址所對應的資料寫入記憶體裝置120之一寫入指令,記憶體控制器110根據所述一或多個邏輯位址決定寫入指令所對應之一子區域後,可進一步根據該子區域所對應之寫入計數值判斷該子區域是否為一熱寫入子區域,以及根據該子區域所對應之索引值或者所述一或多個邏輯位址所對應之一或多個數值或索引值判斷寫入指令所對應之子區域是否為一系統資料子區域。若寫入指令所對應之子區域被判斷為一熱寫入子區域或者一系統資料子區域,使用一特定的記憶體區塊作為緩存器並且將所述一或多個邏輯位址所對應的資料集中寫入特定的記憶體區塊。若寫入指令所對應之子區域被判斷並非為一熱寫入子區域也並非為一系統資料子區域,則使用一非特定的記憶體區塊作為另一緩存器並且將所述一或多個邏輯位址所對應的資料寫入該非特定的記憶體區塊。
如上述,於本發明之實施例中,在將資料寫入緩存器之前,記憶體控制器110可先執行資料分流的判斷,使得熱寫入子區域及/或系統資料子區域所對應的資料可被寫入特定的記憶體區塊,其餘資料可被寫入另一記憶體區塊。由於熱寫入子區域及/或系統資料子區域所對應的資料被集中於同一記憶體區塊,當此記憶體區塊內所儲存之內容均為無效時,記憶體控制器110便可直接捨棄此記憶體區塊,而無須對此記憶體區塊執行垃圾收集程序,藉此可有效避免記憶體裝置之存取效能因垃圾收集程序的頻繁執行而下降,進而大幅提升記憶
體裝置之運作效能。
以上所述僅為本發明之較佳實施例,凡依本發明申請專利範圍所做之均等變化與修飾,皆應屬本發明之涵蓋範圍。
100:資料儲存裝置
110:記憶體控制器
112:微處理器
112C:程式碼
112M:唯讀記憶體
114:記憶體介面
116:緩衝記憶體
118:主機介面
120:記憶體裝置
130:主機裝置
132:編碼器
134:解碼器
Claims (14)
- 一種資料儲存裝置,包括:一記憶體裝置,包括複數記憶體區塊,該等記憶體區塊對應於複數邏輯單元,各邏輯單元分別對應於複數邏輯位址,各邏輯單元所對應之該等邏輯位址被劃分為複數區域,並且各區域進一步被劃分為複數子區域;以及一記憶體控制器,耦接至該記憶體裝置,用以存取該記憶體裝置,其中該記憶體控制器使用一第一既定記憶體區塊作為一緩存器用以自一主機裝置接收資料,並且該記憶體控制器為各子區域維護一寫入計數值,響應於自該主機裝置接收之用以將一或多個邏輯位址所對應的資料寫入該記憶體裝置之一寫入指令,該記憶體控制器根據該一或多個邏輯位址決定該寫入指令所對應之一子區域,其中該一或多個邏輯位址包含在該寫入指令所對應之該子區域所涵蓋的一邏輯位址範圍內,該記憶體控制器根據該子區域所對應之該寫入計數值判斷該子區域是否為一熱寫入子區域,並且對應地決定是否使用一第二既定記憶體區塊作為另一緩存器以接收資料,其中當該寫入指令所對應之該子區域被判斷為一熱寫入子區域時,該記憶體控制器使用該第二既定記憶體區塊作為另一緩存器並且將該一或多個邏輯位址所對應的資料寫入該第二既定記憶體區塊,以及當該寫入指令所對應之該子區域被判斷並非為一熱寫入子區域時,該記憶體控制器將該一或多個邏輯位址所對應的資料寫入該第一既定記憶體區塊,並且其中響應於同一個寫入指令,各子區域所對應之該寫入計數值最多被增加1。
- 如申請專利範圍第1項所述之資料儲存裝置,其中該記憶體控制器更維護一子區域寫入次數表格,並且響應於該寫入指令更新該子區域寫入次數 表格的內容,該子區域寫入次數表格包括複數欄位,各欄位用以記錄相關聯之一子區域所對應之該寫入計數值,並且該記憶體控制器藉由增加於該寫入指令中指定的該一或多個邏輯位址所屬之一或多個子區域所對應之一或多個寫入計數值更新該子區域寫入次數表格的內容。
- 如申請專利範圍第1項所述之資料儲存裝置,其中該記憶體控制器更維護一邏輯寫入次數表格,並且響應於該寫入指令更新該邏輯寫入次數表格的內容,該邏輯寫入次數表格包括複數欄位,各欄位用以記錄相關聯之一邏輯位址所對應之一寫入計數值,該記憶體控制器藉由增加於該寫入指令中指定的該一或多個邏輯位址所對應之寫入計數值更新該邏輯寫入次數表格的內容,並且根據該邏輯寫入次數表格的內容維護各子區域所對應之該寫入計數值。
- 如申請專利範圍第1項所述之資料儲存裝置,其中該第二既定記憶體區塊為單層式儲存(Single-Level Cell,SLC)記憶體區塊。
- 如申請專利範圍第1項所述之資料儲存裝置,其中該第二既定記憶體區塊為多層式儲存(Multiple-Level Cell,MLC)記憶體區塊。
- 如申請專利範圍第1項所述之資料儲存裝置,其中該記憶體控制器根據該子區域所對應之該寫入計數值是否大於一臨界值判斷該子區域是否為一熱寫入子區域。
- 如申請專利範圍第1項所述之資料儲存裝置,其中該記憶體控制器更將該等子區域所對應之複數寫入計數值排序,並且根據排序過的該等寫入計 數值判斷該子區域是否為一熱寫入子區域。
- 一種資料處理方法,適用於一資料儲存裝置,其中該資料儲存裝置包括一記憶體裝置與一記憶體控制器,該記憶體裝置包括複數記憶體區塊,該等記憶體區塊對應於複數邏輯單元,各邏輯單元分別對應於複數邏輯位址,各邏輯單元所對應之該等邏輯位址被劃分為複數區域,並且各區域進一步被劃分為複數子區域,該記憶體控制器耦接至該記憶體裝置,用以存取該記憶體裝置,該記憶體控制器使用一第一既定記憶體區塊作為一緩存器用以自一主機裝置接收資料,該資料處理方法由該記憶體控制器所執行並包括:為各子區域維護一寫入計數值,其中響應於同一個寫入指令,各子區域所對應之該寫入計數值最多被增加1;響應於自該主機裝置接收之用以將一或多個邏輯位址所對應的資料寫入該記憶體裝置之一寫入指令,根據該一或多個邏輯位址決定該寫入指令所對應之一子區域,其中該一或多個邏輯位址包含在該寫入指令所對應之該子區域所涵蓋的一邏輯位址範圍內;根據該子區域所對應之該寫入計數值判斷該子區域是否為一熱寫入子區域,並且對應地決定是否使用一第二既定記憶體區塊作為另一緩存器以接收資料;以及當該寫入指令所對應之該子區域被判斷為一熱寫入子區域時,使用該第二既定記憶體區塊作為另一緩存器並且將該一或多個邏輯位址所對應的資料寫入該第二既定記憶體區塊,以及當該寫入指令所對應之該子區域被判斷並非為一熱寫入子區域時,將該一或多個邏輯位址所對應的資料寫入該第一既定記憶體區塊。
- 如申請專利範圍第8項所述之資料處理方法,更包括:維護一子區域寫入次數表格,並且響應於該寫入指令更新該子區域寫入次數表格的內容,其中該子區域寫入次數表格包括複數欄位,各欄位用以記錄相關聯之一子區域所對應之該寫入計數值,並且該子區域寫入次數表格的內容藉由增加於該寫入指令中指定的該一或多個邏輯位址所屬之一或多個子區域所對應之一或多個寫入計數值被更新。
- 如申請專利範圍第8項所述之資料處理方法,更包括:維護一邏輯寫入次數表格,並且響應於該寫入指令更新該邏輯寫入次數表格的內容,其中該邏輯寫入次數表格包括複數欄位,各欄位用以記錄相關聯之一邏輯位址所對應之一寫入計數值,該邏輯寫入次數表格的內容藉由增加於該寫入指令中指定的該一或多個邏輯位址所對應之寫入計數值被更新,並且各子區域所對應之該寫入計數值根據該邏輯寫入次數表格的內容被維護。
- 如申請專利範圍第8項所述之資料處理方法,其中該第二既定記憶體區塊為單層式儲存(Single-Level Cell,SLC)記憶體區塊。
- 如申請專利範圍第8項所述之資料處理方法,其中該第二既定記憶體區塊為多層式儲存(Multiple-Level Cell,MLC)記憶體區塊。
- 如申請專利範圍第8項所述之資料處理方法,其中當該子區域所 對應之該寫入計數值大於一臨界值時,該子區域被判斷為一熱寫入子區域。
- 如申請專利範圍第8項所述之資料處理方法,更包括:將該等子區域所對應之複數寫入計數值排序,並且根據該子區域所對應之該寫入計數值判斷該子區域是否為一熱寫入子區域之步驟更包括:根據排序過的該等寫入計數值判斷該子區域是否為一熱寫入子區域。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW111136342A TWI814590B (zh) | 2022-09-26 | 2022-09-26 | 資料處理方法及對應之資料儲存裝置 |
CN202211259314.4A CN117806531A (zh) | 2022-09-26 | 2022-10-14 | 数据处理方法及对应的数据储存装置 |
US18/223,558 US20240103733A1 (en) | 2022-09-26 | 2023-07-19 | Data processing method for efficiently processing data stored in the memory device by splitting data flow and the associated data storage device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW111136342A TWI814590B (zh) | 2022-09-26 | 2022-09-26 | 資料處理方法及對應之資料儲存裝置 |
Publications (2)
Publication Number | Publication Date |
---|---|
TWI814590B true TWI814590B (zh) | 2023-09-01 |
TW202414222A TW202414222A (zh) | 2024-04-01 |
Family
ID=88966049
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW111136342A TWI814590B (zh) | 2022-09-26 | 2022-09-26 | 資料處理方法及對應之資料儲存裝置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20240103733A1 (zh) |
CN (1) | CN117806531A (zh) |
TW (1) | TWI814590B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW201308077A (zh) * | 2011-06-15 | 2013-02-16 | Apple Inc | 在混合式單位階記憶體胞(slc)/多位階記憶體胞(mlc)記憶體中之區塊管理方案 |
TW201443641A (zh) * | 2013-01-22 | 2014-11-16 | Lsi Corp | 用於寫入非揮發性記憶體之管理及區域選擇 |
US20160179386A1 (en) * | 2014-12-17 | 2016-06-23 | Violin Memory, Inc. | Adaptive garbage collection |
TW201921252A (zh) * | 2017-08-31 | 2019-06-01 | 美商美光科技公司 | 具有動態快取管理之記憶體裝置 |
CN110647288A (zh) * | 2018-06-26 | 2020-01-03 | 上海宝存信息科技有限公司 | 数据储存装置及其快取分流方法 |
TW202046116A (zh) * | 2017-10-30 | 2020-12-16 | 日商東芝記憶體股份有限公司 | 儲存系統 |
TWI754396B (zh) * | 2020-09-29 | 2022-02-01 | 慧榮科技股份有限公司 | 快閃記憶體的資料儲存方法及裝置以及電腦程式產品 |
-
2022
- 2022-09-26 TW TW111136342A patent/TWI814590B/zh active
- 2022-10-14 CN CN202211259314.4A patent/CN117806531A/zh active Pending
-
2023
- 2023-07-19 US US18/223,558 patent/US20240103733A1/en active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW201308077A (zh) * | 2011-06-15 | 2013-02-16 | Apple Inc | 在混合式單位階記憶體胞(slc)/多位階記憶體胞(mlc)記憶體中之區塊管理方案 |
TW201443641A (zh) * | 2013-01-22 | 2014-11-16 | Lsi Corp | 用於寫入非揮發性記憶體之管理及區域選擇 |
US20160179386A1 (en) * | 2014-12-17 | 2016-06-23 | Violin Memory, Inc. | Adaptive garbage collection |
TW201921252A (zh) * | 2017-08-31 | 2019-06-01 | 美商美光科技公司 | 具有動態快取管理之記憶體裝置 |
TW202046116A (zh) * | 2017-10-30 | 2020-12-16 | 日商東芝記憶體股份有限公司 | 儲存系統 |
CN110647288A (zh) * | 2018-06-26 | 2020-01-03 | 上海宝存信息科技有限公司 | 数据储存装置及其快取分流方法 |
TWI754396B (zh) * | 2020-09-29 | 2022-02-01 | 慧榮科技股份有限公司 | 快閃記憶體的資料儲存方法及裝置以及電腦程式產品 |
Also Published As
Publication number | Publication date |
---|---|
CN117806531A (zh) | 2024-04-02 |
US20240103733A1 (en) | 2024-03-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107590080B (zh) | 映射表更新方法、存储器控制电路单元及存储器存储装置 | |
CN113961140B (zh) | 数据处理方法及对应的数据储存装置 | |
CN113885778B (zh) | 数据处理方法及对应的数据储存装置 | |
US10339045B2 (en) | Valid data management method and storage controller | |
CN110806837A (zh) | 数据处理系统及其操作方法 | |
CN113900582A (zh) | 数据处理方法及对应的数据储存装置 | |
CN112860193B (zh) | 整理指令处理方法、存储器控制电路单元与存储装置 | |
CN113885779B (zh) | 数据处理方法及对应的数据储存装置 | |
TW201935232A (zh) | 記憶體管理方法及使用所述方法的儲存控制器 | |
TWI766526B (zh) | 資料處理方法及對應之資料儲存裝置 | |
TWI814590B (zh) | 資料處理方法及對應之資料儲存裝置 | |
TWI758944B (zh) | 資料處理方法及對應之資料儲存裝置 | |
CN112099731B (zh) | 数据储存装置与数据处理方法 | |
TWI808010B (zh) | 資料處理方法及對應之資料儲存裝置 | |
TWI829363B (zh) | 資料處理方法及對應之資料儲存裝置 | |
CN113835617A (zh) | 数据处理方法及对应的数据储存装置 | |
TWI808011B (zh) | 資料處理方法及對應之資料儲存裝置 | |
TW202414222A (zh) | 資料處理方法及對應之資料儲存裝置 | |
TW202414223A (zh) | 資料處理方法及對應之資料儲存裝置 | |
TWI766431B (zh) | 資料處理方法及對應之資料儲存裝置 | |
TWI775341B (zh) | 整理指令處理方法、記憶體控制電路單元與記憶體儲存裝置 | |
TW202414221A (zh) | 資料處理方法及對應之資料儲存裝置 | |
TW202414217A (zh) | 資料處理方法及對應之資料儲存裝置 | |
CN112445418B (zh) | 存储器控制方法、存储器存储装置及存储器控制电路单元 | |
US20240143226A1 (en) | Data storage device and method for managing a write buffer |