CN111796964A - 用于提供多级纠错的技术 - Google Patents
用于提供多级纠错的技术 Download PDFInfo
- Publication number
- CN111796964A CN111796964A CN202010143019.7A CN202010143019A CN111796964A CN 111796964 A CN111796964 A CN 111796964A CN 202010143019 A CN202010143019 A CN 202010143019A CN 111796964 A CN111796964 A CN 111796964A
- Authority
- CN
- China
- Prior art keywords
- memory
- error correction
- data
- media access
- memory medium
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding 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/1044—Adding 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding 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/1048—Adding 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Quality & Reliability (AREA)
- Computer Security & Cryptography (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Detection And Correction Of Errors (AREA)
- For Increasing The Reliability Of Semiconductor Memories (AREA)
Abstract
用于提供多级纠错的技术包括一种存储器,该存储器包括耦合到存储器介质的介质访问电路。介质访问电路要从存储器介质读取数据。另外,介质访问电路要利用位于介质访问电路中的纠错逻辑单元对读取的数据执行纠错以产生经纠错的数据。
Description
背景技术
确保数据的可靠性对于存储器和存储装置是重大的挑战。典型的方法是要用存储器控制器执行纠错码(ECC)过程,其涉及用冗余位(例如,在写入过程期间)编码数据集并且(例如,在读取过程期间)解码数据集,同时使用冗余位来检测和纠正数据集中的错误。存储器控制器然后可以将经纠错的数据提供给处理器或其它组件(例如,加速器装置)以对经纠错的数据执行操作。为了减轻由冗余位引起的开销,要保护以免损坏的每个数据集的大小往往相对较大,例如两千位或四千位。然而,上述方案对于可以在存储器中(例如,在存储器管芯上,而不是由计算装置的处理器或其它组件)对数据执行计算的架构呈现低效率。更特别地,将数据(例如,通过总线)从数据驻留在其上的存储器介质发送到存储器控制器以执行纠错过程以及然后通过总线将经纠错的数据从存储器控制器发送回的动作消耗能量和时间,并且可能降低任何效率(在其它方式中将通过在存储器中执行计算获得所述效率)。
附图说明
在附图中通过示例的方式而非通过限制的方式图示了本文中描述的概念。为了说明的简单和清楚,附图中图示的元件不一定按比例绘制。在认为适当的地方,在附图之中已经重复参考标记以指示对应或类似的元件。
图1是用于提供对数据的多级纠错的计算装置的至少一个实施例的简化图;
图2是包括在图1的计算装置中的存储器介质的至少一个实施例的简化图;
图3是包括在图1的计算装置中的存储器的介质访问电路的组件和存储器介质的分区的至少一个实施例的简化图;
图4是可以在图1的计算装置的存储器中执行的张量运算的至少一个实施例的简化图;
图5-7是可以由图1的计算装置执行的用于提供多级纠错的方法的至少一个实施例的简化图。
具体实施方式
虽然本公开的概念易受各种修改和备选形式影响,但是其特定实施例已经在附图中通过示例的方式示出并且将在本文中详细描述。然而,应当理解,不旨在将本公开的概念限制成所公开的特定形式,而是相反,意图是要涵盖与本公开和所附权利要求一致的所有修改、等同物和备选。
说明书中对“一个实施例”、“实施例”、“说明性实施例”等的引用指示所描述的实施例可以包括特定特征、结构或特性,但是每个实施例可能或可能不一定包括特定特征、结构或特性。此外,这样的短语不一定指的是相同的实施例。此外,当结合实施例描述特定特征、结构或特性时,认为结合其它实施例实现这样的特征、结构或特性在本领域技术人员的知识范围内,而不管是否明确描述所述其它实施例。另外,应当领会,采用“至少一个A、B和C”的形式的列表中包括的项目能够意味着(A);(B);(C);(A和B);(A和C);(B和C);或(A、B和C)。类似地,采用“A、B或C中的至少一个”的形式列出的项目能够意味着(A);(B);(C);(A和B);(A和C);(B和C);或(A、B和C)。
在一些情况下,所公开的实施例可以采用硬件、固件、软件或其任意组合来实现。所公开的实施例还可以被实现为由暂时性或非暂时性机器可读(例如,计算机可读)存储介质承载或存储在其上的指令,所述指令可以由一个或多个处理器读取和执行。机器可读存储介质可以被体现为用于采用由机器可读的形式存储或传送信息的任何存储装置、机构或其它物理结构(例如,易失性或非易失性存储器、介质盘或其它介质装置)。
在附图中,一些结构或方法特征可以采用特定布置和/或排序示出。然而,应当领会,可能不要求这样的特定布置和/或排序。而是,在一些实施例中,这样的特征可以采用与说明性附图中示出的不同的方式和/或顺序来布置。另外,在特定附图中包括结构或方法特征不打算意味着在所有实施例中要求这样的特征,并且在一些实施例中,可不包括这样的特征或者这样的特征可与其它特征组合。
现在参考图1,用于提供对数据的多级纠错的计算装置100包括处理器102、存储器104、输入/输出(I/O)子***112、数据存储装置114和通信电路122。当然,在其它实施例中,计算装置100可以包括其它或额外组件,诸如通常在计算机中找到的那些组件(例如,显示器、***装置等)。另外,在一些实施例中,说明性组件中的一个或多个可以被并入另一个组件中,或者以其它方式形成另一个组件的一部分。如本文中所描述的,计算装置100,并且特别地,计算装置100的存储器104提供多级纠错,其中,一级在介质访问电路108内(例如,由计算类ECC逻辑单元134)执行,而另一级由存储器控制器106(例如,由存储类ECC逻辑单元150)提供。如本文中更详细地解释的,在说明性实施例中,介质访问电路108对于存储器介质110是本地的(例如,在相同的管芯上、在相同的封装中等),并且可以对来自存储器介质110的数据执行计算操作,从而消除对于(例如,通过总线)要发送到计算装置100的处理器102或另一个组件(用于对数据执行计算)的数据的需要。为了促进介质访问电路108中的计算操作的执行,介质访问电路108中的计算类ECC逻辑单元134产生从存储器介质110读取的数据的经纠错版本(例如,而不是要求介质访问电路108将数据发送到存储器控制器106以对数据执行纠错)。计算类ECC逻辑单元134可以被体现为任何装置或电路(例如,可重配置电路、专用集成电路(ASIC)等),其配置成确定从存储器介质110读取的数据是否包含错误并且利用(一个或多个)纠错算法(诸如Reed-Solomon码或Bose-Chaudhuri-Hocquenghem(BCH)码)来纠正任何错误。类似地,存储类ECC逻辑单元150可以被体现为任何装置或电路(例如,可重配置电路、专用集成电路(ASIC)等),其配置成确定从存储器介质110读取(例如,由介质访问电路108发送)的数据是否包含错误并且利用(一个或多个)纠错算法(诸如Reed-Solomon码或Bose-Chaudhuri-Hocquenghem(BCH)码)来纠正任何错误。在说明性实施例中,计算类ECC逻辑单元134可以被配置成与存储类ECC逻辑单元150相比对更小的数据集(例如,512位)进行操作,所述存储类ECC逻辑单元150可以对2千位、4千位或其它大小的数据集进行操作。类似地,计算类ECC逻辑单元134可以执行比由存储类ECC逻辑单元150执行的算法(例如,Reed-Solomon算法)更快、更少计算密集的纠错算法(例如,BCH算法),这是因为由计算类ECC逻辑单元134纠正的数据通常在存储器中被保留较短的时间段(例如,当在存储器104中执行计算操作时被临时写入到存储器的数据),从而导致比由存储类ECC逻辑单元150纠正的数据更少的错误。
在说明性实施例中,存储器介质110具有三维交叉点架构,其具有不同于其它存储器架构(例如,动态随机存取存储器(DRAM))的数据访问特性,例如使得能够每瓦片(tile)访问一个位并且在对相同分区或其它分区的读取或写入之间招致时间延迟。介质访问电路108被配置成例如通过以下方式(例如,在功率使用和速度方面)有效使用存储器介质110的架构,所述方式为在给定分区内并行访问多个瓦片、利用高速暂存(例如,相对小的、低等待时间存储器)来临时保留从存储器介质110读取的数据并且对其进行操作、以及将从一个分区读取的数据广播到存储器104的其它部分以使得矩阵计算能够在存储器104内并行执行。另外,在说明性实施例中,代替将读取或写入请求发送到存储器104以访问矩阵数据,处理器102可以发送更高级的请求(例如,要执行的矩阵计算的类型)并且提供要在所请求的操作中利用的矩阵(例如,输入矩阵、权重矩阵和输出矩阵)(例如,在存储器中)的位置和维度。此外,存储器104可以仅发送回确认(例如,“完成”),指示所请求的操作已经完成,而不是将结果数据发送回到处理器102。照这样,能够在存储器104中执行诸如人工智能操作(例如,涉及矩阵计算的张量运算)的许多计算操作,而最少使用处理器102和存储器104之间的总线。在一些实施例中,介质访问电路108被包括在与存储器介质110相同的管芯中。在其它实施例中,介质访问电路108在单独的管芯上,但是在与存储器介质110相同的封装中。在其它实施例中,介质访问电路108在单独的管芯和单独的封装中,但是在与存储器介质110相同的双列直插存储器模块(DIMM)或板上。
处理器102可以被体现为能够执行本文中描述的操作、诸如执行应用(例如,可以利用神经网络或其它机器学习结构来学习和进行推断的人工智能相关应用)的任何装置或电路(例如,(一个或多个)多核处理器、微控制器或其它处理器或处理/控制电路)。在一些实施例中,处理器102可以被体现为、包括或耦合到FPGA、专用集成电路(ASIC)、可重配置硬件或硬件电路或其它专用硬件,以促进本文中描述的功能的执行。
存储器104,其可以包括非易失性存储器(例如,两级存储器方案中的远存储器),包括存储器介质110和在存储器介质110下方(例如,在较低位置)并且耦合到存储器介质110的介质访问电路108(例如,装置或电路,诸如由互补金属氧化物半导体(CMOS)或其它材料构造的集成电路)。介质访问电路108还连接到存储器控制器106,其可以被体现为配置成选择性地从存储器介质110读取和/或向存储器介质110写入并且对存在于存储器介质110中的数据(例如,矩阵数据)执行张量运算(例如,响应于来自处理器102的请求,该处理器102可以正在执行依赖张量运算的人工智能相关应用以训练神经网络和/或进行推断)的任何装置或电路(例如,处理器、协同处理器、专用电路等)。简要参考图2,在说明性实施例中,存储器介质110包括瓦片架构,本文中也称为交叉点架构(例如,存储器单元位于字线和位线的交叉点处并且个别地可寻址并且位存储是基于体电阻中的改变的架构),其中每个瓦片(例如,存储器单元)通过x参数和y参数(例如,列和行)可寻址。存储器介质110包括多个分区,多个分区中的每个分区包括瓦片架构。分区可以被堆叠为层202、204、206,以形成三维交叉点架构(例如,Intel 3D XPointTM存储器)。与仅固定大小的多位数据结构(例如,字节、字等)可寻址的典型存储器装置不同,介质访问电路108被配置成应存储器控制器106的请求从存储器介质110读取个别位或其它数据单元,该存储器控制器106可以响应于从处理器102接收到对应的请求而产生请求。
返回参考图1,在说明性实施例中,介质访问电路108包括张量逻辑单元130,该张量逻辑单元130可以被体现为配置成从介质访问电路108的其它部分卸载张量运算的执行的任何装置或电路(例如,CMOS电路)。在说明性实施例中,张量逻辑单元130包括多个存储器高速暂存132,所述多个存储器高速暂存132中的每个可以被体现为可用于提供对已经从存储器介质110读取的数据(例如,矩阵数据)的相对快速(例如,低等待时间)访问的任何装置或电路(例如,静态随机存取存储器(SRAM)、寄存器堆等)。在说明性实施例中,相比于具有相对较慢访问时间和较大容量的存储器介质110,高速暂存132提供更快的读取和写入访问时间。张量逻辑单元130另外包括上面讨论的计算类纠错码(ECC)逻辑单元134。另外,在说明性实施例中,张量逻辑单元130包括多个计算逻辑单元136,所述多个计算逻辑单元136中的每个可以被体现为配置成(例如,在计算类ECC逻辑单元134已经对数据执行纠错过程之后)对从存储器介质110读取的数据执行计算操作的任何装置或电路(例如,可重配置电路、ASIC等)。
简要参考图3,在说明性实施例中,存储器104的组件被分成集群310、320、330(例如,组件的分组)。集群310包括存储器介质110的多个分区311、每个都类似于图1的高速暂存132的高速暂存312、314、316的集合、以及类似于图1的计算逻辑单元136的对应的计算逻辑单元318。类似地,集群320包括存储器介质110的分区321的另一个集合、高速暂存322、324、326的对应的集合、以及对应的计算逻辑单元328。集群330还包括存储器介质110的分区331的集合、高速暂存332、334、336的对应的集合、以及计算逻辑单元338。在说明性实施例中,在操作中,计算逻辑单元318读取矩阵数据的子集(例如,来自分区(例如,分区311)的集合的输入矩阵A的一个值),并且将读取的数据提供给计算类ECC逻辑单元134,以执行纠错过程来纠正数据中的任何错误。计算逻辑单元318可以另外(例如,在已经执行纠错过程之后)将数据写入到对应的高速暂存312中,并且可以将矩阵数据的该相同子集广播到其它集群的对应的高速暂存(例如,到高速暂存322、332)。类似地,计算逻辑单元328可以利用计算类ECC逻辑单元134将矩阵数据的另一个子集(例如,输入矩阵A的另一个值)从分区321的对应集合读取到对应的高速暂存322中以纠正任何错误,并且将矩阵数据的该子集广播到要存储该矩阵的数据的其它高速暂存(例如,到高速暂存312、332)。计算逻辑单元338可以执行类似的操作。
通过向其它高速暂存广播已经从存储器介质110的分区的对应集合读取的矩阵数据,介质访问电路108减少必须访问存储器介质110的给定部分(例如,分区的集合)以获得相同矩阵数据的次数(例如,在从存储器介质110被读取一次、而不是从存储器介质110读取相同的矩阵数据多次之后,可以向多个高速暂存广播读取的矩阵数据)。此外,通过利用每个与对应的高速暂存312、314、316、322、224、226、232、234、236相关联的多个计算逻辑单元318、328、338,介质访问电路108可以同时地(例如,并行地)执行张量运算(例如,矩阵乘法和累加)的部分。应当理解,尽管为了简单起见在图3中示出三个集群310、320、330,但是集群和对应的分区、高速暂存和计算逻辑单元的实际数量可以取决于特定实施例而不同。
简要参考图4,示出可以由存储器104执行的矩阵乘法(例如,矩阵乘法和累加)操作400的示例。如所图示的,输入矩阵A中的矩阵数据乘以另一个矩阵B中的矩阵数据(例如,卷积神经网络的层的权重数据),并且结果数据被写入到输出矩阵C。图4中表示的每个矩阵作为矩阵数据临时存储在介质访问电路108的高速暂存132中。在一些实施例中,输出矩阵C可以被用作后续张量运算的输入矩阵(例如,作为卷积神经网络的后续层的输入矩阵)。
返回参考图1,存储器104可以包括非易失性存储器和易失性存储器。非易失性存储器可以被体现为能够采用持久方式(即使对非易失性存储器中断电源)存储数据的任何类型的数据存储设备。例如,非易失性存储器可以被体现为一个或多个非易失性存储器装置。非易失性存储器装置可以包括一个或多个存储器装置,其被配置在使能实现位级可寻址性(例如,从数据的个别位(而不是数据的字节或其它更大单位)读取和/或写入到数据的个别位的能力)的交叉点架构中,并且被说明性地体现为三维(3D)交叉点存储器。在一些实施例中,非易失性存储器可以另外包括其它类型的存储器,包括使用硫系相变材料(例如,硫系玻璃)的存储器装置、铁电晶体管随机存取存储器(FeTRAM)、基于纳米线的非易失性存储器、相变存储器(PCM)、结合忆阻器技术的存储器、磁阻随机存取存储器(MRAM)或自旋转移矩(STT)-MRAM的任何组合。易失性存储器可以被体现为能够在向易失性存储器供电时存储数据的任何类型的数据存储设备。例如,易失性存储器可以被体现为一个或多个易失性存储器装置,并且在下文中被周期性地称为易失性存储器,同时理解易失性存储器在其它实施例中可以被体现为其它类型的非持久数据存储设备。易失性存储器可具有使能实现位级可寻址性的架构,类似于上文描述的架构。
处理器102和存储器104经由I/O子***112以通信方式耦合到计算装置100的其它组件,所述I/O子***112可以被体现为用来促进与处理器102和/或主存储器104以及计算装置100的其它组件的输入/输出操作的电路和/或组件。例如,I/O子***112可以被体现为或以其它方式包括存储器控制器集线器、输入/输出控制集线器、集成传感器集线器、固件装置、通信链路(例如,点到点链路、总线链路、线、线缆、光导、印刷电路板迹线等)和/或其它组件和子***以促进输入/输出操作。在一些实施例中,I/O子***112可以形成片上***(SoC)的一部分,并且可以与处理器102、主存储器104和计算装置100的其它组件中的一个或多个一起被并入单个芯片中。
数据存储装置114可以被体现为配置用于短期或长期存储数据的任何类型的装置,诸如例如存储器装置和电路、存储器卡、硬盘驱动器、固态驱动器或其它数据存储装置。在说明性实施例中,数据存储装置114包括类似于存储器控制器106的存储器控制器116、类似于存储类ECC逻辑单元150的存储类ECC逻辑单元160、类似于存储器介质110的存储介质120、以及类似于介质访问电路108的介质访问电路118,所述介质访问电路118包括类似于张量逻辑单元130的张量逻辑单元140、类似于高速暂存132的高速暂存142、类似于计算类ECC逻辑单元134的计算类ECC逻辑单元144、以及类似于计算逻辑单元136的计算逻辑单元146。照这样,在说明性实施例中,数据存储装置114能够对存储在存储介质120中的数据执行多级纠错并且执行计算操作。数据存储装置114可以包括存储数据存储装置114的数据和固件代码的***分区以及存储用于操作***的数据文件和可执行文件的一个或多个操作***分区。
通信电路122可以被体现为能够实现计算装置100和另一个装置之间的网络上的通信的任何通信电路、装置或其集合。通信电路122可以被配置成使用任何一种或多种通信技术(例如,有线或无线通信)和相关联的协议(例如,以太网、蓝牙®、Wi-Fi®、WiMAX等)来实现这样的通信。
说明性通信电路122包括网络接口控制器(NIC)124,其也可以被称为主机结构接口(HFI)。NIC 124可以被体现为一个或多个内插板、子卡、网络接口卡、控制器芯片、芯片组或可以被计算装置100用于与另一个计算装置连接的其它装置。在一些实施例中,NIC 124可以被体现为包括一个或多个处理器的片上***(SoC)的一部分,或者被包括在还包含一个或多个处理器的多芯片封装上。在一些实施例中,NIC 124可以包括本地处理器(未示出)和/或本地存储器(未示出),它们对于NIC 124均是本地的。在这样的实施例中,NIC 124的本地处理器可能能够执行处理器102的功能中的一个或多个。另外地或备选地,在这样的实施例中,NIC 124的本地存储器可以在板级、插槽级、芯片级和/或其它级被集成到计算装置100的一个或多个组件中。
现在参考图5,计算装置100在操作中可以执行用于提供多级纠错的方法500。方法500是参考存储器104描述的。然而,应当理解,方法500可以另外地或备选地使用数据存储装置114的存储器来执行。方法500开始于框502,其中计算装置100(例如,存储器104)确定是否要启用多级纠错(例如,计算类ECC逻辑单元134中的纠错和存储类ECC逻辑单元150中的纠错)。计算装置100可以响应于介质访问电路108和存储器控制器106两者都包括ECC逻辑单元(例如,计算类ECC逻辑单元134和存储类ECC逻辑单元150)的确定、响应于配置设置(例如,在配置文件中)指示启用多级纠错的确定、和/或基于其它因素来启用多级纠错。无论如何,响应于启用多级纠错的确定,方法500前进到框504,其中计算装置100利用包括在存储器104中的介质访问电路(例如,介质访问电路108)从存储器介质(例如,存储器介质110)读取数据。在一些实施例中,并且如框506中所指示的,存储器104利用位于与存储器介质110相同的管芯上的介质访问电路从存储器介质110读取数据(例如,介质访问电路108位于与存储器介质110相同的管芯上)。如框508中所指示的,存储器104可以利用互补金属氧化物半导体(CMOS)(例如,介质访问电路108可以由CMOS形成)从存储介质110读取数据。
仍然参考图5,如框510中所指示的,介质访问电路108可以响应于执行存储器内计算操作的请求而从存储器介质110读取数据。例如,并且如框512中所指示的,介质访问电路108可以响应于执行张量运算的请求(例如,从处理器102通过存储器控制器106发送到介质访问电路108的请求)而读取数据。如框514中所指示的,在一些实施例中,介质访问电路108可以响应于执行矩阵乘法运算的请求而读取数据。例如,请求可以是执行矩阵乘法-累加运算,如框516中所指示的。如框518中所指示的,在读取数据时,介质访问电路108可从具有交叉点架构(例如,存储器单元位于字线和位线的交叉点处并且个别地可寻址并且位存储是基于体电阻中的改变的架构)的存储器介质(例如,存储器介质110)读取数据。此外,并且如框520中所指示的,介质访问电路108可以从具有三维交叉点架构(例如,瓦片的集合被堆叠为层的架构,如参考图2所描述的)的存储器介质(例如,存储器介质110)读取数据。
如框522中所指示的,在读取数据时,介质访问电路108可以读取矩阵数据(例如,要相乘在一起的输入矩阵A和权重矩阵B)。此外,并且如框524中所指示的,介质访问电路108可以从存储器介质110的多个分区(例如,诸如集群310等集群的分区)读取数据。在这样做时,介质访问电路108可以从存储器介质110的四个分区(例如,集群310包含四个分区)进行读取,如框526中所指示的。在说明性实施例中,每个分区保持128位,并且在从四个分区读取时,介质访问电路108读取512位,如框528中所指示的。在说明性实施例中,512位数据集形成供纠错算法中使用的码字(例如,512位的一部分是可用于纠正数据集的剩余位中的错误的冗余位)。在其它实施例中,介质访问电路108可以从不同数量的分区进行读取和/或每个分区中的位的数量可以不同于128位。随后,方法500前进到图6的框530,其中计算装置100(例如,存储器104)利用介质访问电路108对读取的数据执行纠错(例如,纠错算法)以产生在本文中被称为经纠错的数据的结果数据集,其中读取的数据中的一个或多个错误(如果有的话)已经被纠正。
现在参考图6,在说明性实施例中,并且如框532中所指示的,介质访问电路108利用位于介质访问电路108中的纠错逻辑单元(例如,计算类ECC逻辑单元134)对读取的数据执行纠错。在这样做时,并且如框534中所指示的,存储器104利用位于与存储器介质110相同的管芯中的纠错逻辑单元(例如,计算类ECC逻辑单元134可以位于与存储器介质110相同的管芯上)执行纠错。如框536中所指示的,在说明性实施例中,存储器104可以利用与计算装置100的存储器控制器中的纠错逻辑单元不同的纠错逻辑单元执行纠错(例如,计算类ECC逻辑单元134与存储类ECC逻辑单元150不同)。
如上文参考图1所讨论的并且如框538中所指示的,在介质访问电路108中(例如,在计算类ECC逻辑单元134中)执行纠错时,存储器104可以利用配置成与位于存储器控制器106中的纠错逻辑单元相比对不同大小的数据集进行操作的纠错逻辑单元(例如,计算类ECC逻辑单元134被配置成与存储类ECC逻辑单元150相比对不同大小的数据集进行操作)执行纠错。例如,并且如框540中所指示的,存储器104可以利用配置成与存储器控制器中的纠错逻辑单元相比对更小的数据集进行操作的纠错逻辑单元执行纠错(例如,计算类ECC逻辑单元134被配置成与存储类ECC逻辑单元150相比对更小的数据集进行操作)。类似地,并且如框542中所指示的,存储器104可以利用配置成与位于存储器控制器106中的纠错逻辑单元相比执行不同的纠错算法的纠错逻辑单元执行纠错(例如,计算类ECC逻辑单元134可以被配置成执行BCH算法,并且存储类ECC逻辑单元150可以被配置成执行Reed-Solomon纠错算法)。
随后,并且如框544中所指示的,存储器104可以将由计算类ECC逻辑单元134产生的经纠错的数据写入到介质访问电路108中的一个或多个高速暂存(例如,高速暂存132中的一个或多个)。如框546中所指示的,存储器104可以利用介质访问电路108(例如,利用(一个或多个)计算逻辑单元136)对经纠错的数据执行一个或多个存储器内计算操作。例如,并且如框548中所指示的,存储器104可以利用介质访问电路108对经纠错的数据执行一个或多个张量运算,例如一个或多个矩阵乘法操作,如框550中所指示的。(一个或多个)矩阵乘法操作可包括一个或多个矩阵乘法-累加操作,如框552中所指示的(例如,将输入矩阵A乘以权重矩阵B并且累加到输出矩阵C中)。
现在参考图7,在框554中,存储器104可以将经纠错的数据提供给计算装置100的另一个组件。在这样做时,并且如框556中所指示的,存储器104可以利用位于介质访问电路108外部的纠错逻辑单元对数据执行额外纠错。如框558中所指示的,存储器104可以利用位于存储器控制器106中的纠错逻辑单元(例如,存储类ECC逻辑单元150)对数据执行额外纠错。在说明性实施例中,并且如框560中所指示的,存储器104利用配置成与介质访问电路108中的纠错逻辑单元相比对更大的数据集进行操作的纠错逻辑单元执行额外纠错(例如,存储类ECC逻辑单元150被配置成与计算类ECC逻辑单元134相比对更大的数据集进行操作)。照这样,在执行额外纠错时,除了其它数据(例如,来自存储器介质110的额外分区的数据)之外,存储类ECC逻辑单元150还可以对由计算类ECC逻辑单元134在框530中产生的经纠错的数据进行操作。在说明性实施例中,存储器104可以利用配置成对2千位或4千位数据集进行操作(例如,存储类ECC逻辑单元150被配置成对2千位或4千位数据集进行操作)的纠错逻辑单元执行额外纠错,如框562中所指示的。类似地,并且如框564中所指示的,存储器104可以利用配置成与位于介质访问电路中的纠错逻辑单元相比执行不同的纠错算法的纠错逻辑单元执行额外纠错(例如,存储类ECC逻辑单元150可以被配置成执行Reed-Solomon纠错算法,而计算类ECC逻辑单元134可以被配置成执行BCH纠错算法)。
如框566中所指示的,存储器104可以将经纠错的数据提供给计算装置100的处理器(例如,处理器102)。在这样做时,并且如框568中所指示的,存储器104可以将经纠错的数据提供给执行人工智能应用(例如,依赖张量运算来训练神经网络和/或进行推断的应用)的处理器(例如,处理器102)。相关地,并且如框570中所指示的,存储器104可以提供指示人工智能操作的数据(例如,提供给处理器102的经纠错的数据可以指示推断,诸如输入图像中的对象的标识、或其它人工智能相关输出数据)。随后,方法500循环回到图5的框502,其中计算装置100确定是否要继续启用多级纠错(例如,计算类ECC逻辑单元134中的纠错和存储类ECC逻辑单元150中的纠错)。虽然操作被描述为在特定数据大小(例如,512位、2千位、4千位)上执行,但是应当理解,在其它实施例中,数据大小可以不同。
示例
下面提供了本文中公开的技术的说明性示例。技术的实施例可以包括下面描述的示例中的任何一个或多个以及任何组合。
示例1包括一种存储器,所述存储器包括耦合到存储器介质的介质访问电路,其中所述介质访问电路要从所述存储器介质读取数据;以及利用位于所述介质访问电路中的纠错逻辑单元对读取的数据执行纠错以产生经纠错的数据。
示例2包括示例1的主题,并且其中,对所述读取的数据执行纠错包括利用位于与所述存储器介质相同的管芯上的纠错逻辑单元对所述读取的数据执行所述纠错。
示例3包括示例1和2中的任一项的主题,并且其中,所述纠错逻辑单元不同于位于存储器控制器中的第二纠错逻辑单元,并且对所述读取的数据执行纠错包括利用配置成与所述第二纠错逻辑单元相比对更小的数据集进行操作的纠错逻辑单元执行所述纠错。
示例4包括示例1-3中的任一项的主题,并且其中,对所述读取的数据执行纠错包括对来自所述存储器介质的四个分区的数据执行所述纠错。
示例5包括示例1-4中的任一项的主题,并且其中,对所述读取的数据执行纠错包括对512位的读取数据执行所述纠错。
示例6包括示例1-5中的任一项的主题,并且其中,所述存储器还包括存储器控制器,并且所述存储器控制器要对所述经纠错的数据执行额外纠错。
示例7包括示例1-6中的任一项的主题,并且其中,所述存储器控制器还要向所述存储器位于其中的计算装置的处理器提供所述经纠错的数据。
示例8包括示例1-7中的任一项的主题,并且其中,从所述存储器介质读取数据包括从具有交叉点架构的存储器介质读取数据。
示例9包括示例1-8中的任一项的主题,并且其中,从所述存储器介质读取数据包括从具有三维交叉点架构的存储器介质读取数据。
示例10包括示例1-9中的任一项的主题,并且其中,所述介质访问电路还要将所述经纠错的数据写入到高速暂存。
示例11包括示例1-10中的任一项的主题,并且其中,所述介质访问电路还要对所述经纠错的数据执行存储器内计算操作。
示例12包括示例1-11中的任一项的主题,并且其中,对所述经纠错的数据执行存储器内计算操作包括对所述经纠错的数据执行张量运算。
示例13包括示例1-12中的任一项的主题,并且其中,所述介质访问电路由互补金属氧化物半导体(CMOS)形成。
示例14包括一种方法,所述方法包括:由耦合到存储器介质的介质访问电路从所述存储器介质读取数据;以及由位于所述介质访问电路中的纠错逻辑单元对读取的数据执行纠错以产生经纠错的数据。
示例15包括示例14的主题,并且其中,对所述读取的数据执行纠错包括由位于与所述存储器介质相同的管芯上的纠错逻辑单元对所述读取的数据执行所述纠错。
示例16包括示例14和15中的任一项的主题,并且其中,所述纠错逻辑单元不同于位于存储器控制器中的第二纠错逻辑单元,并且对所述读取的数据执行纠错包括由配置成与所述第二纠错逻辑单元相比对更小的数据集进行操作的纠错逻辑单元执行所述纠错。
示例17包括示例14-16中的任一项的主题,并且其中,对所述读取的数据执行纠错包括对来自所述存储器介质的四个分区的数据执行所述纠错。
示例18包括示例14-17中的任一项的主题,并且其中,对所述读取的数据执行纠错包括对512位的读取数据执行所述纠错。
示例19包括一个或多个机器可读存储介质,所述一个或多个机器可读存储介质包括存储在其上的多个指令,所述指令响应于被执行,使得包括在存储器中的介质访问电路:从耦合到所述介质访问电路的存储器介质读取数据;以及利用位于所述介质访问电路中的纠错逻辑单元对读取的数据执行纠错以产生经纠错的数据。
示例20包括示例19的主题,并且其中,对所述读取的数据执行纠错包括利用位于与所述存储器介质相同的管芯上的纠错逻辑单元对所述读取的数据执行所述纠错。
Claims (25)
1.一种存储器,包括:
耦合到存储器介质的介质访问电路,其中所述介质访问电路要:
从所述存储器介质读取数据;以及
利用位于所述介质访问电路中的纠错逻辑单元对读取的数据执行纠错以产生经纠错的数据。
2.根据权利要求1所述的存储器,其中,对所述读取的数据执行纠错包括利用位于与所述存储器介质相同的管芯上的纠错逻辑单元对所述读取的数据执行所述纠错。
3.根据权利要求1所述的存储器,其中,所述纠错逻辑单元不同于位于存储器控制器中的第二纠错逻辑单元,并且对所述读取的数据执行纠错包括利用配置成与所述第二纠错逻辑单元相比对更小的数据集进行操作的纠错逻辑单元执行所述纠错。
4.根据权利要求1所述的存储器,其中,对所述读取的数据执行纠错包括对来自所述存储器介质的四个分区的数据执行所述纠错。
5.根据权利要求1所述的存储器,其中,对所述读取的数据执行纠错包括对512位的读取数据执行所述纠错。
6.根据权利要求1所述的存储器,其中,所述存储器还包括存储器控制器,并且所述存储器控制器要对所述经纠错的数据执行额外纠错。
7.根据权利要求6所述的存储器,其中,所述存储器控制器还要向所述存储器位于其中的计算装置的处理器提供所述经纠错的数据。
8.根据权利要求1所述的存储器,其中,从所述存储器介质读取数据包括从具有交叉点架构的存储器介质读取数据。
9.根据权利要求8所述的存储器,其中,从所述存储器介质读取数据包括从具有三维交叉点架构的存储器介质读取数据。
10.根据权利要求1所述的存储器,其中,所述介质访问电路还要将所述经纠错的数据写入到高速暂存。
11.根据权利要求1所述的存储器,其中,所述介质访问电路还要对所述经纠错的数据执行存储器内计算操作。
12.根据权利要求11所述的存储器,其中,对所述经纠错的数据执行存储器内计算操作包括对所述经纠错的数据执行张量运算。
13.根据权利要求1所述的存储器,其中,所述介质访问电路由互补金属氧化物半导体(CMOS)形成。
14.一种存储器,包括:
用于利用耦合到存储器介质的介质访问电路从所述存储器介质读取数据的部件;以及
用于对读取的数据执行纠错以产生经纠错的数据的部件。
15.根据权利要求14所述的存储器,其中,所述用于对所述读取的数据执行纠错的部件包括用于利用位于与所述存储器介质相同的管芯上的纠错逻辑单元对所述读取的数据执行所述纠错的部件。
16.根据权利要求14所述的存储器,其中,所述用于对所述读取的数据执行纠错的部件包括用于对来自所述存储器介质的四个分区的数据执行所述纠错的部件。
17.根据权利要求14所述的存储器,其中,所述用于对所述读取的数据执行纠错的部件包括用于对512位的读取数据执行所述纠错的部件。
18.根据权利要求14所述的存储器,还包括用于在存储器控制器中对所述经纠错的数据执行额外纠错的部件。
19.根据权利要求18所述的存储器,其中,所述存储器控制器包括用于向所述存储器位于其中的计算装置的处理器提供所述经纠错的数据的部件。
20.根据权利要求14所述的存储器,其中,所述用于从所述存储器介质读取数据的部件包括用于从具有交叉点架构的存储器介质读取数据的部件。
21.根据权利要求20所述的存储器,其中,所述用于从所述存储器介质读取数据的部件包括用于从具有三维交叉点架构的存储器介质读取数据的部件。
22.根据权利要求14所述的存储器,还包括用于将所述经纠错的数据写入到高速暂存的部件。
23.根据权利要求14所述的存储器,还包括用于对所述经纠错的数据执行存储器内计算操作的部件。
24.一种方法,包括:
由耦合到存储器介质的介质访问电路从所述存储器介质读取数据;以及
由位于所述介质访问电路中的纠错逻辑单元对读取的数据执行纠错以产生经纠错的数据。
25.根据权利要求24所述的方法,其中,对所述读取的数据执行纠错包括利用位于与所述存储器介质相同的管芯上的纠错逻辑单元对所述读取的数据执行所述纠错。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/375362 | 2019-04-04 | ||
US16/375,362 US11023320B2 (en) | 2019-04-04 | 2019-04-04 | Technologies for providing multiple levels of error correction |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111796964A true CN111796964A (zh) | 2020-10-20 |
Family
ID=67298635
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010143019.7A Pending CN111796964A (zh) | 2019-04-04 | 2020-03-04 | 用于提供多级纠错的技术 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11023320B2 (zh) |
CN (1) | CN111796964A (zh) |
DE (1) | DE102020106206A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11710030B2 (en) * | 2018-08-31 | 2023-07-25 | Texas Instmments Incorporated | Fault detectable and tolerant neural network |
US11301167B2 (en) * | 2019-05-16 | 2022-04-12 | Intel Corporation | Technologies for providing multiple tier memory media management |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5262342A (en) * | 1988-11-04 | 1993-11-16 | Mitsubishi Denki Kabushiki Kaisha | Method of making a semiconductor memory device having error checking/correcting functions |
US5740188A (en) * | 1996-05-29 | 1998-04-14 | Compaq Computer Corporation | Error checking and correcting for burst DRAM devices |
EP0862762B1 (en) * | 1996-08-16 | 2002-10-09 | Tokyo Electron Device Limited | Semiconductor memory device having error detection and correction |
US6360347B1 (en) * | 1999-05-18 | 2002-03-19 | Advanced Micro Devices, Inc. | Error correction method for a memory device |
JP2000331494A (ja) * | 1999-05-19 | 2000-11-30 | Nec Corp | 半導体記憶装置 |
JP3944380B2 (ja) * | 2001-11-08 | 2007-07-11 | 日本テキサス・インスツルメンツ株式会社 | 誤り訂正回路を備えた半導体記憶装置 |
JP2004234770A (ja) * | 2003-01-31 | 2004-08-19 | Renesas Technology Corp | 半導体記憶装置とテスト方法 |
US7203889B2 (en) * | 2004-04-01 | 2007-04-10 | Intel Corporation | Error correction for memory |
US7774684B2 (en) * | 2006-06-30 | 2010-08-10 | Intel Corporation | Reliability, availability, and serviceability in a memory device |
US8959407B2 (en) * | 2012-11-28 | 2015-02-17 | Intel Corporation | Scaling factors for hard decision reads of codewords distributed across die |
JP2015053096A (ja) * | 2013-09-09 | 2015-03-19 | マイクロン テクノロジー, インク. | 半導体装置、及び誤り訂正方法 |
WO2015116097A1 (en) * | 2014-01-30 | 2015-08-06 | Hewlett-Packard Development Company, L.P. | Joint encryption and error correction encoding |
US9710381B2 (en) * | 2014-06-18 | 2017-07-18 | International Business Machines Corporation | Method and apparatus for cache memory data processing |
KR20180033740A (ko) * | 2016-09-26 | 2018-04-04 | 에스케이하이닉스 주식회사 | 메모리 컨트롤러, 반도체 메모리 시스템 및 그것의 동작 방법 |
US20190317857A1 (en) * | 2019-04-26 | 2019-10-17 | Intel Corporation | Technologies for providing error correction for row direction and column direction in a cross point memory |
US11301167B2 (en) * | 2019-05-16 | 2022-04-12 | Intel Corporation | Technologies for providing multiple tier memory media management |
US11182242B2 (en) * | 2019-06-21 | 2021-11-23 | Intel Corporation | Technologies for preserving error correction capability in compute-in-memory operations |
US11237903B2 (en) * | 2019-06-25 | 2022-02-01 | Intel Corporation | Technologies for providing ECC pre-provisioning and handling for cross-point memory and compute operations |
-
2019
- 2019-04-04 US US16/375,362 patent/US11023320B2/en active Active
-
2020
- 2020-03-04 CN CN202010143019.7A patent/CN111796964A/zh active Pending
- 2020-03-06 DE DE102020106206.0A patent/DE102020106206A1/de active Pending
Also Published As
Publication number | Publication date |
---|---|
US20190227871A1 (en) | 2019-07-25 |
DE102020106206A1 (de) | 2020-10-08 |
US11023320B2 (en) | 2021-06-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3739456A1 (en) | Technologies for providing multiple tier memory media management | |
US11687404B2 (en) | Technologies for preserving error correction capability in compute-in-memory operations | |
US10534747B2 (en) | Technologies for providing a scalable architecture for performing compute operations in memory | |
US11237903B2 (en) | Technologies for providing ECC pre-provisioning and handling for cross-point memory and compute operations | |
EP3731096A1 (en) | Technologies for providing error correction for row direction and column direction in a cross point memory | |
EP3754563A1 (en) | Technologies for performing in-memory training data augmentation for artificial intelligence | |
US20190018805A1 (en) | System and method for fast execution of in-capsule commands | |
US20190146717A1 (en) | Technologies for efficiently accessing data columns and rows in a memory | |
EP3739457A1 (en) | Technologies for performing macro operations in memory | |
US20200402605A1 (en) | Two-Layer Code with Low Parity Cost for Memory Sub-Systems | |
US20190227750A1 (en) | Technologies for performing tensor operations in memory | |
US20210278985A1 (en) | Command batching for a memory sub-system | |
CN111796964A (zh) | 用于提供多级纠错的技术 | |
EP3716076B1 (en) | Technologies for providing high efficiency compute architecture on cross point memory for artificial intelligence operations | |
US11182158B2 (en) | Technologies for providing adaptive memory media management | |
CN112068767A (zh) | 在不改变介质层的情况下将计算能力添加到存储器设备的技术 | |
US12046322B2 (en) | Configurable data protection circuitry for memory devices | |
CN117795466A (zh) | 使用子命令的存取请求管理 |
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 |