CN116670652A - 在远程执行设备中提供基于主机的错误检测能力 - Google Patents

在远程执行设备中提供基于主机的错误检测能力 Download PDF

Info

Publication number
CN116670652A
CN116670652A CN202180085623.1A CN202180085623A CN116670652A CN 116670652 A CN116670652 A CN 116670652A CN 202180085623 A CN202180085623 A CN 202180085623A CN 116670652 A CN116670652 A CN 116670652A
Authority
CN
China
Prior art keywords
data block
metadata
host
generated
data
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.)
Pending
Application number
CN202180085623.1A
Other languages
English (en)
Inventor
施里坎特·甘纳帕西
罗丝·V·拉费特拉
约翰·卡拉马丁纳斯
苏丹瓦·古鲁穆提
沙泽恩·阿加
维拉斯·斯里达兰
迈克尔·伊格纳托斯基
努万·贾亚塞纳
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.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
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 Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of CN116670652A publication Critical patent/CN116670652A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1435Saving, restoring, recovering or retrying at system level using file system or storage system metadata
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1044Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Library & Information Science (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

公开了在远程执行设备中提供基于主机的错误检测能力。远程执行设备执行修改存储在存储器中的数据块的主机卸载操作。本地生成所修改的数据块的元数据,使得该本地元数据生成仿真基于主机的元数据生成。利用该数据块的所修改部分的该本地生成的元数据来更新该数据块的所存储的元数据。当该主机使用所更新的元数据对所修改的数据块执行完整性检查时,该主机不在由该主机生成的元数据和在该远程执行设备中生成的元数据之间进行区分。

Description

在远程执行设备中提供基于主机的错误检测能力
背景技术
计算系统通常包括多个处理资源(例如,一个或多个处理器),该多个处理资源可检索并执行指令并且将所执行的指令的结果存储到合适的位置。处理资源(例如,中央处理单元(CPU))可包括多个功能单元,诸如例如算术逻辑单元(ALU)电路、浮点单元(FPU)电路和/或组合逻辑块,该多个功能单元可用于通过对数据(例如,一个或多个操作数)执行逻辑运算来执行指令。例如,功能单元电路可用于对操作数执行算术运算,诸如加法、减法、乘法和/或除法。通常,处理资源(例如,处理器和/或相关联的功能单元电路)可在存储器阵列外部,并且经由处理资源和存储器阵列之间的总线访问数据以执行一组指令。为了减少获取或存储存储器阵列中的数据的访问量,计算系统可采用临时存储最近访问或修改的数据以供处理资源或处理资源群组使用的高速缓存分级结构。然而,可通过将某些操作卸载到存内处理器(PIM)设备来进一步提高处理性能,其中可在存储器内部和/或存储器附近实现处理资源,使得数据处理出于计算目的更靠近存储数据的存储器位置来执行,而不是使数据更靠近处理资源来执行。PIM设备可通过减少和/或消除外部通信来节约时间,并且还可节省功率。
某些应用程序具有低时态数据重用阶段或没有时态数据重用阶段,在这些阶段期间它们频繁地在高速缓存分级结构中错过并从存储器获取数据。此外,这些阶段还可表现出低计算强度(触发器/字节的比率)。在那些阶段期间,能量效率和性能下降,因为数据移动高并且阶段受存储器限制。因此,这些阶段特别适于卸载到PIM设备或加速器。例如,程序员可在应用程序源代码中提供特定代码序列应被卸载的指示,或者编译器可作出这种确定。卸载指令的解译和编排仍必须由托管应用程序的处理资源执行。
附图说明
图1阐述了根据本公开的实施方案的用于在远程执行设备中提供基于主机的错误检测能力的示例性系统的框图。
图2阐述了示出根据本公开的实施方案的在远程执行设备中提供基于主机的错误检测能力的示例性方法的流程图。
图3阐述了示出根据本公开的实施方案的在远程执行设备中提供基于主机的错误检测能力的另一个示例性方法的流程图。
图4阐述了示出根据本公开的实施方案的在远程执行设备中提供基于主机的错误检测能力的另一个示例性方法的流程图。
图5阐述了示出根据本公开的实施方案的在远程执行设备中提供基于主机的错误检测能力的另一个示例性方法的流程图。
具体实施方式
存内处理(PIM)架构支持卸载用于在存储器中或附近执行的指令,使得节省处理器和存储器之间的数据链路上的带宽并且可减少处理器的功率消耗。由例如PIM设备执行卸载指令不需要将数据加载到本地中央处理单元(CPU)寄存器中以及将数据从本地CPU存储装置写回到存储器。PIM架构通常包括PIM使能主机(例如,CPU或图形处理单元GPU),该PIM使能主机被配置为执行用于将操作卸载到PIM设备的PIM指令。通常,PIM设备是在存储器设备内实现计算能力(例如,PIM逻辑)的存储器设备,但PIM设备也可紧密地耦接到存储器设备。为了便于解释,在本公开中假设PIM设备是PIM使能存储器设备,该PIM使能存储器设备具有嵌入在存储器设备内的实施计算能力的PIM逻辑。
为了支持对写入到存储器的数据进行错误检测,主机可针对写入到存储器的数据生成可靠性、可用性和可服务性(RAS)元数据。该元数据通常与数据一起存储在存储器设备中并且用于当稍后从存储器设备检索数据时执行错误检测检查。例如,主机可将错误检测功能应用于从存储器读取的数据以确定功能的结果是否匹配元数据。满足该错误检测检查的失败可指示从存储器正确检索数据的失败或数据自身的损坏。当该数据被PIM操作修改时出现问题,因为修改数据可能导致RAS元数据变得无效。也就是说,当PIM修改的数据被主机检索时,应用于PIM修改的数据的错误检测功能的结果将可能不匹配与该数据一起存储的RAS元数据。
该问题的一个解决方案是在存储器设备中镜像基于主机的错误保护技术。然而,这可能需要所有PIM使能存储器厂商和所有PIM使能主机厂商同意使用相同的错误保护技术,或者可能需要主机利用由主机采用的专有错误检测技术来专门配置PIM使能存储器设备。通常,主机厂商不希望公开这些专有技术。因此,在PIM使能存储器设备中镜像或精确地复制基于主机的错误检测技术可能不是可行的解决方案。
根据本公开的实施方案涉及:在不复制基于主机的错误检测技术的情况下,在PIM设备中提供基于主机的错误检测能力。相反,这些实施方案在PIM设备自身内更新主机生成的元数据以用于随后由PIM操作修改的数据。在一些实施方案中,PIM生成的元数据基于从主机接收的提示、建议或线索来仿真主机的元数据生成技术。利用PIM生成的元数据来更新的主机生成的元数据将逐位匹配原本将由主机生成的RAS元数据。因此,这些实施方案提供了针对PIM计算的数据的错误检测能力,就好像主机自身已生成用于PIM计算的数据的RAS元数据一样。
根据本公开的实施方案涉及一种在远程执行设备中提供基于主机的错误检测能力的方法,该方法包括:修改存储在存储器设备中的数据块。该方法还包括:本地生成所修改的数据块的元数据。该方法还包括:利用所修改的数据块的本地生成的元数据来更新该数据块的存储的主机生成的元数据。
在一些具体实施中,该方法还包括:存储所修改的数据块和所更新的元数据。这些具体实施还包括:响应于从主机接收到读取所修改的数据块的请求而传输所修改的数据块和所更新的元数据。
在一些具体实施中,该方法还包括:存储数据块和数据块的主机生成的元数据。这些具体实施还包括:存储从主机接收的元数据生成查找表(LUT)。本地生成数据块的所修改部分的元数据可包括利用LUT来仿真所修改的数据块的主机元数据生成。
在一些具体实施中,该方法还包括:响应于从主机接收到请求而读取数据块和该数据块的存储的主机生成的元数据。这些具体实施还包括:通过仿真数据块的主机元数据生成来验证该数据块的存储的主机生成的元数据。通过仿真数据块的主机元数据生成来验证该数据块的存储的主机生成的元数据可包括利用查找表(LUT)来生成该数据块的元数据。可在不等待数据块的存储的元数据的验证完成的情况下执行对数据块的修改。
在一些具体实施中,该方法还包括:从错误校正代码(ECC)存储装置读取用于存储的数据块和元数据的本地生成的ECC信息,并且在修改该数据块之前验证该本地生成的ECC信息。在一些具体实施中,该方法还包括:生成用于所修改的数据块和所更新的元数据的ECC信息,并且将该ECC信息存储在ECC存储装置中。
根据本公开的实施方案涉及一种用于在远程执行设备中提供基于主机的错误检测能力的装置,该远程执行设备包括存储器设备和耦接到该存储器设备的存内处理(PIM)设备。PIM设备被配置为:修改数据块。PIM设备还被配置为:本地生成所修改的数据块的元数据。PIM设备被进一步配置为:利用所修改的数据块的本地生成的元数据来更新该数据块的存储的主机生成的元数据。
在一些具体实施中,PIM设备被进一步配置为:存储数据块和该数据块的主机生成的元数据,并且存储从主机接收的元数据生成查找表(LUT)。本地生成数据块的所修改部分的元数据可包括利用LUT来仿真所修改的数据块的主机元数据生成。
在一些具体实施中,PIM设备被进一步配置为:响应于从主机接收到PIM请求而读取数据块和该数据块的存储的主机生成的元数据。在这些具体实施中,PIM设备还被配置为:通过模拟数据块的主机元数据生成来验证该数据块的存储的主机生成的元数据。通过仿真数据块的主机元数据生成来验证该数据块的存储的主机生成的元数据可包括利用查找表(LUT)来生成该数据块的元数据。
在一些具体实施中,PIM设备被配置为:从错误校正代码(ECC)存储装置读取用于存储的数据块和元数据的本地生成的ECC信息,并且在修改该数据块之前验证该本地生成的ECC信息。在一些具体实施中,存储器设备被进一步配置为:生成用于所修改的数据块和所更新的元数据的ECC信息,并且将该ECC信息存储在ECC存储装置中。
根据本公开的实施方案涉及一种用于在远程执行设备中提供基于主机的错误检测能力的系统,该远程执行设备包括存储器设备和耦接到该存储器设备的主机处理器。存储器设备被配置为:修改存储的数据块。存储器设备还被配置为:本地生成所修改的数据块的元数据。存储器设备被进一步配置为:利用所修改的数据块的本地生成的元数据来更新该数据块的存储的主机生成的元数据。
在一些具体实施中,存储器设备被进一步配置为:存储数据块和该数据块的主机生成的元数据,并且存储从主机接收的元数据生成查找表(LUT)。本地生成数据块的所修改部分的元数据可包括利用LUT来模拟所修改的数据块的主机元数据生成。
在一些具体实施中,存储器设备被进一步配置为:响应于从主机接收到PIM请求而读取数据块和该数据块的存储的主机生成的元数据。在这些具体实施中,存储器设备被进一步配置为:通过仿真数据块的主机元数据生成来验证该数据块的存储的主机生成的元数据。通过仿真数据块的主机元数据生成来验证该数据块的存储的主机生成的元数据可包括利用查找表(LUT)来生成该数据块的元数据。
在一些具体实施中,存储器设备被进一步配置为:从错误校正代码(ECC)存储装置读取用于存储的数据块和元数据的本地生成的ECC信息,并且在修改该数据块之前验证该本地生成的ECC信息。在一些具体实施中,存储器设备被进一步配置为:生成用于所修改的数据块和所更新的元数据的ECC信息,并且将该ECC信息存储在ECC存储装置中。
将从图1开始更详细地描述根据本公开的实施方案。图1阐述了根据本公开的用于在远程执行设备中提供基于主机的错误检测能力的示例性系统100的框图。图1的示例性系统100包括耦接到远程执行设备诸如PIM使能存储器设备104的主机处理器102,但读者应当理解,一些实施方案可采用代表主机处理器102起作用的其他类型的远程执行设备。主机处理器102包括执行指令的至少一个CPU 116,这些指令包括用于将数据读取和写入到存储器设备104的指令。主机处理器102的存储器控制器112接收从所执行指令生成的存储器请求,并且将请求解译为通过存储器通道传输到存储器设备104的存储器命令。存储器设备104中的存储器接口逻辑118接收命令(和相关联的数据)并且通过向存储器组106读取或写入数据来满足请求。在一些示例中,存储器设备可以是包括一个或多个动态随机访问(DRAM)裸片的堆叠式存储器设备,该一个或多个DRAM裸片堆叠在存储器接口裸片的顶部上并且通过多个硅通孔(TSV)电耦接且通信地耦接到存储器接口裸片。例如,存储器设备104可以是高带宽存储器(HBM)设备。在各种示例中,存储器设备104是远程执行设备,因为用于执行卸载指令(例如,PIM指令)的执行逻辑不是CPU 116的部分。例如,存储器设备104可在与主机处理器102相同的芯片上或相同的封装中实现,同时相对于执行局部性保持“远离”主机处理器102。在一些示例中,系统100的主机处理器102和存储器设备104集成在同一芯片(例如,片上系统(SoC))上。在其他示例中,系统100实现系统级封装(SiP)架构,其中处理器102及其部件(例如,作为SoC)连同存储器设备104一起放置在同一半导体封装中的内插器晶片上。
为了满足RAS目标,当向存储器设备104读取和写入数据时,主机处理器102可采用错误检测技术。一种这样的技术是为了生成针对写入到存储器的数据的线性错误校正/检测代码。该代码可作为元数据与写入到存储器设备104的数据一起存储。当随后从存储器设备104读取数据时,可针对所检索的数据生成相同代码以确定该代码是否与存储在具有该数据的元数据中的代码匹配。如果存在失配,则在从存储器设备读取数据时可能发生错误。对于图1的示例,假设线性错误校正/检测代码是循环冗余检查(CRC)代码。
考虑图1中描绘的示例,其中主机处理器102执行将数据108写入到存储器组106(经由存储器控制器112和存储器接口逻辑118)的操作。在发出对数据108的写入请求之前,主机错误校正模块114应用函数以生成针对数据108的包括在元数据110中的CRC。作为写入操作的一部分,数据108和元数据110被存储在存储器组106中。例如,主机可对每M个字节的数据生成CRC16。CRC是通过将输入数据除以多项式数(也称为生成器多项式)来生成的。在一个示例中,生成器多项式是如CRC代码所要求的N字节宽,并且除法的余数是所生成的CRC。包括CRC的元数据和M字节数据被传送并存储在存储器设备中。
继续以上示例,响应于来自主机处理器102的读取请求,从存储器组106读取数据108和元数据110并且(经由存储器控制器112和存储器接口逻辑118)将其传输到主机处理器102。错误校正模块114通过应用同一函数来生成针对数据108的CRC并将该CRC与元数据110中的CRC进行比较来校验所接收的数据108的完整性。如果存在失配,则可能已发生数据108的读取错误或损坏。读者将理解,错误校正模块114可采用不限于CRC代码的其他合适的错误检测技术。相反,可采用任何合适的线性错误校正/检测代码。
存储器设备104还可包括用于确定数据是否已被正确地读取或写入到存储器组106的本地错误检测和校正能力。在一些示例中,存储器设备104包括错误校正代码(ECC)模块128。例如,ECC模块128可以是裸片上ECC,因为ECC模块128是在堆叠式裸片存储器设备(例如,HBM)的每个裸片上实现的。ECC可由(专有的或标准驱动的)存储器厂商设计,以向发送到主机和从主机发送的所有数据(包括元数据)提供错误检测/校正能力。在将新数据写入到存储器中之前执行ECC编码。检查位被编码并存储在ECC指定的存储区域诸如ECC存储装置130中。类似地,在从存储器读取数据之后,通过从存储器组106读取数据和元数据两者并从检查位存储装置(例如,从ECC存储装置130)读取检查位来执行ECC解码。将针对读取的数据和元数据计算的检查位与来自检查位存储装置的存储的检查位进行比较。因为在存储器设备104内执行ECC解码,所以存储器设备还可在解码检查位期间检测到错误的情况下将透明度信息提供到主机处理器102。
在一些示例中,存储器设备104包括PIM设备150,该PIM设备包括用于对存储在存储器组106中的数据进行PIM操作(例如,算术运算)的PIM逻辑120和PIM寄存器122。在一些具体实施中,可针对每个存储器组实现PIM设备150,而在其他具体实施中,可针对每个存储器通道实现PIM设备150。作为示例而非限制,存储器设备104可接收一组命令以将数据从存储器组中的位置加载到寄存器堆(即,PIM寄存器122)的寄存器r0中,并且将从主机处理器102接收的由主机的CPU 116计算的数据加载到寄存器堆的寄存器r1中。在该示例中,PIM逻辑120执行将寄存器r1中的值添加到寄存器r0中的值并且将结果存储在寄存器r0中的操作(例如,存储在存储器设备的命令缓冲器(未示出)中的固定函数或静态操作)。来自寄存器r0的结果(称为PIM数据)随后被写回到存储器组106中的位置。在该示例中,考虑存储器组106中的存储器位置为包含数据108的M字节数据块的地址。由于数据108的一部分132已被修改,所以当被读回到主机处理器102时,元数据110中的CRC或其他线性代码将可能无法通过完整性检查。在本公开的其余部分中,经PIM修改的数据的部分132可称为“PIM数据”,而数据108的未修改的部分可称为“非PIM数据”。
如上文可见,在PIM操作修改针对其计算CRC的原始数据之后,主机生成的CRC(或其他线性错误检测代码)可变为无效。为了避免完全复制存储器设备中的主机错误检测技术(其可要求所有PIM使能存储器厂商与所有PIM使能主机厂商协调错误检测技术),根据本公开的实施方案使用较小数据块的CRC的高速缓存来迭代地构造较大数据块的CRC。
在一些实施方案中,PIM设备150包括用于更新数据块108的元数据110的元数据生成器单元124。在其中仅修改数据的一部分的一些示例中,仅需要针对数据108的修改部分132计算CRC。例如,仅针对数据108的修改部分132生成CRC相比于针对数据108的整个M字节生成CRC更快。为了仅针对修改部分生成CRC,一些实施方案利用从主机处理器102接收的关于主机的错误检测技术的提示。在一些示例中,利用最常使用的16位余数的CRC值的主机填充查找表(LUT)来更新和重建元数据110。在这些示例中,LUT可被实现为存储表示密钥的位位置及其表示值的CRC余数的字典的LUT存储装置126。然后在不复制主机处理器102的整个CRC计算逻辑的情况下,使用LUT来计算CRC。在一些示例中,LUT存储装置126的内容可用奇偶校验或ECC来保护。在一些具体实施中,主机处理器102通过存储器映射指令或者在引导时作为通电自测试(POST)序列的一部分来填充LUT存储装置126。下面将更详细地描述在存储器设备104内本地生成用于作为PIM操作的一部分修改的数据的元数据。
为了进一步解释,图2阐述了示出根据本公开的用于在远程执行设备中提供基于主机的错误检测能力的示例性方法的流程图。图2中描绘的示例包括远程执行设备214,诸如图1中描绘的PIM使能存储器设备104、加速器、或代表主机系统执行操作的其他设备。图2中描绘的示例还包括在配置上类似于图1中描绘的主机处理器102的主机处理器212。图2的示例性方法包括响应于针对存储在存储器设备中的数据块的主机请求而验证200存储的数据块的完整性。在一些示例中,验证200存储的数据块的完整性通过以下方式来进行:远程执行设备214接收修改存储在存储器设备中的数据的命令,将存储的与该数据相关联的错误检测元数据与响应于该请求而针对该数据生成的错误检测元数据进行比较,以及校验存储的元数据与所生成的元数据相匹配。
图2的方法还包括修改202数据块。在一些示例中,修改202数据块通过以下方式来进行:远程执行设备214将数据从存储器组(例如,图1中的存储器组106)加载到远程执行设备214的寄存器(例如,图1中的寄存器122)中。在这些示例中,修改202数据块进一步通过以下方式来进行:在计算逻辑(例如,图1中的PIM逻辑120)中执行修改寄存器中的数据的至少一部分的一个或多个操作。例如,操作可以是在PIM逻辑中的算术逻辑单元(ALU)中执行的算术或逻辑操作。
图2的方法还包括本地生成204所修改的数据块的元数据。在一些示例中,本地生成204所修改的数据块的元数据通过以下方式来进行:元数据生成单元(例如,图1中的元数据生成单元124)生成数据块的被操作修改部分的元数据,使得在远程执行设备214内生成的数据的所修改部分的元数据可被识别,就好像它是由主机处理器212生成的元数据一样。在这些示例中,数据块的元数据包括线性错误检测代码值(例如,CRC值)。如先前所论述,由主机处理器212使用以生成检查值的线性错误检测代码的特定功能对于存储器设备214来说是未知的,因此存储器设备214不能准确地复制由主机处理器212使用的元数据生成过程。而是,存储器设备214中的元数据生成单元针对修改的数据块(或仅针对由操作修改的数据部分)来仿真主机的元数据生成。在一些示例中,元数据生成单元通过使用关于由主机处理器212使用的线性错误检测功能的部分信息重构修改的数据的检查值,来仿真主机处理器的元数据生成技术。该部分信息可包括例如功能类型(例如,CRC)、字编码宽度、以及位串到检查值的映射。下面将更详细地描述由元数据生成单元进行的主机元数据生成仿真。
图2的方法还包括:利用所修改的数据块的本地生成的元数据来更新206该数据块的存储的主机生成的元数据。在一些示例中,利用修改部分的本地生成的元数据来更新206该数据块的存储的主机生成的元数据通过以下方式来进行:远程执行设备214利用本地生成的用于数据字的检查值来替换主机生成的元数据中的检查值。例如,远程执行设备可以是对数据块执行PIM操作的PIM使能存储器设备。在该示例中,数据字包括由PIM操作修改的数据(即,PIM数据)。由于线性代码的固有性质,所得更新的元数据包括用于PIM数据的更新的检查值与用于非PIM数据的原始检查值的组合,该组合逐位匹配在处理器生成所修改的数据块的元数据的情况下原本将由主机处理器自身生成的检查值。
图2的方法还包括:存储208所修改的数据块和所更新的元数据。在一些示例中,存储208所修改的数据块和所更新的元数据通过以下方式来进行:将包括PIM数据和非PIM数据的数据块以及包括主机生成的元数据和本地生成的元数据的所更新的元数据存储在从其加载数据块和元数据的特定位置处的存储器组中。
图2的方法还包括:响应于从主机接收到读取所修改的数据块的请求而传输210所修改的数据块和所更新的元数据。在一些示例中,响应于从主机接收到读取所修改的数据块的请求而传输210所修改的数据块和所更新的元数据通过以下方式来进行:由存储器设备从主机处理器212接收读取其中存储了所修改的数据块和所更新的元数据的特定存储器位置中的数据的读取请求,并且将所修改的数据块和所更新的元数据传输到主机处理器212。由主机处理器212执行的数据完整性验证可包括重新生成元数据并且将重新生成的元数据与从存储器设备接收的元数据(即,所更新的元数据)进行比较。因为数据的修改部分的元数据是通过模拟基于主机的元数据生成而生成的,所以主机处理器212将把所更新的元数据的完整性识别为有效。
为了进一步解释,图3阐述了示出根据本公开的用于在远程执行设备中提供基于主机的错误检测能力的示例性方法的流程图。类似于图2中描绘的示例性方法,图3的示例性方法还包括:响应于针对存储在存储器设备中的数据块的主机请求而验证200存储的数据块的完整性,修改202数据块;本地生成204所修改的数据块的元数据;利用所修改的数据块的本地生成的元数据来更新206该数据块的存储的主机生成的元数据;存储208所修改的数据块和所更新的元数据;以及响应于从主机接收到读取所修改的数据块的请求而传输210所修改的数据块和所更新的元数据。
图3的方法还包括:存储302数据块和该数据块的主机生成的元数据。在通过操作(例如,PIM操作)对数据块进行任何修改之前,数据块初始存储在存储器设备中。在一些示例中,存储302数据块和数据块的主机生成的元数据通过以下方式来进行:接收将数据块存储在特定存储器位置处的请求,并且将数据块存储在存储器组中的特定存储器位置处。在这些示例中,将数据块和对应元数据存储在一起。在一个示例中,将元数据交织在数据块中。在另一个示例中,将数据块的元数据附加到数据块。
图3的方法还包括:存储304从主机接收的元数据生成查找表(LUT)。在一些示例中,存储304从主机接收的元数据生成LUT通过以下方式来进行:由远程执行设备214接收描述关于基于主机的元数据生成计算的有限信息的LUT。例如,LUT可包含CRC计算的最常用的位余数。LUT可在预留存储位置(例如,图1的LUT存储装置126)中实现,该预留存储位置存储表示密钥的位位置及其表示值的CRC余数的字典。在这些示例中,可在不复制远程执行设备214中的整个CRC计算逻辑的情况下使用LUT来计算CRC。
因为主机处理器212利用线性代码诸如CRC,所以PIM数据的元数据生成可利用以下性质:该加法在指示等效异或运算的2个元素的伽罗瓦域上进行。在一些实施方案中,LUT存储装置是用静态RAM(SRAM)组实现的,其中异或操作可在SRAM组内执行。在其他实施方案中,LUT存储装置被实现为触发器或锁存器组,其中异或操作在单独的逻辑中实现。在一些示例中,主机处理器212通过存储器映射指令或在引导时间作为POST序列的一部分来填充LUT存储装置中的LUT。
在图3的方法中,本地生成204所修改的数据块的元数据包括利用306LUT来生成元数据。在一些示例中,远程执行设备214本地的元数据生成单元通过遍历输入数据字并使用LUT计算错误检测元数据来迭代地生成错误检测元数据(例如,CRC值)。考虑其中将M字节的数据块与CRC错误检测元数据一起存储的示例。为了仿真数据块的主机元数据生成,对于开始于最高有效字节的每个N字节数据字,(a)将CRC寄存器设定为‘0’,(b)将N字节的数据与CRC寄存器进行异或,(c)对于在N字节的数据中设定的每个位,读取LUT以找到逐位余数密钥并且将该密钥与CRC寄存器进行异或,以及(d)将CRC寄存器设定为来自(c)的值。在完成时,CRC寄存器的内容表示本地生成的用于整个数据块的元数据。读者将理解,此计算可用于仅针对数据块的修改部分(例如,作为PIM操作的结果)更新存储的元数据。例如,在仅修改数据块的两个最高有效字节的情况下,在存储的元数据中仅需要更新那些N字节数据的元数据。读者将进一步理解,尽管在上述示例中使用了CRC代码,但是相同原理可应用于任何线性错误检测代码。
在以上示例中,LUT具有最多M*N个条目以存储用于CRC查找的所有可能检查和。对于使用CRC16的32字节数据字,这种办法的开销为每PIM设备0.5KB的存储(其中PIM设备可每存储器通道或每存储器组实现)。在一个具体实施中,LUT可经由多个存储器组或读取端口支持每周期的多个CRC查找以便维持PIM计算的高峰执行带宽。在另一个具体实施中,可利用LUT存储装置的分级结构,其中每个存储器设备通道具有特定数目个条目的全局LUT存储装置,并且每个存储器组(采用PIM)包括具有较小数目个条目的局部LUT存储装置。例如,可假设本地LUT存储装置以由该存储器组内针对PIM数据遇到的数据的频率所管理的替换策略来操作。
为了进一步解释,图4阐述了示出根据本公开的用于在远程执行设备中提供基于主机的错误检测能力的示例性方法的流程图。类似于图2中描绘的示例性方法,图4的示例性方法还包括:响应于针对存储在存储器设备中的数据块的主机请求而验证200存储的数据块的完整性,修改202数据块;本地生成204所修改的数据块的元数据;利用所修改的数据块的本地生成的元数据来更新206该数据块的存储的主机生成的元数据;存储208所修改的数据块和所更新的元数据;以及响应于从主机接收到读取所修改的数据块的请求而传输210所修改的数据块和所更新的元数据。
在图4的方法中,验证200存储的数据块的完整性包括:响应于从主机接收到请求而读取402数据块和该数据块的存储的主机生成的元数据。在一些示例中,请求410是PIM请求。在这些示例中,请求410要求在对数据执行PIM操作之前从存储器组读取数据。在这些示例中,在执行PIM操作之前从存储器组读取存储的数据块和元数据,并且将其加载到缓冲器或寄存器中。存储的元数据包括数据块的主机生成的元数据。在一些情况下,如果先前的PIM操作已修改数据块,则存储的元数据还可包括本地(即,在远程执行设备214中)生成的更新的元数据。
在图4的方法中,验证200存储的数据块的完整性还包括:通过仿真数据块的主机元数据生成来验证404数据块的存储的主机生成的元数据。在一些示例中,通过仿真数据块的主机元数据生成来验证404该数据块的存储的主机生成的元数据通过以下方式来进行:在远程执行设备中重新生成数据块的元数据,并且将重新生成的元数据与存储的元数据进行比较。这确保数据在执行操作之前未损坏。在一些具体实施中,验证404数据块的存储的元数据由元数据生成单元进行,而在其他具体实施中,在执行操作之前,“前端”元数据再生成和验证可在部件中实现,该部件与在操作已经完成之后在“后端”上执行的元数据生成分离。可如上文关于LUT所述来进行数据块的模拟主机元数据生成。例如,验证404该数据块的存储的主机生成的元数据由元数据生成单元通过利用406LUT本地生成数据块的元数据来进行。在一些具体实施中,利用406LUT生成数据块的元数据如上所述使用LUT存储装置来进行。
考虑其中存储的元数据包括用于M字节数据块的CRC代码的示例。为了仿真数据块的主机元数据生成,对于开始于最高有效字节的每个N字节数据字,(a)将CRC寄存器设定为“0”,(b)将N字节的数据与CRC寄存器进行异或,(c)对于在N字节的数据中设定的每个位,读取LUT存储装置中的LUT以找到逐位余数密钥并且将该密钥与CRC寄存器进行异或,以及(d)将CRC寄存器设定为来自(c)的值。在完成时,CRC寄存器的内容表示本地生成的用于整个数据块的元数据。然后,将数据块的本地生成的元数据与数据块的存储的元数据进行比较,以确定在执行操作之前数据是否已损坏。
在远程执行设备(例如,PIM使能存储器设备)内执行元数据生成和验证的一个主要问题是:由于需要附加存储器访问循环来执行元数据生成和验证,潜在地减小了存储器带宽。CRC需要在PIM计算之前(即,前端)生成并校验一次,并且需要在PIM计算之后(即,后端)再次再生成。这可能向PIM计算添加若干附加循环,从而降低PIM计算的总体吞吐量,因为它受到元数据生成和验证的瓶颈。此外,如果主机正在等待访问PIM所操作的数据,则存储器访问延迟将更高。为了解决这个问题,一些具体实施可在前端上利用两层元数据验证。例如,可采用快速但低覆盖范围错误检测代码来加速总体前端验证。用于元数据验证(例如,CRC验证)的较慢但高覆盖范围代码随后提供更稳健的元数据验证。使用快速代码的初始验证将允许PIM操作继续进行,同时较慢代码正积极地工作以验证数据。例如,快速代码可以是能够对输入数据执行最小检查的简单交织奇偶检查代码。在这种示例中,存储器设备不需要在执行PIM操作之前等待元数据生成和验证完成。
在一些示例中,如果元数据生成和验证的结果与较快代码错误检测代码的结果不一致,则当前PIM操作被挤压并且数据被标记为损坏。主机系统可实施反应性措施。在这些示例中,为了支持回滚和恢复,PIM计算的结果不被存储回存储器组或本地寄存器,直到元数据生成和验证已经校验了数据的完整性。在这些示例中,PIM计算的结果被保存在临时缓冲器中,直到前端验证完成。临时缓冲器还可充当转发层,其中依赖于这些飞行指令的后续指令直接从该缓冲器获得它们的操作数。
在一些具体实施中,在元数据不能被重新创建的情况下,即使数据是干净的,元数据连同其数据可被显式地标记为损坏。例如,当将该数据标记为损坏时,可使用不同的签名,使得主机处理器可区分真实错误和由于不能生成元数据而导致的伪错误。在不能生成元数据并且将其标记为损坏的情况下,数据可能仍然有效。主机处理器可对在PIM设备内未成功生成或重新创建元数据的数据采取反应性措施。在一个示例中,如果主机处理器确定损坏的元数据被标记为PIM数据,则它可用该高速缓存行中的每个唯一N字节数据的检查和来反应性地填充LUT。主机处理器可接着尝试重放读取请求以尝试并查看存储器设备是否可用最近更新的LUT计算正确元数据。在另一个示例中,可在主机处理器发信号通知允许存储器设备执行进一步动作之前允许重试数目的阈值。不能利用LUT存储装置中的可用条目生成元数据的存储器设备中的数据应当在有限时间量内保持存在于存储器设备中(不被交换),以允许主机处理器填充LUT存储装置,以便该存储器设备可尝试计算元数据。
为了进一步解释,图5阐述了示出根据本公开的用于在远程执行设备中提供基于主机的错误检测能力的示例性方法的流程图。类似于图4中描绘的示例性方法,图5的示例性方法还包括验证200存储的数据块的完整性,包括读取402数据块和该数据块的存储的元数据,以及通过模拟该数据块的主机元数据生成来验证404该数据块的存储的元数据;修改202数据块;本地生成204所修改的数据块的元数据;利用所修改的数据块的本地生成的元数据来更新206该数据块的存储的主机生成的元数据;存储208所修改的数据块和所更新的元数据;以及响应于从主机接收到读取所修改的数据块的请求而传输210所修改的数据块和所更新的元数据。
图5的方法还包括:从错误校正代码(ECC)存储装置读取502用于存储的数据块和元数据的本地生成的ECC信息。在一些具体实施中,存储器设备214可实施由存储器设备使用以验证从其自身的存储器组读取和写入到其自身的存储器组的数据的ECC。ECC可由ECC生成器/验证器(例如,图1中的ECC模块128)生成。例如,ECC信息诸如检查位可被存储在ECC存储装置(例如,130)中。在一些示例中,从ECC存储装置读取502用于存储的数据块和元数据的本地生成的ECC信息通过以下方式来进行:从检查位存储装置读取用于存储的数据块和元数据的ECC信息。
图5的方法还包括:在修改数据块之前验证504本地生成的ECC。在一些示例中,在修改数据块之前验证504本地生成的ECC通过以下方式来进行:计算用于组合的数据块和元数据的ECC,并且将所计算的ECC与从检查位存储装置读取的ECC信息进行比较。如果所计算的ECC和存储的ECC匹配,则存储的数据块和存储的元数据的本地完整性是完好无损的。
在一个实施方案中,通过依赖于由ECC提供的覆盖范围来允许执行操作而不等待元数据验证完成,ECC可被用作快速代码。一旦ECC验证发信号通知数据是干净的,操作就可继续进行。在另一个实施方案中,并行地执行ECC验证和元数据验证。由于访问延迟包括ECC编码/解码,所以可并行地执行ECC和元数据验证两者。
图5的方法还包括:生成506用于所修改的数据块和所更新的元数据的ECC信息。在一些示例中,生成506用于所修改的数据块和所更新的元数据的ECC信息通过以下方式来进行:ECC生成器/验证器计算用于所修改的数据块和所更新的元数据的ECC。
图5的方法还包括:将ECC信息存储508在ECC存储装置中。在一些示例中,将ECC信息存储508在ECC存储装置中通过以下方式来进行:将用于所修改的数据块和所更新的元数据的ECC检查位存储在ECC存储装置中。
在一些情况下,ECC生成器/验证器无法继续进行并且不能服务于对该对应地址中的数据的后续请求,直到所修改的数据块的所更新的元数据的生成已完成。在一些具体实施中,对于不将数据写入到存储器但将中间结果存储到本地寄存器(例如,图1中的寄存器122)的操作序列,可省略所修改的数据块的后端元数据生成。如果后续指令需要读取访问当前指令的相同地址,则转发网络临时缓冲器可提供数据。在这种情况下,当该数据转发发生时,可绕过前端中的ECC验证和元数据验证。如果后续指令需要写入访问相同地址或任意访问任何其他地址,则存储器设备等待计算和后端元数据生成过程完成。如果后续指令仅从本地寄存器提供数据,则这些指令可继续进行。一旦后端中的元数据生成完成,就从临时缓冲器移除数据以为新数据腾出空间。
在一些具体实施中,后端元数据生成是完全流水线化的,并且假设存在足够的缓冲来保存所修改的数据及其部分生成的元数据,则可维持高峰操作执行。如果在正计算元数据时在设备上调度相关操作,则吞吐量将降低。
在一些具体实施中,通过生成由于操作而改变的字节的掩码并且仅生成该数据的元数据,元数据生成在后端加快。如果仅修改数据的一部分,则通过建议的LUT算法生成所修改的数据的该部分的元数据。通过对该输出与原始数据进行异或,可生成PIM计算数据的元数据。这种办法的开销可在O1至O(n)之间,其中“n”是修改的字节的数目。
鉴于前述公开,读者将理解,通过使用由主机提供的用于错误检测元数据生成的提示,远程执行设备诸如PIM设备可以:1)在执行远程执行操作之前验证由主机生成的元数据,以及2)在不将基于主机的元数据生成逻辑复制到远程执行设备的情况下,以仿真基于主机的元数据生成功能的方式生成用于由远程执行操作修改的数据的错误检测元数据。读者还将理解,可利用快速代码诸如存内ECC计算来初始验证存储的数据的完整性以允许执行远程执行操作,同时对照存储的元数据再生成并验证所存储的数据的元数据。可并行地进行ECC验证和元数据再生成/验证以提高性能。读者还将理解,在验证存储的元数据时,远程执行操作的结果可被存储在临时缓冲器中,并且可供在为所修改的数据生成元数据时使用该结果的其他远程执行操作使用。用于所修改的数据的错误检测元数据可逐片生成,因为所更新的元数据仅针对数据的所修改部分创建,而不针对数据的未修改部分生成元数据。因此,当主机读取通过远程执行操作更新的数据和使用元数据生成提示在存储器设备中更新的元数据时,主机将不在由主机创建的元数据和在存储器中生成的元数据之间进行区分。
实施方案可以是系统、装置、方法和/或逻辑电路。本公开中的计算机可读程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据或者以一种或多种编程语言的任何组合编写的源代码或目标代码,编程语言包括诸如Smalltalk、C++等面向对象的编程语言,以及诸如“C”编程语言或类似编程语言的常规过程编程语言。在一些实施方案中,包括例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA)的电子电路可通过利用计算机可读程序指令的状态信息来执行计算机可读程序指令。
本公开的各方面在此参考根据本公开的一些实施方案的方法、装置(系统)和逻辑电路的流程图图示和/或框图进行描述。应当理解,流程图图示和/或框图的每个框以及流程图图示和/或框图中的框的组合可通过逻辑电路来实现。
逻辑电路可在处理器、其他可编程数据处理装置或其他设备中实现,导致在处理器、其他可编程装置或其他设备上执行一系列操作步骤以得到计算机实现的过程,使得在计算机、其他可编程装置或其他设备上执行的指令实现在流程图和/或框图的一个或多个框中指定的功能/动作。
图中的流程图和框图示出了根据本公开的各种实施方案的系统、方法和逻辑电路的可能具体实施的架构、功能和操作。就这一点而言,流程图或框图中的每个框可以表示指令的包括用于实现指定逻辑功能的一个或多个可执行指令的模块、段或部分。在一些另选的具体实施中,框中指出的功能可以不按照图中指出的顺序发生。例如,取决于所涉及的功能,连续示出的两个框实际上可以基本上同时执行,或者这些框有时可以以相反顺序执行。还将注意到,框图和/或流程图图示中的每个框以及框图和/或流程图图示中的框的组合可由执行指定功能或动作或者执行专用硬件和计算机指令的组合的基于专用硬件的系统来实现。
虽然已经参考本公开的实施方案具体地示出和描述了本公开,但是应当理解,在不脱离以下权利要求的精神和范围的情况下,可在其中进行形式和细节上的各种改变。因此,本文所述的实施方案应当被认为仅是描述性意义的,而不是出于限制性目的。本公开不是由详细描述而是由所附权利要求限定的,并且在该范围内的所有差异将被解释为包括在本公开中。

Claims (20)

1.一种在远程执行设备中提供基于主机的错误检测能力的方法,所述方法包括:
修改数据块;
本地生成所修改的数据块的元数据;以及
利用所修改的数据块的所述本地生成的元数据来更新所述数据块的存储的主机生成的元数据。
2.根据权利要求1所述的方法,还包括:
存储所修改的数据块和所更新的元数据;以及
响应于从主机接收到读取所修改的数据块的请求而传输所修改的数据块和所更新的元数据。
3.根据权利要求1所述的方法,还包括:
存储所述数据块和所述数据块的主机生成的元数据;以及
存储从主机接收的元数据生成查找表(LUT);
其中本地生成所修改的数据块的元数据包括利用所述LUT来生成所述数据块的元数据。
4.根据权利要求1所述的方法,还包括:
响应于从主机接收到请求而读取所述数据块和所述数据块的所述存储的主机生成的元数据;以及
通过仿真所述数据块的主机元数据生成来验证所述数据块的所述存储的主机生成的元数据。
5.根据权利要求4所述的方法,其中通过仿真所述数据块的主机元数据生成来验证所述数据块的所述存储的主机生成的元数据包括:利用查找表(LUT)来本地生成所述数据块的元数据。
6.根据权利要求5所述的方法,其中所述数据块是在不等待所述数据块的所述存储的主机生成的元数据的验证完成的情况下修改的。
7.根据权利要求4所述的方法,还包括:
从错误校正代码(ECC)存储装置读取用于所述数据块和所述元数据的本地生成的ECC信息;以及
在修改所述数据块之前验证所述本地生成的ECC信息。
8.根据权利要求7所述的方法,还包括:
生成用于所修改的数据块和所更新的元数据的ECC信息;以及
将所述ECC信息存储在所述ECC存储装置中。
9.根据权利要求1所述的方法,其中修改所述数据块包括由存内处理(PIM)设备修改所述数据块。
10.一种装置,包括:
存储器设备;和
存内处理(PIM)设备,所述PIM设备耦接到所述存储器设备,其中所述PIM设备被配置为:
修改数据块;
本地生成所修改的数据块的元数据;以及
利用所修改的数据块的所述本地生成的元数据来更新所述数据块的存储的主机生成的元数据。
11.根据权利要求10所述的装置,其中所述PIM设备被进一步配置为:
存储所述数据块和所述数据块的主机生成的元数据;以及
存储从主机接收的元数据生成查找表(LUT);
其中本地生成所修改的数据块的元数据包括利用所述LUT来生成元数据。
12.根据权利要求10所述的装置,其中所述PIM设备被进一步配置为:
响应于从主机接收到PIM请求而读取所述数据块和所述数据块的所述存储的主机生成的元数据;以及
通过仿真所述数据块的主机元数据生成来验证所述数据块的所述存储的主机生成的元数据。
13.根据权利要求12所述的装置,其中通过仿真所述数据块的主机元数据生成来验证所述数据块的所述存储的主机生成的元数据包括:利用查找表(LUT)来本地生成所述数据块的元数据。
14.根据权利要求12所述的装置,其中所述PIM设备被进一步配置为:
从错误校正代码(ECC)存储装置读取用于所述数据块和所述元数据的本地生成的ECC信息;以及
在修改所述数据块之前验证所述本地生成的ECC信息。
15.根据权利要求14所述的装置,其中所述PIM设备被进一步配置为:
生成用于所修改的数据块和所更新的元数据的ECC信息;以及
将所述ECC信息存储在所述ECC存储装置中。
16.一种系统,包括:
主机处理器设备;和
存储器设备,所述存储器设备耦接到所述主机处理器设备,其中所述存储器设备被配置为:
修改数据块;
本地生成所修改的数据块的元数据;以及
利用所修改的数据块的所述本地生成的元数据来更新所述数据块的存储的主机生成的元数据。
17.根据权利要求16所述的系统,其中所述存储器设备被进一步配置为:
存储所述数据块和所述数据块的主机生成的元数据;以及
存储从所述主机处理器设备接收的元数据生成查找表(LUT);
其中本地生成所修改的数据块的元数据包括利用所述LUT来生成所述元数据。
18.根据权利要求16所述的系统,其中所述存储器设备被进一步配置为:
响应于从所述主机处理器设备接收到PIM请求而读取所述数据块和所述数据块的所述存储的主机生成的元数据;以及
通过仿真所述数据块的主机元数据生成来验证所述数据块的所述存储的主机生成的元数据。
19.根据权利要求18所述的系统,其中通过仿真所述数据块的主机元数据生成来验证所述数据块的所述存储的主机生成的元数据包括:利用查找表(LUT)来本地生成所述数据块的元数据。
20.根据权利要求18所述的系统,其中所述存储器设备被进一步配置为:
从错误校正代码(ECC)存储装置读取用于所述数据块和所述元数据的本地生成的ECC信息;以及
在修改所述数据块之前验证所述本地生成的ECC信息。
CN202180085623.1A 2020-12-29 2021-12-21 在远程执行设备中提供基于主机的错误检测能力 Pending CN116670652A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/136,549 US11409608B2 (en) 2020-12-29 2020-12-29 Providing host-based error detection capabilities in a remote execution device
US17/136,549 2020-12-29
PCT/US2021/064632 WO2022146790A1 (en) 2020-12-29 2021-12-21 Providing host-based error detection capabilities in a remote execution device

Publications (1)

Publication Number Publication Date
CN116670652A true CN116670652A (zh) 2023-08-29

Family

ID=79730578

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202180085623.1A Pending CN116670652A (zh) 2020-12-29 2021-12-21 在远程执行设备中提供基于主机的错误检测能力

Country Status (6)

Country Link
US (1) US11409608B2 (zh)
EP (1) EP4272079A1 (zh)
JP (1) JP2024500785A (zh)
KR (1) KR20230121154A (zh)
CN (1) CN116670652A (zh)
WO (1) WO2022146790A1 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11892983B2 (en) 2021-04-29 2024-02-06 EMC IP Holding Company LLC Methods and systems for seamless tiering in a distributed storage system
US11740822B2 (en) * 2021-04-29 2023-08-29 EMC IP Holding Company LLC Methods and systems for error detection and correction in a distributed storage system

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5668976A (en) * 1993-11-04 1997-09-16 Cirrus Logic, Inc. Error correction method and apparatus for disk drive emulator
US20050114595A1 (en) * 2003-11-26 2005-05-26 Veritas Operating Corporation System and method for emulating operating system metadata to provide cross-platform access to storage volumes
US8055745B2 (en) * 2004-06-01 2011-11-08 Inmage Systems, Inc. Methods and apparatus for accessing data from a primary data storage system for secondary storage
US7444360B2 (en) * 2004-11-17 2008-10-28 International Business Machines Corporation Method, system, and program for storing and using metadata in multiple storage locations
US7533323B2 (en) * 2005-07-28 2009-05-12 Prostor Systems, Inc. Adaptive archival format
US20070268905A1 (en) * 2006-05-18 2007-11-22 Sigmatel, Inc. Non-volatile memory error correction system and method
US20080288712A1 (en) * 2007-04-25 2008-11-20 Cornwell Michael J Accessing metadata with an external host
US9141477B2 (en) * 2007-10-12 2015-09-22 International Business Machines Corporation Data protection for variable length records by utilizing high performance block storage metadata
US20110040924A1 (en) * 2009-08-11 2011-02-17 Selinger Robert D Controller and Method for Detecting a Transmission Error Over a NAND Interface Using Error Detection Code
US8886870B2 (en) * 2010-05-25 2014-11-11 Marvell World Trade Ltd. Memory access table saving and restoring system and methods
US10623485B2 (en) * 2012-07-16 2020-04-14 Seagate Technology Llc Method of, and apparatus for, file system replication
US9715519B2 (en) * 2013-03-15 2017-07-25 Sandisk Technologies Llc Managing updates to multiple sets of metadata pertaining to a memory
US9710514B1 (en) * 2013-06-25 2017-07-18 Marvell International Ltd. Systems and methods for efficient storage access using metadata
US9733847B2 (en) * 2014-06-02 2017-08-15 Micron Technology, Inc. Systems and methods for transmitting packets in a scalable memory system protocol
US9852076B1 (en) * 2014-12-18 2017-12-26 Violin Systems Llc Caching of metadata for deduplicated LUNs
US10754587B2 (en) * 2015-03-20 2020-08-25 Burlywood, Inc. Memory partitioning storage controller
US9569306B1 (en) * 2015-12-18 2017-02-14 International Business Machines Corporation Recovery of multi-page failures in non-volatile memory system
US10884914B2 (en) * 2016-02-19 2021-01-05 International Business Machines Corporation Regrouping data during relocation to facilitate write amplification reduction
US20170329635A1 (en) * 2016-05-13 2017-11-16 University Of Utah Research Foundation Systems and methods for distributed computing
US9934086B2 (en) * 2016-06-06 2018-04-03 Micron Technology, Inc. Apparatuses and methods for selective determination of data error repair
KR102479212B1 (ko) 2016-08-17 2022-12-20 삼성전자주식회사 반도체 메모리 장치, 이를 포함하는 메모리 시스템 및 이의 동작 방법
US10127074B2 (en) * 2017-01-27 2018-11-13 Futurewei Technologies, Inc. Transaction identification synchronization
US11119954B2 (en) * 2018-09-25 2021-09-14 Western Digital Technologies, Inc. Host emulator
CN112099985B (zh) * 2019-06-17 2023-09-12 慧荣科技股份有限公司 数据储存装置以及非挥发式存储器控制方法
US11256574B1 (en) * 2020-09-18 2022-02-22 EMC IP Holding Company LLC Method and system for backing up cloud native and non-cloud native applications

Also Published As

Publication number Publication date
EP4272079A1 (en) 2023-11-08
US11409608B2 (en) 2022-08-09
KR20230121154A (ko) 2023-08-17
WO2022146790A1 (en) 2022-07-07
US20220206901A1 (en) 2022-06-30
JP2024500785A (ja) 2024-01-10

Similar Documents

Publication Publication Date Title
US10268544B2 (en) Using parity data for concurrent data authentication, correction, compression, and encryption
US6539503B1 (en) Method and apparatus for testing error detection
KR102242872B1 (ko) 비휘발성 메모리 내의 복구 알고리즘
KR101369573B1 (ko) 고체상태 소자들의 객체 지향 메모리
US7447948B2 (en) ECC coding for high speed implementation
US7036066B2 (en) Error detection using data block mapping
TWI703499B (zh) 資料儲存裝置及其共享控制器中記憶體的方法
KR20090028507A (ko) 비휘발성 메모리 에러 보정 시스템 및 방법
CN116670652A (zh) 在远程执行设备中提供基于主机的错误检测能力
US9553608B2 (en) Data storage device decoder and method of operation
KR20180086816A (ko) 사전-검사된 에러율에 따른 적응형 에러정정을 수행하는 메모리장치 및 전자장치와, 메모리장치의 동작방법
JP2024513174A (ja) オフロードされた動作において使用されるデータのエラーチェック
US20040153746A1 (en) Mechanisms for embedding and using integrity metadata
US8739012B2 (en) Co-hosted cyclical redundancy check calculation
US9189327B2 (en) Error-correcting code distribution for memory systems
US10642684B1 (en) Memory command interleaving
US7240272B2 (en) Method and system for correcting errors in a memory device
US9043655B2 (en) Apparatus and control method
CN111061591B (zh) 基于存储器完整性检查控制器实现数据完整性检查的系统和方法
US9934094B2 (en) Process for verification of randomly generated I/O requests
US8447932B2 (en) Recover store data merging
WO2023108600A1 (en) System, method and apparatus for reducing power consumption of error correction coding using compacted data blocks
US20240053904A1 (en) Efficient security metadata encoding in error correcting code (ecc) memory without dedicated ecc bits
US10579470B1 (en) Address failure detection for memory devices having inline storage configurations
US20230195565A1 (en) Multilevel Memory System with Copied Error Detection Bits

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