用于NUMA系统的内存访问方法和装置与流程

文档序号:31661088发布日期:2022-09-27 23:05阅读:34来源:国知局
用于numa系统的内存访问方法和装置
技术领域
:1.本技术涉及内存访问,更具体地,涉及一种用于非一致内存访问(non-uniformmemoryaccess,numa)系统的内存访问方法和装置。
背景技术
::2.基于节点和内存的相对位置,numa系统可包括本地内存和远端内存。设置在节点处的中央处理器(centralprocessingunit,cpu)等设备可访问其他节点的远端内存,从而潜在地增加访问延迟并且/或者降低访问性能。技术实现要素:3.本发明的实施例可提供一种用于numa系统的内存访问方法和/或装置,所述方法和/或装置可使得numa系统中的节点最小化或避免远端内存访问。4.根据本公开的实施例,提供一种用于numa系统的内存访问方法,所述numa系统包括多个节点,所述多个节点中的每个节点被配置为运行预定程序并且包括为所述预定程序分配的预设内存,其中,相同的全局物理地址与所述多个节点中的每个节点的预设内存中的每个预设内存分别相应,所述方法包括:当所述预定程序在所述节点中的第一节点处运行时,针对对于第一节点为本地内存的第一预设内存执行操作;将针对第一预设内存执行的操作分别同步到对于所述多个节点中的其它节点中的每个节点为本地内存的每个预设内存,其中,所述多个节点中的每个节点被配置为:当在所述每个节点运行所述预定程序时,使用所述相同的全局物理地址访问其本地预设内存。5.根据本实施例,一种内存访问方法基于numa系统,其中,所述numa系统包括至少两个节点,所述至少两个节点中的被配置为运行预定程序的节点中的每个节点的内存中包括为所述预定程序分配的预设内存,被配置为运行所述预定程序的节点中的每个节点的预设内存对应的全局物理地址相同,所述方法包括:当所述预定程序在被配置为运行所述预定程序的节点中的第一节点运行时,对所述第一节点的预设内存进行操作;将对所述第一节点的预设内存进行的操作同步到被配置为运行所述预定程序的节点中的其他节点的预设内存,以使得所述其它节点中的任一节点运行所述预定程序时访问本地的预设内存。6.由于相同的全局物理地址分别与每个节点的本地物理内存相应,且每个节点的本地物理内存被同步更新,因此,当软件在不同节点运行时可以保证软件的程序具有连续的全局物理地址空间,从而避免了对页表页(pagetablepages)进行迁移或备份的复杂操作。7.可选地,所述操作包括以下项中的至少一个:请求所述第一节点为所述预定程序在所述预设内存分配第一物理地址以用于存储数据;请求所述第一节点更新所述预定程序在所述预设内存的第二物理地址中存储的数据;请求所述第一节点释放所述预定程序在所述预设内存的第三物理地址中存储的数据。8.可选地,当所述操作为请求所述第一节点为所述预定程序在所述预设内存分配第一物理地址以用于存储数据时,将对所述第一节点的所述预设内存进行的操作同步到所述其它节点的预设内存的步骤包括:向所述其它节点发送第一同步消息,以使得所述其它节点为所述预定程序在预设内存分配第一物理地址并存储数据;当所述操作为请求所述第一节点更新所述预定程序在所述预设内存的第二物理地址中存储的数据时,将对所述第一节点的所述预设内存进行的操作同步到所述其它节点的预设内存的步骤包括:向所述其它节点发送第二同步消息,以使得所述其它节点更新所述预定程序在预设内存的第二物理地址中存储的数据;当所述操作为请求所述第一节点释放所述预定程序在所述预设内存的第三物理地址中存储的数据时,将对所述第一节点的所述预设内存进行的操作同步到所述其它节点的预设内存的步骤包括:向其它节点发送第三同步消息,以使得所述其它节点释放所述预定程序在预设内存的第三物理地址中存储的数据。9.根据本公开的实施例,提供一种用于numa系统的内存访问装置,所述numa系统包括多个节点,所述多个节点中的每个节点被配置为运行预定程序并且包括为所述预定程序分配的预设内存,其中,相同的全局物理地址分别与所述多个节点中的每个节点的预设内存中的每个预设内存相应,所述装置包括:操作模块,被配置为当所述预定程序在所述节点中的第一节点处运行时,针对对于第一节点为本地内存的第一预设内存执行操作;以及同步模块,被配置为将针对第一预设内存执行的操作分别同步到对于所述多个节点中的其它节点中的每个节点为本地内存的每个预设内存,其中,所述多个节点中的每个节点被配置为:当在所述每个节点运行所述预定程序时,使用所述相同的全局物理地址访问其本地预设内存。10.根据实施例,当应用程序在一个节点处执行写入新数据、更新数据和/或删除数据的操作时,本公开的方法通过同步消息将操作同步到其它节点。由于每个节点的与应用程序相应的内存具有相同的全局物理地址,使得当应用程序在节点运行时,运行应用程序的节点可避免远端访问。11.可选地,所述方法还包括:在被配置为运行预定程序的节点中针对所述预定程序配置所述预设内存。12.可选地,在被配置为运行预定程序的节点中针对所述预定程序配置所述预设内存包括:在配置为运行预定程序的节点的系统地址映射(sam)表中针对所述预定程序配置所述预设内存。13.可选地,所述numa系统包括的基本上所有节点可以为被配置为运行预定程序的节点。14.根据实施例,内存访问装置可基于numa系统,其中,所述numa系统包括至少两个节点,所述至少两个节点中的被配置为运行预定程序的节点中的每个节点的内存中包括为预定程序分配的预设内存,所述被配置为运行预定程序的节点中的每个节点的预设内存对应的全局物理地址相同,所述装置包括:操作模块,被配置为当预定程序在所述被配置为运行预定程序的节点中的第一节点运行时,对所述第一节点的预设内存进行操作;以及同步模块,被配置为将对所述第一节点的预设内存进行的操作同步到所述被配置为运行所述预定程序的节点中的其他它节点的预设内存,以使得所述其它节点中的任一节点运行所述预定程序时访问本地的预设内存。15.由于相同的全局物理地址分别与每个节点的本地物理内存相应,且每个节点的本地物理内存被同步更新,因此,当软件在不同节点运行时可以保证程序具有连续的全局物理地址空间,从而避免了对页表页(pagetablepages)进行迁移或备份的复杂操作。16.可选地,所述操作模块被配置为执行以下操作中的至少一种:请求所述第一节点为所述预定程序在所述预设内存分配第一物理地址以用于存储数据;请求所述第一节点更新所述预定程序在所述预设内存的第二物理地址中存储的数据;请求所述第一节点释放所述预定程序在所述预设内存的第三物理地址中存储的数据。17.可选地,当所述操作模块被配置为请求所述第一节点为所述预定程序在所述预设内存分配第一物理地址以用于存储数据时,所述同步模块被配置为:向所述其它节点发送第一同步消息,以使得所述其它节点为所述预定程序在预设内存分配第一物理地址并存储数据;当所述操作模块被配置为请求所述第一节点更新所述预定程序在所述预设内存的第二物理地址中存储的数据时,所述同步模块被配置为:向所述其它节点发送第二同步消息,以使得所述其它节点更新所述预定程序在预设内存的第二物理地址中存储的数据;当所述操作模块被配置为请求所述第一节点释放所述预定程序在所述预设内存的第三物理地址中存储的数据时,所述同步模块被配置为:向所述其它节点发送第三同步消息,以使得所述其它节点释放所述预定程序在预设内存的第三物理地址中存储的数据。18.根据实施例,当应用程序在一个节点处执行写入新数据、更新数据和/或删除数据的操作时,本公开的装置通过同步消息将操作同步到其它节点,同时每个节点的与应用程序相应的内存具有相同的全局物理地址,使得当应用程序在节点运行时,运行应用程序的节点可避免远端访问。19.可选地,所述装置还包括:配置模块,被配置为在被配置为运行预定程序的节点中针对所述预定程序配置所述预设内存。20.可选地,配置模块,被配置为在被配置为运行预定程序的节点的系统地址映射表(sam)中针对所述预定程序配置所述预设内存。21.可选地,所述numa系统包括的基本上所有节点可以为被配置为运行所述预定程序的节点。22.根据本公开的实施例,提供一种numa系统,包括:多个节点,所述多个节点中的每个节点被配置为运行预定程序且包括对于所述每个节点为本地内存且为所述预定程序分配的预设内存,其中,相同的全局物理地址与所述多个节点中的每个节点的每个预设内存相应;操作模块,被配置为当所述预定程序在所述节点中的第一节点处运行时,针对对于第一节点为本地内存的第一预设内存执行操作;以及同步模块,配置为将针对第一预设内存执行的操作分别同步到对于所述多个节点中的其它节点中的每个节点为本地内存的每个预设内存,其中,所述多个节点中的每个节点被配置为:当在所述每个节点运行所述预定程序时,使用所述相同的全局物理地址访问其本地预设内存。23.所述系统可被如下应用:所述操作模块可被配置为执行以下操作中的至少一个:请求所述第一节点为所述预定程序在所述预设内存分配第一物理地址以用于数据;请求所述第一节点更新所述预定程序在所述预设内存的第二物理地址中存储的数据;请求所述第一节点释放所述预定程序在所述预设内存的第三物理地址中存储的数据。24.所述系统可被如下应用:当所述操作模块被配置为请求所述第一节点为所述预定程序在所述预设内存分配第一物理地址以用于存储数据时,所述同步模块被配置为向所述其它节点发送第一同步消息,以使得所述其它节点为所述预定程序在预设内存分配第一物理地址并存储数据;当所述操作模块被配置为请求所述第一节点更新所述预定程序在所述预设内存的第二物理地址中存储的数据时,所述同步模块被配置为向所述其它节点发送第二同步消息,以使得所述其它节点更新所述预定程序在预设内存的第二物理地址中存储的数据;当所述操作模块被配置为请求所述第一节点释放所述预定程序在所述预设内存的第三物理地址中存储的数据时,所述同步模块被配置为向其它节点发送第三同步消息,以使得所述其它节点释放所述预定程序在预设内存的第三物理地址中存储的数据。25.所述系统还可包括:配置模块,被配置为在被配置为运行所述预定程序的节点中针对所述预定程序配置所述预设内存。26.所述系统可被如下应用:所述配置模块被配置为在被配置为运行所述预定程序的节点的系统地址映射表(sam)中针对所述预定程序配置所述预设内存。27.所述系统可被如下应用:被配置为运行所述预定程序的节点为包括在所述numa系统中的所有节点。28.所述系统可被如下应用:所述多个节点中的至少一个包括除了它自己的预设内存之外的内存。29.所述系统可被如下应用:所述多个节点中的至少一个包括至少一个处理器或内核。30.根据本实施例,提供一种存储有计算机程序的计算机可读存储介质,其中,当所述计算机程序被处理器执行时实现如上所述的基于numa系统的内存访问方法。31.根据本发明的示例性实施例,提供一种数据存储装置,其中,所述装置包括:处理器;存储器,存储有计算机程序,当所述计算机程序被处理器执行时,实现如上所述的基于numa系统的内存访问方法。附图说明32.通过下面结合附图进行的详细描述,本发明的上述和其它实施例将会变得更加清楚,其中:33.图1是示出numa系统中的多个节点的示例的框图;34.图2是示出根据本公开的实施例的全局物理地址空间与内存的映射关系的示例的混合示图;35.图3是示出根据本公开的实施例的基于numa系统的内存访问方法的流程图;36.图4示出了根据本公开的实施例的numa系统的配置的示例的示意图;37.图5是示出私有内存管理(privatememorymanagement,privmemmgt)程序或模块的工作流程的混合示图;38.图6是示出根据本公开的实施例的内存管理的方法的示例的流程图;39.图7是示出根据本公开的实施例的内存管理的方法的示例的流程图;40.图8是示出根据本公开的实施例的用于numa系统的内存访问装置的结构的框图;以及41.图9是示出根据本公开的另一实施例的用于numa系统的内存访问装置的结构的框图。具体实施方式42.参照附图对本公开的实施例进行描述,其中,相同的标号可用于表示相同或相似的元件、特征和结构。然而,不旨在由本文所述的特定实施例限制本公开,而是旨在于:本公开覆盖在所附权利要求及其等同物的范围内的描述的实施例的修改、等同物和/或替代物。在以下说明书和权利要求书中使用的术语和词语不限于它们的词典含义,而是被用于使得能够清楚和一致地理解本公开。因此,对于本领域技术人员应显而易见的是:提供本公开的实施例的以下描述用于说明的目的,而不是为了限制由所附权利要求和它们的等同物限定的本公开的目的。43.应理解,除非上下文另外明确指出,否则单数形式包括复数形式。本文使用的术语“包括”、“包含”和“具有”指示公开的功能、操作或元件的存在,但不排除其它功能、操作或元件。44.在本公开的各种实施例中,意图是:当组件(例如,第一组件)被称为与另一组件(例如,第二组件)“耦接”或“连接”或者被“耦接”或者“连接”到另一组件(例如,第二组件)时,所述组件可被直接连接到所述另一组件,或者可通过另一组件(例如,第三组件)被连接。相比之下,当组件(例如,第一组件)被称为与另一组件(例如,第二组件)“直接耦接”或“直接连接”或者被直接耦接到或直接连接到另一组件(例如,第二组件)时,在所述组件和所述另一组件之间不存在另一组件(例如,第三组件)。45.如图1所示,具有多个节点的numa系统整体上由参考标号100指示。在图1中的部分(a)中,节点可具有大致相同的架构,并且可例如在numa系统的实施例中基于系统总线连接在一起。对于具有不同架构的节点,它们可通过加速器的缓存一致互联(cachecoherentinterconnectforaccelerators,ccix)协议被连接。在这种基于ccix协议的numa系统中,节点可基于高速串行计算机扩展总线标准(peripheralcomponentinterconnectexpress,pcie)进行连接,诸如pcie等的远端内存访问具有更高延时,这对系统性能造成更大影响。例如,参照图1中的部分(b),numa系统包括4个节点,并且每个节点可包括内存和4个cpu。当节点(例如,节点0)访问其它节点(节点1至节点3)的内存时,相较于节点访问自身的内存,访问其它节点的内存会导致更高的延时。46.用于提升访问性能的方法可包括例如节点感知式内存分配(node-awarememoryallocation,nama)、内存迁移(memorymigration,mm)、内存备份(memorybackup,mb)等。47.在nama方法中,系统优先给应用程序分配本地内存,若本地内存用完,系统根据运行应用程序的节点位置就近分配内存,从而减少了远端内存访问。48.在mm方法中,在应用程序迁移到新节点时,系统将原节点分配给应用程序的内存迁移到新节点的内存中,并释放原节点的内存,这也减少了远端内存访问。49.在mb方法中,系统在大体所有节点都向应用程序分配内存并保证大体所有节点具有一致的内存备份。不管应用程序在哪个节点运行,应用程序在无需访问远端内存的情况下访问本地的内存。50.然而,nama方法1和mm方法主要针对应用程序,对于系统软件(systemsoftware,诸如操作系统和虚拟机监控器)并不适用,这至少是因为系统软件的代码和数据被大体所有节点的应用程序共享。如果在一个特定的节点上分配系统软件的内存或将其迁移到一个特定节点,则会导致其它节点对系统软件的内存进行远端访问,这降低了系统软件在其它节点上的运行性能。51.对于mb方法,为保证软件在运行时拥有连续的地址空间,其采用虚拟地址重新映射的方式,在每个节点上维护一份独立且完整的页表(pagetable),并且任何一个页表的更新bei同步到其它节点的页表,这给系统带来负担。52.下面的表1示出numa系统中的节点的系统管理(sam,systemadministrationmanagement)表的示例。53.表1[0054][0055]参照表1,sam表包括numa系统的全局物理地址空间的各个组成部分及各个组成部分对应的目标物理设备。例如,当节点的主设备(例如,cpu或数据管理(datamanagement,dma)设备)访问物理地址时,要访问的具体设备能够根据物理地址被找到,从而使主设备的访问请求抵达正确的设备。例如,节点可通过设备1对应的物理地址空间中的地址访问设备1,通过与内存对应的物理地址空间中的地址访问与该地址对应的内存。作为示例,sam表可通过节点中的sam模块进行维护。由于sam表中的物理地址针对numa系统是全局性的,而每个地址对应唯一的目标物理设备,因此,每个节点的sam表中物理地址空间和目标物理设备的映射关系是相同的。[0056]如上所述,由于全局物理地址空间中的每个地址对应唯一的目标物理设备(例如,设备1、设备2或内存),因此当软件根据mb方法运行在不同的节点时,软件对应的物理地址空间将不连续,例如,软件在节点1运行时使用的全局物理地址空间段不同于软件在节点2运行时使用的全局物理地址空间段。由于运行所述软件的每个节点分配给软件的全局物理地址是不同的,因此需要在运行所述软件的每个节点上为所述软件维护一份独立且完整的页表。当所述软件从一个节点迁移到另一个节点时,需要将原节点(即所述一个节点)中所述软件的页表(包括刷新页表的动作)同步到待迁移节点(即所述另一个节点)中,这给页表管理带来负担。[0057]根据本发明的实施例,可针对诸如系统软件和/或应用软件的软件(包括定义或者选择一段连续的全局物理地址空间,并将该段连续的全局物理地址空间映射到每一个节点的本地物理内存,其中,每个节点中与该段全局物理地址空间相应的本地物理内存互为有效的内存备份。这样,当软件在不同节点运行时,可以通过该段全局物理地址访问软件运行所在节点的与该段全局物理地址相应的本地内存。[0058]根据本公开的实施例,由于每个节点的与所述一段全局物理地址空间相应的本地物理内存映射到所述同一段全局物理地址空间,因此对于不同的节点,软件运行时使用的全局物理地址是相同或连续的,从而可以避免针对页表的复杂操作。[0059]作为示例,可以在全局物理地址空间中定义或选择一段特殊地址空间gaddr#s,并可将每个节点的一段内存指定为gaddr#s的目标物理设备。也就是说,将gaddr#s映射到每个节点的一段私有本地物理内存#s,通过这种映射关系,gaddr#s与numa系统的每个节点的一段私有本地物理内存#s相互对应,其中,每个节点的所述一段私有本地内存互为内存备份。[0060]转到图2,映射关系整体上由参考标号200指示。图2示出了根据本公开的实施例全局物理地址空间与内存的映射关系的示例。[0061]参照图2,gaddr#s是与节点1的一段私有本地物理内存#s1相应,并且与节点2的一段私有本地物理内存#s2相应的全局内存地址,其中,节点1的本地物理内存#s1与节点2的本地物理内存#s2互为内存备份。[0062]应当理解,节点1和节点2为示出的示例,而numa中的其它节点也具有一段与gaddr#s相应的私有本地物理内存#s,并且每个节点的与gaddr#s相应的私有本地物理内存#s互为有效的内存备份。[0063]根据本公开的实施例,通过将同一全局物理地址空间gaddr#s映射到每个节点的一段私有本地物理内存#s,当程序在当前节点运行时,可以通过gaddr#s来访问当前节点的与gaddr#s相应的本地物理内存#s。这样,如果每个节点的与gaddr#s相应的一段私有物理内存#s互为备份,则当程序在每个节点运行时,如果访问gaddr#s中的地址,则可以调用当前节点的与所述地址相应的本地物理内存,从而避免远端内存访问。另外,由于每个内存备份与同一全局物理地址空间相应,因此,可以保证程序具有连续的物理地址空间,从而避免了对页表页(pagetablepages)进行迁移或备份的复杂操作。[0064]下面对实现每个节点的私有本地物理内存互为内存备份的方法进行描述。[0065]在下文中,为了便于描述,“全局物理地址空间”可表示针对软件设置或选择的一段全局物理地址空间gaddr#s或者相应于每个节点的私有本地物理内存#s的一段全局物理地址空间。[0066]如上所述,根据本公开的实施例,numa系统包括至少两个节点,所述至少两个节点中的每个节点的内存被配置为运行预定程序,其中,所述每个节点包括为预定程序分配的预设内存(例如,#s1和#s2),被配置为运行预定程序的节点中的每个节点的预设内存对应的全局物理地址相同。[0067]现在转到图3,内存访问方法整体上由参考标号300指示。图3示出了根据本公开的实施例的基于numa系统的内存访问方法的流程图。[0068]在步骤s301,当预定程序在被配置为运行所述预定程序的节点中的第一节点运行时,对所述第一节点的预设内存进行操作。[0069]作为示例,所述操作包括以下项中的至少一个:请求所述第一节点为所述预定程序在预设内存分配第一物理地址以用于存储数据;请求所述第一节点更新所述预定程序在预设内存的第二物理地址中存储的数据;请求所述第一节点释放所述预定程序在预设内存的第三物理地址中存储的数据。[0070]在步骤s302,将对所述第一节点的预设内存进行的操作同步到被配置为运行预定程序的节点中的其他节点的预设内存,以使得所述其它节点中的任一节点运行所述预定程序时访问本地的预设内存。[0071]作为示例,当所述操作为请求所述第一节点为所述预定程序在预设内存分配第一物理地址以用于保存数据时,将对所述第一节点的预设内存进行的操作同步到所述其它节点的预设内存的步骤包括:向所述其它节点发送第一同步消息,以使得所述其它节点为所述预定程序在预设内存分配第一物理地址以用于存储数据。[0072]作为示例,当所述操作为请求所述第一节点更新所述预定程序在预设内存的第二物理地址中存储的数据时,将对所述第一节点的预设内存进行的操作同步到所述其它节点的预设内存的步骤包括:向所述其它节点发送第二同步消息,以使得所述其它节点更新所述预定程序在预设内存的第二物理地址中存储的数据。[0073]作为示例,当所述操作为请求所述第一节点释放所述预定程序在预设内存的第三物理地址中存储的数据时,将对所述第一节点的预设内存进行的操作同步到所述其它节点的预设内存的步骤包括:向其它节点发送第三同步消息,以使得所述其它节点释放所述预定程序在预设内存的第三物理地址中存储的数据。[0074]根据本公开的实施例,当一个节点针对自己的内存#s进行管理时,该管理动作被同步到其它节点,从而保证每个节点的内存#s互为备份。[0075]作为示例,所述方法还包括:在被配置为运行预定程序的节点中针对所述预定程序配置预设内存。[0076]作为示例,被配置为运行预定程序的节点为所述numa系统包括的基本所有节点。[0077]为了便于理解本公开,以节点1和节点2为例进行说明,但不限制于此。[0078]当节点1通过全局物理地址空间中的地址对节点1的与该地址相应的本地内存进行管理时,可将该指示该管理动作的信息发送到节点2,以使得节点2根据该信息对节点2的与所述地址相应的本地物理内存执行相同的操作动作,从而保证节点1的与所述地址相应的本地内存与节点2的与所述地址相应的本地内存互为备份。[0079]为了保证节点1的内存#和节点2的内存#互为内存备份,当节点2针对节点2的与全局物理地址空间中的地址相应本地内存执行管理动作时,节点2可将指示该管理动作的信息发送到节点1,当节点1接收到该信息时,可以根据该信息对节点1的与所述地址相应的本地物理内存执行该管理动作。[0080]通过以上方式,每个节点的与所述全局物理地址空间相应的本地物理内存被同步管理,从而保证每个节点的本地物理内存互为备份内存。[0081]作为示例,在被配置为运行所述预定程序的节点中针对所述预定程序配置预设内存包括:在被配置为运行预定程序的节点的系统地址映射表(sam)中针对所述预定程序配置预设内存。也就是说,可以通过每个节点的sam表将相同的全局物理地址空间映射到每个节点的本地物理内存。[0082]作为示例,表2示出了节点1的sam表中映射关系的示例。[0083]表2[0084]物理地址空间目标物理设备1设备1寄存器地址空间设备12设备2寄存器地址空间设备23内存#1对应的地址空间gaddr#1节点1的内存#14内存#2对应的地址空间gaddr#2节点2的内存#25gaddr#s节点1的内存#s1[0085]参照表2,节点1的sam表中的全局物理地址空间gaddr#s映射到节点1的内存#s1。[0086]表3示出了节点2的sam表中映射关系的示例。[0087]表3[0088]物理地址空间目标物理设备1设备1寄存器地址空间设备12设备2寄存器地址空间设备23内存#1对应的地址空间gaddr#1节点1的内存#14内存#2对应的地址空间gaddr#2节点2的内存#25gaddr#s节点2的内存#s2[0089]参照表3,sam表中的全局物理地址空间gaddr#s映射到节点2的内存#s2。[0090]如图4所示,numa系统整体由参考标号400指示。图4示出了根据本公开的实施例的numa系统的配置的示例。[0091]参照图4中的部分(a),numa系统可包括节点1和节点2,其中,每个节点包括cpu、设备、内存、外部端口以及系统地址映射(sam)组件,其中,节点1和节点2通过外部端口进行连接。应当理解,numa系统可另外包括其他组件,可省略numa系统包括的组件中的至少一个并且可将numa系统中的组件中的至少一个进行组合和/或拆分,但不限于此。[0092]当numa系统运行时,可涉及三个软件模块:底层软件(诸如,系统地址映射配置模块samconf)、启动程序(包括安全软件(securesoftware)和/或加载器(loaders))和系统软件(包括私有内存管理(privatememorymanagement,privmemmgt)程序或模块)。[0093]参照图4中的部分(b),当节点1和节点2被启动时,与每个节点相应的samconf配置各个节点的sam表以将所述全局物理地址空间分别映射到各自的本地物理内存。例如,节点1的samconf将所述全局物理地址空间gaddr#s映射到节点1的内存#s1,节点2的samconf将所述全局物理地址空间gaddr#s映射到节点2的内存#s2。[0094]作为示例,在节点的sam表被配置完成之后,启动程序将预定程序的代码和只读数据(text&ro-data)以二进制文件的形式加载到被启动的节点中的至少一个的内存#s。例如,当预定程序首先在节点1运行时,启动程序可将预定程序的text&ro-data以二进制文件的形式加载到节点1的内存#s。作为示例,privmemmgt模块可对每个节点的内存#s进行管理(例如,内存分配、内存更新、内存释放)。[0095]转到图5,privmemmgt程序或模块的工作流程整体由参考标号500指示。图5示出了privmemmgt模块的工作流程。参照图5,当针对节点1的内存#s执行新的管理动作时,privmemmgt模块将该管理动作同步到节点2的内存#s,同样地,当对节点2的内存执行新的管理动作时,privmemmgt模块将该管理动作同步到节点1的内存#s。[0096]为了解释本公开,以虚拟监控器(virtualmachinemonitor,vmm)hypervisor的运行过程为例进行说明。[0097]在numa系统启动时,底层软件在每一个节点运行。这时,samconf模块可初始化大体所有的sam表,从而在每个节点内都定义同一段特殊地址空间gaddr#s,并且将其映射到每个节点的一段私有物理内存#s。[0098]此外,在hypervisor启动时,privmemmgt模块会建立一个节点间进行同步的通道。[0099]以hypervisor初始在节点1运行为例,hypervisor的text&ro-data以二进制文件的形式被加载到节点1的内存#s,privmemmgt模块调用内存更新应用编程接口(applicationprogramminginterface,api)将所述text&ro-data同步到其他节点的私有内存。也就是说,当text&ro-data被加载到节点1的内存#s时,text&ro-data也会被加载到节点2的内存#s,从而保证节点1和节点2互为备份内存。[0100]图6和图7示出了根据本公开的实施例的内存管理的示例方法。[0101]现在转到图6,内存管理的方法整体由参考标号600指示。参照图6,在步骤s601,与每个节点相应的samconf配置每个节点的sam表。例如,在步骤s601,节点1的samconf将所述全局物理地址空间gaddr#s映射到节点1的内存#s1,节点2的samconf将所述全局物理地址空间gaddr#s映射到节点2的内存#s2。[0102]在步骤s602,启动程序将hypervisor的text&ro-data以二进制文件形式加载到节点1的私有内存。[0103]在步骤s603,hypervisor在节点1运行时,访问text&ro-data为本地内存访问,而hypervisor在节点2运行时,访问text&ro-data为远端内存访问。[0104]在步骤s604,privmemmgt模块调用内存更新api将text&ro-data更新到节点2,节点2将text&ro-data加载到节点2的私有内存,并将同步结果返回到节点1。[0105]在步骤s605,由节点1和节点2中的每个访问text&ro-data现在在两种情况下为本地内存访问。[0106]如图7所示,内存管理方法整体由参考标号700指示。参照图7,在步骤s701,privmemmgt模块在节点1调用内存申请api申请一段内存用于保存变量x,并将该申请同步到节点2。[0107]在步骤s702,privmemmgt模块在节点1调用内存更新api更新变量“x=1”,并将该更新动作同步到节点2,节点2将同步执行结果返回到节点1。[0108]在步骤s703,节点1读取x,该读取操作为本地内存访问。[0109]在步骤s704,privmemmgt模块在节点2调用内存更新api更新变量“x=2”,并将该更新动作同步到节点1,节点1返回同步执行结果。[0110]在步骤s705,节点1基于本地内存访问访问x。[0111]根据本公开的实施例,当hypervisor在任何节点读取变量x时,其大体总能以本地内存访问的方式读取到x的最新的值。[0112]以上参照图1至图7对根据本公开的实施例的基于numa系统的内存访问方法进行了描述。下面参照图8对根据本公开的实施例的基于numa系统的内存访问装置进行描述。[0113]转到图8,内存访问装置整体由参考标号800指示。图8示出了根据本公开的实施例的用于numa系统的内存访问装置800的结构。参照图8,装置800可包括操作模块801和同步模块802。应当理解,装置800可另外包括其他组件,并且装置800包括的组件可被组合或拆分,但不限制于此。[0114]作为示例,操作模块801可被配置为当预定程序在被配置为运行所述预定程序的节点中的第一节点运行时,对所述第一节点的预设内存进行操作。[0115]作为示例,操作模块801可被配置为执行以下操作中的至少一种:请求所述第一节点为所述预定程序在预设内存分配第一物理地址以用于存储数据;请求所述第一节点更新所述预定程序在预设内存的第二物理地址中存储的数据;请求所述第一节点释放所述预定程序在预设内存的第三物理地址中存储的数据。[0116]作为示例,同步模块802可被配置为将对所述第一节点的预设内存进行的操作同步到被配置为运行所述预定程序的节点中的其他它节点的预设内存,以使得所述其它节点中的任一节点运行所述预定程序时访问本地的预设内存。[0117]作为示例,当操作模块801被配置为请求所述第一节点为所述预定程序在预设内存分配第一物理地址以用于存储数据时,同步模块802被配置为:向所述其它节点发送第一同步消息,以使得所述其它节点为所述预定程序在预设内存分配第一物理地址并存储数据;当操作模块801被配置为请求所述第一节点更新所述预定程序在预设内存的第二物理地址中存储的数据时,同步模块802被配置为:向所述其它节点发送第二同步消息,以使得所述其它节点更新所述预定程序在预设内存的第二物理地址中存储的数据;当操作模块801被配置为请求所述第一节点释放所述预定程序在预设内存的第三物理地址中存储的数据时,同步模块802被配置为:向所述其它节点发送第三同步消息,以使得所述其它节点释放所述预定程序在预设内存的第三物理地址中存储的数据。[0118]作为示例,装置800还可包括:配置模块,所述配置模块可被配置为在被配置为运行上所述预定程序的节点中针对所述预定程序配置预设内存。[0119]作为示例,所述配置模块可被配置为在被配置为运行所述预定程序的节点的系统地址映射表(sam)中针对所述预定程序配置预设内存。[0120]应当理解,可以在不同节点终端之间直接发送或接收指示管理动作的信息(例如,同步消息),也可以通过介于不同节点终端之间的中间组件来发送所述信息。[0121]如上所述,根据本公开的实施例的内存访问装置,通过同步针对不同节点终端的内存#s的管理动作,可以保证每个节点终端的内存#s互为内存备份。当软件在当前节点终端运行时,可以通过所述全局物理地址空间中的地址访问当前节点终端的与所述地址相应的本地物理内存。[0122]根据本公开的实施例,一种计算机可读存储介质存储计算机程序,其中,当所述计算机程序被处理器执行时实现如上所述的基于numa系统的内存访问方法。[0123]根据本公开的实施例,一种数据存储装置包括:处理器;存储器,存储有计算机程序,当所述计算机程序被处理器执行时,实现如上所述的基于numa系统的内存访问方法。[0124]现在转到图9,内存访问装置整体由参考标号900指示。图9示出了根据本公开的另一实施例的用于numa系统的内存访问装置900的结构。装置900例如可以是:智能手机、平板电脑、动态影像专家压缩标准音频层面3(movingpictureexpertsgroupaudiolayeriii,mp3)播放器、动态影像专家压缩标准音频层面4(movingpictureexpertsgroupaudiolayeriv,mp4)播放器、笔记本电脑或台式电脑等。在不脱离本公开的范围的情况下,装置900还可能被称为用户设备、便携式终端、膝上型终端、台式终端等其他名称。[0125]通常,装置900包括有:处理器901和存储器902。[0126]处理器901可以包括一个或多个处理核心,比如4核心处理器、8核心处理器或者任何其它正数量的内核或处理器。处理器901可以采用诸如数字信号处理器(digitalsignalprocessing,dsp)、现场可编程门阵列(fieldprogrammablegatearray,fpga)、可编程逻辑阵列(programmablelogicarray,pla)等中的至少一种硬件形式来实现。处理器901也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称中央处理器(centralprocessingunit,cpu);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器901可以在集成有图像处理器(graphicsprocessingunit,gpu),gpu用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器901还可以包括人工智能(artificialintelligence,ai)处理器,该ai处理器用于处理有关机器学习的计算操作。[0127]存储器902可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器902还可包括高速随机存取存储器(ram),以及非易失性存储器(nvm),比如一个或多个磁盘存储设备和/或闪存存储设备。在一些实施例中,存储器902中的非暂态的计算机可读存储介质用于存储至少一个指令,该至少一个指令用于被处理器901所执行以实现本公开的基于numa系统的内存访问方法。[0128]在一些实施例中,装置900还可选包括有:外围设备接口903和至少一个外围设备。处理器901、存储器902和外围设备接口903之间可以通过总线或信号线相连。各个外围设备可以通过总线、信号线或电路板与外围设备接口903相连。所述外围设备可包括:射频电路904、触摸显示屏905、摄像头906、音频电路907、定位组件908和电源909。[0129]外围设备接口903可被用于将输入/输出(input/output,i/o)相关的至少一个外围设备连接到处理器901和存储器902。在一些实施例中,处理器901、存储器902和外围设备接口903被集成在同一芯片或电路板上;在一些其他实施例中,处理器901、存储器902和外围设备接口903中的任意一个或两个可以在单独的芯片或电路板上实现,本实施例对此不加以限定。[0130]射频电路904用于接收和发射射频(radiofrequency,rf)信号或电磁信号。射频电路904通过电磁信号与通信网络以及其他通信设备进行通信。射频电路904将电信号转换为电磁信号进行发送,或者,将接收到的电磁信号转换为电信号。可选地,射频电路904包括:天线系统、rf收发器、一个或多个放大器、调谐器、振荡器、数字信号处理器、编解码芯片组、用户身份模块卡等。射频电路904可以通过至少一种无线通信协议来与其它终端进行通信。该无线通信协议包括但不限于:城域网、各代移动通信网络(诸如2g、3g、4g、5g)、无线局域网和/或无线保真(wirelessfidelity,wi-fi)网络。在一些实施例中,射频电路904还可以包括近距离无线通信(nearfieldcommunication,nfc)有关的电路,本公开对此不加以限定。[0131]显示屏905用于显示用户界面(userinterface,ui)。该ui可以包括图形、文本、图标、视频和/或其它们的任意组合。当显示屏905是触摸显示屏时,显示屏905还具有采集在显示屏905的表面或表面上方的触摸信号的能力。该触摸信号可以作为控制信号输入至处理器901进行处理。此时,显示屏905还可以用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在一些实施例中,显示屏905可以为一个,设置在装置900的前面板;在另一些实施例中,显示屏905可以为至少两个,分别设置在终端1000的不同表面或呈折叠设计;在再一些实施例中,显示屏905可以是柔性显示屏,设置在终端1000的弯曲表面上或折叠面上。甚至,显示屏905还可以设置成非矩形的不规则图形,也即异形屏。显示屏905可以采用液晶显示屏(liquidcrystaldisplay,lcd)、有机发光二极管(organiclight-emittingdiode,oled)等材质制备。[0132]摄像头组件906用于采集图像或视频。可选地,摄像头组件906包括前置摄像头和后置摄像头。通常,前置摄像头设置在终端的前面板,后置摄像头设置在终端的背面。在一些实施例中,后置摄像头为至少两个,分别为主摄像头、景深摄像头、广角摄像头、长焦摄像头中的任意一种,以实现主摄像头和景深摄像头融合实现背景虚化功能、主摄像头和广角摄像头融合实现全景拍摄以及虚拟现实(virtualreality,vr)拍摄功能或者其它融合拍摄功能。在一些实施例中,摄像头组件906还可以包括闪光灯。闪光灯可以是单色温闪光灯,也可以是双色温闪光灯。双色温闪光灯是指暖光闪光灯和冷光闪光灯的组合,可以用于不同色温下的光线补偿。[0133]音频电路907可以包括麦克风和扬声器。麦克风用于采集用户及环境的声波,并将声波转换为电信号输入至处理器901进行处理,或者输入至射频电路904以实现语音通信。出于立体声采集或降噪的目的,麦克风可以为多个,分别设置在装置900的不同部位。麦克风还可以是阵列麦克风或全向采集型麦克风。扬声器则用于将来自处理器901或射频电路904的电信号转换为声波。扬声器可以是传统的薄膜扬声器,也可以是压电陶瓷扬声器。当扬声器是压电陶瓷扬声器时,不仅可以将电信号转换为人类可听见的声波,也可以将电信号转换为人类听不见的声波以进行测距等用途。在一些实施例中,音频电路907还可以包括耳机插孔。[0134]定位组件908用于定位装置900的当前地理位置,以实现导航或基于位置的服务(locationbasedservice,lbs)。定位组件908可以是基于美国的全球定位系统(globalpositioningsystem,gps)、中国的北斗系统、俄罗斯的格雷纳斯系统或欧盟的伽利略系统的定位组件。[0135]电源909用于为装置900中的各个组件进行供电。电源909可以是交流电、直流电、一次性电池或可充电电池。当电源909包括可充电电池时,该可充电电池可以支持有线充电或无线充电。该可充电电池还可以用于支持快充技术。[0136]在一些实施例中,装置900还包括有一个或多个传感器910。该一个或多个传感器910包括但不限于:加速度传感器911、陀螺仪传感器912、压力传感器913、指纹传感器914、光学传感器915和/或接近传感器916。[0137]加速度传感器911可以检测以终装置900建立的坐标系的三个坐标轴上的加速度大小。比如,加速度传感器911可以用于检测重力加速度在三个坐标轴上的分量。处理器901可以根据加速度传感器911采集的重力加速度信号,控制触摸显示屏905以横向视图或纵向视图进行用户界面的显示。加速度传感器911还可以用于游戏或者用户的运动数据的采集。[0138]陀螺仪传感器912可以检测装置900的机体方向及转动角度,陀螺仪传感器912可以与加速度传感器911协同采集用户对装置900的3d动作。处理器901根据陀螺仪传感器912采集的数据,可以实现如下功能:动作感应(比如根据用户的倾斜操作来改变ui)、拍摄时的图像稳定、游戏控制以及惯性导航。[0139]压力传感器913可以设置在装置900的侧边框和/或触摸显示屏905的下层。当压力传感器913设置在装置900的侧边框时,可以检测用户对装置900的握持信号,由处理器901根据压力传感器913采集的握持信号进行左右手识别或快捷操作。当压力传感器913设置在触摸显示屏905的下层时,由处理器901根据用户对触摸显示屏905的压力操作,实现对ui上的可操作性控件进行控制。可操作性控件包括按钮控件、滚动条控件、图标控件、菜单控件中的至少一种。[0140]指纹传感器914用于采集用户的指纹,由处理器901根据指纹传感器914采集到的指纹识别用户的身份,或者,由指纹传感器914根据采集到的指纹识别用户的身份。在识别出用户的身份为可信身份时,由处理器901授权该用户执行相关的敏感操作,该敏感操作包括解锁屏幕、查看加密信息、下载软件、支付及更改设置等。指纹传感器914可以被设置装置900的正面、背面或侧面。当装置900上设置有物理按键或厂商logo时,指纹传感器914例如可以与物理按键或厂商logo集成在一起。[0141]光学传感器915用于采集环境光强度。在一个实施例中,处理器901可以根据光学传感器915采集的环境光强度,控制触摸显示屏905的显示亮度。当环境光强度较高时,调高触摸显示屏905的显示亮度;当环境光强度较低时,调低触摸显示屏905的显示亮度。在另一个实施例中,处理器901还可以根据光学传感器915采集的环境光强度,动态调整摄像头组件906的拍摄参数。[0142]接近传感器916,也称距离传感器,可被设置在装置900的前面板。接近传感器916用于采集用户与装置900的正面之间的距离。在一个实施例中,当接近传感器916检测到用户与装置900的正面之间的距离逐渐变小时,由处理器901控制触摸显示屏905从亮屏状态切换为息屏状态;当接近传感器916检测到用户与装置900的正面之间的距离逐渐变大时,由处理器901控制触摸显示屏905从息屏状态切换为亮屏状态。[0143]应当理解,图9中示出的结构并不构成对装置900的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置,但不限制于此。[0144]根据本公开的实施例,可提供一种存储指令的计算机可读存储介质,其中,当指令被至少一个处理器运行时,促使至少一个处理器执行根据本公开的实施例的基于numa系统的内存访问方法。这里的计算机可读存储介质的示例包括:只读存储器(rom)、随机存取可编程只读存储器(prom)、电可擦除可编程只读存储器(eeprom)、随机存取存储器(ram)、动态随机存取存储器(dram)、静态随机存取存储器(sram)、闪存、非易失性存储器、cd-rom、cd-r、cd+r、cd-rw、cd+rw、dvd-rom、dvd-r、dvd+r、dvd-rw、dvd+rw、dvd-ram、bd-rom、bd-r、bd-rlth、bd-re、蓝光或光盘存储器、硬盘驱动器(hdd)、固态硬盘(ssd)、卡式存储器(诸如,多媒体卡、安全数字(sd)卡或极速数字(xd)卡)、磁带、软盘、磁光数据存储装置、光学数据存储装置、硬盘、固态盘和/或任何其他装置,所述任何其他装置被配置为以非暂时性方式存储计算机程序以及任何相关联的数据、数据文件和数据结构并将所述计算机程序以及任何相关联的数据、数据文件和数据结构提供给处理器或计算机使得处理器或计算机能执行所述计算机程序。上述计算机可读存储介质中的计算机程序可在诸如客户端、主机、代理装置、服务器等计算机设备中部署的环境中运行,此外,在一个示例中,计算机程序以及任何相关联的数据、数据文件和数据结构分布在联网的计算机系统上,使得计算机程序以及任何相关联的数据、数据文件和数据结构通过一个或多个处理器或计算机以分布式方式存储、访问和执行。[0145]根据本公开的实施例中,还可提供一种计算机程序产品,该计算机程序产品中的指令可由计算机设备的处理器执行以执行根据本公开的实施例的基于numa系统的内存访问方法。[0146]相关领域的普通技术人员在考虑说明书及实践这里公开的教导后,可容易想到本公开的其它实施方案。本技术旨在涵盖对本文描述的实施例的变型、使用和适应性变化,这些变型、使用、适应性变化等遵循本公开的一般性原理并包括本公开具体描述以及未具体描述的相关
技术领域
:中的公知常识或惯用技术手段。说明书和实施例被视为示例性的而不限制本公开的真正范围和精神。[0147]然而,将理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围的情况下进行各种修改和改变。本发明的范围仅由所附的权利要求来限制。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1