与标准存储器模块管脚兼容的存储器模块中的独立可控制和可重新配置的虚拟存储器设备的制作方法

文档序号:6750003阅读:223来源:国知局
专利名称:与标准存储器模块管脚兼容的存储器模块中的独立可控制和可重新配置的虚拟存储器设备的制作方法
技术领域
本发明实施例涉及存储器模块,并且具体地,涉及被配置为允许包括一个或多个存储器芯片的单独虚拟存储器设备的独立控制的存储器模块。
背景技术
在现代计算机系统中,对于存储器容量和带宽的需求保持增长。微处理器的近来的性能扩展取决于增加每芯片内核的数量,并且多核和很多内核的单芯片多处理器 (“CMP”)通过每处理器多个存储器控制器而要求甚至更高的存储器带宽和容量。主存储器模块的功率预算与当前计算机系统中的处理器的功率预算相似,或者甚至高于当前计算机系统中的处理器的功率预算。然而,典型的存储器模块是能量低效的。例如,每存储器访问激活太多比特,并且被访问的多数比特在未使用的情况下被存储回去,浪费了动态功率。通过利用访问模式的局部性,可以通过编译器或存储器控制器组合多个时间上邻近的存储器访问,以便每存储器激活使用更多的比特。但这些努力在具有不规则访问模式的应用中获得有限的成功。由于来自多个线程的独立存储器访问请求是交错的,因此这种方法的效率受到一般应用中的存储器访问的随机性质的限制并且在CMP存储器系统中甚至恶化。期望的是在不明显地牺牲系统性能的情况下节省能量的使得能够对信息进行访问的存储器系统。

发明内容
本发明各个实施例涉及多核存储器模块。在一个实施例中,存储器模块包括存储器芯片;以及多路分配器(demultiplexer)寄存器,其电子地连接到每一个所述存储器芯片和存储器控制器。所述存储器控制器根据变化的性能和/或能量效率需求将所述存储器芯片中的一个或多个分组为至少一个虚拟存储器设备。所述多路分配器寄存器被配置为 接收标识所述虚拟存储器设备中的一个的命令,并且将所述命令发送到标识的虚拟存储器设备的存储器芯片。在特定实施例中,所述存储器芯片可以是动态随机存取存储器芯片。


图IA示出具有八个存储器芯片的存储器模块的等距视图。图IB示出电路板上安装的存储器模块和存储器控制器的等距视图。图2示出构成存储器芯片的八个存储体(bank)的示意性表示。图3A示出传统存储器模块的示意性表示。图;3B示出将命令广播到传统存储器模块的所有存储器芯片的示例。图4A示出根据本发明实施例配置的单个多核存储器模块的等距视图。图4B示出根据本发明实施例的电路板上安装的多核存储器模块和存储器控制器的等距视图。图5A-图5E示出根据本发明实施例配置的多核双列直插(dual in-line)存储器模块和关联的多路分配器寄存器的一般示意性表示。图6A-图6C示出根据本发明实施例配置的具有存储器模块的第一配置的示例性多核双列直插存储器模块和关联的多路分配器寄存器的示意性表示。图7A-图7B示出根据本发明实施例的图6所示的多核双列直插存储器模块的两个不同VMD配置的示意性表示。图8示出根据本发明实施例的包括16个存储器芯片的多核双列直插存储器模块的示意性表示。图9示出根据本发明实施例的用于控制存储器模块并且配置虚拟存储器设备的方法的控制流程图。图10示出以根据本发明实施例的图4所示的多核双列直插存储器模块替换图1 所示的标准双列直插存储器模块。
具体实施例方式本发明各个实施例涉及存储器模块,所述存储器模块可以被重新配置为改进存储器系统的能量效率而对计算机系统性能有小的影响。术语“性能”指的是计算机系统完成的有用功的量对比用于完成该功的资源的数量和时间量。性能度量包括带宽和延时。例如,具有高带宽和低延时的计算机系统比具有较低带宽和较高延时的系统具有相对更高的性能。存储器模块包括可以划分为一个或多个存储器芯片的组的存储器芯片。所述组被称为“虚拟存储器设备”(“VMD”)。每一 VMD具有其自身的数据路径,并且可以以时分复用方式通过共享的命令路径接收分离的存储器请求。VMD的数量和构成每一 VMD的存储器芯片的数量可以在引导时间期间选择,在应用的运行时间期间动态地变化,或者由计算机系统操作者确定。换句话说,可以改变和选择每存储器访问的存储器芯片的数量,以平衡性能与能量效率需求。存储器模块也可以被配置为与许多存储器模块标准管脚兼容。换句话说,用于支持传统存储器模块的相同存储器插槽也可以用于支持本发明的存储器模块。如下组织详细描述。在第一子部分描述传统存储器模块和关联的能量低效的一般描述。在第二子部分提供存储器模块实施例的描述。存储器模块和访问存储器中的能量低效
存储器模块典型地包括形成被称为“双列直插存储器模块”(“DIMM”)的存储单元的印制电路板上安装的若干DRAM芯片。图IA示出包括八个DRAM芯片的单个DIMM的等距视图。 然后在电路板上安装一个或多个DIMM,并且由存储器控制器控制该一个或多个DIMM。图IB 示出电路板106上安装的存储器102和存储器控制器104的等距视图。存储器102由插入四个DIMM插槽112-115的四个DIMM 108-111组成。存储器控制器104可以是计算机芯片或多核微处理器芯片的部分,其管理发送到DIMM 108-111以及从DIMM 108-111发送的命令和数据流,并且将存储器102与计算机系统的其他主要组件(例如中央处理单元)对接。 每一 DIMM经由接口 118与存储器控制器104进行电通信。接口 118是载送从存储器控制器104到存储器102的时钟信号和命令以及DMM 108-111与存储器控制器104之间的数据信号的总线。数据信号在DIMM 108-111中的DRAM芯片与存储器控制器104之间。接口 118可以支持单数据率(“SDR”)、双数据率(“DDR”)以及更高的数据率传送。SDR指的是每时钟周期发送数据一次,以及DDR指的是在计算机系统时钟信号的上升沿和下降沿都发送数据。存储器控制器104和DMM 108-111可以被配置为根据SDR和DDR发送并且接收数据。在DDR中通过使用时钟的两个沿,数据信号在相同的极限频率操作,相比单数据率传输使得数据传输率加倍。DRAM芯片将比特存储在由晶体管和电容器组成的被称为DRAM存储器单元的结构中。单个DRAM芯片中存在数十亿个单元,以及可以以被称为“存储体”的许多二维阵列的二维布置组织这些单元。图2示出构成DRAM芯片200的标为0_7的八个存储体的示意性表示。如图2的示例中所示,每一存储体经由交叉信号线连接到行解码器、感测放大器以及列解码器。例如,存储体0经由与χ轴平行走线的信号线(例如信号线204)连接到行解码器202。存储体0还经由与y轴平行走线的信号线(例如信号线210)连接到感测放大器 206和列解码器208。存储器单元位于信号线交点处。例如,存储器单元212位于信号204 和210交叉的点处。从存储器控制器104发送到存储器102的命令包括READ(读)、WRITE(写)、ACTIVATE (激活)、REFRESH (刷新)和PRECHARGE (预充电)。命令由控制信号和地址信号组成。控制信号表示命令执行的操作,以及地址信号标识在其执行命令的DRAM芯片中的存储体地址和行地址或列地址。例如,ACTIVATE命令由激活控制信号和标识在DRAM芯片内的哪个存储体和行执行ACTIVATE命令的存储体地址和行地址组成。READ和WRITE命令由读取和写入控制信号以及标识在DRAM芯片中的哪个存储体和列执行READ和WRITE命令的存储体地址和列地址组成。READ和WRITE命令也称为“存储器请求”。在两个步骤中访问DRAM芯片200的存储体中存储的数据。首先,存储器控制器 (未示出)发送指定DRAM芯片200的行地址和存储体地址的ACTIVATE命令。将典型地是存储体的8K比特或16K比特的行中的所有比特激活到存储体内的感测放大器中。其次,发送指定存储体地址和列地址的一个或多个READ/WRITE命令。数据总线的大小和突发长度确定每READ/WRITE事务传送的比特的数量。突发长度是控制在数据块的单个突发事务或高速传输中执行的READ/WRITE操作的数量的常见的存储器有关的基本输入/输出系统设置。 典型地,将突发长度设置为4或8。当DRAM芯片接收到存储器请求(例如存储器READ请求) 时,芯片通过跨接口 118的信号线提供数据来进行响应。突发长度确定响应于存储器READ 请求发送的数据块的大小。具有64比特宽的数据总线(即64个单端信号线或1 个差分信号线)和被配置为支持4的突发长度的DRAM芯片的存储器模块响应于来自存储器控制器的单个READ请求发送32字节(4x64比特=32字节)的数据块。另一方面,具有64比特宽的数据总线和被配置为支持8的突发长度的DRAM芯片的存储器模块响应于来自存储器控制器的单个READ请求发送64字节(8x64比特=64字节)的数据块。当在DRAM芯片的同一存储体中的两个不同行中读取数据时,在可以读取第二行中的数据之前,必须写回第一行,对位线充电,以及通过PRECHARGE命令以及ACTIVATE命令锁存第二行。PRECHARGE命令将该行写回到DRAM存储体,因为ACTIVATE命令破坏性地读取,所以这是必须的。在READ命令、WRITE命令、ACTIVATE命令和PRECHARGE命令中,存储体地址由小数量的比特给出。在同一存储体中,在第一 ACTIVATE和第二 ACTIVATE命令之间,这些命令操作一般花费大约50ns。因此,除非ACTIVATE命令与PRECHARGE命令之间存在很多READ/WRITE命令,否则命令/地址/数据总线经常保持空闲。然而,如果在不同存储体中读取数据,则因为两个不同存储体之间的ACTIVATE至ACTIVATE时间短了大约8ns, 所以可以流水线化到不同存储体的命令。因此,通过交错不同存储体中的请求可以实现更高的吞吐量,当ACTIVATE和PRECHARGE命令对之间不存在很多READ/WRITE命令时尤其如此。图3A示出包括其中每一个具有8比特数据总线的8个DRAM芯片的传统DMM 300 的示意性表示。方向箭头302表示从存储器控制器(未示出)发送到称为寄存器302的可选设备的命令的分送。寄存器304位于存储器控制器与DRAM芯片之间的总线上。寄存器 304锁存来自存储器控制器的命令信号,然后以更好的信号质量和定时裕度将它们转发到每一 DRAM芯片,以减少存储器控制器上的电负载并且保持命令信号的稳定性。寄存器304 也可以缓冲命令,并且将时钟信号广播到DRAM芯片,以在每存储器控制器具有多个DIMM的系统中促进对不同DIMM的交叠访问。寄存器304通过总线将命令广播到所有8个DRAM芯片,如通过分支方向箭头306和308指示的那样。在其它传统存储器模块中,将命令广播到 DRAM芯片而不用寄存器304。图:3B示出传统DIMM操作的示例。如图的示例中所示,DIMM 300内的所有DRAM 芯片从存储器控制器接收相同命令,并且激活阴影区域310表示的每一 DRAM芯片中的相同行。结果,DIMM 300内的所有DRAM芯片充当具有更宽数据路径和更大行的单个DRAM芯片。如上参照图2描述的那样,DRAM芯片行的大小典型地是8 (或16K比特)。为了读取缓存线或者将缓存线写入DIMM,将READ/WRITE命令广播到所有DRAM芯片,并且每一 DRAM芯片激活相同行。换句话说,在由8个DRAM芯片组成的典型DIMM中,每一 DRAM芯片激活包括8K比特的相同行地址。因此,一次激活DI匪的DRAM单元的8x8K比特或64Κ比特,其大于待读取或写入的缓存线的大小。典型缓存线在64字节或512比特的量级。因为典型地使用少于1%的激活的DRAM单元在一个缓存线中读取和写入READ和WRITE命令,所以对于单个READ或WRITE事务未使用超过99%的激活的DRAM单元,这是能量的低效使用。本发明实施例
本发明的存储器模块实施例包括用于从存储器控制器接收命令的多路分配器寄存器 (“多路分配器寄存器”)。存储器芯片与多路分配器寄存器一起安装在印制电路板上,以形成被称为“多核双列直插存储器模块”(“MCDIMM”)的单个存储单元。每一存储器芯片与多路分配器寄存器进行电通信。在特定实施例中,存储器芯片可以是DRAM芯片。图4A示出根据本发明实施例的包括印制电路板412上安装的八个DRAM芯片401-408和多路分配器寄存器410的单个MCDIMM 400的等距视图。DRAM芯片401-408中的每一个经由分离的信号线集合(未示出)与多路分配器寄存器410电通信。该信号线的集合构成使得多路分配器寄存器410能够将命令单独发送到DRAM芯片401-408中的每一个的命令总线。一个或多个MCDIMM可以安装在电路板上,并且由存储器控制器控制。图4B示出根据本发明实施例的电路板418上安装的存储器414和存储器控制器416的等距视图。存储器414包括分别插入DIMM插槽424-427的MCDIMM 420-423。接口似8电子地连接存储器控制器416与存储器模块420-423的多路分配器寄存器。接口 4 包括将命令信号从存储器控制器416载送到存储器414的总线以及在存储器控制器416与存储器414之间载送数据信号的数据总线。在该架构中,不向存储器414的DRAM芯片广播从存储器控制器416发送的命令。相反,存储器控制器416将存储器配置命令(“CONFI⑶RE命令”)发送到MCDI匪 420-423的多路分配器寄存器,所述存储器配置命令嵌入有指定哪些DRAM芯片构成VMD的指令。换句话说,存储器控制器416将一个或多个DRAM芯片分组为每一 VMD,以服务存储器请求。每一 VMD具有其自身的数据总线,用于独立地将数据传送到存储器控制器416并且从存储器控制器416传送数据。在已经根据CONFI⑶RE命令配置VMD之后,存储器控制器 416可以开始将表示存储器请求的命令发送到MCDI匪420-423的VMD。在其它实施例中, 两个或更多个CONFI⑶RE命令的序列可以用于改变MCDIMM的配置。随着每存储器模块的VMD的数量的增加,每数据访问消耗的能量减少。然而,与具有更少VMD相比,增加VMD的数量增加了提取相同量的数据所需的时间量,因为随着每VMD 的存储器芯片的数量的减少,数据总线的宽度减小。存在可以确定VMD的配置的多个方式。 在一个实施例中,可以在机器引导时间期间选择每存储器模块的VMD的数量。例如,操作系统可以维持通常在计算机系统上运行的特定应用的存储器和能量使用的历史。然后操作系统可以在引导时间调整VMD的数量,以平衡系统性能与能量效率。在另一实施例中,在应用的运行时间期间,VMD的数量可以动态地改变。例如,在应用正运行的同时,应用可以能够监控计算机系统性能和能量效率并且根据能量效率需求调整VMD的数量以满足改变的存储器要求。在另一实施例中,计算机系统操作者可以监控计算机系统的性能和能量效率,并且相应地改变VMD的数量。在所有三种情况下,可以在性能的优先级高于能量效率的优先级的情况下减少VMD的数量,在能量效率的优先级高于性能的优先级的情况下增加VMD的数量,或者可以周期性地调整VMD的数量,以在性能与能量效率之间达到平衡。在特定实施例中,计算机系统中的所有存储器模块可以被配置有相同数量的VMD。 在其它实施例中,每一存储器模块可以被配置有不同数量的VMD,并且VMD可以具有不同数量的存储器芯片。图5A-图5E提供根据本发明实施例的相同MCDMM的存储器芯片的两个不同分组的一般示意性表示。图5A示出根据本发明实施例的包括多路分配器寄存器502和第一配置的VMD的 MCDIMM 500的一般示意性表示。MCDIMM 500包括η个存储器芯片,其中,η是整数。在图5A 中,“MC”表示并且标记η个存储器芯片中的八个,并且每一个包括表示整数的小写索弓丨。在特定实施例中,存储器芯片可以是DRAM芯片。图5Α还揭示存储器芯片被分组为N个VMD, 其中,N是整数。VMD中的四个被表示在图5Α中,并且由VMDk标记,其中,下标K是范围从0 到N-I的整数。例如,如图5Α所示,VMD0包括MCtl至MCg,VMDk和VMDK+1分别包括MCh至MCi 以及MCj至MCk,以及VMDim包括MCv至MClri,其中,g、h、i、j、k和m是满足条件0彡g <h 彡i < j彡k < m彡n-1的整数。每一存储器芯片经由信号线电子地连接到多路分配器寄存器502。例如,方向箭头504-511分别表示将多路分配器寄存器502电子地连接到MC。、MCg, MCh, MCi, MCj, MCk, MCn^nMClri的信号线的分离集合。信号线的集合构成命令总线。存储器控制器(未示出)基于操作系统、应用或计算机系统操作者提供的指令选择VMD的数量,以及特别地,每VMD的存储器芯片的数量。存储器控制器初始地通过被称为“命令路径”的信号线512的集合将 CONFI⑶RE命令直接发送到多路分配器寄存器502。CONFI⑶RE命令包括指导多路分配器寄存器502分组存储器芯片(如图5A所示)的指令。VMD均具有包括至少个比特的关联的VMD地址。后续存储器请求命令包括VMD地址。例如,当存储器控制器发送表示对 VMD0的存储器请求的命令时,存储器控制器在命令内嵌入VMDtl的地址。当多路分配器寄存器502接收到该命令时,多路分配器寄存器502将命令转发到VMDtl的存储器芯片。例如, MCtl和MCg是构成VMDtl的存储器芯片中的两个,其通过信号线504和505的集合从多路分配器寄存器502接收命令。每一个VMD在图5A中由DQ以及双头箭头(例如双头箭头514)标识的分离数据总线上与存储器控制器交换数据。可以若干不同方式配置多路分配器寄存器502。图5B示出根据本发明实施例配置的多路分配器寄存器516的示意性表示。多路分配器寄存器516包括标为0至n-1的η个命令选择器(对于图5Α所示的η个存储器芯片中的每一个都有一个命令选择器)以及广播总线518。命令选择器经由支路520-528电子地连接到广播总线518,以及每一命令选择器经由构成以上参照图5Α描述的命令总线的信号线504-511的集合连接到一个或多个存储器芯片。在图5C中,用图5Α所示的对应存储器芯片的索引标记也在图5Α中示出的信号线 504-511的集合。存储器控制器在图5Α所示的命令路径512上发送时分复用的命令。换句话说,每一命令被编码在比特流中,并且在固定持续时间时隙中从存储器控制器发送到多路分配器寄存器516。在图5Β中,由一系列矩形531-534表示时隙。每一个命令包括图5Α 中意欲接收命令的VMD的索引。由存储器控制器确定将命令发送到多路分配器寄存器516 的顺序。因此,命令以该顺序出现在图5Β中。命令内嵌入的是标识要执行的特定种类的操作的控制信号、标识存储体、行或列的地址信号、以及存储器控制器分配的VMD地址。将发送到多路分配器寄存器516的每一命令广播到所有η个命令选择器。每一命令选择器被配置为提取命令中嵌入的VMD地址,以确定是否要把命令转发到VMD的对应存储器芯片,或者该命令是否寻址到不同的VMD,在命令寻址到不同的VMD的情况下,丢弃该命令。因此,对于广播到所有η个命令选择器的每一命令,仅由命令选择器将该命令发送到构成存储器控制器选择的VMD的存储器芯片。例如,多路分配器寄存器516接收命令N-I 531并且将其广播到所有η个命令选择器0至n-1。然而,因为命令N-I 531包括VMD1^1的地址,所以命令选择器m至n-1通过包括信号线510和511的信号线的集合536将命令N-I 531发送到VMDim的对应存储器芯片。注意,在处理后续命令之前,在特定时间间隔内,多路分配器寄存器516还分离地处理每一命令。图5C示出根据本发明实施例配置的命令选择器m的示意性表示。相似地配置其它n-1个命令选择器。命令选择器m包括VMD地址控制M0、配置寄存器M2、寄存器/计数器544和随机存取存储器(“RAM”)定时控制M6。在支路5 上将命令输入到命令选择器m,也如图5B所示。VMD地址控制540提取每一命令中嵌入的VMD地址。配置寄存器M2 存储连接到信号线510的VMDim的当前VMD地址,如图5A所示。配置寄存器542接收时钟信号,以确定何时将VMDim的VMD地址锁存到VMD地址控制MO。VMD地址控制MO比较提取的VMD地址与VMDim的VMD地址,并且当提取的VMD地址匹配于VMD1^1的地址时将选择信号发送到寄存器/计数器M4。寄存器/计数器542是当在每一上升和/或下降时钟沿从 VMD地址控制540接收到选择信号时临时存储命令并且将命令发送到对应存储器MCm的缓冲器。寄存器/计数器544包括计数器。当VMD的DRAM芯片不能支持与缓存线的READ 或WRITE事务关联的长突发长度时,需要计数器。多路分配器寄存器将缓存线划分为缓存线片段,并且将命令转换为多个命令,每一命令与缓存线片段对应。因此,计数器发送的对应命令在发送到VMD的每一缓存线片段之前。例如,当不能将VMD的一个或多个DRAM芯片的突发长度设置得足够长以覆盖缓存线时,计数器将列级别命令(例如READ或WRITE)转换为用于每一缓存线片段的若干READ/WRITE命令,从而可以分离地从DRAM芯片READ每一缓存线片段或将每一缓存线片段WRITEN到DRAM芯片。每一计数器包括跟踪为划分的缓存线生成的命令的数量的计数设备。计数器执行的转换节省来自存储器控制器的命令带宽。RAM 定时控制548控制寄存器/计数器546的计数器部分。通过将第二 CONFI⑶RE命令从存储器控制器发送到多路分配器寄存器502,可以改变图5A所示的MCDI匪500的N个VMD的配置。第二 CONFI⑶RE命令嵌入有指导多路分配器寄存器502根据存储器需求的不同集合分组VMD的指令,所述存储器需求可以在不同引导时间期间选择、在应用的运行期间或在应用启动的稍后时间点选择、或由计算机系统操作者选择。图5D示出根据本发明实施例的具有第二配置的VMD的MCDIMM 500的一般示意性表示。MCDIMM 500包括相同η个存储器芯片,但如图5D所示,存储器控制器已经重新配置 VMD的数量和每VMD存储器芯片的数量。特别地,改变八个存储器芯片中的四个的索引,以表示构成VMD的存储器芯片的不同分组。在图5D中,存储器芯片分组为M个VMD,其中,M 是与数N不同的整数。VMD中的四个在5D中被表示,并且由VMD’ L标记,其中,下标L是范围从0到M-I的整数。将图5D中的存储器芯片的分组与图5A中的存储器芯片的分组进行比较发现,VMD'。包括MCtl至Mcs,其中,整数s与整数g不同;VMD’ L和VMD’ L+1分别包括存储器芯片MCt至MCi以及MCj至MCU,其中,t和u与h和k不同;以及VMD,包括MCv至MClri, 其中,整数ν与整数m不同。方向箭头550-553分别表示将多路分配器寄存器502电子地连接到MCS、MC0MCu和MCv的信号线的分离集合。除了第二 CONFI⑶RE命令重新配置每一命令选择器的配置寄存器之外,多路分配器寄存器516基本上保持不变,并且以如以上参照图5B描述的相同方式操作。图5E示出如以上参照图5B描述的那样配置的第二多路分配器寄存器516。如以上参照图5B描述的那样,将发送到多路分配器寄存器530的每一命令广播到所有η个命令选择器。每一命令选择器的VMD地址控制被重新配置为提取图5D所示的命令中嵌入的VMD地址,以确定是否将命令转发到VMD的对应存储器芯片,或者该命令是否寻址到不同VMD,在该命令寻址到不同VMD的情况下,丢弃该命令。例如,多路分配器寄存器516接收命令M-I 561并且将其广播到所有η个命令选择器0至η-1。然而,因为命令M-I 561包括VMDsh的VMD地址,所以命令选择器ν至η-1通过包括信号线565和511的信号线的集合562将命令M-I 571发送到VMDsh的对应存储器芯片。其余命令选择器丢弃命令M-I 561。典型的READ或WRITE命令是与在VMD的若干存储器芯片上散布数据关联的存储器请求。根据变化的性能和能量效率需求重新配置VMD而不恢复在先前配置下已经存储在 MCDIMM中的数据将使得数据不可检索。因此,本发明的方法实施例包括在重新配置存储器模块的VMD之前,取得VMD中已经存储的数据,并且将其临时存储在另一存储器设备中。 在已经重新配置VMD之后,在具有新VMD配置的存储器模块中再次存储数据。如上所述,可以选择存储器芯片到VMD的若干不同分组,以适应基于性能和/或能量效率需求所需的存储器的量的改变。以上参照图5A和图5D描述的存储器芯片是具有与多路分配器寄存器516的命令选择器的一对一映射的单个存储器芯片。然而,本发明实施例不限于此。在其它实施例中,可以存在比存储器芯片少的命令选择器。例如,图5中的存储器芯片MQ、MCg, MCh, MCi, MCj, MCk, MCm和MClri可以表示与单个命令选择器电通信的两个或更多个存储器芯片的栈。以下是具有8或16个DRAM芯片的示例性MCDIMM的描述,描述可以如何根据本发明的实施例重新配置VMD。图6A示出根据本发明实施例配置的MCDMM 600的示意性表示。如图6A所示, MCDIMM 600包括多路分配器寄存器602和8个VMD,其中每一个VMD包括标为0_7的单个 DRAM芯片。VMD的这个第一配置可以是评估在引导时间、在应用的运行期间的时间点所需的或者由计算机系统操作者选择的存储器的量的结果。方向箭头604-611表示分别将DRAM 0-7中的每一个与多路分配器寄存器602电子连接的信号线的八个分离的集合。在命令路径612上将命令从存储器控制器(未示出)发送到多路分配器寄存器602。根据Iog2N,其中N等于8,DRAM 0-7中的每一个分别可以被分配三比特地址000、001、010、011、100、101、 110和111中的一个。DRAM芯片0_7中的每一个通过命令总线的信号线的对应集合接收不同的命令,并且经由DQ和双头箭头(例如双头箭头614)表示的其自身的数据总线独立于其它DRAM芯片传送数据。该MCDMM可以支持的VMD的最大数量N是8,其也是多路分配器寄存器602所需的命令选择器的数量。图6B示出可以代替多路分配器寄存器602使用以支持具有8个VMD 的MCDMM 600的包括标为0-7的命令选择器和广播总线618的多路分配器寄存器616。每一命令被广播到所有8个命令选择器。在图6B中,与命令关联的每一时隙由包括意欲接收命令的图6A中的DRAM芯片的索引的矩形表示。每一命令选择器被配置为提取命令中嵌入的VMD地址,以确定是否将命令转发到连接的DRAM芯片,或者命令是否寻址到不同的DRAM 芯片并且丢弃。例如,多路分配器寄存器616接收其目的地是DRAM芯片5的命令5 620, 并且在广播总线618上将其广播到所有8个命令选择器。因为命令5 620包括DRAM芯片 5的地址,所以命令选择器5在信号线的集合609上将命令5 620发送到DRAM芯片5,并且其它命令选择器丢弃命令5 620。图6C示出根据本发明实施例配置的命令选择器5的示意性表示。该描述涉及具有等于8的最大数量N的VMD的实施例。因此,在命令中使用3 ( Iog2S )比特地址000、 001、010、011、100、101、110和111以分别标识每一 DRAM芯片0-7。命令选择器5包括VMD 地址控制622、寄存器/计数器624、RAM定时控制6 和配置寄存器628。相似地配置其它命令选择器。在支路630上将命令输入到命令选择器5,也如图6B所示。VMD地址控制622 还包括AND门632、三个OR门633-635、以及反相器636。VMD地址控制622提取每一命令的VMD地址部分。标识为A2、Al和AO的三个地址信号线每个载送提取的三比特VMD地址的一个比特。信号线Al上的比特穿过反相器636。配置寄存器拟8在信号线B2、Bl和BO 上输出三个比特,其中,A2和B2是OR门633的输入,Al和Bl是OR门634的输入,以及AO 和BO是OR门6;35的输入。OR门633_6;35的输出C2、C1和CO是AND门632的输入。当所有输入信号与比特“1”对应时AND门632输出与比特“1”对应的信号,以及当输入信号中的至少一个与比特“0,,对应时AND门632输出与比特“0,,对应的信号,其中,比特“ 1,,和“0,, 可以分别表示信号的高电压和低电压。另一方面,OR门633-635中的每一个仅当所有输入是“0”时输出比特“0”,以及当输入中的至少一个是比特“1”时输出比特“1”。反相器将比特“ 1,,转换为比特“0 ”,并且反之亦然。在该实施例中,VMD配置寄存器6 保持比特掩码(具有与VMD地址相同数量10&N 的比特),以在确定其中其驻留的命令选择器是否是构成进入命令中指定的VMD的选择器之一时使用。掩码中的“0”比特使得VMD地址的(相同位置中的)对应比特有效,而掩码中的 “ 1,,比特使得VMD地址的对应比特无效或“不在乎,,,意味着该VMD地址比特对命令选择器的输出没有影响。对于图6A所示的VMD配置,配置寄存器628总是在信号线B2、Bl和BO 上输出VMD地址比特。例如,假设提取的VMD地址包括比特101,其为DRAM芯片5的3比特VMD地址。反相器536将线Al上载送的信号的电压反相。因此,反相器536之后的A2、 Al和AO信号线载送比特111,以及OR门633-635的输出线将比特111载送到AND门632。 AND门632通过将表示比特“1”的选择信号输出到寄存器/计数器6M进行响应,寄存器/ 计数器拟4当时钟指示时将命令锁存到信号线的集合609。对于其它地址,因为配置寄存器 628输出比特000,所以进入AND门632的比特流包括至少一个“0”比特。因此,AND门632 不输出信号或输出与比特“0”对应的低信号,并且寄存器/计数器拟4不将命令锁存到信号线的集合609。返回图6A,每存储器访问请求仅涉及一个DRAM芯片。DRAM芯片0_7的阴影区域表示与不同命令关联的不同独立存储器请求。每一 DRAM芯片在命令总线上接收命令,并且使用其自身的数据总线独立地传送数据。因此,激活更少比特,节省用于激活和预充电的能量。然而,为了传送数据,可以将数据划分为更小的数据串行化部分,其中,每一部分从DRAM 芯片被分离地发送到存储器控制器。与通过较大数据总线发送数据相比,串行化数据增加了发送数据所需的时间量。这个串行化延时问题可能对系统性能具有负面影响。操作系统、 应用或监控系统的计算机系统操作者可以确定通过增加特定VMD中的存储器芯片的数量可以减少传送数据所需的时间。因此,如以上参照图5A-图5E描述的那样,本发明实施例使得操作系统、应用或计算机系统操作者能够通过将MCDIMM 600重新配置成具有带有两个或更多个DRAM芯片的组的VMD来减缓串行化延时问题。通过将CONFI⑶RE命令从存储器控制器(未示出)发送到多路分配器寄存器602, 改变如图6A所示的MCDIMM 600的VMD的配置。CONFI⑶RE命令嵌入有指导每一命令选择器的配置寄存器根据存储器需求的不同集合分组VMD的指令。存储器需求可以是结果改变存储器要求,所述要求在应用的运行期间确定(可以在应用的运行期间的时间点选择)、根据与应用关联的存储器要求的历史在引导时间期间确定、或由监控MCDMM 600的性能和能量效率的计算机系统操作者确定。变化的存储器需求可以是在平衡存储器模块的性能和能量效率中的改变的结果。注意,在重新配置MCDMM 600时,取得在图6A所示的VMD配置下已经存储在 MCDIMM 600中的数据,并且将其临时存储在不同存储设备中。在重新配置MCDIMM 600之后,将临时存储的数据写入重新配置的MCDMM 600。图7A示出具有DRAM芯片0-7的MCDIMM 600的示意性表示,其中DRAM芯片0_7 被分组为分别标识为具有VMD地址00、01、10和11的VMD’ VMD' ^ VMD' 2和VMD' 3的4个 VMD。VMD中的每一个包括两个DRAM芯片。VMD中的每一个经由QD和双头箭头(例如双头箭头702)表示的其自身的数据总线独立于其它VMD传送数据。为了按该配置使用MCDIMM 600,存储器控制器将CONFI⑶RE命令发送到多路分配器寄存器602。多路分配器寄存器602通过将配置寄存器重新配置有新的比特掩码进行响应。多路分配器寄存器602以如以上参照图6B-图6C描述的相同方式将具有存储器请求的后续命令发送到VMD。例如,发送到 VMD'工的命令包括VMD'工的VMD地址。多路分配器寄存器602接收命令,并且将命令仅发送到DRAM芯片2和3,如以上参照图6B-图6C描述的那样。对于图7A所示的VMD配置,配置寄存器6 总是在信号线B2、B1和BO上输出VMD 地址。命令选择器0-7中的每一个中的配置寄存器也是这样。线AO和BO载送VMD地址的位置或最右位置中(in the ones or right-most position)的比特,并且被称为最低有效位(“LSB”)。LSB输入到OR门635。当从配置寄存器628输出的LSB是“1”时,忽略LSB VMD地址比特。例如,当从配置寄存器6 输出的LSB是“1”时,寄存器/计数器624当提取的VMD地址是100或101时从AND门632接收选择信号。前两个比特10与VMD’ 2的VMD 地址对应。在MCDIMM处于该配置中时,VMD地址的LSB被忽略,并且无论如何没有什么影响。注意,在其中MCDIMM 600操作为传统DI匪并且所有DRAM芯片构成单个VMD的其它实施例中,向每一命令选择器的配置寄存器发送指导命令选择器0-7的配置寄存器输出比特111的CONFI⑶RE命令。在该配置中,VMD地址控制622生成的选择信号总是“ 1”。VMD不限于具有相同数量的存储器芯片。VMD可以被重新配置有不同数量的存储器芯片。图7B示出根据本发明实施例的具有分组为四个VMD的DRAM芯片的MCDMM 600 的示意性表示。如图7B所示,DRAM芯片0-3分组为VMD、,DRAM芯片4_6分组为VMD"1;以及VMD"2和VMD"3分别包括DRAM芯片6和7。图6C所示的命令选择器的实施例在存储器控制器的控制下通过允许在命令选择器的配置寄存器中存储不同比特掩码来允许该情况。图8示出根据本发明实施例的包括电子地连接到多路分配器寄存器802的标为 0-15的16个DRAM芯片的MCDMM 800的示意性表示。多路分配器寄存器802包括8个命令选择器,其中,每一命令选择器电子地连接到一对DRAM芯片。例如,命令选择器0电子地连接到一对DRAM芯片0和8。每一对DRAM芯片表示DRAM芯片栈。每一对堆叠的DRAM芯片的数据线连接在一起,并且地址比特在它们两个之间进行选择。图9示出根据本发明实施例的用于控制并且重新配置存储器模块的VMD的方法的控制流程图。在步骤901中,创建具有用于配置存储器模块的VMD的指令的CONFIGURE命令,并且将其从存储器控制器发送到存储器模块。在步骤902中,根据CONFIGURE命令配置多路分配器寄存器的配置寄存器,如以上参照图5C-图5E以及图6-图7描述的那样。在步骤903的for循环中,对于每一存储器请求重复步骤903-908。在步骤904中,存储器控制器准备要由其中一个VMD接收的命令,方式是通过将该VMD的地址编码在该命令。在步骤 905中,存储器控制器将命令发送到存储器模块的多路分配器寄存器。多路分配器寄存器通过命令路径接收命令,如以上参照图5A描述的那样。在步骤906中,多路分配器寄存器确定哪个VMD将要接收命令,如以上参照图5B-图5C描述的那样。在步骤907中,多路分配器寄存器选择信号线的适当集合,以将命令发送到该VMD,如以上参照图5B-图5C描述的那样。在步骤908中,可以监控每一存储器请求,并且收集关于性能和能量效率的信息,以评估当前VMD配置是否提供足够的存储并且满足能量效率需求。在步骤909中,当VMD配置无法提供足够的性能和/或能量效率需求时,方法进入步骤910,否则,方法进入步骤911。 在步骤910中,由操作系统在引导时间、由应用在应用的运行时间期间,或者由计算机系统操作者确定不同的VMD配置。在步骤911中,方法返回步骤901,并且重复步骤901-909。在其它实施例中,MCDIMM可以被配置为与DI匪标准管脚兼容。术语"DI^标准” 指的是位于DMM接口的管脚的数量。例如,特定DMM可以被配置有168个管脚,且其它 DIMM可以被配置有184个管脚。存储器控制器可以被配置为检测并且使用以上参照图5-图 8描述的所有不同的VMD配置,并且被配置为检测并且使用以上参照图3描述的标准DIMM。 当MCDIMM与现有DIMM管脚兼容时,不需要新的存储器插槽标准。通过将MCDIMM插入标准的管脚兼容的DIMM插槽,MCDIMM可以简单地替代现有DIMM。典型地,DRAM芯片和DIMM标准保留比在DRAM芯片中指定位置所需比特更多的地址比特。这些附加比特的部分可以用于在MCDMM内指定一个或多个VMD,这牺牲了 DIMM标准支持的最大DRAM容量。为了检测 MCDIMM的VMD的类型和数量,其中一个DRAM芯片中嵌入的模式寄存器可以扩展为对该信息进行编码。此外,存储器模块中的分离的管脚可以专用于将信息从模式寄存器发送到存储器控制器。因此,在特定实施例中,存储器控制器可以检查每个存储器模块并且确定存储器模块是否是标准DIMM (例如DIMM 108-111),或者存储器模块是否是具有多个不同的固定的或可重新配置的VMD的MCDIMM。在其它实施例中,存储器控制器可以被配置为使用Iog2N 个地址比特作为VMD地址,导致不会损失地址范围。图10示出以根据本发明实施例的图4A所示的MCDIMM 400替代图1所示的DI匪 109。如图10所示,MCDIMM 400与DIMM 108-111管脚兼容,并且因此,DIMM 109可以被移除,以及将MCDIMM 400插入到DIMM插槽113。当存储器控制器104被配置为检测并且使用用于MCDIMM 400的所有不同VMD配置时,MCDIMM 400可以将关于VMD的地址和数量的信息发送到存储器控制器104。存储器控制器104然后可以开始操作MCDIMM 400,如以上参照图6-图8描述的那样。然而,存储器控制器104也可以被配置为仅使用DIMM 108,110 和111,如以上参照图3描述的那样。在其它实施例中,不支持MCDIMM 400的使用的存储器控制器104可以以与标准DIMM 108-111相同的方式使用MCDIMM 400。为了解释的目的,前面的描述使用特定词汇来提供本发明的透彻理解。然而,本领域技术人员应理解,为了实践本发明,并不需要具体细节。给出本发明具体实施例的前面描述,目的是进行说明和描述。它们并非意欲穷尽本发明或者将其限制为所公开的精确形式。 显然,根据以上教导,很多修改和变化是可能的。示出并且描述实施例,以最佳地解释本发明的原理及其实际应用,由此使得本领域其他技术人员能够最佳地利用本发明以及具有适于所考虑的特定使用的各个修改的各个实施例。本发明的范围意欲由所附权利要求及其等同物所定义。
权利要求
1.一种存储器模块(500),包括存储器芯片;以及多路分配器寄存器(502),其电子地连接到所述存储器芯片中的每一个和存储器控制器,其中,所述存储器控制器根据变化的性能和/或能量效率需求将所述存储器芯片中的一个或多个分组为至少一个虚拟存储器设备,以及所述多路分配器寄存器被配置为接收标识所述虚拟存储器设备中的一个的命令并且将所述命令发送到标识的虚拟存储器设备的存储器芯片。
2.如权利要求1所述的存储器模块,其中,所述存储器控制器根据操作系统、应用或计算机系统操作者提供的指令将所述一个或多个存储器芯片分组为该至少一个虚拟存储器设备。
3.如权利要求1所述的存储器模块,其中,所述存储器芯片还包括动态随机存取存储器芯片(401-408)。
4.如权利要求1所述的存储器模块,其中,以时分复用方式将所述命令从所述存储器控制器发送到所述多路分配器寄存器,从而每一命令在固定持续时间间隔内到达所述多路分配器寄存器并且被发送到所述命令中标识的虚拟存储器设备。
5.如权利要求1所述的存储器模块,其中,所述存储器控制器根据变化的性能和/或能量效率需求将所述存储器芯片中的一个或多个分组为至少一个虚拟存储器设备还包括所述存储器控制器生成从所述存储器控制器发送到所述多路分配器寄存器的配置命令。
6.如权利要求5所述的存储器模块,其中,所述配置命令还包括指导所述多路分配器寄存器将所述至少一个虚拟存储器设备重新配置成具有所述存储器模块的一个或多个不同存储器芯片的指令。
7.如权利要求1所述的存储器模块,其中,所述多路分配器寄存器还包括至少一个命令选择器,每一命令选择器电子地连接到所述存储器芯片中的一个;以及广播总线(532),其被配置为将命令广播到所述至少一个命令选择器,其中,每一命令选择器被配置为提取所述命令中嵌入的存储器地址,并且当所述地址匹配于连接的存储器芯片的地址时将所述命令转发到连接的存储器芯片,否则所述命令选择器丢弃所述命令。
8.如权利要求6所述的存储器模块,其中,所述命令选择器还包括AND门(544),其被配置为从所述命令提取所述存储器芯片地址,并且当所述地址匹配于连接的存储器芯片的地址时生成选择信号;寄存器/计数器(546),其被配置为当所述AND门提供所述选择信号时接收所述命令并且将其发送到连接的存储器芯片,否则所述寄存器/计数器丢弃所述命令;以及RAM定时控制(548),其控制缓存线和所述命令到更小缓存线片段的划分。
9.如权利要求1所述的存储器模块,电子地连接到所述存储器芯片中的每一个的多路分配器寄存器(502)还包括在所述多路分配器寄存器与所述存储器芯片之间布置的命令总线,其中,所述命令总线包括将所述存储器芯片中的每一个连接到所述多路分配器寄存器 (502)的信号线(504-511)的分离集合。
10.如权利要求1所述的存储器模块,其中,所述存储器模块被配置为与DIMM标准管脚兼容。
11.一种用于控制存储器模块的方法,包括 提供根据权利要求1配置的存储器模块;配置(901)包括至少一个存储器芯片的至少一个虚拟存储器设备; 将命令从所述存储器控制器发送(904)到所述存储器模块的多路分配器寄存器,所述命令标识所述至少一个虚拟存储器设备的存储器芯片;将所述命令从所述多路分配器寄存器发送(906)到在所述命令中标识的所述至少一个虚拟存储器设备的该至少一个存储器芯片;以及基于能量效率需求和/或系统性能的改变重新配置(908)所述至少一个虚拟存储器设备。
12.如权利要求11所述的方法,还包括在存储器控制器处准备(903)命令,以包括所述至少一个虚拟存储器设备的地址。
13.如权利要求11所述的方法,其中,配置所述至少一个虚拟存储器设备还包括以下中的一个在应用的运行时间期间确定每虚拟存储器设备需要的存储器芯片的数量; 在引导期间确定每虚拟存储器设备需要的存储器芯片的数量;以及由计算机系统操作者确定每虚拟存储器设备需要的存储器芯片的数量。
14.如权利要求11所述的方法,其中,重新配置所述至少一个虚拟存储器设备还包括 在重新配置所述至少一个虚拟存储器设备之前,临时存储所述至少一个虚拟存储器设备中已经存储的数据,以及然后将所述数据存储在该至少一个重新配置的虚拟存储器设备中。
全文摘要
本发明各个实施例涉及多核存储器模块。在一个实施例中,存储器模块(500)包括存储器芯片;以及多路分配器寄存器(502),其电子地连接到每一个所述存储器芯片和存储器控制器。所述存储器控制器根据变化的性能和/或能量效率需求将所述存储器芯片中的一个或多个分组为至少一个虚拟存储器设备。所述多路分配器寄存器(502)被配置为接收标识所述虚拟存储器设备中的一个的命令,并且将所述命令发送到标识的虚拟存储器设备的存储器芯片。在特定实施例中,所述存储器芯片可以是动态随机存取存储器芯片。
文档编号G11C8/00GK102177551SQ200880131477
公开日2011年9月7日 申请日期2008年8月8日 优先权日2008年8月8日
发明者N·P·朱皮, R·S·施赖伯, 安廷镐 申请人:惠普开发有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1