[发明专利]基于静态划分的代码Cache管理方法有效
申请号: | 201310048664.0 | 申请日: | 2013-02-07 |
公开(公告)号: | CN103150197A | 公开(公告)日: | 2013-06-12 |
发明(设计)人: | 李莹;罗艳;尹建伟;吴健;邓水光;吴朝晖 | 申请(专利权)人: | 浙江大学 |
主分类号: | G06F9/45 | 分类号: | G06F9/45 |
代理公司: | 杭州裕阳专利事务所(普通合伙) 33221 | 代理人: | 应圣义 |
地址: | 310027 浙江省杭州市浙*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 静态 划分 代码 cache 管理 方法 | ||
技术领域
本发明涉及计算机应用领域的动态二进制翻译技术,特别涉及一种基于静态划分的代码Cache管理方法。
背景技术
动态二进制翻译技术是解决遗留代码和提高软件平台适应性的一种有效手段。它在不需要可执行程序源代码的情况下,动态地将源体系结构上的二进制程序经过转换,运行于其他目标体系结构上。动态二进制翻译基本上是这样工作的:以基本块为单位翻译源体系结构二进制代码,通过翻译生成相应的目标体系结构支持的代码块,并缓存在代码Cache中,这样当程序再次运行到这个基本块时,就直接从代码Cache中得到相应的目标体系结构代码并执行,从而提高程序执行速度。利用代码Cache加速翻译效率的同时,需要对翻译出来的代码块进行有效的管理,需要既节省本地内存空间,又不至于引起代码Cache由于空间不足导致频繁的替换操作以致性能下降。
代码Cache管理策略在动态二进制翻译中对提高翻译效率具有重要作用,它需要综合考虑管理开销、代码局部性、代码碎片等问题,然而现有的代码Cache管理策略依然存在着各种不足,特别是管理开销较大,从程序执行局部性的角度看,Cache中的代码块的缺失率仍然较高,因此,亟需提出一种更有效的代码Cache管理策略。
发明内容
本发明针对现有技术的缺点,提供了一种可以降低管理开销,提高Cache的命中率的新型的基于静态划分的代码Cache管理方法。
为实现上述目的,本发明可采取下述技术方案:
基于静态划分的代码Cache管理方法,包括TB数组和TB备份数组,包括以下具体步骤:
1)从配置文件中读取配置参数MAX_CACHE_SIZE和L1_PROPORTION的值,将代码Cache划分为L1级Cache和L2级Cache,计算L1级Cache的大小L1_MAX_SIZE=MAX_CACHE_SIZE*L1_PROPORTION,计算L2级Cache的大小L2_MAX_SIZE=MAX_CACHE_SIZE*(1-L1_PROPORTION),其中,MAX_CACHE_SIZE表示代码Cache的大小,L1_PROPORTION表示L1级Cache占代码Cache的比例,L1_PROPORTION≥50%;
2)根据所述配置参数计算阈值
3)读取一个基本块,判断所述基本块是否已被翻译,如果所述基本块未被翻译,则对所述基本块进行翻译,在L1级Cache申请空间,将翻译产生的目标体系代码块缓存至L1级Cache;所述申请空间步骤包括,如果L1_ptr–L1_base<L1_MAX_SIZE,将所述基本块的起始地址设置为L1_ptr,所述基本块翻译完成后,根据所述目标体系代码块的大小,更新L1_ptr和TB数组;如果L1_ptr–L1_base≥L1_MAX_SIZE,令L1_ptr=L1_base,清空所述L1级Cache,将所述TB数组清零,将所述TB备份数组复制到所述TB数组,所述L1_base指向所述L1级Cache的起始地址,所述L1_ptr指向所述L1级Cache的空闲区域;
4)执行所述目标体系代码块,如果所述目标体系代码块在所述L1级Cache中则execution_times加1;
5)如果所述execution_times达到所述阈值N,则将所述目标体系代码块转移至L2级Cache,同时将所述目标体系代码块的TB信息从所述TB数组复制到所述TB备份数组;
6)重复执行所述步骤3-5直至所有基本块执行完毕。
作为优选,所述L1级Cache采用全清空策略,所述L2级Cache采用FIFO策略。
作为优选,还包括记录所述目标体系代码块大小的generated_size。
作为优选,所述步骤5中将述目标体系代码块转移至L2级Cache的步骤具体为:从所述generated_size获得所述目标体系代码块的大小size,将所述目标体系代码块转移至L2_head所指向的内存空间,更新所述基本块TB信息和L2_head,如果(L2_head+size)%L2_MAX_SIZE≥L2_rear,则执行代码块换出操作,重复执行所述代码块换出操作直至L2级Cache的空闲区域满足所述目标体系代码块的大小,其中,所述L2_head指向L2级Cache的空闲区域,所述L2_rear指向最先进入L2级Cache的目标体系代码块;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于浙江大学,未经浙江大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310048664.0/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种基于迟滞全反馈神经网络的信号盲检测方法
- 下一篇:新型地球仪