CN107179935A - 一种指令执行方法及虚拟机 - Google Patents
一种指令执行方法及虚拟机 Download PDFInfo
- Publication number
- CN107179935A CN107179935A CN201610139205.7A CN201610139205A CN107179935A CN 107179935 A CN107179935 A CN 107179935A CN 201610139205 A CN201610139205 A CN 201610139205A CN 107179935 A CN107179935 A CN 107179935A
- Authority
- CN
- China
- Prior art keywords
- instruction
- related information
- change
- numerical value
- information
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
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/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/211—Schema design and management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Executing Machine-Instructions (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种指令执行方法及虚拟机,能够减少不必要的指令执行次数,提高执行效率,本发明实施例方法包括:确定第一指令对应的第一关联寄存器,所述第一指令为虚拟机中循环体的指令,所述第一关联寄存器中存储有第一关联信息,所述第一关联信息包含位置变化信息、数值变化信息中至少一种;对所述第一指令以及所述第一关联信息进行绑定;当所述第一指令将被执行时,判断所述第一关联信息是否发生变化,若是,则执行所述第一指令。
Description
技术领域
本发明涉及计算机领域,尤其涉及一种指令执行方法及虚拟机。
背景技术
基于虚拟机的执行引擎是数据库执行引擎的一种实现方法,数据库首先解析结构化查询语言(英文全称:Structured Query Language,英文缩写:SQL)语句,生成语法树,根据语法树生成虚拟机字节码bytecode,数据库执行引擎执行bytecode来完成数据查询。从语法树生成bytecode一般采用通用的编译技术,将数据库的投影、选择、连接、排序、分组以及去重等操作转化为操作码、顺序执行、比较、条件跳转、循环等指令。数据库虚拟机融合数据库技术和编译技术,很多编译器优化技术需要结合数据库自身特点才能实现。
现有的一种编译器优化技术的思想是将循环体内没有变化的指令调整到循环体外。
但是,针对循环体外的指令,当指令将被执行时,指令每次都会被执行,但是可能指令每次执行的输出结果是不变的,由此指令实质上不需要每次都执行,因此会增加不必要的指令执行次数,执行效率不高。
发明内容
本发明实施例提供了一种指令执行方法及虚拟机,能够减少不必要的指令执行次数,提高执行效率。
有鉴于此,本发明第一方面提供了一种指令执行方法,包括:
虚拟机中循环体的第一指令在执行之前,需要对影响第一指令的输出结果的第一关联信息进行绑定,第一关联信息存储在第一关联寄存器中,第一关联信息包含位置变化信息、数值变化信息中至少一种;当第一指令将被执行时,判断第一关联信息是否发生变化,若是,则执行第一指令。
其中,第一关联信息记录着第一关联寄存器的数值和位置的变化。
其有益效果是:第一指令需要与位置变化信息和/或数值变化信息进行绑定,在第一指令每次执行之前,需要先判断位置和/或数值是否发生变化,只有确定位置和数值至少一个发生变化,第一指令才会执行,相对于现有技术中第一指令可能每次都会执行的方案,本发明中第一指令的每次执行基于指令通知机制,因此本发明能够减少不必要的指令执行次数,提高执行效率。
结合本发明第一方面,本发明第一方面的第一实施方式包括:
由于第一关联信息包含位置变化信息、数值变化信息中至少一种,所以第一关联信息可以分为三种,若第一关联信息包含位置变化信息,则可以通过位置变化信息判断第一关联寄存器的位置是否发生变化,若是,则确定第一关联信息发生变化;若第一关联信息包含数值变化信息,则根据数值变化信息判断第一关联寄存器的数值是否发生变化,若是,则确定第一关联信息发生变化;若第一关联信息包含位置变化信息和数值变化信息,则根据位置变化信息和数值变化信息判断第一关联寄存器的位置和数值中的至少一个是否发生变化,若是,则确定第一关联信息发生变化。
其有益效果是:针对如何判断第一关联信息是否发生变化进行了相应的说明,完善了本发明的技术方案。
结合本发明第一方面,本发明第一方面的第二实施方式包括:
在执行第一指令后,当第二指令将被执行时,若检测到第一指令的输出结果改变了第二关联寄存器的位置和/或数值,且检测到第二指令与第二关联信息绑定,则执行第二指令。
结合本发明第一方面的第二实施方式,本发明第一方面的第三实施方式包括:
在执行第二指令后,当第三指令将被执行时,若检测到第二指令的输出结果改变了第三关联寄存器的位置和/或数值,且检测到第三指令与第三关联信息绑定,则对第三指令以及第三关联信息取消绑定,且对第三指令以及第二关联信息进行绑定,并执行第三指令。
其有益效果是:第一指令、第二指令以及第三指令是一种级联依赖关系,第三指令不一定要与第三关联信息绑定,可以根据实际场景绑定影响第三指令的输出结果的间接关联信息,由此,第三指令可以与第二关联信息进行绑定。
结合本发明第一方面,本发明第一方面的第四实施方式包括:
判断第一关联信息是否发生变化,若否,则不执行第一指令。
结合本发明第一方面的第四实施方式,本发明第一方面的第五实施方式包括:
当虚拟机执行到第一指令时,发现第一指令不需要执行,仍然需要检测第一指令在之前一次执行的时候跳转的指令位置,并将第一指令跳转到指令位置对应的指令,其中,第一指令中存储有第一指令在之前一次执行的时候跳转的指令位置。
其有益效果是:在第一指令为跳转指令的情况下,即使虚拟机确定第一指令不需要指令,也要检查第一指令在之前一次执行的时候的指令位置,并将第一指令跳转到指令位置对应的指令。由此,提供了一种跳转指令的处理方法,完善了本发明的技术方案。
结合本发明第一方面,本发明第一方面的第一实施方式,本发明第一方面的第二实施方式,本发明第一方面的第三实施方式,本发明第一方面的第六实施方式包括:
在一些场景下,对于被执行的概率总是很高的指令,应该使其总被执行,而不需要依赖其他指令的通知,所以若第一指令将被执行的次数为M,第一指令实际执行的次数为N,N/M不小于预设阈值,则对第一指令以及第一关联信息取消绑定,将第一指令设置为可执行指令,并保存第一指令为可执行指令的状态不变。
结合本发明第一方面,本发明第一方面的第一实施方式,本发明第一方面的第二实施方式,本发明第一方面的第三实施方式,本发明第一方面的第七实施方式包括:
对于一些本身执行开销很小的指令,例如整数相加指令、无条件跳转指令,也可以使其总被执行,因为这些指令即使不执行也不会带来很大的性能提升,而将这些指令与关联信息进行绑定也会有一定程度的开销。由此:若第一指令为整数相加指令或无条件跳转指令,则将第一指令设置为可执行指令,并保持第一指令为可执行指令的状态不变。
有鉴于此,本发明第二方面提供了一种虚拟机,包括:
确定单元,用于确定第一指令对应的第一关联寄存器,第一指令为虚拟机中循环体的指令,第一关联寄存器中存储有第一关联信息,第一关联信息包含位置变化信息、数值变化信息中至少一种;
绑定单元,用于对第一指令以及第一关联信息进行绑定;
判断单元,用于当第一指令将被执行时,判断第一关联信息是否发生变化;
第一执行单元,用于若判断单元判断第一关联信息发生变化,则执行第一指令。
其中,第一关联信息记录着第一关联寄存器的数值和位置的变化。
其有益效果是:第一指令需要与位置变化信息和/或数值变化信息进行绑定,在第一指令每次执行之前,需要先判断位置和/或数值是否发生变化,只有确定位置和数值至少一个发生变化,第一指令才会执行,相对于现有技术中第一指令可能每次都会执行的方案,本发明中第一指令的每次执行基于指令通知机制,因此本发明能够减少不必要的指令执行次数,提高执行效率。
结合本发明第二方面,本发明第二方面的第一实施方式包括:
由于第一关联信息包含位置变化信息、数值变化信息中至少一种,所以第一关联信息可以分为三种,若第一关联信息包含位置变化信息,则判断单元,具体用于根据位置变化信息判断第一关联寄存器的位置是否发生变化;
确定单元,还用于若判断单元判断第一关联寄存器的位置发生变化,则确定第一关联信息发生变化;或者,
若第一关联信息包含数值变化信息,则判断单元,具体用于根据数值变化信息判断第一关联寄存器的数值是否发生变化;
确定单元,还用于若判断单元判断第一关联寄存器的数值发生变化,则确定第一关联信息发生变化;或者,
若第一关联信息包含位置变化信息和数值变化信息,则判断单元,具体用于根据位置变化信息和数值变化信息判断第一关联寄存器的位置和数值中的至少一个是否发生变化;
确定单元,还用于若判断单元判断第一关联寄存器的位置和数值中的至少一个发生变化,则确定第一关联信息发生变化。
其有益效果是:针对如何判断第一关联信息是否发生变化进行了相应的说明,完善了本发明的技术方案。
结合本发明第二方面,本发明第二方面的第二实施方式包括:
所述虚拟机还包括:
第二执行单元,用于当第二指令将被执行时,若检测到所述第一指令的输出结果改变了第二关联寄存器的位置和/或数值,且检测到所述第二指令与第二关联信息绑定,则执行所述第二指令。
结合本发明第二方面的第二实施方式,本发明第二方面的第三实施方式包括:
所述虚拟机还包括:
第三执行单元,用于当第三指令将被执行时,若检测到所述第二指令的输出结果改变了第三关联寄存器的位置和/或数值,且检测到所述第三指令与第三关联信息绑定,则对所述第三指令以及所述第三关联信息取消绑定,且对所述第三指令以及所述第二关联信息进行绑定,并执行所述第三指令。
其有益效果是:第一指令、第二指令以及第三指令是一种级联依赖关系,第三指令不一定要与第三关联信息绑定,可以根据实际场景绑定影响第三指令的输出结果的间接关联信息,由此,第三指令可以与第二关联信息进行绑定。
结合本发明第二方面,本发明第二方面的第四实施方式包括:
所述虚拟机还包括:
第四执行单元,用于若判断单元判断所述第一关联信息发生变化,则不执行所述第一指令。
结合本发明第二方面的第四实施方式,本发明第二方面的第五实施方式包括:
所述虚拟机还包括:
跳转单元,用于若所述第一指令为跳转指令,则检测所述第一指令在之前一次执行时跳转的指令位置,并将所述第一指令跳转到所述指令位置对应的指令,其中,所述第一指令中存储有所述第一指令在之前一次执行时跳转的指令位置。
结合本发明第二方面,本发明第二方面的第一实施方式,本发明第二方面的第二实施方式,本发明第二方面的第三实施方式,本发明第二方面的第六实施方式包括:
在一些场景下,对于被执行的概率总是很高的指令,应该使其总被执行,而不需要依赖其他指令的通知;
由此,所述虚拟机还包括:
第一处理单元,用于若所述第一指令将被执行的次数为M,所述第一指令的执行次数为N,所述N/M不小于预设阈值,则对所述第一指令以及所述第一关联信息取消绑定,将所述第一指令设置为可执行指令,并保持所述第一指令为可执行指令的状态不变。
结合本发明第二方面,本发明第二方面的第一实施方式,本发明第二方面的第二实施方式,本发明第二方面的第三实施方式,本发明第二方面的第七实施方式包括:
对于一些本身执行开销很小的指令,例如整数相加指令、无条件跳转指令,也可以使其总被执行,因为这些指令即使不执行也不会带来很大的性能提升,而将这些指令与关联信息进行绑定也会有一定程度的开销;
由此,所述虚拟机还包括:
第二处理单元,用于若所述第一指令为整数相加指令或无条件跳转指令,则将所述第一指令设置为可执行指令,并保持所述第一指令为可执行指令的状态不变。
从以上技术方案可以看出,本发明实施例具有以下优点:本发明利用了指令通知机制,即第一指令需要与位置变化信息和/或数值变化信息进行绑定,在第一指令每次执行之前,需要先判断位置和/或数值是否发生变化,只有确定位置和数值至少一个发生变化,第一指令才会执行,相对于现有技术中第一指令可能每次都会执行的方案,本发明中第一指令的每次执行基于指令通知机制,因此本发明能够减少不必要的指令执行次数,提高执行效率。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例虚拟机运行环境示意图;
图2为本发明实施例指令执行方法流程示意图;
图3为本发明实施例虚拟机指令、游标和寄存器的绑定流程示意图;
图4为本发明实施例指令跳转流程示意图;
图5为本发明实施例指令间接绑定流程示意图;
图6为本发明实施例虚拟机的一个结构示意图;
图7为本发明实施例虚拟机的另一个结构示意图;
图8为本发明实施例服务器的结构示意图。
具体实施方式
本发明实施例提供了一种指令执行方法及虚拟机,能够减少不必要的指令执行次数,提高执行效率。
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
为了便于理解本发明实施例,下面对本发明实施例指令执行方法的虚拟机运行环境进行说明,如下:
本发明利用了指令通知机制,即每个指令需要识别影响指令的输出结果的影响因素,当其影响因素没有改变的时候,则指令不需要执行。同时,每个指令需要订阅影响该指令的输出结果的其他指令变化,当第一指令执行完成后,需要检查是否有第二指令订阅了第一指令的变化。为了使虚拟机支持指令通知机制,需要在虚拟机运行环境中增加各种订阅信息,图1显示了本发明需要的虚拟机运行环境,以数据库虚拟机举例说明,本发明还可以应用于其他各种虚拟机中。
图1显示了虚拟机运行环境中包含的各种运行时信息,包括数据寄存器、游标、指令等各种信息,通常数据库虚拟机中都会包含这些运行时信息,而指令信息中包含输入输出寄存器信息。本发明的关键在于如何实现指令的订阅和通知,下面将结合具体实施例对本发明指令执行方法进行描述。
请参阅图2,本发明实施例中指令执行方法的一个实施例包括:
101、确定第一指令对应的第一关联寄存器,该第一指令为虚拟机中循环体的指令,该第一关联寄存器中存储有第一关联信息,该第一关联信息包含位置变化信息、数值变化信息中至少一种;
本实施例中,虚拟机确定虚拟机中循环体中的每个指令对应的关联寄存器。
需要说明的是,每个关联寄存器中存储有关联信息,与关联寄存器相关联的指令的输出结果受到关联信息的影响,关联信息中包含着位置变化信息、数值变化信息中至少一种,位置变化信息为游标的位置发生变化导致的变化信息,数值变化信息为寄存器的数值发生变化导致的变化信息。
可以理解的是,第一指令的输出结果可以与游标的位置变化有关联,可以与寄存器的数值变化有关联,也可以同时与游标的位置变化和寄存器的数值变化有关联。
102、对第一指令以及第一关联信息进行绑定;
在确定第一指令对应的第一关联寄存器后,虚拟机对第一指令以及第一关联信息进行绑定。
需要说明的是,第一指令与第一关联信息进行绑定,相当于若第一关联信息发生变化,第一指令能够知道第一关联信息发生变化,第一指令订阅了第一关联信息。
103、当第一指令将被执行时,判断第一关联信息是否发生变化,若是,则执行第一指令。
在对第一指令以及第一关联信息进行绑定后,当第一指令将被执行时,判断第一关联信息是否发生变化,若是,则执行第一指令。
本实施例中,本发明利用了指令通知机制,即第一指令需要与位置变化信息和/或数值变化信息进行绑定,在第一指令每次执行之前,需要先判断位置和/或数值是否发生变化,只有确定位置和数值至少一个发生变化,第一指令才会执行,相对于现有技术中第一指令可能每次都会执行的方案,本发明中第一指令的每次执行基于指令通知机制,因此本发明能够减少不必要的指令执行次数,提高执行效率。
需要说明的是,若第一关联信息包含位置变化信息,则判断第一关联信息是否发生变化包括:
根据位置变化信息判断第一关联寄存器的位置是否发生变化,若是,则确定第一关联信息发生变化;或者,
若第一关联信息包含数值变化信息,则判断第一关联信息是否发生变化包括:
根据数值变化信息判断第一关联寄存器的数值是否发生变化,若是,则确定第一关联信息发生变化;或者,
若第一关联信息包含位置变化信息和数值变化信息,则判断第一关联信息是否发生变化包括:
根据位置变化信息和数值变化信息判断第一关联寄存器的位置和数值中的至少一个是否发生变化,若是,则确定第一关联信息发生变化。
需要说明的是,在执行完第一指令后,第一指令的输出结果可能会改变第二关联寄存器的数值或者位置,正好第二指令的输出结果受到第二关联寄存器的影响,由此,在本发明的一些实施例中,执行第一指令后,还包括:
当第二指令将被执行时,若检测到第一指令的输出结果改变了第二关联寄存器的位置和/或数值,且检测到第二指令与第二关联信息绑定,则执行第二指令。
需要说明的是,在执行完第二指令后,第二指令的输出结果可能会改变第三关联寄存器的数值或者位置,正好第三指令的输出结果受到第三关联寄存器的影响,由此,在本发明的一些实施例中,执行第二指令后,还包括:
当第三指令将被执行时,若检测到第二指令的输出结果改变了第三关联寄存器的位置和/或数值,且检测到第三指令与第三关联信息绑定,则对第三指令以及第三关联信息取消绑定,且对第三指令以及第二关联信息进行绑定,并执行第三指令。
需要说明的是,上述第一指令、第二指令、以及第三指令是一种级联依赖关系,第三指令不一定要与第三关联信息绑定,可以根据实际场景绑定影响第三指令的输出结果的间接关联信息,由此,第三指令可以与第二关联信息进行绑定。
需要说明的是,虽然所有的指令都可以根据自己的输出结果来绑定关联信息,但是指令不一定非要根据关联信息执行。在实际应用中,可以评估指令被执行的概率,对于执行概率很高的指令,应该使其总被执行,而不需要依赖关联信息。另外,对于一些本身执行开销很小的指令,例如:整数相加指令、无条件跳转指令,也可以使其总是执行,因为这些指令即使不执行也不会带来很大的性能提升,相反,绑定关联信息也会有一定程度的开销。由此,在本发明的一些实施例中,执行第一指令后,还包括:
若第一指令将被执行的次数为M,第一指令的执行次数为N,N/M不小于预设阈值,则对第一指令以及第一关联信息取消绑定,将第一指令设置为可执行指令,并保持第一指令为可执行指令的状态不变。
需要说明的是,上述预设阈值的取值可以为0.8,还可以为其他合理数值,此处不作限定。
同理,确定第一指令对应的第一关联寄存器,之后包括:
若第一指令为整数相加指令或无条件跳转指令,则将第一指令设置为可执行指令,并保持述第一指令为可执行指令的状态不变。
同参阅图1,可以理解的是,若判断第一关联信息未发生变化,则不需要执行第一指令。
需要说明的是,第一指令可能为跳转指令,若第一指令为跳转指令,即使第一指令不需要执行,也需要在执行到第一指令后,进行跳转操作。由此,在本发明的一些实施例中,不执行第一指令,之后包括:
若第一指令为跳转指令,则检测第一指令在之前一次执行时跳转的指令位置,并将第一指令跳转到指令位置对应的指令,其中,第一指令中存储有第一指令在之前一次执行时跳转的指令位置。
下面以一实际的应用场景对本发明实施例中指令执行方法进行描述:
请参阅图3,图3显示了虚拟机指令、游标和寄存器的绑定流程。
在执行完指令OP1后,指令OP1改变了游标(Cursor)2的位置,也即是改变了游标2中存储的关联信息,同时指令OP3和指令OP5绑定了游标2中存储的关联信息,所以通知指令OP3和指令OP5可以执行(当指令OP3和指令OP5将被执行时,能够执行指令OP3以及指令OP5);
指令OP2改变了游标1中存储的关联信息,同时指令OP4绑定了游标1中存储的关联信息,所以通知指令OP4可以执行;
指令OP3改变了寄存器(Register)1中存储的关联信息,同时指令OP4以及指令OP5绑定了寄存器1中存储的关联信息,所以通知指令OP4以及指令OP5可以执行;
指令OP4改变了寄存器2中存储的关联信息,同时指令OP6绑定了寄存器2中存储的关联信息,所以通知指令OP6可以执行;
指令OP5改变了寄存器3中存储的关联信息,没有其他指令与寄存器3相关联,所以不会发起通知;
指令OP6没有改变寄存器或游标存储的关联信息,简单执行即可。
需要说明的是,在实际应用中,可以为这些通知可以执行的指令设置状态位,例如,状态位为1表示在通知指令可执行的前提下,当指令将被指令时,虚拟机根据指令的状态位为1,执行指令。
需要说明的是,图3中存在着指令OP4同时绑定了游标1以及寄存器3的关联信息,在实际应用中,只要游标1和寄存器3中的关联信息任意一个发生变化,或者都发生变化,则当指令OP4将被执行时,执行指令OP4。同理,图3中的指令OP5类似,此处不再赘述。
在前面的实施例中说明了跳转指令,下面结合图4进行说明:
图4中,假设指令OP6为跳转指令,指令OP6根据寄存器2中的关联信息来确定是否跳转到指令OP1,从图4中的依赖关系可以看出,如果指令OP2被跳过没有执行,则指令OP4和指令OP6也不需要执行,但是,当虚拟机执行到指令OP6时,若确定指令OP6不需要执行,仍然需要检查指令OP6在最近一次执行的时候的跳转位置,如果指令OP6最近一次执行中跳转到指令OP1,则当前仍需要跳转到指令OP1,如果指令OP6最后一次执行中继续下一条指令,则虚拟机仍然需要继续执行下一条指令。
在前面的实施例中说明了第三指令与第三关联信息取消绑定,进而与第二关联信息进行绑定,实质为一种间接绑定,下面结合图5进行说明:
图5中,指令OP6没有绑定寄存器2中的关联信息,而是绑定了游标1中的关联信息,当指令OP2改变游标1中的关联信息后,会通知指令OP6可以执行。
上面论述了本发明实施例中的指令执行方法,下面对本发明实施例中的虚拟机进行说明:
请参阅图6,本发明实施例中虚拟机的一个实施例包括:
确定单元201,用于确定第一指令对应的第一关联寄存器,第一指令为虚拟机中循环体的指令,第一关联寄存器中存储有第一关联信息,第一关联信息包含位置变化信息、数值变化信息中至少一种;
绑定单元202,用于对第一指令以及第一关联信息进行绑定;
判断单元203,用于当第一指令将被执行时,判断第一关联信息是否发生变化;
第一执行单元204,用于若判断单元203判断第一关联信息发生变化,则执行第一指令。
本实施例中,本发明利用了指令通知机制,即第一指令需要与位置变化信息和/或数值变化信息进行绑定,在第一指令每次执行之前,需要先判断位置和/或数值是否发生变化,只有确定位置和数值至少一个发生变化,第一指令才会执行,相对于现有技术中第一指令可能每次都会执行的方案,本发明中第一指令的每次执行基于指令通知机制,因此本发明能够减少不必要的指令执行次数,提高执行效率。
可选的,在本发明的一些实施例中,所述第一关联信息包含位置变化信息,则判断单元203,具体用于根据位置变化信息判断第一关联寄存器的位置是否发生变化;
确定单元201,还用于若判断单元203判断第一关联寄存器的位置发生变化,则确定第一关联信息发生变化;或者,
若第一关联信息包含数值变化信息,则判断单元203,具体用于根据数值变化信息判断第一关联寄存器的数值是否发生变化;
确定单元201,还用于若判断单元203判断第一关联寄存器的数值发生变化,则确定第一关联信息发生变化;或者,
若第一关联信息包含位置变化信息和数值变化信息,则判断单元203,具体用于根据位置变化信息和数值变化信息判断第一关联寄存器的位置和数值中的至少一个是否发生变化;
确定单元201,还用于若判断单元203判断第一关联寄存器的位置和数值中的至少一个发生变化,则确定第一关联信息发生变化。
可选的,在本发明的一些实施例中,虚拟机还包括:
第四执行单元,用于若判断单元203根据第一关联信息判断位置和/或数值未发生变化,则不执行第一指令;
跳转单元,用于若第一指令为跳转指令,则检测第一指令在之前一次执行时跳转的指令位置,将第一指令跳转到指令位置对应的指令,其中,第一指令中存储有第一指令在之前一次执行时跳转的指令位置。
可选的,在本发明的一些实施例中,虚拟机还包括:
第一处理单元,用于若第一指令将被执行的次数为M,第一指令的执行次数为N,N/M不小于预设阈值,则对第一指令以及第一关联信息取消绑定,将第一指令设置为可执行指令,并保持第一指令为可执行指令的状态不变。
可选的,在本发明的一些实施例中,虚拟机还包括:
第二处理单元,用于若第一指令为整数相加指令或无条件跳转指令,则将第一指令设置为可执行指令,并保持第一指令为可执行指令的状态不变。
请参阅图7,本发明实施例中虚拟机的另一个实施例包括:
确定单元301,用于确定第一指令对应的第一关联寄存器,第一指令为虚拟机中循环体的指令,第一关联寄存器中存储有第一关联信息,第一关联信息包含位置变化信息、数值变化信息中至少一种;
绑定单元302,用于对第一指令以及第一关联信息进行绑定;
判断单元303,用于当第一指令将被执行时,判断第一关联信息是否发生变化;
第一执行单元304,用于若判断单元303判断第一关联信息发生变化,则执行第一指令;
第二执行单元305,用于当第二指令将被执行时,若检测到第一指令的输出结果改变了第二关联寄存器的位置和/或数值,且检测到第二指令与第二关联信息绑定,则执行第二指令;
第三执行单元306,用于当第三指令将被执行时,若检测到第二指令的输出结果改变了第三关联寄存器的位置和/或数值,且检测到第三指令与第三关联信息绑定,则对第三指令以及第三关联信息取消绑定,且对第三指令以及第二关联信息进行绑定,并执行第三指令。
本实施例中,本发明利用了指令通知机制,即第一指令需要与位置变化信息和/或数值变化信息进行绑定,在第一指令每次执行之前,需要先判断位置和/或数值是否发生变化,只有确定位置和数值至少一个发生变化,第一指令才会执行,相对于现有技术中第一指令可能每次都会执行的方案,本发明中第一指令的每次执行基于指令通知机制,因此本发明能够减少不必要的指令执行次数,提高执行效率。
其次,本发明考虑了第一指令的输出结果可能会改变第二关联寄存器的数值和/或位置,以及为第三指令绑定第二关联信息,实现间接绑定,扩展和丰富了本发明的技术方案。
为了便于理解,下面以一个实际的应用场景对本发明实施例中虚拟机中各单元间的交互进行描述:
确定单元301确定虚拟机中循环体中的每个指令对应的关联寄存器,每个关联寄存器中存储有关联信息,与关联寄存器相关联的指令的输出结果受到关联信息的影响,关联信息中包含着位置变化信息和/或数值变化信息,位置变化信息为游标的位置发生变化导致的变化信息,数值变化信息为寄存器的数值发生变化导致的变化信息。在确定指令OP1对应的寄存器1后,绑定单元302对指令OP1以及寄存器1中的第一关联信息进行绑定,指令OP1与第一关联信息进行绑定,相当于若第一关联信息发生变化,指令OP1能够知道第一关联信息发生变化,指令OP1订阅了第一关联信息。在对指令OP1以及第一关联信息进行绑定后,当指令OP1将被执行时,判断单元303根据第一关联信息判断数值是否发生变化,若是,则第一执行单元304执行指令OP1。在执行完指令OP1后,指令OP1的输出结果可能会改变寄存器2的数值,正好指令OP2的输出结果受到寄存器2的影响,由此,当指令OP2将被执行时,若第二执行单元305检测到指令OP1的输出结果改变了寄存器2的数值,且检测到指令OP2与第二关联信息绑定,则执行指令OP2。当指令OP3将被执行时,若第三执行单元306检测到指令OP2的输出结果改变了寄存器3数值,且检测到指令OP3与第三关联信息绑定,则对指令OP3以及第三关联信息取消绑定,且对指令OP3以及第二关联信息进行绑定,并执行指令OP3。
本发明实施例还提供一种服务器,请参阅图8,本发明实施例中服务器的一个实施例包括:
图8是本发明实施例提供的一种服务器结构示意图,该服务器400可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(central processing units,CPU)401(例如,一个或一个以上处理器),虚拟机402,一个或一个以上存储应用程序403或数据404的存储介质405(例如一个或一个以上海量存储设备)。其中,存储介质405可以是短暂存储或持久存储。存储在存储介质405的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对交换机中的一系列指令操作。更进一步地,中央处理器401可以设置为与存储介质405通信,在服务器400上执行存储介质405中的一系列指令操作。
服务器400还可以包括一个或一个以上电源406,一个或一个以上有线或无线网络接口407,一个或一个以上输输出接口408,和/或,一个或一个以上操作系统409,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM等等。
上述实施例中由虚拟机所执行的步骤可以基于该图8所示的服务器结构。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (16)
1.一种指令执行方法,其特征在于,包括:
确定第一指令对应的第一关联寄存器,所述第一指令为虚拟机中循环体的指令,所述第一关联寄存器中存储有第一关联信息,所述第一关联信息包含位置变化信息、数值变化信息中至少一种;
对所述第一指令以及所述第一关联信息进行绑定;
当所述第一指令将被执行时,判断所述第一关联信息是否发生变化,若是,则执行所述第一指令。
2.根据权利要求1所述的方法,其特征在于,若所述第一关联信息包含位置变化信息,则所述判断所述第一关联信息是否发生变化包括:
根据所述位置变化信息判断所述第一关联寄存器的位置是否发生变化,若是,则确定所述第一关联信息发生变化;或者,
若所述第一关联信息包含数值变化信息,则所述判断所述第一关联信息是否发生变化包括:
根据所述数值变化信息判断所述第一关联寄存器的数值是否发生变化,若是,则确定所述第一关联信息发生变化;或者,
若所述第一关联信息包含位置变化信息和数值变化信息,则所述判断所述第一关联信息是否发生变化包括:
根据所述位置变化信息和数值变化信息判断所述第一关联寄存器的位置和数值中的至少一个是否发生变化,若是,则确定所述第一关联信息发生变化。
3.根据权利要求1所述的方法,其特征在于,所述执行所述第一指令,之后包括:
当第二指令将被执行时,若检测到所述第一指令的输出结果改变了第二关联寄存器的位置和/或数值,且检测到所述第二指令与第二关联信息绑定,则执行所述第二指令。
4.根据权利要求3所述的方法,其特征在于,所述执行所述第二指令,之后包括:
当第三指令将被执行时,若检测到所述第二指令的输出结果改变了第三关联寄存器的位置和/或数值,且检测到所述第三指令与第三关联信息绑定,则对所述第三指令以及所述第三关联信息取消绑定,且对所述第三指令以及所述第二关联信息进行绑定,并执行所述第三指令。
5.根据权利要求1所述的方法,其特征在于,所述判断所述第一关联信息是否发生变化,若否,则不执行所述第一指令。
6.根据权利要求5所述的方法,其特征在于,所述不执行所述第一指令,之后包括:
若所述第一指令为跳转指令,则检测所述第一指令在之前一次执行时跳转的指令位置,并将所述第一指令跳转到所述指令位置对应的指令,其中,所述第一指令中存储有所述第一指令在之前一次执行时跳转的指令位置。
7.根据权利要求1至4任意一项所述的方法,其特征在于,所述执行所述第一指令,之后包括:
若所述第一指令将被执行的次数为M,所述第一指令的执行次数为N,所述N/M不小于预设阈值,则对所述第一指令以及所述第一关联信息取消绑定,将所述第一指令设置为可执行指令,并保持所述第一指令为可执行指令的状态不变。
8.根据权利要求1至4任意一项所述的方法,其特征在于,所述方法还包括:
若所述第一指令为整数相加指令或无条件跳转指令,则将所述第一指令设置为可执行指令,并保持所述第一指令为可执行指令的状态不变。
9.一种虚拟机,其特征在于,包括:
确定单元,用于确定第一指令对应的第一关联寄存器,所述第一指令为虚拟机中循环体的指令,所述第一关联寄存器中存储有第一关联信息,所述第一关联信息包含位置变化信息、数值变化信息中至少一种;
绑定单元,用于对所述第一指令以及所述第一关联信息进行绑定;
判断单元,用于当所述第一指令将被执行时,判断所述第一关联信息是否发生变化;
第一执行单元,用于若判断单元判断所述第一关联信息发生变化,则执行所述第一指令。
10.根据权利要求9所述的虚拟机,其特征在于,若所述第一关联信息包含位置变化信息,则所述判断单元,具体用于根据所述位置变化信息判断所述第一关联寄存器的位置是否发生变化;
所述确定单元,还用于若判断单元判断所述第一关联寄存器的位置发生变化,则确定所述第一关联信息发生变化;或者,
若所述第一关联信息包含数值变化信息,则所述判断单元,具体用于根据所述数值变化信息判断所述第一关联寄存器的数值是否发生变化;
所述确定单元,还用于若判断单元判断所述第一关联寄存器的数值发生变化,则确定所述第一关联信息发生变化;或者,
若所述第一关联信息包含位置变化信息和数值变化信息,则所述判断单元,具体用于根据所述位置变化信息和数值变化信息判断所述第一关联寄存器的位置和数值中的至少一个是否发生变化;
所述确定单元,还用于若判断单元判断所述第一关联寄存器的位置和数值中的至少一个发生变化,则确定所述第一关联信息发生变化。
11.根据权利要求9所述的虚拟机,其特征在于,所述虚拟机还包括:
第二执行单元,用于当第二指令将被执行时,若检测到所述第一指令的输出结果改变了第二关联寄存器的位置和/或数值,且检测到所述第二指令与第二关联信息绑定,则执行所述第二指令。
12.根据权利要求11所述的虚拟机,其特征在于,所述虚拟机还包括:
第三执行单元,用于当第三指令将被执行时,若检测到所述第二指令的输出结果改变了第三关联寄存器的位置和/或数值,且检测到所述第三指令与第三关联信息绑定,则对所述第三指令以及所述第三关联信息取消绑定,且对所述第三指令以及所述第二关联信息进行绑定,并执行所述第三指令。
13.根据权利要求9所述的虚拟机,其特征在于,所述虚拟机还包括:
第四执行单元,用于若判断单元判断所述第一关联信息发生变化,则不执行所述第一指令。
14.根据权利要求13所述的虚拟机,其特征在于,所述虚拟机还包括:
跳转单元,用于若所述第一指令为跳转指令,则检测所述第一指令在之前一次执行时跳转的指令位置,并将所述第一指令跳转到所述指令位置对应的指令,其中,所述第一指令中存储有所述第一指令在之前一次执行时跳转的指令位置。
15.根据权利要求9至12任意一项所述的虚拟机,其特征在于,所述虚拟机还包括:
第一处理单元,用于若所述第一指令将被执行的次数为M,所述第一指令的执行次数为N,所述N/M不小于预设阈值,则对所述第一指令以及所述第一关联信息取消绑定,将所述第一指令设置为可执行指令,并保持所述第一指令为可执行指令的状态不变。
16.根据权利要求9至12任意一项所述的虚拟机,其特征在于,所述虚拟机还包括:
第二处理单元,用于若所述第一指令为整数相加指令或无条件跳转指令,则将所述第一指令设置为可执行指令,并保持所述第一指令为可执行指令的状态不变。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610139205.7A CN107179935B (zh) | 2016-03-11 | 2016-03-11 | 一种指令执行方法及虚拟机 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610139205.7A CN107179935B (zh) | 2016-03-11 | 2016-03-11 | 一种指令执行方法及虚拟机 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107179935A true CN107179935A (zh) | 2017-09-19 |
CN107179935B CN107179935B (zh) | 2021-01-29 |
Family
ID=59829933
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610139205.7A Active CN107179935B (zh) | 2016-03-11 | 2016-03-11 | 一种指令执行方法及虚拟机 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107179935B (zh) |
Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5038282A (en) * | 1988-05-11 | 1991-08-06 | Massachusetts Institute Of Technology | Synchronous processor with simultaneous instruction processing and data transfer |
CN1250910A (zh) * | 1998-10-12 | 2000-04-19 | 北京多思科技工业园股份有限公司 | 指令控制拼装方法及其装置 |
WO2002052409A2 (en) * | 2000-11-13 | 2002-07-04 | Sun Microsystems, Inc. | Method and apparatus for increasing performance of an interpreter |
US6546550B1 (en) * | 1999-01-28 | 2003-04-08 | International Business Machines Corporation | Method to determine dynamic compilation time and to select bytecode execution mode |
CN101036123A (zh) * | 2004-07-20 | 2007-09-12 | 明星游戏株式会社 | 自动翻译程序和程序翻译服务器 |
CN101295239A (zh) * | 2007-04-26 | 2008-10-29 | 东信和平智能卡股份有限公司 | Java卡虚拟机的指令执行方法 |
CN102193777A (zh) * | 2010-03-10 | 2011-09-21 | 微软公司 | 循环控制流转移 |
CN102483696A (zh) * | 2009-08-19 | 2012-05-30 | 高通股份有限公司 | 用以预测有条件非分支指令的不执行的方法和设备 |
EP2633399A1 (en) * | 2010-10-28 | 2013-09-04 | Innowake GmbH | Method and system for generating code |
CN103348318A (zh) * | 2011-02-07 | 2013-10-09 | Arm有限公司 | 控制依赖于相同数据条件的相邻指令的执行 |
CN103455363A (zh) * | 2013-08-30 | 2013-12-18 | 华为技术有限公司 | 一种虚拟机的指令处理方法、装置及物理主机 |
CN103744641A (zh) * | 2014-01-23 | 2014-04-23 | 龙芯中科技术有限公司 | 禁止已翻译指令序列执行的方法、装置和虚拟机 |
CN104699454A (zh) * | 2013-12-06 | 2015-06-10 | 联想(北京)有限公司 | 一种信息处理方法及电子设备 |
-
2016
- 2016-03-11 CN CN201610139205.7A patent/CN107179935B/zh active Active
Patent Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5038282A (en) * | 1988-05-11 | 1991-08-06 | Massachusetts Institute Of Technology | Synchronous processor with simultaneous instruction processing and data transfer |
CN1250910A (zh) * | 1998-10-12 | 2000-04-19 | 北京多思科技工业园股份有限公司 | 指令控制拼装方法及其装置 |
US6546550B1 (en) * | 1999-01-28 | 2003-04-08 | International Business Machines Corporation | Method to determine dynamic compilation time and to select bytecode execution mode |
WO2002052409A2 (en) * | 2000-11-13 | 2002-07-04 | Sun Microsystems, Inc. | Method and apparatus for increasing performance of an interpreter |
CN101036123A (zh) * | 2004-07-20 | 2007-09-12 | 明星游戏株式会社 | 自动翻译程序和程序翻译服务器 |
CN101295239A (zh) * | 2007-04-26 | 2008-10-29 | 东信和平智能卡股份有限公司 | Java卡虚拟机的指令执行方法 |
CN102483696A (zh) * | 2009-08-19 | 2012-05-30 | 高通股份有限公司 | 用以预测有条件非分支指令的不执行的方法和设备 |
CN102193777A (zh) * | 2010-03-10 | 2011-09-21 | 微软公司 | 循环控制流转移 |
EP2633399A1 (en) * | 2010-10-28 | 2013-09-04 | Innowake GmbH | Method and system for generating code |
CN103348318A (zh) * | 2011-02-07 | 2013-10-09 | Arm有限公司 | 控制依赖于相同数据条件的相邻指令的执行 |
CN103455363A (zh) * | 2013-08-30 | 2013-12-18 | 华为技术有限公司 | 一种虚拟机的指令处理方法、装置及物理主机 |
CN104699454A (zh) * | 2013-12-06 | 2015-06-10 | 联想(北京)有限公司 | 一种信息处理方法及电子设备 |
CN103744641A (zh) * | 2014-01-23 | 2014-04-23 | 龙芯中科技术有限公司 | 禁止已翻译指令序列执行的方法、装置和虚拟机 |
Also Published As
Publication number | Publication date |
---|---|
CN107179935B (zh) | 2021-01-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106227671B (zh) | 程序运行性能分析方法及装置 | |
Sewell et al. | A branch, bound, and remember algorithm for the simple assembly line balancing problem | |
US10289541B2 (en) | Source code flow analysis using information retrieval | |
CA2275332C (en) | Selective emulation interpretation using transformed instructions | |
US6546550B1 (en) | Method to determine dynamic compilation time and to select bytecode execution mode | |
CN109408393A (zh) | 应用测试方法、装置及设备和计算机可读存储介质 | |
CN109189469A (zh) | 基于反射的安卓应用微服务化方法及系统 | |
CN107115673B (zh) | 一种基于行为树的行为执行方法和装置 | |
CN107632832A (zh) | 一种面向dalvik字节码控制流混淆方法 | |
CN109189374A (zh) | 基于对象引用链的对象构造代码生成方法及系统 | |
CN104714885B (zh) | 栈溢出位置的检测方法及装置 | |
CN111310191A (zh) | 一种基于深度学习的区块链智能合约漏洞检测方法 | |
CN106202100A (zh) | 页面的加载方法及装置 | |
CN105988850A (zh) | 移动终端的开机控制方法和装置 | |
US20210182682A1 (en) | Learning task compiling method of artificial intelligence processor and related products | |
CN109731334A (zh) | 状态的切换方法和装置、存储介质、电子装置 | |
CN114090117A (zh) | 一种配置方法、装置、设备及存储介质 | |
CN110147314A (zh) | 测试方法、装置及计算机可读存储介质 | |
CN109409036A (zh) | 基于冗余代码的控制流混淆方法及装置、存储介质和终端 | |
CN112269616A (zh) | 一种基于状态机的界面跳转和事件触发系统 | |
CN107179935A (zh) | 一种指令执行方法及虚拟机 | |
CN109918595B (zh) | 获取公共模块的方法和装置 | |
US11307962B2 (en) | Method for semantic preserving transform mutation discovery and vetting | |
CN106775906A (zh) | 业务流程处理方法及装置 | |
CN112506613B (zh) | Gitlab-ci自动识别Maven变更子模块并推送docker镜像的方法 |
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 | ||
TR01 | Transfer of patent right |
Effective date of registration: 20211229 Address after: 450046 Floor 9, building 1, Zhengshang Boya Plaza, Longzihu wisdom Island, Zhengdong New Area, Zhengzhou City, Henan Province Patentee after: Super fusion Digital Technology Co.,Ltd. Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen Patentee before: HUAWEI TECHNOLOGIES Co.,Ltd. |
|
TR01 | Transfer of patent right |