CN101727335A - 用于二进制代码程序的安装方法和系统 - Google Patents
用于二进制代码程序的安装方法和系统 Download PDFInfo
- Publication number
- CN101727335A CN101727335A CN200810174629A CN200810174629A CN101727335A CN 101727335 A CN101727335 A CN 101727335A CN 200810174629 A CN200810174629 A CN 200810174629A CN 200810174629 A CN200810174629 A CN 200810174629A CN 101727335 A CN101727335 A CN 101727335A
- Authority
- CN
- China
- Prior art keywords
- code
- execution environment
- optimization
- binary code
- program
- 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
Links
Images
Landscapes
- Devices For Executing Special Programs (AREA)
Abstract
本发明提供了一种二进制代码程序的安装方法和系统。该方法包括:检索待安装二进制代码程序代码的安装优化表;用于收集目标计算装置的执行环境参数;根据所述安装优化表和所述执行环境参数,对所述待安装的程序代码执行优化;以及安装优化后的程序。通过本发明,安装后的二进制代码程序将被进一步的优化从而提高了性能。
Description
技术领域
本发明涉及程序的安装方法,尤其涉及用于二进制代码程序的安装方法和系统。
背景技术
很多软件程序的源代码开发完成后,一般通过编译器的编译,和连接器的连接,生成二进制目标代码的安装程序。该二进制目标代码的安装程序在用户计算系统(如个人计算机上)执行安装过程,将该软件安装到目标计算系统上。然后,用户可以开始使用安装后的软件。
在编译和连接时,一般对软件进行必要的优化,以便提高用户软件在目标计算系统上的执行性能。现代很多编译器的设计都包括多个编译步骤和多个优化步骤,每个步骤往往是由一个相对独立的模块实现。优化步骤可以进一步分为优化分析步骤,和优化执行步骤。这样,优化模块进一步可以分为优化分析模块和优化执行模块。
编译器的优化过程,用于协调编译器的输出以减小(如最小化)可执行程序的一些属性或提高效率。其中,最常见的优化是减少程序的执行时间;其次是减少程序占用的内存。此外,应用于便携式计算机,则要求将程序执行的功耗减小。大部分的优化工作,由编译器在编译时完成。此类在编译时进行的优化可以提高产生的代码在时间和存储上的效率。
通用的编程语言,例如C、C++、和Fortran,使用分立的编译,以便为创建较大的程序提供便利。程序被写成多个部分,并且在文件系统中通常存储为分立的文件。每个部分被独立编译。目标代码连接器,将分别编译的多个部分组装成可执行映像。
尽管分别编译是一种无可争议的有用的技术,但是其具有以下缺点:编译器无法执行有些优化,因为优化需要多个程序部分的知识。在连接之前,编译器有时很难针对给定的某个文件进行优化。例如,函数可能在不同文件之间调用,并且需要优化,如消除无用的代码、常数折叠(constant-folding)、全局数据分配,可以在全部程序的各部分同时进行。因此,在整个程序或部分程序被连接起来的过程中,还需要进行连接时的优化。
虽然已有技术在生成目标软件的编译和连接过程中,对软件进行了优化。但是,由于计算系统的不同需求,不同用户仍然希望针对其特定的计算环境提供特定的软件。
发明内容
鉴于已有技术的不足,本发明提供了一种二进制代码程序的安装方法,包括:检索待安装二进制代码程序中的代码的安装优化表;收集目标计算装置的执行环境参数;根据所述安装优化表和所述执行环境参数,对所述待安装的二进制代码程序中的代码执行优化;以及安装优化后的二进制代码程序。这样,安装后的二进制代码程序得到了进一步的优化,从而提高了性能。
本发明还提供了一种生成用于二进制代码程序的安装优化表的方法,包括:确定根据执行环境参数需要进一步优化的二进制代码程序中的代码;确定与所述需要进一步优化的代码相应的代码优化方法;确定需要进一步优化的代码在所述二进制代码程序中的位置;以及将需进一步优化的代码的位置及其相应的代码优化方法加入一安装优化表。
本发明还提供了一种用于安装二进制代码程序的系统,包括:优化表检索装置,用于检索待安装二进制代码程序中的代码的安装优化表;参数收集装置,用于收集目标计算装置的执行环境参数;优化装置,用于根据所述安装优化表和所述执行环境参数,对所述待安装的二进制代码程序中的代码执行优化;以及安装装置,用于安装优化后的二进制代码程序。
本发明还提供了一种生成用于二进制代码程序的安装优化表的系统,包括:优化代码确定装置,用于确定根据执行环境参数需要进一步优化的二进制代码程序中的代码;优化方法确定装置,用于确定与所述需要进一步优化的代码相应的代码优化方法;代码位置确定装置,用于确定需要进一步优化的代码在所述二进制代码程序中的位置;以及优化表形成装置,用于将需进一步优化的代码的位置及其相应的代码优化方法加入一安装优化表。
通过本发明,安装后的二进制代码程序将被进一步的优化从而提高了性能。
附图说明
图1示出了根据本发明一实施例的二进制代码程序的安装方法。
图2示出了根据本发明另一实施例的生成安装优化表的方法。
图3示出了根据本发明另一实施例的利用安装优化表执行的安装流程。
图4示出了根据本发明一实施例的用于安装二进制代码程序的系统方框图。
图5示出了根据本发明一实施例的生成用于二进制代码程序的安装优化表的系统方框图。
具体实施方式
以下参照按照本发明实施例的方法、装置描述本发明。其中,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得通过计算机或其它可编程数据处理装置执行的这些指令,产生实现流程图和/或框图中的方框中规定的功能/操作的装置(means)。
也可以把这些计算机程序指令存储在能指令计算机或其它可编程数据处理装置以特定方式工作的计算机可读介质中,这样,存储在计算机可读介质中的指令产生一个包括实现流程图和/或框图中的方框中规定的功能/操作的指令装置(instruction means)的制造品。
还可以把计算机程序指令加载到计算机或其它可编程数据处理装置上,使得在计算机或其它可编程数据处理装置上执行一系列操作步骤,以产生计算机实现的过程,从而在计算机或其它可编程装置上执行的指令就提供实现流程图和/或框图中的方框中规定的功能/操作的过程。
图1示出了根据本发明一实施例的二进制代码程序的安装方法。在步骤S110开始执行。在参数收集步骤S120,收集目标计算装置的执行环境参数。该执行环境的参数包括硬件参数和/或软件参数。其中,软件参数可以包括用户数和用户密钥、虚拟存储的参数、执行环境中软件处理能力,如执行环境中软件处理图像的能力等等。硬件参数可以包括中央处理单元(CPU)、缓存、内存、输入输出子系统以及矢量化计算等方面的参数。例如,硬件参数可以包括以下参数的一种或多种:CPU的种类以及每种CPU的个数、CPU支持的指令集、矢量化参数、一级缓存的大小、二级缓存大小,内存的总容量和内存页的大小、显示分辨率(该参数对于3D图形显示的程序很有用,将分辨率设置为常量可以提高运算速度)。根据在安装时需要进行的优化,该该执行环境的参数可以包括一种或多种参数。例如,对于需要进行循环分块优化的情况,可以收集目标计算装置的一级缓存的大小、二级缓存大小、内存页的大小组成的组中的一种或多种。
在优化表检索步骤S130,在待安装二进制代码程序代码中检索安装优化表。本领域的技术人员可以理解,该安装优化表也可以存储该待安装的二进制代码程序代码之外。对于优化二进制的安装程序代码,直接分析其二进制代码以便进行优化是非常困难的。本发明采用一安装优化表来明确有可能进一步优化的代码。因此,该安装优化表包括将要被优化的代码在所述二进制代码程序中的位置以及优化目标代码的方法。该安装优化表还可以包括为了优化,需要收集的执行环境参数。安装优化表中的上述内容,可以由编译器在编译源代码时产生,也可以由目标代码连接器产生。在本发明的附图3及其描述中,将详细描述编译器在编译源代码时产生安装优化表。本领域的技术人员可以理解,安装优化表也可以由程序员根据具体需要编辑产生。因为编译器和目标代码连接器相对比较固定,一般由专门的公司提供,不易根据需要来及时改变,而程序员可以根据实际针对系统需要来创建优化目标代码的方法。
在优化步骤S140,用于根据安装优化表和执行环境参数,对所述待安装的程序代码执行优化。其中,优化步骤可以包括编译器所能进行的多种优化,包括但不限于:循环分块优化(Loop tiling optimization)、矢量化优化(vectorization optimization)、常量消除优化(constant foldingoptimization)、循环展开优化(loop unrolling optimization)、相同常量剔除优化(merge duplicate constants)、单指令多数据(simdizationoptimization)、无用代码移除优化(dead code elimination)等等。以循环分块优化(Loop tiling optimization)为例,二进制的目标代码一般由源代码编译产生,该目标代码需要支持多种计算装置的执行环境。因此,在编译时需要采用多种计算装置都支持的参数,或保守的参数以便能支持大多数的执行环境。对于循环分块的大小,编译时通常采用一个很小的固定尺寸以支持老式的执行环境。但是,安装该软件的计算装置的硬件配置却是多种多样,小的固定尺寸的循环分块不能发挥出新式硬件的全部潜力。循环分块大小如果与目标计算装置的硬件配置相匹配,如目标计算装置的一级缓存的大小、二级缓存大小,内存页大小相匹配,将使得循环操作得到优化。从而节约计算装置的资源和软件的执行时间。
对于涉及矢量计算的情况,可以根据参数收集步骤S120所收集的矢量化参数来执行优化。例如,有的计算装置的硬件,如CPU支持矢量化运算,例如对128位向量计算的支持,而有的计算装置的硬件不支持矢量化运算。因此,在优化步骤S140中,可以根据安装优化表和执行环境参数,对所述待安装的二进制代码程序中的代码执行矢量化优化(Vectorization optimization)。
另,不同的计算环境的硬软件参数不同,这些参数反映到应用程序中就是涉及计算环境的常量。因此,在收集到目标计算机的执行环境参数后,可以在优化步骤中根据安装优化表和执行环境参数,对所述待安装的二进制代码程序中的代码执行常量消除优化(constant folding optimization)。
另,计算装置的CPU的种类不同,有IBM提供的Power系列CPU,Cell芯片,Intel提供的CPU,也有AMD提供的CPU。此外,CPU有单核的、双核的以及多核的。一个计算环境中可以包括多种CPU,而每种CPU的个数也可以不同。此外,计算装置屏幕的分辨率或者执行环境的图像处理能力,也可以作为参数用于优化。在优化步骤S140中可以根据这些执行环境参数的一种或多种,对所述待安装的二进制代码程序中的代码执行优化。例如,在本发明的一实施例中,执行环境参数包括至少两种CPU的种类及其个数。不同种类的CPU的多种处理能力不同,其代码需要不同的优化。例如,在一个计算环境中包括Power系列CPU和Cell,则可以针对这两种CPU的特点将代码划分为由不同的CPU处理,并分别对这些代码执行不同的优化方法。此外,CPU支持的指令集、显示分辨率,对于3D图形显示的程序很有用,将分辨率设置为常量可以提高运算速度。
此外,根据执行环境中的软件参数,也可以对待安装程序进行优化。如上文提到的软件参数可以包括用户数和密钥、虚拟存储的参数、执行环境中软件处理能力,如执行环境中软件处理图像的能力等等。
在软件安装的过程中,可以侦测目标计算机系统上的软件参数,并基于此对所安装软件的程序进行优化,以获得更好的执行效率。
例如,数据加密是一类复杂而费时的离散数值软件运算,在数据量大的时候尤甚。在某些使用场景中,密钥往往是长时间固定不变的。例如,在电子邮件的客户端软件中用于签名(signing)的私有密钥对于一个用户来说通常是不会变化的,如果在安装时可以确定,则在待安装软件中的该密钥参数可以用该密钥替换为常数,用于在二进制的安装程序中来将涉及密钥的算法优化。
在这些场景中,依据本发明,我们可以在安装软件的时候对代码施行优化,将加密算法中牵扯到密钥的变量用密钥常量代替,而且在这之后还可以进一步的优化加密解密算法。例如,可以对数据执行加密算法的优化。在加密算法中,模运算(mod,%)是一种常见的运算。考虑如下的C代码片段:
for(i=0;i<key_size;i++)
for(j=0;j<data_size;j++)
result[j]=data[j]%key[i];
在已有技术中,因为key是变量,所以无法进一步的进行优化,而将这段C代码编译为相应的二进制代码。依据本发明的一实施例,可以将key在安装时用用户的固定的密钥代替,使之成为常量。首先,用户密钥的长度是固定的,则上述循环可以被展开优化为:
result[0]=data[0]%key[0];
result[1]=data[1]%key[1];
result[2]=data[2]%key[2];
……
result[n]=data[n]%key[n];
这样做的好处首先是可以避免循环语句的开销。进一步,安装时优化还可以根据key的每一个字节的具体数值进行更进一步的优化。例如可以将取2的整数倍模的运算优化为右移运算,大幅减少运算量。假设key的首字节为8,则上述第一条指令:
result[0]=data[0]%8;
可以被进一步优化为:
result[0]=data[0]>>3;
这样,在安装时,可以通过执行上述优化方法,而将与上述C代码相应的二进制代码进一步进行优化为与上述优化后的代码相应的二进制代码。
通过上述优化,加密算法在处理大数据输入的时候可以获得显著的性能提升。
在本发明的另一实施例中,移动设备的嵌入式操作系统的功能往往很有限,或对有些功能的支持不完整。已有技术中,软件供应商往往要为不同厂商的不同型号的移动设备提供不同的安装文件。但是市面上有成千上万种移动设备,软件供应商不可能为每一种型号的设备都发行特定的优化版本,所以往往软件只能使用某类设备之间共有的功能,而不能将每种设备的潜力最大的发挥出来。例如,并不是所有的移动设备的操作系统都可以处理gif,ico,png和gif格式的图片。据此,对于为类似于移动电话的嵌入式设备而设计的软件,在安装的时候侦测目标系统的软件功能,如果其不支持对于png和/或j pg格式图片的处理,就可以施行安装时优化,将使用png和/或gif格式图片的代码移除,或采用软件自身的解码算法实现。类似的,这种方法可以用于其他的场景中。
在执行所需要的优化之后,在安装步骤S150,安装优化后的程序。在优化的过程中也可以同时进行安装过程。
本领域的技术人员可以理解,优化表检索步骤和参数收集步骤,可以根据具体需要来确定先后执行的顺序。如果参数收集步骤需要根据安装优化表来确定需要收集的参数,则先执行优化表检索步骤。如果没有依赖关系,哪个步骤在前均可。这时参数收集步骤可以根据需要收集全部或部分环境参数。
图2示出了根据本发明另一实施例的生成安装优化表的方法。在步骤S210,编译器开始编译。
本领域的技术人员根据上文的描述可以理解,该安装优化主要针对的对象是执行性能与执行环境相关的程序代码。根据本发明的一个实施例,编译器编译源代码(source code)时,函数可以在整个源代码文件中进行嵌入(inlined),并进行优化。如消除无用代码(dead code),全局数据分配,可以同时在全部程序的多个部分同时进行。安装程序的大部分优化都是由编译器完成,因此,可以重新利用在编译器中被编译的软件的架构。换言之,可以将涉及执行环境参数的代码或代码段的位置记录下来,并将编译器中用于对该代码或代码段优化的指令记录下来。
现代很多编译器的设计都包括多个编译步骤和多个优化步骤,每个步骤往往是由一个相对独立的模块实现。优化步骤可以进一步分为优化分析步骤和优化执行步骤。这样,优化模块进一步可以分为优化分析模块和优化执行模块。编译器优化分析模块对代码进行优化分析后,把编译器中优化执行模块中具体用于执行优化操作的指令,即与需要优化的代码相关的优化执行指令记录下来,并写入优化表。
另,如果编译器中用于执行优化的指令为可执行的二进制代码,可以直接使用。否则,可以转化为可执行的二进制代码。或者,如果编译器的优化模块是由其他代码组成的,在将执行优化的指令记录下来的同时,还可以在安装程序中加入其对应代码的解释引擎。
这样,就可以在安装时这些参数被进一步确定之后,利用优化执行指令进一步执行相应的优化。编译器进行的优化一般包括但不限于以下几种优化。常量消除优化(constant folding optimization),编译器评估包括常量的程序代码并进行优化,以便使得计算简化。循环分块优化(Loop tilingoptimization)循环分块将循环的迭代空间(loop′s iteration space)划分成多个块,以便使得一个循环使用的数据在整个循环过程中保存在高速缓存或内存中。矢量化优化(vectorization optimization),是将一组适当的单个操作转换成较少数量的支持SIMD(Single Instruction,Multiple Data,单指令多数据)的操作,以便减少运行所需的系统时间,如CPU时间。
在步骤S220,确定根据执行环境参数需要进一步优化的代码。在进行编译时,在确定一段代码或一个函数的执行与执行环境参数相关后,将该段代码或函数编译为二进制的目标代码。该二进制的目标代码就可以作为需要进一步优化的代码。本领域的技术人员容易理解,可以根据编译的需要但非必须,执行必要的编译阶段的优化。
在步骤S230,确定与所述需要进一步优化的代码相应的代码优化方法。在该步骤中,将编译器中用于对该需进一步优化的代码的优化方法或优化指令记录下来。如上文所述,在已有技术中,编译器采用这些优化方法,一般采用多种计算装置都支持的参数,或保守的参数以便能支持大多数的执行环境。而本发明的实施例,将这些优化方法记录下来,用于在安装时使用。
根据本发明的另一实施例,对于确定哪些方法将被用于安装时使用,可以确定采用不同执行环境参数优化后的目标代码的执行性能或效率。如果采用不同执行环境参数优化后,目标代码的执行性能或效率相差很大,如1.3倍或1.5倍以上,则可以将该段代码确定为需要进一步优化的代码,并记录下相应的优化方法。否则,在编译阶段可以直接对该段代码进行优化。这主要是为了降低计算装置安装软件的工作负担。还可以根据优化任务的计算复杂度和/或对计算资源的需求来确定是否将该段代码在安装时进行进一步的优化。或者,还可以根据进一步其它的优化策略来确定进行进一步优化的代码和优化方法。
在步骤S240,确定需要进一步优化的代码的位置。在该步骤,将上述需要进一步优化的代码在编译后的目标代码中的位置记录下来。如果还需要进一步的连接,则将连接器对多个编译后的代码执行连接后的位置。
在步骤S250,将需进一步优化的代码的位置及其相应的代码优化方法加入一安装优化表。该优化表将在安装时为进一步的优化提供必要的信息。在步骤S260,将安装优化表存储到编译后的目标代码中。本领域的技术人员可以理解,该安装优化表也可以与安装文件分开存储。只要在安装时,安装软件可以通过适当的方式调用该优化表即可。例如,优化策略可以确定为:通过一服务器安装软件时,可以将该安装优化表放置到该服务器。
根据本发明的一实施例中生成用于二进制代码程序的安装优化表的方法,其中,由编译器确定根据执行环境参数需要进一步优化的代码。
根据本发明的另一实施例中生成用于二进制代码程序的安装优化表的方法,其中,可以进一步包括将与需要进一步优化的代码相应的执行环境参数存储到所述安装优化表。
根据本发明的另一实施例中生成用于二进制代码程序的安装优化表的方法,其中,所述执行环境参数可以包括软件参数和/或硬件参数。
根据本发明的另一实施例中生成用于二进制代码程序的安装优化表的方法,其中,进一步包括对所述安装优化表进行加密的步骤。
根据本发明的另一实施例中生成用于二进制代码程序的安装优化表的方法,其中可以进一步包括将所述安装优化表存储到所述二进制代码安装程序中。
根据本发明的另一实施例中生成用于二进制代码程序的安装优化表的方法,其中,所述执行环境参数可以包括执行环境的一级缓存的大小、二级缓存大小、内存页的大小组成的组中的一种或多种。
根据本发明的另一实施例中生成用于二进制代码程序的安装优化表的方法,其中,所述执行环境参数可以包括CPU的种类以及每种CPU的个数。
根据本发明的另一实施例中生成用于二进制代码程序的安装优化表的方法,其中,所述执行环境参数可以包括矢量化参数。
图3示出了根据本发明另一实施例的利用安装优化表执行的安装流程。在步骤S310,开始二进制代码程序的安装。在步骤S320,在待安装二进制代码程序代码中检索安装时优化表并进行解密。本领域的技术人员可以理解,该安装时优化表也可以存储在在待安装二进制代码程序代码中或其它适宜的位置。可以对安装优化表进行单独的加密,来为待安装的软件提供进一步的保护。在这种情况下,需要对安装优化表进行相应的解密。在这种情况下,也可以允许在没有解密的情况下进行安装,但是安装后的软件占用的空间较大,并且软件运行性能较低。
在步骤S330,收集目标计算机的执行环境参数。要收集哪些参数可以取决于优化表中用到了哪些参数。该安装优化表还可以包括为了优化,需要收集的执行环境参数。该安装过程可以用于执行环境参数有多种配置或变化较多的系统。在步骤S340,根据收集的执行环境参数,获取安装优化表中的项目entry[i]。在步骤S350,确定项目entry[i]中将要被优化的代码涉及的指令及其在二进制代码程序中的位置。在步骤S360,根据优化指令对确定的代码进行优化。在优化完成后,在步骤S370,删除安装优化表。本领域的技术人员可以理解,该删除过程也可以边安装边进行,或者边优化边删除已经执行完成的优化项目和相应的优化方法。在步骤S380,安装优化后的程序。在步骤S390,结束安装过程。
根据本发明的一实施例,在安装时当目标程序运行环境的信息已知时,使用编译器中的方法用于优化可执行文件。
图4示出了根据本发明一实施例的用于安装二进制代码程序的系统方框图。该用于安装二进制代码程序的系统400包括:优化表检索装置410,用于检索待安装二进制代码程序中的代码的安装优化表;参数收集装置420,用于收集目标计算装置的执行环境参数;优化装置430,用于根据所述安装优化表和所述执行环境参数,对所述待安装的二进制代码程序中的代码执行优化;以及安装装置440,用于安装优化后的二进制代码程序。
图5示出了根据本发明一实施例的生成用于二进制代码程序的安装优化表的系统方框图。该用于二进制代码程序的安装优化表的系统500包括:优化代码确定装置510,用于确定根据执行环境参数需要进一步优化的二进制代码程序中的代码;优化方法确定装置520,用于确定与所述需要进一步优化的代码相应的代码优化方法;代码位置确定装置530,用于确定需要进一步优化的代码在所述二进制代码程序中的位置;以及优化表形成装置540,用于将需进一步优化的代码的位置及其相应的代码优化方法加入一安装优化表。
编译器在编译各部分文件或单个文件时,可以进行大部分的优化工作。因此,根据本发明的实施例能够重复利用编译器中已经存在的大部分优化方法,在安装时进一步对软件进行优化。
了解其执行环境的具体参数可能需要一定的专业知识,根据本发明用户可以不必了解这些,而由安装程序本身来执行。软件服务商仅能提供粗粒度的不同安装软件。此外,有些优化由于优化的粒度根据不同的执行环境变化很大,执行环境的众多参数可以演变出许多种具有个性的配置。有些执行环境的变化很难预料,软件服务商很难提供相应的具有针对性的安装软件。此外,编译器和连接器相对比较固定,一般由专门的公司提供,不易根据需要及时改变来提供必要的优化。而根据本发明,可以为编译器不断附加可以优化的功能或方法确是可行的。将许多优化操作在安装时进行,提高了优化效率并为不同的执行环境提供了细粒度的个性化优化,软件服务商的安装软件分类也可以变得相对简单。
附图中的流程图和框图,图示了按照本发明实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,所述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
所属技术领域的技术人员知道,本发明可以体现为系统、方法或计算机程序产品。因此,本发明可以具体实现为以下形式,即,可以是完全的硬件、完全的软件(包括固件、驻留软件、微代码等)、或者本文一般称为“电路”、“模块”或“系统”的软件部分与硬件部分的组合。此外,本发明还可以采取体现在任何有形的表达介质(medium of expression)中的计算机程序产品的形式,该介质中包含计算机可用的程序码。
可以使用一个或多个计算机可用的或计算机可读的介质的任何组合。计算机可用的或计算机可读的介质例如可以是——但不限于——电的、磁的、光的、电磁的、红外线的、或半导体的系统、装置、器件或传播介质。计算机可读介质的更具体的例子(非穷举的列表)包括以下:有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、诸如支持因特网或内部网的传输介质、或者磁存储器件。注意计算机可用的或计算机可读的介质甚至可以是上面印有程序的纸张或者其它合适的介质,这是因为,例如可以通过电扫描这种纸张或其它介质,以电子方式获得程序,然后以适当的方式加以编译、解释或处理,并且必要的话在计算机存储器中存储。在本文件的语境中,计算机可用的或计算机可读的介质可以是任何含有、存储、传达、传播、或传输供指令执行系统、装置或器件使用的或与指令执行系统、装置或器件相联系的程序的介质。计算机可用的介质可包括在基带中或者作为载波一部分传播的、由其体现计算机可用的程序码的数据信号。计算机可用的程序码可以用任何适当的介质传输,包括——但不限于——无线、电线、光缆、RF等等。
用于执行本发明的操作的计算机程序码,可以以一种或多种程序设计语言的任何组合来编写,所述程序设计语言包括面向对象的程序设计语言——诸如Java、Smalltalk、C++之类,还包括常规的过程式程序设计语言——诸如”C”程序设计语言或类似的程序设计语言。程序码可以完全地在用户的计算上执行、部分地在用户的计算机上执行、作为一个独立的软件包执行、部分在用户的计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在后一种情形中,远程计算机可以通过任何种类的网络——包括局域网(LAN)或广域网(WAN)——连接到用户的计算机,或者,可以(例如利用因特网服务提供商来通过因特网)连接到外部计算机。
以上结合优选法方案对本发明进行了详细的描述,但是可以理解,以上实施例仅用于说明而非限定本发明。本领域的技术人员可以对本发明的所示方案进行修改而不脱离本发明的范围和精神。
Claims (23)
1.一种二进制代码程序的安装方法,包括:
检索待安装二进制代码程序中的代码的安装优化表;
收集目标计算装置的执行环境参数;
根据所述安装优化表和所述执行环境参数,对所述待安装的二进制代码程序中的代码执行优化;以及
安装优化后的二进制代码程序。
2.根据权利要求1所述的方法,其中安装优化表包括将要被优化的代码在所述二进制代码程序中的位置以及相应的用于优化代码的方法。
3.根据权利要求1所述的方法,其中收集目标计算装置的执行环境参数进一步配置为根据所述安装优化表收集目标计算装置的执行环境参数。
4.根据权利要求1所述的方法,其中所述执行环境参数包括软件参数,所述对所述待安装的二进制代码程序中的代码执行优化进一步配置为根据所述安装优化表和所述软件参数,对所述待安装的二进制代码程序中的代码执行优化。
5.根据权利要求1所述的方法,其中所述安装优化表存储在所述待安装二进制代码程序的代码中,所述检索待安装二进制代码程序中的代码的安装优化表进一步配置为在所述待安装二进制代码程序的代码中检索所述安装优化表。
6.根据权利要求1至5任一项所述的方法,其中所述安装优化表是加密的,所述方法进一步包括对所述安装优化表进行解密。
7.根据权利要求1至5任一项所述的方法,其中对所述待安装的二进制代码程序中的代码执行优化进一步配置根据安装优化表和执行环境参数,对所述待安装的二进制代码程序中的代码执行循环分块优化(Loop tilingoptimization)。
8.根据权利要求1至5任一项所述的方法,其中所述执行环境参数包括矢量化参数,所述对所述待安装的二进制代码程序中的代码执行优化进一步配置根据所述安装优化表和所述矢量化参数,对所述待安装的二进制代码程序中的代码执行矢量化优化(Vectorization optimization)
9.根据权利要求1至5任一项所述的方法,其中对所述待安装的二进制代码程序中的代码执行优化进一步配置根据安装优化表和执行环境参数,对所述待安装的二进制代码程序中的代码执行常量扩展优化(constant foldingoptimization)。
10.根据权利要求7所述的方法,其中执行环境参数包括一级缓存的大小、二级缓存大小,内存页的大小组成的组中的一种或多种。
11.根据权利要求1至5任一项所述的方法,其中执行环境参数包括CPU的种类以及每种CPU的个数。
12.根据权利要求11所述的方法,其中执行环境参数包括至少两种CPU的种类及其个数。
13.根据权利要求1至5任一项所述的方法,进一步包括响应于对所述待安装的二进制代码程序中的代码执行优化完毕,删除安装优化表。
14.一种生成用于二进制代码程序的安装优化表的方法,包括:
确定根据执行环境参数需要进一步优化的二进制代码程序中的代码;
确定与所述需要进一步优化的代码相应的代码优化方法;
确定需要进一步优化的代码在所述二进制代码程序中的位置;以及
将需进一步优化的代码的位置及其相应的代码优化方法加入一安装优化表。
15.根据权利要求14所述的方法,其中由编译器确定根据执行环境参数需要进一步优化的代码。
16.根据权利要求14所述的方法,其中进一步包括将与需要进一步优化的代码相应的执行环境参数存储到所述安装优化表。
17.根据权利要求14所述的方法,其中所述执行环境参数包括软件参数。
18.根据权利要求14所述的方法,其中进一步包括对所述安装优化表进行加密。
19.根据权利要求14或18所述的方法,其中进一步包括将所述安装优化表存储到所述二进制代码程序中。
20.根据权利要求14所述的方法,其中所述执行环境参数包括执行环境的一级缓存的大小、二级缓存大小、内存页的大小组成的组中的一种或多种。
21.根据权利要求14所述的方法,其中所述执行环境参数包括CPU的种类以及每种CPU的个数。
22.根据权利要求14所述的方法,其中所述执行环境参数包括矢量化参数。
23.一种计算系统,包括配置为用于执行前述任一方法权利要求所述的方法的多个装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200810174629A CN101727335A (zh) | 2008-10-31 | 2008-10-31 | 用于二进制代码程序的安装方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200810174629A CN101727335A (zh) | 2008-10-31 | 2008-10-31 | 用于二进制代码程序的安装方法和系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101727335A true CN101727335A (zh) | 2010-06-09 |
Family
ID=42448269
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200810174629A Pending CN101727335A (zh) | 2008-10-31 | 2008-10-31 | 用于二进制代码程序的安装方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101727335A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102955712A (zh) * | 2011-08-30 | 2013-03-06 | 国际商业机器公司 | 提供关联关系并执行代码优化的方法和装置 |
-
2008
- 2008-10-31 CN CN200810174629A patent/CN101727335A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102955712A (zh) * | 2011-08-30 | 2013-03-06 | 国际商业机器公司 | 提供关联关系并执行代码优化的方法和装置 |
CN102955712B (zh) * | 2011-08-30 | 2016-02-03 | 国际商业机器公司 | 提供关联关系并执行代码优化的方法和装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Chen et al. | Graph minor approach for application mapping on cgras | |
Kong et al. | When polyhedral transformations meet SIMD code generation | |
Liu et al. | A compiler framework for extracting superword level parallelism | |
Rul et al. | A profile-based tool for finding pipeline parallelism in sequential programs | |
CN102541612B (zh) | 数据平行代码中的映射变换 | |
Edler von Koch et al. | Exploiting function similarity for code size reduction | |
Coarfa et al. | Co-array Fortran performance and potential: An NPB experimental study | |
Phillips et al. | A CUDA implementation of the High Performance Conjugate Gradient benchmark | |
Newell et al. | Improved basic block reordering | |
Mendis et al. | Revec: program rejuvenation through revectorization | |
Liang et al. | Romou: Rapidly generate high-performance tensor kernels for mobile gpus | |
Haaß et al. | Automatic custom instruction identification in memory streaming algorithms | |
Ejjaaouani et al. | , a Programming Model to Decouple Performance from Algorithm in HPC Codes | |
CN101727335A (zh) | 用于二进制代码程序的安装方法和系统 | |
CN114385180A (zh) | 一种数据处理方法、装置、设备及计算机存储介质 | |
Mohammadi et al. | Energy efficient on-demand dynamic branch prediction models | |
Jeon et al. | Collage: Seamless integration of deep learning backends with automatic placement | |
Mishra et al. | Data transfer and reuse analysis tool for gpu-offloading using openmp | |
Garcia et al. | Mapping of the AES cryptographic algorithm on a Coarse-Grain reconfigurable array processor | |
Varadarajan | Polyhedral optimizations of RNA-RNA interaction computations | |
Hong et al. | Rapid prototyping of DSP algorithms on VLIW TMS320C6701 DSP | |
Nguyen et al. | Design and Implementation of a Coarse-grained Dynamically Reconfigurable Multimedia Accelerator | |
Liu et al. | Compiling C-like Languages to FPGA Hardware: Some Novel Approaches Targeting Data Memory Organization | |
Hussein et al. | Automating application-driven customization of ASIPs: A survey | |
Sun et al. | Vectorizing programs with IF-statements for processors with SIMD extensions |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20100609 |