一种指令地址自适应重定位方法及程序编译方法技术

技术编号:24572591 阅读:25 留言:0更新日期:2020-06-20 23:56
本发明专利技术提供一种指令地址自适应重定位方法及程序编译方法,将程序编译过程链接阶段生成的可执行目标文件作为源文件,所述重定位方法包括如下步骤读取可执行目标文件及配置信息;对可执行目标文件中的代码段和数据段进行划片;可执行目标文件划分完成后,根据每段的大小,划分出相应的内存空间;计算实际目标值;实际目标值小于设定目标值时,对可执行目标文件中的每一段进行重新地址定位,最后进行目标链接,并输出优化后的可执行目标文件。

An instruction address adaptive relocation method and program compilation method

【技术实现步骤摘要】
一种指令地址自适应重定位方法及程序编译方法
本专利技术涉及程序编译
,具体涉及一种指令地址自适应重定位方法及程序编译方法。
技术介绍
现代计算机存储和处理的信息以二进制信号表示,程序对于计算机而言就是一串二进制数据流,以流水线的方式进入CPU进行运算。主要在CPU与内存之间进行数据传递。大多数计算使用8位的块,即字节(byte),作为最小的可寻址的内存单元。程序对象,即程序数据、指令和控制信息的字节集合,编译器和系统运行时将存储空间划分成更可管理的单元来存储程序对象。计算机执行机器代码,用字节序列编码低级的操作,包括处理数据、管理内存、读写存储设备上的数据、以及利用网络通信。程序源码会经过编译器生成机器代码,编译器基于编程语言的规则、目标机器的指令集合和操作系统遵循的惯例,经过一系列的阶段生成机器代码。汇编代码是机器代码的文本表示,给出程序中的每一条指令。一个源程序不论由多少个文件组成,都有一个且只能有一个main函数,即主函数。所有的函数是平行的,即在定义时是互相独立的,主函数可以调用其它函数,其它函数之间可以互相调用,但其它函数不能调用主函数。一个源程序经过预处理阶段,生成汇编代码阶段,汇编阶段和链接阶段后生成可以执行的程序,之后可以加载到内存中,此后,CPU就可以从内存中读取指令进行执行。由于内存的寻址具有独占性,所以在进行完读写操作后,如果要对另一行进行寻址,就要将原来有效(工作)的行关闭,重新发送行/列地址。关闭现有工作行,准备打开新行的操作就是预充电(Precharge)。在发出预充电命令之后,要经过一段时间才能发送行激活命令打开新的工作行。目前市面上的编译器没有根据内存的特性进行针对性的编译,在编译过程中是各自独立的,有些代码往往被其他多个函数在多个阶段进行调用或者循环调用,这样一来,会造成CPU频繁读取此指令,如果此段指令需要多个地址进行存储,这样使CPU从内存读取数据将延迟,从而降低CPU的执行效率。
技术实现思路
针对目前市面上的编译器没有根据内存的特性进行针对性的编译,在编译过程中是各自独立的,有些代码往往被其他多个函数在多个阶段进行调用或者循环调用,这样一来,会造成CPU频繁读取此指令,如果此段指令需要多个地址进行存储,这样使CPU从内存读取数据将延迟,从而降低CPU的执行效率的问题,本专利技术提供一种指令地址自适应重定位方法及程序编译方法。本专利技术的技术方案是:第一方面,本专利技术技术方案提供一种指令地址自适应重定位方法,将程序编译过程链接阶段生成的可执行目标文件作为源文件,该方法包括如下步骤:读取可执行目标文件及配置信息;对可执行目标文件中的代码段和数据段进行划片;可执行目标文件划分完成后,根据每段的大小,划分出相应的内存空间;计算实际目标值;实际目标值小于设定目标值时,对可执行目标文件中的每一段进行重新地址定位,最后进行目标链接,并输出优化后的可执行目标文件。进一步的,所述的读取可执行目标文件及配置信息的步骤之后包括:读取完毕后对配置文件进行分析输出设定目标值;根据设定目标值对可执行目标文件中的代码段和数据段进行划片。进一步的,所述的配置信息包括内存配置信息和优化配置信息;所述的优化配置信息包括程序编译过程中编译阶段设定的优化力度和迭代次数,所述的优化力度即为设定目标值。优化力度的设置的值不同对编译的速度有影响。进一步的,所述的对可执行目标文件中的代码段和数据段进行划片的步骤中,对可执行目标文件进行划分时的原则包括:相关的指令或者数据划分到一片、重复被调用的代码段和数据段划分在一片。进一步的,所述的可执行目标文件划分完成后,根据每段的大小,划分出相应的内存空间的步骤中,在对内存进行划分时的原则包括:划分的段内包含的列数大于划分的段内包含的行数;并且列数与行数的差大于设定的阈值,所述的设定阈值大于设定的限值。进一步的,所述的计算实际目标值的方法如下:实际目标值等于可执行目标文件的划分的每一段在内存中占用的列数的和。进一步的,该方法还包括:实际目标值大于设定目标值且迭代次数小于设定值时,则跳转到执行步骤:对可执行目标文件中的代码段和数据段进行划片,重新进行迭代处理。进一步的,该方法还包括:实际目标值大于设定目标值且迭代次数大于设定值时,则进行报错处理。此时用户需要重新设定参数进行编译。本专利技术程序编译时,根据内存的特性进行针对性的编译,这样一来,可以大大减少CPU从内存读取数据的延迟。从而提高CPU的执行效率。第二方面,本专利技术技术方案还提供一种程序编译方法,包括如下步骤:预处理阶段预处理器将源代码包含的头文件编译进来,形成预处理文件;编译阶段编译器检查代码的规范性确定语法无误后将代码翻译成汇编语言;汇编阶段汇编器将汇编语言转成二进制目标代码,其中,目标代码包括可重定位目标文件、可执行目标代码和可共享目标代码;链接阶段链接器将多个可重定位目标文件链接成可执行的目标文件;后链接阶段将可执行目标文件作为源文件,进行指令地址自适应重定位,重新分配内存地址生成优化后的可执行目标文件。进一步的,所述的后链接阶段将可执行目标文件作为源文件,进行指令地址自适应重定位,重新分配内存地址生成优化后的可执行目标文件的步骤中进行指令地址自适应重定位的方法为第一方面所述的指令地址自适应重定位方法。在链接阶段后添加后链接阶段,根据内存的读写特性,对指令进行地址重新定位,让其在内存中的存储地址优先选用一列存储,尽可能不跨行进行存储。在CPU从内存中读取程序指令或者程序数据时,可以减少内存换行读取的次数,从而减少对内存进行预充电操作的次数,从而可以大大降低内存自身的预充电带来的延迟,大大提升了CPU的执行效率。从以上技术方案可以看出,本专利技术具有以下优点:在程序链接阶段,在地址分配时,尽可能优先选取内存某一列地址进行分配,这样一来,在CPU执行指令时,可以减少内存换行读取的次数,从而减少对内存进行预充电操作的次数,这样一来,可以大大减少了预充电带来的读数据延迟,从而提高了CPU的执行效率。此外,本专利技术设计原理可靠,结构简单,具有非常广泛的应用前景。由此可见,本专利技术与现有技术相比,具有突出的实质性特点和显著地进步,其实施的有益效果也是显而易见的。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1是本专利技术实施例一提供的一种指令地址自适应重定位方法的示意性流程图。图2是本专利技术实施例二提供的一种指令地址自适应重定位方法的示意性流程图。图3是内存配置信息格式示意图。图4是本专利技术实施例三提供的程序编译方法流程示意图。图5是链接阶段输出的可执行目标文件格式示意图。<本文档来自技高网
...

【技术保护点】
1.一种指令地址自适应重定位方法,其特征在于,将程序编译过程链接阶段生成的可执行目标文件作为源文件,该方法包括如下步骤:/n读取可执行目标文件及配置信息;/n对可执行目标文件中的代码段和数据段进行划片;/n可执行目标文件划分完成后,根据每段的大小,划分出相应的内存空间;/n计算实际目标值;/n实际目标值小于设定目标值时,对可执行目标文件中的每一段进行重新地址定位,最后进行目标链接,并输出优化后的可执行目标文件。/n

【技术特征摘要】
1.一种指令地址自适应重定位方法,其特征在于,将程序编译过程链接阶段生成的可执行目标文件作为源文件,该方法包括如下步骤:
读取可执行目标文件及配置信息;
对可执行目标文件中的代码段和数据段进行划片;
可执行目标文件划分完成后,根据每段的大小,划分出相应的内存空间;
计算实际目标值;
实际目标值小于设定目标值时,对可执行目标文件中的每一段进行重新地址定位,最后进行目标链接,并输出优化后的可执行目标文件。


2.根据权利要求1所述的一种指令地址自适应重定位方法,其特征在于,所述的读取可执行目标文件及配置信息的步骤之后包括:
读取完毕后对配置文件进行分析输出设定目标值;
根据设定目标值对可执行目标文件中的代码段和数据段进行划片。


3.根据权利要求2所述的一种指令地址自适应重定位方法,其特征在于,所述的配置信息包括内存配置信息和优化配置信息;
所述的优化配置信息包括程序编译过程中编译阶段设定的优化力度和迭代次数,所述的优化力度即为设定目标值。


4.根据权利要求1所述的一种指令地址自适应重定位方法,其特征在于,所述的对可执行目标文件中的代码段和数据段进行划片的步骤中,对可执行目标文件进行划分时的原则包括:相关的指令或者数据划分到一片、重复被调用的代码段和数据段划分在一片。


5.根据权利要求1所述的一种指令地址自适应重定位方法,其特征在于,所述的可执行目标文件划分完成后,根据每段的大小,划分出相应的内存空间的步骤中,在对内存进行划分时的原则包括:划分的段内包含的列数大于划分的段内包含的行数;并且列数与行数...

【专利技术属性】
技术研发人员:周玉龙刘同强李拓邹晓峰
申请(专利权)人:苏州浪潮智能科技有限公司
类型:发明
国别省市:江苏;32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1