基于龙芯处理器的二进制翻译器优化.pdf_第1页
基于龙芯处理器的二进制翻译器优化.pdf_第2页
基于龙芯处理器的二进制翻译器优化.pdf_第3页
基于龙芯处理器的二进制翻译器优化.pdf_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第3 5 卷 V o L 3 5 第7 期 N 0 0 计算机工程 C o m p u t e rE n g i n e e r i n g 2 0 0 9 年4 月 A p r i l2 0 0 9 开发研究与设计技术 文章编号 l o o 岫4 2 8 2 0 眇 0 7 珈2 8 0 珈3文献标识码 A中田分类号tT P 3 1 1 5 2 基于龙芯处理器的二进制翻译器优化 蔡嵩橙L 2 刘奇2 王翻2 刘金啊1 1 首都师范大学和中国科学院计算技术研究所计算机科学联合研究院 北京1 0 0 0 3 7 2 中国科学院计算技术研究所 北京1 0 0 0 8 0 蔓 二进制翻译是实现系统迁移的主要方法 但基于通用平台的仅靠软件实现的二进制翻译性能不高 该文以龙芯2 F 处理器为实现 平台 提出一种Q E M U 二进制翻译器并进行优化 其中包括编译环境的优化以及二进制翻译器本身的优化2 个方面 对后者的优化主要 涉及寄存器直接映射和多媒体指令的改进 实验结果表明 通过寄存器映射优化后 系统能够获得i 4 5 的加速比 通过多媒体优化后 多 媒体程序的执行能达到本地机器执行的8 0 的性能 关翻 龙芯2 F 处理器 二进制翻译器 寄存器 堆栈 O p t i m i z a t i o no fB i n a r yT r a n s l a t o rB a s e do nG O D S O NC P U C A IS o n g s o n g L 2 L I UQ i 2 W A N GJ i a n 2 L I UJ i n g a n 9 1 1 J o i n t A c a d e m e o f C o m p u t e r S c i e n c e C a p i t a lN o r m a lU n i v e r s i t y I n s t i t u t e o f C o m p u t i n g T e c h n o l o g y C h i n e s e A c a d e m y o f S c i e n c e s B e i j i n g1 0 0 0 3 7 2 I n s t i t u t eo fC o m p u t i n gT e c h n o l o g y C h i n e s eA c a d e m yo fS c i e n c e s B e i j i n g1 0 0 0 8 0 A b s t r a c t B i n a r yt r a n s l a t i o ni st h em o s ti m p o r t a n ta p p r o a c ht oa c h i e v es y s t e mm i g r a t i o n b u tt h eo n eb a s e do ng e n e r a la r c h i t e c t u r a la n ds o f t w a r e s u f f e r sf r o mp o o rp e r f o r m a n c e T h i sp a p e ri n t r o d u c e sa no p t i m i z a t i o nm e t h o do fQ E M Ub i n a r yt r a n s l a t i o nb a s e do nG O D S O N 2 FC P U T h i s o p t i m i z a t i o nm a i n l yc o n t a i n st w oa s p e c t s t o o lc h a i na n dQ E M Ub i n a r yt r a n s l a t o ri t s e l f A i m i n ga tt h el a t t e ro n e t h em e t h o d sa r ed i r e c tm a p p i n go f r e g i s t e r sa n dt h eo p t i m i z a t i o nt oM u l t i m e d i aE x t e n s i o n s M M X i n s t r u c t i o n s E x p e r i m e n t a lr e s u l t ss h o wt h a tt h eO So b t a i n ss p e e d u po f1 4 5t h r o u g h d i r e c tm a p p i n go fr e g i s t e r s a n dt h eM M Xp r o g r a m sa t t a i n s8 0 p e r f o r m a n c eo ft h eh o s tm a c h i n et h r o u g ht h eo p t i m i z a t i o nt oM M Xi n s t r u c t i o n s K e yw o r d s G O D S O N 2 FC P U b i n a r yt r a n s l a t o r r e g i s t e r s t a c k l 概述 目前X 8 6 处理器在应用中占据丰导地位 这是因为在服 务器领域中 大量应用都是X 8 6 架构 R I S C 架构的微处理 器为了能够广泛地运行服务器类的成用 实现与X 8 6 架构的 兼容就成为系统实现的旨要任务 另外 X 8 6 架构的桌面应 用程序更加多样化 很多商业软件都基于X 8 6 架构的 所以 R I S C 微处理器嘤想更广泛地运行多样化的桌面应用 就需要 实现对X 8 6 的兼容 而二进制翻译是实现系统迁移的霞要方 法 因此 二进制翻译器的应用也就越来越广泛 虚拟机卞要分为2 类 进程级虚拟机和系统级虚拟机 进程级虚拟机提供A B I 级的支持 包括用户指令及运行环境 U S R 和系统调用 S Y S C A L L 系统级虚拟机支持完整的 I S A 包括用户指令及运行环境 U S R 和特权指令及运行环境 P R V 实现不同系统的迁移是模拟器的工作 2 J 模拟器的实现 有2 种方法 解释执行和翻译执行 解释执行就是单条指令 的解释 每次解释一条目标指令代码为本地指令代码 然后 执行这条指令 这样一条一条指令地执行完所有程序 翻译 执行是按照指令块进行翻泽 翻译好的指令块存入 T r a n s l a t i o nB l o c k T B 中 以后每执行到这段代码时就到T B 中取指令 从而省去二次翻泽的过程 在指令多次霞复执行 的情况下 效率相对于单条指令的解释执行有较大提升 Q E M U 是个二进制动态翻泽器p l 它有系统级和进程级 2 种工作模式 且叮以实现多种异构平台的映射 具有依赖 平台多样 翻泽效率车H 对较高 开源易移植等优点 因此 一2 8 口一 选择Q E M U 作为二进制翻译的主要媒介 并在此基础上针对 龙芯2 F 处理器作相应优化 以达到龙芯处理器兼容X 8 6 应 用程序的目的 2 Q E M u 到龙芯的移植 Q E M U 开源代码中自 支持X 8 6 架构的稳定版本 由于龙 芯2 F 是基于M I P S 架构的 而从X 8 6 纠M I P S 程序在控制行 为 最主要的差别就是程序的调用方式 因此将这个版本移 植到龙芯2 F 上的主要工作是消除它们程序调用方式的差异 X 8 6 程序在函数调用时 返 u l 地址保存在堆栈中 函数 返回时从返回地址出栈即可 而M I P S 程序在函数调用时 将返 u j 地址保存在3 l 号寄存器中 返回时由跳转指令跳转到 基j 叁项目 国家 9 7 3 计划基金资助项日 町扩展 叮蓖构片上并 行体系结构与原型芯片设计 2 0 0 5 C B 3 2 1 6 0 1 国家 8 6 3 计划基 金资助重点项目 低成本先进计算机单机 2 0 0 6 A A 0 1 0 2 0 i 国家 8 6 3 计划基金资助重点项目 大规模片上多处理器高性能存储系 统研究 2 0 0 7 A A 0 1 Z I l 4 国家自然科学摹金资助项目 共享二级 C a c h e 的片l z 多处理器C a c h e 块分布技术研究 6 0 7 0 3 0 1 7 国家自 然科学基金资助项F I 高性能片I 存储系统 6 0 7 3 6 0 1 2 园家E l 然 科学基金资助项日 资源有效的单片多处理器结构研究 6 0 6 7 3 1 4 6 北京市自然科学基金资助项日 一种创新的同时多个微线程处理器 关键技术研究 4 0 7 2 0 2 4 作者倚介 蔡嵩松 1 9 8 6 男 硕 研究生 主研方向 计算机体 系结构 刘奇 博上研究生 王剑 副研究员 刘金博4 教授 博 l 二生导师 收稿日期 2 0 0 8 0 8 3 0E m a i l c a i s o n g s o n g i c t a c c n 万方数据 3 l 号寄存器保存的地址 M I P S 的这种函数调用的方式会引 发一系列问题 二进制翻译器上层的程序在函数调用时 返 回地址使用3 1 号寄存器 这就会破坏Q E M U 本身的状态 Q E M U 的函数调用返回时就会出现错误 因此 本文在二进制翻译器上运行的程序调用点做标记 每出现这样的调用 返回地址保存在内存中 而不是3 1 号寄 存器中 返回时从内存中返回 这就可以保持Q E M U 本身的 状态 3 编译环境的优化 在对Q E M U 结构优化之前 先针对龙芯2 F 的结构1 4 弓1 优化编译环境 使得编译环境在编译Q E M U 时能够编译出针 对龙芯2 F 处理器更有效率的Q E M U 代码 这也是提高Q E M U 性能的一个重要方面 龙芯2 F 使用G N Ub i n u t i l s G C C 和G L I B C 作为基本的编 译环境 对于G N Ub i n u t i l s 汇编器 在汇编器的g a s 中加入龙芯 2 F 自定义的多媒体指令 从而手工编写的多媒体指令就可以 由编译器编译成目标代码 为Q E M U 多媒体指令的优化做准 备 对于G C C 根据龙芯2 F 处理器中指令的特点 在G C C 中加入新的指令模板和指令流水线描述 使G C C 编译出的汇 编指令更适合于龙芯2 F 处理器 对于G L I B C 库 通过p r o f i l e 统计G L I B C 中使用次数 频繁的函数 根据龙芯2 F 的结构蘑新改写这些函数 为充分利用龙芯2 F 处理器6 4b i t 的资源 编译工具链使 用N 3 2 的A B I 取代原来的0 3 2 的A B I 工具链 0 3 2 的工具 链编译的目标程序把处理器看作3 2b i t 而N 3 2 的工具链编 译的目标程序把处理器看作6 4b i t 虽然0 3 2 的工具链具有 兼容性好的优点 但在资源利用方面显然后者更出色 更有 助于发掘出处理器最大的性能 经过上述对编译环境的优化 编译Q E M U 得到的目标代 码性能会有大幅度提高 4 Q E M U 二进铡翻译器结构优化 4 1 寄存器分配优化 Q E M U 采用固定寄存器分配方法 这种方法将目标机的 寄存器固定地映射到本机相应的寄存器或者内存中的某个地 址 Q E M U 对于大部分的本地机器 它只是将临时变量保存 在本地机器的3 个寄存器中 其他大部分的目标寄存器映射 到内存中 临时变量对于不同的本地机器分配到不同的寄存 器中 这种方法的优点是简便并且可移植性好 但是这样做 的性能开销太大 由于在本机是用内存模拟的目标寄存器 当用到目标寄存器时 就会出现大量的访存操作 因此势必 会降低二进制翻译器的效率 一种可行的做法是对于某种特 定结构 尽町能地将目标机程序最常用的寄存器固定映射到 本地机器地寄存器中 这样寄存器操作时的多余访存就呵以 避免 这是种牺牲二进制翻译器的灵活性而达到提高性能目 的的方法 针对龙芯2 F 处理器优化Q E M U 让Q E M U 局限于该结 构即可 从而可以将X 8 6 目标机的寄存器固定一对一映射于 龙芯2 F 的寄存器上 X 8 6 共有8 个通用寄存器 分别为E A X E B X E C X E D X E S E D I E S P 和E B P 通过对Q E M U 二进制翻译器上 W i n d o w s 9 8 操作系统启动过程的p r o f i l e 得到X 8 6 架构下操 作系统启动过程对这8 个通用寄存器的访问次数及其所占百 分比 如表l 所示 裹1X 8 6 架构下O S 启动过程对寄存暑昀访问颤度 由上述结果可以得到操作系统在X 8 6 架构运行时最常用 的通用寄存器是E A X E S P E B P 所以 将这3 个最常用的 寄存器映射于s 4 s 5 和s 6 寄存器 另外定义s 0 s l s 2 和s 3 4 个寄存器保存临时变量 并且修改编译器 使得其他程序 尽量不使用这7 个寄存器 如果其他程序使用这些寄存器 需要首先把这些寄存器中的值保存到内存中 程序退出后再 将这些寄存器的值从内存中恢复回来 对于寄存器关联的这种优化 可以使运行在Q E M U 上的 X 8 6 系统或程序在使用E A X E S P E B P 这3 个寄存器时 省 去不必要的访存操作 从而提高目标机寄存器操作的效率 4 2 多媒体处理优化 多媒体技术是I n t e l 公司在处理器中为增强处理器的媒 体处理能力而引入的一项技术 分为M M X S S E S S E 2 和 S S E 34 类 M M X 技术是I n t e l 公司在奔腾I I 的I A 一3 2 架构中 引入的 它实现了单指令流多数据流 S I M D 增强了媒体处 理的性能 龙芯2 F 处理器中定义自己的多媒体指令 这些多媒体指 令一对一实现M M X 指令的所有功能 因此 可以使用龙芯 2 F 处理器中的这些多媒体指令对Q E M U 二进制翻译器中的 多媒体处理部分进行优化 Q E M U 中对于多媒体处理部分是软件模拟 每条X 8 6 的 多媒体指令都是用一个相应的函数来实现 一条指令经过翻 译后会变成很多条指令 这会影响二进制翻译器的效率 这 种做法是通用的做法 扩展性好 可以适用于X 8 6 架构到其 他多种架构的翻译 但是它是以牺牲性能为代价的 由于龙芯2 F 处理器中定义了跟M M X 指令相似的多媒体 指令 因此可以对Q E M U 进行优化 把Q E M U 中多媒体指 令用相应的龙芯指令来实现 而放弃原有的函数实现 这样 一条X 8 6 的M M X 指令就可以翻译成为一条对应的龙芯指令 了 从而二进制翻译器的性能可以大幅提高 翻译出来的代 码的性能几乎可以达到本地机器t 执行相应代码的性能 这 种做法使Q E M U 固定于特定的龙芯处硼器 但是二进制翻译 器的媒体处理部分性能可以得到大幅度的提高 例如 一条x 8 6 的多媒体指令 p u n p c k l w dm m 0 m m l 该指令实现将M M X 寄存器0 和l 中的数据按一定顺序 进行拼接 结果存放在M M X 寄存器0 中 优化前 二进制翻译器仅靠软件的方法翻译为以下一段 代码 S W O 2 4 4 1 9 S W 0 2 5 6 1 9 S W O 2 6 0 1 9 l u i 6 0 x 0 o r i 6 6 0 x 1 0 8 2 8 l 一 万方数据 a d d u 6 6 1 9 l h u 2 0 6 a d d i u 1 0 1 0 一1 6 s h 2 8 l O l u i 5 O x O o r i 5 5 0 xl1 0 a d d u 5 5 1 9 l h u 2 O 5 n o p s h 2 1 0 l O l h u 3 2 6 1 w 2 8 I O s h 3 1 2 1 0 I h u 4 2 5 h o p s h 4 1 4 1 0 1 w 3 1 2 l O a d d i u 1 0 1 0 1 6 s w 2 O 6 s w 3 4 f 6 1 由于仅靠软件翻译 因此一条X 8 6 指令翻译后会产生 2 5 条M I P S 代码 翻译效率比较低 优化后 二进制翻译器翻译得到如下指令 该指令是与 原X 8 6 指令一一对应的龙芯2 F 的多媒体指令 g s p u n p c k l w d f 2 0 f 2 0 f 2 2 5 测试结果 5 1 潮试环境 本文在龙芯2 F 处理器卜进行数据测试 龙芯2 F 处理器 是款6 4b i t p l j 发射 乱序执行的R I S C 处理器 实现M I P S1 1 1 指令集 该处理器采用先进的乱序执行技术 如寄存器重命 名 转移预测和动态调度等 和C a c h e 技术 如非阻塞C a c h e l o a d 猜测 动态内存相关和写合并技术等 并集成片上二级 C a c h e D D R 2 内存控制器和I O 控制器来提高流水线效率及 I O 能力 5 2 结果分析 5 2 1 寄存器优化测试结果 由于通用寄存器影响的主要是系统进程切换时的性能 为测试寄存器映射部分的优化效果 选择使用在Q E M U 上操 作系统启动和关机时间来肘比优化前后的二进制翻译器的效 率 在 二进制翻译器上运行W i n d o w s 9 8 操作系统 并且设置 系统启动后马上自动关闭 计算系统从开始启动到关闭的时 间 测试结果如表2 所示 裹2 寄存誊优化部分测试结果 经过优化后 系统在使用目标寄存器E A X E B P 和E S P 时不需要进行访存操作 而足直接使用龙芯2 F 的s 4 s 5 和s 6 寄存器 因此 减少了系统的启动关闭时间 获得较高的加 速比 5 2 2 多媒体部分优化测试结果 为测试Q E M U 多媒体部分优化的效果 选择3 个典型应 一2 8 2 一 用的M M X 算法加以实现 分别是图像压缩中的I D C T 算法 快速傅里叶算法以及像素转换的Y U V 2 R G B 算法 这3 个算 法用X 8 6M M X 汇编指令手工实现 将程序用优化过的 Q E M U 进行翻译 翻译过的代码提取后在龙芯2 F 处理器七 运行 把这个性能同没有优化过的Q E M U 上翻译的代码进行 比较 从而计算加速比 另外 将这3 个算法用M I P SM M X 汇编指令在龙芯2 F 上手工实现 得到本机执行的理想时间 定义优化过的翻译代码的执行时间和奉机执行的理想时间的 比率为二进制翻泽器的效率 各种测试结果如表3 所示 表3 多媒体优化部分测试结果 经过优化后 这几个程序翻泽得到的代码接近千一条 M I P S 指令对应于一条X 8 6 指令 所以 优化后的结果很接 近于理想情况 这就是优化后二进制翻译器效率较高的原因 优化前的二进制翻译器仅仅利用软件翻译 一条X 8 6 指令翻 译出的代码往往对应 f 十几条甚虿几十条M I P S 指令 导致 效率的低下 这也是优化后加速比较高的原因 6 结束语 由于Q E M U 二进制翻泽器的内部结构本身支持多f 台 翻译结构采用软件模拟 冈此一条目标指令翻译后通常会变 成儿十条本地指令 另外 对于目标机各种结构的处理也是 软件模拟 这会导致翻译效率低下 本文针对龙芯2 F 处理器 的特定结构 从各方面描述Q E M U 二进制翻译器针对龙芯 2 F 处理器特定结构的优化 在系统方面 优化编译器环境 使编泽出的Q E M U 代码 更适合十龙芯2 F 的结构 在Q E M U 本身方面 进行寄存器 映射和M M X 指令2 方面的优化 虽然使Q E M U 仪限于龙芯 2 F 处理器 但提高了翻译效率 参考文献 1 A n t o nC M a r kH F X1 3 2 AP r o f i l e d i r e c t e dB i n a r yT r a n s l a t o r J I E E EM i c r o 1 9 9 8 18 2 5 6 6 4 2 1L e o n i dB T e v iD I A 一3 2E x e c u t i o nL a y e r AT w o p h a s eD y n a m i c T r a n s l a t o rD e s i g n e dt oS u p p o r tI A 3 2A p p l i c a t i o n so nI t a n i u m b a s e dS y s t e m s C P r o c o f t h e3 6 t hA n n u a lI E E E A C MI n t 1S y m p o nM i c r o a r c h i t e c t u r e S 1 I E E EP r e s s 2 0 0 3 3 F a b r i c eB Q E M U AF a s ta n dP o r t a b l eD y n a m i cT r a n s l a t o r C P r o c o ft h e2 0 0 5U S E N I XA n n u a IT e c h n i c a lC o n f e l e n c e B e r l i n G e r m a n y s p n n g e r V e r l a g 2 0 0 5 4 H uW e i w u Z h a n gF u x i n L iZ u s o n g M i c r o a r c h i t e c t u r eo f t h e G o o d s o n 一2P r o c e s s o r l J J o u r n a lo fC o m p u t e rS c i e n c ea n d T e c h n o l o g y 2 0 0 5 加 2 2 4 3 2 4 9 5 H uW e i w u T a n gZ h i m i n M i c r o a r c h i t e c t u r eD e s i g no ft h eG o d s o n I P r o c e s s o r i nC h i n e s e J C h i n e s eJ o u r n a lo fC o m p u t e r s 2 0 0 3 2 6 4 3 8 5 3 9 6 编辑陈文 万方数据 基于龙芯处理器的二进制翻译器优化基于龙芯处理器的二进制翻译器优化 作者 蔡嵩松 刘奇 王剑 刘金刚 CAI Song song LIU Qi WANG Jian LIU Jin gang 作者单位 蔡嵩松 CAI Song song 首都师范大学和中国科学院计算技术研究所计算机科学联合研究院 北京 100037 中国科学院计算技术研究所 北京 100080 刘奇 王剑 LIU Qi WANG Jian 中国科学院计算技术研究所 北京 100080 刘金刚 LIU Jin gang 首都师范大学和 中国科学院计算技术研究所计算机科学联合研究院 北京 100037 刊名 计算机工程 英文刊名 COMPUTER ENGINEERING 年 卷 期 2009 35 7 被引用次数 0次 参考文献 5条 参考文献 5条 1 Anton C Mark H FX 32 A Profile directed Binary Translator 1998 02 2 Leonid B Tevi D IA 32 Execution Layer A Two phase Dynamic Translator Designed to Support IA 32 Applications on Itanium based Systems 2003 3 Fabrice B QEMU A Fast and Portable Dynamic Trans

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论