首页> 中国专利> 用于存储器子系统中的数据修改期间的错误检测的方法及装置

用于存储器子系统中的数据修改期间的错误检测的方法及装置

摘要

本发明涉及一种用于存储器子系统中的数据修改期间的错误检测的方法及装置。接收存储第一数据的请求。接收所述第一数据及第一错误校验数据。所述第一错误校验数据可为基于所述第一数据的循环冗余校验CRC操作。通过移除所述第一数据的一部分来产生第二数据。通过使用所述第一错误校验数据及所述第一数据的所述经移除部分来产生所述第二数据的第二错误校验数据。

著录项

  • 公开/公告号CN112214346A

    专利类型发明专利

  • 公开/公告日2021-01-12

    原文格式PDF

  • 申请/专利权人 美光科技公司;

    申请/专利号CN202010661878.5

  • 发明设计人 陈宁;李娟娥;

    申请日2020-07-10

  • 分类号G06F11/10(20060101);G11C29/42(20060101);

  • 代理机构11287 北京律盟知识产权代理有限责任公司;

  • 代理人王龙

  • 地址 美国爱达荷州

  • 入库时间 2023-06-19 09:32:16

说明书

技术领域

本发明的实施例大体上涉及存储器子系统,且更明确来说,涉及产生用于存储器子系统中的数据修改期间的错误检测的错误校验数据。

背景技术

存储器子系统可为存储装置、存储器模块及存储装置与存储器模块的混合。存储器子系统可包含存储数据的一或多个存储器组件。存储器组件可为(例如)非易失性存储器组件及易失性存储器组件。一般来说,主机系统可利用存储器子系统在存储器组件处存储数据及从所述存储器组件检索数据。

发明内容

在一方面中,本发明涉及一种系统,其包括:存储器组件;处理装置,其可操作地与所述存储器组件耦合,以:接收存储第一数据的请求;接收所述第一数据及第一错误校验数据,所述第一错误校验数据是基于所述第一数据的循环冗余校验(CRC)操作;通过移除所述第一数据的一部分来产生第二数据;及通过使用所述第一错误校验数据及所述第一数据的所述经移除部分来产生所述第二数据的第二错误校验数据。

在另一方面中,本发明涉及一种方法,其包括:接收存储第一数据的请求;接收所述第一数据及第一错误校验数据,所述第一错误校验数据是基于所述第一数据的循环冗余校验(CRC)操作;通过移除所述第一数据的一部分来产生第二数据;及由处理装置通过使用所述第一错误校验数据及所述第一数据的所述经移除部分来产生所述第二数据的第二错误校验数据。

在进一步方面中,本发明涉及一种方法,其包括:接收存储第一数据的请求;接收所述第一数据及第一错误校验数据,所述第一错误校验数据是基于所述第一数据的循环冗余校验(CRC)操作;通过组合所述第一数据与数据模式来产生第二数据;及由处理装置通过使用所述第一错误校验数据与呈基于所述数据模式的大小的另一数据模式的组合来产生所述第二数据的第二错误校验数据。

附图说明

从下文给出的详细描述及从本发明的各种实施例的附图将更加完全地理解本发明。然而,图式不应被理解为将本发明限于特定实施例,而仅是为了解释及理解。

图1说明根据本发明的一些实施例的包含存储器子系统的实例计算环境。

图2A是根据本发明的一些实施例的检测在数据截断期间是否已引入错误的实例方法的流程图。

图2B是根据本发明的一些实施例的检测在数据扩展期间是否已引入错误的实例方法的流程图。

图3A是根据本发明的一些实施例的检测在将数据模式附加到数据时是否已引入错误的实例方法的流程图。

图3B是根据本发明的一些实施例的检测在从数据移除数据模式时是否已引入错误的实例方法的流程图。

图4是根据本发明的一些实施例的产生错误校验数据的实例方法的流程图。

图5是根据本发明的一些实施例的产生错误校验数据的另一实例方法的流程图。

图6是本发明的实施例可操作于其中的实例计算机系统的框图。

具体实施方式

本发明的方面涉及产生用于存储器子系统中的数据修改期间的错误检测的错误校验数据。存储器子系统可为存储装置、存储器模块或存储装置与存储器模块的混合。下文结合图1描述存储装置及存储器模块的实例。一般来说,主机系统可利用包含一或多个存储器组件(在下文也被称为“存储器装置”)的存储器子系统。主机系统可提供将存储在存储器子系统处的数据且可请求将从存储器子系统检索的数据。

存储器子系统可从主机系统接收附加有循环冗余校验(CRC)代码的消息或数据以将所述数据及所述CRC代码存储到一或多个存储器组件。稍后,存储器子系统可以各种方式修改原始数据,例如截断原始数据及/或将元数据附加到原始数据。随后,存储器子系统可将经修改数据与原始CRC代码(例如,从主机系统接收的CRC代码)一起存储。

稍后,主机系统可请求存储器子系统存取数据及CRC代码。作为响应,存储器子系统可检索经修改数据且从经修改数据获得原始数据。接着,存储器子系统可将经请求数据与原始CRC代码一起提供到主机系统。因此,主机系统可使用原始CRC代码及经检索数据来校验经检索数据是否损坏或是否含有错误。举例来说,主机系统可从经检索数据产生新的CRC代码,且可比较新的CRC代码与原始CRC代码。如果两个CRC代码匹配,则主机系统可确定经检索数据有效(例如,相同于被请求存储的原始数据)。另一方面,如果两个CRC代码不匹配,则主机系统可确定经检索数据被损坏。在一些情况中,存储器子系统(而非主机系统)可使用新的CRC代码及原始CRC代码验证原始数据的完整性。

常规地,存储器子系统将原始CRC代码与通过截断及/或将元数据附加到数据而修改的数据一起存储,以便验证经检索数据(即,从经修改数据改变回的数据)。因为在请求检索数据时,存储器子系统应存储主机系统的原始CRC代码,所以存储器子系统无法校验在数据被修改时是否已引入错误及/或引入错误的位置。举例来说,在修改(例如,加密、将元数据附加到来自主机系统的原始数据)或反转修改(或取消修改)(例如,解密、截断)期间可能引入错误。为了校验此错误,存储器子系统需要对应于经修改数据的CRC代码,使得存储器子系统可比较对应CRC代码与基于经修改数据产生的新的CRC代码。如果两个CRC代码相同,则存储器子系统可确定在修改期间未引入错误。然而,如果存储器子系统用经修改数据的CRC代码替代原始CRC代码,则经检索数据可能无法验证。因而,常规存储器子系统无法识别在存储及检索主机系统的数据时是否引入错误及/或引入错误的位置。

本发明的方面通过在存储及/或检索数据期间在对从主机系统接收的数据执行的每一修改时产生错误校验数据(例如,CRC代码)来解决上述及其它缺点。根据本发明的方面,为了通过移除数据的一部分(例如,移除未使用的元数据)来存储从主机系统接收的数据,存储器子系统使用从主机系统接收的数据的错误校验数据及从主机系统接收的数据的经移除部分产生错误校验数据。为了检索数据,存储器子系统通过用从主机系统接收的数据的经移除部分更新对应于经修改数据的错误校验数据来产生错误校验数据。根据本发明的其它方面,为了通过附加描述与存储数据相关联的系统信息的元数据的数据模式(例如,数据地址、时间戳记)来存储从主机系统接收的数据,存储器子系统使用从主机系统接收的数据的错误校验数据与呈基于经附加数据模式的大小的另一数据模式的组合来产生错误校验数据。为了检索数据,存储器子系统通过用用于产生对应于经修改数据的错误校验数据的数据模式更新对应于经修改数据的错误校验数据来产生错误校验数据。

本发明的优点包含(但不限于)通过检测在数据的存储及检索期间何时及/或是否引入错误且在检测时执行校正动作(例如,重复修改及/或反转修改)来保证存储及检索期间数据的完整性。因此,可改进存储器子系统的可靠性。

图1说明根据本发明的一些实施例的包含存储器子系统110的实例计算环境100。存储器子系统110可包含媒体,例如一或多个易失性存储器装置(例如,存储器装置140)、一或多个非易失性存储器装置(例如,存储器装置130)或此类事物的组合。

存储器子系统110可为存储装置、存储器模块或存储装置与存储器模块的混合。存储装置的实例包含固态驱动(SSD)、快闪驱动、通用串行总线(USB)快闪驱动、嵌入式多媒体控制器(eMMC)驱动、通用快闪存储(UFS)驱动及硬盘驱动(HDD)。存储器模块的实例包含双列直插式存储器模块(DIMM)、小型DIMM(SO-DIMM)及非易失性双列直插式存储器模块(NVDIMM)。

计算环境100可包含耦合到一或多个存储器子系统110的主机系统120。在一些实施例中,主机系统120耦合到不同类型的存储器子系统110。图1说明耦合到一个存储器子系统110的主机系统120的一个实例。主机系统120使用存储器子系统110(例如)来将数据写入到存储器子系统110及从存储器子系统110读取数据。如本文中使用,“耦合到”通常是指组件之间的连接,其可为间接通信连接或直接通信连接(例如,无中介组件),无论是有线还是无线的,包含例如电、光、磁等的连接。

主机系统120可为计算装置,例如桌面计算机、膝上型计算机、网络服务器、移动装置或包含存储器及处理装置的此计算装置。主机系统120可经由物理主机接口耦合到存储器子系统110。物理主机接口的实例包含(但不限于)串行高级技术附件(SATA)接口、外围组件互连高速(PCIe)接口、通用串行总线(USB)接口、光纤通道、串行附接SCSI(SAS)等。物理主机接口可用于在主机系统120与存储器子系统110之间传输数据。当存储器子系统110通过PCIe接口与主机系统120耦合时,主机系统120可进一步利用NVMExpress(NVMe)接口来存取存储器组件(例如,存储器装置130)。物理主机接口可提供用于在存储器子系统110与主机系统120之间传递控制、地址、数据及其它信号的接口。

存储器装置可包含不同类型的非易失性存储器装置及/或易失性存储器装置的任何组合。易失性存储器装置(例如,存储器装置140)可为(但不限于)随机存取存储器(RAM),例如动态随机存取存储器(DRAM)及同步动态随机存取存储器(SDRAM)。

非易失性存储器装置(例如,存储器装置130)的实例包含负与(NAND)型快闪存储器。存储器装置130中的每一者可包含一或多个存储器单元阵列,例如单级单元(SLC)或多级单元(MLC)(例如,三级单元(TLC)或四级单元(QLC))。在一些实施例中,特定存储器组件可包含存储器单元的SLC部分及MLC部分、TLC部分或QLC部分。存储器单元中的每一者可存储由主机系统120使用的一或多个数据位。此外,存储器装置130的存储器单元可经分组为存储器页面或存储器块,其可指用于存储数据的存储器组件的单位。

尽管描述了非易失性存储器组件(例如NAND型快闪存储器),但存储器装置130可基于任何其它类型的非易失性存储器,例如只读存储器(ROM)、相变存储器(PCM)、磁随机存取存储器(MRAM)、负或(NOR)快闪存储器、电可擦除可编程只读存储器(EEPROM)及交叉点非易失性存储器单元阵列。交叉点非易失性存储器阵列可结合堆叠式交叉栅格式数据存取阵列基于体电阻变化执行位存储。另外,与许多基于快闪的存储器形成对照,交叉点非易失性存储器可执行原地写入操作,其中非易失性存储器单元被编程而无需事先擦除非易失性存储器单元。

存储器子系统控制器115可与存储器装置130通信以执行操作,例如在存储器装置130处读取数据、写入数据或擦除数据及其它此类操作。存储器子系统控制器115可包含硬件,例如一或多个集成电路及/或离散组件、缓冲器存储器或其组合。存储器子系统控制器115可为微控制器、专用逻辑电路系统(例如,场可编程门阵列(FPGA)、专用集成电路(ASIC)等)或其它合适的处理器。

存储器子系统控制器115可包含经配置以执行存储于本地存储器119中的指令的处理器(处理装置)117。在说明的实例中,存储器子系统控制器115的本地存储器119包含经配置以存储用于执行控制存储器子系统110的操作的各种过程、操作、逻辑流程及例程的指令的嵌入式存储器,包含处置存储器子系统110与主机系统120之间的通信。

在一些实施例中,本地存储器119可包含存储存储器指针、经提取数据等的存储器寄存器。本地存储器119还可包含用于存储微代码的只读存储器(ROM)。虽然已将图1中的实例存储器子系统110说明为包含存储器子系统控制器115,但在本发明的另一实施例中,存储器子系统110可不包含存储器子系统控制器115,且可代替地依赖于外部控制(例如,由外部主机提供、或由与存储器子系统分离的处理器或控制器提供)。

一般来说,存储器子系统控制器115可从主机系统120接收命令或操作且可将所述命令或操作转换成指令或适当命令以实现对存储器装置130的所期望存取。存储器子系统控制器115可负责其它操作,例如磨损均衡操作、垃圾收集操作、错误检测及错误校正代码(ECC)操作、加密操作、高速缓存操作及与存储器装置130相关联的逻辑块地址与物理块地址之间的地址转译。存储器子系统控制器115可进一步包含经由物理主机接口与主机系统120通信的主机接口电路系统。所述主机接口电路系统可将从主机系统接收的命令转换成命令指令以存取存储器装置130,以及将与存储器装置130相关联的响应转换成用于主机系统120的信息。

存储器子系统110还可包含未说明的额外电路系统或组件。在一些实施例中,存储器子系统110可包含高速缓存或缓冲器(例如DRAM)及地址电路系统(例如行解码器及列解码器),其可从存储器子系统控制器115接收地址且解码所述地址以存取存储器装置130。

在一些实施例中,存储器装置130包含本地媒体控制器135,其结合存储器子系统控制器115操作以对存储器装置130的一或多个存储器单元执行操作。

存储器子系统110包含错误检测组件113,其可用于产生错误校验数据或代码。在一些实施例中,存储器子系统控制器115包含错误检测组件113的至少一部分。举例来说,存储器子系统控制器115可包含经配置以执行存储于本地存储器119中的指令用于执行本文中描述的操作的处理器117(处理装置)。在一些实施例中,错误检测组件113是主机系统110、应用或操作系统的部分。

错误检测组件113可接收存储数据的请求。错误检测组件113可接收数据及对应错误校验数据。错误检测组件113可通过移除数据的一部分来产生另一数据。错误检测组件113也可通过使用接收到的错误校验数据及接收到的数据的经移除部分产生对应于经修改数据的错误校验数据。下文描述关于错误检测组件113的操作的进一步细节。

图2A是根据本发明的一些实施例的检测在数据截断期间是否已引入错误的实例方法200的流程图。方法200可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微代码、装置的硬件、集成电路等)、软件(例如,运行或执行于处理装置上的指令)或其组合。在一些实施例中,方法200由图1的错误检测组件113执行。尽管以特定顺序或次序展示,但除非另外指定,否则过程的次序可修改。因此,说明的实施例应仅被理解为实例,且说明的过程可以不同次序执行,且一些过程可并行执行。另外,在各种实施例中,可省略一或多个过程。因此,并非在每个实施例中都需要所有过程。其它工艺流程是可能的。

在操作210,处理装置从主机系统120接收消息或数据(例如,M)。在一些实施例中,数据可包含N个二进制数据位,例如M

此外,在操作210,处理装置截断数据M以产生经截断数据M’。在一些实施例中,所得经截断数据M’可具有含N-1-K数目个位的二进制数字。即,处理装置可从数据M移除前K个数据位M

在截断数据M之后,在操作215,处理装置通过对经移除部分M

在操作220,处理装置通过附加数据模式来修改增量错误校验数据CRC*。举例来说,处理装置可将一系列相同或任何二进制数字(例如,值‘0’或‘1’)作为数据模式附加到增量错误校验数据CRC*。数据模式可具有数据大小,所述数据大小并有原始数据M的错误校验数据CRC或任何其它CRC的数据大小R(因为所有的错误校验数据都具有相同的数据大小R)及经移除部分M

在操作225,处理装置通过对经修改增量错误校验数据CRC*执行CRC操作来产生经截断数据M’的错误校验数据CRC’。因此,通过递增地更新原始数据M的错误校验数据CRC,处理装置可产生经修改数据M’的错误校验数据CRC’。随后,处理装置可使用CRC’来检测是否存在在截断期间引入的任何错误,如下文将关于操作230及240描述。此错误可能是由噪声或在存储数据及/或检索所存储数据时的其它此类减损(例如由存储器子系统110的封装材料发射的α粒子,所述α粒子可导致存储于存储器单元中的数据值或数据位从‘0’值切换到‘1’值(或反之亦然))引起的。

在操作230,处理装置对经截断数据M’应用CRC操作。接着,在操作240,处理装置基于两个错误校验数据CRC’及CRC”检测在操作210的截断期间是否已引入错误。如果两个错误校验数据具有相同值,则处理装置可确定经截断数据M’有效。否则,如果两个错误校验数据不匹配,则处理装置可确定经截断数据M’由于在操作210的截断期间引入的错误而无效。因而,通过使用增量错误校验数据(例如,CRC*)更新原始数据M的错误校验数据(例如,CRC),处理装置可产生对应于经截断数据M’的错误校验数据(例如,CRC’)以用于检测在操作210的修改期间引入的任何错误。

响应于确定经截断数据M’有效,处理装置可将经截断数据M’与其对应错误校验数据CRC’一起存储于存储器组件112中。在CRC”匹配CRC’的此情况中,处理装置可存储CRC”(而非CRC’)。在进一步实施例中,处理装置可多次修改接收到的数据(例如,M)。在此情况中,处理装置可在每次执行修改时执行方法200以便保证经修改数据的完整性且相应地执行任何校正动作。

图2B是根据本发明的一些实施例的检测在数据扩展期间是否已引入错误的实例方法250的流程图。方法250可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微代码、装置的硬件、集成电路等)、软件(例如,运行或执行于处理装置上的指令)或其组合。在一些实施例中,方法250由图1的错误检测组件113执行。尽管以特定顺序或次序展示,但除非另外指定,否则过程的次序可修改。因此,说明的实施例应被理解为仅作为实例,且说明的过程可以不同次序执行,且一些过程可并行执行。另外,在各种实施例中,可省略一或多个过程。因此,并非在每个实施例中都需要所有过程。其它工艺流程是可能的。

在操作260,处理装置接收经截断数据M’。在一些实施例中,处理装置可从方法200检索存储于存储器组件112中的经截断数据M’。举例来说,经截断数据M’可包含‘N-1-K’个二进制数据位,例如M

接着,处理装置可确定将经截断数据M’变回到原始数据M的操作。举例来说,如果来自图2A的原始数据M已被截断成M’,则处理装置可扩展经截断数据M’以获得原始数据M。因此,经扩展数据M将具有比经截断数据M’更大数目个位。举例来说,经扩展数据M具有N个位,而经截断数据具有‘N-1-K’个位。在扩展期间,处理装置可确定已在截断期间从原始数据M移除的部分M

在操作265,处理装置组合部分M

在操作270,处理装置对组合或经更新错误校验数据CRC’执行CRC操作。因此,处理装置已递增地更新经截断数据M’的错误校验数据(例如,CRC’)以产生经扩展数据M的错误校验数据CRC。处理装置可响应于检索请求向主机系统120提供经扩展数据M的错误校验数据CRC。

在操作280,处理装置对经扩展数据M应用CRC操作且产生错误校验数据(例如,CRC**)。在操作285,为了检测在操作260的扩展期间是否引入错误或经扩展数据M是否含有错误,处理装置确定经扩展数据M的错误校验数据CRC**是否匹配通过用部分M

图3A是根据本发明的一些实施例的检测在将数据模式附加到数据期间是否已引入错误的实例方法300的流程图。方法300可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微代码、装置的硬件、集成电路等)、软件(例如,运行或执行于处理装置上的指令)或其组合。在一些实施例中,方法300由图1的错误检测组件113执行。尽管以特定顺序或次序展示,但除非另外指定,否则过程的次序可修改。因此,说明的实施例应仅被理解为实例,且说明的过程可以不同次序执行,且一些过程可并行执行。另外,在各种实施例中,可省略一或多个过程。因此,并非在每个实施例中都需要所有过程。其它工艺流程是可能的。

在操作310,处理装置从主机系统120接收消息或数据(例如,M)。在一些实施例中,数据可包含N个二进制数据位,例如M

此外,在操作310,处理装置通过将数据模式(例如,P个0)附加到数据M来产生经修改数据M’。在一些实施例中,处理装置可产生具有一系列相同二进制数字(例如,值‘1’或‘0’)的数据模式。在其它实施例中,处理装置可产生以二进制数字描述系统信息的元数据作为数据模式。此数据模式可包含系统信息,例如将存储的经产生数据(例如,M’)的数据地址、与经产生数据M’相关联的时间戳记及/或表示任何其它系统信息的旗标。在产生具有数据大小P的数据模式之后,处理装置可将数据模式附加到数据M的前端(即,开始)或末尾。针对一些实施例,此修改过程将记录由存储器子系统110在管理对存储器组件112的写入或读取操作时所需的任何系统信息。当主机系统120稍后请求存取数据M时,处理装置从经修改数据M’分离或移除数据模式以将数据M传回到主机系统120,如下文将关于图3B描述。另外,在操作310,处理装置可产生表示对原始数据M执行的修改的类型(例如,附加数据模式)的另一元数据。修改的类型的元数据可进一步包含数据模式的内容(例如,一系列二进制数字)、数据模式的数据大小(例如,P)及数据模式将附加到的位置(例如,前端或末尾)。处理装置可使经修改数据M’与原始数据M相关联以使用元数据进行检索。

在操作315,处理装置将另一数据模式(例如,‘2

在操作320,处理装置通过对用数据模式更新的错误校验数据CRC执行CRC操作产生经修改数据M’的错误校验数据CRC’。因此,通过递增地更新原始数据M的错误校验数据CRC,处理装置可产生经修改数据M’的错误校验数据CRC’。随后,处理装置可使用CRC’来检测是否存在在附加操作期间引入的任何错误,如下文将关于操作325及340描述。

在操作325,处理装置对具有经附加数据模式的经修改数据M’应用CRC操作。接着,在操作340,处理装置基于两个错误校验数据CRC’及CRC”检测在操作310的修改期间是否已引入错误。如果两个错误校验数据具有相同值,则处理装置可确定经修改数据M’有效。否则,如果两个错误校验数据不匹配,则处理装置可确定经修改数据M’由于在操作310的附加操作期间引入的错误而无效。因而,通过使用数据模式(例如,‘2

响应于确定经修改数据M’有效,处理装置可将经修改数据M’与其对应错误校验数据CRC’一起存储于存储器组件112中。在其中CRC”匹配CRC’的此情况中,处理装置可存储CRC”(而非CRC’)。在进一步实施例中,处理装置可多次修改接收到的数据(例如,M)。在此情况中,处理装置可在每次执行修改时执行方法300以便保证经修改数据的完整性且相应地执行任何校正动作。

图3B是根据本发明的一些实施例的检测在从数据移除数据模式期间是否已引入错误的实例方法350的流程图。方法350可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微代码、装置的硬件、集成电路等)、软件(例如,运行或执行于处理装置上的指令)或其组合。在一些实施例中,方法350由图1的错误检测组件113执行。尽管以特定顺序或次序展示,但除非另外指定,否则过程的次序可修改。因此,说明的实施例应被理解为仅作为实例,且说明的过程可以不同次序执行,且一些过程可并行执行。另外,在各种实施例中,可省略一或多个过程。因此,并非在每个实施例中都需要所有过程。其它工艺流程是可能的。

在操作360,处理装置接收经修改数据M’。举例来说,经修改数据M’可具有含前置到具有K个二进制数据位的原始数据M的前端的P个数据模式位的‘K+P’个位。在一些实施例中,处理装置可从方法300检索存储于存储器组件112中的经修改数据M’。在一些实施例中,处理装置可响应于来自主机系统120的检索请求存取经存储数据M’。请求可与写入图3A中的数据M的请求相关联。即,主机系统120可将读取操作发送到处理装置以检索被传输到处理装置以进行存储的数据M。主机系统120可能未察觉到对M执行的修改。因此,响应于来自主机系统120的检索请求,处理装置可反转或撤销(即,移除经附加数据模式P个0)与经存储数据M’相关联的修改。为了确定如何反转修改或撤销修改,处理装置可从与经修改数据M’相关联的元数据识别对原始数据M执行的修改的类型(例如,附加数据模式)。处理装置可从元数据进一步确定数据模式的内容(例如,一系列二进制数字)、数据模式的数据大小及数据模式将附加到的位置(例如,前端或末尾)。

接着,处理装置可确定将经修改数据M’变回到原始数据M的操作。举例来说,如果具有数据大小P的数据模式经附加到来自图3A的原始数据M的前端,则处理装置可从经检索数据M’移除数据模式或截断经检索数据M’以获得原始数据M。因此,经截断数据M将具有比具有经附加数据模式的经检索数据M’更少数目个位。举例来说,经截断数据M具有K个位,而经检索数据M’具有‘K+P’个位。一旦经修改数据M’变回到原始数据M,处理装置便响应于读取操作将原始数据M提供到主机系统120(除非在移除过程中检测到错误,如下文将关于操作385描述)。

在操作365,处理装置将另一数据模式附加到对应于经检索数据M’的错误校验数据(例如,CRC’)。处理装置可确定将从一系列二进制数字附加的数据模式。数据模式可包含相同或任何二进制数字。此外,处理装置可基于经检索数据M’的错误校验数据(例如,CRC’)的大小(例如,R)及从经检索数据M’移除的数据模式(例如,P个0)的大小(例如,P)确定数据模式的大小。举例来说,处理装置可使用与在操作315使用的相同的数学公式‘2

在操作370,处理装置对经修改或经更新错误校验数据CRC’执行CRC操作。因此,处理装置已递增地用经附加数据模式(P个0)更新数据M’的错误校验数据(例如,CRC’)以产生经截断数据M的错误校验数据。处理装置可响应于检索请求向主机系统120提供经截断数据M的错误校验数据CRC’。

在操作380,处理装置对经截断数据M应用CRC操作或产生错误校验数据(例如,CRC**)。在操作385,为了检测在操作360的移除操作期间是否引入错误或经截断数据M是否含有错误,处理装置确定经截断数据M的错误校验数据CRC**是否匹配通过更新附加有具有数据大小‘2

图4是根据本发明的一些实施例的产生错误校验数据的实例方法400的流程图。方法400可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微代码、装置的硬件、集成电路等)、软件(例如,运行或执行于处理装置上的指令)或其组合。在一些实施例中,方法400由图1的错误检测组件113执行。尽管以特定顺序或次序展示,但除非另外指定,否则过程的次序可修改。因此,说明的实施例应被理解为仅作为实例,且说明的过程可以不同次序执行,且一些过程可并行执行。另外,在各种实施例中,可省略一或多个过程。因此,并非在每个实施例中都需要所有过程。其它工艺流程是可能的。

在操作410,处理装置接收存储数据(例如,图2A中的M)的请求。举例来说,处理装置可接收如由主机系统120所提供的存储数据M的请求。在其它实施例中,处理装置可从存储器子系统110接收请求。

在操作420,处理装置接收数据(例如,M)及数据的错误校验数据(例如,图2A中的CRC)。在一些实施例中,处理装置可用请求接收数据。处理装置可从主机系统120或存储器子系统110接收数据。数据可呈二进制数字的形式。在进一步实施例中,在接收数据之后,处理装置可创建接收到的数据的副本以假如关于操作430检测到错误就执行校正动作,如下文将描述。在一些实施例中,错误校验数据可为通过对接收到的数据应用CRC操作而产生的循环冗余校验代码。此外,错误校验数据可经附加到接收到的数据。在此情况中,处理装置可从含有数据(例如,M)及对应错误校验数据(例如,CRC)的数据包读取错误校验数据(例如,CRC)。在一些实施例中,处理装置可从主机系统120或存储器子系统110接收错误校验数据。错误校验数据可呈二进制数字的形式。在一些其它实施例中,处理装置可对接收到的数据执行CRC操作以产生用于操作420的错误校验数据。

在操作430,处理装置通过移除接收到的数据(例如,M)的一部分(例如,图2A中的M

在操作440,处理装置通过使用接收到的数据(例如,M)的错误校验数据(例如,CRC)及接收到的数据(例如,M)的经移除部分(例如,M

在更新之后,处理装置可基于经更新错误校验数据(例如,CRC*)及呈基于经移除部分(例如,M

在进一步实施例中,处理装置可确定数据(例如,M’)是否含有错误。错误可能是由诱发存储器组件112中的存储器单元的状态翻转到相反状态(例如,从‘1’值到‘0’值,且反之亦然)的任何减损引起的。在一些实施例中,处理装置可通过比较针对经修改数据(例如,M’)产生的错误校验数据(例如,CRC’)与通过对经修改数据(例如,M’)应用CRC操作而确定的错误校验数据(例如,图2A中的CRC”)来检测在操作430的移除操作期间是否引入错误。在比较两个CRC时,处理装置可确定由每一CRC的二进制数字表示的值是否相同。在一些实施例中,如果两个错误校验数据匹配,则处理装置确定未引入错误或通过移除操作修改的数据(例如,M’)不含有错误。在此情况中,处理装置可根据在操作410接收的请求将经修改数据(例如,M’)与在操作430产生的错误校验数据(例如,CRC’)一起存储于存储器组件上。在存储经修改数据(例如,M’)时,处理装置可使经修改数据(例如,M’)与接收到的原始数据(例如,M)相关联。处理装置可使用用于关联的标识符或元数据。以此方式,当处理装置从主机系统120接收检索M的请求时,处理装置可基于所述关联存取M’。另一方面,如果两个错误校验数据不匹配,则处理装置可确定通过移除操作修改的数据被损坏。在一些实施例中,处理装置可通过对接收到的原始数据的副本重复操作420(即,重新产生具有经移除的部分的数据)来执行校正动作。此外,处理装置可向主机系统120通知存储所请求数据失败。

稍后,处理装置可从主机系统120接收检索已被请求存储于存储器组件上的数据(例如,M)的请求。作为响应,处理装置可检索经存储数据(例如,图2B中的M’)且将经存储数据修改回成原始数据(例如,图2B中的M)。举例来说,处理装置可通过参考与经检索数据(例如,M’)相关联的元数据确定如何恢复原始数据(例如,M)。元数据可包含适用于相应数据的截断及/或扩展类型。相应地,处理装置可通过附加具有适当大小的数据模式来扩展经检索数据(例如,M’)以从截断恢复。因此,处理装置可通过根据来自元数据的信息包含或新增经移除部分(例如,图2B中的M

此外,在一些进一步实施例中,处理装置可更新经检索数据(例如,M’)的错误校验数据(例如,图2B中的CRC’)以便产生对应于经修改数据(例如,M),即经恢复原始数据的错误校验数据(例如,图2B中的CRC)。CRC’可通过附加到M’来与M’一起存储。在一些实施例中,经检索数据及错误校验数据两者可呈二进制数据的形式。为了更新错误校验数据(例如,CRC’),处理装置可组合经检索错误校验数据(例如,CRC’)与经移除部分(例如,M

在更新错误校验数据(例如,CRC’)之后,处理装置可通过比较经更新错误校验数据(例如,CRC)与从经修改数据(例如,M)的CRC操作产生的错误校验数据(例如,图2B中的CRC**)来确定经修改数据(例如,M)是否含有错误。响应于确定两个错误校验数据匹配彼此,处理装置可根据检索请求向主机系统120提供经恢复原始数据(例如,M)。另一方面,假如两个错误校验数据不匹配,则处理装置可确定经修改数据(例如,M)含有错误。在此情况中,处理装置可再次执行操作430。此外,处理装置可向主机系统120通知检索经请求数据错误或失败。

图5是根据本发明的一些实施例的产生错误校验数据的另一实例方法500的流程图。方法500可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微代码、装置的硬件、集成电路等)、软件(例如,运行或执行于处理装置上的指令)或其组合。在一些实施例中,方法500由图1的错误检测组件113执行。尽管以特定顺序或次序展示,但除非另外指定,否则过程的次序可修改。因此,说明的实施例应被理解为仅作为实例,且说明的过程可以不同次序执行,且一些过程可并行执行。另外,在各种实施例中,可省略一或多个过程。因此,并非在每个实施例中都需要所有过程。其它工艺流程是可能的。

在操作510,处理装置接收存储数据(例如,图3A中的M)的请求。举例来说,处理装置可接收存储由主机系统120所提供的数据M的请求。在其它实施例中,处理装置可从存储器子系统110接收请求。

在操作520,处理装置接收数据(例如,M)及数据的错误校验数据(例如,图3A中的CRC)。在一些实施例中,处理装置可用请求接收数据。处理装置可从主机系统120或存储器子系统110接收数据。数据可呈二进制数字的形式。在进一步实施例中,在接收数据之后,处理装置可创建接收到的数据的副本以假如关于操作530检测到错误就执行校正动作,如下文将描述。在一些实施例中,错误校验数据可为通过对接收到的数据应用CRC操作而产生的循环冗余校验代码。此外,错误校验数据可经附加到接收到的数据。在此情况中,处理装置可从含有数据(例如,M)及对应错误校验数据(例如,CRC)的数据包读取错误校验数据(例如,CRC)。在一些实施例中,处理装置可从主机系统120或存储器子系统110接收错误校验数据。错误校验数据可呈二进制数字的形式。在一些其它实施例中,处理装置可对接收到的数据执行CRC操作以产生用于操作520的错误校验数据。

在操作530,处理装置通过组合数据(例如,M)与数据模式(例如,图3A中的P个0)来产生另一数据(例如,图3A中的M’)。在一些实施例中,处理装置可产生对应于描述系统信息(例如将存储的经产生数据(例如,M’)的数据地址、与经产生数据(例如,M’)相关联的时间戳记及/或表示任何其它系统信息的旗标)的元数据的数据模式。数据模式可呈二进制数据的形式。在其它实施例中,处理装置可产生一系列相同二进制数字作为数据模式。接着,处理装置可将数据模式附加到接收到的数据。在一些实施例中,处理装置可将数据模式前置到接收到的数据的前端。在一些实施例中,处理装置可将数据模式附加到接收到的数据的末尾。此外,处理装置可识别修改的类型(例如,附加数据模式)及(例如)使用元数据将修改的类型连同M’一起存储。在一些实施例中,修改的类型的元数据可进一步包含数据模式的内容(例如,一系列二进制数字)、数据模式的数据大小及数据模式将附加到的位置(例如,前端或末尾)。

在操作540,处理装置通过使用接收到的数据(例如,M)的错误校验数据(例如,CRC)与呈基于用于产生另一数据(例如,M’)的数据模式的大小的另一数据模式的组合来产生另一数据(例如,M’)的错误校验数据(例如,图3A中的CRC’)。在一些实施例中,处理装置可产生对应于一系列相同二进制数字(例如,值‘0’或‘1’)的另一数据模式。在其它实施例中,数据模式可具有任何系列的二进制数字。处理装置可基于用于产生另一数据(例如,M’)的数据模式(例如,P个0)的大小(例如,P)及数据(例如,M)的错误校验数据(例如,CRC)的大小(例如,R)确定此数据模式的大小。举例来说,如图3A的操作310及315中说明,用于更新接收到的数据(例如,M)的错误校验数据(例如,CRC)的数据模式可具有‘2

在进一步实施例中,处理装置可确定数据(例如,M’)是否含有错误。在一些实施例中,处理装置可通过比较针对经修改数据(例如,M’)产生的错误校验数据(例如,CRC’)与通过对经修改数据(例如,M’)应用CRC操作而确定的错误校验数据(例如,图3A中的CRC”)来检测在操作530的附加操作期间是否引入错误。类似于关于上文图4描述的进一步实施例,如果两个错误校验数据匹配,则处理装置确定未引入错误或通过附加操作而修改的数据(例如,M’)不含有错误。在此情况中,处理装置可根据在操作510接收的请求将经修改数据(例如,M’)与在操作520产生的错误校验数据(例如,CRC’)一起存储于存储器组件上。在存储经修改数据(例如,M’)时,处理装置可使经修改数据(例如,M’)与接收到的原始数据(例如,M)相关联。处理装置可使用用于关联的标识符或元数据。另一方面,如果两个错误校验数据不匹配,则处理装置可确定通过附加操作修改的数据无效。在一些实施例中,处理装置可通过对接收到的原始数据的副本重复操作530(即,重新产生具有经附加数据模式的数据)来执行校正动作。此外,处理装置可向主机系统120通知存储所请求数据失败。

随后,处理装置可从主机系统120接收检索被请求存储于存储器组件上的数据(例如,M)的请求。作为响应,处理装置可检索经存储数据(例如,图3B中的M’)且将经存储数据修改回成原始数据(例如,图3B中的M)。举例来说,处理装置可通过参考与经检索数据(例如,M’)相关联的元数据来确定如何恢复原始数据(例如,M)。元数据可描述特定数据模式被附加到接收到的数据。在一些实施例中,元数据可进一步指定经附加数据模式的内容、经附加数据模式的数据大小以及数据模式附加到的位置(例如,前端或末尾)。相应地,处理装置可通过基于元数据移除数据模式(例如,图3B中的P个0)来修改经检索数据(例如,M’)。

此外,在一些进一步实施例中,处理装置可更新经检索数据(例如,M’)的错误校验数据(例如,图3B中的CRC’)以便产生对应于经修改数据(例如,M),即经恢复原始数据的错误校验数据(例如,图3B中的CRC)。CRC’可通过附加到M’来与M’一起存储。在一些实施例中,经检索数据及错误校验数据两者可呈二进制数据的形式。处理装置可基于另一数据模式更新经检索错误校验数据(例如,CRC’)。在一些实施例中,此数据模式可为在操作540用于产生经检索错误校验数据(例如,CRC’)的相同数据模式。举例来说,数据模式可为‘2

在更新错误校验数据(例如,CRC’)之后,处理装置可通过比较经更新错误校验数据(例如,CRC)与从经修改数据(例如,M)的CRC操作产生的错误校验数据(例如,图3B中的CRC**)确定经修改数据(例如,M)是否含有错误。响应于确定两个错误校验数据匹配彼此,处理装置可根据检索请求向主机系统120提供经恢复原始数据(例如,M)。另一方面,假如两个错误校验数据不匹配,则处理装置可确定经修改数据(例如,M)含有错误。在此情况中,处理装置可再次执行操作530。此外,处理装置可向主机系统120通知检索经请求数据错误或失败。

图6说明用于导致机器执行本文论述的方法论中的任一或多者的一组指令可在其内执行的计算机系统600的实例机器。在一些实施例中,计算机系统600可对应于主机系统(例如,图1的主机系统120),所述主机系统包含存储器子系统(例如,图1的存储器子系统110)、耦合到所述存储器子系统或利用所述存储器子系统或可用于执行控制器的操作(例如,执行操作系统以执行对应于图1的错误检测组件113的操作)。在替代实施例中,机器可连接(例如,联网)到LAN、内部网、外部网及/或因特网中的其它机器。机器可以主从式网络环境中的服务器或客户端机器的身份操作、作为对等(或分布式)网络环境中的对等机器操作或作为云计算基础设施或环境中的服务器或客户端机器操作。

机器可为个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝电话、网络设备、服务器、网络路由器、交换机或桥或能够(循序或以其它方式)执行指定由所述机器所采取的动作的一组指令的任何机器。此外,虽然说明了单个机器,但术语“机器”还应被视为包含个别或联合执行一组(或多组)指令以执行本文中论述的方法论中的任一或多者的机器的任何集合。

实例计算机系统600包含经由总线630与彼此通信的处理装置602、主存储器604(例如,只读存储器(ROM)、快闪存储器、动态随机存取存储器(DRAM)(例如同步DRAM(SDRAM)或RDRAM)等)、静态存储器606(例如,快闪存储器、静态随机存取存储器(SRAM)等)及数据存储系统618。

处理装置602表示一或多个通用处理装置,例如微处理器、中央处理单元或类似物。更特定来说,处理装置可为复杂指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器或实施其它指令集的一个处理器或实施指令集组合的多个处理器。处理装置602也可为一或多个专用处理装置,例如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器或类似物。处理装置602经配置以执行用于执行本文中论述的操作及步骤的指令626。计算机系统600可进一步包含网络接口装置608以经过网络620通信。

数据存储系统618可包含其上存储一或多个指令集626或体现本文中描述的方法论或功能中的任一或多者的软件的机器可读存储媒体624(也被称为计算机可读媒体)。指令626在由计算机系统600执行其期间也可完全或至少部分驻存于主存储器604内及/或处理装置602内,主存储器604及处理装置602也构成机器可读存储媒体。机器可读存储媒体624、数据存储系统618及/或主存储器604可对应于图1的存储器子系统110。

在一个实施例中,指令626包含实施对应于错误检测组件(例如,图1的错误检测组件113)的功能性的指令。虽然在实例实施例中将机器可读存储媒体624展示为单个媒体,但术语“机器可读存储媒体”应被理解为包含存储一或多个指令集的单个媒体或多个媒体。术语“机器可读存储媒体”也应被理解为包含能够存储或编码由机器执行的一组指令且引起机器执行本发明的方法论中的任一或多者的任何媒体。术语“机器可读存储媒体”应相应地被理解为包含(但不限于)固态存储器、光学媒体及磁性媒体。

已依据对计算机存储器内的数据位的操作的算法及符号表示呈现前述详细描述的一些部分。这些算法描述及表示是由数据处理领域的技术人员用以向所属领域的其它技术人员最有效地传达其工作实质的方式。算法在本文且通常被设想为导致所期望结果的自相一致的操作序列。操作是需要物理操纵物理量的操作。通常,尽管不是必须的,但这些量采取能够被存储、组合、比较及以其它方式操纵的电或磁性信号的形式。已证明,有时主要由于习惯用法将这些信号称为位、值、元素、符号、字符、项、数字或类似物是方便的。

然而,应记住,全部这些及类似术语应与适当物理量相关联,且仅为应用于这些量的方便标签。本发明可参考计算机系统或类似电子计算装置的动作及过程,其将表示为计算机系统的寄存器及存储器内的物理(电子)量的数据操纵且变换成类似地表示为计算机系统存储器或寄存器或其它此类信息存储系统内的物理量的其它数据。

本发明还涉及用于执行本文的操作的设备。此设备可出于预期目的而专门地构造,或其可包含通过存储于计算机中的计算机程序选择性地激活或重新配置的通用计算机。此计算机程序可存储于计算机可读存储媒体中,例如(但不限于)任何类型的磁盘,包含软盘、光盘、CD-ROM及磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、EPROM、EEPROM、磁卡或光卡或适于存储电子指令的任何类型的媒体,每一者都耦合到计算机系统总线。

本文中呈现的算法及显示器并不固有地涉及任何特定计算机或其它设备。各种通用系统可结合根据本文中的教示的程序使用,或其可证明构造更专门的设备来执行方法是方便的。用于各种这些系统的结构将如下文描述中陈述那样出现。另外,本发明不参考任何特定编程语言描述。应了解,多种编程语言可用于实施本文中所描述的本发明的教示。

本发明可被提供作为计算机程序产品或软件,其可包含具有其上存储有指令的机器可读媒体,所述指令可用于编程计算机系统(或其它电子装置)以执行根据本发明的过程。机器可读媒体包含用于存储呈可由机器(例如计算机)读取的形式的信息的任何机构。在一些实施例中,机器可读(例如计算机可读)媒体包含机器(例如计算机)可读存储媒体,例如只读存储器(“ROM”)、随机存取存储器(“RAM”)、磁盘存储媒体、光学存储媒体、快闪存储器组件等。

在前述说明书中,已参考本发明的特定实例实施例描述本发明的实施例。将明显的是,在不背离以下权利要求书中所陈述的本发明的实施例的更宽精神及范围的情况下,可对其做出各种修改。说明书及图式应相应地以说明性意义而非限制性意义来看待。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号