具有数据质量度量和可选数据恢复方案的存储设备的制作方法

文档序号:30517821发布日期:2022-06-25 03:55阅读:95来源:国知局
具有数据质量度量和可选数据恢复方案的存储设备的制作方法
具有数据质量度量和可选数据恢复方案的存储设备
1.相关申请的交叉引用
2.本技术要求2020年12月23日提交的美国临时专利申请序列号63/130,399的利益,出于所有目的通过引用将其合并于此。
技术领域
3.本发明概念通常涉及存储设备,并且更具体地,涉及改进纠错处理。


背景技术:

4.主机可以向存储设备写入数据并从存储设备读取数据。有时,在处理主机读取请求时,存储设备可能检测到错误。纠错码提供了一种机制,通过这种机制可以校正这些错误。但是应用纠错可能需要额外的时间:存储设备最终可能需要比主机可接受的更多时间来响应读取请求。此外,纠错技术消耗电力,增加了存储设备的运行费用。
5.仍然需要改进存储设备的性能,以减少执行纠错所需的时间并减少存储设备所使用的功率。
附图说明
6.图1示出了根据本发明构思的实施例的包括支持数据质量度量的存储设备的系统。
7.图2示出了根据本发明构思的实施例的图1的机制的详情。
8.图3示出了根据本发明构思的实施例的当被实现为固态驱动器(ssd)时图1的存储设备的详情。
9.图4示出了根据本发明构思的实施例的将误码率与违反校验方程(violated check equation)的数量相关联的图的示例。
10.图5示出了根据本发明构思的实施例的支持在图1的存储设备中使用数据质量度量的图3的读取恢复级别(rrl)表的示例。
11.图6示出了根据本发明构思的实施例的图1的存储设备中的图3的数据质量度量表的示例。
12.图7示出了根据本发明构思的实施例的在图1的主机和图1的存储设备之间交换的消息。
13.图8a-图8c示出了根据本发明构思的实施例的用于图1的存储设备读取数据和应用纠错的示例过程的流程图。
14.图9示出了根据本发明构思的实施例的用于图1的存储设备接收读取请求的目标数据质量度量或目标延迟的示例过程的流程图。
15.图10示出了根据本发明构思的实施例的用于图1的存储设备确定违反校验方程的数量的示例过程。
具体实施方式
16.现在将详细参考本发明构思的实施例,其示例在附图中示出。在下面的详细描述中,阐述了许多具体细节,以便能够彻底理解本发明的构思。然而,应当理解,本领域普通技术人员可以在没有这些具体细节的情况下实践本发明构思。在其他实例中,未详细描述众所周知的方法、过程、组件、电路和网络,以避免不必要地模糊实施例的方面。
17.应当理解,尽管本文中可以使用术语第一、第二等来描述各种元件,但这些元件不应受到这些术语的限制。这些术语仅用于区分一个元件和另一个元件。例如,在不脱离本发明构思的范围的情况下,第一模块可以被称为第二模块,并且类似地,第二模块可以被称为第一模块。
18.本文中用于描述本发明构思的术语仅用于描述特定实施例的目的,并不旨在限制本发明构思。如在本发明构思和所附权利要求的描述中所使用的,除非上下文另有明确指示,否则单数形式“一”、“一个”和“该”也意在包括复数形式。还应理解,本文中使用的术语“和/或”是指并包括一个或多个相关列出项目的任何和所有可能组合。应进一步理解,当在本说明书中使用术语“包括”和/或“包含”时,规定了所述特征、整数、步骤、操作、元件和/或组件的存在,但不排除一个或多个其他特征、整数、步骤、操作、元件、组件和/或其组的存在或添加。附图的组件和特征不一定按比例绘制。
19.从存储设备(诸如固态驱动器(ssd))内的与非(nand)闪存芯片恢复数据可以通过纠错编码(ecc)完成。基于ecc解码结果,ssd仅报告正确或失败以校正检测到错误的块中的数据。
20.有些应用可以容忍数据错误达到预定速率。此外,诸如非易失性存储器express(nvme)的协议可以支持读取恢复级别,这允许将存储设备配置为当尝试从有错误的块恢复数据时(或当返回错误时)尝试的不同程度的努力。利用该数据质量特征,可以基于协议读取恢复级别需求来预先计算从有错误的块恢复数据的估计时间,而无需尝试使用可能具有长延迟和/或需要额外功率来执行的恢复方案。
21.非易失性存储器(nvm)可以支持可配置的读取恢复级别(rrl)属性,这平衡读取命令的完成时间与应用于这些读取命令的错误恢复量(当发生错误时)。rrl属性可以被应用于与rrl属性相关联的nvm集。与nvm集关联的命名空间可以继承该nvm集的rrl。如果不支持nvm集,则nvm子系统中的所有命名空间可以使用相同的rrl。表1显示了示例rrl表(“o”代表“可选择”,“m”代表“强制性”)。
22.表1
[0023][0024]
存储设备可以包括数据质量特征实现。在没有数据质量度量的存储设备中,当尝试读取数据时,存储设备可能需要执行强力方法或简化强力方法,以基于错误恢复增强顺序尝试所有错误恢复方案。强力方法可以按顺序尝试错误恢复方案——例如,从最快到最慢——直到某个方案导致成功的错误恢复或所有错误恢复方案都已尝试为止。简化强力方法可以按顺序尝试错误恢复方案——例如,从最快到最慢——直到某个方案导致成功的错误恢复或者尝试读取和恢复数据所花费的时间超过可用时间(即,主机期望从存储设备获得的延迟)为止。以这种方式尝试所有错误恢复方案可能需要较长的延迟和额外的功耗,尤其是对于较差的数据质量。
[0025]
相反,在具有数据质量度量的存储设备中,在管理命令阶段中的命名空间创建期间,可以构建rrl表。主机可以使用协议特征命令来设置每个命名空间的rrl。出于服务质量(qos)控制目的,主机可以发出verify()或get_lba_status()命令,作为对其的响应,存储设备数据质量度量估计器可以向主机快速返回数据质量度量级别,而无需应用实际的数据恢复过程(可能有很长的延迟和/或需要额外的功耗才能执行)。在正常的read()期间命令阶段,第一数据质量度量估计器模块可以计算数据质量度量。基于数据质量度量和rrl属性,错误恢复模式选择器可以选择要使用的错误恢复方案。因为rrl属性和数据质量度量可
以识别要使用的单个错误恢复方案,所以存储设备可以避免在强力方法或简化强力方法中尝试多个错误恢复方案,以尝试找到可能成功的错误恢复方案。例如,对于具有最差数据质量的数据,存储设备可能知道错误恢复不太可能成功或可能超过rrl属性。在这种情况下,存储设备可以将数据直接返回到主机并绕过错误恢复。
[0026]
数据质量估计算法
[0027]
对于每个ecc,可以存在与之关联的奇偶校验矩阵h。对于(n,k)的代码,n为代码长度,k为数据长度,h可以是具有n-k个独立行和n列的矩阵,如下所示:
[0028][0029]
长度n的ecc码字c=(c1,c2,c3,
…cn
)应满足奇偶校验矩阵h中的线性方程:换句话说,应满足方程hc=0。请注意,对于给定数据,ecc码字c可以相同,而与单个ecc的奇偶校验矩阵h无关。
[0030]
由于矩阵h包括n-k行,因此hc=0可以包括n-k个线性方程(也可以被称为“校验方程”,因为它们检查码字是否有错误)。编码码字c可以被存储在磁道、nand单元中,或在写入阶段使用其他技术。当从存储位置读取码字时,可能会出现一些错误:这些错误的存在可以被表示为损坏码字,如一般而言,可以预期损坏的码字中的错误数量越大,则不满足(即不等于0)中的线性方程的数量。ecc解码器可以尝试使用所有解码算法来试图寻找与的汉明距离最近且可以满足方程的码字
[0031]
在没有数据质量度量的存储设备中,满足方程且可以成功恢复数据,或者并且数据可能无法成功恢复(并且可能返回错误)。在具有数据质量度量的存储设备中,在ecc解码器的使用期间,ecc解码器可以计算中被违反(即,不等于0)的线性方程的数量:违反的线性方程的该计数可以被用作数据质量的度量。违反线性方程的数量与码字中的误码率(ber)之间可能存在关系。因此,可以看到ber与违反线性方程数量之间的关系。
[0032]
数据质量度量估计器表如下表2所示。
[0033]
表2
[0034]
违反线性方程的数量ber数据质量等级(0-100)恢复延迟(μs)00100(完美)01-101e-20-1e-1099(优秀)211-201e-10-2e-898521-402e-8-1e-89710
………ꢀ
401
‑…
》1e-10(不可恢复)无限
[0035]
通常,存储设备可以基于违反线性方程的数量(v)相对于奇偶校验矩阵h中的行的数量(该数量可以标记为“m”)来提供数据质量度量。因此,数据质量度量可以被表示为(v/m)%。由于违反线性方程的数量与误码率之间的关系可能是非线性的,因此可以基于对于特定ecc解码器的违反线性方程的数量来构建示例数据质量表,如上面的表2中所示。
[0036]
图1示出了根据本发明构思的实施例的包括支持数据质量度量的存储设备的系统。在图1中,也可以被称为主机的机器105可以包括处理器110、存储器115和存储设备120。处理器110可以是任何种类的处理器。(为了便于说明,将处理器110以及下面讨论的其他组件显示在机器外部:本发明概念的实施例可以包括机器内部的这些组件。)虽然图1示出了单个处理器110,但是机器105可以包括任意数量的处理器,每个处理器可以是单核或多核处理器,每个处理器可以实现精简指令集计算机(risc)体系结构或复杂指令集计算机(cisc)体系结构(除其他可能性外),并可以在任何所需组合中混合。
[0037]
处理器110可以耦合到存储器115。存储器115可以是任何种类的存储器,诸如闪存、动态随机存取存储器(dram)、静态随机存取存储器(sram)、持久随机存取存储器、铁电随机存取存储器(fram)或非易失性随机存取存储器(nvram),诸如磁阻随机存取存储器(mram)等。存储器115也可以是不同存储器类型的任何期望组合,并且可以由存储器控制器125管理。存储器115可以用于存储被称为“短期”的数据:也就是说,数据预计不会长时间存储。短期数据的示例可以包括临时文件、应用在本地使用的数据(可能是从其他存储位置复制的)等。
[0038]
处理器110和存储器115也可以支持操作系统,在该操作系统下可以运行各种应用。这些应用可以发出从存储器115或存储设备120读取数据或将数据写入存储器115或存储设备120的请求(也可以称为命令)。例如,可以使用存储设备120来存储初始参数(或初始参数的值范围,以及值范围代表的行为类型)用于初始化模拟。存储设备120可使用设备驱动器130接入。尽管图1使用通用术语“存储设备”,本发明概念的实施例可以包括可受益于使用数据质量度量的任何存储设备格式,其示例可以包括硬盘驱动器和固态驱动器(ssd)。下文对“ssd”的任何引用应理解为包括本发明概念的此类其他实施例。
[0039]
图2示出了根据本发明构思的实施例的图1的机器105的详情。在图2中,机器105通常包括一个或多个处理器110,其可以包括存储器控制器125和时钟205,可以用于协调机器的组件的操作。处理器110也可以耦合到存储器115,可以包括随机存取存储器(ram)、只读存储器(rom)或其他状态保存介质。处理器110还可以耦合到存储设备120和网络连接器210,网络连接器210可以是例如以太网连接器或无线连接器。处理器110还可以连接到总线215,可以附接可以使用i/o引擎225管理的用户接口220和输入/输出(i/o)接口端口等。
[0040]
图3示出了根据本发明构思的实施例的当被实现为ssd时图1的存储设备120的详情。在图3中,ssd 120可以包括接口305。接口305可以是用于将ssd 120连接到图1的机器105的接口。ssd 120可以包括多于一个接口305:例如,一个接口可以被用于基于块的读写请求,另一个接口可以被用于键值读写请求。尽管图3表明接口305是图1的ssd 120和机器105之间的物理连接,但是接口305也可以表示可跨公共物理接口使用的协议差异。例如,ssd 120可以使用u.2或m.2连接器连接到机器105,但是可以支持基于块的请求和键值请求:处理不同类型的请求可以由不同的接口305执行。
[0041]
ssd 120也可以包括可以管理接口305的主机接口层310。如果ssd 120包括多于一
个接口305,则单个主机接口层310可以管理所有接口,ssd 120可以包括每个接口的主机接口层,或者可以使用它们的一些组合。
[0042]
ssd 120也可以包括ssd控制器315、各种通道320-1、320-2、320-3和320-4,沿着这些通道可以排列各种闪存芯片325-1、325-2、325-3、325-4、325-3、325-6、325-7和325-8。ssd控制器315可以管理沿着通道320-1到320-4向闪存芯片325-1至325-8发送读请求和写请求。尽管图3示出四个通道和八个闪存芯片,但是本发明构思的实施例可以包括任意数量(一个或多个,无绑定)的通道,包括任意数量(一个或多个,无绑定)的闪存芯片。
[0043]
在每个闪存芯片内,空间可以被组织为块,块可以进一步被细分为页,并可以被归组为超级块。页通常是在ssd上可以被读取或写入的最小数据单元。页大小可根据需要而变化:例如,页可以为4kb的数据。如果要写入小于整页,则多余的空间是“未使用的”。
[0044]
尽管可以写入和读取页,但是ssd通常不允许数据被覆写:也就是说,现有数据不可以被新数据“就地”替换。相反,当要更新数据时,新数据写入ssd上的新页,并且原始页被无效(标记为准备擦除)。因此,ssd页通常有三种状态之一:空白(准备写入)、有效(包含有效数据)和无效(不再包含有效数据,但在擦除之前不可用)(这些状态的确切名称可能不同)。
[0045]
但是,尽管页可以被单独写入和读取,但是块是可以被擦除的数据的基本单位。也就是说,页不是单独擦除的:一个块中的所有页通常会被同时擦除。例如,如果块包含256页,则一个块中的所有256页被同时擦除。这种安排可能导致针对ssd的一些管理问题:如果选择了仍包含一些有效数据的块进行擦除,则在该块可以被擦除之前,可能需要将该有效数据复制到ssd上其他位置的空白页。(在本发明构思的一些实施例中,擦除的单位可以不同于块:例如,它可以是超级块,超级块可以是多个块的集合。)
[0046]
ssd控制器315可以包括闪存转换层330(对于不使用闪存存储的存储设备,可以更一般地被称为逻辑到物理转换层)、读取恢复级别(rrl)表335、数据质量度量估计器340、数据质量度量表345、错误恢复模式选择器350以及纠错码模块355-1和355-2。闪存转换层330可以处理lba或其他逻辑id(如图1的处理器110所使用)以及数据被存储在闪存芯片325-1到325-8中的物理块地址(pba)或其他物理地址的转换。rrl表335可以用于存储关于要应用于命名空间的默认优选rrl的信息,以及关于错误恢复的其他信息。rrl表335将参考图5在下面进一步讨论。
[0047]
数据质量度量估计器340可以获取关于从闪存芯片325-1至325-8读取的数据的信息,并确定要使用什么错误恢复机制。要了解其工作,需要了解纠错码(ecc)的工作原理。
[0048]
通常,可以使用ecc模块355-1和355-2实现的每个ecc可以包括奇偶校验矩阵h。奇偶校验矩阵h可以包括n

k行和n列,其中n是码字的长度,k是码的秩。由于奇偶校验矩阵h包括n列,并且码字c的长度为n,因此乘积hc可以是具有n

k行的向量。码字c可以基于正在写入的数据生成,并且可以被选择以使得hc为0。因此,乘积hc可以被表示n

k个线性方程的集合。当数据被写入闪存芯片325-1到325-8时,码字c也可以被写入闪存芯片325-1到325-8。
[0049]
当读取数据时,尤其是当读取码字c时,可能发生错误,导致码字c被错误读取。在这种情况下,损坏的码字可以被表示为由于可能有错误(并且因此可能不是码字本身),所以可能不像hc那样等于0:一些线性方程可能不满足(或者,换句话说,一些线性
方程可能被违反)。然后,ecc模块可以尝试寻找尽可能“接近”并且为0的另一码字(“接近度”可以用汉明距离来度量,其测量码字中需要被更改以将一个字改变为另一个字的字符数。)如果可以找到这样的码字则ecc模块可以能够校正从闪存芯片325-1到325-8读取的数据;如果不能找到码字则数据可能是无法校正的,并且可能返回错误。
[0050]
通过这种理解,可以理解数据质量度量估计器340。暂时转到图4,图4示出中的违反(或不满足)线性方程的数量与数据的误码率(ber)之间的关系图。可以看出,中违反线性方程的数量与ber之间存在相关性。因此,当中的违反线性方程的数量增加时,可以预期读取数据中的错误数量增加。(注意,尽管相关性可能不是线性的,也可能不是单调增加的,但总体上相关性是增加的。因此,例如,从100到102个的违反线性方程不一定会导致ber增加,从100到400个的违反线性方程可能会导致ber增加)。因此,通过检查违反线性方程的数量,可以确定数据质量的估计。
[0051]
返回到图3,数据质量度量估计器340然后可以确定中的违反方程的数量并使用该信息确定数据质量的估计度量。数据质量度量估计器340可以使用数据质量度量表345来帮助数据质量度量估计器340从违反方程的数量映射到数据质量度量。下面参考图6进一步讨论数据质量度量表345。
[0052]
给定由数据质量度量估计器340估计的数据质量度量,错误恢复模式选择器350然后可以选择要应用于数据的错误恢复模式。ssd 120可以实现许多不同的ecc模块,如ecc模块355-1和355-2所示。尽管图3示出两个ecc模块355-1和355-2,但本发明构思的实施例可以支持任意数量(一个或更多个)的ecc模块355-1和355-2。ecc模块355-1和355-2的示例可以包括读取重试(尝试第二次读取数据)、独立磁盘冗余阵列(raid)解码器(应用用于从raid读取数据的解码器)、ecc硬件解码器(使用硬件应用ecc)和ecc软件解码器(使用软件应用ecc)。ecc模块355-1和355-2可以使用许多不同的方法来实现。
[0053]
ecc模块355-1和355-2(以及数据质量度量估计器340和错误恢复模式选择器350)可以使用专用集成电路(asic)、现场可编程门阵列(fpga)、中央处理单元(cpu)、图形处理单元(gpu)或通用gpu(gpgpu)来实现。取决于实现,固件或软件也可以用于实现ecc模块355-1和355-2(以及数据质量度量估计器340和错误恢复模式选择器350)。
[0054]
执行ecc的一种方法(可以被称为强力方法)是尝试依次应用每个ecc模块,直到错误得到校正或没有剩余的ecc模块需要尝试为止。第二种方法是尝试依次应用每个ecc模块,直到满足以下三个条件中的一个为止:错误得到校正、没有剩余的ecc模块需要尝试或处理读取请求所花费的时间(包括接收读取请求所花费的时间和尝试执行纠错所花费的时间)超过某个最大延迟。在任一情况下,如果成功地校正了错误,则校正的数据被返回到图1的主机105;否则,向图1的主机105报告错误。
[0055]
但这些方法有一些缺点。首先,由于这些方法依次应用ecc模块355-1和355-2中的每个,因此执行纠错所需的时间包括依次执行每个ecc模块所需的时间,这可能大于执行单个ecc模块所需的时间。此外,执行ecc模块需要电力。与时间一样,执行多个ecc模块可能比仅执行单个ecc模块消耗更多的电力。
[0056]
还可能发生的是,图1的主机105可能期望在比执行每个ecc模块可能需要的更短
的时间内对读取请求做出响应。因此,依次执行每个ecc模块可能最终超过图1的主机105所容忍的延迟。如果可以实际纠错的ecc模块按顺序尚未被执行,则在超过图1的主机105愿意容忍的延迟之前,可能不会校正损坏的数据,然而,如果ecc模块已经以不同的顺序被执行,则图1的主机105愿意容忍的延迟可能已经允许该ecc模块的执行。
[0057]
为了解决这些缺点,错误恢复模式选择器350可以基于数据的数据质量度量来选择单个ecc模块355-1或355-2来执行。如果选择的ecc模块校正了数据,则与依次尝试多个ecc模块相比,可以更快地返回校正的数据,并且功耗更低(因为只执行一个ecc模块)。
[0058]
在本发明构思的一些实施例中,错误恢复模式选择器350可以选择最适合数据质量度量的ecc模块。例如,错误恢复模式选择器350可以基于数据质量度量来选择预期能够校正错误的最快执行ecc模块。在本发明构思的其他实施例中,错误恢复模式选择器350可以选择期望在图1的主机105愿意容忍的延迟内完成的最彻底的ecc模块(即使数据质量度量指示较不彻底的ecc模块可能足够)。
[0059]
当错误恢复预计不会成功时,也可以使用一些选项。在本发明构思的一些实施例中,如果数据质量度量指示校正错误所需的时间大于图1的主机105愿意容忍的延迟,则ssd 120可以简单地将错误返回到图1的主机105。在本发明构思的其他实施例中,错误恢复模式选择器350可以选择将在图1的主机105愿意容忍的延迟内完成的最彻底的ecc模块,即使该ecc模块可能无法解决错误。毕竟,ecc模块可能能够解决该错误,即使该错误对于该ecc模块来说过于复杂,无法解决。
[0060]
在又一其它实施例中,即使未执行纠错,ssd 120也可以返回数据而不是错误。有些应用可以容忍某些数据错误。例如,音频或视频数据的回放可以容忍数据中的一些错误,因为大部分数据可以被成功地呈现给用户。图1的主机105可以指定数据质量度量,以指示图1的主机105愿意容忍具有一些错误的数据。ssd 120然后可以将数据的估计数据质量度量与图1的主机105指定的数据质量度量进行比较:如果数据具有足够的数据质量以满足主机,则即使纠错没有发生或没有成功,数据也可以被返回到主机。
[0061]
如上所述,ssd控制器315可以仅包括一个ecc模块355-1或355-2。但是,即使ssd控制器315仅包括一个ecc模块355-1或355-2,也可以使用数据质量度量来确定是否应用ecc模块。例如,图1的延迟主机105愿意容忍可能或可能不允许使用ecc模块,或者即使有足够的时间来执行ecc模块,ecc模块也可能明显不能解决错误。
[0062]
图5示出了根据本发明构思的实施例的支持在图1的存储设备120中使用数据质量度量的图3的rrl表335的示例。在图5中,示出了rrl 335。rrl 335可以存储条目,诸如条目505和510。每个条目可以将命名空间映射到rrl、可接受的延迟和/或可接受的数据质量度量。注意,尽管图5将rrl表335示为包括四列,但取决于实现,本发明构思的实施例可以包括更多或更少的列。例如,在本发明构思的一些实施例中,rrl 335可以包括数据质量度量,但不包括延迟,反之亦然。
[0063]
例如,条目505示出命名空间515映射到rrl 520、可接受的延迟525和可接受的数据质量度量530,而条目510示出命名空间535映射到rrl 540、可接受的延迟545和可接受的数据质量度量550。可接受的延迟525和545可以表示图1的主机105分别对于与命名空间515和535相关联的读取请求愿意容忍的默认延迟。可接受的数据质量度量530和550可以表示图1的主机105分别应用于与命名空间515和535相关联的读取请求的默认数据质量度量。注
意,可接受的延迟525和545以及可接受的数据质量度量530和550可以针对各个读取请求被覆盖,如参考下面的图7所讨论的:可接受的延迟525和545以及可接受的数据质量度量530和550可以在图1的主机105不覆盖默认延迟/数据质量度量的情况下使用。
[0064]
在本发明构思的一些实施例中,术语“数据质量度量”也可以被用于包括数据质量度量和延迟二者。也就是说,在本发明概念的一些实施例中(特别是在rrl表345不包括可接受的延迟和可接受的数据质量度量的列的本发明概念的实施例中),术语“数据质量度量”可以被理解为指数据质量度量本身或延迟。但是,在描述了术语“数据质量度量”和“延迟”二者的本发明概念的实施例中,术语“数据质量度量”并不意味着延迟。
[0065]
如上文参考图3所讨论的,图1的主机105可能愿意容忍数据中的一些错误,即使数据可能没有被成功地校正(或者图1的存储设备120可能没有时间执行纠错)。这一事实解释了为什么rrl表345可以包括可接受的延迟和可接受的数据质量度量二者,以及为什么这些数据点可能不一致。例如,rrl表345可以指定,对于特定命名空间,数据可以具有至少90的数据质量度量,并且还可以指定延迟太小以致不能允许错误恢复(或者至少,不能允许使用该数据质量度量的数据的错误恢复)。对于这样的数据点,图1的主机105可以指示在返回从图1的存储设备120读取的数据时对延迟的小容忍,以及在从图1的存储设备120读取的数据中对某种程度的错误的容忍。也可以指定其他组合(诸如对数据错误的低容忍,但对返回数据所需时间的高容忍)。另一方面,如果可接受的延迟和可接受的数据质量度量“一致”,则图1的主机105可以仅指定一个这样的值(并且如果没有包括在rrl表335中,则省略另一个值,或者在rrl表335中将该值留空)。
[0066]
图6示出了根据本发明构思的实施例的图1的存储设备120中的图3的数据质量度量表345的示例。在图6中,示出了数据质量度量表345。数据质量度量表345可以存储条目,诸如条目605和610。每个条目可以将多个违反线性方程(也可以被称为多个错误)映射到ber、错误恢复延迟和/或数据质量度量。注意,尽管图6将数据质量度量表345示为包括四列,但取决于实现,本发明构思的实施例可以包括更多或更少的列。例如,在本发明概念的一些实施例中,数据质量度量表345可以包括数据质量度量,但不包括错误恢复延迟,反之亦然。
[0067]
例如,条目605示出错误数量615被映射到ber 620、错误恢复延迟625和数据质量度量630,而条目610示出错误数量635被映射到ber 640、错误恢复延迟645和数据质量度量650。错误恢复延迟625和645可以表示针对所识别的错误数量执行错误恢复所需的估计时间。数据质量度量630和650可以表示分配给具有所识别的错误数量的数据的数据质量度量。因此,例如,条目605反映了如果不存在违反线性方程,则数据中不存在错误,这意味着不需要时间来执行纠错,并且数据质量被认为是完美的。相比之下,条目610反映出存在一些违反线性方程,估计需要2微秒(μs)来校正:在这个错误数量的情况下,数据质量较高,但不一定完美。
[0068]
使用数据质量度量表345中的信息(结合读取请求的可接受的延迟和/或可接受的数据质量度量),图3的错误恢复模式选择器350可以选择要使用的适当ecc模块。如上文参考图3所讨论的,图3的错误恢复模式选择器350然后可以选择ecc模块,其可以在数据的估计数据质量度量的情况下来校正错误,但是在图1的主机105愿意容忍的限度内(就数据错误和/或延迟而言)。图3的错误恢复模式选择器350可以选择将(希望)在给定数据质量度量
的情况下校正错误的最快ecc模块、最有可能在给定数据质量度量的情况下校正错误的ecc模块(在图1的主机105愿意容忍的延迟内),或者完全跳过纠错(如果在图1的主机105愿意容忍的延迟内纠错未被预测为成功)。如果错误恢复未尝试或未成功,图3的错误恢复模式选择器350也可以基于图1的主机105愿意接受的数据质量,决定是返回错误结果还是返回存在错误的数据。
[0069]
图7示出了根据本发明构思的实施例的在图1的主机105和图1的存储设备120之间交换的消息。在图7中,主机105可以向存储设备120发送写入请求705。写入请求705可以包括要写入存储设备120的数据710。然后,存储设备120可以存储数据,生成码字,并存储码字,之后存储设备120可将响应715发送回主机105。
[0070]
在稍后的某个时间点,主机105可以发送读取请求720以从存储设备120读回出数据710。然后,存储设备120可以尝试从存储器中读取数据710以及所存储的码字,并可以结合奇偶校验矩阵h使用码字来确定数据是完美的还是存在错误:如果数据有错误,则存储设备120也可以使用码字和奇偶校验矩阵h来确定违反线性方程的数量:存储设备120然后可以使用违反线性方程的数量和图3的数据质量度量表345来确定数据质量度量。存储设备120然后可以返回数据质量度量到主机105,如响应725所示。
[0071]
然后,主机105可以使用数据质量度量来决定要采取的行动。例如,主机105可以简单地将响应725视为指示从存储设备120读取数据时存在错误,并且可以基于该信息继续。但是在一些实施例中,主机105可以重新发送读取请求,如读取请求730所示。读取请求730可以指定目标数据质量级别735和/或目标延迟740,存储设备120然后可以使用该目标数据质量级别735和/或目标延迟740来决定选择哪个ecc模块(或不选择任何ecc模块),以及是否返回有错误的数据(如果数据无法被校正)。一旦存储设备120决定执行什么校正(如果有),存储设备120就可以执行任何选择的校正,并且可以将响应745发送回主机105。响应705可以包括校正的数据750,响应705可以包括未校正的数据,或者响应705可以返回错误,这取决于执行了(未执行)什么纠错以及选择了哪些信息发送回主机105。
[0072]
在图7中,主机105被示出为向存储设备120发送两个读取请求720和730,并且存储设备120被示出为发送两个响应725和745。在图7所涵盖的本发明概念的实施例中,可以包括即使根据图5的rrl表335,存储设备120也不具有关于主机105可能想要的目标数据质量度量735和/或目标延迟740的任何信息,该方法也是合理的。但是,在本发明构思的一些实施例中,如果存储设备120不具有这样的信息,则存储设备120可以仅仅假设主机105期望完美的数据,但是对于纠错所强加的延迟不具有容忍,在这种情况下,存储设备120可以在响应725中简单地报告错误(而不是报告数据质量度量)。在本发明构思的其他实施例中,主机105可以作为单独的请求来发送对数据710的数据质量级别的请求,而不是存储设备120响应于读取请求720返回这样的信息。在本发明构思的其他实施例中,存储设备120可以接收目标数据质量度量735和/或目标延迟740,作为读取请求720的一部分,或者通过从图5的rrl表335访问这样的信息。在本发明构思的此类实施例中,存储设备120可以简单地执行纠错(或者不执行纠错,取决于图3的错误恢复模式选择器350),而不是在响应725中返回数据710的数据质量级别。
[0073]
图8a-图8c示出了根据本发明构思的实施例的图1的存储设备120读取数据和应用纠错的示例过程的流程图。在图8a中,在块805,图1的存储设备120可以从图1的主机105接
收图7的写入请求705,以将图7的数据710写入图3的闪存芯片325-1至325-8。在块810,图1的存储设备120可以将图7的数据710写入图3的闪存芯片325-1到325-8。在块815,图1的存储设备120可以生成图7的数据710的码字;该码字可以在块820中被存储图1的存储设备120的图3的闪存芯片325-1至325-8中。
[0074]
在块825(图8b),图1的存储设备120可以从图1的主机105接收图7的读取请求720或730。在块830,图1的存储设备120可以为图7的读取请求720和/或730确定图7的目标数据质量度量735和/或图7的目标延迟740。在块835,图1的存储设备120可以尝试从图3的闪存芯片325-1至325-8读取图7的数据710。注意,数据可能被成功读取,但包含导致图3的闪存芯片325-1至325-8中的数据不准确的错误:如果任何数据错误可能无法被校正,则即使从图3的闪存芯片325-1至325-8成功“读取”数据,图7的读取请求720和/或730也可能被视为失败。在块840,图3的错误恢复模式选择器350可以确定图7的数据710中的错误数量(即,违反线性方程的数量)。在块845,图3的错误恢复模式选择器350可以将错误数量(或违反线性方程的数量)映射到图7的数据710的数据质量度量。
[0075]
在块850(图8c),图1的存储设备120可以返回图7的数据710的数据质量度量,如图7的响应725所示。图8的块850可以省略,如虚线855所示。在块860,图3的错误恢复模式选择器350可以选择图3的ecc模块355-1或355-2中的一个(或者,如果预期没有ecc模块校正数据或者如果数据是完美的,则可以选择没有ecc模块)应用于图7的数据710。在块865,图1的存储设备120可以应用所选择的图3的ecc模块355-1或355-2(如果在块860没有选择ecc模块,则图1的存储设备120在块865可以不做任何事情)。最后,在块870,图1的存储设备120可以将图7的校正的数据750返回到图1的主机105。如果由于数据完美而未执行纠错,则图7的数据750可以被返回而无需校正;如果由于在块860中预期纠错不会成功而未执行纠错,则如果图1的主机105愿意容忍数据中的错误的级别,或者如果图1的主机105不愿意容忍数据中的错误的级别,则可以返回(未校正)数据750。
[0076]
图9示出了根据本发明构思的实施例的用于图1的存储设备120接收图7的读取请求720或730的图7的目标数据质量度量735或图7的目标延迟740的示例过程的流程图。在图9中,在块905,图1的存储设备120可以从图1的主机105接收图7的目标数据质量度量735。
[0077]
可替选地,在块910,图1的存储设备120可以确定与图7的读取请求720或730相关联的命名空间。然后,在块915,使用图5的rrl表345,图1的存储设备120可以将命名空间映射到图5的目标数据质量度量530或550。
[0078]
可替选地,在块920,图1的存储设备120可以从图1的主机105接收图7的目标延迟740。
[0079]
可替选地,在块925,图1的存储设备120可以确定与图7的读取请求720或730相关联的命名空间。然后,在块930,使用图5的rrl表345,图1的存储设备120可以将命名空间映射到图5的目标延迟525或545。
[0080]
图10示出了根据本发明构思的实施例的图1的存储设备120确定违反校验方程的数量的示例过程。在图10中,在块1005,图3的错误恢复模式选择器350可以确定图7的数据710的码字。在块1010,图3的错误恢复模式选择器350可以识别奇偶校验矩阵h。在块1015,图3的错误恢复模式选择器350可以基于码字和奇偶校验矩阵h来确定线性方程。最后,在块1020,图3的错误恢复模式选择器350可以计算违反线性方程的数量。
[0081]
在图8a-图10中,示出了本发明概念的一些实施例。但是,本领域技术人员将认识到,通过改变块的顺序、省略块或包括附图中未示出的链接,本发明概念的其他实施例也是可能的。流程图的所有这些变化都被认为是本发明概念的实施例,无论是否明确描述。
[0082]
与现有技术相比,本发明构思的实施例提供了技术优势。存储设备可以确定从存储设备读取的数据的数据质量度量。该数据质量度量可以根据基于奇偶校验矩阵h和数据码字的多个违反的线性方程来确定。然后,可以使用该数据质量度量来选择要应用于数据的纠错码模块。通过选择一个纠错码模块,与依次尝试多个纠错码模块相比,延迟可能会减少。类似地,通过选择一个纠错码模块,与依次尝试多个纠错码模块相比,可以降低功耗。此外,可以将数据质量度量与主机确定的数据质量度量进行比较,这可能反映主机可能容忍数据中的某些错误:如果数据具有足够高的数据质量,则可以将数据返回到主机,而无需校正(即有错误)。
[0083]
以下讨论旨在提供可在实现本发明构思的某些方面的一个或多个适当机器的简要的一般性描述。一个或多个机器可以至少部分地通过来自诸如键盘、鼠标等的传统输入设备的输入以及通过从另一个机器接收的指令、与虚拟现实(vr)环境的交互、生物特征反馈或其他输入信号来控制。如本文所述,术语“机器”旨在广泛涵盖单机、虚拟机或通信耦合机系统、虚拟机或一起运行的设备。示例性机器包括计算设备,诸如个人计算机、工作站、服务器、便携式计算机、手持设备、电话、平板电脑等,以及交通工具,诸如私人或公共交通工具,例如汽车、火车、出租车等。
[0084]
机器可以包括嵌入式控制器,诸如可编程或不可编程逻辑器件或阵列、专用集成电路(asic)、嵌入式计算机、智能卡等。一个或多个机器可以利用到一个或多个远程机器的一个或多个连接,诸如通过网络接口、调制解调器或其他通信耦合。机器可以通过物理和/或逻辑网络(诸如内联网、互联网、局域网、广域网等)互连。本领域技术人员将理解,网络通信可以利用各种有线和/或无线短程或远程载波和协议,包括射频(rf)、卫星、微波、电气和电子工程师学会(ieee)802.11、光纤、红外、电缆、激光等。
[0085]
本发明概念的实施例可以通过参考或结合相关数据来描述,包括功能、过程、数据结构、应用程序等,当机器接入这些数据时,导致机器执行任务或定义抽象数据类型或低级硬件上下文。可以存储在例如易失性和/或非易失性存储器(例如ram、rom等)中,或者存储在其他存储设备及其相关存储介质中,包括硬盘驱动器、软盘、光存储器、磁带、闪存、记忆棒、数字视频盘、生物存储器等。相关数据可以以分组、串行数据、并行数据、传播信号等形式通过传输环境传送,包括物理和/或逻辑网络,可以压缩或加密格式使用。相关数据可以在分布式环境中使用,并存储在本地和/或远程以供机器接入。
[0086]
本发明概念的实施例可以包括有形的非暂时的机器可读介质,包括可以由一个或多个处理器可执行的指令,该指令包括用于执行本文所述的本发明概念的元件的指令。
[0087]
上述方法的各种操作可以通过能够执行这些操作的任何合适的装置来执行,诸如各种硬件和/或软件组件、电路和/或模块。软件可以包括用于实现逻辑功能的可执行指令的有序列表,并且可以以任何“处理器可读介质”体现,供指令执行系统、装置或设备(诸如单核或多核处理器或包含处理器的系统)使用或与之结合使用。
[0088]
结合本文公开的实施例描述的方法或算法的块或步骤以及功能可以直接体现在硬件中、体现在由处理器执行的软件模块中或体现在两者的组合中。如果以软件实现,则功
能可以作为一个或多个指令或代码存储在有形的非暂时性的计算机可读介质上并且在其上传输。软件模块可以驻留在随机存取存储器(ram)、闪存、只读存储器(rom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)、寄存器、硬盘、可移动磁盘、cd rom或本领域已知的任何其他形式的存储介质中。
[0089]
在参考所示实施例描述和示出本发明构思的原理之后,将认识到所示实施例可以在不偏离这些原理的情况下在布置和细节上进行修改,并且可以以任何期望的方式进行组合。另外,尽管上述讨论聚焦在特定实施例中,考虑了其他配置。特别地,即使诸如“根据本发明构思的实施例”等的表述在本文中使用,这些短语通常指代实施例的可能性,而不是旨在将本发明概念限制于特定实施例配置。在本文中,这些术语可以是指可组合到其他实施例中的相同或不同的实施例。
[0090]
上述说明性实施例不应被解释为限制其发明构思。尽管已经描述了一些实施例,但本领域技术人员将容易理解,在不实质上背离本发明的新颖教导和优点的情况下,可以对这些实施例进行许多修改。因此,所有这些修改都旨在包括在权利要求书中定义的本发明概念的范围内。
[0091]
本发明构思的实施例可以扩展到以下声明,但不是限制性的。
[0092]
声明1.本发明构思的实施例包括存储设备,包括:
[0093]
存储器,用于数据;
[0094]
控制器,用于管理将数据写入存储器和从存储器读取数据;
[0095]
数据质量度量表,用于将第一数量的错误映射到第一数据质量度量,并将第二数量的错误映射到第二数据质量度量;以及
[0096]
发送器,向主机返回数据质量度量表。
[0097]
声明2.本发明构思的实施例包括根据声明1的存储设备,其中,存储设备包括固态驱动器(ssd)。
[0098]
声明3.本发明构思的实施例包括根据声明1的存储设备,其中:
[0099]
控制器被配置为从主机接收读取请求以从存储器读取第一数据;以及
[0100]
存储设备还包括数据质量度量估计器,用于估计第一数据中的第一数量的错误。
[0101]
声明4.本发明构思的实施例包括根据声明3的存储设备,其中,发送器被配置为将第一数据中的第一数量的错误返回到主机。
[0102]
声明5.本发明构思的实施例包括根据声明3的存储设备,其中,发送器可操作以至少部分地基于第一数量的错误和数据质量度量表将第一数据质量度量返回到主机。
[0103]
声明6.本发明构思的实施例包括根据声明3的存储设备,还包括:
[0104]
第一纠错码(ecc)模块;
[0105]
第二ecc模块;以及
[0106]
错误恢复模式选择器,用于至少部分地基于第一数量的错误和数据质量度量表来选择第一ecc模块。
[0107]
声明7.本发明构思的实施例包括根据声明6的存储设备,其中:
[0108]
控制器可操作来从主机接收用于读取请求的目标数据质量度量;以及
[0109]
错误恢复模式选择器被配置为至少部分地基于第一错误的数量、数据质量度量表和目标数据质量度量来选择第一ecc模块。
[0110]
声明8.本发明构思的实施例包括根据声明7的存储设备,其中,错误恢复模式选择器被配置为至少部分地基于目标数据质量度量超过第一数据质量度量而不选择第一ecc模块或第二ecc模块。
[0111]
声明9.本发明构思的实施例包括根据声明6的存储设备,其中:
[0112]
存储设备还包括读取恢复级别(rrl)表,将命名空间映射到rrl和目标数据质量度量;以及
[0113]
控制器被配置为从rrl表访问目标数据质量度量。
[0114]
声明10.本发明构思的实施例包括根据声明6的存储设备,其中:
[0115]
数据质量度量表被配置为将第一数量的错误映射到第一读取延迟,并将第二数量的错误映射到第二读取延迟;
[0116]
控制器可操作以从主机接收用于读取请求的目标读取延迟;以及
[0117]
错误恢复模式选择器被配置为至少部分地基于第一数量的错误、数据质量度量表和目标读取延迟来选择第一ecc模块。
[0118]
声明11.本发明构思的实施例包括根据声明10的存储设备,其中,错误恢复模式选择器被配置为至少部分地基于第一读取延迟超过目标读取延迟而不选择第一ecc模块或第二ecc模块。
[0119]
声明12.本发明构思的实施例包括根据声明6的存储设备,其中:
[0120]
存储设备还包括rrl表,将命名空间映射到rrl和目标读取延迟;以及
[0121]
控制器被配置为从rrl表访问目标读取延迟。
[0122]
声明13.本发明构思的实施例包括根据声明3的存储设备,其中,数据质量度量估计器包括用于被违反的线性方程的数量的计数器,线性方程的数量使用奇偶校验矩阵和用于第一数据的码字来确定。
[0123]
声明14.本发明构思的实施例包括根据声明13的存储设备,其中,数据质量度量估计器被配置为根据被违反的线性方程的数量来确定第一数据的误码率(ber)。
[0124]
声明15.本发明构思的实施例包括根据声明1的存储设备,其中,控制器被配置为至少部分基于来自主机的写入请求将第一数据写入存储器。
[0125]
声明16.本发明构思的实施例包括根据声明15的存储设备,其中,控制器进一步配置为基于第一数据向存储器写入码字。
[0126]
声明17.本发明构思的实施例包括根据声明1的存储设备,还包括rrl表,将命名空间映射到rrl和目标数据质量度量。
[0127]
声明18.本发明构思的实施例包括根据声明17的存储设备,其中,rrl表将命名空间映射到目标读取延迟。
[0128]
声明19.本发明构思的实施例包括一种方法,包括:
[0129]
在存储设备从主机接收对数据的读取请求;
[0130]
由存储设备确定用于读取请求的目标数据质量度量;
[0131]
从存储设备读取数据;
[0132]
由存储设备确定数据中的错误数量;
[0133]
至少部分地基于数据中的错误数量,由存储设备从第一纠错码(ecc)模块和第二ecc模块中选择第一ecc模块;
[0134]
将第一ecc模块应用于数据,由存储设备产生校正的数据;以及
[0135]
将校正的数据从存储设备返回主机。
[0136]
声明20.本发明构思的实施例包括根据声明19的方法,其中,存储设备包括固态驱动器(ssd)。
[0137]
声明21.本发明构思的实施例包括根据声明19的方法,其中:
[0138]
所述方法还包括由存储设备至少部分地基于数据中的错误数量来确定数据质量度量;以及
[0139]
从第一ecc模块和第二ecc模块中选择第一ecc模块包括至少部分基于数据质量度量从第一ecc模块和第二ecc模块中选择第一ecc模块。
[0140]
声明22.本发明构思的实施例包括根据声明21的方法,其中,由存储设备至少部分地基于数据中的错误数量来确定数据质量度量包括由存储设备使用数据质量度量表至少部分地基于数据中的错误数量来确定数据质量度量。
[0141]
声明23.本发明构思的实施例包括根据声明21的方法,其中:
[0142]
由存储设备确定用于读取请求的目标数据质量度量包括在存储设备从主机接收目标数据质量度量;以及
[0143]
至少部分基于数据质量度量从第一ecc模块和第二ecc模块中选择第一ecc模块包括至少部分基于数据质量度量超过目标数据质量度量从第一ecc模块和第二ecc模块中选择第一ecc模块。
[0144]
声明24.本发明构思的实施例包括根据声明21的方法,其中:
[0145]
在存储设备从主机接收数据的读取请求包括由存储设备从读取恢复级别(rrl)表访问目标数据质量度量;以及
[0146]
至少部分基于数据质量度量从第一ecc模块和第二ecc模块中选择第一ecc模块包括至少部分基于数据质量度量超过目标数据质量度量从第一ecc模块和第二ecc模块中选择第一ecc模块。
[0147]
声明25.本发明构思的实施例包括根据声明24的方法,其中,由存储设备从rrl表访问目标数据质量度量包括:
[0148]
确定读取请求的命名空间;
[0149]
使用rrl表将命名空间映射到目标数据质量度量。
[0150]
声明26.本发明构思的实施例包括根据声明19的方法,其中:
[0151]
所述方法还包括由存储设备至少部分地基于数据中的错误数量来确定读取延迟;以及
[0152]
从第一ecc模块和第二ecc模块中选择第一ecc模块包括至少部分基于读取延迟从第一ecc模块和第二ecc模块中选择第一ecc模块。
[0153]
声明27.本发明构思的实施例包括根据声明26的方法,其中,由存储设备至少部分基于数据中的错误数量来确定读取延迟包括:由存储设备使用数据质量度量表至少部分基于数据中的错误数量来确定读取延迟。
[0154]
声明28.本发明构思的实施例包括根据声明26的方法,其中:
[0155]
由存储设备确定读取请求的目标数据质量度量包括在存储设备从主机接收目标读取延迟;以及
[0156]
至少部分基于读取延迟从第一ecc模块和第二ecc模块中选择第一ecc模块包括至少部分基于目标读取延迟超过读取延迟从第一ecc模块和第二ecc模块中选择第一ecc模块。
[0157]
声明29.本发明构思的实施例包括根据声明26的方法,其中:
[0158]
由存储设备确定读取请求的目标数据质量度量包括由存储设备从rrl表访问目标读取延迟;以及
[0159]
至少部分基于读取延迟从第一ecc模块和第二ecc模块中选择第一ecc模块包括至少部分基于目标读取延迟超过读取延迟从第一ecc模块和第二ecc模块中选择第一ecc模块。
[0160]
声明30.本发明构思的实施例包括根据声明29的方法,其中,由存储设备从rrl表访问目标读取延迟包括:
[0161]
确定读取请求的命名空间;
[0162]
使用rrl表将命名空间映射到目标读取延迟。
[0163]
声明31.本发明构思的实施例包括根据声明19的方法,还包括:
[0164]
由存储设备至少部分地基于数据中的错误数量来确定数据质量度量;以及
[0165]
将数据质量度量返回到主机。
[0166]
声明32.本发明构思的实施例包括根据声明19的方法,其中,由存储设备确定数据中的错误数量包括:
[0167]
确定第一数量的线性方程;以及
[0168]
确定被违反的第二数量的线性方程。
[0169]
声明33.本发明构思的实施例包括根据声明32的方法,其中,确定第一数量的线性方程包括:
[0170]
确定数据的码字;以及
[0171]
至少部分地基于奇偶校验矩阵和码字来确定第一数量的线性方程。
[0172]
声明34.本发明构思的实施例包括根据声明33的方法,还包括:
[0173]
在存储设备从主机接收数据的写入请求;
[0174]
将数据写入存储设备;
[0175]
至少部分基于数据生成码字;以及
[0176]
将码字写入存储设备。
[0177]
声明35.本发明构思的实施例包括一种产品,产品包括非暂时性存储介质,非暂时性存储介质上存储有指令,当由机器执行时,使得:
[0178]
在存储设备从主机接收对数据的读取请求;
[0179]
由存储设备确定用于读取请求的目标数据质量度量;
[0180]
从存储设备读取数据;
[0181]
由存储设备确定数据中的错误数量;
[0182]
至少部分地基于数据中的错误数量,由存储设备从第一纠错码(ecc)模块和第二ecc模块中选择第一ecc模块;
[0183]
将第一ecc模块应用于数据,由存储设备产生校正的数据;以及
[0184]
将校正的数据从存储设备返回主机。
[0185]
声明36.本发明构思的实施例包括根据声明35的产品,其中,存储设备包括固态驱动器(ssd)。
[0186]
声明37.本发明构思的实施例包括根据声明35的产品,其中:
[0187]
非暂时性存储介质上存储进一步的指令,当由机器执行时,使得:由存储设备至少部分地基于数据中的错误数量来确定数据质量度量;以及
[0188]
从第一ecc模块和第二ecc模块中选择第一ecc模块包括至少部分基于数据质量度量从第一ecc模块和第二ecc模块中选择第一ecc模块。
[0189]
声明38.本发明构思的实施例包括根据声明37的产品,其中,由存储设备至少部分地基于数据中的错误数量来确定数据质量度量包括由存储设备使用数据质量度量表至少部分基于数据中的错误数量来确定数据质量度量。
[0190]
声明39.本发明构思的实施例包括根据声明37的产品,其中:
[0191]
由存储设备确定用于读取请求的目标数据质量度量包括在存储设备从主机接收目标数据质量度量;以及
[0192]
至少部分基于数据质量度量从第一ecc模块和第二ecc模块中选择第一ecc模块包括至少部分基于数据质量度量超过目标数据质量度量从第一ecc模块和第二ecc模块中选择第一ecc模块。
[0193]
声明40.本发明构思的实施例包括根据声明37的产品,其中:
[0194]
在存储设备从主机接收数据的读取请求包括由存储设备从读取恢复级别(rrl)表访问目标数据质量度量;以及
[0195]
至少部分基于数据质量度量从第一ecc模块和第二ecc模块中选择第一ecc模块包括至少部分基于数据质量度量超过目标数据质量度量从第一ecc模块和第二ecc模块中选择第一ecc模块。
[0196]
声明41.本发明构思的实施例包括根据声明40的产品,其中,存储设备从rrl表访问目标数据质量度量包括:
[0197]
确定读取请求的命名空间;
[0198]
使用rrl表将命名空间映射到目标数据质量度量。
[0199]
声明42.本发明构思的实施例包括根据声明35的产品,其中:
[0200]
非暂时性存储介质上存储进一步的指令,当由机器执行时,使得由存储设备至少部分地基于数据中的错误数量来确定读取延迟;以及
[0201]
从第一ecc模块和第二ecc模块中选择第一ecc模块包括至少部分基于读取延迟从第一ecc模块和第二ecc模块中选择第一ecc模块。
[0202]
声明43.本发明构思的实施例包括根据声明42的产品,其中,由存储设备至少部分地基于数据中的错误数量来确定读取延迟包括由存储设备使用数据质量度量表至少部分地基于数据中的错误数量来确定读取延迟。
[0203]
声明44.本发明构思的实施例包括根据声明42的产品,其中:
[0204]
由存储设备确定用于读取请求的目标数据质量度量包括在存储设备从主机接收目标读取延迟;以及
[0205]
至少部分基于读取延迟从第一ecc模块和第二ecc模块中选择第一ecc模块包括至少部分基于目标读取延迟超过读取延迟从第一ecc模块和第二ecc模块中选择第一ecc模
块。
[0206]
声明45.本发明构思的实施例包括根据声明42的产品,其中:
[0207]
由存储设备确定用于读取请求的目标数据质量度量包括由存储设备从rrl表访问目标读取延迟;以及
[0208]
至少部分基于读取延迟从第一ecc模块和第二ecc模块中选择第一ecc模块包括至少部分基于目标读取延迟超过读取延迟从第一ecc模块和第二ecc模块中选择第一ecc模块。
[0209]
声明46.本发明构思的实施例包括根据声明45的产品,其中,存储设备从rrl表访问目标读取延迟包括:
[0210]
确定读取请求的命名空间;
[0211]
使用rrl表将命名空间映射到目标读取延迟。
[0212]
声明47.本发明构思的实施例包括根据声明35的产品,非暂时性存储介质上存储进一步的指令,当由机器执行时,使得:
[0213]
由存储设备至少部分地基于数据中的错误数量来确定数据质量度量;以及
[0214]
将数据质量度量返回到主机。
[0215]
声明48.本发明构思的实施例包括根据声明35的产品,其中,由存储设备确定数据中的错误数量包括:
[0216]
确定第一数量的线性方程;以及
[0217]
确定被违反的第二数量的线性方程。
[0218]
声明49.本发明构思的实施例包括根据声明48的产品,其中,确定第一数量的线性方程包括:
[0219]
确定数据的码字;以及
[0220]
至少部分地基于奇偶校验矩阵和码字来确定第一数量的线性方程。
[0221]
声明50.本发明构思的实施例包括根据声明49的产品,非暂时性存储介质上存储进一步的指令,当由机器执行时,使得:
[0222]
在存储设备从主机接收数据的写入请求;
[0223]
将数据写入存储设备;
[0224]
至少部分基于数据生成码字;以及
[0225]
将码字写入存储设备。
[0226]
因此,鉴于本文描述的实施例的多种排列,该详细描述和附带材料仅旨在说明,不应视为限制本发明构思的范围。因此,被称为发明构思的是可能在以下权利要求及其等同物的范围和精神内的所有修改。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1