CN113168464A - 虚拟化计算环境中的安全存储器访问 - Google Patents

虚拟化计算环境中的安全存储器访问 Download PDF

Info

Publication number
CN113168464A
CN113168464A CN201980077786.8A CN201980077786A CN113168464A CN 113168464 A CN113168464 A CN 113168464A CN 201980077786 A CN201980077786 A CN 201980077786A CN 113168464 A CN113168464 A CN 113168464A
Authority
CN
China
Prior art keywords
memory
request
identifier
memory access
mapping
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
CN201980077786.8A
Other languages
English (en)
Inventor
安东尼·阿萨罗
杰弗里·G·程
阿尼鲁德·R·阿查里亚
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.)
ATI Technologies ULC
Advanced Micro Devices Inc
Original Assignee
ATI Technologies ULC
Advanced Micro Devices Inc
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 ATI Technologies ULC, Advanced Micro Devices Inc filed Critical ATI Technologies ULC
Publication of CN113168464A publication Critical patent/CN113168464A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/1081Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • G06F12/1441Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a range
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/604Tools and structures for managing or administering access control systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/152Virtualized environment, e.g. logically partitioned system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space 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)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Automation & Control Theory (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)

Abstract

处理器[101]通过在总线装置[102](诸如图形处理单元)处采用请求者标识符标识与每个存储器访问请求相关联的虚拟机[221、222]来支持虚拟化计算环境中的安全存储器访问。所述虚拟化计算环境使用所述请求者标识符来控制对系统存储器[110]的不同区域[111、112]的访问,从而确保每个VM仅访问允许VM访问的那些存储器区域。所述虚拟化计算环境由此支持所述总线装置进行有效的存储器访问,同时确保保护存储器的不同区域免受未经授权访问。

Description

虚拟化计算环境中的安全存储器访问
背景技术
在虚拟化计算环境中,被称为虚拟机(VM)的多个虚拟化实体共享计算机资源,同时作为单独的计算机系统出现或与用户交互。例如,服务器可以同时执行多个VM,由此多个VM中的每一者表现为单独的计算机系统,但是与其他VM共享服务器的资源。虚拟化计算环境支持计算机资源的有效使用,而且需要仔细管理那些资源以确保VM中的每一者的安全和正确操作。例如,虚拟化计算环境通常代表VM管理对系统存储器的访问,以确保VM不会无意或恶意地访问其他VM的数据。然而,用于虚拟化计算环境的常规存储器访问技术效率低下,特别是在允许总线装置(耦合到系统互连件的装置)直接访问存储器时。
附图说明
通过参考附图,可以更好地理解本公开,并且本公开的众多特征和优点对于本领域技术人员而言是显而易见的。在不同附图中使用相同的附图标记指示类似或相同的项目。
图1是根据一些实施方案的针对不同虚拟机采用不同的请求标识符以支持总线装置对存储器的访问的处理系统的框图。
图2是示出根据一些实施方案的在图1的处理系统处执行的不同虚拟机经由总线装置使用不同的请求标识符访问存储器的示例的框图。
图3是示出根据一些实施方案的图1的处理系统采用装置驱动程序和管理程序来支持针对不同虚拟机的安全存储器访问的示例的框图。
图4是根据一些实施方案的VM经由总线装置使用请求标识符访问存储器的方法的流程图。
图5是示出根据一些实施方案的图1的处理系统独立于主机操作系统处置中断的示例的框图。
图6是示出根据一些实施方案的图1的处理系统独立于主机操作系统处置中断的方法的流程图。
具体实施方式
图1至图6示出了用于通过在总线装置(诸如图形处理单元)处采用请求者标识符标识与每个存储器访问请求相关联的虚拟机来支持虚拟化计算环境中的安全存储器访问的技术。虚拟化计算环境使用请求者标识符来控制对系统存储器的不同区域的访问,从而确保每个VM仅访问允许VM访问的那些存储器区域。虚拟化计算环境由此支持总线装置进行有效的存储器访问,同时确保保护存储器的不同区域免受未经授权访问。
为了经由示例来示出,在一些实施方案中,处理器的图形处理单元(GPU)经由输入-输出存储器管理单元(IOMMU)与系统存储器对接。处理器同时执行多个VM,并且每个VM使用GPU执行指定操作。对于由于这些操作导致的存储器访问,GPU生成存储器访问请求,并且在每个存储器访问请求中包括指示与所述请求相关联的VM的请求标识符。响应于接收到存储器访问请求,IOMMU基于请求标识符来标识指向一组页表的指针,并使用该组页表来标识用于存储器访问请求的系统存储器地址。页表由管理程序设置,使得每个VM只能访问系统存储器的对应区域。因此,处理器保护存储器的每个区域免受未经授权访问,从而确保每个VM的安全和正确操作。相比之下,常规处理器在总线装置处不支持针对不同VM的不同请求者标识符,由此使不同的存储器区域暴露于未经授权访问,或者限制由不同VM对总线装置的并发使用,因此降低系统效率。
在一些实施方案中,虚拟化计算环境支持独立于在所述环境中执行的主机操作系统(OS)处置来自GPU或总线装置的中断。GPU被配置为代表不同的并发执行的访客OS执行任务,每个访客OS与不同的VM相关联。中断处置程序维护每个任务与对应的访客OS之间的映射表。中断处置程序从GPU接收中断,每个中断包括有效载荷,所述有效载荷具有嵌入式虚拟存储器标识符(VMID),所述VMID标识与生成所述中断的任务相关联的虚拟存储器。中断处置程序从映射表中取消对虚拟函数标识符(VFID)的引用,并基于VFID将中断有效载荷提供给与VFID相对应的访客OS。例如,在一些实施方案中,具有VMID的中断被提供给中断处置程序,所述中断处置程序将VMID映射到VFID。中断处置程序将VFID转发到控制器(诸如PCIe控制器),所述控制器将VFID映射到请求ID,并且处理中断的模块(例如,IOMMU)使用请求ID来处理中断。虚拟化计算环境由此独立于主机OS支持中断处置,从而减少了总体中断等待时间。
图1是根据一些实施方案的针对不同虚拟机采用不同的请求标识符以支持总线装置对存储器的访问的处理系统100的框图。处理系统100通常被配置为代表电子装置执行指令集(例如,计算机程序)。因此,在不同的实施方案中,处理系统100被结合在许多不同的电子装置中的任一者(诸如台式计算机、膝上型计算机、服务器、智能电话、游戏控制器等)中。
为了促进对指令集的执行,处理系统100包括处理器101和存储器110。在一些实施方案中,处理器101是被配置为执行指令集的加速处理单元(APU),并且存储器110包括一起形成处理器100的系统存储器的一组存储器模块(例如,动态随机存取存储器(DRAM)存储器模块)。因此,存储器110存储可供在处理器101处执行的指令集访问的数据和指令。
在所描绘的示例中,处理器101包括图形处理单元(GPU)102和输入/输出存储器管理单元(IOMMU)105。应理解,在一些实施方案中,处理器101包括支持指令执行的附加模块,包括一个或多个中央处理单元(CPU)核心、支持CPU核心对存储器的访问的存储器控制器、一个或多个高速缓存、一个或多个输入/输出模块等。GPU 102通常被配置为响应于从一个或多个CPU核心接收到被称为工作载荷的多组操作而执行所述操作。多组操作通常与在处理器101处执行的图形和矢量指令相关联。
IOMMU 105通常被配置为在包括GPU 102的处理器101的选择模块与存储器110之间提供接口。在一些实施方案中,IOMMU为选择模块提供对存储器110的直接存储器访问(DMA)功能性。因此,IOMMU 105被配置为从GPU 102和其他模块接收存储器访问请求(读取和写入请求)、将与存储器访问请求相关联的虚拟地址转译为物理地址,并管理以物理地址提供对存储器110的存储器访问请求以及管理对所提供的存储器访问请求的响应。在一些实施方案中,IOMMU105经由根据指定的互连协议(诸如高速外围组件互连(PCI-e)协议)操作的互连件(在本文中被称为总线)连接到GPU 102和其他模块。经由总线向IOMMU 105提供存储器访问请求的模块在本文中被称为“总线装置”。为了简单起见,关于GPU 102与IOMMU105之间的交互来描述图1。然而,应理解,本文描述的技术适用于任何总线装置,并且可以用任何总线装置来实施。
在一些实施方案中,处理系统100被用于多种环境中,由此重要的是保护与一个指令集相关联的数据以免被其他指令集访问。例如,在一些场景中,处理系统100被用于虚拟化计算环境中,其中处理系统100同时执行多个虚拟机(VM)。允许VM与另一个VM相关联的至少数据子集有时会导致VM操作错误或将私有数据暴露给未经授权访问。因此,在图1的示例中,处理系统100将存储器110的至少一部分划分为不同区域(例如,区域111、112),并将每个区域分配给对应的VM。
为了保护存储器110的区域免受未经授权访问,IOMMU 105针对每个VM采用不同组的页表(例如,页表116、117)。在VM的初始化期间,管理实体(例如,管理程序)建立对应的页表,其中页表标识与由VM使用的虚拟地址相关联的物理地址。管理实体为VM生成页表,使得物理地址对应于被分配给所述VM的存储器110的区域。另外,管理实体创建一组页表指针115,其中每个页表指针指向不同的页表。页表指针115还包括用于每个页表指针的标识符,IOMMU使用所述标识符来标识针对给定的一组表的存储器访问请求,如下文进一步所述。
GPU 102采用上下文标识符(例如,上下文ID 106、107)来管理用于正在执行的VM的工作载荷。因此,响应于从VM接收到工作载荷,GPU 102为工作载荷创建上下文ID。在一些实施方案中,每个上下文ID本身唯一地标识创建工作载荷的VM。在其他实施方案中,GPU102为来自不同VM的工作载荷重用给定的上下文ID,并根据上下文ID和其他指示符(诸如接收工作载荷的时序或顺序)的组合来标识创建工作载荷的VM。当生成针对工作载荷的存储器访问请求时,GPU 102标识创建工作载荷的VM,并且在存储器访问请求中包括标识VM的请求标识符(例如,请求ID 109)。
响应于接收到存储器访问请求,IOMMU 105使用请求ID来对该组页表指针115进行索引以标识与VM相关联的页表。IOMMU 105使用所标识的页表来执行页表遍历将存储器访问请求的虚拟地址转换为物理地址。然后,IOMMU 105将物理地址提供给存储器110以在被分配给VM的区域处满足存储器访问请求。因此,通过使用请求ID,处理系统100允许GPU 102(或任何总线装置)经由IOMMU 105直接访问存储器110,同时保护存储器110的每个区域免于未经授权访问。
在一些实施方案中,处理系统100利用一个或多个现有总线协议字段来存储用于存储器访问请求的请求ID。例如,PCIE协议包括装置标识符字段以指示生成诸如存储器访问请求之类的消息的装置。GPU 102使用装置标识符字段来存储请求ID,所述请求ID标识生成存储器访问请求的VM。通过使用现有的总线协议字段,可以简化请求ID的实施。
图2是根据一些实施方案的处理系统100利用针对由不同VM生成的存储器访问请求的不同请求ID的示例的框图。在所描绘的示例中,GPU 102执行由两个不同的VM(被指定为VM 221和VM 222)生成的不同工作载荷。在VM 221的配置期间,管理程序向VM 221分配请求ID,所述请求ID被指定为请求ID 208。类似地,在VM 221的配置期间,管理程序向VM 222分配请求ID,所述请求ID被指定为请求ID 209。例如,在一些实施方案中,管理程序(或其他硬件模块)使用以下公式将VM的VFID映射到请求ID:
VFi_ReqID==PF ReqID+VF_OFFSET+VF#*VF_STRIDE
其中VF_OFFSET和VF_STRIDE是用于对与给定的物理功能相关联的VF的链表(linked list)进行索引的值。
另外,出于图2的示例的目的,假设在配置期间,管理程序将存储器110的区域111分配给VM 221,并将区域112分配给VM 222。因此,在VM 221的配置期间,管理程序为VM 221生成页表116,使得被存储在页表116处的物理地址对应于区域111。类似地,管理程序为VM222生成页表117,使得被存储在页表116处的物理地址对应于区域111。
在操作中,GPU 102基于由VM 221生成的工作载荷以及基于由VM 222生成的工作载荷来生成存储器访问请求。响应于生成针对由VM 221生成的工作载荷的存储器访问请求,GPU在存储器访问请求中包括请求ID 208。类似地,响应于生成针对由VM 222生成的工作载荷的存储器访问请求,GPU在存储器访问请求中包括请求ID 209。
响应于接收到存储器访问请求,IOMMU 105使用在存储器访问请求中接收到的请求ID来对页表指针115进行索引。因此,对于包括请求ID 208的存储器访问请求,IOMMU 105对页表指针115进行索引以检索指向页表116的指针。对于包括请求ID 209的存储器访问请求,IOMMU 105对页表指针115进行索引以检索指向页表117的指针。IOMMU 105对由检索到的指针指示的页表执行页遍历,由此将在存储器访问请求中接收到的虚拟地址转译为物理地址。依据与存储器访问请求相关联的VM,物理地址对应于区域111和112中的一者。
图3是示出根据一些实施方案的处理系统100采用装置驱动程序和管理程序来支持针对不同虚拟机的安全存储器访问的示例的框图。在所描绘的示例中,处理系统执行管理程序330,所述管理程序通常被配置为管理虚拟机在处理系统100处的配置和执行。在不同的实施方案中,管理程序330是软件、硬件或其组合。
如上文所提及的,管理程序330通常被配置为管理VM在处理系统101处的配置。因此,响应于接收到启动VM的执行的请求,管理程序330管理用于要存储在IOMMU 105处的VM的页表的生成,以及指向所生成的页表的页表指针的生成。驱动程序(未示出)管理VMID到VFID的映射,并且管理程序330根据上述公式管理请求ID从VFID的生成。管理程序330进一步确保用于VM的请求ID与IOMMU 105处的对应页表指针相关联。
在图3的示例中,处理系统100执行装置驱动程序332和333。装置驱动程序332和333中的每一者在GPU与对应的VM(分别为VM221和222)之间提供软件接口。因此,装置驱动程序332和333中的每一者从对应的VM接收执行工作载荷的请求,将所述请求转译为根据GPU 102的特定类型格式化的一个或多个命令。装置驱动程序332和333还从GPU 102接收消息,诸如指示由GPU 102执行的工作载荷的结果的消息。装置驱动程序332和333将消息(或其数据有效载荷)转译为对应的VM所期望的格式,并将转译后的信息提供给VM。
在一些实施方案中,GPU 102基于提供工作载荷或命令的装置驱动程序来标识用于存储器访问请求的请求ID。具体地,由于每个装置驱动程序332和333与不同的VM 221、222唯一地相关联,因此GPU 102实际上通过标识提供工作载荷或命令的装置驱动程序来标识提供工作载荷或命令的VM。基于所标识的VM,GPU 102在存储器访问请求中包括与所标识的VM相关联的请求ID。在一些实施方案中,VM 221和222共享装置驱动程序以与GPU 102对接。因此,在将每个命令或工作载荷提供给GPU 102的情况下,装置驱动程序包括虚拟存储器标识符(VMID)。GPU 102使用VMID来标识要包括在每个存储器访问请求中的请求ID。在一些实施方案中,每个VMID与不同的VM唯一地相关联。在其他实施方案中,VMID被多个VM共享,并且GPU 102基于VMID和其他上下文信息(诸如何时生成请求ID、何时接收到中断、当前正在执行哪些VM等)的组合来标识针对VM的请求ID。
图4是根据一些实施方案的VM经由总线装置使用请求标识符访问存储器的方法400的流程图。出于描述目的,关于图1至图3的处理系统100处的示例性实施方式描述方法400。在框402处,GPU 102基于代表VM执行工作载荷来生成存储器访问请求。GPU 102基于例如提供工作载荷的装置驱动程序中的一者或多者、基于由装置驱动程序提供的VM的VMID或其组合来标识用于VM的上下文ID。在框404处,GPU 102基于上下文ID来确定用于VM的请求ID。
在框406处,GPU 102将存储器访问请求发送到IOMMU 105,并且使存储器访问请求包括请求ID。例如,在一些实施方案中,GPU102在为装置标识符预留的存储器访问请求的字段中包括标识VM的请求ID,以标识处理系统100的装置。在框408处,IOMMU 105访问页表指针115,并基于请求ID来标识用于VM的页表指针。在框410处,IOMMU 105访问由页表指针指示的一组页表,并使用该组页表执行页表遍历以将存储器访问请求的虚拟地址转译为物理地址。在框410处,IOMMU 105使用物理地址来访问存储器110。物理地址位于被分配给与存储器访问请求相关联的VM的区域中。因此,每个VM仅访问其对应的区域,从而保护每个VM数据免受未经授权访问。
图5是示出根据一些实施方案的处理系统100处置中断的示例的框图。在所描绘的示例中,处理系统100同时执行主机OS 544、访客OS 546和访客OS 548。OS 544、546和548中的每一者在处理系统100的一个或多个处理器核心(未示出)处执行。主机OS 544是通常被配置为对处理系统100执行诸如应用程序和存储器管理之类的操作系统功能的操作系统。访客OS 544和546中的每一者被配置为对在处理系统100处执行的不同的对应VM执行操作系统功能。因此,例如,在一些实施方案中,访客OS 546是由VM 221(图2)执行的操作系统,而访客OS 548是由VM 222执行的操作系统。
如上文所解释的,在一些实施方案中,VM 221和222中的每一者将诸如绘制任务、矢量计算任务等任务分配给GPU 102以供执行。在执行这些任务的过程中,GPU 102生成中断(例如,中断550)以将诸如状态信息之类的信息异步地提供给对应VM。例如,在一些实施方案中,GPU 102在完成针对VM的指定任务时生成中断,所述中断包括指示任务结果或其他状态信息的有效载荷。常规上,用于同时执行的VM的中断处置是通过主机OS或通过使用专用硬件进行路由的。例如,在一些处理系统中,首先将所有中断提供给主机OS,所述主机OS标识中断所针对的VM,然后将中断路由到所标识的VM。然而,这种方法导致中断处置的等待时间相对较长。
与常规方法相比,处理系统100采用映射表542和中断处置程序540来独立于主机OS 544处置访客OS 546和548的中断。映射表542针对每个VMID指示对应的VFID,并且进一步指示被分配给VFID的存储器110(或处理系统100的其他存储器)的区域。由GPU 102生成的每个中断包括标识与生成中断的任务相对应的VM的VMID。响应于接收到中断,中断处置程序540访问映射表542以标识与VMID相关联的VFID以及与VFID相关联的存储器区域。中断处置540将中断的有效载荷存储在所指示的存储器区域处,在所述存储器区域中,对应的访客OS访问所述有效载荷以提供给正在执行的应用程序或其他模块。在一些实施方案中,在初始化阶段期间,通过主机OS 544或通过处理系统100的管理程序将区域分配给VFID,使得为每个VM(和对应的访客OS)分配不同的存储器区域,由此确保访客OS仅访问针对VM的中断的有效载荷。也就是说,访客OS不“知道”被分配给其他VM的存储器区域,因此无法访问其他VM的中断有效载荷,由此保护中断有效载荷免于不正确的访问。在一些实施方案中,经由IOMMU 105将中断有效载荷路由到VM,并且使用不同组的表(未示出)和其他中断特有机制将中断本身或其指示符提供给IOMMU105以将中断注入虚拟机中。
在一些实施方案中,中断处置程序540独立于主机OS 544处置访客OS 546和548的中断。也就是说,主机OS 544不处置中断或中断有效载荷向访客OS 546和548的提供。处理系统101由此减少了与针对虚拟机的中断处置相关联的等待时间。
图6是根据一些实施方案的在处理系统处独立于主机OS处置VM的中断的方法600的流程图。关于图1和图5的处理系统处的示例性实施方式描述方法600。在框602处,中断处置程序540从GPU102接收中断550。作为响应,在框604处,中断处置程序540使用中断550所包括的VMID来访问映射表542。映射表指示与中断相关联的VFID,并且在框606处指示与VFID相对应的存储器区域。在框608处,中断处置程序540将中断550的数据有效载荷存储在所指示的存储器区域处,并向与VFID相对应的访客OS指示已经接收到中断。作为响应,访客OS访问被存储在存储器区域中的数据有效载荷。
如本文所公开的,在一些实施方案中,一种方法包括:在输入/输出存储器管理单元(IOMMU)处从总线装置接收第一存储器访问请求,所述第一存储器访问请求包括第一存储器地址和指示与所述第一存储器访问请求相关联的第一虚拟机(VM)的第一请求标识符;以及响应于在所述IOMMU处基于将虚拟存储器标识符(VMID)映射到虚拟函数标识符(VFID)来确定所述第一虚拟机被授权访问与第一存储器地址相关联的第一存储器区域,在存储器处满足所述第一存储器访问请求。在一方面,将所述VMID映射到所述VFID包括将所述第一请求标识符映射到所述VFID。在另一方面,将所述第一请求标识符映射到所述VFID包括基于索引到虚拟函数链表的偏移值进行映射。
在一方面,将所述第一请求标识符映射到所述VFID包括基于索引到所述虚拟函数链表的步幅值进行映射。在另一方面,基于所述步幅值将所述第一请求标识符映射到所述VFID包括将所述步幅值乘以与所述虚拟函数相对应的虚拟函数编号。在再另一方面,所述第一请求标识符被存储在为装置标识符预留的所述存储器访问请求的字段处。在又另一方面,所述方法包括基于与所述总线装置相关联的装置驱动程序来标识所述第一请求标识符。在另一方面,所述方法包括基于所述映射来访问一组页表。在又另一方面,所述方法包括:在所述IOMMU处从所述装置接收第二存储器访问请求,所述第二存储器访问请求包括第二存储器地址和指示与所述第二存储器访问请求相关联的第二虚拟机(VM)的第二请求标识符;以及响应于在所述IOMMU处基于将虚拟存储器标识符(VMID)映射到虚拟函数标识符(VFID)来确定所述第二虚拟机被授权访问与第一存储器地址相关联的第二存储器区域,在所述存储器处满足所述第二存储器访问请求。
如本文所公开的,在一些实施方案中,一种方法包括:响应于从总线装置接收到中断,基于将与所述中断相关联的虚拟机标识符(VMID)映射到虚拟函数来标识存储器区域;以及将所述中断的有效载荷存储在所述存储器区域处。在一方面,所述方法包括由访客操作系统从所述存储器区域中检索所述有效载荷。
如本文所公开的,在一些实施方案中,一种处理器包括:总线装置,所述总线装置用于代表第一虚拟机(VM)执行工作载荷;以及输入/输出存储器管理单元(IOMMU),所述IOMMU被配置为:从总线装置接收第一存储器访问请求,所述第一存储器访问请求包括第一存储器地址和指示所述第一VM的第一请求标识符;以及响应于在所述IOMMU处基于将虚拟机标识符(VMID)映射到虚拟函数标识符(VFID)来确定所述第一虚拟机被授权访问与第一存储器地址相关联的第一存储器区域,在存储器处满足所述第一存储器访问请求。在一方面,所述IOMMU被配置为通过将所述第一请求标识符映射到所述VFID来将所述VMID映射到所述VFID。在另一方面,所述IOMMU被配置为通过基于索引到虚拟函数链表的偏移值进行映射来将所述第一请求标识符映射到所述VFID。
在一方面,所述IOMMU被配置为通过基于索引到所述虚拟函数链表的步幅值进行映射来将所述第一请求标识符映射到所述VFID。在另一方面,所述IOMMU被配置为通过将所述步幅值乘以与所述虚拟函数相对应的虚拟函数编号来将所述第一请求标识符映射到所述VFID。在又另一方面,所述第一请求标识符被存储在为装置标识符预留的所述存储器访问请求的字段处。在再另一方面,所述总线装置被配置为:基于与所述总线装置相关联的装置驱动程序来标识所述第一请求标识符。在另一方面,所述IOMMU被配置为:基于所述映射来访问一组页表。在又另一方面,所述IOMMU被配置为:从所述装置接收第二存储器访问请求,所述第二存储器访问请求包括第二存储器地址和指示与所述第二存储器访问请求相关联的第二虚拟机(VM)的第二请求标识符;以及响应于确定所述第二虚拟机被授权访问与第一存储器地址相关联的第二存储器区域,在所述存储器处满足所述第二存储器访问请求。
在一些实施方案中,上文所描述的技术的某些方面可以由执行软件的处理系统的一个或多个处理器来实施。软件包括被存储或以其他方式有形地体现在非暂时性计算机可读存储介质上的一个或多个可执行指令集。软件可以包括在由一个或多个处理器执行时操纵一个或多个处理器以执行上文所描述的技术的一个或多个方面的指令和某些数据。非暂时性计算机可读存储介质可以包括例如磁盘或光盘存储装置、固态存储装置,诸如快闪存储器、高速缓存、随机存取存储器(RAM)或者一个或多个其他非易失性存储器装置等。被存储在非暂时性计算机可读存储介质上的可执行指令可以是源代码、汇编语言代码、目标代码或可由一个或多个处理器解译或执行的其他指令格式。
应注意,并非需要上文在一般描述中所描述的所有活动或元件,可以不需要特定活动或装置的一部分,并且除了所描述的活动或元件之外,还可以执行一个或多个另外的活动或包括一个或多个另外的元件。更进一步地,列出活动的顺序不一定是执行所述活动的顺序。此外,已经参考具体实施方案描述了概念。然而,本领域普通技术人员应理解,在不脱离所附权利要求中阐述的本公开的范围的情况下,可以做出各种修改和改变。因此,说明书和附图应被视为说明性的而非限制性的,并且所有这样的修改都意图包括在本公开的范围内。
上面已经关于具体实施例描述了益处、其他优点和问题的解决方案。然而,这些益处、优点、问题的解决方案以及可能导致任何益处、优点或解决方案发生或变得更明显的任何功能均不应被解释为任何或所有权利要求的关键、必需或基本特征。此外,上文所公开的特定实施方案仅是说明性的,因为所公开的主题可以通过对于受益于本文教导的本领域技术人员显而易见的不同但等效的方式来修改和实践。除了如所附权利要求中所描述的之外,并不意图限制本文所示的构造或设计的细节。因此,显而易见的是,可以更改或修改上文所公开的特定实施方案,并且所有这样的变化都被认为在所公开的主题的范围内。因此,本文所寻求的保护如同在所附权利要求中所阐述的一样。

Claims (20)

1.一种方法,其包括:
在输入/输出存储器管理单元(IOMMU)[105]处从总线装置[102]接收第一存储器访问请求,所述第一存储器访问请求包括第一存储器地址和指示与所述第一存储器访问请求相关联的第一虚拟机(VM)[221]的第一请求标识符[208];以及
响应于在所述IOMMU处基于将虚拟存储器标识符(VMID)映射到虚拟函数标识符(VFID)来确定所述第一虚拟机被授权访问与第一存储器地址相关联的第一存储器区域[111],在存储器[110]处满足所述第一存储器访问请求。
2.如权利要求1所述的方法,其中将所述VMID映射到所述VFID包括将所述第一请求标识符映射到所述VFID。
3.如权利要求2所述的方法,其中将所述第一请求标识符映射到所述VFID包括基于索引到虚拟函数链表的偏移值进行映射。
4.如权利要求3所述的方法,其中将所述第一请求标识符映射到所述VFID包括基于索引到所述虚拟函数链表的步幅值进行映射。
5.如权利要求4所述的方法,其中基于所述步幅值将所述第一请求标识符映射到所述VFID包括将所述步幅值乘以与所述虚拟函数相对应的虚拟函数编号。
6.如权利要求1所述的方法,其中:
所述第一请求标识符被存储在为装置标识符预留的所述存储器访问请求的字段处。
7.如权利要求1所述的方法,其还包括:
基于与所述总线装置相关联的装置驱动程序[332]来标识所述第一请求标识符。
8.如权利要求1所述的方法,其还包括:
基于所述映射来访问一组页表[116]。
9.如权利要求1所述的方法,其还包括:
在所述IOMMU处从所述装置接收第二存储器访问请求,所述第二存储器访问请求包括第二存储器地址和指示与所述第二存储器访问请求相关联的第二虚拟机(VM)[222]的第二请求标识符[209];以及
响应于在所述IOMMU处基于将虚拟存储器标识符(VMID)映射到虚拟函数标识符(VFID)来确定所述第二虚拟机被授权访问与第一存储器地址相关联的第二存储器区域[112],在所述存储器处满足所述第二存储器访问请求。
10.一种方法,其包括:
响应于从总线装置[102]接收到中断[550],基于将与所述中断相关联的虚拟机标识符(VMID)映射到虚拟函数来标识存储器区域[111];以及
将所述中断的有效载荷存储在所述存储器区域处。
11.如权利要求10所述的方法,其还包括:
由访客操作系统[506]从所述存储器区域中检索所述有效载荷。
12.一种处理器[101],其包括:
总线装置[102],所述总线装置用于代表第一虚拟机(VM)[221]执行工作载荷;以及
输入/输出存储器管理单元(IOMMU)[105],所述IOMMU被配置为:
从所述总线装置接收第一存储器访问请求[208],所述第一存储器访问请求包括第一存储器地址和指示所述第一VM的第一请求标识符[208];以及
响应于在所述IOMMU处基于将虚拟机标识符(VMID)映射到虚拟函数标识符(VFID)来确定所述第一虚拟机被授权访问与第一存储器地址相关联的第一存储器[110]区域[111],在存储器处满足所述第一存储器访问请求。
13.如权利要求12所述的处理器,其中所述IOMMU被配置为通过将所述第一请求标识符映射到所述VFID来将所述VMID映射到所述VFID。
14.如权利要求13所述的处理器,其中所述IOMMU被配置为通过基于索引到虚拟函数链表的偏移值进行映射来将所述第一请求标识符映射到所述VFID。
15.如权利要求14所述的处理器,所述IOMMU被配置为通过基于索引到所述虚拟函数链表的步幅值进行映射来将所述第一请求标识符映射到所述VFID。
16.如权利要求15所述的处理器,其中所述IOMMU被配置为通过将所述步幅值乘以与所述虚拟函数相对应的虚拟函数编号来将所述第一请求标识符映射到所述VFID。
17.如权利要求12所述的处理器,其中:
所述第一请求标识符被存储在为装置标识符预留的所述存储器访问请求的字段处。
18.如权利要求12所述的处理器,其中所述总线装置被配置为:
基于与所述总线装置相关联的装置驱动程序[332]来标识所述第一请求标识符。
19.如权利要求12所述的处理器,其中所述IOMMU被配置为:
基于所述映射来访问一组页表[115]。
20.如权利要求12所述的处理器,其中所述IOMMU被配置为:
从所述装置接收第二存储器访问请求,所述第二存储器访问请求包括第二存储器地址和指示与所述第二存储器访问请求相关联的第二虚拟机(VM)[222]的第二请求标识符[209];以及
响应于确定所述第二虚拟机被授权访问与第一存储器地址相关联的第二存储器区域[112],在所述存储器处满足所述第二存储器访问请求。
CN201980077786.8A 2018-10-31 2019-06-19 虚拟化计算环境中的安全存储器访问 Pending CN113168464A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/176,431 US11836091B2 (en) 2018-10-31 2018-10-31 Secure memory access in a virtualized computing environment
US16/176,431 2018-10-31
PCT/US2019/037950 WO2020091850A1 (en) 2018-10-31 2019-06-19 Secure memory access in a virtualized computing environment

Publications (1)

Publication Number Publication Date
CN113168464A true CN113168464A (zh) 2021-07-23

Family

ID=70325396

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201980077786.8A Pending CN113168464A (zh) 2018-10-31 2019-06-19 虚拟化计算环境中的安全存储器访问

Country Status (6)

Country Link
US (1) US11836091B2 (zh)
EP (1) EP3874389A4 (zh)
JP (1) JP7504092B2 (zh)
KR (1) KR20210068587A (zh)
CN (1) CN113168464A (zh)
WO (1) WO2020091850A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115659290A (zh) * 2022-11-07 2023-01-31 海光信息技术股份有限公司 代码保护系统、方法、虚拟系统架构、芯片及电子设备

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11599621B2 (en) * 2019-03-30 2023-03-07 Intel Corporation Apparatuses, methods, and systems for verification of input-output memory management unit to device attachment
US11301402B2 (en) 2020-04-30 2022-04-12 Red Hat, Inc. Non-interrupting portable page request interface
US20220100532A1 (en) * 2020-09-25 2022-03-31 Intel Corporation Technology for transferring iommu ownership to a new version of system software
US11755512B2 (en) * 2021-08-17 2023-09-12 Red Hat, Inc. Managing inter-processor interrupts in virtualized computer systems

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104335162B (zh) * 2012-05-09 2018-02-23 英特尔公司 使用多个页表的执行
JP6197585B2 (ja) * 2013-11-01 2017-09-20 富士通株式会社 情報処理装置、及び、情報処理装置の制御方法
US9619387B2 (en) 2014-02-21 2017-04-11 Arm Limited Invalidating stored address translations
US9892037B2 (en) * 2014-12-29 2018-02-13 International Business Machines Corporation Efficient and secure direct storage device sharing in virtualized environments
US10671419B2 (en) 2016-02-29 2020-06-02 Red Hat Israel, Ltd. Multiple input-output memory management units with fine grained device scopes for virtual machines
US20180052776A1 (en) * 2016-08-18 2018-02-22 Qualcomm Incorporated Shared Virtual Index for Memory Object Fusion in Heterogeneous Cooperative Computing
US10140214B2 (en) 2016-08-29 2018-11-27 Red Hat Israel, Ltd. Hypervisor translation bypass by host IOMMU with virtual machine migration support
US10255202B2 (en) 2016-09-30 2019-04-09 Intel Corporation Multi-tenant encryption for storage class memory
US10176122B2 (en) 2016-10-19 2019-01-08 Advanced Micro Devices, Inc. Direct memory access authorization in a processing system
US10514943B2 (en) 2016-11-17 2019-12-24 Qualcomm Incorporated Method and apparatus for establishing system-on-chip (SOC) security through memory management unit (MMU) virtualization
US10489185B2 (en) * 2017-03-17 2019-11-26 Nicira, Inc. Hypervisor-assisted approach for locating operating system data structures based on attribute matching
US10339068B2 (en) * 2017-04-24 2019-07-02 Advanced Micro Devices, Inc. Fully virtualized TLBs
US10776020B2 (en) * 2018-08-13 2020-09-15 Red Hat, Inc. Memory protection in virtualized computer systems using shadow page tables

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115659290A (zh) * 2022-11-07 2023-01-31 海光信息技术股份有限公司 代码保护系统、方法、虚拟系统架构、芯片及电子设备

Also Published As

Publication number Publication date
US20200133878A1 (en) 2020-04-30
EP3874389A1 (en) 2021-09-08
JP7504092B2 (ja) 2024-06-21
WO2020091850A1 (en) 2020-05-07
JP2022511670A (ja) 2022-02-01
KR20210068587A (ko) 2021-06-09
US11836091B2 (en) 2023-12-05
EP3874389A4 (en) 2022-08-03

Similar Documents

Publication Publication Date Title
US11836091B2 (en) Secure memory access in a virtualized computing environment
JP5911985B2 (ja) ローカル物理メモリとリモート物理メモリとの間で共有されるバーチャルメモリのためのハードウェアサポートの提供
WO2017024783A1 (zh) 一种虚拟化方法、装置和系统
US8478922B2 (en) Controlling a rate at which adapter interruption requests are processed
US11599270B2 (en) Virtualized-in-hardware input output memory management
US9697024B2 (en) Interrupt management method, and computer implementing the interrupt management method
RU2532708C2 (ru) Способ и устройство для осуществления операции ввода/вывода в среде виртуализации
US9218302B2 (en) Page table management
US8458387B2 (en) Converting a message signaled interruption into an I/O adapter event notification to a guest operating system
CA2800632C (en) Enable/disable adapters of a computing environment
US20110197190A1 (en) Virtualization method and virtual machine
US20190243757A1 (en) Systems and methods for input/output computing resource control
US7290112B2 (en) System and method for virtualization of processor resources
JP2007183952A (ja) ゲストがメモリ変換されたデバイスにアクセスする方法及び装置
US9367478B2 (en) Controlling direct memory access page mappings
US20170277632A1 (en) Virtual computer system control method and virtual computer system
US9558364B2 (en) Computing machine, access management method, and access management program
KR20220017949A (ko) 입력-출력 메모리 관리 유닛에 의한 게스트 운영 체제 버퍼 및 로그 액세스
US20220358049A1 (en) Memory access handling for peripheral component interconnect devices
US20230027307A1 (en) Hypervisor-assisted transient cache for virtual machines
KR20190138031A (ko) 반도체 장치

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