掌桥专利:专业的专利平台
掌桥专利
首页

在卸载操作中使用的错误校验数据

文献发布时间:2024-04-18 19:58:26


在卸载操作中使用的错误校验数据

背景技术

计算系统通常包括多个处理资源(例如,一个或多个处理器),该多个处理资源可检索并执行指令并且将所执行的指令的结果存储到合适的位置。处理资源(例如,中央处理单元(CPU))可包括多个功能单元,诸如例如算术逻辑单元(ALU)电路、浮点单元(FPU)电路和/或组合逻辑块,该多个功能单元可用于通过对数据(例如,一个或多个操作数)执行逻辑运算来执行指令。例如,功能单元电路可用于对操作数执行算术运算,诸如加法、减法、乘法和/或除法。通常,处理资源(例如,处理器和/或相关联的功能单元电路)可在存储器阵列外部,并且经由处理资源和存储器阵列之间的总线访问数据以执行一组指令。为了减少获取或存储存储器阵列中的数据的访问量,计算系统可采用临时存储最近访问或修改的数据以供处理资源或处理资源群组使用的高速缓存分级结构。然而,可通过将某些操作卸载到存储器内置处理器(PIM)设备来进一步提高处理性能,其中可在存储器内部和/或存储器附近实现处理资源,使得数据处理出于计算目的更靠近存储数据的存储器位置来执行,而不是使数据更靠近处理资源来执行。PIM设备可通过减少和/或消除外部通信来节约时间,并且还可节省功率。

附图说明

图1示出了根据本公开的实施方案的用于在卸载操作中使用的错误校验数据的示例性系统的框图。

图2示出了根据本公开的实施方案的用于在卸载操作中使用的错误校验数据的示例性系统的框图。

图3示出了示出根据本公开的实施方案的用于在卸载操作中使用的错误校验数据的另一种示例性方法的流程图。

图4示出了示出根据本公开的实施方案的用于在卸载操作中使用的错误校验数据的另一种示例性方法的流程图。

图5示出了示出根据本公开的实施方案的用于在卸载操作中使用的错误校验数据的另一种示例性方法的流程图。

图6示出了示出根据本公开的实施方案的用于在卸载操作中使用的错误校验数据的另一种示例性方法的流程图。

图7示出了示出根据本公开的实施方案的用于在卸载操作中使用的错误校验数据的另一种示例性方法的流程图。

图8示出了示出根据本公开的实施方案的用于在卸载操作中使用的错误校验数据的另一种示例性方法的流程图。

图9示出了示出根据本公开的实施方案的用于在卸载操作中使用的错误校验数据的另一种示例性方法的流程图。

具体实施方式

存算一体化(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设备不能使用由主机生成的RAS元数据。因此,数据保持不受保护,因为PIM使能存储器设备只是忽略主机错误校验信息。

该问题的一个解决方案是在存储器设备中镜像基于主机的错误保护技术。然而,这可能需要所有PIM使能存储器厂商和所有PIM使能主机厂商同意使用相同的错误保护技术,或者可能需要主机利用由主机采用的专有错误检测技术来专门配置PIM使能存储器设备。通常,主机厂商不希望公开这些专有技术。因此,在PIM使能存储器设备中镜像或精确地复制基于主机的错误检测技术可能不是可行的解决方案。此外,为了使PIM使能存储器设备使用其自己的错误校验方案来跟踪用于在PIM使能存储器设备内执行的操作的RAS元数据,必须使用单独的缓冲器来存储由PIM使能存储器设备生成的RAS元数据,或者必须为从主机接收的数据分配额外的空间,来存储本地生成的RAS元数据。

为了解决这个问题和其它问题,根据本公开的实施方案通过用本地生成的RAS元数据覆盖主机生成的RAS元数据,来利用主机生成的RAS元数据所占用的空间,使得远程执行设备(诸如,PIM使能存储器设备)可以识别和校正设备上的数据错误。在向远程执行设备发送数据之前,主机使用主机生成的RAS元数据来执行错误校验,并且标记所遇到的任何无法校正的错误。在向主机发送数据之前,远程执行设备使用本地生成的RAS元数据来执行错误校验,并且标记所遇到的任何无法校正的错误。

根据本公开的实施方案涉及一种在卸载操作中使用的错误校验数据的方法。该方法包括识别由主机发出的将数据块存储在存储器区域中的请求,其中该数据块包括数据和针对该数据的主机生成的错误校验信息。该方法还包括通过用针对该数据的本地生成的错误校验信息覆盖该主机生成的错误校验信息来更新该数据块。该方法还包括将所更新的数据块存储在该存储器区域中。在一些具体实施中,该方法还可以包括识别该数据块中的主机提供的错误指示符。

在一些具体实施中,存储器区域耦合到处理单元,该处理单元被配置为执行从该主机卸载的操作。在这些具体实施中,该方法还可以包括在将所更新的数据块从该存储器区域读取到该处理单元中时,使用该本地生成的错误校验信息来验证该数据。在这些具体实施中,该方法还可以包括由处理单元生成新数据以及生成针对新数据的错误校验信息。在这种具体实施中,该方法还包括将该新数据存储在新数据块中,并且将针对该新数据的该本地生成的错误校验信息存储在该存储器区域中的新存储器块中,其中标记该新数据块以指示该新数据是从卸载操作生成的。存储器区域和处理单元可以体现在存算一体化设备中。

在一些具体实施中,该方法还包括在将该新数据提供给该主机之前,使用针对该新数据的该本地生成的错误校验信息来验证该新数据。在这些具体实施中,该方法还可以包括当检测到不可恢复的错误时,用错误指示符标记该新数据。

根据本公开的另一实施方案涉及一种用于在卸载操作中使用的错误校验数据的装置,该装置包括:处理单元,该处理单元被配置为执行从主机卸载的操作;存储器区域,该存储器区域耦合到该处理单元;以及逻辑电路,该逻辑电路被配置为:识别由该主机发出的将数据块存储在存储器区域中的请求,其中该数据块包括数据和针对该数据的主机生成的错误校验信息。该逻辑电路还被配置为通过用针对该数据的本地生成的错误校验信息覆盖该主机生成的错误校验信息来更新该数据块。该逻辑电路还被配置为将所更新的数据块存储在该存储器区域中。

在一些具体实施中,该逻辑电路被进一步配置为识别该数据块中的主机提供的错误指示符。在一些具体实施中,该逻辑电路被进一步配置为在将所更新的数据块从该存储器区域读取到该处理单元中时,使用该本地生成的错误校验信息来验证该数据。在一些具体实施中,该逻辑电路被进一步配置为生成针对由该处理单元生成的新数据的错误校验信息,将该新数据存储在新数据块中,并且将针对该新数据的该本地生成的错误校验信息存储在该存储器区域中的新存储器块中,其中标记该新数据块以指示该新数据是从卸载操作生成的。

在一些具体实施中,该逻辑电路被进一步配置为在将该新数据提供给该主机之前,使用针对该新数据的该本地生成的错误校验信息来验证该新数据。在这些具体实施中,该逻辑电路可被进一步配置为当检测到不可恢复的错误时,用错误指示符标记该新数据。在一些具体实施中,该装置是存算一体化(PIM)设备。

根据本公开的另一实施方案涉及一种用于在卸载操作中使用的错误校验数据的系统。该系统包括主机,该主机包括处理器,该处理器被配置为配置远程执行设备以执行从该主机的处理器卸载的操作。主机还被配置为在将从主机存储器读取的数据块复制到该远程执行设备之前,使用存储在该数据块中的主机生成的错误校验信息来对该数据块执行错误校验。主机被进一步配置为发送将该数据块存储在该远程执行设备的存储器区域中的请求。该远程执行设备被配置为识别由主机发出的将数据块存储在存储器区域中的请求,其中该数据块包括数据和针对该数据的主机生成的错误校验信息。该远程执行设备还被配置为通过用针对该数据的本地生成的错误校验信息覆盖该主机生成的错误校验信息来更新该数据块。该远程执行设备还被配置为将所更新的数据块存储在该存储器区域中。

在一些具体实施中,该远程执行设备可被进一步配置为:生成新数据;生成针对该新数据的错误校验信息;以及将该新数据存储在新数据块中,并且将针对该新数据的该本地生成的错误校验信息存储在该存储器区域中的新存储器块中,其中标记该新数据块以指示该新数据是从卸载操作生成的。在一些具体实施中,该远程执行设备可被进一步配置为在将该新数据提供给该主机之前,使用针对该新数据的该本地生成的错误校验信息来验证该新数据。在这些具体实施中,该远程执行设备可被进一步配置为当检测到不可恢复的错误时,用错误指示符标记该新数据。在一些具体实施中,该远程执行设备可以是存算一体化(PIM)设备。

将从图1开始更详细地描述根据本公开的实施方案。图1示出了根据本公开的用于在卸载操作中使用的错误校验数据的示例性系统100的框图。图1的示例性系统100包括主机设备102,该主机设备耦合到远程执行设备104,诸如加速器、协处理器、存算一体化(PIM)单元、或代表主机处理器102作为用于计算内核的卸载执行的目标起作用的其他类型的远程执行设备。主机设备102包括执行指令的至少一个处理器105(例如,中央处理单元(CPU)或图形处理单元(GPU)),这些指令包括向主机存储器区域106读取和写入数据的指令、生成用于由远程执行设备104卸载执行的命令的指令、以及向远程执行设备存储器区域108读取和写入数据的指令。远程执行设备存储器区域108和主机存储器区域106可以体现在同一存储器设备(例如,芯片或模块)中,或可以体现在单独存储器设备中。远程执行单元112耦合到远程执行设备存储器区域108。远程执行单元112包括逻辑部件、ALU、寄存器以及执行由主机设备102卸载的计算内核的其他部件。在一些示例中,当卸载计算内核以供远程执行单元112执行时,内核所利用的数据从主机存储器区域106复制到远程执行设备存储器区域108。在这些示例中,所复制的数据可以重新对齐,以提供卸载的代码的更高效执行。

在一些示例中,远程执行设备104是PIM使能存储器设备,诸如配置有PIM单元作为远程执行单元的存储体。因此,该PIM使能存储体可以体现在与被指定为主机存储器的其它存储体相同的存储器设备中。在其他示例中,远程执行设备104是具有包括远程执行设备存储器区域108的专用存储器的加速器或协处理器,使得远程执行设备存储器区域108和主机存储器区域体现在不同的存储器设备中。在各种示例中,远程执行设备104是″远程″设备,因为用于执行卸载指令(例如,PIM命令)的执行逻辑不是处理器105的部分。例如,远程执行设备104可在与主机设备102相同的芯片上或相同的封装中实现,同时相对于执行局部性保持″远离″处理器105。在一些示例中,系统100的主机设备102和远程执行设备104集成在同一芯片(例如,片上系统(SoC))上。在其他示例中,系统100实现系统级封装(SiP)架构,其中主机设备102及其部件(例如,作为SoC)连同远程执行设备104一起放置在同一半导体封装中的内插器晶片上。

主机处理器102的存储器控制器113接收从所执行指令生成的存储器请求,并且将请求解译为通过存储器通道传输到主机存储器区域106和远程执行设备存储器区域108的存储器命令。分别对应于主机存储器区域106和远程执行设备存储器区域108的存储器接口逻辑116、118接收命令(和相关联的数据),并通过向相应存储器区域读取或写入数据来满足请求。

为了满足RAS目标,当向主机存储器区域106读取和写入数据时,主机设备102可采用错误检测和校正技术。一种这样的技术是为了生成针对写入到存储器的数据的错误检测和校正信息。错误检测和校正信息可以包括纠错码(ECC)、循环冗余校验(CRC)、校验和、奇偶校验信息等。对于图1的示例,假设错误校正和检测代码是ECC。ECC校验位可以作为元数据与写入到主机存储器区域106的数据一起存储。当随后从主机存储器区域106读取数据时,针对检索到的数据生成校验位,以确定校验位是否与和数据一起存储在元数据中的校验位匹配。如果存在失配,则在从存储器设备读取数据时可能发生错误。

考虑图1中描绘的示例,其中主机设备102执行将数据120写入到存储器单元140中的主机存储器区域106(经由存储器控制器113和存储器接口逻辑116)的操作。在发出针对数据120的写入请求之前,主机错误校验模块115应用函数来生成针对数据120的ECC校验位122。作为写入操作的一部分,数据120和ECC校验位122存储在主机存储器区域106中。随后,当从主机存储器区域106读取数据120和ECC校验位122时,错误校验模块115通过应用相同函数以生成针对数据120的新ECC校验位并且将新ECC校验位与所存储的ECC校验位122进行比较,来验证所接收的数据120的完整性。如果存在失配,则可能已发生数据120的读取错误或损坏。在一些情况下,ECC校验位122和ECC函数可用于校正错误。否则,可以将数据标记为已损坏。

继续以上示例,可能需要数据120来执行卸载到远程执行设备104的计算内核。这样,将数据120复制到远程执行设备存储器区域108。作为卸载内核的一部分,从主机存储器区域106读取数据120(以及内核所利用的其它数据),由主机错误校验模块115使用ECC校验位122执行ECC校验,以在将数据120和ECC校验位122写入到远程执行设备存储器区域108之前验证数据120的完整性。然而,在不知道主机设备102所使用的ECC方案的情况下,远程执行设备104无法使用由主机设备102生成的ECC校验位122来执行完整性检查。此外,在不知道主机设备102所使用的ECC方案的情况下,当远程执行设备修改数据120时,远程执行设备104不能正确地更新ECC校验位122,并且主机设备102对具有原始ECC校验位的修改的数据的后续读取将可能导致主机错误校验模块115错误地识别数据读取/损坏错误。因为远程执行设备104不能复制主机设备102的ECC方案以验证数据120或更新主机生成的ECC校验位122,所以该信息不必要地占用数据120的元数据位。

根据本公开的实施方案,当在远程执行单元114和远程执行设备存储器区域108之间读取和写入数据时,远程执行设备104用由远程执行设备错误校验模块130生成的本地生成的ECC校验位132覆盖主机生成的ECC校验位122,并且使用本地生成的ECC校验位132来满足RAS目标。以此方式,远程执行设备104利用由主机生成的ECC校验位122占据的空间,使得不需要额外空间分配来存储用以检测和校正远程执行单元114与远程执行设备存储器区域108之间的读取和写入错误的本地错误检测和校正信息。在一些具体实施中,当数据120从主机存储器区域106复制到远程执行设备存储器区域108时,远程执行设备104用本地生成的ECC校验位132覆盖主机生成的ECC校验位122。当由远程执行单元114从远程执行设备存储器区域108读取数据120时,使用ECC校验位132和本地ECC方案来验证数据120的完整性。当修改数据120时,将所修改的数据120和更新的ECC校验位132写入到远程执行设备存储器区域108。在一些示例中,当数据120被主机设备102从远程执行设备存储器区域108读取或复制到主机存储器区域106时,使用ECC校验位132来验证数据120的完整性。在这些示例中,在检测到任何无法校正的错误的情况下,可以将错误标记到主机设备102,以供主机设备102进行错误处置。在一些具体实施中,数据120可以被标记为含有(或可能含有)远程修改的数据,使得含有ECC信息的位不是用于基于主机的ECC方案的有效ECC位。即,远程执行设备104可向主机设备102指示随数据120包含的ECC校验位不是主机生成的ECC或数据120是远程修改的数据。

为了进一步解释,图2示出了根据本公开的用于在卸载操作中使用的错误校验数据的另一个示例性系统200的框图。在图2的示例中,上文所论述的远程执行设备体现为PIM使能存储器单元204,该PIM使能存储器单元包括耦合到PIM存储器区域208(类似于图1的远程执行设备存储器区域108)的PIM单元210(类似于图1的远程执行单元114)。在一些具体实施中,PIM存储器区域208和主机存储器区域106是同一存储器设备230的单独区域(例如,单独库或库群组),使得主机存储器区域106、PIM存储器区域208和PIM单元210体现在同一芯片、模块或封装中。在其它具体实施中,PIM存储器区域208和主机存储器区域106体现在不同的存储器设备中。

在图2的示例中,PIM单元210包括命令缓冲器212,该命令缓冲器存储从主机设备102卸载的计算指令的内核,以供在PIM使能存储器单元204上远程执行。PIM单元还包括用于执行计算内核中的指令的PIM ALU 216和用于临时保存操作数和那些操作的结果的PIM寄存器文件218。当主机设备102配置PIM使能存储器单元204以执行内核时,主机设备102将内核写入到命令缓冲器212,并且将内核所利用的数据从主机存储器区域106复制到PIM存储器区域208。被复制到PIM存储器区域中的数据可由主机设备102重新对齐,使得在计算内核所使用的地址空间中组织PIM存储器区域中的数据。PIM单元210还包括PIM控制逻辑214,诸如程序计数器、调度器等,以促进计算内核的执行。作为示例而非限制,PIM使能存储器单元204可以配置有内核,以将数据从PIM存储器区域208中的位置加载到PIM寄存器文件218的寄存器r0中,将从主机设备102接收的由主机处理器105计算出的数据加载到PIM寄存器文件218的寄存器r1中。在该示例中,PIM ALU 216将寄存器r1中的值与寄存器r0中的值相加,并且将结果存储在寄存器r0中。来自寄存器r0的结果随后被写回到PIM存储器区域208中的位置。

如上所述,当主机设备102从主机存储器区域106读取数据块260,以复制到PIM存储器区域208时,主机设备102使用数据块260的ECC部分266中的主机生成的ECC校验位268和主机的ECC方案来验证数据块260的数据部分264中的数据262的完整性。如果主机设备102在验证数据262的完整性时识别任何无法校正的错误,则可以在数据块260中设置数据的有害位,以供PIM使能存储器单元204处理。在一些示例中,当将数据块260写入到PIM存储器区域208时,将数据块260标记(例如,在控制信息中)为包括PIM数据。如本文中所用,″PIM数据″是PIM使能存储器单元204用于执行PIM操作的数据。

当数据块260被复制到PIM存储器区域208中时,PIM错误校验模块220使用PIM ECC方案生成针对数据262的PIM ECC校验位274,并且将PIM ECC校验位274写入到数据块260的ECC部分266中。当数据262从PIM存储器区域208被读取到PIM单元210的PIM寄存器文件218中的寄存器中时,PIM错误校验模块220使用PIM ECC校验位274来验证数据262的完整性。当新的或经修改的数据从PIM单元210的PIM寄存器文件218中的寄存器写入到PIM存储器区域208中的数据块260时,PIM错误校验模块220生成更新的PIM ECC校验位274,该校验位被写入到数据块260中。

当主机设备从PIM存储器区域208读取数据块260时,PIM错误校验模块220使用PIMECC校验位274来验证数据262的完整性。如果PIM使能存储器设备204在验证数据262的完整性时识别无法校正的错误,则可在数据块260中设置该数据的有害位,以供主机设备102处理。数据块260被标记为包含PIM数据和/或PIM ECC校验位,使得主机设备102认识到不应当依赖于ECC部分266中的ECC校验位。

为了进一步解释,图3示出了示出根据本公开的用于在卸载操作中使用的错误校验数据的示例性方法的流程图。图3中的示例包括主机302,该主机可以类似于上面参考图1和图2讨论的主机设备102。图3中描绘的主机302可以包括上述存储系统的相同、更少或额外的部件。图3中的示例还包括远程执行设备304,该远程执行设备可以类似于上面参考图1和图2描述的远程执行设备104或PIM使能存储器设备204。图3中描绘的远程执行设备304可以包括上述存储系统的相同、更少或额外的部件。在一些示例中,远程执行设备304包括存储器区域,该存储器区域耦合到被配置为执行从主机卸载的操作的处理单元。在一些具体实施中,远程执行设备304是PIM使能存储器单元,诸如,在存储器设备(诸如,存储器设备230)中体现的PIM使能存储器单元204,如上面参考图2所述。尽管在PIM使能存储器单元的上下文中描述以下示例中的许多示例,但读者应当了解,以下示例还可以在未体现于存储器设备中的加速器或协处理器的上下文中实现。

如上所述,当主机302发起从处理器、计算内核卸载的操作的远程执行时,计算内核所针对的数据被复制到远程执行设备304中。具体地,卸载操作所使用的一个或多个数据块被复制到远程执行设备304的存储器区域中。例如,主机302发出将一个或多个数据块写入耦合到远程处理单元的存储器区域中的请求。在特定示例中,主机302发起PIM计算内核的卸载,包括将一个或多个数据块从主机存储器区域写入到PIM存储器区域的请求。在该示例中,该请求由包括PIM存储器区域的PIM使能存储器单元中的存储器控制逻辑接收。一个或多个数据块包括数据和元数据,并且还可以包括控制位,该控制位包括错误校验信息。例如,错误校验信息可以包括针对数据的多个ECC校验位。

图3中的方法包括识别306由主机发出的将数据块存储在存储器区域中的请求,其中数据块包括数据和针对该数据的主机生成的错误校验信息。在一些示例中,通过以下方式来执行识别306由主机发出的将数据块存储在存储器区域中的请求,其中数据块包括数据和针对该数据的主机生成的错误校验信息:远程执行设备304接收将数据块写入到耦合到处理单元的远程处理设备存储器区域中的请求。在一些具体实施中,主机发起复制操作,其中将数据块从采用基于主机的错误校验技术的主机存储器区域复制到存储器区域。在基于主机的错误校验技术中,主机生成针对数据的错误校验信息,并将该错误校验信息与数据一起存储在数据块中。例如,错误校验信息可以是ECC信息,诸如校验位。在一些示例中,识别306由主机发出的将数据块存储在存储器区域中的请求(其中,数据块包括数据和针对该数据的主机生成的错误检测信息)包括识别可以用本地生成的错误校验信息覆盖主机生成的错误校验信息。可以通过基于请求所指向的存储器区域或基于数据块中的控制信息的推断,来识别可以用本地生成的错误校验信息覆盖主机生成的错误校验信息。

在远程执行设备是PIM使能存储器单元的特定示例中,主机发起复制操作,以将数据块从主机存储器区域复制到PIM存储器区域。PIM使能存储器单元接收将数据块写入PIM存储器区域的请求,并且在写入缓冲器中接收数据块。从主机存储器区域复制的数据块包括主机生成的错误校验信息。在一些示例中,数据块还可以包括指示数据块包括PIM数据的控制信息。

图3中的方法还包括通过用针对数据的本地生成的错误校验信息覆盖主机生成的错误检测信息来更新308数据块。在一些示例中,通过远程执行设备304中的错误校验模块生成针对数据块中的数据的错误校验信息,来执行通过用针对数据的本地生成的错误校验信息覆盖主机生成的错误检测信息来更新308数据块。例如,本地生成的错误检测信息可以是使用与基于主机的ECC方案不同的本地ECC方案编码的ECC校验位。在这些示例中,还通过将本地生成的错误检测信息存储在数据块中由主机生成的错误校验信息占用的位置中,来执行通过用针对数据的本地生成的错误校验信息覆盖主机生成的错误检测信息来更新308数据块。例如,数据块中基于主机的ECC校验位被本地生成的ECC校验位替换。因此,为数据块中的数据创建由远程执行设备使用的错误校验信息,而不为存储器区域中的数据块分配额外的空间,并且不需要单独存储错误校验信息。

在远程执行设备304为PIM使能存储器单元(例如,图2中的PIM使能存储器单元204)的特定示例中,PIM使能存储器单元通过用由PIM使能存储器单元中的错误校验模块生成的错误校验信息覆盖主机生成的错误检测信息来更新数据块,该错误校验模块使用与基于主机的ECC方案不同的基于PIM的ECC方案来生成ECC校验位。例如,当数据块在写入缓冲器中时,PIM使能存储器单元用PIM ECC校验位覆盖主机生成的ECC校验位。在一些示例中,PIM使能存储器单元响应于将数据写入到PIM存储器区域的请求而自动用PIM ECC校验位覆盖主机生成的ECC校验位。在其它示例中,PIM使能存储器单元基于数据块中指示数据块包括PIM数据或者可以覆盖主机生成的ECC校验位的控制信息,用PIM ECC校验位覆盖主机生成的ECC校验位。

图3中的方法还包括将更新的数据块存储310在存储器区域中。在一些示例中,在存储器区域中存储310更新的数据块是通过以下方式来执行的:远程执行设备304在耦合到远程执行设备304中的处理单元的存储器区域中存储本地生成的错误校验信息已经替换主机生成的错误校验信息的数据块。在特定示例中,PIM使能存储器单元将更新的数据块存储在耦合到PIM单元的PIM存储器区域中,更新的数据块包括代替主机生成的ECC校验位的PIMECC校验位。

为了进一步解释,图4示出了示出根据本公开的用于在卸载操作中使用的错误校验数据的示例性方法的流程图。类似于图3中的示例性方法,图4中的方法还包括:识别306由主机发出的将数据块存储在存储器区域中的请求,其中数据块包括数据和针对该数据的主机生成的错误校验信息通过用针对该数据的本地生成的错误校验信息覆盖主机生成的错误检测信息来更新308数据块,并且在存储器区域中存储310更新的数据块。

图4中的方法还包括识别402数据块中的主机提供的错误指示符。如上所述,关于图1和图2中的主机设备,主机302可以从主机存储器区域读取一个或多个数据块,并且在将数据块写入到远程执行设备存储器区域之前对数据块执行错误校验。当主机302在数据块中遇到无法校正的错误时,用错误标记数据块。例如,主机302用有害位标记数据块。在一些示例中,识别402数据块中的主机提供的错误指示符是通过远程执行设备304检测主机302包括的数据块中的标记来执行的。例如,标记可以是有害位。

为了进一步解释,图5示出了示出根据本公开的用于在卸载操作中使用的错误校验数据的示例性方法的流程图。类似于图3中的示例性方法,图5中的方法还包括:识别306由主机发出的将数据块存储在存储器区域中的请求,其中数据块包括数据和针对该数据的主机生成的错误校验信息通过用针对该数据的本地生成的错误校验信息覆盖主机生成的错误检测信息来更新308数据块,并且在存储器区域中存储310更新的数据块。

图5中的方法还包括在将更新的数据块从存储器区域读取到处理单元中时,使用本地生成的错误校验信息来验证502数据。在一些示例中,响应于处理单元执行将数据从远程执行设备存储器区域读取到处理单元的寄存器中的操作,在将更新的数据块从存储器区域读取到处理单元中时执行使用本地生成的错误校验信息来验证502数据。在一些示例中,在将更新的数据块从存储器区域读取到处理单元中时使用本地生成的错误校验信息来验证502数据是通过远程执行设备304中的错误校验模块来执行的,该错误校验模块解码错误校验信息,使用本地错误校验方案生成针对数据块中的数据的错误校验信息,并且将生成的错误校验信息与存储在数据块中的错误校验信息进行比较。例如,远程执行设备304可以使用本地ECC方案来生成针对数据块中的数据的ECC校验位,并且将生成的ECC校验位与数据块中所存储的ECC校验位进行比较。如果遇到错误,则远程执行设备304可以尝试使用错误校验信息来校正错误。

在远程执行设备为PIM使能存储器单元(例如,图2中的PIM使能存储器单元210)的特定示例中,响应于PIM单元遇到从PIM存储器区域加载PIM数据的PIM操作,在将更新的数据块从存储器区域读取到处理单元中时执行使用本地生成的错误校验信息来验证502数据。当PIM单元将数据从数据块读取到PIM寄存器文件中的寄存器中时,PIM错误校验模块生成针对该数据的ECC校验位,并将所生成的ECC校验位与数据块中的ECC校验位进行比较。如果遇到错误,则PIM单元在将数据读取到寄存器中之前尝试校正数据中的错误。如果不能校正错误,则取消加载操作并将数据标记为损坏。

为了进一步解释,图6示出了示出根据本公开的用于在卸载操作中使用的错误校验数据的示例性方法的流程图。类似于图5中的示例性方法,图6中的方法还包括:识别306由主机发出的将数据块存储在存储器区域中的请求,其中数据块包括数据和针对该数据的主机生成的错误校验信息通过用针对数据的本地生成的错误校验信息覆盖主机生成的错误检测信息来更新308数据块,将更新的数据块存储310在存储器区域中,并且在将更新的数据块从存储器区域读取到处理单元中时,使用本地生成的错误校验信息来验证502数据。

图6中的方法还包括由处理单元生成602新数据。在一些示例中,由处理单元生成602新数据是由远程执行设备304中的处理单元执行的,该处理单元从执行由主机302卸载的操作生成数据。在这些示例中,生成新数据可以包括修改更新的数据块中的数据或创建数据。由操作生成的新数据被临时存储在处理单元中的寄存器中。在远程执行设备304是PIM使能存储器单元(例如,图2中的PIM使能存储器单元210)的特定示例中,由处理单元生成602新数据是由PIM处理单元执行的,该PIM处理单元执行从主机302卸载的PIM操作以生成PIM数据。PIM操作修改从PIM存储器区域加载的PIM寄存器中的数据,并将结果存储在该PIM寄存器中或不同的PIM寄存器中。

图6中的方法还包括生成604针对新数据的错误校验信息。在一些示例中,生成604错误校验信息是由远程执行设备304中的错误校验模块执行的,该错误校验模块生成针对新数据的错误校验信息。例如,错误校验模块可以使用ECC方案来生成针对新数据的ECC校验位。在远程执行设备304为PIM使能存储器单元(例如,图2中的PIM使能存储器单元210)的特定示例中,生成604错误校验信息是由PIM错误校验模块执行的,该PIM错误校验模块计算针对由PIM操作产生的PIM数据的新ECC校验位。

图6中的方法还将新数据和针对新数据的本地生成的错误校验信息存储606在存储器区域中的新存储器块中,其中标记新数据块以指示新数据是从卸载操作生成的。在一些示例中,通过以下方式来执行将新数据和针对新数据的本地生成的错误校验信息存储606在存储器区域中的新存储器块中,其中标记新数据块以指示新数据是从卸载操作生成的:远程执行设备304将来自处理单元的寄存器的新数据连同针对新数据的生成的错误校验信息一起写入到耦合到处理单元的存储器区域中的数据块中。例如,新数据块包括从卸载操作生成的新数据和为新数据计算的ECC校验位。可以将新数据块从处理单元中的寄存器写入到存储器区域中与更新数据块相同的地址,从而覆盖更新的数据块,或者可以将新数据块写入到不同的地址。标记新数据块,以指示数据块中的数据是从卸载操作生成的。因此,当随后被主机读取时,主机可以识别新数据块不包括主机生成的错误校验信息。在一些示例中,通过在新数据块中设置控制位来执行标记新数据块,以指示数据块中的数据是从卸载操作生成的。

在远程执行设备304是PIM使能存储器单元(例如,图2中的PIM使能存储器单元210)的特定示例中,通过以下方式来执行将新数据和针对新数据的本地生成的错误校验信息存储606在存储器区域中的新存储器块中,其中标记新数据块以指示新数据是从卸载操作生成的:PIM使能存储器单元将来自PIM寄存器的PIM数据连同PIM ECC校验位一起写入到PIM存储器区域中的新数据块中。例如,通过在新数据块中设置控制位,将新数据块标记为包含PIM数据。

为了进一步解释,图7示出了示出根据本公开的用于在卸载操作中使用的错误校验数据的示例性方法的流程图。类似于图6中的示例性方法,图7中的方法还包括:识别306由主机发出的将数据块存储在存储器区域中的请求,其中数据块包括数据和针对该数据的主机生成的错误校验信息通过用针对数据的本地生成的错误校验信息覆盖主机生成的错误检测信息来更新308数据块,将更新的数据块存储310在存储器区域中,在将更新的数据块从存储器区域读取到处理单元中时使用本地生成的错误校验信息来验证502数据,由处理单元生成602新数据,生成604针对新数据的错误校验信息,并且将新数据和针对新数据的本地生成的错误校验信息存储606在存储器区域中的新存储器块中,其中标记新数据块以指示新数据是从卸载操作生成的。

图7中的方法还包括在将新数据提供给主机之前,使用针对新数据的本地生成的错误校验信息来验证702新数据。在一些示例中,在将新数据提供给主机之前使用针对新数据的本地生成的错误校验信息来验证702新数据是由远程执行设备304中的错误校验模块来执行的,该错误校验模块使用本地错误校验方案生成针对新数据块中的数据的错误校验信息,并且将生成的错误校验信息与存储在新数据块中的错误校验信息进行比较。例如,远程执行设备304生成针对数据块中的数据的ECC校验位,并且将生成的ECC校验位与数据块中所存储的ECC校验位进行比较。如果遇到错误,则远程执行设备304可以尝试使用错误校验信息来校正错误。在一些示例中,响应于完成卸载操作或者响应于读取请求,在将新数据提供到主机之前执行使用针对新数据的本地生成的错误校验信息来验证702新数据。在一些示例中,通过将数据直接从远程执行设备存储器区域复制到主机存储器区域来执行将新数据提供到主机。在其它示例中,通过响应于读取请求而将数据发送到主机,来执行将新数据提供到主机。在一些具体实施中,向主机提供新数据包括提供包括数据、控制信息和本地生成的错误校验信息的整个数据块。在其它具体实施中,向主机提供新数据包括仅提供数据和控制信息。

在远程执行设备为PIM使能存储器单元(例如,图2中的PIM使能存储器单元210)的特定示例中,在将新数据提供到主机之前使用针对新数据的本地生成的错误校验信息来验证702新数据是由PIM错误校验模块来执行的,该PIM错误校验模块生成针对数据的ECC校验位并且将生成的ECC校验位与数据块中的ECC校验位进行比较。如果遇到错误,则PIM单元在将新数据提供到主机提供之前尝试校正数据中的错误。在一些示例中,通过将数据直接从PIM存储器区域复制到主机存储器区域来执行将新数据提供到主机。在其它示例中,通过响应于读取请求而将数据发送到主机,来执行将新数据提供到主机。

为了进一步解释,图8示出了示出根据本公开的用于在卸载操作中使用的错误校验数据的示例性方法的流程图。类似于图7中的示例性方法,图8中的方法还包括:识别306由主机发出的将数据块存储在存储器区域中的请求,其中数据块包括数据和针对该数据的主机生成的错误校验信息通过用本地生成的数据的错误校验信息覆盖主机生成的错误检测信息来更新308数据块,将更新的数据块存储310在存储器区域中,在将更新的数据块从存储器区域读取到处理单元中时使用本地生成的错误校验信息来验证502数据,由处理单元生成602新数据,生成604针对新数据的错误校验信息,将新数据和针对新数据的本地生成的错误校验信息存储606在存储器区域中的新存储器块中,其中标记新数据块以指示新数据是从卸载操作生成的,并且在将新数据提供给主机之前,使用针对新数据的本地生成的错误校验信息来验证702新数据。

图8中的方法还包括当检测到不可恢复的错误时,用错误指示符标记802新数据。如果远程执行设备304不能校正使用本地生成的错误校验信息验证新数据时发现的错误,则该错误可能是无法校正的,从而使得数据块或数据块的一部分被损坏。在一些示例中,当检测到不可恢复的错误时用错误指示符标记802新数据是通过远程执行设备304在数据块中指示数据或数据的一部分被损坏来执行的。例如,可以用有害位来标记新数据块,以指示数据块中的数据被损坏。当主机随后从主机存储器区域读取该数据块时,主机将识别数据被损坏的指示符并且可处理该错误。在远程执行设备是PIM使能存储器单元(例如,图2中的PIM使能存储器单元210)的特定示例中,在检测到不可恢复的错误时用错误指示符标记802新数据是通过PIM使能存储器单元将包含PIM数据的数据块标记为损坏来执行的。

为了进一步解释,图9示出了示出根据本公开的用于在卸载操作中使用的错误校验数据的示例性方法的流程图。类似于图3中的示例性方法,图9中的方法还包括:识别306由主机发出的将数据块存储在存储器区域中的请求,其中数据块包括数据和针对该数据的主机生成的错误校验信息通过用针对数据的本地生成的错误校验信息覆盖主机生成的错误检测信息来更新308数据块,并且在存储器区域中存储310更新的数据块。

图9中的方法还包括配置902远程执行设备,以执行从主机的处理器卸载的操作。在一些示例中,配置902远程执行设备以执行从主机的处理器卸载的操作是通过主机302将计算内核卸载到远程执行设备304来执行的,如上所述。在远程执行设备是PIM使能存储器单元(例如,图2中的PIM使能存储器单元210)的特定示例中,配置902远程执行设备以执行从主机的处理器卸载的操作是通过用PIM命令配置PIM使能存储器设备的PIM单元来执行的。

图9中的方法还包括在将数据块复制到远程执行设备之前,使用存储在数据块中的主机生成的错误校验信息来对从主机存储器读取的数据块执行904错误校验。在一些示例中,在将数据块复制到远程执行设备之前,使用存储在数据块中的主机生成的错误校验信息对从主机存储器读取的数据块执行904错误校验是由错误校验模块执行的,该错误校验模块生成针对数据块中的数据的错误校验信息并且将所生成的针对数据的错误校验信息与存储在数据块中的错误校验信息进行比较。例如,错误校验模块可以使用基于主机的ECC方案对数据生成ECC校验位,并且将所生成的ECC校验位与存储在数据块中的ECC校验位进行比较。如果遇到错误,则PIM单元在将数据块写入远程执行设备存储器区域之前尝试校正数据中的错误。

在一些具体实施中,在将数据块复制到远程执行设备之前,使用存储在数据块中的主机生成的错误校验信息来对从主机存储器读取的数据块执行904错误校验包括:当检测到不可恢复的错误时,用错误指示符标记802数据块。在一些示例中,当检测到不可恢复的错误时用错误指示符标记802数据块是通过主机302在数据块中指示数据或数据的一部分被损坏来执行的。例如,可以用有害位来标记数据块,以指示数据块中的数据被损坏。当远程执行设备304接收到该数据块时,远程执行设备将识别数据被损坏的指示符并且可以处理该错误。

图9中的方法还包括发送906将数据块存储在远程执行设备的存储器区域中的请求。在一些示例中,发送906将数据块存储在远程执行设备的存储器区域中的请求是通过主机302发出针对指向远程执行设备304的存储器区域的数据块的写入请求来执行的。在远程执行设备是PIM使能存储器单元(例如,图2中的PIM使能存储器单元210)的特定示例中,主机302向PIM使能存储器单元发出写入请求,以将数据块存储在PIM存储器区域中。

实施方案可以是系统、装置、方法和/或逻辑电路。本公开中的计算机可读程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据或者以一种或多种编程语言的任何组合编写的源代码或目标代码,编程语言包括诸如Smalltalk、C++等面向对象的编程语言,以及诸如″C″编程语言或类似编程语言的常规过程编程语言。在一些实施方案中,包括例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA)的电子电路可通过利用计算机可读程序指令的状态信息来执行计算机可读程序指令。

本公开的各方面在此参考根据本公开的一些实施方案的方法、装置(系统)和逻辑电路的流程图图示和/或框图进行描述。应当理解,流程图图示和/或框图的每个框以及流程图图示和/或框图中的框的组合可通过逻辑电路来实现。

逻辑电路可在处理器、其他可编程数据处理装置或其他设备中实现,导致在处理器、其他可编程装置或其他设备上执行一系列操作步骤以得到计算机实现的过程,使得在计算机、其他可编程装置或其他设备上执行的指令实现在流程图和/或框图的一个或多个框中指定的功能/动作。

图中的流程图和框图示出了根据本公开的各种实施方案的系统、方法和逻辑电路的可能具体实施的架构、功能和操作。就这一点而言,流程图或框图中的每个框可以表示指令的包括用于实现指定逻辑功能的一个或多个可执行指令的模块、段或部分。在一些另选的具体实施中,框中指出的功能可以不按照图中指出的顺序发生。例如,取决于所涉及的功能,连续示出的两个框实际上可以基本上同时执行,或者这些框有时可以以相反顺序执行。还将注意到,框图和/或流程图图示中的每个框以及框图和/或流程图图示中的框的组合可由执行指定功能或动作或者执行专用硬件和计算机指令的组合的基于专用硬件的系统来实现。

虽然已经参考本公开的实施方案具体地示出和描述了本公开,但是应当理解,在不脱离以下权利要求的精神和范围的情况下,可在其中进行形式和细节上的各种改变。因此,本文所述的实施方案应当被认为仅是描述性意义的,而不是出于限制性目的。本公开不是由详细描述而是由所附权利要求限定的,并且在该范围内的所有差异将被解释为包括在本公开中。

相关技术
  • 产生用于存储器子系统中的数据修改期间的错误检测的错误校验数据
  • 使用声明性配置数据解决云操作中的错误
技术分类

06120116486696