CN102880497B - 一种编译器及软件管理存储器的重用优化方法 - Google Patents
一种编译器及软件管理存储器的重用优化方法 Download PDFInfo
- Publication number
- CN102880497B CN102880497B CN201210372306.0A CN201210372306A CN102880497B CN 102880497 B CN102880497 B CN 102880497B CN 201210372306 A CN201210372306 A CN 201210372306A CN 102880497 B CN102880497 B CN 102880497B
- Authority
- CN
- China
- Prior art keywords
- variable
- key word
- reusing
- module
- compiler
- 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.)
- Active
Links
Abstract
本发明实施例公开了一种编译器及软件管理存储器的重用优化方法,用于对软件管理存储器进行重用优化,实现软件管理存储器的空间重用分配。本发明实施例中的编译器包括:分析模块,用于根据待写入软件管理存储器的变量的排布方式增加关键字,将关键字及变量的信息发送给编译模块;编译模块,用于识别关键字,为关键字设置重用标识;对设置了重用标识的关键字对应的变量生成具有重用特征的代码形式,将具有重用特征的代码形式发送给链接模块;链接模块,用于根据具有重用特征的代码形式生成临时链接脚本,对临时链接脚本进行链接处理,并进行重用变量的排布,实现软件管理存储器的空间重用分配。
Description
技术领域
本发明涉及重用优化技术领域,尤其涉及一种编译器及软件管理存储器的重用优化方法。
背景技术
目前,fortran语言支持公用(common)块的重用,fortran语言中对于同名的common块,其数据可存放在同一段地址空间中,如下例所示:
Common/aa/x,y,z,w[10];
Common/aa/a,b,c,d[10];
对于这种定义形式,其中,x和a的存储地址是一致的,同样y和b,z和c及w[10]和d[10]也存放在同一段地址空间中,通过这种方式fortran语言可支持空间重用。
在现有技术中,C语言并不能支持空间重用,然而基于C语言的软件管理存储器容量小,不能满足技术发展的需求,因此,如何实现软件管理存储器的重用优化成为亟待解决的问题。
发明内容
本发明实施例提供了一种编译器及软件管理存储器的重用优化方法,用于对软件管理存储器进行重用优化,实现软件管理存储器的空间重用分配。
本发明实施例中提供的编译器包括:
分析模块,用于根据待写入软件管理存储器的变量的排布方式增加关键字,将所述关键字及所述变量的信息发送给编译模块;
所述编译模块,用于识别所述关键字,为所述关键字设置重用标识;对设置了重用标识的关键字对应的变量生成具有重用特征的代码形式,将所述具有重用特征的代码形式发送给链接模块;
所述链接模块,用于根据所述具有重用特征的代码形式生成临时链接脚本,对所述临时链接脚本进行链接处理,并进行重用变量的排布,实现软件管理存储器的空间重用分配。
优选的,编译模块包括:
前端语法分析模块,用于识别所述关键字,为所述关键字设置重用标识;
后端代码生成模块,用于针对设置了重用标识的关键字对应的变量生成具有重用特征的代码形式,将所述具有重用特征的代码形式发送给所述链接模块。
优选的,所述分析模块包括:
阶段划分模块,用于根据待写入软件管理存储器的变量的活跃区间划分阶段;
排布确定模块,用于利用构建线性规划模型确定划分阶段后的变量的排布方式;
关键字增加及信息发送模块,用于按照所述变量的排布方式增加关键字,将所述关键字及所述变量的信息发送给所述编译模块。
本发明实施例中提供的一种软件管理存储器的重用优化方法包括:
编译器根据待写入软件管理存储器的变量的排布方式增加关键字;
所述编译器为所述关键字设置重用标识,对设置了重用标识的关键字对应的变量生成具有重用特征的代码形式;
所述编译器根据所述具有重用特征的代码形式生成临时链接脚本;
所述编译器对所述临时链接脚本进行链接处理,并进行重用变量的排布,实现软件管理存储器的空间重用分配。
从以上技术方案可以看出,本发明实施例具有以下优点:
编译器中的分析模块根据待写入软件管理存储器的变量的排布方式增加关键字,通过增加关键字的方式定义了重用变量结构,使得可在管理存储器上开辟一段重用空间,使得不同的变量可以重用局存空间。此外,链接模块可生成临时链接脚本,并利用该临时链接脚本进行链接处理,能够有效实现软件管理存储器空间重用分配。
附图说明
图1为本发明实施例中编译器的结构的一个示意图;
图2为本发明实施例中变量阶段划分及变量的排布方式的示意图;
图3为本发明实施例中软件管理存储器的重用优化方法的一个示意图。
具体实施方式
本发明实施例提供了一种编译器及软件管理存储器的重用优化方法,用于对软件管理存储器进行重用优化,实现软件管理存储器的空间重用分配。
请参与图1,为本发明实施例中编译器的结构的实施例,包括:
分析模块101,用于根据待写入软件管理存储器的变量的排布方式增加关键字,将关键字及变量的信息发送给编译模块102;
编译模块102,用于识别关键字,为关键字上设置重用标识;对设置了重用标识的关键字对应的变量生成具有重用特征的代码形式,将具有重用特征的代码形式发送给链接模块103;
链接模块103,用于根据具有重用特征的代码形式生成临时链接脚本,对临时链接脚本进行链接处理,并进行重用变量的排布,实现软件管理存储器的空间重用分配。
其中,编译模块102包括:
前端语法分析模块104,用于识别关键字,为关键字设置重用标识;
后端代码生成模块105,用于针对设置了重用标识的关键字对应的变量生成具有重用特征的代码形式,将具有重用特征的代码形式发送给链接模块。
在本发明实施例中,分析模块101包括:
阶段划分模块106,用于根据待写入软件管理存储器的变量的活跃区间划分阶段;
排布确定模块107,用于利用构建线性规划模型确定划分阶段后的变量的排布方式;
关键字增加及信息发送模块108,用于按照所述变量的排布方式增加关键字,将所述关键字及所述变量的信息发送给所述编译模块
在本发明实施例中,阶段划分模块106将待写入软件管理存储器的变量按照其活跃区间划分阶段,为了更好的理解,请参阅图2,为本发明实施例中变量阶段划分及变量的排布方式的示意图,其中,阶段1发生在阶段2之前,阶段2发生在阶段3之前,在阶段1,活跃的变量及排布方式为A、B、C,在阶段2,活跃的变量及排布方式为A、B、D,在阶段3,活跃的变量及排布方式为B,E,F。
在阶段划分模块106将变量按其活跃区间划分阶段之后,排布确定模块107对划分的阶段进行统计,利用构建线性规划模型来确定变量的排布方式,如图2所示的排布方式:B、A(E)、C(D、F)。
在排布确定模块107确定变量的排布方式之后,关键字增加及信息发送模块108按照重新确定的变量的排布方式增加关键字,以图2所示示意图中的变量的排布方式为例,在阶段1时,变量B、A、C可同时承载在同一段空间中,则为在阶段1活跃的变量B、A、C增加关键字Tdata_local_kernel(1),在阶段2时,变量B、A、D可同时承载在同一段空间中,则为在阶段2活跃的变量B、A、D增加关键字Tdata_local_kernel(2),在阶段3,变量B,E,F可同时承载在同一段空间中,则为在阶段3活跃的变量B,E,F增加关键字Tdata_local_kernel(3),具体的,增加关键字后得到:
Tdata_local_kernel(1)B、A、C
Tdata_local_kernel(2)B、A、D
Tdata_local_kernel(3)B、E、F
在关键字增加及信息发送模块108按照变量的排布方式增加关键字后,将增加的关键字和变量的信息发送给编译模块102,其中,变量的信息包括变量的类型,大小等。
编译模块102接收到新增加的关键字和变量的信息之后,其前端语法分析模块104将识别关键字,并为关键字设置重用标识。需要说明的是,由于增加关键字的变量需要动态加载排布在软件管理存储器上,所以不支持该增加了关键字的变量的初始化,所以在前端语法分析模块104中还可增加该增加了关键字的变量的初始化报错。
在本发明实施例中,编译模块102中的后端代码生成模块105将针对设置了重用标识的关键字对应的变量生成具有重用特征的代码形式,并将该具有重用特征的代码形式发送给链接模块103,其中,具有重用特征的代码形式可由链接模块103识别,方便链接模块103进行信息收集及变量排布。
在本发明实施例中,链接模块103包含预链接过程和正式链接过程,其中,在预链接过程中,链接模块103将根据具有重用特征的代码形式生成临时链接脚本,具体是利用该具有重用特征的代码形式收集重用信息,包括重用空间的大小,重用的变量的个数及类型等等,生成一个临时链接脚本,该临时链接脚本中包含了所有的关键字及变量的信息,用于正式链接过程。在正式链接过程中,链接模块103将对临时链接脚本进行链接处理,并进行重用变量的排布,实现软件管理存储器的空间重用分配。
需要说明的是,在本发明实施例中,链接模块103进行重用变量的排布得到的重用变量的排布方式与排布确定模块107得到的变量的排布方式是一致的。
为了更好的理解本发明实施例中的编译器进行重用优化的过程,下面将介绍本发明实施例中利用编译器对软件管理存储器进行重用优化的方法,请参阅图3,包括:
301、编译器根据待写入软件管理存储器的变量的排布方式增加关键字;
在本发明实施例中,编译器中可根据待写入软件管理器的变量的活跃区间划分阶段,并利用构建线性规划模型确定划分阶段后的变量的排布方式,且按照该排布方式增加关键字,例如在可承载在同一段空间中的变量上增加关键字tdata_local_kernel。具体可参阅图2所示实施例。
302、编译器为关键字设置重用标识,对设置了重用标识的关键字对应的变量生成具有重用特征的代码形式;
在本发明实施例中,编译器按照变量的排布方式增加关键字之后,还将在该关键字上设置重用标识,以标识该变量的空间可以重用,此外,编译器还将对设置了重用标识的关键字对应的变量生成具有重用特征的代码形式,该具有重用特征的代码形式能够方便编译器的变量的信息的收集及链接时的变量排布。
303、编译器根据具有重用特征的代码形式生成临时链接脚本;
在本发明实施例中,编译器生成具有重用特征的代码形式之后,将根据该具有重用特征的代码形式生成临时链接脚本,该临时链接脚本中包含了关键字及变量的信息,用于正式链接过程。
304、编译器对临时链接脚本进行链接处理,并进行重用变量的排布,实现软件管理存储器的空间重用分配。
在本发明实施例中,编译器在生成临时连接脚本之后,将对该临时连接脚本进行链接处理,并进行重用变量的排布,实现软件管理存储器的空间重用分配。
需要说明的是,在本发明实施例中,编译器在步骤304中进行链接处理时得到的重用变量的排布方式与编译器在步骤301中的所使用的变量的排布方式是一致的。
在本发明实施例中,通过按照变量的排布方式增加关键字,使得在软件管理存储器中可开辟一段重用空间,使得不同的变量可以重用局存空间,且编译器还利用前端语法分析模块对关键字设置重用标识,利用后端代码生成模块针对设置重用标识的关键字对应的变量进行访问生成具有重用特征的代码形式,此外,在编译器在链接过程中,通过利用具有重用特征的代码形式收集变量的信息生成临时链接脚本,使得能够更好的实现软件管理存储器空间重用分配。
以上对本发明所提供的一种编译器及软件管理存储器的重用优化的方法进行了详细介绍,对于本领域的一般技术人员,依据本发明实施例的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (3)
1.一种编译器,其特征在于,包括:
分析模块,用于根据待写入软件管理存储器的变量的排布方式增加关键字,将所述关键字及所述变量的信息发送给编译模块;
所述编译模块,用于识别所述关键字,为所述关键字设置重用标识;对设置了重用标识的关键字对应的变量生成具有重用特征的代码形式,将所述具有重用特征的代码形式发送给链接模块;
所述链接模块,用于根据所述具有重用特征的代码形式生成临时链接脚本,对所述临时链接脚本进行链接处理,并进行重用变量的排布,实现软件管理存储器的空间重用分配;
其中,所述分析模块包括:
阶段划分模块,用于根据待写入软件管理存储器的变量的活跃区间划分阶段;
排布确定模块,用于利用构建线性规划模型确定划分阶段后的变量的排布方式;
关键字增加及信息发送模块,用于按照所述变量的排布方式增加关键字,将所述关键字及所述变量的信息发送给所述编译模块。
2.根据权利要求1所述的编译器,其特征在于,所述编译模块包括:
前端语法分析模块,用于识别所述关键字,为所述关键字设置重用标识;
后端代码生成模块,用于针对设置了重用标识的关键字对应的变量生成具有重用特征的代码形式,将所述具有重用特征的代码形式发送给所述链接模块。
3.一种软件管理存储器的重用优化方法,其特征在于,包括:
编译器根据待写入软件管理存储器的变量的排布方式增加关键字;
所述编译器为所述关键字设置重用标识,对设置了重用标识的关键字对应的变量生成具有重用特征的代码形式;
所述编译器根据所述具有重用特征的代码形式生成临时链接脚本;
所述编译器对所述临时链接脚本进行链接处理,并进行重用变量的排布,实现软件管理存储器的空间重用分配;
其中,所述编译器根据待写入软件管理存储器的变量的排布方式增加关键字包括:
所述编译器根据待写入软件管理存储器的变量的活跃区间划分阶段;
利用构建线性规划模型确定划分阶段后的变量的排布方式;
按照所述变量的排布方式增加关键字。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210372306.0A CN102880497B (zh) | 2012-09-28 | 2012-09-28 | 一种编译器及软件管理存储器的重用优化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210372306.0A CN102880497B (zh) | 2012-09-28 | 2012-09-28 | 一种编译器及软件管理存储器的重用优化方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102880497A CN102880497A (zh) | 2013-01-16 |
CN102880497B true CN102880497B (zh) | 2015-05-20 |
Family
ID=47481836
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210372306.0A Active CN102880497B (zh) | 2012-09-28 | 2012-09-28 | 一种编译器及软件管理存储器的重用优化方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102880497B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105487911B (zh) * | 2015-11-24 | 2018-07-06 | 无锡江南计算技术研究所 | 一种基于编译指导的众核数据分片方法 |
CN106055937B (zh) * | 2016-05-25 | 2018-11-09 | 深圳创维数字技术有限公司 | 一种软件静态数据的加密方法及系统 |
CN106874577A (zh) * | 2017-01-20 | 2017-06-20 | 上海新储集成电路有限公司 | 一种存储器编译器 |
US10359971B2 (en) * | 2017-07-17 | 2019-07-23 | Hewlett Packard Enterprise Development Lp | Storing memory profile data of an application in non-volatile memory |
CN112445724B (zh) * | 2019-08-29 | 2022-09-13 | 无锡江南计算技术研究所 | 针对片上存储器重用的链接时地址分配方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1889584A (zh) * | 2006-07-19 | 2007-01-03 | 中国科学院计算技术研究所 | 一种基于模板的抽象应用层业务行为回放方法 |
CN101794230A (zh) * | 2010-04-07 | 2010-08-04 | 孙斌 | 用于多核的c语言扩充及编译系统支持方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120131069A1 (en) * | 2010-11-18 | 2012-05-24 | International Business Machines Corporation | Object consolidation to a grid of a virtual machine |
-
2012
- 2012-09-28 CN CN201210372306.0A patent/CN102880497B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1889584A (zh) * | 2006-07-19 | 2007-01-03 | 中国科学院计算技术研究所 | 一种基于模板的抽象应用层业务行为回放方法 |
CN101794230A (zh) * | 2010-04-07 | 2010-08-04 | 孙斌 | 用于多核的c语言扩充及编译系统支持方法 |
Non-Patent Citations (1)
Title |
---|
一种寄存器分配的优化策略;姜军等;《计算机应用与软件》;20060228;第23卷(第2期);第72-74页 * |
Also Published As
Publication number | Publication date |
---|---|
CN102880497A (zh) | 2013-01-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102880497B (zh) | 一种编译器及软件管理存储器的重用优化方法 | |
CN102880546B (zh) | 一种基于xml数据库的软件集成测试方法及系统 | |
CN103019874B (zh) | 基于数据同步实现异常处理的方法及装置 | |
CN110780979B (zh) | 微服务框架下配置的控制方法及装置、介质和电子设备 | |
CN111414409B (zh) | 游戏引擎之间数据交换方法及装置、存储介质及电子设备 | |
CN106201481A (zh) | 应用程序开发系统中的组件管理方法和装置 | |
CN111859832B (zh) | 一种芯片仿真验证方法、装置及相关设备 | |
CN103116513B (zh) | 一种异构多核处理器编译器 | |
CN105808437A (zh) | 基于测试用例数据表的自动化测试方法及系统 | |
CN102799624B (zh) | 基于Datalog的分布式环境下大图数据查询方法 | |
WO2022148305A1 (zh) | 一种芯片的系统级验证方法、系统及相关装置 | |
CN112104709A (zh) | 智能合约的处理方法、装置、介质及电子设备 | |
CN104267938A (zh) | 一种流式计算的应用快速开发部署的方法及装置 | |
CN105574032A (zh) | 规则匹配运算方法及装置 | |
CN112597014A (zh) | 基于数据驱动的自动化测试方法、装置、介质及电子设备 | |
CN109684319A (zh) | 数据清洗系统、方法、装置及存储介质 | |
CN103678303A (zh) | 用于数据库分组集查询的方法和系统 | |
CN103593199A (zh) | 数据转换的方法和系统 | |
CN106126299B (zh) | 业务插件的处理方法及装置 | |
CN104991810A (zh) | 自动添加apk到安卓系统中的方法及处理系统 | |
CN103699478A (zh) | 一种测试案例生成系统和方法 | |
CN101355774A (zh) | 使用配置文件定制脚本自动化的方法 | |
CN102541830B (zh) | 一种仿真平台中仿真报告生成的方法及装置 | |
CN202143092U (zh) | 报文处理系统 | |
CN102592251A (zh) | 地球系统模式的通用模块化并行耦合系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |