[go: up one dir, main page]

CN120561029A - 内存访问方法、装置、计算机设备及存储介质 - Google Patents

内存访问方法、装置、计算机设备及存储介质

Info

Publication number
CN120561029A
CN120561029A CN202410235135.XA CN202410235135A CN120561029A CN 120561029 A CN120561029 A CN 120561029A CN 202410235135 A CN202410235135 A CN 202410235135A CN 120561029 A CN120561029 A CN 120561029A
Authority
CN
China
Prior art keywords
information
entry
memory
identifier
target
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
Application number
CN202410235135.XA
Other languages
English (en)
Inventor
廖恒
刘荣国
程传宁
黎亮
匡小波
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN202410235135.XA priority Critical patent/CN120561029A/zh
Priority to PCT/CN2025/072312 priority patent/WO2025180121A1/zh
Publication of CN120561029A publication Critical patent/CN120561029A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Bus Control (AREA)

Abstract

本申请公开了一种内存访问方法、装置、计算机设备及存储介质,属于内存管理技术领域。在本申请中,第二设备的内存访问请求包括待访问的目标内存单元的UBA和第一标识,其中,第一标识是第一设备中的目标总线实例的标识,目标总线实例对应第一设备中的第一内存区域。基于此,根据该第一标识来获取目标总线实例对应的第一地址转换信息,进而基于第一地址转换信息和UBA来访问目标内存单元。由此可见,本申请中以访问目的端的总线实例的标识为索引来获取待访问的内存单元的地址转换信息,而访问目的端的总线实例的数量与访问目的端所连接的设备的数量无关,因此,不会受到组网规模的影响,有利于在大规模组网的情况下进行高效的内存访问。

Description

内存访问方法、装置、计算机设备及存储介质
技术领域
本申请涉及内存管理技术领域,尤其涉及一种内存访问方法、装置、计算机设备及存储介质。
背景技术
目前,在计算机设备中,可以通过输入输出内存管理单元(input-output memorymanagement unit,IOMMU)或系统内存管理单元(system memory management unit,SMMU)对外围设备的直接存储访问(direct memory access,DMA)请求或者是远程直接存储访问(remote direct memory access,RDMA)请求中的虚拟地址进行转换,并进行访问权限控制。
相关技术中,计算机设备中存储有自身所连接的已授权的各个外围设备对应的流表入口,该流表入口中存储有外围设备所能访问的内存区域对应的地址转换信息。基于此,IOMMU或SMMU在接收到DMA请求或RDMA请求后,可以以发送请求的外围设备的设备标识为索引来获取该外围设备的流表入口,进而根据该流表入口中存储的地址转换信息来实现对该外围设备的权限控制和地址转换。由此可见,相关技术中,计算机设备要为不同的外围设备分配不同的流表入口,这样,流表入口的数量将受到组网规模的影响,不利于大规模组网下进行高效的内存访问。
发明内容
本申请提供一种内存访问方法、装置、计算机设备及存储介质,可以提高大规模组网下内存访问的效率。
为达到上述目的,本申请采用如下技术方案:
第一方面,提供一种内存访问方法,应用于第一设备,所述方法包括:接收第二设备的内存访问请求,所述内存访问请求包括第一标识和待访问的目标内存单元的统一总线地址UBA,所述第一标识为目标总线实例的标识,所述目标总线实例对应第一内存区域;基于所述第一标识,获取所述目标总线实例对应的第一地址转换信息;基于所述第一地址转换信息和所述UBA访问所述目标内存单元。
其中,目标总线实例对应第一内存区域可以是指目标总线实例是用于访问第一内存区域的总线实例,或者也可以称为目标总线实例是访问第一内存区域的入口。
在本申请中,第二设备的内存访问请求包括待访问的目标内存单元的UBA和第一标识,其中,该第一标识是第一设备中的目标总线实例的标识,而目标总线实例对应第一设备中的第一内存区域。基于此,根据该第一标识来获取目标总线实例对应的第一地址转换信息,进而基于第一地址转换信息和UBA来访问目标内存单元。由此可见,本申请中第二设备通过所要访问的目的端的总线实例的标识可以获取到该总线实例对应的内存区域的地址转换信息,无需以第二设备的标识为索引来获取地址转换信息。在此基础上,由于目的端的总线实例的数量与目的端的内存区域的划分数量是相关的,而与该目的端所连接的设备的数量是无关的,因此,相较于以设备为索引访问内存的方法,不会存在由于设备的数量较多,流表入口也较多的问题,由此可见,本申请实施例提供的内存访问方法不会受到目的端所连接的设备数量的影响,也即不受组网规模的影响,有利于在大规模组网的情况下进行高效的内存访问。
可选地,所述第一设备包括第一控制器,控制器具体可以为UB控制器,也可以其它标准架构的控制器,所述第一控制器包括至少一个总线实例,所述至少一个总线实例包括所述目标总线实例。
可选地,所述第一设备包括N个控制器,控制器具体可以为UB控制器,所述目标总线实例包括所述N个控制器,所述N为正整数。
在本申请中,总线实例是基于第一设备中的控制器来获得的,由此可见,总线实例的数量与第一设备中的控制器相关,也即,总线实例的数量不会受到第一设备连接的设备的数量的影响。在此基础上,以总线实例的标识为索引来获取地址转换信息,有利于大规模组网的情况下进行高效的内存访问。
另外,在本申请中,可以将多个控制器作为一个总线实例,这样,通过该多个控制器可以访问该总线实例对应的内存区域,实现了访存的多平面。
可选地,所述第一内存区域为分配给所述第一设备中的第一实体的内存区域,所述第一实体为所述第一设备上运行的主机操作系统或虚拟实例。
在本申请中,目标总线实例对应的第一内存区域为第一实体所使用和管理的内存区域,而目标总线实例对应第一内存区域,因此可见,目标总线实例实际上是分配给第一实体的总线实例,也即,目标总线实例是用于访问第一实体所使用和管理的第一内存区域的总线实例。
其中,第一实体可以为第一设备上运行的主机操作系统或虚拟实例。由此可见,目标总线实例可以分配给主机操作系统使用,也可以分配给虚拟实例使用。并且,在本申请中,一个总线实例分配给一个实体使用,在这种情况下,当第一设备中运行有多个虚拟实例时,不同的虚拟实例对应的总线实例不同。在此基础上,基于总线实例的标识来获取地址转换信息,可以实现不同的虚拟实例之间的地址转换信息的隔离。
可选地,所述基于所述第一地址转换信息和所述UBA访问所述目标内存单元的实现过程可以包括:从所述第一地址转换信息中查找所述UBA对应的物理地址;若查找到所述UBA对应的物理地址,则基于所述UBA对应的物理地址访问所述目标内存单元,其中,第一内存区域包括目标内存单元。
在本申请中,在基于目标总线实例的标识查找到对应的第一地址转换信息之后,如果在该第一地址转换信息中可以查找到UBA对应的物理地址,则说明目标内存单元即为目标总线实例对应的第一内存区域中的内存单元,在这种情况下,可以基于该物理地址来访问目标内存单元。如果查找不到UBA对应的物理地址,则说明UBA可能有误或者是目标内存单元可能并不属于该第一内存区域,此时,则对目标内存单元的访问失败。
可选地,所述内存访问请求还包括第一令牌标识;所述基于所述第一标识,获取所述目标总线实例对应的第一地址转换信息的实现过程可以包括:基于所述第一标识,获取所述目标总线实例对应的第一配置表的入口信息,所述第一配置表包括与多个令牌标识一一对应的多个表项,每个表项用于存储对应的令牌标识所对应的地址转换表的入口信息;基于所述第一配置表的入口信息,确定所述第一配置表;从所述第一配置表中查找所述第一令牌标识对应的第一表项;基于所述第一表项中存储的地址转换表的入口信息,获取所述第一地址转换信息。
在本申请中,第一令牌标识可以是第一设备为第二设备预先分配的用于访问该目标内存单元的标识。在此基础上,以目标总线实例的标识作为查找地址转换信息的第一级入口,以第一令牌标识作为查找地址转换信息的第二级入口,如此,在查找地址转换信息的同时,实现了对设备的权限控制。
可选地,所述内存访问请求还包括第二访问权限信息,所述第一配置表中的每个表项还用于存储对应的令牌标识所对应的访问权限表的入口信息,所述方法还包括:基于所述第一表项中存储的访问权限表的入口信息,获取第一访问权限信息;基于所述第一访问权限信息对所述第二访问权限信息进行验证;若对所述第二访问权限信息的验证通过,则执行所述基于所述第一地址转换信息和所述UBA访问所述目标内存单元的步骤。
在本申请中,内存访问请求中还可以包括第二访问权限信息,在此基础上,第一令牌标识对应的第一表项中还存储有第一设备与第二设备分配的用于访问目标内存单元的第一访问权限信息,在此基础上,通过比较第一访问权限信息和第二访问权限信息,以此来进一步对第二设备进行访问权限的验证,提高内存访问的安全性。
可选地,所述方法还包括:获取所述第一标识;基于所述第一标识,存储所述第一配置表的入口信息;向所述第二设备发送所述第一标识。
在本申请中,第一设备可以获取目标总线实例的标识,并基于该目标总线实例的标识来配置目标总线实例对应的第一内存区域的地址转换信息所对应的入口信息,之后,向第二设备发送该目标总线实例的标识,以便第二设备能够基于该目标总线实例的标识来访问第一内存区域。
可选地,所述方法还包括:接收所述第二设备的内存申请,所述内存申请包括所述第一标识和所述目标内存单元的UBA;基于所述目标内存单元的UBA获取所述第一令牌标识;基于所述目标内存单元的UBA,确定第一地址转换表,所述第一地址转换表包括用于将所述目标内存单元的UBA转换为对应的物理地址的地址转换信息;基于所述第一标识,在所述第一配置表中为所述第一令牌标识分配对应的第一表项,并在所述第一表项中写入所述第一地址转换表的入口信息;向所述第二设备发送所述第一令牌标识。
在本申请中,第一设备在接收到第二设备的内存申请之后,基于该内存申请中的目标总线实例的标识,来为第二设备分配第一令牌标识,并根据第二设备申请的目标内存单元的UBA,来确定第一地址转换表,之后,在第一标识对应的第一配置表中为第一令牌标识分配用于存储第一地址转换表的入口信息的表项,以此来实现对目标内存单元的UBA的地址转换信息的配置。
可选地,所述方法还包括:为所述第二设备分配第一访问权限信息;确定第一访问权限表,所述第一访问权限表包括所述第一访问权限信息;在所述第一表项中写入所述第一访问权限表的入口信息;向所述第二设备发送所述第一访问权限信息。
在本申请中,第一设备还可以在第一令牌标识对应的表项中写入为第二设备分配的第一访问权限信息的入口信息,以便后续第二设备访问第一设备的内存时,可以基于第一令牌标识来查找访问权限信息,以对第二设备进行访问权限控制。
第二方面,提供一种内存访问装置,所述内存访问装置包括至少一个模块,所述至少一个模块用于执行上述第一方面所述的内存访问方法。
第三方面,提供一种计算机设备,所述计算机设备包括处理器、内存管理单元、控制器和内存,所述内存管理单元和控制器用于执行内存中存储的至少一条程序指令或代码,以实现上述第一方面所述的内存访问方法。这里的内存管理单元可以具体为统一总线内存管理单元(unified bus memory management unit,UMMU),也可以其它标准的内存管理单元,控制器具体可以为UB控制器,也可以其它标准架构的控制器。
第四方面,提供一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当所述指令在计算机设备上运行时,使得所述计算机设备执行上述第一方面所述的内存访问方法。
第五方面,提供了一种包含指令的计算机程序产品,当该计算机程序产品在计算机设备上运行时,使得计算机设备执行上述第一方面所述的内存访问方法。
上述第二方面至第五方面所获得的技术效果与第一方面和第二方面中对应的技术手段获得的技术效果近似,在这里不再赘述。
附图说明
图1为本申请实施例提供的一种内存访问方法所涉及的实施架构图;
图2为本申请实施例提供的另一种内存访问方法所涉及的实施架构图;
图3为本申请实施例提供的又一种内存访问方法所涉及的实施架构图;
图4为本申请实施例提供的一种配置总线实例的标识对应的入口信息和地址转换信息的流程图;
图5为本申请实施例提供的一种目标总线实例和对应的第一实体的示意图;
图6为本申请实施例提供的另一种目标总线实例和对应的第一实体的示意图;
图7为本申请实施例提供的一种内存访问方法的流程图;
图8为本申请实施例提供的一种基于总线实例的标识和令牌标识来获取地址转换信息和访问权限信息的示意图;
图9为本申请实施例提供的一种多个UB设备通过本申请实施例提供的内存访问方法来访问第一设备的内存的效果图;
图10为本申请实施例提供的一种内存访问装置的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
在对本申请实施例进行详细的解释说明之前,先对本申请实施例涉及的应用场景进行介绍。
目前,在诸如计算快速链接(compute express link,CXL)、高速外围器件互联(peripheral component interconnect express,PCIe)等总线体系中,设备的连接架构采用的是主从架构。在这种情况下,主机可以扫描自身连接的设备,并在扫描通过后为设备分配对应的标识。之后,主机可以基于不同的设备的标识来创建对应的流表入口,这样,后续主机的IOMMU或SMMU在接收到某个设备的访问主机的内存的请求后,可以以该请求中携带的该设备的标识为索引来访问对应的流表入口,以获得相应的地址转换信息,从而实现设备对主机内存的访问。
然而,在UB体系中,通过UB互联的各个设备之间的关系是对等的,例如,主机的CPU通过UB与UB设备连接,此时,主机的CPU和UB设备之间的关系是对等的,不存在从属关系。在UB体系提供的这种对等架构下,通过UB互联的设备规模将扩大。在此基础上,如果仍然为不同的设备分配不同的标识并基于设备的标识来创建流表入口,则会导致流表入口的数量较多,从而导致内存访问效率降低。由此可见,在UB体系中,为不同的设备分配不同的流表入口的方式无法支持大规模组网下的高效内存访问。基于此,本申请实施例提供了一种内存访问方法,在该方法中,以设备所要访问的目的端的总线实例的标识为入口来获取地址转换信息,而目的端的总线实例的数量不会受到组网规模的影响,因此,有利于在大规模组网的情况下进行高效的内存访问。
接下来对本申请实施例提供的内存访问方法所涉及的实施架构进行介绍。
本申请实施例提供的内存访问方法可以应用于集成有UB设备的计算机设备中。示例性的,参见图1,该计算机设备10可以包括第一设备和第二设备,其中,第一设备包括处理器101、内存102、UMMU 103、内部系统总线104和UB控制器105,第二设备包括UB交换设备106、UB设备107和UB 108。此时,该计算机设备10可以称为一个超级计算机设备。其中,处理器101、内存102和UMMU103可以通过内部系统总线104进行连接。另外,UMMU103与UB控制器105、UB控制器105与UB交换设备106以及UB交换设备106与UB设备107之间可以通过UB108连接。需要说明的是,图1示出的设备结构并不构成对计算机设备的限定,计算机设备可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置,本申请实施例对此不进行限定。下面结合图1对计算机设备的各个构成部件进行详细的介绍:
处理器101是该计算机设备的控制中心,可以是一个处理器,也可以是多个处理元件的统称。例如,处理器101可以是一个通用中央处理器(central processing unit,CPU),或特定应用集成电路(application-specific integrated circuit,ASIC),或一个或多个用于控制本申请方案程序执行的集成电路,例如:一个或多个微处理器(digital signalprocessor,DSP),或,一个或者多个现场可编程门阵列(field programmable gate array,FPGA)。其中,处理器101可以通过运行或执行存储在内存102内的软件程序,以及调用存储在内存102内的数据,执行计算机设备的各种功能。
作为一种实施例,处理器101可以包括一个或多个CPU。
作为一种实施例,计算机设备可以包括多个处理器。这些处理器中的每一个可以是一个单核(single-CPU)处理器,也可以是一个多核(multi-CPU)处理器。这里的处理器可以指一个或多个设备、电路、和/或用于处理数据(例如计算机程序指令)的处理核。
内存102是与处理器101直接交换数据的内部存储器,该内存102可以是只读存储器(read-only memory,ROM)或可存储静态信息和指令的其它类型的静态存储设备,随机存取存储器(random access memory,RAM))或者可存储信息和指令的其它类型的动态存储设备,也可以是电可擦可编程只读存储器(electrically erasable programmable read-only memory,EEPROM)、只读光盘(compact disc read-only memory,CD-ROM)或其它光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其它磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其它介质,但不限于此。其中,内存102用于存储执行本申请实施例提供的方案的软件程序,并由UMMU104和处理器101来控制执行。
UMMU103用于基于本申请实施例提供的内存访问方法,对UB设备107的内存访问请求中携带的待访问数据的地址进行翻译。除此之外,UMMU103还可以用于将UB设备107的内存访问请求限制在该UB设备所对应的虚拟实例的物理地址空间内,实现虚拟实例的地址隔离。其中,虚拟实例可以为运行于计算机设备中的虚拟机、容器等。
内部系统总线104用于在处理器101、内存102和UMMU103等计算机设备的内部组件之间传递信息。其中,该内部系统总线104可以是片上网络(network on chip,NoC)总线、高级微控制器总线架构(advanced microcontroller bus architecture,AMBA)总线等。
UB控制器105是UB108的操作入口,用于提供数据加载和存储、消息收发、硬件系统中的热插拔事件、功耗管理等接口。其中,计算机设备10中可以包括一个或多个UB控制器105。
需要说明的是,在本申请实施例中,计算机设备10可以基于UB控制器105来创建总线实例,并生成总线实例的标识。其中,总线实例的标识可以用于唯一标识该总线实例,是该总线实例的身份标识。例如,总线实例的标识可以为UB实体标识(entity identifier,EID),所谓UB EID是指UB系统中参与通信的实体的身份标识。一个总线实例可以分配给计算机设备10中的一个实体来使用,例如,可以分配给计算机设备10的主机操作系统使用,或者是分配给运行于该计算机设备10上的一个虚拟实例使用。相应的,一个总线实例将与对应的实体所管理和使用的内存区域唯一对应。并且,本申请实施例中将总线实例的标识作为UMMU103查找地址转换信息的索引,从而实现内存访问时的地址转换。
作为一种示例,计算机设备10中包括N个UB控制器,可以将该N个UB控制器作为一个总线实例,并根据该N个UB控制器的全局唯一标识(globally unique identifier,GUID)来生成用于标识该总线实例的标识。其中,N为正整数。例如,可以将N个UB控制器中的某个UB控制器的GUID的类型域段的取值进行修改后作为该总线实例的标识。或者,也可以利用生成GUID的算法生成一个新的GUID作为该总线实例的标识。需要说明的是,在将多个UB控制器作为一个总线实例的情况下,使用该总线实例的实体将可以同时利用该多个UB控制器的物理带宽。
作为另一种示例,对于任一个UB控制器,计算机设备10可以通过虚拟化软件栈对该UB控制器进行虚拟化得到至少一个虚拟控制器。其中,每个虚拟控制器可以作为一个总线实例,分配给该计算机设备10上运行的一个虚拟实例来使用。在这种情况下,总线实例的标识可以是通过当前生成全局唯一标识的方法生成的。
UB交换设备106具备路由功能,主要用于扩展UB的端口数量,提供枚举UB设备、建立UB设备的路由关系的接口。需要说明的是,在一些可能的实现方式中,计算机设备10也可以不包括UB交换设备106,在这种情况下,UB设备107可以直接连接UB控制器105。也即,在图1的示例中,UB交换设备106为一个可选的设备。
UB设备107可以为计算机设备10提供扩展功能服务。例如,UB设备107可以为计算机设备10提供扩展的存储资源、网络资源等。例如,UB设备107可以为网卡、磁盘、数据处理单元(data processing unit,DPU)、图形处理单元(graphics processing unit,GPU)等。
UB108用于在UMMU103、UB控制器105、UB交换设备106和UB设备107之间传送信息。
在另一种可能的实现方式中,参见图2,本申请实施例提供的内存访问方法也可以应用于包括有计算机设备20和位于计算机设备外部的UB设备21在内的系统中。也即,UB设备21也可以独立于计算机设备20,位于计算机设备20的外部或远端。示例性的,参见图2,计算机设备20可以通过位于计算机设备20外部的UB交换设备22和UB23与UB设备21连接。在这种情况下,该UB设备21在地位上等同于一个主机。当该UB设备21访问计算机设备20的内存时,计算机设备20的UMMU即可以通过本申请实施例提供的内存访问方法来对该UB设备21所要访问的地址进行转换。其中,计算机设备20的内部结构中的各个组件可以参考计算机设备10中相应组件的介绍。
在又一种可能的实现方式中,本申请实施例提供的内存访问方法还可以应用于包括多个计算机设备的集群中。例如,参见图3,该集群中可以包括计算机设备30和计算机设备31,其中,计算机设备30和计算机设备31的结构可以参考图1所示的计算机设备10。在这种情况下,当计算机设备31中集成的UB设备例如UB设备311想要访问计算机设备30的内存时,计算机设备30的UMMU可以通过本申请实施例提供的内存访问方法来对UB设备311所要访问的内存区域的UBA进行转换。或者,当计算机设备30中集成的UB设备例如UB设备301想要访问计算机设备31的内存时,计算机设备31的UMMU也可以通过本申请实施例提供的内存访问方法来对UB设备301所要访问的内存区域的UBA进行转换。
需要说明的是,上述的计算机设备可以是一个通用计算机设备或者是一个专用计算机设备。例如,可以是台式机、便携式电脑、网络服务器等,本申请实施例对此不作限定。
上文中主要介绍了内存访问方法应用于UB系统时的三种示例性的系统架构图,在一些可能的实现方式中,本申请实施例提供的内存访问方法也可以适用于采用其他总线协议的计算机系统中,例如,也可以适用于PCIe系统、CXL系统等。下文中主要以该内存访问方法应用于UB系统为例来对具体的实现过程进行介绍,其它系统架构的实现过程和下面的具体例子是类似的。
在本申请实施例中,计算机设备中的UMMU可以以该计算机设备中的总线实例的标识为索引来获取地址转换信息,以实现地址转换,而一个总线实例可以分配给计算机设备中的一个实体来使用。在此基础上,以一个总线实例的标识为入口所能获取到的地址转换信息即为使用该总线实例的实体所管理的内存区域的地址转换信息。基于此,在对本申请实施例提供的内存访问方法进行详细的解释说明之前,首先对第一设备配置总线实例的标识对应的入口信息以及地址转换信息的过程进行介绍,其中,该第一设备可以为图1所示的超级计算机设备10中包括的第一设备,相应的,下述实施例中的第二设备可以为图1所示的超级计算机设备10中的第二设备,或者第一设备也可以为图2所示的计算机设备20,相应的,第二设备即为图2所示的UB设备21,或者,第一设备也可以为图3所示的计算机设备30,相应的,第二设备为图3所示的计算机设备31中的任一个UB设备,或者,第一设备为图3所示的计算机设备31,相应的,第二设备可以为图3所示的计算机设备30中的任一个UB设备。示例性的,参见图4,该过程可以包括以下步骤:
步骤401:获取第一标识。
在本申请实施例中,第一设备可以包括至少一个UB控制器,基于该至少一个UB控制器,第一设备可以获得至少一个总线示例,并生成每个总线实例的标识。
作为一个示例,第一设备包括第一UB控制器。第一设备可以将第一UB控制器进行虚拟化,从而得到至少一个虚拟控制器,将每个虚拟控制器作为一个总线实例,此时,该第一UB控制器将包括至少一个总线实例。在这种情况下,对于第一UB控制器包括的至少一个总线实例,第一设备可以根据该第一UB控制器的GUID来生成用于标识各个总线实例的标识。例如,可以将第一UB控制器的GUID的类型域段的值进行修改,从而得到总线实例的标识。或者,第一设备也可以直接生成新的GUID来作为总线实例的标识。
作为另一个示例,第一设备包括N个UB控制器,其中,N为正整数。第一设备可以将该N个UB控制器作为一个总线实例,此时,该总线实例包括N个UB控制器。在这种情况下,第一设备可以根据该N个UB控制器中的任一个UB控制器的GUID来生成该总线实例的标识,或者是,可以直接生成一个新的GUID来作为该总线实例的标识。
第一设备在创建第一实体后,UMMU可以从当前还未分配给其他实体的总线实例中选择目标总线实例,并获取该目标总线实例的标识,也即第一标识。此时,该目标总线实例即为分配给该第一实体使用的总线实例。
作为一种示例,当该第一实体为第一设备的主机操作系统时,UMMU可以将包括一个或多个UB控制器的总线实例作为目标总线实例分配给主机操作系统使用。例如,参见图5,第一设备中包括两个UB控制器,这两个UB控制器可以作为一个总线实例分配给第一设备的主机操作系统使用。
作为另一种示例,当该第一实体为第一设备上运行的虚拟实例时,UMMU可以选择一个虚拟控制器作为目标总线实例。例如,参见图6,第一设备中包括一个UB控制器,第一设备对该UB控制器进行虚拟化,得到两个虚拟控制器,分别为vcontroller1和vcontroller2,在这种情况下,在创建虚拟机1和虚拟机2之后,可以将vcontroller1作为总线实例1分配给为虚拟机1使用,将vcontroller2作为总线实例2分配给为虚拟机2使用。
步骤402:基于第一标识,存储第一配置表的入口信息。
在获取到第一标识之后,UMMU可以在第二配置表中为第一标识分配对应的第二表项。其中,第二配置表包括第一设备中各个总线实例的标识所对应的表项。第一标识对应的第二表项用于存储目标总线实例对应的第一配置表的入口信息。其中,该第一配置表用于存储该目标总线实例对应的第一内存区域的地址转换信息的入口信息,而该第一内存区域即为使用该目标总线实例的第一实体所管理并使用的内存区域。除此之外,第一配置表还可以用于存储该第一内存区域的访问权限信息的入口信息。需要说明的是,在本申请实施例中,某项信息的入口信息可以用于指示该项信息的存储位置,例如,可以包括存储该项信息的存储区域的物理地址。物理地址是指内部存储器等硬件存储设备实际所具有的地址空间中的某个地址。
在一种可能的实现方式中,第二配置表中包含的各个表项的地址是连续的,在这种情况下,UMMU可以从指定寄存器中读取第二配置表的基地址。之后,UMMU可以基于该第二配置表的基地址、每个总线实例的标识对应的表项的大小以及该第一标识,确定第一标识对应的物理地址。之后,将该第一标识对应的物理地址处的表项作为第二表项,其中,该第一标识对应的物理地址即为第二表项的基地址。其中,基地址也可以称为起始物理地址。
需要说明的是,在第二配置表中,各个总线实例的标识对应的表项可以按照各个总线实例的标识从小到大的顺序依次排列,并且,每个表项的大小可以相等。基于此,UMMU可以根据第一标识在多个总线实例的标识中的排序以及第二配置表中的表项的大小来计算地址偏移量,之后,基于第二配置表的基地址和该地址偏移量来确定第一标识对应的物理地址。
例如,第一设备中有10个总线实例,假设按照各个总线实例的标识从小到大的顺序,第一标识为10个标识中的第5个标识,则可以将第二配置表中的表项的大小乘以4,得到地址偏移量,进而将第二配置表的基地址和该地址偏移量相加,得到第一标识对应的物理地址。
在另一种可能的实现方式中,第二配置表中包含的各个表项的地址可以是不连续的,基于此,UMMU可以将该第二配置表中的任一个未分配的表项作为第一标识所对应的第二表项,并在指定寄存器中存储该第二表项的物理地址。在这种情况下,如果指定寄存器中还存储有其他总线实例的标识对应的表项的物理地址,则可以按照各个总线实例的标识从小到大或从大到小的顺序来存储相应的标识所对应的表项的物理地址。
在为第一标识分配对应的第二表项之后,UMMU还可以对该第二表项进行初始化。
由前述介绍可知,第二表项是用于存储目标总线实例对应的第一配置表的入口信息的表项。基于此,作为一种示例,UMMU可以申请用于存储目标总线实例对应的第一配置表的第二内存区域,并基于该第二内存区域,来确定第一配置表的入口信息。之后,UMMU可以将该第一配置表的入口信息写入至第二表项,以实现对第二表项的初始化。
例如,UMMU可以获取第二内存区域的起始物理地址,将该第二内存区域的起始物理地址作为第一配置表的入口信息写入至第二配置表中的第二表项。
可选地,UMMU在第二表项中写入第一配置表的入口信息之后,还可以在第二表项中为该第一配置表的入口信息设置用于指示该第一配置表的入口信息是否已生效的标识符。由于UMMU才为第一标识分配了第二表项,当前还未创建第一配置表,因此,可以为当前的第一配置表的入口信息设置第一标识符,以指示该第一配置表的入口信息还未生效。这样,如果当前接收到来自某个UB设备的包含有第一标识的内存访问请求,则基于该第一标识符可以确定出第一配置表的入口信息还未生效,在这种情况下,UMMU可以结束操作,从而可以避免继续基于该第一配置表的入口信息来获取地址转换信息而导致访问出错。
作为另一种示例,第二表项不仅可以用于存储第一配置表的入口信息,还可以用于存储第一内存区域的地址转换信息或者是访问权限信息的其他属性信息。例如,第二表项还可以用于存储使用该目标总线实例的第一实体的地址转换模式,该地址转换模式可以用于指示UB设备在访问该第一实体所管理的第一内存区域时所需的地址转换阶段。例如,当该第一实体为虚拟机时,地址转换模式可以包括两个地址转换阶段,分别为stage1和stage2。其中,在stage1,进行客户虚拟地址(guest virtual address,GVA)到客户物理地址(guest physical address,GPA)的转换,在stage2,进行GPA到主机物理地址(hostphysical address,HPA)的转换。当该第一实体为主机操作系统时,地址转换模式可以包括stage2,在stage2,进行输入输出虚拟地址(input output virtual address,IOVA)到物理地址(physical address,PA)的转换。基于此,UMMU还可以确定使用该目标总线实例的第一实体的地址转换模式,进而在第二表项中写入用于指示该地址转换模式的指示信息,以实现对该第二表项的初始化。
上述是本申请实施例给出的对第二表项进行初始化的两种可能的示例,在第二表项还存储其他信息的情况下,UMMU还可以对第二表项中可能存储的其他信息进行初始化,本申请实施例对此不再赘述。
步骤403:向第二设备发送第一标识。
第一设备在获取到第一标识之后,可以向包括第二设备在内的至少一个UB设备发送该第一标识。其中,该至少一个UB设备可以是使用目标总线实例的第一实体所对应的UB设备。换句话说,对于第一标识所标识的目标总线实例,可以有至少一个UB设备通过该目标总线实例来访问该目标总线实例对应的第一内存区域。
例如,当第一实体为虚拟机、容器之类的虚拟实例时,该至少一个UB设备可以是该虚拟实例所对应的UB设备。
在通过上述方式为第一标识分配第二表项,并向第二设备发送第一标识之后,如果第二设备要访问第一实体所管理的第一内存区域中的目标内存单元,则该第二设备可以向第一设备发送内存申请,相应地,第一设备可以执行下述步骤404至407,以此来实现第一配置表以及包含有目标内存单元的地址转换信息的第一地址转换表的配置。
步骤404:接收第二设备的内存申请,该内存申请包括第一标识和目标内存单元的UBA。
在本申请实施例中,第二设备在接收到第一设备发送的第一标识之后,如果第二设备想要使用第一实体所管理的第一内存区域中的目标内存单元,则第二设备可以向第一设备发送内存申请,以此来申请目标内存单元,相应地,第一设备接收该内存申请。
其中,该内存申请包括第一标识和目标内存单元的UBA。需要说明的是,UBA是指数据使用者对数据所有者进行内存访问操作时所使用的数据的索引。其中,UBA是一个虚拟地址,所谓虚拟地址是指对物理地址进行重新映射后,以提供给应用程序或虚拟实例所使用的地址。具体的,UBA可以为GVA或者GPA或者是IOVA。其中,GPA可以是指主机对物理地址进行映射后,以提供给虚拟机的操作系统所使用的地址,GVA可以是指虚拟机的操作系统对GPA进行再次映射后,以提供给该虚拟机上的应用程序所使用的地址,IOVA可以是指主机对物理地址进行映射后,以提供给IO设备所使用的地址。
另外,值得注意的是,在本申请实施例中,由前述介绍可知,一个总线实例可以分配给一个实体使用,在这种情况下,该总线实例将与该实体所管理和使用的内存区域唯一对应。而不同的总线实例对应的不同的内存区域中的内存单元可能对应有相同的UBA。
步骤405:基于目标内存单元的UBA获取第一令牌标识。
第一设备在接收到第二设备的内存申请之后,可以在内核态为第二设备确定目标内存单元对应的第一令牌标识。之后,将该第一令牌标识和内存申请中所携带的第一标识、目标内存单元的UBA发送至UMMU,以供UMMU进行第一配置表以及地址转换表等信息的配置。相应的,UMMU接收第一标识和第一令牌标识。
需要说明的是,在一些可能的场景中,不同的UB设备可能会申请相同的内存单元。在这种情况下,在一种可能的实现方式中,针对一块内存单元,为不同的UB设备确定的该内存单元的令牌标识可以不同,这样,一个内存单元可能对应有多个令牌标识。基于此,针对第二设备发送的内存申请,第一设备可以在内核态直接为第二设备生成用于访问该目标内存单元的第一令牌标识。
作为一种示例,第一设备可以基于最近一次为UB设备生成的令牌标识,生成第一令牌标识。例如,可以将最近一次为UB设备生成的用于访问第一实体所管理的内存单元的令牌标识加指定数值,得到第一令牌标识。例如,指定数值为1,最近一次为UB设备分配的令牌标识为001,则第一令牌标识可以为002。如此,任一个令牌标识的数值大小可以指示出该令牌标识在第一实体所管理的第一内存区域对应的多个令牌标识中的排序位置。
在另一种可能的实现方式中,针对一块内存单元,为不同的UB设备确定的该内存单元的令牌标识可以是相同的,这样,一个内存单元对应一个令牌标识。在这种情况下,第一设备在接收到第二设备发送的内存申请时,可以首先检测是否已经存在目标内存单元对应的第一令牌标识。若还未有其他UB设备申请过该目标内存单元,则第一设备中将不存在该目标内存单元对应的第一令牌标识,因此,第一设备可以在内核态生成第一令牌标识。如果已经有其他UB设备申请过该目标内存单元,则该第一设备中将存在该目标内存单元对应的第一令牌标识,第一设备可以获取第一令牌标识。
作为一种示例,在一个内存单元对应一个令牌标识的情况下,第一设备可以根据目标内存单元在第一实体所管理的第一内存区域所包括的多个内存单元中的位置来生成第一令牌标识。也即,第一令牌标识可以用于指示目标内存单元在该多个内存单元中的位置。例如,目标内存单元为第一实体所管理的多个内存单元中的第1个内存单元,则生成的第一令牌标识可以为001,若目标内存单元为第一实体所管理的多个内存单元中的第2个内存单元,则生成的第一令牌标识可以为002。或者,第一设备也可以参考前述介绍的方式,基于最近一次生成的令牌标识,来生成第一令牌标识。在这种情况下,任一个令牌标识的数值大小可以指示出该令牌标识在第一实体所管理的第一内存区域对应的多个令牌标识中的排序位置。
可选地,第一设备还可以在用户态下为第二设备分配用于访问该目标内存单元的第一访问权限信息,并将该第一访问权限信息发送至UMMU。
需要说明的是,如果为不同的UB设备分配的用于访问同一个内存单元的令牌标识不同,则为不同的UB设备分配的对同一个内存单元的访问权限信息可以部分相同、部分不同或者全部不同。如果为不同的UB设备分配的用于访问同一个内存单元的令牌标识相同,则为不同的UB设备分配的对该内存单元的访问权限信息相同。
示例性的,第一访问权限信息可以包括第二设备用于访问该目标内存单元的第一令牌值。可选地,第一访问权限信息还可以包括第二设备对该目标内存单元的操作权限信息。例如,该操作权限信息可以为读权限、写权限或者是读写权限。
步骤406:基于目标内存单元的UBA,确定第一地址转换表,该第一地址转换表包括用于将目标内存单元的UBA转换为对应的物理地址的地址转换信息。
UMMU在接收到第一令牌标识、第一标识和目标内存单元的UBA之后,首先可以检测是否已经存在包含有目标内存单元的UBA对应的地址转换信息的第一地址转换表。如果不存在第一地址转换表,则UMMU可以创建第一地址转换表,并执行下述步骤407。可选地,如果已经存在第一地址转换表,则UMMU可以直接执行下述步骤407。或者,UMMU也可以不检测是否已经存在包含有目标内存单元的UBA对应的地址转换信息的第一地址转换表,而是直接创建第一地址转换表。其中,目标内存单元的UBA对应的地址转换信息可以包括用于将目标内存单元的UBA转换为对应的物理地址的信息。
需要说明的是,在创建第一地址转换表的情况下,UMMU可以首先创建一个空的第一地址转换表。之后,UMMU获取目标内存单元的UBA对应的地址转换信息,并将该目标内存单元的UBA对应的地址转换信息写入至该第一地址转换表中。
值得注意的是,由前述步骤402中的介绍可知,第一实体的地址转换模式可以包括两个地址转换阶段,也可以包括一个地址转换阶段。基于此,在第一实体的地址转换模式包括一个地址转换阶段的情况下,第一地址转换表中将存储有目标内存单元的一个地址转换阶段的地址转换信息。在第一实体的地址转换模式包括两个地址转换阶段的情况下,第一地址转换表可以包括第一子表和第二子表,其中,第一子表用于存储目标内存单元的stage1的地址转换信息,第二子表用于存储stage2的地址转换信息。
可选地,UMMU也可以在创建空的第一地址转换表之后,暂时不在该第一地址转换表中写入地址转换信息,而是先执行步骤407,并在执行步骤407之后再在该第一地址转换表中写入地址转换信息,本申请实施例对此不作限定。
可选地,在UMMU还接收到第二设备用于访问目标内存单元的第一访问权限信息的情况下,如果为不同的UB设备分配的用于访问同一个内存单元的令牌标识不同,则该UMMU还可以创建第一访问权限表,获取第一访问权限表的基地址,并将该第一访问权限表的基地址作为第一令牌标识对应的访问权限信息的入口信息。其中,该第一访问权限表用于存储第一访问权限信息。
其中,UMMU可以首先创建一个空的第一访问权限表,之后,UMMU可以在该第一访问权限表中写入该目标内存单元的UBA以及对应的第一访问权限信息。
如果为不同的UB设备分配的用于访问同一个内存单元的令牌标识相同,则该UMMU可以首先查找是否已经存在包含有目标内存单元的UBA以及对应的访问权限信息的第一访问权限表,如果不存在第一访问权限表,则UMMU可以参考上述介绍的方法创建第一访问权限表,如果已经存在第一访问权限表,则获取第一访问权限表的基地址,并将该第一访问权限表的基地址作为第一令牌标识对应的访问权限信息的入口信息。
步骤407:基于第一标识,在第一配置表中为第一令牌标识分配对应的第一表项,并在该第一表项中写入第一地址转换表的入口信息。
UMMU在确定出第一地址转换表后,可以基于第一标识,查找第一配置表的入口信息。如果查找到第一配置表的入口信息,则UMMU基于该第一配置表的入口信息查找第一配置表。如果查找到第一配置表,则可以在第一配置表中为第一令牌标识分配对应的第一表项,并在该第一表项中写入第一令牌标识所标识的目标内存单元对应的地址转换信息的入口信息。其中,第一配置表包括为不同的令牌标识分配的表项,且不同的令牌标识对应的表项中存储有相应地令牌标识所标识的内存单元对应的地址转换信息的入口信息。需要说明的是,由于令牌标识实际上标识了一个内存单元,所以令牌标识对应的地址转换信息实际上就是该令牌标识所标识的内存单元对应的地址转换信息。
在第一种情况中,如果第一地址转换表是在为第一标识分配第二表项之后首次创建的地址转换表,则由于第一标识对应的第二表项可能在初始化时写入了第一配置表的入口信息,也可能未写入第一配置表的入口信息,因此,UMMU基于第一标识可能能够查找到第一配置表的入口信息,也可能查找不到。基于此,如果UMMU根据第一标识查找到第一配置表的入口信息,由于该第一配置表的入口信息能够指示出存储第一配置表的第二内存区域的位置,因此,UMMU可以在该第一配置表的入口信息所指示的第二内存区域创建一个包括空表项的第一配置表,之后,在该第一配置表中为第一令牌标识分配对应的第一表项,并在第一表项中写入目标内存单元对应的地址转换信息的入口信息。其中,UMMU可以通过以下三种方式来为第一令牌标识分配对应的第一表项。
方式一:UMMU可以从第一配置表中选择一个空表项作为第一表项,并基于第一地址表获取第一令牌标识所标识的目标内存单元对应的地址转换信息的入口信息,之后,在该第一表项中写入第一令牌标识以及对应的地址转换信息的入口信息。例如,UMMU可以获取第一地址转换表的入口信息,将该第一地址转换表的入口信息作为目标内存单元对应的地址转换信息的入口信息写入至第一表项中。其中,第一地址转换表的入口信息可以为第一地址转换表的基地址。可选地,在第一地址转换表包括第一子表和第二子表的情况下,第一地址转换表的入口信息可以包括第一子表的基地址和第二子表的基地址。
可选地,在UMMU还生成了包含有第一访问权限信息的第一访问权限表的情况下,UMMU还可以在该第一表项中写入第一访问权限信息的入口信息。例如,该第一访问权限信息的入口信息可以为第一访问权限表的入口信息,其中,第一访问权限表的入口信息可以是第一访问权限表的基地址。
方式二:如果第一设备为不同的UB设备分配的用于访问同一个内存单元的令牌标识相同,则UMMU可以在第二内存区域为第一实体所管理的每个内存单元创建一个对应的空表项,从而得到第一配置表,此时,第一配置表包括的空表项的数量就等于第一实体所管理的第一内存区域所包括的内存单元的数量。之后,UMMU可以从该第一配置表中确定目标内存单元对应的空表项,将该空表项作为第一令牌标识对应的第一表项,并在该第一表项中写入目标内存单元对应的地址转换信息的入口信息以及第一访问权限信息的入口信息。
在第一种示例中,如果前述步骤405中是基于内存单元的位置来生成的令牌标识,也即,令牌标识能够指示出对应的内存单元在第一实体所管理的多个内存单元中的位置,则UMMU可以根据目标内存单元在多个内存单元中的位置,从第一配置表中确定该目标内存单元所对应的空表项。
例如,第一令牌标识为002,则说明目标内存单元为第一实体所管理的多个内存单元中的第二个内存单元,UMMU可以将第一配置表中的第二个空表项作为第一令牌标识对应的第一表项。
在第二种示例中,如果令牌标识的数值大小可以指示出该令牌标识在第一实体所管理的第一内存区域对应的多个令牌标识中的排序位置,则UMMU可以基于第一令牌标识的数值大小来从第一配置表中确定该第一令牌标识所指示的排序位置上的表项,该表项即为第一令牌标识对应的表项。例如,该第一令牌标识是为第一实体所管理的内存单元生成的第一个令牌标识,则可以将第一配置表中的第一个空表项作为第一令牌标识对应的第一表项。
方式三:如果第一设备为不同的UB设备分配的用于访问同一个内存单元的令牌标识不同,令牌标识的数值大小可以指示出该令牌标识在第一实体所管理的第一内存区域对应的多个令牌标识中的排序位置,基于此,UMMU可以参考方式二中的相关实现方式来为第一令牌标识分配对应的第一表项。
可选地,如果UMMU根据第一标识未查找到第一配置表的入口信息,则UMMU可以首先为第一配置表申请第二内存区域,之后,根据上述介绍的实现方式在第二内存区域创建第一配置表,并在第一配置表中为第一令牌标识分配第一表项。之后,UMMU可以基于第二内存区域确定第一配置表的入口信息,并根据第一标识,查找对应的第二表项,在第二表项中写入第一配置表的入口信息。
在第二种情况中,如果第一地址转换表不是为第一标识分配第二表项之后首次创建的地址转换表,则为第一配置表分配的第二内存区域中将会存储有已创建的第一配置表,在这种情况下,UMMU基于第一配置表的入口信息将能够查找到第一配置表。在查找到第一配置表之后,可以分以下两种情况来为第一令牌标识分配第一表项。
情况一:如果第一设备为不同的UB设备分配的用于访问同一个内存单元的令牌标识相同,则UMMU可以在第一配置表中查找是否已经存在第一令牌标识对应的第一表项,如果已经存在,则结束操作。如果不存在,则可以为第一令牌标识分配对应的第一表项,并在该第一表项中写入目标内存单元对应的地址转换信息的入口信息和第一访问权限信息的入口信息。
其中,如果UMMU是采用上述的方式一为令牌标识分配的对应的表项,则UMMU可以在第一配置表中查找包含有第一令牌标识的表项,若查找到,则查找到的表项即为第一表项。若未查找到,则说明第一配置表中不存在第一令牌标识对应的第一表项,在这种情况下,UMMU可以参考上述的方式一来为第一令牌标识分配第一表项。
如果UMMU是采用上述的方式二来为令牌标识分配的对应的表项,则UMMU可以参考上述方式二中为第一令牌标识分配第一表项的方法,在第一配置表中查找第一令牌标识所对应的第一表项,并检测第一表项是否为空表项,如果为空表项,则在该空表项中写入第一令牌标识对应的地址转换信息和第一访问权限信息的入口信息。如果不为空表项,则UMMU可以结束操作。
情况二:如果第一设备为不同的UB设备分配的用于访问同一个内存单元的令牌标识不同,则UMMU可以参考上述的方式一或方式三,为第一令牌标识分配第一表项。
在创建第一配置表之后,UMMU在接收到第一设备为不同的UB设备分配的令牌标识时,均可以参考上述步骤406介绍的方法来确定相应UB设备所申请的内存单元的地址转换表和访问权限表,并通过上述步骤407中介绍的方式在第一配置表中为该UB设备的令牌标识分配对应的表项。如此,第一配置表中将包含有为各个UB设备分配的令牌标识所对应的表项,而各个令牌标识所对应的表项中存储的是相应的令牌标识所标识的内存单元的地址转换信息和访问权限信息的入口信息。其中,如果为不同的UB设备分配的用于访问同一个内存单元的令牌标识相同,则该令牌标识对应的表项中将存储有这些UB设备对应的相同的地址转换信息和访问权限信息的入口信息。如果为不同的UB设备分配的用于访问同一个内存单元的令牌标识不同,则由于不同的UB设备访问的是同一个内存单元,同一个内存单元具有相同的地址转换信息,所以,用于访问同一个内存单元的不同的令牌标识对应的不同的表项中的地址转换信息的入口信息可以是相同的,但是,由于不同的UB设备对同一个内存单元的访问权限信息可能不同,所以用于访问该内存单元的不同的令牌标识所对应的不同的表项中的访问权限信息的入口信息可以不同。
步骤408:向第二设备发送第一令牌标识。
第一设备在为第二设备确定出第一令牌标识之后,可以将该第一令牌标识发送至第二设备,以便第二设备后续可以根据第一标识和该第一令牌标识来访问第一实体所管理的第一内存区域中的目标内存单元。
上述是本申请实施例给出的配置总线实例的标识对应的入口信息以及地址转换信息的示例性实施方式,在一些可能的情况中,UMMU在根据上述步骤401介绍的方法获取到第一标识之后,也可以参考步骤402介绍的方式为该第一标识分配第二表项。与上述步骤402中不同的是,该第二表项不用于存储第一配置表的入口信息,而是用于存储第一实体所管理的第一内存区域的地址转换信息和访问权限信息的入口信息。在这种情况下,在为第一标识分配第二表项之后,UMMU可以创建第一实体所管理的第一内存区域的地址转换表和访问权限信息表,并在其中写入地址转换信息和访问权限信息,之后,UMMU可以将该地址转换表的基地址作为地址转换信息的入口信息,将访问权限信息表的基地址作为访问权限信息的入口信息,写入至第二表项。在此基础上,后续各个UB设备在申请该第一实体所管理的第一内存区域中的内存单元时,第一设备不再为各个UB设备分配令牌标识,并且为各个UB设备下发的访问权限信息相同。
在通过上述方法创建以总线实例的标识为入口的地址转换信息之后,后续,第一设备在接收到第二设备发送的内存访问请求后,可以通过下述图7所示的内存访问方法来进行地址转换和权限控制,从而实现内存访问。示例性的,参见图7,该过程包括以下步骤:
步骤701:接收第二设备的内存访问请求,该内存访问请求包括待访问的目标内存单元的UBA和第一标识,该第一标识为目标总线实例的标识,目标总线实例对应第一内存区域。
在本申请实施例中,第二设备可以通过UB总线,向第一设备中目标总线实例对应的UB控制器发送内存访问请求。
其中,目标总线实例对应的UB控制器可以是指目标总线实例包括的任一个UB控制器,或者是包括该目标总线实例的UB控制器。内存访问请求可以为写(write)请求、读(read)请求或者是发送(send)请求。其中,该内存访问请求可以包括内存访问参数。并且,如果该内存访问请求为写请求,该内存访问请求中还可以包括待写入数据。另外,内存访问参数包括待访问的目标内存单元的UBA和第一标识,该第一标识为目标总线实例的标识。由于目标总线实例是第一实体使用的总线实例,而第一实体管理的内存区域为第一内存区域,所以,该目标总线实例对应第一内存区域。
可选地,该内存访问参数还可以包括第一设备为第二设备预先分配的用于访问该目标内存单元的第一令牌标识。可选地,该内存访问参数还可以包括用于访问该目标内存单元的第二访问权限信息,例如,该第二访问权限信息可以为第二令牌值。
第一设备中的UB控制器在接收到该内存访问请求之后,可以向第一设备的UMMU发送该内存访问请求中的内存访问参数。相应的,UMMU接收该内存访问参数。
步骤702:基于第一标识,获取目标总线实例对应的第一地址转换信息。
在本申请实施例中,由前述介绍可知,第一标识对应的第二表项可以用于存储第一配置表的入口信息,也可以用于存储第一实体所管理的第一内存区域的地址转换表和访问权限表的入口信息。基于此,如果第二表项中存储的是第一配置表的入口信息,则UMMU可以通过下述方式1来获取第一地址转换信息。如果第二表项中存储的是第一实体所管理的第一内存区域的地址转换表和访问权限表的入口信息,则UMMU可以通过下述方式2来获取第一地址转换信息。
方式1:UMMU可以基于内存访问参数中的第一标识,获取目标总线实例对应的第一配置表的入口信息,基于第一配置表的入口信息,确定第一配置表;基于内存访问参数中的第一令牌标识,从第一配置表中查找第一令牌标识对应的地址转换信息的入口信息;基于第一令牌标识对应的地址转换信息的入口信息,获取第一地址转换信息。
在第一种示例中,UMMU可以从指定寄存器中读取第二配置表的基地址。之后,UMMU可以基于该第二配置表的基地址、第二配置表中的每个表项的大小以及第一标识,确定第一标识对应的第二表项,之后读取该第二表项中的第一配置表的入口信息。
由前述步骤402中的介绍可知,在第二配置表中,各个总线实例的标识对应的表项可以按照各个标识从小到大的顺序依次排列,并且,每个表项的大小可以相等。基于此,UMMU可以根据第一标识在多个总线实例的标识中的排序以及第二配置表中的表项的大小来计算地址偏移量,之后,基于第二配置表的基地址和该地址偏移量来确定第一标识对应的第二表项的基地址,进而基于该第二表项的基地址来读取第二表项的第一配置表的入口信息。
在第二种示例中,指定寄存器中存储有第一标识对应的第二表项的基地址,基于此,UMMU可以从指定寄存器中读取第一标识对应的第二表项的基地址,进而基于该第二表项的基地址来读取第二表项中的第一配置表的入口信息。
其中,指定寄存器中可以存储有不同的总线实例的标识对应的表项的基地址,并且,各个的标识所对应的表项的基地址按照各个标识从小到大或从大到小的顺序来存储。基于此,UMMU可以根据第一标识在多个总线实例的标识中的排序来从该指定寄存器中获取第一标识对应的第二表项的基地址。
由于第一配置表的入口信息能够指示出第一配置表的存储位置,所以UMMU可以基于读取到的第一配置表的入口信息来确定第一配置表。之后,UMMU可以根据内存访问参数中携带的第一令牌标识从第一配置表中查找第一令牌标识对应的第一表项,并从该第一表项中读取第一令牌标识对应的地址转换信息的入口信息,其中,该第一令牌标识对应的地址转换信息即为第一令牌标识所标识的目标内存单元对应的地址转换信息。
需要说明的是,基于前述步骤407中介绍的为令牌标识分配对应的表项的实现方式,UMMU基于第一令牌标识查找对应的第一表项的实现方式可以有以下三种。
方式1A:第一配置表中任一个令牌标识对应的表项中将存储有该令牌标识以及该令牌标识对应的地址转换信息的入口信息。基于此,UMMU可以从第一配置表的各个表项中查找包含有第一令牌标识的表项,该表项即为第一令牌标识对应的第一表项。之后,UMMU可以读取第一表项中存储的地址转换信息的入口信息,该地址转换信息的入口信息即为第一令牌标识所标识的目标内存单元的地址转换信息的入口信息。
方式1B:第一配置表中任一个令牌标识对应的表项是根据该令牌标识所标识的内存单元在第一实体所管理的多个内存单元中的位置来分配的,在这种情况下,UMMU可以基于第一令牌标识所标识的目标内存单元在多个内存单元中的位置,在第一配置表中确定相应的第一表项。
例如,第一令牌标识为002,则说明目标内存单元为第一实体所管理的多个内存单元中的第2个内存单元,因此,第一配置表中的第2个表项即为第一令牌标识对应的第一表项。
方式1C:第一配置表中任一个令牌标识对应的表项是根据该令牌标识在第一实体所管理的第一内存区域对应的多个令牌标识中的排序位置来分配的。在这种情况下,UMMU可以基于第一令牌标识在多个令牌标识中的排序位置,从第一配置表中确定相应的排序位置上的表项,该表项即为第一令牌标识对应的第一表项。
例如,第一令牌标识为002,则说明第一令牌标识是第一实体所管理的第一内存区域对应的多个令牌标识中的第2个令牌标识,因此,第一配置表中的第2个表项即为第一令牌标识对应的第一表项。
在第一配置表中查找到第一表项之后,UMMU可以从该第一表项中读取第一令牌标识所标识的目标内存单元对应的地址转换信息的入口信息。其中,该入口信息可以指示出目标内存单元对应的地址转换信息的存储位置。例如,该入口信息可以为包括有目标内存单元的地址转换信息的第一地址转换表的基地址。基于此,UMMU可以基于该目标内存单元对应的地址转换信息的入口信息来确定第一地址转换表,进而获取该第一地址转换表中包含的地址转换信息,此时,获取到的地址转换信息即为第一地址转换信息。
可选地,由前述步骤407中的介绍可知,第一表项中还可以存储有第一令牌标识对应的访问权限信息的入口信息,在这种情况下,第二设备的内存访问参数中还可以包括第二访问权限信息。基于此,UMMU还可以从第一表项中读取第一令牌标识对应的访问权限信息的入口信息。其中,该入口信息可以指示出该访问权限信息的存储位置。例如,该入口信息可以为包括有目标内存单元的访问权限信息的第一访问权限表的基地址。基于此,UMMU可以基于该第一令牌标识对应的访问权限信息的入口信息来确定第一访问权限表,进而从该第一访问权限表中获取目标内存单元的UBA对应的访问权限信息,此时,获取到的访问权限信息即为第一访问权限信息。
示例性的,图8是本申请实施例示出的一种基于第一标识和第一令牌标识来获取第一地址转换信息和第一访问权限信息的示意图。如图8所示,UMMU可以基于从指定寄存器中读取到的第二配置表的基地址adr1,确定出第二配置表,并根据第一标识0011,从该第二配置表中查找到对应的第二表项。第二表项中存储有第一配置表的基地址adr2。UMMU读取adr2,并根据该adr2确定出第一配置表。第一配置表中存储有不同的令牌标识对应的表项。基于此,UMMU可以基于第一令牌标识002,确定出第一令牌标识对应的第一表项,该第一表项中存储有第一地址转换表的基地址adr3和第一访问权限表的基地址adr4。基于此,UMMU可以读取adr3和adr4,基于adr3找到第一地址转换表,获取第一地址转换表中的地址转换信息,得到第一地址转换信息,基于adr4找到第一访问权限表,获取第一访问权限表中目标内存单元的UBA对应的访问权限信息,得到第一访问权限信息。
方式2:UMMU可以确定第一标识对应的第二表项,从该第二表项中读取第一实体所管理的第一内存区域的地址转换信息的入口信息。之后,UMMU可以基于读取到的地址转换信息的入口信息,获取第一地址转换信息。
需要说明的是,在该种实现方式中,第二表项中存储有第一实体所管理的第一内存区域的地址转换信息的入口信息,该地址转换信息的入口信息可以指示出第一内存区域的地址转换信息的存储地址,因此,UMMU可以根据该入口信息在相应的存储位置处读取第一实体所管理的第一内存区域的地址转换信息,读取到的地址转换信息即为第一地址转换信息。
可选地,第二表项中还可以存储有第一实体所管理的第一内存区域的访问权限信息的入口信息,该访问权限信息的入口信息可以指示出第一内存区域的访问权限信息的存储地址,因此,UMMU可以根据该入口信息从相应的存储位置起查找目标内存单元的UBA对应的访问权限信息,查找到的访问权限信息即为第一访问权限信息。
步骤703:基于第一地址转换信息和目标内存单元的UBA访问目标内存单元。
UMMU在获取到第一地址转换信息之后,可以从该第一地址转换信息中查找待访问的目标内存单元的UBA对应的物理地址,如果查找到,则可以基于该物理地址来访问目标内存单元,如果未查找到,则说明该UBA有误或者是该目标内存单元可能不属于第一实体管理的第一内存区域或者是目标内存单元所对应的令牌标识并不为第一令牌标识,在这种情况下,UMMU确定第二设备对目标内存单元的访问失败。
需要说明的是,如果查找到目标内存单元的UBA对应的物理地址,UMMU可以将该物理地址发送至目标总线实例对应的UB控制器,以便目标总线实例对应的UB控制器基于该物理地址访问目标内存单元。
可选地,如果内存访问参数包括第二访问权限信息,且UMMU获取到了第一访问权限信息,则UMMU可以先比较该第一访问权限信息与第二访问权限信息。如果第一访问权限信息和第二访问权限信息一致,则UMMU可以确定对第二设备的访问权限验证通过,之后,UMMU再将目标内存单元的UBA对应的物理地址发送至目标总线实例对应的UB控制器。
示例性的,由前述步骤407中的介绍可知,第一访问权限信息可以包括第一设备在第二设备申请目标内存单元时生成的第一令牌值。内存访问参数中携带的第二访问权限信息可以是第二令牌值。基于此,UMMU可以比较第一令牌值和第二令牌值是否相同,如果二者相同,则说明该第二访问权限信息即为第一设备为该第二设备分配的访问权限信息,因此,可以确定对第二设备的访问权限验证通过。
可选地,第一访问权限信息中还可以包括用于指示操作权限的第一操作权限信息,在这种情况下,UMMU还可以确定第二设备的内存访问请求的请求类型,该请求类型可以为读请求或写请求或发送请求。之后,UMMU可以检测第二设备的内存访问请求的请求类型是否符合第一操作权限信息,如果符合且第一令牌值和第二令牌值相同,则确定对第二设备的访问权限验证通过。
例如,如果第二设备的内存访问请求的请求类型为读请求或发送请求,且第一操作权限信息包括读权限,或者,如果第二设备的内存访问请求的请求类型为写请求,且第一操作权限信息包括写权限,则说明该内存访问请求的请求类型符合第一操作权限信息。
在本申请实施例中,第二设备的内存访问参数包括待访问的目标内存单元的UBA和第一标识,其中,该第一标识为目标总线实例的标识,目标总线实例对应第一内存区域。基于此,UMMU根据该第一标识来获取目标总线实例对应的第一地址转换信息,进而基于第一地址转换信息和UBA来访问目标内存单元。由此可见,本申请实施例中UMMU以本端的总线实例的标识为入口来获取待访问的内存单元的地址转换信息,而本端的总线实例对应本端的内存区域,因此,本端的总线实例的数量不会受到本端所连接的UB设备的数量的影响,也即,不会受到组网规模的影响,因此,有利于在大规模组网的情况下进行高效的内存访问。
另外,在本申请实施例中,第二设备可以是第一设备中集成的UB设备,也可以是位于第一设备外部的UB设备,相应的,第二设备的内存访问请求可能为本地UB设备的请求,也可能为远端UB设备的请求,由此可见,无论是本地UB设备的请求还是远端UB设备的请求,均可以利用所要访问的目标内存单元的UBA和该目标内存单元所在的目的端的目标总线实例的标识,通过本申请实施例提供的方法来实现对第一设备的内存的访问。由此可见,本申请实施例提供的内存访问方法实现了访存机制的归一化。并且,目前,相关技术中在处理远端设备的内存访问请求时,例如,在处理RDMA请求时,会在与RDMA设备连接的本地设备上设置第一级的地址转换表和访问权限表,其中,该地址转换表可以用于实现主机虚拟地址(hostvirtual address,HVA)到IOVA的转换,访问权限表可以用于实现对RDMA设备的权限校验。基于此,在将RDMA请求中的HVA转换为IOVA后,本地设备会将该IOVA发送至IOMMU或SMMU进行第二级的地址转换。而在本申请实施例提供的内存访问方法中,针对远端UB设备的请求,可以直接由UMMU进行一级地址转换和权限校验,由此可见,通过本申请实施例提供的内存访问方法来处理远端UB设备的内存访问请求,相较于相关技术可以减少一级页表和地址转换,降低内存开销和地址转换时延开销。
最后,在本申请实施例中,可以将多个UB控制器作为一个总线实例,这样,通过该多个UB控制器可以访问同一块内存区域,实现了访存的多平面。并且,本申请实施例中第一设备还可以创建多个总线实例,并将多个总线实例分别分配给不同的虚拟实例使用,这样,基于总线实例的标识来配置地址转换信息,可以实现不同虚拟实例的地址转换信息的隔离。
基于上述实施例中介绍的内存访问方法,本申请实施例给出了一种多个UB设备通过本申请实施例提供的内存访问方法来访问第一设备的内存的效果图,参见图9,第一设备中的UB控制器90包括3个总线实例,其中,总线实例901的实体标识为EID-1,分配给虚拟机95使用;总线实例902的实例标识为EID-2,分配给虚拟机96使用;总线实例903的实体标识为EID-3,分配给虚拟机97使用。基于此,通过UB交换设备91与UB控制器90连接的UB设备92至UB设备94在访问第一设备的内存时,可以在内存访问请求中携带所要访问的内存区域的UBA和管理该内存区域的虚拟机对应的总线实例的标识,例如,UB设备92在访问虚拟机95所管理的内存区域时,内存访问请求中携带EID-1和所访问的内存区域的UBA,这样,UB控制器90在将数据访问请求中的EID-1和UBA发送至UMMU之后,UMMU可以基于该EID-1来查找地址转换信息,并基于查找到的地址转换信息来对UBA进行转换,从而实现对虚拟机95所管理的内存区域的访问。同理,UB设备93和UB设备94也可以分别通过发送携带有EID-2和EID-3的内存访问请求来实现对虚拟机96和虚拟机97所管理的内存区域的访问。
接下来对本申请实施例提供的内存访问装置进行介绍。
图10是本申请实施例提供的一种内存访问装置的结构示意图,该内存访问装置可以部署于前述实施例的第一设备中,参见图10,该内存访问装置1000可以包括:接收模块1001、获取模块1002和访问模块1003。
其中,接收模块1001用于执行前述实施例中的步骤701;获取模块1002用于执行前述实施例中的步骤702;访问模块1003用于执行前述实施例中的步骤703。
可选地,第一设备包括第一控制器,第一控制器包括至少一个总线实例,至少一个总线实例包括目标总线实例,该控制器可以具体为UB控制器,也可以其它系统架构下的控制器。
可选地,第一设备包括N个控制器,目标总线实例包括N个控制器,N为正整数。
可选地,第一内存区域为分配给第一设备中的第一实体的内存区域,第一实体为第一设备上运行的主机操作系统或虚拟实例。
可选地,访问模块1003具体用于:从第一地址转换信息中查找UBA对应的物理地址;若查找到UBA对应的物理地址,则基于UBA对应的物理地址访问目标内存单元,其中,第一内存区域包括该目标内存单元。
可选地,内存访问请求还包括第一令牌标识;获取模块1002具体用于:基于第一标识,获取目标总线实例对应的第一配置表的入口信息,第一配置表包括与多个令牌标识一一对应的多个表项,每个表项用于存储对应的令牌标识所对应的地址转换表的入口信息;基于第一配置表的入口信息,确定第一配置表;从第一配置表中查找第一令牌标识对应的第一表项;基于第一表项中存储的地址转换表的入口信息,获取第一地址转换信息。
可选地,内存访问请求还包括第二访问权限信息,第一配置表中的每个表项还用于存储对应的令牌标识所对应的访问权限表的入口信息,获取模块1002还用于:基于第一表项中存储的访问权限表的入口信息,获取第一访问权限信息;基于第一访问权限信息对第二访问权限信息进行验证;若对第二访问权限信息的验证通过,则触发访问模块1003执行基于第一地址转换信息和UBA访问目标内存单元的步骤。
可选地,该内存访问装置还包括:配置模块1004,用于获取第一标识;基于第一标识,存储第一配置表的入口信息;发送模块1005,用于向第二设备发送第一标识。
可选地,接收模块1001还用于接收第二设备的内存申请,内存申请包括第一标识和目标内存单元的UBA;配置模块1004还用于基于目标内存单元的UBA获取第一令牌标识;基于目标内存单元的UBA,确定第一地址转换表,第一地址转换表包括用于将目标内存单元的UBA转换为对应的物理地址的地址转换信息;基于第一标识,在第一配置表中为第一令牌标识分配对应的第一表项,并在第一表项中写入第一地址转换表的入口信息;发送模块1005还用于向第二设备发送第一令牌标识。
可选地,配置模块1004还用于为第二设备分配第一访问权限信息;确定第一访问权限表,第一访问权限表包括第一访问权限信息;在第一表项中写入第一访问权限表的入口信息;发送模块1005还用于向第二设备发送第一访问权限信息。
在本申请实施例中,第二设备的内存访问请求包括待访问的目标内存单元的UBA和第一标识,其中,该第一标识是第一设备中的目标总线实例的标识,而目标总线实例对应第一设备中的第一内存区域。基于此,根据该第一标识来获取目标总线实例对应的第一地址转换信息,进而基于第一地址转换信息和UBA来访问目标内存单元。由此可见,本申请中以访问目的端的总线实例的标识为索引来获取待访问的内存单元的地址转换信息,而访问目的端的总线实例的数量与访问目的端所连接的UB设备的数量无关,因此,不会受到组网规模的影响,有利于在大规模组网的情况下进行高效的内存访问。
需要说明的是,上述实施例提供的内存访问装置中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时也可以有另外的划分方式,另外,在本申请各个实施例中的各功能模块可以集成在一个处理器中,也可以是单独物理存在,也可以两个或两个以上模块集成为一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
该集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备执行本申请各个实施例该方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
另外,上述实施例提供的内存访问装置与内存访问方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意结合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如:同轴电缆、光纤、数据用户线(digital subscriber line,DSL))或无线(例如:红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如:软盘、硬盘、磁带)、光介质(例如:数字通用光盘(digital versatiledisc,DVD))、或者半导体介质(例如:固态硬盘(solid state disk,SSD))等。
在本申请的各个实施例中,如果没有特殊说明以及逻辑冲突,不同的实施例之间的术语和/或描述具有一致性、且可以相互引用,不同的实施例中的技术特征根据其内在的逻辑关系可以组合形成新的实施例。在本申请实施例中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B的情况,其中A,B可以是单数或者复数。在本申请实施例的文字描述中,字符“/”,一般表示前后关联对象是一种“或”的关系。在本申请中,“第一”、“第二”以及各种数字编号只是为了描述方便进行的区分,并不用来限制本申请实施例的范围。例如,区分不同的消息等,而不是用于描述特定的顺序或先后次序。
可以理解的是,在本申请实施例中涉及的各种数字编号仅为描述方便进行的区分,并不用来限制本申请实施例的范围。上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定。
最后应说明的是:以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何在本申请揭露的技术范围内的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。

Claims (14)

1.一种内存访问方法,其特征在于,应用于第一设备,所述方法包括:
接收第二设备的内存访问请求,所述内存访问请求包括第一标识和待访问的目标内存单元的统一总线地址UBA,所述第一标识为目标总线实例的标识,所述目标总线实例对应第一内存区域;
基于所述第一标识,获取所述目标总线实例对应的第一地址转换信息;
基于所述第一地址转换信息和所述UBA访问所述目标内存单元。
2.根据权利要求1所述的方法,其特征在于,所述第一设备包括第一控制器,所述第一控制器包括至少一个总线实例,所述至少一个总线实例包括所述目标总线实例。
3.根据权利要求1所述的方法,其特征在于,所述第一设备包括N个控制器,所述目标总线实例包括所述N个控制器,所述N为正整数。
4.根据权利要求2或3所述的方法,其特征在于,所述第一内存区域为分配给所述第一设备中的第一实体的内存区域,所述第一实体为所述第一设备上运行的主机操作系统或虚拟实例。
5.根据权利要求1至4任一所述的方法,其特征在于,所述基于所述第一地址转换信息和所述UBA访问所述目标内存单元,包括:
从所述第一地址转换信息中查找所述UBA对应的物理地址;
若查找到所述UBA对应的物理地址,则基于所述UBA对应的物理地址访问所述目标内存单元,所述第一内存区域包括所述目标内存单元。
6.根据权利要求1至5任一所述的方法,其特征在于,所述内存访问请求还包括第一令牌标识;
所述基于所述第一标识,获取所述目标总线实例对应的第一地址转换信息,包括:
基于所述第一标识,获取所述目标总线实例对应的第一配置表的入口信息,所述第一配置表包括与多个令牌标识一一对应的多个表项,每个表项用于存储对应的令牌标识所对应的地址转换表的入口信息;
基于所述第一配置表的入口信息,确定所述第一配置表;
从所述第一配置表中查找所述第一令牌标识对应的第一表项;
基于所述第一表项中存储的地址转换表的入口信息,获取所述第一地址转换信息。
7.根据权利要求6所述的方法,其特征在于,所述内存访问请求还包括第二访问权限信息,所述第一配置表中的每个表项还用于存储对应的令牌标识所对应的访问权限表的入口信息,所述方法还包括:
基于所述第一表项中存储的访问权限表的入口信息,获取第一访问权限信息;
基于所述第一访问权限信息对所述第二访问权限信息进行验证;
若对所述第二访问权限信息的验证通过,则执行所述基于所述第一地址转换信息和所述UBA访问所述目标内存单元的步骤。
8.根据权利要求6或7所述的方法,其特征在于,所述方法还包括:
获取所述第一标识;
基于所述第一标识,存储所述第一配置表的入口信息;
向所述第二设备发送所述第一标识。
9.根据权利要求8所述的方法,其特征在于,所述方法还包括:
接收所述第二设备的内存申请,所述内存申请包括所述第一标识和所述目标内存单元的UBA;
基于所述目标内存单元的UBA获取所述第一令牌标识;
基于所述目标内存单元的UBA,确定第一地址转换表,所述第一地址转换表包括用于将所述目标内存单元的UBA转换为对应的物理地址的地址转换信息;
基于所述第一标识,在所述第一配置表中为所述第一令牌标识分配对应的第一表项,并在所述第一表项中写入所述第一地址转换表的入口信息;
向所述第二设备发送所述第一令牌标识。
10.根据权利要求9所述的方法,其特征在于,所述方法还包括:
为所述第二设备分配第一访问权限信息;
确定第一访问权限表,所述第一访问权限表包括所述第一访问权限信息;
在所述第一表项中写入所述第一访问权限表的入口信息;
向所述第二设备发送所述第一访问权限信息。
11.一种内存访问装置,其特征在于,所述装置包括至少一个模块,所述至少一个模块用于执行权利要求1至10任一项所述的内存访问方法。
12.一种计算机设备,其特征在于,所述计算机设备包括内存、内存管理单元和控制器,所述内存管理单元和所述控制器用于执行所述内存中存储的至少一条程序指令或代码,以实现权利要求1至10任一项所述的内存访问方法。
13.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有指令,当所述指令在计算机设备上运行时,使得所述计算机设备执行权利要求1至10任一项所述的内存访问方法。
14.一种包含指令的计算机程序产品,其特征在于,当所述计算机程序产品在计算机设备上运行时,使得所述计算机设备执行权利要求1至10任一项所述的内存访问方法。
CN202410235135.XA 2024-02-29 2024-02-29 内存访问方法、装置、计算机设备及存储介质 Pending CN120561029A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202410235135.XA CN120561029A (zh) 2024-02-29 2024-02-29 内存访问方法、装置、计算机设备及存储介质
PCT/CN2025/072312 WO2025180121A1 (zh) 2024-02-29 2025-01-14 内存访问方法、装置、计算机设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202410235135.XA CN120561029A (zh) 2024-02-29 2024-02-29 内存访问方法、装置、计算机设备及存储介质

Publications (1)

Publication Number Publication Date
CN120561029A true CN120561029A (zh) 2025-08-29

Family

ID=96828665

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202410235135.XA Pending CN120561029A (zh) 2024-02-29 2024-02-29 内存访问方法、装置、计算机设备及存储介质

Country Status (2)

Country Link
CN (1) CN120561029A (zh)
WO (1) WO2025180121A1 (zh)

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9405720B2 (en) * 2013-03-15 2016-08-02 Atmel Corporation Managing wait states for memory access
CN116010296A (zh) * 2021-10-21 2023-04-25 华为技术有限公司 一种处理请求的方法、装置及系统
CN117076347A (zh) * 2022-05-10 2023-11-17 华为技术有限公司 一种内存共享方法以及装置
CN116126776A (zh) * 2022-12-19 2023-05-16 北京紫光芯能科技有限公司 一种基于mcal的内存访问方法、装置及多核芯片

Also Published As

Publication number Publication date
WO2025180121A1 (zh) 2025-09-04

Similar Documents

Publication Publication Date Title
US11656779B2 (en) Computing system and method for sharing device memories of different computing devices
KR102386495B1 (ko) 데이터에 액세스하는 방법, 장치, 기기 및 매체
US7600093B2 (en) Device, method and computer program product for multi-level address translation
CN111666579B (zh) 计算机设备及其访问控制方法和计算机可读介质
US10013199B2 (en) Translation bypass by host IOMMU for systems with virtual IOMMU
US11150928B2 (en) Hypervisor translation bypass
CN118760635B (zh) Cxl模组、控制器、任务处理方法、介质和系统
JPH0512126A (ja) 仮想計算機のアドレス変換装置及びアドレス変換方法
CN117785758B (zh) Cxl模组、控制器、任务处理方法、介质和系统
TWI699655B (zh) 使用轉譯表進行記憶體映射輸入輸出定址
CN117271105A (zh) 芯片、芯片控制方法及相关装置
EP3959611B1 (en) Intra-device notational data movement system
US9323706B2 (en) Configuration snooping bridge
US10909044B2 (en) Access control device, access control method, and recording medium containing access control program
US10185679B2 (en) Multi-queue device assignment to virtual machine groups
CN108139980B (zh) 用于合并存储器页的方法和存储器合并功能
CN120561029A (zh) 内存访问方法、装置、计算机设备及存储介质
US10481951B2 (en) Multi-queue device assignment for application groups
US10824471B2 (en) Bus allocation system
US12423132B2 (en) Efficient queue shadowing for virtual machines
US20200167086A1 (en) Exit-less host page table switching and virtual machine function detection
US20250298753A1 (en) Memory access control method and apparatus, computing device, and computing device cluster
CN120821533B (zh) Io设备管理方法、设备、系统、介质及程序产品
US11281612B2 (en) Switch-based inter-device notational data movement system
WO2025140222A1 (zh) 计算设备内组件间功能调用的方法、装置和设备

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