CN109582216B - 数据储存装置与存储器装置的数据处理方法 - Google Patents
数据储存装置与存储器装置的数据处理方法 Download PDFInfo
- Publication number
- CN109582216B CN109582216B CN201810494085.1A CN201810494085A CN109582216B CN 109582216 B CN109582216 B CN 109582216B CN 201810494085 A CN201810494085 A CN 201810494085A CN 109582216 B CN109582216 B CN 109582216B
- Authority
- CN
- China
- Prior art keywords
- block
- garbage collection
- memory
- memory block
- controller
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000013500 data storage Methods 0.000 title claims abstract description 28
- 238000003672 processing method Methods 0.000 title claims description 10
- 230000015654 memory Effects 0.000 claims abstract description 178
- 238000000034 method Methods 0.000 claims abstract description 89
- 230000001960 triggered effect Effects 0.000 claims abstract description 24
- 238000012937 correction Methods 0.000 claims abstract description 4
- 230000002950 deficient Effects 0.000 claims description 16
- 238000013507 mapping Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 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
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1048—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1048—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
- G06F11/106—Correcting systematically all correctable errors, i.e. scrubbing
-
- 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
- G06F3/0607—Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1068—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- 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/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/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0647—Migration mechanisms
-
- G—PHYSICS
- G06—COMPUTING; 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/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/52—Protection of memory contents; Detection of errors in memory contents
-
- 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/20—Employing a main memory using a specific memory technology
- G06F2212/202—Non-volatile memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7205—Cleaning, compaction, garbage collection, erase control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- 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
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; 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]
Abstract
本发明涉及一种数据储存装置与存储器装置,包括一存储器装置以及一控制器。存储器装置包括多个存储器区块,各存储器区块包括多个页面。控制器耦接至存储器装置,并且包括一错误更正码引擎,用以对存储器区块所储存的数据进行检查及更正错误。当存储器区块之一者的一页面所储存的数据包含无法更正的错误或者该页面所包含的错误位元的数量大于一临界值时,控制器将该存储器区块的一区块编号加入一既定伫列,并且于一垃圾回收程序被触发时,对该存储器区块执行垃圾回收。
Description
技术领域
本发明有关于一种适用于快闪存储器装置的数据处理方法,可有效率地处理存储器装置所储存的数据,以提升存储器装置的效能。
背景技术
随着数据储存装置的科技在近几年快速地成长,许多数据储存装置,如符合SD/MMC规格、CF规格、MS规格与XD规格的记忆卡、固态硬碟、内嵌式存储器(embedded MultiMedia Card,缩写为eMMC)以及通用快闪存储器(Universal Flash Storage,缩写为UFS)已经广泛地被应用在多种用途上。因此,在这些数据储存装置上,有效的存取控制也变成一个重要的议题。
本发明提出一种新的数据处理方法,可有效率地处理存储器装置所储存的数据,以提升存储器装置的效能。
发明内容
本发明提出一种数据储存装置,包括一存储器装置以及一控制器。存储器装置包括多个存储器区块,各存储器区块包括多个页面。控制器耦接至存储器装置,并且包括一错误更正码引擎,用以对存储器区块所储存的数据进行检查及更正错误。当存储器区块之一者的一页面所包含的错误位元的数量大于一临界值时,控制器将该存储器区块的一区块编号加入一既定伫列,并且于一垃圾回收程序被触发时,对该存储器区块执行垃圾回收。
本发明另提出一种存储器装置的数据处理方法,适用于一数据储存装置,数据储存装置包括一存储器装置与一控制器,存储器装置包括多个存储器区块,各存储器区块包括多个页面,该方法包括:对存储器区块所储存的数据进行检查及更正错误,以判断是否存储器区块之一者的一页面所包含的错误位元的数量大于一临界值;当存储器区块之一者的一页面所包含的错误位元的数量大于该临界值时,将该存储器区块的一区块编号加入一既定伫列;以及于一垃圾回收程序被触发时,对该存储器区块执行垃圾回收。
附图说明
图1A是显示根据本发明的一实施例所述的电子装置范例方块图。
图1B是显示根据本发明的另一实施例所述的电子装置范例方块图。
图2是显示根据本发明的一实施例所述数据处理方法流程图。
图3A与3B是显示根据本发明的一实施例所述的执行垃圾回收程序的流程图。
符号说明
100-数据储存装置;
110A、110B-控制器;
111-微处理器;
112、SRAM-静态随机存取存储器;
113、ROM-只读存储器;
114-ECC引擎;
120-存储器装置;
200-主机装置;
210-接口;
300A、300B-电子装置。
具体实施方式
为让本发明的目的、特征和优点能更明显易懂,下文特举出本发明的具体实施例,并配合附图,作详细说明如下。目的在于说明本发明的精神而非用以限定本发明的保护范围,应理解下列实施例可经由软件、硬件、固件、或上述任意组合来实现。
图1A是显示根据本发明的一实施例所述的数据储存装置方块图。电子装置300A可包括主机装置200与数据储存装置100。电子装置300A可为移动装置,例如智慧型手机、智慧型手表或平板电脑,但不以此为限。
根据本发明的一实施例,数据储存装置100可包括控制器110A与存储器装置120。控制器110A可至少包括一微处理器111、静态随机存取存储器(Static Random AccessMemory,缩写为SRAM)112、只读存储器(ROM)113与一错误更正码(Error Correction Code,缩写为ECC)引擎114。存储器装置120可包括一或多个非挥发性存储器,例如,快闪存储器。
微处理器111可执行运算,并且控制控制器110A内的电路与装置的运作。静态随机存取存储器112与只读存储器113用以储存系统数据。ECC引擎114可根据欲写入存储器装置的数据内容产生同位检查(parity check)位元,用以对存储器装置所储存的数据进行检查及更正错误。
主机装置200与数据储存装置100可透过一既定接口210相互连接。例如,当数据储存装置100符合通用快闪存储器(Universal Flash Storage,缩写为UFS)的规范时,接口210可为UFS接口,且数据储存装置100可透过接口210与主机装置200连接。又例如,当数据储存装置100包含符合内嵌式存储器(embedded Multi Media Card,缩写为eMMC)的规范时,接口210可为MMC接口,且数据储存装置100可透过接口210与主机装置200连接。
图1B是显示根据本发明的另一实施例所述的电子装置300B范例方块图。于此实施例中,SRAM 112被配置于控制器110B外部,并且耦接至控制器110B。
值得注意的是,为简化说明,图1A与图1B仅显示与本发明相关的元件,并且图1A与图1B仅显示多种可应用本发明的架构的其中两种。然而,本发明的实施并不仅限于图1A与图1B所示的元件与架构。
根据本发明的一实施例,存储器装置120包括多个存储器区块。存储器区块可为多个单层单元(Single Level Cell,缩写为SLC)区块及/或多个多层单元区块(MultipleLevel Cell,缩写为MLC)区块。SLC区块的每个存储器单元中储存一个位元数据,MLC区块的每个存储器单元中储存多个位元数据。例如,根据本发明的一实施例,MLC区块的每个存储器单元中储存两个位元数据。根据本发明的另一实施例,多层单元区块可为三层单元(Triple Level Cell,缩写为TLC)区块,TLC区块的每个存储器单元中储存三个位元数据。
各存储器区块可包括多个页面,通常在快闪存储器中,一个页面为一个写入作业的最小数据块单位,而一个区块为一个抹除作业的最小数据块单位。一个物理页面的大小为固定的,而一个逻辑页面的大小则可根据固件编程需求弹性地被设计。
如上述,ECC引擎114可根据欲写入存储器装置的数据内容产生同位检查(paritycheck)位元,用以对存储器装置所储存的数据进行检查及更正错误。于现今设计中,当检测到一页面所储存的数据包含无法更正的错误(即,无法藉由错误更正码更正的错误(Uncorrectable ECC Error,缩写为UECC Error),或者该页面所包含的错误位元的数量大于一临界值时,便会将该页面所属的存储器区块标记为一损坏区块(mark bad)。
一般而言,控制器110A/110B可将存储器区块所对应的区块编号记录于一损坏区块表格中。于损坏区块表格中所记录的存储器区块,将被转变为只读模式。亦即,尔后控制器110A/110B仅能对损坏区块进行读取操作,而无法再对损坏区块进行写入、抹除、垃圾回收等其他动作。损坏区块也不会再被释放成为可用的存储器区块。
然而,因损坏区块仍可被读取,将导致损坏区块中的有效页面被损坏的风险被提高。在此,有效页面代表该页面所储存的数据所指向的逻辑页面未与其他页面中所储存的数据所指向的逻辑页面重复,也就是该页面所储存的数据为最新的数据,并且该页面尚未被删除其于逻辑实体映射表(Logical to Physical mapping table)中的映射关系。当一页面所储存的数据为某逻辑页面的最新数据且该逻辑页面于逻辑实体映射表中的映射关系未被删除时,该页面被认定为有效页面。
承上,当存储器区块被标记为损坏区块后,会成为只读存储器,因此无法再将该存储器区块的有效页面的数据搬移。此时,若该存储器区块的有效页面经历多次读取后可能也会损坏,造成使用者不乐见的数据错误的问题。
为了解决上述问题,本发明提出一种数据处理方法,当检测到一页面所储存的数据包含无法更正的错误,或者该页面所包含的错误位元的数量大于一临界值时,并不会直接将该页面所属的存储器区块标记为一损坏区块,而是待控制器110A/110B将该存储器区块中所有有效页面搬移至一目的区块后,才将该存储器区块标记为一损坏区块,以避免发生上述的问题。以下段落将针对本发明所提出的数据处理方法做更进一步说明。
根据本发明的一实施例,当控制器110A/110B或ECC引擎114检测到一页面(以下称为损坏页面)所储存的数据包含无法更正的错误,或者该页面所包含的错误位元的数量大于一临界值时,并不会直接将该损坏页面所属的存储器区块(以下称为既定存储器区块)标记为一损坏区块,而是由控制器110A/110B将此既定存储器区块所对应的一区块编号加入一既定伫列(queue)中。尔后,于一垃圾回收(garbage collection)程序被触发时,控制器110A/110B将对此既定存储器区块执行垃圾回收。
值得注意的是,于本发明的实施例中,于控制器110A/110B对此既定存储器区块完成垃圾回收程序前,控制器110A/110B不会将此既定存储器区块标记为一损坏区块。亦即,控制器110A/110B不会将此既定存储器区块所对应的区块编号记录于一损坏区块表格中。
于本发明的实施例中,当一垃圾回收程序被触发时,控制器110A/110B对此既定存储器区块执行垃圾回收,用以将此既定存储器区块中所有有效页面(即,有效且未损坏的页面)搬移至一目的区块(即,目的存储器区块)。待控制器110A/110B将此既定存储器区块中所有有效页面搬移至目的区块后,控制器110A/110B才会将此既定存储器区块标记为一损坏区块。其中,所述的数据搬移包含复制(自来源区块复制)及写入(写入至目的区块)的操作。
于垃圾回收程序中,控制器110A/110B选择来源区块(即,来源存储器区块),读取来源区块中有效页面的数据,并将数据写入目的区块。根据本发明的一实施例,待既定存储器区块中所有有效页面的数据被搬移至目的区块后,此既定存储器区块会被标记为一损坏区块。而对于其他并未包含损坏页面的存储器区块,在数据搬移后便可被释放,并且可于后续操作中被使用。
图2是显示根据本发明的一实施例所述数据处理方法流程图。首先,ECC引擎114对存储器区块所储存的数据进行检查及更正错误(步骤S202),以判断是否有任一页面所包含的错误位元的数量大于一临界值。根据本发明的一实施例,步骤S202可于读取数据时被执行。例如,当主机装置200欲自存储器装置120读取数据,或者当控制器110A/110B欲自存储器装置120读取数据时,可执行步骤S202。根据本发明的另一实施例,步骤S202可于执行垃圾回收时被执行。例如,当控制器110A/110B欲对一存储器区块执行垃圾回收时,可指示ECC引擎114对存储器区块所储存的数据进行检查及更正错误。
当ECC引擎114检查到错误位元,便会尝试更正错误位元。举例而言,ECC引擎114可判断错误位元的数量是否大于一最大可更正数量。若错误位元的数量未多于最大可更正数量,则ECC引擎114可更正错误位元。若错误位元的数量多于最大可更正数量,则表示ECC引擎114已无法更正错误。换言之,根据本发明的一实施例,当一页面所包含的错误位元的数量大于临界值(例如,最大可更正数量)时,ECC引擎114可判断页面的数据包含无法更正之错误。
于本发明的实施例中,控制器110A/110B或ECC引擎114可判断一页面所包含的错误位元的数量是否大于一临界值(步骤S204),其中,临界值可被设定为等于或不等于上述最大可更正数量。一般而言,临界值可被设定为小于ECC引擎114的最大可更正数量。
当控制器110A/110B或ECC引擎114判断一页面为一损坏页面时(即,该页面所包含的错误位元的数量大于一临界值时),控制器110A/110B将包含此损坏页面的既定存储器区块的一区块编号加入一既定伫列(步骤S206)。尔后,于一垃圾回收(garbage collection)程序被触发时,控制器110A/110B将对此既定存储器区块执行垃圾回收。
根据本发明的一实施例,控制器110A/110B可根据既定伫列执行垃圾回收。根据本发明的另一实施例,控制器110A/110B亦可不根据既定伫列执行垃圾回收。以下将做更详细的说明。
垃圾回收程序通常可被分为一般垃圾回收程序与特殊垃圾回收程序。于执行一般垃圾回收程序时,控制器110A/110B会以存储器区块所对应的一有效页面计数值VP_Count作为依据挑选来源区块。一般而言,控制器110A/110B会优先选择有效页面计数值VP_Count小的存储器区块作为来源区块,以执行垃圾回收。
控制器110A/110B可于SRAM 112或存储器装置120内建立一有效页面计数值表格,用以记录各存储器区块所对应的一有效页面计数值VP_Count,其中用于记录的页面的单位可以是一个逻辑页面。因此,VP_Count的最大值为一存储器区块所包含的逻辑页面数量,最小值为0。控制器110A/110B通常可于每次写入操作后更新有效页面计数值表格的内容。
另一方面,于执行特殊垃圾回收程序时,控制器110A/110B会根据一特殊垃圾回收伫列挑选来源区块。特殊垃圾回收伫列记录系统欲进行垃圾回收的存储器区块所对应的区块编号。举例而言,当控制器110A/110B判断一存储器区块或一页面被抹除的次数大于一抹除临界值、被读取的次数大于一读取临界值、所包含的错误位元的数量大于一临界值或具有其他特殊情况时,将该存储器区块或该页面所属的存储器区块所对应的区块编号加入特殊垃圾回收伫列。
于执行特殊垃圾回收程序时,控制器110A/110B会依照特殊垃圾回收伫列中所记录的区块编号的顺序,依序选择对应的存储器区块作为来源区块,执行垃圾回收。
此外,控制器110A/110B会依据数据储存装置100当下的系统需求决定要执行一般垃圾回收程序抑或特殊垃圾回收程序。举例而言,当数据储存装置的备用区块小于一既定值时,控制器110A/110B会决定执行一般垃圾回收程序。
于本发明的第一方面实施例中,所述的既定伫列为特殊垃圾回收伫列。亦即,当控制器110A/110B或ECC引擎114判断一页面为损坏页面时,控制器110A/110B将包含此损坏页面的既定存储器区块之一区块编号加入特殊垃圾回收伫列中。尔后,于一般垃圾回收程序或特殊垃圾回收程序被触发时,控制器110A/110B将对此既定存储器区块执行垃圾回收。
根据本发明的第一方面的第一实施例,当特殊垃圾回收程序被触发时,控制器110A/110B可根据特殊垃圾回收伫列执行垃圾回收。由于控制器110A/110B已将此既定存储器区块的一区块编号加入特殊垃圾回收伫列中,如此一来,控制器110A/110B可根据特殊垃圾回收伫列对此既定存储器区块执行垃圾回收。
当控制器110A/110B于特殊垃圾回收程序中将此既定存储器区块中所有有效页面搬移至目的区块后,便可将此既定存储器区块标记为一损坏区块,并且可将此既定存储器区块所对应的区块编号自特殊垃圾回收伫列中移除。
当执行目前特殊垃圾回收程序所使用的目的区块已被写满时,目前特殊垃圾回收程序便会结束。
值得注意的是,若目的区块已被写满,但此既定存储器区块中所有有效页面并未全部被搬移至目的区块时,由于此既定存储器区块所对应的区块编号仍被记录于特殊垃圾回收伫列中,因此,于下一个特殊垃圾回收程序被触发时,控制器110A/110B会优先地选择此既定存储器区块作为一来源区块,用以于下一次一般垃圾回收程序中优先完成此既定存储器区块有效页面的搬移。
此外,值得注意的是,于此情形下,控制器110A/110B亦可动态调整此既定存储器区块所对应的区块编号于特殊垃圾回收伫列的顺序,以确保于下一次特殊垃圾回收程序被触发时,控制器110A/110B可优先地选择此既定存储器区块作为一来源区块。
根据本发明的第一方面的第二实施例,当一般垃圾回收程序被触发时,控制器110A/110B可不根据既定伫列执行垃圾回收。如上述,控制器110A/110B可以存储器区块所对应的一有效页面计数值VP_Count作为依据挑选来源区块。因此,当包含损坏页面的既定存储器区块的有效页面计数值VP_Count相对小或足够小时,控制器110A/110B便有机会于目前的一般垃圾回收程序中对此既定存储器区块执行垃圾回收。
当控制器110A/110B于一般垃圾回收程序中将此既定存储器区块中所有有效页面搬移至目的区块后,便可将此既定存储器区块标记为一损坏区块。
当执行目前一般垃圾回收程序所使用的目的区块已被写满时,目前一般垃圾回收程序便会结束。
值得注意的是,若目的区块已被写满,但并非此既定存储器区块中所有有效页面都已被搬移至目的区块时,控制器110A/110B可利用一变数记录此既定存储器区块所对应的区块编号。因此,于下一次一般垃圾回收程序被触发时,控制器110A/110B可先检查该变数是否有记录一区块编号。当该变数记录有此既定存储器区块所对应的区块编号时,控制器110A/110B会于下一次一般垃圾回收程序中,优先地选择此既定存储器区块作为一来源区块,用以于下一次一般垃圾回收程序中优先完成此既定存储器区块有效页面的搬移。换言之,即使既定存储器区块的有效页面计数值VP_Count并非最小的,控制器110A/110B仍会于下一次一般垃圾回收程序中,优先地选择此既定存储器区块作为一来源区块。
此外,值得注意的是,当控制器110A/110B于执行一般垃圾回收程序时,检测出另一存储器区块包含损坏页面时,亦可直接如上所述,于此存储器区块中所有有效页面搬移至目的区块后,将此存储器区块标记为一损坏区块,或者于目前一般垃圾回收程序结束但尚未将此存储器区块中所有有效页面搬移至目的区块时,利用一变数记录此存储器区块所对应的区块编号,用以于下一次一般垃圾回收程序中优先完成此存储器区块有效页面的搬移。
另一方面,于本发明的第二方面实施例中,所述的既定伫列为不同于特殊垃圾回收伫列的一UECC垃圾回收伫列。亦即,当控制器110A/110B或ECC引擎114判断一页面为损坏页面时,控制器110A/110B将包含此损坏页面的既定存储器区块的一区块编号加入UECC垃圾回收伫列中。尔后,于一般垃圾回收程序或特殊垃圾回收程序被触发时,控制器110A/110B将优先对UECC垃圾回收伫列中所记录的存储器区块执行垃圾回收。
因此,于本发明的第二方面实施例中,无论是一般垃圾回收程序或特殊垃圾回收程序被触发时,控制器110A/110B都会优先检查UECC垃圾回收伫列中是否有记录任何存储器区块所对应的区块编号。若有,将优先对UECC垃圾回收伫列中所记录的存储器区块执行垃圾回收。
根据本发明的第二方面的第一实施例,当特殊垃圾回收程序被触发时,控制器110A/110B可先根据UECC垃圾回收伫列执行垃圾回收,再根据特殊垃圾回收伫列执行垃圾回收。
同样地,当控制器110A/110B于特殊垃圾回收程序中将此既定存储器区块中所有有效页面搬移至目的区块后,便可将此既定存储器区块标记为一损坏区块,并且可将此既定存储器区块所对应的区块编号自UECC垃圾回收伫列中移除。
当执行目前特殊垃圾回收程序所使用的目的区块已被写满时,目前特殊垃圾回收程序便会结束。
值得注意的是,若目的区块已被写满,但并非此既定存储器区块中所有有效页面都已被搬移至目的区块时,由于此既定存储器区块所对应的区块编号仍记录于UECC垃圾回收伫列中,因此,于下一次特殊垃圾回收程序或下一次一般垃圾回收程序被触发时,控制器110A/110B会优先地选择此既定存储器区块作为一来源区块。
根据本发明的第二方面的第二实施例,当一般垃圾回收程序被触发时,控制器110A/110B可先根据UECC垃圾回收伫列执行垃圾回收,再根据存储器区块所对应的一有效页面计数值VP_Count作为依据挑选来源区块执行垃圾回收。
当控制器110A/110B于一般垃圾回收程序中将此既定存储器区块中所有有效页面搬移至目的区块后,便可将此既定存储器区块标记为一损坏区块,并且可将此既定存储器区块所对应的区块编号自UECC垃圾回收伫列中移除。
当执行目前一般垃圾回收程序所使用的目的区块已被写满时,目前一般垃圾回收程序便会结束。
值得注意的是,若目的区块已被写满,但并非此既定存储器区块中所有有效页面都已被搬移至目的区块时,由于此既定存储器区块所对应的区块编号仍记录于UECC垃圾回收伫列中,因此,于下一次特殊垃圾回收程序或下一次一般垃圾回收程序被触发时,控制器110A/110B会优先地选择此既定存储器区块作为一来源区块。
此外,值得注意的是,当控制器110A/110B于执行一般垃圾回收程序时,检测出另一存储器区块包含损坏页面时,亦可直接如上所述,于此存储器区块中所有有效页面搬移至目的区块后,将此存储器区块标记为一损坏区块,或者于目前一般垃圾回收程序结束但尚未将此存储器区块中所有有效页面搬移至目的区块时,将此存储器区块所对应的区块编号记录于UECC垃圾回收伫列中。如此一来,于下一次特殊垃圾回收程序或下一次一般垃圾回收程序被触发时,控制器110A/110B会优先地选择此既定存储器区块作为一来源区块,用以于下一次垃圾回收程序中优先完成此存储器区块有效页面的搬移。
图3A与3B是显示根据本发明的一实施例所述的执行垃圾回收程序的流程图。首先,于一垃圾回收程序(特殊垃圾回收程序或一般垃圾回收程序)被触发时,控制器110A/110B选择一存储器区块作为目前的来源区块(步骤S302)。如上述,根据本发明的第一方面的第一实施例,于特殊垃圾回收程序中,控制器110A/110B根据特殊垃圾回收伫列选择一存储器区块作为目前的来源区块。根据本发明的第一方面之第二实施例,于一般垃圾回收程序中,控制器110A/110B根据上述变数及存储器区块所对应的一有效页面计数值VP_Count选择一存储器区块作为目前的来源区块。此外,根据本发明的第二方面实施例,于一般垃圾回收程序及特殊垃圾回收程序中,控制器110A/110B优先根据UECC垃圾回收伫列选择一存储器区块作为目前的来源区块。
接着,控制器110A/110B判断前一个来源区块是否为包含至少一损坏页面的存储器区块(步骤S304)。若是,由于前一个来源区块已完成垃圾回收,即,前一个来源区块中所有有效页面已被搬移至一目的区块,因此控制器110A/110B可将此存储器区块标记为一损坏区块(步骤S306)。
若否,或者如步骤S306将存储器区块标记为一损坏区块后,控制器110A/110B将目前来源区块中有效页面搬移至目的区块(步骤S308),并且判断是否目的区块已被写满(步骤S310)。若否,则回到步骤S302选择来源区块。若是,则控制器110A/110B判断目前的来源区块是否为包含至少一损坏页面的存储器区块(步骤S312)。若否,则本次垃圾回收程序结束(步骤S320)。
若是,则控制器110A/110B进一步确认是否目前的来源区块中所有有效页面都已被搬移至目的区块(步骤S314)。若是,将之标记为一损坏区块(步骤S316)后,本次垃圾回收程序结束(步骤S320)。
若否,则控制器110A/110B执行对应的操作使目前的来源区块于下一个垃圾回收程序被触发时,会优先地被选择为来源区块(步骤S318)。如上述,控制器110A/110B可利用一变数记录目前的来源区块所对应的存储器区块编号,或者将目前的来源区块所对应的存储器区块编号加入UECC垃圾回收伫列中、或者不将目前的来源区块所对应的存储器区块编号自UECC垃圾回收伫列中移除、或者调整UECC垃圾回收伫列的顺序,以确保目前的来源区块于下一个垃圾回收程序被触发时,会优先地被选择为来源区块。
于本发明的实施例中,由于检测到损坏页面后,并不会立刻将对应的存储器区块标记为损坏区块,而是待该存储器区块中所有有效页面搬移至目的区块后,才会将该存储器区块标记为一损坏区块,如此一来,可避免造成上述使用者不乐见的数据错误的问题,并且可有效率地处理存储器装置所储存的之数据,提升存储器装置的效能。
本发明说明书中"耦接"一词泛指各种直接或间接的电性连接方式。本发明虽以较佳实施例揭示如上,然其并非用以限定本发明的范围,任何熟悉本技术领域者,在不脱离本发明的精神和范围内,当可做些许的更动与润饰,因此本发明的保护范围当由权利要求书界定为准。
Claims (12)
1.一种数据储存装置,包括:
一存储器装置,包括多个存储器区块,各存储器区块包括多个页面;以及
一控制器,耦接至该存储器装置,并且包括一错误更正码引擎,用以对这些存储器区块所储存的数据进行检查及更正错误;
其中当这些存储器区块之一者的一页面所包含的错误位元的数量大于一临界值时,该控制器将该存储器区块的一区块编号加入一既定伫列,并且于一垃圾回收程序被触发时,对该存储器区块执行垃圾回收,并且
其中当该控制器执行该垃圾回收程序时,于检测出另一存储器区块的一页面所包含的错误位元的数量大于该临界值时,于该控制器将该另一存储器区块中所有有效页面搬移至一目的区块后,将该另一存储器区块标记为一损坏区块。
2.如权利要求1所述的数据储存装置,其特征在于,当该页面所包含的错误位元的数量大于该临界值时,该页面的数据包含无法更正的错误。
3.如权利要求2所述的数据储存装置,其特征在于,于该控制器对该存储器区块执行该垃圾回收程序前,该控制器不将该存储器区块标记为一损坏区块。
4.如权利要求2所述的数据储存装置,其特征在于,于该控制器将该存储器区块中所有有效页面搬移至该目的区块后,将该存储器区块标记为一损坏区块。
5.如权利要求1所述的数据储存装置,其特征在于,该控制器根据该既定伫列执行该垃圾回收程序。
6.如权利要求1所述的数据储存装置,其特征在于,当执行该垃圾回收程序所使用之该目的区块已被写满,但并非该存储器区块中所有有效页面都已被搬移至该目的区块时,该控制器于下一个垃圾回收程序被触发时优先地选择该存储器区块为一来源区块。
7.一种存储器装置的数据处理方法,适用于一数据储存装置,该数据储存装置包括一存储器装置与一控制器,该存储器装置包括多个存储器区块,各存储器区块包括多个页面,该方法包括:
对这些存储器区块所储存的数据进行检查及更正错误,以判断是否这些存储器区块之一者的一页面所包含的错误位元的数量大于一临界值;
当该页面所包含的错误位元的数量大于该临界值时,将该存储器区块的一区块编号加入一既定伫列;以及
于一垃圾回收程序被执行时,对该存储器区块执行垃圾回收,
其中于该垃圾回收程序被执行时,还包括:
于检测出另一存储器区块的一页面所包含的错误位元的数量大于该临界值时,于将该另一存储器区块中所有有效页面搬移至一目的区块后,将该另一存储器区块标记为一损坏区块。
8.如权利要求7所述的方法,其特征在于,当该页面所包含的错误位元的数量大于该临界值时,该页面的数据包含无法更正的错误。
9.如权利要求8所述的方法,其特征在于,还包括:
于对该存储器区块执行该垃圾回收程序前,不将该存储器区块标记为一损坏区块。
10.如权利要求8所述的方法,其特征在于,还包括:
于将该存储器区块中所有有效页面搬移至该目的区块后,将该存储器区块标记为一损坏区块。
11.如权利要求7所述的方法,其特征在于,还包括:
根据该既定伫列执行该垃圾回收程序。
12.如权利要求7所述的方法,其特征在于,还包括:
当执行该垃圾回收程序所使用的该目的区块已被写满,但并非该存储器区块中所有有效页面都已被搬移至该目的区块时,优先地选择该存储器区块为下一次垃圾回收程序的一来源区块。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW106133361A TWI633428B (zh) | 2017-09-28 | 2017-09-28 | 資料儲存裝置與記憶體裝置之資料處理方法 |
TW106133361 | 2017-09-28 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109582216A CN109582216A (zh) | 2019-04-05 |
CN109582216B true CN109582216B (zh) | 2022-02-01 |
Family
ID=63959985
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810494085.1A Active CN109582216B (zh) | 2017-09-28 | 2018-05-22 | 数据储存装置与存储器装置的数据处理方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10635527B2 (zh) |
CN (1) | CN109582216B (zh) |
TW (1) | TWI633428B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102447602B1 (ko) * | 2017-10-25 | 2022-09-26 | 삼성전자주식회사 | 메모리 장치 및 그 동적 가비지 컬렉션 방법 |
US10936199B2 (en) * | 2018-07-17 | 2021-03-02 | Silicon Motion, Inc. | Flash controllers, methods, and corresponding storage devices capable of rapidly/fast generating or updating contents of valid page count table |
CN110246534A (zh) * | 2019-05-07 | 2019-09-17 | 陈颐 | 一种降低闪存记忆体写入扰动的方法 |
CN112347001B (zh) * | 2020-10-13 | 2023-09-26 | 深圳市宏旺微电子有限公司 | 闪存垃圾回收的校验方法、装置及电子设备 |
US11733895B2 (en) | 2021-03-31 | 2023-08-22 | Silicon Motion, Inc. | Control method of flash memory controller and associated flash memory controller and storage device |
US11748011B2 (en) | 2021-03-31 | 2023-09-05 | Silicon Motion, Inc. | Control method of flash memory controller and associated flash memory controller and storage device |
CN115495025B (zh) * | 2022-11-18 | 2023-03-28 | 合肥康芯威存储技术有限公司 | 一种管理异常存储块的方法和装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101644995A (zh) * | 2008-08-05 | 2010-02-10 | 晶天电子(深圳)有限公司 | 多层控制多闪存装置、存储装置和数据分割固态硬盘 |
CN101901169A (zh) * | 2010-03-23 | 2010-12-01 | 成都市华为赛门铁克科技有限公司 | 扫描装置及方法 |
CN101403986B (zh) * | 2008-11-12 | 2010-12-08 | 中国船舶重工集团公司第七○九研究所 | 具有容灾技术的闪存数据存储/导出系统 |
CN102272731A (zh) * | 2008-11-10 | 2011-12-07 | 弗森-艾奥公司 | 用于预测固态存储装置中的故障的设备、系统和方法 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101118783A (zh) * | 2006-09-07 | 2008-02-06 | 晶天电子(深圳)有限公司 | 带有闪存坏块控制系统的电子数据闪存卡 |
US7991942B2 (en) * | 2007-05-09 | 2011-08-02 | Stmicroelectronics S.R.L. | Memory block compaction method, circuit, and system in storage devices based on flash memories |
US9720616B2 (en) * | 2008-06-18 | 2017-08-01 | Super Talent Technology, Corp. | Data-retention controller/driver for stand-alone or hosted card reader, solid-state-drive (SSD), or super-enhanced-endurance SSD (SEED) |
CN103226524B (zh) * | 2012-01-31 | 2017-07-04 | 上海华虹集成电路有限责任公司 | 对Nandflash的坏块和空块进行统一管理的FIFO系统 |
CN103176752A (zh) * | 2012-07-02 | 2013-06-26 | 晶天电子(深圳)有限公司 | 带有耐用转换层及临时文件转移功能从而实现闪速存储器磨损降低的超耐用固态驱动器 |
TWI529530B (zh) * | 2014-08-25 | 2016-04-11 | 群聯電子股份有限公司 | 記憶體管理方法、記憶體儲存裝置及記憶體控制電路單元 |
KR102653401B1 (ko) * | 2016-07-18 | 2024-04-03 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그의 동작방법 |
-
2017
- 2017-09-28 TW TW106133361A patent/TWI633428B/zh active
-
2018
- 2018-05-22 CN CN201810494085.1A patent/CN109582216B/zh active Active
- 2018-07-19 US US16/039,767 patent/US10635527B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101644995A (zh) * | 2008-08-05 | 2010-02-10 | 晶天电子(深圳)有限公司 | 多层控制多闪存装置、存储装置和数据分割固态硬盘 |
CN102272731A (zh) * | 2008-11-10 | 2011-12-07 | 弗森-艾奥公司 | 用于预测固态存储装置中的故障的设备、系统和方法 |
CN101403986B (zh) * | 2008-11-12 | 2010-12-08 | 中国船舶重工集团公司第七○九研究所 | 具有容灾技术的闪存数据存储/导出系统 |
CN101901169A (zh) * | 2010-03-23 | 2010-12-01 | 成都市华为赛门铁克科技有限公司 | 扫描装置及方法 |
Non-Patent Citations (1)
Title |
---|
"NAND Flash坏块管理算法研究与实现";张鹏;《中国优秀硕士学位论文全文数据库(信息科技辑)》;20160215(第2016年第02期);第I137-56页正文第11-13,27-28页 * |
Also Published As
Publication number | Publication date |
---|---|
US10635527B2 (en) | 2020-04-28 |
TWI633428B (zh) | 2018-08-21 |
CN109582216A (zh) | 2019-04-05 |
US20190095276A1 (en) | 2019-03-28 |
TW201915725A (zh) | 2019-04-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109582216B (zh) | 数据储存装置与存储器装置的数据处理方法 | |
US10552311B2 (en) | Recovery for non-volatile memory after power loss | |
US7849382B2 (en) | Memory control circuit, nonvolatile storage apparatus, and memory control method | |
EP2372549B1 (en) | Emerging bad block detection | |
CN109933545B (zh) | 数据储存装置与存储器装置的数据处理方法 | |
US9996462B1 (en) | Data storage device and data maintenance method thereof | |
TWI389122B (zh) | 用來存取一快閃記憶體之方法以及相關之記憶裝置及其控制器 | |
TW201916018A (zh) | 資料儲存裝置與將資料寫入記憶體裝置之方法 | |
US8516184B2 (en) | Data updating using mark count threshold in non-volatile memory | |
US10489246B2 (en) | Data storage device and data maintenance method thereof | |
TWI394170B (zh) | 連結表的回復方法 | |
US20160054935A1 (en) | Data storing method and memory controller and memory storage device using the same | |
CN103984506A (zh) | 闪存存储设备数据写的方法和系统 | |
US8607123B2 (en) | Control circuit capable of identifying error data in flash memory and storage system and method thereof | |
JP2004220068A (ja) | メモリカード及びメモリへのデータ書き込み方法 | |
JP2006221334A (ja) | メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法 | |
CN113220221A (zh) | 存储器控制器与数据处理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |