CN117112029B - 一种指令执行方法及装置 - Google Patents
一种指令执行方法及装置 Download PDFInfo
- Publication number
- CN117112029B CN117112029B CN202311378936.3A CN202311378936A CN117112029B CN 117112029 B CN117112029 B CN 117112029B CN 202311378936 A CN202311378936 A CN 202311378936A CN 117112029 B CN117112029 B CN 117112029B
- Authority
- CN
- China
- Prior art keywords
- instruction
- cpu
- coprocessor
- processing unit
- illegal
- 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
- 238000000034 method Methods 0.000 title claims abstract description 132
- 238000004088 simulation Methods 0.000 claims abstract description 143
- 230000008569 process Effects 0.000 claims abstract description 53
- 238000012545 processing Methods 0.000 claims description 128
- 238000004458 analytical method Methods 0.000 claims description 55
- 238000004590 computer program Methods 0.000 claims description 12
- 238000013519 translation Methods 0.000 abstract description 22
- 238000010586 diagram Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 9
- 239000002699 waste material Substances 0.000 description 7
- 238000012986 modification Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 238000012360 testing method Methods 0.000 description 5
- 230000001133 acceleration Effects 0.000 description 4
- 229910002056 binary alloy Inorganic materials 0.000 description 3
- 230000002159 abnormal effect Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 239000012634 fragment Substances 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000005856 abnormality Effects 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000006386 memory function Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000008054 signal transmission Effects 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
Abstract
本发明实施例提供一种指令执行方法及装置,包括:CPU在用户态执行指令的过程中,若确定当前指令为非法指令,则切换至内核态;CPU在内核态下将非法指令发送至协处理器;协处理器对非法指令进行模拟运行,得到模拟结果;CPU在内核态下获取模拟结果后,切换至用户态下继续执行后续指令。使用协处理器对非法指令进行模拟的效率会高于使用CPU对非法指令进行模拟的效率。通过内核和协处理器协同模拟,内核负责把需要模拟的指令取出来,然后协处理器来模拟指令,从而提高指令转译/指令模拟的效率。
Description
技术领域
本发明涉及协处理器技术领域,尤其涉及一种指令执行方法及装置。
背景技术
指令集是计算机的基本组成部分之一,用于指导处理器执行各种操作。它包括命令、寄存器以及地址编码方式等信息。但是,二进制程序只能在具有与之相匹配的指令集的CPU上执行,若被执行的二进制程序所采用的指令集不与CPU使用的指令集匹配,则CPU无法执行该二进制。
目前,通过软件转译的方式对指令集不匹配的二进制进行转译,得到与CPU架构相匹配的二进制或指令序列,然后再将转译后的二进制或指令序列输入至CPU中执行。但是,软件转译本身需要较高的时间成本,且转译后的二进制或指令片段执行效率通常相当低,这导致通过软件转译执行异指令集的二进制性能相当低下。
因此,如何提高指令转译/指令模拟的效率,是当前亟需解决的技术问题。
发明内容
本发明实施例提供一种指令执行方法及装置,用以解决现有技术中指令转译/指令模拟的效率较低的问题。
第一方面,本发明实施例提供一种指令执行方法,包括:CPU在用户态执行指令的过程中,若确定当前指令为非法指令,则切换至内核态;CPU在内核态下将非法指令发送至协处理器;协处理器对非法指令进行模拟运行,得到模拟结果;CPU在内核态下获取模拟结果后,切换至用户态下继续执行后续指令。
上述技术方案中,由于CPU是通用电路,而协处理器是专门用于对非法指令进行模拟的专用电路,因此,使用协处理器对非法指令进行模拟的效率会高于使用CPU对非法指令进行模拟的效率。通过内核和协处理器协同模拟,内核负责把需要模拟的指令取出来,然后协处理器来模拟指令,从而提高指令模拟的效率。
可选的,协处理器对非法指令进行模拟运行,得到模拟结果,包括:协处理器对非法指令进行解析,得到解析结果;CPU在内核态下获得解析结果对应的寄存器数据,并将寄存器数据发送至协处理器;协处理器通过寄存器数据进行非法指令的模拟运行,得到模拟结果。
可选的,还包括:在协处理器对非法指令进行解析的过程中,CPU切换至用户态并执行第一指令;第一指令为当前指令之外的任一或多条指令;得到解析结果之后,CPU在内核态下获得解析结果对应的寄存器数据之前,还包括:协处理器向CPU发送第一中断;CPU基于第一中断切换至内核态。
可选的,还包括:在协处理器对非法指令进行解析的过程中,CPU在内核态下执行空等待;得到解析结果之后,CPU在内核态下获得解析结果对应的寄存器数据之前,还包括:协处理器向CPU发送第一中断。
可选的,还包括:在协处理器对非法指令进行解析的过程中,CPU在内核态下执行第一忙等待,第一忙等待用于从协处理获得解析结果。
可选的,还包括:在协处理器对非法指令进行模拟的过程中,CPU切换至用户态并执行第二指令;第二指令为当前指令之外的任一或多条指令;协处理器得到模拟结果之后,CPU在内核态下获取模拟结果之前,还包括:协处理器向CPU发送第二中断;CPU基于第二中断切换至内核态。
可选的,还包括:在协处理器对非法指令进行模拟的过程中,CPU在内核态下执行空等待;协处理器得到模拟结果之后,CPU在内核态下获取模拟结果之前,还包括:协处理器向CPU发送第二中断。
可选的,还包括:在协处理器对非法指令进行模拟的过程中,CPU在内核态下执行第二忙等待,第二忙等待用于从协处理器获得模拟结果。
可选的,第一中断和第二中断是通过同一个向量化中断实现的,或通过不同的向量化中断实现。
可选的,协处理器对非法指令进行模拟运行,得到模拟结果,包括:协处理器对非法指令进行解析,得到解析结果;协处理器根据解析结果,获取解析结果对应的影子寄存器数据;协处理器通过影子寄存器数据进行非法指令的模拟运行,得到模拟结果。
可选的,协处理器通过影子寄存器数据进行非法指令的模拟运行,得到模拟结果之后,还包括:若非法指令与影子寄存器有关联关系,则将模拟结果写入影子寄存器中。
第二方面,本发明实施例提供一种指令执行装置,包括:第一处理单元在用户态执行指令的过程中,若确定当前指令为非法指令,则切换至内核态;第一处理单元在内核态下将非法指令发送至第二处理单元;第二处理单元对非法指令进行模拟运行,得到模拟结果;第一处理单元在内核态下获取模拟结果后,切换至用户态下继续执行后续指令。
可选的,第二处理单元对非法指令进行解析,得到解析结果;第一处理单元在内核态下获得解析结果对应的寄存器数据,并将寄存器数据发送至第二处理单元;第二处理单元通过寄存器数据进行非法指令的模拟运行,得到模拟结果。
可选的,在第二处理单元对非法指令进行解析的过程中,第一处理单元切换至用户态并执行第一指令;第一指令为当前指令之外的任一或多条指令;第二处理单元向第一处理单元发送第一中断;第一处理单元基于第一中断切换至内核态。
可选的,在第二处理单元对非法指令进行解析的过程中,第一处理单元在内核态下执行空等待;第二处理单元向第一处理单元发送第一中断。
可选的,在第二处理单元对非法指令进行解析的过程中,第一处理单元在内核态下执行第一忙等待,第一忙等待用于从协处理获得解析结果。
可选的,在第二处理单元对非法指令进行模拟的过程中,第一处理单元切换至用户态并执行第二指令;第二指令为当前指令之外的任一或多条指令;第二处理单元向第一处理单元发送第二中断;第一处理单元基于第二中断切换至内核态。
可选的,在第二处理单元对非法指令进行模拟的过程中,第一处理单元在内核态下执行空等待;第二处理单元向第一处理单元发送第二中断。
可选的,在第二处理单元对非法指令进行模拟的过程中,第一处理单元在内核态下执行第二忙等待,第二忙等待用于从第二处理单元获得模拟结果。
可选的,第一中断和第二中断是通过同一个向量化中断实现的,或通过不同的向量化中断实现。
可选的,第二处理单元对非法指令进行解析,得到解析结果;第二处理单元根据解析结果,获取解析结果对应的影子寄存器数据;第二处理单元通过影子寄存器数据进行非法指令的模拟运行,得到模拟结果。
可选的,若非法指令与影子寄存器有关联关系,则将模拟结果写入影子寄存器中。
第三方面,本申请实施例提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行上述第一方面任意的指令执行方法。
第四方面,本申请实施例提供了一种计算机可读存储介质,其存储有可由计算机设备执行的计算机程序,当程序在计算机设备上运行时,使得计算机设备执行上述第一方面任意的指令执行方法。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种内核trap模拟的方法流程图;
图2为本发明实施例提供的一种指令执行方法的流程图;
图3为本发明实施例提供的一种确定模拟结果的方法流程图;
图4为本发明实施例提供的一种指令执行的方法流程图;
图5为本发明实施例提供的另一种指令执行的方法流程图;
图6为本发明实施例提供的另一种指令执行的方法流程图;
图7为本发明实施例提供的又一种指令执行的方法流程图;
图8为本发明实施例提供的一种指令执行的方法流程图;
图9为本发明实施例提供的一种指令执行的方法流程图;
图10为本发明实施例提供的一种指令执行的方法流程图;
图11为本发明实施例提供的一种指令执行装置的结构示意图;
图12为本发明实施例提供的一种计算机设备的结构示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部份实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
下面,对本申请中的部分用于进行通用解释说明,以便于本领域技术人员理解,并不对本申请中的用语进行限定。
1、用户态:CPU 可以实现许多特权态,其中包括用户态,用户态通常是权限最低的特权态,用户程序在此执行,其错误不会使系统崩溃。
2、内核态:CPU 可以实现许多特权态,其中包括内核态,内核态通常是特权最高的特权态(有时候可能还会扩展更高特权的特权态),可以执行某些特权指令,一旦处理不当就可以使系统崩溃,只有操作系统内核才可以在此执行。
3、寄存器:寄存器是CPU内部用来存放数据的一些小型存储区域,用来暂时存放参与运算的数据和运算结果。
4、影子寄存器:通过引入影子寄存器,指令可以重复使用相同的寄存器编码,但是在不同模式下,这些编码对应不同的物理寄存器。
5、协处理器:协处理器是一种协助中央处理器完成其无法执行,或执行效率、效果低下的处理工作而开发和应用之处理器。中央处理器无法执行的工作有很多,比如设备间的信号传输、接入设备的管理等;而执行效率、效果低下的有图形处理、声频处理等。
6、内部协处理器:协处理器可以与中央处理器存在于同一片 die(晶粒)上,传统上称这样的协处理器为内部协处理器。市面上常见的 CPU 除了包含中央处理器(即狭义的CPU),也包含一些内部协处理器和更多外围电路。这样的协处理器通常是用于完成 CPU 无法完成的工作的。由于它们的关系紧密,且大多对整个系统的运作有着非常重要的作用,习惯上不将这一整体称为 SoC,而直接称 CPU。
7、外部协处理器:有些中央处理器向外暴露接口,以供接入自选的协处理器,传统上称这样的协处理器为外部协处理器。中央处理器通常和外部协处理器的耦合度较低,不必要接入外部协处理器就能良好运作。一般而言,外部协处理器是作为独立的芯片或扩展卡的形式出现的。
CPU只能执行与CPU相同架构的指令集。举个例子,若CPU的架构为MIPS,那么MIPS架构的CPU只能执行MIPS指令。再举个例子,若CPU的架构为RISC-V指令,那么RISC-V架构的CPU只能执行RISC-V指令。
但是在一种可能的场景下,二进制程序只能在具有与之相匹配的指令集的CPU上执行,若被执行的二进制程序所采用的指令集不与CPU使用的指令集匹配,则CPU无法执行该二进制。其中被执行的二进制程序的指令集不与CPU执行的指令集匹配的情况可分为两种,下面分别对这两种情况进行介绍:
第一种情况:二进制程序与 CPU 使用同一个架构,然而,后者未实现前者使用的一些指令集扩展,或后者的指令集版本不与前者兼容。举个例子,CPU支持MIPS指令集,其中MIPS指令集的扩展指令为指令A,但是由于有些CPU可以处理A指令,有些CPU不能处理指令A,若不能处理指令A的CPU执行指令A的话,会导致非法指令异常。再举个例子,在指令集演进的过程中,新版本的指令集可能添加指令,导致为新版本指令集编译的二进制程序不能在使用旧版本指令集的 CPU 上运行。新版本的指令集还可能删除一些指令,导致为旧版本指令集编译的二进制程序不能在使用新版本指令集的 CPU 上运行。
第二种情况:二进制程序的目标架构与 CPU 架构不同。举个例子,支持MIPS指令集的CPU不能执行RISC-V架构的二进制程序。
在一种可能的情况下,可以通过软件转译的方式来实现在CPU上可以执行与其不兼容的二进制程序。具体来说,软件转译,即通过软件将不支持的指令(其它架构的指令/本机 CPU 未实现的指令扩展)转译为一系列等价的受支持指令的序列,这些指令序列执行后,对外等价于模拟了原指令。最具代表性的指令转译软件是 QEMU,QEMU 在运行用户态模拟时,几乎就是完成指令转译和一些额外工作;在运行系统级模拟时,它还需要进行硬件的虚拟,后者不是这里讨论的软件转译。其中编译器可以分为 AOT (Ahead-Of-Time) 和 JIT(Just-In-Time),前者先编译出二进制再执行,后者边编译边执行,软件转译也有这样的划分。QEMU 几乎只用于 JIT 转译,遇到未转译的指令块时,先转译它,然后再执行这个指令块,转译后的指令块会被以一定策略缓存起来,再度执行到的时候不需要再次转译。而 AOT转译的代表则是 Apple 的 Rosetta 2,在 ARM Mac 上安装了 x86 软件后,Rosetta 2 立刻扫描并转译软件中的所有二进制程序,将它们完全转译为 ARM64;在运行这些软件时,执行的就已经是 ARM64 二进制了,无需再次转译。软件转译存在的问题为:1、软件转译本身需要较高的时间成本,且转译后的二进制或指令片断执行效率通常相当低,这导致通过软件转译执行异指令集的二进制性能相当低下。2、对于前文所述的第一种情况(指令集扩展/版本不同),并不是每一条指令都需要被转译,举个例子,若大部分指令不需要被转译,仅小部分指令需要被转译的话,转译器是会将所有的指令都进行转译,这样的话,不仅浪费时间浪费资源,还可能存在不需要被转译的指令在转译后可能不再是原来的指令,而成为其他的指令或者是其他指令的组合。
在另一种可能的情况下,为解决软件转译的低效问题,同时又不引入复杂的硬件成本,可以设计一个指令集扩展,这个指令集扩展抽取了目标指令集中那些转译后执行效率低的指令的共性,以硬件方式提供了加速。需要说明的是,转译加速指令集扩展本身既不是目标指令集的重新实现,也不是硬件实现的转译器,它需要配合特别适配了该指令集扩展的软件转译器使用。该指令集扩展可以有效的解决上述情况2,该指令集扩展存在的问题为需要CPU的支持,还会占用宝贵的指令集的编码空间,与CPU的耦合度较高,灵活性较差,当指令集扩展被正式确定之后,继续迭代容易引入兼容性的问题,指令集扩展需要配合专用的软件转译器使用。
在一种可能的应用场景下,二进制程序中有大量的指令是可以被CPU直接运行的,这些指令并不需要被模拟/转译,而CPU在执行到不支持的指令时,才会导致CPU无法执行该不支持的指令,使得CPU陷入非法指令异常,即上述提及的情况1。由于软件转译和指令集扩展都无法较好的解决情况1中存在的问题,为了较好的解决情况1存在的问题,引入内核trap模拟(trap and emulate)方法。具体来说,CPU直接执行二进制程序,当遇到非法指令异常的时候,再启动内核trap模拟方法,从而能实现可以被CPU直接运行的指令可以以原生的效率执行,大大降低了整体的开销。
如图1所示,为本发明实施例提供的一种内核trap模拟的方法流程图,该方法包括以下步骤:
步骤101,执行待执行指令。
步骤102,译码器对待执行指令进行译码。
本发明实施例中,指令由操作码和地址码组成。操作码表示要执行的操作性质,即执行什么操作,或做什么;地址码是操作码执行时的操作对象的地址。计算机执行一条指定的指令时,必须首先分析这条指令的操作码是什么,以决定操作的性质和方法,然后才能控制计算机其他各部件协同完成指令表达的功能。这个分析工作由译码器来完成。
步骤103,判断待执行指令是否为合法指令,若是,则执行步骤104,若否,则执行步骤105。
步骤104,正常执行目标指令。
本发明实施例中,该步骤不需进入后续步骤。
步骤105,引发非法指令异常。
本发明实施例中,若待执行指令不是合法指令,则确定待执行指令为非法指令,引发非法指令异常。
步骤106,CPU陷入内核态。
本发明实施例中,由于内核 trap 模拟是在内核态计算出目标指令的结果后再写入目标寄存器后返回,因此,在引发非法指令异常之后,CPU会陷入内核态。
步骤107,CPU保存寄存器上下文到内核栈。
本发明实施例中,保存寄存器上下文到内核栈的作用是为了能够在之后返回用户态时恢复用户态当时的执行状态。
步骤108,进入异常处理例程,确定该异常为非法指令异常。
步骤109,取出引发异常的非法指令。
步骤110,内核中的指令模拟模块解析非法指令。
步骤111,根据解析非法指令的解析结果,进入对应非法指令的模拟函数中。
步骤112,模拟函数从内核栈中获取非法指令所使用的寄存器的值。
步骤113,模拟函数模拟对应的非法指令的操作,得到操作结果。
步骤114,根据操作结果,对应进行操作。
本发明实施例中,进行对应操作可能包含了修改内核栈中保存的寄存器值。
步骤115,从内核栈恢复寄存器的上下文。
步骤116,CPU返回用户态。
由图1可以看出,通过CPU对指令进行模拟,从而实现CPU可以执行非法指令。但是由于CPU属于通用电路,虽然CPU可以对指令进行模拟,但是指令模拟的效率并不高。
因此,本发明实施例提供一种指令执行方法,通过内核和协处理器协同模拟,内核负责把需要模拟的指令取出来,然后协处理器来模拟指令,从而提高指令转译/指令模拟的效率。
需要说明的是,下面的图2-7均需要在进入内核态时保存寄存器上下文,并在回到用户态之前恢复寄存器上下文。
如图2所示,为本发明实施例提供的一种指令执行方法的流程图,该方法包括以下步骤:
步骤201,CPU在用户态执行指令的过程中,判断当前指令是否为合法指令,若是,则执行步骤202,若否,则执行步骤203。
本发明实施例中,在一种可能的情况下,二进制程序中大量的指令是可以被CPU直接执行的,只有少数指令无法直接执行。其中需要说明的是,CPU是在处于用户态的时候执行指令的,CPU在用户态执行指令的过程中,需要判断当前指令是否为合法指令,若是,则当前指令为合法指令,CPU是可以直接执行的。若否,则会引发非法指令异常。
步骤202,CPU正常执行当前指令。
本发明实施例中,若在用户态执行指令的过程中,判断当前指令为合法指令,则CPU正常执行当前指令,不需进入后续步骤。
步骤203,CPU切换至内核态。
本发明实施例中,由于当前指令为非法指令,因此,会引发非法指令异常,首先需要CPU切换至内核态,便于后续对非法指令进行模拟。
步骤204,CPU在内核态下将非法指令发送至协处理器。
本发明实施例中,由于CPU是通用电路,而协处理器是专门用于对非法指令进行模拟的专用电路,因此,使用协处理器对非法指令进行模拟的效率会高于使用CPU对非法指令进行模拟的效率。CPU在内核态下,需要将非法指令发送协处理器,从而便于后续协处理器对非法指令进行模拟运行。
步骤205,协处理器对非法指令进行模拟运行,得到模拟结果。
本发明实施例中,协处理器对非法指令进行模拟运行,从而可以较准确的得到模拟结果。
步骤206,CPU从协处理器获取模拟结果。
步骤 207,切换至用户态继续执行后续指令。
本发明实施例中,CPU在内核态下获取模拟结果后,根据模拟结果对应进行操作,然后切换至用户态下继续执行后续的指令。举个例子,若CPU在内核态下获取的模拟结果为读取内存,那么CPU根据模拟结果去读取内存。再举个例子,若CPU在内核态下获取的模拟结果为改变内核栈中的寄存器值,那么CPU根据模拟结果去改变内核栈中的寄存器值。再举个例子,若CPU在内核态下获取的模拟结果为改变控制寄存器,那么CPU根据模拟结果去改变控制寄存器。
通过上述步骤201至步骤207可以看出,由于CPU是通用电路,而协处理器是专门用于对非法指令进行模拟的专用电路,因此,使用协处理器对非法指令进行模拟的效率会高于使用CPU对非法指令进行模拟的效率。通过内核和协处理器协同模拟,内核负责把需要模拟的指令取出来,然后协处理器来模拟指令,从而提高指令转译/指令模拟的效率。
为了通过内核和协处理器协同模拟来提高指令转译/指令模拟的效率,需要CPU首先将状态切换至内核态,然后在内核态下将非法指令发送至协处理器,协处理器再对非法指令进行模拟运行。这样就能够高效地得到模拟结果。下面介绍协处理器是怎么对非法指令进行模拟得到模拟结果的。
如图3所示,为本发明实施例提供的一种确定模拟结果的方法流程图,该方法包括以下步骤:
步骤301,协处理器对非法指令进行解析,得到解析结果。
本发明实施例中,协处理器对非法指令进行解析,得到解析结果,其中解析结果包括非法指令对应的寄存器标识。
步骤302,CPU从协处理器获得解析结果。
步骤303,CPU获得解析结果对应的寄存器数据。
步骤304,CPU将寄存器数据发送至协处理器。
步骤305,协处理器通过寄存器数据进行非法指令的模拟运行,得到模拟结果。
本发明实施例中,协处理器通过寄存器数据进行非法指令的模拟运行,从而实现得到模拟结果。
上述步骤301至步骤305可以看出,通过协处理器代替CPU对非法指令进行模拟运行,从而实现提高指令转译/指令模拟的效率。
如图4所示,为本发明实施例提供的一种指令执行的方法流程图,该方法包括以下步骤:
步骤401,CPU在用户态确定当前指令为非法指令,切换至内核态。
本发明实施例中,当CPU在用户态执行指令的过程中,若确定当前的指令为非法指令时,则需要对非法指令进行模拟,那么首先CPU需要从用户态切换至内核态。
步骤402,CPU在内核态下将非法指令发送至协处理器。
本发明实施例中,CPU在内核态的时候,内核态为权限最高的特权态,可以将非法指令发送至协处理器。
步骤403,协处理器对非法指令进行解析,CPU切换至用户态并执行第一指令。
本发明实施例中,协处理器接收到CPU发送的非法指令后,会对非法指令进行解析,而CPU在协处理器对非法指令进行解析的时候,会切换至用户态并执行第一指令,其中需要说明的是,第一指令为当前指令之外的任一指令或多条指令。
步骤404,协处理器向CPU发送第一中断。
本发明实施例中,当协处理器对非法指令解析完成后,会向CPU发送第一中断。
步骤405,CPU基于第一中断切换至内核态,进入第一中断处理例程。
步骤406,CPU从协处理器获取解析结果。
步骤407,CPU根据解析结果获得解析结果对应的寄存器数据。
步骤408,CPU将寄存器数据发送至协处理器。
本发明实施例中,CPU基于第一中断,从用户态切换至内核态,并通过第一中断处理例程获得解析结果中的非法指令对应的寄存器标识,然后CPU根据非法指令对应的寄存器标识,获得非法指令对应的寄存器数据,并将寄存器数据发送至协处理器,从而便于后续协处理器根据寄存器数据对非法指令进行模拟。
步骤409,协处理器对非法指令进行模拟,CPU切换至用户态并执行第二指令。
本发明实施例中,协处理器接收到CPU发送的寄存器数据后,对非法指令进行模拟,而CPU在协处理器对非法指令进行模拟的时候,会切换至用户态并执行第二指令,其中需要说明的是,第二指令为当前指令之外的任一指令或多条指令。
步骤410,协处理器在得到模拟结果后,向CPU发送第二中断。
步骤411,CPU基于第二中断切换至内核态,进入第二中断处理例程。
步骤412,CPU从协处理器获取模拟结果。
步骤413,CPU在内核态下获取模拟结果后,切换至用户态下继续执行后续指令。
上述步骤401至步骤413可以看出,由于CPU是通用电路,而协处理器是专门用来模拟指令的电路,因此,通过CPU在内核态的时候将非法指令取出,然后协处理器对非法指令进行模拟,可以提高模拟指令的效率。
本发明实施例中,步骤403和409中,CPU切换至用户态执行其它指令,实际上是在等待协处理器解析/模拟指令的过程中,将CPU的运算资源让予其他进程,可以避免系统长时间停顿。可以看到,步骤401、步骤403、步骤405、步骤409、步骤411、步骤413中的CPU都进行了上下文切换,即从用户态切换至内核态或从内核态切换至用户态,均是为了能够在等待协处理器模拟指令时让出运算资源予其它进程,而不得不引入的上下文切换。由于只有预期协处理器解析/模拟指令的耗时较长的时候,将运算资源让予其他进程的收益才会高于额外的上下文切换所带来的开销,否则的话,上下文切换的额外开销会显著降低指令模拟的效率。
可选的,由于协处理器模拟非法指令的速度较快,因此,若使用图4的方法会存在运算资源浪费的问题,因此,本发明实施例提供另一种指令执行的方法,该方法通过令CPU处于空等待的状态,减少了上下文切换的次数,避免了运算资源浪费。
如图5所示,为本发明实施例提供的另一种指令执行的方法流程图,该方法包括以下步骤:
步骤501,确定当前指令为非法指令,切换至内核态。
步骤502,CPU在内核态下将非法指令发送至协处理器。
步骤503,协处理器对非法指令进行解析,CPU在内核态下执行空等待。
本发明实施例中,由于协处理器模拟非法指令的速度较快,因此在协处理器对非法指令进行解析的时候,CPU并不会从内核态切换至用户态,而是执行空等待,不执行上下文切换,留在内核态,等待协处理器的解析结果。
步骤504,协处理器向CPU发送第一中断。
步骤505,CPU进入第一中断处理例程。
本发明实施例中,由于CPU先前留在内核态执行空等待,因此处理中断前不需要再度进入内核态;也由于空等待时,CPU上没有执行任何有意义的指令,因此处理中断前也不需要保存当前状态。从而,处理中断前也不需要上下文切换。
步骤506,CPU从协处理器获取解析结果。
步骤507,CPU根据解析结果获得解析结果对应的寄存器数据。
步骤508,CPU将寄存器数据发送至协处理器。
步骤509,协处理器对非法指令进行模拟,CPU在内核态下执行空等待。
本发明实施例中,由于协处理器模拟非法指令的速度较快,因此在协处理器对非法指令进行模拟的时候,CPU并不会从内核态切换至用户态,而是执行空等待,不执行上下文切换,留在内核态,等待协处理器的模拟结果。
步骤510,协处理器在得到模拟结果后,向CPU发送第二中断。
步骤511,CPU进入第二中断处理例程。
本发明实施例中,由于CPU先前留在内核态执行空等待,因此处理中断前不需要再度进入内核态;也由于空等待时,CPU上没有执行任何有意义的指令,因此处理中断前也不需要保存当前状态。从而,处理中断前也不需要上下文切换。
步骤512,CPU从协处理器获取模拟结果。
步骤513,CPU在内核态下获取模拟结果后,切换至用户态下继续执行后续指令。
上述步骤501至步骤513可以看出,通过让CPU在协处理器对非法指令进行解析的时候以及在协处理器对非法指令进行模拟的时候执行空等待,使得CPU不进行上下文切换,而是留在内核态,等待协处理器的处理结果,从而实现避免因CPU进行上下文切换而导致的运算资源的浪费,进而提高指令转译/指令模拟的效率。
可选的,由于在步骤503中协处理器对非法指令进行解析的时间较短,在步骤509中协处理器对非法指令进行模拟的时间较长,为了较充分的利用运算资源,本发明实施例提供另一种指令执行的方法,通过使CPU在步骤503中仍然保持空等待,但在步骤509中允许进行上下文切换从而出让运算资源给其他程序,运算资源可得到更充分的利用。
如图6所示,为本发明实施例提供的另一种指令执行的方法流程图,该方法包括以下步骤:
步骤601,CPU在用户态执行指令的过程中,若确定当前指令为非法指令,则切换至内核态。
步骤602,CPU在内核态下将非法指令发送至协处理器。
步骤603,协处理器对非法指令进行解析,CPU在内核态下执行空等待。
本发明实施例中,由于协处理器对非法指令进行解析的时间较短,速度较快,因此,为了避免CPU进行上下文切换导致运算资源浪费的问题,使得CPU在内核态下执行空等待,不执行上下文切换,留在内核态。
步骤604,协处理器向CPU发送第一中断。
步骤605,CPU进入第一中断处理例程。
本发明实施例中,由于CPU先前留在内核态执行空等待,因此处理中断前不需要再度进入内核态;也由于空等待时,CPU上没有执行任何有意义的指令,因此处理中断前也不需要保存当前状态。从而,处理中断前也不需要上下文切换。
步骤606,CPU从协处理器获取解析结果。
步骤607,CPU根据解析结果获得解析结果对应的寄存器数据。
步骤608,CPU将寄存器数据发送至协处理器。
步骤609,协处理器对非法指令进行模拟,CPU切换至用户态并执行第三指令。
本发明实施例中,由于协处理器对非法指令进行模拟的时间较长,为了较充分的利用运算资源,CPU在协处理器对非法指令进行模拟的时候,CPU切换至用户态并指令第三指令,第三指令是除当前指令之外的任一或者是多条指令,也就是说,CPU进行上下文切换使得出让运算资源给其他程序,从而实现充分的利用运算资源。
步骤610,协处理器在得到模拟结果后,向CPU发送第二中断。
步骤611,CPU基于第二中断切换至内核态,进入第二中断处理例程。
本发明实施例中,由于CPU先前留在内核态执行空等待,因此处理中断前不需要再度进入内核态;也由于空等待时,CPU上没有执行任何有意义的指令,因此处理中断前也不需要保存当前状态。从而,处理中断前也不需要上下文切换。
步骤612,CPU从协处理器获取模拟结果。
步骤613,CPU在内核态下获取模拟结果后,切换至用户态下继续执行后续指令。
上述步骤601至步骤613可以看出,通过使CPU在协处理器对非法指令进行解析的时候保持空等待,从而实现避免因CPU进行上下文切换而导致的运算资源的浪费,进而提高指令转译/指令模拟的效率。在协处理器对非法指令进行模拟的时候进行上下文切换使得出让运算资源给其他程序,从而实现充分的利用运算资源。
可选的,由于协处理器的内部寄存器总是能被 CPU 直接访问,因此,可以令CPU在等待协处理器的处理结果时,主动访问协处理器内部的寄存器来判断协处理器是否完成处理,这样就不需要协处理器向CPU发送中断了。
如图7所示,为本发明实施例提供的又一种指令执行的方法流程图,该方法包括以下步骤:
步骤701,确定当前指令为非法指令,切换至内核态。
步骤702,CPU在内核态下将非法指令发送至协处理器。
步骤703,协处理器对非法指令进行解析,CPU在内核态下执行第一忙等待。
本发明实施例中,在协处理器对非法指令进行解析的过程中,CPU通过在内核态下执行第一忙等待,其中第一忙等待用于CPU重复从协处理器的寄存器中查询是否有解析结果。
步骤704,CPU基于第一忙等待,从协处理器获取解析结果。
本发明实施例中,CPU基于第一忙等待,从而实现从协处理器中获取解析结果,然后CPU根据解析结果中非法指令对应的寄存器标识,获取非法指令对应的寄存器数据,然后将寄存器数据发送至协处理器中,从而便于后续协处理器根据寄存器数据对非法指令进行模拟。
步骤705,CPU根据解析结果获得解析结果对应的寄存器数据。
步骤706,CPU将寄存器数据发送至协处理器。
步骤707,协处理器对非法指令进行模拟,CPU执行第二忙等待。
本发明实施例中,在协处理器对非法指令进行模拟的过程中,CPU通过在内核态下执行第二忙等待,其中第二忙等待用于CPU重复从协处理器的寄存器中查询是否有模拟结果。
步骤708,CPU通过第二忙等待,从协处理器获取模拟结果。
步骤709,CPU在内核态下获取模拟结果后,切换至用户态下继续执行后续指令。
上述步骤701至步骤709可以看出,通过CPU执行第一忙等待,可以实现CPU通过重复对协处理器的寄存器进行查询从协处理器获得解析结果,从而代替协处理器得到解析结果后向CPU发送中断,减少中断次数。通过CPU执行第二忙等待,可以实现CPU通过重复对协处理器的寄存器进行查询从协处理器获得模拟结果,从而代替协处理器得到模拟结果后向CPU发送中断,减少中断次数。
在一种可能的情况下,CPU实现了影子寄存器,则CPU进入内核态时,内核可以不保存寄存器上下文,而直接切换到另一组影子寄存器,这样就避免了上下文切换的开销过大,并可提高指令转译/指令模拟的效率。需要说明的是,使用影子寄存器不是消除了上下文切换的需要,而只是降低了开销。在这种情况下,当协处理器可以通过直接读写影子寄存器来完成指令模拟时,可进一步提高指令模拟的效率。其中该协处理器可以是内部协处理器,也可以是外部协处理器,还可以是其他协处理器,在此不做限定。
如图8所示,为本发明实施例提供的一种指令执行的方法流程图,该方法包括以下步骤:
步骤801,CPU在用户态执行指令的过程中,若确定当前指令为非法指令,则切换至内核态。
步骤802,CPU在内核态下将非法指令发送至协处理器;
步骤803,协处理器对非法指令进行解析,CPU切换至用户态并执行第三指令。
本发明实施例中,协处理器接收到CPU发送的非法指令后,会对非法指令进行解析,而CPU在协处理器对非法指令进行解析的时候,会切换至用户态并执行第三指令,其中需要说明的是,第三指令为当前指令之外的任一指令或多条指令。
步骤804,协处理器根据解析结果,确定影子寄存器的标识,并读取对应的影子寄存器数据。
步骤805,协处理器对非法指令进行模拟。
本发明实施例中,若非法指令与影子寄存器有关联关系,协处理器可读写寄存器,则将模拟结果写入影子寄存器中。如果存在部分模拟结果需要内核处理,就在后续步骤中向内核提供。
步骤806,协处理器向CPU发送第三中断。
步骤807,CPU基于第三中断切换至内核态,进入第三中断处理例程。
步骤808,CPU从协处理器获取模拟结果。
步骤809,CPU在内核态下获取模拟结果后,切换至用户态下继续执行后续指令。
通过上述步骤801至809可以看出,将CPU处于空等待与影子寄存器相结合,不仅可以实现在协处理器对非法指令进行模拟的时候中进行上下文切换使得出让运算资源给其他程序,从而实现充分的利用运算资源,还可以实现内核工作量进一步减少,提升指令转译/指令模拟的效率。
如图9所示,为本发明实施例提供的一种指令执行的方法流程图,该方法包括以下步骤:
步骤901,CPU在用户态执行指令的过程中,若确定当前指令为非法指令,则切换至内核态。
步骤902,CPU在内核态下将非法指令发送至协处理器;
步骤903,协处理器对非法指令进行解析,CPU在内核态下执行空等待。
步骤904,协处理器根据解析结果,确定影子寄存器的标识,并读取对应的影子寄存器数据。
步骤905,协处理器对非法指令进行模拟。
步骤906,得到模拟结果后,向CPU发送第三中断。
步骤907,CPU进入第三中断处理例程。
步骤908,CPU从协处理器获取模拟结果。
步骤909,CPU在内核态下获取模拟结果后,切换至用户态下继续执行后续指令。
通过上述步骤901至步骤909可以看出,将CPU处于空等待与影子寄存器相结合,如果协处理器模拟非法指令的速度较快,若使用图8的方法,通过上下文切换将运算资源让予其它进程的收益较低,会存在运算资源浪费的问题,因此,通过令CPU处于空等待的状态,减少了上下文切换的次数,避免了运算资源浪费。
如图10所示,为本发明实施例提供的一种指令执行的方法流程图,该方法包括以下步骤:
步骤1001,CPU在用户态执行指令的过程中,若确定当前指令为非法指令,则切换至内核态。
步骤1002,CPU在内核态下将非法指令发送至协处理器;
步骤1003,协处理器对非法指令进行解析,CPU在内核态下执行第三忙等待。
步骤1004,协处理器根据解析结果,确定影子寄存器的标识,并读取对应的影子寄存器数据。
步骤1005,协处理器对非法指令进行模拟。
步骤1006,CPU基于第三忙等待,从协处理器获取模拟结果。
步骤1007,CPU在内核态下获取模拟结果后,切换至用户态下继续执行后续指令。
通过上述步骤1001至步骤1007可以看出,将CPU处于忙等待和影子寄存器相结合,可以实现CPU通过重复对协处理器的寄存器进行查询从协处理器获得模拟结果,从而代替协处理器得到模拟结果后向CPU发送中断。还可以实现内核工作量进一步减少,提升指令转译/指令模拟的效率。
本发明实施例中,指令执行方法可以分为两个阶段,其中第一阶段为CPU将非法指令发送至协处理器,协处理器接收了非法指令并对非法指令进行解析,并将非法指令的解析结果发送至CPU,CPU将解析结果对应的寄存器数据发送至协处理器。第二阶段是协处理器根据寄存器数据对非法指令进行模拟,并将非法指令的模拟结果发送至CPU,然后CPU获取模拟结果,然后CPU在内核态下获取模拟结果之后,切换至用户态继续执行后续指令。
参见图4、图5和图7可知,图4中的步骤401至步骤408对应的是指令执行方法的第一阶段。图4中的步骤409至步骤413对应的是指令执行方法的第二阶段。图5中的步骤501至步骤508对应的是指令执行方法的第一阶段。图5中的步骤509至步骤513对应的是指令执行方法的第二阶段。图7中的步骤701至步骤706对应的是指令执行方法的第一阶段。步骤706至步骤709对应的是指令执行方法的第二阶段。
可选的,图4对应的指令执行方法的第一阶段可以任意结合图5或图7中对应的指令执行方法的第二阶段。同理,图5的指令执行方法的第一阶段可以任意结合图4或图7中对应的指令执行方法的第二阶段。同理,图7的指令执行方法的第一阶段可以任意结合图4或图5中对应的指令执行方法的第二阶段。
可选的,协处理器还可以连接到其他的CPU组件以进行其他类型的加速。举个例子,若协处理器连接到MMU,则可直接经由 MMU 翻译虚拟地址,不再需要由内核代劳查询页表或 MMU(需要注意的是,对于 software-managed TLB 架构,如 MIPS,MMU 本身只能查询TLB,TLB 未命中时还是需要内核填充 TLB)。这个特性使得指令模拟协处理器也可用于前述的转译加速指令集扩展,具体步骤如下:首先需要定义一个指令集扩展,这些扩展的指令的目的是使用该协处理器进行虚拟地址翻译加速,然后CPU本身是不能译码这些指令的,在执行到这些指令的时候,会进入上述图2-7中的内核trap的流程,然后执行内核trap流程,然后协处理器查询MMU,然后协处理器将转译后的指令发送至CPU,然后CPU从内核态获取转译后的指令,然后CPU切换至用户态。
可选的,在 CPU 研发过程中,可能已经进行了早期流片。在这之后,有时还需要加入新指令,但在再次流片前,仍然需要对新指令进行大量测试。然而,如果完全使用 FPGA进行软件本地测试,其时钟频率非常影响效率。如果能将旧指令分派到已流片的 CPU 上,仅新指令分派到 FPGA 上,就可以获得极大的效率提升。
可选的,可以从尚未流片的新版本中剥离出新指令所需的模块烧写到 FPGA 中或者直接整体烧写,在其上运行一个能使其被作为协处理器加挂的程序,有需要时,增加一些能使其被作为协处理器加挂的电路,然后加挂到已流片的 CPU 上。通过这样的方式,旧指令仍在已流片的 CPU 上运行,由于其时钟频率可比 FPGA 快数倍到数十倍,可获得相当高的整体性能;新指令则被转移到 FPGA 上烧写的 CPU 上运行,非常便于调试。在这种情况下,在 FPGA 上执行新指令未必比内核直接模拟更快。然而,由于这种模拟关心的并不是速度,而是新的电路设计在软件本地测试下的正确性,且整个测试平台的整体速度比纯 FPGA测试平台更快。
基于相同的技术构思,本申请实施例提供一种指令执行装置的结构示意图,如图11所示,该装置1100包括:第一处理单元1101在用户态执行指令的过程中,若确定当前指令为非法指令,则切换至内核态;第一处理单元1101在内核态下将非法指令发送至第二处理单元1102;第二处理单元1102对非法指令进行模拟运行,得到模拟结果;第一处理单元1101在内核态下获取模拟结果后,切换至用户态下继续执行后续指令。
可选的,第二处理单元1102对非法指令进行解析,得到解析结果;第一处理单元1101在内核态下获得解析结果对应的寄存器数据,并将寄存器数据发送至第二处理单元1102;第二处理单元1102通过寄存器数据进行非法指令的模拟运行,得到模拟结果。
可选的,在第二处理单元1102对非法指令进行解析的过程中,第一处理单元1101切换至用户态并执行第一指令;第一指令为当前指令之外的任一或多条指令;第二处理单元1102向第一处理单元1101发送第一中断;第一处理单元1101基于第一中断切换至内核态。
可选的,在第二处理单元1102对非法指令进行解析的过程中,第一处理单元1101在内核态下执行空等待;第二处理单元1102向第一处理单元1101发送第一中断。
可选的,在第二处理单元1102对非法指令进行解析的过程中,第一处理单元1101在内核态下执行第一忙等待,第一忙等待用于从协处理获得解析结果。
可选的,在第二处理单元1102对非法指令进行模拟的过程中,第一处理单元1101切换至用户态并执行第二指令;第二指令为当前指令之外的任一或多条指令;第二处理单元1102向第一处理单元1101发送第二中断;第一处理单元1101基于第二中断切换至内核态。
可选的,在第二处理单元1102对非法指令进行模拟的过程中,第一处理单元1101在内核态下执行空等待;第二处理单元1102向第一处理单元1101发送第二中断。
可选的,在第二处理单元1102对非法指令进行模拟的过程中,第一处理单元1101在内核态下执行第二忙等待,第二忙等待用于从第二处理单元1102获得模拟结果。
可选的,第一中断和第二中断是通过同一个向量化中断实现的,或通过不同的向量化中断实现。
可选的,第二处理单元1102对非法指令进行解析,得到解析结果;第二处理单元1102根据解析结果,获取解析结果对应的影子寄存器数据;第二处理单元1102通过影子寄存器数据进行非法指令的模拟运行,得到模拟结果。
可选的,若非法指令与影子寄存器有关联关系,则将模拟结果写入影子寄存器中。
基于相同的技术构思,本申请实施例还提供了一种计算机设备,如图12所示,计算机设备1200包括至少一个处理器1201,以及与至少一个处理器连接的存储器1202,本申请实施例中不限定处理器1201与存储器1202之间的具体连接介质,图12中处理器1201和存储器1202之间通过总线连接为例。总线可以分为地址总线、数据总线、控制总线等。
在本申请实施例中,存储器1202存储有可被至少一个处理器1201执行的指令,至少一个处理器1201通过执行存储器1202存储的指令,可以执行前述的指令执行方法中所包括的步骤。
其中,处理器1201是计算设备的控制中心,可以利用各种接口和线路连接计算设备的各个部分,通过运行或执行存储在存储器1202内的指令以及调用存储在存储器1202内的数据,从而实现数据处理。可选的,处理器1201可包括一个或多个处理单元,处理器1201可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理下发指令。可以理解的是,上述调制解调处理器也可以不集成到处理器1201中。在一些实施例中,处理器1201和存储器1202可以在同一芯片上实现,在一些实施例中,它们也可以在独立的芯片上分别实现。
处理器1201可以是通用处理器,例如中央处理器(CPU)、数字信号处理器、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本申请实施例中公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合获取数据的方法实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
存储器1202作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块。存储器1202可以包括至少一种类型的存储介质,例如可以包括闪存、硬盘、多媒体卡、卡型存储器、随机访问存储器(Random AccessMemory,RAM)、静态随机访问存储器(Static Random Access Memory,SRAM)、可编程只读存储器(Programmable Read Only Memory,PROM)、只读存储器(Read Only Memory,ROM)、带电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,EEPROM)、磁性存储器、磁盘、光盘等等。存储器1202是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。本申请实施例中的存储器1202还可以是电路或者其它任意能够实现存储功能的装置,用于存储程序指令和/或数据。
基于相同的技术构思,本申请实施例还提供了一种计算机可读存储介质,其存储有可由计算设备执行的计算机程序,当程序在电子设备上运行时,使得电子设备执行上述指令执行方法的步骤。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (12)
1.一种指令执行方法,其特征在于,包括:
CPU在用户态执行指令的过程中,若确定当前指令为非法指令,则切换至内核态;
所述CPU在内核态下将所述非法指令发送至协处理器;
所述协处理器对所述非法指令进行解析,在所述协处理器对所述非法指令进行解析的过程中,所述CPU切换至用户态并执行第一指令;所述第一指令为所述当前指令之外的任一或多条指令;
在所述协处理器得到解析结果之后,所述协处理器向所述CPU发送第一中断;
所述CPU基于所述第一中断切换至内核态;
所述CPU在内核态下获得所述解析结果对应的寄存器数据,并将所述寄存器数据发送至所述协处理器;
所述协处理器通过所述寄存器数据进行所述非法指令的模拟运行,得到模拟结果;
所述CPU在内核态下获取所述模拟结果后,切换至用户态下继续执行后续指令。
2.如权利要求1所述的方法,其特征在于,还包括:
在所述协处理器对所述非法指令进行模拟的过程中,所述CPU切换至用户态并执行第二指令;所述第二指令为所述当前指令之外的任一或多条指令;
所述协处理器得到模拟结果之后,所述CPU在内核态下获取所述模拟结果之前,还包括:
所述协处理器向所述CPU发送第二中断;
所述CPU基于所述第二中断切换至内核态。
3.如权利要求1所述的方法,其特征在于,还包括:
在所述协处理器对所述非法指令进行模拟的过程中,所述CPU在内核态下执行空等待;
所述协处理器得到模拟结果之后,所述CPU在内核态下获取所述模拟结果之前,还包括:
所述协处理器向所述CPU发送第二中断。
4.如权利要求1所述的方法,其特征在于,还包括:
在所述协处理器对所述非法指令进行模拟的过程中,所述CPU在内核态下执行第二忙等待,所述第二忙等待用于从所述协处理器获得模拟结果。
5.一种指令执行方法,其特征在于,包括:
CPU在用户态执行指令的过程中,若确定当前指令为非法指令,则切换至内核态;
所述CPU在内核态下将所述非法指令发送至协处理器;
所述协处理器对所述非法指令进行解析,所述CPU在内核态下执行空等待;
在所述协处理器得到解析结果之后,所述协处理器向所述CPU发送第一中断;
所述CPU在内核态下获得所述解析结果对应的寄存器数据,并将所述寄存器数据发送至所述协处理器;
所述协处理器通过所述寄存器数据进行所述非法指令的模拟运行,得到模拟结果;
所述CPU在内核态下获取所述模拟结果后,切换至用户态下继续执行后续指令。
6.如权利要求5所述的方法,其特征在于,还包括:
在所述协处理器对所述非法指令进行模拟的过程中,所述CPU切换至用户态并执行第二指令;所述第二指令为所述当前指令之外的任一或多条指令;
所述协处理器得到模拟结果之后,所述CPU在内核态下获取所述模拟结果之前,还包括:
所述协处理器向所述CPU发送第二中断;
所述CPU基于所述第二中断切换至内核态。
7.如权利要求5所述的方法,其特征在于,还包括:
在所述协处理器对所述非法指令进行模拟的过程中,所述CPU在内核态下执行空等待;
所述协处理器得到模拟结果之后,所述CPU在内核态下获取所述模拟结果之前,还包括:
所述协处理器向所述CPU发送第二中断。
8.如权利要求5所述的方法,其特征在于,还包括:
在所述协处理器对所述非法指令进行模拟的过程中,所述CPU在内核态下执行第二忙等待,所述第二忙等待用于从所述协处理器获得模拟结果。
9.一种指令执行装置,其特征在于,包括:
第一处理单元在用户态执行指令的过程中,若确定当前指令为非法指令,则切换至内核态;
所述第一处理单元在内核态下将所述非法指令发送至第二处理单元;所述第二处理单元对所述非法指令进行解析,在所述第二处理单元对所述非法指令进行解析的过程中,所述第一处理单元切换至用户态并执行第一指令;所述第一指令为所述当前指令之外的任一或多条指令;
在所述第二处理单元得到解析结果之后,所述第二处理单元向所述第一处理单元发送第一中断;
所述第一处理单元基于所述第一中断切换至内核态;
所述第一处理单元在内核态下获得所述解析结果对应的寄存器数据,并将所述寄存器数据发送至所述第二处理单元;
所述第二处理单元通过所述寄存器数据进行所述非法指令的模拟运行,得到模拟结果;
所述第一处理单元在内核态下获取所述模拟结果后,切换至用户态下继续执行后续指令。
10.一种指令执行装置,其特征在于,包括:
第一处理单元在用户态执行指令的过程中,若确定当前指令为非法指令,则切换至内核态;
所述第一处理单元在内核态下将所述非法指令发送至第二处理单元;所述第二处理单元对所述非法指令进行解析,所述第一处理单元在内核态下执行空等待;
在所述第二处理单元得到解析结果之后,所述第二处理单元向所述第一处理单元发送第一中断;
所述第一处理单元在内核态下获得所述解析结果对应的寄存器数据,并将所述寄存器数据发送至所述第二处理单元;
所述第二处理单元通过所述寄存器数据进行所述非法指令的模拟运行,得到模拟结果;
所述第一处理单元在内核态下获取所述模拟结果后,切换至用户态下继续执行后续指令。
11.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1~4或5~8任一所述方法的步骤。
12.一种计算机可读存储介质,其特征在于,其存储有可由计算机设备执行的计算机程序,当所述程序在计算机设备上运行时,使得所述计算机设备执行权利要求1~4或5~8任一所述方法的步骤。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410236005.8A CN118069222A (zh) | 2023-10-24 | 2023-10-24 | 一种指令执行方法及装置 |
CN202311378936.3A CN117112029B (zh) | 2023-10-24 | 2023-10-24 | 一种指令执行方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311378936.3A CN117112029B (zh) | 2023-10-24 | 2023-10-24 | 一种指令执行方法及装置 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410236005.8A Division CN118069222A (zh) | 2023-10-24 | 2023-10-24 | 一种指令执行方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117112029A CN117112029A (zh) | 2023-11-24 |
CN117112029B true CN117112029B (zh) | 2024-03-12 |
Family
ID=88800585
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410236005.8A Pending CN118069222A (zh) | 2023-10-24 | 2023-10-24 | 一种指令执行方法及装置 |
CN202311378936.3A Active CN117112029B (zh) | 2023-10-24 | 2023-10-24 | 一种指令执行方法及装置 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410236005.8A Pending CN118069222A (zh) | 2023-10-24 | 2023-10-24 | 一种指令执行方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (2) | CN118069222A (zh) |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101387969A (zh) * | 2008-10-16 | 2009-03-18 | 上海交通大学 | 软硬件协同设计的动态二进制翻译方法 |
CN101685391A (zh) * | 2002-01-04 | 2010-03-31 | 微软公司 | 管理计算系统中协处理器的计算资源的方法和系统 |
CN106325819A (zh) * | 2015-06-17 | 2017-01-11 | 华为技术有限公司 | 计算机指令处理方法、协处理器和系统 |
CN109726549A (zh) * | 2017-09-29 | 2019-05-07 | 英特尔公司 | 用于采用处理器沙箱支持的不可信代码执行的技术 |
CN113939805A (zh) * | 2020-04-29 | 2022-01-14 | 华为技术有限公司 | 一种进程间通信的方法及系统 |
CN114077379A (zh) * | 2020-08-19 | 2022-02-22 | 华为技术有限公司 | 一种计算机设备、异常处理的方法以及中断处理的方法 |
CN114721719A (zh) * | 2022-04-20 | 2022-07-08 | 上海道客网络科技有限公司 | 一种在集群中容器化部署异构应用的方法和系统 |
CN116302549A (zh) * | 2023-03-24 | 2023-06-23 | 郑州云海信息技术有限公司 | Ai视频加速器的硬件资源获取方法、装置、设备及介质 |
CN116866449A (zh) * | 2023-07-08 | 2023-10-10 | 浙江大学 | 用于提升应用网络性能的toe加速系统 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8789042B2 (en) * | 2010-09-27 | 2014-07-22 | Mips Technologies, Inc. | Microprocessor system for virtual machine execution |
US8239620B2 (en) * | 2010-09-27 | 2012-08-07 | Mips Technologies, Inc. | Microprocessor with dual-level address translation |
JP5870994B2 (ja) * | 2011-03-04 | 2016-03-01 | 日本電気株式会社 | デッドロック回避方法、デッドロック回避機構 |
-
2023
- 2023-10-24 CN CN202410236005.8A patent/CN118069222A/zh active Pending
- 2023-10-24 CN CN202311378936.3A patent/CN117112029B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101685391A (zh) * | 2002-01-04 | 2010-03-31 | 微软公司 | 管理计算系统中协处理器的计算资源的方法和系统 |
CN101387969A (zh) * | 2008-10-16 | 2009-03-18 | 上海交通大学 | 软硬件协同设计的动态二进制翻译方法 |
CN106325819A (zh) * | 2015-06-17 | 2017-01-11 | 华为技术有限公司 | 计算机指令处理方法、协处理器和系统 |
CN109726549A (zh) * | 2017-09-29 | 2019-05-07 | 英特尔公司 | 用于采用处理器沙箱支持的不可信代码执行的技术 |
CN113939805A (zh) * | 2020-04-29 | 2022-01-14 | 华为技术有限公司 | 一种进程间通信的方法及系统 |
CN114077379A (zh) * | 2020-08-19 | 2022-02-22 | 华为技术有限公司 | 一种计算机设备、异常处理的方法以及中断处理的方法 |
CN114721719A (zh) * | 2022-04-20 | 2022-07-08 | 上海道客网络科技有限公司 | 一种在集群中容器化部署异构应用的方法和系统 |
CN116302549A (zh) * | 2023-03-24 | 2023-06-23 | 郑州云海信息技术有限公司 | Ai视频加速器的硬件资源获取方法、装置、设备及介质 |
CN116866449A (zh) * | 2023-07-08 | 2023-10-10 | 浙江大学 | 用于提升应用网络性能的toe加速系统 |
Non-Patent Citations (1)
Title |
---|
基于Trustzone的强安全需求环境下可信代码执行方案;张英骏;冯登国;秦宇;杨波;;计算机研究与发展(第10期);第2224-2237页 * |
Also Published As
Publication number | Publication date |
---|---|
CN117112029A (zh) | 2023-11-24 |
CN118069222A (zh) | 2024-05-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5838978A (en) | System and method of using annotations to optimize dynamically translated code in the presence of signals | |
KR101296025B1 (ko) | 컴퓨터 시스템에서의 네스티드 가상화 성능의 개선 | |
US7809547B2 (en) | Host computer system emulating target system legacy software and providing for incorporating more powerful application program elements into the flow of the legacy software | |
US11604643B2 (en) | System for executing new instructions and method for executing new instructions | |
US9785506B2 (en) | Reducing likelihood of concurrency error in virtualized computing environment | |
US11803387B2 (en) | System for executing new instructions and method for executing new instructions | |
US20120198428A1 (en) | Using Aliasing Information for Dynamic Binary Optimization | |
US7823140B2 (en) | Java bytecode translation method and Java interpreter performing the same | |
JPH0782441B2 (ja) | シミユレーシヨン方法 | |
US11625247B2 (en) | System for executing new instructions and method for executing new instructions | |
US20150186170A1 (en) | Implementing a jump instruction in a dynamic translator that uses instruction code translation and just-in-time compilation | |
US8887139B2 (en) | Virtual system and method of analyzing operation of virtual system | |
US11645068B2 (en) | Method for implementing function jump, apparatus, and computer storage medium | |
EP3049921A1 (en) | Methods and apparatus to validate translated guest code in a dynamic binary translator | |
WO2022237098A1 (zh) | 一种异构程序执行方法、装置、计算设备及可读存储介质 | |
CN115543547B (zh) | 一种异构虚拟化平台中虚拟机的迁移方法及系统 | |
Wang et al. | Dynamic translation optimization method based on static pre-translation | |
CN117112029B (zh) | 一种指令执行方法及装置 | |
US10133655B1 (en) | Emulation of target system using JIT compiler and bypassing translation of selected target code blocks | |
US20050091022A1 (en) | Ultra fast multi-processor system simulation using dedicated virtual machines | |
US11188361B1 (en) | Cross-architecture software distribution using a virtual instruction set architecture | |
CN113849397A (zh) | 执行引擎、虚拟机、相关装置和相关方法 | |
Lv et al. | Armiss: An instruction set simulator for the arm architecture | |
CN117573419B (zh) | 一种页面异常处理方法及装置 | |
Faravelon | Acceleration of memory accesses in dynamic binary translation |
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 |