CN110383698B - 数据访问方法及闪存设备 - Google Patents

数据访问方法及闪存设备 Download PDF

Info

Publication number
CN110383698B
CN110383698B CN201680091824.1A CN201680091824A CN110383698B CN 110383698 B CN110383698 B CN 110383698B CN 201680091824 A CN201680091824 A CN 201680091824A CN 110383698 B CN110383698 B CN 110383698B
Authority
CN
China
Prior art keywords
data
storage area
information
code level
shortened code
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
CN201680091824.1A
Other languages
English (en)
Other versions
CN110383698A (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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
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
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of CN110383698A publication Critical patent/CN110383698A/zh
Application granted granted Critical
Publication of CN110383698B publication Critical patent/CN110383698B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes

Landscapes

  • Physics & Mathematics (AREA)
  • Algebra (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

一种数据访问方法及闪存设备。所述闪存设备在存储数据时,可以缩短待编码数据中的有效信息位,并用设置的填充信息填充的方式重新构造被编码数据。之后,所述控制器根据设置的BCH编码对构造后的数据进行编码,并将编码后的数据进行存储。根据这种方式,即使采用的是纠错能力较低的ECC编码,也能够保证数据的可靠性,延长闪存设备的使用寿命。

Description

数据访问方法及闪存设备
技术领域
本发明涉及存储技术领域,尤其涉及一种数据访问方法及闪存设备。
背景技术
近年来,闪存技术迅速发展,存储密度由单比特存储元发展到最近的多比特存储元,如6比特。并且,闪存的制造工艺由65纳米展到最近的10纳米。这些发展使得闪存的存储密度快速增加,同时也使得闪存的可靠性大大降低,闪存的可靠性因此而变差。
为了解决闪存的可靠性问题,闪存为每个闪存页配备了ECC(Error CorrectingCode,纠错码)。现在主要使用的ECC编码为BCH编码和LDPC编码。其中,BCH是一种循环码,通过生成矩阵g(x)对k位信息码进行编码得到n位的编码信息,这个编码信息的冗余位长度为n-k,可以纠正t个错误。随着闪存可靠性的降低,现有技术中通常采用具有高纠错能力BCH码或LDPC码,但是具有高纠错能力BCH码或LDPC码使得硬件开销变大,编解码复杂度变高,能耗也变高。
发明内容
本申请提供了一种数据访问方法及闪存设备,能够采用纠错能力较弱的ECC编码来保证数据的可靠性。
第一方面,本申请提供一种数据访问方法。该方法由闪存设备中的控制器来执行。在所述方法中,所述控制器获取待访问的第一存储区域的第一缩短码等级,所述第一缩短码等级用于指示所述第一存储区域中缩短信息的比例。在获得所述第一存储区域中缩短信息的比例之后,所述控制器根据所述第一缩短码等级将待写入所述第一存储区域的第一数据转换为第二数据。其中,所述第二数据的大小与所述第一存储区域的大小相同。所述第二数据中包括多个编码单元,每个编码单元中包括所述第一数据中的部分数据以及第一填充信息。所述第一填充信息的大小是根据第一存储区域中缩短信息的比例以及所述编码单元的大小计算获得的。在获得所述第二数据之后,所述控制器根据设置的BCH编码对所述第二数据中的每个编码单元进行编码以获得所述第二数据的编码信息。其中,所述每个编码单元的大小与所述BCH编码的信息位长度相同。之后,所述控制器将所述第二数据写入所述第一存储区域,并且将所述第二数据的编码信息写入所述第一存储区域的带外区域。
本申请提供的数据访问方法,为了在采用纠错能力较低的BCH编码时依然保证存储的数据的可靠性,借鉴缩短BCH码的原理缩短待编码数据中的有效信息位,并用填充(padding)的方式来构造被编码数据。由于采用了缩短码的方式,使得实际存储到闪存页中的数据位变少,并且,由于填充码信息都是预先可知的,因此使得实际存储的数据中不可纠正的错误率变低,闪存设备的可靠性得到了提高。通过这种方式,即使采用纠错能力较低的ECC编码,也能够保证数据的可靠性,延长闪存设备的使用寿命。
进一步的,由于被编码的数据中缩短的部分填充了填充信息,使得编码单元的长度和未缩短前的编码单元的长度相同,因此,对控制器中的ECC模块来说,即使可编码的信息位根据闪存设备的使用不断缩短,也依然能够保持所述控制器中的ECC模块的接口不变。从而在保证数据可靠性的基础上,降低了硬件的开销。
实际应用中,所述控制器可以根据设置的闪存块的地址与缩短码等级的对应关系获得所述第一存储区域的第一缩短码等级。其中所述第一缩短码等级为所述第一存储区域所属的闪存块的缩短码等级。
在一种可能的实现方式中,所述控制器可以根据设置的第一缩短码等级与缩短信息的比例的对应关系获得所述第一存储区域中的缩短信息的比例。
在一种可能的实现方式中,在读取数据的过程中,在所述控制器读取所述第一存储区域中存储的第三数据以及所述第一存储区域的带外区域中存储的所述第二数据的编码信息之后,所述控制器根据所述第二数据的编码信息对所述第三数据进行校验纠错,以获得所述第二数据。然后,所述控制器根据所述第一缩短码等级、所述第二数据中的编码单元的长度以及设置的填充信息的位置信息获得所述第二数据中每个编码单元中的数据的地址信息,并根据所述每个编码单元中的数据的地址信息从所述第二数据获取所述第一数据,其中,所述第一数据中不包括所述填充信息。
在又一种可能的实现方式中,所述第一存储区域的缩短码等级为所述第一存储区域所属的闪存块的缩短码等级。在所述控制器对所述第三数据进行校验纠错的过程中,当所述第三数据中的错误达到预设阈值时,所述控制器将所述第一目标存储区域所属的闪存块的缩短码等级由所述第一缩短码等级调整为第二缩短码等级。其中,所述第二缩短码等级指示的填充信息的比例大于所述第一缩短码等级指示的填充信息的比例。通过这种方式,可以根据闪存块使用的情况调整闪存块的缩短码等级,从而进一步的缩短被编码信息中的有效数据位,以进一步提高存储的数据的可靠性。
在一种可能的实现方式中,所述第三数据中的错误达到预设阈值包括:所述第三数据中的出错位数大于设置的阈值且小于设置的BCH编码中的最大可纠错位数。
在又一种可能的实现方式中,当所述第三数据中的出错位数大于设置的阈值且小于设置的BCH编码中的最大可纠错位数时,所述控制器记录所述第一存储区域在此时的最大纠错位数。在所述第一存储区域所属的闪存块被擦除后,所述控制器将所述第一存储区域的所属的闪存块的缩短码等级由所述第一缩短码等级调整为所述第二缩短码等级。
在又一种可能的实现方式中,当所述控制器接收待写入第二存储区域的第四数据之后,所述控制器确定所述第二存储区域的缩短码等级为第二缩短码等级,其中,所述第二存储区域与所述第一存储区域属于同一个闪存块。然后,所述控制器根据所述第二缩短码等级将所述第四数据转换为第五数据。其中,所述第五数据的大小与所述第二存储区域的大小相同。所述第五数据中包括多个编码单元,每个编码单元中包括所述第四数据中的部分数据以及第二填充信息。所述第五数据中的编码单元中的第二填充信息的大小是根据所述第二缩短码等级以及所述第五数据中的编码单元的大小计算获得的。在所述控制器根据所述BCH编码对所述第五数据中的每个编码单元进行编码以得到所述第五数据的编码信息之后,所述控制器将所述第五数据写入所述第二存储区域,并且,将所述第五数据的编码信息写入所述第二存储区域的带外区域。其中,所述第五数据中的每个编码单元的大小与所述BCH编码的信息位长度相同。
第二方面,本申请提供了一种闪存设备,所述闪存设备包括控制器以及与所述控制器连接的存储介质。其中,所述存储介质用于提供多个存储区域。所述控制器用于执行上述第一方面或第一方面的任意一种可能的实现方式提供的方法。
第三方面,本申请提供了又一种闪存设备,包括用于实现上述第一方面或第一方面的任意一种可能的实现方式提供的方法的功能的虚拟模块。
第四方面,本申请提供了一种计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令用于执行前述第一方面以及第一方面的任意一种可能的实现方式中所述的方法。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例。
图1为本发明实施例提供的一种闪存设备的结构示意图;
图2为本发明实施例提供的一种数据写入方法的流程图;
图3为本发明实施例提供的一种待写入数据的编码结构示意图;
图4为本发明实施例提供的一种待写入数据组织示意图;
图5为本发明实施例提供的一种缩短码等级与缩短信息比例的对应关系示意图;
图6为本发明实施例提供的一种数据读取方法的流程图;
图7为本发明实施例提供的又一种数据写入方法的流程图;
图8为本发明实施例提供的又一种闪存设备的结构示意图。
具体实施方式
为了使本领域的技术人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。
图1为本发明实施例提供的一种闪存设备的硬件结构图。闪存设备为基于闪存的存储设备,例如可以为固态硬盘(Solid State Drive,SSD)。如图1所示,闪存设备100可以包括控制器102、主机接口106以及闪存阵列108。
主机接口106用于连接主机,与主机进行通信。例如,用于接收主机下发的I/O请求,或将从闪存阵列108中读出的数据返回给主机。其中,主机接口106可以包括串行高级技术附件(Serial Advanced Technology Attachment,SATA)接口、通用串行总线(UniversalSerial Bus,USB)接口、光纤通道技术(Fibre Channel,FC)接口或快捷外设互联标准(Peripheral Component Interconnect Express,PCI-E)接口等。
闪存阵列108,用于存储数据。闪存阵列108可以是多个存储单元组成。在本发明实施例中,闪存阵列108又可以被称为存储介质,闪存阵列108中的存储单元是指用于存储数据的最小存储介质单元。闪存阵列108可以使用单阶存储单元(Single-level cell,SLC)或多阶存储单元(Multi-level cell,MLC),其中,每个SLC单元存储1比特的信息,每个MLC单元则可以存储1比特以上的数据。在本发明实施例中,闪存阵列108中的存储单元为多阶存储单元MLC。例如,可以包括每个存储单元存储2比特数据的MLC,还可以包括每个单元存储3比特数据的三阶存储单元(Trinary-Level Cel,TLC)。
控制器102主要包括处理器(processor)1022、缓存(cache)1024以及闪存接口(flash interface)1026。处理器1022、缓存1024、以及闪存接口1026通过通信总线完成相互问的通信。
缓存1024是位于处理器1022与内存之间的临时存储器,它的容量比内存小但是交换速度却比内存要快。缓存1024用于缓存处理器1022待写入闪存阵列108的数据或者用于缓存从闪存阵列108读取的数据。
闪存接口1026,与闪存阵列108连接,用于与闪存阵列108进行通信,控制与闪存阵列108之间的数据传输。例如,可以用于管理对处理器1022下发的对闪存阵列108的访问命令以及进行数据传输。可以理解的是,闪存接口1026中可以包括多个通信通道,用于连接闪存阵列108中不同的存储单元。
实际应用中,闪存阵列108被分为一系列128KB(kilobyte)的块(block),这些块是闪存器件中最小的可擦除实体。每个block中包括多个页(page)。闪存设备100的读操作和写操作的基本单位是页(page)。通常,一个page为4KB。每个page还可以被划分为多个扇区(sector)。每个sector可以包括多个用于存储数据的存储单元。通常,一个sector可以为512字节。由于每一页的容量决定了一次可以传输的数据量,因此大容量的页有更好的性能。并且,采用大容量的页可以降低电路的复杂度。随着技术的发展,闪存设备100中的一个物理页可以为16KB或32KB。为了描述方便,在本发明实施例中,一个block也可以被称为一个闪存块,一个page也可以被称为一个闪存页。
由于操作系统下发的写操作请求通常以4KB为粒度。换一种表达方式,操作系统下发的操作请求中,通常以4KB为一个逻辑页。因此,实际应用中,对于具有一个页可容纳16KB或32KB的大页容量的闪存设备,每个扇区的大小可以为4KB。闪存设备在建立映射关系时通常以4KB为单位建立从逻辑地址到物理地址的映射关系。
处理器1022可以是一个中央处理器CPU,或者是特定集成电路(ApplicationSpecific Integrated Circuit,ASIC),或者是被配置成实施本发明实施例的一个或多个集成电路。在处理器1022中安装有软件程序,不同的软件程序可以视作一个处理模块,具有不同的功能。通常,处理器1022中可以包括垃圾回收模块、校验纠错模块、坏块管理模块等处理模块,从而处理器1022可以实现对闪存阵列108的访问请求,或者对闪存阵列108中的数据进行管理等等。例如,处理器1022可以通过通信总线接收主机接口106转发的输入输出I/O请求,并根据主机下发的I/O请求通过闪存接口1026访问闪存阵列108,向闪存阵列108中写入数据或者从闪存阵列108中读取数据。
本领域技术人员可以知道,为了保证数据的准确性,在闪存设备中设置有校验纠错机制。如图1所示,处理器1022中可以包括校验纠错模块1023。校验纠错模块1023主要通过纠错码(Error Correction Code,ECC)对数据进行校验和纠错。校验纠错模块1023可以在写入数据是对数据进行编码,并在读取数据时进行差错检测和修正。ECC能够通过硬件或软件实现。具体的,每个闪存页上都包括额外的存储空间,也就是带外(out of bank,OOB)区域。带外区域用于存储ECC代码或逻辑地址到物理地址的映射信息等信息。当数据写入的时候,处理器1022内部的校验纠错模块1023可以根据一个扇区中的数据生成ECC签名(也可称为ECC代码)。并将生成的ECC签名保存于该扇区所属闪存页中的带外区域。当从一个闪存页中读取数据的时候,该闪存页的带外区域中的ECC签名也被读出,校验纠错模块1023读取ECC签名,并根据读取的数据和ECC签名判断是否出现数据错误。如果检测到读取的数据包含错误比特,就需要使用相应的ECC算法来修正检测到的错误。需要说明的是,处理器1022中还可以包括其他软件模块,由于在本发明实施例中主要对处理器中的校验纠错机制进行描述,因此图1中只图示了校验纠错模块1023。如前所述,ECC算法可以包括BCH编码或LDPC编码等。本发明实施例主要对采用BCH编码的编码方式进行描述。
本领域技术人员可以知道,BCH码是1959年由Bose、Ray-Chaudhuri及Hocquenghem发现的二元线性循环码,人们用他们的名字的缩写将该循环码命名为BCH码。BCH码能纠正多个随机错误。常见的BCH码可以包括戈雷(Golay)码、扩展BCH码以及缩短BCH码。其中,戈雷(Golay)码是一个特殊的非本原BCH码,能纠正3个错误。扩展BCH码是为了得到偶数码长,并增加检错能力,在BCH码的基础上扩展得到的。扩展BCH码相当于将BCH码再加上一位的偶校验,它不再有循环性。缩短BCH码与BCH码相比,其可纠错的位数不变,但其码长比BCH码的码长短。例如,假设BCH码为BCH(n,k,t),则该BCH码可以对k个信息位进行编码,以得到长度为n的编码,并且可以纠正t个错误。其中,k即为BCH编码的信息位长度,n也可以被称为BCH码的码长。则缩短BCH码可以对k-l个信息位进行编码,得到长度为n-l的编码,并且依然可以纠正t个错误。缩短BCH码由于纠错能力和BCH码相同,但码长较短。换一种表达方式,对于同样的数据,采用缩短BCH码的编码单元比采用BCH码的编码单元更多。因此,采用缩短BCH码使得正确解码的可能性得到了提高。研究表明,当缩短码比例增加时,闪存设备的错误率会下降,从而闪存设备中存储的数据的可靠性得到了提高。其中,缩短码比例为缩短码的长度与纠错的信息位长度的比值。例如,根据上述示例,缩短码比例可以表示为l/k,其中,l为缩短的信息位长度,k为BCH编码的信息位的长度,也可以将k称为BCH编码可纠错的信息位的长度。
图2为本发明实施例提供的一种数据写入方法的流程图。该方法可以由图1所示的闪存设备100中的控制器1022来执行,用于将数据写入闪存阵列108中。如前所述,为了保证存储的数据的准确性,控制器1022在执行写操作的过程中,会将待写入的数据进行编码,然后再写入存储阵列108。在读取数据时,可以根据编码的信息对读取的数据进行校验纠错。其中,ECC算法可以包括BCH编码或LDPC编码等。在本发明实施例,主要对采用BCH编码的数据写入过程进行优化,使得即使采用纠错能力较低的BCH编码,依然能够保证数据的可靠性。因此在本发明实施例中,以BCH编码为例对本发明实施例提供的数据写入方法进行描述。下面将结合图1对图2中的方法进行详细描述。
在步骤202中,控制器1022接收第一访问请求,其中,所述第一访问请求中携带有待访问的地址以及待写入的数据。实际应用中,控制器1022可以通过主机接口106接收主机的操作系统下发的第一访问请求,在操作系统下发的第一访问请求中可以携带有待访问存储区域的地址信息。第一访问请求中携带的地址信息为待访问的第一存储区域的逻辑地址。实际应用中,当第一访问请求为写请求时,第一访问请求中还可以携带有待写入的数据或者待写入数据的缓存地址的信息。可以理解的是,当第一访问请求中携带有待写入数据的缓存地址信息时,控制器1022能够根据待写入数据的缓存地址信息从缓存1024中获取待写入数据。
在步骤204中,控制器1022根据所述待访问地址确定第一存储区域。本领域技术人员可以知道,由于闪存设备无法进行覆盖写,也就是说,闪存设备执行写操作时不能将数据直接覆盖闪存设备中已经存储的旧数据,必须把旧数据擦除后,才能在该存储位置写入新的数据,因此,访问请求中通常携带的是待访问存储区域的逻辑地址,并且,在闪存设备中维护有存储区域的逻辑地址和物理地址的映射关系,从而能根据待访问请求中携带的逻辑地址查找到待访问的物理地址。在本发明实施例中,在接收到第一访问请求后,控制器1022可以根据存储的逻辑地址和物理地址的映射关系将第一访问请求中的逻辑地址转换为物理地址。从而闪存设备能够根据转换获得的物理地址确定本次写操作待访问的存储区域。为了描述方便,将第一访问请求待访问的存储区域称为第一存储区域。可以理解的是,由于写操作是以page为操作单位,因此,所述第一存储区域可以是一个闪存设备100中的一个闪存页。
在步骤206中,控制器1022获得所述第一存储区域的缩短码等级。本领域技术人员可以知道,为了提高存储的数据的可靠性,可以采用纠错能力较强的BCH码。然而,实际应用中,纠错能力的提升会导致闪存设备的时延、功耗等呈指数的增加。因此,实际应用中,采用纠错能力较强的BCH码并不是提高数据可靠性的最优解决方案。如前所述,使用缩短BCH码能够使闪存设备100中存储的数据的可靠性得到提升。因此,在本发明实施例中,采用纠错能力较低的BCH编码来降低闪存设备100的功耗,并且,配合缩短码的应用原理在保证闪存设备100低开销的同时提高数据的可靠性。
在本发明实施例中,可以为不同的block设置不同的缩短码等级。根据这种方式,能够配合使用不同程度的缩短码,保证不同block中的数据的可靠性。在本发明实施例中,同一个block中的不同页均具有相同的缩短码等级。缩短码等级用于指示闪存页中缩短信息的比例。换一种表达方式,缩短码等级用于指示闪存页中减少的数据量。例如,实际应用中可以使用缩短码等级来指示减少的扇区数量。以32KB的闪存页为例,假设每个扇区大小为4KB,则一个闪存页可以包括8个扇区。如果该闪存页所属的block的缩短码等级为1,缩短码等级为1用于指示该闪存页中缩短信息的比例为1/8,则表明该闪存页中减少的数据量为1个扇区的数据量,可用空间为7个扇区。
在本发明实施例中,由于闪存设备中闪存块的磨损程度不同,因此不同的闪存块可以有不同的缩短码等级。每个闪存块的缩短码等级信息可以以记录表的形式设置在闪存设备中。具体的,缩短码等级记录表中可以包括闪存块的位置信息以及该闪存块对应的缩短码等级。缩短码等级记录表可以存储于闪存设备的内存中,也可以存储于缓存1024中,还可以存储在闪存阵列108中。可以理解的是,实际应用中,缓存1024可以包括备电装置,当将缩短码等级记录表存储于闪存设备的缓存1024中时,该备电装置可以支持在闪存设备100掉电之前将所述缩短码等级记录表写回闪存阵列108中,以避免丢失。在本发明实施例中,不对缩短码等级记录表的具体存储位置进行限定。并且,实际应用中,闪存块的位置信息以及该闪存块对应的缩短码等级的对应关系还可以以其他形式记录在闪存设备中,在本发明实施例中不进行限定。
当控制器1022根据所述待访问地址确定第一存储区域之后,在本步骤中,控制器1022可以根据所述第一存储区域的地址以及设置的闪存块与缩短码等级的对应关系获取所述第一存储区域所属的闪存块的缩短码等级。在本发明实施例中,为了描述方便,也可以将闪存块的缩短码等级称为该闪存块中的闪存页的缩短码等级,将控制器1022在执行第一访问请求的过程中获取的第一存储区域的缩短等级称为第一缩短码等级。
在步骤208中,控制器1022根据所述第一缩短码等级将待写入所述第一存储区域的第一数据转换为第二数据。其中,所述第二数据的大小与所述第一存储区域的大小相同。所述第二数据中包括多个编码单元,每个编码单元中包括所述第一数据中的部分数据以及第一填充信息。所述第一填充信息的大小是根据所述第一存储区域中缩短信息的比例以及所述编码单元的大小计算获得的。
在本发明实施例中,为了提高数据的可靠性,在存储数据的过程中采用缩短信息位的方式对数据进行存储。然而,若直接采用缩短BCH码对待存储的数据进行编码,则控制器1022中的校验纠错模块1023需要根据缩短的信息位的变化调整上下层接口以对不同长度的数据进行编码,从而会增加硬件开销。为了不改变硬件接口的设计,使得即使缩短的信息位不断变化闪存设备均可以采用统一的硬件接口,并且可以只采用一个生成矩阵来对数据进行编码,在本发明实施例中,采用填充的方式来补齐缩短的信息位,使得控制器1022中的校验纠错模块1023无需感知数据信息位的变化,并且又能提升存储的数据的可靠性。换一种表达方式,本发明实施例提供的数据方法对校验纠错模块1023是透明的。
本领域技术人员可以知道,控制器1022执行写操作时是以page为粒度,BCH编码是以编码单元为操作粒度,其中,可以将一个扇区sector的数据作为一个编码单元。当然,一个编码单元可以包括多个扇区的数据或半个扇区的数据。在本发明实施例中,不对编码单元的大小进行限定。根据这种方式,一个闪存页中可以包括多个编码单元。以BCH(n,k,t)编码为例,其中,k为编码的信息位的长度,也可以称为编码单元的长度。n为编码后获得的编码信息的长度,或者也可以称为BCH码的码长。t为可纠正信息位中的错误的数量。如图3所示,图3为本发明实施例提供的一种编码单元构造方式示意图。在本发明实施例中,假设缩短的信息位长度为l,则编码的信息位长度(即被编码的数据的长度)变为k-l。为了在缩短信息位后依然能够使用设置的BCH(n,k,t)编码实现纠正t个错误的目的,在本发明实施例中,可以填充长度为l的填充信息,以使得填充信息和缩短后的数据的长度的总和依然为编码单元的长度k。通过这种方式,校验纠错模块1023依然能够按照设置的BCH(n,k,t)编码接口以及编译码器对包含k位的编码单元进行编码,实现纠正t个错误的目的,其中,填充后的编码单元中包括k-l位数据以及l位的填充信息。在本发明实施例中,填充信息可以为“0”或“1”。且每个编码单元中的填充信息可以位于数据的前面也可以位于数据的后面。
图3对本发明实施例提出的编码单元的构造方式进行了示意。下面将结合图4对本发明实施例中获得待写入闪存阵列108的闪存页的数据进行描述。在本发明实施例中,可以先将接收的待存储数据缓存在缓存1024中,在控制器1022执行写操作的过程中,控制器1022可以从缓存1024中获取待存储到所述第一存储区域中的数据,并根据所述第一存储区域的缩短码等级对存储于所述第一存储区域中的数据进行构造。具体的,以第一存储区域为一个闪存页,一个编码单元为一个扇区为例。图4为本发明实施例提供的一种闪存页结构示意图。如图4所示,以缓存1024中缓存有待写入所述第一存储区域的缓存页402为例,缓存页中包含有4个扇区:S1、S2、S3和S4,其中,四个扇区中的数据分别为:D1、D2、D3和D4。在本发明实施例中,控制器1022在获得第一存储区域的缩短码等级后,可以计算该闪存页中每个编码单元缩短的信息位的长度。
具体的,在本发明实施例中,可以设置缩短码等级与缩短的信息位的比例的对应关系。如图5所示,以一个闪存页包括4个扇区,且编码单元为1个扇区为例。当缩短码等级为1时,缩短信息的比例为:缩短信息的长度/闪存页的长度=1/4,则说明该闪存页中缩短的信息位的长度为1个扇区的长度。依次类推,当缩短码等级为2时,缩短信息的比例为1/2(即2/4),用于指示闪存页中缩短的信息位的长度为2个扇区的长度。可以理解的是,缩短的信息的长度小于闪存页的长度。由于闪存页中包括多个编码单元,且编码单元的大小相等。因此,闪存页的缩短信息的比例也等于该闪存页中的编码单元中缩短信息的比例。根据这种方式,当控制器1022在步骤206中获得第一存储区域的缩短码等级之后,控制器1022可以通过设置的缩短码等级以及缩短信息的比例的对应关系获得第一存储区域中缩短的信息比例。在本发明实施例中,由于缩短的信息位都需要通过填充信息的方式补齐,因此,在本步骤中,控制器1022可以进一步计算获得每个编码单元中填充位信息的大小。具体的,每个编码单元中的填充信息的长度可以通过编码单元的大小乘以第一存储区域的缩短码等级对应的缩短信息比例。例如,以所述第一存储区域为32KB,包括4个扇区,且一个编码单元为一个扇区为例。则每个编码单元的大小8KB,为若所述第一存储区域的缩短码等级为1,则可以获得第一存储区域中缩短的信息的长度为32*1/4=8KB,也就是说,第一存储区域中需要缩短一个扇区的数据。每个编码单元需要缩短:8KB*1/4=2KB的数据。根据这种方式可以获得每个编码单元中需要填充2KB的填充信息,例如,图4中的填充信息T1、T2、T3和T4的大小均为2KB。
本领域技术人员可以知道,由于闪存设备的写操作是以页为粒度,因此在缓存中数据也是以页的粒度进行组织。如图4所示,若缓存页402中的数据为32KB,共包括4个扇区:S1、S2、S3和S4。在本发明实施例中,在获得每个编码单元中填充信息的大小之后,可以将缓存402中的数据重新进行组织,组织成新的缓存页(见图4中的第一页404)。具体的如图4所示,获得的新的缓存页404中仍然包括4个扇区(即4个编码单元)。其中,第一编码单元包括缓存页402中的扇区S1中的部分数据(即D1中的6KB的数据)以及填充信息T1。第二编码单元包括缓存页402中的扇区S1中的剩余2KB数据与扇区S2中的4KB数据以及填充信息T2(大小为2KB)。依次类推,第三编码单元包括缓存页402中的扇区S2中的剩余4KB数据与扇区S3中的2KB数据以及填充信息T3(大小为2KB)。第四编码单元包括缓存页402中的扇区S3中的剩余的6KB数据以及填充信息T4(大小为2KB)。缓存页402中的扇区S4的数据,则可以和其他待写入数据重新组成新的闪存页(例如图4中的第二页406)。需要说明的是,在图5中,并没有将第二页406中的其他数据图示出来。实际应用中,填充信息可以为“0”或“1”,且填充信息可以位于编码单元的预设位置。为了实现方便,可以将填充信息设置于每个编码单元的前部或尾部(如图4所示)。
在本发明实施例中,为了描述方便,待写入第一存储区域的第一数据可以只表示缓存页402中的部分数据,例如,第一数据可以为缓存页402中的前三个扇区的数据。将重新组织后的闪存页的数据成为第二数据。例如可以将图4中的第一页404中的所有数据称为第二数据。其中,第二数据包括多个编码单元,每个编码单元中包括第一数据中的部分数据以及填充信息。本领域技术人员可以理解的是,上层操作系统下发写操作指令时是以闪存页为粒度下发给控制器1022,以便控制器1022能够在软件转换层对待写入的数据分配合理的写入点,因此,在本发明实施例中,控制器1022可以在软件转换层对待写入的数据重新进行组织,以获得待写入物理页的数据。
在步骤210中,控制器1022根据设置的BCH编码对所述第二数据中的每个编码单元进行编码以获得所述第二数据的编码信息。其中,所述每个编码单元的长度与所述BCH编码的信息位长度相同。例如,控制器1022可以按照设置的BCH编码对第一页404中的每个编码单元进行编码,以得到各个编码单元的编码信息。以BCH(n,k,l)编码为例,所述第二数据中的每个编码单元的长度均为k。具体的,控制器1022中的校验纠错模块1023可以对第一页404中的编码单元S1、S2、S3以及S4中的信息进行编码,分别得到每个编码单元的编码信息。在本发明实施例中,为了描述方便,可以将各个编码单元的编码信息总称为第二数据的编码信息。
在步骤212中,控制器1022将所述第二数据写入所述第一存储区域,并且将所述第二数据的编码信息写入所述第一存储区域的带外区域。如前所述,每个闪存页都包括用于存储ECC编码信息的带外区域,因此在本步骤中,在获得包含有第二数据的第一页404之后,控制器1022可以分别将第一页404中的所述第二数据存储于所述第一存储区域,将在步骤210中获得的第二数据的编码信息存储于所述第一存储区域的带外区域。
可以理解的是,实际应用中,在将包含填充信息的第一缓存页404中的数据写入闪存阵列108之后,可以建立缓存页402中各个扇区与闪存阵列108中的第一存储区域404中的各个扇区之间的对应关系。从而在读取数据时,能够根据建立的映射关系读取相应扇区的数据。
本发明实施例提供的应用于闪存设备中的数据写入方法,提出用填充(padding)的方式来构造被编码信息。由于采用了缩短码的方式,使得实际存储到闪存页中的数据位变少,并且由于填充码信息都是预先可知的,因此使得实际存储的数据中不可纠正的错误率变低,闪存设备的可靠性得到了提高。并且,由于被编码的数据中缩短的部分填充了填充信息,使得编码单元的长度和未缩短前的编码单元的长度相同,因此,对ECC模块来说,即使可编码的信息位根据闪存设备的使用不断缩短,也依然能够保持闪存设备中的ECC模块的接口不变。从而在保证数据可靠性的基础上,降低了硬件的开销。通过这种方式,即使采用纠错能力较低的ECC编码,也能够保证数据的可靠性,延长闪存设备的使用寿命。
上面对本发明实施例提供的闪存设备100如何进行写操作进行了描述,下面将对闪存设备100如何进行读操作进行描述。图6为本发明实施例提供的一种数据读取方法。为了描述清楚,图6仍然以如何从第一存储区域中读取前述写操作过程中写入的数据进行描述。
在步骤602中,控制器1022读取所述第一存储区域中存储的第三数据以及所述第二数据的编码信息。本领域技术人员可以知道,当闪存设备100接收到读请求时,闪存设备100会将读请求中携带的逻辑地址转换为待访问的物理地址,从而能够确定待读取的数据所属的闪存页。在本发明实施例中不对具体如何确定待读取的数据所述的闪存页进行描述,而将对具体如何从闪存页中读取数据进行描述。由于闪存设备中读操作也是以页为操作单位,因此,在本发明实施例中,仍以待读取第一存储区域中的数据为例,且第一存储区域为闪存设备中的任意一个闪存页。在本步骤中,控制器可以根据获取的待访问的物理地址从所述第一存储区域中读取出数据。由于第一存储区域中读取的数据可能出错,因此在本发明实施例中,将读取中的数据称为第三数据。
实际应用中,控制器1022从第一存储区域中读取数据时可以读出第一存储区域存储的数据,并且,控制器1022还会从第一存储区域的带外区域读取出第一存储区域中存储的数据的编码信息。以图2所示的实施例在所述第一存储区域写入的数据为第二数据,在第一存储区域写入的所述第二数据的编码信息为例,则在本步骤中,控制器1022可以从所述第一存储区域读取数据以及从所述第一存储区域的带外区域读取第二数据的编码信息。实际应用中,控制器1022还可以将从第一存储区域读取出的数据缓存在缓存1024中。
在步骤604中,控制器1022根据所述第二数据的编码信息对所述第三数据进行校验纠错,以获得所述第二数据。如前所述,为了保证读取的数据的可靠性,控制器1022中的校验纠错模块1023会对从闪存页中读取出的数据进行校验纠错。在本步骤中,由于存储于第一存储区域的第二数据在存储过程中可能会发生错误,因此,为了描述清楚,将控制器1022从所述第一存储区域的数据区域读取的数据称为第三数据。在本步骤中,控制器1022中的校验纠错模块1023可以通过第二数据的编码信息对从所述第一存储区域中读取的第三数据进行校验纠错,得到在图2的步骤212中存储的所述第二数据。具体的,在利用第二数据的校验信息对所述第三数据进行校验纠错的过程中,可以根据预设的BCH编码方式对应的译码方法对所述第三数据进行相应的校验和纠错。从而能够得到所述第二数据。本发明实施例中使用的BCH编码方式和译码方法与现有技术相同,在此不进行具体的译码过程进行详细描述。
在步骤606中,控制器1022根据所述第一缩短码等级以及所述第二数据中的编码单元的长度计算所述第二数据中每个编码单元中的数据的地址信息。在本发明实施例中,由于在数据写入过程中,写入闪存页中的数据中包括了填充信息,因此在读出数据后,需要对数据进行恢复,以去除存储的数据中的填充信息,得到正确的数据。具体的,控制器1022可以根据所述第一存储区域的缩短码等级所指示的填充信息在所述第一存储区域的比例、所述第二数据中的编码单元的长度以及设置的填充信息的填充位置确定每个扇区中的数据的首地址以及数据的大小。假设一个编码单元的长度为L,所述第一缩短码等级指示的填充信息在所述第一存储区域中的比例为r,且填充信息位于每个编码单元的尾部。则第i个编码单元的数据的首地址即为第i个编码单元的首地址。可以理解的是,若以一个扇区为一个编码单元,则第i个编码单元的首地址为第i个扇区的首地址。每个编码单元的数据的大小可以根据公式:size=(1-r)*L获得。其中,i的值不超过第一存储区域中的编码单元的数量。可以理解的是,第二数据中的每个编码单元的长度及为设置的BCH编码的信息位长度。
实际应用中,在步骤604中得到所述第二数据之后,在本步骤中,控制器1022还可以根据所述第一存储区域的缩短码等级获得每个编码单元中的填充信息的大小,进而能够根据设置的填充信息的位置以及填充信息的大小确定每个编码单元中的数据的位置,从而能够从各编码单元中读取数据。实际应用中,对编码单元中的数据位置的确定还可以有多种方法,在本发明实施例中不进行限定,只要能够根据所述第一存储区域的缩短码等级以及每个编码单元的大小计算出每个编码单元中的数据即可。
在步骤608中,控制器1022根据所述每个编码单元中的数据的地址信息从所述第二数据获取所述第一数据,其中,所述第一数据中不包括所述填充信息。具体的,在步骤606中获得所述第二数据中的每个编码单元中的数据的偏移量和大小后,控制器1022可以从所述第二数据中获取待读取的所述第一数据,其中所述第一数据不包括所述填充信息。
进一步的,实际应用中,在步骤604中,当所述控制器1022对根据所述第二数据的编码信息对所述第三数据进行校验纠错时,可以判断所述第三数据中的出错位数是否大于设置的阈值m,其中,m小于设置的BCH(n,k,t)编码中的最大可纠错位数t。当所述第三数据中的出错位数大于设置的阈值m且小于t时,确定所述第一存储区域当前的缩短码等级已经不够可靠,需要进一步缩短可用空间。具体的,控制器1022可以记录所述第一存储区域在此时的最大纠错位数。在所述第一存储区域所属的闪存块被擦除后,重新调整所述第一存储区域所属的闪存块的缩短码等级,根据这种方式,可以重新调整所述第一存储区域的缩短码等级。为了描述方便,以所述第一存储区域当前的缩短码等级为第一缩短码等级,调整后的缩短码等级为第二缩短码等级为例进行描述。
换一种表达方式,当所述第三数据中的出错位数大于设置的阈值且小于设置的BCH编码中的最大可纠错位数时,所述控制器记录所述第一存储区域在此时的最大纠错位数。在所述第一存储区域所属的闪存块被擦除后,所述控制器将所述第一存储区域的所属的闪存块的缩短码等级由所述第一缩短码等级调整为所述第二缩短码等级。其中,所述第二缩短码等级指示的填充信息的比例大于所述第一缩短码等级指示的填充信息的比例。
可以理解的是,当调整了所述第一存储区域所属的闪存块的缩短码等级之后,可以根据调整后的第二缩短码等级更新设置的闪存块与缩短码等级的对应关系。根据这种方式,调整后的第一存储区域中,用于存储数据的可用空间进一步减少。编码单元中的数据信息也进一步减少,从而能够进一步提高后续存储于所述第一存储区域的数据的可靠性。
进一步的,当所述第一存储区域所述的闪存块的缩短码等级被调整后,若接收到待存储于第二存储区域的第四数据,其中,所述第二存储区域与所述第一存储区域属于同一个闪存块,则可以按照图2所述的数据写入方法将所述第四数据写入所述第二存储区域。具体的可以包括如图7所示的下述步骤。
在步骤702中,控制器1022接收待写入所述第二存储区域的第四数据。其中,所述第二存储区域与所述第一存储区域属于同一个闪存块。实际应用中,控制器1022也可以将所述第四数据缓存于缓存1024中。
在步骤704中,控制器1022确定所述第二存储区域的缩短码等级为所述第二缩短码等级。由于调整后的第一存储区域所属的闪存块的缩短码等级为第二等级,所述第二存储与所述第一存储区域属于同一个闪存块,因此,所述第二存储区域的缩短码等级即为所述闪存块的缩短码等级。实际应用中,控制器1022可以根据设置的闪存块与缩短码等级的对应关系查询所述第二存储区域的缩短码等级。如前所述,若在读取所述第一存储区域的过程中,所述第一存储区域中存储的第二数据的出错位数大于预设阈值,则在擦除所述第一存储区域所属的闪存块之后,控制器1022会将所述第一存储区域的缩短码等级由所述第一缩短码等级调整为所述第二缩短码等级,并且会更新闪存块与缩短码等级的对应关系。因此,在本步骤中,控制器1022通过查询更新后的闪存块与缩短码等级的对应关系,可以获得所述第二存储区域的缩短码等级为所述第二缩短码等级。
在步骤706中,控制器1022根据所述第二缩短码等级将所述第四数据转换为第五数据。其中,所述第五数据的大小与所述第二存储区域的大小相同,所述第五数据中包括多个编码单元,每个编码单元中包括所述第四数据中的部分数据以及第二填充信息,所述第五数据中的编码单元中的第二填充信息的大小是根据所述第二缩短码等级以及所述第五数据中的编码单元的大小计算获得的。具体的,关于控制器1022如何根据所述第二存储区域的第二缩短码等级以及所述第四数据获得待写入所述第二存储区域的第五数据的过程可以参加图2中的步骤208的描述。
在步骤708中,控制器1022根据所述BCH编码对所述第五数据中的每个编码单元进行编码所述第五数据的编码信息,其中,所述第五数据中的每个编码单元的大小与所述BCH编码的信息位长度相同。例如,控制器1022中的校验纠错模块1023可以用设置的BCH(n,k,t)编码对所述第五数据中的每个编码单元进行编码。在本发明实施例中,并没有对具体的编码方式进行改变,因此在本发明实施例中不对具体如何根据BCH编码对编码单元的数据进行描述。
在步骤710中,控制器1022将所述第五数据写入所述第二存储区域,并且,将所述第五数据的编码信息写入所述第二存储区域的带外区域。
可以理解的是,图7所示的如何将接收的第四数据写入第二存储区域的过程与图2所示的如何将第一数据写入第一存储区域的过程类似,图7中每个步骤的相关描述可以参见前述对图2的相应步骤的描述。
需要说明的是,本发明实施例中的“第一”、“第二”等表述只是用于区分不同的对象,不对本发明实施例作其它限定。
图8为本发明实施例提供的又一种闪存设备的结构示意图。如图8所示,闪存设备800可以包括接收模块802、信息获取模块804、数据处理模块806、校验纠错模块808、写入模块810。其中,接收模块802,用于接收待写入的数据。实际应用中,接收模块802可以将接收的数据放入缓存中进行缓存。
信息获取模块804,用于获取待访问的第一存储区域的第一缩短码等级,所述第一缩短码等级用于指示所述第一存储区域中缩短信息的比例。
数据处理模块806,用于根据所述第一缩短码等级将待写入所述第一存储区域的第一数据转换为第二数据,其中,所述第二数据的大小与所述第一存储区域的大小相同,所述第二数据中包括多个编码单元,每个编码单元中包括所述第一数据中的部分数据以及第一填充信息,所述第一填充信息的大小是根据第一存储区域中缩短信息的比例以及所述编码单元的大小计算获得的。
校验纠错模块808,用于根据设置的BCH编码对所述第二数据中的每个编码单元进行编码以获得所述第二数据的编码信息,其中所述每个编码单元的大小与所述BCH编码的信息位长度相同。
写入模块810,用于将所述第二数据写入所述第一存储区域,并且将所述第二数据的编码信息写入所述第一存储区域的带外区域。
所述闪存设备800还可以包括读取模块812。所述读取模块812用于读取所述第一存储区域中存储的第三数据以及所述第一存储区域的带外区域中存储的所述第二数据的编码信息。所述校验纠错模块808还可以用于根据所述第二数据的编码信息对所述第三数据进行校验纠错,以获得所述第二数据。所述数据处理模块806还用于根据所述第一缩短码等级、所述第二数据中的编码单元的长度以及设置的填充信息的位置信息获得所述第二数据中每个编码单元中的数据的地址信息;以及根据所述每个编码单元中的数据的地址信息从所述第二数据获取所述第一数据,其中,所述第一数据中不包括所述填充信息。
实际应用中,所述第一存储区域的缩短码等级为所述第一存储区域所属的闪存块的缩短码等级。所述闪存设备800还可以包括调整模块814。所述调整模块814用于在对所述第三数据进行校验纠错的过程中,当所述第三数据中的错误达到预设阈值时,将所述第一目标存储区域所属的闪存块的缩短码等级由所述第一缩短码等级调整为第二缩短码等级,其中,所述第二缩短码等级指示的填充信息的比例大于所述第一缩短码等级指示的填充信息的比例。
在又一种情形下,所述接收模块802还可以用于接收待写入第二存储区域的第四数据,其中,所述第二存储区域与所述第一存储区域属于同一个闪存块。所述信息获取模块804还用于确定所述第二存储区域的缩短码等级为所述第二缩短码等级。
所述数据处理模块806还用于根据所述第二缩短码等级将所述第四数据转换为第五数据。其中,所述第五数据的大小与所述第二存储区域的大小相同。所述第五数据中包括多个编码单元,每个编码单元中包括所述第四数据中的部分数据以及第二填充信息。所述第五数据中的编码单元中的第二填充信息的大小是根据所述第二缩短码等级以及所述第五数据中的编码单元的大小计算获得的。
所述校验纠错模块808还用于根据所述BCH编码对所述第五数据中的每个编码单元进行编码以得到所述第五数据的编码信息,其中,所述第五数据中的每个编码单元的大小与所述BCH编码的信息位长度相同。
所述写入模块810还用于将所述第五数据写入所述第二存储区域,并且,将所述第五数据的编码信息写入所述第二存储区域的带外区域。
可以理解的是,闪存设备800中的各个模块分别用于执行前述各方法实施例中的各个步骤。具体对闪存设备800中各个模块的描述可以参见前述图2-图7中的方法实施例中各步骤的详细描述。
本发明实施例还提供一种数据访问方法的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令用于执行前述任意一个方法实施例所述的方法流程。本领域普通技术人员可以理解,前述的存储介质包括:U盘、移动硬盘、磁碟、光盘、随机存储器(Random-Access Memory,RAM)、固态硬盘(Solid State Disk,SSD)或者非易失性存储器(non-volatile memory)等各种可以存储程序代码的非短暂性的(non-transitory)机器可读介质。
需要说明的是,本申请所提供的实施例仅仅是示意性的。例如,上述实施例中各部件的划分,实际实现时还可以有另外的划分方式。例如多个模块或组件可以结合或者可以集成到另一个设备中,或一些特征可以忽略,或不执行。另外,所显示或讨论的部件相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口、模块的间接耦合或通信连接,可以包括电性连接、机械连接或其它的连接形式。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。在本发明实施例、权利要求以及附图中揭示的特征可以独立存在也可以组合存在。在本发明实施例中以硬件形式描述的特征可以通过软件来执行,反之亦然。在此不做限定。

Claims (13)

1.一种数据访问方法,其特征在于,所述方法由闪存设备中的控制器来执行,包括:
获取待访问的第一存储区域的第一缩短码等级,所述第一缩短码等级用于指示所述第一存储区域中缩短信息的比例,其中,所述闪存设备包括多个具有不同缩短码等级的存储区域,所述第一缩短码等级是根据所述第一存储区域的可靠性确定的;
根据所述第一缩短码等级将待写入所述第一存储区域的第一数据转换为第二数据,其中,所述第二数据的大小与所述第一存储区域的大小相同,所述第二数据中包括多个编码单元,每个编码单元中包括所述第一数据中的部分数据以及第一填充信息,所述第一填充信息的大小是根据第一存储区域中缩短信息的比例以及所述编码单元的大小计算获得的;
根据设置的BCH编码对所述第二数据中的每个编码单元进行编码以获得所述第二数据的编码信息,其中所述每个编码单元的大小与所述BCH编码的信息位长度相同;
将所述第二数据写入所述第一存储区域,并且将所述第二数据的编码信息写入所述第一存储区域的带外区域;
其中,所述根据所述第一缩短码等级将待写入所述第一存储区域的第一数据转换为第二数据,包括:
根据所述第一缩短码等级缩短所述第一数据中的有效信息位,并用填充的方式来生成所述第二数据。
2.根据权利要求1所述的方法,其特征在于,还包括:
读取所述第一存储区域中存储的第三数据以及所述第一存储区域的带外区域中存储的所述第二数据的编码信息;
根据所述第二数据的编码信息对所述第三数据进行校验纠错,以获得所述第二数据;
根据所述第一缩短码等级、所述第二数据中的编码单元的长度以及设置的填充信息的位置信息获得所述第二数据中每个编码单元中的数据的地址信息;
根据所述每个编码单元中的数据的地址信息从所述第二数据获取所述第一数据,其中,所述第一数据中不包括所述填充信息。
3.根据权利要求2所述的方法,其特征在于,所述第一存储区域的缩短码等级为所述第一存储区域所属的闪存块的缩短码等级,所述方法还包括:
在对所述第三数据进行校验纠错的过程中,当所述第三数据中的错误达到预设阈值时,将所述第一存储区域所属的闪存块的缩短码等级由所述第一缩短码等级调整为第二缩短码等级,其中,所述第二缩短码等级指示的填充信息的比例大于所述第一缩短码等级指示的填充信息的比例。
4.根据权利要求3所述的方法,其特征在于,还包括:
接收待写入第二存储区域的第四数据,其中,所述第二存储区域与所述第一存储区域属于同一个闪存块;
确定所述第二存储区域的缩短码等级为所述第二缩短码等级;
根据所述第二缩短码等级将所述第四数据转换为第五数据,其中,所述第五数据的大小与所述第二存储区域的大小相同,所述第五数据中包括多个编码单元,每个编码单元中包括所述第四数据中的部分数据以及第二填充信息,所述第五数据中的编码单元中的第二填充信息的大小是根据所述第二缩短码等级以及所述第五数据中的编码单元的大小计算获得的;
根据所述BCH编码对所述第五数据中的每个编码单元进行编码以得到所述第五数据的编码信息,其中,所述第五数据中的每个编码单元的大小与所述BCH编码的信息位长度相同;
将所述第五数据写入所述第二存储区域,并且,将所述第五数据的编码信息写入所述第二存储区域的带外区域。
5.一种闪存设备,包括控制器以及与所述控制器连接的存储介质,其特征在于:
所述存储介质用于提供多个存储区域;
所述控制器用于:
获取待访问的所述多个存储区域中的第一存储区域的第一缩短码等级,所述第一缩短码等级用于指示所述第一存储区域中缩短信息的比例,其中,所述闪存设备包括多个具有不同缩短码等级的存储区域,所述第一缩短码等级是根据所述第一存储区域的可靠性确定的;
根据所述第一缩短码等级将待写入所述第一存储区域的第一数据转换为第二数据,其中,所述第二数据的大小与所述第一存储区域的大小相同,所述第二数据中包括多个编码单元,每个编码单元中包括所述第一数据中的部分数据以及第一填充信息,所述第一填充信息的大小是根据第一存储区域中缩短信息的比例以及所述编码单元的大小计算获得的;
根据设置的BCH编码对所述第二数据中的每个编码单元进行编码以获得所述第二数据的编码信息,其中所述每个编码单元的大小与所述BCH编码的信息位长度相同;
将所述第二数据写入所述第一存储区域,并且将所述第二数据的编码信息写入所述第一存储区域的带外区域;
其中,所述根据所述第一缩短码等级将待写入所述第一存储区域的第一数据转换为第二数据,包括:
根据所述第一缩短码等级缩短所述第一数据中的有效信息位,并用填充的方式来生成所述第二数据。
6.根据权利要求5所述的闪存设备,其特征在于,所述控制器还用于:
读取所述第一存储区域中存储的第三数据以及所述第一存储区域的带外区域中存储的所述第二数据的编码信息;
根据所述第二数据的编码信息对所述第三数据进行校验纠错,以获得所述第二数据;
根据所述第一缩短码等级、所述第二数据中的编码单元的长度以及设置的填充信息的位置信息获得所述第二数据中每个编码单元中的数据的地址信息;
根据所述每个编码单元中的数据的地址信息从所述第二数据获取所述第一数据,其中,所述第一数据中不包括所述填充信息。
7.根据权利要求6所述的闪存设备,其特征在于,所述第一存储区域的缩短码等级为所述第一存储区域所属的闪存块的缩短码等级,所述控制器还用于:
在对所述第三数据进行校验纠错的过程中,当所述第三数据中的错误达到预设阈值时,将所述第一存储区域所属的闪存块的缩短码等级由所述第一缩短码等级调整为第二缩短码等级,其中,所述第二缩短码等级指示的填充信息的比例大于所述第一缩短码等级指示的填充信息的比例。
8.根据权利要求7所述的闪存设备,其特征在于,所述控制器还用于:
接收待写入所述多个存储区域中的第二存储区域的第四数据,其中,所述第二存储区域与所述第一存储区域属于同一个闪存块;
确定所述第二存储区域的缩短码等级为所述第二缩短码等级;
根据所述第二缩短码等级将所述第四数据转换为第五数据,其中,所述第五数据的大小与所述第二存储区域的大小相同,所述第五数据中包括多个编码单元,每个编码单元中包括所述第四数据中的部分数据以及第二填充信息,所述第五数据中的编码单元中的第二填充信息的大小是根据所述第二缩短码等级以及所述第五数据中的编码单元的大小计算获得的;
根据所述BCH编码对所述第五数据中的每个编码单元进行编码以得到所述第五数据的编码信息,其中,所述第五数据中的每个编码单元的大小与所述BCH编码的信息位长度相同;
将所述第五数据写入所述第二存储区域,并且,将所述第五数据的编码信息写入所述第二存储区域的带外区域。
9.一种闪存设备,其特征在于,包括:
信息获取模块,用于获取待访问的第一存储区域的第一缩短码等级,所述第一缩短码等级用于指示所述第一存储区域中缩短信息的比例,其中,所述闪存设备包括多个具有不同缩短码等级的存储区域,所述第一缩短码等级是根据所述第一存储区域的可靠性确定的;
数据处理模块,用于根据所述第一缩短码等级将待写入所述第一存储区域的第一数据转换为第二数据,其中,所述第二数据的大小与所述第一存储区域的大小相同,所述第二数据中包括多个编码单元,每个编码单元中包括所述第一数据中的部分数据以及第一填充信息,所述第一填充信息的大小是根据第一存储区域中缩短信息的比例以及所述编码单元的大小计算获得的;
校验纠错模块,用于根据设置的BCH编码对所述第二数据中的每个编码单元进行编码以获得所述第二数据的编码信息,其中所述每个编码单元的大小与所述BCH编码的信息位长度相同;
写入模块,用于将所述第二数据写入所述第一存储区域,并且将所述第二数据的编码信息写入所述第一存储区域的带外区域;
其中,数据处理模块在根据所述第一缩短码等级将待写入所述第一存储区域的第一数据转换为第二数据,具体用于:根据所述第一缩短码等级缩短所述第一数据中的有效信息位,并用填充的方式来生成所述第二数据。
10.根据权利要求9所述的闪存设备,其特征在于,还包括:
读取模块,用于读取所述第一存储区域中存储的第三数据以及所述第一存储区域的带外区域中存储的所述第二数据的编码信息;
所述校验纠错模块,还用于根据所述第二数据的编码信息对所述第三数据进行校验纠错,以获得所述第二数据;
所述数据处理模块,还用于根据所述第一缩短码等级、所述第二数据中的编码单元的长度以及设置的填充信息的位置信息获得所述第二数据中每个编码单元中的数据的地址信息;以及
根据所述每个编码单元中的数据的地址信息从所述第二数据获取所述第一数据,其中,所述第一数据中不包括所述填充信息。
11.根据权利要求10所述的闪存设备,其特征在于,所述第一存储区域的缩短码等级为所述第一存储区域所属的闪存块的缩短码等级,还包括:
调整模块,用于在对所述第三数据进行校验纠错的过程中,当所述第三数据中的错误达到预设阈值时,将所述第一存储区域所属的闪存块的缩短码等级由所述第一缩短码等级调整为第二缩短码等级,其中,所述第二缩短码等级指示的填充信息的比例大于所述第一缩短码等级指示的填充信息的比例。
12.根据权利要求11所述的闪存设备,其特征在于,还包括:
接收模块,用于接收待写入第二存储区域的第四数据,其中,所述第二存储区域与所述第一存储区域属于同一个闪存块;
所述信息获取模块,还用于确定所述第二存储区域的缩短码等级为所述第二缩短码等级;
所述数据处理模块,还用于根据所述第二缩短码等级将所述第四数据转换为第五数据,其中,所述第五数据的大小与所述第二存储区域的大小相同,所述第五数据中包括多个编码单元,每个编码单元中包括所述第四数据中的部分数据以及第二填充信息,所述第五数据中的编码单元中的第二填充信息的大小是根据所述第二缩短码等级以及所述第五数据中的编码单元的大小计算获得的;
所述校验纠错模块,还用于根据所述BCH编码对所述第五数据中的每个编码单元进行编码以得到所述第五数据的编码信息,其中,所述第五数据中的每个编码单元的大小与所述BCH编码的信息位长度相同;
所述写入模块,还用于将所述第五数据写入所述第二存储区域,并且,将所述第五数据的编码信息写入所述第二存储区域的带外区域。
13.一种计算机可读存储介质,其特征在于,包括程序代码,所述程序代码包括的指令用于执行如权利要求1-4任意一项所述的方法。
CN201680091824.1A 2016-12-28 2016-12-28 数据访问方法及闪存设备 Active CN110383698B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2016/112629 WO2018119741A1 (zh) 2016-12-28 2016-12-28 数据访问方法及闪存设备

Publications (2)

Publication Number Publication Date
CN110383698A CN110383698A (zh) 2019-10-25
CN110383698B true CN110383698B (zh) 2022-02-11

Family

ID=62707580

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201680091824.1A Active CN110383698B (zh) 2016-12-28 2016-12-28 数据访问方法及闪存设备

Country Status (2)

Country Link
CN (1) CN110383698B (zh)
WO (1) WO2018119741A1 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023208231A1 (zh) * 2022-04-29 2023-11-02 华为技术有限公司 一种内存数据读写方法、系统以及内存控制器
CN116884464B (zh) * 2023-09-06 2023-12-05 上海芯存天下电子科技有限公司 flash芯片的擦除方法、装置及flash芯片

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102541747A (zh) * 2010-10-25 2012-07-04 马维尔国际贸易有限公司 存储器系统中的数据压缩和编码
CN102934093A (zh) * 2010-06-29 2013-02-13 英特尔公司 用于改进固态驱动器的性能和/或可靠性的方法和系统
CN103988439A (zh) * 2011-10-10 2014-08-13 三星电子株式会社 用于在通信/广播系统中传送和接收数据的装置和方法
CN104639919A (zh) * 2013-11-14 2015-05-20 杭州海康威视数字技术股份有限公司 用于数字视频光端机系统的数据传输方法及其系统

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7688908B2 (en) * 2007-03-12 2010-03-30 Samsung Electronics Co., Ltd. System and method for processing wireless high definition video data using a shortened last codeword
US8458568B2 (en) * 2010-09-24 2013-06-04 International Business Machines Corporation Systems and methods for memory devices
CN102545914B (zh) * 2010-12-27 2015-03-25 联芯科技有限公司 Bch编译码方法及装置
KR101730497B1 (ko) * 2011-11-04 2017-04-27 삼성전자 주식회사 에러 정정 성능 신장 방법 및 이를 이용한 저장 장치
CN102981924B (zh) * 2012-11-08 2015-04-29 杭州士兰微电子股份有限公司 适用于动态编码的数据存储方法及装置
US20150067436A1 (en) * 2013-09-03 2015-03-05 Sandisk Technologies Inc. Nonvolatile Memory System Compression
US10382165B2 (en) * 2015-03-02 2019-08-13 Samsung Electronics Co., Ltd. Transmitter and shortening method thereof

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102934093A (zh) * 2010-06-29 2013-02-13 英特尔公司 用于改进固态驱动器的性能和/或可靠性的方法和系统
CN102541747A (zh) * 2010-10-25 2012-07-04 马维尔国际贸易有限公司 存储器系统中的数据压缩和编码
CN103988439A (zh) * 2011-10-10 2014-08-13 三星电子株式会社 用于在通信/广播系统中传送和接收数据的装置和方法
CN104639919A (zh) * 2013-11-14 2015-05-20 杭州海康威视数字技术股份有限公司 用于数字视频光端机系统的数据传输方法及其系统

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
ECC嵌入BCH码的NAND闪存纠错算法;付印金等;《哈尔滨工程大学学报》;20121101;第33卷(第11期);第1399-1404页 *
Reliability-Driven ECC Allocation for Multiple Bit Error Resilience in Processor Cache;Somnath Paul 等;《IEEE Transactions on Computers》;20101014;第20-34页 *

Also Published As

Publication number Publication date
WO2018119741A1 (zh) 2018-07-05
CN110383698A (zh) 2019-10-25

Similar Documents

Publication Publication Date Title
US11562787B2 (en) Multi-state programming for memory devices
US10180875B2 (en) Pool-level solid state drive error correction
US9552290B2 (en) Partial R-block recycling
TW201314449A (zh) 儲存資料之系統及方法
WO2012099937A2 (en) Higher-level redundancy information computation
US11734112B2 (en) Memory system
US20200201713A1 (en) Changing of error correction codes based on the wear of a memory sub-system
US20230082008A1 (en) Parity protection in non-volatile memory
KR20220045343A (ko) 데이터 처리 시스템 내 데이터 전송에서 발생한 에러를 정정하는 장치 및 방법
JP6342013B2 (ja) 不揮発性メモリ・アレイを含むデータ・ストレージ・システムを動作させるための方法、システム及びコンピュータ・プログラム
CN110383698B (zh) 数据访问方法及闪存设备
CN113838510A (zh) 快速的经由控制器复制
JP7177338B2 (ja) メモリコントローラ装置、メモリコントローラ装置を有するメモリ装置及びメモリコントロール方法
CN112799874B (zh) 存储器控制方法、存储器存储装置及存储器控制电路单元
US10922025B2 (en) Nonvolatile memory bad row management
US11789643B2 (en) Memory system and control method
US11853613B2 (en) Encoding control method, memory storage device and memory control circuit unit
TWI763310B (zh) 記憶體控制方法、記憶體儲存裝置及記憶體控制電路單元
US20230333783A1 (en) Dynamic rain for zoned storage systems
US20230376230A1 (en) Data storage with parity and partial read back in a redundant array
CN114613420A (zh) 编码控制方法、存储器存储装置及存储器控制电路单元
CN117992282A (zh) 异常断电后的编码方法和存储器存储装置
CN117079691A (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