CN116266148A - 用于存储器内计算/邻存储器计算的端到端数据保护 - Google Patents

用于存储器内计算/邻存储器计算的端到端数据保护 Download PDF

Info

Publication number
CN116266148A
CN116266148A CN202211435334.2A CN202211435334A CN116266148A CN 116266148 A CN116266148 A CN 116266148A CN 202211435334 A CN202211435334 A CN 202211435334A CN 116266148 A CN116266148 A CN 116266148A
Authority
CN
China
Prior art keywords
data
residual
memory
ecc
bits
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
CN202211435334.2A
Other languages
English (en)
Inventor
吴微
查理·托库纳加
陈耕和
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of CN116266148A publication Critical patent/CN116266148A/zh
Pending legal-status Critical Current

Links

Images

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/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/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • 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/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods

Abstract

邻存储器计算系统包括多个计算节点,例如用于并行分布式处理的节点。节点包括存储数据的存储器设备和对数据执行计算的计算硬件。纠错码(ECC)逻辑在计算硬件对数据进行计算之前对数据执行ECC。节点还包括残差校验逻辑,以对计算结果执行残差校验。

Description

用于存储器内计算/邻存储器计算的端到端数据保护
技术领域
描述总体上涉及数据保护,更特别地,描述涉及用于邻存储器内计算(computation in near memory)的事务保护。
背景技术
计算机系统中的数据由于瞬时错误而受到损坏。在不同的单元中应用不同的保护机制来解决数据错误。在存储单元中,数据受ECC(纠错码(error correction code))保护。在计算单元中,数据可以通过残差码来保护。存储单元中的ECC码通常是Reed Solomon码的应用,其中,基于校正子(syndrome)的计算可以确定数据中是否存在错误。残差码执行残差操作,以确定数据中是否存在错误。
用于数据存储的ECC码在范围和计算上与残差码完全不同。因此,在存储单元和计算单元之间移动数据传统上需要解码和重新编码,以生成适当的校验位。当计算单元和存储单元具有明确的界限时,这两个类型的数据保护的应用影响有限。然而,对于将存储和计算集成在一起的邻存储器计算(CNM)或存储器内计算(CIM)系统,对存储器单元和计算单元应用数据保护会对性能产生负面影响,增大到关键路径的延迟,并且浪费功率。
附图说明
以下描述包括对附图的讨论,这些附图具有以实现方式的示例的方式给出的说明。附图应以示例的方式理解而非以限制的方式理解。如本文中所用的,对一个或多个示例的引用将被理解为描述包括在本发明的至少一个实现方式中的特定特征、结构或特性。本文中出现的诸如“在一个示例中”或“在替代示例中”之类的短语提供本发明的实现方式的示例,并且不一定都指代相同的实现方式。然而,它们也不一定是相互排斥的。
图1是具有ECC和残差校验的邻存储器计算系统的示例的框图。
图2是用于邻存储器计算系统的端到端保护的示例的框图。
图3A是用于具有端到端数据保护的CNM核心中的矩阵-矩阵计算的计算架构的示例的框图。
图3B是用于具有端到端数据保护的CNM核心中的矩阵-向量计算的计算架构的示例的框图。
图4A是用于保护位的一维布置的示例的框图。
图4B是用于保护位的二维布置的示例的框图。
图4C是具有用于保护位的二维布置的数据保护的示例的框图。
图5A是残差算术逻辑的示例的框图。
图5B是示出图5A的残差算法的示例的表。
图6A是对具有一个位故障的数据的残差校验和奇偶校验的示例的框图。
图6B是对在奇偶位中具有一个位故障的数据进行残差校验和奇偶校验的示例的框图。
图7A是对具有两个位故障的数据的残差校验和奇偶校验的示例的框图。
图7B是对具有两个位故障的数据的残差校验和奇偶校验的示例的框图,该故障避开了奇偶错误检测。
图8是用于在邻存储器计算系统中执行残差校验的过程的示例的流程图。
图9是用于在邻存储器计算系统中执行2D奇偶和残差校验的过程的示例的流程图。
图10是具有处理器和具有残差和奇偶校验的存储器内计算或邻存储器计算电路的系统的示例的框图。
图11是计算系统的示例的框图,在该计算系统中可以实现具有残差和奇偶校验的存储器内计算或邻存储器计算电路。
图12是多节点网络的示例的框图,在该多节点网络中可以实现具有残差和奇偶校验的存储器内计算或邻存储器计算电路。
以下是对特定细节和实现方式的描述,包括对附图的非限制性描述,其可以描绘一些或所有示例以及其他可能的实现方式。
具体实施方式
如本文中所述,邻存储器计算系统包括多个计算节点。在一个示例中,计算节点是用于并行分布式处理的节点。节点包括用于存储数据的存储器设备和用于对数据执行计算的计算硬件。系统可以包括端到端保护,从而为存储在存储器中的数据提供保护、以及为计算数据提供保护。因此,可以确保沿着从邻存储器到计算单元再回到邻存储器的整个路径的数据完整性。纠错码(ECC)逻辑在计算硬件对数据进行计算之前对数据执行ECC。节点还包括残差校验逻辑,以对计算结果执行残差校验。
在一个示例中,系统包括结合二维(2D,two-dimensional)奇偶和残差码的2D码。2D码能够校正存储设备中的单位(single bit)错误以及检测双位错误。此外,该码检测计算单元中的单位错误和一些多位错误。使用这样的码为邻存储器计算提供端到端数据保护可以确保数据完整性,并且对沿着关键路径的功率使用或延迟影响很低或影响极小。
验证存储在存储器中的数据是基于数据存在相对较长时间段的假设的。使用残差校验来验证计算是基于数据简单地穿过计算单元移动的假设的。当数据被重复读取、计算/利用计算改变、存储、然后再次读取以进行更多计算时,这两种假设都不是很准确。端到端保护为存储的数据和计算提供保护。
邻存储器内计算通常是指存储器和计算资源的层次结构。邻存储器是指靠近计算资源的存储器,而远存储器远离计算资源。与计算单元“靠近”或“远离”的存储器单元或存储器资源基于来自计算单元的访问延迟而是相对的。对邻存储器计算(CNM,compute nearmemory)的引用是指以下硬件设备:其具有计算资源和存储器资源,允许计算单元访问数据的访问时间在几个时钟周期以内。
将理解的是,通用计算单元(例如,CPU(中央处理单元(central processingunit))或GPU(图形处理单元(graphics processing unit)))具有与计算位于同一位置的缓存或其他存储器资源,以向计算核心提供数据。在这样的架构中,处理核心是主要单元,而缓存对处理进行支持。因此,这样的架构具有大型通用处理单元和小型支持存储单元。CNM通常是指具有与存储器位于同一位置的小型、快速、专用计算单元的存储器。这样的系统通常作为加速器来存储数据,以用于重复的、专门的计算,例如MAC(乘法累加(multiply-accumulate))操作。CNM可以替代地称为CIM(存储器内计算(compute in memory)),指的是其中包括专用计算硬件的存储器设备。
CIM和CNM有时可以互换使用。在某些情况下,CNM可以被认为包括与具有计算硬件的特定存储器设备不同的存储器/计算架构。CNM可以在存储器层次结构中包含具有计算硬件的这种存储器,以及包含用专用计算硬件和存储器层次结构构建的其他计算系统。任何一种架构都能够加速专门的存储器密集型计算。在任何一种情况下,数据都可以在计算单元和存储器单元之间快速传递,并且以低功率实现不消耗系统存储器带宽的迭代计算。出于示例的目的,本文中的描述通常将参考CNM。
图1是具有ECC和残差校验的邻存储器计算系统的示例的框图。系统100提供系统的组件的示例,这些系统的组件可以实现具有端到端数据保护的邻存储器计算。系统100包括公共节点110和CNM阵列,该CNM阵列通过所示的两个CNM单元或CNM节点来表示。
在一个示例中,公共节点110包括远存储器112,该远存储器是具有比邻存储器长的访问时间的存储器资源。邻存储器与将执行计算的硬件位于同一位置。通常,远存储器112比邻存储器大。远存储器112可以存储来自多个CNM节点的数据。
在一个示例中,远存储器112是SRAM(同步随机存取存储器(synchronous randomaccess memory))设备。在一个示例中,每个邻存储器122是SRAM设备。在一个示例中,邻存储器122是存储器设备的寄存器堆。在一个示例中,每个邻存储器122是DRAM(动态随机存取存储器(dynamic random access memory))设备。
在一个示例中,公共节点110包括控制电路和各种杂项算术逻辑,或矩阵运算逻辑,或算术和矩阵逻辑的组合。逻辑可以实现为独立硬件、或者处理器或可编程逻辑阵列的一部分。控制器114表示逻辑和控制电路。控制器114可以包括到CNM阵列的CIM或CNM硬件的接口。
CNM OUT 116表示提供来自远存储器112的控制(CTRL,control)和数据(X)的接口。来自远存储器112的数据X表示用于待通过CNM阵列执行的计算的操作数中的一个。CNMIN 118表示用于从CNM阵列接收数据(Y)的接口。数据Y表示计算结果。该数据可以存储在远存储器112中。
公共节点110包括相对大的存储器设备作为用于存储X和Y的远存储器112。邻存储器122比远存储器112小。控制器114可以是或包括用于数据通信和访问存储器的一个或多个控制块,以及实现深度神经网络(DNN,deep neural network)机器学习所需的各种算术运算。取决于目标工作负载,公共节点算术运算可以包括但不限于逐元素算术运算、归约(reduction)、池化、非线性运算、矩阵转置、数据整形、压缩、或这些的组合,或其他操作。
CNM阵列包括多个CNM单元或CNM核心,标识为CNM 120。系统100示出CNM 120内的数据的端到端保护,并且未提供关于计算单元的细节。在一个示例中,计算是利用MAC单元的矩阵计算。
CNM 120包括作为邻存储器的存储器122。在系统100的配置中,系统将值分布到CNM 120的CNM核心处的邻存储器122。存储器122可以存储数据并且存储通过计算单元124对数据的中间计算。CNM 120可以包括通过计算单元124表示的一个或多个计算阶段。在一个示例中,计算单元124是或包括至少一个ALU(算术逻辑单元(arithmetic logic unit))。在一个示例中,计算单元124是或包括至少一个MAC单元。
在一个示例中,CNM 120包括ECC解码和校正(CORR)132,以在读取来自存储器122的用于计算的数据时对该数据进行校验和校正。在一个示例中,CNM 120包括残差编码136,以生成对数据的残差校验。在对数据进行计算之后,残差校验138校验通过计算单元124的数据的完整性。将理解的是,通过知道将要执行的计算并且知道数据的初始值,残差校验138可以基于由残差编码136生成的残差校验值而执行算法,以确定计算中是否发生错误。下面关于图5B提供更多细节。
ECC的典型实现方式具有作为位字段或一组校正子计算的结果,其中,位字段中的每个位对应于输入码字。残差保护的典型实现方式具有作为值或数字的结果。在一个示例中,残差计算是取模运算,例如模(mod)3或模7运算。由残差逻辑编码的值或数字是除以N的残差或余数,其中,N是取模运算符。
在一个示例中,CNM 120包括ECC编码134,以在将计算结果写回到存储器122之前对其进行编码。通常,存储器122将存储由ECC编码计算产生的ECC校验位。ECC解码和校正132可以基于ECC位将读取的数据解码为码字,并且在检测到错误时执行位校正。
系统100表示特定的ECC解码和残差编码以及特定的残差校验和ECC编码。将理解的是,如果作为分离的操作来执行,将会有端到端的保护,但是预期会有对数据路径的性能影响。操作的分离将数据处理流程划分成两个域:具有存储器122和ECC解码和编码的面向存储的域、以及具有计算单元124和残差编码和校验的面向计算的域。在一个示例中,例如在系统200的示例中,可以组合残差和ECC操作,而不是分离地执行这些操作。
虽然分开示出,但是在一个示例中,ECC解码和校正132以及ECC编码134可以是同一ECC逻辑的一部分。ECC编码134可以编码ECC位,以针对计算单元124的计算结果进行存储。ECC解码和校正132可以基于存储的ECC校验位对读取的数据执行ECC。
CNM 120可以表示并行分布式处理节点。在一个示例中,一个CNM节点可以将计算结果传递给另一个并行分布式处理节点。因此,一个节点处的计算结果可以作为由另一个并行节点进行的计算的输入。在一个示例中,CNM 120可以存储计算结果而不将该结果传递给另一节点。在一个示例中,CNM 120可以存储计算结果并且将该结果传递或转发到另一节点。在一个示例中,CNM 120可以将计算结果转发到另一节点而不存储该结果。
CNM是指邻存储器计算资源,其中,计算单元集成在存储器旁边或非常靠近存储器。位于存储器附近的计算单元提供细粒度的分布式计算和存储器阵列。虽然对存储器的典型访问会发送命令并且在执行所有计算的处理核心处等待数据结果,但是利用CNM架构可以直接在存储器处进行某些计算,从而减少需要从存储器传输到处理器的数据量。相比之下,存储器本身具有可以返回计算结果的计算资源,而不是仅有用于计算的数据。
邻存储器122包括存储器单元或位单元的阵列。在一个示例中,阵列基于动态随机存取存储器(DRAM,dynamic random access memory)技术。在一个示例中,阵列基于基于电阻的随机存取存储器(RAM,random access memory)单元,例如电阻RAM(ReRAM,resistive-RAM)、磁阻RAM(MRAM,magnetoresistive RAM)、铁电RAM(FeRAM,ferroelectric RAM)、电介质RAM或其他存储器、三维交叉点(3DXP,three dimensional crosspoint)基于相变的RAM、或其他字节可寻址随机存取存储器技术。在一个示例中,远存储器112基于SRAM。在一个示例中,远存储器112基于上述其他技术中的一者。
图2是用于邻存储器计算系统的端到端保护的示例的框图。系统200表示根据系统100的示例的CNM节点。系统200表示用于邻存储器计算的数据保护,其中,数据保护操作将ECC保护位和残差校验位合并到保护码中。
在一个示例中,系统200表示并行分布式处理系统的计算节点,例如系统100的示例。在一个示例中,系统200表示顺序处理系统的计算节点。在并行分布式处理系统中,数据并行分布到多个CNM计算节点,用于进行并行计算。在顺序处理系统中,CNM计算节点接收数据并且按顺序对不同的数据字或数据块(chunk)执行计算。
在一个示例中,校验码包括两个校验位向量。残差位与奇偶位相结合,为数据提供两层保护,一层用于存储器中的静止数据,另一层用于计算数据。
在一个示例中,系统200包括块210,以计算ECC、预先计算残差(残差编码或RESENC)、以及将残差码位附加到ECC码。通过预先计算残差并且将其存储在存储器220中,在其被从存储器中取出时,系统200不需要再次计算,因为其已经被计算和存储。
在一个示例中,ECC码可以是简单的奇偶校验而不是汉明码。对ECC使用奇偶校验而不是汉明码可以实现端到端保护的“轻量级”编码。通过将ECC校验位和残差码或残差校验位组合成一个代码,系统200可以针对ECC解码和校正逻辑以及残差编码执行组合数据保护。
在一个示例中,当从外部系统200(例如,从公共控制节点)接收数据时,块210执行完全编码,例如利用汉明码来执行。在完全编码之后,当数据存储在存储器220中时,系统200可以执行具有轻量级奇偶校验的ECC。
因此,块230可以执行轻量级ECC解码和残差编码。响应于在来自存储器220的数据中检测到错误,块230可以执行纠错(CORR)。在对数据保护码进行解码之后,计算单元240可以执行数据计算。在计算单元240进行计算之后,残差校验250可以执行残差校验,以确保正确地执行了计算。残差校验250可以将计算的结果传递给编码器(ENC)260,该编码器对结果执行轻量级编码,以存储回存储器220。
图3A是用于具有端到端数据保护的CNM核心中的矩阵-矩阵计算的计算架构的示例的框图。系统302示出了完全分布式结构,其中,系统将数据的不同部分提供给不同的计算单元。在一个示例中,从存储器310的读取提供用于数据保护316的数据,该数据保护代表系统302的ECC和残差计算。系统302包括N个计算单元,这些计算单元被表示为乘法器312[1:N],统称为乘法器312。虽然示出为乘法器,但应理解的是,任何计算单元均可以在系统302的架构内使用。
各个乘法器312接收数据输入A[1:N]和B[1:N]作为操作数。乘法器312通过它们的计算分别生成结果C[1:N]。因此,乘法器312[1]接收数据A1和数据B1、执行计算、并输出结果C1,乘法器312[2]接收数据A2和数据B2、执行计算、并输出结果C2,以此类推。
系统302呈现了单个累加器314,该累加器累加乘法器312的部分结果。系统302可以替代地具有单独的中间结果累加器。累加器314表示用于接收部分结果和对部分结果进行求和的逻辑。累加器314将输出提供给数据保护318,该数据保护可以表示用于将结果存储回存储器310中的残差校验和ECC校验位计算。
图3B是用于具有端到端数据保护的CNM核心中的矩阵-向量计算的计算架构的示例的框图。系统304示出了部分共享的结构,其中,系统将共享数据元素提供给不同的计算单元。在一个示例中,从存储器320的读取提供用于数据保护326的数据,该数据保护表示系统304的ECC和残差计算。系统304包括N个计算单元,这些计算单元被表示为乘法器322[1:N],统称为乘法器322。虽然示出为乘法器,但应理解的是,任何计算单元均可以在系统304的架构内使用。
各个乘法器322接收数据输入D[1:N]作为一个操作数,并且所有乘法器322接收数据输入K作为另一操作数。乘法器322通过它们的计算分别生成结果X[1:N]。因此,乘法器322[1]接收数据D1和K、执行计算、并输出结果X1,乘法器322[2]接收数据D2和K、执行计算、并输出结果X2,以此类推。
系统304呈现了累加器324[1:N](统称为累加器324),以累加各个乘法器322[1:N]的部分结果。系统304可以替代地具有单个共享乘法器。累加器324表示用于从单独的乘法器322接收部分结果和对部分结果进行求和的逻辑。累加器324将输出提供给数据保护328,该数据保护可以表示用于将结果存储回存储器320中的残差校验和ECC校验位计算。
图4A是用于保护位的一维布置的示例的框图。数据402表示根据系统100或系统200的系统的组合ECC和残差码的位布置。
数据块410表示M位数据块,其伴随有R位残差码412。数据402可以包括多个数据块410,这些数据块可以通过奇偶块420(P(D))保护。奇偶块420包括用于奇偶数据的残差码的R位残差码422,表示为P(R)。
对于数据402,通过奇偶块420的对应数据位计算数据块410的按每个位位置的奇偶。残差是按每个数据块410计算的,其中,相应的残差码412是伴随特定数据块的代码。奇偶块420的残差码位是残差奇偶422,该残差奇偶可以提供残差码的奇偶校验。
图4B是用于保护位的二维布置的示例的框图。数据404表示根据系统100或系统200的系统的组合ECC和残差码的位布置。为了清楚起见,数据404被布置为二维码。数据404可以是与数据402相同的数据。
数据块430表示M位数据块,其伴随有R位残差码432。数据404可以包括多个数据块430,这些数据块可以通过奇偶块440(P(D))保护。奇偶块440包括用于奇偶数据的残差码的R位残差码442,表示为P(R)。
对于数据404,x维是数据和残差。y维是奇偶。对于如何在y维度上针对包括残差码432的数据块430的每个位位置将奇偶计算到奇偶块440的对应位及其残差奇偶位442,数据404提供了可视化理解。每个残差码432在x维度对相应数据块430提供保护。
图4C是具有用于保护位的二维布置的数据保护示例的框图。数据406是数据位、ECC或奇偶位、以及残差位或残差校验值的作为二维阵列的二维位布置。二维阵列可以是存储在邻存储器中的数据。数据406可以是数据402或数据404的示例。
数据406可以具有数据位和相关联的残差校验值的多个行、以及具有奇偶位的行,该具有奇偶位的行包括残差校验值和奇偶位。行452、行454、行456和行458表示数据和其相关联的残差位的行。数据406具体示出了具有16位数据(DATA[15:0])的示例,其中,mod 3残差值具有位R1和R0。16位的具体长度仅是一个示例,任何长度的数据字都可行。类似地,2位残差值是一个示例,3位(模7)或其他残差值都可行。
数据406示出行460,行460具有奇偶位或ECC位(DATA(P)[15:0])、以及残差奇偶位RES(P)[1:0]。行460包括奇偶位,每个位位置用于指示由数据位的行的对应位位置组成的列的奇偶。例如,位位置12包括所有行452、454、456、...、458的DATA[12]。行460中的值DATA(P)[12]指示所有行的位置DATA[12]中的数据位的奇偶。
通过数据406表示的2D码可以校正任何的1b(单位(single-bit))错误并且检测所有的2b(双位)错误。因此,数据406提供了SECDED(单错误校正双错误检测)保护。简单的示例可以说明。
首先考虑行452中的单位(DATA[12])故障(翻转位)作为数据406中被识别为故障472的唯一错误。当计算奇偶462时,奇偶计算将不匹配,从而导致奇偶错误。此外,翻转位将导致作为行452的残差错误的错误466。奇偶错误和残差错误可以具体识别行452中的错误,从而允许ECC校正将行452的DATA[12]翻转。
现在考虑在行452中具有翻转位DATA[12](故障472)、并在行456中具有翻转位DATA[3](故障474)的双位故障。当计算奇偶462时,奇偶计算将不匹配,从而导致位位置12的奇偶错误。此外,翻转位将导致作为行452的残差错误的错误466。行456的DATA[3]中的翻转位将在计算奇偶时导致位位置3中的错误464。此外,第二个翻转位将导致作为行456的残差错误的错误468。在一个示例中,奇偶错误和残差错误的组合可以具体识别两行中的错误,从而允许ECC校正翻转适当的数据位。
现在考虑具有故障472以及在行456的DATA[12]处的翻转位(故障476)的双位故障。当计算奇偶462时,因为位位置12有两个错误,因而奇偶计算将匹配,使得没有奇偶错误。尽管奇偶错误不会检测到故障,但是故障472将导致作为行452的残差错误的错误466,并且故障476将导致作为行456的残差错误的错误468。即使错误校验将记录不到奇偶错误,校正也可以检测到两个数据块有位错误。因此,系统可以检测到两位错误,即使系统不能具体识别这些错误以能够校正它们。
图5A是残差算术逻辑的示例的框图。逻辑500表示残差计算逻辑。逻辑500表示逻辑的总体布局,而未指定位值。出于示例的目的,逻辑500在下文中参考特定位值进行描述。
考虑具有对应残差码512的数据块510。数据A具有残差码RA,数据B具有残差码RB。作为一个示例,数据块510可以是具有2位残差码的16位数据值,其中,残差编码是除以3的逻辑,结果是等于00、01或10的2位。如果结果等于或大于3,则其将被除以3并减少为两位。
逻辑500包括由加法(ADD)520表示的算术逻辑。替代地,算术逻辑可以是乘法器。在一个示例中,逻辑500包括由ADD 522表示的附加的残差算术逻辑单元。取决于将对数据A和数据B进行操作的算术逻辑单元,残差算术逻辑单元可以是加法器或乘法器。
在逻辑500中,ADD 520的输出是作为数据块530的数据C。ADD 522的输出是残差码532或残差码RC。在一个示例中,残差运算在数据算术逻辑单元下是封闭的。因此,即使存在多个计算单元,残差位也可以与数据一起传递。在一个示例中,最后执行残差校验。
图5B是示出图5A的残差算法的示例的表。表540示出了用于加法运算的行542和用于乘积(乘法)运算的行544。在行542中,数据运算是C=A+B,这是简单的加法运算。在一个示例中,对应的残差运算是RC=RA+RB=A%3+B%3,即残差是A mod 3加上B mod 3的总和。残差校验是RC==C%3或者C mod 3,其对RA+RB的结果进行校验。
在行544中,数据运算是C=A*B,这是简单的乘法运算。在一个示例中,对应的残差运算是RC=RA*RB=A%3*B%3,即残差是A mod 3乘以B mod 3的乘积。残差校验是RC==C%3或者C mod 3,其对RA*RB的结果进行校验。
图6A是对具有一位失败的数据的残差校验和奇偶校验的示例的框图。数据602表示对与残差校验值结合的数据块的行的数据保护。数据块612、数据块614和数据块616通过奇偶块618保护。考虑数据块612的数据部分中的故障,如由“X”所示。这种情况将得到奇偶校验1b失败和指示1个坏数据块(数据块612)的残差校验。奇偶校验示出1位不匹配,残差校验提供位置信息。
数据块622、数据块624和数据块626通过奇偶块628保护。考虑数据块624的残差部分中的故障,如由“X”所示。这种情况将得到奇偶校验1b失败和指示1个坏数据块(数据块624)的残差校验。奇偶校验示出1位不匹配,残差校验提供位置信息。
图6B是对奇偶位中具有一位故障的数据的残差校验和奇偶校验的示例的框图。数据604表示对与残差校验值结合的数据块的行的数据保护。数据块632、数据块634和数据块636通过奇偶块638保护。考虑对应于数据位的奇偶块638中的故障,如由“X”所示。因为奇偶块不参与计算,所以这种情况将得到奇偶校验1b失败和指示0个坏数据块的残差校验。
数据块642、数据块644和数据块646通过奇偶块648保护。考虑奇偶块648的残差部分中的故障,如由“X”所示。因为奇偶块不参与计算,所以这种情况将得到奇偶校验1b失败和指示0个坏数据块的残差校验。
图7A是对具有两位故障的数据的残差校验和奇偶校验的示例的框图。数据702代表对与残差校验值相结合的数据块的行的数据保护。对于数据702,系统将检测2位故障,并且基于残差校验确定故障位置会产生不同的结果。
数据块712、数据块714和数据块716通过奇偶块718保护。考虑数据块712的数据部分和数据块714的残差部分中的故障,如由标记所示。这种情况将得到奇偶校验2b失败和指示2个坏数据块的残差校验。
数据块722、数据块724和数据块726通过奇偶块728保护。考虑数据块722的数据部分中的两个故障,如由标记所示。这种情况将得到奇偶校验2b失败和指示1个坏数据块(数据块722)的残差校验。
数据块732、数据块734和数据块736通过奇偶块738保护。考虑数据块732的数据部分和奇偶块738的数据部分中的故障,如由标记所示。因为奇偶块738将不会记录为残差故障,所以这种情况将得到奇偶校验2b失败和指示1个坏数据块(数据块732)的残差校验。
数据块742、数据块744和数据块746通过奇偶块748保护。考虑奇偶块748的数据部分中的两个故障,如由标记所示。因为奇偶块748中的位错误不会记录残差故障,所以这种情况将得到奇偶校验2b失败和指示0个坏数据块的残差校验。
图7B是对具有两位故障的数据的残差校验和奇偶校验的示例的框图,该故障避开了奇偶错误检测。数据704表示对与残差校验值组合的数据块的行的数据保护。对于数据704,系统将不会检测位故障,但是可以检测残差错误。
数据块752、数据块754和数据块756通过奇偶块758保护。考虑数据块752的数据部分和数据块754的数据部分中的故障,如由标记所示。如虚线所示,当错误位于相同位位置时,相同位位置中的偶数个错误不会改变奇偶计算。这种情况将得到0b失败的奇偶校验和指示2个坏数据块的残差校验。因此,系统可以检测到2位错误。
数据块762、数据块764和数据块766通过奇偶块768保护。考虑数据块762的数据部分和奇偶块768的数据部分中的故障,如由标记所示。如虚线所示,当错误位于相同位位置时,奇偶块中的翻转位将翻转奇偶校验,从而防止检测到列中的单位错误。这种情况将得到0b失败的奇偶校验和指示1个坏数据块的残差校验。因此,系统可以检测到2位错误。
图8是用于在邻存储器计算系统中执行残差校验的过程的示例的流程图。过程800表示用于执行残差校验和处理检测到的任何不匹配的过程。
在一个示例中,在802处,CNM系统对数据块的数据和残差码二者执行算术运算,例如加法、或乘法、或加法和乘法二者。在一个示例中,在804处,系统确定残差校验计算是否通过。如果残差校验计算没有通过、即806处的否分支,则系统可以确定残差校验是否失败了阈值次数。
检测到的故障可能由软错误引起,其中,再次执行计算经常可以解决问题。然而,如果错误在阈值次数(例如,3次)后仍然存在,则其可能指示更严重的错误,例如卡位故障。因此,在一个示例中,如果已达到失败阈值、即808处的是分支,则在812处,系统将报告不可校正的错误。如果未达到失败阈值、即808处的否分支,则在810处,系统可以重新进行计算。在重新进行计算之后,系统可以再次在804处确定残差校验计算是否通过。
在一个示例中,如果残差校验计算通过、即806处的是分支,则系统确定是否存在更多要执行的计算。如果存在更多要执行的计算、即814处的是分支,则在816处,系统用更多计算继续进行计算。在一个示例中,如果不存在更多要执行的计算、即814处的否分支,则在818处,存储单元生成奇偶计算并且将数据和奇偶写回存储器。
图9是用于在邻存储器计算系统中执行2D奇偶和残差校验的过程的示例的流程图。过程900表示用于执行2D奇偶和残差校验的过程。
在一个示例中,在902处,系统校验奇偶并且确定是否存在奇偶错误。如果不存在奇偶错误、即904处的否分支,则在906处,系统校验残差。在一个示例中,如果存在奇偶错误、即904处的是分支,则系统可以确定该错误是否为多位错误。
在一个示例中,如果该错误是多位错误、即908处的是分支,则在910处,系统报告不可校正的错误。如果错误不是多位错误、即908处的否分支,则在912处,系统可以校验残差,以识别坏数据块。在一个示例中,如果检测到多个残差错误、即914处的是分支,则系统在910处报告不可校正的错误。
在一个示例中,如果没有检测到多个残差错误、即914处的否分支,则意味着仅存在单个残差错误或没有残差错误,则在916处,系统可以执行错误的校正。检测到的错误可以基于残差错误检测来识别。
在一个示例中,如果错误是不可校正的、即918处的否分支,则系统在910处报告不可校正错误。在一个示例中,如果错误是可校正的、即918的是分支,则在920处,系统继续到计算单元。在906处校验残差之后,系统可以在920处继续到计算单元。在一个示例中,继续计算可以包括将计算结果发送到并行分布式处理节点。奇偶校验和残差校验可以分开执行,也可以同时执行。在过程900中,它们按顺序示出,但是它们可以并行执行。
图10是具有处理器和具有残差和奇偶校验的存储器内计算或邻存储器计算电路的系统的示例的框图。根据以上任何示例,系统1000可以包括具有端到端数据保护的CNM电路。CNM电路可以是用于机器学习或其他计算密集型操作的CNM加速器。加速器可以称为协处理器或加速器硬件或加速器引擎。
系统1000包括处理器1010,该处理器可以是或包括通用CPU(中央处理单元(central processing unit))、GPU(图形处理单元(graphics processing unit))、DSP(数字信号处理器(digital signal processor)阵列、或其他处理器。处理器1010表示数字处理器并且可以被称为主处理器。在一个示例中,处理器1010包括多个核心1012。处理器1010执行访问数据以进行计算密集型操作的应用或软件程序。
在一个示例中,处理器1010包括第一级缓存1014,该第一级缓存表示位于为热数据提供实体上接近的存储资源的处理器管芯或处理器SOC(片上系统(system on a chip))内的缓存资源。在一个示例中,处理器1010包括未明确示出的多级片上/本地缓存。将理解的是,缓存资源可以是特定核心1012本地的、由多个核心1012共享的、或者共享缓存资源和本地化缓存资源的组合。
系统1000包括最后一级缓存1020。在一个示例中,最后一级缓存1020也在处理器1010上。在一个示例中,最后一级缓存1020在处理器1010的片外。最后一级缓存1020大于第一级缓存1014,但是访问时间较长。在第一级缓存1014和最后一级缓存1020之间可以存在任意数量的其他缓存层。
主存储器1050表示系统主存储器。主存储器1050通常比缓存资源大几个数量级,但是相对于缓存资源需要更长的访问时间。主存储器1050可以包括在电力中断时具有不确定状态的易失性存储器资源。主存储器1050可以包括即使在存储器的电力中断时也能保持状态的非易失性存储器资源。缓存资源通常是易失性的,但是可以包括非易失性存储器资源。
系统1000包括用于核心1012的指令执行管线的描述。在一个示例中,每个核心1012可以包括多个执行管线(例如,多线程)。指令管线应理解为一般解释,未提供具体细节。在一个示例中,指令管线包括指令提取1062,其中,核心提取要执行的指令。指令解码1064表示核心对指令的解码,以准备处理器电路以进行执行。在一个示例中,指令解码1064识别作为触发对CNM电路的使用以进行操作的命令的一部分的指令。
操作数提取1066表示提取或获取要针对指令执行的操作数。在一个示例中,操作数是神经网络的权重向量、或其他数学函数操作数。在一个示例中,操作数位于或放置在与执行管线相关联的寄存器空间中。执行1068表示在操作数上或与操作数一起执行指令。在一个示例中,执行可以包括将操作发送到CNM电路以进行执行。在一个示例中,指令被发送到处理器ALU(算术逻辑单元(arithmetic logic unit)),该处理器ALU可以触发CNM加速器的执行。回写1070是指将执行结果写入结果寄存器以返回到存储器,或用于传递到另一个寄存器以进行另一执行。在使用CNM电路的情况下,执行1068和写回1070可以包括将操作发送到CNM电路,该CNM电路将执行操作并且返回功能输出,然后可以将其写回。执行可以包括根据本文中描述的任何示例配置CNM电路。因此,传统上需要将操作数加载到处理器1010内的ALU或其他计算引擎中的指令可以被发送到CNM电路而不必须从存储器读取,然后从CNM电路而不是从本地计算引擎接收计算结果。
CNM1030表示在最后一级缓存1020中实现的CNM电路。CNM 1030可以是最后一级缓存1020的全部或部分。在一个示例中,最后一级缓存1020包括被配置为CNM电路的存储器阵列、以及不包括CNM电路的存储器阵列。系统可以选择性地将数据存储在启用CNM的存储器阵列中,以进行CNM加速。
CNM 1040表示与系统1000的缓存架构分离的CNM电路。因此,CNM 1040表示专用于执行CNM加速操作的存储器资源。这样的CNM存储器仍然可以包括传统的访问硬件,以在不执行计算的情况下实现从存储器读取。CNM 1030和CNM 1040包括CNM硬件,以实现根据本文中描述的任何示例的功能读取。
CNM 1030和CNM 1040包括来自处理器1010的访问路径。当缓存架构的一部分作为CNM 1030时,互连硬件可以与用于缓存设备的互连硬件相同。当不是作为CNM 1040的缓存架构的一部分时,CNM互连可以与缓存设备、或主存储器设备、或耦合到处理器1010的其他存储器相似或相同。CNM 1030和CNM 1040耦合到主存储器1050(未特别示出),以加载用于CNM加速操作的操作数。
在一个示例中,对计算密集型函数的调用触发将命令定向到CNM加速器。例如,处理器1010可以包括在其指令集架构(ISA,instruction set architecture)中对用于触发CNM加速器的操作的特定命令的支持。在一个示例中,对CNM加速器的调用可以在将配置信息加载到加速器之前或与将配置信息加载到加速器相关联。例如,这种配置信息可以定义节点间连接的权重、定义要执行的数学函数或其他配置。系统1000可以从系统主存储器或非易失性大容量存储器或其组合加载配置信息。
在一个示例中,CNM 1030或CNM 1040或二者的CNM电路可以包括组合的ECC校验或奇偶校验、以及残差码。基于存储组合的校验位和残差码,系统可以执行端到端的数据保护。
图11是计算系统的示例的框图,在该计算系统中,可以实现具有残差和奇偶校验的存储器内计算或邻存储器计算电路。系统1100表示根据本文中任何示例的计算设备,并且可以是膝上型计算机、台式计算机、平板计算机、服务器、游戏或娱乐控制系统、扫描仪、复印机、打印机、路由或交换设备、嵌入式计算设备、智能手机、可穿戴设备、物联网设备或其他电子设备。
在一个示例中,系统1100包括CNM电路。CNM电路包括根据本文中描述的任何示例的组合的ECC校验或奇偶校验、以及残差码。基于存储组合的校验位和残差码,系统可以执行端到端的数据保护。CNM电路的一个示例可以是CNM 1192,CNM 1192表示为包括在处理器SOC 1110中的CNM电路。CNM 1192可以是或包括处理器SOC衬底或管芯上的存储器设备中的CNM电路。例如,CNM 1192可以是处理器SOC 1110上的缓存的一部分。CNM电路的另一个示例可以是CNM 1194,CNM 1194表示为包括在存储器子系统1120中的CNM电路。更具体地,CNM1194被示出为存储器1130的一部分,指代系统1100的存储器资源。CNM 1194表示可以作为存储器资源而被包括的同时提供数据保护的CNM电路,处理器SOC1110可以将计算密集型操作卸载到该存储器资源。
CNM电路的另一个示例可以是CNM 1196,CNM 1196表示耦合到处理器SOC 1110以为系统1100提供CNM计算的硬件。这种硬件可以被认为是加速器或专用硬件。示例可以包括专用加速器电路、具有存储器的FPGA(现场可编程门阵列,field programmable gatearray)、具有存储器和计算资源的ASIC(专用集成电路,application specificintegrated circuit)、或其他硬件。CNM电路的另一个示例可以是存储器1180中的CNM1198。CNM 1198可以是磁盘中的CNM电路或系统1100中的非易失性存储资源。这样的资源可以直接对非易失性存储设备进行读取和写入,或者可以包括用于计算然后将其存储到非易失性存储设备的易失性存储设备或缓存存储器。硬盘驱动器通常包括可以与CNM电路配对的缓冲器或其他易失性存储器。
系统1100包括处理器SOC 1110(随后称为“处理器1110”),处理器SOC 1110为系统1100提供指令的处理、操作管理和执行。处理器1110可以包括任何类型的微处理器、中央处理单元(CPU)、图形处理单元(GPU)、处理核心、或用于提供系统1100的处理的其他处理硬件、或处理器的组合。处理器1110可以包括单核或多核。处理器1110控制系统1100的整体操作,并且可以是或包括一个或多个可编程通用或专用微处理器、数字信号处理器(DSP,digital signal processor)、可编程控制器、专用集成电路(ASIC,application specificintegrated circuit)、可编程逻辑器件(PLD,programmable logic device)等、或这样的设备的组合。
系统1100包括引导/配置1116,引导/配置1116表示用于存储引导代码(例如,基本输入/输出系统(BIOS,basic input/output system))、配置设置的存储设备,安全硬件(例如,可信平台模块(TPM,trusted platform module)),或在主机OS之外运行的其他系统级别硬件。引导/配置1116可以包括非易失性存储设备,例如只读存储器(ROM,read-onlymemory)、闪存或其他存储器设备。
在一个示例中,系统1100包括耦合到处理器1110的接口1112,该接口可以表示用于需要更高带宽连接的系统组件的更高速接口或高吞吐量接口,系统组件例如为存储器子系统1120或图形接口组件1140。接口1112表示接口电路,该接口电路可以是独立组件或集成到处理器管芯上。在存在的情况下,图形接口1140与用于向系统1100的用户提供视觉显示的图形组件接口。在一个示例中,图形接口1140可以驱动向用户提供输出的高清(HD,high definition)显示器。高清可以指具有大约100PPI(每英寸像素(pixels per inch))或更高的像素密度的显示,并且可以包括例如全HD(例如,1080p)、视网膜显示、4K(超高清或UHD)或其他的格式。在一个示例中,显示器可以包括触摸屏显示器。在一个示例中,图形接口1140基于存储在存储器1130中的数据或基于由处理器1110执行的操作或二者来生成显示。在一个示例中,图形接口1140基于存储在存储器1130中的数据或基于由处理器1110执行的操作或二者来生成显示。
存储器子系统1120表示系统1100的主存储器,并且为要由处理器1110执行的代码或要在执行例程中使用的数据值提供存储。存储器子系统1120可以包括一个或多个存储器设备1130,例如只读存储器(ROM)、闪存、诸如DRAM之类的一种或多种随机存取存储器(RAM)、或其他存储器设备、或这些设备的组合。此外,例如,存储器1130存储和托管操作系统(OS,operating system)1132,以提供用于在系统1100中执行指令的软件平台。另外,应用1134可以从存储器1130在OS 1132的软件平台上执行。应用1134表示程序,该程序具有自己的操作逻辑来执行一个或多个功能。进程1136表示向OS 1132或一个或多个应用1134或其组合提供辅助功能的代理或例程。OS 1132、应用1134和进程1136提供软件逻辑,以为系统1100提供功能。在一个示例中,存储器子系统1120包括存储器控制器1122,该存储器控制器是用于生成命令并且向存储器1130发出命令的存储器控制器。将理解的是,存储器控制器1122可以是处理器1110的实体部分、或接口1112的实体部分。例如,存储器控制器1122可以是与处理器1110集成到电路上的集成存储器控制器。
虽然没有具体说明,但是将理解的是,系统1100可以包括设备之间的一个或多个总线或总线系统,例如存储器总线、图形总线、接口总线或其他。总线或其他信号线可以将组件通信或电耦合在一起,或者将组件通信和电耦合。总线可以包括实体通信线路、点对点连接、桥接器、适配器、控制器或其他电路或组合。总线可以包括例如以下项中的一个或多个:系统总线、外围组件互连(PCI,Peripheral Component Interconnect)总线、超传输或工业标准体系结构(ISA,industry standard architecture)总线、小型计算机系统接口(SCSI,small computer system interface)总线、通用串行总线(USB,universal serialbus)、或电气和电子工程师协会(IEEE,Institute of Electrical and ElectronicsEngineer)标准1394总线。
在一个示例中,系统1100包括接口1114,该接口可以耦合到接口1112。接口1114可以是比接口1112低速的接口。在一个示例中,接口1114表示接口电路,该接口电路可以包括独立的组件和集成电路。在一个示例中,多个用户接口组件或外围组件或二者耦合到接口1114。网络接口1150为系统1100提供通过一个或多个网络与远程设备(例如,服务器或其他计算设备)通信的能力。网络接口1150可以包括以太网适配器、无线互连组件、蜂窝网络互连组件、USB(通用串行总线)、或其他基于有线或无线标准或专有接口。网络接口1150可以与远程设备交换数据,这可以包括发送存储在存储器中的数据或接收要存储在存储器中的数据。
在一个示例中,系统1100包括一个或多个输入/输出(I/O,input/output)接口1160。I/O接口1160可以包括一个或多个接口组件,用户通过所述一个或多个接口组件与系统1100(例如,音频、字母数字、触觉/触摸或其他接口)接口。外围接口1170可以包括上面没有具体提到的任何硬件接口。外围设备通常是指依赖性地连接到系统1100的设备。依赖性地连接是其中系统1100提供的软件平台或硬件平台或二者的连接,在该软件平台或硬件平台或二者上执行操作并且用户与之交互。
在一个示例中,系统1100包括用于以非易失性方式存储数据的存储子系统1180。在一个示例中,在某些系统实现方式中,存储设备1180的至少某些组件可以与存储器子系统1120的组件重叠。存储子系统1180包括存储设备1184,存储设备1184可以是或包括用于以非易失性方式存储大量数据的任何常规介质,例如一个或多个基于磁、固态或光的盘或其组合。存储设备1184以持久状态保持代码或指令和数据1186(即,即使系统1100的电力中断,该值仍被保留)。存储设备1184通常可以被认为是“存储器”,但存储器1130通常是用于向处理器1110提供指令的执行或操作存储器。而存储设备1184是非易失性的,存储器1130可以包括易失性存储器(即,如果系统1100的电力中断,则数据是不确定的)。在一个示例中,存储子系统1180包括与存储设备1184接口的控制器1182。在一个示例中,控制器1182是接口1114或处理器1110的实体部分,或者可以包括处理器1110和接口1114二者中的电路或逻辑。
电源1102向系统1100的组件提供电力。更具体地,电源1102通常与系统1100中的一个或多个供电设备1104接口,以向系统1100的组件提供电力。在一个示例中,供电设备1104包括AC到DC(交流电转直流电)适配器,以插入到墙壁插座中。这种AC电可以是可再生能源(例如,太阳能)电源1102。在一个示例中,电源1102包括DC电源,例如外部AC到DC转换器。在一个示例中,电源1102或供电设备1104包括无线充电硬件,以经由靠近充电场进行充电。在一个示例中,电源1102可以包括内部电池或燃料电池源。
图12是多节点网络的示例的框图,在多节点网络中可以实现具有残差和奇偶校验的存储器内计算或邻存储器计算电路。系统1200表示根据本文中描述的任何示例的节点网络。在一个示例中,系统1200表示数据中心。在一个示例中,系统1200表示服务器群。在一个示例中,系统1200表示数据云或处理云。
节点1230包括存储器1240,存储器1240在一个示例中包括CNM 1244。CNM 1244包括根据本文中描述的任何示例的组合的ECC校验或奇偶校验、以及残差码。基于存储组合的校验位和残差码,系统可以执行端到端的数据保护。处理器1232可以卸载计算密集型操作,同时提供数据保护。
一个或多个客户端1202通过网络1204向系统1200发出请求。网络1204表示一个或多个局域网、或广域网、或其组合。客户端1202可以是人或机器客户端,其生成对由系统1200执行操作的请求。系统1200执行客户端1202请求的应用或数据计算任务。
在一个示例中,系统1200包括一个或多个机架,该机架表示结构和互连资源,以容纳和互连多个计算节点。在一个示例中,机架1210包括多个节点1230。在一个示例中,机架1210托管多个刀片组件1220。托管是指提供电力、结构或机械支撑以及互连。刀片1220可以指印刷电路板(PCB,printed circuit board)上的计算资源,其中,PCB容纳一个或多个节点1230的硬件组件。在一个示例中,刀片1220不包括底盘或壳体或除此之外的由机架1210提供的其他“盒子”。在一个示例中,刀片1220包括具有暴露的连接器以连接到机架1210中的壳体。在一个示例中,系统1200不包括机架1210,并且每个刀片1220包括可以靠近其他刀片堆叠或以其他方式留置在其他刀片附近且允许节点1230互连的机箱或壳体。
系统1200包括表示节点1230的一个或多个互连器的结构1270。在一个示例中,结构1270包括用于在节点1230之间路由信号的多个交换机1272或路由器或其他硬件。另外,结构1270可以将系统1200耦合到网络1204以供客户端1202访问。除了路由设备之外,结构1270可以被认为包括线缆或端口或其他硬件设备,以将节点1230耦合在一起。在一个示例中,结构1270具有一个或多个相关联的协议来管理通过系统1200的信号路由。在一个示例中,一个或多个协议至少部分地取决于系统1200中使用的硬件设备。
如所示的,机架1210包括N个刀片1220。在一个示例中,除了机架1210之外,系统1200还包括机架1250。如所示的,机架1250包括M个刀片1260。M不一定与N相同;因此,将理解的是,可以使用各种不同的硬件设备组件,并且硬件设备组件通过结构1270一起耦合到系统1200中。刀片1260可以与刀片1220相同或相似。节点1230可以是任何类型的节点,并且不一定是所有都是相同类型的节点。系统1200不限于是同质的,也不限于不是同质的。
为简单起见,仅详细示出了刀片1220[0]中的节点。然而,系统1200中的其他节点可以相同或相似。至少一些节点1230是具有处理器(proc)1232和存储器1240的计算节点。计算节点是指具有执行操作系统并且可以接收和处理一个或多个任务的处理资源(例如,一个或多个处理器)的节点。在一个示例中,至少一些节点1230是服务器节点,服务器节点具有作为由处理器1232和存储器1240表示的处理资源的服务器。存储服务器是指具有比计算节点更多的存储资源而不具有用于执行任务的处理器的节点,存储服务器包括用于管理对存储服务器内的存储节点的访问的处理资源。
在一个示例中,节点1230包括接口控制器1234,该接口控制器表示控制节点1230对结构1270的访问的逻辑。逻辑可以包括用于互连到实体互连硬件的硬件资源。逻辑可以包括用于管理互连的软件或固件逻辑。在一个示例中,接口控制器1234是或包括主机结构接口,其可以是根据本文中描述的任何示例的结构接口。
处理器1232可以包括一个或多个单独的处理器。每个单独的处理器可以包括单个处理单元、多核处理单元或其组合。处理单元可以是诸如CPU(中央处理单元)之类的主处理器、诸如GPU(图形处理单元)之类的外围处理器或其组合。存储器1240可以是或包括存储器设备(例如,存储器1240)和存储器控制器(例如,控制器1242)。
总体上,关于本文中的描述,在一个示例中,一种装置包括:计算节点的存储器,所述存储器用于存储数据;所述计算节点的计算硬件,所述计算硬件用于对所述数据执行计算;纠错码(ECC)逻辑,用于在进行计算之前利用代码对所述数据执行ECC,所述代码包括ECC位和残差校验位二者;以及残差校验逻辑,用于利用所述代码的所述残差校验位对计算结果执行残差校验。
在该装置的一个示例中,所述存储器用于存储用于所述数据的ECC位,其中,所述ECC逻辑用于利用来自所述存储器的所述ECC位对所述数据执行ECC。根据该装置的任一前述示例,在一个示例中,所述存储器用于存储残差校验值,其中,所述残差校验逻辑用于利用所述残差校验值对所述计算结果执行残差校验。根据该装置的任一前述示例,在一个示例中,所述残差校验值包括所述数据的取模值。根据该装置的任一前述示例,在一个示例中,所述计算结果将被存储回所述存储器中。根据该装置的任一前述示例,在一个示例中,所述ECC逻辑用于对ECC位进行编码,以针对所述计算结果进行存储。根据该装置的任一前述示例,在一个示例中,所述存储器用于存储所述数据、ECC位和残差校验值,其中,所述ECC位和残差校验值表示二维阵列。根据该装置的任一前述示例,在一个示例中,所述存储器用于存储具有数据位和相关联的残差校验值的多个行、以及具有奇偶位的行,其中,一个位位置的奇偶位用于指示下述列的奇偶:由数据位行的所述位位置组成的列、或由位行的所述位位置组成的列。根据该装置的任一前述示例,在一个示例中,所述计算节点包括具有多个并行分布式处理节点的并行分布式处理系统的节点。根据该装置的任一前述示例,在一个示例中,所述计算结果将被转发到另一个并行分布式处理节点。
总体上,关于本文中的描述,在一个示例中,一种计算机系统包括:主处理器;加速器硬件,所述加速器硬件耦合到所述主处理器,用于接收并行分布式处理的请求,所述加速器硬件包括多个处理节点,其中,各个处理节点包括:存储器,用于存储数据;计算单元,用于对所述数据执行计算;纠错码(ECC)逻辑,用于在进行计算之前利用代码对所述数据执行ECC,所述代码包括ECC位和残差校验位二者;以及残差校验逻辑,用于利用所述代码的残差校验位对计算结果执行残差校验。
在计算机系统的一个示例中,所述存储器用于存储残差校验值,其中,所述残差校验逻辑用于利用所述残差校验值对所述计算结果执行残差校验。根据计算机系统的任一前述示例,在一个示例中,所述ECC逻辑用于对ECC位进行编码,以针对所述计算结果进行存储。根据计算机系统的任一前述示例,在一个示例中,所述存储器用于以二维阵列的存储所述数据、ECC位和残差校验值。根据计算机系统的任一前述示例,在一个示例中,所述计算结果将从一个节点转发到另一个节点。根据计算机系统的任一前述示例,在一个示例中,计算机系统包括多核主处理器;通信地耦合到所述主处理器的显示器;或者,通信地耦合到所述主处理器的网络接口。
总体上,关于本文中的描述,在一个示例中,一种计算方法,包括:将数据存储在计算节点的存储器中;利用所述计算节点的计算硬件对所述数据执行计算;在执行计算之前利用代码对所述数据执行纠错码(ECC),所述代码包括ECC位和残差校验位二者;以及利用所述代码的残差校验位对计算结果执行残差校验。
在该方法的一个示例中,执行残差校验包括:利用存储在所述存储器中的残差校验值对所述计算结果执行残差校验。根据该方法的任一前述示例,在一个示例中,该方法包括:对ECC位进行编码,以针对所述计算结果存储在所述存储器中。根据该方法的任一前述示例,在一个示例中,该方法包括:以二维阵列将所述数据、ECC位和残差校验值存储在所述存储器中。根据该方法的任一前述示例,在一个示例中,所述计算节点包括具有多个并行分布式处理节点的并行分布式处理系统的节点,所述方法还包括:将所述计算结果转发到另一个并行分布式处理节点。
如本文中所示的流程图提供各种处理动作的序列的示例。流程图可以指示要由软件或固件例程执行的操作以及实体操作。流程图可以示出有限状态机(FSM,finite statemachine)的状态的实现方式的示例,其可以在硬件和/或软件中实现。尽管以特定的序列或顺序显示,但除非另有说明,否则可以修改动作的顺序。因此,所示的图应仅被理解为示例,并且可以以不同的顺序执行该过程,并且可以并行执行一些动作。此外,可以省略一个或多个动作;因此,并非所有实现方式都会执行所有操作。
就本文中描述的各种操作或功能而言,它们可以被描述或定义为软件代码、指令、配置和/或数据。内容可以是直接可执行的(“对象”或“可执行”形式)、源代码或差异代码(“增量”或“补丁”代码)。本文中所描述的软件内容可以经由其上存储有内容的制造品来提供,或者经由操作通信接口以经由通信接口发送数据的方法来提供。机器可读存储介质可以使机器执行所描述的功能或操作,并且包括以机器(例如,计算设备、电子系统等)可访问的形式存储信息的任何机制,例如可记录/不可记录介质(例如,只读存储器(ROM)、随机存取存储器(RAM)、磁盘存储介质、光存储介质、闪存设备等)。通信接口包括与任何硬连线、无线、光学等介质接口以与另一设备通信的任何机制,例如存储器总线接口、处理器总线接口、互联网连接、磁盘控制器等。可以通过提供配置参数和/或发送信号来配置通信接口,以使通信接口准备好提供描述软件内容的数据信号。可以经由发送到通信接口的一个或多个命令或信号来访问通信接口。
本文中描述的各种组件可以是用于执行所描述的操作或功能的手段。本文中描述的每个组件包括软件、硬件或这些的组合。这些组件可以被实现为软件模块、硬件模块、专用硬件(例如,专用硬件、专用集成电路(ASIC)、数字信号处理器(DSP)等)、嵌入式控制器、硬接线电路等。
除了本文中描述的内容之外,在不偏离所公开的内容和本发明的实现方式的范围的情况下,可以对所公开的内容和本发明的实现方式进行各种修改。因此,本文中的说明和示例应被解释为说明性的,而不是限制性的。本发明的范围应仅通过参考所附权利要求来衡量。

Claims (21)

1.一种用于错误校验的装置,包括:
计算节点的存储器,所述存储器用于存储数据;
所述计算节点的计算硬件,所述计算硬件用于对所述数据执行计算;
纠错码(ECC)逻辑,用于在进行计算之前利用代码对所述数据执行ECC,所述代码包括ECC位和残差校验位二者;以及
残差校验逻辑,用于利用所述代码的所述残差校验位对计算结果执行残差校验。
2.根据权利要求1所述的装置,其中,所述存储器用于存储用于所述数据的ECC位,其中,所述ECC逻辑用于利用来自所述存储器的所述ECC位对所述数据执行ECC。
3.根据权利要求1或2所述的装置,其中,所述存储器用于存储残差校验值,其中,所述残差校验逻辑用于利用所述残差校验值对所述计算结果执行残差校验。
4.根据权利要求3所述的装置,其中,所述残差校验值包括所述数据的取模值。
5.根据权利要求1-4中任一项所述的装置,其中,所述计算结果将被存储回所述存储器中。
6.根据权利要求5所述的装置,其中,所述ECC逻辑用于对ECC位进行编码,以针对所述计算结果进行存储。
7.根据权利要求5所述的装置,其中,所述存储器用于存储所述数据、ECC位和残差校验值,其中,所述ECC位和残差校验值表示二维阵列。
8.根据权利要求7所述的装置,其中,所述存储器用于存储具有数据位和相关联的残差校验值的多个行、以及具有奇偶位的行,其中,一个位位置的奇偶位用于指示下述列的奇偶:由数据位行的所述位位置组成的列、或由位行的所述位位置组成的列。
9.根据权利要求1-8中任一项所述的装置,其中,所述计算节点包括具有多个并行分布式处理节点的并行分布式处理系统的节点。
10.根据权利要求9所述的装置,其中,所述计算结果将被转发到另一个并行分布式处理节点。
11.一种计算机系统,包括:
主处理器;以及
加速器硬件,所述加速器硬件耦合到所述主处理器,用于接收并行分布式处理的请求,所述加速器硬件包括多个处理节点,其中,各个处理节点包括:
存储器,用于存储数据;
计算单元,用于对所述数据执行计算;
纠错码(ECC)逻辑,用于在进行计算之前利用代码对所述数据执行ECC,所述代码包括ECC位和残差校验位二者;以及
残差校验逻辑,用于利用所述代码的残差校验位对计算结果执行残差校验。
12.根据权利要求11所述的计算机系统,其中,所述存储器用于存储残差校验值,其中,所述残差校验逻辑用于利用所述残差校验值对所述计算结果执行残差校验。
13.根据权利要求11或12所述的计算机系统,其中,所述ECC逻辑用于对ECC位进行编码,以针对所述计算结果进行存储。
14.根据权利要求11-13中任一项所述的计算机系统,其中,所述存储器用于以二维阵列存储所述数据、ECC位和残差校验值。
15.根据权利要求11-14中任一项所述的计算机系统,其中,所述计算结果将从一个节点转发到另一个节点。
16.根据权利要求11-15中任一项所述的计算机系统,包括以下项中的一个或多个:
其中,所述主处理器包括多核处理器;
通信地耦合到所述主处理器的显示器;以及
通信地耦合到所述主处理器的网络接口。
17.一种用于在计算节点中进行计算的方法,包括:
将数据存储在计算节点的存储器中;
利用所述计算节点的计算硬件对所述数据执行计算;
在执行计算之前利用代码对所述数据执行纠错码(ECC),所述代码包括ECC位和残差校验位二者;以及
利用所述代码的残差校验位对计算结果执行残差校验。
18.根据权利要求17所述的方法,其中,执行残差校验包括:利用存储在所述存储器中的残差校验值对所述计算结果执行残差校验。
19.根据权利要求17或18所述的方法,还包括:
对ECC位进行编码,以针对所述计算结果存储在所述存储器中。
20.根据权利要求17-19中任一项所述的方法,还包括:
以二维阵列将所述数据、ECC位和残差校验值存储在所述存储器中。
21.根据权利要求17-20中任一项所述的方法,其中,所述计算节点包括具有多个并行分布式处理节点的并行分布式处理系统的节点,所述方法还包括:
将所述计算结果转发到另一个并行分布式处理节点。
CN202211435334.2A 2021-12-16 2022-11-16 用于存储器内计算/邻存储器计算的端到端数据保护 Pending CN116266148A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/553,623 2021-12-16
US17/553,623 US20220107867A1 (en) 2021-12-16 2021-12-16 End-to-end data protection for compute in memory (cim)/compute near memory (cnm)

Publications (1)

Publication Number Publication Date
CN116266148A true CN116266148A (zh) 2023-06-20

Family

ID=80932310

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211435334.2A Pending CN116266148A (zh) 2021-12-16 2022-11-16 用于存储器内计算/邻存储器计算的端到端数据保护

Country Status (3)

Country Link
US (1) US20220107867A1 (zh)
CN (1) CN116266148A (zh)
DE (1) DE102022127894A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11586500B2 (en) 2019-09-23 2023-02-21 SK Hynix Inc. Processing-in-memory (PIM) devices
US11586494B2 (en) 2019-09-23 2023-02-21 SK Hynix Inc. Processing-in-memory (PIM) devices
KR20210034999A (ko) 2019-09-23 2021-03-31 에스케이하이닉스 주식회사 Aim 장치 및 aim 장치에서의 곱셈-누산 연산 방법

Also Published As

Publication number Publication date
US20220107867A1 (en) 2022-04-07
DE102022127894A1 (de) 2023-06-22

Similar Documents

Publication Publication Date Title
US20220107867A1 (en) End-to-end data protection for compute in memory (cim)/compute near memory (cnm)
TWI587308B (zh) 於非依電性記憶體中之回復演算法
US9411683B2 (en) Error correction in memory
TWI697000B (zh) 記憶體控制器及快閃記憶體的存取方法
US11513893B2 (en) Concurrent compute and ECC for in-memory matrix vector operations
US11436482B2 (en) Storing neural net works and weights for neural networks
US10243588B2 (en) Error correction code (ECC) decoders sharing logic operations, memory controllers including the error correction code decoders, and methods of decoding error correction codes
US11409601B1 (en) Memory device protection
US20130073925A1 (en) Electronic device comprising error correction coding device and electronic device comprising error correction decoding device
KR20180086816A (ko) 사전-검사된 에러율에 따른 적응형 에러정정을 수행하는 메모리장치 및 전자장치와, 메모리장치의 동작방법
US11714704B2 (en) Modified checksum using a poison data pattern
US11775382B2 (en) Modified parity data using a poison data unit
US20160378594A1 (en) Method and apparatus to decode low density parity codes
Leitersdorf et al. Efficient error-correcting-code mechanism for high-throughput memristive processing-in-memory
WO2022146790A1 (en) Providing host-based error detection capabilities in a remote execution device
CN108665940B (zh) Ecc编码电路、解码电路以及存储器控制器
NL2029789B1 (en) Adaptive error correction to improve for system memory reliability, availability, and serviceability (ras)
US11467760B1 (en) Selective erasure decoding for memory devices
CN115732016A (zh) 存储器装置、存储器控制器和纠正数据错误的方法
EP4052375B1 (en) Efficient encoding of binary symmetry-invariant product codes using a half-size data array
CN114546708A (zh) 一种适用统一和分布式存储纠删的方法和装置
CN115686926A (zh) 硬件实现方法、终端及存储介质
Wang et al. Weighted Error Correcting Code (WECC) for Asymmetric Errors in STT-MRAM
WO2023129240A1 (en) Data stripe protection
WO2023027787A1 (en) Access request management using sub-commands

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication