[发明专利]基于相变存储器的循环转数组的损耗均衡编译方法有效

专利信息
申请号: 202110198085.9 申请日: 2021-02-22
公开(公告)号: CN112947931B 公开(公告)日: 2023-10-03
发明(设计)人: 李清安;王紫微 申请(专利权)人: 武汉大学
主分类号: G06F8/41 分类号: G06F8/41
代理公司: 武汉科皓知识产权代理事务所(特殊普通合伙) 42222 代理人: 肖明洲
地址: 430072 湖*** 国省代码: 湖北;42
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 基于 相变 存储器 循环 转数 损耗 均衡 编译 方法
【权利要求书】:

1.一种基于相变存储器的循环转数组的损耗均衡编译方法,其特征在于,包括以下步骤:

步骤1:收集源程序的全局变量的写次数信息;

步骤2:根据步骤1中全局变量的写次数,计算需要生成的数组大小;

步骤2的具体实现包括以下子步骤:

步骤2.1:根据步骤1中的全局变量写次数信息,统计全局变量写次数的平均值Wavg

步骤2.2:统计全局热点变量信息;如果全局变量Gi的写次数Wi与所述步骤2.1生成的全局变量写次数的平均值Wavg的比值Wi/Wavg大于等于阈值N,则认为该全局变量是全局热点变量Ghot

步骤2.3:计算Wi与Wavg比值的大小,即为该全局热点变量Ghot所需数组的大小sizei

步骤2.4:将全局热点变量的标识namei,分配的内存地址valuei,和所需数组大小sizei均写入磁盘文件中;

步骤3:生成源程序的中间表示,即LLVM中间语言IR;

步骤4:通过LLVM Pass从磁盘读取步骤2中生成的全局热点变量信息;

步骤5:基于步骤3生成的中间表示,进行过程间分析,获得程序包含的每个函数直接以及间接调用的函数集合;

步骤6:对于每个函数,收集循环有关的信息,即循环的入口和出口基本块,通过循环的入口和出口基本块唯一确定一个循环;

步骤7:收集循环内部读写的全局热点变量,生成一个循环读写的全局热点变量集合;

步骤8:对于步骤7中获得的循环读写的全局热点变量集合,进行逃逸分析;

步骤9:对于步骤8中获得的未发生逃逸的全局热点变量,进行循环转数组操作;

步骤10:将经过转换的中间表示汇编链接成新的可执行文件。

2.根据权利要求1所述的基于相变存储器的循环转数组的损耗均衡编译方法,其特征在于,步骤1的具体实现包括以下子步骤:

步骤1.1:获取ELF可执行文件的符号表信息,进而收集得到源程序的全局变量信息,包括变量分配的内存地址、类型、大小和标识符;

步骤1.2:将步骤1.1中收集到的全局变量信息重定向到磁盘文件中;

步骤1.3:采用Intel的pin工具在运行时对二进制文件进行指令插桩,通过输入步骤1.1收集到的全局变量的内存地址信息,对程序的写指令进行动态插桩,如果写指令的操作地址是步骤1.1收集到的全局变量的内存地址,则该全局变量的写次数就加1。

3.根据权利要求1所述的基于相变存储器的循环转数组的损耗均衡编译方法,其特征在于:步骤3中,使用命令clang-emit-llvm-S-input files,对于输入的源程序source.c生成LLVM中间表示source.ll。

4.根据权利要求1所述的基于相变存储器的循环转数组的损耗均衡编译方法,其特征在于:步骤4中,通过LLVM的转换Pass从磁盘读取步骤2中的全局热点变量Ghot信息,以检测全局热点变量,为循环转数组做准备。

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

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

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

×

专利文献下载

说明:

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

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

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

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

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

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

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

钻瓜专利网在线咨询

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

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