针对多线程程序的二进制翻译器中的Code Cache管理策略

来源 :中国科学院计算技术研究所 | 被引量 : 0次 | 上传用户:godman007
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
二进制翻译技术通过软件手段将一种指令集体系结构(ISA)上的可执行程序翻译到另一种ISA上执行。该项技术可以应用于代码移植、动态优化、错误监测、系统安全等多个领域。   随着计算机芯片工艺的发展和计算机应用的推动,多核技术正在快速发展。因为多线程程序可以很好地利用多核的并行来提高程序的性能,所以多线程的应用也越来越广泛。因此支持多线程程序的移植,保证多线程程序在不同的ISA上的兼容性,成为二进制翻译器的重要任务。   Code Cache是二进制翻译系统中的一个重要的组成部分,用于缓存翻译器产生的本地代码。Code Cache中数据的布局是否合理,将会从很大程度上影响代码的局部性,从而影响性能。多线程程序的移植为二进制翻译器以及Code Cache管理带来了新的挑战。   本文主要针对支持多线程程序的二进制翻译器中的Code Cache管理策略进行了研究。通过对多线程程序特点的分析,提出一种合理的线程间共享Code Cache的管理策略:针对多线程共享的Code Cache,当其容量达到上限时对其进行替换。该策略在不影响线程并发度的前提下,改善了代码局部性。   本文的主要贡献如下:   1、提出一种在多线程环境下跟踪线程踪迹的方法。和不跟踪线程踪迹的替换方案相比,这种方法在发生Code Cache替换的时候,需要和运行时系统进行同步的线程数量较少,从而提高了多线程程序的并发度。   2、设置永不替换的Code Cache单元,解决了在源二进制程序中调用系统调用进行同步操作时发生Code Cache替换而导致死锁的问题。   3、提出细粒度锁的优化方案,提高运行时系统的并发度。   4、提出无锁哈希表的解决方案,采用原子操作保证在二进制翻译器本地码中访问哈希表时避免死锁,并进一步提高了运行时系统的并发度。
其他文献
内存墙、I/O墙、功耗墙、复杂性墙、编程墙、扩展性墙是高性能计算机的发展及其应用的主要瓶颈。以高性能、可编程、可移植、稳定性为特征的高效能技术是高性能计算机研究的
计算机动画一直是计算机图形学领域的一个研究热点,影视特效的发展以及电子游戏的强力需求进一步推动了这一方向的研究。然而,真实世界蕴涵着复杂的运动规律,而计算机图形学领域
随着互联网的迅猛发展,网络安全已经成为互联网应用中的焦点问题之一。单一的防火墙无法应付日益复杂和多样化的网络攻击,需要在网关进行全方位的防护。在网关部署众多的网络安
工作流的概念起源于生产组织和办公自动化领域,其目的是通过将工作分解成定义良好的任务、角色,按照一定的规则和过程来执行这些任务并对它们进行监控,达到提高工作效率、降
门户中间件作为构建、管理、运行企业信息门户的支撑系统,提供了面向表示层的开放集成框架,能很好的集成现有应用,消除信息孤岛,同时具有强大的用户个性化功能。门户开发人员在门
目前DeepWeb是数据库领域研究的热点,开放存取期刊OA(Open Access)作为DeepWeb资源,以其优秀的学术共享理念得以迅速发展。但是OA期刊遍布互联网,“孤岛”现状日益严重,而传
基因组测序技术的发展和质谱技术的进步,使得能够快速地产生大量的蛋白质序列数据,然而相比之下,经典的蛋白质结构测定方法速度却很慢。因此,为弥补测定蛋白质序列和蛋白质结构之
P2P(Peer—to—Peer,对等)文件共享系统从1999年正式出现以来一直在经历着飞速的发展,现在这些系统已经吸引了大量的Internet用户以及占据了大量的Internet流量。最近的测量结
基于生物特征识别的身份鉴别技术提供了一种高可靠性、高稳定性的身份鉴别方式。在各种生物特征识别技术中,人脸识别是一项极具发展潜力的生物特征识别技术,在信息安全、公共安
学位
随着过去几十年勘探技术的发展和油气田大规模的开采,一些较易发现、较简单的油气田已几乎开发殆尽。人们的目标开始转向复杂油气藏。由于复杂油气藏在地质形态上表现为倾角较