可扩展的双列直插式内存模块的制作方法

文档序号:24640108发布日期:2021-04-09 20:52阅读:102来源:国知局
本申请涉及一种可扩展的内存,并且更具体地涉及一种用于可扩展的内存子系统的可扩展的内存双列直插式内存模块(dimm)。
背景技术
::计算装置的内存通常受到物理空间约束的限制。例如,因为计算装置的主板上的空间有限,只有固定数量的内存dimm的插槽/槽可容纳在主板上。一旦所有内存dimm插槽/槽的每一个均已插入一个内存dimm,则计算装置的内存子系统将被“扩展”至最大容量。因此,增加内存dimm上的每个内存芯片的内存容量成了增加内存子系统容量的典型方案。然而,尽管后来出现具有更大内存容量的新生代的内存dimm,计算装置可能不能够容纳异质类型的内存dimm的混合。基本上,用户必须接收受限制的系统内存容量,并且相应地将就于低于计算装置的最佳计算性能的计算性能。技术实现要素:根据一个方面,本公开提供一种可扩展的双列直插式内存模块(dimm),所述dimm包括:动态随机存取存储器(dram),所述dram具有基本内存空间;dimm内存控制器,所述dimm内存控制器耦合至所述dram;内存接口,所述内存接口被配置成将所述dimm耦合至计算装置的dimm连接器;以及第一扩展接口,所述第一扩展接口被配置成将所述dimm耦合至远端内存模块,所述远端内存模块包括第一远端内存空间,其中dimm内存控制器被配置成映射dimm内存空间,所述dimm内存空间包括所述dram的基本内存空间和所述远端内存模块的第一远端内存空间,其中当所述dimm耦合至所述计算装置时,所述dimm内存空间可通过所述内存接口被所述计算装置访问。可选地,如上所述dimm,所述dimm内存控制器还被配置成使用第一地址映射到第二地址,其中所述第一地址被确定成所述dimm内存空间的地址,所述第二地址被确定成所述第一远端内存空间的地址。根据另一方面,本公开提供一种可扩展内存子系统,所述可扩展内存子系统包括:如上所述的双列直插式内存模块(dimm);以及第一远端内存模块,所述第一远端内存模块通过所述dimm的第一扩展接口耦合至所述dimm。可选地,如上所述的可扩展内存子系统,所述第一远端内存模块还包括:第一远端内存控制器,所述第一远端内存控制器被配置成界定第一远端内存空间,所述第一远端内存控制器还被配置成使用第二地址映射到第三地址,其中所述第二地址被确定成所述第一远端内存空间内的地址,并且其中所述第二地址由dimm内存控制器从所述第一地址转换而成。可选地,如上所述的可扩展内存子系统,所述dimm内存控制器还被配置成提供内存映射图,所述内存映射图由所述第一远端内存空间和所述基本内存空间聚合而成。可选地,如上所述可扩展内存子系统还包括:第二远端内存模块,所述第二远端内存模块界定第二远端内存空间,所述第二远端内存模块通过第二扩展接口耦合至第一远端内存模块,其中所述第一远端内存模块还包括:第一远端内存控制器,所述第一远端内存控制器被配置成使用第二地址映射到第三地址,其中所述第三地址被确定成所述第二远端内存空间内的地址,并且所述第二地址被确定成所述第一远端内存模块的第一远端内存空间内的地址,并且其中所述第二地址由dimm内存控制器从所述第一地址转换而成。可选地,如上所述可扩展内存子系统,所述第一远端内存控制器被配置成提供内存映射图,所述内存映射图由所述第一远端内存空间和所述第二远端内存空间聚合而成。根据另一方面,本公开提供一种可扩展的内存模块,其特征在于,所述内存模块包括:动态随机存取存储器(dram),所述dram包括dram内存空间;非易失性内存(nvm),所述nvm包括nvm内存空间;以及内存控制器,所述内存控制器被配置成映射第一内存空间,所述第一内存空间包括dram内存空间和nvm内存空间,其中所述内存控制器还被配置成在第一内存空间内确定第一地址。可选地,所述内存模块还包括:第一接口,所述第一接口被配置成将所述内存模块耦合至计算装置的双列直插式内存模块(dimm)接口。可选地,所述内存模块还包括:第二接口,所述第二接口被配置成将所述内存模块耦合至第二内存模块,所述第二内存模块具有第二内存空间。可选地,如上所述内存模块,所述内存控制器还被配置成映射第一聚合内存空间,所述第一聚合内存空间包括所述第一内存空间和所述第二内存空间。可选地,所述内存模块还包括地址转换表,所述地址转换表可被存储于所述dram,所述地址转换表被配置成在所述第一聚合内存空间与所述第二内存空间之间提供地址映射。可选地,如上所述内存模块,所述内存控制器还被配置成在所述第一聚合内存空间与所述第一内存空间和所述第二内存空间之一之间提供地址映射。可选地,如上所述内存模块,所述第二内存空间包括dram装置的内存空间。可选地,如上所述内存模块,所述第二内存空间包括固态存储装置的存储空间。可选地,如上所述内存模块,所述第二内存空间包括硬盘驱动器的存储空间。可选地,如上所述内存模块,所述第二接口包括网络接口电路,所述网络接口电路被配置成将所述内存模块耦合至另一个存储设备。根据另一方面,本公开提供一种内存子系统,所述内存子系统包括:第一内存模块,所述第一内存模块包括:至少一个内存装置,所述内存装置提供第一内存空间;第一内存控制器,所述第一内存控制器被配置成提供所述第一内存空间的第一内存映射图;以及第一接口,所述第一接口被配置成将所述第一内存模块耦合至双列直插式内存模块(dimm)接口;以及第二内存模块,所述第二内存模块耦合至所述第一内存模块,所述第二内存模块包括:至少一个第二内存装置,所述第二内存装置提供第二内存空间;以及第二内存控制器,所述第二内存控制器被配置成将所述第二内存空间的第二映射图提供给所述第一内存控制器,其中所述第一内存控制器被配置成提供聚合内存映射图,所述聚合内存映射图包括所述第一内存映射图和所述第二内存映射图。可选地,如上所述内存子系统,所述内存控制器还被配置成使用所述第一聚合内存的第一地址映射到第二地址,所述第二地址为所述第一内存映射图和所述第二内存映射图之一的地址。根据另一方面,本公开提供一种计算装置的内存子系统,所述内存子系统包括:双列直插式内存模块(dimm),所述dimm包括:内存接口,所述内存接口被配置成耦合至计算装置的系统内存控制器;以及dimm内存控制器,所述dimm内存控制器被配置成映射dimm内存空间,所述系统内存控制器可通过所述内存接口使用所述dimm内存空间;以及级联的远端内存模块,各远端内存模块分别提供远端内存空间,其中所述级联的远端内存模块耦合至所述dimm,并使得所述dimm内存空间至少是相应的远端内存空间的累积总和。附图说明图1示出根据一个实施例的可扩展内存子系统。图2示意性地示出根据另一实施例的可扩展内存子系统。图3a、图3b和图3c示意性地示出图2的内存子系统的累积内存空间。图4示出根据一个实施例的配置可扩展内存子系统的方法。图5a和图5b示出根据一个实施例的使用可扩展内存子系统操作的方法。图6示意性地示出根据一个实施例的dimm内存控制器的地址映射。图7示意性地示出根据另一实施例的地址映射到第一远端内存空间。图8示意性地示出根据另一实施例的地址映射到第二远端内存空间。图9示意性地示出地址映射到第二远端内存空间的上游的内存空间。图10示出根据一个实施例的可扩展内存dimm。图11示出根据一个实施例的远端内存模块,用于与图10中的可扩展内存dimm连接。图12示出包括多个内存dimm的可扩展内存子系统,其中至少一个内存dimm是图10中的可扩展内存dimm。图13示出与图11中的远端内存模块耦合的图10中的可扩展内存dimm。图14示意性地示出对应于图13中的可扩展内存子系统的内存空间。具体实施方式将容易理解的是,除了在此描述的示例实施例之外,如在本文的附图中一般地描述和示出的,实施例的组件可以以多种不同的配置来布置和设计。因此,结合附图所代表的示例实施例的以下更详细的描述并非旨在限制所要求保护的实施例的范围,而仅是示例实施例的代表。本说明书通篇中对“一个实施例”,“另一实施例”或“实施例”(或类似的)是指结合该实施例描述的特定特征、结构,或特性被包括在至少一个实施例。因此,贯穿本说明书在各个地方出现的短语“在一个实施例中”或“在实施例中”等不一定都指代相同的实施例。此外,所描述的特征、结构,或特性可以在一个或多个实施例中以任何适合的方式组合。在以下描述中,提供了许多具体细节以提供对实施例的详尽理解。相关领域的技术人员将认识到,在没有一个或多个具体细节的情况下,或在其他方法、组件、材料等的情况下,可以实施各种实施例。在其他情况下,一些或所有已知的结构、材料或操作可以未详细显示或描述以避免混淆。一种计算装置包括:计算装置的主板上的中央处理单元(centralprocessingunit,cpu)。该cpu配备有操作系统,用于执行指令和/或操控数据。该cpu可以通过外设组件互连标准(peripheralcomponentinterconnectexpress,pcie)总线或其他合适的总线耦合到固态驱动器和/或硬盘驱动器。计算装置可以被视为一个计算节点。为了与网络中的另一计算节点进行通信,计算装置被配置成通过网络协议传送数据。网络协议的示例包括传输控制协议/网际协议(transmissioncontrolprotocol/internetprotocol,tcp/ip)网络协议和远端直接内存访问(remotedirectmemoryaccess,rdma)网络协议。cpu还可以被配置成担任系统内存控制器的功能。可替代地,计算装置可以另外提供一个被配置成管理内存子系统的系统内存控制器。内存子系统界定并管理可以被cpu使用的一个或多个内存空间。内存子系统使得数据(包括指令)能够在内存空间临时存储,以致cpu可以执行指令和/或操控数据。内存子系统可以包括一个内存双列直插式内存模块(内存dimm)或多个内存双列直插式内存模块。每个内存dimm包括布置在印刷电路板上的多个动态随机存取存储器(dram)。沿着印刷电路板的一个边缘是多组接触件。每组接触件通向内存dimm的相应dram。印刷电路板的边缘可以被在主板上的内存dimm插槽/槽容纳。内存dimm插槽/槽耦合到系统内存控制器。以这种方式,系统内存控制器可以直接访问相应的dram。可以理解,内存dimm上的dram的数量受到可容纳在沿着印刷电路板的边缘的接触件的数量以及相应的内存dimm插槽/槽的长度的限制。由于物理限制,计算装置提供数量有限的内存dimm插槽/槽。每个内存dimm插槽/槽均配置成容纳一个内存dimm,因此在常规内存子系统中,cpu可用的最大内存空间受物理约束的限制。为了克服现有技术的困难,本发明提供一种适合于与计算装置使用的可扩展内存子系统。根据本公开的实施例,如图1所示,计算装置100可以包括系统内存控制器102,其中系统内存控制器被配置成管理可扩展内存子系统101。系统内存控制器可以是集成电路(ic)芯片的形式,作为与cpu103分开的装置,或者系统内存控制器可以形成cpu芯片的一部分。该cpu可以包括一个或多个处理器核、处理器高速缓存、总线或互连、逻辑、内存控制器和/或其它部件。可扩展内存子系统被配置成存储数据(包括指令),以供cpu使用。例如,系统内存控制器可以将数据缓存在内存空间中,以加快访问速度。在一些实施例中,内存空间由插入或可插入到内存dimm连接器110中的至少一个可扩展内存双列直插式内存模块(可扩展内存dimm)120提供。内存dimm连接器的一个示例是配置用于双倍数据速率(ddr)插槽/槽。标准内存dimm插槽/槽,例如复合电子器件工程联合委员会(jointelectrondevicesengineeringcouncil,jedec)标准的一个,可以不经过修改而与用本发明的实施例一起使用。在一些实施例中,可扩展内存dimm包括适用于将可扩展内存dimm与内存dimm连接器耦合的第一接口121。将理解的是,计算装置中提供的标准内存dimm连接器可以容纳根据本公开的实施例的可扩展内存dimm,或者它可以容纳常规的内存dimm。还应当理解,随着变化的或新的标准,本公开的可扩展内存dimm可以与已变化的或新的标准的内存dimm连接器可操作地耦合,以用作内存子系统的一部分,而不会超出本公开要求保护的范围。这有利地为常规计算装置被升级成具有可扩展内存子系统作好准备,而无需替换现有的系统内存控制器或现有的内存dimm连接器。应当理解,根据本公开实施例的可扩展内存dimm还可以被配置成用于与其它标准的或非标准的连接器可操作地耦合,用于与系统内存控制器进行通信。可扩展内存dimm120包括安装到印刷电路板122的动态随机存取存储器(dram)123。可扩展内存dimm的dram共同提供基本内存空间。当可扩展内存dimm被耦合至系统内存控制器102时,可扩展内存dimm向系统内存控制器提供基本内存空间,其中,基本内存空间表现为可扩展容量之一。可扩展内存dimm包括第二接口124,包括第二接口124被配置成与远端内存模块130耦合。远端内存模块被配置成提供第一远端内存空间。可扩展内存dimm和远端内存模块被配置成使得对于系统内存控制器而言,可通过dimm连接器/第一接口110、121访问的内存空间是包括基本内存空间和第一远端内存空间在内的累积总内存空间。换言之,可扩展内存dimm可以被配置成向系统内存控制器提供总的可扩展内存dimm空间,其中可以更改系统内存控制器可访问的总内存空间,而无需增加计算装置中的内存dimm插槽/槽的数量。系统内存控制器可以经由内存总线通过内存dimm接口将数据(包括指令)发送到可扩展内存dimm。内存总线可以遵循标准(例如ddr4)或另一预先设定的协议。换句话说,系统内存控制器和耦合至系统内存控制器的内存dimm连接器在它们可以与本公开的可扩展内存dimm一起使用之前,不需要对它们进行特别调整。为了帮助理解,可以同时参照图2、图3a至图3c。可扩展内存子系统200的又一个实施例可以包括多个内存空间212、222、232,分别由可扩展内存dimm210和远端内存模块220、230提供或界定,可扩展内存dimm210和远端内存模块220、230相互耦合在如图所示的级联201中。为了方便参考,级联的“下游”端是指可扩展内存dimm210所在的端。或者,级联下游引导至系统内存控制器202。例如,在一些实施例中,可扩展内存dimm不通过第二接口(图3a)与另一内存模块耦合。由系统内存控制器202所感知的总的可扩展内存dimm空间301与由可扩展内存dimm210贡献的基本内存空间212是相同的。在一些实施例中,如在图3b的示例中,可扩展内存dimm210还包括第二接口/第一扩展接口231。可扩展内存dimm可以通过第一扩展接口231与第一远端内存模块220耦合。可扩展内存dimm和第一远端内存模块可以根据扩展内存总线通过第一扩展接口进行通信。第一扩展接口231可以被认为是上游接口(相对于可扩展内存dimm210)的一个示例,并且可扩展内存dimm向上游与第一远端内存模块220通信。在如图3b所示的该示例中,仅有一个远端内存模块220和一个可扩展内存dimm210耦合至系统内存控制器202。第一远端内存模块被配置成提供第一远端内存空间贡献222。由可扩展内存dimm呈现到系统内存控制器,或由系统内存控制器在内存dimm接口211处所感知的总的可扩展内存dimm空间300'是基本内存空间贡献212和第一远端内存空间贡献222的累积总和或聚合。在一些实施例中,如图3c示意性地所示,可扩展内存dimm210通过第一扩展接口231根据扩展内存总线与第一远端内存模块220耦合,以进行通信,并且第一远端内存模块220还通过第二扩展接口241(根据扩展内存总线)与第二远端内存模块230耦合。第二内存模块提供第二远端内存空间贡献232。在这样的情况下,总的可扩展内存dimm空间300'是基本内存空间贡献212、第一远端内存空间贡献222以及第二远端内存空间贡献232的累积总和或聚合。在一些实施例中,可扩展内存dimm通过第一扩展接口(根据扩展内存总线)与第一远端内存模块耦合;第一远端内存模块还通过第二扩展接口(根据扩展内存总线)与第二远端内存模块耦合;第二远端内存模块还通过第三扩展接口(根据扩展内存总线)与第三远端内存模块耦合。第三内存模块提供第三远端内存空间。在这些示例中,可扩展内存dimm总空间是基本内存空间、第一远端内存空间、第二远端内存空间和第三远端内存空间的聚合。可扩展内存dimm因此可以被配置成与n个远端内存模块耦合,并且总的可扩展内存dimm空间可以是基本内存空间和所有的n个远端内存空间的聚合。在一些实施例中,第n个远端内存模块可通过第n个扩展接口耦合至第(n-1)个远端内存模块(下游)。第n个远端内存模块被配置成将数据向下游传递到第n-1个远端内存模块,并最终到可扩展内存dimm和到系统内存控制器。第n个远端内存模块还可以通过第(n+1)个扩展接口耦合至第(n+1)个远端内存模块(上游)等等。根据第n个远端内存模块,上游内存容量将表现为所有上游的远端内存模块的所有内存容量的总和(即:最大内存大小)。根据本公开的实施例,每个内存模块(包括可扩展内存dimm以及级联内存模块中的任何远端内存模块)都将上游内存空间(如果有)感知为一个内存空间,尽管上游内存空间是多个上游内存空间的聚合。每个内存模块被配置成向下游的下一个内存模块提供内存空间,该内存空间包括在上游感知的内存空间及其自身的内存空间。向下游呈现的内存空间是否等于或大于内存模块贡献的内存空间,取决于该内存模块是否耦合至上游的至少一个内存模块。因此,在本文中,术语“内存空间”和“内存空间贡献”可互换使用,以指代被下游感知/向下游提供的内存空间,因为下游内存控制器不会意识到上游的配置。现在将参照图4描述配置具有可扩展内存dimm的系统的一种示例性方法。可扩展内存dimm可以包括dimm内存控制器。在该方法400中,当系统通电时,发生开机自检(power-onself-test,post)初始化401。计算装置可以被配置成执行以下操作作为post的一部分。计算装置可以被配置成首先确定耦合至内存总线的装置是否为可扩展内存dimm402。如果耦合至内存总线的装置不是可扩展内存dimm,则系统内存控制器通过内存dimm接口可用的总内存空间等于由不可扩展内存dimm的内存空间提供的总内存空间。内存dimm将向系统内存控制器提供总内存映射图,其中总内存映射图将仅包括内存dimm403上实际可用的内存空间。如果系统内存控制器通过内存dimm接口耦合至可扩展内存dimm,在初始化404时可扩展内存dimm将确定至少一个第一远端内存模块是否被耦合至第一扩展接口405。如果dimm内存控制器确定可扩展内存dimm未与至少一个第一远端内存模块耦合,则dimm内存控制器将向系统内存控制器提供与基本内存空间(映射图)403相等的总的可扩展内存dimm空间(映射图)。因此,可以理解,不需要将系统内存控制器配置成以在不可扩展内存dimm和可扩展内存dimm之间进行区分。因此,为了避免混淆,在本文中,关于通过内存dimm接口提供给系统内存控制器的总内存空间,术语“总的内存dimm空间”和“总的可扩展内存dimm空间”是可互换使用的术语。dimm内存控制器可以被配置以确定可扩展内存dimm是否耦合到至少一个远端内存模块。如果可扩展内存dimm通过第一扩展接口耦合到至少一个远端内存模块(第一远端内存模块),则dimm内存控制器提供复位信号以复位第一远端内存模块406。该触发或等效触发使得第一远端内存模块经历初始化。在存在耦合至第一远端内存模块的第二远端内存模块的情况下,复位信号还将使得第二远端内存模块经历初始化。第一远端内存模块包括第一远端内存控制器,其中第一远端内存控制器被配置成确定另一个远端内存模块(第二远端内存模块)是否耦合至第一远端内存模块。即,第一远端内存控制器被配置成确定另一个远端内存模块是否耦合至第一扩展接口。第一远端内存控制器被配置成使得,如果第一远端内存模块未与第二远端内存模块耦合,第一远端内存控制器将以内存映射图答复dimm内存控制器407,内存映射图仅包括在第一远端内存模块上的内存位置。由第一远端内存模块提供的内存空间被称为第一远端内存空间。第一远端内存控制器被配置成使得,如果第一远端内存模块与第二远端内存模块耦合,第一远端内存控制器将查询410第二远端内存模块的第二远端内存控制器。作为响应,第二远端内存控制器向第一远端内存控制器提供答复409,其中该答复将第二远端内存空间通知给第一远端内存控制器4072。第一远端内存控制器被配置成将第二远端内存空间与第一远端内存空间聚合。该聚合的内存空间存储在第一远端内存控制器中。第一远端内存控制器可以被配置成使得其存储聚合内存空间,直到接收到复位信号(或刷新指令)为止408。因此,第一远端内存模块被配置成使得当第一远端内存模块与第二远端内存模块耦合时,第一远端内存控制器将向dimm内存控制器提供内存空间(映射图),该内存空间(映射图)由第一远端内存空间和第二远端内存空间的聚合形成。应当理解,当第二远端内存模块耦合至第一远端内存模块,而且未耦合至任何其他远端内存模块时,由第二远端内存控制器呈现给第一远端内存控制器的内存空间只是第二远端内存空间。在第二远端内存模块“下游”耦合至第一远端内存模块(即通过第一扩展接口)并且还“上游”耦合至第三远端内存模块(即通过第二扩展接口)的情况下,由第二远端内存控制器呈现给第一远端内存控制器的内存空间是第二远端内存空间和第三远端内存空间的聚合。在一个或多个附加远端内存模块耦合至第二远端内存模块的上游的情况下,由第二远端内存控制器呈现给第一远端内存控制器的内存空间是在第一远端内存空间上游的相应内存空间(包括第二远端内存空间)的聚合。术语“上游”和“下游”是在相对意义上地使用。因此,当第一远端内存模块通过接口与第二远端内存模块耦合时,该接口可以在第一远端内存模块的上游,并且相同的接口在第二远端内存模块的下游。如果在初始化时有n个远端内存模块耦合至系统,则远端内存模块的初始化可以从第n个远端内存模块开始,即:相对于可扩展内存dimm在逻辑上最远离的或远离的远端内存模块。级联内存模块可以被配置成使得向上游传递复位信号到第n个远端内存模块408。然后远端内存空间的大小是从第n个远端内存模块聚合或级联下降到第一远端内存模块,以答复409指向上游的查询410/407n。因此,第一远端内存模块(或逻辑上直接与可扩展内存dimm耦合的远端内存模块)能够向可扩展内存dimm提供远端内存空间411的内存映射图。根据一些实施例,dimm内存控制器被配置成在查询第一远端内存控制器之后确定或界定总内存空间405’。根据一些实施例,dimm内存控制器可以在未查询第一远端内存控制器的情况下确定或界定总内存空间。在两种情况下,dimm内存控制器均可配置成计算总内存空间,并将总内存空间提供给系统内存控制器。可替代地,或附加地,在一些实施例中,dimm内存控制器可以由用户编程,使得dimm内存控制器反映通过内存dimm接口可用的总内存空间。可替代地,或附加地,在一些实施例中,系统内存控制器可以由用户编程,使得系统内存控制器可用的总内存空间是已知的。初始化后,系统内存控制器将内存总线处的内存空间感知为一个总内存空间。系统内存控制器可以将内存总线处的内存空间感知为一个总内存空间,尽管该总内存空间实际上是可扩展内存dimm空间(基本内存空间)、第一远端内存空间和第二远端内存空间等的聚合。不管直接地和/或间接地耦合至可扩展内存dimm的物理装置的确切数量如何,系统内存控制器都会将一个可扩展内存dimm的可用内存空间感知为一个内存空间。系统内存控制器可以保持不知道耦合至可扩展内存dimm的内存的数量和类型。将参考图5a和图5b描述与可扩展内存dimm一起操作的一种示例性方法500。还可以参考图6至图9,图6至图9示意性地示出可以使用该方法实施的不同配置的示例。在内存子系统中,系统内存控制器向可扩展内存dimm(诸如上述的一个)501提供第一地址601。可以相对于从/向内存位置检索或保存的数据(包括指令)提供第一地址。第一地址被确定成系统内存控制器感知的总内存空间内的地址。在本文中,“一个地址被确定成某个内存空间内的地址”以及“一个地址基于某个内存空间而确定”可互换使用,例如,第一地址可以基于系统内存控制器感知的总内存空间而被确定。系统内存控制器不需要知道第一地址是指向在内存dimm的基本内存空间630中的内存位置还是指向在远端内存空间640中的内存位置。系统内存控制器不需要知道总内存空间是仅由基本内存空间630提供还是由聚合内存空间610提供。聚合内存空间(如果有)可以包括远端内存空间640和基本内存空间630,和/或远端内存空间自身是聚合内存空间。可选地,系统内存控制器不需要在物理上位于可扩展内存dimm的内存位置与物理上位于远端内存模块或其他地方的内存位置之间进行区分。可扩展内存dimm包括dimm内存控制器,dimm内存控制器在接收到第一地址时(第一地址被确定成总内存空间内的地址,或第一地址基于总内存空间而被确定),使用第一地址确定第一地址是否落在可扩展内存dimm502、503的基本内存空间内。例如,如图6所示,第一地址可以是与可扩展内存dimm上的一个dram中的内存位置631相对应的地址。如果在基本内存空间中发现第一地址,则dimm内存控制器可以继续从/向基本内存空间504中的内存位置读取/写入,其中内存位置是对应于第一地址的位置。dimm内存控制器可以通过执行查找或转换第一地址来执行确定第一地址是否对应于基本内存空间中的地址。执行确定的一个示例为使用地址转换表(addressconversiontable,act)或内存映射图,其中总内存空间中的每个第一地址可以被映射到基本内存空间中的地址,或被映射到远端(聚合)内存空间中的第二地址。可扩展内存dimmact可以被配置在dimm内存控制器自身中。或者,可扩展内存dimmact可以被提供在设置在可扩展内存dimm上的其他内存装置中。可扩展内存dimmact可以存储在dram或非易失性内存(non-volatilememory,nvm)中。在一些示例中,如图7所示,可扩展内存dimmact可以被配置成映射或转换505第一地址601到第二地址641,并且第二地址没有被发现在基本内存空间中,而是被发现在基本内存空间630上游的远端(聚合)内存空间640中。可扩展内存dimm的可扩展内存dimmact可以被配置使得,如果第二地址没有被发现在基本内存空间中,dimm内存控制器仅知道在远端(聚合)内存空间640中发现第二地址641,而无需区分哪个远端内存空间(如果有多个可用的远端内存空间)。如果dimm内存控制器确定第二地址落在远端内存空间内,则dimm内存控制器将第二地址提供给第一远端内存控制器505。如果第一远端内存模块未耦合至其自身上游的至少一个其他远端内存模块,则由第一远端内存控制器接收的第二地址641应当对应于在第一远端内存空间740(图8)中的内存位置741。如果第一远端内存模块耦合至自身上游的至少一个远端内存模块,则第一远端内存控制器使用第二地址确定第二地址是否被发现在第一远端内存空间740中,或者第二地址是否被发现在第一远端内存空间上游的远端(聚合)内存空间840中。第一远端内存控制器可以被配置成通过执行查找或转换第二地址506执行这种确定。执行确定的一个示例可以涉及使用第一远端地址转换表(act),其中每个由第一远端内存控制器接收的第二地址可以被映射到第一远端内存空间中的地址,或被映射到第一远端内存空间上游的远端(聚合)内存空间中的第三地址。第一远端act可以配置在第一远端内存dimm控制器自身。可替代地,可以在设置在第一远端内存模块上的其他的内存装置中提供第一远端act。第一远端act可以存储在dram或非易失性内存(nvm)中。如果第一远端内存控制器确定第二地址落在第一远端内存空间507内,则第一远端内存控制器使得能够进行从/到第一远端内存空间508中对应的内存位置的读取/写入操作(图8)。如果从第一远端内存空间中的相应内存位置检索数据,则数据通过第一扩展接口509传递回可扩展内存dimm。系统内存控制器将通过内存总线从可扩展内存dimm接收数据,就像数据已存储在可扩展内存dimm自身的内存位置中一样。因此,系统内存控制器将可扩展内存dimm的总内存空间感知为比单独的可扩展内存dimm上物理可用的内存空间更大的内存空间(基本内存空间和第一远端内存空间的聚合)。如果第一远端内存控制器确定第二地址落在第一远端内存空间上游的远端(聚合)内存空间,第一远端内存控制器可以将第二地址转换为第三地址510。第三地址被确定成第一远端内存空间740上游的远端(聚合)内存空间840内的地址。第三地址基于第一远端内存空间740上游的远端(聚合)内存空间840而被确定。第二地址是基于更大的内存空间而确定的地址,其中更大的内存空间包括第一远端内存空间和第一远端内存空间上游的远端(聚合)内存空间。第一远端内存控制器可以被配置成向第二远端内存控制器提供第三地址,其中第二远端内存控制器在第一远端内存控制器510的上游。第二远端内存控制器可以布置在第一远端内存模块上游的第二远端内存模块上。第二远端内存模块通过第二扩展接口耦合至第一远端内存模块。即,第一远端内存控制器和第二远端内存控制器通过第二扩展接口耦合以彼此通信。在一个示例中,第二远端内存模块未耦合至其自身上游的另一个远端内存模块,第二远端内存控制器可以使用第三地址查找第二远端内存空间840中的内存位置,其中第二远端内存空间是物理提供在第二远端内存模块511上的一个空间。在又一个示例中,第二远端内存模块(其具有第二远端内存空间)与第二远端内存模块上游的至少一个其他远端内存模块耦合,第二远端内存控制器被配置成确定第三地址是对应于第二远端内存空间中的内存位置还是对应于第二远端内存空间上游的内存位置。如果第二远端内存控制器在第二远端内存空间中发现对应的内存位置,则第二远端内存控制器从/向对应的内存位置512读取/写入数据。如果从相应的内存位置读取数据,则数据将通过第二扩展接口从第二远端内存模块传递到第一远端内存模块,然后通过第一扩展接口从第一远端内存模块传递到可扩展内存dimm513。因此,系统内存控制器可以从可扩展内存dimm接收数据,就像数据已经存储在可扩展内存dimm中而不是存储在远端内存模块中一样。从基本内存空间还是从远端内存空间读取或写入数据对系统内存控制器是透明的。从第一远端内存空间还是第二远端内存空间读取或写入数据对系统内存控制器是透明的。如果第二远端内存控制器确定第三地址(第三地址从第一远端内存控制器接收到)不对应于第二远端内存空间740上的内存位置,则第二远端内存控制器执行查找或将第三地址转换为第四地址。第二远端内存控制器可以使用第二远端地址转换表(第二远端act)将第三地址转换为第四地址。在该示例中,第三地址被确定成包括第一聚合内存空间以及第一远端内存空间上游的所有远端内存空间的聚合的内存空间内的地址;而第四地址被确定成包括第一远端内存空间上游的所有远端内存空间的聚合但是不包括第一远端内存空间的内存空间的地址。在第二远端内存控制器确定第三地址对应于第二远端内存模块上游的某个远端内存模块中的内存位置841时,第二远端内存控制器将第三地址转换为第四地址,并传递第四地址到第三远端内存控制器,其中第三远端内存控制器是第三远端内存模块的一部分,并且第三远端内存模块在第二远端内存模块的上游(图9)。尽管以上描述了涉及多达三个远端内存模块的配置,但是可以理解,可以以上述方式提供和配置更多的远端内存模块。一般而言,内存模块包括内存控制器,内存控制器被配置成将第一地址转换为第二地址,其中第一地址被确定成第一内存空间内的地址,第二地址被确定成第二内存空间内的地址。第一内存空间包括第二内存空间。第一地址通过内存模块的下游接口提供。第二地址通过内存模块的上游接口提供。内存模块被配置成提供内存空间,内存模块包括内存控制器,该内存控制器被配置成从上游内存模块接收上游内存映射图,并向下游内存模块提供下游内存映射图,其中,上游内存映射图对应于一个或多个上游内存空间的聚合,并且其中下游内存映射图对应于上游内存映射图和内存空间的聚合。内存空间自身可以是内存空间和/或存储空间的聚合。内存控制器还被配置成:当不存在耦合至内存模块的上游内存模块时,提供与内存映射图相对应的下游内存映射图。内存模块还被配置成通过上游接口与上游内存模块通信。远端内存模块还被配置成通过下游接口与下游内存装置通信。可选地,远端内存模块可以一系列地相互耦合,使得由各个远端内存控制器界定的各个内存空间向下游级联。在一系列相互耦合的远端内存模块中,所选远端内存模块的远端内存控制器将界定远端内存空间,该远端内存空间包括至少所选远端内存模块上游的远端内存空间的级联或累积总和。远端内存空间是在下游方向级联或累积的,使得远端内存空间(由相应的远端内存控制器界定)随着与可扩展内存dimm模块的距离增加而增加。作为一个示例,并且如图10所示,根据本公开的一个实施例的计算装置包括可扩展内存dimm1010,可扩展内存dimm1010被配置成通过内存dimm接口1020,例如符合标准的dimm插槽/槽,耦合至主机cpu1000。可扩展dimm可以包括沿着印刷电路板的第一边缘的接触件组,该第一边缘和接触件组被配置用于耦合至内存dimm插槽/槽。可扩展内存dimm配备有可扩展内存控制器1030和总线1021/1022。主机cpu和可扩展内存控制器通过ddr-t内存总线和系统管理总线1022通信。可扩展内存控制器被配置成并入串行存在检测(serialpresencedetect,spd)功能1031。可扩展内存dimm可以包括固件闪存1032,该固件闪存1032通过串行外围接口总线与dimm内存控制器通信。可扩展内存dimm还可以包括电池1034(可以是超级电容器的形式)和电源管理集成电路(powermanagementintegratedcircuit,pmic)1035。pmic可以与dimm内存控制器耦合以实现独立于主机cpu的dimm上的电源管理。dimm内存控制器和pmic可以被配置成根据集成电路间(inter-integratedcircuit,i2c)总线协议进行通信。可扩展内存dimm配备有扩展内存接口1040,扩展内存接口1040适合于与远端内存模块1100耦合。扩展内存总线可以类似于可扩展内存dimm与系统内存控制器之间的内存dimm总线进行配置。扩展内存总线被配置成传送包括指令、地址和串行存在检测(spd)信息的数据。可扩展内存dimm包括至少一个动态随机存取存储器(dram)1050。至少一个dram在物理上体现内存位置,这些内存位置共同形成由可扩展内存dimm单独提供的内存空间。即,布置在可扩展内存dimm上的内存装置共同提供基本内存空间。dimm内存控制器被配置成提供包括基本内存空间的内存映射图。dimm内存控制器可以被配置成提供总内存空间或聚合内存空间的内存映射图给主机cpu,其中内存映射图包括基本内存空间和通过扩展内存接口接收或检索的远端内存映射图。可扩展内存dimm包括地址转换表(act)1060。该act可以存储在指定的dram中,或者可以存储在闪存中。或者,act可以存储在dimm内存控制器中。如图11所示,根据本公开的一个实施例的远端内存模块1100包括设置在远端内存模块上的远端内存控制器1110。远端内存模块可以包括远端地址转换表(远端act)1160。远端act可以是远端内存控制器的一部分,也可以是单独的ic芯片。可以将远端act复制到闪存或非易失性(永久)内存1162。远端内存模块还可以配备有电池和电源管理电路1164。远端内存模块还包括第一扩展接口1120,第一扩展接口1120适合于如上所述的远端内存模块和可扩展内存dimm之间是可操作的耦合。远端内存模块还可以包括第二扩展接口1121,第二扩展接口1121适合于耦合至另一个远端内存模块1122。所述远端内存模块1100可以包括第一扩展接口和第二扩展接口,第一扩展接口被配置成耦合下游内存模块,诸如上述的可扩展内存dimm,第二扩展接口被配置成耦合上游内存模块。所述远端内存模块1100还可以与其它远端内存模块耦合,使得第一扩展接口耦合到下游远端内存模块,并且第二扩展接口耦合到上游远端内存模块。所述远端内存模块1100可以包括一个或多个内存/存储装置。一个或多个内存/存储装置可以从包括dram1131、闪存1132和存储驱动器1133(固态和/或硬盘)的组中选择。远端内存控制器被配置成访问相应的内存装置和/或存储装置,使得远端内存控制器可以界定远端内存空间,该远端内存空间包括设置在远端内存模块上或耦合至远端内存模块的相应内存和/或存储装置的内存空间。远端内存模块还可以配备有网络接口电路1123,远端内存控制器可以通过该网络接口电路1123访问云存储和/或网络存储装置,使得云存储和/或网络存储的内存空间显示为远端内存空间的一部分。换句话说,远端内存控制器被配置成界定或提供远端内存空间。远端内存空间对应于在/耦合至远端内存模块上的内存和/或存储装置中的内存位置。如图12所示,根据本公开的一个实施例的内存子系统1200包括通过扩展接口1221与远端内存模块1220耦合的可扩展内存dimm1210。在该示例中,远端内存模块提供由安装到远端内存模块的多个dram共同提供的远端内存空间。远端内存模块可以配备有其它类型的内存和/或存储装置,包括但不限于可以通过云和/或其它网络被远端内存控制器访问的另一个存储设备。所述另一个存储设备可包括内存装置、内存模块和/或任何一类存储器。在一个可扩展的内存子系统,主机/计算装置1240的系统内存控制器1230可以通过第一内存dimm接口1211与至少一个可扩展内存dimm1210耦合,并且同时,系统内存控制器通过第二内存dimm接口1251与至少一个常规内存dimm1250耦合。图12还示出可扩展内存子系统,其中系统内存控制器与多个内存dimm耦合,多个内存dimm中的至少一个是可扩展内存dimm。系统内存控制器可以访问总的可扩展内存空间,总的可扩展内存空间容量(最大可用内存和/或存储空间)可以根据用户要求变化,总的可扩展内存空间可以通过多个内存dimm中被选择的一个访问。具体地,总的可扩展内存空间被配置成可通过可扩展内存dimm访问。图13和图14示出可扩展内存子系统1300的一个示例,其中系统内存控制器1301通过内存dimm接口1303耦合至可扩展内存dimm1302,并且可扩展内存dimm通过扩展接口1321耦合至远端内存模块1320。内存子系统的总内存空间1400包括基本内存空间1410和远端内存空间1420。在该示例中,远端内存空间1420是多个dram内存空间1421、1422,固态驱动器(solid-statedrive,ssd)存储空间1423,以及网络存储空间1424的聚合。网络存储空间可以通过电缆或无线地提供给远端内存模块,作为局域网、广域网、云存储等的一部分。远端内存控制器1322可以通过网络接口电路1324访问网络存储空间。远端内存模块被配置成将物理网络存储装置的存储/内存容量视为聚合内存空间的一部分。聚合内存空间转而还可以通过可扩展内存控制器与基本内存空间聚合,使得系统内存控制器将网络存储空间感知为内存dimm空间的一部分。指向网络存储空间上的内存位置的第二地址1452可以由远端内存控制器分配。第二地址可以被确定成远端内存空间1420内的地址。当第二地址被传递到dimm内存控制器时,dimm内存控制器将第二地址映射到第一地址1450。第一地址被确定成总内存空间1400内的地址,其中总内存空间是远端内存空间1420和基本内存空间1410的聚合。基本内存空间由设置在可扩展内存dimm上的内存装置(诸如dram)提供。基本内存空间自身可以是聚合内存空间。从dimm内存控制器传递到系统内存控制器的地址是第一地址,即:在总内存空间内的地址。在此示例中,总内存空间包括基本内存空间和远端内存空间,其中远端内存空间自身是各种内存和/或存储空间的聚合,包括但不限于设置在远端内存模块上的内存和/或存储装置提供的空间。每个内存和/或存储空间可通过内存总线在内存子系统的级别被访问,而无需通过计算装置的cpu。因此,为了访问/使用超越直接的内存dimm扩展的内存空间,系统内存控制器仅需要到总(聚合)内存空间的内存映射图。如本文所用,除非另外明确说明,否则单数“一”和“一个”可以解释为包括复数“一个或多个”。已经出于说明和描述的目的呈现本公开,但是并不旨在穷举或限制。对于本领域普通技术人员而言,许多修改和变化将是显而易见的。选择并描述示例实施例是为了解释原理及实际应用,并且使本领域普通技术人员能够理解本公开的各种实施例,其具有适合于预期的特定用途的各种修改。因此,尽管这里已经参考附图描述说明性示例实施例,但是应该理解,该描述不是限制性的,并且本领域普通技术人员可以在其中进行各种其他改变及修改而不脱离本公开的范围或精神。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1