一种处理器的内存访问方法及装置

阅读: 评论:0

著录项
  • CN202011096790.X
  • 20201014
  • CN112231099A
  • 20210115
  • 北京中科网威信息技术有限公司
  • 张娇慧
  • G06F9/50
  • G06F9/50

  • 北京市海淀区中关村软件园(二期)中兴通大厦B座2层
  • 北京(11)
  • 北京路浩知识产权代理有限公司
  • 程琛
摘要
本发明实施例提供一种处理器的内存访问方法及装置,该方法包括:当处理器中的业务流申请内存时,获取业务流中的内核标识,根据所述内核标识确定业务流的节点信息;向所述节点信息对应的内存池申请内存,以进行内存访问。可以实现按节点进行内存访问,大幅度减少跨节点访问,避免本地内存和远端内存间的同步,降低内存访问的时延。这样即可通过软件方案的修改,使系统性能可以随着处理器数量增加而线性增加,从而有效提升国产处理器的处理速度。
权利要求

1.一种处理器的内存访问方法,其特征在于,包括:

当处理器中的业务流申请内存时,获取业务流中的内核标识,根据所述内核标识确定业务流的节点信息;

向所述节点信息对应的内存池申请内存,以进行内存访问。

2.根据权利要求1所述处理器的内存访问方法,其特征在于,所述获取业务流中的内核标识,根据所述内核标识确定业务流的节点信息的步骤之前,所述方法还包括:

获取处理器的所有内核信息,将所述内核信息进行分组,得到分组后的核心组;

将每个核心组作为一个节点,得到多个节点信息。

3.根据权利要求2所述处理器的内存访问方法,其特征在于,在所述得到多个节点信息的步骤之后,所述方法还包括:

将处理器访问内存分割为所述节点信息对应数量的多个内存池;

其中,每个节点信息对应有一个内存池,每个内存池之间通过互联模块连接,以进行信息交互。

5.根据权利要求2所述处理器的内存访问方法,其特征在于,所述处理器的内核为16个,相应地,所述获取处理器的所有内核信息,将所述内核信息进行分组,具体为:

将处理器的16个内核分为四组,得到四个核心组。

4.根据权利要求1所述处理器的内存访问方法,其特征在于,向所述节点信息对应的内存池申请内存,以进行内存访问的步骤,具体为:

在所述节点信息对应的内存池申请成功的情况下,则以节点信息对应的内存池进行内存访问;

在所述节点信息对应的内存池申请失败的情况下,则向相邻的内存池申请内存,直至申请成功。

6.一种处理器的内存访问装置,其特征在于,包括:

标识模块,用于当处理器中的业务流申请内存时,获取业务流中的内核标识,根据所述内核标识确定业务流的节点信息;

内存访问模块,用于向所述节点信息对应的内存池申请内存,以进行内存访问。

7.根据权利要求6所述处理器的内存访问装置,其特征在于,所述装置还包括:分组模块;

所述分组模块用于获取处理器的所有内核信息,将所述内核信息进行分组,得到分组后的核心组;

将每个核心组作为一个节点,得到多个节点信息。

8.根据权利要求7所述处理器的内存访问方法,其特征在于,所述分组模块还用于:

将处理器访问内存分割为所述节点信息对应数量的多个内存池;

其中,每个节点信息对应有一个内存池,每个内存池之间通过互联模块连接,以进行信息交互。

9.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至5任一项所述处理器的内存访问方法的步骤。

10.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如权利要求1至5任一项所述处理器的内存访问方法的步骤。

说明书
技术领域

本发明涉及计算机技术领域,尤其涉及一种处理器的内存访问方法及装置。

很多处理器的内存访问方案,通常是每个核心都可以对所有节点中的存储器组进行存取,例如申威1621处理器,但这种存取时间随着节点的距离远近而异,某个核心访问该节点的存储器组的性能优于访问其它节点的,所以本节点内的存储器组叫本地内存,其它节点的叫远程内存。

现有技术中,申威1621处理器的核在访问内存时不进行区分节点,当某一核在访问本地内存区时速度快,但是跨节点时,会破坏内存cache,就需要两个内存区相互同步,频繁进行数据迁移,则一直产生cache缺失,这样不仅增大访问开销,也严重影响系统性能。

因此,如何更好的实现针处理器的内存访问方案已经成为业界亟待解决的问题。

本发明实施例提供一种处理器的内存访问方法及装置,用以解决上述背景技术中提出的技术问题,或至少部分解决上述背景技术中提出的技术问题。

第一方面,本发明实施例提供一种处理器的内存访问方法,包括:

当处理器中的业务流申请内存时,获取业务流中的内核标识,根据所述内核标识确定业务流的节点信息;

向所述节点信息对应的内存池申请内存,以进行内存访问。

更具体的,所述获取业务流中的内核标识,根据所述内核标识确定业务流的节点信息的步骤之前,所述方法还包括:

获取处理器的所有内核信息,将所述内核信息进行分组,得到分组后的核心组;

将每个核心组作为一个节点,得到多个节点信息。

更具体的,在所述得到多个节点信息的步骤之后,所述方法还包括:

将处理器访问内存分割为所述节点信息对应数量的多个内存池;

其中,每个节点信息对应有一个内存池,每个内存池之间通过互联模块连接,以进行信息交互。

更具体的,向所述节点信息对应的内存池申请内存,以进行内存访问的步骤,具体为:

在所述节点信息对应的内存池申请成功的情况下,则以节点信息对应的内存池进行内存访问;

在所述节点信息对应的内存池申请失败的情况下,则向相邻的内存池申请内存,直至申请成功。

更具体的,所述处理器的内核为16个,相应地,所述获取处理器的所有内核信息,将所述内核信息进行分组,具体为:

将处理器的16个内核分为四组,得到四个核心组。

第二方面,本发明实施例提供一种处理器的内存访问装置,包括:

标识模块,用于当处理器中的业务流申请内存时,获取业务流中的内核标识,根据所述内核标识确定业务流的节点信息;

内存访问模块,用于向所述节点信息对应的内存池申请内存,以进行内存访问。

更具体的,所述装置还包括:分组模块;

所述分组模块用于获取处理器的所有内核信息,将所述内核信息进行分组,得到分组后的核心组;

将每个核心组作为一个节点,得到多个节点信息。

更具体的,所述分组模块还用于:

将处理器访问内存分割为所述节点信息对应数量的多个内存池;

其中,每个节点信息对应有一个内存池,每个内存池之间通过互联模块连接,以进行信息交互。

第三方面,本发明实施例提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如第一方面所述处理器的内存访问方法的步骤。

第四方面,本发明实施例提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如第一方面所述处理器的内存访问方法的步骤。

本发明实施例提供的一种处理器的内存访问方法及装置,通过内核建立多节点与处理器核的对应关系,按照多节点数把总内存分成相应数目的内存池,当业务功能模块需要内存时,先确定所处的处理器核,再从本核所在的节点对应内存池里申请内存。本发明实施例可以实现按节点进行内存访问,大幅度减少跨节点访问,避免本地内存和远端内存间的同步,降低内存访问的时延。这样即可通过软件方案的修改,使系统性能可以随着处理器数量增加而线性增加,从而有效提升国产处理器的处理速度。

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

图1为本发明一实施例中所描述的处理器的内存访问方法流程示意图;

图2为本发明一实施例所描述处理器的内存访问装置示意图;

图3为本发明一实施例所描述的电子设备结构示意图。

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

具体的,本发明实施例中所描述的处理器内存访问方法的整体方案可以适用于申威1621处理器,申威1621采用对称多核结构和SoC技术,单芯片集成了16个64位RISC结构的申威处理器核心,16个核心以CC-NUMA方式共享片内三级Cache,并且三级Cache容量增大到32MB。申威1621处理器由6个环网节点组成,其中4个环网节点连接核心组和存储器组,两个环网节点连接PCIE通道。每个核心都可以对所有节点中的存储器组进行存取,但这种存取时间随着节点的距离远近而异。即申威1621处理器中会存在核访问内存时不进行区分节点的问题,其跨节点时,会破坏内存cache,会在两个内存区相互同步,频繁进行数据迁移,则一直产生cache缺失,这样会增加申威1621处理器的访问开销,也严重影响其系统性能。

图1为本发明一实施例中所描述的处理器的内存访问方法流程示意图,如图1所示,包括:

步骤S1,当处理器中的业务流申请内存时,获取业务流中的内核标识,根据所述内核标识确定业务流的节点信息;

步骤S2,向所述节点信息对应的内存池申请内存,以进行内存访问。

具体的,本发明实施例中所描述的处理器可以是指申威1621处理器,也可以是指其他进行内存访问时,会在本地内存和远端内存间不断更换,导致内存访问的时延时高时低的处理器。

当业务申请内存时,首先对业务流进行分析,得到业务流中的内核ID,根据内核ID来确定该业务流所出的处理器内核,同时根据预先划分的节点消息,确定该处理器内核对应的节点,向所述节点信息对应的内存池申请内存,如果申请成功,则返回;如果申请失败,则从该节点的相邻节点内存池里申请。比如一个Session会话申请内存,则需要根据节点来访问,而确定节点的依据为业务流中的核ID,如核0对应node 0,那么让核0一直访问node 0的内存,此时效率最高。否则核0再访问node1-3的内存。

另外,本发明实施例在系统启动时,首先建立处理器内核和多个节点之间的关系,然后按照多个节点数将总内存分成相应数目的内存池,从而实现在本核所在的节点对应内存池里申请内存。

本发明实施例通过内核建立多节点与处理器核的对应关系,按照多节点数把总内存分成相应数目的内存池,当业务功能模块需要内存时,先确定所处的处理器核,再从本核所在的节点对应内存池里申请内存。本发明实施例可以实现按节点进行内存访问,大幅度减少跨节点访问,避免本地内存和远端内存间的同步,降低内存访问的时延。这样即可通过软件方案的修改,使系统性能可以随着处理器数量增加而线性增加,从而有效提升国产处理器的处理速度。

在上述实施例的基础上,所述获取业务流中的内核标识,根据所述内核标识确定业务流的节点信息的步骤之前,所述方法还包括:

获取处理器的所有内核信息,将所述内核信息进行分组,得到分组后的核心组;

将每个核心组作为一个节点,得到多个节点信息。

具体的,本发明实施例中所描述的过程,具体即是建立处理器内核与节点的对应关系,例如以申威1621处理器举例,可以将申威1621的16核分为4个核心组,就是4个节点,系统启动之后,会自动将16核中的处理器0-3核对应到第一个节点即node0,处理器4-7核对应到第二个节点即node1,处理器8-11核对应到第三个节点即node2,处理器12-15核对应到第四个节点即node3。

本发明实施例通过建立处理器内核与节点的对应关系,实现按节点进行内存访问,大幅度减少跨节点访问,避免本地内存和远端内存间的同步,降低内存访问的时延。

在上述实施例的基础上,在所述得到多个节点信息的步骤之后,所述方法还包括:

将处理器访问内存分割为所述节点信息对应数量的多个内存池;

其中,每个节点信息对应有一个内存池,每个内存池之间通过互联模块连接,以进行信息交互。

具体的,本发明实施例按照节点数把总内存分成相应数目的内存池,每个节点具有独立的本地内存。节点之间可以通过互联模块进行连接和信息交互,因此每个处理器核可以访问整个系统的内存。

本发明实施例通过访问节点对应的本地内存的设置,可以有效提高访问内存的速度。

在上述实施例的基础上,向所述节点信息对应的内存池申请内存,以进行内存访问的步骤,具体为:

在所述节点信息对应的内存池申请成功的情况下,则以节点信息对应的内存池进行内存访问;

在所述节点信息对应的内存池申请失败的情况下,则向相邻的内存池申请内存,直至申请成功。

具体的,本发明实施例中所描述的相邻的内存池是指节点信息对应内存池所相邻的其它节点的内存池。

比如一个Session会话申请内存,则需要根据节点来访问,而确定节点的依据为业务流中的核ID,如核0对应node0,那么让核0一直访问node0的内存,此时效率最高。否则核0再访问node1-3的内存,此时访问node0对应内存池的速度将远远高于访问node1-3对应内存池的速度。

在上述实施例的基础上,所述处理器的内核为16个,相应地,所述获取处理器的所有内核信息,将所述内核信息进行分组,具体为:

将处理器的16个内核分为四组,得到四个核心组。

具体的,申威1621的16核是有4个核心组,就是4个节点,系统启动之后,会自动将16核中的处理器0-3核对应到第一个节点即node0,处理器4-7核对应到第二个节点即node1,处理器8-11核对应到第三个节点即node2,处理器12-15核对应到第四个节点即node3。

本发明实施例中还可以将内核划分为两组或者八组,本发明实施例中对此不作具体限定,其可以根据处理器的类型不同来进行具体设定。

本发明实施例通过内核建立多节点与处理器核的对应关系,按照多节点数把总内存分成相应数目的内存池,当业务功能模块需要内存时,先确定所处的处理器核,再从本核所在的节点对应内存池里申请内存。本发明实施例可以实现按节点进行内存访问,大幅度减少跨节点访问,避免本地内存和远端内存间的同步,降低内存访问的时延。这样即可通过软件方案的修改,使系统性能可以随着处理器数量增加而线性增加,从而有效提升国产处理器的处理速度。

图2为本发明一实施例所描述处理器的内存访问装置示意图,如图2所示,包括:标识模块210和内存访问模块220;其中,标识模块210用于当处理器中的业务流申请内存时,获取业务流中的内核标识,根据所述内核标识确定业务流的节点信息;其中,内存访问模块220用于向所述节点信息对应的内存池申请内存,以进行内存访问。

更具体的,所述装置还包括:分组模块;

所述分组模块用于获取处理器的所有内核信息,将所述内核信息进行分组,得到分组后的核心组;

将每个核心组作为一个节点,得到多个节点信息。

更具体的,所述分组模块还用于:

将处理器访问内存分割为所述节点信息对应数量的多个内存池;

其中,每个节点信息对应有一个内存池,每个内存池之间通过互联模块连接,以进行信息交互。

具体的,当业务申请内存时,首先对业务流进行分析,得到业务流中的内核ID,根据内核ID来确定该业务流所出的处理器内核,同时根据预先划分的节点消息,确定该处理器内核对应的节点,向所述节点信息对应的内存池申请内存,如果申请成功,则返回;如果申请失败,则从该节点的相邻节点内存池里申请。比如一个Session会话申请内存,则需要根据节点来访问,而确定节点的依据为业务流中的核ID,如核0对应node 0,那么让核0一直访问node 0的内存,此时效率最高。否则核0再访问node1-3的内存。

另外,本发明实施例在系统启动时,首先建立处理器内核和多个节点之间的关系,然后按照多个节点数将总内存分成相应数目的内存池,从而实现在本核所在的节点对应内存池里申请内存。

本发明实施例提供的装置是用于执行上述各方法实施例的,具体流程和详细内容请参照上述实施例,此处不再赘述。

本发明实施例通过内核建立多节点与处理器核的对应关系,按照多节点数把总内存分成相应数目的内存池,当业务功能模块需要内存时,先确定所处的处理器核,再从本核所在的节点对应内存池里申请内存。本发明实施例可以实现按节点进行内存访问,大幅度减少跨节点访问,避免本地内存和远端内存间的同步,降低内存访问的时延。这样即可通过软件方案的修改,使系统性能可以随着处理器数量增加而线性增加,从而有效提升国产处理器的处理速度。

图3为本发明一实施例所描述的电子设备结构示意图,如图3所示,该电子设备可以包括:处理器(processor)310、通信接口(Communications Interface)320、存储器(memory)330和通信总线340,其中,处理器310,通信接口320,存储器330通过通信总线340完成相互间的通信。处理器310可以调用存储器330中的逻辑指令,以执行如下方法:当处理器中的业务流申请内存时,获取业务流中的内核标识,根据所述内核标识确定业务流的节点信息;向所述节点信息对应的内存池申请内存,以进行内存访问。

此外,上述的存储器330中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

本发明实施例公开一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的方法,例如包括:当处理器中的业务流申请内存时,获取业务流中的内核标识,根据所述内核标识确定业务流的节点信息;向所述节点信息对应的内存池申请内存,以进行内存访问。

本发明实施例提供一种非暂态计算机可读存储介质,该非暂态计算机可读存储介质存储服务器指令,该计算机指令使计算机执行上述各实施例提供的方法,例如包括:当处理器中的业务流申请内存时,获取业务流中的内核标识,根据所述内核标识确定业务流的节点信息;向所述节点信息对应的内存池申请内存,以进行内存访问。

以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

本文发布于:2023-04-14 21:15:58,感谢您对本站的认可!

本文链接:https://patent.en369.cn/patent/1/87401.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 369专利查询检索平台 豫ICP备2021025688号-20 网站地图