CN113474754A - 有条件退让给管理程序指令 - Google Patents

有条件退让给管理程序指令 Download PDF

Info

Publication number
CN113474754A
CN113474754A CN202080016682.9A CN202080016682A CN113474754A CN 113474754 A CN113474754 A CN 113474754A CN 202080016682 A CN202080016682 A CN 202080016682A CN 113474754 A CN113474754 A CN 113474754A
Authority
CN
China
Prior art keywords
hypervisor
address
instruction
execution mode
trap
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
CN202080016682.9A
Other languages
English (en)
Inventor
W·J·迪肯
M·津吉尔
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.)
ARM Ltd
Original Assignee
ARM Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ARM Ltd filed Critical ARM Ltd
Publication of CN113474754A publication Critical patent/CN113474754A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1036Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30072Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/3009Thread control instructions
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • 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/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)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

本发明公开了一种装置,该装置包括处理电路(16),该处理电路具有用于执行管理程序的管理程序执行模式,以及比该管理程序执行模式权限更低的至少一个较低权限执行模式,该管理程序用于管理在处理电路上执行的一个或多个虚拟处理器。响应于在该至少一个较低权限执行模式下执行的有条件退让给管理程序指令,指令解码器(14)控制处理电路(16)来:确定是否满足至少一个陷阱条件,以及当确定满足该至少一个陷阱条件时,将处理电路切换为管理程序执行模式;以及将至少一项调度提示信息存储在该管理程序执行模式下执行的指令可访问的至少一个存储元件中,该至少一项调度提示信息用于估计是否仍然满足该至少一个陷阱条件。

Description

有条件退让给管理程序指令
本技术涉及数据处理领域。
在虚拟化数据处理系统中,管理程序可管理在物理处理电路上执行的一个或多个虚拟处理器。虚拟处理器可由管理程序映射到可包括一个或多个物理处理器内核的物理处理平台的资源上。管理程序可支持多个虚拟机的执行,其中每个虚拟机能够请求该管理程序为该虚拟机创建给定数量的虚拟处理器,每个虚拟处理器仿真物理处理器内核的行为。管理程序可管理给定虚拟处理器所需的虚拟资源与硬件中实际提供的物理资源之间的映射,以及控制对相应虚拟处理器的调度,以控制每个虚拟处理器何时被分配处理资源。
至少一些示例提供了一种装置,该装置包括:处理电路,该处理电路用于执行数据处理;和指令解码器,该指令解码器用于解码指令以控制该处理电路来执行数据处理;其中:该处理电路具有用于执行管理程序的管理程序执行模式,以及比该管理程序执行模式权限更低的至少一个较低权限执行模式,该管理程序用于管理在该处理电路上执行的一个或多个虚拟处理器;响应于在所述至少一个较低权限执行模式下执行的有条件退让给管理程序指令(conditional yield to hypervisor instruction),该指令解码器被配置为控制该处理电路来:确定是否满足至少一个陷阱条件,以及当确定满足该至少一个陷阱条件时:将该处理电路切换为该管理程序执行模式;以及将至少一项调度提示信息存储在该管理程序执行模式下执行的指令可访问的至少一个存储元件中,该至少一项调度提示信息用于估计是否仍然满足该至少一个陷阱条件。
至少一些示例提供了一种用于装置的数据处理方法,该装置包括:处理电路,该处理电路具有用于执行管理程序的管理程序执行模式,以及比该管理程序执行模式权限更低的至少一个较低权限执行模式,该管理程序用于管理在该处理电路上执行的一个或多个虚拟处理器;该方法包括:解码在所述至少一个较低权限执行模式下执行的有条件退让给管理程序指令;以及响应于解码该有条件退让给管理程序指令:确定是否满足至少一个陷阱条件,以及当确定满足该至少一个陷阱条件时:将该处理电路切换为该管理程序执行模式;以及将至少一项调度提示信息存储在该管理程序执行模式下执行的指令可访问的至少一个存储元件中,该至少一项调度提示信息用于估计是否仍然满足该至少一个陷阱条件。
至少一些示例提供了一种计算机程序,所述计算机程序用于控制主机数据处理装置来提供用于执行指令的指令执行环境;该计算机程序包括:指令解码程序逻辑,该指令解码程序逻辑用于解码在该指令执行环境中执行的目标代码的指令,以控制该主机数据处理装置来执行与该目标代码的指令对应的数据处理,该指令执行环境具有用于执行管理程序的管理程序执行模式,以及比该管理程序执行模式权限更低的至少一个较低权限执行模式,该管理程序用于管理在该指令执行环境中执行的一个或多个虚拟处理器;其中:响应于在所述至少一个较低权限执行模式下执行的目标代码的有条件退让给管理程序指令,该指令解码程序逻辑被配置为控制该主机数据处理装置来:确定是否满足至少一个陷阱条件,以及当确定满足该至少一个陷阱条件时:将该指令执行环境切换为该管理程序执行模式;以及将至少一项调度提示信息存储在该管理程序执行模式下执行的目标代码的指令可访问的至少一个数据结构中,该至少一项调度提示信息用于估计是否仍然满足该至少一个陷阱条件。
可提供存储上述计算机程序的存储介质。该存储介质可以是非暂态存储介质。
本技术的另外的方面、特征和优点将从结合附图阅读的示例的以下描述中显而易见,在这些附图中:
图1示意性地示出了数据处理系统的示例;
图2示出了不同权限的不同执行模式的示例,这些不同执行模式包括管理程序模式;
图3示出了处理器内核的架构寄存器中的一些的示例;
图4示出了两阶段地址转换的示例;
图5是示出处理加载专属指令的方法的流程图;
图6是示出通过专属监视器跟踪对跟踪地址的访问的流程图;
图7示出了有条件退让给管理程序指令的示例;
图8是示出处理有条件退让给管理程序指令的方法的流程图;
图9是更详细地示出用于确定对于有条件退让给管理程序指令是否满足陷阱条件的步骤的流程图;
图10是更详细地示出用于响应于有条件退让给管理程序指令而存储调度提示信息的步骤的流程图;并且
图11示出了可使用的模拟器示例。
在一些处理工作负荷中,当前执行的过程可能在发生某个事件或满足条件(诸如,在存储器中的给定地址处的数据值被设置为特定值)之前无法取得进展。例如,以下可能是这种情况:如果使用锁变量来控制对存储器中的数据结构的访问,其中一个过程可能必须等待直到该锁变量已被另一个过程清除以指示另一个过程不再使用相同的数据结构才使用该数据结构。这可用于强制执行专属访问以确保以原子方式进行对数据结构的更新。
在虚拟化系统中,仍然等待满足一些条件的过程可自行将对处理电路的控制退让(yield)给管理程序,以如果可能的话,允许该管理程序重新调度不同的虚拟处理器,使得物理处理资源可在退让的虚拟处理器正在等待时用于有用的工作。然而,由于管理程序通常不知道每个虚拟处理器的确切工作负荷,因此该管理程序可能相对难以知道接下来调度哪个虚拟处理器。管理程序选择执行当前无法取得全面进展的虚拟处理器可能几乎没有益处。
一些处理工作负荷可使用队列锁定机制,其中处理器可使用队列结构来管理它们能够访问共享资源的顺序。如果管理程序正在调度使用队列锁定的虚拟处理器,则可能重要的是按照虚拟处理器到达队列的顺序来调度这些虚拟处理器,使得物理处理资源不会被浪费于运行将无法取得进展的虚拟处理器。类似地,调度正在等待读取由锁控制的变量的虚拟处理器时几乎没有意义,其中该锁已由写入器保持。
解决该问题的一种方法可以是使用准虚拟化,其中管理程序提供用于实现并发数据结构诸如锁或队列的服务,或者甚至可提供用于定向退让给特定虚拟处理器的服务。在这些方法中,虚拟机和管理程序可经由存储器中的共享数据结构(例如,队列)彼此通信,该共享数据结构可用于跟踪锁定,使得管理程序能够确定给定虚拟处理器是否可能取得进展。然而,该方法具有许多缺点。首先,该方法本质上在不同管理程序具体实施之间是不可移植的,因为给定的一段虚拟机代码将需要包括用于与由特定管理程序提供的特定形式的控制数据结构进行交互的指令,该控制数据结构将在该特定管理程序下执行。因此,每当新的并发算法实现时,这将需要扩展给定虚拟机的代码。此外,该方法将需要管理程序代码和虚拟机代码的开发者之间的协作,这可能增加复杂性和开发成本。另外,从性能角度来看,这种准虚拟化可能是不利的,因为该准虚拟化可依赖于对于管理程序的无条件陷阱,这可增加订阅不足的系统中的显著开销,在该系统中存在竞争使用由硬件提供的处理资源的相对较少的其他虚拟处理器。另外,在一些架构中,对管理程序的显式调用可能不被允许用于用户模式代码,因此通常应用程序级软件可能无论如何都无法使用这些准虚拟化界面。另外,对此类并发数据结构的访问可能需要来自管理程序和虚拟机两者的额外地址转换开销。
在下面讨论的技术中,为有条件退让给管理程序指令提供架构支持,这使得给定虚拟处理器能够有条件地将对处理电路的控制退让给管理程序,并且还向该管理程序传递调度提示信息,该提示信息可使得管理程序能够确定尝试重新调度同一虚拟处理器是否是有效的。这避免了管理程序和虚拟处理器需要如上所述经由存储器结构进行交互,从而有助于改善代码的可移植性并降低上述性能成本。
因此,装置可具有处理电路,该处理电路具有用于执行管理程序的管理程序执行模式,以及比管理程序执行模式权限更低的至少一个较低权限执行模式,该管理程序用于管理由处理电路执行的一个或多个虚拟处理器。指令解码器可支持对有条件退让给管理程序指令的解码,该有条件退让给管理程序指令在该至少一个较低权限执行模式下执行时,控制处理电路来确定是否满足至少一个陷阱条件。当确定满足该至少一个陷阱条件时,控制处理电路来切换为管理程序模式,并且将至少一项调度提示信息存储在管理程序模式下执行的指令可访问的至少一个存储元件中,该至少一项调度提示信息用于估计是否仍然满足该至少一个陷阱条件。因此,通过支持将调度提示信息传递给架构级的管理程序,不需要虚拟机和管理程序经由存储器进行交互以提供调度提示,并且这消除了上面关于准虚拟化所讨论的问题。
由处理电路响应于有条件退让给管理程序指令而返回的调度提示信息可包括可使得管理程序能够估计是否仍然将满足陷阱条件的任何信息。例如,调度提示信息可包括虚拟处理器用于评估是否满足陷阱条件的值。例如,如果要基于至少一个寄存器中的值来评估至少一个陷阱条件,则可将该至少一个寄存器中的值复制到管理程序指令可访问的位置,以使得该管理程序能够测试这些数据值并评估条件。
然而,在实施过程中,可访问较低权限执行模式的寄存器也可访问管理程序执行模式,因此可能不需要在寄存器之间实际复制那些寄存器的值。相反,在一些示例中,调度提示信息可包括对由有条件退让给管理程序指令指定的至少一个寄存器说明符的指示。寄存器说明符的大小通常可小于寄存器自身中的位的数量,因此该方法可减少要写入的位的数量,这可节省能量。
在一些系统中,架构可支持具有不同寄存器宽度的寄存器,因此在这种情况下,调度提示信息还可包括对由该至少一个寄存器说明符指定的至少一个寄存器的寄存器宽度的指示,使得管理程序将能够确定要检查的寄存器的位数。
例如,这些寄存器可被虚拟处理器用于跟踪存储器系统内的给定存储器地址的最后看到的值,该最后看到的值可被轮询以确定其是否已改变为指示虚拟处理器随后可继续进行下一段代码的特定值。通过返回对哪些寄存器存储轮询变量的最后看到的值的指示,这可允许管理程序检查轮询变量是否已经从该最后看到的值改变,此时,现在可能值得再次尝试重新调度先前执行的虚拟处理器。虽然轮询变量仍然与最后看到的值相同,但这将指示可能仍然满足陷阱条件,并且因此在轮询变量的值改变之前重新调度虚拟处理器将没有意义。因此,在一些示例中,有条件退让给管理程序指令可被包括在代码序列中,其中该有条件退让给管理程序指令在将轮询变量的值加载到给定目的地寄存器中的特定指令之后,然后该有条件退让给管理程序指令可指定用于存储轮询变量的目的地寄存器的寄存器说明符。应当理解,这只是有条件退让给管理程序指令的一个示例性用例,并且相同的指令也可用于将其他信息传递回管理程序,其中存储可用于决定是否满足陷阱条件的信息的寄存器将其寄存器说明符传递给该管理程序作为调度提示信息,使得该管理程序自身可从该寄存器读取值。
在一些示例中,调度提示信息可包括对由有条件退让给管理程序指令指定的多个寄存器说明符的指示。在一些情况下,可能有用的是,使多个不同的值可供管理程序使用,以便针对先前执行的虚拟处理器评估是否可能仍然将满足陷阱条件。例如,在一些情况下,存储器中变量的轮询可由掩码值限定,该掩码值指定要检查变量的哪个部分。例如,用于控制对存储器中的给定资源的访问的锁变量可包括多个字段,该多个字段包括指定拥有锁的过程的标识的字段,以及指示锁当前是否被设置或被清除的字段。可使用掩码来确保轮询仅响应于指示锁是否被设置或被清除的字段的变化。因此,可能有用的是使这种掩码可供管理程序使用,并且除了保持轮询变量的最后看到的值的寄存器的寄存器说明符之外,这还可通过传递掩码寄存器的寄存器说明符来完成。同样,这只是一个用例,并且一般来讲,有条件退让给管理程序指令可具有允许任何两个或更多个寄存器说明符被复制到管理程序执行模式可访问的位置中(无论这些寄存器的哪些内容已由先前指令提供)的编码。
在管理程序执行模式下执行的指令可访问的该至少一个存储元件可以是至少一个寄存器。在一些情况下,写入调度提示信息的寄存器可以是在比管理程序执行模式权限更低的较低权限执行模式下执行的其他指令不可访问的寄存器。这可避免在处理系统上运行的其他虚拟机或应用程序能够深入了解虚拟机的触发对管理程序的退让的功能。这在关注安全性的一些具体实施中可能是重要的。
在一个示例中,有条件退让给管理程序指令可包括等待事件(WFE)指令,该WFE指令用于指示处理电路等待直到一个类别的一个或多个事件中的一个事件被指示为已发生。当该类别的一个或多个事件中的一个事件被指示为已发生时,处理电路可确定不满足该至少一个陷阱条件。事件类别可包括各种动作,诸如中断或异常的发生、调试中断的发生或其他诊断事件诸如断点或观察点,或者对由专属监视器跟踪的跟踪地址的存储器访问的检测。一般来讲,如果没有发生这些事件中的任一个事件,则处理电路可响应于WFE指令而陷入到管理程序。如果已发生这些事件中的一个事件,则WFE指令可能不会陷入到管理程序,并且虚拟处理器可继续处理后续指令。
在事件类别包括对由专属监视器跟踪的跟踪地址的存储器访问的检测的情况下,这可能是特别有用的。这可用于如上所述使涉及锁或队列结构的工作负荷能够管理对共享资源的访问。利用该方法,可将要跟踪的给定地址分配给专属监视器,该专属监视器然后可监视由其他处理器内核或其他线程进行的存储器访问。如果检测到对跟踪地址的存储器访问,则这可作为事件被发信号通知。如果遇到WFE指令并且检测到已发生事件中的一个事件(包括对所跟踪地址的存储器访问)的指示,则该WFE指令不陷入到管理程序,因为现在有机会将跟踪地址更新为将导致不满足陷阱条件的值,使得虚拟处理器可继续取得进展。如果发生的事件不是将对应于跟踪地址的存储器位置更新为所需值以避免陷入,则执行WFE指令的后续尝试随后可再次陷入。利用这种方法,在尚未发生等待事件的情况下,WFE指令可有效地用于有条件地将对处理器的控制退让给管理程序。利用上述方法,可将这种WFE指令扩展为还返回至少一项调度提示信息,以使得管理程序能够估计是否仍然满足陷阱条件。
例如,该至少一项调度提示信息可包括提示地址,该提示地址对应于在执行WFE指令时由专属监视器跟踪的跟踪地址。除了如上所述由有条件退让给管理程序指令指定的一个或多个寄存器的寄存器说明符之外,还可记录该提示地址。通过记录该提示地址,这使得管理程序能够检查与提示地址自身相关联的数据值,并确定该提示地址处的值是否已改变,使得该管理程序可在其调度决策中考虑此因素。在提示地址处的数据值未从其先前看到的值改变的情况下,管理程序可确定不值得再次重新调度同一虚拟处理器。
一些系统可使用两阶段地址转换,其中提供了地址转换电路,以基于指示虚拟地址和中间地址之间的映射的第一地址转换数据以及指示中间地址和物理地址之间的映射的第二地址转换数据,将由处理电路执行的指令指定的虚拟地址转换为标识与该虚拟地址对应的存储器位置的物理地址。这种两阶段地址转换在虚拟化系统中可能是有用的,因为第一地址转换数据可由虚拟机软件设置,并且第二地址转换数据可由管理程序设置,以允许每个虚拟机以与在每个虚拟机是在处理硬件上运行的唯一操作系统的情况下的方式相同的方式管理对存储器的访问,而管理程序可使用第二地址转换数据来将冲突的中间地址从不同虚拟机映射到不同物理地址。
在这种两阶段地址转换方案中,上述跟踪地址可以是物理地址。然而,响应于WFE指令,调度提示信息可包括作为中间地址返回的提示地址,该中间地址对应于跟踪地址。这可能是有用的,因为与物理地址相比,管理程序通常可能能够将中间地址更有效地转换为现有映射的管理程序虚拟地址。
在调度信息将包括与跟踪地址对应的中间地址的情况下,调度提示信息还可包括有效指示,该有效指示根据在响应于WFE指令而切换为管理程序执行模式时与跟踪地址对应的中间地址是否可用来设置。在一些情况下,在执行WFE指令时,与跟踪地址对应的中间地址可能不会高速缓存在转换后备缓冲器或其他地址转换高速缓存存储器内,并且因此,在提供虚拟地址和中间地址之间的映射的页面表结构被走步以识别中间地址时,获得中间地址可能需要一些时间。在中间地址不可用但以其他方式满足陷阱条件以使得能够陷入到管理程序执行模式的情况下,即使包括中间地址的全调度提示信息不能供管理程序使用,也可更有效地以任何方式陷入到管理程序执行模式。这是因为陷入到管理程序执行模式随后将为管理程序提供重新调度不同虚拟处理器的机会,如果对于管理程序执行模式的陷阱被推迟直到中间地址变得可用,则这将是不可能的。即使缺少对中间地址的了解导致管理程序随后立即重新调度先前陷入的同一虚拟处理器,这也将仅仅是与在等待中间地址时以任何方式推迟了陷入的情况下的延迟罚分相同的延迟罚分。因此,即使中间地址尚未可用,通过陷入,这也可通过使另一个虚拟处理器有机会被执行来改善性能,该另一个虚拟处理器可能比先前退让的虚拟处理器更有可能取得进展,但是,当中间地址可用时,使其在调度提示信息中可用可允许管理程序做出关于接下来调度哪个虚拟处理器的更明智决策。
在一些架构中,可响应于指定目标地址的加载专属指令来进行对专属监视器的设置,响应于该设置,指令解码器控制处理电路来触发将存储在目标地址处的数据值加载到某个目的地寄存器中,并且还触发该专属监视器将目标地址设置为跟踪地址。
在使用如上所述的两阶段地址转换的系统中,地址转换电路可具有用于高速缓存虚拟地址、中间地址和/或物理地址之间的地址映射的部分的转换高速缓存存储器。一些方法可使用分体式转换高速缓存存储器,其中提供了第一地址转换高速缓存存储器,以高速缓存第一地址转换数据的条目,这些条目提供虚拟地址和中间地址之间的映射;并且提供了第二单独的转换高速缓存存储器,以高速缓存第二地址转换数据的部分,这些部分提供中间地址和物理地址之间的映射。
然而,其他具体实施可使用组合的转换高速缓存存储器,该组合的转换高速缓存存储器具有用于存储绕过中间地址直接从虚拟地址到物理地址的映射的高速缓存条目。因此,当这种组合的转换高速缓存存储器被更新时,在更新的条目中指定的信息将取决于控制虚拟地址和中间地址之间的映射的第一地址转换数据以及控制中间地址和物理地址之间的映射的第二地址转换数据两者。
在使用分体式转换高速缓存存储器方法的系统中,更可能的是,在先前执行导致给定目标地址被专属监视器跟踪的加载专属指令之后遇到WFE指令时,与跟踪地址对应的中间地址仍然可高速缓存在分体式转换高速缓存存储器中的第一地址转换高速缓存存储器内。
然而,在使用组合的转换高速缓存存储器的系统中,当该组合的转换高速缓存存储器的高速缓存条目存储直接从虚拟地址到物理地址的映射时,中间地址将不太可能可用于包括在调度提示信息中。因此,在这种系统中,可能有用的是,即使当组合的转换高速缓存存储器已经包括存储与加载专属指令的目标地址对应的虚拟到物理地址映射的高速缓存条目,加载专属指令也触发第一地址转换数据的查找以获得与加载专属指令的目标地址对应的中间地址。例如,地址转换电路可具有用于以这种方式高速缓存与加载专属指令的目标地址对应的多个中间地址的少量附加高速缓存存储装置。虽然当所需的虚拟到物理地址映射在地址转换高速缓存存储器中已经可用时,将不需要这种中间地址用于服务加载专属指令自身,但是触发另外的中间地址查找可能是有用的,因为这意味着如果随后执行后续WFE指令,则更有可能与跟踪地址对应的中间地址将可用于地址转换电路,并且因此更有可能中间地址可如上所述作为调度提示信息返回。因此,在使用组合的转换高速缓存存储器的微架构具体实施中,无论针对加载专属指令的直接虚拟到物理地址映射是否已经可用,触发中间地址查找都可以提高管理程序的性能,因为更有可能该管理程序将接收作为调度提示信息的一部分的中间地址,使得其可做出关于调度虚拟处理器的更好决策。
然而,应当理解,有条件退让给管理程序指令以及WFE指令的具体示例也可用于使用分别专用于第一阶段地址映射和第二阶段地址映射的分体式地址转换高速缓存存储器的微架构中。
在一些示例中,该至少一项调度提示信息可包括有效指示,该有效指示根据在执行等待事件指令时专属监视器是否正在跟踪作为跟踪地址的任何地址来设置。该指示可与如上所述指示中间地址是否可用的有效指示相同,或者可为单独的指示。通过在专属监视器没有跟踪任何地址的情况下返回无效指示,这可作为标志通知管理程序在确定是否重新调度虚拟处理器时不应考虑提示地址。例如,有时WFE指令可用于除处理存储器中地址的轮询之外的目的,因此可能并不总是期望使由专属监视器跟踪的地址可供管理程序使用,因此,有效指示可用于限定当管理程序做出其调度决策时,该管理程序是否将检查与由专属监视器跟踪的地址对应的存储位。
在一些情况下,对于有条件退让给管理程序指令是否满足该至少一个陷阱条件可取决于存储在管理程序控制寄存器中的陷阱控制指示符,该陷阱控制指示符指示有条件退让给管理程序指令是否应跟踪到管理程序。因此,在一些情况下,可能存在各自必须被满足的多种形式的陷阱条件,例如,如果陷阱控制指示符指示有条件退让给管理程序指令应陷入,并且处理电路响应于WFE指令而确定该类别的一个或多个事件中的任一个事件均未被指示为已发生,则可满足总体陷阱条件集合。
使用管理程序控制寄存器响应于有条件退让给管理程序指令而禁用陷入到管理程序的能力可能是有用的,因为有时虚拟处理器可能是在给定物理平台上运行的唯一虚拟处理器,并且在这种情况下,可能更有效的是,有条件退让给管理程序指令不陷入并且反而在没有陷阱的虚拟处理器自身内继续进行处理,因为即使虚拟处理器等待的事件尚未发生,也可能不存在可以利用硬件中提供的处理资源的任何其他虚拟处理器。
更具体地,管理程序控制寄存器可存储陷阱控制指示符,该陷阱控制指示符具有第一值和第二值中的一者。利用上述WFE指令示例,当陷阱控制指示符具有第一值时,处理电路可确定不满足该至少一个陷阱条件,而不管该类别事件中的任一个事件是否被指示为已发生。当陷阱控制指示符具有第二值时,处理电路可基于是否已发生所需类别的该一个或多个事件中的任一个事件来确定是否满足该至少一个陷阱条件。因此,当陷阱控制指示符具有第二值时,如果该类别事件中的任一个事件均未被指示为已发生,则认为满足该至少一个陷阱条件,而如果该类别的一个或多个事件中的一个事件被指示为已发生,则不满足该至少一个陷阱条件。
图1示意性地示出了包括多个处理器内核4的数据处理系统2的示例。在该示例中,该系统是具有两个处理器内核的多处理器系统,但是其他示例可具有更多数量的处理器内核或者可仅提供单个处理器内核。在提供多个处理器内核4的情况下,这些处理器内核可经由互连件6彼此通信,该互连件可管理相应内核内的高速缓存存储器8之间的一致性。处理器内核4可共享对共享存储器系统的访问,该共享存储器系统可包括共享高速缓存存储器10和主存储器12。每个处理器内核4可包括指令解码器14,该指令解码器用于解码从指令高速缓存存储器或存储器获取的指令并生成用于控制处理电路16来执行数据处理操作的控制信号。每个内核4可具有寄存器18,该寄存器用于存储由处理电路16处理的操作数并且用于存储用于控制处理电路16的操作的控制值。每个内核还可具有存储器管理单元(MMU)20和专属监视器22,该MMU充当用于在虚拟存储器地址和物理存储器地址之间转换的地址转换电路,该专属监视器用于跟踪系统的其他部分对特定地址的访问,这两者将在下文更详细地描述。
虽然在图1中,处理器内核4中的每个处理器内核的一般配置被示出为相同的,但应当理解,在相同系统内的不同内核之间仍可存在微架构差异,因此每个内核没有必要是相同的。例如,一个处理器内核4可具有处理电路16,该处理电路能够具有比另一个内核4中的处理电路16更大的指令吞吐量,或者一个内核可具有比另一个内核更大的高速缓存容量。
如图2所示,处理系统可具有支持虚拟化的架构,其中多个虚拟机可在管理程序的控制下在同一物理平台上执行。每个虚拟机可以与每个虚拟机是作为所存在的唯一操作系统的本地操作系统的情况下的方式相同的方式管理在其下运行的多个应用程序的执行,但管理程序可管理对不同虚拟机的调度,并且可管理虚拟机期望的虚拟资源(存储器、外围设备等)与由物理平台2实际提供的物理资源之间的映射。虚拟机可请求管理程序创建用于建立给定数量的虚拟处理器(VP)的资源,每个虚拟处理器仿真给定物理处理器内核的存在,但是其中虚拟处理器VP各自映射到硬件中提供的物理平台的物理内核上,使得可以提供比硬件中实际提供的更多数量的虚拟处理器。每个虚拟机(连同在虚拟机下运行的应用程序)可请求一定数量的虚拟处理器(例如,VM0可请求创建虚拟处理器VP0-VP3,VM1可请求创建虚拟处理器VP4-VP5等),使得从给定虚拟机的角度来看,其在具有一定数量的处理器内核的多处理器内核平台上执行,尽管这些处理器内核实际上可被映射到硬件中的不同数量的物理内核上。
为了支持此类虚拟化,处理器内核4可根据支持不同权限级别的多个执行模式(在图2的示例中被标记为EL2、EL1、EL0)的处理器架构进行操作。在该示例中,EL0是最低权限的操作状态,EL2是最高权限的操作状态。在一些示例中,还可存在具有甚至比EL2更大权限的执行模式,例如安全监视器执行模式,该安全监视器执行模式用于执行安全监视器软件,以控制安全操作世界与较不安全操作世界之间的划分。
在每个执行模式下,处理电路16可具有对存储在寄存器18中的架构状态的某个子集的访问权限。一般来讲,较低权限模式可访问的任何状态也可由比该模式权限更高的其他模式访问。因此,在EL1下,由处理电路16执行的指令可具有对EL0可访问的任何寄存器状态的访问权限,但此外,还可具有对当处理器EL0下操作时该处理器不可访问的一些附加寄存器的访问权限。类似地,当在EL2下操作时,处理器内核可具有对当处理器EL0和EL1中的一者下操作时不可由该处理器访问的某些寄存器的访问权限。不同执行模式之间的转换可基于异常和异常返回,其中异常触发从较低权限状态到较高权限状态的转换,并且处理在从处理该异常返回时返回到较低权限执行模式。异常可由外部事件引起或由在给定执行状态下运行的软件引起的事件引起,诸如存储器故障或对有条件退让给管理程序指令的执行。
图3示出了根据特定架构设置在处理器内核4中的寄存器18的子集的示例。应当理解,这仅为可以提供的寄存器状态中的一些,并且寄存器18还可以包括图3中未示出的其他架构寄存器,例如用于存储浮点值的浮点寄存器或用于存储其他控制值的另外的系统寄存器。
如图3所示,寄存器18可包括一组通用寄存器30,该组通用寄存器通常可由在任何执行模式下执行的指令访问。这些通用寄存器可包括一定数量的通用寄存器X0-X12,这些通用寄存器可用于指令,以用于识别那些指令的操作数或用作可写入指令结果的目的地寄存器。通用寄存器中的一些可用于控制处理器的操作的特殊目的。例如,寄存器X13可充当堆栈指针寄存器,该堆栈指针寄存器提供对应堆栈数据结构在存储器中的地址,该地址可用于响应于例如异常和异常返回而入栈或出栈寄存器状态。寄存器X14可充当存储返回地址的链路寄存器,处理可在处理另一个功能之后返回到该返回地址。寄存器X15可充当程序计数器,该程序计数器指示表示当前执行点的地址。
寄存器18还可包括多个系统寄存器32,该多个系统寄存器可存储用于控制处理电路16的操作的控制值。图3示出了这些寄存器的子集,该子集可包括:故障地址寄存器34,其用于记录关于触发存储器故障的地址的信息;一对备份异常状态寄存器36、38,其用于记录关于可能已发生的异常的信息;和管理程序控制寄存器40,其用于存储关于控制管理程序的动作以及控制哪些事件触发对于管理程序的陷阱的控制信息。
例如,当不允许当前执行的过程访问存储器的已被请求访问的给定区域时,或者如果注册地址的对应虚拟到物理地址映射仍然未被定义,则可能发生存储器故障。响应于触发存储器故障的存储器访问,将导致故障的地址写入FAR 34,使得当故障触发对于EL1处的虚拟机或EL2处的管理程序的陷阱时,监督代码可从FAR 32识别故障的原因,然后可采取行动,诸如将新条目分配给页面表结构以使得地址能够被映射,使得故障不会再次发生。
备份异常状态寄存器36、38,使得如果在EL1下执行时发生异常,则使用寄存器36(ESR_EL2),以使得在EL2处执行的管理程序可获得关于异常原因的信息,然后可采取适当的动作。例如,标识异常原因的异常状态标识符可存储在异常状态寄存器36中。类似地,如果在EL0处执行时发生异常,则关于该异常的信息可被记录到对应于EL1的异常状态寄存器38。通过备份异常状态寄存器,这意味着如果发生一系列嵌套异常(其中触发从EL0切换为EL1的异常之后是触发从EL1切换为EL2的另一个异常),则一旦管理程序在EL2处处理了异常,然后在返回到在EL1处执行的虚拟机时,该虚拟机将仍然能够基于第二异常状态寄存器38(ESR_EL1)的内容来确定先前在EL0处发生的异常的原因。
管理程序控制寄存器40可包括多个位,这些位指定多个不同类型的事件是否可触发处理电路切换为管理程序模式EL2。这些事件中的一个事件可以是陷阱控制指示符42,其控制在EL0和EL1中的一者下执行的等待事件(WFE)指令是否将触发切换为管理程序执行模式EL2。应当理解,管理程序配置寄存器(HCR)40还可包括多条其他控制信息,该控制信息影响管理程序的操作或限定需要对于管理程序的陷阱的情况。
如图3所示,寄存器18还可包括事件寄存器44,如果发生多个特定类别的事件中的一个事件,则设置该事件寄存器。事件寄存器44对于软件可能不是直接可见的。可导致事件寄存器被设置的事件可包括某些中断或异常、某些调试事件诸如断点或观察点,或者对由专属监视器22跟踪的跟踪地址的存储器访问的检测,如下所述。
如图4所示,给定处理器内核4内的MMU 20可根据两阶段地址转换过程来管理地址转换。虚拟机可限定存储在存储器系统内的阶段1页面表50,以限定从虚拟地址(VA)到中间物理地址(IPA)的映射。虚拟机可能已经被设计成假设其为运行的唯一操作系统并且假设中间物理地址实际上为直接标识存储器系统中的对应位置的物理地址。然而,管理程序可设置阶段2页面表52,该阶段2页面表控制将中间物理地址映射到实际上标识存储器系统中的对应位置的物理地址。这可允许管理程序将由不同虚拟机用于指存储器中的不同变量的IPA映射到不同物理地址以避免冲突。
如图1所示,MMU可包括至少一个地址转换高速缓存存储器21(也称为转换后备缓冲器或TLB),该至少一个地址转换高速缓存存储器用于高速缓存页面表50、52的部分,以用于比在每次必须从存储器读取这些页面表的情况下更快地进行访问。在一些系统中,TLB21可以是分体式TLB,其中单独的阶段1TLB和阶段2TLB被提供用于分别高速缓存阶段1页面表50和阶段2页面表52的部分。然而,其他系统可使用统一TLB 21,其中TLB的每个高速缓存条目存储直接从VA到TA的映射,该每个高速缓存条目来源于从阶段1页面表50和阶段2页面表52读取的条目的组合,使得如果物理地址已经针对给定虚拟地址高速缓存在统一TLB中,则可更快地定位该物理地址。
如图1所示,给定处理器内核4具有专属监视器22,该专属监视器可用于监视对存储器中的某个地址的访问。虽然图1示出了设置在处理器内核4自身内的专属监视器22,但在其他示例中,专属监视器可设置在互连件6内。因此,一般来讲,内核4具有对专属监视器22的访问权限,该专属监视器提供可向其注册要监视地址的结构。一旦地址已在专属监视器22中被注册为被跟踪,专属监视器硬件22就可检查由数据处理系统的其他部分进行的存储器访问的地址,以检测跟踪地址是否已被访问。例如,专属监视器22可拦截从互连件6接收的通过由另一个处理器内核4访问存储器而触发的窥探,并且如果窥探请求中指示的地址与记录在专属监视器22中的跟踪地址匹配,则该专属监视器可发信号通知事件,并且这可触发图3中所示的事件寄存器44的设置。
如图5所示,可响应于由指令解码器14解码的加载专属指令来执行要由专属监视器22跟踪的地址的设置。在步骤100处,遇到加载专属指令。该加载专属指令可指定目的地寄存器以及用于标识存储器地址#add的一个或多个参数,该存储器地址#add可以是虚拟地址。例如,可通过基址寄存器和偏移或基址寄存器和立即值或任何其他寻址模式来标识地址。响应于加载专属指令,在步骤102处,处理电路16触发专属监视器22来将对应于虚拟地址#add的物理地址设置为要监视的跟踪地址。如果任何其他地址先前被跟踪了,则可丢弃该地址,因为在一些示例中,可能仅有用于一次跟踪一个地址的空间。在步骤104处,响应于加载专属指令,还控制处理电路16来触发将来自存储器中对应于指定地址#add的地址的数据值加载到目的地寄存器Xd。
图6示出了示出由专属监视器22跟踪存储器访问的流程图。在步骤110处,专属监视器22检测到请求对给定地址的存储器访问,例如通过拦截由该存储器访问请求触发的窥探请求。在步骤112处,专属监视器将由存储器访问指定的地址与被注册用于监视的跟踪地址进行比较,并且确定它们是否相同。如果不是,则继续跟踪,并且该方法返回到步骤110以检测下一个存储器访问。如果存储器访问的地址确实匹配跟踪地址,则在步骤114处,通过更新事件寄存器44来发信号通知事件。
使用加载专属指令来设置专属监视器可用于启用轮询行为,其中给定虚拟机(或在虚拟机下运行的应用程序)可使用加载专属指令来轮询共享存储器中的变量,之后使用等待事件(WFE)指令来轮询,该WFE指令可向处理电路16指示在发信号通知事件之前无需其他动作。例如,这种虚拟机可包括如下轮询循环:
MOV X2,#0xFF00 //我们将轮询位15:8
SEVL //发送本地事件以避免立即陷入
循环:
WFE //如果没有事件未决,则陷入到管理程序
LDXR X0,[X1] //X1将变量的客户机虚拟地址保持在
//共享存储器
AND X0,X0,X2 //使用掩码隔离变量的所需部分
CBNZ X0,循环 //将变量与0进行比较,并且循环直到变量为非零
因此,在第一次执行循环时,WFE指令检测到已发生事件,因为其已紧接在SEVL指令之后,该SEVL指令用于触发本地事件以确保后续的加载专属指令将被执行至少一次。然后,加载专属指令从存储器读取共享变量,并且AND指令基于寄存器X2中的掩码来掩蔽返回值,并且如果掩码值为非零,则条件分支指令CBNZ将分支回到标记“循环”。因此,这是其中循环将继续循环,直到共享存储器中的变量的值变为零的示例,例如这可指示现在没有其他过程持有管理对存储器中的一些相关联的数据结构的访问的锁。此时,执行虚拟机或应用程序的虚拟处理器然后将能够超出循环前进到实际使用该数据结构的代码。
在执行虚拟机或应用程序的虚拟处理器是运行的唯一虚拟处理器的系统中,WFE指令可简单地使得处理电路16暂停执行,直到发信号通知事件,此时检查共享存储器中的值是否已经改变。然而,在虚拟化系统中仅仅允许虚拟处理器暂停可能是低效的,因为在等待事件被发信号通知的时间内,管理程序可重新调度另一个虚拟处理器,在先前的虚拟处理器等待事件发生的时间段内,该另一个虚拟处理器可利用处理器时间执行一些有用的工作。因此,可能期望的是配置WFE指令,使得在没有事件未决的情况下,WFE指令陷入到管理程序。这可通过以下方式来完成:在管理程序配置寄存器40中设置TWE标志42,以指示在没有发生相关类别事件中的任一个事件的情况下,WFE指令应触发对于管理程序的陷阱。
然而,即使WFE指令触发对于管理程序的陷阱,管理程序随后也需要决定接下来调度哪个虚拟处理器。如果说虚拟处理器VP0刚刚由于以上示例中的轮询循环内的WFE指令而被陷入,则如果管理程序仅仅再次选择VP0并且存储器中的轮询变量未改变,则这将仅仅导致虚拟处理器再次陷入,因此不会取得进展并且浪费处理器时间。可能更好的是,管理程序选择其他虚拟处理器VP1-VPn中能够取得进展的一个虚拟处理器。然而,管理程序可能几乎不可见每个虚拟机内正在执行的精确操作,因此可能不知道对于管理程序的陷阱是否是由正在轮询存储器中的共享变量的循环内的WFE指令引起的。在一些使用队列机制来处理按照特定顺序对多个不同虚拟处理器之间的共享数据的访问的工作负荷中,该问题甚至可能更显著,因为如果说虚拟处理器在队列中顺序为VP1、VP2、VP0,则为了使用共享变量使任何VP取得进展,管理程序应接下来选择VP1,因为如果在队列中VP0和VP2在VP1后面,则它们都不能取得进展。然而,利用现有技术,管理程序难以获得对信息的访问权限,该信息将使得管理程序能够决定哪个虚拟处理器最不可能由于对共享锁结构或队列的访问而被阻挡。一种方法可以是准虚拟化,但这种方法的缺点是如上所述缺乏可移植性和性能损失。
如图7所示,在本申请中,提出了另选方法,其中WFE指令被扩展为采用一对寄存器参数Xa、Xb作为源操作数,但其他陷入行为如上文针对WFE指令所述。因此,在管理程序控制寄存器40的TWE位42被设置为适当值的情况下,当事件寄存器44中没有发信号通知任何相关事件时,WFE指令将触发对于管理程序的陷阱。然而,当WFE指令确实陷入到EL2时,这触发到管理程序的调度提示信息返回,该调度提示信息被使得在该管理程序可访问的系统寄存器32中的一些内可由该管理程序访问。例如,可将由WFE指令指定的寄存器号Xa、Xb中的寄存器号以及对它们的寄存器宽度的指示写入与管理程序执行模式EL2相关联的异常状态寄存器36。另外,如果专属监视器22当前正在跟踪跟踪地址并且在MMU 20的TLB 21中的中间物理地址可用于该MMU,则故障地址寄存器34可被更新以指示与由专属监视器22跟踪的物理地址对应的中间物理地址,或者如果专属监视器22当前没有跟踪任何地址或者与跟踪的物理地址对应的中间物理地址不可用,则故障地址寄存器34可被设置为具有无效指示以指示其不表示真实中间物理地址。例如,该无效指示可以是不对应于存储器中的真实地址的地址值。例如,地址空间的一部分可被保留用于不对应于实际存储器位置的特殊值,并且该无效指示可以是那些特殊值中的一个值。
利用该新指令,虚拟机或应用程序可使用加载专属指令来轮询共享存储器中的变量,之后如果变量尚未达到期望值,则使用新的WFE指令。如果变量尚未同时更新并且因此事件尚未生成,则如果管理程序控制寄存器40中的陷阱控制被适当地设置,则新指令陷入到管理程序。虚拟机或应用程序可使用WFE指令中的两个寄存器参数Xa、Xb来传递观察到的共享变量的最后值以及指定正在轮询给管理程序的位的任何掩码。
例如,此处使用新指令示出了上文所示的代码序列的修改版本:
MOV X2,#0xFF00 //我们将轮询位15:8
SEVL //发送本地事件以避免立即陷入
循环:
WFE X0,X2 //如果没有事件未决,则陷入到管理程序,提供
//最后看到的值和掩码
LDXR X0,[X1] //X1将变量的客户机虚拟地址保持在
//共享存储器
AND X0,X0,X2 //使用掩码隔离变量的所需部分
CBNZ X0,循环 //将变量与0进行比较,并且循环直到变量为非零
因此,如果WFE指令陷入,则管理程序可通过读取故障地址寄存器34来检索X1中针对虚拟地址的中间物理地址,然后(例如,基于现有映射之间的已知偏移量)获得针对同一底层物理页面的其自身的虚拟映射。有了该映射之后,确定是否再次重新调度同一虚拟处理器可使用类似于以下示例的代码:
LDR X0,[X1] //X1将变量的管理程序虚拟地址保持在
//共享存储器
EOR X0,X0,X2 //将X2作为第一WFE参数从客户机(VM)传递AND X0,
X0,X3 //将X3作为第二WFE参数从客户机传递
这里,如果由AND指令产生的X0为0,则不应重新调度虚拟处理器,因为当正被轮询的位尚未改变时,可能陷入轮询循环的下一次迭代。该方法不受上述关于准虚拟化所描述的问题的影响,并且在WFE指令未陷入的本地环境中无需修改就能正确工作。
应当理解,上文所示的特定软件序列仅仅是上述WFE指令的一个示例性用例。在架构级提供的相同WFE指令可以由软件编程者以其他方式使用,例如,以将在寄存器Xa、Xb中识别的其他调度提示信息传递给管理程序,使得这些寄存器不需要如上述示例中那样指示轮询变量的最后看到的值和掩码。这些寄存器是否提供最后看到的值和掩码将取决于在WFE指令之前已经执行了哪些指令,而不是指令解码器40所支持的指令集架构的所需功能。
在一些示例中,当做出调度决策以在同一虚拟机拥有的虚拟处理器之间进行选择时,可以使用由WFE指令提供的调度提示信息,但是,用于在由一个虚拟机拥有的虚拟处理器和由不同虚拟机拥有的虚拟处理器之间进行切换的调度决策可与由WFE指令提供的调度提示信息无关。这是因为不同虚拟机的虚拟处理器将相对不太可能共享对共享存储器结构的访问。应当理解,在任何情况下,软件开发人员都可以找到由WFE指令返回的调度提示信息的其他用途,下面讨论的WFE指令的架构功能没有规定该调度提示信息的后续使用。
现在下面参考图8讨论WFE指令的架构功能。WFE指令是有条件退让给管理程序指令的示例,如果满足某些陷阱条件,则该管理程序指令可触发切换为管理程序执行模式。在步骤200处,指令解码器40解码有条件退让给管理程序指令,并且将解码的指令传递给处理电路16以待执行。应当理解,指令执行是流水线式的,使得指令的解码可以比正被执行的指令早多个周期进行。响应于遇到解码的有条件退让给管理程序指令,在步骤202处,处理电路16确定当前执行模式是管理程序模式还是比该管理程序模式权限更高的任何较高权限模式,并且如果是,则在步骤204处,处理电路16可保持为当前执行模式。例如,在管理程序执行模式EL2下执行的WFE指令可简单地导致处理器等待直到发信号通知事件,而不是执行模式的任何切换。
如果执行有条件退让给管理程序指令的当前模式是比管理程序执行模式EL2权限更低的较低权限执行模式(例如,指令在EL0或EL1处执行),则在步骤206处,处理电路确定是否满足陷入到管理程序模式所需的任何陷阱条件。下面将参考图9更详细地讨论这些内容。如果不满足任何陷阱条件,则在步骤204处,处理电路再次保持为当前执行模式。
如果在步骤206处满足所需陷阱条件,则在步骤208处,处理电路切换为管理程序执行模式EL2,使得管理程序可介入并确定重新调度不同虚拟处理器是否可为有用的,使得在等待不再满足先前虚拟处理器所需的陷阱条件的时间,可使得该虚拟处理器取得进展。在步骤210处,在切换为管理程序模式时,将调度提示信息存储到在管理程序模式下指令可访问的至少一个存储元件。下面在图10中更详细地示出调度提示信息的存储。通过使得架构级的管理程序可访问调度提示信息,使得硬件自动将该提示信息存储到管理程序可访问的某些寄存器或其他存储元件,而不需要显式存储器访问指令来使用存储器中的共享数据结构封送一些消息以在虚拟机和管理程序之间进行通信,这由于上述原因改善了性能和可移植性。
图9更详细地示出了用于确定是否满足陷阱条件的步骤206。在步骤220处,处理电路确定陷阱控制指示符42(其管理有条件退让给管理程序指令(WFE)是否陷入)是否被设置为第一值或第二值。在该示例中,当管理程序配置寄存器40的对应位被设置为0时,陷阱控制指示符42具有第一值,并且当该位被设置为1时,该陷阱控制指示符具有第二值,但是另一个示例可相反。如果陷阱控制指示符具有第一值,则在步骤222处,无论事件寄存器44中是否已发信号通知任何事件,都确定不满足陷阱条件。因此,当陷阱控制指示符被设置为第一值时,WFE指令将不会陷入到管理程序。例如,如果管理程序当前仅管理一个虚拟处理器,则允许该管理程序禁用跟踪可能是有用的。
如果陷阱控制指示符具有第二值,则在步骤224处,处理电路确定事件寄存器44是否已被设置为指示已发信号通知事件。事件可以是上述类别事件中的任一个事件,具体地,如果专属监视器22已检测到对跟踪地址的访问,则可能已发信号通知事件。如果已发信号通知事件,则该方法再次前进至步骤222,在该步骤处,陷阱条件被确定未得到满足。另一方面,如果尚未发信号通知事件,则该方法从步骤224前进至步骤226,在步骤226处,所需陷阱条件被确定得到满足,因此在这种情况下,在图8的步骤208处,WFE指令或其他类型的有条件退让给管理程序指令将触发切换为管理程序模式。
图10更详细地示出了图8中的步骤210。在步骤240处,处理电路将由有条件退让给管理程序指令指定的寄存器说明符和该对寄存器Xa、Xb的寄存器宽度写入管理程序可访问的系统寄存器中的一个系统寄存器。具体地,将上述内容写入对应于EL2的异常状态寄存器36可能是有用的。在步骤242处,处理电路16检测专属监视器当前是否清除(不跟踪任何地址),并且如果是,则在步骤244处,将无效指示设置在故障地址寄存器34内。如果当前设置了专属监视器,则在步骤246处,检测在MMU 20的TLB 21内与在专属监视器22中注册的跟踪的物理地址对应的中间物理地址是否可用于MMU,并且如果不可以,则在步骤244处,则再次将无效指示设置在故障地址寄存器34中。
如果当前设置了专属监视器并且针对跟踪的物理地址的中间物理地址当前可用于TLB 21,则在步骤248处,将与跟踪的物理地址对应的中间物理地址写入故障地址寄存器34并且设置有效指示。在一些情况下,有效指示可仅仅是指故障地址寄存器中的地址是不能对应于实际地址的多个无效地址值中的一个无效地址值。另选地,单独的有效位可限定故障地址寄存器内的地址。类似地,在步骤244处,无效指示可以是不能对应于实际地址的禁止地址值,或者可以由单独的无效指示来指示。虽然图10示出了将相同无效指示用于专属监视器当前清除的情况和中间物理地址当前不可用的情况两者的示例,但在其他示例中,两个单独的无效指示符可以区分这两种情况。
在MMU 20的TLB 21被实现为具有单独的阶段1TLB结构和阶段2TLB结构的分体式TLB的系统中,相对更可能的是,在执行WFE指令时,对应于跟踪的物理地址的IPA将在TLB21中可用,因为如果WFE指令用于上文所示类型的循环中,则此时该WFE指令将在加载专属指令之后不久遵循,该加载专属指令将导致针对该中间物理地址的地址映射被加载到TLB中(如果该地址尚未在TLB中)。
然而,在TLB 21被实现为组合TLB的示例中,该组合TLB将来自阶段1页面表50和阶段2页面表52的条目组合成单个统一条目,该单个统一条目将地址直接从虚拟地址映射到物理地址,然后,如果加载专属指令在已分配的组合TLB条目中命中,则该加载专属指令通常将不触发阶段1页面表50的以便获得中间物理地址的地址查找。然而,如果以这种方式处理了加载专属指令,则这可能使得不太可能的是,在使用后续WFE指令时,在步骤246处,对应于跟踪地址的IPA将可用。
因此,在使用组合TLB的微架构中,即使不需要服务于加载专属指令,触发阶段1表走步也可能是有用的。因此,在图5的方法中,当遇到加载专属指令时,当目标地址尚未具有高速缓存在组合TLB 21中的地址映射时,则触发页面表走步以从阶段1页面表50获得中间物理地址,并且随后从阶段2页面表52获得物理地址,以及将组合虚拟地址到物理地址映射记录在组合TLB 21中。同时,MMU 21还可将中间物理地址记录在MMU 20的某个存储区域内,以防后续WFE指令需要将其用于调度提示信息。另外,在加载专属指令针对已分配TLB条目命中并且中间物理地址在MMU 21内尚未可用的情况下,即使可基于已提供在组合TLB内的物理地址来服务加载专属指令,然而,该加载专属指令也可触发阶段1页面表50的阶段1页面表走步以获得对应的中间物理地址,然后即使由于物理地址已被高速缓存,处理加载专属指令不直接需要该对应的中间物理地址,该对应的中间物理地址也可被记录以供后续有条件退让给管理程序指令使用。通过响应于加载专属指令而触发中间物理地址查找,这可使得更有可能的是,在遇到WFE指令时,在图10的步骤246处,中间物理地址将是可用的。因此,更有可能的是,可将有用的调度提示信息提供给管理程序,这可有助于在管理程序做出调度决策时提高调度虚拟处理器的效率。
应当理解,这种对额外IPA查找的触发不是架构的必要部分,因为这取决于是否需要这一点的微架构具体实施。例如,在具有专用于阶段1地址转换和阶段2地址转换的分体式TLB的系统中可能不需要额外的IPA查找。另外,即使在使用组合TLB的系统中,一些微架构设计者也可选择通过避免触发不必要的IPA访问(以较少有用的管理程序调度提示信息为代价)来降低实现加载专属指令的复杂性并节省功率。然而,通过触发这种IPA查找,这可改善希望这样做的那些微架构中管理程序的性能。
图11示出了可使用的模拟器具体实施。虽然先前所述的实施方案在用于操作支持所涉及的技术的特定处理硬件的装置和方法方面实现了本发明,但也可以提供根据本文所述的实施方案的指令执行环境,该指令执行环境是通过使用计算机程序来实现的。此类计算机程序通常被称为模拟器,在一定程度上是因为此类计算机程序提供硬件架构的基于软件的具体实施。模拟器计算机程序的种类包括仿真器、虚拟机、模型和二进制转换器,其包括动态二进制转换器。通常,模拟器具体实施可在支持模拟器程序310的主机处理器330上运行,该主机处理器任选地运行主机操作系统320。在一些布置中,在硬件和所提供的指令执行环境和/或在同一主机处理器上提供的多个不同指令执行环境之间可存在多个模拟层。在历史上,需要强大的处理器来提供以合理速度执行的模拟器具体实施,但这种方法在某些情况下可能是合理的,诸如当出于兼容性或重复使用原因而希望运行另一个处理器本地的代码时。例如,模拟器具体实施可向指令执行环境提供主机处理器硬件不支持的附加功能,或者提供通常与不同硬件架构相关联的指令执行环境。模拟概述在以下文献中给出:“Some Efficient Architecture Simulation Techniques”,Robert Bedichek,Winter1990USENIX Conference,第53-63页。
就先前已参考特定硬件构造或特征描述了实施方案而言,在模拟的实施方案中,等效功能可由合适的软件构造或特征提供。例如,特定电路可在模拟的实施方案中被实现为计算机程序逻辑。类似地,存储器硬件诸如寄存器或高速缓存存储器可在模拟的实施方案中被实现为软件数据结构。在先前所述的实施方案中参考的硬件元件中的一个或多个硬件元件存在于主机硬件(例如,主机处理器330)上的布置中,在合适的情况下,一些模拟的实施方案可利用主机硬件。
模拟器程序310可存储在计算机可读存储介质(其可为非暂态介质)上,并且向目标代码300(其可包括应用程序、操作系统和管理程序)提供程序接口(指令执行环境),该程序接口与模拟器程序310正在建模的硬件架构的应用程序接口相同。因此,可使用模拟器程序310从指令执行环境内执行目标代码300的程序指令(包括上述有条件退让给管理程序指令),使得实际上不具有上述装置2的硬件特征的主机计算机330可仿真这些特征。模拟器程序310可具有在功能上对应于上述指令解码器14、专属监视器22和MMU 20的指令解码程序逻辑312、专属监视器程序逻辑316和地址转换程序逻辑318,以及用于管理用于仿真装置2的架构寄存器18的(存储在主机硬件330的存储器中的)寄存器仿真数据结构314的程序逻辑。
在本申请中,字词“被配置为...”用于意指装置的元件具有能够执行所限定的操作的配置。在该上下文中,“配置”意指硬件或软件的互连的布置或方式。例如,该装置可具有提供所限定的操作的专用硬件,或者可对处理器或其他处理设备进行编程以执行该功能。“被配置为”并不意味着装置元件需要以任何方式改变以便提供所限定的操作。
虽然本文已结合附图详细描述了本发明的示例性实施方案,但应当理解,本发明并不限于那些精确的实施方案,并且在不脱离所附权利要求书所限定的本发明的范围和实质的前提下,本领域的技术人员可在其中实现各种变化和修改。

Claims (17)

1.一种装置,所述装置包括:
处理电路,所述处理电路用于执行数据处理;和
指令解码器,所述指令解码器用于解码指令以控制所述处理电路来执行所述数据处理;其中:
所述处理电路具有用于执行管理程序的管理程序执行模式,以及比所述管理程序执行模式权限更低的至少一个较低权限执行模式,所述管理程序用于管理在所述处理电路上执行的一个或多个虚拟处理器;
响应于在所述至少一个较低权限执行模式下执行的有条件退让给管理程序指令,所述指令解码器被配置为控制所述处理电路来:
确定是否满足至少一个陷阱条件,以及
当确定满足所述至少一个陷阱条件时:
将所述处理电路切换为所述管理程序执行模式;以及
将至少一项调度提示信息存储在所述管理程序执行模式下执行的指令可访问的至少一个存储元件中,所述至少一项调度提示信息用于估计是否仍然满足所述至少一个陷阱条件。
2.根据权利要求1所述的装置,其中所述调度提示信息包括对由所述有条件退让给管理程序指令指定的至少一个寄存器说明符的指示。
3.根据权利要求2所述的装置,其中所述调度提示信息包括对由所述至少一个寄存器说明符指定的至少一个寄存器的寄存器宽度的指示。
4.根据权利要求2和3中任一项所述的装置,其中所述调度提示信息包括对由所述有条件退让给管理程序指令指定的多个寄存器说明符的指示。
5.根据任一前述权利要求所述的装置,其中所述有条件退让给管理程序指令包括等待事件指令,所述等待事件指令用于指示所述处理电路等待直到一个类别的一个或多个事件中的一个事件被指示为已发生;并且
所述处理电路被配置为当所述类别的一个或多个事件中的一个事件被指示为已发生时,确定不满足所述至少一个陷阱条件。
6.根据权利要求5所述的装置,所述类别的一个或多个事件包括对由专属监视器跟踪的跟踪地址的存储器访问的检测。
7.根据权利要求6所述的装置,其中所述至少一项调度提示信息包括提示地址,所述提示地址对应于在执行所述等待事件指令时由所述专属监视器跟踪的所述跟踪地址。
8.根据权利要求7所述的装置,包括地址转换电路,所述地址转换电路用于基于指示虚拟地址和中间地址之间的映射的第一地址转换数据以及指示所述中间地址和物理地址之间的映射的第二地址转换数据,将由所述处理电路执行的指令指定的所述虚拟地址转换为标识与所述虚拟地址对应的存储器位置的所述物理地址;
其中所述跟踪地址是物理地址,并且所述提示地址是与所述跟踪地址对应的所述中间地址。
9.根据权利要求8所述的装置,其中所述调度提示信息包括有效指示,所述有效指示根据在切换为所述管理程序执行模式时与所述跟踪地址对应的所述中间地址是否可用来设置。
10.根据权利要求6至9中任一项所述的装置,其中响应于指定目标地址的加载专属指令,所述指令解码器被配置为控制所述处理电路来触发所述专属监视器将所述目标地址设置为所述跟踪地址。
11.根据权利要求10所述的装置,包括地址转换电路,所述地址转换电路用于基于指示虚拟地址和中间地址之间的映射的第一地址转换数据以及指示所述中间地址和物理地址之间的映射的第二地址转换数据,将由所述处理电路执行的指令指定的所述虚拟地址转换为标识与所述虚拟地址对应的存储器位置的所述物理地址;
所述地址转换电路包括组合的转换高速缓存存储器,所述组合的转换高速缓存存储器包括多个高速缓存条目,所述多个高速缓存条目各自用于存储虚拟到物理地址映射;并且
响应于所述加载专属指令,所述地址转换电路被配置为:即使当所述组合的转换高速缓存存储器已经包括存储与所述加载专属指令的所述目标地址对应的所述虚拟到物理地址映射的高速缓存条目时,也触发所述第一地址转换数据的查找以获得与所述目标地址对应的所述中间地址。
12.根据权利要求6至11中任一项所述的装置,其中所述至少一项调度提示信息包括有效指示,所述有效指示根据在执行所述等待事件指令时所述专属监视器是否正在跟踪作为所述跟踪地址的任何地址来设置。
13.根据任一前述权利要求所述的装置,包括管理程序控制寄存器,所述管理程序控制寄存器用于存储陷阱控制指示符,所述陷阱控制指示符指示所述有条件退让给管理程序指令是否应陷入到所述管理程序;其中:
响应于所述有条件退让给管理程序指令,所述处理电路被配置为根据所述陷阱控制指示符来确定是否满足所述至少一个陷阱条件。
14.根据权利要求5至12中任一项所述的装置,包括管理程序控制寄存器,所述管理程序控制寄存器用于存储陷阱控制指示符,所述陷阱控制指示符具有第一值和第二值中的一者;
当所述陷阱控制指示符具有所述第一值时,所述处理电路被配置为确定不满足所述至少一个陷阱条件,而不管所述类别的一个或多个事件中的一个事件是否被指示为已发生;并且
当所述陷阱控制指示符具有所述第二值时,所述处理电路被配置为当所述类别的一个或多个事件中的任一个事件均未被指示为已发生时,确定满足所述至少一个陷阱条件。
15.一种用于装置的数据处理方法,所述装置包括:处理电路,所述处理电路具有用于执行管理程序的管理程序执行模式,以及比所述管理程序执行模式权限更低的至少一个较低权限执行模式,所述管理程序用于管理在所述处理电路上执行的一个或多个虚拟处理器;所述方法包括:
解码在所述至少一个较低权限执行模式下执行的有条件退让给管理程序指令;以及
响应于解码所述有条件退让给管理程序指令:
确定是否满足至少一个陷阱条件,以及
当确定满足所述至少一个陷阱条件时:
将所述处理电路切换为所述管理程序执行模式;以及
将至少一项调度提示信息存储在所述管理程序执行模式下执行的指令可访问的至少一个存储元件中,所述至少一项调度提示信息用于估计是否仍然满足所述至少一个陷阱条件。
16.一种计算机程序,所述计算机程序用于控制主机数据处理装置来提供用于执行指令的指令执行环境;所述计算机程序包括:
指令解码程序逻辑,所述指令解码程序逻辑用于解码在所述指令执行环境中执行的目标代码的指令,以控制所述主机数据处理装置来执行与所述目标代码的所述指令对应的数据处理,所述指令执行环境具有用于执行管理程序的管理程序执行模式,以及比所述管理程序执行模式权限更低的至少一个较低权限执行模式,所述管理程序用于管理在所述指令执行环境中执行的一个或多个虚拟处理器;其中:
响应于在所述至少一个较低权限执行模式下执行的所述目标代码的有条件退让给管理程序指令,所述指令解码程序逻辑被配置为控制所述主机数据处理装置来:
确定是否满足至少一个陷阱条件,以及
当确定满足所述至少一个陷阱条件时:
将所述指令执行环境切换为所述管理程序执行模式;以及
将至少一项调度提示信息存储在所述管理程序执行模式下执行的所述目标代码的指令可访问的至少一个数据结构中,所述至少一项调度提示信息用于估计是否仍然满足所述至少一个陷阱条件。
17.一种存储介质,所述存储介质存储根据权利要求16所述的计算机程序。
CN202080016682.9A 2019-02-28 2020-01-07 有条件退让给管理程序指令 Pending CN113474754A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1902709.3A GB2581821B (en) 2019-02-28 2019-02-28 Conditional yield to hypervisor instruction
GB1902709.3 2019-02-28
PCT/GB2020/050025 WO2020174209A1 (en) 2019-02-28 2020-01-07 Conditional yield to hypervisor instruction

Publications (1)

Publication Number Publication Date
CN113474754A true CN113474754A (zh) 2021-10-01

Family

ID=66377396

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202080016682.9A Pending CN113474754A (zh) 2019-02-28 2020-01-07 有条件退让给管理程序指令

Country Status (7)

Country Link
US (1) US11842195B2 (zh)
EP (1) EP3931686A1 (zh)
JP (1) JP2022522740A (zh)
KR (1) KR20210130197A (zh)
CN (1) CN113474754A (zh)
GB (1) GB2581821B (zh)
WO (1) WO2020174209A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114020330A (zh) * 2021-11-04 2022-02-08 苏州睿芯集成电路科技有限公司 Risc-v处理器验证中模式切换的方法、电子设备以及存储介质

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5463778A (en) * 1989-11-16 1995-10-31 Texas Instruments Incorporated User controlled trap handler
US7610473B2 (en) * 2003-08-28 2009-10-27 Mips Technologies, Inc. Apparatus, method, and instruction for initiation of concurrent instruction streams in a multithreading microprocessor
US7784060B2 (en) * 2003-11-06 2010-08-24 Intel Corporation Efficient virtual machine communication via virtual machine queues
US7584344B2 (en) * 2006-05-02 2009-09-01 Freescale Semiconductor, Inc. Instruction for conditionally yielding to a ready thread based on priority criteria
GB2487575B (en) * 2011-01-28 2017-04-12 Advanced Risc Mach Ltd Controlling generation of debug exceptions
US9594703B2 (en) * 2012-03-29 2017-03-14 Intel Corporation Architecture and method for managing interrupts in a virtualized environment
WO2014081608A1 (en) 2012-11-20 2014-05-30 Unisys Corporation Optimized execution of virtualized software using securely partitioned virtualization system with dedicated resources
US9697031B2 (en) * 2013-10-31 2017-07-04 Huawei Technologies Co., Ltd. Method for implementing inter-virtual processor interrupt by writing register data in a single write operation to a virtual register
US9606825B2 (en) * 2014-05-20 2017-03-28 Red Hat Israel, Ltd Memory monitor emulation for virtual machines
US10067768B2 (en) * 2014-07-18 2018-09-04 Nvidia Corporation Execution of divergent threads using a convergence barrier
US9864708B2 (en) * 2014-12-16 2018-01-09 Vmware, Inc. Safely discovering secure monitors and hypervisor implementations in systems operable at multiple hierarchical privilege levels
US10963280B2 (en) * 2016-02-03 2021-03-30 Advanced Micro Devices, Inc. Hypervisor post-write notification of control and debug register updates
US10019282B1 (en) * 2016-07-21 2018-07-10 Parallels International Gmbh Virtual machine exit processing accelerator
US10243746B2 (en) * 2017-02-27 2019-03-26 Red Hat, Inc. Systems and methods for providing I/O state protections in a virtualized environment
US10592281B1 (en) * 2017-09-28 2020-03-17 Amazon Technologies, Inc. Wait optimizer for recording an order of first entry into a wait mode by a virtual central processing unit

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114020330A (zh) * 2021-11-04 2022-02-08 苏州睿芯集成电路科技有限公司 Risc-v处理器验证中模式切换的方法、电子设备以及存储介质
CN114020330B (zh) * 2021-11-04 2023-11-03 苏州睿芯集成电路科技有限公司 Risc-v处理器验证中模式切换的方法、电子设备以及存储介质

Also Published As

Publication number Publication date
WO2020174209A1 (en) 2020-09-03
JP2022522740A (ja) 2022-04-20
KR20210130197A (ko) 2021-10-29
US11842195B2 (en) 2023-12-12
GB201902709D0 (en) 2019-04-17
GB2581821B (en) 2021-06-30
GB2581821A (en) 2020-09-02
US20220121445A1 (en) 2022-04-21
EP3931686A1 (en) 2022-01-05

Similar Documents

Publication Publication Date Title
US10318407B2 (en) Allocating a debug instruction set based on the current operating state in a multi-instruction-set data processing apparatus
US8429669B2 (en) Virtual machine switching control by prefetching information out of and updating a set of processor control information based on a bitmap having update status
US7827390B2 (en) Microprocessor with private microcode RAM
KR101673435B1 (ko) 공동 설계 프로세서에서 격리된 실행 환경의 생성
JP6138142B2 (ja) 被管理ランタイムのためのハードウェア・ベース・ランタイム計装機構
US20040117539A1 (en) Methods and systems to control virtual machines
US20060036824A1 (en) Managing the updating of storage keys
US20080127182A1 (en) Managing Memory Pages During Virtual Machine Migration
JP6195572B2 (ja) ランタイム計装制御の状況の決定のためのコンピュータ・プログラム、方法、およびシステム
EP2955634B1 (en) Paravirtualization-based interface for memory management in virtual machines
CN110574009B (zh) 用于管理对能力的使用的设备和方法
US11119778B2 (en) Apparatus and method for controlling execution of instructions
KR101640769B1 (ko) 가상화 시스템 및 그것의 명령어 실행 방법
US11842195B2 (en) Conditional yield to hypervisor instruction
Suzuki et al. Analysis of the ARM architecture’s ability to support a virtual machine monitor through a simple implementation
Faravelon Acceleration of memory accesses in dynamic binary translation
TW202403562A (zh) 用於記憶體位址空間之頁面的「讀值只有x」性質
WO2019229412A1 (en) An apparatus and method for triggering action

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