TW201915739A - 資料儲存裝置以及資料儲存方法 - Google Patents
資料儲存裝置以及資料儲存方法 Download PDFInfo
- Publication number
- TW201915739A TW201915739A TW106131913A TW106131913A TW201915739A TW 201915739 A TW201915739 A TW 201915739A TW 106131913 A TW106131913 A TW 106131913A TW 106131913 A TW106131913 A TW 106131913A TW 201915739 A TW201915739 A TW 201915739A
- Authority
- TW
- Taiwan
- Prior art keywords
- data
- data storage
- virtual
- block
- blocks
- 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/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
- 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
- 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
- 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/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to 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/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/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- 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/0662—Virtualisation aspects
- G06F3/0665—Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
-
- 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
- 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
- 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
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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Memory System (AREA)
Abstract
一種資料儲存方法,應用於一資料儲存裝置。資料儲存裝置包括一快閃記憶體、一控制器以及一隨機存取記憶體。資料儲存方法包括:將快閃記憶體之複數區塊之一主動區塊區分為複數個虛擬區塊;選取虛擬區塊之其中一者對資料進行存取;以及對虛擬區塊配置其對應之映射表。映射表係用以記錄複數邏輯位址與快閃記憶體的複數物理位址的映射資訊、以及記錄虛擬區塊之有效頁面之數量。
Description
本發明係有關於資料儲存裝置與資料儲存方法,特別有關於利用虛擬區塊提升效能之資料儲存裝置與資料儲存方法。
資料儲存裝置所採用的非揮發式記憶體有多種形式-例如,快閃記憶體(flash memory)、磁阻式揮發性記憶體(Magnetoresistive RAM)、鐵電揮發性記憶體(Ferroelectric RAM)、電阻式揮發性記憶體(Resistive RAM)、自旋轉移力矩揮發性記憶體(Spin Transfer Torque-RAM,STT-RAM)…等,用於長時間資料保存。
資料儲存裝置的效能受限於非揮發式記憶體的操作特性。本領域一項重要議題為提升資料儲存裝置之效能。
本案揭露一種資料儲存方法,將快閃記憶體之區塊區分為複數個虛擬區塊,藉由虛擬區塊之每一者分別對複數資料進行存取,並且對每一虛擬區塊配置其對應之映射表以記錄虛擬區塊之有效頁面之數量。由此可知,在進行資料的讀取或寫入等操作時,本發明之資料儲存方法係以虛擬區塊的方式進行管理,以增加資料儲存裝置之效能,節省資料儲存裝置之 儲存容量。藉由利用虛擬區塊之管理方式,能夠在不需要耗費太多儲存容量的情況下,達成增加資料儲存裝置之效能之目的。
本發明提供一種資料儲存方法,應用於一資料儲存裝置。資料儲存裝置包括一快閃記憶體、一控制器以及一隨機存取記憶體。資料儲存方法包括:將快閃記憶體之複數區塊之一主動區塊區分為複數個虛擬區塊;選取虛擬區塊之其中一者對資料進行存取;以及對虛擬區塊配置其對應之映射表。映射表係用以記錄複數邏輯位址與快閃記憶體的複數物理位址的映射資訊、以及記錄虛擬區塊之有效頁面之數量。
在一實施例中,映射表係儲存於快閃記憶體或是隨機存取記憶體。控制器將區塊區分為虛擬區塊之數量係決定於映射表之資料大小、以及儲存映射表之快閃記憶體或隨機存取記憶體之儲存容量。此外,控制器判斷映射表之每一者所紀錄之有效頁面之數量是否為零,並且當有效頁面之數量不為零時,控制器對有效頁面之數量不為零所對應之虛擬區塊執行垃圾回收(Garbage Collection)流程,對虛擬區塊之有效頁面進行合併。再者,當控制器接收到一抹除(erase)指令時,控制器對需要抹除之區塊之整體進行抹除。當控制器接收到一讀取指令或是一寫入指令時,控制器依據讀取指令或寫入指令判斷需要進行讀取或寫入的區塊之中的虛擬區塊,並且對虛擬區塊進行資料的讀取或寫入。
本發明提供一種資料儲存裝置,包括一快閃記憶體以及一控制器。快閃記憶體,包括複數個區塊(block),上述 區塊之每一者包括複數個頁面(page)。控制器操作快閃記憶體以儲存複數筆資料,以及將區塊之一主動區塊區分為複數個虛擬區塊。選取虛擬區塊之其中一者對資料進行存取,虛擬區塊具有其對應之映射表。映射表係用以記錄複數邏輯位址與快閃記憶體的複數物理位址的映射資訊、以及記錄虛擬區塊之有效頁面之數量。
本發明提供一種資料儲存方法,應用於一資料儲存裝置。資料儲存裝置包括一快閃記憶體、一控制器以及一隨機存取記憶體。資料儲存方法包括:將快閃記憶體之複數區塊之一主動區塊區分為複數個虛擬區塊;選取虛擬區塊之其中一者對一資料進行存取;輸出一資料寫入指令;以及確認該資料寫入指令是否執行完成,並且判斷被選取之該虛擬區塊是否已寫滿該資料。
下文特舉實施例,並配合所附圖示,詳細說明本發明內容。
100‧‧‧資料儲存裝置
120‧‧‧控制器
140‧‧‧快閃記憶體
160-16N‧‧‧儲存矩陣
160_A、160_Z…16N_A、16N_Z、BLK‧‧‧區塊
160_A_1、160_ZX…16N_A1、16N_ZX‧‧‧頁面
180‧‧‧隨機存取記憶體
200‧‧‧主機
210‧‧‧中央處理器
P2L、P2L#1、P2L#2…P2L#11‧‧‧映射表
VB#1、VB#2…VB#N‧‧‧虛擬區塊
S300...S414‧‧‧步驟
第1圖係根據本案一種實施例所述之資料儲存裝置與主機之示意圖;第2A圖係根據本案一種實施例所述之區塊之示意圖;第2B圖係根據本案一種實施例所述之區塊及其虛擬區塊與映射表之示意圖;第3圖係顯示根據本發明一實施例所述之資料儲存方法之流程圖; 第4圖係顯示根據本發明另一實施例所述之資料儲存方法之流程圖;第5A圖係根據本案一種實施例所述之區塊之示意圖;第5B圖係根據本案一種實施例所述之區塊及其虛擬區塊與映射表之示意圖;第5C圖係根據本案一種實施例所述之藉由虛擬區塊與映射表執行垃圾回收流程之示意圖。
為讓本發明之目的、特徵和優點能更明顯易懂,下文特舉出本發明之具體實施例,並配合所附圖式,作詳細說明如下。目的在於說明本發明之精神而非用以限定本發明之保護範圍,應理解下列實施例可經由軟體、硬體、韌體、或上述任意組合來實現。
第1圖係顯示根據本發明一實施例所述之資料儲存裝置100與主機200之示意圖。在一實施例中,資料儲存裝置100包括控制器120、非揮發性記憶體以及隨機存取記憶體(RAM)180。主機200包括中央處理器(CPU)210。資料儲存裝置100耦接主機200以傳送資料與指令、或是接收資料與指令。資料儲存裝置100係符合嵌入式快閃記憶體模組(eMMC)規範以及通用快閃記憶體(UFS)規範。非揮發式記憶體可以是快閃記憶體(Flash Memory)、磁阻式揮發性記憶體(Magnetoresistive RAM)、鐵電揮發性記憶體(Ferroelectric RAM)、電阻式記憶體(Resistive RAM,RRAM)、自旋轉移力矩揮發性記憶體(Spin Transfer Torque-RAM,STT-RAM)…等具有長時間資料保存之記 憶體裝置。以下特別以快閃記憶體(Flash Memory)140為例進行討論。
如第1圖所示,控制器120耦接快閃記憶體140以及隨機存取記憶體180。隨機存取記憶體180用以暫存以及預取控制器120所需之資料,或是用以暫存主機200要寫入快閃記憶體140之資料,以加快資料儲存裝置100之存取時間。控制器120耦接快閃記憶體140以相互傳送資料與指令或接收資料與指令。在一實施例中,控制器120與快閃記憶體140之間具有4個通道(亦即CH0~CH3)以傳輸資料或指令。進一步而言,控制器120可包括具有韌體碼之一微控制器以及唯讀記憶體(ROM),並且微控制器執行韌體碼以操作或是存取快閃記憶體140。
快閃記憶體140包括複數個儲存矩陣(Array)160~16N。舉例而言,快閃記憶體140具有4個儲存矩陣160~163(亦即CE0~CE3)。儲存矩陣160~16N中的每一者更包括複數個區塊(block)160_A~16N_Z。在一實施例中,每一儲存矩陣160~16N之一部分區塊組合成一超級區塊(Super Block),使得快閃記憶體140包括複數個超級區塊。如第1圖所示,儲存矩陣160包括區塊160_A~160_Z,儲存矩陣16N包括區塊16N_A~16N_Z。對於儲存矩陣160而言,區塊160_A~160_Z中的每一者更包括複數個實體頁面160_A_1~16N_Z_X。區塊160_A包括實體頁面160_A_1~160_A_X,區塊160_Z包括實體頁面160_Z_1~160_Z_X。控制器120在對快閃記憶體140執行寫入或儲存動作時,是藉由控制快閃記憶體140以實體頁面為單位來執行寫入或程式化的運作。
對於快閃記憶體140而言,其實體頁面(簡稱頁面)160_A_1~16N_Z_X的每一者皆具有不同的實體位址。換言之,頁面160_A_1~16N_Z_X的每一者都具有一個實體位址,而頁面160_A_1~16N_Z_X的每一者的實體位址都是不同的。當資料儲存裝置100執行寫入運作時,控制器120選取快閃記憶體140的一個實體位址(即一個頁面)以寫入或儲存資料,並將資料的邏輯位址與實體位址的對應關係記錄至映射表L2P(Logical addresses to Physical addresses),另外,頁面如果仍有多餘空間的話,控制器120亦可將資料的邏輯位址寫入頁面中。之後,主機200可藉由邏輯位址來讀取資料儲存裝置100所儲存於某個邏輯位址的資料。此外,控制器120亦會在區塊或超級區塊的尾端儲存映射表P2L(Physical addresses to Logical addresses),以記錄區塊或超級區塊的資料的實體位址與邏輯位址之映射關係。當映射表L2P遺失或毀損時,控制器120可讀取區塊或超級區塊所儲存的映射表P2L以重建映射表L2P。
第2A圖係根據本案一種實施例所述之區塊BLK之示意圖。上述區塊BLK可為第1圖之160_A區塊至16N_Z區塊之中的任一者、或是由儲存矩陣160~16N之一部分所組成的超級區塊,本發明並不加以限制。如第2A圖所示,區塊BLK儲存有映射表P2L以記錄資料之實體位址與邏輯位址之映射關係。然而,隨著區塊BLK的儲存容量之增加,其對應之映射表P2L之資料大小也隨之增加。由於快閃記憶體140內建的靜態隨機存取記憶體之儲存容量是有限的,過於龐大的映射表P2L可能會導致無法儲存於快閃記憶體140內建的靜態隨機存取記憶體, 或是,增加因為掉電所導致映射表P2L損毀或遺失的風險。尤其是當資料儲存裝置100沒有配置隨機存取記憶體180時,對於映射表P2L的儲存或維護將更為困難。
第2B圖係根據本案一種實施例所述之區塊BLK及其虛擬區塊與映射表之示意圖。在一實施例中,控制器120將區塊BLK分割為複數個虛擬區塊VB#1~VB#4。舉例而言,區塊BLK具有3072個頁面或1024條字元線(Word lines),虛擬區塊VB#1~VB#4之每一者具有768個頁面或256條字元線。此外,虛擬區塊VB#1~VB#4分別具有所對應之映射表P2L#1~P2L#4,並記錄於虛擬區塊VB#1~VB#4中的其中一個頁面或字元線。如第2B圖所示,虛擬區塊VB#1具有映射表P2L#1,虛擬區塊VB#2具有映射表P2L#2,以下類推。上述4個映射表P2L#1~P2L#4之總和即為第2A圖之原本映射表P2L。由此可知,每個映射表P2L#1~P2L#4之資料大小,小於原本映射表P2L之資料大小。因此,資料儲存裝置100能夠輕易儲存上述映射表P2L#1~P2L#4,不需要耗費許多儲存容量。
要注意的是,上述4個虛擬區塊VB#1~VB#4以及4個映射表P2L#1~P2L#4係用以說明本發明而非加以限制,本領域之技術人員可依據需求將區塊BLK切割為其他數量之虛擬區塊及其映射表。在一實施例中,控制器120將區塊BLK區分為該等虛擬區塊VB#1~VB#N之數量N係決定於映射表P2L之資料大小、以及儲存映射表P2L之快閃記憶體140或隨機存取記憶體180之儲存容量。舉例而言,原本映射表P2L之資料大小為2MB,一個頁面或字元之儲存容量為100KB,則控制器120將區 塊BLK切割為20個虛擬區塊VB#1~VB#20,並儲存20個映射表P2L#1~P2L#20(亦即N等於20),以符合資料大小以及儲存容量之需求。
詳細而言,每個映射表P2L#1~P2L#4係用以記錄快閃記憶體的複數物理位址(平面編號、區塊編號、頁面編號或單元編號)與複數邏輯位址的映射資訊。此外,映射表P2L#1~P2L#4更可以記錄資料的有效與否,亦可以記錄其對應虛擬區塊之可用頁面之數量。上述可用頁面係指該頁面並未發生損毀,可以正常進行資料的讀取與寫入。在另一實施例中,可用頁面係表示該頁面還有剩餘容量可以儲存資料。
每個虛擬區塊VB#1~VB#4分別具有所對應之映射表P2L#1~P2L#4,可以分別記錄物理位址與邏輯位址的映射關係,每個虛擬區塊VB#1~VB#4係彼此獨立存在。
在另一實施例中,當控制器120接收到主機200所傳送之抹除(erase)指令時,控制器120對需要抹除之區塊BLK之整體進行抹除,以清除區塊BLK所儲存之全部資料。換言之,在進行區塊BLK的抹除時,係以區塊BLK為整體考量,不探究其所包括的複數個虛擬區塊VB#1~VB#4。
由此可知,本發明之資料儲存方法係以虛擬區塊的方式進行資料管理,可套用相同的資料管理方法在各種規格的快閃記憶體140,不需因為快閃記憶體140的架構改變或容量增減而大幅修改原資料管理方法,並且可以降低掉電所導致映射表P2L損毀或遺失的風險。
第3圖係顯示根據本發明一實施例所述之資料儲 存方法之流程圖。在步驟S300中,控制器120選取快閃記憶體140之複數區塊之至少一區塊作為主動區塊,其中,主動區塊用以儲存來自於主機200的資料或是在垃圾回收(Garbage Collection)程序時作為目的區塊(Destination Block)。在下述說明中將以儲存來自於主機200的資料進行說明。
在步驟S302中,控制器120將主動區塊區分為複數個虛擬區塊VB#1~VB#N。在步驟S304中,控制器120選取其中之一虛擬區塊,例如,虛擬區塊VB#1。在步驟S306中,控制器120接收資料寫入指令,其中,資料寫入指令來自於資料儲存裝置100的外部,例如:主機200。
在步驟S308中,控制器120依據資料寫入指令而操作被選取的虛擬區塊,即虛擬區塊VB#1,以執行資料寫入。在步驟S310中,控制器120判斷虛擬區塊是否已寫滿資料。假設虛擬區塊VB#1具有768個頁面或256字元線,當767個頁面或255字元線已執行資料寫入而寫入資料後,則虛擬區塊VB#1已寫滿資料,第768個頁面或第256字元線不再寫入資料寫入指令所對應的使用者資料,而是寫入映射表P2L#1。
在步驟S312中,控制器120關閉虛擬區塊,即寫入關閉資訊(End of Block,EOB)至第768個頁面或第256字元線。其中,EOB記錄與虛擬區塊VB#1相關的資訊,例如:映射表P2L#1、有效頁總數、有效單元總數或有效資料總數。另外,有效頁總數、有效單元總數或有效資料總數的取得較佳於寫入EOB之前,由控制器120將映射表P2L#1與映射表L2P進行比對,如果映射表P2L#1與映射表L2P針對同一筆資料的邏輯位址 與實體位址皆相同,則此為有效資料,則有效頁總數、有效單元總數或有效資料總數加一;如果映射表P2L#1與映射表L2P針對同一筆資料的邏輯位址與實體位址並不相同,則此為無效資料。
在步驟S314中,控制器120判斷是否所有虛擬區塊已被選取過。由上述中可知,目前僅虛擬區塊VB#1被選取過,虛擬區塊VB#2~4未被選取過,因此,執行步驟S304,此時較佳選取虛擬區塊VB#2。於第四次執行步驟S314時,理論上所有的虛擬區塊已被選取過了,所以結束本發明資料儲存方法的執行。
第4圖係顯示根據本發明另一實施例所述之資料儲存方法之流程圖,本實施例與之前實施例的主要差別在於本實施例乃由主機200的中央處理器210執行資料儲存方法,而非資料儲存裝置100的控制器120,有效性列表bitMap乃由中央處理器210所建立,而非控制器120。資料儲存裝置100完成初始化之後,中央處理器210會要求控制器120,或者控制器120會主動,提供操作參數給中央處理器210,中央處理器210依據操作參數建立映射表L2P並輸出指令至控制器120以間接地控制快閃記憶體140的運作。在步驟S400中,中央處理器210選取快閃記憶體140之複數區塊之至少一區塊作為主動區塊,其中,主動區塊用以儲存來自於主機200的資料或是在垃圾回收(Garbage Collection)程序時作為目的區塊(Destination Block)。在下述說明中將以儲存來自於主機200的資料進行說明。
在步驟S402中,中央處理器210將主動區塊區分為複數個虛擬區塊VB#1~VB#N。在步驟S404中,中央處理器210選取其中之一虛擬區塊,例如,虛擬區塊VB#1。在步驟S406中,中央處理器210輸出資料寫入指令至控制器120,其中,資料寫入指令包括欲寫入的資料以及欲寫入的實體位址,較佳更包括欲寫入的資料的邏輯位址。
在步驟S408中,確認資料寫入指令執行完成。中央處理器210輸出資料寫入指令至控制器120後,由控制器120依據資料寫入指令而操作快閃記憶體140,例如,將欲寫入的資料寫入至欲寫入的實體位址。如果欲寫入的資料成功地寫入至欲寫入的實體位址,則控制器120回傳指令執行完成訊息至中央處理器210。當中央處理器210收到指令執行完成訊息時,即可確認資料寫入指令執行完成。
在步驟S410中,中央處理器210判斷虛擬區塊是否已寫滿資料。假設虛擬區塊VB#1具有768個頁面或256字元線,當767個頁面或255字元線已執行資料寫入而寫入資料後,則虛擬區塊VB#1已寫滿資料,第768個頁面或第256字元線不再寫入資料寫入指令所對應的使用者資料,而是寫入映射表P2L#1。
在步驟S412中,中央處理器210關閉虛擬區塊,即中央處理器210輸出資料寫入指令至控制器120,並要求控制器120將關閉資訊(End of Block,EOB)寫入至第768個頁面或第256字元線。其中,EOB記錄與虛擬區塊VB#1相關的資訊,例如:映射表P2L#1、有效頁總數、有效單元總數或有效資料總 數。另外,有效頁總數、有效單元總數或有效資料總數的取得較佳於寫入EOB之前,由中央處理器210將映射表P2L#1與映射表L2P進行比對,如果映射表P2L#1與映射表L2P針對同一筆資料的邏輯位址與實體位址皆相同,則此為有效資料,則有效頁總數、有效單元總數或有效資料總數加一;如果映射表P2L#1與映射表L2P針對同一筆資料的邏輯位址與實體位址並不相同,則此為無效資料。
在步驟S414中,中央處理器210判斷是否所有虛擬區塊已被選取過。由上述中可知,目前僅虛擬區塊VB#1被選取過,虛擬區塊VB#2~4未被選取過,因此,執行步驟S404,此時較佳選取虛擬區塊VB#2。於第四次執行步驟S414時,理論上所有的虛擬區塊已被選取過了,所以結束本發明資料儲存方法的執行。
第5A圖係根據本案一種實施例所述之區塊之示意圖。在此實施例中,資料儲存裝置100為4個通道與4個儲存矩陣之架構(亦即4CH4CE)。如第5A圖所示,區塊BLK係由CH0CE0、CH1CE0、CH0CE1以及CH1CE1等4個部分所組成。區塊BLK包括複數個有效頁面(以灰色表示)、複數個無效頁面(以白色表示)、以及映射表P2L。由於區塊BLK的頁面數量眾多,並且有效頁面為各處零散,因此造成儲存以及資料存取的困難。
第5B圖係根據本案一種實施例所述之區塊及其虛擬區塊與映射表之示意圖。在此實施例中,區塊BLK被區分為複數個虛擬區塊VB#1~VB#12,映射表P2L被區分為複數個映射 表P2L#1~P2L#12。每個映射表P2L#1~P2L#12記錄其對應虛擬區塊P2L#1~P2L#12之有效頁面之數量、以及其對應虛擬區塊P2L#1~P2L#12之邏輯位址與快閃記憶體140之物理位址的映射資訊。由第5B圖所示之有效頁面分布情況可得知,映射表P2L#1所紀錄之有效頁面數量為4,映射表P2L#2所紀錄之有效頁面數量為0,映射表P2L#3所紀錄之有效頁面數量為1,映射表P2L#4所紀錄之有效頁面數量為3。
由於映射表P2L#1、P2L#3~P2L#12所紀錄之有效頁面之數量不為0,因此控制器120對虛擬區塊VB#1、VB#3~VB#12執行垃圾回收程序。要注意的是,由於虛擬區塊P2L#2沒有任何有效頁面,因此虛擬區塊P2L#2不會用於進行資料存取或是垃圾回收等操作。第5C圖係根據本案一種實施例所述之藉由虛擬區塊與映射表執行垃圾回收流程之示意圖。由於垃圾回收程序係對虛擬區塊VB#1、VB#3~VB#12之有效頁面進行合併,經過垃圾回收程序之後,區塊BLK之有效頁面係重新配置並且集中於虛擬區塊VB#1~VB#6。因此,藉由本發明所提出之虛擬區塊之資料儲存方法,能夠增加執行垃圾回收程序之效率。
本發明資料儲存方法除了可以達到本發明的目的之外,更具有額外的優點。例如:於執行垃圾回收(Garbage Collection)程序時,可直接讀取來源區塊(Source Block)的虛擬區塊的EOB中有效頁總數、有效單元總數或有效資料總數,即可得知來源區塊的中的每一虛擬區塊的有效資料的總數。如果來源區塊的虛擬區塊,例如:虛擬區塊VB#3的有效資料的總 數為0,這表示虛擬區塊VB#3並不儲存任何有效資料,則可跳過虛擬區塊VB#3,直接進行虛擬區塊VB#4的有效資料的檢查。如果虛擬區塊VB#4的有效資料的總數大於0,例如:100,則控制器120可將映射表P2L#4與映射表L2P進行比對,以產生有效性列表bitMap,其中,有效性列表bitMap依序記錄每筆資料或每頁面的有效性,例如,資料有效則記錄為”1”,資料無效則記錄為”0”,最後,控制器120可依序將”1”所對應的有效資料搬移至目的區塊。
在本說明書以及申請專利範圍中的序數,例如「第一」、「第二」、「第三」等等,彼此之間並沒有順序上的先後關係,其僅用於標示區分兩個具有相同名字之不同元件。本發明說明書中「耦接」一詞係泛指各種直接或間接之電性連接方式。本發明雖以較佳實施例揭露如上,然其並非用以限定本發明的範圍,任何熟習此項技藝者,在不脫離本發明之精神和範圍內,當可做些許的更動與潤飾,因此本發明之保護範圍當視後附之申請專利範圍所界定者為準。
Claims (20)
- 一種資料儲存方法,應用於一資料儲存裝置,該資料儲存裝置包括一快閃記憶體、一控制器以及一隨機存取記憶體,該資料儲存方法包括:將該快閃記憶體之複數區塊之一主動區塊區分為複數個虛擬區塊;選取該等虛擬區塊之其中一者對資料進行存取;以及對該虛擬區塊配置其對應之映射表,其中該映射表係用以記錄複數邏輯位址與該快閃記憶體的複數物理位址的映射資訊、以及記錄該虛擬區塊之有效頁面之數量。
- 如申請專利範圍第1項所述之資料儲存方法,其中,該等映射表係儲存於該快閃記憶體或是該隨機存取記憶體。
- 如申請專利範圍第2項所述之資料儲存方法,更包括:依據該映射表之資料大小、以及儲存該映射表之該快閃記憶體或該隨機存取記憶體之儲存容量,決定將該區塊區分為該等虛擬區塊之數量。
- 如申請專利範圍第1項所述之資料儲存方法,更包括:判斷該等映射表之每一者所紀錄之該有效頁面之數量是否為零,並且當該有效頁面之數量大於零時,對該有效頁面之數量大於零所對應之該虛擬區塊執行垃圾回收(Garbage Collection)流程。
- 如申請專利範圍第4項所述之資料儲存方法,其中該主動區塊用以儲存來自該主機的該資料或是在該垃圾回收流程時作為目的區塊。
- 如申請專利範圍第4項所述之資料儲存方法,其中,該垃圾回收流程係用以對該虛擬區塊之有效頁面進行合併。
- 如申請專利範圍第1項所述之資料儲存方法,其中,當接收到一抹除(erase)指令時,藉由該控制器對需要抹除之該區塊之整體進行抹除。
- 如申請專利範圍第1項所述之資料儲存方法,其中,當接收到一資料寫入指令時,依據該資料寫入指令對所選取的該虛擬區塊進行資料的寫入,並且判斷該虛擬區塊是否已寫滿該資料。
- 如申請專利範圍第8項所述之資料儲存方法,其中,當該虛擬區塊已寫滿該資料,則關閉該虛擬區塊,並且判斷是否該等虛擬區塊之每一者都已被選取過。
- 如申請專利範圍第9項所述之資料儲存方法,其中,當該等虛擬區塊之每一者並非都已被選取過,則選取不同於該虛擬區塊之另一虛擬區塊以進行資料的存取。
- 一種資料儲存裝置,包括:一快閃記憶體,包括複數個區塊(block),其中該等區塊之每一者包括複數個頁面(page);以及一控制器,操作該快閃記憶體以儲存複數筆資料,以及將該等區塊之一主動區塊區分為複數個虛擬區塊,選取該等虛擬區塊之其中一者對資料進行存取,該虛擬區塊具有其對應之映射表,該映射表係用以記錄複數邏輯位址與該快閃記憶體的複數物理位址的映射資訊、以及記錄該虛擬區塊之有效頁面之數量。
- 如申請專利範圍第11項所述之資料儲存裝置,其中,該等映射表係儲存於該快閃記憶體或是該資料儲存裝置之一隨機存取記憶體。
- 如申請專利範圍第12項所述之資料儲存裝置,其中,該控制器將該區塊區分為該等虛擬區塊之數量係決定於該映射表之資料大小、以及儲存該映射表之該快閃記憶體或該隨機存取記憶體之儲存容量。
- 如申請專利範圍第11項所述之資料儲存裝置,其中,該控制器判斷該等映射表之每一者所紀錄之該有效頁面之數量是否為零,並且當該有效頁面之數量大於零時,該控制器對該有效頁面之數量大於零所對應之該虛擬區塊執行垃圾回收(Garbage Collection)流程。
- 如申請專利範圍第14項所述之資料儲存裝置,其中該主動區塊用以儲存來自該主機的該資料或是在該垃圾回收流程時作為目的區塊。
- 如申請專利範圍第11項所述之資料儲存裝置,其中,當該控制器接收到一抹除(erase)指令時,該控制器對需要抹除之該區塊之整體進行抹除。
- 如申請專利範圍第11項所述之資料儲存裝置,其中,當該控制器接收到一資料寫入指令時,該控制器依據該資料寫入指令對所選取的該虛擬區塊進行該等資料的寫入,並且判斷該虛擬區塊是否已寫滿該資料。
- 一種資料儲存方法,應用於一資料儲存裝置,該資料儲存裝置包括一快閃記憶體、一控制器以及一隨機存取記憶 體,該資料儲存方法包括:將該快閃記憶體之複數區塊之一主動區塊區分為複數個虛擬區塊;選取該等虛擬區塊之其中一者對一資料進行存取;輸出一資料寫入指令;以及確認該資料寫入指令是否執行完成,並且判斷被選取之該虛擬區塊是否已寫滿該資料。
- 如申請專利範圍第18項所述之資料儲存方法,其中,當該虛擬區塊已寫滿該資料,則關閉該虛擬區塊,並且判斷是否該等虛擬區塊之每一者都已被選取過。
- 如申請專利範圍第19項所述之資料儲存方法,其中,當該等虛擬區塊之每一者並非都已被選取過,則選取不同於該虛擬區塊之另一虛擬區塊以進行資料的存取。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW106131913A TWI679534B (zh) | 2017-09-18 | 2017-09-18 | 資料儲存裝置以及資料儲存方法 |
CN201711104176.1A CN109521944B (zh) | 2017-09-18 | 2017-11-10 | 数据储存装置以及数据储存方法 |
US16/028,005 US10929303B2 (en) | 2017-09-18 | 2018-07-05 | Data storage device utilizing virtual blocks to improve performance and data storage method thereof |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW106131913A TWI679534B (zh) | 2017-09-18 | 2017-09-18 | 資料儲存裝置以及資料儲存方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201915739A true TW201915739A (zh) | 2019-04-16 |
TWI679534B TWI679534B (zh) | 2019-12-11 |
Family
ID=65719302
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW106131913A TWI679534B (zh) | 2017-09-18 | 2017-09-18 | 資料儲存裝置以及資料儲存方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10929303B2 (zh) |
CN (1) | CN109521944B (zh) |
TW (1) | TWI679534B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI698744B (zh) * | 2019-04-10 | 2020-07-11 | 慧榮科技股份有限公司 | 資料儲存裝置及邏輯至物理位址映射表之更新方法 |
KR20210063764A (ko) * | 2019-11-25 | 2021-06-02 | 에스케이하이닉스 주식회사 | 메모리 시스템의 동작 방법 및 장치 |
CN113495681B (zh) * | 2020-04-07 | 2024-09-24 | 杭州萤石软件有限公司 | 一种nand flash文件数据存取方法、装置及存储介质 |
US11556467B1 (en) * | 2021-07-13 | 2023-01-17 | Micron Technology, Inc. | Optimizing garbage collection that uses a logical-to-physical table search |
JP2023044824A (ja) * | 2021-09-21 | 2023-04-03 | キオクシア株式会社 | メモリシステム |
Family Cites Families (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6978342B1 (en) * | 1995-07-31 | 2005-12-20 | Lexar Media, Inc. | Moving sectors within a block of information in a flash memory mass storage architecture |
TW368626B (en) * | 1998-04-17 | 1999-09-01 | Winbond Electronics Corp | Microprocessor with self-programmed embedded flash memory and programming method |
JP2002063797A (ja) * | 2000-08-22 | 2002-02-28 | Mitsubishi Electric Corp | 不揮発性半導体記憶装置 |
TWI264678B (en) * | 2001-08-31 | 2006-10-21 | Key Technology Corp | Control device adapted to flash memory card and method for constructing the same |
CN1447242A (zh) * | 2002-03-25 | 2003-10-08 | 太和科技股份有限公司 | 可适用于快闪存储卡的控制装置及其建构方法 |
CN1534509A (zh) * | 2003-03-27 | 2004-10-06 | 太和科技股份有限公司 | 具有快速且预防不当操作功效的快闪记忆体演算法及其控制系统 |
TWI249670B (en) * | 2004-04-29 | 2006-02-21 | Mediatek Inc | System and method capable of sequentially writing a flash memory |
KR100789406B1 (ko) * | 2006-11-03 | 2007-12-28 | 삼성전자주식회사 | 플래시 메모리 시스템 및 그것의 가비지 컬렉션 방법 |
KR20080085574A (ko) * | 2007-03-20 | 2008-09-24 | 삼성전자주식회사 | 비휘발성 메모리의 가비지 컬렉션을 위한 장치 및 방법 |
US7975109B2 (en) * | 2007-05-30 | 2011-07-05 | Schooner Information Technology, Inc. | System including a fine-grained memory and a less-fine-grained memory |
KR101119866B1 (ko) * | 2010-04-16 | 2012-02-22 | 삼성전자주식회사 | 파티션별로 플랙시블한 크기의 로그블록을 포함하는 플래시 메모리 및 이를 이용한 메모리 시스템 |
CN104040515B (zh) * | 2011-09-30 | 2018-05-11 | 英特尔公司 | 在逻辑驱动器模型下呈现直接存取的存储设备 |
TWI544334B (zh) * | 2012-05-30 | 2016-08-01 | 慧榮科技股份有限公司 | 資料儲存裝置與資料儲存裝置操作方法 |
CN103530062B (zh) * | 2012-07-03 | 2016-12-21 | 群联电子股份有限公司 | 数据存储方法、存储器控制器与存储器存储装置 |
CN103020550B (zh) * | 2012-12-03 | 2016-08-17 | 记忆科技(深圳)有限公司 | 一种固态硬盘及其安全访问方法、固态硬盘系统 |
US9201786B2 (en) * | 2012-12-21 | 2015-12-01 | Kabushiki Kaisha Toshiba | Memory controller and memory system |
JP2014194634A (ja) * | 2013-03-28 | 2014-10-09 | Sony Corp | 情報処理装置、情報処理方法、並びに記録媒体 |
TWI548990B (zh) * | 2013-05-17 | 2016-09-11 | 宇瞻科技股份有限公司 | 記憶體儲存裝置及其還原方法與記憶體控制器 |
CN106326134B (zh) * | 2015-06-30 | 2019-10-01 | 华为技术有限公司 | Ftl地址映射的方法及装置 |
US20170010810A1 (en) * | 2015-07-06 | 2017-01-12 | CNEXLABS, Inc. a Delaware Corporation | Method and Apparatus for Providing Wear Leveling to Non-Volatile Memory with Limited Program Cycles Using Flash Translation Layer |
CN106557432B (zh) * | 2015-09-29 | 2019-08-06 | 群联电子股份有限公司 | 缓冲存储器管理方法、存储器控制电路单元及存储装置 |
US9983829B2 (en) * | 2016-01-13 | 2018-05-29 | Sandisk Technologies Llc | Physical addressing schemes for non-volatile memory systems employing multi-die interleave schemes |
TWI599880B (zh) * | 2016-03-22 | 2017-09-21 | 威盛電子股份有限公司 | 非揮發性記憶體裝置及其操作方法 |
-
2017
- 2017-09-18 TW TW106131913A patent/TWI679534B/zh active
- 2017-11-10 CN CN201711104176.1A patent/CN109521944B/zh active Active
-
2018
- 2018-07-05 US US16/028,005 patent/US10929303B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
CN109521944A (zh) | 2019-03-26 |
US20190087349A1 (en) | 2019-03-21 |
TWI679534B (zh) | 2019-12-11 |
CN109521944B (zh) | 2022-09-30 |
US10929303B2 (en) | 2021-02-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI679534B (zh) | 資料儲存裝置以及資料儲存方法 | |
US10657047B2 (en) | Data storage device and method of performing partial garbage collection | |
US10761780B2 (en) | Memory system | |
TWI634424B (zh) | 資料儲存裝置以及其操作方法 | |
JP4713867B2 (ja) | メモリコントローラ,メモリ装置及びメモリコントローラの制御方法 | |
US10545876B2 (en) | Control unit for data storage system and method for updating logical-to-physical mapping table | |
CN112765006B (zh) | 固态硬盘日志生成方法及其固态硬盘 | |
TWI510923B (zh) | 資料儲存裝置以及快閃記憶體控制方法 | |
JP7358594B2 (ja) | メモリシステム | |
KR102652694B1 (ko) | 서브 블록 모드를 사용한 구역 네임스페이스 제한 완화 | |
US11210020B2 (en) | Methods and systems for accessing a memory | |
CN107957961A (zh) | 存储设备、存储系统和计算设备 | |
CN110764691B (zh) | 数据储存装置以及非挥发式存储器控制方法 | |
JP2018101411A (ja) | データストレージデバイスおよびその操作方法 | |
TWI718709B (zh) | 資料儲存裝置以及非揮發式記憶體控制方法 | |
TW201935223A (zh) | 記憶體系統及其控制方法 | |
JP2011039585A (ja) | 不揮発性ランダムアクセスメモリおよび不揮発性メモリシステム | |
TWI726381B (zh) | 資料儲存裝置以及非揮發式記憶體控制方法 | |
US10168901B2 (en) | Memory system, information processing apparatus, control method, and initialization apparatus | |
US11934706B2 (en) | Smart relocation scan optimization | |
US11269534B2 (en) | Data storage device and non-volatile memory control method | |
KR20150139383A (ko) | 반도체 장치 | |
TWI705328B (zh) | 資料儲存裝置以及非揮發式記憶體控制方法 | |
US12056045B2 (en) | Scratchpad cache for gaming and IoT hosts | |
US11874771B2 (en) | Multiple indirection sizes for logical-to-physical translation tables |