摘要 | 第5-6页 |
ABSTRACT | 第6页 |
第1章 绪论 | 第18-28页 |
1.1 研究背景 | 第18-24页 |
1.1.1 国产处理器基本情况 | 第18-19页 |
1.1.2 二进制翻译 | 第19-21页 |
1.1.3 虚拟机 | 第21-22页 |
1.1.4 多核处理器 | 第22-23页 |
1.1.5 内核态虚拟化技术 | 第23-24页 |
1.2 本文的研究内容和组织 | 第24-27页 |
1.2.1 虚拟机设计和优化目前存在的问题 | 第24-25页 |
1.2.2 本文的研究内容和主要贡献 | 第25页 |
1.2.3 本文的组织结构 | 第25-27页 |
1.3 本章小结 | 第27-28页 |
第2章 本文相关研究工作 | 第28-52页 |
2.1 相关研究概述 | 第28-31页 |
2.1.1 二进制翻译 | 第28-30页 |
2.1.2 虚拟机 | 第30-31页 |
2.2 二进制翻译相关工作 | 第31-41页 |
2.2.1 FX!32:基于度量的离线优化 | 第32-33页 |
2.2.2 UQBT和UQDBT:二进制翻译器的编译器视角 | 第33-34页 |
2.2.3 DAISY和BOA:VLIW指令集上的协同设计 | 第34-35页 |
2.2.4 Crusoe处理器和CMS:协同设计处理器及配套软件 | 第35-36页 |
2.2.5 Dynamo:用于优化的二进制翻译器 | 第36-37页 |
2.2.6 IA-32EL:Intel官方模拟X86的二进制翻译器 | 第37-39页 |
2.2.7 QEMU:设计精巧的开源二进制翻译器 | 第39-41页 |
2.3 虚拟处理器实现 | 第41-46页 |
2.3.1 虚拟处理器实现概述 | 第41-42页 |
2.3.2 “陷阱-模拟”方法解决同指令集虚拟化 | 第42-43页 |
2.3.3 “扫描-修补”方法解决同指令集虚拟化 | 第43-44页 |
2.3.4 “特权解除”方法解决同指令集虚拟化 | 第44-45页 |
2.3.5 硬件虚拟化解决同指令集虚拟化 | 第45页 |
2.3.6 二进制翻译解决指令集虚拟化 | 第45-46页 |
2.4 二进制翻译技术基础 | 第46-50页 |
2.4.1 二进制翻译概述 | 第46-48页 |
2.4.2 解码基本技术 | 第48-49页 |
2.4.3 中间代码转成后端代码技术 | 第49-50页 |
2.4.4 后端代码的执行技术 | 第50页 |
2.5 本章小结 | 第50-52页 |
第3章 虚拟处理器的优化 | 第52-102页 |
3.1 系统虚拟机的四元组表示和优化方法 | 第52-55页 |
3.1.1 系统虚拟机四元组表示概述 | 第52-53页 |
3.1.2 基于离线数据流分析的优化方法 | 第53-55页 |
3.2 二进制翻译实现和优化思路 | 第55-57页 |
3.3 虚拟处理器性能提升概论 | 第57-58页 |
3.4 T-Cache查找优化 | 第58-64页 |
3.4.1 T-Cache基础 | 第58-59页 |
3.4.2 基于数组查找的SEARCH-TABLE算法 | 第59-60页 |
3.4.3 基于循环查找的SEARCH-TABLE算法 | 第60页 |
3.4.4 基于散列查找的SEARCH-TABLE算法 | 第60-62页 |
3.4.5 散列函数的设计 | 第62-63页 |
3.4.6 查找算法对比 | 第63页 |
3.4.7 逆查找表的设计 | 第63-64页 |
3.5 T-Cache替换策略 | 第64-73页 |
3.5.1 T-Cache替换策略概论 | 第64-66页 |
3.5.2 T-Cache的性能量化 | 第66-67页 |
3.5.3 LRU替换策略 | 第67页 |
3.5.4 满时清空的替换策略 | 第67-68页 |
3.5.5 抢先清除的替换策略 | 第68页 |
3.5.6 FIFO替换策略 | 第68-69页 |
3.5.7 分空间FIFO替换策略 | 第69页 |
3.5.8 基于执行频率(LFE)的替换策略 | 第69页 |
3.5.9 基于综合优先级的替换策略 | 第69-70页 |
3.5.10 分阶段FIFO和LFE替换策略 | 第70页 |
3.5.11 替换策略的对比 | 第70-71页 |
3.5.12 T-Cache替换策略的局限性 | 第71-73页 |
3.6 间接跳转优化 | 第73-82页 |
3.6.1 间接跳转优化概论 | 第73-74页 |
3.6.2 基于内联缓存的间接跳转优化 | 第74-75页 |
3.6.3 基于跳转预测表的间接跳转优化 | 第75-78页 |
3.6.4 内联缓存的大小和替换算法 | 第78-80页 |
3.6.5 基于影子栈的跳转优化 | 第80-82页 |
3.6.6 间接跳转优化的算法性能评价 | 第82页 |
3.7 基于内存布局的性能优化小结 | 第82页 |
3.8 基本块优化 | 第82-89页 |
3.8.1 基本块优化概论 | 第82-83页 |
3.8.2 基于数据流分析的优化 | 第83-86页 |
3.8.3 窥孔优化 | 第86-87页 |
3.8.4 数学化简和强度削弱 | 第87-88页 |
3.8.5 基本块优化需要注意的事项 | 第88-89页 |
3.8.6 基本块优化算法性能评价 | 第89页 |
3.9 寄存器映射和翻译规则优化 | 第89-93页 |
3.9.1 寄存器映射 | 第89-91页 |
3.9.2 寄存器映射的细节探讨 | 第91-92页 |
3.9.3 寄存器映射和翻译规则优化的性能评价 | 第92-93页 |
3.10 超块优化 | 第93-100页 |
3.10.1 超块概述 | 第93-95页 |
3.10.2 超块的意义 | 第95-97页 |
3.10.3 超块实现算法 | 第97-99页 |
3.10.4 超块优化算法性能评价 | 第99-100页 |
3.11 基于虚拟指令系统的性能优化小结 | 第100页 |
3.12 本章小结 | 第100-102页 |
第4章 跨ISA多核虚拟处理器实现 | 第102-138页 |
4.1 多核虚拟处理器概论 | 第102-103页 |
4.2 多核虚拟处理器的核心问题 | 第103-111页 |
4.2.1 概述 | 第103-104页 |
4.2.2 虚拟多核处理器中的Cache问题 | 第104-106页 |
4.2.3 虚拟多核处理器中的存储一致性模型 | 第106-108页 |
4.2.4 虚拟多核处理器中的串行化指令 | 第108-109页 |
4.2.5 虚拟多核处理器中的原子操作问题 | 第109-110页 |
4.2.6 虚拟多核处理器中的中断问题 | 第110-111页 |
4.3 函数级和指令级的原子操作解决方案 | 第111-120页 |
4.3.1 保证基本读写操作的原子性 | 第111-112页 |
4.3.2 保证LOCK类原子指令的原子性 | 第112-113页 |
4.3.3 CAS系列算法 | 第113-115页 |
4.3.4 基于GCC内建函数解决原子指令模拟 | 第115-116页 |
4.3.5 基于LL/SC指令的指令级解决原子指令模拟 | 第116-118页 |
4.3.6 保证非对齐访问的原子性 | 第118-120页 |
4.4 基于无锁队列和信号的中断解决方案 | 第120-128页 |
4.4.1 中断模拟概论 | 第120-121页 |
4.4.2 自学习实时信号解决中断发送问题 | 第121-123页 |
4.4.3 无锁队列解决中断接收问题概论 | 第123-124页 |
4.4.4 基于CAS类算法的无锁队列 | 第124-126页 |
4.4.5 基于安全读的无锁队列 | 第126-128页 |
4.5 实验和分析 | 第128-137页 |
4.5.1 实验平台介绍 | 第128-129页 |
4.5.2 测试程序简介 | 第129页 |
4.5.3 使用GCC内建函数实现原子指令 | 第129-130页 |
4.5.4 使用GCC内建函数实现安全读无锁队列 | 第130-131页 |
4.5.5 使用LL/SC实现原子指令 | 第131-132页 |
4.5.6 使用LL/SC实现安全读无锁队列 | 第132页 |
4.5.7 多线程pi实验结果对比研究 | 第132-135页 |
4.5.8 7-ZIP压缩解压缩实验结果对比研究 | 第135-137页 |
4.6 本章小结 | 第137-138页 |
第5章 跨ISA内核化虚拟层实现和优化 | 第138-156页 |
5.1 跨ISA内核化虚拟层概论 | 第138-139页 |
5.2 跨ISA内核化虚拟层架构 | 第139-149页 |
5.2.1 架构概述 | 第139-141页 |
5.2.2 内核层 | 第141页 |
5.2.3 转发层概述 | 第141页 |
5.2.4 转发层:浮点转换库 | 第141-144页 |
5.2.5 转发层:C接口适配库 | 第144-145页 |
5.2.6 转发层:驱动转发库 | 第145页 |
5.2.7 虚拟层概述 | 第145-146页 |
5.2.8 虚拟层:虚拟处理器和虚拟设备 | 第146-147页 |
5.2.9 虚拟层:vMMU和vMEM的实现 | 第147-148页 |
5.2.10 客户层 | 第148-149页 |
5.2.11 调试库 | 第149页 |
5.3 实验和分析 | 第149-154页 |
5.3.1 nbench测试 | 第150-152页 |
5.3.2 基于HDPARM的测试 | 第152-153页 |
5.3.3 对于VGA性能的测试 | 第153-154页 |
5.4 本章小结 | 第154-156页 |
第6章 总结与展望 | 第156-158页 |
6.1 本文研究工作总结 | 第156页 |
6.2 本文主要贡献和创新点 | 第156-157页 |
6.3 进一步工作 | 第157页 |
6.4 本章小结 | 第157-158页 |
参考文献 | 第158-168页 |
致谢 | 第168-170页 |
攻读学位期间参加的科研项目 | 第170页 |