CN107924349A - 存储器装置管芯上错误校验和纠正代码 - Google Patents
存储器装置管芯上错误校验和纠正代码 Download PDFInfo
- Publication number
- CN107924349A CN107924349A CN201680050473.XA CN201680050473A CN107924349A CN 107924349 A CN107924349 A CN 107924349A CN 201680050473 A CN201680050473 A CN 201680050473A CN 107924349 A CN107924349 A CN 107924349A
- Authority
- CN
- China
- Prior art keywords
- code
- ecc
- data
- bit
- memory
- 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.)
- Granted
Links
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/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
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/38—Response verification devices
- G11C29/42—Response verification devices using error correcting codes [ECC] or parity check
-
- 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/1068—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 in sector programmable memories, e.g. flash disk
-
- 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/064—Management of blocks
-
- 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
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/52—Protection of memory contents; Detection of errors in memory contents
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/09—Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
- H03M13/095—Error detection codes other than CRC and single parity bit codes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/65—Purpose and implementation aspects
- H03M13/6566—Implementations concerning memory access contentions
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/21—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
- G11C11/34—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
- G11C11/40—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
- G11C11/401—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
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)
- Probability & Statistics with Applications (AREA)
- Computer Security & Cryptography (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- For Increasing The Reliability Of Semiconductor Memories (AREA)
- Dram (AREA)
- Detection And Correction Of Errors (AREA)
Abstract
在其中存储器装置执行管芯上ECC的系统中,ECC操作在按照两个(N/2)位段的N位数据字上,其中代码矩阵具有对应的N个代码,所述N个代码能按照第一部分(N/2)个代码和第二部分(N/2)个代码在其上进行操作以分别计算用于数据字的第一和第二(N/2)位段的第一和第二错误校验。在代码矩阵中,代码矩阵的第一部分中的任何两个代码或代码矩阵的第二部分中的任何两个代码的按位XOR导致不在代码矩阵中的或者在代码矩阵的另一部分中的代码。从而,在一个部分中的误纠正双位错误引起在另一部分中要被切换的位,而不是产生三位错误。
Description
相关申请
此专利申请是基于2015年8月28日提交的美国临时申请No. 62/211,448的非临时申请。此申请要求该临时申请的优先权的权益。该临时申请特此通过引用被结合。
本专利申请涉及如下两个专利申请,这两个申请也要求对上面标识的同一美国临时申请的优先权:题为“MEMORY DEVICE CHECK BIT READ MODE”的专利申请No. TBD[P88609];以及题为“MEMORY DEVICE ERROR CHECK AND SCRUB MODE AND ERRORTRANSPARENCY”的专利申请No. TBD [P93259];这两个申请与此一道同时被提交。
技术领域
描述一般涉及存储器错误管理,并且更具体地说,描述涉及具有执行内部错误校验和纠正的存储器装置的存储器子系统中的错误校验和纠正。
版权声明/许可
此专利文档的公开部分可包含受到版权保护的资料。在该专利文档或专利公开出现在专利和商标局专利文件或记录中时,版权所有人不反对任何人复制该专利文档或专利公开,但以其它方式无论如何保留所有版权权利。版权声明适用于下面所描述的所有数据,并且在此的附图中,且适用于下面描述的任何软件:Copyright© 2015,英特尔公司,保留所有权利。
背景技术
计算装置要求对要执行的数据和代码进行存储。暂态存储装置传统上提供对数据的更快访问以用于执行,并且传统的暂态存储装置用易失性存储器资源实现。易失性存储器在当前计算平台中发现使用,不论是用于服务器、桌面型还是膝上型计算机、移动装置以及消费和商务电子设备。DRAM(动态随机存取存储器)装置是在使用中的最常见类型的易失性存储器装置。随着生产DRAM的制造工艺继续缩放到更小的几何,DRAM错误预计要增加。用于解决增加的DRAM错误的一种技术是采用管芯上ECC(错误校验和纠正)。管芯上ECC指的是驻留在存储器装置自身上的错误检测和纠正逻辑。用管芯上ECC逻辑,DRAM能纠正单个位故障(诸如通过单个错误纠正(SEC))。除了系统级ECC还能使用管芯上ECC,但系统级ECC没有对在存储器装置级已经执行了什么错误纠正的洞察。从而,虽然管芯上ECC能处置存储器装置内部的错误,但错误能累积不被主机系统检测到。
一般而言,错误检测和/或纠正能从最低级别保护(诸如奇偶)到更复杂算法解决方案(诸如双位错误纠正)而变化。奇偶错误生成和校验是快速的,并且能采用单个奇偶位来指示长串中的错误,但它不提供纠正能力。双位错误纠正要求更多资源(时间和代码库)来实现,其对于高速、高带宽应用中的存储器装置中的管芯上ECC可能不可行。虽然更强的代码提供更好的错误检测和纠正,但存在与计算时间和资源的折衷,这有利于管芯上ECC实现中的较弱的代码。
在采用SEC的系统中,诸如实现管芯上SEC的DRAM,ECC能纠正单个位错误(SBE)。然而,双位错误能被解释和“纠正”为SBE。将双位错误误纠正为SBE实际上能产生码字一半中的三位错误,这通过由于将双位错误误解为在由SEC代码指示的位处的错误而引起切换第三位而发生。然而,考虑到更复杂的ECC要求更多计算时间和资源,实现更强的管芯上ECC可能是不实际的。
附图说明
如下描述包含对具有作为本发明实施例实现的示例给出的图示的图的论述。附图应该作为示例而非作为限制来被理解。在本文中使用时,对一个或更多“实施例”的参考要理解为描述包含在本发明至少一个实现中的具体特征、结构和/或特性。从而,在本文中出现的诸如“在一个实施例中”或“在备选实施例中”的短语描述了本发明的各种实施例和实现,并且不一定全都指同一实施例。然而,它们也不一定相互排他。
图1是在其中存储器装置用防止两个位错误被改变成码字一半中的三个位错误的代码矩阵执行ECC的系统的实施例的框图。
图2是具有用防止两个位错误被改变成码字一半中的三个位错误的代码矩阵执行内部错误纠正的存储器装置的系统的实施例的框图。
图3A是具有执行内部ECC的4位接口的存储器装置的实施例的框图。
图3B是具有执行内部ECC的8位接口的存储器装置的实施例的框图。
图3C是具有执行内部ECC的16位接口的存储器装置的实施例的框图。
图4是防止两个位错误被误纠正成码字一半中的三个位错误的代码矩阵的实施例的图解表示。
图5是在执行内部ECC的存储器装置的ECC逻辑的实施例的框图。
图6是码字到数据位的映射的实施例的框图。
图7是校验位生成逻辑和检验子位生成逻辑的实施例的框图。
图8是用于生成校验位的过程的实施例的流程图。
图9是用于用防止两个位错误被误纠正成码字一半中的三个位错误的代码矩阵执行ECC的过程的实施例的流程图。
图10是在其中能实现存储器装置用防止两个位错误被误纠正成码字一半中的三个位错误的代码矩阵执行内部ECC的计算系统的实施例的框图。
图11是在其中能实现存储器装置用防止两个位错误被误纠正成码字一半中的三个位错误的代码矩阵执行内部ECC的移动装置的实施例的框图。
下面是对某些细节和实现的描述,其包含图的描述,图可描绘一些或所有下面描述的实施例,以及论述本文呈现的发明概念的其它潜在实施例或实现。
具体实施方式
如本文中所描述,错误纠正的存储器上应用包含防止双位错误被混淆或误纠正成单个码字一半中的三位错误的错误纠正代码。混淆双位错误能指的是基于错误计算将在码字的两个单独位位置的错误解释为在不同的第三位的错误。从而,当在对单个错误执行错误纠正的系统中存在双位错误时,错误纠正计算能将双位错误解释为在第三位置中的单个错误,从而使系统在尝试纠正所标识的错误中不当地切换第三位。在其中存储器装置执行管芯上ECC的系统中,ECC按照两个(N/2)位段在N位码字或数据字上进行操作。通过将代码分成两段,存储器装置能在整个字上执行SBE(单个位错误)纠正,同时对于双位错误单独对这两段进行校验。ECC基于包含对应于数据字的N位的N个代码的代码矩阵执行计算。能按照第一部分(N/2)个代码和第二部分(N/2)个代码来在代码上进行操作,以分别计算对于数据字的第一和第二(N/2)位段的第一和第二错误校验。
在代码矩阵中,在一部分中的每一个代码都具有如下性质:代码矩阵的第一部分中的任两个毗邻代码或代码矩阵的第二部分中的任两个毗邻代码的按位XOR(异或)导致不在代码矩阵中的或者在代码矩阵的另一部分中的代码。按位XOR被理解成是对应毗邻位的XOR,而不是所有位的XOR或XOR的级联。从而,毗邻代码的按位XOR将导致相同长度的代码而不是单个值。鉴于XOR函数是可交换的,因此任何多个代码的XOR结果导致相同输出(不管代码以什么次序在一起被异或)。从而,本文所描述的代码矩阵因而被构造成:其中如果任何毗邻行的XOR导致不在矩阵中或者在矩阵的另一部分中的代码,则第一部分中的任两个代码或任两行的XOR将指向第二部分中(或者不在矩阵中)的代码,并且反之亦然。从而,双位错误将导致两个代码(其示出错误),并且导致所述两个代码的XOR的等效值,其将不在代码矩阵中或将指向另一部分中的位。从而,双位错误不能指向同一部分中的位,但能仅指向另一部分中的位。在另一部分中将发生对位的误纠正。从而,在一个部分中被错误纠正的双位错误引起在另一部分中要被切换的位,而不是产生三位错误。SEC ECC操作的终结结果将是纠正SBE,在另一部分中产生错误,或者生成不退出(不在代码矩阵中)并且从而检测错误而不纠正错误的代码。从而,存储器装置将返回正确数据,或者返回具有检测到的但未被纠正的错误的数据。
在一个实施例中,采用上面提到的代码的此类错误纠正能在DRAM或其它存储器装置中实现。对存储器装置的参考能适用于不同存储器类型。存储器装置一般指的是易失性存储器技术。易失性存储器是如果对装置中断功率则其状态(以及因此在其上存储的数据)不确定的存储器。非易失性存储器指的是即便对装置中断功率其状态也确定的存储器。动态易失性存储器需要刷新存储在装置中的数据以维持状态。动态易失性存储器的一个示例包含DRAM(动态随机存取存储器),或者某种变体,诸如同步DRAM (SDRAM)。本文所描述的存储器子系统可与多个存储器技术兼容,诸如DDR3(双数据速率版本3,最初版次由JEDEC(联合电子装置工程委员会)在2007年6月27日作出,当前处于版次21)、DDR4(DDR版本4,初始规范由JEDEC在2012年9月公布)、DDR4E(DDR版本4扩展,当前由JEDEC在论述)、LPDDR3(低功率DDR版本3,JESD209-3B,由JEDEC在2013年8月)、LPDDR4 (低功率双数据速率(LPDDR) 版本4,JESD209-4,由JEDEC在2014年8月最初公布)、WIO2(宽I/O 2 (WideIO2),JESD229-2,由JEDEC在2014年8月最初公布)、HBM (高带宽存储器DRAM,JESD235,由JEDEC在2013年10月最初公布)、DDR5(DDR版本5,当前由JEDEC在论述)、LPDDR5(当前由JEDEC在论述)、HBM2(HBM版本2,当前由JEDEC在论述)和/或其它存储器技术,以及基于此类规范的衍生或扩展的技术。
除了易失性存储器或作为其备选,在一个实施例中,对存储器装置的参考能指的是即便对装置中断功率其状态也是确定的非易失性存储器装置。在一个实施例中,非易失性存储器装置是块可寻址存储器装置,诸如NAND或NOR技术。从而,存储器装置还能包含未来代的非易失性装置,诸如三维交叉点存储器装置、或其它字节可寻址非易失性存储器装置或使用硫属相变材料(例如硫属玻璃)的存储器装置。在一个实施例中,存储器装置能是或者包含多阈值级NAND闪速存储器、NOR闪速存储器、单级或多级相变存储器(PCM)、电阻式存储器、纳米线存储器、铁电晶体管随机存取存储器(FeTRAM)、结合忆阻器技术的磁阻随机存取存储器(MRAM)存储器或自旋转移扭矩(STT)-MRAM或以上任何的组合或者其它存储器。
提到“DRAM”的本文描述能适用于允许随机访问的任何存储器装置,不管是易失性还是非易失性。存储器装置或DRAM能指的是管芯本身和/或封装的存储器产品。
DDR4E SDRAM装置被规划成实现内部单个错误纠正(SEC或单个位错误纠正)ECC(错误校验和纠正)以减轻刷新故障并改进DRAM内的数据完整性。考虑使用128个数据位和8个ECC校验位的DDR4E DRAM中的管芯上ECC的示例。在一个实施例中,按照本文所描述的内容,为了ECC代码矩阵的目的,在码字的两半中考虑128个数据位,上半部分64位以及下半部分64位。代码矩阵中的代码对应于数据字中的位,其也能被称为码字。当将数据字或码字视为两个单独半部分时,代码矩阵能被视为代码的两个单独半部分或段,其中上半部分(例如64个代码)对应于上64位,而下半部分(例如64个代码)对应于下64位。下面相对于所描述的各种示例和实施例提供了更多细节。将理解到,对DDR4E以及对128位的码字和128个代码的代码矩阵的参考只是一个示例,并且能使用不同大小的码字和代码矩阵。在一个实施例中,8个校验位对应于128位码字(例如(128,136)汉明(Hamming)码),并且使用不同码字大小能对应于不同数量的校验位。
在一个实施例中,在两个部分或两组的(N/2)位中考虑的N位代码矩阵能被定义成防止从单个半码字中的两个位错误生成三个位错误。代码对应于特定数据位(例如代码[1]对应于数据字位[1])。在一个实施例中,每一个代码指示在其对应位中的错误(基于与校验位的XOR操作)。然而,双位错误将导致生成指向数据字另一半的代码。从而,例如,任两个代码[127:64]的XOR对应于代码[63:0]中的一个或者不在代码矩阵中的代码,并且任两个代码[63:0]的XOR对应于代码[127:64]中的一个或者不在代码矩阵中的代码。从而,在一个部分中的双位错误将导致不切换位,或者从数据字的对应另一部分切换位,而不是在同一部分中切换位(其能在单个部分中引起三位错误)。
所描述的代码被定义成在字的另一半中进行纠正,因此如果双位错误发生,则它将被标识为单个位错误,并且做出尝试来纠正它。此类代码能够使得能够实现在存储器装置ECC与系统范围的ECC之间的更好的操作。能够导致三位错误的传统代码能够导致数据从存储器装置发送到主机,其中主机没有错误纠正的可能性。在一个实施例中,主机能实现使得能够实现双位错误的纠正的ECC。从而,检测到的但未纠正的错误在主机处可以是可纠正的,但如果它们在尝试纠正双位错误中变成三位错误则不可纠正。用这种方式,存储器装置能执行管芯上ECC,并将数据发送到主机,而无需暴露内部ECC信息,同时仍允许主机改进系统RAS(可靠性、可访问性和可服务性)。从而,采用所描述的内部ECC代码的此类ECC实现能被视为将双位错误误纠正混淆到数据字的另一半,而不是混淆到数据字的同一半中的第三位。
图1是在其中存储器装置采用防止两个位错误被改变成码字一半中的三个位错误的代码矩阵执行ECC的系统的实施例的框图。系统100包含计算装置中的存储器子系统的元件。处理器110表示执行操作系统(OS)和应用的主机计算平台的处理单元,其能被统称为存储器的“主机”。OS和应用执行导致存储器访问的操作。处理器110能包含一个或更多单独处理器。每个单独处理器能包含单个和/或多核处理单元。处理单元能是主处理器诸如CPU(中央处理单元)和/或外围处理器诸如GPU(图形处理单元)。系统100能被实现为SOC,或者用孤立组件实现。
存储器控制器120表示系统100的一个或更多存储器控制器电路或装置。存储器控制器120表示响应于处理器110对操作的执行而生成存储器访问命令的控制逻辑。存储器控制器120访问一个或更多存储器装置140。存储器装置140能是按照上面所提到的任何存储器装置的DRAM。在一个实施例中,存储器装置140被组织和管理为不同通道,其中每个通道耦合到总线和信号线,总线和信号线并行耦合到多个存储器装置。每个通道是独立可操作的。从而,每个通道被独立访问和控制,并且对于每个通道,定时、数据传递、命令和地址交换以及其它操作是分开的。在一个实施例中,对于每个通道的设置由单独模式寄存器或其它寄存器设置所控制。在一个实施例中,每个存储器控制器120管理单独存储器通道,尽管系统100能配置成使多个通道由单个控制器管理,或者在单个通道上具有多个控制器。在一个实施例中,存储器控制器120是主机处理器110的部分,诸如在同一管芯上实现的或者与处理器在同一封装空间中实现的逻辑。
存储器控制器120包含用来耦合到系统总线的I/O接口逻辑122。I/O接口逻辑122(以及存储器装置140的I/O 142)能包含管脚、连接器、信号线和/或用来连接到装置的其它硬件。I/O接口逻辑122能包含硬件接口。如图所示,I/O接口逻辑122至少包含用于信号线的驱动器/收发器。通常,集成电路内的导线与压焊或连接器进行接口以接口到装置之间的信号线或迹线。I/O接口逻辑122能包含驱动器、接收器、收发器、端接和/或在装置之间的信号线上发送和/或接收信号的其它电路。系统总线能实现为将存储器控制器120耦合到存储器装置140的多个信号线。系统总线至少包含时钟(CLK)132、命令/地址(CMD)134、数据(DQ)136和其它信号线138。用于CMD 134的信号线能被称为“C/A总线”(或ADD/CMD总线,或者指示地址信息和命令的传递的某一其它命名),并且用于DQ 136的信号线能被称为“数据总线”。在一个实施例中,独立信道具有不同时钟信号、C/A总线、数据总线、以及其它信号线。从而,在独立接口路径能被视为单独系统总线的意义上,系统100能被视为具有多个“系统总线”。将被理解的是,除了明确示出的线,系统总线能包含选通脉冲信令线、警示线、辅助线以及其它信号线。
将被理解的是,系统总线包含配置成在某个带宽操作的数据总线(DQ 136)。基于系统100的设计和/或实现,DQ 136能够每存储器装置140具有更多或更少的带宽。例如,DQ136能支持具有x32接口、x16接口、x8接口或其它接口的存储器装置。约定“xN”(其中N是二进制整数)指的是存储器装置140的接口大小,其表示与存储器控制器120交换数据的信号线DQ 136的数量。存储器装置的接口大小是关于多少存储器装置能在系统100中被每个通道同时使用或者被并行耦合到相同信号线的控制因子。
存储器装置140表示用于系统100的存储器资源。在一个实施例中,每个存储器装置140是单独的存储器管芯,其能每管芯包含多个(例如2个)通道。每个存储器装置140包含I/O接口逻辑142,其具有由装置实现确定的带宽(例如x16或x8或者某一其它接口带宽),并且使存储器装置能够与存储器控制器120进行接口。I/O接口逻辑142能包含硬件接口,并且能按照存储器控制器的I/O 122,但是在存储器装置末端。在一个实施例中,多个存储器装置140并行连接到相同数据总线。例如,系统100能配置有并行耦合的多个存储器装置140,其中每个存储器装置对命令作出响应并访问各自内部的存储器资源160。对于写操作,单独存储器装置140能写总体数据字的一部分,并且对于读操作,单独存储器装置140能取总体数据字的一部分。
在一个实施例中,存储器装置140直接布置在计算装置的母板或主机系统平台(例如处理器110布置在其上的PCB(印刷电路板))上。在一个实施例中,存储器装置140能被组织成存储器模块130。在一个实施例中,存储器模块130表示双列直插式存储器模块(DIMM)。在一个实施例中,存储器模块130表示用来共享访问或控制电路的至少一部分的多个存储器装置的其它组织,其能是单独电路、单独装置或来自主机系统平台的单独板。存储器模块130能包含多个存储器装置140,并且存储器模块能包含对到在它们上布置的所包含的存储器装置的多个单独通道的支持。
存储器装置140各包含存储器资源160。存储器资源160表示用于数据的存储器位置或存储位置的各个阵列。典型地,存储器资源160被管理为数据行,经由高速缓存线(行)和位线(行内的各个位)控制被访问。存储器资源160能被组织为存储器的单独通道(channel)、排(rank)和堆(bank)。通道是到存储器装置140内的存储位置的独立控制路径。排指的是跨多个存储器装置的公共位置(例如不同装置内的相同行地址)。堆指的是存储器装置140内的存储器位置阵列。在一个实施例中,存储器的堆被分成子堆,其中至少一部分共享电路(例如,驱动器、信号线、控制逻辑)用于子堆。
在一个实施例中,存储器装置140包含一个或更多寄存器144。寄存器144表示提供用于存储器装置的操作的设置或配置的存储装置或存储位置。在一个实施例中,作为控制或管理操作的一部分,寄存器144能提供用于存储器装置140的存储位置以存储数据以便由存储器控制器120进行访问。在一个实施例中,寄存器144包含一个或更多模式寄存器。在一个实施例中,寄存器144包含一个或更多多用途寄存器。寄存器144内的位置配置能将存储器装置140配置成操作在不同“模式”,其中命令和/或地址信息或信号线能根据模式触发存储器装置140内的不同操作。寄存器144的设置能指示用于I/O设置的配置(例如定时、端接或ODT(管芯上端接)、驱动器配置、和/或其它I/O设置)。
在一个实施例中,存储器装置140包含ODT 146,作为与I/O 142关联的接口硬件的一部分。ODT 146能如上面提到的那样进行配置,并且向特定的信号线提供对于要施加到接口的阻抗的设置。ODT设置能基于存储器装置是否是访问操作的所选择目标或非目标装置而进行改变。ODT 146设置能影响端接线上的信令的定时和反射。对ODT 146的仔细控制能够在对施加的阻抗以及加载的改进的匹配的情况下实现更高速操作。
存储器装置140包含控制器150,其表示用来控制存储器内的内部操作的存储器装置内的控制逻辑。例如,控制器150对由存储器控制器120发送的命令进行解码,并生成用来执行或满足命令的内部操作。控制器150能被称为内部控制器。控制器150能够确定选择什么模式(基于寄存器144),并且基于选择的模式配置针对存储器资源160的操作的访问和/或执行。控制器150生成用来控制存储器装置140内位的路由的控制信号以为所选择的模式提供恰当的接口,并将命令引导到恰当的存储器位置或地址。
再次对存储器控制器120进行参考,存储器控制器120包含命令(CMD)逻辑124,其表示用来生成发送到存储器装置140的命令的逻辑或电路。通常,存储器子系统中的信令包含命令内或伴随命令的地址信息以指示或选择存储器装置应执行命令所在的一个或更多存储器位置。在一个实施例中,存储器装置140的控制器150包含命令逻辑152用以接收并解码经由I/O 142从存储器控制器120接收的命令和地址信息。基于接收的命令和地址信息,控制器150能控制用来执行命令的在存储器装置140内的逻辑和电路的操作定时。控制器150负责遵守标准或规范。
在一个实施例中,存储器控制器120包含刷新(REF)逻辑126。刷新逻辑126能用在存储器装置140是易失性的并且需要被刷新以维持确定状态的情况。在一个实施例中,刷新逻辑126指示刷新的位置以及要执行的刷新的类型。刷新逻辑126能触发存储器装置140内的自刷新,和/或通过发送刷新命令来执行外部刷新。例如,在一个实施例中,系统100支持所有堆刷新以及每堆刷新,或者其它所有堆命令和每堆命令。所有堆命令引起在并行耦合的所有存储器装置140内选择的堆的操作。每堆命令引起在特定的存储器装置140内特定的堆的操作。在一个实施例中,存储器装置140内的控制器150包含用来在存储器装置140内应用刷新的刷新逻辑154。在一个实施例中,刷新逻辑154生成按照从存储器控制器120接收的外部刷新执行刷新的内部操作。刷新逻辑154能确定刷新是否被指向存储器装置140,以及响应于命令什么存储器资源160要刷新。
在一个实施例中,存储器控制器120包含用来执行系统100的系统级ECC的错误纠正和控制逻辑170。系统级ECC指的是在存储器控制器120应用错误纠正,并且能向来自多个不同存储器装置140的数据位应用错误纠正。ECC 170表示用来使得能够实现系统级ECC操作(诸如双位错误纠正)的电路或逻辑。
在一个实施例中,存储器装置140包含内部ECC 180,其也能被称为管芯上ECC。在一个实施例中,内部ECC 180表示存储器装置140内的SEC ECC逻辑。在一个实施例中,ECC180操作在内部ECC代码182上,内部ECC代码182表示具有代码的代码矩阵,其中代码矩阵的一个部分中的任两个代码的XOR导致不在代码182中的或者在代码矩阵的另一部分中的代码。
在一个实施例中,存储器装置140包含DDR4E SDRAM装置。此类DRAM能具有不同接口(如上面所提到的)。对于是具有x4或x8接口DDR4E SDRAM的存储器装置140的示例,存储器资源160内的数据的内部预取是128位,即便x8是64位预取装置,并且x4装置是32位预取装置。从而,在一个实施例中,存储器装置140预取比针对接口类型所定义的数据更多的数据。在一个实施例中,对于x8装置(或具有x8接口的装置)中的每个读或写事务,DRAM阵列的附加节被内部地进行访问,以提供在128位ECC计算中使用的所要求的附加64位。从而,在x8装置中,每个8个ECC校验位(或ECC校验位字)能被捆绑到DRAM的两个64位节,诸如下面相对于图3B所描述的那样。遵循对于x4装置的情况的类似示例,每个8个ECC位能被捆绑到一行中的四个32位列,诸如下面相对于图3A所描述的那样。对于参考x16装置的类似示例,不要求附加预取,因为预取与外部传递大小相同,尽管预取可从不同堆群得到,诸如下面相对于图3C所描述的那样。
在一个实施例中,存储器装置140在将数据返回到存储器控制器120之前用ECC180和ECC代码182纠正任何单个位错误。在一个实施例中,存储器装置140在读循环期间将不会将纠正的数据写回到阵列。针对混淆的三位错误导致作为双位错误出现在数据字的另一半中的第三错误的情况,对ECC代码182进行编码。
图2是具有用防止两个位错误被改变成码字一半中的三个位错误的代码矩阵执行内部错误纠正的存储器装置的系统的实施例的框图。系统200表示存储器子系统的组件。系统200提供按照图1系统100实施例的存储器子系统的一个示例。系统200能被包含在使用具有内部ECC的存储器的任何类型计算装置或电子电路中,其中内部ECC包含代码矩阵用以将双位错误误纠正混淆到不导致三位错误的数据字的部分。
处理器210表示基于被存储在存储器230中的或要存储在存储器230中的数据执行操作的任何类型处理逻辑或组件。处理器210能是或者包含主机处理器、中央处理单元(CPU)、微控制器或微处理器、图形处理器、外围处理器、应用特定处理器、或其它处理器。处理器210能是或者包含单核或多核电路。存储器控制器220表示用于与存储器230进行接口并管理对存储器230的数据的访问的逻辑。如与上面的存储器控制器一样,存储器控制器220能与处理器210分开或者是其一部分。从存储器230的角度,处理器210和存储器控制器220一起能被视为“主机”,并且存储器230存储用于主机的数据。在一个实施例中,存储器230包含具有内部ECC的DDR4E DRAM(其在该行业可被称为DDR4E装置)。在一个实施例中,系统200包含多个存储器资源230。存储器230能采用支持通过使用存储器中的内部ECC经由存储器控制器220来进行访问的任何类型的架构在系统200中被实现。存储器控制器220包含I/O(输入/输出)222,其包含用来与存储器230的对应I/O 232互连的硬件资源。
存储器控制器220包含命令逻辑224,其表示用来向存储器230发命令的与主机一起的控制逻辑。命令能包含数据访问命令和/或控制命令。命令逻辑224能经由I/O 222发送命令和数据,并从I/O 232接收数据。在一个实施例中,存储器控制器220包含系统ECC逻辑226,其表示用来执行ECC的主机内的逻辑。系统级ECC 226表示能使用来自多个并行存储器装置230的数据提供更高级ECC的ECC。在一个实施例中,系统ECC 226能跨多个并行资源分散错误。通过跨多个资源分散错误,存储器控制器220能恢复数据(甚至是在存储器230中有一个或更多故障的情况下)。存储器故障一般被归类为软件错误或软件故障(它们是通常源自于随机环境条件的瞬态位错误)或者硬件错误或硬件故障(它们是作为硬件故障的结果发生的非瞬态位错误)。
在一个实施例中,系统ECC 226在从存储器230处的内部ECC提供的元数据上进行操作。存储器230包含命令执行234,其表示存储器装置内用来接收并执行来自存储器控制器220的命令的控制逻辑。命令能包含存储器装置要执行的一系列ECC操作。在一个实施例中,存储器230独立于来自主机的特定ECC命令或请求而执行内部ECC。例如,存储器230能响应于读命令而执行ECC。
存储器230包含阵列240,其表示数据被存储在存储器装置中所在的存储器位置的阵列。在一个实施例中,阵列240的每个地址位置244包含关联的用户数据和ECC位。在一个实施例中,地址位置244表示可寻址的数据块,诸如128位块、64位块或256位块。在一个实施例中,地址位置244被组织为存储器位置的段或群组。例如,如图所示,存储器230包含多行242。在一个实施例中,每行242是针对错误进行校验的存储器的一部分或段。在一个实施例中,行242对应于存储器页面或字线。阵列240包含X个行242,并且行242包含Y个存储器位置244。将被理解的是,行242、位置244以及数据和ECC位的组织不一定暗示阵列240中位的物理布局,而是示出理解数据位的可寻址性的一个示例。
在一个实施例中,地址位置244对应于存储器字,且行242对应于存储器页面。存储器的页面指的是为存储器访问操作分配的一定粒度量的存储器空间。在一个实施例中,阵列240具有较大页面大小以容纳除了数据位之外的ECC位。从而,正常页面大小将包含为数据位分配的足够空间,并且阵列240为数据位加上ECC位分配足够空间。
在一个实施例中,存储器230包含内部ECC逻辑250。内部ECC 250包含用来执行错误校验和纠正的电路254。例如,ECC电路254能包含用来从输入数据字中生成校验位并从预取的数据字和对应的ECC校验位中生成检验子的XOR电路。内部ECC 250包含代码矩阵252,其能是或者包含ECC H矩阵。代码矩阵指的是具有要针对错误进行校验的数据字的长度的矩阵,其中每个代码是大小等于用于ECC编码类型的校验位数量的列。例如,对于(128,136)汉明的代码矩阵具有128行的8位代码。
考虑位置244的数据字的长度是N位。从而,系统200能被说成具有存储N位数据字以及与数据字关联的ECC位的阵列240。代码矩阵252能表示存储器230内的代码库,其中存储用于ECC的代码。代码库能包含一个或更多预留的存储器位置244,或者专用于代码矩阵的其它存储。代码矩阵252包含N个代码,它们对应于数据字的N位。在一个实施例中,数据字按照各自为N/2个位的两个段(具有对应的(N/2)位代码部分)被校验。在一个实施例中,ECC电路254基于码字(数据字)和关联的ECC位执行内部ECC。基于从数据字和ECC位上的ECC计算生成的校验值或检验子,内部ECC 250能标识代码矩阵252的代码以确定要纠正数据字的哪个位,或者标识不在代码矩阵252中的代码以确定存在错误,但不纠正错误。从而,ECC电路254能被说成分别基于代码矩阵252的第一部分和第二部分,来分别计算对于数据字的第一和第二(N/2)位段的第一和第二错误校验。
代码矩阵252表示本文所描述的代码矩阵,其中代码矩阵第一部分中的任两个代码的按位XOR生成不在代码矩阵252中的或者在代码矩阵第二部分中的代码。同样,代码矩阵第二部分中的任两个代码的按位XOR生成不在代码矩阵252中的或者在代码矩阵第一部分中的代码。从而,内部ECC 250防止通过不正确地切换正确位值而将双位错误混淆成三位错误。
在一个实施例中,系统ECC 226包含用于测试代码矩阵252的测试模式。例如,如果代码矩阵252是本文所描述的防止双位错误由于误纠正而变成三位错误的代码矩阵,则系统ECC 226能执行某些ECC操作。如果代码矩阵252不是此类代码矩阵,则系统ECC 226能不同地操作(在知道当指示没有错误时,一些返回的数据能够包含三个错误的情况下)。此类测试模式能包含向存储器230发送“中毒的”数据,其是设计成测试代码矩阵252的数据。在一个实施例中,在此类测试模式中,存储器控制器220能将ECC位写到一个或更多位置244,并且然后请求对那些位置的读。在知道什么数据以及什么ECC位在被用于内部ECC 250的情况下,如果存储器230向存储器控制器220返回非预期的数据,则存储器控制器能确定代码矩阵252不符合本文描述的代码矩阵类型。
图3A是具有执行内部ECC的4位接口的存储器装置的实施例的框图。存储器装置302表示图1的存储器140的实施例和/或图2的存储器230的实施例的一个示例。存储器装置302表示x4存储器装置。存储器装置302包含存储器阵列310,其能包含X个字线(WL)和Y个列(COL)。从而,每个字线宽为Y个存储器单元312,并且每列高为X个存储器单元312。将被理解的是,虽然未明确示出,但存储器阵列310包含字线驱动器、位线驱动器、感测电路、保持电容器、开关和/或用来读和/或写各个存储器单元312的其它电路。
存储器装置302包含ECC引擎320,其表示用于存储器装置的内部ECC。ECC引擎320包含用来执行存储器装置302中的ECC计算的ECC逻辑或电路322。ECC引擎320包含或访问代码矩阵324(其被存储在存储器装置302的代码库中)。按照本文描述的任何实施例,代码矩阵将由于双位错误的错误纠正引起的第三位错误从码字的一半混淆到另一半。
在一个实施例中,对于x4装置,单个完整码字是四列访问。存储器阵列310以一种方式示出,以表示在用于ECC目的的码字或数据字与列访问之间的关系。从而,校验位能对应于存储器阵列310的多列。作为结果,每个校验位字能应用于数据的多列(例如4列)。代码矩阵中的代码能提供跨多列的纠正信息。
例如,第一代码位字将包含应用于列[0:3]的校验位。从而,存储器阵列310具有被分成四列访问N、N+1、N+2和N+3的码字。在一个实施例中,上半部码字被映射到N和N+1列访问,而下半部码字被映射到N+2和N+3列访问。校验位[N:(N+3)]表示用于该码字的校验位。在一个实施例中,校验位被存储在列底部的校验位字线,但此类配置仅是一个示例,并且校验位能被存储在存储器阵列310内的其它位置中。
在一个实施例中,ECC逻辑322在具有对应于代码矩阵324上半部的列N和N+1以及对应于代码矩阵324的下半部的列N+2和N+3的码字上执行操作。代码矩阵324包含这样的代码:采用此类映射,它们将促使可被混淆成三个位错误的在N+N+1中发生的任何两个位错误出现在N+2+N+3中,以及同样地,促使可被混淆成三个位错误的在N+2+N+3中发生的任何两个位错误出现在N+N+1中。
图3B是具有执行内部ECC的8位接口的存储器装置的实施例的框图。存储器装置304表示图1的存储器140的实施例和/或图2的存储器230的实施例的一个示例。存储器装置304表示x8存储器装置。存储器装置304包含存储器阵列330,其能包含Z个字线(WL)和Y个列(COL)。从而,每个字线宽为Y个存储器单元332,并且每列高为Z个存储器单元332。将被理解的是,虽然未明确示出,但存储器阵列330包含字线驱动器、位线驱动器、感测电路、保持电容器、开关、和/或用来读和/或写各个存储器单元332的其它电路。在一个实施例中,存储器阵列330的Y个列是与存储器装置302的存储器阵列310的Y个列不同的列数。在一个实施例中,存储器阵列330中的字线数Z不同于存储器装置302的存储器阵列310的字线数X。在一个实施例中,存储器阵列330中的字线数Z与存储器装置302的存储器阵列310的字线数X相同。
存储器装置304包含ECC引擎340,其表示用于存储器装置的内部ECC。ECC引擎340包含用来执行存储器装置304中的ECC计算的ECC逻辑或电路342。ECC引擎340包含或访问代码矩阵344(其被存储在存储器装置304的代码库中)。按照本文描述的任何实施例,代码矩阵将由于双位错误的错误纠正引起的第三位错误从码字的一半混淆到另一半。
在一个实施例中,对于x8装置,单个完整码字是两列访问。存储器阵列330以一种方式示出以表示在用于ECC目的的码字或数据字与列访问之间的关系。从而,校验位能对应于存储器阵列330的多列。作为结果,每个校验位字能应用于数据的多列(例如2列)。代码矩阵中的代码能提供跨多列的纠正信息。
例如,第一代码位字将包含应用于列[0:1]的校验位。从而,存储器阵列330具有被分成两列访问N和N+1的码字。 在一个实施例中,上半部码字被映射到N列访问,而下半部码字被映射到N+1列访问。校验位[N:(N+1)]表示用于该码字的校验位。在一个实施例中,校验位被存储在列底部的校验位字线,但此类配置仅是一个示例,并且校验位能被存储在存储器阵列330内的其它位置中。
在一个实施例中,ECC逻辑342在具有对应于代码矩阵344上半部的列N以及对应于代码矩阵344的下半部的列N+1的码字上执行操作。代码矩阵344包含这样的代码:采用此类映射,它们将促使可被混淆成三个位错误的在N中发生的任何两个位错误出现在N+1中,以及同样地,促使可被混淆成三个位错误的在N+1中发生的任何两个位错误出现在N中。
图3C是具有执行内部ECC的16位接口的存储器装置的实施例的框图。存储器装置306表示图1的存储器140的实施例和/或图2的存储器230的实施例的一个示例。存储器装置306表示x16存储器装置。存储器装置306包含存储器阵列350,其能包含R个字线(WL)和Y个列(COL)。从而,每个字线宽为Y个存储器单元352,并且每列高为R个存储器单元352。将被理解的是,虽然未明确示出,但存储器阵列350包含字线驱动器、位线驱动器、感测电路、保持电容器、开关、和/或用来读和/或写各个存储器单元352的其它电路。在一个实施例中,存储器阵列350的Y个列与存储器装置302的存储器阵列310或装置304的存储器阵列330的Y个列是不同的列数。在一个实施例中,存储器阵列350中的字线数R不同于存储器装置302的存储器阵列310的字线数X和/或不同于存储器阵列330的字线数Z。在一个实施例中,存储器阵列350中的字线数R与存储器装置302的存储器阵列310的字线数X相同和/或与存储器阵列330的字线数Z相同。
存储器装置306包含ECC引擎360,其表示用于存储器装置的内部ECC。ECC引擎360包含用来执行存储器装置306中的ECC计算的ECC逻辑或电路362。ECC引擎360包含或访问代码矩阵364(其被存储在存储器装置306的代码库中)。按照本文描述的任何实施例,代码矩阵将由于双位错误的错误纠正引起的第三位错误从码字的一半混淆到另一半。
在一个实施例中,对于x16装置,单个完整码字是单列访问。存储器阵列350以一种方式示出,以表示在用于ECC目的的码字或数据字与列访问之间的关系。在一个实施例中,校验位能对应于存储器阵列350的多列(但其来自不同堆群BG0和BG1)。例如,第一代码位字将包含应用于BG0和BG1二者的列[0]的校验位。从而,存储器阵列350具有来自单列访问的码字:来自BG0的列N和来自BG1的列N。在一个实施例中,上半部码字被映射到来自BG0的列访问,而下半部码字被映射到来自BG1的列访问。校验位[N,N]表示用于码字的校验位。在一个实施例中,校验位被存储在列底部的校验位字线,但此类配置仅是一个示例,并且校验位能被存储在存储器阵列350内的其它位置中。
在一个实施例中,ECC逻辑362在具有对应于代码矩阵364上半部的BG0的列N以及对应于代码矩阵364的下半部的BG1的列N的码字上执行操作。代码矩阵364包含采用此类映射将促使可被混淆成三个位错误的在一半中发生的任何两个位错误出现在另一半中的代码。
在一个实施例中,代码矩阵364中的N个代码中的每个代码提供用于从单独的堆群访问两个单独(N/2)位列的ECC信息。备选地,它能被视为对于单个N位列的访问(但是是从单独的群)。在一个实施例中,ECC引擎360在来自单独预取的两个段上执行ECC,并仅从一个选择的段向主机传送数据。
一般而言,关于存储器装置302、304和306(在一个实施例中,是x4或x8 DDR4E装置),内部预取是128位,尽管x8装置具有64位预取装置,并且x4装置具有32位预取。对于x8装置中的每个读或写事务,内部地访问存储器阵列的两列,以提供在128位ECC计算中使用的所要求的附加64位。从而,在x8装置中,每个8位ECC校验位字被捆绑到存储器阵列330的两个64位节。在x4装置的情况下,在一个实施例中,每个8个ECC校验位字被捆绑到一行中的四个32位列。在一个实施例中,对于x16装置,不要求附加预取,因为该预取与外部传递大小相同。
在一个实施例中,在读时,DDR4E DRAM在将数据返回到存储器控制器之前纠正任何单个位错误。DRAM在读循环期间将不会将纠正的数据写回到阵列。对于双位错误,ECC代码可将错误误纠正成三位错误。在混淆的三位错误的情况下,如果双位错误发生在码字的上半部中,则代码被构造成使误纠正发生在码字的下半部中。并且同样地,如果双位错误发生在码字的下半部中,则误纠正将发生在码字的上半部中。
在一个实施例中,在写时,DDR4E DRAM计算ECC并将数据和ECC位写到阵列。如果外部数据传递大小小于128位码字(例如对于x4和x8装置),DRAM能执行内部“读-修改-写”操作以读出阵列的额外部分、修改该数据群、并且然后将修改的数据用新数据写回。在一个实施例中,DRAM在合并进来的写数据之前纠正源自于内部读的任何单个位错误。在一个实施例中,DRAM在将数据和ECC位写到阵列之前重新计算ECC校验位。在x16 DDR4E的情况下,不要求内部读。
图4是防止两个位错误被误纠正成码字一半中的三个位错误的代码矩阵的实施例的图解表示。H矩阵410表示按照本文任何系统的实施例与128位码字或数据字兼容的代码矩阵。矩阵410能是SEC汉明码的一个实施例,确切地说,是(128,136)汉明码的一个示例。矩阵410包含128个代码,对于每个数据位[127:0]有一个代码位。在一个实施例中,矩阵420的每一个代码对应于一个数据位(如下面所示出)。一个代码包含8个校验位CB[0:7]。当根据存储在存储器中的数据字和校验位计算检验子时,ECC引擎能确定检验子是否对应于矩阵410中的代码中的一个。如果ECC引擎确定检验子与代码中的一个匹配,则ECC引擎切换对应的数据位以纠正错误。
矩阵410中的所有代码是不同的。在一个实施例中,矩阵410中的代码被分成不同部分,代码位部分420和代码位部分430。在一个实施例中,对于128位代码矩阵的两个64位部分,上半部分代码(部分420)对应于数据位[63:0],且下半部分代码(部分430)对应于数据位[127:64]。在一个实施例中,对代码部分420的毗邻代码进行“异或”或对代码部分430的毗邻代码进行“异或”导致或者不在矩阵410中或者在另一部分中的代码。
例如,考虑部分420的列442和444的按位XOR。列442具有位模式(01111100),且列444具有位模式(11100000),并且所得到的所述两列的按位XOR是(10011100)。将观测到,(10011100)是列450的位模式,其是部分430中的代码,而不是部分420中的代码。进一步考虑部分430的列446和448的按位XOR。列446具有位模式(10001011),且列448具有位模式(10001101),并且所得到的所述两列的按位XOR是(00000110),其在矩阵410中未被发现。仅有两个示例,并且将观测到,所述部分中的所有代码具有相同性质。
在一部分内的任何毗邻列或代码的按位XOR导致不在矩阵410中的或者在另一半或另一部分中的代码。从而,代码矩阵的一部分内的任何列的按位XOR导致在矩阵410中未发现的或者在另一部分中发现的位模式。例如,考虑列446与列450的按位XOR。(10001011)^(10011100)的XOR导致(00010001)的位模式,这在代码矩阵410中未被发现。
将被理解到,按照所描述的内容,代码矩阵410仅表示代码矩阵的一个示例。在一个实施例中,矩阵410能具有更少的代码,其对应于更短或更长的码字(例如更少或者更多的数据位)。代码能具有更少或更多的校验位。虽然上半部(代码部分420)被示出为对应于数据位[63:0],但在不同实现中能交换上半部和下半部。考虑其中计算检验子导致列442的位模式的示例。此类情况发生在数据位[11]具有错误时。从而,存储器装置能切换数据位[11]来纠正错误。现在考虑其中数据位[11]和数据位[10]都有错误的示例。在此类示例中,所得到的检验子将是列442和444的按位XOR。如果该结果是部分420中的代码,则双位错误能够被变成三位错误。相反,在矩阵410中,列442和444的按位XOR的结果是列450的代码。从而,存储器装置将切换数据位[119]。当数据被返回到主机时,它能检测并纠正数据位10、数据位[11]和数据位[119]中的错误,但是如果除了在数据位[10]和数据位[11]中存在错误外,还不正确地切换了数据位[63:0]范围内的另一个位,则它可能不能够纠正错误。在一个实施例中,主机能够每半数据字纠正两个位。在一个实施例中,主机甚至能纠正一半中的两个位错误和另一半中的单个位错误,但不能纠正单个半中的三个位错误。
虽然在图中示出了代码矩阵,但为了完整性,在此复制矩阵410。此外,矩阵410是具有本文描述的性质的代码矩阵的无数示例中的一个。在一个示例中,8位代码或校验位字的上部64个位[63:0]如下。为了易于阅读,在部分420中的位[31]与位[32]之间定位有间隔以及在部分430中的位[95]与位[96]之间定位有间隔。在一个实施例中,具有用于内部ECC的矩阵410的存储器装置将执行SEC,或者将纠正在整个字中检测到的SBE,同时在每半中针对双位错误进行校验。
CB[0] = 0000000000000000000000000000000
对于下部的64个位[127:64],CB[0] = 1111111111111111111111111111111
图5是在执行内部ECC的存储器装置的ECC逻辑的实施例的框图。按照本文描述的实施例,系统500是用于带有具有应用防止数据字的每半部分的两个位错误被混淆成该半部分中的三个位错误的代码矩阵的内部ECC的存储器装置的存储器子系统的ECC分量操作的一个示例。系统500提供了DRAM中的内部ECC的示例,其生成并存储内部校验位。主机510包含管理对存储器520的访问并且能被集成在处理器芯片(例如iMC)上的存储器控制器或者等效或备选电路或组件。主机510在从存储器520读的数据上执行外部ECC。
系统500图示了存储器520中的写路径532,其表示数据从主机510被写到存储器520的路径。主机510将数据542提供到存储器520以便写到存储器阵列。在一个实施例中,存储器520用校验位生成器522生成校验位544以与存储器中的数据一起存储,这能是用于码字校验/纠正的内部ECC位的一个示例。校验位544能使存储器520能够纠正可能在向存储器阵列写以及从存储器阵列读中发生的错误。数据542和校验位544能被包含为码字进546(其被写到存储器资源)。将被理解的是,校验位544表示存储器装置内的内部校验位。在一个实施例中,不存在到校验位544的写路径。在一个实施例中,存在仅用于测试存储器520的代码矩阵目的的到校验位544的写路径。
读路径534表示数据从存储器520被读到主机510的路径。在一个实施例中,写路径532和读路径534的至少某些硬件组件是相同硬件。在一个实施例中,存储器520响应于来自主机510的读命令来取码字出552。码字能包含数据554和校验位556。数据554和校验位556能分别对应于在写路径532中被写的数据542和校验位544,如果写命令和读命令的地址位置位相同的话。将被理解的是,读路径534中的错误纠正能包含将XOR(异或)树应用到对应H矩阵以检测错误并有选择地纠正错误(在单个位错误的情况下)。
如在本领域中所理解的,H矩阵指的是汉明码奇偶校验矩阵,其示出了码字数位的线性组合如何等于0。在一个实施例中,ECC包含将ECC校验位与作为检验子生成的完全相同版本进行“异或”,这产生0。从而,H矩阵行能够标识对于要成为码字一部分的分量或数位必须满足的奇偶校验等式的系数。在一个实施例中,存储器520包含用来生成错误向量或检验子的检验子生成器524。在一个实施例中,校验位生成器522和检验子生成器524完全由用于存储器装置的对应H矩阵规定。
在一个实施例中,检验子生成器524将检验子558传到检验子解码526,其使存储器能够向数据554应用校验位556以检测在读数据中的错误。按照本文描述的任何实施例,检验子解码526能针对ECC代码向量或代码矩阵校验检验子558。数据554也能被转发到错误纠正528以便纠正检测到的错误。
在一个实施例中,如果在读数据中没有错误(例如零检验子558),则检验子解码526能按照没有错误562将数据传到主机510。在一个实施例中,如果存在单个位错误(例如匹配H矩阵的其中一列的非零检验子558),则检验子解码526能生成具有错误位置564的CE(纠正的错误)信号,其是到错误纠正逻辑528的纠正的错误指示。错误纠正528能将纠正的错误应用于数据554中的规定位置,以生成纠正的数据566以便写到主机510。
在一个实施例中,检验子解码526对于如下条件应用单独的函数。在零检验子的情况中,检验子解码526能够不向主机510传递错误数据562。在匹配H矩阵的其中一列的非零检验子的情况中,ECC引擎能翻转或切换对应位以产生被纠正的错误信号(CE)。错误纠正528能通过改变标识的位564来执行实际数据纠正。在一个实施例中,在不匹配任一列的非零检验子的情况下,检验子解码将错误数据发送到主机510。当在矩阵中发现对应代码时,发送从错误纠正逻辑528发送的纠正的数据566。在一个实施例中,检验子解码526将数据标识为被检测的未纠正错误(DUE)。
图6是到数据位的码字映射的实施例的框图。映射600示出依据按照本文描述的任何实施例执行内部ECC并利用代码矩阵的存储器装置的I/O接口的实施例的码字映射的一个实施例。虽然图3A、3B和3C示出了校验位到数据字或码字位的映射,并且图4示出了代码矩阵代码到数据字的数据位的映射,但是映射600示出了对于具有不同接口类型的装置的I/O映射。
在一个实施例中,对于x16装置,上半部码字610被映射到DQ[0:7]作为列访问的一半,并且下半部码字620被映射到DQ[7:15]作为列访问的另一半。x16装置中的单列访问能提供16个DQ位。在一个实施例中,对于x8装置,上半部码字610被映射到DQ[0:7]作为一个列访问(N),并且下半部码字620被映射到DQ[8:15]作为列访问N+1。在一个实施例中,x4装置能将码字分成四个列访问(N, N+1,N+2,N+3),其中上半部码字610映射到N和N+1,并且下半部码字620映射到N+2和N+3。采用到上半部码字610和下半部码字620的映射,可被混淆成三个位错误的在码字一半中发生的任何两个位错误将总是在码字另一半中出现。比如,对于x8装置,对于在码字一半中可被混淆成3个位错误的在N或N+1中发生的任何2个位错误,被混淆的第三错误将总是在另一个列访问(N+1,N)中出现。
图7是校验位生成逻辑和检验子位生成逻辑的实施例的框图。在ECC引擎的实施例中能够使用校验位和检验子位生成逻辑,其中ECC引擎使用将源自对两个位错误的误纠正的潜在第三位错误从检测到所述两个位错误所在的地方映射到码字的另一半的代码矩阵。校验位生成逻辑702表示用来执行生成校验位的ECC操作的逻辑。检验子位生成逻辑704表示用来执行生成检验子位以与校验位相比较的ECC操作的逻辑。为了在附图中的说明目的,仅示出了与校验位CB[0]相关的逻辑。在一个实施例中,各种数据位,但不一定是所有数据位,有选择地在一起进行“异或”以生成校验位,并且在相反侧生成检验子位。将被理解的是,能使用其它数据位映射。
将被理解的是,作为技术问题,对于两个输入仅能存在真XOR操作,其中如果且仅当仅其中一个输入为1时,输出是1。然而,一般的惯例是将XOR操作的级联表示为多输入XOR(意味着输入数量大于2),诸如XOR 720和XOR 750。XOR操作具有可交换性质,并且对多对输入的XOR,以及然后那些操作的输出的系列XOR能在具有相同的结果下按任何次序被互换。从而,XOR 720和XOR 750具有模2加法的实际效果,这也相当于奇数奇偶检测。当在输入之间存在奇数个1时,奇数奇偶检测提供“1”作为输出,并且当在输入之间存在偶数个1时,提供输出0。
对于校验位生成702,ECC引擎从主机接收写数据字710 (D[127:0])。在一个实施例中,XOR 720作为输入接收D[127:66]和D[10:0]。此外,将被理解的是,能使用不同数据位组合。对于不同校验位(例如CB[1]、CB[2]、 ...),能使用不同位组合。组合被预先配置来确保每次执行相同操作以获得一致的结果。校验位[0]的一个示例从而能被表示如下:CB[0]=D[127]^D[126] ^...^D[67]^D[66]^D[10]^D[9] ^...^D[1]^D[0],其中操作符“^”表示XOR操作。
对于检验子位生成704,ECC引擎从存储器阵列接收写数据字730 (D[127:0])。ECC引擎还接收校验位字740 (CB[7:0])。在一个实施例中,XOR 750作为输入接收D[127:66]以及D[10:0]和CB[0]。此外,将被理解的是,能使用不同的数据位组合,但检验子生成将与用于对应校验位的校验位生成执行相同的操作。从而,如图所示,检验子位生成704执行与校验位生成702执行的用来生成CB[0]的操作相同的操作以生成SB[0]。与检验子位生成704的差异在于,ECC引擎还对对应的校验位(在此示例中是CB[0])进行异或以确定是否存在差异。检验子位[0]的一个示例从而能被表示如下:SB[0]=D[127]^D[126] ^...^D[67]^D[66]^D[10]^D[9] ^...^D[1]^D[0]^CB[0],其中操作符“^”表示XOR操作。
虽然CB[0]能被表示为XOR 750的另一个输入,但为了示出基本XOR操作在校验位生成702与检验子位生成704之间是相同的,并且检验子生成进一步包含校验位操作数,检验子位生成还包含与XOR 750级联的XOR 752。将被理解的是,如果存储的数据位未从接收的数据位被改变或者恶化(或者读数据字730匹配写数据字710),则检验子位生成704的终结结果将是0输出(或者0检验子)。将被理解的是,校验位和检验子位的某种组合应该测试所有数据字位以确保没有位恶化。如果读数据字730与写数据字710相等,则XOR 750将与XOR 720产生相同的输出,其将匹配CB[0]的值。从而,如果数据未恶化,则XOR 752的输出将是0,并且仅当存在错误时才将是1。
图8是用于生成校验位的过程的实施例的流程图。用于生成校验位的过程800按照本文描述的实施例要由ECC引擎执行。存储器装置接收读请求,802,并接收用于写请求的数据字和地址位置信息,804。在一个实施例中,存储器装置包含内部ECC引擎用来计算对于数据字的校验位,806。存储器装置能存储校验位以供随后在对读执行ECC中使用以减少被返回到存储器控制器的错误数据位的数量。
在一个实施例中,ECC引擎选择数据字位,并将它们路由到用来计算校验位的逻辑,808。ECC引擎能对于校验位字中的所有校验位(例如对于128位数据字的8位)重复校验位计算。在一个实施例中,计算包含上面在图7中所描述的XOR逻辑。在一个实施例中,ECC引擎包含用于要并行地被计算的所有校验位的并行逻辑(例如具有单独逻辑的不同路径)。在概念上,过程800表示ECC引擎确定是否更多的校验位要被计算以示出对于每一个单独校验位能执行单独计算,810。如果有更多校验位要计算,812“是”分支,则ECC引擎选择数据字位以用于随后校验位,其将是与先前校验位不同的位模式,808,并将对于所有校验位重复。当没有更多校验位要计算时,812“否”分支,则存储器装置将数据字及其关联的校验位存储在存储器阵列中,814。
图9是用于采用防止两个位错误被误纠正成码字一半中的三个位错误的代码矩阵执行ECC的过程的实施例的流程图。用于执行内部ECC的过程900按照本文描述的实施例要由ECC引擎执行。在一个实施例中,过程900包含在计算检验子中与过程800的公共路径。存储器装置接收读请求,902,并从读请求中标识的地址位置取数据字,904。存储器装置取与数据字关联的校验位,906。
在一个实施例中,存储器装置包含内部ECC引擎用以计算用于数据字的检验子位,908。存储器装置能使用存储的校验位纠正单个位错误以减少被返回到存储器控制器的错误数据位的数量。在一个实施例中,ECC引擎选择数据字位以及关联的校验位,并将它们路由到用来计算检验子位的逻辑,910。ECC引擎能对于要计算的所有检验子位(例如对于128位数据字的8位)重复校验位计算。在一个实施例中,计算包含上面在图7中所描述的XOR逻辑。在一个实施例中,ECC引擎包含用于要并行地被计算的所有校验位的并行逻辑(例如具有单独逻辑的不同路径)。在概念上,过程900表示ECC引擎确定是否更多的检验子位要被计算以示出对于每一个单独检验子位能执行单独计算,912。
如果有更多检验子要计算,912“是”分支,则ECC引擎选择数据字位和校验位用于随后检验子位,其将是与先前检验子位不同的位模式并且是与选择的校验位匹配的位模式,910,并且将对于所有校验位重复。当没有更多检验子位要计算时,912“否”分支,在一个实施例中,ECC引擎确定检验子字是否匹配对应的校验位字,914。如上面所提到的,此类确定能通过将每个检验子位与对应校验位进行XOR来完成以确定是否存在零检验子或非零检验子。非零检验子指示数据字中的错误。
从而,如果检验子位匹配校验位,916“是”分支,则ECC引擎能将数据标识为没有错误,并且存储器装置能将数据字返回到存储器控制器,918。如果同步位不匹配校验位,916“否”分支,则ECC引擎能确定检验子是否匹配代码矩阵中的列,920。代码矩阵是按照本文所描述的内容的代码矩阵,其中校验操作发生在数据字半上,并且采用对应半对代码矩阵进行操作。错误纠正发生在整个字上,整个字在所述的两半上。用于单个位错误的非零检验子能发生在代码矩阵中的任何地方,并且标识要翻转哪个数据字位以纠正错误。如果数据字半包含两个位错误,则ECC操作将影响所述两个不正确位的错误代码的XOR。在一半中的所述两个代码的XOR将生成在代码矩阵的另一半中出现的代码,并且将使ECC引擎翻转在数据字的另一半中的位。传统上,此类代码能够发生在同一半中,从而导致在单个半中的三个位错误。如所描述的,通过切换另一半中的位,在一半中避免单个半中的此类三个位错误。
采用此类映射,ECC逻辑能向主机提供存储器装置的内部ECC将是对系统级ECC的补充的更大置信度,而不是产生主机不能纠正的更复杂错误。ECC引擎能确定当在矩阵的代码与检验子之间存在代码匹配时,922“是”分支,并且切换由代码指示的数据位,以及返回纠正的数据字,924。ECC引擎能确定当不存在代码匹配时,922“否”分支,并且按照具有检测到的未纠正的错误将未纠正的数据字返回到存储器控制器,926。
图10是在其中能实现存储器装置用防止两个位错误被误纠正成码字一半中的三个位错误的代码矩阵执行内部ECC的计算系统的实施例的框图。系统1000表示按照本文描述的任何实施例的计算装置,并且能是膝上型计算机、桌面型计算机、服务器、游戏或娱乐控制系统、扫描仪、复印机、打印机、路由或交换装置或者其它电子装置。系统1000包含处理器1020,其提供用于系统1000的处理、操作管理、和指令执行。处理器1020能包含任何类型的微处理器、中央处理单元(CPU)、处理核或其它处理硬件以提供用于系统1000的处理。处理器1020控制系统1000的总体操作,并且能够是或者包含一个或更多可编程通用或专用微处理器、数字信号处理器(DSP)、可编程控制器、专用集成电路(ASIC)、可编程逻辑装置(PLD)等,或此类装置的组合。
存储器子系统1030表示系统1000的主存储器,并且提供对要由处理器1020执行的代码或者要在执行例程中使用的数据值的暂时存储。存储器子系统1030能包含一个或更多存储器装置,诸如只读存储器(ROM)、闪速存储器、一个或更多种类的随机存取存储器(RAM)或其它存储器装置或此类装置的组合。存储器子系统1030除了其它事项外还存储和托管操作系统(OS)1036以提供用于在系统1000中执行指令的软件平台。此外,其它指令1038从存储器子系统1030被存储和执行以提供系统1000的逻辑和处理。OS 1036和指令1038由处理器1020执行。存储器子系统1030包含存储器装置1032,其中它存储数据、指令、程序或其它项目。 在一个实施例中,存储器子系统包含存储器控制器1034,其是用来生成并发出命令给存储器装置1032的存储器控制器。将被理解的是,存储器控制器1034能够是处理器1020的物理部分。
处理器1020和存储器子系统1030被耦合到总线/总线系统1010。总线1010是表示任何一个或更多单独物理总线、通信线/接口、和/或通过适当的桥、适配器和/或控制器连接的点对点连接的抽象。因此,总线1010例如能包含如下中的一个或多个:系统总线、外围组件互连(PCI)总线、超传输或工业标准架构(ISA)总线、小型计算机系统接口(SCSI)总线、通用串行总线(USB)或电气与电子工程师协会(IEEE)标准1394总线(通常称为“火线”)。总线1010的总线也能对应于网络接口1050中的接口。
系统1000还包含一个或更多输入/输出(I/O)接口1040、网络接口1050、一个或更多内部大容量存储装置1060以及耦合到总线1010的外围接口1070。I/O接口1040能包含一个或更多接口组件,通过这些接口组件用户与系统1000交互(例如视频、音频和/或字母数字对接)。网络接口1050给系统1000提供了在一个或更多网络上与远程装置(例如服务器、其它计算装置)通信的能力。网络接口1050能包含以太网适配器、无线互连组件、USB(通用串行总线)或其它有线的或基于无线标准的接口或专有接口。
存储装置1060能够是或包含用于以非易失性方式存储大量数据的任何常规介质,诸如一个或更多基于磁、固态或光的盘或组合。存储装置1060以永久状态保存代码或指令和数据1062(即,该值被保留,尽管中断到系统1000的功率)。存储装置1060一般能被视为“存储器”,尽管存储器1030是用来向处理器1020提供指令的执行或操作存储器。然而存储装置1060是非易失性的,存储器1030能包含易失性存储器(即,如果对系统1000中断功率,则数据的值或状态是不确定的)。
外围接口1070能包含上面未具体提到的任何硬件接口。外围一般指的是依赖地连接到系统1000的装置 。依赖连接是这样的连接,其中系统1000提供在其上执行操作并且用户与其交互的软件和/或硬件平台。
在一个实施例中,存储器1032是DRAM。在一个实施例中,处理器1020表示执行存储在一个或更多DRAM存储器1032中的数据的一个或更多处理器。在一个实施例中,网络接口1050与在另一网络位置中的另一装置交换数据,并且该数据是被存储在存储器1032中的数据。在一个实施例中,系统1000包含用来执行存储器内的内部ECC的ECC控制1080,并且从而ECC控制1080能够至少部分地被表示在存储器1032内。ECC控制1080还能表示在存储器控制器1034处的系统范围的ECC,其使用如下的事实:存储器1032执行内部ECC以为系统1000提供更稳健的ECC。关于存储器1032中内部ECC的ECC控制1080包含按照本文描述的任何实施例的代码矩阵。从而,ECC控制1080包含能在与用于读和写操作的数据字的两个段对应的两个部分中操作的代码矩阵。不同部分中的两个代码的按位XOR导致出现在另一部分中或不出现在代码矩阵中的代码。
图11是在其中能实现存储器装置用防止两个位错误被误纠正成码字一半中的三个位错误的代码矩阵执行内部ECC的移动装置的实施例的框图。装置1100表示移动计算装置,诸如计算平板、移动电话或智能电话、无线使能的电子阅读器、可穿戴计算装置或其它移动装置。将被理解的是,一般性地示出了某些组件,并且在装置1100中并未示出此类装置的全部组件。
装置1100包含处理器1110,处理器1110执行装置1100的主处理操作。处理器1110能包含一个或更多物理装置,诸如微处理器、应用处理器、微控制器、可编程逻辑装置或其它处理部件。由处理器1110执行的处理操作包含对在其上执行应用和/或装置功能的操作平台或操作系统的执行。处理操作包含与和人类用户或与其它装置的I/O(输入/输出)相关的操作、与功率管理相关的操作、和/或与将装置1100连接到另一装置相关的操作。处理操作还能包含与音频I/O和/或显示器I/O相关的操作。
在一个实施例中,装置1100包含音频子系统1120,其表示与向计算装置提供音频功能关联的硬件(例如音频硬件和音频电路)以及软件(例如驱动器、编解码器)组件。音频功能能包含扬声器和/或耳机输出,以及麦克风输入。用于此类功能的装置能被集成到装置1100中,或被连接到装置1100。在一个实施例中,用户通过提供由处理器1110接收和处理的音频命令与装置1100交互。
显示子系统1130表示提供用于用户与计算装置进行交互的视觉和/或触觉显示的硬件(例如显示器装置)和软件(例如驱动器)组件。显示子系统1130包含显示接口1132,其包含用于向用户提供显示的具体屏幕或硬件装置。在一个实施例中,显示接口1132包含与处理器1110分开的用于执行与显示相关的至少一些处理的逻辑。在一个实施例中,显示子系统1130包含向用户提供输出和输入二者的触摸屏装置。在一个实施例中,显示子系统1130包含向用户提供输出的高清晰度(HD)显示器。高清晰度能指的是具有近似100 PPI(像素每英寸)或更大的像素密度的显示器,并且能包含诸如全HD(例如1080p)、视网膜显示器、4K(超高清晰度或UHD)的格式或其它格式。
I/O控制器1140表示和与用户的交互相关的硬件装置和软件组件。I/O控制器1140能进行操作以管理是音频子系统1120和/或显示子系统1130的部分的硬件。此外,I/O控制器1140示出了用于连接到装置1100的附加装置(通过其用户可与系统交互)的连接点。例如,能附连到装置1100的装置可包含麦克风装置、扬声器或立体声系统、视频系统或其它显示器装置、键盘或小键盘装置或者用于供特定应用使用的其它I/O装置(诸如读卡器或其它装置)。
如上面所提到的,I/O控制器1140能与音频子系统1120和/或显示子系统1130交互。例如,通过麦克风或其它音频装置的输入能为装置1100的一个或更多应用或功能提供输入或命令。此外,代替显示输出或除了显示输出外,还能提供音频输出。在另一示例中,如果显示子系统包含触摸屏,则显示装置还充当输入装置,其能至少部分由I/O控制器1140管理。在装置1100上还能存在附加按钮或开关以提供由I/O控制器1140管理的I/O功能。
在一个实施例中,I/O控制器1140管理诸如加速计、摄像机、光传感器或其它环境传感器、陀螺仪、全球定位系统(GPS)或能包含在装置1100中的其它硬件的装置。输入能够是直接用户交互的部分,以及向系统提供环境输入以影响其操作(诸如针对噪声滤波、针对亮度检测调整显示器、针对摄像机应用闪光或者其它特征)。在一个实施例中,装置1100包含管理电池功率使用、电池充电以及与功率节省操作相关的特征的功率管理1150。
存储器子系统1160包含用于将信息存储在装置1100中的存储器装置1162。存储器子系统1160能包含非易失性(如果到存储器装置的功率被中断则状态不改变)和/或易失性(如果到存储器装置的功率被中断则状态不确定)存储器装置。存储器1160能存储应用数据、用户数据、音乐、照片、文档或其它数据,以及与执行系统1100的应用和功能相关的系统数据(不管是长期的还是暂时的)。在一个实施例中,存储器子系统1160包含存储器控制器1164(其也能够被视为系统1100的控制的一部分,并且能够潜在地被视为处理器1110的一部分)。存储器控制器1164包含用来生成并发出命令给存储器装置1162的调度器。
连接性1170包含用来使装置1100能够与外部装置通信的硬件装置(例如无线和/或有线连接器和通信硬件)和软件组件(例如驱动器、协议栈)。外部装置能够是单独装置,诸如其它计算装置、无线接入点或基站以及诸如耳麦、打印机或其它装置的外设。
连接性1170能包含多个不同类型连接性。概括地说,装置1100用蜂窝连接性1172和无线连接性1174示出。蜂窝连接性1172一般指的是由无线载波提供的蜂窝网络连接性,诸如经由GSM(全球移动通信系统)或变形或衍生、CDMA(码分多址)或变形或衍生、TDM(时分复用)或变形或衍生、LTE(长期演进-也称为“4G”)、或其它蜂窝服务标准提供的蜂窝网络连接性。无线连接性1174指的是不是蜂窝的无线连接性,并且能包含个域网(诸如蓝牙)、局域网(诸如WiFi)和/或广域网(诸如WiMax)或者其它无线通信。无线通信指的是通过非固态介质通过使用调制的电磁辐射传递数据。有线通信通过固态通信介质发生。
外围连接1180包含用来进行外围连接的硬件接口和连接器以及软件组件(例如驱动器、协议栈)。将被理解的是,装置1100能够既是到其它计算装置的外围装置(“到”1182),也能够具有连接到它的外围装置(“从”1184)。装置1100通常具有“入坞(docking)”连接器用以连接到其它计算装置,以为了诸如管理(例如下载和/或上传、改变、同步)装置1100上的内容的目的。此外,入坞连接器能允许装置1100连接到某些外设,这些外设允许装置1100控制例如到视听系统或其它系统的内容输出。
除了专有入坞连接器或其它专有连接硬件,装置1100能经由公共连接器或基于标准的连接器进行外围连接1180。公共类型能包含通用串行总线(USB)连接器(其能包含任何数量的不同硬件接口),包含微型显示端口(MDP)的显示端口、高清晰度多媒体接口(HDMI)、火线或其它类型。
在一个实施例中,存储器1162是DRAM。在一个实施例中,处理器1110表示执行存储在一个或更多DRAM存储器1162中的数据的一个或更多处理器。在一个实施例中,接口1170包含用来与在另一网络位置中的另一装置交换数据的网络接口,并且该数据是存储在存储器1162中的数据。在一个实施例中,系统1100包含用来执行存储器内的内部ECC的ECC控制1190,并且从而ECC控制1190能够至少部分地被表示在存储器1162内。ECC控制1190还能表示在存储器控制器1164处的系统范围的ECC,其使用如下的事实:存储器1162执行内部ECC以为系统1100提供更稳健的ECC。关于存储器1162中内部ECC的ECC控制1190包含按照本文描述的任何实施例的代码矩阵。从而,ECC控制1190包含能在与用于读和写操作的数据字的两个段对应的两个部分中操作的代码矩阵。不同部分中的两个代码的按位XOR导致出现在另一部分中或不出现在代码矩阵中的代码。
在一个方面中,动态随机存取存储器装置(DRAM)包含:存储阵列,用来存储N位数据字以及与所述数据字关联的错误校验和纠正(ECC)位;ECC代码库,用来存储代码矩阵,所述代码矩阵要包含具有第一部分(N/2)个代码和第二部分(N/2)个代码的N个代码,所述N个代码分别对应于所述数据字的所述N个位;以及ECC电路,用于响应于访问所述数据字的请求而采用所述ECC位和代码矩阵执行所述DRAM中的内部ECC,所述ECC电路包含用于分别基于所述代码矩阵的所述第一部分和第二部分来分别计算用于所述数据字的第一和第二(N/2)位段的第一和第二错误校验的电路;其中所述代码矩阵的所述第一部分中的任何两个代码的按位XOR(异或)或所述代码矩阵的所述第二部分中的任何两个代码的按位XOR将生成不在所述代码矩阵中的或者在所述代码矩阵的另一部分中的代码。
在一个实施例中,N等于128。在一个实施例中,DRAM包含符合双数据速率版本4扩展(DDR4E)的同步动态随机存取存储器装置(SDRAM)。在一个实施例中,用来执行内部ECC的ECC电路用来执行单个位错误纠正(SEC)以纠正第一段或第二段中的单个位错误(SBE)或第一段和第二段二者中的SBE。在一个实施例中,ECC电路用来在没有从关联的存储器控制器接收执行ECC的请求的情况下执行内部ECC。在一个实施例中,DRAM包含4位数据I/O(输入/输出)接口(x4数据接口),并且其中所述N个代码中的每个提供用于访问4个单独(N/4)位列的ECC信息。在一个实施例中,DRAM包含8位数据I/O(输入/输出)接口(x8数据接口),并且其中所述N个代码中的每个提供用于访问2个单独(N/2)位列的ECC信息。在一个实施例中,DRAM包含16位数据I/O(输入/输出)接口(x16数据接口),并且其中N个代码中的每个提供用于访问2个单独(N/2)位列的ECC信息,所述两个单独列来自两个单独堆群。在一个实施例中,ECC电路用来从所述单独堆群预取数据以在来自作为单个N位数据字的单独数据字的两个段上执行ECC,并且仅传送选择的段。
在一个方面中,用于存储器子系统中的错误纠正管理的方法包含:接收对于在DRAM的N位数据字的读请求;访问所述数据字以及与所述数据字关联的错误校验和纠正(ECC)位;基于所述数据字和所述ECC位计算ECC检验子,这包含分别计算用于所述数据字的第一和第二(N/2)位段的第一和第二错误校验;比较所述ECC检验子与代码矩阵,其中所述代码矩阵包含具有第一部分(N/2)个代码和第二部分(N/2)个代码的N个代码,所述N个代码分别对应于所述数据字的所述N个位,所述比较包含比较所述第一错误校验与所述第一部分,以及比较所述第二错误校验与所述第二部分;以及对于在所述第一段中检测的错误和对于在所述第二段中检测的错误,切换对应于匹配所述ECC检验子的代码的所述数据字的位,其中所述代码矩阵的所述第一部分中的任何两个毗邻代码的按位XOR(异或)或所述代码矩阵的所述第二部分中的任何两个毗邻代码的按位XOR将生成不在所述代码矩阵中的或者在所述代码矩阵的另一部分中的代码。
在一个实施例中,N等于128。在一个实施例中,N等于128,并且其中DRAM包含符合双数据速率版本4扩展(DDR4E)的同步动态随机存取存储器装置(SDRAM)。在一个实施例中,进一步包括执行单个位错误纠正(SEC)以纠正所述第一段或所述第二段中的单个位错误(SBE)。在一个实施例中,进一步包括:在没有从关联的存储器控制器接收执行ECC的请求的情况下,执行内部ECC。在一个实施例中,DRAM包含4位数据I/O(输入/输出)接口(x4数据接口),并且其中所述N个代码中的每个提供用于访问4个单独(N/4)位列的ECC信息。在一个实施例中,DRAM包含8位数据I/O(输入/输出)接口(x8数据接口),并且其中所述N个代码中的每个提供用于访问2个单独(N/2)位列的ECC信息。在一个实施例中,DRAM包含16位数据I/O(输入/输出)接口(x16数据接口),并且其中N个代码中的每个提供用于访问2个单独(N/2)位列的ECC信息,所述两个单独列来自两个单独堆群。在一个实施例中,ECC电路用于从所述单独堆群预取数据以在来自作为单个N位数据字的单独数据字的两个段上执行ECC,并且仅传送选择的段。
在一个方面中,具有存储器子系统的系统包含:存储器控制器;以及多个同步动态随机存取存储器装置(SDRAM),其包含:存储阵列,用来存储N位数据字以及与所述数据字关联的错误校验和纠正(ECC)位;ECC代码库,用来存储代码矩阵,所述代码矩阵包含具有第一部分(N/2)个代码和第二部分(N/2)个代码的N个代码,所述N个代码分别对应于所述数据字的所述N个位;以及ECC电路,用来响应于访问所述数据字的请求而采用所述ECC位和代码矩阵执行SDRAM中的内部ECC,所述ECC电路包含用来分别基于所述代码矩阵的所述第一部分和第二部分来分别计算用于所述数据字的第一和第二(N/2)位段的第一和第二错误校验的电路;其中所述代码矩阵的所述第一部分中的任何两个代码的按位XOR(异或)或所述代码矩阵的所述第二部分中的任何两个代码的按位XOR(异或)将生成不在所述代码矩阵中的或者在所述代码矩阵的另一部分中的代码。
在一个实施例中,N等于128。在一个实施例中,DRAM包含符合双数据速率版本4扩展(DDR4E)的同步动态随机存取存储器装置(SDRAM)。在一个实施例中,用来执行内部ECC的ECC电路用来执行单个位错误纠正(SEC)以纠正第一段或第二段中的单个位错误(SBE)或第一段和第二段二者中的SBE。在一个实施例中,ECC电路用来在没有从关联的存储器控制器接收到执行ECC的请求的情况下执行内部ECC。在一个实施例中,DRAM包含4位数据I/O(输入/输出)接口(x4数据接口),并且其中所述N个代码中的每个提供用于访问4个单独(N/4)位列的ECC信息。在一个实施例中,DRAM包含8位数据I/O(输入/输出)接口(x8数据接口),并且其中所述N个代码中的每个提供用于访问2个单独(N/2)位列的ECC信息。在一个实施例中,DRAM包含16位数据I/O(输入/输出)接口(x16数据接口),并且其中N个代码中的每个提供用于访问2个单独(N/2)位列的ECC信息,所述两个单独列来自两个单独堆群。在一个实施例中,ECC电路用于从所述单独堆群预取数据以在来自作为单个N位数据字的单独数据字的两个段上执行ECC,并且仅传送选择的段。在一个实施例中,进一步包括耦合到所述存储器控制器的多核处理器,所述处理器的至少一个核用来执行存储在所述SDRAM中的数据。在一个实施例中,进一步包括耦合的网络适配器,其用来在所述SDRAM与远程网络位置之间交换数据。在一个实施例中,进一步包括以通信方式耦合到所述多核处理器的显示器。
本文所示出的流程图提供了各种过程动作的序列的示例。流程图能指示要由软件或固件例程执行的操作(以及物理操作)。在一个实施例中,流程图能示出有限状态机(FSM)的状态,其能用硬件和/或软件实现。尽管按具体顺序或次序被示出,但除非另有规定,否则能修改动作的次序。从而,所示出的实施例应该仅被理解为示例,并且过程能按不同次序执行,且一些动作能并行执行。此外,一个或更多动作在各种实施例中能被省略;从而,并不是所有动作在每一个实施例中都被要求。其它过程流是可能的。
某种程度上,本文描述了各种操作或功能,它们能被描述或定义为软件代码、指令、配置和/或数据。内容能是直接可执行的(“对象”或“可执行”形式)、源代码、或差分代码(“delta”或“补丁”代码)。本文描述的实施例的软件内容能经由其上存储有内容的制品或经由操作通信接口以经由通信接口发送数据的方法被提供。机器可读存储介质能使机器执行所描述的功能或操作,并且包含以机器(例如计算装置、电子系统等)可访问形式存储信息的任何机构,诸如可记录/不可记录介质(例如只读存储器(ROM)、随机存取存储器(RAM)、磁盘存储介质、光存储介质、闪速存储器装置等)。通信接口包含接口到任何硬布线的、无线的、光的等介质以向另一装置进行传达的任何机构,诸如存储器总线接口、处理器总线接口、因特网连接、盘控制器等。通信接口能通过提供配置参数和/或发送信号来准备通信接口以提供描述软件内容的数据信号来被配置。通信接口能够经由发送到通信接口的一个或更多命令或信号来被访问。
本文描述的各种组件能是用于执行所描述的操作或功能的部件。本文描述的每个组件包含软件、硬件或这些的组合。组件能被实现为软件模块、硬件模块、专用硬件(例如应用特定硬件、专用集成电路(ASIC)、数字信号处理器(DSP)等)、嵌入式控制器、硬布线电路等。
除了本文所描述的内容,能对本发明的公开的实施例和实现做出各种修改,而不脱离它们的范围。因此,本文的说明和示例应在说明性意义,而非约束性意义上被解释。本发明的范围应该仅仅参考随附权利要求而被衡量。
Claims (24)
1.一种动态随机存取存储器装置(DRAM),包括:
存储阵列,用来存储N位数据字以及与所述数据字关联的错误校验和纠正(ECC)位;
ECC代码库,用来存储代码矩阵,所述代码矩阵包含具有第一部分(N/2)个代码和第二部分(N/2)个代码的N个代码,所述N个代码分别对应于所述数据字的所述N个位;以及
ECC电路,用来响应于访问所述数据字的请求而采用所述ECC位和代码矩阵执行所述DRAM中的内部ECC,所述ECC电路包含用来分别基于所述代码矩阵的所述第一和第二部分来分别计算用于所述数据字的第一和第二(N/2)位段的第一和第二错误校验的电路;
其中所述代码矩阵的所述第一部分中的任何两个代码的按位XOR(异或)或所述代码矩阵的所述第二部分中的任何两个代码的按位XOR将生成不在所述代码矩阵中的或者在所述代码矩阵的另一部分中的代码。
2.如权利要求1所述的DRAM,其中N等于128。
3.如权利要求2所述的DRAM,其中所述DRAM包含符合双数据速率版本4扩展(DDR4E)的同步动态随机存取存储器装置(SDRAM)。
4.如权利要求1至3中任一项所述的DRAM,其中用来执行内部ECC的所述ECC电路用来执行单个位错误纠正(SEC)以纠正所述第一段或所述第二段中的单个位错误(SBE)。
5.如权利要求1至4中任一项所述的DRAM,其中所述ECC电路用来在没有从关联的存储器控制器接收到执行ECC的请求的情况下执行内部ECC。
6.如权利要求1至5中任一项所述的DRAM,其中所述DRAM包含4位数据I/O(输入/输出)接口(x4数据接口),并且其中所述N个代码中的每个提供用于访问4个单独(N/4)位列的ECC信息。
7.如权利要求1至5中任一项所述的DRAM,其中所述DRAM包含8位数据I/O(输入/输出)接口(x8数据接口),并且其中所述N个代码中的每个提供用于访问2个单独(N/2)位列的ECC信息。
8.如权利要求1至5中任一项所述的DRAM,其中所述DRAM包含16位数据I/O(输入/输出)接口(x16数据接口),并且其中所述N个代码中的每个提供用于访问2个单独(N/2)位列的ECC信息,所述两个单独列来自两个单独堆群。
9.如权利要求8所述的DRAM,其中所述ECC电路用来从所述单独堆群预取数据以在来自作为单个N位数据字的单独数据字的两个段上执行ECC,并且仅传送选择的段。
10. 一种具有存储器子系统的系统,包括:
存储器控制器;以及
按照权利要求1至9的任何实施例的多个DRAM。
11.如权利要求10所述的系统,进一步包括耦合到所述存储器控制器的多核处理器,所述处理器的至少一个核用来执行存储在所述SDRAM中的数据。
12.如权利要求11所述的系统,进一步包括耦合的网络适配器,其用来在所述SDRAM与远程网络位置之间交换数据。
13.如权利要求11所述的系统,进一步包括以通信方式耦合到所述多核处理器的显示器。
14.一种用于存储器子系统中的错误纠正管理的方法,包括:
接收对于在DRAM的N位数据字的读请求;
访问所述数据字以及与所述数据字关联的错误校验和纠正(ECC)位;
基于所述数据字和所述ECC位计算ECC检验子,这包含分别计算用于所述数据字的第一和第二(N/2)位段的第一和第二错误校验;
比较所述ECC检验子与代码矩阵,其中所述代码矩阵包含具有第一部分(N/2)个代码和第二部分(N/2)个代码的N个代码,所述N个代码分别对应于所述数据字的所述N个位,所述比较包含比较所述第一错误校验与所述第一部分,以及比较所述第二错误校验与所述第二部分;以及
对于在所述第一段中检测的错误和对于在所述第二段中检测的错误,切换对应于匹配所述ECC检验子的代码的所述数据字的位,其中所述代码矩阵的所述第一部分中的任何两个毗邻代码的按位XOR(异或)或所述代码矩阵的所述第二部分中的任何两个毗邻代码的按位XOR将生成不在所述代码矩阵中的或者在所述代码矩阵的另一部分中的代码。
15.如权利要求14所述的方法,其中N等于128。
16.如权利要求15所述的方法,其中所述DRAM包含符合双数据速率版本4扩展(DDR4E)的同步动态随机存取存储器装置(SDRAM)。
17.如权利要求14至16中任一项所述的方法,进一步包括:执行内部ECC是执行单个位错误纠正(SEC)以纠正所述第一段或所述第二段中的单个位错误(SBE)。
18.如权利要求14至17中任一项所述的方法,进一步包括在没有从关联的存储器控制器接收到执行ECC的请求的情况下执行内部ECC。
19.如权利要求14至18中任一项所述的方法,其中所述DRAM包含4位数据I/O(输入/输出)接口(x4数据接口),并且其中所述N个代码中的每个提供用于访问4个单独(N/4)位列的ECC信息。
20.如权利要求14至18中任一项所述的方法,其中所述DRAM包含8位数据I/O(输入/输出)接口(x8数据接口),并且其中所述N个代码中的每个提供用于访问2个单独(N/2)位列的ECC信息。
21.如权利要求14至18中任一项所述的方法,其中所述DRAM包含16位数据I/O(输入/输出)接口(x16数据接口),并且其中所述N个代码中的每个提供用于访问2个单独(N/2)位列的ECC信息,所述两个单独列来自两个单独堆群。
22.如权利要求21所述的方法,进一步包括:从所述单独堆群预取数据以在来自作为单个N位数据字的单独数据字的两个段上执行ECC,并且仅传送选择的段。
23.一种制品,其包括计算机可读存储介质,所述计算机可读存储介质具有存储在其上的内容以促使执行操作来执行根据权利要求14至22中任一项的用于错误纠正管理的方法。
24.一种用于错误纠正管理的设备,其包括用于执行操作以执行根据权利要求14至22中任一项的方法的部件。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201562211448P | 2015-08-28 | 2015-08-28 | |
US62/211448 | 2015-08-28 | ||
US14/998142 | 2015-12-26 | ||
US14/998,142 US9817714B2 (en) | 2015-08-28 | 2015-12-26 | Memory device on-die error checking and correcting code |
PCT/US2016/045643 WO2017039949A1 (en) | 2015-08-28 | 2016-08-04 | Memory device on-die error checking and correcting code |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107924349A true CN107924349A (zh) | 2018-04-17 |
CN107924349B CN107924349B (zh) | 2021-11-23 |
Family
ID=58095521
Family Applications (4)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680050473.XA Active CN107924349B (zh) | 2015-08-28 | 2016-08-04 | 存储器装置管芯上错误校验和纠正代码 |
CN201680050178.4A Active CN107924698B (zh) | 2015-08-28 | 2016-08-04 | Dram设备、错误校正管理的方法和存储器控制器 |
CN202111091173.5A Pending CN113808658A (zh) | 2015-08-28 | 2016-08-04 | 存储器装置错误校验和清除模式以及错误透明度 |
CN201680050250.3A Active CN107924705B (zh) | 2015-08-28 | 2016-08-04 | 动态随机存取存储器装置、存储器控制器以及存储系统 |
Family Applications After (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680050178.4A Active CN107924698B (zh) | 2015-08-28 | 2016-08-04 | Dram设备、错误校正管理的方法和存储器控制器 |
CN202111091173.5A Pending CN113808658A (zh) | 2015-08-28 | 2016-08-04 | 存储器装置错误校验和清除模式以及错误透明度 |
CN201680050250.3A Active CN107924705B (zh) | 2015-08-28 | 2016-08-04 | 动态随机存取存储器装置、存储器控制器以及存储系统 |
Country Status (4)
Country | Link |
---|---|
US (4) | US10127101B2 (zh) |
EP (4) | EP3341939B1 (zh) |
CN (4) | CN107924349B (zh) |
WO (3) | WO2017039949A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112349342A (zh) * | 2020-11-05 | 2021-02-09 | 海光信息技术股份有限公司 | 维护ddr5内存子系统的维护装置、方法、设备和存储介质 |
CN113555056A (zh) * | 2020-07-10 | 2021-10-26 | 台湾积体电路制造股份有限公司 | 存储器系统及其操作方法 |
CN115190069A (zh) * | 2022-04-26 | 2022-10-14 | 中国人民解放军国防科技大学 | 一种高性能片上网络容错路由器装置 |
Families Citing this family (133)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11249652B1 (en) | 2013-01-28 | 2022-02-15 | Radian Memory Systems, Inc. | Maintenance of nonvolatile memory on host selected namespaces by a common memory controller |
US10445229B1 (en) | 2013-01-28 | 2019-10-15 | Radian Memory Systems, Inc. | Memory controller with at least one address segment defined for which data is striped across flash memory dies, with a common address offset being used to obtain physical addresses for the data in each of the dies |
US9823966B1 (en) | 2013-11-11 | 2017-11-21 | Rambus Inc. | Memory component with error-detect-correct code interface |
US9542118B1 (en) | 2014-09-09 | 2017-01-10 | Radian Memory Systems, Inc. | Expositive flash memory control |
US9929750B2 (en) | 2015-09-08 | 2018-03-27 | Toshiba Memory Corporation | Memory system |
US10162702B2 (en) * | 2016-02-01 | 2018-12-25 | Lattice Semiconductor Corporation | Segmented error coding for block-based memory |
US10628248B2 (en) * | 2016-03-15 | 2020-04-21 | International Business Machines Corporation | Autonomous dram scrub and error counting |
CN109074851B (zh) * | 2016-05-02 | 2023-09-22 | 英特尔公司 | 利用额外系统位的内部错误校验和校正(ecc) |
KR102504176B1 (ko) * | 2016-06-23 | 2023-03-02 | 에스케이하이닉스 주식회사 | 반도체장치 |
US10120749B2 (en) * | 2016-09-30 | 2018-11-06 | Intel Corporation | Extended application of error checking and correction code in memory |
KR20180038109A (ko) * | 2016-10-05 | 2018-04-16 | 삼성전자주식회사 | 모니터링 회로를 포함하는 전자 장치 및 그것에 포함되는 스토리지 장치 |
KR20180069179A (ko) * | 2016-12-14 | 2018-06-25 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 이의 에러 정정 방법 |
KR20180090124A (ko) * | 2017-02-02 | 2018-08-10 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작 방법 |
US10303543B1 (en) * | 2017-02-09 | 2019-05-28 | Cadence Design Systems, Inc. | System and method for memory control having address integrity protection for error-protected data words of memory transactions |
US10275306B1 (en) * | 2017-02-09 | 2019-04-30 | Cadence Design Systems, Inc. | System and method for memory control having adaptively split addressing of error-protected data words in memory transactions for inline storage configurations |
EP3370152B1 (en) | 2017-03-02 | 2019-12-25 | INTEL Corporation | Integrated error checking and correction (ecc) in memory devices with fixed bandwidth interfaces |
JP2018160166A (ja) * | 2017-03-23 | 2018-10-11 | 東芝メモリ株式会社 | メモリシステム及び抵抗変化型メモリ |
US10853163B2 (en) * | 2017-04-28 | 2020-12-01 | Qualcomm Incorporated | Optimized error-correcting code (ECC) for data protection |
KR102258140B1 (ko) | 2017-07-06 | 2021-05-28 | 삼성전자주식회사 | 반도체 메모리 장치의 에러 정정 회로, 반도체 메모리 장치 및 메모리 시스템 |
US10346244B2 (en) * | 2017-08-10 | 2019-07-09 | Micron Technology, Inc. | Shared address counters for multiple modes of operation in a memory device |
KR102661931B1 (ko) * | 2017-09-21 | 2024-05-02 | 삼성전자주식회사 | 오류 정정 코드를 지원하는 장치 및 그것의 테스트 방법 |
DE102018122826A1 (de) * | 2017-09-21 | 2019-03-21 | Samsung Electronics Co., Ltd. | Vorrichtung zum Unterstützen eines Fehlerkorrekturcodes und Testverfahren dafür |
US10908995B2 (en) | 2017-09-29 | 2021-02-02 | Nvidia Corporation | Securing against errors in an error correcting code (ECC) implemented in an automotive system |
JP6861611B2 (ja) * | 2017-11-07 | 2021-04-21 | ルネサスエレクトロニクス株式会社 | 半導体装置及びそれを備えた半導体システム |
KR20190054533A (ko) | 2017-11-14 | 2019-05-22 | 삼성전자주식회사 | 반도체 메모리 장치, 이를 포함하는 메모리 시스템 및 반도체 메모리 장치의 동작 방법 |
US10691533B2 (en) * | 2017-12-12 | 2020-06-23 | Micron Technology, Inc. | Error correction code scrub scheme |
CN108334700B (zh) * | 2018-02-05 | 2021-04-02 | 武汉科技大学 | 一种分数阶忆容器的等效电路 |
US10853168B2 (en) * | 2018-03-28 | 2020-12-01 | Samsung Electronics Co., Ltd. | Apparatus to insert error-correcting coding (ECC) information as data within dynamic random access memory (DRAM) |
US10733046B2 (en) * | 2018-04-20 | 2020-08-04 | Micron Technology, Inc. | Transaction metadata |
KR102553780B1 (ko) * | 2018-05-10 | 2023-07-10 | 에스케이하이닉스 주식회사 | 메모리 장치, 이를 포함하는 메모리 시스템 및 메모리 시스템의 동작 방법 |
WO2019217118A1 (en) | 2018-05-11 | 2019-11-14 | Rambus Inc. | Efficient storage of error correcting code information |
WO2019222958A1 (en) | 2018-05-24 | 2019-11-28 | Alibaba Group Holding Limited | System and method for flash storage management using multiple open page stripes |
WO2020000136A1 (en) | 2018-06-25 | 2020-01-02 | Alibaba Group Holding Limited | System and method for managing resources of a storage device and quantifying the cost of i/o requests |
US10725941B2 (en) * | 2018-06-30 | 2020-07-28 | Western Digital Technologies, Inc. | Multi-device storage system with hosted services on peer storage devices |
US11232196B2 (en) * | 2018-07-09 | 2022-01-25 | Arm Limited | Tracking events of interest to mitigate attacks |
US11361111B2 (en) | 2018-07-09 | 2022-06-14 | Arm Limited | Repetitive side channel attack countermeasures |
US11074126B2 (en) | 2018-07-12 | 2021-07-27 | Micron Technology, Inc. | Methods for error count reporting with scaled error count information, and memory devices employing the same |
US10685736B2 (en) * | 2018-07-24 | 2020-06-16 | Dell Products, L.P. | Maintaining highest performance of DDR5 channel with marginal signal integrity |
US11221910B2 (en) | 2018-07-24 | 2022-01-11 | Micron Technology, Inc. | Media scrubber in memory system |
US11327929B2 (en) | 2018-09-17 | 2022-05-10 | Alibaba Group Holding Limited | Method and system for reduced data movement compression using in-storage computing and a customized file system |
DE102018126685B3 (de) * | 2018-10-25 | 2019-10-10 | Infineon Technologies Ag | Verarbeitung von Daten |
US10636476B2 (en) | 2018-11-01 | 2020-04-28 | Intel Corporation | Row hammer mitigation with randomization of target row selection |
US20210046760A1 (en) * | 2018-12-03 | 2021-02-18 | Hewlett-Packard Development Company, L.P. | Logic circuitry |
KR20200076846A (ko) * | 2018-12-20 | 2020-06-30 | 에스케이하이닉스 주식회사 | 메모리 장치에 저장된 데이터의 에러를 검출하는 장치 및 그 동작 방법 |
US11061735B2 (en) | 2019-01-02 | 2021-07-13 | Alibaba Group Holding Limited | System and method for offloading computation to storage nodes in distributed system |
CN109857616B (zh) * | 2019-01-25 | 2021-05-18 | 山东华芯半导体有限公司 | 一种基于指令的dram控制器带宽效率检测方法 |
US11016781B2 (en) * | 2019-04-26 | 2021-05-25 | Samsung Electronics Co., Ltd. | Methods and memory modules for enabling vendor specific functionalities |
US11409544B2 (en) * | 2019-05-07 | 2022-08-09 | Microsoft Technology Licensing, Llc | Dynamically-configurable baseboard management controller |
US11182234B2 (en) | 2019-05-10 | 2021-11-23 | Arm Limited | Tracking events of interest |
EP3748637A1 (en) * | 2019-06-07 | 2020-12-09 | IHP GmbH - Innovations for High Performance Microelectronics / Leibniz-Institut für innovative Mikroelektronik | Electronic circuit with integrated seu monitor |
KR20200142213A (ko) | 2019-06-12 | 2020-12-22 | 삼성전자주식회사 | 반도체 메모리 장치의 에러 정정 회로, 반도체 메모리 장치 및 메모리 시스템 |
US11068340B2 (en) | 2019-06-19 | 2021-07-20 | Samsung Electronics Co., Ltd. | Semiconductor memory devices and memory systems |
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 |
US10860223B1 (en) | 2019-07-18 | 2020-12-08 | Alibaba Group Holding Limited | Method and system for enhancing a distributed storage system by decoupling computation and network tasks |
CN110444243A (zh) * | 2019-07-31 | 2019-11-12 | 至誉科技(武汉)有限公司 | 存储设备读错误纠错能力的测试方法、系统及存储介质 |
US11403172B2 (en) * | 2019-08-05 | 2022-08-02 | Cypress Semiconductor Corporation | Methods for error detection and correction and corresponding systems and devices for the same |
EP3772840B1 (en) | 2019-08-06 | 2023-03-15 | Nxp B.V. | A security module for a can node |
US11537432B2 (en) | 2019-08-15 | 2022-12-27 | Cisco Technology, Inc. | Dynamic data-plane resource shadowing |
US11599424B2 (en) | 2019-08-15 | 2023-03-07 | Cisco Technology, Inc. | Dynamic hardware resource shadowing and memory error protection |
KR20210026201A (ko) * | 2019-08-29 | 2021-03-10 | 삼성전자주식회사 | 반도체 메모리 장치, 이를 포함하는 메모리 시스템 및 이의 리페어 제어 방법 |
CN110718263B (zh) * | 2019-09-09 | 2021-08-10 | 无锡江南计算技术研究所 | 芯片访存通路的高效分段测试系统、方法 |
KR20210034726A (ko) | 2019-09-20 | 2021-03-31 | 삼성전자주식회사 | 메모리 모듈, 그것을 제어하는 메모리 제어기의 에러 정정 방법, 및 그것을포함하는 컴퓨팅 시스템 |
US11617282B2 (en) | 2019-10-01 | 2023-03-28 | Alibaba Group Holding Limited | System and method for reshaping power budget of cabinet to facilitate improved deployment density of servers |
US11249843B2 (en) | 2019-11-07 | 2022-02-15 | SK Hynix Inc. | Semiconductor devices and semiconductor systems including the same |
US11354189B2 (en) | 2019-11-07 | 2022-06-07 | SK Hynix Inc. | Semiconductor devices and semiconductor systems including the same |
KR20210055865A (ko) | 2019-11-07 | 2021-05-18 | 에스케이하이닉스 주식회사 | 반도체장치 및 반도체시스템 |
US11145351B2 (en) * | 2019-11-07 | 2021-10-12 | SK Hynix Inc. | Semiconductor devices |
US11175984B1 (en) * | 2019-12-09 | 2021-11-16 | Radian Memory Systems, Inc. | Erasure coding techniques for flash memory |
US11611358B2 (en) * | 2019-12-24 | 2023-03-21 | Kioxia Corporation | Systems and methods for detecting or preventing false detection of three error bits by SEC |
KR20210085284A (ko) * | 2019-12-30 | 2021-07-08 | 삼성전자주식회사 | Pim 메모리 디바이스, pim 메모리 디바이스를 포함하는 컴퓨팅 시스템 및 pim 메모리 디바이스의 동작 방법 |
US11449455B2 (en) | 2020-01-15 | 2022-09-20 | Alibaba Group Holding Limited | Method and system for facilitating a high-capacity object storage system with configuration agility and mixed deployment flexibility |
US11379447B2 (en) | 2020-02-06 | 2022-07-05 | Alibaba Group Holding Limited | Method and system for enhancing IOPS of a hard disk drive system based on storing metadata in host volatile memory and data in non-volatile memory using a shared controller |
TWI708248B (zh) * | 2020-02-11 | 2020-10-21 | 華邦電子股份有限公司 | 記憶體裝置和調整用於記憶體裝置的參數的方法 |
US11436082B2 (en) | 2020-02-11 | 2022-09-06 | Micron Technology, Inc. | Internal error correction for memory devices |
US11221800B2 (en) * | 2020-03-02 | 2022-01-11 | Micron Technology, Inc. | Adaptive and/or iterative operations in executing a read command to retrieve data from memory cells |
US11221913B2 (en) * | 2020-03-11 | 2022-01-11 | Micron Technology, Inc. | Error check and scrub for semiconductor memory device |
US11200114B2 (en) * | 2020-03-17 | 2021-12-14 | Alibaba Group Holding Limited | System and method for facilitating elastic error correction code in memory |
US11449386B2 (en) | 2020-03-20 | 2022-09-20 | Alibaba Group Holding Limited | Method and system for optimizing persistent memory on data retention, endurance, and performance for host memory |
US11410713B2 (en) | 2020-04-06 | 2022-08-09 | Micron Technology, Inc. | Apparatuses and methods for detecting illegal commands and command sequences |
JP2021168431A (ja) * | 2020-04-09 | 2021-10-21 | ミネベアミツミ株式会社 | チェックサム付加方法およびチェックサム付加装置 |
US11385833B2 (en) | 2020-04-20 | 2022-07-12 | Alibaba Group Holding Limited | Method and system for facilitating a light-weight garbage collection with a reduced utilization of resources |
US11301173B2 (en) | 2020-04-20 | 2022-04-12 | Alibaba Group Holding Limited | Method and system for facilitating evaluation of data access frequency and allocation of storage device resources |
US11281575B2 (en) | 2020-05-11 | 2022-03-22 | Alibaba Group Holding Limited | Method and system for facilitating data placement and control of physical addresses with multi-queue I/O blocks |
US11461262B2 (en) | 2020-05-13 | 2022-10-04 | Alibaba Group Holding Limited | Method and system for facilitating a converged computation and storage node in a distributed storage system |
US11494115B2 (en) | 2020-05-13 | 2022-11-08 | Alibaba Group Holding Limited | System method for facilitating memory media as file storage device based on real-time hashing by performing integrity check with a cyclical redundancy check (CRC) |
US11314589B2 (en) | 2020-05-15 | 2022-04-26 | Intel Corporation | Read retry to selectively disable on-die ECC |
US11507499B2 (en) | 2020-05-19 | 2022-11-22 | Alibaba Group Holding Limited | System and method for facilitating mitigation of read/write amplification in data compression |
US11556277B2 (en) | 2020-05-19 | 2023-01-17 | Alibaba Group Holding Limited | System and method for facilitating improved performance in ordering key-value storage with input/output stack simplification |
KR20210147132A (ko) | 2020-05-27 | 2021-12-07 | 삼성전자주식회사 | 메모리 장치 및 메모리 장치를 포함하는 메모리 모듈 |
US11170869B1 (en) | 2020-06-04 | 2021-11-09 | Western Digital Technologies, Inc. | Dual data protection in storage devices |
US11322218B2 (en) * | 2020-06-08 | 2022-05-03 | Micron Technology, Inc. | Error control for memory device |
KR20210154277A (ko) * | 2020-06-11 | 2021-12-21 | 삼성전자주식회사 | 메모리 모듈 및 그의 동작 방법 |
US11263132B2 (en) | 2020-06-11 | 2022-03-01 | Alibaba Group Holding Limited | Method and system for facilitating log-structure data organization |
US11422931B2 (en) | 2020-06-17 | 2022-08-23 | Alibaba Group Holding Limited | Method and system for facilitating a physically isolated storage unit for multi-tenancy virtualization |
US11354200B2 (en) | 2020-06-17 | 2022-06-07 | Alibaba Group Holding Limited | Method and system for facilitating data recovery and version rollback in a storage device |
US11601137B2 (en) | 2020-06-18 | 2023-03-07 | Intel Corporation | ECC memory chip encoder and decoder |
US11354233B2 (en) | 2020-07-27 | 2022-06-07 | Alibaba Group Holding Limited | Method and system for facilitating fast crash recovery in a storage device |
US11372774B2 (en) | 2020-08-24 | 2022-06-28 | Alibaba Group Holding Limited | Method and system for a solid state drive with on-chip memory integration |
WO2022066178A1 (en) * | 2020-09-26 | 2022-03-31 | Intel Corporation | Adaptive internal memory error scrubbing and error handling |
KR20220044015A (ko) * | 2020-09-29 | 2022-04-06 | 삼성전자주식회사 | 메모리 장치의 에러 정정 불가를 예방하는 제어기, 그것을 포함하는 메모리 시스템 및 그것의 동작 방법 |
US11734966B1 (en) | 2020-10-15 | 2023-08-22 | Ethernovia Inc. | Recursive system layer analysis for achieving functional safety |
US11803180B2 (en) | 2020-10-15 | 2023-10-31 | Ethernovia Inc. | Determining diagnostic coverage for achieving functional safety |
KR20220081644A (ko) | 2020-12-09 | 2022-06-16 | 삼성전자주식회사 | 메모리 장치 및 이를 포함하는 메모리 시스템 |
US11487465B2 (en) | 2020-12-11 | 2022-11-01 | Alibaba Group Holding Limited | Method and system for a local storage engine collaborating with a solid state drive controller |
KR20220090794A (ko) * | 2020-12-23 | 2022-06-30 | 삼성전자주식회사 | 메모리 장치, 그것을 제어하는 제어기, 그것을 갖는 메모리 시스템 및 그것의 동작 방법 |
US11734115B2 (en) | 2020-12-28 | 2023-08-22 | Alibaba Group Holding Limited | Method and system for facilitating write latency reduction in a queue depth of one scenario |
KR20220094489A (ko) | 2020-12-29 | 2022-07-06 | 삼성전자주식회사 | 반도체 메모리 장치 및 반도체 메모리 장치의 동작 방법 |
US11416365B2 (en) | 2020-12-30 | 2022-08-16 | Alibaba Group Holding Limited | Method and system for open NAND block detection and correction in an open-channel SSD |
US11409601B1 (en) * | 2021-01-26 | 2022-08-09 | Micron Technology, Inc. | Memory device protection |
US11573854B2 (en) * | 2021-02-02 | 2023-02-07 | Nvidia Corporation | Techniques for data scrambling on a memory interface |
US11726699B2 (en) | 2021-03-30 | 2023-08-15 | Alibaba Singapore Holding Private Limited | Method and system for facilitating multi-stream sequential read performance improvement with reduced read amplification |
US11461173B1 (en) | 2021-04-21 | 2022-10-04 | Alibaba Singapore Holding Private Limited | Method and system for facilitating efficient data compression based on error correction code and reorganization of data placement |
US11625295B2 (en) * | 2021-05-10 | 2023-04-11 | Micron Technology, Inc. | Operating memory device in performance mode |
US11476874B1 (en) | 2021-05-14 | 2022-10-18 | Alibaba Singapore Holding Private Limited | Method and system for facilitating a storage server with hybrid memory for journaling and data storage |
US20220405601A1 (en) * | 2021-06-16 | 2022-12-22 | Western Digital Technologies, Inc. | Enhanced digital signal processor (dsp) nand flash |
US11579971B2 (en) * | 2021-07-14 | 2023-02-14 | Micron Technology, Inc. | Apparatuses, systems, and methods for forced error check and scrub readouts |
US11664084B2 (en) * | 2021-08-02 | 2023-05-30 | Micron Technology, Inc. | Memory device on-die ECC data |
KR20230072336A (ko) * | 2021-11-17 | 2023-05-24 | 에스케이하이닉스 주식회사 | 반도체장치 |
KR20230073915A (ko) * | 2021-11-19 | 2023-05-26 | 에스케이하이닉스 주식회사 | 에러체크 및 스크럽동작방법 및 이를 이용한 반도체시스템 |
WO2023099933A1 (en) * | 2021-12-02 | 2023-06-08 | Micron Technology, Inc. | Memory device with data scrubbing capability and methods |
US11797215B2 (en) * | 2021-12-09 | 2023-10-24 | SK Hynix Inc. | Memory device and memory system performing error check and scrub operation |
US20230214119A1 (en) * | 2021-12-30 | 2023-07-06 | Micron Technology, Inc. | Data stripe protection |
US20230231574A1 (en) * | 2022-01-20 | 2023-07-20 | Micron Technology, Inc. | Syndrome check functionality to differentiate between error types |
US11966287B2 (en) * | 2022-03-22 | 2024-04-23 | Micron Technology, Inc. | Multiple bit error detection in scrub operations |
US11841765B2 (en) * | 2022-03-31 | 2023-12-12 | Micron Technology, Inc. | Scrub operations with row error information |
US20230352112A1 (en) * | 2022-04-27 | 2023-11-02 | Micron Technology, Inc. | Apparatuses, systems, and methods for per row error scrub information registers |
US20230350748A1 (en) * | 2022-04-27 | 2023-11-02 | Micron Technology, Inc. | Apparatuses, systems, and methods for per row error scrub information |
CN117238356A (zh) * | 2022-06-08 | 2023-12-15 | 成都华为技术有限公司 | 内存模组和电子设备 |
US20230409426A1 (en) * | 2022-06-16 | 2023-12-21 | Advanced Micro Devices, Inc. | Host-level error detection and fault correction |
US11972789B2 (en) * | 2022-08-17 | 2024-04-30 | Changxin Memory Technologies, Inc. | Memory device with error per row counter (EpRC) performing error check and scrub (ECS) |
CN117636997A (zh) * | 2022-08-17 | 2024-03-01 | 长鑫存储技术有限公司 | 计数电路及存储器 |
US11961578B2 (en) | 2022-09-01 | 2024-04-16 | Nanya Technology Corporation | Test device and test method thereof |
CN115295040B (zh) * | 2022-10-08 | 2023-06-02 | 睿力集成电路有限公司 | 控制电路、控制方法以及半导体存储器 |
Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6052818A (en) * | 1998-02-27 | 2000-04-18 | International Business Machines Corporation | Method and apparatus for ECC bus protection in a computer system with non-parity memory |
US20070234182A1 (en) * | 2006-03-31 | 2007-10-04 | Wickeraad John A | Error checking and correction (ECC) system and method |
US20080229176A1 (en) * | 2003-12-22 | 2008-09-18 | International Business Machines Corporation | Method for fast ecc memory testing by software including ecc check byte |
US20090249169A1 (en) * | 2008-03-28 | 2009-10-01 | Bains Kuljit S | Systems, methods, and apparatuses to save memory self-refresh power |
US7650558B2 (en) * | 2005-08-16 | 2010-01-19 | Intel Corporation | Systems, methods, and apparatuses for using the same memory type for both error check and non-error check memory systems |
US20100257432A1 (en) * | 2009-04-02 | 2010-10-07 | Micron Technology, Inc. | Extended single-bit error correction and multiple-bit error detection |
CN102640116A (zh) * | 2009-09-28 | 2012-08-15 | 辉达公司 | 对外部dram的错误检测和纠正 |
US8438344B2 (en) * | 2010-03-12 | 2013-05-07 | Texas Instruments Incorporated | Low overhead and timing improved architecture for performing error checking and correction for memories and buses in system-on-chips, and other circuits, systems and processes |
US20130132797A1 (en) * | 2008-11-17 | 2013-05-23 | Elpida Memory, Inc. | Control method for a semiconductor memory device |
CN103744744A (zh) * | 2014-02-08 | 2014-04-23 | 威盛电子股份有限公司 | 数据储存装置以及易失性存储器的数据校验方法 |
US20140211579A1 (en) * | 2013-01-30 | 2014-07-31 | John V. Lovelace | Apparatus, method and system to determine memory access command timing based on error detection |
US20140337688A1 (en) * | 2009-06-30 | 2014-11-13 | Micron Technology, Inc. | Switchable on-die memory error correcting engine |
CN104575585A (zh) * | 2015-01-15 | 2015-04-29 | 西安华芯半导体有限公司 | 一种dram扩展结构及dram扩展方法 |
Family Cites Families (55)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS58105500A (ja) * | 1981-11-23 | 1983-06-23 | スペリ・コ−ポレ−シヨン | メモリ駆動回路故障検出システム及び方法 |
US5307356A (en) | 1990-04-16 | 1994-04-26 | International Business Machines Corporation | Interlocked on-chip ECC system |
US5633767A (en) | 1995-06-06 | 1997-05-27 | International Business Machines Corporation | Adaptive and in-situ load/unload damage estimation and compensation |
WO1998008166A1 (en) | 1996-08-16 | 1998-02-26 | Tokyo Electron Limited | Semiconductor memory device having error detection and correction |
US6487685B1 (en) | 1999-09-30 | 2002-11-26 | Silicon Graphics, Inc. | System and method for minimizing error correction code bits in variable sized data formats |
US6256757B1 (en) | 2000-01-24 | 2001-07-03 | Credence Systems Corporation | Apparatus for testing memories with redundant storage elements |
DE10017543A1 (de) | 2000-04-08 | 2001-10-11 | Bosch Gmbh Robert | Verfahren zur Fehlererkennung und Fehlerheilung |
US6785856B1 (en) | 2000-12-07 | 2004-08-31 | Advanced Micro Devices, Inc. | Internal self-test circuit for a memory array |
US6957378B2 (en) | 2001-06-04 | 2005-10-18 | Kabushiki Kaisha Toshiba | Semiconductor memory device |
US7003698B2 (en) | 2002-06-29 | 2006-02-21 | Intel Corporation | Method and apparatus for transport of debug events between computer system components |
US7096407B2 (en) * | 2003-02-18 | 2006-08-22 | Hewlett-Packard Development Company, L.P. | Technique for implementing chipkill in a memory system |
US7234099B2 (en) | 2003-04-14 | 2007-06-19 | International Business Machines Corporation | High reliability memory module with a fault tolerant address and command bus |
US6853602B2 (en) * | 2003-05-09 | 2005-02-08 | Taiwan Semiconductor Manufacturing Company, Ltd. | Hiding error detecting/correcting latency in dynamic random access memory (DRAM) |
JP3889391B2 (ja) * | 2003-11-06 | 2007-03-07 | ローム株式会社 | メモリ装置および表示装置 |
US7370260B2 (en) * | 2003-12-16 | 2008-05-06 | Freescale Semiconductor, Inc. | MRAM having error correction code circuitry and method therefor |
JP4401319B2 (ja) * | 2005-04-07 | 2010-01-20 | 株式会社日立製作所 | Dram積層パッケージ並びにdram積層パッケージの試験および救済方法 |
US7227797B2 (en) | 2005-08-30 | 2007-06-05 | Hewlett-Packard Development Company, L.P. | Hierarchical memory correction system and method |
US7739576B2 (en) * | 2006-08-31 | 2010-06-15 | Micron Technology, Inc. | Variable strength ECC |
US20090132876A1 (en) | 2007-11-19 | 2009-05-21 | Ronald Ernest Freking | Maintaining Error Statistics Concurrently Across Multiple Memory Ranks |
KR101001446B1 (ko) | 2008-12-24 | 2010-12-14 | 주식회사 하이닉스반도체 | 불휘발성 메모리 장치 및 그것의 동작 방법 |
KR20100102925A (ko) | 2009-03-12 | 2010-09-27 | 삼성전자주식회사 | 리드 리클레임 신호를 발생하는 불휘발성 메모리 장치 및 이를 포함하는 메모리 시스템 |
US9170879B2 (en) | 2009-06-24 | 2015-10-27 | Headway Technologies, Inc. | Method and apparatus for scrubbing accumulated data errors from a memory system |
US8862973B2 (en) * | 2009-12-09 | 2014-10-14 | Intel Corporation | Method and system for error management in a memory device |
US8464125B2 (en) | 2009-12-10 | 2013-06-11 | Intel Corporation | Instruction-set architecture for programmable cyclic redundancy check (CRC) computations |
US8230255B2 (en) | 2009-12-15 | 2012-07-24 | International Business Machines Corporation | Blocking write acces to memory modules of a solid state drive |
US8640005B2 (en) | 2010-05-21 | 2014-01-28 | Intel Corporation | Method and apparatus for using cache memory in a system that supports a low power state |
JP2012050008A (ja) | 2010-08-30 | 2012-03-08 | Toshiba Corp | 誤り検出訂正方法および半導体メモリ装置 |
US8914687B2 (en) * | 2011-04-15 | 2014-12-16 | Advanced Micro Devices, Inc. | Providing test coverage of integrated ECC logic en embedded memory |
US20120297256A1 (en) * | 2011-05-20 | 2012-11-22 | Qualcomm Incorporated | Large Ram Cache |
US8645811B2 (en) | 2011-10-27 | 2014-02-04 | Dell Products L.P. | System and method for selective error checking |
US8892986B2 (en) | 2012-03-08 | 2014-11-18 | Micron Technology, Inc. | Apparatuses and methods for combining error coding and modulation schemes |
KR101938210B1 (ko) | 2012-04-18 | 2019-01-15 | 삼성전자주식회사 | 낸드 플래시 메모리, 가변 저항 메모리 및 컨트롤러를 포함하는 메모리 시스템의 동작 방법 |
EP2677429A1 (en) * | 2012-06-18 | 2013-12-25 | Renesas Electronics Europe Limited | Error correction |
US9037949B1 (en) | 2012-06-21 | 2015-05-19 | Rambus Inc. | Error correction in a memory device |
CN103593252B (zh) * | 2012-08-14 | 2017-06-13 | 旺宏电子股份有限公司 | 具有动态错误侦测及更正的存储器 |
US9009566B2 (en) | 2012-09-12 | 2015-04-14 | Macronix International Co., Ltd. | Outputting information of ECC corrected bits |
KR102002925B1 (ko) * | 2012-11-01 | 2019-07-23 | 삼성전자주식회사 | 메모리 모듈, 그것을 포함하는 메모리 시스템, 그것의 구동 방법 |
US9070479B2 (en) | 2013-01-21 | 2015-06-30 | Sandisk Technologies Inc. | Systems and methods of updating read voltages |
JP2014157391A (ja) | 2013-02-14 | 2014-08-28 | Sony Corp | 記憶制御装置、記憶装置、情報処理システムおよび記憶制御方法 |
US8996953B2 (en) | 2013-03-01 | 2015-03-31 | International Business Machines Corporation | Self monitoring and self repairing ECC |
US9032264B2 (en) | 2013-03-21 | 2015-05-12 | Kabushiki Kaisha Toshiba | Test method for nonvolatile memory |
CN103218275B (zh) * | 2013-03-28 | 2015-11-25 | 华为技术有限公司 | 数据错误修复方法、装置和设备 |
KR20150020385A (ko) * | 2013-08-13 | 2015-02-26 | 에스케이하이닉스 주식회사 | 데이터 저장 장치, 그것의 동작 방법 및 그것을 포함하는 데이터 처리 시스템 |
US20150067437A1 (en) | 2013-08-30 | 2015-03-05 | Kuljit S. Bains | Apparatus, method and system for reporting dynamic random access memory error information |
EP3654337A1 (en) | 2013-10-15 | 2020-05-20 | Rambus Inc. | Load reduced memory module |
US9299457B2 (en) | 2014-02-23 | 2016-03-29 | Qualcomm Incorporated | Kernel masking of DRAM defects |
US9495232B2 (en) | 2014-03-28 | 2016-11-15 | Intel IP Corporation | Error correcting (ECC) memory compatibility |
US20150331732A1 (en) | 2014-05-13 | 2015-11-19 | Rambus Inc. | Memory device having storage for an error code correction event count |
US9367392B2 (en) | 2014-08-01 | 2016-06-14 | Winbond Electronics Corporation | NAND flash memory having internal ECC processing and method of operation thereof |
US9766972B2 (en) | 2014-08-07 | 2017-09-19 | Pure Storage, Inc. | Masking defective bits in a storage array |
KR102204391B1 (ko) | 2014-08-18 | 2021-01-18 | 삼성전자주식회사 | 공유 가능한 ecc 셀 어레이를 갖는 메모리 장치 |
US9940457B2 (en) * | 2015-02-13 | 2018-04-10 | International Business Machines Corporation | Detecting a cryogenic attack on a memory device with embedded error correction |
US9606851B2 (en) | 2015-02-02 | 2017-03-28 | International Business Machines Corporation | Error monitoring of a memory device containing embedded error correction |
US9691505B2 (en) | 2015-03-27 | 2017-06-27 | Intel Corporation | Dynamic application of error correction code (ECC) based on error type |
US9811420B2 (en) | 2015-03-27 | 2017-11-07 | Intel Corporation | Extracting selective information from on-die dynamic random access memory (DRAM) error correction code (ECC) |
-
2015
- 2015-12-26 US US14/998,184 patent/US10127101B2/en active Active
- 2015-12-26 US US14/998,059 patent/US9842021B2/en active Active
- 2015-12-26 US US14/998,142 patent/US9817714B2/en active Active
-
2016
- 2016-08-04 CN CN201680050473.XA patent/CN107924349B/zh active Active
- 2016-08-04 WO PCT/US2016/045643 patent/WO2017039949A1/en unknown
- 2016-08-04 EP EP16842531.2A patent/EP3341939B1/en active Active
- 2016-08-04 WO PCT/US2016/045640 patent/WO2017039948A1/en active Application Filing
- 2016-08-04 EP EP16842532.0A patent/EP3341941B1/en active Active
- 2016-08-04 CN CN201680050178.4A patent/CN107924698B/zh active Active
- 2016-08-04 WO PCT/US2016/045639 patent/WO2017039947A1/en active Application Filing
- 2016-08-04 CN CN202111091173.5A patent/CN113808658A/zh active Pending
- 2016-08-04 EP EP21193306.4A patent/EP3992973A1/en active Pending
- 2016-08-04 CN CN201680050250.3A patent/CN107924705B/zh active Active
- 2016-08-04 EP EP16842533.8A patent/EP3341844B1/en active Active
-
2018
- 2018-11-01 US US16/178,528 patent/US10810079B2/en active Active
Patent Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6052818A (en) * | 1998-02-27 | 2000-04-18 | International Business Machines Corporation | Method and apparatus for ECC bus protection in a computer system with non-parity memory |
US20080229176A1 (en) * | 2003-12-22 | 2008-09-18 | International Business Machines Corporation | Method for fast ecc memory testing by software including ecc check byte |
US7650558B2 (en) * | 2005-08-16 | 2010-01-19 | Intel Corporation | Systems, methods, and apparatuses for using the same memory type for both error check and non-error check memory systems |
US20070234182A1 (en) * | 2006-03-31 | 2007-10-04 | Wickeraad John A | Error checking and correction (ECC) system and method |
US20090249169A1 (en) * | 2008-03-28 | 2009-10-01 | Bains Kuljit S | Systems, methods, and apparatuses to save memory self-refresh power |
US20130132797A1 (en) * | 2008-11-17 | 2013-05-23 | Elpida Memory, Inc. | Control method for a semiconductor memory device |
US20100257432A1 (en) * | 2009-04-02 | 2010-10-07 | Micron Technology, Inc. | Extended single-bit error correction and multiple-bit error detection |
US20140337688A1 (en) * | 2009-06-30 | 2014-11-13 | Micron Technology, Inc. | Switchable on-die memory error correcting engine |
CN102640116A (zh) * | 2009-09-28 | 2012-08-15 | 辉达公司 | 对外部dram的错误检测和纠正 |
US8438344B2 (en) * | 2010-03-12 | 2013-05-07 | Texas Instruments Incorporated | Low overhead and timing improved architecture for performing error checking and correction for memories and buses in system-on-chips, and other circuits, systems and processes |
US20140211579A1 (en) * | 2013-01-30 | 2014-07-31 | John V. Lovelace | Apparatus, method and system to determine memory access command timing based on error detection |
CN103744744A (zh) * | 2014-02-08 | 2014-04-23 | 威盛电子股份有限公司 | 数据储存装置以及易失性存储器的数据校验方法 |
CN104575585A (zh) * | 2015-01-15 | 2015-04-29 | 西安华芯半导体有限公司 | 一种dram扩展结构及dram扩展方法 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113555056A (zh) * | 2020-07-10 | 2021-10-26 | 台湾积体电路制造股份有限公司 | 存储器系统及其操作方法 |
CN113555056B (zh) * | 2020-07-10 | 2024-05-03 | 台湾积体电路制造股份有限公司 | 存储器系统及其操作方法 |
CN112349342A (zh) * | 2020-11-05 | 2021-02-09 | 海光信息技术股份有限公司 | 维护ddr5内存子系统的维护装置、方法、设备和存储介质 |
CN112349342B (zh) * | 2020-11-05 | 2024-03-22 | 海光信息技术股份有限公司 | 维护ddr5内存子系统的维护装置、方法、设备和存储介质 |
CN115190069A (zh) * | 2022-04-26 | 2022-10-14 | 中国人民解放军国防科技大学 | 一种高性能片上网络容错路由器装置 |
CN115190069B (zh) * | 2022-04-26 | 2023-12-05 | 中国人民解放军国防科技大学 | 一种高性能片上网络容错路由器装置 |
Also Published As
Publication number | Publication date |
---|---|
EP3341844B1 (en) | 2020-10-21 |
WO2017039947A1 (en) | 2017-03-09 |
WO2017039949A1 (en) | 2017-03-09 |
US10127101B2 (en) | 2018-11-13 |
US10810079B2 (en) | 2020-10-20 |
US20170060681A1 (en) | 2017-03-02 |
CN113808658A (zh) | 2021-12-17 |
EP3341941A1 (en) | 2018-07-04 |
US20190073261A1 (en) | 2019-03-07 |
EP3341941B1 (en) | 2021-12-22 |
EP3341941A4 (en) | 2019-05-01 |
US9842021B2 (en) | 2017-12-12 |
CN107924698B (zh) | 2022-06-21 |
EP3341844A1 (en) | 2018-07-04 |
EP3341939A4 (en) | 2019-04-24 |
US9817714B2 (en) | 2017-11-14 |
CN107924705B (zh) | 2022-08-16 |
EP3341939A1 (en) | 2018-07-04 |
CN107924705A (zh) | 2018-04-17 |
WO2017039948A1 (en) | 2017-03-09 |
EP3992973A1 (en) | 2022-05-04 |
EP3341939B1 (en) | 2020-07-15 |
EP3341844A4 (en) | 2019-05-22 |
US20170060680A1 (en) | 2017-03-02 |
CN107924698A (zh) | 2018-04-17 |
US20170063394A1 (en) | 2017-03-02 |
CN107924349B (zh) | 2021-11-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107924349A (zh) | 存储器装置管芯上错误校验和纠正代码 | |
US10572343B2 (en) | Targeted aliasing single error correction (SEC) code | |
US10198221B2 (en) | Methods of operating semiconductor memory devices with selective write-back of data for error scrubbing and related devices | |
US10671478B2 (en) | Scrubbing controllers of semiconductor memory devices, semiconductor memory devices and methods of operating the same | |
US11223373B2 (en) | Error detection code generation circuits of semiconductor devices, memory controllers including the same and semiconductor memory devices including the same | |
US10255989B2 (en) | Semiconductor memory devices, memory systems including the same and methods of operating the same | |
US10404286B2 (en) | Memory modules, memory systems including the same and methods of operating memory systems | |
US20170308299A1 (en) | Semiconductor memory devices and methods of operating the same | |
US9432018B2 (en) | Storage controllers, methods of operating the same and solid state disks including the same | |
CN109074851A (zh) | 利用额外系统位的内部错误校验和校正(ecc) | |
CN107767919A (zh) | 半导体存储器设备、包括其的存储器系统及操作其的方法 | |
CN109661654B (zh) | 存储器中的差错校验和纠正码的扩展应用 | |
CN107430537A (zh) | 从片上dram ecc中提取选择性信息 | |
KR20170037705A (ko) | 입력 신호들을 랭크별로 제어하는 메모리 버퍼를 갖는 메모리 모듈 | |
NL2029789B1 (en) | Adaptive error correction to improve for system memory reliability, availability, and serviceability (ras) | |
US20240126476A1 (en) | Activate information on preceding command |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |