一种扩展内存的方法、内存节点、主节点及系统的制作方法

文档序号:6401848阅读:183来源:国知局
专利名称:一种扩展内存的方法、内存节点、主节点及系统的制作方法
技术领域
本发明涉及计算机硬件领域,尤其涉及到一种扩展内存的方法、内存节点、主节点及系统。
背景技术
在计算机系统中,存储器可谓是决定整机性能的关键因素之一。随着微电子技术的飞速发展,处理器的性能成倍提高,工作主频和总线带宽都很高,这需要存储器提供高的数据传输率来配合。特别是对多路服务器来说,对存储器容量是极其渴求的,传统的存储访问技术已经无法满足需求。而且随着处理器的速度提升,需要存储器提供更多的数据来满足处理器的要求,但是目前存储器的速度提升已经相当困难,这样就导致了存储器成为计算机系统速度提闻的最大瓶颈。Intel多核处理器共享内存时,使用快速通道互联(Quick Path Interconnect,QPI)协议来保证内存的一致性。从逻辑上,QPI_vl.1协议代理可分为缓冲代理(CachingAgent,CA)和内存管理代理(Home Agent,HA)。CA和HA通过一个通信网络上的包交换,CA发起访问内存的请求,HA管理内存数据,解决多个CA请求之间的冲突,共同实现了数据一致性和前向处理。每一个Cache line地址都有一个HA,当CA没有备份这个地址上的数据时,HA这个内存空间就会存储这个地址所对应的数据。当两个或多个CA差不多同时向HA的同一 Cache line地址发起请求时,就会出现冲突。Intel QPI 1.1协议故意将CA的设计尽可能的简单,把解决冲突的大部分工作都放在HA中去做。HA必须产生所需要的监听消肩、OIBM的eX5 (FireHawk)芯片可以看做是一个QPI与内存控制器的桥接芯片。它提供4路QPI接口与服务器连接,8个可升级内存接口(Scalable Memory Interface, SMI),经过可升级内存缓冲器(Scalable Memory Buffer, SMB)连接双列直插式存储模块(DualIn-line Memory Module, DIMM)条,另外它还提供3个扩展口,用作FireHawk芯片之间的连接。SMI接口属于Intel定义的接口,只支持较低的两种DMM速率。本方案中,一款芯片能够扩展8个SMI接口,最大能外挂32个DI丽。Cisco刀片服务器内提供了内存扩展技术(Extended Memory Technology),通过这种技术,能够将基于Xeon5500的刀片服务器的内存容量从144G增加到384G,从而能装载更多的虚拟机。在内存架构方面,Xeon5500内置一个内存控制器。这个内存控制器能管理三个内存通道Channel,而且每个内存通道能接三个DIMM,也就是一个Xeon5500CPU最多能接九个DMM,在双路的情况下,因为有两个内存控制器,所以能接十八个DMM。虽然Xeon5500芯片每个内存通道都支持三个DIMM,但内存控制器的驱动能力是有限的,单通道驱动多个DIMM时性能会下降,因此使用三个DIMM的后果是内存只能运行在800Mhz,所以思科通过一块称为Catalina的专用集成电路将前两个DIMM都进行扩展,每个DIMM扩展成四个子DIMM,使得每个内存通道都能支持八个DIMM,并且都运行在1066Mhz下。Xeon5500芯片和Intel的CPU的SMI 接口耦合,扩展灵活性很差,且6款芯片最大能外挂56个DMM。
在实际的应用中,实现TB级的内存扩展是非常有意义的,针对主流的16GB的DMM,ITB对应着64个DMM。目前主流内存为DDR3的带寄存器的双列直插式存储模块(Register Dual In-line Meomory Module, RDIMM),由于芯片管脚的驱动负载能力,每个控制器IO只能驱动两个RDIMM的模组,RDIMM的主流容量分为4GB/8GB/16GB。RDIMM的传输带宽为64Gbps,而一个QPI的传输带宽为128Gbps。可以看出,对内存扩展板来说,由于存在多个控制器通道,而QPI的带宽是个瓶颈。本发明基于现场可编程门阵列(Field-Programmable Gate Array,FPGA)实现,针对大容量内存扩展和优化内存扩展板的性能提出一种思路。

发明内容
本发明实施例提供了一种扩展内存的方法,旨在解决如何简单可靠的实现内存的扩展。第一方面,一种扩展内存的方法,所述方法包括:接收同一个Grid中其他内存节点和主节点的读写请求命令;根据所述读写请求命令中的地址判断所述其他内存节点和主节点是否同时访问同一个内存通道;当判断所述其他内存节点和主节点同时访问不同的内存通道时,则根据所述其他内存节点和主节点发送的所述读写请求命令中的地址访问所述地址对应的内存通道;接收从所述内存通道中返回的数据和身份标识ID,将所述数据发送到所述ID对应的所述其他内存节点或者主节点,所述ID用于标识访问所述数据的其他内存节点或者主节点。 结合第一方面,在第一方面的第一种可能的实现方式中,所述方法还包括:当判断所述其他内存节点和主节点同时访问相同的内存通道时,根据RoundRobin的策略从访问相同的其他内存节点和主节点的读写请求命令中选取其中一个其他内存节点或者主节点的读写请求命令;根据选取的读写请求命令中的地址访问所述地址对应的内存通道。第二方面,一种扩展内存的方法,所述方法包括:接收快速通道互联QPI接口发送的QPI报文或者上一级主节点发送的一个或者多个读写请求命令;根据所述多个读写请求命令中的地址判断所述多个读写请求命令中的地址是否相同;当所述多个读写请求命令中的地址不相同时,则将所述读写请求命令发送到所述读写请求命令地址对应的下一级主节点或者Grid中,使得所述Grid中的内存节点根据所述地址访问所述地址对应的内存通道获取数据,并将所述数据发送到主节点;接收所述下一级主节点或者Grid发送的数据。结合第二方面,在第二方面的第一种可能的实现方式中,所述方法还包括:当所述多个读写请求命令中的地址相同时,则选取其中一个读写请求命令;根据选取的读写请求命令中的地址将选取的读写请求命令发送到所述地址对应的下一级主节点或者Grid中。
第三方面,一种内存节点,所述内存节点包括:第一接收单元,用于接收同一个Grid中其他内存节点和主节点的读写请求命令;第一判断单元,用于根据所述读写请求命令中的地址判断所述其他内存节点和主节点是否同时访问同一个内存通道;访问单元,用于当判断所述其他内存节点和主节点同时访问不同的内存通道时,则根据所述其他内存节点和主节点发送的所述读写请求命令中的地址访问所述地址对应的内存通道;第二接收单元,用于接收从所述内存通道中返回的数据和身份标识ID,将所述数据发送到所述ID对应的所述其他内存节点或者主节点,所述ID用于标识访问所述数据的其他内存节点或者主节点。结合第三方面,在第三方面的第一种可能的实现方式中,所述内存节点还包括第一选取单元,所述第一选取单元具体用于:当判断所述其他内存节点和主节点同时访问相同的内存通道时,根据RoundRobin的策略从访问相同的其他内存节点和主节点的读写请求命令中选取其中一个其他内存节点或者主节点的读写请求命令;根据选取的读写请求命令中的地址访问所述地址对应的内存通道。第四方面,一种主节点,所述主节点包括:第三接收单元,用于接 收快速通道互联QPI接口发送的QPI报文或者上一级主节点发送的一个或者多个读写请求命令;第二判断单元,用于根据所述多个读写请求命令中的地址判断所述多个读写请求命令中的地址是否相同;发送单元,用于当所述多个读写请求命令中的地址不相同时,则将所述读写请求命令发送到所述读写请求命令地址对应的下一级主节点或者Grid中,使得所述Grid中的内存节点根据所述地址访问所述地址对应的内存通道获取数据,并将所述数据发送到主节
占.
第四接收单元,用于接收所述下一级主节点或者Grid发送的数据。结合第四方面,在第四方面的第一种可能的实现方式中,所述主节点还包括第二选取单元,所述第二选取单元具体用于:当所述多个读写请求命令中的地址相同时,则选取其中一个读写请求命令;根据选取的读写请求命令中的地址将选取的读写请求命令发送到所述地址对应的下一级主节点或者Grid中。第五方面,一种扩展内存的系统,所述系统包括:Grid,多级主节点,QPI接口;所述Grid,用于接收同一个Grid中其他内存节点和主节点的读写请求命令;根据所述读写请求命令中的地址判断所述其他内存节点和主节点是否同时访问同一个内存通道;当判断所述其他内存节点和主节点同时访问不同的内存通道时,则根据所述其他内存节点和主节点发送的所述读写请求命令中的地址访问所述地址对应的内存通道;接收从所述内存通道中返回的数据和身份标识ID,将所述数据发送到所述ID对应的所述其他内存节点或者主节点,所述ID用于标识访问所述数据的其他内存节点或者主节点;
所述多级主节点,用于接收快速通道互联QPI接口或者上一级主节点发送的一个或者多个读写请求命令;根据所述多个读写请求命令中的地址判断所述多个读写请求命令中的地址是否相同;当所述多个读写请求命令中的地址不相同时,则将所述读写请求命令发送到所述读写请求命令地址对应的下一级主节点或者Grid中,使得所述Grid中的内存节点根据所述地址访问所述地址对应的内存通道获取数据,并将所述数据发送到主节点;接收所述下一级主节点或者Grid发送的数据;所述QPI接口,用于向与QPI接口连接的主节点发送的QPI报文;接收所述与QPI接口连接的主节点发送的数据。结合第五方面,在第五方面的第一种可能的实现方式中,所述Grid中的内存节点还包括第一选取单元,所述第一选取单元具体用于:当判断所述其他内存节点和主节点同时访问相同的内存通道时,根据RoundRobin的策略从访问相同的其他内存节点和主节点的读写请求命令中选取其中一个其他内存节点或者主节点的读写请求命令;

根据选取的读写请求命令中的地址访问所述地址对应的内存通道。结合第五方面或者第五方面的第一种可能的实现方式,在第五方面的第二种可能的实现方式中,所述主节点还包括第二选取单元,所述第二选取单元具体用于:当所述多个读写请求命令中的地址相同时,则选取其中一个读写请求命令;根据选取的读写请求命令中的地址将选取的读写请求命令发送到所述地址对应的下一级主节点或者Grid中。本发明实施例提供一种扩展内存的方法,所述方法通过接收同一个Grid中其他内存节点和主节点的读写请求命令,根据所述读写请求命令中的地址判断所述其他内存节点和主节点是否同时访问同一个内存通道,当判断所述其他内存节点和主节点同时访问不同的内存通道时,则根据所述其他内存节点和主节点发送的所述读写请求命令中的地址访问所述地址对应的内存通道,接收从所述内存通道中返回的数据和身份标识ID,将所述数据发送到所述ID对应的所述其他内存节点或者主节点,所述ID用于标识访问所述数据的其他内存节点或者主节点,从而实现内存扩展功能,并可根据内存设计的容量需求,利用FPGA和专用集成电路芯片,实现不同应用的拓扑。


为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1是本发明实施例提供的一种一级扩展内存的系统结构图;图2是本发明实施例提供的一种二级扩展内存的系统结构图;图3是本发明实施例提供的一种Grid的内部结构图;图4是本发明实施例提供的一种Grid中的内存节点的装置结构图;图5是本发明实施例提供的一种扩展内存的系统中的主节点的装置结构图;图6是本发明实施例提供的一种二级扩展内存的装置结构图7是本发明实施例提供的一种扩展内存的方法流程图;图8是本发明实施例提供的一种Grid中内存节点处理数据的方法示意图;图9是本发明实施例提供的一种扩展内存的方法流程图;图10是本发明实施例提供的一种内存节点的装置结构图;图11是本发明实施例提供的一种主节点的装置结构图。
具体实施例方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。参考图1,图1是本发明实施例提供的一种一级扩展内存的系统结构图。如图1所示,所述系统包括:网格(Grid),多级主节点,QPI接口;所述Grid,用于 接收同一个Grid中其他内存节点和主节点的读写请求命令;根据所述读写请求命令中的地址判断所述其他内存节点和主节点是否同时访问同一个内存通道;当判断所述其他内存节点和主节点同时访问不同的内存通道时,则根据所述其他内存节点和主节点发送的所述读写请求命令中的地址访问所述地址对应的内存通道;接收从所述内存通道中返回的数据和身份标识ID,将所述数据发送到所述ID对应的所述其他内存节点或者主节点,所述ID用于标识访问所述数据的其他内存节点或者主节点;所述多级主节点,用于接收快速通道互联QPI接口或者上一级主节点发送的一个或者多个读写请求命令;根据所述多个读写请求命令中的地址判断所述多个读写请求命令中的地址是否相同;当所述多个读写请求命令中的地址不相同时,则将所述读写请求命令发送到所述读写请求命令地址对应的下一级主节点或者Grid中,使得所述Grid中的内存节点根据所述地址访问所述地址对应的内存通道获取数据,并将所述数据发送到主节点;接收所述下一级主节点或者Grid发送的数据;所述QPI接口,用于向与QPI接口连接的主节点发送的QPI报文;接收所述与QPI接口连接的主节点发送的数据。具体的,如图1,主节点Master是与QPI接口连接的第一级主节点,Memor Grid是与第一级主节点连接的Grid。参考图2,图2是本发明实施例提供的一种二级扩展内存的系统结构图。如图2所示,主节点MasterO是与QPI接口连接的第一级主节点,主节点Master2是与第一级主节点连接的第二级主节点,Memory Grid是与Masterl连接的Grid。本发明实施例可以采用现场可编程门阵列(Field-Programmable Gate Array,FPGA)夕卜接多个网格Grid的形式,每个Grid采用全互联的架构,即每个Grid内部的内存节点之间互联,并与同每一个Grid相连的主节点互联,以保证传输带宽和效率。同时,可以根据内存扩展板容量的需求,可以设计多级主节点级联的形式,以获得更大的内存空间。在实际的应用中,实现TB级的内存扩展是非常有意义的。我们以ITB的内存容量为例,使用一个QPI接口来进行扩展,针对主流的16GB的内存条,ITB对应着64个插槽。采用二级级联的方式,一个主FPGA,外接两个四路全相连的内存网格Grid。这样QPI的带宽为128Gbps,主FPGA与网格Grid之间的数据带宽设计为128Gbps,使用13组高速10,速率为lOGbps,每个内存节点的实际带宽为4x64Gbps,一个CPU可以通过一个QPI接口来实现ITB的内存容量的扩展。可选地,所述Grid中的内存节点还包括第一选取单元,所述第一选取单元具体用于:当判断所述其他内存节点和主节点同时访问相同的内存通道时,根据RoundRobin的策略从访问相同的其他内存节点和主节点的读写请求命令中选取其中一个其他内存节点或者主节点的读写请求命令;根据选取的读写请求命令中的地址访问所述地址对应的内存通道。具体的,参考图3,图3是本发明实施例提供的一种Grid的内部结构图。如图3所示,每个Slave芯片负责4个内存控制器,所述Slave芯片相当于内存节点,每个控制器外挂两个双列直插式存储模块(Register Dual In-line Meomory Module, RDIMM)的插槽。这样每个Slave芯片会驱动8个RDMM,实现4个独立的内存通道,数据带宽可达到4x64Gbps=256Gbps。其中,DDR3的速率为1066M/s,数据位宽为64bit,因此带宽约为64Gbps(G bit per second)四个内存节点采用全互联的方式,这样每个内存节点和主节点的带宽需求为64Gbps,就可以实现最优的带宽利用率。主节点发送读写请求命令(Read and WriteRequest Command),会通过四个内存通道发送到每个内存节点的各个内存控制器上,每个内存节点的读取的数据也会通过内存通道反馈到主节点上,这样对于每个主节点到内存节点的数据带宽需求为64Gbps,就可以实现全互联的高效的数据流的控制。参考图4,图4是本发明实施例提供的一种Grid中的内存节点的装置结构图。如图4所示,内存节点A或者B或者C或者D接收来自四个高速10(lnput Output)的请求命令,将命令分发给四个不同的内存控制器通道MC1、MC2、MC3、MC4中。RT模块实现高速10中的传输协议,接收主节点或者同一 Grid中的其他内存节点发送的读写请求命令,将读写请求命令缓存在一个接收命令的FIFO中,即缓存在RT中;MC_Eng是一个四选四的CrossBar,所述四选四是指每个内存节点可以和同一个Grid中的其他内存节点相连同时和主节点相连,并且每个内存节点可以同时处理四个读写请求命令,所述MC_Eng从四个接收命令的FIFO中选取四个读写请求命令发往四个不同的内存通道中;MC模块用于实现标准的DDR3的内存控制器。可选地,所述主节点还包括第二选取单元,所述第二选取单元具体用于:当所述多个读写请求命令中的地址相同时,则选取其中一个读写请求命令;根据选取的读写请求命令中的地址将选取的读写请求命令发送到所述地址对应的下一级主节点或者Grid中。参考图5,图5是本发明实施例提供的一种扩展内存的系统中的主节点的装置结构图。如图5所示,主节点可以分为五个主要功能模块:QPI BridgeXC HA、Cache、Mux、Cmd_mgr。其中QPI Bridge实现处理QPI协议的物理层和链路层,解析出QPI报文和将QPI报文发送给CC HA,其中,QPI报文经过CC HA处理后会转换为读写请求命令发送到Cache ;CCHA用来处理多个CA同 时请求同一个地址的冲突,保证每个CA都有合理的请求结果,从而实现协议层的Cache —致性功能;Cache缓冲双列直插式存储模块(Dual In-line MemoryModule,DMM)中的数据和目录,其中,目录用于记录数据在哪些CA中有备份,HA则使用目录处理多个读写请求命令的冲突;Mux负责将访问DIMM的读写请求命令根据地址发送给各个内存网格Grid中,因为系统预先配置每一个Grid中内存节点的地址范围,因此,若所述地址落入某一个内存节点的地址范围内,则将所述命令发送到该内存节点;Cmd_mgr实现将命令发送给内存网格,接收内存网格返回的内存数据。CC HA解析QPI报文后,如果发现所述QPI报文是要读取某一地址的数据和目录,则将读请求命令会发送给Cache,如果Cache命中,则直接将数据和目录返回给CC HA。如果Cache未命中,则将命令发送给Mux,Mux根据命令中的地址,将命令分发给不同的Cmd_mgr。Cmd_mgr模块会管理所述命令的ID,将命令按照传输协议经过高速IO送给内存网格Grid中的内存节点,也就是命令会通过高速IO发送给某一个内存网格中的内存节点,实现了简单的路由。内存网格中的内存节点返回的数据会以包的形式通过高速IO返回给主结点的Cmd_mgr中,Cmd_mgr接收数据,并将数据送给Mux和Cache,其中,Cache是用来提高系统的性能,Mux是一种地址仲裁,确定所述读请求命令发往哪一个Grid中。CC HA解析QPI报文后,如果发现所述QPI报文是写某一地址的数据和目录,则将写请求命令发送给Cache,如果Cache命中,则直接将数据和目录写入Cache。如果Cache未命中且Cache发生替换,则被替换的数据会以写命令的形式会送给Mux,Mux根据写地址,将命令分发给不同的Cmd_mgr, Cmd_mgr将命令按照传输协议经过高速IO送给内存网格中的内存节点。Cache作为临时单元可备份主存的部分数据,其存储空间是有限的,如果新数据要存在此Cache中,Cache会将原先的数据存到主存中,将空出的空间存储新数据,如果Cache中的数据被替换,和主存中不一致时,则称被替换的数据为脏数据。参考图6,图6是本发明实施例提供的一种二级扩展内存的装置结构图。如图6所示,一个CPU可以通过一个QPI接口来实现ITB的内存容量的扩展,主节点的功能主要是维护内存数据的一致性和内存数据到各个内存网格Grid中的内存节点的发送和接收,由于多个CA同时访问某一个地址的数据会出现冲突,主节点可以利用一致性来实现Cache —致性的管理,其中一致性是指同一个数据可能有多个备份,保证CA访问的数据是最新的,由HA来统一管理。·参考图7,图7是本发明实施例提供的一种扩展内存的方法流程图。如图7所示,所述方法包括以下步骤:步骤701,接收同一个Grid中其他内存节点和主节点的读写请求命令;具体的,参考图8,图8是本发明实施例提供的一种Grid中内存节点处理数据的方法示意图。内存节点B接收来自同一个Grid中其他内存节点D、A、C的请求命令或者接收上一级主节点的请求命令。步骤702,根据所述读写请求命令中的地址判断所述其他内存节点和主节点是否同时访问同一个内存通道;步骤703,当判断所述其他内存节点和主节点同时访问不同的内存通道时,则根据所述其他内存节点和主节点发送的所述读写请求命令中的地址访问所述地址对应的内存通道;参考图8,当B判断A、D、C及主节点发送的四个读写请求命令中的地址都不相同时,则根据所述地址将将所述地址对应的读写请求命令发送到四个不同的内存控制器通道MC1、MC2、MC3、MC4 中。步骤704,接收从所述内存通道中返回的数据和身份标识ID,将所述数据发送到所述ID对应的所述其他内存节点或者主节点,所述ID用于标识访问所述数据的其他内存节点或者主节点。参考图8,B接收四个内存控制通道MC1、MC2、MC3、MC4返回的数据和身份标识(Identity, ID),根据所述ID将所述ID对应的数据返回到A、D、C和上一级主节点。作为一种可选的实施例,所述方法还包括:当判断所述其他内存节点和主节点同时访问相同的内存通道时,根据RoundRobin的策略从访问相同的其他内存节点和主节点的读写请求命令中选取其中一个其他内存节点或者主节点的读写请求命令;根据选取的读写请求命令中的地址访问所述地址对应的内存通道。具体的,内存节点B可以同时处理来自A、D、C、上一级主节点的四个读写请求命令,当发现四个请求命令中地址有相同的情况时,比如发现D、A的读写请求命令相同时,则根据RoundRobin的策略从D中选取下一个读写请求命令,使得D、A的读写请求命令中的地址不同,这样保证内存节点B可以同时处理四个读写请求命令,提高数据处理效率。本发明实施例提供一种扩展内存的方法,所述方法通过接收同一个Grid中其他内存节点和主节点的读写请求命令,根据所述读写请求命令中的地址判断所述其他内存节点和主节点是否同时访问同一个内存通道,当判断所述其他内存节点和主节点同时访问不同的内存通道时,则根据所述其他内存节点和主节点发送的所述读写请求命令中的地址访问所述地址对应的内存 通道,接收从所述内存通道中返回的数据和身份标识ID,将所述数据发送到所述ID对应的所述其他内存节点或者主节点,所述ID用于标识访问所述数据的其他内存节点或者主节点,从而实现内存扩展功能,并可根据内存设计的容量需求,利用FPGA和专用集成电路芯片,实现不同应用的拓扑。参考图9,图9是本发明实施例提供的一种扩展内存的方法流程图。如图9所示,所述方法包括以下步骤:步骤901,接收快速通道互联QPI接口发送的QPI报文或者上一级主节点发送的一个或者多个读写请求命令;参考图5,主节点接收QPI接口发送的QPI报文,将所述QPI报文解析成读写请求命令。步骤902,根据所述多个读写请求命令中的地址判断所述多个读写请求命令中的地址是否相同;参考图5,从图5中可以看出,主节点连接两个Grid,可以同时将两个读写请求命令发送到两个Grid中做进一步处理。步骤903,当所述多个读写请求命令中的地址不相同时,则将所述读写请求命令发送到所述读写请求命令地址对应的下一级主节点或者Grid中,使得所述Grid中的内存节点根据所述地址访问所述地址对应的内存通道获取数据,并将所述数据发送到主节点;参考图5,当主节点判断两个读写请求命令的地址不同时,则根据地址将该两个读写请求命令发到对应的Grid中。步骤904,接收所述下一级主节点或者Grid发送的数据。
作为一种可选的实施例,所述方法还包括:当所述多个读写请求命令中的地址相同时,则选取其中一个读写请求命令;根据选取的读写请求命令中的地址将选取的读写请求命令发送到所述地址对应的下一级主节点或者Grid中。例如,参考图5,当主节点判断两个读写请求命令的地址相同时,则选取其中一个读写请求命令,并将该读写请求命令发送到对应的下一级主节点或者Grid中。本发明实施例提供一种扩展内存的方法,所述方法通过接收同一个Grid中其他内存节点和主节点的读写请求命令,根据所述读写请求命令中的地址判断所述其他内存节点和主节点是否同时访问同一个内存通道,当判断所述其他内存节点和主节点同时访问不同的内存通道时,则根据所述其他内存节点和主节点发送的所述读写请求命令中的地址访问所述地址对应的内存通道,接收从所述内存通道中返回的数据和身份标识ID,将所述数据发送到所述ID对应的所述其他内存节点或者主节点,所述ID用于标识访问所述数据的其他内存节点或者主节点,从而实现内存扩展功能,并可根据内存设计的容量需求,利用FPGA和专用集成电路芯片,实现不同应用的拓扑。参考图10,图10是本发明实施例提供的一种内存节点的装置结构图。如图10所示,所述装置包括以下单元:第一接收单元1001,用于接收同一个Grid中其他内存节点和主节点的读写请求命令;具体的,参考图8,图8是本发明实施例提供的一种Grid中内存节点处理数据的方法示意图。内存节点B接收来自同一个Grid中其他内存节点D、A、C的请求命令或者接收上一级主节点的请求命令。第一判断单元1002,用于根据`所述读写请求命令中的地址判断所述其他内存节点和主节点是否同时访问同一个内存通道;访问单元1003,用于当判断所述其他内存节点和主节点同时访问不同的内存通道时,则根据所述其他内存节点和主节点发送的所述读写请求命令中的地址访问所述地址对应的内存通道;参考图8,当B判断A、D、C及主节点发送的四个读写请求命令中的地址都不相同时,则根据所述地址将将所述地址对应的读写请求命令发送到四个不同的内存控制器通道MC1、MC2、MC3、MC4 中。第二接收单元1004,用于接收从所述内存通道中返回的数据和身份标识ID,将所述数据发送到所述ID对应的所述其他内存节点或者主节点,所述ID用于标识访问所述数据的其他内存节点或者主节点。参考图8,B接收四个内存控制通道MC1、MC2、MC3、MC4返回的数据和身份标识(Identity, ID),根据所述ID将所述ID对应的数据返回到A、D、C和上一级主节点。作为一种可选的实施例,所述内存节点还包括第一选取单元,所述第一选取单元具体用于:当判断所述其他内存节点和主节点同时访问相同的内存通道时,根据RoundRobin的策略从访问相同的其他内存节点和主节点的读写请求命令中选取其中一个其他内存节点或者主节点的读写请求命令;
根据选取的读写请求命令中的地址访问所述地址对应的内存通道。具体的,内存节点B可以同时处理来自A、D、C、上一级主节点的四个读写请求命令,当发现四个请求命令中地址有相同的情况时,比如发现D、A的读写请求命令相同时,则根据RoundRobin的策略从D中选取下一个读写请求命令,使得D、A的读写请求命令中的地址不同,这样保证内存节点B可以同时处理四个读写请求命令,提高数据处理效率。本发明实施例提供一种内存节点,所述内存节点通过接收同一个Grid中其他内存节点和主节点的读写请求命令,根据所述读写请求命令中的地址判断所述其他内存节点和主节点是否同时访问同一个内存通道,当判断所述其他内存节点和主节点同时访问不同的内存通道时,则根据所述其他内存节点和主节点发送的所述读写请求命令中的地址访问所述地址对应的内存通道,接收从所述内存通道中返回的数据和身份标识ID,将所述数据发送到所述ID对应的所述其他内存节点或者主节点,所述ID用于标识访问所述数据的其他内存节点或者主节点,从而实现内存扩展功能,并可根据内存设计的容量需求,利用FPGA和专用集成电路芯片,实现不同应用的拓扑。参考图11,图11是本发明实施例提供的一种主节点的装置结构图。如图11所示,所述装置包括以下单元:第三接收单元1101,用于接收快速通道互联QPI接口发送的QPI报文或者上一级主节点发送的一个或者多个读写请求命令;参考图5,主节点接收QPI接口发送的QPI报文,将所述QPI报文解析成读写请求命令。第二判断单元1102,用于根据所述多个读写请求命令中的地址判断所述多个读写请求命令中的地址是否相同;

参考图5,从图5中可以看出,主节点连接两个Grid,可以同时将两个读写请求命令发送到两个Grid中做进一步处理。发送单元1103,用于当所述多个读写请求命令中的地址不相同时,则将所述读写请求命令发送到所述读写请求命令地址对应的下一级主节点或者Grid中,使得所述Grid中的内存节点根据所述地址访问所述地址对应的内存通道获取数据,并将所述数据发送到主节点;参考图5,当主节点判断两个读写请求命令的地址不同时,则根据地址将该两个读写请求命令发到对应的Grid中。第四接收单元1104,用于接收所述下一级主节点或者Grid发送的数据。作为一种可选的实施例,所述主节点还包括第二选取单元,所述第二选取单元具体用于:当所述多个读写请求命令中的地址相同时,则选取其中一个读写请求命令;根据选取的读写请求命令中的地址将选取的读写请求命令发送到所述地址对应的下一级主节点或者Grid中。例如,参考图5,当主节点判断两个读写请求命令的地址相同时,则选取其中一个读写请求命令,并将该读写请求命令发送到对应的下一级主节点或者Grid中。本发明实施例提供一种主节点,所述主节点通过接收同一个Grid中其他内存节点和主节点的读写请求命令,根据所述读写请求命令中的地址判断所述其他内存节点和主节点是否同时访问同一个内存通道,当判断所述其他内存节点和主节点同时访问不同的内存通道时,则根据所述其他内存节点和主节点发送的所述读写请求命令中的地址访问所述地址对应的内存通道,接收从所述内存通道中返回的数据和身份标识ID,将所述数据发送到所述ID对应的所述其他内存节点或者主节点,所述ID用于标识访问所述数据的其他内存节点或者主节点,从而实现内存扩展功能,并可根据内存设计的容量需求,利用FPGA和专用集成电路芯片,实现不同应用的拓扑。本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory, ROM)或随机存取存储器(Random AccessMemory,简称 RAM)等。以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明 权利要求所作的等同变化,仍属本发明所涵盖的范围。
权利要求
1.一种扩展内存的方法,其特征在于,所述方法包括: 接收同一个Grid中其他内存节点和主节点的读写请求命令; 根据所述读写请求命令中的地址判断所述其他内存节点和主节点是否同时访问同一个内存通道; 当判断所述其他内存节点和主节点同时访问不同的内存通道时,则根据所述其他内存节点和主节点发送的所述读写请求命令中的地址访问所述地址对应的内存通道; 接收从所述内存通道中返回的数据和身份标识ID,将所述数据发送到所述ID对应的所述其他内存节点或者主节点,所述ID用于标识访问所述数据的其他内存节点或者主节点。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括: 当判断所述其他内存节点和主节点同时访问相同的内存通道时,根据RoundRobin的策略从访问相同的其他内存节点和主节点的读写请求命令中选取其中一个其他内存节点或者主节点的读写请求命令; 根据选取的读写请求命令中的地址访问所述地址对应的内存通道。
3.一种扩展内存的方法,其特征在于,所述方法包括: 接收快速通道互联QPI接口发送的QPI报文或者上一级主节点发送的一个或者多个读写请求命令; 根据所述多个读写请求命令中的地址判断所述多个读写请求命令中的地址是否相`同; 当所述多个读写请求命令中的地址不相同时,则将所述读写请求命令发送到所述读写请求命令地址对应的下一级主节点或者Grid中,使得所述Grid中的内存节点根据所述地址访问所述地址对应的内存通道获取数据,并将所述数据发送到主节点; 接收所述下一级主节点或者Grid发送的数据。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括: 当所述多个读写请求命令中的地址相同时,则选取其中一个读写请求命令; 根据选取的读写请求命令中的地址将选取的读写请求命令发送到所述地址对应的下一级主节点或者Grid中。
5.—种内存节点,其特征在于,所述内存节点包括: 第一接收单元,用于接收同一个Grid中其他内存节点和主节点的读写请求命令;第一判断单元,用于根据所述读写请求命令中的地址判断所述其他内存节点和主节点是否同时访问同一个内存通道; 访问单元,用于当判断所述其他内存节点和主节点同时访问不同的内存通道时,则根据所述其他内存节点和主节点发送的所述读写请求命令中的地址访问所述地址对应的内存通道; 第二接收单元,用于接收从所述内存通道中返回的数据和身份标识ID,将所述数据发送到所述ID对应的所述其他内存节点或者主节点,所述ID用于标识访问所述数据的其他内存节点或者主节点。
6.根据权利要求5所述的方法,其特征在于,所述内存节点还包括第一选取单元,所述第一选取单元具体用于:当判断所述其他内存节点和主节点同时访问相同的内存通道时,根据RoundRobin的策略从访问相同的其他内存节点和主节点的读写请求命令中选取其中一个其他内存节点或者主节点的读写请求命令; 根据选取的读写请求命令中的地址访问所述地址对应的内存通道。
7.一种主节点,其特征在于,所述主节点包括: 第三接收单元,用于接收快速通道互联QPI接口发送的QPI报文或者上一级主节点发送的一个或者多个读写请求命令; 第二判断单元,用于根据所述多个读写请求命令中的地址判断所述多个读写请求命令中的地址是否相同; 发送单元,用于当所述多个读写请求命令中的地址不相同时,则将所述读写请求命令发送到所述读写请求命令地址对应的下一级主节点或者Grid中,使得所述Grid中的内存节点根据所述地址访问所述地址对应的内存通道获取数据,并将所述数据发送到主节点;第四接收单元,用于接收所述下一级主节点或者Grid发送的数据。
8.根据权利要求7所述的主节点,其特征在于,所述主节点还包括第二选取单元,所述第二选取单元具体用于: 当所述多个读写请求命令中的地址相同时,则选取其中一个读写请求命令; 根据选取的读写请求命令中的地址将选取的读写请求命令发送到所述地址对应的下一级主节点或者Grid中。
9.一种扩展内存的系统,其特征在于,所述系统包括: Grid,多级主节点,QPI接口; 所述Grid,用于接收同一个Grid中其他内存节点和主节点的读写请求命令;根据所述读写请求命令中的地址判断所述其他内存节点和主节点是否同时访问同一个内存通道;当判断所述其他内存节点和主节点同时访问不同的内存通道时,则根据所述其他内存节点和主节点发送的所述读写请求命令中的地址访问所述地址对应的内存通道;接收从所述内存通道中返回的数据和身份标识ID,将所述数据发送到所述ID对应的所述其他内存节点或者主节点,所述ID用于标识访问所述数据的其他内存节点或者主节点; 所述多级主节点,用于接收快速通道互联QPI接口或者上一级主节点发送的一个或者多个读写请求命令;根据所述多个读写请求命令中的地址判断所述多个读写请求命令中的地址是否相同;当所述多个读写请求命令中的地址不相同时,则将所述读写请求命令发送到所述读写请求命令地址对应的下一级主节点或者Grid中,使得所述Grid中的内存节点根据所述地址访问所述地址对应的内存通道获取数据,并将所述数据发送到主节点;接收所述下一级主节点或者Grid发送的数据; 所述QPI接口,用于向与QPI接口连接的主节点发送的QPI报文;接收所述与QPI接口连接的主节点发送的数据。
10.根据权利要求9所述的系统,其特征在于,所述Grid中的内存节点还包括第一选取单元,所述第一选取单元具体用于: 当判断所述其他内存节点和主节点同时访问相同的内存通道时,根据RoundRob iη的策略从访问相同的其他内存节点和主节点的读写请求命令中选取其中一个其他内存节点或者主节点的读写请求命令;根据选取的读写请求命令中的地址访问所述地址对应的内存通道。
11.根据权利要求9或10所述的系统,其特征在于,所述主节点还包括第二选取单元,所述第二选取单元具体用于: 当所述多个读写请求命令中的地址相同时,则选取其中一个读写请求命令;根据选取的读写请求命令中的地址将选取的读写请求命令发送到所述地址对应的下一级主节点或者Grid中。·
全文摘要
本发明实施例提供一种扩展内存的方法、内存节点、主节点、及系统,所述方法通过接收同一个Grid中其他内存节点和主节点的读写请求命令,根据所述读写请求命令中的地址判断所述其他内存节点和主节点是否同时访问同一个内存通道,当判断所述其他内存节点和主节点同时访问不同的内存通道时,则根据所述其他内存节点和主节点发送的所述读写请求命令中的地址访问所述地址对应的内存通道,接收从所述内存通道中返回的数据和身份标识ID,将所述数据发送到所述ID对应的所述其他内存节点或者主节点,从而实现内存扩展功能,并可根据内存设计的容量需求,利用FPGA和专用集成电路芯片,实现不同应用的拓扑。
文档编号G06F13/16GK103246622SQ20131012327
公开日2013年8月14日 申请日期2013年4月10日 优先权日2013年4月10日
发明者李涛, 常胜, 王工艺, 顾雄礼 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1