[发明专利]基于相变存储器的循环转数组的损耗均衡编译方法有效
申请号: | 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信息,以检测全局热点变量,为循环转数组做准备。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于武汉大学,未经武汉大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110198085.9/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种远程智能录井分析方法及系统
- 下一篇:一种餐厅推荐的方法及装置