CN111108487B - 管理程序直接存储器访问 - Google Patents

管理程序直接存储器访问 Download PDF

Info

Publication number
CN111108487B
CN111108487B CN201880060585.2A CN201880060585A CN111108487B CN 111108487 B CN111108487 B CN 111108487B CN 201880060585 A CN201880060585 A CN 201880060585A CN 111108487 B CN111108487 B CN 111108487B
Authority
CN
China
Prior art keywords
memory
pages
memory access
request
hypervisor
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.)
Active
Application number
CN201880060585.2A
Other languages
English (en)
Other versions
CN111108487A (zh
Inventor
A·班达里
B·J·小舍温
X·D·张
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.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Technology Licensing LLC
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 Microsoft Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Publication of CN111108487A publication Critical patent/CN111108487A/zh
Application granted granted Critical
Publication of CN111108487B publication Critical patent/CN111108487B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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
    • 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/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • 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/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1036Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
    • 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
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • 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
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • G06F21/79Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories
    • 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/45566Nested virtual machines
    • 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
    • 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/45587Isolation or security of virtual machine instances
    • 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/20Employing a main memory using a specific memory technology
    • G06F2212/206Memory mapped I/O
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/30Providing cache or TLB in specific location of a processing system
    • G06F2212/303In peripheral interface, e.g. I/O adapter or channel
    • 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
    • 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/651Multi-level translation tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]
    • G06F2212/682Multiprocessor TLB consistency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]
    • G06F2212/683Invalidation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2149Restricted operating environment

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本公开总体上涉及管理程序存储器虚拟化。本文所公开的技术提高了外围组件互连高速(PCI‑e)设备与虚拟机的互操作性。作为示例,当从PCI‑e设备接收到直接存储器访问请求,但是目标存储器当前未被映射时,指示可以被提供给存储器分页处理器以页入存储器,使得PCI‑e设备可以继续正常运行。在一些示例中,一旦存储器被页入,则访问请求可以被缓冲并被重放,或者访问请求可以被重试等等。

Description

管理程序直接存储器访问
背景技术
在虚拟化环境中,管理程序(hypervisor)可以管理主机的存储器,以向一个或多个虚拟化访客提供存储器。但是,各种用例可以使存储器管理复杂化,包括但不限于:虚拟化环境包括嵌套的虚拟化访客、跨多个处理器管理虚拟化工作负载、以及促进与外围组件互连高速(PCI-e)设备的虚拟机交互。
关于这些和其他一般考虑,已经描述了示例。而且,虽然已经讨论了相对具体的问题,但是应当理解,示例不应当限于解决背景技术中标识的具体问题。
发明内容
本公开总体上涉及管理程序存储器虚拟化。本文所公开的技术提高了外围组件互连高速(PCI-e)设备与虚拟机的互操作性,生成了多个页表级以用于提高的嵌套虚拟化场景中的性能,并且提供了更高效的转换旁视(lookaside)缓冲器(TLB)失效请求和页表处理以减少处理开销。
当从PCI-e设备接收到直接存储器访问请求但是目标存储器当前未被映射时,可以将指示提供给存储器分页处理器以页入(page-in)存储器,使得PCI-e设备可以继续正常运行。在示例中,一旦存储器被页入,则访问请求可以被缓冲并被重放,或者访问请求可以被重试等等。
多个页表级可以被用来提供页表,页表可以被处理器在处理针对嵌套虚拟机的工作负载时使用。中间(例如,嵌套的)管理程序可以向父管理程序请求附加页表级,其可以被用来虚拟化存储器以用于由中间管理程序管理的一个或多个嵌套虚拟机。因此,处理器可以使用附加页表级来将虚拟存储器地址最终转换为物理存储器地址。
TLB失效请求可以被选择性地递送到与其相关的处理器,或者可以被与其不相关的处理器忽略,以使通常与这样的TLB失效请求相关联的处理开销最小化。在另一示例中,TLB失效请求可以被挂起,以使得管理程序能够完成执行与将被TLB失效请求影响的一个或多个TLB条目相关的指令。
提供本发明内容是为了以简化的形式介绍一些概念,这些概念将在下面的详细描述中被进一步描述。本发明内容既不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于限制所要求保护的主题的范围。
附图说明
参考以下附图来描述非限制性和非穷举性的示例。
图1图示了示例主机,在该示例主机上可以实践本文所公开的各方面。
图2图示了根据示例的另一示例主机,在该示例主机上,软件层存在于主机的硬件和管理程序之间。
图3A图示了根据示例的具有支持嵌套虚拟化的嵌套管理程序的示例主机。
图3B图示了根据本文所公开的各方面的具有多个转换级的示例页表。
图4图示了根据本文所公开的各方面的用于管理由外围组件互连设备访问的虚拟化存储器的示例方法。
图5图示了用于在嵌套虚拟化环境中利用多个页表级的示例方法。
图6图示了用于请求基于硬件的页表遍历的示例方法。
图7图示了用于选择性地使转换旁视缓冲器的内容失效的示例方法。
图8图示了用于临时挂起转换旁视缓冲器失效请求的示例方法。
图9是图示了利用其可以实践本公开的各方面的计算设备的示例物理组件的框图。
图10A和图10B是利用其可以实践本公开的各方面的移动计算设备的简化框图。
图11是其中可以实践本公开的各方面的分布式计算系统的简化框图。
图12图示了用于执行本公开的一个或多个方面的平板计算设备。
具体实施方式
在下面的详细描述中,对构成其一部分的附图进行参考,并且在附图中通过图示的方式示出了特定实施例或示例。在不脱离本公开的情况下,可以组合这些方面,可以利用其他方面,并且可以进行结构改变。示例可以被实践为方法、系统或设备。因此,示例可以采取硬件实现、完全软件实现或组合软件和硬件方面的实现的形式。因此,以下详细描述不应被视为是限制意义的,并且本公开的范围由所附权利要求及其等同物来限定。
在一些示例中,外围组件互连高速(PCI-e)设备可以由虚拟机使用,其中PCI-e设备可以试图使用直接存储器访问来访问虚拟机的存储器。然而,被请求的存储器可能当前在系统存储器中不可用(例如,作为存储器分页技术的结果),使得存储器访问请求可能失败。因此,本文所公开的各方面涉及:当从PCI-e设备接收到直接存储器访问请求时,向存储器分页处理器提供指示。因此,存储器分页处理器可以页入存储器,使得PCI-e设备可以继续正常运行。在示例中,一旦存储器被页入,则访问请求可以被缓冲并被重放,或者访问请求可以被重试等等。
图1图示了示例主机100,在其上可以实践本文所公开的各方面。在一些实现中,主机100可以是能够启动诸如例如虚拟机130的一个或多个虚拟机的任何计算设备。主机100可以是台式计算机、膝上型计算机、移动计算设备、平板计算设备、可穿戴计算设备、游戏设备等。
如图1中所示,主机100可以包括硬件110。硬件110可以包括一个或多个处理器、一个或多个存储设备、一个或多个存储器设备等等。如所图示的,硬件110包括PCI(外围组件互连)总线160,其可以用于连接各种PCI-e设备(例如PCI-e扩展卡、PCI-e存储控制器等)中的任何一个。在示例中,PCI总线160可以用于与诸如虚拟机130的一个或多个虚拟机共享PCI-e设备。在示例中,硬件110可以包括输入输出存储器管理单元(IOMMU),其可以使得支持直接存储器访问(DMA)的设备能够访问硬件110的存储器。
在图1中所示的示例中,主机100还包括管理程序120。在一些情况下,管理程序120可以是软件、硬件、固件或其组合。如将在下面更详细解释的,管理程序120被配置为创建、运行和/或管理一个或多个虚拟机130。在一些示例中,虚拟机130可以经由PCI总线160来与PCI-e设备交互。在示例中,可以使用存储器分页(paging)技术来提供由管理程序120使得对虚拟机130可用的存储器,其中由虚拟机130使用的或对虚拟机130可用的存储器的至少一部分可能并不总是驻留在主机100的主系统存储器中。而是,当存储器被虚拟机130使用时,管理程序120可以将该存储器页入或页出系统存储器,与从硬件110实际物理可用的存储器相比,这可以使得更多的存储器能够对虚拟机130可用。但是,传统地,如果连接到虚拟机130的PCI-e设备试图对由管理程序120虚拟化的存储器做出DMA请求,则存储器可能不会同时被存储在主系统存储器中,从而导致请求失败。因此,根据本文所公开的各方面,当PCI-e设备试图访问未被映射的存储器时,存储器可以被页入回,从而改进虚拟化的PCI-e设备功能性。
在图1中所示的示例中,管理程序120被配置为与主机100的硬件110直接通信。在这种情况下,管理程序120可以被视为在主机100的各种其他软件、固件和/或其他硬件组件之中具有最高特权级别。因此,例如,当主机100开启时,管理程序120可以是在主机100上被创建、实例化或以其他方式被执行的第一个项目或组件。
一旦管理程序120被初始化,它就可以创建一个或多个虚拟机130。每个虚拟机130可以模拟计算机系统,并且因此可以提供物理计算设备的功能性。在一些示例中,虚拟机130可以包括特权内核150和普通内核140。
特权内核150可以被配置为执行安全操作系统。因此,特权内核150可以运行一个或多个安全程序,该安全程序包含由虚拟机130、管理程序120和/或普通内核140所利用的各种机密。例如,特权内核150可以存储各种凭证、加密密钥等等。
普通内核140可以被配置为执行各种“普通”程序和应用,诸如例如,文字处理应用、浏览器应用、电子表格应用等。然而,由于普通内核140的不那么安全的安全性配置(例如,当与特权内核150的安全性配置相比时),所以普通内核140可以不存储可以被虚拟机130和/或管理程序120利用的任何凭证、加密密钥或其他机密。因此,当普通内核140上运行的各种应用需要各种机密时,普通内核140可以从特权内核150请求那些机密。在另一实现中,普通内核140可以请求特权内核150代表普通内核140和/或在普通内核上执行的一个或多个应用,使用一个或多个所存储的机密来执行一个或多个动作。
在一些实例中并且由于管理程序120执行特权内核150和普通内核140两者,因此管理程序120可以在特权上下文中执行。特权上下文使得管理程序120能够在特权内核150和普通内核140和/或各种用户模式之间切换。
由于管理程序120负责各种虚拟机130和每个虚拟机的相应内核,因此,重要的是,管理程序120是主机100上最安全的组件之一甚至是最安全的组件。例如,如果管理程序120是软件,则当与可能正在主机100上执行的其他软件相比,管理程序120可能具有最高特权级别。在一些情况下,硬件110向管理程序120提供特权级别架构,其使得管理程序120能够在管理程序120创建的每个虚拟机130上运行并施加权限。如将在下面关于图3A更详细地解释的,主机100可以包括嵌套的管理程序。在这种情况下,主要管理程序可以具有对次级管理程序的权限。
在一些示例中,硬件110可以包括转换旁视缓冲器(TLB),其可以被用来对来自页表的信息进行高速缓存,其中当使用存储器分页技术时,可以使用页表将虚拟存储器地址转换为物理存储器地址。因此,当硬件110的一个或多个处理器正在处理由虚拟机130使用的虚拟处理器的工作负载时,TLB可以被使用以加快存储器访问。但是,如果页表中的信息改变,则TLB中的条目可能变得“陈旧”(例如,过期、不正确等)。因此,可以向处理器提供失效请求,以使陈旧的TLB条目失效。在一些示例中,TLB失效请求可以仅被提供给处理工作负载的硬件110的处理器,或者在其他示例中,TLB失效请求可以被没有处理工作负载的处理器忽略或者以其他方式被过滤。
在另一示例中,虚拟机130可以生成针对TLB条目的失效请求。但是,如果管理程序120当前正在使用该条目(例如,作为一个或多个虚拟化指令的一部分),则使TLB条目失效可能导致不预期的或不期望的行为。因此,根据本文所公开的各方面,TLB失效请求可以被挂起,以使得管理程序120能够完成其处理,在这之后,TLB失效请求可以被恢复。
图2图示了根据示例的另一示例主机200,在该示例主机200上,软件层260存在于主机200的硬件210和管理程序220之间。在该示例中,硬件210、管理程序220和虚拟机230、普通内核240和特权内核250可以以类似的方式起作用,诸如以上关于图1所描述的。此外,硬件210可以包括与以上关于图1描述的PCI总线160类似的PCI总线。然而,在该示例中,主机200包括被定位在管理程序220和硬件210之间的软件层260。
在一些情况下,软件层260可以负责硬件210的某些方面。例如,软件层260可以负责将主机200置于睡眠状态、在主机200从睡眠状态唤醒时恢复程序或应用等等。
软件层260具有比管理程序220更高的特权级别也是可能的。在这种情况下,管理程序220应当被配置为与软件层260直接通信。即,软件层260和主机200的任何其他组件(例如,特权内核250、普通内核240等)之间的任何通信应当通过管理程序220被路由或以其他方式被协调。例如,普通内核240和软件层260之间发生的任何通信都应当由管理程序220处理。
在一些情况下,当软件层260存在时,可能期望管理程序220能够关闭或去激活软件层260。例如,一旦管理程序220已被初始化,管理程序220就可以被配置为:关闭软件层260,挂起由软件层260执行的操作,拦截由软件层260提供的或被发送给软件层260的命令等等。以这种方式,管理程序220可以在主机200内具有最高的特权级别。因此,由于管理程序220控制主机200的各个组件之间的通信,所以主机200的安全性特征可以被改进。如还将在下面描述的,主机200可以能够确定管理程序220被安全地启动了,从而防止可能带给主机200的任何攻击。
图3A图示了根据示例的具有支持嵌套虚拟化的嵌套管理程序的示例主机300。如图3A中所示,主机300可以包括硬件310和管理程序320。在一些情况下,硬件310和管理程序320可以以如上所述的类似方式起作用。例如,管理程序320可以与硬件310以及虚拟机330的普通内核340和特权内核350通信。此外,硬件310可以包括与图1中的PCI总线160类似的PCI总线。
附加地,管理程序320和/或硬件310可以能够创建、运行和/或命令另一虚拟机(在图3A中被示出为虚拟机2 370)和另一管理程序(在图3A中被示出为管理程序2 360)。与虚拟机330一样,虚拟机2 370可以包括特权内核(在图3A中被示出为特权内核2 390)和普通内核(在图3A中被示出为普通内核2 380)。这些内核中的每一个可以以与上述的普通内核140和特权内核150类似的方式起作用。
主机300可以包括两个虚拟化层,其中的第一虚拟化层包括虚拟机330和虚拟机2370,并且其中的第二虚拟化层包括管理程序2 360。现在还参考图3B,其图示了具有多个转换级315、325和335的示例页表305。根据本文所公开的各方面,页表305可以被用来提供改进的存储器性能。作为示例,系统页表315可以将系统虚拟存储器地址映射到系统物理存储器地址(例如,如可以由管理程序320利用的)。此外,被图示为级1页表325的后续页表级可以被用来将访客虚拟存储器地址映射到系统虚拟存储器地址(例如,如可以由虚拟机330和/或虚拟机2 370利用的)。因此,当为虚拟机330转换虚拟存储器地址时,硬件310的处理器可以访问级1页表325以标识系统虚拟存储器地址,并且随后可以使用系统虚拟存储器地址来访问系统页表315以标识系统物理存储器地址。
类似地,级2页表335可以被用来将(例如,执行特权内核2 390和普通内核2 380的)管理程序2 360的虚拟存储器地址映射到级1页表325所存储的虚拟存储器地址。因此,硬件310的处理器可以访问级2页表335,以将管理程序2 360所使用的虚拟存储器地址转换为级1页表325中的虚拟存储器地址,其又可以基于级1页表325而被转换为系统虚拟存储器地址。然后,可以使用系统页表315将系统虚拟存储器地址最终转换为系统物理存储器地址。因此,与传统解决方案相比,页表305可以提供性能改进,从而提供可配置数目的转换级,以供嵌套的虚拟化层使用。
管理程序2 360可以以如上所述的类似方式来与特权内核2 390和普通内核2 380通信并运行特权内核2 390和普通内核2 380。例如,管理程序2 360可以在特权上下文中运行,这使得管理程序2 360能够在特权内核2 390和普通内核2 380之间切换。管理程序2360可以相信它是主机300中的唯一管理程序。但是,管理程序2 360可以服从管理程序320并被其命令。即,管理程序2 360和硬件310之间的任何通信都可以通过管理程序320来传递。
尽管未在图3A中示出,但是主机300还可以包括软件层,诸如例如软件层260(图2)。当软件层存在时,管理程序2 360应当仅被配置为与管理程序320通信。在一些情况下,管理程序2 360将在接收到管理程序320已被安全启动的验证之后才被启动。
图4图示了根据本文所公开的各方面的用于管理由PCI-e设备访问的虚拟化存储器的示例方法400。在一些情况下,方法400可以由诸如例如主机系统100(图1)、主机系统200(图2)和/或主机系统300(图3A)之类的主机系统使用。
方法400在操作410处开始,其中可以接收PCI-e设备进行的存储器访问的指示。在示例中,可以在管理程序处接收指示。指示可以由IOMMU、处理器或主机的其他组件提供。在一些示例中,当PCI-e设备请求访问系统存储器时(例如,经由DMA)或当确定被请求的存储器未被映射时(例如,这可能导致PCI-e设备处的故障)等,可以接收指示。在示例中,指示可以作为“缓冲”存储器访问请求的结果而被接收,使得该存储器访问请求可以之后被重放。在另一示例中,请求可以被暂停,使得其可以之后被恢复。
流程进行到操作420,其中用以页入存储器的请求可以被生成并被提供给存储器分页处理器。在示例中,该请求可以包括关于PCI-e设备所请求的存储器地址的指示。在一些示例中,存储器地址可以是物理存储器地址或虚拟存储器地址。在另一示例中,存储器分页处理器可以是由管理程序提供的处理器的一部分或其组合。
在操作430处,可以从存储器分页处理器接收分页完成指示。分页完成指示可以作为存储器分页处理器成功地页入被请求的存储器的结果而被接收,并且因此可以指示一个或多个被请求的存储器页在系统存储器中可用。作为接收到分页完成指示的结果,流程进行到操作440,其中可以指示被访问的存储器可用。在示例中,这可能引起:重放被缓冲的存储器访问请求,恢复访问请求,或者向IOMMU、PCI总线和/或PCI-e设备提供请求可以被重试的指示。在另一示例中,PCI-e设备可以在一段时间后重试。在一些示例中,缓冲该请求可以提供与PCI-e设备的提高的兼容性,因此,示例对于PCI-e设备可能显得是缓慢的事务而不是失败的请求。流程在操作440处终止。应当理解,虽然本文描述了示例指示和交互,但是可以使用备选技术来标识针对未被映射的存储器的请求和/或提供存储器现在可用的指示等。
图5图示了用于在嵌套虚拟化环境中利用多个页表级的示例方法500。在一些情况下,方法500可以由管理程序或虚拟机使用,诸如例如管理程序120、虚拟机130(图1)、虚拟机230(图2)、虚拟机330、虚拟机2 370和/或管理程序2 360(图3A)。
方法500在操作510处开始,其中可以确定执行环境支持具有多个或可变数目的级的页表。在一些示例中,执行环境可以包括主机的各方面和/或虚拟机的各方面。在示例中,确定嵌套页表被支持可以包括评估寄存器,使得可以切转嵌套页表功能性或将其选择性地提供给主机的虚拟化访客。在另一示例中,该确定可以包括评估硬件能力,诸如一个或多个物理和/或虚拟处理器的能力。
在操作520处,可以生成请求以初始化新页表级。作为示例,新页表级可以类似于级1页表325和/或级2页表335,如以上关于图3A所讨论的。在示例中,可以将请求提供给中间管理程序(例如,在图3A中与管理程序320相关的管理程序2 360)或者提供给根管理程序(例如,图3A中的管理程序320)。例如,中间管理程序(例如,图3A中的管理程序2 360)可以将请求提供给根管理程序(例如,图3A中的管理程序320),以将这样的页表功能性提供给虚拟化软件(例如,图3A中的特权内核2 390和普通内核2 380),其可以由中间管理程序虚拟化。
流程进行到操作530,其中可以使用新页表级提供嵌套虚拟化。继续上面的中间管理程序示例,中间管理程序可以启动并管理虚拟机,该虚拟机可以执行工作负载。类似于以上关于包括多个级的图3B所讨论的示例,新页表级可以是第二级页表,诸如级2页表335。因此,处理工作负载的处理器可以使用新页表级来将虚拟机的虚拟存储器地址转换为用于后续转换级的虚拟存储器地址(例如,如可以由类似于级1页表325的页表所存储的)。最终,处理器可以确定物理存储器地址,其可以被用来访问物理存储器内容。在示例中,与纯基于软件的解决方案相比,针对这样的页表级的基于硬件的支持可以提供性能改进(例如,拦截请求并在管理程序处提供影子页表等)。流程在操作530处终止。尽管关于一定数目的级描述了示例,但是应当理解,根据本文所公开的各方面,可以使用任何数目的级。
图6图示了用于请求基于硬件的页表遍历的示例方法600。在一些情况下,方法600可以由诸如例如主机系统100(图1)、主机系统200(图2)和/或主机系统300(图3A)之类的主机系统使用。
方法600在操作610处开始,其中可以生成请求以用于基于硬件的页表遍历。在示例中,除了执行基于软件的页表遍历之外或者作为其备选,该请求可以由管理程序生成。在示例中,管理程序可以请求基于硬件的页表遍历,以减少在以软件执行类似任务时通常可能需要的处理时间量。在另一示例中,可以使用基于硬件的页表遍历来代替基于软件的操作,以限制管理程序所使用的指令的复杂性。在示例中,除了其他信息之外,该请求还可以包括诸如在遍历该页表时观测和/或设置的一个或多个许可和/或执行位之类的配置信息,或者可以包括关于要遍历的页表级数目的指示和/或页表级的特定列表。生成请求可以包括将请求提供给主机的处理器或其他组件。
在操作620处,可以接收完成指示。在示例中,完成指示可以包括与页表有关的信息(例如,一个或多个转换,用于设置页表中的信息的状态等)。完成指示可以被管理程序使用来继续处理,如通常可以作为执行基于软件的页表遍历的结果而被执行的那样。流程在操作620处终止。
图7图示了用于选择性地使TLB的内容失效的示例方法700。在一些情况下,方法700可以由诸如例如主机系统100(图1)、主机系统200(图2)和/或主机系统300(图3A)之类的主机系统使用。
方法700在操作710处开始,其中可以针对与虚拟机标识符相关联的工作负载生成TLB失效请求。在示例中,虚拟机标识符可以包括唯一标识符、主机标识符或与一个或多个物理处理器相关联的标识符以及其他标识符。在示例中,TLB失效请求可以作为确定页表中的信息已改变的结果而被生成,从而致使TLB中的一个或多个条目陈旧。在示例中,TLB失效请求可以由管理与虚拟机标识符相关联的虚拟机的管理程序来生成。
在操作720处,可以确定与虚拟机的工作负载相关联的一个或多个物理处理器。在示例中,作为管理程序将虚拟处理器的工作调度在一个或多个物理处理器上的结果,该确定可以由管理程序做出。因此,管理程序可以能够确定(例如,作为配置信息、维护跟踪信息等的结果)哪个(哪些)物理处理器处理了针对虚拟机的工作负载。作为示例,与一个或多个物理处理器相关的位图可以被维护(例如,在寄存器中、在系统存储器中等),使得可以基于哪些物理处理器被用来处理针对虚拟机的工作负载来更新该位图。因此,位图可以被用来确定哪些物理处理器应当接收TLB失效请求。
流程进行到操作730,其中可以将TLB失效请求提供给被确定的(多个)处理器。在示例中,提供TLB失效请求可以包括:使用由至少一个或多个处理器使用的总线来传送请求;或者将失效请求各个地传送给每个被确定的处理器。因此,在示例中,未被确定为与虚拟机的工作负载相关联的处理器可以不接收失效请求。在另一示例中,失效请求可以被广播,使得作为确定该请求不相关的结果,未被确定为与虚拟机的工作负载相关联的处理器可以忽略该请求。因此,不受失效请求支配的一个或多个处理器可以不需要花费处理周期来处理无关的TLB失效请求,从而减少了否则之前可能发生的处理影响。流程在操作730处终止。
图8图示了用于临时挂起TLB失效请求的示例方法800。在一些情况下,方法800可以由诸如例如主机系统100(图1)、主机系统200(图2)和/或主机系统300(图3A)之类的主机系统使用。在示例中,可以执行方法800,以使得管理程序能够完成依赖于信息的处理指令,否则该处理指令将受到TLB失效请求的支配。
方法800在操作810处开始,其中TLB失效请求可以被接收。在示例中,处理器可以从虚拟机接收TLB失效请求。TLB失效请求可以指定与应当在TLB内被刷新和失效的信息相关联的虚拟地址和/或物理地址。
流程进行到确定820,其中可以确定拦截是否应当被生成。该确定可以包括评估寄存器,该寄存器可能先前已由管理程序设置以指示当TLB失效请求被接收到时拦截应当被生成。在示例中,管理程序可能已经指示了针对其应当生成拦截的特定虚拟机(例如,经由虚拟机标识符),使得该确定可以包括对TLB失效请求的源的评估。尽管本文描述了示例确定因素,但是应当理解,附加的或备选的因素可以被评估。
如果确定拦截不应当被生成,则流程分支“否”到操作830,其中TLB失效请求可以被履行。在示例中,履行TLB失效请求可以包括:标识由失效请求指定的一个或多个条目,并且随后对其进行刷新和/或使其失效。在另一示例中,该请求可以使整个TLB被刷新和/或失效。流程在操作830处终止。
然而,如果确定拦截应当被生成,则流程分支“是”到操作840,其中可以向管理程序提供失效请求的指示。在示例中,指示可以被提供给发送TLB失效请求的物理处理器。在另一示例中,TLB失效请求可以被挂起,使得该请求可以尚未被履行。该指示可以包括与TLB失效请求相关的信息,诸如哪些条目被影响和/或与请求方相关的标识信息(例如,虚拟机标识符等)。管理程序可以执行各种操作,诸如完成与被影响的TLB条目相关联的一个或多个指令。
在操作850处,可以从管理程序接收用以继续的指示,使得流程然后可以进行到操作830,其中TLB失效请求可以如上面所讨论地被履行。因此,虚拟机像在普通环境中(例如,没有虚拟化)那样发出TLB失效请求同时允许管理程序完成依赖于被TLB失效请求影响的条目的处理指令是可能的。流程在操作830处终止。虽然作为示例讨论了方法800,其中在请求被履行之前向管理程序通知TLB失效请求,但是应当理解,其他示例可以在请求履行期间或之后通知管理程序。
图9-图12及其相关联的描述提供了可以在其中实践本公开的各方面的各种操作环境的讨论。但是,如本文所述,关于图9-图12图示出和讨论的设备和系统是出于示例和说明的目的,而不是限制可以被利用来实践本公开的各方面的大量电子设备配置。
图9是图示了利用其可以实践本公开的各方面的计算设备900的物理组件(例如,硬件)的框图。计算设备900可以类似于以上关于图1描述的主机100。
在基本配置中,计算设备900可以包括至少一个处理单元910和系统存储器915。取决于计算设备900的配置和类型,系统存储器915可以包括但不限于:易失性存储装置(例如,随机存取存储器)、非易失性存储装置(例如,只读存储器)、闪存或这样的存储器的任何组合。系统存储器915可以包括操作系统925和一个或多个程序模块920或适合于标识包含在诸如本文所述的捕获图像内的各种对象的组件。
操作系统925例如可以适合于控制计算设备900的操作。此外,本公开的示例可以结合图形库、其他操作系统或任何其他应用程序而被实践,并且不限于任何特定的应用或系统。该基本配置在图9中通过虚线930内的那些组件来图示。
计算设备900可以具有附加的特征或功能性。例如,计算设备900还可以包括附加的数据存储设备(可移除的和/或不可移除的),诸如例如磁盘、光盘或磁带。这样的附加存储装置在图9中通过可移除存储设备935和不可移除存储设备940来图示。
如上所述,许多程序模块和数据文件可以被存储在系统存储器915中。当在处理单元910上执行时,程序模块920(例如,管理程序905)可以执行包括但不限于本文所述的各方面的过程。
此外,可以在包括分立电子元件的电子电路、包含逻辑门的封装或集成电子芯片、利用微处理器的电路中、或在包含电子元件或微处理器的单个芯片上实践本公开的示例。例如,可以经由片上系统(SOC)来实践本公开的示例,其中图9中图示的组件中的每个组件或许多组件可以被集成到单个集成电路上。这样的SOC设备可以包括一个或多个处理单元、图形单元、通信单元、系统虚拟化单元以及各种应用功能性,所有这些都作为单个集成电路而被集成(或“烧制”)到芯片衬底上。
当经由SOC操作时,本文所描述的关于客户端切换协议的能力的功能性可以经由在单个集成电路(芯片)上与计算设备900的其他组件集成的专用逻辑来操作。还可以使用能够执行逻辑操作的其他技术来实践本公开的示例,诸如例如AND、OR和NOT,包括但不限于机械、光学、流体和量子技术。另外,可以在通用计算机或任何其他电路或系统中实践本公开的示例。
计算设备900还可以具有一个或多个输入设备945,诸如键盘、触控板、鼠标、笔、声音或语音输入设备、触摸、力和/或滑动输入设备等等。还可以包括(多个)输出设备950,诸如显示器、扬声器、打印机等。前述设备是示例,并且可以使用其他设备。电子设备900可以包括允许与其他计算设备960进行通信的一个或多个通信连接955。合适的通信连接955的示例包括但不限于无线电频率(RF)传输器、接收器和/或收发器电路;通用串行总线(USB)、并行和/或串行端口。
本文所使用的术语计算机可读介质可以包括计算机存储介质。计算机存储介质可以包括用于存储信息的任何方法或技术中实现的易失性和非易失性、可移除和不可移除介质,信息诸如计算机可读指令、数据结构或程序模块。
系统存储器915、可移除存储设备935和不可移除存储设备940都是计算机存储介质示例(例如,存储器存储装置)。计算机存储介质可能包括RAM、ROM、电可擦除只读存储器(EEPROM)、闪存或其他存储器技术、CD-ROM、数字多功能磁盘(DVD)或其他光学存储装置、磁盒、磁带、磁盘存储装置或其他磁性存储设备、或可以用于存储信息并且可以由计算设备900访问的任何其他制品。任何这样的计算机存储介质都可以是计算设备900的一部分。计算机存储介质不包括载波或其他传播或调制数据信号。
通信介质可以由计算机可读指令、数据结构、程序模块或诸如载波或其他传送机制之类的调制数据信号中的其他数据来体现,并且包括任何信息递送介质。术语“调制数据信号”可以描述具有以将信息编码在信号中的方式被设置或改变的一个或多个特性的信号。作为示例而非限制,通信介质可以包括诸如有线网络或直接有线连接之类的有线介质以及诸如声学、无线电频率(RF)、红外和其他无线介质之类的无线介质。
图10A和图10B图示了移动计算设备1000,例如移动电话、智能电话、可穿戴计算机(诸如智能手表)、平板计算机、膝上型计算机等,利用其可以实践本公开的示例。参考图10A,图示了用于实现各方面的移动计算设备1000的一个方面。
在基本配置中,移动计算设备1000是具有输入元件和输出元件两者的手持式计算机。移动计算设备1000通常包括显示器1005和允许个体将信息输入到移动计算设备1000中的一个或多个输入按钮1010。移动计算设备1000的显示器1005还可以用作输入设备(例如,接受触摸和/或力输入的显示器)。
如果可选的侧面输入元件1015被包括,则其允许进一步的输入。侧面输入元件1015可以是旋转开关、按钮或任何其他类型的手动输入元件。在备选方面中,移动电子设备1000可以并入了更多或更少的输入元件。例如,在一些示例中,显示器1005可以不是触摸屏。在又一备选实施例中,移动计算设备1000是便携式电话系统,诸如蜂窝电话。移动计算设备1000还可以包括可选的小键盘1035。可选的小键盘1035可以是在触摸屏显示器上生成的物理小键盘或“软”小键盘。
在各种示例中,输出元件包括用于显示图形用户界面(GUI)的显示器1005(诸如上述提供确定的发音的视觉表示并可以接收反馈或其他这样的输入的显示器)、视觉指示器1020(例如,发光二极管)和/或音频换能器1025(例如,扬声器)。在一些方面中,移动计算设备1000并入用于向个体提供触觉反馈的振动换能器。在又一方面中,移动计算设备1000并入输入和/或输出端口,诸如音频输入(例如,麦克风插孔)、音频输出(例如,耳机插孔)和视频输出(例如,HDMI端口),以用于向外部设备发送信号或从外部设备接收信号。
图10B是图示了移动计算设备1000的一方面的架构的框图。即,移动计算设备1000可以并入系统(例如,架构)1040以实现一些方面。在一个实施例中,系统1040被实现为能够运行一个或多个应用(例如,浏览器、电子邮件、日历、联系人管理器、消息传递客户端、游戏、媒体客户端/播放器、内容选择和共享应用等)的“智能电话”。在一些方面中,系统1040被集成为电子设备,诸如集成的个人数字助理(PDA)和无线电话。
一个或多个应用程序1050可以被加载到存储器1045中并在操作系统1055上运行或与之相关联地运行。应用程序的示例包括电话拨号程序、电子邮件程序、个人信息管理(PIM)程序、文字处理程序、电子表格程序、互联网浏览器程序、消息传递程序等。
系统1040还包括存储器1045内的非易失性存储区域1060。非易失性存储区域1060可以被用来存储持久性信息,该持久性信息在系统1040被断电时不应当被丢失。
应用程序1050可以使用信息并将其存储在非易失性存储区域1060中,诸如电子邮件或由电子邮件应用使用的其他消息等。同步应用(未示出)也驻留在系统1040上,并且被编程为与驻留在主机计算机上的对应同步应用进行交互,以使被存储在非易失性存储区域1060中的信息与被存储在主机计算机处的对应信息保持同步。
系统1040具有电源1065,其可以被实现为一个或多个电池。电源1065可以进一步包括外部电源,诸如AC适配器或对电池进行补充或再充电的动力对接支架。
系统1040还可以包括无线电接口层1070,其执行传输和接收无线电频率通信的功能。无线电接口层1070经由通信携载方或服务提供方来促进系统1040与“外部世界”之间的无线连接性。在操作系统1055的控制下实施去往以及来自无线电接口层1070的传输。换言之,由无线电接口层1070接收的通信可以经由操作系统1055被散布到应用程序1050,反之亦然。
视觉指示器1020可以被用来提供视觉通知,和/或音频接口1075可以被用于经由音频换能器(例如,图10A中所图示的音频换能器1025)产生可听通知。在所图示的实施例中,视觉指示器1020是发光二极管(LED),并且音频换能器1025可以是扬声器。这些设备可以直接耦合到电源1065,因此在被激活时,其会在通知机制指明的持续时间内维持开启,即使处理器1085和其他组件可能为了节省电池功率而关闭。LED可以被编程为无限期维持开启,直到个体采取动作来指示设备的通电状态为止。
音频接口1075被用来向个体提供可听信号并从个体接收可听信号(例如,如上所述的语音输入)。例如,除了被耦合到音频换能器1025之外,音频接口1075还可以被耦合到麦克风以接收可听输入,诸如以促进电话交谈。根据本公开的示例,如将在下面描述的,麦克风也可以用作音频传感器以促进通知的控制。
系统1040还可以包括视频接口1080,其使得外围设备1030(例如车载摄像机)的操作能够记录静止图像、视频流等。
实现系统1040的移动计算设备1000可以具有附加的特征或功能性。例如,移动计算设备1000还可以包括附加的数据存储设备(可移除的和/或不可移除的),诸如磁盘、光盘或磁带。这样的附加存储装置在图10B中由非易失性存储区域1060来图示。
如上所述,由移动计算设备1000生成或捕获并经由系统1040被存储的数据/信息可以被本地存储在移动计算设备1000上,或者数据可以被存储在任何数目的存储介质上,该存储介质可以经由无线电接口层1070或者经由移动电子设备1000和与移动计算设备1000相关联的单独电子设备之间的有线连接而被设备访问,该单独电子设备例如是诸如互联网之类的分布式计算网络中的服务器计算机。应当理解,这样的数据/信息可以经由移动计算设备1000、经由无线电接口层1070或经由分布式计算网络来访问。类似地,这样的数据/信息可以根据包括电子邮件和协作数据/信息共享系统的公知的数据/信息转送和存储装置,在电子设备之间容易地转送以进行存储和使用。
应当理解,出于说明本方法和系统的目的来描述图10A和图10B,并且不旨在将本公开限制于特定的步骤顺序或硬件或软件组件的特定组合。
图11图示了用于使用多个计算设备来提供虚拟化的系统1100的架构的一方面。如上所述,系统1100可以包括通用计算设备1110(例如,个人计算机)、平板计算设备1115或移动计算设备1120。这些设备中的每个设备可以包括诸如本文所述的管理程序1125。
在一些方面中,通用计算设备1110(例如,个人计算机)、平板计算设备1115或移动计算设备1120中的每个可以接收由目录服务1145、web门户1150、邮箱服务1155、即时消息传递存储库1160或社交联网服务1165存储或从其中传输的各种其他类型的信息或内容。
在各方面中并且如上所述,每个计算设备可以访问在服务器1105、云或某个其他远程计算设备上提供的虚拟机数据存储库1135。
作为示例,上述各方面可以被体现在通用计算设备1110、平板计算设备1115和/或移动计算设备1120中。电子设备的这些示例中的任何示例都可以从存储库1140中获得内容或向存储库1140提供数据。
应当理解,出于说明本方法和系统的目的来描述图11,并且不旨在将本公开限制于特定的步骤顺序或硬件或软件组件的特定组合。
图12图示了可以执行本文所公开的一个或多个方面的示例平板计算设备1200。另外,本文描述的各方面和功能性可以在分布式系统(例如,基于云的计算系统)上操作,其中应用功能性、存储器、数据存储和取回以及各种处理功能可以在诸如互联网或内联网之类的分布式计算网络上彼此远程地操作。可以经由车载电子设备显示器或经由与一个或多个电子设备相关联的远程显示单元来显示各种类型的用户界面和信息。例如,可以在墙壁表面上显示各种类型的用户界面和信息并与之交互,各种类型的用户界面和信息被投影在该墙壁表面上。与利用其可以实践本发明的示例的众多计算系统的交互包括按键输入、触摸屏输入、语音或其他音频输入、手势输入,其中相关联的电子设备被配备有检测(例如相机)功能性,以用于捕获和解释用于控制电子设备的功能性的手势等。
应当理解,出于说明本方法和系统的目的来描述本文的图12,并且不旨在将本公开限制为特定的步骤顺序或硬件或软件组件的特定组合。
如从前述公开中将理解的,本技术的一方面涉及一种系统,该系统包括:至少一个处理器;以及存储器,该存储器存储指令,该指令在由至少一个处理器执行时,执行用于提供直接存储器访问的方法。该方法包括:接收外围组件互连高速(PCI-e)设备对存储器的一个或多个页面的存储器访问请求的指示;向存储器分页处理器生成请求以页入该一个或多个页面;从存储器分页处理器接收该一个或多个页面在存储器中可用的指示;以及提供一个或多个页面在存储器中可用的指示。在示例中,存储器访问的指示从输入输出存储器管理单元被接收。在另一示例中,该方法还包括:缓冲存储器访问请求;以及当确定一个或多个页面在存储器中可用时,重放被缓冲的存储器访问请求。在另一示例中,提供指示包括:向PCI-e设备提供用以重试存储器访问请求的指示。在又一示例中,一个或多个页面在存储器中可用的指示被提供给输入输出存储器管理单元。在又一示例中,一个或多个页面在存储器中可用的指示被提供给PCI-e设备。在另一示例中,存储器访问请求的指示作为虚拟机与PCI-e设备交互的结果而被接收。
在另一方面中,该技术涉及一种用于向虚拟机正在使用的设备提供直接存储器访问的方法。该方法包括:作为设备与虚拟机之间的事务的结果,接收设备对存储器的一个或多个页面的存储器访问请求的指示;向存储器分页处理器生成请求以页入该一个或多个页面;从存储器分页处理器接收该一个或多个页面在存储器中可用的指示;向设备提供该一个或多个页面在存储器中可用的指示;以及基于在存储器中可用的一个或多个页面,继续事务。在示例中,存储器访问的指示从输入输出存储器管理单元被接收。在另一示例中,该方法还包括缓冲存储器访问请求,并且继续事务包括重放被缓冲的存储器访问请求。在另一示例中,提供指示包括向PCI-e设备提供用以重试存储器访问请求的指示。在又一示例中,一个或多个页面在存储器中可用的指示经由输入输出存储器管理单元而被提供给设备。在又一示例中,该设备是外围组件互连高速设备。
在另一方面中,该技术涉及用于提供直接存储器访问的另一种方法。该方法包括:接收外围组件互连高速(PCI-e)设备对存储器的一个或多个页面的存储器访问请求的指示;向存储器分页处理器生成请求以页入该一个或多个页面;从存储器分页处理器接收该一个或多个页面在存储器中可用的指示;以及提供该一个或多个页面在存储器中可用的指示。在示例中,存储器访问的指示从输入输出存储器管理单元被接收。在另一示例中,该方法还包括:缓冲存储器访问请求;以及当确定一个或多个页面在存储器中可用时,重放被缓冲的存储器访问请求。在另一示例中,提供指示包括向PCI-e设备提供用以重试存储器访问请求的指示。在又一示例中,一个或多个页面在存储器中可用的指示被提供给输入输出存储器管理单元。在又一示例中,一个或多个页面在存储器中可用的指示被提供给PCI-e设备。在另一示例中,存储器访问请求的指示作为虚拟机与PCI-e设备交互的结果而被接收。
本申请中提供的一个或多个方面的描述和说明不旨在以任何方式限制或局限所要求保护的本公开的范围。本申请中提供的各方面、示例和细节被认为足以传达所有权并使得其他人能够制造和使用所要求保护的本公开的最佳模式。所要求保护的本公开不应当被解释为限于本申请中提供的任何方面、示例或细节。不管是结合地还是分离地被示出和描述,各种特征(结构的和方法的)都旨在被选择性地包括或省略,以产生具有特定特征集的实施例。另外,所描述的方法中的每个操作可以以不同的次序来执行和/或与其他操作并发地、同时地或基本同时地执行。
已经提供了本申请的描述和说明,本领域技术人员可以设想落入未背离所要求保护的本公开的更宽范围的、本申请中所体现的总体发明构思的更宽方面的精神内的变型、修改和备选方面。

Claims (20)

1.一种用于提供直接存储器访问的系统,包括:
至少一个处理器;以及
第一存储器,所述第一存储器存储指令,所述指令在被所述至少一个处理器执行时,执行用于提供直接存储器访问的方法,所述方法包括:
标识外围设备对第二存储器的一个或多个页面的直接存储器访问请求;
与存储器分页处理器通信,以确定所请求的所述一个或多个页面是否未被映射在所述第二存储器中;
基于确定所请求的所述一个或多个页面未被映射在所述第二存储器中:
将所述直接存储器访问请求的至少一部分存储在第三存储器中,作为缓冲的直接存储器访问请求;以及
向所述存储器分页处理器生成页入所述一个或多个页面的请求;
从所述存储器分页处理器接收所述一个或多个页面在所述第二存储器中可用的指示;以及
响应于所述一个或多个页面在所述第二存储器中可用的所述指示,使用所述缓冲的直接存储器访问请求来恢复所述外围设备的直接存储器访问,而无需来自所述外围设备的重试直接存储器访问请求。
2.根据权利要求1所述的系统,其中所述直接存储器访问请求基于从输入输出存储器管理单元接收到的指示而被标识。
3.根据权利要求1所述的系统,其中基于恢复所述直接存储器访问请求,针对存储器的所述一个或多个页面的重试直接存储器访问请求不是从所述外围设备接收的。
4.根据权利要求1所述的系统,其中所述第二存储器和所述第三存储器是第四存储器的子部分。
5.根据权利要求1所述的系统,其中所述外围设备是外围组件互连高速设备。
6.根据权利要求1所述的系统,其中向所述存储器分页处理器的请求包括与所述一个或多个页面相关联的至少一个存储器地址。
7.根据权利要求1所述的系统,其中所述直接存储器访问请求作为虚拟机与所述外围设备交互的结果而被标识。
8.一种用于向虚拟机正在使用的设备提供直接存储器访问的方法,包括:
作为所述设备和所述虚拟机之间的事务的结果,标识所述设备对第一存储器的一个或多个页面的存储器访问请求;
与存储器分页处理器通信,以确定所请求的所述一个或多个页面是否未被映射在所述第一存储器中;
基于确定所请求的所述一个或多个页面未被映射在所述第一存储器中:
将所述存储器访问请求的至少一部分缓冲在第二存储器中,作为缓冲的存储器访问请求;以及
向所述存储器分页处理器生成页入所述一个或多个页面的请求;
从所述存储器分页处理器接收所述一个或多个页面在所述第一存储器中可用的指示;
响应于所述一个或多个页面在所述第一存储器中可用的所述指示,基于所述缓冲的存储器访问请求继续所述事务,而无需来自所述设备的重试存储器访问请求。
9.根据权利要求8所述的方法,其中所述存储器访问请求基于从输入输出存储器管理单元接收到的指示而被标识。
10.根据权利要求8所述的方法,其中基于继续所述事务,针对存储器的所述一个或多个页面的重试存储器访问请求不是从所述设备接收的。
11.根据权利要求8所述的方法,其中所述第一存储器和所述第二存储器是第三存储器的子部分。
12.根据权利要求8所述的方法,其中向所述存储器分页处理器的请求包括与所述一个或多个页面相关联的至少一个存储器地址。
13.根据权利要求8所述的方法,其中所述设备是外围组件互连高速设备。
14.一种用于提供直接存储器访问的方法,包括:
标识外围设备对第一存储器的一个或多个页面的存储器访问请求;
与存储器分页处理器通信,以确定所请求的所述一个或多个页面是否未被映射在所述第一存储器中;
基于确定所请求的所述一个或多个页面未被映射在所述第一存储器中:
将所述存储器访问请求的至少一部分存储在第二存储器中,作为缓冲的存储器访问请求;以及
向所述存储器分页处理器生成页入所述一个或多个页面的请求;
从所述存储器分页处理器接收所述一个或多个页面在所述第一存储器中可用的指示;以及
响应于所述一个或多个页面在所述第一存储器中可用的所述指示,使用所述缓冲的存储器访问请求来恢复针对所述第一存储器的所述一个或多个页面的所述存储器访问请求,而无需来自所述外围设备的重试存储器访问请求。
15.根据权利要求14所述的方法,其中所述存储器访问请求基于从输入输出存储器管理单元接收到的指示而被标识。
16.根据权利要求14所述的方法,其中所述第一存储器和所述第二存储器是第三存储器的子部分。
17.根据权利要求14所述的方法,其中所述外围设备是外围组件互连高速设备。
18.根据权利要求15所述的方法,其中向所述存储器分页处理器的请求包括与所述一个或多个页面相关联的至少一个存储器地址。
19.根据权利要求18所述的方法,其中所述至少一个存储器地址是物理存储器地址或虚拟存储器地址。
20.根据权利要求14所述的方法,其中所述存储器访问请求作为虚拟机与所述外围设备交互的结果而被标识。
CN201880060585.2A 2017-09-19 2018-06-22 管理程序直接存储器访问 Active CN111108487B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201762560578P 2017-09-19 2017-09-19
US62/560,578 2017-09-19
US15/875,903 2018-01-19
US15/875,903 US10628202B2 (en) 2017-09-19 2018-01-19 Hypervisor direct memory access
PCT/US2018/038890 WO2019059988A1 (en) 2017-09-19 2018-06-22 DIRECT ACCESS TO THE MEMORY OF HYPERVISOR

Publications (2)

Publication Number Publication Date
CN111108487A CN111108487A (zh) 2020-05-05
CN111108487B true CN111108487B (zh) 2023-09-12

Family

ID=65719278

Family Applications (3)

Application Number Title Priority Date Filing Date
CN201880060370.0A Pending CN111095227A (zh) 2017-09-19 2018-06-22 管理程序存储器高速缓存失效
CN201880060585.2A Active CN111108487B (zh) 2017-09-19 2018-06-22 管理程序直接存储器访问
CN201880060596.0A Active CN111108486B (zh) 2017-09-19 2018-06-22 嵌套管理程序存储器虚拟化

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN201880060370.0A Pending CN111095227A (zh) 2017-09-19 2018-06-22 管理程序存储器高速缓存失效

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN201880060596.0A Active CN111108486B (zh) 2017-09-19 2018-06-22 嵌套管理程序存储器虚拟化

Country Status (4)

Country Link
US (3) US10628202B2 (zh)
EP (3) EP3685273B1 (zh)
CN (3) CN111095227A (zh)
WO (3) WO2019059987A1 (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10628202B2 (en) 2017-09-19 2020-04-21 Microsoft Technology Licensing, Llc Hypervisor direct memory access
US11593170B2 (en) * 2020-03-25 2023-02-28 Red Hat, Inc. Flexible reverse ballooning for nested virtual machines
US11550612B2 (en) * 2020-06-26 2023-01-10 Red Hat, Inc. Support for encrypted memory in nested virtual machines
CN112416525B (zh) * 2020-11-27 2022-06-03 海光信息技术股份有限公司 设备驱动初始化方法、直接存储访问方法及相关装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2004066059A2 (en) * 2003-01-22 2004-08-05 Falanx Microsystems As Microprocessor systems
CN101520753A (zh) * 2008-02-29 2009-09-02 Arm有限公司 数据处理设备和控制虚拟机对安全存储器的访问的方法

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5437017A (en) * 1992-10-09 1995-07-25 International Business Machines Corporation Method and system for maintaining translation lookaside buffer coherency in a multiprocessor data processing system
US6321314B1 (en) * 1999-06-09 2001-11-20 Ati International S.R.L. Method and apparatus for restricting memory access
US6324635B1 (en) * 1999-06-09 2001-11-27 Ati International Srl Method and apparatus for address paging emulation
US7076634B2 (en) * 2003-04-24 2006-07-11 International Business Machines Corporation Address translation manager and method for a logically partitioned computer system
US7299337B2 (en) 2005-05-12 2007-11-20 Traut Eric P Enhanced shadow page table algorithms
US8694776B2 (en) 2007-12-21 2014-04-08 Spansion Llc Authenticated memory and controller slave
US8635385B2 (en) * 2010-07-16 2014-01-21 Advanced Micro Devices, Inc. Mechanism to handle peripheral page faults
US8407389B2 (en) 2010-07-20 2013-03-26 International Business Machines Corporation Atomic operations with page migration in PCIe
US8922665B2 (en) 2010-10-06 2014-12-30 Microsoft Corporation Rapidly initializing and dynamically adjusting media streams
US9424199B2 (en) * 2012-08-29 2016-08-23 Advanced Micro Devices, Inc. Virtual input/output memory management unit within a guest virtual machine
US9396011B2 (en) 2013-03-12 2016-07-19 Qualcomm Incorporated Algorithm and apparatus to deploy virtual machine monitor on demand
US20140298061A1 (en) * 2013-04-01 2014-10-02 Cleversafe, Inc. Power control in a dispersed storage network
US9218282B2 (en) 2013-10-31 2015-12-22 Micron Technology, Inc. Memory system data management
US9619387B2 (en) 2014-02-21 2017-04-11 Arm Limited Invalidating stored address translations
US10031857B2 (en) 2014-05-27 2018-07-24 Mellanox Technologies, Ltd. Address translation services for direct accessing of local memory over a network fabric
EP2955634B1 (en) * 2014-06-10 2021-03-03 Deutsche Telekom AG Paravirtualization-based interface for memory management in virtual machines
US10255090B2 (en) 2014-06-23 2019-04-09 Vmware, Inc. Hypervisor context switching using a redirection exception vector in processors having more than two hierarchical privilege levels
US9501425B2 (en) 2014-11-14 2016-11-22 Cavium, Inc. Translation lookaside buffer management
US9798567B2 (en) * 2014-11-25 2017-10-24 The Research Foundation For The State University Of New York Multi-hypervisor virtual machines
KR102026877B1 (ko) 2015-06-16 2019-09-30 한국전자통신연구원 메모리 관리 유닛 및 그 동작 방법
CN107924321B (zh) 2015-09-25 2022-01-18 英特尔公司 针对虚拟机退出的嵌套虚拟化
TWI597953B (zh) * 2015-11-25 2017-09-01 財團法人工業技術研究院 具故障轉移能力的快速周邊元件互連網路系統與操作方法
US10176006B2 (en) * 2016-07-18 2019-01-08 International Business Machines Corporation Delaying purging of structures associated with address translation
US10114759B2 (en) * 2016-12-06 2018-10-30 Vmware, Inc. Trapless shadow page tables
US10628202B2 (en) 2017-09-19 2020-04-21 Microsoft Technology Licensing, Llc Hypervisor direct memory access
US10853259B2 (en) * 2017-12-29 2020-12-01 Red Hat, Inc. Exitless extended page table switching for nested hypervisors

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2004066059A2 (en) * 2003-01-22 2004-08-05 Falanx Microsystems As Microprocessor systems
CN101520753A (zh) * 2008-02-29 2009-09-02 Arm有限公司 数据处理设备和控制虚拟机对安全存储器的访问的方法

Also Published As

Publication number Publication date
EP3685273A1 (en) 2020-07-29
EP3685273B1 (en) 2024-03-06
WO2019059988A1 (en) 2019-03-28
EP3685274B1 (en) 2024-03-06
WO2019059983A1 (en) 2019-03-28
US20190087216A1 (en) 2019-03-21
CN111108486B (zh) 2023-10-03
US10599461B2 (en) 2020-03-24
EP3685272A1 (en) 2020-07-29
CN111108486A (zh) 2020-05-05
CN111108487A (zh) 2020-05-05
CN111095227A (zh) 2020-05-01
EP3685274A1 (en) 2020-07-29
US10628202B2 (en) 2020-04-21
US20190087368A1 (en) 2019-03-21
WO2019059987A1 (en) 2019-03-28
US20190087217A1 (en) 2019-03-21

Similar Documents

Publication Publication Date Title
CN111108487B (zh) 管理程序直接存储器访问
US8832352B2 (en) Hypervisor-driven protection of data from virtual machine clones
US8775715B2 (en) Protection of data from virtual machine clones via paravirtualization
US9251088B2 (en) Mechanisms for eliminating a race condition between a hypervisor-performed emulation process requiring a translation operation and a concurrent translation table entry invalidation
CN109416644B (zh) 用于虚拟机实时迁移的系统和方法
EP3433748A1 (en) Data protection using virtual resource views
US11847225B2 (en) Blocking access to firmware by units of system on chip
US10712766B2 (en) Hypervisors timer techniques
US10885229B2 (en) Electronic device for code integrity checking and control method thereof
US20150248237A1 (en) Reverse Copy on Write for Better Cache Utilization
US20120265920A1 (en) Storage block deallocation in virtual environments
US9760577B2 (en) Write-behind caching in distributed file systems
US20220335109A1 (en) On-demand paging support for confidential computing
US9852100B2 (en) Guest-programmable location of advanced configuration and power interface (ACPI) tables in virtualized systems
WO2022100693A1 (zh) 一种地址转换关系的配置方法及计算机系统
US10394585B2 (en) Managing guest partition access to physical devices
JP2018181378A (ja) ハードウェア内で変換索引バッファ(tlb)シュートダウンを指示および追跡するための方法およびシステム、並びに非一時的なコンピュータ可読媒体
US20140237469A1 (en) Firmware metadata and migration in virtualized systems
US20220035647A1 (en) Utilizing virtual input/output memory management units (iommu) for tracking encryption status of memory pages
US20170293554A1 (en) Hardware-assisted garbage collection
WO2023239476A1 (en) Address translation prefetching for input/output devices

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant