书签 分享 收藏 举报 版权申诉 / 17

内存模块缓冲器数据存储.pdf

  • 上传人:32
  • 文档编号:43918
  • 上传时间:2018-01-18
  • 格式:PDF
  • 页数:17
  • 大小:3.44MB
  • 摘要
    申请专利号:

    CN201280068674.4

    申请日:

    2012.01.31

    公开号:

    CN104094351A

    公开日:

    2014.10.08

    当前法律状态:

    撤回

    有效性:

    无权

    法律详情:

    发明专利申请公布后的视为撤回IPC(主分类):G11C 7/10申请公布日:20141008|||专利申请权的转移IPC(主分类):G11C 7/10登记生效日:20160905变更事项:申请人变更前权利人:惠普发展公司,有限责任合伙企业变更后权利人:慧与发展有限责任合伙企业变更事项:地址变更前权利人:美国德克萨斯州变更后权利人:美国德克萨斯州|||实质审查的生效IPC(主分类):G11C 7/10申请日:20120131|||公开

    IPC分类号:

    G11C7/10; G11C29/00; G06F12/00; G06F13/14

    主分类号:

    G11C7/10

    申请人:

    惠普发展公司,有限责任合伙企业

    发明人:

    利迪娅·M·韦内斯; 赛厄马克·塔瓦莱伊

    地址:

    美国德克萨斯州

    优先权:

    专利代理机构:

    北京德琦知识产权代理有限公司 11018

    代理人:

    柴德海;康泉

    PDF完整版下载: PDF下载
    内容摘要

    一种包括内存器件(24、324)的内存模块(22、122、322、522)包括内存模块缓冲器(26、326、526)及缓冲器内存(28),内存模块缓冲器(26、326、526)具有备用状态输入(36)。内存模块缓冲器(26、326、526)将数据存储在缓冲器内存(28)中,该数据是从被确定为包括错误的内存器件(24、324)中至少一个内存器件的一部分重创建的。

    权利要求书

    1.  一种装置,包括:
    内存模块(22、122、322、522),包括:
    内存器件(24、324);
    内存模块缓冲器(26、326、526),所述内存模块缓冲器包括备用状态输入(36);以及
    缓冲器内存(28),其中所述缓冲器被配置为将数据存储在所述缓冲器内存(28)中,所述数据是从被确定为包括错误的所述内存器件(24、324)中至少一个内存器件的一部分重创建的。

    2.
      根据权利要求1所述的装置,其中所述内存器件(24、324)包括具有内存器件存储容量的内存器件(24、324)以及具有库存储容量的库,并且其中所述缓冲器内存(28)具有至少所述库存储容量的存储容量。

    3.
      根据权利要求2所述的装置,其中所述缓冲器内存(28)的所述存储容量是至少256Mb。

    4.
      根据权利要求2所述的装置,其中所述缓冲器内存(28)的所述存储容量等于内存器件容量。

    5.
      根据权利要求4所述的装置,其中所述缓冲器内存(28)的所述存储容量是至少4Gb。

    6.
      根据权利要求1所述的装置,其中所述缓冲器内存(28)在所述内存模块缓冲器(26、326、526)中。

    7.
      根据权利要求1所述的装置,进一步包括:被分配给每个内存器件的数据和控制信号(525),其中所述内存模块缓冲器(526)进一步包括数据和控制输入信号(528),其中所述内存模块缓冲器(526)通过所述数据和控制输入信号(528)执行与所述缓冲器内存(28)中的所述数据相关的事务。

    8.
      根据权利要求1所述的装置,进一步包括内存存储器(144),所述内存存储器(144)存储基于所述缓冲器内存(28)中可用空间的值。

    9.
      根据权利要求1所述的装置,进一步包括内存控制器(154),所述内存控制器(154)用于识别内存器件错误,用于向所述内存模块缓冲器(26、326、526)传递要利用所述备用状态输入(36)重创建的所述内存器件(24、324)的那些部分,用于从那些部分重创建所述数据,以及用于向所述缓冲器内存(28)传送所重创建的数据,其中所述缓冲器内存(28)将正被重创建的所述内存器件(24、324)的那些部分的位 置重映射至所述缓冲器内存(28)中的位置。

    10.
      一种方法,包括:
    响应于备用状态信号穿过备用状态输入(36),激活内存模块(22、122、322、522)上的缓冲器内存(28)的第一部分;
    将第一内存器件中被确定为包括第一错误的第一部分的第一位置重映射至缓冲器内存(28)中的第一位置;
    从所述第一内存器件(24、324)的所述第一部分重创建第一数据;以及
    将被重创建的第一数据存储在所述缓冲器内存(28)中被重映射的第一位置处。

    11.
      根据权利要求10所述的方法,进一步包括:
    响应于第二信号穿过所述备用状态输入(36),激活所述缓冲器内存(28)的第二部分;
    将所述第一内存器件(24、324)中被确定为包括第二错误的第二部分的第二位置重映射至所述缓冲器内存(28)中的第二位置;
    从所述第一内存器件(24、324)的所述第二部分重创建第二数据;以及
    将被重创建的第二数据存储在所述缓冲器内存(28)中被重映射的第二位置处。

    12.
      根据权利要求10所述的方法,进一步包括:
    响应于第二信号穿过所述备用状态输入(36),激活所述缓冲器内存(28)的第二部分;
    将第二内存器件(24、324)中被确定为包括第二错误的第二部分的第二位置重映射至所述缓冲器内存(28)中的第二位置;
    从所述第二内存器件(24、324)的所述第二部分重创建第二数据;以及
    将被重创建的第二数据存储在所述缓冲器内存(28)中被重映射的第二位置处。

    13.
      根据权利要求10所述的方法,进一步包括跟踪所述缓冲器内存(28)中空间是否可用。

    14.
      根据权利要求10所述的方法,进一步包括响应于达到每个块的错误的阈值,生成所述备用状态信号。

    15.
      一种装置,包括:
    内存控制器(154),包括:
    输入/输出模块(160),用于促进与内存模块(22、122、322、522)的事务;
    错误检测模块(162),用于识别所述内存模块(22、122、322、522)的内存器件(24、324)中的错误;
    阈值检测模块(164),用于确定所识别的错误的数量是否达到预定阈值;
    数据创建模块(166),用于从内存器件(24、324)的被确定为包括错误的一部分重创建数据;以及
    备用存储模块(168),用于激活所述内存模块(22、122、322、522)的缓冲器内存(28),并且将被重创建的数据存储在所述缓冲器内存(28)中。

    说明书

    内存模块缓冲器数据存储
    背景技术
    像双列直插式内存模块(DIMM)这样的内存模块有时遭受错误,错误会导致内存故障。用于向内存模块提供容错的现有方法(如纠错码和内存备用(memory sparing)的使用)可以减少带宽,或可以减少内存存储容量。
    附图说明
    图1是示例内存模块的示意图。
    图2是包括图1的内存模块示例的示例计算系统的示意图。
    图3是可以由图2的系统执行的示例方法的流程图。
    图4是图1的内存模块的示例实现方式的示意图。
    图5是具有故障内存器件的图4的内存模块的示意图。
    图6是具有被重映射至缓冲器内存的经擦除内存器件的、图4的内存模块的示意图。
    图7是具有连接至内存控制器的内存模块的另一示例计算系统的示意图。
    图8是具有示例分布式数据缓冲器的另一示例计算系统的示意图。
    图9是可以由图1、7和8的计算系统执行的示例方法的流程图。
    具体实施方式
    图1示意性地示出内存模块20的示例。内存模块20用于在计算系统中使用,其中内存模块20提供用于存储应用程序和/或数据的内存单元或位置。如下面将描述的,内存模块20对在内存模块20上可能发生的错误提供容错,同时减少或消除带宽或内存存储容量的任何关联下降。
    内存模块20包括自包含的或独立的内存单元,该自包含的或独立的内存单元可以以模块化的方式增加至计算系统。在一个实现方式中,内存模块20可以包括印刷电路板或卡,该印刷电路板或卡看护内存器件且适用于可释放地或可移除地安装或连接至计算系统。例如,在一个实现方式中,内存模块20可以被形成为适于安装和电连接至另一印刷电路板(例如,主板)的对应插槽的双列直插式内存模块(DIMM)的一部 分。在其它实现方式中,内存模块28以其它类型的内存模块的形式设置,如单列直插式内存模块(SIMM)、全缓冲双列直插式内存模块(FB DIMM)、低负载DIMM(LR-DIMM)等,它们可以以相同的或其它方式可释放地连接至计算系统。
    内存模块20包括:支座(印刷电路板或连接电子设备的类似方法)22、内存器件(MD)24、内存模块缓冲器(MM缓冲器)26以及缓冲器内存(BM)28。支座22包括支撑结构,支撑结构对内存器件24、缓冲器26以及缓冲器内存28提供互连方法。在一个实现方式中,支座22包括具有导电线或迹线30的印刷电路板,导电线或迹线30可通信地或电学地将上述组件中的每个作为内存器件24连接至内存模块缓冲器26。在一个实现方式中,支座22可以附加地包括沿支座22的边缘设置的边缘连接器,如触点或引脚32,以帮助内存模块20和与外部计算系统通信的数据和地址/命令总线之间的通信。在其它实现方式中,可以使用其它封装技术。
    内存器件24包括在支座22的一侧或两侧安装或以其它方式支撑的单独的集成电路内存组件。在一个实现方式中,内存器件24包括动态随机存取存储器(DRAM)集成电路内存器件。在一个实现方式,每个内存器件24具有至少4Gb的内存器件存储容量。在一个实现方式中,每个内存器件24包括一个或多个库(bank),每个库具有至少256Mb的内存存储容量。在一个实现方式中,每个内存器件24可以通过堆叠多个DRAM晶片(die)来构造。在其它实现方式中,内存器件24可以具有当前技术水平可以支持的其它存储容量,并且可以包括其它形式的集成电路内存组件。在一个实现方式中,这样的内存器件包括利用双倍数据速率(DDR)协议通信的器件。例如,内存器件24可以可替代地包括静态随机存取存储器(SRAM)集成电路内存器件、闪存设备、非易失性内存器件、相变内存器件、多位内存器件等等。
    内存模块缓冲器26包括用于接合或驱动计算系统的内存控制器和内存器件24之间的事务的缓冲器或寄存器。特别地,缓冲器26通过寄存器逻辑缓冲地址和控制信号。为了本公开的目的,术语“缓冲器”或“内存模块缓冲器”指通过寄存器逻辑缓冲地址控制信号的任意芯片或组件,其包括但不限于寄存器和缓冲器。在一个实现方式中,内存模块缓冲器26通过锁相环重驱动时钟。在一个实现方式中,缓冲器26包括低负载双列直插式内存模块缓冲器(LR-DIMM缓冲器),其中以并行的方式通过双向驱动器缓冲数据线。在其它实现方式中,缓冲器26可以包括寄存器芯片,该寄存器芯片维持高信号强度并同步线之间的时序。
    如图1示意性地示出的,内存模块缓冲器26附加地包括备用状态输入36,缓冲器26通过备用状态输入36接收来自内存控制器的信号,以激活缓冲器内存28的使用。在一个实现方式中,备用状态输入36包括备用状态引脚或边缘连接器(如有时被称为 “金手指(goldfinger)”的边缘连接器或引脚)。尽管未特别标识,但是内存模块缓冲器26还可以包括其它引脚边缘连接器,如地址和控制输入或引脚、时钟输入或引脚、数据引脚及选通输入或引脚。
    内存模块缓冲器26包括映射逻辑(ML)38。映射逻辑38包括编程或集成电路,该编程或集成电路被构造为将内存器件24内的位置重映射至缓冲器内存28内的位置。特别地,映射逻辑38将内存器件24内的特定位置或地址分配至缓冲器内存28内的对应新地址。当接收对内存器件24内的地址的事务请求时,映射逻辑38将该事务请求及其信号(如读操作期间的信号或写操作期间的信号)重定向或重路由至缓冲器内存28内的对应新位置地址。如此后将描述的,由映射逻辑38进行的重映射促进访问已从在内存器件24的故障部分中的旧位置地址处的数据重生成的、并且已在缓冲器内存28中被存储在与旧位置地址链接的新位置地址处的数据。
    缓冲器内存28包括集成电路内存,该集成电路内存具有可由缓冲器26利用的、用于存储从内存器件24中一个或多个内存器件的故障部分中重创建的数据的缓冲器内存。在一个实现方式中,缓冲器内存28可以包括连接至缓冲器26或作为缓冲器26的一部分提供的动态随机存取存储器器件。在其它实现方式中,缓冲器内存28可以包括其它集成电路内存器件。在一个实现方式中,缓冲器内存28至少具有内存器件24的单独库的存储容量的存储容量。在一个实现方式中,缓冲器内存28具有与单独内存器件24的存储容量相等的存储容量。例如,在一个实现方式中,缓冲器内存28具有至少256Mb(内存器件24中最小库的大小)的存储容量。在一个实现方式中,缓冲器内存28具有4Gb(内存器件24中每个内存器件的内存存储容量)的存储容量。通过内存技术的进步可利用的其它内存存储容量,在其适合缓冲器内存28时也包括在本公开中。
    图2示意性图示示例计算系统100,示例计算系统100包括内存模块120及主机122。计算系统100利用内存模块120来存储数据和/或应用程序。计算系统100的示例包括但不限于:服务器、个人计算机(膝上型机、台式机、大型机、平板、笔记本)、个人数字助理、智能电话等等。
    除将缓冲器内存28示出为包括数据存储内存142和跟踪内存(TM)144以外,内存模块120基本上与内存模块20相同。内存模块120中与内存模块20的组件对应的那些剩余组件被类似地进行编号。数据存储内存142与内存28类似。内存142包括多个部分146,在多个部分146处可以同时地存储来自内存器件24的多个不同部分的数据或来自不同内存器件24的多个不同部分的数据。
    跟踪内存144包括可以存储内存142内的空间可用性的内存或记录区(registry)。 在一个实现方式中,跟踪内存144可以简单地包括表示(1)内存142中的空间可用或(2)内存142中的空间不再可用的标志(flag)或位(bit)。在另一实现方式中,跟踪内存144可以存储表示内存142中可供使用的内存量的值。跟踪内存144可以由主机122使用,以确定在内存142中是否存在可用于重创建并存储来自内存器件24的故障部分的数据的足够剩余内存存储容量。在一个实现方式中,跟踪内存144可以作为缓冲器内存28的一部分提供。在另一实现方式中,跟踪内存144可以与缓冲器内存28分离地提供。例如,跟踪内存144可以可替代地由缓冲器26的记录区中的一个或多个位提供。
    主机122利用内存模块120来存储应用程序和/或数据。在一个实现方式中,主机122可以包括具有插槽的主板或其它印刷电路板,在该插槽内可以安装内存模块120的边缘连接器。主机122包括处理器150、输出152以及内存控制器154。
    处理器150(有时包括中央处理单元)包括一个或多个处理单元,该一个或多个处理单元利用在内存模块120中存储的数据和/或应用程序来产生在输出152处出现的输出。输出152包括一个或多个设备,通过该一个或多个设备可以提供来自处理器152的输出。在一个实现方式中,输出152可以包括监视器或显示屏。在另一实现方式中,输出152可以可替代地或附加地包括打印设备。在另一实现方式中,输出152可以包括用于存储该输出的内存存储设备。尽管输出152被示出为位于处理器150本地,但是在其它实现方式中,输出152可以远离处理器150,通过网络连接至处理器150。
    内存控制器154接合在处理器150和内存模块120之间。特别地,内存控制器154将数据的读和写定向至内存模块120上的内存器件24。如此后将描述的,内存控制器154附加地识别内存器件24中的故障或错误,并且重创建该内存器件24中被确定为包括故障或错误的那些部分,其中所重写的部分或数据被存储在缓冲器内存28的内存142中。在一个实现方式中,内存控制器154可以作为芯片组的一部分提供。在其它实现方式中,内存控制器154可以作为处理器150的一部分提供或可以具有其它形式。
    内存控制器154包括输入输出模块(I/O M)160、错误检测模块(ED M)162、阈值检测模块(TH D M)164、数据创建模块(DC M)166以及备用存储模块(SS M)168。输入输出模块160包括被构造为促进内存控制器154和内存模块120之间以及内存控制器154和处理器150之间的通信的编程或集成电路逻辑。对于内存模块120,模块160促进像通过缓冲器26对内存器件24的读操作和写操作这样的事务。在一个实现方式中,内存控制器154促进利用双倍数据速率(DDR)协议与内存器件24的通信。
    错误检测模块162包括对内存器件24的多个部分中的错误进行检测的编程或集成 电路逻辑。在一个实现方式中,错误检测模块162使用纠错码(ECC)来帮助检测和/或纠正来自一个或多个故障内存器件24的数据字中的单比特及多比特错误。特别地,ECC以一组比特对信息进行编码,以恢复单个错误。当将数据写至内存器件24时,ECC使用算法来生成校验位,校验位在由该算法加在一起时产生校验和,该校验和被存储在内存器件24中的一个内存器件中。当从内存器件24的一部分读数据时,该算法重新计算校验和并将其与所写入的数据的校验和作比较。如果校验和相等,则数据有效。如果它们不同,则数据有错误,其中该错误被隔离并被报告给计算系统100。在单比特错误的情况下,ECC内存逻辑可以纠正并输出经纠正的数据,使得系统可以继续操作。
    阈值检测模块164包括对内存器件24的每个块(rank)中的错误数量进行监视的编程或集成电路逻辑。特别地,模块164将内存器件24的每个块的错误数量与预限定的错误阈值作比较。在一个实现方式中,以由错误数量导致的事务延迟不再处于可接受程度内的值建立预限定的错误阈值。响应于内存器件24的每个块的错误数量达到或超过预限定的阈值,连同缓冲器内存28一起实现模块166和168。在其它实现方式中,除每个块的错误数量以外的阈值可以被用来发起将模块166、168以及缓冲器内存28用于纠错。
    数据创建模块166包括对内存器件24中被模块162识别为包含错误的那些部分进行重创建的编程或集成电路逻辑。如上所述的,在一个实现方式中,数据创建模块166利用校验位及校验和来重创建内存器件24的故障部分的原始数据。在其它实现方式中,可以以其它方式重创建内存器件24的故障部分。
    备用存储模块168包括利用通过备用状态输入36传送的信号激活缓冲器内存28的编程或集成电路逻辑。备用存储模块168进一步将由模块166提供的经重创建的数据存储在缓冲器内存28中。在已经将主内存142中的地址映射至内存器件24中已被识别为包括错误的那些部分(且那些部分中的数据已经被重创建)中的地址以后或以前,可以执行主内存142中经重创建的数据的存储。
    图3是说明示例方法200的流程图,示例方法200可以由系统100执行以寻址在内存器件24中一个或多个内存器件中发现的错误。如步骤210所指示的,当识别内存器件24中一个内存器件中的错误时或当错误检测模块162确定内存器件24的至少部分发生故障时,内存控制器154的备用存储模块168,通过经过备用状态输入36向缓冲器26传送信号(有时被称为断言备用状态10)来激活缓冲器内存28。在缓冲器26利用ECC来纠正单比特错误(或利用ECC来纠正多比特错误)的一些实现方式中,可以延迟缓冲器内存28的缓冲器内存142的使用,直至由模块162识别的错误的数量 超过由阈值检测模块164确定的预限定的阈值。在缓冲器内存28的这样激活期间,还可以检查或读取跟踪内存144,以确定主内存142中是否存在用于存储从被识别为发生故障的一个或多个内存器件24中的部分重创建的数据的充足容量或空间。
    如步骤212所指示的,内存模块缓冲器26中的映射逻辑38将被识别为发生故障的内存器件24的那些部分的位置或地址重映射至主内存142中的新位置或地址。例如,内存器件24中属于具有一个或多个错误的内存单元一部分的地址A1可以被重映射至主内存142的一部分146中的地址A2。此后,由缓冲器26接收的关于地址A1的任意事务(读、写等等)将被缓冲器26重路由至新分配的对应地址A2。在另一实现方式中,给旧地址A1分配的新地址A2可以被传送给内存控制器154或处理器150,内存控制器154或处理器150在将关于包含在旧地址A1中的数据的事务传递给内存模块120时使用新地址A2替代旧地址A1。如上所述,这样的映射会在内存模块20接收从被识别为发生故障的内存器件24的那些部分重创建的数据之前或之后发生。这样的映射可以利用内存142中备用内存空间的全部,或仅利用内存142的一部分146。
    如步骤214所指示的,数据创建模块166从被识别为包括一个或多个错误的内存器件24的那些部分重创建数据。如上所述,在一个实现方式中,数据创建模块166利用校验位及校验和来重创建内存器件24的故障部分的原始数据。在其它实现方式中,可以以其它方式重创建内存器件24的故障部分。
    如步骤216所指示的,备用存储模块168将所重创建的数据存储在缓冲器内存28的主内存142中所重映射的或新的地址/位置。在包括跟踪内存144的那些实现方式中,或在包括缓冲器26的记录区中的存储空间的那些实现方式中,备用存储模块168或缓冲器26的映射逻辑38可以存储表示内存142中多少内存已被利用或者内存142中多少内存留待随后使用的新数据或新信息。在一个实现方式中,替代识别所利用的存储的量或内存142中可用的剩余存储的量,跟踪内存144可以用于表示数据存储内存142是否是满的。例如,缓冲器26可以在跟踪内存144中或其寄存器之一中设置位,该位表示在所重创建的数据已被写至数据存储内存142之后,是否留有可用内存。下一次备用状态被断言时,内存控制器154可以读该位,以确定是否可以完成这样的备用操作。
    总的来说,内存模块22和内存控制器154向内存模块22提供容错,同时维持或最低程度地减少带宽及内存存储容量。由于从内存器件24的故障部分重创建的数据可以存储在被映射至内存器件24的故障部分的对应位置的内存142中,所以存储经纠正的错误,使得随后与所重创建的数据相关的事务不需要使用ECC,这节省了带宽。此外,由于这样经纠正的错误存储在缓冲器内存28中,所以内存模块22可以更大,同 时避免使用双芯片备用算法(double chip spare algorithm),否则双芯片备用算法必须使用由在锁步(lockstep)中运行多对DDR通道、内存模块22或内存器件20的必要性造成的突发长度(突变(chop)4)以及排队延迟,以提供与内存器件22的每个块中内存器件的数量相称的足够宽的纠错字。结果,保留了内存带宽。
    由于所重创建的数据被存储在缓冲器内存28中,而不是在为纠错特别地留出的一个或多个备用内存器件中,所以保留了或增大了内存存储容量。与为纠错特别地留出的备用内存器件的使用相比,缓冲器内存28提供增强的纠错存储粒度。例如,在内存模块的备用块中存储的内存器件24的单独库中的错误将阻止该备用块的剩余容量的任意进一步使用。相比之下,内存器件24中的单独块中的错误可以存储在缓冲器内存28中,其中相同的缓冲器28可以用于存储来自内存器件24的其它错误,或来自其它内存器件24的其它错误。换句话说,由于此粒度,可以更加充分地利用内存缓冲器24的全部存储容量。结果,不需要为内存系统可靠性留出内存模块22的内存存储容量,使得系统中所安装的内存中更多是可用的。
    图4示意性图示内存模块322(内存模块22的示例)。在所说明的示例中,内存模块322包括双列直插式内存模块(DIMM),该双列直插式内存模块(DIMM)包括内存器件324(示出为动态随机存取存储器(DRAM))及内存模块缓冲器(MM缓冲器)326,内存模块缓冲器326包括缓冲器内存328。内存器件324通过迹线(未示出)连接至缓冲器326,并且提供用于存储数据和应用程序的存储空间。在一个实现方式中,每个内存器件324具有至少4Gb的存储容量。在其它实现方式中,每个内存器件324可以提供不同的存储容量。每个内存器件324包括多个库。此外,内存器件324被分成多个块(内存器件324的多个分组),多个块(内存器件324的多个分组)由内存控制器为读、写或其它内存操作而选择在一起。在所说明的示例实现方式中,内存模块322为双块(dual rank)模块,每个块包括用于存储数据的16个内存器件324以及为ECC提供存储的两个内存器件324。在其它实现方式中,内存模块322可以包括不同数量的内存器件324,内存器件324被分成不同数量的块的不同分组,以及为ECC留出的不同数量的内存器件324。在一些实现方式中,除了缓冲器内存328中的纠错存储以外,可以为备用附加地留出一个或多个内存器件324。
    内存模块缓冲器326在内存模块缓冲器326包括映射逻辑38(上面描述的)方面类似于内存模块缓冲器26。在所示出的示例实现方式中,内存模块326包含跟踪内存144。在一个实现方式中,跟踪内存144在缓冲空间326的记录区中包括表示内存328中的存储空间是否可用的一个或多个位。在其它实现方式中,缓冲器内存144可以设置在其它位置。在所说明的实现方式中,缓冲器内存328包括低负载DIMM缓冲器 (LR-DIMM缓冲器)。在其它实现方式中,缓冲器内存328可以包括另一形式的缓冲器或寄存器。
    如图4进一步示出的,除了备用状态输入或输入引脚36外,缓冲器内存326进一步包括数据和选通输入或引脚370、地址和控制引脚372以及时钟引脚374。引脚370、372及374包括输入,如边缘连接器、触盘、金手指,通过这些输入将选通信号传送至缓冲器326。数据和选通引脚370用于向内存器件324传送数据信号。地址和控制引脚372用于在写操作期间或在利用行信号及列信号的选通操作期间识别或寻址内存存储设备中的特定位置。时钟引脚374向缓冲器326传送系统差分时钟或时序。
    上面关于内存模块22描述了缓冲器内存28。在所说明的示例中,缓冲器内存28具有与内存器件324的存储容量相等的存储容量。在一个实现方式中,缓冲器内存28具有至少4Gb的存储容量。当缓冲器内存28未使用(未存储从内存器件324的故障部分重创建的数据)时,缓冲器内存28可以保持在节省功率的自刷新状态。此时,解断言该备用状态信号。
    图5和图6示意性地说明使用内存控制器154依照方法200在示例错误纠正或故障纠错操作期间的内存模块322。图5和图6说明何时已识别错误,使得错误的数量超过预定的阈值,并且所纠正的数据被存储在内存缓冲器28中。如图5所示,当内存器件324发生故障时,最初地利用ECC位对错误进行纠正以重构数据(图示了单芯片备用ECC),直至达到预限定的错误阈值。当任意内存器件324达到错误阈值时。或当它们的内存器件在内存模块322上的任意块内的完全发生故障时,错误检测模块162触发擦除(如图6所示)并且断言备用状态输入或引脚36。特别地,内存控制器154(图2中示出)利用(连接至地址和控制引脚372的)地址/控制总线,以在与包含出故障的内存器件324的块关联的事务被断言时,激活缓冲器内存28并禁用连接至出故障的内存器件的数据选通引脚。此操作之后,禁用备用状态信号,并且映射逻辑38将出故障的内存器件324的地址映射至缓冲器内存28,使得缓冲器内存28取代出故障的内存器件324。为了纠正相同内存模块322上一个以上块中的更多错误,可以增加缓冲器内存28中内存的量。
    图7示意性地图示计算系统400(计算系统100的示例)。除将计算系统400图示为具有连接至内存控制器354的两个内存模块322之外,计算系统400与计算系统100相同。在一个实现方式中,内存控制器154通过在锁步中操作DDR通道而与内存模块322通信。结果,系统400可以从在锁步对中的每个内存模块322上的更多错误中恢复。特别地,由于这样的内存模块322使用在锁步操作的DDR通道,所以每个内存322具有用于存储从内存器件24的故障部分重创建的数据的两个可用缓冲器内存。 由于块散布在多个内存模块322中,因此只要多个错误不同时发生,那么多个错误可以在相同的块中或在不同的块上发生。由缓冲器内存28提供的附加存储空间可以用于寻址更多错误。
    图8示意性地图示计算系统500(计算系统100的示例实现方式)。除计算系统500利用内存模块522之外,计算系统500类似于计算系统100。内存模块522包括寄存器化的双列直插式内存模块(R-DIMM)(如果分布式数据缓冲器丢失)或具有分布式数据缓冲器的低负载双列直插式内存模块(LR-DIMM)。内存模块522包括(上面描述的)内存器件324、分布式数据缓冲器525、内存模块缓冲器526以及(上面描述的)缓冲器内存28。
    分布式数据缓冲器525包括与一个或多个单独的内存器件324关联的单独的数据缓冲器或内存。在所图示的示例中,数据缓冲器525各自与一对内存器件324关联。在其它实现方式中,每个数据缓冲器525可以与单个内存器件324关联,或与更多个内存器件324关联。数据缓冲器525接合或驱动内存控制器154和内存器件324之间的事务。特别地,缓冲器525通过寄存器逻辑对选通信号和数据信号进行缓冲。如图8所示,每个数据缓冲器525具有关联的数据和选通引脚528。在所图示的示例中,每个数据缓冲器525具有8个数据和选通位。在其它实现方式中,缓冲器525可以具有其它结构。
    除了缓冲器526包括用于地址/控制信号的记录区(REG)和锁相环(PLL)并且省略现在在内存器件324之间分布的寄存器或数据缓冲器之外,内存模块缓冲器526与内存模块缓冲器26类似。如图8所示,缓冲内存模块缓冲器526附加地包括四个(4)数据和关联的选通输入536。当发生与特定内存器件324关联的故障或错误时,数据和选通引脚536被激活并且用于代替与出故障的内存器件324关联的那些数据和选通引脚。数据和选通引脚536接收来自内存控制器154的数据信号及选通信号,数据信号及选通信号用于向缓冲器内存28中被映射至一个或多个内存器件324的故障部分的那些部分写数据和从缓冲器内存28中被映射至一个或多个内存器件324的故障部分的那些部分读数据。
    在操作中,系统500与系统100类似地操作。当内存控制器154的错误检测模块162识别内存器件324中导致每个块的错误总数(在一个实现方式中)超过预限定的阈值的错误时,或当内存器件324在内存模块522上的任意块内的完全发生故障时,错误检测模块162触发擦除并且断言备用状态输入或引脚36。特别地,当断言与包含出故障的内存器件324的块关联的事务时,内存控制器154利用(连接至地址和控制引脚372的)地址/控制总线来激活缓冲器内存28并禁用连接至出故障的内存器件324 的数据选通引脚528。此操作之后,禁用备用状态信号,并且映射逻辑38将出故障的内存器件324的地址映射至缓冲器内存28,使得缓冲器内存28取代出故障的内存器件324。按照与利用无故障内存器件324的被分配的数据和选通引脚528执行与无故障内存器件324相关的事务相同的方式,使用数据和选通引脚536传送随后关于缓冲器内存28中所映射的位置的事务。为了纠正相同内存模块322上一个以上块中的更多错误,可以增加缓冲器内存28中的内存的量。
    图9是示例方法600(上面描述的方法200的特定实现方式)的流程图。方法600可以通过具有内存控制器的计算系统(如系统100、系统400或系统500)执行。如步骤602所示,方法600开始于最初地“好的”内存模块322或“好的”一组内存模块322(其中,块可能与图7所示那样类似在多个内存模块之间分布)。
    如步骤604所示,错误检测模块162确定块或块的内存器件324是否包含错误。如上所述,可以由错误检测模块162利用在为这样的ECC操作留出的那些内存器件324的ECC存储部分中存储的校验位和校验和来检测错误。如步骤606所示,如果这样被识别的错误是不可纠正的,则系统崩溃发生(步骤608),其中替换该内存模块(MM)22、322、522(步骤610),由此如步骤612所示,块的健康情况被完全恢复。
    如步骤606和614所示,如果(图2中示出)由错误检测模块162识别的这样错误是可纠正的,则内存控制器154利用ECC纠正内存器件错误。特别地,如步骤616所示,去掉或擦除该内存器件中的错误的位置,并且按照步骤618,纠正或解码错误,将纠正分配给特别的内存器件行和库。
    如步骤620所示,跟踪每个块的错误数量的特殊检测模块164确定每个块的错误阈值是否已经达到,如步骤622所示,如果每个块的错误阈值通过新错误而达到,则内存控制器154确定缓存内存28中是否存在足够的备用内存位置或空间。在一个实现方式中,内存控制器154在做此确定时咨询跟踪内存144。如步骤624所示,如果在缓存内存28中不存在用于存储从内存器件24、324的故障部分重创建的数据的足够内存,则内存控制器154触发或提示替换内存模块22、322、522。
    如步骤626和628所示,如果缓冲器内存28具有用于包含或存储从块或内存器件24、324的故障部分重创建的数据的充足空间,则内存控制器154的备用存储模块168通过将信号通过备用状态输入36传送给缓冲器26、326、526(有时称作断言该备用状态36)来激活缓冲器内存28。
    如步骤630所示,数据创建模块166重创建来自内存器件24、324中被识别为包括一个或多个错误的那些部分的数据。如上所述,在一个实现方式中,数据创建模块166利用校验位和校验和来重创建内存器件24的故障部分的原始数据。在其它实现方 式中,可以以其它方式重创建内存器件24的故障部分。备用存储模块168将所重创建的数据存储在缓冲器内存28的主内存142中。
    在所图示的示例中,备用存储模块168或缓冲器26、326、526的映射逻辑38可以存储表示内存142中多少内存已使用或内存142中多少内存剩余供随后使用的新数据或新信息。在一个实现方式中,替代识别内存142中所利用存储的量或可用的剩余存储的量,跟踪内存144可以被用于指示主内存142是否是满的。例如,缓冲器26、326、526可以在跟踪内存144中或其寄存器之一中设置位,该位指示在已将所重创建的数据写至内存142之后是否剩余可用内存。下次断言该备用状态时,内存控制器154可以读该位,以确定是否可以完成这样的备用操作。
    如步骤632所示,内存模块缓冲器26、326、526中的映射逻辑38将被识别为出故障的内存器件24的那些部分的位置或地址重映射至主内存142中的新位置或地址。例如,内存器件24、324的地址A1(其是具有一个或多个错误的内存单元的一部分)可以被重映射至主内存142的一部分146中的地址A2。此后,由缓冲器26、322、526接收的关于地址A1的任意事务(读、写等)将由缓冲器26、326、526重路由至新分配的对应地址A2。在另一实现方式中,被分配给旧地址A1的新地址A2可以被传送至内存控制器154或处理器150(图2中示出),内存控制器154或处理器150在向内存模块120传递与包含在旧地址A1中的数据相关的事务时使用新地址A2取代旧地址A1。如上所述,这样的映射可以在内存模块22、322、522接收从被识别为出故障的内存器件24、324的那些部分重创建的数据之前或之后发生。这样的映射可以利用内存142中备用内存空间的全部,或仅利用内存142的一部分146。
    尽管已关于示例实施例描述了本公开,但是本领域技术人员将认识到,可以在形式和细节上做出变化,而不脱离要求保护的主题的精神和范围。例如,尽管已经将不同的示例实施例描述为包括提供一个或多个益处的一个或多个特征,但是预想到,在所描述的示例实施例中或在其它替代实施例中,所描述的特征可以彼此互换或者可替代地彼此结合。由于本公开的技术相对复杂,所以该技术中所有改变并非都是可预见的。关于示例实施例描述的以及在下面的权利要求中解释的本公开清楚地旨在尽可能地广泛。例如,除非另有具体说明,否则引用单个特定要素的权利要求还包括多个这样的特定要素。

    关 键  词:
    内存 模块 缓冲器 数据 存储
      专利查询网所有文档均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    0条评论

    还可以输入200字符

    暂无评论,赶快抢占沙发吧。

    关于本文
    本文标题:内存模块缓冲器数据存储.pdf
    链接地址:https://www.zhuanlichaxun.net/p-43918.html
    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2017-2018 zhuanlichaxun.net网站版权所有
    经营许可证编号:粤ICP备2021068784号-1