CN106557448A - 多节点系统的内核代码读取方法及系统 - Google Patents
多节点系统的内核代码读取方法及系统 Download PDFInfo
- Publication number
- CN106557448A CN106557448A CN201510616949.9A CN201510616949A CN106557448A CN 106557448 A CN106557448 A CN 106557448A CN 201510616949 A CN201510616949 A CN 201510616949A CN 106557448 A CN106557448 A CN 106557448A
- Authority
- CN
- China
- Prior art keywords
- nodal point
- address
- kernel code
- memory
- secondary nodal
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
- G06F15/17306—Intercommunication techniques
- G06F15/17331—Distributed shared memory [DSM], e.g. remote direct memory access [RDMA]
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明提供一种多节点系统的内核代码读取方法及系统,系统中包括作为主节点的第一节点,还包括至少一个第二节点;所述方法包括:所述第一节点从第一内存地址处读取内核镜像中的内核代码段,所述第一内存地址为所述第一节点的本地内存的预设地址;所述第一节点将所述内核代码段发送至所述第二节点的本地内存中;当所述第二节点需要运行内核代码时,所述第二节点从所述第二节点的本地内存中读取所述内核代码。采用本发明实施的技术方案,可以提高内核代码的读取速度,提升多节点系统的性能。
Description
技术领域
本发明涉及计算机技术,尤其涉及一种多节点系统的内核代码读取方法及系统。
背景技术
随着科学计算、事务处理对计算机性能需求的不断提高,对称多处理器(Symmetric Multi Processor,简称SMP)系统的应用越来越广泛,规模也越来越大。
非均匀内存访问(Non Uniform Memory Access,简称NUMA)系统由多个结点通过高速互连网络连接而成,每个结点可以以不同的延时访问所有的系统内存。NUMA系统除了本地内存,还有远端内存,远端内存分布在其它节点中。CPU访问本地内存和访问远端内存的延迟是不同的,访问远端内存要比本地内存慢。
NUMA服务器的每个节点由多个中央处理器(Central Processing Unit,简称CPU)组成,并且每个节点具有独立的本地内存、输入/输出(Input/Output,简称I/O)接口等。由于其各节点之间可以通过互联模块进行连接和信息交互,因此每个CPU可以访问整个系统的内存。然而,由于CPU读取其他节点的内存的延迟远远高于读取其所属的节点的内存的延迟,因此当CPU数量较多时,系统性能较差。
发明内容
本发明提供一种多节点系统的内核代码读取方法及系统,用以解决现有技术中当CPU数量较多时,系统性能较差的问题。
本发明的第一方面,提供一种多节点系统的内核代码读取方法,系统中包括作为主节点的第一节点,还包括至少一个第二节点;所述方法包括:
所述第一节点从第一内存地址处读取内核镜像中的内核代码段,所述第一内存地址为所述第一节点的本地内存的预设地址;
所述第一节点将所述内核代码段发送至所述第二节点的本地内存中;
当所述第二节点需要运行内核代码时,所述第二节点从所述第二节点的本地内存中读取所述内核代码。
本发明的第二方面,提供一种多节点系统的内核代码读取系统,所述系统中包括作为主节点的第一节点,还包括至少一个第二节点,所述第一节点包括第一处理器和第一内存,所述第二节点包括第二处理器和第二内存,其中:
所述第一处理器,用于从第一内存地址处读取内核镜像中的内核代码段,所述第一内存地址为所述第一内存的预设地址;
所述第一处理器还用于将所述内核代码段发送至所述第二内存中;
第二处理器,用于当需要运行内核代码时,从所述第二内存中的内核代码段中读取所述内核代码。
本发明实施例提供的多节点系统的内核代码读取方法,系统中包括作为主节点的第一节点,还包括至少一个第二节点;方法包括:第一节点从第一内存地址处读取内核镜像中的内核代码段,第一内存地址为第一节点的本地内存的预设地址;第一节点将内核代码段发送至第二节点的本地内存中;当第二节点需要运行内核代码时,第二节点从第二节点的本地内存中读取内核代码,从而解决了现有技术中当节点数量多时,系统性能差的问题。采用本发明实施例提供的技术方案,可以提高内核代码的读取速度,提升多节点系统的性能。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图做一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例一提供的一种多节点系统的内核代码读取方法的流程图;
图2为本发明实施例二提供的一种多节点系统的内核代码读取方法的流程图;
图3为一种双路系统的结构示意图;
图4为本发明实施例三提供的一种多节点系统的内核代码读取系统的结构示意图;
图5为本发明实施例四提供的一种多节点系统的内核代码读取系统的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明实施例一提供的一种多节点系统的内核代码读取方法的流程图。如图1所示,该方法包括以下步骤:
步骤S100、第一节点从第一内存地址处读取内核镜像中的内核代码段。
步骤S101、第一节点将内核代码段发送至第二节点的本地内存中。
步骤S102、当第二节点需要运行内核代码时,第二节点从第二节点的本地内存中读取内核代码。
上述步骤S100~S101的执行主体为第一节点,步骤S102的执行主体为第二节点。在实际中,第一节点和第二节点均可以为包括处理器的设备,在NUMA服务器中,即为由多个CPU组成的节点。在本实施例中,系统中包括作为主节点的第一节点,还包括至少一个第二节点。
由于第一节点为存储有内核代码段的主节点,因此,为了提高第二节点从内核代码段中获取内核代码的速度,第一节点可以首先从第一内存地址处读取内核镜像中的内核代码段,然后再将内核代码段发送至第二节点的本地内存中。其中,第一内存地址为上述第一节点的本地内存的预设地址,其可以是第一节点中存放内核代码段的内存地址,事实上,该第一内存地址即为现有技术中主节点上存放内核代码段的地址。
具体的,作为一种可行的实现方式,第一节点可以按照上述内核代码段在第一节点的本地内存中的位置,即第一内存地址,将上述内核代码段发送给第二节点,并将该内核代码段存储在第二内存地址处,该第二内存地址为上述第二节点的本地内存的预设地址。其中,该第一内存地址与第二内存地址的物理内存偏移量相同,即将内核代码存储于与第一节点具有相同的物理内存偏移的内存地址处。举例来说,上述内核代码段被存储在第一节点上的0x80400000的虚拟地址处,该虚拟地址即为上述预设地址,其对应着第一节点的物理内存偏移为0x400000的内存地址处,而将上述内核代码段发送给第二节点后,该内核代码段也被存储在上述预设地址处,即0x80400000的虚拟地址处,也就是对应着第二节点的物理内存偏移为0x400000的内存地址处。作为另一种可行的实现方式,第一节点也可以将内核代码段发送给第二节点,并将该内核代码段存储在第二节点的本地内存中,不同于第一内存地址的内存地址处。当然,这里并不限定第一节点将内核代码段发送至第二节点的本地内存中的位置。
当第二节点需要运行内核代码时,第二节点即可直接从其本地内存中读取内核代码。在现有技术中,当第二节点需要运行内核代码时,可以由第二节点的交叉开关将第二节点读取内核代码的读取请求路由至第一节点的本地内存中,从而在上述第一内存地址处读取内核代码。可选的,若基于交叉开关实现本实施例提供的技术方案时,则可以通过配置第二节点的交叉开关,使得当第二节点需要运行内核代码时,由交叉开关将上述读取请求路由到第二节点的本地内存中,而不是如现有技术中一样,路由至第一节点的本地内存中,从而提高了内核代码的读取速度,提升了整个多节点系统的性能。
本实施例提供的多节点系统的内核代码读取方法,第一节点从第一内存地址处读取内核镜像中的内核代码段,第一内存地址为第一节点的本地内存的预设地址;第一节点将内核代码段发送至第二节点的本地内存中;当第二节点需要运行内核代码时,第二节点从第二节点的本地内存中读取内核代码。采用本发明实施例提供的技术方案,可以提高内核代码的读取速度,提升多节点系统的性能。
图2为本发明实施例二提供的一种多节点系统的内核代码读取方法的流程图。本实施例中的步骤S200~S201的执行主体为第一节点,步骤S202~S203的执行主体为第二节点。其中,第一节点和第二节点均可以为包括处理器的设备,在NUMA服务器中,即为由多个CPU组成的节点。在本实施例中,系统中包括作为主节点的第一节点,还包括至少一个第二节点。并且,从结构上来说,该第二节点还包括交叉开关,其中,交叉开关既可以设置于第二节点的处理器内部,也可以设置在外部,此处并不限定。如图2所示,该方法包括以下步骤:
步骤S200、第一节点从第一内存地址处读取内核镜像中的内核代码段。
该步骤的描述与步骤S100相同,此处不再赘述。
可选的,在此步骤前,可以由第一节点的基本输入输出系统将内核镜像拷贝到第一内存地址处。
具体的,在第一节点的内核启动之前,由第一节点的基本输入输出系统(Basic Input Output System,简称BIOS)将内核镜像拷贝到第一内存地址处。
步骤S201、第一节点将内核代码段发送至第二节点的本地内存中。
具体的,第一节点可以将上述内核代码段发送至第二内存地址处,其中,第一内存地址与第二内存地址的物理内存偏移量相同。由于每个节点都将内核代码段放在内存中的相同位置,当某一节点需要运行内核代码段中的某一段内核代码时,由于其在每个节点的内存中的位置相同,因此,每个节点均可按照同一预设地址,读取该段内核代码,因而,该操作便于统一管理多节点。
步骤202、第二节点的交叉开关获取配置参数。
具体的,第二节点的交叉开关与现有技术的功能类似,均是用于将第二节点的处理器发送的读取请求路由至相应的位置处。此处,由于第二内存地址处已经存储有内核代码,故在第二节点需要运行内核代码时,此处可以获取上述配置参数,用于配置第二节点的交叉开关,以使该交叉开关在第二节点需要运行内核代码时,将读取请求携带的请求地址映射为所述第二节内存地址。可选的,具体到内部实现,读取请求可以是由第二节点的处理器放给第二节点的交叉开关。
可选的,上述配置参数可以包括内核代码地址范围以及映射地址参数。其中,内核代码地址范围为上述内核代码段在第一节点的本地内存中的内存地址范围;映射地址参数则为读取请求中携带的请求地址与第二内存地址之间的对应关系。举例来说,若内核代码段在第一节点的本地内存中存储所占用的内存地址范围为0x400000到0x800000,即占用了4MB大小的空间,那么上述内核代码地址范围即为0x400000到0x800000。配置内核代码地址范围是为了使交叉开关将落于该范围内的请求地址对应到第二内存地址。而映射地址参数可以为一对应关系,由于上述请求地址为第二节点的处理器发送的,其相当于是一个全局内存地址,也就是说,在该多节点系统内,各个节点的全局内存地址是不重叠的,而同时,各个节点自身也有独立的地址空间,也就是各个节点内部的局部内存地址,该局部内存地址对于每个节点来说都是相同的,交叉开关可以将上述读取请求中携带的请求地址映射为第二内存地址,也就是将一个全局内存地址映射为局部内存地址。在现有技术中,当第二节点的处理器向交叉开关发送读取内核代码的读取请求后,由于内核代码只存储在第一节点的本地内存中,故交叉开关将读取请求中的请求地址映射为第一内存地址,也就是存放了内核代码的位置,然而,在本发明中,由于第二节点的本地内存中也已存储了内核代码,故此时,该交叉开关的配置参数,可以使其将读取请求中的请求地址映射为第二内存地址。需要说明的是,这里的映射地址参数只是一个对应关系,其具体是将哪个请求地址映射到哪个第二内存地址,可以由第二节点上内核代码段的存放位置确定,这里并不限定。
可选的,上述内核代码地址范围包括内核代码在第一节点的本地内存中的起始存储地址以及结束存储地址,或者,包括内核代码在第一节点的本地内存中的起始存储地址以及内核代码段在第一节点的本地内存中的代码段长度。仍以上述内存地址范围为0x400000到0x800000为例,此时的起始存储地址即为0x400000,结束存储地址即为0x800000,代码段长度即为4MB。举例来说,如果交叉开关判断读取请求中携带的请求地址在上述内存地址范围内,则根据映射地址参数,将该地址映射为第二内存地址。
步骤S203、当第二节点需要运行内核代码时,第二节点从第二节点的内核代码段中读取内核代码。
具体的,该过程包括:
1)、第二节点的处理器向第二节点的交叉开关发送读取请求。
具体的,该读取请求中携带的请求地址。
2)、第二节点的交叉开关接收该读取请求,并根据该读取请求中携带的请求地址将其映射为第二内存地址。
具体的,交叉开关可以判断该请求地址是否落入了上述内核代码地址范围,若是,则可以根据上述映射地址参数,将该请求地址映射为第二内存地址。
3)、第二节点的交叉开关向第二节点的处理器发送第二内存地址。
4)、第二节点的处理器接收第二节点的交叉开关发送的第二内存地址,并根据上述第二内存地址从第二节点的本地内存中读取内核代码。
通过上述交互过程,由第二节点的处理器发送用于读取内核代码的读取请求,即可直接从第二节点的本地内存中读取内核代码。
当然,上述交叉开关将请求地址对应到第二内存地址,在具体实现时,也可以分为两级交叉开关来实现。首先可以由一级交叉开关根据其映射地址参数将该请求地址映射为第二节点的高速缓存模块中的内存地址,若在高速缓存模块中并无对应的内存地址,则可以由一级交叉开关向二级交叉开关发送上述请求地址,再由二级交叉开关根据其映射地址参数将该请求地址对应为第二节点的内存中的内存地址。这样首先遍历高速缓存的做法可以更进一步地提高读取效率。
下面以一个具体的例子,详细说明上述过程。
以无内部互锁流水级(Microprocessor Without Interlocked Piped Stages,简称MIPS)架构的双路系统为例,该双路系统包括两个节点,每个节点中的处理器均为精简指令集计算机(Reduced Instruction Set Computer,简称RISC)处理器。如图3所示,第一节点包括四个CPU,CPU0、CPU1、CPU2和CPU3,第二节点包括四个CPU,CPU4、CPU5、CPU6和CPU7。
在内核代码启动前,第一节点首先将内核镜像拷贝到0x80400000的虚拟地址处,该内核镜像中的内核代码段由图3中的正45度斜条纹的方格表示,其对应的是第一节点物理内存偏移0x400000处。
第一节点将内核代码段发送至第二内存地址后,在第二内存地址处也存储了内核代码段的备份,即图3中用负45度斜条纹的方格表示,该两份内核代码段相对于其各自的本地内存的物理内存偏移量都是相同的,即在第二节点本地内存的0x400000虚拟地址处也会存在同样一份内核代码段的拷贝,特别的,当拷贝完成后,可以通过BIOS命令来查看每个节点的虚拟地址0x80400000处存储的数据来判断是否拷贝成功。
由于在现有技术中,所有节点访问内核代码段时都会路由到本地内存,例如第二节点读取内核代码时,其需要通过交叉开关将上述请求地址路由至第一节点,再由第一节点将请求地址处的内核代码发送给第二节点。在本实施例中,按照上述交叉开关的运行机制,为了保证第二节点可以从其本地内存中读取内核代码,重新配置了交叉开关。
可选的,具体的配置方法可以是为每个节点配置一套寄存器,具体为起始地址设置寄存器(BASE)、窗口范围寄存器(MASK)和映射地址寄存器(MMAP)。其中,将BASE的值配置为内核代码段起始地址,也即为上述起始存储地址,其为全局内存地址;配置MASK的值以保证完全覆盖内核代码段占用的空间大小,也即为内核代码段在所述第一节点的本地内存中的代码段长度;配置MMAP的值为目标地址空间,并且完成从源地址空间到目标地址空间的转换,此处的MMAP为上述由映射地址参数确定的第二内存地址,也即第二节点的局部内存地址。
仍是以图3所示的双路系统为例,其采用两级交叉开关结构,其中,一级交叉开关用于将上述请求地址路由至本地节点的高速缓存模块,二级交叉开关用于将一级交叉开关发送的请求地址路由至本地节点的内存控制器。两级交叉开关窗口可以分别配置,用于控制将特定的请求地址发往特定节点进行处理。交叉开关上每个端口各拥有8个地址窗口可供配置,每个地址窗口即对应图3中的一个CPU,每个地址窗口由BASE、MASK和MMAP三个64位寄存器组成。
上述地址窗口的配置公式为:源地址&MASK==BASE;
映射后的目标地址转换公式如下:
目标地址=源地址&(~(MASK))|MMAP&MASK;
其中,“~”表示取非运算,“&”表示求与运算,“|”表示求或运算。
举例来说,假设内核的虚拟地址起始于0x80400000,物理地址为0x400000,假设第二节点上CPU核若访问内核地址0x80400000,即上述请求地址,则第二节点根据默认设置会将该地址发往第一节点,而并非发往本地节点,因此可以通过配置窗口MMAP寄存器,将其路由到本地二级缓存,这样当访问内核地址空间时,访问的就是本地内存了。
具体的,一级交叉开关拥有默认路由设置,这个默认不被地址窗口配置寄存器所显示,只是不在任意一个地址窗口命中的地址被这个默认路由所解释。
对于一级交叉开关的主端口,也即对外发出请求的主设备端,包括如下几个:
0号主端口:CPU0
1号主端口:CPU1
2号主端口:CPU2
3号主端口:CPU3
6号主端口:超传输(HyperTransport)0
7号主端口:HyperTransport 1
对于一级交叉开关的从端口,也即对外发出请求的从设备端,包括如下几个:
0号从端口:二级缓存(Cache)0
1号从端口:二级Cache 1
2号从端口:二级Cache 2
3号从端口:二级Cache 3
6号从端口:HyperTransport 0
7号从端口:HyperTransport 1
一级交叉开关的默认路由如表1所示。
表1
起始地址 | 结束地址 | 目标 |
0 | Bff_ffff_ffff | L2 |
C00_0000_0000 | Dff_ffff_ffff | HT0 |
E00_0000_0000 | Fff_ffff_ffff | HT1 |
默认路由往本地二级缓存L2发有四个选择,即从端口0到3。
路由到四个L2的哪个是由SCID_SEL寄存器的确定(对于路由到L2的哪个口不是由MMAP的bit[2:0]确定),实际就是按照地址的某两位进行分布。该寄存器地址为3ff0_0400。现在映射的X1路由中没有设置到L2的路由,全部使用默认映射。
内核的虚拟地址起始于0xffffffff80400000,假设第二节点上CPU核若访问内核地址0xffffffff80300400,即上述请求地址,则第二节点根据默认设置会将该地址发往第一节点,而并非发往本地节点,因此可以通过配置窗口MMAP寄存器,将其强制发往本地二级缓存L2,这样当访问内核地址空间时,访问的就是本地内存了。
以0号主端口窗口配置为例,配置如表2所示。
表2
Master0窗口号 | BASE | MASK | MMAP |
0 | 3ff0_2000 | 3ff0_2040 | 3ff0_2080 |
1 | 3ff0_2008 | 3ff0_2048 | 3ff0_2088 |
2 | 3ff0_2010 | 3ff0_2050 | 3ff0_2090 |
3 | 3ff0_2018 | 3ff0_2058 | 3ff0_2098 |
4 | 3ff0_2020 | 3ff0_2060 | 3ff0_20a0 |
5 | 3ff0_2028 | 3ff0_2068 | 3ff0_20a8 |
6 | 3ff0_2030 | 3ff0_2070 | 3ff0_20b0 |
7 | 3ff0_2038 | 3ff0_2078 | 3ff0_20b8 |
配置方法如下:SCID_SEL=2;即使用10位以上的地址进行散列,通过以下表3的配置将CPU核发出的请求地址映射至二级Cache。
表3
BASE | MASK | MMAP | |
窗口0 | 0x0000000000400000 | 0xffffffffffc00c00 | 0x00000000004000f0 |
窗口1 | 0x0000000000400400 | 0xffffffffffc00c00 | 0x00000000004004f1 |
窗口2 | 0x0000000000400800 | 0xffffffffffc00c00 | 0x00000000004008f2 |
窗口3 | 0x0000000000400c00 | 0xffffffffffc00c00 | 0x0000000000400cf3 |
对于二级交叉开关,其配置寄存器只分为两组:CPU组合和外设部件互连标准(Peripheral Component Interconnect,简称PCI)组,CPU组寄存器负责处理全部来自L2访问请求,表4是二级交叉开关配置用到的寄存器的地址。
表4
CPU组窗口号 | BASE | MASK | MMAP |
0 | 3ff0_0000 | 3ff0_0040 | 3ff0_0080 |
1 | 3ff0_0008 | 3ff0_0048 | 3ff0_0088 |
2 | 3ff0_0010 | 3ff0_0050 | 3ff0_0090 |
3 | 3ff0_0018 | 3ff0_0058 | 3ff0_0098 |
4 | 3ff0_0020 | 3ff0_0060 | 3ff0_00a0 |
5 | 3ff0_0028 | 3ff0_0068 | 3ff0_00a8 |
6 | 3ff0_0030 | 3ff0_0070 | 3ff0_00b0 |
7 | 3ff0_0038 | 3ff0_0078 | 3ff0_00b8 |
由于窗口2控制物理内存低256M的访问,因此可以对此窗口进行修改。窗口2在修改前的配置如表5所示。
表5
BASE | MASK | MMAP | |
窗口2 | 0x0000100000000000 | 0xffffffffff0000000 | 0x00000000000000f0 |
窗口2在修改后的配置如表6所示,此配置是保证只有目标是第二节点的地址才会被发往从端口内存,显然物理地址0x400000地址会被过滤掉。
表6
BASE | MASK | MMAP | |
窗口2 | 0x0000000000000000 | 0xffff0fffff0000000 | 0x00000000000000f0 |
以上配置能保证由一级交叉开关发过来的低端地址能顺利通过至内存控制器。
通过对一二级交叉开关的配置就可以保证内核代码段0xffffffff80400000至0xffffffff807fffff范围内的地址访问会发往第二节点的本地内存。
综上所述,对于二级交叉开关,要保证由一级交叉开关发过来的物理地址能够路由到本地物理内存。通过对一级和二级交叉开关的配置就可以保证对内核代码段的地址访问会发往第二节点的本地内存。
本实施例提供的多节点系统的内核代码读取方法,第一节点从第一内存地址处读取内核镜像中的内核代码段,第一内存地址为第一节点的本地内存的预设地址;第一节点将内核代码段发送至第二节点的本地内存中;当第二节点需要运行内核代码时,第二节点从第二节点的本地内存中读取内核代码。采用本发明实施例提供的技术方案,可以提高内核代码的读取速度,提升多节点系统的性能。
图4为本发明实施例三提供的一种多节点系统的内核代码读取系统的结构示意图。该系统1中包括作为主节点的第一节点10,还包括至少一个第二节点11,其中,第一节点10包括第一处理器100和第一内存101,第二节点11包括第二处理器110和第二内存111。
具体的,第一处理器100,用于从第一内存地址处读取内核镜像中的内核代码段,第一内存地址为第一内存101的预设地址;第一处理器100还用于将内核代码段发送至第二内存111中;第二处理器110,用于当需要运行内核代码时,从第二内存111中的内核代码段中读取内核代码。
进一步地,第一处理器100具体用于:将内核代码段发送至第二内存地址处,第二内存地址为第二内存111的预设地址,第二内存地址与第一内存地址具有相同的物理内存偏移量。
本实施例提供的多节点系统的内核代码读取系统1,第一处理器100从第一内存地址处读取内核镜像中的内核代码段;第一处理器100将内核代码段发送至第二内存111中;当需要运行内核代码时,第二处理器110从第二内存111中的内核代码段中读取内核代码。采用本发明实施例提供的技术方案,可以提高内核代码的读取速度,提升多节点系统的性能。
图5为本发明实施例四提供的一种多节点系统的内核代码读取系统的结构示意图。在实施例三的基础上,该系统2中的第二节点11还包括交叉开关112。
具体的,第二处理器110具体用于:当第二处理器110需要运行内核代码时,向交叉开关112发送读取请求,以使得交叉开关112将读取请求中携带的请求地址映射为第二内存地址;接收交叉开关112发送的第二内存地址,根据第二内存地址从第二内存111中读取内核代码。
进一步地,第二处理器110还用于:获取交叉开关112的配置参数,配置参数用于配置交叉开关112,以使交叉开关112在第二处理器110需要运行内核代码时,将读取请求携带的请求地址映射为第二节内存地址。
本实施例提供的多节点系统的内核代码读取系统2,第一处理器100从第一内存地址处读取内核镜像中的内核代码段;第一处理器100将内核代码段发送至第二内存111中;当需要运行内核代码时,第二处理器110从第二内存111中的内核代码段中读取内核代码。采用本发明实施例提供的技术方案,可以提高内核代码的读取速度,提升多节点系统的性能。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (10)
1.一种多节点系统的内核代码读取方法,其特征在于,系统中包括作为主节点的第一节点,还包括至少一个第二节点;所述方法包括:
所述第一节点从第一内存地址处读取内核镜像中的内核代码段,所述第一内存地址为所述第一节点的本地内存的预设地址;
所述第一节点将所述内核代码段发送至所述第二节点的本地内存中;
当所述第二节点需要运行内核代码时,所述第二节点从所述第二节点的本地内存中读取所述内核代码。
2.根据权利要求1所述的方法,其特征在于,所述第一节点将所述内核代码段发送至所述第二节点的本地内存中,具体包括:
所述第一节点将所述内核代码段发送至第二内存地址处,所述第二内存地址为所述第二节点的本地内存的预设地址,所述第二内存地址与所述第一内存地址具有相同的物理内存偏移量。
3.根据权利要求1或2所述的方法,其特征在于,所述当所述第二节点需要运行内核代码时,所述第二节点从所述第二节点的本地内存中读取所述内核代码,具体包括:
当所述第二节点需要运行内核代码时,向所述第二节点的交叉开关发送读取请求,以使得所述第二节点的交叉开关将所述读取请求中携带的请求地址映射为第二内存地址;
接收所述第二节点的交叉开关发送的所述第二内存地址,根据所述第二内存地址从所述第二节点的本地内存中读取所述内核代码。
4.根据权利要求3所述的方法,其特征在于,所述当所述第二节点需要运行内核代码时,所述第二节点从所述第二节点的本地内存中读取所述内核代码之前,还包括:
获取所述第二节点的交叉开关的配置参数,所述配置参数用于配置所述交叉开关,以使所述交叉开关在所述第二节点需要运行内核代码时,将所述读取请求携带的请求地址映射为所述第二节内存地址。
5.根据权利要求4所述的方法,其特征在于,所述配置参数具体包括:内核代码地址范围以及映射地址参数;
所述内核代码地址范围为所述内核代码段在所述第一节点的本地内存中的内存地址范围;
所述映射地址参数为所述请求地址与所述第二内存地址之间的对应关系。
6.根据权利要求5所述的方法,其特征在于,所述内核代码地址范围包括所述内核代码在所述第一节点的本地内存中的起始存储地址以及结束存储地址,或者,包括所述内核代码在所述第一节点的本地内存中的起始存储地址以及所述内核代码段在所述第一节点的本地内存中的代码段长度。
7.一种多节点系统的内核代码读取系统,其特征在于,所述系统中包括作为主节点的第一节点,还包括至少一个第二节点,所述第一节点包括第一处理器和第一内存,所述第二节点包括第二处理器和第二内存,其中:
所述第一处理器,用于从第一内存地址处读取内核镜像中的内核代码段,所述第一内存地址为所述第一内存的预设地址;
所述第一处理器还用于将所述内核代码段发送至所述第二内存中;
所述第二处理器,用于当需要运行内核代码时,从所述第二内存中的内核代码段中读取所述内核代码。
8.根据权利要求7所述的系统,其特征在于,所述第一处理器具体用于:
将所述内核代码段发送至第二内存地址处,所述第二内存地址为所述第二内存的预设地址,所述第二内存地址与所述第一内存地址具有相同的物理内存偏移量。
9.根据权利要求7或8所述的系统,其特征在于,所述第二节点还包括交叉开关;
所述第二处理器具体用于:
当所述第二处理器需要运行内核代码时,向所述交叉开关发送读取请求,以使得所述交叉开关将所述读取请求中携带的请求地址映射为第二内存地址;
接收所述交叉开关发送的所述第二内存地址,根据所述第二内存地址从所述第二内存中读取所述内核代码。
10.根据权利要求9所述的系统,其特征在于,所述第二处理器还用于:
获取所述交叉开关的配置参数,所述配置参数用于配置所述交叉开关,以使所述交叉开关在所述第二处理器需要运行内核代码时,将所述读取请求携带的请求地址映射为所述第二节内存地址。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510616949.9A CN106557448B (zh) | 2015-09-24 | 2015-09-24 | 多节点系统的内核代码读取方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510616949.9A CN106557448B (zh) | 2015-09-24 | 2015-09-24 | 多节点系统的内核代码读取方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106557448A true CN106557448A (zh) | 2017-04-05 |
CN106557448B CN106557448B (zh) | 2019-06-18 |
Family
ID=58415284
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510616949.9A Active CN106557448B (zh) | 2015-09-24 | 2015-09-24 | 多节点系统的内核代码读取方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106557448B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112306775A (zh) * | 2020-11-19 | 2021-02-02 | 山东云海国创云计算装备产业创新中心有限公司 | 双路cpu间通信链路的测试方法、装置、设备及介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1168161A2 (en) * | 2000-06-30 | 2002-01-02 | Broadcom Corporation | System and method of executing hybridized code on a dynamically cofigurable hardware environment |
CN102239478A (zh) * | 2011-04-19 | 2011-11-09 | 华为技术有限公司 | 数据访问处理方法和设备 |
CN103649923A (zh) * | 2013-06-29 | 2014-03-19 | 华为技术有限公司 | 一种numa系统内存镜像配置方法、解除方法、系统和主节点 |
CN104536764A (zh) * | 2015-01-09 | 2015-04-22 | 浪潮(北京)电子信息产业有限公司 | 程序运行方法和装置 |
CN104657224A (zh) * | 2013-11-21 | 2015-05-27 | 华为技术有限公司 | 一种进程间通信的方法和装置 |
-
2015
- 2015-09-24 CN CN201510616949.9A patent/CN106557448B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1168161A2 (en) * | 2000-06-30 | 2002-01-02 | Broadcom Corporation | System and method of executing hybridized code on a dynamically cofigurable hardware environment |
CN102239478A (zh) * | 2011-04-19 | 2011-11-09 | 华为技术有限公司 | 数据访问处理方法和设备 |
CN103649923A (zh) * | 2013-06-29 | 2014-03-19 | 华为技术有限公司 | 一种numa系统内存镜像配置方法、解除方法、系统和主节点 |
CN104657224A (zh) * | 2013-11-21 | 2015-05-27 | 华为技术有限公司 | 一种进程间通信的方法和装置 |
CN104536764A (zh) * | 2015-01-09 | 2015-04-22 | 浪潮(北京)电子信息产业有限公司 | 程序运行方法和装置 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112306775A (zh) * | 2020-11-19 | 2021-02-02 | 山东云海国创云计算装备产业创新中心有限公司 | 双路cpu间通信链路的测试方法、装置、设备及介质 |
CN112306775B (zh) * | 2020-11-19 | 2023-03-14 | 山东云海国创云计算装备产业创新中心有限公司 | 双路cpu间通信链路的测试方法、装置、设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN106557448B (zh) | 2019-06-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6953488B2 (ja) | ハイブリッドメモリキューブシステム相互接続ディレクトリベースキャッシュコヒーレンス方法 | |
US8595425B2 (en) | Configurable cache for multiple clients | |
US7797503B2 (en) | Configurable memory system and method for providing atomic counting operations in a memory device | |
US9792210B2 (en) | Region probe filter for distributed memory system | |
US5878268A (en) | Multiprocessing system configured to store coherency state within multiple subnodes of a processing node | |
KR101563659B1 (ko) | 집성된 소페이지들을 사용한 페이지 사이즈 확장 | |
US7577816B2 (en) | Remote translation mechanism for a multinode system | |
US6826653B2 (en) | Block data mover adapted to contain faults in a partitioned multiprocessor system | |
US6920521B2 (en) | Method and system of managing virtualized physical memory in a data processing system | |
US7774564B2 (en) | Multi-processor system, and method of distributing memory access load in multi-processor system | |
US11157405B2 (en) | Programmable cache coherent node controller | |
WO2009018329A2 (en) | Offloading input/output (i/o) virtualization operations to a processor | |
JP2004506981A (ja) | マルチプロセッサにおけるセマフォおよびアトミック動作の管理のためのシステムおよび方法 | |
US20220004488A1 (en) | Software drive dynamic memory allocation and address mapping for disaggregated memory pool | |
US10956329B2 (en) | Cache coherent node controller for scale-up shared memory systems having interconnect switch between a group of CPUS and FPGA node controller | |
JP2000250883A (ja) | 不均等メモリ・アクセス・システムにおいてトランザクションのキャンセルによるデータ損失を避けるための方法およびシステム | |
WO2013097394A1 (zh) | 一种多处理器共享存储方法及系统 | |
CN105867945A (zh) | 一种bios启动方法及装置 | |
US20090213755A1 (en) | Method for establishing a routing map in a computer system including multiple processing nodes | |
CN106557448A (zh) | 多节点系统的内核代码读取方法及系统 | |
JP2001043133A (ja) | マルチプロセッサ・システムにおいてライトスルー・ストア・オペレーションでキャッシュ・コヒーレンシを維持するための方法およびシステム | |
CN108268384A (zh) | 读取数据的方法及装置 | |
Prete | RST cache memory design for a highly coupled multiprocessor system | |
US7073004B2 (en) | Method and data processing system for microprocessor communication in a cluster-based multi-processor network | |
US20230350812A1 (en) | Architectural interface for address translation cache (atc) in xpu to submit command directly to guest software |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP01 | Change in the name or title of a patent holder | ||
CP01 | Change in the name or title of a patent holder |
Address after: 100095 Building 2, Longxin Industrial Park, Zhongguancun environmental protection technology demonstration park, Haidian District, Beijing Patentee after: Loongson Zhongke Technology Co.,Ltd. Address before: 100095 Building 2, Longxin Industrial Park, Zhongguancun environmental protection technology demonstration park, Haidian District, Beijing Patentee before: LOONGSON TECHNOLOGY Corp.,Ltd. |