[发明专利]消除内存访问冲突的编译装置及其实现方法有效

专利信息
申请号: 201110073683.X 申请日: 2011-03-25
公开(公告)号: CN102193811A 公开(公告)日: 2011-09-21
发明(设计)人: 肖贺;孔吉;刘佩林 申请(专利权)人: 上海交通大学;富士通株式会社
主分类号: G06F9/45 分类号: G06F9/45;G06F12/02
代理公司: 上海交达专利事务所 31201 代理人: 王锡麟;王桂忠
地址: 200240 *** 国省代码: 上海;31
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 消除 内存 访问 冲突 编译 装置 及其 实现 方法
【权利要求书】:

1.一种消除内存访问冲突的编译装置,其特征在于,包括:前端语言分析单元、内存变量分析单元、内存冲突消除单元和转换输出单元,其中:前端语言分析单元与内存变量分析单元和内存冲突消除单元相连接并传输由源程序转换的中间语言序列、内存模型与内存操作信息和源文件函数依赖树,内存变量分析单元与内存冲突消除单元相连接并传输变量内存分配和内存块操作信息,内存冲突消除单元与转换输出单元相连接并传输经过内存分配优化的中间语言信息,转换输出单元输出最终的可执行代码。

2.根据权利要求1所述的消除内存访问冲突的编译装置,其特征是,所述的前端语言分析单元包括:内存配置组件、语言分析组件和文件函数关系组件,其中:内存配置组件与内存变量分析单元相连接并通过内存操作信息表和内存模型描述表传递内存操作信息和内存模型,语言分析组件将源程序转换为中间语言序列并分别传递给内存变量分析单元和内存冲突消除单元,文件函数关系组件分析源程序中各文件的函数依赖关系并以源文件函数依赖树的形式传递给内存冲突消除单元;所述的内存操作信息表包括:数学运算指令功能、操作数个数、操作数类型、寻址模式、数据宽度以及执行开销;所述的内存模型描述表包括内存的总大小、内存分区的个数、各个内存分区的起始地址和大小。

3.根据权利要求1所述的消除内存访问冲突的编译装置,其特征是,所述的内存变量分析单元读取并分析记录中间程序包含的所有的内存变量及其操作,该内存变量分析单元包括:内存变量分配器和变量分析组件,其中:内存变量分配器分析由前端语言分析单元生成的中间语言序列中的内存变量信息并采用动态分配或静态分配以变量内存分配表的形式传递给变量分析组件,内存变量分析单元通过变量内存分配表来分析每一个程序基本块中的内存操作信息并记录到内存块操作表中,其中:动态分配是指:内存变量分配器通过唯一确定且记录到变量内存分配表中的分配标识以跟踪记录内存变量的名称以及生存周期信息;静态分配是指:内存变量分配器标识该变量生存周期为全局并记录到变量内存分配表中;所述的变量内存分配表包括:变量标识、变量名、变量尺寸、变量生存周期、变量分割以及内存分配,其中:变量标识是区别不同变量的唯一标识;变量尺寸记录变量的大小信息;变量生存周期记录变量的生存周期,包括变量的分配时刻以及变量的释放时刻,在初始阶段对于全局变量来说,分配时刻即程序开始,释放时刻是程序终止;变量分割记录变量经过变量分割变换模块后的新信息,包括分割数量,每个分割的变量重命名,以及各分割的内存分配;所述的内存块操作表中的每一个表项标识基本块中内存操作的相关信息;相关信息包含:源内存操作数的个数,每个源内存操作数的大小、变量类型和操作数更新方式,目标内存操作数的个数,每个目标内存操作数的大小、类型和操作数更新方式,内存操作的类型。

4.根据权利要求1所述的消除内存访问冲突的编译装置,其特征是,所述的内存冲突消除单元包括:变量分割组件、全局内存分配组件和寻址模式选择组件,其中:变量分割组件接收由前端语言单元传递的中间语言序列,通过分析中间程序中存在的内存冲突,对符合分割模型的变量进行分割和重命名操作,同时更新变量内存分配表和内存块操作表信息并分别输出至全局内存分配组件和寻址模式选择组件;全局内存分配组件读取更新后的内存分配表并根据其中的内存变量的大小,生存周期采用优化算法对所有的内存变量进行分配并输出至寻址模式选择组件;寻址模式选择组件根据内存块操作表的信息,以基本块为单位为数组形式的变量分配寻址模式,中间程序依次通过上述三个组件的转换后,内存冲突消除单元输出经过内存分配优化的中间程序和一个变量链接文件,该变量链接文件包括:每个内存分区的标识、内存分区的起始地址、分配到该内存的变量信息;为了减小内存的碎片,分配到各内存分区的变量按照变量大小从大到小的顺序依次进行分配;变量信息包括变量名,变量的对齐模式、变量的大小。

5.根据权利要求1所述的消除内存访问冲突的编译装置,其特征是,所述的转换输出单元,输入为变量链接表和中间程序,通过转换最终输出机器可执行的程序代码。

6.一种根据上述任一权利要求所述装置的实现方法,其特征在于,包括以下步骤:

第一步:用户编译源程序,对需要进行内存分配调度的变量结构通过内存变量分配器进行分配,使得编译器能够显式识别所有需要内存分配调度的变量;

第二步:用户使用本发明的一种简洁、易行且直观的内存操作和内存模型描述方法对处理器支持的内存操作、寻址模式以及内存的模型进行描述;用户只需要按照规范填入规范化的表格就可完成对内存操作以及内存模型的描述;

第三步:将用户对内存操作以及内存模型的描述信息提取出来,并分别组织成具有良好接口、同时有利于编译器解析的内存操作信息结构和特定内存的内存模型;

第四步:用户输入需要编译的源程序和源程序的文件依赖关系;根据用户编译的文件依赖关系构造一棵源文件函数依赖树;

第五步:源程序通过前端语言单元编译转换成编译器通用的一种中间程序,在这一步中,可以实施多种编译优化策略,包括对内存操作的调度,以消除内存操作之间存在的因数据相关而产生的冲突;

第六步:将由内存变量分配器分配的内存变量存放在变量内存分配表中;

第七步:结合第三步生成的内存操作信息结构,以及第六步生成的变量内存分配表,分析中间程序中对应内存变量的操作行为,并以基本块的形式构建内存块操作表;

第八步:根据第七步生成的内存操作表中各个内存变量的操作类型,通过变量分割模块检测各个内存块操作表项是否匹配分割模型,对于符合模型的内存变量进行变量分割和重命名;

第九步:根据第四步生成的源文件函数依赖树,找到发生分割重命名的基本块与变量,并找到依赖关系中该基本块的所有后续基本块中对此分割重命名变量的所有引用,对它们也依次进行更新;

第十步:重复第八步和第九步,直到完成所有满足模型的变量分割与重命名,同时更新变量内存分配表;

第十一步:根据变量内存分配表、内存块操作表通过全局优化模块进行内存变量全局优化分配;一种全局优化的方法是采用遗传算法计算出内存分配的优化解;根据算法所找到的最优解更新变量内存分配表和内存块操作表;

第十二步:根据内存块操作表的信息中各个内存块操作的源和目的操作数的更新方式,结合第三步中的内存操作结构信息中描述的寻址模式,由寻址模式分配组件选择合适的寻址模式;

第十三步:根据最终的变量内存分配表生成变量链接文件;

第十四步:根据变量链接文件将中间程序生成最终生成机器可执行程序。

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海交通大学;富士通株式会社,未经上海交通大学;富士通株式会社许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/201110073683.X/1.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top