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

存储器装置错误校验和清除模式以及错误透明度

文献发布时间:2023-06-19 13:45:04


存储器装置错误校验和清除模式以及错误透明度

此专利申请是基于2015年8月28日提交的美国临时申请No. 62/211,448的非临时申请。此申请要求该临时申请的优先权的权益。该临时申请特此通过引用被结合。

本专利申请涉及如下两个专利申请,这两个申请也要求对上面标识的同一美国临时申请的优先权:题为“MEMORY DEVICE CHECK BIT READ MODE”的专利申请No. TBD[P88609];以及题为“MEMORY DEVICE ON-DIE ECC (ERROR CHECKING AND CORRECTING)CODE”的专利申请No. TBD [P93260];这两个申请与此一道同时被提交。

技术领域

描述一般涉及存储器管理,并且更具体地说,描述涉及具有执行内部错误校验和纠正的存储器装置的存储器子系统中的错误校验和纠正。

版权声明/许可

此专利文档的公开部分可包含受到版权保护的资料。在该专利文档或专利公开出现在专利和商标局专利文件或记录中时,版权所有人不反对任何人复制该专利文档或专利公开,但以其它方式无论如何保留所有版权权利。版权声明适用于下面所描述的所有数据,并且在此的附图中,且适用于下面描述的任何软件:Copyright© 2015,英特尔公司,保留所有权利。

背景技术

易失性存储器资源在当前计算平台中发现了广泛的用途,不论是用于服务器、桌上型还是膝上型计算机、移动装置以及消费和商务电子设备。DRAM(动态随机存取存储器)装置是在使用的最常见类型的存储器装置。随着生产DRAM的制造工艺继续缩放到更小的几何,DRAM错误预计要增加。用于解决增加的DRAM错误的一种技术是采用管芯上ECC(错误校验和纠正)。管芯上ECC指的是驻留在存储器装置自身上的错误检测和纠正逻辑。用管芯上ECC逻辑,DRAM能纠正单个位故障(诸如通过单个错误纠正(SEC))。除了系统级ECC还能使用管芯上ECC,但系统级ECC没有对在存储器装置级已经执行了什么错误纠正的洞察。从而,虽然管芯上ECC能处置存储器装置内部的错误,但错误能累积不被主机系统检测到。

附图说明

如下描述包含对具有作为本发明实施例实现的示例给出的图示的图的论述。附图应该作为示例而非作为限制来被理解。在本文中使用时,对一个或更多“实施例”的参考要理解为描述包含在本发明至少一个实现中的具体特征、结构和/或特性。从而,在本文中出现的诸如“在一个实施例中”或“在备选实施例中”的短语描述了本发明的各种实施例和实现,并且不一定全都指同一实施例。然而,它们也不一定相互排他。

图1是其中存储器装置采用错误校验模式监测错误的系统的实施例的框图。

图2是执行内部错误纠正并存储错误信息的系统的实施例的框图。

图3是其中寄存器存储具有错误的多个行以及对于任何行的最大错误的系统的实施例的框图。

图4A是能够实现错误校验和清除(ECS)模式的命令编码的实施例的框图。

图4B是能够实现错误校验和清除(ECS)模式的模式寄存器的实施例的框图。

图4C是用来存储具有最大错误计数的行地址的多用途寄存器的实施例的框图。

图4D是用来存储包含错误的多个行的计数的多用途寄存器的实施例的框图。

图5是生成错误纠正信息并支持错误校验和清除模式的存储器装置处的逻辑的实施例的框图。

图6是用于在错误校验和清除(ECS)模式中经由错误纠正操作监测一个或更多错误计数的过程的实施例的流程图。

图7是在其中能实现具有错误跟踪的错误校验和清除模式的计算系统的实施例的框图。

图8是在其中能实现具有错误跟踪的错误校验和清除模式的移动装置的实施例的框图。

下面是对某些细节和实现的描述,其包含图的描述,图可描绘一些或所有下面描述的实施例,以及论述本文呈现的发明概念的其它潜在实施例或实现。

具体实施方式

如本文所描述,存储器装置模式能够实现错误监测。错误监测模式能通过任何标签被提及。本文所描述的错误监测模式使能够执行错误校验和纠正(ECC)并对具有错误的存储器段(以及具有最高数量的错误的段)的总数进行计数。通常,段或部分将是存储器装置的行,其中能够针对错误对该行内的每个数据块(例如预取大小的数据)进行测试。ECC在本文指的是基于错误校验和纠正数据校验所存储数据的有效性的任何过程和/或操作或一组操作,以及基于该操作或过程执行某种形式的错误纠正例程。

在一个实施例中,错误监测模式是使DRAM(动态随机存取存储器装置)能够执行一个或更多ECC操作并对错误计数的错误校验和清除(ECS)模式。此外,此类错误监测模式能通过任何名称被提及,但为了简化,ECS模式在本文作为示例使用,且不是限制性的。与存储器装置关联的存储器控制器用发送到存储器装置的触发器触发ECS模式。从而,主机能控制该模式并接收错误计数信息。存储器装置包含多个可寻址存储器位置,其能被组织成段(诸如字线或行或其它部分)。存储器位置存储数据并且具有关联的ECC信息。在ECS模式中,存储器装置读一个或更多存储器位置,并且基于存储在存储器装置内的ECC信息对于一个或更多存储器位置执行ECC。从而,存储器装置在ECS模式中执行内部ECC。存储器装置对错误信息进行计数,错误信息包含指示具有至少阈值数量的错误的段的数量的段计数以及包含指示任何段中的最大数量的错误的最大计数。

对存储器装置的参考能适用于不同存储器类型。存储器装置一般指的是易失性存储器技术。易失性存储器是如果对装置中断功率则其状态(以及因此在其上存储的数据)不确定的存储器。非易失性存储器指的是即便对装置中断功率其状态也确定的存储器。动态易失性存储器需要刷新存储在装置中的数据以维持状态。动态易失性存储器的一个示例包含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能指的是管芯本身和/或封装的存储器产品。

然而在传统存储器子系统中,由于管芯上或内部ECC,错误能够在DRAM内累积不被检测到,如本文所描述,存储器装置能对错误计数并向主机系统暴露错误信息。存储器装置内的管芯上或内部ECC通常指的是对存储器阵列中的单个位错误(SBE)的错误校验和纠正。在一个实施例中,与DDR4E或变体或扩展兼容的DRAM能应用与错误计数或监测组合的ECS。从而,DDR4E DRAM的一个实施例能清除错误并跟踪装置的错误累积。在一个实施例中,在使用ECS的情况下,存储器装置保持指示具有至少一个错误的行的数量的错误计数,并跟踪具有最高错误数量的行地址。

在一个实施例中,DDR4E装置结合管芯上ECC,并且包含具有128位数据块的多个可寻址位置的行或字线。数据块能具有关联的ECC位(例如,8位内部错误纠正数据)。ECS模式能为此类DDR4E装置提供透明支持。在一个实施例中,ECS模式包含结合错误计数机制作为ECC操作的部分的错误校验和清除操作。ECS模式能够使DRAM能够内部读、纠正SBE并将纠正的数据写回到阵列。此类读、纠正和写回能被称为“清除”错误。

在一个实施例中,支持ECS模式的存储器装置包含用来存储错误计数信息的一个或更多寄存器。例如,寄存器能是DRAM模式寄存器。寄存器位置能包含多用途寄存器(MPR),其中存储器装置能存储包含具有错误的段的数量以及最大错误计数和/或具有最大错误计数的段的地址的错误计数信息。在一个实施例中,存储器装置在ECS模式中使用两个寄存器跟踪在ECS模式操作期间检测的码字和校验位错误。在一个实施例中,存储器装置将值从行错误计数器存储到一个寄存器,并将值从每行错误计数器存储到另一寄存器。在一个实施例中,行错误计数器跟踪具有至少阈值数量的检测的码字和校验位错误的行的数量。阈值数量能是一个错误。阈值数量能是两个错误或者某一其它数量的错误。在一个实施例中,每行错误计数器跟踪具有最大数量码字和校验位错误的行的地址,并且能包含对于该行的码字和校验位错误计数。

在一个实施例中,存储器控制器读由存储器装置存储在寄存器中的错误计数信息。主机系统(例如主机操作系统和/或主机CPU(中央处理单元))能利用错误计数信息来改进存储器子系统的系统级RAS(可靠性、可访问性和可服务性)。从而,通过存储器子系统向存储器装置上的错误计数信息提供透明度,存储器装置它们自身不需要暴露特定错误信息,但能提供足够的信息来改进在系统级的错误纠正。在一个实施例中,存储器控制器能从错误信息中提取多位错误信息,并应用所述多位信息来确定如何向系统应用ECC(例如通过知道在存储器中哪里发生错误)。在一个实施例中,存储器控制器使用来自存储器装置的错误信息作为用于改进针对多位错误的SDDC(单个装置数据纠正)ECC操作的元数据。

图1是在其中存储器装置以错误校验模式监测错误的系统的实施例的框图。系统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的错误纠正和控制逻辑。系统级ECC指的是在存储器控制器120应用错误纠正,并且能向来自多个不同存储器装置140的数据位应用错误纠正。在一个实施例中,存储器控制器120包含ECS170,其表示用来在一个或更多存储器装置140中实现ECS模式的电路或逻辑。在一个实施例中,ECS 170包含用来设置存储器装置140的模式寄存器144以触发ECS模式的逻辑。在一个实施例中,ECS 170包含用来编码并发送命令以在一个或更多存储器装置140中触发ECS模式的逻辑。在一个实施例中,ECS 170包含用来从存储器装置140读错误信息的逻辑。

在一个实施例中,控制器150包含ECS逻辑156,其表示存储器装置140中用来进入ECS模式并执行一个或更多ECS操作的逻辑。ECS逻辑156能被视为包含用来执行ECC操作的内部或管芯上ECC逻辑。在一个实施例中,ECS 156读寄存器144的设置以确定是否能够实现ECS模式。在一个实施例中,ECS 156确定经由逻辑152的命令逻辑解码接收ECS模式触发器。在一个实施例中,存储器控制器120的ECS 170设置寄存器144的一个或更多位以重置错误信息计数。

通常,DRAM具有用来控制内部操作定时的管芯上或内部振荡器(未明确示出)。对于小数量操作,受主机控制的系统定时与内部振荡器之间的定时中的差能相当容易地被同步。对于更长系列的指令,存储器装置140与主机之间的定时偏移能产生同步问题。在一个实施例中,存储器控制器120发出用于存储器装置140在ECS模式中执行的一系列ECS操作命令。在一个实施例中,存储器控制器120简单地使存储器装置140处于ECS模式中,并允许控制器150在内部控制操作。在来自存储器控制器120的一系列外部操作的情况中,控制器150能从外部命令生成内部命令以按序通过存储器资源160的存储器位置来执行ECC。在存储器控制器使存储器装置140处于ECS模式中的情况下,控制器150能生成内部命令以按序通过存储器资源。在一个实施例中,在任一情况下,控制器150控制用于ECS操作的存储器位置地址的生成的至少一部分。

图2是执行内部错误纠正并存储错误信息的系统的实施例的框图。系统200表示存储器子系统的组件。系统200提供按照图1系统100的实施例的存储器子系统的一个示例。系统200能被包含在使用具有内部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互连的硬件资源。

存储器230包含命令执行234,其表示存储器装置内用来接收并执行来自存储器控制器220的命令的控制逻辑。命令能包含用于存储器装置在ECS模式中执行以记录错误计数信息的一系列ECC操作。在一个实施例中,模式寄存器238包含用来存储错误计数信息的一个或更多多用途寄存器。在一个实施例中,模式寄存器238包含能被存储器控制器220设置以能够实现错误计数信息的重置的一个或更多字段。

存储器230包含阵列240,其表示数据被存储在存储器装置中所在的存储器位置的阵列。在一个实施例中,阵列240的每个地址位置244包含关联的数据和ECC位。在一个实施例中,地址位置244表示可寻址的数据块,诸如128位块、64位块或256位块。在一个实施例中,地址位置244被组织为存储器位置的段或群组。例如,如图所示,存储器230包含多行242。在一个实施例中,每行242是针对错误进行校验的存储器的一部分或段。在一个实施例中,行242对应于存储器页面或字线。阵列240包含N个行242,并且行242包含M个存储器位置。

在一个实施例中,地址位置244对应于存储器字,且行242对应于存储器页面。存储器的页面指的是为存储器访问操作分配的一定粒度量的存储器空间。在一个实施例中,阵列240具有较大页面大小以容纳除了数据位之外的ECC位。从而,正常页面大小将包含为数据位分配的足够空间,并且阵列240为数据位加上ECC位分配足够空间。

在一个实施例中,存储器控制器包含用来管理用于ECC操作的ECS模式以及存储器230中的错误计数的ECS控制器226。在一个实施例中,存储器230包含由ECS控制250管理的内部ECC。存储器控制器220管理系统范围ECC,并且能跨并行的多个不同存储器资源(例如多个存储器资源230)检测和纠正错误。用于系统范围ECC的许多技术是已知的,并且能包含采用跨多个并行资源分散错误的方式来管理存储器资源。通过跨多个资源分散错误,存储器控制器220能恢复数据,即使是在存储器230中有一个或更多故障的情况下。存储器故障一般被归类为软件错误或软件故障(它们是通常源自于随机环境条件的瞬态位错误)或者硬件错误或硬件故障(它们是作为硬件故障的结果发生的非瞬态位错误)。

在一个实施例中,ECS控制250包含包括SBE的行242的计数252。在一个实施例中,ECS控制250包含一个或更多计数器。例如,SBE计数252能是计数器之一。ECS控制250包含用来执行错误校验和纠正的ECC逻辑(未具体示出)。当在行242中检测到错误时,ECS控制250使SBE计数252递增。在一个实施例中,ECS控制250包含最大计数和/或最大地址254。在一个实施例中,最大计数能保持在另一计数器中。在一个实施例中,最大地址指的是被确定为具有最高数量错误的段或行242的地址。

在一个实施例中,存储器230是存储器资源的排的部分。在一个实施例中,存储器包含存储器资源的多个堆,并且每个堆能被单独访问。在一个实施例中,所有堆都必须被预充电,并且在能够实现ECS模式之前处于空闲状态。在一个实施例中,命令执行234标识用于ECS模式的特定命令序列。在一个实施例中,在ECS模式中仅准许特定命令序列。虽然不同实现能进行变化,但允许的命令序列的一个示例能够如下:ECS-->DES-->ACT-->DES-->WR-->DES-->PRE-->DES。将被理解的是,能够使用NOP代替取消选择命令(DES),但NOP命令可要求切换芯片选择(CS)位,并且要求存储器对命令解码,而DES命令允许存储器对该循环简单地保持空闲。

命令序列能被描述为ECS命令触发器(如果经由模式寄存器设置触发ECS模式,则其可能不是必要的),其后跟随着取消选择(DES)、激活(ACT)、另一DES、写(WR)、另一DES、预充电(PRE)和另一DES。在一个实施例中,ECS命令使存储器230处于ECS模式中。在一个实施例中,ECS命令后面跟随着ACT命令tMOD;ACT命令后面跟随着WR命令tRCD;并且WR命令后面跟随着PRE命令WL+tWR+10CK(假若满足tECSc)。在一个实施例中,用于ECS模式周期的最小时间是tECSc(其能够是45个CK或110ns中的较大者)。将被理解的是,tMOD能指的是用于模式寄存器设置命令更新的定时延迟,tRCD能指的是从ACT命令到内部读或写的定时延迟,WL能指的是写等待时间,tWR能指的是写恢复时间,并且CK能指的是时钟循环。

在一个实施例中,当在ECS模式中时,存储器230对于在发出ECS命令之后tMOD的时期忽略I/O 232的数据I/O和地址输入。忽略地址输入能包含忽略堆地址(BA)值和堆群(BG)值。在一个实施例中,用于I/O 232的I/O控制将数据I/O和地址输入设置成三态操作。

在一个实施例中,对于ECS-->ACT-->WR序列(忽略介于中间的DES命令),ECS命令将能够实现ECS模式,并且ACT命令将在内部执行行激活。对于由ECS控制250内的内部ECS地址计数器(未具体示出)确定的行,能发生行激活。在一个实施例中,WR命令将对于激活的行执行内部读修改写循环,其中列地址由ECS控制250内的内部ECS地址计数器确定。将理解到,ECS控制250能是内部控制器(诸如系统100的控制器150)的一部分。从而,ECS控制250内的计数器和控制能是内部控制器内的逻辑的一部分。备选地,单独的ECS控制逻辑,诸如单独逻辑电路或微控制器(用来实现ECS操作)。

在一个实施例中,内部读和写循环或者读修改写循环从阵列240中读整个码字和校验位(例如128个数据位和8个校验位),纠正码字或校验位中的SBE,并将所得到的码字和校验位写回到阵列240中的适当行242。在一个实施例中,PRE命令退出ECS模式,并将存储器230返回到正常模式。

如上面所提到的,在一个实施例中,ECS控制250包含用来在内部生成用于执行ECS操作的地址信息的逻辑。在一个实施例中,ECS模式按序通过整个存储器区域(诸如堆群)。在一个实施例中,ECS控制250保持对用于按序通过存储器230的地址的跟踪。在一个实施例中,存储器控制器220保持跟踪某些地址信息,并且存储器230保持跟踪其它地址信息。例如,考虑如下的实现,其中存储器控制器220标识堆群并且存储器230保持跟踪堆群内的行地址和列地址。备选地,考虑存储器控制器220标识堆群和列,并且存储器230标识行。许多其它实现是可能的。该实现将取决于系统设计,诸如是否地址位置在存储器230上被调和,并且存储器控制器不能有效地按序浏览校验空间。在一个实施例中,存储器控制器负责提供足够的ECC操作命令,并且存储器装置在内部执行所有寻址。在一个实施例中,一个ECS命令引起在单个存储器位置上的ECC操作,并且存储器控制器发送ECS命令序列以在许多位置上执行ECC操作。

不管存储器230或存储器控制器220是否标识寻址,并且不管ECS命令是否在一个或多个存储器位置上触发ECC操作,存储器230都在ECS模式操作期间对错误数量进行计数。如所描述,错误计数信息能包含具有错误的行或其它段的总数,以及对于任何段的最高错误计数。

图3是其中寄存器存储具有错误的行的数量以及对于任何行的最大错误的系统的实施例的框图。系统300图示了按照图1的系统100和/或图2的系统200的实施例保持错误信息计数并实现ECS示例的ECC系统的组件。系统300提供了用来执行ECS模式操作的组件的表示。在一个实施例中,存储最终计数的寄存器是主机可访问的寄存器,并且其它组件在存储器装置上的控制器内。

地址控制320表示用来使存储器装置能够管理用于ECS操作的内部寻址的控制逻辑。如之前所描述,存储器装置可负责某些地址信息,并且存储器控制器负责其它地址信息。从而,系统300能具有不同实现,这取决于存储器装置的地址信息责任。在一个实施例中,地址控制320包含用于使用于ECS命令的地址递增的一个或更多ECS地址计数器。地址控制320能包含用于列地址、行地址、堆地址、堆群地址、和/或这些的组合的计数器。在一个实施例中,地址控制320包含用于使用于ECS操作的行或其它段的列地址递增的计数器。

在一个实施例中,地址控制320在每个ECS WR命令上使列地址递增,ECS WR命令能通过对内部ECS命令信号(ECS CMD)与由用于写的内部列地址选通脉冲(CAS WR)所指示的内部写命令进行“与”运算来被触发或指示,如用逻辑314所示。内部信号指的是由内部控制器在存储器装置内内部生成的信号,而不是规定从外部存储器控制器接收的命令。响应于来自主机的外部命令而生成内部命令。在一个实施例中,一旦列计数器缠绕或滚转,行计数器就将按顺序递增,并且读下一行中的每个码字和关联的校验位,直到堆内的所有行被访问。在一个实施例中,一旦行计数器缠绕,堆计数器就将按顺序递增,并且堆群内的下一顺序堆将重复访问每个码字和关联的校验位的过程,直到存储器内的所有堆和堆群被访问。

在一个实施例中,能响应于对于存储器子系统的重置条件和/或响应于模式寄存器中的位(MRx Ay位)而重置列、行、堆、堆群和/或用来生成地址控制320中的内部地址的其它计数器,如用逻辑312所图示。重置能发生在功率循环或其它系统重启时。在一个实施例中,由地址控制320生成的地址信息能用于控制解码逻辑(例如存储器装置内的行和列解码器电路)以触发ECS操作。然而,鉴于对于其它操作,存储器装置对从主机接收的外部地址信息进行操作,在一个实施例中,系统300包含复用器370用以在外部地址372和内部地址信息(来自地址控制320)之间进行选择。虽然未具体示出,但将理解到,用于复用器370的控制能是ECS模式状态,其中在ECS模式中,选择内部地址生成来访问存储器阵列的存储器位置,并且当不在ECS模式中时,选择外部地址372来访问存储器阵列的存储器位置。

当存储器控制器提供一些地址信息时,系统300的选择逻辑能有选择地更加复杂。基于内部地址信息和/或外部地址信息,系统300能校验所有码字并且校验存储器内的位。更具体地说,系统300能执行ECS操作,这些操作包含对于所有选择的或规定的地址读、纠正和写存储器位置的ECC操作。当在系统300上进行操作一次后,系统300能被配置成(例如经由计数器的大小)使计数器缠绕并重启地址计数。例如,一旦已经校验了存储器的所有存储器位置,堆群计数器就能缠绕,并用下一ECS命令再次开始该过程。完成ECS模式的一个循环所要求的ECS命令的总数是密度相关的。表1提供了基于用于各种存储器配置的码字的数量所要求的命令数量的列表的一个示例。在一个实施例中,DRAM控制器保持跟踪向DRAM发出的ECS命令数量,以对装置中的所有码字和校验位进行错误校验。

对于具有x4、x8或x16接口的8Gb装置,128位码字数量是67,108,864,其将要求相等数量的命令循环通过所有存储器位置。对于具有x4、x8或x16接口的12Gb装置,128位码字数量是100,663,296。对于具有x4、x8或x16接口的16Gb装置,128位码字数量是134,217,728。

系统300包含用来对选择的或寻址的存储器位置执行错误校验和纠正操作的ECC纠正逻辑330。在一个实施例中,当在存储器位置检测到错误时,逻辑330生成输出标志。逻辑330能响应于用ECC操作检测并纠正单个位错误(SBE)而生成标志。在一个实施例中,来自逻辑330的错误检测信号触发ERC(错误行计数器)332和每行错误计数器344递增。在一个实施例中,ERC 332具有在将行计数为具有错误的行之前必须触发为在具体行或段中具有错误的阈值数量(在某些地方标识为阈值N)的存储器位置。例如,阈值能够是1个错误,并且对具有至少一个错误的所有行计数。作为另一示例,阈值能够是2个错误,并且仅具有一个错误的行不会被计数,但具有至少2个错误的所有行被计数。将被理解的是,能基于系统配置考虑来设置阈值。从而,什么是“坏行”的定义能由用于ERC 332的阈值设置。如果错误数量是1,则ERC 332可能是不必要的,并且ECC逻辑330的输出能被直接馈送到行错误计数器342。

如图所示,当每行的阈值数量的错误已经达到如ERC 332所确定的那样时,ERC332输出信号以引起行错误计数器342递增其的计数。由逻辑330检测的每一个错误使每行错误计数器344递增。将被理解的是,ERC 332和每行错误计数器344在每行或每段的基础上生成信息;从而,当行地址滚转时,地址控制320能触发ERC 332和每行错误计数器344重置它们的计数。

从而,在一个实施例中,每行错误计数器344每当检测到码字或校验位错误时递增,且每当行计数器缠绕或滚转时被重置。在一个实施例中,如果在给定行上的ECS WR命令期间检测到一个或更多码字或校验位错误,则行错误计数器342递增1。在一个实施例中,行错误计数器342对于在行中检测到的每两个错误(或配置的其它数量的错误)递增1。

每行错误计数器344跟踪给定行上的码字或校验位错误的总数。在一个实施例中,计数器344提供其的计数以用于与先前的高或最大错误计数进行比较。高错误计数352表示保存高错误计数(其指示在任何行中检测到的最大数量错误)的寄存器或其它存储装置。比较逻辑350确定每行错误计数器344中的计数值是否大于高错误计数352。在一个实施例中,如果计数器344中的当前错误计数大于高错误计数352的先前最大值,则逻辑350生成触发高错误地址354被设置成当前行地址的输出。此外,高错误计数352被设置成来自每行错误计数器344的计数。在一个实施例中,行码字或校验位错误计数与先前的行码字或校验位错误计数进行比较以确定DRAM内具有最高错误计数的行地址。

在一个实施例中,在对于标识用于校验的存储器空间中的所有行执行ECS操作之后,地址控制320触发指示最后一个地址已经到达或者滚转的信号。在一个实施例中,信号触发行错误寄存器362从行错误计数器342加载计数,并且行错误计数器342被重置。在一个实施例中,系统300包含在对信号进行传播中的延迟以保证在计数器被重置之前寄存器362锁存来自计数器342的计数。在一个实施例中,指示已经到达最后一个地址的信号还触发每行错误寄存器364从高错误计数352加载计数。在一个实施例中,指示已经到达最后一个地址的信号还触发每行错误寄存器364从高错误地址354加载地址。在一个实施例中,用于寄存器364加载地址和/或计数的信号还触发高错误计数352重置。在一个实施例中,行错误寄存器362表示DRAM的模式寄存器的MPR页面5。在一个实施例中,行错误寄存器364表示DRAM的模式寄存器的MPR页面4。

图4A是能够实现错误校验和清除(ECS)模式的命令编码的实施例的框图。命令编码410表示按照用命令编码触发ECS模式的ECS的任何实施例的ECS命令编码的示例。ECS命令412图示了编码的一个示例,其中时钟使能位以及ACT_n、CAS_n和WE_n被设置成高。芯片选择CS_n连同RAS_n被设置成低。在一个实施例中,堆地址信息(BA和BG)被设置成低,并且行地址位A11:A0保持高。在一个实施例中,A12被设置成低。在此类编码中,DRAM将在内部生成用于ECS操作的地址。备选地,命令412能包含某地址信息。

图4B是能够实现错误校验和清除(ECS)模式的模式寄存器的实施例的框图。模式寄存器420表示支持ECS模式的DRAM中的模式寄存器的示例。在一个实施例中,图示为模式寄存器420的寄存器能是两个单独的模式寄存器。如图所示,地址424(Az)表示按照用模式寄存器触发ECS模式的ECS的任何实施例的触发ECS模式的位。地址422(Ay)表示触发ECS计数器重置的位。在其中命令编码触发ECS模式的实现中,地址424可以不被使用,而地址422仍能够提供重置ECS计数器的能力。在一个实施例中,被写到地址424的“1”能触发ECS模式以使存储器装置执行ECC操作并对错误计数,而“0”能退出ECS模式。

在一个实施例中,ECS模式要求两个附加模式寄存器位。第一位是地址422,其能够实现清空计数器和错误结果寄存器。编码能够被反转,但如图所示,“1”能清空计数器和结果寄存器,并且“0”能初始化寄存器和计数器。在一个实施例中,Ay必须被写到“0”,之后能够应用随后的1以清空计数器和寄存器。第二位未具体被示出,并且是能够实现结果寄存器的模式寄存器位。例如,在一个实施例中,模式寄存器位能够实现MPR页面4到7,其中结果被存储在MPR 4和5(页面4和5)中。

图4C是用来存储具有最大错误计数的行地址的多用途寄存器的实施例的框图。MPR页面430表示存储具有最大数量错误的行地址的寄存器。例如,MPR页面430在DDR4E实现中能是MPR页面4。在一个实施例中,地址BA1:BA0提供MPR位置。例如,“00”能对应于MPR0,“01”能对应于MPR1,“10”能对应于MPR2,并且“11”能对应于MPR3。在一个实施例中,MPR页面430的位被分配为:A[17:0]是行地址,BA[1:0]是堆地址,BG[2:0]是堆群地址,并且EC[5:0]是码字和校验位错误的数量,其被限制于最大64个错误(2

在一个实施例中,MPR页面430存储信息以用于主机访问。在一个实施例中,MPR页面430在被主机读之后并不自动地被清空,并且每当执行完整序列ECS命令时其应被主机读。在一个实施例中,主机重置寄存器被主机重置成0,然后随后进行按序通过DRAM。

图4D是用来存储包含错误的多个行的计数的多用途寄存器的实施例的框图。MPR页面440表示存储具有最大数量错误的行地址的寄存器。例如,MPR页面440在DDR4E实现中能是MPR页面5。在一个实施例中,地址BA1:BA0提供MPR位置。例如,“00”能对应于MPR0,“01”能对应于MPR1,“10”能对应于MPR2,并且“11”能对应于MPR3。在一个实施例中,MPR页面450的位被分配为:EC[N-1:0]是具有至少阈值(例如至少1个或至少2个)码字或校验位错误的行的数量,其直到最大2

在一个实施例中,MPR页面440存储信息以用于由主机访问。在一个实施例中,MPR页面440在被主机读之后并不自动地被清空,并且每当执行完整序列ECS命令时其应被主机读。在一个实施例中,主机重置寄存器被主机重置成0,然后随后进行按序通过DRAM。

图5是生成错误纠正信息并支持错误校验和清除模式的存储器装置处的逻辑的实施例的框图。系统500是按照本文描述的实施例、带有具有支持ECS模式对错误信息进行计数的内部ECC的存储器装置的存储器子系统的ECC组件操作的一个示例。系统500提供了DRAM中的内部ECC的示例,其生成并存储内部校验位。主机510包含存储器控制器或者管理对存储器520的访问的等效或备选电路或组件。主机510对从存储器520读取的数据执行外部ECC。

系统500图示了存储器520中的写路径532,其表示数据从主机510被写到存储器520的路径。主机510将数据542提供到存储器520以便写到存储器阵列。在一个实施例中,存储器520用校验位生成器522生成校验位544以与存储器中的数据一起存储,这能是用于码字校验/纠正的内部ECC位的一个示例。校验位544能使存储器520能够纠正可能在向存储器阵列写以及从存储器阵列读中发生的错误。数据542和校验位544能被包含为码字进546(其被写到存储器资源)。将被理解的是,校验位544表示存储器装置内的内部校验位。在一个实施例中,不存在到校验位544的写路径。

读路径534表示数据从存储器520被读到主机510的路径。在一个实施例中,写路径532和读路径534的至少某些硬件组件是相同硬件。在一个实施例中,存储器520响应于来自主机510的读命令来取码字出552。码字能包含数据554和校验位556。数据554和校验位556能分别对应于在写路径532中被写的数据542和校验位544,如果写命令和读命令的地址位置位相同的话。将被理解的是,读路径534中的错误纠正能包含将XOR(异或)树应用到对应H矩阵以检测错误并有选择地纠正错误(在单个位错误的情况下)。

如在本领域中理解的,H矩阵指的是汉明(hamming)码奇偶校验矩阵,其示出了码字的数位的线性组合如何等于0。从而,H矩阵行标识对于要成为码字一部分的分量或数位必须满足的奇偶校验等式的系数。在一个实施例中,存储器520包含检验子解码524,其使存储器能够向数据554应用校验位556以检测在读数据中的错误。检验子解码524能生成检验子558以便用于生成针对读数据的恰当错误信息。数据554也能被转发到错误纠正528以用于纠正检测到的错误。

在一个实施例中,检验子解码524将检验子558传到检验子生成器526以生成错误矢量。在一个实施例中,校验位生成器522和检验子生成器526完全由用于存储器装置的对应H矩阵规定。在一个实施例中,如果在读数据中没有错误(例如零检验子558),则检验子生成器526能生成使数据554被写回到存储器的信号。在一个实施例中,如果存在单个位错误(例如匹配对应H矩阵的其中一列的非零检验子558),则检验子生成器526能生成具有错误位置564的CE(纠正的错误)信号,其是到错误纠正逻辑528的纠正的错误指示。错误纠正528能将纠正的错误应用于数据554中的规定位置,以生成纠正的数据566以便写回到存储器。在ECS模式中,ECC能用ECC操作来校验并清除存储器位置中的错误。

图6是用于在错误校验和清除(ECS)模式中经由错误纠正操作监测一个或更多错误计数的过程的实施例的流程图。在支持本文所描述的ECS模式的存储器子系统的实施例中能执行用于执行ECS操作的过程。存储器子系统包含存储器控制器602和存储器604。按照本文描述的任何实施例,存储器604能是存储器装置。存储器响应于触发器进入ECS模式。在ECS模式中,存储器装置针对错误进行校验并纠正它们,同时对存储器控制器能读的错误信息计数。

在一个实施例中,存储器控制器602用写命令将数据写到存储器装置,612。响应于写命令,在一个实施例中,存储器604能生成内部错误纠正,其包含生成内部校验位。存储器604记录或存储数据以及对应的ECC位,614。存储器604随后能使用ECC位执行ECC操作,诸如按照本文描述的任何实施例的ECS模式中的ECC操作。

在一个实施例中,存储器控制器确定执行错误校验和清除(ECS),620。存储器控制器602生成并发送ECS模式触发器,622。在一个实施例中,ECS模式触发器是ECS命令,其是用特定编码发送的使存储器604执行ECS操作的命令。在一个实施例中,ECS模式触发器是模式寄存器中的一位或更多位。例如,存储器控制器602能执行布置存储器ECS模式的模式寄存器设置命令。响应于ECS模式触发器,存储器进入ECS模式,624。

在一个实施例中,存储器生成用于ECS操作的内部地址信息,626。例如,存储器604能包含管理ECS操作(包含生成地址信息)的内部控制器。此类控制器能包含一个或更多计数器来跟踪地址以便按序通过用于ECS操作的存储器。存储器生成用来执行ECS操作的内部信号,628。内部信号能包含在用于ECS模式的地址位置上执行的特定操作,并且能包含生成和/或解码地址信息以便接下来按序通过存储器。

在一个实施例中,ECS操作包含读数据、纠正数据以及将数据写回到规定的存储器位置。从而,在一个实施例中,存储器读存储器一部分(诸如行)的一个或更多存储器位置,并在存储器位置上执行错误纠正,630。错误纠正能是基于与数据一起被生成并存储的所存储的ECC位的ECC操作。存储器对具有错误的部分的数量进行计数,632。在一个实施例中,存储器对在该部分内(例如在存储器部分的任何可寻址存储器位置内)发现的每一个错误的错误计数。在一个实施例中,存储器仅对具有至少阈值数量的错误(例如2个)的部分的错误进行计数。从而,存储器能对检测到的每N个错误的错误计数,或者递增对于具有至少N个错误的每一个部分或段的计数。在一个实施例中,存储器对每部分错误数量以及具有错误的部分的数量进行计数,634。每部分错误数量指示在任何段中的最大错误数量。

在一个实施例中,存储器确定每部分的错误数量的计数是否超过先前的最大错误数量,636。如果错误数量不超过最大值,638“否”分支,则存储器能继续到在644按序通过存储器。如果错误数量超过先前的最大值,638“是”分支,则在一个实施例中,存储器将错误数量存储为最大值,640,并将该部分的地址信息与最大错误计数一起存储,642。

存储器能确定是否有更多的存储器部分要校验和清除,644。如果有更多部分要校验,646“是”分支,则存储器能生成用于ECS操作的随后地址,626。如果没有更多部分要校验,646“否”分支,则在一个实施例中,存储器存储错误计数和最大错误计数,648。例如,存储器能将错误信息存储在一个或更多寄存器中以对于存储器控制器602的访问是可用的。在所有校验完成之后存储器能退出ECS模式,650。在一个实施例中,存储器控制器访问错误信息652。

图7是在其中能实现具有错误跟踪的错误校验和清除模式的计算系统的实施例的框图。系统700表示按照本文描述的任何实施例的计算装置,并且能是膝上型计算机、桌面型计算机、服务器、游戏或娱乐控制系统、扫描仪、复印机、打印机、路由或交换装置或者其它电子装置。系统700包含处理器720,其提供用于系统700的处理、操作管理、和指令执行。处理器720能包含任何类型的微处理器、中央处理单元(CPU)、处理核或其它处理硬件以提供用于系统700的处理。处理器720控制系统700的总体操作,并且能够是或者包含一个或更多可编程通用或专用微处理器、数字信号处理器(DSP)、可编程控制器、专用集成电路(ASIC)、可编程逻辑装置(PLD)等,或此类装置的组合。

存储器子系统730表示系统700的主存储器,并且提供对要由处理器720执行的代码或者要在执行例程中使用的数据值的暂时存储。存储器子系统730能包含一个或更多存储器装置,诸如只读存储器(ROM)、闪速存储器、一个或更多种类的随机存取存储器(RAM)或其它存储器装置或此类装置的组合。存储器子系统730除了其它事项外还存储和托管操作系统(OS)736以提供用于在系统700中执行指令的软件平台。此外,其它指令738从存储器子系统730被存储和执行以提供系统700的逻辑和处理。OS 736和指令738由处理器720执行。存储器子系统730包含存储器装置732,其中它存储数据、指令、程序或其它项目。 在一个实施例中,存储器子系统包含存储器控制器734,其是用来生成并发出命令给存储器装置732的存储器控制器。将被理解的是,存储器控制器734能够是处理器720的物理部分。

处理器720和存储器子系统730被耦合到总线/总线系统710。总线710是表示任何一个或更多单独物理总线、通信线/接口、和/或通过适当的桥、适配器和/或控制器连接的点对点连接的抽象。因此,总线710例如能包含如下中的一个或多个:系统总线、外围组件互连(PCI)总线、超传输或工业标准架构(ISA)总线、小型计算机系统接口(SCSI)总线、通用串行总线(USB)或电气与电子工程师协会(IEEE)标准1394总线(通常称为“火线”)。总线710的总线也能对应于网络接口750中的接口。

系统700还包含一个或更多输入/输出(I/O)接口740、网络接口750、一个或更多内部大容量存储装置760以及耦合到总线710的外围接口770。I/O接口740能包含一个或更多接口组件,通过这些接口组件用户与系统700交互(例如视频、音频和/或字母数字对接)。网络接口750给系统700提供了在一个或更多网络上与远程装置(例如服务器、其它计算装置)通信的能力。网络接口750能包含以太网适配器、无线互连组件、USB(通用串行总线)或其它有线的或基于无线标准的接口或专有接口。

存储装置760能够是或包含用于以非易失性方式存储大量数据的任何常规介质,诸如一个或更多基于磁、固态或光的盘或组合。存储装置760以永久状态保存代码或指令和数据762(即,该值被保留,尽管中断到系统700的功率)。存储装置760一般能被视为“存储器”,尽管存储器730是用来向处理器720提供指令的执行或操作存储器。然而存储装置760是非易失性的,存储器730能包含易失性存储器(即,如果对系统700中断功率,则数据的值或状态是不确定的)。

外围接口770能包含上面未具体提到的任何硬件接口。外围一般指的是依赖地连接到系统700的装置 。依赖连接是这样的连接,其中系统700提供在其上执行操作并且用户与其交互的软件和/或硬件平台。

在一个实施例中,存储器732是DRAM。在一个实施例中,处理器720表示执行存储在一个或更多DRAM存储器732中的数据的一个或更多处理器。在一个实施例中,网络接口750与在另一网络位置中的另一装置交换数据,并且该数据是被存储在存储器732中的数据。在一个实施例中,系统700包含用来管理用于系统的ECS模式操作的ECS控制器780。ECS控制器780表示按照本文描述的任何实施例、用来执行ECS操作以在存储器732内内部校验和纠正错误并对错误信息进行计数的ECS逻辑。

图8是在其中能实现具有错误跟踪的错误校验和清除模式的移动装置的实施例的框图。装置800表示移动计算装置,诸如计算平板、移动电话或智能电话、无线使能的电子阅读器、可穿戴计算装置或其它移动装置。将被理解的是,一般性地示出了某些组件,并且在装置800中并未示出此类装置的全部组件。

装置800包含处理器810,处理器810执行装置800的主处理操作。处理器810能包含一个或更多物理装置,诸如微处理器、应用处理器、微控制器、可编程逻辑装置或其它处理部件。由处理器810执行的处理操作包含对在其上执行应用和/或装置功能的操作平台或操作系统的执行。处理操作包含与和人类用户或与其它装置的I/O(输入/输出)相关的操作、与功率管理相关的操作、和/或与将装置800连接到另一装置相关的操作。处理操作还能包含与音频I/O和/或显示器I/O相关的操作。

在一个实施例中,装置800包含音频子系统820,其表示与向计算装置提供音频功能关联的硬件(例如音频硬件和音频电路)以及软件(例如驱动器、编解码器)组件。音频功能能包含扬声器和/或耳机输出,以及麦克风输入。用于此类功能的装置能被集成到装置800中,或被连接到装置800。在一个实施例中,用户通过提供由处理器810接收和处理的音频命令与装置800交互。

显示子系统830表示提供用于用户与计算装置进行交互的视觉和/或触觉显示的硬件(例如显示器装置)和软件(例如驱动器)组件。显示子系统830包含显示接口832,其包含用于向用户提供显示的具体屏幕或硬件装置。在一个实施例中,显示接口832包含与处理器810分开的用于执行与显示相关的至少一些处理的逻辑。在一个实施例中,显示子系统830包含向用户提供输出和输入二者的触摸屏装置。在一个实施例中,显示子系统830包含向用户提供输出的高清晰度(HD)显示器。高清晰度能指的是具有近似100 PPI(像素每英寸)或更大的像素密度的显示器,并且能包含诸如全HD(例如1080p)、视网膜显示器、4K(超高清晰度或UHD)的格式或其它格式。

I/O控制器840表示和与用户的交互相关的硬件装置和软件组件。I/O控制器840能进行操作以管理是音频子系统820和/或显示子系统830的部分的硬件。此外,I/O控制器840示出了用于连接到装置800的附加装置(通过其用户可与系统交互)的连接点。例如,能附连到装置800的装置可包含麦克风装置、扬声器或立体声系统、视频系统或其它显示器装置、键盘或小键盘装置或者用于供特定应用使用的其它I/O装置(诸如读卡器或其它装置)。

如上面所提到的,I/O控制器840能与音频子系统820和/或显示子系统830交互。例如,通过麦克风或其它音频装置的输入能为装置800的一个或更多应用或功能提供输入或命令。此外,代替显示输出或除了显示输出外,还能提供音频输出。在另一示例中,如果显示子系统包含触摸屏,则显示装置还充当输入装置,其能至少部分由I/O控制器840管理。在装置800上还能存在附加按钮或开关以提供由I/O控制器840管理的I/O功能。

在一个实施例中,I/O控制器840管理诸如加速计、摄像机、光传感器或其它环境传感器、陀螺仪、全球定位系统(GPS)或能包含在装置800中的其它硬件的装置。输入能够是直接用户交互的部分,以及向系统提供环境输入以影响其操作(诸如针对噪声滤波、针对亮度检测调整显示器、针对摄像机应用闪光或者其它特征)。在一个实施例中,装置800包含管理电池功率使用、电池充电以及与功率节省操作相关的特征的功率管理850。

存储器子系统860包含用于将信息存储在装置800中的存储器装置862。存储器子系统860能包含非易失性(如果到存储器装置的功率被中断则状态不改变)和/或易失性(如果到存储器装置的功率被中断则状态不确定)存储器装置。存储器860能存储应用数据、用户数据、音乐、照片、文档或其它数据,以及与执行系统800的应用和功能相关的系统数据(不管是长期的还是暂时的)。在一个实施例中,存储器子系统860包含存储器控制器864(其也能够被视为系统800的控制的一部分,并且能够潜在地被视为处理器810的一部分)。存储器控制器864包含用来生成并发出命令给存储器装置862的调度器。

连接性870包含用来使装置800能够与外部装置通信的硬件装置(例如无线和/或有线连接器和通信硬件)和软件组件(例如驱动器、协议栈)。外部装置能够是单独装置,诸如其它计算装置、无线接入点或基站以及诸如耳麦、打印机或其它装置的外设。

连接性870能包含多个不同类型连接性。概括地说,装置800用蜂窝连接性872和无线连接性874示出。蜂窝连接性872一般指的是由无线载波提供的蜂窝网络连接性,诸如经由GSM(全球移动通信系统)或变形或衍生、CDMA(码分多址)或变形或衍生、TDM(时分复用)或变形或衍生、LTE(长期演进-也称为“4G”)、或其它蜂窝服务标准提供的蜂窝网络连接性。无线连接性874指的是不是蜂窝的无线连接性,并且能包含个域网(诸如蓝牙)、局域网(诸如WiFi)和/或广域网(诸如WiMax)或者其它无线通信。无线通信指的是通过非固态介质通过使用调制的电磁辐射传递数据。有线通信通过固态通信介质发生。

外围连接880包含用来进行外围连接的硬件接口和连接器以及软件组件(例如驱动器、协议栈)。将被理解的是,装置800能够既是到其它计算装置的外围装置(“到”882),也能够具有连接到它的外围装置(“从”884)。装置800通常具有“入坞(docking)”连接器用以连接到其它计算装置,以为了诸如管理(例如下载和/或上传、改变、同步)装置800上的内容的目的。此外,入坞连接器能允许装置800连接到某些外设,这些外设允许装置800控制例如到视听系统或其它系统的内容输出。

除了专有入坞连接器或其它专有连接硬件,装置800能经由公共连接器或基于标准的连接器进行外围连接880。公共类型能包含通用串行总线(USB)连接器(其能包含任何数量的不同硬件接口),包含微型显示端口(MDP)的显示端口、高清晰度多媒体接口(HDMI)、火线或其它类型。

在一个实施例中,存储器862是DRAM。在一个实施例中,处理器810表示执行存储在一个或更多DRAM存储器862中的数据的一个或更多处理器。在一个实施例中,系统800包含用来管理用于系统的ECS模式操作的ECS控制器890。ECS控制器890表示按照本文描述的任何实施例执行ECS操作以在存储器862内内部校验和纠正错误并对错误信息进行计数的ECS逻辑。

在一个方面中,动态随机存取存储器装置(DRAM)包含:存储阵列,其包含多个存储器段,所述存储器段包含用来存储数据和与所述数据关联的错误校验和纠正(ECC)信息的多个存储器位置;I/O(输入/输出)电路,用来耦合到关联的存储器控制器,所述I/O电路当耦合到所述关联的存储器控制器时接收用于错误校验和清除(ECS)模式的触发器;以及在所述DRAM上的内部控制器,响应于用于所述ECS模式的所述触发器,其用于读一个或更多存储器位置、基于所述ECC信息对于所述一个或更多存储器位置执行ECC、并且对错误信息计数,所述错误信息包含指示具有N个或更多错误的段的数量的段计数以及指示在任何段中的最大数量的错误的最大计数。

在一个实施例中,DRAM包含符合双数据速率版本4扩展(DDR4E)的同步动态随机存取存储器装置(SDRAM)。在一个实施例中,存储器段包括DRAM行。在一个实施例中,触发器包括由所述存储器控制器生成的ECS命令。在一个实施例中,触发器包括由所述存储器控制器设置的模式寄存器设置。在一个实施例中,内部控制器进一步响应于用于所述ECS模式的所述触发器而生成用于所述存储器位置的地址信息。在一个实施例中,存储器控制器用来标识与用于所述ECS模式的所述触发器关联的堆群,并且其中所述内部控制器进一步生成用于所述堆群内的特定行的地址信息。在一个实施例中,内部控制器用于响应于用于ECS模式的所述触发器而对于所述一个或更多存储器位置执行单个位错误(SBE)ECC。在一个实施例中,N等于1。在一个实施例中,N等于2。在一个实施例中,进一步包括用于将段计数存储在DRAM的模式寄存器的多用途寄存器(MPR)中的内部控制器。在一个实施例中,进一步包括用于存储具有所述最大计数的段的地址的内部控制器,其中所述内部控制器用于将所述地址存储在所述DRAM的模式寄存器的多用途寄存器(MPR)中。

在一个方面中,用于存储器子系统中的错误纠正管理的方法包含:在具有包含多个存储器段的存储阵列的存储器装置处接收用于错误校验和清除(ECS)模式的触发器,所述存储器段包含用来存储数据和与所述数据关联的错误校验和纠正(ECC)信息的多个存储器位置;响应于接收到用于所述ECS模式的所述触发器而读所述存储器位置中的一个或更多存储器位置;基于所述ECC信息对于所述一个或更多存储器位置执行ECC;以及对错误信息进行计数,所述错误信息包含指示具有至少阈值数量的错误的段的数量的段计数以及指示在任何段中的最大数量的错误的最大计数。

在一个实施例中,存储器装置包含符合双数据速率版本4扩展(DDR4E)的同步动态随机存取存储器装置(SDRAM)。在一个实施例中,存储器段包括DRAM行。在一个实施例中,接收触发器包括接收由所述存储器控制器生成的ECS命令。在一个实施例中,接收触发器包括接收由所述存储器控制器设置的模式寄存器设置。在一个实施例中,进一步包括响应于用于所述ECS模式的所述触发器而生成用于所述存储器位置的地址信息。在一个实施例中,进一步包括标识与用于ECS模式的触发器关联的堆群,并且生成用于所述堆群内的特定行的地址信息。在一个实施例中,执行ECC包括响应于用于ECS模式的触发器来对于所述一个或更多存储器位置执行单个位错误(SBE)ECC。在一个实施例中,阈值数量等于1。在一个实施例中,阈值数量等于2。在一个实施例中,进一步包括将段计数存储在存储器装置的模式寄存器的多用途寄存器(MPR)中。在一个实施例中,进一步包括存储具有所述最大计数的段的地址。在一个实施例中,进一步包括:将段计数存储在存储器装置的模式寄存器的多用途寄存器(MPR)中;以及存储具有最大计数的段的地址。

在一个方面中,具有存储器子系统的系统包含:存储器控制器;以及多个双数据速率版本4扩展(DDR4E)同步动态随机存取存储器装置(SDRAM),其包含含有多个存储器段的存储阵列,所述存储器段包含用来存储数据和与所述数据关联的错误校验和纠正(ECC)信息的多个存储器位置;耦合到存储器控制器的I/O(输入/输出)电路,所述I/O电路用来从存储器控制器接收用于错误校验和清除(ECS)模式的触发器;以及内部控制器,其响应于用于所述ECS模式的所述触发器,用来读一个或更多存储器位置、基于所述ECC信息对于所述一个或更多存储器位置执行ECC、并且对错误信息计数,所述错误信息包含指示具有N个或更多错误的段的数量的段计数以及指示在任何段中的最大数量的错误的最大计数。

在一个实施例中,DRAM包含符合双数据速率版本4扩展(DDR4E)的同步动态随机存取存储器装置(SDRAM)。在一个实施例中,存储器段包括DRAM行。在一个实施例中,触发器包括由所述存储器控制器生成的ECS命令。在一个实施例中,触发器包括由所述存储器控制器设置的模式寄存器设置。在一个实施例中,内部控制器进一步响应于用于所述ECS模式的所述触发器而生成用于所述存储器位置的地址信息。在一个实施例中,存储器控制器用来标识与用于所述ECS模式的所述触发器关联的堆群,并且其中所述内部控制器进一步生成用于所述堆群内的特定行的地址信息。在一个实施例中,内部控制器用于响应于用于ECS模式的所述触发器而对于所述一个或更多存储器位置执行单个位错误(SBE)ECC。在一个实施例中,N等于1。在一个实施例中,N等于2。在一个实施例中,进一步包括用于将段计数存储在DRAM的模式寄存器的多用途寄存器(MPR)中的内部控制器。在一个实施例中,进一步包括用于将段计数存储在SDRAM的模式寄存器的多用途寄存器(MPR)中以及用于存储具有所述最大计数的段的地址的内部控制器。在一个实施例中,进一步包括如下一项或更多项:以通信方式耦合到所述存储器控制器的至少一个处理器;以通信方式耦合到至少一个处理器的显示器;或者以通信方式耦合到至少一个处理器的网络接口。

本文所示出的流程图提供了各种过程动作的序列的示例。流程图能指示要由软件或固件例程执行的操作(以及物理操作)。在一个实施例中,流程图能示出有限状态机(FSM)的状态,其能用硬件和/或软件实现。尽管按具体顺序或次序被示出,但除非另有规定,否则能修改动作的次序。从而,所示出的实施例应该仅被理解为示例,并且过程能按不同次序执行,且一些动作能并行执行。此外,一个或更多动作在各种实施例中能被省略;从而,并不是所有动作在每一个实施例中都被要求。其它过程流是可能的。

某种程度上,本文描述了各种操作或功能,它们能被描述或定义为软件代码、指令、配置和/或数据。内容能是直接可执行的(“对象”或“可执行”形式)、源代码、或差分代码(“delta”或“补丁”代码)。本文描述的实施例的软件内容能经由其上存储有内容的制品或经由操作通信接口以经由通信接口发送数据的方法被提供。机器可读存储介质能使机器执行所描述的功能或操作,并且包含以机器(例如计算装置、电子系统等)可访问形式存储信息的任何机构,诸如可记录/不可记录介质(例如只读存储器(ROM)、随机存取存储器(RAM)、磁盘存储介质、光存储介质、闪速存储器装置等)。通信接口包含接口到任何硬布线的、无线的、光的等介质以向另一装置进行传达的任何机构,诸如存储器总线接口、处理器总线接口、因特网连接、盘控制器等。通信接口能通过提供配置参数和/或发送信号来准备通信接口以提供描述软件内容的数据信号来被配置。通信接口能够经由发送到通信接口的一个或更多命令或信号来被访问。

本文描述的各种组件能是用于执行所描述的操作或功能的部件。本文描述的每个组件包含软件、硬件或这些的组合。组件能被实现为软件模块、硬件模块、专用硬件(例如应用特定硬件、专用集成电路(ASIC)、数字信号处理器(DSP)等)、嵌入式控制器、硬布线电路等。

除了本文所描述的内容,能对本发明的公开的实施例和实现做出各种修改,而不脱离它们的范围。因此,本文的说明和示例应在说明性意义,而非约束性意义上被解释。本发明的范围应该仅仅参考随附权利要求而被衡量。

技术分类

06120113790497