状态映射处理方法及装置、介质、SSD设备转让专利

申请号 : CN202210709306.9

文献号 : CN114791888B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 秦东润刘晓健王嵩

申请人 : 北京得瑞领新科技有限公司

摘要 :

本发明涉及一种状态映射处理方法及装置、介质、SSD设备,方法包括:按照数据单元类型将待处理数据进行分组,得到多个数据组;统计所述多个数据组中每一个数据状态的数量,并将各个数据状态按照数量的第一顺序方向进行排序,得到数据状态序列;将存储颗粒的各个存储状态按照误判概率的第二顺序方向进行排序,得到存储状态序列;将所述数据状态序列中的每一个数据状态和所述存储状态序列中对应位置的存储状态进行一一映射,得到第一状态映射表;获取所述存储颗粒采用的格雷码映射表;根据所述第一状态映射表和所述格雷码映射表,生成第二状态映射表。本发明可以降低数据整体的比特误码率。

权利要求 :

1.一种状态映射处理方法,其特征在于,包括:

按照数据单元类型将待处理数据进行分组,得到多个数据组;其中,每一个数据组中包含的比特数和所述数据单元类型相匹配;

统计所述多个数据组中每一个数据状态的数量,并将各个数据状态按照数量的第一顺序方向进行排序,得到数据状态序列;

将存储颗粒的各个存储状态按照误判概率的第二顺序方向进行排序,得到存储状态序列;其中,所述存储状态的数量和所述数据状态的数量相等,所述第一顺序方向和所述第二顺序方向相反;

将所述数据状态序列中的每一个数据状态和所述存储状态序列中对应位置的存储状态进行一一映射,得到第一状态映射表;

获取所述存储颗粒采用的格雷码映射表;其中,所述格雷码映射表中包括各个存储状态和各个格雷码之间的映射关系;

根据所述第一状态映射表和所述格雷码映射表,生成第二状态映射表;其中,所述第二状态映射表中包括各个数据状态和各个格雷码之间的映射关系。

2.根据权利要求1所述的方法,其特征在于,所述统计所述多个数据组中每一个数据状态的数量,包括:从所述多个数据组中抽样选取预设数量的数据组;

统计所述预设数量的数据组中每一个数据状态的数量;

将所述预设数量的数据组中每一个数据状态的数量作为所述多个数据组中该数据状态的数量。

3.根据权利要求1所述的方法,其特征在于,所述统计所述多个数据组中每一个数据状态的数量之前,所述方法还包括:统计所述待处理数据中比特1和比特0各自的数量;

判断比特1的数量和比特0的数量是否满足预设条件;其中,所述预设条件用于表征比特1和比特0之间的数量差距超过预设差距;

若满足所述预设条件,则按照所述数据状态中包含的预设比特值的数量从大到小的顺序将各个数据状态进行排序,得到数据状态序列,并跳转到步骤“将存储颗粒的各个存储状态按照误判概率的第二顺序方向进行排序”;其中,所述预设比特值为比特1和比特0中数量较多的比特值;

若不满足所述预设条件,则执行“统计所述多个数据组中每一个数据状态的数量”的步骤。

4.根据权利要求3所述的方法,其特征在于,所述预设条件包括:其中,f(1)为所述待处理数据中比特1的数量,f(0)为所述待处理数据中比特0的数量,T为所述预设差距对应的阈值。

5.根据权利要求1所述的方法,其特征在于,所述方法应用于数据读写场景中,所述方法包括:在接收到写入请求时,执行权利要求1 4任一项所述的方法,所述待处理数据为待~写入数据;

所述方法还包括:将所述待写入数据对应的所述多个数据组按照所述第二状态映射表进行转码,将转码后的数据进行编码,并在编码后存储至所述存储颗粒。

6.根据权利要求5所述的方法,其特征在于,所述方法还包括:在接收到读取请求时,进行数据的读取操作,所述读取操作包括:从所述存储颗粒中读取数据;将所读取数据进行解码,得到解码后的数据组;根据所述第二状态映射表,将所述解码后的数据组进行反向转码,得到反向转码后的数据组。

7.根据权利要求6所述的方法,其特征在于,所述方法还用于数据巡检场景中,所述待处理数据为待巡检数据,所述方法包括:在每一个数据巡检周期中,从所述存储颗粒中进行数据读取操作,得到待巡检数据;对所述待巡检数据进行纠错处理以及确定各个存储状态的误判概率;

针对纠错处理后的待巡检数据,执行权利要求1 4任一项所述的方法,得到本次巡检周~期对应的第二状态映射表;

按照本次巡检周期对应的第二状态映射表,对纠错处理后的待巡检数据进行转码,将转码后的数据进行编码,并在编码后存储至所述存储颗粒。

8.根据权利要求7所述的方法,其特征在于,在所述执行权利要求1 4任一项所述的方~法时,所述按照数据单元类型将待处理数据进行分组之前,所述方法还包括:判断针对所述待巡检数据是否存在预先存储的数据状态序列;

若存在,则获取针对所述待巡检数据预先存储的数据状态序列,并跳转到步骤“将各个存储状态按照误判概率的第二顺序方向进行排序”;若不存在,则执行“按照数据单元类型将待处理数据进行分组”。

9.根据权利要求1或7所述的方法,其特征在于,确定各个存储状态的误判概率的过程包括:根据巡检周期的时长、上一个巡检周期内的读取次数和待存储单元的PE次数中的至少一项,确定对应的误判概率表格,并获取所述对应的误判概率表格中各个存储状态的误判概率;其中,每一个误判概率表格中包含各个存储状态各自对应的误判概率。

10.一种状态映射处理装置,其特征在于,包括:

第一分组模块,用于按照数据单元类型将待处理数据进行分组,得到多个数据组;其中,每一个数据组中包含的比特数和所述数据单元类型相匹配;

第一排列模块,用于统计所述多个数据组中每一个数据状态的数量,并将各个数据状态按照数量的第一顺序方向进行排序,得到数据状态序列;

第二排列模块,用于将存储颗粒的各个存储状态按照误判概率的第二顺序方向进行排序,得到存储状态序列;其中,所述存储状态的数量和所述数据状态的数量相等,所述第一顺序方向和所述第二顺序方向相反;

第一映射模块,用于将所述数据状态序列中的每一个数据状态和所述存储状态序列中对应位置的存储状态进行一一映射,得到第一状态映射表;

第一获取模块,用于获取所述存储颗粒采用的格雷码映射表;其中,所述格雷码映射表中包括各个存储状态和各个格雷码之间的映射关系;

第二映射模块,用于根据所述第一状态映射表和所述格雷码映射表,生成第二状态映射表;其中,所述第二状态映射表中包括各个数据状态和各个格雷码之间的映射关系。

11.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如权利要求1‑9任一项所述方法的步骤。

12.一种SSD设备,其特征在于,包括存储控制器,所述存储控制器包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如权利要求1‑9任一项所述方法的步骤。

说明书 :

状态映射处理方法及装置、介质、SSD设备

技术领域

[0001] 本发明涉及数据映射技术领域,尤其是涉及一种状态映射处理方法及装置、介质、SSD设备。

背景技术

[0002] 随着全球互联网程度的不断提高,全球对数据存储的需求也日益增大。当前计算机服务器的主流存储器件主要分为两种:机械硬盘(英文为Hard Disk, 缩写为HD)和固态硬盘(英文为Solid State Drive,缩写为SSD)。固态硬盘和机械硬盘都是用于数据存储的硬件,其本质上的区别在于其存储介质不同。传统的机械硬盘以机械磁盘为存储介质,通过磁臂和磁头、磁盘之间的机械构造进行数据存储和读取。而固态硬盘是以NAND闪存(即非易失性存储器)作为存储介质,通过存储器内部的电荷数即存储颗粒中的通断电来进行数据的读取和写入,进而实现数据存储。由于机械结构存在的性能瓶颈,当前大多数机械硬盘的读取性能相对于固态硬盘较差。随着固态硬盘小型化、性价比不断提升,越来越多的企业消费者和个人消费者采用固态硬盘进行数据的存储。
[0003] 当前的SSD存储器中往往采用NAND颗粒进行存储,根据NAND颗粒每个存储颗粒可存储的比特数可将NAND颗粒分为SLC(即一个存储颗粒中可以存储1个比特)、MLC(即一个存储颗粒中可以存储2个比特)、 TLC(即一个存储颗粒中可以存储3个比特)、QLC(即一个存储颗粒中可以存储4个比特)四种类型。
[0004] NAND颗粒通过电压表示存储状态,受驻留(即retention)和读干扰(read disturb)的影响,存储电压在存储数据的过程中存在电压漂移,从而导致比特误码率的升高。进一步,NAND颗粒的各个存储状态在上述过程中电压漂移的程度略有差异。以TLC为例,存储状态P7较易受到驻留的影响,存储状态P0/P1较易受到读干扰的影响。因此存储颗粒中的各个存储状态的误判概率差异较大,例如,保留会导致存储状态P7的误判概率远大于其他状态,而读干扰效应会导致存储状态P0/P1的误判概率明显提升。同时,不同存储颗粒厂商的存储颗粒的各个存储状态的误判概率也存在差别。
[0005] 目前,在获取主机的写数据请求时,对原始数据进行编码后直接存储至存储颗粒,存储过程中存储颗粒采用格雷码进行映射。在获取主机的读数据请求时,将存储颗粒中的数据读取出来之后进行解码,然后发给主机。参见图1,一共有8个存储状态P0 P7,例如,从~图1中可以看出格雷码011对应存储状态P1,也就是说,当存储电压在V1~V2范围内时,可以认为此时对应的存储状态为P1,存储颗粒就会输出格雷码011。
[0006] 现有技术在存储数据时往往采用固定映射的方式,从而导致某些场景下比特误码率较高,进而造成解码器的计算负荷大、读取数据延迟大。例如,极端情况下,如果数据中大部分为110,按照现有技术会将大量数据存储至存储状态P7。在驻留时间作用下,存储状态P7的误判概率逐渐增大,从而导致比特误码率较高。

发明内容

[0007] 为了解决上述技术问题或者至少部分地解决上述技术问题,本发明提供了一种状态映射处理方法及装置、介质、SSD设备。
[0008] 第一方面,本发明实施例提供一种状态映射处理方法,包括:
[0009] 按照数据单元类型将待处理数据进行分组,得到多个数据组;其中,每一个数据组中包含的比特数和所述数据单元类型相匹配;
[0010] 统计所述多个数据组中每一个数据状态的数量,并将各个数据状态按照数量的第一顺序方向进行排序,得到数据状态序列;
[0011] 将存储颗粒的各个存储状态按照误判概率的第二顺序方向进行排序,得到存储状态序列;其中,所述存储状态的数量和所述数据状态的数量相等,所述第一顺序方向和所述第二顺序方向相反;
[0012] 将所述数据状态序列中的每一个数据状态和所述存储状态序列中对应位置的存储状态进行一一映射,得到第一状态映射表;
[0013] 获取所述存储颗粒采用的格雷码映射表;其中,所述格雷码映射表中包括各个存储状态和各个格雷码之间的映射关系;
[0014] 根据所述第一状态映射表和所述格雷码映射表,生成第二状态映射表;其中,所述第二状态映射表中包括各个数据状态和各个格雷码之间的映射关系。
[0015] 第二方面,本发明实施例提供一种状态映射处理装置,包括:
[0016] 第一分组模块,用于按照数据单元类型将待处理数据进行分组,得到多个数据组;其中,每一个数据组中包含的比特数和所述数据单元类型相匹配;
[0017] 第一排列模块,用于统计所述多个数据组中每一个数据状态的数量,并将各个数据状态按照数量的第一顺序方向进行排序,得到数据状态序列;
[0018] 第二排列模块,用于将存储颗粒的各个存储状态按照误判概率的第二顺序方向进行排序,得到存储状态序列;其中,所述存储状态的数量和所述数据状态的数量相等,所述第一顺序方向和所述第二顺序方向相反;
[0019] 第一映射模块,用于将所述数据状态序列中的每一个数据状态和所述存储状态序列中对应位置的存储状态进行一一映射,得到第一状态映射表;
[0020] 第一获取模块,用于获取所述存储颗粒采用的格雷码映射表;其中,所述格雷码映射表中包括各个存储状态和各个格雷码之间的映射关系;
[0021] 第二映射模块,用于根据所述第一状态映射表和所述格雷码映射表,生成第二状态映射表;其中,所述第二状态映射表中包括各个数据状态和各个格雷码之间的映射关系。
[0022] 第三方面,本发明实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如第一方面提供的所述方法的步骤。
[0023] 第四方面,本发明实施例提供一种SSD设备,包括存储控制器,所述存储控制器包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如第一方面提供的方法的步骤。
[0024] 本发明实施例提供的状态映射处理方法及装置、介质、SSD设备,首先按照数据单元类型将待处理数据进行分组,得到多个数据组,统计所述多个数据组中每一个数据状态的数量,将各个数据状态按照数量的第一顺序方向进行排序,得到数据状态序列;将存储颗粒的各个存储状态按照误判概率的第二顺序方向进行排序,得到存储状态序列;将所述数据状态序列中的每一个数据状态和所述存储状态序列中对应位置的存储状态进行一一映射,得到第一状态映射表。然后获取所述存储颗粒采用的格雷码映射表,再根据所述第一状态映射表和所述格雷码映射表,生成第二状态映射表。可知由于第一顺序方向和第二顺序方向相反,因此在第一状态映射表中误判概率最低的存储状态和数量最多的数据状态对应,误判概率最高的存储状态和数量最少的数据状态对应,这样可以使得数量较多的数据状态对应的格雷码存储在误判概率较低的存储状态中,数量较少的数据状态对应的格雷码存储在误判概率较高的存储状态中,这样相对于现有技术中固定映射的方式可以降低数据整体的比特误码率,进而可以减轻解码器的纠错负荷,缩短数据读取的延迟等。

附图说明

[0025] 此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
[0026] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0027] 图1为本发明一个实施例中存储状态、格雷码、存储电压之间的映射示意图;
[0028] 图2为本发明一个实施例中状态映射处理方法的流程示意图;
[0029] 图3是本发明一个实施例中基于状态映射的数据写入过程的流程示意图;
[0030] 图4是本发明一个实施例中基于状态映射的数据写入和数据读取的示意图;
[0031] 图5是本发明一个实施例中基于状态映射的数据巡检过程的流程示意图;
[0032] 图6是本发明一个实施例中各个存储状态的误判概率的对比示意图;
[0033] 图7是针对不同类型的数据采用本发明实施例和现有技术所产生的比特误码率的对比示意图;
[0034] 图8是本发明一个实施例中状态映射处理装置的结构框图。

具体实施方式

[0035] 为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0036] 第一方面,本发明实施例提供一种状态映射处理方法。
[0037] 参见图2,本发明实施例提供的方法可以包括步骤S110 S160:~
[0038] S110、按照数据单元类型将待处理数据进行分组,得到多个数据组;其中,每一个数据组中包含的比特数和所述数据单元类型相匹配;
[0039] 可理解的是,本发明实施例提供的映射处理方法可以由存储控制器执行,而且本方法可以应用在多个场景中,例如,数据读写场景、数据巡检场景。
[0040] 在数据读写场景中,例如,当存储控制器接收到主机发送来的写入请求时,执行本方法后得到第二状态映射表,进而根据第二状态映射表进行数据存储,此场景下,待处理数据为待写入数据。
[0041] 在数据巡检场景中,待处理数据为待巡检数据,存储控制器在进行数据读取操作后,将读取数据输入到ECC解码器中,得到纠错处理后的待巡检数据以及各个存储状态的误判概率,接着可以根据本方法得到本次巡检周期对应的第二状态映射表,在根据第二状态映射表对纠错后的待巡检数据存储到存储颗粒中。
[0042] 不论在哪种应用场景中,第二状态映射表的确定过程是最关键的,所以本方法着重描述第二状态映射表的确定过程。
[0043] 在步骤S110中,分组之后得到的每一个数据组中包含的比特数和数据单元类型相匹配。由于数据单元类型包括SLC、MLC、TLC、QLC。在SLC类型的一个数据单元中包含一个比特,在MLC类型的一个数据单元中包含2个比特,在TLC类型的一个数据单元中包含3个比特,而在QLC类型的一个数据单元中包含4个比特。可见,所谓的匹配是指一个数据中包含的比特的数量和一个数据单元中包含的比特的数量相等。例如,本发明实施例中存储颗粒对应的存储单元类型为TLC,则将待处理数据每3个比特划分为一个数据组,即一个数据组中包含3个比特。
[0044] 在具体实施时,在S110之后,在下文中的S120之前,本发明实施例提供的方法还可以包括如下步骤a1 a4:~
[0045] a1、统计所述待处理数据中比特1和比特0各自的数量;
[0046] 也就是说,针对待处理数据,统计比特0的数量和比特1的数量。
[0047] a2、判断比特1的数量和比特0的数量是否满足预设条件;其中,所述预设条件用于表征比特1和比特0之间的数量差距超过预设差距;
[0048] 可理解的是,如果两个比特值的数量满足预设条件,则说明比特1和比特0的数量有很大的差距,例如,比特1的数量远大于比特0的数量,或者,比特0的数量远大于比特1的数量。
[0049] 在具体实施时,所述预设条件可以包括:
[0050]
[0051] 其中,f(1)为所述待处理数据中比特1的数量,f(0)为所述待处理数据中比特0的数量,T为所述预设差距对应的阈值。
[0052] a3、若满足所述预设条件,则按照所述数据状态中包含的预设比特值的数量从大到小的顺序将各个数据状态进行排序,得到数据状态序列,并跳转到步骤“将存储颗粒的各个存储状态按照误判概率的第二顺序方向进行排序”;其中,所述预设比特值为比特1和比特0中数量较多的比特值;
[0053] a4、若不满足所述预设条件,则执行“统计所述多个数据组中每一个数据状态的数量”的步骤。
[0054] 可理解的是,如果满足预设条件,则存在两种情况,一种是比特1的数量远大于比特0的数量,此时预设比特值为1。一种是比特0的数量远大于比特1的数量,此时预设比特值为0。
[0055] 例如,若满足上述预设条件,且f(1)>f(0),将数据状态按照比特值1的数量从多到少进行排序,得到数据状态序列为:{111,110,011,101,001,100,010,000}。
[0056] 再例如,若满足上述预设条件,且f(1)
[0057] 也就是说,如果满足上述预设条件,则按照数据状态中包含的预设比特值的数量来确定数据状态序列,然后直接跳转到S130中继续执行即可。如果不满足上述预设条件,则需要按照下文中的S120确定数据状态序列。
[0058] 可理解的是,如果两个数据状态中包含的预设比特值的数量是相等的,此时两个数据状态的先后顺序可以随机。
[0059] 可理解的是,在满足预设条件时,按照数据状态中包含的预设比特值的数量来确定数据状态序列的方式可以称之为直接映射法。这种方式可以省去步骤S120中的统计步骤,因此可以减少计算量。
[0060] 同时,在实际中造成比特误码率高的往往是存储状态的误判概率最高的存储状态,即最差的存储状态。因此尽量减少最差的存储状态存储的数据组的数量,使得最优的存储状态存储尽可能多的数据组,这样可以大大降低比特误码率。因此在上述直接映射法中,如果在待处理数据中比特1的数量远大于0时,将包含1最多的数据状态排列在最前面,将包含0最多的数据状态排列在最后面,这样当将数据状态序列和存储状态序列进行一一映射时,包含1最多的数据状态和最优的存储状态对应,包含0最多的数据状态和最差的存储状态对应,这样在数据存储时,由于比特1的数量较多,比特0的数量较少,可以使得数量较少的数据组被存储到较差的存储状态中,数量较多的数据组被存储到较优的存储状态中,进而减少比特误码率。
[0061] S120、统计所述多个数据组中每一个数据状态的数量,并将各个数据状态按照数量的第一顺序方向进行排序,得到数据状态序列;
[0062] 例如,数据单元类型为TLC,则一共有8个数据状态。数据单元类型为QLC,则一共有16个数据状态。可见,不同的数据单元类型具有不同数量的数据状态。
[0063] 其中,第一顺序方向可以为从大到小,也可以为从小到大。下文中提到的第二顺序方向和第一顺序方向相反,因此当第一顺序方向为从大到小时,第二顺序方向为从小到大。当第一顺序方向为从小到大时,第二顺序方向为从大到小。
[0064] 例如,数据单元类型为TLC,这8种数据状态分别为:110、111、011、101、001、100、101、000。针对各个数据组,统计这8种数据状态的数量,然后按照数量从多到少进行排序,得到上述数据状态序列。例如,将8种数据状态按照数量从多到少的顺序排序后,可以得到的数据状态序列为:{110,111,011,101,001,100,010,000}。
[0065] 在具体实施时,S120中所述统计所述多个数据组中每一个数据状态的数量,可以包括:
[0066] S121、从所述多个数据组中抽样选取预设数量的数据组;
[0067] S122、统计所述预设数量的数据组中每一个数据状态的数量;
[0068] S123、将所所述预设数量的数据组中每一个数据状态的数量作为所述多个数据组中该数据状态的数量。
[0069] 例如,一共有10000个数据组,仅选取其中1000个数据组。针对这1000个数据组,统计各个数据状态各自的数量,以此来代表10000个数据组中各个数据状态各自的数量。
[0070] 可理解的是,在步骤S120中可以对全量数据统计每一个数据状态的数量,也可以采用抽样的方式统计一部分数据中每一个数据状态的数量,然后用这一部分数据中每一个数据状态的数量来代表全量数据中每一个数据状态的数量。
[0071] S130、将存储颗粒的各个存储状态按照误判概率的第二顺序方向进行排序,得到存储状态序列;其中,所述存储状态的数量和所述数据状态的数量相等,所述第一顺序方向和所述第二顺序方向相反;
[0072] 其中,针对数据单元类型为TLC的存储颗粒,存储状态也包括8种,例如参见图1中示出的P0 P7。~
[0073] 其中,误判概率可以通过离线的方式进行测试标定得到,然后存储在存储器中。
[0074] 在该步骤中,将各个存储状态按照误判概率的高低进行排序,误判概率越低,存储状态越靠前。例如,排序后得到的存储状态序列为:{ P2, P3, P4, P5, P6, P0, P1, P7 }。
[0075] S140、将所述数据状态序列中的每一个数据状态和所述存储状态序列中对应位置的存储状态进行一一映射,得到第一状态映射表;
[0076] 例如,数据状态序列为:{110,111,011,101,001,100,010,000},存储状态序列为:{ P2, P3, P4, P5, P6, P0, P1, P7 },将两个序列映射之后得到的第一状态映射表为:
{110:P2, 111:P3, 011:P4, 101:P5, 001:P6, 100:P0, 010:P1, 000:P7}。
[0077] S150、获取所述存储颗粒采用的格雷码映射表;其中,所述格雷码映射表中包括各个存储状态和各个格雷码之间的映射关系;
[0078] 例如,参见图1中的格雷码映射表为:{P7:110, P0 :111,P1:011,P3: 101,P2:001,P4:100,P6:010,P5:000}。
[0079] S160、根据所述第一状态映射表和所述格雷码映射表,生成第二状态映射表;其中,所述第二状态映射表中包括各个数据状态和各个格雷码之间的映射关系。
[0080] 例如,第一状态映射表为:{110:P2, 111:P3, 011:P4, 101:P5, 001:P6, 100:P0, 010:P1, 000:P7},格雷码映射表为:{P7:110, P0 :111,P1:011,P3: 101,P2:001,P4:
100,P6:010,P5:000},第二状态映射表可以参见下表1:
[0081] 表 
[0082]数据状态 110 111 011 101 001 100 010 000
存储比特 001 101 100 000 010 111 011 110
[0083] 通过以上描述,可以针对待处理数据生成对应的第二状态映射表,进而将第二状态映射表应用在数据读写场景或者数据巡检场景中。
[0084] (一)针对数据读写场景
[0085] 例如,在存储控制器接收到主机发送来的写入请求时,上文中的待处理数据为待写入数据,此时存储控制器会执行步骤S110 S160,得到第二状态映射表。此时,存储控制器~便可以按照第二状态映射表对所述待写入数据对应的各个数据组进行数据存储。
[0086] 在具体实施时,方法可以具体包括:
[0087] 在接收到写入请求时, 执行步骤S110 S160,得到待写入数据对应的第二状态映~射表;
[0088] 将所述待写入数据对应的所述多个数据组按照所述第二状态映射表进行转码,将转码后的数据进行编码,并在编码后存储至所述存储颗粒。
[0089] 其中,转码是指将待写入数据的每一个数据组转成格雷码,然后对得到的格雷码进行编码,例如ECC编码,得到编码数据,进而将编码数据存储在存储颗粒中,实现数据的写入操作。
[0090] 参见图3,下面针对待写入数据的大致写入过程进行举例描述:
[0091] (1.1)在接收到写入请求时,按照数据单元类型将待写入数据进行分组,得到多个数据组;其中,每一个数据组中包含的比特数和所述数据单元类型相匹配;
[0092] (1.2)统计所述多个数据组中每一个数据状态的数量,并将各个数据状态按照数量从大到小的顺序进行排序,得到数据状态序列;
[0093] (1.3)将存储颗粒的各个存储状态按照误判概率从小到大的顺序,得到存储状态序列;其中,所述存储状态的数量和所述数据状态的数量相等;
[0094] (1.4)将所述数据状态序列中的每一个数据状态和所述存储状态序列中对应位置的存储状态进行一一映射,得到第一状态映射表;
[0095] (1.5)获取所述存储颗粒采用的格雷码映射表;其中,所述格雷码映射表中包括各个存储状态和各个格雷码之间的映射关系;
[0096] (1.6)根据所述第一状态映射表和所述格雷码映射表,生成第二状态映射表;其中,所述第二状态映射表中包括各个数据状态和各个格雷码之间的映射关系;
[0097] (1.7)将所述待写入数据对应的所述多个数据组按照所述第二状态映射表进行转码,将转码后的数据进行编码,并在编码后存储至所述存储颗粒。
[0098] 以上步骤(1.1) (1.7)尤其适用于针对该待写入数据的初次写入过程。在初次写~入完成后,上述数据状态序列、存储状态序列、第一状态映射表、第二状态映射表等会进行存储。如果针对该待写入数据不是第一次写入,可以直接获取该待写入数据的初始数据状态序列、初始存储状态序列等,判断当前存储颗粒的存储状态序列相对于初始存储状态序列是否发生变化。如果发生变化,则利用当前的存储状态序列和初始数据状态序列生成第一状态映射表、第二状态映射表等。如果没有发生变化,则直接采用初始的第二状态映射表。
[0099] 在将数据进行写入操作之后,可以进行读取,在读取时同样需要基于上述第二状态映射表进行反向转码。具体的,本方法还可以包括:
[0100] 在接收到读取请求时,进行数据的读取操作,所述读取操作包括:从所述存储颗粒中读取数据;将所读取数据进行解码,得到解码后的数据组;根据所述第二状态映射表,将所述解码后的数据组进行反向转码,得到反向转码后的数据组。
[0101] 也就是说,在接收到读取请求时,具体的读取操作包括:首先从存储颗粒中读取数据,将读取的数据进行解码,例如,ECC解码,得到解码后的数据,然后将解码后的数据进行反向转码。所谓的反向转码是指将格雷码转换为数据状态,这样就可以得到反向转码后的数据,即得到在写入操作时进行转码之前的数据,至此才完成数据的读取操作。
[0102] 在实际中,参见图4,在进行写入操作时,在执行S110之前,还可以对待写入数据进行加扰处理、非对称编码等,所谓的加扰是一种数字信号的加工处理方法,将扰码和待写入数据相乘,得到新的待写入数据,实现在时间上、频率上的打散。非对称编码也是一种编码方式,可以进一步加大数据分布的差异性。
[0103] 同样的,参见图4,如果在写入时进行了加扰、非对称编码处理,在数据读取时,在反向转码之后,也要进行非对称解码、解扰处理,才能得到想要的数据。
[0104] 也就是说,在步骤(1.1)之前,对所述多个数据组进行加扰处理和/或非对称编码处理。而针对读取操作,在将所述解码后的数据组进行反向转码之后,所述方法还包括:对所述转码前的数据组进行非对称解码处理和/或解扰处理。可见,写入操作和读取操作是相对应的。
[0105] (二)针对数据巡检场景
[0106] 在实际中,随着数据存储时间的延长,会发生掉电的现象,例如,存储状态P7会掉到存储状态P6,进而会造成数据错误,后续可能发生解码错误的问题。为了避免或者减少这种情况的发生,采用了一种数据巡检的手段。所谓的数据巡检是指数据在存储颗粒中的驻留时间达到某种时长后,存储控制器就会将数据读取出来,进行纠错,纠错后得到正确的数据,之后将正确的数据再存储到存储颗粒中。这样可以减少数据发生错误的概率。
[0107] 如果在数据的首次写入操作时是基于第二状态映射表执行的,那么在每一个巡检周期内也要基于上述第二状态映射表进行数据巡检。具体的数据巡检过程可以包括b1 b3:~
[0108] b1、在每一个数据巡检周期中,从所述存储颗粒中进行数据读取操作,得到待巡检数据;对所述待巡检数据进行纠错处理以及确定各个存储状态的误判概率;
[0109] 在该步骤中,从存储颗粒中进行数据读取操作,该读取操作和上文中的读取操作一致,因此读取之后,可以得到反向转码后的数据,即转码之前的数据,这里称之为待巡检数据。
[0110] 在得到待巡检数据后,可以将待巡检数据输入到ECC解码器中,ECC解码器便可以输出纠错后的待巡检数据以及各个存储状态的误判概率。误判概率也可以采用存储状态的出错比特率进行表示,因此ECC解码器在进行纠错时得知每个存储状态出错的比特数量,进而计算得到每个存储状态的误判概率。
[0111] b2、针对纠错处理后的待巡检数据,执行步骤S110 S160,得到本次巡检周期对应~的第二状态映射表;
[0112] 也就是说,针对纠错处理后的待巡检数据,确定对应的数据状态序列和存储状态序列,将数据状态序列和存储状态序列进行映射得到第一状态映射表,获取格雷码映射表,根据第一状态映射表和格雷码映射表生成第二状态映射表。
[0113] 可理解的是,如果针对待巡检数据预先存储了对应的数据状态序列,就可以直接获取该数据状态序列。如果没有预先存储数据状态序列,可以按照S110 S120确定数据状态~序列。
[0114] 也就是说,在执行S110 160的过程时,尤其是在S110之前,判断针对所述待巡检数~据是否存在预先存储的数据状态序列;
[0115] 若存在,则获取针对所述待巡检数据预先存储的数据状态序列,并跳转到步骤“将各个存储状态按照误判概率的第二顺序方向进行排序”;
[0116] 若不存在,则执行“按照数据单元类型将待处理数据进行分组”。
[0117] 即,如果存在预先存储的数据状态序列,则直接获取该数据状态序列,进而跳转到S130的步骤,不必再执行S110和S120。而如果不存在,则开始执行S110。
[0118] b3、按照本次巡检周期对应的第二状态映射表,对纠错处理后的待巡检数据进行转码,将转码后的数据进行编码,并在编码后存储至所述存储颗粒。
[0119] 在得到本次巡检周期的第二状态映射表之后,依据第二状态映射表将纠错之后的待巡检数据转换为格雷码,进而对格雷码进行编码,编码之后进行存储即可。
[0120] 至此,完成一个数据巡检周期的数据巡检过程。
[0121] 在实际中,在上述过程中发现本次巡检周期中的存储状态序列和初始的存储状态序列相同,此时可以依据原本的第二状态映射表将纠错后的待巡检数据进行数据存储,不必再执行生成第一状态映射表、获取格雷码映射表、生成第二状态映射表的步骤。
[0122] 可理解的是,存储颗粒的存储状态序列可能会因为某种原因发生变化,如果发生了变化,则需要生成新的第二状态映射表,如果没有发生变化可以依据原本的第二状态映射表。
[0123] 另外,本发明实施例中可以采用ECC解码器统计各个存储状态的误判概率,而由于ECC统计误判概率是比较耗时的,因此可以采用如下替代方法来确定各个存储状态的误判概率:
[0124] 根据巡检周期的时长、上一个巡检周期内的读取次数和待存储单元的PE次数中的至少一项,确定对应的误判概率表格,并获取所述对应的误判概率表格中各个存储状态的误判概率;其中,每一个误判概率表格中包含各个存储状态各自对应的误判概率。
[0125] 例如,在实际场景中,巡检周期时长分为3档、读取次数分为5档、PE次数分为5档,每一档的巡检周期时长、读取次数、PE次数对应一个误判概率表格,一共会有75个误判概率表格。在需要统计误判概率时,可以根据巡检周期的时长所在的档位、上一个巡检周期内的读取次数所在的档位、待存储单元的PE次数所在的档位,确定对应的误判概率表格。这种方式的计算量比较小,可以缩短用时。
[0126] 可理解的是,本发明实施例中上述确定误判概率的方法不限于在数据巡检场景中,也可以应用在其它场景中。即,上述确定误判概率的方法可以应用在状态映射处理方法适用的任一场景中。
[0127] 参见图5,下面对每一个巡检周期内的巡检过程进行举例说明:
[0128] (2.1)从存储颗粒中进行数据读取操作,得到待巡检数据;
[0129] (2.2)将待巡检数据输入到ECC解码器中,得到纠错后的待巡检数据和各个存储状态的误判概率;
[0130] (2.3)按照各个存储状态的误判概率从小到大的顺序,将各个存储状态排序,得到存储状态序列,经过判断得知该存储状态序列和初始的存储状态序列不同;
[0131] (2.4)获取针对所述待巡检数据预先存储的数据状态序列;
[0132] (2.5)将所述数据状态序列中的每一个数据状态和所述存储状态序列中对应位置的存储状态进行一一映射,得到第一状态映射表;
[0133] (2.6)获取所述存储颗粒采用的格雷码映射表;
[0134] (2.7)根据所述第一状态映射表和所述格雷码映射表,生成第二状态映射表;
[0135] (2.8)按照所述第二状态映射表对纠错处理后的待巡检数据进行转码,将转码后的数据进行编码,并在编码后存储至所述存储颗粒。
[0136] 举例来说,参见图6,为各个存储状态的误判概率,基于图6生成存储状态序列,进而形成第二状态映射表。基于该第二状态映射表进行数据读写和数据巡检时产生的比特误码率,相对于现有技术中仅通过格雷码映射表进行数据读取和数据巡检时产生的比特误码率有不同程度的下降。例如,针对图7中12种不同类型的数据(xml数据、x‑ray数据等)进行读写或巡检,发现比特误码率都会下降。
[0137] 在本发明实施例中的存储颗粒是指实际存储数据的地方,通常以颗粒芯片、Die(即逻辑单元)、Block(即块)、WordLine(即字线)、page(即页)的方式依次索引。存储颗粒按照每个存储单元可存储的比特数量分为SLC(1bit)、MLC (2bits), TLC (3bits)等。PE次数为存储单元的擦写次数。
[0138] 本发明实施例提供的方法,首先按照数据单元类型将待处理数据进行分组,得到多个数据组,统计所述多个数据组中每一个数据状态的数量,将各个数据状态按照数量的第一顺序方向进行排序,得到数据状态序列;将存储颗粒的各个存储状态按照误判概率的第二顺序方向进行排序,得到存储状态序列;将所述数据状态序列中的每一个数据状态和所述存储状态序列中对应位置的存储状态进行一一映射,得到第一状态映射表。然后获取所述存储颗粒采用的格雷码映射表,再根据所述第一状态映射表和所述格雷码映射表,生成第二状态映射表。可知在第一状态映射表中,误判概率最低的存储状态和数量最多的数据状态对应,误判概率最高的存储状态和数量最少的数据状态对应,这样可以使得数量较多的数据状态对应的格雷码存储在误判概率较低的存储状态中,数量较少的数据状态对应的格雷码存储在误判概率较高的存储状态中,这样相对于现有技术中固定映射的方式可以降低数据整体的比特误码率,进而可以减轻解码器的纠错负荷,缩短数据读取的延迟等。
[0139] 第二方面,本发明实施例提供一种状态映射处理装置。
[0140] 参见图8,该装置包括:
[0141] 第一分组模块,用于按照数据单元类型将待处理数据进行分组,得到多个数据组;其中,每一个数据组中包含的比特数和所述数据单元类型相匹配;
[0142] 第一排列模块,用于统计所述多个数据组中每一个数据状态的数量,并将各个数据状态按照数量的第一顺序方向进行排序,得到数据状态序列;
[0143] 第二排列模块,用于将存储颗粒的各个存储状态按照误判概率的第二顺序方向进行排序,得到存储状态序列;其中,所述存储状态的数量和所述数据状态的数量相等,所述第一顺序方向和所述第二顺序方向相反;
[0144] 第一映射模块,用于将所述数据状态序列中的每一个数据状态和所述存储状态序列中对应位置的存储状态进行一一映射,得到第一状态映射表;
[0145] 第一获取模块,用于获取所述存储颗粒采用的格雷码映射表;其中,所述格雷码映射表中包括各个存储状态和各个格雷码之间的映射关系;
[0146] 第二映射模块,用于根据所述第一状态映射表和所述格雷码映射表,生成第二状态映射表;其中,所述第二状态映射表中包括各个数据状态和各个格雷码之间的映射关系。
[0147] 第三方面,本发明实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现第一方面提供的方法的步骤。
[0148] 具体地,可以提供配有存储介质的系统或者装置,在该存储介质上存储着实现上述实施例中任一实施例的功能的软件程序代码,且使该系统或者装置的计算机(或CPU或MPU)读出并执行存储在存储介质中的程序代码。
[0149] 在这种情况下,从存储介质读取的程序代码本身可实现上述实施例中任何一项实施例的功能,因此程序代码和存储程序代码的存储介质构成了本发明的一部分。
[0150] 此外,应该清楚的是,不仅可以通过执行计算机所读出的程序代码,而且可以通过基于程序代码的指令使计算机上操作的操作系统等来完成部分或者全部的实际操作,从而实现上述实施例中任意一项实施例的功能。
[0151] 此外,可以理解的是,将由存储介质读出的程序代码写到插入计算机内的扩展板中所设置的存储器中或者写到与计算机相连接的扩展模块中设置的存储器中,随后基于程序代码的指令使安装在扩展板或者扩展模块上的CPU等来执行部分和全部实际操作,从而实现上述实施例中任一实施例的功能。
[0152] 可理解的是,本发明实施例提供的计算机可读介质中有关内容的解释、具体实施方式、有益效果、举例等内容可以参见第一方面提供的方法中的相应部分,此处不再赘述。
[0153] 第四方面,本发明实施例提供一种SSD设备,SSD设备包括存储控制器,所述存储控制器包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现第一方面提供的方法的步骤。
[0154] 可理解的是,本发明实施例提供的SSD设备中有关内容的解释、具体实施方式、有益效果、举例等内容可以参见第一方面提供的方法中的相应部分,此处不再赘述。
[0155] 本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0156] 本领域技术人员应该可以意识到,在上述一个或多个示例中,本发明所描述的功能可以用硬件、软件、挂件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。
[0157] 以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本发明的保护范围之内。