CN112053735B - 固态存储装置的重复数据处理方法 - Google Patents
固态存储装置的重复数据处理方法 Download PDFInfo
- Publication number
- CN112053735B CN112053735B CN201910486613.3A CN201910486613A CN112053735B CN 112053735 B CN112053735 B CN 112053735B CN 201910486613 A CN201910486613 A CN 201910486613A CN 112053735 B CN112053735 B CN 112053735B
- Authority
- CN
- China
- Prior art keywords
- data
- repeated data
- repeated
- error correction
- nonvolatile memory
- 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
Images
Classifications
-
- 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/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/38—Response verification devices
- G11C29/42—Response verification devices using error correcting codes [ECC] or parity check
-
- 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/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
- G06F3/0641—De-duplication techniques
-
- 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/1012—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 codes or arrangements adapted for a specific type of error
-
- 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
- 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/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
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)
- Quality & Reliability (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
一种固态存储装置的重复数据处理方法,该固态存储装置具有一非易失性存储器,该方法包括下列步骤:接收一写入数据,该写入数据包含多个码字;依序对该些码字进行编码动作,并对应依序产生多个错误校正码;判断该些错误校正码是否连续出现二个以上相同的一第一错误校正码;以及于判断连续出现二个以上相同的一第一错误校正码时,确认该写入数据出现一重复数据,并启动一重复数据管理机制。
Description
技术领域
本发明是有关于一种固态存储装置的数据处理方法,且特别是有关于一种固态存储装置的重复数据处理方法。
背景技术
众所周知,固态存储装置(Solid State Drive,简称SSD)使用非易失性存储器(non-volatile memory)为主要存储元件。也就是说,当数据写入非易失性存储器后,一旦系统电源关闭,数据仍保存在固态存储装置中。
请参照图1,其所示为习知固态存储装置的示意图。固态存储装置10中包括一控制器110、一缓冲器(buffer)120与一非易失性存储器130。其中,缓冲器120为动态随机存取存储器(DRAM),且非易失性存储器130可为一与非门快速存储器(NAND flash memory)。
在固态存储装置10外部,控制器110利用一外部总线20与主机(host)12之间进行指令与数据的传递。其中,外部总线12可为USB总线、SATA总线、PCIe总线、M.2总线或者U.2总线等等。
在固态存储装置10内部,控制器110连接至缓冲器120与非易失性存储器130。控制器110可根据主机12所发出的写入指令进一步将主机12的写入数据存入非易失性存储器130。或者,根据主机12所发出的读取指令由非易失性存储器130中取得读取数据,经由控制器110传递至主机12。
控制器110更包括一闪存转换层(flash translation layer,FTL)114,闪存转换层114会利用一逻辑至物理对应表(Logical-to-Physical Table,简称L2P表)115来管理非易失性存储器130内的数据。一般来说,为了能够即时更新L2P表115的内容,L2P表115一般存储于易失性存储器中。例如,L2P表115的内容存储于控制器110内的静态随机存取存储器(SRAM)或动态随机存取存储器(DRAM)。当然,L2P表115的内容也可存储于控制器110外的缓冲器120。
举例来说,当主机12发出写入命令(write command)时,控制器110会收到写入数据与逻辑地址(logical address)。首先,控制器110将写入数据暂时存储于缓冲区120。再者,ECC电路112将缓冲器120中的写入数据进行编码动作后,成为编码的写入数据(encodedwrite data)。之后,控制器110将编码的写入数据存入非易失性存储器130中的一物理地址(physical address)内,并且控制器110会在闪存转换层(FTL)114的L2P表115中记录逻辑地址(logical address)与物理地址(physical address)之间的映射关系。其中,逻辑地址可为逻辑配置地址(Logical Allocation Address),且物理地址可为物理配置地址(Physical Allocation Address)。
另外,当主机12发出读取命令(read command)时,控制器110会收到一逻辑地址(logical address)。首先,控制器110根据闪存转换层(FTL)114的L2P表115的内容,确认映射于逻辑地址(logical address)的物理地址(physical address)。接着,非易失性存储器130将存储于物理地址(physical address)内的编码的读取数据(encoded read data)传递至控制器110并暂存于缓冲器120。再者,ECC电路112将缓冲器120中的编码的读取数据进行解码动作后,产生读取数据。之后,控制器110将读取数据传递至主机12。
请参照图2,其所示为习知固态存储装置中L2P表中的映射关系示意图。如L2P表115所示,非易失性存储器130中有n个物理地址PA_0~PA_n-1。逻辑地址LA_70对应至物理地址PA_1。也就是说,主机12发出逻辑地址LA_70的写入数据,经过编码动作后形成之编码的写入数据存储于非易失性存储器130的物理地址PA_1内。
逻辑地址LA_120对应至物理地址PA_2。也就是说,主机12发出逻辑地址LA_120的写入数据,经过编码动作后形成之编码的写入数据存储于非易失性存储器130的物理地址PA_2内。
逻辑地址LA_55对应至物理地址PA_4。也就是说,主机12发出逻辑地址LA_55的写入数据,经过编码动作后形成之编码的写入数据存储于非易失性存储器130的物理地址PA_4内。
逻辑地址LA_60对应至物理地址PA_n-1。也就是说,主机12发出逻辑地址LA_60的写入数据,经过编码动作后形成的编码的写入数据存储于非易失性存储器130的物理地址PA_n-1内。
另外,在L2P表115中,物理地址PA_0、物理地址PA_3以及物理地址PA_5中并没有对应的逻辑地址,代表非易失性存储器130的物理地址PA_0、物理地址PA_3以及物理地址PA_5中并未存储有效数据(valid data)。
由以上的说明可知,习知固态存储装置10会将主机12发出所有的写入数据皆存储至非易失性存储器130。
然而,在某些特定的情况下,主机12会持续发出重复数据(repetitive data)作为写入数据。其中,重复数据为相同的数据。
当主机12持续发出重复数据(repetitive data)作为写入数据时,习知固态存储装置12还是会将这些重复数据存储至非易失性存储器130中。明显地,非易失性存储器130中会有许多空间用来存储相同的数据,且将这些相同的数据写入易失性存储器130也会增加固态存储装置10的编程时间(program time)。
发明内容
本发明有关于一种固态存储装置的重复数据处理方法,该固态存储装置具有一非易失性存储器,该方法包括下列步骤:接收一写入数据,该写入数据包含多个码字;依序对该些码字进行编码动作,并对应依序产生多个错误校正码;判断该些错误校正码是否连续出现二个以上相同的一第一错误校正码;以及于判断连续出现二个以上相同的一第一错误校正码时,确认该写入数据出现一重复数据,并启动一重复数据管理机制。
本发明有关于一种固态存储装置的重复数据处理方法,该固态存储装置具有一非易失性存储器,该方法包括下列步骤:接收一写入数据,该写入数据包含一第一页数据,该第一页数据包含多个码字;对该第一页的该些码字进行编码动作,并对应产生的多个错误校正码;判断该些错误校正码是否都相同;以及于判断该些错误校正码都相同时,确认该写入数据出现一重复数据,并启动一重复数据管理机制。
本发明有关于一种固态存储装置的重复数据处理方法,该固态存储装置具有一非易失性存储器,该方法包括下列步骤:判断一写入数据中是否出现一重复数据;于确认出现该重复数据时,判断一重复数据表中是否记录该重复数据的一对应信息;以及当该重复数据表中未记录该重复数据的该对应信息时,将该重复数据存储于该非易失性存储器,并在该重复数据表中新增该重复数据的该对应信息及其一映射关系。
以下结合附图和具体实施例对本发明进行详细描述,但不作为对本发明的限定。
附图说明
图1为习知固态存储装置的示意图。
图2为习知固态存储装置中L2P表中的映射关系示意图。
图3为本发明固态存储装置的示意图。
图4为编码后的一个页数据的内容示意图。
图5为本发明重复数据的数据处理方法流程图。
图6A至图6C所示重复数据表内容的更新示意图。
具体实施方式
下面结合附图对本发明的结构原理和工作原理作具体的描述:
请参照图3,其所示为本发明固态存储装置的示意图。固态存储装置30中包括一控制器320、一缓冲器120与一非易失性存储器130。相较于习知固态存储装置,控制器320中更包括一标记寄存器310与一重复数据表(repetitive data table)。
亦即,本发明的固态存储装置30中,控制器320包括ECC电路112、一重复数据表350、闪存转换层(FTL)114与一标记寄存器(flag register)310。根据本发明的实施例,重复数据表350中记录主机12产生的重复数据,以及其对应的逻辑地址与物理地址之间的映射关系。再者,L2P表115与重复数据表350存储于易失性存储器中。例如,L2P表115与重复数据表350的内容存储于控制器320内的静态随机存取存储器(SRAM)或动态随机存取存储器(DRAM)。当然,L2P表115与重复数据表350的内容也可存储于控制器320外的缓冲器120。
根据本发明的实施例,当主机12发出写入指令后,控制器320会将主机12产生的写入数据暂存于缓冲器120中。当ECC电路112对写入数据进行编码动作后,会产生对应的错误校正码(以下简称ECC码),控制器320根据ECC码的内容来判断主机12的写入数据中是否包括重复数据。
再者,当控制器320确认写入数据中包括重复数据时,控制器320仅会将第一次出现的重复数据存储于非易失性存储器130,并且后续出现的重复数据则不再存储至非易失性存储器130,并将相关映射关系记录于重复数据表350。以下详细介绍本发明固态存储装置30的重复数据判断机制以及相关的数据处理方法。
众所周知,非易失性存储器130中包括多个区块(block),且每个区块包括多个页(page)。控制器320是以页为单位将编码的写入数据存储至非易失性存储器130。一般而言,写入数据可区分为多个页数据,而每个页数据包含多个码字(codeword)。另外,ECC电路112对每个页数据中的各个码字进行编码动作,并产生对应的ECC码。码字为ECC电路112的编码单位,且编码单位的大小可取决于ECC电路112的编解码能力。
举例来说,假设每一个页为16K位元组(bytes),且一个码字为4Kbytes,每个码字进行编程动作后,可产生488bytes的ECC码(ECC code)。换言之,一个页数据包含多个4Kbytes的码字,且ECC电路112对每个码字进行编码动作后,每个码字皆对应地产生488bytes的ECC码。
当然,一个码字的长度并不限定于4Kbytes,也可以是1Kbytes、2Kbytes、4Kbytes或者8Kbytes等等。同理,每个页也不限定于16Kbytes,也可以是32Kbytes、64Kbytes、128Kbytes等等。
如图4所示,其为编码后的一个页数据的内容示意图。一个16Kbytes的页数据中包括第一码字Codeword1至第四码字Codeword4以及对应的第一ECC码ECC1至第四ECC码ECC4。其中,第一码字Codeword1至第四码字Codeword4属于原始数据(raw data),也就是写入数据。另外,第一码字Ccodeword1至第四码字Codeword4以及对应的第一ECC码ECC1至第四ECC码ECC4即组成编码的写入数据。换言之,图4所示为一页(16Kbytes)的编码的写入数据,且已可被存储至非易失性存储器130中。
根据本发明的实施例,写入数据可区分为多个页数据,而每个页数据包含多个码字。当ECC电路112对一个页数据中的码字进行编码动作后,控制器320会对产生的ECC码进行判断,如果产生的ECC码都相同时,即代表主机12的写入数据出现重复数据。此时,标记寄存器310会被设定(set),并且控制器320启动重复数据管理机制。
请参照图5,其所示为本发明重复数据的处理方法流程图。首先,根据ECC码判断是否出现重复数据(步骤S510)。由于ECC电路112对每一个码字进行编码动作后都会产生对应的ECC码,且相同的码字于编码动作后会产生相同的ECC码。因此控制器320可根据ECC电路112所产生的ECC码来判断写入数据中的一个页数据是否为重复数据。
具体来说,当一个页数据中对应产生的多个ECC码皆相同时,其表示该页数据中的多个码字皆为相同,则控制器320判断该页数据为重复数据,并确认出现重复数据。反之,当一个页数据中对应产生的多个ECC码不都相同时,其表示该页数据中的多个码字不都为相同,则控制器320判断该页数据非重复数据,并确认未出现重复数据。
当控制器320确认未出现重复数据时,控制器320将编码的写入数据存储至非易失性存储器130(步骤S516)。即,将编码后的该页数据存储至非易失性存储器130。
再者,当控制器320确认出现重复数据时,标记寄存器310会被设定,并且控制器320启动重复数据管理机制。此时,控制器320进一步判断重复数据表350中是否记录此重复数据的对应信息(步骤S512)。如果重复数据表350中已经记录此重复数据的对应信息,则在重复数据表350中更新该重复数据的对应信息的映射关系(步骤S520),并且标记寄存器310会被重置(reset)并结束此流程。换言之,该重复数据不会再次被存储至非易失性存储器130。即,编码后的该页数据不会再次被存储至非易失性存储器130。
反之,如果重复数据表350中尚未记录此重复数据的对应信息,则在重复数据表350中新增该重复数据的对应信息及其映射关系(步骤S514)。之后,控制器320将编码的写入数据存储至非易失性存储器130(步骤S516)。即,将编码后的该页数据存储至非易失性存储器130。换言之,该重复数据第一次被存储至非易失性存储器130,并且标记寄存器310会被重置并结束此流程。
在本发明实施例中,重复数据的对应信息是指各不同的重复数据所对应具有的一特定信息。举例来说,根据上述,当某一个页数据被判断为重复数据时,其表示该页数据具有一特定的ECC码。此时,控制器320可将此特定的ECC码作为此重复数据的对应信息,并确认此特定的ECC码是否已记录于重复数据表350中。若否,则在重复数据表350中新增此特定的ECC码的纪录,并记录其映射关系,即此重复数据存储于非易失性存储器130中的物理地址,以及此页数据对应的逻辑地址。若是,则直接在重复数据表350中更新该重复数据的对应信息的映射关系,即将此页数据对应的逻辑地址更新纪录于重复数据表350中对应此特定的ECC码的纪录中。
此外,上述实施例是以页为单位来判断写入数据中是否出现重复数据,即以页数据中的多个ECC码是否都相同来判断写入数据中是否出现重复数据。然而,本发明并不以此为限。本发明另一实施例亦可以码字(Codeword)为单位来判断写入数据中是否出现重复数据。例如,当ECC电路112依序对写入数据中的多个码字进行编码动作,并对应依序产生多个ECC码时,于判断该些ECC码中连续出现二个以上相同的ECC码时,即确认出现一重复数据,并启动一重复数据管理机制。重复数据管理机制的流程则如图5所示,在此不再赘述。
如图6A至图6C所示,其为重复数据表内容的更新示意图。在图6A至图6C中,其是以ECC码为重复数据的对应信息来进行说明。假设写入数据中的一页数据Page1中的多个码字都为第一码字Codeword1时,ECC电路112对多个第一码字Codeword1进行编码后所都产生相同的第一ECC码ECC1,因此控制器320判断页数据Page1为重复数据,并确认写入数据中出现重复数据。此时,控制器320判断重复数据表350中是否记录此重复数据的对应信息,即第一ECC码ECC1。
假设重复数据表350中尚未有该第一ECC码ECC1的相关记录。如第6A图所示,控制器320即于重复数据表350中新增记录第一ECC码ECC1,并记录此重复数据存储于非易失性存储器130中的物理地址PA_0,以及此页数据Page1对应的逻辑地址LA_Page1。在本发明实施例中,每一页数据对应的逻辑地址LA_Page可包含多个逻辑地址,例如,页数据中的每个码字都具有对应的一逻辑地址。
根据上述,此重复数据,即编码的页数据Page1(包括多个第一码字Codeword1与对应的多个第一ECC码ECC1),是存储于非易失性存储器130的物理地址PA_0中。
接着,假设写入数据中的另一页数据Page2中的多个码字都为第二码字Codeword2时,ECC电路112对多个第二码字Codeword2进行编码后所都产生相同的第二ECC码ECC2,因此控制器320判断页数据Page2为重复数据,并确认写入数据中出现重复数据。此时,控制器320判断重复数据表350中是否记录此重复数据的对应信息,即第二ECC码ECC2。
由于重复数据表350中尚未有该第二ECC码ECC2的相关记录。如第6B图所示,控制器320即于重复数据表350中新增记录第二ECC码ECC2,并记录此重复数据存储于非易失性存储器130中的物理地址PA_1,以及此页数据Page2对应的逻辑地址LA_Page2。
根据上述,此重复数据,即编码的页数据Page2(包括多个第二码字Codeword2与对应的多个第二ECC码ECC2),是存储于非易失性存储器130的物理地址PA_1中。
再者,假设写入数据中的另一页数据Page3中的多个码字皆为第一码字Codeword1时,ECC电路112对多个第一码字Codeword1进行编码后产生第一ECC码ECC1,因此控制器320判断页数据Page3为重复数据,并确认写入数据中出现重复数据。此时,控制器320判断重复数据表350中是否记录此重复数据的对应信息,即第一ECC码ECC1。
由于数据表350中已经有该第一ECC码ECC1的相关记录。如第6C图所示,控制器320即于重复数据表350中将页数据Page3对应的逻辑地址LA_Page3更新纪录于第一ECC码ECC1的对应记录中。
再者,由于此重复数据,即编码的页数据(包括多个第一码字Codeword1与对应的多个第一ECC码ECC1)已经存储于非易失性存储器130的物理地址PA_0中。因此,控制器320仅更新重复记录表350的内容后即结束流程。也就是说,编码的页数据Page3(包括多个第一码字Codeword1与对应的多个第一ECC码ECC1)不会再次被存储于非易失性存储器130中。
另外,当主机12发出读取命令欲读取逻辑地址LA_Page1的读取数据时,控制器320根据重复记录表350确认该读取数据存储于非易失性存储器130的物理地址PA_0中。因此,非易失性存储器130将物理地址PA_0内的编码的读取数据(包括第一码字Codeword1)传递至控制器320。接着,ECC电路112将编码的读取数据进行解码动作后,产生读取数据。之后,控制器320将读取数据传递至主机12。
同理,当主机12发出读取命令欲读取逻辑地址LA_Page3的读取数据时,控制器320也是由相同的物理地址PA_0取得编码的读取数据(包括第一码字Codeword1)。其详细的运行原理不再赘述。
再者,根据本发明的实施例,重复数据表350中的ECC码栏也可以不需要记录一个完整的ECC码。
举例来说,本发明可以由第一ECC码中取出第一部分与第二部分,并且将第二部分进行检查总和演算法(checksum algorithm)后产生一检查总和值(checksum value)。接着,将第一部分与检查总和值合并一个代表数值,用以代表第一ECC码ECC1。如此,可以有效地减少ECC码的数据长度(data length)。
以一实际范例来说明,假设一个码字为4K,而其编码后产生的ECC码为488byte。将488bytes的第一ECC码ECC1区分为第一部分的16bytes以及第二部分的472bytes。并且将第二部分的472bytes进行检查总和演算法(checksum algorithm)后产生4位元组(4bytes)的检查总和值(checksum value)。接着,将第一部分的16bytes与4bytes的检查总和值合并一个20bytes的代表数值,用来作为第一ECC码ECC1的代表数值。如此,可以有效地减少ECC码的数据长度(data length)。
由以上的说明可知,本发明提出一种具重复数据管理机制的固态存储装置及其数据处理方法。当控制器320确认写入数据中包括重复数据时,控制器320仅会将重复数据中的其中之一存储于非易失性存储器130,并且重复数据中的其他则不再存储至非易失性存储器130,并将相关映射关系记录于重复数据表350。因此,可以节省非易失性存储器130的存储空间,并且可以减少非易失性存储器130被编程(program)的次数,可以有效延长固态存储装置30的寿命。另外,由于多笔重复数据仅其中之一存储于非易失性存储器130,所以也可以减少非易失性存储器130的编程时间(program time)。
当然,本发明还可有其它多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。
Claims (9)
1.一种固态存储装置的重复数据处理方法,其特征在于,该固态存储装置具有一非易失性存储器,该方法包括下列步骤:
接收一写入数据,该写入数据包含多个码字;
依序对该些码字进行编码动作,并对应依序产生多个错误校正码;
判断该些错误校正码是否连续出现二个以上相同的一第一错误校正码;以及
在判断连续出现二个以上相同的一第一错误校正码时,确认该写入数据出现一重复数据,并启动一重复数据管理机制。
2.如权利要求1所述的固态存储装置的重复数据处理方法,其特征在于,当确认该写入数据出现该重复数据时,设定一标记寄存器,并启动该重复数据管理机制。
3.如权利要求1所述的固态存储装置的重复数据处理方法,更包括下列步骤:
在确认该写入数据出现该重复数据时,判断一重复数据表中是否记录该重复数据的一对应信息;以及
当该重复数据表中未记录该重复数据的该对应信息时,将该重复数据存储于该非易失性存储器,并在该重复数据表中新增该重复数据的该对应信息及其一映射关系。
4.如权利要求3所述的固态存储装置的重复数据处理方法,更包括下列步骤:
当该重复数据表中已记录该重复数据的该对应信息时,更新该重复数据表中该对应信息的该映射关系,且不将该重复数据存储于该非易失性存储器。
5.如权利要求3所述的固态存储装置的重复数据处理方法,其特征在于,该对应信息为该第一错误校正码,或对应该第一错误校正码的一代表数值。
6.如权利要求3所述的固态存储装置的重复数据处理方法,其特征在于,该映射关系包含该重复数据存储于该非易失性存储器的一物理地址,以及该重复数据对应的至少一逻辑地址。
7.一种固态存储装置的重复数据处理方法,该固态存储装置具有一非易失性存储器,该方法包括下列步骤:
接收一写入数据,该写入数据包含一第一页数据,该第一页数据包含多个码字;
对该第一页的该些码字进行编码动作,并对应产生的多个错误校正码;
判断该些错误校正码是否都相同;以及
在判断该些错误校正码都相同时,确认该写入数据出现一重复数据,并启动一重复数据管理机制。
8.如权利要求7所述的固态存储装置的重复数据处理方法,更包括下列步骤:
于确认该写入数据出现该重复数据时,判断一重复数据表中是否记录该重复数据的一对应信息;以及
当该重复数据表中未记录该重复数据的该对应信息时,将该第一页数据存储于该非易失性存储器,并在该重复数据表中新增该重复数据的该对应信息及其一映射关系。
9.如权利要求8所述的固态存储装置的重复数据处理方法,更包括下列步骤:
当该重复数据表中已记录该重复数据的该对应信息时,更新该重复数据表中该对应信息的该映射关系,且不将该第一页数据存储于该非易失性存储器。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910486613.3A CN112053735B (zh) | 2019-06-05 | 2019-06-05 | 固态存储装置的重复数据处理方法 |
US16/589,739 US10963178B2 (en) | 2019-06-05 | 2019-10-01 | Repetitive data processing method for solid state drive |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910486613.3A CN112053735B (zh) | 2019-06-05 | 2019-06-05 | 固态存储装置的重复数据处理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112053735A CN112053735A (zh) | 2020-12-08 |
CN112053735B true CN112053735B (zh) | 2023-03-28 |
Family
ID=73609317
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910486613.3A Active CN112053735B (zh) | 2019-06-05 | 2019-06-05 | 固态存储装置的重复数据处理方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US10963178B2 (zh) |
CN (1) | CN112053735B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5093831A (en) * | 1988-06-09 | 1992-03-03 | Hitachi, Ltd. | Fast calculation circuit for cyclic redundancy check code |
JP2011244277A (ja) * | 2010-05-19 | 2011-12-01 | Ntt Plala Inc | 比較監視システム及び比較監視方法 |
CN104281412A (zh) * | 2013-07-04 | 2015-01-14 | 北京中科同向信息技术有限公司 | 一种在数据存储前去除重复数据的方法 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8533550B2 (en) | 2010-06-29 | 2013-09-10 | Intel Corporation | Method and system to improve the performance and/or reliability of a solid-state drive |
CN101916228B (zh) | 2010-08-17 | 2012-06-06 | 中国人民解放军国防科学技术大学 | 带有数据压缩功能的闪存转换层及实现方法 |
CN103136109B (zh) | 2013-02-07 | 2016-06-15 | 中国科学院苏州纳米技术与纳米仿生研究所 | 一种具有压缩功能的固态存储系统ftl写入及读取方法 |
US9043668B2 (en) * | 2013-02-08 | 2015-05-26 | Seagate Technology Llc | Using ECC data for write deduplication processing |
US9864769B2 (en) * | 2014-12-12 | 2018-01-09 | Pure Storage, Inc. | Storing data utilizing repeating pattern detection |
JP6666540B2 (ja) * | 2015-06-15 | 2020-03-18 | 富士通株式会社 | ストレージ制御装置、及びプログラム |
US10564850B1 (en) * | 2017-02-28 | 2020-02-18 | Tintri By Ddn, Inc. | Managing known data patterns for deduplication |
-
2019
- 2019-06-05 CN CN201910486613.3A patent/CN112053735B/zh active Active
- 2019-10-01 US US16/589,739 patent/US10963178B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5093831A (en) * | 1988-06-09 | 1992-03-03 | Hitachi, Ltd. | Fast calculation circuit for cyclic redundancy check code |
JP2011244277A (ja) * | 2010-05-19 | 2011-12-01 | Ntt Plala Inc | 比較監視システム及び比較監視方法 |
CN104281412A (zh) * | 2013-07-04 | 2015-01-14 | 北京中科同向信息技术有限公司 | 一种在数据存储前去除重复数据的方法 |
Also Published As
Publication number | Publication date |
---|---|
US20200387318A1 (en) | 2020-12-10 |
CN112053735A (zh) | 2020-12-08 |
US10963178B2 (en) | 2021-03-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10459794B2 (en) | Memory systems having extended product lifetime and methods of operating the same | |
US10853234B2 (en) | Memory controller | |
US8473712B2 (en) | Method for managing a memory apparatus, and associated memory apparatus thereof | |
TWI534618B (zh) | 映射表更新方法、記憶體控制電路單元及記憶體儲存裝置 | |
JP6134857B2 (ja) | 記憶デバイス、記憶デバイスを有する装置、及び記憶制御方法 | |
US10540276B2 (en) | Method of processing data based on erase operations of logical pages related to data compression rate of mapping table in data storage device | |
US10860422B2 (en) | Method for performing data management in memory device, associated memory device and controller thereof | |
US9037813B2 (en) | Data accessing method for flash memory storage device having data perturbation module, and storage system and controller using the same | |
US9304907B2 (en) | Data management method, memory control circuit unit and memory storage apparatus | |
US9465538B2 (en) | Flash memory control chip and data storage device and flash memory control method | |
US9430327B2 (en) | Data access method, memory control circuit unit and memory storage apparatus | |
US11176033B2 (en) | Data storage devices and data processing methods | |
JP2020149195A (ja) | メモリシステム | |
CN112214346A (zh) | 用于存储器子系统中的数据修改期间的错误检测的方法及装置 | |
CN113838510A (zh) | 快速的经由控制器复制 | |
CN112053735B (zh) | 固态存储装置的重复数据处理方法 | |
CN108664350B (zh) | 数据保护方法、存储器存储装置及存储器控制电路单元 | |
JP2012068765A (ja) | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
JP7408449B2 (ja) | 記憶装置及び記憶方法 | |
US11854603B2 (en) | Logical to encoded value table in data storage device | |
JP2012037971A (ja) | メモリコントローラ及びメモリコントローラを備える不揮発性メモリシステム、並びに不揮発性メモリの制御方法 | |
JP2021144699A (ja) | メモリシステム |
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 |