CN115509608A - 指令优化方法、装置、电子设备及计算机可读存储介质 - Google Patents
指令优化方法、装置、电子设备及计算机可读存储介质 Download PDFInfo
- Publication number
- CN115509608A CN115509608A CN202211469981.5A CN202211469981A CN115509608A CN 115509608 A CN115509608 A CN 115509608A CN 202211469981 A CN202211469981 A CN 202211469981A CN 115509608 A CN115509608 A CN 115509608A
- Authority
- CN
- China
- Prior art keywords
- instruction
- copy
- instructions
- target
- copy instruction
- 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
Images
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/30003—Arrangements for executing specific machine instructions
-
- 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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal 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)
- Devices For Executing Special Programs (AREA)
Abstract
本申请涉及一种指令优化方法、装置、电子设备及计算机可读存储介质,属于计算机技术领域。方法包括获取应用程序中指令序列中的拷贝指令,以及获取所述指令序列中与所述拷贝指令存在引用关系的指令;从与所述拷贝指令存在引用关系的指令中筛选出目标指令,所述目标指令符合指令合并所需的预设条件;将所述目标指令与所述拷贝指令进行合并,得到带有所述拷贝指令的源操作数的新指令。采用本申请所示的指令优化方法,可以将拷贝指令合并到目标指令中,从而产生新指令,这样便可减少整个函数的指令数,随着指令数的减少,相应地,所需的寄存器也随之减少,进而可以提高应用程序在硬件上运行的性能。
Description
技术领域
本申请属于计算机技术领域,具体涉及一种指令优化方法、装置、电子设备及计算机可读存储介质。
背景技术
大量的指令交互会降低芯片的性能,为了提高访存操作的性能及降低功耗,当前常见的指令优化方式是运用数学计算公式的等价性对应用程序的原始指令进行变换,例如,可以将乘法指令和加法指令合并为乘加指令,以达到指令合并的目的。或者,利用编译技术合并一些指令,如利用peephole(窥孔)优化技术来合并一些指令。
但是无论利用以上哪种方法,均不能消除特殊场景中的拷贝指令。在硬件设计中会存在不同类型寄存器之间进行数据交换的情况,也存在需要将立即数拷贝到计算寄存器中的情况,这两种情况均会导致应用程序产生的指令序列中会存在大量的拷贝指令,而现有的指令优化方法不会将拷贝指令与其他指令进行合并。
发明内容
鉴于此,本申请的目的在于提供一种指令优化方法、装置、电子设备及计算机可读存储介质,以改善现有指令优化方法所存在的缺陷,如:不会消除拷贝指令的问题。
本申请的实施例是这样实现的:
第一方面,本申请实施例提供了一种指令优化方法,包括:获取应用程序中指令序列中的拷贝指令,以及获取所述指令序列中与所述拷贝指令存在引用关系的指令;从与所述拷贝指令存在引用关系的指令中筛选出目标指令,所述目标指令符合指令合并所需的预设条件;将所述目标指令与所述拷贝指令进行合并,得到带有所述拷贝指令的源操作数的新指令。
本申请实施例中,通过获取应用程序中指令序列中的拷贝指令,以及获取指令序列中与拷贝指令存在引用关系的指令,并从与拷贝指令存在引用关系的指令中找出符合指令合并所需的预设条件的目标指令,并将拷贝指令合并到目标指令中,从而产生(可用以替换合并前原指令的)新指令。这样有利于减少整个函数的指令数,随着指令数的减少,相应地,所需用的寄存器也随之减少。这样便可提高芯片访存操作的性能及降低功耗,可提高应用程序在硬件上运行的性能。
结合第一方面实施例的一种可能的实施方式,所述拷贝指令的源操作数为立即数或常量寄存器操作数。
结合第一方面实施例的一种可能的实施方式,若所述拷贝指令的源操作数为立即数,将所述目标指令与所述拷贝指令进行合并,包括:将所述拷贝指令中的立即数替换为常量寄存器操作数;将所述目标指令与源操作数替换后的所述拷贝指令进行合并。
本申请实施例中,若拷贝指令的源操作数为立即数操作数,则在将目标指令与拷贝指令进行合并时,可先将拷贝指令中的立即数操作数替换为常量寄存器操作数,之后再将目标指令与源操作数替换后的所述拷贝指令进行合并,这样,即便是指令序列中存在不同类型(源操作数为立即数操作数以及源操作数为常量寄存器操作数)的拷贝指令,也可以进行合并,从而实现将不同类型的拷贝指令与其他指令进行合并的目的。
结合第一方面实施例的一种可能的实施方式,将所述目标指令与所述拷贝指令进行合并,包括:将每一条所述目标指令与所述拷贝指令进行合并,合并时,将每一条所述目标指令中与所述拷贝指令存在引用关系的部分替换为所述拷贝指令的源操作数。
本申请实施例中,将目标指令与拷贝指令进行合并时,将每一条目标指令与拷贝指令进行合并,避免遗漏。同时,通过将目标指令中的源操作数(目标指令中与拷贝指令存在引用关系的部分)替换为拷贝指令的源操作数,可以减少拷贝指令的目的操作数的活跃期或生存期,在寄存器分配的时候可以降低寄存器个数。
结合第一方面实施例的一种可能的实施方式,所述方法还包括:若与所述拷贝指令存在引用关系的所有指令中,每条指令都符合指令合并所需的所述预设条件,则将与所述拷贝指令存在引用关系的所有指令作为所述目标指令,在将所述目标指令与所述拷贝指令进行合并之后,将所述拷贝指令删除。
本申请实施例中,若与拷贝指令存在引用关系的指令均为符合条件的目标指令,则在将目标指令与拷贝指令进行合并之后,将拷贝指令删除,可以最大限度的减少指令的数量及所需寄存器的数量。在指令序列中的一条或多条拷贝指令被用来与符合条件的多个目标指令都进行合并的情况下,可得到多个目标指令分别对应的多个新指令,在采用新指令来代替合并前的目标指令的情况下,可以使得原本被目标指令依赖的拷贝指令在新指令的使用场景下不再被依赖,这样的情况下,即使删除对应的拷贝指令也不会影响应用程序的正常运行,可以实现对于拷贝指令的消除,缩减使用的指令总数和寄存器个数,利于提升应用程序在硬件上的性能。
结合第一方面实施例的一种可能的实施方式,所述预设条件包括:指令不为内联汇编指令、指令的源操作数必须支持常量寄存器、且指令所在的基本块由所述拷贝指令所在基本块控制或支配。
本申请实施例中,在从与拷贝指令存在引用关系的指令中筛选目标指令时,需要同时满足上述条件,由于将不支持合并的所有条件都考虑在内,这样可以降低因指令合并过程而导致的应用程序无法执行或执行错误的风险。
结合第一方面实施例的一种可能的实施方式,获取所述指令序列中与所述拷贝指令存在引用关系的指令,包括:获取所述指令序列中与所述拷贝指令存在use-def关系的指令。
由于use-def关系为指令之间较为常见的引用关系,因此,在获取指令序列中与拷贝指令存在引用关系的指令时,直接获取指令序列中与拷贝指令存在use-def关系的指令,这样既可以实现前述发明目的还可以提高效率。
其中,在与所述拷贝指令存在use-def关系的指令中确定出符合条件的目标指令,并将所述目标指令与所述拷贝指令进行合并,得到带有所述拷贝指令的源操作数的新指令之后,可利用带有所述拷贝指令的源操作数的新指令,替换所述目标指令。
第二方面,本申请实施例还提供了一种指令优化装置,包括:获取模块、筛选模块以及合并模块;获取模块,用于获取应用程序中指令序列中的拷贝指令,以及用于获取所述指令序列中与所述拷贝指令存在引用关系的指令;筛选模块,用于从与所述拷贝指令存在引用关系的指令中筛选出目标指令,所述目标指令符合指令合并所需的预设条件;合并模块,用于将所述目标指令与所述拷贝指令进行合并,得到带有所述拷贝指令的源操作数的新指令。
第三方面,本申请实施例还提供了一种电子设备,包括:存储器和处理器,所述处理器与所述存储器连接;所述存储器,用于存储程序;所述处理器,用于调用存储于所述存储器中的程序,以执行上述第一方面实施例和/或结合第一方面实施例的任一种可能的实施方式提供的方法。
第四方面,本申请实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器运行时,执行上述第一方面实施例和/或结合第一方面实施例的任一种可能的实施方式提供的方法。
本申请的其他特征和优点将在随后的说明书阐述。本申请的目的和其他优点可通过在所写的说明书以及附图中所特别指出的结构来实现和获得。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。通过附图所示,本申请的上述及其它目的、特征和优势将更加清晰。在全部附图中相同的附图标记指示相同的部分。并未刻意按实际尺寸等比例缩放绘制附图,重点在于示出本申请的主旨。
图1示出了本申请实施例提供的一种指令优化方法的流程示意图。
图2示出了本申请实施例提供的一种指令优化方法的原理示意图。
图3示出了本申请实施例提供的一种指令优化装置的功能模块框图。
图4示出了本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本申请中的术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。另外,术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系。例如,M和/或N,可以表示:单独存在M,同时存在M和N,单独存在N这三种情况。在本文示出和讨论的所有例子中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它例子可以具有不同的值。可以理解的是,本申请的指令示例仅是为了便于理解所写的,并非暗指实际指令的表达形式。
为便于理解,下面对本申请实施例可能涉及的一些概念进行介绍。
操作数:是指令的一个重要字段(指令还有一个重要字段是操作码),通常,一条指令的操作数字段可有一个或多个操作数。根据操作数的不同来源(指令本身、寄存器、或内存、存储器),操作数的类型可包括:立即数操作数(也称为立即操作数,本申请中可简称立即数)、寄存器操作数、存储器操作数。根据操作数在指令中的用途、作用,操作数也可以分为源操作数和目的操作数。
立即数操作数:立即数通常是在立即寻址方式下使用的指令给出的数,指令要操作的数据出现在指令中(直接在机器指令中给出或限制这种操作数本身),通常用于加载值的指令或对常量执行算术或逻辑运算的指令中。立即数操作数只能作为源操作数,不能作为目的操作数。
寄存器操作数:指令要操作的对象(例如数据内容或地址转移所需的目的地址)存放在寄存器中,指令中给出相应的寄存器名进行表示。
存储器操作数:指令要操作的对象存放在一些内存单元中,指令中直接或间接指出对应的内存单元物理地址进行表示。
为了提升应用程序在硬件上运行的性能,本申请实施例提供一种指令优化方法,通过分析指令序列中的机器指令(简称指令)的数据依赖和指令所在基本块的控制依赖,从与拷贝指令存在引用关系的指令中找出符合指令合并所需的预设条件的目标指令,并将拷贝指令合并到目标指令中,从而产生用以替换合并前原指令的新指令,这样便有利于减少整个函数的指令数,随着指令数的减少,相应地,所需的寄存器也随之减少,有利于应用程序在硬件上的运行性能。
为了更好的理解,下面将结合图1,对本申请实施例提供的指令优化方法进行说明。
S1:获取应用程序中指令序列中的拷贝指令,以及获取所述指令序列中与所述拷贝指令存在引用关系的指令。
一种实施方式下,关于S1,可以是直接获取应用程序的指令序列中的拷贝指令,例如直接从存储区中获取应用程序的指令序列中的拷贝指令,此时的拷贝指令已事先获取到,在需要时直接拿过来即可。又一种实施方式下,可以是通过分析应用程序中的指令序列,并找出指令序列中的拷贝指令,从而获取指令序列中的拷贝指令。例如,拷贝指令为A,指令C=A+B或C=A*B等可视为与拷贝指令存在引用关系的指令。
可选地,关于此处S1获取的拷贝指令,S1中的拷贝指令的源操作数为立即数(即,立即数操作数)或常量寄存器操作数。例如,a=3为源操作数为立即数的拷贝指令,b=cr0为源操作数为常量寄存器操作数的拷贝指令。又例如,x=4为源操作数为立即数的拷贝指令,x=cr1为源操作数为常量寄存器操作数的拷贝指令。
同理,关于S1,获取指令序列中与拷贝指令存在引用关系的指令时,一种实施方式下,可以是直接获取指令序列中与拷贝指令存在引用关系的指令,此时,与拷贝指令存在引用关系的指令已事先获取到,在需要时直接拿过来即可。又一种实施方式下,可以是通过分析指令序列中除了拷贝指令外的其他指令,并找出指令序列中与拷贝指令存在引用关系的指令。
需要说明的是,指令序列中的拷贝指令可以有多个,因此,可获取指令序列中与每一条拷贝指令分别存在引用关系的指令。例如,假设有三条拷贝指令,分别为拷贝指令1、拷贝指令2、拷贝指令3,则需要获取指令序列中与拷贝指令1存在引用关系的指令、需要获取指令序列中与拷贝指令2存在引用关系的指令、需要获取指令序列中与拷贝指令3存在引用关系的指令。
在获取指令序列中与拷贝指令存在引用关系的指令时,可以是遍历指令序列中除了拷贝指令外的其他指令,获取指令序列中与拷贝指令存在use-def关系的指令。其中,一个变量在某处被定义之后,可能会在很多地方被用到。对于一个变量,需要找到使用这个变量的地方,或者找到定义这个变量的地方,这种使用-定义的关系,称之为use-def关系。
上述的指令序列可以是用户编写的应用程序中的指令序列,也即可以是用户编写的指令代码段,可以是用户编写的应用程序产生的指令序列。该应用程序是指:用户编写的在硬件上运行的程序,比如,可以是进行矩阵计算、图像数据结构化处理和/或关键信息提取等功能的应用程序。例如,硬件上运行的程序可以是在GPU(Graphics Processing Unit,图形处理器)或GPGPU(General-Purpose Computing on Graphics Processing Units,通用图形处理器)上运行的程序。关于运行应用程序的硬件,可以是同构架构的,也可以是异构架构的。
S2:从与所述拷贝指令存在引用关系的指令中筛选出目标指令,所述目标指令符合指令合并所需的预设条件。
在获取到指令序列中与拷贝指令存在引用关系的指令后,从与拷贝指令存在引用关系的指令中筛选出目标指令,目标指令符合指令合并所需的预设条件。
针对任一条拷贝指令,在从与该拷贝指令存在引用关系的指令中筛选出目标指令时,可以是检测与该拷贝指令存在引用关系的每条指令是否符合指令合并所需的预设条件,其中符合指令合并所需的预设条件的指令即可作为目标指令。
其中,预设条件可以是:与拷贝指令存在引用关系的指令所在的基本块由该拷贝指令所在的基本块控制或支配。
此外,预设条件还可以在已有基础上进一步包括:与拷贝指令存在引用关系的指令不为内联汇编指令,和/或,与拷贝指令存在引用关系的指令的源操作数必须支持常量寄存器等限制条件。
也即,一种实施方式下,预设条件包括:指令不为内联汇编指令、指令的源操作数必须支持常量寄存器、且指令所在的基本块由拷贝指令所在基本块控制或支配。
基本块是一条或数条指令的组合,它拥有唯一一个指向块起始位置的入口点和唯一一个指向块结束位置的退出点。
S3:将所述目标指令与所述拷贝指令进行合并,得到带有所述拷贝指令的源操作数的新指令。
在获取到指令序列中的拷贝指令,以及从与拷贝指令存在引用关系的指令中筛选出目标指令后,便可将目标指令与拷贝指令进行合并,得到带有拷贝指令源操作数的新指令。
在将目标指令与拷贝指令进行合并,得到带有拷贝指令源操作数的新指令的过程中,可以是将每一条目标指令与该目标指令对应的拷贝指令进行合并,得到每一条带有拷贝指令源操作数的新指令。例如,在与拷贝指令1存在引用关系的指令中,有3条指令符合指令合并所需的预设条件,即,有3条目标指令,分别记为目标指令1、目标指令2、目标指令3,则在合并时,需要将目标指令1与拷贝指令1合并、将目标指令2与拷贝指令1进行合并、将目标指令3与拷贝指令1进行合并,得到这3条目标指令分别对应的新指令(目标指令1对应的新指令、目标指令2对应的新指令、目标指令3对应的新指令),这3条新指令都带有该拷贝指令1的源操作数。
如前所述,由于本申请中拷贝指令的源操作数可以是立即数或常量寄存器操作数,因此关于S3,若拷贝指令的源操作数为立即数,将目标指令与拷贝指令进行合并的过程可以是:先将拷贝指令中的立即数替换为常量寄存器操作数,之后将目标指令与源操作数替换后的拷贝指令进行合并。
需要说明的是,将拷贝指令中的立即数操作数替换为常量寄存器操作数这一步骤也可以是在S3之前完成(例如,可在S1的指令获取过程中完成对于拷贝指令中的操作数替换,或者,在获取指令后至合并指令之前的任意时期完成拷贝指令中的操作数替换),因此,不能将该步骤包含在S3内的实施方式理解成是对本申请的唯一实施限制。
为了更好的理解,结合例子进行说明,假设源操作数为立即数的拷贝指令为a=3,目标指令c=a+b,先将拷贝指令中的立即数操作数替换为常量寄存器操作数,如得到a=cr0,之后将目标指令与源操作数替换后的拷贝指令进行合并,也即将a=cr0与c=a+b进行合并,得到c= cr0+b的新指令。通过采用拷贝指令的源操作数替换目标指令中的源操作数,可以减少拷贝指令目的操作数的活跃期或生存期,在寄存器分配的时候可以降低寄存器个数。
需要说明的是,在将拷贝指令中的立即数操作数替换为常量寄存器操作数的过程,也可以视为对于指令序列的预处理过程或对于拷贝指令的预处理过程。在预处理过程中,可以对指令序列中的拷贝指令进行分析(分析寻找到的拷贝指令的源操作数是否为立即数操作数或常量寄存器操作数,一条拷贝指令中源操作数为常量寄存器的可以不止一个),可调整拷贝指令的操作数顺序,替换拷贝指令中的一些立即数操作数,使得经过操作数调整的拷贝指令能够达到后续合并拷贝指令的要求,也即,使得拷贝指令的源操作数成为常量寄存器操作数。
在将拷贝指令中的立即数操作数替换为常量寄存器操作数时,可记录拷贝指令中的立即数与常量寄存器操作数之间的映射关系(例如可以建立一个映射表),以便于后续在进行指令运算时,基于该映射关系可以获悉常量寄存器操作数对应的立即数的值。例如,假设源操作数为立即数的拷贝指令为a=3,x=4,在将拷贝指令中的立即数操作数替换为常量寄存器操作数时,a=3替换为a=cr0,x=4替换为x=cr1时,还要记录对应的映射关系,如"3<->cr0,4<->cr1"。
在一种实施方式中,在与拷贝指令存在引用关系的所有指令中,每条指令都符合指令合并所需的预设条件,则可将与该拷贝指令存在引用关系的所有指令作为目标指令,在这种情况下,在将目标指令与该拷贝指令进行合并之后,指令优化方法还包括:将该拷贝指令删除。
该实施方式中,由于与该拷贝指令存在引用关系的所有指令都是目标指令,所以在与该拷贝指令存在引用关系的所有指令都各自完成与该拷贝指令的合并后,可以将该拷贝指令删除,可以在不影响应用程序运行的情况下最大限度减少指令的数量和所需寄存器的数量。需要说明的是,若与一条拷贝指令存在引用关系的所有指令都符合指令合并所需的预设条件,但这些指令中还有一部分未完成与对应的这条拷贝指令的合并,则还需要等待这部分指令完成指令合并后才能将对应的这条拷贝指令删除,避免由于提前删除这条拷贝指令而影响与该拷贝指令存在引用关系的一部分指令无法运行。
在另一种实施方式中,与拷贝指令存在引用关系的所有指令中只有部分指令符合指令合并所需的预设条件,也即,与拷贝指令存在引用关系的指令中只有部分指令能够作为目标指令,这种情况下,将这一部分的目标指令与拷贝指令进行合并后,仍需保留拷贝指令,避免与该拷贝指令存在引用关系但却不符预设条件的非目标指令(也即,未经合并的指令)出现引用失败的情况。
一种可选实施方式下,上述的指令优化方法的整体逻辑原理,如图2所示。需要说明的是,图2所示的原理仅为上述指令优化方法的众多实施例中的一种,因此,不能将图2所示指令优化方法,理解成是对本申请的限制。如图2所示,可以先分析指令序列,找出所有拷贝指令,若存在源操作数为立即数的拷贝指令,则将拷贝指令中的立即数替换为常量寄存器操作数,这样,所有的拷贝指令中的源操作数均为常量寄存器操作数。基于这些拷贝指令,可以分析指令序列中的其他指令,找出所有与拷贝指令存在use-def关系的指令。检测与拷贝指令存在use-def关系的每条指令是否均符合指令合并所需的预设条件,从而找出每条拷贝指令分别对应的目标指令。若在与拷贝指令存在use-def关系的所有指令中,每条指令均符合指令合并所需的预设条件,将符合条件的这些指令全部作为目标指令,则将目标指令与拷贝指令进行合并后,删除拷贝指令,若在与拷贝指令存在use-def关系的指令中,只存在部分指令符合指令合并所需的预设条件,则将这部分符合预设条件的指令作为目标指令,与拷贝指令进行合并,并保留拷贝指令。
本申请中,通过将拷贝指令合并到目标指令中,从而产生能够用以替换合并前原指令的新指令,这样便可减少整个函数的指令数,随着指令数的减少,相应地,所需的寄存器也随之减少,这样便可提高芯片访存操作的性能及降低功耗,提高应用程序在硬件上运行的性能;同时,通过将目标指令中的源操作数替换为拷贝指令的源操作数,可以减少拷贝指令目的操作数的活跃期或生存期,在寄存器分配的时候可以降低寄存器个数。
通过本申请实施例提供的指令优化方法,可以通过检索函数内部的机器指令的数据依赖关系和指令所在基本块的控制依赖关系,将满足条件的拷贝指令合并到其他的指令,然后删除拷贝指令,减少整个函数对应的应用程序需要使用的指令数和寄存器的个数,提升应用程序在硬件上的性能。上述方法可良好应用于GPU、GPGPU,实现对于拷贝指令的传播优化,可对带常量寄存器的场景进行针对性优化。
基于同样的发明构思,本申请实施例还提供了一种指令优化装置100,如图3所示,该指令优化装置100包括:获取模块110、筛选模块120以及合并模块130。
获取模块110,用于获取应用程序中指令序列中的拷贝指令,还用于获取所述指令序列中与所述拷贝指令存在引用关系的指令。
筛选模块120,用于从与所述拷贝指令存在引用关系的指令中筛选出目标指令,所述目标指令符合指令合并所需的预设条件。
合并模块130,用于将所述目标指令与所述拷贝指令进行合并,得到带有所述拷贝指令的源操作数的新指令。
一种实施方式下,获取模块110,用于获取所述指令序列中与所述拷贝指令存在use-def关系的指令。
一种实施方式下,合并模块130,在将所述目标指令与所述拷贝指令进行合并时,具体用于将每一条所述目标指令与所述拷贝指令进行合并。合并时,可将每一条所述目标指令中与所述拷贝指令存在引用关系的部分替换为所述拷贝指令的源操作数。
一种实施方式下,若所述拷贝指令的源操作数为立即数,合并模块130具体还可用于:将所述拷贝指令中的立即数替换为常量寄存器操作数;将所述目标指令与源操作数替换后的所述拷贝指令进行合并。
一种实施方式下,若与所述拷贝指令存在引用关系的指令均为所述目标指令,合并模块130还用于在将所述目标指令与所述拷贝指令进行合并之后,将所述拷贝指令删除。
本申请实施例所提供的指令优化装置100,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容,此处不再赘述。
如图4所示,图4示出了本申请实施例提供的一种电子设备200的结构框图。所述电子设备200包括:收发器210、存储器220、通讯总线230以及处理器240。
所述收发器210、所述存储器220、处理器240各元件相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通讯总线230或信号线实现电性连接。其中,收发器210用于收发数据。存储器220用于存储计算机程序,如存储有图3中所示的软件功能模块,即指令优化装置100。其中,指令优化装置100包括至少一个可以软件或固件(Firmware)的形式存储于所述存储器220中或固化在所述电子设备200的操作系统(Operating System,OS)中的软件功能模块。所述处理器240,用于执行存储器220中存储的可执行模块,例如指令优化装置100包括的软件功能模块或计算机程序。例如,处理器240,用于获取应用程序中指令序列中的拷贝指令,以及获取所述指令序列中与所述拷贝指令存在引用关系的指令;从与所述拷贝指令存在引用关系的指令中筛选出目标指令,所述目标指令符合指令合并所需的预设条件;将所述目标指令与所述拷贝指令进行合并,得到带有所述拷贝指令的源操作数的新指令。
其中,存储器220可以是,但不限于,随机存取存储器(Random Access Memory,RAM),只读存储器(Read Only Memory,ROM),可编程只读存储器(Programmable Read-OnlyMemory,PROM),可擦除只读存储器(Erasable Programmable Read-Only Memory,EPROM),电可擦除只读存储器(Electric Erasable Programmable Read-Only Memory,EEPROM)等。
处理器240可能是一种集成电路芯片,具有信号的处理能力。上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(NetworkProcessor,NP)、图像处理器(Graphics Processing Unit,GPU)、通用图形处理器(GPGPU,General-Purpose Computing on Graphics Processing Units)等;还可以是数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application SpecificIntegrated Circuit,ASIC)、现场可编程门阵列(Field Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器240也可以是任何常规的处理器等。
其中,上述的电子设备200,包括但不限于手机、平板、笔记本、台式计算机、服务器、工控机设备、车载设备等。
本申请实施例还提供了一种非易失性的计算机可读取存储介质(以下简称存储介质),该存储介质上存储有计算机程序,该计算机程序被计算机如上述的电子设备200运行时,执行上述所示的指令优化方法。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本申请的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个计算机可读存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,笔记本电脑,服务器,或者电子设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的计算机可读存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应所述以权利要求的保护范围为准。
Claims (10)
1.一种指令优化方法,其特征在于,包括:
获取应用程序中指令序列中的拷贝指令,以及获取所述指令序列中与所述拷贝指令存在引用关系的指令;
从与所述拷贝指令存在引用关系的指令中筛选出目标指令,所述目标指令符合指令合并所需的预设条件;
将所述目标指令与所述拷贝指令进行合并,得到带有所述拷贝指令的源操作数的新指令。
2.根据权利要求1所述的方法,其特征在于,从所述指令序列中获取到的所述拷贝指令的源操作数为立即数或常量寄存器操作数。
3.根据权利要求1所述的方法,其特征在于,若所述拷贝指令的源操作数为立即数,将所述目标指令与所述拷贝指令进行合并,包括:
将所述拷贝指令中的立即数替换为常量寄存器操作数;
将所述目标指令与源操作数替换后的所述拷贝指令进行合并。
4.根据权利要求1所述的方法,其特征在于,将所述目标指令与所述拷贝指令进行合并,包括:
将每一条所述目标指令与所述拷贝指令进行合并,合并时,将每一条所述目标指令中与所述拷贝指令存在引用关系的部分替换为所述拷贝指令的源操作数。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若与所述拷贝指令存在引用关系的所有指令中,每条指令都符合指令合并所需的所述预设条件,则将与所述拷贝指令存在引用关系的所有指令作为所述目标指令,在将所述目标指令与所述拷贝指令进行合并之后,将所述拷贝指令删除。
6.根据权利要求1-5任一项所述的方法,其特征在于,所述预设条件包括:
指令不为内联汇编指令、指令的源操作数必须支持常量寄存器、且指令所在的基本块由所述拷贝指令所在基本块控制或支配。
7.根据权利要求1-5任一项所述的方法,其特征在于,获取所述指令序列中与所述拷贝指令存在引用关系的指令,包括:
获取所述指令序列中与所述拷贝指令存在use-def关系的指令。
8.一种指令优化装置,其特征在于,包括:
获取模块,用于获取应用程序中指令序列中的拷贝指令,以及获取所述指令序列中与所述拷贝指令存在引用关系的指令;
筛选模块,用于从与所述拷贝指令存在引用关系的指令中筛选出目标指令,所述目标指令符合指令合并所需的预设条件;
合并模块,用于将所述目标指令与所述拷贝指令进行合并,得到带有所述拷贝指令的源操作数的新指令。
9.一种电子设备,其特征在于,包括:
存储器和处理器,所述处理器与所述存储器连接;
所述存储器,用于存储程序;
所述处理器,用于调用存储于所述存储器中的程序,以执行如权利要求1-7中任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,所述计算机程序被处理器运行时,执行如权利要求1-7中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211469981.5A CN115509608B (zh) | 2022-11-23 | 2022-11-23 | 指令优化方法、装置、电子设备及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211469981.5A CN115509608B (zh) | 2022-11-23 | 2022-11-23 | 指令优化方法、装置、电子设备及计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115509608A true CN115509608A (zh) | 2022-12-23 |
CN115509608B CN115509608B (zh) | 2023-03-24 |
Family
ID=84514440
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211469981.5A Active CN115509608B (zh) | 2022-11-23 | 2022-11-23 | 指令优化方法、装置、电子设备及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115509608B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116466995A (zh) * | 2023-06-16 | 2023-07-21 | 紫光同芯微电子有限公司 | 基于复合指令的指令及其操作数的优化方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1527534A (zh) * | 2003-03-07 | 2004-09-08 | �Ҵ���˾ | 使用虚拟目标对象准备和服务无服务器数据传输操作请求 |
CN102968395A (zh) * | 2012-11-28 | 2013-03-13 | 中国人民解放军国防科学技术大学 | 用于微处理器的内存拷贝加速方法及装置 |
CN112199118A (zh) * | 2020-10-13 | 2021-01-08 | Oppo广东移动通信有限公司 | 指令合并方法、乱序执行设备、芯片及存储介质 |
WO2022153024A1 (en) * | 2021-01-15 | 2022-07-21 | Arm Limited | Load chunk instruction and store chunk instruction |
CN115328493A (zh) * | 2022-09-01 | 2022-11-11 | 安谋科技(中国)有限公司 | 用于带掩码的向量指令的编译方法、电子设备和介质 |
-
2022
- 2022-11-23 CN CN202211469981.5A patent/CN115509608B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1527534A (zh) * | 2003-03-07 | 2004-09-08 | �Ҵ���˾ | 使用虚拟目标对象准备和服务无服务器数据传输操作请求 |
CN102968395A (zh) * | 2012-11-28 | 2013-03-13 | 中国人民解放军国防科学技术大学 | 用于微处理器的内存拷贝加速方法及装置 |
CN112199118A (zh) * | 2020-10-13 | 2021-01-08 | Oppo广东移动通信有限公司 | 指令合并方法、乱序执行设备、芯片及存储介质 |
WO2022153024A1 (en) * | 2021-01-15 | 2022-07-21 | Arm Limited | Load chunk instruction and store chunk instruction |
CN115328493A (zh) * | 2022-09-01 | 2022-11-11 | 安谋科技(中国)有限公司 | 用于带掩码的向量指令的编译方法、电子设备和介质 |
Non-Patent Citations (1)
Title |
---|
张军超: ""相连多寄存器组体系结构上的寄存器分配技术"", 《中国优秀博硕士学位论文全文数据库 (博士) 信息科技辑》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116466995A (zh) * | 2023-06-16 | 2023-07-21 | 紫光同芯微电子有限公司 | 基于复合指令的指令及其操作数的优化方法及装置 |
CN116466995B (zh) * | 2023-06-16 | 2024-06-11 | 紫光同芯微电子有限公司 | 基于复合指令的指令及其操作数的优化方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN115509608B (zh) | 2023-03-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107729041B (zh) | 应用程序热更新方法、装置、终端和存储介质 | |
US8984041B2 (en) | Performing arithmetic operations using both large and small floating point values | |
Lam et al. | Fine-grained floating-point precision analysis | |
CN112527414B (zh) | 一种基于前端的数据处理方法、装置、设备及存储介质 | |
CN115509608B (zh) | 指令优化方法、装置、电子设备及计算机可读存储介质 | |
CN110045952B (zh) | 代码调用方法与装置 | |
US8769498B2 (en) | Warning of register and storage area assignment errors | |
CN113485712B (zh) | 一种内核裁剪方法及计算设备 | |
CN114374392A (zh) | 一种数据压缩存储方法、装置、终端设备及可读存储介质 | |
CN113641873A (zh) | 数据处理方法、装置、电子设备及可读存储介质 | |
CN108509460B (zh) | 分布式系统中的数据一致性检查 | |
US9990203B2 (en) | Hardware accuracy counters for application precision and quality feedback | |
JP4870956B2 (ja) | 組み込み用プログラム生成方法、組み込み用プログラム開発システム、及び情報テーブル部 | |
CN111464429B (zh) | 微信小程序多项目兼容共享方法、系统、存储介质及设备 | |
CN114936368A (zh) | 一种Java内存木马检测方法、终端设备及存储介质 | |
CN113971074A (zh) | 事务处理方法、装置、电子设备及计算机可读存储介质 | |
US11182316B2 (en) | Program interrupt code conversion | |
US9477448B2 (en) | Screen-oriented computing program refactoring | |
US20160350155A1 (en) | Synthesizing inputs to preserve functionality | |
US20140244538A1 (en) | Business process management, configuration and execution | |
CN117453548B (zh) | 代码模块信息确定方法、装置、计算机设备和存储介质 | |
CN114168489B (zh) | 一种函数信息获取方法、计算设备及存储介质 | |
US20100100692A1 (en) | Exploiting Register High-Words | |
CN113721925B (zh) | 计算机可读取存储介质、内存指针的编译方法和装置 | |
CN108958746B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |