CN109564522A - 控制对计算装置的存储器中的页的访问 - Google Patents

控制对计算装置的存储器中的页的访问 Download PDF

Info

Publication number
CN109564522A
CN109564522A CN201780047299.8A CN201780047299A CN109564522A CN 109564522 A CN109564522 A CN 109564522A CN 201780047299 A CN201780047299 A CN 201780047299A CN 109564522 A CN109564522 A CN 109564522A
Authority
CN
China
Prior art keywords
page
access
rmt
virtual machine
entry
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201780047299.8A
Other languages
English (en)
Other versions
CN109564522B (zh
Inventor
大卫·A·卡普兰
杰里米·W·鲍威尔
托马斯·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.)
Advanced Micro Devices Inc
Original Assignee
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
Priority claimed from US15/224,302 external-priority patent/US10169244B2/en
Application filed by Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of CN109564522A publication Critical patent/CN109564522A/zh
Application granted granted Critical
Publication of CN109564522B publication Critical patent/CN109564522B/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/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
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • 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/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1483Protection against unauthorised use of memory or access to memory by checking the subject access rights using an access-table, e.g. matrix or list
    • 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/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • 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/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/151Emulated environment, e.g. virtual machine
    • 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

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)
  • Mathematical Physics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Storage Device Security (AREA)

Abstract

一种表遍历器从请求实体接收将第一地址转换成与存储器页相关联的第二地址的请求。在对应的表遍历期间,当所述页的反向映射表(RMT)中的条目中的锁定指示符被设置为将所述RMT中的所述条目标记为已锁定时,所述表遍历器停止处理所述请求并执行补救措施。此外,当所述请求与对所述页的写入访问相关联并且所述RMT中的所述条目中的不可变指示符被设置为将所述页标记为不可变时,所述表遍历器停止处理所述请求并执行所述补救措施。否则,当所述RMT中的所述条目未被锁定且所述页未被标记为对于写入访问不可变时,所述表遍历器继续处理所述请求。

Description

控制对计算装置的存储器中的页的访问
背景技术
相关技术
一些计算装置执行虚拟机,虚拟机是模拟计算装置的硬件或以其他方式与计算装置的硬件进行交互,以便为执行软件程序提供支持的软件实体。例如,虚拟机可以使用计算装置中的硬件元件(处理器、存储器、网络接口等)来为运行称为“客体”操作系统的操作系统的一个或多个实例提供支持。客体操作系统反过来为执行其他软件程序(例如应用程序、数据库等)提供支持。
一些计算装置同时(例如,在对应的时间片中,在一个或多个处理器核心上并行地等)执行两个或更多个虚拟机。在这样的计算装置中,每个虚拟机都可以访问专门分配供虚拟机使用的硬件资源。例如,可以为每个虚拟机分配计算装置中的存储器的对应区域,以供该虚拟机专用。在这些计算装置中,可以防止第一虚拟机访问分配给第二虚拟机的存储器区域,反之亦然。在这些计算装置中的一些中,管理程序对每个虚拟机实施访问控制。管理程序是在计算装置上操作/执行的软件实体,并且用作在计算装置上执行的虚拟机的管理器或控制器。例如,管理程序可以启动或初始化虚拟机、控制虚拟机对计算装置硬件的访问、终止或关闭虚拟机等。
虽然认为管理程序对虚拟机提供访问控制,但管理程序可能并不总是正确地实施访问控制。例如,管理程序的部分或全部程序代码可被恶意程序代码替换,管理程序的程序代码可能会被破坏或包含错误等。在这种情况下,管理程序可能会故意或无意地允许虚拟机访问分配给另一个虚拟机的计算硬件。例如,在一些计算装置中,管理程序负责提供地址信息以使虚拟机能够访问对应存储器区域中的数据。在这些计算装置中,管理程序提供虚拟机(或在其上执行的软件)使用的本地地址与数据实际位于存储器中的物理地址之间的转换。当管理程序不能正常运行时,管理程序可提供不正确的地址信息,从而引导虚拟机访问非预期或不希望的存储器区域(例如,分配给其他虚拟机的存储器区域)的数据。通过如所描述的那样提供不正确的地址信息,管理程序可导致数据被违反一个或多个访问控制或规则地访问。
附图说明
图1呈现了示出根据一些实施方案的虚拟机和管理程序的框图。
图2呈现了示出根据一些实施方案的计算装置的框图。
图3呈现了示出根据一些实施方案的用于实现客体页表的一组表的框图。
图4呈现了示出根据一些实施方案的反向映射表的框图。
图5呈现了示出根据一些实施方案的客体访问的页表的框图。
图6呈现了示出根据一些实施方案的用于更新反向映射表的过程的框图。
图7呈现了示出根据一些实施方案的用于清除客体访问的页表中的指示符的过程的框图。
图8呈现了示出根据一些实施方案的使用反向映射表和客体访问的页表的过程的框图。
图9呈现了示出根据一些实施方案的用于确定虚拟机是否可以访问对应页的过程的框图。
图10呈现了示出根据一些实施方案的用于初始化反向映射表的过程的框图。
在整个附图和描述中,相同的附图标记表示相同的附图元件。
具体实施方式
呈现以下描述以使本领域技术人员能够制造和使用所描述的实施方案,并且在特定应用及其要求的上下文中提供以下描述。对所述实施方案的各种修改对于本领域技术人员来说将是显而易见的,并且本文定义的一般原理可以应用于其他实施方案和应用。因此,所描述的实施方案不限于所示的实施方案,而是将被赋予与本文所公开的原理和特征一致的最宽范围。
虚拟存储器
在所描述的实施方案中,计算装置使用虚拟存储器技术来处理在计算装置中执行的程序的数据访问。例如,程序可以包括应用程序、操作系统、装置驱动程序、虚拟机、由外围装置执行的软件等。通常,当计算装置中的程序访问数据时,将包括数据的给定大小(例如,4kB、2MB等)的存储器块或“页”从大容量存储装置(例如,磁盘驱动器或半导体存储器)复制到计算装置的存储器中的可用物理位置,或者在存储器中新创建所述存储器块或“页”。为了避免程序需要跟踪存储器中页的物理位置,计算装置为程序跟踪页的物理位置。程序使用“虚拟地址空间”(“虚拟地址空间”是特定于对应程序的本地地址空间)中的“虚拟地址”来访问存储器,而不是使用基于页的物理位置的地址(或“物理地址”)来访问存储器。从程序的角度来看,虚拟地址指示数据存储在存储器中的实际物理位置,而存储器访问是由程序对应地使用虚拟地址进行的。然而,虚拟地址可能不直接映射到存储器中的页中存储数据的物理位置的物理地址。作为跟踪页的物理位置的一部分,计算装置将存储器访问请求中的程序使用的虚拟地址转换为数据实际所在的物理地址。然后,计算装置使用物理地址来执行程序的存储器访问。
为了实现上述虚拟地址到物理地址的转换,计算装置包括“页表”。页表是存储在计算装置的存储器中的记录,其包括条目或“页表条目”,其具有存储在存储器中的数据页的虚拟地址到物理地址的转换信息。换句话说,页表包括虚拟地址到对应物理地址的“映射”。在从程序接收到访问给定虚拟地址处的存储器的请求时,计算装置通过执行“页表遍历”从页表获取对应的物理地址信息,在该页表遍历期间,在页表中搜索提供与虚拟地址相关联的物理地址的页表条目。
由于上述页表遍历相对较慢,因此希望避免执行页表遍历。因此,计算装置包括转换后备缓冲器(“TLB”),其是用于存储在页表遍历期间获取的有限数量的页表条目的副本(或基于页表条目的信息)的本地高速缓存。在操作期间,计算装置首先尝试从对应的TLB获取高速缓存的页表条目,以执行虚拟地址到物理地址的转换。当TLB中不存在对应页表条目的副本时(即,当发生“未命中”时),计算装置执行页表遍历以获取期望的页表条目-并且将所获取的页表条目的副本高速缓存在TLB中。
虚拟机、管理程序和分层页表
在所描述的实施方案中,计算装置执行虚拟机,虚拟机是模拟计算装置的硬件或以其他方式与计算装置的硬件进行交互,以便为执行软件程序提供支持的软件实体。例如,虚拟机可以使用计算装置中的硬件元件(处理器、存储器、网络接口等)来为运行称为“客体”操作系统的操作系统的一个或多个实例提供支持。客体操作系统反过来为执行其他软件程序(例如应用程序、数据库等)提供支持。
在所描述的实施方案中,计算装置可以同时(例如,在对应的时间片中,在一个或多个处理器核心上并行地等)执行两个或更多个虚拟机。在这些实施方案中,每个虚拟机都可以与分配供虚拟机使用的各种硬件资源相关联。例如,可以向每个虚拟机提供对分配的存储器区域(例如,连续或非连续的存储器块)的独占访问。换句话说,可以防止第一虚拟机访问与第二虚拟机相关联的存储器区域中的数据页,反之亦然。在所描述的实施方案中,管理程序对每个虚拟机实施访问控制。管理程序是在计算装置上操作或执行的软件实体,并且用作在计算装置上执行的虚拟机的管理器或控制器。例如,管理程序可以启动或初始化虚拟机、控制虚拟机对计算装置硬件的访问、终止或关闭虚拟机等。
图1呈现了示出根据一些实施方案的虚拟机和管理程序的框图。如图1中可见,存在三个虚拟机(“VM”)100,每个虚拟机都执行客体操作系统(“客体OS”)102和一个或多个程序(“程序”)104,例如数据库、软件应用程序等。虚拟机100与管理程序106进行通信,管理程序在主机操作系统(“主机OS”)108和虚拟机100之间进行交互。主机操作系统108中计算装置硬件110和管理程序106之间提供接口。尽管图1中呈现了各种元件,但是在一些实施方案中,存在不同的元件布置。例如,在一些实施方案中,不存在主机操作系统108,管理程序106更直接地与计算装置硬件110进行通信。作为另一示例,可以存在不同数量的虚拟机100。
在所描述的实施方案中,客体操作系统和管理程序都使用上述虚拟存储器技术。因此,在计算装置中维护页表的层次结构。在页表的层次结构内,每个客体操作系统都与本地页表(客体页表)相关联,管理程序与嵌套页表相关联。通常,在从处理器接收到从在客体操作系统下执行的程序所使用的虚拟地址到系统物理地址的转换的请求时,硬件表遍历器(即,被配置为执行页表遍历的电路)使用客体页表和嵌套页表执行转换。更具体地,表遍历器使用客体页表将程序使用的虚拟地址转换为客体物理地址,该客体物理地址是客体操作系统本地的地址。由于客体物理地址可能不直接映射到存储器中存储程序要访问的数据(或指令等)的位置,因此表遍历器使用嵌套页表将客体物理地址转换为系统物理地址,系统物理地址是指示存储数据的存储器中的实际位置的地址。在获取系统物理地址时,表遍历器提供用于访问数据的系统物理地址,并且还可以将系统物理地址高速缓存在TLB中。
在所描述的实施方案中,管理程序可以对嵌套页表中的信息执行各种操作。例如,管理程序可以更新(即,覆写)从客体物理地址到系统物理地址等的映射。如下所述,所描述的实施方案执行操作以确保管理程序不会改变嵌套页表中的信息(恶意地、错误地等等),确保管理程序不会提供不正确的映射/转换。
综述
所描述的实施方案包括用于控制虚拟机对计算装置中的存储器中的页的访问的机制。更具体地,所描述的实施方案包括一对表,其用于确保管理程序(和/或计算装置中的另一实体)未在嵌套页表重新映射从客体物理地址到系统物理地址的转换等等。所述一对表包括:(1)反向映射表和(2)客体访问的页表。反向映射表包括可用于确定在对嵌套页表的表遍历期间获取的客体物理地址的系统物理地址是否与先前使用的系统物理地址匹配等等的信息。换句话说,反向映射表可用于确保存储器中给定页的系统物理地址一次仅匹配一个客体物理地址。客体访问的页表包括可用于确定虚拟机是否被记录为先前已经访问了存储器的某一区域中的页的信息。
在一些实施方案中,在将客体物理地址转换到系统物理地址(例如,基于代表对应虚拟机的处理器中的加载/存储单元的请求)时,硬件表遍历器(例如,在存储器管理单元中)执行对嵌套页表的表遍历,以从嵌套页表中的对应条目获取系统物理地址。不知道嵌套页表以及对应的条目是否已经被修改,因此不知道对应条目中的映射/转换是否违反对应的规则(例如,对应页是否已经与多个客体物理地址相关联,等)。因此,表遍历器在从嵌套页表获取系统物理地址时,检查反向映射表和对应的客体访问的页表中的至少一个,以确定虚拟机是否可以访问计算装置中的存储器中的对应页。更具体地,表遍历器检查反向映射表以确保除其他之外(例如,对应页不是不可变的,反向映射表中对应于系统物理地址的条目未被锁定等),对应于系统物理地址的条目是有效的,并且具有与请求中的客体物理地址匹配的记录的客体物理地址。当这是真的时,可以确定系统物理地址与客体物理地址匹配(即,系统物理地址仅映射到客体物理地址)。然后,表遍历器检查反向映射表中的条目中的页访问信息,以确定页访问信息是否指示虚拟机已经访问了存储器页。如果是,则表遍历器将系统物理地址返回到加载/存储单元。否则,当页访问信息指示虚拟机尚未访问存储器页时,表遍历器在客体访问的页表中执行查找以确定客体访问的页表中的页访问信息是否匹配或以其他方式一致(即表示没有访问)。当反向映射表中的检查或客体访问的页表中的检查返回不匹配或以其他方式不一致时,表遍历器会使转换失败并可向管理程序返回错误消息。在接收到错误时,管理程序可以执行补救措施(例如,执行错误处理代码、故障等)。相比之下,当反向映射表和客体访问的页表中的检查都返回匹配或以其他方式一致时(即,就虚拟机是否已访问对应页取得一致),表遍历器将系统物理地址返回到加载/存储单元,使加载/存储单元能够使用系统物理地址执行存储器访问(并且可能将从表遍历获得的系统物理地址和/或其他信息高速缓存在TLB中,等)。
通过使用反向映射表和客体访问的页表,所描述的实施方案能够检测出嵌套页表的潜在恶意或错误修改。避免对嵌套页表的这种修改可以通过避免管理程序(和/或另一实体)不正确地将客体物理地址重新映射到系统物理地址以引导虚拟机访问(例如,覆写、执行等)未知、不需要或不正确的存储器区域(包括分配给其他虚拟机的存储器区域)中的数据,来提高计算装置中的虚拟机的数据的安全性。换句话说,所描述的实施方案可以通过实施诸如以下规则来提高数据的安全性:存储器中的每个页仅被允许与单个/唯一的客体物理地址相关联(不允许客体物理地址别名),并且如本文所述的,如果不涉及对应虚拟机,则不能重新映射在使用中的私有客体页。另外,单独地或与其他技术(例如对虚拟机存储器区域的加密和对虚拟机处理器状态(例如,寄存器等)的保护)组合地,所描述的实施方案可以避免对管理程序中隐含信任的需要,这可以简化对计算装置的管理、提高安全性等。例如,通过使用不可变页(如下面更详细描述的),所描述的实施方案可以通过防止管理程序恶意地使用数据的较旧版本来覆写存储页中的数据的当前版本(包括加密的数据),来避免管理程序执行“重放”攻击。因此,所描述的实施方案可以改善计算装置的安全性、操作稳定性和对消费者的价值。
计算装置
图2呈现了示出根据一些实施方案的计算装置200的框图。如图2中可见,计算装置200包括处理器202、存储器206、大容量存储装置216和直接存储器访问机制(“DMA”)218。处理器202是在计算装置200中执行计算操作的装置。处理器202包括两个核心,即核心208和209,每个核心都包括一个或多个计算机制,例如中央处理单元(CPU)、图形处理单元(GPU)、嵌入式处理器、专用集成电路(ASIC)和/或其他计算机制。
处理器202还包括高速缓存存储器(或“高速缓存”),其用于本地存储由核心208和209用于执行计算操作的数据和指令。如图2中可见,处理器202中的高速缓存包括核心208和209中的每一个中的一级(L1)高速缓存210和211(“L1 210”和“L1 211”)。每个L1高速缓存都包括存储器电路,诸如以下各项中的一个或多个:静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、双倍数据速率同步DRAM(DDR SDRAM)和/或其他类型的用于存储由对应的核心208和209使用的数据和指令的存储器电路,以及用于处理对存储在存储器电路中的数据和指令的访问的控制电路。处理器202另外还包括共享二级(L2)高速缓存212,其包括存储器电路,诸如以下各项中的一个或多个:SRAM、DRAM、DDR SDRAM和/或其他类型的用于存储由核心208和209使用的数据和指令的存储器电路,以及用于处理对存储在存储器电路中的数据和指令的访问的控制电路。处理器202另外还包括共享三级(L3)高速缓存204,其包括存储器电路,诸如以下各项中的一个或多个:SRAM、DRAM、DDR SDRAM和/或其他类型的用于存储由核心208和209使用的数据和指令的存储器电路,以及用于处理对存储在存储器电路中的数据和指令的访问的控制电路。
处理器202还包括平台安全处理器(“PSP”)232。平台安全处理器232包括处理器核心、ASIC和/或用于在计算装置200中执行安全操作的其他功能块。通常,已知平台安全处理器232对于硬件和软件实体的恶意或错误行为是安全的,因此可以在计算装置200内用于保护易受这种行为影响的操作。例如,平台安全处理器232可以执行与在计算装置200中启用可信执行环境相关联的操作,诸如执行加密操作(例如,密钥生成、对数据的加密/解密等)、对硬件和软件实体的注册和/或认证等。在一些实施方案中,平台安全处理器232执行本文描述的用于控制虚拟机对计算装置200中的存储器206中的页的访问的操作中的至少一些操作。
存储器206是计算装置200的“主存储器”,并且包括存储器电路,诸如以下各项中的一个或多个:DRAM、DDR SDRAM、非易失性随机存取存储器(NVRAM)和/或其他类型的用于存储供计算装置200中的功能块使用的数据和指令的存储器电路,以及用于处理对存储在存储器电路中的数据和指令的访问的控制电路。由计算装置执行的虚拟机可以具有分配供虚拟机专用的对应存储区域,使得给定虚拟机是应访问对应区域中的数据的唯一虚拟机。
大容量存储器216是存储用于在计算装置200中使用的数据和指令的大容量存储装置,例如高容量半导体存储器(诸如闪存、NVRAM等的非易失性半导体存储器)、磁盘驱动器(硬盘驱动器等)、光学驱动器等。在所描述的实施方案中,大容量存储装置216保存被获取以存储在存储器206中以供计算装置200中的功能块随后使用的数据和指令。例如,可以给定大小(例如,4kB、2MB、1GB等)的块或“页”从大容量存储装置216检索数据和/或指令,并且可将所述页存储在存储器206中。此外,页可能是在存储器206中的可用物理位置处新创建的(例如,用于存储计算结果等)。从大容量存储装置216检索的用于存储在存储器206中的页可以被保留以供特定虚拟机独占访问,或者可以在多个虚拟机之间共享。
存储器管理单元214是对处理器202中的存储器访问请求进行处理的功能块。当数据和指令将由处理器202中的功能块访问(即,由核心208或另一功能块读取、写入、检查/验证、删除、使无效等)时,功能块向存储器管理单元214发送存储器访问请求。然后,存储器管理单元214将对应的请求发送到L2高速缓存212、L3高速缓存204和存储器206中的一个或多个,以满足/解决存储器访问请求。例如,如果要基于存储器访问请求来检索数据,则存储器管理单元214可以从L2高速缓存212、L3高速缓存204或存储器206(或大容量存储装置216,如果数据不存在于L2高速缓存212、L3高速缓存204或存储器206中的一个中)获取数据,并将数据转发到请求功能块。
如上所述,计算装置200使用虚拟存储器来使软件程序(例如,由核心208和209执行)能够使用必须被转换为物理地址的虚拟地址来访问存储器。在从具有虚拟地址的程序接收到存储器访问请求时,存储器管理单元214(例如,存储器管理单元214中的表遍历器功能块)执行用于将虚拟地址转换为数据在存储器206中所在的页的物理地址的操作。
在一些实施方案中,存储器管理单元214使用两种机制来执行虚拟地址到物理地址转换。第一种机制是页表的层次结构,其包括与每个客体操作系统相关联的页表和与管理程序相关联的页表。页表的示例在图2中示出为客体页表222和嵌套页表224,它们分别与客体操作系统和管理程序相关联。每个页表都是存储在存储器206中的数据结构(例如,一个或多个表、阵列、列表等)。例如,客体页表222可以存储在一个存储器区域中,例如被分配供对应虚拟机独占访问的预留的存储器区域226。在一些实施方案中,给定页表存储存在于存储器206中的由对应程序、虚拟机等存储在存储器206中的每个页的至少一个转换。因此,在这些实施方案中,如果页是从大容量存储装置216复制到存储器206的或在存储器206中新创建的并且在存储器206中保持可用,则相关联的虚拟地址到物理地址转换应存在于对应的页表中。如上所述,表遍历器使用客体页表222和嵌套页表224来执行虚拟地址到物理地址的转换。
用于执行虚拟地址到物理地址转换的第二种机制是转换后备缓冲器220和221(“TLB 220”和“TLB 221”),它们是核心208和209中的每一个中的高速缓存,其被配置为存储/高速缓存在页表遍历期间获取的虚拟地址到物理地址转换的信息。在可能的情况下,核心208和209从对应的TLB 220和221获取虚拟地址到物理地址转换信息,以避免执行页表遍历。
直接存储器访问机制218是被配置为执行从大容量存储装置216到存储器206的来回数据传输的功能块。通常,直接存储器访问机制218从处理器202分担数据传输操作,这使得处理器202能够避免执行与执行存储器传输有关的一些计算工作。
计算装置200包括存储在存储器206中的反向映射表228。反向映射表228是包括多个条目的数据结构(例如,表、列表等),存储器206中的可被分配供一个或多个虚拟机使用的每个存储器页对应一个条目。例如,如果存储器206包括可以以4kB页分配给虚拟机的32GB存储空间,则反向映射表包括8,388,608个条目。反向映射表228由管理程序和其他实体用于保持包括指示与系统物理地址相关联的客体物理地址的信息的记录、用于保持不可变页的记录,以及用于保持与对应页相关联的其他信息的记录。以这种方式,计算装置200维护可用于检测何时对嵌套页表进行了改变的记录。下面更详细地描述反向映射表228。
计算装置200包括存储在存储器206中的客体访问的页表230。客体访问的页表230是包括多个指示符的数据结构(例如,位掩码、字符串、表、列表等),被分配供对应虚拟机访问的每个存储器页对应一个指示符。例如,如果分配4GB存储器区域供对应虚拟机独占访问并且页大小为4kB,则在客体访问的页表230是位掩码的实施方案中,客体访问的页表230的大小是1,048,576位。当对应的虚拟机正在访问(即,读取、写入和/或以其他方式与其交互)对应页时,虚拟机(和/或诸如表遍历器等的另一个实体)将对应的指示符设置为预定值,例如1。否则,虚拟机可以清除指示符或将指示符设置为诸如0之类的值。例如,在客体访问的页表230是位掩码的实施方案中,当存储器中给定位置的页正在被访问时,对应的位可以设置为1,而当虚拟机不正在访问页时,设置为0。以这种方式,虚拟机可以保持虚拟机正在访问的页的记录。下面更详细地描述客体访问的页表230。
在一些实施方案中,阻止管理程序直接访问反向映射表228和客体访问的页表230。例如,反向映射表228和客体访问的页表230中的一个或两个可以存储在管理程序不具有直接访问权限的存储器区域中和/或可以在反向映射表228中被标记为不可变的(即,存储反向映射表228和客体访问的页表230的页本身可以标记为不可变的。例如,如图2所示,客体访问的页表230可以存储在预留存储器区域226中,该预留存储器区域被分配供对应虚拟机的专用。作为另一个示例,反向映射表228和客体访问的页表230中的一个或两个可以被加密成不能由管理程序直接解密的形式。在一些实施方案中,反向映射表228和客体访问的页表230中的一个或两个存储在管理程序不能直接访问并加密的存储器区域中。例如,在一些实施方案中,预留的存储器区域226都被分配供对应的虚拟机专用并被加密。尽管管理程序不被允许“直接”访问反向映射表228和客体访问的页表230,但是管理程序可以使计算装置200中的其他元件或实体(诸如处理器等)对表执行操作以及使用表中的信息。这些操作如下所述。
在一些实施方案中,通信路径(包括一个或多个总线、导线、导杆和/或其他连接)耦合在计算装置200中的各种功能块(处理器核心208和209、存储器管理单元214、存储器206,等)之间,如元件之间的箭头线所示。通信路径用于在功能块之间传输命令、数据、控制信号和/或其他信息。
尽管用特定的核心布置描述了实施方案,但是一些实施方案包括不同数量的核心和/或核心的不同布置。例如,一些实施方案仅具有一个核心,而其他实施方案具有两个、五个、八个或另一数量的核心。通常,所描述的实施方案可以使用可以执行本文所述操作的任何核心布置。
尽管使用特定的高速缓存布置描述了实施方案,但是一些实施方案包括不同数量的高速缓存和/或高速缓存的不同布置。例如,一些或所有高速缓存(例如,L1高速缓存210和211等)可以被划分为单独的指令和数据高速缓存。另外,L2高速缓存212可以不被共享,因此可以仅由单个核心使用(即,处理器202中可以存在两个L2高速缓存)。作为另一示例,一些实施方案包括不同级别的高速缓存,从仅一级高速缓存到多级高速缓存,并且这些高速缓存可位于处理器202中和/或处理器202外部。通常,所描述的实施方案可以使用可以执行本文所述操作的任何高速缓存布置。
尽管在图2中计算装置200和处理器202为说明性目的而被简化,但是在一些实施方案中,计算装置200和/或处理器202包括用于执行本文描述的操作和其他操作的附加或不同的元件和机制。例如,计算装置200和/或处理器202可以包括电源控制器、电池、媒体处理器、输入-输出机制、通信机制、联网机制、显示机制等。
处理器202、存储器206、大容量存储装置216和直接存储器访问机制218是可以由图1中的计算装置硬件110表示的“硬件”的一些示例。因此,在一些实施方案中,主机操作系统108和/或管理程序106在处理器202、存储器206、大容量存储装置216和直接存储器访问机制218与客体操作系统102和程序104之间进行交互。在这些实施方案中,计算装置200(例如,核心208-209等)执行管理程序106、虚拟机100、客体操作系统102和程序104,以及主机操作系统108(在存在主机操作系统108的实施方案中)。另外,在本说明书中对“计算装置”和计算装置内的元件的引用可以指代计算装置200和相关联的元件。
计算装置200可以是或可以包括在执行计算操作的任何电子装置中。例如,计算装置200可以是或可以包括在诸如台式计算机、膝上型计算机、可穿戴计算装置、平板计算机、智能电话、服务器、虚拟或增强现实设备、网络设备、玩具、音频-视觉设备、家用电器、控制器、车辆等,和/或它们的组合等电子装置中。
页表
如上所述,计算装置使用页表的层次结构来执行地址转换。图3呈现了示出根据一些实施方案的用于实现客体页表的一组表的框图。嵌套页表可以以与图3中所示的表的布置类似的方式实现。
如图3中可见,如图3中可见,客体页表300包括页映射4级表302、页目录指针表(“PAGE DIR PTR TABLE”)304、页目录表(“PAGE DIR TABLE”)306、页表308和存储页310。页映射4级表302、页目录指针表304、页目录表306和页表308是存储在存储器中的数据结构(例如,表、链接列表等)。页映射4级表格302、页目录指针表304和页目录表306中每个都包括关于在表遍历以查找对应于虚拟地址314的物理地址的下一步骤期间要搜索(或“遍历”)的后续表的信息。例如,页映射4级表302包括多个条目,每个条目都包括将对应的地址位子集从虚拟地址314映射到页目录指针表(例如页目录指针表304,如图3所示)的信息。客体页表300包括指示与虚拟地址的对应部分相关联的特定存储页的物理地址。存储页310是存储器中的由虚拟地址314指示的数据所在的特定页。
在一些实施方案中,当在客体页表300中执行表遍历以获取与虚拟地址314相关联的物理地址时,表遍历器读取控制寄存器(“CR”)312以确定与对应的虚拟机相关联的页映射级别表(例如,页映射4级表302)在存储器中的位置。然后,表遍历器使用来自虚拟地址314的位的子集(例如,64位虚拟地址的位39-47)来搜索(或“遍历”)页映射4级表302中的指示下一个要遍历的页目录指针表(例如,页目录指针表304)的位置的条目(示为“PML4E”)。表遍历器接下来使用来自虚拟地址314的位的对应的子集,继续遍历剩余的表,即页目录指针表304、页目录表(例如,页目录表306)和页表(例如,页表308),遍历每个表,并在表中定位指示要遍历的下一个表的条目(示为“PDPE”和“PDE”)。最后,使用从页表308获取的物理地址(页表条目或“PTE”),表遍历器到达特定存储页(例如,存储页310)。通过使用虚拟地址314的对应位部分(例如,64位虚拟地址的位0-11),表遍历器确定存储页310中的包括由虚拟地址314指示的数据的条目(DATA)。如果表遍历器不能找到虚拟地址314的地址转换,则执行错误处理操作(例如,发出页错误并随后处理所述页错误,等等)。
如本文所述,地址转换信息可在被添加到客体页表300之后被修改/改变、更新等。例如,当页从第一位置移动到存储器中的第二位置,从第一虚拟机重新分配到第二虚拟机等时,可以对应地更新该组表中的一个或多个表。作为另一示例,管理程序可不正确地(恶意地、错误地等)更新客体页表300中的地址映射,例如通过在该组表中的一个或多个表中写入不正确的信息或旧/过时的信息。所描述的实施方案使用反向映射表228和客体访问的页表230来避免使用来自客体页表300的不正确更新的信息。换句话说,所描述的实施方案实施规则,例如存储器中的每个页仅被允许与单个/唯一的客体物理地址相关联(不允许客体物理地址别名),如本文所述,在使用中的私有访客页在不涉及对应虚拟机的情况下不能被重新映射,并且不可变页不能被管理程序和/或在核心208-209上执行的其他软件实体写入。
尽管图3中示出了特定的表布置,但是在一些实施方案中,使用不同数量的表和/或表的不同布置。例如,在一些实施方案中,仅使用单个表,单个表将虚拟地址映射到物理地址(或者,例如,虚拟地址到客体物理地址等)。
反向映射表
图4呈现了示出根据一些实施方案的反向映射表228的框图。如上所述,反向映射表228除了别的以外,还包括用于确定为查找客体物理地址的对于嵌套页表224的表遍历是否返回与先前使用的系统物理地址匹配的系统物理地址的信息。
如图4中可见,反向映射表228包括多个条目400(在图4中,使用虚线突出显示条目400)。反向映射表228中的每个条目都包括关于存储器206中的对应页(例如,存储器中可以被分配以供一个或多个虚拟机使用的每个4kB页)的信息。使用与每个页相关联的系统物理地址来索引反向映射表228中的条目,使得每个条目都与特定系统物理地址相关联。例如,对于4kB页,反向映射表228中的第一条目可以与第一或最低可分配系统物理地址(地址A)相关联,第二条目可以与第二可分配系统物理地址(地址A+4kB)相关联,以此类推。以这种方式,当要在反向映射表228中查找特定系统物理地址时,可以查找反向映射表228中的对应偏移处的条目。在一些实施方案中,反向映射表228的基地址被记录在计算装置200中的指定且可能安全的位置,以允许基于偏移的查找。
在反向映射表228中,每个条目400都被配置为存储全局共享页指示符(“GSP”)402、客体标识符(“GUEST ID”)404、客体物理地址(“GUEST PHY ADDR”)406、子页计数408、访问指示符410、大小指示符412、有效指示符414、锁定指示符416和不可变指示符(“IMMT”)418。全局共享页指示符402是对应页是否由两个或更多个虚拟机共享的指示符。在下面更详细地描述共享页。
客体标识符404是与被分配了对应页的虚拟机相关联的标识符。例如,当分配对应页供特定的虚拟机使用时,该特定虚拟机的标识符被记录在客体标识符404中。客体标识符404可以保存地址空间标识符(“ASID”)、ID字符串、名称和/或具体标识虚拟机的另一个值。
客体物理地址406是表示与条目的系统物理地址相关联的客体物理地址的值。例如,当分配给定系统物理地址处的页以供虚拟机使用时,供虚拟机用于对该页进行寻址的客体物理地址被记录在反向映射表228中的对应条目400中。以这种方式,记录了由要为其分配了每个页的虚拟机使用的特定客体物理地址。如下所述,记录该信息使得表遍历器能够在检查在对嵌套页表的遍历期间获取的系统物理地址时确定系统物理地址是否映射到预期的客体物理地址,即系统物理地址是否已同时映射到两个不同的客体物理地址。这可以使得检测映射是否已被管理程序或其他实体恶意地或错误地改变能够进行。
子页计数408是为较大大小页内的虚拟机分配的较小大小页的计数。例如,在支持2MB页和4kB页的系统中,2MB边界处的页(例如,地址A、A+2MB、A+4MB等处的页)可以在2MB页内具有已分配给虚拟机使用的4kB页的计数。假设在较大大小的页内已经分配了较小的页,即,为了避免使用不正确的页大小进行不允许的访问,子页计数值可以用于确定是否不允许访问较大大小的页。
访问指示符410是对应页是否已由被分配了对应页的虚拟机访问(读取、写入、更新和/或以其他方式访问)的指示符。当对应页由被分配了对应页的虚拟机访问了至少一次时,设置给定访问指示符410。当管理程序更新反向映射表228中的条目时,清除访问指示符410。与客体访问的页表230中的信息一起,清除的访问位410可用于确定管理程序自上次访问对应页以来已更新反向映射表228。
大小指示符412是对对应页的访问的预期大小。例如,假设在计算装置200中使用4kB页和2MB页,则大小指示符412可以指示请求访问的大小。大小指示符412使得检测不允许大小的访问(例如对实际上是4kB页的2MB访问)能够进行。
有效指示符414是条目400当前是否持有有效信息的指示符,即,当前在条目400中的信息是陈旧、过时等,还是可使用的。有效指示符414用于防止使用反向映射表228中的陈旧的、但是仍然可以包含旧信息(未删除信息,随机位模式等)的、已初始化,但不包含实际信息等的条目400的信息。在一些实施方案中,当页由虚拟机(或在其上执行的客体操作系统)拥有时设置有效指示符414,因此不给诸如管理程序之类的软件实体提供页的已转换地址(即,被表遍历器尽可能地阻止访问该页)。
锁定指示符416是条目400是否被锁定的指示符。当设置锁定指示符416时,条目400被认为是“已锁定”,而当锁定指示符416被清除时,条目400被认为是“自由的”或“可用的”。一旦条目400被给定的硬件或软件实体锁定,就阻止计算装置200中的其他硬件和软件实体访问条目400(例如,对条目400读取、写入/更新等)。相比之下,可以允许任何硬件和软件实体访问自由/可用条目(可能在设置锁定指示符416之后)。例如,在锁定指示符416是单个位并且最初清除(例如,设置为零)的实施方案中,一个实体可以设置锁定指示符416(例如,设置为1),访问条目400一次或多次,以及然后在完成访问条目400时清除锁定指示符416。通过使用锁定指示符416,所描述的实施方案可以避免竞争情况和可能对条目400进行同时读取和/或写入的其他情况。
不可变指示符418是对应页是否是不可变的指示符。当页是不可变的(即,使用对应的不可变指示符418标记为不可变)时,页不能由在核心208-209上执行的软件实体写入。另外,不允许页由任何核心208-209解除分配,而是由平台安全处理器232解除分配。下面更详细地描述不可变页。
尽管利用每个条目中的各种信息描述了反向映射表228,但是在一些实施方案中,在每个条目中可以存在信息的不同的布置或不同类型的信息。通常,反向映射表228中的条目400包括足以执行本文所述操作的信息。
客体访问的页表
图5呈现了示出根据一些实施方案的客体访问的页表230的框图。如上所述,客体访问的页表230包括用于确定对应的虚拟机是否被记录为先前已经访问了被分配供虚拟机使用的存储器的某一区域中的页的信息。
如图5中可见,客体访问的页表230包括多个指示符500(在图5中,使用虚线突出显示指示符500)。在所描述的实施方案中,每个客体访问的页表230都包括被分配供对应的虚拟机使用的每个存储器页(例如,4kB页)的指示符500。每个指示符500都包括用于确定虚拟机是否已访问对应页的信息。例如,指示符可以包括单个位,设置为0以指示对应页尚未被访问,而设置为1以指示已经访问了对应页。
尽管客体访问的页表230被描述为具有多个指示符500,但是在一些实施方案中,在客体访问的页表230中存在信息的不同布置或不同类型的信息。通常,客体访问的页表230包括足以使得确定虚拟机是否已访问某些页能够进行的信息。
不可变页
在所描述的实施方案中,存储器的页可以被视为不可变的。不可变页是在核心(例如,核心208-209)上执行的软件实体(例如,管理程序、客体操作系统、应用程序等)不能写入的页。换句话说,防止不可变页被任何软件实体完全或部分地重写、更新或修改、添加或移除等。另外,不可变页将由平台安全处理器(例如,平台安全处理器232)解除分配,而不能由核心(例如,核心208-209)(包括代表其上执行的软件实体(例如,管理程序等)或在其上执行的软件实体控制下行动的核心)解除分配。
在一些实施方案中,页可以被标记为不可变的,以保护页免受软件实体的不希望的写入或其他改变。例如,通常仅通过硬件(例如,通过平台安全处理器232)访问的页可以被标记为不可变的。这样的页可以包括其中客体访问的页表230存储在存储器106中的页和/或用于存储敏感信息(例如保留的虚拟机寄存器状态等)的页。如所描述的将页标记为不可变可以防止“重放”攻击,在这种攻击中,所需/当前页被恶意或错误地替换为页的早期且可能过时的版本(包括加密的页)。
在一些实施方案中,上述不可变指示符(即,不可变指示符418)可以与有效指示符(即,有效指示符414)、用于确定正在访问的虚拟机(即,在其上执行的客体操作系统)是否将被允许对页进行只读(RO)访问或读取/写入(R/W)访问的对页的共享/私有类型的访问的指示一起使用。例如,包括在用于访问的物理地址内或以其他方式与访问相关联的“c位”可以用作客体操作系统的访问的共享/私有类型的指示(例如,c位=0表示共享访问,c位=1表示私有访问)。例如,当有效指示符和不可变指示符都被清除(例如,设置为0)时,页可被视为“管理程序拥有”,因为该页不归客体操作系统所有(即,不被客体操作系统访问)。在这种情况下,管理程序对页具有R/W访问权限,并且当访问是针对共享页(例如,c位=0)时,客体操作系统具有R/W访问权限,当访问是针对私有页(例如,c位=1)时,客体操作系统具有RO访问权限。作为另一示例,当设置了有效指示符并且清除了不可变指示符时,该页可以被视为客体拥有(即,由特定客体操作系统拥有)。在这种情况下,管理程序具有RO访问权限,并且当访问是针对共享页(例如,c位=0)时,客体操作系统具有R/W访问权限,当访问是针对私有页(例如,c位=1)并且如本文所述,对客体访问的页表的检查表明客体已经访问了页时,客体操作系统具有R/W访问权限。作为另一示例,当有效指示符和不可变指示符都被设置时,页被视为不可变的。在这种情况下,管理程序和客体操作系统都具有RO访问权限,而不管访问的共享/私有类型。
反向映射表初始化
在一些实施方案中,当计算装置被初始化时(例如,在启动操作期间),初始化反向映射表228。图10呈现了示出根据一些实施方案的用于初始化反向映射表228的过程的框图。图10所示的操作被呈现为由一些实施方案执行的操作的一般示例。由其他实施方案执行的操作包括不同操作和/或以不同顺序执行的操作。另外,尽管在描述操作时使用了某些机制/元件(例如,平台安全处理器等),但是在一些实施方案中,其他机制也可执行操作和/或也可在其他机制/元件上执行操作。
当软件实体(例如,操作系统、管理程序等)在存储器中分配用于存储反向映射表228的区域时,图10所示的过程开始(步骤1000)。例如,软件实体可以执行一个或多个为反向映射表228查找并保留指定大小的存储器的块或部分的操作。
然后,软件实体将反向映射表228中的条目设置为初始值(步骤1002)。例如,软件实体可以将零写入存储器中的分配区域中的反向映射表228中的每个条目中。通过以这种方式设置条目,软件实体确保反向映射表228最初不包括可影响依赖于反向映射表228的后续操作的恶意或错误信息。换句话说,在该操作期间,软件实体在存储器中创建仅包含初始值的反向映射表228。
软件实体接下来用存储器中反向映射表228的位置(例如,起始地址和大小)的指示来更新每个核心(例如,核心208-209)上的对应寄存器(或其他存储器位置)(步骤1004)。在一些实施方案中,在计算装置的后续操作期间,寄存器(或其他存储器位置)被保护以防更新。例如,可以使用诸如每个核心中的机器状态寄存器(例如,具有锁定位的寄存器等)的专用寄存器来保留反向映射表228的位置的指示。
然后,软件实体在一个或多个指定页的反向映射表条目中设置不可变指示符(步骤1006)。例如,对于与存储器中的存储了反向映射表228本身的页相关联的条目、对于将要存储客体访问的页表的页,对于将要存储虚拟机寄存器状态的页等,可以设置不可变指示符(例如,1或其他值)。在该操作期间,软件实体可以执行一个或多个RMT_UPDATE命令以在反向映射表228中设置指定的不可变指示符。回想一下,如上所述设置不可变指示符可防止软件实体(包括管理程序等)随后更新对应页。
软件实体接下来使平台安全处理器执行对反向映射表中的条目内容的验证(步骤1008)。例如,软件实体可以在初始化反向映射表228之后的某个时刻,调用平台安全处理器的INIT功能,这使得平台安全处理器检查反向映射表228以验证在指定页的条目中设置了不可变指示符,并且反向映射表228中的其他条目(即,除了指定页的条目之外)包含初始值。如果是,则平台安全处理器可以在不执行补救措施的情况下完成INIT操作,从而释放反向映射表228以供使用,如本文所描述的。否则,当一个或多个条目被设置为不正确的初始值时,平台安全性处理器可以执行补救措施(例如,断言故障或错误,防止客体操作系统启动等)。以这种方式,平台安全处理器在允许使用反向映射表228之前确保反向映射表228处于正确状态。
在一些实施方案中,除了上面所描述的对反向映射表228的初始化的检查之外,平台安全处理器还具有其他职责。例如,在一些实施方案中,平台安全处理器执行与在多个客体操作系统(或多个虚拟机)之间迁移页以及在客体操作系统的反向映射表228之间传送反向映射表228中的对应条目的状态有关的操作(例如,加密、打包等)。作为另一示例,在一些实施方案中,平台安全处理器负责解除分配被标记为不可变的页-并且可以是被允许解除分配这些页的唯一实体。
更新反向映射表
图6呈现了示出根据一些实施方案的用于更新反向映射表228的过程的框图。图6所示的操作被呈现为由一些实施方案执行的操作的一般示例。由其他实施方案执行的操作包括不同操作和/或以不同顺序执行的操作。另外,尽管在描述操作时使用了某些机制/元件(例如,管理程序等),但是在一些实施方案中,其他机制也可执行操作和/或也可在其他机制/元件上执行操作。
当计算装置中的管理程序向虚拟机分配存储器中的页时,图6的过程开始(步骤600)。例如,当分配供虚拟机使用的存储器区域时,管理程序可以分配存储器区域中的特定页以及其他页。当虚拟机被新初始化时,在虚拟机的操作期间,当虚拟机请求分配一个或多个页等等时,可以执行分配。在分配期间,管理程序还可以用对应的客体物理地址将嵌套页表更新为系统物理地址信息。
在分配页时,管理程序向计算装置中的处理器发送与页相关联的RMT_UPDATE请求(步骤602)。当向处理器发送RMT_UPDATE请求时,管理程序可以执行对应的指令(例如,特殊CPU指令等)、访问专用寄存器(例如,模型特定的寄存器等),和/或使用另一个机制。RMT_UPDATE请求使处理器执行用于更新与存储器页相关联的反向映射表228中的条目的操作。在一些实施方案中,RMT_UPDATE请求包括足够的信息以使得更新反向映射表228中的条目能够进行,而无需从其他源(例如,从虚拟机等)获取信息。例如,RMT_UPDATE请求可以包括页所在的系统物理地址、供虚拟机用于对页进行寻址的客体物理地址、虚拟机的标识符、页大小、页是否被共享的指示、将页标记为不可变的请求、锁定反向映射表228中的条目的请求,和/或其他信息。在其他实施方案中,处理器从另一个源获取一些或所有信息。例如,管理程序和/或虚拟机可以将关于页的信息写入指定的存储器元件(例如,存储器206、专用寄存器等),并且处理器可以读取存储器元件以获取信息。作为另一示例,处理器可以从管理程序和/或虚拟机请求信息。
然后,处理器为反向映射表228中的条目设置锁定(步骤604)。在此操作期间,处理器将条目中的锁定指示符设置为指示条目被锁定的值,例如1或其他值。通过以这种方式设置锁定指示符,处理器配置该条目,使得没有其他硬件或软件实体能够更新或以其他方式修改反向映射表228中的条目。以这种方式,可以避免两个或更多个实体对条目的同时且可能错误的修改,例如当多个实体之间发生竞争情况时。
处理器接下来确定页不是不可变的(步骤606)。在该操作期间,处理器从反向映射表228中的条目获取不可变指示符的值,并确定不可变指示符是否被设置为指示页是不可变的值。对于该示例,假设页不是不可变的,因此可以被写入,如上所述。如果条目是不可变的,则处理器将释放条目的锁(例如,将锁定指示符设置为0)并且使RMT_UPDATE操作失败,这可能涉及执行补救措施。
然后,处理器确定基于页的信息对反向映射表228中的条目的更新将不与已经存在于反向映射表中的信息冲突(步骤608)。例如,处理器可以将页的大小与一个或多个其他条目中的页大小进行比较,以确保页的信息不描述与一个或多个现有页重叠的页。例如,处理器确定关于较小页(例如4kB)的信息将不被写入到反向映射表228中的其系统物理地址落入在反向映射表228中的另一位置处的较大页(例如2MB)使用的一组系统物理地址中的条目中。换句话说,处理器确定较小页不与较大页重叠。类似地,处理器可以确定较大页不与一个或多个较小页重叠。如果检测到冲突,则处理器可以执行补救措施,例如引发故障,向管理程序和/或虚拟机发出错误信号等。
然后,处理器执行对页的反向映射表的更新(步骤610)。在对反向映射表228的更新期间,处理器将关于该页的一些或全部上述信息(即,系统物理地址、客体物理地址、虚拟机标识符、页大小等)写入到反向映射表228的条目中的对应字段。当更新完成时,反向映射表228在条目中包括足够的信息,以供计算装置中信息的消费者(例如,表遍历器等)用来确定条目的系统物理地址映射到的客体物理地址、可以访问页的特定虚拟机等。
当更新反向映射表228时,处理器将条目的访问指示符设置为指示该条目尚未被对应的虚拟机访问的值(例如,0)。以这种方式,处理器配置条目以向信息的消费者指示,反向映射表228中的条目已由管理程序更新。这可以帮助避免管理程序恶意地、错误地等改变反向映射表228的情况。
在一些实施方案中,如果条目先前是有效的,即,如果更新覆写已经存在于反向映射表228中的信息,则处理器可以清空(flush)来自计算装置中的TLB的相关信息(并且可以仅清空来自TLB的所有信息)。以这种方式,处理器从TLB中移除与正被覆写的系统物理地址和/或客体物理地址相关联的任何过时的转换信息副本。
在一些实施方案中,处理器在更新反向映射表228中的条目时更新一个或多个条目的子页计数。例如,对于给定的较小页,处理器查找并更新较小页可以驻留在其中的一个或多个较大页的条目。例如,当用关于4kB页的信息更新条目时,处理器更新较大页(该较大页本身可能未被分配)的条目的信息,以反映较大页的区域包括较小页。以这种方式,处理器向表添加信息,以简化步骤604中的关于基于页的信息对反向映射表228的更新将不会与已经存在于反向映射表中的信息冲突的确定。也就是说,处理器设置子页计数,以便可以仅使用来自子页计数的信息来停止针对较大页的条目的更新,而无需检查反向映射表228中的每个对应的较小页条目。
在完成反向映射表228的更新之后,处理器清除对反向映射表228中的条目的锁定(步骤612)。在此操作期间,处理器将条目中的锁定指示符清除为指示条目未被锁定的值,例如0或其他值。通过在更新之后以这种方式清除锁定指示符,处理器重新配置该条目,以便其他硬件或软件实体可以获取锁以允许更新或以其他方式改变条目。
在后续操作期间,管理程序确定是否要更新页的映射(步骤614)。例如,管理程序将页分配给不同的虚拟机,因为对应的虚拟机不再使用该页,从而需要更新与现有系统物理地址相关联的客体物理地址。在作出确定时,管理程序使步骤602-612被执行,以更新反向映射表228中的对应条目。如上所述,在更新期间,处理器将关于页的一些或所有上述信息(即,系统物理地址、客体物理地址、虚拟机的标识符、页大小等)写入到反向映射表的条目中的对应字段。处理器还将访问指示符设置为0以指示反向映射表228中的条目已被更新。当不更新页的映射时(步骤614),该过程结束。
虽然RMT_UPDATE操作被描述为与对应页的分配相关联,但RMT_UPDATE操作不限于仅在分配页时使用。通常,可以在管理程序(或计算装置中的另一软件实体)更新反向映射表中的条目的任何时间执行RMT_UPDATE操作。换句话说,步骤602-612的操作可以在出于不同于分配对应页的原因更新反向映射表中的条目时执行。这由步骤614示出,其仅是反向映射表228的通用“更新”。
如图6所示,管理程序(和其他软件实体)不具有对反向映射表228的“直接”访问权限。相反,管理程序发送RMT_UPDATE请求,并且处理器如上所述那样处理更新(包括清除访问指示符)。通过如上所述将管理程序对反向映射表228的访问限制为RMT_UPDATE操作,所描述的实施方案避免了管理程序恶意、错误地等更新嵌套页表和反向映射表228,从而可能会隐藏嵌套页表的更新的情况。
在一些实施方案中,当管理程序要终止特定虚拟机时,管理程序回收分配给该虚拟机的页,并随后通过修改嵌套页表和反向映射表228来重新分配页。注意,解除分配不可变页是通过平台安全处理器执行的。平台安全处理器可以向诸如管理程序之类的软件实体提供接口,以使软件实体能够请求平台安全处理器执行页的解除分配。
清除客体访问的页表中的指示符
图7呈现了示出根据一些实施方案的用于清除客体访问的页表230中的指示符的过程的框图。图7所示的操作被呈现为由一些实施方案执行的操作的一般示例。由其他实施方案执行的操作包括不同操作和/或以不同顺序执行的操作。另外,尽管在描述操作时使用了某些机制/元件(例如,虚拟机等),但是在一些实施方案中,其他机制也可执行操作和/或也可在其他机制/元件上执行操作。
对于图7中的示例,假设已经执行了图8-9的操作。换句话说,存储器页已被标记为由表遍历器访问。
当虚拟机确定要释放存储器页时,图7所示的过程开始(步骤700)。例如,虚拟机可以确定分配的页不再被使用,因此可以返回以供管理程序重新分配。
然后,虚拟机向处理器发送与该页相关联的GAP_FREE请求(步骤702)。GAP_FREE请求使处理器执行用于更新与虚拟机相关联的客体访问的页表230中的条目的操作。在一些实施方案中,GAP_FREE请求包括标识页(例如,客体物理地址)、页的大小和/或请求虚拟机(例如,诸如虚拟机的地址空间标识符之类的客体ID)的信息。
然后,处理器确定虚拟机被示为可以访问反向映射表228中的页(步骤704)。例如,处理器可以从反向映射表228中的对应条目获取信息,并且验证该条目是有效的,来自该条目的客体物理地址与来自请求的标识页的信息匹配,反向映射表228显示页已被访问(例如,通过检查该条目中的访问指示符),客体ID与请求虚拟机的客体ID匹配,该条目的页大小与GAP_FREE中指示的页大小相匹配,和/或执行其他检查。如果虚拟机未被示为可访问该页,则处理器执行补救措施,例如引发故障、向虚拟机和/或管理程序发出错误信号等。
然后,处理器执行对页的客体访问的页表230的更新(步骤706)。在对客体访问的页表230的更新期间,处理器将页的指示符设置为指定值(例如,0)以显示虚拟机未访问该页。当更新完成时,客体访问的页表230在对应指示符中包括足够的信息,供计算装置中的信息的消费者(例如,表遍历器等)确定虚拟机没有访问对应页。
当如上所述更新客体访问的页表230时,处理器还更新反向映射表228中的对应条目以显示虚拟机未访问该页。例如,通过RMT_UPDATE操作,处理器可以在反向映射表228的对应条目中将访问指示符设置为指示页未被访问的值(例如,0)。以这种方式,处理器确保对于页的客体访问的页表230中的指示符,以及反向映射表228中的访问指示符在关于是否未访问页方面彼此一致。在一些实施方案中,当对反向映射表228的更新失败或被拒绝时(例如,由于反向映射表228中的条目被锁定),客体访问的页表更新也会失败。
在一些实施方案中,GAP_FREE操作是供虚拟机用于访问客体访问的页表230的唯一机制。换句话说,在这些实施方案中,虚拟机被阻止直接访问,因此不能简单地将值写入到客体访问的页表230中。使虚拟机使用GAP_FREE操作确保例如当虚拟机更新客体访问的页表230时如上所述检查和更新反向映射表228。
使用反向映射表和客体访问的页表
图8呈现了示出根据一些实施方案的使用反向映射表和客体访问的页表的过程的框图。图8所示的操作被呈现为由一些实施方案执行的操作的一般示例。由其他实施方案执行的操作包括不同操作和/或以不同顺序执行的操作。另外,尽管在描述操作时使用了某些机制/元件(例如,处理器等),但是在一些实施方案中,其他机制也可执行操作和/或也可在其他机制/元件上执行操作。
当表遍历器(例如,存储器管理单元中的硬件表遍历器)从处理器(例如,从处理器中的加载/存储单元)接收从给定虚拟地址到系统物理地址的转换的请求时,图8所示的过程开始(步骤800)。例如,处理器可以在执行虚拟机和/或对应的客体操作系统时遇到虚拟机的在给定虚拟地址处执行存储器访问的请求。然后,处理器可以将请求发送到表遍历器,以便获取从给定的虚拟地址到系统物理地址的转换。
然后,表遍历器在对应的客体页表和嵌套页表中执行表遍历,最终获取与虚拟地址相关联的系统物理地址(步骤802)。当在页表遍历期间获取系统物理地址时,表遍历器还可以从嵌套页表(或其他地方)获取其他信息,例如页大小等。处理器还可以检查一个或多个TLB,以试图查找该转换的高速缓存副本,以试图避免执行表遍历。然而,对于该示例,假设转换的高速缓存副本不可用。
在获取系统物理地址时,表遍历器检查反向映射表和客体访问的页表中的至少一个,以确定虚拟机是否可以访问对应页(步骤804)。图9呈现了示出根据一些实施方案的用于检查反向映射表和客体访问的页表中的至少一个以确定虚拟机是否可访问对应页的过程的框图。图9所示的操作被呈现为由一些实施方案执行的操作的一般示例。由其他实施方案执行的操作包括不同操作和/或以不同顺序执行的操作。另外,尽管在描述操作时使用了某些机制/元件(例如,表遍历器等),但是在一些实施方案中,其他机制也可执行操作和/或也可在其他机制/元件上执行操作。
如图9所示,当表遍历器从反向映射表228获取与系统物理地址相关联的条目中的信息时,该过程开始(步骤900)。例如,表遍历器可以从反向映射表228的相对于反向映射表228的基地址的某一偏移量处的条目获取信息,该偏移量与系统物理地址成比例或者以别的方式基于系统物理地址。如上所述,在一些实施方案中,来自条目的信息包括记录的客体ID、记录的客体物理地址、记录的子页计数、记录的访问指示符、记录的大小和有效指示符中的一些或全部。
然后,表遍历器基于获取的信息来确定虚拟机是否可以访问该页(步骤902)。例如,表遍历器可以确定条目是否有效,如有效指示符所示。作为另一示例,表遍历器可以确定来自条目的记录的客体物理地址是否与来自虚拟机的请求相关联的客体物理地址(即,在对应的表遍历期间从客体页表获取)匹配。作为另一示例,表遍历器可以确定从嵌套页表获取的页大小是否与来自条目的记录页大小匹配。作为另一示例,表遍历器可以确定来自条目的记录的客体ID是否匹配与请求虚拟机相关联的标识符。作为另一示例,表遍历器可以确定条目的读取/写入许可(或表示读取/写入许可的值)是否与存储器访问的类型匹配。作为另一示例,当访问是写入访问(即,不是只读访问)时,表遍历器可以确定该条目是否被标记为不可变。作为另一示例,表遍历器可以确定条目是否被标记为已锁定(因此可以处于被更新或修改的过程中)。当获取的信息指示虚拟机不能访问该页时(步骤904),该表遍历器确定该虚拟机不能访问该页(步骤906)。
当获取的信息指示虚拟机可以访问该页时(步骤904),该表遍历器确定所获取的信息是否指示该页已被访问(步骤908)。例如,表遍历器可以确定来自所获取的信息的访问指示符是否被设置为指定的值,例如1,指示页已被访问。当该页已经被访问时(例如,当存储器操作不是虚拟机对对应页的第一次访问时),表遍历器确定虚拟机可以访问该页(步骤910)。换句话说,如果来自反向映射表228中的条目的信息指示虚拟机对页进行了至少一次在先访问,则表遍历器确定虚拟机可以访问该页。回想一下,每次管理程序更新条目(通过RMT_UPDATE操作)时,访问指示符都被设置为指示页尚未被访问的值,从而指示从客体物理地址到系统物理地址的映射已经改变。由于访问指示符显示已访问该页,因此已知管理程序未更改该条目。由于还知道虚拟机具有访问权(根据步骤904),因此已知允许使用从客体物理地址到系统物理地址的转换是安全的。
当获取的信息指示页尚未被访问时,表遍历器确定页的客体访问的页表指示符是否具有匹配的访问信息(步骤912)。更具体地,表遍历器验证反向映射表和客体访问的页表都指示该页尚未被访问。如上所述,这些值的不匹配表明管理程序(和/或另一实体)已更新反向映射表228中的条目,并且映射可能不再值得信任。因此,当发生不匹配或其他不一致时,表遍历器确定虚拟机不能访问该页(步骤906)。
当页的客体访问的页表指示符匹配(或以其他方式一致)时,来自条目的访问指示符指示该页尚未被访问(步骤912),表遍历器确定虚拟机可访问该页(步骤910)。
在所描述的实施方案中,当页的客体访问的页表指示符和来自条目的访问指示符都指示页尚未被访问,并且处理器将为虚拟机执行页访问时(即,与图8-9中的操作一起),表遍历器(和/或另一实体)将页的客体访问的页表指示符和反向映射表228中的条目中的访问指示符设置为指示页已经被访问过的值(例如,1)。以这种方式,表遍历器(或其他实体)记录页已被访问。
回到图8,当虚拟机不能访问对应页时(步骤806),表遍历器终止从客体物理地址到系统物理地址的转换(步骤808)。例如,表遍历器可以断言故障或执行另一补救措施,和/或以其他方式终止转换,并且不可以向处理器提供系统物理地址。否则,当虚拟机可以访问对应页时(步骤806),表遍历器完成从客体物理地址到系统物理地址的转换(步骤810)。完成转换包括向处理器提供系统物理地址,其中系统物理地址可以用于访问存储器等。处理器还可以将返回的虚拟地址到物理地址的转换(即,虚拟地址到系统物理地址的转换)高速缓存在TLB中,以便供后续查找。
上述检查操作确保对于分配给特定虚拟机的页,遵循两个规则(例如,不共享)。第一条规则是存储器中的每个页一次只与一个客体地址相关联。在上面的步骤902-904期间强制执行该规则。第二条规则是,在没有涉及虚拟机的情况下,管理程序不应重新映射仅分配给特定虚拟机的正在使用的页。通过使用图6中的上述RMT_UPDATE操作以及步骤908-912中的对反向映射表228和客体访问的页表230的检查来实施该规则。
在一些实施方案中,为主机访问(例如,为管理程序)执行的表遍历可以与为虚拟机和/或客体操作系统执行的表遍历的处理方式不同。例如,在接收到具有标识符(该标识符将请求标识为来自管理程序/主机,并且指示该访问是要写入(即,不是只读或获取指令))的虚拟地址到物理地址转换请求时,当反向映射表228中的对应条目的有效指示符被设置为指示客体操作系统拥有该页时、当在条目中设置了锁定指示符时、当较小的页不在管理程序可访问/可写的较大页内时、和/或当较大页包括管理程序不可访问/不可写的一个或多个较小页时,表遍历器可以断言页错误或执行另一补救措施。注意,这些检查中的第一个,即对反向映射表228中的有效指示符的检查,用于确保管理程序不会利用写入访问来访问私有客体操作系统页。换句话说,通过使用有效位(也可以设置不可变位),阻止管理程序对客体操作系统拥有的页执行写入访问。
共享页
在一些实施方案中,存储器中的页可以由两个或更多个虚拟机共享。换句话说,单个页可以由两个或更多个虚拟机访问。例如,可以共享包含来自公共库(stdlib.h等)、应用程序、内核例程等的程序代码的页。作为另一示例,可以共享将由虚拟机读取的数据的页。在一些实施方案中,共享页可以是全局共享页,因为页是常用的并且因此可由至少一些虚拟机,并且可能由所有虚拟机共享。在这些实施方案中,计算装置使用各种机制来控制对共享页的访问。例如,在一些实施方案中,反向映射表228中的页的条目中的全局共享页指示符可以被设置为指定值(例如,1)以指示页被共享,不可变指示符可以被设置为指示页是不可变的,等等。在一些实施方案中,使用在所有虚拟机之间(或至少在被允许对页的共享访问的虚拟机之间)共享的密钥来加密共享页。
在一些实施方案中,仅允许对共享页进行某些类型的访问。例如,对于共享页,写入可能是不允许的。在上述对反向映射表228和客体访问的页表230的检查期间(步骤806),在一些实施方案中,系统执行一个或多个检查以确保不执行不允许的存储器访问(例如写入)。在这些实施方案中,当对于共享页来说存储器访问是不允许时,表遍历器可以确定虚拟机不能访问该页。
加密页
在一些实施方案中,使用特定于给定虚拟机的密钥来加密分配给给定虚拟机的存储器中的页(作为安全措施)。在这些实施方案中,虚拟机可以包括与每个页相关联的、示出对应页是否被加密的指示符。在一些实施方案中,不对未加密的页执行上述对反向映射表228和客体访问的页表230的检查(因为这些页通常可以被假定为不安全/不可信)。可以使用所有虚拟机都知道的密钥来对共享页进行解密和/或加密。
启用/禁用对反向映射表和客体访问的页表的检查
在一些实施方案中,有硬件或软件开关可用于启用和禁用对反向映射表228和客体访问的页表230的上述检查。例如,可以给每个虚拟机提供软件中的标志、寄存器等,可以向标志、寄存器等写入指定值(例如,1)以启用上述检查。在这些实施方案中,当标志、寄存器等被设置为另一个值(例如,0)时,不执行检查。
对虚拟机以外的实体的检查
尽管上面描述了给虚拟机分配页的实施方案,但是在一些实施方案中,以类似的方式保护除虚拟机之外的实体免于恶意页重新映射。例如,输入-输出存储器管理单元可以对与外围装置相关联的表(即,相当于反向映射表和客体访问页但是用于IOMMU(输入-输出存储器管理单元)的表)执行类似的检查。通常,所描述的实施方案可适用于计算装置中可访问存储器中的页的任何实体。
页迁移和分割
在一些实施方案中,管理程序可能有理由迁移或以其他方式移动存储器内的存储页。例如,页可以从较高速度、低容量存储器迁移/移动到较低速度、较高容量存储器作为页访问保证,在非均匀访问存储器访问(NUMA)系统中,页可以在存储器中移动以更接近正在访问的核心等。作为在存储器内迁移/移动页的操作的一部分,计算装置中的处理器可以使用上述锁定指示符来锁定源页和目标页的反向映射表228条目,同时更新反向映射表228条目以反映移动。另外,处理器还可以执行各种检查以确保条目中的信息(页计数、大小等)匹配和/或兼容,从而确保目标页的条目适合于迁移的页。
在一些实施方案中,管理程序可能将较大页分配给虚拟机(例如,2MB),但是稍后有理由通过将较大页分成多个较小页(例如,4kB)来分割较大页。例如,管理程序可能有理由单独迁移较小的4kB页和/或修改较大2MB页内较小页的页属性。作为用于分割页的操作的一部分,计算装置中的处理器可以使用上述锁定指示符来锁定大页的反向映射表228条目,同时反向映射表228条目被更新以反映该分割(即,同时更新较大和较小页的大小信息)。另外,处理器还可以执行检查以确保可以分割较大的页,即较大的页被标记为有效、大页、不可变、不全局共享等。
在一些实施方案中,计算装置(例如,图2中的计算装置200和/或其一些部分)使用存储在非暂时性计算机可读存储介质上的代码和/或数据来执行这里所描述的一些或全部操作。更具体地,计算装置在执行所描述的操作时,从计算机可读存储介质读取代码和/或数据,并执行所述代码和/或使用所述数据。
计算机可读存储介质可为存储供计算装置使用的代码和/或数据的任何装置或介质或其组合。例如,计算机可读存储介质可包括但不限于易失性存储器或非易失性存储器,包括闪存、随机存取存储器(eDRAM、RAM、SRAM、DRAM、DDR、DDR2/DDR3/DDR4SDRAM等)、只读存储器(ROM)和/或磁性或光学存储介质(例如磁盘驱动器、磁带、CD、DVD)。
在一些实施方案中,一个或多个硬件模块被配置为执行本文所描述的操作。例如,硬件模块可以包括但不限于一个或多个处理器/核心/中央处理单元(CPU)、专用集成电路(ASIC)芯片、现场可编程门阵列(FPGA)、高速缓存/高速缓存控制器、存储器管理单元、计算单元、嵌入式处理器、图形处理器(GPU)/图形核心、流水线、加速处理单元(APU)和/或其他可编程逻辑装置。当这些硬件模块被激活时,所述硬件模块执行操作中的一些或全部。在一些实施方案中,硬件模块包括通过执行指令(程序代码、固件等)以实施操作来配置的一个或多个通用电路。
在一些实施方案中,表示本文描述的一些或全部结构和机制(例如,计算装置100和/或其一些部分)的数据结构被存储在非暂时性计算机可读存储介质上,该存储介质包括数据库或其他数据结构,该数据库或其他数据结构可以被计算装置读取,并且直接或间接用于制造包括这些结构和机制的硬件。例如,数据结构可为用高级设计语言(HDL)(例如Verilog或VHDL)对硬件功能性的行为级描述或寄存器传送级(RTL)描述。可通过合成工具来阅读所述描述,所述合成工具合成所述描述,以产生包括来自合成库的门控/电路元素列表的网表,所述元素表示包括上文所述的结构和机构的硬件的功能性。然后,可放置或路由所述网表以产生描述要应用于掩模的几何形状的数据集。然后,可在各种半导体制造步骤中使用所述掩模,以产生对应于上文所述的结构和机构的半导体电路。替代地,计算机可存取存储介质上的数据库根据需要可为网表(具有或不具有合成库)或数据集或图形数据系统(GDS)II数据。
在本说明书中,在描述一些实施方案时可以引用功能块。通常,功能块包括执行所描述的操作的一个或多个相关电路。在一些实施方案中,功能块中的电路包括执行程序代码(例如,微代码、固件、应用程序等)以执行所描述的操作的电路。另外,在描述一些实施方案时可以引用实体。通常,实体可以包括可以执行归因于该实体或与该实体相关联的操作的硬件功能块(例如,单独的电路或电路元件、复杂的电路、ASIC、处理器等)和/或软件程序(例如,例程、应用程序,函数等)。
已仅出于说明和描述的目的呈现了对实施方案的前述描述。所述描述并非意在详尽性的,或将实施方案限于所公开的形式。因此,许多修改和变化对于本领域技术人员来说将是明显的。另外,上述公开内容并非意在限制实施方案。实施方案的范围由所附权利要求限定。

Claims (20)

1.一种用于处理计算装置中的虚拟机的存储器访问的方法,所述计算装置包括反向映射表(RMT)和用于每个虚拟机的单独的客体访问的页表(GAPT),所述RMT包括多个条目,每个条目都包括用于标识被允许访问存储器中的相关联数据页的虚拟机的信息,而每个GAPT都包括正在由对应虚拟机访问的页的记录,所述方法包括:
在表遍历器中接收将虚拟地址转换为系统物理地址的请求,所述请求源自给定的虚拟机;
从对应的客体页表中获取与所述虚拟地址相关联的客体物理地址,以及从嵌套页表中获取与所述虚拟地址相关联的系统物理地址;
基于所述客体物理地址和所述系统物理地址,检查所述RMT和对应GAPT中的至少一个,以确定所述给定虚拟机是否可以访问对应页;以及
当所述给定虚拟机不能访问所述对应页时,终止将所述虚拟地址转换为所述系统物理地址。
2.如权利要求1所述的方法,其中检查所述RMT和所述对应的GAPT中的至少一个包括:
当对应于所述系统物理地址的所述RMT中的条目包括指示所述给定虚拟机不能访问所述对应页的信息时,确定所述给定虚拟机不能访问所述对应页;以及
当所述RMT中的所述条目包括指示所述给定虚拟机可以访问所述对应页的信息时,
当所述RMT中的所述条目中的页访问信息指示所述对应页尚未被访问,并且所述对应GAPT中所述对应页的页访问信息指示所述对应页已被访问时,确定所述给定虚拟机不能访问所述对应页;以及
当所述RMT中的所述条目和所述对应GAPT中的所述对应页两者的页访问信息指示所述对应页尚未被访问时,确定所述给定虚拟机可以访问所述对应页。
3.如权利要求2所述的方法,其中所述RMT中的所述条目包括指示当以下各项中的至少一者为真时所述给定虚拟机不能访问所述对应页的信息:
所述RMT中的所述条目未标记为有效;以及
所述RMT中的所述条目中记录的客体物理地址与所述客体物理地址不匹配。
4.如权利要求3所述的方法,其中所述RMT中的所述条目还包括指示当以下各项中的至少一者为真时所述给定虚拟机不能访问所述对应页的信息:
所述RMT中的所述条目中记录的虚拟机标识符与所述给定虚拟机的标识符不匹配;
所述RMT中的所述条目中记录的页大小与和所述系统物理地址相关联的页大小不匹配;以及
所述RMT中的所述条目中记录的读取/写入权限与所述存储器访问的读取/写入类型不匹配。
5.如权利要求2所述的方法,其还包括:
接收更新所述RMT中的条目的请求;
在与所述RMT中另一个条目中的信息发生冲突时终止所述请求;
当所述RMT中的所述条目被标记为有效时,清空一个或多个对应的转换后备缓冲器;以及
更新所述RMT中的所述条目,所述更新包括在所述RMT中的所述条目中设置页访问信息以指示所述对应页尚未被访问。
6.如权利要求2所述的方法,其还包括:
从所述给定虚拟机接收在所述对应的GAPT中清除给定客体物理地址处的给定页的页访问信息的请求;
确认所述RMT中的对应记录存在,并且是用于清除页访问信息的候选者;以及
清除所述对应GAPT和所述RMT中的所述给定页的页访问信息。
7.如权利要求2所述的方法,其中:
一个或多个页是全局共享页,对它们的访问可以在两个或多个虚拟机之间共享,所述对应页是全局共享页;以及
所述RMT中的所述条目包括指示当所述RMT中的所述条目指示所述对应页被全局共享并且对于共享页来说所述存储器访问是不允许的存储器访问时所述给定虚拟机不能访问所述对应页的信息。
8.如权利要求1所述的方法,其还包括:
对于由所述计算装置执行的管理程序,阻止直接访问所述RMT和所述GAPT;
其中所述阻止包括以下各项中的至少一者:
加密所述RMT和所述GAPT中的一个或两个;以及
将所述RMT和所述GAPT中的一个或两个存储在所述管理程序不能直接访问的对应存储器区域中。
9.如权利要求1所述的方法,其还包括:
当所述给定虚拟机可以访问所述对应页时,完成将所述虚拟地址转换为所述系统物理地址,所述完成包括响应于所述请求而返回所述系统物理地址。
10.如权利要求9所述的方法,其还包括:
在不检查所述RMT和所述对应GAPT中的至少一个的情况下,确定当所述对应页被共享时,所述给定虚拟机可以访问所述对应页。
11.一种处理虚拟机的存储器访问的计算装置,所述计算装置包括:
处理器;
硬件表遍历器;以及
存储器,其存储反向映射表(RMT)和用于每个虚拟机的单独的客体访问的页表(GAPT),其中所述RMT包括多个条目,每个条目都包括用于标识被允许访问存储器中的相关联数据页的虚拟机的信息,并且其中每个GAPT都包括正在由对应虚拟机访问的页的记录;
其中所述表遍历器被配置为:
接收将虚拟地址转换为系统物理地址的请求,所述请求源自给定的虚拟机;
从对应的客体页表中获取与所述虚拟地址相关联的客体物理地址,以及从嵌套页表中获取与所述虚拟地址相关联的系统物理地址;
基于所述客体物理地址和所述系统物理地址,检查所述RMT和对应GAPT中的至少一个,以确定所述给定虚拟机是否可以访问对应页;以及
当所述给定虚拟机不能访问所述对应页时,终止将所述虚拟地址转换为所述系统物理地址。
12.如权利要求11所述的计算装置,其中检查所述RMT和所述对应的GAPT中的至少一个包括:
当对应于所述系统物理地址的所述RMT中的条目包括指示所述给定虚拟机不能访问所述对应页的信息时,确定所述给定虚拟机不能访问所述对应页;以及
当所述RMT中的所述条目包括指示所述给定虚拟机可以访问所述对应页的信息时,
当所述RMT中的所述条目中的页访问信息指示所述对应页尚未被访问,并且所述对应GAPT中所述对应页的页访问信息指示所述对应页已被访问时,确定所述给定虚拟机不能访问所述对应页;以及
当所述RMT中的所述条目和所述对应GAPT中的所述对应页两者的页访问信息指示所述对应页尚未被访问时,确定所述给定虚拟机可以访问所述对应页。
13.如权利要求12所述的计算装置,其中所述RMT中的所述条目包括指示当以下各项中的至少一者为真时所述给定虚拟机不能访问所述对应页的信息:
所述RMT中的所述条目未标记为有效;以及
所述RMT中的所述条目中记录的客体物理地址与所述客体物理地址不匹配。
14.如权利要求13所述的计算装置,其中所述RMT中的所述条目还包括指示当以下各项中的至少一者为真时所述给定虚拟机不能访问所述对应页的信息:
所述RMT中的所述条目中记录的虚拟机标识符与所述给定虚拟机的标识符不匹配;
所述RMT中的所述条目中记录的页大小与和所述系统物理地址相关联的页大小不匹配;以及
所述RMT中的所述条目中记录的读取/写入权限与所述存储器访问的读取/写入类型不匹配。
15.如权利要求12所述的计算装置,其中所述处理器被配置为:
接收更新所述RMT中的条目的请求;
在与所述RMT中另一个条目中的信息发生冲突时终止所述请求;
当所述RMT中的所述条目被标记为有效时,清空一个或多个对应的转换后备缓冲器;以及
更新所述RMT中的所述条目,所述更新包括在所述RMT中的所述条目中设置页访问信息以指示所述对应页尚未被访问。
16.如权利要求12所述的计算装置,其中所述处理器被配置为:
从所述给定虚拟机接收在所述对应的GAPT中清除给定客体物理地址处的给定页的页访问信息的请求;
确认所述RMT中的对应记录存在,并且是用于清除页访问信息的候选者;以及
清除所述对应GAPT和所述RMT中的所述给定页的页访问信息。
17.如权利要求12所述的计算装置,其中一个或多个页是在两个或更多个虚拟机之间共享的全局共享页,其中所述对应页是全局共享页;以及
其中所述RMT中的所述条目包括指示当所述RMT中的所述条目指示所述对应页被全局共享并且对于共享页来说所述存储器访问是不允许的存储器访问时所述给定虚拟机不能访问所述对应页的信息。
18.如权利要求11所述的计算装置,其中所述表遍历器还被配置为:
当所述给定虚拟机可以访问所述对应页时,完成将所述虚拟地址转换为所述系统物理地址,所述完成包括响应于所述请求而返回所述系统物理地址。
19.如权利要求18所述的计算装置,其中所述表遍历器还被配置为:
在不检查所述RMT和所述对应GAPT中的至少一个的情况下,确定当所述对应页被共享时,所述给定虚拟机可以访问所述对应页。
20.一种非暂时性计算机可读存储介质,其存储可由执行虚拟机的计算装置读取的信息,所述信息包括:
反向映射表(RMT),所述RMT包括多个条目,每个条目都包括用于标识被允许访问所述计算装置中存储器中的相关联数据页的虚拟机的信息;以及
用于每个虚拟机的单独的客体访问的页表(GAPT),每个GAPT都包括正在由对应的虚拟机访问的页的记录。
CN201780047299.8A 2016-07-29 2017-05-24 控制对计算装置的存储器中的页的访问 Active CN109564522B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US15/224,302 US10169244B2 (en) 2016-07-29 2016-07-29 Controlling access to pages in a memory in a computing device
US15/224,302 2016-07-29
US15/417,632 2017-01-27
US15/417,632 US10241931B2 (en) 2016-07-29 2017-01-27 Controlling access to pages in a memory in a computing device
PCT/US2017/034196 WO2018022178A1 (en) 2016-07-29 2017-05-24 Controlling Access to Pages in a Memory in a Computing Device

Publications (2)

Publication Number Publication Date
CN109564522A true CN109564522A (zh) 2019-04-02
CN109564522B CN109564522B (zh) 2023-08-04

Family

ID=61009960

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201780047299.8A Active CN109564522B (zh) 2016-07-29 2017-05-24 控制对计算装置的存储器中的页的访问

Country Status (6)

Country Link
US (1) US10241931B2 (zh)
EP (1) EP3491520B1 (zh)
JP (1) JP7177038B2 (zh)
KR (1) KR102435949B1 (zh)
CN (1) CN109564522B (zh)
WO (1) WO2018022178A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021013273A1 (zh) * 2019-07-19 2021-01-28 南京芯驰半导体科技有限公司 访问物理地址空间的方法及系统,电子设备及芯片

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10083129B2 (en) * 2016-08-29 2018-09-25 Red Hat Israel, Ltd. Code loading hardening by hypervisor page table switching
US10509733B2 (en) 2017-03-24 2019-12-17 Red Hat, Inc. Kernel same-page merging for encrypted memory
CN108733311B (zh) * 2017-04-17 2021-09-10 伊姆西Ip控股有限责任公司 用于管理存储系统的方法和设备
US10209917B2 (en) 2017-04-20 2019-02-19 Red Hat, Inc. Physical memory migration for secure encrypted virtual machines
US10379764B2 (en) 2017-05-11 2019-08-13 Red Hat, Inc. Virtual machine page movement for encrypted memory
US11783064B2 (en) * 2017-07-10 2023-10-10 Intel Corporation Techniques to provide hardware enforced protection environment for a system management mode
US11354420B2 (en) 2017-07-21 2022-06-07 Red Hat, Inc. Re-duplication of de-duplicated encrypted memory
US10318435B2 (en) * 2017-08-22 2019-06-11 International Business Machines Corporation Ensuring forward progress for nested translations in a memory management unit
CN111133416A (zh) 2017-09-26 2020-05-08 英特尔公司 处理来自虚拟机命令的方法和装置
US10686605B2 (en) * 2017-09-29 2020-06-16 Intel Corporation Technologies for implementing mutually distrusting domains
US10613990B2 (en) * 2017-12-05 2020-04-07 Red Hat, Inc. Host address space identifier for non-uniform memory access locality in virtual machines
US10838637B2 (en) 2018-02-08 2020-11-17 Micron Technology, Inc. Status management in storage backed memory package
CN110489052B (zh) * 2018-05-14 2022-11-25 慧荣科技股份有限公司 数据储存装置
US11030112B2 (en) * 2018-05-25 2021-06-08 Red Hat, Inc. Enhanced address space layout randomization
US11144468B2 (en) * 2018-06-29 2021-10-12 Intel Corporation Hardware based technique to prevent critical fine-grained cache side-channel attacks
US11573904B2 (en) * 2018-10-12 2023-02-07 Vmware, Inc. Transparent self-replicating page tables in computing systems
US11099874B2 (en) * 2019-01-28 2021-08-24 Red Hat Israel, Ltd. Efficient userspace driver isolation by shallow virtual machines
US20200285501A1 (en) * 2019-03-08 2020-09-10 International Business Machines Corporation Communication interface of a secure interface control
US11061711B2 (en) 2019-09-23 2021-07-13 Red Hat, Inc. Storage deduplication for virtual machines with encrypted storage
US11656891B2 (en) 2019-09-27 2023-05-23 Red Hat, Inc. Copy-on-write for virtual machines with encrypted storage
US11232030B2 (en) * 2019-09-27 2022-01-25 Red Hat Inc. Storage deduplication for virtual machines with encrypted storage
US11614956B2 (en) 2019-12-06 2023-03-28 Red Hat, Inc. Multicast live migration for encrypted virtual machines
CN115516438A (zh) * 2020-05-15 2022-12-23 华为技术有限公司 内存管理装置及方法
CN113342711B (zh) * 2021-06-28 2024-02-09 海光信息技术股份有限公司 页表更新方法、装置及相关设备
GB2625550A (en) * 2022-12-20 2024-06-26 Advanced Risc Mach Ltd Apparatus, method and computer program, for performing translation table entry load/store operation
US20240220417A1 (en) * 2022-12-29 2024-07-04 Advanced Micro Devices, Inc. Segmented non-contiguous reverse map table

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1831790A (zh) * 2005-03-08 2006-09-13 微软公司 虚拟机环境中的客机物理地址虚拟化方法和系统
US20110131388A1 (en) * 2003-03-25 2011-06-02 Vmware, Inc. Accessing multiple page tables in a computer system
US20130191611A1 (en) * 2012-01-04 2013-07-25 BaoHong Liu Substitute virtualized-memory page tables
US20140244965A1 (en) * 2013-02-26 2014-08-28 Oracle International Corporation Method and system for simplified address translation support for static infiniband host channel adaptor structures
US20150100717A1 (en) * 2005-01-14 2015-04-09 Intel Corporation Virtualizing physical memory in a virtual machine system
US20150378633A1 (en) * 2014-06-30 2015-12-31 Intel Corporation Method and apparatus for fine grain memory protection
CN105354155A (zh) * 2015-12-03 2016-02-24 上海高性能集成电路设计中心 一种基于页表检查机制的存储器访问权限控制方法
US20160110291A1 (en) * 2014-10-19 2016-04-21 Strato Scale Ltd. Coordination between memory-saving mechanisms in computers that run virtual machines

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7636831B1 (en) * 2006-03-31 2009-12-22 Vmware, Inc. Optimization of reverse mappings for immutable guest physical pages of virtual memories in a virtualized computer system
US8443156B2 (en) * 2009-03-27 2013-05-14 Vmware, Inc. Virtualization system using hardware assistance for shadow page table coherence
US9535849B2 (en) * 2009-07-24 2017-01-03 Advanced Micro Devices, Inc. IOMMU using two-level address translation for I/O and computation offload devices on a peripheral interconnect
US8601310B2 (en) * 2010-08-26 2013-12-03 Cisco Technology, Inc. Partial memory mirroring and error containment
US20120331465A1 (en) * 2011-03-02 2012-12-27 Tadao Tanikawa Virtual machine system, virtual machine control method, virtual machine control application, and semiconductor integrated circuit
KR101323858B1 (ko) * 2011-06-22 2013-11-21 한국과학기술원 가상화 시스템에서 메모리 접근을 제어하는 장치 및 방법
US9703723B2 (en) * 2011-08-29 2017-07-11 International Business Machines Corporation Method and apparatus for performing mapping within a data processing system having virtual machines
US9639476B2 (en) * 2013-09-26 2017-05-02 Cavium, Inc. Merged TLB structure for multiple sequential address translations
CN103955399B (zh) * 2014-04-30 2017-06-20 华为技术有限公司 一种虚拟机迁移方法和装置及物理主机
JP6584823B2 (ja) * 2014-06-20 2019-10-02 株式会社東芝 メモリ管理装置、プログラム、及び方法
US9875047B2 (en) * 2015-05-27 2018-01-23 Red Hat Israel, Ltd. Exit-less host memory locking in a virtualized environment

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110131388A1 (en) * 2003-03-25 2011-06-02 Vmware, Inc. Accessing multiple page tables in a computer system
US20150100717A1 (en) * 2005-01-14 2015-04-09 Intel Corporation Virtualizing physical memory in a virtual machine system
CN1831790A (zh) * 2005-03-08 2006-09-13 微软公司 虚拟机环境中的客机物理地址虚拟化方法和系统
US20130191611A1 (en) * 2012-01-04 2013-07-25 BaoHong Liu Substitute virtualized-memory page tables
US20140244965A1 (en) * 2013-02-26 2014-08-28 Oracle International Corporation Method and system for simplified address translation support for static infiniband host channel adaptor structures
US20150378633A1 (en) * 2014-06-30 2015-12-31 Intel Corporation Method and apparatus for fine grain memory protection
US20160110291A1 (en) * 2014-10-19 2016-04-21 Strato Scale Ltd. Coordination between memory-saving mechanisms in computers that run virtual machines
CN105354155A (zh) * 2015-12-03 2016-02-24 上海高性能集成电路设计中心 一种基于页表检查机制的存储器访问权限控制方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021013273A1 (zh) * 2019-07-19 2021-01-28 南京芯驰半导体科技有限公司 访问物理地址空间的方法及系统,电子设备及芯片

Also Published As

Publication number Publication date
JP7177038B2 (ja) 2022-11-22
KR20190026909A (ko) 2019-03-13
JP2019522298A (ja) 2019-08-08
EP3491520B1 (en) 2021-06-23
EP3491520A4 (en) 2020-04-01
WO2018022178A1 (en) 2018-02-01
EP3491520A1 (en) 2019-06-05
US10241931B2 (en) 2019-03-26
US20180032447A1 (en) 2018-02-01
KR102435949B1 (ko) 2022-08-25
CN109564522B (zh) 2023-08-04

Similar Documents

Publication Publication Date Title
CN109564522A (zh) 控制对计算装置的存储器中的页的访问
US10509736B2 (en) Controlling access by IO devices to pages in a memory in a computing device
US10585805B2 (en) Controlling access to pages in a memory in a computing device
US10169244B2 (en) Controlling access to pages in a memory in a computing device
CN102473139B (zh) 包括用于i/o和计算卸载的多层次地址转换的i/o存储器管理单元
US7739466B2 (en) Method and apparatus for supporting immutable memory
US7650479B2 (en) Maintaining cache coherency for secure and non-secure data access requests
CN108228485B (zh) 存储器管理
KR20130001240A (ko) 메모리 보안 영역 및 비보안 영역 내에 보안 모드 페이지 테이블 데이터의 저장
US11567666B2 (en) Handling the migration of pages of memory accessible by input-output devices
CN108491716B (zh) 一种基于物理页地址分析的虚拟机内存隔离性检测方法
JP2023518482A (ja) 複数の物理アドレス空間を使用する装置及び方法
US5875487A (en) System and method for providing efficient shared memory in a virtual memory system
EP0747827B1 (en) System and method for providing shared memory in a multi-tasking environment
KR20230123985A (ko) 입력-출력 디바이스에 의해 액세스가능한 메모리의페이지의 이송
US20240220417A1 (en) Segmented non-contiguous reverse map table
US20230132695A1 (en) Apparatus and method using plurality of physical address spaces
WO2024145364A1 (en) Segmented non-contiguous reverse map table

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