固态存储器的数据存储方法、数据读取方法及固态存储器与流程

文档序号:29307786发布日期:2022-03-19 19:00阅读:272来源:国知局
固态存储器的数据存储方法、数据读取方法及固态存储器与流程

1.本发明涉及数据存储技术领域,尤其涉及一种固态存储器的数据存储方法、数据读取方法及固态存储器。


背景技术:

2.目前越来越多的大容量闪存采用3d nand技术。3d qlc(每个单元存储4比特信息)、plc(每个单元存储5比特信息)等新型存储器普遍存在rber(raw bit error rate,原始比特错误率)随着cycling周期数上升迅速的问题,这导致其在单位比特成本上的优势被其严重缩短的寿命所抵消。降低ecc的码率是一种可能的应对方案,相比当前主流的4k+(长度超过4k字节)长度的ldpc,增加约3%的编码长度即可获得50%左右的纠错增益。然而,受到wordline(字线)尺寸限制,每个物理页page的空闲空间非常有限,甚至无法存放下所有编码后的比特,必须将超长部分的比特进行打孔才能匹配物理页的尺寸。因此在不增加wordline尺寸的前提下,要实现更低码率的编码,只有借用其他存储空间。
3.在常规的ecc方案中,参见图1(a)-图1(c),图1(a)示出了一个物理页的存储结构,一个物理页被分为data area(数据存储区)和spare area(备用区域)两部分,分别存放用户数据+metadata(元数据)和parity bits(奇偶校验位)。这种方式读取一个ecc编码帧只需要一次read操作,速度很快。但是,由于spare area的尺寸非常小,ecc的等效码率通常高达0.9左右。此外,随着open channel技术、压缩技术等新技术的引入,matadata的位宽还有日渐增加的趋势,这使得本就相当有限的spare area会进一步减少,进而导致传统方案的ecc等效码率逐渐上升,纠错能力同步下降,最终缩短ssd的使用寿命。如果使用常规ecc方案,则物理页中的数据结构如图1(b)所示,如果使用更低等效低码率的ecc,在data area保持不变的情况下,其编码后增加的数据长度必然会超出spare area的尺寸,参见图1(c),其中cbs表示校验比特,ecbs表示超长的校验比特。
4.现有技术中,超长部分的存储通常有如下两种方式。
5.cross page方式:超长的部分直接存到下一个逻辑page的头部,因此每个逻辑page会横跨2个物理page。这种方式每次读取一个逻辑page会触发2次物理page的读操作,延时过大。此外,这种方式还需要记录每个逻辑page起始位置的offset值,增加了ftl的复杂度。
6.pg decoupling方式:把物理page分为数据区域data area和编码区域ecc area,data area用于存储未编码的数据帧,ecc area仅用于存放编码得到的parity bits。这种方式依然需要每次读2个物理page,而且data area没有充分利用spare area来存储部分parity bits,造成存储空间的浪费,并减少了ecc策略的灵活性。


技术实现要素:

7.鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的固态存储器的数据存储方法、数据读取方法及固态存储器。
8.本发明的一个方面,提供了一种固态存储器的数据存储方法,所述方法包括:
9.采用具有目标校验矩阵的ldpc码对待存储数据进行错误纠正码编码,所述目标校验矩阵至少包括核心子矩阵和稀疏子矩阵;
10.其中,所述核心子矩阵用于生成编码数据和常规校验比特,所述稀疏子矩阵用于生成超出常规校验比特数据长度的冗余校验比特;
11.将根据核心子矩阵编码生成的编码数据和常规校验比特存储在预设的常规存储区域;
12.将根据稀疏子矩阵编码生成的冗余校验比特存储在预设的冗余存储区域。
13.进一步地,所述方法还包括:
14.对固态存储器存储区域进行分类,以将存储区域划分为常规存储区域和冗余存储区域,所述常规存储区域用于存储编码数据和常规校验比特,冗余存储区域用于存储冗余校验比特。
15.进一步地,所述对固态存储器存储区域进行分类包括:
16.对存储单元的物理地址进行分类,以将存储单元划分为常规存储区域和冗余存储区域。
17.进一步地,所述冗余存储区域集中分布在存储单元的预设位置,或均匀分布在存储单元中。
18.进一步地,所述对固态存储器存储区域进行分类包括:
19.对存储芯片的物理地址进行分类,以将存储芯片划分为常规存储芯片和冗余存储芯片,所述冗余存储区域集中分布在的冗余存储芯片的指定存储单元。
20.进一步地,所述目标校验矩阵还包括零矩阵和单位对角阵,所述目标校验矩阵结构如下:
[0021][0022]
其中,核心子矩阵和零矩阵具有相同的行数,核心子矩阵和稀疏子矩阵具有相同的列数,稀疏子矩阵和单位对角阵具有相同的行数。
[0023]
进一步地,所述方法还包括:
[0024]
在将数据存储到对应的存储区域之后,记录编码数据和常规校验比特的存储地址与对应的冗余校验比特的存储地址之间的地址对应关系。
[0025]
本发明的又一个方面,提供了一种固态存储器的数据读取方法,该方法用于对采用如上固态存储器的数据存储方法存储的数据进行读取,所述方法包括:
[0026]
读取编码数据、常规校验比特以及与编码数据、常规校验比特对应的冗余校验比特;
[0027]
将编码数据、常规校验比特和冗余校验比特进行拼接,并对拼接后的数据进行错误纠正码译码。
[0028]
进一步地,所述读取编码数据、常规校验比特以及与编码数据、常规校验比特对应的冗余校验比特包括:
[0029]
根据数据读取地址查找地址对应关系,以获取待读取数据对应的冗余校验比特的
存储地址;
[0030]
根据获取到的存储地址读取冗余校验比特,并以数据读取地址为索引对获取的冗余校验比特进缓存;
[0031]
当读取数据读取地址中的编码数据和常规校验比特时,根据数据读取地址从缓存数据中获取对应的冗余校验比特。
[0032]
本发明的又一个方面,提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上固态存储器的数据存储方法的步骤或固态存储器的数据读取方法的步骤。
[0033]
本发明的又一个方面,还提供了一种固态存储器,该设备包括存储控制器,所述存储控制器包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上固态存储器的数据存储方法的步骤或固态存储器的数据读取方法的步骤。
[0034]
本发明实施例提供的固态存储器的数据存储方法、数据读取方法及固态存储器,能够简单、快速地产生冗余校验比特,降低了编码复杂度,通过冗余校验比特的产生有效提升固态存储器的寿命。进一步地,本发明提出了一种更为合理高效的超长编码数据的存储分配策略和缓存架构,并同时提出了数据读取时的纠错码解决方案,提升对存储空间利用率、写入和读取的速率。
[0035]
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
[0036]
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
[0037]
图1(a)为物理页中存储区域结构示意图;
[0038]
图1(b)为常规ecc方案中物理页中的数据结构示意图;
[0039]
图1(c)为超长ecc方案中物理页中的数据结构示意图;
[0040]
图2为本发明实施例提供的固态存储器的数据存储方法的流程图;
[0041]
图3为本发明实施例提出的一种数据存储布局示意图;
[0042]
图4为本发明实施例提供的固态存储器的数据读取方法的流程图;
[0043]
图5为本发明实施例提出一种获取缓存的冗余校验比特的示意图。
具体实施方式
[0044]
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
[0045]
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一
个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本发明的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。
[0046]
本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非被特定定义,否则不会用理想化或过于正式的含义来解释。
[0047]
图2示意性示出了本发明一个实施例的固态存储器的数据存储方法的流程图。参照图2,本发明实施例的固态存储器的数据存储方法具体包括以下步骤:
[0048]
s11、采用具有目标校验矩阵的ldpc码对待存储数据进行错误纠正码编码,所述目标校验矩阵至少包括核心子矩阵和稀疏子矩阵。
[0049]
其中,所述核心子矩阵用于生成编码数据和常规校验比特,所述稀疏子矩阵用于生成超出常规校验比特数据长度的冗余校验比特。
[0050]
s12、将根据核心子矩阵编码生成的编码数据和常规校验比特存储在预设的常规存储区域。
[0051]
s13、将根据稀疏子矩阵编码生成的冗余校验比特存储在预设的冗余存储区域。
[0052]
本发明实施例中,在将数据存储到对应的存储区域之后,存储记录编码数据和常规校验比特的存储地址与对应的冗余校验比特的存储地址之间的地址对应关系,以便于后续在数据读取中能够快速查找到待读取数据对应的冗余校验比特的存储地址。
[0053]
本发明实施例中,预先对固态存储器存储区域进行分类,以将存储区域划分为常规存储区域和冗余存储区域,所述常规存储区域用于存储编码数据和常规校验比特,冗余存储区域用于存储冗余校验比特。
[0054]
具体的,对固态存储器存储区域进行分类可以为对存储芯片的物理地址或存储单元的物理地址进行分类。其中,存储单元可选为以物理块为单位单元。
[0055]
本发明实施例的固态存储器的数据存储方法中,首先,在数据存储的布局上将物理地址分为两类:常规存储区域(regular area)和冗余存储区域(redundant area)。其中,regular area存放的是常规ecc编码帧,而不是pg decoupling方式中未编码的数据帧;redundant area则存放的是ecc编码后的超长部分,而不是所有的cbs。
[0056]
regular area部分的每一个物理page存储的数据都可以用现有的解码器直接译码,也可以和redundant area中与其对应的超长部分拼接后联合译码。
[0057]
redundant area的占比可以灵活调整,配置的原则是在介质的寿命和单位比特的存储成本之间取得平衡。尤其对于qlc介质,如果配置5%的容量来存储ecc超长部分,可使ssd提升近一倍的寿命。
[0058]
相比于现有技术,本发明提出的数据布局方式,在存储器磨损率不高时,常规ecc编码帧的纠错能力就足以应付。这时可以不用读取redundant area中的超长cbs。这样既减少了读数据的复杂度和延时,也降低了ecc解码器的工作负荷。相比之下,pg decoupling方式无论何种情况都得将冗余cbs和数据帧从不同的物理地址读出,解码器的工作负荷也总是最大的。
[0059]
而且pg decoupling方式下,data area由于仅仅存放未编码的数据帧。由于数据
帧都是以512、1024、2048或4096字节的固定分块长度出现,而存储器物理page的尺寸都略长于512的整数倍,因此仅仅用数据帧无法填满一个物理page,从而造成了存储空间的浪费。本发明的数据存储方法则可以将这些被浪费的空间充分利用,并同时提高了存储的可靠性。
[0060]
本发明实施例提供的固态存储器的数据存储方法、能够简单、快速地产生冗余校验比特,降低了编码复杂度,通过冗余校验比特的产生有效提升固态存储器的寿命。进一步地,本发明还提出了一种更为合理高效的超长编码数据的存储分配策略和缓存架构,提升对存储空间利用率。
[0061]
在一个具体实施例中,目标校验矩阵中除了核心子矩阵和稀疏子矩阵之外,还包括零矩阵和单位对角阵,目标校验矩阵结构如下:
[0062][0063]
其中,核心子矩阵和零矩阵具有相同的行数,核心子矩阵和稀疏子矩阵具有相同的列数,稀疏子矩阵和单位对角阵具有相同的行数。
[0064]
具体的,目标校验矩阵由四部分组成,分别叫做核心子矩阵、零矩阵、稀疏子矩阵和单位对角阵。
[0065]
核心子矩阵用于生成常规存储区域的编码数据帧,包括编码数据、常规校验比特。
[0066]
单位对角阵和稀疏矩阵具有相同的行数,可以用奇偶校验的方法生成冗余存储区域的冗余校验比特。
[0067]
具备这种结构的校验矩阵的低密度奇偶校验码ldpc其优点是:
[0068]
1)冗余校验比特ecbs产生简单,降低了编码复杂度;同时只要核心矩阵设计合理,其译码性可以媲美专门优化设计的同等码长和码率的ldpc码。
[0069]
2)可以用同一个核心矩阵灵活地构造不同冗余长度的校验矩阵。由于核心矩阵设计比较困难,如果为不同冗余长度分别设计对应的专用校验矩阵,会非常困难,而且还要配置几套对应的编码器,无疑极大的增加了芯片成本。而本发明技术方案只要一次构造足够行数的稀疏矩阵,再根据需要从上往下截取适当的行数来匹配cbs长度即可满足要求。
[0070]
在一个具体实施例中,对固态存储器存储区域进行分类可以为:对存储单元的物理地址进行分类,以将存储单元划分为常规存储区域和冗余存储区域。其中,冗余存储区域集中分布在存储单元的尾部,或均匀分布在存储单元中。
[0071]
图3给出了一种可能的数据存储布局。图3是以block为单元的布局形式,在每个block中,可以将其中一定比例的page配置为冗余存储区域redundant page,用于存储该block中其余常规存储区域regular page的ecc超长部分。这些redundant page的位置在block中既可以均匀分布也可以集中放置。
[0072]
具体的,以冗余存储区域集中分布在存储单元的尾部为例,假设一个block跨越128个子线wordline,则可以将最后4个wordline上的物理页page设置为redundant page。当该block的regular page写入完成后,将专用的ecc cache里对应该block的冗余校验比特ecbs数据导入redundant page。
[0073]
图3中,ppn表示常规存储区域中的物理页page,深灰色的invalid page表示其中
存放的数据已失效。redundant area中的x1~x124分别存放regular area的ppn x1~x124对应的冗余校验比特ecbs。如果regular area中的某个ppn被标记为invalid,则redundant area中对应的校验比特ecbs也要被标记为invalid。
[0074]
在一个具体实施例中,对固态存储器存储区域进行分类还可以为:对存储芯片的物理地址进行分类,以将存储芯片划分为常规存储芯片和冗余存储芯片,所述冗余存储区域集中分布在的冗余存储芯片的指定存储单元。
[0075]
本发明在对固态存储器存储区域进行划分时,还可以不将超长部分数据和对应的ecc编码帧存放在同一个物理块block内。超长部分可以集中或者分布存放在同一个chip上的其他die,或者是其他chip上的某些block内,甚至是某些特殊的非易失性存储器上。这样部长的好处是,可以充分利用现代存储芯片和存储控制器多个通道并发的读写能力,将常规ecc编码帧和超长部分并行写入或读出,最大限度地减少读写延时。
[0076]
图4示意性示出了本发明一个实施例的固态存储器的数据读取方法的流程图。该方法用于对采用如上固态存储器的数据存储方法存储的数据进行读取,参照图4,本发明实施例的固态存储器的数据读取方法具体包括以下步骤:
[0077]
s21、读取编码数据、常规校验比特以及与编码数据、常规校验比特对应的冗余校验比特。
[0078]
其中,读取编码数据和常规校验比特存储在常规存储区域,与其对应的冗余校验比特存储在冗余存储区域,进行数据读取时,可根据数据写入时存储记录的编码数据和常规校验比特的存储地址与对应的冗余校验比特的存储地址之间的地址对应关系,快速查找到待读取数据对应的冗余校验比特的存储地址,并获取对应的冗余校验比特。
[0079]
s22、将编码数据、常规校验比特和冗余校验比特进行拼接,并对拼接后的数据进行错误纠正码译码。
[0080]
具体的,所述读取编码数据、常规校验比特以及与编码数据、常规校验比特对应的冗余校验比特包括:根据数据读取地址查找地址对应关系,以获取待读取数据对应的冗余校验比特的存储地址;根据获取到的存储地址读取冗余校验比特,并以数据读取地址为索引对获取的冗余校验比特进缓存;当读取数据读取地址中的编码数据和常规校验比特时,根据数据读取地址从缓存数据中获取对应的冗余校验比特。
[0081]
本实施例中,为了提高读文件的吞吐率,并减少传统decoupling方案的写放大问题,引入一个叫做ecc cache的组件,该ecc cache包括两个组件:
[0082]
ecc sram组件:用于缓存一定数量的冗余校验比特ecbs。
[0083]
ecc cam(content-addressable memory)组件:用于存储ecc sram组件中各个sram单元中和存储器内部物理地址的映射关系。
[0084]
参见图5,本发明通过图5所示实施例来说明如何获取一个物理page的ecbs。首先,在读取该block数据前将其中的redundant area读出并缓存到ecc cache中的ecc sram组件;然后,当读取物理地址a对应的数据时,根据地址a从cam中查找到sram中的地址,将其中的ecba读出;最后,将ecba和物理地址a中的数据进行拼接后送往ecc解码器。
[0085]
本发明提出了一种更为合理高效的超长编码数据的分配策略和缓存架构,并同时给出配套的纠错码解决方案,在提升固态存储器的寿命的同时,还能提升对存储空间利用率、写入和读取的速率。
[0086]
此外,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上固态存储器的数据存储方法的步骤或固态存储器的数据读取方法的步骤。
[0087]
此外,本发明实施例还提供了一种固态存储器,该固态存储器包括存储控制器,所述存储控制器包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上固态存储器的数据存储方法的步骤或固态存储器的数据读取方法的步骤。例如图2所示的步骤s11~s13,或,图4所示的步骤s21~s22。
[0088]
本发明实施例提供的固态存储器的数据存储方法、数据读取方法及固态存储器,能够简单、快速地产生冗余校验比特,降低了编码复杂度,通过冗余校验比特的产生有效提升固态存储器的寿命。进一步地,本发明提出了一种更为合理高效的超长编码数据的存储分配策略和缓存架构,并同时提出了数据读取时的纠错码解决方案,提升对存储空间利用率、写入和读取的速率。
[0089]
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
[0090]
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
[0091]
此外,本领域的技术人员能够理解,尽管在此的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
[0092]
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1