Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
MEMORY SYSTEM, MEMORY MODULE, MEMORY MODULE ACCESS METHOD AND COMPUTER SYSTEM
Document Type and Number:
WIPO Patent Application WO/2014/056178
Kind Code:
A1
Abstract:
Provided are a memory system, a memory module, a memory module access method and a computer system. By adding multiple interconnection interfaces among memory modules in the memory module, the present invention allows multiple memory modules belonging to different memory channels in the memory system to establish communication connections through the interconnection interfaces among memory modules, and thus allows memory modules in the memory system to be accessed by multiple memory channels simultaneously. When a memory channel has a too heavy load, memory modules belonging to the memory channel that has a too heavy load can be accessed through anther memory channel that has a light load, which solves a situation of unbalanced loads of memory channels to a certain extent, and effectively improves an utilization rate of memory channels.

Inventors:
ZHANG LIXIN (CN)
CHEN MINGYU (CN)
HUANG YONGBING (CN)
Application Number:
PCT/CN2012/082824
Publication Date:
April 17, 2014
Filing Date:
October 12, 2012
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
HUAWEI TECH CO LTD (CN)
International Classes:
G06F13/00
Foreign References:
CN101587740A2009-11-25
CN1788260A2006-06-14
CN101562039A2009-10-21
US20100274976A12010-10-28
Other References:
See also references of EP 2887223A4
Download PDF:
Claims:
权 利 要 求

1、 一种内存系统, 其特征在于, 所述内存系统包括: 第一内存模块, 第 二内存模块; 所述第一内存模块设有第一内存通道接口, 并通过所述第一内存 通道接口连接第一内存通道; 所述第二内存模块设有第二内存通道接口, 并通 过所述第二内存通道接口连接第二内存通道;所述第一内存模块和所述第二内 存模块还分别设有第一内存模块间互连接口,所述第一内存模块的第一内存模 块间互连接口与所述第二内存模块的第一内存模块间互连接口连接。

2、 根据权利要求 1所述的系统, 其特征在于, 所述第一内存模块用于通 过所述第一内存模块的第一内存模块间接口与所述第二内存模块的第一内存 模块间互连接口的连接及所述第二内存通道接收或发送对所述内存系统的访 问数据, 以及通过所述第一内存通道接收或发送对所述内存系统的访问数据。

3、 根据权利要求 2所述的系统, 对所述内存系统的访问数据包括以下中 的一个或多个: 对所述第一内存模块的访问请求,对所述第一内存模块的访问 请求的响应数据或关联数据,对所述第二内存模块的访问请求, 以及对所述第 二内存模块的访问请求的响应数据或关联数据。

4、 根据权利要求 1-3任一项所述的系统, 其特征在于, 所述第一内存模 块包括第一内存管理单元和至少一个存储单元,所述第一内存管理单元与所述 第一内存模块间互连接口、所述第一内存通道接口以及所述存储单元连接, 所 述第一内存管理单元用于:

通过所述第一内存通道接口接收访问数据; 存模块; 若所述访问数据的目的内存模块不是所述第一内存模块,则将所述访问数 据通过所述第一内存模块间互连接口发送给所述第二内存模块;

若所述访问数据的目的内存模块是所述第一内存模块,则根据所述访问数 据确定与所述访问数据关联的目的存储单元,根据所述访问数据对所述目的存 储单元执行操作, 其中, 所述目的存储单元为所述第一内存模块的存储单元中 的一个或多个。

5、 根据权利要求 4所述的系统, 其特征在于, 所述第一内存管理单元还 用于: 通过所述第一内存模块间互连接口接收访问数据, 确定与所述访问数据 关联的目的存储单元; 根据所述访问数据对所述目的存储单元执行操作。

6、 根据权利要求 2所述的系统, 其特征在于, 所述内存系统还包括第三 内存模块, 所述第三内存模块设有第三通道接口; 所述第一内存模块和所述第 三内存模块还分别设有第二内存模块间互连接口,所述第一内存模块的第二内 存模块间互连接口与所述第三内存模块的第二内存模块间互连接口连接; 所述第三内存模块通过所述第三通道接口连接第二内存通道或第三内存 通道;

所述第一内存模块还用于通过所述第一内存模块的第二内存模块间互连 接口与所述第三内存模块的第二内存模块间互连接口之间的连接及所述第三 内存通道接收或发送对所述内存系统的访问数据。

7、 根据权利要求 6所述的系统, 其特征在于, 对所述内存系统的访问数 据包括以下中的一个或多个: 对所述第一内存模块的访问请求,对所述第一内 存模块的访问请求的响应数据或关联数据, 对所述第二内存模块的访问请求, 对所述第二内存模块的访问请求的响应数据或关联数据 ,对所述第三内存模块 的访问请求, 以及对所述第三内存模块的访问请求的响应数据或关联数据。

8、 根据权利要求 6或 7所述的系统, 其特征在于, 所述第一内存模块包 括第一内存管理单元和至少一个存储单元,所述第一内存管理单元与所述第一 内存模块间互连接口、所述第二内存模块间互连接口、所述第一内存通道接口 以及所述存储单元连接, 所述第一内存管理单元用于:

通过所述第一内存通道接口接收访问数据; 存模块;

若所述访问数据的目的内存模块不是所述第一内存模块,则根据所述访问 数据的目标地址与所述内存模块间互连接口的对应关系,确定与所述访问数据 对应的内存模块间互连接口,若与所述访问数据对应的内存模块间互连接口为 第一内存模块间互连接口,则将所述访问数据通过所述第一内存模块间互连接 口发送给所述第二内存模块 ,若与所述访问数据对应的内存模块间互连接口为 第二内存模块间互连接口,则将所述访问数据通过所述第二内存模块间互连接 口发送给所述第三内存模块;

若所述访问数据的目的内存模块是所述第一内存模块,则根据所述访问数 据确定与所述访问数据关联的目的存储单元,根据所述访问数据对所述目的存 储单元执行操作, 其中, 所述目的存储单元为所述第一内存模块的存储单元中 的一个或多个。

9、 根据权利要求 1-5任一项所述的系统, 其特征在于, 所述第一内存通 道和所述第二内存通道与同一内存控制器连接。

10、 根据权利要求 9述的系统, 其特征在于, 所述内存控制器用于: 监测所述第一内存通道和所述第二内存通道的运行状况;

接收对所述内存系统的访问数据,并根据所述第一内存通道和所述第二内 存通道的运行状况将所述访问数据发送给所述内存系统。

11、 根据权利要求 10所述的系统, 其特征在于, 所述内存控制器具体用 于:

监测所述第一内存通道和所述第二内存通道的运行状况,所述运行状况包 括忙碌和空闲;

当接收到的所述访问数据的目标地址位于第一内存模块且所述第一内存 通道为忙碌时 ,所述内存控制器将所述访问数据通过所述第二内存通道发送给 第二内存模块,由所述第二内存模块通过所述第二内存模块的第一内存模块间 互连接口和所述第一内存模块的第一内存模块间互连接口之间的连接将所述 访问数据发送给第一内存模块;

当接收到的所述访问数据的目标地址位于第二内存模块且所述第二内存 通道为忙碌时 ,所述内存控制器将所述访问数据通过所述第一内存通道发送给 第一内存模块,由所述第一内存模块通过所述第一内存模块的第一内存模块间 互连接口与所述第二内存模块的第一内存模块间互连接口之间的连接将所述 访问数据发送给第二内存模块。

12、 根据权利要求 10或 11所述的系统, 其特征在于, 所述内存控制器还 用于: 记录所述访问数据的路径和所述访问数据的状态, 所述访问数据的路径 包含所述第一内存通道或第二内存通道,所述访问数据的状态包括访问数据是 否发送和 /或访问请求的结果是否返回。

13、 根据权利要求 1-5任一项所述的系统, 其特征在于, 所述第一内存通 道与第一内存控制器连接 , 所述第二内存通道与第二内存控制器连接。

14、 根据权利要求 13所述的系统, 其特征在于, 所述第一内存控制器与 第一处理器连接, 所述第二内存控制器与第二处理器连接; 或者, 所述第一内 存控制器内置于第一处理器, 所述第二内存控制器内置于第二处理器。

15、 根据权利要求 14所述的系统, 其特征在于, 所述第一处理器置于第 一单板上, 所述第二处理器置于第二单板上。

16、 根据权利要求 15所述的系统, 其特征在于, 所述第一单板和第二单 板分别内置于不同的计算机系统内。

17、 根据权利要求 1-16任一项所述的系统, 其特征在于, 不同的内存模 块的存储介质不相同; 或者, 不同的内存模块的存储介质相同。

18、 根据权利要求 1-17任一项所述的系统, 其特征在于, 所述内存模块 为独立物理模块, 所述内存通道接口及内存模块间互连接口为物理接口。

19、 根据权利要求 1-18任一项所述的系统, 其特征在于, 所述内存通道 接口为双倍数据速率 DDR接口或 DDR2接口或 DDR3接口或 DDR4接口。

20、 一种内存模块, 其特征在于, 所述内存模块设有内存通道接口和第一 内存模块间互连接口, 所述内存模块包括内存管理单元和至少一个存储单元, 所述内存管理单元与所述内存通道接口、所述第一内存模块间互连接口以及所 述存储单元连接;

所述内存通道接口用于连接内存通道;

所述内存管理单元用于通过所述内存通道接口以及所述内存通道接口连 接的所述内存通道接收或发送访问数据;

所述第一内存模块间互连接口用于与除该内存模块之外的第一内存模块 连接;所述内存管理单元还用于通过所述第一内存模块间互连接口发送或接收 访问数据。

21、 根据权利要求 20所述的内存模块, 其特征在于, 所述访问数据包括 以下中的一个或多个: 对所述内存模块的访问请求,对所述内存模块的访问请 求的响应数据或关联数据,对所述第一内存模块的访问请求, 以及对所述第一 内存模块的访问请求的响应数据或关联数据。

22. 根据权利要求 20或 21所述的内存模块,所述内存管理单元具体用于: 通过所述内存通道接口及所述内存通道接收访问数据;根据所述访问数据判断 所述访问数据的目的内存模块是否是当前内存模块;若所述访问数据的目的内 存模块不是当前内存模块,则将所述访问数据通过所述第一内存模块间互连接 口发送给所述第一内存模块; 若所述访问数据的目的内存模块是当前内存模 访问数据对所述目的存储单元执行操作, 其中, 所述目的存储单元为当前内存 模块的存储单元中的一个或多个。

23、 根据权利要求 22所述的内存模块, 其特征在于, 所述内存管理单元 还用于:通过所述第一内存模块间互连接口及所述内存模块与所述第一内存模 块之间的连接接收访问数据,确定与所述访问数据关联的目的存储单元; 根据 所述访问数据对所述目的存储单元执行操作。

24、 根据权利要求 20所述的内存模块, 其特征在于, 所述内存模块还设 有第二内存模块间互连接口,所述内存管理单元还与所述第二内存模块间互连 接口连接;

所述第二内存模块间互连接口用于与除该内存模块和所述第一内存模块 之外的第二内存模块连接;所述内存管理单元还用于通过所述第二内存模块间 互连接口及所述内存模块与所述第二内存模块之间的连接接收或发送访问数 据。

25、 根据权利要求 24所述的内存模块, 其特征在于, 所述访问数据包括 以下中的一个或多个: 对该内存模块的访问请求,对该内存模块的访问请求的 响应数据或关联数据,对所述第一内存模块的访问请求,对所述第一内存模块 的访问请求的响应数据或关联数据,对所述第二内存模块的访问请求, 以及对 所述第二内存模块的访问请求的响应数据或关联数据。

26、 根据权利要求 24或 25所述的内存模块, 其特征在于, 所述内存管理 单元具体用于:

通过所述内存通道接口接收访问数据; 块;

若所述访问数据的目的内存模块不是当前内存模块,则根据所述访问数据 的目标地址与所述内存模块间互连接口的对应关系,确定与所述访问数据对应 的内存模块间互连接口,若与所述访问数据对应的内存模块间互连接口为第一 内存模块间互连接口,则将所述访问数据通过所述第一内存模块间互连接口发 送给所述第一内存模块 ,若与所述访问数据对应的内存模块间互连接口为第二 内存模块间互连接口,则将所述访问数据通过所述第二内存模块间互连接口发 送给所述第二内存模块;

若所述访问数据的目的内存模块是当前内存模块,则根据所述访问数据确 定与所述访问数据关联的目的存储单元,根据所述访问数据对所述目的存储单 元执行操作, 其中, 所述目的存储单元为当前内存模块的存储单元中的一个或 多个。

27、 根据权利要求 26所述的内存模块, 其特征在于, 所述内存管理单元 还用于:

通过所述第一内存模块间互连接口接收访问数据; 块;

若所述访问数据的目的内存模块不是当前内存模块,则将所述访问数据通 过所述第二内存模块间互连接口发送给所述第二内存模块;

若所述访问数据的目的内存模块是当前内存模块,则根据所述访问数据确 定与所述访问数据关联的目的存储单元,根据所述访问数据对所述目的存储单 元执行操作, 其中, 所述目的存储单元为当前内存模块的存储单元中的一个或 多个。

28、 根据权利要求 20-27任一项所述的内存模块, 其特征在于, 所述内存 模块为独立物理模块, 所述内存通道接口及内存模块间互连接口为物理接口。

29、 根据权利要求 20-28任一项所述的内存模块, 其特征在于, 所述内存 通道接口为双倍数据速率 DDR或 DDR2或 DDR3或 DDR4接口。

30、 根据权利要求 20-29任一项所述的内存模块, 其特征在于, 所述存储 单元包括动态随机存取存储器 DRAM芯片和 /或非易失性存储器 NVM芯片。

31、 一种内存模块访问方法, 其特征在于, 所述访问方法包括: 通过内存模块间互连接口接收读请求,所述内存模块间互连接口用于连接 除当前内存模块之外的其它内存模块; 根据所述读请求确定与所述读请求关联的目的存储单元,所述目的存储单 元为所述当前内存模块中包含的存储单元中的一个或多个;

读取所述目的存储单元中存储的数据作为所述读请求的响应数据; 将所述读请求的响应数据通过所述内存模块间互连接口或通过所述内存 模块上的内存通道接口发送。

32、 根据权利要求 31所述的方法, 其特征在于, 当所述内存模块间互连 接口为两个或两个以上时,在所述通过内存模块间互连接口接收读请求的步骤 之后, 所述方法还包括:

根据所述读请求判断所述读请求的目的内存模块是否是当前内存模块; 若所述读请求的目的内存模块不是当前内存模块,则将所述读请求通过与 所述读请求关联的内存模块间互连接口发送给其它内存模块;

若所述读请求的目的内存模块是当前内存模块,则执行所述根据所述读请 求确定与所述读请求关联的目的存储单元的步骤。

33、 根据权利要求 32所述的方法, 其特征在于, 所述根据所述读请求判 断所述读请求的目的内存模块是否是当前内存模块, 具体包括:

判断所述读请求的目标地址是否属于当前内存模块的地址空间; 或者, 判 断所述读请求的目标地址是否是当前内存模块的地址。

34、 根据权利要求 32或 33所述的方法, 其特征在于, 所述若所述读请求 的目的内存模块不是当前内存模块,则将所述读请求通过与所述读请求关联的 内存模块间互连接口发送给其它内存模块, 具体包括:

若所述读请求的目的内存模块不是当前内存模块,则根据所述读请求的目 标地址查询当前内存模块的路由表,获得与所述读请求的目标地址关联的内存 模块间互连接口的标识;

将所述读请求通过与所述内存模块间互连接口的标识对应的内存模块间 互连接口发送给其它内存模块;

所述路由表中存储有当前内存模块的内存模块间互连接口的标识与当前 内存模块连接的其它内存模块的地址的对应关系。

35、 根据权利要求 32或 33所述的方法, 其特征在于, 所述若所述读请求 的目的内存模块不是当前内存模块,则将所述读请求通过与所述读请求关联的 内存模块间互连接口发送给其它内存模块, 具体包括:

若所述读请求的目的内存模块不是当前内存模块,则从所述读请求的目标 地址中获取内存模块间互连接口的标识;将所述读请求通过与所述内存模块间 互连接口的标识对应的内存模块间互连接口发送给其它内存模块。

36、 根据权利要求 31所述的方法, 其特征在于, 所述方法还包括: 通过内存模块间互连接口接收写请求;

通过所述内存模块间互连接口接收所述写请求的关联数据; 或者, 通过所 述内存模块的内存通道接口接收所述写请求的关联数据;

根据所述写请求确定与所述写请求关联的目的存储单元;

将所述写请求的关联数据写入所述目的存储单元。

37、 根据权利要求 36所述的方法, 其特征在于, 当所述内存模块间互连 接口为两个或两个以上时,在所述通过内存模块间互连接口接收写请求的步骤 之后, 所述方法还包括:

根据所述写请求判断所述写请求的目的内存模块是否是当前内存模块; 若所述写请求的目的内存模块不是当前内存模块,则将所述写请求及所述 写请求的关联数据通过与所述写请求关联的内存模块间互连接口发送给其它 内存模块;

若所述写请求的目的内存模块是当前内存模块,则执行所述通过所述内存 模块间互连接口接收所述写请求的关联数据; 或者, 通过所述内存模块的内存 通道接口接收所述写请求的关联数据的步骤。

38、 一种内存模块访问方法, 其特征在于, 所述访问方法包括: 通过内存模块的内存通道接口接收访问请求;

根据所述访问请求判断所述访问请求的目的内存模块是否是当前内存模 块;

若所述访问请求的目的内存模块不是当前内存模块,则将所述访问请求通 过与所述访问请求关联的当前内存模块的内存模块间互连接口发送给其它内 存模块。

39、 根据权利要求 38所述的方法, 其特征在于, 所述根据所述访问请求 判断所述访问请求的目的内存模块是否是当前内存模块, 具体包括:

判断所述访问请求的目标地址是否属于当前内存模块的地址空间; 或者, 判断所述访问请求的目标地址是否是当前内存模块的地址。

40、 根据权利要求 38或 39所述的方法, 其特征在于, 所述若所述访问请 求的目的内存模块不是当前内存模块,则将所述访问请求通过与所述访问请求 关联的当前内存模块的内存模块间互连接口发送给其它内存模块, 具体包括: 若所述访问请求的目的内存模块不是当前内存模块,则根据所述访问请求 的目标地址查询当前内存模块的路由表,获得与所述访问请求的目标地址关联 的内存模块间互连接口的标识; 将所述访问请求通过与所述内存模块间互连接口的标识对应的内存模块 间互连接口发送给其它内存模块;

所述路由表中存储有当前内存模块的内存模块间互连接口的标识与当前 内存模块连接的其它内存模块的地址的对应关系。

41、 根据权利要求 38或 39所述的方法, 其特征在于, 所述若所述访问请 求的目的内存模块不是当前内存模块,则将所述访问请求通过与所述访问请求 关联的当前内存模块的内存模块间互连接口发送给其它内存模块, 具体包括: 若所述访问请求的目的内存模块不是当前内存模块,则从所述访问请求的 目标地址中获取内存模块间互连接口的标识;将所述访问请求通过与所述内存 模块间互连接口的标识对应的内存模块间互连接口发送给其它内存模块。

42、 一种内存模块访问控制方法, 其特征在于, 所述方法包括: 当内存控制器接收到的访问请求的目标地址位于第一内存模块,且访问所 述第一内存模块的第一内存通道为忙碌时,所述内存控制器将所述访问请求通 过访问第二内存模块的第二内存通道,及用于与第一内存模块连接的第二内存 模块的第二内存模块间互连接口,及所述第二内存模块通过所述第二内存模块 间互连接口与第一内存模块的连接, 发送给所述第一内存模块。

43、 根据权利要求 42所述的方法, 其特征在于, 所述方法还包括: 当内存控制器接收到的访问请求的目标地址位于第二内存模块,且访问所 述第二内存模块的第二内存通道为忙碌时,所述内存控制器将所述访问请求通 过访问第一内存模块的第一内存通道,及用于与第二内存模块连接的第一内存 模块的第一内存模块间互连接口,及所述第一内存模块通过所述第一内存模块 间互连接口与第二内存模块的连接, 发送给所述第二内存模块。 44、 一种计算机系统, 其特征在于, 所述计算机系统包括: 至少一个内存 控制器、以及第一内存模块和第二内存模块;所述内存模块与内存控制器连接; 所述第一内存模块设有第一内存通道接口,并通过所述第一内存通道接口 连接第一内存通道; 所述第二内存模块设有第二内存通道接口, 并通过所述第 二内存通道接口连接第二内存通道,所述第一内存模块通过所述第一内存通道 与所述内存控制器连接,所述第二内存模块通过所述第二内存通道与所述内存 控制器连接;

所述第一内存模块和所述第二内存模块还分别设有第一内存模块间互连 接口,所述第一内存模块的第一内存模块间互连接口与所述第二内存模块的第 一内存模块间互连接口连接。

45、 根据权利要求 44所述的系统, 其特征在于, 所述第一内存模块用于 通过所述第一内存模块的第一内存模块间接口与所述第二内存模块的第一内 存模块间互连接口的连接及所述第二内存通道接收或发送访问数据,以及通过 所述第一内存通道接收或发送访问数据。

46、 根据权利要求 45所述的系统, 所述访问数据包括以下中的一个或多 个: 对所述第一内存模块的访问请求,对所述第一内存模块的访问请求的响应 数据或关联数据,对所述第二内存模块的访问请求, 以及对所述第二内存模块 的访问请求的响应数据或关联数据。

47、 根据权利要求 44-46任一项所述的系统, 其特征在于, 所述第一内存 模块包括第一内存管理单元和至少一个存储单元,所述第一内存管理单元与所 述第一内存模块间互连接口、 所述第一内存通道接口以及所述存储单元连接, 所述第一内存管理单元用于: 通过所述第一内存通道接口接收访问数据; 存模块;

若所述访问数据的目的内存模块不是所述第一内存模块,则将所述访问数 据通过所述第一内存模块间互连接口发送给所述第二内存模块;

若所述访问数据的目的内存模块是所述第一内存模块,则根据所述访问数 据确定与所述访问数据关联的目的存储单元,根据所述访问数据对所述目的存 储单元执行操作, 其中, 所述目的存储单元为所述第一内存模块的存储单元中 的一个或多个。

48、 根据权利要求 47所述的系统, 其特征在于, 所述第一内存管理单元 还用于: 通过所述第一内存模块间互连接口接收访问数据,确定与所述访问数 据关联的目的存储单元; 根据所述访问数据对所述目的存储单元执行操作。

49、 根据权利要求 45所述的系统, 其特征在于, 所述系统还包括第三内 存模块, 所述第三内存模块设有第三通道接口; 所述第一内存模块和所述第三 内存模块还分别设有第二内存模块间互连接口,所述第一内存模块的第二内存 模块间互连接口与所述第三内存模块的第二内存模块间互连接口连接;

所述第三内存模块通过所述第三通道接口连接第三内存通道或第二内存 通道;

所述第一内存模块还用于通过所述第一内存模块的第二内存模块间互连 接口与所述第三内存模块的第二内存模块间互连接口之间的连接及所述第三 内存通道接收或发送对所述内存系统的访问数据。

50、 根据权利要求 49所述的系统, 其特征在于, 所述访问数据包括以下 中的一个或多个: 对所述第一内存模块的访问请求,对所述第一内存模块的访 问请求的响应数据或关联数据,对所述第二内存模块的访问请求,对所述第二 内存模块的访问请求的响应数据或关联数据, 对所述第三内存模块的访问请 求, 以及对所述第三内存模块的访问请求的响应数据或关联数据。

51、 根据权利要求 49或 50所述的系统, 其特征在于, 所述第一内存模块 包括第一内存管理单元和至少一个存储单元,所述第一内存管理单元与所述第 一内存模块间互连接口、 所述第二内存模块间互连接口、 所述第一内存通道接 口以及所述存储单元连接, 所述第一内存管理单元用于:

通过所述第一内存通道接口接收访问数据; 存模块;

若所述访问数据的目的内存模块不是所述第一内存模块,则根据所述访问 数据的目标地址与所述内存模块间互连接口的对应关系,确定与所述访问数据 对应的内存模块间互连接口,若与所述访问数据对应的内存模块间互连接口为 第一内存模块间互连接口,则将所述访问数据通过所述第一内存模块间互连接 口发送给所述第二内存模块 ,若与所述访问数据对应的内存模块间互连接口为 第二内存模块间互连接口,则将所述访问数据通过所述第二内存模块间互连接 口发送给所述第三内存模块;

若所述访问数据的目的内存模块是所述第一内存模块,则根据所述访问数 据确定与所述访问数据关联的目的存储单元,根据所述访问数据对所述目的存 储单元执行操作, 其中, 所述目的存储单元为所述第一内存模块的存储单元中 的一个或多个。 52、 根据权利要求 44-48任一项所述的系统, 其特征在于,

所述第一内存通道和所述第二内存通道与同一内存控制器连接。

53、 根据权利要求 52述的系统, 其特征在于, 所述内存控制器用于: 监测所述第一内存通道和所述第二内存通道的运行状况;

接收对所述内存系统的访问数据,并根据所述第一内存通道和所述第二内 存通道的运行状况将所述访问数据发送给所述内存系统。

54、 根据权利要求 53所述的系统, 其特征在于, 所述内存控制器具体用 于:

监测所述第一内存通道和所述第二内存通道的运行状况,所述运行状况包 括忙碌和空闲;

当接收到的所述访问数据的目标地址位于第一内存模块且所述第一内存 通道为忙碌时 ,所述内存控制器将所述访问数据通过所述第二内存通道发送给 第二内存模块,由所述第二内存模块通过所述第二内存模块的第一内存模块间 互连接口和所述第一内存模块的第一内存模块间互连接口之间的连接将所述 访问数据发送给第一内存模块;

当接收到的所述访问数据的目标地址位于第二内存模块且所述第二内存 通道为忙碌时 ,所述内存控制器将所述访问数据通过所述第一内存通道发送给 第一内存模块,由所述第一内存模块通过所述第一内存模块的第一内存模块间 互连接口与所述第二内存模块的第一内存模块间互连接口之间的连接将所述 访问数据发送给第二内存模块。

55、 根据权利要求 53或 54所述的系统, 其特征在于, 所述内存控制器还 用于: 记录所述访问数据的路径和所述访问数据的状态, 所述访问数据的路径 包含所述第一内存通道或第二内存通道,所述访问数据的状态包括访问数据是 否发送和 /或访问请求的结果是否返回。

56、 根据权利要求 44-48任一项所述的系统, 其特征在于,

所述第一内存通道与第一内存控制器连接,所述第二内存通道与第二内存 控制器连接。

57、 根据权利要求 56所述的系统, 其特征在于, 所述第一内存控制器与 第一处理器连接, 所述第二内存控制器与第二处理器连接; 或者, 所述第一内 存控制器内置于第一处理器, 所述第二内存控制器内置于第二处理器。

58、 根据权利要求 57所述的系统, 其特征在于, 所述第一处理器置于第 一单板上, 所述第二处理器置于第二单板上。

59、 根据权利要求 57或 58所述的系统, 其特征在于, 所述第一处理器和 第二处理器分别运行不同的操作系统。

60、 根据权利要求 44-59任一项所述的系统, 其特征在于, 所述不同的内 存模块的存储介质不相同; 或者, 不同的内存模块的存储介质相同。

61、 根据权利要求 44-60任一项所述的系统, 其特征在于, 所述内存模块 为独立物理模块, 所述内存通道接口及内存模块间互连接口为物理接口。

62、 根据权利要求 44-61任一项所述的系统, 其特征在于, 所述内存通道 接口为双倍数据速率 DDR接口或 DDR2接口或 DDR3接口或 DDR4接口。

Description:
内存系统、 内存模块、 内存模块的访问方法以及计算机系统 技术领域

本发明涉及计算机领域, 尤其涉及一种内存系统、 内存模块、 内存模块的 访问方法以及计算机系统 背景技术 从 90年代末期开始, 处理器工艺比内存工艺的发展速度要快 27%左右, 导致计算机内存系统逐渐成为制约整个系统性 能的瓶颈, "内存墙" 也逐渐显 现。 内存系统的性能指标主要是内存带宽和内存延 迟。 内存的延迟可以根据不 同请求对延迟的敏感程度, 釆用合理的请求调度策略, 来弱化访问延迟对应用 程序性能的影响。 而随着应用程序对内存的请求压力不断增加, 内存带宽的制 约就凸显出来。 "内存带宽墙" 的现象概括了现有内存系统的带宽对整个系统 性能的制约。 在传统的内存系统中可以存在一个或多个内存 通道,这些内存通道由内存 控制器管理,每个内存通道可以支持一个或多 个内存槽,每个内存槽上挂载内 存模块与内存芯片, 内存控制器与内存通道、 内存通道与内存模块间存在一条 交互通路, 不同内存通道之间以及内存模块间相互独立。 在以上传统的内存系 统中,如果内存请求集中在某一个内存通道上 , 该内存系统就会出现单个内存 通道忙碌, 而其它内存通道空闲的不均衡现象。 另外, 内存通道与内存控制器遵守同步的 DDR(Double Date Rate, 双倍数 据速率)协议和时序的约束。 当前空闲的内存模块在受到时序约束时, 也不能 接收命令或传输数据。 当下一个请求访问该内存模块时, 它不能及时地返回数 据。 这样, 数据总线上可能出现空闲的现象, 造成内存带宽资源的浪费。 在 "内存带宽墙"的背景下, 内存带宽属于宝贵资源,浪费带宽显得非常可 惜。 如何提高内存带宽的有效利用率, 是緩解内存系统瓶颈的一个重要挑战。 现有挖掘内存系统带宽资源的技术,主要思想 是将请求均勾分配到各个内 存通道、 rank甚至 bank上, 提高请求处理的并发度。 请求的并发度高意味着 请求能同时在多个内存通道上被处理,从而减 少内存总线空闲的比率和内存带 宽资源的浪费。给定一个内存地址,其所对应 的物理位置(如内存通道号、 rank 号及 bank号)是由内存控制器的地址映射方式决定 。 因此, 内存地址的映 射技术直接决定了请求并行度的大小。目前的 内存地址映射技术都是通过修改 内存地址映射的方式来提高内存系统的并发度 , 进而提高内存带宽的利用率。 然而, 内存地址映射方式的修改依赖于应用程序的特 征。 不同应用的特征以及 同一应用不同时期的特征都可能存在较大的差 异,这使得修改内存地址映射的 方式效率较低, 且该方法只适合于部分应用, 存在一定的局限性。 发明内容

本发明实施例提供一种内存系统、 内存模块、 内存模块的访问方法以及计 算机系统, 用以提高内存通道的利用率, 一定程度上緩解内存系统瓶颈。

为了达到上述目的, 本发明实施例提供如下技术方案:

第一方面, 本发明实施例提供一种内存系统, 所述内存系统包括: 第一内 存模块, 第二内存模块; 所述第一内存模块设有第一内存通道接口, 并通过所 述第一内存通道接口连接第一内存通道;所述 第二内存模块设有第二内存通道 接口, 并通过所述第二内存通道接口连接第二内存通 道; 所述第一内存模块和 所述第二内存模块还分别设有第一内存模块间 互连接口,所述第一内存模块的 第一内存模块间互连接口与所述第二内存模块 的第一内存模块间互连接口连 接。

结合第一方面,在第一种实现方式中, 所述第一内存模块用于通过所述第 一内存模块的第一内存模块间接口与所述第二 内存模块的第一内存模块间互 连接口的连接及所述第二内存通道接收或发送 对所述内存系统的访问数据,以 及通过所述第一内存通道接收或发送对所述内 存系统的访问数据。

结合第一方面的第一种实现方式,在第二种实 现方式中, 所述内存系统的 访问数据包括以下中的一个或多个: 对所述第一内存模块的访问请求,对所述 第一内存模块的访问请求的响应数据或关联数 据,对所述第二内存模块的访问 请求, 以及对所述第二内存模块的访问请求的响应数 据或关联数据。

结合第一方面或第一方面的第一种实现方式或 第一方面的第二种实现方 式,在第三种实现方式中, 所述第一内存模块包括第一内存管理单元和至 少一 个存储单元, 所述第一内存管理单元与所述第一内存模块间 互连接口、 所述第 一内存通道接口以及所述存储单元连接, 所述第一内存管理单元用于: 通过所 述第一内存通道接口接收访问数据;根据所述 访问数据判断所述访问数据的目 的内存模块是否是所述第一内存模块;若所述 访问数据的目的内存模块不是所 述第一内存模块,则将所述访问数据通过所述 第一内存模块间互连接口发送给 所述第二内存模块; 若所述访问数据的目的内存模块是所述第一内 存模块, 则 根据所述访问数据确定与所述访问数据关联的 目的存储单元,根据所述访问数 据对所述目的存储单元执行操作, 其中, 所述目的存储单元为所述第一内存模 块的存储单元中的一个或多个。

结合第一方面的第三种实现方式,在第四种实 现方式中, 所述第一内存管 理单元还用于: 通过所述第一内存模块间互连接口接收访问数 据,确定与所述 访问数据关联的目的存储单元;根据所述访问 数据对所述目的存储单元执行操 作。

结合第一方面的第一种实现方式,在第五种实 现方式中, 所述内存系统还 包括第三内存模块, 所述第三内存模块设有第三通道接口; 所述第三内存模块 通过所述第三通道接口连接第三内存通道;所 述第一内存模块和所述第三内存 模块还设有第二内存模块间互连接口,所述第 一内存模块的第二内存模块间互 连接口与所述第三内存模块的第二内存模块间 互连接口连接;所述第一内存模 块还用于通过所述第一内存模块的第二内存模 块间互连接口与所述第三内存 模块的第二内存模块间互连接口之间的连接及 所述第三内存通道接收或发送 对所述内存系统的访问数据。

结合第一方面的第五种实现方式,在第六种实 现方式中,对所述内存系统 的访问数据包括以下中的一个或多个: 对所述第一内存模块的访问请求,对所 述第一内存模块的访问请求的响应数据或关联 数据,对所述第二内存模块的访 问请求,对所述第二内存模块的访问请求的响 应数据或关联数据,对所述第三 内存模块的访问请求,以及对所述第三内存模 块的访问请求的响应数据或关联 数据。

结合第一方面的第五种实现方式或第一方面的 第六种实现方式,在第七种 实现方式中, 所述第一内存模块包括第一内存管理单元和至 少一个存储单元, 所述第一内存管理单元与所述第一内存模块间 互连接口、所述第二内存模块间 互连接口、 所述第一内存通道接口以及所述存储单元连接 , 所述第一内存管理 单元用于: 通过所述第一内存通道接口接收访问数据; 根据所述访问数据判断 所述访问数据的目的内存模块是否是所述第一 内存模块;若所述访问数据的目 的内存模块不是所述第一内存模块,则根据所 述访问数据的目标地址与所述内 存模块间互连接口的对应关系 ,确定与所述访问数据对应的内存模块间互连 口, 若与所述访问数据对应的内存模块间互连接口 为第一内存模块间互连接 口,则将所述访问数据通过所述第一内存模块 间互连接口发送给所述第二内存 模块,若与所述访问数据对应的内存模块间互 连接口为第二内存模块间互连接 口,则将所述访问数据通过所述第二内存模块 间互连接口发送给所述第三内存 模块; 若所述访问数据的目的内存模块是所述第一内 存模块, 则根据所述访问 数据确定与所述访问数据关联的目的存储单元 ,根据所述访问数据对所述目的 存储单元执行操作, 其中, 所述目的存储单元为所述第一内存模块的存储 单元 中的一个或多个。

第二方面, 本发明实施例提供一种内存模块, 所述内存模块设有内存通道 接口和第一内存模块间互连接口,所述内存模 块包括内存管理单元和至少一个 存储单元, 所述内存管理单元与所述内存通道接口、所述 第一内存模块间互连 接口以及所述存储单元连接; 所述内存通道接口用于连接内存通道; 所述内存 管理单元用于通过所述内存通道接口以及所述 内存通道接口连接的所述内存 通道接收或发送访问数据;所述第一内存模块 间互连接口用于与除该内存模块 之外的第一内存模块连接;所述内存管理单元 还用于通过所述第一内存模块间 互连接口及所述内存模块与所述第一内存模块 之间的连接发送或接收访问数 据。 结合第一方面,在第一种实现方式中, 所述访问数据包括以下中的一个或 多个: 对所述内存模块的访问请求,对所述内存模块 的访问请求的响应数据或 关联数据,对所述第一内存模块的访问请求, 以及对所述第一内存模块的访问 请求的响应数据或关联数据。

结合第二方面或第二方面的第一种实现方式, 在第二种实现方式中, 所述 内存管理单元具体用于: 通过所述内存通道接口及所述内存通道接收访 问数 块; 若所述访问数据的目的内存模块不是当前内存 模块, 则将所述访问数据通 过所述第一内存模块间互连接口发送给所述第 一内存模块;若所述访问数据的 目的内存模块是当前内存模块,则根据所述访 问数据确定与所述访问数据关联 的目的存储单元, 根据所述访问数据对所述目的存储单元执行操 作, 其中, 所 述目的存储单元为当前内存模块的存储单元中 的一个或多个。

结合第二方面的第二种实现方式,在第三种实 现方式中, 所述内存管理单 元还用于:通过所述第一内存模块间互连接口 及所述内存模块与所述第一内存 模块之间的连接接收访问数据, 确定与所述访问数据关联的目的存储单元; 根 据所述访问数据对所述目的存储单元执行操作 。

结合第二方面,在第四种实现方式中, 所述内存模块还设有第二内存模块 间互连接口, 所述内存管理单元还与所述第二内存模块间互 连接口连接; 所述 第二内存模块间互连接口用于与除该内存模块 和所述第一内存模块之外的第 二内存模块连接;所述内存管理单元还用于通 过所述第二内存模块间互连接口 及所述内存模块与所述第二内存模块之间的连 接接收或发送访问数据。

结合第二方面的第四种实现方式,在第五种实 现方式中, 所述访问数据包 括以下中的一个或多个: 对该内存模块的访问请求,对该内存模块的访 问请求 的响应数据或关联数据,对所述第一内存模块 的访问请求,对所述第一内存模 块的访问请求的响应数据或关联数据,对所述 第二内存模块的访问请求, 以及 对所述第二内存模块的访问请求的响应数据或 关联数据。

结合第二方面的第四种实现方式或第二方面的 第五种实现方式,在第六种 实现方式中, 所述内存管理单元具体用于: 通过所述内存通道接口接收访问数 块; 若所述访问数据的目的内存模块不是当前内存 模块, 则根据所述访问数据 的目标地址与所述内存模块间互连接口的对应 关系,确定与所述访问数据对应 的内存模块间互连接口,若与所述访问数据对 应的内存模块间互连接口为第一 内存模块间互连接口,则将所述访问数据通过 所述第一内存模块间互连接口发 送给所述第一内存模块 ,若与所述访问数据对应的内存模块间互连接 为第二 内存模块间互连接口,则将所述访问数据通过 所述第二内存模块间互连接口发 送给所述第二内存模块; 若所述访问数据的目的内存模块是当前内存模 块, 则 根据所述访问数据确定与所述访问数据关联的 目的存储单元,根据所述访问数 据对所述目的存储单元执行操作, 其中, 所述目的存储单元为当前内存模块的 存储单元中的一个或多个。

结合第二方面的第六种实现方式,在第七种实 现方式中, 所述内存管理单 元还用于: 通过所述第一内存模块间互连接口接收访问数 据; 根据所述访问数 据判断所述访问数据的目的内存模块是否是当 前内存模块;若所述访问数据的 目的内存模块不是当前内存模块,则将所述访 问数据通过所述第二内存模块间 互连接口发送给所述第二内存模块;若所述访 问数据的目的内存模块是当前内 存模块, 则根据所述访问数据确定与所述访问数据关联 的目的存储单元,根据 所述访问数据对所述目的存储单元执行操作, 其中, 所述目的存储单元为当前 内存模块的存储单元中的一个或多个。

第三方面,本发明实施例提供一种内存模块访 问方法,所述访问方法包括: 通过内存模块间互连接口接收读请求,所述内 存模块间互连接口用于连接除当 前内存模块之外的其它内存模块;根据所述读 请求确定与所述读请求关联的目 的存储单元,所述目的存储单元为所述内存模 块中包含的存储单元中的一个或 多个; 读取所述目的存储单元中存储的数据作为所述 读请求的响应数据; 将所 述读请求的响应数据通过所述内存模块间互连 接口或通过所述内存模块上的 内存通道接口发送。

结合第三方面,在第一种实现方式中, 当所述内存模块间互连接口为两个 或两个以上时,在所述通过内存模块间互连接 口接收读请求, 所述内存模块间 互连接口用于连接除当前内存模块之外的其它 内存模块的步骤之后,所述方法 还包括: 根据所述读请求判断所述读请求的目的内存模 块是否是当前内存模 块; 若所述读请求的目的内存模块不是当前内存模 块, 则将所述读请求通过与 所述读请求关联的内存模块间互连接口发送给 其它内存模块;若所述读请求的 目的内存模块是当前内存模块,则执行所述根 据所述读请求确定与所述读请求 关联的目的存储单元的步骤。

结合第三方面的第一种实现方式,在第二种实 现方式中, 所述根据所述读 请求判断所述读请求的目的内存模块是否是当 前内存模块, 具体包括: 判断所 述读请求的目标地址是否属于当前内存模块的 地址空间; 或者, 判断所述读请 求的目标地址是否是当前内存模块的地址。 集合第三方面的第一种实现方式或第三方面的 第二种实现方式,在第三种 实现方式中, 所述若所述读请求的目的内存模块不是当前内 存模块, 则将所述 读请求通过与所述读请求关联的内存模块间互 连接口发送给其它内存模块,具 体包括: 若所述读请求的目的内存模块不是当前内存模 块, 则根据所述读请求 的目标地址查询当前内存模块的路由表,获得 与所述读请求的目标地址关联的 内存模块间互连接口的标识;将所述读请求通 过与所述内存模块间互连接口的 标识对应的内存模块间互连接口发送给其它内 存模块;所述路由表中存储有当 前内存模块的内存模块间互连接口的标识与当 前内存模块连接的其它内存模 块的地址的对应关系。

集合第三方面的第一种实现方式或第三方面的 第二种实现方式,在第四种 实现方式中, 所述若所述读请求的目的内存模块不是当前内 存模块, 则将所述 读请求通过与所述读请求关联的内存模块间互 连接口发送给其它内存模块,具 体包括: 若所述读请求的目的内存模块不是当前内存模 块, 则从所述读请求的 目标地址中获取内存模块间互连接口的标识; 将所述读请求通过与所述内存模 块间互连接口的标识对应的内存模块间互连接 口发送给其它内存模块。

结合第三方面, 在第五种实现方式中, 所述方法还包括: 通过内存模块间 互连接口接收写请求;通过所述内存模块间互 连接口接收所述写请求的关联数 据; 或者, 通过所述内存模块的内存通道接口接收所述写 请求的关联数据; 根 据所述写请求确定与所述写请求关联的目的存 储单元;将所述写请求的关联数 据写入所述目的存储单元。

结合第三方面的第五种实现方式,在第六种实 现方式中, 当所述内存模块 间互连接口为两个或两个以上时,在所述通过 内存模块间互连接口接收写请求 的步骤之后, 所述方法还包括: 根据所述写请求判断所述写请求的目的内存模 块是否是当前内存模块; 若所述写请求的目的内存模块不是当前内存模 块, 则 将所述写请求及所述写请求的关联数据通过与 所述写请求关联的内存模块间 互连接口发送给其它内存模块; 若所述写请求的目的内存模块是当前内存模 块, 则执行所述通过所述内存模块间互连接口接收 所述写请求的关联数据; 或 者, 通过所述内存模块的内存通道接口接收所述写 请求的关联数据的步骤。

第四方面,本发明实施例提供一种内存模块访 问方法 ,所述访问方法包括: 通过内存模块的内存通道接口接收访问请求; 根据所述访问请求判断所述访问 请求的目的内存模块是否是当前内存模块;若 所述访问请求的目的内存模块不 是当前内存模块 ,则将所述访问请求通过与所述访问请求关联 当前内存模块 的内存模块间互连接口发送给其它内存模块。

结合第四方面,在第一种实现方式中, 所述根据所述访问请求判断所述访 问请求的目的内存模块是否是当前内存模块, 具体包括: 判断所述访问请求的 目标地址是否属于当前内存模块的地址空间; 或者, 判断所述访问请求的目标 地址是否是当前内存模块的地址。

结合第四方面或第四方面的第一种实现方式, 在第二种实现方式中, 所述 若所述访问请求的目的内存模块不是当前内存 模块,则将所述访问请求通过与 所述访问请求关联的当前内存模块的内存模块 间互连接口发送给其它内存模 块, 具体包括: 若所述访问请求的目的内存模块不是当前内存 模块, 则根据所 述访问请求的目标地址查询当前内存模块的路 由表,获得与所述访问请求的目 标地址关联的内存模块间互连接口的标识;将 所述访问请求通过与所述内存模 块间互连接口的标识对应的内存模块间互连接 口发送给其它内存模块;所述路 由表中存储有当前内存模块的内存模块间互连 接口的标识与当前内存模块连 接的其它内存模块的地址的对应关系。

结合第四方面或第四方面的第一种实现方式, 在第三种实现方式中, 所述 若所述访问请求的目的内存模块不是当前内存 模块,则将所述访问请求通过与 所述访问请求关联的当前内存模块的内存模块 间互连接口发送给其它内存模 块, 具体包括: 若所述访问请求的目的内存模块不是当前内存 模块, 则从所述 访问请求的目标地址中获取内存模块间互连接 口的标识;将所述访问请求通过 与所述内存模块间互连接口的标识对应的内存 模块间互连接口发送给其它内 存模块。

第五方面, 本发明实施例一种内存模块访问控制方法, 所述方法包括: 当 内存控制器接收到的访问请求的目标地址位于 第一内存模块,且访问所述第一 内存模块的第一内存通道为忙碌时,所述内存 控制器将所述访问请求通过访问 第二内存模块的第二内存通道,及用于与第一 内存模块连接的第二内存模块的 第二内存模块间互连接口,及所述第二内存模 块通过所述第二内存模块间互连 接口与第一内存模块的连接, 发送给所述第一内存模块。

结合第五方面, 在第一种实现方式中, 所述方法还包括: 当内存控制器接 收到的访问请求的目标地址位于第二内存模块 ,且访问所述第二内存模块的第 二内存通道为忙碌时,所述内存控制器将所述 访问请求通过访问第一内存模块 的第一内存通道,及用于与第二内存模块连接 的第一内存模块的第一内存模块 间互连接口,及所述第一内存模块通过所述第 一内存模块间互连接口与第二内 存模块的连接, 发送给所述第二内存模块。

第六方面, 本发明实施例提供一种计算机系统, 该计算机系统包括: 至少 一个内存控制器、 以及第一内存模块和第二内存模块; 所述内存模块与内存控 制器连接; 所述第一内存模块设有第一内存通道接口, 并通过所述第一内存通 道接口连接第一内存通道; 所述第二内存模块设有第二内存通道接口, 并通过 所述第二内存通道接口连接第二内存通道,所 述第一内存模块通过所述第一内 存通道与所述内存控制器连接,所述第二内存 模块通过所述第二内存通道与所 述内存控制器连接;所述第一内存模块和所述 第二内存模块还分别设有第一内 存模块间互连接口,所述第一内存模块的第一 内存模块间互连接口与所述第二 内存模块的第一内存模块间互连接口连接。

结合第六方面,在第一种实现方式中, 所述第一内存模块用于通过所述第 一内存模块的第一内存模块间接口与所述第二 内存模块的第一内存模块间互 连接口的连接及所述第二内存通道接收或发送 访问数据,以及通过所述第一内 存通道接收或发送访问数据。

结合第六方面的第一种实现方式,在第二种实 现方式中, 所述访问数据包 括以下中的一个或多个: 对所述第一内存模块的访问请求,对所述第一 内存模 块的访问请求的响应数据或关联数据,对所述 第二内存模块的访问请求, 以及 对所述第二内存模块的访问请求的响应数据或 关联数据。

结合第六方面或第六方面的第一种实现方式或 第六方面的第二种实现方 式,在第三种实现方式中, 所述第一内存模块包括第一内存管理单元和至 少一 个存储单元, 所述第一内存管理单元与所述第一内存模块间 互连接口、 所述第 一内存通道接口以及所述存储单元连接, 所述第一内存管理单元用于: 通过所 述第一内存通道接口接收访问数据;根据所述 访问数据判断所述访问数据的目 的内存模块是否是所述第一内存模块;若所述 访问数据的目的内存模块不是所 述第一内存模块,则将所述访问数据通过所述 第一内存模块间互连接口发送给 所述第二内存模块; 若所述访问数据的目的内存模块是所述第一内 存模块, 则 根据所述访问数据确定与所述访问数据关联的 目的存储单元,根据所述访问数 据对所述目的存储单元执行操作, 其中, 所述目的存储单元为所述第一内存模 块的存储单元中的一个或多个。

结合第六方面的第三种实现方式,在第四种实 现方式中, 所述第一内存管 理单元还用于: 通过所述第一内存模块间互连接口接收访问数 据,确定与所述 访问数据关联的目的存储单元;根据所述访问 数据对所述目的存储单元执行操 作。

结合第六方面的第一种实现方式,在第五种实 现中, 所述所述系统还包括 第三内存模块, 所述第三内存模块设有第三通道接口, 所述第三内存模块通过 所述第三通道接口连接第三内存通道;所述第 一内存模块和所述第三内存模块 还设有第二内存模块间互连接口,所述第一内 存模块的第二内存模块间互连接 口与所述第三内存模块的第二内存模块间互连 接口连接;所述第一内存模块还 用于通过所述第一内存模块的第二内存模块间 互连接口与所述第三内存模块 的第二内存模块间互连接口之间的连接及所述 第三内存通道接收或发送对所 述内存系统的访问数据。

结合第六方面的第五种实现方式,在第六种实 现方式中, 所述访问数据包 括以下中的一个或多个: 对所述第一内存模块的访问请求,对所述第一 内存模 块的访问请求的响应数据或关联数据,对所述 第二内存模块的访问请求,对所 述第二内存模块的访问请求的响应数据或关联 数据,对所述第三内存模块的访 问请求, 以及对所述第三内存模块的访问请求的响应数 据或关联数据。 结合第六方面的第五种实现方式或第六方面的 第六种实现方式,在第七种 实现方式中, 所述第一内存模块包括第一内存管理单元和至 少一个存储单元, 所述第一内存管理单元与所述第一内存模块间 互连接口、所述第二内存模块间 互连接口、 所述第一内存通道接口以及所述存储单元连接 , 所述第一内存管理 单元用于: 通过所述第一内存通道接口接收访问数据; 根据所述访问数据判断 所述访问数据的目的内存模块是否是所述第一 内存模块;若所述访问数据的目 的内存模块不是所述第一内存模块,则根据所 述访问数据的目标地址与所述内 存模块间互连接口的对应关系,确定与所述访 问数据对应的内存模块间互连接 口, 若与所述访问数据对应的内存模块间互连接口 为第一内存模块间互连接 口,则将所述访问数据通过所述第一内存模块 间互连接口发送给所述第二内存 模块,若与所述访问数据对应的内存模块间互 连接口为第二内存模块间互连接 口,则将所述访问数据通过所述第二内存模块 间互连接口发送给所述第三内存 模块; 若所述访问数据的目的内存模块是所述第一内 存模块, 则根据所述访问 数据确定与所述访问数据关联的目的存储单元 ,根据所述访问数据对所述目的 存储单元执行操作, 其中, 所述目的存储单元为所述第一内存模块的存储 单元 中的一个或多个。

结合第六方面或第六方面的第一种实现方式或 第六方面的第二种实现方 式或第六方面的第三种实现方式或第六方面的 第四种实现方式,在第八种实现 方式中, 所述第一内存通道与第一内存控制器连接, 所述第二内存通道与第二 内存控制器连接。

结合第六方面的第八种实现方式,在第九种实 现方式中, 所述第一内存控 制器与第一处理器连接, 所述第二内存控制器与第二处理器连接; 或者, 所述 第一内存控制器内置于第一处理器, 所述第二内存控制器内置于第二处理器。 结合第六方面的第九种实现方式,在第十种实 现方式中, 所述第一处理器 置于第一单板上, 所述第二处理器置于第二单板上。

结合第六方面的第九种实现方式或第六方面的 第十种实现方式,在第十一 种实现方式中, 所述第一处理器和第二处理器分别运行不同的 操作系统。

通过以上技术方案可知,本发明实施例通过在 内存模块中增加一个或多个 内存模块间互连接口,使内存系统中分属于不 同内存通道的多个内存模块能够 通过该内存模块间互连接口建立通信连接,进 而使得该内存系统中的内存模块 可以同时被多个内存通道所访问,从而在某一 内存通道负载过大的时候, 实现 通过另一负载较轻的内存通道对该负载过大的 内存通道上的内存模块的访问, 一定程度上解决了内存通道负载不均衡的情况 , 有效提高了内存通道的利用 率。

附图说明

为了更清楚地说明本发明实施例中的技术方案 ,下面将对实施例描述中所 需要使用的附图作简单地介绍, 显而易见地, 下面描述中的附图仅仅是本发明 的一些实施例,对于本领域普通技术人员来讲 ,在不付出创造性劳动的前提下, 还可以根据这些附图获得其他的附图。

图 1为本发明实施例提供的一种内存系统的逻辑 构示意图;

图 2a为本发明实施例提供的另一种内存系统的逻 结构示意图; 图 2b为本发明实施例提供的另一种内存系统的逻 结构示意图; 图 2c为本发明实施例提供的另一种内存系统的逻 结构示意图; 图 3a为本发明实施例提供的一种内存模块的逻辑 构示意图; 图 3 b为本发明实施例提供的另一种内存模块的逻 结构示意图; 图 4为本发明实施例提供的另一种内存系统的逻 结构示意图;

图 5为本发明实施例提供的另一种内存系统的逻 结构示意图;

图 6为本发明实施例提供的另一种内存系统的逻 结构示意图;

图 7为本发明实施例提供的另一种内存系统的逻 结构示意图;

图 8为本发明实施例提供的一种内存访问方法的 程示意图;

图 9为本发明实施例提供的另一种内存访问方法 流程示意图;

图 10a-图 10c为本发明实施例提供的一种内存访问方法的 实现示意图; 图 11为本发明实施例提供的一种内存访问方法的 程示意图;

图 12为本发明实施例提供的另一种内存访问方法 流程示意图; 图 13为本发明实施例提供的一种内存访问控制方 的流程示意图; 图 14为本发明实施例提供的一种计算机系统的逻 结构示意图; 图 15a为本发明实施例提供的一种计算机系统的局 部逻辑结构示意图; 图 15b为本发明实施例提供的另一种计算机系统的 局部逻辑结构示意图; 图 16为本发明实施例提供的另一种计算机系统的 部逻辑结构示意图; 图 17为本发明实施例提供的另一种计算机系统的 部逻辑结构示意图。 具体实施方式

为使本发明实施例的目的、技术方案和优点更 加清楚, 下面将结合本发明 实施例中的附图,对本发明实施例中的技术方 案进行清楚、完整地描述,显然, 所描述的实施例是本发明一部分实施例, 而不是全部的实施例。基于本发明中 的实施例 ,本领域普通技术人员在没有作出创造性劳动 提下所获得的所有其 他实施例, 都属于本发明保护的范围。

为了便于理解本发明的技术方案,首先介绍一 些在本发明实施例中出现的 技术术语。 本发明实施例中所提到的 CPU ( Central Processing Unit , 中央处理 器)是处理器的一种, 处理器还可以是 ASIC ( Application Specific Integrated Circuit, 应用特定集成电路), 或者其它是被配置成实施本发明实施例的一个 或多个集成电路, 本领域技术人员可以理解的是, 处理器的其它实现方式也可 以替代本发明实施例中的 CPU。

内存控制器是计算机系统内部控制内存模块 (或称之为内存 )并且通过内 存控制器使内存与处理器之间交换数据的重要 组成部分。目前比较流行的是将 内存控制器嵌入到 CPU中, 但也可以将内存控制器与 CPU分别独立实现, 二 者通过连接进行通信。

内存模块用于存储处理器(例如 CPU ) 的运行数据, 一个内存模块通常 包括一个或多个存储单元(或称之为内存芯片 )。 内存通道接口是内存模块上 用于连接内存通道的接口。 内存通道是内存模块与内存控制器连接的通道 。通 常情况, 一个或多个内存模块通过内存通道接口连接内 存通道, 进而通过内存 通道与内存控制器连接。 除非明确说明, 否则本发明实施例并不对内存通道接 口和内存通道的类型和遵循的传输协议进行限 定。

下面举例说明几种常用的内存模块。 DIMM ( Dual Inline Memory Modules , 双列直插式存储模块)是在奔腾 CPU推出后出现的新型内存模块, DIMM提 供了 64位的数据通道,因此它在奔腾主板上可以单 使用,它比 SIMM( single in-line memory module, 单边接触内存模组 )插槽要长一些, 并且它也支持新 型的 168线 EDORAM ( Extended Data Output RAM, 扩展数据输出内存)存储 器。 DRAM ( Dynamic Random Access Memory, 动态随机存取存 4诸器)为最常 见的内存芯片, 一个 DIMM或 SIMM中可以包含一个或多个 DRAM。 DRAM 只能将数据保持很短的时间。 为了保持数据, DRAM使用电容存储, 所以必 须隔一段时间刷新一次, 如果存储单元没有被刷新, 存储的信息就会丟失。 关 机或掉电之后 DRAM中存储的数据也会丟失。 NVM ( Non- Volatile Memory, 非易失性存储器)是另一种可做内存芯片的存 储颗粒, 一个 DIMM或 SIMM 中可以包含一个或多个 NVM。 NVM通常用来存放程序和数据,不同于 DRAM 的特性, 关机或掉电之后 NVM中存储的数据不会丟失。

另外, 需说明的是, 本发明实施例中所述的 "连接"指的是两个或两个以 上虚拟模块之间、 两个或两个以上实体模块之间、或者实体模块 与虚拟模块之 间具有通信连接, 其具体实现可以为一条或多条通信线路或信号 线路。 除非明 确说明, 否则该 "连接" 可以是直接连接, 可以是通过接口或端口连接, 还可 以是通过其它的虚拟模块或实体模块连接。 本发明实施例中所述的 "第一"和 "第二"等除非有明确说明,否则仅是为了区分 言,并非有特定的顺序关系。

请参考图 1 , 为本发明实施例提供的一种内存系统的逻辑结 构示意图。 如 图 1所示, 该内存系统 100包括: 第一内存模块 101 , 第二内存模块 102, 第 一内存模块 101设有第一内存通道接口 1011 ,并该所述第一内存通道接口 1011 连接第一内存通道 103; 第二内存模块 102设有第二内存通道接口 1021 , 并通 过第二内存通道接口 1021连接第二内存通道 104; 第一内存模块 101和第二 内存模块 102还设有第一内存模块间互连接口 1012和 1022 ,第一内存模块 101 的第一内存模块间互连接口 1012和第二内存模块 102的第二内存模块间互连 接口 1022连接,该第一内存模块 101的第一内存模块间接口 1012与第二内存 模块 102的第一内存模块间互连接口 1022的连接在图 1中示为 105。 需说明 的是,第一内存通道 103和第二内存通道 104还可以连接其它一个或多个内存 模块。

在本发明的一些实施例中, 第一内存模块 101用于通过第一内存模块 101 的第一内存模块间接口 1012与第二内存模块 102的第一内存间互连接口 1022 的连接及第二内存通道 104接收或发送对该内存系统的访问数据,以及 通过第 一内存通道 103接收或发送对该内存系统的访问数据。在本 发明的另一些实施 例中,第一内存模块 101用于通过第一内存模块 101的第一内存模块间互连接 口 1012与其它内存模块的内存模块间互连接口的 接接收或发送对内存系统 的访问数据。

其中,对该内存系统的访问数据包括以下中的 一个或多个: 对所述第一内 存模块的访问请求, 对所述第一内存模块的访问请求的响应数据或 关联数据, 对所述第二内存模块的访问请求,以及对所述 第二内存模块的访问请求的响应 数据或关联数据。 需说明的是, 所述访问请求可以为读请求, 可以为写请求。 当所述访问请求为读请求时,所述访问请求的 响应数据可以为读请求要从内存 系统中读取的数据, 当所述访问请求为写请求时, 所述访问请求的关联数据可 以为写请求要写入内存系统的数据。

在图 1所示内存系统中, 第一内存通道 103形成访问第一内存模块 101 的通路 110 (带双向箭头的虚线所示); 第二内存通道 104与内存模块间通信 连接 105 , 形成访问第一内存模块的通路 111 ; 通路 110与通路 111不共享物 理总线, 具体实现为第一内存通道 103和第二内存通道 104不共享物理总线, 因此通路 110与通路 111可以并行工作。 对于第一内存模块 101而言, 其不仅 可以通过第一内存通道 103 , 即通路 110 , 接收访问请求 (该访问请求可以来 自内存控制器 ), 也可以通过第二内存通道 104以及内存模块间的通信连接 105 , 即通路 111 , 接收访问请求。 同样, 第二内存模块 102不仅通过第二内 存通道 104接收访问请求 ,也可以通过第一内存通道 103以及内存模块间的通 信连接 105接收访问请求。对于访问请求的关联数据或 内存模块返回的访问请 求的响应数据也可以根据通路的运行状态(例 如忙碌或空闲 )选择合适的通路 进行发送, 本发明实施例中并不对访问数据的传输路线进 行限定, 即访问请求 和该访问请求的响应数据或关联数据可以通过 同一条通路传输,也可以通过不 同的通路传输。

需说明的是,本发明实施例提供的内存系统中 不同的内存模块的存储介质 可以不相同, 也可以相同, 本发明实施例对此不作限定。

图 2a为本发明实施例提供的内存系统 200的逻辑结构示意图, 图 2a中的 201-205、 210、 211、 2011、 2012、 2021、 2022分别与图 1中的 101-105、 110、 111、 1011、 1012、 1021、 1022意义相同, 在此不再赘述。 图 2a还示出了存储 控制器 206。 第一内存模块 201和第二内存模块 202通过不同的内存通道连接 同一内存控制器 206。

内存控制器 206用于检测第一内存通道 203和第二内存通道 204的运行状 况,接收对所述内存系统的访问数据, 并根据所述第一内存通道和所述第二内 存通道的运行状况将所述访问数据发送给所述 内存系统。 在一种实现方式下, 所述运行状况包括忙碌和空闲,当接收到的访 问请求的目标地址位于第一内存 模块 201且第一内存通道 203为忙碌时,内存控制器 206将所述访问请求通过 通路 211传递给第一内存模块 201 , 即通过第二内存通道 204发送给第二内存 模块 202, 由第二内存模块 202通过第二内存模块 202的第一内存模块间互连 接口 2022和第一内存模块 201的第一内存模块间互连接口 2012之间的连接 205将所述访问数据发送给第一内存模块 201 ; 同样地, 当接收到的访问请求 的目标地址位于第二内存模块 202且第二内存通道 204为忙碌时,内存控制器 206将所述访问请求通过第一内存通道 203传递给第一内存模块 201 , 由第一 内存模块 201通过第一内存模块 201的第一内存模块间互连接口 2012与第二 内存模块 202的第一内存模块间互连接口 2022之间的连接 205将所述访问数 据发送给第二内存模块 202。 在这种实现方式下, 根据读请求返回的响应数据 可以通过空闲的通路返回,也可以通过忙碌的 通路返回; 写请求的关联数据可 以与读请求通过同一条通路发送,也可以通过 不同的通路发送,对此本发明实 施例不作限定。

进一步地,内存控制器 206还用于记录所述访问数据的路径和所述访问 数 据的状态, 所述访问数据的路径包含所述第一内存通道或 第二内存通道, 所述 访问数据的状态包括访问数据是否发送。在本 发明实施例中, 所述访问请求的 路径可以是访问第一内存模块 201的通路 210或通路 211 , 当然也可以是访问 第二内存模块 202的对应通路。 所述访问请求的状态包括访问请求是否发送, 和 /或访问请求的结果是否返回。

图 2a所示的内存控制器 206内嵌在 CPU207中, 而在本发明的另一些实 施例中, 内存控制器也可以独立于处理器存在, 内存控制器与 CPU通过物理 连接进行通信。 在本发明的一些实施例中, 所述第一内存通道与第一内存控制器连接, 所 述第二内存通道与第二内存控制器连接,即第 一内存通道和第二内存通道可以 分别连接不同的内存控制器, 两个内存控制器可以内嵌在 CPU内部, 也可以 独立于 CPU存在。 在一种实现方式下, 两个内存控制器之间可以具有通信连 接。 其中, 当第一内存控制器连接的第一内存通道忙碌时 , 可以将访问请求通 过二者之间的通信连接发送给第二内存控制器 ,从而由第二内存控制器将该访 问请求通过第二内存通道发送给第二内存模块 ,再由第二内存模块通过内存模 块间互连接口将该访问请求发送给第一内存模 块。在另一种实现方式下, 若两 个内存控制器之间没有通信连接, 则可以设置负责调度的模块, 该模块与两个 内存控制器都有通信连接,并由该模块监控内 存通道的空闲或忙碌状态或者由 内存控制器将内存通道的状态发送给该模块, 该模块根据两条(或多条)内存 通道的状态、 决定访问请求发送给哪一个内存控制器。具体 调度方法参考本发 明前述实施例, 在此不再赘述。

进一步地, 如图 2b所示该内存系统 200还可以包含第三内存模块 208。 第三内存模块 208设有第三通道接口 2082; 第三内存模块 208通过第三通道 接口 2082连接第二内存通道 204; 第一内存模块 201和第三内存模块 208还 设有第二内存模块间互连接口 2013和 2081 , 第一内存模块 201的第二内存模 块间互连接口 2013与第三内存模块 208的第二内存模块间互连接口 2081连 接; 与图 2实施例相比, 图 2b所示的实施例中的第一内存模块 201还用于通 过第一内存模块 201的第二内存模块间互连接口 2013与第三内存模块 208的 第二内存模块间互连接口 2081之间的连接及第二内存通道 204接收或发送对 所述内存系统的访问数据。 在本发明的其它一些实施例中, 第三内存模块 208 连接的内存通道可以是除第一内存通道和第二 内存通道之外的其它内存通道。 在本发明的另一些实施例中,内存系统中的两 条或两条以上内存通道都可 以连接两个或两个的内存模块, 内存模块之间可以根据需要建立一对一、一对 多和 /或多对一的连接关系。 例如如图 2c所示, 第一内存通道 203通过第四内 存模块的内存通道接口 2092连接第四内存模块 209 , 第四内存模块 209与第 三内存模块 208通过各自的内存模块互连接口 2091和 2081连接。 在图 2c的 基础上,第一内存模块和第三内存模块也可以 通过另外的内存模块间互连接口 (图中未示出)连接。

需说明的是,本发明实施例中所述的内存模块 的存储介质可以相同也可以 不同,例如第一内存模块 201是 DRAM内存模块,第二内存模块 202是 NVM 或其它类型的内存模块。 本发明实施例中所述内存模块可以为独立物理 模块, 所述内存通道接口及内存模块间互连接口为物 理接口。本发明实施例中所述内 存通道接口可以为遵循 DDR或 DDR2或 DDR3或 DDR4协议的双倍速率接口, 也可以为遵循其它协议的其它类型的接口。

请参阅图 3a为本发明实施例提供的内存模块 301的内部结构示意图, 该 内存模块可以应用于本发明前述实施例的内存 系统(例如图 1、 图 2a、 图 2c 中的第一内存模块 201 ), 也可以应用于其它内存系统。 如图 3a所示, 该内存 模块 301包括内存管理单元 3011、 内存通道接口 3012、 内存模块间互连接口 3013 (连接其它内存模块)以及多个存储单元 3014; 内存管理单元 3011与内 存模块间互连接口 3013、 内存通道接口 3012以及存储单元 3014连接。 内存 通道接口 3012用于连接内存通道; 内存管理单元 3011用于通过所述内存通道 接口以及所述内存通道接口连接的所述内存通 道接收或发送访问数据;内存模 块间互连接口 3013用于与除该内存模块之外的其它内存模块 接, 内存管理 单元 3011还用于通过内存模块间互连接口 3013发送或接收访问数据 ,具体地 , 根据图 3a内存管理单元 3011用于通过内存模块间互连接口 3013及所述内存 模块与所述其它内存模块之间的连接发送或接 收访问数据。所述访问数据包括 以下中的一个或多个: 对所述内存模块的访问请求,对所述内存模块 的访问请 求的响应数据或关联数据,对所述第一内存模 块的访问请求, 以及对所述第一 内存模块的访问请求的响应数据或关联数据。

如图 3a所示, 内存管理单元 3011用于通过内存通道接口 3012及所述内 存通道接收访问数据;根据所述访问数据判断 所述访问数据的目的内存模块是 否是当前内存模块; 若所述访问数据的目的内存模块不是当前内存 模块, 则将 所述访问数据通过所述第一内存模块间互连接 口 3013发送给其它内存模块; 若所述访问数据的目的内存模块是当前内存模 块,则根据所述访问数据确定与 所述访问数据关联的目的存储单元,根据所述 访问数据对所述目的存储单元执 行操作, 其中, 所述目的存储单元为当前内存模块的存储单元 3014中的一个 或多个。 模块是否是当前内存模块的步骤具体包括:判 断所述访问数据的目标地址是否 属于当前内存模块的地址空间, 或者, 判断所述访问数据的目标地址是否是当 前内存模块的地址。所述访问数据的目标地址 是所述访问数据的目的内存模块 的地址, 可以是一个数值, 也可以是数值范围。 该目标地址可以是访问数据自 己携带的。 在另一种实现方式下, 该访问数据中可以包含标识位, 该标识位用 于标识该访问数据的目标地址是否是当前内存 模块。 该标识位可以实现为 0 和 1 , 若接收到的访问数据的标识位是 0 , 则确定该访问数据的目标地址是当 前内存模块; 若是 1 , 则不是当前内存模块。

在本发明一些实施例中, 若所述访问数据为读请求, 则对所述目的存储单 元执行读操作; 若所述访问数据写请求, 则对所述目的存储单元执行写操作。

内存管理单元 3011还用于:通过内存模块间互连接口 3013及该内存模块

301与其它内存模块之间的连接接收访问数据 , 确定与所述访问数据关联的目 的存储单元; 根据所述访问数据对所述目的存储单元执行操 作。

在本发明的一些实施例中,内存模块可以包含 两个或两个以上内存模块间 互连接口。在这种实现下,通过其中一个内存 模块间互连接口接收的访问数据, 例如读请求或写请求,也需判断该访问数据的 目的内存模块是否是当前内存模 块,因为当前内存模块可能是上一个内存模块 到下一个内存模块的中间内存模 块。

进一步地,如图 3b所示,内存模块 301还设有内存模块间互连接口 3015 , 内存管理单元 3011还与所述内存模块间互连接口 3015连接; 内存模块间互连 接口 3015用于与除该内存模块和内存模块间互连接 3013连接的内存模块之 外的其它内存模块连接; 内存管理单元 3011还用于通过内存模块间互连接口 3015以及其与其它内存模块的连接接收或发送 问数据。 内存模块间互连接 口 3013和内存模块间互连接口 3015连接的两个或多个内存模块可以连接同一 内存通道, 也可以连接不同的内存通道。 所述访问数据包括以下中的一个或多 个: 对该内存模块的访问请求,对该内存模块的访 问请求的响应数据或关联数 据,对所述第一内存模块的访问请求,对所述 第一内存模块的访问请求的响应 数据或关联数据,对所述第二内存模块的访问 请求, 以及对所述第二内存模块 的访问请求的响应数据或关联数据 <

如图 3b所示, 内存管理单元 3011具体用于: 通过内存通道接口 3012接 收访问数据; 模块是否是当前 内存模块; 若所述访问数据的目的内存模块不是当前内存 模块, 则根据所述访 问数据的目标地址与内存模块间互连接口的对 应关系,确定与所述访问数据对 应的内存模块间互连接口,若与所述访问数据 对应的内存模块间互连接口为内 存模块间互连接口 3013 , 则将所述访问数据通过内存模块间互连接口 3013发 送给与 3013连接的其它内存模块, 若与所述访问数据对应的内存模块间互连 接口为内存模块间互连接口 3015 , 则将所述访问数据通过内存模块间互连接 口 3015发送给与 3015连接的其它内存模块;若所述访问数据的 的内存模块 元, 根据所述访问数据对所述目的存储单元执行操 作, 其中, 所述目的存储单 元为当前内存模块的存储单元中的一个或多个 。 具体实现可参考前述实施例, 在此不再赘述。

进一步地, 如图 3b所示, 内存管理单元 3011还可以用于: 通过内存模块 间互连接口 3013接收访问数据; 根据所述访问数据判断所述访问数据的目的 内存模块是否是当前内存模块;若所述访问数 据的目的内存模块不是当前内存 模块,则将所述访问数据通过内存模块间互连 接口 3015发送给与 3015连接的 其它内存模块; 若所述访问数据的目的内存模块是当前内存模 块, 则根据所述 目的存储单元执行操作, 其中, 所述目的存储单元为当前内存模块的存储单元 中的一个或多个。 本领域技术人员容易理解的是,上述方法内存 模块通过两个内存模块间互 连接口中的一个接收到访问数据之后 ,也可以判断是通过内存通道还是另一个 内存模块间互连接口转发出去。当内存模块具 有三个或三个以上内存模块间互 连接口时,无论从内存通道还是其中一个内存 模块间互连接口接收到的访问数 据, 都需要经过判断确定通过哪一个内存模块间互 连接口转发出去。

在本发明的一些实施例中, 所述内存模块为独立物理模块, 所述内存通道 接口及内存模块间互连接口为物理接口。 内存通道接口可以为双倍数据速率 DDR或 DDR2或 DDR3或 DDR4接口。 存储单元包括动态随机存取存储器 DRAM芯片和 /或非易失性存储器 NVM芯片。

通过以上技术方案可知,本发明实施例通过在 内存模块中增加一个或多个 内存模块间互连接口,使内存系统中分属于不 同内存通道的多个内存模块能够 通过该内存模块间互连接口建立通信连接,进 而使得该内存系统中的内存模块 可以同时被多个内存通道所访问,从而在某一 内存通道负载过大的时候, 实现 通过另一负载较轻的内存通道对该负载过大的 内存通道上的内存模块的访问, 一定程度上解决了内存通道负载不均衡的情况 , 有效提高了内存通道的利用 率。

另夕卜,通过本发明实施例提供的技术方案, 不同内存控制器连接的内存模 块之间, 不同 CPU连接的不同内存模块之间, 甚至不同单板、 不同机拒、 不 同计算机系统的内存模块之间都可以建立连接 , 形成一个内存区域网络, 该内 存区域网络可以被不同内存控制器、 不同 CPU、 不同单板、 不同机拒、 不同 计算机系统共享。内存模块间连接形成的拓朴 可以根据需求通过设置内存模块 上互连接口的个数和连接关系来设置。 下面通过一些具体的实施方式来说明。 请参阅图 4,为本发明实施例提供的一种内存系统 400的逻辑结构示意图。 如图 4所示, 不同的 CPU分别包含内存控制器(本发明实施例以内存 控制器 内嵌入 CPU为例进行说明, 实际实现中内存控制器与 CPU也可以独立分开实 现), 并由该内存控制器通过内存通道(图中实线连 接所示)连接一个内存模 块, 各个 CPU的内存模块之间通过内存模块间互连接口 (图中未示出)进行 连接。其中, 图 4中实线所示为内存控制器与与各自的内存模 之间的内存通 道, 虚线为各个内存模块之间通过内存模块间互连 接口建立的连接。 由图 4 可见, 分属于不同 CPU的内存模块之间通过建立互连形成了一个内 存区域网 络, 每个 CPU通过与其连接的内存通道可以实现访问整个 内存区域网络中各 个内存模块, 内存区域网络对于单个 CPU或内存控制器可以是透明的。

图 4中多个内存模块具体可以实现为 DIMM或 SIMM模块, 其中每个内 存模块内部可以包含一个或多个 DRAM作为存储单元, 或者包含一个或多个 NVM作为存储单元。 各个内存模块内部的存储介质可以是同类型的 , 也可以 是不同类型的,对此本发明实施例并不做限定 。其中内存模块间的通信连接可 以实现为高速总线, 所述高速总线既可以是异步的串行总线,也可 以是同步的 并行总线。 如果是异步的串行总线, 总线中传输的数据单元可以是消息包。 消 息包的形式比较灵活, 里面的内容例如命令、 数据都可以配置。

图 4中所示多个 CPU可以全部或部分位于一个计算机系统内部, 也可以 分别属于不同的计算机系统。 后者的情况下, 一个 CPU可以看做一个服务器 节点, 不同的服务器节点可能位于不同的物理位置, 而不同物理位置的服务器 节点间的网络延迟、 带宽等可能存在一些差异, 不同服务器节点的性能参数以 及网络影响的大小也存在不同之处,而且不同 应用程序的特征对内存性能的要 求也不大相同。 因此, 内存区域网络的形式可以根据不同的需求进行 设置, 内 存区域网络的组织可以是图 4所示的网格网络,也可以是层次或半层次化 网 络,还可以是集中式的网络。 不同组织形式的内存区域网络都可以借鉴本文 中 其它实施例中介绍的内存模块结构,在此基础 上, 本领域普通技术人员可以通 过调整内存模块间互连接口的数量、内存模块 间的连接关系以及内存模块中的 路由功能等实现。

可见, 实现了内存模块间互连之后, 不同服务器节点可以方便、 快捷地共 享整个系统的内存资源。对于不同服务器内存 负载不均衡的现象, 内存数据可 以通过高速的内存区域网络在不同节点间进行 快速的移动和部署。系统的内存 资源可以在内存区域网络内形成虚拟的全局内 存地址空间,透明地共享。另外, 如果不同节点间要进行数据的交互,如数据复 制等操作, 内存区域网络可以不 通过传统的内存控制器、 操作系统、 网络协议栈等一套流程, 而直接迅速地完 成数据的操作。

请参阅图 5, 为本发明实施例提供的一种不同存储介质组成 的内存系统 500的逻辑结构示意图。 其中每个内存控制器通过内存通道 (图 5中实线连接 所示 )连接一个 DRAM内存模块和一个 NVM内存模块。 DRAM内存模块中 的一个或多个存储单元(或称之为 "内存芯片")使用的是 DRAM存储介质, NVM内存模块中的一个或多个存储单元使用的是 NVM存储介质。 不同内存 控制器的 DRAM内存模块和 NVM模块设有内存模块间互连接口, 并通过这 些接口建立如图 5中虚线所示的连接关系。 DRAM内存模块和 NVM内存模块 的具体实现可以参考本发明任意内存模块实施 例以及本领域人员据此可以获 知的任意变形实现方式。 在本发明的另一些实施例中, 图 5中所示的 DRAM内存模块和 NVM内 存模块可以通过遵循不同的协议的内存通道接 口和内存通道与同一内存控制 器连接。

在图 5所示的实施例中, 根据对 DRAM内存模块和 NVM内存模块的使 用方式不同, 内存模块间的连接关系也会存在差异。 在一种实现方式下, 如果 NVM内存模块只是作为 DRAM内存模块的数据备份, 那么 DRAM内存模块 与 NVM内存模块之间的连接使用的线路的频率和带 宽可以不用特别高; 在另 一种实现方式下, 如果 NVM内存模块作为 DRAM内存模块的一部分, 那么 二者之间的连接使用的线路的频率和带宽必须 达到特定的频率和带宽要求。

图 5所示的内存系统与图 4所示的内存系统相比增加了 NVM内存模块。

DRAM内存模块与 NVM内存模块在容量、延迟、 带宽、 功耗及持久性等方面 有各自的优缺点,图 5将这些不同存储介质的内存模块连接在一起 为一个内 存区域网络, 可以充分利用各种存储介质的特性, 最大化该内存系统在容量、 延迟、 功耗等各个方面的优势。、

需说明的是, 具体实现中内存模块的种类也可以选择出 DRAM和 NVM 之外的其它, 混合的种类可以是两种, 也可以是两种以上。 内存模块间的连接 关系可以实现为如图 5所示的网格网络, 或者层次或半层次化网络, 或者集中 式网络。

请参阅图 6, 为本发明实施例提供的另一种内存系统 600的逻辑结构示意 图。 在前述图 5实施例的基础上, 图 6所示的内存系统中, 每一个 CPU都有 自己的私有内存模块, 该私有内存模块可以实现为 DIMM内存模块或其它种 类的内存模块。 不同 CPU的私有内存模块可以是相同类型, 也可以是不同类 型。 该私有内存模块没有设置内存模块间互连接口 , 仅通过内存通道(图中实 线连接所示 )与内存控制器连接, 因此不能被其它的内存模块及其它内存控制 器或 CPU所访问。

各个 CPU连接各自的私有内存模块和内存区域网络, 由于内存区域网络 在一定程度上为所有处理器共享, 而共享的内存模块在容量、 延迟、 带宽等方 面都可能受到约束, 因此各个 CPU的私有内存模块可以在一定程度上用来满 足 CPU对内存的独占需求。各个 CPU的私有内存模块可以用来存放各个 CPU 比较核心的、 经常访问的数据, 而不用担心内存带宽、 容量等被其它 CPU影 响。

请参阅图 7, 为本发明实施例提供的一种内存系统的逻辑结 构示意图。 如 图 7所示, 8个 CPU分别成对位于 4块单板(也可以为母板或主板)上, 每 两块单板属于一个计算机系统。 这两块单板可以位于同一个机拒,也可以位于 不同的机拒。除私有内存模块之外的不同计算 机系统内的内存模块可以通过本 发明实施例提供的内存系统共享。

通过以上实施例的描述可以看出, 本发明以多维的方式来组织内存模块, 除了内存模块和内存控制器的连接之外,还存 在内存模块间的连接。 内存模块 个维度的连接被其它的内存模块, 进而被其它的内存通道所访问,从而改变了 传统的一维内存组织形式, 以及其造成的内存通道间无法协调的现象, 充分利 用所有内存通道的内存总线, 提高内存总线带宽的利用率。

下面再通过一些具体的实施例介绍本发明提供 的内存系统中内存模块的 访问方式。 请参阅图 8, 为本发明实施例提供的内存模块访问方法的方 法流程示意 图, 该方法可以应用于本发明实施例提供的内存系 统, 该内存系统包括两个或 两个以上内存模块,所述内存模块包括内存通 道接口和至少一个内存模块间互 连接口, 内存模块的实现方式可参考前述实施例所述。 如图 8所示, 该方法包 括:

5101、通过内存模块间互连接口接收读请求, 述内存模块间互连接口用 于连接除当前内存模块之外的其它内存模块;

5102、根据所述读请求确定与所述读请求关联 目的存储单元,所述目的 存储单元为所述内存模块中包含的存储单元中 的一个或多个;

S103、 读取所述目的存储单元中存储的数据作为所述 读请求的响应数据;

S 104、将所述读请求的响应数据通过所述内存模 块间互连接口或通过所述 内存模块上的内存通道接口发送。

进一步的,当所述内存模块间互连接口为两个 或两个以上时,如图 9所示, 本发明实施例提供另一种内存系统访问方法, 该方法包括:

S201、通过内存模块间互连接口接收读请求, 述内存模块间互连接口用 于连接除当前内存模块之外的其它内存模块。

S202、根据所述读请求判断所述读请求的目的 存模块是否是当前内存模 块; 若所述读请求的目的内存模块不是当前内存模 块, 则将所述读请求通过与 所述读请求关联的内存模块间互连接口发送给 其它内存模块(S206 ); 若所述 读请求的目的内存模块是当前内存模块, 则执行步骤 S203。

步骤 S203、 S204和 S205分别于图 8中的步骤 S102、 S103和 S104相同, 在此不再赘述。 具体地, 步骤 S202可以实现为: 判断所述读请求的目标地址是否属于当 前内存模块的地址空间; 或者, 判断所述读请求的目标地址是否是当前内存模 块的地址。 若所述读请求的目标地址属于当前内存模块的 地址空间, 或者, 所 述读请求的目标地址是当前内存模块的地址, 则判断结果为是; 若所述读请求 的目标地址不属于当前内存模块的地址空间, 且所述读请求的目标地址不是当 前内存模块的地址, 则判断结果为否。

在一种实现方式下, 步骤 S206具体为: 根据所述读请求的目标地址查询 当前内存模块的路由表,获得与所述读请求的 目标地址关联的内存模块间互连 接口的标识;将所述读请求通过与所述内存模 块间互连接口的标识对应的内存 模块间互连接口发送给其它内存模块;所述路 由表中存储有当前内存模块的内 存模块间互连接口的标识与当前内存模块连接 的其它内存模块的地址的对应 关系。

如图 10a所示,内存管理模块中维护有不同接口的接 口标识与内存地址之 间的对应关系, 以下称之为路由表。该路由表中的第一列存储 内存模块中两个 内存模块间互连接口的接口标识, 1和 2分别标识内存模块间互连接口 1和内 存模块间互连接口 2; 第二列是内存模块间互连接口对应的内存地址 空间, 每 个接口对应的内存地址空间可以是连续的一个 地址空间,也可以是多个不连续 的地址空间, 例如可以是 0MB~255MB等这样一个地址范围空间和

1024MB-1279MB这样一个地址范围空间。

在另一种实现方式下, 步骤 S206具体为: 从所述读请求的目标地址中获 取内存模块间互连接口的标识;将所述读请求 通过与所述内存模块间互连接口 的标识对应的内存模块间互连接口发送给其它 内存模块。 请参阅图 10b, 为访问请求中携带的目标地址的一个示例图。 该目标地址 中包含接口标识、 bank标识、 row标识、 column标识以及其它信息。 其中, bank标识、 row标识、 column标识都是本领域技术人员熟知的内存地址 中的 通用标识,而其它信息是根据需要扩展的信息 ,在此不再赘述。需要说明的是, 所述接口标识用来标识该访问请求需要路由的 接口,可能是内存通道接口的标 识, 也可能内存模块间互连接口的标识。

在另一种实现方式下, 步骤 S206具体为: 直接从访问请求中获取内存模 块间互连接口的标识,然后将此访问请求转发 至与此内存模块间互连接口的标 识对应的内存模块间互连接口。

若内存模块间的互连釆用的是异步的串行总线 ,那么该总线中传输的数据 单元可以是消息包, 消息包的形式比较灵活, 里面的内容例如命令、 数据等都 可以进行配置。 图 10c为本发明实施例中访问请求的消息包形式的 一个示例, 该消息包中包含包头、 内存地址、 消息包大小以及该消息包需要路由的内存模 块及内存模块间互连接口。从图 10c中可以看出, 该消息包从内存模块 1的内 存模块间互连接口 1路由出去, 最后由内存模块 k的内存模块间互连接口 m 路由到与此内存模块间互连接口 m连接的内存模块。 因此, 内存管理单元 601 可以直接从该消息包中获取内存模块间互连接 口标识,将该消息包路由到对应 的内存模块间互连接口,然后下一个内存模块 的内存管理单元也可以釆用同样 的方式继续进行路由, 直到到达真正的目的内存模块,根据内存地址 确定需要 访问的是该目的内存模块的哪一个或多个存储 单元。

进一步地, 如图 11所示, 本发明实施例提供的内存模块访问方法还可以 包括: 5301、 通过内存模块间互连接口接收写请求;

5302、 通过所述内存模块间互连接口接收所述写请求 的关联数据; 或者, 通过所述内存模块的内存通道接口接收所述写 请求的关联数据;

5303、 根据所述写请求确定与所述写请求关联的目的 存储单元;

S304、 将所述写请求的关联数据写入所述目的存储单 元。

当所述内存模块间互连接口为两个或两个以上 时, 如图 12所示, 所述方 法包括:

5401、 通过内存模块间互连接口接收写请求;

5402、根据所述写请求判断所述写请求的目的 存模块是否是当前内存模 块; 具体判断方法可以参考前述读请求的判断方法 。

若所述写请求的目的内存模块不是当前内存模 块, 则执行步骤 S406将所 述写请求及所述写请求的关联数据通过与所述 写请求关联的内存模块间互连 接口发送给其它内存模块;

若所述写请求的目的内存模块是当前内存模块 , 则执行步骤 S403。

步骤 S403、 S404和 S405与前述实施例的步骤 S302、 S303和 S304类似, 在此不再 赘述。

本领域技术人员容易理解的是, 本发明实施例中,接收写请求和接收写请 求关联数据可以通过同一条传输线路, 也可以通过不同的传输线路; 转发写请 求和写请求的关联数据可以通过同一条传输线 路, 也可以通过不同的线路,对 写请求和写请求的关联数据是否通过统一通路 传输并不做限定。写请求的目的 内存模块的判断过程可以参考前述读请求的实 施例, 在此不再赘述。

另外, 需说明的是, 步骤 S301-S304或步骤 S401-S406与步骤 S101-S104 或步骤 S201-S206没有特定的顺序关系。对于内存模块而 言,接收的是读请求 就可以执行步骤步骤 S101-S104或步骤 S201-S206 , 接收的是写请求, 就可以 执行步骤 S301-S304或步骤 S401-S406

请参阅图 13 , 为本发明实施例提供的另一种内存模块的访问 方法的方法 流程示意图。 该方法包括:

5501、 通过内存模块的内存通道接口接收访问请求;

5502、根据所述访问请求判断所述访问请求的 的内存模块是否是当前内 存模块;若所述访问请求的目的内存模块不是 当前内存模块,则执行步骤 S503. 具体地, 步骤 S502可以实现为: 判断所述访问请求的目标地址是否属于 当前内存模块的地址空间; 或者, 判断所述访问请求的目标地址是否是当前内 存模块的地址。

S503、将所述访问请求通过与所述访问请求关 的当前内存模块的内存模 块间互连接口发送给其它内存模块。

在一种实现方式下, 步骤 S503具体实现为: 根据所述访问请求的目标地 址查询当前内存模块的路由表,获得与所述访 问请求的目标地址关联的内存模 块间互连接口的标识;将所述访问请求通过与 所述内存模块间互连接口的标识 对应的内存模块间互连接口发送给其它内存模 块;所述路由表中存储有当前内 存模块的内存模块间互连接口的标识与当前内 存模块连接的其它内存模块的 地址的对应关系。

在另一种实现方式下, 步骤 S503具体实现为: 从所述访问请求的目标地 址中获取内存模块间互连接口的标识;将所述 访问请求通过与所述内存模块间 互连接口的标识对应的内存模块间互连接口发 送给其它内存模块。 若所述访问请求的目的内存模块是当前内存模 块,那么执行方式类似于前 述实施例。

本发明实施例还提供一种内存模块访问控制方 法,该方法可以应用于内存 控制器中。 该方法包括:

当内存控制器接收到的访问请求的目标地址位 于第一内存模块,且访问所 述第一内存模块的第一内存通道为忙碌时,所 述内存控制器将所述访问请求通 过访问第二内存模块的第二内存通道,及用于 与第一内存模块连接的第二内存 模块的第二内存模块间互连接口,及所述第二 内存模块通过所述第二内存模块 间互连接口与第一内存模块的连接, 发送给所述第一内存模块。

进一步地, 该方法还可以包括:

当内存控制器接收到的访问请求的目标地址位 于第二内存模块,且访问所 述第二内存模块的第二内存通道为忙碌时,所 述内存控制器将所述访问请求通 过访问第一内存模块的第一内存通道,及用于 与第二内存模块连接的第一内存 模块的第一内存模块间互连接口,及所述第一 内存模块通过所述第一内存模块 间互连接口与第二内存模块的连接, 发送给所述第二内存模块。

通过以上技术方案可知 ,本发明实施例提供的内存访问方法和内存访 控 制方法可以使内存模块同时被多个内存通道所 访问,从而在某一内存通道负载 过大的时候,实现通过另一负载较轻的内存通 道对该负载过大的内存通道上的 内存模块的访问, 一定程度上解决了内存通道负载不均衡的情况 ,有效提高了 内存通道的利用率。

请参阅图 14 , 为本发明实施例提供的一种计算机系统 800的逻辑结构示 意图。 该计算机系统中包括: 处理器 811、 内存控制器 801、 输出设备 810 (显 示器、 显示屏)、 输入设备 809 (例如键盘、 鼠标、 触摸屏等) 以及通信接口 808, 其中内存控制器通过两条内存通道 805和 806连接两个内存模块 802和 803。 其中, 内存模块 802与内存模块 803之间存在连接 804, 内存模块 802 既可以通过与其连接的内存通道 805接收内存控制器 801发送的访问数据,也 可以通过与内存模块 803之间的连接 804以及连接内存模块 803的内存通道 806接收内存控制器发送的访问数据。 通信接口 808是计算机系统用来与网络 连接的接口, 可以是普通计算机的网卡接口、 手机终端的天线接口等, 用于与 其它计算机系统进行通信, 具体包括发送和接收数据等。 除了内存之外, 该计 算机系统中还可以包含其它类型的存储设备 805 , 例如高速緩存或磁盘等。

在本发明的其它一些实施例中, 该计算机系统可以釆取总线连接的结构, 例如处理器、内存控制器、通信接口等通过总 线连接在一起。该总线可以是 ISA ( Industry Standard Architecture , 工业标准体系结构) 总线、 PCI ( Peripheral Component, 夕卜部设备互连 ) 总线或 EISA ( Extended Industry Standard

Architecture, 扩展工业标准体系结构)总线等。 所述总线可以是一条或多条物 理线路, 当是多条物理线路时可以分为地址总线、 数据总线、 控制总线等。

在本发明的其它一些实施例中, 内存控制器 801可以内置于处理器 804 内。

请参阅图 15a, 为本发明实施例提供的一种计算机系统 800的局部逻辑结 构示意图 ,包括:内存控制器 801、以及第一内存模块 802和第二内存模块 803; 两个内存模块都与与内存控制器 801连接;第一内存模块 802设有第一内存通 道接口 8021 , 并通过第一内存通道接口 8021连接第一内存通道 805; 第二内 存模块 803设有第二内存通道接口 8031 , 并通过第二内存通道接口 8031连接 第二内存通道 806 , 第一内存模块 802通过第一内存通道 805与所述内存控制 器 801连接,第二内存模块 803通过所述第二内存通道 806与所述内存控制器 801连接; 第一内存模块 802和第二内存模块 803还分别设有第一内存模块间 互连接口 8022和 8032, 8022和 8032连接。

第一内存模块 802用于通过第一内存模块 802的第一内存模块间接口

8022与第二内存模块 803的第一内存模块间互连接口 8032的连接及第二内存 通道 806接收或发送访问数据 ,以及通过第一内存通道 805接收或发送访问数 据。 所述访问数据包括以下中的一个或多个: 对所述第一内存模块 802的访问 请求,对所述第一内存模块 802的访问请求的响应数据或关联数据,对所述 第 二内存模块 803的访问请求,以及对所述第二内存模块 803的访问请求的响应 数据或关联数据。

具体的, 第一内存模块 802包括第一内存管理单元和至少一个存储单元 , 所述第一内存管理单元与所述第一内存模块间 互连接口、所述第一内存通道接 口 8021以及所述存储单元连接, 所述第一内存管理单元用于: 通过所述第一 内存通道接口 8021接收访问数据; 根据所述访问数据判断所述访问数据的目 的内存模块是否是所述第一内存模块 802; 若所述访问数据的目的内存模块不 是所述第一内存模块 802, 则将所述访问数据通过所述第一内存模块间互 连接 口 8022发送给所述第二内存模块 803; 若所述访问数据的目的内存模块是所 述第一内存模块 802 , 则根据所述访问数据确定与所述访问数据关联 的目的存 储单元, 根据所述访问数据对所述目的存储单元执行操 作, 其中, 所述目的存 储单元为所述第一内存模块 802的存储单元中的一个或多个。进一步的, 第一 内存管理单元还用于:通过所述第一内存模块 间互连接口 8022接收访问数据, 确定与所述访问数据关联的目的存储单元;根 据所述访问数据对所述目的存储 单元执行操作。

进一步的, 请参阅图 15b, 该计算机系统还可以包括第三内存模块 812, 所述第三内存模块 812设有第三通道接口 8121 , 所述第三内存模块 812通过 所述第三通道接口 8121连接第二内存通道 806; 所述第一内存模块 802和所 述第三内存模块 812还分别设有第二内存模块间互连接口 8023和 8122, 所述 第一内存模块 802的第二内存模块间互连接口 8023与所述第三内存模块 812 的第二内存模块间互连接口 8122连接; 所述第一内存模块 802还用于通过其 自身的第二内存模块间互连接口 8022与所述第三内存模块 812的第二内存模 块间互连接口 8122之间的连接及所述第二内存通道 806接收或发送对所述内 存系统的访问数据。

在本发明的其它一些实施例中,所述第三内存 模块 812也可以通过所述第 三通道接口 8121连接除第一内存通道 805和第二内存通道 806之外的其它内 存通道。三个模块之间内存通道遵循的协议可 以相同也可以不相同, 本发明实 施例对此不作限定。

所述访问数据包括以下中的一个或多个:对所 述第一内存模块 802的访问 请求,对所述第一内存模块 802的访问请求的响应数据或关联数据,对所述 第 二内存模块 803的访问请求,对所述第二内存模块 803的访问请求的响应数据 或关联数据,对所述第三内存模块 812的访问请求, 以及对所述第三内存模块 812的访问请求的响应数据或关联数据。在此种 实现方式下,第一内存模块 802 包括第一内存管理单元和至少一个存储单元, 所述第一内存管理单元与所述第 一内存模块间互连接口 8022、 所述第二内存模块间互连接口 8023、 所述第一 内存通道接口 8021以及所述存储单元连接, 所述第一内存管理单元用于: 通 过所述第一内存通道接口 8021接收访问数据; 根据所述访问数据判断所述访 问数据的目的内存模块是否是所述第一内存模 块 802; 若所述访问数据的目的 内存模块不是所述第一内存模块 802 , 则根据所述访问数据的目标地址与所述 内存模块间互连接口的对应关系,确定与所述 访问数据对应的内存模块间互连 接口,若与所述访问数据对应的内存模块间互 连接口为第一内存模块间互连接 口 8022 , 则将所述访问数据通过所述第一内存模块间互 连接口 8022发送给所 述第二内存模块 803 , 若与所述访问数据对应的内存模块间互连接口 为第二内 存模块间互连接口 8023 , 则将所述访问数据通过所述第二内存模块间互 连接 口 8023发送给所述第三内存模块; 若所述访问数据的目的内存模块是所述第 元, 根据所述访问数据对所述目的存储单元执行操 作, 其中, 所述目的存储单 元为所述第一内存模块 802的存储单元中的一个或多个。

在本发明实施例中,内存控制器 801用于监测所述第一内存通道 805和所 述第二内存通道 806的运行状况; 接收对所述内存系统的访问数据, 并根据所 述第一内存通道 805和所述第二内存通道 806的运行状况将所述访问数据发送 给所述内存系统。

具体的,内存控制器 801用于监测所述第一内存通道 805和所述第二内存 通道 806的运行状况 , 所述运行状况包括忙碌和空闲; 当接收到的所述访问数 据的目标地址位于第一内存模块 802且所述第一内存通道 805为忙碌时,所述 内存控制器将所述访问数据通过所述第二内存 通道 806发送给第二内存模块 803 , 由所述第二内存模块 803通过所述第二内存模块 803的第一内存模块间 互连接口 8032和所述第一内存模块 802的第一内存模块间互连接口 8022之间 的连接将所述访问数据发送给第一内存模块 802; 当接收到的所述访问数据的 目标地址位于第二内存模块 803且所述第二内存通道 806为忙碌时,所述内存 控制器将所述访问数据通过所述第一内存通道 805发送给第一内存模块 802, 由所述第一内存模块 802通过所述第一内存模块 802的第一内存模块间互连接 口 8022与所述第二内存模块 803的第一内存模块间互连接口 8032之间的连接 将所述访问数据发送给第二内存模块 803。

进一步的, 内存控制器 801还用于: 记录所述访问数据的路径和所述访问 数据的状态, 所述访问数据的路径包含所述第一内存通道或 第二内存通道, 所 述访问数据的状态包括访问数据是否发送和 /或访问请求的结果是否返回。

请参阅图 16 , 为本发明实施例提供的另一种计算机系统的局 部逻辑结构 示意图。 如图 16所示, 该计算机系统 900包括两个内存控制器 9011和 9012, 二者分别连接两个内存通道 905和 906。 内存控制器 9011和 9012都内置于同 一 CPU907中。 在其它的实现方式中, 内存控制器 9011和 9012也可以与 CPU907连接而非内置。 图 16中 902、 903、 904、 9021、 9022、 9031以及 9032 分别类似于图 15a中的 802、 803、 804、 8021、 8022、 8031以及 8032 , 在此 不再赘述。

请参阅图 17 , 为本发明实施例提供的另一种计算机系统的局 部逻辑结构 示意图。 如图 17所示, 该计算机系统 1000包括两个 CPU10071和 10072, CPU10071和 CPU10072中分别内置了内存控制器 10011和 10012。 CPU10071 和 CPU10072可以运行相同的操作系统, 也可以运行不同的操作系统。 图 17 中 1002、 1003、 1004、 10021、 10022、 10031以及 10032分别类似于图 16中 的 902、 903、 904、 9021、 9022、 9031以及 9032, 在此不再赘述。 其中在图 17中每个独立 CPU可以独立连接一个通信接口。

需说明的是,在本发明的其它一些实施例中, 计算机系统的每个内存通道 都可以连接两个或两个以上内存模块,例如内 存通道 805的还可以再连接两个 或两个以上内存模块。 内存模块之间的连接关系可以根据需要设置。 内存模块 的具体实现可以参考前述实施例描述及其附图 。

在本发明的其它实施例中, 计算机系统中的内存控制器也可以是两个以 上, CPU的数量同样可以为两个或两个以上。 多个内存模块之间的连接关系 可以根据具体需求建立, 形成网格、 层次化或半层次化、 或集中式等的内存区 域网络, 具体结构可以参考前述实施例的描述。 另夕卜, 如图 1、 图 2a-图 2c中 所示例的内存系统都可以全部或部分包含在本 发明实施例所提供的计算机系 统中。

需要说明的是,本发明实施例所提供的计算机 系统中的内存模块的存储介 质可以相同也可以不同。 内存模块可以为独立物理模块, 内存通道接口及内存 模块间互连接口可以为物理接口。具体的, 内存通道接口可以为双倍数据速率 DDR接口或 DDR2接口或 DDR3接口或 DDR4接口。

另外, 本发明实施例所述的计算机系统可以包含一个 单板或多个单板, 不 同的 CPU可以位于同一单板或不同单板上, 不同的单板可以位于同一机拒, 也可以位于不同的机拒。 因此本发明想要保护的计算机系统仅以图 14- 17为例 来说明, 并不以此为限。

可见,本发明实施例所提供的计算机系统通过 在内存模块中增加一个或多 个内存模块间互连接口,使内存系统中分属于 不同内存通道的多个内存模块能 够通过该内存模块间互连接口建立通信连接, 进而使得该内存系统中的内存模 块可以同时被多个内存通道所访问,从而在某 一内存通道负载过大的时候, 实 现通过另一负载较轻的内存通道对该负载过大 的内存通道上的内存模块的访 问, 一定程度上解决了内存通道负载不均衡的情况 ,有效提高了内存通道的利 用率。

本说明书中的各个实施例均釆用递进的方式描 述,各个实施例之间相同相 似的部分互相参见即可,例如装置实施例中某 些模块的功能实现可以参考方法 实施例中方法的描述。

需说明的是, 以上所描述的装置实施例仅仅是示意性的, 其中所述作为分 可以是或者也可以不是物理单元, 即可以位于一个地方, 或者也可以分布到多 个网络单元上。可以根据实际的需要选择其中 的部分或者全部模块来实现本实 施例方案的目的。 另外, 本发明提供的装置实施例附图中, 模块之间的连接关 系表示它们之间具有通信连接, 具体可以实现为一条或多条通信总线或信号 线。 本领域普通技术人员在不付出创造性劳动的情 况下, 即可以理解并实施。

通过以上的实施方式的描述,所属领域的技术 人员可以清楚地了解到本发 明可借助专用硬件包括专用集成电路、 专用 CPU、 专用存储器、 专用元器件 等来实现。 用来实现同一功能的具体硬件结构可以是多种 多样的, 例如模拟电 路、数字电路或专用电路等。本发明也可以通 过计算机软件加必要的硬件实现, 该计算机软件产品存储在可读取的存储介质中 , 如计算机的软盘, U盘、 移动 硬盘、 只读存储器(ROM, Read-Only Memory )、 随机存取存储器(RAM, Random Access Memory ), 磁碟或者光盘等, 包括若干指令用以使得一台计算 机设备(可以是个人计算机, 服务器, 或者网络设备等)执行本发明各个实施 例所述的方法。

以上所述,仅为本发明的具体实施方式,但本 发明的保护范围并不局限于 此,任何熟悉本技术领域的技术人员在本发明 揭露的技术范围内, 可轻易想到 变化或替换, 都应涵盖在本发明的保护范围之内。 因此, 本发明的保护范围应 以所述权利要求的保护范围为准。