CN117063165A - 迁移由输入-输出设备能够访问的存储器页面 - Google Patents

迁移由输入-输出设备能够访问的存储器页面 Download PDF

Info

Publication number
CN117063165A
CN117063165A CN202280023076.9A CN202280023076A CN117063165A CN 117063165 A CN117063165 A CN 117063165A CN 202280023076 A CN202280023076 A CN 202280023076A CN 117063165 A CN117063165 A CN 117063165A
Authority
CN
China
Prior art keywords
memory
page
information
migration
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.)
Pending
Application number
CN202280023076.9A
Other languages
English (en)
Inventor
菲利普·恩杰
尼蓬·拉瓦尔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
ATI Technologies ULC
Original Assignee
ATI Technologies ULC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ATI Technologies ULC filed Critical ATI Technologies ULC
Publication of CN117063165A publication Critical patent/CN117063165A/zh
Pending legal-status Critical Current

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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • 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
    • G06F12/1018Address translation using page tables, e.g. page table structures involving hashing techniques, e.g. inverted page tables
    • 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/145Protection 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 virtual, e.g. for virtual blocks or segments before a translation mechanism
    • 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/1466Key-lock mechanism
    • G06F12/1475Key-lock mechanism in a virtual system, e.g. with translation means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • 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/1081Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
    • 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/4557Distribution of virtual machine instances; Migration and load balancing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • 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
    • 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)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

一种电子设备包括存储器、执行软件实体的处理器、页面迁移引擎(PME)和输入‑输出存储器管理单元(IOMMU)。该软件实体和该PME执行用于准备在该存储器中迁移由至少一个IO设备能够访问的存储器页面的操作,该软件实体和该PME基于该操作被执行而设置用于该存储器页面的页面表条目中的迁移状态信息以及与迁移该存储器页面相关的反向映射表(RMT)条目中的信息。该IOMMU基于该页面表条目中的该迁移状态信息和该RMT条目中的该信息来控制来自该页面表条目的信息的使用以及控制该存储器页面的存储器访问的执行。该PME在完成用于准备迁移该存储器页面的该操作后迁移该存储器页面。

Description

迁移由输入-输出设备能够访问的存储器页面
背景技术
相关技术
一些电子设备包括执行计算、控制、存储器访问和其他操作的处理器(例如,中央处理单元等)以及在其中存储数据的存储器(其中“数据”用作信息诸如程序代码指令、用于计算操作的输入或来自计算操作的结果数据、常数值等的通用术语)。许多此类电子设备还包括输入-输出(IO)设备,诸如网络接口设备、盘控制器等。IO设备可与用于执行各种操作的处理器和存储器交互。例如,网络接口设备可将经由网络接收的数据存储在存储器中并且随后发信号通知处理器存储在存储器中的数据正等待处理。
在一些情况下,存储在电子设备中的存储器中的数据可以用使数据访问效率低下的方式存储在存储器中。例如,存储器可使用两种不同类型的存储器的组合来实现,这些类型中的一种类型的存储器是访问较快但较为昂贵类型的存储器,并且另一种类型是访问较慢但不太昂贵类型的存储器。当频繁访问、高优先级和/或时间关键型数据存储在较慢类型的存储器中时,在此类存储器中可能出现低效率,或反之亦然。又如,当数据存储在存储器的远程部分(诸如存储器的在非均匀存储器访问(NUMA)电子设备的远程插口中的一部分)中时,可能出现低效率。
因为在存储器中访问数据的低效率可影响电子设备的总体性能,所以一些电子设备包括迁移机制,该迁移机制用于在存储器中动态地重新定位或“迁移”数据,使得数据存储在存储器中的更适当位置中。例如,出于存储器管理和迁移的目的,可将存储器中的数据组织成指定大小(例如,4KiB、2MiB等)的连续数据块或“存储器页面”。迁移机制可监视存储器页面的访问并且基于存储器页面的访问的指定模式或特性而选择性地迁移存储器页面。例如,在具有上述两种不同类型的存储器的电子设备中,当存储在较低速类型的存储器中的存储器页面被足够频繁地访问时,迁移机制可将存储器页面从较低速类型的存储器迁移到较高速类型的存储器。在一些电子设备中,迁移机制自动地且主动地迁移存储器页面——并且因此可在不将关于迁移的信息传送到能够访问存储器页面的访问实体(例如,处理器、IO设备等)中的每一者的情况下迁移存储器页面。换句话讲,迁移机制“在幕后”迁移存储器页面,而不需要访问实体中的每一者直接知道迁移、授权批准迁移和/或是迁移的参与方。
在一些电子设备中,一些或全部IO设备不提供对迁移存储器页面的支持。例如,IO设备可以是不包括支持处理错误(例如,页面错误等)的软件和/或硬件的较老的或较简单的IO设备,该错误可以发生在迁移存储器页面而发现存储器页面暂时不可用时。如果此类IO设备能够访问的存储器页面将被迁移并且IO设备尝试在迁移期间访问存储器页面或与该存储器页面相关联的信息(例如,地址转换信息等),则IO设备和/或电子设备中的其他功能块和设备(例如,处理器等)可能崩溃、经历差错或以非预期或不期望方式操作。
附图说明
图1呈现了根据一些实施方案的示出电子设备的框图。
图2呈现了根据一些实施方案的示出电子设备中的操作系统以及功能块和设备的框图。
图3呈现了根据一些实施方案的示出电子设备中的管理程序以及功能块和设备的框图。
图4呈现了根据一些实施方案的示出页面表的框图。
图5呈现了根据一些实施方案的示出页面表条目中的元数据的框图。
图6呈现了根据一些实施方案的示出反向映射表的框图。
图7呈现了根据一些实施方案的示出迁移状态的状态图。
图8呈现了根据一些实施方案的示出用于迁移存储器页面的过程的流程图。
在整个附图和说明书中,相同的附图标号表示相同的附图元件。
具体实施方式
呈现以下描述是为了使所属领域的技术人员能够进行和使用所描述的实施方案,并且在特定的应用及其要求的上下文中提供了以下描述。所属领域的技术人员将容易明白对所描述的实施方案的各种修改,并且本文所述的一般原理可应用于其他实施方案和应用。因此,所描述的实施方案不限于所示出的实施方案,而是将符合与本文所述的原理和特征一致的最宽范围。
术语
在以下描述中,各种术语用于描述实施方案。以下内容是这些术语中的一个术语的简化的一般的描述。需注意,该术语可具有重要的附加方面,为了清楚和简洁起见,在本文中未列举这些方面,因此该描述并非旨在限制此术语。
功能块:功能块是指一组相互关联的电路系统,诸如集成电路电路系统、分立电路系统等。电路系统是“相互关联的”,因为电路系统中的电路元件共享至少一个属性。例如,电路可以被包括在、制造在或者以其他方式耦接到特定的集成电路芯片、基板、电路板或其部分,可以涉及指定的操作(例如,计算操作、控制操作、存储器操作等)的执行,可以由公共控制元件和/或公共时钟控制,等等。功能块中的电路可具有任何数量的电路元件,从单个电路元件(例如,单个集成电路逻辑门或分立电路元件)到数百万或数十亿个电路元件(例如,集成电路存储器)。在一些实施方案中,功能块使用在不执行程序代码的情况下执行操作的电路系统来“在硬件中”执行操作。
数据:数据是指示可以存储在存储器中和/或在计算、控制和/或其他操作中使用的信息的通用术语。数据包括信息,诸如实际数据(例如,计算或控制操作的结果、处理电路的输出、计算或控制操作的输入、变量值、传感器值等)、文件、程序代码指令、控制值和/或其他信息。数据可被组织成逻辑块(例如,4KiB或2MiB存储器页面等),这些逻辑块包括用于操作(诸如将数据加载到存储器中、在存储器中迁移数据等)的上述类型中的一种或多种类型的信息。
访问:当应用于与存储在存储器(例如,主存储器、高速缓存存储器等)中的数据的交互时,访问或“存储器访问”指示可针对、对、使用和/或用数据和对应元数据和/或控制值执行的所有形式的交互。例如,访问可包括从存储器读取或加载数据、向存储器写入或存储数据、无效化或删除存储器中的数据、读取或写入存储器中的数据的元数据、改变存储器中的数据的状态、一致性状态或许可等。当对于给定功能块或设备允许/准许特定类型的存储器访问时,该数据对于给定功能块或设备是“能够访问的”。
虚拟存储器
在所描述的实施方案中,电子设备使用虚拟存储器技术来处理由在电子设备中执行的软件实体(例如,应用程序、操作系统、设备驱动器、虚拟机等)或由输入-输出(IO)设备(例如,网络接口设备、高速外围组件接口(PCIe)总线设备、盘控制器等)进行的数据访问。一般来讲,当数据初始由软件实体或IO设备访问时,将包括数据的给定大小(例如,4KiB、2MiB等)的存储器块或页面从海量存储装置(例如,磁盘驱动器或非易失性半导体存储器)复制到电子设备中的存储器(例如,主存储器)中的可用物理位置,或在存储器中新创建存储器页面(例如,用于存储计算或其他操作的结果等)。为了避免软件实体和IO设备需要跟踪页面在存储器中的物理位置,电子设备为软件实体或IO设备跟踪页面的物理位置。软件实体和IO设备使用虚拟地址空间中的“虚拟”地址来访问存储器,而不是使用基于数据在存储器中的物理位置(或物理地址)的地址来访问存储器,其中虚拟地址空间是专用于对应软件实体和/或IO设备的本地地址空间。从软件实体或IO设备的角度来看,虚拟地址指示数据存储在存储器中的实际物理位置,并且由软件实体和IO设备相应地使用虚拟地址来进行存储器访问。然而,虚拟地址可能不直接映射到数据存储在存储器中的页面中的物理位置的物理地址。作为跟踪页面的物理位置的一部分,电子设备将存储器访问请求中由软件实体和IO设备使用的虚拟地址转换成数据实际所在的物理地址。电子设备然后使用物理地址为软件实体和IO设备执行存储器访问。
为了实现上述虚拟地址到物理地址转换,电子设备包括页面表。页面表是存储在电子设备的存储器中的记录,其包括条目或“页面表条目”,该条目具有虚拟地址到物理地址转换信息以及存储在存储器中的数据页面的其他信息。换句话讲,页面表包括针对存在于存储器中的每个数据页面的虚拟地址到对应物理地址的映射。在从软件实体或IO设备接收到在给定虚拟地址处访问存储器的请求后,电子设备通过执行页面表行走来从页面表获取对应的物理地址信息,在页面表行走期间,针对提供与虚拟地址相关联的物理地址的页面表条目来搜索页面表。例如,在从操作系统接收到在给定虚拟地址处访问存储器的请求后,电子设备中的中央处理单元(CPU)内核中的存储器管理单元(MMU)可执行页面表行走以从页面表获取对应的物理地址信息并且可使用物理地址信息来处理存储器访问。又如,在从IO设备接收到在给定虚拟地址处访问存储器的请求后,电子设备中的输入-输出存储器管理单元(IOMMU)可执行页面表行走以从页面表获取对应的物理地址信息并且可使用物理地址信息来处理存储器访问。
因为上述页面表行走相对较慢,所以希望避免执行页面表行走。因此,电子设备包括转换后备缓冲器(TLB),其是用于存储在页面表行走期间获取的地址转换信息(即,基于页面表条目的信息)的有限数量的副本的本地高速缓存。例如,CPU可包括TLB,其用于在本地存储基于页面表条目的用于软件实体的存储器访问的信息的副本(或页面表条目本身的副本)。又如,IOMMU可包括TLB,其用于在本地存储基于页面表条目的用于IO设备的存储器访问的信息的副本(或页面表条目本身的副本)。在操作期间,CPU内核或IOMMU首先尝试从对应TLB获取高速缓存的页面表条目以用于执行虚拟地址到物理地址转换。当对应的页面表条目的副本不存在于TLB中时(即,当“未命中”发生时),CPU内核或IOMMU执行页面表行走以获取期望的页面表条目。CPU内核或IOMMU然后可将所获取的页面表条目的副本高速缓存在相应TLB中以供后续使用。
在一些实施方案中,IOMMU和IO设备支持用于地址转换(诸如PCI Express(PCIe)地址转换服务(ATS))的通信协议。对于ATS,输入-输出(IO)设备可以包括相应的本地高速缓存或“地址转换高速缓存”(ATC),每个IO设备使用这些高速缓存来存储基于页面表条目的副本信息(或页面表条目本身)。当IO设备期望基于页面表条目的信息的本地副本(或者更简单地,整个页面表条目的副本)时,IO设备从IOMMU请求基于页面表条目的信息。IOMMU进行检查以确保IO设备被准许具有该信息,并且随后将基于页面表条目的信息提供给IO设备。IO设备接下来将基于页面表条目的信息存储在ATC中以供后续使用。因此,使用ATC,IO设备可避免重复地从IOMMU请求基于页面表条目的信息的需要。在一些实施方案中,例如,对于“安全”ATS,IOMMU不提供从页面表条目到请求IO设备的系统物理地址,而是提供客户物理地址。在这些实施方案中,IOMMU提供客户物理地址,该客户物理地址必须由IOMMU转换为用于存储器访问的系统物理地址,以便避免向IO设备提供可由IO设备用来直接访问存储器(并且没有IOMMU的某些安全检查)的系统物理地址。
虚拟机和管理程序
在一些实施方案中,电子设备中的处理器执行一个或多个虚拟机。虚拟机是软件实体,其仿真或以其他方式与处理器以及电子设备中的其他功能块和设备(例如,存储器、IO设备等)连接以便提供对执行软件程序的支持。例如,虚拟机可提供对运行被称为客户操作系统的操作系统的一个或多个实例的支持。客户操作系统又提供对执行诸如应用程序、数据库等其他软件程序的支持。
在一些实施方案中,处理器还执行管理程序。管理程序是软件实体,它执行用于控制和管理虚拟机的执行的操作。例如,管理程序可启动和初始化虚拟机,协助控制虚拟机对电子设备中的功能块和设备的访问(例如,指示虚拟机被允许访问存储器和/或IO设备的哪些区域等),终止或关闭虚拟机等。图3示出了可在一些实施方案中找到的虚拟机和管理程序的布置。
页面表
在一些实施方案中,电子设备中的客户操作系统、IO设备、IOMMU和管理程序使用虚拟存储器技术用于存储器访问。在客户操作系统下执行的程序、客户操作系统本身以及IO设备可使用本地地址用于存储器访问。例如,在客户操作系统下执行的程序可使用客户虚拟地址访问存储器,并且IO设备可使用客户物理地址访问存储器。如上所述,来自程序、客户操作系统和IO设备的存储器访问中的本地地址将在数据可在存储器中被访问之前转换。例如,来自程序的存储器访问中的客户虚拟地址可被转换成客户物理地址。然而,客户物理地址本身是虚拟的,即,它们是客户操作系统视角下存储器中的数据组织,因此客户物理地址被转换成数据在存储器中所位于的系统物理地址。又如,来自IO设备的存储器访问中的客户物理地址可被转换成数据在存储器中所位于的系统物理地址。
为了支持程序,在一些实施方案中,客户操作系统和使用本地地址的IO设备,电子设备使用一组页面表用于地址转换。页面表包括用于每个客户操作系统的客户页面表,其用于将来自程序的存储器访问中的客户虚拟地址转换成客户物理地址。页面表还包括嵌套(即,主机、系统等)页面表,其用于将来自客户操作系统的存储器访问中的客户物理地址转换成系统物理地址。页面表另外包括IO页面表,其用于将来自IO设备的存储器访问中的客户物理地址转换成系统物理地址。然而,需注意,在一些实施方案中,IO页面表中的信息被包括在嵌套页面表中的信息中/与嵌套页面表中的信息组合,并且嵌套页面表用于客户物理地址到系统物理地址的所有转换。
作为上述页面表用于转换地址的用途的示例,在一些实施方案中,在经由客户操作系统从程序接收到包括客户虚拟地址的存储器访问请求时,处理器依次使用客户页面表和嵌套页面表来执行转换。换句话讲,处理器(例如,客户操作系统)首先使用客户页面表来将客户虚拟地址转换成客户物理地址。处理器(例如,管理程序)然后使用嵌套页面表来将客户物理地址转换成系统物理地址。在获取系统物理地址时,处理器使用系统物理地址来执行存储器访问。处理器还可将系统物理地址高速缓存在处理器中的TLB中。
作为上述页面表用于转换地址的用途的另一示例,在一些实施方案中,在从IO设备接收到包括客户物理地址的存储器访问请求时,IOMMU使用IO页面表来执行转换。换句话讲,IOMMU使用IO页面表来将客户物理地址转换成系统物理地址。当获取系统物理地址时,IOMMU使用系统物理地址来执行存储器访问。IOMMU还可将系统物理地址高速缓存在IOMMU中的TLB中。
反向映射表
在所描述的实施方案中,管理程序(和/或其他软件实体、功能块和/或设备)可修改嵌套页面表中的信息。例如,管理程序可改变嵌套页面表中的从客户物理地址到系统物理地址的映射。当修改存储器页面的属性时,如当存储器页面在存储器中移动时,改变存储器页面的所有权等,此类改变是正常且必要的。因为管理程序可改变嵌套页面表中的信息,所以如果管理程序将恶意地或错误地改变页面表条目中的信息,那么电子设备可经历非计划或非预期操作。例如,如果系统管理程序将用于客户操作系统的存储器页面重新映射到存储器的恶意页面,则系统管理程序可能使客户操作系统执行不期望的且可能恶意的程序代码。因此,所描述的实施方案执行用于确保嵌套页面表中的信息没有被管理程序意外地或不允许地改变的操作。对于这些操作,所描述的实施方案使用反向映射表(RMT)来确保管理程序(和/或另一实体)没有将从客户物理地址到嵌套页面表中的系统物理地址的转换重新映射。反向映射表是存储器中的记录,其包括可用于确定哪个实体拥有存储器页面(例如,存储器页面被分配给的客户操作系统或系统管理程序)以及在用于客户物理地址的嵌套页面表的表行走期间获取的系统物理地址是否被分配给该客户物理地址的信息。换句话讲,反向映射表可用于确保存储器中的给定页面的系统物理地址一次仅匹配到一个客户物理地址,从而防止这些地址的错误或恶意重新映射。图6示出了反向映射表的示例。
迁移存储器页面
在所描述的实施方案中,可在存储器内迁移存储器页面。对于迁移,存储器页面在存储器内被物理地移动,使得该页面从存储器中的第一位置被重新定位到存储器中的第二位置。例如,如果存储器页面为8KiB存储器页面并且初始位于地址A至A+8KiB-1处,则该页面可迁移到地址B至B+8KiB-1。在一些实施方案中,可迁移存储器页面以便将存储器页面重新定位到存储器中更适合于该存储器页面的位置和/或存储器本身。例如,可将频繁访问或较高优先级的存储器页面从具有较慢访问速度的第一类型的存储器迁移到具有较快访问速度的第二类型的存储器,或反之亦然。又如,可在存储器内迁移存储器页面以避免对存储器中的存储器电路的磨损。再如,可在存储器中迁移存储器页面以将该存储器页面定位成更靠近正被访问的其他存储器页面。再如,在一些实施方案中,存储器被配置为用于非均匀存储器访问(NUMA),其中存储器的多个部分中的每个部分靠近相应处理节点定位,并且存储器页面可在节点中的存储器的部分之间迁移。
在一些实施方案中,由软件实体和/或电子设备中的功能块或设备基于识别存储器页面将被迁移的条件的一个或多个迁移规则(即,准则、标准、阈值等)而作出迁移存储器页面的决策。例如,由电子设备中的处理器执行的操作系统或管理程序可基于对存储器页面进行的访问的频率或类型而确定存储器页面将被迁移。又如,处理器中的存储器管理单元功能块可基于在针对存储器页面的存储器访问请求中识别的优先级而确定存储器页面将从较慢访问存储器迁移到较快访问存储器。
尽管处理器能够在存储器中迁移存储器页面,即,在存储器中物理地移动存储器页面的个别字节,但使用处理器来执行迁移可能会消耗更适合用于其他操作(例如,计算操作、其他类型的存储器访问等)的处理器资源。因此,在一些实施方案中,存储器页面的迁移从处理器卸载到页面迁移引擎功能块或设备。给定存储器页面的标识和存储器中的目的地位置,页面迁移引擎可执行并且可以被优化以执行存储器页面的迁移。在一些实施方案中,页面迁移引擎包括直接存储器访问(DMA)功能块,其执行用于物理地移动存储器内的存储器页面的操作。
概述
在所描述的实施方案中,电子设备包括处理器和一个或多个输入-输出(IO)设备(其中IO设备可包括电子设备内和/或连接到电子设备的功能块或实际设备,诸如网络接口、盘控制器、图形处理单元等)。该电子设备还包括用于存储供处理器和/或IO设备使用的数据的存储器。该电子设备进一步包括至少一个页面迁移引擎功能块,其执行用于复制、移动和以其他方式处理存储在存储器中的数据的操作。作为这些操作的一部分,页面迁移引擎执行与迁移存储器页面(例如,4KiB存储器页面)相关联的操作,该操作包括根据迁移规则在存储器内重新定位存储器页面。该电子设备还包括管理IO设备的存储器访问的输入-输出存储器管理单元(IOMMU)。在所描述的实施方案中,IOMMU执行用于以下操作:控制IO设备对将被迁移或正被迁移的存储器页面的访问,以及控制来自用于此类存储器页面的IO页面表条目的信息的使用。由IOMMU执行的操作旨在确保IO设备(并且更一般地,电子设备)不会经历错误或故障,如果IO设备访问了正被迁移的存储器页面(即遇到了缺失的存储器页面)和/或使用了来自用于此类存储器页面的IO页面表条目的不正确信息,则可能发生差错或失败。
在所描述的实施方案中,IOMMU使用两个不同的记录来控制由IO设备对正准备用于迁移或正被迁移的存储器页面进行的访问。记录包括IO页面表和反向映射表(RMT),其中每一者包括用于确定存储器的页面是否正被迁移以及因此存储器的页面和/或相应IO页面表条目是否可被访问的相应信息。IO页面表中的信息包括IO页面表条目中的迁移信息。换句话讲,IO页面表条目包括与上述转换信息和元数据一起的迁移状态信息。迁移状态信息包括对是否正在进行迁移与页面表条目相关联的存储器页面的准备或存储器页正被迁移(或未被迁移)的指示。例如,在一些实施方案中,迁移状态信息包括两个位,这两个位的每种可能组合识别来自一组迁移状态中的对应迁移状态。在由00识别的第一或“非迁移”迁移状态中,存储器页面未被迁移。在分别由01和10识别的第二和第三迁移状态中,正在进行迁移存储器页面的相应准备。在由11识别的第四迁移状态中,正在进行迁移存储器页面的最终准备,或者存储器页面正处于被迁移的过程中(即,实际上正在存储器中被重新定位)。RMT中的信息包括RMT条目中的迁移信息和锁定指示标识。换句话讲,RMT条目包括RMT迁移状态信息和锁定指示标识,以及用于确定嵌套页面表条目是否已被重新映射的信息。类似于IO页面表中页面表条目中的迁移状态信息,RMT迁移状态信息包括对是否正在进行迁移与页面表条目相关联的存储器页面的准备或存储器页面正被迁移(或未被迁移)的指示。锁定指示标识包括相应的RMT条目是否被锁定的指示。
在一些实施方案中,处理器执行软件实体,该软件实体与页面迁移引擎组合地执行以下操作中的至少一些操作:准备进行迁移的存储器页面以及处理存储器页面的迁移。例如,软件实体可以是或包括管理程序、操作系统、应用程序等。在由软件实体和/或页面迁移引擎执行的用于准备迁移存储器页面的操作中,设置IO页面表中的存储器页面的迁移状态信息和/或RMT条目中与存储器页面迁移相关的信息。例如,当电子设备中的功能块和设备经过上述迁移状态中的每一者时,软件实体或页面迁移引擎可相应地设置该迁移状态信息和/或RMT条目中的信息。由软件实体和/或页面迁移引擎执行的另一操作是使存储在IOMMU或IO设备中的高速缓存中来自用于迁移页面的IO页面表条目的信息的现有副本无效。由页面迁移引擎执行的进一步操作是,在迁移存储器页面之后,更新用于存储器页面的IO页面表条目以识别存储器中用于该存储器页面的新位置,并且设置IO页面表条目中的迁移状态信息和RMT条目中的信息以指示非迁移迁移状态。
在一些实施方案中,IOMMU基于IO页面表条目中的迁移状态信息和/或RMT条目中的信息而实施针对存储器页面和IO页面表条目的访问限制。例如,当IO页面表条目中的迁移状态信息和/或源存储器页面的RMT条目中的信息指示正在进行迁移存储器页面的准备或存储器页面正被迁移时,IOMMU可防止IOMMU本身和IO设备在本地高速缓存中存储或使用来自IO页面表条目的信息的副本。又如,当IO页面表条目中的迁移信息和/或源存储器页面的RMT条目中的信息指示存储器页面正在准备进行迁移或正被迁移时,IOMMU可确保IO设备对该存储器页面的访问被相应地处理。即,IOMMU可确保在存储器页面被迁移之前完成存储器页面的现有存储器访问,并且搁置(即,暂缓、缓冲等)存储器页面的新遇到的存储器访问,直到存储器页面被迁移之后。相比之下,当IO页面表条目中的迁移信息和/或源存储器页面的RMT条目中的信息指示存储器页面处于非迁移迁移状态(并且因此未被迁移)时,IOMMU可允许存储器页面和IO页面表条目的正常访问。
在一些实施方案中,IO设备中的一些或全部支持地址转换服务(诸如PCI Express(PCIe)地址转换服务(ATS)),该地址转换服务是一种标准,根据该标准,IO设备可以从IOMMU请求来自IO页面表条目的信息以在本地高速缓存到IO设备中的本地高速缓存或“地址转换高速缓存(ATC)”中的条目中。作为用于防止将来自IO页面表条目的信息的副本存储在IO设备中的高速缓存中的上述操作的一部分,IOMMU可拒绝接受/拒绝针对来自与将被迁移或正被迁移的存储器页面相关联的IO页面表条目的信息的ATS请求。
对于上述操作,IOMMU使用IO页面表和RMT中的信息来处理IO设备进行的用于迁移存储器页面的存储器访问和IO页面表访问。然而,由电子设备中的其他功能块和设备进行的用于迁移存储器页面的存储器访问可不同地处理。例如,当准备IO设备能够访问的存储器页面用于迁移时,存储器页面可简单地被标记为在嵌套页面表中缺失(并且对应的信息在处理器中的TLB中被无效化)。因为处理器(不同于某些IO设备)包括用于处理缺页的机制,所以处理器将继续正常地处理缺失的页面,然后将在存储器页面被迁移并且嵌套页面表被相应地更新之后继续存储器访问。此外,未准备进行迁移或未被迁移的存储器页面及其相应页面表条目,即使当其由IO设备能够访问时——虽然考虑到存储器访问排序规则等——也可正常访问。
在一些实施方案中,当迁移不是IO设备可访问的而是仅处理器可访问的存储器页面时,可使用上述机制中的一些或全部,但针对处理器可访问页面的操作进行了调整。例如,在一些实施方案中,软件实体或页面迁移引擎可在嵌套页面表中将存储器页面标记为“不存在”(并且使处理器中的TLB中的对应内容无效)。与前一情况一样,处理器将使用页面错误机制来处理存储器页面缺失。另外地或另选地,软件实体和/或页面迁移引擎可锁定RMT条目用于迁移仅处理器存储器页面,并且访问处理器可使用RMT检查/验证机制来避免访问该迁移存储器页面。
通过处理由IO设备能够访问的存储器页面的迁移,所描述的实施方案使得此类存储器页能够在存储器内更自由地迁移,而不管是否存在本身可能不正确地处理迁移存储器页面的IO设备。迁移这些存储器页面可帮助确保存储器页面处于存储器中的期望位置中。这可改进存储器的操作,这继而改进使用存储器中的存储器页面的处理器和IO设备的操作。
电子设备
图1呈现了根据一些实施方案的示出电子设备100的框图。如图1所示,电子设备100包括处理器102、存储器104、海量存储装置106、输入-输出(IO)设备108-110、输入-输出(IO)集线器112以及页面迁移引擎114。处理器102、存储器104、海量存储装置106、IO设备108-110、IO集线器112和页面迁移引擎114以“硬件”实现,即,使用对应的集成电路、分立电路和/或设备。例如,在一些实施方案中,处理器102、存储器104、海量存储装置106、IO设备108-110、IO集线器112和页面迁移引擎114在一个或多个半导体芯片上的集成电路中实现,在一个或多个半导体芯片上的集成电路与分立电路和/或设备的组合中实现,或者在分立电路和/或设备中实现。在图1中,电子设备100部分着色以使得各种图形元素能够被更容易地辨别。
处理器102是电子设备100中执行计算、存储器访问、控制和/或其他操作的功能块。处理器102包括内核116-118,其中每个内核包括一个或多个中央处理单元(CPU)内核、图形处理单元(GPU)内核、嵌入式处理器、专用集成电路(ASIC)和/或其他计算功能块。
处理器102包括高速缓存存储器或“高速缓存”,其是用于存储可由内核116-118用于执行各种操作的数据的副本的功能块。如图1中可见,处理器102中的高速缓存包括分别在内核116-118中的一级(L1)高速缓存120-122(L1 120和L1 122)。L1高速缓存120-122中的每一者包括用于存储数据的存储器电路,以及用于处理存储在存储器电路中的数据的访问的控制电路。处理器102还包括共享的二级(L2)高速缓存124和三级(L3)高速缓存126,它们各自包括用于存储数据的存储器电路,以及用于处理存储在存储器电路中的数据的访问的控制电路。
处理器102包括平台安全处理器(PSP)128,其是电子设备100中用于执行安全相关操作的功能块。例如,在一些实施方案中,PSP 128包括CPU内核、ASIC和/或微控制器。PSP128包括被设计成保护处理器102中的其他功能块和设备和/或由处理器102执行的软件实体免受指定恶意或错误行为的侵害的电路。因此,PSP 128可用于保护易受此类行为影响的其他功能块、设备和/或软件实体的操作。换句话讲,PSP 128可执行与启用电子设备100中的可信执行环境相关联的操作。为此,PSP 128可执行用于加密/解密(例如,密钥生成、数据加密/解密等)、硬件和/或软件实体的注册和/或认证、访问许可验证等的操作。在一些实施方案中,PSP 128执行本文所述的用于处理IO设备108-110能够访问的页面的迁移的操作中的至少一些操作。例如,软件实体可将迁移存储器页面的请求传达给PSP 128,PSP然后在将迁移存储器页面的请求转发给页面迁移引擎114以供后续处理之前验证存储器页面的迁移被准许(即,软件实体被允许将特定存储器页面移动到存储器中的目的地位置等)。
存储器104是电子设备100中用于存储用于其他功能块的数据的功能块。例如,在一些实施方案中,存储器104是电子设备100中的“主”存储器。存储器104包括用于存储数据的存储器电路,以及用于处理存储在存储器电路中的数据的访问的控制电路。
在一些实施方案中,存储器104包括两种或更多种不同类型的存储器,这些存储器被布置成使得存储器104中的一组可寻址位置的不同部分处于所述类型中的每种类型的存储器中。例如,在一些实施方案中,一半可寻址位置处于第一类型的存储器中并且因此使用第一类型的存储器电路来实现,并且一半可寻址位置处于第二类型的存储器中并且因此使用第二类型的存储器电路来实现。在图1中经由存储器类型130和存储器类型132说明了两种类型的存储器的使用。例如,存储器类型130可以是第五代双倍数据速率同步动态随机存取存储器(DDR5 DRAM)或另一种类型的存储器,并且存储器类型132可以是3D交叉点(3DXPoint)存储器或另一种类型的存储器。每种类型的存储器具有相应的存储器特性。例如,存储器特性可包括访问速度/延迟、访问带宽、数据保护/验证/差错校正、可靠性/平均无故障时间、电功率消耗、热生成、数据可寻址性(例如,字节或块可寻址性)、数据兼容性/规范、货币成本、设计复杂性等中的一些或全部。
海量存储装置106是存储供电子设备100中的其他功能块和设备使用的数据的功能块和/或设备。例如,海量存储装置106可以是或包括半导体存储器、磁盘驱动器、光学驱动器等。海量存储装置106包括即使海量存储装置106的电力被切断(或以其他方式减少)仍保留所存储的数据的电路和/或设备,并且因此用作数据的非易失性“长期”存储装置。在运行时(即,当电子设备100操作时),从海量存储设备106获取数据的副本并且将其存储在易失性存储器104(以及可能的一个或多个高速缓存)中以供电子设备100中的功能块随后访问。例如,可以从海量存储装置106中以给定大小(例如,4KiB、2MiB、1GiB等)的块或页面、以及从存储在存储器104中的页面或“存储器页面”获取/读取数据。此外,由电子设备100中的其他功能块和设备创建的存储器页面可存储在存储器104中(例如,用于存储计算结果、文件、配置值等)并且最终写出到海量存储装置106。当存储在存储器104中时,存储器页面可根据存储器页面和/或其中的数据的访问规则和许可而由其他功能块和设备能够访问。
返回到处理器102,存储器管理单元(MMU)134是处理存储器访问请求以及针对来自页面表的信息的请求的功能块。当数据将由处理器102中的功能块访问时,该功能块将存储器访问请求发送给MMU 134。例如,由内核116执行的软件实体(例如,程序、操作系统等)可使得内核116中的处理电路中的加载/存储单元将存储器访问请求(例如,用于数据加载或存储等)发送给MMU 134。MMU 134然后将对应存储器访问请求发送给L2高速缓存124、L3高速缓存126和存储器104中的一者或多者以满足或解决存储器访问请求。例如,如果将要加载数据,则MMU 134可以从L2高速缓存124、L3高速缓存126或存储器104获取数据,并且将该数据转发给请求功能块。这可能意味着如果该数据尚未存在于存储器104中,则要将包括该数据的一个或多个存储器页面从海量存储装置106加载到存储器104。
MMU 134包括表行走器(TW)136,其是执行与经由页面表行走从页面表获取地址转换信息和其他信息相关的操作的功能块。如以上更详细描述的,在一些实施方案中,电子设备100使用虚拟存储器使得软件实体(例如,其由内核116-118执行)能够使用被转换成物理地址的虚拟地址来访问存储器。在从具有虚拟地址的软件实体接收到存储器访问请求后,表行走器136执行页面表行走操作,以将虚拟地址转换成数据位于存储器104中的页面的物理地址。在页面表行走操作期间,表行走器136还可检查页面表条目和/或其他记录以确保正在请求每次存储器访问的功能块和/或软件实体被准许执行此类访问,即被允许在物理地址处访问存储器等,并且用于转换的页面表和其他记录尚未经过篡改或未经准许地修改。在一些实施方案中,表行走器136还检查页面表条目中的迁移状态信息,作为在本文所述的用于处理页面的迁移的操作的一部分。
在一些实施方案中,表行走器136使用两个单独的页面表来执行地址转换。在这些实施方案中的一些中,这两个页面表包括客户页面表148和嵌套页面表150。客户页面表148和嵌套页面表150各自为包括条目或“页面表条目”的记录,所述条目用于存储存储器104中的相应存储器页面的地址转换信息和其他信息。例如,客户页面表148可包括页面表条目,这些条目具有用于存储器104中当前已由对应的客户操作系统访问的存储器页面的信息。在一些实施方案中,客户页面表148包括用于存储器页面的客户虚拟地址到客户物理地址转换信息以及相应的其他信息(即,元数据等)。又如,嵌套页面表150可包括页面表条目,这些条目具有用于存储器104中当前已由客户操作系统及/或另一软件实体或功能块访问的存储器页面的信息。嵌套页面表150(可互换地称为系统页面表、主机页面表等)包括用于存储器页面的客户物理地址到系统物理地址转换信息以及相应其他信息(即,元数据等)。在一些实施方案中,存储在嵌套页面表150中的页面表条目中的其他信息是迁移状态信息,该迁移状态信息用于处理存储器页面的迁移,如本文所述。
尽管作为示例在图1中仅示出了一个客户页面表148,但是在一些实施方案中,电子设备100包括用于每个客户操作系统(可存在多个客户操作系统)的单独的客户页面表,其中地址转换由该客户操作系统使用/用于该客户操作系统。另外,尽管在不同类型的存储器中示出了客户页面表148和嵌套页面表150,但不要求将客户页面表148和嵌套页面表150存储在特定类型的存储器中,即客户页面表148和嵌套页面表150可存储在存储器104中的任何地方。另外,尽管在图1中被示出为单个实体,但在一些实施方案中,客户页面表148和/或嵌套页面表150是或包括组合地用于执行虚拟地址到物理地址转换的多个单独的页面子表。例如,在一些实施方案中,客户页面表148和嵌套页面表150中的一者或两者是包括两个或更多个层或级的子表的分层页面表(并且可在每一层包括多个子表),除了最终子表之外的每个子表指示该分层结构中将搜索地址转换信息的下一子表,并且最终表包括地址转换信息。在这些实施方案中,执行表行走涉及遍历每个子表以到达存储地址转换信息的最终子表。
MMU 134包括转换后备缓冲器(TLB)138,该TLB是用于存储从页面表条目(例如,从客户页面表148和/或嵌套页面表150)获取的信息的副本的功能块。TLB 138包括用于高速缓存的存储器电路,该高速缓存存储在由表行走器136进行的页面表行走期间(或从其他源)获取的页面表条目的副本或其部分。为了避免执行页面表行走,当可能时,MMU 134从TLB 138获取地址转换信息和/或其他页面表条目信息。然而,如果地址转换信息和/或其他页面表条目信息不存在于TLB 138中,则表行走器136在客户页面表148和/或嵌套页面表150中执行表行走以获取该信息。在一些实施方案中,如本文所述,在对应页面被迁移之前使TLB 138中的指定信息无效。
输入-输出(IO)设备108-110是与处理器102以及电子设备100中的其他功能块和设备交互的功能块或设备。因此,处理器102和其他功能块可以从IO设备108-110接收“输入”数据或者向IO设备108-110发送“输出”数据。IO设备108-110还可以与电子设备100外部的功能块或设备交互。例如,输入-输出设备108-110可包括网络接口设备、盘控制器、耦接到对应的有线或无线总线或接口(例如,高速外围控制器接口(PCIe)总线、通用串行总线(USB)、WiFi网络等)的设备、图形处理单元等。由IO设备108-110中的每一者执行的特定操作取决于每个IO设备的性质。例如,如果IO设备108是盘控制器,则IO设备108可以从盘(例如,海量存储装置106)检索数据并且将数据写入存储器104,或反之亦然。又如,如果IO设备110是网络接口设备,则IO设备110可将经由网络(未示出)接收的数据存储在存储器104中,从存储器104获取要通过网络传输到接收设备的数据,向处理器102提供数据或从处理器102获取数据等。
IO集线器112是执行用于在IO设备108-110与电子设备100中的其他功能块之间进行连接的操作的功能块或设备。换句话讲,IO集线器112执行用于在IO设备108-110与功能块诸如处理器102、存储器104等之间路由通信和其他数据的操作。由IO集线器112路由的特定通信以及为路由通信而执行的操作取决于IO设备108-110的性质,但可包括存储器访问、数据通信、控制和配置通信等。
IO集线器112包括输入-输出存储器管理单元(IOMMU)140,其是执行用于处理IO设备108-110的存储器访问的操作的功能块。当存储器104中的数据将被IO设备访问时,IO设备传输对应的存储器访问请求。IOMMU 140拦截来自IO设备的存储器访问请求,在内部处理该请求以确定该存储器访问请求是否可继续进行,并且随后(假设该存储器访问请求可继续进行)将对应请求发送给存储器104以访问数据。
在由IOMMU 140执行的用于处理来自IO设备108-110的存储器访问请求的操作中,执行针对IO设备108-110的存储器访问的地址转换(即,用于获取存储器中与IO设备108-110在存储器访问请求中使用的虚拟地址相关联的物理地址)。IOMMU 140包括输入-输出表行走器(IOTW)142,其是执行与从页面表获取地址转换相关的操作(例如,页面表行走等)的功能块。由输入-输出(IO)表行走器142执行的操作类似于由表行走器136执行的那些操作,但它用于来自IO设备108-110(而不是处理器102)的存储器访问。在一些实施方案中,连同执行地址转换,IO表行走器142还检查元数据和页面信息(诸如迁移状态信息)以确定来自IO设备108-110的存储器访问是否在存储器页面中被准许和/或存储器页面是否正被迁移,如本文所述。在这些实施方案中,IO表行走器142可阻止或以其他方式处理存储器访问以避免不正确的存储器访问或对正被迁移的页面进行存储器访问。
在一些实施方案中,IOMMU 140使用IOMMU专用页面表、IO页面表152来执行地址转换。IO页面表152是包括条目或“页面表条目”的记录,所述条目用于存储存储器104中的相应存储器页面的地址转换信息和其他信息。例如,IO页面表152可包括具有用于存储器104中当前已被IO设备或IOMMU 140自身访问的存储器页面的信息的页面表条目。IO页面表152包括用于存储器页面的客户物理地址到系统物理地址转换信息以及相应的其他信息(即,元数据等)。(在一些实施方案中,IOMMU 140从拥有存储器页面的客户操作系统获取地址信息,因此IO页面表152的内容包括客户物理地址。)在一些实施方案中,存储在IO页面表152中的页面表条目中的其他信息是迁移状态信息,该迁移状态信息用于处理存储器页面的迁移,如本文所述。类似于客户页面表148和嵌套页面表150,尽管在图1中被示为单个实体,但IO页面表152可包括单独的子表的分层结构。
IOMMU 140还包括转换后备缓冲器(TLB)144,其是用于存储从IO页面表152中(或其他地方)的页面表条目获取的信息的副本的功能块。TLB 144包括用于高速缓存的存储器电路,该高速缓存存储在由表行走器IO表行走器142进行的页面表行走期间(或从其他源)获取的页面表条目的副本或其部分。为了避免执行页面表行走,当可能时,IOMMU 140从TLB144获取地址转换信息和/或其他页面表条目信息。然而,如果地址转换信息和/或其他页面表条目信息不存在于TLB 144中,则IO表行走器142执行表行走以获取该信息。在一些实施方案中,如本文所述,在对应页面被迁移之前使TLB 144中的指定信息无效。
在一些实施方案中,IO设备108-110中的一些或全部包括用于存储从页面表条目获取的信息的副本的本地高速缓存。例如,在一些实施方案中,IO设备108-110和IOMMU 140中的一些或全部提供针对高速外围组件(PCIe)地址转换服务(ATS)的支持,根据该地址转换服务,IOMMU 140可将从IO页面表152中的页面表条目获取的信息的副本提供给IO设备108-110以在其中高速缓存。此类高速缓存的示例被示出为IO设备108中的地址转换高速缓存(ATC)146。ATC 146包括用于高速缓存的存储器电路,该高速缓存存储在由IO表行走器142进行的页面表行走期间(或从其他源)获取的页面表条目的副本或其部分。为了避免执行页面表行走,当可能时,IO设备108从ATC 146获取地址转换信息和/或其他页面表条目信息。然而,如果地址转换信息和/或其他页面表条目信息不存在于ATC 146中,则IO表行走器142执行表行走以获取该信息(或使用来自TLB 144的高速缓存信息)。在一些实施方案中,如本文所述,在对应页面被迁移之前使ATC 146中的指定信息无效。
在一些实施方案中,尽管在图1中被示出为单个实体,但IOMMU 140包括多个单独的IOMMU(例如,IOMMU功能块的多个实例)。例如,在一些实施方案中,电子设备100包括至少两个IOMMU功能块,每个IOMMU功能块控制由电子设备100中的一组IO设备的子组进行的存储器访问。在这些实施方案中,IOMMU一起工作,或通过“主”IOMMU或其他功能块工作,以确保IOMMU正在正确地使用页面表中的信息并且访问IO设备的存储器——包括存在如本文所述的迁移存储器页面的情况。例如,IOMMU可在所有IOMMU所连接的通信链路上广播TLB无效化、存储器访问完成或停止等的请求和确认,以确保在给定IOMMU执行操作(诸如访问页面表条目中的信息、允许继续进行来自IO设备的存储器访问等)之前,所有IOMMU同步。在这些实施方案中的一些中,所有IOMMU使用单个共享页面表(例如,IO页面表152),而在其他实施方案中,每个IOMMU使用单独的页面表。
在一些实施方案中,电子设备100在存储器104中包括反向映射表(RMT)154。反向映射表154是(例如,由表行走器136和IO表搜索器142)用于检测何时对嵌套页面表150做出改变并且以其他方式保护存储器页面免受客户操作系统、管理程序和/或IO设备进行的未经准许的访问的记录。反向映射表154包括多个条目,存储器104中的每个存储器页面有一个条目,其可被分配用于一个或多个虚拟机的使用。例如,如果存储器104包括可以4KiB页面分配给虚拟机的32GiB存储器,则反向映射表包括8,388,608个条目。反向映射表154中的条目可存储信息,诸如与系统物理地址相关联的客户物理地址的标识、用于访问虚拟机的许可级别的标识、存储器页面的所有者的标识,和/或与对应页面相关联的其他信息。反向映射表的示例在图6中示出并在下面更详细地描述。在一些实施方案中,当执行表行走时,表行走器136和/或IO表行走器142检查反向映射表154中的对应条目以确保嵌套页面表150中的信息可安全使用(即,未被管理程序意外地改变)并且可在相应存储器页面上执行给定的存储器访问。
页面迁移引擎114是执行与在存储器104中访问数据相关联的操作的功能块。页面迁移引擎114可用于从电子设备100中的其他功能块卸载存储器访问操作。例如,在一些实施方案中,页面迁移引擎114代表内核116-118卸载并且因此接收和执行存储器访问,这使得内核116-118能够避免本身执行存储器访问操作。在一些实施方案中,页面迁移引擎114包括执行用于在存储器104内移动存储器页面的操作的一个或多个直接存储器访问(DMA)功能块以及其他功能块。在由页面迁移引擎114执行的存储器访问操作中,在存储器104中迁移存储器页面。为了迁移存储器页面,在从内核116-118中的一者(例如,从由内核116执行的操作系统等)或从另一源(诸如PSP 128)接收到识别存储器页面和该存储器页面将存储在存储器中的新位置的请求后,页面迁移引擎114将存储器页面移动到新位置(即,在一个或多个数据移动操作中将存储器页面中的各个位/字节物理地移动到新位置)。与迁移存储器页面一起,页面迁移引擎114执行如本文所述用于处理IO设备能够访问的存储器页面的迁移的操作,例如更新IO页面表152和反向映射表154等。
在一些实施方案中,尽管在图1中被示出为单个实体,但页面迁移引擎114包括多个单独的页面迁移引擎(例如,页面迁移引擎功能块的多个实例)。例如,在一些实施方案中,页面迁移引擎114包括至少两个页面迁移引擎,每个页面迁移引擎被布置成代表电子设备100中的其他功能块执行存储器访问——包括如本文所述的迁移存储器页面。在这些实施方案中,根据分布方案(例如,轮循、按存储器地址或存储器中的位置等),页面迁移任务/请求分布在两个或更多个页面迁移引擎之间,并且页面迁移引擎可协调访问以避免指定存储器访问等。
在一些实施方案中,通信路径耦接在电子设备100中的功能块之间,如功能块之间的箭头线所示。通信路径包括一个或多个总线、导线、引线和/或其他可能与控制器、结构元件(例如,交换机、路由器等)一起的连接等。通信路径可用于在功能块之间路由命令、数据、控制信号和/或其他信息。例如,在一些实施方案中,互连结构耦接在IO集线器112、处理器102(例如,MMU 134)、IOMMU 140与存储器104之间。需注意,为了清楚起见,一些通信路径在图1中未示出。
尽管电子设备100在图1中被示出为具有特定数量和布置的功能块和设备,但在一些实施方案中,电子设备100包括不同数量和/或布置的功能块和设备。例如,在一些实施方案中,处理器102包括不同数量的内核。又如,在一些实施方案中,不同数量和/或布置的高速缓存存在于处理器102中。再如,在一些实施方案中,IO设备108不包括地址转换高速缓存,或者IO设备108-110两者都包括转换高速缓存。再如,尽管被示为被包括在电子设备100中,但是在一些实施方案中,IO设备108-110中的一个或两个是外部IO设备,诸如经由网络、有线或无线连接等耦接到电子设备100的IO设备。通常,在所描述的实施方案中,电子设备100包括足够数量和/或布置的功能块以执行本文描述的操作。
出于说明的目的,如图1所示的电子设备100和处理器102被简化了。然而,在一些实施方案中,电子设备100和/或处理器102包括用于执行本文所述的操作和其他操作的附加或不同元件和机构。例如,电子设备100和/或处理器102可包括电源功能块或设备、人机接口功能块或设备等。
在一些实施方案中,图1中单独示出的功能块被一起实现。例如,在一些实施方案中,IO集线器112和IO设备108-110中的一些或全部被结合在处理器102中/与处理器结合,诸如被制造在同一集成电路芯片上。换句话讲,对于此类实施方案,IO集线器112和IO设备108-110可以与处理器102集成(例如,作为“片上系统”或以另一种形式集成)。另选地,在一些实施方案中,被示出为其他功能块的一部分的功能块可以是分开的。例如,在一些实施方案中,PSP 128与处理器102分开实现。
电子设备100可以是执行计算操作的任何电子设备或者可被包括在执行计算操作的任何电子设备中。例如,电子设备100可以是或可以包括在台式计算机、膝上型计算机、可穿戴电子设备、平板计算机、智能电话、服务器、人工智能装置、虚拟或增强现实装备、网络设备、玩具、视听设备、家用电器、控制器、车辆等和/或它们的组合中。
操作系统
在一些实施方案中,电子设备中的处理器执行使该处理器执行各种操作的多个软件实体。例如,在一些实施方案中,软件实体包括操作系统。图2呈现了根据一些实施方案的示出电子设备中的操作系统以及功能块和设备的框图。需注意,图2被简化了并且大致示出了操作系统与电子设备硬件的关系。在一些实施方案中,图2中示出的元件中的一些或全部不存在和/或被不同地布置。
如图2中可见,操作系统200连接在电子设备硬件202(即,在电子设备100的功能块和设备(诸如处理器102等))与一组程序204-208之间。例如,操作系统200可以是来自Microsoft(Redmond,WA)的来自Apple,Inc.(Cupertino,CA)的/>等,并且程序204-208各自可以是生产力应用、科学计算应用、web浏览器等。IOMMU 210连接在IO设备212与电子设备硬件202(例如,存储器104等)之间。在一些实施方案中,图2中的功能块和设备,即电子设备硬件202、IOMMU 210和IO设备212,分别类似于如图1所示的电子设备100中的硬件(例如,处理器102、存储器104、页面迁移引擎114等)、IOMMU 140和IO设备108-110。
虚拟机和管理程序
图3呈现了根据一些实施方案的示出电子设备中的管理程序以及功能块和设备的框图。如图3中可见,存在三个虚拟机(VM)300-304,在其中每一者上执行相应的客户操作系统(客户OS)306-310以及一个或多个程序(PRGRMS)312-316。管理程序318连接在主机操作系统320与虚拟机300-304之间。主机操作系统320连接在电子设备硬件322与管理程序318之间。IOMMU 324连接在IO设备326与电子设备硬件322之间。在一些实施方案中,图3中的功能块和设备,即电子设备硬件322、IOMMU 324和IO设备326,分别类似于如图1所示的电子设备100中的硬件(例如,处理器102、存储器104、页面迁移引擎114等)、IOMMU 140和IO设备108-110。
图3被简化了并且大致示出了管理程序与电子设备硬件的关系。然而,在一些实施方案中,图3中示出的元件中的一些或全部不存在和/或被不同地布置。例如,在一些实施方案中,管理程序318更直接地与电子设备硬件322通信,而不是经由主机操作系统320与电子设备硬件322通信。
页面表条目
如上所述,在一些实施方案中,电子设备中的功能块和设备(例如,处理器102、IOMMU 140等)使用一个或多个页面表(例如,客户页面表148、嵌套页面表150和/或IO页面表152)来执行地址转换和其他操作。图4呈现了根据一些实施方案的示出页面表400的框图。如图4中所示的页面表400被呈现为页面表的一般示例。在一些实施方案中,嵌套页面表150和IO页面表152中的一些或全部在页面表400内部布置(即,包括与之类似的信息)。在一些实施方案中,客户页面表148也被类似地布置,尽管可能在页面表条目中的元数据中没有迁移状态信息。
如图4中可见,页面表400包括多个页面表条目402(使用虚线突出显示其中一者),其中每一者可存储地址转换404以及对应元数据406。当从海量存储装置(例如海量存储装置106)检索存储器页面(即,指定大小(诸如4KiB、2MiB等)的数据块)并且将其存储在存储器(例如存储器104)中,或者当在该存储器中新创建存储器页面时,将对应页面表条目402添加到页面表400,该条目具有地址转换404和元数据406。因此,如果存储器页面在存储器104中可用且已由与页面表400相关联的软件实体、功能块或设备访问,那么页面表400应包括对应的页面表条目402。回想页面表条目402被添加到页面表400以使得能够跟踪访问实体(例如,软件实体、功能块和设备)所使用的地址与数据在存储器中所位于的地址之间的映射。
在一些实施方案中,每个页面表条目402中的地址转换404包括可用于确定与存储器的相应页面相关联的物理地址的信息。换句话讲,每个地址转换404包括可用于识别存储器104中用于访问软件实体、功能块或设备的存储器页面的位置的信息。例如,在一些实施方案中,地址转换404包括虚拟地址到物理地址转换信息,诸如客户虚拟地址到客户物理地址转换信息。又如,在一些实施方案中,地址转换404包括物理地址到物理地址转换信息,诸如客户物理地址到系统物理地址转换信息。在一些实施方案中,每个地址转换404包括具有一个或多个虚拟或物理地址(例如,每个地址的M个位中的N个位,其中N≤M)中的一些或全部的第一字段以及具有该一个或多个虚拟或物理地址所映射/匹配到的物理地址中的一些或全部的第二字段。
元数据406包括关联、表征、控制和/或以其他方式与对应的地址转换404相关的信息。当针对存储器页面的转换信息被添加到页面表400中的页面表条目402时,元数据被获取、生成等并被添加到该页面表条目402。图5呈现了根据一些实施方案的示出用于页面表条目的元数据406的框图。如图5中可见,元数据406包括有效性500、许可502、控件504和迁移状态信息(MIG STATE INF)506。有效性500包括与页面表页面表条目402、该页面表页面表条目402中的地址转换404和/或存储器104中的对应存储器页面的有效性相关的一个或多个值。例如,有效性500可包括指示页面表条目402本身是否有效/能够访问和/或存储器104中的对应页面是否有效/能够访问的一个或多个位。
许可502包括与存储器104中的对应页面的访问许可相关的一个或多个值。例如,许可502可包括指示存储器104中的对应页面是否具有只读或读写许可设置、该页面是否仅用特定权限(管理员、用户、内核等)能够访问和/或其他许可信息的一个或多个位。
控件504包括与页面表条目402和/或存储器104中的对应页面的使用相关的一个或多个值。例如,控件504可包括页面大小指示标识、脏指示标识(用于当存储器104中的对应页面已被修改并且因此与海量存储装置106中的相关联存储器块不一致时)、已访问指示标识(用于当存储器104中的页面已被访问一次或多次时)、直写指示标识(用于当对存储器104中的页面的修改将立即反映在海量存储装置106上的相关联存储器块中时)和/或其他值。
迁移状态信息506包括指示是否正在进行迁移相关联页面的准备或相关联页面正被迁移的一个或多个值。例如,在一些实施方案中,迁移状态信息包括足以唯一地识别对应存储器页面的每种可能迁移状态的多个位。例如,如果存在六种迁移状态,其中第一迁移状态用于未被迁移的页面的非迁移状态,第六迁移状态用于被迁移的页面,并且四种中间迁移状态用于准备迁移存储器页面的各种准备操作,则迁移状态信息可存储在三个位中。访问页面表条目的功能块或设备可使用迁移状态信息506来决定针对存储器页面和/或对应页面表页面表条目402中的信息准许(或不准许)什么操作。例如,在一些实施方案中,当迁移状态指示正在进行迁移存储器页面的准备或存储器页面正被迁移时,访问功能块或设备可确定来自页面表条目的信息的副本不被准许高速缓存在本地高速缓存中和/或对存储器页面的存储器访问中的一些或全部被限制(例如,被搁置到页面被迁移之后)。
在一些实施方案中,地址转换404和元数据406中的一者或两者可以在被添加到页面表400之后被修改/改变、更新等。例如,当将页面从存储器104中的第一位置移动到第二位置时,可更新对应页面表条目402中的地址转换404。又如,在元数据406包括许可502(例如,读/写许可)的实施方案中,可更新许可502以指示针对存储器104中的对应页面的只读、读写等许可。再如,迁移状态信息506可随着功能块和设备经过用于迁移存储器页面的迁移状态而更新。
如上所述,当尝试获取地址信息或元数据时,MMU 134(例如,表行走器136)、IOMMU140(例如,IO表行走器142)或电子设备100中的另一实体可执行页面表行走。在页面表行走期间,MMU 134、IOMMU 140等搜索页面表400以找到页面表条目402,如果此类页面表条目402存在,其中保存有对应的地址转换404。当遭遇这样的页面表条目402时,MMU 134、IOMMU140等从页面表条目402获取地址。例如,MMU 134可获取与客户物理地址相关联的系统物理地址,IOMMU 140可获取与客户物理地址相关联的系统物理地址等。如果MMU 134、IOMMU140等不能找到对应的页面表条目402,则执行错误处理操作(例如,发出页面错误并随后处理等)。
在所描述的实施方案中,电子设备中的功能块和设备(例如,IOMMU、页面迁移引擎等)使用页面表400中的信息来执行用于防止IO设备由于对应存储器页面的迁移而遭遇缺失或不可用页面表条目或对应存储器页面的问题的操作。例如,在一些实施方案中,当确定针对存储器访问请求的地址转换时,IO表行走器142检查相应页面表条目402中的迁移状态信息506以确定地址转换404是否被允许由IOMMU 140和/或IO设备108-110高速缓存和/或存储器访问是否由于当前迁移状态而被搁置。
尽管页面表400被示出为具有特定数量的页面表条目402,但一些实施方案包括不同数量的页面表条目402(如图4中的省略号所示)。此外,尽管页面表条目402和元数据406被示出为具有特定布置和类型的信息,但在一些实施方案中,页面表条目402和元数据406中的一者或两者包括不同信息。例如,在一些实施方案中,上述元数据中的至少一些存储在不同于页面表条目402的位置中。例如,在一些实施方案中,使用单独的存储器内数据结构来存储迁移状态信息。一般来讲,页面表400包括足够多的信息以使得电子设备中的功能块和设备能够存储并检索如本文所述的地址转换信息和元数据。
尽管页面表400被示出为单个表,但在一些实施方案中,页面表400被不同地组织。例如,在一些实施方案中,页面表400使用布置在分级结构中的两个或更多个子表来实现。在这些实施方案中,每个子表的搜索将搜索功能块或设备引导到分级结构中的下一子表,直到到达最终子表,其中地址转换404和元数据406存储在对应页面表条目402中。
反向映射表条目
如上所述,在一些实施方案中,电子设备中的功能块和设备(例如,MMU 134、IOMMU140等)使用反向映射表来验证页面表中的条目的正确性以及用于其他操作。图6呈现了根据一些实施方案的示出反向映射表600的框图。虽然在图6中将反向映射表600示为包括特定信息,但在一些实施方案中,可存在不同布置或类型的信息。通常,反向映射表600包括足够的信息来执行本文描述的操作。需注意,在一些实施方案中,反向映射表154在反向映射表600内部布置(即,包括与后者类似的信息)。
在以下段落中,足够详细地描述了反向映射表600以帮助理解本说明书中使用反向映射表的操作。然而,为了清楚和简洁起见,省略了反向映射表以及用于维护和使用反向映射表的操作的某些细节。反向映射表的更详细的描述、关于反向映射表的操作以及使用反向映射表的操作的一些示例可在2019年12月17日发布的美国专利10,509,736中找到,并且该专利以引用方式并入本文。
如图6所示,反向映射表600包括多个条目602(在图6中使用虚线突出显示条目602)。每个条目602包括关于存储器中的对应页面的信息,并且在一些实施方案中,存储器中的每个可分配页面将具有相应的反向映射表条目。在一些实施方案中,使用与每个存储器页面相关联的系统物理地址来索引反向映射表600中的条目,使得每个条目602与单独的系统物理地址相关联。例如,反向映射表600中的第一条目可与最低系统物理地址(例如,存储器的地址空间中的地址A)处的存储器页面相关联,反向映射表600中的第二条目可与第二低系统物理地址(例如,对于4KiB存储器页面,地址A+4KiB-1)处的存储器页面相关联,以此类推。
在反向映射表600中,每个条目602可用于存储相应存储器页面的客户标识(ID)604、客户物理地址(PHY ADDR)606、页面信息(INFO)608、已分配指示标识(ASSIGNED)610、锁定指示标识(LOCK)612、迁移状态信息(MIG STATE INF)614和其他信息(OTHER)616。客户标识604是与对应的存储器页面被分配到的客户操作系统相关联的标识。因此,当对应的存储器页面被分配用于特定客户操作系统的使用时,该特定客户操作系统的标识被记录在客户标识604中。例如,客户标识604可保持标识客户操作系统的地址空间标识(ASID)、ID串、名称和/或另一值。对于未分配给特定客户操作系统的存储器页面,客户标识604可将该页识别为分配给管理程序、在多个客户操作系统之间共享,或以其他方式分配。
客户物理地址606是表示与条目602的系统物理地址相关联的客户物理地址的值。例如,当给定系统物理地址处的页面被分配用于客户操作系统的使用、被分配给客户操作系统等时,将被客户操作系统用于寻址该页面的客户物理地址被记录在反向映射表600中的对应条目602中。以这种方式,一条记录由将由每个页面被分配到的客户操作系统使用的特定客户物理地址组成。该信息使得表行走器(例如,表行走器136或IO表行走器142)能够确定系统物理地址是否映射到期望的客户物理地址,以便检查在嵌套页面表或IO页面表的行走期间获取的系统物理地址。这可使得能够检测映射是否已经被管理程序或另一实体恶意地或错误地改变。
页面信息608包括关于存储器页面的信息,诸如存储器页面的子页面计数(例如,2MIb页面内的4KiB页面的数量等)和/或存储器页面的大小(例如,以字节计)。页面信息608可用于确定对存储器页面的存储器访问是否指向适当大小的存储器页面(即,对2MIb页面的存储器访问不会寻址4KiB页面等)。
已分配指示标识610是条目602当前是否被分配给一个或多个客户操作系统的标识。已分配指示标识610用于防止使用来自反向映射表600中的当前未被分配但可能包含信息、被初始化但不包含实际信息等的条目602的信息。在一些实施方案中,当页面当前被分配给一个或多个客户操作系统时,已分配指示标识610被设置,并且当该页面从所有客户操作系统解除分配时,已分配指示标识被复位/清除。
锁定指示标识612是条目602是否被锁定的指示标识。当锁定指示标识612被设置时,条目602被认为被锁定,并且当锁定指示标识612被复位/清除时,条目602被认为空闲或可用。一旦条目602已被电子设备100中的给定软件实体、功能块或设备锁定,那么其他软件实体、功能块和设备就被阻止访问条目602(例如,读取、写入/更新条目602等)。相反,软件实体、功能块或设备可被允许访问可用(即,未锁定)的条目602(可能在它们自己设置锁定指示标识612之后)。例如,在锁定指示标识612是单个位并且最初被清除(例如,设置为零)的实施方案中,实体可设置锁定指示标识612(例如,设置为1),访问条目602一次或多次,然后当完成访问条目602时清除锁定指示标识612。使用锁定指示标识612,所描述的实施方案可避免竞争条件以及可针对条目602发生同时读取和/或写入的其他条件。另外,结合其他信息、软件实体、功能块和/或设备使用锁定指示标识612可防止迁移存储器页面和/或相应页面表条目的指定访问。
迁移状态信息614包括指示是否正在进行迁移相关联存储器页面的准备或相关联存储器页面正被迁移的一个或多个值。例如,在一些实施方案中,迁移状态信息614包括足以识别对应存储器页面的一组迁移状态中的每个迁移状态的位数。例如,继续上面的六个迁移状态示例,迁移状态信息可存储在三位中。访问条目602的功能块或设备可使用迁移状态信息614来决定针对存储器页面和/或对应页面表条目中的信息准许(或不准许)什么操作。例如,在一些实施方案中,当迁移状态信息614指示正在进行迁移存储器页面的准备或存储器页面正被迁移时,访问功能块或设备可确定来自页面表条目的信息的副本不被准许高速缓存在本地高速缓存中和/或对存储器页面的存储器访问中的一些或全部被限制(例如,被搁置到页面被迁移之后)。在一些实施方案中,保持在迁移状态信息614中的信息可被不同地组织和/或包括与迁移状态信息506中的迁移信息不同的值。下面针对图7给出保持在迁移状态信息614和迁移状态信息506中的不同信息的一些示例。
其他信息616包括用于和/或关于存储器页面、分配有页面的客户操作系统、条目602本身的信息和/或对控制对条目602和/或存储器页面的访问有用的其他信息。例如,在一些实施方案中,其他信息616包括已验证指示标识,该指示标识是条目602是否已被客户操作系统(即,对应的存储器页面被分配到的客户操作系统)验证的指示标识。又如,在一些实施方案中,其他信息616包括具有对应存储器页面的一组许可的许可级别块。再如,在一些实施方案中,其他信息616包括共享页面指示标识,该指示标识是对应页面是否由两个或更多个客户操作系统共享的指示标识。可包括在其他信息616中的验证指示标识、许可级别块、共享页面指示标识和/或其他元数据(例如,不可变指示标识等)在美国专利10,509,736中更详细地描述,如上所述,该美国专利以引用方式并入本文。
迁移状态
在一些实施方案中,当进行迁移存储器页面的准备并且随后迁移存储器页面时,电子设备中的软件实体、功能块和/或设备(例如,IOMMU 140、页面迁移引擎114、处理器102、操作系统200和/或管理程序318)经过一组迁移状态中的迁移状态。除了初始非迁移迁移状态之外,在每种迁移状态中,执行用于准备迁移存储器页面和/或用于迁移存储器页面的相应操作。由电子设备中的功能块和设备(例如,IOMMU 140、页面迁移引擎114等)基于存储器页面的当前迁移状态而处理针对将被迁移或正被迁移的存储器页面和/或相应页面表条目中的信息的存储器访问的请求。一般来讲,在执行每种迁移状态的操作时,用软件实体、功能块和/或设备继续正确操作的方式来处理该访问请求。例如,保护IO设备(例如,IO设备108-110)和/或处理器(例如,处理器102)免于可能由于迁移存储器页面和/或相应页面表条目的访问而引起的差错和错误。
图7呈现了根据一些实施方案的示出迁移状态的状态图。图7中所示的迁移状态是迁移状态的示例,当进行迁移存储器页面的准备并且随后迁移存储器页面时,电子设备中软件实体、功能块和/或设备可经过这些迁移状态。尽管在图7中示出了特定数量和布置的迁移状态以及迁移状态之间的转换,但在一些实施方案中,可使用不同数量和/或布置的迁移状态,且/或可使用迁移状态之间的不同转换。例如,图7中的多个迁移状态包括两个或更多个操作(例如,迁移状态708,其中锁定指示标识和迁移状态信息两者都在反向映射表条目中设置),这些操作可以其他方式与单独的迁移状态相关联。
在图7中,迁移状态之间的转换使用迁移状态之间的箭头线来示出。迁移状态之间的第一组转换使用粗线来示出,而迁移状态之间的其他转换使用细线来示出。在下面的描述中,描述了迁移状态之间的第一组转换,并且随后描述了迁移状态之间的其他转换。然而,需注意,使用不同的线粗度仅仅是为了清楚地描述迁移状态以及迁移状态之间的转换。
如图7中可见,迁移状态包括迁移状态(MS)700-712。在迁移状态700(其为“非迁移”迁移状态)中,存储器页面未被迁移并且因此将保持在存储器中的当前位置中。迁移状态700因此是这样的迁移状态,其中维持存储器页面直到存储器页面将被迁移(并且更一般地,保持存储器页面直到存储器页面将被迁移)。在迁移状态700中,将IO页面表中用于存储器页面的页面表条目中的迁移状态信息(例如,迁移状态信息506)设置为将该存储器页面表示或识别为处于迁移状态700的相应位序列、值等。例如,假设IO页面表中的迁移状态信息包括两个位,则用于存储器页面的IO页面表条目中的迁移状态信息可被设置为00以表示或识别迁移状态700。在图7中,IO页面表条目的迁移状态信息被示为迁移状态700的标注中的PTE MS:0(迁移状态700-712中的每一个的相应标注使用虚线示出)。
在一些实施方案中,嵌套页面表(例如,嵌套页面表150)在页面表条目中包括迁移状态信息。在这些实施方案中,类似于如何在IO页面表中设置迁移状态信息,在嵌套页面表条目中设置迁移状态信息以标识相应存储器页面的当前迁移状态。然而,为了清楚和简洁起见,对于图7没有描述嵌套页面表条目中的迁移状态信息的设置。因此,在图7的以下描述中对“页面表条目”的所有引用指的是IO页面表条目,除非另外指明。需注意,在一些实施方案中,IO页面表和嵌套页面表组合,使得本文描述为在IO页面表中找到的所有信息改为在嵌套页面表中找到,并且电子设备可不包括单独的IO页面表。在这些实施方案中,本文描述的涉及IO页面表的操作改为涉及嵌套页面表。
在迁移状态700中,将反向映射表(RMT)条目中用于源存储器页面和目的地存储器页面中的每一者的RMT迁移状态信息(例如,迁移状态信息614)设置为表示或识别该存储器页面处于迁移状态700的位序列、值等。例如,假设RMT迁移状态信息包括两个位,则可将每个RMT条目中的RMT迁移状态信息设置为00以表示或识别迁移状态700。如本文中所使用,“源存储器页面”和“目的地存储器页面”分别为存储器中待迁移的存储器页面当前所在的位置和存储器页面在迁移期间将重定位的位置。回想反向映射表包括用于每个存储器页面的RMT条目(即,与可存储存储器页面的每个位置/物理地址相关联),因此,在与存储器中待迁移的存储器页面当前所在的位置(源存储器页面)和存储器页面将重定位的位置(目的地存储器页面)相关联的反向映射表条目中找到RMT迁移状态信息。在图7中,用于源存储器页面的RMT条目RMT[S]和用于目的地存储器页面的RMT条目RMT[D]中的RMT迁移状态信息在迁移状态700的标注中分别示为RMT[S]MS:0和RMT[D]MS:0。
与RMT迁移状态信息一起,在迁移状态700中,用于源存储器页面和目的地存储器页面中的每一者的RMT条目中的锁定指示标识(例如,锁定指示标识612)被清除(即,未设置、解除断言等)。这表明用于源存储器页面和目的地存储器页面中的每一者的RMT条目当前被解锁,并且因此可被正常访问(即,没有归因于存储器页面的迁移的限制)。在图7中,用于源存储器页面和目的地存储器页面的RMT条目中的锁定指示标识在迁移状态700的标注中分别示为RMT[S]LK:0和RMT[D]LK:0。
在迁移状态700中,因为页面表条目中的迁移状态信息和RMT条目中的RMT迁移状态信息将存储器页面识别为处于迁移状态700中,所以IOMMU允许正常进行来自IO设备对存储器页面和页面表条目中的相应信息的访问。即,因为未进行迁移存储器页面的准备并且存储器页面未被迁移,所以存储器页面和页面表条目中的信息的访问不被IOMMU阻止、搁置或以其他方式限制。因此,当处于迁移状态700时,IOMMU正常使用来自页面表条目的信息并且正常执行存储器页面的存储器访问。
在一些实施方案中,尽管在迁移状态700中并未由于存储器页面的迁移而限制存储器页面和相应页面表条目的访问,但仍可由IOMMU实施与存储器页面和页面表条目中的信息的访问相关的其他限制。例如,如果由于存储器页面是IO设备通常不可访问的专用存储器页面而使得存储器页面对于IO设备不可访问,则处于迁移状态700并不改变此类访问限制。
功能块、设备和软件实体从迁移状态700前进到迁移状态702(如经由迁移状态700与702之间的粗箭头线所示)。例如,在遇到迁移存储器页面的请求(例如,从平台安全处理器(例如,PSP 128)转发)或以其他方式确定要迁移存储器页面时,软件实体(例如,管理程序、操作系统等)通知页面迁移引擎开始用于迁移存储器页面的操作,即,前进到迁移状态702。当进入迁移状态702时,页面迁移引擎将用于存储器页面的页面表条目中的迁移状态信息设置为表示或识别迁移状态702的位序列、值等。例如,假设迁移状态信息包括两个位,则页面迁移引擎可将迁移状态信息设置为10以表示或识别迁移状态702。在图7中,页面表条目的迁移状态信息被示为迁移状态702的标注中的PTE MS:2。
需注意,在图7所示的实施方案中,在迁移状态页面表条目中不使用迁移状态信息1,因此在图7的迁移状态中未示出PTE MS:1。在该实施方案中,迁移状态信息值1被保留用于未针对图7描述的用途。更具体地,在图7所示的实施方案中,IOMMU和IO设备在安全ATS模式下操作,其中IOMMU响应于ATS请求向IO设备提供客户物理地址,因此不向IO设备提供系统物理地址。在安全ATS模式中,IOMMU仅提供客户物理地址,因为存储器访问请求中的客户物理地址被IOMMU转换为系统物理地址,这为IOMMU提供了检查页面表条目和/或用于存储器访问请求的RMT中的信息的机会。即,IOMMU可检查每个存储器页面的迁移状态,并且可如针对图7所描述来处理存储器访问。相反,在一些实施方案中,在(非安全)ATS模式中,当IO设备被提供有系统物理地址并且因此可在IOMMU不执行上述检查的情况下访问存储器时,软件实体可针对该存储器页面将迁移状态信息设置为1,以通知IOMMU(以及其他实体)软件实体将开始用于该存储器页面的迁移的操作。在这些实施方案中,软件实体还可使ATC中的由IO设备保持的系统物理地址无效以避免访问正准备用于迁移和/或正被迁移的存储器页面。
对于迁移状态700和迁移状态702之间的源存储器页面或目的地存储器页面,RMT条目中的RMT迁移状态信息或锁定指示标识不改变。这是因为RMT迁移状态信息和锁定指示标识在迁移状态702中还没有改变,并且将随着继续为迁移存储器页面进行准备而在随后的迁移状态中改变。在图7中,用于源存储器页面的RMT条目和用于目的地存储器页面的RMT条目中的RMT迁移状态信息在迁移状态702的标注中分别示为RMT[S]MS:0和RMT[D]MS:0。此外,在图7中,用于源存储器页面和目的地存储器页面的RMT条目中的锁定指示标识在迁移状态702的标注中分别示为RMT[S]LK:0和RMT[D]LK:0。需注意,因为用于源存储器页面和目的地存储器页面中的每一者的RMT条目中的锁定指示标识保持被清除,所以用于源页面和目的地页面中的每一者的RMT条目保持未锁定,并且因此仍可被正常访问。
在迁移状态702中,进行在存储器中迁移存储器页面的初始准备。准备包括IOMMU防止来自用于存储器页面的页面表条目的信息的新副本高速缓存(即,存储)在IOMMU和/或IO设备(例如,TLB 144、ATC 146等)中的本地高速缓存中。因为存储器页面的后续迁移将致使来自页面表条目的信息的副本由于存储器页面位于存储器中的新物理地址处而不正确,所以防止将来自页面表条目的信息的副本存储在IOMMU或IO设备中的本地高速缓存中,直到存储器页面已被迁移并且页面表条目已被更新。因此,在迁移状态702中,因为页面表条目中的迁移状态信息以及用于源存储器页面的RMT条目中的RMT迁移状态信息和锁定指示标识将存储器页面识别为处于迁移状态702中,所以IOMMU将不获取来自页面表条目的信息的副本以便将此类副本高速缓存在IOMMU本身中的本地高速缓存中和/或将此类副本提供给IO设备以存储在IO设备中的本地高速缓存中。换句话讲,在针对存储器页面的存储器访问请求的页面表行走和反向映射表检查期间遇到PTE MS:2、RMT[S]LK:0和RMT[S]MS:0的组合时,IOMMU将如所述确定该存储器页面处于迁移状态702并限制来自该页面表条目的信息副本的使用。
在一些实施方案中,为了如上所述不将来自页面表条目的信息的副本提供给IO设备,IOMMU拒绝来自IO设备的针对来自页面表条目的信息的副本的ATS请求。例如,在一些实施方案中,IOMMU可通过通知请求IO设备存储器页面不存在来响应ATS请求,这使得IO设备继续进行用于使该页面存在的操作。
在迁移状态702中,并且与某些后续迁移状态相反,IOMMU允许除了新遇到的不执行RMT检查的存储器访问之外的存储器访问继续进行。例如,IOMMU可允许执行RMT检查的现有的和新遇到的存储器访问继续进行。因为用于源存储器页面的RMT条目还没有在迁移状态702中被标记为锁定,所以执行RMT检查的存储器访问将正常进行。换句话讲,在针对存储器页面的存储器访问请求的页面表行走和反向映射表检查期间遇到PTE MS:2、RMT[S]LK:0和RMT[S]MS:0的组合时,IOMMU将确定该存储器页面处于迁移状态702并且允许新遇到的存储器访问继续进行。允许此类存储器访问继续进行清理/完成存储器页面的存储器访问,以准备迁移存储器页面(因为存储器页面不应在存储器访问未完成的情况下迁移),而不会不必要地延迟IO设备的操作。
在迁移状态702中,并且与上述其他类型的存储器访问相反,IOMMU搁置从IO设备到未执行RMT检查的存储器页面的新遇到的存储器访问。因此,在迁移状态702中,因为页面表条目和用于源页面的RMT条目中的迁移状态信息将存储器页面识别为处于迁移状态702中,所以IOMMU搁置未执行RMT检查的新遇到的存储器访问,直到存储器页面的迁移完成之后(例如,直到返回到迁移状态700)。例如,IOMMU可将新遇到的未执行RMT检查的存储器访问暂缓在缓冲器、存储器元件等中(例如,通过存储来自IO设备的存储器访问请求的信息),并且随后在存储器页面的迁移完成之后从缓冲器、存储器元件等释放暂缓的存储器访问。
在一些实施方案中,在进入迁移状态702的准备中和/或当进入迁移状态702时,软件实体和/或页面迁移引擎更新嵌套页面表(即,由内核116-118使用但不由IO设备使用的页面表)以将存储器页面识别为不存在。例如,在一些实施方案中,软件实体可改变相应嵌套页面表条目中的有效性信息(例如,有效性500)和/或嵌套页面表条目中的其他信息以将存储器页面识别为缺失。因为嵌套页面表以这种方式设置,所以内核116-118(和/或使用嵌套页面表的其他软件实体、功能块等)将该页面视为“缺失”,即,尚未从海量存储装置106加载或以其他方式不存在于存储器中,并且将不进行对该存储器页面的存储器访问。相反,内核116-118将使用众所周知的页面错误机制来处理缺失的存储器页面。在这些实施方案中,用于页面错误机制的存储器页面的最终“加载”实际上是迁移期间存储器页面的重定位。因此,在一些实施方案中,这样的页面错误的解决被搁置,直到存储器页面已经迁移。
功能块、设备和软件实体从迁移状态702前进到迁移状态704(如经由迁移状态702与704之间的粗箭头线所示)。换句话讲,在执行迁移状态702的操作之后,页面迁移引擎可转变到迁移状态704。因为迁移状态704使用与迁移状态702相同的迁移状态信息,所以当进入迁移状态704时,页面迁移引擎将用于存储器页面的页面表条目中的迁移状态信息设置为相同的位序列、值等。在图7中,页面表条目的迁移状态信息被示为迁移状态704的标注中的PTE MS:2。另外,在迁移状态704中,用于源存储器页面和目的地存储器页面中的每一者的RMT条目中的RMT迁移状态信息与迁移状态702相比没有变化。在图7中,用于源存储器页面的RMT条目和用于目的地存储器页面的RMT条目中的RMT迁移状态信息在迁移状态704的标注中分别示为RMT[S]MS:0和RMT[D]MS:0。在迁移状态704中,用于目的地存储器页面的RMT条目中的锁定指示标识与迁移状态702相比也没有变化。在图7中,用于目的地存储器页面的RMT条目中的锁定指示标识在迁移状态704的标注中被示为RMT[D]LK:0。这表明用于目的页面的RMT条目保持解锁,并且因此仍然可被正常访问。
在迁移状态704中,在准备迁移存储器页面时,页面迁移引擎锁定用于源存储器页面的RMT条目。锁定用于源存储器页面的RMT条目防止对RMT条目本身和/或源存储器页面的访问(用于执行RMT检查的访问)。在一些实施方案中,为了锁定用于源存储器页面的RMT条目,页面迁移引擎执行比较和交换(CAS)以将锁定指示标识从0(清除/解锁)更新为1(设置/锁定)。在图7中,用于源存储器页面的RMT条目中的锁定指示标识在迁移状态704的标注中被示为RMT[S]LK:1。
在一些实施方案中,在迁移状态704中,即,当RMT[S]LK:1和RMT[S]MS:0时,因为RMT条目被示为锁定,并且在RMT条目中还没有存储器页面正在被迁移的指示,所以IOMMU将搁置对源存储器页面的所有存储器访问请求。换句话讲,在针对处于迁移状态704的源存储器页面的存储器访问请求的页面表行走和反向映射表检查期间遇到PTE MS:2、RMT[S]LK:1和RMT[S]MS:0的组合时,IOMMU搁置所有新遇到的对源存储器页面的存储器访问。另外,某些访问实体(例如,内核116-118)在访问源存储器页面之前在RMT检查期间发现用于锁定的源存储器页面的RMT条目之后,将报错(例如,页面错误等)或以其他方式处理锁定的RMT条目,并且将不访问源存储器页面。
在迁移状态704中,因为页面表条目和用于源页的RMT条目中的迁移状态信息将存储器页面识别为处于迁移状态704中,所以IOMMU继续防止将来自用于存储器页面的页面表条目的信息的新副本高速缓存(即,存储)在IOMMU和/或IO设备中的本地高速缓存中。即,与迁移状态702的情况一样,IOMMU如上所述不允许将来自页面表条目的信息的副本高速缓存。
功能块、设备和软件实体从迁移状态704前进到迁移状态706(如经由迁移状态704与706之间的粗箭头线所示)。因为在迁移状态704和迁移状态706之间页面表条目中的迁移状态信息没有改变,所以页面表条目中的迁移状态信息未改变。在图7中,页面表条目的迁移状态信息被示为迁移状态706的标注中的PTE MS:2。在迁移状态706中,源页面的RMT条目中的锁定指示标识同样与迁移状态704相比无变化,这在图7中的迁移状态706的标注中被示为RMT[S]LK:1。另外,用于目的地页面的RMT条目中的锁定指示标识和RMT迁移状态信息未改变,并且在图7中被示为迁移状态706的标注中的RMT[D]MS:0和RMT[D]LK:0。
在迁移状态706中,页面迁移引擎在用于源页面的RMT条目中设置RMT迁移状态信息,以将源页面识别为处于迁移状态706。例如,在一些实施方案中,页面迁移引擎可执行比较和交换(CAS)以将用于源存储器页面的RMT条目中的RMT迁移状态信息从0更新为1。在图7中,用于源存储器页面的RMT条目中的RMT迁移状态信息在迁移状态706的标注中被示为RMT[S]MS:1。
因为页面表条目和用于源页面的RMT条目中的迁移状态信息将存储器页面识别为处于迁移状态706中,所以IOMMU搁置所有新遇到的第一类型的存储器访问,直到存储器页面的迁移完成之后(例如,直到返回到迁移状态700)。例如,在一些实施方案中,第一类型的存储器访问包括引起从存储器到请求IO设备的响应(例如,返回的数据等)的存储器访问,诸如读取、比较和交换等——相比之下,第二类型的存储器访问(诸如写入、无效化等)不引起响应。IOMMU可将所有新遇到的第一类型的存储器访问暂缓在缓冲器、存储器元件等中,并且随后在完成存储器页面的迁移之后释放暂缓的存储器访问。换句话讲,在针对存储器页面的存储器访问请求的页面表行走和反向映射表检查期间遇到PTE MS:2、RMT[S]LK:1和RMT[S]MS:1的组合时,IOMMU将确定该存储器页面处于迁移状态706并且搁置对该存储器页面的所有第一类型的存储器访问。然而,在迁移状态706中,IOMMU允许除了新遇到的第一类型的存储器访问之外的存储器访问继续进行。例如,IOMMU可允许第一类型的现有存储器访问继续进行。另外,IOMMU可允许现有的和新遇到的第二类型的存储器访问继续进行。这可包括释放如上所述的在迁移状态704中搁置的存储器访问。在一些实施方案中,将新遇到的第一类型的存储器访问与新遇到的第二类型的存储器访问(如下所述,其在迁移状态710-712中被搁置)分开地搁置,以避免在第一类型与第二类型的存储器访问之间可能发生的冲突、死锁条件和/或在为迁移存储器页面做准备时完成存储器访问的其他问题。
在迁移状态706中,因为页面表条目和用于源页的RMT条目中的迁移状态信息将存储器页面识别为处于迁移状态706中,所以IOMMU继续防止将来自用于存储器页面的页面表条目的信息的新副本高速缓存(即,存储)在IOMMU和/或IO设备中的本地高速缓存中。即,与迁移状态702-704的情况一样,IOMMU如上所述不允许将来自页面表条目的信息的副本高速缓存。
功能块、设备和软件实体从迁移状态706前进到迁移状态708(如经由迁移状态706与708之间的粗箭头线所示)。因为在迁移状态706和迁移状态708之间页面表条目中的迁移状态信息没有改变,所以页面表条目中的迁移状态信息未改变。在图7中,页面表条目的迁移状态信息被示为迁移状态708的标注中的PTE MS:2。
在迁移状态708中,页面迁移引擎使用于目的地存储器页面的RMT条目为存储器页面的迁移做好准备。对于该操作,页面迁移引擎首先锁定用于目的地存储器页面的RMT条目,以便防止对RMT条目本身和/或目的地存储器页面的访问。例如,在一些实施方案中,页面迁移引擎可执行比较和交换(CAS)以将用于目的地存储器页面的RMT条目中的锁定指示标识从0(清除/解锁)更新为1(设置/锁定)。在图7中,用于目的地存储器页面的RMT条目中的锁定指示标识在迁移状态708的标注中被示为RMT[D]LK:1。
在锁定用于目的地存储器页面的RMT条目之后,页面迁移引擎用来自用于源存储器页面的RMT条目的信息的副本部分地覆写用于目的地存储器页面的RMT条目。例如,在一些实施方案中,页面迁移引擎保存来自响应于上述CAS操作而返回的用于源存储器页面的RMT条目的信息的副本(即,用于在迁移状态706中设置锁定指示标识和RMT迁移状态信息)。页面迁移引擎然后用来自用于源存储器页面的RMT条目的信息的已保存副本覆写用于目的地存储器页面的RMT条目。例如,在一些实施方案中,页面迁移引擎将诸如客户ID(例如,客户ID 604)、客户物理地址(例如,客户物理地址606)、页面信息(例如,页面信息608)等的信息从用于源存储器页面的RMT条目复制到用于目的地存储器页面的RMT条目。然后,页面迁移引擎从用于源页面的RMT条目移除该信息(例如,删除该信息、覆写该信息、将其设置为默认值等)。通过用来自用于目的地页面的RMT条目的信息覆写RMT条目并从用于源页面的RMT条目移除该信息,页面迁移引擎将该信息从用于源页面的RMT条目传输到用于目的地页面的RMT条目。该传输将所有权、访问控制和其他记录从源存储器页面切换到目的地存储器页面,并且从源存储器页面移除所有权、访问控制和其他记录(使得两个存储器页面不被源RMT条目和目的地RMT条目不允许地引用)。
在用于目的地页面的RMT条目的上述覆写操作期间,页面迁移引擎不会将RMT迁移状态信息从用于源存储器页面的RMT条目复制到用于目的地存储器页面的RMT条目。相反,页面迁移引擎将用于目的地存储器页面的RMT条目中的RMT迁移状态信息设置为将目的地存储器页面识别为处于迁移状态708。例如,在一些实施方案中,页面迁移引擎可将用于目的地存储器页面的RMT条目中的RMT迁移状态信息设置为2。在图7中,用于目的地存储器页面的RMT条目中的RMT迁移状态信息在迁移状态708的标注中被示为RMT[D]MS:2。当设置为2时,RMT迁移状态信息与被设置的锁定指示标识一起使IOMMU处理来自IO设备的存储器访问,如上所述。
在迁移状态708中,页面迁移引擎使IOMMU中的本地高速缓存中和内核116-118中的TLB中来自页面表条目的信息的任何现有副本无效(回想IO设备中的本地高速缓存中来自页面表条目的信息的现有副本先前在迁移状态702中被无效化)。例如,页面迁移引擎可以向IOMMU发出无效化请求,该无效化请求使得IOMMU使本地高速缓存中来自页面表条目的信息的任何现有副本无效。另外,页面迁移引擎类似地使IOMMU和内核116-118中的TLB中的本地高速缓存中来自来源存储器页面和目的地存储器页面的RMT条目的信息的任何现有副本无效化。在迁移状态708中,IOMMU还继续防止IOMMU和/或IO设备将来自用于存储器页面的页面表条目的信息的副本存储在本地高速缓存中,如上文针对迁移状态702-706所述。
功能块、设备和软件实体从迁移状态708前进到迁移状态710(如经由迁移状态708与710之间的粗箭头线所示)。因为在迁移状态708和迁移状态710之间页面表条目中的迁移状态信息没有改变,所以页面表条目中的迁移状态信息未改变。在图7中,页面表条目的迁移状态信息被示为迁移状态710的标注中的PTE MS:2。
在迁移状态710中,页面迁移引擎完成使用于源存储器页面的RMT条目为存储器页面的迁移做好准备。对于该操作,页面迁移引擎在用于源页面的RMT条目中设置RMT迁移状态信息,以将源页面识别为处于迁移状态710。例如,在一些实施方案中,页面迁移引擎可将用于源存储器页面的RMT条目中的RMT迁移状态信息设置为2。在图7中,用于源存储器页面的RMT条目中的RMT迁移状态信息在迁移状态710的标注中被示为RMT[S]MS:2。当设置为2时,RMT迁移状态信息使得诸如内核116-118的软件实体和功能块防止对源存储器页面的访问。
因为页面表条目和用于源页面的RMT条目中的迁移状态信息将存储器页面识别为处于迁移状态710中,所以IOMMU搁置新遇到的第一类型和第二类型两者的存储器访问,直到存储器页面的迁移完成之后(例如,直到返回到迁移状态700)。例如,IOMMU可将所有新遇到的第一类型和第二类型的存储器访问暂缓在缓冲器、存储器元件等中,并且随后在存储器页面的迁移完成之后释放暂缓的存储器访问。换句话讲,在针对存储器页面的存储器访问请求的页面表行走和反向映射表检查期间遇到PTE MS:2、RMT[S]LK:1和RMT[S]MS:2的组合时,IOMMU将确定该存储器页面处于迁移状态710并且搁置对该存储器页面的第一类型和第二类型两者的存储器访问。然而,在迁移状态710中,IOMMU允许除了新遇到的存储器访问之外的存储器访问继续进行。例如,IOMMU可允许第一类型和第二类型的现有存储器访问继续进行。在迁移状态710中,IOMMU还继续防止IOMMU和/或IO设备将来自用于存储器页面的页面表条目的信息的副本存储在本地高速缓存中,如上文针对迁移状态702-708所述。
功能块、设备和软件实体从迁移状态710前进到迁移状态712(如经由迁移状态710与712之间的粗箭头线所示)。当进入迁移状态712时,页面迁移引擎将用于存储器页面的页面表条目中的迁移状态信息设置为表示或识别迁移状态712的位序列、值等。例如,假设迁移状态信息包括两个位,则可将迁移状态信息设置为11以表示或识别迁移状态712。在迁移状态712中,页面迁移引擎使用于源存储器页面和目的地存储器页面的RMT条目中的RMT迁移状态信息和锁定指示标识保持不变,因为这些值在迁移状态710和712之间相同。因此,在图7中,页面表条目的迁移状态信息被示为PTE MS:3,并且用于源存储器页面和目的地存储器页面的RMT条目中的RMT迁移状态信息和锁定指示标识被示为迁移状态712的标注中的RMT[S]LK:1、RMT[S]MS:2、RMT[D]LK:1和RMT[D]MS:2。
在迁移状态712中,完成在存储器中迁移存储器页面的准备,并且随后迁移存储器页面。对于这些操作,因为页面表条目和用于源存储器页面和目的地存储器页面的RMT条目中的RMT迁移状态信息指示存储器页面处于迁移状态712,所以IOMMU继续搁置对存储器页面的第一类型和第二类型两者的存储器访问。IOMMU还继续防止IOMMU和/或IO设备将来自用于存储器页面的页面表条目的信息的副本存储在本地高速缓存中,如上文针对迁移状态702-710所述。IOMMU进一步完成对存储器页面的所有现有/未完成的存储器访问。换句话讲,完成在进入迁移状态712之前进行的所有剩余存储器访问。完成所有现有/未完成的存储器访问,使得在迁移期间没有访问存储器页面的存储器页面的存储器访问(即,因为可能会访问过期/不正确的数据等)。
在现有/未完成的存储器访问完成并且因此对存储器页面的所有剩余访问被搁置以准备迁移存储器页面之后,完成迁移存储器页面的准备。因此,页面迁移引擎在存储器中迁移存储器页面。例如,页面迁移引擎可将存储器页面从存储器中的第一/源位置/物理地址移动到存储器中的第二/目的地位置/物理地址(例如,在迁移存储器页面的请求中指定的位置)。在一些实施方案中,存储器中的移动是从第一类型的存储器(例如,较慢访问类型的存储器)到第二类型的存储器(例如,较快访问类型的存储器),或反之亦然。尽管迁移状态712被示出为单个迁移状态,但在另一示例中,迁移状态可被分成迁移状态712A和712B,在迁移状态712A中完成现有/未完成的存储器访问,在迁移状态712B中在存储器中迁移/移动存储器页面并且执行清理操作(如下所述)以准备将存储器页面返回到迁移状态700。
在迁移存储器页面之后,页面迁移引擎更新(或使得另一功能块或软件实体更新)页面表条目以识别存储该存储器页面的系统物理地址(即,存储器中的第二位置的物理地址)。换句话讲,页面迁移引擎更新该存储器页面的地址转换信息,使得由电子设备中的IO设备使用的客户物理地址可正确地映射到存储该存储器页面的系统物理地址。页面迁移引擎还基于存储器中的第二位置而设置页面表条目中的任何相关联元数据(如果必要的话)。
因为存储器页面已被成功迁移,所以功能块、设备和软件实体返回到迁移状态700(如经由迁移状态712与700之间的粗箭头线所示)。作为返回到迁移状态700的一部分,页面迁移引擎将用于存储器页面的页面表条目中的迁移状态信息设置为表示或识别迁移状态700的位序列、值等。例如,假设迁移状态信息包括两个位,则可将迁移状态信息设置为00以表示或识别迁移状态700。在图7中,页面表条目中的迁移信息在迁移状态700的标注中被示为PTE:MS:0。页面迁移引擎还将用于源存储器页面和目的地存储器页面的RMT条目中的RMT迁移状态信息和锁定指示标识设置为表示或识别迁移状态700。在图7中,用于源存储器页面和目的地存储器页面的RMT条目中的RMT迁移状态信息和锁定指示标识在迁移状态700的标注中示为RMT[S]MS:0、RMT[S]:0、RMT[D]MS:0和RMT[D]LK:0。回想用于源页面的RMT条目中的其他信息已传输到用于目的地页面的RMT条目,因此用于目的页面的RMT条目具有关于所迁移的存储器页面的适当访问和安全信息。另外,用于源页面的RMT条目中清除了关于所迁移的存储器页面的信息。
如上所述,迁移状态700是“非迁移”迁移状态。因为页面表条目和用于目的地存储器页面的RMT条目中的迁移状态信息将存储器页面识别为处于迁移状态700中,所以IOMMU允许正常进行来自IO设备对存储器页面和页面表条目中的相应信息的访问。即,因为未进行迁移存储器页面的准备并且存储器页面未被迁移,所以存储器页面和页面表条目中的信息的访问不被IOMMU阻止、搁置或以其他方式限制。
在一些实施方案中,当返回到迁移状态700时(即,在更新页面表条目和RMT条目之后),页面迁移引擎发信号通知软件实体迁移完成。软件实体然后恢复对存储器页面的正常操作。例如,软件实体可更新嵌套页面表以将存储器页面识别为存在。例如,在一些实施方案中,软件实体可改变嵌套页面表条目中的有效性信息(例如,有效性500)和/或嵌套页面表条目中的其他信息以将存储器页面识别为存在。软件实体还更新嵌套页面表中的页面表条目来标识存储存储器页面的系统物理地址。软件实体然后可释放页面错误机制以使得能够处理基于存储器页面已在嵌套页面表中被标记为缺失而发生的任何页面错误。
当返回到迁移状态700时,IOMMU释放先前在以前的迁移状态期间搁置的对存储器页面的搁置的存储器访问。例如,在一些实施方案中,当搁置的存储器访问被IOMMU暂缓时,IOMMU轮询/周期性地读取页面表条目。当IOMMU发现页面表条目将存储器页面识别为处于迁移状态700中时,IOMMU开始以先进先出次序从存储搁置的存储器访问的缓冲器或存储器元件获取搁置的存储器访问,并且执行每次存储器访问。在一些实施方案中,IOMMU在存储器页面的其他新遇到的存储器访问之前执行每次搁置的存储器访问(其本身可以以它们被接收的次序或另一次序被暂缓并且随后被释放)。此外,IOMMU恢复将来自页面表条目的信息高速缓存在本地高速缓存中。换句话讲,IOMMU本身可高速缓存来自页面表条目的信息的副本,并且可将来自页面表条目的信息的副本提供给请求IO设备。页面迁移引擎还向请求软件实体返回指示存储器页面已被成功迁移的响应。这完成了存储器页面的迁移。
对于图7中的示例,假设迁移尝试是成功的——并且因此用于准备迁移页面并且随后迁移页面的所有操作都是成功的。然而,如果操作中的一个操作失败或遇到不期望或非预期的条件或差错,则可终止页面的迁移。当迁移终止时,功能块、设备和软件实体从当前迁移状态(其可以是迁移状态702-712中的任一者)返回到迁移状态700。这经由迁移状态702-710与迁移状态700之间的对应细箭头线以及迁移状态712与迁移状态700之间的粗箭头线来示出。在终止存储器页面的迁移后,软件实体、页面迁移引擎或另一功能块或设备将用于存储器页面的页面表条目和用于源存储器页面和目的地存储器页面的RMT条目中的迁移状态信息恢复为表示或识别迁移状态700的位序列、值等。例如,假设迁移状态信息包括两个位,则可将迁移状态信息设置为00以表示或识别迁移状态700等。当由于迁移存储器页面的失败而返回到迁移状态700时,IOMMU释放存储器页面的任何搁置的存储器访问,并且恢复将来自页面表条目的信息的副本高速缓存在IOMMU和IO设备中的本地高速缓存中——并且更一般地,消除用于迁移存储器页面的准备的影响。另外,页面迁移引擎(和/或另一功能块或设备)将迁移的失败传达给软件实体。软件实体然后可执行错误处理例程(或者如果迁移是自愿的,则忽略失败)。
在一些实施方案中,尽管对迁移存储器页面和将来自相应页面表条目的信息高速缓存在本地高速缓存中的存储器访问受到限制,但对非迁移存储器页面及其相应页面表条目的访问正常进行。即,因为未进行迁移非迁移存储器页面的准备并且非迁移页面将不被迁移,所以非迁移存储器页面和相应页面表条目中的信息的访问不被IOMMU阻止、搁置或以其他方式限制。换句话讲,IOMMU正常使用来自此类页面表条目的信息并且正常执行此类存储器页面的存储器访问。在一些实施方案中,将用于非迁移页面的迁移状态信息和RMT条目设置为指示非迁移页面处于迁移状态700。然而,非迁移存储器页面的某些存储器访问可能由于排序原因和/或基于存储器页面的迁移的其他原因而被阻止——但通常只要存储器中的非迁移存储器页面和相应页面表条目保持正确就可继续进行。
在一些实施方案中,功能块、设备和软件实体可以以不同的次序在迁移状态之间转换。例如,在一些实施方案中,可跳过迁移状态。迁移状态的跳过的示例在图7中由来自迁移状态700的“跳过迁移状态”标签示出(为了清楚起见,未标记迁移状态之间的每个可能的跳过)。需注意,这种跳过可包括从任何适当的迁移状态跳到任何其他可允许的迁移状态,只要用于源存储器页面和/或目的地页面的迁移状态信息和RMT条目被正确地更新。例如,在一些实施方案中,仅处理器能够访问(并且因此IO设备不可访问)的存储器页面可从迁移状态700直接转换到迁移状态712。在这些实施方案中,处理器包括用于处理缺失存储器页面的页面错误机制,并且软件实体和/或页面迁移引擎可简单地在相应页面表条目中将存储器页面标记为缺失并且继续迁移存储器页面。在一些实施方案中,处理器使用与IOMMU不同的页面表,并且因此存储器页面在迁移期间可在处理器的页面表中标记为“缺失”——这使得存储器页面由处理器使用处理器的页面错误机制来处理。然而,在一些实施方案中,处理器使用与IOMMU相同的页面表,但其对于处理器和IOMMU具有不同的可用指示标识。在这些实施方案中,可将处理器的可用指示标识设置为使得存储器页面由处理器使用处理器的页面错误机制来处理,而存储器页面保持“可供”IOMMU处理(经由搁置存储器访问等),如本文所述。
尽管对于图7中所示的示例,仅单个存储器页面被迁移,但在一些实施方案中,迁移多个存储器页面的准备和/或迁移该多个存储器页面可并行发生。换句话讲,使用上述迁移状态信息和用于每个存储器页面的RMT中的信息,迁移两个或更多个存储器页面的准备和/或迁移该两个或更多个存储器页面可在相同或相近的时间、同时等执行。需注意,在这种情况下,各个存储器页面可处于不同的迁移状态中——并且因此存储器页面的迁移可动态地开始(例如,当软件实体确定每个存储器页面将被迁移等时)并且与迁移多个存储器页面的准备和/或其他存储器页面的迁移并行地完成。每个存储器页面因此能够经由其页面表条目和相应RMT条目被单独地识别为处于迁移状态中的一者中或处于非迁移状态中——并且如本文所述执行用于处理存储器页面和/或页面表条目的访问的操作。
用于处理迁移存储器页面的过程
在所描述的实施方案中,当正在进行迁移存储器页面的准备并且在存储器(例如,存储器104)中迁移存储器页面时,软件实体(例如,管理程序318、操作系统200等)、页面迁移引擎(例如,页面迁移引擎114)和IOMMU(例如,IOMMU 140)执行用于控制存储器页面的存储器访问和相关联页面表条目的操作。图8呈现了根据一些实施方案的示出用于迁移存储器页面的过程的流程图。图8被呈现为在一些实施方案中由请求方执行的操作的一般示例。然而,在一些实施方案中,请求方执行不同的操作和/或以不同的次序执行操作。
如图8中可见,该过程开始于当执行用于准备在存储器中迁移IO设备能够访问的存储器页面的操作时,软件实体和页面迁移引擎基于该操作被执行而设置用于该存储器页面的页面表条目中的迁移状态信息以及与迁移该存储器页面相关的反向映射表(RMT)条目中的信息(步骤800)。通常,对于该操作,当软件实体和页面迁移引擎执行用于准备迁移存储器页面的相应操作时,软件实体和页面迁移引擎更新用于该存储器页面的页面表条目中的迁移信息以及与迁移该存储器页面相关的RMT条目中的信息来指示当前/目前迁移状态。回想与迁移存储器页面相关的RMT条目包括用于第一位置处的源存储器页面(即,存储器页面本身)和第二位置处的目标存储器页面的RMT条目,存储器页面将迁移到第二位置。在一些实施方案中,设置与迁移存储器页面相关的RMT条目中的信息包括基于正在执行的操作设置锁定指示标识和/或RMT迁移状态信息(需注意,这些中的一些或全部可不在迁移状态之间改变,如以上针对图7所示)。
如上所述,在迁移状态702-712中,软件实体和/或页面迁移引擎执行用于准备迁移存储器页面的操作,并且随后在迁移状态712中(如上所述,该状态可被划分成迁移状态712A和712B,在迁移状态712A中完成现有/未完成的第二类型的存储器访问,在迁移状态712B中在存储器中迁移/移动存储器页面并且执行清理操作),页面迁移引擎执行用于迁移存储器页面的操作。基于正在执行的操作来设置用于存储器页面的页面表条目中的迁移状态信息以及与迁移存储器页面相关的RMT条目中的信息因此涉及设置迁移状态信息以及与迁移存储器页面相关的RMT条目中的信息来标识存储器页面的迁移状态。例如,在接收到迁移存储器页面的请求之后,当执行准备迁移存储器页面的初始操作时(或之前),软件实体可将迁移状态信息设置为迁移状态702,诸如通过将迁移状态设置为指示迁移状态702的位序列或值。然而,在迁移状态702中,与迁移存储器页面相关的RMT条目中的信息与迁移状态700相比保持不变(例如,参见图7中迁移状态702的标注)。
在一些实施方案中,由软件实体和IO设备执行的特定操作取决于存储器页面的当前迁移状态。例如,在一些实施方案中,由软件实体执行的操作是用于(经由到IOMMU的对应命令)使该至少一个IO设备中的高速缓存中来自页面表条目的信息的任何现有副本无效的操作。在一些实施方案中,软件实体在迁移状态702中执行该操作。又如,在一些实施方案中,由页面迁移引擎执行的操作是用于使IOMMU中的高速缓存中来自页面表条目的信息的任何现有副本无效的操作。在一些实施方案中,页面迁移引擎在迁移状态708中执行该操作。再如,在一些实施方案中,由页面迁移引擎执行的操作是用于在迁移存储器页面之前完成未被IOMMU搁置的对存储器页面的任何存储器访问的操作。在一些实施方案中,页面迁移引擎在迁移状态702-712中执行这些操作。上文针对图7描述了可由软件实体和页面迁移引擎执行这些操作的序列/次序。
IOMMU基于页面表条目中的迁移状态信息以及与迁移存储器页面相关的RMT条目中的信息来控制来自页面表条目的信息的使用(步骤802)。对于该操作,IOMMU(或者更确切地说,IOMMU表行走器)在执行表行走时获取迁移状态信息和来自用于源存储器页面的RMT条目的信息,并且检查迁移状态信息和来自用于源存储器页面的RMT条目的信息的当前值(例如,锁定指示标识和RMT迁移状态信息)。当迁移状态信息以及用于源存储器页面的RMT条目中的信息指示正在进行迁移存储器页面的准备和/或存储器页面正被迁移时,IOMMU限制来自页面表的信息的使用。例如,在迁移状态702-712中,IOMMU可防止将来自页面表条目的信息的副本高速缓存在IOMMU本身中或IO设备中的高速缓存中。相比之下,当迁移状态信息以及用于源存储器页面的RMT条目中的信息指示页面未被迁移时,诸如在迁移状态700中,IOMMU可正常使用来自页面表的信息。因此,在非迁移迁移状态中,IOMMU本身可高速缓存来自页面表条目的信息的副本,并且可将来自页面表条目的信息的副本提供给IO设备(遵从任何其他现有的访问限制)。
IOMMU还基于页面表条目中的迁移状态信息以及与迁移存储器页面相关的RMT条目中的信息来控制存储器页面的存储器访问的执行(步骤804)。对于该操作,IOMMU如上所述获取迁移状态信息和用于源存储器页面的RMT条目中的信息,并且检查迁移状态信息和用于源存储器页面的RMT条目中的信息的当前值。当迁移状态信息以及用于源存储器页面的RMT条目中的信息指示正在进行迁移存储器页面的准备和/或存储器页面正被迁移时,IOMMU限制对该存储器页面的存储器访问。例如,在迁移状态702-712中,IOMMU可搁置对存储器页面的指定的新遇到的存储器访问——尽管现有的存储器访问被允许在存储器页面被迁移之前继续进行到完成。相比之下,当迁移状态信息以及用于源存储器页面的RMT条目中的信息指示页面处于其他迁移状态时,诸如在迁移状态700中,IOMMU可准许正常进行对该存储器页面的存储器访问。因此,在这些迁移状态中,IOMMU以典型方式执行对存储器页面的存储器访问,遵从任何其他现有的访问限制。
虽然图8呈现了在为迁移存储器页面“做准备”时设置和使用页面表条目中的迁移状态信息和RMT条目中的信息的示例,但是在一些实施方案中,页面表条目中的迁移状态信息和RMT条目中的信息通常分别存在于页面表条目和RMT中,并且在其他情况下(即,在其他迁移状态下)用于“控制”存储器页面和相应页面表条目中的信息的访问。例如,对于完成了图8中描述的准备并且存储器页面实际上正被迁移(即,正处于从存储器中的一个位置移动到另一个位置的过程中)的存储器页面,页面表条目中的迁移状态信息和RMT条目中的信息由IOMMU用于控制存储器页面和相应页面表条目中的信息的访问。在一些实施方案中,在迁移状态712中执行存储器页面的迁移——利用对存储器页面和相应页面表条目中的信息的访问的上述控制。又如,对于未被迁移并且因此未对其进行迁移存储器页面的准备的存储器页面,页面表条目中的迁移状态信息以及RMT条目中的信息由IOMMU用于控制存储器页面和相应页面表条目中的信息的访问。在一些实施方案中,在迁移状态700中执行用于非迁移存储器页面的操作——利用对存储器页面和相应页面表条目中的信息的访问的上述控制(或控制的缺乏)。
迁移仅处理器存储器页面
在一些实施方案中,存储器页面可以是“仅处理器”存储器页面,并且因此可以是只能由处理器(例如,内核116-118)访问并且不能由IO设备访问的存储器页面。因为此类存储器页面不能由IO设备访问,所以用于迁移这些存储器页面的上述操作中的至少一些被不同地执行。在一些实施方案中,为了迁移仅处理器存储器页面,软件实体(例如,操作系统、管理程序等)首先更新用于存储器页面的页面表条目(例如,在嵌套页面表中)以将该页面识别为不存在。例如,软件实体可设置或清除页面表条目中的相应有效性信息等。然后,软件实体指示页面迁移引擎开始用于迁移存储器页面的操作。
当从软件实体接收到指令时,页面迁移引擎设置用于源存储器页面(即,存储器页面在迁移之前在存储器中存储的位置)和目的地存储器页面(即,存储器页面在迁移之后在存储器中存储的位置)的RMT条目中的锁定指示标识,以将每个RMT条目识别为已锁定。回想其他软件实体和功能块在发现锁定指示标识已被设置后不应进一步访问给定RMT条目和/或相关联的存储器页面。页面迁移引擎还使处理器中的高速缓冲(例如,TLB)中用于源存储器页面的RMT条目和/或用于目的地存储器页面的RMT条目的任何高速缓存副本无效,以确保处理器不会错误地使用这些RMT条目的过时副本。因为处理器中的高速缓存中不存在用于源存储器页面的RMT条目和/或用于目的地存储器页面的RMT条目的副本,所以在迁移期间的任何存储器访问操作期间,处理器将需要检查相应的RMT条目本身,并且因此将找到锁定指示标识已被设置的相应RMT条目的当前版本。
在锁定用于源存储器页面和目的地存储器页面的RMT条目并且从高速缓存清除RMT条目的副本之后,页面迁移引擎迁移存储器页面。换句话讲,页面迁移引擎将数据从源存储器页面移动到目的地存储器页面。在迁移该存储器页面之后,页面迁移引擎将信息从用于源存储器页面的RMT条目传输到用于目的地存储器页面的RMT条目,并清除用于源存储器页面的RMT条目。通过如上所述传输信息,页面迁移引擎将该存储器页面的控制、访问和安全信息“迁移”到用于目的地存储器页面的RMT条目,并且从用于源存储器页面的RMT条目移除关于该存储器页面的信息(以避免该信息的不允许的复制)。页面迁移引擎还通过清除用于目的地存储器页面的RMT条目中的锁定指示标识来解锁用于目的地存储器页面的RMT条目。
在完成上述操作之后,该存储器页面已被成功地迁移。因此,页面迁移引擎向软件实体发信号通知该存储器页面已被迁移,即迁移完成。软件实体更新用于存储器页面的页面表条目以反映该迁移,例如,设置与目的地存储器页面相关联的存储器页面的新物理地址等。页面迁移引擎还设置页面表条目以将该存储器页面识别为存在。
尽管上文描述了用于迁移仅存储器处理器页面的某些操作,但在一些实施方案中,执行不同的操作和/或以不同的次序执行操作。例如,在一些实施方案中,页面迁移引擎(而不是软件实体)对页面表条目进行更新。在这些实施方案中,软件实体(或另一软件实体或功能块)可简单地请求页面迁移引擎迁移存储器页面,并且页面迁移引擎可执行用于迁移存储器页面的操作。又如,在一些实施方案中,页面表条目本身不被标记为不存在(并且页面表条目可在迁移期间保持不变)。在这些实施方案中,将RMT条目设置为锁定足以防止在迁移期间对存储器页面的不期望的处理器访问。
在一些实施方案中,至少一个电子设备(例如,电子设备100等)使用存储在非暂态算机可读存储介质上的代码和/或数据来执行本文所述的操作中的一些或全部操作。更具体地,至少一个电子设备从计算机可读存储介质读取代码和/或数据,并且在执行所描述的操作时执行该代码并且/或者使用该数据。计算机可读存储介质可以是存储供电子设备使用的代码和/或数据的任何设备、介质或它们的组合。例如,计算机可读存储介质可以包括但不限于易失性和/或非易失性存储器,包括闪存存储器、随机存取存储器(例如,eDRAM、RAM、SRAM、DRAM、DDR4 SDRAM等)、非易失性RAM(例如,相变存储器、铁电随机存取存储器、自旋转移力矩随机存取存储器、磁阻随机存取存储器等)、只读存储器(ROM)和/或磁或光存储介质(例如,磁盘驱动器、磁带、CD、DVD等)。
在一些实施方案中,一个或多个硬件模块执行本文所述的操作。例如,硬件模块可包括(但不限于)一个或多个中央处理单元(CPU)/CPU内核、图形处理单元(GPU)/GPU内核、专用集成电路(ASIC)芯片、现场可编程门阵列(FPGA)、压缩器或编码器、计算单元、嵌入式处理器、加速处理单元(APU)、控制器、请求方、完成方、网络通信链路和/或其他功能块。当激活此类硬件模块中的电路系统(例如,集成电路元件、离散电路元件等)时,该电路系统执行操作中的一些或全部。在一些实施方案中,硬件模块包括通用电路系统,诸如执行流水线、计算或处理单元等,该通用电路系统在执行指令(例如,程序代码、固件等)时执行操作。在一些实施方案中,硬件模块包括执行操作的特定目的或专用电路系统,可能包括“在硬件中”执行一些或所有操作而不执行指令的电路系统。
在一些实施方案中,表示本文所述的一些或全部功能块和电路元件(例如,电子设备100或其一些部分)的数据结构被存储在非暂态计算机可读存储介质上,该非暂态计算机可读存储介质包括可以由电子设备读取并且直接或间接用于制造包括功能块和电路元件的硬件的数据库或其他数据结构。例如,数据结构可以是高级设计语言(HDL)诸如Verilog或VHDL中的硬件功能的行为级描述或寄存器传送级(RTL)描述。该描述可以由合成工具读取,该合成工具可以合成该描述以产生网表,该网表包括来自合成库的表示包括上述功能块和电路元件的硬件的功能的晶体管/电路元件的列表。然后可以放置和路由网表以产生描述待应用于掩码的几何形状的数据集。然后可以在各种半导体制造步骤中使用掩模,以产生对应于上述功能块和电路元件的一个或多个半导体电路(例如,集成电路)。另选地,计算机可访问存储介质上的数据库可以是网表(具有或不具有合成库)或数据集(根据需要)或图形数据系统(GDS)II数据。
在本说明书中,变量或未指定的值(即,没有值的特定实例的值的一般描述)由字母诸如N、M和X表示。如本文所用,尽管在本说明书中可能在不同的位置使用类似的字母,但变量和未指定的值在每种情况下不一定相同,即,可能存在旨在用于一般变量和未指定的值中的一些或全部的不同的变量和值。换句话讲,在本说明书中用于表示变量和未指定值的N和任何其他字母的特定实例不一定彼此相关。
如本文所用的表述“等等”或“等”旨在表示一种和/或情况,即,与“等”相关联的列表中的元素“中的至少一个”的等效物。例如,在语句“电子设备执行第一操作、第二操作等”中,电子设备执行第一操作、第二操作和其他操作中的至少一者。此外,与“等”相关联的列表中的元素仅仅是一组示例中的示例,并且至少一些示例可以不出现在一些实施方案中。
仅出于说明和描述的目的给出了实施方案的前述描述。它们并不旨在是穷举性的或将实施方案限制为所公开的形式。因此,许多修改和变化对于本领域技术人员而言将是显而易见的。另外,上述公开内容不旨在限制实施方案。实施方案的范围由所附权利要求限定。

Claims (22)

1.一种电子设备,包括:
存储器;
输入-输出存储器管理单元(IOMMU);
执行软件实体的处理器;和
页面迁移引擎,其中:
所述软件实体和所述页面迁移引擎被配置为执行用于准备在所述存储器中迁移由至少一个IO设备能够访问的存储器页面的操作,所述软件实体和所述页面迁移引擎基于所述操作被执行而设置用于所述存储器页面的页面表条目中的迁移状态信息以及与迁移所述存储器页面相关的反向映射表(RMT)条目中的信息;并且
所述IOMMU被配置为基于所述页面表条目中的所述迁移状态信息和所述RMT条目中的所述信息来控制来自所述页面表条目的信息的使用以及控制所述存储器页面的存储器访问的执行。
2.根据权利要求1所述的电子设备,其中与迁移所述存储器页面相关的所述RMT条目包括用于以下的RMT条目:
所述存储器页面在所述存储器中所位于的源位置;和
所述存储器页面在所述存储器中将迁移到的目的地位置。
3.根据权利要求1所述的电子设备,其中当设置所述RMT条目中的所述信息时,所述页面迁移引擎被配置为:
基于所述操作被执行而设置所述RMT条目中的每个RMT条目中的RMT迁移状态信息和锁定指示标识。
4.根据权利要求1所述的电子设备,其中当设置所述页面表条目中的迁移状态信息和所述RMT条目中的所述信息时,所述软件实体和所述页面迁移引擎被配置为:
由所述软件实体和所述页面迁移引擎将所述迁移状态信息和/或所述RMT条目中的所述信息设置为值,所述值在被所述IOMMU读取时使得所述IOMMU通过以下方式控制来自所述页面表条目的信息的使用:
不将来自所述页面表条目的信息的副本存储在所述IOMMU中的高速缓存中;以及
不将来自所述页面表条目的信息的副本提供给至少一个IO设备以存储在所述至少一个IO设备中的高速缓存中。
5.根据权利要求4所述的电子设备,其中当执行用于准备迁移所述存储器页面的所述操作时,所述软件实体和所述页面迁移引擎被配置为:
由所述软件实体使所述至少一个IO设备中的高速缓存中来自所述页面表条目的信息的任何现有副本无效;以及
由所述页面迁移引擎使所述IOMMU中的高速缓存中来自所述页面表条目的信息的任何现有副本无效。
6.根据权利要求1所述的电子设备,其中当设置所述页面表条目中的迁移状态信息和所述RMT条目中的所述信息时,所述页面迁移引擎被配置为:
将所述迁移状态信息和所述RMT条目中的所述信息设置为第一值,所述第一值在被所述IOMMU读取时使得所述IOMMU通过以下方式控制所述存储器页面的存储器访问的执行:
搁置对所述存储器页面的新遇到的第一类型的存储器访问,但准许继续进行对所述存储器页面的现有的所述第一类型和第二类型的存储器访问以及新遇到的所述第二类型的存储器访问。
7.根据权利要求6所述的电子设备,其中当设置所述页面表条目中的迁移状态信息和所述RMT条目中的所述信息时,所述页面迁移引擎被配置为:
将所述迁移状态信息和所述RMT条目中的所述信息设置为第二值,所述第二值在被所述IOMMU读取时使得所述IOMMU通过以下方式控制所述存储器页面的存储器访问的执行:
搁置对所述存储器页面的新遇到的所述第一类型和所述第二类型的存储器访问两者,但准许完成对所述存储器页面的现有的所述第一类型和所述第二类型的存储器访问。
8.根据权利要求7所述的电子设备,其中当执行用于准备迁移所述存储器页面的所述操作时,所述页面迁移引擎被配置为:
确保在迁移所述存储器页面之前完成对所述存储器页面的未搁置的所述第一类型和所述第二类型的任何存储器访问。
9.根据权利要求1所述的电子设备,其中所述页面迁移引擎被进一步配置为执行用于迁移所述存储器页面的操作,所述操作包括:
将所述存储器页面从所述存储器中的第一位置移动到第二位置;以及
在所述移动完成之后:
更新所述页面表条目中的信息以将所述存储器页面识别为存储在所述存储器中的所述第二位置处;以及
将所述迁移状态信息和所述RMT条目中的所述信息设置为值,所述值在被所述IOMMU读取时使得所述IOMMU恢复正常使用来自所述页面表条目的信息并且正常执行所述存储器页面的存储器访问。
10.根据权利要求9所述的电子设备,其中所述RMT条目包括用于所述存储器页面在所述存储器中所位于的源位置的RMT条目和用于所述存储器页面在所述存储器中将迁移到的目的地位置的RMT条目,并且其中当设置所述RMT条目中的所述信息时,所述页面迁移引擎被配置为:
用从用于所述源位置的所述RMT条目获取的指定信息的副本覆写用于所述目的地位置的所述RMT条目中的指定信息;以及
从用于所述源位置的所述RMT条目中移除所述指定信息。
11.一种用于在电子设备中的存储器中迁移存储器页面的方法,所述方法包括:
当执行用于准备在所述存储器中迁移由至少一个IO设备能够访问的存储器页面的操作时,基于所述操作被执行而设置用于所述存储器页面的页面表条目中的迁移状态信息以及与迁移所述存储器页面相关的反向映射表(RMT)条目中的信息;以及
基于所述页面表条目中的所述迁移状态信息和所述RMT条目中的所述信息来控制来自所述页面表条目的信息的使用以及所述存储器页面的存储器访问的执行。
12.根据权利要求11所述的方法,其中与迁移所述存储器页面相关的所述RMT条目包括用于以下的RMT条目:
所述存储器页面在所述存储器中所位于的第一位置;和
所述存储器页面在所述存储器中将迁移到的第二位置。
13.根据权利要求11所述的方法,还包括,当设置所述RMT条目中的所述信息时:
基于所述操作被执行而设置所述RMT条目中的每个RMT条目中的RMT迁移状态信息和/或锁定指示标识。
14.根据权利要求11所述的方法,其中设置所述页面表条目中的迁移状态信息和所述RMT条目中的所述信息包括:
将所述迁移状态信息和/或所述RMT条目中的所述信息设置为值,所述值在被所述IOMMU读取时使得所述IOMMU通过以下方式控制来自所述页面表条目的信息的使用:
不将来自所述页面表条目的信息的副本存储在所述IOMMU中的高速缓存中;以及
不将来自所述页面表条目的信息的副本提供给至少一个IO设备以存储在所述至少一个IO设备中的高速缓存中。
15.根据权利要求14所述的方法,其中准备迁移所述存储器页面包括:
使所述至少一个IO设备中的高速缓存中来自所述页面表条目的信息的任何现有副本无效;以及
使所述IOMMU中的高速缓存中来自所述页面表条目的信息的任何现有副本无效。
16.根据权利要求11所述的方法,其中设置所述页面表条目中的迁移状态信息和所述RMT条目中的所述信息包括:
将所述迁移状态信息和所述RMT条目中的所述信息设置为第一值,所述第一值在被所述IOMMU读取时使得所述IOMMU通过以下方式控制所述存储器页面的存储器访问的执行:
搁置对所述存储器页面的新遇到的第一类型的存储器访问,但准许继续进行对所述存储器页面的现有的所述第一类型和第二类型的存储器访问以及新遇到的所述第二类型的存储器访问。
17.根据权利要求16所述的方法,其中设置所述页面表条目中的迁移状态信息和所述RMT条目中的所述信息包括:
将所述迁移状态信息和所述RMT条目中的所述信息设置为第二值,所述第二值在被所述IOMMU读取时使得所述IOMMU通过以下方式控制所述存储器页面的存储器访问的执行:
搁置对所述存储器页面的新遇到的所述第一类型和所述第二类型的存储器访问两者,但准许完成对所述存储器页面的现有的所述第一类型和所述第二类型的存储器访问。
18.根据权利要求17所述的方法,其中准备迁移所述存储器页面包括:
确保在迁移所述存储器页面之前完成对所述存储器页面的未搁置的所述第一类型和所述第二类型的任何存储器访问。
19.根据权利要求11所述的方法,还包括执行用于迁移所述存储器页面的操作,所述操作包括:
将所述存储器页面从所述存储器中的第一位置移动到第二位置;以及
在所述移动完成之后:
更新所述页面表条目中的信息以将所述存储器页面识别为存储在所述存储器中的所述第二位置处;以及
将所述迁移状态信息和所述RMT条目中的所述信息设置为值,所述值在被所述IOMMU读取时使得所述IOMMU恢复正常使用来自所述页面表条目的信息并且正常执行所述存储器页面的存储器访问。
20.根据权利要求19所述的方法,其中所述RMT条目包括用于所述存储器页面在所述存储器中所位于的源位置的RMT条目和用于所述存储器页面在所述存储器中将迁移到的目的地位置的RMT条目,并且其中所述方法还包括:
当设置所述RMT条目中的所述信息时:
用从用于所述源位置的所述RMT条目获取的指定信息的副本覆写用于所述目的地位置的所述RMT条目中的指定信息;以及
从用于所述源位置的所述RMT条目中移除所述指定信息。
21.一种电子设备,包括:
存储器;
处理器;和
页面迁移引擎,其中:
所述页面迁移引擎被配置为执行用于准备迁移和在所述存储器中迁移存储器页面的操作,所述页面迁移引擎基于所述操作被执行而设置与迁移所述存储器页面相关的反向映射表(RMT)条目中的锁定指示标识;并且
所述处理器被配置为基于所述RMT条目中的所述锁定指示标识来控制所述存储器页面的存储器访问的执行。
22.根据权利要求21所述的电子设备,其中:
所述处理器执行软件实体;
当所述页面迁移引擎执行用于准备迁移和在所述存储器中迁移所述存储器页面的操作时,所述软件实体或所述页面迁移引擎设置用于所述存储器页面的页面表条目以将所述存储器页面识别为不存在于所述存储器中;并且
所述处理器被配置为基于所述存储器页面被识别为不存在而控制所述存储器页面的存储器访问的执行和/或所述页面表条目中的信息的使用。
CN202280023076.9A 2021-03-24 2022-03-18 迁移由输入-输出设备能够访问的存储器页面 Pending CN117063165A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/211,036 US11567666B2 (en) 2021-03-24 2021-03-24 Handling the migration of pages of memory accessible by input-output devices
US17/211,036 2021-03-24
PCT/IB2022/052503 WO2022200962A1 (en) 2021-03-24 2022-03-18 Migrating pages of memory accessible by input-output devices

Publications (1)

Publication Number Publication Date
CN117063165A true CN117063165A (zh) 2023-11-14

Family

ID=83363328

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202280023076.9A Pending CN117063165A (zh) 2021-03-24 2022-03-18 迁移由输入-输出设备能够访问的存储器页面

Country Status (6)

Country Link
US (1) US11567666B2 (zh)
EP (1) EP4315079A1 (zh)
JP (1) JP2024513734A (zh)
KR (1) KR20230159879A (zh)
CN (1) CN117063165A (zh)
WO (1) WO2022200962A1 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020245829A1 (en) * 2019-06-05 2020-12-10 Nitromia Ltd Accelerated execution of applications with fully homomorphically encrypted input data
US11947801B2 (en) * 2022-07-29 2024-04-02 Intel Corporation In-place memory copy during remote data transfer in heterogeneous compute environment

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6112286A (en) * 1997-09-19 2000-08-29 Silicon Graphics, Inc. Reverse mapping page frame data structures to page table entries
US8621120B2 (en) * 2006-04-17 2013-12-31 International Business Machines Corporation Stalling of DMA operations in order to do memory migration using a migration in progress bit in the translation control entry mechanism
US9785378B2 (en) * 2014-01-28 2017-10-10 Red Hat Israel, Ltd. Tracking transformed memory pages in virtual machine chain migration
CN103955399B (zh) * 2014-04-30 2017-06-20 华为技术有限公司 一种虚拟机迁移方法和装置及物理主机
US10509736B2 (en) * 2016-07-29 2019-12-17 Advanced Micro Devices, Inc. Controlling access by IO devices to pages in a memory in a computing device
US10169244B2 (en) * 2016-07-29 2019-01-01 Advanced Micro Devices, Inc. Controlling access to pages in a memory in a computing device
CN108885596A (zh) * 2017-12-29 2018-11-23 深圳市大疆创新科技有限公司 数据处理方法、设备、dma控制器及计算机可读存储介质
CN110895513A (zh) * 2018-09-12 2020-03-20 华为技术有限公司 一种系统垃圾回收方法和固态硬盘中的垃圾回收方法
KR20200087487A (ko) * 2019-01-11 2020-07-21 에스케이하이닉스 주식회사 메모리 시스템에서의 유효 데이터 체크 방법 및 장치
CN112328354A (zh) * 2019-08-05 2021-02-05 阿里巴巴集团控股有限公司 虚拟机热迁移方法、装置、电子设备及计算机存储介质

Also Published As

Publication number Publication date
US11567666B2 (en) 2023-01-31
US20220308755A1 (en) 2022-09-29
KR20230159879A (ko) 2023-11-22
EP4315079A1 (en) 2024-02-07
WO2022200962A1 (en) 2022-09-29
JP2024513734A (ja) 2024-03-27

Similar Documents

Publication Publication Date Title
CN109564522B (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
US7516247B2 (en) Avoiding silent data corruption and data leakage in a virtual environment with multiple guests
US7543131B2 (en) Controlling an I/O MMU
US7613898B2 (en) Virtualizing an IOMMU
US7653803B2 (en) Address translation for input/output (I/O) devices and interrupt remapping for I/O devices in an I/O memory management unit (IOMMU)
JP4772795B2 (ja) 大アドレス容量に及ぶ変換テーブルを用いた、アドレス変換の性能向上
US10019377B2 (en) Managing cache coherence using information in a page table
US7480784B2 (en) Ensuring deadlock free operation for peer to peer traffic in an input/output memory management unit (IOMMU)
US20220308756A1 (en) Performing Memory Accesses for Input-Output Devices using Encryption Keys Associated with Owners of Pages of Memory
CN117063165A (zh) 迁移由输入-输出设备能够访问的存储器页面
CN116745752A (zh) 迁移由输入-输出设备能够访问的存储器页面
CN113272789A (zh) 由输入输出存储器管理单元进行的域标识符和装置标识符转译

Legal Events

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