CN118467410A - 一种共享虚拟内存管理方法及装置 - Google Patents
一种共享虚拟内存管理方法及装置 Download PDFInfo
- Publication number
- CN118467410A CN118467410A CN202310129017.6A CN202310129017A CN118467410A CN 118467410 A CN118467410 A CN 118467410A CN 202310129017 A CN202310129017 A CN 202310129017A CN 118467410 A CN118467410 A CN 118467410A
- Authority
- CN
- China
- Prior art keywords
- virtual address
- page table
- processing unit
- address
- memory
- 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.)
- Pending
Links
- 230000015654 memory Effects 0.000 title claims abstract description 450
- 238000007726 management method Methods 0.000 title abstract description 116
- 238000012545 processing Methods 0.000 claims abstract description 261
- 238000013507 mapping Methods 0.000 claims abstract description 40
- 238000000034 method Methods 0.000 claims description 73
- 238000004590 computer program Methods 0.000 claims description 10
- 238000000638 solvent extraction Methods 0.000 claims description 4
- 230000008569 process Effects 0.000 description 25
- 238000010586 diagram Methods 0.000 description 13
- 230000006870 function Effects 0.000 description 8
- 238000005192 partition Methods 0.000 description 6
- 238000013473 artificial intelligence Methods 0.000 description 5
- 230000004044 response Effects 0.000 description 4
- 238000013519 translation Methods 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 230000003190 augmentative effect Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 239000003795 chemical substances by application Substances 0.000 description 1
- 230000001427 coherent effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 235000019800 disodium phosphate Nutrition 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000008570 general process Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000001537 neural effect Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012549 training Methods 0.000 description 1
Classifications
-
- 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
-
- 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
-
- 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]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
一种共享虚拟内存管理方法,应用于系统的设备端,系统包含服务端和至少一个设备端,服务端和设备端各自包含处理单元和内存单元,包括:根据应用程序发送的共享虚拟地址划分信息建立页表单元;共享虚拟地址划分信息包括为每个处理单元分别设置的共享虚拟地址空间的信息,共享虚拟地址空间中的虚拟地址用于每个处理单元在对应的内存单元申请物理空间;执行应用程序发送的任务,获得内存访问指令;根据内存访问指令中包括的虚拟地址查找页表单元,得到物理地址并访问对应的内存单元。由此,通过为每个处理单元设置共享虚拟地址空间,使设备端可以通过虚拟地址映射物理地址的方式访问系统的内存单元,提高了内存访问效率。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种共享虚拟内存管理方法及装置。
背景技术
在一个典型的系统,比如计算系统中,通常存在不止一个计算单元。比如,可以由通用中央处理器(centraI processing unit,CPU)和专用芯片上的加速器在一个计算系统内实施,将应用程序中的一部分计算任务由通用CPU转到加速器,以提高计算系统的计算能力。在以上的计算系统中,专用芯片上的加速器在执行计算任务的时候,除了访问本芯片的内存,也需要访问其他专用芯片的内存或通用CPU使用的的内存,因此,需要提供高效的内存访问方法。
发明内容
本申请提供了一种共享虚拟内存管理方法、装置、电子设备、计算机可读存储介质及计算机程序产品,在计算系统中,能使专用芯片上的加速器高效的访问本芯片的内存、其他专用芯片的内存或通用CPU使用的内存,提高系统的内存访问效率。
第一方面,本申请提供一种共享虚拟内存管理方法,应用于系统的设备端,系统包含服务端和至少一个设备端,服务端和设备端各自包含处理单元和内存单元,方法包括:根据应用程序发送的共享虚拟地址划分信息建立页表单元;共享虚拟地址划分信息包括为每个处理单元分别设置的共享虚拟地址空间的信息,共享虚拟地址空间中的虚拟地址用于每个处理单元在对应的内存单元申请物理空间;页表单元包含共享虚拟地址和物理空间的物理地址的映射关系;执行应用程序发送的任务,获得第一内存访问指令;第一内存访问指令包括第一虚拟地址,第一虚拟地址是共享虚拟地址空间中的虚拟地址;根据第一虚拟地址查找页表单元,得到第一物理地址,并对第一物理地址表示的内存单元的物理空间进行访问。
由此,通过为每个处理单元分别设置共享虚拟地址空间,以及为应用程序设置页表单元,使设备端可以通过共享虚拟地址空间中的虚拟地址在页表单元中查询映射的物理地址,并能根据共享虚拟地址划分信息确定虚拟地址对应的处理单元,对虚拟地址映射的物理地址进行区分,从而使设备端可以通过虚拟地址映射物理地址的方式访问系统的内存单元,提高了内存访问效率。
在一种可能的实现方式中,系统包含第一设备端;根据应用程序发送的共享虚拟地址划分信息建立页表单元,包括:为第一设备端的处理单元设置第一页表,其中,第一设备端包含第一处理单元,第一页表存储第一处理单元的共享虚拟地址空间中的虚拟地址和第一对应的物理地址的映射关系,第一对应的物理地址是第一处理单元对应的内存单元的物理空间的物理地址;为服务端和/或第二设备端的处理单元设置第二页表,其中,系统还包含第二设备端,第二页表存储服务端和/或第二设备端的处理单元的共享虚拟地址空间中的虚拟地址和第二对应的物理地址的映射关系,第二对应的物理地址是服务端和/或第二设备端对应的内存单元的物理空间的物理地址;页表单元包含第一页表和第二页表。
在一种可能的实现方式中,根据第一虚拟地址查找页表单元,包括:根据共享虚拟地址划分信息确定第一虚拟地址对应的处理单元;第一虚拟地址是对应的处理单元的共享虚拟地址空间中的虚拟地址;根据对应的处理单元确定页表单元的页表,其中,页表为第一页表或第二页表;根据第一虚拟地址在页表中进行查找。
在一种可能的实现方式中,根据应用程序发送的共享虚拟地址划分信息建立页表单元之后,还包括:接收应用程序发送的内存同步信息,其中,内存同步信息至少包括第一虚拟地址和第一物理地址,第一虚拟地址和第一物理地址在内存单元具有映射关系;根据第一虚拟地址和第一物理地址更新页表单元。
在一种可能的实现方式中,根据第一虚拟地址和第一物理地址更新页表单元,包括:根据共享虚拟地址划分信息确定第一虚拟地址对应的处理单元;第一虚拟地址是对应的处理单元的共享虚拟地址空间中的虚拟地址;根据对应的处理单元确定页表单元的页表,其中,页表为第一页表或第二页表;根据第一虚拟地址和第一物理地址更新页表的第一页表项,其中,第一页表项包含第一虚拟地址和第一物理地址的映射关系。
在一种可能的实现方式中,对第一物理地址表示的内存单元的物理空间进行访问之前,还包括:根据共享虚拟地址划分信息确定第一虚拟地址对应的处理单元;第一虚拟地址是对应的处理单元的共享虚拟地址空间中的虚拟地址;在第一虚拟地址对应的处理单元是第一设备端的处理单元时,将第一内存访问指令中的第一虚拟地址更改为第一物理地址,生成第二内存访问指令;根据第一物理地址在第一设备端路由第二内存访问指令。
在一种可能的实现方式中,对第一物理地址表示的内存单元的物理空间进行访问之前,还包括:根据共享虚拟地址划分信息确定第一虚拟地址对应的处理单元;第一虚拟地址是对应的处理单元的共享虚拟地址空间中的虚拟地址;在第一虚拟地址对应的处理单元是是服务端和/或第二设备端的处理单元时,将第一内存访问指令中的第一虚拟地址更改为第一物理地址,并在第一内存访问指令中添加第一标记,生成第二内存访问指令;其中,服务端的处理单元和设备端的处理单元各自具有标记,第一标记是第一虚拟地址对应的处理单元的标记。
在一种可能的实现方式中,其中,处理单元通过总线互联;对第一物理地址表示的内存单元的物理空间进行访问之前,还包括:根据第一标记将第二内存访问指令发送到总线的端口;处理单元与总线的端口建有连接;按照第一标记路由第二内存访问指令。
在一种可能的实现方式中,其中,按照第一标记路由第二内存访问指令之前,还包括:在第二内存访问指令中添加第一设备端的处理单元的标记。
第二方面,本申请提供一种共享虚拟内存管理装置,部署于系统的设备端,系统包含服务端和至少一个设备端,服务端和设备端各自包含处理单元和内存单元,装置包括:处理模块,用于根据应用程序发送的共享虚拟地址划分信息建立页表单元;共享虚拟地址划分信息包括为每个处理单元分别设置的共享虚拟地址空间的信息,共享虚拟地址空间中的虚拟地址用于每个处理单元在对应的内存单元申请物理空间;页表单元包含共享虚拟地址和物理空间的物理地址的映射关系;处理模块,还用于执行应用程序发送的任务,获得第一内存访问指令;第一内存访问指令包括第一虚拟地址,第一虚拟地址是共享虚拟地址空间中的虚拟地址;根据第一虚拟地址查找页表单元,得到第一物理地址,并对第一物理地址表示的内存单元的物理空间进行访问。
在一种可能的实现方式中,其中,系统包含第一设备端;处理模块根据应用程序发送的共享虚拟地址划分信息建立页表单元时,用于:为第一设备端的处理单元设置第一页表,其中,第一设备端包含第一处理单元,第一页表存储第一处理单元的共享虚拟地址空间中的虚拟地址和第一对应的物理地址的映射关系,第一对应的物理地址是第一处理单元对应的内存单元的物理空间的物理地址;为服务端和/或第二设备端的处理单元设置第二页表,其中,系统还包含第二设备端,第二页表存储服务端和/或第二设备端的处理单元的共享虚拟地址空间中的虚拟地址和第二对应的物理地址的映射关系,第二对应的物理地址是服务端和/或第二设备端对应的内存单元的物理空间的物理地址;页表单元包含第一页表和第二页表。
在一种可能的实现方式中,处理模块根据第一虚拟地址查找页表单元时,用于:根据共享虚拟地址划分信息确定第一虚拟地址对应的处理单元;第一虚拟地址是对应的处理单元的共享虚拟地址空间中的虚拟地址;根据对应的处理单元确定页表单元的页表,其中,页表为第一页表或第二页表;根据第一虚拟地址在页表中进行查找。
在一种可能的实现方式中,处理模块根据应用程序发送的共享虚拟地址划分信息建立页表单元之后,还用于:接收应用程序发送的内存同步信息,其中,内存同步信息至少包括第一虚拟地址和第一物理地址,第一虚拟地址和第一物理地址在内存单元具有映射关系;根据第一虚拟地址和第一物理地址更新页表单元。
在一种可能的实现方式中,处理模块根据第一虚拟地址和第一物理地址更新页表单元时,用于:根据共享虚拟地址划分信息确定第一虚拟地址对应的处理单元;第一虚拟地址是对应的处理单元的共享虚拟地址空间中的虚拟地址;根据对应的处理单元确定页表单元的页表,其中,页表为第一页表或第二页表;根据第一虚拟地址和第一物理地址更新页表的第一页表项,其中,第一页表项包含第一虚拟地址和第一物理地址的映射关系。
在一种可能的实现方式中,处理模块对第一物理地址表示的内存单元的物理空间进行访问之前,还用于:根据共享虚拟地址划分信息确定第一虚拟地址对应的处理单元;第一虚拟地址是对应的处理单元的共享虚拟地址空间中的虚拟地址;在第一虚拟地址对应的处理单元是第一设备端的处理单元时,将第一内存访问指令中的第一虚拟地址更改为第一物理地址,生成第二内存访问指令;根据第一物理地址在第一设备端路由第二内存访问指令。
在一种可能的实现方式中,处理模块对第一物理地址表示的内存单元的物理空间进行访问之前,还用于:根据共享虚拟地址划分信息确定第一虚拟地址对应的处理单元;第一虚拟地址是对应的处理单元的共享虚拟地址空间中的虚拟地址;在第一虚拟地址对应的处理单元是是服务端和/或第二设备端的处理单元时,将第一内存访问指令中的第一虚拟地址更改为第一物理地址,并在第一内存访问指令中添加第一标记,生成第二内存访问指令;其中,服务端的处理单元和设备端的处理单元各自具有标记,第一标记是第一虚拟地址对应的处理单元的标记。
在一种可能的实现方式中,其中,处理单元通过总线互联;处理模块对第一物理地址表示的内存单元的物理空间进行访问之前,还用于:根据第一标记将第二内存访问指令发送到总线的端口;处理单元与总线的端口建有连接;按照第一标记路由第二内存访问指令第二内存访问指令。
在一种可能的实现方式中,其中,处理模块按照第一标记路由第二内存访问指令之前,还用于:在第二内存访问指令中添加第一设备端的处理单元的标记。
第三方面,本申请提供一种电子设备,包括:至少一个存储器,用于存储程序;至少一个处理器,用于执行存储器存储的程序;其中,当存储器存储的程序被执行时,处理器用于执行第一方面或第一方面的任一种可能的实现方式所描述的方法。
第四方面,本申请提供一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,当计算机程序在处理器上运行时,使得处理器执行第一方面或第一方面的任一种可能的实现方式所描述的方法。
第五方面,本申请提供一种计算机程序产品,当计算机程序产品在处理器上运行时,使得处理器执行第一方面或第一方面的任一种可能的实现方式所描述的方法。
可以理解的是,上述第二方面至第五方面的有益效果可以参见上述第一方面中的相关描述,在此不再赘述。
附图说明
图1是一种计算系统的框架图;
图2是本申请实施例提供的一种计算系统的框架图;
图3是本申请实施例提供的一种共享虚拟内存管理方法流程图;
图4是本申请实施例提供的一种共享虚拟内存初始化流程图;
图5是本申请实施例提供的一种虚拟地址空间划分示意图;
图6是本申请实施例提供的一种页表单元中页表间的索引关联关系图;
图7(a)是本申请实施例提供的一种内存申请和页表单元同步流程图;
图7(b)是本申请实施例提供的一种内存申请和页表单元同步流程图;
图7(c)是本申请实施例提供的一种内存申请和页表单元同步流程图;
图8是本申请实施例提供的一种共享虚拟内存访问流程图;
图9是本申请实施例提供的一种计算系统的框架图;
图10是本申请实施例提供的处理单元的ID值和共享虚拟地址范围的对应关系图;
图11是本申请实施例提供的互联总线报文消息的结构图;
图12是本申请实施例提供的一种共享虚拟内存管理装置的框架图。
具体实施方式
本文中术语“和/或”,是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。本文中符号“/”表示关联对象是或者的关系,例如A/B表示A或者B。
本文中的说明书和权利要求书中的术语“第一”和“第二”等是用于区别不同的对象,而不是用于描述对象的特定顺序。例如,第一响应消息和第二响应消息等是用于区别不同的响应消息,而不是用于描述响应消息的特定顺序。
在本申请实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
在本申请实施例的描述中,除非另有说明,“多个”的含义是指两个或者两个以上,例如,多个处理单元是指两个或者两个以上的处理单元等;多个元件是指两个或者两个以上的元件等。
随着计算机技术的发展,人工智能(artificial intelligence,AI)等领域的应用越来越广泛。这些领域依赖大量的计算能力,而普通计算平台的通用CPU芯片已经达到摩尔定律的极限,难以提供更高的计算能力。因此,在一个典型系统,比如计算系统中,通常存在不止一个计算单元。比如,可以由通用CPU和AI芯片的加速器在一个计算系统内实施,将应用程序中的一部分计算任务由CPU转到AI芯片的加速器上,以支持人工智能应用的计算需求。
图1示出了一种计算系统的框架图。如图1所示,计算系统100包含服务端110和至少一个设备端,其中,服务端110至少包含通用CPU111、内存112,设备端可以是图1中的AI芯片120_1-120_N,AI芯片120_1至少包含加速器121_1、内存122_1,以此类推,AI芯片120_N至少包含加速器121_N、内存122_N。
通用CPU111和加速器121_1-121_N通过互联总线连接到总线交换模块,考虑到一些应用场景,通用CPU111的计算能力低于加速器121_1-121_N,可以把通用CPU111的部分计算任务转移给加速器121_1-121_N中的一个或多个,以提高应用程序的执行效率。可以理解,加速器121_1-121_N中的一个在执行计算任务时,除了访问所在AI芯片的内存,还可能访问其他AI芯片或服务端110使用的内存。
如图1所示,加速器121_1访问AI芯片120_1的内存122_1时,可以将虚拟地址发送到AI芯片120_1的系统内存管理单元(system memory management unit,SMMU),由SMMU查询页表将虚拟地址转换成物理地址,然后对物理地址对应的内存空间进行访问。
在在先申请的内存管理方案中,通过总线交换模块提供的物理路径实现服务端110和AI芯片120_1-120_N之间的数据传输。物理路径在服务端110或AI芯片120_1-120_N的连接处都有一个连接端口(图1中未示出)。
加速器121_1访问服务端110的内存时,基于总线交换模块提供的物理路径,可以通过在AI芯片120_1上部署数据传输模块,比如直接存储器访问(direct memory access,DMA)模块,把存储在服务端110的数据搬移到加速器121_1已经申请的内存上。
加速器121_1访问其他AI芯片(比如AI芯片120_N)的内存时,基于总线交换模块提供的物理路径,可以通过在互联总线上部署地址翻译单元(address translation unit,ATU),建立AI芯片120_N的物理地址和AI芯片120_1的物理地址的映射,再根据AI芯片120_1的物理地址映射的AI芯片120_N的物理地址访问AI芯片120_N的内存122_N。
同样,图1中的任一加速器121_2-121_N,也可以使用上述方式实现对系统中内存的访问。
上述内存管理方案中,AI芯片的SMMU建立唯一页表管理虚拟地址与物理地址的映射。加速器121_1可以通过查询虚拟地址映射的物理地址而访问Al芯片120_1的内存122_1。但有时为了提高应用程序的执行效率,需要加速器121_1也能根据虚拟地址映射物理地址的方式访问服务端110或其他AI芯片的内存。然而系统中服务端110和AI芯片120_1-120_N的物理地址可能是相同的,例如:0x0000-0x0010,SMMU通过一个页表无法判断页表项中虚拟地址映射的物理地址是服务端110还是AI芯片120_1-120_N的内存,因此也不能根据物理地址准确路由内存访问指令。
有鉴于此,在本申请的实施例中提供一种共享虚拟内存管理方法,应用于系统的设备端,该方法将应用程序的虚拟地址空间中设置的共享虚拟地址空间进行划分,使系统中的各处理单元拥有独立的共享虚拟地址空间,使用独立的共享虚拟地址空间中的虚拟地址为各处理单元在对应的内存单元中分配内存,并在设备端建立页表单元分别存储不同处理单元分配的虚拟地址与物理地址的映射关系。当设备端执行应用程序发送的任务时,通过判断内存访问指令中虚拟地址在共享虚拟地址空间中的范围,可以确定所要访问的内存单元;通过页表单元查询内存访问指令中虚拟地址映射的物理地址,可以确定内存访问指令所要访问的物理地址;通过设备端的地址路由单元将内存访问指令路由到所要访问的内存单元,对所要访问的物理地址表示的内存单元的物理空间进行访问。
图2示出了本申请实施例提供的一种计算系统的框架图。如图2所示,计算系统200可以是如移动手机、平板电脑或可穿戴设备等电子装置的一部分,是由多个不同架构的处理单元组成的一个完整的系统。计算系统200包含服务端210、设备端220和设备端230,服务端210、设备端220和设备端230各自包含处理单元和内存单元。服务端210具备通用CPU能力,是与设备端220和设备端230互联的主机服务器,设备端220、230可以是不同于通用CPU的具有高效计算能力的异构芯片,比如Al芯片。
具体的,服务端210包含通用CPU211、内存212、共享虚拟内存管理Master213、共享虚拟地址管理表214和应用程序215,设备端220中包含加速器221、内存222、共享虚拟内存管理Agent223、共享虚拟地址管理表224、虚拟地址段配置表225、页表单元226、SMMU227、地址路由单元228,加速器221中包含地址判断单元2211。设备端230中包含加速器231、内存232、共享虚拟内存管理Agent233、共享虚拟地址管理表234、虚拟地址段配置表235、页表单元236、SMMU237、地址路由单元238,加速器231中包含地址判断单元2311。
在设备端220、230中,作为处理单元的加速器221、231可以是图形处理器(graphics processing unit,GPU)、数据中心处理器(data processing unit,DPU)、张量处理器(tensor processing unit,TPU)、神经网络处理器(neural processing unit,NPU)等,可以根据不同的需求满足不同的AI应用场景,比如:推理、训练。
在图2中,通用CPU211与加速器221、加速器231通过PCle(peripheral componentinterconnect express,PCIe)总线互联,PCIe是一种计算机互联总线标准,用于计算系统内各子系统间的高速串行通信。具体的,通用cPU211通过PCIe根聚合体(PCle rootcomplex,PCle RC)连接到PCle总线,加速器221、231通过PCle设备终端(PCle end point,PCle EP)连接到PCle总线。
可以理解,在计算系统200中,还可以包含具有类似结构的其他设备端(图2中未示出)。在以下的描述中,将以设备端220为例,对本方案进行说明。
共享虚拟内存管理Master213、共享虚拟内存管理Agent223、地址判断单元2211、地址路由单元228组成计算系统200的共享虚拟内存管理系统。
共享虚拟内存管理Master213接受应用程序215的调用,对应用程序215的共享虚拟地址空间中的虚拟地址的申请、释放,以及共享虚拟地址空间的划分进行管理,将共享虚拟地址空间的划分、共享虚拟地址空间中虚拟地址的使用情况存放在共享虚拟地址管理表214中,通知共享虚拟内存管理Agent223为应用程序215设置页表单元。
共享虚拟内存管理Agent223负责在设备端220为应用程序215配置共享虚拟地址管理表224和虚拟地址段配置表225,并设置页表单元226。根据虚拟地址段配置表225判断虚拟地址在共享虚拟地址空间中的范围,将虚拟地址映射物理地址的页表项保存在页表单元226的不同页表。
地址判断单元2211接受加速器221的调用,根据虚拟地址段配置表225判断内存访问指令中虚拟地址在共享虚拟地址空间中的范围,确定页表单元226中对应页表的页表索引,然后将虚拟地址和页表索引发送到SMMU227,查询得到内存访问指令中虚拟地址映射的物理地址;根据内存访问指令中虚拟地址在共享虚拟地址空间中的范围为内存访问指令中添加路由标记。
地址路由单元228,对没有路由标记的内存访问指令按照物理地址路由,对有路由标记的内存访问指令按照路由标记路由到不同的处理单元的PCle互联端口上。
接下来,基于图2中的内容对本申请实施例提供的一种共享虚拟内存管理方法进行介绍,可以理解的是,该方法可以通过任何具有计算、处理能力的装置、设备、平台、设备集群来执行。
示例性的,图3示出了本申请实施例提供的一种共享虚拟内存管理方法,应用于系统的设备端,系统包括服务端和至少一个设备端,服务端和设备端各自具有处理单元和内存单元如图3所示,共享虚拟内存管理方法包括以下步骤S310-S320:
步骤S310,根据应用程序发送的共享虚拟地址划分信息建立页表单元。共享虚拟地址划分信息包括为每个处理单元分别设置的共享虚拟地址空间的信息,共享虚拟地址空间中的虚拟地址用于每个处理单元在对应的内存单元申请物理空间。页表单元包含虚拟地址和物理空间的物理地址的映射关系。
本实施例中,计算系统200可以具有多个并发的进程,不同的进程用于执行不同的应用程序,每个进程有自己的进程标识PlD,每个应用程序有自己的虚拟地址空间。
每个应用程序,比如应用程序215,在调用共享虚拟内存管理Master213申请内存之前,,要完成共享虚拟内存初始化。在服务端210中,共享虚拟内存管理Master213可以是一个单独的硬件模块,供应用程序215进行调用;也可以由软件方式实施,将共享虚拟内存管理Master213的管理功能通过代码实现并运行在通用CPU211上,应用程序215通过调用Iib库或驱动Driver的方式实现类似的调用功能。
通常,应用程序215调用共享虚拟内存管理Master213的初始化接口时,就完成了共享虚拟内存初始化。
在共享虚拟内存初始化过程中,应用程序215通过调用共享虚拟内存管理Master213把自己的虚拟地址空间分为两部分:一部分作为通用的进程虚拟地址空间,用于处理单元进行本芯片内存访问时使用,一部分作为共享虚拟地址空间,用于处理单元进行跨片芯片内存空间访问时使用;并通过调用共享虚拟内存管理Master213,在共享虚拟地址空间中为计算系统200中的所有处理单元,即通用CPU211、加速器221、加速器231,划分独立的共享虚拟地址空间。
共享虚拟内存管理Agent223还接收共享虚拟内存管理Master213发送的共享虚拟地址初始化请求消息,保存为每个处理单元划分的共享虚拟地址空间的信息,并根据该信息为应用程序215建立页表单元226,并将页表单元226的索引ID返回给共享虚拟内存管理Master213。
页表单元226可以包括多个页表,为来自不同处理单元共享虚拟地址空间中的虚拟地址建立不同页表,页表中的页表项用于保存虚拟地址与物理地址的映射关系。
在一个示例中,页表单元包含第一页表和第二页表,用第一页表存储加速器221的共享虚拟地址空间中的虚拟地址和第一对应的物理地址的映射关系,第一对应的物理地址是内存222的物理空间的物理地址。用第二页表存储通用CPU211和/或加速器231的共享虚拟地址空间中的虚拟地址和第二对应的物理地址的映射关系,第二对应的物理地址是内存212或内存232的物理空间的物理地址。
假设共享虚拟内存管理Master213按照应用程序215的内存大小需求,从通用CPU211的共享虚拟地址空间里分配虚拟地址VA1,从操作系统申请虚拟地址VA1对应的物理地址PA1(如图2所示)。那么,共享虚拟内存管理Master213更新自己的共享虚拟地址管理表214,并给共享虚拟内存管理Agent223发送内存同步信息,通知共享虚拟内存管理Agent223根据虚拟地址VA1和物理地址PA1的映射关系对页表单元226进行更新。
具体的,根据虚拟地址VA1在应用程序215的共享虚拟地址空间中的范围,确定虚拟地址VA1对应处理单元,即通用CPU211。那么,根据虚拟地址VA1和物理地址PA1的映射关系更新通用CPU211所对应的页表单元226中的第二页表。
步骤S320,执行应用程序发送的任务,获得第一内存访问指令。第一内存访问指令包括第一虚拟地址,第一虚拟地址是共享虚拟地址空间中的虚拟地址。根据第一虚拟地址查找页表单元,得到第一物理地址,并对第一物理地址表示的内存单元的物理空间进行访问。
本实施例中,系统运行应用程序时,服务端210、设备端220或设备端230可以使用各自处理单元的共享虚拟地址空间中的虚拟地址在各自的内存单元申请内存。设备端220执行应用程序下发的计算任务时,可以通过页表单元226查询内存访问指令中虚拟地址映射的物理地址,对服务端210、设备端220或设备端230上内存单元的物理空间进行访问。
具体的,设备端220在接收到应用程序215下发的计算任务时,共享虚拟内存管理Agent223调用共享虚拟地址管理表224同步服务端210上共享虚拟地址管理表214中的信息,共享虚拟地址管理表224中保存应用程序215已经使用的虚拟地址信息。在执行计算任务而进行内存访问之前,对获得的内存访问指令中的虚拟地址进行安全检查,避免内存访问指令中的虚拟地址出错,比如,由于数据传输环境恶劣而导致的误码,而使系统进行错误的内存访问。
加速器221在执行应用程序下发的计算任务的过程中,获得第一内存访问指令,其中,第一内存访问指令包括第一虚拟地址,第一虚拟地址是共享虚拟地址空间中的虚拟地址。根据第一虚拟地址在应用程序215的共享虚拟地址空间中的范围,确定第一虚拟地址对应处理单元。根据对应的处理单元确定页表单元的页表,并在页表中进行查找,得到第一物理地址。
当第一虚拟地址对应处理单元对应的是加速器221时,则将第一内存访问指令中的第一虚拟地址更改为第一物理地址,生成第二内存访问指令。
根据第一物理地址在设备端220路由第二内存访问指令,对内存222中的物理空间进行访问。
当第一虚拟地址对应处理单元对应的不是加速器221时,则将第一内存访问指令中的第一虚拟地址更改为第一物理地址,并在所述第一内存访问指令中添加第一标记,生成第二内存访问指令。在一种可能的方式中,还可以添加加速器221的标记。可以理解,系统中的处理单元各自具有标记,其中,第一标记是第一虚拟地址对应的处理单元的标记。
根据第一标记将第二内存访问指令发送到设备端220的BUS总线的PCle EP端口上,PCle EP端口将第二内存访问指令发送到服务端210的通用CPU211。如果通用CPU211打开了SMMU功能,就把第二访问指令发送到SMMU去进行页表项转换;如果没有打开SMMU功能,就直接将第二内存访问指令发送到通用CPU211的BUS总线,通过通用CPU211的BUS总线上的地址路由模块按照第一物理地址路由第二内存访问指令,对第一物理地址表示的内存单元的物理空间进行访问。
由此,通过为每个处理单元划分独立的共享虚拟地址空间,使设备端220的加速器221可以通过虚拟地址映射物理地址的方式访问系统的内存单元,不管这个内存单元是本设备端220的内存222,还是设备端230的内存232,或者服务端210的内存212。
可以理解,在图2所示的异构系统里,以上共享虚拟内存管理方法对其他设备端,比如设备端230,都是适用的。
接下来,将结合上述图2、图3和下述图4、图7、图8中的内容,对本申请实施例中计算系统200利用共享虚拟内存管理系统进行共享虚拟内存初始化、共享虚拟内存申请、共享虚拟内存同步、共享虚拟内存访问、共享虚拟内存释放的流程进行详细说明。
图4示出了本申请实施例提供的一种共享虚拟内存初始化流程,包括以下步骤S411一S414:
步骤S411,共享虚拟内存管理Master213从应用程序215的虚拟地址空间预留一段虚拟地址组成共享虚拟地址空间。
步骤S412,共享虚拟内存管理Master213对共享虚拟地址空间进行划分。
图5中示出了本申请实施例提供的一种虚拟地址空间划分示意图,如图5所示,应用程序215将自己的虚拟地址空间预留一段虚拟地址组成共享虚拟地址空间,其他的虚拟地址组成服务端210单独使用的进程虚拟地址空间。
共享虚拟内存管理Master213在应用程序215的共享虚拟地址空间中,为各处理单元划分独立的共享虚拟地址空间,包括通用CPU211的共享虚拟地址空间,加速器221的共享虚拟地址空间,加速器231的共享虚拟地址空间,以及其他的共享虚拟地址空间。假设应用程序215需要在服务端210上申请内存,应用程序215按照内存大小需求从通用CPU211的共享虚拟地址空间中分配虚拟地址,从操作系统申请虚拟地址对应的物理空间,此物理空间在内存212上。必要时应用程序215也会在设备端220、230上申请内存,申请过程以此类推。其他的共享虚拟地址空间是计算系统200预留的扩展共享虚拟地址空间,可以用于计算系统200访问网络中其他计算系统(图2中未示出)的内存时进行使用,其具体实现方式不是本方案的重点,不进行过多描述。
共享虚拟内存管理Master213将共享虚拟地址空间的划分和虚拟地址的使用信息存放在共享虚拟地址管理表214中。
步骤S413,共享虚拟内存管理Master213通知共享虚拟内存管理Agent223为应用程序215设置页表单元。
本实施例中,共享虚拟内存管理Master213把共享虚拟地址初始化请求信息发送到共享虚拟内存管理Agent223,共享虚拟地址初始化请求信息中包括运行应用程序215的进程PID,共享虚拟地址划分信息,以及虚拟地址的使用信息。
共享虚拟内存管理Agent223为应用程序215进行以下操作,根据共享虚拟地址划分信息配置虚拟地址段配置表225,根据虚拟地址的使用信息设置共享虚拟地址管理表224。
可以理解,在计算系统200中,设备端220为每个应用程序设置页表单元,用于在不同的页表中保存每个应用程序使用共享虚拟地址空间中的虚拟地址申请内存时映射的物理地址。
在一种可能的实现方式中,共享虚拟内存管理Agent223根据虚拟地址段配置表225为应用程序215初始化两个存放页表项的页表,包含第一页表和第二页表,第一页表用来存放加速器221的共享虚拟地址空间中的虚拟地址和物理地址的映射关系,第二页表用来存放通用CPU111和加速器223的共享虚拟地址空间中的虚拟地址和物理地址的映射关系。第一页表具有索引ID1,第二页表具有索引ID2,索引ID1和索引ID2具有关联关系。
图6中示出了本申请实施例提供的一种页表单元中页表间的索引关联关系图,如图6所示,索引ID1和索引ID2均设置为16个bit位,其中,索引ID1的最高位常置为0,索引关联关系表示为将索引ID1的最高位置为1,即可得到索引ID2。比如,索引ID1的低15位的十进制值是200,那么索引ID2的十进制值是(215+200)=32968。
共享虚拟内存管理Agent223将不同页表的索引ID和索引ID间的关联关系保存在SMMU227,完成页表单元的配置;并将任一页表的索引ID,比如第一页表的索引ID1,作为页表单元的标识返回给共享虚拟内存管理Master213。
在另一种可能的实现方式中,共享虚拟内存管理Agent223根据虚拟地址段配置表225为应用程序215初始化三个存放页表项的页表,包括第一页表、第二页表和第三页表,分别用来存放加速器221、通用CPU111和加速器223的共享虚拟地址空间中的虚拟地址和物理地址的映射关系。第一页表、第二页表和第三页表分别具有独立的索引ID1、索引ID2和索引ID3,索引ID1、索引ID2和索引ID3均设置为16个bit位,三个索引ID同属一组,存放在索引ID表中。
选择三个索引ID中的一个,比如索引ID1,建立索引ID1和索引ID表的对应关系,并将所述对应关系保存在SMMU227,完成页表单元的配置;并将索引ID1作为页表单元的标识返回给共享虚拟内存管理Master213。
步骤S414,共享虚拟内存管理Master213接收共享虚拟内存管理Agent223设置的页表单元的标识。
共享虚拟内存管理Master213将共享虚拟内存管理Agent223设置的页表单元的标识返回给应用程序215,建立进程PID和页表单元的标识的对应关系。
通过以上步骤411-414,可完成应用程序215的共享虚拟内存初始化过程。必要时,应用程序215调用共享虚拟内存管理Master213,使用共享虚拟地址空间中的虚拟地址在服务端210、设备端220或设备端230上申请内存,并将申请内存的页表项同步到设备端220的页表单元226。
图7(a)是本申请实施例提供的一种内存申请和页表单元同步流程图,如图7(a)所示,内存申请和页表单元同步流程包括步骤S711-S712:
步骤S711,应用程序215调用共享虚拟内存管理Master213的共享虚拟内存申请接口申请内存,在服务端210上分配内存,并发送内存同步信息到共享虚拟内存管理Agent223。
共享虚拟内存管理Master213按照应用程序215的内存大小需求,从通用CPU211的共享虚拟地址空间里分配共享虚拟地址VA1,以及从操作系统申请VA1对应的物理地址PA1(如图2所示)。此外,如果服务端210的操作系统开启了SMMU,还需要把PA1地址与IOVA地址建立映射得到IOVA地址1,其中,IOVA可以理解为输入/输出I/O的地址。共享虚拟内存管理Master213更新自己的共享虚拟地址管理表214,然后发送内存同步信息到共享虚拟内存管理Agent223。
步骤S712,共享虚拟内存管理Agent223根据内存同步信息更新页表单元226。
共享虚拟内存管理Agent223接收应用程序215调用共享虚拟内存管理Master213发送的内存同步信息,内存同步信息中包括应用程序对应的进程PID、分配使用的共享虚拟地址VA1、分配使用的内存单元的物理空间的物理地址PA1/IOVA地址1、页表单元的标识等。共享虚拟内存管理Agent223根据虚拟地址段配置表225判断共享虚拟地址VA1对应的处理单元,根据对应的处理单元确定页表单元中的页表,将VA1映射到PA1/IOVA地址1的页表项插入到页表中。
图7(b)是本申请实施例提供的一种内存申请和页表单元同步流程图,如图7(b)所示,内存申请和页表单元同步流程包括步骤S721-S722:
步骤S721,应用程序215调用共享虚拟内存管理Master213的共享虚拟内存申请接口申请内存,发送内存申请请求消息到共享虚拟内存管理Agent223。
共享虚拟内存管理Master213按照应用程序215的内存大小需求,从加速器221的共享虚拟地址空间里分配共享虚拟地址VA2,然后把在设备端220上申请内存的内存申请请求消息发送给设备端220。
步骤S722,共享虚拟内存管理Agent223接收内存申请请求消息,在设备端220上分配内存,并更新页表单元226。
共享虚拟内存管理Agent223接收应用程序215调用共享虚拟内存管理Master213发送内存申请请求消息,内存申请请求消息中可以包括应用程序215对应的进程PID、分配使用的共享虚拟地址VA2、页表单元的标识等。共享虚拟内存管理Agent223根据虚拟地址段配置表225判断共享虚拟地址VA2所属的虚拟地址范围,如果判断VA2是加速器221的共享虚拟地址空间范围的虚拟地址,就在内存222申请物理地址为PA2(如图2所示)的内存空间,然后将VA2映射到PA2的页表项插入到对应的页表中。
可以理解,应用程序215调用共享虚拟内存管理Master213从内存212、内存222中分配的物理地址的PA1/IOVA地址1、PA2可能是相同的,也可能是不相同的。
图7(c)是本申请实施例提供的一种内存申请和页表单元同步流程图,如图7(c)所示,内存申请和页表单元同步流程包括步骤S731-S735:
步骤S731,应用程序215调用共享虚拟内存管理Master213,通知设备端230的共享虚拟内存管理Agent233完成共享虚拟地址初始化。
共享虚拟内存管理Agent233完成共享虚拟地址初始化的过程和图4的步骤S413-S414类似。
步骤S732,应用程序215调用共享虚拟内存管理Master213的共享虚拟内存申请接口申请内存,发送内存申请请求消息到共享虚拟内存管理Agent233。
应用程序215调用共享虚拟内存管理Master213的共享虚拟内存申请接口,共享虚拟内存管理Master213按照应用程序的内存大小需求,从加速器230的共享虚拟地址空间里分配共享虚拟地址VA3,然后把在设备端230上申请内存的内存申请请求消息发送给设备端230。
步骤S733,共享虚拟内存管理Agent233接收内存申请请求消息,在设备端230上分配内存,并将分配的内存消息返回到共享虚拟内存管理Master213。
共享虚拟内存管理Agent233接收应用程序215调用共享虚拟内存管理Master213发送的内存申请请求消息,内存申请请求消息中可以包括应用程序215对应的进程PID、分配使用的共享虚拟地址VA3、页表单元的标识等。共享虚拟内存管理Agent233根据虚拟地址段配置表235判断共享虚拟地址VA3所属的虚拟地址范围,如果判断VA3是加速器232的共享虚拟地址空间范围的虚拟地址,就在内存232申请物理地址为PA3(如图2所示)的内存空间,并将VA3映射到PA3的页表项插入到设备端230为应用程序215设置的页表单元236中,然后返回VA3映射到PA3的页表项到共享虚拟内存管理Master213。
步骤S734,应用程序215调用共享虚拟内存管理Master213,发送内存同步信息到共享虚拟内存管理Agent223。
共享虚拟内存管理Master213把PA3转换为该地址在服务端210的通用CPU211能访问的IO地址,比如,IO地址3,另外,如果服务端210的操作系统开启了SMMU,还需要把IO地址3与IOVA地址建立映射得到IOVA地址3,共享虚拟内存管理Master213更新自己的共享虚拟地址管理表214,并发送内存同步信息到共享虚拟内存管理Agent223。
步骤S735,共享虚拟内存管理Agent223根据内存同步信息更新页表单元226。
共享虚拟内存管理Agent223接收应用程序调用共享虚拟内存管理Master213发送的内存申请请求消息,内存申请请求消息中可以包括应用程序215对应的进程PID、分配使用的共享虚拟地址VA3、分配使用的内存单元的物理空间的物理地址IO地址3/IOVA地址3、页表单元的标识等。共享虚拟内存管理Agent223根据虚拟地址段配置表225判断共享虚拟地址VA3对应的处理单元,根据对应的处理单元确定页表单元中的页表,将VA3映射到IO地址3/IOVA地址3的页表项插入到页表中。
图8示出了本申请实施例提供的一种共享虚拟内存访问流程,包括以下步骤S811-S813:
步骤S811,根据第一虚拟地址查找页表单元的标识对应的页表单元,得到第一物理地址。
加速器221调用地址判断单元2211,根据虚拟地址段配置表225判断第一虚拟地址对应的处理单元。根据对应的处理单元确定页表单元的标识对应的页表单元中的页表ID,根据第一虚拟地址在页表中进行查找,得到第一物理地址。
以图6所示的为应用程序215配置包括两个页表的页表单元为例,SMMU227根据页表单元的标识获得第一页表的索引ID1,根据页表单元中页表间的索引关联关系可以获得第二页表的索引ID2,从而实现对页表单元中任意页表的查询。
步骤S812,将第一内存访问指令中的第一虚拟地址替换为第一物理地址。
查询到第一物理地址后,地址判断单元2211判断第一虚拟地址是加速器221的共享虚拟地址空间中的虚拟地址时,将第一内存访问指令中的第一虚拟地址更改为第一物理地址,生成第二内存访问指令。
地址判断单元2211判断第一虚拟地址不是加速器221的共享虚拟地址空间中的虚拟地址时,将第一内存访问指令中的第一虚拟地址更改为第一物理地址,并在第一内存访问指令中添加第一标记,生成第二内存访问指令。第一标记在内存访问指令中命名为直通标记,直通标记用于指示地址路由单元228对第二内存访问指令进行准确路由。在计算系统200中的每个处理单元,即通用CPU211、加速器221或加速器231都具有唯一标记,第一标记是第一虚拟地址对应的处理单元的标记。
步骤S813,对第一物理地址表示的内存单元的物理空间进行访问。
地址路由单元228负责将BUS总线上的内存访问指令按照指令里的物理地址路由到不同的内存单元。
如果第二内存访问指令中没有直通标记,地址路由单元228根据第一物理地址在设备端202路由第二内存访问指令。
如果第二内存访问指令中有直通标记,地址路由单元228将第二内存访问指令路由到对外互联端口上。在PCle互联的计算系统200中,第二内存访问指令被路由到PCIe EP上,PCIe EP通过PCIe链路将第二内存访问指令发送到的PCIe RC端口。
PCIe RC端口接收到第二内存访问指令后,将第二内存访问指令发送到服务端210的通用CPU211。如果通用CPU211打开了SMMU功能,就把第二访问指令发送到SMMU去进行页表项转换;如果没有打开SMMU功能,就直接将第二内存访问指令发送到通用CPU211的BUS总线,通过通用CPU211的BUS总线上的地址路由模块按照第一物理地址将该第二内存访问指令路由到对应的内存。
将第二内存访问指令路由到对应的内存后,对第一物理地址表示的内存单元的物理空间进行访问。
在运行应用程序215的最后阶段,还需要调用共享虚拟内存管理Master213,发送共享虚拟内存释放消息到设备端220的共享虚拟内存管理Agent223,共享虚拟内存释放消息中至少包括应用程序对应的进程PID,设备端220的共享虚拟内存管理Agent223接收到共享虚拟内存释放消息后,释放设备端220上与应用程序215有关的页表单元226、共享虚拟地址管理表224、虚拟地址段配置表225、共享虚拟地址VA2以及对应的物理地址PA2等资源。
在一个示例中,计算系统的各个处理单元通过硬件总线交互数据而协同工作,互联的硬件总线可以使用PCIe协议,也可以使用硬件厂商自研的协议,比如,IBM(coherentaccelerator processor interface CAPI)协议,Intel开放性互联(compute expresslink,CXL)协议,NVID1A NVLINK协议等。
图9示出了本申请实施例提供的一种计算系统的框架图,如图9所示,计算系统900包括图2中所示的服务端210、设备端220和设备端230的结构,通用CPU211与加速器221、加速器231通过自研总线交换机进行互联。
具体的,通用CPU211与加速器221、加速器231通过各自的互联总线端口连接到自研总线交换机上进行数据交互,自研总线交换机上运行自研总线协议。处理单元各自具有标识ID,比如,此ID可以设置为16个bit位,自研总线交换机通过该标识ID把互联总线上的消息路由到各个处理单元。
如图10所示,处理单元的标识ID和该处理单元的共享虚拟地址范围是一一对应的。如图11(a)所示,当处理单元通过互联总线端口发送内存访问指令时,内存访问指令至少包括内存访问标准格式以及扩展域。如图11(b)所示,当一个处理单元通过互联总线端口向其他处理单元发送内存访问指令时,互联总线端口还需要在图11(a)的基础上封装该自研总线的协议报文头得到互联总线报文消息,协议报文头可以包括目的处理单元标识ID和源处理单元标识ID。
互联总线端口将互联总线报文消息发送到自研总线交换机,自研总线交换机基于处理单元标识ID路由表把互联总线报文消息路由到目的处理单元,目的处理单元的互联总线端口解析该互联总线报文消息,去掉协议报文头,把内存访问指令发送到目的处理单元的BUS总线上,该BUS总线上的地址路由单元按照物理地址路由该内存访问指令到指定的内存地址空间。
如图9所示,应用程序215调用共享虚拟内存管理Master213触发运行上述步骤S310-S320。首先,调用共享虚拟内存管理Master213在系统的不同内存上进行内存申请,然后把内存申请的页表项同步到设备端220上,并下发计算任务到设备端220进行执行。设备端220对内存访问指令中不同范围的共享虚拟地址,查询不同的页表得到映射的物理地址。根据共享虚拟地址的范围进行判断,如果共享虚拟地址对应的处理单元是服务端210或设备端230的处理单元,则在内存访问指令上添加标记,比如,目的处理单元标识ID。地址路由单元228在路由内存访问指令时。如果内存访问指令上添加了标记,则将该内存读写指令路由到互联总线端口,互联总线端口负责对内存访问指令进行再次封装,比如,添加源处理单元标识ID,得到互联总线报文消息。总线交换机根据互联总线报文消息中目的处理单元标识ID,将内存访问指令路由到对应的互联总线端口或者其他总线交换机(图9中未示出)。
互联总线端口的功能如下:发送内存访问指令,对来自加速器221的BUS总线上的内存访问指令进行再次封装,比如,添加加速器231(源处理单元)的标识ID,得到互联总线报文消息,通过总线交换机发送出去;接收来自总线交换机的互联总线报文消息,判断目的处理单元是否是属于本互联总线端口的,如果是就解析该报文,得到内存访问指令。然后把内存访问指令发送到目的处理单元的BUS总线上进行路由,对内存访问指令中物理地址表示的内存单元的物理空间进行访问。
基于上述实施例中的方法,示例性的,图12示出了一种共享虚拟内存管理装置的框架图,该装置可以部署于系统的设备端,系统包含服务端和至少一个设备端,服务端和设备端各自包含处理单元和内存单元,如图12所示,装置1200包括:
处理模块1210,可以根据应用程序发送的共享虚拟地址划分信息建立页表单元;共享虚拟地址划分信息包括为每个处理单元分别设置的共享虚拟地址空间的信息,共享虚拟地址空间中的虚拟地址用于每个处理单元在对应的内存单元申请物理空间;页表单元包含共享虚拟地址和物理空间的物理地址的映射关系。
处理模块1210,还可以执行应用程序发送的任务,获得第一内存访问指令;第一内存访问指令包括第一虚拟地址,第一虚拟地址是共享虚拟地址空间中的虚拟地址;根据第一虚拟地址查找页表单元,得到第一物理地址,并对第一物理地址表示的内存单元的物理空间进行访问。
在一些实施例中,系统包含第一设备端,处理模块1210根据应用程序发送的共享虚拟地址划分信息建立页表单元时,用于:为第一设备端的处理单元设置第一页表,其中,第一设备端包含第一处理单元,第一页表存储第一处理单元的共享虚拟地址空间中的虚拟地址和第一对应的物理地址的映射关系,第一对应的物理地址是第一处理单元对应的内存单元的物理空间的物理地址;为服务端和/或第二设备端的处理单元设置第二页表,其中,系统还包含第二设备端,第二页表存储服务端和/或第二设备端的处理单元的共享虚拟地址空间中的虚拟地址和第二对应的物理地址的映射关系,第二对应的物理地址是服务端和/或第二设备端对应的内存单元的物理空间的物理地址;页表单元包含第一页表和第二页表。
在一些实施例中,处理模块1210根据第一虚拟地址查找页表单元时,用于:根据共享虚拟地址划分信息确定第一虚拟地址对应的处理单元;第一虚拟地址是对应的处理单元的共享虚拟地址空间中的虚拟地址;根据对应的处理单元确定页表单元的页表,其中,页表为第一页表或第二页表;根据第一虚拟地址在页表中进行查找。
在一些实施例中,处理模块1210根据应用程序发送的共享虚拟地址划分信息建立页表单元之后,还用于:接收应用程序发送的内存同步信息,其中,内存同步信息至少包括第一虚拟地址和第一物理地址,第一虚拟地址和第一物理地址在内存单元具有映射关系;根据第一虚拟地址和第一物理地址更新页表单元。
在一些实施例中,处理模块1210根据第一虚拟地址和第一物理地址更新页表单元时,用于:根据共享虚拟地址划分信息确定第一虚拟地址对应的处理单元;第一虚拟地址是对应的处理单元的共享虚拟地址空间中的虚拟地址;根据对应的处理单元确定页表单元的页表,其中,页表为第一页表或第二页表;根据第一虚拟地址和第一物理地址更新页表的第一页表项,其中,第一页表项包含第一虚拟地址和第一物理地址的映射关系。
在一些实施例中,处理模块1210对第一物理地址表示的内存单元的物理空间进行访问之前,还用于:根据共享虚拟地址划分信息确定第一虚拟地址对应的处理单元;第一虚拟地址是对应的处理单元的共享虚拟地址空间中的虚拟地址;在第一虚拟地址对应的处理单元是第一设备端的处理单元时,将第一内存访问指令中的第一虚拟地址更改为第一物理地址,生成第二内存访问指令;根据第一物理地址在第一设备端路由第二内存访问指令。
在一些实施例中,处理模块1210对第一物理地址表示的内存单元的物理空间进行访问之前,还用于:根据共享虚拟地址划分信息确定第一虚拟地址对应的处理单元;第一虚拟地址是对应的处理单元的共享虚拟地址空间中的虚拟地址;在第一虚拟地址对应的处理单元是是服务端和/或第二设备端的处理单元时,将第一内存访问指令中的第一虚拟地址更改为第一物理地址,并在第一内存访问指令中添加第一标记,生成第二内存访问指令;其中,服务端的处理单元和设备端的处理单元各自具有标记,第一标记是第一虚拟地址对应的处理单元的标记。
在一些实施例中,其中,处理单元通过总线互联。处理模块1210对第一物理地址表示的内存单元的物理空间进行访问之前,还用于:根据第一标记将第二内存访问指令发送到总线的端口;处理单元与总线的端口建有连接;按照第一标记路由第二内存访问指令第二内存访问指令。
在一些实施例中,其中,处理模块1210按照第一标记路由第二内存访问指令之前,还用于:在第二内存访问指令中添加第一设备端的处理单元的标记。
基于上述实施例中的方法,本申请实施例提供了一种电子设备。该电子设备可以包括:显示屏;至少一个存储器,用于存储程序;至少一个处理器,用于执行所述存储器存储的程序。其中,当所述存储器存储的程序被执行时,所述处理器用于执行上述实施例中所描述的方法。示例性的,该电子设备可以为是手机、平板电脑、桌面型计算机、膝上型计算机、手持计算机、笔记本电脑、服务器、超级移动个人计算机(ultra-mobile personalcomputer,UMPC)、上网本,以及蜂窝电话、个人数字助理(personal digital assistant,PDA)、增强现实(augmented reality,AR)设备、虚拟现实(virtual reality,VR)设备、人工智能(artificial intelligence,AI)设备、可穿戴式设备、车载设备、智能家居设备和/或智慧城市设备,本申请实施例对该电子设备的具体类型不作特殊限制。
基于上述实施例中的方法,本申请实施例提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,当计算机程序在处理器上运行时,使得处理器执行上述实施例中的方法。
基于上述实施例中的方法,本申请实施例提供了一种计算机程序产品,当计算机程序产品在处理器上运行时,使得处理器执行上述实施例中的方法。
可以理解的是,本申请的实施例中的处理器可以是中央处理单元(centralprocessing unit,CPU),还可以是其他通用处理器、数字信号处理器(digital signalprocessor,DSP)、专用集成电路(application specific integrated circUit,ASIC)、现场可编程门阵列(field programmable gate array,FPGA)或者其他可编程逻辑器件、晶体管逻辑器件,硬件部件或者其任意组合。通用处理器可以是微处理器,也可以是任何常规的处理器。
本申请的实施例中的方法步骤可以通过硬件的方式来实现,也可以由处理器执行软件指令的方式来实现。软件指令可以由相应的软件模块组成,软件模块可以被存放于随机存取存储器(random access memory,RAM)、闪存、只读存储器(read-only memory,ROM)、可编程只读存储器(programmable rom,PROM)、可擦除可编程只读存储器(erasabIe PROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)、寄存器、硬盘、移动硬盘、CD-ROM或者本领域熟知的任何其它形式的存储介质中。一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于ASIC中。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者通过所述计算机可读存储介质进行传输。所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘(solid state disk,SSD))等。
可以理解的是,在本申请的实施例中涉及的各种数字编号仅为描述方便进行的区分,并不用来限制本申请的实施例的范围。
Claims (21)
1.一种共享虚拟内存管理方法,其特征在于,应用于系统的设备端,所述系统包含服务端和至少一个设备端,所述服务端和所述设备端各自包含处理单元和内存单元,所述方法包括:
根据应用程序发送的共享虚拟地址划分信息建立页表单元;所述共享虚拟地址划分信息包括为每个所述处理单元分别设置的共享虚拟地址空间的信息,所述共享虚拟地址空间中的虚拟地址用于每个所述处理单元在对应的内存单元申请物理空间;所述页表单元包含所述虚拟地址和所述物理空间的物理地址的映射关系;
执行所述应用程序发送的任务,获得第一内存访问指令;所述第一内存访问指令包括第一虚拟地址,所述第一虚拟地址是所述共享虚拟地址空间中的虚拟地址;根据所述第一虚拟地址查找所述页表单元,得到第一物理地址,并对所述第一物理地址表示的内存单元的物理空间进行访问。
2.根据权利要求1所述的方法,其特征在于,其中,所述系统包含第一设备端;
所述根据应用程序发送的共享虚拟地址划分信息建立页表单元,包括:
为所述第一设备端的处理单元设置第一页表,其中,所述第一设备端包含第一处理单元,所述第一页表存储所述第一处理单元的共享虚拟地址空间中的虚拟地址和第一对应的物理地址的映射关系,所述第一对应的物理地址是所述第一处理单元对应的内存单元的物理空间的物理地址;
为所述服务端和/或第二设备端的处理单元设置第二页表,其中,所述系统还包含第二设备端,所述第二页表存储所述服务端和/或所述第二设备端的处理单元的共享虚拟地址空间中的虚拟地址和第二对应的物理地址的映射关系,所述第二对应的物理地址是所述服务端和/或第二设备端对应的内存单元的物理空间的物理地址;
所述页表单元包含所述第一页表和所述第二页表。
3.根据权利要求2所述的方法,其特征在于,所述根据所述第一虚拟地址查找所述页表单元,包括:
根据所述共享虚拟地址划分信息确定所述第一虚拟地址对应的处理单元;所述第一虚拟地址是所述对应的处理单元的共享虚拟地址空间中的虚拟地址;
根据所述对应的处理单元确定所述页表单元的页表,其中,所述页表为第一页表或第二页表;
根据所述第一虚拟地址在所述页表中进行查找。
4.根据权利要求2所述的方法,其特征在于,所述根据应用程序发送的共享虚拟地址划分信息建立页表单元之后,还包括:
接收所述应用程序发送的内存同步信息,其中,所述内存同步信息至少包括所述第一虚拟地址和第一物理地址,所述第一虚拟地址和所述第一物理地址在所述内存单元具有映射关系;
根据所述第一虚拟地址和所述第一物理地址更新所述页表单元。
5.根据权利要求4所述的方法,其特征在于,所述根据所述第一虚拟地址和所述第一物理地址更新所述页表单元,包括:
根据所述共享虚拟地址划分信息确定所述第一虚拟地址对应的处理单元;所述第一虚拟地址是所述对应的处理单元的共享虚拟地址空间中的虚拟地址;
根据所述对应的处理单元确定所述页表单元的页表,其中,所述页表为第一页表或第二页表;
根据所述第一虚拟地址和所述第一物理地址更新所述页表的第一页表项,其中,所述第一页表项包含所述第一虚拟地址和所述第一物理地址的映射关系。
6.根据权利要求2所述的方法,其特征在于,所述对所述第一物理地址表示的内存单元的物理空间进行访问之前,还包括:
根据所述共享虚拟地址划分信息确定所述第一虚拟地址对应的处理单元;所述第一虚拟地址是所述对应的处理单元的共享虚拟地址空间中的虚拟地址;
在所述第一虚拟地址对应的处理单元是第一设备端的处理单元时,将所述第一内存访问指令中的第一虚拟地址更改为所述第一物理地址,生成第二内存访问指令;
根据所述第一物理地址在所述第一设备端路由所述第二内存访问指令。
7.根据权利要求2所述的方法,其特征在于,所述对所述第一物理地址表示的内存单元的物理空间进行访问之前,还包括:
根据所述共享虚拟地址划分信息确定所述第一虚拟地址对应的处理单元;所述第一虚拟地址是所述对应的处理单元的共享虚拟地址空间中的虚拟地址;
在所述第一虚拟地址对应的处理单元是是所述服务端和/或第二设备端的处理单元时,将所述第一内存访问指令中的第一虚拟地址更改为所述第一物理地址,并在所述第一内存访问指令中添加第一标记,生成所述第二内存访问指令;
其中,所述服务端的处理单元和所述设备端的处理单元各自具有标记,所述第一标记是所述第一虚拟地址对应的处理单元的标记。
8.根据权利要求7所述的方法,其特征在于,其中,所述处理单元通过总线互联;
所述对所述第一物理地址表示的内存单元的物理空间进行访问之前,还包括:
根据所述第一标记将所述第二内存访问指令发送到所述总线的端口;所述处理单元与所述总线的端口建有连接;
按照所述第一标记路由所述第二内存访问指令。
9.根据权利要求8所述的方法,其特征在于,其中,所述按照所述第一标记路由所述第二内存访问指令之前,还包括:
在所述第二内存访问指令中添加所述第一设备端的处理单元的标记。
10.一种共享虚拟内存管理装置,其特征在于,部署于系统的设备端,所述系统包含服务端和至少一个设备端,所述服务端和所述设备端各自包含处理单元和内存单元,所述装置包括:
处理模块,用于根据应用程序发送的共享虚拟地址划分信息建立页表单元;所述共享虚拟地址划分信息包括为每个所述处理单元分别设置的共享虚拟地址空间的信息,所述共享虚拟地址空间中的虚拟地址用于每个所述处理单元在对应的内存单元申请物理空间;所述页表单元包含所述虚拟地址和所述物理空间的物理地址的映射关系;
处理模块,还用于执行所述应用程序发送的任务,获得第一内存访问指令;所述第一内存访问指令包括第一虚拟地址,所述第一虚拟地址是所述共享虚拟地址空间中的虚拟地址;根据所述第一虚拟地址查找所述页表单元,得到第一物理地址,并对所述第一物理地址表示的内存单元的物理空间进行访问。
11.根据权利要求10所述的方法,其特征在于,其中,所述系统包含第一设备端;
所述处理模块根据应用程序发送的共享虚拟地址划分信息建立页表单元时,用于:
为所述第一设备端的处理单元设置第一页表,其中,所述第一设备端包含第一处理单元,所述第一页表存储所述第一处理单元的共享虚拟地址空间中的虚拟地址和第一对应的物理地址的映射关系,所述第一对应的物理地址是所述第一处理单元对应的内存单元的物理空间的物理地址;
为所述服务端和/或第二设备端的处理单元设置第二页表,其中,所述系统还包含第二设备端,所述第二页表存储所述服务端和/或所述第二设备端的处理单元的共享虚拟地址空间中的虚拟地址和第二对应的物理地址的映射关系,所述第二对应的物理地址是所述服务端和/或第二设备端对应的内存单元的物理空间的物理地址;
所述页表单元包含所述第一页表和所述第二页表。
12.根据权利要求11所述的方法,其特征在于,所述处理模块根据所述第一虚拟地址查找所述页表单元时,用于:
根据所述共享虚拟地址划分信息确定所述第一虚拟地址对应的处理单元;所述第一虚拟地址是所述对应的处理单元的共享虚拟地址空间中的虚拟地址;
根据所述对应的处理单元确定所述页表单元的页表,其中,所述页表为第一页表或第二页表:
根据所述第一虚拟地址在所述页表中进行查找。
13.根据权利要求11所述的方法,其特征在于,所述处理模块根据应用程序发送的共享虚拟地址划分信息建立页表单元之后,还用于:
接收所述应用程序发送的内存同步信息,其中,所述内存同步信息至少包括所述第一虚拟地址和第一物理地址,所述第一虚拟地址和所述第一物理地址在所述内存单元具有映射关系;
根据所述第一虚拟地址和所述第一物理地址更新所述页表单元。
14.根据权利要求13所述的方法,其特征在于,所述处理模块根据所述第一虚拟地址和所述第一物理地址更新所述页表单元时,用于:
根据所述共享虚拟地址划分信息确定所述第一虚拟地址对应的处理单元;所述第一虚拟地址是所述对应的处理单元的共享虚拟地址空间中的虚拟地址;
根据所述对应的处理单元确定所述页表单元的页表,其中,所述页表为第一页表或第二页表;
根据所述第一虚拟地址和所述第一物理地址更新所述页表的第一页表项,其中,所述第一页表项包含所述第一虚拟地址和所述第一物理地址的映射关系。
15.根据权利要求11所述的方法,其特征在于,所述处理模块对所述第一物理地址表示的内存单元的物理空间进行访问之前,还用于:
根据所述共享虚拟地址划分信息确定所述第一虚拟地址对应的处理单元;所述第一虚拟地址是所述对应的处理单元的共享虚拟地址空间中的虚拟地址;
在所述第一虚拟地址对应的处理单元是第一设备端的处理单元时,将所述第一内存访问指令中的第一虚拟地址更改为所述第一物理地址,生成第二内存访问指令;
根据所述第一物理地址在所述第一设备端路由所述第二内存访问指令。
16.根据权利要求11所述的方法,其特征在于,所述处理模块对所述第一物理地址表示的内存单元的物理空间进行访问之前,还用于:
根据所述共享虚拟地址划分信息确定所述第一虚拟地址对应的处理单元;所述第一虚拟地址是所述对应的处理单元的共享虚拟地址空间中的虚拟地址;
在所述第一虚拟地址对应的处理单元是是所述服务端和/或第二设备端的处理单元时,将所述第一内存访问指令中的第一虚拟地址更改为所述第一物理地址,并在所述第一内存访问指令中添加第一标记,生成所述第二内存访问指令;
其中,所述服务端的处理单元和所述设备端的处理单元各自具有标记,所述第一标记是所述第一虚拟地址对应的处理单元的标记。
17.根据权利要求16所述的方法,其特征在于,其中,所述处理单元通过总线互联;
所述处理模块对所述第一物理地址表示的内存单元的物理空间进行访问之前,还用于:
根据所述第一标记将所述第二内存访问指令发送到所述总线的端口;所述处理单元与所述总线的端口建有连接;
按照所述第一标记路由所述第二内存访问指令第二内存访问指令。
18.根据权利要求17所述的方法,其特征在于,其中,所述处理模块按照所述第一标记路由所述第二内存访问指令之前,还用于:
在所述第二内存访问指令中添加所述第一设备端的处理单元的标记。
19.一种电子设备,其特征在于,包括:
至少一个存储器,用于存储程序;
至少一个处理器,用于执行所述存储器存储的程序;
其中,当所述存储器存储的程序被执行时,所述处理器用于执行如权利要求1-9任一所述的方法。
20.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,当所述计算机程序在处理器上运行时,使得所述处理器执行如权利要求1-9任一所述的方法。
21.一种计算机程序产品,其特征在于,当所述计算机程序产品在处理器上运行时,使得所述处理器执行如权利要求1-9任一所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310129017.6A CN118467410A (zh) | 2023-02-07 | 2023-02-07 | 一种共享虚拟内存管理方法及装置 |
PCT/CN2024/071381 WO2024164780A1 (zh) | 2023-02-07 | 2024-01-09 | 一种共享虚拟内存管理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310129017.6A CN118467410A (zh) | 2023-02-07 | 2023-02-07 | 一种共享虚拟内存管理方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN118467410A true CN118467410A (zh) | 2024-08-09 |
Family
ID=92169906
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310129017.6A Pending CN118467410A (zh) | 2023-02-07 | 2023-02-07 | 一种共享虚拟内存管理方法及装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN118467410A (zh) |
WO (1) | WO2024164780A1 (zh) |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8719547B2 (en) * | 2009-09-18 | 2014-05-06 | Intel Corporation | Providing hardware support for shared virtual memory between local and remote physical memory |
US9086989B2 (en) * | 2011-07-01 | 2015-07-21 | Synopsys, Inc. | Extending processor MMU for shared address spaces |
CN114385516A (zh) * | 2020-10-21 | 2022-04-22 | 澜起科技股份有限公司 | 计算系统以及用于共享不同计算设备的设备存储器的方法 |
CN117076347A (zh) * | 2022-05-10 | 2023-11-17 | 华为技术有限公司 | 一种内存共享方法以及装置 |
CN114827151B (zh) * | 2022-05-20 | 2024-07-12 | 合肥边缘智芯科技有限公司 | 一种异构服务器集群以及数据转发方法、装置和设备 |
-
2023
- 2023-02-07 CN CN202310129017.6A patent/CN118467410A/zh active Pending
-
2024
- 2024-01-09 WO PCT/CN2024/071381 patent/WO2024164780A1/zh unknown
Also Published As
Publication number | Publication date |
---|---|
WO2024164780A1 (zh) | 2024-08-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8494833B2 (en) | Emulating a computer run time environment | |
US20090271172A1 (en) | Emulating A Computer Run Time Environment | |
EP4407470A1 (en) | Request processing method, apparatus and system | |
CN111679921A (zh) | 内存共享方法、内存共享装置及终端设备 | |
CN110119304B (zh) | 一种中断处理方法、装置及服务器 | |
US10432479B2 (en) | System and method for reducing management ports of a multiple node chassis system | |
CN108268503B (zh) | 一种数据库的存储、查询方法及装置 | |
CN104883302A (zh) | 一种数据包转发的方法、装置及系统 | |
CN107491340A (zh) | 跨物理机的巨型虚拟机实现方法 | |
CN102687126B (zh) | 在多内核环境中有效分配引用的全局唯一标识符 | |
CN104221343A (zh) | 用于在输入/输出设备中使用指派的交换机标识的技术 | |
CN116501666B (zh) | 一种PCIe Switch仿真器的实现方法 | |
CN118467410A (zh) | 一种共享虚拟内存管理方法及装置 | |
WO2023216603A1 (zh) | 一种内存共享方法以及装置 | |
CN113282341A (zh) | 一种业务控制方法、装置、设备和介质 | |
EP3602309B1 (en) | A memory allocation manager and method performed thereby for managing memory allocation | |
WO2021249030A1 (zh) | 随机数序列生成方法和随机数引擎 | |
CN111078132B (zh) | 基于Redis集群的数据均匀缓存方法、装置、终端及存储介质 | |
CN108733678B (zh) | 一种数据搜索的方法、装置和相关设备 | |
CN118426913B (zh) | 用于vDPA内存映射的方法、计算机设备及介质 | |
US12111779B2 (en) | Node identification allocation in a multi-tile system with multiple derivatives | |
CN117834649B (zh) | 数据传输方法及相关装置 | |
US20240126469A1 (en) | Apparatus and method for controlling a pooled memory device or a memory expander | |
CN110059019B (zh) | 一种内存地址的分配方法及装置、计算设备和存储介质 | |
US20240220294A1 (en) | VM Migration Using Memory Pointers |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |