CN112783648A - 基于内存区域的内存分配方法和设备以及访问方法和设备 - Google Patents
基于内存区域的内存分配方法和设备以及访问方法和设备 Download PDFInfo
- Publication number
- CN112783648A CN112783648A CN202110059908.XA CN202110059908A CN112783648A CN 112783648 A CN112783648 A CN 112783648A CN 202110059908 A CN202110059908 A CN 202110059908A CN 112783648 A CN112783648 A CN 112783648A
- Authority
- CN
- China
- Prior art keywords
- memory
- region
- address
- type
- virtual
- 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
- 238000000034 method Methods 0.000 title claims abstract description 40
- 238000010586 diagram Methods 0.000 description 5
- 238000007726 management method Methods 0.000 description 5
- 101150102561 GPA1 gene Proteins 0.000 description 4
- 101000577224 Homo sapiens Neuropeptide S receptor Proteins 0.000 description 3
- 102100025258 Neuropeptide S receptor Human genes 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 230000004913 activation Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 2
- 238000013528 artificial neural network Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System (AREA)
Abstract
本发明提供了一种基于内存区域的内存分配方法和设备以及内存访问方法和设备。该内存分配方法包括:接收来自第一用户的内存分配请求,内存分配请求包括所需的内存单元的数量和内存区域类型,其中内存区域类型指示内存系统中的内存区域的宽度,内存区域的宽度以内存区域在宽度方向上跨越的内存块的数量来指示;基于内存分配表为内存分配请求分配与内存分配请求中的内存区域类型匹配的内存单元,其中内存分配表包括已使用内存表、空闲内存表和已指定内存表,已指定内存表指示已被指定了内存区域类型但尚未分配来存储数据的内存单元的列表;以及基于所分配的内存单元的虚拟内存地址和内存区域类型更新内存分配表。
Description
技术领域
本发明概括而言涉及分布式计算领域,更具体地,涉及一种基于内存区域的内存分配方法和设备以及基于内存区域的内存访问方法和设备。
背景技术
在许多需要快速执行大量运算的领域,已经广泛使用了多处理器系统。一种典型的多处理器系统包括处理器系统和内存系统,处理器系统可以包括多个处理器,内存系统可以包括多个内存块。多个处理器和多个内存块可以通过由互连设备和物理传输链路构成的互连网络连接在一起。多个处理器可以对各个内存块中的数据进行访问。
图1示出了一种多处理器系统1的示例性拓扑结构的简化示意图。如图1中所示,多处理器系统1包括4个处理器112、114、116和118,2个内存块132和134,它们通过具有4个互连设备122、124、126和128以及10条物理链路140至149的互连网络连接在一起。注意,图1所示的多处理器系统1仅仅是示例性简化的,实际应用的多处理器系统通常包含更多的处理器和内存块。
由于多个处理器和多个内存块的分布式性质,不同处理器访问不同内存块中的数据将导致互连网络上的数据流量不同。例如,如图1中所示,处理器114访问内存块132时数据需要通过3个互连设备和4条物理链路传输,而处理器118访问内存块134时数据仅需要通过1个互连设备和2条物理链路传输。因此,需要考虑如何平衡互连网络上的流量。例如,如果所有4个处理器112、114、116和118同时访问内存块132,则物理链路144的拥塞程度将大于物理链路145。
由于互连网络上的流量拥塞可能会严重影响系统性能,因此优化数据在内存系统的多个分布式内存块中的放置以最小化和平衡互连网络上的数据流量非常重要。当前存在着两种常见的内存管理方式。
一种常见的内存管理方式称为UMA(一致内存访问),其中诸如表格之类的数据结构均匀地分布在所有内存块中。例如,具有偶数内存地址的数据(每个地址代表固定数量的内存空间,例如32个字节)被放置在内存块132中,而具有奇数内存地址的数据被放置在内存块134中。对于具有由所有处理器共享并平均访问的大数据结构的应用程序,UMA方式有助于平衡互连网络上的流量,通常可以实现良好的系统性能。然而,对于仅由一个或几个处理器访问的数据结构,将这样的数据结构分布在所有内存块中比将其放置在靠近访问处理器的内存块中会产生更多的流量。
另一种常见的内存管理方式称为NUMA(非一致内存访问),其中,每个数据结构(例如表格)都放置在彼此靠近的单个或少数几个内存块中。对于具有只由一个或几个处理器访问的大数据结构的应用程序,如果将该数据结构放置在靠近访问它们的处理器的内存块中,则NUMA有助于减少互连网络上的流量。但是,对于由所有处理器都访问的数据结构,将其放置在一个或几个内存块中可能会在互连网络上引起更多且不平衡的流量。
对于许多应用程序而言,数据访问模式是混合但可预测的。一个例子是神经网络的数据并行处理,其中神经网络的权重参数由所有处理器平均共享和访问,而激活数据由每个单独的处理器生成和访问。因此,权重参数最好用UMA模式访问,而激活数据最好用NUMA模式访问。然而,目前还没有能够同时满足不同类型数据的访问需求的内存管理方法。
发明内容
针对上述问题,本发明提供了一种基于内存区域的内存分配和访问方法,其通过构建大小灵活的内存区域来满足不同类型数据的存储和访问需求。
根据本发明的一个方面,提供了一种基于内存区域的内存分配方法。该内存分配方法包括:接收来自第一用户的内存分配请求,内存分配请求包括所需的内存单元的数量和内存区域类型,其中内存区域类型指示内存系统中的内存区域的宽度,内存区域的宽度以内存区域在宽度方向上跨越的内存块的数量来指示;基于内存分配表为内存分配请求分配与内存分配请求中的内存区域类型匹配的内存单元,其中内存分配表包括已使用内存表、空闲内存表和已指定内存表,已指定内存表指示已被指定了内存区域类型但尚未分配来存储数据的内存单元的列表;以及基于所分配的内存单元的虚拟内存地址和内存区域类型更新内存分配表。
根据本发明的另一个方面,提供了一种基于内存区域的内存分配设备。该内存分配设备包括:基于区域的内存分配器,其被配置为接收来自第一用户的内存分配请求,所述内存分配请求包括所需的内存单元的数量和内存区域类型,其中所述内存区域类型指示内存系统中的内存区域的宽度,所述内存区域的宽度以所述内存区域在宽度方向上跨越的内存块的数量来指示;基于内存分配表为所述内存分配请求分配与所述内存分配请求中的内存区域类型匹配的内存单元,其中所述内存分配表包括已使用内存表、空闲内存表和已指定内存表,所述已指定内存表指示已被指定了内存区域类型但尚未分配来存储数据的内存单元的列表;以及基于所分配的内存单元的虚拟内存地址和内存区域类型更新所述内存分配表。
根据本发明的再一个方面,提供了一种基于内存区域的内存访问方法。该内存访问方法包括:接收来自第二用户对内存系统的内存访问请求,所述内存访问请求包括所访问的虚拟内存地址,所述虚拟内存地址对应于基于区域的全局物理地址;基于所述虚拟内存地址和内存分配表确定所访问的内存区域类型,其中所述内存区域类型指示内存系统中的内存区域的宽度,所述内存区域的宽度以所述内存区域在宽度方向上跨越的内存块的数量来指示,所述内存分配表包括所述内存系统中的每个内存单元的内存区域类型和虚拟内存地址;以及基于所述内存访问请求、所述虚拟内存地址和所述内存区域类型将所述虚拟内存地址转换为物理内存地址。
根据本发明的又一个方面,提供了一种基于内存区域的内存访问设备。该内存访问设备包括:基于区域的内存分配器、内存区域识别器和地址转换器,其中所述内存区域识别器被配置为接收来自第二用户对内存系统的内存访问请求,所述内存访问请求包括所访问的虚拟内存地址,所述虚拟内存地址对应于基于区域的全局物理地址(RGPA);以及基于所述虚拟内存地址和所述基于区域的内存分配器中的内存分配表确定所访问的内存区域类型,其中所述内存区域类型指示内存系统中的内存区域的宽度,所述内存区域的宽度以所述内存区域在宽度方向上跨越的内存块的数量来指示,所述内存分配表包括所述内存系统中的每个内存单元的内存区域类型和虚拟内存地址,其中所述地址转换器被配置为:基于所述内存访问请求、所述虚拟内存地址和所述内存区域类型将所述虚拟内存地址转换为物理内存地址。
利用本发明的方案,内存块的物理内存空间被划分为多个内存区域,从而不同的内存区域被配置为以不同的内存访问模式进行访问,这使得用户可以在不同内存区域中存储不同类型的数据结构,从而获得最佳的内存访问性能。
附图说明
通过参考下列附图所给出的本发明的具体实施方式的描述,将更好地理解本发明,并且本发明的其他目的、细节、特点和优点将变得更加显而易见。
图1示出了一种现有技术中的计算系统的示意图。
图2示出了根据本发明实施例的计算系统的示意图。
图3示出了根据本发明实施例的缓冲处理子模块中执行的数据访问过程的流程图。
图4示出了根据本发明实施例的从一个内存单元的GPA到RGPA的映射图。
图5示出了根据本发明实施例的从一个内存单元320的RGPA到GPA的映射图。
图6示出了根据本发明实施例的一种基于内存区域的内存分配方法的流程图。
图7示出了根据本发明实施例的基于内存分配表为内存分配请求分配与该内存分配请求中的内存区域类型匹配的内存单元的步骤的一种实施例的流程图。
图8示出了根据本发明实施例的一种基于内存区域的内存访问方法的流程图。
具体实施方式
下面将参照附图更详细地描述本发明的优选实施例。虽然附图中显示了本发明的优选实施例,然而应该理解,可以以各种形式实现本发明而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了使本发明更加透彻和完整,并且能够将本发明的范围完整地传达给本领域的技术人员。
在本文中使用的术语“包括”及其变形表示开放性包括,即“包括但不限于”。除非特别申明,术语“或”表示“和/或”。术语“基于”表示“至少部分地基于”。术语“一个实施例”和“一些实施例”表示“至少一个示例实施例”。术语“另一实施例”表示“至少一个另外的实施例”。术语“第一”、“第二”等等可以指代不同的或相同的对象。
图2示出了用于实现根据本发明的基于内存区域的内存分配和访问的设备20的结构框图。如图2中所示,设备20可以包括基于区域的内存分配器(Region-based MemoryAllocator,RMA)22、内存区域识别器(Memory Region Identifier,MRI)24和地址转换器(Address Converter,AC)26。这里,RMA 22、MRI 24和AC 26可以以各种方式实现在多处理器系统(如图1的多处理器系统1)中。例如,RMA22可以以软件形式实现于多处理器系统1的主处理器(Host CPU)中,MRI 24和AC 26可以以硬件形式实现于多处理器系统1的互连网络中。但是本领域技术人员可以理解,本发明并不局限于此,RMA22、MRI 24和AC 26可以分别以硬件、软件和固件中的任何形式实现,并且RMA 22、MRI 24和AC 26可以位于独立的设备20中,也可以分布在整个多处理器系统1的互连网络中,它们的实现方式和位置不会影响本发明的保护范围。
RMA 22被配置为针对用户的内存分配请求为该用户分配内存系统的内存空间。内存系统是指由多处理器系统1的所有内存块构成的完整内存空间。例如,在图1所示的实例中,内存块132和134构成了多处理器系统1的内存系统。在本发明中,特别引入了内存区域(Memory Region)的概念,使得RMA 22能够以内存区域为单元进行内存分配。以下将结合图3对根据本发明的实施例的内存系统,尤其是内存区域的分配进行更加详细的描述。
图3示出了根据本发明的实施例的内存系统300的结构示意图。如图3中所示,内存系统300包括多个内存块3100、3101、……310N-1(以下有时也统称为内存块310)。这里,N是内存系统300中包含的内存块310的数量,其是一个大于1的正整数。内存块310可以是如图1所示的多处理器系统1中的内存块132和134。
内存块310代表由物理内存模块实现的一定数量的内存空间。内存块310可以是一个基于物理内存模块的逻辑概念。一个物理内存模块可以实现多个内存块310,或者一个内存块310可以分布在多个物理内存模块上。本文中主要基于内存块310而非物理内存模块来对内存系统300进行描述。在本文中,所有内存块310的大小相同,即,具有相同数量的内存空间。每个内存块310可以使用一个在整个内存系统300中唯一的内存块标识符(Block_ID)标识。例如,在图3所示的实例中,内存块3100、3101、……310N-1可以分别使用内存块标识符Block_0、Block_1、……Block_N-1来标识。
每个内存块310可以包括多个相同大小(例如32字节)的内存单元320,因此内存块310的大小也可以表示为其所包含的内存单元320的数量。例如,在图3所示的实例中,假设每个内存块310包括M个内存单元320。因此,对于内存块3100,其所包含的内存单元320可以表示为内存单元32000、32001、……3200(M-1)。类似地,对于内存块3101,其所包含的内存单元320可以表示为内存单元32010、32011、……3201(M-1)。以此类推,对于内存块310N-1,其所包含的内存单元320可以表示为内存单元320(N-1)0、320(N-1)1、……320(N-1)(M-1)。
每个内存单元320可以由在其所位于的内存块310中唯一的块物理地址(BlockPhysical Address,BPA)标识。例如,内存块3100的内存单元32000、32001、……3200M-1的块物理地址可以分别标识为BPA_0、BPA_1、……、BPA_M-1。其中为方便起见,BPA_0、BPA_1、……、BPA_M-1可以依次递增。类似地,内存块3101的内存单元32010、32011、……3201M-1的块物理地址也可以分别标识为BPA_0、BPA_1、……、BPA_M-1。内存块310N-1的内存单元320(N-1)0、320(N-1)1、……320(N-1)(M-1)的块物理地址也可以分别标识为BPA_0、BPA_1、……、BPA_M-1。也就是说,BPA仅在每个内存块310中是唯一的,同一内存块310中的两个不同内存单元320必须具有不同的BPA,但是如果不同内存块310中的两个内存单元320位于同一行,则它们具有相同的BPA。
此外,每个内存单元320还可以由在整个内存系统300中唯一的全局物理地址(GPA)标识。GPA在整个内存系统300中沿着内存块310的方向(横向)递增,并在到达最后一个内存块310后回绕到第一个内存块310的下一个内存单元320。例如,假设图3所示的第一个内存块3100的第一个内存单元32000的GPA=0,则内存块3101、……310N-1的第一个内存单元32010、……320(N-1)0的GPA沿着内存块3100、3101、……310N-1方向依次递增,例如可以分别表示为GPA=1、……GPA=N-1。在到达最后一个内存块310N-1之后回绕到第一个内存块3100中的第二个内存单元32001继续递增,例如第一个内存块3100中的第二个内存单元32001的GPA可以表示为GPA=N。以这种方式分配的GPA通常由软件用来访问UMA内存。
在一种实例中,每个内存单元320的GPA可以通过如下公式(1)计算:
GPA=N*BPA+Block_ID, (1)
其中N表示内存系统300包含的内存块310的数量,Block_ID表示该内存单元320所位于的内存块310的内存块标识符,BPA表示该内存单元320在其所位于的内存块310中的BPA。
在上述内存块310和内存单元320的基础上,本发明提出了内存区域330的概念。更具体地,内存区域330是指在宽度方向(图3所示的水平方向)跨越连续的一个或多个内存块310并且在高度方向跨越一个或多个内存单元320的内存空间。如图3中所示,一个内存区域330可以跨越1至N个内存块310,根据内存区域330所跨越的内存块310的数量,内存区域330可分为不同的内存区域类型。例如,如图3中所示,跨域n个内存块310的内存区域330-n的内存区域类型可以称为Type_n,其中1≤n≤N。更特别地,仅跨域1个内存块310的内存区域330-1的内存区域类型可以称为Type_1,其类似于常规的NUMA内存分配方式,跨越所有N个内存块310的内存区域330-N的内存区域类型可以称为Type_N,其类似于常规的UMA内存分配方式。
在本文中,假设同一行(具有相同BPA)的所有内存区域330具有相同的内存区域类型(如Type_n)。也就是说,同一内存区域类型的内存区域330的起始BPA和结束BPA相同。例如,对于图3所示的第一个内存区域330-n,假设其垂直方向的内存单元320的起始BPA为BPA_n0,结束BPA为BPA_n1(其中0≤n1-n0≤M),则在第一个内存区域330-n之后的所有内存区域330-n,其纵向方向的内存单元320的起始BPA都为BPA_n0,结束BPA都为BPA_n1。注意,一个内存区域330-n跨越的n个内存块310可以是连续的,如图3所示,但也可以是非连续的。在非连续的情况下,地址转换的规则会更加复杂。本文主要关注于内存区域330-n跨越n个连续的内存块310的情况。
更进一步地,在一些实施例中,内存区域类型Type_n的设置使得N可被n整除。例如,在包含32个内存块310(N=32)的内存系统300中,n可以设置为2、4、8、16和32,这样能够使得所有内存块310的内存空间被充分利用。当然,本发明并不局限于此,n也可以设置为不能整除N。在这种情况下,可以将N/n的余数部分的剩余内存单元320保持不被分配,即浪费了该部分剩余内存单元320。或者,也可以根据N/n的余数将同一行的剩余内存单元320分配不同的内存区域类型Type_n'(n'≠n),即支持同一行的混合内存区域类型。
这样,每个内存块310的不同内存单元320可以属于不同的内存区域330,从而具有不同的内存区域类型。
可以看出,由于GPA在所有内存块310上水平递增,而一个内存区域330通常不能覆盖所有内存块310(除了内存区域330-N),因此一个内存区域330中的内存单元320的GPA通常是不连续的。为了使得用户能够“看到”连续的虚拟内存地址,本文中提出了基于区域的全局物理地址(Region-based Global Physical Address,RGPA)来作为存储单元320的虚拟内存地址。RGPA使得在内存分配和内存访问时,用户看到的存储单元320的虚拟内存地址是连续的。
对于内存系统300的任一行(具有相同BPA但是属于不同内存块310),对于该行的第一个内存区域330,将其第一个内存单元320(即,该内存区域330的左下角的内存单元320)的RGPA设置为等于该内存单元320的GPA。例如,如图3中所示,对于第一个内存区域330-n(跨越内存块3100至310n-1)的第一个内存单元320,假设其BPA为BPA_n0(如前所述),GPA为GPA_0_n0(其中GPA_0_n0中的“0”指示该内存区域330-n的第一个内存单元320位于第一个内存块3100中,“n0”指示该第一个内存单元320的BPA为BPA_n0),则该内存单元320(也可以表示为内存单元3200(n0))的RGPA可以表示为RGPA=GPA=GPA_0_n0。
在该第一个内存区域330-n中,在同一行的n个内存单元320(即具有相同BPA的n个内存单元320)中RGPA依次递增。例如,如图3中所示,假设第一个内存区域330-n的第一个内存单元320的RGPA为RGPA=GPA=GPA_0_n0,则同一行的第二至第n个内存单元320的RGPA分别为GPA_0_n0+1、……GPA_0_n0+(n-1)。
在到达第一个内存区域330-n的最后一个内存块310n-1后,环绕到该内存区域330-n的第一个内存块3100中的第二个内存单元320,其RGPA也随之从第一行的最后一个内存单元320递增到下一行的第一个内存单元320。例如,如上所述,假设第一个内存区域330-n的第一行的第一至第n个内存单元320的RGPA分别为GPA_0_n0、GPA_0_n0+1、……GPA_0_n0+(n-1),则该内存区域330-n的下一行(第二行)的第一至第n个内存单元320的RGPA分别为GPA_0_n0+n、GPA_0_n0+(n+1)、……GPA_0_n0+(2n-1)。
依次类推,假设第一个内存区域330-n的高度为k(即该内存区域330-n在每个内存块310中包含k个内存单元320,例如如上所述在该内存区域330-n的起始BPA为BPA_n0,结束BPA为BPA_n1的情况下,n1-n0=k-1),则该第一个内存区域330-n的最后一行的第一至第n个内存单元320的RGPA分别为GPA_0_n0+(k-1)*n、GPA_0_n0+(k-1)*(n+1)、……GPA_0_n0+(k-1)*(2n-1)。
也就是说,对于内存区域类型为Type_n的一个内存区域330-n来说,其所包含的内存单元320的RGPA在横向方向(或称为宽度方向)上依次递增1,在纵向方向(或称为高度方向)上依次递增n。
当到达第一个内存区域330-n的最后一个内存单元320之后,RGPA继续递增到该行的第二个内存区域330-n中的第一个内存单元320,然后以与第一个内存区域330-n相同的方式在第二个内存区域330-n中的所有内存单元320中递增。
依次类推,RGPA在所有内存区域330-n上递增,直到该行的最后一个内存区域330-n结束为止。这样,所有RGPA在每个内存区域330-n内都是连续递增的,并且在连续的内存区域330-n之间也是连续递增的,从而同一内存区域类型的所有内存单元320可以具有连续的RGPA内存地址空间。因此,可以使用RGPA作为虚拟内存地址对内存系统300的内存空间进行分配和访问。
在内存系统300中包含的内存块310的数量N与内存区域330-n跨越的内存块的数量n(即内存区域330-n的宽度)之间满足特定关系时,将GPA转换为RGPA可能具有更加简单的方式。具体地,当N和n都是2的幂时,可以通过比特交换(bit-swapping)的方式将一个内存单元320的GPA转换为其RGPA。
图4示出了根据本发明实施例的从一个内存单元320的GPA到RGPA的映射图。
假设N=2p,n=2q(p、q都是正整数,且p≥q),一个内存单元320的GPA的宽度为b个比特(表示为GPA[b-1:0]),如图4中所示,该内存单元320的RGPA可以表示为:
RGPA[b-1:0]={GPA[p-1:q],GPA[b-1:p],GPA[q-1:0]}。
也就是说,GPA长度为b比特的一个内存单元320的RGPA的高p-q位(即第b-1位到第b-(p-q)位)等于该内存单元320的GPA的第p-1位至第q位,该内存单元320的RGPA的中间b-p位(即第b-(p-q)-1位到第q位)等于该内存单元320的GPA的高b-q位(即第b-1位至第p位),该内存单元320的RGPA的低q位(即第q-1位到第0位)等于该内存单元320的GPA的第q-1位至第0位。
注意,图3中仅示例性地沿着内存块310的内存单元320的BPA递增的方向显示了内存区域330-N、……内存区域330-n……内存区域330-1,这些内存区域330的类型的分布并不局限于所示的顺序。
此外,在一些实施例中,可以静态或半静态分配各个内存区域330。例如,可以预先将整个内存系统300的内存空间划分为不同的内存区域类型,从而产生静态的各个内存区域330。例如,RMA 22可以将内存系统300的所有内存单元320分为多个内存段(section),并且为每个内存段中的内存单元320预先分配内存区域类型,并且内存段和内存区域类型可以根据内存分配需求重新调整。
在另一些实施例中,可以根据用户的内存分配请求动态分配各个内存区域330。例如,RMA 22可以使用基于页面的动态内存区域分配方案,同一页面中的所有内存单元320都具有相同的内存区域类型。在这种情况下,MRI 24仅需要记录每个页面的内存区域类型。
继续图2,用户可以通过软件程序向内存系统300发送内存分配请求,以请求内存系统300为其分配一定的内存空间来存储一个数据结构。用户可以指定适合该数据结构的内存区域类型Type_n。RMA 22可以根据该内存分配请求在内存系统300的内存块310中为该内存分配请求分配所需要的虚拟内存空间,并且记录分配的虚拟内存空间的虚拟内存地址(如上文所述的RGPA)和内存区域类型Type_n。这里,虚拟内存空间是在不考虑内存块310的实际位置和组织的情况下,软件对整个内存系统300的内存空间的视图。用户可以将该数据结构存储在所分配的虚拟内存空间中。
RMA 22中可以维护内存分配表以指示内存系统300的各个内存单元320的虚拟内存地址(如上文所述的RGPA)和对应的内存区域类型Type_n。通常,内存分配表可以包括已使用内存表和空闲内存表,其中已使用内存表指示内存系统300中已使用(例如已存储有数据)的内存单元320的列表,空闲内存表指示内存系统300中尚未分配的空闲内存单元320的列表。在本发明中,内存分配表还可以进一步包括一个已指定内存表,其中该已指定内存表用于指示已被指定了内存区域类型但尚未被分配来存储数据的内存单元320的列表。例如,如前文所述,在内存系统300的某一行的一部分(如内存块3100至310n-1的BPA为BPA_n0至BPA_n1的n*k个内存单元320,即第一个内存区域330-n)被分配了内存区域类型Type_n之后,该行的其余内存单元320(即内存块310n至310N的内存单元320)也应当被划分为具有相同内存区域类型Type_n的多个内存区域330-n,如图3中所示。在这种情况下,第一个内存区域330-n在存储了相应的数据结构之后可被记录在已使用内存表中,而其余内存单元320形成的内存区域330-n可被记录在已指定内存表中供后续内存分配时使用。
在初始状态时,整个内存系统300中的内存单元320都是空闲的,因此可以在空闲内存表中将所有内存单元320标记为初始的“未分配”区域类型。
在接收到用户的内存分配请求时,RMA 22可以根据该内存分配请求所需的内存单元320的数量和内存区域类型Type_n,查找内存分配表以向该用户分配请求数量的具有匹配的内存区域类型Type_n的内存单元320。该内存分配请求所需的内存单元320的数量可以直接表示为内存单元320的数量或者表示为所需存储的数据结构的大小。在后者的情况下,RMA 22可以根据所需存储的数据结构的大小和每个内存单元320的容量确定所需的内存单元320的数量。
取决于所分配的内存单元320是位于已指定内存表还是空闲内存表,RMA 22可以执行不同的操作来为该内存分配请求分配匹配的内存单元320。
具体地,RMA 22可以根据该内存分配请求所需的内存单元的数量和内存区域类型Type_n确定所需分配的内存区域330的高度。例如,假设该内存分配请求所需的内存单元320的数量为n*k,并且内存区域类型为Type_n,则RMA 22可以确定所需分配的内存区域330-n的高度为k(即n*k/n=k)。
在这种情况下,RMA 22可以首先查找已指定内存表,以确定已指定内存表中是否存在内存区域类型为Type_n,高度为k的内存区域330-n。如果已指定内存表中存在内存区域类型为Type_n,高度为k的内存区域330-n,则RMA 22可以将该内存区域330-n分配给该内存分配请求并更新已指定内存表和已使用内存表。即,将该分配的内存区域330-n从已指定内存表中删除并将所分配的内存区域330-n的虚拟内存地址(GPRA)和内存区域类型Type_n记录到已使用内存表中。发送内存分配请求的用户例如可以将所要存储的数据结构存储到所分配的内存区域330-n中。
另一方面,如果RMA 22在已指定内存表中未找到匹配的内存区域330-n,RMA 22可以继续在空闲内存表中查找是否存在足够的内存单元320(例如存在连续的宽度为n、高度为k的n*k个内存单元320)来建立该匹配的内存区域330-n。
如果确定空闲内存表中存在足够的内存单元320,则从这些内存单元320中分配所需数量的内存单元320(例如内存系统300中宽度为n,高度为k的n*k个内存单元320)。通常,可以从第一个内存块310-0开始分配,该n*k个内存单元320称为内存区域330-n(即该行的第一个内存区域330-n,如图3所示)。
在这种情况下,RMA 22可以将第一个内存区域330-n的虚拟内存地址GPRA和内存区域类型Type_n记录在已使用内存表中,并将该第一个内存区域330-n同一行(即具有相同起始BPA和相同结束BPA)的其他内存单元320划分为具有相同内存区域类型Type_n的一个或多个其他内存区域330-n,并将这些其他内存区域330-n的虚拟内存地址GPRA和内存区域类型Type_n记录在已指定内存表中。
所分配的内存区域330-n的内存单元320可以由多个页面组成,并且每个页面中的内存单元320的RGPA是连续的。因此可以使用现有的虚拟内存管理方案将RGPA映射为虚拟RGPA作为虚拟内存地址,以便用户看到连续范围的多个页面的虚拟内存地址。在本文中,不特别指明的情况下,RGPA和虚拟RGPA都可用来表示内存区域330的内存单元320的虚拟内存地址。
此外,当同一行中的所有内存单元320(即,所有内存块310中具有相同BPA的内存单元320)被释放时,将这些内存单元320的内存区域类型重置为“未分配”内存区域类型,并将其虚拟内存地址记录在空闲内存表中以供后续重新分配。
在RMA 22进行了上述内存分配之后,任何用户可以通过编写的软件程序来使用RMA 22分配的虚拟内存地址来访问相应的内存空间。通常,内存访问包含对内存的读操作和写操作。在本文中,以内存读操作为例对内存访问进行描述,即,读取特定内存区域330中存储的数据结构。内存写操作可以是与上述内存分配操作一起由同一用户执行的,也可以与上述内存分配操作独立地由另一用户执行。
在内存访问过程中,用户可以将包含虚拟内存地址的内存访问请求发送给MRI24,MRI 24可以基于该虚拟内存地址确定要访问的内存空间的内存区域类型(例如为Type_n)。
具体地,MRI 24中可以记录分配给用户的每个内存单元320的内存区域类型。
如果RMA 22使用了基于页面的动态区域分配方案,则同一页面中的所有内存单元320都具有相同的内存区域类型。MRI 24仅需要记录每个内存页面的内存区域类型。
如果RMA 22使用了基于内存段的静态区域分配方案,则同一内存段中的所有内存单元320都具有相同的内存区域类型。MRI 24仅需要记录每个内存段的内存区域类型。
MRI 24接收来自用户对内存系统300的内存访问请求,该内存访问请求中包含要访问的虚拟内存地址。MRI 24可以使用该内存访问请求中的虚拟内存地址(例如RGPA或虚拟RGPA)作为索引,从RMA 22的内存分配表中查找该虚拟内存地址的内存区域类型。
如果RMA 22使用了虚拟RGPA,则MRI 24可以使用常规虚拟页表来查找虚拟RGPA的对应RGPA。该虚拟页表中可以存储关于区域类型的信息,并可以通过针对RGPA的相同页表查找获得。
然后,MRI 24可以将内存访问请求、虚拟内存地址和内存区域类型一起发送到AC26以进行虚拟内存地址到物理内存地址的转换。
AC 26基于接收到的内存区域类型Type_n,将虚拟内存地址转换为物理内存地址。物理内存地址包含多处理器系统1中的内存块310的物理位置的信息,其可用于访问相应的内存位置中的数据。
更具体地,AC 26基于内存区域类型Type_n以及对应的内存区域330-n的第一个内存单元320的GPA,将虚拟内存地址RGPA转换为物理内存地址GPA,以便互连网络可以使用GPA将内存访问请求发送到其目标内存模块。AC 26将RGPA转换为GPA的过程是上述结合图3所述的确定RGPA的过程的逆过程。
例如,将内存区域330-n中的任一个内存单元320(记为内存单元M1)的RGPA(记为RGPA_1)转换为GPA(记为GPA_1)的一种方法如下所述。首先,将RMA 22执行内存分配时产生的内存区域330-n的第一个内存单元320(即该内存区域330的左下角的内存单元320,记为内存单元M0)的GPA和RGPA记为GPA_0和RGPA_0。
M0的BPA可以表示为:
BPA_0=int(GPA_0/N)
其中N是内存系统300包含的内存块310的数量,int()表示取整运算。
M0的内存块标识符(Block_ID)可以表示为:
Block_ID_0=GPA_0-BPA_0*N。
则,对于该内存区域330-n中的任何一个内存单元320(记为内存单元M1),该内存单元M1的BPA(BPA_1)可以计算为:
BPA_1=BPA_0+int((RGPA_1-RGPA_0)/n)。
该内存单元M1的内存块310的内存块标识符Block_ID_1可以计算为:
Block_ID_1=Block_ID_0+(RGPA_1-RGPA_0)-(BPA_1-BPA_0)*n。
最后,该内存单元M1的GPA(GPA_1)可以计算为:
GPA_1=BPA_1*N+Block_ID_1。
与上述类似地,在内存系统300中包含的内存块310的数量N与内存区域330-n跨越的内存块的数量n(即内存区域330-n的宽度)之间满足特定关系时,将RGPA转换为GPA可能具有更加简单的方式。具体地,当N和n都是2的幂时,可以通过比特交换(bit-swapping)的方式将一个内存单元320的RGPA转换为其GPA。
图5示出了根据本发明实施例的从一个内存单元320的RGPA到GPA的映射图。
假设N=2p,n=2q(p、q都是正整数,且p≥q),一个内存单元320的RGPA的宽度为b个比特(表示为RGPA[b-1:0]),如图5中所示,该内存单元320的GPA可以表示为:GPA[b-1:0]={RGPA[b-p-q-1:q],RGPA[b-1:b-p-q],RGPA[q-1:0]}。
也就是说,RGPA长度为b比特的一个内存单元320的GPA的高b-p位(即第b-1位到第b-(p)位)等于该内存单元320的RGPA的第b-p-q-1位至第q位,该内存单元320的RGPA的中间p-q位(即第p-1位到第q位)等于该内存单元320的RGPA的第b-1位至第b-p-q位,该内存单元320的GPA的低q位(即第q-1位到第0位)等于该内存单元320的RGPA的第q-1位至第0位。
图6示出了根据本发明实施例的一种基于内存区域的内存分配方法600的流程图。图6所示的方法600例如可以由图2所示的设备20来执行。
具体地,方法600可以包括步骤610,其中设备20(例如RMA 22)接收来自第一用户的内存分配请求。如前所述,该内存分配请求包括所需的内存单元320的数量和内存区域类型(如Type_n),其中内存区域类型Type_n指示内存系统300中的内存区域330的宽度,内存区域330的宽度以该内存区域330在宽度方向上跨越的内存块310的数量来指示。
在步骤620,设备20基于内存分配表为该内存分配请求分配与该内存分配请求中的内存区域类型Type_n匹配的内存单元320。如前所述,在本发明中,内存分配表除了包括已使用内存表和空闲内存表之外,还可以包括已指定内存表,该已指定内存表指示已被指定了内存区域类型但尚未分配来存储数据的内存单元320的列表。
在步骤630,设备20基于所分配的内存单元320的虚拟内存地址(如RGPA)和内存区域类型Type_n更新该内存分配表。
图7示出了根据本发明实施例的基于内存分配表为内存分配请求分配与该内存分配请求中的内存区域类型Type_n匹配的内存单元的步骤620的一种实施例的流程图。
如图7中所示,步骤620可以包括子步骤622,其中设备20基于该内存分配请求所需的内存单元320的数量和内存区域类型Type_n确定所需分配的内存区域330的高度k。内存区域330的高度k指示该内存区域330在高度方向上包含的内存单元320的数量。高度k的确定方式如前所述。
接下来,在子步骤624,设备20查找已指定内存表以确定已指定内存表中是否存在符合该内存区域类型Type_n和高度k的内存区域330。
如果确定已指定内存表中不存在符合内存区域类型Type_n和高度k的内存区域330(子步骤624的判断为“否”),在子步骤626,设备20查找空闲内存表以确定是否存在符合该内存区域类型Type_n和高度k的内存区域330。
如果确定已指定内存表中或者空闲内存表中存在符合内存区域类型Type_n和高度k的内存区域330(子步骤624的判断为“是”或者子步骤626的判断为“是”),在子步骤628,将查找到的内存区域330的内存单元320分配给该内存分配请求。
在从已指定内存表中查找到该内存区域330的情况下,步骤630可以包括从该已指定内存表中删除步骤620中从已指定内存表中找到的内存区域330的内存单元320,并且将这些内存单元320记录到已使用内存表中。
在从空闲内存表中查找到该内存区域330的情况下,步骤630包括:将查找到的内存区域330的虚拟内存地址和内存区域类型Type_n记录在已使用内存表中,并且将与该内存区域330具有相同起始BPA和相同结束BPA的其他内存单元320划分为具有相同内存区域类型Type_n的其他内存区域330,并将这些其他内存区域330的虚拟内存地址和内存区域类型Type_n记录在已指定内存表中。
图8示出了根据本发明实施例的一种基于内存区域的内存访问方法800的流程图。图8所示的方法800例如可以由图2所示的设备20来执行。
如图8中所示,在方法800的步骤810,设备20(例如MRI 24)接收来自第二用户对内存系统300的内存访问请求。该内存访问请求包括所访问的虚拟内存地址,该虚拟内存地址对应于基于区域的全局物理地址RGPA。
在步骤820,设备20(例如MRI 24)可以基于该虚拟内存地址和内存分配表(例如存储于RMA 22中的内存分配表)确定所访问的内存区域类型。这里,如前所述,内存区域类型指示内存系统300中的内存区域330的宽度,内存区域330的宽度以该内存区域330在宽度方向上跨越的内存块310的数量来指示,内存分配表包括内存系统300中的每个内存单元320的内存区域类型Type_n及其虚拟内存地址。
在步骤830,设备20(例如AC 26)可以基于该内存访问请求、该虚拟内存地址和该内存区域类型Type_n将该虚拟内存地址转换为物理内存地址。
使用本发明的基于内存区域的内存分配和访问方法,用户在使用不同的内存访问模式访问分布式计算系统中的不同类型的数据时具有完全的灵活性,并且可以获得现有UMA和NUMA两种内存访问模式的好处。
在一个或多个示例性设计中,可以用硬件、软件、固件或它们的任意组合来实现本发明所述的功能。例如,如果用软件来实现,则可以将所述功能作为一个或多个指令或代码存储在计算机可读介质上,或者作为计算机可读介质上的一个或多个指令或代码来传输。
本文公开的计算系统的各个组成部分可以使用分立硬件组件来实现,也可以集成地实现在一个硬件组件上。例如,可以用通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其它可编程逻辑器件、分立门或者晶体管逻辑、分立硬件组件或用于执行本文所述的功能的任意组合来实现或执行结合本发明所描述的各种示例性的逻辑块、模块和电路。
本领域普通技术人员还应当理解,结合本发明的实施例描述的各种示例性的逻辑块、模块、电路和算法步骤可以实现成电子硬件、计算机软件或二者的组合。
本发明的以上描述用于使本领域的任何普通技术人员能够实现或使用本发明。对于本领域普通技术人员来说,本发明的各种修改都是显而易见的,并且本文定义的一般性原理也可以在不脱离本发明的精神和保护范围的情况下应用于其它变形。因此,本发明并不限于本文所述的实例和设计,而是与本文公开的原理和新颖性特性的最广范围相一致。
Claims (14)
1.一种基于内存区域的内存分配方法,包括:
接收来自第一用户的内存分配请求,所述内存分配请求包括所需的内存单元的数量和内存区域类型,其中所述内存区域类型指示内存系统中的内存区域的宽度,所述内存区域的宽度以所述内存区域在宽度方向上跨越的内存块的数量来指示;
基于内存分配表为所述内存分配请求分配与所述内存分配请求中的内存区域类型匹配的内存单元,其中所述内存分配表包括已使用内存表、空闲内存表和已指定内存表,所述已指定内存表指示已被指定了内存区域类型但尚未分配来存储数据的内存单元的列表;以及
基于所分配的内存单元的虚拟内存地址和内存区域类型更新所述内存分配表。
2.如权利要求1所述的方法,其中所述内存系统包括多个内存块,每个内存块分别包括数量相同的多个内存单元,每个内存块由在所述内存系统中唯一的内存块标识符标识,
每个内存单元分别由仅在所述内存单元所位于的内存块中唯一的块物理地址和在所述内存系统中唯一的全局物理地址来标识,并且全局物理地址随着内存块标识符而递增,并且其中
具有相同的起始块物理地址和结束块物理地址的每个内存区域具有相同内存区域类型。
3.如权利要求1所述的方法,其中基于内存分配表为所述内存分配请求分配与所述内存分配请求中的内存区域类型匹配的内存单元包括:
基于所述内存分配请求所需的内存单元的数量和内存区域类型确定所需分配的内存区域的高度,所述内存区域的高度指示所述内存区域在高度方向上包含的内存单元的数量;
查找所述已指定内存表以确定所述已指定内存表中是否存在符合所述内存区域类型和所述高度的内存区域;以及
如果确定所述已指定内存表中不存在符合所述内存区域类型和所述高度的内存区域,查找所述空闲内存表以确定是否存在符合所述内存区域类型和所述高度的内存区域。
4.如权利要求3所述的方法,还包括:
如果确定所述已指定内存表中存在符合所述内存区域类型和所述高度的内存区域,将所述内存区域的内存单元分配给所述内存分配请求。
5.如权利要求4所述的方法,其中基于所分配的内存单元的虚拟内存地址和内存区域类型更新所述内存分配表包括:
从所述已指定内存表中删除所述内存区域的内存单元,以及
将所述内存区域的内存单元记录到所述已使用内存表中。
6.如权利要求3所述的方法,还包括:
如果确定所述空闲内存表中存在符合所述内存区域类型和所述高度的内存区域,将所述内存区域的内存单元分配给所述内存分配请求。
7.如权利要求6所述的方法,其中基于所分配的内存单元的虚拟内存地址和内存区域类型更新所述内存分配表包括:
将所述内存区域的虚拟内存地址和内存区域类型记录在所述已使用内存表中;以及
将与所述内存区域具有相同起始块物理地址和相同结束块物理地址的其他内存单元划分为具有相同内存区域类型的其他内存区域,并将所述其他内存区域的虚拟内存地址和所述内存区域类型记录在所述已指定内存表中。
8.如权利要求1所述的方法,其中所述虚拟内存地址包括基于区域的全局物理地址,并且所述基于区域的全局物理地址在一个内存区域的内存单元之间连续递增,并且在相同内存区域类型的连续的内存区域的内存单元之间连续递增。
9.如权利要求8所示的方法,其中如果所述内存系统中包含的内存块的数量和所述内存区域的宽度都是2的幂时,利用比特交换方式基于一个内存单元的全局物理地址确定所述内存单元的基于区域的全局物理地址:
RGPA[b-1:0]={GPA[p-1:q],GPA[b-1:p],GPA[q-1:0]},
其中所述内存系统中包含的内存块的数量为N=2p,所述内存区域的宽度为n=2q,p、q都是正整数且p≥q,b指示所述内存单元的全局物理地址的宽度,RGPA[b-1:0]指示所述内存单元的基于区域的全局物理地址的第b-1位至第0位,GPA[p-1:q]指示所述内存单元的基于区域的全局物理地址的第p-1位至第q位,GPA[b-1:p]指示所述内存单元的全局物理地址的第b-1位至第p位,GPA[q-1:0]指示所述内存单元的全局物理地址的第q-1位至第0位。
10.一种基于内存区域的内存分配设备,包括:
基于区域的内存分配器,其被配置为
接收来自第一用户的内存分配请求,所述内存分配请求包括所需的内存单元的数量和内存区域类型,其中所述内存区域类型指示内存系统中的内存区域的宽度,所述内存区域的宽度以所述内存区域在宽度方向上跨越的内存块的数量来指示;
基于内存分配表为所述内存分配请求分配与所述内存分配请求中的内存区域类型匹配的内存单元,其中所述内存分配表包括已使用内存表、空闲内存表和已指定内存表,所述已指定内存表指示已被指定了内存区域类型但尚未分配来存储数据的内存单元的列表;以及
基于所分配的内存单元的虚拟内存地址和内存区域类型更新所述内存分配表。
11.一种基于内存区域的内存访问方法,包括:
接收来自第二用户对内存系统的内存访问请求,所述内存访问请求包括所访问的虚拟内存地址,所述虚拟内存地址对应于基于区域的全局物理地址;
基于所述虚拟内存地址和内存分配表确定所访问的内存区域类型,其中所述内存区域类型指示内存系统中的内存区域的宽度,所述内存区域的宽度以所述内存区域在宽度方向上跨越的内存块的数量来指示,所述内存分配表包括所述内存系统中的每个内存单元的内存区域类型和虚拟内存地址;以及
基于所述内存访问请求、所述虚拟内存地址和所述内存区域类型将所述虚拟内存地址转换为物理内存地址。
12.如权利要求11所述的方法,其中
所述内存系统包括多个内存块,每个内存块分别包括数量相同的多个内存单元,每个内存块由在所述内存系统中唯一的内存块标识符标识,
每个内存单元分别由仅在所述内存单元所位于的内存块中唯一的块物理地址和在所述内存系统中唯一的全局物理地址来标识,并且全局物理地址随着内存块标识符而递增,并且其中
具有相同内存区域类型的每个内存区域具有相同的起始块物理地址和结束块物理地址。
13.如权利要求12所述的方法,其中如果所述内存系统中包含的内存块的数量和所述内存区域的宽度都是2的幂时,利用比特交换方式基于一个内存单元的基于区域的全局物理地址确定所述内存单元的全局物理地址:
GPA[b-1:0]={RGPA[b-p-q-1:q],RGPA[b-1:b-p-q],RGPA[q-1:0]},
其中所述内存系统中包含的内存块的数量为N=2p,所述内存区域的宽度为n=2q,p、q都是正整数且p≥q,b指示所述内存单元的基于区域的全局物理地址的宽度,GPA[b-1:0]指示所述内存单元的全局物理地址的第b-1位至第0位,RGPA[b-p-q-1:q]指示所述内存单元的基于区域的全局物理地址的第b-p-q-1位至第q位,RGPA[b-1:b-p-q]指示所述内存单元的基于区域的全局物理地址的第b-1位至第b-p-q位,RGPA[q-1:0]指示所述内存单元的基于区域的全局物理地址的第q-1位至第0位。
14.一种基于内存区域的内存访问设备,包括:
基于区域的内存分配器、内存区域识别器和地址转换器,
其中所述内存区域识别器被配置为
接收来自第二用户对内存系统的内存访问请求,所述内存访问请求包括所访问的虚拟内存地址,所述虚拟内存地址对应于基于区域的全局物理地址;以及
基于所述虚拟内存地址和所述基于区域的内存分配器中的内存分配表确定所访问的内存区域类型,其中所述内存区域类型指示内存系统中的内存区域的宽度,所述内存区域的宽度以所述内存区域在宽度方向上跨越的内存块的数量来指示,所述内存分配表包括所述内存系统中的每个内存单元的内存区域类型和虚拟内存地址,
其中所述地址转换器被配置为:
基于所述内存访问请求、所述虚拟内存地址和所述内存区域类型将所述虚拟内存地址转换为物理内存地址。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110059908.XA CN112783648B (zh) | 2021-01-18 | 2021-01-18 | 基于内存区域的内存分配方法和设备以及访问方法和设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110059908.XA CN112783648B (zh) | 2021-01-18 | 2021-01-18 | 基于内存区域的内存分配方法和设备以及访问方法和设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112783648A true CN112783648A (zh) | 2021-05-11 |
CN112783648B CN112783648B (zh) | 2023-03-14 |
Family
ID=75756270
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110059908.XA Active CN112783648B (zh) | 2021-01-18 | 2021-01-18 | 基于内存区域的内存分配方法和设备以及访问方法和设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112783648B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116185910A (zh) * | 2023-04-25 | 2023-05-30 | 北京壁仞科技开发有限公司 | 访问设备内存、管理设备内存的方法、设备和介质 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2010023356A1 (en) * | 2008-08-26 | 2010-03-04 | Nokia Corporation | Method, apparatus and software product for distributed address-channel calculator for multi-channel memory |
CN104182356A (zh) * | 2014-09-19 | 2014-12-03 | 深圳市茁壮网络股份有限公司 | 一种内存管理方法、装置及终端设备 |
CN106445835A (zh) * | 2015-08-10 | 2017-02-22 | 北京忆恒创源科技有限公司 | 内存分配方法与装置 |
CN107301190A (zh) * | 2016-04-15 | 2017-10-27 | 中国移动通信集团湖北有限公司 | 一种控制数据访问的方法及装置 |
CN107818054A (zh) * | 2016-09-12 | 2018-03-20 | 联发科技股份有限公司 | 分配连续物理内存空间到设备的方法及系统 |
CN109308269A (zh) * | 2017-07-26 | 2019-02-05 | 华为技术有限公司 | 一种内存管理方法及装置 |
CN110928737A (zh) * | 2018-09-19 | 2020-03-27 | 华为技术有限公司 | 监控样本进程的内存访问行为的方法和装置 |
CN111367671A (zh) * | 2020-03-03 | 2020-07-03 | 深信服科技股份有限公司 | 一种内存分配方法、装置、设备及可读存储介质 |
CN111984425A (zh) * | 2020-09-30 | 2020-11-24 | 杭州未名信科科技有限公司 | 用于操作系统的内存管理方法、装置及设备 |
CN112073321A (zh) * | 2020-11-16 | 2020-12-11 | 北京壁仞科技开发有限公司 | 信息处理方法、互连设备和计算机可读存储介质 |
-
2021
- 2021-01-18 CN CN202110059908.XA patent/CN112783648B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2010023356A1 (en) * | 2008-08-26 | 2010-03-04 | Nokia Corporation | Method, apparatus and software product for distributed address-channel calculator for multi-channel memory |
CN104182356A (zh) * | 2014-09-19 | 2014-12-03 | 深圳市茁壮网络股份有限公司 | 一种内存管理方法、装置及终端设备 |
CN106445835A (zh) * | 2015-08-10 | 2017-02-22 | 北京忆恒创源科技有限公司 | 内存分配方法与装置 |
CN107301190A (zh) * | 2016-04-15 | 2017-10-27 | 中国移动通信集团湖北有限公司 | 一种控制数据访问的方法及装置 |
CN107818054A (zh) * | 2016-09-12 | 2018-03-20 | 联发科技股份有限公司 | 分配连续物理内存空间到设备的方法及系统 |
CN109308269A (zh) * | 2017-07-26 | 2019-02-05 | 华为技术有限公司 | 一种内存管理方法及装置 |
CN110928737A (zh) * | 2018-09-19 | 2020-03-27 | 华为技术有限公司 | 监控样本进程的内存访问行为的方法和装置 |
CN111367671A (zh) * | 2020-03-03 | 2020-07-03 | 深信服科技股份有限公司 | 一种内存分配方法、装置、设备及可读存储介质 |
CN111984425A (zh) * | 2020-09-30 | 2020-11-24 | 杭州未名信科科技有限公司 | 用于操作系统的内存管理方法、装置及设备 |
CN112073321A (zh) * | 2020-11-16 | 2020-12-11 | 北京壁仞科技开发有限公司 | 信息处理方法、互连设备和计算机可读存储介质 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116185910A (zh) * | 2023-04-25 | 2023-05-30 | 北京壁仞科技开发有限公司 | 访问设备内存、管理设备内存的方法、设备和介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112783648B (zh) | 2023-03-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US12066931B2 (en) | Memory system and method for controlling nonvolatile memory | |
US11669444B2 (en) | Computing system and method for controlling storage device | |
US11513683B2 (en) | Namespace re-sizing | |
US12038834B2 (en) | Memory system and method for controlling nonvolatile memory during command processing without replacing defective blocks | |
US11093137B2 (en) | Memory system and method for controlling nonvolatile memory | |
CN109726139B (zh) | 存储器系统及控制方法 | |
US11797436B2 (en) | Memory system and method for controlling nonvolatile memory | |
US20080189490A1 (en) | Memory mapping | |
AU2004210521B2 (en) | Memory interleave system | |
JP2023000085A (ja) | メモリシステム及び情報処理システム | |
CN112783648B (zh) | 基于内存区域的内存分配方法和设备以及访问方法和设备 | |
US10884948B2 (en) | Replacing pointers with hashing in tree-based page table designs | |
WO2019104978A1 (zh) | 高速缓存cache地址映射方法以及相关设备 | |
US20240362162A1 (en) | Memory system and method for controlling nonvolatile memory | |
JP7204020B2 (ja) | 制御方法 | |
CN117971726A (zh) | 动态粒度分配策略的内存映射方法、装置和电子设备 | |
CN108139967B (zh) | 将数据流转换为阵列 | |
JP2023021450A (ja) | メモリシステム | |
JP2016091534A (ja) | メモリシステム及びプログラム |
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 | ||
CP03 | Change of name, title or address | ||
CP03 | Change of name, title or address |
Address after: 201114 room 1302, 13 / F, building 16, 2388 Chenhang Road, Minhang District, Shanghai Patentee after: Shanghai Bi Ren Technology Co.,Ltd. Country or region after: China Address before: 201114 room 1302, 13 / F, building 16, 2388 Chenhang Road, Minhang District, Shanghai Patentee before: Shanghai Bilin Intelligent Technology Co.,Ltd. Country or region before: China |