内核级二进制翻译系统设计及性能优化

内核级二进制翻译系统设计及性能优化

论文摘要

随着计算机系统的发展,新的硬件平台不断推出,在推动计算机系统性能不断提高的同时,也使得软件兼容性问题日益突出。软件兼容性问题产生的根源在于,针对一种体系结构的处理器(如x86体系结构处理器)编译出来的二进制可执行文件,无法直接在另一种体系结构处理器(如MIPS体系结构处理器)上运行。当前,软件兼容性问题已经影响到底层硬件设计,上层软件开发以及终端用户体验等计算机技术的各个层面。二进制翻译是一种翻译执行二进制程序的技术,能够在一种处理器上直接翻译执行其他体系结构处理器的二进制程序,可以在可控的人力投入范围内解决软件兼容性问题。二进制翻译可以理解为一种特殊的编译技术。传统编译器的前端是高级语言,后端生成针对某种体系结构处理器的可执行指令,而二进制翻译器的前端是某种处理器的二进制代码,后端生成可在另一种体系结构处理器上执行的指令。近些年,随着云计算的兴起和计算机体系结构的发展,二进制系统的应用范围日益广泛。然而,在实际的应用过程中,存在如下几个制约二进制翻译系统发展的技术难题:1)执行过程引入过多额外工作负载;2)翻译后指令质量不高导致执行性能降低;3)目标体系结构与宿主体系结构差异导致性能下降;4)对与操作系统内核交互的应用软件支持不够完善。围绕上述几个问题,本文以内核中的二进制翻译系统的设计和实现为中心,从性能和功能两个方面入手,一方面研究如何利用内核和底层硬件特性对系统进行深度优化,另一方面利用内核的特性对传统二进制翻译系统的功能进行扩展,使之支持新的执行模式。本文主要的研究内容和创新点可概括为以下几点:1)设计并实现了内核级动态二进制翻译系统。该系统具有不同于传统动态二进制翻译系统的新执行模式,其目标程序的执行环境和与操作系统的交互方式都与用户态二进制翻译系统有显著不同。同时,内核态的特殊性给二进制翻译系统的性能优化带来了新的突破点。2)提出了软硬结合的二进制翻译系统指令管理与查找策略。该策略通过加速单次指令查找速度提升系统整体性能。与传统的利用纯软件技巧减少指令查找次数的优化方法相比,充分利用了硬件的性能优势,优化效果较为明显,进一步优化的潜力也较大。3)设计了一种新的应用软件内核驻留模块翻译执行模式。传统的用户态二进制翻译系统只能通过翻译执行整个操作系统的方式来实现内核模块的跨平台运行,而本文提出的内核级二进制翻译系统设计了专门的执行模式,能够直接翻译执行内核模块。由于减少了翻译执行的指令数量,该模式显著提高了系统的执行效率。4)设计了新的硬件设备模拟方式。该方式利用内核态程序能直接操纵底层硬件设备的特性,将传统的纯软件模拟硬件设备的方式升级为使用实际的硬件设备模拟目标硬件。这种模拟方式能够将软件的工作量减少到最低的程度。5)设计了面向龙芯计算平台的动态二进制翻译系统翻译规则优化策略。该策略利用动态二进制翻译系统执行过程中获得的目标程序动态信息,统计并分析了动态二进制翻译系统后端指令执行规律,在这一基础上,利用龙芯CPU扩展指令集进行了高频指令的翻译规则优化。这种优化策略显著减少了翻译后指令的数量,从而提高了系统的整体性能。本文所有研究工作己实际应用于龙芯动态二进制翻译系统,显著提升了龙芯计算平台运行Windows操作系统和X86应用程序的性能,支持了国产CPU的发展和市场化。

论文目录

  • 摘要
  • ABSTRACT
  • 目录
  • 图目录
  • 表目录
  • 第一章 绪论
  • 1.1 研究背景
  • 1.1.1 二进制翻译的产生背景
  • 1.1.2 二进制翻译的基本概念
  • 1.1.3 二进制翻译的应用
  • 1.2 二进制翻译系统的分类
  • 1.2.1 解释型二进制翻译系统
  • 1.2.2 静态二进制翻译系统
  • 1.2.3 动态二进制翻译系统
  • 1.2.4 混合型二进制翻译系统
  • 1.2.5 进程级二进制翻译系统
  • 1.2.6 系统级二进制翻译系统
  • 1.3 主流二进制翻译系统介绍
  • 1.3.1 QEMU系统
  • 1.3.2 FX!32系统
  • 1.3.3 UQBT和UQDBT系统
  • 1.3.4 Aries系统
  • 1.3.5 Daisy系统
  • 1.3.6 DigitalBridge和Bitran系统
  • 1.3.7 同源虚拟机系统
  • 1.3.8 龙芯动态二进制翻译系统
  • 1.3.9 主流二进制翻译系统列表
  • 1.4 动态二进制翻译的研究方向和热点
  • 1.5 本文研究内容与成果
  • 1.6 论文组织结构
  • 第二章 动态二进制翻译系统结构与技术要点
  • 2.1 动态二进制翻译系统结构
  • 2.1.1 动态二进制翻译系统执行流程
  • 2.1.2 运行时环境模拟器
  • 2.1.3 前端指令解析器
  • 2.1.4 指令翻译器
  • 2.1.5 后端指令管理器
  • 2.1.6 后端指令执行器
  • 2.1.7 外设模拟器
  • 2.2 动态二进制翻译面临的主要技术问题
  • 2.2.1 基本块索引
  • 2.2.2 分支指令跳转
  • 2.2.3 寄存器分配
  • 2.2.4 内核驻留模块的翻译
  • 2.2.5 实时性问题
  • 2.3 小结
  • 第三章 KBT二进制翻译系统设计与实现
  • 3.1 研究背景
  • 3.1.1 KBT系统的产生背景
  • 3.1.3 KBT系统的定位
  • 3.2 KBT系统的整体结构设计
  • 3.3 KBT各模块设计与实现
  • 3.3.1 用户态监视器
  • 3.3.2 内核态监视器
  • 3.3.3 CPU模拟器
  • 3.3.4 指令翻译器
  • 3.3.5 外设模拟器
  • 3.4 KBT性能测试与分析
  • 3.4.1 实验环境与数据
  • 3.4.2 KBT各模块执行时间分成
  • 3.4.3 KBT性能与同类系统比较
  • 3.5 小结
  • 第四章 KBT后端指令管理系统性能优化
  • 4.1 研究背景
  • 4.2 LIIS设计与实现
  • 4.2.1 LIIS设计思想
  • 4.2.2 LIIS系统结构
  • 4.3 LIIS指令替换算法
  • 4.3.1 后端指令局部性分析
  • 4.3.2 L3替换算法
  • 4.3.3 L2替换算法
  • 4.3.4 L1替换算法
  • 4.4 LIIS性能分析与实验结果
  • 4.4.1 替换算法性能及测试
  • 4.4.2 LIIS性能测试
  • 4.4.3 LIIS进一步优化实验
  • 4.5 小结
  • 第五章 KBT的内核模块翻译系统性能优化
  • 5.1 研究背景
  • 5.2 UKCF设计与实现
  • 5.2.1 UKCF执行流程
  • 5.2.2 UKCF系统结构
  • 5.3 外部函数直接执行机制
  • 5.4 UKCF性能分析与实验结果
  • 5.4.1 UKCF性能分析
  • 5.4.2 UKCF性能测试结果
  • 5.5 小结
  • 第六章 面向龙芯平台的KBT性能优化策略研究
  • 6.1 研究背景
  • 6.2 后端指令执行频率分析与翻译规则优化
  • 6.2.1 KBT后端指令执行时间测试与分析
  • 6.2.2 面向龙芯3A的翻译规则优化策略
  • 6.2.3 翻译规则优化性能分析与测试
  • 6.3 硬件模拟方式优化
  • 6.3.1 研究背景
  • 6.3.2 基于KBT的管道式硬件模拟
  • 6.3.3 管道式硬件模拟实验结果
  • 6.5 小结
  • 第七章 总结与展望
  • 7.1 本文主要工作总结
  • 7.3 进一步工作展望
  • 参考文献
  • 致谢
  • 攻读学位期间参加的科研项目
  • 在读期间发表的学术论文
  • 相关论文文献

    标签:;  ;  ;  ;  ;  ;  ;  

    内核级二进制翻译系统设计及性能优化
    下载Doc文档

    猜你喜欢