论文部分内容阅读
为了解决指令集兼容问题,以及提高程序的执行速度,研究人员开发了跨指令集虚拟机系统、动态二进制翻译系统、动态二进制优化系统以及一些模拟器系统。代码缓存管理是上述系统设计和实现中的关键环节之一,对系统性能具有重要影响。
本文以程序的局部性原理为指导,通过设计高效的代码缓存来提高上述系统的运行速度,重点研究代码缓存的索引存储结构和热点替换算法。
本文的研究内容及主要贡献有以下四点:
1.提出了新的两级代码缓存框架的索引和存储方法(GCCF-UI,Generational Code Cache Framework-United Indexing)。原来的两级代码缓存框架(GECF,Generational Code Cache Framevork)将整个代码缓存空间分成不连续的三部分,替换一个热点需修改两个索引表,并在内存中移动热点两次。本文采统一索引的方法,将热点属于哪一级代码缓存与热点的存储位置分离,消除了替换热点时内存移动的开销,并减少了查找索引表的开销。实验表明,GCCF—UI框架查找索引表和替换热点的时间比GCCF框架平均减少了90.7%。
2.实现了一个代码缓存性能评测模拟器,用于评测代码缓存管理框架使用各种替换算法(FIFO、LFU、LRU)时的性能;
3.评测了GCCF—UI框架分别采用FIFO、LFU、LRU替换算法时的性能,发现GCCF—UI框架两级都采用FIFO替换算法时性能最好;
4.将GCCF—UI与单级代码缓存框架进行了性能比较。在相同条件下,GCCF—UI框架的热点命中率明显高于单级代码缓存框架。
本文提出的GCCF—UI框架,可以应用于跨指令集虚拟机系统、动态二进制优化系统、动态二进制翻译系统和一些模拟器的设计当中,以重复利用翻译后或优化过的代码,减少重新翻译或优化代码的代价,特别是减少查找索引表和替换热点的时间,提高各种系统的执行速度。