CN117519712A - 应用程序运行方法、装置、电子设备以及存储介质 - Google Patents

应用程序运行方法、装置、电子设备以及存储介质 Download PDF

Info

Publication number
CN117519712A
CN117519712A CN202311435823.2A CN202311435823A CN117519712A CN 117519712 A CN117519712 A CN 117519712A CN 202311435823 A CN202311435823 A CN 202311435823A CN 117519712 A CN117519712 A CN 117519712A
Authority
CN
China
Prior art keywords
instruction
target
initial
instruction set
processed
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
CN202311435823.2A
Other languages
English (en)
Inventor
刘海波
丁刚
刘雄飞
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Lenovo Beijing Ltd
Original Assignee
Lenovo Beijing 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 Lenovo Beijing Ltd filed Critical Lenovo Beijing Ltd
Priority to CN202311435823.2A priority Critical patent/CN117519712A/zh
Publication of CN117519712A publication Critical patent/CN117519712A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本公开提供了一种应用程序运行方法、装置、电子设备以及存储介质。该应用程序运行方法,包括:在确定应用程序的运行环境支持目标指令集的情况下,基于应用程序的初始指令集,获取具有参考指令特征的待处理指令,目标指令集的运行效率高于初始指令集的运行效率;从目标指令集中确定与待处理指令对应的目标指令;以及基于目标指令和初始指令集,运行应用程序。

Description

应用程序运行方法、装置、电子设备以及存储介质
技术领域
本公开涉及计算机技术领域和指令处理领域,尤其涉及一种应用程序运行方法、装置、电子设备以及存储介质。
背景技术
在应用程序的编译过程中,为了确保应用程序具有较好的兼容性,编译器会自动将应用程序的源代码编译成较低版本的指令集,这可以确保较低版本的指令集可以在多种运行环境中运行。但是,这也会导致应用程序的运行过程效率低下,也无法发挥多种运行环境的运行优势。
发明内容
本公开的一个方面提供了一种应用程序运行方法,包括在确定应用程序的运行环境支持目标指令集的情况下,基于应用程序的初始指令集,获取具有参考指令特征的待处理指令,目标指令集的运行效率高于初始指令集的运行效率;从目标指令集中确定与待处理指令对应的目标指令;以及基于目标指令和初始指令集,运行应用程序。
根据本公开实施例,基于目标指令和初始指令集,运行应用程序,包括:在执行初始指令集的过程中,若下一指令为待处理指令,获取待处理指令对应的第一地址;以及从第一地址读取目标指令并执行。
根据本公开实施例,基于目标指令和初始指令集,运行应用程序,还包括:获取待处理指令相对应的第二地址,使得目标指令执行完后,基于第二地址,执行初始指令集。
根据本公开实施例,基于应用程序的初始指令集,获取具有参考指令特征的待处理指令,包括:识别初始指令集包括的多个初始指令的特征数据;以及在确定初始指令的特征数据与参考指令特征对应的指定特征数据一致的情况下,确定初始指令中为待处理指令。
根据本公开实施例,基于应用程序的初始指令集,获取具有参考指令特征的待处理指令,包括:基于初始指令集,确定指定对象的调用信息,指定对象与参考指令特征相关;以及在确定调用信息满足预设条件的情况下,确定与指定对象相关的指令为待处理指令。
根据本公开实施例,从目标指令集中确定与待处理指令对应的目标指令,包括:确定待处理指令的特征数据,特征数据包括的操作码、操作寄存器信息和指令关联信息;基于指令关联信息,从目标指令集中获取与操作码对应的目标操作码,以及与操作寄存器信息对应的目标寄存器信息;以及根据目标操作码和目标寄存器信息生成目标指令。
根据本公开实施例,参考指令特征对应的指令包括批量整型运算指令、批量浮点数运算指令、矩阵运算指令、与图像处理相关的指令、与音视频处理相关的指令和与深度学习相关的指令的至少一种。
本公开的另一方面提供了一种应用程序运行装置,包括获取模块,用于在确定应用程序的运行环境支持目标指令集的情况下,基于应用程序的初始指令集,获取具有参考指令特征的待处理指令,目标指令集的运行效率高于初始指令集的运行效率;确定模块,用于从目标指令集中确定与待处理指令对应的目标指令;以及运行模块,用于基于目标指令和初始指令集,运行应用程序。
本公开的另一方面还提供了一种电子设备,包括:至少一个处理器;以及与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行如上的应用程序运行方法。
本公开的另一方面提供了一种非易失性存储介质,存储有计算机可执行指令,指令在被执行时用于实现如上的应用程序运行方法。
本公开的另一方面提供了一种计算机程序,计算机程序包括计算机可执行指令,指令在被执行时用于实现如上的应用程序运行方法。
附图说明
为了更完整地理解本公开及其优势,现在将参考结合附图的以下描述,其中:
图1示意性示出了根据本公开实施例的处理方法和处理装置的应用场景;
图2示意性示出了根据本公开实施例的应用程序运行方法的流程图;
图3示意性示出了根据本公开实施例的确定目标指令方法的流程图;
图4示意性示出了根据本公开实施例的运行应用程序的示意图;
图5示意性示出了根据本公开实施例的应用程序运行装置的框图;以及
图6示意性示出了根据本公开实施例的电子设备的示意性框图。
具体实施方式
以下,将参照附图来描述本公开的实施例。但是应该理解,这些描述只是示例性的,而并非要限制本公开的范围。在下面的详细描述中,为便于解释,阐述了许多具体的细节以提供对本公开实施例的全面理解。然而,明显地,一个或多个实施例在没有这些具体细节的情况下也可以被实施。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本公开的概念。
在此使用的术语仅仅是为了描述具体实施例,而并非意在限制本公开。在此使用的术语“包括”、“包含”等表明了所述特征、步骤、操作和/或部件的存在,但是并不排除存在或添加一个或多个其他特征、步骤、操作或部件。
在此使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的含义,除非另外定义。应注意,这里使用的术语应解释为具有与本说明书的上下文相一致的含义,而不应以理想化或过于刻板的方式来解释。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本申请的至少一个实施例或示例中。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或隐含地包括至少一个该特征。在本申请的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
图1示意性示出了根据本公开实施例的应用程序运行方法和应用程序运行装置的应用场景100。需要注意的是,图1所示仅为可以应用本公开实施例的场景的示例,以帮助本领域技术人员理解本公开的技术内容,但并不意味着本公开实施例不可以用于其他设备、系统、环境或场景。
如图1所示,在应用场景100中,源文件110可以是应用程序的源文件,通过编译源文件110可以得到应用程序的可执行文件。可执行文件包括初始指令集。例如,初始指令集可以是低版本的指令集。
例如,应用程序的可执行文件可以运行在终端设备120、130、140中,终端设备120、130、140包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。例如,终端设备120、130、140的处理器的类型可以是相同的,也可以是不同的。例如,终端设备120、130、140的处理器可以包括但不限于ARM处理器、X86处理器和RISC-V处理器。
例如,基于终端设备120、130、140各自的处理器支持的指令集,可以自动编译得到相应的初始指令集121、131、141。为了确保应用程序的兼容性,初始指令集121、131、141为终端设备120、130、140各自的处理器支持的较低版本指令集。因此,在终端设备120、130、140仅支持较低版本的指令集时,终端设备120、130、140可以正确运行应用程序。在终端设备120、130、140支持较高版本的指令集时,终端设备120、130、140也可以正确运行应用程序。
在一些实施例中,终端设备120的处理器支持A类型指令集。A类型指令集包括第一A类型指令集和第二A类型指令集,其中,第二A类型指令集为A类型的高版本指令集,第一A类型指令集为A类型的低版本指令集,第二A类型指令集相对于第一A类型指令集具有更高的执行效率。例如,第二A类型指令集可以实现第一A类型指令集的全部指令功能,第一A类型指令集可以实现第二A类型指令集的全部指令功能。因此,为了确保终端设备120可以正确运行应用程序,源文件110会被默认自动编译为与第一A类型指令集对应的初始指令集121。这使得无论终端设备120的处理器仅支持第一A类型指令集还是第二A类型指令集时,均可以正确运行应用程序。
但是,将源文件110编译为与低版本指令集适配的初始指令集121、131、141后,在终端设备120、130、1 40支持较高版本指令集时,终端设备120、130、140支持的高版本指令集无法发挥运行优势,这会降低终端设备120、130、140的运行效率。
此外,如果为了让应用程序的指令集与终端设备120、130、140支持的指令集的版本相适应,随着终端设备120、130、14支持的指令集的版本的更新,开发人员也需要不断的发布应用程序的新版本客户端,这会增加应用程序的开发难度,也可以增加用户选择应用程序版本的难度,甚至会导致终端设备120、130、140因不兼容用户所选择应用程序版本,而无法运行应用程序。
基于上述问题,本公开提供了一种应用程序运行方法,包括在确定应用程序的运行环境支持目标指令集的情况下,基于应用程序的初始指令集,获取具有参考指令特征的待处理指令,目标指令集的运行效率高于初始指令集的运行效率;从目标指令集中确定与待处理指令对应的目标指令;以及基于目标指令和初始指令集,运行应用程序。
根据本公开实施例,基于应用程序的运行环境支持的指令集版本,实时更新低版本的指令集,使得应用程序可以基于运行环境中高版本指令集运行,从而提高应用程序的运行效率。
图2示意性示出了根据本公开实施例的应用程序运行方法的流程图。
如图2所示,该应用程序运行方法包括操作S210~S230。
在操作S210,在确定应用程序的运行环境支持目标指令集的情况下,基于应用程序的初始指令集,获取具有参考指令特征的待处理指令。
在本公开实施例中,目标指令集和初始指令集为同一类型的指令集。例如,目标指令集和初始指令集对应同一类型指令集,目标指令集的运行效率高于初始指令集的运行效率。例如,目标指令集是初始指令集对应的高版本指令集,初始指令集是目标指令集对应的低版本指令集。例如,对于具有相同功能的指令,目标指令集中的指令的运行时间为5ms,初始指令集中的指令的运行时间为10ms。
例如,待处理指令可以为初始指令集包括的可优化指令。通过优化待处理指令,可以提高应用程序的运行效率。例如,参考指令特征可以指示了指令对应的操作数量不小于预设数量。例如,操作数量可以表示完成对一个指令的执行需要的操作数量。通过优化具有参考指令特征的待处理指令,可以减少完成对一个指令的执行需要的操作数量,提高运行速率。
例如,一个批量运算指令可以表示执行100次加法运算操作,由于初始指令集中的初始指令每次只能执行一个加法运算,因此操作数量为100。通过优化,完成该批量运算指令指示的运算操作,可以仅需要50次操作。例如,预设数量可以为10,也可以为100。本领域技术人员可以根据实际的优化需要设置预设数量。本公开对预设数量的数值不做限定。
在本公开实施例中,在操作S220,从目标指令集中确定与待处理指令对应的目标指令。
在本公开实施例中,通过优化待处理指令,可以得到目标指令集中的目标指令。待处理指令与目标指令指示内容一致,基于待处理指令与目标指令可以实现相同的功能。例如,初始指令集和目标指令集包括了指示相同内容的指令。基于待处理指令指示的内容,可以从目标指令中确定也指示相同内容的目标指令。目标指令对应的操作数量少于待处理指令对应的操作数量,目标指令对应的执行效率高于待处理指令对应的指令效率。
在操作S230,基于目标指令和初始指令集,运行应用程序。
在本公开实施例中,由于待处理指令与目标指令指示内容一致,可以在应用程序的指令过程中通过执行目标指令来代替执行待处理指令。由于目标指令的执行效率高于待处理指令的执行效率,因此,基于目标指令和初始指令集,可以提高应用程序的指令效率。
在本公开实施例中,运行环境可以表示运行应用程序的处理器的运行能力。在处理器支持高版本指令集的情况下,处理器具有向下兼容的能力,因此也支持低版本指令集。
例如,在安装应用程序时,处理器可以默认生成低版本初始指令集,低版本初始指令集包括低阶指令。在启动应用程序后,在检测到运行环境支持高版本目标指令集时,可以对初始指令集中的低阶指令进行优化,得到目标指令集包括的高阶指令,使得应用程序的运行过程可以基于高阶指令实现。
在本公开实施例中,目标指令集可以是终端设备的处理器当前支持的最高版本指令集。始指令集可以是基于低版本源文件自动编译得到的低版本指令集,也可以是基于通用源文件自动编译的低版本指令集。例如,在终端设备中安装应用程序时,终端设备的处理器可以基于自身支持的指令集版本,相应生成对应的低版本指令集。例如,应用程序的安装包可以是低版本指令集对应的安装包,处理器基于低版本安装包生成对应的低版本指令集。
例如,在生成低版本初始指令集后,处理器可以将初始指令集存储在终端设备的本地存储器中。在确定目标指令后,可以目标指令临时存储在处理器的内存中。在应用程序的运行过程中,运行环境中同时存储了初始指令和目标指令。在应用程序结束运行后,处理器可以清理内存中的目标指令。在下一次运行应用程序时,重新生成目标指令,目标指令的存储地址不固定。例如,处理器可以每次均在内存中为目标指令动态申请一段存储空间,在应用程序运行结束后将该存储空间释放。这使得在不运行应用程序时,目标指令不会占用处理器的内存,从而避免了对处理器运行效率的影响。
目标指令的存储过程和执行过程并不会改变存储在本地的初始指令集。在应用程序的运行过程中和应用程序运行结束后,存储在本地的初始指令集均保持不变。因此,在无法确定目标指令或目标指令的情况下,处理器依然可以基于初始指令集运行应用程序,确保应用程序的正常运行。
在本公开实施例中,基于应用程序的运行场景,可以选择不同的运行模式,从而采用相应的方式运行应用程序。
例如,终端设备可以根据自身的运行状态,确定运行模式。在终端设备的运行资源充足的情况下,处理器可以处于常规运行模式,基于初始指令集运行应用程序。在终端设备的运行资源紧张的情况下,处理器可以进入高效运行模式,基于初始指令集确定目标指令,并基于初始指令集和目标指令运行应用程序。
例如,终端设备也可以根据用户的指令,确定运行模式。在用户选择常规运行模式的情况下,处理器可以基于初始指令集运行应用程序。在用户选择高效运行模式情况的情况下,处理器可以基于初始指令集确定目标指令,并基于初始指令集和目标指令运行应用程序。
例如,终端设备也可以应用程序的运行属性,确定运行模式。在应用程序的运行过程中存在音视频实时更新的情况下,处理器可以基于初始指令集确定目标指令,并基于初始指令集和目标指令运行应用程序。例如,应用程序可以为游戏程序和直播程序,游戏程序和直播程序具有高实时性的要求。处理器可以基于初始指令集和目标指令运行应用程序,提高运行效率,确定显示画面可以实时更新。
例如,在应用程序的运行过程对运行效率要求较低或不需要确保高实时性时,处理器可以直接基于初始指令集运行应用程序。这可以避免处理器确定目标指令而产生额外运行开销。
在本公开实施例中,基于初始指令确定对应的目标指令,通过执行目标指令代替初始指令的执行,可以优化应用程序的运行过程,提高应用程序的运行效率。在优化应用程序的运行过程时,仅对初始指令集中的待处理指令进行优化,而无需对初始指令集包括的全部初始指令进行优化。例如,当初始指令集包括的初始指令与目标指令集包括的目标指令对应的操作数量一致或相近时,无需要对该初始指令进行优化,这可以降低优化开销,也可以避免出现优化后并未提升应用程序的运行效率,反而因优化过程产生了额外运算开销的现象。
在本公开实施例中,参考指令特征对应的指令包括批量整型运算指令、批量浮点数运算指令、矩阵运算指令、与图像处理相关的指令、与音视频处理相关的指令和与深度学习相关的指令的至少一种。
例如,批量整型运算指令可以指示了对整型数据进行批量运算。例如,整型数据可以是表示音视频的特征数据,例如视频图像包括的多个像素点的像素值。批量整型运算过程包括多次整型运算操作。
例如,批量浮点数运算指令可以指示了对浮点数进行批量运算。例如,浮点数可以是深度学习模型包括的模型参数和权重等。在深度学习模型的训练和调整过程中,存在对浮点数的多次运行操作,直至模型收敛。
例如,矩阵运算指令可以指示了对多个矩阵的算术运算。矩阵包括多个元素,矩阵运算过程可被分解为对多个元素的依次运算。因此,矩阵运算包括多个运算操作。
例如,与图像处理相关的指令可以包括图像的特征提取指令和多个图像的特征融合指令等。图像特征可以以矩阵的形式表示,因此图像处理过程可以转化为矩阵运算过程,图像处理过程包括多个运算操作。
例如,与音视频处理相关的指令包括语音识别指令、语音特征编码和视频图像处理指令等。语音特征也可以以矩阵或数据序列的形式表示,因此音视频处理过程可以转化为矩阵运算过程或数据序列运算过程,图像处理过程包括多个运算操作。
例如,与深度学习相关的指令可以包括与深度学习算子相关的运算指令。深度学习算子涉及的运算对象通常为大量的数据,由于每次运算的数据量有限,因此深度学习算子完成一个运算指令需要执行多次运算操作。
在本公开实施例中,基于初始指令集执行上述运算指令涉及多个运算操作。例如,在矩阵运算指令表示对多个4×4的矩阵相加时,基于初始指令集,执行16次加法运算操作,每次操作仅能对一组对应的矩阵元素执行加法运算。基于目标指令集,每次操作可以对多组对应的矩阵元素执行加法运算,从而减少了操作数量,提高运算效率。例如,基于目标指令集,每次操作可以对两组对应的矩阵元素执行加法运算,运算效率可以提高约50%。
例如,深度学习算子可以为卷积层算子。基于初始指令,卷积层算子每次仅能实现4字节的运算。基于目标指令,卷积层算子每次可以实现8字节的运算。因此,基于目标指令可以将操作数量减少一半,运算效率可以提高约50%。
本公开提供了一种确定待处理指令的实施例。
在本公开实施例中,操作S210,基于应用程序的初始指令集,获取具有参考指令特征的待处理指令,可以包括识别初始指令集包括的多个初始指令的特征数据;以及在确定初始指令的特征数据与参考指令特征对应的指定特征数据一致的情况下,确定初始指令中为待处理指令。
在本公开实施例中,特征数据可以包括指令的操作码、操作寄存器信息和指令关联信息等。例如,操作码可以为指令指示的运算类型,操作寄存器信息可以为存储运算对象的寄存器地址和存储运算结果的寄存器地址,指令关联信息可以表示多个初始指令之间的关系。例如,加法运算指令与循环指令嵌套可以形成一个批量加法运算任务,可以等价于一个批量运算指令。
在本公开实施例中,参考指令特征对应的指定特征数据可以为参考指令特征对应的指令具有特征数据。例如,指令特征数据可以为批量整型运算指令、批量浮点数运算指令、矩阵运算指令、与图像处理相关的指令、与音视频处理相关的指令和与深度学习相关的指令的特征数据。
例如,在基于初始指令的特征数据确定该初始指令为参考指令特征对应的指令时,认为该初始指令为待处理指令。
在本公开实施例中,可以利用经过深度学习训练的模型确定初始指令集中的待处理指令。例如,获取批量整型运算指令、批量浮点数运算指令、矩阵运算指令、与图像处理相关的指令、与音视频处理相关的指令和与深度学习相关的指令的特征数据,并对这些特征数据进行分类和标注。基于分类和标注后的特征数据训练深度学习模型,得到识别模型。
例如,可以使用朴素贝叶斯法监督学习算法对标注的数据进行学习与训练。训练得到的识别模型可以被安装在终端设备中。当启动应用程序后,该识别模型可以自动对应用程序的初始指令集进行扫描,得到待处理指令。在确定待处理指令对应的目标指令后,处理器可以在内存中动态申请一段内存地址来存放目标指令。
例如,在启动应用程序后,处理器可以先检测初始指令集的版本,并将初始指令集版本与自身支持的最高版本指令集进行对比。在确定最高版本指令集的运行效率高于初始指令集的运行效率时,处理器自动利用识别模型获取待处理指令。再例如,处理器也可以响应于接收到的指示高效运行模式的指令,利用识别模型获取待处理指令。再例如,处理器也可以基于当前运行状态,利用识别模型获取待处理指令。
通过本公开实施例,在应用程序运行之前,通过训练得到的识别模型预先获取待处理指令。因此可以在应用程序运行前,确定目标指令,从而可以基于目标指令和初始指令运行应用程序,从而提高应用程序的运行效率。
在本公开实施例中,操作S210,基于应用程序的初始指令集,获取具有参考指令特征的待处理指令,可以包括基于应用程序的初始指令集,获取具有参考指令特征的待处理指令,包括:基于初始指令集,确定指定对象的调用信息,指定对象与参考指令特征相关;以及在确定调用信息满足预设条件的情况下,确定与指定对象相关的指令为待处理指令。
在本公开实施例中,通过初始指令集中与指定对象相关的初始指令,可以确定待处理指令。例如,指令对象可以是与参考指令特征对应的指令相关的数据库或工具库。
例如,指令对象可以是存储在终端设备本地的第三方工具。例如,第三方工具可以是音视频编解码工具。在执行与音视频相关的指令的过程中,处理器可能会调用该音视频编解码工具。因此,在某一指令的执行过程中,存在频繁调用音视频编解码工具的现象时,该指令可被认为是待处理指令。
例如,指定对象还可以是特殊指令。例如,在执行与深度学习相关的指令的过程中,处理器可能会调用该特殊指令,以完成批量运算。因此,在某一指令的执行过程中,存在频繁调用该特殊指令的现象时,该指令可被认为是待处理指令。
例如,指定对象可以是通过指定端口调用的。通过检测端口的调用信息,可以确定指定对象的调用信息,从而确定与指定对象的相关的初始指令。
例如,指令对象是直接被调用的。通过监测指定对象的调用情况,可以确定与指令对象相关的初始指令。例如,可以利用虚拟化技术(Virtual Technology,VT)动态监测特殊指令的调用情况。
在本公开实施例中,预设条件可以表示调用次数大于指定次数。例如,指定次数可以为10次或100次。本领域技术人员可以根据实际的优化需要设置指定次数。本公开对指定次数的数值不做限定。例如,在确定调用信息指示的调用次数大于10次的情况下,确定与指定对象相关的指令为待处理指令。
可理解地,在调用信息指示的调用次数越大,对待处理指令优化后,应用程序的运行效率的提高程度越大。
在本公开实施例中,由于基于识别模型可以无法准确获取到具有参考指令特征的所有待处理指令。为了进一步提升优化效果,可以在应用程序的运行过程中,实时检测指定对象的调用信息,从而获取可能被遗漏的待处理指令。
通过本公开实施例,结合在应用程序运行前预先获取初始指令集包括的待处理指令的方法和在应用程序运行时实时监测初始指令集包括的待处理指令的方法,可以尽可能准确地获取初始指令集包括的全部待处理指令,从而提升对初始指令的优化效果,提升全面提升应用程序的运行效率。
图3示意性示出了根据本公开实施例的确定目标指令方法的的流程图。
如图3所示,上述操作S220从目标指令集中确定与待处理指令对应的目标指令包括操作S321~S323。
在操作S321,确定待处理指令的特征数据,特征数据包括的操作码、操作寄存器信息和指令关联信息。
在操作S322,基于指令关联信息,从目标指令集中获取与操作码对应的目标操作码,以及与操作寄存器信息对应的目标寄存器信息。
在操作S323,根据目标操作码和目标寄存器信息生成目标指令。
在本公开实施例中,操作码可以为指令指示的运算类型,操作寄存器信息可以为存储运算对象的寄存器地址和存储运算结果的寄存器地址,指令关联信息可以表示多个初始指令之间的关系。基于操作码、操作寄存器信息和指令关联信息,可以确定待处理指令的类型以及执行对象。
例如,待处理指令可以为mov指令,mov指令表示把一个字节、字或双字的操作数从源位置传送到目的位置,源操作数的内容不变。mov指示运算类型,操作数为运算对象,源位置为存储操作数的操作寄存器地址,目的位置为存储运算结果的目的寄存器的地址。
例如,初始指令可以为mov eax,dword ptr[12345678],指示把内存地址12345678中的数据以每次读取4字节的方式传送给寄存器eax。其中,操作码为mov,操作寄存器信息包括ptr[12345678]和eax,指令关联信息指示了mov指令可以被独立作为待处理指令。
例如,基于运算类型mov,可以确定目标操作码为vmovdqu,vmovdqu表示把16字节、32字节和64字节的操作数从源位置传送到目的位置,源操作数的内容不变。
因此,目标指令可以为vmovdqu ymm0,ymmword ptr[12345678],指示了把内存地址12345678中的数据以每次读取32字节的方式传送给寄存器ymm0。其中,目标操作码为vmovdqu,目标操作寄存器信息包括ptr[12345678]和ymm0。
在本公开实施例中,假设内存地址12345678存储有64字节的数据。基于初始指令,操作数量为16次。基于目标指令,操作数量为2次。因此,在应用程序的运行过程中,针对此运算指令,基于目标指令相比于初始指令的运算效率可以提高约87.5%。
在本公开实施例中,根据目标操作码和目标寄存器信息生成目标指令可以是基于目标操作码和目标寄存器信息生成二进制形式的壳代码shellcode,并将壳代码存储在内存空隙中,或者存储在动态申请的内存空间中。
在本公开实施例中,在生成目标指令后,还可以对该目标指令进行校验。在确定目标指令无误的情况下,基于目标指令和初始指令集运行应用程序。
图4示意性示出了根据本公开实施例的运行应用程序的示意图。
如图4所示,在实施例400中,初始指令集中依次执行的多个初始指令的存储地址分别为地址401、地址402和地址403。地址401、地址402和地址403可以为终端设备的本地存储地址。例如,地址401用于存储第一初始指令,地址402用于存储第二初始指令,地址403用于存储第三初始指令。
例如,地址401、地址402和地址403可以为一段地址空间,地址401、地址402和地址403包括起始地址和结束地址。地址401、地址402和地址403可以是连续的,也可是不连续的。
例如,地址401的地址范围为0-10,其中起始地址为0,结束地址为10。地址402的地址范围为11-20,其中起始地址为11,结束地址为20。地址403的地址范围为30-40,其中起始地址为30,结束地址为40。
例如,处理器可以从地址范围0-10中读取第一初始指令。在第一初始指令被执行完毕后,处理器可以从地址范围11-20中读取第二初始指令。相应地,在第二初始指令被执行完毕后,处理器可以从地址范围30-40中读取第三初始指令。
例如,地址范围0-10与地址范围11-20关联,地址范围11-20与地址范围30-40关联。例如,地址范围0-10的结束地址为10与地址范围11-20的起始地址11关联。在处理器从地址范围0-10中读取第一初始指令后,处理器可以确定下一指令的读取地址的起点为与结束地址10关联的起始地址11。例如,地址范围11-20的结束地址为20与地址范围30-40的起始地址30关联。在处理器从地址范围11-20中读取第二初始指令后,处理器可以确定下一指令的读取地址的起点为与结束地址20关联的起始地址30。
在本公开实施例中,基于目标指令和初始指令集,运行应用程序可以包括:在执行初始指令集的过程中,若下一指令为待处理指令,获取待处理指令对应的第一地址;以及从第一地址读取目标指令并执行。
例如,存储在地址402的第二初始指令可以为待处理指令。地址404存储了与第二初始指令对应的目标指令,第一地址为地址404。
在第一初始指令被执行完毕后,基于与结束地址10关联的起始地址11,可以确定下一指令为作为待处理指令的第二初始指令。此时,处理器可以获取目标指令的地址404,并从地址404中读取目标指令并执行。这可以通过执行目标指令来代替执行第二初始指令,从而通过执行高效指令来提高应用程序的运行效率。
例如,可以对待处理指令的地址402设置钩子hook,使得地址404可挂在地址402的起始地址上。在这种情况下,若下一指令的地址为地址402时,可以通过hook,读取地址404中存储的目标指令并执行。
在本公开实施例中,基于目标指令和初始指令集,运行应用程序,还包括:获取待处理指令相对应的第二地址,使得目标指令执行完后,基于第二地址,执行初始指令集。
例如,第二地址可以为待处理指令的地址402的结束地址20。在目标地址被执行完毕后,获取与目标指令对应的第二初始指令的地址402的结束地址20,基于与结束地址200关联的起始地址30,可以确定下一指令为第三初始指令。
在本公开实施例中,在目标指令被执行完毕后,指令的执行顺序恢复为初始指令集中初始指令的执行顺序,可以确保应用程序的原有执行逻辑可以被正常执行。
图5示意性示出了根据本公开实施例的应用程序运行装置的框图。
如图5所示,应用程序运行装置500包括获取模块510、确定模块520和运行模块530。
根据本公开的一些实施例,应用程序运行装置500可以用于实现参考图1~图4描述的根据本公开实施例的应用程序运行方法。
获取模块510可以执行例如操作S210,用于在确定应用程序的运行环境支持目标指令集的情况下,基于应用程序的初始指令集,获取具有参考指令特征的待处理指令。目标指令集的运行效率高于初始指令集的运行效率。
确定模块520可以执行例如操作S220,用于从目标指令集中确定与待处理指令对应的目标指令。
运行模块530可以执行例如操作S230,用于基于目标指令和初始指令集,运行应用程序。
例如,获取模块510、确定模块520和运行模块530中的任意多个可以合并在一个模块中实现,或者其中的任意一个模块可以被拆分成多个模块。或者,这些模块中的一个或多个模块的至少部分功能可以与其他模块的至少部分功能相结合,并在一个模块中实现。根据本公开的实施例,获取模块510、确定模块520和运行模块530中的至少一个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上系统、基板上的系统、封装上的系统、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,获取模块510、确定模块520和运行模块530中的至少一个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
根据本公开实施例,上述获取模块510包括识别单元和第一确定单元。识别单元用于识别初始指令集包括的多个初始指令的特征数据。第一确定单元用于在确定初始指令的特征数据与参考指令特征对应的指定特征数据一致的情况下,确定初始指令中为待处理指令。
根据本公开实施例,上述获取模块510包括第二确定单元和第三确定单元。第二确定单元用于基于初始指令集,确定指定对象的调用信息,指定对象与参考指令特征相关。第三确定单元用于在确定调用信息满足预设条件的情况下,确定与指定对象相关的指令为待处理指令。
根据本公开实施例,上述确定模块520包括第四确定单元、第一获取单元和生成单元。第四确定单元用于确定待处理指令的特征数据,特征数据包括的操作码、操作寄存器信息和指令关联信息。第一获取单元用于基于指令关联信息,从目标指令集中获取与操作码对应的目标操作码,以及与操作寄存器信息对应的目标寄存器信息。生成单元用于根据目标操作码和目标寄存器信息生成目标指令。
根据本公开实施例,上述运行模块530包括第二获取单元和执行单元。第二获取单元用于在执行初始指令集的过程中,若下一指令为待处理指令,获取待处理指令对应的第一地址。执行单元用于从第一地址读取目标指令并执行。
根据本公开实施例,获取待处理指令相对应的第二地址,使得目标指令执行完后,基于第二地址,执行初始指令集。
根据本公开实施例,参考指令特征对应的指令包括批量整型运算指令、批量浮点数运算指令、矩阵运算指令、与图像处理相关的指令、与音视频处理相关的指令和与深度学习相关的指令的至少一种。
需要说明的是,本公开的技术方案中,所涉及的用户个人信息的收集、存储、使用、加工、传输、提供、公开和应用等处理,均符合相关法律法规的规定,采取了必要保密措施,且不违背公序良俗。在本公开的技术方案中,在获取或采集用户个人信息之前,均获取了用户的授权或同意。
根据本公开的实施例,本公开还提供了一种电子设备、一种可读存储介质和一种计算机程序产品。
图6示出了可以用来实施本公开实施例的方法的示例电子设备800的示意性框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
如图6所示,设备600包括计算单元601,其可以根据存储在只读存储器(ROM)602中的计算机程序或者从存储单元608加载到随机访问存储器(RAM)603中的计算机程序,来执行各种适当的动作和处理。在RAM 603中,还可存储设备600操作所需的各种程序和数据。计算单元601、ROM 602以及RAM 603通过总线604彼此相连。输入/输出(I/O)接口605也连接至总线604。
电子设备600中的多个部件连接至I/O接口605,包括:输入单元606,例如键盘、鼠标等;输出单元607,例如各种类型的显示器、扬声器等;存储单元608,例如磁盘、光盘等;以及通信单元609,例如网卡、调制解调器、无线通信收发机等。通信单元609允许设备600通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
计算单元601可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元601的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。计算单元601执行上文所描述的各个方法和处理,例如应用程序运行方法。例如,在一些实施例中,应用程序运行方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元608。在一些实施例中,计算机程序的部分或者全部可以经由ROM 602和/或通信单元609而被载入和/或安装到设备600上。当计算机程序加载到RAM 603并由计算单元601执行时,可以执行上文描述的应用程序运行方法的一个或多个步骤。备选地,在其他实施例中,计算单元601可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行应用程序运行方法。
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、复杂可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。其中,服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与VPS服务(“Virtual Private Server”,或简称“VPS”)中,存在的管理难度大,业务扩展性弱的缺陷。服务器也可以为分布式系统的服务器,或者是结合了区块链的服务器。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。

Claims (11)

1.一种应用程序运行方法,包括:
在确定应用程序的运行环境支持目标指令集的情况下,基于所述应用程序的初始指令集,获取具有参考指令特征的待处理指令,所述目标指令集的运行效率高于所述初始指令集的运行效率;
从所述目标指令集中确定与所述待处理指令对应的目标指令;以及
基于所述目标指令和所述初始指令集,运行所述应用程序。
2.根据权利要求1所述的方法,其中,所述基于所述目标指令和所述初始指令集,运行所述应用程序,包括:
在执行所述初始指令集的过程中,若下一指令为所述待处理指令,获取所述待处理指令对应的第一地址;以及
从所述第一地址读取所述目标指令并执行。
3.根据权利要求2所述的方法,其中,所述基于所述目标指令和所述初始指令集,运行所述应用程序,还包括:
获取所述待处理指令相对应的第二地址,使得所述目标指令执行完后,基于所述第二地址,执行所述初始指令集。
4.根据权利要求1所述的方法,其中,所述基于所述应用程序的初始指令集,获取具有参考指令特征的待处理指令,包括:
识别所述初始指令集包括的多个初始指令的特征数据;以及
在确定所述初始指令的特征数据与所述参考指令特征对应的指定特征数据一致的情况下,确定所述初始指令中为所述待处理指令。
5.根据权利要求1所述的方法,其中,所述基于所述应用程序的初始指令集,获取具有参考指令特征的待处理指令,包括:
基于所述初始指令集,确定指定对象的调用信息,所述指定对象与所述参考指令特征相关;以及
在确定所述调用信息满足预设条件的情况下,确定与所述指定对象相关的指令为所述待处理指令。
6.根据权利要求1所述的方法,其中,所述从所述目标指令集中确定与所述待处理指令对应的目标指令,包括:
确定所述待处理指令的特征数据,所述特征数据包括的操作码、操作寄存器信息和指令关联信息;
基于所述指令关联信息,从所述目标指令集中获取与所述操作码对应的目标操作码,以及与所述操作寄存器信息对应的所述目标寄存器信息;以及
根据所述目标操作码和所述目标寄存器信息生成所述目标指令。
7.根据权利要求1-6任一项所述的方法,其中,所述参考指令特征对应的指令包括批量整型运算指令、批量浮点数运算指令、矩阵运算指令、与图像处理相关的指令、与音视频处理相关的指令和与深度学习相关的指令的至少一种。
8.一种应用程序运行装置,包括:
获取模块,用于在确定应用程序的运行环境支持目标指令集的情况下,基于所述应用程序的初始指令集,获取具有参考指令特征的待处理指令,所述目标指令集的运行效率高于所述初始指令集的运行效率;
确定模块,用于从所述目标指令集中确定与所述待处理指令对应的目标指令;以及
运行模块,用于基于所述目标指令和所述初始指令集,运行所述应用程序。
9.一种电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-7中任一项所述的方法。
10.一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行根据权利要求1-7中任一项所述的方法。
11.一种计算机程序产品,包括计算机程序/指令,其特征在于,该计算机程序/指令被处理器执行时实现权利要求1-7中任一项所述方法的步骤。
CN202311435823.2A 2023-10-31 2023-10-31 应用程序运行方法、装置、电子设备以及存储介质 Pending CN117519712A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311435823.2A CN117519712A (zh) 2023-10-31 2023-10-31 应用程序运行方法、装置、电子设备以及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311435823.2A CN117519712A (zh) 2023-10-31 2023-10-31 应用程序运行方法、装置、电子设备以及存储介质

Publications (1)

Publication Number Publication Date
CN117519712A true CN117519712A (zh) 2024-02-06

Family

ID=89754160

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311435823.2A Pending CN117519712A (zh) 2023-10-31 2023-10-31 应用程序运行方法、装置、电子设备以及存储介质

Country Status (1)

Country Link
CN (1) CN117519712A (zh)

Similar Documents

Publication Publication Date Title
CN109032706B (zh) 智能合约执行方法、装置、设备和存储介质
US9678767B2 (en) Unified extensible firmware interface (UEFI) driver and protocol
WO2017166447A1 (zh) 内核模块加载方法和装置
US10261844B2 (en) Generic language application programming interface interpreter
US11016769B1 (en) Method and apparatus for processing information
CN115309562A (zh) 算子调用系统、算子生成方法,电子设备
US20180203726A1 (en) Virtual machine migration method and apparatus
CN110221840B (zh) 应用程序的功能实现方法及装置、设备及存储介质
CN116662039B (zh) 基于共享内存的工业信息并行检测方法、装置及介质
CN111506393B (zh) 一种基于arm的虚拟化装置及其使用方法
CN114564241B (zh) 硬件设备的访问方法、装置、计算机设备和存储介质
CN117519712A (zh) 应用程序运行方法、装置、电子设备以及存储介质
CN111858016A (zh) 计算作业处理方法、系统、移动设备及加速设备
CN109669715A (zh) 应用程序动态更新方法、设备及存储介质
CN113805858B (zh) 持续部署脚本语言开发的软件的方法和装置
CN114510334A (zh) 类实例的调用方法、装置、电子设备及自动驾驶车辆
CN113590221A (zh) 着色器变体数量的检测方法、装置、电子设备及存储介质
CN113590225A (zh) 贴图检测方法、装置、电子设备及存储介质
US20240311097A1 (en) Cloud Technology-Based Graphics Program Online Development Method and System, and Related Device
CN117251250B (zh) 基于云原生平台的容器管理方法及相关设备
CN116627682B (zh) 基于共享内存的远程工业信息检测方法及装置
CN116661951B (zh) 镜像文件处理方法、装置、电子设备及存储介质
EP4191407A1 (en) Method and device for generating and registering ui service package and loading ui service
CN210166772U (zh) 计算系统
CN117270824A (zh) 一种项目构建方法、装置、设备和介质

Legal Events

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