一种内存分配的方法及装置、内存寻址的方法及装置与流程

文档序号:23718477发布日期:2021-01-24 06:34阅读:83来源:国知局
一种内存分配的方法及装置、内存寻址的方法及装置与流程

[0001]
本发明涉及通用计算技术领域,尤其涉及一种内存分配的方法及装置、内存寻址的方法及装置、电子设备和存储介质。


背景技术:

[0002]
现有技术中,通用计算领域存在两种片上内存管理模型:uma(uniform memory access,一致内存访问)模型和numa(non-uniform memory access,非一致内存访问)模型。
[0003]
其中,uma模型的结构方式为通用gpu或ai计算芯片将可用的芯片内的片上内存以连续的方式组织起来,芯片上的各个运算单元以同样的速度访问片上内存。参见图1,图1中的芯片包括n个运算单元core0~coren,每个运算单元设置有一级缓存l1,n个运算单元均通过二级缓存l2与片上内存连接。传统的页表管理采用uma模型,即flat memory model,如果从芯片中任意一个核心运算单元的角度来看,当它访问片上内存的时候,物理地址空间是一个连续的,没有空洞的地址空间。这种片上内存管理模型下,物理内存的管理比较简单。但随着工艺的进步和对算力的追求,越来越多的运算核心被尽可能地塞进了同一块芯片上,各个核心对于内存带宽的争抢访问成为了瓶颈。由于芯片内总线带宽的限制运算单元和存储单元数量增加的同时,并不总能获得更高的性能,严重的限制了芯片的扩展。
[0004]
numa模型为通用gpu或ai计算芯片内的各个运算单元或运算单元簇拥有各自的本地片上内存,可以支持特别快速的本地访问。各个运算单元和各个片上内存通过总线连接起来,访问非本地片上内存速度远比访问本地片上内存慢。参见图2,图2中的芯片包括n个运算单元core0~coren,但是每个运算单元拥有各自的片上内存,每个运算单元上设置有一级缓存l1,每个运算单元的第一缓存l1通过各自对应的二级缓存l2与各自的片上内存连接。各个运算单元和各个片上内存又通过总线连接。numa模型通过给每个运算单元提供本地存储器来解决这个问题,他的优点是很容易通过增加运算单元的数量来增加芯片的算力。对于并行运算中,存在大量分散的数据的应用,核心运算单元只需要访问本地的数据,在这种应用场景下,numa模型可以大大提高芯片综合性能。但缺点也同样明显,在很多应用场景中,各个运算单元间不可避免的要共享数据,当访问其他运算节点的数据时,数据传输的效率会下降的很快,这会极大的影响芯片的运算综合性能。
[0005]
鉴于单独的uma模型或numa模型在管理片上内存时都存在明显的缺陷,如何克服上述缺陷,保证芯片算力能够随着运算单元数量的提高而同比增加,是目前需要解决的技术问题。


技术实现要素:

[0006]
本发明实施例提供一种内存分配管理方法及装置、电子设备和存储介质,用以解决现有技术中单独的uma模型或numa模型在管理片上内存时存在的技术缺陷,以保证芯片算力能够随着运算单元数量的提高而同比增加。
[0007]
本发明实施例提供一种内存分配的方法,用于具有多个计算核心的芯片上,每个
计算核心具有片上内存,所述方法包括:
[0008]
确定待分配的数据的分布模式;
[0009]
将所述待分配的数据分别按照对应的分布模式分配于所述片上内存的物理内存中,并建立所述物理内存地址对应的页表,其中,所述页表包括多个页表地址,且所述页表地址与所述物理内存地址相关联。
[0010]
根据本发明一个实施例的内存分配的方法,所述分布模式包括:连续模式;
[0011]
将所述待分配的数据分别按照对应的分布模式分配于所述片上内存的物理内存中,包括:
[0012]
将所述待分配的数据按照所述连续模式均匀分配于各个片上内存的物理内存中。
[0013]
根据本发明一个实施例的内存分配的方法,所述分布模式包括:本地模式;
[0014]
将所述待分配的数据分别按照对应的分布模式分配于所述片上内存的物理内存中,包括:
[0015]
将所述待分配的数据按照所述本地模式分配于单个目标本地片上内存的物理内存中。
[0016]
根据本发明一个实施例的内存分配的方法,所述分布模式包括:区间模式;
[0017]
将所述待分配的数据分别按照对应的分布模式分配于所述片上内存的物理内存中,包括:
[0018]
将所述待分配的数据按照所述区间模式分配于多个目标片上内存的物理内存中。
[0019]
根据本发明一个实施例的内存分配的方法,所述方法还包括:
[0020]
在每个页表地址中添加模式标记位,其中,所述模式标记位与所述页表地址对应的物理内存中的分布模式相对应。
[0021]
本发明实施例还提供一种内存寻址的方法,用于具有多个计算核心的芯片上,每个计算核心具有本地片上内存,所述方法包括:
[0022]
确定要访问的片上内存的虚拟地址;
[0023]
根据预设的页表进行转换,将虚拟地址转换为页表中的页表地址;
[0024]
确定所述页表地址及对应的分布模式以及偏移地址;
[0025]
根据所述页表地址、以及所述页表地址对应的分布模式和偏移地址在位图中进行匹配,得到片上内存的目标物理内存地址,其中,所述位图与多个所述片上内存的物理内存相对应。
[0026]
根据本发明一个实施例的内存寻址的方法,确定所述页表地址及对应的分布模式以及偏移地址,包括:
[0027]
根据页表地址中的模式标记位,确定所述页表地址对应的分布模式;
[0028]
根据虚拟地址及地址分配的粒度,确定所述页表地址对应的偏移地址。
[0029]
根据本发明一个实施例的内存寻址的方法,根据所述页表地址、以及所述页表地址对应的分布模式和偏移地址在位图中进行匹配,得到片上内存的目标物理内存地址,包括:
[0030]
根据所述页表地址确定要访问的物理内存地址在所述位图中的起始地址位置;
[0031]
根据所述偏移地址确定在所述位图中与所述起始地址位置的偏移量;
[0032]
根据所述位图中的起始地址位置、所述页表地址对应的分布模式和所述起始地址
位置的偏移量在所述位图中进行匹配,得到位图中的至少一个目标位图地址;
[0033]
根据所述至少一个目标位图地址,确定对应的目标物理内存地址,其中,所述位图中的位图地址与所述片上内存的物理内存地址一一对应。
[0034]
根据本发明一个实施例的内存寻址的方法,所述页表地址对应的分布模式包括:连续模式;
[0035]
根据所述位图中的起始地址位置、所述页表地址对应的分布模式和所述起始地址位置的偏移量在所述位图中进行匹配,得到位图中的至少一个目标位图地址,包括:
[0036]
根据连续模式,确定待匹配的位图中的连续的位图地址;
[0037]
根据所述起始地址位置和偏移量,在位图中的连续的位图地址中进行匹配,得到位图中的至少一个目标位图地址。
[0038]
根据本发明一个实施例的内存寻址的方法,所述页表地址对应的分布模式包括:本地模式;
[0039]
根据所述位图中的起始地址位置、所述页表地址对应的分布模式和所述起始地址位置的偏移量在所述位图中进行匹配,得到位图中的至少一个目标位图地址,包括:
[0040]
根据本地模式,确定待匹配的位图中的与单个目标本地片上内存对应的位图地址;
[0041]
根据所述起始地址位置和偏移量,在位图中的与单个目标本地片上内存对应的位图地址中进行匹配,得到位图中的至少一个目标位图地址。
[0042]
根据本发明一个实施例的内存寻址的方法,所述页表地址对应的分布模式包括:区间模式;
[0043]
根据所述位图中的起始地址位置、所述页表地址对应的分布模式和所述起始地址位置的偏移量在所述位图中进行匹配,得到位图中的至少一个目标位图地址,包括:
[0044]
根据区间模式,确定待匹配的位图中的多个目标片上内存对应的位图地址;
[0045]
根据所述起始地址位置和偏移量,在位图中的与多个目标片上内存对应的位图地址中进行匹配,得到位图中的至少一个目标位图地址。
[0046]
本发明实施例还提供一种内存分配的装置,用于具有多个计算核心的芯片上,每个计算核心具有片上内存,包括:
[0047]
模式确定模块,用于确定待分配的数据的分布模式;
[0048]
分配执行模块,用于将所述待分配的数据分别按照对应的分布模式分配于所述片上内存的物理内存中,并建立所述物理内存地址对应的页表,其中,所述页表包括多个页表地址,且所述页表地址与所述物理内存地址相关联。
[0049]
本发明实施例还提供一种内存寻址的装置,用于具有多个计算核心的芯片上,每个计算核心具有本地片上内存,包括:
[0050]
虚拟地址确定模块,用于确定要访问的片上内存的虚拟地址;
[0051]
页表地址转换模块,用于根据预设的页表进行转换,将虚拟地址转换为页表中的页表地址;
[0052]
页表地址处理模块,用于确定所述页表地址对应的分布模式以及偏移地址;
[0053]
物理地址匹配模块,用于根据所述页表地址、以及所述页表地址对应的分布模式和偏移地址在位图中进行匹配,得到片上内存的目标物理内存地址,其中,所述位图与多个
所述片上内存的物理内存地址相对应。
[0054]
发明实施例还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一种所述内存分配的方法或内存寻址的方法的步骤。
[0055]
本发明实施例还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一种所述内存分配的方法或内存寻址的方法的步骤。
[0056]
本发明实施例提供的内存分配的方法及装置,通过确定待分配的数据的分布模式,并将待分配的数据分别按照对应的分布模式分配于片上内存的物理内存中,从而可以支持数据在片上内存的不同分布模式的存储,解决单一的分布模式下芯片性能受制约或者访问非本地内存时速度慢的缺陷,从而在芯片内的运算核心不断增加的情况下,减轻了芯片内总线带宽的压力,降低了总线上的冲突,提高了数据传输的效率。
[0057]
本发明实施例提供的内存寻址的方法及装置,确定要访问的片上内存的虚拟地址,根据预设的页表进行转换,将虚拟地址转换为页表中的页表地址,由于本实施例的多种分布模式支持非连续的内存管理以及连续的内存管理,页表地址其实并不是真正的物理地址,还要再进行一次地址转换,即确定页表地址对应的分布模式以及偏移地址,根据页表地址、以及页表地址对应的分布模式和偏移地址在位图中进行匹配,得到片上内存的目标物理内存地址,从而针对本实施例的支持多种分布模式的结构,实现对目标物理内存地址的查找。
附图说明
[0058]
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0059]
图1是现有技术中提供的采用uma模型管理片上内存的结构示意图;
[0060]
图2是现有技术中提供的采用numa模型管理片上内存的结构示意图;
[0061]
图3是本发明实施例提供的一种内存分配的方法的流程示意图;
[0062]
图4a是现有技术中的uma模式以及numa模式的示意图;
[0063]
图4b是本发明实施例的连续模式、本地模式以及区间模式的示意图;
[0064]
图5是本发明一实施例提供的一种内存寻址的方法的流程示意图;
[0065]
图6是本发明另一实施例提供的一种位图的结构示意图;
[0066]
图7是本发明另一实施例提供的一种内存寻址的方法的流程示意图;
[0067]
图8是本发明另一实施例提供的页表地址与位图的对应关系的示意图;
[0068]
图9是本发明实施例提供的一种内存分配的装置的结构示意图;
[0069]
图10是本发明实施例提供的一种内存寻址的装置的结构示意图;
[0070]
图11是本发明实施例提供的一种电子设备的结构示意图。
具体实施方式
[0071]
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0072]
在本发明一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明一个或多个实施例。在本发明一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本发明一个或多个实施例中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
[0073]
应当理解,尽管在本发明一个或多个实施例中可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本发明一个或多个实施例范围的情况下,第一也可以被称为第二,类似地,第二也可以被称为第一。取决于语境,如在此所使用的词语“如果”可以被解释成为“在
……
时”或“当
……
时”或“响应于确定”。
[0074]
首先,对本发明一个或多个实施例涉及的名词术语进行解释。
[0075]
hbm(high bandwidth memory,高带宽存储器):一种基于3d堆栈工艺的高性能的dram内存,适用于高存储器带宽需求的应用场合,例如图形处理器、网络交换及转发设备(如路由器、交换器)等。
[0076]
gddr(graphics double data rate,图形用双倍数据传输率存储器):是一种高性能显卡使用的同步动态随机存取存储器,专为高带宽需求计算机应用所设计。
[0077]
页表:是一种特殊的数据结构,放在系统空间的页表区,用于存放页表地址,表征虚拟地址与物理地址的对应关系。
[0078]
位图:与所有芯片的片上内存对应的数据结构。每一个空格代表位图中的一个比特,每个空格对应分配的内存粒度为设定数值,例如128kb。
[0079]
本发明实施例公开了一种内存分配的方法,参见图3,用于具有多个计算核心的芯片上,每个计算核心具有片上内存,包括步骤301~302:
[0080]
301、确定待分配的数据的分布模式。
[0081]
其中,分布模式包括:
[0082]
连续模式——即uma模式,以固定内存大小为粒度在不同的运算节点对应的片上内存中进行平均分配。该种模式适用于该数据需要被所有的运算节点都要访问的情形。
[0083]
本地模式——即numa模式,以固定内存大小为粒度在单个运算节点对应的片上内存进行分配。该种模式适用于该数据只会被对应的单个运算节点访问的情形。
[0084]
区间模式——即uma_n模式,以固定内存大小为粒度在指定的几个运算节点对应的片上内存进行分配。该种模式适用于该数据只会被指定的几个运算节点访问的情形。
[0085]
本实施例中,通过将待分配的数据通过不同的模式分配于运算节点的片上内存中,以满足不同模式的数据分配的需要,从而可以根据该数据被访问的情形的不同,将该数据按照对应的模式分配于相应的片上内存中。
[0086]
302、将所述待分配的数据分别按照对应的分布模式分配于所述片上内存的物理
内存中,并建立所述物理内存对应的页表。
[0087]
具体地,对于分布模式包括连续模式的情形,步骤302包括:
[0088]
将所述待分配的数据按照所述连续模式均匀分配于各个片上内存的物理内存中。
[0089]
具体地,对于分布模式包括本地模式的情形,步骤302包括:
[0090]
将所述待分配的数据按照所述本地模式分配于单个目标本地片上内存的物理内存中。
[0091]
具体地,对于分布模式包括区间模式的情形,步骤302包括:
[0092]
将所述待分配的数据按照所述区间模式分配于多个目标片上内存的物理内存中。
[0093]
参见图4a和图4b,图4a所示为现有技术中的uma模式以及numa模式,图4b所示为本实施例的连续模式(uma)、本地模式(numa)以及区间模式(uma_n)的对比图。
[0094]
图4a中,运算核心共包括4个core0~core3,可见,在uma模式下,数据被平均分配于4个运算核心的片上内存中,每个运算核心可以访问自身和其他运算核心的片上内存的数据;在numa下,数据被各自分配于每个运算核心对应的各自片上内存中,在numa模式下,每个运算核心只能访问自身的片上内存的数据。
[0095]
参见图4b,图4b中的运算核心包括8个core0~core7,数据分配包括了三种模式:对于各个运算核心均要访问的数据,适用于uma模式的分配;对于仅需要某单个运算核心单独访问的数据,适用于numa模式下的分配;对于需要某几个运算核心单独访问的数据,适用于uma_n模式下的分配。
[0096]
本实施例中,通过设置待分配的数据的分布模式,从而可以支持数据在片上内存的不同分布模式的存储,解决单一的分布模式下芯片性能受制约或者访问非本地内存时速度慢的缺陷,
[0097]
其中,所述页表包括多个页表地址,且所述页表地址与所述物理内存地址相关联。
[0098]
具体地,可以在每个页表地址中添加模式标记位,其中,模式标记位与页表地址对应的物理内存地址中的分布模式相对应。
[0099]
例如在一种具体形式下,对于4个运算核心,总的片上内存大小为4gb,页表包括1024*1024个页表地址,每个页表地址对应有4kb的内存,以实现页表与物理内存地址的对应。
[0100]
通过建立物理内存地址对应的页表,以便于对目标数据的查找,具体的方法可以参见下述实施例中的内存寻址的方法。
[0101]
本发明实施例提供的内存分配的方法,通过确定待分配的数据的分布模式,并将待分配的数据分别按照对应的分布模式分配于片上内存的物理内存中,从而可以支持数据在片上内存的不同分布模式的存储,解决单一的分布模式下芯片性能受制约或者访问非本地内存时速度慢的缺陷,从而在芯片内的运算核心不断增加的情况下,减轻了芯片内总线带宽的压力,降低了总线上的冲突,提高了数据传输的效率。
[0102]
本发明实施例公开了一种内存寻址的方法,参见图5,用于具有多个计算核心的芯片上,每个计算核心具有本地片上内存,包括:
[0103]
501、确定要访问的片上内存的虚拟地址。
[0104]
其中,虚拟地址可以根据访问命令来确定。当运算核心要访问片上内存时,根据接收到的访问命令,确定对应的虚拟地址。
[0105]
502、根据预设的页表进行转换,将虚拟地址转换为页表中的页表地址。
[0106]
本实施例中,与传统的虚拟地址经过页表转换后得到物理内存地址不同,由于本实施例的页表转换支持多种模式,所以得到的页表地址并非真正的物理内存地址,还要再进行一次转换。
[0107]
503、确定所述页表地址对应的分布模式以及偏移地址。
[0108]
其中,步骤503包括:根据页表地址中的模式标记位,确定所述页表地址对应的分布模式;根据虚拟地址及地址分配的粒度,确定所述页表地址对应的偏移地址。
[0109]
其中,分布模式决定了要查找的数据的物理内存地址的排布方式;
[0110]
页表地址决定了要查找的物理内存地址在位图中的起始位;
[0111]
偏移地址决定了要查找的物理内存地址和起始位的相对位置。
[0112]
根据上述三个参数,便可以确定要查找的物理内存地址。
[0113]
为了支持uma/numa混合模式,我们保留页表地址中的某些比特用来区分uma/numa,如下表1所示。
[0114]
表1
[0115]
2bits分布模式2b00uma2b01uma_n2b11numa
[0116]
504、根据所述页表地址、以及所述页表地址对应的分布模式和偏移地址在位图中进行匹配,得到片上内存的目标物理内存地址。
[0117]
其中,所述位图与多个所述片上内存的物理内存地址相对应。
[0118]
具体地,步骤504包括下述步骤s541~s544:
[0119]
s541、根据所述页表地址确定要访问的物理内存地址在所述位图中的起始地址位置。
[0120]
s542、根据所述偏移地址确定在所述位图中与所述起始地址位置的偏移量。
[0121]
s543、根据所述位图中的起始地址位置、所述页表地址对应的分布模式和所述起始地址位置的偏移量在所述位图中进行匹配,得到位图中的至少一个目标位图地址。
[0122]
s544、根据所述至少一个目标位图地址,确定对应的目标物理内存地址,其中,所述位图中的位图地址与所述片上内存的物理内存地址一一对应。
[0123]
本发明实施例提供的内存寻址的方法,确定要访问的片上内存的虚拟地址,根据预设的页表进行转换,将虚拟地址转换为页表中的页表地址,由于本实施例的分布模式支持非连续的内存管理以及连续的内存管理,页表地址其实并不是真正的物理地址,还要再进行一次地址转换,即确定页表地址对应的分布模式以及偏移地址,根据页表地址、以及页表地址对应的分布模式和偏移地址在位图中进行匹配,得到片上内存的目标物理内存地址,从而针对本实施例的支持多种分布模式的结构,实现对目标物理内存地址的查找。
[0124]
为了对本发明实施例的方法进行更为详尽的解释,本发明实施例通过一个具体的内存寻址的实例,来对本实施例的内存寻址的方法进行示意性的说明。
[0125]
参见图6,图6示出了本实施例的一个位图的示意图。对于16个运算核心及其拥有单独内存节点的芯片,总的片上内存大小为128gb的系统,每个节点的上的分配粒度为
128kb,我们需要维护的位图为uint16_t mem_on_chip_bitmap[128g/128k/16]。图6中每一个空格代表位图中的一个比特(128kb)。需要说明的是,该位图中的每一列位图对应一个运算核心的物理内存。位图空格按照由下到上的每一行进行顺次编码。
[0126]
根据各个uma/numa的内存寻址模式,本实施例定义了固定的寻址方式:
[0127]
1)uma,按照uma_patten为0xffff去位图中寻找合适的内存;
[0128]
需要说明的是,0xffff代表的含义是在第1-16列进行连续的位图空格的查询,如图6中所示。
[0129]
2)uma_4_0,需要去位图中匹配四个连续的0x000f空间;
[0130]
需要说明的是,0x000f代表的含义是在第1-4列进行连续的4行位图空格的查询。由于本实施例中,第1-4列没有连续的4行位图空格,所以不存在uma_4_0对应的位图空格。
[0131]
3)uma_4_1,需要去位图中匹配四个连续的0x00f0空间;
[0132]
需要说明的是,0x00f0代表的含义是在第5-8列进行连续的4行位图空格的查询,如图6中所示。
[0133]
4)uma_4_2,需要去位图中匹配四个连续的0x0f00空间;
[0134]
需要说明的是,0x0f00代表的含义是在第9-12列进行连续的4行位图空格的查询,如图6中所示。
[0135]
5)uma_4_3,需要去位图中匹配四个连续的0xf000空间;
[0136]
需要说明的是,0xf000代表的含义是在第13-16列进行连续的4行位图空格的查询,如图6中所示。
[0137]
6)numa_0,需要去位图中匹配16个连续的0x0001空间;
[0138]
7)numa_1,需要去位图中匹配16个连续的0x0002空间;
[0139]
需要说明的是,0x0002代表的含义是在第2列进行连续的16行位图空格的查询,如图6中所示。
[0140]
8)numa_15,需要去位图中匹配16个连续的0x8000空间。
[0141]
参见图7,本实施例的内存寻址的方法具体包括:
[0142]
701、确定要访问的片上内存的虚拟地址。
[0143]
702、根据预设的页表进行转换,将虚拟地址转换为页表中的页表地址。
[0144]
如表2所示,表2示出了图6中的几种模式下的页表地址的示意表达方式。
[0145]
表2
[0146]
page entry页表地址vm_pa(单位128k)00x010xc0000000001120x40000000001430x40000000001840x40000000001c50x000000000210
[0147]
需要解释的是,表2中,0x0表示uma模式,0x4表示numa模式。参见图8,图8示出了页表地址vm_pa与位图的对应关系。
[0148]
其中,0代表编号为0的位图空格,00000000011代表编号为17的位图空格,
00000000014代表编号为20的位图空格,00000000018代表编号为24的位图空格,0000000001c代表编号为28的位图空格,00000000210代表编号为272的位图空格。
[0149]
703、确定所述页表地址对应的分布模式以及偏移地址。
[0150]
具体地,步骤703包括:根据页表地址中的模式标记位,确定所述页表地址对应的分布模式;根据虚拟地址及地址分配的粒度,确定所述页表地址对应的偏移地址。
[0151]
从页表地址到物理内存地址的转换关系参见下表3:
[0152]
表3
[0153]
字段uma/numa_modevm_pava_offset字段值umaxxx1yyy1字段值numaxxx2yyy2
[0154]
其中,uma/numa_mode为分布模式,vm_pa为页表地址,va_offset为偏移地址。
[0155]
704、根据所述页表地址确定要访问的物理内存地址在所述位图中的起始地址位置。
[0156]
对于本实施例中起始地址位置的解释,参见上述表2以及图8的解释,在此不再赘述。
[0157]
705、根据所述偏移地址确定在所述位图中与所述起始地址位置的偏移量。
[0158]
706、根据所述位图中的起始地址位置、所述页表地址对应的分布模式和所述起始地址位置的偏移量在所述位图中进行匹配,得到位图中的至少一个目标位图地址。
[0159]
具体地,本实施例中得到2个连续模式(uma模式)下的目标位图地址、3个区间模式(uma_n)下的目标位图地址、1个本地模式(numa模式)下的目标位图地址,如图6所示。
[0160]
对于连续模式(uma模式),步骤706包括:根据连续模式,确定待匹配的位图中的连续的位图地址;根据所述起始地址位置和偏移量,在位图中的连续的位图地址中进行匹配,得到位图中的至少一个目标位图地址。
[0161]
对于本地模式(numa模式),步骤706包括:根据本地模式,确定待匹配的位图中的与单个目标本地片上内存对应的位图地址;根据所述起始地址位置和偏移量,在位图中的与单个目标本地片上内存对应的位图地址中进行匹配,得到位图中的至少一个目标位图地址。
[0162]
对于区间模式(uma_n),步骤706包括:根据区间模式,确定待匹配的位图中的多个目标片上内存对应的位图地址;根据所述起始地址位置和偏移量,在位图中的与多个目标片上内存对应的位图地址中进行匹配,得到位图中的至少一个目标位图地址。
[0163]
707、根据所述至少一个目标位图地址,确定对应的目标物理内存地址。
[0164]
其中,位图中的位图地址与片上内存的物理内存地址一一对应。
[0165]
本实施例中,位图的每个空格表征128kb,通过目标位图地址,便可以确定对应的目标物理内存地址。
[0166]
本发明实施例提供的内存寻址的方法,通过将虚拟地址转换为页表中的页表地址,再进行一次地址转换,即确定页表地址对应的分布模式以及偏移地址,根据页表地址、以及页表地址对应的分布模式和偏移地址在位图中进行匹配,得到片上内存的目标物理内存地址,从而针对本实施例的支持多种分布模式的结构,实现对目标物理内存地址的查找。
[0167]
下面对本发明实施例提供的内存分配的装置进行描述,下文描述的内存分配的装
置与上文描述的内存分配的方法可相互对应参照。
[0168]
本发明实施例公开了一种内存分配的装置,参见图9,用于具有多个计算核心的芯片上,每个计算核心具有片上内存,包括:
[0169]
模式确定模块901,用于确定待分配的数据的分布模式;
[0170]
分配执行模块902,用于将所述待分配的数据分别按照对应的分布模式分配于所述片上内存的物理内存中,并建立所述物理内存地址对应的页表,其中,所述页表包括多个页表地址,且所述页表地址与所述物理内存地址相关联。
[0171]
可选地,所述分布模式包括:连续模式;
[0172]
分配执行模块902,具体用于:将所述待分配的数据按照所述连续模式均匀分配于各个片上内存的物理内存中。
[0173]
可选地,所述分布模式包括:本地模式;
[0174]
分配执行模块902,具体用于:将所述待分配的数据按照所述本地模式分配于单个目标本地片上内存的物理内存中。
[0175]
可选地,所述分布模式包括:区间模式;
[0176]
分配执行模块902,具体用于:将所述待分配的数据按照所述区间模式分配于多个目标片上内存的物理内存中。
[0177]
可选地,所述内存分配的装置还包括:标记增加模块,用于在每个页表地址中添加模式标记位,其中,所述模式标记位与所述页表地址对应的物理内存地址中的分布模式相对应。
[0178]
本发明实施例提供的内存分配的装置,通过确定待分配的数据的分布模式,并将待分配的数据分别按照对应的分布模式分配于片上内存的物理内存中,从而可以支持数据在片上内存的不同分布模式的存储,解决单一的分布模式下芯片性能受制约或者访问非本地内存时速度慢的缺陷,从而在芯片内的运算核心不断增加的情况下,减轻了芯片内总线带宽的压力,降低了总线上的冲突,提高了数据传输的效率。
[0179]
下面对本发明实施例提供的内存寻址的装置进行描述,下文描述的内存寻址的装置与上文描述的内存寻址的方法可相互对应参照。
[0180]
本发明实施例公开了一种内存寻址的装置,参见图10,用于具有多个计算核心的芯片上,每个计算核心具有本地片上内存,包括:
[0181]
虚拟地址确定模块1001,用于确定要访问的片上内存的虚拟地址;
[0182]
页表地址转换模块1002,用于根据预设的页表进行转换,将虚拟地址转换为页表中的页表地址;
[0183]
页表地址处理模块1003,用于确定所述页表地址对应的分布模式以及偏移地址;
[0184]
物理地址匹配模块1004,用于根据所述页表地址、以及所述页表地址对应的分布模式和偏移地址在位图中进行匹配,得到片上内存的目标物理内存地址,其中,所述位图与多个所述片上内存的物理内存地址相对应。
[0185]
可选地,页表地址处理模块1003,具体用于:根据页表地址中的模式标记位,确定所述页表地址对应的分布模式;根据虚拟地址及地址分配的粒度,确定所述页表地址对应的偏移地址。
[0186]
可选地,物理地址匹配模块1004,具体用于:
[0187]
起始地址确定单元,用于根据所述页表地址确定要访问的物理内存地址在所述位图中的起始地址位置;
[0188]
偏移地址确定单元,用于根据所述偏移地址确定在所述位图中与所述起始地址位置的偏移量;
[0189]
位图地址匹配单元,用于根据所述位图中的起始地址位置、所述页表地址对应的分布模式和所述起始地址位置的偏移量在所述位图中进行匹配,得到位图中的至少一个目标位图地址;
[0190]
物理地址确定单元,用于根据所述至少一个目标位图地址,确定对应的目标物理内存地址,其中,所述位图中的位图地址与所述片上内存的物理内存地址一一对应。
[0191]
可选地,所述页表地址对应的分布模式包括:连续模式;
[0192]
位图地址匹配单元,具体用于:根据连续模式,确定待匹配的位图中的连续的位图地址;
[0193]
根据所述起始地址位置和偏移量,在位图中的连续的位图地址中进行匹配,得到位图中的至少一个目标位图地址。
[0194]
可选地,所述页表地址对应的分布模式包括:本地模式;
[0195]
位图地址匹配单元,具体用于:根据本地模式,确定待匹配的位图中的与单个目标本地片上内存对应的位图地址;
[0196]
根据所述起始地址位置和偏移量,在位图中的与单个目标本地片上内存对应的位图地址中进行匹配,得到位图中的至少一个目标位图地址。
[0197]
可选地,所述页表地址对应的分布模式包括:区间模式;
[0198]
位图地址匹配单元,具体用于:根据区间模式,确定待匹配的位图中的多个目标片上内存对应的位图地址;
[0199]
根据所述起始地址位置和偏移量,在位图中的与多个目标片上内存对应的位图地址中进行匹配,得到位图中的至少一个目标位图地址。
[0200]
本发明实施例提供的内存寻址的装置,确定要访问的片上内存的虚拟地址,根据预设的页表进行转换,将虚拟地址转换为页表中的页表地址,由于本实施例的多种分布模式支持非连续的内存管理以及连续的内存管理,页表地址其实并不是真正的物理地址,还要再进行一次地址转换,即确定页表地址对应的分布模式以及偏移地址,根据页表地址、以及页表地址对应的分布模式和偏移地址在位图中进行匹配,得到片上内存的目标物理内存地址,从而针对本实施例的支持多种分布模式的结构,实现对目标物理内存地址的查找。
[0201]
图11示例了一种电子设备的实体结构示意图,如图11所示,该电子设备可以包括:处理器(processor)1110、通信接口(communications interface)1120、存储器(memory)1130和通信总线1140,其中,处理器1110,通信接口1120,存储器1130通过通信总线1140完成相互间的通信。处理器1110可以调用存储器1130中的逻辑指令,以执行内存分配的方法或内存寻址的方法。
[0202]
其中,内存分配的方法包括:
[0203]
确定待分配的数据的分布模式;
[0204]
将所述待分配的数据分别按照对应的分布模式分配于所述片上内存的物理内存中,并建立所述物理内存地址对应的页表,其中,所述页表包括多个页表地址,且所述页表
地址与所述物理内存地址相关联。
[0205]
其中,内存寻址的方法包括:
[0206]
确定要访问的片上内存的虚拟地址;
[0207]
根据预设的页表进行转换,将虚拟地址转换为页表中的页表地址;
[0208]
确定所述页表地址对应的分布模式以及偏移地址;
[0209]
根据所述页表地址、以及所述页表地址对应的分布模式和偏移地址在位图中进行匹配,得到片上内存的目标物理内存地址,其中,所述位图与多个所述片上内存的物理内存地址相对应。
[0210]
此外,上述的存储器1130中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0211]
另一方面,本发明实施例还提供一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的内存分配的方法或内存寻址的方法。
[0212]
其中,内存分配的方法包括:
[0213]
确定待分配的数据的分布模式;
[0214]
将所述待分配的数据分别按照对应的分布模式分配于所述片上内存的物理内存中,并建立所述物理内存地址对应的页表,其中,所述页表包括多个页表地址,且所述页表地址与所述物理内存地址相关联。
[0215]
其中,内存寻址的方法包括:
[0216]
确定要访问的片上内存的虚拟地址;
[0217]
根据预设的页表进行转换,将虚拟地址转换为页表中的页表地址;
[0218]
确定所述页表地址对应的分布模式以及偏移地址;
[0219]
根据所述页表地址、以及所述页表地址对应的分布模式和偏移地址在位图中进行匹配,得到片上内存的目标物理内存地址,其中,所述位图与多个所述片上内存的物理内存地址相对应。
[0220]
又一方面,本发明实施例还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各实施例提供的内存分配的方法或内存寻址的方法。
[0221]
其中,内存分配的方法包括:
[0222]
确定待分配的数据的分布模式;
[0223]
将所述待分配的数据分别按照对应的分布模式分配于所述片上内存的物理内存中,并建立所述物理内存地址对应的页表,其中,所述页表包括多个页表地址,且所述页表
地址与所述物理内存地址相关联。
[0224]
其中,内存寻址的方法包括:
[0225]
确定要访问的片上内存的虚拟地址;
[0226]
根据预设的页表进行转换,将虚拟地址转换为页表中的页表地址;
[0227]
确定所述页表地址对应的分布模式以及偏移地址;
[0228]
根据所述页表地址、以及所述页表地址对应的分布模式和偏移地址在位图中进行匹配,得到片上内存的目标物理内存地址,其中,所述位图与多个所述片上内存的物理内存地址相对应。
[0229]
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
[0230]
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
[0231]
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1