CN107402725B - 非易失性存储装置及其数据去重复方法 - Google Patents

非易失性存储装置及其数据去重复方法 Download PDF

Info

Publication number
CN107402725B
CN107402725B CN201710654881.2A CN201710654881A CN107402725B CN 107402725 B CN107402725 B CN 107402725B CN 201710654881 A CN201710654881 A CN 201710654881A CN 107402725 B CN107402725 B CN 107402725B
Authority
CN
China
Prior art keywords
data
original data
feature
characteristic information
list
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
Application number
CN201710654881.2A
Other languages
English (en)
Other versions
CN107402725A (zh
Inventor
谢廷俊
戴颖煜
朱江力
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Via Technologies Inc
Original Assignee
Via Technologies Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Priority claimed from US15/641,242 external-priority patent/US10318202B2/en
Application filed by Via Technologies Inc filed Critical Via Technologies Inc
Publication of CN107402725A publication Critical patent/CN107402725A/zh
Application granted granted Critical
Publication of CN107402725B publication Critical patent/CN107402725B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • G06F3/0641De-duplication techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

一种非易失性存储装置及其数据去重复方法。非易失性存储装置包括非易失性存储器以及控制器。控制器进行错误校验纠正方法,而将原数据转换为经编码数据。控制器进行数据去重复方法,来减少相同的经编码数据被重复写入非易失性存储器的次数。控制器复用错误校验纠正方法来产生对应于原数据的特征信息。当在特征列表中找得到该特征信息时,原数据所对应的经编码数据不会被写入非易失性存储器。当在特征列表中找不到该特征信息时,该特征信息会被加入特征列表,以及原数据所对应的经编码数据会被写入非易失性存储器。

Description

非易失性存储装置及其数据去重复方法
技术领域
本发明涉及一种存储装置,且特别是有关于一种非易失性存储装置及其数据去重复方法。
背景技术
与传统的硬盘驱动(hard disk drives)相比,由于快闪存储器(flash memory)储存设备的读/写性能佳且功耗低,使得快闪存储器被广泛应用于数据储存系统中。对于一些储存应用而言,相同数据在储存设备中可能存在多个副本,而这些副本会增加数据写入次数。如何减少写入量(amount of writes)并提高写入性能(write performance)和耐久性(endurance),是一个重要的课题。
现有的方法可以将数据进行压缩(compression),然后将经压缩数据写入快闪存储器。数据压缩技术可以减少这些副本数据的数据量,以减少写入量。无论如何,数据压缩技术可以缩减多少数据量,其取决于数据样式(data patterns)。在某些应用中,数据根本无法压缩。在其他应用中,数据可以被压缩得很好。结果,由于数据样式的可压缩性(compressibility)不尽相同,而使得压缩后的每个数据的长度亦有不同变化。由于各个经压缩数据具有不同的长度,数据压缩可能会导致耗用很多快闪转译层(Flash TranslationLayer,FTL)的开销(overhead)来管理经压缩数据。
发明内容
本发明提供一种非易失性存储装置及其数据去重复方法,以便减少相同的经编码数据被重复写入非易失性存储器的次数。
本发明的实施例提供一种非易失性存储装置。非易失性存储装置包括非易失性存储器以及控制器。控制器耦接至非易失性存储器。控制器用以进行错误校验纠正方法,而将原数据转换为经编码数据。控制器用以进行数据去重复方法,来减少相同的经编码数据被重复写入非易失性存储器的次数。其中,该数据去重复方法包括:复用该错误校验纠正方法来产生对应于原数据的特征信息;使用特征信息来查找特征列表;当在特征列表中找得到该特征信息时,不将原数据所对应的经编码数据写入非易失性存储器;以及当在特征列表中找不到该特征信息时,将该原数据所对应的该特征信息加入特征列表,以及将原数据所对应的经编码数据写入非易失性存储器。
本发明的实施例提供一种非易失性存储装置的数据去重复方法,用以减少相同的经编码数据被重复写入非易失性存储器的次数。非易失性存储装置用以进行错误校验纠正方法而将原数据转换为经编码数据。所述数据去重复方法包括:复用错误校验纠正方法来产生对应于原数据的特征信息;使用特征信息来查找特征列表;当在特征列表中找得到该特征信息时,不将原数据所对应的经编码数据写入非易失性存储器;以及当在特征列表中找不到该特征信息时,将该原数据所对应的该特征信息加入特征列表,以及将原数据所对应的经编码数据写入非易失性存储器。
基于上述,本发明诸实施例所述非易失性存储装置及其数据去重复方法复用了既有的错误校验纠正方法来产生对应于原数据的特征信息。基于所述特征信息与一特征列表的比对,可以知道此原数据所对应的经编码数据是否曾经被写入非易失性存储器。因此,本发明诸实施例所述非易失性存储装置及其数据去重复方法可以减少相同的经编码数据被重复写入非易失性存储器的次数。
为让本发明的上述特征和优点能更明显易懂,下文列举实施例,并配合所附图式作详细说明如下。
附图说明
图1是示出根据本发明一实施例的一种非易失性存储装置的电路框图。
图2是示出根据本发明一实施例的一种数据去重复方法的流程图。
图3是示出根据本发明另一实施例的一种数据去重复方法的流程图。
图4是示出根据本发明一实施例的图1所示控制器的电路框图。
图5是示出根据本发明另一实施例的图1所示控制器的电路框图。
具体实施方式
在本申请说明书全文(包括权利要求)中所使用的“耦接(或连接)”一词可指任何直接或间接的连接手段。举例而言,若文中描述第一装置耦接(或连接)于第二装置,则应该被解释成该第一装置可以直接连接于该第二装置,或者该第一装置可以通过其他装置或某种连接手段而间接地连接至该第二装置。另外,凡可能之处,在图式及实施方式中使用相同附图标记的组件/构件/步骤代表相同或类似部分。不同实施例中使用相同附图标记或使用相同用语的组件/构件/步骤可以相互参照相关说明。
图1是示出根据本发明一实施例的一种非易失性存储装置100的电路框图。依照设计需求,非易失性存储装置100可以是随身碟、固态硬盘(solid state disc,SSD)或是其他储存装置。非易失性存储装置100可以耦接至主机(host)10。此主机10可以是计算机、手持式电话、多媒体播放器、相机或是其他电子装置。当主机10发出一个写入命令(writecommand)给非易失性存储装置100时,非易失性存储装置100可以依据此写入命令的寻址来将主机10的数据写入非易失性存储装置100内的非易失性存储器。当主机10发出一个读取命令(read command)给非易失性存储装置100时,非易失性存储装置100可以依据此读取命令的寻址来回传对应数据给主机10。
在图1所示实施例中,非易失性存储装置100包括非易失性存储器110以及控制器120。依照设计需求,非易失性存储器110可以是反及快闪存储器(NAND flash memory)或是其他非易失性储存电路/组件。控制器120耦接至非易失性存储器110。当主机10发出一个写入命令时,控制器120可以进行错误校验纠正(Error Checking and Correcting,以下称ECC)方法而将主机10的原数据转换为经编码数据(或称为码字、codeword)。依照设计需求,所述ECC方法可以是BCH(Bose-Chaudhuri-Hocquengh)算法、低密度奇偶校验(Low DensityParity Check,LDPC)算法或是其他ECC算法。BCH算法、LDPC算法为公知常识,故不再赘述。控制器120可以依据此写入命令的逻辑地址来寻址非易失性存储器110,以便将所述经编码数据写入非易失性存储器110。
以LDPC算法为例。控制器120可以进行LDPC算法而将主机10的原数据转换为多个奇偶校验位(parity bit)。所述原数据与所述奇偶校验位一并作为所述码字(经编码数据)。依据写入命令的逻辑地址,控制器120可以寻址非易失性存储器110,以及将所述码字(经编码数据)写入非易失性存储器110中。其他ECC算法(例如BCH算法)可以参照LDPC算法的相关说明来类推,故不再赘述。
在主机10发出一个读取命令后,控制器120可以依据该读取命令的逻辑地址来寻址非易失性存储器110,以便从非易失性存储器110中读取一笔对应的经编码数据。控制器120可以对此经编码数据进行所述ECC方法,以便获得经译码数据(原数据)。所述ECC方法可以更正传输过程中发生的错误。
以LDPC算法为例。一次LDPC译码完成后,控制器120可以获得一个经解码码字v。控制器120可以使用下述等式1进行校验子运算来校验此经译码码字v,而获得校验子(syndrome)[c0 c1 … cm-1]。等式1中的H为具有稀疏矩阵性质的奇偶校验矩阵。奇偶校验矩阵H内的元素为1或0,且1的元素数量远少于0的元素数量。奇偶校验矩阵H为公知常识,故不再赘述。若校验子[c0 c1 … cm-1]不为0向量(0矩阵,即矩阵中所有元素c0~cm-1均为0),则控制器120可以对此经译码码字v进行迭代运算(再一次进行LDPC译码),以获得新的经译码码字v。控制器120可以再一次使用等式1来校验所述新的经解码码字v,而获得新的校验子[c0 c1 … cm-1]。如此进行多次迭代运算,直到校验子[c0 c1 … cm-1]为0向量(0矩阵),即终止迭代运算(亦即所述经编码数据的LDPC译码为成功)。当所述经编码数据的LDPC译码为成功时,控制器120可以将经译码数据(最后一次进行LDPC译码所获得的经译码码字v)回传给主机10。
Figure BDA0001369012450000041
图2是示出根据本发明一实施例的一种数据去重复方法的流程图。请参照图1与图2,控制器120可以进行数据去重复方法,来减少相同的经编码数据被重复写入非易失性存储器110的次数。在步骤S210中,控制器120可以复用所述ECC方法来产生对应于主机10的原数据的特征信息。步骤S210可以复用所述ECC方法的任何计算操作及/或任何计算结果来产生所述特征信息。
步骤S210可以复用所述ECC方法所产生的奇偶校验位的部分或全部作为所述特征信息。举例来说,假设所述原数据的数据量为4KB。若所述ECC方法每次处理的数据量为1KB,则所述原数据可以被切分为4个部分D1、D2、D3、D4,而每一个部分的数据量为1KB。所述ECC方法可以对这部分D1进行ECC计算,以获得一组奇偶校验位P1。以此类推,所述ECC方法可以分别对其他部分D2、D3、D4进行ECC计算,以获得三组奇偶校验位P2、P3、P4。依照设计需求,在一些实施例中,步骤S210可以复用奇偶校验位P1、P2、P3、P4的全部作为所述原数据的特征信息。
在另一些实施例中,步骤S210可以复用奇偶校验位P1、P2、P3、P4的部分作为所述原数据的特征信息。例如,步骤S210可以取用P1的前半部(或后半部)、P2的前半部(或后半部)、P3的前半部(或后半部)与P4的前半部(或后半部),作为所述原数据的特征信息。再例如,步骤S210可以取用P1的奇数位置(或偶数位置,或其他位置)的内容、P2的奇数位置(或偶数位置,或其他位置)的内容、P3的奇数位置(或偶数位置,或其他位置)的内容与P4的奇数位置(或偶数位置,或其他位置)的内容,作为所述原数据的特征信息。
在另一些实施例中,步骤S210可以使用对应于所述原数据的经编码数据的部分或全部奇偶校验位进行逻辑运算,来产生所述原数据的特征信息。举例来说,假设所述原数据的数据量为4KB,而所述ECC方法每次处理的数据量为1KB,则所述原数据可以被切分为4个部分D1、D2、D3、D4。所述ECC方法可以分别对这4个部分D1、D2、D3、D4进行ECC计算,以获得四组奇偶校验位P1、P2、P3、P4。步骤S210可以使用P1、P2、P3、P4进行异或(exclusive OR,XOR)运算,来产生所述原数据的特征信息。假设所述原数据的数据量为4KB,而所述ECC方法每次处理的数据量为4KB,则所述ECC方法可以对这原数据进行ECC计算,以获得一组奇偶校验位P。这组奇偶校验位P可以被切分为n个部分(n可以视设计需求来决定),例如将P切分为四组奇偶校验位P5、P6、P7、P8。步骤S210可以使用P5、P6、P7、P8进行逻辑运算(例如异或运算),来产生所述原数据的特征信息。
在另一些实施例中,步骤S210可以对所述原数据进行ECC方法的校验子运算,以产生所述原数据的一个或多个校验子。举例来说,以LDPC算法为例,所述校验子运算可以是上述等式1所示LDPC的校验子运算,但是将等式1的经译码码字v取代为所述原数据。亦即,所述原数据去乘以HT而获得所述原数据的校验子。
步骤S210可以使用所述原数据的校验子的部分或全部位作为所述特征信息。举例来说,假设所述原数据的数据量为4KB,而所述ECC方法每次处理的数据量为1KB,则所述原数据可以被切分为4个部分D1、D2、D3、D4。步骤S210可以对所述部分D1进行ECC方法的校验子运算,以产生D1的校验子S1。举例来说,以LDPC算法为例,所述校验子运算可以是S1=D1*HT(详参上述等式1),而获得D1的校验子S1。以此类推,步骤S210可以分别对其他部分D2、D3、D4进行ECC方法的校验子运算,以产生三个校验子S2、S3、S4。依照设计需求,在一些实施例中,步骤S210可以使用校验子S1、S2、S3、S4的全部位作为所述原数据的特征信息。
在另一些实施例中,步骤S210可以使用校验子S1、S2、S3、S4的部分位作为所述原数据的特征信息。例如,步骤S210可以取用S1的前半部(或后半部)、S2的前半部(或后半部)、S3的前半部(或后半部)与S4的前半部(或后半部),作为所述原数据的特征信息。再例如,步骤S210可以取用S1的奇数位置(或偶数位置,或其他位置)的内容、S2的奇数位置(或偶数位置,或其他位置)的内容、S3的奇数位置(或偶数位置,或其他位置)的内容与S4的奇数位置(或偶数位置,或其他位置)的内容,作为所述原数据的特征信息。
在另一些实施例中,步骤S210可以使用所述原数据的校验子的部分或全部位进行逻辑运算,来产生所述原数据的特征信息。举例来说,假设所述原数据的数据量为4KB,而所述ECC方法每次处理的数据量为1KB,则所述原数据可以被切分为4个部分D1、D2、D3、D4。所述ECC方法可以分别对这4个部分D1、D2、D3、D4进行校验子运算,以获得四个校验子S1、S2、S3、S4。步骤S210可以使用S1、S2、S3、S4进行异或运算,来产生所述原数据的特征信息。假设所述原数据的数据量为4KB,而所述ECC方法每次处理的数据量为4KB,则所述ECC方法可以对这原数据进行校验子运算,以获得一个校验子S。这个校验子S可以被切分为n个部分(n可以视设计需求来决定),例如将S切分为四个校验子S5、S6、S7、S8。步骤S210可以使用S5、S6、S7、S8进行逻辑运算(例如异或运算),来产生所述原数据的特征信息。
请参照图2,控制器120在步骤S220中可以使用步骤S210的特征信息来查找特征列表。本实施例并不限制所述特征列表的数据结构。依照设计需求,在一些实施例中,所述特征列表的数据结构为数据链路(data link)或是其他结构。在所述特征列表中的每一笔记录包含特征字段。当控制器120在特征列表中找得到所述原数据的特征信息时,控制器120不将原数据所对应的经编码数据写入该非易失性存储器110(步骤S230)。当控制器120在特征列表中找不到所述原数据的特征信息时,控制器120将所述原数据的特征信息加入特征列表中(步骤S240),以及控制器120将所述原数据所对应的经编码数据写入非易失性存储器110(步骤S250)。。
图3是依照本发明另一实施例说明一种数据去重复方法的流程示意图。图3所示步骤S210与S220可以参照图2的相关说明,故不再赘述。依照设计需求,在一些实施例中,所述特征列表的数据结构为数据链路或是其他结构。在所述特征列表中的每一笔记录包含特征字段与物理地址(physical address)字段。请参照图1与图3,当步骤S220判断控制器120可以在特征列表中的特征字段找得到所述原数据的特征信息时,控制器120将进行步骤S330。当步骤S220判断控制器120在特征列表中的特征字段找不到所述原数据的特征信息时,控制器120将进行步骤S350。
于步骤S330中,控制器120可以将特征列表中具有所述特征信息的一笔记录移动至该特征列表的第一端位置,例如移至特征列表的开头(head)位置。在另一些实施例中,控制器120可以将在特征列表中的吻合所述特征信息的一笔对应记录移动至特征列表的尾端(tail)位置。在步骤S340中,控制器120可以更新地址映像表(如后详述),但不将原数据所对应的经编码数据写入非易失性存储器110。
在步骤S350中,控制器120可以将所述特征信息加入特征列表的第一端位置,例如加至特征列表的开头位置。在一些应用情境中,特征列表的容量是有限的。当将所述特征信息加入特征列表的第一端位置(例如开头位置),而特征列表已经满溢时,控制器120可以舍弃所述特征列表的第二端位置的内容,例如舍弃特征列表的尾端位置的内容。在另一些实施例中,控制器120可以将新的特征信息加入特征列表的尾端位置,而舍弃所述特征列表的开头位置的内容。在步骤S360中,控制器120可以更新地址映像表(如后详述)。于步骤S370中,控制器120可以将所述原数据所对应的经编码数据写入非易失性存储器110。
举例来说,在此假设主机10在先前时间发出一个写入命令(第一写入命令)欲将原数据写入逻辑地址LADD1,然后在目前时间发出另一个写入命令(第二写入命令)欲将相同的原数据写入逻辑地址LADD2。假设逻辑地址LADD1对应至物理地址PADD1,而逻辑地址LADD2对应至物理地址PADD2。在所述先前时间,步骤S210将第一写入命令的所述原数据转换为特征信息CH1,步骤S220判断所述特征列表没有特征信息CH1的相关记录。因此,控制器120将特征信息CH1与物理地址PADD1的对应关系新增至所述特征列表(步骤S350),控制器120将逻辑地址LADD1与物理地址PADD1的对应关系新增至所述地址映像表(步骤S360),以及控制器120将所述原数据所对应的经编码数据写入非易失性存储器110的物理地址PADD1处。在所述目前时间,步骤S210将第二写入命令的所述原数据转换为特征信息CH1,步骤S220判断所述特征列表具有特征信息CH1的相关记录。亦即,所述特征列表记录着特征信息CH1所对应的经编码数据曾经被写入物理地址PADD1处。因此,控制器120将在特征列表中具有特征信息CH1的这一笔记录移动至特征列表的第一端位置(步骤S330),以及控制器120将逻辑地址LADD2与物理地址PADD1的对应关系新增至所述地址映像表(步骤S340),但控制器120不将第二写入命令的相同原数据所对应的经编码数据写入非易失性存储器110的物理地址PADD2处。因此,控制器120可以减少相同的经编码数据被重复写入非易失性存储器110的次数。
值得注意的是,在不同的应用情境中,非易失性存储器110及/或控制器120的相关功能可以利用一般的编程语言(programming languages,例如C或C++)、硬件描述语言(hardware description languages,例如Verilog HDL或VHDL)或其他合适的编程语言来实现为软件、固件或硬件。可执行所述相关功能的编程语言可以被布置为任何已知的计算器可存取介质(computer-accessible medias),例如磁带(magnetic tapes)、半导体(semiconductors)存储器、磁盘(magnetic disks)或光盘(compact disks,例如CD-ROM或DVD-ROM),或者可通过互联网(Internet)、有线通信(wired communication)、无线通信(wireless communication)或其它通信介质传送所述编程语言。所述编程语言可以被存放在计算器的可存取介质中,以便于由计算器的处理器来存取/执行所述软件(或固件)的编程码(programming codes)。对于硬件实现,结合本文实施例所公开的态样,利用在一或多个控制器、微控制器、微处理器、专用集成电路(Application-specific integratedcircuit,ASIC)、数字信号处理器(digital signal processor,DSP)、现场可编程逻辑门阵列(Field Programmable Gate Array,FPGA)及/或其他处理单元中的各种示例性的逻辑区块、模块和电路可以被用于实现或执行本文所述功能。另外,本发明的装置和方法可以通过硬件和软件的组合来实现。
图4是示出根据本发明一实施例的图1所示控制器120的电路框图。在图4所示实施例中,控制器120包括中央处理单元121、存储器控制电路122、存储器缓冲器123、去重复电路124与错误校验纠正(Error Checking and Correcting,以下称ECC)电路125。中央处理单元121与存储器缓冲器123经由通信接口耦接至主机10。依照设计需求,所述通信接口包括小型计算机系统接口(small computer system interface,SCSI)、串行连接小型计算机系统接口(Serial Attached SCSI,SAS)、增强型小型设备接口(Enhanced Small DiskInterface,ESDI)、串行先进技术连接(serial advanced technology attachment,SATA)、快速外围组件互连(peripheral component interconnect express,PCI-express)、整合式电子装置(integrated drive electronics,IDE)接口、通用串行总线(universalserial bus,USB)、雷电(Thunderbolt)接口或其他接口。本实施例并没有限制主机10与非易失性存储装置100之间的接口结构。
当主机10发出写入命令时,待写入的原数据可以被暂存于存储器缓冲器123,而中央处理单元121可以将主机10的写入命令(包含逻辑地址)转换/译码为对应的内部控制信号(包含非易失性存储器110的物理地址),并将内部控制信号提供给存储器控制电路122与/或存储器缓冲器123。存储器缓冲器123的例子包括动态随机存取存储器(dynamicrandom access memory,DRAM)、静态随机存取存储器(static random access memory,SRAM)或是其他易失性存储器(volatile memory)。ECC电路125耦接至存储器缓冲器123以接收该原数据。ECC电路125可以执行ECC方法(算法),以便将暂存于存储器缓冲器123的原数据加以编码为码字(codeword,也称经编码数据)。在一些实施例中,ECC电路125可以执行BCH算法、LDPC算法或是其他ECC算法。
ECC电路125可以复用所述ECC方法来产生待写入的原数据的特征信息,并将特征信息存放在存储器缓冲器123。去重复电路124经由存储器缓冲器123接收ECC电路125所产生的特征信息。去重复电路124使用该特征信息来查找特征列表,以获得查找结果。中央处理单元121耦接至去重复电路124以接收查找结果。当在特征列表中找得到该特征信息时,中央处理单元121不将经编码数据写入非易失性存储器110。当在特征列表中找不到该特征信息时,中央处理单元121将发出内部控制信号给存储器控制电路122与去重复电路124。依照内部控制信号,存储器控制电路122可以寻址/控制非易失性存储器110,以便将经编码数据写入非易失性存储器110。依照内部控制信号,去重复电路124将特征信息加入特征列表。中央处理单元121与去重复电路124所进行的数据去重复方法可以参照图2或图3的相关说明,故不再赘述。
当主机10发出读取命令时,中央处理单元121可以将主机10的读取命令(包含逻辑地址)转换/译码为对应的内部控制信号(包含非易失性存储器110的物理地址)。依照内部控制信号,存储器控制电路122可以寻址/控制非易失性存储器110,以便将非易失性存储器110内的码字(经编码数据)读出。ECC电路125可以执行ECC算法,以便将码字译码为数据,并将经译码的数据暂存于存储器缓冲器123。然后,中央处理单元121可以将暂存于存储器缓冲器123的数据回传给主机10。
图5是示出根据本发明另一实施例的图1所示控制器120的电路框图。在图5所示实施例中,控制器120包括中央处理单元121、存储器控制电路122、存储器缓冲器123、去重复电路124与ECC电路125。图5所示中央处理单元121、存储器控制电路122、存储器缓冲器123、去重复电路124与ECC电路125可以参照图4的相关说明,故不再赘述。在图5所示实施例中,去重复电路124耦接至ECC电路125,以直接接收ECC电路125所产生的特征信息。
综上所述,上述诸实施例所述非易失性存储装置100及其数据去重复方法复用了既有的ECC方法来产生对应于原数据的特征信息。基于所述特征信息与特征列表的比对,控制器120可以知道此原数据所对应的经编码数据是否曾经被写入非易失性存储器110。因此,上述诸实施例所述非易失性存储装置100及其数据去重复方法可以减少相同的经编码数据被重复写入非易失性存储器110的次数。
虽然本发明已以实施例公开如上,然其并非用以限定本发明,任何本领域技术人员,在不脱离本发明的精神和范围内,当可作些许的更动与润饰,故本发明的保护范围应以所附的权利要求所界定的范围为准。
附图标记列表
10:主机
100:非易失性存储装置
110:非易失性存储器
120:控制器
121:中央处理单元
122:存储器控制电路
123:存储器缓冲器
124:去重复电路
125:错误校验纠正(ECC)电路
S210~S250、S330~S370:步骤

Claims (21)

1.一种非易失性存储装置,包括:
一非易失性存储器;以及
一控制器,耦接至该非易失性存储器,用以进行一错误校验纠正方法而将一原数据转换为一经编码数据,以及用以进行一数据去重复方法来减少相同的该经编码数据被重复写入该非易失性存储器的次数,其中该数据去重复方法包括:复用该错误校验纠正方法的计算操作和计算结果中的至少一个,来产生对应于该原数据的一特征信息;使用该特征信息来查找一特征列表;当在该特征列表中找得到该特征信息时,不将该原数据所对应的该经编码数据写入该非易失性存储器;以及当在该特征列表中找不到该特征信息时,将该原数据所对应的该特征信息加入该特征列表以及将该原数据所对应的该经编码数据写入该非易失性存储器。
2.如权利要求1所述的非易失性存储装置,其中该控制器包括:
一存储器缓冲器,用以暂存该原数据;
一错误校验纠正电路,耦接至该存储器缓冲器以接收该原数据,用以对该原数据进行该错误校验纠正方法而获得该经编码数据与该特征信息;
一去重复电路,接收该错误校验纠正电路所产生的该特征信息,其中该去重复电路使用该特征信息来查找该特征列表以获得一查找结果;以及
一中央处理单元,耦接至该去重复电路以接收该查找结果,其中当在该特征列表中找得到该特征信息时,该中央处理单元不将该经编码数据写入该非易失性存储器,以及当在该特征列表中找不到该特征信息时,该中央处理单元将该经编码数据写入该非易失性存储器以及控制该去重复电路去将该特征信息加入该特征列表。
3.如权利要求1所述的非易失性存储装置,其中所述产生对应于该原数据的该特征信息的步骤包括:
使用对应于该原数据的该经编码数据的部分或全部奇偶校验位作为该特征信息。
4.如权利要求1所述的非易失性存储装置,其中所述产生对应于该原数据的该特征信息的步骤包括:
使用对应于该原数据的该经编码数据的部分或全部奇偶校验位进行一逻辑运算来产生该特征信息。
5.如权利要求4所述的非易失性存储装置,其中该逻辑运算包括异或运算。
6.如权利要求1所述的非易失性存储装置,其中所述产生对应于该原数据的该特征信息的步骤包括:
对该原数据进行该错误校验纠正方法的一校验子运算,以产生该原数据的至少一校验子;以及
使用该至少一校验子的部分或全部位作为该特征信息。
7.如权利要求6所述的非易失性存储装置,其中该校验子运算包括一低密度奇偶校验的校验子运算。
8.如权利要求1所述的非易失性存储装置,其中所述产生对应于该原数据的该特征信息的步骤包括:
对该原数据进行该错误校验纠正方法的一校验子运算,以产生该原数据的至少一校验子;以及
使用该至少一校验子的部分或全部位进行一逻辑运算来产生该特征信息。
9.如权利要求8所述的非易失性存储装置,其中该逻辑运算包括异或运算。
10.如权利要求1所述的非易失性存储装置,其中所述查找该特征列表的步骤包括:
当在该特征列表中找得到该特征信息时,将该特征列表中该特征信息移动至该特征列表的一第一端位置;以及
当在该特征列表中找不到该特征信息时,将该特征信息加入该特征列表的该第一端位置。
11.如权利要求10所述的非易失性存储装置,其中所述查找该特征列表的步骤还包括:
当将该特征信息加入该特征列表的该第一端位置时,舍弃该特征列表的一第二端位置的内容。
12.一种非易失性存储装置的数据去重复方法,用以减少相同的一经编码数据被重复写入一非易失性存储器的次数,其中该非易失性存储装置用以进行一错误校验纠正方法而将一原数据转换为该经编码数据,而所述数据去重复方法包括:
复用该错误校验纠正方法的计算操作和计算结果中的至少一个,来产生对应于该原数据的一特征信息;
使用该特征信息来查找一特征列表;
当在该特征列表中找得到该特征信息时,不将该原数据所对应的该经编码数据写入该非易失性存储器;以及
当在该特征列表中找不到该特征信息时,将该原数据所对应的该特征信息加入该特征列表以及将该原数据所对应的该经编码数据写入该非易失性存储器。
13.如权利要求12所述的数据去重复方法,其中所述产生对应于该原数据的该特征信息的步骤包括:
使用对应于该原数据的该经编码数据的部分或全部奇偶校验位作为该特征信息。
14.如权利要求12所述的数据去重复方法,其中所述产生对应于该原数据的该特征信息的步骤包括:
使用对应于该原数据的该经编码数据的部分或全部奇偶校验位进行一逻辑运算来产生该特征信息。
15.如权利要求14所述的数据去重复方法,其中该逻辑运算包括异或运算。
16.如权利要求12所述的数据去重复方法,其中所述产生对应于该原数据的该特征信息的步骤包括:
对该原数据进行该错误校验纠正方法的一校验子运算,以产生该原数据的至少一校验子;以及
使用该至少一校验子的部分或全部位作为该特征信息。
17.如权利要求16所述的数据去重复方法,其中该校验子运算包括一低密度奇偶校验的校验子运算。
18.如权利要求12所述的数据去重复方法,其中所述产生对应于该原数据的该特征信息的步骤包括:
对该原数据进行该错误校验纠正方法的一校验子运算,以产生该原数据的至少一校验子;以及
使用该至少一校验子的部分或全部位进行一逻辑运算来产生该特征信息。
19.如权利要求18所述的数据去重复方法,其中该逻辑运算包括异或运算。
20.如权利要求12所述的数据去重复方法,其中所述查找该特征列表的步骤包括:
当在该特征列表中找得到该特征信息时,将该特征列表中该特征信息移动至该特征列表的一第一端位置;以及
当在该特征列表中找不到该特征信息时,将该特征信息加入该特征列表的该第一端位置。
21.如权利要求20所述的数据去重复方法,其中所述查找该特征列表的步骤还包括:
当将该特征信息加入该特征列表的该第一端位置时,舍弃该特征列表的一第二端位置的内容。
CN201710654881.2A 2017-03-20 2017-08-03 非易失性存储装置及其数据去重复方法 Active CN107402725B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201762474023P 2017-03-20 2017-03-20
US62/474,023 2017-03-20
US15/641,242 2017-07-04
US15/641,242 US10318202B2 (en) 2017-03-20 2017-07-04 Non-volatile memory apparatus and data deduplication method thereof

Publications (2)

Publication Number Publication Date
CN107402725A CN107402725A (zh) 2017-11-28
CN107402725B true CN107402725B (zh) 2020-08-25

Family

ID=60401838

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710654881.2A Active CN107402725B (zh) 2017-03-20 2017-08-03 非易失性存储装置及其数据去重复方法

Country Status (1)

Country Link
CN (1) CN107402725B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11023388B2 (en) * 2018-09-21 2021-06-01 SK Hynix Inc. Data path protection parity determination for data patterns in storage devices
CN111949433A (zh) * 2019-05-15 2020-11-17 北京兆易创新科技股份有限公司 非易失性存储器工作参数的处理方法、控制装置及存储器
TWI755739B (zh) * 2020-05-26 2022-02-21 慧榮科技股份有限公司 記憶體控制器與資料處理方法

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101243417A (zh) * 2005-07-15 2008-08-13 松下电器产业株式会社 非易失性存储装置、存储控制器以及不良区域检测方法
CN103873506A (zh) * 2012-12-12 2014-06-18 鸿富锦精密工业(深圳)有限公司 存储集群中的数据块去重系统及方法
CN104281412A (zh) * 2013-07-04 2015-01-14 北京中科同向信息技术有限公司 一种在数据存储前去除重复数据的方法
US9075710B2 (en) * 2012-04-17 2015-07-07 SanDisk Technologies, Inc. Non-volatile key-value store
CN105912622A (zh) * 2016-04-05 2016-08-31 重庆大学 一种针对无损压缩文件的数据去重方法
US9665287B2 (en) * 2015-09-18 2017-05-30 Alibaba Group Holding Limited Data deduplication using a solid state drive controller

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101243417A (zh) * 2005-07-15 2008-08-13 松下电器产业株式会社 非易失性存储装置、存储控制器以及不良区域检测方法
US9075710B2 (en) * 2012-04-17 2015-07-07 SanDisk Technologies, Inc. Non-volatile key-value store
CN103873506A (zh) * 2012-12-12 2014-06-18 鸿富锦精密工业(深圳)有限公司 存储集群中的数据块去重系统及方法
CN104281412A (zh) * 2013-07-04 2015-01-14 北京中科同向信息技术有限公司 一种在数据存储前去除重复数据的方法
US9665287B2 (en) * 2015-09-18 2017-05-30 Alibaba Group Holding Limited Data deduplication using a solid state drive controller
CN105912622A (zh) * 2016-04-05 2016-08-31 重庆大学 一种针对无损压缩文件的数据去重方法

Also Published As

Publication number Publication date
CN107402725A (zh) 2017-11-28

Similar Documents

Publication Publication Date Title
US10642522B2 (en) Method and system for in-line deduplication in a storage drive based on a non-collision hash
TWI666643B (zh) 非依電性記憶體裝置及其資料去重複方法
US8812942B2 (en) Interleaving apparatuses and memory controllers having the same
US20160218751A1 (en) High/Low Energy Zone Data Storage
TW201901426A (zh) 非揮發性記憶體裝置及其讀取方法
US20070268905A1 (en) Non-volatile memory error correction system and method
KR102275717B1 (ko) 플래시 메모리 시스템 및 그의 동작 방법
US20130227346A1 (en) Controlling nonvolatile memory device and nonvolatile memory system
KR102411329B1 (ko) 디코딩 성공 추세에 기초한 조정가능한 판독 재시도 순서
US11050438B2 (en) Memory controller
CN107402725B (zh) 非易失性存储装置及其数据去重复方法
KR102588969B1 (ko) 오류 정정 디코더 및 이를 포함하는 메모리 시스템
CN107102953B (zh) 非易失性存储器装置及其迭代排序方法
TWI536749B (zh) 解碼方法、記憶體儲存裝置與記憶體控制電路單元
CN113314179A (zh) 用于执行读取操作的存储器系统及其操作方法
US10268399B2 (en) Memory system using message monitoring and first and second namespaces
US11385833B2 (en) Method and system for facilitating a light-weight garbage collection with a reduced utilization of resources
US11177012B1 (en) Fast copy through controller
TWI594253B (zh) 非依電性記憶體裝置及其空頁偵測方法
TWI675373B (zh) 低密度奇偶檢查裝置與其操作方法
US10783035B1 (en) Method and system for improving throughput and reliability of storage media with high raw-error-rate
CN108694963B (zh) 数据转换设备及方法
US11461173B1 (en) Method and system for facilitating efficient data compression based on error correction code and reorganization of data placement
KR102678314B1 (ko) 유저 데이터에 대한 에러 정정을 수행하는 에러 정정 회로 및 이를이용한 에러 정정 방법
TW202314500A (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