利用额外系统位的内部错误校验和校正(ECC)的制作方法

文档序号:16370232发布日期:2018-12-22 08:40阅读:870来源:国知局
利用额外系统位的内部错误校验和校正(ECC)的制作方法

本申请是基于2016年5月2日提交的美国临时申请第62/330,338号的非临时申请。本申请要求享有该申请的优先权的权益。该临时申请由此通过引入方式并入本文。

本说明书总体上涉及存储器设备,并且更具体地,说明书涉及存储器系统内的错误校验和校正。

版权声明/许可

本专利文件的公开内容的部分可能包含受版权保护的材料。版权所有者不反对任何人复制专利和商标局专利文件或记录中出现的专利文件或专利公开内容,但在其他方面保留所有版权。版权声明适用于以下描述的所有数据和随附的附图,以及下面描述的任何软件:版权所有2016,2017,intel公司,保留所有权利。

背景技术

存储器设备持续作为电子设备和计算机系统的必要部分。随着特征几何尺寸缩小,存储器密度持续增加,但缩放到较小的几何尺寸会持续增加存储器中的错误的数量。一种用于解决存储器错误的技术是采用ecc(错误校验和校正,其也可以称为错误校正编码)。传统上,存储器控制器执行错误检测和校正,包括生成要与存储器设备在写入操作时存储并且在读取操作时返回的数据一起发送的校验位。当存储器控制器执行错误校正时,存储器控制器和存储器设备交换ecc位或校验位,这增加数据总线的带宽(例如,将信道从64位或信号线增加到72,或者从32位或信号线增加到36)。在现代存储器子系统中,需要越来越多数量的ecc位来持续满足ras(可靠性、可访问性和可维护性)预期,这表明用更多的信号线来增加数据总线宽度以容纳执行更高级别的错误校正所需的附加ecc位。然而,增加总线宽度会增加成本并且消耗附加的功率。

附图说明

以下描述包括对附图的讨论,附图具有通过本发明实施例的实现方式的示例的方式给出的图示。附图应通过示例的方式而不是通过限制的方式来理解。如本文使用的,对一个或多个“实施例”的引用应理解为描述包括在本发明的至少一个实现方式中的特定特征、结构和/或特性。因此,本文中出现的诸如“在一个实施例中”或“在替代实施例中”之类的短语描述了本发明的各种实施例和实现方式,并且不一定都指代相同的实施例。然而,这些实施例也不一定是相互排斥的。

图1是具有用传统ecc位来交换额外系统位的存储器的系统的实施例的框图。

图2a是其中存储器设备和存储器控制器交换除ecc校验位之外的额外位的系统的实施例的框图。

图2b是存储器设备的内部错误校验和校正电路的实施例的框图。

图3a-图3d是对额外系统位的存储和交换的实施例的表表示。

图4a-图4d是表数据的实施例,该表数据表示主机与存储器之间的错误校验和校正位的交换,该存储器交换额外系统位与错误校验和校正信息。

图5a-图5c是将额外系统位映射到存储器的实施例的框图。

图6a是具有用于dram设备的寄存器的系统的实施例的框图,该dram设备为系统ecc提供额外系统位。

图6b是具有x4dram设备的dimm的实施例的框图,该x4dram设备通过较长的突发长度为系统ecc提供额外系统位。

图7是其中存储器设备和存储器控制器利用数据存取事务交换额外位的系统的实施例的框图。

图8是用于应用利用额外系统位的存储器上错误校验和校正的过程的实施例的流程图。

图9是用于提供额外系统位以用于错误校验和校正的过程的实施例的流程图。

图10是其中可以实现利用额外系统位的错误校验和校正的计算系统的实施例的框图。

图11是其中可以实现利用额外系统位的错误校验和校正的移动设备的实施例的框图。

以下是对特定细节和实现方式的描述,包括对附图的描述,附图可以描绘下面描述的实施例中的一些或所有实施例,以及讨论了本文提出的发明构思的其他潜在实施例或实现方式。

具体实施方式

如本文描述的,错误校验和校正(ecc)的应用可以按信道缩放而不增加应用ecc所要求的开销。ecc的缩放允许提供更多校验位以应用更高级别的ecc而不增加信道宽度。在一个实施例中,可以提供更高级别的ecc,而相对于传统ecc方法不会增加用于校验位的总带宽的百分比。提供ecc所要求的位数与受ecc保护的位数之间存在对数关系。例如,如果b+1个校验位用于针对2^b个数据位的单个错误校正(sec)(例如,对于128(2^7)个数据位,8个校验位),则多达两倍的数据位(2^(b+1)个数据位)可以用具有b+2个校验位的sec进行保护(例如,对于256个数据位,9个校验位)。

应理解,ecc也通常用作错误校正编码或错误校正码的首字母缩写。错误校正码是指用于执行计算的码。错误校正编码可以与错误校验和校正互换地使用,其中错误校验和校正是指这样的过程:使用一个或多个码生成校验位,或使用校验位来验证数据的有效性,或组合。错误校验和校正应以校验并且潜在地校正检测到的错误的广泛意义来理解,并且ecc通常可以理解为指代错误校验和校正。

可以根据ecc算法来执行ecc运算,该ecc算法参考一系列连续运算或连续运算的序列来执行ecc。ecc算法包括这样的计算:生成ecc位,或使用该位来确定数据的有效性,或组合。典型地,ecc逻辑执行ecc运算。ecc逻辑可以包括执行计算的ecc电路。ecc位或校验位是指用于对数据或码字进行确认的ecc码。典型的ecc运算包括对具有对应ecc位的码字进行的一系列xor(异或)运算,以产生预期结果。

存储器系统中的数据传输的传统方法是在8个传输周期(或突发长度8(bl8))的突发中发送128个数据位。应理解,存储器存取事务的每一个传输周期或单位间隔(ui)可以传输8个校验位。在其中例如16个x4存储器设备并联耦合的配置中,每个设备可以贡献总共512个数据位中的64位,其中两个额外的设备用于提供附加的64位ecc和系统元数据,在主机和存储器设备组之间传输总共576位。增加到bl16将从每个x4存储器设备提供128个数据位,这是传统64位的两倍,可以针对相同位数将信道上所要求的设备数量从16+2减少到8+1。然而,通过将存储器设备的数量减半,需要额外的ecc或元数据或者ecc和元数据的组合来提供相同级别的ecc保护,例如,能够从完全设备故障中恢复。

应理解,更鲁棒的ecc运算要求附加系统位,这在传统场景中在不增加包括另一存储器设备(在上面描述的实现方式中,将存在8+2个存储器设备)的开销的情况下不能提供。因此,存储器控制器可以生成要在写入操作时与数据位一起发送的更多校验位,并且在读取操作时接回校验位。然而,利用传统方法,额外的设备和bl16实现方式中的附加的64位的添加的开销比提供与针对bl8的16+2个存储器设备的情况类似的ecc保护所需的多。

在一个实施例中,存储器设备能够执行管芯上或内部ecc,其中存储器设备本身包括ecc逻辑,用于在与由存储器控制器管理的ecc分开的存储器设备处执行ecc。管芯上ecc是指这样的ecc运算,其中存储器设备本身生成并存储用于写入数据的校验位,并且在将数据发送到存储器控制器以用于读取数据之前将校验位应用于对数据进行校正。因此,在存储器控制器生成校验位并且对校验位进行校验情况下的ecc与存储器设备本身执行校验情况下的ecc之间存在区别。应理解,在存储器设备执行内部ecc或管芯上ecc的情况下,存储器控制器对内部校验位不具有可见性,并且甚至可能不知道错误是否被校正。

在一个实施例中,存储器设备对于256个数据位应用具有9位的内部ecc。最接近的大于9的二进制数是16,这意味着存储器设备可以为ecc信息提供或分配16个位,并且仅需要9个。在一个实施例中,存储器设备可以提供对存储器控制器的存取以达到用于系统ecc信息或元数据或组合的7个额外位。虽然提供了针对256的9位和16位的示例,但是通常存储器设备可以基于用于存储器设备内的2n个数据位的2n个传输周期,基于存储器设备使用或分配用于管芯上ecc的n+1个内部校验位的2n个存储器位置,而提供多达(2n减(n+1))个额外位。应理解,该方法通常可以应用于其中n大于1的系统。

因此,在一个实施例中,系统使得能够在针对具有存储器上或管芯上ecc的存储器设备的存储器存取操作中使用额外系统位。额外系统位是指可以存储在存储器设备中并与存储器控制器交换以用于硬件平台的操作的目的的位。可以利用读取存储器存取操作或写入存储器存取操作来发生对数据的交换。针对读取操作的交换可以指其中存储器设备响应于读取存取请求而取出数据并将数据发送到存储器控制器的操作。对数据的交换还可以指写入操作,其中存储器控制器向存储器设备提供数据以存储在其(多个)存储器阵列中。

系统级位可以被理解为用作系统(例如,硬件平台)的硬件组件内的元数据以控制或增强或者控制和增强硬件组件的操作的数据位。在一个实施例中,系统级位不由主机操作系统(os)控制,并且甚至可能对主机os不可见,主机os提供用于在计算设备的通用操作中执行应用的软件平台。在一个实施例中,所描述的系统级位的交换和使用限于存储器子系统的操作。

在一个实施例中,除了管芯上ecc之外,存储器设备可以存储附加系统位,其可以由存储器控制器存取以执行平台级系统操作。在一个实施例中,存储器控制器可以存取系统位而不是内部ecc位。在一个实施例中,存储器设备通过将管芯上ecc位应用于数据位和系统ecc位两者来保护系统ecc位免受损坏。在一个实施例中,存储器设备不对额外系统位执行内部ecc运算。在替代实施例中,存储器可以对额外系统位执行内部ecc运算。在一个实施例中,系统架构提供每64个数据位多达2个系统位,其中一些交换可以包括1个额外系统位,而其他交换可以包括2个额外系统位。在一个实施例中,系统位交换发生在与数据总线分开的数据信号线或分开的通道上。在一个实施例中,在分开的通道上的系统位交换以比数据信号慢的信号提供。因此,系统位交换可以跨越多个ui而不是在存取事务的每个ui中发送数据位。在一个实施例中,系统位交换在典型的数据事务突发长度之后在单独的ui中发生(例如,用于bl16实现方式的读取/写入事务的16ui数据传输之后的第17个ui)。

图1是具有用传统ecc位来交换额外系统位的存储器的系统的实施例的框图。系统100包括计算设备中的处理器和存储器子系统的元件。处理器110表示可以执行操作系统(os)和应用的计算平台(其可以统称为存储器的主机或用户)的处理单元。os和应用执行导致存储器存取的操作。处理器110可以包括一个或多个单独的处理器。每个单独的处理器可以包括单个处理单元、多核心处理单元或组合。处理单元可以是诸如cpu(中央处理单元)之类的主处理器、诸如gpu(图形处理单元)之类的外围处理器或组合。存储器存取也可以由诸如网络控制器或硬盘控制器之类的设备发启。这些设备可以在一些系统中与处理器集成,或者经由总线(例如,快速pci)附接到处理器,或组合。系统100可以实现为soc(片上系统),或者以独立组件实现。

对存储器设备的引用可以应用于不同的存储器类型。存储器设备经常指代易失性存储器技术。易失性存储器是如果到设备的电力中断则其状态(以及因此存储在其上的数据)不确定的存储器。非易失性存储器指代即使到设备的电力中断其状态也确定的存储器。动态易失性存储器要求刷新存储在设备中的数据以维持状态。动态易失性存储器的一个示例包括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,jedec2013年8月)、lpddr4(低功率ddr版本4,jesd209-4,最初由jedec于2014年8月发布)、wio2(宽i/o2(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)或具有开关的相变存储器(pcms)、电阻式存储器、纳米线存储器、铁电晶体管随机存取存储器(fetram)、包含忆阻器技术的磁阻随机存取存储器(mram)存储器或自旋移矩(stt)-mram,或上述存储器中的任一种的组合或其他存储器。

本文中涉及“ram”或“ram设备”的描述可以应用于允许随机存取的任何存储器设备,无论是易失性还是非易失性的。涉及“dram”或“dram设备”的描述可以指代易失性随机存取存储器设备。存储器设备或dram可以指管芯本身,指包括一个或多个管芯的封装存储器产品,或两者。在一个实施例中,具有需要刷新的易失性存储器的系统还可以包括非易失性存储器。

存储器控制器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可以包括驱动器、接收器、收发器或终端或者其他电路或电路的组合,用于在设备之间的信号线上交换信号。信号交换包括发送或接收中的至少一个。虽然示出为将i/o122从存储器控制器120耦合到存储器设备140的i/o142,但是应理解,在并行地存取存储器设备140的组的系统100的实现方式中,多个存储器设备可以包括到存储器控制器120的相同接口的i/o接口。在包括一个或多个存储器模块170的系统100的实现方式中,除了存储器设备本身上的接口硬件之外,i/o142可以包括存储器模块的接口硬件。其他存储器控制器120将包括到其他存储器设备140的单独的接口。

存储器控制器120与存储器设备140之间的总线可以实现为将存储器控制器120耦合到存储器设备140的多条信号线。总线典型地可以至少包括时钟(clk)132、命令/地址(cmd)134以及写入数据(dq)和读取dq136以及零或更多其他信号线138。在一个实施例中,存储器控制器120与存储器之间的总线或连接可以称为存储器总线。用于cmd的信号线可以称为“c/a总线”(或add/cmd总线,或指示命令(c或cmd)和地址(a或add)信息的传输的一些其他指定),并且用于写入dq和读取dq的信号线可以称为“数据总线”。在一个实施例中,独立信道具有不同的时钟信号、c/a总线、数据总线和其他信号线。因此,在独立接口路径可以被认为是单独的总线的意义上,可以认为系统100具有多个“总线”。应理解,除了明确示出的线之外,总线还可以包括选通信令线、警报线、辅助线或其他信号线中的至少一个或组合。还应理解,串行总线技术可以用于存储器控制器120与存储器设备140之间的连接。串行总线技术的一个示例是在每个方向上通过单个差分信号对以嵌入式时钟进行8b10b编码和高速数据传输。在一个实施例中,cmd134表示与多个存储器设备并行共享的信号线。在一个实施例中,多个存储器设备共享cmd134的编码命令信号线,并且每个存储器设备具有用于选择个体存储器设备的单独的片选(cs_n)信号线。

应理解,在系统100的示例中,存储器控制器120与存储器设备140之间的总线包括附属命令总线cmd134和用于携带写入和读取数据的附属总线dq136。在一个实施例中,数据总线可以包括用于读取数据和用于写入/命令数据的双向线。在另一个实施例中,附属总线dq136可以包括用于将数据从主机写入存储器的单向写入信号线,并且可以包括用于将数据从存储器读取到主机的单向线。根据所选择的存储器技术和系统设计,其他信号138可以伴随总线或子总线,例如,选通线dqs。基于系统100的设计或者如果设计支持多个实现方式情况下的实现方式,数据总线可以具有每个存储器设备140更多或更少的带宽。例如,数据总线可以支持具有x32接口、x16接口、x8接口或其他接口的存储器设备。约定“xw”表示与存储器控制器120交换数据的信号线的数量,其中w是指代存储器设备140的接口的接口大小或宽度的整数。存储器设备的接口大小是关于系统100中的每个信道可以并发地使用多少个存储器设备或者多少个存储器设备并联地耦合到相同信号线的控制因素。在一个实施例中,高带宽存储器设备、宽接口设备或堆叠存储器配置或组合可以实现更宽的接口,例如,x128接口、x256接口、x512接口、x1024接口或其他数据总线接口宽度。

在一个实施例中,存储器设备140和存储器控制器120以突发或连续数据传输的序列通过数据总线交换数据。突发对应于多个传输周期,其与总线频率有关。在一个实施例中,传输周期可以是在相同时钟或选通信号边沿(例如,在上升沿)上发生传输的整个时钟周期。在一个实施例中,参考系统时钟的周期的每个时钟周期被分成多个单位间隔(ui),其中每个ui是传输周期。例如,双倍数据速率传输在时钟信号的两个边沿(例如,上升和下降)上触发。突发可以持续配置数量个ui,其可以是存储在寄存器中的配置,或者在运行中触发。例如,可以认为八个连续传输时段的序列是突发长度8(bl8),并且每个存储器设备140可以在每个ui上传输数据。因此,在bl8上操作的x8存储器设备可以传输64位数据(8个数据信号线乘以通过突发每个线传输的8个数据位)。应理解,这个简单的示例仅仅是说明性的而非限制性的。

存储器设备140表示系统100的存储器资源。在一个实施例中,每个存储器设备140是单独的存储器管芯。在一个实施例中,每个存储器设备140可以每个设备或管芯与多个(例如,2个)信道接合。每个存储器设备140包括i/o接口逻辑142,其具有由设备的实现方式确定的带宽(例如,x16或x8或一些其他接口带宽)。i/o接口逻辑142使得存储器设备能够与存储器控制器120接合。i/o接口逻辑142可以包括硬件接口,并且可以与存储器控制器的i/o122一致,但是处于存储器设备端部。在一个实施例中,多个存储器设备140并联地连接到相同的命令和数据总线。在另一个实施例中,多个存储器设备140并联地连接到相同的命令总线,并且连接到不同的数据总线。例如,系统100可以配置有并联耦合的多个存储器设备140,其中每个存储器设备响应命令,并且存取每个存储器设备内部的存储器资源160。对于写入操作,个体存储器设备140可以写入整体数据字的一部分,并且对于读取操作,个体存储器设备140可以取出整体数据字的一部分。作为非限制性示例,特定存储器设备可以分别提供或接收128位数据字中的8位用于读取或写入事务,或者256位数据字中的4位或8位或16位(取决于其是x4或x8或x16设备)。该字的其余位将由其他存储器设备并行地提供或接收。

在一个实施例中,存储器设备140直接设置在计算设备的主板或主机系统平台(例如,其上设置有处理器110的pcb(印刷电路板))上。在一个实施例中,存储器设备140可以组织成存储器模块170。在一个实施例中,存储器模块170表示双列直插式存储器模块(dimm)。在一个实施例中,存储器模块170表示多个存储器设备共享存取或控制电路的至少一部分的其他组织,该存取或控制电路可以是与主机系统平台分开的电路、分开的设备或分开的板。存储器模块170可以包括多个存储器设备140,并且存储器模块可以包括对到设置在存储器模块上的、所包括的存储器设备的多个单独的信道的支持。在另一个实施例中,存储器设备140可以与存储器控制器120合并到相同的封装中,例如,通过诸如多芯片模块(mcm)、封装上封装、硅通孔(tsv)或其他技术或组合之类的技术。类似地,在一个实施例中,多个存储器设备140可以合并到存储器模块170中,存储器模块170本身可以与存储器控制器120合并到相同的封装中。应理解,对于这些和其他实施例,存储器控制器120可以是主机处理器110的一部分。

存储器设备140各自包括存储器资源160。存储器资源160表示存储器位置的个体阵列或数据的存储位置。典型地,存储器资源160作为数据的行进行管理,经由字线(行)和位线(行内的个体位)控制来进行存取。存储器资源160可以被组织为存储器的单独的信道、列(rank)和存储体。信道可以指代到存储器设备140内的存储位置的独立控制路径。列可以指代跨多个存储器设备的公共位置(例如,不同设备内的相同行地址)。存储体可以指存储器设备140内的存储器位置的阵列。在一个实施例中,将存储器的存储体划分为子存储体,其中共享电路的至少一部分(例如,驱动器、信号线、控制逻辑)用于子存储体。应理解,存储器位置的信道、列、存储体、子存储体、存储体组或其他组织以及组织的组合可以在其应用中与物理资源重叠。例如,可以通过特定信道作为特定存储体(其也可以属于列)存取相同的物理存储器位置。因此,将以包容性而非排他性的方式理解存储器资源的组织。

在一个实施例中,存储器设备140包括一个或多个寄存器144。寄存器144表示一个或多个存储设备或存储位置,其提供用于存储器设备的操作的配置或设置。在一个实施例中,寄存器144可以为存储器设备140提供存储位置,用于存储数据以供作为控制或管理操作的一部分由存储器控制器120存取。在一个实施例中,寄存器144包括一个或多个模式寄存器。在一个实施例中,寄存器144包括一个或多个多用途寄存器。寄存器144内的位置配置可以将存储器设备140配置为以不同的“模式”操作,其中命令信息可以基于模式触发存储器设备140内的不同操作。另外或可替代地,取决于模式,不同模式还可以从地址信息或其他信号线触发不同的操作。寄存器144的设置可以指示针对i/o设置的配置(例如,定时、终结或odt(管芯上终结)146、驱动器配置或其他i/o设置)。

在一个实施例中,存储器设备140包括作为与i/o142相关联的接口硬件的一部分的odt146。odt146可以如上面提到地进行配置,并且提供要施加于到指定信号线的接口的阻抗的设置。在一个实施例中,odt146施加于dq信号线。在一个实施例中,odt146施加于命令信号线。在一个实施例中,odt146施加于地址信号线。在一个实施例中,odt146可以施加于前述的任何组合。可以基于存储器设备是存取操作的选定目标还是非目标设备来改变odt设置。odt146设置可以影响终止线上的定时和信令反射。通过odt146进行细致控制可以实现更高速的操作,同时改进所施加的阻抗和负载的匹配。odt146可以施加于i/o接口142、122的特定信号线,并且不一定施加于所有信号线。

存储器设备140包括控制器150,其表示存储器设备内的控制逻辑,用于控制存储器设备内的内部操作。例如,控制器150对由存储器控制器120发送的命令进行解码,并且生成内部操作以执行或满足命令。控制器150可以称为内部控制器,并且与主机的存储器控制器120分开。控制器150可以基于寄存器144来确定选择什么模式,并且基于选定的模式来配置用于存取存储器资源160的操作或其他操作的内部执行。控制器150生成控制信号以控制存储器设备140内的位的路由,以针对选定的模式提供适当的接口,并且将命令引导至适当的存储器位置或地址。控制器150包括命令逻辑152,其可以对在命令和地址信号线上接收的命令编码进行解码。因此,命令逻辑152可以是或包括命令解码器。利用命令逻辑152,存储器设备可以识别命令并生成内部操作以执行所请求的命令。

再次参考存储器控制器120,存储器控制器120包括调度器130,其表示用于生成和命令要发送到存储器设备140的事务的逻辑或电路。从一个角度来看,可以将存储器控制器120的主要功能称为调度针对存储器设备140的存储器存取和其他事务。这样的调度可以包括生成事务本身以实现处理器110对数据的请求并且维持数据的完整性(例如,与刷新相关的命令)。事务可以包括一个或多个命令,并且导致在一个或多个定时周期(例如,时钟周期或单位间隔)内传送命令或数据或两者。事务可以用于存取(例如,读取或写入或相关命令或组合),并且其他事务可以包括用于配置、设置、数据完整性的存储器管理命令或其他命令或组合。

存储器控制器120典型地包括用于允许对事务进行选择和排序以改进系统100的性能的逻辑。因此,存储器控制器120可以选择应以哪种顺序将哪些未完成的事务发送到存储器设备140,这典型地利用比简单的先进先出算法复杂得多的逻辑实现。存储器控制器120管理向存储器设备140传输事务,并且管理与事务相关联的定时。在一个实施例中,事务具有确定性定时,其可以由存储器控制器120管理并且用于确定如何调度事务。

再次参考存储器控制器120,存储器控制器120包括命令(cmd)逻辑124,其表示用于生成要发送到存储器设备140的命令的逻辑或电路。命令的生成可以指代调度之前的命令,或对准备好进行发送的已排队命令的准备。通常,存储器子系统中的信令包括命令内或伴随命令的地址信息,用于指示或选择存储器设备应执行命令的一个或多个存储器位置。响应于调度针对存储器设备140的事务,存储器控制器120可以经由i/o122发出命令以使存储器设备140执行命令。在一个实施例中,存储器设备140的控制器150接收并解码经由i/o142从存储器控制器120接收的命令和地址信息。基于接收到的命令和地址信息,控制器150可以控制存储器设备140内的逻辑和电路执行命令的操作的定时。控制器150负责在存储器设备140内遵从标准或规范,例如,定时和信令要求。存储器控制器120可以通过存取调度和控制来实现遵从标准或规范。

在一个实施例中,存储器控制器120包括刷新(ref)逻辑126。刷新逻辑126可以用于易失性并且需要刷新以保持确定性状态的存储器资源。在一个实施例中,刷新逻辑126指示刷新的位置和要执行的刷新的类型。刷新逻辑126可以触发存储器设备140内的自刷新,或者通过发送刷新命令来执行外部刷新(其可以被称为自动刷新命令)或组合。在一个实施例中,存储器设备140内的控制器150包括刷新逻辑154,用于在存储器设备140内应用刷新。在一个实施例中,刷新逻辑154生成内部操作,以根据从存储器控制器120接收的外部刷新来执行刷新。刷新逻辑154可以确定刷新是否指向存储器设备140,以及响应于命令对什么存储器资源160进行刷新。

在一个实施例中,存储器控制器包括ecc逻辑170,用于管理系统100的存储器存取中的错误校验和校正。ecc逻辑170可以包括执行ecc计算并存储结果的ecc硬件。在一个实施例中,存储器设备140包括由ecc逻辑180管理的内部ecc。ecc逻辑180可以包括执行ecc计算并存储结果的ecc硬件。存储器控制器120的ecc逻辑170管理系统范围的ecc,并且可以跨多个不同的存储器资源(例如,多个存储器设备140)并行地检测和校正错误。ecc逻辑170可以生成校验位,该校验位将利用写入操作发送到存储器设备140以进行存储,并且将利用读取操作返回。用于系统范围ecc的许多技术是已知的,并且可以包括ecc逻辑170以跨多个资源散布错误的方式管理存储器资源。通过跨多个资源散布错误,即使在存储器设备140中存在一个或多个故障的情况下,存储器控制器120也可以恢复数据。存储器故障通常被分类为软错误或软故障(其是典型地由随机环境条件引起的瞬时位错误),或者硬错误或硬故障(其是由于硬件故障而发生的非瞬态位错误)。如本文描述的,可以通过在逐个信道基础上扩大保护级别来改进系统ecc。

存储器设备140的ecc逻辑180管理在存储器资源160中发生的一个或多个错误。ecc在存储器设备140内的使用可以称为内部ecc或管芯上ecc或者内部管芯上ecc。通常,内部ecc是指在存储器设备140内实现而无需由存储器控制器120或主机对ecc运算进行命令或管理的ecc。利用内部ecc,响应于写入请求,ecc逻辑180生成要与由存储器控制器120发送的数据一起存储的ecc位。响应于读取请求,ecc逻辑180在向存储器控制器120呈现数据以满足请求之前校验并校正数据中的错误。在一个实施例中,经由ecc逻辑180的操作从存储器设备140提供的sec数据在存储器控制器120处与没有错误的数据无法区分。

在一个实施例中,系统100具有可用于ecc的额外系统位,或其他系统功能,或组合。在一个实施例中,存储器控制器120可以向存储器设备140提供额外系统位,并且存储器设备可以响应于读取请求而返回相同的额外位。在一个实施例中,ecc逻辑180经由相同的ecc码182或用于保护数据位的完整性的其他ecc机制覆盖附加系统位。在一个实施例中,存储器设备140向存储器控制器120提供额外系统位,其可以包括在针对内部ecc位的ui传输期间交换的位,其中对于内部ecc位存在比要传输的内部ecc位多的ui传输。在一个实施例中,存储器控制器120可以将额外位作为用于存储器设备140的附加命令或控制写入,并且存储器设备140可以返回具有额外系统位的内部ecc信息。

在一个实施例中,一个或多个存储器设备140包括附加信号线(除了dq信号线或存储器总线接口之外,例如,x4、x8或其他)。这种实现方式可以称为具有用于传输额外系统位的附加通道或带外信号。在一个实施例中,存储器设备不包括用于传输附加系统位的附加信号线,而是利用另一传输周期来传输。传输周期是指基于时钟或定时信号的一段时间。传输周期可以称为单位间隔(ui)。存储器传输通常在n个ui的突发内在dq信号线上发生,例如,8个周期或ui突发长度或突发长度8(bl8),或16ui突发长度(bl16)。在一个实施例中,系统100可以采用bl16来传输数据,然后在dq信号线上对额外系统位进行单个ui传输。在一个实施例中,系统100可以采用bl16来传输数据和ecc以及额外系统位而无需附加的ui。

图2a是其中存储器设备和存储器控制器交换除ecc校验位之外的额外位的系统的实施例的框图。系统202表示存储器子系统,并且提供可以根据图1的系统100的系统的示例。

主机210表示中央处理器或soc,其执行系统202的主要控制功能。主机210包括处理器硬件(未具体示出)。主机210包括存储器控制器212,其可以是与处理器硬件分开的硬件,或者作为模块集成到主机处理器上。主机210包括ecc引擎214,其可以实现为存储器控制器212内的硬件,或者实现为与存储器控制器212分开的硬件。在其中ecc引擎214在存储器控制器212外部的硬件上操作的实现方式中,ecc引擎将协调ecc运算与存储器控制器212进行的对数据的传输和接收。在系统202中,ecc可以在硬件平台级别上提供,并且低于由主机os控制的级别。因此,在一个实施例中,系统202内的ecc运算在主机硬件的级别发生,并且没有由控制ecc的主机操作系统执行或由其控制的软件。

在一个实施例中,ecc引擎214包括校验位生成器216和错误校正逻辑218。校验位生成器216生成用于发送到存储器220的数据的校验位。在一个实施例中,校验位生成器216包括用于对数据执行xor运算以生成校验位的硬件。错误校正逻辑218计算对接收到的数据的相同或补充计算,并且将结果与接收到的校验位进行比较。在一个实施例中,错误校正逻辑218包括用于对数据执行xor运算以执行错误校验(包括针与接收到的校验位进行比较)的硬件。

存储器220包括用于指导存储器设备的操作的控制器或处理器硬件。控制硬件可以执行命令执行逻辑222以响应于来自主机210的命令而执行操作。例如,响应于写入命令,命令执行逻辑222可以控制操作以将传输的数据(未明确示出)以及写入ecc242一起存储在存储器阵列230中。作为另一示例,响应于读取命令,命令执行逻辑222可以控制操作以将读取数据(未明确示出)以及读取ecc244一起从存储器阵列230取出。在理想情况下,读取ecc244将匹配写入ecc242以用于相同的存储器地址空间。阵列230可以包括与ecc的应用一致的任何类型的存储器结构,并且可以存储数据232和ecc234。ecc234表示与数据232的用户数据位相对应的校验位。在一个实施例中,ecc234与数据一起存储。在一个实施例中,ecc234存储在与存储数据232的位置分开的存储器芯片中。

在一个实施例中,存储器220包括内部ecc224,其可以包括这样的逻辑:由内部控制器执行,或在单独的硬件上执行,或其组合。内部ecc224使得存储器220能够在存储器内生成和应用校验位,由主机210提供独立的ecc校验位。在一个实施例中,内部ecc位存储在存储器阵列230内。因此,阵列230可以存储两种类型的ecc位:用于内部ecc的校验位和用于系统ecc的校验位。虽然示出为两种类型的ecc校验位,但是应理解,内部ecc和系统ecc是分开的,并且通常一种类型的校验位和ecc运算与另一类型的校验位和ecc运算无关。在一个实施例中,对于并联存储器设备,只有一个存储器设备将存储系统校验位和内部校验位两者,而所有存储器设备可以存储内部校验位。利用内部ecc234,存储器220可以对从主机210接收的数据并且在将取回的数据发送回主机210之前执行单独的错误校验和校正。

在一个实施例中,系统位246表示在ecc引擎214与存储器220之间交换的附加位。系统位246提供根据本文描述的任何实施例的额外位的示例。系统位246可以为ecc或其他目的提供附加信息。在一个实施例中,系统位246表示由主机210使用的其他系统元数据。在一个实施例中,主机210和存储器220在由比传输写入ecc242和读取ecc244所需的多的多余ui提供的额外ui中交换系统位246。提供附加ui来传输额外位,存储器220可以以超出内部ecc运算所需的、可用的附加存储器位置来存储该额外位。例如,多余ui可以是在并联存储器设备之间分布的附加信号线的结果,这提供除了用于传输数据位和与数据相关联的校验位的ui之外的ui。在一个实施例中,多余ui可以是扩展命令操作的结果,例如,通过定义存取操作(例如,读取或写入)以包括比传输数据和相关联的校验位所需的多的ui。

应理解,ecc引擎214为存储器控制器212提供ecc运算。存储器控制器212包括用于耦合存储器220的硬件i/o接口,其可以包括数据总线和命令总线以及其他信号。收发器212a表示存储器控制器212内的发送和接收电路,用于分别向存储器220发送数据和从存储器220接收数据。收发器220a表示存储器220内的发送和接收电路,用于分别向存储器控制器212发送数据和从存储器控制器212接收数据。存储器控制器212发送用于写入事务的数据,其中事务包括发送命令和突发操作以发送与命令有关的数据。存储器控制器212接收用于读取事务的数据。另一方面,存储器220接收用于写入事务的数据并且发送用于读取事务的数据。

在一个实施例中,存储器220为由至少n+1个校验位保护的2^n个数据位提供内部ecc。在一个实施例中,存储器设备具有用于n+1个内部校验的2n个存储器位置,并且可以将附加存储器位置用于系统位。

图2b是存储器设备的内部错误校验和校正电路的实施例的框图。系统204是根据图1的系统100的存储器子系统的一个示例。主机252包括管理对存储器254的存取的存储器控制器或者等效或替代电路或组件。在一个实施例中,存储器控制器集成在处理器芯片(例如,imc)上。主机252对从存储器254读取和写入存储器254的数据执行外部ecc。

系统204示出了存储器254中的写入路径260,其表示从主机252写入存储器254的数据和ecc校验位以及额外位268的路径。主机252向存储器254提供数据和其他位以用于写入(多个)存储器阵列。在一个实施例中,数据和ecc位262包括来自存储器控制器的、要写入存储器254的系统ecc位。在一个实施例中,存储器254利用校验位生成器282生成校验位264,以与数据一起存储在存储器中。在一个实施例中,校验位264覆盖数据位(例如,用户数据或由os的操作生成的数据)和系统ecc位两者。校验位264可以使得存储器254能够校正在写入(多个)存储器阵列和从(多个)存储器阵列读取时可能发生的错误。数据和ecc位262和校验位264可以作为写入存储器资源的、进入的码字266被包括。应理解,校验位264表示存储器设备内的内部校验位。在一个实施例中,没有用于来自主机252的校验位264的写入路径。在一个实施例中,存在用于校验位264的写入路径,仅用于测试存储器254的码矩阵的目的。在一个实施例中,主机252发送额外位268以用于存储在存储器254中。额外位268可以包括附加ecc信息或系统元数据或组合。在一个实施例中,额外位268可以由校验位264保护。在一个实施例中,额外位268不被内部ecc覆盖。存储器254具有为内部校验位264分配的、比存储内部校验位所需的多的空间,并且存储器254在额外空间中存储额外位268与内部校验位264。

读取路径270表示用于从存储器254读取到主机252的数据的路径。在一个实施例中,写入路径260和读取路径270的至少特定硬件组件是相同的硬件。在一个实施例中,存储器254响应于来自主机252的读取命令而取回输出的码字272。码字可以包括数据和系统ecc274以及校验位276。如果写入命令和读取命令的地址位置位是相同的,则数据和ecc位274和校验位276可以分别对应于在写入路径260中写入的数据和ecc位262和校验位264。类似地,存储器254可以向主机252提供额外位298,例如,与校验位276一起存储的数据位。如果内部ecc覆盖额外位268,则读取路径270的内部ecc运算将覆盖额外位298。应理解,读取路径270中的错误校正可以包括将xor(异或)树(例如,xor电路的序列)应用于对应的h矩阵以检测错误并选择性地校正错误(在单个位错误的情况下)。如本领域所理解的,h矩阵是指汉明码奇偶校验矩阵,其示出了码字的数字的线性组合如何等于零。因此,h矩阵行识别作为码字的一部分的分量或数字必须满足的奇偶校验方程的系数。在一个实施例中,存储器254包括校正子解码284,其使得存储器能够将校验位276应用于数据和ecc位274以检测读取数据中的错误。校正子解码284可以生成校正子278,用于针对读取数据生成适当的错误信息。还可以将数据和ecc位274转发到错误校正288,以用于校正检测到的错误。

如本领域所理解的,h矩阵是指汉明码奇偶校验矩阵,其示出了码字的数字的线性组合如何等于零。在一个实施例中,ecc包括利用作为校正子生成的相同版本对ecc校验位进行xor,这产生零。因此,h矩阵行可以识别作为码字的一部分的分量或数字必须满足的奇偶校验方程的系数。在一个实施例中,存储器254包括校正子生成器284以生成错误向量或校正子278。在一个实施例中,校验位生成器282和校正子生成器284完全由存储器设备的对应h矩阵指定。

在一个实施例中,校正子生成器284将校正子278传递到校正子解码286,其使得存储器能够将校验位276应用于数据274以检测读取数据中的错误。校正子解码286可以针对存储在存储器254中的ecc码向量或码矩阵来校验校正子278。数据274也可以被转发到错误校正288,以用于校正检测到的错误。

在一个实施例中,如果读取数据中没有错误(例如,零校正子278),则校正子解码286可以将数据作为无错误292传递到主机252。在一个实施例中,如果存在单个位错误(例如,匹配h矩阵的列中的一列的非零校正子278),则校正子解码286可以生成具有错误位置290的ce(已校正错误)信号,其是用于错误校正逻辑288的已校正错误指示。错误校正288可以将已校正错误应用于数据274中的指定位置,以生成用于写入主机252的已校正数据296。在一个实施例中,如果读取数据中存在多个错误(例如,不匹配对应h矩阵中的列中的任何列的非零校正子278),则校正子解码286生成due(检测到的未校正错误)294,其指示检测到的、未校正错误。due294可以指示存储器254无法通过内部ecc校正的多位错误。

在一个实施例中,校正子解码286针对以下条件应用单独的功能。在零校正子的情况下,校正子解码286可以将无错误数据292传递到主机252。在与h矩阵的列中的一列匹配的非零校正子的情况下,ecc引擎可以翻转或切换对应的位以创建已校正误差信号(ce)。错误校正288可以通过改变识别的位290来执行实际的数据校正。在一个实施例中,在不匹配任何列的非零校正子的情况下,校正子解码将有错误的数据发送到主机252。当在矩阵中找到对应的码时,从错误校正逻辑288发送的已校正数据296被发送。在一个实施例中,校正子解码286将数据识别为due294。

在一个实施例中,读取路径270的错误校正逻辑生成被发送到存储器模块上的寄存器或控制器的一个或多个位。在一个实施例中,控制器可以在通过扩展突发长度提供的附加ui中将信息作为额外位发送到主机252。在一个实施例中,存储器254仅将无错误数据292或已校正数据296和系统校验位发送到主机252。额外位可以基于due294的值,或者基于是否执行错误校正。

图3a-图3d是对额外系统位的存储和交换的实施例的表表示。图302、304、306和308示出了用于存储内部ecc和额外系统位的不同选项。

参考图3a的图302,系统包括1/2k(512位)页,并且每个操作对每页的64位数据进行操作。应理解,虽然示出了1/2k页,但是可以使用1k页大小或其他页大小。此外,可以关于附加系统位应用相同的原理,无论位数是每页64位还是一些其他位数,并且无论每次操作存取的位数是128位还是一些其他位数。在一个实施例中,从不同的存储器阵列存取不同的页。例如,存储器管芯可以包括两侧,对两侧进行64位存取。存取可以来自一个或多个存储体。

在图302中,存在用于所示的128位的内部ecc和额外位的8个存储器位置,并且存储器设备将所有8个ecc和额外位存储在单个页中。存储器设备跨两个页散布数据。因此,页a包括64位数据加上分配给内部ecc或ecc加系统位的8位。页b包括64位数据,并且没有ecc位。在一个实施例中,存储器设备将额外系统位存储在未示出的位置中,该额外系统位可以是对所示的数据位和ecc位的补充。在一个实施例中,额外系统位可以存储在两个单独的页中或单个页中,和/或从其读取数据位或向其写入数据位的存储器阵列中。数据310表示128位数据,其具有相关联的8位ecc位或ecc和额外系统位。应理解,虽然针对128位数据示出了8位ecc和额外位,但是数据量可以变化;例如,图3d示出了类似的图,其中示出了存储器的四个页。

参考图3b的图304,存储器设备在两个1/2k页上读取或写入128位数据。128位数据散布在两个页上,并且ecc数据位也散布在两个页上,其中每页存储4个ecc位。因此,页a包括64位数据加上分配给内部ecc或ecc加系统位的4位。页b也包括64位数据加上分配给内部ecc或ecc加系统位的4位。在一个实施例中,在第一选项中,存储器设备还每128个数据位存储和交换4个附加系统位。在替代实施例中,可以使用其他数量的额外系统位。附加系统位可以与ecc位一起存储,或者单独存储。即使ecc位散布在两个页上,在一个实施例中,存储器设备也可以将额外系统位存储在单个页中或跨两个页存储。数据320表示128位数据,其具有相关联的8位ecc位或ecc和额外系统位。虽然数据320可以类似于具有128位数据和8个ecc位的数据310,但是数据320被不同地存储。

参考图3c的图306,存储器设备将所有数据位和所有ecc位存储在单个页中。因此,页a包括128位数据加上分配给内部ecc或ecc加系统位的8位。在一个实施例中,存储器设备利用页a存储附加系统位。应理解,这样的选项将要求附加的存取/预取电路,这将增加存储器管芯大小并且消耗更多功率。数据330表示128位数据,其具有相关联的8位ecc位或ecc和额外系统位,所有这些都来自单个页。

在图308中,存在可以根据本文描述的实施例的来自四个页的总共256位。在各种实施例中,图302、304和306可以被理解为根据图308。图308示出了如何根据图302分配256个数据位和相关联的ecc和系统位的一个示例。图308的替代实施例可以根据图304或图306。如所示出的,对于64位页中的每个页,存在用于内部ecc和额外位的8个存储器位置,并且存储器设备在一个页中存储8个ecc和额外位,并且在另一个页中存储8个ecc和额外位,而两个页没有为ecc和额外位分配存储器空间。存储设备跨四个页散布数据。因此,页a包括64位数据加上分配给内部ecc或ecc加系统位的8位。页b包括64位数据,并且没有ecc位。页c包括64位数据加上分配给内部ecc或ecc加系统位的8位。页d包括64位数据,并且没有ecc位。页之间的ecc位的分配可以以任何方式提供,例如,存在于页a和b中,不存在于页c和d中,或者另一配置。在一个实施例中,存储器设备跨页a和c存储额外系统位与内部ecc位。数据340表示256位数据,其具有相关联的16位ecc和额外系统位。

考虑具有x4接口的存储器设备的一个实施例。在一个实施例中,对于读取,存储器设备可以预取数据并且利用bl16在两个接口上将128(4*2*16=128)位传输到存储器控制器。在一个实施例中,对于写入,存储器控制器可以以类似的方式利用bl16将数据传输到存储器设备。额外系统位可以在单独的通道中或在单独的ui中传输。可以根据图302、304、306或308中的任何一个来存储数据,并且类似地预取数据以用于读取。

图4a-图4d是表数据的实施例,该表数据表示主机与存储器之间的错误校验和校正位的交换,该存储器交换额外系统位与错误校验和校正信息。根据本文描述的内容,存储器设备可以通过扩展突发提供额外位。如图4a的图410、图4b的图420和图4c的图430所示,存储器设备可以通过额外的通道或额外的数据信号线提供一个或多个附加位。这种信号线可以从存储器设备路由到存储器模块上的控制器,或者耦合到存储器模块上的逻辑电路以与相关联的存储器控制器相接合。例如,如果多个存储器设备通过附加的信号线提供一位或多位数据,则可以复用并选择这些线以向存储器控制器提供适当的数据。如图4d的图440所示,存储器设备可以可替代地在数据接口的标准信号线中的一个标准信号线的ui中提供一个或多个附加位,这可以被称为内联发送。内联发送发生在附加的ui或额外的突发周期上。在其中不同存储器设备并行地发送多个位中的一个位的实施例中,每个设备可以仅在指派给其的ui和信号线中发送其所分配的额外位。在一个实施例中,复用逻辑可以选择适当的信号以发送到存储器控制器。

参考图410,用户数据接口414示出了dq[3:0],其表示x4接口存储器设备或dram的4个通道。应理解,可以使用不同的接口大小。如所示出的,dram在bl16的数据突发412上操作,以通过用户数据接口414传输64位。在一个实施例中,dram还在第五信号线或第五数据通道ecc接口416上传输,这提供额外系统位。额外系统位示出为e0。在一个实施例中,附加信号线dq4/e以比dq[3:0]慢的传输速度操作。因此,系统可能要求16个dqui用于通过额外数据通道对e0进行单个位传输。在一个实施例中,dq4/e具有与dq[3:0]相同速度的接口,并且简单地重复多个ui的传输以传输e0。

参考图420,用户数据接口424示出了dq[3:0],其表示x4接口存储器设备或dram的4个通道。应理解,可以使用不同的接口大小。如所示出的,dram在bl16的数据突发422上操作,以通过用户数据接口424传输64位。在一个实施例中,dram还在第五信号线或第五数据通道ecc接口426上传输,这提供额外系统位。额外系统位示出为e0和el。在一个实施例中,附加信号线dq4/e以比dq[3:0]慢的传输速度操作。因此,系统可能要求8个dqui用于通过额外数据通道进行单个额外位传输。在一个实施例中,dq4/e具有与dq[3:0]相同速度的接口,并且简单地重复多个ui的传输以传输e0和el。在一个实施例中,如果每64位数据指派多于一个额外位,则存储器设备和存储器控制器可以如下交换额外位:在dq4/e上在ui[0:7]期间为e0,并且在dq4/e上在ui[8:15]期间为el。

参考图430,用户数据接口434示出了dq[3:0],其表示x4接口存储器设备或dram的4个通道。应理解,可以使用不同的接口大小。如所示出的,dram在bl16的数据突发432上操作,以通过用户数据接口434传输64位。在一个实施例中,dram还在第五信号线或第五数据通道ecc接口436上传输,这提供额外系统位。额外系统位示出为e[0:6]。在一个实施例中,附加信号线dq4/e以比dq[3:0]慢的传输速度操作。因此,系统可能要求2个dqui用于通过额外数据通道进行单个额外位传输。在一个实施例中,dq4/e具有与dq[3:0]相同速度的接口,并且简单地重复多个ui的传输以传输额外位。在一个实施例中,存储器设备和存储器控制器可以如下交换额外位:在dq4/e上在ui[0:1]期间为e0,在dq4/e上在ui[2:3]期间为e1,在dq4/e上在ui[4:5]期间为e2,在dq4/e上在ui[6:7]期间为e3,在dq4/e上在ui[8:9]期间为e4,在dq4/e上在ui[10:11]期间为e5,并且在dq4/e上在ui[12:13]期间为e6。将观察到在ui[14:15]上没有示出额外位被传输,参考其中仅7个额外位可用的实施例。在替代实施例中,存储器设备和存储器控制器可以在ui[14:15]期间在dq4/e上交换数据。

参考图440,用户数据接口444示出了dq[3:0],其表示x4接口存储器设备或dram的4个通道。应理解,可以使用不同的接口大小。与上面描述的示出用于传输额外位的附加通道的图410、420和430相反,在图440中,存储器设备和存储器控制器可以在附加的ui上交换额外位。如所示出的,dram在bl18的数据突发442上进行操作,以用于ecc事务。在一个实施例中,存储器设备可以被配置为通过bl16传输以用于非ecc事务,并且被配置为通过bl18传输以用于基于ecc的事务。如所示出的,ui[16]和ui[17]被识别为eccui552,因为ui[16]和ui[17]是其上可以传输额外位的附加的传输周期。在一个实施例中,仅7个额外位可用,并且因此没有e7。因此,ui[17]可以具有额外的时隙454,其中在dq3上没有传输位。在替换实施例中,存储器设备和存储器控制器可以在ui[17]期间在dq3上交换数据。

通常,对于图4a-图4d,对一个或多个额外位的发送的表示可以由组中的一个或多个存储器设备应用。在一个实施例中,存储器控制器并联地连接到多个存储器设备,例如,dimm的存储器设备。当多个存储器设备并联地耦合时,在一个实施例中,存储器设备中的一个或多个存储器设备在一个或多个附加ui上提供额外位,并且一个或多个其他存储器设备不是如此。例如,考虑上面提供的具有9个dram设备和40位信道或者通过40条信号线提供数据的接口的存储器子系统的示例。具有x4接口的九个dram设备等于36条信号线用于数据和单个位错误ecc数据,留下4条信号线用于附加数据。在一个实施例中,一个或多个存储器设备耦合到附加信号线。如果少于4个设备耦合到线,则信号线可以复用到存储器设备的一条或多条信号线。在一个实施例中,在使用9个dram设备的情况下,5个设备可以提供x4接口(20位)加上另外4个设备提供x5接口(20位),例如,图4a-图4c中所示的那些。可替代地,可以使用附加数据传输ui,或者可以缓冲来自dram设备的附加ui数据传输(例如,在dimm寄存器中)并且通过40条信号线对其进行发送。应理解,这些示例仅用于说明而非限制。

图5a-图5c是将额外系统位映射到存储器位的实施例的框图。参考图5a的映射510,128位数据可以包括来自两个单独源或来自单个页的64位。在一个实施例中,d0和d1表示交换整体数据的块(chunk)的单独存储器设备或存储器管芯。在一个实施例中,除了ecc位514之外,每128个数据位512可以添加4个额外系统位516(例如,两个位添加到两个页中的每个页)。因此,ecc和系统位的数量可以是每128个数据位有8个ecc位,其中由不同设备提供4个额外位。利用附加系统位,每128个数据位可能有12位,具有8个ecc位和4个额外位。映射510提供用于两个设备的映射的示例,并且可以添加附加设备,其中的一些可以不映射到额外位,并且其中的一些可以映射到未示出的额外位。

参考图5b的映射520,四个x4设备具有用于256b数据的四个64b块。d[0:4]包括256位数据,每个具有来自四个单独源或来自一个或多个页的64位。在一个实施例中,除了ecc位524之外,每256个数据位522可以添加8个额外系统位526。因此,ecc和系统位的数量可以是用于数据位的8个ecc位,具有多达8个额外位。利用附加系统位,每256个数据位可能有16位,具有8个ecc位和8个额外位。在一个实施例中,示为额外位的位526中的一个或多个位是附加ecc位。

参考图5c的映射530,四个x4设备具有用于256b数据的四个64b块。d[0:4]包括256位数据,每个具有来自四个单独源或来自一个或多个页的64位。在一个实施例中,除了ecc位534之外,每256个数据位532可以添加7个额外系统位536。因此,ecc和系统位的数量可以是用于256个数据位的9个ecc位,具有多达7个额外位。利用附加系统位,每256个数据位可以有16位,具有9个ecc位534和7个额外位536。映射530可以被认为是映射520的更具体的情况,其中额外位526中的一个位提供第九ecc位ecc8。在一个实施例中,并非使用所有额外位。例如,映射530示出了分别与d[0:3]相关联的e[0:3],并且预留三个额外位(rfu,或预留供将来使用)。在一个实施例中,各种存储器设备提供每64位块一个额外位。在替代实施例中,在每页数据传输一个附加位和两个附加位之间交替可以使用多达所有7个额外位。在一个实施例中,d[0:3]仅表示映射到额外位并且将与存储器控制器交换额外位的存储器设备。其他存储器设备将为页提供其余数据位,并且附加设备可以提供ecc位。在其中附加存储器设备提供ecc位的情况下,应理解,ecc8可以作为额外位从数据存储器设备中的一个或多个数据存储器设备或从ecc存储器设备提供。

图6a是根据本文描述的任何实施例的具有用于dram设备的寄存器的系统的实施例的框图,该dram设备为系统ecc提供额外系统位。系统602示出了具有共享控制总线(c/a(命令/地址)总线612)和数据总线(数据总线614)的存储器设备的系统的一个实施例。共享c/a总线可以在相同信道上在dram设备620之间共享。如所示出的,系统602包括两个信道,并且因此包括c/a总线612[0]和c/a总线612[1]。类似地,系统602包括数据总线614[0]和数据总线614[1]。dram设备620可以利用设备特定的命令来单独存取,并且可以利用并行命令来并行地存取。在一个实施例中,dram设备620表示dimm上的存储器设备。应理解,不同的实现方式可以具有不同数量的dram设备(更多或更少)。

寄存器610表示用于系统602的控制器,或用于由系统602表示的存储器模块或dimm的控制器。应理解,由寄存器610表示的控制器不同于其中包含系统602的计算设备的主机控制器或存储器控制器(未具体示出)。同样,寄存器610的控制器不同于包括在dram设备620上的片上或管芯上控制器。在一个实施例中,寄存器610是已注册时钟驱动器(也可以称为注册时钟驱动器)。已注册时钟驱动器从主机(例如,存储器控制器)接收信息并将来自主机的信号缓冲到各种dram设备620。如果所有dram设备620直接连接到主机630,则信号线上的负载将使高速信令能力降级。通过缓冲来自主机的输入信号,主机630仅见到寄存器610的负载,然后寄存器610可以控制到dram设备620的定时和信令。在一个实施例中,寄存器610是dimm上的控制器,用于控制到各种存储设备的信令。

寄存器610包括用于耦合到主机630和dram设备620的接口电路。虽然未以具体细节示出,但硬件接口可以包括驱动器、阻抗终端电路以及控制驱动器和阻抗终端的操作的逻辑。接口可以包括诸如下面关于dram设备与主机630的存储器控制器之间的接口描述的接口之类的电路。接口电路可以提供与关于系统100描述的各种总线的接口。

接口电路使得能够通过数据总线614耦合到dram设备620。在一个实施例中,接口电路使得能够通过c/a总线612耦合到dram设备620。在一个实施例中,寄存器610具有用于单独信道的独立命令端口。在一个实施例中,寄存器610具有用于单独信道的独立数据端口。单独且独立的信道(信道0和信道1)可以在两个不同的数据总线614[0]和614[1]上实现数据的并行通信,这两条数据总线可以统称为数据总线614。在一个实施例中,系统602中的所有存储器设备620共享相同的数据总线614。单独的信道可以在两条不同的命令总线612[0]和612[1]上实现命令的并行通信,这两条命令总线可以统称为c/a总线612。在一个实施例中,系统602中的所有存储器设备620共享相同的c/a总线。在一个实施例中,存储器设备620耦合到并行c/a总线612和数据总线614,以用于信令和加载的目的。虽然示出了两个信道,但是在一个实施例中,可以在系统602中提供更多信道。虽然没有具体示出,但是除了耦合到主机630之外,系统602还可以包括到非易失性存储装置(未示出)的连接。

在一个实施例中,主机630通过c/a总线连接向寄存器610(未具体示出)提供命令和地址信息。在一个实施例中,主机630通过c/a总线612直接耦合到dram设备620。在一个实施例中,寄存器610用作c/a寄存器,并且寄存器610可以将命令从主机转发到dram设备。c/a总线612典型地是单向总线,用于将命令和地址信息传送到信道中的所有dram设备。因此,总线可以是多点总线。

响应于c/a总线上的一个或多个存储器存取命令,dram设备620执行所请求的操作,其可以包括写入数据或读取数据。对于写入,主机630提供数据以通过数据总线614写入指定地址。在系统602中,在信道上并联的多个dram设备620将写入读取数据的一部分。例如,dram设备可以具有x4或x8接口,并且根据接口在突发长度的每个传输周期写入位数。对于读取,dram设备620通过数据总线614向主机630提供数据。在一个实施例中,系统602包括公共双向数据总线614,其中寄存器610可以利用等于接口宽度的位数连接到每个dram设备,具有匹配的选通对。在一个实施例中,数据总线614终止于总线段的任一端以避免信号反射。

当在系统602中应用ecc时,数据总线614使得能够交换用户数据和ecc校验位两者。如所示出的,数据632表示用户数据,并且ecc位634表示用于保护数据632的校验位。根据本文描述的内容,在一个实施例中,数据总线614使得能够提供额外位636,其表示在可以用于ecc位的ui中发送的位。在内部,dram设备620可以基于对用于内部ecc的位或存储器空间的分配来交换额外位636,用于内部ecc的位或存储器空间超过用于针对存储在dram设备中的数据位数量提供内部ecc的ecc位数量所需的。针对存储器操作存储和取出的数据位的数量可以超过每个dram设备620将贡献数据632的数据位的数量。例如,dram设备620可以在内部对256位数据进行操作,其中9个内部校验位用于ecc,并且每个设备将贡献64位块用于每个存储器存取操作(通过存储64位用于写入或输出64位用于读取)。作为一个特定示例,如果sec是所应用的ecc的级别,则将要求与ecc位634分开的特定数量的内部校验位以在dram设备内执行sec。dram设备620可以为由额外位636表示的附加系统位提供未使用的、已分配ecc地址空间。额外位636可以使得主机630能够提供超出sec的ecc保护,例如,使得能够从整个设备故障中恢复。

例如,在一个实施例中,dram设备620为内部ecc位提供2n个存储器位置。如果ecc仅需要n+1个校验位,则理论上有2n减去(n+1)个时隙可用于附加信息。主机630和dram设备620交换额外位636以供dram设备存储并且然后提供额外位。

系统602以类似于dimm布局的配置示出了寄存器610和dram设备620。然而,在一个实施例中,寄存器610可以表示用于将多设备存储器封装耦合到主机630的其他硬件接口逻辑或者用这种其他硬件接口逻辑代替。例如,特定多芯片封装可以包括设备封装内的多个dram管芯。dram管芯可以堆叠或以其他方式封装在一起。在一个实施例中,这种封装包括高带宽存储器设备。在多芯片封装实现方式中,可以根据本文描述的内容提供ecc的应用。

图6b是具有x4dram设备的dimm的实施例的框图,该x4dram设备通过较长的突发长度为系统ecc提供额外系统位。系统604提供根据图6a的系统602的dimm系统的一个示例。更具体地,系统604示出了具有两个dram设备信道的dimm640的实施例。每个信道包括9个dram设备,dram[0:8],其具有x4数据总线接口。

主机660通过命令和地址总线(未具体示出)向信道0(ch[0])或信道1(ch[1])提供命令。在一个实施例中,c/a总线通过dimm640上的寄存器650,并且命令通过c/a总线642转发到dram设备,其中c/a总线642[0]用于ch[0],并且c/a总线642[1]用于ch[1]。用于读取事务和写入事务的数据通过数据总线644交换,其中数据总线644[0]用于ch[0],并且数据总线644[1]用于ch[1]。在一个实施例中,多个dram设备提供每64b数据块一个额外位。如所示出的,每个信道的dram[0]、dram[2]、dram[4]和dram[6]提供附加位,并且被示为dx4+1,或者用于数据的x4接口加上一条附加信号线以传输额外位。应理解,所示的实现方式仅是一个示例,并且可以选择任何不同的dram设备来提供附加位。在一个实施例中,寄存器650可以选择dram设备来提供额外位,并且其选择dram设备以基于cas(列地址选通)命令的lsb(最低有效位)来选择额外位。响应于这样的命令,被选择用于提供额外位的dram设备可以驱动接口上的位以进行读取,并且从接口读取位以进行写入。

如系统604中所示,在一个实施例中,数据总线644具有bl16的突发。在一个实施例中,关于bl16和9个dram设备,其中5个设备具有x4接口,并且4个设备具有x5接口,信道可以具有40位或信号线的物理带宽,乘以16个传输周期,可以提供多达640个数据位。在一个实施例中,所有x4接口整个bl16周期传输数据,36*16=576位,并且附加接口中的每个附加接口选择性地驱动1或2个额外位。576位是512个数据位加上64个系统ecc位。系统604示出7个系统位,其总共交换583位,并且在16个传输周期内通过附加接口信号线中的一个或多个附加接口信号线交换7个系统位。在一个实施例中,示为dx4的dram设备具有第五接口信号线,并且可以被配置为dx4+1,但是附加接口信号线未连接。

图7是其中存储器设备和存储器控制器利用数据存取事务交换额外位的系统的实施例的框图。系统700提供根据图6b的系统604的实施例的系统的示例。存储器控制器710表示主机的控制电路,用于提供对存储器设备730和750的存储器存取的管理。存储器控制器710被示为包括ecc引擎712,其表示包括用于针对系统700执行ecc功能的电路的逻辑。i/o714表示用于驱动硬件与存储器设备730和750交换或发送和接收数据的硬件接口元件和软件控制逻辑。

存储器设备730示出为具有i/o732,其表示用于驱动硬件与存储器控制器710交换数据的硬件接口元件和软件控制逻辑。类似地,存储器设备760示出为具有i/o752,其表示用于驱动硬件与存储器控制器710交换数据的硬件接口元件和软件控制逻辑。如所示出的,存储器设备730和存储器设备750两者都包括到四条数据总线信号线的硬件接口。每个设备具有d[0:3],其将连接到总数据总线的不同信号线。

在一个实施例中,存储器控制器710能够经由数据总线并联地耦合到存储器730和存储器750,数据总线可以交换数据722和系统ecc724。在一个实施例中,存储器控制器可以与所选择的存储器设备并且具体地与存储器设备750交换额外位726。在一个实施例中,存储器设备730包括接口d[4],但其没有连接,并且仅连接d[0:3]用于交换数据722和系统ecc724。在一个实施例中,根据本文描述的任何实施例,存储器设备750被连接用于利用d[0:3]交换数据722和系统ecc724,并且还包括d[4]连接用于交换额外位726。

作为特定示例,考虑存储器控制器710交换512个数据位722与64个系统ecc位724以及4个或7个额外位726。在一个实施例中,四个存储器设备730中的每个交换64个数据位,并且第五存储器设备730交换64个ecc位。在一个实施例中,在接收到用于通过i/o732写入的数据时,存储器设备730利用内部ecc734执行内部ecc运算,这生成内部校验位。因此,存储器设备730存储数据742,其在一个实施例中可以是用于ecc设备的系统ecc位,以及由内部ecc734生成并供内部ecc734使用的内部ecc位744。对于读取,内部ecc734读取内部ecc位744并且在将数据发送到存储器控制器710之前应用ecc运算。

继续该示例,在一个实施例中,四个存储器设备750中的每个交换64个数据位,并且交换额外位726。在一个实施例中,每个存储器设备750为4个额外位726贡献一个额外系统位。在一个实施例中,存储器设备750各自贡献至少一个额外系统位,并且可替代地为总共7个额外位726贡献2个额外系统位。可以使用其他数量的额外位,包括在替代实施例中使用多于7个额外位。额外位的存储可以根据本文描述的任何实施例,其允许存储多于7个额外系统位。额外位的传输可以根据本文描述的任何实施例,其允许交换多于7个额外系统位。在一个实施例中,在接收到用于通过i/o752写入的数据时,存储器设备760利用内部ecc754执行内部ecc运算,这生成内部校验位。因此,存储器设备750存储数据742和由内部ecc754生成并供内部ecc754使用的内部ecc位746。对于读取,内部ecc754读取内部ecc位746并且在将数据发送到存储器控制器710之前应用ecc运算。

图8是用于应用利用额外系统位的存储器上错误校验和校正的过程的实施例的流程图。过程800示出了用于利用额外系统位的数据存取和内部ecc的流程。过程800提供了根据利用额外系统位的任何内部ecc架构的流程的一个示例。过程800提供了根据本文描述的内容利用附加ui提供额外系统位的实现方式的示例。

所示的过程可以是由根据本文描述的任何实施例的存储器子系统执行的过程。更具体地,过程800示出了用于存储器控制器和相关联的存储器设备的操作。系统生成数据存取请求,例如,读取或写入请求,802。在一个实施例中,存储器控制器发送用于数据存取的请求,包括伴随存取请求的系统ecc位和额外系统位804。

对于与写入请求相对应的写入存取类型,806写入(write)分支,在一个实施例中,存储器控制器发送额外系统位与写入数据和系统ecc位,存储器设备对其进行接收,808。在一个实施例中,存储器设备生成用于写入数据和系统ecc位的内部ecc位,810,并且根据存储器设备的配置应用额外系统位。在一个实施例中,存储器设备生成用于写入数据和系统ecc位两者的内部ecc位,而不是额外系统位。在一个实施例中,存储器设备对额外系统位执行内部ecc。存储器设备存储写入数据和ecc位,812。在一个实施例中,存储器设备还根据如本文描述的位映射的实施例或者对ecc位或额外系统位的不同映射来存储内部ecc位和额外系统位。

对于与读取请求相对应的读取存取类型,806读取(read)分支,在一个实施例中,存储器设备取出读取数据和系统ecc位,以及与数据相关联的内部ecc位,814。在一个实施例中,存储器设备利用内部校验位816对数据执行内部ecc,816。存储器设备将数据返回到存储器控制器,其可以包括系统ecc位和额外系统位,818。

图9是用于提供用于错误校验和校正的额外系统位的过程的实施例的流程图。过程900示出了用于对多个并联存储器设备的数据存取的流程。过程900提供了根据这样的实现方式的流程的一个示例:根据本文描述的内容利用附加ui提供额外系统位。在一个实施例中,过程900针对每个存储器设备实现过程800。

所示的过程可以是由根据本文描述的任何实施例的存储器子系统执行的过程。更具体地,过程900示出了用于存储器控制器和相关联的存储器设备的操作。系统生成数据存取请求,例如,读取或写入请求,902。

对于写入请求,904写入分支,存储器控制器计算ecc校验位以与写入数据一起发送,906。存储器控制器并行地向多个存储器设备发送写入数据和相关联的系统ecc位,908,例如,发送到存储器模块或多芯片设备。在一个实施例中,存储器控制器将额外系统位发送到并联存储器设备中的所选择的一个或多个并联存储器设备。存储器设备接收写入数据和相关联的系统ecc位以进行存储,910。在一个实施例中,存储器设备执行内部ecc并存储数据、系统ecc位和内部ecc位,912。在一个实施例中,存储器设备执行内部ecc并存储数据、系统ecc位以及内部ecc位和额外系统位,914。

对于读取请求,904读取分支,在一个实施例中,存储器设备取出数据,其可以包括系统ecc位和相关联的内部ecc位,916。在一个实施例中,存储器设备在发送读取数据之前执行内部ecc运算,918,这可以在将数据发送到存储器控制器之前校正数据中的错误。在一个实施例中,存储器设备将已校验/已校正的读取数据和相关联的系统ecc位发送到存储器控制器,920。存储器设备中的一个或多个存储器设备还可以根据本文描述的内容发送一个或多个额外系统位,922。在一个实施例中,存储器控制器利用来自多个存储器设备的系统ecc位和读取数据(包括额外系统位)执行系统级ecc,924。

图10是其中可以实现利用额外系统位的错误校验和校正的计算系统的实施例的框图。系统1000表示根据本文描述的任何实施例的计算设备,并且可以是膝上型计算机、台式计算机、平板计算机、服务器、游戏或娱乐控制系统、扫描仪、复印机、打印机、路由或交换设备、嵌入式计算设备、智能手机、可穿戴设备、物联网设备或其他电子设备。

系统1000包括处理器1010,其为系统1000提供处理、操作管理和指令的执行。处理器1010可以包括任何类型的微处理器、中央处理单元(cpu)、图形处理单元(gpu)、处理核心或为系统1000提供处理的其他处理硬件,或处理器的组合。处理器1010控制系统1000的整体操作,并且可以是或包括一个或多个可编程通用或专用微处理器、数字信号处理器(dsp)、可编程控制器、专用集成电路(asic)、可编程逻辑器件(pld)等,或这些设备的组合。

在一个实施例中,系统1000包括耦合到处理器1010的接口1012,接口1012可以表示需要更高带宽连接的系统组件(例如,存储器子系统1020或图形接口组件1040)的较高速接口或高吞吐量接口。接口1012可以表示“北桥”电路,其可以是独立组件或集成在处理器管芯上。在存在的情况下,图形接口1040与图形组件接合,用于向系统1000的用户提供视觉显示。在一个实施例中,图形接口1040可以驱动向用户提供输出的高清晰度(hd)显示器。高清晰度可以指代具有大约100ppi(每英寸像素)或更大的像素密度的显示器,并且可以包括诸如全hd(例如,1080p)、视网膜显示器、4k(超高清晰度或uhd)或者其他之类的格式。在一个实施例中,显示器可包括触摸屏显示器。在一个实施例中,图形接口1040基于存储在存储器1030中的数据或基于由处理器1010执行的操作或两者来生成显示。在一个实施例中,图形接口1040基于存储在存储器1030中的数据或基于由处理器1010执行的操作或两者来生成显示。

存储器子系统1020表示系统1000的主存储器,并且为要由处理器1010执行的代码或要在执行例程中使用的数据值提供存储。存储器子系统1020可以包括一个或多个存储器设备1030,例如,只读存储器(rom)、闪速存储器、一种或多种随机存取存储器(ram)(例如,dram)或其他存储器设备或这些设备的组合。除了其他之外,存储器1030存储并托管操作系统(os)1032以提供用于在系统1000中执行指令的软件平台。另外,应用1034可以在os1032的软件平台上从存储器1030执行。应用1034表示具有其自己的操作逻辑以实现对一个或多个函数的执行的程序。进程1036表示向os1032或一个或多个应用1034或组合提供辅助功能的代理或例程。os1032、应用1034和进程1036提供软件逻辑以便为系统1000提供功能。在一个实施例中,存储器子系统1020包括存储器控制器1022,其是用于生成命令并且向存储器1030发出命令的存储器控制器。应理解,存储器控制器1022可以是处理器1010的物理部分或接口1012的物理部分。例如,存储器控制器1022可以是集成存储器控制器,其集成到具有处理器1010的电路上。

虽然未具体示出,但是应理解,系统1000可以包括设备之间的一个或多个总线或总线系统,例如,存储器总线、图形总线、接口总线或其他。总线或其他信号线可以将组件通信地或电地耦合在一起,或者通信地和电地两者耦合组件。总线可以包括物理通信线路、点对点连接、桥接器、适配器、控制器或其他电路或组合。总线可以包括例如系统总线、外围组件互连(pci)总线、超传输(hypertransport)或工业标准架构(isa)总线、小型计算机系统接口(scsi)总线、通用串行总线(usb)或电气和电子工程师协会(ieee)标准1394总线(通常称为“firewire”)中的一个或多个。

在一个实施例中,系统1000包括接口1014,其可以耦合到接口1012。接口1014可以是比接口1012低速的接口。在一个实施例中,接口1014可以是“南桥”电路,其可以包括独立组件和集成电路。在一个实施例中,多个用户接口组件或外围组件或两者耦合到接口1014。网络接口1050向系统1000提供通过一个或多个网络与远程设备(例如,服务器或其他计算设备)通信的能力。网络接口1050可以包括以太网适配器、无线互连组件、蜂窝网络互连组件、usb(通用串行总线)或基于其他有线或无线标准的或专有的接口。网络接口1050可以与远程设备交换数据,这可以包括发送存储在存储器中的数据或接收要存储在存储器中的数据。

在一个实施例中,系统1000包括一个或多个输入/输出(i/o)接口1060。i/o接口1060可以包括用户通过其与系统1000交互的一个或多个接口组件(例如,音频、字母数字、触觉/触摸或其他接合)。外围接口1070可以包括上面没有具体提到的任何硬件接口。外设通常指代与系统1000从属地连接的设备。从属连接是系统1000提供操作在其上执行并且用户与其交互的软件平台或硬件平台或两者的连接。

在一个实施例中,系统1000包括以非易失性方式存储数据的存储子系统1080。在一个实施例中,在某些系统实现方式中,存储装置1080的至少某些组件可以与存储器子系统1020的组件重叠。存储子系统1080包括(多个)存储设备1084,其可以是或包括用于以非易失性方式存储大量数据的任何常规介质,例如,一个或多个基于磁性、固态或光的盘或组合。存储设备1084保持代码或指令和数据1086处于持久状态(即,尽管中断到系统1000的电力,仍保留该值)。存储设备1084通常可以被认为是“存储器”,虽然存储器1030典型地是向处理器1010提供指令的执行或操作存储器。而存储设备1084是非易失性的,存储器1030可以包括易失性存储器(即,如果到系统1000的电力中断,则值或数据状态是不确定的)。在一个实施例中,存储子系统1080包括与存储设备1084接合的控制器1082。在一个实施例中,控制器1082是接口1014或处理器1010的物理部分,或者可以包括在处理器1010和接口1014两者中的电路或逻辑。

电源1002向系统1000的组件提供电力。更具体地,电源1002典型地与系统1002中的一个或多个电力供应1004接合,以向系统1000的组件提供电力。在一个实施例中,电力供应1004包括插入壁式插座的ac到dc(交流到直流)适配器。这种ac电力可以是可再生能源(例如,太阳能)电源1002。在一个实施例中,电源1002包括dc电源,例如,外部ac到dc转换器。在一个实施例中,电源1002或电力供应1004包括无线充电硬件,以经由接近充电场来充电。在一个实施例中,电源1002可以包括内部电池或燃料电池源。

在一个实施例中,存储器子系统1020包括ecc1090,其可以是根据本文描述的任何实施例的具有额外系统位的内部ecc的实现方式。ecc1090被示为单独的元件,但是表示存储器设备1030中的内部ecc和存储器控制器1022中的系统级ecc。内部ecc生成用于内部ecc的内部ecc位,并且可以在将读取数据发送到存储器控制器1022之前校正读取数据中的错误。根据本文的实施例的ecc1090另外允许存储器控制器1022和存储器1030交换额外系统位。在一个实施例中,系统1000是服务器设备。在服务器设备中的一个实施例中,系统1000可以是以服务器配置组合在一起的多个系统中的一个。例如,服务器可以实现为与机箱系统中的其他刀片服务器组合的刀片服务器。

图11是其中可以实现利用额外系统位的错误校验和校正的移动设备的实施例的框图。设备1100表示移动计算设备,例如,计算平板电脑、移动电话或智能电话、支持无线的电子阅读器、可穿戴计算设备、物联网设备或其他移动设备或嵌入式计算设备。应理解,一般性地示出了组件中的某些组件,并且并非这种设备的所有组件在设备1100中示出。

设备1100包括处理器1110,其执行设备1100的主要处理操作。处理器1110可以包括一个或多个物理设备,例如,微处理器、应用处理器、微控制器、可编程逻辑器件或其他处理单元。由处理器1110执行的处理操作包括对其上执行应用和设备功能的操作平台或操作系统的执行。处理操作包括关于与人类用户或其他设备的i/o(输入/输出)的操作,关于功率管理的操作,关于将设备1100连接到另一设备相关的操作,或组合。处理操作还可以包括关于音频i/o、显示i/o或其他接合或组合的操作。处理器1110可以执行存储在存储器中的数据。处理器1110可以写入或编辑存储在存储器中的数据。

在一个实施例中,系统1100包括一个或多个传感器1112。传感器1112表示嵌入式传感器或与外部传感器的接口或其组合。传感器1112使系统1100能够监测或检测其中实现系统1100的环境或设备的一个或多个条件。传感器1112可以包括环境传感器(例如,温度传感器、运动检测器、光检测器、照相机、化学传感器(例如,一氧化碳、二氧化碳或其他化学传感器))、压力传感器、加速度计、陀螺仪、医疗或生理传感器(例如,生物传感器、心率监测器或检测生理属性的其他传感器)或其他传感器,或组合。传感器1112还可以包括用于生物识别系统(例如,指纹识别系统、面部检测或识别系统或检测或识别用户特征的其他系统)的传感器。应广义地理解传感器1112,并且不限制可以利用系统1100实现的许多不同类型的传感器。在一个实施例中,一个或多个传感器1112经由与处理器1110集成的前端电路耦合到处理器1110。在一个实施例中,一个或多个传感器1112经由系统1100的另一组件耦合到处理器1110。

在一个实施例中,设备1100包括音频子系统1120,其表示与向计算设备提供音频功能相关联的硬件组件(例如,音频硬件和音频电路)和软件组件(例如,驱动程序、编解码器)。音频功能可以包括扬声器或耳机输出,以及麦克风输入。用于这些功能的设备可以集成到设备1100中,或者连接到设备1100。在一个实施例中,用户通过提供由处理器1110接收并处理的音频命令来与设备1100进行交互。

显示子系统1130表示提供用于呈现给用户的视觉显示的硬件组件(例如,显示设备)和软件组件(例如,驱动程序)。在一个实施例中,显示器包括用于用户与计算设备进行交互的触觉组件或触摸屏元件。显示子系统1130包括显示接口1132,其包括用于向用户提供显示的特定屏幕或硬件设备。在一个实施例中,显示接口1132包括与处理器1110(例如,图形处理器)分开的逻辑,用于执行与显示相关的至少一些处理。在一个实施例中,显示子系统1130包括向用户提供输出和输入两者的触摸屏设备。在一个实施例中,显示子系统1130包括向用户提供输出的高清晰度(hd)显示器。高清晰度可以指代具有大约100ppi(每英寸像素)或更大的像素密度的显示器,并且可以包括诸如全hd(例如,1080p)、视网膜显示器、4k(超高清晰度或uhd)或者其他之类的格式。在一个实施例中,显示子系统包括触摸屏显示器。在一个实施例中,显示子系统1130基于存储在存储器中的数据或基于由处理器1110执行的操作或两者来生成显示信息。

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中的其他硬件或传感器1112之类的设备。输入可以是直接用户交互的一部分,以及向系统提供环境输入以影响其操作(例如,滤除噪声,针对亮度检测对显示器进行调整,针对照相机应用闪光灯或其他特征)。

在一个实施例中,设备1100包括管理电池电力使用、电池充电以及与功率节省操作相关的特征的功率管理1150。功率管理1150管理来自电源1152的电力,电源1152向系统1100的组件提供电力。在一个实施例中,电源1152包括插入壁式插座的ac到dc(交流到直流)适配器。这种ac电力可以是可再生能源(例如,太阳能、基于运动的电力)。在一个实施例中,电源1152仅包括dc电力,其可以由dc电源提供,例如,外部ac到dc转换器。在一个实施例中,电源1152包括无线充电硬件,以经由接近充电场来充电。在一个实施例中,电源1152可以包括内部电池或燃料电池源。

存储器子系统1160包括用于在设备1100中存储信息的(多个)存储器设备1162。存储器子系统1160可以包括非易失性存储器设备(如果到存储器设备的电力中断则状态不改变)或易失性存储器设备(如果到存储器设备的电力中断则状态是不确定的)或其组合。存储器1160可以存储应用数据、用户数据、音乐、照片、文档或其他数据,以及与系统1100的应用和功能的执行相关的系统数据(无论是长期的还是临时的)。在一个实施例中,存储器子系统1160包括存储器控制器1164(其也可以被认为是系统1100的控制的一部分,并且可以潜在地被认为是处理器1110的一部分)。存储器控制器1164包括调度器,用于生成和发出命令以控制对存储器设备1162的存取。

连接1170包括硬件设备(例如,无线或有线的连接器和通信硬件,或有线和无线硬件的组合)和软件组件(例如,驱动程序、协议栈),以使设备1100能够与外部设备进行通信。外部设备可以是单独的设备,例如,其他计算设备、无线接入点或基站,以及诸如耳机、打印机或其他设备之类的外设。在一个实施例中,系统1100与外部设备交换数据以供存储在存储器中或在显示设备上显示。交换的数据可以包括要存储在存储器中的数据,或者已经存储在存储器中的数据,以便读取、写入或编辑数据。

连接1170可以包括多种不同类型的连接。概括而言,设备1100被示为具有蜂窝连接1172和无线连接1174。蜂窝连接1172通常指代无线运营商提供的蜂窝网络连接,例如,经由gsm(全球移动通信系统)或变体或衍生物、cdma(码分多址)或变体或衍生物、tdm(时分复用)或变体或衍生物、lte(长期演进——也称为“4g”)或其他蜂窝服务标准提供的。无线连接1174指代非蜂窝的无线连接,并且可以包括个域网(例如,蓝牙)、局域网(例如,wifi)或广域网(例如,wimax)或其他无线通信,或组合。无线通信指代通过使用调制的电磁辐射通过非固体介质来传输数据。有线通信通过固体通信介质发生。

外围连接1180包括硬件接口和连接器,以及用于进行外围连接的软件组件(例如,驱动程序、协议栈)。应理解,设备1100既可以是到其他计算设备的外围设备(“至”1182),也可以使外围设备与其连接(“自”1184)。设备1100通常具有“对接”连接器,以连接到其他计算设备,用于诸如管理(例如,下载、上传、改变、同步)设备1100上的内容的目的。另外,对接连接器可以允许设备1100连接到某些外设,其允许设备1100控制例如到视听或其他系统的内容输出。

除了专有对接连接器或其他专有连接硬件之外,设备1100可以经由常见连接器或基于标准的连接器进行外围连接1180。常见类型可以包括通用串行总线(usb)连接器(其可以包括许多不同硬件接口中的任何一个)、包括minidisplayport(mdp)的displayport、高清晰度多媒体接口(hdmi)、firewire或其他类型。

在一个实施例中,存储器子系统1160包括ecc1190,其可以是根据本文描述的任何实施例的具有额外系统位的内部ecc的实现方式。ecc1190被示为单独的元件,但是表示存储器设备1162中的内部ecc和存储器控制器1164中的系统级ecc。内部ecc生成用于内部ecc的内部ecc位,并且可以在将读取数据发送到存储器控制器1164之前校正读取数据中的错误。根据本文的实施例的ecc1190另外允许存储器控制器1164和存储器1162交换额外系统位。在一个实施例中,系统1100是服务器设备。在服务器设备中的一个实施例中,系统1100可以是以服务器配置组合在一起的多个系统中的一个。例如,服务器可以实现为与机箱系统中的其他刀片服务器组合的刀片服务器。

在一个方面,动态随机存取存储器(dram)设备包括:存储器阵列,其具有可寻址的存储器位置;内部错误校验和校正(ecc)电路,其用于执行内部ecc,包括在dram设备内生成和应用校验位,其中,存储器阵列用于提供用于n+1个内部校验位的2n个存储器位置,n+1个内部校验位用于2^n个数据位的内部ecc,其中,n是大于1的整数;以及硬件输入/输出接口,其耦合到存储器控制器,其中,输入/输出接口用于向存储器控制器提供对(2n减(n+1))个存储器位置中的一个或多个存储器位置的存取,作为系统ecc信息的额外位,其中,系统ecc信息与内部ecc分开。

在一个实施例中,n是8。在一个实施例中,存储器阵列用于用于通过四个高速缓存行提供16个存储器位置,其中,四个高速缓存行包括一个额外位。在一个实施例中,存储器阵列用于通过四个高速缓存行提供16个存储器位置,其中,四个高速缓存行中的至少一个高速缓存行包括两个额外位。在一个实施例中,内部ecc电路用于独立于由存储器控制器管理的系统ecc而执行单个位错误(sbe)校正。在一个实施例中,输入/输出接口用于与存储器存取操作相结合地与存储器控制器交换数据位,其中,额外位以比数据位慢的位速率被交换。在一个实施例中,输入/输出接口用于通过数据总线与m个附加dram设备并联地耦合到存储器控制器,其中,m是大于1的整数,并且其中,dram设备用于通过2n个传输周期突发将2^n个数据位的一部分交换到存储器控制器。在一个实施例中,对于总共九个dram设备,m是8。在一个实施例中,数据总线包括40位信道,其中,4个dram设备具有x5数据总线接口,并且5个dram设备具有x4数据总线接口。在一个实施例中,具有x5数据总线接口的dram设备用于在x5接口的五条信号线中的四条信号线上交换数据位,并且在第五条信号线上交换额外位。在一个实施例中,数据总线包括36位信道,其中,传输周期突发至少包括用于传输额外位的额外周期突发。在一个实施例中,存储器设备包括双列直插式存储器模块(dimm)上的存储器设备。在一个实施例中,dram设备包括多芯片存储器封装中的多个dram管芯中的一个dram管芯。在一个实施例中,dram设备包括与双倍数据速率(ddr)标准兼容的dram设备。

在一个方面,一种系统包括:信号线的数据总线;存储器控制器,其耦合到数据总线;以及一个或多个动态随机存取存储器(dram)设备,其经由数据总线耦合到存储器控制器,dram设备根据前两段中的任何dram设备。在一个实施例中,该系统还包括以下中的一个或多个:耦合到存储器控制器的多核心处理器;耦合以在dram设备与远程网络位置之间交换数据的网络适配器;通信地耦合到处理器的显示器;或者向系统提供电力的电池。

在一个方面,一种用于动态随机存取存储器(dram)设备中的错误管理的方法包括:执行内部错误校验和校正(ecc),包括在dram设备内生成和应用校验位;提供用于n+1个内部校验位的2n个存储器位置,n+1个内部校验位用于2^n个数据位的内部ecc,其中,n是大于1的整数;以及向存储器控制器提供对(2n减(n+1))个存储器位置中的一个或多个存储器位置的存取,作为系统ecc信息的额外位,其中,系统ecc信息与内部ecc分开。该方法可以根据如上面阐述的dram设备的任何实施例。

在一个方面,一种装置包括用于执行操作以执行根据用于错误管理的前述方法的方法的单元。在一个方面,一种制品包括其上存储有内容的计算机可读存储介质,该内容在被存取时提供指令以使计算机设备执行操作以执行根据用于错误管理的前述方法的方法。

在一个方面,一种存储器控制器包括:硬件输入/输出接口,其通过数据总线耦合到一个或多个存储器设备;发送电路,用于通过2n个传输周期突发将2^n个数据位和至少n+1个校验位发送到一个或多个存储器设备以进行写入操作,其中,n是大于1的整数;接收电路,用于通过2n个传输周期突发从一个或多个存储器设备接收2^n个数据位和至少n+1个校验位以进行读取操作。

在一个实施例中,n是8。在一个实施例中,存储器设备的数量包括8。在一个实施例中,接收电路用于接收2n个校验位。在一个实施例中,2n个校验位包括由存储器控制器生成的(n+1)个校验位,用于2^n数据位的ecc(错误校验和校正),以及基于存储器设备上的内部ecc生成的多达(2n减(n+1))个额外校验位。在一个实施例中,一个或多个存储器设备包括双列直插式存储器模块(dimm)上的存储器设备。在一个实施例中,数据总线包括36位信道。在一个实施例中,一个或多个存储器设备包括具有多个dram管芯的单个存储器设备封装。在一个实施例中,一个或多个存储器设备包括与双倍数据速率(ddr)标准兼容的存储器设备。

在一个方面,一种用于存取存储器的方法包括:通过2n个传输周期突发向一个或多个存储器设备发送2^n个数据位和至少n+1个校验位以进行写入操作,其中,n是整数大于1;以及通过2n个传输周期突发从一个或多个存储器设备接收2^n个数据位和至少n+1个校验位以进行读取操作。

在一个实施例中,n是8。在一个实施例中,存储器设备的数量包括8。在一个实施例中,接收包括接收2n个校验位。在一个实施例中,2n个校验位包括由存储器控制器生成的(n+1)个校验位,用于2^n个数据位的ecc(错误校验和校正),以及基于存储器设备上的内部ecc生成的多达(2n减(n+1))个额外校验位。在一个实施例中,一个或多个存储器设备包括双列直插式存储器模块(dimm)上的存储器设备。在一个实施例中,数据总线包括36位信道。在一个实施例中,一个或多个存储器设备包括具有多个dram管芯的单个存储器设备封装。在一个实施例中,一个或多个存储器设备包括与双倍数据速率(ddr)标准兼容的存储器设备。

在一个方面,一种装置包括用于执行操作以执行根据用于存取存储器的前述方法的单元。在一个方面,一种制品包括其上存储有内容的计算机可读存储介质,该内容在被存取时提供指令以使计算机设备执行操作以执行根据用于存取存储器的前述方法的方法。

在一个方面,动态随机存取存储器(dram)芯片包括:硬件输入/输出接口,其通过数据总线与m-1个附加存储器设备并联地耦合到存储器控制器,其中,m是大于1的整数;接收电路,用于通过2n个传输周期突发从存储器控制器接收(2^n)/m个数据位以进行写入操作,并且接收至少n+1个校验位中的至少一个校验位;以及发送电路,用于通过2n个传输周期突发向存储器控制器发送(2^n)m个数据位以进行写入操作,并且发送至少n+1个校验位中的至少一个校验位。

在一个实施例中,n是8。在一个实施例中,m是8。在一个实施例中,发送包括发送2n个校验位。在一个实施例中,还包括:dram芯片内的内部ecc(错误校验和校正)电路,其用于执行ecc运算,包括在向存储器控制器发送数据之前,在dram芯片内生成用于错误校正的内部校验位;其中,2n个校验位包括由存储器控制器生成的(n+1)个校验位,用于2^n个数据位的ecc,以及由内部ecc电路生成的至少一个额外校验位。在一个实施例中,存储器设备包括双列直插式存储器模块(dimm)上的存储器设备。在一个实施例中,数据总线包括36位信道。在一个实施例中,dram芯片包括多芯片存储器封装中的多个dram管芯中的一个dram管芯。在一个实施例中,dram芯片包括与双倍数据速率(ddr)标准兼容的dram设备。

在一个方面,一种用于与存储器控制器相接合的方法包括:通过2n个传输周期突发从存储器控制器接收(2^n)除以m个数据位以进行写入操作,并且接收至少n+1个校验位中的至少一个校验位;以及通过2n个传输周期突发向存储器控制器发送(2^n)乘m个数据位以进行写入操作,并且发送至少n+1个校验位中的至少一个校验位。

在一个实施例中,n是8。在一个实施例中,m是8。在一个实施例中,发送电路用于发送2n个校验位。在一个实施例中,还包括:dram芯片内的内部ecc(错误校验和校正)电路,其用于执行ecc运算,包括在向存储器控制器发送数据之前,在dram芯片内生成用于错误校正的内部校验位;其中,2n个校验位包括由存储器控制器生成的(n+1)个校验位,用于2^n个数据位的ecc,以及由内部ecc电路生成的至少一个额外校验位。在一个实施例中,存储器设备包括双列直插式存储器模块(dimm)上的存储器设备。在一个实施例中,数据总线包括36位信道。在一个实施例中,dram芯片包括多芯片存储器封装中的多个dram管芯中的一个dram管芯。在一个实施例中,dram芯片包括与双倍数据速率(ddr)标准兼容的dram设备。

在一个方面,一种装置包括用于执行操作以执行根据用于存取存储器的前述方法的方法的单元。在一个方面,一种制品包括其上存储有内容的计算机可读存储介质,该内容在被存取时提供指令以使计算机设备执行操作以执行根据用于存取存储器的前述方法的方法。

在一个方面,一种系统包括:信号线的数据总线;存储器控制器,其耦合到数据总线;以及一个或多个动态随机存取存储器(dram)设备,其经由数据总线耦合到存储器控制器;其中,存储器控制器和dram设备用于通过2n个传输周期突发交换2^n个数据位和至少n+1个校验位,以用于存储器存取操作,其中,n是大于1的整数。

在一个实施例中,n是8。在一个实施例中,存储器控制器和dram设备用于交换2n个校验位。在一个实施例中,一个或多个dram设备还包括:dram设备内的内部ecc(错误校验和校正)电路,其用于执行ecc运算,包括在向存储器控制器发送数据之前,在dram设备内生成用于错误校正的内部校验位;其中,2n个校验位包括由存储器控制器生成的(n+1)个校验位,用于2^n个数据位的ecc,以及由dram设备的内部ecc电路生成的多达(2n减(n+1))个额外校验位。在一个实施例中,dram设备包括双列直插式存储器模块(dimm)上的存储器设备。在一个实施例中,一个或多个dram设备包括与双倍数据速率(ddr)标准兼容的dram设备。在一个实施例中,还包括以下中的一个或多个:耦合到存储器控制器的多核心处理器;耦合以在dram设备与远程网络位置之间交换数据的网络适配器;通信地耦合到处理器的显示器;或者向系统提供电力的电池。

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

就本文中描述各种操作或功能的程度而言,可以将这些操作或功能描述或定义为软件代码、指令、配置和/或数据。内容可以是可直接执行文件(“对象”或“可执行文件”形式)、源代码或差别代码(“增量”或“补丁”代码)。本文描述的实施例的软件内容可以经由其上存储有内容的制品提供,或者经由操作通信接口以经由通信接口发送数据的方法提供。机器可读存储介质可以使机器执行所描述的功能或操作,并且包括以可由机器(例如,计算设备、电子系统等)存取的形式存储信息的任何机构,例如,可记录/非可记录介质(例如,只读存储器(rom)、随机存取存储器(ram)、磁盘存储介质、光存储介质、闪速存储器设备等)。通信接口包括与硬连线、无线、光等中任一个的介质接合以与另一设备通信的任何机构,例如,存储器总线接口、处理器总线接口、互联网连接、磁盘控制器等。可以通过提供配置参数和/或发送信号以使通信接口准备提供描述软件内容的数据信号来配置通信接口。可以经由发送到通信接口的一个或多个命令或信号来访问通信接口。

本文描述的各种组件可以是用于执行所描述的操作或功能的单元。本文描述的每个组件包括软件、硬件或这些的组合。这些组件可以实现为软件模块、硬件模块、特定用途的硬件(例如,专用硬件、专用集成电路(asic)、数字信号处理器(dsp)等)、嵌入式控制器、硬连线电路等。

除了本文描述的内容之外,可以对所公开的本发明的实施例和实现方式进行各种修改而不脱离其范围。因此,本文的图示和示例应被解释为说明性的而非限制性的意义。应仅通过参考所附权利要求来衡量本发明的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1