CN116795493B - 一种处理指令的方法、处理系统和计算机可读存储介质 - Google Patents
一种处理指令的方法、处理系统和计算机可读存储介质 Download PDFInfo
- Publication number
- CN116795493B CN116795493B CN202311054501.3A CN202311054501A CN116795493B CN 116795493 B CN116795493 B CN 116795493B CN 202311054501 A CN202311054501 A CN 202311054501A CN 116795493 B CN116795493 B CN 116795493B
- Authority
- CN
- China
- Prior art keywords
- target
- registers
- instruction
- target instruction
- register
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000012545 processing Methods 0.000 title claims abstract description 69
- 238000000034 method Methods 0.000 title claims abstract description 65
- 230000008569 process Effects 0.000 claims abstract description 30
- 230000002159 abnormal effect Effects 0.000 claims abstract description 10
- 230000004044 response Effects 0.000 claims abstract description 8
- 238000004088 simulation Methods 0.000 claims description 7
- 230000002093 peripheral effect Effects 0.000 description 29
- 230000015654 memory Effects 0.000 description 27
- 238000004590 computer program Methods 0.000 description 12
- 230000006870 function Effects 0.000 description 8
- 230000001960 triggered effect Effects 0.000 description 7
- 230000007704 transition Effects 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 239000000306 component Substances 0.000 description 2
- 239000008358 core component Substances 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000002955 isolation Methods 0.000 description 2
- 239000000725 suspension Substances 0.000 description 2
- 230000002123 temporal effect Effects 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000006378 damage Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 208000011580 syndromic disease Diseases 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本申请提供了一种处理指令的方法、处理系统和计算机可读存储介质,该方法包括:接收虚拟机生成的目标指令,目标指令访问的中间物理地址位于虚拟机的MIMO地址空间内,且目标指令用于操作多个目标寄存器;响应于目标指令,触发异常处理过程;将中间物理地址存储至第一寄存器;将目标指令的异常信息存储至多个第二寄存器,使得多个第二寄存器分别存储多个目标寄存器的信息;根据第一寄存器中存储的中间物理地址,以及多个第二寄存器中存储的异常信息,对目标指令的执行进行模拟,得到目标指令的执行结果并向虚拟机发送。本申请将目标指令的多个目标寄存器信息分别存储在多个第二寄存器中,有助于避免未定义指令错误。
Description
技术领域
本申请涉及信息技术领域,具体涉及一种处理指令的方法、处理系统和计算机可读存储介质。
背景技术
在虚拟化环境中,虚拟机(virtual machine,VM)通过目标指令对虚拟外设的访问是由虚拟机监视器(virtual machine monitors,VMM)软件来进行模拟的。然而,在一些处理器架构体系(例如第8代高级精简指令集计算机(advanced reduced instruction setcomputing machinesversion 8,ARMv8))中,当VM使用操作多个目标寄存器的目标指令访问虚拟外设时,可能会发生未定义指令错误,从而导致目标指令无法被执行。
发明内容
本申请实施例致力于提供一种处理指令的方法、处理系统和计算机可读存储介质,下文从以下几个方面进行介绍。
第一方面,提供了一种处理指令的方法,包括:接收虚拟机生成的目标指令,所述目标指令访问的中间物理地址位于所述虚拟机的MIMO地址空间内,且所述目标指令用于操作多个目标寄存器;响应于所述目标指令,触发异常处理过程;在所述异常处理过程中,将所述中间物理地址存储至第一寄存器;在所述异常处理过程中,将所述目标指令的异常信息存储至多个第二寄存器,使得所述多个第二寄存器分别存储所述多个目标寄存器的信息;根据所述第一寄存器中存储的所述中间物理地址,以及所述多个第二寄存器中存储的所述异常信息,对所述目标指令的执行进行模拟,得到所述目标指令的执行结果;向所述虚拟机发送所述目标指令的执行结果。
第二方面,提供了一种处理系统,包括:接收模块,用于接收虚拟机生成的目标指令,所述目标指令访问的中间物理地址位于所述虚拟机的MIMO地址空间内,且所述目标指令用于操作多个目标寄存器;触发模块,用于响应于所述目标指令,触发异常处理过程;第一存储模块,用于在所述异常处理过程中,将所述中间物理地址存储至第一寄存器;第二存储模块,用于在所述异常处理过程中,将所述目标指令的异常信息存储至多个第二寄存器,使得所述多个第二寄存器分别存储所述多个目标寄存器的信息;模拟模块,用于根据所述第一寄存器中存储的所述中间物理地址,以及所述多个第二寄存器中存储的所述异常信息,对所述目标指令的执行进行模拟,得到所述目标指令的执行结果;发送模块,用于向所述虚拟机发送所述目标指令的执行结果。
第三方面,提供了一种处理系统,包括:处理器;虚拟机,运行在所述处理器上;虚拟机监视器,运行在所述处理器上,用于执行以下操作:接收所述虚拟机生成的目标指令,所述目标指令访问的中间物理地址位于所述虚拟机的MIMO地址空间内,且所述目标指令用于操作多个目标寄存器;响应于所述目标指令,触发异常处理过程;在所述异常处理过程中,将所述中间物理地址存储至第一寄存器;在所述异常处理过程中,将所述目标指令的异常信息存储至多个第二寄存器,使得所述多个第二寄存器分别存储所述多个目标寄存器的信息;根据所述第一寄存器中存储的所述中间物理地址,以及所述多个第二寄存器中存储的所述异常信息,对所述目标指令的执行进行模拟,得到所述目标指令的执行结果;向所述虚拟机发送所述目标指令的执行结果。
第四方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有程序代码,当所述计算机程序代码在计算机上运行时,使得计算机执行上述第一方面中的方法。
第五方面,提供了一种计算机程序产品,所述计算机程序产品包括计算机程序/指令,当所述计算机程序/指令处理器被执行时实现如第一方面中任一项所述的方法。
在一些实现方式中,上述计算机程序产品包括可以包括计算机程序代码,当计算机程序代码在计算机上运行时,使得计算机执行上述第一方面所示的处理指令的方法。
针对操作多个目标寄存器的目标指令而言,本申请在对虚拟机的目标指令触发的异常进行处理的过程中,将目标指令的多个目标寄存器信息分别存储在多个第二寄存器中,并作为依据之一来模拟目标指令的执行。有助于避免发生未定义指令错误,从而有助于确保目标指令被执行。
附图说明
图1所示为芯片处理器的结构和工作原理示意图。
图2所示为ARMv8架构中虚拟机的运行过程示意性流程图。
图3所示为Hypervisor控制虚拟机访问内存的示意性流程图。
图4所示为Hypervisor控制虚拟机访问虚拟外设的示意性流程图。
图5所示为虚拟机访问虚拟外设的示意性流程图。
图6所示为本申请提供的处理指令的方法的示意性流程图。
图7所示为本申请提供的处理指令的方法具体实施过程的示意性流程图。
图8所示为本申请提供的处理系统的结构示意图。
图9所示为本申请提供的另一个处理系统的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。
芯片是现代电子设备的核心组成部分,而处理器则是芯片中的核心组件,用于执行和处理指令,例如计算机的中央处理单元(central processing unit,CPU)。如图1所示,处理器100一般可以包括控制单元110、算术逻辑单元120和存储单元130三个部分,这三个部分由总线连接起来。
控制单元110是处理器100的指挥控制中心,能够控制指令的解码和执行、数据的读取和存储等。控制单元110包括指令计数器111、指令寄存器112、指令编码器(图中未示出)以及操作控制器(图中未示出)。指令计数器111用于存储下一条要执行的指令的地址,指令寄存器112用于存储等待执行的指令,指令编码器用于对指令寄存器112中的指令进行解码。操作控制器可以根据指令编码器解码后的指令,通过总线向处理器100中的其他单元发出控制信号,控制其他单元的操作。
算术逻辑单元120也称运算单元,是处理器100的核心,可以执行算术运算和/或逻辑运算。算术运算包括加减乘除及其附加运算等基本运算,逻辑运算包括条件运算、位运算等。算术逻辑单元120基于控制单元110的命令而进行运算,即算术逻辑单元120所进行的全部操作都是由控制单元110发出的控制信号来指挥的。
存储单元130是处理器100暂时存放数据的地方,里面保存着等待处理的数据和/或已经处理过的数据。存储单元130包括缓存和寄存器组,缓存是指高速缓冲存储器,用于存储处理器100经常使用的数据。寄存器可以用来保存指令执行过程中的临时数据、中间和/或最终操作结果。寄存器可以分为专用寄存器和通用寄存器,专用寄存器用于存储特定类型的数据如堆栈指针等,通用寄存器可以用于存储任意类型的数据如逻辑运算的结果等。与算术逻辑单元120相同,存储单元130也根据控制单元110的命令进行操作,对数据进行存储。
处理器100的工作流程可以包括提取指令、指令译码、执行指令、存储结果四个阶段。
在第一阶段,处理器100从电子设备的内存中提取指令,如图1所示可以根据控制单元110中指令计数器111中的指令地址140来确定指令的位置,提取到的指令150可以存储在指令寄存器112中。
在第二阶段,指令编码器对指令寄存器112中的指令进行译码,可以根据CPU的指令集架构(instruction set architecture,ISA)定义对指令进行译码。解码后的指令通常指示要进行何种操作,可以提供给操作控制器以发送给其他单元。
在第三阶段,处理器100中的其他单元如算术逻辑单元120和/或存储单元130在接收到操作控制器的控制信号160以后,开始执行指令150所定义的操作。比如指令150可能会要求从电子设备的内存中提取一个数据以供后续使用,此时存储单元130可以根据指令中的操作数地址170从内存中的数据段中提取数据180并存储下来。又比如指令可能会要求进行一个加法运算,此时算术逻辑单元120将会从存储单元130中提取要进行加法运算的数据180进行运算。
在第四阶段,上一指令执行完毕,存储执行的结果,比如算术逻辑单元120可以将运算后的结果数据180存储到存储单元130。然后修改指令计数器111,决定下一条指令的地址。
以上即为处理器处理一条指令的过程,电子设备运行时处理器的工作过程就是由一条条指令的处理组成,不断地在重复上述过程。所以对于电子设备而言,处理器的性能尤为重要。处理器的性能取决于处理器架构设计,处理器架构是处理器指令集的设计和实现方式,决定了处理器的性能、功耗、兼容性等特性。不同的处理器架构有着不同的优缺点,适用于不同的领域,常见的处理器架构包括英特尔80x86(intel 80x86,x86)架构、高级精简指令集计算机(advanced reduced instruction set computing machines,ARM)架构等。
其中ARMv8架构是一种基于ARM架构的64位处理器指令集架构,它旨在提供更高的性能和更低的功耗。相比于之前的32位ARM架构,ARMv8架构可以支持更大的内存地址空间和更高的计算性能,同时还支持虚拟化和安全扩展等功能,因此被广泛应用于移动设备、服务器、物联网设备等领域。比如在移动设备领域中,大多数的智能手机、平板电脑、笔记本电脑等移动设备都采用了ARMv8架构的处理器。又比如在服务器领域,云计算和大数据处理方面对ARMv8架构的应用尤其多。而在物联网设备领域,常见的智能家居如智能音箱、智能门锁以及常见自动驾驶汽车等也都采用了ARMv8架构的处理器。
ARMv8架构支持两种执行模式:64位模式和32位模式。64位模式可以运行64位应用程序,而32位模式与以前的ARM架构版本兼容,可以运行32位应用程序。因此,ARMv8架构的处理器可以同时运行32位和64位应用程序,提供更加强大的计算能力和更广泛的应用场景。
与之前的版本相比,ARMv8架构还提供了更高效的寄存器。ARMv8提供了31个64位的通用寄存器,始终可以访问,并且可以在所有异常级别访问。在64位执行模式下,每个寄存器都是64位宽度。宽度增加有助于减少大部分应用程序中的寄存器压力,提供了性能上的加速。
ARMv8架构还使用更加精简的A64指令集。指令集是处理器能够识别的有意义的机器码段的集合,指令集的设计是处理器架构中最重要的一个部分。A64指令集支持64位寄存器、指令和内存地址。A64指令集包括数据处理指令、加载/存储指令等。其中数据处理指令主要用于处理数据,包括用于算术运算的算术运算指令如加法指令(addition,ADD)、带进位加法指令(add with carry,ADC)等,以及用于逻辑运算的逻辑运算指令如与指令(logicaland,AND)、异或指令(exclusive or,EOR)等。加载/存储指令也称内存指令,用于访问内存和/或输入/输出(input/output,I/O)等设备的数据,并将数据加载到寄存器中。加载/存储指令包括一次只能加载和/或存储单字节数据的加载寄存器(load register,LDR)指令和存储寄存器(store register,STR)指令等,还包括可同时加载和/或存储双字节数据的加载双字节(load pair,LDP)指令和存储双字节(store pair ,STP)指令。
指令的结构通常包括操作码字段和地址码字段。操作码字段用于指示该指令要执行什么操作和具有何种功能,是识别指令、了解指令的关键信息。地址码字段给出被操作的信息,如指令访问的地址,保存操作数据的目标寄存器(又称目的寄存器)等。例如指令STPX0, X1, [X2]的操作码是STP,表示存储两个64位数据,该指令的地址码是X0, X1, [X2],表示从X0和X1寄存器中读取数据,并将它们存储到地址X2处。所以指令STP X0, X1, [X2]的意思是从X0和X1寄存器中读取两个64位数据,并将它们存储到地址X2处。
ARMv8架构还可以支持虚拟化技术,它提供了基于硬件的虚拟化解决方案,为单个物理系统上运行的多个虚拟机之间提供隔离。ARMv8虚拟化架构包括虚拟化扩展(virtualization extension,VE)、虚拟化中心(virtualization host,VH)、虚拟机监视器VMM、虚拟设备模型(virtual device model,VDM)等关键组成部分。其中VE是指ARMv8架构提供了一组新的指令和寄存器,用于支持虚拟化。VH运行在特权模式下,用于管理虚拟机的创建、销毁和启动等操作。VMM也被称为Hypervisor,它是一个运行在虚拟化中心上的软件,它负责管理所有虚拟机,并提供虚拟化服务。VDM负责模拟硬件设备,使得虚拟机可以访问和使用各种硬件资源。
ARMv8的虚拟机基于硬件虚拟化技术,它的运行原理是通过虚拟化层将物理资源(如处理器、内存、I/O等)划分为多个虚拟资源,并为每个虚拟资源分配一定的物理资源,从而实现多个虚拟机之间的隔离和共享。ARMv8的虚拟机运行过程如图2所示,包括步骤S210-S230。
参见步骤S210,在ARMv8处理器上运行虚拟化层Hypervisor,该层负责拦截虚拟机的指令和数据,并将其转发到相应的虚拟机或物理设备上。
在步骤S220,创建一个或多个虚拟机,每个虚拟机被分配一定的物理资源和网络地址空间,并由Hypervisor管理。物理资源可以用来支持虚拟机的运行,比如CPU核心、内存、外围设备、磁盘等。网络地址空间可以用于与其他虚拟机和网络进行通信,每个虚拟机都可以拥有自己的互联网协议(internet protocol,IP)地址。
继续如步骤S230所示,虚拟机访问物理资源。当虚拟机中的应用程序需要访问物理资源时,Hypervisor会将其转发到相应的物理设备上,并将返回的数据传递回虚拟机中,从而实现虚拟机对物理资源的访问。
通过以上步骤,ARMv8的虚拟机可以实现隔离的虚拟化环境,在其中运行不同的操作系统和应用程序,从而满足不同用户的需求。
在ARMv8的VM运行的过程中,由Hypervisor控制其对物理资源的访问,一方面可以控制VM对内存资源的访问。Hypervisor可以通过阶段2(stage2 )转换方案来管理虚拟机中的应用(application)对双倍数据率(double data rate,DDR)内存、非易失性电子存储器(flash)等内存的访问,具体如图3所示的。阶段2允许Hypervisor控制VM能够访问的内存映射资源,以及这些资源对应VM地址空间的哪些位置。也就是说通过阶段2,Hypervisor可以确保VM只能访问分配给它的资源。
如图3所示,虚拟机对物理资源的访问被分为了阶段1(stage1)和阶段2两个阶段。操作系统控制的页表转换称之为阶段1转换,负责将虚拟机视角的虚拟地址(virtualaddress,VA)转换为虚拟机视角的物理地址。虚拟机视角的物理地址在ARMv8中有特定的词描述,叫中间物理地址(intermediate physical address, IPA)。即在阶段1转换阶段,VA ->IPA。而阶段2页表由Hypervisor控制,负责将虚拟机视角的物理地址转换为真实的物理地址(physical address,PA),即IPA ->PA。
另一方面,Hypervisor也可以通过阶段2转换来控制VM对虚拟外设(virtualperipheral,VP)的访问。当VM试图访问虚拟外设如内存映射I/O(memory mapping I/O,MMIO)空间时,Hypervisor软件会对其访问过程进行模拟。MMIO空间是指由宿主机模拟的一段地址空间,如图4所示,当VM访问MMIO时,Hypervisor会将VM访问过程的stage2 标记为错误(fault)触发异常。然后Hypervisor在异常处理中通过模拟获得访问的数据结果,并将数据结果填入访问指令的目的寄存器中。VM中的软件以为它在直接与外设交互,但实际上每次交互都会触发一次阶段2 fault,并伴随着Hypervisor在异常处理函数中模拟外设进行交互。
下面结合图5来说明VM对虚拟外设的具体访问过程,包括步骤S510-S530。
在步骤S510,VM中的软件尝试访问虚拟外设,在本例中,虚拟外设是一个虚拟的通用异步收发器(universal asynchronous receiver/transmitter,UART)的先入先出(first-in first-out,FIFO)缓冲区。如图5所示,访问的目标指令是LDR x0,[virt_uart_rx_reg],表示从地址[virt_uart_rx_reg]中读取一个32位(4字节)的数据并存储在目的寄存器x0中。
在步骤S520,在VM访问的过程中,访问在阶段2 转换时被阻塞。此时访问中止,并触发异常路由到异常级别2(exceptionlevel2,EL2)。中止有关的异常信息被填充到EL2级别的异常综合寄存器(exception syndrome register at EL2,ESR_EL2)中,异常信息包括访问的字节数、目标寄存器以及它是加载还是存储,即“Read 4bytes,x0”。中止时访问的IPA即“ipa virt uart rx”被填充到EL2级别的虚拟化IPA故障地址寄存器(hypervisorIPAfault address register EL2,HPFAR_EL2)中。
在步骤S530,Hypervisor对异常进行处理,可以使用步骤S520中来自ESR_EL2和HPFAR_EL2的信息来标识所访问的目标寄存器,并模拟所访问的外设的操作,获得结果后将数据填入目标寄存器。如图5所示,Hypervisor通过异常处理函数s2_abort_handler使用这些信息进行模拟并获得结果,然后通过异常返回(exception return,ERET)指令返回到虚拟中央处理单元(virtualcentral processing unit,vCPU),vCPU在收到ERET返回以后就可以执行下一条指令。
通过以上几个步骤,虚拟机就能够完成用LDR指令对MMIO空间的访问。在ARMv8架构中,目前MMIO空间能够支持常规的LDR族指令,但是仍有一些指令无法被MMIO空间识别,比如用于操作多个目标寄存器的目标指令(如LDP或STP指令)。当VM采用这些指令访问MMIO空间时会发生未定义指令错误,导致指令无法被执行。
MMIO空间无法识别这些指令的原因是ESR_EL2寄存器是一个64位寄存器,只能存储目标指令的一个目标寄存器信息,然而这些不被支持的指令有不止一个目标寄存器,所以在触发异常以后无法将多个目标寄存器的信息都存储下来,所以会发生未定义错误,导致目标指令无法被执行。比如LDP和STP指令都有两个目标寄存器,LDP指令能够一次从访问地址读取两个64位双字的连续内存数据,并将它们加载到两个不同的通用寄存器中。又比如STP指令能够一次从两个不同的通用寄存器加载两个64位双字的连续内存数据,并将他们写入到访问地址中去。因此当VM采用LDP或STP指令访问MMIO空间时,触发异常以后LDP或STP指令的第二个目标寄存器信息无法被存储下来,从而可能导致LDP或STP指令无法被执行。
针对上述问题,本申请在对虚拟机的目标指令触发的异常进行处理的过程中,将目标指令的多个目标寄存器信息分别存储至多个第二寄存器,作为模拟目标指令执行的依据之一。有助于避免未定义指令错误,从而有助于确保目标指令被执行。
下面结合图6,以对本申请提供的处理指令的方法进行介绍,包括步骤S610-S660。图6所示的方法可以由Hypervisor执行。
参见图6中的步骤S610,接收虚拟机生成的目标指令。这里的目标指令可以是虚拟机用来访问虚拟外设的指令,比如LDR、STR及加载非临时双字(load non-temporal pair,LDNP)指令、存储非临时双字(store non-temporal pair,STNP)指令等加载/存储指令。虚拟机生成的目标指令通常包含其访问的中间物理地址、目标寄存器信息、访问的字节数以及要进行的操作等信息。目标指令访问的中间物理地址位于虚拟机的MIMO地址空间内。中间物理地址信息中包含目标指令要访问的多个虚拟外设寄存器信息,目标指令通常要对这些虚拟外设寄存器进行操作,例如加载多个虚拟外设寄存器中的数据。
目标指令可以对多个目标寄存器进行操作,其中,目标寄存器用于存储指令的执行结果。例如目标指令可以有两个目标寄存器,如LDP和STP等指令通常拥有两个目标寄存器,分别使用指令中的Rt字段和第二个寄存器目标(register target 2,Rt2)字段进行标识。例如指令LDP X0, X1, [X2]的目标寄存器就是X0和X1。另外,如前文所述,目标指令访问的字节数和/或要进行的操作等信息可以通过目标指令的操作码获知。
继续参见步骤S620,响应于目标指令,触发异常处理过程。例如,在ARMv8架构中,虚拟机访问MIMO时,Hypervisor会自动解码指令,并使目标指令访问的阶段2发生阻塞并触发异常。当异常被触发,目标指令的访问中止,Hypervisor捕获异常并将目标指令的信息保存下来,用于后续异常处理。
在步骤S630,在异常处理过程中,将中间物理地址存储至第一寄存器。第一寄存器可以是ARMv8架构中的HPFAR_EL2寄存器,发生异常时,HPFAR_EL2寄存器会记录发生异常的IPA。如前文所述,这里的IPA并不是真实的物理地址,而是虚拟机视角的物理地址。
在步骤S640,在异常处理过程中,将目标指令的异常信息存储至多个第二寄存器。目标指令的异常信息通常包括目标指令的目标寄存器、访问的字节数以及要进行的操作(例如,加载或存储)等信息。通常一个第二寄存器可以存储一个目标寄存器相关的信息,而目标指令的目标寄存器通常会有多个。所以可以根据目标指令的目标寄存器个数在硬件中设置多个第二寄存器,使多个第二寄存器分别存储多个目标寄存器的信息,以确保目标指令的多个目标寄存器信息能够被完整保存下来。其余异常信息如目标指令访问的字节数及要进行的操作等信息也可以存储在多个第二寄存器中的每个第二寄存器中,有助于提高异常信息存储的可靠性。当然,在本申请实施例中,其余异常信息可以仅存储在多个第二寄存器中的某一个第二寄存器中,而多个第二寄存器中的其他第二寄存器可以不再对其余异常信息进行保存,以节约资源。
在一些实现方式中,可以根据常用指令的目标寄存器个数来设置第二寄存器的个数,既能提高适用性,也能节约成本。例如在ARMv8架构中,用于访问虚拟外设的常见指令所拥有的目标寄存器个数通常为2个,因此可以将第二寄存器的个数设置为2个。多个第二寄存器还可以按照目标指令中多个目标寄存器的顺序依次存放多个目标寄存器相关的信息,可以避免出现信息混乱,也方便后续处理。另外,这里的第二寄存器的类型不做限定,可以是ARMv8架构中的硬件寄存器如ELR_EL2寄存器。
继续参见图6,在步骤S650,根据第一寄存器中存储的中间物理地址,以及多个第二寄存器中存储的异常信息,对目标指令的执行进行模拟,得到目标指令的执行结果。根据中间物理地址和异常信息,Hypervisor可以获取到目标指令访问的是哪一个虚拟外设,该虚拟外设的哪一个虚拟外设寄存器被访问,是加载访问还是存储访问,访问的字节数是多少以及使用哪些目标寄存器来传输数据。Hypervisor可以进一步根据这些信息来模拟该虚拟外设的行为,并得到相应的结果。例如Hypervisor可以根据目标指令的请求向某个虚拟外设的某个寄存器中存储某些字节数的数据,也可以根据目标指令的请求从某个虚拟外设的某个寄存器中加载某些字节数的数据。Hypervisor模拟虚拟外设的行为得到结果以后,参见步骤S660,向虚拟机发送目标指令的执行结果,其中,执行结果例如可以通过ERET指令来返回执行结果。
在一些实现方式中,前面提到的多个第二寄存器中的一个或多个第二寄存器可以包括指示位,指示位用于指示对应的寄存器的取值是否有效。例如,可以将一个或多个寄存器的1个比特位作为指示位,例如bit0位。在另外一些实现方式中,可以使比特位的值为第一值或第二值时来指示对应的第二寄存器的取值有效。其中,第一值和第二值可以不同,例如,第一值可以是0或1,相应地第二值即为1或0。例如,用指示位的值为1来表示对应的寄存器的取值有效,指示位的值为0则表示对应的寄存器的取值无效。那么在步骤S650中,在根据第一寄存器中存储的中间物理地址,以及多个第二寄存器中存储的异常信息,对目标指令的执行进行模拟之前,可以根据指示位判断对应的寄存器的取值是否有效。在指示位指示对应的寄存器的取值有效的情况下,获取对应的寄存器中存储的目标寄存器的信息。通过指示位,Hypervisor可以区分有效的第二寄存器,这样可以兼容对拥有不同目标寄存器个数的目标指令的处理,例如对于有1个目标寄存器的指令和有2个目标寄存器的指令都有可以进行处理。
在另外一些实现方式中,包含指示位的第二寄存器可以是所有第二寄存器,也可以是除了第一个第二寄存器之外的第二寄存器,即可以不对第一个第二寄存器的取值进行有效指示。在多个第二寄存器按照目标指令的目标寄存器的顺序依次存放目标寄存器的信息的情况下,不论目标指令有多少个目标寄存器,通常第一个第二寄存器都会存放有效信息,因此可以省略第一个第二寄存器的指示位,提高处理效率。例如,如果有2个第二寄存器,那么就可以在第2个第二寄存器中设置指示位,不在第1个第二寄存器中设置指示位。还可以在除了第一个第二寄存器之外的第二寄存器中选择一个第二寄存器,让该第二寄存器包含指示位,以指示除第一个第二寄存器之外的其他第二寄存器是否都有效。Hypervisor可以通过该第二寄存器的有效位来判断其余第二寄存器是否有效,可以进一步提高处理效率。例如,在常用的目标指令通常有3个目标寄存器的情况下设置3个第二寄存器,那么可以选择第2个第二寄存器或者第3个第二寄存器包含指示位,来指示第2个和第3个第二寄存器是否有效。当选择第2个第二寄存器包含指示位时,更符合Hypervisor处理时的操作顺序习惯。
如前文介绍,本申请实施例的目标指令可以是LDP指令或STP指令。下面以虚拟机采用LDP指令访问虚拟外设为例,结合图7详细介绍本申请实施例提供的处理指令的方法。应理解,本申请提供的处理指令的方法不止适用于LDP指令或STP指令,还适用于虚拟机中用于访问虚拟外设的其他目标指令,如LDR、STR、LDNP以及STNP指令等。
如图7所示,在步骤S710,VM中的软件试图访问虚拟外设。在本例中,虚拟外设是一个虚拟UART的接收FIFO缓冲区。访问的目标指令是LDP x1,x2,[virt_uart_rx_data],意思是从“virt_uart_rx”这个地址加载两个64位(8字节)的数据,分别存储到x1(Rt字段)和x2(Rt2字段)目标寄存器中。
继续参见步骤S720,此指令在访问的过程中,被Hypervisor自动解码并触发异常。如图7所示,访问在阶段2转换中被阻塞,导致访问中止并路由到EL2。此时中止有关的异常信息被填充到第二寄存器中,包括目标指令访问的字节数、目标寄存器以及它是加载操作还是存储操作。由于LDP指令拥有两个目标寄存器x1(Rt字段)和x2(Rt2字段),因此它的目标寄存器信息要被填充到两个第二寄存器中。因此可以在硬件上新增一个ESR2_EL2寄存器,用于存储LDP指令中的Rt2字段。其中ESR2_EL2的bit0位设置为valid位,用于指示ESR2_EL2寄存器的值是否有效,bit1-5则用于存储Rt2字段。
那么LDP指令的第一个目标寄存器x1(Rt字段)的信息以及目标指令访问的字节数和目标指令要进行的操作等信息就可以被存放到第一个第二存储器ESR_EL2的Rt字段中,被记录为“read 8byte,x1”。而第二个目标寄存器x2(Rt2字段)的信息则可以被存放到第二个第二寄存器ESR2_EL2的Rt2字段中,被记录为“valid,x2”,并设置valid位为1。另外,中止时目标指令访问的IPA可以被填充到第一寄存器HPFAR_EL2中,如图7所示,被记录为“ipavirt uart rx”。
在步骤S730,Hypervisor在异常处理的过程中,来自ESR_EL2、ESR2_EL2和HPFAR_EL2的信息允许Hypervisor的异常处理函数s2_abort_handler模拟目标指令对UART的操作,并获得执行结果。Hypervisor会检查ESR2_EL2寄存器的valid位,如果为1,则表示寄存器中的值有效,需要被软件处理。那么对于本示例中的目标指令,Hypervisor可以结合ESR_EL2、ESR2_EL2的信息获取到目标指令的目标寄存器是x1和x2,访问的字节数是两个64位双字,要执行加载操作。另外,Hypervisor可以使用来自HPFAR_EL2的信息来标识所访问的IPA,即“ipa virt uart rx”。然后Hypervisor就可以从MMIO空间的“ipa virt uart rx”地址加载相应的两个64位(8字节)的数据放入x1和x2目标寄存器。接下来Hypervisor通过ERET将执行结果返回到vCPU,vCPU接收到ERET的返回后执行LDP指令的下一条指令。
类似于LDP指令,当采用STP指令访问MMIO空间时,STP指令的第二个目标寄存器信息也可以通过硬件上新增的ESR2_EL2寄存器保存下来。如此一来,LDP或STP指令的两个目标寄存器的信息均能被存储下来并用于指令的模拟,使得LDP或STP指令能够被执行,解决了之前MMIO空间不支持LDP和STP指令的弊端。实现本方法可以不对现有虚拟机里面的软件和系统进行更改,可以在虚拟机的异常处理软件代码的现有基础上添加一点判断代码,不用更改已知的代码框架。因而本申请提供的处理指令的方法中涉及到的硬件和软件方案可以方便地嵌入到ARMv8架构中,具有广泛的应用前景。
上文结合图1至图7,详细描述了本申请的方法实施例,下面结合图8至图9,详细描述本申请的装置实施例。应理解,方法实施例的描述与装置实施例的描述相互对应,因此,未详细描述的部分可以参见前面方法实施例。
如图8所示,本申请还提供了一种处理系统800,包括接收模块810,触发模块820,第一存储模块830,第二存储模块840,模拟模块850,发送模块860。
接收模块810用于接收虚拟机生成的目标指令,目标指令访问的中间物理地址位于虚拟机的MIMO地址空间内,且目标指令用于操作多个目标寄存器。
触发模块820用于响应于目标指令,触发异常处理过程。
第一存储模块830用于在异常处理过程中,将中间物理地址存储至第一寄存器831。
第二存储模块840用于在异常处理过程中,将目标指令的异常信息存储至多个第二寄存器841,使得多个第二寄存器841分别存储多个目标寄存器的信息。
模拟模块850用于根据第一寄存器831中存储的中间物理地址,以及多个第二寄存器841中存储的异常信息,对目标指令的执行进行模拟,得到目标指令的执行结果。
发送模块860用于向虚拟机发送目标指令的执行结果。
在一种可能的实施例中,本申请提供的处理系统800中,多个第二寄存器841中的一个或多个寄存器包括指示位(图中未示出),指示位用于指示对应的寄存器的取值是否有效。
在一些实现方式中,本申请提供的处理系统800装置还包括判断模块870和获取模块880。
判断模块870用于在根据第一寄存器831中存储的中间物理地址,以及多个第二寄存器841中存储的异常信息,对目标指令的执行进行模拟之前,根据指示位判断对应的寄存器的取值是否有效。
获取模块880用于在指示位指示对应的寄存器的取值有效的情况下,获取对应的寄存器中存储的目标寄存器的信息。
在一种可能的实施例中,本申请提供的处理系统800中的目标指令包括LDP指令或STP指令。
本申请还提供一种处理系统900,如图9所示包括处理器910,虚拟机920,虚拟机监视器930。
本申请提供的处理系统900中的虚拟机920运行在处理器910上。
本申请提供的处理系统900中的虚拟机监视器930运行在处理器910上,用于执行以下操作:接收虚拟机920生成的目标指令,目标指令访问的中间物理地址位于虚拟机920的MIMO地址空间内,且目标指令用于操作多个目标寄存器;响应于目标指令,触发异常处理过程;在异常处理过程中,将中间物理地址存储至第一寄存器;在异常处理过程中,将目标指令的异常信息存储至多个第二寄存器,使得多个第二寄存器分别存储多个目标寄存器器的信息;根据第一寄存器中存储的中间物理地址,以及多个第二寄存器中存储的异常信息,对目标指令的执行进行模拟,得到目标指令的执行结果;向虚拟机920发送目标指令的执行结果。
在一种可能的实施例中,本申请提供的处理系统900中多个第二寄存器中的一个或多个寄存器包括指示位,指示位用于指示对应的寄存器的取值是否有效。本申请提供的处理系统900中的虚拟机监视器930还用于执行以下操作:在根据第一寄存器中存储的中间物理地址,以及多个第二寄存器中存储的异常信息,对目标指令的执行进行模拟之前,根据指示位判断对应的寄存器的取值是否有效;在指示位指示对应的寄存器的取值有效的情况下,获取对应的寄存器中存储的目标寄存器的信息。
在一种可能的实施例中,本申请提供的处理系统900中目标指令为LDP指令或STP指令。
应理解,在本申请实施例中,处理器910可以采用通用的CPU,微处理器,应用专用集成电路(application specific integrated circuit,ASIC)或者一个或多个集成电路,用于执行相关程序,以实现本申请实施例所提供的技术方案。处理器910的一部分还可以包括非易失性随机存取存储器。例如,处理器910还可以存储设备类型的信息。
在实现过程中,上述方法的各步骤可以通过处理器910 中的硬件的集成逻辑电路或者软件形式的指令完成。结合本申请实施例所公开的用于请求上行传输资源的方法可以直接体现为硬件处理器执行完成,或者用处理器910中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。为避免重复,这里不再详细描述。
本申请还提供了一种计算机可读存储介质,计算机可读存储介质存储有程序代码,当计算机程序代码在计算机上运行时,使得计算机执行上述处理指令的方法。
本申请还提供了一种计算机程序产品,包括计算机程序/指令,当计算机程序/指令处理器被执行时实现上述处理指令的方法。
在一些实现方式中,上述计算机程序产品包括可以包括计算机程序代码,当计算机程序代码在计算机上运行时,使得计算机执行上述处理指令的方法。
应理解,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够读取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,数字通用光盘(digital video disc,DVD))或者半导体介质(例如,固态硬盘(solid state disk,SSD))等。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (10)
1.一种处理指令的方法,其特征在于,包括:
接收虚拟机生成的目标指令,所述目标指令访问的中间物理地址位于所述虚拟机的MIMO地址空间内,且所述目标指令用于操作多个目标寄存器;
响应于所述目标指令,触发异常处理过程;
在所述异常处理过程中,将所述中间物理地址存储至第一寄存器;
在所述异常处理过程中,将所述目标指令的异常信息存储至多个第二寄存器,所述目标指令的异常信息包括所述多个目标寄存器的信息,所述多个第二寄存器中的每个第二寄存器分别存储所述多个目标寄存器中的一个目标寄存器的信息;
根据所述第一寄存器中存储的所述中间物理地址,以及所述多个第二寄存器中存储的所述目标指令的异常信息,对所述目标指令的执行进行模拟,得到所述目标指令的执行结果;
向所述虚拟机发送所述目标指令的执行结果。
2.根据权利要求1所述的方法,其特征在于,所述多个第二寄存器中的一个或多个寄存器包括指示位,所述指示位用于指示对应的寄存器的取值是否有效,
在所述根据所述第一寄存器中存储的所述中间物理地址,以及所述多个第二寄存器中存储的所述异常信息,对所述目标指令的执行进行模拟之前,所述方法还包括:
根据所述指示位判断所述对应的寄存器的取值是否有效;
在所述指示位指示所述对应的寄存器的取值有效的情况下,获取所述对应的寄存器中存储的目标寄存器的信息。
3.根据权利要求1或2所述的方法,其特征在于,所述目标指令为LDP指令或STP指令。
4.一种处理系统,其特征在于,包括:
接收模块,用于接收虚拟机生成的目标指令,所述目标指令访问的中间物理地址位于所述虚拟机的MIMO地址空间内,且所述目标指令用于操作多个目标寄存器;
触发模块,用于响应于所述目标指令,触发异常处理过程;
第一存储模块,用于在所述异常处理过程中,将所述中间物理地址存储至第一寄存器;
第二存储模块,用于在所述异常处理过程中,将所述目标指令的异常信息存储至多个第二寄存器,所述目标指令的异常信息包括所述多个目标寄存器的信息,所述多个第二寄存器中的每个第二寄存器分别存储所述多个目标寄存器中的一个目标寄存器的信息;
模拟模块,用于根据所述第一寄存器中存储的所述中间物理地址,以及所述多个第二寄存器中存储的所述目标指令的异常信息,对所述目标指令的执行进行模拟,得到所述目标指令的执行结果;
发送模块,用于向所述虚拟机发送所述目标指令的执行结果。
5.根据权利要求4所述的处理系统,其特征在于,所述多个第二寄存器中的一个或多个寄存器包括指示位,所述指示位用于指示对应的寄存器的取值是否有效,
所述处理系统还包括:
判断模块,用于在所述根据所述第一寄存器中存储的所述中间物理地址,以及所述多个第二寄存器中存储的所述异常信息,对所述目标指令的执行进行模拟之前,根据所述指示位判断所述对应的寄存器的取值是否有效;
获取模块,用于在所述指示位指示所述对应的寄存器的取值有效的情况下,获取所述对应的寄存器中存储的目标寄存器的信息。
6.根据权利要求4或5所述的处理系统,其特征在于,所述目标指令为LDP指令或STP指令。
7.一种处理系统,其特征在于,包括:
处理器;
虚拟机,运行在所述处理器上;
虚拟机监视器,运行在所述处理器上,用于执行以下操作:
接收所述虚拟机生成的目标指令,所述目标指令访问的中间物理地址位于所述虚拟机的MIMO地址空间内,且所述目标指令用于操作多个目标寄存器;
响应于所述目标指令,触发异常处理过程;
在所述异常处理过程中,将所述中间物理地址存储至第一寄存器;
在所述异常处理过程中,将所述目标指令的异常信息存储至多个第二寄存器,所述目标指令的异常信息包括所述多个目标寄存器的信息,所述多个第二寄存器中的每个第二寄存器分别存储所述多个目标寄存器中的一个目标寄存器的信息;
根据所述第一寄存器中存储的所述中间物理地址,以及所述多个第二寄存器中存储的所述目标指令的异常信息,对所述目标指令的执行进行模拟,得到所述目标指令的执行结果;
向所述虚拟机发送所述目标指令的执行结果。
8.根据权利要求7所述的处理系统,其特征在于,所述多个第二寄存器中的一个或多个寄存器包括指示位,所述指示位用于指示对应的寄存器的取值是否有效,
所述虚拟机监视器还用于执行以下操作:
在所述根据所述第一寄存器中存储的所述中间物理地址,以及所述多个第二寄存器中存储的所述异常信息,对所述目标指令的执行进行模拟之前,根据所述指示位判断所述对应的寄存器的取值是否有效;
在所述指示位指示所述对应的寄存器的取值有效的情况下,获取所述对应的寄存器中存储的目标寄存器的信息。
9.根据权利要求7或8所述的处理系统,其特征在于,所述目标指令为LDP指令或STP指令。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有程序代码,当所述程序代码在计算机上运行时,使得计算机执行权利要求1-3中任一项的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311054501.3A CN116795493B (zh) | 2023-08-22 | 2023-08-22 | 一种处理指令的方法、处理系统和计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311054501.3A CN116795493B (zh) | 2023-08-22 | 2023-08-22 | 一种处理指令的方法、处理系统和计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116795493A CN116795493A (zh) | 2023-09-22 |
CN116795493B true CN116795493B (zh) | 2023-10-31 |
Family
ID=88044017
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311054501.3A Active CN116795493B (zh) | 2023-08-22 | 2023-08-22 | 一种处理指令的方法、处理系统和计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116795493B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103853591A (zh) * | 2012-11-30 | 2014-06-11 | 国际商业机器公司 | 用于虚拟机管理器获取异常指令的装置和控制方法 |
CN113849397A (zh) * | 2021-08-25 | 2021-12-28 | 平头哥(上海)半导体技术有限公司 | 执行引擎、虚拟机、相关装置和相关方法 |
CN115357332A (zh) * | 2021-05-17 | 2022-11-18 | 英特尔公司 | 处理器间中断的虚拟化 |
CN115840618A (zh) * | 2022-12-23 | 2023-03-24 | 科东(广州)软件科技有限公司 | 一种hypervisor中虚拟机模拟设备寄存器的访问方法及装置 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1669864B1 (en) * | 2004-12-03 | 2010-06-02 | STMicroelectronics Srl | A process for managing virtual machines in a physical processing machine, corresponding processor system and computer program product therefor |
WO2014180618A1 (en) * | 2013-05-08 | 2014-11-13 | Dam Mads | Verification of security domain separation |
US11693722B2 (en) * | 2020-03-23 | 2023-07-04 | Red Hat, Inc. | Fast memory mapped IO support by register switch |
-
2023
- 2023-08-22 CN CN202311054501.3A patent/CN116795493B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103853591A (zh) * | 2012-11-30 | 2014-06-11 | 国际商业机器公司 | 用于虚拟机管理器获取异常指令的装置和控制方法 |
CN115357332A (zh) * | 2021-05-17 | 2022-11-18 | 英特尔公司 | 处理器间中断的虚拟化 |
CN113849397A (zh) * | 2021-08-25 | 2021-12-28 | 平头哥(上海)半导体技术有限公司 | 执行引擎、虚拟机、相关装置和相关方法 |
CN115840618A (zh) * | 2022-12-23 | 2023-03-24 | 科东(广州)软件科技有限公司 | 一种hypervisor中虚拟机模拟设备寄存器的访问方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN116795493A (zh) | 2023-09-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5636097B2 (ja) | 入力/出力アドレスをメモリ・アドレスに変換するための方法、コンピュータ・システム、およびコンピュータ・プログラム | |
US6321314B1 (en) | Method and apparatus for restricting memory access | |
JP5731641B2 (ja) | アダプタ機能に関する変換フォーマットのランタイム決定のための方法、システム、およびコンピュータ・プログラム | |
EP2483783B1 (en) | Facilitating memory accesses | |
EP2430556B1 (en) | Enable/disable adapters of a computing environment | |
US20150149997A1 (en) | Facilitating execution of mmio based instructions | |
WO2008092778A2 (en) | Controlling instruction execution in a processing environment | |
JP2015516602A (ja) | ランタイム計装制御の状況の決定のためのコンピュータ・プログラム、方法、およびシステム | |
US10496292B2 (en) | Saving/restoring guarded storage controls in a virtualized environment | |
US20150234687A1 (en) | Thread migration across cores of a multi-core processor | |
CN115988218A (zh) | 一种虚拟化视频编解码系统、电子设备和存储介质 | |
CN114328295A (zh) | 存储管理装置、处理器、相关装置和相关方法 | |
CN115827502A (zh) | 一种内存访问系统、方法及介质 | |
JP5318197B2 (ja) | ホストデータ処理装置内におけるデバイスエミュレーションのサポート | |
US7685381B2 (en) | Employing a data structure of readily accessible units of memory to facilitate memory access | |
US20240126567A1 (en) | Data processing system, method, and apparatus | |
KR101507665B1 (ko) | 통신 환경의 격리된 메모리 공간사이에서의 통신 개선 방법 | |
CN116795493B (zh) | 一种处理指令的方法、处理系统和计算机可读存储介质 | |
US11860792B2 (en) | Memory access handling for peripheral component interconnect devices | |
US6324635B1 (en) | Method and apparatus for address paging emulation | |
US11301402B2 (en) | Non-interrupting portable page request interface | |
US20210089309A1 (en) | Byte comparison method for string processing and instruction processing apparatus | |
WO2023185799A1 (zh) | 一种指令翻译方法及其相关设备 | |
CN112631657B (zh) | 用于字符串处理的字节比较方法以及指令处理装置 | |
CN115357334A (zh) | Mmio处理方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |